@flamingo-stack/openframe-frontend-core 0.0.709 → 0.0.711

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 (76) hide show
  1. package/README.md +1 -0
  2. package/dist/{chunk-36BCTE7D.js → chunk-2JTGK64G.js} +4 -4
  3. package/dist/{chunk-YBUT4AMG.cjs → chunk-3UNL26CD.cjs} +2 -2
  4. package/dist/{chunk-4L6XCMOU.js → chunk-5HB7FLCV.js} +1 -1
  5. package/dist/{chunk-6IW7TWPV.js → chunk-62KNLDXK.js} +1 -1
  6. package/dist/{chunk-AOWDNSTM.cjs → chunk-6AMIRXKM.cjs} +40 -40
  7. package/dist/{chunk-LNW45N2C.js → chunk-6GLQLTJI.js} +5 -5
  8. package/dist/{chunk-QAOFMK2A.cjs → chunk-6K7QZDA6.cjs} +3 -3
  9. package/dist/{chunk-SEXWHIMS.cjs → chunk-7AM6C6XH.cjs} +42 -37
  10. package/dist/{chunk-CNWOMQQJ.js → chunk-AGDVEUVL.js} +1 -1
  11. package/dist/{chunk-3AHTOSXJ.cjs → chunk-C4HRRB3V.cjs} +9 -9
  12. package/dist/{chunk-NSGXARGJ.cjs → chunk-CDM7OSFB.cjs} +70 -70
  13. package/dist/{chunk-4UM2ETLM.js → chunk-EQWD4IJE.js} +2 -2
  14. package/dist/{chunk-6I4ZAFO2.cjs → chunk-EX6GGCAC.cjs} +9 -9
  15. package/dist/{chunk-L6Y6OOKG.cjs → chunk-FEMAJES4.cjs} +20 -20
  16. package/dist/{chunk-P42V6N34.cjs → chunk-FYOKS5RI.cjs} +313 -313
  17. package/dist/{chunk-B73373AG.cjs → chunk-G47AP6LX.cjs} +20 -20
  18. package/dist/{chunk-I3ST4PLM.js → chunk-IFWLJ66M.js} +1 -1
  19. package/dist/{chunk-F5FF4DME.js → chunk-K4PTDK34.js} +3 -3
  20. package/dist/{chunk-ZCLBYT2V.cjs → chunk-K6Y5NX6L.cjs} +24 -24
  21. package/dist/{chunk-6YKAT7NV.js → chunk-NF7GNGYG.js} +2 -2
  22. package/dist/{chunk-2G7UYK35.cjs → chunk-P6G3JZNC.cjs} +32 -32
  23. package/dist/{chunk-JRU2CXLB.cjs → chunk-PRX7HVLE.cjs} +2 -2
  24. package/dist/{chunk-CZSZSDD4.js → chunk-Q6B35Y7O.js} +4 -4
  25. package/dist/{chunk-2KXTOP6G.cjs → chunk-QA6TROME.cjs} +14 -14
  26. package/dist/{chunk-LFFB6EMB.js → chunk-QGZPZ3RL.js} +2 -2
  27. package/dist/{chunk-PO33GZVY.js → chunk-SMAAV3HL.js} +8 -3
  28. package/dist/{chunk-DA5UDTLG.js → chunk-TKZXHVBG.js} +2 -2
  29. package/dist/{chunk-SS5MBHDP.js → chunk-VMMHJFHG.js} +2 -2
  30. package/dist/{chunk-MR3A4MZV.js → chunk-VWFZRMQR.js} +1 -1
  31. package/dist/{chunk-TDYIREDJ.js → chunk-WJUIXU6Y.js} +4 -4
  32. package/dist/{chunk-2RNB5DTN.cjs → chunk-XWEBHS7O.cjs} +7 -7
  33. package/dist/{chunk-OJLR5MEO.cjs → chunk-YD4LJZV4.cjs} +4 -4
  34. package/dist/components/case-studies/index.cjs +14 -14
  35. package/dist/components/case-studies/index.js +3 -3
  36. package/dist/components/chat/hooks/use-chat-dialog-manager.d.ts +4 -1
  37. package/dist/components/chat/hooks/use-chat-dialog-manager.d.ts.map +1 -1
  38. package/dist/components/chat/hooks/use-unified-chat.d.ts.map +1 -1
  39. package/dist/components/chat/index.cjs +2 -2
  40. package/dist/components/chat/index.js +1 -1
  41. package/dist/components/chat/types/component.types.d.ts +4 -0
  42. package/dist/components/chat/types/component.types.d.ts.map +1 -1
  43. package/dist/components/chat/types/unified-chat-state.types.d.ts +12 -0
  44. package/dist/components/chat/types/unified-chat-state.types.d.ts.map +1 -1
  45. package/dist/components/contact/index.cjs +4 -4
  46. package/dist/components/contact/index.js +3 -3
  47. package/dist/components/docs/index.cjs +7 -7
  48. package/dist/components/docs/index.js +6 -6
  49. package/dist/components/embeds/index.cjs +4 -4
  50. package/dist/components/embeds/index.js +3 -3
  51. package/dist/components/faq/index.cjs +4 -4
  52. package/dist/components/faq/index.js +3 -3
  53. package/dist/components/features/index.cjs +3 -3
  54. package/dist/components/features/index.js +2 -2
  55. package/dist/components/help-center-pages/index.cjs +70 -70
  56. package/dist/components/help-center-pages/index.js +14 -14
  57. package/dist/components/index.cjs +36 -36
  58. package/dist/components/index.js +13 -13
  59. package/dist/components/meeting-scheduler/index.cjs +25 -25
  60. package/dist/components/meeting-scheduler/index.js +2 -2
  61. package/dist/components/navigation/index.cjs +6 -6
  62. package/dist/components/navigation/index.js +5 -5
  63. package/dist/components/onboarding-guides/index.cjs +6 -6
  64. package/dist/components/onboarding-guides/index.js +5 -5
  65. package/dist/components/tickets/index.cjs +7 -7
  66. package/dist/components/tickets/index.js +6 -6
  67. package/dist/components/ui/index.cjs +3 -3
  68. package/dist/components/ui/index.js +2 -2
  69. package/dist/index.cjs +7 -7
  70. package/dist/index.js +6 -6
  71. package/package.json +1 -1
  72. package/src/components/chat/embeddable-chat.tsx +2 -0
  73. package/src/components/chat/hooks/use-chat-dialog-manager.ts +22 -4
  74. package/src/components/chat/hooks/use-unified-chat.ts +1 -0
  75. package/src/components/chat/types/component.types.ts +4 -0
  76. package/src/components/chat/types/unified-chat-state.types.ts +13 -0
