"use client"; import React, { useState, useEffect } from "react"; import ReCAPTCHA from "react-google-recaptcha"; import axios from "axios"; const ContactSection = () => { const [formData, setFormData] = useState({ name: "", phone: "", email: "", service: "", message: "", }); const [formErrors, setFormErrors] = useState({}); const [captchaToken, setCaptchaToken] = useState(null); const [alert, setAlert] = useState({ show: false, type: "", message: "" }); const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFormData((prev) => ({ ...prev, [name]: value })); }; const handleCaptchaChange = (token: string | null) => { setCaptchaToken(token); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); const errors: any = {}; if (!formData.name.trim()) errors.name = "Name is required."; if (!formData.phone.trim()) errors.phone = "Phone is required."; if (!formData.email.trim()) errors.email = "Email is required."; if (!formData.service.trim()) errors.service = "Please select a service."; 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 = { ...formData, message: `Service: ${formData.service}

Message: ${formData.message}`, to: "info@metatroncubesolutions.com", senderName: "Metatroncube Contact Page", recaptchaToken: captchaToken, }; try { const res = await axios.post("https://mailserver.metatronnest.com/send", emailData, { headers: { "Content-Type": "application/json" }, }); setAlert({ show: true, type: "success", message: "Thank you! Your message has been sent successfully.", }); setFormData({ name: "", phone: "", email: "", service: "", message: "", }); setCaptchaToken(null); setFormErrors({}); } catch (error) { console.error("❌ Error sending email:", error); setAlert({ show: true, type: "danger", message: "Failed to send message. Please try again later.", }); } }; useEffect(() => { if (alert.show) { const timer = setTimeout(() => { setAlert((prev) => ({ ...prev, show: false })); }, 5000); return () => clearTimeout(timer); } }, [alert.show]); return ( <>
Let's Connect

Drop us a Line.

Whether you have a question, a project idea, or just want to chat about your digital needs, our team is here to listen and provide tailored solutions. Reach out to Metatroncube Software Solution and start your journey towards innovative digital success.

Call Anytime
+1-647-679-7651
Location
Waterloo, Ontario Canada
{alert.show && (
{alert.message}
)}
{formErrors.name && {formErrors.name}}
{formErrors.email && {formErrors.email}}
{formErrors.phone && {formErrors.phone}}
{formErrors.service && {formErrors.service}}
{formErrors.message && {formErrors.message}}
{formErrors.captcha && {formErrors.captcha}}
); }; export default ContactSection;