@flamingo-stack/openframe-frontend-core 0.0.704 → 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.
Files changed (90) hide show
  1. package/dist/{chunk-MGGGBHYD.cjs → chunk-2QEUFXNS.cjs} +10 -10
  2. package/dist/{chunk-LDPEQGKT.cjs → chunk-3MX5S4CF.cjs} +132 -80
  3. package/dist/{chunk-UK62YTH6.cjs → chunk-4I45Y3DN.cjs} +2 -2
  4. package/dist/{chunk-AMYY3PNL.cjs → chunk-4KX6OED2.cjs} +42 -42
  5. package/dist/{chunk-4DQMTBMK.cjs → chunk-6NJKKO73.cjs} +11 -11
  6. package/dist/{chunk-JEYRXT5L.js → chunk-6SEANMOU.js} +7 -7
  7. package/dist/{chunk-C7XGRLT5.cjs → chunk-7LS22BZU.cjs} +6 -6
  8. package/dist/{chunk-2JDVL7UV.js → chunk-7VVFKJY5.js} +70 -18
  9. package/dist/{chunk-7JIL3WOH.cjs → chunk-A75QY6CD.cjs} +14 -14
  10. package/dist/{chunk-VTASHWER.js → chunk-AQWZNP6A.js} +3 -3
  11. package/dist/{chunk-ZQFZSFQI.js → chunk-DENB2XJC.js} +2 -2
  12. package/dist/{chunk-FXENTYE5.js → chunk-DW7G4KG3.js} +1 -1
  13. package/dist/{chunk-I7DFUQMN.js → chunk-F6AFPNDF.js} +5 -6
  14. package/dist/{chunk-5QJDM6UV.js → chunk-F6I6XZMN.js} +3 -3
  15. package/dist/{chunk-4KGXLVCF.js → chunk-FCGC42TS.js} +3 -3
  16. package/dist/{chunk-2G546OND.js → chunk-G5A3PSPV.js} +19 -7
  17. package/dist/{chunk-N3TO7JV3.cjs → chunk-HPWWNJE7.cjs} +49 -49
  18. package/dist/{chunk-MI3JUJ75.cjs → chunk-IHERL5V4.cjs} +21 -21
  19. package/dist/{chunk-XIFOBQRQ.cjs → chunk-IKTQ3ZAG.cjs} +4 -4
  20. package/dist/{chunk-262YQFOS.cjs → chunk-JEZKGCZI.cjs} +24 -24
  21. package/dist/{chunk-L3IC42IF.cjs → chunk-KOWVJD4V.cjs} +17 -18
  22. package/dist/{chunk-IHU5ANUY.js → chunk-MKXO4Q5P.js} +1 -1
  23. package/dist/{chunk-IZGDG5X6.cjs → chunk-OUY3HHW6.cjs} +57 -45
  24. package/dist/{chunk-WUJNYGO2.js → chunk-PDWVPI3S.js} +0 -4
  25. package/dist/{chunk-ERCV6HHJ.js → chunk-PN2RKPDF.js} +4 -4
  26. package/dist/{chunk-7LFIKJX2.js → chunk-QFXRPRFT.js} +2 -2
  27. package/dist/{chunk-NRLJUBCS.js → chunk-RBDP4WDE.js} +2 -2
  28. package/dist/{chunk-C3BWIU7R.cjs → chunk-TYWLNCNH.cjs} +1 -5
  29. package/dist/{chunk-XATTBO5X.js → chunk-VA5T32XA.js} +1 -1
  30. package/dist/{chunk-LTSTC3N5.cjs → chunk-VESKITRQ.cjs} +379 -379
  31. package/dist/{chunk-HFJW24JJ.cjs → chunk-WA6GUYQ4.cjs} +79 -79
  32. package/dist/{chunk-QVSFBSWV.js → chunk-X5MQ7JRP.js} +4 -4
  33. package/dist/{chunk-XJKZ4IKT.cjs → chunk-YFBM2K6X.cjs} +4 -4
  34. package/dist/{chunk-6WQIUQUC.js → chunk-YHM5AWTT.js} +5 -5
  35. package/dist/{chunk-SYXQLETR.cjs → chunk-ZSAGLQOD.cjs} +9 -9
  36. package/dist/{chunk-HJAYVKWQ.js → chunk-ZSAO2HBW.js} +6 -6
  37. package/dist/components/case-studies/index.cjs +17 -17
  38. package/dist/components/case-studies/index.js +5 -5
  39. package/dist/components/chat/chat-input.d.ts.map +1 -1
  40. package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
  41. package/dist/components/chat/embeddable-chat.d.ts +8 -0
  42. package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
  43. package/dist/components/chat/index.cjs +5 -3
  44. package/dist/components/chat/index.d.ts +1 -1
  45. package/dist/components/chat/index.d.ts.map +1 -1
  46. package/dist/components/chat/index.js +4 -2
  47. package/dist/components/chat/mingo-chat-rail.d.ts +3 -1
  48. package/dist/components/chat/mingo-chat-rail.d.ts.map +1 -1
  49. package/dist/components/contact/index.cjs +6 -6
  50. package/dist/components/contact/index.js +5 -5
  51. package/dist/components/docs/index.cjs +9 -9
  52. package/dist/components/docs/index.js +8 -8
  53. package/dist/components/embeds/index.cjs +6 -6
  54. package/dist/components/embeds/index.js +5 -5
  55. package/dist/components/faq/index.cjs +6 -6
  56. package/dist/components/faq/index.js +5 -5
  57. package/dist/components/features/index.cjs +5 -5
  58. package/dist/components/features/index.js +4 -4
  59. package/dist/components/help-center-pages/index.cjs +81 -81
  60. package/dist/components/help-center-pages/index.js +16 -16
  61. package/dist/components/index.cjs +51 -47
  62. package/dist/components/index.js +19 -15
  63. package/dist/components/meeting-scheduler/index.cjs +32 -32
  64. package/dist/components/meeting-scheduler/index.js +4 -4
  65. package/dist/components/navigation/app-layout-side-panel.d.ts +18 -1
  66. package/dist/components/navigation/app-layout-side-panel.d.ts.map +1 -1
  67. package/dist/components/navigation/index.cjs +10 -8
  68. package/dist/components/navigation/index.d.ts +1 -0
  69. package/dist/components/navigation/index.d.ts.map +1 -1
  70. package/dist/components/navigation/index.js +9 -7
  71. package/dist/components/onboarding-guides/index.cjs +8 -8
  72. package/dist/components/onboarding-guides/index.js +7 -7
  73. package/dist/components/tickets/index.cjs +9 -9
  74. package/dist/components/tickets/index.js +8 -8
  75. package/dist/components/ui/index.cjs +7 -5
  76. package/dist/components/ui/index.js +6 -4
  77. package/dist/hooks/index.cjs +3 -3
  78. package/dist/hooks/index.js +2 -2
  79. package/dist/index.cjs +14 -10
  80. package/dist/index.js +12 -8
  81. package/package.json +1 -1
  82. package/src/components/chat/chat-input.tsx +5 -1
  83. package/src/components/chat/chat-message-enhanced.tsx +4 -3
  84. package/src/components/chat/embeddable-chat.tsx +64 -6
  85. package/src/components/chat/index.ts +1 -0
  86. package/src/components/chat/mingo-chat-rail.tsx +24 -7
  87. package/src/components/navigation/app-layout-side-panel.tsx +30 -2
  88. package/src/components/navigation/index.ts +1 -0
  89. package/src/components/platform/SoftwareSourceBadge.tsx +1 -1
  90. package/src/styles/app-globals.css +13 -0
