"use client"; import { useState, useEffect } from "react"; import { useRouter } from "next/navigation"; import { useAuth } from "@/context/AuthContext"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Alert, AlertDescription } from "@/components/ui/alert"; import { CalendarDays, AlertCircle, Loader2 } from "lucide-react"; import { ROUTES } from "@/lib/routes"; export default function LoginPage() { const { login, user, isLoading } = useAuth(); const router = useRouter(); const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(""); const [loading, setLoading] = useState(false); useEffect(() => { if (!isLoading && user) { // router.replace(user.role === "manager" ? "/manager" : "/employee"); router.replace(user.role === "manager" ? ROUTES.manager : ROUTES.employee); } }, [user, isLoading, router]); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!username || !password) { setError("Please enter username and password"); return; } setLoading(true); setError(""); const result = await login(username, password); setLoading(false); if (!result.ok) { setError(result.error ?? "Login failed"); } else if (result.ok) { // redirect handled by useEffect } }; if (isLoading) return null; return (
{/* Decorative blobs */}
{/* Logo */}

LeaveFlow

Sign in to your account
setUsername(e.target.value)} placeholder="e.g. emp1" autoComplete="username" style={{ borderColor: "var(--surface-border)", borderRadius: "var(--radius-sm)" }} />
setPassword(e.target.value)} placeholder="••••••••" autoComplete="current-password" style={{ borderColor: "var(--surface-border)", borderRadius: "var(--radius-sm)" }} />
{error && ( {error} )}
); }