@flamingo-stack/openframe-frontend-core 0.0.661 → 0.0.662-snapshot.20260923194332
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/{chunk-M23ZPKOK.js → chunk-3PSNWOAP.js} +4 -4
- package/dist/{chunk-D7QWYQBQ.cjs → chunk-4ZEHQXQ5.cjs} +75 -75
- package/dist/{chunk-D7QWYQBQ.cjs.map → chunk-4ZEHQXQ5.cjs.map} +1 -1
- package/dist/{chunk-YNW3DQFY.cjs → chunk-67FVIC5H.cjs} +81 -53
- package/dist/chunk-67FVIC5H.cjs.map +1 -0
- package/dist/{chunk-J5TAB64U.js → chunk-7I4DGWF5.js} +2 -2
- package/dist/{chunk-24T5HZPB.cjs → chunk-BASKR3Z4.cjs} +1 -1
- package/dist/chunk-BASKR3Z4.cjs.map +1 -0
- package/dist/{chunk-GXHZCGVJ.cjs → chunk-BSETJKSW.cjs} +25 -25
- package/dist/{chunk-GXHZCGVJ.cjs.map → chunk-BSETJKSW.cjs.map} +1 -1
- package/dist/{chunk-N4ORXOZK.cjs → chunk-DF6UYONR.cjs} +10 -10
- package/dist/{chunk-N4ORXOZK.cjs.map → chunk-DF6UYONR.cjs.map} +1 -1
- package/dist/{chunk-Z572FXXM.js → chunk-EX3YF5UR.js} +2 -2
- package/dist/{chunk-U4N65JUW.js → chunk-FXEOBJKX.js} +4 -4
- package/dist/{chunk-WDJT7NJ5.js → chunk-HZ3KIFUW.js} +5 -5
- package/dist/{chunk-PC5WWTDM.js → chunk-I5ZKHDT6.js} +3 -3
- package/dist/{chunk-5LS7KNAU.js → chunk-IHTDANFB.js} +7 -7
- package/dist/{chunk-F5LMTKQD.js → chunk-J3T2WNWC.js} +5 -5
- package/dist/{chunk-Q4XWYP5U.js → chunk-JVAG5CHS.js} +140 -112
- package/dist/chunk-JVAG5CHS.js.map +1 -0
- package/dist/{chunk-UA3V3KXX.js → chunk-KU7HL52F.js} +1 -1
- package/dist/chunk-KU7HL52F.js.map +1 -0
- package/dist/{chunk-7KNVRRI4.cjs → chunk-LPZHG75D.cjs} +25 -25
- package/dist/{chunk-7KNVRRI4.cjs.map → chunk-LPZHG75D.cjs.map} +1 -1
- package/dist/{chunk-ZASHVL45.cjs → chunk-MB5RK5WQ.cjs} +3 -3
- package/dist/{chunk-ZASHVL45.cjs.map → chunk-MB5RK5WQ.cjs.map} +1 -1
- package/dist/{chunk-4EY5JSMK.cjs → chunk-MEVV7FIR.cjs} +5 -5
- package/dist/{chunk-4EY5JSMK.cjs.map → chunk-MEVV7FIR.cjs.map} +1 -1
- package/dist/{chunk-IMDYBINC.js → chunk-N55XI4LH.js} +4 -4
- package/dist/{chunk-RFGXKRRL.js → chunk-NAML3TDW.js} +7 -7
- package/dist/{chunk-TRR6XUEP.js → chunk-OJR7KKCI.js} +3 -3
- package/dist/{chunk-LXBHYUIN.js → chunk-OZTH6T4W.js} +2 -2
- package/dist/{chunk-6VY6PXAN.cjs → chunk-P3IDYJE5.cjs} +33 -33
- package/dist/{chunk-6VY6PXAN.cjs.map → chunk-P3IDYJE5.cjs.map} +1 -1
- package/dist/{chunk-WGTKYVBK.cjs → chunk-PBEXPLFI.cjs} +12 -12
- package/dist/{chunk-WGTKYVBK.cjs.map → chunk-PBEXPLFI.cjs.map} +1 -1
- package/dist/{chunk-EUT6SQW7.js → chunk-Q3G5WOER.js} +3 -3
- package/dist/{chunk-4JITKV2S.cjs → chunk-REQ2AIEE.cjs} +51 -51
- package/dist/{chunk-4JITKV2S.cjs.map → chunk-REQ2AIEE.cjs.map} +1 -1
- package/dist/{chunk-4NKKPGDN.js → chunk-RP4TSHMY.js} +2 -2
- package/dist/{chunk-GLDXZK76.cjs → chunk-RYEMWKYE.cjs} +7 -7
- package/dist/{chunk-GLDXZK76.cjs.map → chunk-RYEMWKYE.cjs.map} +1 -1
- package/dist/{chunk-RPHRBZG6.cjs → chunk-TKASQOSM.cjs} +3 -3
- package/dist/{chunk-RPHRBZG6.cjs.map → chunk-TKASQOSM.cjs.map} +1 -1
- package/dist/{chunk-KCYGLC7Q.js → chunk-V54WTP2E.js} +5 -5
- package/dist/{chunk-H3DF7COI.cjs → chunk-VKKVWGFW.cjs} +44 -44
- package/dist/{chunk-H3DF7COI.cjs.map → chunk-VKKVWGFW.cjs.map} +1 -1
- package/dist/{chunk-XNJZ6A2S.cjs → chunk-WDE7ETA5.cjs} +5 -5
- package/dist/{chunk-XNJZ6A2S.cjs.map → chunk-WDE7ETA5.cjs.map} +1 -1
- package/dist/{chunk-XOA32PN3.cjs → chunk-WZ6OV7VU.cjs} +22 -22
- package/dist/{chunk-XOA32PN3.cjs.map → chunk-WZ6OV7VU.cjs.map} +1 -1
- package/dist/{chunk-QARWK4LN.cjs → chunk-XKQJDXDO.cjs} +10 -10
- package/dist/{chunk-QARWK4LN.cjs.map → chunk-XKQJDXDO.cjs.map} +1 -1
- package/dist/{chunk-FC6I2NWF.js → chunk-XSQSTJ5D.js} +2 -2
- package/dist/{chunk-ZIT4TC5R.cjs → chunk-XVSA4565.cjs} +248 -248
- package/dist/{chunk-ZIT4TC5R.cjs.map → chunk-XVSA4565.cjs.map} +1 -1
- package/dist/components/case-studies/index.cjs +20 -20
- package/dist/components/case-studies/index.js +5 -5
- package/dist/components/chat/index.cjs +3 -3
- package/dist/components/chat/index.js +2 -2
- package/dist/components/contact/index.cjs +6 -6
- package/dist/components/contact/index.js +5 -5
- package/dist/components/docs/index.cjs +9 -9
- package/dist/components/docs/index.js +8 -8
- package/dist/components/embeds/index.cjs +6 -6
- package/dist/components/embeds/index.js +5 -5
- package/dist/components/faq/index.cjs +6 -6
- package/dist/components/faq/index.js +5 -5
- package/dist/components/features/index.cjs +5 -5
- package/dist/components/features/index.js +4 -4
- package/dist/components/help-center-pages/index.cjs +25 -25
- package/dist/components/help-center-pages/index.js +16 -16
- package/dist/components/icons/elestio-logo.d.ts +4 -1
- package/dist/components/icons/elestio-logo.d.ts.map +1 -1
- package/dist/components/icons/index.cjs +2 -2
- package/dist/components/icons/index.js +1 -1
- package/dist/components/index.cjs +44 -42
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +17 -15
- package/dist/components/index.js.map +1 -1
- package/dist/components/meeting-scheduler/index.cjs +28 -28
- package/dist/components/meeting-scheduler/index.js +4 -4
- package/dist/components/navigation/index.cjs +10 -8
- package/dist/components/navigation/index.cjs.map +1 -1
- package/dist/components/navigation/index.d.ts +2 -0
- package/dist/components/navigation/index.d.ts.map +1 -1
- package/dist/components/navigation/index.js +9 -7
- package/dist/components/navigation/mobile-burger-menu.d.ts.map +1 -1
- package/dist/components/navigation/navigation-item-badge.d.ts +22 -0
- package/dist/components/navigation/navigation-item-badge.d.ts.map +1 -0
- package/dist/components/navigation/navigation-sidebar-item.d.ts.map +1 -1
- package/dist/components/onboarding-guides/index.cjs +8 -8
- package/dist/components/onboarding-guides/index.js +7 -7
- package/dist/components/tickets/index.cjs +9 -9
- package/dist/components/tickets/index.js +8 -8
- package/dist/components/ui/index.cjs +5 -5
- package/dist/components/ui/index.js +4 -4
- package/dist/hooks/index.cjs +3 -3
- package/dist/hooks/index.js +2 -2
- package/dist/index.cjs +11 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +10 -8
- package/dist/index.js.map +1 -1
- package/dist/types/navigation.d.ts +8 -0
- package/dist/types/navigation.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/icons/elestio-logo.tsx +4 -1
- package/src/components/navigation/index.ts +2 -0
- package/src/components/navigation/mobile-burger-menu.tsx +16 -8
- package/src/components/navigation/navigation-item-badge.tsx +40 -0
- package/src/components/navigation/navigation-sidebar-item.tsx +15 -4
- package/src/stories/AppLayout.stories.tsx +1 -0
- package/src/types/navigation.ts +8 -0
- package/dist/chunk-24T5HZPB.cjs.map +0 -1
- package/dist/chunk-Q4XWYP5U.js.map +0 -1
- package/dist/chunk-UA3V3KXX.js.map +0 -1
- package/dist/chunk-YNW3DQFY.cjs.map +0 -1
- /package/dist/{chunk-M23ZPKOK.js.map → chunk-3PSNWOAP.js.map} +0 -0
- /package/dist/{chunk-J5TAB64U.js.map → chunk-7I4DGWF5.js.map} +0 -0
- /package/dist/{chunk-Z572FXXM.js.map → chunk-EX3YF5UR.js.map} +0 -0
- /package/dist/{chunk-U4N65JUW.js.map → chunk-FXEOBJKX.js.map} +0 -0
- /package/dist/{chunk-WDJT7NJ5.js.map → chunk-HZ3KIFUW.js.map} +0 -0
- /package/dist/{chunk-PC5WWTDM.js.map → chunk-I5ZKHDT6.js.map} +0 -0
- /package/dist/{chunk-5LS7KNAU.js.map → chunk-IHTDANFB.js.map} +0 -0
- /package/dist/{chunk-F5LMTKQD.js.map → chunk-J3T2WNWC.js.map} +0 -0
- /package/dist/{chunk-IMDYBINC.js.map → chunk-N55XI4LH.js.map} +0 -0
- /package/dist/{chunk-RFGXKRRL.js.map → chunk-NAML3TDW.js.map} +0 -0
- /package/dist/{chunk-TRR6XUEP.js.map → chunk-OJR7KKCI.js.map} +0 -0
- /package/dist/{chunk-LXBHYUIN.js.map → chunk-OZTH6T4W.js.map} +0 -0
- /package/dist/{chunk-EUT6SQW7.js.map → chunk-Q3G5WOER.js.map} +0 -0
- /package/dist/{chunk-4NKKPGDN.js.map → chunk-RP4TSHMY.js.map} +0 -0
- /package/dist/{chunk-KCYGLC7Q.js.map → chunk-V54WTP2E.js.map} +0 -0
- /package/dist/{chunk-FC6I2NWF.js.map → chunk-XSQSTJ5D.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
useOptionalTicketLive
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-Q3G5WOER.js";
|
|
5
5
|
import {
|
|
6
6
|
AppLayoutDrawerContainerContext,
|
|
7
7
|
AppLayoutDrawerCoordinationContext,
|
|
@@ -13,15 +13,16 @@ import {
|
|
|
13
13
|
UnreadDot,
|
|
14
14
|
buildTicketOpenHref,
|
|
15
15
|
useOptionalNotifications
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-3PSNWOAP.js";
|
|
17
17
|
import {
|
|
18
18
|
useFocusTrap,
|
|
19
19
|
useLocalStorage
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-OZTH6T4W.js";
|
|
21
21
|
import {
|
|
22
22
|
OVERLAY_BACKDROP_CLASS,
|
|
23
|
+
Tag,
|
|
23
24
|
useIsHydrated
|
|
24
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-RP4TSHMY.js";
|
|
25
26
|
import {
|
|
26
27
|
useHeaderHeight,
|
|
27
28
|
useIsomorphicLayoutEffect,
|
|
@@ -33,7 +34,7 @@ import {
|
|
|
33
34
|
MingoIcon,
|
|
34
35
|
OpenFrameText,
|
|
35
36
|
UserIcon
|
|
36
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-KU7HL52F.js";
|
|
37
38
|
import {
|
|
38
39
|
BellIcon,
|
|
39
40
|
Chevrons03LeftIcon,
|
|
@@ -893,7 +894,25 @@ function NavigationSidebarHeader({ minimized }) {
|
|
|
893
894
|
|
|
894
895
|
// src/components/navigation/navigation-sidebar-item.tsx
|
|
895
896
|
import { cloneElement, memo } from "react";
|
|
896
|
-
|
|
897
|
+
|
|
898
|
+
// src/components/navigation/navigation-item-badge.tsx
|
|
899
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
900
|
+
function NavigationItemBadge({ label, compact = false, className, ...rest }) {
|
|
901
|
+
return /* @__PURE__ */ jsx10(
|
|
902
|
+
Tag,
|
|
903
|
+
{
|
|
904
|
+
as: "span",
|
|
905
|
+
label,
|
|
906
|
+
variant: "warning",
|
|
907
|
+
className: cn("pointer-events-none shrink-0", compact && "h-5 px-[var(--spacing-system-xxs)]", className),
|
|
908
|
+
labelClassName: compact ? "text-badge" : void 0,
|
|
909
|
+
...rest
|
|
910
|
+
}
|
|
911
|
+
);
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
// src/components/navigation/navigation-sidebar-item.tsx
|
|
915
|
+
import { Fragment as Fragment5, jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
897
916
|
var NavigationSidebarItemButton = memo(function NavigationSidebarItemButtonImpl({
|
|
898
917
|
item,
|
|
899
918
|
isActive,
|
|
@@ -904,6 +923,7 @@ var NavigationSidebarItemButton = memo(function NavigationSidebarItemButtonImpl(
|
|
|
904
923
|
}) {
|
|
905
924
|
const unreadCount = item.unreadCount ?? 0;
|
|
906
925
|
const hasUnread = unreadCount > 0;
|
|
926
|
+
const name = item.badge ? `${item.label} (${item.badge})` : item.label;
|
|
907
927
|
const className = cn(
|
|
908
928
|
// `isolate` scopes the hover layer's negative z-index to this row, so it
|
|
909
929
|
// paints over the row's own background and under its content instead of
|
|
@@ -944,43 +964,46 @@ var NavigationSidebarItemButton = memo(function NavigationSidebarItemButtonImpl(
|
|
|
944
964
|
cloneElement(item.icon, {
|
|
945
965
|
color: isActive && !disabled ? "text-ods-accent" : "text-ods-text-secondary"
|
|
946
966
|
}),
|
|
947
|
-
hasUnread && !showLabel && /* @__PURE__ */
|
|
967
|
+
hasUnread && !showLabel && /* @__PURE__ */ jsx11(UnreadDot, { size: "fixed" })
|
|
948
968
|
] }),
|
|
949
|
-
/* @__PURE__ */
|
|
969
|
+
/* @__PURE__ */ jsxs9(
|
|
950
970
|
"span",
|
|
951
971
|
{
|
|
952
972
|
className: cn(
|
|
953
|
-
"flex-1
|
|
973
|
+
"flex min-w-0 flex-1 items-center overflow-hidden text-left transition-[opacity,margin-left] duration-300",
|
|
954
974
|
showLabel ? "ml-[var(--spacing-system-xs)] opacity-100" : "ml-0 opacity-0"
|
|
955
975
|
),
|
|
956
976
|
"aria-hidden": !showLabel,
|
|
957
|
-
children:
|
|
977
|
+
children: [
|
|
978
|
+
/* @__PURE__ */ jsx11("span", { className: "min-w-0 truncate text-h4", children: item.label }),
|
|
979
|
+
item.badge && /* @__PURE__ */ jsx11(NavigationItemBadge, { label: item.badge, className: "ml-[var(--spacing-system-xs)] shrink-0" })
|
|
980
|
+
]
|
|
958
981
|
}
|
|
959
982
|
),
|
|
960
|
-
hasUnread && showLabel && /* @__PURE__ */
|
|
983
|
+
hasUnread && showLabel && /* @__PURE__ */ jsx11("span", { className: "flex size-6 flex-shrink-0 items-center justify-center rounded-md bg-ods-accent p-2", children: /* @__PURE__ */ jsx11("span", { className: "text-ods-text-on-accent text-h5", children: unreadCount > 99 ? "99+" : unreadCount }) })
|
|
961
984
|
] });
|
|
962
985
|
const shared = {
|
|
963
986
|
className,
|
|
964
|
-
title: !showLabel ?
|
|
965
|
-
"aria-label":
|
|
987
|
+
title: !showLabel ? name : void 0,
|
|
988
|
+
"aria-label": name,
|
|
966
989
|
"aria-current": isActive ? "page" : void 0
|
|
967
990
|
};
|
|
968
991
|
if (disabled || !item.path || item.onClick) {
|
|
969
|
-
return /* @__PURE__ */
|
|
992
|
+
return /* @__PURE__ */ jsx11("button", { type: "button", onClick: (event) => onClick(item, event), disabled, ...shared, children: content });
|
|
970
993
|
}
|
|
971
|
-
return /* @__PURE__ */
|
|
994
|
+
return /* @__PURE__ */ jsx11(next_link_default, { href: item.path, onClick: (event) => onClick(item, event), ...shared, children: content });
|
|
972
995
|
});
|
|
973
996
|
function NavigationSidebarItemSkeleton({ showLabel }) {
|
|
974
997
|
return /* @__PURE__ */ jsxs9("div", { className: "flex h-14 w-full items-center justify-start p-[var(--spacing-system-m)]", "aria-hidden": "true", children: [
|
|
975
|
-
/* @__PURE__ */
|
|
976
|
-
showLabel && /* @__PURE__ */
|
|
998
|
+
/* @__PURE__ */ jsx11("div", { className: "relative flex flex-shrink-0 items-center justify-center", children: /* @__PURE__ */ jsx11("div", { className: "h-6 w-6 animate-pulse rounded bg-ods-border" }) }),
|
|
999
|
+
showLabel && /* @__PURE__ */ jsx11("div", { className: "ml-[var(--spacing-system-xs)] h-4 flex-1 animate-pulse rounded bg-ods-border" })
|
|
977
1000
|
] });
|
|
978
1001
|
}
|
|
979
1002
|
|
|
980
1003
|
// src/components/navigation/navigation-sidebar-toggle.tsx
|
|
981
|
-
import { jsx as
|
|
1004
|
+
import { jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
982
1005
|
function NavigationSidebarToggle({ minimized, showLabel, onToggle }) {
|
|
983
|
-
return /* @__PURE__ */
|
|
1006
|
+
return /* @__PURE__ */ jsx12("div", { className: "border-t border-ods-border", children: /* @__PURE__ */ jsxs10(
|
|
984
1007
|
"button",
|
|
985
1008
|
{
|
|
986
1009
|
onClick: onToggle,
|
|
@@ -994,8 +1017,8 @@ function NavigationSidebarToggle({ minimized, showLabel, onToggle }) {
|
|
|
994
1017
|
title: minimized ? "Hide Menu" : void 0,
|
|
995
1018
|
"aria-label": "Hide Menu",
|
|
996
1019
|
children: [
|
|
997
|
-
/* @__PURE__ */
|
|
998
|
-
/* @__PURE__ */
|
|
1020
|
+
/* @__PURE__ */ jsx12("div", { className: "flex flex-shrink-0 items-center justify-center", children: /* @__PURE__ */ jsx12(Chevrons03LeftIcon, { className: "h-6 w-6 rotate-180 text-ods-text-secondary transition-transform duration-300 @[140px]/of-nav-sidebar:rotate-0" }) }),
|
|
1021
|
+
/* @__PURE__ */ jsx12(
|
|
999
1022
|
"span",
|
|
1000
1023
|
{
|
|
1001
1024
|
className: cn(
|
|
@@ -1012,7 +1035,7 @@ function NavigationSidebarToggle({ minimized, showLabel, onToggle }) {
|
|
|
1012
1035
|
}
|
|
1013
1036
|
|
|
1014
1037
|
// src/components/navigation/navigation-sidebar.tsx
|
|
1015
|
-
import { Fragment as Fragment6, jsx as
|
|
1038
|
+
import { Fragment as Fragment6, jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1016
1039
|
var MINIMIZED_WIDTH = 56;
|
|
1017
1040
|
var EXPANDED_WIDTH = 224;
|
|
1018
1041
|
var STORAGE_KEY = "of.navigationSidebar.minimized";
|
|
@@ -1120,7 +1143,7 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
1120
1143
|
return () => cancelAnimationFrame(id);
|
|
1121
1144
|
}, [transitionsEnabled]);
|
|
1122
1145
|
return /* @__PURE__ */ jsxs11(Fragment6, { children: [
|
|
1123
|
-
/* @__PURE__ */
|
|
1146
|
+
/* @__PURE__ */ jsx13(
|
|
1124
1147
|
"div",
|
|
1125
1148
|
{
|
|
1126
1149
|
className: cn(
|
|
@@ -1133,7 +1156,7 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
1133
1156
|
"aria-hidden": "true"
|
|
1134
1157
|
}
|
|
1135
1158
|
),
|
|
1136
|
-
/* @__PURE__ */
|
|
1159
|
+
/* @__PURE__ */ jsx13("div", { className: "hidden h-full w-14 flex-shrink-0 md:block lg:hidden", "aria-hidden": "true" }),
|
|
1137
1160
|
/* @__PURE__ */ jsxs11(
|
|
1138
1161
|
"aside",
|
|
1139
1162
|
{
|
|
@@ -1151,11 +1174,11 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
1151
1174
|
),
|
|
1152
1175
|
"aria-label": "Main navigation sidebar",
|
|
1153
1176
|
children: [
|
|
1154
|
-
/* @__PURE__ */
|
|
1177
|
+
/* @__PURE__ */ jsx13(NavigationSidebarHeader, { minimized }),
|
|
1155
1178
|
/* @__PURE__ */ jsxs11("div", { className: "flex flex-1 flex-col justify-between overflow-y-auto py-4", children: [
|
|
1156
1179
|
/* @__PURE__ */ jsxs11("div", { className: "flex flex-col", children: [
|
|
1157
1180
|
config.topSlot?.({ minimized }),
|
|
1158
|
-
/* @__PURE__ */
|
|
1181
|
+
/* @__PURE__ */ jsx13("nav", { className: "flex flex-col", "aria-label": "Primary navigation", "aria-busy": !!loadingRows, children: loadingRows ? loadingRows.primary.map((key) => /* @__PURE__ */ jsx13(NavigationSidebarItemSkeleton, { showLabel }, key)) : primaryItems.map((item) => /* @__PURE__ */ jsx13(
|
|
1159
1182
|
NavigationSidebarItemButton,
|
|
1160
1183
|
{
|
|
1161
1184
|
item,
|
|
@@ -1168,7 +1191,7 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
1168
1191
|
item.id
|
|
1169
1192
|
)) })
|
|
1170
1193
|
] }),
|
|
1171
|
-
(loadingRows ? loadingRows.secondary.length > 0 : secondaryItems.length > 0) && /* @__PURE__ */
|
|
1194
|
+
(loadingRows ? loadingRows.secondary.length > 0 : secondaryItems.length > 0) && /* @__PURE__ */ jsx13("nav", { className: "flex flex-col", "aria-label": "Secondary navigation", "aria-busy": !!loadingRows, children: loadingRows ? loadingRows.secondary.map((key) => /* @__PURE__ */ jsx13(NavigationSidebarItemSkeleton, { showLabel }, key)) : secondaryItems.map((item) => /* @__PURE__ */ jsx13(
|
|
1172
1195
|
NavigationSidebarItemButton,
|
|
1173
1196
|
{
|
|
1174
1197
|
item,
|
|
@@ -1181,7 +1204,7 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
1181
1204
|
item.id
|
|
1182
1205
|
)) })
|
|
1183
1206
|
] }),
|
|
1184
|
-
/* @__PURE__ */
|
|
1207
|
+
/* @__PURE__ */ jsx13(NavigationSidebarToggle, { minimized, showLabel, onToggle: handleToggle })
|
|
1185
1208
|
]
|
|
1186
1209
|
}
|
|
1187
1210
|
)
|
|
@@ -1193,7 +1216,7 @@ import React3 from "react";
|
|
|
1193
1216
|
|
|
1194
1217
|
// src/components/navigation/header-global-search.tsx
|
|
1195
1218
|
import React2 from "react";
|
|
1196
|
-
import { jsx as
|
|
1219
|
+
import { jsx as jsx14, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1197
1220
|
function HeaderGlobalSearch({
|
|
1198
1221
|
value = "",
|
|
1199
1222
|
onChange,
|
|
@@ -1233,8 +1256,8 @@ function HeaderGlobalSearch({
|
|
|
1233
1256
|
className
|
|
1234
1257
|
),
|
|
1235
1258
|
children: [
|
|
1236
|
-
/* @__PURE__ */
|
|
1237
|
-
/* @__PURE__ */
|
|
1259
|
+
/* @__PURE__ */ jsx14(SearchIcon, { className: "h-6 w-6 shrink-0 text-ods-text-secondary" }),
|
|
1260
|
+
/* @__PURE__ */ jsx14(
|
|
1238
1261
|
"input",
|
|
1239
1262
|
{
|
|
1240
1263
|
type: "text",
|
|
@@ -1256,7 +1279,7 @@ function HeaderGlobalSearch({
|
|
|
1256
1279
|
}
|
|
1257
1280
|
|
|
1258
1281
|
// src/components/navigation/header-mingo-button.tsx
|
|
1259
|
-
import { jsx as
|
|
1282
|
+
import { jsx as jsx15, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1260
1283
|
function HeaderMingoButton({ isActive = false, iconOnly = false, className, ...props }) {
|
|
1261
1284
|
return /* @__PURE__ */ jsxs13(
|
|
1262
1285
|
"button",
|
|
@@ -1284,11 +1307,11 @@ function HeaderMingoButton({ isActive = false, iconOnly = false, className, ...p
|
|
|
1284
1307
|
// Mobile, drawer open: the icon-only button doubles as the close
|
|
1285
1308
|
// affordance, so swap the Mingo logo for an X. Match the other header
|
|
1286
1309
|
// icons (e.g. notifications): secondary color, w-4 h-4 → md:w-6 h-6.
|
|
1287
|
-
/* @__PURE__ */
|
|
1310
|
+
/* @__PURE__ */ jsx15(XmarkIcon, { className: "h-6 w-6 shrink-0 text-ods-text-secondary" })
|
|
1288
1311
|
) : (
|
|
1289
1312
|
// Outer frame follows the button's text color (currentColor); the eyes
|
|
1290
1313
|
// and corner block are ODS cyan.
|
|
1291
|
-
/* @__PURE__ */
|
|
1314
|
+
/* @__PURE__ */ jsx15(
|
|
1292
1315
|
MingoIcon,
|
|
1293
1316
|
{
|
|
1294
1317
|
color: "currentColor",
|
|
@@ -1298,14 +1321,14 @@ function HeaderMingoButton({ isActive = false, iconOnly = false, className, ...p
|
|
|
1298
1321
|
}
|
|
1299
1322
|
)
|
|
1300
1323
|
),
|
|
1301
|
-
!iconOnly && /* @__PURE__ */
|
|
1324
|
+
!iconOnly && /* @__PURE__ */ jsx15("span", { className: "whitespace-nowrap font-bold tracking-[-0.36px] text-h3", children: "Mingo AI" })
|
|
1302
1325
|
]
|
|
1303
1326
|
}
|
|
1304
1327
|
);
|
|
1305
1328
|
}
|
|
1306
1329
|
|
|
1307
1330
|
// src/components/navigation/header-organization-filter.tsx
|
|
1308
|
-
import { jsx as
|
|
1331
|
+
import { jsx as jsx16, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1309
1332
|
function HeaderOrganizationFilter({
|
|
1310
1333
|
organizations = [],
|
|
1311
1334
|
selectedOrgId,
|
|
@@ -1317,7 +1340,7 @@ function HeaderOrganizationFilter({
|
|
|
1317
1340
|
const displayName = selectedOrg?.name || "All Organizations";
|
|
1318
1341
|
const deviceCount = selectedOrg?.deviceCount ?? totalDeviceCount;
|
|
1319
1342
|
return /* @__PURE__ */ jsxs14(DropdownMenu, { children: [
|
|
1320
|
-
/* @__PURE__ */
|
|
1343
|
+
/* @__PURE__ */ jsx16(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs14(
|
|
1321
1344
|
"button",
|
|
1322
1345
|
{
|
|
1323
1346
|
className: cn(
|
|
@@ -1329,9 +1352,9 @@ function HeaderOrganizationFilter({
|
|
|
1329
1352
|
className
|
|
1330
1353
|
),
|
|
1331
1354
|
children: [
|
|
1332
|
-
/* @__PURE__ */
|
|
1355
|
+
/* @__PURE__ */ jsx16(Filter02Icon, { className: "h-4 w-4 shrink-0 text-ods-text-secondary" }),
|
|
1333
1356
|
/* @__PURE__ */ jsxs14("div", { className: "flex min-w-0 flex-col items-start justify-center", children: [
|
|
1334
|
-
/* @__PURE__ */
|
|
1357
|
+
/* @__PURE__ */ jsx16("span", { className: "truncate text-ods-text-primary text-h5", title: displayName, children: displayName }),
|
|
1335
1358
|
deviceCount !== void 0 && /* @__PURE__ */ jsxs14("span", { className: "truncate text-ods-text-secondary text-h6", children: [
|
|
1336
1359
|
deviceCount.toLocaleString(),
|
|
1337
1360
|
" Devices"
|
|
@@ -1341,14 +1364,14 @@ function HeaderOrganizationFilter({
|
|
|
1341
1364
|
}
|
|
1342
1365
|
) }),
|
|
1343
1366
|
/* @__PURE__ */ jsxs14(DropdownMenuContent, { align: "end", className: "min-w-[240px]", children: [
|
|
1344
|
-
/* @__PURE__ */
|
|
1345
|
-
organizations.map((org) => /* @__PURE__ */
|
|
1367
|
+
/* @__PURE__ */ jsx16(DropdownMenuItem, { onClick: () => onOrgChange?.(""), children: "All Organizations" }),
|
|
1368
|
+
organizations.map((org) => /* @__PURE__ */ jsx16(DropdownMenuItem, { onClick: () => onOrgChange?.(org.id), children: org.name }, org.id))
|
|
1346
1369
|
] })
|
|
1347
1370
|
] });
|
|
1348
1371
|
}
|
|
1349
1372
|
|
|
1350
1373
|
// src/components/navigation/app-header.tsx
|
|
1351
|
-
import { Fragment as Fragment7, jsx as
|
|
1374
|
+
import { Fragment as Fragment7, jsx as jsx17, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1352
1375
|
var AppHeader = React3.memo(function AppHeaderImpl({
|
|
1353
1376
|
showSearch,
|
|
1354
1377
|
onSearch,
|
|
@@ -1380,7 +1403,7 @@ var AppHeader = React3.memo(function AppHeaderImpl({
|
|
|
1380
1403
|
}) {
|
|
1381
1404
|
const isMdUp = useMdUp() ?? false;
|
|
1382
1405
|
if (loading) {
|
|
1383
|
-
return /* @__PURE__ */
|
|
1406
|
+
return /* @__PURE__ */ jsx17(
|
|
1384
1407
|
AppHeaderSkeleton,
|
|
1385
1408
|
{
|
|
1386
1409
|
showSearch,
|
|
@@ -1403,19 +1426,19 @@ var AppHeader = React3.memo(function AppHeaderImpl({
|
|
|
1403
1426
|
}
|
|
1404
1427
|
const dimmedClass = disabled ? "pointer-events-none opacity-50" : "";
|
|
1405
1428
|
const cellDivider = "border-l border-ods-border";
|
|
1406
|
-
return /* @__PURE__ */
|
|
1429
|
+
return /* @__PURE__ */ jsx17(
|
|
1407
1430
|
TopNavigation,
|
|
1408
1431
|
{
|
|
1409
1432
|
className: cn("sticky top-0 z-40", className),
|
|
1410
1433
|
centerBreakpoint: "md",
|
|
1411
1434
|
leading: (
|
|
1412
1435
|
// Mobile: Burger Menu Button
|
|
1413
|
-
!isMdUp && /* @__PURE__ */
|
|
1436
|
+
!isMdUp && /* @__PURE__ */ jsx17(
|
|
1414
1437
|
HeaderButton,
|
|
1415
1438
|
{
|
|
1416
1439
|
onClick: onToggleMobileMenu,
|
|
1417
1440
|
isActive: isMobileMenuOpen,
|
|
1418
|
-
icon: isMobileMenuOpen ? /* @__PURE__ */
|
|
1441
|
+
icon: isMobileMenuOpen ? /* @__PURE__ */ jsx17(XmarkIcon, { className: "h-6 w-6" }) : /* @__PURE__ */ jsx17(Menu01Icon, { className: "h-6 w-6" }),
|
|
1419
1442
|
"aria-label": isMobileMenuOpen ? "Close menu" : "Open menu",
|
|
1420
1443
|
"aria-expanded": isMobileMenuOpen,
|
|
1421
1444
|
className: "border-r border-ods-border"
|
|
@@ -1423,7 +1446,7 @@ var AppHeader = React3.memo(function AppHeaderImpl({
|
|
|
1423
1446
|
)
|
|
1424
1447
|
),
|
|
1425
1448
|
logo: !isMdUp && /* @__PURE__ */ jsxs15(Fragment7, { children: [
|
|
1426
|
-
/* @__PURE__ */
|
|
1449
|
+
/* @__PURE__ */ jsx17(
|
|
1427
1450
|
OpenFrameLogo,
|
|
1428
1451
|
{
|
|
1429
1452
|
className: "h-6 w-6 shrink-0",
|
|
@@ -1431,21 +1454,21 @@ var AppHeader = React3.memo(function AppHeaderImpl({
|
|
|
1431
1454
|
lowerPathColor: "var(--color-accent-primary)"
|
|
1432
1455
|
}
|
|
1433
1456
|
),
|
|
1434
|
-
/* @__PURE__ */
|
|
1457
|
+
/* @__PURE__ */ jsx17(OpenFrameText, { textColor: "var(--color-text-primary)", className: "h-4" })
|
|
1435
1458
|
] }),
|
|
1436
1459
|
logoClassName: "gap-2",
|
|
1437
|
-
center: showSearch ? /* @__PURE__ */
|
|
1460
|
+
center: showSearch ? /* @__PURE__ */ jsx17(HeaderGlobalSearch, { onSubmit: onSearch, className: cn("w-full", dimmedClass) }) : void 0,
|
|
1438
1461
|
sideActions: /* @__PURE__ */ jsxs15(Fragment7, { children: [
|
|
1439
|
-
showSearch && /* @__PURE__ */
|
|
1462
|
+
showSearch && /* @__PURE__ */ jsx17(
|
|
1440
1463
|
HeaderButton,
|
|
1441
1464
|
{
|
|
1442
|
-
icon: /* @__PURE__ */
|
|
1465
|
+
icon: /* @__PURE__ */ jsx17(SearchIcon, { className: "h-6 w-6" }),
|
|
1443
1466
|
"aria-label": "Search",
|
|
1444
1467
|
className: cn("md:hidden", cellDivider, dimmedClass),
|
|
1445
1468
|
disabled
|
|
1446
1469
|
}
|
|
1447
1470
|
),
|
|
1448
|
-
showOrganizations && /* @__PURE__ */
|
|
1471
|
+
showOrganizations && /* @__PURE__ */ jsx17(
|
|
1449
1472
|
HeaderOrganizationFilter,
|
|
1450
1473
|
{
|
|
1451
1474
|
organizations,
|
|
@@ -1454,8 +1477,8 @@ var AppHeader = React3.memo(function AppHeaderImpl({
|
|
|
1454
1477
|
className: cn("hidden lg:flex", dimmedClass)
|
|
1455
1478
|
}
|
|
1456
1479
|
),
|
|
1457
|
-
showTimeTracker && /* @__PURE__ */
|
|
1458
|
-
showNotifications && /* @__PURE__ */
|
|
1480
|
+
showTimeTracker && /* @__PURE__ */ jsx17(TimeTrackerHeaderButton, { disabled, className: cn(cellDivider, dimmedClass) }),
|
|
1481
|
+
showNotifications && /* @__PURE__ */ jsx17(
|
|
1459
1482
|
NotificationsHeaderButton,
|
|
1460
1483
|
{
|
|
1461
1484
|
fallbackUnreadCount: unreadCount,
|
|
@@ -1463,7 +1486,7 @@ var AppHeader = React3.memo(function AppHeaderImpl({
|
|
|
1463
1486
|
dimmedClass: cn(cellDivider, dimmedClass)
|
|
1464
1487
|
}
|
|
1465
1488
|
),
|
|
1466
|
-
showTicketAlerts && /* @__PURE__ */
|
|
1489
|
+
showTicketAlerts && /* @__PURE__ */ jsx17(
|
|
1467
1490
|
TicketAlertsButton,
|
|
1468
1491
|
{
|
|
1469
1492
|
href: ticketAlertsHref ?? "/tickets",
|
|
@@ -1473,10 +1496,10 @@ var AppHeader = React3.memo(function AppHeaderImpl({
|
|
|
1473
1496
|
}
|
|
1474
1497
|
),
|
|
1475
1498
|
isMdUp && showUser && /* @__PURE__ */ jsxs15(DropdownMenu, { children: [
|
|
1476
|
-
/* @__PURE__ */
|
|
1499
|
+
/* @__PURE__ */ jsx17(DropdownMenuTrigger, { asChild: true, disabled, children: /* @__PURE__ */ jsx17(
|
|
1477
1500
|
HeaderButton,
|
|
1478
1501
|
{
|
|
1479
|
-
icon: /* @__PURE__ */
|
|
1502
|
+
icon: /* @__PURE__ */ jsx17(
|
|
1480
1503
|
SquareAvatar,
|
|
1481
1504
|
{
|
|
1482
1505
|
src: userAvatarUrl || void 0,
|
|
@@ -1502,7 +1525,7 @@ var AppHeader = React3.memo(function AppHeaderImpl({
|
|
|
1502
1525
|
className: "z-[104] w-[280px] overflow-hidden rounded-[6px] border-ods-border bg-ods-bg p-0",
|
|
1503
1526
|
children: [
|
|
1504
1527
|
/* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-2 border-b border-ods-border bg-ods-card p-3", children: [
|
|
1505
|
-
/* @__PURE__ */
|
|
1528
|
+
/* @__PURE__ */ jsx17(
|
|
1506
1529
|
SquareAvatar,
|
|
1507
1530
|
{
|
|
1508
1531
|
src: userAvatarUrl || void 0,
|
|
@@ -1513,29 +1536,29 @@ var AppHeader = React3.memo(function AppHeaderImpl({
|
|
|
1513
1536
|
}
|
|
1514
1537
|
),
|
|
1515
1538
|
/* @__PURE__ */ jsxs15("div", { className: "min-w-0 flex-1", children: [
|
|
1516
|
-
userName && /* @__PURE__ */
|
|
1517
|
-
userEmail && /* @__PURE__ */
|
|
1539
|
+
userName && /* @__PURE__ */ jsx17("div", { className: "truncate text-ods-text-primary text-h4", children: userName }),
|
|
1540
|
+
userEmail && /* @__PURE__ */ jsx17("div", { className: "truncate text-ods-text-secondary text-h6", children: userEmail })
|
|
1518
1541
|
] })
|
|
1519
1542
|
] }),
|
|
1520
|
-
/* @__PURE__ */
|
|
1543
|
+
/* @__PURE__ */ jsx17(
|
|
1521
1544
|
DropdownMenuItem,
|
|
1522
1545
|
{
|
|
1523
1546
|
onClick: onProfile,
|
|
1524
1547
|
className: "cursor-pointer rounded-none border-b border-ods-border bg-ods-card px-3 py-3 hover:bg-ods-card/80 focus:bg-ods-card/80",
|
|
1525
1548
|
children: /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-2", children: [
|
|
1526
|
-
/* @__PURE__ */
|
|
1527
|
-
/* @__PURE__ */
|
|
1549
|
+
/* @__PURE__ */ jsx17(UserIcon, { className: "h-6 w-6 shrink-0 text-ods-text-primary" }),
|
|
1550
|
+
/* @__PURE__ */ jsx17("span", { className: "text-ods-text-primary text-h4", children: "Profile Settings" })
|
|
1528
1551
|
] })
|
|
1529
1552
|
}
|
|
1530
1553
|
),
|
|
1531
|
-
/* @__PURE__ */
|
|
1554
|
+
/* @__PURE__ */ jsx17(
|
|
1532
1555
|
DropdownMenuItem,
|
|
1533
1556
|
{
|
|
1534
1557
|
onClick: onLogout,
|
|
1535
1558
|
className: "cursor-pointer rounded-none bg-ods-card px-3 py-3 hover:bg-ods-card/80 focus:bg-ods-card/80",
|
|
1536
1559
|
children: /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-2", children: [
|
|
1537
|
-
/* @__PURE__ */
|
|
1538
|
-
/* @__PURE__ */
|
|
1560
|
+
/* @__PURE__ */ jsx17(LogOutIcon, { className: "shrink-0 text-ods-error", size: 24 }),
|
|
1561
|
+
/* @__PURE__ */ jsx17("span", { className: "text-ods-text-primary text-h4", children: "Log Out" })
|
|
1539
1562
|
] })
|
|
1540
1563
|
}
|
|
1541
1564
|
)
|
|
@@ -1543,7 +1566,7 @@ var AppHeader = React3.memo(function AppHeaderImpl({
|
|
|
1543
1566
|
}
|
|
1544
1567
|
)
|
|
1545
1568
|
] }),
|
|
1546
|
-
showMingoAI && /* @__PURE__ */
|
|
1569
|
+
showMingoAI && /* @__PURE__ */ jsx17(
|
|
1547
1570
|
HeaderMingoButton,
|
|
1548
1571
|
{
|
|
1549
1572
|
onClick: onMingoAI,
|
|
@@ -1562,10 +1585,10 @@ function NotificationsHeaderButton({ fallbackUnreadCount, disabled, dimmedClass
|
|
|
1562
1585
|
const hasUnread = (ctx?.unreadCount ?? fallbackUnreadCount) > 0;
|
|
1563
1586
|
const isActive = ctx?.isOpen ?? false;
|
|
1564
1587
|
const onClick = ctx?.toggle;
|
|
1565
|
-
return /* @__PURE__ */
|
|
1588
|
+
return /* @__PURE__ */ jsx17(
|
|
1566
1589
|
HeaderButton,
|
|
1567
1590
|
{
|
|
1568
|
-
icon: isActive ? /* @__PURE__ */
|
|
1591
|
+
icon: isActive ? /* @__PURE__ */ jsx17(XmarkIcon, { className: "h-6 w-6" }) : /* @__PURE__ */ jsx17(BellIcon, { className: "h-6 w-6" }),
|
|
1569
1592
|
showUnreadDot: !isActive && hasUnread,
|
|
1570
1593
|
"aria-label": isActive ? "Close notifications" : "Notifications",
|
|
1571
1594
|
onClick,
|
|
@@ -1581,12 +1604,12 @@ var CELL_VISIBILITY = {
|
|
|
1581
1604
|
"icon-lg": "hidden lg:flex"
|
|
1582
1605
|
};
|
|
1583
1606
|
function HeaderCellSkeleton({ className }) {
|
|
1584
|
-
return /* @__PURE__ */
|
|
1607
|
+
return /* @__PURE__ */ jsx17("div", { className: cn("flex h-full w-14 shrink-0 items-center justify-center border-l border-ods-border", className), children: /* @__PURE__ */ jsx17("div", { className: "h-6 w-6 animate-pulse rounded bg-ods-border" }) });
|
|
1585
1608
|
}
|
|
1586
1609
|
function HeaderWideCellSkeleton() {
|
|
1587
1610
|
return /* @__PURE__ */ jsxs15("div", { className: "flex h-full w-14 shrink-0 items-center justify-center gap-2 border-l border-ods-border md:w-[140px] md:px-4", children: [
|
|
1588
|
-
/* @__PURE__ */
|
|
1589
|
-
/* @__PURE__ */
|
|
1611
|
+
/* @__PURE__ */ jsx17("div", { className: "h-6 w-6 shrink-0 animate-pulse rounded bg-ods-border" }),
|
|
1612
|
+
/* @__PURE__ */ jsx17("div", { className: "hidden h-5 animate-pulse rounded bg-ods-border md:block md:w-[72px]" })
|
|
1590
1613
|
] });
|
|
1591
1614
|
}
|
|
1592
1615
|
function AppHeaderSkeleton({
|
|
@@ -1595,7 +1618,7 @@ function AppHeaderSkeleton({
|
|
|
1595
1618
|
className
|
|
1596
1619
|
}) {
|
|
1597
1620
|
const cells = typeof actionCells === "number" ? Array.from({ length: Math.max(0, actionCells) }, () => "icon") : actionCells;
|
|
1598
|
-
return /* @__PURE__ */
|
|
1621
|
+
return /* @__PURE__ */ jsx17(
|
|
1599
1622
|
TopNavigation,
|
|
1600
1623
|
{
|
|
1601
1624
|
className: cn("sticky top-0 z-40", className),
|
|
@@ -1603,18 +1626,18 @@ function AppHeaderSkeleton({
|
|
|
1603
1626
|
"aria-busy": "true",
|
|
1604
1627
|
leading: (
|
|
1605
1628
|
// Burger cell: mobile only, in CSS.
|
|
1606
|
-
/* @__PURE__ */
|
|
1629
|
+
/* @__PURE__ */ jsx17("div", { className: "flex h-full w-14 shrink-0 items-center justify-center border-r border-ods-border md:hidden", children: /* @__PURE__ */ jsx17("div", { className: "h-6 w-6 animate-pulse rounded bg-ods-border" }) })
|
|
1607
1630
|
),
|
|
1608
1631
|
logo: /* @__PURE__ */ jsxs15(Fragment7, { children: [
|
|
1609
|
-
/* @__PURE__ */
|
|
1610
|
-
/* @__PURE__ */
|
|
1632
|
+
/* @__PURE__ */ jsx17("div", { className: "h-6 w-6 shrink-0 animate-pulse rounded bg-ods-border" }),
|
|
1633
|
+
/* @__PURE__ */ jsx17("div", { className: "h-4 w-24 animate-pulse rounded bg-ods-border" })
|
|
1611
1634
|
] }),
|
|
1612
1635
|
logoClassName: "gap-2 md:hidden",
|
|
1613
|
-
center: showSearch ? /* @__PURE__ */
|
|
1636
|
+
center: showSearch ? /* @__PURE__ */ jsx17("div", { className: "h-10 w-full animate-pulse rounded-md bg-ods-border" }) : void 0,
|
|
1614
1637
|
sideActions: /* @__PURE__ */ jsxs15(Fragment7, { children: [
|
|
1615
|
-
showSearch && /* @__PURE__ */
|
|
1638
|
+
showSearch && /* @__PURE__ */ jsx17(HeaderCellSkeleton, { className: "md:hidden" }),
|
|
1616
1639
|
cells.map(
|
|
1617
|
-
(cell, i) => cell === "wide" ? /* @__PURE__ */
|
|
1640
|
+
(cell, i) => cell === "wide" ? /* @__PURE__ */ jsx17(HeaderWideCellSkeleton, {}, i) : /* @__PURE__ */ jsx17(HeaderCellSkeleton, { className: CELL_VISIBILITY[cell] }, i)
|
|
1618
1641
|
)
|
|
1619
1642
|
] })
|
|
1620
1643
|
}
|
|
@@ -1627,7 +1650,7 @@ import { useCallback as useCallback3, useEffect as useEffect3, useMemo as useMem
|
|
|
1627
1650
|
// src/components/navigation/mobile-burger-menu.tsx
|
|
1628
1651
|
import { usePreventScroll as usePreventScroll3 } from "@react-aria/overlays";
|
|
1629
1652
|
import React4, { useCallback as useCallback2, useRef as useRef4 } from "react";
|
|
1630
|
-
import { Fragment as Fragment8, jsx as
|
|
1653
|
+
import { Fragment as Fragment8, jsx as jsx18, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1631
1654
|
var HEADER_HEIGHT = 56;
|
|
1632
1655
|
var MobileBurgerMenu = React4.memo(function MobileBurgerMenuImpl({
|
|
1633
1656
|
isOpen,
|
|
@@ -1675,29 +1698,33 @@ var MobileBurgerMenu = React4.memo(function MobileBurgerMenuImpl({
|
|
|
1675
1698
|
disabled && "cursor-not-allowed opacity-50"
|
|
1676
1699
|
),
|
|
1677
1700
|
"aria-current": isActive ? "page" : void 0,
|
|
1701
|
+
"aria-label": item.badge ? `${item.label} (${item.badge})` : void 0,
|
|
1678
1702
|
children: [
|
|
1679
|
-
item.icon && /* @__PURE__ */
|
|
1703
|
+
item.icon && /* @__PURE__ */ jsx18("div", { className: "flex size-4 flex-shrink-0 items-center justify-center", children: React4.cloneElement(item.icon, {
|
|
1680
1704
|
size: 16,
|
|
1681
1705
|
color: isActive && !disabled ? "var(--color-accent-primary)" : "var(--color-text-secondary)"
|
|
1682
1706
|
}) }),
|
|
1683
|
-
/* @__PURE__ */
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1707
|
+
/* @__PURE__ */ jsxs16("span", { className: "flex min-w-0 flex-1 items-center gap-[var(--spacing-system-xxs)]", children: [
|
|
1708
|
+
/* @__PURE__ */ jsx18(
|
|
1709
|
+
"span",
|
|
1710
|
+
{
|
|
1711
|
+
className: cn(
|
|
1712
|
+
"min-w-0 truncate text-left text-h6",
|
|
1713
|
+
isActive && !disabled ? "text-ods-accent" : "text-ods-text-primary"
|
|
1714
|
+
),
|
|
1715
|
+
children: item.label
|
|
1716
|
+
}
|
|
1717
|
+
),
|
|
1718
|
+
item.badge && /* @__PURE__ */ jsx18(NavigationItemBadge, { compact: true, label: item.badge })
|
|
1719
|
+
] })
|
|
1693
1720
|
]
|
|
1694
1721
|
},
|
|
1695
1722
|
item.id
|
|
1696
1723
|
);
|
|
1697
1724
|
};
|
|
1698
|
-
const renderNavigationGrid = (items) => /* @__PURE__ */
|
|
1725
|
+
const renderNavigationGrid = (items) => /* @__PURE__ */ jsx18("div", { className: "grid grid-cols-2 gap-3", children: items.map((item) => /* @__PURE__ */ jsx18(React4.Fragment, { children: renderNavigationItem(item, true) }, item.id)) });
|
|
1699
1726
|
return /* @__PURE__ */ jsxs16(Fragment8, { children: [
|
|
1700
|
-
/* @__PURE__ */
|
|
1727
|
+
/* @__PURE__ */ jsx18(
|
|
1701
1728
|
"div",
|
|
1702
1729
|
{
|
|
1703
1730
|
className: cn(
|
|
@@ -1711,7 +1738,7 @@ var MobileBurgerMenu = React4.memo(function MobileBurgerMenuImpl({
|
|
|
1711
1738
|
"aria-hidden": "true"
|
|
1712
1739
|
}
|
|
1713
1740
|
),
|
|
1714
|
-
/* @__PURE__ */
|
|
1741
|
+
/* @__PURE__ */ jsx18(
|
|
1715
1742
|
"div",
|
|
1716
1743
|
{
|
|
1717
1744
|
ref: panelRef,
|
|
@@ -1742,7 +1769,7 @@ var MobileBurgerMenu = React4.memo(function MobileBurgerMenuImpl({
|
|
|
1742
1769
|
),
|
|
1743
1770
|
"aria-disabled": disabled || void 0,
|
|
1744
1771
|
children: [
|
|
1745
|
-
/* @__PURE__ */
|
|
1772
|
+
/* @__PURE__ */ jsx18(
|
|
1746
1773
|
SquareAvatar,
|
|
1747
1774
|
{
|
|
1748
1775
|
src: user.userAvatarUrl || void 0,
|
|
@@ -1755,21 +1782,21 @@ var MobileBurgerMenu = React4.memo(function MobileBurgerMenuImpl({
|
|
|
1755
1782
|
),
|
|
1756
1783
|
/* @__PURE__ */ jsxs16("div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
1757
1784
|
/* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-2", children: [
|
|
1758
|
-
/* @__PURE__ */
|
|
1759
|
-
user.userRole && /* @__PURE__ */
|
|
1785
|
+
/* @__PURE__ */ jsx18("span", { className: "truncate text-ods-text-primary text-h6", children: user.userName || "User" }),
|
|
1786
|
+
user.userRole && /* @__PURE__ */ jsx18("span", { className: "shrink-0 rounded-md border border-ods-border bg-ods-card px-2 py-0.5 uppercase text-ods-text-primary text-h6", children: user.userRole })
|
|
1760
1787
|
] }),
|
|
1761
|
-
user.userEmail && /* @__PURE__ */
|
|
1788
|
+
user.userEmail && /* @__PURE__ */ jsx18("span", { className: "truncate text-ods-text-secondary text-h6", children: user.userEmail })
|
|
1762
1789
|
] }),
|
|
1763
1790
|
/* @__PURE__ */ jsxs16("div", { className: "flex shrink-0 items-center gap-2", children: [
|
|
1764
|
-
onSearchUser && /* @__PURE__ */
|
|
1765
|
-
onEditProfile && /* @__PURE__ */
|
|
1791
|
+
onSearchUser && /* @__PURE__ */ jsx18(Button, { size: "icon", onClick: onSearchUser, variant: "outline", "aria-label": "Search users", children: /* @__PURE__ */ jsx18(UserSearchIcon, { className: "size-4 text-ods-text-primary" }) }),
|
|
1792
|
+
onEditProfile && /* @__PURE__ */ jsx18(Button, { size: "icon", onClick: onEditProfile, variant: "outline", "aria-label": "Edit profile", children: /* @__PURE__ */ jsx18(PenEditIcon, { className: "size-4 text-ods-text-primary" }) })
|
|
1766
1793
|
] })
|
|
1767
1794
|
]
|
|
1768
1795
|
}
|
|
1769
1796
|
),
|
|
1770
1797
|
config.topSlot?.({ minimized: false }),
|
|
1771
|
-
/* @__PURE__ */
|
|
1772
|
-
secondaryItems.length > 0 && /* @__PURE__ */
|
|
1798
|
+
/* @__PURE__ */ jsx18("nav", { "aria-label": "Primary navigation", children: renderNavigationGrid(primaryItems) }),
|
|
1799
|
+
secondaryItems.length > 0 && /* @__PURE__ */ jsx18("nav", { "aria-label": "Secondary navigation", className: "flex flex-col gap-3", children: secondaryItems.map((item) => /* @__PURE__ */ jsx18(React4.Fragment, { children: renderNavigationItem(item, false) }, item.id)) }),
|
|
1773
1800
|
onLogout && /* @__PURE__ */ jsxs16(
|
|
1774
1801
|
"button",
|
|
1775
1802
|
{
|
|
@@ -1781,8 +1808,8 @@ var MobileBurgerMenu = React4.memo(function MobileBurgerMenuImpl({
|
|
|
1781
1808
|
disabled && "cursor-not-allowed opacity-50"
|
|
1782
1809
|
),
|
|
1783
1810
|
children: [
|
|
1784
|
-
/* @__PURE__ */
|
|
1785
|
-
/* @__PURE__ */
|
|
1811
|
+
/* @__PURE__ */ jsx18(Logout02Icon, { className: "size-4 text-ods-error" }),
|
|
1812
|
+
/* @__PURE__ */ jsx18("span", { className: "flex-1 text-left text-ods-text-primary text-h6", children: "Log Out" })
|
|
1786
1813
|
]
|
|
1787
1814
|
}
|
|
1788
1815
|
)
|
|
@@ -1793,7 +1820,7 @@ var MobileBurgerMenu = React4.memo(function MobileBurgerMenuImpl({
|
|
|
1793
1820
|
});
|
|
1794
1821
|
|
|
1795
1822
|
// src/components/navigation/app-layout.tsx
|
|
1796
|
-
import { jsx as
|
|
1823
|
+
import { jsx as jsx19, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1797
1824
|
function AppLayout({
|
|
1798
1825
|
children,
|
|
1799
1826
|
sidebarConfig,
|
|
@@ -1837,11 +1864,11 @@ function AppLayout({
|
|
|
1837
1864
|
}),
|
|
1838
1865
|
[]
|
|
1839
1866
|
);
|
|
1840
|
-
return /* @__PURE__ */
|
|
1867
|
+
return /* @__PURE__ */ jsx19(AppLayoutDrawerContainerContext.Provider, { value: drawerContainer, children: /* @__PURE__ */ jsx19(AppLayoutDrawerCoordinationContext.Provider, { value: drawerCoordination, children: /* @__PURE__ */ jsxs17("div", { className: cn("flex h-screen flex-col bg-ods-bg", className), children: [
|
|
1841
1868
|
topBar,
|
|
1842
1869
|
/* @__PURE__ */ jsxs17("div", { className: "relative flex min-h-0 flex-1", children: [
|
|
1843
|
-
/* @__PURE__ */
|
|
1844
|
-
/* @__PURE__ */
|
|
1870
|
+
/* @__PURE__ */ jsx19(NavigationSidebar, { config: sidebarConfig, disabled }),
|
|
1871
|
+
/* @__PURE__ */ jsx19(
|
|
1845
1872
|
MobileBurgerMenu,
|
|
1846
1873
|
{
|
|
1847
1874
|
...mobileBurgerMenuProps,
|
|
@@ -1852,7 +1879,7 @@ function AppLayout({
|
|
|
1852
1879
|
}
|
|
1853
1880
|
),
|
|
1854
1881
|
/* @__PURE__ */ jsxs17("div", { className: "flex flex-1 flex-col overflow-hidden", children: [
|
|
1855
|
-
/* @__PURE__ */
|
|
1882
|
+
/* @__PURE__ */ jsx19(
|
|
1856
1883
|
AppHeader,
|
|
1857
1884
|
{
|
|
1858
1885
|
...headerProps,
|
|
@@ -1861,9 +1888,9 @@ function AppLayout({
|
|
|
1861
1888
|
disabled
|
|
1862
1889
|
}
|
|
1863
1890
|
),
|
|
1864
|
-
/* @__PURE__ */
|
|
1891
|
+
/* @__PURE__ */ jsx19(NotificationDrawer, {}),
|
|
1865
1892
|
/* @__PURE__ */ jsxs17("div", { ref: setDrawerContainer, className: "relative flex flex-1 flex-col overflow-hidden", children: [
|
|
1866
|
-
/* @__PURE__ */
|
|
1893
|
+
/* @__PURE__ */ jsx19("main", { className: cn("flex-1 overflow-y-auto", mainClassName), children }),
|
|
1867
1894
|
drawer
|
|
1868
1895
|
] })
|
|
1869
1896
|
] })
|
|
@@ -1881,6 +1908,7 @@ export {
|
|
|
1881
1908
|
HeaderSkeleton,
|
|
1882
1909
|
ClientOnlyHeader,
|
|
1883
1910
|
SlidingSidebar,
|
|
1911
|
+
NavigationItemBadge,
|
|
1884
1912
|
NAVIGATION_SIDEBAR_WIDTH_VAR,
|
|
1885
1913
|
NavigationSidebar,
|
|
1886
1914
|
HeaderGlobalSearch,
|
|
@@ -1890,4 +1918,4 @@ export {
|
|
|
1890
1918
|
MobileBurgerMenu,
|
|
1891
1919
|
AppLayout
|
|
1892
1920
|
};
|
|
1893
|
-
//# sourceMappingURL=chunk-
|
|
1921
|
+
//# sourceMappingURL=chunk-JVAG5CHS.js.map
|