Luna Design System
Uma única fonte de tokens para Apple e Material, no claro e no escuro

Times mobile entregam o mesmo produto duas vezes: uma na linguagem da Apple e outra na do Google, e normalmente mais duas para os modos claro e escuro. Kits que parecem completos no primeiro dia desmoronam no primeiro rebrand, porque cores, raios e tamanhos de texto são digitados à mão em centenas de camadas.
Luna é um design system em Figma para apps iOS e Android, construído para que uma única fonte de tokens alimente componentes Apple e Material nos modos claro e escuro, com saídas para SwiftUI, Jetpack Compose, Flutter e CSS.
- Fundamentos
- Tokens semânticos
- Componentes e padrões
- Telas de app
Processo
Do problema à entrega, etapa por etapa.
05etapas documentadas neste case
- 01Princípios
Os componentes apontam para papéis semânticos como brand/base ou text/strong-950, nunca para um valor.
- 02Padrões nativos
21 padrões Apple e 17 do Material 3 foram redesenhados na geometria do Luna.
- 03Fundações
Tudo começa nos tokens.
- 04Em telas reais
Um sistema se prova no uso.
- 05O que eu levaria para o próximo sistema
Um sistema é feito das suas restrições: não ter paint styles nem variantes escuras foram escolhas deliberadas, e cada atalho removido era um lugar…
Princípios
Os componentes apontam para papéis semânticos como brand/base ou text/strong-950, nunca para um valor. O papel aponta para uma fundação, e a cadeia corre em um só sentido.
Light e Dark são dois modos de uma mesma coleção, então nenhum componente tem variante escura. As plataformas diferem nos números, não na intenção: uma coleção Platform guarda as áreas de toque de 44 ou 48 pontos e as alturas das barras, para que um mesmo componente obedeça às duas.






Um componente nunca nomeia uma cor. Ele nomeia um token, o token nomeia uma fundação, e a cadeia corre em um só sentido.
Documentação do Luna DS, Read me


Padrões nativos
21 padrões Apple e 17 do Material 3 foram redesenhados na geometria do Luna. A Platform Bridge mapeia 112 slots Apple e Material para tokens do Luna no modo Brand, ou para os valores publicados pela própria plataforma no modo System, então uma tela pode ser conferida com a paleta nativa em uma única troca.


Fundações
Tudo começa nos tokens. As cores primitivas viram papéis semânticos com valor claro e escuro, e tipografia, espaçamento e elevação seguem a mesma estrutura em dois níveis. Um componente nunca aponta para uma cor bruta, só para um papel.
Uma ponte de plataforma traduz as mesmas decisões para as medidas de iOS e Android, e é isso que permite a uma só biblioteca servir SwiftUI, Compose, Flutter e CSS.



Em telas reais
Um sistema se prova no uso. Montei telas completas de aplicativo com a biblioteca, no claro e no escuro, para testar densidade, hierarquia e o comportamento de cada componente com conteúdo real antes de publicar.






O que eu levaria para o próximo sistema
Um sistema é feito das suas restrições: não ter paint styles nem variantes escuras foram escolhas deliberadas, e cada atalho removido era um lugar a menos para o sistema se desviar.
Nomear os tokens do jeito que SwiftUI, Compose, Flutter e CSS os leem manteve o arquivo e o código descrevendo a mesma coisa, e telas de app completas feitas só com instâncias provaram o sistema mais rápido do que qualquer página de documentação conseguiria.
Resultados
Variáveis em seis coleções
Componentes, todo estado em um token
Telas de app no claro e no escuro
Variantes escuras para manter
