@envive-ai/react-toolkit-v3 0.3.18 → 0.3.19

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 (166) hide show
  1. package/dist/AnimatedText/AnimatedText.d.cts +3 -3
  2. package/dist/AnimatedText/AnimatedText.d.ts +3 -3
  3. package/dist/CSSVariablesEditor/CssVariablesEditorComponent.d.cts +2 -2
  4. package/dist/CSSVariablesEditor/CssVariablesEditorComponent.d.ts +2 -2
  5. package/dist/Carousel/Carousel.cjs +1 -1
  6. package/dist/Carousel/Carousel.d.cts +2 -2
  7. package/dist/Carousel/Carousel.d.ts +2 -2
  8. package/dist/Carousel/Carousel.js +1 -1
  9. package/dist/Carousel/components/Container.cjs +2 -2
  10. package/dist/Carousel/components/Container.js +2 -2
  11. package/dist/ChatFooter/ChatFooter.cjs +1 -1
  12. package/dist/ChatFooter/ChatFooter.d.cts +2 -2
  13. package/dist/ChatFooter/ChatFooter.d.ts +2 -2
  14. package/dist/ChatFooter/ChatFooter.js +1 -1
  15. package/dist/ChatFooter/components/Layout.cjs +2 -2
  16. package/dist/ChatFooter/components/Layout.js +2 -2
  17. package/dist/ChatFooter/components/index.d.cts +5 -5
  18. package/dist/ChatFooter/components/index.d.ts +5 -5
  19. package/dist/ChatHeader/components/Handle.cjs +2 -2
  20. package/dist/ChatHeader/components/Handle.js +2 -2
  21. package/dist/ChatHeader/components/Toggle.cjs +3 -3
  22. package/dist/ChatHeader/components/Toggle.js +3 -3
  23. package/dist/ChatPreview/ChatPreview.cjs +1 -1
  24. package/dist/ChatPreview/ChatPreview.d.cts +2 -2
  25. package/dist/ChatPreview/ChatPreview.d.ts +2 -2
  26. package/dist/ChatPreview/ChatPreview.js +1 -1
  27. package/dist/ChatPreviewComparison/ChatPreviewComparison.cjs +1 -1
  28. package/dist/ChatPreviewComparison/ChatPreviewComparison.d.cts +2 -2
  29. package/dist/ChatPreviewComparison/ChatPreviewComparison.js +1 -1
  30. package/dist/ChatPreviewComparison/components/Headline.cjs +2 -2
  31. package/dist/ChatPreviewComparison/components/Headline.js +2 -2
  32. package/dist/ChatPreviewComparison/components/Layout.cjs +4 -4
  33. package/dist/ChatPreviewComparison/components/Layout.js +4 -4
  34. package/dist/ChatPreviewComparison/components/Message.cjs +2 -2
  35. package/dist/ChatPreviewComparison/components/Message.js +2 -2
  36. package/dist/ChatPreviewLoading/ChatPreviewLoading.d.cts +2 -2
  37. package/dist/ChatPreviewLoading/ChatPreviewLoading.d.ts +2 -2
  38. package/dist/Container/Container.d.cts +175 -175
  39. package/dist/Container/Container.d.ts +175 -175
  40. package/dist/DesignTokens/DesignTokensComponent.d.cts +2 -2
  41. package/dist/DesignTokens/DesignTokensComponent.d.ts +2 -2
  42. package/dist/Disclaimer/components/Container.cjs +2 -2
  43. package/dist/Disclaimer/components/Container.js +2 -2
  44. package/dist/DocumentRetrievalCard/DocumentRetrievalCard.d.cts +2 -2
  45. package/dist/DocumentRetrievalCard/components/Layout.cjs +2 -2
  46. package/dist/DocumentRetrievalCard/components/Layout.js +2 -2
  47. package/dist/DocumentRetrievalCard/components/ViewArticleButton/components/Icon.cjs +1 -1
  48. package/dist/DocumentRetrievalCard/components/ViewArticleButton/components/Icon.js +1 -1
  49. package/dist/FloatingButton/FloatingButton.d.cts +2 -2
  50. package/dist/FloatingButton/FloatingButton.d.ts +2 -2
  51. package/dist/FloatingChat/FloatingChat.cjs +56 -20
  52. package/dist/FloatingChat/FloatingChat.d.cts +2 -2
  53. package/dist/FloatingChat/FloatingChat.d.ts +2 -2
  54. package/dist/FloatingChat/FloatingChat.js +57 -21
  55. package/dist/FloatingChat/components/AgentMessage.cjs +1 -1
  56. package/dist/FloatingChat/components/AgentMessage.js +1 -1
  57. package/dist/FloatingChat/components/ChatMessages.cjs +2 -2
  58. package/dist/FloatingChat/components/ChatMessages.js +2 -2
  59. package/dist/FloatingChat/components/Layout.cjs +5 -4
  60. package/dist/FloatingChat/components/Layout.js +5 -4
  61. package/dist/FloatingChat/components/ResultsGridView.cjs +72 -0
  62. package/dist/FloatingChat/components/ResultsGridView.js +71 -0
  63. package/dist/FloatingChat/components/SalesAgentBadgeContent.cjs +1 -1
  64. package/dist/FloatingChat/components/SalesAgentBadgeContent.js +1 -1
  65. package/dist/FloatingChat/components/SlideChatContent.cjs +46 -0
  66. package/dist/FloatingChat/components/SlideChatContent.js +45 -0
  67. package/dist/FloatingChat/components/index.cjs +4 -0
  68. package/dist/FloatingChat/components/index.js +4 -0
  69. package/dist/FloatingChat/hooks/useProductResultsView.cjs +36 -0
  70. package/dist/FloatingChat/hooks/useProductResultsView.js +35 -0
  71. package/dist/FloatingChat/utils/functions.cjs +16 -1
  72. package/dist/FloatingChat/utils/functions.js +15 -1
  73. package/dist/FullPageSalesAgent/FullPageSalesAgent.cjs +2 -2
  74. package/dist/FullPageSalesAgent/FullPageSalesAgent.d.cts +2 -2
  75. package/dist/FullPageSalesAgent/FullPageSalesAgent.d.ts +2 -2
  76. package/dist/FullPageSalesAgent/FullPageSalesAgent.js +2 -2
  77. package/dist/Image/Image.d.cts +2 -2
  78. package/dist/Image/Image.d.ts +2 -2
  79. package/dist/ImageGallery/ImageGallery.d.cts +2 -2
  80. package/dist/ImageGallery/ImageGallery.d.ts +2 -2
  81. package/dist/ImageGallery/components/Layout.cjs +1 -1
  82. package/dist/ImageGallery/components/Layout.js +1 -1
  83. package/dist/MarkdownProcessor/MarkdownProcessor.d.cts +2 -2
  84. package/dist/MarkdownProcessor/MarkdownProcessor.d.ts +2 -2
  85. package/dist/Message/components/LinkButton.cjs +1 -1
  86. package/dist/Message/components/LinkButton.js +1 -1
  87. package/dist/OrderLookupCard/OrderLookupCard.cjs +1 -1
  88. package/dist/OrderLookupCard/OrderLookupCard.js +1 -1
  89. package/dist/ProductCard/ProductCard.cjs +2 -2
  90. package/dist/ProductCard/ProductCard.d.cts +2 -2
  91. package/dist/ProductCard/ProductCard.d.ts +2 -2
  92. package/dist/ProductCard/ProductCard.js +2 -2
  93. package/dist/PromptButton/PromptButton.d.cts +2 -2
  94. package/dist/PromptButton/PromptButton.d.ts +2 -2
  95. package/dist/PromptButtonCarouselWithImage/PromptButtonCarouselWithImage.d.cts +2 -2
  96. package/dist/PromptButtonCarouselWithImage/PromptButtonCarouselWithImage.d.ts +2 -2
  97. package/dist/PromptButtonCarouselWithImage/components/PromptButtonsCarousel.cjs +1 -1
  98. package/dist/PromptButtonCarouselWithImage/components/PromptButtonsCarousel.js +1 -1
  99. package/dist/PromptCarousel/PromptCarousel.cjs +3 -3
  100. package/dist/PromptCarousel/PromptCarousel.d.cts +2 -2
  101. package/dist/PromptCarousel/PromptCarousel.d.ts +2 -2
  102. package/dist/PromptCarousel/PromptCarousel.js +3 -3
  103. package/dist/ReviewCard/ReviewCard.d.cts +2 -2
  104. package/dist/ReviewCard/ReviewCard.d.ts +2 -2
  105. package/dist/ReviewCard/components/Container.cjs +2 -2
  106. package/dist/ReviewCard/components/Container.js +2 -2
  107. package/dist/ReviewCard/components/ReadMoreButton.cjs +1 -1
  108. package/dist/ReviewCard/components/ReadMoreButton.js +1 -1
  109. package/dist/ReviewCard/components/index.d.cts +6 -6
  110. package/dist/ReviewCard/components/index.d.ts +4 -4
  111. package/dist/SalesAgentProductCard/SalesAgentProductCard.d.cts +2 -2
  112. package/dist/SalesAgentProductCard/SalesAgentProductCard.d.ts +2 -2
  113. package/dist/SalesAgentProductCard/components/Container.cjs +2 -2
  114. package/dist/SalesAgentProductCard/components/Container.js +2 -2
  115. package/dist/SalesAgentProductCard/components/index.d.cts +6 -6
  116. package/dist/SalesAgentProductCard/components/index.d.ts +8 -8
  117. package/dist/SocialProof/SocialProof.cjs +1 -1
  118. package/dist/SocialProof/SocialProof.d.ts +2 -2
  119. package/dist/SocialProof/SocialProof.js +1 -1
  120. package/dist/SocialProof/components/Headline.cjs +3 -3
  121. package/dist/SocialProof/components/Headline.js +3 -3
  122. package/dist/SocialProof/components/LayoutFourHorizontal.cjs +1 -1
  123. package/dist/SocialProof/components/LayoutFourHorizontal.js +1 -1
  124. package/dist/SocialProof/components/Subheadline.cjs +1 -1
  125. package/dist/SocialProof/components/Subheadline.js +1 -1
  126. package/dist/SparkleAnimation/SparkleAnimation.d.cts +2 -2
  127. package/dist/SparkleAnimation/SparkleAnimation.d.ts +2 -2
  128. package/dist/Stack/Stack.d.cts +2 -2
  129. package/dist/TitledPromptCarousel/TitledPromptCarousel.cjs +1 -1
  130. package/dist/TitledPromptCarousel/TitledPromptCarousel.d.cts +2 -2
  131. package/dist/TitledPromptCarousel/TitledPromptCarousel.d.ts +2 -2
  132. package/dist/TitledPromptCarousel/TitledPromptCarousel.js +1 -1
  133. package/dist/Tokens/index.cjs +1 -1
  134. package/dist/Tokens/index.js +1 -1
  135. package/dist/TypingAnimation/TypingAnimation.cjs +1 -1
  136. package/dist/TypingAnimation/TypingAnimation.d.cts +2 -2
  137. package/dist/TypingAnimation/TypingAnimation.d.ts +2 -2
  138. package/dist/TypingAnimation/TypingAnimation.js +1 -1
  139. package/dist/TypingAnimation/hooks/useGetTypographyVariant.cjs +1 -1
  140. package/dist/TypingAnimation/hooks/useGetTypographyVariant.js +1 -1
  141. package/dist/Typography/Typography.d.cts +4 -4
  142. package/dist/Typography/Typography.d.ts +4 -4
  143. package/dist/WelcomeMessage/components/Container.cjs +2 -2
  144. package/dist/WelcomeMessage/components/Container.js +2 -2
  145. package/dist/WidgetTextField/WidgetTextField.cjs +1 -1
  146. package/dist/WidgetTextField/WidgetTextField.d.cts +2 -2
  147. package/dist/WidgetTextField/WidgetTextField.d.ts +2 -2
  148. package/dist/WidgetTextField/WidgetTextField.js +1 -1
  149. package/dist/WidgetTextField/components/Container.cjs +2 -2
  150. package/dist/WidgetTextField/components/Container.js +2 -2
  151. package/dist/WidgetTextField/components/Icon.cjs +1 -1
  152. package/dist/WidgetTextField/components/Icon.js +1 -1
  153. package/dist/WidgetWrapper/WidgetWrapper.d.cts +2 -2
  154. package/dist/WidgetWrapper/WidgetWrapper.d.ts +2 -2
  155. package/dist/WidgetWrapperWithTitle/WidgetWrapperWithTitle.d.cts +2 -2
  156. package/dist/WidgetWrapperWithTitle/WidgetWrapperWithTitle.d.ts +2 -2
  157. package/dist/styles.css +1 -1
  158. package/package.json +1 -1
  159. package/src/components/FloatingChat/FloatingChat.tsx +80 -25
  160. package/src/components/FloatingChat/components/Layout.tsx +7 -1
  161. package/src/components/FloatingChat/components/ResultsGridView.tsx +93 -0
  162. package/src/components/FloatingChat/components/SlideChatContent.tsx +72 -0
  163. package/src/components/FloatingChat/components/index.ts +4 -0
  164. package/src/components/FloatingChat/hooks/useProductResultsView.ts +49 -0
  165. package/src/components/FloatingChat/utils/functions.ts +22 -0
  166. package/src/logging/logger.ts +33 -8
