@nxtode/app-shell 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -0
- package/dist/components/brand/nxtode-logo.d.ts +8 -0
- package/dist/components/brand/nxtode-logo.d.ts.map +1 -0
- package/dist/components/brand/nxtode-logo.js +10 -0
- package/dist/components/brand/nxtode-logo.js.map +1 -0
- package/dist/components/layout/app-switcher-menu.d.ts +2 -0
- package/dist/components/layout/app-switcher-menu.d.ts.map +1 -0
- package/dist/components/layout/app-switcher-menu.js +95 -0
- package/dist/components/layout/app-switcher-menu.js.map +1 -0
- package/dist/components/layout/notification-menu.d.ts +6 -0
- package/dist/components/layout/notification-menu.d.ts.map +1 -0
- package/dist/components/layout/notification-menu.js +205 -0
- package/dist/components/layout/notification-menu.js.map +1 -0
- package/dist/components/layout/profile-menu.d.ts +16 -0
- package/dist/components/layout/profile-menu.d.ts.map +1 -0
- package/dist/components/layout/profile-menu.js +160 -0
- package/dist/components/layout/profile-menu.js.map +1 -0
- package/dist/components/layout/site-footer.d.ts +6 -0
- package/dist/components/layout/site-footer.d.ts.map +1 -0
- package/dist/components/layout/site-footer.js +8 -0
- package/dist/components/layout/site-footer.js.map +1 -0
- package/dist/config/app.d.ts +14 -0
- package/dist/config/app.d.ts.map +1 -0
- package/dist/config/app.js +14 -0
- package/dist/config/app.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +348 -0
- package/dist/index.js.map +1 -0
- package/package.json +45 -0
- package/styles.css +8106 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import Link from "next/link";
|
|
3
|
+
import { NxtodeLogo } from "../brand/nxtode-logo";
|
|
4
|
+
import { appConfig } from "../../config/app";
|
|
5
|
+
export function SiteFooter({ compact = false }) {
|
|
6
|
+
return (_jsx("footer", { className: "site-footer px-4 pb-6 sm:px-6 lg:px-8", children: _jsxs("div", { className: `app-page-container overflow-hidden rounded-2xl border site-footer-card ${compact ? "" : "mt-8"}`, children: [_jsx("div", { className: "px-5 py-6", children: _jsxs("div", { className: "grid gap-6 md:grid-cols-[1fr_auto] md:items-start", children: [_jsxs("div", { children: [_jsx(NxtodeLogo, { variant: "wordmark", className: "h-8 w-36" }), _jsx("p", { className: "site-footer-muted mt-2 max-w-xl text-sm leading-6", children: "NXTode builds secure software for accounts, automation, integrations, and connected business operations." })] }), _jsx("div", { className: "flex justify-start md:justify-end", children: _jsx("span", { className: "site-footer-muted text-xs", children: "Dark theme" }) })] }) }), _jsx("div", { className: "site-footer-divider border-t px-5 py-4 text-xs site-footer-subtle", children: _jsxs("div", { className: "flex flex-col gap-3 md:flex-row md:items-center md:justify-between", children: [_jsxs("p", { children: ["\u00A9 ", new Date().getFullYear(), " ", appConfig.parentCompanyName, ". All rights reserved."] }), _jsxs("div", { className: "flex flex-wrap gap-3", children: [_jsx(Link, { href: "/pricing", className: "hover:text-zinc-300", children: "Pricing" }), _jsx(Link, { href: "/refund", className: "hover:text-zinc-300", children: "Refund" }), _jsx(Link, { href: "/terms", className: "hover:text-zinc-300", children: "Terms" }), _jsx(Link, { href: "/privacy", className: "hover:text-zinc-300", children: "Privacy" }), _jsx(Link, { href: "/cookies", className: "hover:text-zinc-300", children: "Cookies" }), _jsxs("span", { children: ["v", appConfig.buildNumber] })] })] }) })] }) }));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=site-footer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"site-footer.js","sourceRoot":"","sources":["../../../src/components/layout/site-footer.tsx"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAM7C,MAAM,UAAU,UAAU,CAAC,EAAE,OAAO,GAAG,KAAK,EAAmB;IAC7D,OAAO,CACL,iBAAQ,SAAS,EAAC,uCAAuC,YACvD,eACE,SAAS,EAAE,0EACT,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MACjB,EAAE,aAEF,cAAK,SAAS,EAAC,WAAW,YACxB,eAAK,SAAS,EAAC,mDAAmD,aAChE,0BACE,KAAC,UAAU,IAAC,OAAO,EAAC,UAAU,EAAC,SAAS,EAAC,UAAU,GAAG,EACtD,YAAG,SAAS,EAAC,mDAAmD,yHAG5D,IACA,EAEN,cAAK,SAAS,EAAC,mCAAmC,YAChD,eAAM,SAAS,EAAC,2BAA2B,2BAAkB,GACzD,IACF,GACF,EAEN,cAAK,SAAS,EAAC,mEAAmE,YAChF,eAAK,SAAS,EAAC,oEAAoE,aACjF,mCACK,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,OAAG,SAAS,CAAC,iBAAiB,8BAEvD,EAEJ,eAAK,SAAS,EAAC,sBAAsB,aACnC,KAAC,IAAI,IAAC,IAAI,EAAC,UAAU,EAAC,SAAS,EAAC,qBAAqB,wBAE9C,EACP,KAAC,IAAI,IAAC,IAAI,EAAC,SAAS,EAAC,SAAS,EAAC,qBAAqB,uBAE7C,EACP,KAAC,IAAI,IAAC,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,qBAAqB,sBAE5C,EACP,KAAC,IAAI,IAAC,IAAI,EAAC,UAAU,EAAC,SAAS,EAAC,qBAAqB,wBAE9C,EACP,KAAC,IAAI,IAAC,IAAI,EAAC,UAAU,EAAC,SAAS,EAAC,qBAAqB,wBAE9C,EACP,gCAAQ,SAAS,CAAC,WAAW,IAAQ,IACjC,IACF,GACF,IACF,GACC,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const appConfig: {
|
|
2
|
+
name: string;
|
|
3
|
+
logo: {
|
|
4
|
+
icon: string;
|
|
5
|
+
wordmarkDark: string;
|
|
6
|
+
wordmarkLight: string;
|
|
7
|
+
};
|
|
8
|
+
parentCompanyName: string;
|
|
9
|
+
description: string;
|
|
10
|
+
buildNumber: string;
|
|
11
|
+
supportEmail: string;
|
|
12
|
+
adminUrl: string;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/config/app.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;;;;;;;;;CAYrB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const appConfig = {
|
|
2
|
+
name: process.env.NEXT_PUBLIC_APP_NAME || "NXTode",
|
|
3
|
+
logo: {
|
|
4
|
+
icon: "/brand/primary-icon-nxtode.png",
|
|
5
|
+
wordmarkDark: "/brand/nxtode-logo-blue-nxt-white-ode.png",
|
|
6
|
+
wordmarkLight: "/brand/nxtode-logo-blue-nxt-black-ode.png",
|
|
7
|
+
},
|
|
8
|
+
parentCompanyName: "NXTode",
|
|
9
|
+
description: "A secure account and authentication platform for NXTode apps.",
|
|
10
|
+
buildNumber: process.env.NEXT_PUBLIC_APP_VERSION || "0.1.0",
|
|
11
|
+
supportEmail: process.env.NEXT_PUBLIC_SUPPORT_EMAIL || "support@nxtode.com",
|
|
12
|
+
adminUrl: process.env.NEXT_PUBLIC_ADMIN_URL || "https://admin.nxtode.com",
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/config/app.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,QAAQ;IAClD,IAAI,EAAE;QACJ,IAAI,EAAE,gCAAgC;QACtC,YAAY,EAAE,2CAA2C;QACzD,aAAa,EAAE,2CAA2C;KAC3D;IACD,iBAAiB,EAAE,QAAQ;IAC3B,WAAW,EAAE,+DAA+D;IAC5E,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,OAAO;IAC3D,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,oBAAoB;IAC3E,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,0BAA0B;CAC1E,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export type NxtodeShellUser = {
|
|
3
|
+
firstName: string;
|
|
4
|
+
lastName: string;
|
|
5
|
+
email: string;
|
|
6
|
+
imageUrl?: string | null;
|
|
7
|
+
originalImageUrl?: string | null;
|
|
8
|
+
imagePositionX?: number;
|
|
9
|
+
imagePositionY?: number;
|
|
10
|
+
imageScale?: number;
|
|
11
|
+
};
|
|
12
|
+
export type NxtodeShellNavigationItem = {
|
|
13
|
+
href: string;
|
|
14
|
+
label: string;
|
|
15
|
+
activeKey?: string;
|
|
16
|
+
icon?: "dashboard" | "reports" | "organizations" | "settings" | "integrations" | "folder" | "portal";
|
|
17
|
+
};
|
|
18
|
+
export type NxtodeShellWorkspace = {
|
|
19
|
+
id: string;
|
|
20
|
+
name: string;
|
|
21
|
+
type?: string;
|
|
22
|
+
initials?: string;
|
|
23
|
+
role?: string;
|
|
24
|
+
status?: string;
|
|
25
|
+
description?: string;
|
|
26
|
+
manageUrl?: string | null;
|
|
27
|
+
};
|
|
28
|
+
export type NxtodeShellQuickApp = {
|
|
29
|
+
href: string;
|
|
30
|
+
label: string;
|
|
31
|
+
description: string;
|
|
32
|
+
icon?: "database" | "document" | "workflow" | "portal";
|
|
33
|
+
};
|
|
34
|
+
export type NxtodeAppShellProps = {
|
|
35
|
+
user: NxtodeShellUser;
|
|
36
|
+
children: ReactNode;
|
|
37
|
+
appName?: string;
|
|
38
|
+
appHomeHref?: string;
|
|
39
|
+
activeItem?: string;
|
|
40
|
+
navigation?: NxtodeShellNavigationItem[];
|
|
41
|
+
workspace?: NxtodeShellWorkspace | null;
|
|
42
|
+
workspaces?: NxtodeShellWorkspace[];
|
|
43
|
+
quickApps?: NxtodeShellQuickApp[];
|
|
44
|
+
searchPlaceholder?: string;
|
|
45
|
+
unreadNotifications?: number;
|
|
46
|
+
};
|
|
47
|
+
export declare function NxtodeAppShell({ user, activeItem, navigation, children, workspace, workspaces, quickApps, searchPlaceholder, unreadNotifications, appHomeHref, }: NxtodeAppShellProps): import("react/jsx-runtime").JSX.Element;
|
|
48
|
+
export { NxtodeAppShell as AppShell };
|
|
49
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AASf,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,eAAe,GAAG,UAAU,GAAG,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACtG,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;CACxD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACzC,SAAS,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACxC,UAAU,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACpC,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAmTF,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,UAAU,EACV,UAA8B,EAC9B,QAAQ,EACR,SAAS,EACT,UAAe,EACf,SAA4B,EAC5B,iBAAmC,EACnC,mBAAuB,EACvB,WAA0B,GAC3B,EAAE,mBAAmB,2CAsdrB;AAED,OAAO,EAAE,cAAc,IAAI,QAAQ,EAAE,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import Link from "next/link";
|
|
4
|
+
import { usePathname, useSearchParams } from "next/navigation";
|
|
5
|
+
import { useEffect, useRef, useState, useSyncExternalStore, } from "react";
|
|
6
|
+
import { NxtodeLogo } from "./components/brand/nxtode-logo";
|
|
7
|
+
import { AppSwitcherMenu } from "./components/layout/app-switcher-menu";
|
|
8
|
+
import { NotificationMenu } from "./components/layout/notification-menu";
|
|
9
|
+
import { ProfileMenu } from "./components/layout/profile-menu";
|
|
10
|
+
import { SiteFooter } from "./components/layout/site-footer";
|
|
11
|
+
import { appConfig } from "./config/app";
|
|
12
|
+
const SIDEBAR_STORAGE_KEY = "nxtode.sidebar.open";
|
|
13
|
+
const SIDEBAR_STORAGE_EVENT = "nxtode:sidebar-open-change";
|
|
14
|
+
const WORKSPACE_STORAGE_KEY = "nxtode.active-workspace-id";
|
|
15
|
+
const WORKSPACE_STORAGE_EVENT = "nxtode:workspace-change";
|
|
16
|
+
const SCROLL_TOP_VISIBLE_THRESHOLD = 360;
|
|
17
|
+
const defaultNavigation = [
|
|
18
|
+
{ href: "/dashboard", label: "Dashboard", icon: "dashboard", activeKey: "dashboard" },
|
|
19
|
+
{ href: "/reports", label: "Reports", icon: "reports", activeKey: "reports" },
|
|
20
|
+
{ href: "/settings", label: "Settings", icon: "settings", activeKey: "settings" },
|
|
21
|
+
];
|
|
22
|
+
const defaultQuickApps = [
|
|
23
|
+
{
|
|
24
|
+
href: "/dashboard",
|
|
25
|
+
label: "Dashboard",
|
|
26
|
+
description: "Primary workspace overview",
|
|
27
|
+
icon: "document",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
href: "/reports",
|
|
31
|
+
label: "Reports",
|
|
32
|
+
description: "Reports and audit outputs",
|
|
33
|
+
icon: "document",
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
function initialsFromName(name) {
|
|
37
|
+
const value = name
|
|
38
|
+
.split(/\s+/)
|
|
39
|
+
.filter(Boolean)
|
|
40
|
+
.slice(0, 2)
|
|
41
|
+
.map((part) => part[0]?.toUpperCase())
|
|
42
|
+
.join("");
|
|
43
|
+
return value || "NX";
|
|
44
|
+
}
|
|
45
|
+
function getSidebarSnapshot() {
|
|
46
|
+
if (typeof window === "undefined") {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
return window.localStorage.getItem(SIDEBAR_STORAGE_KEY) === "true";
|
|
50
|
+
}
|
|
51
|
+
function getServerSidebarSnapshot() {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
function subscribeToSidebar(callback) {
|
|
55
|
+
if (typeof window === "undefined") {
|
|
56
|
+
return () => { };
|
|
57
|
+
}
|
|
58
|
+
function handleStorage(event) {
|
|
59
|
+
if (event.key === SIDEBAR_STORAGE_KEY) {
|
|
60
|
+
callback();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
window.addEventListener("storage", handleStorage);
|
|
64
|
+
window.addEventListener(SIDEBAR_STORAGE_EVENT, callback);
|
|
65
|
+
return () => {
|
|
66
|
+
window.removeEventListener("storage", handleStorage);
|
|
67
|
+
window.removeEventListener(SIDEBAR_STORAGE_EVENT, callback);
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function setSidebarOpen(nextValue) {
|
|
71
|
+
localStorage.setItem(SIDEBAR_STORAGE_KEY, String(nextValue));
|
|
72
|
+
document.documentElement.dataset.leftSidebarOpen = String(nextValue);
|
|
73
|
+
window.dispatchEvent(new Event(SIDEBAR_STORAGE_EVENT));
|
|
74
|
+
}
|
|
75
|
+
function getWorkspaceSnapshot() {
|
|
76
|
+
if (typeof window === "undefined") {
|
|
77
|
+
return "";
|
|
78
|
+
}
|
|
79
|
+
return window.localStorage.getItem(WORKSPACE_STORAGE_KEY) || "";
|
|
80
|
+
}
|
|
81
|
+
function getServerWorkspaceSnapshot() {
|
|
82
|
+
return "";
|
|
83
|
+
}
|
|
84
|
+
function subscribeToWorkspace(callback) {
|
|
85
|
+
if (typeof window === "undefined") {
|
|
86
|
+
return () => { };
|
|
87
|
+
}
|
|
88
|
+
function handleStorage(event) {
|
|
89
|
+
if (event.key === WORKSPACE_STORAGE_KEY) {
|
|
90
|
+
callback();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
window.addEventListener("storage", handleStorage);
|
|
94
|
+
window.addEventListener(WORKSPACE_STORAGE_EVENT, callback);
|
|
95
|
+
return () => {
|
|
96
|
+
window.removeEventListener("storage", handleStorage);
|
|
97
|
+
window.removeEventListener(WORKSPACE_STORAGE_EVENT, callback);
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
function setStoredWorkspaceId(workspaceId) {
|
|
101
|
+
localStorage.setItem(WORKSPACE_STORAGE_KEY, workspaceId);
|
|
102
|
+
window.dispatchEvent(new Event(WORKSPACE_STORAGE_EVENT));
|
|
103
|
+
}
|
|
104
|
+
function formatPathSegment(value) {
|
|
105
|
+
return value
|
|
106
|
+
.split("-")
|
|
107
|
+
.filter(Boolean)
|
|
108
|
+
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
109
|
+
.join(" ");
|
|
110
|
+
}
|
|
111
|
+
function getBreadcrumbItems(pathname, activeTab) {
|
|
112
|
+
const segments = pathname.split("/").filter(Boolean);
|
|
113
|
+
if (segments.length === 0) {
|
|
114
|
+
return [{ label: "Home" }];
|
|
115
|
+
}
|
|
116
|
+
const hasSettingsTab = segments[0] === "settings" && Boolean(activeTab);
|
|
117
|
+
const items = segments.map((segment, index) => {
|
|
118
|
+
const isLastPathSegment = index === segments.length - 1;
|
|
119
|
+
const isCurrent = isLastPathSegment && !hasSettingsTab;
|
|
120
|
+
const href = `/${segments.slice(0, index + 1).join("/")}`;
|
|
121
|
+
return {
|
|
122
|
+
label: formatPathSegment(segment),
|
|
123
|
+
href: isCurrent ? undefined : href,
|
|
124
|
+
};
|
|
125
|
+
});
|
|
126
|
+
if (hasSettingsTab && activeTab) {
|
|
127
|
+
items.push({
|
|
128
|
+
label: formatPathSegment(activeTab),
|
|
129
|
+
href: undefined,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
return items;
|
|
133
|
+
}
|
|
134
|
+
function LogoMark() {
|
|
135
|
+
return (_jsx(NxtodeLogo, { variant: "icon", priority: true, className: "h-10 w-10 rounded-xl" }));
|
|
136
|
+
}
|
|
137
|
+
function HomeIcon({ className = "h-5 w-5" }) {
|
|
138
|
+
return (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round", className: className, "aria-hidden": "true", children: [_jsx("path", { d: "m3 11 9-8 9 8" }), _jsx("path", { d: "M5 10v10h14V10" }), _jsx("path", { d: "M9 20v-6h6v6" })] }));
|
|
139
|
+
}
|
|
140
|
+
function SearchIcon({ className = "h-4 w-4" }) {
|
|
141
|
+
return (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round", className: className, "aria-hidden": "true", children: [_jsx("path", { d: "m21 21-4.35-4.35" }), _jsx("circle", { cx: "11", cy: "11", r: "7" })] }));
|
|
142
|
+
}
|
|
143
|
+
function ChevronIcon({ className = "h-5 w-5" }) {
|
|
144
|
+
return (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: className, "aria-hidden": "true", children: _jsx("path", { d: "m9 18 6-6-6-6" }) }));
|
|
145
|
+
}
|
|
146
|
+
function ArrowUpIcon({ className = "h-5 w-5" }) {
|
|
147
|
+
return (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.9", strokeLinecap: "round", strokeLinejoin: "round", className: className, "aria-hidden": "true", children: _jsx("path", { d: "m18 15-6-6-6 6" }) }));
|
|
148
|
+
}
|
|
149
|
+
function FolderIcon({ className = "h-5 w-5" }) {
|
|
150
|
+
return (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round", className: className, "aria-hidden": "true", children: _jsx("path", { d: "M3.5 7.5a2 2 0 0 1 2-2h4l2 2h7a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2h-13a2 2 0 0 1-2-2z" }) }));
|
|
151
|
+
}
|
|
152
|
+
function BuildingIcon({ className = "h-5 w-5" }) {
|
|
153
|
+
return (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round", className: className, "aria-hidden": "true", children: [_jsx("path", { d: "M4 21V5.5A2.5 2.5 0 0 1 6.5 3h7A2.5 2.5 0 0 1 16 5.5V21" }), _jsx("path", { d: "M16 8h1.5A2.5 2.5 0 0 1 20 10.5V21" }), _jsx("path", { d: "M8 7h4" }), _jsx("path", { d: "M8 11h4" }), _jsx("path", { d: "M8 15h4" }), _jsx("path", { d: "M3 21h18" })] }));
|
|
154
|
+
}
|
|
155
|
+
function CheckIcon({ className = "h-4 w-4" }) {
|
|
156
|
+
return (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: className, "aria-hidden": "true", children: _jsx("path", { d: "m5 12 4 4L19 6" }) }));
|
|
157
|
+
}
|
|
158
|
+
function DocumentIcon({ className = "h-5 w-5" }) {
|
|
159
|
+
return (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round", className: className, "aria-hidden": "true", children: [_jsx("path", { d: "M7 3.5h6l4 4v13H7z" }), _jsx("path", { d: "M13 3.5v4h4" }), _jsx("path", { d: "M9.5 12h5" }), _jsx("path", { d: "M9.5 15h5" })] }));
|
|
160
|
+
}
|
|
161
|
+
function WorkflowIcon({ className = "h-5 w-5" }) {
|
|
162
|
+
return (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round", className: className, "aria-hidden": "true", children: [_jsx("path", { d: "M6 6h4v4H6z" }), _jsx("path", { d: "M14 14h4v4h-4z" }), _jsx("path", { d: "M10 8h2a4 4 0 0 1 4 4v2" })] }));
|
|
163
|
+
}
|
|
164
|
+
function DatabaseIcon({ className = "h-5 w-5" }) {
|
|
165
|
+
return (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round", className: className, "aria-hidden": "true", children: [_jsx("ellipse", { cx: "12", cy: "6", rx: "7", ry: "3" }), _jsx("path", { d: "M5 6v6c0 1.66 3.13 3 7 3s7-1.34 7-3V6" }), _jsx("path", { d: "M5 12v6c0 1.66 3.13 3 7 3s7-1.34 7-3v-6" })] }));
|
|
166
|
+
}
|
|
167
|
+
function SettingsIcon({ className = "h-5 w-5" }) {
|
|
168
|
+
return (_jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round", className: className, "aria-hidden": "true", children: [_jsx("path", { d: "M12 15.5A3.5 3.5 0 1 0 12 8a3.5 3.5 0 0 0 0 7.5Z" }), _jsx("path", { d: "M19.4 15a1.8 1.8 0 0 0 .36 2l.04.04a2.1 2.1 0 0 1-2.97 2.97l-.04-.04a1.8 1.8 0 0 0-2-.36 1.8 1.8 0 0 0-1.09 1.65V21a2.1 2.1 0 0 1-4.2 0v-.06a1.8 1.8 0 0 0-1.09-1.65 1.8 1.8 0 0 0-2 .36l-.04.04a2.1 2.1 0 0 1-2.97-2.97l.04-.04a1.8 1.8 0 0 0 .36-2 1.8 1.8 0 0 0-1.65-1.09H2a2.1 2.1 0 0 1 0-4.2h.06a1.8 1.8 0 0 0 1.65-1.09 1.8 1.8 0 0 0-.36-2l-.04-.04a2.1 2.1 0 0 1 2.97-2.97l.04.04a1.8 1.8 0 0 0 2 .36 1.8 1.8 0 0 0 1.09-1.65V2a2.1 2.1 0 0 1 4.2 0v.06a1.8 1.8 0 0 0 1.09 1.65 1.8 1.8 0 0 0 2-.36l.04-.04a2.1 2.1 0 0 1 2.97 2.97l-.04.04a1.8 1.8 0 0 0-.36 2 1.8 1.8 0 0 0 1.65 1.09H22a2.1 2.1 0 0 1 0 4.2h-.06A1.8 1.8 0 0 0 19.4 15Z" })] }));
|
|
169
|
+
}
|
|
170
|
+
function getNavIcon(icon) {
|
|
171
|
+
switch (icon) {
|
|
172
|
+
case "reports":
|
|
173
|
+
return DocumentIcon;
|
|
174
|
+
case "organizations":
|
|
175
|
+
case "portal":
|
|
176
|
+
return BuildingIcon;
|
|
177
|
+
case "settings":
|
|
178
|
+
case "integrations":
|
|
179
|
+
return SettingsIcon;
|
|
180
|
+
case "folder":
|
|
181
|
+
return FolderIcon;
|
|
182
|
+
case "dashboard":
|
|
183
|
+
default:
|
|
184
|
+
return HomeIcon;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
function getQuickIcon(icon) {
|
|
188
|
+
switch (icon) {
|
|
189
|
+
case "database":
|
|
190
|
+
case "portal":
|
|
191
|
+
return DatabaseIcon;
|
|
192
|
+
case "workflow":
|
|
193
|
+
return WorkflowIcon;
|
|
194
|
+
case "document":
|
|
195
|
+
default:
|
|
196
|
+
return DocumentIcon;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
export function NxtodeAppShell({ user, activeItem, navigation = defaultNavigation, children, workspace, workspaces = [], quickApps = defaultQuickApps, searchPlaceholder = "Search or ask", unreadNotifications = 0, appHomeHref = "/dashboard", }) {
|
|
200
|
+
const pathname = usePathname();
|
|
201
|
+
const searchParams = useSearchParams();
|
|
202
|
+
const activeTab = searchParams.get("tab");
|
|
203
|
+
const workspaceButtonRef = useRef(null);
|
|
204
|
+
const workspaceFlyoutRef = useRef(null);
|
|
205
|
+
const sampleButtonRef = useRef(null);
|
|
206
|
+
const sampleFlyoutRef = useRef(null);
|
|
207
|
+
const activeWorkspaceId = useSyncExternalStore(subscribeToWorkspace, getWorkspaceSnapshot, getServerWorkspaceSnapshot);
|
|
208
|
+
const [isWorkspaceFlyoutOpen, setIsWorkspaceFlyoutOpen] = useState(false);
|
|
209
|
+
const [isSampleFlyoutOpen, setIsSampleFlyoutOpen] = useState(false);
|
|
210
|
+
const [workspaceFlyoutTop, setWorkspaceFlyoutTop] = useState(128);
|
|
211
|
+
const [sampleFlyoutTop, setSampleFlyoutTop] = useState(128);
|
|
212
|
+
const [scrollProgress, setScrollProgress] = useState(0);
|
|
213
|
+
const [isScrollTopVisible, setIsScrollTopVisible] = useState(false);
|
|
214
|
+
const breadcrumbItems = getBreadcrumbItems(pathname, activeTab);
|
|
215
|
+
const workspaceItems = workspaces.length
|
|
216
|
+
? workspaces
|
|
217
|
+
: workspace
|
|
218
|
+
? [workspace]
|
|
219
|
+
: [{ id: "workspace", name: "Personal account", initials: "AC", type: "Account", role: "Account" }];
|
|
220
|
+
const activeWorkspace = workspaceItems.find((item) => item.id === activeWorkspaceId) ??
|
|
221
|
+
workspace ??
|
|
222
|
+
workspaceItems[0];
|
|
223
|
+
const isSidebarOpen = useSyncExternalStore(subscribeToSidebar, getSidebarSnapshot, getServerSidebarSnapshot);
|
|
224
|
+
useEffect(() => {
|
|
225
|
+
if (!isSampleFlyoutOpen && !isWorkspaceFlyoutOpen) {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
function handlePointerDown(event) {
|
|
229
|
+
if (!(event.target instanceof Node)) {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
const clickedWorkspaceButton = workspaceButtonRef.current?.contains(event.target);
|
|
233
|
+
const clickedWorkspaceFlyout = workspaceFlyoutRef.current?.contains(event.target);
|
|
234
|
+
const clickedSampleButton = sampleButtonRef.current?.contains(event.target);
|
|
235
|
+
const clickedSampleFlyout = sampleFlyoutRef.current?.contains(event.target);
|
|
236
|
+
if (!clickedWorkspaceButton && !clickedWorkspaceFlyout && !clickedSampleButton && !clickedSampleFlyout) {
|
|
237
|
+
setIsWorkspaceFlyoutOpen(false);
|
|
238
|
+
setIsSampleFlyoutOpen(false);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
function handleKeyDown(event) {
|
|
242
|
+
if (event.key === "Escape") {
|
|
243
|
+
setIsWorkspaceFlyoutOpen(false);
|
|
244
|
+
setIsSampleFlyoutOpen(false);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
document.addEventListener("pointerdown", handlePointerDown);
|
|
248
|
+
document.addEventListener("keydown", handleKeyDown);
|
|
249
|
+
return () => {
|
|
250
|
+
document.removeEventListener("pointerdown", handlePointerDown);
|
|
251
|
+
document.removeEventListener("keydown", handleKeyDown);
|
|
252
|
+
};
|
|
253
|
+
}, [isSampleFlyoutOpen, isWorkspaceFlyoutOpen]);
|
|
254
|
+
useEffect(() => {
|
|
255
|
+
let frameId = 0;
|
|
256
|
+
function updateScrollState() {
|
|
257
|
+
frameId = 0;
|
|
258
|
+
const scrollableHeight = document.documentElement.scrollHeight - window.innerHeight;
|
|
259
|
+
const nextProgress = scrollableHeight > 0
|
|
260
|
+
? Math.min(100, Math.max(0, (window.scrollY / scrollableHeight) * 100))
|
|
261
|
+
: 0;
|
|
262
|
+
setScrollProgress(nextProgress);
|
|
263
|
+
setIsScrollTopVisible(window.scrollY > SCROLL_TOP_VISIBLE_THRESHOLD);
|
|
264
|
+
}
|
|
265
|
+
function scheduleUpdate() {
|
|
266
|
+
if (frameId !== 0)
|
|
267
|
+
return;
|
|
268
|
+
frameId = window.requestAnimationFrame(updateScrollState);
|
|
269
|
+
}
|
|
270
|
+
scheduleUpdate();
|
|
271
|
+
window.addEventListener("scroll", scheduleUpdate, { passive: true });
|
|
272
|
+
window.addEventListener("resize", scheduleUpdate);
|
|
273
|
+
return () => {
|
|
274
|
+
if (frameId !== 0)
|
|
275
|
+
window.cancelAnimationFrame(frameId);
|
|
276
|
+
window.removeEventListener("scroll", scheduleUpdate);
|
|
277
|
+
window.removeEventListener("resize", scheduleUpdate);
|
|
278
|
+
};
|
|
279
|
+
}, []);
|
|
280
|
+
useEffect(() => {
|
|
281
|
+
if (!isWorkspaceFlyoutOpen || !workspaceButtonRef.current)
|
|
282
|
+
return;
|
|
283
|
+
const rect = workspaceButtonRef.current.getBoundingClientRect();
|
|
284
|
+
setWorkspaceFlyoutTop(rect.top);
|
|
285
|
+
}, [isWorkspaceFlyoutOpen, isSidebarOpen]);
|
|
286
|
+
useEffect(() => {
|
|
287
|
+
if (!isSampleFlyoutOpen || !sampleButtonRef.current)
|
|
288
|
+
return;
|
|
289
|
+
const rect = sampleButtonRef.current.getBoundingClientRect();
|
|
290
|
+
setSampleFlyoutTop(rect.top);
|
|
291
|
+
}, [isSampleFlyoutOpen, isSidebarOpen]);
|
|
292
|
+
function toggleSidebar() {
|
|
293
|
+
setSidebarOpen(!isSidebarOpen);
|
|
294
|
+
}
|
|
295
|
+
function selectWorkspace(workspaceId) {
|
|
296
|
+
setStoredWorkspaceId(workspaceId);
|
|
297
|
+
setIsWorkspaceFlyoutOpen(false);
|
|
298
|
+
}
|
|
299
|
+
function toggleWorkspaceFlyout() {
|
|
300
|
+
if (workspaceButtonRef.current) {
|
|
301
|
+
const rect = workspaceButtonRef.current.getBoundingClientRect();
|
|
302
|
+
setWorkspaceFlyoutTop(rect.top);
|
|
303
|
+
}
|
|
304
|
+
setIsSampleFlyoutOpen(false);
|
|
305
|
+
setIsWorkspaceFlyoutOpen((current) => !current);
|
|
306
|
+
}
|
|
307
|
+
function toggleSampleFlyout() {
|
|
308
|
+
if (sampleButtonRef.current) {
|
|
309
|
+
const rect = sampleButtonRef.current.getBoundingClientRect();
|
|
310
|
+
setSampleFlyoutTop(rect.top);
|
|
311
|
+
}
|
|
312
|
+
setIsWorkspaceFlyoutOpen(false);
|
|
313
|
+
setIsSampleFlyoutOpen((current) => !current);
|
|
314
|
+
}
|
|
315
|
+
function scrollToTop() {
|
|
316
|
+
window.scrollTo({
|
|
317
|
+
top: 0,
|
|
318
|
+
behavior: "smooth",
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
function isActive(item) {
|
|
322
|
+
if (activeItem && item.activeKey)
|
|
323
|
+
return activeItem === item.activeKey;
|
|
324
|
+
if (item.href === "/dashboard")
|
|
325
|
+
return pathname === "/" || pathname === "/dashboard";
|
|
326
|
+
return pathname === item.href || pathname.startsWith(`${item.href}/`);
|
|
327
|
+
}
|
|
328
|
+
return (_jsxs("div", { className: "app-shell-root min-h-screen bg-zinc-950 text-white", children: [_jsxs("header", { className: "app-top-nav fixed inset-x-0 top-0 z-50 border-b border-zinc-800 bg-zinc-950/95 backdrop-blur", children: [_jsxs("div", { className: "flex h-16 items-center gap-4 px-4 sm:px-6 lg:pl-3 lg:pr-6", children: [_jsx(Link, { href: appHomeHref, className: "flex h-10 w-10 shrink-0 items-center justify-center", "aria-label": `${appConfig.name} home`, children: _jsx(LogoMark, {}) }), _jsxs("div", { className: "relative min-w-0 flex-1 sm:max-w-md xl:max-w-xl", children: [_jsx(SearchIcon, { className: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-zinc-500" }), _jsx("input", { type: "search", placeholder: searchPlaceholder, className: "h-10 w-full rounded-xl border border-zinc-800 bg-zinc-900 pl-9 pr-3 text-sm text-zinc-100 outline-none transition placeholder:text-zinc-500 focus:border-zinc-600" })] }), _jsxs("div", { className: "ml-auto flex shrink-0 items-center gap-2", children: [_jsx(NotificationMenu, { unreadCount: unreadNotifications }), _jsx(AppSwitcherMenu, {}), _jsx(ProfileMenu, { user: user })] })] }), _jsx("nav", { className: "flex gap-1 overflow-x-auto border-t border-zinc-900 px-4 py-2 lg:hidden", "aria-label": "Mobile navigation", children: navigation.slice(0, 4).map((item) => {
|
|
329
|
+
const Icon = getNavIcon(item.icon);
|
|
330
|
+
const active = isActive(item);
|
|
331
|
+
return (_jsxs(Link, { href: item.href, className: `inline-flex items-center gap-2 rounded-xl px-3 py-2 text-sm transition ${active ? "bg-zinc-800 text-white" : "text-zinc-400 hover:bg-zinc-900 hover:text-zinc-100"}`, children: [_jsx(Icon, { className: "h-4 w-4" }), item.label] }, item.href));
|
|
332
|
+
}) })] }), _jsx("div", { className: "app-scroll-progress-track", "aria-hidden": "true", children: _jsx("span", { className: "app-scroll-progress-fill", style: { width: `${scrollProgress}%` } }) }), _jsx("aside", { className: "app-left-sidebar fixed bottom-0 left-0 top-16 z-40 hidden overflow-hidden border-r lg:block", "aria-label": "Primary navigation", "data-state": isSidebarOpen ? "open" : "closed", children: _jsxs("nav", { className: "app-left-sidebar-nav", children: [_jsx("div", { className: "app-workspace-sidebar-block", children: _jsxs("button", { ref: workspaceButtonRef, type: "button", onClick: toggleWorkspaceFlyout, className: `app-left-sidebar-item app-workspace-switcher-button ${isWorkspaceFlyoutOpen ? "is-active" : ""}`, "aria-expanded": isWorkspaceFlyoutOpen, "aria-haspopup": "menu", "aria-label": "Switch workspace", title: "Switch workspace", children: [_jsx("span", { className: "app-left-sidebar-icon app-workspace-avatar", children: activeWorkspace.initials || initialsFromName(activeWorkspace.name) }), _jsxs("span", { className: "app-left-sidebar-label app-workspace-label", children: [_jsx("span", { className: "app-workspace-name", children: activeWorkspace.name }), _jsxs("span", { className: "app-workspace-kind", children: [activeWorkspace.type || "Workspace", " \u00B7 ", activeWorkspace.role || activeWorkspace.status || "Active"] })] }), _jsx("span", { className: "app-left-sidebar-disclosure", children: _jsx(ChevronIcon, { className: `h-4 w-4 transition-transform duration-150 ${isWorkspaceFlyoutOpen ? "rotate-90" : "rotate-0"}` }) })] }) }), _jsxs("div", { className: "flex min-h-0 flex-1 flex-col gap-2", children: [navigation.map((item) => {
|
|
333
|
+
const Icon = getNavIcon(item.icon);
|
|
334
|
+
const active = isActive(item);
|
|
335
|
+
return (_jsxs(Link, { href: item.href, className: `app-left-sidebar-item ${active ? "is-active" : ""}`, "aria-current": active ? "page" : undefined, "aria-label": item.label, title: item.label, children: [_jsx("span", { className: "app-left-sidebar-icon", children: _jsx(Icon, { className: "h-5 w-5" }) }), _jsx("span", { className: "app-left-sidebar-label", children: item.label })] }, item.href));
|
|
336
|
+
}), _jsxs("button", { ref: sampleButtonRef, type: "button", onClick: toggleSampleFlyout, className: `app-left-sidebar-item ${isSampleFlyoutOpen ? "is-active" : ""}`, "aria-expanded": isSampleFlyoutOpen, "aria-haspopup": "menu", "aria-label": "Quick apps", title: "Quick apps", children: [_jsx("span", { className: "app-left-sidebar-icon", children: _jsx(FolderIcon, { className: "h-5 w-5" }) }), _jsx("span", { className: "app-left-sidebar-label", children: "Quick apps" }), _jsx("span", { className: "app-left-sidebar-disclosure", children: _jsx(ChevronIcon, { className: `h-4 w-4 transition-transform duration-150 ${isSampleFlyoutOpen ? "rotate-90" : "rotate-0"}` }) })] })] }), _jsxs("button", { type: "button", onClick: toggleSidebar, className: "app-left-sidebar-item", "aria-label": isSidebarOpen ? "Collapse sidebar" : "Expand sidebar", "aria-expanded": isSidebarOpen, title: isSidebarOpen ? "Collapse sidebar" : "Expand sidebar", children: [_jsx("span", { className: "app-left-sidebar-icon", children: _jsx(ChevronIcon, { className: `h-5 w-5 transition-transform duration-150 ${isSidebarOpen ? "rotate-180" : "rotate-0"}` }) }), _jsx("span", { className: "app-left-sidebar-label", children: "Collapse" })] })] }) }), isWorkspaceFlyoutOpen ? (_jsxs("div", { ref: workspaceFlyoutRef, className: "app-left-sidebar-flyout app-workspace-flyout fixed z-[55] hidden w-80 lg:block", style: { top: workspaceFlyoutTop }, role: "menu", "aria-label": "Workspace switcher", children: [_jsxs("div", { className: "app-left-sidebar-flyout-header", children: [_jsx("div", { className: "app-left-sidebar-flyout-header-icon", children: _jsx(BuildingIcon, { className: "h-4 w-4" }) }), _jsxs("div", { className: "min-w-0", children: [_jsx("p", { className: "app-left-sidebar-flyout-title", children: "Workspaces" }), _jsx("p", { className: "app-left-sidebar-flyout-description", children: "Switch workspace or open the selected workspace." })] })] }), _jsx("div", { className: "app-workspace-flyout-list", children: workspaceItems.map((item) => {
|
|
337
|
+
const active = item.id === activeWorkspace.id;
|
|
338
|
+
return (_jsxs("button", { type: "button", onClick: () => selectWorkspace(item.id), className: `app-workspace-flyout-link ${active ? "is-active" : ""}`, role: "menuitem", children: [_jsx("span", { className: "app-workspace-flyout-avatar", children: item.initials || initialsFromName(item.name) }), _jsxs("span", { className: "min-w-0 flex-1", children: [_jsx("span", { className: "app-workspace-flyout-name", children: item.name }), _jsxs("span", { className: "app-workspace-flyout-meta", children: [item.type || "Workspace", " \u00B7 ", item.status || item.role || "Active"] })] }), active ? _jsx(CheckIcon, { className: "h-4 w-4" }) : null] }, item.id));
|
|
339
|
+
}) }), _jsx("div", { className: "app-workspace-flyout-actions", children: activeWorkspace.manageUrl ? (_jsxs("a", { href: activeWorkspace.manageUrl, className: "app-workspace-flyout-action", children: [_jsx(ChevronIcon, { className: "h-4 w-4" }), "Manage workspace"] })) : (_jsxs("span", { className: "app-workspace-flyout-action opacity-60", children: [_jsx(ChevronIcon, { className: "h-4 w-4" }), "No management link configured"] })) })] })) : null, isSampleFlyoutOpen ? (_jsxs("div", { ref: sampleFlyoutRef, className: "app-left-sidebar-flyout fixed z-[55] hidden w-72 lg:block", style: { top: sampleFlyoutTop }, role: "menu", "aria-label": "Quick apps", children: [_jsxs("div", { className: "app-left-sidebar-flyout-header", children: [_jsx("div", { className: "app-left-sidebar-flyout-header-icon", children: _jsx(FolderIcon, { className: "h-4 w-4" }) }), _jsxs("div", { className: "min-w-0", children: [_jsx("p", { className: "app-left-sidebar-flyout-title", children: "Quick apps" }), _jsx("p", { className: "app-left-sidebar-flyout-description", children: "Fast access to NXTode apps and work surfaces." })] })] }), _jsx("div", { className: "app-left-sidebar-flyout-list", children: quickApps.map((item) => {
|
|
340
|
+
const ItemIcon = getQuickIcon(item.icon);
|
|
341
|
+
return (_jsxs(Link, { href: item.href, className: "app-left-sidebar-flyout-link", role: "menuitem", onClick: () => setIsSampleFlyoutOpen(false), children: [_jsx("span", { className: "app-left-sidebar-flyout-link-icon", children: _jsx(ItemIcon, {}) }), _jsxs("span", { className: "min-w-0", children: [_jsx("span", { className: "app-left-sidebar-flyout-link-label", children: item.label }), _jsx("span", { className: "app-left-sidebar-flyout-link-description", children: item.description })] })] }, item.label));
|
|
342
|
+
}) })] })) : null, _jsx("main", { className: "app-shell-content min-h-screen", children: _jsxs("div", { className: "app-shell-content-inner px-4 pb-6 pt-2 sm:px-6 lg:px-8", children: [_jsx("nav", { className: "app-breadcrumb-inline", "aria-label": "Breadcrumb", children: _jsx("ol", { className: "app-breadcrumb-list", children: breadcrumbItems.map((item, index) => {
|
|
343
|
+
const isCurrent = index === breadcrumbItems.length - 1;
|
|
344
|
+
return (_jsxs("li", { className: "app-breadcrumb-item", children: [index > 0 ? _jsx(ChevronIcon, { className: "app-breadcrumb-chevron", "aria-hidden": "true" }) : null, item.href && !isCurrent ? (_jsx(Link, { href: item.href, className: "app-breadcrumb-link", children: item.label })) : (_jsx("span", { className: "app-breadcrumb-current", "aria-current": isCurrent ? "page" : undefined, children: item.label }))] }, `${item.label}-${index}`));
|
|
345
|
+
}) }) }), children] }) }), _jsx("div", { className: "app-shell-footer", children: _jsx(SiteFooter, { compact: true }) }), _jsx("button", { type: "button", onClick: scrollToTop, className: `app-scroll-top-button ${isScrollTopVisible ? "is-visible" : ""}`, "aria-label": "Scroll to top", title: "Scroll to top", children: _jsx(ArrowUpIcon, { className: "h-5 w-5" }) })] }));
|
|
346
|
+
}
|
|
347
|
+
export { NxtodeAppShell as AppShell };
|
|
348
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@nxtode/app-shell",
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"private": false,
|
|
5
|
+
"description": "Shared NXTode application shell for top nav, sidebar, footer, and app layout.",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"module": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"README.md",
|
|
13
|
+
"styles.css"
|
|
14
|
+
],
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"access": "public",
|
|
17
|
+
"registry": "https://registry.npmjs.org/"
|
|
18
|
+
},
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc -p tsconfig.json",
|
|
21
|
+
"typecheck": "tsc --noEmit",
|
|
22
|
+
"prepublishOnly": "npm run build"
|
|
23
|
+
},
|
|
24
|
+
"peerDependencies": {
|
|
25
|
+
"next": "^16.0.0",
|
|
26
|
+
"react": "^19.0.0",
|
|
27
|
+
"react-dom": "^19.0.0"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@types/node": "^20",
|
|
31
|
+
"@types/react": "^19",
|
|
32
|
+
"@types/react-dom": "^19",
|
|
33
|
+
"next": "16.2.6",
|
|
34
|
+
"react": "19.2.4",
|
|
35
|
+
"react-dom": "19.2.4",
|
|
36
|
+
"typescript": "^5"
|
|
37
|
+
},
|
|
38
|
+
"exports": {
|
|
39
|
+
".": {
|
|
40
|
+
"types": "./dist/index.d.ts",
|
|
41
|
+
"import": "./dist/index.js"
|
|
42
|
+
},
|
|
43
|
+
"./styles.css": "./styles.css"
|
|
44
|
+
}
|
|
45
|
+
}
|