class DarkModeToggle extends HTMLElement { connectedCallback() { this.attachShadow({ mode: 'open' }); this.shadowRoot.innerHTML = `
🌞 🌜
`; const toggle = this.shadowRoot.querySelector('input'); toggle.addEventListener('change', this.toggleDarkMode.bind(this)); // Check for saved preference or system preference if (localStorage.getItem('darkMode') === 'true' || (!localStorage.getItem('darkMode') && window.matchMedia('(prefers-color-scheme: dark)').matches)) { toggle.checked = true; document.documentElement.classList.add('dark'); } } toggleDarkMode() { const isDark = this.shadowRoot.querySelector('input').checked; document.documentElement.classList.toggle('dark', isDark); localStorage.setItem('darkMode', isDark); } } customElements.define('darkmode-toggle', DarkModeToggle);