'use client'; import { useState } from 'react'; import { motion } from 'framer-motion'; import { Icon } from '@iconify/react'; import type { ThemeProps } from '@/app/(landing)/types/ui'; const API_URL = process.env.NEXT_PUBLIC_API_URL ?? 'https://localhost:7001'; type Status = 'idle' | 'loading' | 'success' | 'error'; const initialForm = { nombre: '', empresa: '', email: '', telefono: '', mensaje: '' }; export const ContactSection = ({ isNavyBg }: ThemeProps) => { const [form, setForm] = useState(initialForm); const [status, setStatus] = useState('idle'); const text = isNavyBg ? 'var(--foreground)' : '#0a0a0a'; const sub = isNavyBg ? 'rgba(255,255,255,0.45)' : '#6a6866'; const border = isNavyBg ? 'rgba(255,255,255,0.08)' : '#dddbd5'; const card = isNavyBg ? 'rgba(255,255,255,0.03)' : '#ffffff'; const inputStyle: React.CSSProperties = { width: '100%', borderRadius: 12, padding: '12px 14px', fontSize: 14, fontFamily: 'inherit', outline: 'none', transition: 'border-color 150ms', ...(isNavyBg ? { background: 'rgba(255,255,255,0.05)', border: '1px solid rgba(255,255,255,0.1)', color: '#fff' } : { background: '#f9f9f7', border: `1px solid ${border}`, color: '#0a0a0a' }), }; const set = (k: keyof typeof form) => (e: React.ChangeEvent) => setForm(f => ({ ...f, [k]: e.target.value })); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!form.nombre.trim() || !form.email.trim()) return; setStatus('loading'); try { const res = await fetch(`${API_URL}/api/contact`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name: form.nombre, email: form.email, phone: form.telefono || undefined, company: form.empresa || undefined, message: form.mensaje || 'Sin mensaje adicional.', source: 'landing', }), }); if (!res.ok) throw new Error(); setStatus('success'); setForm(initialForm); } catch { setStatus('error'); } }; return (