Ir al contenido

Tokens del tema

Un tema es una lista de tokens: nombres como accent o text_muted con un color (o un tamaño) cada uno. Los componentes nunca fijan colores a mano; le piden un token al tema. Por eso un solo cambio en el tema lo reestiliza todo.

Los tokens se usan de dos formas:

pz.text("Total").style(color="text_muted") # por nombre, en cualquier sitio donde va un color
pz.container(cuerpo, bg=self.resolved_theme().surface) # como atributo del tema

Los colores son #rrggbb o #rrggbbaa (los dos últimos dígitos son la opacidad). Los nombres de tokens funcionan en style(), en los parámetros color=/tint= de los componentes, en pz.Paint y en los campos de color del diseñador.

Las áreas grandes de la ventana, de atrás hacia adelante.

TokenQué coloreaOne DarkOne Light
backgroundLa ventana detrás de todo, y el marco de la app, como las barras de título y de estado de los temas generados.#3b414d#dcdcdd
surfaceTarjetas (ui.card), estadísticas y otras áreas elevadas.#2f343e#ebebec
elevatedLo que flota: menús, popovers, desplegables, tooltips, diálogos, toasts y la paleta de comandos.#2f343e#ebebec
editorDonde se escribe: campos de texto, el editor de código, el fondo de la terminal en temas generados.#282c33#fafafa
panelPaneles laterales y docks de un workspace, el panel de ayuda.#2f343e#ebebec
title_barLa barra de título propia (ui.title_bar, ui.window_frame).#3b414d#dcdcdd
status_barLa barra de estado al pie de un workspace.#3b414d#dcdcdd
tab_barLa franja detrás de las pestañas.#2f343e#ebebec
tab_activeLa pestaña seleccionada.#282c33#fafafa
tab_inactiveLas demás pestañas.#2f343e#ebebec
terminalEl fondo del widget de terminal.#282c33#fafafa
TokenQué coloreaOne DarkOne Light
borderBordes principales: campos, botones outline, separadores, marcos.#464b57#c9c9ca
border_variantBordes más suaves: tarjetas, botones rellenos, separadores de listas.#363c46#dfdfe0
border_focusedEl anillo del campo o la lista con el foco.#47679e#7d82e8
border_selectedEl borde de los elementos seleccionados (un acento translúcido).#293b5b#cbcdf6

Los elementos son controles rellenos (el ui.button por defecto, chips, controles segmentados). Los elementos ghost no tienen fondo hasta que pasas el puntero: filas de listas, botones ghost y de icono, ítems de menú, filas de árboles.

TokenQué coloreaOne DarkOne Light
elementControles rellenos en reposo.#2e343e#ebebec
element_hoverControles rellenos bajo el puntero.#363c46#dfdfe0
element_activeControles rellenos mientras se pulsan.#454a56#cacaca
element_selectedUn control relleno seleccionado (una opción segmentada, un icono elegido).#454a56#cacaca
ghost_hoverUna fila o botón ghost bajo el puntero.#363c46#dfdfe0
ghost_activeUna fila o botón ghost mientras se pulsa.#454a56#cacaca
ghost_selectedLa fila seleccionada de una lista, árbol, menú o pestaña.#454a56#cacaca
TokenQué coloreaOne DarkOne Light
textTexto y etiquetas.#dce0e5#242529
text_mutedTexto secundario: descripciones, leyendas, pestañas inactivas.#a9afbc#58585a
text_placeholderEl texto de ejemplo de los campos vacíos.#878a98#7e8086
text_disabledControles deshabilitados.#878a98#7e8086
text_accentEnlaces y texto resaltado.#74ade8#5c78e2
iconIconos junto al texto.#dce0e5#242529
icon_mutedIconos secundarios: botones de icono ghost, iconos de listas.#a9afbc#58585a
accentEl color de marca: botones principales (solid), interruptores, sliders, barras de progreso, casillas.#74ade8#5c78e2
on_accentTexto e iconos dibujados sobre el acento (dentro de un botón solid o una insignia solid).#1c2025#fafafa

