/
App.tsx
56 lines (52 loc) · 1.81 KB
/
App.tsx
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
import { useMemo } from "react";
import { createBrowserRouter, Outlet, RouterProvider } from "react-router-dom";
import { KurtosisClientProvider, useKurtosisClient } from "../client/enclaveManager/KurtosisClientContext";
import {
KurtosisPackageIndexerProvider,
useKurtosisPackageIndexerClient,
} from "../client/packageIndexer/KurtosisPackageIndexerClientContext";
import { AppLayout } from "../components/AppLayout";
import { CreateEnclave } from "../components/enclaves/CreateEnclave";
import { KurtosisThemeProvider } from "../components/KurtosisThemeProvider";
import { catalogRoutes } from "./catalog/CatalogRoutes";
import { enclaveRoutes } from "./enclaves/EnclaveRoutes";
import { Navbar } from "./Navbar";
export const EmuiApp = () => {
return (
<KurtosisThemeProvider>
<KurtosisPackageIndexerProvider>
<KurtosisClientProvider>
<KurtosisRouter />
</KurtosisClientProvider>
</KurtosisPackageIndexerProvider>
</KurtosisThemeProvider>
);
};
const KurtosisRouter = () => {
const kurtosisClient = useKurtosisClient();
const kurtosisIndexerClient = useKurtosisPackageIndexerClient();
const router = useMemo(
() =>
createBrowserRouter(
[
{
element: (
<AppLayout Nav={<Navbar baseApplicationUrl={kurtosisClient.getBaseApplicationUrl()}/>}>
<Outlet />
<CreateEnclave />
</AppLayout>
),
children: [
{ path: "/", children: enclaveRoutes(kurtosisClient) },
{ path: "/catalog", children: catalogRoutes(kurtosisIndexerClient) },
],
},
],
{
basename: kurtosisClient.getBaseApplicationUrl().pathname,
},
),
[kurtosisClient],
);
return <RouterProvider router={router} />;
};