@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.
Files changed (97) hide show
  1. package/dist/actions/actions.cjs +18 -0
  2. package/dist/actions/actions.d.ts +4 -0
  3. package/dist/actions/actions.mjs +10 -0
  4. package/dist/actions/index.cjs +27 -0
  5. package/dist/actions/index.d.ts +2 -0
  6. package/dist/actions/index.mjs +2 -0
  7. package/dist/actions/manager.cjs +138 -0
  8. package/dist/actions/manager.d.ts +14 -0
  9. package/dist/actions/manager.mjs +135 -0
  10. package/dist/actions/profile.cjs +169 -0
  11. package/dist/actions/profile.d.ts +8 -0
  12. package/dist/actions/profile.mjs +135 -0
  13. package/dist/actions/settings.cjs +26 -0
  14. package/dist/actions/settings.d.ts +7 -0
  15. package/dist/actions/settings.mjs +20 -0
  16. package/dist/index.cjs +29 -0
  17. package/dist/index.d.ts +3 -0
  18. package/dist/index.mjs +25 -0
  19. package/dist/intl.d.ts +9 -0
  20. package/dist/navigation.cjs +38 -0
  21. package/dist/navigation.d.ts +2 -0
  22. package/dist/navigation.mjs +39 -0
  23. package/dist/routes.cjs +71 -0
  24. package/dist/routes.d.ts +4 -0
  25. package/dist/routes.mjs +71 -0
  26. package/dist/types.cjs +1 -0
  27. package/dist/types.d.ts +13 -0
  28. package/dist/types.mjs +0 -0
  29. package/dist/ui/[...catchAll]/page.cjs +127 -0
  30. package/dist/ui/[...catchAll]/page.d.ts +13 -0
  31. package/dist/ui/[...catchAll]/page.mjs +88 -0
  32. package/dist/ui/components/app-content.cjs +49 -0
  33. package/dist/ui/components/app-content.d.ts +6 -0
  34. package/dist/ui/components/app-content.mjs +34 -0
  35. package/dist/ui/components/app-header.cjs +55 -0
  36. package/dist/ui/components/app-header.d.ts +6 -0
  37. package/dist/ui/components/app-header.mjs +45 -0
  38. package/dist/ui/components/app-sidebar.cjs +133 -0
  39. package/dist/ui/components/app-sidebar.d.ts +17 -0
  40. package/dist/ui/components/app-sidebar.mjs +142 -0
  41. package/dist/ui/components/app-user.cjs +102 -0
  42. package/dist/ui/components/app-user.d.ts +2 -0
  43. package/dist/ui/components/app-user.mjs +92 -0
  44. package/dist/ui/components/breadcrumb-slot.cjs +35 -0
  45. package/dist/ui/components/breadcrumb-slot.d.ts +2 -0
  46. package/dist/ui/components/breadcrumb-slot.mjs +31 -0
  47. package/dist/ui/components/manager/module-card.cjs +213 -0
  48. package/dist/ui/components/manager/module-card.d.ts +12 -0
  49. package/dist/ui/components/manager/module-card.mjs +197 -0
  50. package/dist/ui/components/manager/module-list.cjs +52 -0
  51. package/dist/ui/components/manager/module-list.d.ts +4 -0
  52. package/dist/ui/components/manager/module-list.mjs +16 -0
  53. package/dist/ui/components/manager/module-upload.cjs +81 -0
  54. package/dist/ui/components/manager/module-upload.d.ts +2 -0
  55. package/dist/ui/components/manager/module-upload.mjs +68 -0
  56. package/dist/ui/components/profile/components.cjs +239 -0
  57. package/dist/ui/components/profile/components.d.ts +8 -0
  58. package/dist/ui/components/profile/components.mjs +219 -0
  59. package/dist/ui/components/profile/link.cjs +25 -0
  60. package/dist/ui/components/profile/link.d.ts +1 -0
  61. package/dist/ui/components/profile/link.mjs +13 -0
  62. package/dist/ui/components/profile/page.cjs +41 -0
  63. package/dist/ui/components/profile/page.d.ts +1 -0
  64. package/dist/ui/components/profile/page.mjs +21 -0
  65. package/dist/ui/components/sidebar-slot.cjs +49 -0
  66. package/dist/ui/components/sidebar-slot.d.ts +2 -0
  67. package/dist/ui/components/sidebar-slot.mjs +33 -0
  68. package/dist/ui/dashboard/page.cjs +31 -0
  69. package/dist/ui/dashboard/page.d.ts +2 -0
  70. package/dist/ui/dashboard/page.mjs +9 -0
  71. package/dist/ui/error.cjs +50 -0
  72. package/dist/ui/error.d.ts +7 -0
  73. package/dist/ui/error.mjs +35 -0
  74. package/dist/ui/layout.cjs +48 -0
  75. package/dist/ui/layout.d.ts +4 -0
  76. package/dist/ui/layout.mjs +35 -0
  77. package/dist/ui/modules/docs/page.cjs +98 -0
  78. package/dist/ui/modules/docs/page.d.ts +6 -0
  79. package/dist/ui/modules/docs/page.mjs +46 -0
  80. package/dist/ui/modules/page.cjs +30 -0
  81. package/dist/ui/modules/page.d.ts +2 -0
  82. package/dist/ui/modules/page.mjs +10 -0
  83. package/dist/ui/page.cjs +18 -0
  84. package/dist/ui/page.d.ts +1 -0
  85. package/dist/ui/page.mjs +9 -0
  86. package/dist/ui/router.cjs +61 -0
  87. package/dist/ui/router.d.ts +5 -0
  88. package/dist/ui/router.mjs +51 -0
  89. package/dist/ui/settings/page.cjs +61 -0
  90. package/dist/ui/settings/page.d.ts +2 -0
  91. package/dist/ui/settings/page.mjs +22 -0
  92. package/dist/ui/settings-page.cjs +76 -0
  93. package/dist/ui/settings-page.d.ts +2 -0
  94. package/dist/ui/settings-page.mjs +57 -0
  95. package/locales/en/global.json +80 -0
  96. package/manifest.json +11 -0
  97. 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,2 @@
1
+ import * as React from "react";
2
+ export default function SidebarSlot(): Promise<React.JSX.Element>;
@@ -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,2 @@
1
+ import * as React from "react";
2
+ export default function Stats01(): Promise<React.JSX.Element>;
@@ -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,7 @@
1
+ import * as React from "react";
2
+ export default function ErrorPage({ error, reset, }: {
3
+ error: Error & {
4
+ digest?: string;
5
+ };
6
+ reset: () => void;
7
+ }): React.JSX.Element;
@@ -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,4 @@
1
+ import * as React from "react";
2
+ export default function RootLayout({ children, }: Readonly<{
3
+ children: React.ReactNode;
4
+ }>): Promise<React.JSX.Element>;
@@ -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,6 @@
1
+ import * as React from "react";
2
+ export default function ModuleDocsPage({ params, }: {
3
+ params: {
4
+ slug: string;
5
+ };
6
+ }): Promise<React.JSX.Element>;
@@ -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,2 @@
1
+ import * as React from "react";
2
+ export default function ModuleAdminPage(): Promise<React.JSX.Element>;
@@ -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
+ }
@@ -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>;
@@ -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
+ }
@@ -0,0 +1,5 @@
1
+ import * as React from "react";
2
+ export declare function KryoRouter({ path, searchParams, }: {
3
+ path: string;
4
+ searchParams: any;
5
+ }): Promise<React.JSX.Element | null>;