@@ -0,0 +1,46 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ const require_ResultsGridView = require('./ResultsGridView.cjs');
3
+ let react_jsx_runtime = require("react/jsx-runtime");
4
+ let framer_motion = require("framer-motion");
5
+
6
+ //#region src/components/FloatingChat/components/SlideChatContent.tsx
7
+ const slideVariants = {
8
+ enter: (isResults) => ({ x: isResults ? "100%" : "-100%" }),
9
+ center: { x: 0 },
10
+ exit: (isResults) => ({ x: isResults ? "100%" : "-100%" })
11
+ };
12
+ const SlideChatContent = ({ isResultsView, isResultsViewRef, resultsViewData, onBackToChat, onProductCardClick, theme, chatMessages, scrollToBottom }) => {
13
+ const resultsViewContent = resultsViewData && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ResultsGridView.ResultsGridView, {
14
+ theme,
15
+ searchQuery: resultsViewData.searchQuery,
16
+ products: resultsViewData.products,
17
+ onBackToChat,
18
+ onProductCardClick
19
+ });
20
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
21
+ className: "envive-tw-relative envive-tw-min-h-[200px] envive-tw-w-full envive-tw-overflow-hidden",
22
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(framer_motion.AnimatePresence, {
23
+ initial: false,
24
+ mode: "wait",
25
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(framer_motion.motion.div, {
26
+ custom: isResultsView,
27
+ variants: slideVariants,
28
+ initial: "enter",
29
+ animate: "center",
30
+ exit: "exit",
31
+ transition: {
32
+ duration: .3,
33
+ ease: "easeInOut"
34
+ },
35
+ onAnimationComplete: () => {
36
+ if (!isResultsViewRef.current) scrollToBottom();
37
+ },
38
+ className: "envive-tw-w-full",
39
+ children: isResultsView ? resultsViewContent : chatMessages
40
+ }, isResultsView ? "results" : "chat")
41
+ })
42
+ });
43
+ };
44
+
45
+ //#endregion
46
+ exports.SlideChatContent = SlideChatContent;
@@ -0,0 +1,45 @@
1
+ import { ResultsGridView } from "./ResultsGridView.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { AnimatePresence, motion } from "framer-motion";
4
+
5
+ //#region src/components/FloatingChat/components/SlideChatContent.tsx
6
+ const slideVariants = {
7
+ enter: (isResults) => ({ x: isResults ? "100%" : "-100%" }),
8
+ center: { x: 0 },
9
+ exit: (isResults) => ({ x: isResults ? "100%" : "-100%" })
10
+ };
11
+ const SlideChatContent = ({ isResultsView, isResultsViewRef, resultsViewData, onBackToChat, onProductCardClick, theme, chatMessages, scrollToBottom }) => {
12
+ const resultsViewContent = resultsViewData && /* @__PURE__ */ jsx(ResultsGridView, {
13
+ theme,
14
+ searchQuery: resultsViewData.searchQuery,
15
+ products: resultsViewData.products,
16
+ onBackToChat,
17
+ onProductCardClick
18
+ });
19
+ return /* @__PURE__ */ jsx("div", {
20
+ className: "envive-tw-relative envive-tw-min-h-[200px] envive-tw-w-full envive-tw-overflow-hidden",
21
+ children: /* @__PURE__ */ jsx(AnimatePresence, {
22
+ initial: false,
23
+ mode: "wait",
24
+ children: /* @__PURE__ */ jsx(motion.div, {
25
+ custom: isResultsView,
26
+ variants: slideVariants,
27
+ initial: "enter",
28
+ animate: "center",
29
+ exit: "exit",
30
+ transition: {
31
+ duration: .3,
32
+ ease: "easeInOut"
33
+ },
34
+ onAnimationComplete: () => {
35
+ if (!isResultsViewRef.current) scrollToBottom();
36
+ },
37
+ className: "envive-tw-w-full",
38
+ children: isResultsView ? resultsViewContent : chatMessages
39
+ }, isResultsView ? "results" : "chat")
40
+ })
41
+ });
42
+ };
43
+
44
+ //#endregion
45
+ export { SlideChatContent };
@@ -1,4 +1,6 @@
1
1
  const require_Layout = require('./Layout.cjs');
