This repository has been archived on 2025-03-19. You can view files and clone it, but cannot push or open issues or pull requests.

42 lines
1.5 KiB
JavaScript

import i18n from "./i18n.js";
import React, {useContext, useState} from "react";
import {createBrowserRouter, RouterProvider} from "react-router-dom";
import {routes} from "@/common/routes/server.jsx";
import Root from "@/states/Root/index.js";
import {TokenProvider} from "@/common/contexts/Token";
import {ServerProvider} from "@/common/contexts/Server";
import Login from "@/states/Login";
import {CssBaseline, ThemeProvider} from "@mui/material";
import LightTheme from "@/common/themes/light.js";
import DarkTheme from "@/common/themes/dark.js";
import {SettingsContext} from "@/common/contexts/Settings";
import {VersionProvider} from "@/common/contexts/Version";
export default () => {
const [translationsLoaded, setTranslationsLoaded] = useState(false);
const {theme} = useContext(SettingsContext);
const router = createBrowserRouter([
{path: "/login", element: <Login/>},
{path: "/", element: <ServerProvider><Root/></ServerProvider>, children: routes}
]);
i18n.on("initialized", () => setTranslationsLoaded(true));
if (!translationsLoaded) return <></>;
return (
<>
<ThemeProvider theme={theme === "dark" ? DarkTheme : LightTheme}>
<CssBaseline/>
<TokenProvider>
<VersionProvider>
<RouterProvider router={router}/>
</VersionProvider>
</TokenProvider>
</ThemeProvider>
</>
)
}