Saltar al contenido

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

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).

PrimitivoSemántico
Qué nombraQué valor esPara qué se usa
Ejemplo en DesignToken101color/emerald/500color/background/accent/strong/default
ValorUn valor directo: #33CC99Una referencia a un primitivo
Cuándo cambiaCuando cambia la paletaCuando 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.

TokenCategoríaPaletaPaso
color/emerald/500coloremerald500
color/neutral/900colorneutral900
space/400spaceNo tiene400
radius/200radiusNo tiene200

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:

  1. Pocas opciones, bien elegidas. Una escala corta obliga a decidir. Tailwind CSS es la excepción: p-17 es válido, porque cada utilidad multiplica la variable --spacing por 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.
  2. El número dice algo. En el SDS, space-100 mide 4 px y space-400 mide 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.200 mide 16 px (Atlassian: Spacing).
  3. Múltiplos de 100, con cero inicial para las fracciones. Así caben pasos intermedios sin decimales: 050 es la mitad de 100 y 150 está entre 100 y 200. Lo usan el SDS y Atlassian (mismas fuentes).
  4. Los negativos van en su propio nivel. space/negative/100 en vez de space/-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:

SistemaPasosQué dice el número
Tailwind CSS11: 50, 100… 900, 950Un orden. Del más claro al más oscuro. Los colores se definen en oklch (Tailwind CSS: Colors)
Radix Colors12: 1 a 12Una 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íaPasosLección
space13Espaciado
radius9Radio y grosor de borde
border-width2Radio y grosor de borde
font-family, font-size, font-weight2, 10 y 4Tipografía
color: emerald y neutral11 cada unaEscalas de color
color: red, amber, blue, white y black11 cada una, más dos sueltosEscalas 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):

  1. Abre la vista de variables.
  2. Crea una colección nueva (More options → Create collection) y llámala Primitives.
  3. 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.

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