import { useState, useCallback } from 'react'; import { CloseIcon } from './icons/CloseIcon'; type Tab = 'login' | 'register'; export default function AuthModal({ onClose, onLogin, onRegister, loading, error, onClearError, }: { onClose: () => void; onLogin: (email: string, password: string) => Promise; onRegister: (email: string, password: string, name?: string) => Promise; loading: boolean; error: string | null; onClearError: () => void; }) { const [tab, setTab] = useState('login'); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [name, setName] = useState(''); const switchTab = useCallback( (newTab: Tab) => { setTab(newTab); onClearError(); }, [onClearError] ); const handleSubmit = useCallback( async (e: React.FormEvent) => { e.preventDefault(); try { if (tab === 'login') { await onLogin(email, password); } else { await onRegister(email, password, name || undefined); } onClose(); } catch { // Error is handled by the hook } }, [tab, email, password, name, onLogin, onRegister, onClose] ); return (
e.stopPropagation()} > {/* Header */}

{tab === 'login' ? 'Log in' : 'Create account'}

{/* Tabs */}
{/* Form */}
{tab === 'register' && (
setName(e.target.value)} className="w-full px-3 py-2 text-sm rounded border border-warm-200 dark:border-warm-700 bg-white dark:bg-warm-900 text-navy-950 dark:text-warm-200 placeholder-warm-400 dark:placeholder-warm-500 outline-none focus:ring-2 ring-teal-400" placeholder="Your name (optional)" />
)}
setEmail(e.target.value)} required className="w-full px-3 py-2 text-sm rounded border border-warm-200 dark:border-warm-700 bg-white dark:bg-warm-900 text-navy-950 dark:text-warm-200 placeholder-warm-400 dark:placeholder-warm-500 outline-none focus:ring-2 ring-teal-400" placeholder="you@example.com" />
setPassword(e.target.value)} required minLength={8} className="w-full px-3 py-2 text-sm rounded border border-warm-200 dark:border-warm-700 bg-white dark:bg-warm-900 text-navy-950 dark:text-warm-200 placeholder-warm-400 dark:placeholder-warm-500 outline-none focus:ring-2 ring-teal-400" placeholder={tab === 'register' ? 'Min 8 characters' : 'Your password'} />
{error &&

{error}

}
); }