Y2Day Framework
Toggle de tema escuro/claro com persistência em localStorage, sincronização entre abas, detecção de preferência do sistema e atalho de teclado - zero configuração.
1. Demo
O botão no header desta página já está ativo. Clique e veja toda a documentação mudar de tema.
Botões de toggle - adicione y2day em qualquer elemento
2. Como funciona
Y2Day adiciona y2-theme="dark|light" no elemento
<html> e sobrescreve as variáveis CSS semânticas do Y2.
Tema escuro (padrão Y2)
Tema claro
/* Variáveis semânticas gerenciadas automaticamente pelo Y2Day */
html[y2-theme="light"] {
--y2-bg-bas: var(--y2-neu-1);
--y2-bg-sur: var(--y2-neu-2);
--y2-bg-sec: var(--y2-neu-3);
--y2-txt-bas: var(--y2-neu-12);
--y2-txt-mut: var(--y2-neu-8);
--y2-bor: var(--y2-neu-4);
}
3. Sincronização de Mídia
Alterne imagens e fundos automaticamente sem escrever uma linha de CSS extra.
Troca de Imagem (src)
Background Image
4. Sincronização de Fontes
Alterne a tipografia conforme o ambiente para máxima legibilidade.
Esta fonte muda conforme o tema!
No tema claro usamos Sans-Serif (Outfit), no escuro usamos Mono (JetBrains).
5. Persistência + Sistema
O tema — salvo automaticamente e sincronizado entre abas.
Fluxo de decisão
y2-theme salvo?
prefers-color-scheme
dark
Recursos automáticos
6. API JavaScript
Controle programático completo.
// Setar tema
Y2Day.set('dark');
Y2Day.set('light');
// Toggle (dark → light → dark)
Y2Day.toggle();
// Ler tema atual
console.log(Y2Day.theme); // 'dark' | 'light'
// Escutar mudança de tema
document.documentElement.addEventListener('yd:day:changed', (e) => {
console.log('Tema:', e.detail.theme);
// atualizar gráficos, ícones, etc.
});
// Exemplo real: sincronizar Chart.js com o tema
document.documentElement.addEventListener('yd:day:changed', ({ detail }) => {
const isDark = detail.theme === 'dark';
myChart.options.scales.x.grid.color = isDark ? '#333' : '#ddd';
myChart.options.scales.y.grid.color = isDark ? '#333' : '#ddd';
myChart.update();
});
7. Quick Reference
| Atributo / API | Ação |
|---|---|
y2day |
Transforma elemento em botão de toggle |
y2day-img-[theme] |
Troca o src da imagem ao mudar de tema |
y2day-bg-[theme] |
Troca o background-image ou cor ao mudar de tema |
y2day-font-[theme] |
Troca a família de fonte ao mudar de tema |
Y2Day.set(theme) |
Altera o tema via JS - 'light' | 'dark' |
Y2Day.toggle() |
Inverte o tema atual |
Y2Day.theme |
Retorna o tema ativo atualmente |
yd:day:changed |
Evento disparado no <html> ao trocar de tema |