'use client'; import { FormEvent, useState } from 'react'; type AuthMode = 'login' | 'register'; export function AuthForm({ mode }: { mode: AuthMode }) { const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [deviceName, setDeviceName] = useState('Web browser'); const [message, setMessage] = useState(''); const [busy, setBusy] = useState(false); async function submit(event: FormEvent) { event.preventDefault(); setBusy(true); setMessage(''); try { const response = await fetch(`/api/auth/${mode}`, { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ email, password, device_name: deviceName }), }); const body = await response.json().catch(() => ({})); if (!response.ok) throw new Error(body.detail ?? 'Authentication failed.'); window.location.assign('/account'); } catch (error) { setMessage(error instanceof Error ? error.message : 'Authentication failed.'); } finally { setBusy(false); } } return (
{message &&

{message}

}
); }