'use client'; import { useState } from 'react'; import { useTranslations } from 'next-intl'; import { Mail, CheckCircle, Loader2 } from 'lucide-react'; interface EarlyAccessFormProps { variant: 'a' | 'b'; locale: string; } export function EarlyAccessForm({ variant, locale }: EarlyAccessFormProps) { const t = useTranslations('claudePlugin'); const [email, setEmail] = useState(''); const [status, setStatus] = useState<'idle' | 'loading' | 'success' | 'error'>('idle'); const [errorMessage, setErrorMessage] = useState(''); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!email || !email.includes('@')) { setErrorMessage(t('form.invalidEmail')); setStatus('error'); return; } setStatus('loading'); try { const response = await fetch('/api/early-access', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email, variant, locale, source: 'claude-plugin-landing', }), }); if (!response.ok) { const data = await response.json(); throw new Error(data.error || 'Failed to submit'); } setStatus('success'); setEmail(''); } catch (err) { setErrorMessage(err instanceof Error ? err.message : t('form.genericError')); setStatus('error'); } }; if (status === 'success') { return (

{t('form.successMessage')}

{t('form.successDescription')}

); } return (
{ setEmail(e.target.value); if (status === 'error') setStatus('idle'); }} placeholder={t('form.emailPlaceholder')} className="w-full pl-10 pr-4 py-3 rounded-lg border border-border bg-surface text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-primary/50 focus:border-primary" disabled={status === 'loading'} />
{status === 'error' && (

{errorMessage}

)}

{t('form.privacyNote')}

); }