import { ComponentType, Suspense } from "react"; import { Outlet, useLocation } from "react-router"; import type { RouteObject } from "react-router"; import type { RouteModule } from "@/routing/route-module"; function Modals({ modalRoutes }: { modalRoutes: Record }) { const modalPath = useLocation().state?.modal as string | undefined; const Modal = modalPath ? modalRoutes[modalPath] : undefined; if (!Modal) { return null; } return ; } export function createAppShellRoute( appLayout: RouteModule | undefined, modalRoutes: Record, ): Pick { const AppLayout = appLayout?.default ?? Outlet; function Layout() { return ( <> ); } function AppShell() { const Pending = appLayout?.Pending; if (Pending) { return ( }> ); } return ; } return { Component: appLayout?.default ? AppShell : Layout, ErrorBoundary: appLayout?.Catch, loader: appLayout?.Loader, }; }