diff --git a/apps/pyconkr-2025/src/App.tsx b/apps/pyconkr-2025/src/App.tsx index 7ce3a4c..b0a6ffc 100644 --- a/apps/pyconkr-2025/src/App.tsx +++ b/apps/pyconkr-2025/src/App.tsx @@ -1,17 +1,10 @@ import { useBackendClient, useFlattenSiteMapQuery, useSponsorQuery } from "@frontend/common/src/hooks/useAPI"; +import * as BackendAPISchemas from "@frontend/common/src/schemas/backendAPI"; import { buildNestedSiteMap } from "@frontend/common/src/utils"; import * as React from "react"; -import { Route, Routes, useLocation } from "react-router-dom"; +import { Outlet, ScrollRestoration, useLocation } from "react-router-dom"; import * as R from "remeda"; -import * as BackendAPISchemas from "@frontend/common/src/schemas/backendAPI"; -import MainLayout from "./components/layout/index.tsx"; -import { PageIdParamRenderer, RouteRenderer } from "./components/pages/dynamic_route.tsx"; -import { PresentationDetailPage } from "./components/pages/presentation_detail.tsx"; -import { ShopSignInPage } from "./components/pages/sign_in.tsx"; -import { SponsorDetailPage } from "./components/pages/sponsor_detail.tsx"; -import { Test } from "./components/pages/test.tsx"; -import { IS_DEBUG_ENV } from "./consts"; import { useAppContext } from "./contexts/app_context"; export const App: React.FC = () => { @@ -45,15 +38,9 @@ export const App: React.FC = () => { }, [location, language, flatSiteMap, sponsorTiers]); return ( - - }> - {IS_DEBUG_ENV && } />} - } /> - } /> - } /> - } /> - } /> - - + <> + + + ); }; diff --git a/apps/pyconkr-2025/src/main.tsx b/apps/pyconkr-2025/src/main.tsx index eef13e6..63c3dc4 100644 --- a/apps/pyconkr-2025/src/main.tsx +++ b/apps/pyconkr-2025/src/main.tsx @@ -9,9 +9,9 @@ import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; import { SnackbarProvider } from "notistack"; import * as React from "react"; import * as ReactDom from "react-dom/client"; -import { BrowserRouter } from "react-router-dom"; +import { RouterProvider } from "react-router-dom"; -import { App } from "./App.tsx"; +import { router } from "./router.tsx"; import { IS_DEBUG_ENV } from "./consts"; import { LOCAL_STORAGE_LANGUAGE_KEY } from "./consts/local_stroage.ts"; import { PyConKRMDXComponents } from "./consts/mdx_components.ts"; @@ -85,23 +85,21 @@ const MainApp: React.FC = () => { - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + diff --git a/apps/pyconkr-2025/src/router.tsx b/apps/pyconkr-2025/src/router.tsx new file mode 100644 index 0000000..3cd7990 --- /dev/null +++ b/apps/pyconkr-2025/src/router.tsx @@ -0,0 +1,29 @@ +import { createBrowserRouter } from "react-router-dom"; + +import { App } from "./App.tsx"; +import MainLayout from "./components/layout/index.tsx"; +import { PageIdParamRenderer, RouteRenderer } from "./components/pages/dynamic_route.tsx"; +import { PresentationDetailPage } from "./components/pages/presentation_detail.tsx"; +import { ShopSignInPage } from "./components/pages/sign_in.tsx"; +import { SponsorDetailPage } from "./components/pages/sponsor_detail.tsx"; +import { Test } from "./components/pages/test.tsx"; +import { IS_DEBUG_ENV } from "./consts"; + +export const router = createBrowserRouter([ + { + element: , + children: [ + { + element: , + children: [ + ...(IS_DEBUG_ENV ? [{ path: "/debug", element: }] : []), + { path: "/account/sign-in", element: }, + { path: "/sponsors/:id", element: }, + { path: "/presentations/:id", element: }, + { path: "/pages/:id", element: }, + { path: "*", element: }, + ], + }, + ], + }, +]); diff --git a/apps/pyconkr-2026/src/App.tsx b/apps/pyconkr-2026/src/App.tsx index 051811e..b0a6ffc 100644 --- a/apps/pyconkr-2026/src/App.tsx +++ b/apps/pyconkr-2026/src/App.tsx @@ -2,14 +2,9 @@ import { useBackendClient, useFlattenSiteMapQuery, useSponsorQuery } from "@fron import * as BackendAPISchemas from "@frontend/common/src/schemas/backendAPI"; import { buildNestedSiteMap } from "@frontend/common/src/utils"; import * as React from "react"; -import { Route, Routes, useLocation } from "react-router-dom"; +import { Outlet, ScrollRestoration, useLocation } from "react-router-dom"; import * as R from "remeda"; -import MainLayout from "./components/layout/index.tsx"; -import { PageIdParamRenderer, RouteRenderer } from "./components/pages/dynamic_route.tsx"; -import { PresentationDetailPage } from "./components/pages/presentation_detail.tsx"; -import { ShopSignInPage } from "./components/pages/sign_in.tsx"; -import { SponsorDetailPage } from "./components/pages/sponsor_detail.tsx"; import { useAppContext } from "./contexts/app_context"; export const App: React.FC = () => { @@ -43,14 +38,9 @@ export const App: React.FC = () => { }, [location, language, flatSiteMap, sponsorTiers]); return ( - - }> - } /> - } /> - } /> - } /> - } /> - - + <> + + + ); }; diff --git a/apps/pyconkr-2026/src/main.tsx b/apps/pyconkr-2026/src/main.tsx index cf24b1f..bdd66fc 100644 --- a/apps/pyconkr-2026/src/main.tsx +++ b/apps/pyconkr-2026/src/main.tsx @@ -9,13 +9,13 @@ import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; import { SnackbarProvider } from "notistack"; import * as React from "react"; import * as ReactDom from "react-dom/client"; -import { BrowserRouter } from "react-router-dom"; +import { RouterProvider } from "react-router-dom"; -import { App } from "./App.tsx"; import { IS_DEBUG_ENV } from "./consts"; import { LOCAL_STORAGE_LANGUAGE_KEY } from "./consts/local_stroage.ts"; import { PyConKRMDXComponents } from "./consts/mdx_components.ts"; import { AppContext, AppContextType } from "./contexts/app_context.tsx"; +import { router } from "./router.tsx"; import { globalStyles, muiTheme } from "./styles/globalStyles.ts"; const queryClient = new QueryClient({ @@ -85,23 +85,21 @@ const MainApp: React.FC = () => { - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + diff --git a/apps/pyconkr-2026/src/router.tsx b/apps/pyconkr-2026/src/router.tsx new file mode 100644 index 0000000..4fd035a --- /dev/null +++ b/apps/pyconkr-2026/src/router.tsx @@ -0,0 +1,26 @@ +import { createBrowserRouter } from "react-router-dom"; + +import { App } from "./App.tsx"; +import MainLayout from "./components/layout/index.tsx"; +import { PageIdParamRenderer, RouteRenderer } from "./components/pages/dynamic_route.tsx"; +import { PresentationDetailPage } from "./components/pages/presentation_detail.tsx"; +import { ShopSignInPage } from "./components/pages/sign_in.tsx"; +import { SponsorDetailPage } from "./components/pages/sponsor_detail.tsx"; + +export const router = createBrowserRouter([ + { + element: , + children: [ + { + element: , + children: [ + { path: "/account/sign-in", element: }, + { path: "/sponsors/:id", element: }, + { path: "/presentations/:id", element: }, + { path: "/pages/:id", element: }, + { path: "*", element: }, + ], + }, + ], + }, +]);