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) |
O mesmo token, nas três formas
Seção intitulada “O mesmo token, nas três formas”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 = #408AFADTCG — 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);Baixar os tokens (DTCG)
Seção intitulada “Baixar os tokens (DTCG)”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. |
Como os arquivos estão organizados
Seção intitulada “Como os arquivos estão organizados”- Nome do token = caminho no JSON.
mds.colors.primary.mainvira--mds-colors-primary-mainno CSS (é só juntar o caminho com hífens, o que o Style Dictionary faz com a transformaçãocsspadrão, sem configuração). - Aliases preservam a cadeia semântica. Todo
var(--mds-x)do CSS vira{mds.x}no JSON. Por issoprimary,background,buttonsetc. continuam apontando para a paleta, e não para um hex copiado. - Valores no formato estável do DTCG. Cor é um objeto (
colorSpace,components,alphaquando houver transparência,hex). Dimensão é{ "value": 16, "unit": "px" }. Os pesos usamfontWeighte a família usafontFamily(lista de fontes). - Temas são sobrescritas.
mds.dark.tokens.jsonemds.dark-blue.tokens.jsontrazem 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. Omds.resolver.jsondescreve exatamente essa combinação (módulo Resolver do DTCG). color-mix()vira valor literal. O DTCG não tem mistura de cores. O tokencolors.ui.interactive-disabled-textdos 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.
Usar com o Style Dictionary
Seção intitulada “Usar com o Style Dictionary”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();Exportar um token em qualquer formato
Seção intitulada “Exportar um token em qualquer formato”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:
Arquivos
Seção intitulada “Arquivos”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.jsonecolor.dark*.tokens.json— gerados pornpm run tokens; toda a escala de cor (lighter…darker+on-*) resolvida.tokens/dtcg/— gerado pornpm 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.