'use client'; import React, { useState } from 'react'; import { useTranslations } from 'next-intl'; import { Button, Heading, Card, Input, Textarea, Label } from '@/components/ui'; import { sendContactFormAction } from '@/app/actions/contact'; import { useAnalytics } from '@/components/analytics/useAnalytics'; export default function ContactForm() { const t = useTranslations('Contact'); const { trackEvent } = useAnalytics(); const [status, setStatus] = useState<'idle' | 'submitting' | 'success' | 'error'>('idle'); async function handleSubmit(e: React.FormEvent) { e.preventDefault(); setStatus('submitting'); const formData = new FormData(e.currentTarget); const email = formData.get('email') as string; try { const result = await sendContactFormAction(formData); if (result?.success) { trackEvent('contact_form_submission', { form_type: 'general', email, }); setStatus('success'); (e.target as HTMLFormElement).reset(); } else { console.error('Contact form submission failed:', { email, error: result.error }); setStatus('error'); } } catch (error) { console.error('Contact form submission error:', { email, error }); setStatus('error'); } } if (status === 'success') { return (
{t('form.successTitle') || 'Message Sent!'}

{t('form.successDesc') || 'Thank you for your message. We will get back to you as soon as possible.'}

); } if (status === 'error') { return (
{t('form.errorTitle') || 'Submission Failed!'}

{t('form.error') || 'Something went wrong. Please check your input and try again.'}

); } return ( {t('form.title')}