Saltar al contenido

Primitivos

Escalas de estado

Las escalas de color para información, éxito, aviso y error. Por qué se nombran por su tono y no por su rol, cómo se armonizan con el acento y por qué no hay escala verde.

Última revisión:

Una interfaz necesita colores para avisar: un mensaje informativo, un éxito, un aviso, un error. En esta lección verás cómo construye DesignToken101 esas escalas con el mismo método que el acento, por qué se nombran por su tono y por qué no hay escala verde.

En esta página

Escalas por tono, no por rol

Los primitivos de estado son escalas puras, nombradas por su tono. El rol (información, éxito, aviso, error) lo pone el token semántico que apunta a ellas:

Rol semánticoEscala primitiva
infoblue
successemerald (la del acento)
warningamber
dangerred

Por ejemplo, el texto de un mensaje de error en Light es color/text/danger/default, que apunta a color/red/700. Cómo se crean esos alias lo verás en el módulo Relaciones.

Recomendación

Separar tono y rol permite cambiar de opinión sin renombrar nada. Si mañana warning tuviera que ser naranja, crearías la escala orange y cambiarías los alias de warning. Ningún primitivo se llamaría warning con un color que no le corresponde.

Cómo se construyen

Las tres escalas siguen el método del acento (Escalas de color), con dos diferencias:

  • La referencia es la escala de Tailwind CSS del mismo tono: red, amber y blue de Tailwind CSS v4 (Tailwind CSS: Colors). No hay color de marca que colocar, así que se toman L, C y también H de cada paso. El tono de Tailwind varía un poco de un paso a otro: en red, de 17,4 en el 50 a 27,5 en el 700.
  • El croma se multiplica por 0,66, la misma reducción que tiene el acento frente a su referencia. Así las escalas de estado tienen la misma intensidad que la marca y no compiten con ella.

Después, igual que el acento: ajuste a sRGB reduciendo el croma (ninguno de los 33 pasos lo necesita) y contraste calculado sobre el hex.

Recomendación

El factor 0,66 es una decisión estética de DesignToken101. Con el croma original de Tailwind, los colores de estado serían más intensos que el de la marca, y además 16 de los 33 pasos no cabrían en sRGB (comprobado con el script), porque la paleta de Tailwind aprovecha la gama más ancha de las pantallas actuales (Tailwind CSS v4.0).

Por qué no hay escala verde

El acento de DesignToken101 ya es verde: tono 165,4. Una escala green para el éxito sería casi idéntica a emerald. Por eso success usa emerald.

La consecuencia: el éxito y el acento comparten color. El color no basta para distinguir un mensaje de éxito de un elemento de marca, y no debe bastar. El criterio 1.4.1 Use of Color (nivel A) de WCAG 2.2 dice que el color no puede ser el único medio visual para transmitir información o distinguir un elemento (Understanding 1.4.1).

Recomendación

En DesignToken101, los mensajes de estado llevan siempre icono y texto además del color. Un Callout de aviso, por ejemplo, tiene su icono y su etiqueta, "Aviso". Así se cumple 1.4.1, y que success comparta color con el acento no causa confusión.

Las tres escalas

Cada escala, primero de forma visual y después con sus valores. El contraste con blanco se calcula con la fórmula de WCAG 2.2 sobre el hex.

red

  1. 50, #FBF3F3
  2. 100, #F8E5E5
  3. 200, #F3CFCF
  4. 300, #EDADAD
  5. 400, #E37E7B
  6. 500, #DA5E58
  7. 600, #C74A41
  8. 700, #A63D35
  9. 800, #89342E
  10. 900, #702F2B
  11. 950, #3C1613
Escala red: la del rol danger.
PasooklchHexContraste con blanco
500.971 0.009 17.4#FBF3F31,09
1000.936 0.021 17.7#F8E5E51,21
2000.885 0.041 18.3#F3CFCF1,43
3000.808 0.075 19.6#EDADAD1,88
4000.704 0.126 22.2#E37E7B2,79
5000.637 0.156 25.3#DA5E583,67
6000.577 0.162 27.3#C74A414,68
7000.505 0.141 27.5#A63D356,29
8000.444 0.117 26.9#89342E8,09
9000.396 0.093 25.7#702F2B9,86
9500.258 0.061 26.0#3C161315,95

amber

  1. 50, #FEFBF0
  2. 100, #FAF3D6
  3. 200, #F6E6AA
  4. 300, #F2D57E
  5. 400, #ECC060
  6. 500, #E6A554
  7. 600, #C98044
  8. 700, #A55E35
  9. 800, #854A2D
  10. 900, #6C3E27
  11. 950, #3D2012
Escala amber: la del rol warning.
PasooklchHexContraste con blanco
500.987 0.015 95.3#FEFBF01,04
1000.962 0.039 95.6#FAF3D61,11
2000.924 0.079 95.7#F6E6AA1,25
3000.879 0.112 91.6#F2D57E1,44
4000.828 0.125 84.4#ECC0601,71
5000.769 0.124 70.1#E6A5542,13
6000.666 0.118 58.3#C980443,16
7000.555 0.108 49.0#A55E354,94
8000.473 0.090 46.2#854A2D6,97
9000.414 0.074 45.9#6C3E278,91
9500.279 0.051 45.6#3D201214,85

blue

  1. 50, #F1F6FB
  2. 100, #DFEAF7
  3. 200, #C7DAF2
  4. 300, #A0C4ED
  5. 400, #71A3E3
  6. 500, #5286DB
  7. 600, #3B6ACD
  8. 700, #3058B9
  9. 800, #2B4895
  10. 900, #293F75
  11. 950, #1D2747
Escala blue: la del rol info.
PasooklchHexContraste con blanco
500.970 0.009 254.6#F1F6FB1,09
1000.932 0.021 255.6#DFEAF71,22
2000.882 0.039 254.1#C7DAF21,42
3000.809 0.069 251.8#A0C4ED1,81
4000.707 0.109 254.6#71A3E32,61
5000.623 0.141 259.8#5286DB3,63
6000.546 0.162 262.9#3B6ACD5,09
7000.488 0.160 264.4#3058B96,52
8000.424 0.131 265.6#2B48958,52
9000.379 0.096 265.5#293F7510,18
9500.282 0.060 267.9#1D274714,65

Fíjate en el amber: hasta el 600 no llega a 3:1 con blanco. Los amarillos son muy claros en todos sus pasos medios, como viste con HSL en Espacio de color. Por eso el texto de aviso en Light usa amber/700.

Blanco y negro

Dos primitivos más, sueltos, fuera de las escalas:

TokenValorPor qué existe
color/white#FFFFFFFondo de la página en Light. Ningún paso de neutral es blanco puro: neutral/50 es #F9FAFA
color/black#000000Reservado para sombras y capas sobre el contenido. DesignToken101 no tiene sombras en su primera versión

En Figma

Igual que en Escalas de color: una variable Color por paso (color/red/50 … color/blue/950), más color/white y color/black. Sin scope, ocultas al publicar y con su code syntax Web, por ejemplo var(--t101-color-red-700).

Lo que te llevas

  • Los colores de estado son escalas por tono (red, amber, blue); el rol lo pone el semántico.
  • Se generan con el mismo método y la misma intensidad que la marca.
  • El color nunca va solo: los mensajes de estado llevan también icono y texto.

Fuentes