import { useMemo, useState } from 'react'; import { X } from 'lucide-react'; import { useAuth } from '../contexts/AuthContext'; import { useLanguage } from '../contexts/LanguageContext'; interface AuthModalProps { onClose: () => void; mandatory?: boolean; } export default function AuthModal({ onClose, mandatory = false }: AuthModalProps) { const { signIn, signUp, beginGoogleOAuth, authPhase, authError } = useAuth(); const { t } = useLanguage(); const [mode, setMode] = useState<'signin' | 'signup'>('signin'); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [confirmPassword, setConfirmPassword] = useState(''); const [localError, setLocalError] = useState(''); const isBusy = useMemo( () => ['email_signing_in', 'email_signing_up', 'oauth_redirecting', 'oauth_exchanging'].includes(authPhase), [authPhase] ); const submitText = mode === 'signup' ? t.auth.signUp : t.auth.signIn; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLocalError(''); if (mode === 'signup') { if (password.length < 6) { setLocalError(t.auth.passwordHint); return; } if (password !== confirmPassword) { setLocalError(t.auth.passwordMismatch); return; } } const result = mode === 'signup' ? await signUp(email, password) : await signIn(email, password); if (!result.error) { onClose(); } }; const handleGoogleOAuth = async () => { await beginGoogleOAuth(); }; return (