import { Toaster } from '@/components/ui/sonner'; import { TooltipProvider } from '@/components/ui/tooltip'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom'; import { useScrollToTop } from './hooks/use-scroll'; import { Header } from './components/layout/Header'; import { Footer } from './components/layout/Footer'; import HomePage from './pages/Index'; import ProfilePage from "./pages/Profile"; import NotFound from './pages/NotFound'; import DoctorsPage from './pages/Doctors'; import PackagesPage from './pages/Packages'; import ServicesPage from './pages/Services'; import AboutPage from './pages/About'; import ContactPage from './pages/Contact'; import LoginPage from './pages/Login'; import RegisterPage from './pages/Register'; import ForgotPasswordPage from './pages/ForgotPassword'; import ResetPasswordPage from './pages/ResetPassword'; import TermsPage from './pages/Terms'; import Appointment from './pages/Appointment'; import AdminContactsPage from './pages/AdminContacts'; import SitemapPage from './pages/Sitemap'; import { AuthProvider, useAuth } from './context/AuthContext'; // ✅ case fixed import ReceptionRoute from './components/routes/ReceptionRoute'; import './App.css'; import { useEffect } from 'react'; import { initVisitorTracking } from './services/analyticsService'; import { cdnService } from './services/cdnService'; import { performanceService } from './services/performanceService'; import { PosterModal } from './components/PosterModal'; const queryClient = new QueryClient(); // ScrollToTop component function ScrollToTop() { useScrollToTop(); return null; } // ✅ Generic Protected Route (must be logged in) function ProtectedRoute({ children }: { children: JSX.Element }) { const { user } = useAuth(); return user ? children : ; } // ✅ Admin-only Protected Route function AdminRoute({ children }: { children: JSX.Element }) { const { user } = useAuth(); return user && user.role === 'admin' ? children : ; } const App = () => ( {/* ✅ Wrap everything inside AuthProvider */} {(() => { function AnalyticsInit() { useEffect(() => { const init = async () => { try { // Initialize performance monitoring first performanceService.initialize(); await initVisitorTracking(); // Initialize CDN service for performance optimization cdnService.initialize(); } catch (err) { console.error('Analytics init failed', err); } }; init(); }, []); return null; } return ; })()}
} /> } /> } /> } /> } /> } /> {/* ✅ Admin-only */} } /> } /> } /> {/* Auth routes */} } /> } /> } /> } /> } /> } /> } />
); export default App;