class CustomAuthModal extends HTMLElement { constructor() { super(); this.attachShadow({ mode: 'open' }); this.shadowRoot.innerHTML = ` `; } connectedCallback() { this.modal = this.shadowRoot.getElementById('modal'); this.loginTab = this.shadowRoot.getElementById('loginTab'); this.forgotTab = this.shadowRoot.getElementById('forgotTab'); this.loginForm = this.shadowRoot.getElementById('loginForm'); this.forgotForm = this.shadowRoot.getElementById('forgotForm'); this.closeButton = this.shadowRoot.getElementById('closeModal'); // Tab switching this.loginTab.addEventListener('click', () => this.switchTab('login')); this.forgotTab.addEventListener('click', () => this.switchTab('forgot')); this.closeButton.addEventListener('click', () => this.hideModal()); // Close modal when clicking outside this.shadowRoot.querySelector('.modal-overlay').addEventListener('click', (e) => { if (e.target === e.currentTarget) { this.hideModal(); } }); } showModal(tab = 'login') { this.modal.classList.remove('hidden'); setTimeout(() => { this.shadowRoot.querySelector('.modal-content').classList.add('modal-active'); }, 10); this.switchTab(tab); feather.replace(); } hideModal() { this.shadowRoot.querySelector('.modal-content').classList.remove('modal-active'); setTimeout(() => { this.modal.classList.add('hidden'); }, 300); } switchTab(tab) { if (tab === 'login') { this.loginTab.classList.add('active'); this.forgotTab.classList.remove('active'); this.loginForm.classList.remove('hidden'); this.forgotForm.classList.add('hidden'); } else { this.loginTab.classList.remove('active'); this.forgotTab.classList.add('active'); this.loginForm.classList.add('hidden'); this