import { useEffect, useState } from 'react' import { useNavigate } from 'react-router-dom' import { useAuth } from '@/context/AuthContext' import { useWorkspace } from '@/context/WorkspaceContext' import { useTranslation } from '@/i18n' import { LanguageToggle } from '@/components/layout/LanguageToggle' import './auth.css' export function Auth() { const { login, register, isAuthenticated } = useAuth() const { isLoading: wsLoading } = useWorkspace() const { t } = useTranslation() const navigate = useNavigate() const [isRegister, setIsRegister] = useState(false) const [email, setEmail] = useState('') const [password, setPassword] = useState('') const [displayName, setDisplayName] = useState('') const [error, setError] = useState(null) useEffect(() => { if (isAuthenticated && !wsLoading) { navigate('/', { replace: true }) } }, [isAuthenticated, wsLoading, navigate]) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setError(null) try { if (isRegister) { await register({ email, password, displayName }) navigate('/', { replace: true }) } else { await login({ email, password }) navigate('/', { replace: true }) } } catch (err: unknown) { setError(err instanceof Error ? err.message : t('auth.genericError')) } } // Switching tabs clears any error from the previous tab's attempt — a // failed login's error text should not linger, confusingly, once the // person has moved on to creating an account (or back). const switchTab = (register: boolean) => { setIsRegister(register) setError(null) } return (

{isRegister ? t('auth.createAccountTitle') : t('auth.loginTitle')}

void handleSubmit(e)}> {isRegister && (
setDisplayName(e.target.value)} />
)}
setEmail(e.target.value)} />
setPassword(e.target.value)} />
{error && (

{error}

)}
) }