2026-03-07 18:27:23 +00:00
|
|
|
import type { IModuleClient } from "@erp/core/client";
|
2025-08-24 10:14:20 +00:00
|
|
|
import { AppLayout } from "@repo/rdx-ui/components";
|
2026-03-07 18:27:23 +00:00
|
|
|
import { Navigate, Route, createBrowserRouter, createRoutesFromElements } from "react-router-dom";
|
|
|
|
|
|
2025-11-04 17:36:02 +00:00
|
|
|
import { ModuleRoutes } from "@/components/module-routes";
|
2026-03-07 18:27:23 +00:00
|
|
|
|
2025-11-04 17:36:02 +00:00
|
|
|
import { ErrorPage, LoginForm } from "../pages";
|
2025-05-28 14:21:09 +00:00
|
|
|
import { modules } from "../register-modules"; // Aquí ca
|
|
|
|
|
|
|
|
|
|
function groupModulesByLayout(modules: IModuleClient[]) {
|
|
|
|
|
const groups: Record<string, IModuleClient[]> = {
|
|
|
|
|
auth: [],
|
|
|
|
|
app: [],
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if (modules) {
|
|
|
|
|
for (const module of modules) {
|
|
|
|
|
if (typeof module.layout !== "string") continue;
|
|
|
|
|
|
|
|
|
|
const layout = module.layout || "app";
|
|
|
|
|
groups[layout] = groups[layout] || [];
|
|
|
|
|
groups[layout].push(module);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return groups;
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-24 10:14:20 +00:00
|
|
|
export const getAppRouter = () => {
|
2025-05-28 14:21:09 +00:00
|
|
|
const params = {
|
|
|
|
|
...import.meta.env,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const grouped = groupModulesByLayout(modules);
|
|
|
|
|
|
2025-08-24 10:14:20 +00:00
|
|
|
return createBrowserRouter(
|
|
|
|
|
createRoutesFromElements(
|
2026-03-07 18:27:23 +00:00
|
|
|
<Route path="/">
|
2025-08-24 10:14:20 +00:00
|
|
|
{/* Auth Layout */}
|
2026-03-07 18:27:23 +00:00
|
|
|
<Route path="/auth">
|
|
|
|
|
<Route element={<Navigate to="login" />} index />
|
|
|
|
|
<Route element={<LoginForm />} path="login" />
|
|
|
|
|
<Route element={<ModuleRoutes modules={grouped.auth} params={params} />} path="*" />
|
2025-08-24 10:14:20 +00:00
|
|
|
</Route>
|
|
|
|
|
|
|
|
|
|
{/* App Layout */}
|
|
|
|
|
<Route element={<AppLayout />}>
|
|
|
|
|
{/* Dynamic Module Routes */}
|
2026-03-07 18:27:23 +00:00
|
|
|
<Route element={<ModuleRoutes modules={grouped.app} params={params} />} path="*" />
|
2025-08-24 10:14:20 +00:00
|
|
|
|
|
|
|
|
{/* Main Layout */}
|
2026-03-07 18:27:23 +00:00
|
|
|
<Route element={<ErrorPage />} path="/dashboard" />
|
|
|
|
|
<Route element={<ErrorPage />} path="/settings" />
|
|
|
|
|
<Route element={<ErrorPage />} path="/catalog" />
|
|
|
|
|
<Route element={<ErrorPage />} path="/quotes" />
|
2025-08-24 10:14:20 +00:00
|
|
|
</Route>
|
|
|
|
|
</Route>
|
|
|
|
|
)
|
2025-05-28 14:21:09 +00:00
|
|
|
);
|
|
|
|
|
};
|