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;