@flamingo-stack/openframe-frontend-core 0.0.341 → 0.0.342-snapshot.20260630085305

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 (101) hide show
  1. package/dist/{chunk-CJB4NUD6.cjs → chunk-23ZA3NAS.cjs} +7 -7
  2. package/dist/{chunk-CJB4NUD6.cjs.map → chunk-23ZA3NAS.cjs.map} +1 -1
  3. package/dist/{chunk-EYPZ2XLX.cjs → chunk-2W5ELSDO.cjs} +25 -25
  4. package/dist/{chunk-EYPZ2XLX.cjs.map → chunk-2W5ELSDO.cjs.map} +1 -1
  5. package/dist/{chunk-QCREN5A5.cjs → chunk-4S2J4RIC.cjs} +56 -56
  6. package/dist/{chunk-QCREN5A5.cjs.map → chunk-4S2J4RIC.cjs.map} +1 -1
  7. package/dist/{chunk-A37AW6CD.cjs → chunk-AAMCLU3A.cjs} +5 -5
  8. package/dist/{chunk-A37AW6CD.cjs.map → chunk-AAMCLU3A.cjs.map} +1 -1
  9. package/dist/{chunk-NIIN3UH4.cjs → chunk-AJE4JAPA.cjs} +37 -37
  10. package/dist/{chunk-NIIN3UH4.cjs.map → chunk-AJE4JAPA.cjs.map} +1 -1
  11. package/dist/{chunk-D2ETTYT2.cjs → chunk-DRHMR4RS.cjs} +26 -26
  12. package/dist/{chunk-D2ETTYT2.cjs.map → chunk-DRHMR4RS.cjs.map} +1 -1
  13. package/dist/{chunk-OLR534KB.js → chunk-EY5JK2PV.js} +2 -2
  14. package/dist/{chunk-CUQGK4AD.js → chunk-HI7OGVSK.js} +2 -2
  15. package/dist/{chunk-EPVDWAVJ.js → chunk-HYHUDGT5.js} +4 -4
  16. package/dist/{chunk-I3CNFZOY.cjs → chunk-IXVWSZC6.cjs} +68 -42
  17. package/dist/chunk-IXVWSZC6.cjs.map +1 -0
  18. package/dist/{chunk-KT4KY6OF.js → chunk-J6Z4BKMD.js} +4 -4
  19. package/dist/{chunk-AZ3DTQU5.js → chunk-JIJVIIQB.js} +68 -42
  20. package/dist/chunk-JIJVIIQB.js.map +1 -0
  21. package/dist/{chunk-R3MVYKEL.cjs → chunk-L7JVTLPO.cjs} +62 -62
  22. package/dist/{chunk-R3MVYKEL.cjs.map → chunk-L7JVTLPO.cjs.map} +1 -1
  23. package/dist/{chunk-I4BWBQXX.cjs → chunk-MIRRHOMH.cjs} +31 -31
  24. package/dist/{chunk-I4BWBQXX.cjs.map → chunk-MIRRHOMH.cjs.map} +1 -1
  25. package/dist/{chunk-OGTHMZIL.cjs → chunk-OCDAIFAI.cjs} +9 -9
  26. package/dist/{chunk-OGTHMZIL.cjs.map → chunk-OCDAIFAI.cjs.map} +1 -1
  27. package/dist/{chunk-N3GFEIWF.js → chunk-OJNZ5XJR.js} +2 -2
  28. package/dist/{chunk-Y2WHQSF6.js → chunk-PSOX77C2.js} +2 -2
  29. package/dist/{chunk-GCYEJLOQ.js → chunk-PYEHGR3B.js} +2 -2
  30. package/dist/{chunk-KE2QKKCN.js → chunk-RGVXRRJF.js} +2 -2
  31. package/dist/{chunk-LANAE7MY.cjs → chunk-TGC77CVV.cjs} +12 -12
  32. package/dist/{chunk-LANAE7MY.cjs.map → chunk-TGC77CVV.cjs.map} +1 -1
  33. package/dist/{chunk-QYF6LEDF.js → chunk-VIHF6VQ6.js} +2 -2
  34. package/dist/{chunk-2GROEWOK.js → chunk-VP7CNMFM.js} +4 -4
  35. package/dist/{chunk-4I46HAN5.js → chunk-YJJCUCPH.js} +4 -4
  36. package/dist/{chunk-BYAXSMET.cjs → chunk-ZERQ5VF3.cjs} +15 -15
  37. package/dist/{chunk-BYAXSMET.cjs.map → chunk-ZERQ5VF3.cjs.map} +1 -1
  38. package/dist/components/case-studies/index.cjs +8 -8
  39. package/dist/components/case-studies/index.js +2 -2
  40. package/dist/components/chat/chat-composer.d.ts +4 -1
  41. package/dist/components/chat/chat-composer.d.ts.map +1 -1
  42. package/dist/components/chat/chat-input.d.ts.map +1 -1
  43. package/dist/components/chat/chat-quick-action-row.d.ts +6 -1
  44. package/dist/components/chat/chat-quick-action-row.d.ts.map +1 -1
  45. package/dist/components/chat/guide-welcome.d.ts +5 -5
  46. package/dist/components/chat/guide-welcome.d.ts.map +1 -1
  47. package/dist/components/chat/index.cjs +2 -2
  48. package/dist/components/chat/index.js +1 -1
  49. package/dist/components/chat/types/component.types.d.ts +6 -0
  50. package/dist/components/chat/types/component.types.d.ts.map +1 -1
  51. package/dist/components/contact/index.cjs +3 -3
  52. package/dist/components/contact/index.js +2 -2
  53. package/dist/components/docs/index.cjs +5 -5
  54. package/dist/components/docs/index.js +4 -4
  55. package/dist/components/embeds/index.cjs +3 -3
  56. package/dist/components/embeds/index.js +2 -2
  57. package/dist/components/faq/index.cjs +3 -3
  58. package/dist/components/faq/index.js +2 -2
  59. package/dist/components/features/index.cjs +2 -2
  60. package/dist/components/features/index.js +1 -1
  61. package/dist/components/help-center-pages/index.cjs +20 -20
  62. package/dist/components/help-center-pages/index.js +11 -11
  63. package/dist/components/index.cjs +121 -121
  64. package/dist/components/index.js +9 -9
  65. package/dist/components/navigation/index.cjs +2 -2
  66. package/dist/components/navigation/index.js +1 -1
  67. package/dist/components/onboarding-guides/index.cjs +5 -5
  68. package/dist/components/onboarding-guides/index.js +4 -4
  69. package/dist/components/related-content/index.cjs +3 -3
  70. package/dist/components/related-content/index.js +2 -2
  71. package/dist/components/tickets/index.cjs +5 -5
  72. package/dist/components/tickets/index.js +4 -4
  73. package/dist/components/ui/dashboard-info-card.d.ts +10 -6
  74. package/dist/components/ui/dashboard-info-card.d.ts.map +1 -1
  75. package/dist/components/ui/index.cjs +2 -2
  76. package/dist/components/ui/index.js +1 -1
  77. package/dist/index.cjs +2 -2
  78. package/dist/index.js +1 -1
  79. package/package.json +1 -1
  80. package/src/components/chat/approval-batch-message.tsx +2 -2
  81. package/src/components/chat/chat-composer.tsx +5 -0
  82. package/src/components/chat/chat-input.tsx +39 -1
  83. package/src/components/chat/chat-quick-action-row.tsx +20 -0
  84. package/src/components/chat/embeddable-chat.tsx +21 -23
  85. package/src/components/chat/guide-welcome.tsx +21 -11
  86. package/src/components/chat/types/component.types.ts +6 -0
  87. package/src/components/ui/dashboard-info-card.tsx +41 -19
  88. package/src/stories/DashboardInfoCard.stories.tsx +7 -7
  89. package/dist/chunk-AZ3DTQU5.js.map +0 -1
  90. package/dist/chunk-I3CNFZOY.cjs.map +0 -1
  91. /package/dist/{chunk-OLR534KB.js.map → chunk-EY5JK2PV.js.map} +0 -0
  92. /package/dist/{chunk-CUQGK4AD.js.map → chunk-HI7OGVSK.js.map} +0 -0
  93. /package/dist/{chunk-EPVDWAVJ.js.map → chunk-HYHUDGT5.js.map} +0 -0
  94. /package/dist/{chunk-KT4KY6OF.js.map → chunk-J6Z4BKMD.js.map} +0 -0
  95. /package/dist/{chunk-N3GFEIWF.js.map → chunk-OJNZ5XJR.js.map} +0 -0
  96. /package/dist/{chunk-Y2WHQSF6.js.map → chunk-PSOX77C2.js.map} +0 -0
  97. /package/dist/{chunk-GCYEJLOQ.js.map → chunk-PYEHGR3B.js.map} +0 -0
  98. /package/dist/{chunk-KE2QKKCN.js.map → chunk-RGVXRRJF.js.map} +0 -0
  99. /package/dist/{chunk-QYF6LEDF.js.map → chunk-VIHF6VQ6.js.map} +0 -0
  100. /package/dist/{chunk-2GROEWOK.js.map → chunk-VP7CNMFM.js.map} +0 -0
  101. /package/dist/{chunk-4I46HAN5.js.map → chunk-YJJCUCPH.js.map} +0 -0
