|
import { Suspense } from 'react'; |
|
import { createBrowserRouter, RouterProvider as RouterProviderLib } from 'react-router-dom'; |
|
import { MainPage } from '@/pages/MainPage'; |
|
import { LoginPage } from '@/pages/LoginPage'; |
|
import { ProtectedRoute } from './ProtectedRoute'; |
|
import { ContactPage } from '@/pages/ContactPage'; |
|
import { NotFoundPage } from '@/pages/NotFoundPage'; |
|
import { SomeTestPage } from '@/pages/SomeTestPage'; |
|
import { PageLoader } from '@/shared/ui/PageLoader'; |
|
import { MainLayout } from '@/app/layouts/MainLayout'; |
|
import { useTheme } from '@/app/providers/ThemeProviders'; |
|
|
|
const router = createBrowserRouter([ |
|
{ path: '/login', element: <LoginPage /> }, |
|
{ |
|
element: <ProtectedRoute />, |
|
children: [ |
|
{ |
|
path: '/', |
|
element: <MainLayout />, |
|
children: [ |
|
{ index: true, element: <MainPage /> }, |
|
{ path: 'contact', element: <ContactPage /> }, |
|
{ path: 'someTests', element: <SomeTestPage /> }, |
|
], |
|
}, |
|
], |
|
}, |
|
{ path: '*', element: <NotFoundPage /> }, |
|
]); |
|
|
|
const RouterProvider = () => { |
|
const { theme } = useTheme(); |
|
document.body.className = theme; |
|
|
|
return ( |
|
<Suspense fallback={<PageLoader />}> |
|
<RouterProviderLib router={router} /> |
|
</Suspense> |
|
); |
|
}; |
|
|
|
export default RouterProvider; |
|
|