import React, { useState } from 'react'; import { Link } from 'react-router-dom'; import { AuthLayout } from '../components/AuthLayout'; import { AuthInput } from '../components/AuthInput'; import { AuthButton } from '../components/AuthButton'; import { usePasswordReset } from '../hooks/usePasswordReset'; import type { ForgotPasswordFormData } from '../types'; export function ForgotPasswordPage() { const { handleRequestReset, loading, error, success } = usePasswordReset(); const [formData, setFormData] = useState({ email: '', }); const [errors, setErrors] = useState< Partial> >({}); const validate = (): boolean => { const newErrors: Partial> = {}; if (!formData.email) { newErrors.email = 'Email requis'; } else if (!/\S+@\S+\.\S+/.test(formData.email)) { newErrors.email = 'Email invalide'; } setErrors(newErrors); return Object.keys(newErrors).length === 0; }; const handleChange = (field: keyof ForgotPasswordFormData, value: string) => { setFormData({ ...formData, [field]: value }); // Clear error for this field when user starts typing if (errors[field]) { setErrors({ ...errors, [field]: undefined }); } }; const handleBlur = (field: keyof ForgotPasswordFormData) => { const value = formData[field]; let error: string | undefined; if (field === 'email') { if (!value) { error = 'Email requis'; } else if (!/\S+@\S+\.\S+/.test(value)) { error = 'Email invalide'; } } if (error) { setErrors({ ...errors, [field]: error }); } else { setErrors({ ...errors, [field]: undefined }); } }; const onSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (validate()) { await handleRequestReset(formData); } }; return ( {success ? (

Email envoyé !

Un lien de réinitialisation a été envoyé à {formData.email}

Veuillez vérifier votre boîte mail et cliquer sur le lien pour réinitialiser votre mot de passe.

Retour à la connexion
) : (
{error && (
{error.message}
)} handleChange('email', e.target.value)} onBlur={() => handleBlur('email')} error={errors.email} required autoComplete="email" /> Envoyer le lien de réinitialisation )}
); } export default ForgotPasswordPage;