@flamingo-stack/openframe-frontend-core 0.0.705-snapshot.20261006160157 → 0.0.705
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-WCVZCGK5.cjs → chunk-2QEUFXNS.cjs} +71 -312
- package/dist/{chunk-N45D4ZXQ.js → chunk-2YXVWZVF.js} +715 -959
- package/dist/{chunk-7OFPU7WE.cjs → chunk-3MX5S4CF.cjs} +2547 -877
- package/dist/{chunk-MB4PNY7C.cjs → chunk-4I45Y3DN.cjs} +6 -6
- package/dist/{chunk-K6O43WDL.cjs → chunk-4KX6OED2.cjs} +46 -46
- package/dist/{chunk-JPG7OHEG.js → chunk-5HBHO5TB.js} +1 -1
- package/dist/{chunk-3PLDQDE6.cjs → chunk-6NJKKO73.cjs} +15 -15
- package/dist/{chunk-O2RSAA5M.js → chunk-6SEANMOU.js} +11 -11
- package/dist/{chunk-WMX26HB5.js → chunk-6XIF2Z7I.js} +3 -3
- package/dist/{chunk-TQ4LB2DS.cjs → chunk-7LS22BZU.cjs} +14 -14
- package/dist/{chunk-7GEBFJT2.js → chunk-7VVFKJY5.js} +3429 -1759
- package/dist/{chunk-DDVBX42E.cjs → chunk-A75QY6CD.cjs} +21 -21
- package/dist/{chunk-OF6GEI5A.cjs → chunk-ABU3TGXA.cjs} +3 -3
- package/dist/{chunk-4CJMQLB5.js → chunk-AQWZNP6A.js} +4 -4
- package/dist/{chunk-FI6GMDO7.js → chunk-CH5232HV.js} +662 -2455
- package/dist/{chunk-Y2GSOUCS.cjs → chunk-D7BTSVMS.cjs} +2 -2
- package/dist/{chunk-4ILM7W2R.js → chunk-DENB2XJC.js} +2 -2
- package/dist/{chunk-6232S532.js → chunk-DW7G4KG3.js} +3 -3
- package/dist/{chunk-3NCM4ZQB.js → chunk-F6AFPNDF.js} +15 -15
- package/dist/{chunk-PXOQIA5K.js → chunk-F6I6XZMN.js} +5 -5
- package/dist/{chunk-G6UMNAVI.js → chunk-FCGC42TS.js} +61 -57
- package/dist/{chunk-BHI6GVC4.js → chunk-G5A3PSPV.js} +691 -1080
- package/dist/{chunk-HZ7CBXPL.cjs → chunk-HPWWNJE7.cjs} +89 -89
- package/dist/{chunk-SW5ZV2BN.cjs → chunk-IHERL5V4.cjs} +34 -34
- package/dist/{chunk-UJ33ZXDT.cjs → chunk-IKTQ3ZAG.cjs} +6 -6
- package/dist/{chunk-SEKYEWQG.cjs → chunk-JEZKGCZI.cjs} +26 -26
- package/dist/{chunk-7SCNMP2B.cjs → chunk-KOWVJD4V.cjs} +56 -56
- package/dist/chunk-LMBC5FFP.js +43 -0
- package/dist/{chunk-F57ECE2I.js → chunk-MFFCUVWG.js} +1 -1
- package/dist/{chunk-KUC673HM.js → chunk-MKXO4Q5P.js} +142 -383
- package/dist/{chunk-6NTPY5QA.cjs → chunk-MMOODW57.cjs} +94 -1887
- package/dist/{chunk-CUME3VTQ.js → chunk-MP2C3LJ4.js} +1 -1
- package/dist/{chunk-VX4E6YSB.cjs → chunk-N3COXDBH.cjs} +5 -41
- package/dist/{chunk-FXJ3WWUB.js → chunk-NDESEPW5.js} +0 -68
- package/dist/chunk-O43V3EOS.js +252 -0
- package/dist/{chunk-PLYEKV3N.cjs → chunk-OHFS7VOU.cjs} +2 -2
- package/dist/{chunk-M75XEEGT.cjs → chunk-OUY3HHW6.cjs} +539 -928
- package/dist/{chunk-CZ7Y7UG4.js → chunk-PDWVPI3S.js} +72 -4
- package/dist/{chunk-TE773HEH.js → chunk-PN2RKPDF.js} +10 -10
- package/dist/{chunk-3EZ4HHAP.js → chunk-QFXRPRFT.js} +3 -3
- package/dist/chunk-QZVSJF2K.cjs +252 -0
- package/dist/chunk-RALRPFDW.cjs +43 -0
- package/dist/{chunk-YGJKKDDM.js → chunk-RBDP4WDE.js} +6 -6
- package/dist/{chunk-LM7TXMLU.cjs → chunk-RKV5B7EU.cjs} +4 -72
- package/dist/{chunk-UVTD52MD.cjs → chunk-TYWLNCNH.cjs} +82 -14
- package/dist/{chunk-IKJA3Y7Z.js → chunk-VA5T32XA.js} +2 -2
- package/dist/{chunk-GWQEYPYM.cjs → chunk-VESKITRQ.cjs} +732 -728
- package/dist/{chunk-RQRX4YC3.cjs → chunk-VHCACDKP.cjs} +39 -39
- package/dist/{chunk-4IBPRIQH.js → chunk-VR2ZLFCP.js} +1 -1
- package/dist/{chunk-RTIPR53L.cjs → chunk-WA6GUYQ4.cjs} +104 -104
- package/dist/{chunk-T5TMCHWM.js → chunk-X5MQ7JRP.js} +9 -9
- package/dist/{chunk-LLSUVPQC.cjs → chunk-X72J4ACL.cjs} +8 -252
- package/dist/{chunk-UDFRUKLC.cjs → chunk-XOYH2YQE.cjs} +2 -2
- package/dist/{chunk-LVSFKENJ.cjs → chunk-YFBM2K6X.cjs} +4 -4
- package/dist/{chunk-DWPAAWMR.js → chunk-YHM5AWTT.js} +6 -6
- package/dist/{chunk-NCPTID44.js → chunk-Z2VNQQ74.js} +942 -978
- package/dist/{chunk-STHZBOQI.cjs → chunk-ZSAGLQOD.cjs} +17 -17
- package/dist/{chunk-VZICIQW2.js → chunk-ZSAO2HBW.js} +15 -15
- package/dist/components/case-studies/index.cjs +32 -30
- package/dist/components/case-studies/index.js +16 -14
- package/dist/components/chat/entity-cards/case-study-card.d.ts +4 -11
- package/dist/components/chat/entity-cards/case-study-card.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +11 -9
- package/dist/components/chat/index.js +16 -14
- package/dist/components/chat/utils/icon-library.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +14 -12
- package/dist/components/contact/index.js +13 -11
- package/dist/components/docs/index.cjs +17 -15
- package/dist/components/docs/index.js +16 -14
- package/dist/components/embeds/index.cjs +14 -12
- package/dist/components/embeds/index.js +13 -11
- package/dist/components/faq/index.cjs +15 -13
- package/dist/components/faq/index.js +14 -12
- package/dist/components/features/index.cjs +14 -12
- package/dist/components/features/index.js +23 -21
- package/dist/components/footer-waitlist-button.d.ts +29 -0
- package/dist/components/footer-waitlist-button.d.ts.map +1 -0
- package/dist/components/footer.d.ts +47 -0
- package/dist/components/footer.d.ts.map +1 -0
- package/dist/components/help-center-pages/index.cjs +120 -118
- package/dist/components/help-center-pages/index.js +35 -33
- package/dist/components/icons/index.cjs +5 -3
- package/dist/components/icons/index.js +11 -9
- package/dist/components/icons-v2-generated/index.cjs +5 -3
- package/dist/components/icons-v2-generated/index.js +4 -2
- package/dist/components/index.cjs +159 -86
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +402 -329
- package/dist/components/loading/page-layout-skeleton.d.ts +1 -1
- package/dist/components/meeting-scheduler/index.cjs +64 -62
- package/dist/components/meeting-scheduler/index.js +14 -12
- package/dist/components/navigation/client-only-header.d.ts +8 -0
- package/dist/components/navigation/client-only-header.d.ts.map +1 -0
- package/dist/components/navigation/header-skeleton.d.ts +12 -0
- package/dist/components/navigation/header-skeleton.d.ts.map +1 -0
- package/dist/components/navigation/header.d.ts +9 -0
- package/dist/components/navigation/header.d.ts.map +1 -0
- package/dist/components/navigation/index.cjs +16 -28
- package/dist/components/navigation/index.d.ts +10 -14
- package/dist/components/navigation/index.d.ts.map +1 -1
- package/dist/components/navigation/index.js +26 -38
- package/dist/components/navigation/mingo-ai-button.d.ts +3 -38
- package/dist/components/navigation/mingo-ai-button.d.ts.map +1 -1
- package/dist/components/navigation/mobile-nav-panel.d.ts +10 -0
- package/dist/components/navigation/mobile-nav-panel.d.ts.map +1 -0
- package/dist/components/navigation/navigation-sidebar-item.d.ts +2 -1
- package/dist/components/navigation/navigation-sidebar-item.d.ts.map +1 -1
- package/dist/components/navigation/top-navigation.d.ts +2 -2
- package/dist/components/navigation/top-navigation.d.ts.map +1 -1
- package/dist/components/onboarding-guides/index.cjs +17 -15
- package/dist/components/onboarding-guides/index.js +16 -14
- package/dist/components/related-content/index.cjs +8 -10
- package/dist/components/related-content/index.js +7 -9
- package/dist/components/tickets/index.cjs +18 -16
- package/dist/components/tickets/index.js +17 -15
- package/dist/components/ui/index.cjs +14 -12
- package/dist/components/ui/index.js +19 -17
- package/dist/hooks/index.cjs +11 -19
- package/dist/hooks/index.d.ts +0 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +11 -19
- package/dist/hooks/ui/index.d.ts +0 -3
- package/dist/hooks/ui/index.d.ts.map +1 -1
- package/dist/index.cjs +22 -55
- package/dist/index.js +196 -229
- package/dist/types/case-study.d.ts +0 -9
- package/dist/types/case-study.d.ts.map +1 -1
- package/dist/types/navigation.d.ts +65 -95
- package/dist/types/navigation.d.ts.map +1 -1
- package/dist/utils/index.cjs +0 -55
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -50
- package/dist/utils/source-icons.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/chat/entity-cards/case-study-card.tsx +5 -115
- package/src/components/chat/utils/icon-library.tsx +1 -35
- package/src/components/footer-waitlist-button.tsx +53 -0
- package/src/components/footer.tsx +195 -0
- package/src/components/index.ts +2 -0
- package/src/components/loading/page-layout-skeleton.tsx +1 -1
- package/src/components/navigation/client-only-header.tsx +22 -0
- package/src/components/navigation/header-skeleton.tsx +74 -0
- package/src/components/navigation/header.tsx +429 -0
- package/src/components/navigation/index.ts +14 -21
- package/src/components/navigation/mingo-ai-button.tsx +63 -139
- package/src/components/navigation/mobile-nav-panel.tsx +155 -0
- package/src/components/navigation/navigation-sidebar-item.tsx +2 -1
- package/src/components/navigation/ticket-alerts-button.tsx +2 -2
- package/src/components/navigation/top-navigation.tsx +2 -2
- package/src/hooks/index.ts +0 -1
- package/src/hooks/ui/index.ts +0 -3
- package/src/styles/chat-animations.css +2 -57
- package/src/types/case-study.ts +0 -16
- package/src/types/navigation.ts +66 -80
- package/src/utils/index.ts +0 -1
- package/src/utils/source-icons.ts +0 -13
- package/dist/components/navigation/mobile-nav-sheet-id.d.ts +0 -3
- package/dist/components/navigation/mobile-nav-sheet-id.d.ts.map +0 -1
- package/dist/components/navigation/mobile-nav-sheet.d.ts +0 -48
- package/dist/components/navigation/mobile-nav-sheet.d.ts.map +0 -1
- package/dist/components/navigation/nav-item-row.d.ts +0 -27
- package/dist/components/navigation/nav-item-row.d.ts.map +0 -1
- package/dist/components/navigation/nav-panel.d.ts +0 -43
- package/dist/components/navigation/nav-panel.d.ts.map +0 -1
- package/dist/components/navigation/site-footer.d.ts +0 -28
- package/dist/components/navigation/site-footer.d.ts.map +0 -1
- package/dist/components/navigation/site-header.d.ts +0 -61
- package/dist/components/navigation/site-header.d.ts.map +0 -1
- package/dist/components/navigation/site-nav-link.d.ts +0 -26
- package/dist/components/navigation/site-nav-link.d.ts.map +0 -1
- package/dist/hooks/ui/use-active-section.d.ts +0 -10
- package/dist/hooks/ui/use-active-section.d.ts.map +0 -1
- package/dist/hooks/ui/use-nav-menus.d.ts +0 -48
- package/dist/hooks/ui/use-nav-menus.d.ts.map +0 -1
- package/dist/hooks/ui/use-visitor-os.d.ts +0 -15
- package/dist/hooks/ui/use-visitor-os.d.ts.map +0 -1
- package/dist/hooks/use-location-hash.d.ts +0 -9
- package/dist/hooks/use-location-hash.d.ts.map +0 -1
- package/dist/utils/visitor-os.d.ts +0 -45
- package/dist/utils/visitor-os.d.ts.map +0 -1
- package/src/components/navigation/mobile-nav-sheet-id.ts +0 -2
- package/src/components/navigation/mobile-nav-sheet.tsx +0 -241
- package/src/components/navigation/nav-item-row.tsx +0 -129
- package/src/components/navigation/nav-panel.tsx +0 -196
- package/src/components/navigation/site-footer.tsx +0 -256
- package/src/components/navigation/site-header.tsx +0 -339
- package/src/components/navigation/site-nav-link.tsx +0 -41
- package/src/hooks/ui/use-active-section.ts +0 -44
- package/src/hooks/ui/use-nav-menus.ts +0 -200
- package/src/hooks/ui/use-visitor-os.ts +0 -33
- package/src/hooks/use-location-hash.ts +0 -34
- package/src/utils/visitor-os.ts +0 -84
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkIKTQ3ZAGcjs = require('./chunk-IKTQ3ZAG.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
@@ -13,59 +13,50 @@ var _chunkUJ33ZXDTcjs = require('./chunk-UJ33ZXDT.cjs');
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
+
var _chunkVESKITRQcjs = require('./chunk-VESKITRQ.cjs');
|
|
16
17
|
|
|
17
|
-
var _chunkGWQEYPYMcjs = require('./chunk-GWQEYPYM.cjs');
|
|
18
18
|
|
|
19
19
|
|
|
20
|
+
var _chunk2QEUFXNScjs = require('./chunk-2QEUFXNS.cjs');
|
|
20
21
|
|
|
21
22
|
|
|
22
23
|
|
|
24
|
+
var _chunk3MX5S4CFcjs = require('./chunk-3MX5S4CF.cjs');
|
|
23
25
|
|
|
24
26
|
|
|
27
|
+
var _chunkTYWLNCNHcjs = require('./chunk-TYWLNCNH.cjs');
|
|
25
28
|
|
|
26
29
|
|
|
27
|
-
var _chunkWCVZCGK5cjs = require('./chunk-WCVZCGK5.cjs');
|
|
28
30
|
|
|
29
31
|
|
|
30
32
|
|
|
31
|
-
var
|
|
33
|
+
var _chunkX72J4ACLcjs = require('./chunk-X72J4ACL.cjs');
|
|
32
34
|
|
|
33
35
|
|
|
34
|
-
var _chunkUVTD52MDcjs = require('./chunk-UVTD52MD.cjs');
|
|
35
36
|
|
|
36
37
|
|
|
37
38
|
|
|
38
39
|
|
|
39
40
|
|
|
40
|
-
var _chunk6NTPY5QAcjs = require('./chunk-6NTPY5QA.cjs');
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
|
|
44
|
+
var _chunkN3COXDBHcjs = require('./chunk-N3COXDBH.cjs');
|
|
44
45
|
|
|
45
46
|
|
|
46
47
|
|
|
48
|
+
var _chunkMMOODW57cjs = require('./chunk-MMOODW57.cjs');
|
|
47
49
|
|
|
48
|
-
var _chunkLM7TXMLUcjs = require('./chunk-LM7TXMLU.cjs');
|
|
49
50
|
|
|
50
51
|
|
|
51
52
|
|
|
52
53
|
|
|
53
54
|
|
|
54
55
|
|
|
55
|
-
var
|
|
56
|
+
var _chunkRKV5B7EUcjs = require('./chunk-RKV5B7EU.cjs');
|
|
56
57
|
|
|
57
58
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
var _chunkVX4E6YSBcjs = require('./chunk-VX4E6YSB.cjs');
|
|
59
|
+
var _chunkQZVSJF2Kcjs = require('./chunk-QZVSJF2K.cjs');
|
|
69
60
|
|
|
70
61
|
|
|
71
62
|
|
|
@@ -85,328 +76,204 @@ var _chunkLLRGR4I5cjs = require('./chunk-LLRGR4I5.cjs');
|
|
|
85
76
|
|
|
86
77
|
var _chunk3ATAYP36cjs = require('./chunk-3ATAYP36.cjs');
|
|
87
78
|
|
|
88
|
-
// src/components/navigation/
|
|
79
|
+
// src/components/navigation/header.tsx
|
|
89
80
|
var _react = require('react'); var _react2 = _interopRequireDefault(_react);
|
|
90
81
|
|
|
91
82
|
// src/components/navigation/mingo-ai-button.tsx
|
|
92
|
-
|
|
93
83
|
var _jsxruntime = require('react/jsx-runtime');
|
|
94
84
|
var MINGO_ACCENT = "var(--ods-flamingo-cyan-base)";
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
99
|
-
function MingoAiButton({
|
|
100
|
-
source,
|
|
101
|
-
icon,
|
|
102
|
-
label = "Mingo AI",
|
|
103
|
-
shortcutHint = false,
|
|
104
|
-
variant = "inline",
|
|
105
|
-
className,
|
|
106
|
-
onClick,
|
|
107
|
-
...props
|
|
108
|
-
}) {
|
|
109
|
-
const visitor = _chunkWCVZCGK5cjs.useVisitorOs.call(void 0, );
|
|
110
|
-
const field = variant === "field";
|
|
111
|
-
const commandKey = visitor.known && _chunkWCVZCGK5cjs.usesCommandKey.call(void 0, visitor.os);
|
|
112
|
-
_react.useEffect.call(void 0, () => {
|
|
113
|
-
if (!shortcutHint) return void 0;
|
|
114
|
-
const onKeyDown = (event) => {
|
|
115
|
-
if (event.defaultPrevented || event.altKey || event.shiftKey) return;
|
|
116
|
-
const modifier = commandKey ? event.metaKey && !event.ctrlKey : event.ctrlKey && !event.metaKey;
|
|
117
|
-
if (event.key.toLowerCase() !== "k" || !modifier) return;
|
|
118
|
-
event.preventDefault();
|
|
119
|
-
openAskAi(source);
|
|
120
|
-
};
|
|
121
|
-
window.addEventListener("keydown", onKeyDown);
|
|
122
|
-
return () => window.removeEventListener("keydown", onKeyDown);
|
|
123
|
-
}, [shortcutHint, source, commandKey]);
|
|
124
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
125
|
-
_chunkDFQYAYBHcjs.Button,
|
|
85
|
+
function MingoAiButton({ source, icon, label = "Mingo AI", className, onClick, ...props }) {
|
|
86
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
87
|
+
"button",
|
|
126
88
|
{
|
|
127
89
|
...props,
|
|
128
90
|
type: "button",
|
|
129
|
-
variant: field ? "glyph" : "transparent",
|
|
130
|
-
size: "wrap",
|
|
131
|
-
font: "regular",
|
|
132
91
|
"aria-label": label,
|
|
133
|
-
"aria-keyshortcuts": shortcutHint && visitor.known ? commandKey ? "Meta+K" : "Control+K" : void 0,
|
|
134
92
|
onClick: (e) => {
|
|
135
|
-
|
|
93
|
+
window.dispatchEvent(new CustomEvent("ask-ai:open", { detail: { source: _nullishCoalesce(source, () => ( "")) } }));
|
|
136
94
|
_optionalChain([onClick, 'optionalCall', _2 => _2(e)]);
|
|
137
95
|
},
|
|
138
96
|
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
)
|
|
145
|
-
|
|
146
|
-
// wash is the menu items' own.
|
|
147
|
-
"h-10 gap-[var(--spacing-system-xsf)] rounded-md pl-[var(--spacing-system-xsf)] pr-2.5 text-ods-text-secondary hover:text-ods-text-primary"
|
|
148
|
-
),
|
|
97
|
+
// Unified ODS top-navigation cell (Figma 2797-6808 desktop /
|
|
98
|
+
// 2797-7275 mobile): full-height cell with a leading divider,
|
|
99
|
+
// transparent at rest so it inherits the bar's background.
|
|
100
|
+
// No hover background on the cell: the animated ring + shimmer are
|
|
101
|
+
// the ONLY hover treatment (a bg flip on top read as a double
|
|
102
|
+
// animation).
|
|
103
|
+
"group/mingo relative flex h-full shrink-0 items-center border-l border-ods-border bg-transparent px-[var(--spacing-system-m)] focus:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent",
|
|
149
104
|
className
|
|
150
105
|
),
|
|
151
|
-
children: [
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", className: "pointer-events-none absolute inset-0 overflow-hidden rounded-md", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
155
|
-
"span",
|
|
156
|
-
{
|
|
157
|
-
className: "mingo-shimmer absolute inset-y-0 left-0 w-1/2",
|
|
158
|
-
style: {
|
|
159
|
-
background: "linear-gradient(105deg, transparent, color-mix(in srgb, var(--ods-system-greys-white) 12%, transparent), transparent)"
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
) })
|
|
163
|
-
] }),
|
|
164
|
-
icon ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
106
|
+
children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "relative flex h-11 items-center gap-[var(--spacing-system-xsf)] rounded-md px-[var(--spacing-system-m)] md:h-12", children: [
|
|
107
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", className: "mingo-edge-frame pointer-events-none absolute inset-0 rounded-md", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mingo-edge" }) }),
|
|
108
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", className: "pointer-events-none absolute inset-0 overflow-hidden rounded-md", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
165
109
|
"span",
|
|
166
110
|
{
|
|
167
|
-
className:
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
children: icon
|
|
111
|
+
className: "mingo-shimmer absolute inset-y-0 left-0 w-1/2",
|
|
112
|
+
style: {
|
|
113
|
+
background: "linear-gradient(105deg, transparent, color-mix(in srgb, var(--ods-system-greys-white) 12%, transparent), transparent)"
|
|
114
|
+
}
|
|
172
115
|
}
|
|
173
|
-
)
|
|
174
|
-
|
|
116
|
+
) }),
|
|
117
|
+
icon ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "relative inline-flex size-6 shrink-0 items-center justify-center", children: icon }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
118
|
+
_chunkX72J4ACLcjs.MingoIcon,
|
|
175
119
|
{
|
|
176
120
|
color: "currentColor",
|
|
177
121
|
eyesColor: MINGO_ACCENT,
|
|
178
122
|
cornerColor: MINGO_ACCENT,
|
|
179
|
-
className:
|
|
123
|
+
className: "relative h-6 w-6 shrink-0 text-ods-text-primary"
|
|
180
124
|
}
|
|
181
125
|
),
|
|
182
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
183
|
-
|
|
184
|
-
{
|
|
185
|
-
className: _chunk3ATAYP36cjs.cn.call(void 0, "relative whitespace-nowrap", field ? "min-w-0 flex-1 truncate" : "hidden text-h6 lg:inline"),
|
|
186
|
-
children: label
|
|
187
|
-
}
|
|
188
|
-
),
|
|
189
|
-
shortcutHint && !field && // A key cap in the label's own type (never smaller: a hint nobody can
|
|
190
|
-
// read is decoration) and the label's colour, which clears 4.5:1 on
|
|
191
|
-
// the bar. It keeps its width before the platform is known.
|
|
192
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "kbd", { className: "relative hidden h-6 min-w-9 items-center justify-center rounded border border-ods-border px-[var(--spacing-system-xxs)] text-h6 lg:inline-flex", children: visitor.known ? _chunkWCVZCGK5cjs.shortcutLabel.call(void 0, visitor.os, "K") : "" })
|
|
193
|
-
]
|
|
126
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "relative hidden whitespace-nowrap text-ods-text-primary text-h3 md:inline", children: label })
|
|
127
|
+
] })
|
|
194
128
|
}
|
|
195
129
|
);
|
|
196
130
|
}
|
|
197
131
|
|
|
198
|
-
// src/components/navigation/mobile-nav-
|
|
199
|
-
var
|
|
200
|
-
|
|
201
|
-
// src/components/navigation/nav-panel.tsx
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
// src/components/navigation/site-nav-link.tsx
|
|
205
|
-
|
|
206
|
-
var defaultRenderSiteNavLink = ({ link, children, ...rest }) => link.external ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLRGR4I5cjs.next_link_default, { href: link.href, target: "_blank", rel: "noopener noreferrer", ...rest, children }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLRGR4I5cjs.next_link_default, { href: link.href, ...rest, children });
|
|
207
|
-
function navLinkLabel(link) {
|
|
208
|
-
return link.count === void 0 ? link.label : link.label.replace("{count}", String(link.count));
|
|
209
|
-
}
|
|
210
|
-
var NAV_FOCUS_CLASS = "outline-none focus-visible:ring-2 focus-visible:ring-ods-accent";
|
|
132
|
+
// src/components/navigation/mobile-nav-panel.tsx
|
|
133
|
+
var _overlays = require('@react-aria/overlays');
|
|
134
|
+
var _lucidereact = require('lucide-react');
|
|
211
135
|
|
|
212
|
-
// src/components/navigation/nav-item-row.tsx
|
|
213
136
|
|
|
214
|
-
var
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
};
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
"
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
137
|
+
var MOBILE_NAV_PANEL_ID = "mobile-nav-panel";
|
|
138
|
+
function MobileNavPanel({ isOpen, config }) {
|
|
139
|
+
const panelRef = _react.useRef.call(void 0, null);
|
|
140
|
+
_overlays.usePreventScroll.call(void 0, { isDisabled: !isOpen });
|
|
141
|
+
_chunk2QEUFXNScjs.useFocusTrap.call(void 0, panelRef, isOpen, { onEscape: config.onClose });
|
|
142
|
+
const headerHeight = _chunkTYWLNCNHcjs.useHeaderHeight.call(void 0, 64, { enabled: isOpen });
|
|
143
|
+
if (!isOpen) return null;
|
|
144
|
+
const renderNavigationItem = (item) => {
|
|
145
|
+
if (item.element) {
|
|
146
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { children: item.element }, item.id);
|
|
147
|
+
}
|
|
148
|
+
const handleClick = () => {
|
|
149
|
+
if (item.onClick) {
|
|
150
|
+
item.onClick();
|
|
228
151
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
152
|
+
_optionalChain([config, 'access', _3 => _3.onClose, 'optionalCall', _4 => _4()]);
|
|
153
|
+
};
|
|
154
|
+
if (item.href) {
|
|
155
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
156
|
+
_chunkDFQYAYBHcjs.Button,
|
|
157
|
+
{
|
|
158
|
+
variant: "outline",
|
|
159
|
+
size: "small-legacy",
|
|
160
|
+
href: item.href,
|
|
161
|
+
onClick: handleClick,
|
|
162
|
+
leftIcon: item.icon,
|
|
163
|
+
rightIcon: item.badge,
|
|
164
|
+
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
165
|
+
"h-12 justify-start gap-3 rounded-md border-none bg-transparent px-4 text-ods-text-primary transition-colors hover:bg-ods-bg-hover",
|
|
166
|
+
item.isActive ? "bg-ods-bg-hover" : ""
|
|
167
|
+
),
|
|
168
|
+
children: item.label
|
|
169
|
+
},
|
|
170
|
+
item.id
|
|
171
|
+
);
|
|
241
172
|
}
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
children = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
265
|
-
label,
|
|
266
|
-
counter
|
|
267
|
-
] });
|
|
268
|
-
} else if (variant === "side") {
|
|
269
|
-
children = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
270
|
-
link.iconName && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", className: "flex shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6NTPY5QAcjs.EntityIcon, { icon: { name: link.iconName }, size: 18 }) }),
|
|
271
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-w-0 flex-1", children: label }),
|
|
272
|
-
counter
|
|
273
|
-
] });
|
|
274
|
-
} else {
|
|
275
|
-
const sheet = variant === "sheet";
|
|
276
|
-
children = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
277
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, RowGlyph, { link, box: sheet ? "h-8 w-8" : "h-9 w-9", glyph: sheet ? 18 : 20 }),
|
|
278
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
279
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-[var(--spacing-system-xsf)] text-h6", children: [
|
|
280
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-w-0", children: label }),
|
|
281
|
-
counter
|
|
282
|
-
] }),
|
|
283
|
-
link.description && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-muted text-h6", children: link.description }),
|
|
284
|
-
link.builtOn && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-muted text-h6", children: [
|
|
285
|
-
"Built on ",
|
|
286
|
-
link.builtOn
|
|
287
|
-
] })
|
|
288
|
-
] })
|
|
289
|
-
] });
|
|
290
|
-
}
|
|
291
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: renderLink({ link, className: rowClassName, children, onClick }) });
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
// src/components/navigation/nav-panel.tsx
|
|
295
|
-
|
|
296
|
-
var TWO_COLUMN_OVER = 4;
|
|
297
|
-
function isMegaMenu(menu) {
|
|
298
|
-
return (_nullishCoalesce(_optionalChain([menu, 'access', _3 => _3.columns, 'optionalAccess', _4 => _4.length]), () => ( 0))) > 1 || !!_optionalChain([menu, 'access', _5 => _5.features, 'optionalAccess', _6 => _6.length]) || !!_optionalChain([menu, 'access', _7 => _7.sideLinks, 'optionalAccess', _8 => _8.length]);
|
|
299
|
-
}
|
|
300
|
-
var HEADING_CLASS = "mb-[var(--spacing-system-xsf)] ml-[var(--spacing-system-sf)] text-ods-text-muted text-h5";
|
|
301
|
-
function Column({
|
|
302
|
-
group,
|
|
303
|
-
wide,
|
|
304
|
-
rowProps
|
|
305
|
-
}) {
|
|
306
|
-
const twoColumns = wide && group.links.length > TWO_COLUMN_OVER;
|
|
307
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex min-w-0 flex-col", wide && (twoColumns ? "flex-[2]" : "flex-1")), children: [
|
|
308
|
-
group.title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: HEADING_CLASS, children: group.title }),
|
|
309
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
173
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
174
|
+
_chunkDFQYAYBHcjs.Button,
|
|
175
|
+
{
|
|
176
|
+
variant: "outline",
|
|
177
|
+
size: "small-legacy",
|
|
178
|
+
onClick: handleClick,
|
|
179
|
+
leftIcon: item.icon,
|
|
180
|
+
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
181
|
+
"h-12 justify-start gap-3 rounded-md border-none bg-transparent px-4 text-ods-text-primary transition-colors hover:bg-ods-bg-hover",
|
|
182
|
+
item.isActive ? "bg-ods-bg-hover" : ""
|
|
183
|
+
),
|
|
184
|
+
children: [
|
|
185
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex-1 text-left", children: item.label }),
|
|
186
|
+
item.badge !== void 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "ml-auto", children: item.badge })
|
|
187
|
+
]
|
|
188
|
+
},
|
|
189
|
+
item.id
|
|
190
|
+
);
|
|
191
|
+
};
|
|
192
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
193
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "fixed inset-0 z-[9998]", _chunk3MX5S4CFcjs.OVERLAY_BACKDROP_CLASS), onClick: config.onClose }),
|
|
194
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
310
195
|
"div",
|
|
311
196
|
{
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
197
|
+
ref: panelRef,
|
|
198
|
+
id: MOBILE_NAV_PANEL_ID,
|
|
199
|
+
role: "dialog",
|
|
200
|
+
"aria-modal": "true",
|
|
201
|
+
"aria-label": "Navigation menu",
|
|
202
|
+
tabIndex: -1,
|
|
203
|
+
style: { "--mobile-nav-top": `${headerHeight + 16}px` },
|
|
204
|
+
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
205
|
+
"fixed z-[9999] rounded-lg shadow-xl",
|
|
206
|
+
config.className ? "" : "border border-ods-border bg-ods-card",
|
|
207
|
+
// Responsive positioning and sizing — LEFT-anchored from md, flush
|
|
208
|
+
// under the burger cell at the left edge of the unified
|
|
209
|
+
// top-navigation (a larger inset read as a stray gap between the
|
|
210
|
+
// burger and its panel).
|
|
211
|
+
"left-2 right-2 md:right-auto",
|
|
212
|
+
"md:left-2 md:w-[400px] md:max-w-[calc(100vw-1rem)]",
|
|
213
|
+
// Small-viewport (svh) sizing anchored below the measured header —
|
|
214
|
+
// 100vh overflowed under mobile browser chrome, leaving the bottom
|
|
215
|
+
// entries and footer unreachable while the body was scroll-locked.
|
|
216
|
+
"top-[var(--mobile-nav-top)]",
|
|
217
|
+
"max-h-[calc(100svh-var(--mobile-nav-top)-50px)] md:max-h-[calc(100svh-var(--mobile-nav-top)-8px)]",
|
|
218
|
+
"flex flex-col",
|
|
219
|
+
config.className || ""
|
|
220
|
+
),
|
|
221
|
+
onClick: (e) => e.stopPropagation(),
|
|
222
|
+
children: [
|
|
223
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-shrink-0 justify-end border-b border-ods-border p-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
224
|
+
_chunkDFQYAYBHcjs.Button,
|
|
225
|
+
{
|
|
226
|
+
"aria-label": "Close menu",
|
|
227
|
+
size: "icon",
|
|
228
|
+
variant: "transparent",
|
|
229
|
+
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.X, { className: "h-4 w-4 text-ods-text-primary" }),
|
|
230
|
+
onClick: config.onClose,
|
|
231
|
+
className: "hover:bg-ods-bg-hover"
|
|
232
|
+
}
|
|
233
|
+
) }),
|
|
234
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-1 overflow-y-auto overflow-x-hidden overscroll-contain px-2 py-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col space-y-1", children: config.sections.map((section, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { children: [
|
|
235
|
+
section.title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "px-4 pb-1 pt-2 font-semibold uppercase text-ods-text-secondary text-h6", children: section.title }),
|
|
236
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col gap-1", children: section.items.map(renderNavigationItem) })
|
|
237
|
+
] }, index)) }) }),
|
|
238
|
+
config.footer && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-shrink-0 border-t border-ods-border p-4 pb-[max(1rem,env(safe-area-inset-bottom))]", children: config.footer })
|
|
239
|
+
]
|
|
323
240
|
}
|
|
324
241
|
)
|
|
325
242
|
] });
|
|
326
243
|
}
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
}
|
|
339
|
-
const columns = _nullishCoalesce(menu.columns, () => ( []));
|
|
340
|
-
const mega = isMegaMenu(menu);
|
|
341
|
-
const rowProps = { renderLink, badges, onNavigate };
|
|
342
|
-
const socialRow = menu.showSocial && social ? social : null;
|
|
244
|
+
|
|
245
|
+
// src/components/navigation/ticket-alerts-button.tsx
|
|
246
|
+
|
|
247
|
+
function TicketAlertsButton({ href, onNavigate, disabled, className }) {
|
|
248
|
+
const live = _chunkIKTQ3ZAGcjs.useOptionalTicketLive.call(void 0, );
|
|
249
|
+
if (!live || !live.authed || live.unreadTotal === 0) return null;
|
|
250
|
+
const targetId = live.nextUnreadTicketId;
|
|
251
|
+
const target = targetId ? _chunkVESKITRQcjs.buildTicketOpenHref.call(void 0, href, targetId) : href;
|
|
252
|
+
const handleClick = () => {
|
|
253
|
+
if (onNavigate) onNavigate(target);
|
|
254
|
+
else window.location.assign(target);
|
|
255
|
+
};
|
|
343
256
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
344
|
-
|
|
257
|
+
_chunkVESKITRQcjs.HeaderButton,
|
|
345
258
|
{
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
mega ? "left-0 right-0 border-b border-ods-border bg-ods-card shadow-xl" : "left-0 mt-[var(--spacing-system-xxs)] min-w-[260px] rounded-lg border border-ods-border bg-ods-card p-[var(--spacing-system-xsf)] shadow-xl",
|
|
357
|
-
open ? "visible opacity-100" : "pointer-events-none invisible opacity-0",
|
|
358
|
-
className
|
|
259
|
+
icon: (
|
|
260
|
+
// Glyph inherits HeaderButton's standard cell coloring (secondary at
|
|
261
|
+
// rest, primary on active) — SAME treatment as the notifications
|
|
262
|
+
// bell and time-tracker cells. The indication is carried by the
|
|
263
|
+
// count pill (sidebar count-pill precedent) and by the cell only
|
|
264
|
+
// existing while updates are unread — never by tinting the glyph.
|
|
265
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "relative inline-flex", children: [
|
|
266
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN3COXDBHcjs.LifeBuoyIcon, { className: "h-6 w-6" }),
|
|
267
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVESKITRQcjs.UnreadCountBadge, { count: live.unreadTotal })
|
|
268
|
+
] })
|
|
359
269
|
),
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
"div",
|
|
365
|
-
{
|
|
366
|
-
"data-motion": open ? motion2 : void 0,
|
|
367
|
-
className: "nav-panel-content flex h-[400px] max-h-[calc(100svh-var(--top-nav-height,72px))] flex-col gap-[var(--spacing-system-mf)] overflow-y-auto px-[var(--spacing-system-lf)] pb-[var(--spacing-system-xlf)] pt-8",
|
|
368
|
-
children: [
|
|
369
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-h-0 flex-1 gap-[var(--spacing-system-xlf)]", children: [
|
|
370
|
-
columns.map((group) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Column, { group, wide: true, rowProps }, group.id)),
|
|
371
|
-
!!_optionalChain([menu, 'access', _11 => _11.features, 'optionalAccess', _12 => _12.length]) && // One row of cards, as many as the bar's width holds: a card that
|
|
372
|
-
// would wrap lands on a zero-height row, where its cell clips it.
|
|
373
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "grid min-w-0 flex-[3] auto-rows-[0px] grid-cols-[repeat(auto-fit,minmax(240px,1fr))] grid-rows-[minmax(0,1fr)] gap-x-[var(--spacing-system-mf)]", children: menu.features.map((feature) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-0 min-w-0 overflow-hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
374
|
-
_chunk6NTPY5QAcjs.CaseStudyCard,
|
|
375
|
-
{
|
|
376
|
-
size: "menu",
|
|
377
|
-
study: feature.study,
|
|
378
|
-
href: feature.href,
|
|
379
|
-
mediaMounted: open,
|
|
380
|
-
onNavigate,
|
|
381
|
-
className: "h-full"
|
|
382
|
-
}
|
|
383
|
-
) }, feature.id)) }),
|
|
384
|
-
!!_optionalChain([menu, 'access', _13 => _13.sideLinks, 'optionalAccess', _14 => _14.length]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-[260px] shrink-0 flex-col gap-0.5 border-l border-ods-border pl-8 pt-5", children: [
|
|
385
|
-
menu.sideTitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: HEADING_CLASS, children: menu.sideTitle }),
|
|
386
|
-
menu.sideLinks.map((link) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
387
|
-
NavItemRow,
|
|
388
|
-
{
|
|
389
|
-
link,
|
|
390
|
-
variant: "side",
|
|
391
|
-
...rowProps,
|
|
392
|
-
badge: link.badgeKey ? _optionalChain([badges, 'optionalAccess', _15 => _15[link.badgeKey]]) : void 0
|
|
393
|
-
},
|
|
394
|
-
link.id
|
|
395
|
-
))
|
|
396
|
-
] })
|
|
397
|
-
] }),
|
|
398
|
-
socialRow && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "border-t border-ods-border px-[var(--spacing-system-sf)] pt-[var(--spacing-system-mf)]", children: socialRow })
|
|
399
|
-
]
|
|
400
|
-
}
|
|
401
|
-
)
|
|
402
|
-
) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
403
|
-
columns.map((group) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Column, { group, wide: false, rowProps }, group.id)),
|
|
404
|
-
socialRow && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-[var(--spacing-system-xsf)] border-t border-ods-border px-[var(--spacing-system-sf)] pt-[var(--spacing-system-sf)]", children: socialRow })
|
|
405
|
-
] })
|
|
270
|
+
"aria-label": `Support tickets \u2014 ${live.unreadTotal} unread ${live.unreadTotal === 1 ? "update" : "updates"}`,
|
|
271
|
+
onClick: handleClick,
|
|
272
|
+
disabled,
|
|
273
|
+
className: _chunk3ATAYP36cjs.cn.call(void 0, className)
|
|
406
274
|
}
|
|
407
275
|
);
|
|
408
|
-
}
|
|
409
|
-
NavPanel.displayName = "NavPanel";
|
|
276
|
+
}
|
|
410
277
|
|
|
411
278
|
// src/components/navigation/top-navigation.tsx
|
|
412
279
|
|
|
@@ -484,559 +351,343 @@ function TopNavigation({
|
|
|
484
351
|
);
|
|
485
352
|
}
|
|
486
353
|
|
|
487
|
-
// src/components/navigation/
|
|
354
|
+
// src/components/navigation/header.tsx
|
|
488
355
|
|
|
489
|
-
var
|
|
490
|
-
|
|
491
|
-
var menuIcon = (menu) => menu.iconName ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6NTPY5QAcjs.EntityIcon, { icon: { name: menu.iconName }, size: 20, className: "size-5 shrink-0" }) : null;
|
|
492
|
-
function SiteHeader({
|
|
493
|
-
nav,
|
|
494
|
-
pathname,
|
|
495
|
-
logo,
|
|
496
|
-
logoHref,
|
|
497
|
-
renderLink = defaultRenderSiteNavLink,
|
|
498
|
-
leading,
|
|
499
|
-
actions,
|
|
500
|
-
cta,
|
|
501
|
-
sideActions,
|
|
502
|
-
mingo,
|
|
503
|
-
mobile,
|
|
504
|
-
badges,
|
|
505
|
-
social,
|
|
506
|
-
autoHide = false,
|
|
507
|
-
backgroundClassName,
|
|
508
|
-
className,
|
|
509
|
-
style,
|
|
510
|
-
skipToContentId = "main-content"
|
|
511
|
-
}) {
|
|
356
|
+
var NAV_ITEM_CLASSES = "text-h6 [&_svg]:h-6 [&_svg]:w-6";
|
|
357
|
+
function Header({ config }) {
|
|
512
358
|
const [show, setShow] = _react.useState.call(void 0, true);
|
|
513
359
|
const lastScrollY = _react.useRef.call(void 0, 0);
|
|
514
|
-
const
|
|
515
|
-
const
|
|
516
|
-
const
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
360
|
+
const [openDropdowns, setOpenDropdowns] = _react.useState.call(void 0, {});
|
|
361
|
+
const dropdownRefs = _react.useRef.call(void 0, {});
|
|
362
|
+
const triggerRefs = _react.useRef.call(void 0, {});
|
|
363
|
+
_react.useEffect.call(void 0, () => {
|
|
364
|
+
const handleClickOutside = (event) => {
|
|
365
|
+
const target = event.target;
|
|
366
|
+
if (!target) return;
|
|
367
|
+
const isOutsideAllDropdowns = Object.keys(openDropdowns).every((id) => {
|
|
368
|
+
const dropdown = dropdownRefs.current[id];
|
|
369
|
+
const trigger = triggerRefs.current[id];
|
|
370
|
+
if (!dropdown || !trigger) return true;
|
|
371
|
+
return !dropdown.contains(target) && !trigger.contains(target);
|
|
372
|
+
});
|
|
373
|
+
if (isOutsideAllDropdowns) {
|
|
374
|
+
setOpenDropdowns({});
|
|
375
|
+
}
|
|
376
|
+
};
|
|
377
|
+
const handleEscapeKey = (event) => {
|
|
378
|
+
if (event.key === "Escape") {
|
|
379
|
+
setOpenDropdowns({});
|
|
380
|
+
}
|
|
381
|
+
};
|
|
382
|
+
const hasOpenDropdowns = Object.values(openDropdowns).some(Boolean);
|
|
383
|
+
if (hasOpenDropdowns) {
|
|
384
|
+
document.addEventListener("mousedown", handleClickOutside);
|
|
385
|
+
document.addEventListener("keydown", handleEscapeKey);
|
|
386
|
+
}
|
|
387
|
+
return () => {
|
|
388
|
+
document.removeEventListener("mousedown", handleClickOutside);
|
|
389
|
+
document.removeEventListener("keydown", handleEscapeKey);
|
|
390
|
+
};
|
|
391
|
+
}, [openDropdowns]);
|
|
523
392
|
_react.useEffect.call(void 0, () => {
|
|
524
|
-
|
|
393
|
+
return () => {
|
|
394
|
+
setOpenDropdowns({});
|
|
395
|
+
dropdownRefs.current = {};
|
|
396
|
+
triggerRefs.current = {};
|
|
397
|
+
};
|
|
398
|
+
}, []);
|
|
399
|
+
_react.useEffect.call(void 0, () => {
|
|
400
|
+
if (!config.autoHide) return void 0;
|
|
525
401
|
const handleScroll = () => {
|
|
526
402
|
const currentScrollY = window.scrollY;
|
|
527
403
|
const prevScrollY = lastScrollY.current;
|
|
528
404
|
lastScrollY.current = currentScrollY;
|
|
529
|
-
|
|
530
|
-
|
|
405
|
+
const shouldHide = currentScrollY > prevScrollY && currentScrollY > 50;
|
|
406
|
+
const shouldShow = currentScrollY < prevScrollY || currentScrollY <= 10;
|
|
407
|
+
if (shouldHide) {
|
|
408
|
+
setShow(false);
|
|
409
|
+
} else if (shouldShow) {
|
|
410
|
+
setShow(true);
|
|
411
|
+
}
|
|
531
412
|
};
|
|
532
413
|
window.addEventListener("scroll", handleScroll, { passive: true });
|
|
533
|
-
return () =>
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
if (!menu.href) return null;
|
|
541
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
542
|
-
_chunkDFQYAYBHcjs.Button,
|
|
543
|
-
{
|
|
544
|
-
asChild: true,
|
|
545
|
-
variant: "transparent",
|
|
546
|
-
size: "wrap",
|
|
547
|
-
font: "regular",
|
|
548
|
-
className: _chunk3ATAYP36cjs.cn.call(void 0, TOP_ITEM_CLASS, NAV_FOCUS_CLASS, current && TOP_ITEM_CURRENT_CLASS),
|
|
549
|
-
children: renderLink({
|
|
550
|
-
link: { href: menu.href },
|
|
551
|
-
"aria-current": current ? "page" : void 0,
|
|
552
|
-
children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
553
|
-
menuIcon(menu),
|
|
554
|
-
menu.label
|
|
555
|
-
] })
|
|
556
|
-
})
|
|
557
|
-
}
|
|
558
|
-
) }, menu.id);
|
|
414
|
+
return () => {
|
|
415
|
+
window.removeEventListener("scroll", handleScroll);
|
|
416
|
+
};
|
|
417
|
+
}, [config.autoHide]);
|
|
418
|
+
const renderNavigationItem = (item) => {
|
|
419
|
+
if (item.element) {
|
|
420
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react2.default.Fragment, { children: item.element }, item.id);
|
|
559
421
|
}
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex", !isMegaMenu(menu) && "relative"), children: [
|
|
565
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
422
|
+
if (item.children && item.children.length > 0) {
|
|
423
|
+
const isOpen = openDropdowns[item.id] || false;
|
|
424
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative", children: [
|
|
425
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
566
426
|
_chunkDFQYAYBHcjs.Button,
|
|
567
427
|
{
|
|
568
|
-
|
|
428
|
+
ref: (el) => {
|
|
429
|
+
triggerRefs.current[item.id] = el;
|
|
430
|
+
},
|
|
569
431
|
variant: "transparent",
|
|
570
|
-
|
|
432
|
+
leftIcon: item.icon,
|
|
433
|
+
rightIcon: item.badge,
|
|
434
|
+
onClick: () => {
|
|
435
|
+
setOpenDropdowns((prev) => ({
|
|
436
|
+
[item.id]: !prev[item.id]
|
|
437
|
+
}));
|
|
438
|
+
},
|
|
439
|
+
size: "default",
|
|
571
440
|
font: "regular",
|
|
572
|
-
...getTriggerProps(menu.id),
|
|
573
|
-
"aria-current": current ? "page" : void 0,
|
|
574
441
|
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
442
|
+
// Top-level nav links (Figma 2936-6815): compact h6 label
|
|
443
|
+
// (DM Sans 500, 14/20) with 24px icons — overrides the
|
|
444
|
+
// font="regular" h4 step and the button's 20px svg cap.
|
|
445
|
+
NAV_ITEM_CLASSES,
|
|
446
|
+
item.isActive && "bg-ods-bg-hover",
|
|
447
|
+
// Active items get subtle gray background
|
|
448
|
+
isOpen && "bg-ods-bg-hover",
|
|
449
|
+
// Open dropdowns get gray background
|
|
450
|
+
item.className
|
|
579
451
|
),
|
|
580
|
-
children:
|
|
581
|
-
menuIcon(menu),
|
|
582
|
-
menu.label,
|
|
583
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
584
|
-
_chunkVX4E6YSBcjs.Chevron02DownIcon,
|
|
585
|
-
{
|
|
586
|
-
"aria-hidden": "true",
|
|
587
|
-
className: _chunk3ATAYP36cjs.cn.call(void 0, "!h-4 !w-4 transition-transform duration-150", open && "rotate-180")
|
|
588
|
-
}
|
|
589
|
-
)
|
|
590
|
-
]
|
|
452
|
+
children: item.label
|
|
591
453
|
}
|
|
592
454
|
),
|
|
593
|
-
/* @__PURE__ */ _jsxruntime.
|
|
594
|
-
|
|
595
|
-
{
|
|
596
|
-
...getPanelProps(menu.id),
|
|
597
|
-
menu,
|
|
598
|
-
open,
|
|
599
|
-
motion: open ? megaMotion : void 0,
|
|
600
|
-
handoff: openMegaIndex >= 0,
|
|
601
|
-
renderLink,
|
|
602
|
-
badges,
|
|
603
|
-
social,
|
|
604
|
-
onNavigate: close
|
|
605
|
-
}
|
|
606
|
-
)
|
|
607
|
-
] }, menu.id)
|
|
608
|
-
);
|
|
609
|
-
};
|
|
610
|
-
const primaryCta = typeof nav.primaryCta === "object" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDFQYAYBHcjs.Button, { variant: "accent", href: nav.primaryCta.href, children: nav.primaryCta.label }) : nav.primaryCta === "none" ? null : _nullishCoalesce(cta, () => ( null));
|
|
611
|
-
const hasRight = !!mingo || !!nav.signIn || !!actions || !!primaryCta;
|
|
612
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
613
|
-
"div",
|
|
614
|
-
{
|
|
615
|
-
"data-site-header": "",
|
|
616
|
-
className: "sticky top-0 z-[50] w-full transition-transform duration-300 ease-in-out",
|
|
617
|
-
style: { transform: headerShown ? "translateY(0)" : "translateY(-100%)" },
|
|
618
|
-
children: [
|
|
619
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
620
|
-
_chunkLLRGR4I5cjs.next_link_default,
|
|
455
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
456
|
+
"div",
|
|
621
457
|
{
|
|
622
|
-
|
|
458
|
+
ref: (el) => {
|
|
459
|
+
dropdownRefs.current[item.id] = el;
|
|
460
|
+
},
|
|
461
|
+
inert: !isOpen,
|
|
623
462
|
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
624
|
-
"
|
|
625
|
-
|
|
463
|
+
"absolute left-0 top-full mt-1",
|
|
464
|
+
item.dropdownClassName ? "" : "border border-ods-border bg-ods-card",
|
|
465
|
+
"z-[9999] rounded-lg shadow-xl",
|
|
466
|
+
item.id === "community" ? "min-w-[240px]" : "min-w-[220px]",
|
|
467
|
+
"transition-opacity duration-150",
|
|
468
|
+
isOpen ? "pointer-events-auto visible opacity-100" : "pointer-events-none invisible opacity-0",
|
|
469
|
+
item.dropdownClassName || ""
|
|
626
470
|
),
|
|
627
|
-
children:
|
|
628
|
-
|
|
629
|
-
),
|
|
630
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
631
|
-
TopNavigation,
|
|
632
|
-
{
|
|
633
|
-
className: _chunk3ATAYP36cjs.cn.call(void 0, "relative", className),
|
|
634
|
-
style,
|
|
635
|
-
backgroundClassName,
|
|
636
|
-
centerBreakpoint: "lg",
|
|
637
|
-
size: "big",
|
|
638
|
-
leading: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
639
|
-
leading,
|
|
640
|
-
mobile && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
641
|
-
_chunkGWQEYPYMcjs.HeaderButton,
|
|
642
|
-
{
|
|
643
|
-
className: "border-r border-ods-border lg:hidden",
|
|
644
|
-
onClick: mobile.onToggle,
|
|
645
|
-
isActive: mobile.isOpen,
|
|
646
|
-
"aria-label": mobile.isOpen ? "Close menu" : "Open menu",
|
|
647
|
-
"aria-expanded": mobile.isOpen,
|
|
648
|
-
"aria-controls": mobile.isOpen ? _nullishCoalesce(mobile.controlsId, () => ( MOBILE_NAV_SHEET_ID)) : void 0,
|
|
649
|
-
icon: mobile.isOpen ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVX4E6YSBcjs.XmarkIcon, { className: "h-6 w-6" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVX4E6YSBcjs.Menu01Icon, { className: "h-6 w-6" })
|
|
650
|
-
}
|
|
651
|
-
)
|
|
652
|
-
] }),
|
|
653
|
-
logo: logoHref ? renderLink({
|
|
654
|
-
link: { href: logoHref },
|
|
655
|
-
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
656
|
-
"flex min-w-0 items-center rounded-md transition-opacity duration-200 hover:opacity-80",
|
|
657
|
-
NAV_FOCUS_CLASS
|
|
658
|
-
),
|
|
659
|
-
"aria-label": nav.brand.name,
|
|
660
|
-
children: logo
|
|
661
|
-
}) : logo,
|
|
662
|
-
logoClassName: "shrink pl-[var(--spacing-system-lf)] md:pl-[var(--spacing-system-lf)] lg:pl-[var(--spacing-system-lf)]",
|
|
663
|
-
center: nav.menus.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "nav", { "aria-label": "Main", className: "flex items-center gap-[var(--spacing-system-xxs)]", children: nav.menus.map(renderMenu) }) : void 0,
|
|
664
|
-
centerClassName: "justify-start pl-[var(--spacing-system-xlf)]",
|
|
665
|
-
cta: hasRight ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
666
|
-
mingo && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
667
|
-
MingoAiButton,
|
|
668
|
-
{
|
|
669
|
-
source: mingo.source,
|
|
670
|
-
icon: mingo.icon,
|
|
671
|
-
label: mingo.label,
|
|
672
|
-
shortcutHint: mingo.shortcutHint
|
|
673
|
-
}
|
|
674
|
-
),
|
|
675
|
-
nav.signIn && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden lg:flex", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
471
|
+
children: [
|
|
472
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-2", children: item.children.map((child, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
676
473
|
_chunkDFQYAYBHcjs.Button,
|
|
677
474
|
{
|
|
678
|
-
asChild: true,
|
|
679
475
|
variant: "transparent",
|
|
680
|
-
size: "
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
476
|
+
size: "small-legacy",
|
|
477
|
+
href: child.href,
|
|
478
|
+
leftIcon: child.icon,
|
|
479
|
+
rightIcon: child.badge,
|
|
480
|
+
onClick: () => {
|
|
481
|
+
setOpenDropdowns((prev) => ({ ...prev, [item.id]: false }));
|
|
482
|
+
if (child.onClick) {
|
|
483
|
+
child.onClick();
|
|
484
|
+
}
|
|
485
|
+
},
|
|
486
|
+
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
487
|
+
"flex w-full justify-start",
|
|
488
|
+
// Same caption step as the top-level nav links (designer:
|
|
489
|
+
// dropdowns follow the h6 caption size/weight too). The
|
|
490
|
+
// explicit font-medium beats small-legacy's font-bold via
|
|
491
|
+
// tailwind-merge instead of stylesheet order.
|
|
492
|
+
"font-medium text-h6",
|
|
493
|
+
index < (_nullishCoalesce(_optionalChain([item, 'access', _5 => _5.children, 'optionalAccess', _6 => _6.length]), () => ( 0))) - 1 && "mb-1",
|
|
494
|
+
"text-ods-text-primary",
|
|
495
|
+
// All dropdown items use primary text color
|
|
496
|
+
child.isActive && "bg-ods-bg-hover"
|
|
497
|
+
// Active dropdown items get gray background
|
|
498
|
+
),
|
|
499
|
+
...child.isExternal && { isExternal: true },
|
|
500
|
+
children: child.label
|
|
501
|
+
},
|
|
502
|
+
child.id
|
|
503
|
+
)) }),
|
|
504
|
+
item.dropdownContent && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
505
|
+
item.showDropdownDivider !== false && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mx-2 my-2 h-px bg-ods-border" }),
|
|
506
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "px-2 pb-2", children: item.dropdownContent })
|
|
507
|
+
] })
|
|
508
|
+
]
|
|
691
509
|
}
|
|
692
510
|
)
|
|
693
|
-
]
|
|
511
|
+
] }, item.id);
|
|
694
512
|
}
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
nav,
|
|
716
|
-
onClose,
|
|
717
|
-
pathname,
|
|
718
|
-
logo,
|
|
719
|
-
renderLink = defaultRenderSiteNavLink,
|
|
720
|
-
cta,
|
|
721
|
-
actions,
|
|
722
|
-
askAI,
|
|
723
|
-
extraMenus,
|
|
724
|
-
badges,
|
|
725
|
-
social,
|
|
726
|
-
backgroundClassName
|
|
727
|
-
}) {
|
|
728
|
-
const sheetRef = _react.useRef.call(void 0, null);
|
|
729
|
-
const menus = [..._nullishCoalesce(nav.mobileMenus, () => ( nav.menus)), ..._nullishCoalesce(extraMenus, () => ( []))];
|
|
730
|
-
_overlays.usePreventScroll.call(void 0, );
|
|
731
|
-
_chunkWCVZCGK5cjs.useFocusTrap.call(void 0, sheetRef, true, { onEscape: onClose });
|
|
732
|
-
const [openGroups, setOpenGroups] = _react.useState.call(void 0, () => {
|
|
733
|
-
const active = _chunkWCVZCGK5cjs.resolveActiveSection.call(void 0, menus, pathname);
|
|
734
|
-
return active ? { [active]: true } : {};
|
|
735
|
-
});
|
|
736
|
-
const primaryCta = typeof nav.primaryCta === "object" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDFQYAYBHcjs.Button, { variant: "accent", href: nav.primaryCta.href, onClick: onClose, className: "w-full", children: nav.primaryCta.label }) : nav.primaryCta === "none" ? null : _nullishCoalesce(cta, () => ( null));
|
|
737
|
-
const hasFooter = !!actions || !!primaryCta || !!nav.signIn;
|
|
738
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
739
|
-
"div",
|
|
740
|
-
{
|
|
741
|
-
ref: sheetRef,
|
|
742
|
-
id: MOBILE_NAV_SHEET_ID,
|
|
743
|
-
role: "dialog",
|
|
744
|
-
"aria-modal": "true",
|
|
745
|
-
"aria-label": "Navigation menu",
|
|
746
|
-
tabIndex: -1,
|
|
747
|
-
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
748
|
-
"fixed inset-0 z-[9999] flex h-[100svh] flex-col text-ods-text-primary outline-none",
|
|
749
|
-
_nullishCoalesce(backgroundClassName, () => ( "bg-ods-bg"))
|
|
750
|
-
),
|
|
751
|
-
children: [
|
|
752
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-14 shrink-0 items-center justify-between border-b border-ods-border pl-5 pr-[var(--spacing-system-xsf)]", children: [
|
|
753
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex min-w-0 items-center", children: logo }),
|
|
754
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
755
|
-
_chunkDFQYAYBHcjs.Button,
|
|
756
|
-
{
|
|
757
|
-
type: "button",
|
|
758
|
-
variant: "transparent",
|
|
759
|
-
size: "icon",
|
|
760
|
-
"aria-label": "Close menu",
|
|
761
|
-
onClick: onClose,
|
|
762
|
-
className: _chunk3ATAYP36cjs.cn.call(void 0, "h-11 w-11 shrink-0 md:h-11 md:w-11", NAV_FOCUS_CLASS),
|
|
763
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVX4E6YSBcjs.XmarkIcon, { "aria-hidden": "true", className: "!h-6 !w-6" })
|
|
764
|
-
}
|
|
765
|
-
)
|
|
766
|
-
] }),
|
|
767
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-h-0 flex-1 overflow-y-auto overflow-x-hidden overscroll-contain px-5", children: [
|
|
768
|
-
askAI && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
769
|
-
MingoAiButton,
|
|
770
|
-
{
|
|
771
|
-
variant: "field",
|
|
772
|
-
source: askAI.source,
|
|
773
|
-
icon: askAI.icon,
|
|
774
|
-
label: askAI.label,
|
|
775
|
-
onClick: onClose
|
|
776
|
-
}
|
|
513
|
+
if (item.href || item.onClick) {
|
|
514
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
515
|
+
_chunkDFQYAYBHcjs.Button,
|
|
516
|
+
{
|
|
517
|
+
variant: "transparent",
|
|
518
|
+
href: item.href,
|
|
519
|
+
onClick: item.onClick,
|
|
520
|
+
leftIcon: item.icon,
|
|
521
|
+
rightIcon: item.badge,
|
|
522
|
+
size: "default",
|
|
523
|
+
font: "regular",
|
|
524
|
+
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
525
|
+
NAV_ITEM_CLASSES,
|
|
526
|
+
"hover:bg-ods-bg-hover focus:bg-ods-bg-hover",
|
|
527
|
+
"whitespace-nowrap",
|
|
528
|
+
"text-ods-text-primary",
|
|
529
|
+
// All items use primary text color
|
|
530
|
+
item.isActive && "bg-ods-bg-hover",
|
|
531
|
+
// Active items get subtle gray background
|
|
532
|
+
item.className
|
|
777
533
|
),
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
link: { href: menu.href },
|
|
784
|
-
className: _chunk3ATAYP36cjs.cn.call(void 0, GROUP_ROW_CLASS, NAV_FOCUS_CLASS),
|
|
785
|
-
onClick: onClose,
|
|
786
|
-
children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
787
|
-
menu.label,
|
|
788
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVX4E6YSBcjs.Chevron02RightIcon, { "aria-hidden": "true", className: "h-5 w-5 shrink-0 text-ods-text-muted" })
|
|
789
|
-
] })
|
|
790
|
-
}) }, menu.id);
|
|
791
|
-
}
|
|
792
|
-
const open = !!openGroups[menu.id];
|
|
793
|
-
const listId = `${MOBILE_NAV_SHEET_ID}-${menu.id}`;
|
|
794
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "border-b border-ods-border", children: [
|
|
795
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
796
|
-
_chunkDFQYAYBHcjs.Button,
|
|
797
|
-
{
|
|
798
|
-
type: "button",
|
|
799
|
-
variant: "glyph",
|
|
800
|
-
size: "wrap",
|
|
801
|
-
font: "regular",
|
|
802
|
-
"aria-expanded": open,
|
|
803
|
-
"aria-controls": open ? listId : void 0,
|
|
804
|
-
onClick: () => setOpenGroups((prev) => ({ ...prev, [menu.id]: !prev[menu.id] })),
|
|
805
|
-
className: _chunk3ATAYP36cjs.cn.call(void 0, GROUP_ROW_CLASS, NAV_FOCUS_CLASS),
|
|
806
|
-
children: [
|
|
807
|
-
menu.label,
|
|
808
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
809
|
-
_chunkVX4E6YSBcjs.Chevron02DownIcon,
|
|
810
|
-
{
|
|
811
|
-
"aria-hidden": "true",
|
|
812
|
-
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
813
|
-
"h-5 w-5 shrink-0 text-ods-text-muted transition-transform duration-150",
|
|
814
|
-
open && "rotate-180"
|
|
815
|
-
)
|
|
816
|
-
}
|
|
817
|
-
)
|
|
818
|
-
]
|
|
819
|
-
}
|
|
820
|
-
),
|
|
821
|
-
open && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { id: listId, className: "flex flex-col pb-[var(--spacing-system-sf)]", children: [
|
|
822
|
-
links.map((link) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
823
|
-
NavItemRow,
|
|
824
|
-
{
|
|
825
|
-
link,
|
|
826
|
-
variant: "sheet",
|
|
827
|
-
renderLink,
|
|
828
|
-
badge: link.badgeKey ? _optionalChain([badges, 'optionalAccess', _22 => _22[link.badgeKey]]) : void 0,
|
|
829
|
-
onNavigate: onClose
|
|
830
|
-
},
|
|
831
|
-
link.id
|
|
832
|
-
)),
|
|
833
|
-
menu.showSocial && social && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "pt-[var(--spacing-system-xsf)]", children: social })
|
|
834
|
-
] })
|
|
835
|
-
] }, menu.id);
|
|
836
|
-
}) })
|
|
837
|
-
] }),
|
|
838
|
-
hasFooter && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex shrink-0 flex-col gap-[var(--spacing-system-xxs)] border-t border-ods-border px-5 pb-[max(1.75rem,env(safe-area-inset-bottom))] pt-[var(--spacing-system-mf)] [&_a]:w-full [&_button]:w-full", children: [
|
|
839
|
-
actions,
|
|
840
|
-
primaryCta,
|
|
841
|
-
nav.signIn && renderLink({
|
|
842
|
-
link: nav.signIn,
|
|
843
|
-
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
844
|
-
"flex h-12 items-center justify-center rounded-md text-ods-text-primary text-h4",
|
|
845
|
-
NAV_FOCUS_CLASS
|
|
846
|
-
),
|
|
847
|
-
onClick: onClose,
|
|
848
|
-
children: nav.signIn.label
|
|
849
|
-
})
|
|
850
|
-
] })
|
|
851
|
-
]
|
|
534
|
+
...item.isExternal && { isExternal: true },
|
|
535
|
+
children: item.label
|
|
536
|
+
},
|
|
537
|
+
item.id
|
|
538
|
+
);
|
|
852
539
|
}
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
}
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
540
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
541
|
+
_chunkDFQYAYBHcjs.Button,
|
|
542
|
+
{
|
|
543
|
+
variant: "transparent",
|
|
544
|
+
onClick: item.onClick,
|
|
545
|
+
leftIcon: item.icon,
|
|
546
|
+
rightIcon: item.badge,
|
|
547
|
+
size: "default",
|
|
548
|
+
font: "regular",
|
|
549
|
+
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
550
|
+
NAV_ITEM_CLASSES,
|
|
551
|
+
"hover:bg-ods-bg-hover focus:bg-ods-bg-hover",
|
|
552
|
+
"whitespace-nowrap",
|
|
553
|
+
"text-ods-text-primary",
|
|
554
|
+
// All items use primary text color
|
|
555
|
+
item.isActive && "bg-ods-bg-hover",
|
|
556
|
+
// Active items get gray background
|
|
557
|
+
item.className
|
|
558
|
+
),
|
|
559
|
+
children: item.label
|
|
560
|
+
},
|
|
561
|
+
item.id
|
|
562
|
+
);
|
|
563
|
+
};
|
|
564
|
+
const headerShown = !config.autoHide || show;
|
|
565
|
+
const hasNav = !!config.navigation && config.navigation.items.length > 0;
|
|
566
|
+
const hasCta = !!_optionalChain([config, 'access', _7 => _7.actions, 'optionalAccess', _8 => _8.right, 'optionalAccess', _9 => _9.length]) || !!(_optionalChain([config, 'access', _10 => _10.actions, 'optionalAccess', _11 => _11.persistent]) && config.actions.persistent.length > 0);
|
|
567
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
878
568
|
"div",
|
|
879
569
|
{
|
|
880
|
-
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
children:
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
570
|
+
className: _chunk3ATAYP36cjs.cn.call(void 0, "sticky top-0 z-[50] w-full transition-transform duration-300 ease-in-out"),
|
|
571
|
+
style: {
|
|
572
|
+
transform: !headerShown ? "translateY(-100%)" : "translateY(0)"
|
|
573
|
+
},
|
|
574
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
575
|
+
TopNavigation,
|
|
576
|
+
{
|
|
577
|
+
className: _chunk3ATAYP36cjs.cn.call(void 0, "relative", config.className),
|
|
578
|
+
style: config.style,
|
|
579
|
+
backgroundClassName: config.backgroundColor,
|
|
580
|
+
centerBreakpoint: "lg",
|
|
581
|
+
size: "big",
|
|
582
|
+
leading: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
583
|
+
!!_optionalChain([config, 'access', _12 => _12.actions, 'optionalAccess', _13 => _13.left, 'optionalAccess', _14 => _14.length]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-full items-center border-r border-ods-border", children: config.actions.left }),
|
|
584
|
+
_optionalChain([config, 'access', _15 => _15.mobile, 'optionalAccess', _16 => _16.enabled]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
585
|
+
_chunkVESKITRQcjs.HeaderButton,
|
|
586
|
+
{
|
|
587
|
+
className: "border-r border-ods-border lg:hidden",
|
|
588
|
+
onClick: () => {
|
|
589
|
+
_optionalChain([config, 'access', _17 => _17.mobile, 'optionalAccess', _18 => _18.onToggle, 'optionalCall', _19 => _19()]);
|
|
590
|
+
},
|
|
591
|
+
isActive: _nullishCoalesce(_optionalChain([config, 'access', _20 => _20.mobile, 'optionalAccess', _21 => _21.isOpen]), () => ( false)),
|
|
592
|
+
"aria-label": _optionalChain([config, 'access', _22 => _22.mobile, 'optionalAccess', _23 => _23.isOpen]) ? "Close menu" : "Open menu",
|
|
593
|
+
"aria-expanded": _nullishCoalesce(_optionalChain([config, 'access', _24 => _24.mobile, 'optionalAccess', _25 => _25.isOpen]), () => ( false)),
|
|
594
|
+
"aria-controls": _optionalChain([config, 'access', _26 => _26.mobile, 'optionalAccess', _27 => _27.isOpen]) ? MOBILE_NAV_PANEL_ID : void 0,
|
|
595
|
+
icon: _optionalChain([config, 'access', _28 => _28.mobile, 'optionalAccess', _29 => _29.isOpen]) ? _optionalChain([config, 'access', _30 => _30.mobile, 'optionalAccess', _31 => _31.closeIcon]) || /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN3COXDBHcjs.XmarkIcon, { className: "h-6 w-6" }) : _optionalChain([config, 'access', _32 => _32.mobile, 'optionalAccess', _33 => _33.menuIcon]) || /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN3COXDBHcjs.Menu01Icon, { className: "h-6 w-6" })
|
|
596
|
+
}
|
|
597
|
+
)
|
|
598
|
+
] }),
|
|
599
|
+
logo: config.logo.href ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLRGR4I5cjs.next_link_default, { href: config.logo.href, className: "transition-opacity duration-200 hover:opacity-80", children: config.logo.element }) : config.logo.element,
|
|
600
|
+
logoClassName: "pl-[var(--spacing-system-lf)] md:pl-[var(--spacing-system-lf)] lg:pl-[var(--spacing-system-lf)]",
|
|
601
|
+
center: hasNav ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
602
|
+
"nav",
|
|
888
603
|
{
|
|
889
|
-
type: "button",
|
|
890
|
-
variant: "glyph",
|
|
891
|
-
size: "wrap",
|
|
892
|
-
font: "regular",
|
|
893
|
-
"aria-expanded": open,
|
|
894
|
-
"aria-controls": listId,
|
|
895
|
-
onClick: () => setOpen((prev) => !prev),
|
|
896
604
|
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
897
|
-
"flex
|
|
898
|
-
|
|
899
|
-
|
|
605
|
+
"flex items-center gap-2",
|
|
606
|
+
// True centering relative to the bar (not the leftover flex
|
|
607
|
+
// space) — same treatment the pre-unification header had.
|
|
608
|
+
_optionalChain([config, 'access', _34 => _34.navigation, 'optionalAccess', _35 => _35.position]) === "center" && "absolute left-1/2 -translate-x-1/2"
|
|
900
609
|
),
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
_chunkVX4E6YSBcjs.Chevron02DownIcon,
|
|
905
|
-
{
|
|
906
|
-
"aria-hidden": "true",
|
|
907
|
-
className: _chunk3ATAYP36cjs.cn.call(void 0, "h-5 w-5 shrink-0 transition-transform duration-150", open && "rotate-180")
|
|
908
|
-
}
|
|
909
|
-
)
|
|
910
|
-
]
|
|
610
|
+
role: "navigation",
|
|
611
|
+
"aria-label": "Main navigation",
|
|
612
|
+
children: _optionalChain([config, 'access', _36 => _36.navigation, 'optionalAccess', _37 => _37.items, 'access', _38 => _38.map, 'call', _39 => _39(renderNavigationItem)])
|
|
911
613
|
}
|
|
912
|
-
)
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
{
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
614
|
+
) : void 0,
|
|
615
|
+
centerClassName: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
616
|
+
_optionalChain([config, 'access', _40 => _40.navigation, 'optionalAccess', _41 => _41.position]) === "left" && "justify-start",
|
|
617
|
+
_optionalChain([config, 'access', _42 => _42.navigation, 'optionalAccess', _43 => _43.position]) === "right" && "justify-end pr-[var(--spacing-system-m)]"
|
|
618
|
+
),
|
|
619
|
+
cta: hasCta ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
620
|
+
!!_optionalChain([config, 'access', _44 => _44.actions, 'optionalAccess', _45 => _45.right, 'optionalAccess', _46 => _46.length]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden items-center gap-3 lg:flex", children: config.actions.right }),
|
|
621
|
+
_optionalChain([config, 'access', _47 => _47.actions, 'optionalAccess', _48 => _48.persistent]) && config.actions.persistent.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center", children: config.actions.persistent })
|
|
622
|
+
] }) : void 0,
|
|
623
|
+
ctaClassName: "gap-3",
|
|
624
|
+
sideActions: config.tickets || _optionalChain([config, 'access', _49 => _49.mingo, 'optionalAccess', _50 => _50.enabled]) ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
625
|
+
config.tickets && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
626
|
+
TicketAlertsButton,
|
|
627
|
+
{
|
|
628
|
+
href: config.tickets.href,
|
|
629
|
+
onNavigate: config.tickets.onClick,
|
|
630
|
+
className: "border-l border-ods-border"
|
|
631
|
+
}
|
|
922
632
|
),
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
633
|
+
_optionalChain([config, 'access', _51 => _51.mingo, 'optionalAccess', _52 => _52.enabled]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
634
|
+
MingoAiButton,
|
|
635
|
+
{
|
|
636
|
+
source: config.mingo.source,
|
|
637
|
+
icon: config.mingo.icon,
|
|
638
|
+
label: config.mingo.label,
|
|
639
|
+
className: config.mingo.className
|
|
640
|
+
}
|
|
641
|
+
)
|
|
642
|
+
] }) : void 0
|
|
643
|
+
}
|
|
644
|
+
)
|
|
927
645
|
}
|
|
928
646
|
);
|
|
929
647
|
}
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
}) {
|
|
941
|
-
const band = nav.closingBand;
|
|
942
|
-
const bandPrimary = typeof nav.primaryCta === "object" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDFQYAYBHcjs.Button, { variant: "accent", href: nav.primaryCta.href, children: nav.primaryCta.label }) : nav.primaryCta === "none" ? null : _nullishCoalesce(cta, () => ( null));
|
|
943
|
-
const columns = nav.footerColumns;
|
|
944
|
-
const accordion = columns.length > ACCORDION_OVER;
|
|
945
|
-
const socialRow = _nullishCoalesce(social, () => ( (nav.brand.social.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
946
|
-
_chunkGWQEYPYMcjs.SocialIconRow,
|
|
947
|
-
{
|
|
948
|
-
compact: true,
|
|
949
|
-
links: nav.brand.social.map((link) => ({
|
|
950
|
-
platform: _nullishCoalesce(link.iconName, () => ( link.id)),
|
|
951
|
-
href: link.href,
|
|
952
|
-
label: link.label
|
|
953
|
-
}))
|
|
954
|
-
}
|
|
955
|
-
) : null)));
|
|
956
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
957
|
-
"footer",
|
|
648
|
+
|
|
649
|
+
// src/components/navigation/header-skeleton.tsx
|
|
650
|
+
|
|
651
|
+
function HeaderSkeleton({ config }) {
|
|
652
|
+
const showNavigation = _optionalChain([config, 'optionalAccess', _53 => _53.navigation]) && config.navigation.items.length > 0;
|
|
653
|
+
const showActions = _optionalChain([config, 'optionalAccess', _54 => _54.actions, 'optionalAccess', _55 => _55.right]) && config.actions.right.length > 0;
|
|
654
|
+
const showMobileMenu = _optionalChain([config, 'optionalAccess', _56 => _56.mobile, 'optionalAccess', _57 => _57.enabled]);
|
|
655
|
+
const showLeftActions = !!_optionalChain([config, 'optionalAccess', _58 => _58.actions, 'optionalAccess', _59 => _59.left]);
|
|
656
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "sticky top-0 z-[50] w-full", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
657
|
+
"header",
|
|
958
658
|
{
|
|
959
659
|
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
960
|
-
"
|
|
961
|
-
|
|
660
|
+
"flex h-[72px] w-full items-center border-b border-t border-ods-border md:border-t-0",
|
|
661
|
+
_optionalChain([config, 'optionalAccess', _60 => _60.backgroundColor]) || "bg-ods-card",
|
|
662
|
+
_optionalChain([config, 'optionalAccess', _61 => _61.className])
|
|
962
663
|
),
|
|
963
664
|
children: [
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex shrink-0 flex-col gap-[var(--spacing-system-sf)] md:flex-row", children: [
|
|
970
|
-
bandPrimary,
|
|
971
|
-
band.secondary && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDFQYAYBHcjs.Button, { variant: "outline", href: band.secondary.href, openInNewTab: band.secondary.external, children: navLinkLabel(band.secondary) })
|
|
972
|
-
] })
|
|
665
|
+
showLeftActions && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-full w-[72px] items-center justify-center border-r border-ods-border", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-6 w-6 animate-pulse rounded bg-ods-border" }) }),
|
|
666
|
+
showMobileMenu && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-full w-[72px] items-center justify-center border-r border-ods-border lg:hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-6 w-6 animate-pulse rounded bg-ods-border" }) }),
|
|
667
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full flex-1 items-center gap-2 p-[var(--spacing-system-m)] md:pl-[var(--spacing-system-l)] lg:flex-none lg:pl-[var(--spacing-system-xxl)]", children: [
|
|
668
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-6 w-6 animate-pulse rounded bg-ods-border" }),
|
|
669
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-5 w-24 animate-pulse rounded bg-ods-border" })
|
|
973
670
|
] }),
|
|
974
|
-
/* @__PURE__ */ _jsxruntime.
|
|
975
|
-
/* @__PURE__ */ _jsxruntime.
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
socialRow,
|
|
982
|
-
nav.brand.statusUrl && renderLink({
|
|
983
|
-
link: { href: nav.brand.statusUrl, external: true },
|
|
984
|
-
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
985
|
-
"inline-flex items-center gap-[var(--spacing-system-xsf)] text-ods-text-secondary transition-colors text-h6 hover:text-ods-text-primary",
|
|
986
|
-
NAV_FOCUS_CLASS
|
|
987
|
-
),
|
|
988
|
-
children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
989
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", className: "h-2 w-2 rounded-full bg-ods-success" }),
|
|
990
|
-
"System status"
|
|
991
|
-
] })
|
|
992
|
-
}),
|
|
993
|
-
brandExtra
|
|
994
|
-
] }),
|
|
995
|
-
columns.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
996
|
-
"nav",
|
|
997
|
-
{
|
|
998
|
-
"aria-label": "Footer",
|
|
999
|
-
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
1000
|
-
"grid min-w-0 flex-1 md:gap-7",
|
|
1001
|
-
accordion ? "grid-cols-1" : "grid-cols-2 gap-7",
|
|
1002
|
-
DESKTOP_COLUMNS[Math.min(columns.length, 6)]
|
|
1003
|
-
),
|
|
1004
|
-
children: columns.map((group) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FooterColumn, { group, accordion, renderLink }, group.id))
|
|
1005
|
-
}
|
|
1006
|
-
)
|
|
1007
|
-
] }),
|
|
1008
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1009
|
-
"div",
|
|
1010
|
-
{
|
|
1011
|
-
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
1012
|
-
"flex flex-col gap-[var(--spacing-system-xxs)] border-t border-ods-border pb-[var(--spacing-system-xlf)] pt-[var(--spacing-system-lf)] text-ods-text-muted text-h6 md:flex-row md:items-center md:justify-between md:gap-[var(--spacing-system-lf)]"
|
|
1013
|
-
),
|
|
1014
|
-
children: [
|
|
1015
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { children: [
|
|
1016
|
-
"\xA9 ",
|
|
1017
|
-
year,
|
|
1018
|
-
" ",
|
|
1019
|
-
nav.legal.company
|
|
1020
|
-
] }),
|
|
1021
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex flex-wrap items-center gap-x-[var(--spacing-system-mf)] gap-y-[var(--spacing-system-xxs)]", children: [
|
|
1022
|
-
nav.legal.notes.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: nav.legal.notes.join(" \xB7 ") }),
|
|
1023
|
-
nav.legal.links.map((link) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1024
|
-
NavItemRow,
|
|
1025
|
-
{
|
|
1026
|
-
link,
|
|
1027
|
-
variant: "label",
|
|
1028
|
-
renderLink,
|
|
1029
|
-
className: "text-ods-accent hover:text-ods-accent hover:underline"
|
|
1030
|
-
},
|
|
1031
|
-
link.id
|
|
1032
|
-
))
|
|
1033
|
-
] })
|
|
1034
|
-
]
|
|
1035
|
-
}
|
|
1036
|
-
)
|
|
671
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden h-full min-w-0 flex-1 items-center justify-center gap-2 lg:flex", children: showNavigation && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
672
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-8 w-20 animate-pulse rounded bg-ods-border" }),
|
|
673
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-8 w-28 animate-pulse rounded bg-ods-border" }),
|
|
674
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-8 w-24 animate-pulse rounded bg-ods-border" })
|
|
675
|
+
] }) }),
|
|
676
|
+
showActions && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden h-full items-center px-[var(--spacing-system-m)] lg:flex", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-8 w-24 animate-pulse rounded bg-ods-border" }) }),
|
|
677
|
+
_optionalChain([config, 'optionalAccess', _62 => _62.mingo, 'optionalAccess', _63 => _63.enabled]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-full items-center border-l border-ods-border px-[var(--spacing-system-l)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-8 w-8 animate-pulse rounded bg-ods-border md:w-28" }) })
|
|
1037
678
|
]
|
|
1038
679
|
}
|
|
1039
|
-
);
|
|
680
|
+
) });
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
// src/components/navigation/client-only-header.tsx
|
|
684
|
+
|
|
685
|
+
function ClientOnlyHeader({ config, skeleton }) {
|
|
686
|
+
const isClient = _chunk3MX5S4CFcjs.useIsHydrated.call(void 0, );
|
|
687
|
+
if (!isClient) {
|
|
688
|
+
return skeleton || /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HeaderSkeleton, { config });
|
|
689
|
+
}
|
|
690
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Header, { config });
|
|
1040
691
|
}
|
|
1041
692
|
|
|
1042
693
|
// src/components/navigation/sliding-sidebar.tsx
|
|
@@ -1046,12 +697,12 @@ var _framermotion = require('framer-motion');
|
|
|
1046
697
|
|
|
1047
698
|
function SlidingSidebar({ config }) {
|
|
1048
699
|
const [expandedItems, setExpandedItems] = _react.useState.call(void 0, /* @__PURE__ */ new Set());
|
|
1049
|
-
const mounted =
|
|
1050
|
-
const headerHeight =
|
|
700
|
+
const mounted = _chunk3MX5S4CFcjs.useIsHydrated.call(void 0, );
|
|
701
|
+
const headerHeight = _chunkTYWLNCNHcjs.useHeaderHeight.call(void 0, );
|
|
1051
702
|
const asideRef = _react.useRef.call(void 0, null);
|
|
1052
703
|
const prefersReducedMotion = _framermotion.useReducedMotion.call(void 0, );
|
|
1053
704
|
_overlays.usePreventScroll.call(void 0, { isDisabled: !config.isOpen });
|
|
1054
|
-
|
|
705
|
+
_chunk2QEUFXNScjs.useFocusTrap.call(void 0, asideRef, config.isOpen, { onEscape: config.onClose, contain: false });
|
|
1055
706
|
const toggleExpanded = (itemId) => {
|
|
1056
707
|
const newExpanded = new Set(expandedItems);
|
|
1057
708
|
if (newExpanded.has(itemId)) {
|
|
@@ -1124,7 +775,7 @@ function SlidingSidebar({ config }) {
|
|
|
1124
775
|
variant: "transparent",
|
|
1125
776
|
size: "default",
|
|
1126
777
|
onClick: () => {
|
|
1127
|
-
_optionalChain([item, 'access',
|
|
778
|
+
_optionalChain([item, 'access', _64 => _64.onClick, 'optionalCall', _65 => _65()]);
|
|
1128
779
|
config.onClose();
|
|
1129
780
|
},
|
|
1130
781
|
leftIcon: item.icon,
|
|
@@ -1147,7 +798,7 @@ function SlidingSidebar({ config }) {
|
|
|
1147
798
|
variant: "transparent",
|
|
1148
799
|
size: "default",
|
|
1149
800
|
onClick: () => {
|
|
1150
|
-
_optionalChain([item, 'access',
|
|
801
|
+
_optionalChain([item, 'access', _66 => _66.onClick, 'optionalCall', _67 => _67()]);
|
|
1151
802
|
config.onClose();
|
|
1152
803
|
},
|
|
1153
804
|
leftIcon: item.icon,
|
|
@@ -1178,7 +829,7 @@ function SlidingSidebar({ config }) {
|
|
|
1178
829
|
duration: 0.3,
|
|
1179
830
|
ease: [0.4, 0, 0.2, 1]
|
|
1180
831
|
},
|
|
1181
|
-
className: _chunk3ATAYP36cjs.cn.call(void 0, "fixed inset-0 z-[45]",
|
|
832
|
+
className: _chunk3ATAYP36cjs.cn.call(void 0, "fixed inset-0 z-[45]", _chunk3MX5S4CFcjs.OVERLAY_BACKDROP_CLASS),
|
|
1182
833
|
onClick: () => config.onClose()
|
|
1183
834
|
}
|
|
1184
835
|
) }),
|
|
@@ -1226,7 +877,7 @@ function SlidingSidebar({ config }) {
|
|
|
1226
877
|
function NavigationSidebarHeader({ minimized }) {
|
|
1227
878
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-14 items-center justify-start border-b border-ods-border p-[var(--spacing-system-m)]", children: [
|
|
1228
879
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1229
|
-
|
|
880
|
+
_chunkQZVSJF2Kcjs.OpenFrameLogo,
|
|
1230
881
|
{
|
|
1231
882
|
className: "h-6 w-6",
|
|
1232
883
|
upperPathColor: "var(--color-text-primary)",
|
|
@@ -1241,7 +892,7 @@ function NavigationSidebarHeader({ minimized }) {
|
|
|
1241
892
|
minimized ? "ml-0 opacity-0" : "ml-[var(--spacing-system-xs)] opacity-100"
|
|
1242
893
|
),
|
|
1243
894
|
"aria-hidden": minimized,
|
|
1244
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
895
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkX72J4ACLcjs.OpenFrameText, { textColor: "var(--color-text-primary)" })
|
|
1245
896
|
}
|
|
1246
897
|
)
|
|
1247
898
|
] });
|
|
@@ -1254,7 +905,7 @@ function NavigationSidebarHeader({ minimized }) {
|
|
|
1254
905
|
|
|
1255
906
|
function NavigationItemBadge({ label, compact = false, className, ...rest }) {
|
|
1256
907
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1257
|
-
|
|
908
|
+
_chunkMMOODW57cjs.Tag,
|
|
1258
909
|
{
|
|
1259
910
|
as: "span",
|
|
1260
911
|
label,
|
|
@@ -1319,7 +970,7 @@ var NavigationSidebarItemButton = _react.memo.call(void 0, function NavigationSi
|
|
|
1319
970
|
_react.cloneElement.call(void 0, item.icon, {
|
|
1320
971
|
color: isActive && !disabled ? "text-ods-accent" : "text-ods-text-secondary"
|
|
1321
972
|
}),
|
|
1322
|
-
hasUnread && !showLabel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
973
|
+
hasUnread && !showLabel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVESKITRQcjs.UnreadDot, { size: "fixed" })
|
|
1323
974
|
] }),
|
|
1324
975
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1325
976
|
"span",
|
|
@@ -1372,7 +1023,7 @@ function NavigationSidebarToggle({ minimized, showLabel, onToggle }) {
|
|
|
1372
1023
|
title: minimized ? "Hide Menu" : void 0,
|
|
1373
1024
|
"aria-label": "Hide Menu",
|
|
1374
1025
|
children: [
|
|
1375
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-shrink-0 items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1026
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-shrink-0 items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN3COXDBHcjs.Chevrons03LeftIcon, { className: "h-6 w-6 rotate-180 text-ods-text-secondary transition-transform duration-300 @[140px]/of-nav-sidebar:rotate-0" }) }),
|
|
1376
1027
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1377
1028
|
"span",
|
|
1378
1029
|
{
|
|
@@ -1410,17 +1061,17 @@ var SIDEBAR_GEOMETRY_CLASSES = [
|
|
|
1410
1061
|
var SIDEBAR_TABLET_WIDTH = { rail: "md:w-14", overlay: "md:w-56" };
|
|
1411
1062
|
var isModifiedClick = (event) => !!event && (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || event.button !== 0);
|
|
1412
1063
|
function NavigationSidebar({ config, disabled = false, pushOnTablet = false }) {
|
|
1413
|
-
const isMdUp = _nullishCoalesce(
|
|
1414
|
-
const isLgUp = _nullishCoalesce(
|
|
1064
|
+
const isMdUp = _nullishCoalesce(_chunkRKV5B7EUcjs.useMdUp.call(void 0, ), () => ( false));
|
|
1065
|
+
const isLgUp = _nullishCoalesce(_chunkRKV5B7EUcjs.useLgUp.call(void 0, ), () => ( false));
|
|
1415
1066
|
const isTablet = isMdUp && !isLgUp;
|
|
1416
|
-
const [desktopMinimized, setDesktopMinimized] =
|
|
1067
|
+
const [desktopMinimized, setDesktopMinimized] = _chunk2QEUFXNScjs.useLocalStorage.call(void 0, STORAGE_KEY, _nullishCoalesce(config.minimized, () => ( false)));
|
|
1417
1068
|
const [tabletMinimized, setTabletMinimized] = _react.useState.call(void 0, true);
|
|
1418
1069
|
const [tabletFor, setTabletFor] = _react.useState.call(void 0, isTablet);
|
|
1419
1070
|
if (tabletFor !== isTablet) {
|
|
1420
1071
|
setTabletFor(isTablet);
|
|
1421
1072
|
if (isTablet) setTabletMinimized(true);
|
|
1422
1073
|
}
|
|
1423
|
-
const hydrated =
|
|
1074
|
+
const hydrated = _chunk3MX5S4CFcjs.useIsHydrated.call(void 0, );
|
|
1424
1075
|
const minimized = hydrated ? isTablet ? tabletMinimized : desktopMinimized : _nullishCoalesce(config.minimized, () => ( false));
|
|
1425
1076
|
const [transitionsEnabled, setTransitionsEnabled] = _react.useState.call(void 0, false);
|
|
1426
1077
|
const isOverlayOpen = isTablet && !minimized;
|
|
@@ -1431,7 +1082,7 @@ function NavigationSidebar({ config, disabled = false, pushOnTablet = false }) {
|
|
|
1431
1082
|
} else {
|
|
1432
1083
|
setDesktopMinimized((prev) => !prev);
|
|
1433
1084
|
}
|
|
1434
|
-
_optionalChain([config, 'access',
|
|
1085
|
+
_optionalChain([config, 'access', _68 => _68.onToggleMinimized, 'optionalCall', _69 => _69()]);
|
|
1435
1086
|
}, [isTablet, setDesktopMinimized, config]);
|
|
1436
1087
|
const closeOverlay = _react.useCallback.call(void 0, () => {
|
|
1437
1088
|
setTabletMinimized(true);
|
|
@@ -1445,7 +1096,7 @@ function NavigationSidebar({ config, disabled = false, pushOnTablet = false }) {
|
|
|
1445
1096
|
return () => document.removeEventListener("keydown", handleKeyDown);
|
|
1446
1097
|
}, [isOverlayOpen, closeOverlay]);
|
|
1447
1098
|
const [pendingItemId, setPendingItemId] = _react.useState.call(void 0, null);
|
|
1448
|
-
const committedActiveId = _react.useMemo.call(void 0, () => _nullishCoalesce(_optionalChain([config, 'access',
|
|
1099
|
+
const committedActiveId = _react.useMemo.call(void 0, () => _nullishCoalesce(_optionalChain([config, 'access', _70 => _70.items, 'access', _71 => _71.find, 'call', _72 => _72((item) => item.isActive), 'optionalAccess', _73 => _73.id]), () => ( null)), [config.items]);
|
|
1449
1100
|
const [pendingClearedFor, setPendingClearedFor] = _react.useState.call(void 0, committedActiveId);
|
|
1450
1101
|
if (pendingClearedFor !== committedActiveId) {
|
|
1451
1102
|
setPendingClearedFor(committedActiveId);
|
|
@@ -1453,7 +1104,7 @@ function NavigationSidebar({ config, disabled = false, pushOnTablet = false }) {
|
|
|
1453
1104
|
}
|
|
1454
1105
|
const handleItemClick = _react.useCallback.call(void 0,
|
|
1455
1106
|
(item, event) => {
|
|
1456
|
-
_optionalChain([event, 'optionalAccess',
|
|
1107
|
+
_optionalChain([event, 'optionalAccess', _74 => _74.stopPropagation, 'call', _75 => _75()]);
|
|
1457
1108
|
if (item.onClick) {
|
|
1458
1109
|
item.onClick();
|
|
1459
1110
|
if (isTablet) setTabletMinimized(true);
|
|
@@ -1462,7 +1113,7 @@ function NavigationSidebar({ config, disabled = false, pushOnTablet = false }) {
|
|
|
1462
1113
|
if (!item.path) return;
|
|
1463
1114
|
if (isModifiedClick(event)) return;
|
|
1464
1115
|
if (config.onNavigate) {
|
|
1465
|
-
_optionalChain([event, 'optionalAccess',
|
|
1116
|
+
_optionalChain([event, 'optionalAccess', _76 => _76.preventDefault, 'call', _77 => _77()]);
|
|
1466
1117
|
if (item.id !== committedActiveId) setPendingItemId(item.id);
|
|
1467
1118
|
config.onNavigate(item.path);
|
|
1468
1119
|
}
|
|
@@ -1479,18 +1130,18 @@ function NavigationSidebar({ config, disabled = false, pushOnTablet = false }) {
|
|
|
1479
1130
|
);
|
|
1480
1131
|
const loadingRows = _react.useMemo.call(void 0, () => {
|
|
1481
1132
|
if (!config.loading) return null;
|
|
1482
|
-
const primary = _nullishCoalesce(_optionalChain([config, 'access',
|
|
1483
|
-
const secondary = _nullishCoalesce(_optionalChain([config, 'access',
|
|
1133
|
+
const primary = _nullishCoalesce(_optionalChain([config, 'access', _78 => _78.loadingRows, 'optionalAccess', _79 => _79.primary]), () => ( 7));
|
|
1134
|
+
const secondary = _nullishCoalesce(_optionalChain([config, 'access', _80 => _80.loadingRows, 'optionalAccess', _81 => _81.secondary]), () => ( 2));
|
|
1484
1135
|
return {
|
|
1485
1136
|
primary: Array.from({ length: Math.max(0, primary) }, (_, i) => `primary-${i}`),
|
|
1486
1137
|
secondary: Array.from({ length: Math.max(0, secondary) }, (_, i) => `secondary-${i}`)
|
|
1487
1138
|
};
|
|
1488
|
-
}, [config.loading, _optionalChain([config, 'access',
|
|
1139
|
+
}, [config.loading, _optionalChain([config, 'access', _82 => _82.loadingRows, 'optionalAccess', _83 => _83.primary]), _optionalChain([config, 'access', _84 => _84.loadingRows, 'optionalAccess', _85 => _85.secondary])]);
|
|
1489
1140
|
const sidebarWidth = _react.useMemo.call(void 0, () => minimized ? `${MINIMIZED_WIDTH}px` : `${EXPANDED_WIDTH}px`, [minimized]);
|
|
1490
|
-
|
|
1141
|
+
_chunkRKV5B7EUcjs.useIsomorphicLayoutEffect.call(void 0, () => {
|
|
1491
1142
|
document.documentElement.style.setProperty(NAVIGATION_SIDEBAR_WIDTH_VAR, sidebarWidth);
|
|
1492
1143
|
}, [sidebarWidth]);
|
|
1493
|
-
|
|
1144
|
+
_chunkRKV5B7EUcjs.useIsomorphicLayoutEffect.call(void 0, () => {
|
|
1494
1145
|
if (transitionsEnabled) return void 0;
|
|
1495
1146
|
const id = requestAnimationFrame(() => {
|
|
1496
1147
|
setTransitionsEnabled(true);
|
|
@@ -1542,7 +1193,7 @@ function NavigationSidebar({ config, disabled = false, pushOnTablet = false }) {
|
|
|
1542
1193
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, NavigationSidebarHeader, { minimized }),
|
|
1543
1194
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-1 flex-col justify-between overflow-y-auto py-4", children: [
|
|
1544
1195
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col", children: [
|
|
1545
|
-
_optionalChain([config, 'access',
|
|
1196
|
+
_optionalChain([config, 'access', _86 => _86.topSlot, 'optionalCall', _87 => _87({ minimized })]),
|
|
1546
1197
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "nav", { className: "flex flex-col", "aria-label": "Primary navigation", "aria-busy": !!loadingRows, children: loadingRows ? loadingRows.primary.map((key) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, NavigationSidebarItemSkeleton, { showLabel }, key)) : primaryItems.map((item) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1547
1198
|
NavigationSidebarItemButton,
|
|
1548
1199
|
{
|
|
@@ -1601,18 +1252,18 @@ function HeaderGlobalSearch({
|
|
|
1601
1252
|
};
|
|
1602
1253
|
const handleSubmit = (e) => {
|
|
1603
1254
|
e.preventDefault();
|
|
1604
|
-
_optionalChain([onSubmit, 'optionalCall',
|
|
1255
|
+
_optionalChain([onSubmit, 'optionalCall', _88 => _88(currentValue)]);
|
|
1605
1256
|
};
|
|
1606
1257
|
const handleKeyDown = (e) => {
|
|
1607
1258
|
if (e.key === "Enter") {
|
|
1608
|
-
_optionalChain([onSubmit, 'optionalCall',
|
|
1259
|
+
_optionalChain([onSubmit, 'optionalCall', _89 => _89(currentValue)]);
|
|
1609
1260
|
}
|
|
1610
1261
|
};
|
|
1611
1262
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1612
1263
|
"form",
|
|
1613
1264
|
{
|
|
1614
1265
|
onSubmit: handleSubmit,
|
|
1615
|
-
...
|
|
1266
|
+
..._chunkVESKITRQcjs.HUBSPOT_DO_NOT_COLLECT_FORM_PROPS,
|
|
1616
1267
|
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
1617
1268
|
"flex h-full flex-1 items-center gap-2 px-3",
|
|
1618
1269
|
// Transparent so the cell inherits the bar's background
|
|
@@ -1679,12 +1330,12 @@ function HeaderMingoButton({
|
|
|
1679
1330
|
// Mobile, drawer open: the icon-only button doubles as the close
|
|
1680
1331
|
// affordance, so swap the Mingo logo for an X. Match the other header
|
|
1681
1332
|
// icons (e.g. notifications): secondary color, w-4 h-4 → md:w-6 h-6.
|
|
1682
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1333
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN3COXDBHcjs.XmarkIcon, { className: "h-6 w-6 shrink-0 text-ods-text-secondary" })
|
|
1683
1334
|
) : (
|
|
1684
1335
|
// Outer frame follows the button's text color (currentColor); the eyes
|
|
1685
1336
|
// and corner block are ODS cyan.
|
|
1686
1337
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1687
|
-
|
|
1338
|
+
_chunkX72J4ACLcjs.MingoIcon,
|
|
1688
1339
|
{
|
|
1689
1340
|
color: "currentColor",
|
|
1690
1341
|
eyesColor: "var(--ods-flamingo-cyan-base)",
|
|
@@ -1709,8 +1360,8 @@ function HeaderOrganizationFilter({
|
|
|
1709
1360
|
className
|
|
1710
1361
|
}) {
|
|
1711
1362
|
const selectedOrg = organizations.find((o) => o.id === selectedOrgId);
|
|
1712
|
-
const displayName = _optionalChain([selectedOrg, 'optionalAccess',
|
|
1713
|
-
const deviceCount = _nullishCoalesce(_optionalChain([selectedOrg, 'optionalAccess',
|
|
1363
|
+
const displayName = _optionalChain([selectedOrg, 'optionalAccess', _90 => _90.name]) || "All Organizations";
|
|
1364
|
+
const deviceCount = _nullishCoalesce(_optionalChain([selectedOrg, 'optionalAccess', _91 => _91.deviceCount]), () => ( totalDeviceCount));
|
|
1714
1365
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkBM5MVGH3cjs.DropdownMenu, { children: [
|
|
1715
1366
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBM5MVGH3cjs.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1716
1367
|
"button",
|
|
@@ -1724,7 +1375,7 @@ function HeaderOrganizationFilter({
|
|
|
1724
1375
|
className
|
|
1725
1376
|
),
|
|
1726
1377
|
children: [
|
|
1727
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1378
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN3COXDBHcjs.Filter02Icon, { className: "h-4 w-4 shrink-0 text-ods-text-secondary" }),
|
|
1728
1379
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-col items-start justify-center", children: [
|
|
1729
1380
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate text-ods-text-primary text-h5", title: displayName, children: displayName }),
|
|
1730
1381
|
deviceCount !== void 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "truncate text-ods-text-secondary text-h6", children: [
|
|
@@ -1736,45 +1387,12 @@ function HeaderOrganizationFilter({
|
|
|
1736
1387
|
}
|
|
1737
1388
|
) }),
|
|
1738
1389
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkBM5MVGH3cjs.DropdownMenuContent, { align: "end", className: "min-w-[240px]", children: [
|
|
1739
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBM5MVGH3cjs.DropdownMenuItem, { onClick: () => _optionalChain([onOrgChange, 'optionalCall',
|
|
1740
|
-
organizations.map((org) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBM5MVGH3cjs.DropdownMenuItem, { onClick: () => _optionalChain([onOrgChange, 'optionalCall',
|
|
1390
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBM5MVGH3cjs.DropdownMenuItem, { onClick: () => _optionalChain([onOrgChange, 'optionalCall', _92 => _92("")]), children: "All Organizations" }),
|
|
1391
|
+
organizations.map((org) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBM5MVGH3cjs.DropdownMenuItem, { onClick: () => _optionalChain([onOrgChange, 'optionalCall', _93 => _93(org.id)]), children: org.name }, org.id))
|
|
1741
1392
|
] })
|
|
1742
1393
|
] });
|
|
1743
1394
|
}
|
|
1744
1395
|
|
|
1745
|
-
// src/components/navigation/ticket-alerts-button.tsx
|
|
1746
|
-
|
|
1747
|
-
function TicketAlertsButton({ href, onNavigate, disabled, className }) {
|
|
1748
|
-
const live = _chunkUJ33ZXDTcjs.useOptionalTicketLive.call(void 0, );
|
|
1749
|
-
if (!live || !live.authed || live.unreadTotal === 0) return null;
|
|
1750
|
-
const targetId = live.nextUnreadTicketId;
|
|
1751
|
-
const target = targetId ? _chunkGWQEYPYMcjs.buildTicketOpenHref.call(void 0, href, targetId) : href;
|
|
1752
|
-
const handleClick = () => {
|
|
1753
|
-
if (onNavigate) onNavigate(target);
|
|
1754
|
-
else window.location.assign(target);
|
|
1755
|
-
};
|
|
1756
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1757
|
-
_chunkGWQEYPYMcjs.HeaderButton,
|
|
1758
|
-
{
|
|
1759
|
-
icon: (
|
|
1760
|
-
// Glyph inherits HeaderButton's standard cell coloring (secondary at
|
|
1761
|
-
// rest, primary on active) — SAME treatment as the notifications
|
|
1762
|
-
// bell and time-tracker cells. The indication is carried by the
|
|
1763
|
-
// count pill (sidebar count-pill precedent) and by the cell only
|
|
1764
|
-
// existing while updates are unread — never by tinting the glyph.
|
|
1765
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "relative inline-flex", children: [
|
|
1766
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVX4E6YSBcjs.LifeBuoyIcon, { className: "h-6 w-6" }),
|
|
1767
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGWQEYPYMcjs.UnreadCountBadge, { count: live.unreadTotal })
|
|
1768
|
-
] })
|
|
1769
|
-
),
|
|
1770
|
-
"aria-label": `Support tickets \u2014 ${live.unreadTotal} unread ${live.unreadTotal === 1 ? "update" : "updates"}`,
|
|
1771
|
-
onClick: handleClick,
|
|
1772
|
-
disabled,
|
|
1773
|
-
className: _chunk3ATAYP36cjs.cn.call(void 0, className)
|
|
1774
|
-
}
|
|
1775
|
-
);
|
|
1776
|
-
}
|
|
1777
|
-
|
|
1778
1396
|
// src/components/navigation/app-header.tsx
|
|
1779
1397
|
|
|
1780
1398
|
var AppHeader = _react2.default.memo(function AppHeaderImpl({
|
|
@@ -1807,7 +1425,7 @@ var AppHeader = _react2.default.memo(function AppHeaderImpl({
|
|
|
1807
1425
|
loading = false,
|
|
1808
1426
|
loadingActionCells
|
|
1809
1427
|
}) {
|
|
1810
|
-
const isMdUp = _nullishCoalesce(
|
|
1428
|
+
const isMdUp = _nullishCoalesce(_chunkRKV5B7EUcjs.useMdUp.call(void 0, ), () => ( false));
|
|
1811
1429
|
if (loading) {
|
|
1812
1430
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1813
1431
|
AppHeaderSkeleton,
|
|
@@ -1840,11 +1458,11 @@ var AppHeader = _react2.default.memo(function AppHeaderImpl({
|
|
|
1840
1458
|
leading: (
|
|
1841
1459
|
// Mobile: Burger Menu Button
|
|
1842
1460
|
!isMdUp && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1843
|
-
|
|
1461
|
+
_chunkVESKITRQcjs.HeaderButton,
|
|
1844
1462
|
{
|
|
1845
1463
|
onClick: onToggleMobileMenu,
|
|
1846
1464
|
isActive: isMobileMenuOpen,
|
|
1847
|
-
icon: isMobileMenuOpen ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1465
|
+
icon: isMobileMenuOpen ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN3COXDBHcjs.XmarkIcon, { className: "h-6 w-6" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN3COXDBHcjs.Menu01Icon, { className: "h-6 w-6" }),
|
|
1848
1466
|
"aria-label": isMobileMenuOpen ? "Close menu" : "Open menu",
|
|
1849
1467
|
"aria-expanded": isMobileMenuOpen,
|
|
1850
1468
|
className: "border-r border-ods-border"
|
|
@@ -1853,20 +1471,20 @@ var AppHeader = _react2.default.memo(function AppHeaderImpl({
|
|
|
1853
1471
|
),
|
|
1854
1472
|
logo: !isMdUp && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
1855
1473
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1856
|
-
|
|
1474
|
+
_chunkQZVSJF2Kcjs.OpenFrameLogo,
|
|
1857
1475
|
{
|
|
1858
1476
|
className: "h-6 w-6 shrink-0",
|
|
1859
1477
|
upperPathColor: "var(--color-text-primary)",
|
|
1860
1478
|
lowerPathColor: "var(--color-accent-primary)"
|
|
1861
1479
|
}
|
|
1862
1480
|
),
|
|
1863
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1481
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkX72J4ACLcjs.OpenFrameText, { textColor: "var(--color-text-primary)", className: "h-4" })
|
|
1864
1482
|
] }),
|
|
1865
1483
|
logoClassName: "gap-2",
|
|
1866
1484
|
center: showSearch ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HeaderGlobalSearch, { onSubmit: onSearch, className: _chunk3ATAYP36cjs.cn.call(void 0, "w-full", dimmedClass) }) : void 0,
|
|
1867
1485
|
sideActions: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
1868
1486
|
showSearch && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1869
|
-
|
|
1487
|
+
_chunkVESKITRQcjs.HeaderButton,
|
|
1870
1488
|
{
|
|
1871
1489
|
icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4GFNWALLcjs.SearchIcon, { className: "h-6 w-6" }),
|
|
1872
1490
|
"aria-label": "Search",
|
|
@@ -1883,7 +1501,7 @@ var AppHeader = _react2.default.memo(function AppHeaderImpl({
|
|
|
1883
1501
|
className: _chunk3ATAYP36cjs.cn.call(void 0, "hidden lg:flex", dimmedClass)
|
|
1884
1502
|
}
|
|
1885
1503
|
),
|
|
1886
|
-
showTimeTracker && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1504
|
+
showTimeTracker && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVESKITRQcjs.TimeTrackerHeaderButton, { disabled, className: _chunk3ATAYP36cjs.cn.call(void 0, cellDivider, dimmedClass) }),
|
|
1887
1505
|
showNotifications && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1888
1506
|
NotificationsHeaderButton,
|
|
1889
1507
|
{
|
|
@@ -1903,10 +1521,10 @@ var AppHeader = _react2.default.memo(function AppHeaderImpl({
|
|
|
1903
1521
|
),
|
|
1904
1522
|
isMdUp && showUser && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkBM5MVGH3cjs.DropdownMenu, { children: [
|
|
1905
1523
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBM5MVGH3cjs.DropdownMenuTrigger, { asChild: true, disabled, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1906
|
-
|
|
1524
|
+
_chunkVESKITRQcjs.HeaderButton,
|
|
1907
1525
|
{
|
|
1908
1526
|
icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1909
|
-
|
|
1527
|
+
_chunkMMOODW57cjs.SquareAvatar,
|
|
1910
1528
|
{
|
|
1911
1529
|
src: userAvatarUrl || void 0,
|
|
1912
1530
|
alt: userName || "User",
|
|
@@ -1932,7 +1550,7 @@ var AppHeader = _react2.default.memo(function AppHeaderImpl({
|
|
|
1932
1550
|
children: [
|
|
1933
1551
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2 border-b border-ods-border bg-ods-card p-3", children: [
|
|
1934
1552
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1935
|
-
|
|
1553
|
+
_chunkMMOODW57cjs.SquareAvatar,
|
|
1936
1554
|
{
|
|
1937
1555
|
src: userAvatarUrl || void 0,
|
|
1938
1556
|
alt: userName || "User",
|
|
@@ -1952,7 +1570,7 @@ var AppHeader = _react2.default.memo(function AppHeaderImpl({
|
|
|
1952
1570
|
onClick: onProfile,
|
|
1953
1571
|
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",
|
|
1954
1572
|
children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2", children: [
|
|
1955
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1573
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkX72J4ACLcjs.UserIcon, { className: "h-6 w-6 shrink-0 text-ods-text-primary" }),
|
|
1956
1574
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-primary text-h4", children: "Profile Settings" })
|
|
1957
1575
|
] })
|
|
1958
1576
|
}
|
|
@@ -1963,7 +1581,7 @@ var AppHeader = _react2.default.memo(function AppHeaderImpl({
|
|
|
1963
1581
|
onClick: onLogout,
|
|
1964
1582
|
className: "cursor-pointer rounded-none bg-ods-card px-3 py-3 hover:bg-ods-card/80 focus:bg-ods-card/80",
|
|
1965
1583
|
children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2", children: [
|
|
1966
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1584
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkX72J4ACLcjs.LogOutIcon, { className: "shrink-0 text-ods-error", size: 24 }),
|
|
1967
1585
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-primary text-h4", children: "Log Out" })
|
|
1968
1586
|
] })
|
|
1969
1587
|
}
|
|
@@ -1988,14 +1606,14 @@ var AppHeader = _react2.default.memo(function AppHeaderImpl({
|
|
|
1988
1606
|
);
|
|
1989
1607
|
});
|
|
1990
1608
|
function NotificationsHeaderButton({ fallbackUnreadCount, disabled, dimmedClass }) {
|
|
1991
|
-
const ctx =
|
|
1992
|
-
const hasUnread = (_nullishCoalesce(_optionalChain([ctx, 'optionalAccess',
|
|
1993
|
-
const isActive = _nullishCoalesce(_optionalChain([ctx, 'optionalAccess',
|
|
1994
|
-
const onClick = _optionalChain([ctx, 'optionalAccess',
|
|
1609
|
+
const ctx = _chunkVESKITRQcjs.useOptionalNotifications.call(void 0, );
|
|
1610
|
+
const hasUnread = (_nullishCoalesce(_optionalChain([ctx, 'optionalAccess', _94 => _94.unreadCount]), () => ( fallbackUnreadCount))) > 0;
|
|
1611
|
+
const isActive = _nullishCoalesce(_optionalChain([ctx, 'optionalAccess', _95 => _95.isOpen]), () => ( false));
|
|
1612
|
+
const onClick = _optionalChain([ctx, 'optionalAccess', _96 => _96.toggle]);
|
|
1995
1613
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1996
|
-
|
|
1614
|
+
_chunkVESKITRQcjs.HeaderButton,
|
|
1997
1615
|
{
|
|
1998
|
-
icon: isActive ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1616
|
+
icon: isActive ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN3COXDBHcjs.XmarkIcon, { className: "h-6 w-6" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN3COXDBHcjs.BellIcon, { className: "h-6 w-6" }),
|
|
1999
1617
|
showUnreadDot: !isActive && hasUnread,
|
|
2000
1618
|
"aria-label": isActive ? "Close notifications" : "Notifications",
|
|
2001
1619
|
onClick,
|
|
@@ -2065,7 +1683,7 @@ function AppHeaderSkeleton({
|
|
|
2065
1683
|
|
|
2066
1684
|
var SIDE_PANEL_INSET = 16;
|
|
2067
1685
|
var SIDE_PANEL_FRAME_WIDTH = 2;
|
|
2068
|
-
var MOBILE_QUERY = `not all and ${
|
|
1686
|
+
var MOBILE_QUERY = `not all and ${_chunkRKV5B7EUcjs.breakpoints.md}`;
|
|
2069
1687
|
var REDUCED_MOTION_QUERY = "(prefers-reduced-motion: reduce)";
|
|
2070
1688
|
var MORPH_MS = 300;
|
|
2071
1689
|
var STORAGE_EVENT = "of:side-panel-size";
|
|
@@ -2141,13 +1759,13 @@ function useStoredSize(storageKey, fallback) {
|
|
|
2141
1759
|
}
|
|
2142
1760
|
function useAppLayoutSidePanel(config, row) {
|
|
2143
1761
|
const enabled = config !== void 0;
|
|
2144
|
-
const minWidth = _nullishCoalesce(_optionalChain([config, 'optionalAccess',
|
|
2145
|
-
const minContentWidth = _nullishCoalesce(_optionalChain([config, 'optionalAccess',
|
|
2146
|
-
const collapsed = _nullishCoalesce(_optionalChain([config, 'optionalAccess',
|
|
1762
|
+
const minWidth = _nullishCoalesce(_optionalChain([config, 'optionalAccess', _97 => _97.minWidth]), () => ( 0));
|
|
1763
|
+
const minContentWidth = _nullishCoalesce(_optionalChain([config, 'optionalAccess', _98 => _98.minContentWidth]), () => ( 400));
|
|
1764
|
+
const collapsed = _nullishCoalesce(_optionalChain([config, 'optionalAccess', _99 => _99.collapsed]), () => ( false));
|
|
2147
1765
|
const minimum = { width: minWidth, expanded: false };
|
|
2148
|
-
const defaultWidth = Math.max(minWidth, _nullishCoalesce(_optionalChain([config, 'optionalAccess',
|
|
1766
|
+
const defaultWidth = Math.max(minWidth, _nullishCoalesce(_optionalChain([config, 'optionalAccess', _100 => _100.defaultWidth]), () => ( minWidth)));
|
|
2149
1767
|
const [rowWidth, setRowWidth] = _react.useState.call(void 0, 0);
|
|
2150
|
-
|
|
1768
|
+
_chunkRKV5B7EUcjs.useIsomorphicLayoutEffect.call(void 0, () => {
|
|
2151
1769
|
if (!enabled || !row) return void 0;
|
|
2152
1770
|
const update = () => setRowWidth(row.clientWidth);
|
|
2153
1771
|
update();
|
|
@@ -2155,17 +1773,17 @@ function useAppLayoutSidePanel(config, row) {
|
|
|
2155
1773
|
observer.observe(row);
|
|
2156
1774
|
return () => observer.disconnect();
|
|
2157
1775
|
}, [enabled, row]);
|
|
2158
|
-
const isMobile =
|
|
2159
|
-
const reduceMotion =
|
|
1776
|
+
const isMobile = _chunkRKV5B7EUcjs.useMediaQuery.call(void 0, MOBILE_QUERY) === true;
|
|
1777
|
+
const reduceMotion = _chunkRKV5B7EUcjs.useMediaQuery.call(void 0, REDUCED_MOTION_QUERY) === true;
|
|
2160
1778
|
const [morph, setMorph] = _react.useState.call(void 0, null);
|
|
2161
1779
|
const [liveWidth, setLiveWidth] = _react.useState.call(void 0, null);
|
|
2162
|
-
const [storedSize, setStoredSize] = useStoredSize(_optionalChain([config, 'optionalAccess',
|
|
1780
|
+
const [storedSize, setStoredSize] = useStoredSize(_optionalChain([config, 'optionalAccess', _101 => _101.storageKey]), { width: defaultWidth, expanded: false });
|
|
2163
1781
|
const [ownIsOpen, setOwnIsOpen] = _react.useState.call(void 0, false);
|
|
2164
|
-
const isOpen = _nullishCoalesce(_optionalChain([config, 'optionalAccess',
|
|
2165
|
-
const onOpenChange = _optionalChain([config, 'optionalAccess',
|
|
1782
|
+
const isOpen = _nullishCoalesce(_optionalChain([config, 'optionalAccess', _102 => _102.open]), () => ( ownIsOpen));
|
|
1783
|
+
const onOpenChange = _optionalChain([config, 'optionalAccess', _103 => _103.onOpenChange]);
|
|
2166
1784
|
const setIsOpen = (next) => {
|
|
2167
|
-
if (_optionalChain([config, 'optionalAccess',
|
|
2168
|
-
_optionalChain([onOpenChange, 'optionalCall',
|
|
1785
|
+
if (_optionalChain([config, 'optionalAccess', _104 => _104.open]) === void 0) setOwnIsOpen(next);
|
|
1786
|
+
_optionalChain([onOpenChange, 'optionalCall', _105 => _105(next)]);
|
|
2169
1787
|
};
|
|
2170
1788
|
const [collapsedSize, setCollapsedSize] = _react.useState.call(void 0, null);
|
|
2171
1789
|
const [prevCollapsed, setPrevCollapsed] = _react.useState.call(void 0, collapsed);
|
|
@@ -2185,8 +1803,8 @@ function useAppLayoutSidePanel(config, row) {
|
|
|
2185
1803
|
_react.useEffect.call(void 0, () => {
|
|
2186
1804
|
const couldDock = prevCanDockRef.current;
|
|
2187
1805
|
prevCanDockRef.current = layout.canDock;
|
|
2188
|
-
if (!couldDock && layout.canDock && _optionalChain([config, 'optionalAccess',
|
|
2189
|
-
}, [layout.canDock, _optionalChain([config, 'optionalAccess',
|
|
1806
|
+
if (!couldDock && layout.canDock && _optionalChain([config, 'optionalAccess', _106 => _106.open])) _optionalChain([onOpenChange, 'optionalCall', _107 => _107(false)]);
|
|
1807
|
+
}, [layout.canDock, _optionalChain([config, 'optionalAccess', _108 => _108.open]), onOpenChange]);
|
|
2190
1808
|
if (!enabled) return null;
|
|
2191
1809
|
const animate = (next) => {
|
|
2192
1810
|
if (!reduceMotion) setMorph(next);
|
|
@@ -2345,7 +1963,7 @@ function SidePanelResizeHandle({ state, label, controls }) {
|
|
|
2345
1963
|
{
|
|
2346
1964
|
"aria-hidden": true,
|
|
2347
1965
|
className: "flex h-8 w-4 items-center justify-center rounded-sm border border-ods-border bg-ods-card text-ods-text-secondary transition-colors group-hover:border-ods-border-hover group-focus-visible:border-ods-accent group-focus-visible:text-ods-accent",
|
|
2348
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1966
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN3COXDBHcjs.Menu01Icon, { size: 12 })
|
|
2349
1967
|
}
|
|
2350
1968
|
)
|
|
2351
1969
|
}
|
|
@@ -2445,13 +2063,13 @@ var MobileBurgerMenu = _react2.default.memo(function MobileBurgerMenuImpl({
|
|
|
2445
2063
|
}) {
|
|
2446
2064
|
const panelRef = _react.useRef.call(void 0, null);
|
|
2447
2065
|
_overlays.usePreventScroll.call(void 0, { isDisabled: !isOpen });
|
|
2448
|
-
|
|
2066
|
+
_chunk2QEUFXNScjs.useFocusTrap.call(void 0, panelRef, isOpen, { onEscape: onClose });
|
|
2449
2067
|
const handleItemClick = _react.useCallback.call(void 0,
|
|
2450
2068
|
(item) => {
|
|
2451
2069
|
if (item.onClick) {
|
|
2452
2070
|
item.onClick();
|
|
2453
2071
|
} else if (item.path) {
|
|
2454
|
-
_optionalChain([config, 'access',
|
|
2072
|
+
_optionalChain([config, 'access', _109 => _109.onNavigate, 'optionalCall', _110 => _110(item.path)]);
|
|
2455
2073
|
}
|
|
2456
2074
|
onClose();
|
|
2457
2075
|
},
|
|
@@ -2510,7 +2128,7 @@ var MobileBurgerMenu = _react2.default.memo(function MobileBurgerMenuImpl({
|
|
|
2510
2128
|
{
|
|
2511
2129
|
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
2512
2130
|
"absolute inset-0 z-[100] md:hidden",
|
|
2513
|
-
|
|
2131
|
+
_chunk3MX5S4CFcjs.OVERLAY_BACKDROP_CLASS,
|
|
2514
2132
|
"transition-all duration-300 motion-reduce:transition-none",
|
|
2515
2133
|
isOpen ? "opacity-100" : "pointer-events-none opacity-0"
|
|
2516
2134
|
),
|
|
@@ -2551,7 +2169,7 @@ var MobileBurgerMenu = _react2.default.memo(function MobileBurgerMenuImpl({
|
|
|
2551
2169
|
"aria-disabled": disabled || void 0,
|
|
2552
2170
|
children: [
|
|
2553
2171
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2554
|
-
|
|
2172
|
+
_chunkMMOODW57cjs.SquareAvatar,
|
|
2555
2173
|
{
|
|
2556
2174
|
src: user.userAvatarUrl || void 0,
|
|
2557
2175
|
alt: user.userName || "User",
|
|
@@ -2569,13 +2187,13 @@ var MobileBurgerMenu = _react2.default.memo(function MobileBurgerMenuImpl({
|
|
|
2569
2187
|
user.userEmail && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate text-ods-text-secondary text-h6", children: user.userEmail })
|
|
2570
2188
|
] }),
|
|
2571
2189
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex shrink-0 items-center gap-2", children: [
|
|
2572
|
-
onSearchUser && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDFQYAYBHcjs.Button, { size: "icon", onClick: onSearchUser, variant: "outline", "aria-label": "Search users", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2573
|
-
onEditProfile && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDFQYAYBHcjs.Button, { size: "icon", onClick: onEditProfile, variant: "outline", "aria-label": "Edit profile", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2190
|
+
onSearchUser && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDFQYAYBHcjs.Button, { size: "icon", onClick: onSearchUser, variant: "outline", "aria-label": "Search users", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN3COXDBHcjs.UserSearchIcon, { className: "size-4 text-ods-text-primary" }) }),
|
|
2191
|
+
onEditProfile && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDFQYAYBHcjs.Button, { size: "icon", onClick: onEditProfile, variant: "outline", "aria-label": "Edit profile", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN3COXDBHcjs.PenEditIcon, { className: "size-4 text-ods-text-primary" }) })
|
|
2574
2192
|
] })
|
|
2575
2193
|
]
|
|
2576
2194
|
}
|
|
2577
2195
|
),
|
|
2578
|
-
_optionalChain([config, 'access',
|
|
2196
|
+
_optionalChain([config, 'access', _111 => _111.topSlot, 'optionalCall', _112 => _112({ minimized: false })]),
|
|
2579
2197
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "nav", { "aria-label": "Primary navigation", children: renderNavigationGrid(primaryItems) }),
|
|
2580
2198
|
secondaryItems.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "nav", { "aria-label": "Secondary navigation", className: "flex flex-col gap-3", children: secondaryItems.map((item) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react2.default.Fragment, { children: renderNavigationItem(item, false) }, item.id)) }),
|
|
2581
2199
|
onLogout && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
@@ -2589,7 +2207,7 @@ var MobileBurgerMenu = _react2.default.memo(function MobileBurgerMenuImpl({
|
|
|
2589
2207
|
disabled && "cursor-not-allowed opacity-50"
|
|
2590
2208
|
),
|
|
2591
2209
|
children: [
|
|
2592
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2210
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN3COXDBHcjs.Logout02Icon, { className: "size-4 text-ods-error" }),
|
|
2593
2211
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex-1 text-left text-ods-text-primary text-h6", children: "Log Out" })
|
|
2594
2212
|
]
|
|
2595
2213
|
}
|
|
@@ -2620,7 +2238,7 @@ function AppLayout({
|
|
|
2620
2238
|
const [contentWidth, setContentWidth] = _react.useState.call(void 0, null);
|
|
2621
2239
|
const hasSidePanel = sidePanel !== void 0;
|
|
2622
2240
|
const sidePanelState = useAppLayoutSidePanel(sidePanel, drawerContainer);
|
|
2623
|
-
|
|
2241
|
+
_chunkRKV5B7EUcjs.useIsomorphicLayoutEffect.call(void 0, () => {
|
|
2624
2242
|
if (!hasSidePanel || !mainElement) return void 0;
|
|
2625
2243
|
const update = () => setContentWidth(mainElement.clientWidth);
|
|
2626
2244
|
update();
|
|
@@ -2635,7 +2253,7 @@ function AppLayout({
|
|
|
2635
2253
|
isMingoAIActive: sidePanelState.isOpen,
|
|
2636
2254
|
mingoAICloseWhenActive: true
|
|
2637
2255
|
};
|
|
2638
|
-
const contentCovered = _optionalChain([sidePanelState, 'optionalAccess',
|
|
2256
|
+
const contentCovered = _optionalChain([sidePanelState, 'optionalAccess', _113 => _113.coversContent]) === true;
|
|
2639
2257
|
const mobileMenuOpenRef = _react.useRef.call(void 0, mobileMenuOpen);
|
|
2640
2258
|
_react.useEffect.call(void 0, () => {
|
|
2641
2259
|
mobileMenuOpenRef.current = mobileMenuOpen;
|
|
@@ -2666,7 +2284,7 @@ function AppLayout({
|
|
|
2666
2284
|
}),
|
|
2667
2285
|
[]
|
|
2668
2286
|
);
|
|
2669
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2287
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVESKITRQcjs.AppLayoutDrawerContainerContext.Provider, { value: drawerContainer, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVESKITRQcjs.AppLayoutDrawerCoordinationContext.Provider, { value: drawerCoordination, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex h-screen flex-col bg-ods-bg", className), children: [
|
|
2670
2288
|
topBar,
|
|
2671
2289
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative flex min-h-0 flex-1", children: [
|
|
2672
2290
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, NavigationSidebar, { config: sidebarConfig, disabled, pushOnTablet: hasSidePanel }),
|
|
@@ -2690,7 +2308,7 @@ function AppLayout({
|
|
|
2690
2308
|
disabled
|
|
2691
2309
|
}
|
|
2692
2310
|
),
|
|
2693
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2311
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVESKITRQcjs.NotificationDrawer, {}),
|
|
2694
2312
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
2695
2313
|
"div",
|
|
2696
2314
|
{
|
|
@@ -2709,10 +2327,10 @@ function AppLayout({
|
|
|
2709
2327
|
contentCovered && "hidden",
|
|
2710
2328
|
// While the panel is drawn over the page, keep the page's own
|
|
2711
2329
|
// z-indexed layers (sticky headers, fixed bars) under it.
|
|
2712
|
-
_optionalChain([sidePanelState, 'optionalAccess',
|
|
2330
|
+
_optionalChain([sidePanelState, 'optionalAccess', _114 => _114.overlapsContent]) && "isolate",
|
|
2713
2331
|
mainClassName
|
|
2714
2332
|
),
|
|
2715
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2333
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRKV5B7EUcjs.ContentAreaWidthContext.Provider, { value: contentWidth, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "ods-content-scope", children }) })
|
|
2716
2334
|
}
|
|
2717
2335
|
)
|
|
2718
2336
|
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "main", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex-1 overflow-y-auto", mainClassName), children }),
|
|
@@ -2746,11 +2364,4 @@ function AppLayout({
|
|
|
2746
2364
|
|
|
2747
2365
|
|
|
2748
2366
|
|
|
2749
|
-
|
|
2750
|
-
|
|
2751
|
-
|
|
2752
|
-
|
|
2753
|
-
|
|
2754
|
-
|
|
2755
|
-
|
|
2756
|
-
exports.ASK_AI_OPEN_EVENT = ASK_AI_OPEN_EVENT; exports.openAskAi = openAskAi; exports.MingoAiButton = MingoAiButton; exports.MOBILE_NAV_SHEET_ID = MOBILE_NAV_SHEET_ID; exports.defaultRenderSiteNavLink = defaultRenderSiteNavLink; exports.navLinkLabel = navLinkLabel; exports.NavItemRow = NavItemRow; exports.isMegaMenu = isMegaMenu; exports.NavPanel = NavPanel; exports.TopNavigation = TopNavigation; exports.SiteHeader = SiteHeader; exports.siteNavHasMobileMenus = siteNavHasMobileMenus; exports.MobileNavSheet = MobileNavSheet; exports.SiteFooter = SiteFooter; exports.SlidingSidebar = SlidingSidebar; exports.NavigationItemBadge = NavigationItemBadge; exports.NAVIGATION_SIDEBAR_WIDTH_VAR = NAVIGATION_SIDEBAR_WIDTH_VAR; exports.NavigationSidebar = NavigationSidebar; exports.HeaderGlobalSearch = HeaderGlobalSearch; exports.HeaderMingoButton = HeaderMingoButton; exports.HeaderOrganizationFilter = HeaderOrganizationFilter; exports.TicketAlertsButton = TicketAlertsButton; exports.AppHeader = AppHeader; exports.SIDE_PANEL_FRAME_WIDTH = SIDE_PANEL_FRAME_WIDTH; exports.MobileBurgerMenu = MobileBurgerMenu; exports.AppLayout = AppLayout;
|
|
2367
|
+
exports.MingoAiButton = MingoAiButton; exports.MOBILE_NAV_PANEL_ID = MOBILE_NAV_PANEL_ID; exports.MobileNavPanel = MobileNavPanel; exports.TicketAlertsButton = TicketAlertsButton; exports.TopNavigation = TopNavigation; exports.Header = Header; exports.HeaderSkeleton = HeaderSkeleton; exports.ClientOnlyHeader = ClientOnlyHeader; exports.SlidingSidebar = SlidingSidebar; exports.NavigationItemBadge = NavigationItemBadge; exports.NAVIGATION_SIDEBAR_WIDTH_VAR = NAVIGATION_SIDEBAR_WIDTH_VAR; exports.NavigationSidebar = NavigationSidebar; exports.HeaderGlobalSearch = HeaderGlobalSearch; exports.HeaderMingoButton = HeaderMingoButton; exports.HeaderOrganizationFilter = HeaderOrganizationFilter; exports.AppHeader = AppHeader; exports.SIDE_PANEL_FRAME_WIDTH = SIDE_PANEL_FRAME_WIDTH; exports.MobileBurgerMenu = MobileBurgerMenu; exports.AppLayout = AppLayout;
|