'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<HTMLFormElement>) {
    e.preventDefault();
    setStatus('submitting');

    const formData = new FormData(e.currentTarget);
    
    try {
      const result = await sendContactFormAction(formData);
      if (result.success) {
        trackEvent('contact_form_submission', {
          form_type: 'general',
          email: formData.get('email') as string,
        });
        setStatus('success');
        (e.target as HTMLFormElement).reset();
      } else {
        setStatus('error');
      }
    } catch (error) {
      console.error('Form submission error:', error);
      setStatus('error');
    }
  }

  if (status === 'success') {
    return (
      <Card className="p-6 md:p-12 rounded-2xl md:rounded-[40px] border-none shadow-2xl text-center">
        <div className="w-20 h-20 bg-accent rounded-full flex items-center justify-center mx-auto mb-6 shadow-lg shadow-accent/20">
          <svg className="w-10 h-10 text-primary-dark" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={3} d="M5 13l4 4L19 7" />
          </svg>
        </div>
        <Heading level={3} className="mb-4">
          {t('form.successTitle') || 'Message Sent!'}
        </Heading>
        <p className="text-text-secondary text-lg mb-8">
          {t('form.successDesc') || 'Thank you for your message. We will get back to you as soon as possible.'}
        </p>
        <Button onClick={() => setStatus('idle')} variant="saturated">
          {t('form.sendAnother') || 'Send another message'}
        </Button>
      </Card>
    );
  }

  return (
    <Card className="p-6 md:p-12 rounded-2xl md:rounded-[40px] border-none shadow-2xl animate-slide-up">
      <Heading level={3} subtitle={t('form.subtitle')} className="mb-6 md:mb-10">
        {t('form.title')}
      </Heading>
      <form onSubmit={handleSubmit} className="grid grid-cols-1 md:grid-cols-2 gap-4 md:gap-8">
        <div className="space-y-1 md:space-y-2">
          <Label htmlFor="name">{t('form.name')}</Label>
          <Input 
            type="text" 
            id="name" 
            name="name"
            autoComplete="name"
            enterKeyHint="next"
            placeholder={t('form.namePlaceholder')}
            required
          />
        </div>
        <div className="space-y-1 md:space-y-2">
          <Label htmlFor="email">{t('form.email')}</Label>
          <Input 
            type="email" 
            id="email" 
            name="email"
            autoComplete="email"
            inputMode="email"
            enterKeyHint="next"
            placeholder={t('form.emailPlaceholder')}
            required
          />
        </div>
        <div className="md:col-span-2 space-y-1 md:space-y-2">
          <Label htmlFor="message">{t('form.message')}</Label>
          <Textarea 
            id="message" 
            name="message"
            rows={4} 
            enterKeyHint="send"
            placeholder={t('form.messagePlaceholder')}
            required
          />
        </div>
        {status === 'error' && (
          <div className="md:col-span-2 text-red-500 text-sm font-bold">
            {t('form.error') || 'An error occurred. Please try again later.'}
          </div>
        )}
        <div className="md:col-span-2 pt-2 md:pt-4">
          <Button 
            type="submit" 
            variant="saturated" 
            size="lg" 
            disabled={status === 'submitting'}
            className="w-full shadow-xl shadow-saturated/20 md:h-16 md:px-10 md:text-xl active:scale-[0.98] transition-transform"
          >
            {status === 'submitting' ? (
              <span className="flex items-center gap-2">
                <svg className="animate-spin h-5 w-5 text-white" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
                  <circle className="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" strokeWidth="4"></circle>
                  <path className="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
                </svg>
                {t('form.submitting') || 'Sending...'}
              </span>
            ) : t('form.submit')}
          </Button>
        </div>
      </form>
    </Card>
  );
}
