import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
// @ts-ignore: allow CSS import side effect without type declarations
import './index.css'
import { TooltipProvider } from "@/components/ui/tooltip.js"
import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom"
import TipTapEditor from './TiptapEditor.js';
import { AppSidebar } from './components/AppSidebar.js';
import ProjectLayout from './components/ProjectLayout.js';
import Dashboard from './components/Dashboard/Dashboard.js';
import NotesLayout from './components/Notes/NotesLayout.js';
import QuizLayout from './components/Quiz/QuizLayout.js';
import FlashcardsLayout from './components/Flashcards/FlashcardsLayout.js';
import PodcastLayout from './components/Podcast/PodcastWorkspace.js';
import PodcastMain from './components/Podcast/PodcastLayout.js';
import LandingPageLayout, { getOnboardingServices } from './components/LandingPage/LandingPageLayout.js';
import NotiumOnboarding from './components/Onboarding/NotiumOnboarding.js';
import { clearOnboardingDraft } from './components/Onboarding/GoogleOAuth.js';
import ApplicationPreferences from './components/Dashboard/Settings/ApplicationPreferences.js';
import CookiesPage from './components/Legal/CookiesPage.js';
import TermsOfServicePage from './components/Legal/TermsOfServicePage.js';
import PrivacyPage from './components/Legal/PrivacyPage.js';
import CookieConsent from './components/Privacy/CookieConsent.js';
import { initializeCookieConsent } from './services/cookieConsent.js';

initializeCookieConsent((import.meta as any).env?.VITE_GOOGLE_ANALYTICS_ID);

createRoot(document.getElementById('root')!).render(
  <StrictMode>
    <TooltipProvider>
      <BrowserRouter>
        <ApplicationPreferences>
        <Routes>
          <Route path="/dashboard" element={<Dashboard/>}/>
          <Route path="/" element={<LandingPageLayout/>}/>
          <Route path="/cookies" element={<CookiesPage/>}/>
          <Route path="/terms-of-service" element={<TermsOfServicePage/>}/>
          <Route path="/privacy" element={<PrivacyPage/>}/>
          <Route path="/onboarding" element={
            <NotiumOnboarding
              services={getOnboardingServices()}
              onClose={() => {
                clearOnboardingDraft();
                window.location.assign("/");
              }}
            />
          }/>

          {/* Zagnieżdżone ścieżki dla projektu */}
          <Route path="/project/:projectID" element={<ProjectLayout/>}>
             {/* Domyślne przekierowanie na notes po wejściu w samo /project/:projectID */}
             <Route index element={<Navigate to="notes" replace />} />
             
             {/* Poszczególne zakładki */}
             <Route path="notes" element={<NotesLayout/>}/>
             <Route path="quiz" element={
                <div className="max-[600px]:overflow-y-visible overflow-y-hidden w-full h-screen">
                  <QuizLayout/>
                </div>
              }/>
             <Route path="flashcards" element={<FlashcardsLayout/>}/>  
             <Route path="podcast" element={<PodcastMain/>}/>    

          </Route>

        </Routes>
        <CookieConsent />
        </ApplicationPreferences>
      </BrowserRouter>
    </TooltipProvider>
  </StrictMode>,
)
