Níveis de Tema
Um tema é construído a partir de três níveis independentes. Entender a separação é o que permite a um tema mudar a aparência de todo o aplicativo sem tocar em seu comportamento.
Nível 1: Design Tokens
Tokens são propriedades customizadas CSS semânticas prefixadas com --st-.
Eles cobrem cores, tipografia, espaçamento, raios, bordas, sombras, camadas de
z-index, movimento, tamanhos de controles, barras de rolagem e o canvas de
chat.
Componentes referenciam apenas tokens — eles nunca fixam um valor de cor, fonte ou espaçamento. Substituir um token no manifesto do tema reestiliza todo componente que o usa:
{
"tokens": {
"dark": {
"color-accent": "#ff00aa",
"font-ui": "'Atkinson Hyperlegible', system-ui, sans-serif"
}
}
}
Tokens são resolvidos por uma cadeia de herança: padrões integrados para o modo, depois temas pais, depois o próprio tema. Um modo escuro recai nos tokens claros do tema quando não há override escuro. Veja Design Tokens para o contrato completo.
Nível 2: Skin de Componentes
A skin de componentes é CSS que reestiliza os componentes integrados por meio
de hooks estáveis. O host publica atributos data-component, data-part,
data-role e data-state; um tema estiliza esses atributos, nunca nomes de
classes gerados por CSS modules:
@layer theme {
[data-component='button'][data-variant='primary'] {
background: var(--st-color-accent);
}
}
A skin é aplicada por camadas de cascata em ordem fixa, com a camada de
override do usuário por último. !important é proibido em CSS de tema, exceto
na camada de preferências de acessibilidade. Veja
Skin de Componentes para a ordem das camadas e a
referência de hooks.
Nível 3: Layout de Shell
O layout de shell é a composição das áreas principais: a trilha de navegação,
os painéis de gerenciamento e o workspace de chat. Ele é declarativo, expresso
em theme.json — nunca em JavaScript:
{
"shellLayout": {
"navigationRail": {
"main": [
"menu-toggle",
"chats",
"characters",
"personas",
"lorebooks",
"backgrounds",
"ai-settings",
"plugins"
],
"bottom": ["settings"]
}
}
}
Itens de trilha válidos são chats, characters, personas, lorebooks,
backgrounds, ai-settings, plugins, settings e o opcional
menu-toggle. O grupo main flui do topo; bottom é fixado à borda
inferior. Itens que você omite são adicionados de volta na ordem padrão, de
modo que um tema não pode esconder acidentalmente as Configurações e travar o
usuário fora da recuperação.
Imitando Outras Interfaces
Como os níveis são independentes, um tema pode imitar um paradigma de interface completamente diferente:
- Um tema estilo console muda tokens e skins, fazendo a trilha, os painéis e os botões parecerem uma interface de jogo.
- Um tema de visual novel reestiliza o viewport de chat, as mensagens e o cabeçalho do personagem enquanto a lógica de chat permanece intacta.
- Um tema estilo app mobile usa o layout de shell declarativo para reordenar a trilha e os painéis.
Nenhum deles exige tocar na lógica de chat, nos dados ou no comportamento de plugins — que é exatamente por que a superfície de tema pode ser substituída por completo. A única coisa que a v1 não fornece é rearranjo livre das áreas de shell; slots são estilizados e preenchidos, não movidos. Veja Contrato de Shell para o que está no escopo.