"use client"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { settingsData } from "@/redux/reducer/settingSlice"; import { t } from "@/utils"; import { useState } from "react"; import { FaInstagram, FaFacebook, FaLinkedin, FaPinterest, } from "react-icons/fa"; import { GrLocation } from "react-icons/gr"; import { RiMailSendLine } from "react-icons/ri"; import { useSelector } from "react-redux"; import { TbPhoneCall } from "react-icons/tb"; import { FaSquareXTwitter } from "react-icons/fa6"; import { CurrentLanguageData } from "@/redux/reducer/languageSlice"; import { contactUsApi } from "@/utils/api"; import { toast } from "sonner"; import { Button } from "@/components/ui/button"; import { Loader2 } from "lucide-react"; import Layout from "@/components/Layout/Layout"; import BreadCrumb from "@/components/BreadCrumb/BreadCrumb"; import parse from "html-react-parser"; import Link from "next/link"; const ContactUs = () => { const CurrentLanguage = useSelector(CurrentLanguageData); const settings = useSelector(settingsData); const [IsLoading, setIsLoading] = useState(false); const contactUs = settings?.contact_us; const [formData, setFormData] = useState({ name: "", email: "", subject: "", message: "", }); const [errors, setErrors] = useState({ name: "", email: "", subject: "", message: "", }); const validateEmail = (email) => { const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return emailRegex.test(email); }; const handleChange = (e) => { const { name, value } = e.target; setFormData({ ...formData, [name]: value, }); // Clear error when user starts typing setErrors({ ...errors, [name]: "", }); }; const validateForm = () => { let isValid = true; const newErrors = {}; // Name validation if (!formData.name.trim()) { newErrors.name = t("nameRequired"); isValid = false; } // Email validation if (!formData.email.trim()) { newErrors.email = t("emailRequired"); isValid = false; } else if (!validateEmail(formData.email)) { newErrors.email = t("invalidEmail"); isValid = false; } // Subject validation if (!formData.subject.trim()) { newErrors.subject = t("subjectRequired"); isValid = false; } // Message validation if (!formData.message.trim()) { newErrors.message = t("messageRequired"); isValid = false; } setErrors(newErrors); return isValid; }; const handleSubmit = async (e) => { e.preventDefault(); if (validateForm()) { try { setIsLoading(true); const res = await contactUsApi.contactUs(formData); if (res?.data?.error === false) { toast.success(t("thankForContacting")); setFormData({ name: "", email: "", subject: "", message: "", }); } else { toast.error(t("errorOccurred")); } } catch (error) { toast.error(t("errorOccurred")); console.log(error); } finally { setIsLoading(false); } } }; return (

{t("contactUs")}

{/* Contact Form */}

{t("sendMessage")}

{t("contactIntro")}

{errors.name && ( {errors.name} )}
{errors.email && ( {errors.email} )}
{errors.subject && ( {errors.subject} )}