Saltar al contenido

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

La especificación DTCG define siete tipos de un solo valor (Format Module: Types):

TipoQué guardaEjemplo de $value
colorUn color, con su espacio de color{ "colorSpace": "srgb", "components": [0.2, 0.8, 0.6] }
dimensionUna medida con unidad: px o rem{ "value": 16, "unit": "px" }
fontFamilyUn nombre de fuente o una lista de nombres"Inter"
fontWeightUn peso de 1 a 1000, o un nombre como "bold"600
durationUn tiempo en ms o s{ "value": 200, "unit": "ms" }
cubicBezierUna curva de animación: cuatro números[0.2, 0, 0, 1]
numberUn número sin unidad1.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):

TipoSe aplica a (selección)
ColorRellenos, trazos, paradas de degradado, color de sombra
NumberTamaño de fuente, interlineado, espaciado entre letras, gap y padding, ancho y alto, radio, grosor de trazo, opacidad de capa
StringContenido de un texto, familia tipográfica, peso y estilo
BooleanVisibilidad de una capa
TimingRetraso y duración de una animación (Figma Motion)
EasingCurva 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é guardaTipo DTCGEn FigmaEn DesignToken101
ColorcolorVariable ColorVariable Color, con valores en sRGB
Espaciado, radio, grosor de borde, tamaño de fuente, anchosdimensionVariable Number, sin unidad (Figma trabaja en píxeles)Variable Number; en código se convierte a rem
Peso tipográficofontWeightVariable String o NumberVariable Number (font-weight/400 … 700)
Familia tipográficafontFamilyVariable String, con un único nombreVariable String; las fuentes de reserva se añaden en código
InterlineadonumberVariable Number, pero Figma la lee como píxelesEn código, no en Figma. En Figma, los estilos de texto usan porcentaje
DuracióndurationVariable Timing (Figma Motion)En código
Curva de animacióncubicBezierVariable Easing (Figma Motion)En código
OpacidadNo tiene tipo propioVariable 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 px no se adaptan a ese ajuste y recomienda medidas relativas como rem para 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:

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.

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.

Fuentes