import React from "react"; import { useAuthenticated, useRefineContext, useResource, useRouterContext, LoginPage as DefaultLoginPage, LayoutWrapper, CanAccess, ErrorComponent, } from "@pankod/refine-core"; import { rankRoutes } from "@tanstack/react-location-rank-routes"; import { Router, ReactLocation, Route, Navigate, useRouter, RouterProps, Outlet, } from "@tanstack/react-location"; import { ResourceComponentWrapper } from "./resourceComponent"; import { RefineRouteProps } from "./index"; export const location = new ReactLocation(); export function RouterComponent( this: { initialRoute?: string }, { children: _children, location: locationFromProps, ...rest }: RouterProps, ): JSX.Element | null { const { resources } = useResource(); const { DashboardPage, catchAll, LoginPage } = useRefineContext(); const { routes: customRoutes }: { routes: Route[] } = useRouterContext(); const { isFetching, isError } = useAuthenticated({ type: "routeProvider", }); if (isFetching) { return null; } const isAuthenticated = isError ? false : true; const renderLoginRouteElement = (): JSX.Element => { if (LoginPage) return ; return ; }; if (!isAuthenticated) { const routes: Route[] = [ ...[...(customRoutes || [])], { path: "/", element: renderLoginRouteElement(), }, { path: "/login", element: renderLoginRouteElement(), }, { path: "*", element: , }, ]; return ( ); } const resourceRoutes: Route[] = []; resources.map((resource) => { const route: Route = { path: `${resource.route}`, children: [ { path: "/", element: ( ), }, { path: `:action`, element: ( ), }, { path: `:action/:id`, element: ( ), }, ], }; resourceRoutes.push(route); }); const routes: Route[] = [ ...[...(customRoutes || [])].filter((p: RefineRouteProps) => !p.layout), { path: "/", element: ( ), children: [ ...[...(customRoutes || [])].filter( (p: RefineRouteProps) => p.layout, ), ...[...(resourceRoutes || [])], { path: "*", id: "catch-all", element: catchAll ?? , }, { path: "/", id: "index", element: DashboardPage ? ( } > ) : ( p.list)?.route}` } /> ), }, ], }, ]; return ( ); } const LoginNavigateWithToParam: React.FC = () => { const { state } = useRouter(); return ( ); };