import { useState } from "react"; import { Navigate, useNavigate } from "react-router"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { signIn, useSession } from "@/lib/auth-client"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import ErrorAlert from "@/components/ErrorAlert"; import ErrorMessage from "@/components/ErrorMessage"; import { Loader2 } from "lucide-react"; const loginSchema = z.object({ email: z.email("Please enter a valid email"), password: z.string().min(1, "Password is required"), }); type LoginFormData = z.infer; export default function LoginPage() { const { data: session, isPending } = useSession(); const navigate = useNavigate(); const [serverError, setServerError] = useState(""); const { register, handleSubmit, formState: { errors, isSubmitting }, } = useForm({ resolver: zodResolver(loginSchema), }); if (isPending) { return (
Loading...
); } if (session) { return ; } const onSubmit = async (data: LoginFormData) => { setServerError(""); const { error } = await signIn.email(data); if (error) { setServerError(error.message ?? "Login failed"); return; } navigate("/", { replace: true }); }; return (
H

Welcome back

Sign in to your helpdesk account

Sign in Enter your credentials to continue
{serverError && ( )}
{errors.email && ( )}
{errors.password && ( )}
); }