import React, { useState } from 'react'; export default function ContactForm() { const [formData, setFormData] = useState({ name: '', email: '', subject: '', message: '', }); const [errors, setErrors] = useState({}); const [isSubmitting, setIsSubmitting] = useState(false); const [submitMessage, setSubmitMessage] = useState(null); const [hp, setHp] = useState(''); const validate = () => { let newErrors = {}; if (!formData.name) newErrors.name = 'Name is required'; if (!formData.email) { newErrors.email = 'Email is required'; } else if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(formData.email)) { newErrors.email = 'Invalid email address'; } if (!formData.subject) newErrors.subject = 'Subject is required'; if (!formData.message) newErrors.message = 'Message is required'; return newErrors; }; const handleChange = (e) => { const { name, value } = e.target; setFormData({ ...formData, [name]: value }); // Clear error for the field as user types if (errors[name]) { setErrors({ ...errors, [name]: null }); } }; const handleSubmit = async (e) => { e.preventDefault(); setIsSubmitting(true); setSubmitMessage(null); const validationErrors = validate(); setErrors(validationErrors); if (Object.keys(validationErrors).length === 0) { try { // Simulate API call await new Promise(resolve => setTimeout(resolve, 1000)); console.log('Form data submitted:', formData); setSubmitMessage({ type: 'success', text: 'Your message has been sent successfully!' }); setFormData({ name: '', email: '', subject: '', message: '' }); // Clear form } catch (error) { setSubmitMessage({ type: 'error', text: 'There was an error sending your message. Please try again later.' }); } finally { setIsSubmitting(false); } } else { setIsSubmitting(false); setSubmitMessage({ type: 'error', text: 'Please correct the errors in the form.' }); } }; return (
); }