2025-11-24 12:51:41 +07:00
|
|
|
import { createRoot } from 'react-dom/client';
|
|
|
|
|
import { StrictMode } from 'react';
|
|
|
|
|
import { createBrowserRouter, RouteObject, RouterProvider } from 'react-router';
|
|
|
|
|
import {
|
|
|
|
|
add404PageToRoutesChildren,
|
|
|
|
|
addErrorElementToRoutes,
|
|
|
|
|
convertPagesToRoute,
|
|
|
|
|
ModalLoginProvider,
|
|
|
|
|
QueryProvider,
|
|
|
|
|
} from '@imphnen-frontend-service/utils';
|
|
|
|
|
import { Toaster } from 'sonner';
|
2025-11-26 15:25:23 +07:00
|
|
|
import { ThemeProvider } from './components/theme-provider';
|
2025-11-24 12:51:41 +07:00
|
|
|
import './index.css';
|
|
|
|
|
|
|
|
|
|
const files = import.meta.glob('./app/**/*(page|layout).tsx');
|
|
|
|
|
const errorFiles = import.meta.glob('./app/**/*error.tsx');
|
|
|
|
|
const notFoundFiles = import.meta.glob('./app/**/*404.tsx');
|
|
|
|
|
const loadingFiles = import.meta.glob('./app/**/*loading.tsx');
|
|
|
|
|
|
|
|
|
|
const routes = convertPagesToRoute(files, loadingFiles) as RouteObject;
|
|
|
|
|
addErrorElementToRoutes(errorFiles, routes);
|
|
|
|
|
add404PageToRoutesChildren(notFoundFiles, routes);
|
|
|
|
|
|
|
|
|
|
const router = createBrowserRouter([
|
|
|
|
|
{
|
|
|
|
|
...routes,
|
2025-11-25 01:47:56 +07:00
|
|
|
// MIDDLEWARE TEMPORARILY DISABLED - causing infinite loops with React Router v7
|
|
|
|
|
// TODO: Implement auth checks at component level or use different pattern
|
|
|
|
|
// loader: middleware,
|
|
|
|
|
// shouldRevalidate: () => false,
|
2025-11-24 12:51:41 +07:00
|
|
|
},
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
const rootElement = document.getElementById('root');
|
|
|
|
|
|
|
|
|
|
if (!rootElement) throw new Error('Failed to find the root element');
|
|
|
|
|
|
|
|
|
|
createRoot(rootElement).render(
|
|
|
|
|
<StrictMode>
|
2025-11-26 15:25:23 +07:00
|
|
|
<ThemeProvider defaultTheme="system">
|
|
|
|
|
<QueryProvider>
|
|
|
|
|
<ModalLoginProvider>
|
|
|
|
|
<Toaster position="top-right" richColors />
|
|
|
|
|
<RouterProvider router={router} />
|
|
|
|
|
</ModalLoginProvider>
|
|
|
|
|
</QueryProvider>
|
|
|
|
|
</ThemeProvider>
|
2025-11-24 12:51:41 +07:00
|
|
|
</StrictMode>
|
|
|
|
|
);
|