"use client"; import Link from 'next/link'; import Image from 'next/image'; import { useState, useEffect } from 'react'; import { useTheme } from "next-themes"; import { useLocale } from '@/contexts/LocaleContext'; import { localeFlags, localeNames, type Locale } from '@/lib/i18n'; import SearchDropdown from './SearchDropdown'; export default function Header() { const [isSearchOpen, setIsSearchOpen] = useState(false); const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); const [isLoggedIn, setIsLoggedIn] = useState(false); const [logo, setLogo] = useState(null); const { theme, setTheme } = useTheme(); const { locale, setLocale, t } = useLocale(); const [mounted, setMounted] = useState(false); const [whatsappLink, setWhatsappLink] = useState('https://wa.me/5535988229445'); // Prefixo para links baseado no locale const prefix = locale === 'pt' ? '' : `/${locale}`; useEffect(() => { setMounted(true); // Verifica se está logado fetch('/api/auth/me') .then(res => { if (res.ok) { setIsLoggedIn(true); } }) .catch(() => setIsLoggedIn(false)); // Busca as configurações (logo e whatsapp) fetch('/api/settings') .then(res => res.json()) .then(data => { if (data.logo) { setLogo(data.logo); } if (data.whatsapp) { setWhatsappLink(`https://wa.me/${data.whatsapp.replace(/\D/g, '')}`); } }) .catch(console.error); // Busca o número do WhatsApp do CMS (fallback) fetch('/api/contact-info') .then(res => res.json()) .then(data => { if (data.whatsappLink) { setWhatsappLink(data.whatsappLink); } }) .catch(console.error); // Listener para atualização em tempo real const handleSettingsRefresh = () => { fetch('/api/settings') .then(res => res.json()) .then(data => { if (data.logo !== undefined) { setLogo(data.logo); } }) .catch(console.error); }; window.addEventListener('settings:refresh', handleSettingsRefresh); return () => window.removeEventListener('settings:refresh', handleSettingsRefresh); }, []); // Prevent scrolling when mobile menu is open useEffect(() => { if (isMobileMenuOpen) { document.body.style.overflow = 'hidden'; } else { document.body.style.overflow = 'unset'; } return () => { document.body.style.overflow = 'unset'; }; }, [isMobileMenuOpen]); const toggleTheme = () => { setTheme(theme === 'dark' ? 'light' : 'dark'); }; return ( <> {/* Admin Bar - aparece apenas para usuários logados */} {isLoggedIn && (
Você está logado como administrador
Painel Admin
)}
{logo ? ( OCCTO Engenharia ) : ( <>
OCCTO ENG.
)}
{/* Search Bar with Dropdown */}
!isSearchOpen && setIsSearchOpen(true)} > {isSearchOpen && ( setIsSearchOpen(false)} className="bg-transparent border-none outline-none text-sm w-full text-gray-600 dark:text-gray-200 placeholder-gray-400" /> )}
setIsSearchOpen(false)} />
{t('nav.contactUs')}
{/* Theme Toggle */} {/* Language Dropdown */}
{/* Mobile Menu Button */} {/* Mobile Menu Overlay */}
{/* Mobile Search */}
setIsMobileMenuOpen(false)} className="w-full py-4 bg-primary text-white rounded-xl font-bold text-center flex items-center justify-center gap-2 shadow-lg shadow-primary/20" > {t('nav.contactUs')}
{t('nav.theme')}
{t('nav.language')}
); }