import React, { useState } from 'react' import api from '../api' import Toast from '../components/Toast' import '../styles/global.css' export default function Contact() { const [formData, setFormData] = useState({ full_name: '', email: '', phone: '', subject: '', message: '', }) const [loading, setLoading] = useState(false) const [submitted, setSubmitted] = useState(false) const [toast, setToast] = useState(null) const [errors, setErrors] = useState({}) const handleChange = (e) => { setFormData({ ...formData, [e.target.name]: e.target.value, }) // Clear error for this field when user types if (errors[e.target.name]) { setErrors({ ...errors, [e.target.name]: '' }) } } const validateForm = () => { const newErrors = {} if (!formData.full_name.trim()) { newErrors.full_name = 'Full name is required' } if (!formData.email.trim()) { newErrors.email = 'Email is required' } else if (!/\S+@\S+\.\S+/.test(formData.email)) { newErrors.email = 'Please enter a valid email address' } if (!formData.subject.trim()) { newErrors.subject = 'Subject is required' } if (!formData.message.trim()) { newErrors.message = 'Message is required' } else if (formData.message.trim().length < 10) { newErrors.message = 'Message must be at least 10 characters' } setErrors(newErrors) return Object.keys(newErrors).length === 0 } const handleSubmit = async (e) => { e.preventDefault() if (!validateForm()) { setToast({ type: 'error', message: 'Please fix the errors in the form' }) return } setLoading(true) try { await api.post('/contact', formData) setSubmitted(true) setFormData({ full_name: '', email: '', phone: '', subject: '', message: '', }) setErrors({}) setToast({ type: 'success', message: 'Message sent successfully! We\'ll get back to you soon.' }) setTimeout(() => { setSubmitted(false) }, 5000) } catch (error) { console.error('Error sending message:', error) setToast({ type: 'error', message: error.response?.data?.detail || 'Error sending message. Please try again.' }) } finally { setLoading(false) } } return (
) }