Fundamentos
Tipos simples
Los tipos de token de un solo valor que define DTCG, los tipos de variable de Figma y cómo se corresponden en DesignToken101, con sus excepciones.
Última revisión:
Cada token tiene un tipo, y el tipo decide cómo lo trata cada herramienta. En esta lección verás los tipos de un solo valor que define DTCG, los que tiene Figma y cómo encajan entre sí. Algunos no encajan del todo; esas excepciones son las que marcan qué tokens viven en código.
En esta página
- Los tipos simples de DTCG
- Los tipos de variable de Figma
- Cómo se corresponden
- Color
- Dimensiones px y rem
- Peso y familia tipográfica
- Interlineado
- Duración y curva de animación
- Opacidad
- En Figma
- Lo que te llevas
Los tipos simples de DTCG
La especificación DTCG define siete tipos de un solo valor (Format Module: Types):
| Tipo | Qué guarda | Ejemplo de $value |
|---|---|---|
color | Un color, con su espacio de color | { "colorSpace": "srgb", "components": [0.2, 0.8, 0.6] } |
dimension | Una medida con unidad: px o rem | { "value": 16, "unit": "px" } |
fontFamily | Un nombre de fuente o una lista de nombres | "Inter" |
fontWeight | Un peso de 1 a 1000, o un nombre como "bold" | 600 |
duration | Un tiempo en ms o s | { "value": 200, "unit": "ms" } |
cubicBezier | Una curva de animación: cuatro números | [0.2, 0, 0, 1] |
number | Un número sin unidad | 1.5 |
Cada tipo tiene su apartado en la especificación: color, dimension, fontFamily, fontWeight, duration, cubicBezier y number. Como ejemplos de uso de number, la especificación cita las posiciones de un degradado y el interlineado sin unidad.
Los tipos de variable de Figma
Figma tiene seis tipos de variable (Figma: Overview of variables). Cada uno se aplica a unas propiedades concretas (Figma: Apply variables to designs):
| Tipo | Se aplica a (selección) |
|---|---|
| Color | Rellenos, trazos, paradas de degradado, color de sombra |
| Number | Tamaño de fuente, interlineado, espaciado entre letras, gap y padding, ancho y alto, radio, grosor de trazo, opacidad de capa |
| String | Contenido de un texto, familia tipográfica, peso y estilo |
| Boolean | Visibilidad de una capa |
| Timing | Retraso y duración de una animación (Figma Motion) |
| Easing | Curva de una animación (Figma Motion) |
Nota
Los tipos no coinciden uno a uno. DTCG no tiene string ni boolean, y Figma no tiene un tipo propio para dimensiones, pesos o familias: los guarda como Number o String.
Cómo se corresponden
Esta tabla resume qué tipo DTCG le corresponde a cada clase de valor, cómo se guarda en Figma y qué hacemos en DesignToken101:
| Qué guarda | Tipo DTCG | En Figma | En DesignToken101 |
|---|---|---|---|
| Color | color | Variable Color | Variable Color, con valores en sRGB |
| Espaciado, radio, grosor de borde, tamaño de fuente, anchos | dimension | Variable Number, sin unidad (Figma trabaja en píxeles) | Variable Number; en código se convierte a rem |
| Peso tipográfico | fontWeight | Variable String o Number | Variable Number (font-weight/400 … 700) |
| Familia tipográfica | fontFamily | Variable String, con un único nombre | Variable String; las fuentes de reserva se añaden en código |
| Interlineado | number | Variable Number, pero Figma la lee como píxeles | En código, no en Figma. En Figma, los estilos de texto usan porcentaje |
| Duración | duration | Variable Timing (Figma Motion) | En código |
| Curva de animación | cubicBezier | Variable Easing (Figma Motion) | En código |
| Opacidad | No tiene tipo propio | Variable Number (opacidad de capa) | Sin tokens de opacidad; la transparencia va dentro del color |
Las filas en negrita son decisiones del sistema de esta web. Los apartados siguientes explican cada una.
Recomendación
Decisiones de DesignToken101 en esta tabla: el peso como Number, el interlineado en código, y la duración y la curva en código. Las dos primeras salen de pruebas en Figma; la tercera es una elección para mantener el movimiento junto al código que lo usa. Las explicamos abajo.
Color
Un token de color en DTCG es un objeto con dos propiedades obligatorias, colorSpace y components, y dos opcionales: alpha (si falta, vale 1, totalmente opaco) y hex, un valor de reserva (Color Module 2025.10). El Color Module admite catorce espacios de color, entre ellos sRGB, Display P3 y oklch.
Figma, al importar, admite color en sRGB y HSL (Figma: Modes for variables). Al exportar, escribe sRGB con el hex añadido.
Recomendación
En DesignToken101 los colores se guardan en sRGB, que es lo que Figma importa y exporta sin conversiones. Las escalas se construyen en oklch y se guardan en sRGB. Por qué, y cómo, lo explicamos en Espacio de color.
Dimensiones px y rem
DTCG admite dos unidades en dimension: px y rem. Un rem equivale al tamaño de fuente por defecto del sistema (Format Module: Dimension). Figma importa dimensiones en px y las guarda como Number sin unidad (Figma: Modes for variables).
Lo que dicen las fuentes de accesibilidad:
- MDN explica que muchas personas aumentan el tamaño de letra por defecto del navegador, que las medidas absolutas como
pxno se adaptan a ese ajuste y recomienda medidas relativas comorempara el tamaño de fuente (MDN: length). - WCAG 2.2 pide que el texto se pueda ampliar al 200 % sin perder contenido (criterio 1.4.4). Se puede cumplir con el zoom del navegador, así que el criterio no obliga a usar una unidad concreta. Entre sus técnicas suficientes están los tamaños de fuente en porcentaje y en
em(Understanding 1.4.4 Resize Text).
Recomendación
En Figma diseñamos en píxeles, porque es lo que Figma admite. En el CSS convertimos los tamaños de fuente y los espaciados a rem (16 px = 1rem), para que la interfaz respete el tamaño de letra que la persona haya elegido en su navegador. Aplicarlo también al espaciado es una decisión nuestra, para que el texto y el espacio que lo rodea crezcan en proporción.
Peso y familia tipográfica
Peso. DTCG acepta un número de 1 a 1000 o un nombre predefinido, como "bold" (700) (Format Module: Font weight). CSS trabaja con números. En Figma, el peso admite dos tipos de variable:
- String, con el nombre del estilo de la fuente, por ejemplo
Semi Bold(Figma: Apply variables to designs). - Number: el peso aparece entre los scopes de las variables Number (Figma: Create and manage variables).
Lo probamos: una variable Number con el valor 600 aplicada al peso da Inter Semi Bold. Además, en Dev Mode un peso con variable String aparece sin referencia a la variable.
Recomendación
En DesignToken101 los pesos son variables Number: font-weight/400, 500, 600 y 700. Así el valor en Figma es el mismo número que necesita el CSS.
Familia. DTCG admite un nombre o una lista de nombres de fuente (Format Module: Font family). Figma importa un único nombre (Figma: Modes for variables). Por eso en Figma guardamos Inter, y las fuentes de reserva (system-ui, sans-serif…) se añaden en el CSS.
Interlineado
DTCG trata el interlineado como un number: un multiplicador del tamaño de fuente, sin unidad (Format Module: Number). 1.5 significa 1,5 veces el tamaño de la letra. Figma permite aplicar una variable Number al interlineado (Figma: Apply variables to designs).
Aviso
Lo probamos en Figma: una variable con valor 1.5 aplicada al interlineado da 1,5 píxeles, y una con 150 da 150 píxeles, también en estilos de texto definidos en porcentaje. Figma lee la variable como píxeles, no como multiplicador.
Recomendación
En DesignToken101 los tokens de interlineado (line-height/tight 1.2, snug 1.4 y normal 1.5) viven en código. En Figma, los estilos de texto usan 120 %, 140 % y 150 % escritos a mano, sin variable.
Duración y curva de animación
DTCG define duration, en ms o s, y cubicBezier, cuatro números que describen una curva (Format Module: Duration, Cubic Bézier). Figma tiene variables Timing y Easing, que se aplican a animaciones de Figma Motion (Figma: Apply variables to designs).
Recomendación
DesignToken101 no diseña animaciones en Figma, así que los tokens duration/200 (200 ms) y easing/standard viven en código, junto a las transiciones que los usan.
Opacidad
DTCG no define un tipo para la opacidad. La transparencia de un color va en su propiedad alpha (Color Module 2025.10). Figma permite aplicar una variable Number a la opacidad de una capa, y la muestra en porcentaje (40 %), mientras que CSS la espera como decimal (0.4).
Recomendación
DesignToken101 no tiene tokens de opacidad. Cuando hace falta transparencia, el token es un color con alpha: por ejemplo, la capa que oscurece la página al abrir el menú en móvil es negro con alpha 0,5.
En Figma
El tipo se elige al crear la variable (Figma: Create and manage variables). Al crear cada variable, piensa ya en dos cosas:
- El tipo, según la tabla de Cómo se corresponden.
- Dónde se podrá aplicar (su scope). Una variable Number puede servir para el radio, el padding o el tamaño de letra; el scope limita las propiedades a las que se puede aplicar (misma fuente). Lo configuraremos en el módulo Primitivos.
Así quedan en el CSS de esta web algunos de los tipos de la lección:
:root {
--t101-color-emerald-500: #3c9; /* color, en hexadecimal */
--t101-space-400: 1rem; /* dimension: 16 px en Figma */
--t101-font-weight-600: 600; /* fontWeight */
--t101-line-height-normal: 1.5; /* number, definido en código */
}El CSS no conserva el tipo: una variable CSS es texto. Por eso el tipo tiene que estar bien definido antes, en el archivo DTCG, para que la herramienta sepa convertir 16 en 1rem y no en 16.
Lo que te llevas
- Un tipo simple guarda un solo valor: color, dimensión, familia, peso, duración, curva o número.
- Los tipos de DTCG y las variables de Figma no coinciden uno a uno.
- Por eso el peso es una variable Number, y el interlineado y el movimiento viven en código.