"use client"; import React, { useRef, useState } from "react"; import { toast } from "react-toastify"; import ReCAPTCHA from "react-google-recaptcha"; import axios from "axios"; import "react-toastify/dist/ReactToastify.css"; import AnimatedText from "../common/AnimatedText"; export default function ContactForm() { const form = useRef(); const [formData, setFormData] = useState({ firstName: "", email: "", number: "", message: "", product: "", }); const [formErrors, setFormErrors] = useState({}); const [captchaToken, setCaptchaToken] = useState(null); const handleChange = (e) => { const { name, value } = e.target; setFormData((prev) => ({ ...prev, [name]: value, })); }; const handleCaptchaChange = (token) => { setCaptchaToken(token); }; const handleSubmit = async (e) => { e.preventDefault(); const errors = {}; if (!formData.firstName.trim()) errors.firstName = "First name is required."; if (!formData.email.trim()) errors.email = "Email is required."; if (!formData.number.trim()) errors.number = "Phone number is required."; if (!formData.product.trim()) errors.product = "Please select a product."; if (!formData.message.trim()) errors.message = "Message is required."; if (!captchaToken) errors.captcha = "Please verify the CAPTCHA."; setFormErrors(errors); if (Object.keys(errors).length > 0) return; const emailData = { name: formData.firstName, email: formData.email, phone: formData.number, service: formData.product, message: `Message: ${formData.message}`, to: "info@cibusindustries.com", senderName: "Cibus Industry", recaptchaToken: captchaToken, }; try { const res = await axios.post( "https://mailserver.metatronnest.com/send", emailData, { headers: { "Content-Type": "application/json" } } ); toast.success(res?.data?.message || "Message sent successfully!", { position: "bottom-right", autoClose: 5000, }); setFormData({ firstName: "", email: "", number: "", message: "", product: "", }); setCaptchaToken(null); setFormErrors({}); form.current.reset(); } catch (err) { toast.error("Failed to send message. Please try again later.", { position: "bottom-right", autoClose: 5000, }); } }; return (

{formErrors.firstName && (
{formErrors.firstName}
)}
{formErrors.email && (
{formErrors.email}
)}
{formErrors.number && (
{formErrors.number}
)}
{formErrors.product && (
{formErrors.product}
)}