2
+ const require_ResultsGridView = require('./ResultsGridView.cjs');
3
+ const require_SlideChatContent = require('./SlideChatContent.cjs');
2
4
  const require_UserMessage = require('./UserMessage.cjs');
3
5
  const require_DocumentRetrievalCardsCarousel = require('./DocumentRetrievalCardsCarousel.cjs');
4
6
  const require_OrderLookupCardCarousel = require('./OrderLookupCardCarousel.cjs');
@@ -13,6 +15,8 @@ const require_ModalSheet = require('./ModalSheet.cjs');
13
15
  //#region src/components/FloatingChat/components/index.ts
14
16
  const FloatingChatComponents = {
15
17
  Layout: require_Layout.Layout,
18
+ ResultsGridView: require_ResultsGridView.ResultsGridView,
19
+ SlideChatContent: require_SlideChatContent.SlideChatContent,
16
20
  UserMessage: require_UserMessage.UserMessage,
17
21
  AgentMessage: require_AgentMessage.AgentMessage,
18
22
  ChatMessages: require_ChatMessages.ChatMessages,
@@ -1,4 +1,6 @@
1
1
  import { Layout } from "./Layout.js";
2
+ import { ResultsGridView } from "./ResultsGridView.js";
3
+ import { SlideChatContent } from "./SlideChatContent.js";
2
4
  import { UserMessage } from "./UserMessage.js";
3
5
  import { DocumentRetrievalCardsCarousel } from "./DocumentRetrievalCardsCarousel.js";
4
6
  import { OrderLookupCardCarousel } from "./OrderLookupCardCarousel.js";
@@ -13,6 +15,8 @@ import { ModalSheet } from "./ModalSheet.js";
13
15
  //#region src/components/FloatingChat/components/index.ts
14
16
  const FloatingChatComponents = {
15
17
  Layout,
18
+ ResultsGridView,
19
+ SlideChatContent,
16
20
  UserMessage,
17
21
  AgentMessage,
18
22
  ChatMessages,
@@ -0,0 +1,36 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ let react = require("react");
3
+
4
+ //#region src/components/FloatingChat/hooks/useProductResultsView.ts
5
+ const useProductResultsView = ({ scrollToBottom }) => {
6
+ const [resultsViewData, setResultsViewData] = (0, react.useState)(null);
7
+ const isResultsView = resultsViewData !== null;
8
+ const scrollContainerRef = (0, react.useRef)(null);
9
+ const isResultsViewRef = (0, react.useRef)(isResultsView);
10
+ isResultsViewRef.current = isResultsView;
11
+ const handleBackToChat = () => {
12
+ setResultsViewData(null);
13
+ };
14
+ (0, react.useEffect)(() => {
15
+ if (isResultsView && scrollContainerRef.current) scrollContainerRef.current.scrollTo({
16
+ top: 0,
17
+ behavior: "smooth"
18
+ });
19
+ }, [isResultsView]);
20
+ const prevIsResultsViewRef = (0, react.useRef)(isResultsView);
21
+ (0, react.useEffect)(() => {
22
+ if (prevIsResultsViewRef.current && !isResultsView) scrollToBottom();
23
+ prevIsResultsViewRef.current = isResultsView;
24
+ }, [isResultsView, scrollToBottom]);
25
+ return {
26
+ resultsViewData,
27
+ setResultsViewData,
28
+ isResultsView,
29
+ scrollContainerRef,
30
+ isResultsViewRef,
31
+ handleBackToChat
32
+ };
33
+ };
34
+
35
+ //#endregion
36
+ exports.useProductResultsView = useProductResultsView;
@@ -0,0 +1,35 @@
1
+ import { useEffect, useRef, useState } from "react";
2
+
3
+ //#region src/components/FloatingChat/hooks/useProductResultsView.ts
4
+ const useProductResultsView = ({ scrollToBottom }) => {
5
+ const [resultsViewData, setResultsViewData] = useState(null);
6
+ const isResultsView = resultsViewData !== null;
7
+ const scrollContainerRef = useRef(null);
8
+ const isResultsViewRef = useRef(isResultsView);
9
+ isResultsViewRef.current = isResultsView;
10
+ const handleBackToChat = () => {
11
+ setResultsViewData(null);
12
+ };
13
+ useEffect(() => {
14
+ if (isResultsView && scrollContainerRef.current) scrollContainerRef.current.scrollTo({
15
+ top: 0,
16
+ behavior: "smooth"
17
+ });
18
+ }, [isResultsView]);
19
+ const prevIsResultsViewRef = useRef(isResultsView);
20
+ useEffect(() => {
21
+ if (prevIsResultsViewRef.current && !isResultsView) scrollToBottom();
22
+ prevIsResultsViewRef.current = isResultsView;
23
+ }, [isResultsView, scrollToBottom]);
24
+ return {
25
+ resultsViewData,
26
+ setResultsViewData,
27
+ isResultsView,
28
+ scrollContainerRef,
29
+ isResultsViewRef,
30
+ handleBackToChat
31
+ };
32
+ };
33
+
34
+ //#endregion
35
+ export { useProductResultsView };
@@ -77,6 +77,20 @@ const getCleanOrders = (messages) => {
77
77
  }).filter((o) => o !== null);
78
78
  };
