import React, { useState } from "react"; import Input from "../Input/Input"; import Button from "../Input/Button"; interface ForgotPasswordProps { email?: string; general?: string; } interface SubmitProps { onSubmit: () => void; } const ForgotPasswordForm: React.FC = ({ onSubmit }) => { const [email, setEmail] = useState(""); const [errors, setErrors] = useState({}); const confirmPasswordReset = () => { alert(`Email has been sent`); }; const handleEmailChange = (e: React.ChangeEvent) => { setEmail(e.target.value); if (errors.email) { setErrors((prev) => ({ ...prev, email: undefined })); } }; const validateEmail = (): boolean => { const newErrors: ForgotPasswordProps = {}; if (!email) { newErrors.email = "Email is required."; } else if (!/\S+@\S+\.\S+/.test(email)) { newErrors.email = "Please enter a valid email address."; } setErrors(newErrors); return Object.keys(newErrors).length === 0; }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (validateEmail()) { try { const response = await fetch(`/api/user/forgot_password/${email}`, { method: "POST", headers: { "Content-Type": "application/json", }, credentials: "include", }); if (!response.ok) { const data = await response.json(); throw new Error( data.message || "An error has occurred while resetting" ); } else { confirmPasswordReset(); } } catch (error: any) { console.error("Password reset error:", error.message); setErrors((prev) => ({ ...prev, general: error.message || "An unexpected error occurred.", })); } } }; return (

Forgot Password

{errors.general && (

{errors.general}

)} {errors.email && (

{errors.email}

)}
); }; export default ForgotPasswordForm;