// apps/web/src/routes/app-routes.tsx import type { IModuleClient } from "@erp/core/client"; import { Navigate, Route, createBrowserRouter, createRoutesFromElements } from "react-router-dom"; import { ModuleRoutes } from "@/components/module-routes"; import { AppLayout } from "@/layout"; import ShadcnShowcasePage from "@/pages/shadcn-ui-page"; import TailwindV4ShowcasePage from "@/pages/tailwindcss-page"; import { ErrorPage, LoginForm } from "../pages"; import { modules } from "../register-modules"; function groupModulesByLayout(modules: IModuleClient[]) { const groups: Record = { auth: [], app: [], }; for (const module of modules) { const layout = typeof module.layout === "string" ? module.layout : "app"; groups[layout] = groups[layout] ?? []; groups[layout].push(module); } return groups; } export const getAppRouter = () => { const params = { ...import.meta.env, }; const grouped = groupModulesByLayout(modules); return createBrowserRouter( createRoutesFromElements( } index /> {/* Auth Layout */} } index /> } path="login" /> } path="*" /> {/* App Layout */} }> {/* Test */} } path="shadcnui" /> } path="tailwindcss4" /> {/* Static / provisional routes */} } path="dashboard" /> } path="settings" /> } path="catalog" /> } path="quotes" /> {/* Dynamic module routes. Keep this last. */} } path="*" /> ) ); };