import { useState, type FormEvent } from 'react'; import { Navigate, useNavigate } from 'react-router-dom'; import { useAuth } from '../auth/context'; import { Button } from '../components/buttons'; import { Card, Input } from '../components/reusable'; import { getDefaultRoute } from '../auth/ProtectedRoute'; /** Login gate. Redirects to default route once authenticated. */ export function LoginPage() { const { authed, login, roles, isAdmin } = useAuth(); const navigate = useNavigate(); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [busy, setBusy] = useState(false); const [error, setError] = useState(null); if (authed) return ; async function submit(e: FormEvent) { e.preventDefault(); setBusy(true); setError(null); try { await login(email, password); // Wait for a tick so useAuth state updates (if necessary) or we can just navigate to root // which will redirect. But since we need the updated roles, navigating to root is safest. navigate('/', { replace: true }); } catch (err) { setError((err as { message?: string })?.message ?? 'Login failed'); } finally { setBusy(false); } } return (

Krishna Sales

setEmail(e.target.value)} required autoFocus /> setPassword(e.target.value)} required /> {error &&
{error}
}
); }