'use client' import { useState } from 'react' import { cn } from '@sim/emcn' import { AuthField, AuthFormMessage, AuthSubmitButton, PasswordInput, } from '@/app/(auth)/components' interface SetNewPasswordFormProps { token: string | null onSubmit: (password: string) => Promise isSubmitting: boolean statusType: 'success' | 'error' | null statusMessage: string className?: string } export function SetNewPasswordForm({ token, onSubmit, isSubmitting, statusType, statusMessage, className, }: SetNewPasswordFormProps) { const [password, setPassword] = useState('') const [confirmPassword, setConfirmPassword] = useState('') const [validationMessages, setValidationMessages] = useState([]) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() const errors: string[] = [] if (password.length < 8) { errors.push('Password must be at least 8 characters long') } if (password.length > 100) { errors.push('Password must not exceed 100 characters') } if (!/[A-Z]/.test(password)) { errors.push('Password must contain at least one uppercase letter') } if (!/[a-z]/.test(password)) { errors.push('Password must contain at least one lowercase letter') } if (!/[0-9]/.test(password)) { errors.push('Password must contain at least one number') } if (!/[^A-Za-z0-9]/.test(password)) { errors.push('Password must contain at least one special character') } if (password !== confirmPassword) { errors.push('Passwords do not match') } if (errors.length > 0) { setValidationMessages(errors) return } setValidationMessages([]) onSubmit(password) } const hasValidationErrors = validationMessages.length > 0 return (
setPassword(e.target.value)} required placeholder='Enter new password' error={hasValidationErrors} /> setConfirmPassword(e.target.value)} required placeholder='Confirm new password' error={hasValidationErrors} /> {hasValidationErrors && ( {validationMessages.map((error) => (

{error}

))}
)} {statusType && statusMessage && (

{statusMessage}

)}
Reset Password
) }