'use client'; import IconLockDots from '@/components/icon/icon-lock-dots'; import IconMail from '@/components/icon/icon-mail'; import IconEye from '@/components/icon/icon-eye'; import IconUser from '@/components/icon/icon-user'; import { useRouter } from 'next/navigation'; import React, { useState } from 'react'; import axios from 'axios'; import Cookies from 'universal-cookie'; import { buildApiUrl } from '@/utils/BaseUrl.utils'; const cookies = new Cookies(); const SignupForm = () => { const router = useRouter(); const [formData, setFormData] = useState({ name: '', email: '', password: '', confirmPassword: '', }); const [loading, setLoading] = useState(false); const [showPassword, setShowPassword] = useState(false); const [errors, setErrors] = useState<{ name?: string; email?: string; password?: string; confirmPassword?: string }>({}); const [generalError, setGeneralError] = useState(''); const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFormData((prev) => ({ ...prev, [name]: value })); setErrors((prev) => ({ ...prev, [name]: '' })); setGeneralError(''); }; const validate = () => { const newErrors: { name?: string; email?: string; password?: string; confirmPassword?: string } = {}; if (!formData.name.trim()) newErrors.name = 'Name is required'; if (!formData.email.trim()) newErrors.email = 'Email is required'; if (!formData.password.trim()) newErrors.password = 'Password is required'; if (formData.password !== formData.confirmPassword) newErrors.confirmPassword = 'Passwords do not match'; return newErrors; }; const submitForm = async (e: React.FormEvent) => { e.preventDefault(); const validation = validate(); if (Object.keys(validation).length > 0) { setErrors(validation); return; } setLoading(true); setGeneralError(''); try { const payload = { name: formData.name, email: formData.email, password: formData.password }; const response = await axios.post(buildApiUrl('auth/register'), payload); if (response.data.success && response.data.data?.token) { cookies.set('token', response.data.data.token, { path: '/' }); cookies.set('user', JSON.stringify(response.data.data.user), { path: '/' }); router.push('/'); return; } setGeneralError(response.data.message || 'Unable to register'); } catch (error: any) { console.error('Signup error', error); const serverMessage = error.response?.data?.message || error.response?.data?.error || error.message; setGeneralError(serverMessage || 'Unable to register'); } finally { setLoading(false); } }; return (
{generalError &&

{generalError}

}
{errors.name &&

{errors.name}

}
{errors.email &&

{errors.email}

}
{errors.password &&

{errors.password}

}
{errors.confirmPassword &&

{errors.confirmPassword}

}
); }; export default SignupForm;