"use client" import { useState } from "react" import { Loader2 } from "lucide-react" import { authClient } from "@/lib/auth-client" import { signupSchema } from "@/lib/auth/validation" import SocialButtons from "./social-buttons" import PasswordStrengthMeter from "./password-strength" import Link from "next/link" interface SignupFormStepProps { onSuccess: (email: string) => void } export default function SignupFormStep({ onSuccess }: SignupFormStepProps) { const [name, setName] = useState("") const [email, setEmail] = useState("") const [password, setPassword] = useState("") const [errors, setErrors] = useState>({}) const [serverError, setServerError] = useState("") const [isLoading, setIsLoading] = useState(false) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setErrors({}) setServerError("") const result = signupSchema.safeParse({ name, email, password }) if (!result.success) { const fieldErrors: Record = {} result.error.issues.forEach((issue) => { const field = issue.path[0] as string fieldErrors[field] = issue.message }) setErrors(fieldErrors) return } setIsLoading(true) const { error } = await authClient.signUp.email({ name, email, password, }) setIsLoading(false) if (error) { setServerError( error.message || "Something went wrong. Please try again.", ) return } onSuccess(email) } return (

Create your account

Choose how you'd like to sign up

or use email
{serverError && (
{serverError}
)}
setName(e.target.value)} placeholder="Your name" className="w-full px-3 py-2.5 rounded-lg border border-white/10 bg-white/[0.03] text-[#ebe4f1] text-sm placeholder:text-[#ebe4f1]/40 outline-none focus:border-[#eb3779] focus:ring-2 focus:ring-[#eb3779]/50 transition-colors" /> {errors.name && (

{errors.name}

)}
setEmail(e.target.value)} placeholder="you@example.com" className="w-full px-3 py-2.5 rounded-lg border border-white/10 bg-white/[0.03] text-[#ebe4f1] text-sm placeholder:text-[#ebe4f1]/40 outline-none focus:border-[#eb3779] focus:ring-2 focus:ring-[#eb3779]/50 transition-colors" /> {errors.email && (

{errors.email}

)}
setPassword(e.target.value)} placeholder="Min. 10 characters" className="w-full px-3 py-2.5 rounded-lg border border-white/10 bg-white/[0.03] text-[#ebe4f1] text-sm placeholder:text-[#ebe4f1]/40 outline-none focus:border-[#eb3779] focus:ring-2 focus:ring-[#eb3779]/50 transition-colors" /> {errors.password && (

{errors.password}

)}

Already have an account?{" "} Sign in

) }