"use client"; import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; import { Button } from "@/components/ui/button"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, FormDescription, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { RegisterSchema, type RegisterInput } from "@/lib/schemas"; import { registerUser } from "@/lib/actions/auth"; import { useToast } from "@/hooks/use-toast"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { Loader2 } from "lucide-react"; export function RegisterForm() { const { toast } = useToast(); const router = useRouter(); const [isLoading, setIsLoading] = useState(false); const form = useForm({ resolver: zodResolver(RegisterSchema), defaultValues: { name: "", email: "", password: "", confirmPassword: "", referralCode: "", }, }); async function onSubmit(values: RegisterInput) { setIsLoading(true); try { const result = await registerUser(values); if (result.success) { toast({ title: "Registration Complete!", description: result.message, }); router.push('/login'); } else { toast({ title: "Registration Failed", description: result.message, variant: "destructive", }); } } catch (error) { toast({ title: "Error", description: "An unexpected error occurred. Please try again.", variant: "destructive", }); } finally { setIsLoading(false); } } return (
( Full Name )} /> ( Email )} /> ( Password )} /> ( Confirm Password )} /> ( Referral Code (Optional) If you were referred by someone, enter their code here. )} /> ); }