79
79
  const MOST_RELEVANT_DISPLAY_LIMIT = 8;
80
+ /**
81
+ * Extracts the search query from a message block (or previous blocks) that led to product results.
82
+ * Looks for QueryTyped (metadata.content) or SuggestionClicked (metadata.suggestionContent).
83
+ */
84
+ const getSearchQueryFromMessageBlock = (messages, productBlockIndex) => {
85
+ for (let i = productBlockIndex; i >= 0; i -= 1) {
86
+ const block = messages[i];
87
+ const queryTyped = block.find((msg) => msg.type === __envive_ai_react_hooks_application_models.MessageType.QueryTyped);
88
+ if (queryTyped && "content" in queryTyped.metadata) return queryTyped.metadata.content ?? "";
89
+ const suggestionClicked = block.find((msg) => msg.type === __envive_ai_react_hooks_application_models.MessageType.SuggestionClicked);
90
+ if (suggestionClicked && "suggestionContent" in suggestionClicked.metadata) return suggestionClicked.metadata.suggestionContent ?? "";
91
+ }
92
+ return "";
93
+ };
80
94
  const getProductCarouselDisplayInfo = (products, numberOfProducts, displayLimit = MOST_RELEVANT_DISPLAY_LIMIT) => {
81
95
  const totalProducts = numberOfProducts ?? products.length;
82
96
  const areProductsMoreThanDisplayLimit = totalProducts > displayLimit;
@@ -95,4 +109,5 @@ exports.getCleanOrders = getCleanOrders;
95
109
  exports.getCleanProducts = getCleanProducts;
96
110
  exports.getCleanReviews = getCleanReviews;
97
111
  exports.getGroupableMessages = getGroupableMessages;
98
- exports.getProductCarouselDisplayInfo = getProductCarouselDisplayInfo;
112
+ exports.getProductCarouselDisplayInfo = getProductCarouselDisplayInfo;
113
+ exports.getSearchQueryFromMessageBlock = getSearchQueryFromMessageBlock;
@@ -76,6 +76,20 @@ const getCleanOrders = (messages) => {
76
76
  }).filter((o) => o !== null);
