Los 105 roles que conectan las primitivas con los componentes — qué color usar, dónde y por qué.
Las primitivas responden qué colores existen . Los
roles semánticos responden qué color va dónde . Un componente nunca dice
Grey/6: dice border/default. Eso da tres cosas gratis:
Dark mode sin trabajo — el rol apunta a la misma primitiva en ambos temas
y la primitiva cambia de valor. Cero condicionales.
Decisiones consistentes — todos los bordes de input son el mismo borde.
Cambios baratos — si mañana el hover tonal pasa de 4 a 5, se cambia
en un lugar.
En Figma es la colección Semantic de 🌻 FDS Design Tokens. Cada variable
tiene su descripción y su nombre de CSS en Dev Mode. En código, el mismo
nombre es una variable CSS (--primary-subtle) y una utilidad de Tailwind
(bg-primary-subtle).
primary / subtle-hover
└─ rol ─┘ └── uso + estado ──┘ Copiar
Hay dos familias de roles:
Neutros por propiedad — bg/*, border/*, text/*, icon/*,
focus/ring. Son el 90% de cualquier pantalla.
Roles de color — primary, neutral, success, warning, danger,
info. Los seis comparten exactamente los mismos 14 usos, así que un
componente con prop color cambia de rol sin tocar su estructura.
Uso Paso Para qué solid → solid-hover → solid-active9 → 10 → 11 Fondo de máximo énfasis y sus estados. on-solid— Texto e iconos sobre solid. accent → accent-hover → accent-active9 → 10 → 11 El color del rol en primer plano : label y borde de botones outline y text, links, iconos de acento. Garantiza 3:1 (UI y texto grande), no 4.5:1. faint2 Tinte mínimo: hover de outline, fila destacada. subtle → subtle-hover → subtle-active3 → 4 → 5 Fondo tonal y sus estados. border6 Borde sobre fondos faint / subtle. border-strong8 Borde que tiene que verse solo: outline, input inválido. text11 Texto e iconos de color sobre fondos claros.
Tres excepciones deliberadas: warning/accent usa Yellow 11 → 11 → 12 (el amarillo 9 no se lee como texto), neutral/solid usa Grey 12 → 11 → 10 (un
sólido neutro tiene que ser casi negro, no gris medio), y warning/on-solid
es Yellow/12 , no blanco — el amarillo de marca es demasiado luminoso para
texto blanco.
Estas combinaciones cumplen contraste AA por construcción. Salirte de ellas
significa pasar por el verificador .
Fondo Texto / icono bg/default, bg/subtle, bg/surface, bg/elevatedtext/default, text/muted, {rol}/text{rol}/solid{rol}/on-solid{rol}/faint, {rol}/subtle{rol}/text, text/defaultbg/inversetext/inverse, icon/inverse
text/subtle y text/disabled no garantizan AA: son para placeholders y
estados deshabilitados, nunca para contenido que alguien necesite leer.
Fondos Figma CSS Primitiva Uso bg/default--bg grey-1 Fondo de página. El lienzo sobre el que vive todo. bg/subtle--bg-subtle grey-2 Fondo alterno: sidebars, zebra de tablas, bloques de código. bg/surface--surface grey-3 Superficie de componentes neutros en reposo. bg/surface-hover--surface-hover grey-4 Hover de superficies neutras. bg/surface-active--surface-active grey-5 Pressed / seleccionado de superficies neutras. bg/elevated--bg-elevated base-background Superficies que flotan: cards, modales, menús, popovers. bg/inverse--bg-inverse grey-12 Superficie invertida: tooltips, toasts oscuros.
Bordes Figma CSS Primitiva Uso border/subtle--border-subtle grey-4 Divisores suaves dentro de una superficie. border/default--border grey-6 Borde estándar de cards, inputs y contenedores. border/hover--border-hover grey-7 Borde de controles en hover. border/strong--border-strong grey-8 Borde de alto contraste (3:1 contra el fondo).
Texto Figma CSS Primitiva Uso text/default--fg grey-12 Texto principal: títulos y cuerpo. text/muted--fg-muted grey-11 Texto secundario: descripciones, hints, metadata. text/subtle--fg-subtle grey-10 Texto terciario y placeholders. No usar para contenido esencial. text/disabled--fg-disabled grey-8 Texto deshabilitado. Exento de contraste WCAG. text/inverse--fg-inverse grey-1 Texto sobre bg/inverse.
Iconos Figma CSS Primitiva Uso icon/default--icon grey-12 Iconos con el peso del texto principal. icon/muted--icon-muted grey-11 Iconos de apoyo: prefijos de input, chevrons, metadata. icon/subtle--icon-subtle grey-9 Iconos decorativos o de placeholder. icon/inverse--icon-inverse grey-1 Iconos sobre bg/inverse.
Foco Figma CSS Primitiva Uso focus/ring--focus-ring primary-8 Anillo de foco por teclado. 2px, en todo componente interactivo.
Primary — marca Figma CSS Primitiva Uso primary/solid--primary primary-9 Fondo sólido de marca / acción principal. Máximo énfasis. primary/solid-hover--primary-hover primary-10 Hover del fondo sólido. primary/solid-active--primary-active primary-11 Pressed del fondo sólido. primary/on-solid--primary-fg base-white Texto e iconos sobre el fondo sólido. primary/accent--primary-accent primary-9 Color del rol en primer plano: label y borde de botones outline/text, links. Garantiza 3:1, no 4.5:1. primary/accent-hover--primary-accent-hover primary-10 Hover del primer plano de acento. primary/accent-active--primary-accent-active primary-11 Pressed del primer plano de acento. primary/faint--primary-faint primary-2 Tinte mínimo: hover de variantes outline, filas destacadas. primary/subtle--primary-subtle primary-3 Fondo tonal de marca / acción principal: alerts, badges, botones tonal. primary/subtle-hover--primary-subtle-hover primary-4 Hover del fondo tonal. primary/subtle-active--primary-subtle-active primary-5 Pressed del fondo tonal. primary/border--primary-border primary-6 Borde sobre fondos tonal/faint. primary/border-strong--primary-border-strong primary-8 Borde de alto contraste (outline, input con error). primary/text--primary-text primary-11 Texto e iconos de color sobre bg, faint o subtle.
Neutral Figma CSS Primitiva Uso neutral/solid--neutral grey-12 Fondo sólido de neutro. Máximo énfasis. neutral/solid-hover--neutral-hover grey-11 Hover del fondo sólido. neutral/solid-active--neutral-active grey-10 Pressed del fondo sólido. neutral/on-solid--neutral-fg grey-1 Texto e iconos sobre el fondo sólido. neutral/accent--neutral-accent grey-12 Color del rol en primer plano: label y borde de botones outline/text, links. Garantiza 3:1, no 4.5:1. neutral/accent-hover--neutral-accent-hover grey-11 Hover del primer plano de acento. neutral/accent-active--neutral-accent-active grey-10 Pressed del primer plano de acento. neutral/faint--neutral-faint grey-2 Tinte mínimo: hover de variantes outline, filas destacadas. neutral/subtle--neutral-subtle grey-3 Fondo tonal de neutro: alerts, badges, botones tonal. neutral/subtle-hover--neutral-subtle-hover grey-4 Hover del fondo tonal. neutral/subtle-active--neutral-subtle-active grey-5 Pressed del fondo tonal. neutral/border--neutral-border grey-6 Borde sobre fondos tonal/faint. neutral/border-strong--neutral-border-strong grey-8 Borde de alto contraste (outline, input con error). neutral/text--neutral-text grey-11 Texto e iconos de color sobre bg, faint o subtle.
Success Figma CSS Primitiva Uso success/solid--success success-9 Fondo sólido de éxito / confirmación. Máximo énfasis. success/solid-hover--success-hover success-10 Hover del fondo sólido. success/solid-active--success-active success-11 Pressed del fondo sólido. success/on-solid--success-fg base-white Texto e iconos sobre el fondo sólido. success/accent--success-accent success-9 Color del rol en primer plano: label y borde de botones outline/text, links. Garantiza 3:1, no 4.5:1. success/accent-hover--success-accent-hover success-10 Hover del primer plano de acento. success/accent-active--success-accent-active success-11 Pressed del primer plano de acento. success/faint--success-faint success-2 Tinte mínimo: hover de variantes outline, filas destacadas. success/subtle--success-subtle success-3 Fondo tonal de éxito / confirmación: alerts, badges, botones tonal. success/subtle-hover--success-subtle-hover success-4 Hover del fondo tonal. success/subtle-active--success-subtle-active success-5 Pressed del fondo tonal. success/border--success-border success-6 Borde sobre fondos tonal/faint. success/border-strong--success-border-strong success-8 Borde de alto contraste (outline, input con error). success/text--success-text success-11 Texto e iconos de color sobre bg, faint o subtle.
Warning Figma CSS Primitiva Uso warning/solid--warning yellow-9 Fondo sólido de advertencia. Máximo énfasis. warning/solid-hover--warning-hover yellow-10 Hover del fondo sólido. warning/solid-active--warning-active yellow-11 Pressed del fondo sólido. warning/on-solid--warning-fg yellow-12 Texto e iconos sobre el fondo sólido. warning/accent--warning-accent yellow-11 Color del rol en primer plano: label y borde de botones outline/text, links. Garantiza 3:1, no 4.5:1. warning/accent-hover--warning-accent-hover yellow-11 Hover del primer plano de acento. warning/accent-active--warning-accent-active yellow-12 Pressed del primer plano de acento. warning/faint--warning-faint yellow-2 Tinte mínimo: hover de variantes outline, filas destacadas. warning/subtle--warning-subtle yellow-3 Fondo tonal de advertencia: alerts, badges, botones tonal. warning/subtle-hover--warning-subtle-hover yellow-4 Hover del fondo tonal. warning/subtle-active--warning-subtle-active yellow-5 Pressed del fondo tonal. warning/border--warning-border yellow-6 Borde sobre fondos tonal/faint. warning/border-strong--warning-border-strong yellow-8 Borde de alto contraste (outline, input con error). warning/text--warning-text yellow-11 Texto e iconos de color sobre bg, faint o subtle.
Danger Figma CSS Primitiva Uso danger/solid--danger danger-9 Fondo sólido de error / acción destructiva. Máximo énfasis. danger/solid-hover--danger-hover danger-10 Hover del fondo sólido. danger/solid-active--danger-active danger-11 Pressed del fondo sólido. danger/on-solid--danger-fg base-white Texto e iconos sobre el fondo sólido. danger/accent--danger-accent danger-9 Color del rol en primer plano: label y borde de botones outline/text, links. Garantiza 3:1, no 4.5:1. danger/accent-hover--danger-accent-hover danger-10 Hover del primer plano de acento. danger/accent-active--danger-accent-active danger-11 Pressed del primer plano de acento. danger/faint--danger-faint danger-2 Tinte mínimo: hover de variantes outline, filas destacadas. danger/subtle--danger-subtle danger-3 Fondo tonal de error / acción destructiva: alerts, badges, botones tonal. danger/subtle-hover--danger-subtle-hover danger-4 Hover del fondo tonal. danger/subtle-active--danger-subtle-active danger-5 Pressed del fondo tonal. danger/border--danger-border danger-6 Borde sobre fondos tonal/faint. danger/border-strong--danger-border-strong danger-8 Borde de alto contraste (outline, input con error). danger/text--danger-text danger-11 Texto e iconos de color sobre bg, faint o subtle.
Info Figma CSS Primitiva Uso info/solid--info blue-9 Fondo sólido de información. Máximo énfasis. info/solid-hover--info-hover blue-10 Hover del fondo sólido. info/solid-active--info-active blue-11 Pressed del fondo sólido. info/on-solid--info-fg base-white Texto e iconos sobre el fondo sólido. info/accent--info-accent blue-9 Color del rol en primer plano: label y borde de botones outline/text, links. Garantiza 3:1, no 4.5:1. info/accent-hover--info-accent-hover blue-10 Hover del primer plano de acento. info/accent-active--info-accent-active blue-11 Pressed del primer plano de acento. info/faint--info-faint blue-2 Tinte mínimo: hover de variantes outline, filas destacadas. info/subtle--info-subtle blue-3 Fondo tonal de información: alerts, badges, botones tonal. info/subtle-hover--info-subtle-hover blue-4 Hover del fondo tonal. info/subtle-active--info-subtle-active blue-5 Pressed del fondo tonal. info/border--info-border blue-6 Borde sobre fondos tonal/faint. info/border-strong--info-border-strong blue-8 Borde de alto contraste (outline, input con error). info/text--info-text blue-11 Texto e iconos de color sobre bg, faint o subtle.
Elegí por significado, no por apariencia. danger es para errores y
destrucción aunque el rojo "quede bien" en otro lado.
Un solo solid por zona. El sólido es el grito; el tonal es la voz normal.
El color nunca va solo. Todo estado comunicado por color lleva también
icono o texto (1 de cada 12 hombres no distingue rojo de verde).
Si falta un rol, pedilo. Usar una primitiva directo rompe dark mode y la
trazabilidad con Figma.
< div className = "border border-danger-border bg-danger-subtle text-danger-text" >
No pudimos guardar los cambios.
</ div > Copiar
.alert {
background : var ( --danger-subtle );
border : 1 px solid var ( --danger-border );
color : var ( --danger-text );
} Copiar
Colors Mode, Buttons y _Primitive quedan deprecadas : apuntan a la
paleta anterior (escala 50–950) y no tienen dark real. No las uses en trabajo
nuevo.
Antes Ahora Text/text-primary · secondary · tertiarytext/default · text/muted · text/subtleText/text-disabled · text-placeholdertext/disabled · text/subtleText/text-errordanger/textBackgrounds/bg-primary · bg-disabledbg/default · bg/surfaceBorder/border-primary · border-disabledborder/default · border/subtleBorder/border-errordanger/border-strongButton/Base · Hoverprimary/solid · primary/solid-hoverButton/Base Tonal · Hover Tonal · Border Tonal · Text Tonalprimary/subtle · subtle-hover · border · textBadge/bg-badge-* · border-badge-* · text-badge-*{rol}/subtle · {rol}/border · {rol}/text