@flamingo-stack/openframe-frontend-core 0.0.584-1973.5461.1 → 0.0.584

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.
Files changed (162) hide show
  1. package/dist/chat-protocol/events.d.ts +2 -8
  2. package/dist/chat-protocol/events.d.ts.map +1 -1
  3. package/dist/chat-protocol/index.cjs +0 -188
  4. package/dist/chat-protocol/index.cjs.map +1 -1
  5. package/dist/chat-protocol/index.js +0 -188
  6. package/dist/chat-protocol/index.js.map +1 -1
  7. package/dist/chat-protocol/nats-decoder.d.ts.map +1 -1
  8. package/dist/{chunk-U7MJV2V7.cjs → chunk-33DHEEMP.cjs} +33 -33
  9. package/dist/{chunk-U7MJV2V7.cjs.map → chunk-33DHEEMP.cjs.map} +1 -1
  10. package/dist/{chunk-23VBGHBL.js → chunk-3ELW4VML.js} +2 -2
  11. package/dist/{chunk-7KBKLN2Z.cjs → chunk-3ZA2OYRE.cjs} +3 -3
  12. package/dist/{chunk-7KBKLN2Z.cjs.map → chunk-3ZA2OYRE.cjs.map} +1 -1
  13. package/dist/{chunk-73XDYWYG.js → chunk-4T5KOD3G.js} +5 -5
  14. package/dist/{chunk-MI6PPL3P.js → chunk-5CJKZHWO.js} +5 -5
  15. package/dist/{chunk-E7Q24T4G.js → chunk-6BJYPG2V.js} +3 -3
  16. package/dist/{chunk-YXNMLGFI.cjs → chunk-7X5TCK4R.cjs} +10 -10
  17. package/dist/{chunk-YXNMLGFI.cjs.map → chunk-7X5TCK4R.cjs.map} +1 -1
  18. package/dist/{chunk-7DEGEI7G.js → chunk-EJKEDCTH.js} +6 -6
  19. package/dist/{chunk-XIV5VDWL.cjs → chunk-HCKEDTKJ.cjs} +10 -10
  20. package/dist/{chunk-XIV5VDWL.cjs.map → chunk-HCKEDTKJ.cjs.map} +1 -1
  21. package/dist/{chunk-EQGAYDTC.cjs → chunk-IIT5HWLY.cjs} +9 -9
  22. package/dist/{chunk-EQGAYDTC.cjs.map → chunk-IIT5HWLY.cjs.map} +1 -1
  23. package/dist/{chunk-7SMYBCYH.cjs → chunk-IKUSKKFZ.cjs} +540 -883
  24. package/dist/chunk-IKUSKKFZ.cjs.map +1 -0
  25. package/dist/{chunk-JKYALZB7.cjs → chunk-JAJQ5P2Q.cjs} +22 -22
  26. package/dist/{chunk-JKYALZB7.cjs.map → chunk-JAJQ5P2Q.cjs.map} +1 -1
  27. package/dist/{chunk-WAXL3E3B.cjs → chunk-JFKK3ZOA.cjs} +43 -43
  28. package/dist/{chunk-WAXL3E3B.cjs.map → chunk-JFKK3ZOA.cjs.map} +1 -1
  29. package/dist/{chunk-AWAHYAII.js → chunk-JVWRMLQZ.js} +2 -2
  30. package/dist/{chunk-PZ27ELFP.cjs → chunk-JWKAJTNA.cjs} +43 -33
  31. package/dist/chunk-JWKAJTNA.cjs.map +1 -0
  32. package/dist/{chunk-PISJGXXI.js → chunk-KP6VJP36.js} +3 -3
  33. package/dist/{chunk-NSDZAUJK.js → chunk-LNKULR4V.js} +2 -2
  34. package/dist/{chunk-AFQB4YL7.cjs → chunk-MEJFHD5N.cjs} +15 -15
  35. package/dist/{chunk-AFQB4YL7.cjs.map → chunk-MEJFHD5N.cjs.map} +1 -1
  36. package/dist/{chunk-5VHCSN44.js → chunk-MYEG5ZDT.js} +2 -2
  37. package/dist/{chunk-MMA3MTJD.cjs → chunk-P2VRLSAP.cjs} +21 -21
  38. package/dist/{chunk-MMA3MTJD.cjs.map → chunk-P2VRLSAP.cjs.map} +1 -1
  39. package/dist/{chunk-7Q34BVL7.cjs → chunk-Q66AMADB.cjs} +4 -4
  40. package/dist/{chunk-7Q34BVL7.cjs.map → chunk-Q66AMADB.cjs.map} +1 -1
  41. package/dist/{chunk-4ARYZTGV.cjs → chunk-QJR32JM2.cjs} +159 -159
  42. package/dist/{chunk-4ARYZTGV.cjs.map → chunk-QJR32JM2.cjs.map} +1 -1
  43. package/dist/{chunk-M4IIK3B7.js → chunk-RURZ6QLN.js} +3 -3
  44. package/dist/{chunk-TCEU6DCF.js → chunk-TLKHLGAB.js} +3 -3
  45. package/dist/{chunk-JCWUJHOD.js → chunk-TOUD3AGK.js} +23 -13
  46. package/dist/chunk-TOUD3AGK.js.map +1 -0
  47. package/dist/{chunk-CHI7GJ3K.cjs → chunk-UCNEQKIT.cjs} +5 -5
  48. package/dist/{chunk-CHI7GJ3K.cjs.map → chunk-UCNEQKIT.cjs.map} +1 -1
  49. package/dist/{chunk-ZRGBLM6W.cjs → chunk-VOAZU46B.cjs} +69 -69
  50. package/dist/{chunk-ZRGBLM6W.cjs.map → chunk-VOAZU46B.cjs.map} +1 -1
  51. package/dist/{chunk-GYJVLFK5.js → chunk-VZSTL5VG.js} +2 -2
  52. package/dist/{chunk-3CAC3AAE.js → chunk-XPJKQ63S.js} +3 -3
  53. package/dist/{chunk-KSC5LNSY.js → chunk-XWBND4G5.js} +187 -530
  54. package/dist/chunk-XWBND4G5.js.map +1 -0
  55. package/dist/{chunk-22DWXIV3.js → chunk-YFZDIEVC.js} +5 -5
  56. package/dist/{chunk-7J7XDGY6.cjs → chunk-ZHUBNWEX.cjs} +3 -3
  57. package/dist/{chunk-7J7XDGY6.cjs.map → chunk-ZHUBNWEX.cjs.map} +1 -1
  58. package/dist/components/case-studies/index.cjs +9 -9
  59. package/dist/components/case-studies/index.js +3 -3
  60. package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
  61. package/dist/components/chat/chat-message-list.d.ts.map +1 -1
  62. package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
  63. package/dist/components/chat/entity-cards/dispatch.d.ts.map +1 -1
  64. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts +1 -4
  65. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -1
  66. package/dist/components/chat/hooks/use-slash-commands.d.ts +3 -3
  67. package/dist/components/chat/hooks/use-slash-commands.d.ts.map +1 -1
  68. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts +28 -2
  69. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts.map +1 -1
  70. package/dist/components/chat/index.cjs +2 -2
  71. package/dist/components/chat/index.js +1 -1
  72. package/dist/components/chat/stream/chat-stream-reducer.d.ts.map +1 -1
  73. package/dist/components/chat/tool-execution-display.d.ts.map +1 -1
  74. package/dist/components/chat/types/component.types.d.ts +0 -4
  75. package/dist/components/chat/types/component.types.d.ts.map +1 -1
  76. package/dist/components/chat/types/message.types.d.ts +1 -35
  77. package/dist/components/chat/types/message.types.d.ts.map +1 -1
  78. package/dist/components/chat/types/unified-chat-state.types.d.ts +3 -3
  79. package/dist/components/chat/types/unified-chat-state.types.d.ts.map +1 -1
  80. package/dist/components/chat/utils/process-historical-messages.d.ts.map +1 -1
  81. package/dist/components/contact/index.cjs +4 -4
  82. package/dist/components/contact/index.js +3 -3
  83. package/dist/components/docs/index.cjs +7 -7
  84. package/dist/components/docs/index.js +6 -6
  85. package/dist/components/embeds/index.cjs +4 -4
  86. package/dist/components/embeds/index.js +3 -3
  87. package/dist/components/faq/index.cjs +4 -4
  88. package/dist/components/faq/index.js +3 -3
  89. package/dist/components/features/index.cjs +3 -3
  90. package/dist/components/features/index.js +2 -2
  91. package/dist/components/help-center-pages/index.cjs +23 -23
  92. package/dist/components/help-center-pages/index.js +14 -14
  93. package/dist/components/index.cjs +36 -36
  94. package/dist/components/index.js +13 -13
  95. package/dist/components/meeting-scheduler/index.cjs +21 -21
  96. package/dist/components/meeting-scheduler/index.js +2 -2
  97. package/dist/components/navigation/index.cjs +6 -6
  98. package/dist/components/navigation/index.js +5 -5
  99. package/dist/components/navigation/navigation-sidebar-item.d.ts.map +1 -1
  100. package/dist/components/onboarding-guides/index.cjs +6 -6
  101. package/dist/components/onboarding-guides/index.js +5 -5
  102. package/dist/components/tickets/index.cjs +7 -7
  103. package/dist/components/tickets/index.js +6 -6
  104. package/dist/components/ui/hover-dropdown.d.ts.map +1 -1
  105. package/dist/components/ui/index.cjs +3 -3
  106. package/dist/components/ui/index.js +2 -2
  107. package/dist/index.cjs +7 -7
  108. package/dist/index.js +6 -6
  109. package/dist/utils/index.cjs.map +1 -1
  110. package/dist/utils/index.js.map +1 -1
  111. package/package.json +1 -1
  112. package/src/chat-protocol/__tests__/nats-decoder-golden.test.ts +0 -130
  113. package/src/chat-protocol/events.ts +1 -9
  114. package/src/chat-protocol/nats-decoder.ts +0 -7
  115. package/src/components/chat/__tests__/chat-message-list.test.tsx +0 -70
  116. package/src/components/chat/__tests__/chat-message-streaming-memo.test.tsx +0 -86
  117. package/src/components/chat/chat-message-enhanced.tsx +13 -28
  118. package/src/components/chat/chat-message-list.tsx +22 -27
  119. package/src/components/chat/embeddable-chat.tsx +36 -55
  120. package/src/components/chat/entity-cards/dispatch.tsx +17 -86
  121. package/src/components/chat/hooks/use-nats-chat-adapter.ts +0 -7
  122. package/src/components/chat/hooks/use-slash-commands.ts +5 -9
  123. package/src/components/chat/hooks/use-sse-chat-adapter.ts +29 -2
  124. package/src/components/chat/stream/__tests__/chat-stream-reducer.test.ts +0 -56
  125. package/src/components/chat/stream/chat-stream-reducer.ts +0 -31
  126. package/src/components/chat/tool-execution-display.tsx +2 -5
  127. package/src/components/chat/types/component.types.ts +0 -4
  128. package/src/components/chat/types/message.types.ts +0 -39
  129. package/src/components/chat/types/unified-chat-state.types.ts +3 -4
  130. package/src/components/chat/utils/__tests__/process-historical-messages-golden.test.ts +0 -57
  131. package/src/components/chat/utils/process-historical-messages.ts +1 -19
  132. package/src/components/navigation/navigation-sidebar-item.tsx +19 -9
  133. package/src/components/ui/hover-dropdown.tsx +3 -8
  134. package/dist/chat-protocol/source-metadata.d.ts +0 -5
  135. package/dist/chat-protocol/source-metadata.d.ts.map +0 -1
  136. package/dist/chunk-7SMYBCYH.cjs.map +0 -1
  137. package/dist/chunk-JCWUJHOD.js.map +0 -1
  138. package/dist/chunk-KSC5LNSY.js.map +0 -1
  139. package/dist/chunk-PZ27ELFP.cjs.map +0 -1
  140. package/dist/components/chat/utils/chat-source-metadata.d.ts +0 -5
  141. package/dist/components/chat/utils/chat-source-metadata.d.ts.map +0 -1
  142. package/src/chat-protocol/__tests__/source-metadata.test.ts +0 -74
  143. package/src/chat-protocol/source-metadata.ts +0 -202
  144. package/src/components/chat/__tests__/embeddable-chat-sources.test.tsx +0 -411
  145. package/src/components/chat/__tests__/tool-execution-display.test.tsx +0 -93
  146. package/src/components/chat/entity-cards/__tests__/dispatch-video-refs.test.tsx +0 -74
  147. package/src/components/chat/hooks/__tests__/use-slash-commands.test.ts +0 -64
  148. package/src/components/chat/utils/chat-source-metadata.ts +0 -19
  149. /package/dist/{chunk-23VBGHBL.js.map → chunk-3ELW4VML.js.map} +0 -0
  150. /package/dist/{chunk-73XDYWYG.js.map → chunk-4T5KOD3G.js.map} +0 -0
  151. /package/dist/{chunk-MI6PPL3P.js.map → chunk-5CJKZHWO.js.map} +0 -0
  152. /package/dist/{chunk-E7Q24T4G.js.map → chunk-6BJYPG2V.js.map} +0 -0
  153. /package/dist/{chunk-7DEGEI7G.js.map → chunk-EJKEDCTH.js.map} +0 -0
  154. /package/dist/{chunk-AWAHYAII.js.map → chunk-JVWRMLQZ.js.map} +0 -0
  155. /package/dist/{chunk-PISJGXXI.js.map → chunk-KP6VJP36.js.map} +0 -0
  156. /package/dist/{chunk-NSDZAUJK.js.map → chunk-LNKULR4V.js.map} +0 -0
  157. /package/dist/{chunk-5VHCSN44.js.map → chunk-MYEG5ZDT.js.map} +0 -0
  158. /package/dist/{chunk-M4IIK3B7.js.map → chunk-RURZ6QLN.js.map} +0 -0
  159. /package/dist/{chunk-TCEU6DCF.js.map → chunk-TLKHLGAB.js.map} +0 -0
  160. /package/dist/{chunk-GYJVLFK5.js.map → chunk-VZSTL5VG.js.map} +0 -0
  161. /package/dist/{chunk-3CAC3AAE.js.map → chunk-XPJKQ63S.js.map} +0 -0
  162. /package/dist/{chunk-22DWXIV3.js.map → chunk-YFZDIEVC.js.map} +0 -0
