refactor: switch to declarative mode instead of data mode in react router

This commit is contained in:
Stavros
2025-05-30 18:24:34 +03:00
parent 34c8d16c7d
commit f2c81b6a5c
2 changed files with 23 additions and 55 deletions

View File

@@ -1,7 +1,8 @@
import { useAppContext } from "@/context/app-context"; import { useAppContext } from "@/context/app-context";
import { LanguageSelector } from "../language/language"; import { LanguageSelector } from "../language/language";
import { Outlet } from "react-router";
export const Layout = ({ children }: { children: React.ReactNode }) => { export const Layout = () => {
const { backgroundImage } = useAppContext(); const { backgroundImage } = useAppContext();
return ( return (
@@ -14,7 +15,7 @@ export const Layout = ({ children }: { children: React.ReactNode }) => {
}} }}
> >
<LanguageSelector /> <LanguageSelector />
{children} <Outlet />
</div> </div>
); );
}; };

View File

@@ -2,7 +2,7 @@ import { StrictMode } from "react";
import { createRoot } from "react-dom/client"; import { createRoot } from "react-dom/client";
import "./index.css"; import "./index.css";
import { Layout } from "./components/layout/layout.tsx"; import { Layout } from "./components/layout/layout.tsx";
import { createBrowserRouter, RouterProvider } from "react-router"; import { BrowserRouter, Route, Routes } from "react-router";
import { LoginPage } from "./pages/login-page.tsx"; import { LoginPage } from "./pages/login-page.tsx";
import { App } from "./App.tsx"; import { App } from "./App.tsx";
import { ErrorPage } from "./pages/error-page.tsx"; import { ErrorPage } from "./pages/error-page.tsx";
@@ -17,54 +17,6 @@ import { AppContextProvider } from "./context/app-context.tsx";
import { UserContextProvider } from "./context/user-context.tsx"; import { UserContextProvider } from "./context/user-context.tsx";
import { Toaster } from "@/components/ui/sonner"; import { Toaster } from "@/components/ui/sonner";
const router = createBrowserRouter([
{
path: "/",
element: <App />,
errorElement: <ErrorPage />,
},
{
path: "/login",
element: <LoginPage />,
errorElement: <ErrorPage />,
},
{
path: "/logout",
element: <LogoutPage />,
errorElement: <ErrorPage />,
},
{
path: "/continue",
element: <ContinuePage />,
errorElement: <ErrorPage />,
},
{
path: "/totp",
element: <TotpPage />,
errorElement: <ErrorPage />,
},
{
path: "/forgot-password",
element: <ForgotPasswordPage />,
errorElement: <ErrorPage />,
},
{
path: "/unauthorized",
element: <UnauthorizedPage />,
errorElement: <ErrorPage />,
},
{
path: "/error",
element: <ErrorPage />,
errorElement: <ErrorPage />,
},
{
path: "*",
element: <NotFoundPage />,
errorElement: <ErrorPage />,
},
]);
const queryClient = new QueryClient(); const queryClient = new QueryClient();
createRoot(document.getElementById("root")!).render( createRoot(document.getElementById("root")!).render(
@@ -72,10 +24,25 @@ createRoot(document.getElementById("root")!).render(
<QueryClientProvider client={queryClient}> <QueryClientProvider client={queryClient}>
<AppContextProvider> <AppContextProvider>
<UserContextProvider> <UserContextProvider>
<Layout> <BrowserRouter>
<RouterProvider router={router} /> <Routes>
<Route element={<Layout />} errorElement={<ErrorPage />}>
<Route path="/" element={<App />} />
<Route path="/login" element={<LoginPage />} />
<Route path="/logout" element={<LogoutPage />} />
<Route path="/continue" element={<ContinuePage />} />
<Route path="/totp" element={<TotpPage />} />
<Route
path="/forgot-password"
element={<ForgotPasswordPage />}
/>
<Route path="/unauthorized" element={<UnauthorizedPage />} />
<Route path="/error" element={<ErrorPage />} />
<Route path="*" element={<NotFoundPage />} />
</Route>
</Routes>
</BrowserRouter>
<Toaster /> <Toaster />
</Layout>
</UserContextProvider> </UserContextProvider>
</AppContextProvider> </AppContextProvider>
</QueryClientProvider> </QueryClientProvider>