import React, { useEffect } from 'react'; import { Routes, Route, Navigate, Outlet } from 'react-router-dom'; import { Header } from './components/Header'; import { Login } from './components/Admin/Login'; import { Dashboard } from './components/Admin/Dashboard'; import { useData } from './contexts/DataContext'; import { Footer } from './components/AppContent'; // Páginas import { HomePage, AboutPage, ServicesPage, PromotionsPage, BlogPage, BlogPostPage, ContactPage } from './components/Pages'; // Layout do site público com Tema Dinâmico e Estrutura Fixa const PublicLayout = () => { const { data, getWhatsAppLink } = useData(); // Aplica cor primária dinamicamente useEffect(() => { document.documentElement.style.setProperty('--primary-color', data.settings.primaryColor); // Atualiza Favicon if (data.settings.faviconUrl) { const link = document.querySelector("link[rel~='icon']") as HTMLLinkElement; if (link) { link.href = data.settings.faviconUrl; } else { const newLink = document.createElement('link'); newLink.rel = 'icon'; newLink.href = data.settings.faviconUrl; document.head.appendChild(newLink); } } // Atualiza Título document.title = data.settings.siteName; }, [data.settings]); return (
); }; // Proteção de rota simples const ProtectedRoute: React.FC<{ children: React.ReactNode }> = ({ children }) => { const isAuth = localStorage.getItem('admin_auth') === 'true'; return isAuth ? <>{children} : ; }; function App() { return ( {/* Rotas Públicas */} }> } /> } /> } /> } /> } /> } /> } /> {/* Rotas Administrativas */} } /> } /> {/* Rota Catch-all para redirecionar para Home se nada corresponder */} } /> ); } export default App;