@@ -90,7 +90,7 @@ import {
90
90
  useCollapsible,
91
91
  useIsHydrated,
92
92
  useScrollFade
93
- } from "./chunk-KSC5LNSY.js";
93
+ } from "./chunk-XWBND4G5.js";
94
94
  import {
95
95
  ToolIcon,
96
96
  createHeadingIdDeduper,
@@ -30247,4 +30247,4 @@ export {
30247
30247
  ReopenTicketRequestModal,
30248
30248
  FilterPillRow
30249
30249
  };
30250
- //# sourceMappingURL=chunk-AWAHYAII.js.map
30250
+ //# sourceMappingURL=chunk-JVWRMLQZ.js.map
@@ -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 _chunkCHI7GJ3Kcjs = require('./chunk-CHI7GJ3K.cjs');
4
+ var _chunkUCNEQKITcjs = require('./chunk-UCNEQKIT.cjs');
5
5
 
6
6
 
7
7
 
@@ -12,7 +12,7 @@ var _chunkCHI7GJ3Kcjs = require('./chunk-CHI7GJ3K.cjs');
12
12
 
13
13
 
14
14
 
15
- var _chunk4ARYZTGVcjs = require('./chunk-4ARYZTGV.cjs');
15
+ var _chunkQJR32JM2cjs = require('./chunk-QJR32JM2.cjs');
16
16
 
17
17
 
18
18
 
@@ -20,7 +20,7 @@ var _chunkLEISUAHFcjs = require('./chunk-LEISUAHF.cjs');
20
20
 
21
21
 
22
22
 
23
- var _chunk7SMYBCYHcjs = require('./chunk-7SMYBCYH.cjs');
23
+ var _chunkIKUSKKFZcjs = require('./chunk-IKUSKKFZ.cjs');
24
24
 
25
25
 
26
26
 
@@ -183,7 +183,7 @@ function MobileNavPanel({ isOpen, config }) {
183
183
  );
184
184
  };
