"use client"; import { useToast } from "@/contexts/ToastContext"; import { useState, useEffect } from "react"; import { useTranslatedContent, T } from "@/components/TranslatedText"; 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 [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: '' }); // Traduzir conteúdo do banco automaticamente const { translatedContent } = useTranslatedContent(content); useEffect(() => { fetchContent(); fetchSettings(); }, []); const fetchContent = async () => { try { const response = await fetch('/api/pages/contact'); 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 = translatedContent?.hero || { pretitle: 'Fale Conosco', title: 'Entre em Contato', subtitle: 'Estamos prontos para atender sua empresa com soluções de engenharia de alta qualidade' }; const info = translatedContent?.info || { title: 'Informações', subtitle: 'Como nos encontrar', description: 'Estamos à disposição para atender sua empresa com a excelência técnica que seu projeto exige.', items: [] as ContactInfo[] }; // Montar items dinamicamente baseado nas configurações const contactItems: ContactInfo[] = []; if (settings.whatsapp || settings.phone) { const phoneNumber = settings.whatsapp || settings.phone; contactItems.push({ icon: 'ri-whatsapp-line', title: 'Telefone', description: 'Atendimento de segunda a sexta, das 8h às 18h', link: settings.whatsapp ? `https://wa.me/55${settings.whatsapp.replace(/\D/g, '')}` : `tel:${phoneNumber?.replace(/\D/g, '')}`, linkText: phoneNumber || '' }); } if (settings.email) { contactItems.push({ icon: 'ri-mail-send-line', title: 'E-mail', description: 'Responderemos em até 24 horas úteis', link: `mailto:${settings.email}`, linkText: settings.email }); } if (settings.address) { contactItems.push({ icon: 'ri-map-pin-line', title: 'Endereço', description: settings.address, link: `https://maps.google.com/maps?q=${encodeURIComponent(settings.address)}`, linkText: 'Ver no mapa' }); } // Usar items do CMS se existir, senão usar os dinâmicos const displayItems = info.items?.length > 0 ? info.items : 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}
)) ) : (

Informações de contato não configuradas

)}
{/* Formulário */}

Envie uma Mensagem

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="Seu nome completo" />
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="seu@email.com" />
{/* Map Section */}
); }