"use client"; import { useState, useTransition } from "react"; import { useRouter } from "next/navigation"; import Link from "next/link"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { Flame } from "lucide-react"; import { registerSchema, type RegisterInput } from "@/schemas/auth.schema"; import { registerUser } from "./actions"; import { loginAction } from "../login/actions"; 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 { APP_NAME } from "@/lib/constants"; export default function RegisterPage() { const router = useRouter(); const [error, setError] = useState(null); const [isPending, startTransition] = useTransition(); const form = useForm({ resolver: zodResolver(registerSchema) as any, defaultValues: { name: "", email: "", password: "", confirmPassword: "" }, }); function onSubmit(values: RegisterInput) { setError(null); startTransition(async () => { const result = await registerUser(values); if (!result.success) { setError(result.error); return; } // Auto-login after registration using server action try { const loginResult = await loginAction({ email: values.email, password: values.password, }); if (loginResult?.error) { setError("Account created but sign in failed. Please try logging in."); return; } router.push("/dashboard"); router.refresh(); } catch { // Redirect from server action router.push("/dashboard"); router.refresh(); } }); } return ( <>

{APP_NAME}

Create an account to get started

Create Account Fill in your details below
{error && (
{error}
)} ( Name )} /> ( Email )} /> ( Password )} /> ( Confirm Password )} />

Already have an account?{" "} Sign in

); }