185
185
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
186
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkPRPZBXWZcjs.cn.call(void 0, "fixed inset-0 z-[9998]", _chunk7SMYBCYHcjs.OVERLAY_BACKDROP_CLASS), onClick: config.onClose }),
186
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkPRPZBXWZcjs.cn.call(void 0, "fixed inset-0 z-[9998]", _chunkIKUSKKFZcjs.OVERLAY_BACKDROP_CLASS), onClick: config.onClose }),
187
187
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
188
188
  "div",
189
189
  {
@@ -238,16 +238,16 @@ function MobileNavPanel({ isOpen, config }) {
238
238
  // src/components/navigation/ticket-alerts-button.tsx
239
239
 
240
240
  function TicketAlertsButton({ href, onNavigate, disabled, className }) {
241
- const live = _chunkCHI7GJ3Kcjs.useOptionalTicketLive.call(void 0, );
241
+ const live = _chunkUCNEQKITcjs.useOptionalTicketLive.call(void 0, );
242
242
  if (!live || !live.authed || live.unreadTotal === 0) return null;
243
243
  const targetId = live.nextUnreadTicketId;
244
- const target = targetId ? _chunk4ARYZTGVcjs.buildTicketOpenHref.call(void 0, href, targetId) : href;
244
+ const target = targetId ? _chunkQJR32JM2cjs.buildTicketOpenHref.call(void 0, href, targetId) : href;
245
245
  const handleClick = () => {
246
246
  if (onNavigate) onNavigate(target);
247
247
  else window.location.assign(target);
248
248
  };
249
249
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
250
- _chunk4ARYZTGVcjs.HeaderButton,
250
+ _chunkQJR32JM2cjs.HeaderButton,
251
251
  {
252
252
  icon: (
253
253
  // Glyph inherits HeaderButton's standard cell coloring (secondary at
@@ -257,7 +257,7 @@ function TicketAlertsButton({ href, onNavigate, disabled, className }) {
257
257
  // existing while updates are unread — never by tinting the glyph.
258
258
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "relative inline-flex", children: [
259
259
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGSQM4PDRcjs.LifeBuoyIcon, { className: "h-6 w-6" }),
260
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4ARYZTGVcjs.UnreadCountBadge, { count: live.unreadTotal })
260
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQJR32JM2cjs.UnreadCountBadge, { count: live.unreadTotal })
261
261
  ] })
262
262
  ),