77
77
  };
78
78
  const MOST_RELEVANT_DISPLAY_LIMIT = 8;
79
+ /**
80
+ * Extracts the search query from a message block (or previous blocks) that led to product results.
81
+ * Looks for QueryTyped (metadata.content) or SuggestionClicked (metadata.suggestionContent).
82
+ */
83
+ const getSearchQueryFromMessageBlock = (messages, productBlockIndex) => {
84
+ for (let i = productBlockIndex; i >= 0; i -= 1) {
85
+ const block = messages[i];
86
+ const queryTyped = block.find((msg) => msg.type === MessageType.QueryTyped);
87
+ if (queryTyped && "content" in queryTyped.metadata) return queryTyped.metadata.content ?? "";
88
+ const suggestionClicked = block.find((msg) => msg.type === MessageType.SuggestionClicked);
89
+ if (suggestionClicked && "suggestionContent" in suggestionClicked.metadata) return suggestionClicked.metadata.suggestionContent ?? "";
90
+ }
91
+ return "";
92
+ };
79
93
  const getProductCarouselDisplayInfo = (products, numberOfProducts, displayLimit = MOST_RELEVANT_DISPLAY_LIMIT) => {
80
94
  const totalProducts = numberOfProducts ?? products.length;
81
95
  const areProductsMoreThanDisplayLimit = totalProducts > displayLimit;
@@ -87,4 +101,4 @@ const getProductCarouselDisplayInfo = (products, numberOfProducts, displayLimit
87
101
  };
88
102
 
89
103
  //#endregion
90
- export { MOST_RELEVANT_DISPLAY_LIMIT, checkIfHideAgentName, getCleanDocuments, getCleanOrders, getCleanProducts, getCleanReviews, getGroupableMessages, getProductCarouselDisplayInfo };
104
+ export { MOST_RELEVANT_DISPLAY_LIMIT, checkIfHideAgentName, getCleanDocuments, getCleanOrders, getCleanProducts, getCleanReviews, getGroupableMessages, getProductCarouselDisplayInfo, getSearchQueryFromMessageBlock };
@@ -1,7 +1,7 @@
1
1
  const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
2
  const require_theme = require('../packages/components-v3/tokens/theme/theme.cjs');
3
- const require_resolveTheme = require('../utils/resolveTheme.cjs');
4
3
  require('../Tokens/index.cjs');
4
+ const require_resolveTheme = require('../utils/resolveTheme.cjs');
5
5
  const require_usePromptCarouselAnalytics = require('../PromptCarousel/hooks/usePromptCarouselAnalytics.cjs');
6
6
  const require_PromptButton_types_index = require('../PromptButton/types/index.cjs');
7
7
  require('../PromptButton/index.cjs');
@@ -13,9 +13,9 @@ require('../ChatFooter/index.cjs');
13
13
  const require_Disclaimer = require('../Disclaimer/Disclaimer.cjs');
14
14
  require('../Disclaimer/index.cjs');
15
15
  const require_WelcomeMessage = require('../WelcomeMessage/WelcomeMessage.cjs');
16
- const require_index = require('../FloatingChat/components/index.cjs');
17
16
  const require_useChatSuggestions = require('../FloatingChat/hooks/useChatSuggestions.cjs');
18
17
  const require_useScrollToBottom = require('../FloatingChat/hooks/useScrollToBottom.cjs');
18
+ const require_index = require('../FloatingChat/components/index.cjs');
19
19
  require('../WelcomeMessage/index.cjs');
20
20
  const require_useIsMobile = require('./hooks/useIsMobile.cjs');
21
21
  const require_useGetFooterStyles = require('./hooks/useGetFooterStyles.cjs');
@@ -1,5 +1,5 @@
1
1
  import { Theme } from "../tokens/theme/theme.cjs";
2
- import * as react_jsx_runtime15 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime23 from "react/jsx-runtime";
3
3
  import { FloatingChatConfig, LookAndFeelConfig } from "@envive-ai/react-hooks/contexts/typesV3";
4
4
  import { HardcopyResponse } from "@envive-ai/react-hooks/contexts/hardcopyContext";
5
5
 
@@ -19,6 +19,6 @@ declare const FullPageSalesAgent: ({
19
19
  hardcopyContent,
20
20
  headerContainer,
21
21
  autoHeight
22
- }: FullPageSalesAgentProps) => react_jsx_runtime15.JSX.Element;
22
+ }: FullPageSalesAgentProps) => react_jsx_runtime23.JSX.Element;
23
23
  //#endregion
24
24
  export { FullPageSalesAgent };
@@ -1,5 +1,5 @@
1
1
  import { Theme } from "../packages/components-v3/tokens/theme/theme.js";
