'use client' import { signIn } from 'next-auth/react' import { useRouter } from 'next/navigation' import { useForm } from 'react-hook-form' import { zodResolver } from '@hookform/resolvers/zod' import * as z from 'zod' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@/components/ui/form' import { Routes } from '@/config/routes' const loginSchema = z.object({ email: z.string().email({ message: 'Invalid email address' }), password: z.string().min(1, { message: 'Password is required' }), }) type LoginFormValues = z.infer export default function LoginForm() { const router = useRouter() const form = useForm({ resolver: zodResolver(loginSchema), defaultValues: { email: '', password: '', }, }) const onSubmit = async (data: LoginFormValues) => { try { const result = await signIn('email-password-login', { redirect: false, email: data.email, password: data.password, }) if (result?.error) { form.setError('root', { type: 'manual', message: 'Invalid email or password', }) } else { router.push(Routes.dashboard) } } catch (error) { console.error('login error:', error) form.setError('root', { type: 'manual', message: 'An unexpected error occurred. Please try again.', }) } } return (
( Email )} /> ( Password )} /> {form.formState.errors.root && (

{form.formState.errors.root.message}

)} ) }