263
263
  "aria-label": `Support tickets \u2014 ${live.unreadTotal} unread ${live.unreadTotal === 1 ? "update" : "updates"}`,
@@ -575,7 +575,7 @@ function Header({ config }) {
575
575
  leading: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
576
576
  !!_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 }),
577
577
  _optionalChain([config, 'access', _15 => _15.mobile, 'optionalAccess', _16 => _16.enabled]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
578
- _chunk4ARYZTGVcjs.HeaderButton,
578
+ _chunkQJR32JM2cjs.HeaderButton,
579
579
  {
580
580
  className: "border-r border-ods-border lg:hidden",
581
581
  onClick: () => {
@@ -676,7 +676,7 @@ function HeaderSkeleton({ config }) {
676
676
  // src/components/navigation/client-only-header.tsx
677
677
 
678
678
  function ClientOnlyHeader({ config, skeleton }) {
679
- const isClient = _chunk7SMYBCYHcjs.useIsHydrated.call(void 0, );
679
+ const isClient = _chunkIKUSKKFZcjs.useIsHydrated.call(void 0, );
680
680
  if (!isClient) {
681
681
  return skeleton || /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HeaderSkeleton, { config });
682
682
  }
@@ -690,7 +690,7 @@ var _framermotion = require('framer-motion');
690
690
 
691
691
  function SlidingSidebar({ config }) {
692
692
  const [expandedItems, setExpandedItems] = _react.useState.call(void 0, /* @__PURE__ */ new Set());
693
- const mounted = _chunk7SMYBCYHcjs.useIsHydrated.call(void 0, );
693
+ const mounted = _chunkIKUSKKFZcjs.useIsHydrated.call(void 0, );
694
694
  const headerHeight = _chunkZI27ALYXcjs.useHeaderHeight.call(void 0, );
695
695
  const asideRef = _react.useRef.call(void 0, null);
696
696
  const prefersReducedMotion = _framermotion.useReducedMotion.call(void 0, );
@@ -822,7 +822,7 @@ function SlidingSidebar({ config }) {
822
822
  duration: 0.3,
823
823
  ease: [0.4, 0, 0.2, 1]
824
824
  },
825
- className: _chunkPRPZBXWZcjs.cn.call(void 0, "fixed inset-0 z-[45]", _chunk7SMYBCYHcjs.OVERLAY_BACKDROP_CLASS),
825
+ className: _chunkPRPZBXWZcjs.cn.call(void 0, "fixed inset-0 z-[45]", _chunkIKUSKKFZcjs.OVERLAY_BACKDROP_CLASS),
826
826
  onClick: () => config.onClose()
827
827
  }
828
828
  ) }),
@@ -904,21 +904,31 @@ var NavigationSidebarItemButton = _react.memo.call(void 0, function NavigationSi
904
904
  const unreadCount = _nullishCoalesce(item.unreadCount, () => ( 0));
905
905
  const hasUnread = unreadCount > 0;
906
906
  const className = _chunkPRPZBXWZcjs.cn.call(void 0,
907
- "relative flex w-full items-center justify-start",
907
+ // `isolate` scopes the hover layer's negative z-index to this row, so it
908
+ // paints over the row's own background and under its content instead of
909
+ // sliding behind the sidebar.
910
+ "relative isolate flex w-full items-center justify-start",
908
911
  "h-14 p-[var(--spacing-system-m)]",
909
- // 150ms, not 300: the outgoing and incoming entries cross-fade, so for the
910
- // whole duration TWO rows read as half-active. At 300ms that window is long
911
- // enough to look like a flicker rather than a transition.
912
- "transition-colors duration-150",
913
- "[&_svg]:transition-colors [&_svg]:duration-150",
912
+ // The hover/pending wash is its own LAYER, and that separation is the whole
913
+ // point. Hover and active both want the row's background-color, so a
914
+ // `transition-colors` that smooths hover necessarily smooths the accent too
915
+ // — and it runs on the OUTGOING row as well as the incoming one. Measured on
916
+ // a real navigation: for 150ms two rows carried the accent background AND
917
+ // the accent bar, mid-fade, with nothing to say which one was the page you
918
+ // were actually on. Shortening it (300ms -> 150ms) only shortened the lie.
919
+ //
920
+ // Split apart, each gets the timing its meaning calls for: the wash fades,
921
+ // because it is decoration reacting to a cursor; the accent switches in a
922
+ // single frame, because it is a statement of fact — exactly one row is the
923
+ // current page, at every instant, including the instant the route commits.
924
+ "after:pointer-events-none after:absolute after:inset-0 after:-z-10 after:bg-ods-bg-hover after:opacity-0 after:transition-opacity after:duration-150 after:content-['']",
914
925
  "before:absolute before:bottom-0 before:left-0 before:top-0 before:w-1 before:content-['']",
915
- "before:transition-colors before:duration-150",
916
926
  // Pending borrows the HOVER weight and nothing else — no accent bar, no
917
927
  // accent text, no `aria-current`. It says "this row is working", not "this
918
928
  // is where you are", and it reads as the row staying pressed under the
919
929
  // cursor, which is exactly what happened.
920
- !isActive && !disabled && "text-ods-text-primary hover:bg-ods-bg-hover [&_svg]:fill-ods-text-secondary",
921
- !isActive && !disabled && isPending && "bg-ods-bg-hover",
930
+ !isActive && !disabled && "text-ods-text-primary hover:after:opacity-100 [&_svg]:fill-ods-text-secondary",
931
+ !isActive && !disabled && isPending && "after:opacity-100",
922
932
  !isActive && disabled && "text-ods-text-secondary [&_svg]:fill-ods-text-secondary",
923
933
  isActive && !disabled && [
924
934
  "bg-[var(--ods-open-yellow-light)] text-ods-accent",
@@ -933,7 +943,7 @@ var NavigationSidebarItemButton = _react.memo.call(void 0, function NavigationSi
933
943
  _react.cloneElement.call(void 0, item.icon, {
934
944
  color: isActive && !disabled ? "text-ods-accent" : "text-ods-text-secondary"
935
945
  }),
936
- hasUnread && !showLabel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4ARYZTGVcjs.UnreadDot, { size: "fixed" })
946
+ hasUnread && !showLabel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQJR32JM2cjs.UnreadDot, { size: "fixed" })
937
947
  ] }),
