'use client'; import { useState } from 'react'; import { useRouter } from 'next/navigation'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Label } from '@/components/ui/label'; import { useToast } from '@/components/ui/use-toast'; export function RegisterForm() { const [isLoading, setIsLoading] = useState(false); const [formData, setFormData] = useState({ email: '', name: '', surname: '', password: '', confirmPassword: '', }); const router = useRouter(); const { toast } = useToast(); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (formData.password !== formData.confirmPassword) { toast({ title: 'Error', description: 'Passwords do not match', variant: 'destructive', }); return; } setIsLoading(true); try { const response = await fetch('/api/auth/register', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: formData.email, name: formData.name, surname: formData.surname, password: formData.password, }), }); const data = await response.json(); if (response.ok) { toast({ title: 'Success', description: 'Account created successfully! Please log in.', }); router.push('/'); } else { toast({ title: 'Error', description: data.error || 'Registration failed', variant: 'destructive', }); } } catch (error) { toast({ title: 'Error', description: 'An unexpected error occurred', variant: 'destructive', }); } finally { setIsLoading(false); } }; const handleInputChange = (field: string, value: string) => { setFormData((prev) => ({ ...prev, [field]: value })); }; return ( Create Account Fill in your details to create a new account
handleInputChange('name', e.target.value)} required />
handleInputChange('surname', e.target.value)} required />
handleInputChange('email', e.target.value)} required />
handleInputChange('password', e.target.value)} required minLength={6} />
handleInputChange('confirmPassword', e.target.value)} required minLength={6} />
); }