@almadar/ui 4.54.14 → 4.55.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/avl/index.cjs +136 -34
- package/dist/avl/index.js +136 -34
- package/dist/components/index.cjs +121 -6
- package/dist/components/index.js +121 -6
- package/dist/components/templates/DashboardLayout.d.ts +6 -0
- package/dist/providers/index.cjs +121 -6
- package/dist/providers/index.js +121 -6
- package/dist/runtime/index.cjs +121 -6
- package/dist/runtime/index.js +121 -6
- package/package.json +1 -1
package/dist/avl/index.cjs
CHANGED
|
@@ -25147,7 +25147,7 @@ var init_CurrentPagePathContext = __esm({
|
|
|
25147
25147
|
useCurrentPagePath = () => React96.useContext(CurrentPagePathContext);
|
|
25148
25148
|
}
|
|
25149
25149
|
});
|
|
25150
|
-
var DashboardLayout, NavLink;
|
|
25150
|
+
var DashboardLayout, NavLink, NavLinkTopnav, NavLinkBottom;
|
|
25151
25151
|
var init_DashboardLayout = __esm({
|
|
25152
25152
|
"components/templates/DashboardLayout.tsx"() {
|
|
25153
25153
|
"use client";
|
|
@@ -25178,6 +25178,7 @@ var init_DashboardLayout = __esm({
|
|
|
25178
25178
|
sidebarFooter,
|
|
25179
25179
|
onSignOut: onSignOutProp,
|
|
25180
25180
|
currentPath,
|
|
25181
|
+
layoutMode = "sidebar",
|
|
25181
25182
|
children
|
|
25182
25183
|
}) => {
|
|
25183
25184
|
const eventBus = useEventBus();
|
|
@@ -25204,20 +25205,24 @@ var init_DashboardLayout = __esm({
|
|
|
25204
25205
|
const user = userProp || (null);
|
|
25205
25206
|
const { t } = useTranslate();
|
|
25206
25207
|
const handleSignOut = onSignOutProp || authSignOut;
|
|
25208
|
+
const showSidebar = layoutMode === "sidebar";
|
|
25209
|
+
const showHeader = layoutMode !== "minimal";
|
|
25210
|
+
const showBottomNav = layoutMode === "bottomnav";
|
|
25211
|
+
const isTopNav = layoutMode === "topnav";
|
|
25207
25212
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
25208
25213
|
HStack,
|
|
25209
25214
|
{
|
|
25210
25215
|
gap: "none",
|
|
25211
25216
|
className: "@container/dashboard min-h-screen w-full bg-background dark:bg-background items-stretch",
|
|
25212
25217
|
children: [
|
|
25213
|
-
sidebarOpen && /* @__PURE__ */ jsxRuntime.jsx(
|
|
25218
|
+
showSidebar && sidebarOpen && /* @__PURE__ */ jsxRuntime.jsx(
|
|
25214
25219
|
Box,
|
|
25215
25220
|
{
|
|
25216
25221
|
className: "fixed inset-0 bg-foreground/50 dark:bg-foreground/70 z-20 @lg/dashboard:hidden",
|
|
25217
25222
|
onClick: () => setSidebarOpen(false)
|
|
25218
25223
|
}
|
|
25219
25224
|
),
|
|
25220
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
25225
|
+
showSidebar && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
25221
25226
|
Box,
|
|
25222
25227
|
{
|
|
25223
25228
|
as: "aside",
|
|
@@ -25289,7 +25294,7 @@ var init_DashboardLayout = __esm({
|
|
|
25289
25294
|
}
|
|
25290
25295
|
),
|
|
25291
25296
|
/* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "none", className: "flex-1 min-w-0 min-h-screen", children: [
|
|
25292
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25297
|
+
showHeader && /* @__PURE__ */ jsxRuntime.jsx(
|
|
25293
25298
|
Box,
|
|
25294
25299
|
{
|
|
25295
25300
|
as: "header",
|
|
@@ -25301,7 +25306,7 @@ var init_DashboardLayout = __esm({
|
|
|
25301
25306
|
justify: "between",
|
|
25302
25307
|
className: "h-full px-3 @sm/dashboard:px-4 gap-2 @sm/dashboard:gap-4",
|
|
25303
25308
|
children: [
|
|
25304
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25309
|
+
showSidebar && /* @__PURE__ */ jsxRuntime.jsx(
|
|
25305
25310
|
Button,
|
|
25306
25311
|
{
|
|
25307
25312
|
variant: "ghost",
|
|
@@ -25311,6 +25316,45 @@ var init_DashboardLayout = __esm({
|
|
|
25311
25316
|
children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.Menu, { className: "h-5 w-5" })
|
|
25312
25317
|
}
|
|
25313
25318
|
),
|
|
25319
|
+
isTopNav && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
25320
|
+
HStack,
|
|
25321
|
+
{
|
|
25322
|
+
as: "nav",
|
|
25323
|
+
align: "center",
|
|
25324
|
+
gap: "none",
|
|
25325
|
+
className: "hidden @md/dashboard:flex items-center gap-1 overflow-x-auto",
|
|
25326
|
+
children: [
|
|
25327
|
+
/* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Link, { to: "/", className: "flex items-center gap-2 mr-3 shrink-0", children: [
|
|
25328
|
+
logo || /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-7 h-7 bg-primary-600 rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
25329
|
+
Typography,
|
|
25330
|
+
{
|
|
25331
|
+
variant: "small",
|
|
25332
|
+
className: "text-white font-bold text-xs",
|
|
25333
|
+
as: "span",
|
|
25334
|
+
children: appName.charAt(0).toUpperCase()
|
|
25335
|
+
}
|
|
25336
|
+
) }),
|
|
25337
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25338
|
+
Typography,
|
|
25339
|
+
{
|
|
25340
|
+
variant: "label",
|
|
25341
|
+
className: "font-semibold text-foreground dark:text-foreground",
|
|
25342
|
+
as: "span",
|
|
25343
|
+
children: appName
|
|
25344
|
+
}
|
|
25345
|
+
)
|
|
25346
|
+
] }),
|
|
25347
|
+
navItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
25348
|
+
NavLinkTopnav,
|
|
25349
|
+
{
|
|
25350
|
+
item,
|
|
25351
|
+
currentPath: activePath
|
|
25352
|
+
},
|
|
25353
|
+
item.href
|
|
25354
|
+
))
|
|
25355
|
+
]
|
|
25356
|
+
}
|
|
25357
|
+
),
|
|
25314
25358
|
searchEnabled && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "hidden @sm/dashboard:block flex-1 min-w-0 @xl/dashboard:max-w-md", children: /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "relative", children: [
|
|
25315
25359
|
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons.Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground dark:text-muted-foreground" }),
|
|
25316
25360
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -25458,7 +25502,22 @@ var init_DashboardLayout = __esm({
|
|
|
25458
25502
|
)
|
|
25459
25503
|
}
|
|
25460
25504
|
),
|
|
25461
|
-
/* @__PURE__ */ jsxRuntime.jsx(Box, { as: "main", className: "flex-1 p-3 @sm/dashboard:p-4 @md/dashboard:p-6", children })
|
|
25505
|
+
/* @__PURE__ */ jsxRuntime.jsx(Box, { as: "main", className: "flex-1 p-3 @sm/dashboard:p-4 @md/dashboard:p-6", children }),
|
|
25506
|
+
showBottomNav && /* @__PURE__ */ jsxRuntime.jsx(
|
|
25507
|
+
Box,
|
|
25508
|
+
{
|
|
25509
|
+
as: "nav",
|
|
25510
|
+
className: "sticky bottom-0 z-20 h-16 bg-card dark:bg-card border-t border-border dark:border-border @md/dashboard:hidden",
|
|
25511
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(HStack, { align: "center", justify: "around", className: "h-full px-2", children: navItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
25512
|
+
NavLinkBottom,
|
|
25513
|
+
{
|
|
25514
|
+
item,
|
|
25515
|
+
currentPath: activePath
|
|
25516
|
+
},
|
|
25517
|
+
item.href
|
|
25518
|
+
)) })
|
|
25519
|
+
}
|
|
25520
|
+
)
|
|
25462
25521
|
] })
|
|
25463
25522
|
]
|
|
25464
25523
|
}
|
|
@@ -25500,6 +25559,62 @@ var init_DashboardLayout = __esm({
|
|
|
25500
25559
|
);
|
|
25501
25560
|
};
|
|
25502
25561
|
NavLink.displayName = "NavLink";
|
|
25562
|
+
NavLinkTopnav = ({
|
|
25563
|
+
item,
|
|
25564
|
+
currentPath
|
|
25565
|
+
}) => {
|
|
25566
|
+
const isActive = currentPath === item.href || currentPath.startsWith(item.href + "/");
|
|
25567
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
25568
|
+
reactRouterDom.Link,
|
|
25569
|
+
{
|
|
25570
|
+
to: item.href,
|
|
25571
|
+
className: cn(
|
|
25572
|
+
"flex items-center gap-1.5 px-3 py-1.5 rounded-md text-sm font-medium transition-colors whitespace-nowrap",
|
|
25573
|
+
isActive ? "bg-primary text-primary-foreground shadow-sm" : "text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
25574
|
+
),
|
|
25575
|
+
children: [
|
|
25576
|
+
item.icon && (typeof item.icon === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: item.icon, className: "h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(item.icon, { className: "h-4 w-4" })),
|
|
25577
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "flex-1", as: "span", children: item.label }),
|
|
25578
|
+
item.badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: isActive ? "primary" : "default", size: "sm", children: item.badge })
|
|
25579
|
+
]
|
|
25580
|
+
}
|
|
25581
|
+
);
|
|
25582
|
+
};
|
|
25583
|
+
NavLinkTopnav.displayName = "NavLinkTopnav";
|
|
25584
|
+
NavLinkBottom = ({
|
|
25585
|
+
item,
|
|
25586
|
+
currentPath
|
|
25587
|
+
}) => {
|
|
25588
|
+
const isActive = currentPath === item.href || currentPath.startsWith(item.href + "/");
|
|
25589
|
+
const iconClassName = cn(
|
|
25590
|
+
"h-5 w-5",
|
|
25591
|
+
isActive ? "text-primary" : "text-muted-foreground"
|
|
25592
|
+
);
|
|
25593
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
25594
|
+
reactRouterDom.Link,
|
|
25595
|
+
{
|
|
25596
|
+
to: item.href,
|
|
25597
|
+
className: "flex flex-col items-center justify-center gap-0.5 px-2 py-1 rounded-lg transition-colors flex-1 min-w-0",
|
|
25598
|
+
children: [
|
|
25599
|
+
item.icon && (typeof item.icon === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: item.icon, className: iconClassName }) : /* @__PURE__ */ jsxRuntime.jsx(item.icon, { className: iconClassName })),
|
|
25600
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25601
|
+
Typography,
|
|
25602
|
+
{
|
|
25603
|
+
variant: "caption",
|
|
25604
|
+
className: cn(
|
|
25605
|
+
"text-[10px] leading-tight truncate max-w-full",
|
|
25606
|
+
isActive ? "text-primary font-medium" : "text-muted-foreground"
|
|
25607
|
+
),
|
|
25608
|
+
as: "span",
|
|
25609
|
+
children: item.label
|
|
25610
|
+
}
|
|
25611
|
+
),
|
|
25612
|
+
item.badge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: isActive ? "primary" : "default", size: "sm", className: "text-[8px] px-1 py-0 min-w-0", children: item.badge })
|
|
25613
|
+
]
|
|
25614
|
+
}
|
|
25615
|
+
);
|
|
25616
|
+
};
|
|
25617
|
+
NavLinkBottom.displayName = "NavLinkBottom";
|
|
25503
25618
|
}
|
|
25504
25619
|
});
|
|
25505
25620
|
function useAlmadarDndSensors(withSortableKeyboard = true) {
|
|
@@ -60481,7 +60596,10 @@ function buildTransitionSchema(fullSchema, orbitalName, traitName, transitionEve
|
|
|
60481
60596
|
if (!Array.isArray(eff)) continue;
|
|
60482
60597
|
const op = eff[0];
|
|
60483
60598
|
if (op === "render-ui") {
|
|
60484
|
-
|
|
60599
|
+
const slotTarget = eff[1];
|
|
60600
|
+
const PORTAL_SLOTS = /* @__PURE__ */ new Set(["modal", "drawer", "overlay", "center"]);
|
|
60601
|
+
const rewritten = typeof slotTarget === "string" && PORTAL_SLOTS.has(slotTarget) ? ["render-ui", "main", ...eff.slice(2)] : eff;
|
|
60602
|
+
previewEffects.push(rewritten);
|
|
60485
60603
|
hasRenderUI = true;
|
|
60486
60604
|
continue;
|
|
60487
60605
|
}
|
|
@@ -60757,7 +60875,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
60757
60875
|
},
|
|
60758
60876
|
children: [
|
|
60759
60877
|
/* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 12 }, children: "\u279E" }),
|
|
60760
|
-
"
|
|
60878
|
+
"Double-click to open"
|
|
60761
60879
|
]
|
|
60762
60880
|
}
|
|
60763
60881
|
)
|
|
@@ -60858,33 +60976,20 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
60858
60976
|
ref: setContentRef,
|
|
60859
60977
|
className: `orb-preview-live nodrag${dragActive || l2IsOver ? " drag-active" : ""}`,
|
|
60860
60978
|
onClick: handleContentClick,
|
|
60861
|
-
children: orbitalSchema ?
|
|
60862
|
-
// L2
|
|
60863
|
-
//
|
|
60864
|
-
//
|
|
60865
|
-
//
|
|
60866
|
-
|
|
60867
|
-
// collapses to 0 when the parent chain is `height: auto` →
|
|
60868
|
-
// `min-h-full` (no resolved height to inherit). Forcing a real
|
|
60869
|
-
// pixel height here gives the contained modal a real card to
|
|
60870
|
-
// fill, so the L2 preview shows the modal panel sized to the
|
|
60871
|
-
// card instead of a tiny floating rectangle.
|
|
60872
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
60979
|
+
children: orbitalSchema ? (
|
|
60980
|
+
// L1 and L2 both auto-grow with content. L2's `buildTransitionSchema`
|
|
60981
|
+
// rewrites portal slots (modal/drawer/overlay/center) to `main`, so
|
|
60982
|
+
// the rendered pattern lands inline in the main slot and contributes
|
|
60983
|
+
// to the card's height — same height model as L1 orbital cards.
|
|
60984
|
+
/* @__PURE__ */ jsxRuntime.jsx(Box, { style: { minHeight: preset.minHeight }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
60873
60985
|
BrowserPlayground,
|
|
60874
60986
|
{
|
|
60875
60987
|
schema: orbitalSchema,
|
|
60876
60988
|
mode: "mock",
|
|
60877
|
-
height:
|
|
60989
|
+
height: "auto"
|
|
60878
60990
|
}
|
|
60879
|
-
)
|
|
60880
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(Box, { style: { minHeight: preset.minHeight }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
60881
|
-
BrowserPlayground,
|
|
60882
|
-
{
|
|
60883
|
-
schema: orbitalSchema,
|
|
60884
|
-
mode: "mock",
|
|
60885
|
-
height: "auto"
|
|
60886
|
-
}
|
|
60887
|
-
) }) : /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex items-center justify-center", style: { minHeight: preset.minHeight }, children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: "No preview available" }) })
|
|
60991
|
+
) })
|
|
60992
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex items-center justify-center", style: { minHeight: preset.minHeight }, children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: "No preview available" }) })
|
|
60888
60993
|
}
|
|
60889
60994
|
),
|
|
60890
60995
|
/* @__PURE__ */ jsxRuntime.jsx(react.Handle, { type: "target", position: react.Position.Left, style: TARGET_HANDLE_STYLE }),
|
|
@@ -62377,10 +62482,7 @@ function FlowCanvasInner({
|
|
|
62377
62482
|
const orbitalName = nodeData.orbitalName ?? node.id;
|
|
62378
62483
|
onNodeClick?.({ level: "overview", orbital: orbitalName });
|
|
62379
62484
|
onNodeSelect?.(orbitalName);
|
|
62380
|
-
|
|
62381
|
-
setLevel("expanded");
|
|
62382
|
-
onLevelChange?.("expanded", orbitalName);
|
|
62383
|
-
}, [level, expandedOrbital, onNodeClick, onNodeSelect, onLevelChange]);
|
|
62485
|
+
}, [level, expandedOrbital, onNodeClick, onNodeSelect]);
|
|
62384
62486
|
const handleClosePanel = React96.useCallback(() => {
|
|
62385
62487
|
setSelectedNode(null);
|
|
62386
62488
|
}, []);
|
package/dist/avl/index.js
CHANGED
|
@@ -25101,7 +25101,7 @@ var init_CurrentPagePathContext = __esm({
|
|
|
25101
25101
|
useCurrentPagePath = () => useContext(CurrentPagePathContext);
|
|
25102
25102
|
}
|
|
25103
25103
|
});
|
|
25104
|
-
var DashboardLayout, NavLink;
|
|
25104
|
+
var DashboardLayout, NavLink, NavLinkTopnav, NavLinkBottom;
|
|
25105
25105
|
var init_DashboardLayout = __esm({
|
|
25106
25106
|
"components/templates/DashboardLayout.tsx"() {
|
|
25107
25107
|
"use client";
|
|
@@ -25132,6 +25132,7 @@ var init_DashboardLayout = __esm({
|
|
|
25132
25132
|
sidebarFooter,
|
|
25133
25133
|
onSignOut: onSignOutProp,
|
|
25134
25134
|
currentPath,
|
|
25135
|
+
layoutMode = "sidebar",
|
|
25135
25136
|
children
|
|
25136
25137
|
}) => {
|
|
25137
25138
|
const eventBus = useEventBus();
|
|
@@ -25158,20 +25159,24 @@ var init_DashboardLayout = __esm({
|
|
|
25158
25159
|
const user = userProp || (null);
|
|
25159
25160
|
const { t } = useTranslate();
|
|
25160
25161
|
const handleSignOut = onSignOutProp || authSignOut;
|
|
25162
|
+
const showSidebar = layoutMode === "sidebar";
|
|
25163
|
+
const showHeader = layoutMode !== "minimal";
|
|
25164
|
+
const showBottomNav = layoutMode === "bottomnav";
|
|
25165
|
+
const isTopNav = layoutMode === "topnav";
|
|
25161
25166
|
return /* @__PURE__ */ jsxs(
|
|
25162
25167
|
HStack,
|
|
25163
25168
|
{
|
|
25164
25169
|
gap: "none",
|
|
25165
25170
|
className: "@container/dashboard min-h-screen w-full bg-background dark:bg-background items-stretch",
|
|
25166
25171
|
children: [
|
|
25167
|
-
sidebarOpen && /* @__PURE__ */ jsx(
|
|
25172
|
+
showSidebar && sidebarOpen && /* @__PURE__ */ jsx(
|
|
25168
25173
|
Box,
|
|
25169
25174
|
{
|
|
25170
25175
|
className: "fixed inset-0 bg-foreground/50 dark:bg-foreground/70 z-20 @lg/dashboard:hidden",
|
|
25171
25176
|
onClick: () => setSidebarOpen(false)
|
|
25172
25177
|
}
|
|
25173
25178
|
),
|
|
25174
|
-
/* @__PURE__ */ jsxs(
|
|
25179
|
+
showSidebar && /* @__PURE__ */ jsxs(
|
|
25175
25180
|
Box,
|
|
25176
25181
|
{
|
|
25177
25182
|
as: "aside",
|
|
@@ -25243,7 +25248,7 @@ var init_DashboardLayout = __esm({
|
|
|
25243
25248
|
}
|
|
25244
25249
|
),
|
|
25245
25250
|
/* @__PURE__ */ jsxs(VStack, { gap: "none", className: "flex-1 min-w-0 min-h-screen", children: [
|
|
25246
|
-
/* @__PURE__ */ jsx(
|
|
25251
|
+
showHeader && /* @__PURE__ */ jsx(
|
|
25247
25252
|
Box,
|
|
25248
25253
|
{
|
|
25249
25254
|
as: "header",
|
|
@@ -25255,7 +25260,7 @@ var init_DashboardLayout = __esm({
|
|
|
25255
25260
|
justify: "between",
|
|
25256
25261
|
className: "h-full px-3 @sm/dashboard:px-4 gap-2 @sm/dashboard:gap-4",
|
|
25257
25262
|
children: [
|
|
25258
|
-
/* @__PURE__ */ jsx(
|
|
25263
|
+
showSidebar && /* @__PURE__ */ jsx(
|
|
25259
25264
|
Button,
|
|
25260
25265
|
{
|
|
25261
25266
|
variant: "ghost",
|
|
@@ -25265,6 +25270,45 @@ var init_DashboardLayout = __esm({
|
|
|
25265
25270
|
children: /* @__PURE__ */ jsx(Menu$1, { className: "h-5 w-5" })
|
|
25266
25271
|
}
|
|
25267
25272
|
),
|
|
25273
|
+
isTopNav && /* @__PURE__ */ jsxs(
|
|
25274
|
+
HStack,
|
|
25275
|
+
{
|
|
25276
|
+
as: "nav",
|
|
25277
|
+
align: "center",
|
|
25278
|
+
gap: "none",
|
|
25279
|
+
className: "hidden @md/dashboard:flex items-center gap-1 overflow-x-auto",
|
|
25280
|
+
children: [
|
|
25281
|
+
/* @__PURE__ */ jsxs(Link, { to: "/", className: "flex items-center gap-2 mr-3 shrink-0", children: [
|
|
25282
|
+
logo || /* @__PURE__ */ jsx(Box, { className: "w-7 h-7 bg-primary-600 rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
25283
|
+
Typography,
|
|
25284
|
+
{
|
|
25285
|
+
variant: "small",
|
|
25286
|
+
className: "text-white font-bold text-xs",
|
|
25287
|
+
as: "span",
|
|
25288
|
+
children: appName.charAt(0).toUpperCase()
|
|
25289
|
+
}
|
|
25290
|
+
) }),
|
|
25291
|
+
/* @__PURE__ */ jsx(
|
|
25292
|
+
Typography,
|
|
25293
|
+
{
|
|
25294
|
+
variant: "label",
|
|
25295
|
+
className: "font-semibold text-foreground dark:text-foreground",
|
|
25296
|
+
as: "span",
|
|
25297
|
+
children: appName
|
|
25298
|
+
}
|
|
25299
|
+
)
|
|
25300
|
+
] }),
|
|
25301
|
+
navItems.map((item) => /* @__PURE__ */ jsx(
|
|
25302
|
+
NavLinkTopnav,
|
|
25303
|
+
{
|
|
25304
|
+
item,
|
|
25305
|
+
currentPath: activePath
|
|
25306
|
+
},
|
|
25307
|
+
item.href
|
|
25308
|
+
))
|
|
25309
|
+
]
|
|
25310
|
+
}
|
|
25311
|
+
),
|
|
25268
25312
|
searchEnabled && /* @__PURE__ */ jsx(Box, { className: "hidden @sm/dashboard:block flex-1 min-w-0 @xl/dashboard:max-w-md", children: /* @__PURE__ */ jsxs(Box, { className: "relative", children: [
|
|
25269
25313
|
/* @__PURE__ */ jsx(Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground dark:text-muted-foreground" }),
|
|
25270
25314
|
/* @__PURE__ */ jsx(
|
|
@@ -25412,7 +25456,22 @@ var init_DashboardLayout = __esm({
|
|
|
25412
25456
|
)
|
|
25413
25457
|
}
|
|
25414
25458
|
),
|
|
25415
|
-
/* @__PURE__ */ jsx(Box, { as: "main", className: "flex-1 p-3 @sm/dashboard:p-4 @md/dashboard:p-6", children })
|
|
25459
|
+
/* @__PURE__ */ jsx(Box, { as: "main", className: "flex-1 p-3 @sm/dashboard:p-4 @md/dashboard:p-6", children }),
|
|
25460
|
+
showBottomNav && /* @__PURE__ */ jsx(
|
|
25461
|
+
Box,
|
|
25462
|
+
{
|
|
25463
|
+
as: "nav",
|
|
25464
|
+
className: "sticky bottom-0 z-20 h-16 bg-card dark:bg-card border-t border-border dark:border-border @md/dashboard:hidden",
|
|
25465
|
+
children: /* @__PURE__ */ jsx(HStack, { align: "center", justify: "around", className: "h-full px-2", children: navItems.map((item) => /* @__PURE__ */ jsx(
|
|
25466
|
+
NavLinkBottom,
|
|
25467
|
+
{
|
|
25468
|
+
item,
|
|
25469
|
+
currentPath: activePath
|
|
25470
|
+
},
|
|
25471
|
+
item.href
|
|
25472
|
+
)) })
|
|
25473
|
+
}
|
|
25474
|
+
)
|
|
25416
25475
|
] })
|
|
25417
25476
|
]
|
|
25418
25477
|
}
|
|
@@ -25454,6 +25513,62 @@ var init_DashboardLayout = __esm({
|
|
|
25454
25513
|
);
|
|
25455
25514
|
};
|
|
25456
25515
|
NavLink.displayName = "NavLink";
|
|
25516
|
+
NavLinkTopnav = ({
|
|
25517
|
+
item,
|
|
25518
|
+
currentPath
|
|
25519
|
+
}) => {
|
|
25520
|
+
const isActive = currentPath === item.href || currentPath.startsWith(item.href + "/");
|
|
25521
|
+
return /* @__PURE__ */ jsxs(
|
|
25522
|
+
Link,
|
|
25523
|
+
{
|
|
25524
|
+
to: item.href,
|
|
25525
|
+
className: cn(
|
|
25526
|
+
"flex items-center gap-1.5 px-3 py-1.5 rounded-md text-sm font-medium transition-colors whitespace-nowrap",
|
|
25527
|
+
isActive ? "bg-primary text-primary-foreground shadow-sm" : "text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
25528
|
+
),
|
|
25529
|
+
children: [
|
|
25530
|
+
item.icon && (typeof item.icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: item.icon, className: "h-4 w-4" }) : /* @__PURE__ */ jsx(item.icon, { className: "h-4 w-4" })),
|
|
25531
|
+
/* @__PURE__ */ jsx(Typography, { variant: "small", className: "flex-1", as: "span", children: item.label }),
|
|
25532
|
+
item.badge && /* @__PURE__ */ jsx(Badge, { variant: isActive ? "primary" : "default", size: "sm", children: item.badge })
|
|
25533
|
+
]
|
|
25534
|
+
}
|
|
25535
|
+
);
|
|
25536
|
+
};
|
|
25537
|
+
NavLinkTopnav.displayName = "NavLinkTopnav";
|
|
25538
|
+
NavLinkBottom = ({
|
|
25539
|
+
item,
|
|
25540
|
+
currentPath
|
|
25541
|
+
}) => {
|
|
25542
|
+
const isActive = currentPath === item.href || currentPath.startsWith(item.href + "/");
|
|
25543
|
+
const iconClassName = cn(
|
|
25544
|
+
"h-5 w-5",
|
|
25545
|
+
isActive ? "text-primary" : "text-muted-foreground"
|
|
25546
|
+
);
|
|
25547
|
+
return /* @__PURE__ */ jsxs(
|
|
25548
|
+
Link,
|
|
25549
|
+
{
|
|
25550
|
+
to: item.href,
|
|
25551
|
+
className: "flex flex-col items-center justify-center gap-0.5 px-2 py-1 rounded-lg transition-colors flex-1 min-w-0",
|
|
25552
|
+
children: [
|
|
25553
|
+
item.icon && (typeof item.icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: item.icon, className: iconClassName }) : /* @__PURE__ */ jsx(item.icon, { className: iconClassName })),
|
|
25554
|
+
/* @__PURE__ */ jsx(
|
|
25555
|
+
Typography,
|
|
25556
|
+
{
|
|
25557
|
+
variant: "caption",
|
|
25558
|
+
className: cn(
|
|
25559
|
+
"text-[10px] leading-tight truncate max-w-full",
|
|
25560
|
+
isActive ? "text-primary font-medium" : "text-muted-foreground"
|
|
25561
|
+
),
|
|
25562
|
+
as: "span",
|
|
25563
|
+
children: item.label
|
|
25564
|
+
}
|
|
25565
|
+
),
|
|
25566
|
+
item.badge && /* @__PURE__ */ jsx(Badge, { variant: isActive ? "primary" : "default", size: "sm", className: "text-[8px] px-1 py-0 min-w-0", children: item.badge })
|
|
25567
|
+
]
|
|
25568
|
+
}
|
|
25569
|
+
);
|
|
25570
|
+
};
|
|
25571
|
+
NavLinkBottom.displayName = "NavLinkBottom";
|
|
25457
25572
|
}
|
|
25458
25573
|
});
|
|
25459
25574
|
function useAlmadarDndSensors(withSortableKeyboard = true) {
|
|
@@ -60435,7 +60550,10 @@ function buildTransitionSchema(fullSchema, orbitalName, traitName, transitionEve
|
|
|
60435
60550
|
if (!Array.isArray(eff)) continue;
|
|
60436
60551
|
const op = eff[0];
|
|
60437
60552
|
if (op === "render-ui") {
|
|
60438
|
-
|
|
60553
|
+
const slotTarget = eff[1];
|
|
60554
|
+
const PORTAL_SLOTS = /* @__PURE__ */ new Set(["modal", "drawer", "overlay", "center"]);
|
|
60555
|
+
const rewritten = typeof slotTarget === "string" && PORTAL_SLOTS.has(slotTarget) ? ["render-ui", "main", ...eff.slice(2)] : eff;
|
|
60556
|
+
previewEffects.push(rewritten);
|
|
60439
60557
|
hasRenderUI = true;
|
|
60440
60558
|
continue;
|
|
60441
60559
|
}
|
|
@@ -60711,7 +60829,7 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
60711
60829
|
},
|
|
60712
60830
|
children: [
|
|
60713
60831
|
/* @__PURE__ */ jsx("span", { style: { fontSize: 12 }, children: "\u279E" }),
|
|
60714
|
-
"
|
|
60832
|
+
"Double-click to open"
|
|
60715
60833
|
]
|
|
60716
60834
|
}
|
|
60717
60835
|
)
|
|
@@ -60812,33 +60930,20 @@ var OrbPreviewNodeInner = (props) => {
|
|
|
60812
60930
|
ref: setContentRef,
|
|
60813
60931
|
className: `orb-preview-live nodrag${dragActive || l2IsOver ? " drag-active" : ""}`,
|
|
60814
60932
|
onClick: handleContentClick,
|
|
60815
|
-
children: orbitalSchema ?
|
|
60816
|
-
// L2
|
|
60817
|
-
//
|
|
60818
|
-
//
|
|
60819
|
-
//
|
|
60820
|
-
|
|
60821
|
-
// collapses to 0 when the parent chain is `height: auto` →
|
|
60822
|
-
// `min-h-full` (no resolved height to inherit). Forcing a real
|
|
60823
|
-
// pixel height here gives the contained modal a real card to
|
|
60824
|
-
// fill, so the L2 preview shows the modal panel sized to the
|
|
60825
|
-
// card instead of a tiny floating rectangle.
|
|
60826
|
-
/* @__PURE__ */ jsx(
|
|
60933
|
+
children: orbitalSchema ? (
|
|
60934
|
+
// L1 and L2 both auto-grow with content. L2's `buildTransitionSchema`
|
|
60935
|
+
// rewrites portal slots (modal/drawer/overlay/center) to `main`, so
|
|
60936
|
+
// the rendered pattern lands inline in the main slot and contributes
|
|
60937
|
+
// to the card's height — same height model as L1 orbital cards.
|
|
60938
|
+
/* @__PURE__ */ jsx(Box, { style: { minHeight: preset.minHeight }, children: /* @__PURE__ */ jsx(
|
|
60827
60939
|
BrowserPlayground,
|
|
60828
60940
|
{
|
|
60829
60941
|
schema: orbitalSchema,
|
|
60830
60942
|
mode: "mock",
|
|
60831
|
-
height:
|
|
60943
|
+
height: "auto"
|
|
60832
60944
|
}
|
|
60833
|
-
)
|
|
60834
|
-
) : /* @__PURE__ */ jsx(Box, { style: { minHeight: preset.minHeight }, children: /* @__PURE__ */ jsx(
|
|
60835
|
-
BrowserPlayground,
|
|
60836
|
-
{
|
|
60837
|
-
schema: orbitalSchema,
|
|
60838
|
-
mode: "mock",
|
|
60839
|
-
height: "auto"
|
|
60840
|
-
}
|
|
60841
|
-
) }) : /* @__PURE__ */ jsx(Box, { className: "flex items-center justify-center", style: { minHeight: preset.minHeight }, children: /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground", children: "No preview available" }) })
|
|
60945
|
+
) })
|
|
60946
|
+
) : /* @__PURE__ */ jsx(Box, { className: "flex items-center justify-center", style: { minHeight: preset.minHeight }, children: /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground", children: "No preview available" }) })
|
|
60842
60947
|
}
|
|
60843
60948
|
),
|
|
60844
60949
|
/* @__PURE__ */ jsx(Handle, { type: "target", position: Position.Left, style: TARGET_HANDLE_STYLE }),
|
|
@@ -62331,10 +62436,7 @@ function FlowCanvasInner({
|
|
|
62331
62436
|
const orbitalName = nodeData.orbitalName ?? node.id;
|
|
62332
62437
|
onNodeClick?.({ level: "overview", orbital: orbitalName });
|
|
62333
62438
|
onNodeSelect?.(orbitalName);
|
|
62334
|
-
|
|
62335
|
-
setLevel("expanded");
|
|
62336
|
-
onLevelChange?.("expanded", orbitalName);
|
|
62337
|
-
}, [level, expandedOrbital, onNodeClick, onNodeSelect, onLevelChange]);
|
|
62439
|
+
}, [level, expandedOrbital, onNodeClick, onNodeSelect]);
|
|
62338
62440
|
const handleClosePanel = useCallback(() => {
|
|
62339
62441
|
setSelectedNode(null);
|
|
62340
62442
|
}, []);
|