diff --git a/src/Pages/Contact.jsx b/src/Pages/Contact.jsx index 7b727da..72b567b 100644 --- a/src/Pages/Contact.jsx +++ b/src/Pages/Contact.jsx @@ -1,10 +1,21 @@ -import React, { useState } from 'react'; +import React, { useState } from "react"; import { - User, Mail, MessageCircle, CheckCircle, Send, Sparkles, Clock, AlertCircle, -} from 'lucide-react'; + User, + Mail, + MessageCircle, + CheckCircle, + Send, + Sparkles, + Clock, + AlertCircle, +} from "lucide-react"; const ContactForm = () => { - const [formData, setFormData] = useState({ name: '', email: '', message: '' }); + const [formData, setFormData] = useState({ + name: "", + email: "", + message: "", + }); const [submitted, setSubmitted] = useState(false); const [isLoading, setIsLoading] = useState(false); const [focusedField, setFocusedField] = useState(null); @@ -12,23 +23,26 @@ const ContactForm = () => { const handleChange = (e) => { const { name, value } = e.target; - setFormData(prev => ({ ...prev, [name]: value })); - if (errors[name]) setErrors(prev => ({ ...prev, [name]: null })); + setFormData((prev) => ({ ...prev, [name]: value })); + if (errors[name]) setErrors((prev) => ({ ...prev, [name]: null })); }; const getFieldValidation = (field, value) => { switch (field) { - case 'email': + case "email": if (!value.trim()) return "Email is required."; - if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)) return "Please enter a valid email address."; + if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)) + return "Please enter a valid email address."; return null; - case 'name': + case "name": if (!value.trim()) return "Name is required."; - if (value.trim().length < 2) return "Name must be at least 2 characters long."; + if (value.trim().length < 2) + return "Name must be at least 2 characters long."; return null; - case 'message': + case "message": if (!value.trim()) return "Message is required."; - if (value.trim().length < 10) return "Message must be at least 10 characters long."; + if (value.trim().length < 10) + return "Message must be at least 10 characters long."; return null; default: return null; @@ -37,7 +51,7 @@ const ContactForm = () => { const handleSubmit = async () => { const newErrors = {}; - ['name', 'email', 'message'].forEach(field => { + ["name", "email", "message"].forEach((field) => { const error = getFieldValidation(field, formData[field]); if (error) newErrors[field] = error; }); @@ -46,9 +60,9 @@ const ContactForm = () => { setIsLoading(true); try { - await new Promise(resolve => setTimeout(resolve, 2000)); + await new Promise((resolve) => setTimeout(resolve, 2000)); setSubmitted(true); - setFormData({ name: '', email: '', message: '' }); + setFormData({ name: "", email: "", message: "" }); setErrors({}); setTimeout(() => setSubmitted(false), 3000); } catch { @@ -61,23 +75,35 @@ const ContactForm = () => { const handleBlur = (e) => { const { name, value } = e.target; const error = getFieldValidation(name, value); - setErrors(prev => ({ ...prev, [name]: error })); + setErrors((prev) => ({ ...prev, [name]: error })); setFocusedField(null); }; - const isFilled = (value) => value.trim() !== ''; + const isFilled = (value) => value.trim() !== ""; - const renderFormField = (name, type = 'text', icon, placeholder, isTextArea = false) => { + const renderFormField = ( + name, + type = "text", + icon, + placeholder, + isTextArea = false + ) => { const IconComponent = icon; return (
-
- +
+
{isTextArea ? (