@@ -21,7 +21,7 @@ import {
21
21
  useNearViewport,
22
22
  useResetOnPageHidden,
23
23
  useSuppressCloneFocus
24
- } from "./chunk-WUJNYGO2.js";
24
+ } from "./chunk-PDWVPI3S.js";
25
25
  import {
26
26
  useRouter
27
27
  } from "./chunk-GY4IZG22.js";
@@ -6306,6 +6306,7 @@ var ChatInput = forwardRef15((allProps, ref) => {
6306
6306
  isEmpty && !showPreview && /* @__PURE__ */ jsx31(
6307
6307
  "span",
6308
6308
  {
6309
+ "data-editor-ghost": true,
6309
6310
  className: cn(
6310
6311
  // One line, clipped with an ellipsis (Figma 954:28455): the
6311
6312
  // disabled copy is a sentence, and the panel's narrowest
@@ -6321,6 +6322,7 @@ var ChatInput = forwardRef15((allProps, ref) => {
6321
6322
  showPreview && /* @__PURE__ */ jsx31(
6322
6323
  "p",
6323
6324
  {
6325
+ "data-editor-ghost": true,
6324
6326
  className: cn(
6325
6327
  "pointer-events-none absolute inset-x-0 top-0 m-0 select-none truncate text-ods-text-secondary text-h4",
6326
6328
  hasChips && "!leading-9"
@@ -7416,7 +7418,7 @@ var ChatMessageEnhanced = forwardRef17(
7416
7418
  });
7417
7419
  };
7418
7420
  const isSystem = authorType === "system";
7419
- const showName = isSystem || authorType === "admin";
7421
+ const showName = isSystem || authorType === "admin" && !isUser;
7420
7422
  const displayName = name || (isUser ? "User" : assistantType === "mingo" ? "Mingo" : "Fae");
7421
7423
  const faceBox = "h-5 w-5 flex-shrink-0";
7422
7424
  const face = !showAvatar || isSystem ? null : !isUser && !avatar && assistantIcon ? /* @__PURE__ */ jsx36("span", { title: displayName, className: cn("flex items-center justify-center", faceBox), children: assistantIcon }) : !isUser && !avatar && assistantType ? (
@@ -10398,6 +10400,7 @@ function MingoChatRail({
10398
10400
  isLoadingHistory = false,
10399
10401
  loadError = false,
10400
10402
  onRetry,
10403
+ onExpand,
10401
10404
  className
10402
10405
  }) {
10403
10406
  const [searchOpen, setSearchOpen] = useState21(!!searchQuery?.trim());
@@ -10514,16 +10517,29 @@ function MingoChatRail({
10514
10517
  className,
10515
10518
  "data-accent": "mingo",
10516
10519
  "aria-label": "Mingo chats",
10517
- logo: /* @__PURE__ */ jsx61(
10518
- MingoIcon,
10519
- {
10520
- color: "currentColor",
10521
- eyesColor: "var(--ods-flamingo-cyan-base)",
10522
- cornerColor: "var(--ods-flamingo-cyan-base)",
10523
- className: "size-6 text-ods-text-primary",
10524
- "aria-hidden": true
10525
- }
10526
- ),
10520
+ logo: /* @__PURE__ */ jsxs45("div", { className: "flex flex-1 items-center justify-between", children: [
10521
+ /* @__PURE__ */ jsx61(
10522
+ MingoIcon,
10523
+ {
10524
+ color: "currentColor",
10525
+ eyesColor: "var(--ods-flamingo-cyan-base)",
10526
+ cornerColor: "var(--ods-flamingo-cyan-base)",
10527
+ className: "size-6 text-ods-text-primary",
10528
+ "aria-hidden": true
10529
+ }
10530
+ ),
10531
+ onExpand && /* @__PURE__ */ jsx61(
10532
+ Button,
10533
+ {
10534
+ variant: "transparent",
10535
+ size: "icon",
10536
+ "aria-label": "Expand chat",
10537
+ onClick: onExpand,
10538
+ className: "size-6 p-0 text-ods-text-secondary hover:text-ods-text-primary md:size-6",
10539
+ children: /* @__PURE__ */ jsx61(Arrow02LeftIcon, { size: 24 })
10540
+ }
10541
+ )
10542
+ ] }),
10527
10543
  items,
10528
10544
  sectionLabel: "Your Current Chats",
10529
10545
  sectionActions: listMenu.length > 0 ? /* @__PURE__ */ jsx61(
@@ -25808,6 +25824,7 @@ import { Fragment as Fragment36, jsx as jsx105, jsxs as jsxs80 } from "react/jsx
25808
25824
  var HISTORY_RAIL_WIDTH = 320;
25809
25825
  var MINGO_V2_RAIL_WIDTH = 296;
25810
25826
  var CHAT_BLOCK_MIN_WIDTH = 400;
25827
+ var MINGO_V2_SPLIT_WIDTH = MINGO_V2_RAIL_WIDTH + CHAT_BLOCK_MIN_WIDTH;
25811
25828
  var SPLIT_MIN_WIDTH = HISTORY_RAIL_WIDTH + CHAT_BLOCK_MIN_WIDTH;
25812
25829
  var DRAWER_DEFAULT_WIDTH_RATIO = 0.5;
25813
25830
  var DRAWER_WIDTH_KEY = "mingo-chat-width-v4";
@@ -26154,6 +26171,7 @@ function EmbeddableChatInner({
26154
26171
  appearance = CHAT_APPEARANCE.CLASSIC,
26155
26172
  onCollapse,
26156
26173
  collapseTo = "list",
26174
+ onExpand,
26157
26175
  dialogStatusOf,
26158
26176
  userDisplayName,
26159
26177
  userAvatarUrl,
@@ -26474,15 +26492,17 @@ function EmbeddableChatInner({
26474
26492
  () => ({ closeChat: handleNavigationClose }),
26475
26493
  [handleNavigationClose]
26476
26494
  );
26495
+ const askAboutRef = useRef39(discussRef);
26496
+ const askAbout = useCallback28((reference) => askAboutRef.current(reference), []);
26477
26497
  const renderEntityCard = useCallback28(
26478
26498
  (reference) => renderChatInlineEntityCard(reference, {
26479
- onDiscuss: discussRef,
26499
+ onDiscuss: askAbout,
26480
26500
  onDisplay: displayRef,
26481
26501
  baseRoute: resolvedBaseRoute,
26482
26502
  chipBasePlatform,
26483
26503
  extras
26484
26504
  }),
26485
- [discussRef, displayRef, resolvedBaseRoute, chipBasePlatform, extras]
26505
+ [askAbout, displayRef, resolvedBaseRoute, chipBasePlatform, extras]
26486
26506
  );
26487
26507
  const mingoAssistantIcon = useMemo31(
26488
26508
  () => effectiveAssistantIcon ? /* @__PURE__ */ jsx105(EntityIcon, { icon: effectiveAssistantIcon, size: 24 }) : /* @__PURE__ */ jsx105(MingoIcon, { className: "h-6 w-6", cornerColor: "var(--ods-flamingo-cyan-base)" }),
@@ -26594,11 +26614,11 @@ function EmbeddableChatInner({
26594
26614
  const detail = e.detail;
26595
26615
  if (!detail || detail.source !== source) return;
26596
26616
  setIsOpen(true);
26597
- setTimeout(() => discussRef(detail.ref), 0);
26617
+ setTimeout(() => askAbout(detail.ref), 0);
26598
26618
  };
26599
26619
  window.addEventListener("ask-ai:open-with-ref", handler);
26600
26620
  return () => window.removeEventListener("ask-ai:open-with-ref", handler);
26601
- }, [source, discussRef, setIsOpen]);
26621
+ }, [source, askAbout, setIsOpen]);
26602
26622
  useEffect41(() => {
26603
26623
  const handler = (e) => {
26604
26624
  const detail = e.detail;
@@ -26653,11 +26673,11 @@ function EmbeddableChatInner({
26653
26673
  baseRoute: resolvedBaseRoute,
26654
26674
  chipBasePlatform,
26655
26675
  onClose: handleNavigationClose,
26656
- onDiscuss: discussRef
26676
+ onDiscuss: askAbout
26657
26677
  }
26658
26678
  ) });
26659
26679
  },
26660
- [chatLoading, messages.length, resolvedBaseRoute, chipBasePlatform, handleNavigationClose, discussRef]
26680
+ [chatLoading, messages.length, resolvedBaseRoute, chipBasePlatform, handleNavigationClose, askAbout]
26661
26681
  );
26662
26682
  const [portalHost, setPortalHost] = useState50(null);
26663
26683
  const [panelBoundary, setPanelBoundary] = useState50(null);
@@ -26728,6 +26748,29 @@ function EmbeddableChatInner({
26728
26748
  const handleNewChat = useCallback28(() => {
26729
26749
  resetToNewChat();
26730
26750
  }, [resetToNewChat]);
26751
+ const queuedAskRef = useRef39(null);
26752
+ useEffect41(() => {
26753
+ askAboutRef.current = (reference) => {
26754
+ if (!isViewingArchived) {
26755
+ discussRef(reference);
26756
+ return;
26757
+ }
26758
+ queuedAskRef.current = reference;
26759
+ if (archiveOpen) closeArchive();
26760
+ resetToNewChat();
26761
+ setComposeOpen(true);
26762
+ };
26763
+ });
26764
+ useEffect41(() => {
26765
+ const reference = queuedAskRef.current;
26766
+ if (!reference || activeDialogId != null) return;
26767
+ queuedAskRef.current = null;
26768
+ discussRef(reference);
26769
+ }, [activeDialogId, discussRef]);
26770
+ const lastDialogIdRef = useRef39(null);
26771
+ useEffect41(() => {
26772
+ if (activeDialogId && !isViewingArchived) lastDialogIdRef.current = activeDialogId;
26773
+ }, [activeDialogId, isViewingArchived]);
26731
26774
  const [pendingDraft, setPendingDraft] = useState50(null);
26732
26775
  const [seededDraft, setSeededDraft] = useState50(null);
26733
26776
  if (pendingDraft && seededDraft !== pendingDraft) {
@@ -27077,6 +27120,14 @@ function EmbeddableChatInner({
27077
27120
  {
27078
27121
  ...mingoRailProps,
27079
27122
  onNewChat: () => setComposeOpen(true),
27123
+ onExpand: onExpand && (() => {
27124
+ const last = lastDialogIdRef.current;
27125
+ const target = last && dialogs.some((d) => d.id === last) ? last : dialogs[0]?.id;
27126
+ if (archiveOpen) closeArchive();
27127
+ if (target) handleSelectDialog(target);
27128
+ else handleNewChat();
27129
+ onExpand();
27130
+ }),
27080
27131
  className: "w-full border-r-0 duration-200 animate-in fade-in-0"
27081
27132
  }
27082
27133
  ) : stackedListView ? (
@@ -28061,6 +28112,7 @@ export {
28061
28112
  isHistoricalUserTurn,
28062
28113
  buildStreamFrames,
28063
28114
  MINGO_V2_RAIL_WIDTH,
28115
+ MINGO_V2_SPLIT_WIDTH,
28064
28116
  EmbeddableChat,
28065
28117
  ProxyCredentialsPanel
28066
28118
  };
@@ -5,10 +5,10 @@ var _chunkXOYH2YQEcjs = require('./chunk-XOYH2YQE.cjs');
5
5
 
6
6
 
7
7
 
8
- var _chunkLTSTC3N5cjs = require('./chunk-LTSTC3N5.cjs');
8
+ var _chunkVESKITRQcjs = require('./chunk-VESKITRQ.cjs');
9
9
 
10
10
 
11
- var _chunkMGGGBHYDcjs = require('./chunk-MGGGBHYD.cjs');
11
+ var _chunk2QEUFXNScjs = require('./chunk-2QEUFXNS.cjs');
12
12
 
13
13
 
14
14
  var _chunkBIZNSF3Ucjs = require('./chunk-BIZNSF3U.cjs');
@@ -16,12 +16,12 @@ var _chunkBIZNSF3Ucjs = require('./chunk-BIZNSF3U.cjs');
16
16
 
17
17
 
18
18
 
19
- var _chunkLDPEQGKTcjs = require('./chunk-LDPEQGKT.cjs');
19
+ var _chunk3MX5S4CFcjs = require('./chunk-3MX5S4CF.cjs');
20
20
 
21
21
 
22
22
 
23
23
 
24
- var _chunkC3BWIU7Rcjs = require('./chunk-C3BWIU7R.cjs');
24
+ var _chunkTYWLNCNHcjs = require('./chunk-TYWLNCNH.cjs');
25
25
 
26
26
 
27
27
  var _chunk7DNL734Scjs = require('./chunk-7DNL734S.cjs');
@@ -56,7 +56,7 @@ function FaqAccordion({ items, defaultOpenIds = [] }) {
56
56
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
57
57
  "div",
58
58
  {
59
- id: _chunkLDPEQGKTcjs.faqItemAnchor.call(void 0, item.id),
59
+ id: _chunk3MX5S4CFcjs.faqItemAnchor.call(void 0, item.id),
60
60
  className: "scroll-mt-24 transition-colors hover:bg-ods-bg-hover",
61
61
  children: [
62
62
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
@@ -149,7 +149,7 @@ function groupFaqsBySection(faqs) {
149
149
  }
150
150
  let group = byName.get(name);
151
151
  if (!group) {
152
- group = { section: name, slug: _chunkLDPEQGKTcjs.faqSectionSlug.call(void 0, name), items: [] };
152
+ group = { section: name, slug: _chunk3MX5S4CFcjs.faqSectionSlug.call(void 0, name), items: [] };
153
153
  byName.set(name, group);
154
154
  }
155
155
  group.items.push(item);
@@ -192,7 +192,7 @@ function GroupedFaqList({
192
192
  }
193
193
  if (bestId) setActiveSlug(bestId);
194
194
  },
195
- { rootMargin: `-${_chunkC3BWIU7Rcjs.STICKY_HEADER_OFFSET_PX}px 0px -55% 0px`, threshold: 0 }
195
+ { rootMargin: `-${_chunkTYWLNCNHcjs.STICKY_HEADER_OFFSET_PX}px 0px -55% 0px`, threshold: 0 }
196
196
  );
197
197
  for (const group of navGroupsRef.current) {
198
198
  const el = group.slug ? document.getElementById(group.slug) : null;
@@ -202,7 +202,7 @@ function GroupedFaqList({
202
202
  }, [slugKey]);
203
203
  const [hashTarget, setHashTarget] = _react.useState.call(void 0, null);
204
204
  _react.useEffect.call(void 0, () => {
205
- const refresh = () => setHashTarget(_chunkLDPEQGKTcjs.parseFaqHash.call(void 0, window.location.hash));
205
+ const refresh = () => setHashTarget(_chunk3MX5S4CFcjs.parseFaqHash.call(void 0, window.location.hash));
206
206
  refresh();
207
207
  window.addEventListener("hashchange", refresh);
208
208
  return () => window.removeEventListener("hashchange", refresh);
@@ -219,7 +219,7 @@ function GroupedFaqList({
219
219
  }, [groups, hashTarget]);
220
220
  const accordionKeySuffix = _optionalChain([hashTarget, 'optionalAccess', _8 => _8.kind]) === "item" ? `item:${hashTarget.rawId}` : "default";
221
221
  const scrollDep = `${groups.length}|` + (_optionalChain([hashTarget, 'optionalAccess', _9 => _9.kind]) === "item" ? `item:${hashTarget.rawId}` : _optionalChain([hashTarget, 'optionalAccess', _10 => _10.kind]) === "section" ? `section:${hashTarget.slug}` : "none");
222
- _chunkMGGGBHYDcjs.useScrollToHash.call(void 0, scrollDep, { headerOffset: _chunkC3BWIU7Rcjs.STICKY_HEADER_OFFSET_PX });
222
+ _chunk2QEUFXNScjs.useScrollToHash.call(void 0, scrollDep, { headerOffset: _chunkTYWLNCNHcjs.STICKY_HEADER_OFFSET_PX });
223
223
  const [pillSyncedHash, setPillSyncedHash] = _react.useState.call(void 0, hashTarget);
224
224
  if (pillSyncedHash !== hashTarget) {
225
225
  setPillSyncedHash(hashTarget);
@@ -227,8 +227,8 @@ function GroupedFaqList({
227
227
  }
228
228
  const handleJump = _react.useCallback.call(void 0, (e, slug) => {
229
229
  e.preventDefault();
230
- _chunkC3BWIU7Rcjs.navigateSamePageHash.call(void 0, "#" + slug, {
231
- headerOffset: _chunkC3BWIU7Rcjs.STICKY_HEADER_OFFSET_PX,
230
+ _chunkTYWLNCNHcjs.navigateSamePageHash.call(void 0, "#" + slug, {
231
+ headerOffset: _chunkTYWLNCNHcjs.STICKY_HEADER_OFFSET_PX,
232
232
  history: "replace"
233
233
  });
234
234
  }, []);
@@ -310,7 +310,7 @@ function FaqSection({
310
310
  "script",
311
311
  {
312
312
  type: "application/ld+json",
313
- dangerouslySetInnerHTML: { __html: _chunkC3BWIU7Rcjs.serializeJsonLd.call(void 0, schema) }
313
+ dangerouslySetInnerHTML: { __html: _chunkTYWLNCNHcjs.serializeJsonLd.call(void 0, schema) }
314
314
  }
315
315
  )
316
316
  ] });
@@ -336,7 +336,7 @@ function FaqDocumentPage({
336
336
  label: _nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _16 => _16.label]), () => ( "Back to home")),
337
337
  onClick: () => router.push(_nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _17 => _17.href]), () => ( "/")))
338
338
  };
339
- const inner = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLTSTC3N5cjs.PageLayout, { title, subtitle, backButton: backCfg, titleSize: "h1", titleWrap: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
339
+ const inner = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVESKITRQcjs.PageLayout, { title, subtitle, backButton: backCfg, titleSize: "h1", titleWrap: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
340
340
  FaqSection,
341
341
  {
342
342
  initialFaqs,
@@ -349,7 +349,7 @@ function FaqDocumentPage({
349
349
  minResults
350
350
  }
351
351
  ) });
352
- return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLTSTC3N5cjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
352
+ return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVESKITRQcjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
353
353
  }
354
354
 
355
355
 
@@ -8,17 +8,17 @@ import {
8
8
  SelectTrigger,
9
9
  SelectValue,
10
10
  Textarea
11
- } from "./chunk-4KGXLVCF.js";
11
+ } from "./chunk-FCGC42TS.js";
12
12
  import {
13
13
  useContactSubmission,
14
14
  useHumanitySignals,
15
15
  useRescuedForm
16
- } from "./chunk-IHU5ANUY.js";
16
+ } from "./chunk-MKXO4Q5P.js";
17
17
  import {
18
18
  ChatAttachmentAddButton,
19
19
  ChatAttachmentChipStrip,
20
20
  useChatAttachments
21
- } from "./chunk-2JDVL7UV.js";
21
+ } from "./chunk-7VVFKJY5.js";
22
22
  import {
23
23
  SECTION_HEADING_CLASS,
24
24
  accentSentenceMarks
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import {
3
3
  DEFAULT_FOLDER_INDEX_FILE
4
- } from "./chunk-4KGXLVCF.js";
4
+ } from "./chunk-FCGC42TS.js";
5
5
  import {
6
6
  scrollElementIntoView
7
- } from "./chunk-WUJNYGO2.js";
7
+ } from "./chunk-PDWVPI3S.js";
8
8
  import {
9
9
  cn
10
10
  } from "./chunk-7RXWKTAP.js";
@@ -10,7 +10,7 @@ import {
10
10
  StatusFilterComponent,
11
11
  TASK_TYPE_LABELS,
12
12
  TASK_TYPE_TEXT_COLORS
13
- } from "./chunk-4KGXLVCF.js";
13
+ } from "./chunk-FCGC42TS.js";
14
14
  import {
15
15
  usePathname,
16
16
  useRouter,
@@ -4,14 +4,13 @@ import {
4
4
  getOSLabel,
5
5
  getShellLabel,
6
6
  getToolLabel
7
- } from "./chunk-4KGXLVCF.js";
7
+ } from "./chunk-FCGC42TS.js";
8
8
  import {
9
9
  useOnboardingState
10
- } from "./chunk-IHU5ANUY.js";
10
+ } from "./chunk-MKXO4Q5P.js";
11
11
  import {
12
- ToolIcon,
13
- cn as cn2
14
- } from "./chunk-WUJNYGO2.js";
12
+ ToolIcon
13
+ } from "./chunk-PDWVPI3S.js";
15
14
  import {
16
15
  BashIcon,
17
16
  CmdIcon,
@@ -88,7 +87,7 @@ var sourceConfig = {
88
87
  };
89
88
  var SoftwareSourceBadge = ({ source, className }) => {
90
89
  const config = sourceConfig[source] || { label: source, icon: /* @__PURE__ */ jsx2(PackageIcon, { className: "h-4 w-4" }) };
91
- return /* @__PURE__ */ jsxs2("span", { className: cn2("inline-flex items-center gap-2 text-ods-text-primary", className), children: [
90
+ return /* @__PURE__ */ jsxs2("span", { className: cn("inline-flex items-center gap-2 text-ods-text-primary", className), children: [
92
91
  config.icon,
93
92
  config.label
94
93
  ] });
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  SearchInput
4
- } from "./chunk-4KGXLVCF.js";
4
+ } from "./chunk-FCGC42TS.js";
5
5
  import {
6
6
  contentFetch
7
7
  } from "./chunk-MP2C3LJ4.js";
@@ -12,10 +12,10 @@ import {
12
12
  resolveExternalNavigation,
13
13
  resolveSourceIcon,
14
14
  stripSameOriginToPath
15
- } from "./chunk-2JDVL7UV.js";
15
+ } from "./chunk-7VVFKJY5.js";
16
16
  import {
17
17
  useDebounce
18
- } from "./chunk-WUJNYGO2.js";
18
+ } from "./chunk-PDWVPI3S.js";
19
19
  import {
20
20
  useRouter
21
21
  } from "./chunk-GY4IZG22.js";
@@ -23,7 +23,7 @@ import {
23
23
  useLocalStorage,
24
24
  useNotificationPermission,
25
25
  useToast
26
- } from "./chunk-IHU5ANUY.js";
26
+ } from "./chunk-MKXO4Q5P.js";
27
27
  import {
28
28
  Pagination
29
29
  } from "./chunk-UT4YHQZW.js";
@@ -97,7 +97,7 @@ import {
97
97
  useIsHydrated,
98
98
  useResizablePanelSize,
99
99
  useScrollFade
100
- } from "./chunk-2JDVL7UV.js";
100
+ } from "./chunk-7VVFKJY5.js";
101
101
  import {
102
102
  NEAR_VIEWPORT_ROOT_MARGIN,
103
103
  ToolIcon,
@@ -110,7 +110,7 @@ import {
110
110
  useDebounce,
111
111
  useInView,
112
112
  useNearViewport
113
- } from "./chunk-WUJNYGO2.js";
113
+ } from "./chunk-PDWVPI3S.js";
114
114
  import {
115
115
  usePathname,
116
116
  useRouter,
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  useOptionalTicketLive
4
- } from "./chunk-7LFIKJX2.js";
4
+ } from "./chunk-QFXRPRFT.js";
5
5
  import {
6
6
  AppLayoutDrawerContainerContext,
7
7
  AppLayoutDrawerCoordinationContext,
@@ -13,18 +13,18 @@ import {
13
13
  UnreadDot,
14
14
  buildTicketOpenHref,
15
15
  useOptionalNotifications
16
- } from "./chunk-4KGXLVCF.js";
16
+ } from "./chunk-FCGC42TS.js";
17
17
  import {
18
18
  useFocusTrap,
19
19
  useLocalStorage
20
- } from "./chunk-IHU5ANUY.js";
20
+ } from "./chunk-MKXO4Q5P.js";
21
21
  import {
22
22
  OVERLAY_BACKDROP_CLASS,
23
23
  useIsHydrated
24
- } from "./chunk-2JDVL7UV.js";
24
+ } from "./chunk-7VVFKJY5.js";
25
25
  import {
26
26
  useHeaderHeight
27
- } from "./chunk-WUJNYGO2.js";
27
+ } from "./chunk-PDWVPI3S.js";
28
28
  import {
29
29
  LogOutIcon,
30
30
  MingoIcon,
@@ -1682,6 +1682,7 @@ import {
1682
1682
  } from "react";
1683
1683
  import { jsx as jsx18, jsxs as jsxs16 } from "react/jsx-runtime";
1684
1684
  var SIDE_PANEL_INSET = 16;
1685
+ var SIDE_PANEL_FRAME_WIDTH = 2;
1685
1686
  var MOBILE_QUERY = `not all and ${breakpoints.md}`;
1686
1687
  var REDUCED_MOTION_QUERY = "(prefers-reduced-motion: reduce)";
1687
1688
  var MORPH_MS = 300;
@@ -1762,6 +1763,7 @@ function useAppLayoutSidePanel(config, row) {
1762
1763
  const minContentWidth = config?.minContentWidth ?? 400;
1763
1764
  const collapsed = config?.collapsed ?? false;
1764
1765
  const minimum = { width: minWidth, expanded: false };
1766
+ const defaultWidth = Math.max(minWidth, config?.defaultWidth ?? minWidth);
1765
1767
  const [rowWidth, setRowWidth] = useState4(0);
1766
1768
  useIsomorphicLayoutEffect(() => {
1767
1769
  if (!enabled || !row) return void 0;
@@ -1775,7 +1777,7 @@ function useAppLayoutSidePanel(config, row) {
1775
1777
  const reduceMotion = useMediaQuery(REDUCED_MOTION_QUERY) === true;
1776
1778
  const [morph, setMorph] = useState4(null);
1777
1779
  const [liveWidth, setLiveWidth] = useState4(null);
1778
- const [storedSize, setStoredSize] = useStoredSize(config?.storageKey, minimum);
1780
+ const [storedSize, setStoredSize] = useStoredSize(config?.storageKey, { width: defaultWidth, expanded: false });
1779
1781
  const [ownIsOpen, setOwnIsOpen] = useState4(false);
1780
1782
  const isOpen = config?.open ?? ownIsOpen;
1781
1783
  const onOpenChange = config?.onOpenChange;
@@ -1822,6 +1824,7 @@ function useAppLayoutSidePanel(config, row) {
1822
1824
  let collapsesTo = null;
1823
1825
  if (layout.mode === "full" && layout.canDock) collapsesTo = layout.dockedWidth > minWidth ? "column" : "minimum";
1824
1826
  else if (layout.mode === "docked" && layout.width > minWidth) collapsesTo = "minimum";
1827
+ const canExpand = layout.mode === "docked" && layout.width <= minWidth && defaultWidth > minWidth && layout.maxDockedWidth > minWidth;
1825
1828
  return {
1826
1829
  ...layout,
1827
1830
  minWidth,
@@ -1842,6 +1845,12 @@ function useAppLayoutSidePanel(config, row) {
1842
1845
  setSize({ width: minWidth, expanded: false });
1843
1846
  }
1844
1847
  },
1848
+ canExpand,
1849
+ expand: () => {
1850
+ if (!canExpand) return;
1851
+ animate("narrow");
1852
+ dock(defaultWidth);
1853
+ },
1845
1854
  toggle: () => setIsOpen(!isOpen),
1846
1855
  close: () => setIsOpen(false),
1847
1856
  resize,
@@ -2024,7 +2033,9 @@ function AppLayoutSidePanel({ config, state }) {
2024
2033
  canClose: mode === "overlay" || mode === "full" && !canDock,
2025
2034
  close,
2026
2035
  collapsesTo: state.collapsesTo,
2027
- collapse: state.collapse
2036
+ collapse: state.collapse,
2037
+ canExpand: state.canExpand,
2038
+ expand: state.expand
2028
2039
  })
2029
2040
  }
2030
2041
  )
@@ -2350,6 +2361,7 @@ export {
2350
2361
  HeaderMingoButton,
2351
2362
  HeaderOrganizationFilter,
2352
2363
  AppHeader,
2364
+ SIDE_PANEL_FRAME_WIDTH,
2353
2365
  MobileBurgerMenu,
2354
2366
  AppLayout
2355
2367
  };