'use client'; import { useState, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import Link from 'next/link'; import Header from './Header'; import Footer from './Footer'; import { Button } from './ui/button'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from './ui/card'; import { Input } from './ui/input'; import { Label } from './ui/label'; import { Textarea } from './ui/textarea'; import { Badge } from './ui/badge'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from './ui/select'; import { Phone, Mail, MapPin, Clock, MessageCircle, Send, CheckCircle, AlertCircle, ExternalLink, Building } from 'lucide-react'; import { contactConfig } from '../../lib/useContact'; interface ContactPageClientProps { locale: string; } export default function ContactPageClient({ locale }: ContactPageClientProps) { const { t: tContact } = useTranslation('contact'); const { t: tCommon } = useTranslation('common'); const [language, setLanguage] = useState(locale); const [mounted, setMounted] = useState(false); // 表单状态 const [formData, setFormData] = useState({ name: '', email: '', phone: '', company: '', subject: '', message: '' }); const [isSubmitting, setIsSubmitting] = useState(false); const [submitStatus, setSubmitStatus] = useState<'idle' | 'success' | 'error'>('idle'); useEffect(() => { setMounted(true); setLanguage(locale); }, [locale]); const handleInputChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFormData(prev => ({ ...prev, [name]: value })); }; const handleSelectChange = (value: string) => { setFormData(prev => ({ ...prev, subject: value })); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setIsSubmitting(true); setSubmitStatus('idle'); try { const response = await fetch('https://formspree.io/f/mldbwvwo', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ ...formData, language: locale, source: 'contact_page', }), }); if (response.ok) { setSubmitStatus('success'); setFormData({ name: '', email: '', phone: '', company: '', subject: '', message: '' }); setTimeout(() => setSubmitStatus('idle'), 5000); } else { setSubmitStatus('error'); } } catch (error) { console.error('Form submission error:', error); setSubmitStatus('error'); } finally { setIsSubmitting(false); } }; if (!mounted) { return (
); } return (
{/* Hero Section */}

{tContact('contact.title')}

{tContact('contact.subtitle')}

{tContact('contact.description')}

{/* Quick Contact Bar */}
{/* Main Content */}
{/* Contact Form */}
{tContact('contact.form.title')} {tContact('contact.form.subtitle')}