Color semántico vs. color puro
Un token de color puro nombra el color en sí: --blue-500, --gray-900. Un token semántico nombra la función que cumple el color: --primary, --background, --muted-foreground. De este modo, los componentes pueden ignorar los matices literales de la marca. Un botón con el estilo bg-primary text-primary-foreground funcionará con verde salvia, rosa intenso o en un tema oscuro porque el rol permanece fijo mientras su valor cambia.
Este es el modelo que popularizó shadcn/ui y sobre el cual se construye la tematización de Tailwind. Con tokens semánticos, cambiar el tema de una aplicación puede limitarse a un solo bloque :root. Las clases fijas como bg-gray-900 y text-white convierten ese mismo cambio en una búsqueda exhaustiva por todo el código.
La regla de emparejamiento foreground
La mayoría de los roles base vienen con un rol -foreground emparejado para el texto o los iconos sobre esa superficie: --primary / --primary-foreground, --card / --card-foreground, --muted / --muted-foreground. Usa --primary-foreground sobre --primary en lugar de esperar que el foreground por defecto tenga suficiente contraste. Cada par debe verificarse igualmente en ambos modos.
Los 28 roles que necesita un sistema completo
Una paleta mínima de tres colores deja 25 decisiones sin definir: estados hover, texto atenuado, bordes, anillos de enfoque, series de gráficos, modo oscuro. Un sistema completo las nombra todas. Los kits de Identity Forge definen estos 28 roles, agrupados por su función, para los modos claro y oscuro:
- Superficies:
background/foreground,card/card-foreground,popover/popover-foreground. La página, los paneles elevados y las capas flotantes, cada uno con su color de texto legible. - Marca y énfasis:
primary/primary-foreground,secondary/secondary-foreground,accent/accent-foreground. La acción principal, la de apoyo y el elemento destacado. - Sutiles y neutros:
muted/muted-foreground. Fondos atenuados y texto secundario. - Estado:
destructive/destructive-foreground,success/success-foreground,warning/warning-foreground. Errores, confirmaciones y advertencias. - Formularios y enfoque:
border,input,ring. Divisores y contornos, superficies de campos de formulario e indicadores de enfoque. - Datos:
chart-1,chart-2,chart-3,chart-4,chart-5. Cinco colores de serie distintos y alineados con la marca para que los gráficos no recurran a una paleta genérica por defecto.
Por qué importan cinco colores de gráfico
La visualización de datos es donde los sistemas mal especificados fallan de forma más visible: un dashboard con tres colores de marca y un arcoíris aleatorio para su gráfico de barras. Definir chart-1...5 desde el principio mantiene los gráficos dentro del mismo lenguaje visual que el resto de la aplicación.
Mira los roles en un kit real
A continuación se muestra el kit gratuito ambient-sage renderizado íntegramente con estos tokens. La fila de muestras es --primary, --secondary, --accent y los cinco roles de gráficos; el botón usa --primary con --primary-foreground; las superficies usan --background, --card y --muted. Nada aquí es un color fijo:
Ambient Sage
Live renderRendered from the kit's actual tokens, fonts, and treatments
Dashboard
Welcome back — here's how AmbientSage is performing today.
Active users
15.1k
+5%Trending up this month
vs. previous 30 days
MRR
$49.1k
+3%Strong recurring growth
Net of churn
Retention
89%
+2%Engagement above target
Rolling 28-day window
NPS
69
+3Meets growth projections
Survey · n=1,204
Total revenue
Last 12 months
$49.1k+18.2%
Recent sales
You closed 265 deals this month.
Alex Rivera
alex@ambientsage.com
Mira Okonkwo
mira@ambientsage.com
Jonas Feld
jonas@ambientsage.com
Sana Qureshi
sana@ambientsage.com
Theo Lindgren
theo@ambientsage.com
Recent transactions
View all| Customer | Status | Date | Amount |
|---|---|---|---|
AR Alex Rivera Founder & CEO | Paid | 2m ago | $1,999.00 |
MO Mira Okonkwo Head of Product | Pending | 1h ago | $39.00 |
JF Jonas Feld Design Lead | Processing | 3h ago | $299.00 |
SQ Sana Qureshi Engineering Lead | Paid | Yesterday | $99.00 |
TL Theo Lindgren Brand Director | Refunded | 2d ago | $2,400.00 |
Typography
Plus Jakarta Sans
Color system
28 semantic roles, light + dark
Agent outputs
DESIGN.md, CSS, Tailwind, shadcn
Obtén un conjunto completo de tokens
Puedes definir los 28 roles a mano, pero es tedioso mantener el equilibrio y la accesibilidad entre el modo claro y oscuro. Cada kit de Identity Forge los incluye completos en ambos modos, exportables como variables CSS, @theme de Tailwind v3/v4, un elemento del registro de shadcn o JSON de DTCG/W3C. La forma más rápida de añadir un conjunto completo a un proyecto shadcn/ui:
npx shadcn add https://identityforge.io/r/ambient-sage.jsonLos tokens son también la mitad de un DESIGN.md: los valores a los que hace referencia el brief escrito. Juntos son lo que puedes darle a un agente de programación para que su interfaz sea coherente.
Preguntas frecuentes
¿Qué son los tokens de color semánticos?
Variables de color nombradas por su rol en lugar de su matiz: `--primary`, `--background`, `--muted-foreground` en lugar de `--blue-500`. Los componentes aplican estilos basándose en el nombre del rol, por lo que cambiar de tema o pasar al modo oscuro nunca requiere editar los componentes.
¿Cuántos tokens de color necesita un sistema de diseño?
Identity Forge utiliza 28 roles semánticos: superficies con sus respectivos foregrounds, roles de marca y atenuados, colores de estado, roles de formulario y cinco colores para gráficos. Cada rol tiene un valor para modo claro y otro para oscuro.
¿Cuál es la convención -foreground?
La mayoría de los roles base se emparejan con un rol `-foreground` para el texto o los iconos colocados sobre esa superficie: `--primary` con `--primary-foreground`. El emparejamiento garantiza un contraste legible tanto en modo claro como oscuro sin tener que adivinar.
¿Cómo exporto un conjunto completo de tokens semánticos?
Cada kit de Identity Forge exporta sus 28 roles (claro + oscuro) como variables CSS, @theme de Tailwind v3/v4, un elemento del registro de shadcn o JSON de DTCG/W3C. Para shadcn/ui, `npx shadcn add https://identityforge.io/r/<slug>.json` los instala directamente.