Saltar al contenido

Componentes y código

La tabla de anatomía

Una tabla con una fila por parte del componente y una columna por estado o variante, con el token de cada celda: se escribe antes de dibujar y une Figma con el código.

Última revisión:

Antes de dibujar un componente o de programarlo, DesignToken101 escribe una tabla: qué token lleva cada parte en cada estado. Es el puente entre Figma y el código, y la puedes hacer entera sin salir de Figma. En esta lección verás cómo se escribe, cómo se lee con dos ejemplos reales y por qué conviene escribirla primero.

En esta página

Parte, estado y token

La tabla tiene tres ingredientes:

  • Las partes del componente, una por fila: el fondo, el borde, el texto, el icono, el anillo de foco, el radio.
  • Los estados o las variantes, uno por columna: default, hover, active y focus en un control; note, warning… en un aviso.
  • Un token en cada celda, siempre un semántico. Si una parte no tiene nada en un estado, la celda lo dice ("Sin fondo"); si repite el valor de la columna anterior, lleva una flecha (←).

La tabla de Button

Esta es la tabla de la variante primary del Button de DesignToken101:

Partedefaulthoveractivefocus
Fondobackground/accent/strong/defaultbackground/accent/strong/hoverbackground/accent/strong/activebackground/accent/strong/default
BordeTransparente, border-width/100←←←
Texto e iconotext/on-accenttext/on-accenttext/on-accenttext/on-accent
Anillo de focoNo tieneNo tieneNo tieneborder/focus, border-width/200, por fuera
Radioradius/control←←←

Y la de secondary:

Partedefaulthoveractivefocus
FondoSin fondobackground/neutral/hoverbackground/neutral/activeSin fondo
Bordeborder/neutral/strong, border-width/100←←←
Texto e iconotext/neutral/defaulttext/neutral/defaulttext/neutral/defaulttext/neutral/default
Anillo de focoNo tieneNo tieneNo tieneborder/focus, border-width/200, por fuera
Radioradius/control←←←

Fíjate en tres cosas:

  • En primary, el texto es el mismo en los cuatro estados: lo que cambia es el fondo. En secondary, el fondo no existe en default y aparece con el puntero.
  • El estado focus repite el fondo de default y añade el anillo. El foco se marca con el anillo, no con otro color.
  • Los tokens de estado ya existían en el sistema (…/hover, …/active): los viste en Estados. El componente no inventa ninguno.
  • El borde del primary es transparente en código y lleva la variable del fondo en Figma: no se ve, pero hace visible el botón con los colores forzados del sistema. Lo verás en Un borde para los colores forzados.

La tabla de Callout

En un componente sin estados, las columnas son las variantes. Esta es la tabla del Callout:

Partenotewarningrecommendationpending
Fondobackground/info/subtlebackground/warning/subtlebackground/accent/subtlebackground/neutral/subtle
Bordeborder/info/defaultborder/warning/defaultborder/accent/defaultborder/neutral/default
Icono y etiquetatext/info/defaulttext/warning/defaulttext/accent/defaulttext/neutral/subtle
Contenidotext/neutral/default←←←
Radioradius/container←←←

Cada variante usa los tokens de un rol (info, warning, accent, neutral). La tabla deja ver de un vistazo que el contenido no cambia de color: lo que distingue un aviso de otro es el fondo, el borde, el icono y la etiqueta.

Cada celda tiene su contraste

Cada celda de texto o de icono forma un par con el fondo de su misma columna. Por eso la tabla de anatomía de DesignToken101 lleva debajo el contraste de cada par, en Light y en Dark. En el Button, el texto da 9,63:1 en default (en los dos modos) en primary, y 17,79:1 en Light y 18,89:1 en Dark en secondary.

Los pares de un componente salen de tu tabla de pares del módulo 7: si una celda usa un par que ya comprobaste, no tienes que volver a calcularlo. Si usa uno nuevo (un texto sobre un fondo de estado, por ejemplo), lo añades a la tabla.

Hay celdas que no necesitan 3:1. El fondo del primary frente a la página da 2,05:1 en Light, y está permitido: según la guía de 1.4.11, si un control tiene un contenido visible que lo identifica, como su texto, no hace falta que su borde contraste (Understanding 1.4.11). Lo viste en Qué no necesita 3:1.

Primero la tabla

Recomendación

Escribe la tabla antes de dibujar el componente en Figma. Una tabla tarda minutos en escribirse y descubre los huecos antes de que estén en un dibujo: un estado sin token, un par sin comprobar, dos variantes que se distinguen únicamente por el color.

Así aparecieron en DesignToken101 los tokens de estado: al preguntarse qué pasaba con cada control en hover y active, el sistema no tenía tokens para ello, y se añadieron con su contraste calculado. La tabla sirve también de documentación: es lo que verá quien implemente el componente, con o sin acceso a Figma. Puede vivir en la página de documentación de tu sistema (Documentar el sistema).

El método del módulo

Todo el módulo sigue el mismo orden, y el ejercicio también:

  1. Escribe la tabla, Parte × estado → token
  2. Crea el componente en Figma, Una variable en cada parte
  3. Escríbelo en código, Una clase por token, opcional
  4. Comprueba, Modos, contraste y valores sueltos
El método del módulo: de la tabla de anatomía al componente comprobado.

Lo que te llevas

  • La tabla de anatomía tiene una fila por parte, una columna por estado o variante y un token semántico en cada celda.
  • Cada celda de texto o de icono es un par de contraste que ya está, o que añades, en tu tabla del módulo 7.
  • Escribir la tabla antes de dibujar descubre los tokens que faltan cuando cambiar todavía no cuesta nada.

Fuentes