import { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Helmet } from 'react-helmet-async'; import { Mail, Send, CheckCircle, AlertCircle, Loader2 } from 'lucide-react'; import { isAxiosError } from 'axios'; import SEOHead from '@/components/seo/SEOHead'; import { generateWebPage, getSiteOrigin } from '@/utils/seo'; import { getApiClient } from '@/services/api'; const CONTACT_EMAIL = 'support@dociva.io'; const API_BASE = import.meta.env.VITE_API_URL || ''; const api = getApiClient(); type Category = 'general' | 'bug' | 'feature'; export default function ContactPage() { const { t } = useTranslation(); const siteOrigin = getSiteOrigin(typeof window !== 'undefined' ? window.location.origin : ''); const [category, setCategory] = useState('general'); const [submitted, setSubmitted] = useState(false); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); const placeholderKey = `pages.contact.${category}Placeholder` as const; async function handleSubmit(e: React.FormEvent) { e.preventDefault(); setError(''); setLoading(true); const form = e.currentTarget; const data = new FormData(form); try { await api.post(`${API_BASE}/contact/submit`, { name: data.get('name'), email: data.get('email'), category, subject: data.get('subject'), message: data.get('message'), }); setSubmitted(true); } catch (err: unknown) { if (isAxiosError(err) && err.response?.data?.error) { setError(err.response.data.error); } else if (err instanceof Error) { setError(err.message); } else { setError(String(err)); } } finally { setLoading(false); } } if (submitted) { return ( <> {t('pages.contact.title')} — {t('common.appName')}

{t('pages.contact.successMessage')}

); } return ( <>

{t('pages.contact.title')}

{t('pages.contact.subtitle')}

{t('pages.contact.formTitle')}

{/* Category */}
{/* Name */}
{/* Email */}
{/* Subject */}
{/* Message */}