Los usa tint= (ui.badge, ui.callout, ui.button, ui.progress…), los toasts, los mensajes de validación y los gráficos.

TokenQué coloreaOne DarkOne Light
errorErrores, botones destructivos, campos inválidos.#d07277#d36151
warningAdvertencias.#dec184#a48819
successMensajes de éxito, cambios positivos en ui.stat.#a1c181#669f59
infoAvisos informativos (el acento, por defecto).#74ade8#5c78e2
hintPistas, el aviso más discreto.#788ca6#7274a7

Para árboles de archivos, pestañas y diffs (ui.tree, ui.diff_stat, el margen del editor de código).

TokenQué coloreaOne DarkOne Light
createdArchivos y líneas añadidos.#a1c181#669f59
modifiedArchivos y líneas modificados.#dec184#a48819
deletedArchivos y líneas eliminados.#d07277#d36151
conflictArchivos con conflictos.#dec184#a48819
ignoredArchivos ignorados.#878a98#7e8086

Para pz.code_editor, ui.terminal y los bloques de código.

TokenQué coloreaOne DarkOne Light
editor_textCódigo sin resaltar.#acb2be#242529
line_numberNúmeros de línea.#4e5a5f#a2a3a7
line_number_activeEl número de la línea con el cursor.#d0d4da#242529
active_lineEl fondo de la línea con el cursor.#2f343ebf#ebebecbf
selectionTexto seleccionado (también en los campos).#74ade83d#5c78e23d
scrollbarBarras de desplazamiento.#c8ccd44c#2425294c
scrollbar_hoverUna barra de desplazamiento bajo el puntero.#c8ccd480#24252980
search_matchResultados de búsqueda en el editor.#74ade866#5c78e266
shadowSombras de menús, popovers y diálogos.#0000004d#00000026

Estos tres son colecciones en lugar de colores sueltos.

  • syntax: un diccionario de un nombre de resaltado a un color, o a (color, "italic") / (color, "bold"). Los nombres principales son primary, comment, comment.doc, keyword, function, type, string, string.escape, number, boolean, constant, property, attribute, operator, variable, variable.special, punctuation, punctuation.bracket, tag, title y link_uri. Un nombre con punto que falta usa su primera parte (string.escape → string).
  • ansi: los colores de la terminal: black, red, green, yellow, blue, magenta, cyan, white, bright_black y dim.
  • players: una tupla de colores para avatares y colaboradores; ui.avatar(index=n) y ui.facepile toman el n-ésimo.
TokenQué coloreaOne DarkOne Light
syntax.keyworddef, if, return...#b477cf#a449ab
syntax.functionNombres de funciones.#73ade9#5b79e3
syntax.stringCadenas.#a1c181#649f57
syntax.commentComentarios.#5d636f#a2a3a7
syntax.typeClases y tipos.#6eb4bf#3882b7
syntax.numberNúmeros.#bf956a#ad6e25
ansi.redTexto rojo en la terminal (y así con cada color ANSI).#d07277#d36151
players.0El primer color de avatar (el acento, por defecto).#74ade8#5c78e2
Token Por defecto Qué fija
radius 6.0 Radio de las esquinas de tarjetas, diálogos y superficies grandes (las tarjetas usan radius + 2).
radius_sm 4.0 Radio de botones, campos, chips y filas de listas.
ui_font_size 14.0 El tamaño base del texto de la interfaz; lo fijan el Tamaño de fuente de un formulario y el size del estilo global.
buffer_font_size 14.0 Tamaño del texto en el editor de código.
name El nombre que usan pz.themes.get y theme = "...".
appearance "dark" o "light"; theme.is_dark lo lee.
t = pz.themes.get("One Dark")
t.accent # '#74ade8'
t.color("text_muted") # lo mismo que t.text_muted; los colores hex pasan sin cambios
t.tokens() # todos los tokens como diccionario
t.to_dict() # apto para JSON, el formato que escribe Theme.save

Los nombres siguen el formato de temas del editor Zed, así que los temas hechos para él se pueden importar (mira Crear temas). La API de temas lista cada método.