"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { useAuth } from "@/providers/auth-provider"; import { useLogin } from "@/modules/admin/hooks"; import { loginSchema, type LoginInput } from "@/modules/admin/schemas"; import { useToast } from "@/hooks/use-toast"; import Link from "next/link"; export default function LoginPage() { const router = useRouter(); const { login: authLogin } = useAuth(); const { toast } = useToast(); const loginMutation = useLogin(); const { register, handleSubmit, formState: { errors }, } = useForm({ resolver: zodResolver(loginSchema), }); const onSubmit = async (data: LoginInput) => { try { const response = await loginMutation.mutateAsync(data); if (response.data.token) { authLogin(response.data.token, { email: response.data.admin.email, username: response.data.admin.name }); toast({ title: "Login successful", description: "Welcome back!", }); // router.push is handled by authLogin } } catch (error: any) { toast({ title: "Login failed", description: error.response?.data?.message || "Invalid credentials", variant: "destructive", }); } }; return (
Admin CSA Enter your credentials to access the dashboard
{errors.email && (

{errors.email.message}

)}
{errors.password && (

{errors.password.message}

)}

Don't have an account?{" "} Register

); }