Pular para o conteúdo

Design Tokens

Um design token do MDS existe em até três representações da mesma decisão de design — cada uma para uma audiência diferente:

Camada Formato Onde vive Quem lê
Figma Variables (semente, 1 valor por paleta) Arquivo Design System 2.0 Design
DTCG JSON no formato DTCG 2025.10 ($type/$value, aliases {...}) tokens/seeds/ (sementes) e tokens/dtcg/ (todos os tokens, gerado) Tooling, Style Dictionary, outras plataformas
CSS Custom properties (--mds-*) src/scss/themes/_light.scss / _dark.scss (região gerada) Todo consumo em produção (mds-styles, mds-angular)

Exemplo real — a cor primary/main (semente _Brand-Boffice no Figma, paleta brand-mobiis no código):

Figma — variável de semente, coleção _Primitives:

_Brand-Boffice = #408AFA

DTCG — mds.tokens.json (gerado; o papel semântico é um alias {...} que aponta para a paleta):

// mds.colors.palettes.brand-mobiis.main (a paleta em si)
"main": {
"$type": "color",
"$value": { "colorSpace": "srgb", "components": [0.251, 0.5412, 0.9804], "hex": "#408afa" }
}
// mds.colors.primary.main (o papel semântico, que referencia a paleta acima)
"main": { "$type": "color", "$value": "{mds.colors.palettes.brand-mobiis.main}" }

CSS — o que o navegador de fato lê, src/scss/themes/_light.scss:

--mds-colors-palettes-brand-mobiis-main: #408afa;
--mds-colors-primary-main: var(--mds-colors-palettes-brand-mobiis-main);

Todos os tokens do MDS (cores, tipografia, espaçamento, raio, blur, breakpoints e os tokens de componente: botões, controles, menus, destaques) estão disponíveis no formato DTCG 2025.10, o padrão do W3C Design Tokens Community Group. Ferramentas como o Style Dictionary, o Tokens Studio e o Figma leem esse formato.

Arquivo Conteúdo
mds.tokens.json Tema claro e todos os tokens que não são cor (518 tokens). É o arquivo base.
mds.dark.tokens.json Sobrescritas do tema escuro ([data-theme="dark"]).
mds.dark-blue.tokens.json Sobrescritas do tema escuro navy ([data-theme="dark-blue"]).
mds.resolver.json Resolver DTCG: combina o base com o tema light, dark ou dark-blue.
  • Nome do token = caminho no JSON. mds.colors.primary.main vira --mds-colors-primary-main no CSS (é só juntar o caminho com hífens, o que o Style Dictionary faz com a transformação css padrão, sem configuração).
  • Aliases preservam a cadeia semântica. Todo var(--mds-x) do CSS vira {mds.x} no JSON. Por isso primary, background, buttons etc. continuam apontando para a paleta, e não para um hex copiado.
  • Valores no formato estável do DTCG. Cor é um objeto (colorSpace, components, alpha quando houver transparência, hex). Dimensão é { "value": 16, "unit": "px" }. Os pesos usam fontWeight e a família usa fontFamily (lista de fontes).
  • Temas são sobrescritas. mds.dark.tokens.json e mds.dark-blue.tokens.json trazem só o que muda em relação ao claro e usam aliases para tokens do arquivo base. Aplique sempre o base primeiro e o tema por cima. O mds.resolver.json descreve exatamente essa combinação (módulo Resolver do DTCG).
  • color-mix() vira valor literal. O DTCG não tem mistura de cores. O token colors.ui.interactive-disabled-text dos temas escuros traz o valor já resolvido e guarda a expressão CSS original em $extensions["com.mobiis.mds"].css.
  • Troca de primária fora do export. Os blocos [data-primary="<paleta>"] só reapontam --mds-colors-primary-* para outra paleta em tempo de execução, e não entram nos arquivos.
import StyleDictionary from 'style-dictionary';
// Tema escuro: base + sobrescritas (o último arquivo vence; o aviso de colisão é esperado).
const sd = new StyleDictionary({
source: ['mds.tokens.json', 'mds.dark.tokens.json'],
platforms: {
js: { transformGroup: 'js', buildPath: 'build/', files: [{ destination: 'tokens.js', format: 'javascript/es6' }] },
},
});
await sd.buildAllPlatforms();

O Gerenciador de Tokens tem uma aba de exportação que gera o mesmo token nos formatos Figma (Variables JSON) e DTCG — útil pra conferir o formato exato antes de propor uma mudança, sem precisar rodar o build:

  • tokens/seeds/color.seeds.tokens.json — a única coisa editada à mão (1 hex por paleta); sincronizada do Figma como descrito em Geração de Cores.
  • tokens/generated/color.tokens.json e color.dark*.tokens.json — gerados por npm run tokens; toda a escala de cor (lighter…darker + on-*) resolvida.
  • tokens/dtcg/ — gerado por npm run tokens:dtcg; todos os tokens em DTCG 2025.10 (os mesmos arquivos de Baixar os tokens).
  • tokens/_Primitives.tokens.json, tokens/Mobiis.tokens.json, tokens/Mobiis-dark.tokens.json — exports antigos do Figma (2026-06-09), desatualizados em relação ao arquivo Figma ao vivo; não usar como fonte, só o histórico. A fonte real de sementes é tokens/seeds/color.seeds.tokens.json + o Figma.