Saltar al contenido

Primitivos

La colección completa

Repaso de la colección Primitives de DesignToken101 en Figma. Qué se publica y qué se oculta, qué scope lleva cada escala, qué guarda la exportación y qué primitivos viven en código.

Última revisión:

Ya tienes todas las escalas. En esta lección las ves juntas, como quedan en la colección Primitives de Figma, con el criterio que decide qué se publica y a qué propiedades se aplica cada una. También repasas los primitivos que no están en Figma y cómo comprobar que la colección está completa.

En esta página

La colección de un vistazo

Colección Primitives, con un modo, Value. 97 variables:

VariablesTipoCuántasScopeAl publicar
color/* (escalas, white y black)Color57NingunoOcultas
space/*Number13Gap y Padding (GAP)Visibles
radius/*Number9Corner radiusVisibles
border-width/*Number2StrokeVisibles
font-family/*String2Font familyOcultas
font-size/*Number10Font sizeOcultas
font-weight/*Number4Font weightOcultas

Todas llevan code syntax Web con el formato var(--t101-…), también las ocultas. Por qué lo viste en Una sola fuente de verdad.

Qué se publica y qué se oculta

Cuando publicas un archivo como biblioteca, puedes ocultar variables concretas con Hide from publishing (Figma: Hide styles, components, and variables when publishing).

Recomendación

El criterio de DesignToken101: se publica lo que el diseñador aplica directamente; se oculta lo que se usa a través de otra capa.

  • Visibles: espaciado, radio y grosor de borde. No hay tokens semánticos de espaciado ni de grosor, así que se aplican los primitivos. (Los componentes usan los semánticos de radio, pero un diseño puede necesitar otro radio de la escala).
  • Ocultos: color y tipografía. El color se aplica con sus tokens semánticos, que cambian con Light y Dark. La tipografía se aplica con estilos de texto.

Así, en el selector de quien usa la biblioteca no aparecen 57 colores sueltos, sino los tokens semánticos con su propósito en el nombre.

Ocultar un primitivo no impide que los semánticos apunten a él. El curso de Figma lo propone así: ocultar los primitivos al publicar para que no se apliquen directamente, y aplicar los semánticos que apuntan a ellos (Figma: Update 1, Tokens, variables, and styles).

Para qué sirve el scope

El scope limita las propiedades a las que se puede aplicar una variable (Figma: Create and manage variables). Una variable con scope Corner radius se ofrece al elegir el radio de una esquina, y no en el padding ni en el tamaño de letra.

  • Las escalas con un uso llevan ese scope: espaciado, radio, grosor y cada propiedad tipográfica.
  • Los colores primitivos no tienen ningún scope, así que no se ofrecen para ninguna propiedad. Su única función es ser el destino de los alias.

Aviso

Un scope no lo impide todo. El de espaciado, por ejemplo, cubre a la vez el gap y el padding: no puedes limitar una variable a uno de los dos (Espaciado).

Lo que guarda la exportación

Al exportar la colección, cada variable lleva en $extensions los datos propios de Figma. En la exportación de esta web aparecen estos:

DatoQué guardaEjemplo
com.figma.variableIdEl identificador interno de la variableVariableID:13:66
com.figma.scopesLos scopes, con el nombre de la API de plugins. Si la variable no tiene scope, el dato no aparece["GAP"]
com.figma.hiddenFromPublishingtrue si está oculta. Si es visible, el dato no aparecetrue
com.figma.codeSyntaxEl code syntax de cada plataforma{ "WEB": "var(--t101-space-400)" }

Además, el archivo lleva el nombre del modo en su raíz: "com.figma.modeName": "Value". DTCG permite que cada herramienta guarde sus datos en $extensions (Format Module: Extensions).

Qué hace esta web con esos datos al generar el CSS lo verás en el módulo De Figma al código.

Los primitivos que viven en código

Tres grupos de primitivos no están en Figma. Los explicamos al tratar cada escala; aquí los tienes juntos:

TokensPor qué no están en FigmaDónde se explica
line-height/tight, snug, normalFigma lee una variable de interlineado como píxeles, no como multiplicadorTipografía
space/negative/100 … 600En Figma se aplicarían al gap o al padding, y en CSS ninguno de los dos admite negativosEspaciado
duration/200 y easing/standardFigma tiene variables Timing y Easing, pero se aplican a animaciones de Figma Motion, y esta web no diseña animaciones en FigmaTipos simples

Los valores de movimiento: duration/200 = 200 ms y easing/standard = cubic-bezier(0.2, 0, 0, 1), la curva de todas las animaciones de la interfaz. Cuando la persona pide movimiento reducido (prefers-reduced-motion), la web no anima; lo verás en el módulo Accesibilidad (Movimiento y transparencia).

Recomendación

Si algún día estos tokens pasan a Figma, se mueven, no se copian: un token no puede tener dos fuentes de verdad (Una sola fuente de verdad).

Revisa tu colección

Antes de pasar al módulo Relaciones, comprueba tu colección Primitives:

  • Tiene un solo modo.
  • Cada variable tiene la ruta completa: categoría, paleta (si la hay) y paso.
  • Ningún nombre de paleta es un rol (brand, danger, primary).
  • Cada escala que no es de color lleva su scope, y los colores no llevan ninguno.
  • Los colores y la tipografía están ocultos al publicar; el espaciado, el radio y el grosor, visibles.
  • Todas tienen code syntax Web.
  • No has creado variables de interlineado ni de espaciado negativo.

Lo que te llevas

  • Los primitivos van en una colección con un solo modo.
  • Se publica lo que se aplica directamente (espaciado, radio, borde) y se oculta lo que se usa a través de otra capa (color y tipografía).
  • Cada variable lleva su scope y su code syntax, y algunos primitivos viven en código.

Fuentes