"use client"; import { useToast } from "@/contexts/ToastContext"; import { useState, useEffect } from "react"; import { useLocale } from "@/contexts/LocaleContext"; interface ContactInfo { icon: string; title: string; description: string; link: string; linkText: string; } interface ContactContent { hero: { pretitle: string; title: string; subtitle: string; }; info: { title: string; subtitle: string; description: string; items: ContactInfo[]; }; } interface SettingsData { address?: string | null; phone?: string | null; email?: string | null; whatsapp?: string | null; } export default function ContatoPage() { const { success, error: showError } = useToast(); const { locale, t } = useLocale(); const [content, setContent] = useState(null); const [settings, setSettings] = useState({}); const [loading, setLoading] = useState(true); const [submitting, setSubmitting] = useState(false); const [formData, setFormData] = useState({ name: '', phone: '', email: '', subject: '', message: '' }); useEffect(() => { fetchContent(); fetchSettings(); }, [locale]); const fetchContent = async () => { try { // Busca conteúdo JÁ TRADUZIDO do banco const response = await fetch(`/api/pages/contact?locale=${locale}`); if (response.ok) { const data = await response.json(); if (data.content) { setContent(data.content); } } } catch (error) { console.error('Erro ao carregar conteúdo:', error); } finally { setLoading(false); } }; const fetchSettings = async () => { try { const response = await fetch('/api/settings'); if (response.ok) { const data = await response.json(); setSettings({ address: data.address, phone: data.phone, email: data.email, whatsapp: data.whatsapp }); } } catch (error) { console.error('Erro ao carregar configurações:', error); } }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setSubmitting(true); try { const response = await fetch('/api/messages', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(formData) }); if (!response.ok) throw new Error('Erro ao enviar mensagem'); // Limpar formulário setFormData({ name: '', phone: '', email: '', subject: '', message: '' }); success('Mensagem enviada com sucesso! Entraremos em contato em breve.'); } catch (error) { showError('Erro ao enviar mensagem. Tente novamente.'); } finally { setSubmitting(false); } }; // Valores padrão caso não tenha conteúdo salvo const hero = content?.hero || { pretitle: t('contact.pretitle'), title: t('contact.title'), subtitle: t('contact.subtitle') }; const info = content?.info || { title: t('contact.infoTitle'), subtitle: t('contact.infoSubtitle'), description: t('contact.infoDescription'), items: [] as ContactInfo[] }; // Montar items dinamicamente baseado nas configurações (Settings) const contactItems: ContactInfo[] = []; if (settings.whatsapp) { contactItems.push({ icon: 'ri-whatsapp-line', title: 'WhatsApp', description: t('contact.whatsappDescription') || 'Atendimento rápido e direto', link: `https://wa.me/55${settings.whatsapp.replace(/\D/g, '')}`, linkText: settings.whatsapp }); } else if (settings.phone) { contactItems.push({ icon: 'ri-phone-line', title: t('contact.phone'), description: t('contact.phoneDescription'), link: `tel:${settings.phone.replace(/\D/g, '')}`, linkText: settings.phone }); } if (settings.email) { contactItems.push({ icon: 'ri-mail-send-line', title: t('contact.email'), description: t('contact.emailDescription') || 'Envie sua mensagem', link: `mailto:${settings.email}`, linkText: settings.email }); } if (settings.address) { contactItems.push({ icon: 'ri-map-pin-line', title: t('contact.address'), description: settings.address, link: `https://maps.google.com/maps?q=${encodeURIComponent(settings.address)}`, linkText: t('contact.viewOnMap') }); } // Sempre usar os dados das Settings (contactItems) const displayItems = contactItems; return (
{/* Hero Section */}
{hero.pretitle}

{hero.title}

{hero.subtitle}

{/* Decorative Elements */}
{/* Informações de Contato */}

{info.title}

{info.subtitle}

{info.description}

{displayItems.length > 0 ? ( displayItems.map((item, index) => (

{item.title}

{item.description}

{item.linkText}
)) ) : (

{t('contact.noInfoConfigured')}

)}
{/* Formulário */}

{t('contact.sendMessage')}

setFormData({...formData, name: e.target.value})} className="w-full pl-11 pr-4 py-3.5 bg-gray-50 dark:bg-white/5 border border-gray-200 dark:border-white/10 rounded-xl text-gray-900 dark:text-white focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary transition-all" placeholder={t('contact.form.namePlaceholder')} />
setFormData({...formData, phone: e.target.value})} className="w-full pl-11 pr-4 py-3.5 bg-gray-50 dark:bg-white/5 border border-gray-200 dark:border-white/10 rounded-xl text-gray-900 dark:text-white focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary transition-all" placeholder="(00) 00000-0000" />
setFormData({...formData, email: e.target.value})} className="w-full pl-11 pr-4 py-3.5 bg-gray-50 dark:bg-white/5 border border-gray-200 dark:border-white/10 rounded-xl text-gray-900 dark:text-white focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary transition-all" placeholder={t('contact.form.emailPlaceholder')} />
{/* Map Section */}
); }