2
- import * as react_jsx_runtime21 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime23 from "react/jsx-runtime";
3
3
  import { FloatingChatConfig, LookAndFeelConfig } from "@envive-ai/react-hooks/contexts/typesV3";
4
4
  import { HardcopyResponse } from "@envive-ai/react-hooks/contexts/hardcopyContext";
5
5
 
@@ -19,6 +19,6 @@ declare const FullPageSalesAgent: ({
19
19
  hardcopyContent,
20
20
  headerContainer,
21
21
  autoHeight
22
- }: FullPageSalesAgentProps) => react_jsx_runtime21.JSX.Element;
22
+ }: FullPageSalesAgentProps) => react_jsx_runtime23.JSX.Element;
23
23
  //#endregion
24
24
  export { FullPageSalesAgent };
@@ -1,6 +1,6 @@
1
1
  import { Theme } from "../packages/components-v3/tokens/theme/theme.js";
2
- import { resolveTheme } from "../utils/resolveTheme.js";
3
2
  import "../Tokens/index.js";
3
+ import { resolveTheme } from "../utils/resolveTheme.js";
4
4
  import { usePromptCarouselAnalytics } from "../PromptCarousel/hooks/usePromptCarouselAnalytics.js";
5
5
  import { PromptButtonVariant } from "../PromptButton/types/index.js";
6
6
  import "../PromptButton/index.js";
@@ -12,9 +12,9 @@ import "../ChatFooter/index.js";
12
12
  import { Disclaimer } from "../Disclaimer/Disclaimer.js";
13
13
  import "../Disclaimer/index.js";
14
14
  import { WelcomeMessage } from "../WelcomeMessage/WelcomeMessage.js";
15
- import { FloatingChatComponents } from "../FloatingChat/components/index.js";
16
15
  import { useChatSuggestions } from "../FloatingChat/hooks/useChatSuggestions.js";
17
16
  import { useScrollToBottom } from "../FloatingChat/hooks/useScrollToBottom.js";
17
+ import { FloatingChatComponents } from "../FloatingChat/components/index.js";
18
18
  import "../WelcomeMessage/index.js";
19
19
  import { useIsMobile } from "./hooks/useIsMobile.js";
20
20
  import { useGetFooterStyles } from "./hooks/useGetFooterStyles.js";
@@ -1,5 +1,5 @@
1
1
  import { ImageProps } from "./types/index.cjs";
2
- import * as react_jsx_runtime25 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime24 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/Image/Image.d.ts
5
5
 
@@ -25,6 +25,6 @@ declare const Image: ({
25
25
  role,
26
26
  "aria-hidden": ariaHidden,
27
27
  ...rest
28
- }: ImageProps) => react_jsx_runtime25.JSX.Element;
28
+ }: ImageProps) => react_jsx_runtime24.JSX.Element;
29
29
  //#endregion
30
30
  export { Image };
@@ -1,5 +1,5 @@
1
1
  import { ImageProps } from "./types/index.js";
2
- import * as react_jsx_runtime25 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime19 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/Image/Image.d.ts
5
5
 
@@ -25,6 +25,6 @@ declare const Image: ({
25
25
  role,
26
26
  "aria-hidden": ariaHidden,
27
27
  ...rest
28
- }: ImageProps) => react_jsx_runtime25.JSX.Element;
28
+ }: ImageProps) => react_jsx_runtime19.JSX.Element;
29
29
  //#endregion
30
30
  export { Image };
@@ -1,5 +1,5 @@
1
1
  import { ImageGalleryProps } from "./types/types.cjs";
2
- import * as react_jsx_runtime23 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime10 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/ImageGallery/ImageGallery.d.ts
5
5
 
@@ -40,6 +40,6 @@ declare const ImageGallery: ({
40
40
  "aria-describedby": ariaDescribedBy,
41
41
  role,
42
42
  "aria-hidden": ariaHidden
43
- }: ImageGalleryProps) => react_jsx_runtime23.JSX.Element;
43
+ }: ImageGalleryProps) => react_jsx_runtime10.JSX.Element;
44
44
  //#endregion
45
45
  export { ImageGallery };
@@ -1,5 +1,5 @@
1
1
  import { ImageGalleryProps } from "./types/types.js";
2
- import * as react_jsx_runtime11 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime20 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/ImageGallery/ImageGallery.d.ts
5
5
 
@@ -40,6 +40,6 @@ declare const ImageGallery: ({
40
40
  "aria-describedby": ariaDescribedBy,
41
41
  role,
42
42
  "aria-hidden": ariaHidden
43
- }: ImageGalleryProps) => react_jsx_runtime11.JSX.Element;
43
+ }: ImageGalleryProps) => react_jsx_runtime20.JSX.Element;
44
44
  //#endregion
45
45
  export { ImageGallery };
@@ -1,7 +1,7 @@
1
1
  const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
2
  const require_theme = require('../../packages/components-v3/tokens/theme/theme.cjs');
3
- const require_useResponsiveValue = require('../../utils/useResponsiveValue.cjs');
4
3
  const require_Container = require('../../Container/Container.cjs');
4
+ const require_useResponsiveValue = require('../../utils/useResponsiveValue.cjs');
5
5
  const require_useCheckIsMobile = require('../../utils/useCheckIsMobile.cjs');
6
6
  const require_types = require('../types/types.cjs');
7
7
  const require_useGetContainerProperties = require('../hooks/useGetContainerProperties.cjs');
@@ -1,6 +1,6 @@
1
1
  import { Theme } from "../../packages/components-v3/tokens/theme/theme.js";
2
- import { useResponsiveValue } from "../../utils/useResponsiveValue.js";
3
2
  import { Container } from "../../Container/Container.js";
3
+ import { useResponsiveValue } from "../../utils/useResponsiveValue.js";
4
4
  import { useCheckIsMobile } from "../../utils/useCheckIsMobile.js";
5
5
  import { ImageGalleryLayout } from "../types/types.js";
6
6
  import { useGetContainerProperties } from "../hooks/useGetContainerProperties.js";
