import { StrictMode, lazy, Suspense } from "react"; import { createRoot } from "react-dom/client"; import { createBrowserRouter, RouterProvider } from "react-router"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import "./index.css"; import { SettingsProvider } from "./lib/settings"; import { FeedbackProvider, Loading } from "./components/ui"; import { RequireAuth } from "./components/Shell"; import { ApiError } from "./lib/api"; import Login from "./pages/Login"; import Overview from "./pages/Overview"; const Traffic = lazy(() => import("./pages/Traffic")); const Queue = lazy(() => import("./pages/Queue")); const Addons = lazy(() => import("./pages/Addons")); const Whitelist = lazy(() => import("./pages/Whitelist")); const Services = lazy(() => import("./pages/Services")); const Explorer = lazy(() => import("./pages/Explorer")); const Events = lazy(() => import("./pages/Events")); const System = lazy(() => import("./pages/System")); const queryClient = new QueryClient({ defaultOptions: { queries: { staleTime: 10_000, refetchOnWindowFocus: false, retry: (count, err) => !(err instanceof ApiError && err.status < 500) && count < 2, }, }, }); const page = (el: React.ReactNode) => }>{el}; const router = createBrowserRouter( [ { path: "/login", element: }, { element: , children: [ { index: true, element: }, { path: "traffic", element: page() }, { path: "queue", element: page() }, { path: "addons", element: page() }, { path: "addons/:id", element: page() }, { path: "whitelist", element: page() }, { path: "services", element: page() }, { path: "explorer", element: page() }, { path: "events", element: page() }, { path: "system", element: page() }, { path: "*", element: }, ], }, ], { basename: "/admin/ui" }, ); createRoot(document.getElementById("root")!).render( , );