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

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 (100) hide show
  1. package/dist/{chunk-D2ETTYT2.cjs → chunk-27SVN4Z2.cjs} +26 -26
  2. package/dist/{chunk-D2ETTYT2.cjs.map → chunk-27SVN4Z2.cjs.map} +1 -1
  3. package/dist/{chunk-KT4KY6OF.js → chunk-3Y3LZ5IR.js} +4 -4
  4. package/dist/{chunk-4I46HAN5.js → chunk-4GVJ7WW6.js} +4 -4
  5. package/dist/{chunk-KE2QKKCN.js → chunk-5U6457XI.js} +2 -2
  6. package/dist/{chunk-QCREN5A5.cjs → chunk-6GNQY3PG.cjs} +56 -56
  7. package/dist/{chunk-QCREN5A5.cjs.map → chunk-6GNQY3PG.cjs.map} +1 -1
  8. package/dist/{chunk-Y2WHQSF6.js → chunk-74C4EFJE.js} +2 -2
  9. package/dist/{chunk-N3GFEIWF.js → chunk-7EUFJBIA.js} +2 -2
  10. package/dist/{chunk-R3MVYKEL.cjs → chunk-7HE7VIZP.cjs} +62 -62
  11. package/dist/{chunk-R3MVYKEL.cjs.map → chunk-7HE7VIZP.cjs.map} +1 -1
  12. package/dist/{chunk-CUQGK4AD.js → chunk-DBE7RART.js} +2 -2
  13. package/dist/{chunk-GCYEJLOQ.js → chunk-DGJT6GWA.js} +2 -2
  14. package/dist/{chunk-NIIN3UH4.cjs → chunk-DJ24O2BR.cjs} +37 -37
  15. package/dist/{chunk-NIIN3UH4.cjs.map → chunk-DJ24O2BR.cjs.map} +1 -1
  16. package/dist/{chunk-AZ3DTQU5.js → chunk-DOSYUPZS.js} +67 -40
  17. package/dist/chunk-DOSYUPZS.js.map +1 -0
  18. package/dist/{chunk-CJB4NUD6.cjs → chunk-DQU4MFQI.cjs} +7 -7
  19. package/dist/{chunk-CJB4NUD6.cjs.map → chunk-DQU4MFQI.cjs.map} +1 -1
  20. package/dist/{chunk-I4BWBQXX.cjs → chunk-FNJKJV5T.cjs} +31 -31
  21. package/dist/{chunk-I4BWBQXX.cjs.map → chunk-FNJKJV5T.cjs.map} +1 -1
  22. package/dist/{chunk-QYF6LEDF.js → chunk-IANIU6SO.js} +2 -2
  23. package/dist/{chunk-BYAXSMET.cjs → chunk-JYIFLOAQ.cjs} +15 -15
  24. package/dist/{chunk-BYAXSMET.cjs.map → chunk-JYIFLOAQ.cjs.map} +1 -1
  25. package/dist/{chunk-I3CNFZOY.cjs → chunk-OWMOMMEC.cjs} +67 -40
  26. package/dist/chunk-OWMOMMEC.cjs.map +1 -0
  27. package/dist/{chunk-A37AW6CD.cjs → chunk-Q6Y6FETD.cjs} +5 -5
  28. package/dist/{chunk-A37AW6CD.cjs.map → chunk-Q6Y6FETD.cjs.map} +1 -1
  29. package/dist/{chunk-2GROEWOK.js → chunk-TTRL5L5B.js} +4 -4
  30. package/dist/{chunk-OLR534KB.js → chunk-VYWPGALC.js} +2 -2
  31. package/dist/{chunk-OGTHMZIL.cjs → chunk-XLNSQ5ER.cjs} +9 -9
  32. package/dist/{chunk-OGTHMZIL.cjs.map → chunk-XLNSQ5ER.cjs.map} +1 -1
  33. package/dist/{chunk-LANAE7MY.cjs → chunk-XTR3DBCO.cjs} +12 -12
  34. package/dist/{chunk-LANAE7MY.cjs.map → chunk-XTR3DBCO.cjs.map} +1 -1
  35. package/dist/{chunk-EPVDWAVJ.js → chunk-YECKAUHG.js} +4 -4
  36. package/dist/{chunk-EYPZ2XLX.cjs → chunk-ZJNSS6KV.cjs} +25 -25
  37. package/dist/{chunk-EYPZ2XLX.cjs.map → chunk-ZJNSS6KV.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/chat-composer.tsx +5 -0
  81. package/src/components/chat/chat-input.tsx +39 -1
  82. package/src/components/chat/chat-quick-action-row.tsx +20 -0
  83. package/src/components/chat/embeddable-chat.tsx +21 -23
  84. package/src/components/chat/guide-welcome.tsx +21 -11
  85. package/src/components/chat/types/component.types.ts +6 -0
  86. package/src/components/ui/dashboard-info-card.tsx +41 -19
  87. package/src/stories/DashboardInfoCard.stories.tsx +7 -7
  88. package/dist/chunk-AZ3DTQU5.js.map +0 -1
  89. package/dist/chunk-I3CNFZOY.cjs.map +0 -1
  90. /package/dist/{chunk-KT4KY6OF.js.map → chunk-3Y3LZ5IR.js.map} +0 -0
  91. /package/dist/{chunk-4I46HAN5.js.map → chunk-4GVJ7WW6.js.map} +0 -0
  92. /package/dist/{chunk-KE2QKKCN.js.map → chunk-5U6457XI.js.map} +0 -0
  93. /package/dist/{chunk-Y2WHQSF6.js.map → chunk-74C4EFJE.js.map} +0 -0
  94. /package/dist/{chunk-N3GFEIWF.js.map → chunk-7EUFJBIA.js.map} +0 -0
  95. /package/dist/{chunk-CUQGK4AD.js.map → chunk-DBE7RART.js.map} +0 -0
  96. /package/dist/{chunk-GCYEJLOQ.js.map → chunk-DGJT6GWA.js.map} +0 -0
  97. /package/dist/{chunk-QYF6LEDF.js.map → chunk-IANIU6SO.js.map} +0 -0
  98. /package/dist/{chunk-2GROEWOK.js.map → chunk-TTRL5L5B.js.map} +0 -0
  99. /package/dist/{chunk-OLR534KB.js.map → chunk-VYWPGALC.js.map} +0 -0
  100. /package/dist/{chunk-EPVDWAVJ.js.map → chunk-YECKAUHG.js.map} +0 -0
@@ -3730,13 +3730,15 @@ var ChatInput = forwardRef9((allProps, ref) => {
3730
3730
  onMentionQueryChange,
3731
3731
  onValueChange,
3732
3732
  startIcon,
3733
- hideBorder
3733
+ hideBorder,
3734
+ previewText
3734
3735
  // Remaining textarea-only attrs are intentionally dropped — the editor is a
3735
3736
  // contenteditable div, not a <textarea>, so spreading them would warn.
3736
3737
  } = rest;
3737
3738
  const [value, setValue] = useState8("");
3738
3739
  const [focused, setFocused] = useState8(false);
3739
3740
  const [isStopping, setIsStopping] = useState8(false);
3741
+ const [previewDismissed, setPreviewDismissed] = useState8(false);
3740
3742
  const editorRef = useRef4(null);
3741
3743
  const shouldRefocusRef = useRef4(false);
3742
3744
  const prevSendingRef = useRef4(sending);
@@ -3755,6 +3757,12 @@ var ChatInput = forwardRef9((allProps, ref) => {
3755
3757
  useEffect4(() => {
3756
3758
  onValueChange?.(value);
3757
3759
  }, [value, onValueChange]);
3760
+ useEffect4(() => {
3761
+ setPreviewDismissed(false);
3762
+ }, [previewText]);
3763
+ useEffect4(() => {
3764
+ if (previewText) setPreviewDismissed(true);
3765
+ }, [value]);
3758
3766
  const applyValue = useCallback4((next, caret = "end") => {
3759
3767
  const el = editorRef.current;
3760
3768
  if (el) {
@@ -3977,6 +3985,7 @@ var ChatInput = forwardRef9((allProps, ref) => {
3977
3985
  const sendDisabled = sending || disabled || !hasContent;
3978
3986
  const isEmpty = value.length === 0;
3979
3987
  const isDisabled = sending || disabled;
3988
+ const showPreview = !isDisabled && !!previewText && !previewDismissed;
3980
3989
  return /* @__PURE__ */ jsx20(
3981
3990
  "div",
3982
3991
  {
@@ -4025,7 +4034,8 @@ var ChatInput = forwardRef9((allProps, ref) => {
4025
4034
  children: [
4026
4035
  startIcon && /* @__PURE__ */ jsx20("span", { className: "flex h-6 shrink-0 items-center", children: startIcon }),
4027
4036
  /* @__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 }),
4037
+ 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 }),
4038
+ 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
4039
  /* @__PURE__ */ jsx20(
4030
4040
  "div",
4031
4041
  {
@@ -4052,6 +4062,9 @@ var ChatInput = forwardRef9((allProps, ref) => {
4052
4062
  onBlur: () => setFocused(false),
4053
4063
  className: cn(
4054
4064
  "max-h-[160px] overflow-y-auto whitespace-pre-wrap break-words outline-none",
4065
+ // While a ghost preview shows, the editor is empty — collapse it
4066
+ // out of flow + transparent so the in-flow preview drives height.
4067
+ showPreview && "absolute inset-0 opacity-0",
4055
4068
  // `leading-9` (36px) sits just above the 32px chip's line-box need
4056
4069
  // (~35.5px incl. vertical-align overhead): the LINE drives row
4057
4070
  // height (deterministic 48px, no overflow) AND the near-zero slack
@@ -5684,6 +5697,7 @@ function ChipButton({ chip }) {
5684
5697
  function ChatQuickActionRow({
5685
5698
  leading,
5686
5699
  chips,
5700
+ wrap = false,
5687
5701
  className
5688
5702
  }) {
5689
5703
  const auto = useAutoLimitTags({
@@ -5693,6 +5707,12 @@ function ChatQuickActionRow({
5693
5707
  const visibleChips = chips.slice(0, auto.visibleCount);
5694
5708
  const hiddenChips = chips.slice(auto.visibleCount);
5695
5709
  if (!leading && chips.length === 0) return null;
5710
+ if (wrap) {
5711
+ return /* @__PURE__ */ jsxs26("div", { className: cn("flex shrink-0 flex-wrap items-center gap-1", className), children: [
5712
+ leading,
5713
+ chips.map((chip) => /* @__PURE__ */ jsx30(ChipButton, { chip }, chip.id))
5714
+ ] });
5715
+ }
5696
5716
  return /* @__PURE__ */ jsxs26(
5697
5717
  "div",
5698
5718
  {
@@ -6677,7 +6697,14 @@ function GuideWelcome({
6677
6697
  }
6678
6698
  )
6679
6699
  ] }),
6680
- quickActions.length > 0 && /* @__PURE__ */ jsx36(ChatQuickActionRow, { chips: chipItems })
6700
+ quickActions.length > 0 && /* @__PURE__ */ jsx36(
6701
+ ChatQuickActionRow,
6702
+ {
6703
+ wrap: true,
6704
+ chips: chipItems,
6705
+ className: "max-h-28 overflow-y-auto scrollbar-thin scrollbar-track-transparent scrollbar-thumb-ods-border/30"
6706
+ }
6707
+ )
6681
6708
  ]
6682
6709
  }
6683
6710
  );
@@ -7678,7 +7705,8 @@ function ChatComposer({
7678
7705
  onCloseContextPicker,
7679
7706
  mentionQuery = null,
7680
7707
  onMentionQueryChange,
7681
- onValueChange
7708
+ onValueChange,
7709
+ previewText
7682
7710
  }) {
7683
7711
  const contextEnabled = !!contextPicker && !archived;
7684
7712
  const selected = selectedContextItems ?? [];
@@ -7700,6 +7728,7 @@ function ChatComposer({
7700
7728
  onStop,
7701
7729
  sending,
7702
7730
  placeholder,
7731
+ previewText,
7703
7732
  fullWidth: true,
7704
7733
  className: "px-0",
7705
7734
  reserveAvatarOffset: false,
@@ -22749,26 +22778,31 @@ function DashboardInfoCard({
22749
22778
  if (typeof progressSize === "number") {
22750
22779
  return /* @__PURE__ */ jsx159(CircularProgress, { ...common, size: progressSize, strokeWidth: strokeFor(progressSize) });
22751
22780
  }
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
- ] });
22781
+ const { base, md, lg } = progressSize;
22782
+ const rings = [];
22783
+ if (md !== void 0 && lg !== void 0) {
22784
+ rings.push({ key: "base", size: base, className: "md:hidden" });
22785
+ rings.push({ key: "md", size: md, className: "hidden md:block lg:hidden" });
22786
+ rings.push({ key: "lg", size: lg, className: "hidden lg:block" });
22787
+ } else if (md !== void 0) {
22788
+ rings.push({ key: "base", size: base, className: "md:hidden" });
22789
+ rings.push({ key: "md", size: md, className: "hidden md:block" });
22790
+ } else if (lg !== void 0) {
22791
+ rings.push({ key: "base", size: base, className: "lg:hidden" });
22792
+ rings.push({ key: "lg", size: lg, className: "hidden lg:block" });
22793
+ } else {
22794
+ rings.push({ key: "base", size: base, className: "" });
22795
+ }
22796
+ return /* @__PURE__ */ jsx159(Fragment31, { children: rings.map((ring) => /* @__PURE__ */ jsx159(
22797
+ CircularProgress,
22798
+ {
22799
+ ...common,
22800
+ size: ring.size,
22801
+ strokeWidth: strokeFor(ring.size),
22802
+ className: ring.className
22803
+ },
22804
+ ring.key
22805
+ )) });
22772
22806
  };
22773
22807
  const cardContent = /* @__PURE__ */ jsxs127(Fragment31, { children: [
22774
22808
  /* @__PURE__ */ jsxs127("div", { className: "flex-1 flex flex-col", children: [
@@ -48544,7 +48578,7 @@ function EmbeddableChatInner({
48544
48578
  };
48545
48579
  }, [isOpen, shellLess]);
48546
48580
  const chatInputRef = useRef71(null);
48547
- const quickActionDraftRef = useRef71(null);
48581
+ const [quickActionPreview, setQuickActionPreview] = useState111(null);
48548
48582
  const slashCommandsProp = useMemo43(
48549
48583
  () => ({
48550
48584
  fetchCommands: (prefix, signal) => fetchSlashCommands(prefix, signal, commandsUrl),
@@ -48879,6 +48913,9 @@ function EmbeddableChatInner({
48879
48913
  const messagesInitialLoading = isMessagesLoading && !hasMessages;
48880
48914
  const contentViewKey = hasConversation ? "conversation" : activeMode;
48881
48915
  const isGuideEmpty = !hasConversation && activeMode === "guide";
48916
+ useEffect85(() => {
48917
+ if (!isGuideEmpty) setQuickActionPreview(null);
48918
+ }, [isGuideEmpty]);
48882
48919
  const guideCanReturnToMingo = isGuideEmpty && hasMingoMode;
48883
48920
  const sourceLabel = source === "flamingo" ? "Knowledge Base" : "Data Room";
48884
48921
  const enabledSet = useMemo43(
@@ -49073,22 +49110,11 @@ function EmbeddableChatInner({
49073
49110
  ...guideWelcome,
49074
49111
  quickActions: guideWelcome?.quickActions ?? guideSuggestedActions,
49075
49112
  onQuickAction: (action) => {
49076
- quickActionDraftRef.current = null;
49077
- chatInputRef.current?.setValue("");
49113
+ setQuickActionPreview(null);
49078
49114
  handleSend(action.prompt ?? action.label);
49079
49115
  },
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
- },
49116
+ onQuickActionHover: (action) => setQuickActionPreview(action.prompt ?? action.label),
49117
+ onQuickActionHoverEnd: () => setQuickActionPreview(null),
49092
49118
  children: (chipCommands.length > 0 || !commandsLoaded) && /* @__PURE__ */ jsxs265("div", { className: "shrink-0 overflow-hidden rounded-md border border-ods-border", children: [
49093
49119
  !commandsLoaded && chipCommands.length === 0 && SKELETON_ROW_VARIANTS.map((variant, i) => /* @__PURE__ */ jsx329(
49094
49120
  MingoOnboardingCardSkeleton,
@@ -49152,6 +49178,7 @@ function EmbeddableChatInner({
49152
49178
  placeholder: hasInflightUploads ? "Waiting for uploads to finish\u2026" : "Ask a question...",
49153
49179
  autoFocus: autoFocusInput,
49154
49180
  slashCommands: slashCommandsProp,
49181
+ previewText: quickActionPreview ?? void 0,
49155
49182
  showAttachmentButton: attachmentsEnabled && activeMode === "guide",
49156
49183
  attachmentsCount: stagedAttachments.length,
49157
49184
  onAddFiles: addAttachmentFiles,
@@ -50162,4 +50189,4 @@ export {
50162
50189
  FAE_AVATAR_DATA_URI,
50163
50190
  assets
50164
50191
  };
50165
- //# sourceMappingURL=chunk-AZ3DTQU5.js.map
50192
+ //# sourceMappingURL=chunk-DOSYUPZS.js.map