diff --git a/src/pages/contact-us/index.tsx b/src/pages/contact-us/index.tsx index f022e0df..03d5185a 100644 --- a/src/pages/contact-us/index.tsx +++ b/src/pages/contact-us/index.tsx @@ -1,8 +1,92 @@ -import React from "react"; +import React, { useState } from "react"; import Layout from "@theme/Layout"; -import { Mail, MapPin, Phone, Clock } from "lucide-react"; +import { Mail, MapPin, Clock } from "lucide-react"; const ContactUs: React.FC = () => { + const [formData, setFormData] = useState({ + firstName: "", + lastName: "", + email: "", + subject: "", + message: "", + }); + + const [errors, setErrors] = useState({ + firstName: "", + lastName: "", + email: "", + subject: "", + message: "", + }); + + const validate = () => { + const newErrors = { + firstName: "", + lastName: "", + email: "", + subject: "", + message: "", + }; + + if (!formData.firstName) { + newErrors.firstName = "First Name is required."; + } + + if (!formData.lastName) { + newErrors.lastName = "Last Name is required."; + } + + if (!formData.email) { + newErrors.email = "Email is required."; + } else if (!/\S+@\S+\.\S+/.test(formData.email)) { + newErrors.email = "Email is invalid."; + } + + if (!formData.subject) { + newErrors.subject = "Subject is required."; + } + + if (!formData.message) { + newErrors.message = "Message is required."; + } + + return newErrors; + }; + + const handleChange = (e: React.ChangeEvent) => { + const { name, value } = e.target; + setFormData({ + ...formData, + [name]: value, + }); + }; + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + const newErrors = validate(); + if (Object.values(newErrors).some((error) => error)) { + setErrors(newErrors); + } else { + // Form is valid, you can submit it here + console.log("Form submitted successfully:", formData); + setErrors({ + firstName: "", + lastName: "", + email: "", + subject: "", + message: "", + }); + // You can reset the form here if needed + // setFormData({ + // firstName: "", + // lastName: "", + // email: "", + // subject: "", + // message: "", + // }); + } + }; + return ( { Send us a message -
+
@@ -157,10 +245,12 @@ const ContactUs: React.FC = () => { type="email" id="email" name="email" + value={formData.email} + onChange={handleChange} className="w-full px-4 py-3 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent dark:bg-gray-700 dark:text-white" placeholder="your.email@example.com" - required /> + {errors.email &&

{errors.email}

}
@@ -170,8 +260,9 @@ const ContactUs: React.FC = () => { + {errors.subject &&

{errors.subject}

}
@@ -191,10 +283,12 @@ const ContactUs: React.FC = () => { id="message" name="message" rows={6} + value={formData.message} + onChange={handleChange} className="w-full px-4 py-3 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent dark:bg-gray-700 dark:text-white resize-none" placeholder="Tell us more about your inquiry..." - required > + {errors.message &&

{errors.message}

}