/** * Dark Mode Toggle * Respeita a preferência do sistema e permite alternar manualmente * Salva a preferência no localStorage */ const DARK_MODE_KEY = 'caderno_dark_mode'; function initDarkMode() { // Verificar preferência salva const saved = localStorage.getItem(DARK_MODE_KEY); let isDark; if (saved !== null) { isDark = saved === 'true'; } else { // Respeitar preferência do sistema isDark = window.matchMedia('(prefers-color-scheme: dark)').matches; } applyDarkMode(isDark); } function applyDarkMode(isDark) { const html = document.documentElement; const toggle = document.getElementById('dark-mode-toggle'); if (isDark) { html.setAttribute('data-theme', 'dark'); if (toggle) toggle.textContent = '☀️'; } else { html.removeAttribute('data-theme'); if (toggle) toggle.textContent = '🌙'; } localStorage.setItem(DARK_MODE_KEY, isDark); } function toggleDarkMode() { const html = document.documentElement; const isDark = html.getAttribute('data-theme') === 'dark'; applyDarkMode(!isDark); } // Inicializar quando o DOM estiver pronto if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initDarkMode); } else { initDarkMode(); } // Detectar mudanças na preferência do sistema window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => { const saved = localStorage.getItem(DARK_MODE_KEY); if (saved === null) { // Se o usuário não escolheu manualmente, seguir o sistema applyDarkMode(e.matches); } });