"use client"; import { useState, useEffect } from "react"; import ReCAPTCHA from "react-google-recaptcha"; import axios from "axios"; import Layout from "@/components/layout/Layout"; import Link from "next/link"; export default function Contact() { const [formData, setFormData] = useState({ username: "", email: "", subject: "", message: "", }); const [formErrors, setFormErrors] = useState({}); const [captchaToken, setCaptchaToken] = useState(null); const [alert, setAlert] = useState({ show: false, type: "", message: "" }); 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.username.trim()) errors.username = "Name is required."; if (!formData.email.trim()) errors.email = "Email is required."; if (!formData.subject.trim()) errors.subject = "Subject is required."; 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: `Subject: ${formData.subject}Message: ${formData.message}`, to: "info@zipvan.ca", senderName: "ZipVan 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: res?.data?.message || "Message sent successfully!", }); setFormData({ username: "", email: "", subject: "", message: "" }); setCaptchaToken(null); setFormErrors({}); } catch (error) { setAlert({ show: true, type: "danger", message: "Failed to send message. Please try again later.", }); } }; // Auto-hide alert useEffect(() => { if (alert.show) { const timer = setTimeout(() => { setAlert((prev) => ({ ...prev, show: false })); }, 5000); return () => clearTimeout(timer); } }, [alert.show]); return ( <> {/* Use g-4 to add spacing between all cards responsively */} Location 55 Main Street, 2nd Block melbourne, Australia Email info@zipvan.ca Call Us (647) 360-2075 {/* form */} Get In Touch Contact Zip Van We’re Here to Help Get in touch with us for bookings, pricing, or any questions. We’re here to help you move with ease. {alert.show && ( {alert.message} )} {formErrors.username && ( {formErrors.username} )} {formErrors.email && ( {formErrors.email} )} {formErrors.subject && ( {formErrors.subject} )} {formErrors.message && ( {formErrors.message} )} {formErrors.captcha && ( {formErrors.captcha} )} Send Message > ); }
Get in touch with us for bookings, pricing, or any questions. We’re here to help you move with ease.