Esquemas de cores
Claro, escuro e sistema: um ramo dentro do preset, não um segundo tema.
Um esquema de cores não é um segundo tema: é um ramo dentro do mesmo preset. Qualquer token pode levar um objeto colorScheme, e o compilador escreve os valores claros na raiz e os escuros sob o seletor do modo escuro.
{
formField: {
background: '{surface.0}',
colorScheme: {
dark: { background: 'rgb(255 255 255 / 0.06)' }
}
}
}Escolhendo um
createApp(App).use(Vitral, {
theme: {
colorScheme: 'system', // follow the OS, and keep following it
storageKey: 'app-scheme', // or false, to not remember
options: { darkModeSelector: '.vt-dark' }
}
});'light'e'dark'fixam o esquema.'system'segueprefers-color-schemee continua seguindo, então quem muda o tema do sistema operacional vê a página mudar junto.storageKeyguarda uma escolha explícita entre visitas;falsea esquece, que é o que uma captura de tela pede.
Trocando em tempo de execução
const { colorScheme, isDark, toggleDark, setColorScheme } = useTheme();
<Button :icon="isDark ? 'sun' : 'moon'" @click="toggleDark()" />toggleDark() alterna entre claro e escuro, deixando 'system' para trás na primeira vez que é usado. A barra no topo deste site é exatamente essas três linhas.
O seletor
Por padrão, o ramo escuro é escrito sob .vt-dark no elemento <html>. darkModeSelector aceita qualquer seletor de classe ou de atributo, como [data-theme="dark"], ou 'system', que emite os valores escuros dentro de uma media query prefers-color-scheme, para um site que nunca oferece a troca; false não emite esquema escuro nenhum.