Metodologia
Os princípios por trás do URBS Design System, destilados. Cada um é a resposta a um trade-off real encontrado durante a entrega. O raciocínio completo fica no METHODOLOGY.md no GitHub.
- 01
Tokens em três camadas
Primitive (hex bruto) → Semantic (aliases de significado) → Component (baseado em papéis). Os componentes consomem apenas tokens semantic / component, nunca primitives. Uma troca de tinta muda uma linha de token, não N componentes.
- 02
Kiosk-truth
O totem em produção é a fonte de verdade. O site do DS renderiza previews dentro de containers `[data-preview-stage]` que resetam as variáveis CSS de volta aos valores primitives do kiosk, mesmo quando o tema dos docs desloca cores para atender AA. O que você vê no preview é exatamente o que vai para produção.
- 03
Exceções de AA, documentadas
O verde da marca #2ECE78 mede 2.05:1 sobre fundos claros, abaixo do WCAG AA (4.5:1). Usado apenas em affordances não-textuais (preenchimentos de CTA, glyphs de success) onde o contraste é carregado pela cor de fill + stroke + label. A exceção é explícita, não silenciosa.
- 04
Duas superfícies, um sistema
Light (a maioria das telas) e dark (ScreenSaver / ExitRemoveCard / lado direito do split-panel) são cidadãos de primeira classe. Todo componente renderiza 1:1 nas duas. O padrão dark-overlay (rgba navy 98%) é sólido, não mix-blend, então os stacking contexts do framer-motion não o quebram.
- 05
Sincronizar em vez de duplicar
Os tokens são declarados uma única vez no `tokens.css` do DS e copiados para o app via `npm run sync-tokens`. O bloco `@theme inline` do app referencia as mesmas vars. Sem drift, sem duas fontes de verdade.