import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom';
import { ToastProvider } from './components/admin/ToastProvider';
import { StartupHealthGate } from './components/StartupHealthGate';
import AdminAuthGuard from './components/admin/AdminAuthGuard';
import CalendarPage from './pages/CalendarPage';
import HomePage from './pages/HomePage';
import IpoDetailsPage from './pages/IpoDetailsPage';
import AdminLoginPage from './pages/admin/AdminLoginPage';
import AdminLayout from './pages/admin/AdminLayout';
import AllotmentManagementPage from './pages/admin/AllotmentManagementPage';
import AutomationLogsPage from './pages/admin/AutomationLogsPage';
import DashboardPage from './pages/admin/DashboardPage';
import GmpManagementPage from './pages/admin/GmpManagementPage';
import EnrichmentQueuePage from './pages/admin/EnrichmentQueuePage';
import IpoAdminDetailPage from './pages/admin/IpoAdminDetailPage';
import IpoManagementPage from './pages/admin/IpoManagementPage';
import ListedMarketDataPage from './pages/admin/ListedMarketDataPage';
import NotificationsPage from './pages/admin/NotificationsPage';
import SettingsPage from './pages/admin/SettingsPage';
import SubscriptionManagementPage from './pages/admin/SubscriptionManagementPage';
import './index.css';

const queryClient = new QueryClient();

createRoot(document.getElementById('root')!).render(
  <StrictMode>
    <StartupHealthGate>
      <QueryClientProvider client={queryClient}>
        <ToastProvider>
          <BrowserRouter>
            <Routes>
              <Route path="/" element={<HomePage />} />
              <Route path="/calendar" element={<CalendarPage />} />
              <Route path="/notifications" element={<HomePage />} />
              <Route path="/profile" element={<HomePage />} />
              <Route path="/ipo-details" element={<IpoDetailsPage />} />
              <Route path="/ipo-details/:id" element={<IpoDetailsPage />} />
              <Route path="/admin/login" element={<AdminLoginPage />} />
              <Route element={<AdminAuthGuard />}>
                <Route path="/admin" element={<AdminLayout />}>
                  <Route index element={<Navigate replace to="/admin/dashboard" />} />
                  <Route path="dashboard" element={<DashboardPage />} />
                  <Route path="ipos" element={<IpoManagementPage />} />
                  <Route path="ipos/:id" element={<IpoAdminDetailPage />} />
                  <Route path="listed-market-data" element={<ListedMarketDataPage />} />
                  <Route path="enrichment-queue" element={<EnrichmentQueuePage />} />
                  <Route path="gmp" element={<GmpManagementPage />} />
                  <Route path="subscriptions" element={<SubscriptionManagementPage />} />
                  <Route path="allotments" element={<AllotmentManagementPage />} />
                  <Route path="automation" element={<AutomationLogsPage />} />
                  <Route path="notifications" element={<NotificationsPage />} />
                  <Route path="settings" element={<SettingsPage />} />
                </Route>
              </Route>
            </Routes>
          </BrowserRouter>
        </ToastProvider>
      </QueryClientProvider>
    </StartupHealthGate>
  </StrictMode>,
);