938
948
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
939
949
  "span",
@@ -1031,7 +1041,7 @@ function NavigationSidebar({ config, disabled = false }) {
1031
1041
  setTabletFor(isTablet);
1032
1042
  if (isTablet) setTabletMinimized(true);
1033
1043
  }
1034
- const hydrated = _chunk7SMYBCYHcjs.useIsHydrated.call(void 0, );
1044
+ const hydrated = _chunkIKUSKKFZcjs.useIsHydrated.call(void 0, );
1035
1045
  const minimized = hydrated ? isTablet ? tabletMinimized : desktopMinimized : _nullishCoalesce(config.minimized, () => ( false));
1036
1046
  const [transitionsEnabled, setTransitionsEnabled] = _react.useState.call(void 0, false);
1037
1047
  const isOverlayOpen = isTablet && !minimized;
@@ -1399,7 +1409,7 @@ var AppHeader = _react2.default.memo(function AppHeaderImpl({
1399
1409
  leading: (
1400
1410
  // Mobile: Burger Menu Button
1401
1411
  !isMdUp && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1402
- _chunk4ARYZTGVcjs.HeaderButton,
1412
+ _chunkQJR32JM2cjs.HeaderButton,
1403
1413
  {
1404
1414
  onClick: onToggleMobileMenu,
1405
1415
  isActive: isMobileMenuOpen,
@@ -1425,7 +1435,7 @@ var AppHeader = _react2.default.memo(function AppHeaderImpl({
1425
1435
  center: showSearch ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HeaderGlobalSearch, { onSubmit: onSearch, className: _chunkPRPZBXWZcjs.cn.call(void 0, "w-full", dimmedClass) }) : void 0,
1426
1436
  sideActions: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1427
1437
  showSearch && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1428
- _chunk4ARYZTGVcjs.HeaderButton,
1438
+ _chunkQJR32JM2cjs.HeaderButton,
1429
1439
  {
1430
1440
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWZW7C7TFcjs.SearchIcon, { className: "h-6 w-6" }),
1431
1441
  "aria-label": "Search",
@@ -1442,7 +1452,7 @@ var AppHeader = _react2.default.memo(function AppHeaderImpl({
1442
1452
  className: _chunkPRPZBXWZcjs.cn.call(void 0, "hidden lg:flex", dimmedClass)
1443
1453
  }
1444
1454
  ),
1445
- showTimeTracker && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4ARYZTGVcjs.TimeTrackerHeaderButton, { disabled, className: _chunkPRPZBXWZcjs.cn.call(void 0, cellDivider, dimmedClass) }),
1455
+ showTimeTracker && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQJR32JM2cjs.TimeTrackerHeaderButton, { disabled, className: _chunkPRPZBXWZcjs.cn.call(void 0, cellDivider, dimmedClass) }),
1446
1456
  showNotifications && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1447
1457
  NotificationsHeaderButton,
1448
1458
  {
@@ -1462,7 +1472,7 @@ var AppHeader = _react2.default.memo(function AppHeaderImpl({
1462
1472
  ),
1463
1473
  isMdUp && showUser && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunk3QDJLLD2cjs.DropdownMenu, { children: [
1464
1474
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3QDJLLD2cjs.DropdownMenuTrigger, { asChild: true, disabled, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1465
- _chunk4ARYZTGVcjs.HeaderButton,
1475
+ _chunkQJR32JM2cjs.HeaderButton,
1466
1476
  {
1467
1477
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1468
1478
  _chunkNNFQLTJ3cjs.SquareAvatar,
@@ -1546,12 +1556,12 @@ var AppHeader = _react2.default.memo(function AppHeaderImpl({
1546
1556
  );
1547
1557
  });
1548
1558
  function NotificationsHeaderButton({ fallbackUnreadCount, disabled, dimmedClass }) {
1549
- const ctx = _chunk4ARYZTGVcjs.useOptionalNotifications.call(void 0, );
1559
+ const ctx = _chunkQJR32JM2cjs.useOptionalNotifications.call(void 0, );
1550
1560
  const hasUnread = (_nullishCoalesce(_optionalChain([ctx, 'optionalAccess', _94 => _94.unreadCount]), () => ( fallbackUnreadCount))) > 0;
1551
1561
  const isActive = _nullishCoalesce(_optionalChain([ctx, 'optionalAccess', _95 => _95.isOpen]), () => ( false));
1552
1562
  const onClick = _optionalChain([ctx, 'optionalAccess', _96 => _96.toggle]);
1553
1563
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1554
- _chunk4ARYZTGVcjs.HeaderButton,
1564
+ _chunkQJR32JM2cjs.HeaderButton,
1555
1565
  {
1556
1566
  icon: isActive ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGSQM4PDRcjs.XmarkIcon, { className: "h-6 w-6" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGSQM4PDRcjs.BellIcon, { className: "h-6 w-6" }),
1557
1567
  showUnreadDot: !isActive && hasUnread,
@@ -1690,7 +1700,7 @@ var MobileBurgerMenu = _react2.default.memo(function MobileBurgerMenuImpl({
1690
1700
  {
1691
1701
  className: _chunkPRPZBXWZcjs.cn.call(void 0,
1692
1702
  "absolute inset-0 z-[100] md:hidden",
1693
- _chunk7SMYBCYHcjs.OVERLAY_BACKDROP_CLASS,
1703
+ _chunkIKUSKKFZcjs.OVERLAY_BACKDROP_CLASS,
1694
1704
  "transition-all duration-300 motion-reduce:transition-none",
1695
1705
  isOpen ? "opacity-100" : "pointer-events-none opacity-0"
1696
1706
  ),
@@ -1825,7 +1835,7 @@ function AppLayout({
1825
1835
  }),
1826
1836
  []
1827
1837
  );
1828
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4ARYZTGVcjs.AppLayoutDrawerContainerContext.Provider, { value: drawerContainer, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4ARYZTGVcjs.AppLayoutDrawerCoordinationContext.Provider, { value: drawerCoordination, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkPRPZBXWZcjs.cn.call(void 0, "flex h-screen flex-col bg-ods-bg", className), children: [
1838
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQJR32JM2cjs.AppLayoutDrawerContainerContext.Provider, { value: drawerContainer, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQJR32JM2cjs.AppLayoutDrawerCoordinationContext.Provider, { value: drawerCoordination, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkPRPZBXWZcjs.cn.call(void 0, "flex h-screen flex-col bg-ods-bg", className), children: [
1829
1839
  topBar,
1830
1840
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative flex min-h-0 flex-1", children: [
1831
1841
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, NavigationSidebar, { config: sidebarConfig, disabled }),
@@ -1849,7 +1859,7 @@ function AppLayout({
1849
1859
  disabled
1850
1860
  }
1851
1861
  ),
1852
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4ARYZTGVcjs.NotificationDrawer, {}),
1862
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQJR32JM2cjs.NotificationDrawer, {}),
1853
1863
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref: setDrawerContainer, className: "relative flex flex-1 flex-col overflow-hidden", children: [
1854
1864
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "main", { className: _chunkPRPZBXWZcjs.cn.call(void 0, "flex-1 overflow-y-auto", mainClassName), children }),
1855
1865
  drawer
@@ -1878,4 +1888,4 @@ function AppLayout({
1878
1888
 
1879
1889
 
1880
1890
  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.NAVIGATION_SIDEBAR_WIDTH_VAR = NAVIGATION_SIDEBAR_WIDTH_VAR; exports.NavigationSidebar = NavigationSidebar; exports.HeaderGlobalSearch = HeaderGlobalSearch; exports.HeaderMingoButton = HeaderMingoButton; exports.HeaderOrganizationFilter = HeaderOrganizationFilter; exports.AppHeader = AppHeader; exports.MobileBurgerMenu = MobileBurgerMenu; exports.AppLayout = AppLayout;
1881
- //# sourceMappingURL=chunk-PZ27ELFP.cjs.map
1891
+ //# sourceMappingURL=chunk-JWKAJTNA.cjs.map