@@ -4,10 +4,10 @@ import {
4
4
  EmptyState,
5
5
  init_unified_pagination,
6
6
  unified_pagination_exports
7
- } from "./chunk-GCYEJLOQ.js";
7
+ } from "./chunk-PYEHGR3B.js";
8
8
  import {
9
9
  DetailPageSkeleton
10
- } from "./chunk-N3GFEIWF.js";
10
+ } from "./chunk-OJNZ5XJR.js";
11
11
  import {
12
12
  useSelfFetch
13
13
  } from "./chunk-65VXW6GZ.js";
@@ -39,7 +39,7 @@ import {
39
39
  isModifierClick,
40
40
  resolveContentHref,
41
41
  useEntityCardLink
42
- } from "./chunk-AZ3DTQU5.js";
42
+ } from "./chunk-JIJVIIQB.js";
43
43
  import {
44
44
  STICKY_HEADER_OFFSET_PX,
45
45
  contentFetch,
@@ -1461,4 +1461,4 @@ export {
1461
1461
  useLegalDocs,
1462
1462
  LegalDocumentPage
1463
1463
  };
1464
- //# sourceMappingURL=chunk-KT4KY6OF.js.map
1464
+ //# sourceMappingURL=chunk-J6Z4BKMD.js.map
@@ -36,7 +36,6 @@ import {
36
36
  Arrow02RightIcon,
37
37
  ArrowRightUpIcon,
38
38
  BankIcon,
39
- BannedIcon,
40
39
  BellIcon,
41
40
  BellOffIcon,
42
41
  BookIcon,
@@ -812,7 +811,7 @@ function renderStatusTag(status) {
812
811
  return /* @__PURE__ */ jsx5(Tag, { label: "Approved", variant: "success", icon: /* @__PURE__ */ jsx5(CheckCircleIcon, { className: "w-4 h-4" }) });
813
812
  }
814
813
  if (status === "cancelled") {
815
- return /* @__PURE__ */ jsx5(Tag, { label: "Cancelled", variant: "grey", icon: /* @__PURE__ */ jsx5(BannedIcon, { className: "w-4 h-4" }) });
814
+ return /* @__PURE__ */ jsx5(Tag, { label: "Cancelled", variant: "grey", icon: /* @__PURE__ */ jsx5(XmarkIcon, { className: "w-4 h-4" }) });
816
815
  }
817
816
  return /* @__PURE__ */ jsx5(Tag, { label: "Rejected", variant: "error", icon: /* @__PURE__ */ jsx5(XmarkCircleIcon, { className: "w-4 h-4" }) });
818
817
  }
@@ -3730,13 +3729,15 @@ var ChatInput = forwardRef9((allProps, ref) => {
3730
3729
  onMentionQueryChange,
3731
3730
  onValueChange,
3732
3731
  startIcon,
3733
- hideBorder
3732
+ hideBorder,
3733
+ previewText
3734
3734
  // Remaining textarea-only attrs are intentionally dropped — the editor is a
3735
3735
  // contenteditable div, not a <textarea>, so spreading them would warn.
3736
3736
  } = rest;
3737
3737
  const [value, setValue] = useState8("");
3738
3738
  const [focused, setFocused] = useState8(false);
3739
3739
  const [isStopping, setIsStopping] = useState8(false);
3740
+ const [previewDismissed, setPreviewDismissed] = useState8(false);
3740
3741
  const editorRef = useRef4(null);
3741
3742
  const shouldRefocusRef = useRef4(false);
3742
3743
  const prevSendingRef = useRef4(sending);
@@ -3755,6 +3756,12 @@ var ChatInput = forwardRef9((allProps, ref) => {
3755
3756
  useEffect4(() => {
3756
3757
  onValueChange?.(value);
3757
3758
  }, [value, onValueChange]);
3759
+ useEffect4(() => {
3760
+ setPreviewDismissed(false);
3761
+ }, [previewText]);
3762
+ useEffect4(() => {
3763
+ if (previewText) setPreviewDismissed(true);
3764
+ }, [value]);
3758
3765
  const applyValue = useCallback4((next, caret = "end") => {
3759
3766
  const el = editorRef.current;
3760
3767
  if (el) {
@@ -3977,6 +3984,7 @@ var ChatInput = forwardRef9((allProps, ref) => {
3977
3984
  const sendDisabled = sending || disabled || !hasContent;
3978
3985
  const isEmpty = value.length === 0;
3979
3986
  const isDisabled = sending || disabled;
3987
+ const showPreview = !isDisabled && !!previewText && !previewDismissed;
3980
3988
  return /* @__PURE__ */ jsx20(
3981
3989
  "div",
3982
3990
  {
@@ -4025,7 +4033,8 @@ var ChatInput = forwardRef9((allProps, ref) => {
4025
4033
  children: [
4026
4034
  startIcon && /* @__PURE__ */ jsx20("span", { className: "flex h-6 shrink-0 items-center", children: startIcon }),
4027
4035
  /* @__PURE__ */ jsxs16("div", { className: "relative flex-1 min-w-0", children: [
4028
- isEmpty && /* @__PURE__ */ jsx20("span", { className: "pointer-events-none absolute left-0 top-0 select-none text-h4 !leading-9 text-ods-text-secondary", children: disabled ? "Connection lost. Waiting to reconnect..." : placeholder }),
4036
+ isEmpty && !showPreview && /* @__PURE__ */ jsx20("span", { className: "pointer-events-none absolute left-0 top-0 select-none text-h4 !leading-9 text-ods-text-secondary", children: disabled ? "Connection lost. Waiting to reconnect..." : placeholder }),
4037
+ showPreview && /* @__PURE__ */ jsx20("p", { className: "pointer-events-none m-0 select-none whitespace-pre-wrap break-words text-h4 !leading-9 text-ods-text-secondary", children: previewText }),
4029
4038
  /* @__PURE__ */ jsx20(
4030
4039
  "div",
4031
4040
  {
@@ -4052,6 +4061,9 @@ var ChatInput = forwardRef9((allProps, ref) => {
4052
4061
  onBlur: () => setFocused(false),
4053
4062
  className: cn(
4054
4063
  "max-h-[160px] overflow-y-auto whitespace-pre-wrap break-words outline-none",
4064
+ // While a ghost preview shows, the editor is empty — collapse it
4065
+ // out of flow + transparent so the in-flow preview drives height.
4066
+ showPreview && "absolute inset-0 opacity-0",
4055
4067
  // `leading-9` (36px) sits just above the 32px chip's line-box need
4056
4068
  // (~35.5px incl. vertical-align overhead): the LINE drives row
4057
4069
  // height (deterministic 48px, no overflow) AND the near-zero slack
@@ -5684,6 +5696,7 @@ function ChipButton({ chip }) {
5684
5696
  function ChatQuickActionRow({
5685
5697
  leading,
5686
5698
  chips,
5699
+ wrap = false,
5687
5700
  className
5688
5701
  }) {
5689
5702
  const auto = useAutoLimitTags({
@@ -5693,6 +5706,12 @@ function ChatQuickActionRow({
5693
5706
  const visibleChips = chips.slice(0, auto.visibleCount);
5694
5707
  const hiddenChips = chips.slice(auto.visibleCount);
5695
5708
  if (!leading && chips.length === 0) return null;
5709
+ if (wrap) {
5710
+ return /* @__PURE__ */ jsxs26("div", { className: cn("flex shrink-0 flex-wrap items-center gap-1", className), children: [
5711
+ leading,
5712
+ chips.map((chip) => /* @__PURE__ */ jsx30(ChipButton, { chip }, chip.id))
5713
+ ] });
5714
+ }
5696
5715
  return /* @__PURE__ */ jsxs26(
5697
5716
  "div",
5698
5717
  {
@@ -6677,7 +6696,14 @@ function GuideWelcome({
6677
6696
  }
6678
6697
  )
6679
6698
  ] }),
6680
- quickActions.length > 0 && /* @__PURE__ */ jsx36(ChatQuickActionRow, { chips: chipItems })
6699
+ quickActions.length > 0 && /* @__PURE__ */ jsx36(
6700
+ ChatQuickActionRow,
6701
+ {
6702
+ wrap: true,
6703
+ chips: chipItems,
6704
+ className: "max-h-28 overflow-y-auto scrollbar-thin scrollbar-track-transparent scrollbar-thumb-ods-border/30"
6705
+ }
6706
+ )
6681
6707
  ]
6682
6708
  }
6683
6709
  );
@@ -7678,7 +7704,8 @@ function ChatComposer({
7678
7704
  onCloseContextPicker,
7679
7705
  mentionQuery = null,
7680
7706
  onMentionQueryChange,
7681
- onValueChange
7707
+ onValueChange,
7708
+ previewText
7682
7709
  }) {
7683
7710
  const contextEnabled = !!contextPicker && !archived;
7684
7711
  const selected = selectedContextItems ?? [];
@@ -7700,6 +7727,7 @@ function ChatComposer({
7700
7727
  onStop,
7701
7728
  sending,
7702
7729
  placeholder,
7730
+ previewText,
7703
7731
  fullWidth: true,
7704
7732
  className: "px-0",
7705
7733
  reserveAvatarOffset: false,
@@ -22749,26 +22777,31 @@ function DashboardInfoCard({
22749
22777
  if (typeof progressSize === "number") {
22750
22778
  return /* @__PURE__ */ jsx159(CircularProgress, { ...common, size: progressSize, strokeWidth: strokeFor(progressSize) });
22751
22779
  }
22752
- return /* @__PURE__ */ jsxs127(Fragment31, { children: [
22753
- /* @__PURE__ */ jsx159(
22754
- CircularProgress,
22755
- {
22756
- ...common,
22757
- size: progressSize.base,
22758
- strokeWidth: strokeFor(progressSize.base),
22759
- className: "lg:hidden"
22760
- }
22761
- ),
22762
- /* @__PURE__ */ jsx159(
22763
- CircularProgress,
22764
- {
22765
- ...common,
22766
- size: progressSize.lg,
22767
- strokeWidth: strokeFor(progressSize.lg),
22768
- className: "hidden lg:block"
22769
- }
22770
- )
22771
- ] });
22780
+ const { base, md, lg } = progressSize;
22781
+ const rings = [];
22782
+ if (md !== void 0 && lg !== void 0) {
22783
+ rings.push({ key: "base", size: base, className: "md:hidden" });
22784
+ rings.push({ key: "md", size: md, className: "hidden md:block lg:hidden" });
22785
+ rings.push({ key: "lg", size: lg, className: "hidden lg:block" });
22786
+ } else if (md !== void 0) {
22787
+ rings.push({ key: "base", size: base, className: "md:hidden" });
22788
+ rings.push({ key: "md", size: md, className: "hidden md:block" });
22789
+ } else if (lg !== void 0) {
22790
+ rings.push({ key: "base", size: base, className: "lg:hidden" });
22791
+ rings.push({ key: "lg", size: lg, className: "hidden lg:block" });
22792
+ } else {
22793
+ rings.push({ key: "base", size: base, className: "" });
22794
+ }
22795
+ return /* @__PURE__ */ jsx159(Fragment31, { children: rings.map((ring) => /* @__PURE__ */ jsx159(
22796
+ CircularProgress,
22797
+ {
22798
+ ...common,
22799
+ size: ring.size,
22800
+ strokeWidth: strokeFor(ring.size),
22801
+ className: ring.className
22802
+ },
22803
+ ring.key
22804
+ )) });
22772
22805
  };
22773
22806
  const cardContent = /* @__PURE__ */ jsxs127(Fragment31, { children: [
22774
22807
  /* @__PURE__ */ jsxs127("div", { className: "flex-1 flex flex-col", children: [
@@ -48544,7 +48577,7 @@ function EmbeddableChatInner({
48544
48577
  };
48545
48578
  }, [isOpen, shellLess]);
48546
48579
  const chatInputRef = useRef71(null);
48547
- const quickActionDraftRef = useRef71(null);
48580
+ const [quickActionPreview, setQuickActionPreview] = useState111(null);
48548
48581
  const slashCommandsProp = useMemo43(
48549
48582
  () => ({
48550
48583
  fetchCommands: (prefix, signal) => fetchSlashCommands(prefix, signal, commandsUrl),
@@ -48879,6 +48912,9 @@ function EmbeddableChatInner({
48879
48912
  const messagesInitialLoading = isMessagesLoading && !hasMessages;
48880
48913
  const contentViewKey = hasConversation ? "conversation" : activeMode;
48881
48914
  const isGuideEmpty = !hasConversation && activeMode === "guide";
48915
+ useEffect85(() => {
48916
+ if (!isGuideEmpty) setQuickActionPreview(null);
48917
+ }, [isGuideEmpty]);
48882
48918
  const guideCanReturnToMingo = isGuideEmpty && hasMingoMode;
48883
48919
  const sourceLabel = source === "flamingo" ? "Knowledge Base" : "Data Room";
48884
48920
  const enabledSet = useMemo43(
@@ -49073,22 +49109,11 @@ function EmbeddableChatInner({
49073
49109
  ...guideWelcome,
49074
49110
  quickActions: guideWelcome?.quickActions ?? guideSuggestedActions,
49075
49111
  onQuickAction: (action) => {
49076
- quickActionDraftRef.current = null;
49077
- chatInputRef.current?.setValue("");
49112
+ setQuickActionPreview(null);
49078
49113
  handleSend(action.prompt ?? action.label);
49079
49114
  },
49080
- onQuickActionHover: (action) => {
49081
- if (quickActionDraftRef.current === null) {
49082
- quickActionDraftRef.current = chatInputRef.current?.getValue() ?? "";
49083
- }
49084
- chatInputRef.current?.setValue(action.prompt ?? action.label);
49085
- },
49086
- onQuickActionHoverEnd: () => {
49087
- if (quickActionDraftRef.current !== null) {
49088
- chatInputRef.current?.setValue(quickActionDraftRef.current);
49089
- quickActionDraftRef.current = null;
49090
- }
49091
- },
49115
+ onQuickActionHover: (action) => setQuickActionPreview(action.prompt ?? action.label),
49116
+ onQuickActionHoverEnd: () => setQuickActionPreview(null),
49092
49117
  children: (chipCommands.length > 0 || !commandsLoaded) && /* @__PURE__ */ jsxs265("div", { className: "shrink-0 overflow-hidden rounded-md border border-ods-border", children: [
49093
49118
  !commandsLoaded && chipCommands.length === 0 && SKELETON_ROW_VARIANTS.map((variant, i) => /* @__PURE__ */ jsx329(
49094
49119
  MingoOnboardingCardSkeleton,
@@ -49152,6 +49177,7 @@ function EmbeddableChatInner({
49152
49177
  placeholder: hasInflightUploads ? "Waiting for uploads to finish\u2026" : "Ask a question...",
49153
49178
  autoFocus: autoFocusInput,
49154
49179
  slashCommands: slashCommandsProp,
49180
+ previewText: quickActionPreview ?? void 0,
49155
49181
  showAttachmentButton: attachmentsEnabled && activeMode === "guide",
49156
49182
  attachmentsCount: stagedAttachments.length,
49157
49183
  onAddFiles: addAttachmentFiles,
@@ -50162,4 +50188,4 @@ export {
50162
50188
  FAE_AVATAR_DATA_URI,
50163
50189
  assets
50164
50190
  };
50165
- //# sourceMappingURL=chunk-AZ3DTQU5.js.map
50191
+ //# sourceMappingURL=chunk-JIJVIIQB.js.map