Pular para o conteúdo principal

Aplica DS — V2

Contexto

A V2 é a fase de conceito evoluído do Aplica DS (2023–2024). Ela representa a síntese de tudo que foi aprendido no Alpha e na V1, reescrita com dois objetivos que mudam a natureza do projeto:

  1. Desacoplamento — o sistema de tokens foi completamente separado de qualquer produto específico, tornando-se independente e reutilizável
  2. Open source — a arquitetura passou a ser desenvolvida como um bem público, não como um produto interno

O artefato central da V2 é o Aplica Tokens Theme Engine — um gerador dinâmico de temas que produz tokens para qualquer combinação de brand, mode, surface e dimension.


A grande virada: o desacoplamento

A decisão mais importante da V2 foi separar o sistema de tokens do produto que o consumia. Isso criou duas entidades distintas:

Aplica Theme Engine (upstream):

  • Arquitetura genérica, agnóstica a produto
  • Gera tokens para qualquer brand
  • Documentada em PT-BR e EN
  • Versionada com Semantic Versioning
  • Distribuída como pacote e como cópia

Consumers (downstream):

  • Cada produto tem sua cópia ou fork do Theme Engine
  • Customiza brand, foundation e typography
  • Consome os artifacts gerados (dist/)
  • Recebe atualizações via bundles de migração

Esse modelo permitiu que o mesmo sistema de tokens alimentasse DSes de empresas diferentes, sem que nenhum deles precisasse saber dos outros.


Inovações da V2

1. Gerador Dinâmico de Temas

Em vez de definir cada token manualmente, o V2 gera temas a partir de uma configuração mínima:

{
"brand": "aplica_joy",
"colors": {
"first": "#E91E8C",
"second": "#1E90FF"
}
}

A partir disso, o gerador:

  • Decompõe cada cor em 19 níveis de paleta (via OKLCh)
  • Gera 15 níveis de neutros com temperatura de cor do brand
  • Calcula 5 estados comportamentais (normal, hover, pressed, focus, disabled)
  • Garante contraste WCAG para todos os tokens de txtOn

2. Pipeline de Cores OKLCh

O Alpha e a V1 usavam HSL para decomposição de cor. A V2 migrou para OKLCh — um espaço de cor perceptualmente uniforme onde:

  • Luminosidade percebida é linear (L=50 é visualmente meio-ponto entre L=0 e L=100)
  • Chroma (saturação) é separado do ângulo de Hue
  • Interpolação entre cores não passa por tons de cinza no meio

Isso resolve um problema clássico em Dark Mode: em HSL, reduzir luminosidade para criar tons escuros pode produzir cores com aparência inconsistente. Em OKLCh, o resultado é previsível.

3. Camada Dimension

O conceito de Dimension — ausente no Alpha e na V1 — foi incorporado como camada ortogonal na V2. Três variantes (minor/normal/major) com DefaultDesignUnit diferente cascateiam para toda a escala espacial e tipográfica.

Isso resolveu o problema de densidades de interface sem duplicar tokens ou criar sistemas paralelos.

4. Contrato Canônico de Nomenclatura

A V2 formalizou um contrato completo para nomes de tokens:

<camada>.<categoria>.<grupo>.<subgrupo>.<estado>.<propriedade>

Com regras explícitas para:

  • Quando usar cada camada
  • Como nomear grupos e subgrupos
  • O que nunca pode ser um token de Semantic (valores raw sem propósito)
  • Política de rename e remoção (breaking changes = major version)

5. Foundation com Estilos Compostos

Foundation na V2 vai além de aliases de cores e espaçamentos. Ela inclui:

Typography Styles — 7 categorias de estilo composto:

CategoriaUso
headingTítulos e cabeçalhos hierárquicos
contentCorpo de texto padrão
displayTexto de destaque, hero
hierarchySubtítulos, seções
actionBotões, CTAs
linkLinks e âncoras
codeCódigo e monospace

Elevation Styles — 7 níveis de elevação configuráveis por tema:

  • level_minus_one a level_six
  • Cada nível é um box-shadow completo, não apenas uma sombra

6. Gradientes Dinâmicos

Gradientes são gerados automaticamente a partir das cores do brand:

  • 3 composições configuráveis (first, second, third)
  • Transição de tom claro → escuro com chroma preservado
  • Configuração de graus, steps e composites no global config

7. Sistema de Bundles de Migração

Para garantir que projetos que consomem o Theme Engine possam atualizar com segurança, a V2 introduziu bundles de migração versionados:

bundles/from-2.24.0-to-2.25.0/
├── APPLY_INSTRUCTIONS.md ← passo a passo de migração
└── MANIFEST.txt ← lista de arquivos alterados

8. Outputs Multi-plataforma Completos

FormatoUso
CSS custom propertiesWeb — :root, [data-theme]
JSONFigma, Tokens Studio
ESM (.mjs)JavaScript moderno
CJS (.js)Node.js, bundlers legados
TypeScript (.d.ts)Type safety

Versões de marco da V2

  • 2.26.0 — Foundation Styles Generation (typography.css, elevation.css por brand)
  • 2.25.0 — Output CSS em rem (acessibilidade, WCAG 1.4.4)
  • 2.24.0 — Token focus distinto de active (breaking change)
  • 2.23.0 — Opção txtOnStrategy: 'custom-tint'
  • 2.22.4 — Step 25 acima de 100px na camada Dimension (era step 5), semantic.giga movido para scale.275
  • 2.22.0 — Escala tipográfica de 13 tamanhos (nano → zetta)
  • 2.19.0 — Elevation configurável por tema
  • 2.18.0 — Config e schemas centralizados na raiz do projeto

A V2 encerrou na 2.26.x. Os itens planejados na V2 (pacote npm público, site de documentação, biblioteca de componentes) foram entregues na V3.


Arquivos de referência

  • Implementação: references/aplica-tokens-theme-engine/
  • Changelog completo: references/aplica-tokens-theme-engine/CHANGELOG.md
  • Documentação técnica (EN): references/aplica-tokens-theme-engine/docs/en/
  • Documentação técnica (PT-BR): references/aplica-tokens-theme-engine/docs/pt-br/
  • Extração do Confluence: node scripts/extract-confluence-xml.mjs --ds aplica-ds