@@ -22957,6 +22957,7 @@ function useUnifiedChat(options) {
22957
22957
  // Dialog management (forwarded from active adapter)
22958
22958
  dialogs: activeState.dialogs,
22959
22959
  activeDialogId: activeState.activeDialogId,
22960
+ activeDialog: activeState.activeDialog,
22960
22961
  selectDialog,
22961
22962
  startNewDialog,
22962
22963
  deleteDialog,
@@ -23961,6 +23962,7 @@ function HoverDropdown({
23961
23962
  function useChatDialogManager({
23962
23963
  dialogs,
23963
23964
  activeDialogId,
23965
+ activeDialog: hostActiveDialog,
23964
23966
  selectDialog,
23965
23967
  clearMessages,
23966
23968
  renameDialog,
@@ -24070,7 +24072,8 @@ function useChatDialogManager({
24070
24072
  }
24071
24073
  setRestoreTarget(null);
24072
24074
  }, [restoreTarget, unarchiveDialog]);
24073
- const isViewingArchived = viewingArchivedId != null && viewingArchivedId === activeDialogId;
24075
+ const hostDialog = hostActiveDialog != null && hostActiveDialog.id === activeDialogId ? hostActiveDialog : void 0;
24076
+ const isViewingArchived = viewingArchivedId != null && viewingArchivedId === activeDialogId || _optionalChain([hostDialog, 'optionalAccess', _753 => _753.archived]) === true;
24074
24077
  const handleBack = _react.useCallback.call(void 0, () => {
24075
24078
  const wasArchived = isViewingArchived;
24076
24079
  setViewingArchivedId(null);
@@ -24087,8 +24090,8 @@ function useChatDialogManager({
24087
24090
  setArchiveOpen(false);
24088
24091
  }, [selectDialog, clearMessages]);
24089
24092
  const activeDialog = _react.useMemo.call(void 0,
24090
- () => _nullishCoalesce(dialogs.find((d) => d.id === activeDialogId), () => ( archivedDialogs.find((d) => d.id === activeDialogId))),
24091
- [dialogs, archivedDialogs, activeDialogId]
24093
+ () => _nullishCoalesce(_nullishCoalesce(dialogs.find((d) => d.id === activeDialogId), () => ( archivedDialogs.find((d) => d.id === activeDialogId))), () => ( hostDialog)),
24094
+ [dialogs, archivedDialogs, activeDialogId, hostDialog]
24092
24095
  );
24093
24096
  return {
24094
24097
  // capability passthroughs (gate the archive / restore affordances)
@@ -24626,7 +24629,7 @@ function EmbeddableChatInner({
24626
24629
  }),
24627
24630
  [commandsUrl]
24628
24631
  );
24629
- const headerUserName = _optionalChain([identityUser, 'optionalAccess', _753 => _753.name, 'optionalAccess', _754 => _754.trim, 'call', _755 => _755()]) || [_optionalChain([identityUser, 'optionalAccess', _756 => _756.firstName]), _optionalChain([identityUser, 'optionalAccess', _757 => _757.lastName])].filter(Boolean).join(" ").trim() || _optionalChain([userDisplayName, 'optionalAccess', _758 => _758.trim, 'call', _759 => _759()]) || void 0;
24632
+ const headerUserName = _optionalChain([identityUser, 'optionalAccess', _754 => _754.name, 'optionalAccess', _755 => _755.trim, 'call', _756 => _756()]) || [_optionalChain([identityUser, 'optionalAccess', _757 => _757.firstName]), _optionalChain([identityUser, 'optionalAccess', _758 => _758.lastName])].filter(Boolean).join(" ").trim() || _optionalChain([userDisplayName, 'optionalAccess', _759 => _759.trim, 'call', _760 => _760()]) || void 0;
24630
24633
  const effectiveModes = _react.useMemo.call(void 0, () => {
24631
24634
  if (modes) return modes;
24632
24635
  const guideOptions = tableIdForDocumentType ? { tableIdForDocumentType } : {};
@@ -24641,7 +24644,7 @@ function EmbeddableChatInner({
24641
24644
  if (controlledActiveMode === void 0) {
24642
24645
  setUncontrolledActiveMode(next);
24643
24646
  }
24644
- _optionalChain([onActiveModeChange, 'optionalCall', _760 => _760(next)]);
24647
+ _optionalChain([onActiveModeChange, 'optionalCall', _761 => _761(next)]);
24645
24648
  },
24646
24649
  [controlledActiveMode, onActiveModeChange]
24647
24650
  );
@@ -24668,7 +24671,7 @@ function EmbeddableChatInner({
24668
24671
  );
24669
24672
  const effectiveAssistantName = emptyStateConfig.name;
24670
24673
  const effectiveAssistantIcon = emptyStateConfig.icon;
24671
- const headerAssistantName = _nullishCoalesce(effectiveAssistantName, () => ( (typeof _optionalChain([guideWelcome, 'optionalAccess', _761 => _761.title]) === "string" ? guideWelcome.title : null)));
24674
+ const headerAssistantName = _nullishCoalesce(effectiveAssistantName, () => ( (typeof _optionalChain([guideWelcome, 'optionalAccess', _762 => _762.title]) === "string" ? guideWelcome.title : null)));
24672
24675
  const {
24673
24676
  messages: rawMessages,
24674
24677
  isLoading: chatLoading,
@@ -24688,6 +24691,7 @@ function EmbeddableChatInner({
24688
24691
  // ─── Dialog management (Mingo-mode inline history) ───
24689
24692
  dialogs,
24690
24693
  activeDialogId,
24694
+ activeDialog: hostActiveDialog,
24691
24695
  selectDialog,
24692
24696
  renameDialog,
24693
24697
  archiveDialog,
@@ -24724,8 +24728,8 @@ function EmbeddableChatInner({
24724
24728
  const mingoCaps = _react.useMemo.call(void 0,
24725
24729
  () => ({
24726
24730
  ...dialogCapabilities,
24727
- canRename: _nullishCoalesce(_optionalChain([dialogCapabilities, 'optionalAccess', _762 => _762.canRename]), () => ( false)),
24728
- canArchive: _nullishCoalesce(_optionalChain([dialogCapabilities, 'optionalAccess', _763 => _763.canArchive]), () => ( false))
24731
+ canRename: _nullishCoalesce(_optionalChain([dialogCapabilities, 'optionalAccess', _763 => _763.canRename]), () => ( false)),
24732
+ canArchive: _nullishCoalesce(_optionalChain([dialogCapabilities, 'optionalAccess', _764 => _764.canArchive]), () => ( false))
24729
24733
  }),
24730
24734
  [dialogCapabilities]
24731
24735
  );
@@ -24740,7 +24744,7 @@ function EmbeddableChatInner({
24740
24744
  void sendMessage(guidePendingPrompt).catch((err) => {
24741
24745
  console.error("[EmbeddableChat] guide launcher prompt failed:", err);
24742
24746
  });
24743
- _optionalChain([onGuidePromptConsumed, 'optionalCall', _764 => _764()]);
24747
+ _optionalChain([onGuidePromptConsumed, 'optionalCall', _765 => _765()]);
24744
24748
  }, [guidePendingPrompt, activeMode, sendMessage, onGuidePromptConsumed]);
24745
24749
  const {
24746
24750
  attachments: stagedAttachments,
@@ -24751,7 +24755,7 @@ function EmbeddableChatInner({
24751
24755
  clear: clearAttachments
24752
24756
  } = useChatAttachments();
24753
24757
  const { panelRef: galleryPanelRef, modal: galleryModal } = useChatAttachmentImageGallery();
24754
- const contextMaxItems = _nullishCoalesce(_optionalChain([contextPicker, 'optionalAccess', _765 => _765.maxItems]), () => ( 10));
24758
+ const contextMaxItems = _nullishCoalesce(_optionalChain([contextPicker, 'optionalAccess', _766 => _766.maxItems]), () => ( 10));
24755
24759
  const contextPickerForMode = activeMode === "mingo" ? contextPicker : void 0;
24756
24760
  const [contextItems, setContextItems] = _react.useState.call(void 0, NO_CONTEXT_ITEMS);
24757
24761
  const [contextPickerOpen, setContextPickerOpen] = _react.useState.call(void 0, false);
@@ -24780,10 +24784,10 @@ function EmbeddableChatInner({
24780
24784
  }, [composerKey, clearAttachments]);
24781
24785
  const mentionMarkerByType = _react.useMemo.call(void 0, () => {
24782
24786
  const m = /* @__PURE__ */ new Map();
24783
- for (const t of _nullishCoalesce(_optionalChain([contextPicker, 'optionalAccess', _766 => _766.entityTypes]), () => ( []))) if (t.marker) m.set(t.type, t.marker);
24787
+ for (const t of _nullishCoalesce(_optionalChain([contextPicker, 'optionalAccess', _767 => _767.entityTypes]), () => ( []))) if (t.marker) m.set(t.type, t.marker);
24784
24788
  return m;
24785
- }, [_optionalChain([contextPicker, 'optionalAccess', _767 => _767.entityTypes])]);
24786
- const contextEntityTypes = _optionalChain([contextPicker, 'optionalAccess', _768 => _768.entityTypes]);
24789
+ }, [_optionalChain([contextPicker, 'optionalAccess', _768 => _768.entityTypes])]);
24790
+ const contextEntityTypes = _optionalChain([contextPicker, 'optionalAccess', _769 => _769.entityTypes]);
24787
24791
  const resolveContextIcon = _react.useMemo.call(void 0, () => {
24788
24792
  const byType = /* @__PURE__ */ new Map();
24789
24793
  for (const t of _nullishCoalesce(contextEntityTypes, () => ( []))) byType.set(t.type, t.icon);
@@ -24795,7 +24799,7 @@ function EmbeddableChatInner({
24795
24799
  if (mentionActiveRef.current) {
24796
24800
  if (contextItems.some((p) => `${p.type}:${p.id}` === key)) return;
24797
24801
  if (contextItems.length >= contextMaxItems) return;
24798
- _optionalChain([chatInputRef, 'access', _769 => _769.current, 'optionalAccess', _770 => _770.commitMention, 'call', _771 => _771(mentionTokenOf(key, mentionMarkerByType), {
24802
+ _optionalChain([chatInputRef, 'access', _770 => _770.current, 'optionalAccess', _771 => _771.commitMention, 'call', _772 => _772(mentionTokenOf(key, mentionMarkerByType), {
24799
24803
  label: item.label,
24800
24804
  icon: resolveContextIcon(item)
24801
24805
  })]);
@@ -24818,9 +24822,9 @@ function EmbeddableChatInner({
24818
24822
  setContextItems((prev) => prev.filter((p) => `${p.type}:${p.id}` !== key));
24819
24823
  if (mentionKeysRef.current.has(key)) {
24820
24824
  mentionKeysRef.current.delete(key);
24821
- const cur = _nullishCoalesce(_optionalChain([chatInputRef, 'access', _772 => _772.current, 'optionalAccess', _773 => _773.getValue, 'call', _774 => _774()]), () => ( ""));
24825
+ const cur = _nullishCoalesce(_optionalChain([chatInputRef, 'access', _773 => _773.current, 'optionalAccess', _774 => _774.getValue, 'call', _775 => _775()]), () => ( ""));
24822
24826
  const next = cur.replace(`@${mentionTokenOf(key, mentionMarkerByType)}`, "").replace(/\s{2,}/g, " ").trimStart();
24823
- _optionalChain([chatInputRef, 'access', _775 => _775.current, 'optionalAccess', _776 => _776.setValue, 'call', _777 => _777(next)]);
24827
+ _optionalChain([chatInputRef, 'access', _776 => _776.current, 'optionalAccess', _777 => _777.setValue, 'call', _778 => _778(next)]);
24824
24828
  }
24825
24829
  },
24826
24830
  [mentionMarkerByType]
@@ -24842,7 +24846,7 @@ function EmbeddableChatInner({
24842
24846
  }, []);
24843
24847
  const closeContextPicker = _react.useCallback.call(void 0, () => {
24844
24848
  if (mentionActiveRef.current) {
24845
- _optionalChain([chatInputRef, 'access', _778 => _778.current, 'optionalAccess', _779 => _779.removeMentionTrigger, 'call', _780 => _780()]);
24849
+ _optionalChain([chatInputRef, 'access', _779 => _779.current, 'optionalAccess', _780 => _780.removeMentionTrigger, 'call', _781 => _781()]);
24846
24850
  }
24847
24851
  setContextPickerOpen(false);
24848
24852
  setMentionQuery(null);
@@ -24879,8 +24883,8 @@ function EmbeddableChatInner({
24879
24883
  [effectiveAssistantIcon]
24880
24884
  );
24881
24885
  const [timestampCache] = _react.useState.call(void 0, () => /* @__PURE__ */ new Map());
24882
- const guideUserName = activeMode === "guide" ? [_optionalChain([identityUser, 'optionalAccess', _781 => _781.firstName]), _optionalChain([identityUser, 'optionalAccess', _782 => _782.lastName])].filter(Boolean).join(" ").trim() || _optionalChain([identityUser, 'optionalAccess', _783 => _783.name, 'optionalAccess', _784 => _784.trim, 'call', _785 => _785()]) || void 0 : void 0;
24883
- const guideUserAvatar = activeMode === "guide" ? _optionalChain([identityUser, 'optionalAccess', _786 => _786.avatarUrl, 'optionalAccess', _787 => _787.trim, 'call', _788 => _788()]) || void 0 : void 0;
24886
+ const guideUserName = activeMode === "guide" ? [_optionalChain([identityUser, 'optionalAccess', _782 => _782.firstName]), _optionalChain([identityUser, 'optionalAccess', _783 => _783.lastName])].filter(Boolean).join(" ").trim() || _optionalChain([identityUser, 'optionalAccess', _784 => _784.name, 'optionalAccess', _785 => _785.trim, 'call', _786 => _786()]) || void 0 : void 0;
24887
+ const guideUserAvatar = activeMode === "guide" ? _optionalChain([identityUser, 'optionalAccess', _787 => _787.avatarUrl, 'optionalAccess', _788 => _788.trim, 'call', _789 => _789()]) || void 0 : void 0;
24884
24888
  const messages = _react.useMemo.call(void 0, () => {
24885
24889
  const options = { userName: guideUserName, userAvatar: guideUserAvatar, timestampCache };
24886
24890
  const mapped = rawMessages.map((m) => mapHostMessage(m, options));
@@ -24970,6 +24974,7 @@ function EmbeddableChatInner({
24970
24974
  } = useChatDialogManager({
24971
24975
  dialogs,
24972
24976
  activeDialogId,
24977
+ activeDialog: hostActiveDialog,
24973
24978
  selectDialog,
24974
24979
  clearMessages,
24975
24980
  renameDialog,
@@ -25056,7 +25061,7 @@ function EmbeddableChatInner({
25056
25061
  _react.useEffect.call(void 0, () => {
25057
25062
  if (!panelBoundary || typeof ResizeObserver === "undefined") return void 0;
25058
25063
  const ro = new ResizeObserver((entries) => {
25059
- const w = _optionalChain([entries, 'access', _789 => _789[0], 'optionalAccess', _790 => _790.contentRect, 'optionalAccess', _791 => _791.width]);
25064
+ const w = _optionalChain([entries, 'access', _790 => _790[0], 'optionalAccess', _791 => _791.contentRect, 'optionalAccess', _792 => _792.width]);
25060
25065
  if (typeof w === "number") setCanSplit(w >= splitMinWidth);
25061
25066
  });
25062
25067
  ro.observe(panelBoundary);
@@ -25102,18 +25107,18 @@ function EmbeddableChatInner({
25102
25107
  const stackedListView = isMingoMode && !hasConversation && !archiveOpen && !wideMingo && !composeOpen && !emptyListSkipped;
25103
25108
  const headerShowBack = hasConversation || guideCanReturnToMingo;
25104
25109
  const freshConversationTitle = isGuideEmpty ? _nullishCoalesce(headerAssistantName, () => ( "Mingo Guide")) : "New Chat";
25105
- const headerTitle = hasConversation ? _optionalChain([activeDialog, 'optionalAccess', _792 => _792.title]) || freshConversationTitle : isGuideEmpty ? freshConversationTitle : "Current Chats";
25110
+ const headerTitle = hasConversation ? _optionalChain([activeDialog, 'optionalAccess', _793 => _793.title]) || freshConversationTitle : isGuideEmpty ? freshConversationTitle : "Current Chats";
25106
25111
  const headerBackAriaLabel = hasConversation ? isViewingArchived ? "Back to archive" : "Back" : "Back to Mingo";
25107
25112
  const headerOnBack = hasConversation ? handleBack : () => handleActiveModeChange("mingo");
25108
25113
  const headerOnRestore = isViewingArchived && unarchiveDialog && activeDialog ? () => setRestoreTarget(activeDialog) : void 0;
25109
25114
  const headerOnRename = activeDialogId && activeDialog && mingoCaps.canRename ? () => setRenameTarget(activeDialog) : void 0;
25110
25115
  const headerOnArchive = activeDialogId && activeDialog && mingoCaps.canArchive ? () => setArchiveTarget(activeDialog) : void 0;
25111
- const headerOnCopyLink = activeDialogId && activeDialog && mingoCaps.onCopyLink ? () => _optionalChain([mingoCaps, 'access', _793 => _793.onCopyLink, 'optionalCall', _794 => _794(activeDialog)]) : void 0;
25112
- const headerOnCompact = activeDialogId && activeDialog && mingoCaps.compactDialog ? () => _optionalChain([mingoCaps, 'access', _795 => _795.compactDialog, 'optionalCall', _796 => _796(activeDialog)]) : void 0;
25116
+ const headerOnCopyLink = activeDialogId && activeDialog && mingoCaps.onCopyLink ? () => _optionalChain([mingoCaps, 'access', _794 => _794.onCopyLink, 'optionalCall', _795 => _795(activeDialog)]) : void 0;
25117
+ const headerOnCompact = activeDialogId && activeDialog && mingoCaps.compactDialog ? () => _optionalChain([mingoCaps, 'access', _796 => _796.compactDialog, 'optionalCall', _797 => _797(activeDialog)]) : void 0;
25113
25118
  const headerOnOpenArchive = fetchArchivedDialogs ? openArchive : void 0;
25114
- const headerOwner = hasConversation ? _optionalChain([activeDialog, 'optionalAccess', _797 => _797.owner]) : void 0;
25115
- const headerPersonName = _optionalChain([headerOwner, 'optionalAccess', _798 => _798.name, 'optionalAccess', _799 => _799.trim, 'call', _800 => _800()]) || headerUserName;
25116
- const headerPersonAvatarUrl = headerOwner ? _optionalChain([headerOwner, 'access', _801 => _801.avatarUrl, 'optionalAccess', _802 => _802.trim, 'call', _803 => _803()]) || void 0 : _optionalChain([identityUser, 'optionalAccess', _804 => _804.avatarUrl, 'optionalAccess', _805 => _805.trim, 'call', _806 => _806()]) || _optionalChain([userAvatarUrl, 'optionalAccess', _807 => _807.trim, 'call', _808 => _808()]) || void 0;
25119
+ const headerOwner = hasConversation ? _optionalChain([activeDialog, 'optionalAccess', _798 => _798.owner]) : void 0;
25120
+ const headerPersonName = _optionalChain([headerOwner, 'optionalAccess', _799 => _799.name, 'optionalAccess', _800 => _800.trim, 'call', _801 => _801()]) || headerUserName;
25121
+ const headerPersonAvatarUrl = headerOwner ? _optionalChain([headerOwner, 'access', _802 => _802.avatarUrl, 'optionalAccess', _803 => _803.trim, 'call', _804 => _804()]) || void 0 : _optionalChain([identityUser, 'optionalAccess', _805 => _805.avatarUrl, 'optionalAccess', _806 => _806.trim, 'call', _807 => _807()]) || _optionalChain([userAvatarUrl, 'optionalAccess', _808 => _808.trim, 'call', _809 => _809()]) || void 0;
25117
25122
  const headerAvatar = headerPersonName || headerPersonAvatarUrl ? { name: headerPersonName, avatarUrl: headerPersonAvatarUrl } : void 0;
25118
25123
  const handleNewChat = _react.useCallback.call(void 0, () => {
25119
25124
  resetToNewChat();
@@ -25492,7 +25497,7 @@ function EmbeddableChatInner({
25492
25497
  onNewChat: () => setComposeOpen(true),
25493
25498
  onExpand: onExpand && (() => {
25494
25499
  const last = lastDialogIdRef.current;
25495
- const target = last && dialogs.some((d) => d.id === last) ? last : _optionalChain([dialogs, 'access', _809 => _809[0], 'optionalAccess', _810 => _810.id]);
25500
+ const target = last && dialogs.some((d) => d.id === last) ? last : _optionalChain([dialogs, 'access', _810 => _810[0], 'optionalAccess', _811 => _811.id]);
25496
25501
  if (archiveOpen) closeArchive();
25497
25502
  if (target) handleSelectDialog(target);
25498
25503
  else handleNewChat();
@@ -25599,9 +25604,9 @@ function EmbeddableChatInner({
25599
25604
  subtitle: _nullishCoalesce(effectiveGreeting, () => ( void 0)),
25600
25605
  subtitleLoading: emptyStateLoading,
25601
25606
  ...guideWelcome,
25602
- title: _nullishCoalesce(effectiveAssistantName, () => ( _optionalChain([guideWelcome, 'optionalAccess', _811 => _811.title]))),
25603
- icon: _nullishCoalesce(effectiveAssistantIcon, () => ( _optionalChain([guideWelcome, 'optionalAccess', _812 => _812.icon]))),
25604
- quickActions: agentConfigUrl && guideSuggestedActions.length > 0 ? guideSuggestedActions : _nullishCoalesce(_optionalChain([guideWelcome, 'optionalAccess', _813 => _813.quickActions]), () => ( guideSuggestedActions)),
25607
+ title: _nullishCoalesce(effectiveAssistantName, () => ( _optionalChain([guideWelcome, 'optionalAccess', _812 => _812.title]))),
25608
+ icon: _nullishCoalesce(effectiveAssistantIcon, () => ( _optionalChain([guideWelcome, 'optionalAccess', _813 => _813.icon]))),
25609
+ quickActions: agentConfigUrl && guideSuggestedActions.length > 0 ? guideSuggestedActions : _nullishCoalesce(_optionalChain([guideWelcome, 'optionalAccess', _814 => _814.quickActions]), () => ( guideSuggestedActions)),
25605
25610
  onQuickAction: (action) => {
25606
25611
  setQuickActionPreview(null);
25607
25612
  handleSend(_nullishCoalesce(action.prompt, () => ( action.label)));
@@ -25676,8 +25681,8 @@ function EmbeddableChatInner({
25676
25681
  selectedContextItems: contextItems,
25677
25682
  onToggleContextItem: toggleContextItem,
25678
25683
  onRemoveContextItem: removeContextItem,
25679
- contextMemoryItems: _optionalChain([contextMemory, 'optionalAccess', _814 => _814.items]),
25680
- onRemoveContextMemoryItem: _optionalChain([contextMemory, 'optionalAccess', _815 => _815.onRemove]),
25684
+ contextMemoryItems: _optionalChain([contextMemory, 'optionalAccess', _815 => _815.items]),
25685
+ onRemoveContextMemoryItem: _optionalChain([contextMemory, 'optionalAccess', _816 => _816.onRemove]),
25681
25686
  contextPickerOpen,
25682
25687
  onOpenContextPicker: openContextPicker,
25683
25688
  onCloseContextPicker: closeContextPicker,
@@ -25890,7 +25895,7 @@ var GROUPS = [
25890
25895
  }
25891
25896
  ];
25892
25897
  function maskKey(key) {
25893
- const prefix = _nullishCoalesce(_optionalChain([/^fpk_[a-z0-9-]+_/i, 'access', _816 => _816.exec, 'call', _817 => _817(key), 'optionalAccess', _818 => _818[0]]), () => ( ""));
25898
+ const prefix = _nullishCoalesce(_optionalChain([/^fpk_[a-z0-9-]+_/i, 'access', _817 => _817.exec, 'call', _818 => _818(key), 'optionalAccess', _819 => _819[0]]), () => ( ""));
25894
25899
  return key.length - prefix.length <= 8 ? `${prefix}\u2022\u2022\u2022\u2022` : `${prefix}\u2026${key.slice(-4)}`;
25895
25900
  }
25896
25901
  function HeaderName({ children }) {
@@ -25927,8 +25932,8 @@ function ProxyCredentialsForm({ description, saved }) {
25927
25932
  const errors = _react.useMemo.call(void 0, () => {
25928
25933
  const out = {};
25929
25934
  for (const { field } of _chunkLM7TXMLUcjs.EMBED_PROXY_OPTIONAL_HEADERS) {
25930
- const value = _optionalChain([optional, 'access', _819 => _819[field], 'optionalAccess', _820 => _820.trim, 'call', _821 => _821()]);
25931
- const message = value ? _optionalChain([OPTIONAL_FIELD_COPY, 'access', _822 => _822[field], 'access', _823 => _823.validate, 'optionalCall', _824 => _824(value)]) : null;
25935
+ const value = _optionalChain([optional, 'access', _820 => _820[field], 'optionalAccess', _821 => _821.trim, 'call', _822 => _822()]);
25936
+ const message = value ? _optionalChain([OPTIONAL_FIELD_COPY, 'access', _823 => _823[field], 'access', _824 => _824.validate, 'optionalCall', _825 => _825(value)]) : null;
25932
25937
  if (message) out[field] = message;
25933
25938
  }
25934
25939
  return out;
@@ -25940,12 +25945,12 @@ function ProxyCredentialsForm({ description, saved }) {
25940
25945
  ...keyForPreview ? [["Authorization", `Bearer ${keyForPreview}`]] : [],
25941
25946
  ...email.trim() ? [["X-Chat-Act-As", email.trim().toLowerCase()]] : [],
25942
25947
  ..._chunkLM7TXMLUcjs.EMBED_PROXY_OPTIONAL_HEADERS.flatMap(({ field, header }) => {
25943
- const value = _optionalChain([optional, 'access', _825 => _825[field], 'optionalAccess', _826 => _826.trim, 'call', _827 => _827()]);
25948
+ const value = _optionalChain([optional, 'access', _826 => _826[field], 'optionalAccess', _827 => _827.trim, 'call', _828 => _828()]);
25944
25949
  return value ? [[header, value]] : [];
25945
25950
  })
25946
25951
  ];
25947
25952
  const save = () => {
25948
- const key = secret.trim() || _optionalChain([_chunkLM7TXMLUcjs.getEmbedProxyAuth.call(void 0, ), 'optionalAccess', _828 => _828.secret]);
25953
+ const key = secret.trim() || _optionalChain([_chunkLM7TXMLUcjs.getEmbedProxyAuth.call(void 0, ), 'optionalAccess', _829 => _829.secret]);
25949
25954
  const actAs = email.trim().toLowerCase();
25950
25955
  if (!key || !actAs || hasErrors) {
25951
25956
  setStatus(hasErrors ? "Fix the highlighted fields first." : "API key and act-as email are required.");
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  DEFAULT_FOLDER_INDEX_FILE
4
- } from "./chunk-4L6XCMOU.js";
4
+ } from "./chunk-5HB7FLCV.js";
5
5
  import {
6
6
  scrollElementIntoView
7
7
  } from "./chunk-CZ7Y7UG4.js";
@@ -10,7 +10,7 @@ var _chunkPLYEKV3Ncjs = require('./chunk-PLYEKV3N.cjs');
10
10
 
11
11
 
12
12
 
13
- var _chunkP42V6N34cjs = require('./chunk-P42V6N34.cjs');
13
+ var _chunkFYOKS5RIcjs = require('./chunk-FYOKS5RI.cjs');
14
14
 
15
15
 
16
16
 
@@ -63,7 +63,7 @@ function ListEmptyState({ isFiltered, filtered, onClearFilters, empty }) {
63
63
  var _react = require('react');
64
64
 
65
65
  function DevSectionView({ sectionKey, hero, preControls, children, showHeading = true }) {
66
- const section = _chunkP42V6N34cjs.OPENFRAME_DEV_SECTIONS[sectionKey];
66
+ const section = _chunkFYOKS5RIcjs.OPENFRAME_DEV_SECTIONS[sectionKey];
67
67
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
68
68
  const pathname = _chunk7DNL734Scjs.usePathname.call(void 0, );
69
69
  const searchParams = _chunk7DNL734Scjs.useSearchParams.call(void 0, );
@@ -114,7 +114,7 @@ function DevSectionView({ sectionKey, hero, preControls, children, showHeading =
114
114
  preControls,
115
115
  (search || filter) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
116
116
  search && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
117
- _chunkP42V6N34cjs.SearchInput,
117
+ _chunkFYOKS5RIcjs.SearchInput,
118
118
  {
119
119
  showDropdown: false,
120
120
  placeholder: search.placeholder,
@@ -124,7 +124,7 @@ function DevSectionView({ sectionKey, hero, preControls, children, showHeading =
124
124
  }
125
125
  ),
126
126
  filter && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
127
- _chunkP42V6N34cjs.StatusFilterComponent,
127
+ _chunkFYOKS5RIcjs.StatusFilterComponent,
128
128
  {
129
129
  selectedStatus: currentFilterValue,
130
130
  onStatusChange: handleFilterChange,
@@ -148,7 +148,7 @@ function DevSectionPage({
148
148
  shell = true
149
149
  }) {
150
150
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
151
- const section = _chunkP42V6N34cjs.OPENFRAME_DEV_SECTIONS[sectionKey];
151
+ const section = _chunkFYOKS5RIcjs.OPENFRAME_DEV_SECTIONS[sectionKey];
152
152
  const backCfg = backButton === false ? void 0 : {
153
153
  label: _nullishCoalesce((backButton ? backButton.label : void 0), () => ( "Back to home")),
154
154
  onClick: () => router.push(_nullishCoalesce((backButton ? backButton.href : void 0), () => ( "/")))
@@ -161,7 +161,7 @@ function DevSectionPage({
161
161
  // duplicate title. (The hero icon is intentionally dropped: TitleBlock is
162
162
  // frozen and renders title-only.)
163
163
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
164
- _chunkP42V6N34cjs.PageLayout,
164
+ _chunkFYOKS5RIcjs.PageLayout,
165
165
  {
166
166
  title: _nullishCoalesce(title, () => ( section.hero.title)),
167
167
  subtitle: _nullishCoalesce(subtitle, () => ( section.hero.description)),
@@ -172,7 +172,7 @@ function DevSectionPage({
172
172
  }
173
173
  )
174
174
  );
175
- return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkP42V6N34cjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
175
+ return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFYOKS5RIcjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
176
176
  }
177
177
 
178
178
  // src/components/shared/dev-section/dev-card-row.tsx
@@ -230,8 +230,8 @@ function getRelativeTime(timestamp) {
230
230
  }
231
231
  function DeliveryRow({ item, href, target, caption, id, className }) {
232
232
  const taskType = item.taskType;
233
- const typeBadgeLabel = _chunkP42V6N34cjs.TASK_TYPE_LABELS[taskType] || "TASK";
234
- const typeBadgeTextColor = _chunkP42V6N34cjs.TASK_TYPE_TEXT_COLORS[taskType] || "";
233
+ const typeBadgeLabel = _chunkFYOKS5RIcjs.TASK_TYPE_LABELS[taskType] || "TASK";
234
+ const typeBadgeTextColor = _chunkFYOKS5RIcjs.TASK_TYPE_TEXT_COLORS[taskType] || "";
235
235
  const statusBadgeScheme = _chunk6NTPY5QAcjs.getStatusColorScheme.call(void 0, item.status);
236
236
  const relativeTime = getRelativeTime(item.dateUpdated);
237
237
  const subtitle = `ACTIVE ${relativeTime}${item.listNames.length > 0 ? `, ${item.listNames.join(", ")}` : ""}, ${item.id}`;