Saltar al contenido

De Figma al código

Qué sale de Figma

Cómo leer los archivos que exporta Figma: qué lleva cada token, para qué sirve cada dato al generar el código y qué no viene en la exportación.

Última revisión:

Terminaste el módulo 5 con tus colecciones exportadas, una carpeta por colección. En este módulo esos archivos se convierten en variables CSS y en un tema de Tailwind CSS. El primer paso es saber leerlos: qué lleva cada token, qué dato se usa para qué y qué falta.

Nota

Desde este módulo, el curso trabaja también con código. Leerás archivos JSON y CSS, y en los bloques En código encontrarás configuraciones, scripts y comandos de terminal. El texto principal sigue explicando lo que necesitas como diseñador: qué sale de Figma, qué le falta y qué le pasa a cada token. Los bloques En código son para quien implementa y puedes saltarlos; si quieres seguirlos, revisa antes el itinerario de código.

En esta página

Los archivos

La exportación de DesignToken101 tiene seis archivos, uno por modo, en cuatro carpetas, una por colección (Exportar los modos):

CarpetaColecciónArchivosVariables por archivo
primitives/PrimitivesValue.tokens.json97
semantic-color/Semantic colorLight.tokens.json, Dark.tokens.json33
semantic-size/Semantic sizeValue.tokens.json4
layout/LayoutDesktop.tokens.json, Mobile.tokens.json9

Cada archivo es un documento DTCG completo: el árbol de grupos de la colección, con el valor de ese modo en cada token. El nombre del modo va en $extensions, en la raíz del archivo (comprobado en la exportación del 2026-10-04).

Un token por dentro

Este es el texto principal en el archivo de Light, tal como lo escribe Figma:

tokens/figma/semantic-color/Light.tokens.json (abreviado)

"default": {
  "$type": "color",
  "$value": {
    "colorSpace": "srgb",
    "components": [0.062745101749897, 0.10196078568696976, 0.08235294371843338],
    "alpha": 1,
    "hex": "#101A15"
  },
  "$description": "Texto principal",
  "$extensions": {
    "com.figma.variableId": "VariableID:13:104",
    "com.figma.scopes": ["SHAPE_FILL", "TEXT_FILL"],
    "com.figma.codeSyntax": { "WEB": "var(--t101-color-text-neutral-default)" },
    "com.figma.aliasData": {
      "targetVariableName": "color/neutral/900",
      "targetVariableSetName": "Primitives"
    }
  }
}

Tiene dos partes:

Para qué sirve cada dato

No todos los datos llegan al CSS. Esto es lo que hace DesignToken101 con cada uno al generar el código:

DatoQué se hace con él
$typeEs el punto de partida, pero a veces no es un tipo DTCG válido y hay que corregirlo (Completar la exportación)
$valueEl valor de la variable CSS cuando el token no es un alias. Si lo es, se sustituye por la referencia
$descriptionSe escribe como comentario encima de la variable CSS
com.figma.aliasDataSe convierte en la referencia DTCG, y después en var()
com.figma.scopesDecide el tipo DTCG de los números y los textos
com.figma.codeSyntaxEs el nombre de la variable CSS. Una comprobación exige que coincida con la ruta del token
com.figma.hiddenFromPublishingNo se usa. Qué tokens se exponen en Tailwind CSS se decide aparte (El tema de Tailwind CSS)
com.figma.variableIdNo se usa
com.figma.modeNameNo se usa: el modo se sabe por el nombre del archivo

Dos datos de diseño trabajan ahora en código: el scope, que pusiste para limitar dónde se aplica cada variable, decide su tipo; y el code syntax, que escribiste en cada variable, es el nombre de la variable CSS.

Recomendación

Antes de pasar al código, revisa estos dos datos en tu archivo de Figma. Una variable sin scope, o con un code syntax que no coincide con su ruta, es un error que en Figma no se ve y en código sí.

Por qué el valor viene resuelto

Al terminar el módulo 5 te preguntabas por qué el $value del texto principal es un color, #101A15, y no una referencia a color/neutral/900.

Lo que dice la fuente: la ayuda de Figma documenta com.figma.aliasData como la forma de apuntar a variables de otra colección, con el nombre de la variable y el de su colección (Figma: Modes for variables). No explica por qué el $value lleva además el valor resuelto.

Lo que comprobamos en la exportación de DesignToken101:

  • Los 82 alias son entre colecciones: los semánticos de color, tamaño y Layout apuntan a Primitives.
  • Todos llevan a la vez el valor resuelto en $value y el destino en com.figma.aliasData.
  • El hex de cada semántico de color es el de su primitivo: lo comparamos en los 62 alias de Light y Dark, sin ninguna diferencia (2026-10-05).

La consecuencia importa más que el motivo. Una herramienta que lee el archivo tal cual ve un color, no un alias. Generaría --t101-color-text-neutral-default: #101a15, y el CSS perdería la capa de alias: cambiar color/neutral/900 ya no cambiaría el texto. Por eso, antes de generar el código, hay que recuperar la referencia (Completar la exportación).

Nota

Todos los alias de DesignToken101 apuntan a otra colección, así que no hemos visto cómo exporta Figma un alias dentro de una misma colección. Si tu sistema los tiene, abre el archivo y compruébalo antes de seguir.

Lo que no viene en la exportación

Dos cosas que el código necesita no están en estos archivos:

  • Los estilos de texto. La exportación DTCG trabaja con las variables de cada modo. Ningún archivo de la exportación de DesignToken101 trae estilos de texto. Cómo llegan al código lo verás en Los estilos de texto en código.
  • Los tokens que no existen en Figma, como el interlineado o el corte entre móvil y escritorio. Los verás en Los tokens de código.

Lo que te llevas

  • La exportación tiene un archivo por modo, con todas las variables de la colección y el valor de ese modo.
  • Cada token lleva los datos de DTCG y los de Figma en $extensions; el scope y el code syntax pasan a trabajar en código.
  • El valor de un alias viene resuelto y su destino va aparte, así que hay que recuperar la referencia antes de generar el CSS.

Fuentes