class RegisterForm extends HTMLElement { connectedCallback(): void { this.innerHTML = `
`; this.querySelector('form')!.addEventListener('submit', async (e: Event) => { e.preventDefault(); const form = e.target as HTMLFormElement; const data = Object.fromEntries(new FormData(form)); const res = await fetch('/api/auth/register', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }); if (res.ok) { location.href = '/dashboard.html'; } else { const err = await res.json() as { error: string }; this.querySelector('.error')!.textContent = err.error; } }); } } customElements.define('register-form', RegisterForm);