summaryrefslogtreecommitdiff
path: root/src/main.tsx
blob: f1020b11198083ee81e8e00696d61dd2e93a72d4 (plain)
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import React from 'react'
import ReactDOM from 'react-dom/client'
import { createBrowserRouter, Navigate, RouterProvider } from 'react-router-dom'
import Products from "./routes/products/products";
import Product from "./routes/products/product";
import Companies from "./routes/companies/companies";
import Account from "./routes/account/account";
import { EditAccount } from './routes/account/edit';
import { Edit as EditAddress } from "./routes/account/addresses/edit";
import { createAddress, editAccount, editAddress } from './clients/actions';
import Layout from "./components/layout";
import { accountLoader, loader, productLoader, addressLoader } from "./clients/loaders"; 
import './index.css';
import { Create as CreateAddress } from './routes/account/addresses/create';

const routes = [
  {
    path: '/products',
    loader: loader,
    element: <Products/>
  },
  {
    path: "products/:productId",
    loader: productLoader,
    element: <Product/>
  },
  {
    path: "/companies",
    loader: loader,
    element: <Companies/>
  },
  {
    path: "/account",
    loader: accountLoader,
    element: <Account/>
  },
  {
    path: "/account/edit",
    element: <EditAccount/>,
    loader: accountLoader,
    action: editAccount
  },
  {
    path: "/account/addresses/:addressId/edit",
    element: <EditAddress/>,
    loader: addressLoader,
    action: editAddress,
  },
  {
    path: "/account/addresses/new",
    element: <CreateAddress/>,
    action: createAddress
  },
  {
    path: '/',
    element: <Navigate to='/products'/>
  }
];

const router = createBrowserRouter(routes);

ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
  <React.StrictMode>
    <Layout>
      <RouterProvider router={router}/>
    </Layout>
  </React.StrictMode>
)