// main menu document.body.innerHTML = ` ` + document.body.innerHTML; const sunIcon = '☀️'; const moonIcon = '🌕'; document.addEventListener('DOMContentLoaded', () => { const darkModeToggle = document.getElementById('darkModeToggle'); const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)'); const isDarkModeEnabled = () => document.body.classList.contains('dark-mode'); // Update the toggle button based on the dark mode state const updateToggleButton = () => { if (isDarkModeEnabled()) { darkModeToggle.innerHTML = sunIcon; darkModeToggle.setAttribute('aria-label', 'Enable light mode'); } else { darkModeToggle.innerHTML = moonIcon; darkModeToggle.setAttribute('aria-label', 'Enable dark mode'); } }; const updateDarkMode = () => { if (localStorage.getItem('darkMode') === 'enabled' || prefersDarkScheme.matches && localStorage.getItem('darkMode') !== 'disabled') { document.body.classList.add('dark-mode'); } else { document.body.classList.remove('dark-mode'); } updateEditorTheme(); updateToggleButton(); }; // Update the editor theme based on the dark mode state const updateEditorTheme = () => { if (typeof editor !== 'undefined') { editor.setTheme(isDarkModeEnabled() ? 'ace/theme/tomorrow_night_eighties' : 'ace/theme/github'); } }; // Initial update for dark mode and toggle button updateDarkMode(); // Listen for changes in the system's color scheme preference prefersDarkScheme.addEventListener('change', updateDarkMode); // Modern approach // Toggle dark mode and update local storage on button click darkModeToggle.addEventListener('click', () => { const enabled = document.body.classList.toggle('dark-mode'); localStorage.setItem('darkMode', enabled ? 'enabled' : 'disabled'); updateToggleButton(); // Update the button after toggling updateEditorTheme(); }); });