'use client' 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 { signIn } from 'next-auth/react' import { Checkbox } from '@/components/ui/checkbox' import { Routes } from '@/config/routes' const registerSchema = z.object({ name: z .string() .min(2, { message: 'Name must be at least 2 characters long' }), email: z.string().email({ message: 'Invalid email address' }), password: z .string() .min(8, { message: 'Password must be at least 8 characters long' }), phone: z.string().optional(), marketingOptIn: z.boolean().optional().default(true), }) type RegisterFormValues = z.infer export default function RegisterForm() { const router = useRouter() const form = useForm({ resolver: zodResolver(registerSchema), defaultValues: { name: '', email: '', password: '', phone: '', marketingOptIn: true, }, }) const onSubmit = async (data: RegisterFormValues) => { form.clearErrors() try { const result = await signIn('email-password-register', { redirect: false, email: data.email, password: data.password, name: data.name, phone: data.phone, marketingOptIn: data.marketingOptIn, }) if (result?.error) { console.log(result.error) form.setError('root', { type: 'manual', message: 'Failed to create account', }) } else { router.push(`${Routes.verifyEmail}?verificationEmailSent=1`) } } catch (error) { console.error('register error:', error) form.setError('root', { type: 'manual', message: 'An unexpected error occurred. Please try again.', }) } } return (
( Full Name )} /> ( Email )} /> ( Password )} /> ( Phone (optional) )} /> {form.formState.errors.root && (

{form.formState.errors.root.message}

)} (
I want to receive updates about new features and promotions
)} /> ) }