import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import App from './App.tsx';
import { Auth } from './pages/Auth.tsx';
import { CustomerLogin } from './pages/CustomerLogin.tsx';
import { AgentLogin } from './pages/AgentLogin.tsx';
import MultiEmployerCalculatorPage from './pages/MultiEmployerCalculator.tsx';
import { SignTermsAndConditions } from './pages/SignTermsAndConditions.tsx';
import MileageUploadPage from './pages/MileageUpload.tsx';
import { ProofUpload } from './pages/ProofUpload.tsx';
import { IDVerificationUpload } from './pages/IDVerificationUpload.tsx';
import MileageLogGenerator from './pages/MileageLogGenerator.tsx';
import Onboarding from './pages/Onboarding.tsx';
import CustomerPortal from './pages/CustomerPortal.tsx';
import CustomerQuestionnairePage from './pages/CustomerQuestionnaire.tsx';
import TaxAnalysisResults from './components/customerPortal/TaxAnalysisResults.tsx';
import { ProtectedRoute } from './components/ProtectedRoute.tsx';
import { AssessmentSummary } from './components/AssessmentSummary.tsx';
import { DealsList } from './components/DealsList.tsx';
import DealDetails from './components/DealDetails.tsx';
import { UserManagement } from './components/UserManagement.tsx';
import { CustomerServiceDashboard } from './components/CustomerServiceDashboard.tsx';
import { SubmissionsDashboard } from './components/SubmissionsDashboard.tsx';
import ZohoSalesBoard from './components/ZohoSalesBoard.tsx';
import './index.css';

createRoot(document.getElementById('root')!).render(
  <StrictMode>
    <BrowserRouter>
      <Routes>
        <Route path="/" element={<Auth />} />
        <Route path="/login" element={<Auth />} />
        <Route path="/customer-login" element={<CustomerLogin />} />
        <Route path="/agent-login" element={<AgentLogin />} />
        <Route path="/sign-tc/:token" element={<SignTermsAndConditions />} />
        <Route path="/onboarding" element={<Onboarding />} />
        <Route path="/upload-mileage/:uploadToken" element={<MileageUploadPage />} />
        <Route path="/upload-proof/:uploadToken" element={<ProofUpload />} />
        <Route path="/upload-id/:uploadToken" element={<IDVerificationUpload />} />
        <Route
          path="/assessment"
          element={
            <ProtectedRoute>
              <App />
            </ProtectedRoute>
          }
        />
        <Route
          path="/assessment-summary/:sessionId"
          element={
            <ProtectedRoute>
              <AssessmentSummary />
            </ProtectedRoute>
          }
        />
        <Route
          path="/multi-employer-calculator"
          element={
            <ProtectedRoute>
              <MultiEmployerCalculatorPage />
            </ProtectedRoute>
          }
        />
        <Route
          path="/deals"
          element={
            <ProtectedRoute>
              <DealsList />
            </ProtectedRoute>
          }
        />
        <Route
          path="/deals/:dealReference"
          element={
            <ProtectedRoute>
              <DealDetails />
            </ProtectedRoute>
          }
        />
        <Route
          path="/customer-service"
          element={
            <ProtectedRoute>
              <CustomerServiceDashboard />
            </ProtectedRoute>
          }
        />
        <Route
          path="/submissions"
          element={
            <ProtectedRoute>
              <SubmissionsDashboard />
            </ProtectedRoute>
          }
        />
        <Route
          path="/user-management"
          element={
            <ProtectedRoute>
              <UserManagement />
            </ProtectedRoute>
          }
        />
        <Route
          path="/zoho-sales-board"
          element={
            <ProtectedRoute>
              <ZohoSalesBoard />
            </ProtectedRoute>
          }
        />
        <Route
          path="/mileage-log-generator"
          element={
            <ProtectedRoute>
              <MileageLogGenerator />
            </ProtectedRoute>
          }
        />
        <Route
          path="/customer-portal"
          element={
            <ProtectedRoute>
              <CustomerPortal />
            </ProtectedRoute>
          }
        />
        <Route
          path="/customer-portal/questionnaire/:taxYear"
          element={
            <ProtectedRoute>
              <CustomerQuestionnairePage />
            </ProtectedRoute>
          }
        />
        <Route
          path="/customer-portal/analysis/:taxYear"
          element={
            <ProtectedRoute>
              <TaxAnalysisResults />
            </ProtectedRoute>
          }
        />
      </Routes>
    </BrowserRouter>
  </StrictMode>
);
