From 7316238f16655bd127b04476bbf7864b27f940f9 Mon Sep 17 00:00:00 2001 From: Sivaldo Date: Sat, 13 Jun 2026 19:20:23 -0300 Subject: Commit inicial --- static/dark-mode.js | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 static/dark-mode.js (limited to 'static/dark-mode.js') diff --git a/static/dark-mode.js b/static/dark-mode.js new file mode 100644 index 0000000..8e2d761 --- /dev/null +++ b/static/dark-mode.js @@ -0,0 +1,59 @@ +/** + * 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); + } +}); -- cgit v1.2.3