Files
2026-07-13 12:35:44 +08:00

45 lines
1.5 KiB
JavaScript

// UI Controls
function loadDarkMode() {
const isDarkMode = localStorage.getItem('darkMode') === 'true';
document.documentElement.setAttribute('data-theme', isDarkMode ? 'dark' : '');
document.getElementById('dark-mode-toggle').checked = isDarkMode;
}
function saveDarkMode(isDarkMode) {
localStorage.setItem('darkMode', isDarkMode);
}
export function initUI() {
const settingsIcon = document.getElementById('settings-icon');
const settingsPanel = document.getElementById('settings-panel');
const darkModeToggle = document.getElementById('dark-mode-toggle');
// Load dark mode preference
loadDarkMode();
// Toggle settings panel
settingsIcon.addEventListener('click', (e) => {
e.stopPropagation(); // Prevent click from propagating to document
settingsPanel.classList.toggle('visible');
});
// Close settings when clicking outside
document.addEventListener('click', (e) => {
if (!settingsPanel.contains(e.target) && settingsPanel.classList.contains('visible')) {
settingsPanel.classList.remove('visible');
}
});
// Prevent game controls when interacting with settings
settingsPanel.addEventListener('click', (e) => {
e.stopPropagation();
});
// Handle dark mode toggle
darkModeToggle.addEventListener('change', (e) => {
const isDarkMode = e.target.checked;
document.documentElement.setAttribute('data-theme', isDarkMode ? 'dark' : '');
saveDarkMode(isDarkMode);
});
}