import { useState } from 'react'; import { Link } from 'react-router-dom'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; import { Mail, ArrowLeft, CheckCircle } from 'lucide-react'; import { AuthLayout } from '@app/layouts/AuthLayout'; import { Button } from '@components/atoms/Button'; import { FormField } from '@components/molecules/FormField'; import { Alert } from '@components/molecules/Alert'; import { authApi } from '@services/api/auth.api'; const forgotPasswordSchema = z.object({ email: z.string().email('Email inválido'), }); type ForgotPasswordFormData = z.infer; export default function ForgotPasswordPage() { const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(null); const [isSuccess, setIsSuccess] = useState(false); const { register, handleSubmit, formState: { errors }, } = useForm({ resolver: zodResolver(forgotPasswordSchema), }); const onSubmit = async (data: ForgotPasswordFormData) => { setIsLoading(true); setError(null); try { await authApi.forgotPassword(data.email); setIsSuccess(true); } catch (err) { setError(err instanceof Error ? err.message : 'Error al enviar el correo'); } finally { setIsLoading(false); } }; if (isSuccess) { return (

Hemos enviado un correo con instrucciones para restablecer tu contraseña. Si no lo encuentras, revisa tu carpeta de spam.

Volver al inicio de sesión
); } return ( {error && ( setError(null)} className="mb-4"> {error} )}
} {...register('email')} /> Volver al inicio de sesión
); }