import '@/lib/errorReporter';
import { enableMapSet } from 'immer';
enableMapSet();
import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import { createBrowserRouter, RouterProvider } from 'react-router-dom';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { ErrorBoundary } from '@/components/ErrorBoundary';
import { RouteErrorBoundary } from '@/components/RouteErrorBoundary';
import '@/index.css';
import { HomePage } from '@/pages/HomePage';
import PageLayout from '@/components/layout/PageLayout';
import { ChatPage } from '@/pages/ChatPage';
import { StudiosPage } from '@/pages/StudiosPage';
import { SpiralPage } from '@/pages/SpiralPage';
import { GadyPage } from '@/pages/GadyPage';
import { ContactPage } from '@/pages/ContactPage';
import { AcademyPage } from '@/pages/AcademyPage';
import { EvolutionPage } from '@/pages/EvolutionPage';
import { DashboardPage } from '@/pages/DashboardPage';
import { MarketplacePage } from '@/pages/MarketplacePage';
import { SettingsPage } from '@/pages/SettingsPage';
import { CommunityPage } from '@/pages/CommunityPage';
import AuthPages from '@/pages/AuthPages';
import { SelfCodePage } from '@/pages/SelfCodePage';
const queryClient = new QueryClient();
const router = createBrowserRouter([
  {
    element: <PageLayout />,
    errorElement: <RouteErrorBoundary />,
    children: [
      { path: '/', element: <HomePage /> },
      { path: '/login', element: <AuthPages /> },
      { path: '/signup', element: <AuthPages /> },
      { path: '/forgot-password', element: <AuthPages /> },
      { path: '/verify-email', element: <AuthPages /> },
      { path: '/onboarding', element: <AuthPages /> },
      { path: '/chat', element: <ChatPage /> },
      { path: '/studios', element: <StudiosPage /> },
      { path: '/spiral', element: <SpiralPage /> },
      { path: '/gady', element: <GadyPage /> },
      { path: '/contact', element: <ContactPage /> },
      { path: '/academy', element: <AcademyPage /> },
      { path: '/evolution', element: <EvolutionPage /> },
      { path: '/dashboard', element: <DashboardPage /> },
      { path: '/marketplace', element: <MarketplacePage /> },
      { path: '/settings', element: <SettingsPage /> },
      { path: '/community', element: <CommunityPage /> },
      { path: '/self-code', element: <SelfCodePage /> },
    ],
  },
]);
createRoot(document.getElementById('root')!).render(
  <StrictMode>
    <QueryClientProvider client={queryClient}>
      <ErrorBoundary>
        <RouterProvider router={router} />
      </ErrorBoundary>
    </QueryClientProvider>
  </StrictMode>,
);