Primitivos
Qué es un primitivo
Los primitivos son los valores que existen en el sistema, ordenados en escalas. Qué los distingue de los semánticos, cómo se nombran y qué principios siguen las escalas.
Última revisión:
En el ejercicio del módulo 1 hiciste inventario de los valores de tu diseño. Ese inventario está desordenado: tiene casi duplicados y valores que aparecen una única vez. En este módulo lo conviertes en primitivos: un conjunto pequeño de valores, ordenados en escalas. En esta lección verás qué es un primitivo, cómo se nombra y qué principios siguen las escalas.
En esta página
- Primitivos y semánticos
- El nombre dice qué valor es
- Qué es una escala
- Dos formas de numerar el color
- Los primitivos de DesignToken101
- En Figma
- Lo que te llevas
Primitivos y semánticos
La especificación DTCG no habla de capas. Define tokens, grupos y referencias, y dice que los grupos sirven para organizar: cada sistema los estructura según su propio modelo (Format Module: Groups).
Los sistemas de diseño publicados que usamos de referencia sí separan dos capas. En el Simple Design System (SDS) de Figma, por ejemplo, --sds-color-green-500 es un color de la paleta, y --sds-color-background-positive-default es el fondo de un mensaje de éxito, que apunta a ese color (SDS: theme.css).
| Primitivo | Semántico | |
|---|---|---|
| Qué nombra | Qué valor es | Para qué se usa |
| Ejemplo en DesignToken101 | color/emerald/500 | color/background/accent/strong/default |
| Valor | Un valor directo: #33CC99 | Una referencia a un primitivo |
| Cuándo cambia | Cuando cambia la paleta | Cuando cambia una decisión de uso, por ejemplo en el modo Dark |
Nota
Las referencias entre tokens (los alias) y la capa semántica son el tema del módulo Relaciones. En este módulo construyes la capa de abajo: los valores a los que apuntarán los semánticos.
El nombre dice qué valor es
Un primitivo se nombra con tres niveles: categoría / paleta / paso.
| Token | Categoría | Paleta | Paso |
|---|---|---|---|
color/emerald/500 | color | emerald | 500 |
color/neutral/900 | color | neutral | 900 |
space/400 | space | No tiene | 400 |
radius/200 | radius | No tiene | 200 |
Las escalas que no son de color tienen una sola paleta, así que ese nivel no se escribe.
Recomendación
En DesignToken101, las paletas se nombran por su tono o por su naturaleza, nunca por su rol. La paleta del acento se llama emerald y no brand, y la de error se llama red y no danger.
El motivo: un mismo primitivo puede servir para varios roles. En DesignToken101, emerald es a la vez el color de marca y el color de éxito. Si la paleta se llamara brand, el token de éxito apuntaría a brand/700, y el nombre no diría lo que es.
Otros sistemas lo hacen de otra manera. El SDS de Figma tiene una paleta primitiva llamada brand junto a otras nombradas por su tono, como green o red (SDS: theme.css). Las dos opciones funcionan; la nuestra tiene un coste: si la marca cambiara a un azul, habría que renombrar la paleta. Los tokens semánticos conservarían su nombre; cambiaría el primitivo al que apuntan.
Qué es una escala
Una escala es un conjunto ordenado de pasos de una misma categoría. Los sistemas que hemos consultado comparten cuatro principios:
- Pocas opciones, bien elegidas. Una escala corta obliga a decidir. Tailwind CSS es la excepción:
p-17es válido, porque cada utilidad multiplica la variable--spacingpor el número que escribas (Tailwind CSS: Padding). Con Tailwind, la disciplina tiene que venir de tus tokens. Es el criterio de toda la web: un sistema tan grande como lo que resuelve. - El número dice algo. En el SDS,
space-100mide 4 px yspace-400mide 16 px: el número es proporcional al valor (SDS: theme.css). En Atlassian, el número es un porcentaje de su base de 8 px:space.200mide 16 px (Atlassian: Spacing). - Múltiplos de 100, con cero inicial para las fracciones. Así caben pasos intermedios sin decimales:
050es la mitad de100y150está entre100y200. Lo usan el SDS y Atlassian (mismas fuentes). - Los negativos van en su propio nivel.
space/negative/100en vez despace/-100. Lo hacen el SDS y Atlassian (mismas fuentes).
Recomendación
En DesignToken101 seguimos los cuatro principios en todas las escalas que no son de color. Los verás aplicados en Espaciado, Radio y grosor de borde y Tipografía.
Dos formas de numerar el color
En el color, el número del paso puede significar cosas distintas:
| Sistema | Pasos | Qué dice el número |
|---|---|---|
| Tailwind CSS | 11: 50, 100… 900, 950 | Un orden. Del más claro al más oscuro. Los colores se definen en oklch (Tailwind CSS: Colors) |
| Radix Colors | 12: 1 a 12 | Una función. Cada paso tiene un uso: 1 y 2 fondos, 3 a 5 fondos de componentes, 6 a 8 bordes, 9 y 10 fondos sólidos, 11 y 12 texto (Radix: Understanding the scale) |
Radix garantiza que sus pasos de texto contrasten con su fondo, pero lo mide con APCA, no con la fórmula de contraste de WCAG 2.2 que usa este curso (misma fuente). La fórmula de WCAG la verás en Escalas de color y en el módulo Accesibilidad (Contraste de texto).
Recomendación
DesignToken101 numera el color como Tailwind CSS: once pasos, del 50 al 950. El uso de cada color no está en el número del primitivo, sino en el token semántico que lo usa. Así, si un fondo necesita otro paso, cambias el alias y no el primitivo.
Los primitivos de DesignToken101
| Categoría | Pasos | Lección |
|---|---|---|
space | 13 | Espaciado |
radius | 9 | Radio y grosor de borde |
border-width | 2 | Radio y grosor de borde |
font-family, font-size, font-weight | 2, 10 y 4 | Tipografía |
color: emerald y neutral | 11 cada una | Escalas de color |
color: red, amber, blue, white y black | 11 cada una, más dos sueltos | Escalas de estado |
En total, 97 variables en la colección Primitives de Figma. Otros primitivos viven en código, porque Figma no puede guardarlos como necesitamos; los repasamos en La colección completa.
En Figma
Los primitivos van en su propia colección, con un solo modo: un primitivo no cambia con el tema ni con el ancho de pantalla. Los modos van en las colecciones semánticas, que verás en el módulo Modos y temas (Un eje por colección).
Para crear la colección (Figma: Create and manage variables):
- Abre la vista de variables.
- Crea una colección nueva (More options → Create collection) y llámala
Primitives. - Cambia el nombre de su modo. En DesignToken101 se llama
Value.
Las variables las crearás en las lecciones siguientes, una escala cada vez. Al crear cada una, decidirás también si se publica y a qué propiedades se puede aplicar.
Nota
Figma permite ocultar una colección entera al publicar si su nombre empieza por _ o por . (Figma: Hide styles, components, and variables when publishing). En DesignToken101 no lo hacemos: unos primitivos se ocultan y otros no, así que se ocultan variable por variable.
Al exportar la colección, Figma escribe un archivo por modo, Value.tokens.json. Cada / del nombre de la variable es un nivel de grupo, y Figma guarda sus datos propios en $extensions:
tokens/figma/primitives/Value.tokens.json
{
"color": {
"emerald": {
"500": {
"$type": "color",
"$value": {
"colorSpace": "srgb",
"components": [0.2, 0.8, 0.6],
"alpha": 1,
"hex": "#33CC99"
},
"$extensions": {
"com.figma.hiddenFromPublishing": true,
"com.figma.codeSyntax": { "WEB": "var(--t101-color-emerald-500)" }
}
}
}
}
}El ejemplo está abreviado: los components reales tienen más decimales (0.20000000298023224) y hay un com.figma.variableId. Qué hace cada dato de $extensions lo verás en La colección completa.
Lo que te llevas
- Un primitivo dice qué valor es; un semántico, para qué se usa.
- Los primitivos se nombran categoría / paleta / paso, y las paletas por su tono, nunca por su rol.
- Una escala son pocos pasos bien elegidos, con un número que dice algo.
Fuentes
- Design Tokens Format Module 2025.10: Groups
- Figma: Simple Design System, theme.css
- Figma: Create and manage variables and collections
- Figma: Hide styles, components, and variables when publishing
- Tailwind CSS: Colors
- Tailwind CSS: Padding
- Radix Colors: Understanding the scale
- Atlassian Design System: Spacing