"use client"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { useRouter } from "next/navigation"; import Link from "next/link"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle, CardDescription, } from "@/components/ui/card"; import { Form, FormField, FormItem, FormLabel, FormControl, FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { LoginSchema, loginUser } from "@/lib/api"; import { useAuth } from "@/hooks/use-auth"; import { useState } from "react"; export default function LoginPage() { const router = useRouter(); const { setToken } = useAuth(); const [error, setError] = useState(null); const form = useForm>({ resolver: zodResolver(LoginSchema), defaultValues: { username: "", password: "" }, }); async function onSubmit(values: z.infer) { try { setError(null); const { token } = await loginUser(values); setToken(token); router.push("/"); // Redirect to homepage on successful login } catch (err) { setError("Invalid username or password."); } } return ( Login Enter your credentials to access your account.
{/* ... Form fields for username and password ... */} ( Username )} /> ( Password )} /> {error && (

{error}

)}

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

); }