@tekki-forge/runtime-admin 0.1.0 → 0.3.0
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/admin-dashboard.d.ts +16 -0
- package/dist/admin-dashboard.js +60 -0
- package/dist/admin-dashboard.js.map +1 -0
- package/dist/admin-orgs.d.ts +14 -0
- package/dist/admin-orgs.js +75 -0
- package/dist/admin-orgs.js.map +1 -0
- package/dist/admin-shell.d.ts +55 -0
- package/dist/admin-shell.js +141 -0
- package/dist/admin-shell.js.map +1 -0
- package/dist/admin.js +39 -6
- package/dist/admin.js.map +1 -1
- package/dist/app-pages.d.ts +19 -0
- package/dist/app-pages.js +109 -0
- package/dist/app-pages.js.map +1 -0
- package/dist/auth-pages.js +7 -2
- package/dist/auth-pages.js.map +1 -1
- package/dist/charts.d.ts +98 -2
- package/dist/charts.js +264 -24
- package/dist/charts.js.map +1 -1
- package/dist/context.js +32 -1
- package/dist/context.js.map +1 -1
- package/dist/dashboard.d.ts +63 -8
- package/dist/dashboard.js +180 -36
- package/dist/dashboard.js.map +1 -1
- package/dist/entity-icons.d.ts +3 -0
- package/dist/entity-icons.js +105 -0
- package/dist/entity-icons.js.map +1 -0
- package/dist/i18n/messages/de.js +751 -0
- package/dist/i18n/messages/de.js.map +1 -1
- package/dist/i18n/messages/en.js +751 -0
- package/dist/i18n/messages/en.js.map +1 -1
- package/dist/i18n/messages/es.js +751 -0
- package/dist/i18n/messages/es.js.map +1 -1
- package/dist/i18n/messages/fr.js +751 -0
- package/dist/i18n/messages/fr.js.map +1 -1
- package/dist/i18n/messages/pt.js +751 -0
- package/dist/i18n/messages/pt.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/schema-editor.js +2 -1
- package/dist/schema-editor.js.map +1 -1
- package/dist/shell.js +37 -34
- package/dist/shell.js.map +1 -1
- package/dist/site/editor/api.d.ts +74 -0
- package/dist/site/editor/api.js +93 -0
- package/dist/site/editor/api.js.map +1 -0
- package/dist/site/editor/content-page.d.ts +4 -0
- package/dist/site/editor/content-page.js +65 -0
- package/dist/site/editor/content-page.js.map +1 -0
- package/dist/site/editor/inbox-tab.d.ts +4 -0
- package/dist/site/editor/inbox-tab.js +88 -0
- package/dist/site/editor/inbox-tab.js.map +1 -0
- package/dist/site/editor/index.d.ts +1 -0
- package/dist/site/editor/index.js +3 -0
- package/dist/site/editor/index.js.map +1 -0
- package/dist/site/editor/model.d.ts +145 -0
- package/dist/site/editor/model.js +408 -0
- package/dist/site/editor/model.js.map +1 -0
- package/dist/site/editor/page-editor.d.ts +10 -0
- package/dist/site/editor/page-editor.js +257 -0
- package/dist/site/editor/page-editor.js.map +1 -0
- package/dist/site/editor/page-settings.d.ts +9 -0
- package/dist/site/editor/page-settings.js +105 -0
- package/dist/site/editor/page-settings.js.map +1 -0
- package/dist/site/editor/pages-tab.d.ts +5 -0
- package/dist/site/editor/pages-tab.js +108 -0
- package/dist/site/editor/pages-tab.js.map +1 -0
- package/dist/site/editor/posts-tab.d.ts +6 -0
- package/dist/site/editor/posts-tab.js +139 -0
- package/dist/site/editor/posts-tab.js.map +1 -0
- package/dist/site/editor/preview.d.ts +32 -0
- package/dist/site/editor/preview.js +104 -0
- package/dist/site/editor/preview.js.map +1 -0
- package/dist/site/editor/prop-fields.d.ts +53 -0
- package/dist/site/editor/prop-fields.js +233 -0
- package/dist/site/editor/prop-fields.js.map +1 -0
- package/dist/site/editor/section-list.d.ts +14 -0
- package/dist/site/editor/section-list.js +110 -0
- package/dist/site/editor/section-list.js.map +1 -0
- package/dist/site/editor/section-picker.d.ts +12 -0
- package/dist/site/editor/section-picker.js +44 -0
- package/dist/site/editor/section-picker.js.map +1 -0
- package/dist/site/editor/widgets.d.ts +84 -0
- package/dist/site/editor/widgets.js +130 -0
- package/dist/site/editor/widgets.js.map +1 -0
- package/dist/site/format.d.ts +31 -0
- package/dist/site/format.js +106 -0
- package/dist/site/format.js.map +1 -0
- package/dist/site/forms.d.ts +43 -0
- package/dist/site/forms.js +155 -0
- package/dist/site/forms.js.map +1 -0
- package/dist/site/header.d.ts +32 -0
- package/dist/site/header.js +76 -0
- package/dist/site/header.js.map +1 -0
- package/dist/site/icons.d.ts +10 -0
- package/dist/site/icons.js +28 -0
- package/dist/site/icons.js.map +1 -0
- package/dist/site/index.d.ts +11 -0
- package/dist/site/index.js +13 -0
- package/dist/site/index.js.map +1 -0
- package/dist/site/markdown.d.ts +14 -0
- package/dist/site/markdown.js +457 -0
- package/dist/site/markdown.js.map +1 -0
- package/dist/site/page.d.ts +16 -0
- package/dist/site/page.js +65 -0
- package/dist/site/page.js.map +1 -0
- package/dist/site/proxy.d.ts +13 -0
- package/dist/site/proxy.js +43 -0
- package/dist/site/proxy.js.map +1 -0
- package/dist/site/sections.d.ts +43 -0
- package/dist/site/sections.js +560 -0
- package/dist/site/sections.js.map +1 -0
- package/dist/site/server.d.ts +73 -0
- package/dist/site/server.js +235 -0
- package/dist/site/server.js.map +1 -0
- package/dist/site/types.d.ts +137 -0
- package/dist/site/types.js +2 -0
- package/dist/site/types.js.map +1 -0
- package/dist/support.d.ts +29 -0
- package/dist/support.js +165 -0
- package/dist/support.js.map +1 -0
- package/dist/system-config.d.ts +24 -0
- package/dist/system-config.js +37 -0
- package/dist/system-config.js.map +1 -0
- package/dist/system-settings.d.ts +9 -0
- package/dist/system-settings.js +60 -0
- package/dist/system-settings.js.map +1 -0
- package/dist/theme-catalog.d.ts +72 -2
- package/dist/theme-catalog.js +47 -0
- package/dist/theme-catalog.js.map +1 -1
- package/dist/theme-switcher.d.ts +8 -0
- package/dist/theme-switcher.js +39 -4
- package/dist/theme-switcher.js.map +1 -1
- package/dist/theme.js +8 -0
- package/dist/theme.js.map +1 -1
- package/dist/transactions.d.ts +4 -0
- package/dist/transactions.js +60 -0
- package/dist/transactions.js.map +1 -0
- package/dist/ui.js +3 -22
- package/dist/ui.js.map +1 -1
- package/package.json +9 -5
- package/styles.css +1089 -0
package/dist/shell.js
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useQuery, useQueryClient } from "@tanstack/react-query";
|
|
4
|
-
import { BookOpen, Building, ChevronDown, ChevronsUpDown, LayoutDashboard, LogOut, Menu, PanelLeftClose, PanelLeftOpen,
|
|
4
|
+
import { Bell, BookOpen, Building, ChevronDown, ChevronsUpDown, Gauge, LayoutDashboard, LifeBuoy, LogOut, Menu, PanelLeftClose, PanelLeftOpen, Plug, Search, Settings, UserCircle, UsersRound, X } from "lucide-react";
|
|
5
5
|
import Link from "next/link";
|
|
6
6
|
import { usePathname, useRouter } from "next/navigation";
|
|
7
7
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
8
8
|
import { BrandMark } from "./brand.js";
|
|
9
9
|
import { CommandPalette, openCommandPalette } from "./command-palette.js";
|
|
10
|
-
import { SCHEMA_EDITOR_NAV } from "./schema-editor.js";
|
|
11
10
|
import { useForge, useMe } from "./context.js";
|
|
12
11
|
import { LocaleSwitcher } from "./locale-switcher.js";
|
|
13
12
|
import { NotificationBell } from "./notifications.js";
|
|
14
13
|
import { usePreviewLayout } from "./theme-preview.js";
|
|
15
14
|
import { ThemeSwitcher } from "./theme-switcher.js";
|
|
15
|
+
import { AdminEntryLink, AdminPage, adminSections, useAdminAccess } from "./admin-shell.js";
|
|
16
|
+
import { MaintenanceBanner, useAppName } from "./system-config.js";
|
|
16
17
|
import { PageHeader, ResourceIcon, Spinner, cn } from "./ui.js";
|
|
17
18
|
export function isGlobalAdmin(role) {
|
|
18
19
|
return (role ?? "").split(",").map((r) => r.trim()).includes("admin");
|
|
@@ -48,13 +49,14 @@ function PageTransition({ children }) {
|
|
|
48
49
|
return;
|
|
49
50
|
}
|
|
50
51
|
const el = ref.current;
|
|
51
|
-
|
|
52
|
+
// No page transition when the visitor asks for less motion or the theme sets motion: "none".
|
|
53
|
+
if (!el || typeof el.animate !== "function" || window.matchMedia?.("(prefers-reduced-motion: reduce)").matches || document.documentElement.dataset.forgeMotion === "none")
|
|
52
54
|
return;
|
|
53
55
|
el.animate([{ opacity: 0, transform: "translateY(6px)" }, { opacity: 1, transform: "none" }], { duration: 220, easing: "cubic-bezier(.2,.7,.2,1)" });
|
|
54
56
|
}, [pathname]);
|
|
55
57
|
return _jsx("div", { ref: ref, children: children });
|
|
56
58
|
}
|
|
57
|
-
function UserMenu({ user,
|
|
59
|
+
function UserMenu({ user, extra = [], onSignOut }) {
|
|
58
60
|
const { t } = useForge();
|
|
59
61
|
const [open, setOpen] = useState(false);
|
|
60
62
|
const ref = useRef(null);
|
|
@@ -73,7 +75,7 @@ function UserMenu({ user, admin, extra = [], onSignOut }) {
|
|
|
73
75
|
};
|
|
74
76
|
}, [open]);
|
|
75
77
|
const initials = user.name.split(/\s+/).filter(Boolean).slice(0, 2).map((w) => w[0].toUpperCase()).join("") || "?";
|
|
76
|
-
return (_jsxs("div", { ref: ref, className: "relative", children: [_jsxs("button", { type: "button", "aria-expanded": open, "aria-haspopup": "true", "aria-label": t("nav.accountMenu"), onClick: () => setOpen((o) => !o), className: "forge-btn forge-btn-ghost flex items-center gap-1.5 p-1", children: [_jsx("span", { className: "forge-avatar flex size-7 items-center justify-center text-[11px] font-semibold", children: initials }), _jsx(ChevronDown, { className: "size-3.5", "aria-hidden": true })] }), open && (_jsxs("div", { className: "forge-popover forge-pop absolute top-11 right-0 z-50 w-64 p-1.5", children: [_jsxs("div", { className: "px-2.5 py-2", children: [_jsx("p", { className: "truncate text-sm font-medium text-ink", children: user.name }), _jsx("p", { className: "truncate text-xs text-ink-muted", children: user.email })] }), _jsx("div", { className: "my-1 h-px bg-line" }), _jsx(LocaleSwitcher, {}), _jsx(NavLink, { href: "/
|
|
78
|
+
return (_jsxs("div", { ref: ref, className: "relative", children: [_jsxs("button", { type: "button", "aria-expanded": open, "aria-haspopup": "true", "aria-label": t("nav.accountMenu"), onClick: () => setOpen((o) => !o), className: "forge-btn forge-btn-ghost flex items-center gap-1.5 p-1", children: [_jsx("span", { className: "forge-avatar flex size-7 items-center justify-center text-[11px] font-semibold", children: initials }), _jsx(ChevronDown, { className: "size-3.5", "aria-hidden": true })] }), open && (_jsxs("div", { className: "forge-popover forge-pop absolute top-11 right-0 z-50 w-64 p-1.5", children: [_jsxs("div", { className: "px-2.5 py-2", children: [_jsx("p", { className: "truncate text-sm font-medium text-ink", children: user.name }), _jsx("p", { className: "truncate text-xs text-ink-muted", children: user.email })] }), _jsx("div", { className: "my-1 h-px bg-line" }), _jsx(LocaleSwitcher, {}), _jsx(NavLink, { href: "/settings", icon: _jsx(UserCircle, { className: "size-4" }), children: t("settings.title") }), extra.map((n) => (n.external ? _jsx(ExternalNavLink, { entry: n }, n.href) : _jsx(NavLink, { href: n.href, icon: n.icon, children: n.label }, n.href))), _jsx(AdminEntryLink, {}), _jsx("div", { className: "my-1 h-px bg-line" }), _jsxs("button", { type: "button", onClick: onSignOut, className: "forge-nav-item flex w-full items-center gap-2.5 px-2.5 py-1.5 text-sm", children: [_jsx(LogOut, { className: "size-4" }), " ", t("nav.signOut")] })] }))] }));
|
|
77
79
|
}
|
|
78
80
|
function ExternalNavLink({ entry }) {
|
|
79
81
|
return (_jsxs("a", { href: entry.href, target: "_blank", rel: "noreferrer", className: "forge-nav-item flex items-center gap-2.5 overflow-hidden px-2.5 py-1.5 text-sm whitespace-nowrap", children: [entry.icon, _jsx("span", { className: "forge-nav-label min-w-0 truncate", children: entry.label })] }));
|
|
@@ -134,9 +136,11 @@ function RailTooltips({ enabled, children }) {
|
|
|
134
136
|
}
|
|
135
137
|
/** Authenticated application frame: navigation generated from resource metadata, in the theme's layout. */
|
|
136
138
|
export function AppShell({ children }) {
|
|
137
|
-
const { app, resources, auth, t } = useForge();
|
|
139
|
+
const { app, resources, auth, pages, t } = useForge();
|
|
138
140
|
const session = auth.useSession();
|
|
139
141
|
const me = useMe();
|
|
142
|
+
const access = useAdminAccess();
|
|
143
|
+
const appName = useAppName();
|
|
140
144
|
const router = useRouter();
|
|
141
145
|
const pathname = usePathname();
|
|
142
146
|
const [mobileOpen, setMobileOpen] = useState(false);
|
|
@@ -173,53 +177,52 @@ export function AppShell({ children }) {
|
|
|
173
177
|
if (session.isPending || !session.data || me.isLoading)
|
|
174
178
|
return _jsx(Spinner, {});
|
|
175
179
|
const user = session.data.user;
|
|
176
|
-
const globalAdmin = isGlobalAdmin(user.role);
|
|
177
180
|
const signOut = async () => {
|
|
178
181
|
await auth.signOut();
|
|
179
182
|
window.location.href = "/sign-in";
|
|
180
183
|
};
|
|
181
|
-
const
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
...(app.tenancy.enabled && me.isAdmin && app.admin.enabled ? [{ label: t("admin.members.title"), href: "/admin/members" }] : []),
|
|
186
|
-
...(me.isAdmin && app.admin.enabled ? [{ label: t("admin.audit.title"), href: "/admin/audit-logs" }] : []),
|
|
187
|
-
...(me.isAdmin && app.admin.enabled && process.env.NODE_ENV !== "production" ? [{ label: t(SCHEMA_EDITOR_NAV.label), href: `/${SCHEMA_EDITOR_NAV.path}` }] : []),
|
|
188
|
-
...(app.teams?.enabled && me.isAdmin && app.admin.enabled ? [{ label: t("admin.teams.title"), href: "/admin/teams" }] : []),
|
|
189
|
-
...(me.isAdmin && app.admin.enabled ? [{ label: t("admin.apiKeys.title"), href: "/admin/api-keys" }] : []),
|
|
190
|
-
];
|
|
184
|
+
const icon = (I) => _jsx(I, { className: "size-4 shrink-0" });
|
|
185
|
+
const payments = app.plugins.find((pl) => pl.name === "payments");
|
|
186
|
+
const planLimits = (payments?.options.plans ?? []).some((pl) => Object.keys(pl.limits ?? {}).length > 0);
|
|
187
|
+
const orgAdmin = app.tenancy.enabled && me.isAdmin;
|
|
191
188
|
const mainLinks = [
|
|
192
189
|
{ href: "/", label: t("nav.dashboard"), icon: _jsx(LayoutDashboard, { className: "size-4 shrink-0" }), exact: true },
|
|
193
190
|
...Object.values(resources)
|
|
194
191
|
.filter((r) => r.nav !== false)
|
|
195
192
|
.map((r) => ({ href: `/${r.path}`, label: r.pluralLabel, icon: _jsx(ResourceIcon, { name: r.icon, className: "size-4 shrink-0" }) })),
|
|
196
193
|
];
|
|
197
|
-
|
|
198
|
-
const
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
:
|
|
194
|
+
// Application area, in this order: Notifications, Team, Integrations, Usage, Billing (and other plugin pages), Settings.
|
|
195
|
+
const pluginLinks = app.plugins.flatMap((pl) => pl.nav.filter((n) => !n.admin)).map((n) => ({ href: `/${n.path}`, label: n.path === "billing" ? t("nav.billing") : n.label, icon: _jsx(ResourceIcon, { name: n.icon, className: "size-4 shrink-0" }) }));
|
|
196
|
+
const workspaceLinks = [
|
|
197
|
+
{ href: "/notifications", label: t("notifications.title"), icon: icon(Bell) },
|
|
198
|
+
...(app.tenancy.enabled ? [{ href: "/team", label: t("team.title"), icon: icon(UsersRound) }] : []),
|
|
199
|
+
...(orgAdmin ? [{ href: "/integrations", label: t("integrations.title"), icon: icon(Plug) }] : []),
|
|
200
|
+
...(payments && planLimits ? [{ href: "/usage", label: t("usage.title"), icon: icon(Gauge) }] : []),
|
|
201
|
+
...pluginLinks,
|
|
202
|
+
{ href: "/settings", label: t("settings.title"), icon: icon(Settings) },
|
|
203
|
+
];
|
|
204
|
+
const helpLinks = app.admin.support ? [{ href: "/support", label: t("support.navLabel"), icon: icon(LifeBuoy) }] : [];
|
|
205
|
+
const paletteExtras = [
|
|
206
|
+
...workspaceLinks.map((n) => ({ label: n.label, href: n.href })),
|
|
207
|
+
...helpLinks.map((n) => ({ label: n.label, href: n.href })),
|
|
208
|
+
...(access.any ? adminSections(app, access, pages, t).map((sec) => ({ label: `${t("adminArea.title")} · ${sec.label}`, href: `/${sec.path}` })) : []),
|
|
209
|
+
];
|
|
210
210
|
const docsLink = app.api.docs ? { href: `${app.api.prefix}/docs`, label: t("nav.apiDocs"), icon: _jsx(BookOpen, { className: "size-4 shrink-0" }), external: true } : null;
|
|
211
211
|
const links = (entries) => entries.map((n) => (n.external ? _jsx(ExternalNavLink, { entry: n }, n.href) : _jsx(NavLink, { href: n.href, icon: n.icon, exact: n.exact, children: n.label }, n.href)));
|
|
212
212
|
// Vertical navigation: the sidebar, the compact rail (icons + tooltips, or expanded with its toggle) and the mobile drawer.
|
|
213
|
-
const nav = (rail) => (_jsxs("div", { className: "flex h-full flex-col", children: [_jsxs("div", { className: "forge-brand-row flex h-14 items-center gap-2 px-5", children: [_jsx(BrandMark, {}), _jsx("span", { className: "forge-nav-label flex-1 truncate text-sm font-semibold text-ink", children:
|
|
213
|
+
const nav = (rail) => (_jsxs("div", { className: "flex h-full flex-col", children: [_jsxs("div", { className: "forge-brand-row flex h-14 items-center gap-2 px-5", children: [_jsx(BrandMark, {}), _jsx("span", { className: "forge-nav-label flex-1 truncate text-sm font-semibold text-ink", children: appName }), _jsx("div", { className: "forge-rail-extra", children: _jsx(NotificationBell, {}) })] }), app.tenancy.enabled && (_jsx("div", { className: "forge-rail-extra", children: _jsx(OrganizationSwitcher, {}) })), _jsx("div", { className: "forge-rail-extra px-3 pt-3", children: _jsxs("button", { type: "button", onClick: openCommandPalette, className: "forge-input flex h-8 w-full items-center gap-2 px-2.5 text-left text-xs text-ink-subtle", children: [_jsx(Search, { className: "size-3.5" }), " ", t("common.searchEllipsis"), _jsx("kbd", { className: "ml-auto rounded border border-line px-1 text-[10px]", children: "\u2318K" })] }) }), _jsxs("nav", { className: "flex-1 space-y-6 overflow-x-hidden overflow-y-auto px-3 py-4", "aria-label": t("nav.main"), children: [_jsx("div", { className: "space-y-0.5", children: links(mainLinks) }), _jsx("div", { className: "space-y-0.5", children: links(workspaceLinks) }), access.any && (_jsx("div", { className: "space-y-0.5", children: _jsx(AdminEntryLink, { tooltip: t("adminArea.entry") }) })), (helpLinks.length > 0 || docsLink) && _jsx("div", { className: "space-y-0.5", children: links([...helpLinks, ...(docsLink ? [docsLink] : [])]) })] }), _jsxs("div", { className: "border-t border-line p-3", children: [_jsx("div", { className: "forge-rail-extra", children: _jsx(LocaleSwitcher, {}) }), rail && (_jsxs("button", { type: "button", onClick: toggleRail, "aria-expanded": railExpanded, "aria-controls": "forge-rail", className: "forge-nav-item mb-0.5 flex w-full items-center gap-2.5 overflow-hidden px-2.5 py-1.5 text-sm whitespace-nowrap", children: [railExpanded ? _jsx(PanelLeftClose, { className: "size-4 shrink-0", "aria-hidden": true }) : _jsx(PanelLeftOpen, { className: "size-4 shrink-0", "aria-hidden": true }), _jsx("span", { className: "forge-nav-label", children: railExpanded ? t("nav.collapseRail") : t("nav.expandRail") })] })), _jsxs(NavLink, { href: "/settings", icon: _jsx(UserCircle, { className: "size-4 shrink-0" }), tooltip: user.name, children: [_jsx("span", { className: "block truncate", children: user.name }), _jsx("span", { className: "block truncate text-xs text-ink-subtle", children: user.email })] }), _jsxs("button", { type: "button", onClick: signOut, className: "forge-nav-item mt-0.5 flex w-full items-center gap-2.5 overflow-hidden px-2.5 py-1.5 text-sm whitespace-nowrap", children: [_jsx(LogOut, { className: "size-4 shrink-0" }), " ", _jsx("span", { className: "forge-nav-label", children: t("nav.signOut") })] })] })] }));
|
|
214
214
|
const offset = layout === "sidebar" ? "lg:pl-60" : layout === "compact" ? cn("forge-rail-offset", railExpanded ? "lg:pl-60" : "lg:pl-16") : "";
|
|
215
|
-
return (_jsxs("div", { className: "forge-app-bg", "data-forge-shell": layout, children: [_jsx("a", { href: "#forge-main", className: "forge-skip-link", children: t("nav.skipToContent") }), me.data?.impersonating && (_jsxs("div", { className: "forge-banner flex items-center justify-center gap-3 px-4 py-1.5 text-sm", children: [t("nav.impersonating", { name: user.name }), _jsx("button", { type: "button", className: "font-medium underline", onClick: async () => {
|
|
215
|
+
return (_jsxs("div", { className: "forge-app-bg", "data-forge-shell": layout, children: [_jsx("a", { href: "#forge-main", className: "forge-skip-link", children: t("nav.skipToContent") }), _jsx(MaintenanceBanner, {}), me.data?.impersonating && (_jsxs("div", { className: "forge-banner flex items-center justify-center gap-3 px-4 py-1.5 text-sm", children: [t("nav.impersonating", { name: user.name }), _jsx("button", { type: "button", className: "font-medium underline", onClick: async () => {
|
|
216
216
|
await auth.admin.stopImpersonating();
|
|
217
217
|
window.location.href = "/admin/users";
|
|
218
|
-
}, children: t("nav.stopImpersonating") })] })), layout === "sidebar" && _jsx("aside", { className: "forge-sidebar fixed inset-y-0 left-0 hidden w-60 lg:block", children: nav(false) }), layout === "compact" && (_jsx("aside", { id: "forge-rail", "data-expanded": railExpanded, className: cn("forge-sidebar forge-rail fixed inset-y-0 left-0 z-30 hidden lg:block", railExpanded ? "w-60" : "w-16"), children: _jsx(RailTooltips, { enabled: !railExpanded, children: nav(true) }) })), layout === "topbar" && (_jsx("header", { className: "forge-topbar forge-topnav sticky top-0 z-30 hidden lg:block", children: _jsxs("div", { className: "mx-auto flex h-16 max-w-7xl items-center gap-4 px-6", children: [_jsxs(Link, { href: "/", className: "flex shrink-0 items-center gap-2.5 rounded-[var(--forge-radius-control)]", children: [_jsx(BrandMark, {}), _jsx("span", { className: "forge-heading text-sm font-semibold text-ink", children:
|
|
218
|
+
}, children: t("nav.stopImpersonating") })] })), layout === "sidebar" && _jsx("aside", { className: "forge-sidebar fixed inset-y-0 left-0 hidden w-60 lg:block", children: nav(false) }), layout === "compact" && (_jsx("aside", { id: "forge-rail", "data-expanded": railExpanded, className: cn("forge-sidebar forge-rail fixed inset-y-0 left-0 z-30 hidden lg:block", railExpanded ? "w-60" : "w-16"), children: _jsx(RailTooltips, { enabled: !railExpanded, children: nav(true) }) })), layout === "topbar" && (_jsx("header", { className: "forge-topbar forge-topnav sticky top-0 z-30 hidden lg:block", children: _jsxs("div", { className: "mx-auto flex h-16 max-w-7xl items-center gap-4 px-6", children: [_jsxs(Link, { href: "/", className: "flex shrink-0 items-center gap-2.5 rounded-[var(--forge-radius-control)]", children: [_jsx(BrandMark, {}), _jsx("span", { className: "forge-heading text-sm font-semibold text-ink", children: appName })] }), app.tenancy.enabled && (_jsx("div", { className: "w-44 shrink-0 [&>div]:px-0", children: _jsx(OrganizationSwitcher, {}) })), _jsx("nav", { "aria-label": t("nav.main"), className: "forge-topnav-links flex min-w-0 flex-1 items-center gap-0.5 overflow-x-auto", children: links([...mainLinks, ...workspaceLinks.filter((n) => n.href !== "/notifications" && n.href !== "/settings")]) }), _jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [_jsx(AdminEntryLink, { variant: "button" }), _jsxs("button", { type: "button", onClick: openCommandPalette, "aria-label": t("common.search"), className: "forge-btn forge-btn-ghost flex items-center gap-2 px-2 py-1.5 text-xs", children: [_jsx(Search, { className: "size-4", "aria-hidden": true }), _jsx("kbd", { className: "rounded border border-line px-1 text-[10px]", children: "\u2318K" })] }), _jsx(NotificationBell, { align: "end" }), _jsx(UserMenu, { user: user, extra: [{ href: "/notifications", label: t("notifications.title"), icon: icon(Bell) }, ...helpLinks, ...(docsLink ? [docsLink] : [])], onSignOut: signOut })] })] }) })), mobileOpen && (_jsxs("div", { className: "fixed inset-0 z-40 lg:hidden", children: [_jsx("div", { className: "forge-overlay absolute inset-0", onClick: () => setMobileOpen(false) }), _jsxs("aside", { className: "forge-sidebar forge-drawer absolute inset-y-0 left-0 w-64", children: [_jsx("button", { type: "button", "aria-label": t("nav.closeMenu"), onClick: () => setMobileOpen(false), className: "forge-btn forge-btn-ghost absolute top-4 right-3 p-1", children: _jsx(X, { className: "size-4" }) }), nav(false)] })] })), _jsxs("div", { className: offset, children: [_jsxs("header", { className: "forge-topbar flex h-14 items-center px-4 lg:hidden", children: [_jsx("button", { type: "button", "aria-label": t("nav.openMenu"), onClick: () => setMobileOpen(true), className: "forge-btn forge-btn-ghost p-1.5", children: _jsx(Menu, { className: "size-5" }) }), _jsx(BrandMark, { className: "ml-3" }), _jsx("span", { className: "ml-2.5 min-w-0 truncate text-sm font-semibold", children: appName }), _jsx(AdminEntryLink, { variant: "icon" })] }), _jsx("main", { id: "forge-main", tabIndex: -1, className: "mx-auto max-w-6xl px-4 py-[var(--forge-main-y)] outline-none sm:px-8", children: _jsx(PageTransition, { children: children }) })] }), _jsx(CommandPalette, { extra: paletteExtras }), process.env.NODE_ENV !== "production" && _jsx(ThemeSwitcher, {})] }));
|
|
219
219
|
}
|
|
220
220
|
/** Renders a plugin page registered under `path` (used by the generic /admin/[page] route). */
|
|
221
221
|
export function PluginPage({ path }) {
|
|
222
222
|
const { pages, t } = useForge();
|
|
223
|
+
// Administration pages (old apps still route /admin/* through the app shell): same resolver as the admin area.
|
|
224
|
+
if (path === "admin" || path.startsWith("admin/"))
|
|
225
|
+
return _jsx(AdminPage, { path: path });
|
|
223
226
|
const Page = pages[path];
|
|
224
227
|
if (!Page)
|
|
225
228
|
return _jsx(PageHeader, { title: t("common.notFound"), description: t("nav.noPage", { path: `/${path}` }) });
|
package/dist/shell.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../src/shell.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACtN,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAEhE,MAAM,UAAU,aAAa,CAAC,IAA+B;IAC3D,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAiH;IACjL,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IAChG,OAAO,CACL,MAAC,IAAI,IACH,IAAI,EAAE,IAAI,kBACI,OAAO,kBACP,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACzC,SAAS,EAAE,EAAE,CAAC,oHAAoH,EAAE,SAAS,CAAC,aAE7I,IAAI,EACL,eAAM,SAAS,EAAC,kCAAkC,YAAE,QAAQ,GAAQ,IAC/D,CACR,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB;IAC3B,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC/B,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAK,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IAC1H,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC9E,OAAO,CACL,eAAK,SAAS,EAAC,MAAM,aACnB,gBAAO,SAAS,EAAC,SAAS,EAAC,OAAO,EAAC,cAAc,YAC9C,CAAC,CAAC,kBAAkB,CAAC,GAChB,EAER,eAAK,SAAS,EAAC,UAAU,aACzB,KAAC,QAAQ,IAAC,SAAS,EAAC,uFAAuF,GAAG,EAC9G,kBACE,EAAE,EAAC,cAAc,EACjB,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EACxB,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;4BACpB,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;gCAC/B,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC;gCACrC,OAAO;4BACT,CAAC;4BACD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAU,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;4BACvE,MAAM,WAAW,CAAC,iBAAiB,EAAE,CAAC;wBACxC,CAAC,EACD,SAAS,EAAC,yEAAyE,aAElF,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAC1B,iBAAmB,KAAK,EAAE,CAAC,CAAC,EAAE,YAC3B,CAAC,CAAC,IAAI,IADI,CAAC,CAAC,EAAE,CAER,CACV,CAAC,EACF,iBAAQ,KAAK,EAAC,OAAO,YAAE,CAAC,CAAC,qBAAqB,CAAC,GAAU,IAClD,EACT,KAAC,cAAc,IAAC,SAAS,EAAC,wFAAwF,GAAG,IAC/G,IACF,CACP,CAAC;AACJ,CAAC;AAUD,mGAAmG;AACnG,SAAS,cAAc,CAAC,EAAE,QAAQ,EAA2B;IAC3D,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;YACtB,OAAO;QACT,CAAC;QACD,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;QACvB,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,CAAC,OAAO,KAAK,UAAU,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,kCAAkC,CAAC,CAAC,OAAO;YAAE,OAAO;QACvH,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC,CAAC;IACvJ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACf,OAAO,cAAK,GAAG,EAAE,GAAG,YAAG,QAAQ,GAAO,CAAC;AACzC,CAAC;AAED,SAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,SAAS,EAA2G;IAC/J,MAAM,EAAE,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,KAAK,GAAG,CAAC,CAAa,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1G,MAAM,GAAG,GAAG,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;QACvE,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC9C,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC1C,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACjD,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACX,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC;IACpH,OAAO,CACL,eAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,UAAU,aACjC,kBAAQ,IAAI,EAAC,QAAQ,mBAAgB,IAAI,mBAAgB,MAAM,gBAAa,CAAC,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAC,yDAAyD,aACtM,eAAM,SAAS,EAAC,gFAAgF,YAAE,QAAQ,GAAQ,EAClH,KAAC,WAAW,IAAC,SAAS,EAAC,UAAU,wBAAe,IACzC,EACR,IAAI,IAAI,CACP,eAAK,SAAS,EAAC,iEAAiE,aAC9E,eAAK,SAAS,EAAC,aAAa,aAC1B,YAAG,SAAS,EAAC,uCAAuC,YAAE,IAAI,CAAC,IAAI,GAAK,EACpE,YAAG,SAAS,EAAC,iCAAiC,YAAE,IAAI,CAAC,KAAK,GAAK,IAC3D,EACN,cAAK,SAAS,EAAC,mBAAmB,GAAG,EACrC,KAAC,cAAc,KAAG,EAClB,KAAC,OAAO,IAAC,IAAI,EAAC,UAAU,EAAC,IAAI,EAAE,KAAC,UAAU,IAAC,SAAS,EAAC,QAAQ,GAAG,YAC7D,CAAC,CAAC,eAAe,CAAC,GACX,EACT,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAC,eAAe,IAAc,KAAK,EAAE,CAAC,IAAhB,CAAC,CAAC,IAAI,CAAc,CAAC,CAAC,CAAC,KAAC,OAAO,IAAc,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,YAAG,CAAC,CAAC,KAAK,IAA5C,CAAC,CAAC,IAAI,CAAiD,CAAC,CAAC,EACnJ,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CACnB,8BACE,YAAG,SAAS,EAAC,gFAAgF,YAAE,CAAC,CAAC,oBAAoB,CAAC,GAAK,EAC1H,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAC,eAAe,IAAc,KAAK,EAAE,CAAC,IAAhB,CAAC,CAAC,IAAI,CAAc,CAAC,CAAC,CAAC,KAAC,OAAO,IAAc,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,YAAG,CAAC,CAAC,KAAK,IAA5C,CAAC,CAAC,IAAI,CAAiD,CAAC,CAAC,IACnJ,CACJ,EACD,cAAK,SAAS,EAAC,mBAAmB,GAAG,EACrC,kBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAC,uEAAuE,aACzH,KAAC,MAAM,IAAC,SAAS,EAAC,QAAQ,GAAG,OAAE,CAAC,CAAC,aAAa,CAAC,IACxC,IACL,CACP,IACG,CACP,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,EAAE,KAAK,EAAuB;IACrD,OAAO,CACL,aAAG,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,YAAY,EAAC,SAAS,EAAC,kGAAkG,aAC/J,KAAK,CAAC,IAAI,EACX,eAAM,SAAS,EAAC,kCAAkC,YAAE,KAAK,CAAC,KAAK,GAAQ,IACrE,CACL,CAAC;AACJ,CAAC;AAED,MAAM,QAAQ,GAAG,qBAAqB,CAAC;AAEvC;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,EAA6C;IACpF,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAsD,IAAI,CAAC,CAAC;IAC1F,MAAM,OAAO,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,IAAI,GAAG,CAAC,MAA0B,EAAE,IAAiB,EAAE,EAAE;QAC7D,MAAM,IAAI,GAAG,MAAM,YAAY,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAc,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/F,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAChD,IAAI,IAAI,KAAK,OAAO,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAC3I,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC1C,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO;YAAE,IAAI,EAAE,CAAC;IACvB,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IACpB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,MAAM,GAAG,GAAG,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC/D,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC1C,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxC,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAC7C,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAEhB,OAAO,CACL,eACE,SAAS,EAAC,QAAQ,EAClB,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE;YACnB,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,YAAY,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;gBAAE,OAAO;YACnG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,aAAa,CAAC;gBAAE,IAAI,EAAE,CAAC;QAC/C,CAAC,EACD,cAAc,EAAE,IAAI,EACpB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,aAAa,CAAC,EAChG,MAAM,EAAE,IAAI;QACZ,gEAAgE;QAChE,eAAe,EAAE,IAAI,aAEpB,QAAQ,EACR,OAAO,IAAI,GAAG,IAAI,CACjB,eAAM,SAAS,EAAC,sBAAsB,EAAC,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,iCAC5E,eAAM,SAAS,EAAC,eAAe,YAAE,GAAG,CAAC,KAAK,GAAQ,GAC7C,CACR,IACG,CACP,CAAC;AACJ,CAAC;AAED,2GAA2G;AAC3G,MAAM,UAAU,QAAQ,CAAC,EAAE,QAAQ,EAA2B;IAC5D,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAClC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,wHAAwH;IACxH,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC;YACH,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,uCAAuC;QACzC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,UAAU,GAAG,GAAG,EAAE,CACtB,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE;QACpB,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IACL,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS,CAAqC,CAAC;IAE9F,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,MAAM,CAAC,OAAO,CAAC,iBAAiB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3G,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc;YAAE,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACrG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,SAAS,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAElD,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,SAAS;QAAE,OAAO,KAAC,OAAO,KAAG,CAAC;IAC3E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/B,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,UAAU,CAAC;IACpC,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG;QACpB,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACjI,EAAE,KAAK,EAAE,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE;QAC/C,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChI,GAAG,CAAC,EAAE,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1G,GAAG,CAAC,EAAE,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChK,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3H,GAAG,CAAC,EAAE,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3G,CAAC;IAEF,MAAM,SAAS,GAAe;QAC5B,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,KAAC,eAAe,IAAC,SAAS,EAAC,iBAAiB,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;QAC5G,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;aACxB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,KAAC,YAAY,IAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC;KAChI,CAAC;IACF,MAAM,WAAW,GAAe,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAC,YAAY,IAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC,CAAC;IACnN,MAAM,UAAU,GACd,CAAC,EAAE,CAAC,OAAO,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO;QAC9C,CAAC,CAAC;YACE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,KAAC,MAAM,IAAC,SAAS,EAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/H,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,KAAC,UAAU,IAAC,SAAS,EAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7J,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,KAAC,UAAU,IAAC,SAAS,EAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvI,wFAAwF;YACxF,GAAG,CAAC,EAAE,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,iBAAiB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAC,MAAM,IAAC,SAAS,EAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACzL,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAC,YAAY,IAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxM,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,KAAC,UAAU,IAAC,SAAS,EAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxJ,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,KAAC,QAAQ,IAAC,SAAS,EAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACtI;QACH,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,QAAQ,GAAoB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,KAAC,QAAQ,IAAC,SAAS,EAAC,iBAAiB,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACpL,MAAM,KAAK,GAAG,CAAC,OAAmB,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAC,eAAe,IAAc,KAAK,EAAE,CAAC,IAAhB,CAAC,CAAC,IAAI,CAAc,CAAC,CAAC,CAAC,KAAC,OAAO,IAAc,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,YAAG,CAAC,CAAC,KAAK,IAA5D,CAAC,CAAC,IAAI,CAAiE,CAAC,CAAC,CAAC;IAE7M,4HAA4H;IAC5H,MAAM,GAAG,GAAG,CAAC,IAAa,EAAE,EAAE,CAAC,CAC7B,eAAK,SAAS,EAAC,sBAAsB,aACnC,eAAK,SAAS,EAAC,mDAAmD,aAChE,KAAC,SAAS,KAAG,EACb,eAAM,SAAS,EAAC,gEAAgE,YAAE,GAAG,CAAC,IAAI,GAAQ,EAClG,cAAK,SAAS,EAAC,kBAAkB,YAC/B,KAAC,gBAAgB,KAAG,GAChB,IACF,EACL,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,CACtB,cAAK,SAAS,EAAC,kBAAkB,YAC/B,KAAC,oBAAoB,KAAG,GACpB,CACP,EACD,cAAK,SAAS,EAAC,4BAA4B,YACzC,kBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAC,yFAAyF,aACpJ,KAAC,MAAM,IAAC,SAAS,EAAC,UAAU,GAAG,OAAE,CAAC,CAAC,uBAAuB,CAAC,EAC3D,cAAK,SAAS,EAAC,qDAAqD,wBAAS,IACtE,GACL,EACN,eAAK,SAAS,EAAC,8DAA8D,gBAAa,CAAC,CAAC,UAAU,CAAC,aACrG,cAAK,SAAS,EAAC,aAAa,YAAE,KAAK,CAAC,SAAS,CAAC,GAAO,EACpD,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,cAAK,SAAS,EAAC,aAAa,YAAE,KAAK,CAAC,WAAW,CAAC,GAAO,EACjF,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CACxB,eAAK,SAAS,EAAC,aAAa,aAC1B,YAAG,SAAS,EAAC,4GAA4G,YAAE,CAAC,CAAC,oBAAoB,CAAC,GAAK,EACtJ,KAAK,CAAC,UAAU,CAAC,IACd,CACP,EACA,QAAQ,IAAI,cAAK,SAAS,EAAC,aAAa,YAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAO,IAC/D,EACN,eAAK,SAAS,EAAC,0BAA0B,aACvC,cAAK,SAAS,EAAC,kBAAkB,YAC/B,KAAC,cAAc,KAAG,GACd,EACL,IAAI,IAAI,CACP,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,UAAU,mBACJ,YAAY,mBACb,YAAY,EAC1B,SAAS,EAAC,gHAAgH,aAEzH,YAAY,CAAC,CAAC,CAAC,KAAC,cAAc,IAAC,SAAS,EAAC,iBAAiB,wBAAe,CAAC,CAAC,CAAC,KAAC,aAAa,IAAC,SAAS,EAAC,iBAAiB,wBAAe,EACtI,eAAM,SAAS,EAAC,iBAAiB,YAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAQ,IAC9F,CACV,EACD,MAAC,OAAO,IAAC,IAAI,EAAC,UAAU,EAAC,IAAI,EAAE,KAAC,UAAU,IAAC,SAAS,EAAC,iBAAiB,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,aAC3F,eAAM,SAAS,EAAC,gBAAgB,YAAE,IAAI,CAAC,IAAI,GAAQ,EACnD,eAAM,SAAS,EAAC,wCAAwC,YAAE,IAAI,CAAC,KAAK,GAAQ,IACpE,EACV,kBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAC,gHAAgH,aAChK,KAAC,MAAM,IAAC,SAAS,EAAC,iBAAiB,GAAG,OAAC,eAAM,SAAS,EAAC,iBAAiB,YAAE,CAAC,CAAC,aAAa,CAAC,GAAQ,IAC3F,IACL,IACF,CACP,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/I,OAAO,CACL,eAAK,SAAS,EAAC,cAAc,sBAAmB,MAAM,aACpD,YAAG,IAAI,EAAC,aAAa,EAAC,SAAS,EAAC,iBAAiB,YAC9C,CAAC,CAAC,mBAAmB,CAAC,GACrB,EACH,EAAE,CAAC,IAAI,EAAE,aAAa,IAAI,CACzB,eAAK,SAAS,EAAC,yEAAyE,aACrF,CAAC,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAC5C,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,uBAAuB,EACjC,OAAO,EAAE,KAAK,IAAI,EAAE;4BAClB,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAkB,EAAE,CAAC;4BACtC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,cAAc,CAAC;wBACxC,CAAC,YAEA,CAAC,CAAC,uBAAuB,CAAC,GACpB,IACL,CACP,EACA,MAAM,KAAK,SAAS,IAAI,gBAAO,SAAS,EAAC,2DAA2D,YAAE,GAAG,CAAC,KAAK,CAAC,GAAS,EACzH,MAAM,KAAK,SAAS,IAAI,CACvB,gBACE,EAAE,EAAC,YAAY,mBACA,YAAY,EAC3B,SAAS,EAAE,EAAE,CAAC,sEAAsE,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,YAErH,KAAC,YAAY,IAAC,OAAO,EAAE,CAAC,YAAY,YAAG,GAAG,CAAC,IAAI,CAAC,GAAgB,GAC1D,CACT,EACA,MAAM,KAAK,QAAQ,IAAI,CACtB,iBAAQ,SAAS,EAAC,6DAA6D,YAC7E,eAAK,SAAS,EAAC,qDAAqD,aAClE,MAAC,IAAI,IAAC,IAAI,EAAC,GAAG,EAAC,SAAS,EAAC,0EAA0E,aACjG,KAAC,SAAS,KAAG,EACb,eAAM,SAAS,EAAC,8CAA8C,YAAE,GAAG,CAAC,IAAI,GAAQ,IAC3E,EACN,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,CACtB,cAAK,SAAS,EAAC,4BAA4B,YACzC,KAAC,oBAAoB,KAAG,GACpB,CACP,EACD,4BAAiB,CAAC,CAAC,UAAU,CAAC,EAAE,SAAS,EAAC,6EAA6E,YAEpH,KAAK,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,WAAW,CAAC,CAAC,GAClC,EACN,eAAK,SAAS,EAAC,kCAAkC,aAC/C,kBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,kBAAkB,gBAAc,CAAC,CAAC,eAAe,CAAC,EAAE,SAAS,EAAC,uEAAuE,aAClK,KAAC,MAAM,IAAC,SAAS,EAAC,QAAQ,wBAAe,EACzC,cAAK,SAAS,EAAC,6CAA6C,wBAAS,IAC9D,EACT,KAAC,gBAAgB,IAAC,KAAK,EAAC,KAAK,GAAG,EAChC,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,GAAI,IAC9F,IACF,GACC,CACV,EACA,UAAU,IAAI,CACb,eAAK,SAAS,EAAC,8BAA8B,aAC3C,cAAK,SAAS,EAAC,gCAAgC,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,GAAI,EACvF,iBAAO,SAAS,EAAC,2DAA2D,aAC1E,iBAAQ,IAAI,EAAC,QAAQ,gBAAa,CAAC,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,EAAC,sDAAsD,YACzJ,KAAC,CAAC,IAAC,SAAS,EAAC,QAAQ,GAAG,GACjB,EACR,GAAG,CAAC,KAAK,CAAC,IACL,IACJ,CACP,EACD,eAAK,SAAS,EAAE,MAAM,aACpB,kBAAQ,SAAS,EAAC,oDAAoD,aACpE,iBAAQ,IAAI,EAAC,QAAQ,gBAAa,CAAC,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,SAAS,EAAC,iCAAiC,YAClI,KAAC,IAAI,IAAC,SAAS,EAAC,QAAQ,GAAG,GACpB,EACT,KAAC,SAAS,IAAC,SAAS,EAAC,MAAM,GAAG,EAC9B,eAAM,SAAS,EAAC,8BAA8B,YAAE,GAAG,CAAC,IAAI,GAAQ,IACzD,EACT,eAAM,EAAE,EAAC,YAAY,EAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,SAAS,EAAC,sEAAsE,YAClH,KAAC,cAAc,cAAE,QAAQ,GAAkB,GACtC,IACH,EACN,KAAC,cAAc,IAAC,KAAK,EAAE,aAAa,GAAI,EACvC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,KAAC,aAAa,KAAG,IACvD,CACP,CAAC;AACJ,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAoB;IACnD,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,IAAI,CAAC,IAAI;QAAE,OAAO,KAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,GAAI,CAAC;IAClH,OAAO,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC;AAC9B,CAAC"}
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../src/shell.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { SitePageDetail, SitePageListItem, SitePostAdmin, SectionData } from "../types.js";
|
|
2
|
+
export interface SiteOverview {
|
|
3
|
+
pages: SitePageListItem[];
|
|
4
|
+
conflicts: number;
|
|
5
|
+
messages: {
|
|
6
|
+
new: number;
|
|
7
|
+
};
|
|
8
|
+
subscribers: number;
|
|
9
|
+
storage: boolean;
|
|
10
|
+
payments: boolean;
|
|
11
|
+
blogKinds: Record<string, string>;
|
|
12
|
+
}
|
|
13
|
+
export interface ContactMessage {
|
|
14
|
+
id: string;
|
|
15
|
+
name: string;
|
|
16
|
+
email: string;
|
|
17
|
+
company: string | null;
|
|
18
|
+
message: string;
|
|
19
|
+
page: string | null;
|
|
20
|
+
status: "new" | "read" | "archived";
|
|
21
|
+
createdAt: string;
|
|
22
|
+
}
|
|
23
|
+
export interface Subscriber {
|
|
24
|
+
id: string;
|
|
25
|
+
email: string;
|
|
26
|
+
status: "subscribed" | "unsubscribed";
|
|
27
|
+
source: string | null;
|
|
28
|
+
createdAt: string;
|
|
29
|
+
}
|
|
30
|
+
export interface Paged<T> {
|
|
31
|
+
data: T[];
|
|
32
|
+
total: number;
|
|
33
|
+
}
|
|
34
|
+
export declare const siteKeys: {
|
|
35
|
+
all: readonly ["forge", "site"];
|
|
36
|
+
overview: readonly ["forge", "site", "overview"];
|
|
37
|
+
page: (id: string) => readonly ["forge", "site", "page", string];
|
|
38
|
+
posts: (filters: Record<string, unknown>) => readonly ["forge", "site", "posts", Record<string, unknown>];
|
|
39
|
+
post: (id: string) => readonly ["forge", "site", "post", string];
|
|
40
|
+
messages: (filters: Record<string, unknown>) => readonly ["forge", "site", "messages", Record<string, unknown>];
|
|
41
|
+
subscribers: (page: number) => readonly ["forge", "site", "subscribers", number];
|
|
42
|
+
preview: (key: string) => readonly ["forge", "site", "preview", string];
|
|
43
|
+
};
|
|
44
|
+
/** 403 = signed in but not a site editor; 404 = the API has no website (app.site absent there). */
|
|
45
|
+
export declare const errorStatus: (e: unknown) => number | undefined;
|
|
46
|
+
export declare function errorMessage(e: unknown): string;
|
|
47
|
+
export declare const apiIssues: (e: unknown) => {
|
|
48
|
+
path: string;
|
|
49
|
+
message: string;
|
|
50
|
+
}[];
|
|
51
|
+
export declare function useOverview(): import("@tanstack/react-query").UseQueryResult<SiteOverview, Error>;
|
|
52
|
+
export declare function usePageDetail(id: string | null): import("@tanstack/react-query").UseQueryResult<SitePageDetail, Error>;
|
|
53
|
+
export declare function usePosts(filters: {
|
|
54
|
+
kind?: string;
|
|
55
|
+
status?: string;
|
|
56
|
+
search?: string;
|
|
57
|
+
page?: number;
|
|
58
|
+
}): import("@tanstack/react-query").UseQueryResult<Paged<SitePostAdmin>, Error>;
|
|
59
|
+
export declare function usePost(id: string | null): import("@tanstack/react-query").UseQueryResult<SitePostAdmin, Error>;
|
|
60
|
+
export declare function useMessages(filters: {
|
|
61
|
+
status?: string;
|
|
62
|
+
page?: number;
|
|
63
|
+
}): import("@tanstack/react-query").UseQueryResult<Paged<ContactMessage>, Error>;
|
|
64
|
+
export declare function useSubscribers(page: number): import("@tanstack/react-query").UseQueryResult<Paged<Subscriber>, Error>;
|
|
65
|
+
/** Refetch everything the editor shows (after a change that affects lists and counts). */
|
|
66
|
+
export declare function useInvalidateSite(): (what?: "all" | "overview" | "posts" | "messages" | "subscribers") => Promise<void>;
|
|
67
|
+
/** Preview data of unsaved sections (live numbers, records, posts, plans); null entries failed validation. */
|
|
68
|
+
export declare function usePreviewData(): (sections: {
|
|
69
|
+
type: string;
|
|
70
|
+
variant: string;
|
|
71
|
+
props: Record<string, unknown>;
|
|
72
|
+
}[]) => Promise<(SectionData | null)[]>;
|
|
73
|
+
/** Upload one image to the storage plugin as a website asset; resolves with its public URL ("/api/files/<id>"). */
|
|
74
|
+
export declare function useImageUpload(): (file: File, onProgress?: (percent: number) => void) => Promise<string>;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
/*
|
|
3
|
+
* Data access of the website editor: TanStack Query hooks over the admin API (/api/site/admin/…), keys under
|
|
4
|
+
* ["forge", "site", …], plus image uploads to the storage plugin.
|
|
5
|
+
*/
|
|
6
|
+
import { useQuery, useQueryClient } from "@tanstack/react-query";
|
|
7
|
+
import { useCallback } from "react";
|
|
8
|
+
import { ApiError, useForge } from "../../context.js";
|
|
9
|
+
export const siteKeys = {
|
|
10
|
+
all: ["forge", "site"],
|
|
11
|
+
overview: ["forge", "site", "overview"],
|
|
12
|
+
page: (id) => ["forge", "site", "page", id],
|
|
13
|
+
posts: (filters) => ["forge", "site", "posts", filters],
|
|
14
|
+
post: (id) => ["forge", "site", "post", id],
|
|
15
|
+
messages: (filters) => ["forge", "site", "messages", filters],
|
|
16
|
+
subscribers: (page) => ["forge", "site", "subscribers", page],
|
|
17
|
+
preview: (key) => ["forge", "site", "preview", key],
|
|
18
|
+
};
|
|
19
|
+
/** 403 = signed in but not a site editor; 404 = the API has no website (app.site absent there). */
|
|
20
|
+
export const errorStatus = (e) => (e instanceof ApiError ? e.status : e?.status);
|
|
21
|
+
export function errorMessage(e) {
|
|
22
|
+
const body = e?.body;
|
|
23
|
+
if (typeof body?.message === "string")
|
|
24
|
+
return body.message;
|
|
25
|
+
return e instanceof Error ? e.message : String(e);
|
|
26
|
+
}
|
|
27
|
+
export const apiIssues = (e) => e?.body?.issues ?? [];
|
|
28
|
+
export function useOverview() {
|
|
29
|
+
const { api, app } = useForge();
|
|
30
|
+
return useQuery({ queryKey: siteKeys.overview, queryFn: () => api("/site/admin/overview"), enabled: !!app.site, retry: (n, e) => errorStatus(e) !== 403 && errorStatus(e) !== 404 && n < 1 });
|
|
31
|
+
}
|
|
32
|
+
export function usePageDetail(id) {
|
|
33
|
+
const { api } = useForge();
|
|
34
|
+
return useQuery({ queryKey: siteKeys.page(id ?? ""), queryFn: () => api(`/site/admin/pages/${id}`), enabled: !!id });
|
|
35
|
+
}
|
|
36
|
+
export function usePosts(filters) {
|
|
37
|
+
const { api } = useForge();
|
|
38
|
+
return useQuery({ queryKey: siteKeys.posts(filters), queryFn: () => api("/site/admin/posts", { query: filters }), placeholderData: (prev) => prev });
|
|
39
|
+
}
|
|
40
|
+
export function usePost(id) {
|
|
41
|
+
const { api } = useForge();
|
|
42
|
+
return useQuery({ queryKey: siteKeys.post(id ?? ""), queryFn: () => api(`/site/admin/posts/${id}`), enabled: !!id && id !== "new" });
|
|
43
|
+
}
|
|
44
|
+
export function useMessages(filters) {
|
|
45
|
+
const { api } = useForge();
|
|
46
|
+
return useQuery({ queryKey: siteKeys.messages(filters), queryFn: () => api("/site/admin/messages", { query: filters }), placeholderData: (prev) => prev });
|
|
47
|
+
}
|
|
48
|
+
export function useSubscribers(page) {
|
|
49
|
+
const { api } = useForge();
|
|
50
|
+
return useQuery({ queryKey: siteKeys.subscribers(page), queryFn: () => api("/site/admin/subscribers", { query: { page } }), placeholderData: (prev) => prev });
|
|
51
|
+
}
|
|
52
|
+
/** Refetch everything the editor shows (after a change that affects lists and counts). */
|
|
53
|
+
export function useInvalidateSite() {
|
|
54
|
+
const qc = useQueryClient();
|
|
55
|
+
return useCallback((what = "all") => qc.invalidateQueries({ queryKey: what === "all" ? siteKeys.all : ["forge", "site", what] }), [qc]);
|
|
56
|
+
}
|
|
57
|
+
/** Preview data of unsaved sections (live numbers, records, posts, plans); null entries failed validation. */
|
|
58
|
+
export function usePreviewData() {
|
|
59
|
+
const { api } = useForge();
|
|
60
|
+
return useCallback((sections) => api("/site/admin/preview", { method: "POST", body: JSON.stringify({ sections }) }).then((r) => r.data), [api]);
|
|
61
|
+
}
|
|
62
|
+
/** Upload one image to the storage plugin as a website asset; resolves with its public URL ("/api/files/<id>"). */
|
|
63
|
+
export function useImageUpload() {
|
|
64
|
+
const { app } = useForge();
|
|
65
|
+
return useCallback((file, onProgress) => new Promise((resolve, reject) => {
|
|
66
|
+
const form = new FormData();
|
|
67
|
+
// The storage plugin reads entity and field before the file.
|
|
68
|
+
form.append("entity", "SitePage");
|
|
69
|
+
form.append("field", "image");
|
|
70
|
+
form.append("file", file);
|
|
71
|
+
const xhr = new XMLHttpRequest();
|
|
72
|
+
xhr.open("POST", `${app.api.prefix}/files`);
|
|
73
|
+
xhr.withCredentials = true;
|
|
74
|
+
xhr.upload.onprogress = (e) => e.lengthComputable && onProgress?.(Math.round((e.loaded / e.total) * 100));
|
|
75
|
+
xhr.onload = () => {
|
|
76
|
+
let body = {};
|
|
77
|
+
try {
|
|
78
|
+
body = JSON.parse(xhr.responseText);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
/* non-JSON error */
|
|
82
|
+
}
|
|
83
|
+
const url = body.url ?? (body.id ? `${app.api.prefix}/files/${body.id}` : undefined);
|
|
84
|
+
if (xhr.status >= 200 && xhr.status < 300 && url)
|
|
85
|
+
resolve(url);
|
|
86
|
+
else
|
|
87
|
+
reject(new Error(body.message ?? `Upload failed (${xhr.status})`));
|
|
88
|
+
};
|
|
89
|
+
xhr.onerror = () => reject(new Error("network"));
|
|
90
|
+
xhr.send(form);
|
|
91
|
+
}), [app.api.prefix]);
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/site/editor/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export type ContentTab = "pages" | "posts" | "messages" | "subscribers";
|
|
2
|
+
/** Parse ?tab= (unknown values fall back to "pages"). */
|
|
3
|
+
export declare const contentTab: (value: string | null | undefined) => ContentTab;
|
|
4
|
+
export declare function ContentAdminPage(): import("react").JSX.Element;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/*
|
|
4
|
+
* Admin "Content" page (/admin/content): the website's pages (with the visual page editor), posts, contact
|
|
5
|
+
* messages and newsletter subscribers. Tabs and the open page/post live in the URL (?tab=pages&page=<id>).
|
|
6
|
+
*/
|
|
7
|
+
import { FileText, Inbox, Mail, Newspaper } from "lucide-react";
|
|
8
|
+
import { usePathname, useRouter, useSearchParams } from "next/navigation";
|
|
9
|
+
import { useCallback } from "react";
|
|
10
|
+
import { useForge } from "../../context.js";
|
|
11
|
+
import { ListSkeleton } from "../../skeleton.js";
|
|
12
|
+
import { Badge, Card, EmptyState, PageHeader } from "../../ui.js";
|
|
13
|
+
import { errorMessage, errorStatus, useOverview } from "./api.js";
|
|
14
|
+
import { MessagesTab, SubscribersTab } from "./inbox-tab.js";
|
|
15
|
+
import { PageEditor } from "./page-editor.js";
|
|
16
|
+
import { PagesTab } from "./pages-tab.js";
|
|
17
|
+
import { PostsTab } from "./posts-tab.js";
|
|
18
|
+
import { TabPanel, Tabs } from "./widgets.js";
|
|
19
|
+
const TABS = ["pages", "posts", "messages", "subscribers"];
|
|
20
|
+
/** Parse ?tab= (unknown values fall back to "pages"). */
|
|
21
|
+
export const contentTab = (value) => (TABS.includes(value) ? value : "pages");
|
|
22
|
+
export function ContentAdminPage() {
|
|
23
|
+
const { app, t } = useForge();
|
|
24
|
+
const router = useRouter();
|
|
25
|
+
const pathname = usePathname();
|
|
26
|
+
const params = useSearchParams();
|
|
27
|
+
const tab = contentTab(params.get("tab"));
|
|
28
|
+
const pageId = params.get("page");
|
|
29
|
+
const postId = params.get("post");
|
|
30
|
+
const overview = useOverview();
|
|
31
|
+
const go = useCallback((next) => {
|
|
32
|
+
const q = new URLSearchParams(params.toString());
|
|
33
|
+
for (const [k, v] of Object.entries(next)) {
|
|
34
|
+
if (v === null)
|
|
35
|
+
q.delete(k);
|
|
36
|
+
else
|
|
37
|
+
q.set(k, v);
|
|
38
|
+
}
|
|
39
|
+
const qs = q.toString();
|
|
40
|
+
router.push(`${pathname}${qs ? `?${qs}` : ""}`, { scroll: false });
|
|
41
|
+
}, [params, pathname, router]);
|
|
42
|
+
const header = _jsx(PageHeader, { title: t("siteAdmin.title"), description: t("siteAdmin.description") });
|
|
43
|
+
if (!app.site) {
|
|
44
|
+
return (_jsxs("div", { children: [header, _jsx(Card, { children: _jsx(EmptyState, { illustration: "dashboard", title: t("siteAdmin.disabled.title"), description: t("siteAdmin.disabled.description") }) })] }));
|
|
45
|
+
}
|
|
46
|
+
const status = errorStatus(overview.error);
|
|
47
|
+
if (status === 403 || status === 401) {
|
|
48
|
+
return (_jsxs("div", { children: [header, _jsx(Card, { children: _jsx(EmptyState, { illustration: "search", title: t("siteAdmin.forbidden.title"), description: t("siteAdmin.forbidden.description", { roles: app.site.editors.join(", ") }) }) })] }));
|
|
49
|
+
}
|
|
50
|
+
if (overview.error) {
|
|
51
|
+
return (_jsxs("div", { children: [header, _jsx(Card, { children: _jsx(EmptyState, { title: status === 404 ? t("siteAdmin.disabled.title") : t("siteAdmin.error.load"), description: status === 404 ? t("siteAdmin.disabled.description") : errorMessage(overview.error) }) })] }));
|
|
52
|
+
}
|
|
53
|
+
const data = overview.data;
|
|
54
|
+
// A page open in the editor takes the whole area.
|
|
55
|
+
if (tab === "pages" && pageId)
|
|
56
|
+
return _jsx(PageEditor, { pageId: pageId, overview: data, onBack: () => go({ page: null }) }, pageId);
|
|
57
|
+
const count = (n) => (n ? _jsx(Badge, { tone: 0, children: n }) : null);
|
|
58
|
+
return (_jsxs("div", { children: [header, _jsx("div", { className: "mb-4", children: _jsx(Tabs, { idPrefix: "site-content", label: t("siteAdmin.title"), value: tab, onChange: (k) => go({ tab: k === "pages" ? null : k, page: null, post: null }), tabs: [
|
|
59
|
+
{ key: "pages", label: t("siteAdmin.tab.pages"), icon: _jsx(FileText, { className: "size-4", "aria-hidden": true }), badge: data?.conflicts ? _jsx(Badge, { tone: 2, children: data.conflicts }) : null },
|
|
60
|
+
{ key: "posts", label: t("siteAdmin.tab.posts"), icon: _jsx(Newspaper, { className: "size-4", "aria-hidden": true }) },
|
|
61
|
+
{ key: "messages", label: t("siteAdmin.tab.messages"), icon: _jsx(Mail, { className: "size-4", "aria-hidden": true }), badge: count(data?.messages.new) },
|
|
62
|
+
{ key: "subscribers", label: t("siteAdmin.tab.subscribers"), icon: _jsx(Inbox, { className: "size-4", "aria-hidden": true }) },
|
|
63
|
+
] }) }), _jsx(TabPanel, { idPrefix: "site-content", tab: tab, children: !data ? (_jsx(Card, { children: _jsx(ListSkeleton, { rows: 5 }) })) : tab === "pages" ? (_jsx(PagesTab, { overview: data, onOpen: (id) => go({ page: id }) })) : tab === "posts" ? (_jsx(PostsTab, { overview: data, postId: postId, onOpen: (id) => go({ post: id }) })) : tab === "messages" ? (_jsx(MessagesTab, {})) : (_jsx(SubscribersTab, { count: data.subscribers })) })] }));
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=content-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-page.js","sourceRoot":"","sources":["../../../src/site/editor/content-page.tsx"],"names":[],"mappings":"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"}
|