@@ -1,5 +1,5 @@
1
1
  import { MarkdownProcessorProps } from "./types/types.cjs";
2
- import * as react_jsx_runtime19 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime11 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/MarkdownProcessor/MarkdownProcessor.d.ts
5
5
  declare const MarkdownProcessor: ({
@@ -8,6 +8,6 @@ declare const MarkdownProcessor: ({
8
8
  textColor,
9
9
  textVariant,
10
10
  onLinkClick
11
- }: MarkdownProcessorProps) => react_jsx_runtime19.JSX.Element;
11
+ }: MarkdownProcessorProps) => react_jsx_runtime11.JSX.Element;
12
12
  //#endregion
13
13
  export { MarkdownProcessor };
@@ -1,5 +1,5 @@
1
1
  import { MarkdownProcessorProps } from "./types/types.js";
2
- import * as react_jsx_runtime14 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime22 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/MarkdownProcessor/MarkdownProcessor.d.ts
5
5
  declare const MarkdownProcessor: ({
@@ -8,6 +8,6 @@ declare const MarkdownProcessor: ({
8
8
  textColor,
9
9
  textVariant,
10
10
  onLinkClick
11
- }: MarkdownProcessorProps) => react_jsx_runtime14.JSX.Element;
11
+ }: MarkdownProcessorProps) => react_jsx_runtime22.JSX.Element;
12
12
  //#endregion
13
13
  export { MarkdownProcessor };
@@ -1,8 +1,8 @@
1
1
  const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ const require_CustomIcon = require('../../utils/CustomIcon.cjs');
2
3
  const require_index = require('../../Typography/types/index.cjs');
3
4
  const require_Typography = require('../../Typography/Typography.cjs');
4
5
  require('../../Typography/index.cjs');
5
- const require_CustomIcon = require('../../utils/CustomIcon.cjs');
6
6
  const require_useGetLinkButtonIconProperties = require('../hooks/useGetLinkButtonIconProperties.cjs');
7
7
  const require_useGetLinkButtonProperties = require('../hooks/useGetLinkButtonProperties.cjs');
8
8
  const require_openUrlInNewTab = require('../utils/openUrlInNewTab.cjs');
@@ -1,7 +1,7 @@
1
+ import { CustomIcon } from "../../utils/CustomIcon.js";
1
2
  import { TypographyColor, TypographyVariant } from "../../Typography/types/index.js";
2
3
  import { Typography } from "../../Typography/Typography.js";
3
4
  import "../../Typography/index.js";
4
- import { CustomIcon } from "../../utils/CustomIcon.js";
5
5
  import { useGetLinkButtonIconProperties } from "../hooks/useGetLinkButtonIconProperties.js";
6
6
  import { useGetLinkButtonProperties } from "../hooks/useGetLinkButtonProperties.js";
7
7
  import { openUrlInNewTab } from "../utils/openUrlInNewTab.js";
@@ -1,8 +1,8 @@
1
1
  const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
2
  const require_theme = require('../packages/components-v3/tokens/theme/theme.cjs');
3
+ const require_resolveTheme = require('../utils/resolveTheme.cjs');
3
4
  const require_Stack = require('../Stack/Stack.cjs');
4
5
  require('../Stack/index.cjs');
5
- const require_resolveTheme = require('../utils/resolveTheme.cjs');
6
6
  const require_useGetImageBorderRadiusProperties = require('./hooks/useGetImageBorderRadiusProperties.cjs');
7
7
  const require_index = require('./components/index.cjs');
8
8
  const require_useGetContainerProperties = require('./hooks/useGetContainerProperties.cjs');
@@ -1,7 +1,7 @@
1
1
  import { Theme } from "../packages/components-v3/tokens/theme/theme.js";
2
+ import { resolveTheme } from "../utils/resolveTheme.js";
2
3
  import { Stack } from "../Stack/Stack.js";
3
4
  import "../Stack/index.js";
4
- import { resolveTheme } from "../utils/resolveTheme.js";
5
5
  import { useGetImageBorderRadiusProperties } from "./hooks/useGetImageBorderRadiusProperties.js";
6
6
  import { OrderLookupCardComponents } from "./components/index.js";
7
7
  import { useGetContainerProperties } from "./hooks/useGetContainerProperties.js";
@@ -1,8 +1,8 @@
1
1
  const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
2
  const require_theme = require('../packages/components-v3/tokens/theme/theme.cjs');
3
- const require_index = require('../Typography/types/index.cjs');
4
- const require_resolveTheme = require('../utils/resolveTheme.cjs');
5
3
  require('../Tokens/index.cjs');
4
+ const require_resolveTheme = require('../utils/resolveTheme.cjs');
5
+ const require_index = require('../Typography/types/index.cjs');
6
6
  const require_WidgetTextField = require('../WidgetTextField/WidgetTextField.cjs');
7
7
  require('../WidgetTextField/index.cjs');
8
8
  const require_index$1 = require('./components/index.cjs');
@@ -1,5 +1,5 @@
1
1
  import { ProductCardProps } from "./types/index.cjs";
2
- import * as react_jsx_runtime17 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime12 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/ProductCard/ProductCard.d.ts
5
5
  declare const ProductCard: ({
@@ -24,6 +24,6 @@ declare const ProductCard: ({
24
24
  onTouchStart,
25
25
  onTouchEnd,
26
26
  onInputClick
27
- }: ProductCardProps) => react_jsx_runtime17.JSX.Element;
27
+ }: ProductCardProps) => react_jsx_runtime12.JSX.Element;
28
28
  //#endregion
29
29
  export { ProductCard };
@@ -1,5 +1,5 @@
1
1
  import { ProductCardProps } from "./types/index.js";
