'use client'; import { useState } from 'react'; import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@/components/ui/form'; import { useToast } from '@/hooks/use-toast'; const registerSchema = z .object({ email: z.string().email('Please enter a valid email address'), name: z.string().min(2, 'Name must be at least 2 characters'), surname: z.string().min(2, 'Surname must be at least 2 characters'), password: z.string().min(6, 'Password must be at least 6 characters'), confirmPassword: z.string(), }) .refine((data) => data.password === data.confirmPassword, { message: "Passwords don't match", path: ['confirmPassword'], }); type RegisterForm = z.infer; export function RegisterForm() { const [isLoading, setIsLoading] = useState(false); const router = useRouter(); const { toast } = useToast(); const form = useForm({ resolver: zodResolver(registerSchema), defaultValues: { email: '', name: '', surname: '', password: '', confirmPassword: '', }, }); const onSubmit = async (data: RegisterForm) => { setIsLoading(true); try { const response = await fetch('/api/auth/register', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ email: data.email, name: data.name, surname: data.surname, password: data.password, }), }); const result = await response.json(); if (!response.ok) { throw new Error(result.error || 'Registration failed'); } toast({ title: 'Account created!', description: 'Welcome to the table tennis booking system.', }); // Redirect to dashboard after successful registration router.push('/dashboard'); router.refresh(); } catch (error) { toast({ title: 'Registration failed', description: error instanceof Error ? error.message : 'An unexpected error occurred', variant: 'destructive', }); } finally { setIsLoading(false); } }; return ( Create an account Enter your details to create your account
( First Name )} /> ( Last Name )} />
( Email )} /> ( Password )} /> ( Confirm Password )} />
); }