@arch-cadre/panel 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/actions.cjs +18 -0
- package/dist/actions/actions.d.ts +4 -0
- package/dist/actions/actions.mjs +10 -0
- package/dist/actions/index.cjs +27 -0
- package/dist/actions/index.d.ts +2 -0
- package/dist/actions/index.mjs +2 -0
- package/dist/actions/manager.cjs +138 -0
- package/dist/actions/manager.d.ts +14 -0
- package/dist/actions/manager.mjs +135 -0
- package/dist/actions/profile.cjs +169 -0
- package/dist/actions/profile.d.ts +8 -0
- package/dist/actions/profile.mjs +135 -0
- package/dist/actions/settings.cjs +26 -0
- package/dist/actions/settings.d.ts +7 -0
- package/dist/actions/settings.mjs +20 -0
- package/dist/index.cjs +29 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.mjs +25 -0
- package/dist/intl.d.ts +9 -0
- package/dist/navigation.cjs +38 -0
- package/dist/navigation.d.ts +2 -0
- package/dist/navigation.mjs +39 -0
- package/dist/routes.cjs +71 -0
- package/dist/routes.d.ts +4 -0
- package/dist/routes.mjs +71 -0
- package/dist/types.cjs +1 -0
- package/dist/types.d.ts +13 -0
- package/dist/types.mjs +0 -0
- package/dist/ui/[...catchAll]/page.cjs +127 -0
- package/dist/ui/[...catchAll]/page.d.ts +13 -0
- package/dist/ui/[...catchAll]/page.mjs +88 -0
- package/dist/ui/components/app-content.cjs +49 -0
- package/dist/ui/components/app-content.d.ts +6 -0
- package/dist/ui/components/app-content.mjs +34 -0
- package/dist/ui/components/app-header.cjs +55 -0
- package/dist/ui/components/app-header.d.ts +6 -0
- package/dist/ui/components/app-header.mjs +45 -0
- package/dist/ui/components/app-sidebar.cjs +133 -0
- package/dist/ui/components/app-sidebar.d.ts +17 -0
- package/dist/ui/components/app-sidebar.mjs +142 -0
- package/dist/ui/components/app-user.cjs +102 -0
- package/dist/ui/components/app-user.d.ts +2 -0
- package/dist/ui/components/app-user.mjs +92 -0
- package/dist/ui/components/breadcrumb-slot.cjs +35 -0
- package/dist/ui/components/breadcrumb-slot.d.ts +2 -0
- package/dist/ui/components/breadcrumb-slot.mjs +31 -0
- package/dist/ui/components/manager/module-card.cjs +213 -0
- package/dist/ui/components/manager/module-card.d.ts +12 -0
- package/dist/ui/components/manager/module-card.mjs +197 -0
- package/dist/ui/components/manager/module-list.cjs +52 -0
- package/dist/ui/components/manager/module-list.d.ts +4 -0
- package/dist/ui/components/manager/module-list.mjs +16 -0
- package/dist/ui/components/manager/module-upload.cjs +81 -0
- package/dist/ui/components/manager/module-upload.d.ts +2 -0
- package/dist/ui/components/manager/module-upload.mjs +68 -0
- package/dist/ui/components/profile/components.cjs +239 -0
- package/dist/ui/components/profile/components.d.ts +8 -0
- package/dist/ui/components/profile/components.mjs +219 -0
- package/dist/ui/components/profile/link.cjs +25 -0
- package/dist/ui/components/profile/link.d.ts +1 -0
- package/dist/ui/components/profile/link.mjs +13 -0
- package/dist/ui/components/profile/page.cjs +41 -0
- package/dist/ui/components/profile/page.d.ts +1 -0
- package/dist/ui/components/profile/page.mjs +21 -0
- package/dist/ui/components/sidebar-slot.cjs +49 -0
- package/dist/ui/components/sidebar-slot.d.ts +2 -0
- package/dist/ui/components/sidebar-slot.mjs +33 -0
- package/dist/ui/dashboard/page.cjs +31 -0
- package/dist/ui/dashboard/page.d.ts +2 -0
- package/dist/ui/dashboard/page.mjs +9 -0
- package/dist/ui/error.cjs +50 -0
- package/dist/ui/error.d.ts +7 -0
- package/dist/ui/error.mjs +35 -0
- package/dist/ui/layout.cjs +48 -0
- package/dist/ui/layout.d.ts +4 -0
- package/dist/ui/layout.mjs +35 -0
- package/dist/ui/modules/docs/page.cjs +98 -0
- package/dist/ui/modules/docs/page.d.ts +6 -0
- package/dist/ui/modules/docs/page.mjs +46 -0
- package/dist/ui/modules/page.cjs +30 -0
- package/dist/ui/modules/page.d.ts +2 -0
- package/dist/ui/modules/page.mjs +10 -0
- package/dist/ui/page.cjs +18 -0
- package/dist/ui/page.d.ts +1 -0
- package/dist/ui/page.mjs +9 -0
- package/dist/ui/router.cjs +61 -0
- package/dist/ui/router.d.ts +5 -0
- package/dist/ui/router.mjs +51 -0
- package/dist/ui/settings/page.cjs +61 -0
- package/dist/ui/settings/page.d.ts +2 -0
- package/dist/ui/settings/page.mjs +22 -0
- package/dist/ui/settings-page.cjs +76 -0
- package/dist/ui/settings-page.d.ts +2 -0
- package/dist/ui/settings-page.mjs +57 -0
- package/locales/en/global.json +80 -0
- package/manifest.json +11 -0
- package/package.json +67 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
module.exports = SidebarSlot;
|
|
7
|
+
var _server = require("@arch-cadre/modules/server");
|
|
8
|
+
var React = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _appSidebar = require("./app-sidebar.cjs");
|
|
10
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
11
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
12
|
+
const staticData = [];
|
|
13
|
+
async function SidebarSlot() {
|
|
14
|
+
const moduleGroups = await (0, _server.getKryoModuleNavigationGrouped)("admin");
|
|
15
|
+
const groupsMap = /* @__PURE__ */new Map();
|
|
16
|
+
for (const group of staticData) {
|
|
17
|
+
groupsMap.set(group.title, {
|
|
18
|
+
...group
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
for (const [title, items] of Object.entries(moduleGroups)) {
|
|
22
|
+
if (groupsMap.has(title)) {
|
|
23
|
+
const existing = groupsMap.get(title);
|
|
24
|
+
for (const item of items) {
|
|
25
|
+
if (!existing.items.some(i => i.url === item.url)) {
|
|
26
|
+
existing.items.push(item);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
} else {
|
|
30
|
+
groupsMap.set(title, {
|
|
31
|
+
title,
|
|
32
|
+
items
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const finalData = Array.from(groupsMap.values());
|
|
37
|
+
finalData.sort((a, b) => a.title.localeCompare(b.title));
|
|
38
|
+
const sidebarData = finalData.map(({
|
|
39
|
+
title,
|
|
40
|
+
items
|
|
41
|
+
}) => ({
|
|
42
|
+
title,
|
|
43
|
+
items
|
|
44
|
+
}));
|
|
45
|
+
return /* @__PURE__ */React.createElement(_appSidebar.AppSidebar, {
|
|
46
|
+
isMain: true,
|
|
47
|
+
data: sidebarData
|
|
48
|
+
});
|
|
49
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { getKryoModuleNavigationGrouped } from "@arch-cadre/modules/server";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { AppSidebar } from "./app-sidebar.mjs";
|
|
4
|
+
const staticData = [];
|
|
5
|
+
export default async function SidebarSlot() {
|
|
6
|
+
const moduleGroups = await getKryoModuleNavigationGrouped("admin");
|
|
7
|
+
const groupsMap = /* @__PURE__ */ new Map();
|
|
8
|
+
for (const group of staticData) {
|
|
9
|
+
groupsMap.set(group.title, { ...group });
|
|
10
|
+
}
|
|
11
|
+
for (const [title, items] of Object.entries(moduleGroups)) {
|
|
12
|
+
if (groupsMap.has(title)) {
|
|
13
|
+
const existing = groupsMap.get(title);
|
|
14
|
+
for (const item of items) {
|
|
15
|
+
if (!existing.items.some((i) => i.url === item.url)) {
|
|
16
|
+
existing.items.push(item);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
} else {
|
|
20
|
+
groupsMap.set(title, {
|
|
21
|
+
title,
|
|
22
|
+
items
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const finalData = Array.from(groupsMap.values());
|
|
27
|
+
finalData.sort((a, b) => a.title.localeCompare(b.title));
|
|
28
|
+
const sidebarData = finalData.map(({ title, items }) => ({
|
|
29
|
+
title,
|
|
30
|
+
items
|
|
31
|
+
}));
|
|
32
|
+
return /* @__PURE__ */ React.createElement(AppSidebar, { isMain: true, data: sidebarData });
|
|
33
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
module.exports = Stats01;
|
|
7
|
+
var _server = require("@arch-cadre/core/server");
|
|
8
|
+
var _server2 = require("@arch-cadre/intl/server");
|
|
9
|
+
var _modules = require("@arch-cadre/modules");
|
|
10
|
+
var React = _interopRequireWildcard(require("react"));
|
|
11
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
12
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
|
+
async function Stats01() {
|
|
14
|
+
const {
|
|
15
|
+
user
|
|
16
|
+
} = await (0, _server.getCurrentSession)();
|
|
17
|
+
const {
|
|
18
|
+
t
|
|
19
|
+
} = await (0, _server2.getTranslation)();
|
|
20
|
+
return /* @__PURE__ */React.createElement("div", {
|
|
21
|
+
className: "grid gap-6"
|
|
22
|
+
}, /* @__PURE__ */React.createElement("h1", null, t("Welcome {name}", {
|
|
23
|
+
name: user?.name
|
|
24
|
+
})), /* @__PURE__ */React.createElement(_modules.WidgetArea, {
|
|
25
|
+
area: "dashboard-stats",
|
|
26
|
+
className: "space-y-6"
|
|
27
|
+
}), /* @__PURE__ */React.createElement(_modules.WidgetArea, {
|
|
28
|
+
area: "dashboard-main",
|
|
29
|
+
className: "space-y-6"
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { getCurrentSession } from "@arch-cadre/core/server";
|
|
2
|
+
import { getTranslation } from "@arch-cadre/intl/server";
|
|
3
|
+
import { WidgetArea } from "@arch-cadre/modules";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
export default async function Stats01() {
|
|
6
|
+
const { user } = await getCurrentSession();
|
|
7
|
+
const { t } = await getTranslation();
|
|
8
|
+
return /* @__PURE__ */ React.createElement("div", { className: "grid gap-6" }, /* @__PURE__ */ React.createElement("h1", null, t("Welcome {name}", { name: user?.name })), /* @__PURE__ */ React.createElement(WidgetArea, { area: "dashboard-stats", className: "space-y-6" }), /* @__PURE__ */ React.createElement(WidgetArea, { area: "dashboard-main", className: "space-y-6" }));
|
|
9
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
module.exports = ErrorPage;
|
|
8
|
+
var _intl = require("@arch-cadre/intl");
|
|
9
|
+
var _button = require("@arch-cadre/ui/components/button");
|
|
10
|
+
var _empty = require("@arch-cadre/ui/components/empty");
|
|
11
|
+
var _react = require("@iconify/react");
|
|
12
|
+
var _react2 = _interopRequireWildcard(require("react"));
|
|
13
|
+
var React = _react2;
|
|
14
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
15
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
16
|
+
function ErrorPage({
|
|
17
|
+
error,
|
|
18
|
+
reset
|
|
19
|
+
}) {
|
|
20
|
+
const {
|
|
21
|
+
t
|
|
22
|
+
} = (0, _intl.useTranslation)();
|
|
23
|
+
(0, _react2.useEffect)(() => {
|
|
24
|
+
console.error(error);
|
|
25
|
+
}, [error]);
|
|
26
|
+
const dbError = error.message.startsWith("DB_ERROR");
|
|
27
|
+
const unauthorizedError = error.message.startsWith("UNAUTHORIZED");
|
|
28
|
+
const otherError = !dbError && !unauthorizedError;
|
|
29
|
+
return /* @__PURE__ */React.createElement("div", {
|
|
30
|
+
className: "flex-1 flex w-full items-center justify-center"
|
|
31
|
+
}, /* @__PURE__ */React.createElement("div", {
|
|
32
|
+
className: "flex w-full justify-center h-[calc(100svh-56px-var(--header-height))] items-center"
|
|
33
|
+
}, /* @__PURE__ */React.createElement("div", null, /* @__PURE__ */React.createElement(_empty.Empty, null, /* @__PURE__ */React.createElement(_empty.EmptyHeader, {
|
|
34
|
+
className: "max-w-xl"
|
|
35
|
+
}, /* @__PURE__ */React.createElement(_empty.EmptyTitle, {
|
|
36
|
+
className: "font-black font-mono text-5xl mb-5"
|
|
37
|
+
}, t("Error")), /* @__PURE__ */React.createElement(_empty.EmptyDescription, {
|
|
38
|
+
className: "text-nowrap"
|
|
39
|
+
}, t("An error occurred while loading the page."), dbError && /* @__PURE__ */React.createElement(React.Fragment, null, /* @__PURE__ */React.createElement("p", null, t("errors.db_error")), /* @__PURE__ */React.createElement("ul", {
|
|
40
|
+
className: "list-inside list-disc text-sm"
|
|
41
|
+
}, /* @__PURE__ */React.createElement("li", null, t("Check database connection")), /* @__PURE__ */React.createElement("li", null, t("Check core settings")), /* @__PURE__ */React.createElement("li", null, t("Check module dependencies")))), unauthorizedError && /* @__PURE__ */React.createElement(React.Fragment, null, /* @__PURE__ */React.createElement("p", null, t("Unauthorized")), /* @__PURE__ */React.createElement("ul", {
|
|
42
|
+
className: "list-inside list-disc text-sm"
|
|
43
|
+
}, /* @__PURE__ */React.createElement("li", null, t("Unauthorized access to the requested resource")), /* @__PURE__ */React.createElement("li", null, t("Check permissions for the current user")))), otherError && /* @__PURE__ */React.createElement("p", null, error.message ?? t("Unknown error")))), /* @__PURE__ */React.createElement(_empty.EmptyContent, null, /* @__PURE__ */React.createElement(_button.Button, {
|
|
44
|
+
variant: "destructive",
|
|
45
|
+
className: "mt-4",
|
|
46
|
+
onClick: () => reset()
|
|
47
|
+
}, /* @__PURE__ */React.createElement(_react.Icon, {
|
|
48
|
+
icon: "solar:refresh-circle-broken"
|
|
49
|
+
}), t("Try Again")))))));
|
|
50
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useTranslation } from "@arch-cadre/intl";
|
|
3
|
+
import { Button } from "@arch-cadre/ui/components/button";
|
|
4
|
+
import {
|
|
5
|
+
Empty,
|
|
6
|
+
EmptyContent,
|
|
7
|
+
EmptyDescription,
|
|
8
|
+
EmptyHeader,
|
|
9
|
+
EmptyTitle
|
|
10
|
+
} from "@arch-cadre/ui/components/empty";
|
|
11
|
+
import { Icon } from "@iconify/react";
|
|
12
|
+
import * as React from "react";
|
|
13
|
+
import { useEffect } from "react";
|
|
14
|
+
export default function ErrorPage({
|
|
15
|
+
error,
|
|
16
|
+
reset
|
|
17
|
+
}) {
|
|
18
|
+
const { t } = useTranslation();
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
console.error(error);
|
|
21
|
+
}, [error]);
|
|
22
|
+
const dbError = error.message.startsWith("DB_ERROR");
|
|
23
|
+
const unauthorizedError = error.message.startsWith("UNAUTHORIZED");
|
|
24
|
+
const otherError = !dbError && !unauthorizedError;
|
|
25
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex-1 flex w-full items-center justify-center" }, /* @__PURE__ */ React.createElement("div", { className: "flex w-full justify-center h-[calc(100svh-56px-var(--header-height))] items-center" }, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement(Empty, null, /* @__PURE__ */ React.createElement(EmptyHeader, { className: "max-w-xl" }, /* @__PURE__ */ React.createElement(EmptyTitle, { className: "font-black font-mono text-5xl mb-5" }, t("Error")), /* @__PURE__ */ React.createElement(EmptyDescription, { className: "text-nowrap" }, t("An error occurred while loading the page."), dbError && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("p", null, t("errors.db_error")), /* @__PURE__ */ React.createElement("ul", { className: "list-inside list-disc text-sm" }, /* @__PURE__ */ React.createElement("li", null, t("Check database connection")), /* @__PURE__ */ React.createElement("li", null, t("Check core settings")), /* @__PURE__ */ React.createElement("li", null, t("Check module dependencies")))), unauthorizedError && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("p", null, t("Unauthorized")), /* @__PURE__ */ React.createElement("ul", { className: "list-inside list-disc text-sm" }, /* @__PURE__ */ React.createElement("li", null, t("Unauthorized access to the requested resource")), /* @__PURE__ */ React.createElement("li", null, t("Check permissions for the current user")))), otherError && /* @__PURE__ */ React.createElement("p", null, error.message ?? t("Unknown error")))), /* @__PURE__ */ React.createElement(EmptyContent, null, /* @__PURE__ */ React.createElement(
|
|
26
|
+
Button,
|
|
27
|
+
{
|
|
28
|
+
variant: "destructive",
|
|
29
|
+
className: "mt-4",
|
|
30
|
+
onClick: () => reset()
|
|
31
|
+
},
|
|
32
|
+
/* @__PURE__ */ React.createElement(Icon, { icon: "solar:refresh-circle-broken" }),
|
|
33
|
+
t("Try Again")
|
|
34
|
+
))))));
|
|
35
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use server";
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
module.exports = RootLayout;
|
|
8
|
+
var _server = require("@arch-cadre/core/server");
|
|
9
|
+
var _sidebar = require("@arch-cadre/ui/components/sidebar");
|
|
10
|
+
var _accessDenied = require("@arch-cadre/ui/shared/access-denied");
|
|
11
|
+
var _navigation = require("next/navigation");
|
|
12
|
+
var React = _interopRequireWildcard(require("react"));
|
|
13
|
+
var _appContent = require("./components/app-content.cjs");
|
|
14
|
+
var _breadcrumbSlot = _interopRequireDefault(require("./components/breadcrumb-slot.cjs"));
|
|
15
|
+
var _sidebarSlot = _interopRequireDefault(require("./components/sidebar-slot.cjs"));
|
|
16
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
18
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
19
|
+
async function RootLayout({
|
|
20
|
+
children
|
|
21
|
+
}) {
|
|
22
|
+
const {
|
|
23
|
+
user,
|
|
24
|
+
session
|
|
25
|
+
} = await (0, _server.getCurrentSession)();
|
|
26
|
+
if (session === null || user === null) {
|
|
27
|
+
return (0, _navigation.redirect)("/signin");
|
|
28
|
+
}
|
|
29
|
+
const security = await (0, _server.checkSecurity)(session, user, ["admin", "user"]);
|
|
30
|
+
if (!security.satisfied) {
|
|
31
|
+
if (security.redirect && security.redirect !== "/kryo") {
|
|
32
|
+
return (0, _navigation.redirect)(security.redirect);
|
|
33
|
+
}
|
|
34
|
+
return /* @__PURE__ */React.createElement("div", {
|
|
35
|
+
className: "flex items-center justify-center min-h-screen bg-background w-full"
|
|
36
|
+
}, /* @__PURE__ */React.createElement(_accessDenied.AccessDenied, null));
|
|
37
|
+
}
|
|
38
|
+
return /* @__PURE__ */React.createElement("div", {
|
|
39
|
+
className: "bg-sidebar [--header-height:calc(--spacing(14))]"
|
|
40
|
+
}, /* @__PURE__ */React.createElement(_sidebar.SidebarProvider, {
|
|
41
|
+
style: {
|
|
42
|
+
"--sidebar": "transparent",
|
|
43
|
+
"--sidebar-width": "280px"
|
|
44
|
+
}
|
|
45
|
+
}, /* @__PURE__ */React.createElement(_sidebarSlot.default, null), /* @__PURE__ */React.createElement(_appContent.AppContent, {
|
|
46
|
+
breadcrumbs: /* @__PURE__ */React.createElement(_breadcrumbSlot.default, null)
|
|
47
|
+
}, children)));
|
|
48
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use server";
|
|
2
|
+
import { checkSecurity, getCurrentSession } from "@arch-cadre/core/server";
|
|
3
|
+
import { SidebarProvider } from "@arch-cadre/ui/components/sidebar";
|
|
4
|
+
import { AccessDenied } from "@arch-cadre/ui/shared/access-denied";
|
|
5
|
+
import { redirect } from "next/navigation";
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
import { AppContent } from "./components/app-content.mjs";
|
|
8
|
+
import BreadcrumbSlot from "./components/breadcrumb-slot.mjs";
|
|
9
|
+
import SidebarSlot from "./components/sidebar-slot.mjs";
|
|
10
|
+
export default async function RootLayout({
|
|
11
|
+
children
|
|
12
|
+
}) {
|
|
13
|
+
const { user, session } = await getCurrentSession();
|
|
14
|
+
if (session === null || user === null) {
|
|
15
|
+
return redirect("/signin");
|
|
16
|
+
}
|
|
17
|
+
const security = await checkSecurity(session, user, ["admin", "user"]);
|
|
18
|
+
if (!security.satisfied) {
|
|
19
|
+
if (security.redirect && security.redirect !== "/kryo") {
|
|
20
|
+
return redirect(security.redirect);
|
|
21
|
+
}
|
|
22
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex items-center justify-center min-h-screen bg-background w-full" }, /* @__PURE__ */ React.createElement(AccessDenied, null));
|
|
23
|
+
}
|
|
24
|
+
return /* @__PURE__ */ React.createElement("div", { className: "bg-sidebar [--header-height:calc(--spacing(14))]" }, /* @__PURE__ */ React.createElement(
|
|
25
|
+
SidebarProvider,
|
|
26
|
+
{
|
|
27
|
+
style: {
|
|
28
|
+
"--sidebar": "transparent",
|
|
29
|
+
"--sidebar-width": "280px"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
/* @__PURE__ */ React.createElement(SidebarSlot, null),
|
|
33
|
+
/* @__PURE__ */ React.createElement(AppContent, { breadcrumbs: /* @__PURE__ */ React.createElement(BreadcrumbSlot, null) }, children)
|
|
34
|
+
));
|
|
35
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
module.exports = ModuleDocsPage;
|
|
7
|
+
var _server = require("@arch-cadre/intl/server");
|
|
8
|
+
var _button = require("@arch-cadre/ui/components/button");
|
|
9
|
+
var _card = require("@arch-cadre/ui/components/card");
|
|
10
|
+
var _tabs = require("@arch-cadre/ui/components/tabs");
|
|
11
|
+
var _react = require("@iconify/react");
|
|
12
|
+
var _link = _interopRequireDefault(require("next/link"));
|
|
13
|
+
var _navigation = require("next/navigation");
|
|
14
|
+
var React = _interopRequireWildcard(require("react"));
|
|
15
|
+
var _manager = require("../../../actions/manager.cjs");
|
|
16
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
17
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
18
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
19
|
+
async function ModuleDocsPage({
|
|
20
|
+
params
|
|
21
|
+
}) {
|
|
22
|
+
const {
|
|
23
|
+
slug: moduleId
|
|
24
|
+
} = await params;
|
|
25
|
+
if (!moduleId) return (0, _navigation.notFound)();
|
|
26
|
+
const {
|
|
27
|
+
t
|
|
28
|
+
} = await (0, _server.getTranslation)();
|
|
29
|
+
const docs = await (0, _manager.getModuleDocumentation)(moduleId);
|
|
30
|
+
if (!docs) {
|
|
31
|
+
return /* @__PURE__ */React.createElement("div", {
|
|
32
|
+
className: "flex flex-col items-center justify-center py-20 space-y-4"
|
|
33
|
+
}, /* @__PURE__ */React.createElement(_react.Icon, {
|
|
34
|
+
icon: "solar:document-text-broken",
|
|
35
|
+
className: "size-16 text-muted-foreground"
|
|
36
|
+
}), /* @__PURE__ */React.createElement("h2", {
|
|
37
|
+
className: "text-xl font-bold"
|
|
38
|
+
}, t("Not Found")), /* @__PURE__ */React.createElement("p", {
|
|
39
|
+
className: "text-muted-foreground text-center max-w-md"
|
|
40
|
+
}, t("Not found documentation for path", {
|
|
41
|
+
path: "docs/"
|
|
42
|
+
})), /* @__PURE__ */React.createElement(_button.Button, {
|
|
43
|
+
asChild: true,
|
|
44
|
+
variant: "outline"
|
|
45
|
+
}, /* @__PURE__ */React.createElement(_link.default, {
|
|
46
|
+
href: "/module/module-manager"
|
|
47
|
+
}, t("back"))));
|
|
48
|
+
}
|
|
49
|
+
return /* @__PURE__ */React.createElement("div", {
|
|
50
|
+
className: "space-y-6"
|
|
51
|
+
}, /* @__PURE__ */React.createElement("div", {
|
|
52
|
+
className: "flex items-center justify-between"
|
|
53
|
+
}, /* @__PURE__ */React.createElement("div", {
|
|
54
|
+
className: "space-y-1"
|
|
55
|
+
}, /* @__PURE__ */React.createElement("h2", {
|
|
56
|
+
className: "text-3xl font-black tracking-tight"
|
|
57
|
+
}, t("docs.title")), /* @__PURE__ */React.createElement("p", {
|
|
58
|
+
className: "text-muted-foreground text-sm"
|
|
59
|
+
}, t("docs.browsing"), " ", /* @__PURE__ */React.createElement("span", {
|
|
60
|
+
className: "font-bold text-primary"
|
|
61
|
+
}, moduleId))), /* @__PURE__ */React.createElement(_button.Button, {
|
|
62
|
+
asChild: true,
|
|
63
|
+
variant: "outline",
|
|
64
|
+
size: "sm"
|
|
65
|
+
}, /* @__PURE__ */React.createElement(_link.default, {
|
|
66
|
+
href: "/module/module-manager",
|
|
67
|
+
className: "flex items-center gap-2"
|
|
68
|
+
}, /* @__PURE__ */React.createElement(_react.Icon, {
|
|
69
|
+
icon: "solar:arrow-left-broken",
|
|
70
|
+
className: "size-4"
|
|
71
|
+
}), t("docs.back")))), /* @__PURE__ */React.createElement(_tabs.Tabs, {
|
|
72
|
+
defaultValue: docs[0].filename,
|
|
73
|
+
className: "w-full"
|
|
74
|
+
}, /* @__PURE__ */React.createElement(_tabs.TabsList, {
|
|
75
|
+
className: "bg-muted/50 mb-8"
|
|
76
|
+
}, docs.map(doc => /* @__PURE__ */React.createElement(_tabs.TabsTrigger, {
|
|
77
|
+
key: doc.filename,
|
|
78
|
+
value: doc.filename
|
|
79
|
+
}, doc.title))), docs.map(doc => /* @__PURE__ */React.createElement(_tabs.TabsContent, {
|
|
80
|
+
key: doc.filename,
|
|
81
|
+
value: doc.filename,
|
|
82
|
+
className: "mt-0"
|
|
83
|
+
}, /* @__PURE__ */React.createElement(_card.Card, {
|
|
84
|
+
className: "bg-card shadow-xl border-primary/5"
|
|
85
|
+
}, /* @__PURE__ */React.createElement(_card.CardHeader, {
|
|
86
|
+
className: "border-b bg-muted/10"
|
|
87
|
+
}, /* @__PURE__ */React.createElement(_card.CardTitle, {
|
|
88
|
+
className: "text-xl font-bold"
|
|
89
|
+
}, doc.title), /* @__PURE__ */React.createElement(_card.CardDescription, {
|
|
90
|
+
className: "font-mono text-[10px]"
|
|
91
|
+
}, t("docs.file"), " ", doc.filename)), /* @__PURE__ */React.createElement(_card.CardContent, {
|
|
92
|
+
className: "pt-8"
|
|
93
|
+
}, /* @__PURE__ */React.createElement("div", {
|
|
94
|
+
className: "prose prose-slate dark:prose-invert max-w-none"
|
|
95
|
+
}, /* @__PURE__ */React.createElement("pre", {
|
|
96
|
+
className: "whitespace-pre-wrap font-sans text-base leading-relaxed bg-transparent border-none p-0 text-foreground"
|
|
97
|
+
}, doc.content))))))));
|
|
98
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { getTranslation } from "@arch-cadre/intl/server";
|
|
2
|
+
import { Button } from "@arch-cadre/ui/components/button";
|
|
3
|
+
import {
|
|
4
|
+
Card,
|
|
5
|
+
CardContent,
|
|
6
|
+
CardDescription,
|
|
7
|
+
CardHeader,
|
|
8
|
+
CardTitle
|
|
9
|
+
} from "@arch-cadre/ui/components/card";
|
|
10
|
+
import {
|
|
11
|
+
Tabs,
|
|
12
|
+
TabsContent,
|
|
13
|
+
TabsList,
|
|
14
|
+
TabsTrigger
|
|
15
|
+
} from "@arch-cadre/ui/components/tabs";
|
|
16
|
+
import { Icon } from "@iconify/react";
|
|
17
|
+
import Link from "next/link";
|
|
18
|
+
import { notFound } from "next/navigation";
|
|
19
|
+
import * as React from "react";
|
|
20
|
+
import { getModuleDocumentation } from "../../../actions/manager.mjs";
|
|
21
|
+
export default async function ModuleDocsPage({
|
|
22
|
+
params
|
|
23
|
+
}) {
|
|
24
|
+
const { slug: moduleId } = await params;
|
|
25
|
+
if (!moduleId) return notFound();
|
|
26
|
+
const { t } = await getTranslation();
|
|
27
|
+
const docs = await getModuleDocumentation(moduleId);
|
|
28
|
+
if (!docs) {
|
|
29
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col items-center justify-center py-20 space-y-4" }, /* @__PURE__ */ React.createElement(
|
|
30
|
+
Icon,
|
|
31
|
+
{
|
|
32
|
+
icon: "solar:document-text-broken",
|
|
33
|
+
className: "size-16 text-muted-foreground"
|
|
34
|
+
}
|
|
35
|
+
), /* @__PURE__ */ React.createElement("h2", { className: "text-xl font-bold" }, t("Not Found")), /* @__PURE__ */ React.createElement("p", { className: "text-muted-foreground text-center max-w-md" }, t("Not found documentation for path", { path: "docs/" })), /* @__PURE__ */ React.createElement(Button, { asChild: true, variant: "outline" }, /* @__PURE__ */ React.createElement(Link, { href: "/module/module-manager" }, t("back"))));
|
|
36
|
+
}
|
|
37
|
+
return /* @__PURE__ */ React.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React.createElement("div", { className: "space-y-1" }, /* @__PURE__ */ React.createElement("h2", { className: "text-3xl font-black tracking-tight" }, t("docs.title")), /* @__PURE__ */ React.createElement("p", { className: "text-muted-foreground text-sm" }, t("docs.browsing"), " ", /* @__PURE__ */ React.createElement("span", { className: "font-bold text-primary" }, moduleId))), /* @__PURE__ */ React.createElement(Button, { asChild: true, variant: "outline", size: "sm" }, /* @__PURE__ */ React.createElement(
|
|
38
|
+
Link,
|
|
39
|
+
{
|
|
40
|
+
href: "/module/module-manager",
|
|
41
|
+
className: "flex items-center gap-2"
|
|
42
|
+
},
|
|
43
|
+
/* @__PURE__ */ React.createElement(Icon, { icon: "solar:arrow-left-broken", className: "size-4" }),
|
|
44
|
+
t("docs.back")
|
|
45
|
+
))), /* @__PURE__ */ React.createElement(Tabs, { defaultValue: docs[0].filename, className: "w-full" }, /* @__PURE__ */ React.createElement(TabsList, { className: "bg-muted/50 mb-8" }, docs.map((doc) => /* @__PURE__ */ React.createElement(TabsTrigger, { key: doc.filename, value: doc.filename }, doc.title))), docs.map((doc) => /* @__PURE__ */ React.createElement(TabsContent, { key: doc.filename, value: doc.filename, className: "mt-0" }, /* @__PURE__ */ React.createElement(Card, { className: "bg-card shadow-xl border-primary/5" }, /* @__PURE__ */ React.createElement(CardHeader, { className: "border-b bg-muted/10" }, /* @__PURE__ */ React.createElement(CardTitle, { className: "text-xl font-bold" }, doc.title), /* @__PURE__ */ React.createElement(CardDescription, { className: "font-mono text-[10px]" }, t("docs.file"), " ", doc.filename)), /* @__PURE__ */ React.createElement(CardContent, { className: "pt-8" }, /* @__PURE__ */ React.createElement("div", { className: "prose prose-slate dark:prose-invert max-w-none" }, /* @__PURE__ */ React.createElement("pre", { className: "whitespace-pre-wrap font-sans text-base leading-relaxed bg-transparent border-none p-0 text-foreground" }, doc.content))))))));
|
|
46
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
module.exports = ModuleAdminPage;
|
|
7
|
+
var _server = require("@arch-cadre/intl/server");
|
|
8
|
+
var React = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _manager = require("../../actions/manager.cjs");
|
|
10
|
+
var _moduleList = require("../components/manager/module-list.cjs");
|
|
11
|
+
var _moduleUpload = require("../components/manager/module-upload.cjs");
|
|
12
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
13
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
14
|
+
async function ModuleAdminPage() {
|
|
15
|
+
const modules = await (0, _manager.getModulesAction)();
|
|
16
|
+
const {
|
|
17
|
+
t
|
|
18
|
+
} = await (0, _server.getTranslation)();
|
|
19
|
+
return /* @__PURE__ */React.createElement("div", {
|
|
20
|
+
className: "space-y-6"
|
|
21
|
+
}, /* @__PURE__ */React.createElement("div", {
|
|
22
|
+
className: "flex flex-col md:flex-row md:items-center justify-between gap-4"
|
|
23
|
+
}, /* @__PURE__ */React.createElement("div", null, /* @__PURE__ */React.createElement("h1", {
|
|
24
|
+
className: "text-3xl font-black tracking-tight flex items-center gap-2"
|
|
25
|
+
}, t("Modules Marketplace")), /* @__PURE__ */React.createElement("p", {
|
|
26
|
+
className: "text-muted-foreground"
|
|
27
|
+
}, t("Manage your installed modules"))), /* @__PURE__ */React.createElement(_moduleUpload.ModuleUpload, null)), /* @__PURE__ */React.createElement(_moduleList.ModuleMarketplaceList, {
|
|
28
|
+
initialModules: modules
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { getTranslation } from "@arch-cadre/intl/server";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { getModulesAction } from "../../actions/manager.mjs";
|
|
4
|
+
import { ModuleMarketplaceList } from "../components/manager/module-list.mjs";
|
|
5
|
+
import { ModuleUpload } from "../components/manager/module-upload.mjs";
|
|
6
|
+
export default async function ModuleAdminPage() {
|
|
7
|
+
const modules = await getModulesAction();
|
|
8
|
+
const { t } = await getTranslation();
|
|
9
|
+
return /* @__PURE__ */ React.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React.createElement("div", { className: "flex flex-col md:flex-row md:items-center justify-between gap-4" }, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("h1", { className: "text-3xl font-black tracking-tight flex items-center gap-2" }, t("Modules Marketplace")), /* @__PURE__ */ React.createElement("p", { className: "text-muted-foreground" }, t("Manage your installed modules"))), /* @__PURE__ */ React.createElement(ModuleUpload, null)), /* @__PURE__ */ React.createElement(ModuleMarketplaceList, { initialModules: modules }));
|
|
10
|
+
}
|
package/dist/ui/page.cjs
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
module.exports = Page;
|
|
7
|
+
var _server = require("@arch-cadre/core/server");
|
|
8
|
+
var _navigation = require("next/navigation");
|
|
9
|
+
async function Page() {
|
|
10
|
+
const {
|
|
11
|
+
session,
|
|
12
|
+
user
|
|
13
|
+
} = await (0, _server.getCurrentSession)();
|
|
14
|
+
if (!session || !user) {
|
|
15
|
+
(0, _navigation.redirect)("/signin");
|
|
16
|
+
}
|
|
17
|
+
(0, _navigation.redirect)("/kryo/dashboard");
|
|
18
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function Page(): Promise<void>;
|
package/dist/ui/page.mjs
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { getCurrentSession } from "@arch-cadre/core/server";
|
|
2
|
+
import { redirect } from "next/navigation";
|
|
3
|
+
export default async function Page() {
|
|
4
|
+
const { session, user } = await getCurrentSession();
|
|
5
|
+
if (!session || !user) {
|
|
6
|
+
redirect("/signin");
|
|
7
|
+
}
|
|
8
|
+
redirect("/kryo/dashboard");
|
|
9
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.KryoRouter = KryoRouter;
|
|
7
|
+
var _server = require("@arch-cadre/core/server");
|
|
8
|
+
var _server2 = require("@arch-cadre/modules/server");
|
|
9
|
+
var _navigation = require("next/navigation");
|
|
10
|
+
var React = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _layout = _interopRequireDefault(require("./layout.cjs"));
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
14
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
15
|
+
function matchRoute(pattern, path) {
|
|
16
|
+
const paramNames = [];
|
|
17
|
+
const regexPattern = pattern.replace(/:([^/]+)/g, (_, name) => {
|
|
18
|
+
paramNames.push(name);
|
|
19
|
+
return "([^/]+)";
|
|
20
|
+
}).replace(/\//g, "\\/");
|
|
21
|
+
const regex = new RegExp(`^${regexPattern}$`);
|
|
22
|
+
const match = path.match(regex);
|
|
23
|
+
if (!match) return null;
|
|
24
|
+
const params = {};
|
|
25
|
+
paramNames.forEach((name, index) => {
|
|
26
|
+
params[name] = match[index + 1];
|
|
27
|
+
});
|
|
28
|
+
return params;
|
|
29
|
+
}
|
|
30
|
+
async function KryoRouter({
|
|
31
|
+
path,
|
|
32
|
+
searchParams
|
|
33
|
+
}) {
|
|
34
|
+
const routes = await (0, _server2.getKryoModuleRoutes)();
|
|
35
|
+
for (const route of routes) {
|
|
36
|
+
const params = matchRoute(route.path, path);
|
|
37
|
+
if (params) {
|
|
38
|
+
if (route.auth) {
|
|
39
|
+
const {
|
|
40
|
+
user,
|
|
41
|
+
session
|
|
42
|
+
} = await (0, _server.getCurrentSession)();
|
|
43
|
+
if (!user || !session) {
|
|
44
|
+
return (0, _navigation.redirect)("/signin");
|
|
45
|
+
}
|
|
46
|
+
const security = await (0, _server.checkSecurity)(session, user, route.roles, route.permissions);
|
|
47
|
+
if (!security.satisfied) {
|
|
48
|
+
return (0, _navigation.redirect)(security.redirect || "/signin");
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const Component = route.component;
|
|
52
|
+
const Layout = route.layout || _layout.default;
|
|
53
|
+
const content = /* @__PURE__ */React.createElement(Component, {
|
|
54
|
+
params,
|
|
55
|
+
searchParams
|
|
56
|
+
});
|
|
57
|
+
return /* @__PURE__ */React.createElement(Layout, null, content);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
}
|