2
- import * as react_jsx_runtime4 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime6 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/ProductCard/ProductCard.d.ts
5
5
  declare const ProductCard: ({
@@ -24,6 +24,6 @@ declare const ProductCard: ({
24
24
  onTouchStart,
25
25
  onTouchEnd,
26
26
  onInputClick
27
- }: ProductCardProps) => react_jsx_runtime4.JSX.Element;
27
+ }: ProductCardProps) => react_jsx_runtime6.JSX.Element;
28
28
  //#endregion
29
29
  export { ProductCard };
@@ -1,7 +1,7 @@
1
1
  import { Theme } from "../packages/components-v3/tokens/theme/theme.js";
2
- import { TypographyColor } from "../Typography/types/index.js";
3
- import { resolveTheme } from "../utils/resolveTheme.js";
4
2
  import "../Tokens/index.js";
3
+ import { resolveTheme } from "../utils/resolveTheme.js";
4
+ import { TypographyColor } from "../Typography/types/index.js";
5
5
  import { WidgetTextField } from "../WidgetTextField/WidgetTextField.js";
6
6
  import "../WidgetTextField/index.js";
7
7
  import { ProductCardWidgetComponents } from "./components/index.js";
@@ -1,5 +1,5 @@
1
1
  import { PromptButtonProps } from "./types/index.cjs";
2
- import * as react_jsx_runtime22 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime6 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/PromptButton/PromptButton.d.ts
5
5
  declare const PromptButton: ({
@@ -22,6 +22,6 @@ declare const PromptButton: ({
22
22
  onTouchEnd,
23
23
  ariaLabel,
24
24
  ariaDescribedBy
25
- }: PromptButtonProps) => react_jsx_runtime22.JSX.Element;
25
+ }: PromptButtonProps) => react_jsx_runtime6.JSX.Element;
26
26
  //#endregion
27
27
  export { PromptButton };
@@ -1,5 +1,5 @@
1
1
  import { PromptButtonProps } from "./types/index.js";
2
- import * as react_jsx_runtime22 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/PromptButton/PromptButton.d.ts
5
5
  declare const PromptButton: ({
@@ -22,6 +22,6 @@ declare const PromptButton: ({
22
22
  onTouchEnd,
23
23
  ariaLabel,
24
24
  ariaDescribedBy
25
- }: PromptButtonProps) => react_jsx_runtime22.JSX.Element;
25
+ }: PromptButtonProps) => react_jsx_runtime0.JSX.Element;
26
26
  //#endregion
27
27
  export { PromptButton };
@@ -1,5 +1,5 @@
1
1
  import { PromptButtonCarouselWithImageProps } from "./types/types.cjs";
2
- import * as react_jsx_runtime26 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime9 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/PromptButtonCarouselWithImage/PromptButtonCarouselWithImage.d.ts
5
5
  declare const PromptButtonCarouselWithImage: ({
@@ -24,6 +24,6 @@ declare const PromptButtonCarouselWithImage: ({
24
24
  handlePromptButtonTouchEnd,
25
25
  textFieldPlaceholder,
26
26
  handleTextFieldClick
27
- }: PromptButtonCarouselWithImageProps) => react_jsx_runtime26.JSX.Element;
27
+ }: PromptButtonCarouselWithImageProps) => react_jsx_runtime9.JSX.Element;
28
28
  //#endregion
29
29
  export { PromptButtonCarouselWithImage };
@@ -1,5 +1,5 @@
1
1
  import { PromptButtonCarouselWithImageProps } from "./types/types.js";
2
- import * as react_jsx_runtime9 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime21 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/PromptButtonCarouselWithImage/PromptButtonCarouselWithImage.d.ts
5
5
  declare const PromptButtonCarouselWithImage: ({
@@ -24,6 +24,6 @@ declare const PromptButtonCarouselWithImage: ({
24
24
  handlePromptButtonTouchEnd,
25
25
  textFieldPlaceholder,
26
26
  handleTextFieldClick
27
- }: PromptButtonCarouselWithImageProps) => react_jsx_runtime9.JSX.Element;
27
+ }: PromptButtonCarouselWithImageProps) => react_jsx_runtime21.JSX.Element;
28
28
  //#endregion
29
29
  export { PromptButtonCarouselWithImage };
@@ -1,7 +1,7 @@
1
1
  const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ const require_resolveTheme = require('../../utils/resolveTheme.cjs');
2
3
  const require_Stack = require('../../Stack/Stack.cjs');
3
4
  require('../../Stack/index.cjs');
4
- const require_resolveTheme = require('../../utils/resolveTheme.cjs');
5
5
  const require_PromptButton = require('../../PromptButton/PromptButton.cjs');
6
6
  require('../../PromptButton/index.cjs');
7
7
  const require_useCheckIsMobile = require('../../utils/useCheckIsMobile.cjs');
@@ -1,6 +1,6 @@
1
+ import { resolveTheme } from "../../utils/resolveTheme.js";
1
2
  import { Stack } from "../../Stack/Stack.js";
2
3
  import "../../Stack/index.js";
3
- import { resolveTheme } from "../../utils/resolveTheme.js";
4
4
  import { PromptButton } from "../../PromptButton/PromptButton.js";
5
5
  import "../../PromptButton/index.js";
6
6
  import { useCheckIsMobile } from "../../utils/useCheckIsMobile.js";
@@ -1,10 +1,10 @@
1
1
  const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
2
  const require_theme = require('../packages/components-v3/tokens/theme/theme.cjs');
3
- const require_Stack = require('../Stack/Stack.cjs');
4
- require('../Stack/index.cjs');
3
+ const require_resolveTheme = require('../utils/resolveTheme.cjs');
5
4
  const require_Container = require('../Container/Container.cjs');
6
5
  require('../Container/index.cjs');
7
- const require_resolveTheme = require('../utils/resolveTheme.cjs');
6
+ const require_Stack = require('../Stack/Stack.cjs');
7
+ require('../Stack/index.cjs');
8
8
  const require_PromptButton_types_index = require('../PromptButton/types/index.cjs');
9
9
  const require_PromptButton = require('../PromptButton/PromptButton.cjs');
10
10
  require('../PromptButton/index.cjs');