File size: 1,426 Bytes
41a71fd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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;