class ThemeToggle extends HTMLElement { connectedCallback() { this.attachShadow({ mode: 'open' }); this.shadowRoot.innerHTML = ` `; const button = this.shadowRoot.querySelector('button'); button.addEventListener('click', this.toggleTheme.bind(this)); } toggleTheme() { const html = document.documentElement; if (html.classList.contains('dark')) { html.classList.remove('dark'); html.classList.add('light'); localStorage.setItem('theme', 'light'); } else { html.classList.remove('light'); html.classList.add('dark'); localStorage.setItem('theme', 'dark'); } feather.replace(); } } customElements.define('theme-toggle', ThemeToggle);