'use client' import { useState } from 'react' import { siteConfig } from '@/config/site' import { localePath, type Locale } from '@/lib/i18n' import type { getContactContent } from '@/lib/payload-content' type ContactViewProps = { content: Awaited> contactEmail: string footerAddress: string webmailHref: string locale: Locale } export default function ContactView({ content: pageContent, contactEmail, footerAddress, webmailHref, locale }: ContactViewProps) { // WHY placeholder-csere: a GDPR-szöveg (Payload Contact.form.fields.gdpr.label) // egy {privacyHref} tokent tartalmaz a beágyazott linkben, mert a // tényleges adatvédelmi oldal útvonala nyelvenként eltér (MITHOME-114) — a // korábbi, hardcode-olt "/adatkezelesi-tajekoztato" út sosem egyezett a // valódi oldallal, ez javítja azt is. const gdprLabel = pageContent.form.fields.gdpr.label.replace('{privacyHref}', localePath(locale, 'privacy')) const [formData, setFormData] = useState({ name: '', email: '', subject: '', message: '', gdprConsent: false }) const [isSubmitting, setIsSubmitting] = useState(false) const [submitStatus, setSubmitStatus] = useState<'idle' | 'success' | 'error'>('idle') const [errors, setErrors] = useState>({}) const validateForm = () => { const newErrors: Record = {} if (!formData.name.trim()) { newErrors.name = pageContent.form.fields.name.error } if (!formData.email.trim()) { newErrors.email = pageContent.form.fields.email.errorRequired } else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(formData.email)) { newErrors.email = pageContent.form.fields.email.errorInvalid } if (!formData.subject.trim()) { newErrors.subject = pageContent.form.fields.subject.error } if (!formData.message.trim()) { newErrors.message = pageContent.form.fields.message.errorRequired } else if (formData.message.trim().length < 10) { newErrors.message = pageContent.form.fields.message.errorMinLength } if (!formData.gdprConsent) { newErrors.gdprConsent = pageContent.form.fields.gdpr.error } setErrors(newErrors) return Object.keys(newErrors).length === 0 } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() if (!validateForm()) { return } setIsSubmitting(true) setSubmitStatus('idle') try { const response = await fetch('/api/contact', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(formData), }) if (response.ok) { setSubmitStatus('success') setFormData({ name: '', email: '', subject: '', message: '', gdprConsent: false }) } else { setSubmitStatus('error') } } catch (error) { console.error('Form submission error:', error) setSubmitStatus('error') } finally { setIsSubmitting(false) } } const handleInputChange = (e: React.ChangeEvent) => { const { name, value, type } = e.target setFormData(prev => ({ ...prev, [name]: type === 'checkbox' ? (e.target as HTMLInputElement).checked : value })) if (errors[name]) { setErrors(prev => ({ ...prev, [name]: '' })) } } return (
{/* Hero Section */}

{pageContent.hero.title}

{pageContent.hero.subtitle}

{/* Contact Form */}

{pageContent.form.title}

{submitStatus === 'success' && (

✅ {pageContent.form.successMessage}

)} {submitStatus === 'error' && (

❌ {pageContent.form.errorMessage.replace('{email}', contactEmail)}

)}
{errors.name &&

{errors.name}

}
{errors.email &&

{errors.email}

}
{errors.subject &&

{errors.subject}

}