"use client"; import React, { useState, useRef } from "react"; import SimpleReactValidator from "simple-react-validator"; import ReCAPTCHA from "react-google-recaptcha"; import axios from "axios"; const ContactForm = () => { const [forms, setForms] = useState({ name: "", email: "", subject: "", phone: "", message: "", }); const [validator] = useState( new SimpleReactValidator({ className: "errorMessage", }) ); const recaptchaRef = useRef(null); const [recaptchaToken, setRecaptchaToken] = useState(null); const RECAPTCHA_SITEKEY = "6Lc5wKUrAAAAAKqIviSUY2PsqLQ8Bq8CJJaHFA_f"; const changeHandler = (e) => { const { name, value } = e.target; setForms({ ...forms, [name]: value }); if (validator.allValid()) { validator.hideMessages(); } else { validator.showMessages(); } }; const handleRecaptcha = (token) => { setRecaptchaToken(token); }; const submitHandler = async (e) => { e.preventDefault(); if (validator.allValid()) { validator.hideMessages(); const emailPayload = { name: forms.name, email: forms.email, phone: forms.phone, subject: forms.subject, message: `Subject: ${forms.subject}\n\nMessage:\n${forms.message}`, to: "your-receiving-email@example.com", senderName: "Website Contact Form", recaptchaToken: recaptchaToken, }; try { const response = await axios.post( "https://mailserver.metatronnest.com/send", emailPayload, { headers: { "Content-Type": "application/json" } } ); alert(response?.data?.message || "Message sent successfully!"); setForms({ name: "", email: "", subject: "", phone: "", message: "", }); validator.hideMessages(); if (recaptchaRef.current) { try { recaptchaRef.current.reset(); } catch (err) { } } setRecaptchaToken(null); } catch (err) { alert("Failed to send message. Please try again later."); } } else { validator.showMessages(); setForms((prev) => ({ ...prev })); } }; return (
); }; export default ContactForm;