import { useTranslation } from 'react-i18next'; export interface SignupFieldErrors { name?: string email?: string password?: string confirmPassword?: string } export interface SignupValidationResult { isValid: boolean error: string | null fieldErrors?: SignupFieldErrors } export const useSignupFormValidation = () => { const { t } = useTranslation(); const validateSignupForm = ( email: string, password: string, confirmPassword: string, name?: string ): SignupValidationResult => { const fieldErrors: SignupFieldErrors = {}; // Validate name if (name !== undefined && name !== null && !name.trim()) { fieldErrors.name = t('signup.nameRequired', 'Name is required'); } // Validate email const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!email) { fieldErrors.email = t('signup.emailRequired', 'Email is required'); } else if (!emailRegex.test(email)) { fieldErrors.email = t('signup.invalidEmail'); } // Validate password if (!password) { fieldErrors.password = t('signup.passwordRequired', 'Password is required'); } else if (password.length < 6) { fieldErrors.password = t('signup.passwordTooShort'); } // Validate confirm password if (!confirmPassword) { fieldErrors.confirmPassword = t('signup.confirmPasswordRequired', 'Please confirm your password'); } else if (password !== confirmPassword) { fieldErrors.confirmPassword = t('signup.passwordsDoNotMatch'); } const hasErrors = Object.keys(fieldErrors).length > 0; return { isValid: !hasErrors, error: null, // Don't show generic error, field errors are more specific fieldErrors: hasErrors ? fieldErrors : undefined }; }; return { validateSignupForm }; };