/** * Dark Mode Module * Manages dark mode theme switching and persistence */ class DarkMode { constructor() { this.isDark = localStorage.getItem(Config.STORAGE_KEYS.DARK_MODE) === 'true'; this.apply(); } /** * Toggle dark mode on/off */ toggle() { this.isDark = !this.isDark; localStorage.setItem(Config.STORAGE_KEYS.DARK_MODE, this.isDark); this.apply(); Logger.debug(`Dark mode ${this.isDark ? 'enabled' : 'disabled'}`); } /** * Apply the current dark mode state */ apply() { if (this.isDark) { document.body.classList.add('dark-mode'); const btn = document.getElementById('darkModeBtn'); if (btn) btn.innerHTML = ''; // Update mermaid theme if (window.mermaid) { mermaid.initialize({ theme: Config.MERMAID_THEME_DARK }); } } else { document.body.classList.remove('dark-mode'); const btn = document.getElementById('darkModeBtn'); if (btn) btn.innerHTML = ''; // Update mermaid theme if (window.mermaid) { mermaid.initialize({ theme: Config.MERMAID_THEME_LIGHT }); } } } /** * Check if dark mode is currently enabled * @returns {boolean} True if dark mode is enabled */ isEnabled() { return this.isDark; } /** * Enable dark mode */ enable() { if (!this.isDark) { this.toggle(); } } /** * Disable dark mode */ disable() { if (this.isDark) { this.toggle(); } } } // Make DarkMode globally available window.DarkMode = DarkMode;