@envive-ai/react-toolkit-v3 0.3.6 → 0.3.8

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 (538) hide show
  1. package/dist/AnimatedText/AnimatedText.cjs +19 -4
  2. package/dist/AnimatedText/AnimatedText.d.cts +3 -3
  3. package/dist/AnimatedText/AnimatedText.d.ts +3 -3
  4. package/dist/AnimatedText/AnimatedText.js +20 -5
  5. package/dist/AnimatedText/types/types.d.cts +0 -4
  6. package/dist/AnimatedText/types/types.d.ts +0 -4
  7. package/dist/CSSVariablesEditor/CssVariablesEditorComponent.d.cts +2 -2
  8. package/dist/CSSVariablesEditor/CssVariablesEditorComponent.d.ts +2 -2
  9. package/dist/CSSVariablesEditor/hooks/useGetCssVariablesOptions.cjs +3 -3
  10. package/dist/CSSVariablesEditor/hooks/useGetCssVariablesOptions.js +3 -3
  11. package/dist/CSSVariablesEditor/hooks/useGetCurrentMerchantColors.cjs +1 -1
  12. package/dist/CSSVariablesEditor/hooks/useGetCurrentMerchantColors.js +1 -1
  13. package/dist/CSSVariablesEditor/hooks/useGetDefaultCssVariables.cjs +10 -10
  14. package/dist/CSSVariablesEditor/hooks/useGetDefaultCssVariables.js +10 -10
  15. package/dist/CSSVariablesEditor/hooks/useHandleUpdateCssVars.cjs +9 -9
  16. package/dist/CSSVariablesEditor/hooks/useHandleUpdateCssVars.js +9 -9
  17. package/dist/CSSVariablesEditor/utils/functions.cjs +2 -2
  18. package/dist/CSSVariablesEditor/utils/functions.js +2 -2
  19. package/dist/Carousel/Carousel.cjs +2 -2
  20. package/dist/Carousel/Carousel.d.cts +2 -2
  21. package/dist/Carousel/Carousel.d.ts +2 -2
  22. package/dist/Carousel/Carousel.js +2 -2
  23. package/dist/Carousel/components/Container.cjs +2 -2
  24. package/dist/Carousel/components/Container.js +2 -2
  25. package/dist/Carousel/hooks/useGetBadgeProperties.cjs +1 -1
  26. package/dist/Carousel/hooks/useGetBadgeProperties.js +1 -1
  27. package/dist/Carousel/types/types.d.ts +1 -1
  28. package/dist/ChatFooter/ChatFooter.cjs +2 -2
  29. package/dist/ChatFooter/ChatFooter.d.cts +2 -2
  30. package/dist/ChatFooter/ChatFooter.js +2 -2
  31. package/dist/ChatFooter/components/Layout.cjs +2 -2
  32. package/dist/ChatFooter/components/Layout.d.ts +1 -1
  33. package/dist/ChatFooter/components/Layout.js +2 -2
  34. package/dist/ChatFooter/components/PromptSuggestions.d.ts +1 -1
  35. package/dist/ChatFooter/components/index.d.cts +5 -5
  36. package/dist/ChatFooter/components/index.d.ts +5 -5
  37. package/dist/ChatFooter/hooks/useGetChatScrollProperties.cjs +1 -1
  38. package/dist/ChatFooter/hooks/useGetChatScrollProperties.js +1 -1
  39. package/dist/ChatFooter/hooks/useGetContainerProperties.cjs +10 -9
  40. package/dist/ChatFooter/hooks/useGetContainerProperties.js +10 -9
  41. package/dist/ChatFooter/types/types.d.ts +1 -1
  42. package/dist/ChatHeader/ChatHeader.cjs +4 -3
  43. package/dist/ChatHeader/ChatHeader.d.cts +3 -2
  44. package/dist/ChatHeader/ChatHeader.d.ts +3 -2
  45. package/dist/ChatHeader/ChatHeader.js +4 -3
  46. package/dist/ChatHeader/components/CloseButton.cjs +1 -1
  47. package/dist/ChatHeader/components/CloseButton.js +1 -1
  48. package/dist/ChatHeader/components/Handle.cjs +38 -4
  49. package/dist/ChatHeader/components/Handle.js +38 -4
  50. package/dist/ChatHeader/components/Toggle.cjs +4 -4
  51. package/dist/ChatHeader/components/Toggle.js +4 -4
  52. package/dist/ChatHeader/hooks/useGetCloseButtonProperties.cjs +1 -1
  53. package/dist/ChatHeader/hooks/useGetCloseButtonProperties.js +1 -1
  54. package/dist/ChatHeader/hooks/useGetHandleProperties.cjs +17 -17
  55. package/dist/ChatHeader/hooks/useGetHandleProperties.js +17 -17
  56. package/dist/ChatHeader/hooks/useGetLayoutProperties.cjs +8 -8
  57. package/dist/ChatHeader/hooks/useGetLayoutProperties.js +8 -8
  58. package/dist/ChatHeader/hooks/useGetToggleOptionProperties.cjs +17 -17
  59. package/dist/ChatHeader/hooks/useGetToggleOptionProperties.js +17 -17
  60. package/dist/ChatHeader/hooks/useGetToggleProperties.cjs +3 -3
  61. package/dist/ChatHeader/hooks/useGetToggleProperties.js +3 -3
  62. package/dist/ChatHeader/hooks/useToggleLogoSelector.cjs +1 -1
  63. package/dist/ChatHeader/hooks/useToggleLogoSelector.js +1 -1
  64. package/dist/ChatHeader/types/index.d.cts +2 -0
  65. package/dist/ChatHeader/types/index.d.ts +4 -2
  66. package/dist/ChatPreview/ChatPreview.cjs +2 -2
  67. package/dist/ChatPreview/ChatPreview.d.ts +2 -2
  68. package/dist/ChatPreview/ChatPreview.js +2 -2
  69. package/dist/ChatPreview/components/Message.cjs +4 -3
  70. package/dist/ChatPreview/components/Message.js +4 -3
  71. package/dist/ChatPreview/types/types.d.ts +1 -1
  72. package/dist/ChatPreviewComparison/ChatPreviewComparison.cjs +2 -2
  73. package/dist/ChatPreviewComparison/ChatPreviewComparison.d.cts +2 -2
  74. package/dist/ChatPreviewComparison/ChatPreviewComparison.d.ts +2 -2
  75. package/dist/ChatPreviewComparison/ChatPreviewComparison.js +2 -2
  76. package/dist/ChatPreviewComparison/components/Headline.cjs +3 -3
  77. package/dist/ChatPreviewComparison/components/Headline.js +3 -3
  78. package/dist/ChatPreviewComparison/components/Layout.cjs +7 -7
  79. package/dist/ChatPreviewComparison/components/Layout.js +7 -7
  80. package/dist/ChatPreviewComparison/components/Message.cjs +7 -6
  81. package/dist/ChatPreviewComparison/components/Message.js +7 -6
  82. package/dist/ChatPreviewComparison/types/types.d.ts +1 -1
  83. package/dist/ChatPreviewLoading/ChatPreviewLoading.d.cts +2 -2
  84. package/dist/ChatPreviewLoading/ChatPreviewLoading.d.ts +2 -2
  85. package/dist/Container/Container.d.cts +174 -174
  86. package/dist/Container/Container.d.ts +174 -174
  87. package/dist/DesignTokens/DesignTokensComponent.d.cts +2 -2
  88. package/dist/DesignTokens/DesignTokensComponent.d.ts +2 -2
  89. package/dist/DesignTokens/components/Typography.cjs +1 -1
  90. package/dist/DesignTokens/components/Typography.js +1 -1
  91. package/dist/Disclaimer/Disclaimer.cjs +23 -0
  92. package/dist/Disclaimer/Disclaimer.d.cts +19 -0
  93. package/dist/Disclaimer/Disclaimer.d.ts +19 -0
  94. package/dist/Disclaimer/Disclaimer.js +22 -0
  95. package/dist/Disclaimer/components/Container.cjs +26 -0
  96. package/dist/Disclaimer/components/Container.js +24 -0
  97. package/dist/Disclaimer/components/DisclaimerContent.cjs +19 -0
  98. package/dist/Disclaimer/components/DisclaimerContent.js +18 -0
  99. package/dist/Disclaimer/components/index.cjs +11 -0
  100. package/dist/Disclaimer/components/index.js +11 -0
  101. package/dist/Disclaimer/index.cjs +3 -0
  102. package/dist/Disclaimer/index.d.cts +2 -0
  103. package/dist/Disclaimer/index.d.ts +2 -0
  104. package/dist/Disclaimer/index.js +3 -0
  105. package/dist/Disclaimer/types/types.d.cts +30 -0
  106. package/dist/Disclaimer/types/types.d.ts +30 -0
  107. package/dist/DocumentRetrievalCard/DocumentRetrievalCard.d.cts +2 -2
  108. package/dist/DocumentRetrievalCard/DocumentRetrievalCard.d.ts +2 -2
  109. package/dist/DocumentRetrievalCard/components/Layout.cjs +2 -2
  110. package/dist/DocumentRetrievalCard/components/Layout.js +2 -2
  111. package/dist/DocumentRetrievalCard/components/ViewArticleButton/components/Icon.cjs +1 -1
  112. package/dist/DocumentRetrievalCard/components/ViewArticleButton/components/Icon.js +1 -1
  113. package/dist/DocumentRetrievalCard/hooks/useGetBackgroundColorsProperties.cjs +1 -1
  114. package/dist/DocumentRetrievalCard/hooks/useGetBackgroundColorsProperties.js +1 -1
  115. package/dist/DocumentRetrievalCard/hooks/useGetBorderProperties.cjs +1 -1
  116. package/dist/DocumentRetrievalCard/hooks/useGetBorderProperties.js +1 -1
  117. package/dist/DocumentRetrievalCard/hooks/useGetBorderRadiusProperties.cjs +1 -1
  118. package/dist/DocumentRetrievalCard/hooks/useGetBorderRadiusProperties.js +1 -1
  119. package/dist/DocumentRetrievalCard/hooks/useGetIconBackgroundProperties.cjs +1 -1
  120. package/dist/DocumentRetrievalCard/hooks/useGetIconBackgroundProperties.js +1 -1
  121. package/dist/DocumentRetrievalCard/hooks/useGetIconColorProperties.cjs +1 -1
  122. package/dist/DocumentRetrievalCard/hooks/useGetIconColorProperties.js +1 -1
  123. package/dist/DocumentRetrievalCard/hooks/useGetLabelTextCaseProperties.cjs +1 -1
  124. package/dist/DocumentRetrievalCard/hooks/useGetLabelTextCaseProperties.js +1 -1
  125. package/dist/DocumentRetrievalCard/hooks/useGetLabelTypographyProperties.cjs +1 -1
  126. package/dist/DocumentRetrievalCard/hooks/useGetLabelTypographyProperties.js +1 -1
  127. package/dist/DocumentRetrievalCard/index.cjs +1 -1
  128. package/dist/DocumentRetrievalCard/index.d.ts +1 -1
  129. package/dist/DocumentRetrievalCard/index.js +1 -1
  130. package/dist/DocumentRetrievalCard/types/index.d.ts +1 -1
  131. package/dist/DocumentRetrievalCard/utils/functions.cjs +1 -1
  132. package/dist/DocumentRetrievalCard/utils/functions.js +1 -1
  133. package/dist/FloatingButton/FloatingButton.cjs +2 -1
  134. package/dist/FloatingButton/FloatingButton.d.cts +4 -3
  135. package/dist/FloatingButton/FloatingButton.d.ts +4 -3
  136. package/dist/FloatingButton/FloatingButton.js +2 -1
  137. package/dist/FloatingButton/components/Container.cjs +2 -2
  138. package/dist/FloatingButton/components/Container.js +2 -2
  139. package/dist/FloatingButton/hooks/useGetButtonProperties.cjs +2 -2
  140. package/dist/FloatingButton/hooks/useGetButtonProperties.js +2 -2
  141. package/dist/FloatingButton/hooks/useGetContainerProperties.cjs +2 -2
  142. package/dist/FloatingButton/hooks/useGetContainerProperties.js +2 -2
  143. package/dist/FloatingButton/types/types.cjs +4 -4
  144. package/dist/FloatingButton/types/types.d.cts +8 -4
  145. package/dist/FloatingButton/types/types.d.ts +9 -5
  146. package/dist/FloatingButton/types/types.js +4 -4
  147. package/dist/FloatingChat/FloatingChat.cjs +121 -44
  148. package/dist/FloatingChat/FloatingChat.d.cts +4 -2
  149. package/dist/FloatingChat/FloatingChat.d.ts +4 -2
  150. package/dist/FloatingChat/FloatingChat.js +123 -46
  151. package/dist/FloatingChat/components/AgentMessage.cjs +49 -24
  152. package/dist/FloatingChat/components/AgentMessage.js +49 -24
  153. package/dist/FloatingChat/components/ChatMessages.cjs +63 -44
  154. package/dist/FloatingChat/components/ChatMessages.js +62 -43
  155. package/dist/FloatingChat/components/DocumentRetrievalCardsCarousel.cjs +2 -1
  156. package/dist/FloatingChat/components/DocumentRetrievalCardsCarousel.js +2 -1
  157. package/dist/FloatingChat/components/Layout.cjs +20 -16
  158. package/dist/FloatingChat/components/Layout.js +20 -16
  159. package/dist/FloatingChat/components/MessageDivider.cjs +8 -2
  160. package/dist/FloatingChat/components/MessageDivider.js +8 -2
  161. package/dist/FloatingChat/components/ModalSheet.cjs +184 -0
  162. package/dist/FloatingChat/components/ModalSheet.js +182 -0
  163. package/dist/FloatingChat/components/SalesAgentProductCardsCarousel.cjs +3 -2
  164. package/dist/FloatingChat/components/SalesAgentProductCardsCarousel.js +3 -2
  165. package/dist/FloatingChat/components/index.cjs +1 -0
  166. package/dist/FloatingChat/components/index.js +1 -0
  167. package/dist/FloatingChat/hooks/useChatSuggestions.cjs +25 -0
  168. package/dist/FloatingChat/hooks/useChatSuggestions.js +24 -0
  169. package/dist/FloatingChat/hooks/useFilteredChatMessages.cjs +24 -0
  170. package/dist/FloatingChat/hooks/useFilteredChatMessages.js +23 -0
  171. package/dist/FloatingChat/hooks/usePreventScroll.cjs +117 -0
  172. package/dist/FloatingChat/hooks/usePreventScroll.js +116 -0
  173. package/dist/FloatingChat/hooks/useScrollToBottom.cjs +109 -11
  174. package/dist/FloatingChat/hooks/useScrollToBottom.js +110 -12
  175. package/dist/FloatingChat/hooks/useSnapCalculator.cjs +37 -0
  176. package/dist/FloatingChat/hooks/useSnapCalculator.js +35 -0
  177. package/dist/FloatingChat/hooks/useSnapControl.cjs +82 -0
  178. package/dist/FloatingChat/hooks/useSnapControl.js +81 -0
  179. package/dist/FloatingChat/hooks/useSnapSetup.cjs +56 -0
  180. package/dist/FloatingChat/hooks/useSnapSetup.js +55 -0
  181. package/dist/FloatingChat/types/types.d.cts +9 -5
  182. package/dist/FloatingChat/types/types.d.ts +10 -6
  183. package/dist/FloatingChat/utils/functions.cjs +1 -0
  184. package/dist/FloatingChat/utils/functions.js +1 -0
  185. package/dist/Image/Image.d.cts +2 -2
  186. package/dist/Image/Image.d.ts +2 -2
  187. package/dist/ImageGallery/ImageGallery.cjs +1 -1
  188. package/dist/ImageGallery/ImageGallery.d.cts +2 -2
  189. package/dist/ImageGallery/ImageGallery.d.ts +2 -2
  190. package/dist/ImageGallery/ImageGallery.js +1 -1
  191. package/dist/ImageGallery/components/Layout.cjs +2 -2
  192. package/dist/ImageGallery/components/Layout.js +2 -2
  193. package/dist/ImageGallery/types/types.d.ts +1 -1
  194. package/dist/ImageGallery/utils/functions.cjs +1 -1
  195. package/dist/ImageGallery/utils/functions.js +1 -1
  196. package/dist/MarkdownProcessor/MarkdownProcessor.d.cts +2 -2
  197. package/dist/MarkdownProcessor/MarkdownProcessor.d.ts +2 -2
  198. package/dist/MarkdownProcessor/components/MarkdownLink.cjs +4 -1
  199. package/dist/MarkdownProcessor/components/MarkdownLink.js +4 -1
  200. package/dist/Message/components/AgentContent.cjs +6 -2
  201. package/dist/Message/components/AgentContent.js +6 -2
  202. package/dist/Message/components/LinkButton.cjs +3 -3
  203. package/dist/Message/components/LinkButton.d.cts +5 -1
  204. package/dist/Message/components/LinkButton.d.ts +5 -1
  205. package/dist/Message/components/LinkButton.js +3 -3
  206. package/dist/Message/hooks/useGetLinkButtonProperties.cjs +1 -1
  207. package/dist/Message/hooks/useGetLinkButtonProperties.js +1 -1
  208. package/dist/OrderLookupCard/OrderLookupCard.cjs +2 -2
  209. package/dist/OrderLookupCard/OrderLookupCard.js +2 -2
  210. package/dist/OrderLookupCard/hooks/useGetContainerProperties.cjs +1 -1
  211. package/dist/OrderLookupCard/hooks/useGetContainerProperties.js +1 -1
  212. package/dist/OrderLookupCard/hooks/useGetImageBorderRadiusProperties.cjs +1 -1
  213. package/dist/OrderLookupCard/hooks/useGetImageBorderRadiusProperties.js +1 -1
  214. package/dist/OrderLookupCard/hooks/useGetStatusLabelProperties.cjs +1 -1
  215. package/dist/OrderLookupCard/hooks/useGetStatusLabelProperties.js +1 -1
  216. package/dist/OrderLookupCard/hooks/useGetTrackOrderLinkProperties.cjs +1 -1
  217. package/dist/OrderLookupCard/hooks/useGetTrackOrderLinkProperties.js +1 -1
  218. package/dist/OrderLookupCard/types/index.d.ts +1 -1
  219. package/dist/ProductCard/ProductCard.cjs +43 -0
  220. package/dist/ProductCard/ProductCard.d.cts +23 -0
  221. package/dist/ProductCard/ProductCard.d.ts +23 -0
  222. package/dist/ProductCard/ProductCard.js +42 -0
  223. package/dist/ProductCard/components/Carousel.cjs +25 -0
  224. package/dist/ProductCard/components/Carousel.js +24 -0
  225. package/dist/ProductCard/components/Header.cjs +42 -0
  226. package/dist/ProductCard/components/Header.js +41 -0
  227. package/dist/ProductCard/components/Poster.cjs +18 -0
  228. package/dist/ProductCard/components/Poster.js +17 -0
  229. package/dist/ProductCard/components/index.cjs +13 -0
  230. package/dist/ProductCard/components/index.js +13 -0
  231. package/dist/ProductCard/hooks/useGetCarouselProperties.cjs +8 -0
  232. package/dist/ProductCard/hooks/useGetCarouselProperties.js +7 -0
  233. package/dist/ProductCard/hooks/useGetHeaderProperties.cjs +11 -0
  234. package/dist/ProductCard/hooks/useGetHeaderProperties.js +10 -0
  235. package/dist/ProductCard/hooks/useGetPosterProperties.cjs +13 -0
  236. package/dist/ProductCard/hooks/useGetPosterProperties.js +12 -0
  237. package/dist/ProductCard/index.cjs +3 -0
  238. package/dist/ProductCard/index.d.cts +3 -0
  239. package/dist/ProductCard/index.d.ts +3 -0
  240. package/dist/ProductCard/index.js +3 -0
  241. package/dist/ProductCard/types/index.d.cts +74 -0
  242. package/dist/ProductCard/types/index.d.ts +74 -0
  243. package/dist/PromptButton/PromptButton.cjs +1 -1
  244. package/dist/PromptButton/PromptButton.d.cts +2 -2
  245. package/dist/PromptButton/PromptButton.d.ts +2 -2
  246. package/dist/PromptButton/PromptButton.js +1 -1
  247. package/dist/PromptButton/hooks/useGetIconColorsProperties.cjs +1 -1
  248. package/dist/PromptButton/hooks/useGetIconColorsProperties.js +1 -1
  249. package/dist/PromptButton/types/index.d.ts +1 -1
  250. package/dist/PromptButtonCarouselWithImage/PromptButtonCarouselWithImage.cjs +1 -1
  251. package/dist/PromptButtonCarouselWithImage/PromptButtonCarouselWithImage.d.cts +2 -2
  252. package/dist/PromptButtonCarouselWithImage/PromptButtonCarouselWithImage.js +1 -1
  253. package/dist/PromptButtonCarouselWithImage/types/types.d.ts +1 -1
  254. package/dist/PromptCarousel/PromptCarousel.cjs +2 -3
  255. package/dist/PromptCarousel/PromptCarousel.d.cts +2 -2
  256. package/dist/PromptCarousel/PromptCarousel.d.ts +2 -2
  257. package/dist/PromptCarousel/PromptCarousel.js +2 -3
  258. package/dist/PromptCarousel/hooks/useCarouselRefs.cjs +1 -1
  259. package/dist/PromptCarousel/hooks/useCarouselRefs.js +2 -2
  260. package/dist/PromptCarousel/types/types.d.ts +1 -1
  261. package/dist/ReviewCard/ReviewCard.cjs +1 -1
  262. package/dist/ReviewCard/ReviewCard.d.cts +2 -2
  263. package/dist/ReviewCard/ReviewCard.d.ts +2 -2
  264. package/dist/ReviewCard/ReviewCard.js +1 -1
  265. package/dist/ReviewCard/components/Container.cjs +2 -2
  266. package/dist/ReviewCard/components/Container.d.ts +1 -1
  267. package/dist/ReviewCard/components/Container.js +2 -2
  268. package/dist/ReviewCard/components/Rating.d.ts +1 -1
  269. package/dist/ReviewCard/components/ReadMoreButton.cjs +2 -2
  270. package/dist/ReviewCard/components/ReadMoreButton.d.ts +1 -1
  271. package/dist/ReviewCard/components/ReadMoreButton.js +2 -2
  272. package/dist/ReviewCard/components/index.d.cts +6 -6
  273. package/dist/ReviewCard/components/index.d.ts +5 -5
  274. package/dist/ReviewCard/hooks/useGetBackgroundColorsProperties.cjs +1 -1
  275. package/dist/ReviewCard/hooks/useGetBackgroundColorsProperties.js +1 -1
  276. package/dist/ReviewCard/hooks/useGetBorderProperties.cjs +1 -1
  277. package/dist/ReviewCard/hooks/useGetBorderProperties.js +1 -1
  278. package/dist/ReviewCard/hooks/useGetBorderRadiusProperties.cjs +1 -1
  279. package/dist/ReviewCard/hooks/useGetBorderRadiusProperties.js +1 -1
  280. package/dist/ReviewCard/hooks/useGetRatingBackgroundProperties.cjs +1 -1
  281. package/dist/ReviewCard/hooks/useGetRatingBackgroundProperties.js +1 -1
  282. package/dist/ReviewCard/hooks/useGetReadMoreTypographyProperties.cjs +1 -1
  283. package/dist/ReviewCard/hooks/useGetReadMoreTypographyProperties.js +1 -1
  284. package/dist/ReviewCard/hooks/useGetStarIconProperties.cjs +1 -1
  285. package/dist/ReviewCard/hooks/useGetStarIconProperties.js +1 -1
  286. package/dist/ReviewCard/types/types.d.ts +1 -1
  287. package/dist/SalesAgentProductCard/SalesAgentProductCard.cjs +1 -1
  288. package/dist/SalesAgentProductCard/SalesAgentProductCard.d.cts +2 -2
  289. package/dist/SalesAgentProductCard/SalesAgentProductCard.d.ts +2 -2
  290. package/dist/SalesAgentProductCard/SalesAgentProductCard.js +1 -1
  291. package/dist/SalesAgentProductCard/components/Container.cjs +3 -3
  292. package/dist/SalesAgentProductCard/components/Container.d.ts +1 -1
  293. package/dist/SalesAgentProductCard/components/Container.js +3 -3
  294. package/dist/SalesAgentProductCard/components/ProductName.cjs +1 -1
  295. package/dist/SalesAgentProductCard/components/ProductName.d.ts +1 -1
  296. package/dist/SalesAgentProductCard/components/ProductName.js +1 -1
  297. package/dist/SalesAgentProductCard/components/Rate.cjs +1 -1
  298. package/dist/SalesAgentProductCard/components/Rate.d.ts +1 -1
  299. package/dist/SalesAgentProductCard/components/Rate.js +1 -1
  300. package/dist/SalesAgentProductCard/components/index.d.cts +2 -2
  301. package/dist/SalesAgentProductCard/components/index.d.ts +7 -7
  302. package/dist/SalesAgentProductCard/hooks/useGetContainerProperties.cjs +1 -1
  303. package/dist/SalesAgentProductCard/hooks/useGetContainerProperties.js +1 -1
  304. package/dist/SalesAgentProductCard/hooks/useGetProductDescriptionProperties.cjs +1 -1
  305. package/dist/SalesAgentProductCard/hooks/useGetProductDescriptionProperties.js +1 -1
  306. package/dist/SalesAgentProductCard/hooks/useGetProductNameProperties.cjs +1 -1
  307. package/dist/SalesAgentProductCard/hooks/useGetProductNameProperties.js +1 -1
  308. package/dist/SalesAgentProductCard/hooks/useGetStarIconProperties.cjs +1 -1
  309. package/dist/SalesAgentProductCard/hooks/useGetStarIconProperties.js +1 -1
  310. package/dist/SalesAgentProductCard/types/types.d.ts +1 -1
  311. package/dist/SocialProof/SocialProof.cjs +23 -11
  312. package/dist/SocialProof/SocialProof.d.cts +2 -2
  313. package/dist/SocialProof/SocialProof.d.ts +2 -2
  314. package/dist/SocialProof/SocialProof.js +22 -10
  315. package/dist/SocialProof/components/Headline.cjs +4 -4
  316. package/dist/SocialProof/components/Headline.js +4 -4
  317. package/dist/SocialProof/components/LayoutFourHorizontal.cjs +2 -2
  318. package/dist/SocialProof/components/LayoutFourHorizontal.js +2 -2
  319. package/dist/SocialProof/components/Subheadline.cjs +2 -2
  320. package/dist/SocialProof/components/Subheadline.js +2 -2
  321. package/dist/SocialProof/components/Textfield.cjs +4 -2
  322. package/dist/SocialProof/components/Textfield.js +4 -2
  323. package/dist/SocialProof/hooks/index.cjs +1 -0
  324. package/dist/SocialProof/hooks/index.js +3 -0
  325. package/dist/SocialProof/hooks/useSocialProofCount.cjs +48 -0
  326. package/dist/SocialProof/hooks/useSocialProofCount.d.cts +15 -0
  327. package/dist/SocialProof/hooks/useSocialProofCount.d.ts +15 -0
  328. package/dist/SocialProof/hooks/useSocialProofCount.js +46 -0
  329. package/dist/SocialProof/index.cjs +6 -1
  330. package/dist/SocialProof/index.d.cts +3 -2
  331. package/dist/SocialProof/index.d.ts +3 -2
  332. package/dist/SocialProof/index.js +4 -2
  333. package/dist/SocialProof/types/types.cjs +14 -1
  334. package/dist/SocialProof/types/types.d.cts +26 -6
  335. package/dist/SocialProof/types/types.d.ts +27 -7
  336. package/dist/SocialProof/types/types.js +12 -1
  337. package/dist/SocialProof/utils/functions.cjs +1 -1
  338. package/dist/SocialProof/utils/functions.js +1 -1
  339. package/dist/Stack/Stack.d.cts +2 -2
  340. package/dist/TextField/TextField.cjs +1 -1
  341. package/dist/TextField/TextField.js +1 -1
  342. package/dist/TextField/components/Input.cjs +1 -1
  343. package/dist/TextField/components/Input.js +1 -1
  344. package/dist/TextField/hooks/useGetContainerProperties.cjs +5 -5
  345. package/dist/TextField/hooks/useGetContainerProperties.js +5 -5
  346. package/dist/TextField/types/index.d.ts +1 -1
  347. package/dist/TextField/utils/getInputClasses.cjs +1 -1
  348. package/dist/TextField/utils/getInputClasses.js +1 -1
  349. package/dist/TextField/utils/getSendIconElement.cjs +1 -1
  350. package/dist/TextField/utils/getSendIconElement.js +1 -1
  351. package/dist/TitledPromptCarousel/TitledPromptCarousel.cjs +2 -2
  352. package/dist/TitledPromptCarousel/TitledPromptCarousel.d.cts +2 -2
  353. package/dist/TitledPromptCarousel/TitledPromptCarousel.d.ts +2 -2
  354. package/dist/TitledPromptCarousel/TitledPromptCarousel.js +2 -2
  355. package/dist/TitledPromptCarousel/types/index.d.ts +1 -1
  356. package/dist/Tokens/index.cjs +13 -13
  357. package/dist/Tokens/index.d.ts +13 -13
  358. package/dist/Tokens/index.js +13 -13
  359. package/dist/TypingAnimation/TypingAnimation.cjs +2 -2
  360. package/dist/TypingAnimation/TypingAnimation.d.cts +2 -2
  361. package/dist/TypingAnimation/TypingAnimation.d.ts +2 -2
  362. package/dist/TypingAnimation/TypingAnimation.js +2 -2
  363. package/dist/TypingAnimation/hooks/useGetTypographyVariant.cjs +2 -2
  364. package/dist/TypingAnimation/hooks/useGetTypographyVariant.js +2 -2
  365. package/dist/TypingAnimation/types/index.d.ts +1 -1
  366. package/dist/Typography/Typography.d.cts +4 -4
  367. package/dist/Typography/Typography.d.ts +4 -4
  368. package/dist/WelcomeMessage/WelcomeMessage.cjs +1 -1
  369. package/dist/WelcomeMessage/WelcomeMessage.js +1 -1
  370. package/dist/WelcomeMessage/components/Container.cjs +2 -2
  371. package/dist/WelcomeMessage/components/Container.js +2 -2
  372. package/dist/WelcomeMessage/hooks/useGetContainerProperties.cjs +1 -1
  373. package/dist/WelcomeMessage/hooks/useGetContainerProperties.js +1 -1
  374. package/dist/WelcomeMessage/hooks/useGetSparkleIconProperties.cjs +3 -1
  375. package/dist/WelcomeMessage/hooks/useGetSparkleIconProperties.js +3 -1
  376. package/dist/WelcomeMessage/types/types.cjs +1 -1
  377. package/dist/WelcomeMessage/types/types.d.ts +1 -1
  378. package/dist/WelcomeMessage/types/types.js +1 -1
  379. package/dist/WidgetTextField/WidgetTextField.cjs +7 -3
  380. package/dist/WidgetTextField/WidgetTextField.d.cts +3 -2
  381. package/dist/WidgetTextField/WidgetTextField.d.ts +3 -2
  382. package/dist/WidgetTextField/WidgetTextField.js +7 -3
  383. package/dist/WidgetTextField/components/Container.cjs +9 -3
  384. package/dist/WidgetTextField/components/Container.js +9 -3
  385. package/dist/WidgetTextField/components/Icon.cjs +45 -14
  386. package/dist/WidgetTextField/components/Icon.js +43 -14
  387. package/dist/WidgetTextField/components/Skeleton.cjs +1 -1
  388. package/dist/WidgetTextField/components/Skeleton.js +1 -1
  389. package/dist/WidgetTextField/hooks/useGetContainerProperties.cjs +5 -4
  390. package/dist/WidgetTextField/hooks/useGetContainerProperties.js +5 -4
  391. package/dist/WidgetTextField/types/types.cjs +10 -0
  392. package/dist/WidgetTextField/types/types.d.cts +9 -0
  393. package/dist/WidgetTextField/types/types.d.ts +10 -1
  394. package/dist/WidgetTextField/types/types.js +9 -0
  395. package/dist/WidgetWrapper/WidgetWrapper.d.cts +2 -2
  396. package/dist/WidgetWrapper/WidgetWrapper.d.ts +2 -2
  397. package/dist/WidgetWrapperWithTitle/WidgetWrapperWithTitle.d.cts +2 -2
  398. package/dist/WidgetWrapperWithTitle/WidgetWrapperWithTitle.d.ts +2 -2
  399. package/dist/node_modules/jotai/esm/react.cjs +44 -0
  400. package/dist/node_modules/jotai/esm/react.js +42 -0
  401. package/dist/node_modules/jotai/esm/vanilla/internals.cjs +523 -0
  402. package/dist/node_modules/jotai/esm/vanilla/internals.js +522 -0
  403. package/dist/node_modules/jotai/esm/vanilla.cjs +22 -0
  404. package/dist/node_modules/jotai/esm/vanilla.js +22 -0
  405. package/dist/{src → packages/components-v3/src}/models/colorsConfig.cjs +1 -3
  406. package/dist/{src → packages/components-v3/src}/models/colorsConfig.js +1 -2
  407. package/dist/packages/components-v3/tokens/utils.cjs +14 -0
  408. package/dist/packages/components-v3/tokens/utils.js +12 -0
  409. package/dist/styles.css +1 -1
  410. package/dist/utils/resolveTheme.cjs +1 -1
  411. package/dist/utils/resolveTheme.js +1 -1
  412. package/dist/utils/useCheckIsMobile.cjs +1 -1
  413. package/dist/utils/useCheckIsMobile.js +1 -1
  414. package/dist/utils/useResponsiveValue.cjs +1 -1
  415. package/dist/utils/useResponsiveValue.d.ts +1 -1
  416. package/dist/utils/useResponsiveValue.js +1 -1
  417. package/package.json +9 -1
  418. package/src/components/AnimatedText/AnimatedText.tsx +25 -6
  419. package/src/components/AnimatedText/types/types.ts +0 -4
  420. package/src/components/ChatFooter/hooks/useGetContainerProperties.ts +3 -4
  421. package/src/components/ChatHeader/ChatHeader.tsx +2 -0
  422. package/src/components/ChatHeader/components/Handle.tsx +37 -3
  423. package/src/components/ChatHeader/hooks/useGetHandleProperties.ts +16 -16
  424. package/src/components/ChatHeader/hooks/useGetLayoutProperties.ts +8 -10
  425. package/src/components/ChatHeader/hooks/useGetToggleOptionProperties.ts +16 -16
  426. package/src/components/ChatHeader/hooks/useGetToggleProperties.ts +2 -2
  427. package/src/components/ChatHeader/types/index.ts +3 -0
  428. package/src/components/ChatPreview/__tests__/ChatPreview.test.tsx +17 -8
  429. package/src/components/ChatPreview/components/Message.tsx +13 -7
  430. package/src/components/ChatPreviewComparison/__tests__/ChatPreviewComparison.test.tsx +16 -6
  431. package/src/components/ChatPreviewComparison/components/Message.tsx +13 -7
  432. package/src/components/DesignTokens/components/Typography.tsx +1 -1
  433. package/src/components/Disclaimer/Disclaimer.tsx +27 -0
  434. package/src/components/Disclaimer/components/Container.tsx +35 -0
  435. package/src/components/Disclaimer/components/DisclaimerContent.tsx +18 -0
  436. package/src/components/Disclaimer/components/index.ts +7 -0
  437. package/src/components/Disclaimer/index.ts +1 -0
  438. package/src/components/Disclaimer/types/types.ts +27 -0
  439. package/src/components/FloatingButton/FloatingButton.tsx +2 -0
  440. package/src/components/FloatingButton/components/Container.tsx +3 -0
  441. package/src/components/FloatingButton/hooks/useGetButtonProperties.ts +4 -3
  442. package/src/components/FloatingButton/hooks/useGetContainerProperties.ts +2 -1
  443. package/src/components/FloatingButton/types/types.ts +9 -4
  444. package/src/components/FloatingChat/FloatingChat.tsx +186 -64
  445. package/src/components/FloatingChat/components/AgentMessage.tsx +51 -19
  446. package/src/components/FloatingChat/components/ChatMessages.tsx +35 -2
  447. package/src/components/FloatingChat/components/DocumentRetrievalCardsCarousel.tsx +3 -0
  448. package/src/components/FloatingChat/components/Layout.tsx +28 -6
  449. package/src/components/FloatingChat/components/MessageDivider.tsx +8 -2
  450. package/src/components/FloatingChat/components/ModalSheet.tsx +288 -0
  451. package/src/components/FloatingChat/components/SalesAgentProductCardsCarousel.tsx +7 -2
  452. package/src/components/FloatingChat/components/index.ts +3 -0
  453. package/src/components/FloatingChat/hooks/useChatSuggestions.ts +49 -0
  454. package/src/components/FloatingChat/hooks/useFilteredChatMessages.ts +43 -0
  455. package/src/components/FloatingChat/hooks/usePreventScroll.ts +207 -0
  456. package/src/components/FloatingChat/hooks/useScrollToBottom.ts +153 -11
  457. package/src/components/FloatingChat/hooks/useSnapCalculator.ts +41 -0
  458. package/src/components/FloatingChat/hooks/useSnapControl.ts +131 -0
  459. package/src/components/FloatingChat/hooks/useSnapSetup.ts +103 -0
  460. package/src/components/FloatingChat/types/types.ts +9 -5
  461. package/src/components/FloatingChat/utils/functions.ts +1 -0
  462. package/src/components/MarkdownProcessor/components/MarkdownLink.tsx +2 -0
  463. package/src/components/Message/__tests__/Message.test.tsx +40 -2
  464. package/src/components/Message/components/AgentContent.tsx +10 -2
  465. package/src/components/Message/components/LinkButton.tsx +3 -2
  466. package/src/components/Message/hooks/useGetLinkButtonProperties.ts +1 -1
  467. package/src/components/ProductCard/ProductCard.tsx +54 -0
  468. package/src/components/ProductCard/__tests__/ProductCard.test.tsx +191 -0
  469. package/src/components/ProductCard/components/Carousel.tsx +26 -0
  470. package/src/components/ProductCard/components/Header.tsx +53 -0
  471. package/src/components/ProductCard/components/Poster.tsx +15 -0
  472. package/src/components/ProductCard/components/index.ts +9 -0
  473. package/src/components/ProductCard/hooks/useGetCarouselProperties.ts +7 -0
  474. package/src/components/ProductCard/hooks/useGetHeaderProperties.ts +9 -0
  475. package/src/components/ProductCard/hooks/useGetInputProperties.ts +22 -0
  476. package/src/components/ProductCard/hooks/useGetPosterProperties.ts +19 -0
  477. package/src/components/ProductCard/index.ts +2 -0
  478. package/src/components/ProductCard/types/index.ts +79 -0
  479. package/src/components/PromptCarousel/PromptCarousel.tsx +0 -1
  480. package/src/components/PromptCarousel/hooks/useCarouselRefs.ts +5 -4
  481. package/src/components/SocialProof/SocialProof.tsx +25 -12
  482. package/src/components/SocialProof/__tests__/SocialProof.test.tsx +66 -17
  483. package/src/components/SocialProof/components/Textfield.tsx +4 -0
  484. package/src/components/SocialProof/hooks/index.ts +2 -0
  485. package/src/components/SocialProof/hooks/useSocialProofCount.ts +67 -0
  486. package/src/components/SocialProof/index.ts +2 -1
  487. package/src/components/SocialProof/types/types.ts +30 -6
  488. package/src/components/TextField/components/Input.tsx +6 -1
  489. package/src/components/TextField/hooks/useGetContainerProperties.ts +4 -4
  490. package/src/components/WelcomeMessage/hooks/useGetSparkleIconProperties.ts +5 -2
  491. package/src/components/WidgetTextField/WidgetTextField.tsx +8 -2
  492. package/src/components/WidgetTextField/__tests__/WidgetTextField.test.tsx +54 -0
  493. package/src/components/WidgetTextField/components/Container.tsx +2 -2
  494. package/src/components/WidgetTextField/components/Icon.tsx +50 -7
  495. package/src/components/WidgetTextField/hooks/useGetContainerProperties.ts +5 -3
  496. package/src/components/WidgetTextField/types/types.ts +10 -0
  497. package/dist/tokens/utils.cjs +0 -6
  498. package/dist/tokens/utils.js +0 -5
  499. /package/dist/{src → packages/components-v3/src}/models/colorsConfig.d.ts +0 -0
  500. /package/dist/{tokens → packages/components-v3/tokens}/aspectRatio/aspectRatio.cjs +0 -0
  501. /package/dist/{tokens → packages/components-v3/tokens}/aspectRatio/aspectRatio.d.ts +0 -0
  502. /package/dist/{tokens → packages/components-v3/tokens}/aspectRatio/aspectRatio.js +0 -0
  503. /package/dist/{tokens → packages/components-v3/tokens}/breakpoints/breakpoints.cjs +0 -0
  504. /package/dist/{tokens → packages/components-v3/tokens}/breakpoints/breakpoints.d.ts +0 -0
  505. /package/dist/{tokens → packages/components-v3/tokens}/breakpoints/breakpoints.js +0 -0
  506. /package/dist/{tokens → packages/components-v3/tokens}/colors/colors.cjs +0 -0
  507. /package/dist/{tokens → packages/components-v3/tokens}/colors/colors.d.ts +0 -0
  508. /package/dist/{tokens → packages/components-v3/tokens}/colors/colors.js +0 -0
  509. /package/dist/{tokens → packages/components-v3/tokens}/montion/motion.cjs +0 -0
  510. /package/dist/{tokens → packages/components-v3/tokens}/montion/motion.d.ts +0 -0
  511. /package/dist/{tokens → packages/components-v3/tokens}/montion/motion.js +0 -0
  512. /package/dist/{tokens → packages/components-v3/tokens}/radius/radius.cjs +0 -0
  513. /package/dist/{tokens → packages/components-v3/tokens}/radius/radius.d.ts +0 -0
  514. /package/dist/{tokens → packages/components-v3/tokens}/radius/radius.js +0 -0
  515. /package/dist/{tokens → packages/components-v3/tokens}/spacing/spacing.cjs +0 -0
  516. /package/dist/{tokens → packages/components-v3/tokens}/spacing/spacing.d.ts +0 -0
  517. /package/dist/{tokens → packages/components-v3/tokens}/spacing/spacing.js +0 -0
  518. /package/dist/{tokens → packages/components-v3/tokens}/theme/theme.cjs +0 -0
  519. /package/dist/{tokens → packages/components-v3/tokens}/theme/theme.d.ts +0 -0
  520. /package/dist/{tokens → packages/components-v3/tokens}/theme/theme.js +0 -0
  521. /package/dist/{tokens → packages/components-v3/tokens}/typography/fontFamily.cjs +0 -0
  522. /package/dist/{tokens → packages/components-v3/tokens}/typography/fontFamily.d.ts +0 -0
  523. /package/dist/{tokens → packages/components-v3/tokens}/typography/fontFamily.js +0 -0
  524. /package/dist/{tokens → packages/components-v3/tokens}/typography/fontSize.cjs +0 -0
  525. /package/dist/{tokens → packages/components-v3/tokens}/typography/fontSize.d.ts +0 -0
  526. /package/dist/{tokens → packages/components-v3/tokens}/typography/fontSize.js +0 -0
  527. /package/dist/{tokens → packages/components-v3/tokens}/typography/fontWeight.cjs +0 -0
  528. /package/dist/{tokens → packages/components-v3/tokens}/typography/fontWeight.d.ts +0 -0
  529. /package/dist/{tokens → packages/components-v3/tokens}/typography/fontWeight.js +0 -0
  530. /package/dist/{tokens → packages/components-v3/tokens}/typography/letterSpacing.cjs +0 -0
  531. /package/dist/{tokens → packages/components-v3/tokens}/typography/letterSpacing.d.ts +0 -0
  532. /package/dist/{tokens → packages/components-v3/tokens}/typography/letterSpacing.js +0 -0
  533. /package/dist/{tokens → packages/components-v3/tokens}/typography/lineHeight.cjs +0 -0
  534. /package/dist/{tokens → packages/components-v3/tokens}/typography/lineHeight.d.ts +0 -0
  535. /package/dist/{tokens → packages/components-v3/tokens}/typography/lineHeight.js +0 -0
  536. /package/dist/{tokens → packages/components-v3/tokens}/typography/typography.cjs +0 -0
  537. /package/dist/{tokens → packages/components-v3/tokens}/typography/typography.d.ts +0 -0
  538. /package/dist/{tokens → packages/components-v3/tokens}/typography/typography.js +0 -0
@@ -1,21 +1,26 @@
1
- import { useEffect, useRef, useState } from 'react';
1
+ import { useRef, useState } from 'react';
2
2
 
3
+ import { motion } from 'framer-motion';
3
4
  import { ColorNames } from '../../models/colorsConfig';
4
5
  import { Theme } from '../../../tokens/theme/theme';
5
6
 
6
- import { FloatingChatComponents } from './components';
7
+ import { FloatingChatComponents, ModalSheet } from './components';
7
8
  import { useScrollToBottom } from './hooks/useScrollToBottom';
9
+ import { useSnapSetup } from './hooks/useSnapSetup';
10
+ import { useChatSuggestions } from './hooks/useChatSuggestions';
8
11
  import { ChatHeader } from '../ChatHeader';
9
- import { ChatHeaderOptions, ChatHeaderVariant } from '../ChatHeader/types';
12
+ import { ChatHeaderOptions, ChatHeaderVariant, HandleState } from '../ChatHeader/types';
10
13
  import { WelcomeMessage } from '../WelcomeMessage/WelcomeMessage';
11
14
  import { SparkleIconColor } from '../WelcomeMessage/types/types';
12
- import { Stack } from '../Stack';
13
15
  import { ChatFooter } from '../ChatFooter';
14
16
  import { PromptCarousel, PromptCarouselRows } from '../PromptCarousel';
15
17
  import { PromptButtonVariant } from '../PromptButton';
16
18
 
17
19
  import { resolveTheme } from '../utils/resolveTheme';
18
20
  import { FloatingChatProps } from './types/types';
21
+ import { useFilteredChatMessages } from './hooks/useFilteredChatMessages';
22
+ import { Unit } from './hooks/useSnapCalculator';
23
+ import { Disclaimer } from '../Disclaimer';
19
24
 
20
25
  export const FloatingChat = ({
21
26
  id,
@@ -25,8 +30,10 @@ export const FloatingChat = ({
25
30
  theme = Theme.GLOBAL_CUSTOM,
26
31
  salesAgentData,
27
32
  floatingChatConfig,
33
+ hardcopyContent,
28
34
  lookAndFeelConfig,
29
35
  isCXButtonSwitchEnabled,
36
+ isFloatingChatOpen,
30
37
  onClose,
31
38
  onToggleCXButton,
32
39
  }: FloatingChatProps) => {
@@ -41,14 +48,19 @@ export const FloatingChat = ({
41
48
  headerMode,
42
49
  welcomeMessageIconColor,
43
50
  showVerifiedBuyer,
44
- userQueryInputEnabled,
51
+ // Default this to true to avoid needing it in the default config
52
+ userQueryInputEnabled = true,
45
53
  showEnviveLogo,
46
54
  ignoreFirstModelResponse,
47
55
  neverShowSingleProductCards,
56
+ } = floatingChatConfig;
57
+
58
+ const {
48
59
  welcomeMessageTitle,
49
60
  welcomeMessageText,
50
61
  chatFooterTextFieldPlaceholderText,
51
- } = floatingChatConfig;
62
+ disclaimerText,
63
+ } = hardcopyContent?.values ?? {};
52
64
 
53
65
  const { agentName, chatHeaderLogoDarkSrc, chatHeaderLogoLightSrc } = lookAndFeelConfig;
54
66
 
@@ -59,26 +71,20 @@ export const FloatingChat = ({
59
71
  suggestions,
60
72
  onSuggestionClicked,
61
73
  onTypedMessageSubmitted,
74
+ onFormResponseSubmitted,
62
75
  } = salesAgentData;
63
76
 
64
- const [answerSuggestions, setAnswerSuggestions] = useState<string[]>([]);
65
- const [generalSuggestions, setGeneralSuggestions] = useState<string[]>([]);
66
-
67
- const showAnswerSuggestions =
68
- answerSuggestions.length > 0 && !isPendingResponse && !isResponseStreaming;
69
-
70
- useEffect(() => {
71
- if (suggestions.length > 0) {
72
- setAnswerSuggestions(
73
- suggestions.filter(suggestion => suggestion.isAnswer).map(suggestion => suggestion.content),
74
- );
75
- setGeneralSuggestions(
76
- suggestions
77
- .filter(suggestion => !suggestion.isAnswer)
78
- .map(suggestion => suggestion.content),
79
- );
80
- }
81
- }, [suggestions]);
77
+ const {
78
+ answerSuggestions,
79
+ generalSuggestions,
80
+ showAnswerSuggestions,
81
+ setAnswerSuggestions,
82
+ setGeneralSuggestions,
83
+ } = useChatSuggestions({
84
+ suggestions,
85
+ isPendingResponse,
86
+ isResponseStreaming,
87
+ });
82
88
 
83
89
  const handleToggleCXButton = (item: ChatHeaderOptions) => {
84
90
  if (item === ChatHeaderOptions.LIVE_SUPPORT) {
@@ -87,7 +93,24 @@ export const FloatingChat = ({
87
93
  }
88
94
  };
89
95
 
90
- const { showScrollButton, scrollToBottom } = useScrollToBottom({
96
+ const {
97
+ modalSheetControl,
98
+ maxSwipeableViewHeight,
99
+ isOpen,
100
+ isMobile,
101
+ snaps,
102
+ initialSnap,
103
+ shouldAutoExpand,
104
+ currentSnapPercentage,
105
+ handleSnapChange,
106
+ animationKey,
107
+ mobileHeaderHeight,
108
+ shouldShowHeader,
109
+ isFullView,
110
+ isPartialView,
111
+ } = useSnapSetup({ isFloatingChatOpen });
112
+
113
+ const { showScrollButton, scrollToBottom, isFloatingLayout } = useScrollToBottom({
91
114
  messagesRef: chatMessagesRef,
92
115
  autoScrollDependencies: [
93
116
  messages,
@@ -96,9 +119,20 @@ export const FloatingChat = ({
96
119
  answerSuggestions,
97
120
  generalSuggestions,
98
121
  ],
99
- scrollThreshold: 30,
122
+ scrollThreshold: 100,
123
+ useFloatingLayout: isMobile && isPartialView,
124
+ footerHeight: 160,
125
+ isOpen: isFloatingChatOpen,
100
126
  });
101
127
 
128
+ const { filteredMessages, hasFilteredMessages, handlePreviousDiscussions } =
129
+ useFilteredChatMessages({
130
+ messages,
131
+ isMobile,
132
+ currentSnapPercentage,
133
+ modalSheetControl,
134
+ });
135
+
102
136
  const header = (
103
137
  <ChatHeader
104
138
  logoDark={chatHeaderLogoDarkSrc}
@@ -116,50 +150,83 @@ export const FloatingChat = ({
116
150
  />
117
151
  );
118
152
 
119
- const footer = (
120
- <Stack
121
- direction="column"
122
- gap={4}
153
+ const mobileHeader = (
154
+ <motion.div
155
+ style={{
156
+ maxHeight: mobileHeaderHeight,
157
+ overflow: 'hidden',
158
+ }}
123
159
  >
124
- <ChatFooter
160
+ <ChatHeader
161
+ logoDark={chatHeaderLogoDarkSrc}
162
+ logoLight={chatHeaderLogoLightSrc}
125
163
  theme={finalTheme}
126
- isScrolled={false}
127
- onChange={setQuery}
128
- onSubmit={() => {
129
- onTypedMessageSubmitted({ query });
130
- setAnswerSuggestions([]);
131
- setGeneralSuggestions([]);
132
- }}
133
- textFieldPlaceholderText={chatFooterTextFieldPlaceholderText}
134
- promptSuggestions={
135
- isPendingResponse || isResponseStreaming || generalSuggestions.length === 0
136
- ? ['Loading suggestions 1...', 'Loading suggestions 2...'] // This is strings will not be shown to the user
137
- : generalSuggestions
138
- }
139
- handleButtonClick={buttonText => {
140
- const suggestion = suggestions.find(s => s.content === buttonText && !s.isAnswer);
141
- if (suggestion) {
142
- onSuggestionClicked(suggestion);
143
- }
144
-
145
- setAnswerSuggestions([]);
146
- setGeneralSuggestions([]);
147
- }}
148
- disabled={isPendingResponse || isResponseStreaming}
149
- disabledInput={!userQueryInputEnabled}
150
- isLoadingPromptSuggestions={
151
- isPendingResponse || isResponseStreaming || generalSuggestions.length === 0
152
- }
153
- hideEnviveWatermark={!showEnviveLogo}
164
+ variant={headerMode as ChatHeaderVariant}
165
+ headerBgColor={headerBackgroundColor as ColorNames}
166
+ showLogo
167
+ showCXToggle={isCXButtonSwitchEnabled}
168
+ centralizeCXToggle
169
+ selectedOption={ChatHeaderOptions.ASSISTANT}
170
+ onToggle={handleToggleCXButton}
171
+ onClose={onClose}
154
172
  />
155
- </Stack>
173
+ </motion.div>
174
+ );
175
+
176
+ const handler = (
177
+ <ChatHeader
178
+ theme={finalTheme}
179
+ variant={headerMode as ChatHeaderVariant}
180
+ headerBgColor={headerBackgroundColor as ColorNames}
181
+ showHandle
182
+ handleState={isFullView ? HandleState.OPEN : HandleState.CLOSED}
183
+ handleAnimationKey={animationKey}
184
+ showMainContent={false}
185
+ selectedOption={ChatHeaderOptions.ASSISTANT}
186
+ onToggle={handleToggleCXButton}
187
+ onClose={onClose}
188
+ />
189
+ );
190
+
191
+ const footer = (
192
+ <ChatFooter
193
+ theme={finalTheme}
194
+ isScrolled={isMobile ? isFloatingLayout : false}
195
+ onChange={setQuery}
196
+ onSubmit={() => {
197
+ onTypedMessageSubmitted({ query, userTyped: true });
198
+ setAnswerSuggestions([]);
199
+ setGeneralSuggestions([]);
200
+ }}
201
+ textFieldPlaceholderText={chatFooterTextFieldPlaceholderText as string}
202
+ promptSuggestions={
203
+ isPendingResponse || isResponseStreaming || generalSuggestions.length === 0
204
+ ? ['Loading suggestions 1...', 'Loading suggestions 2...'] // This is strings will not be shown to the user
205
+ : generalSuggestions
206
+ }
207
+ handleButtonClick={buttonText => {
208
+ const suggestion = suggestions.find(s => s.content === buttonText && !s.isAnswer);
209
+ if (suggestion) {
210
+ onSuggestionClicked(suggestion);
211
+ }
212
+
213
+ setAnswerSuggestions([]);
214
+ setGeneralSuggestions([]);
215
+ }}
216
+ disabled={isPendingResponse || isResponseStreaming}
217
+ disabledInput={!userQueryInputEnabled}
218
+ isLoadingPromptSuggestions={
219
+ isPendingResponse || isResponseStreaming || generalSuggestions.length === 0
220
+ }
221
+ hideEnviveWatermark={!showEnviveLogo}
222
+ />
156
223
  );
157
224
 
158
225
  const welcomeMessage = (
159
226
  <WelcomeMessage
160
227
  sparkleIconColor={welcomeMessageIconColor as SparkleIconColor}
161
- title={welcomeMessageTitle}
162
- text={welcomeMessageText}
228
+ title={welcomeMessageTitle as string}
229
+ text={welcomeMessageText as string}
163
230
  theme={finalTheme}
164
231
  />
165
232
  );
@@ -170,11 +237,15 @@ export const FloatingChat = ({
170
237
  ref={chatMessagesRef}
171
238
  isLoading={isPendingResponse && !isResponseStreaming}
172
239
  agentName={agentName}
173
- messages={messages}
240
+ messages={filteredMessages}
241
+ hasFilteredMessages={hasFilteredMessages}
242
+ handlePreviousDiscussions={handlePreviousDiscussions}
174
243
  isResponseStreaming={isResponseStreaming}
175
244
  ignoreFirstModelResponse={ignoreFirstModelResponse}
176
245
  neverShowSingleProductCards={neverShowSingleProductCards}
177
246
  showVerifiedBuyer={showVerifiedBuyer}
247
+ isPartialView={isPartialView}
248
+ onFormResponseSubmitted={onFormResponseSubmitted}
178
249
  />
179
250
  );
180
251
 
@@ -196,7 +267,7 @@ export const FloatingChat = ({
196
267
  />
197
268
  );
198
269
 
199
- return (
270
+ const desktopLayout = (
200
271
  <FloatingChatComponents.Layout
201
272
  id={id}
202
273
  className={className}
@@ -213,6 +284,57 @@ export const FloatingChat = ({
213
284
  <FloatingChatComponents.ScrollToBottomButton onClick={scrollToBottom} />
214
285
  ) : undefined
215
286
  }
287
+ disclaimer={
288
+ disclaimerText && typeof disclaimerText === 'string' ? (
289
+ <Disclaimer disclaimerMarkdown={disclaimerText} />
290
+ ) : undefined
291
+ }
292
+ />
293
+ );
294
+
295
+ const mobileLayout = (
296
+ <FloatingChatComponents.Layout
297
+ id={id}
298
+ className={className}
299
+ style={style}
300
+ testId={testId}
301
+ theme={finalTheme}
302
+ header={shouldShowHeader ? mobileHeader : undefined}
303
+ footer={footer}
304
+ welcomeMessage={welcomeMessage}
305
+ chatMessages={chatMessages}
306
+ answerSuggestions={showAnswerSuggestions ? answerSuggestionsComponent : undefined}
307
+ scrollToBottomButton={
308
+ showScrollButton ? (
309
+ <FloatingChatComponents.ScrollToBottomButton onClick={scrollToBottom} />
310
+ ) : undefined
311
+ }
312
+ disclaimer={
313
+ disclaimerText && typeof disclaimerText === 'string' ? (
314
+ <Disclaimer disclaimerMarkdown={disclaimerText} />
315
+ ) : undefined
316
+ }
317
+ isFloatingFooterLayout={isFloatingLayout}
216
318
  />
217
319
  );
320
+
321
+ return isMobile ? (
322
+ <ModalSheet
323
+ animationKey={animationKey}
324
+ open={isOpen}
325
+ height={maxSwipeableViewHeight}
326
+ handler={handler}
327
+ unit={Unit.PERCENT}
328
+ snaps={snaps}
329
+ initSnap={initialSnap}
330
+ onSnap={handleSnapChange}
331
+ onClose={onClose}
332
+ controlRef={modalSheetControl}
333
+ disableDrag={shouldAutoExpand}
334
+ >
335
+ {mobileLayout}
336
+ </ModalSheet>
337
+ ) : (
338
+ desktopLayout
339
+ );
218
340
  };
@@ -1,5 +1,12 @@
1
+ import { useSetAtom } from 'jotai';
1
2
  import { Form } from 'src/components/Form';
2
- import { Message, MessageType } from '@envive-ai/react-hooks/application/models';
3
+ import {
4
+ FormSubmittedAttributes,
5
+ Message,
6
+ MessageType,
7
+ } from '@envive-ai/react-hooks/application/models';
8
+ import { handleFormSubmittedAtom } from '@envive-ai/react-hooks/atoms/chat';
9
+ import type { FormSubmitValue } from 'src/components/Form/types';
3
10
  import { Message as MessageComponent, MessageVariant } from '../../Message';
4
11
  import { Theme } from '../../../../tokens/theme/theme';
5
12
  import { ReviewCardsCarousel } from './ReviewCardsCarousel';
@@ -23,6 +30,8 @@ export interface AgentMessageProps {
23
30
  isResponseStreaming?: boolean;
24
31
  neverShowSingleProductCards?: boolean;
25
32
  showVerifiedBuyer?: boolean;
33
+ isPartialView?: boolean;
34
+ onFormResponseSubmitted?: (formResponse: FormSubmittedAttributes) => void;
26
35
  }
27
36
 
28
37
  export const AgentMessage = ({
@@ -34,7 +43,10 @@ export const AgentMessage = ({
34
43
  isResponseStreaming = false,
35
44
  neverShowSingleProductCards = false,
36
45
  showVerifiedBuyer = false,
46
+ isPartialView,
47
+ onFormResponseSubmitted,
37
48
  }: AgentMessageProps) => {
49
+ const handleFormSubmittedAtomFallback = useSetAtom(handleFormSubmittedAtom);
38
50
  const finalTheme = resolveTheme(theme);
39
51
 
40
52
  const textContentMessageTypes = new Set([
@@ -86,6 +98,7 @@ export const AgentMessage = ({
86
98
  products={products}
87
99
  numberOfProducts={products.length}
88
100
  theme={finalTheme}
101
+ isPartialView={isPartialView}
89
102
  />
90
103
  );
91
104
  }
@@ -95,37 +108,56 @@ export const AgentMessage = ({
95
108
 
96
109
  return (
97
110
  <DocumentRetrievalCardsCarousel
111
+ hideNavigation={documents.length === 1}
98
112
  documents={documents}
99
113
  theme={finalTheme}
100
114
  />
101
115
  );
102
116
  }
103
117
 
104
- // TODO: Need to test this with a real message.
105
118
  if (type === MessageType.Form) {
106
119
  return messages
107
120
  .filter(msg => msg.type === MessageType.Form)
108
- .map(msg => (
109
- <Form
110
- key={msg.id}
111
- textFields={msg.metadata.fields.map(field => ({
112
- label: field.title,
113
- isRequired: field.required,
114
- type: field.format === 'email' ? 'email' : 'text',
115
- }))}
116
- submitButton={{ label: 'Submit', ariaLabel: 'Submit', isDisabled: false }}
117
- onSubmit={values => {
118
- console.log('submitted', values);
119
- // TODO: Add API call to submit the form.
120
- }}
121
- />
122
- ));
121
+ .map(msg => {
122
+ const { fields } = msg.metadata;
123
+ return (
124
+ <Form
125
+ key={msg.id}
126
+ textFields={fields.map(field => ({
127
+ label: field.title,
128
+ isRequired: field.required,
129
+ type: field.format === 'email' ? 'email' : 'text',
130
+ }))}
131
+ submitButton={{ label: 'Submit', ariaLabel: 'Submit', isDisabled: false }}
132
+ onSubmit={(values: FormSubmitValue[]) => {
133
+ const filledSchema: Record<string, unknown> = {};
134
+ fields.forEach((field, index) => {
135
+ filledSchema[field.key] = values[index]?.value ?? '';
136
+ });
137
+ const formResponseId = msg.id;
138
+ const formType =
139
+ msg.metadata.formType ?? ('order_lookup' as FormSubmittedAttributes['formType']);
140
+ const payload: FormSubmittedAttributes = {
141
+ filledSchema,
142
+ formResponseId,
143
+ formType,
144
+ };
145
+ if (onFormResponseSubmitted) {
146
+ onFormResponseSubmitted(payload);
147
+ } else {
148
+ handleFormSubmittedAtomFallback(payload);
149
+ }
150
+ }}
151
+ />
152
+ );
153
+ });
123
154
  }
124
155
 
125
- // TODO: Need to test this with a real message.
126
156
  if (type === MessageType.Order) {
127
157
  const orders = getCleanOrders(messages);
128
-
158
+ if (!orders || orders.length === 0) {
159
+ return null;
160
+ }
129
161
  return (
130
162
  <OrderLookupCardCarousel
131
163
  orders={orders}
@@ -1,4 +1,9 @@
1
- import { Message, MessageRole, MessageType } from '@envive-ai/react-hooks/application/models';
1
+ import {
2
+ FormSubmittedAttributes,
3
+ Message,
4
+ MessageRole,
5
+ MessageType,
6
+ } from '@envive-ai/react-hooks/application/models';
2
7
  import { forwardRef } from 'react';
3
8
  import classNames from 'classnames';
4
9
  import { Stack } from '../../Stack';
@@ -9,17 +14,23 @@ import { Message as MessageComponent, MessageVariant } from '../../Message';
9
14
  import { MessageDivider } from './MessageDivider';
10
15
  import { Theme } from '../../../../tokens/theme/theme';
11
16
  import { resolveTheme } from '../../utils/resolveTheme';
17
+ import { Typography, TypographyVariant } from '../../Typography';
18
+ import { TypographyColor } from '../../Typography/types';
12
19
 
13
20
  export interface ChatMessagesProps {
14
21
  theme: Theme;
15
22
  className?: string;
16
23
  agentName: string;
17
24
  messages: Message[][];
25
+ hasFilteredMessages: boolean;
26
+ handlePreviousDiscussions: () => void;
18
27
  isLoading: boolean;
19
28
  isResponseStreaming: boolean;
20
29
  ignoreFirstModelResponse?: boolean;
21
30
  neverShowSingleProductCards?: boolean;
22
31
  showVerifiedBuyer?: boolean;
32
+ isPartialView?: boolean;
33
+ onFormResponseSubmitted?: (formResponse: FormSubmittedAttributes) => void;
23
34
  }
24
35
 
25
36
  export const ChatMessages = forwardRef<HTMLDivElement, ChatMessagesProps>(
@@ -29,11 +40,15 @@ export const ChatMessages = forwardRef<HTMLDivElement, ChatMessagesProps>(
29
40
  className,
30
41
  agentName,
31
42
  messages,
43
+ hasFilteredMessages,
44
+ handlePreviousDiscussions,
32
45
  isLoading,
33
46
  isResponseStreaming,
34
47
  ignoreFirstModelResponse,
35
48
  neverShowSingleProductCards,
36
49
  showVerifiedBuyer,
50
+ isPartialView,
51
+ onFormResponseSubmitted,
37
52
  },
38
53
  ref,
39
54
  ) => {
@@ -42,9 +57,25 @@ export const ChatMessages = forwardRef<HTMLDivElement, ChatMessagesProps>(
42
57
  <Stack
43
58
  ref={ref}
44
59
  direction="column"
45
- className={classNames('envive-tw-px-4', className)}
60
+ className={classNames('envive-tw-pl-4 envive-tw-pr-4', className)}
46
61
  gap={4}
47
62
  >
63
+ {hasFilteredMessages && (
64
+ <button
65
+ type="button"
66
+ className="envive-tw-w-full envive-tw-cursor-pointer envive-tw-text-left"
67
+ onClick={handlePreviousDiscussions}
68
+ >
69
+ {/* TODO: Get hard copy */}
70
+ <Typography
71
+ color={TypographyColor.TEXT_PRIMARY}
72
+ variant={TypographyVariant.B4_MD}
73
+ className="envive-tw-underline hover:envive-tw-underline-offset-2"
74
+ >
75
+ View Previous Messages
76
+ </Typography>
77
+ </button>
78
+ )}
48
79
  {messages.map((message: Message[], index: number) => {
49
80
  if (
50
81
  ignoreFirstModelResponse &&
@@ -108,6 +139,8 @@ export const ChatMessages = forwardRef<HTMLDivElement, ChatMessagesProps>(
108
139
  isResponseStreaming={isResponseStreaming && isLastMessageTurn}
109
140
  neverShowSingleProductCards={neverShowSingleProductCards}
110
141
  showVerifiedBuyer={showVerifiedBuyer}
142
+ isPartialView={isPartialView}
143
+ onFormResponseSubmitted={onFormResponseSubmitted}
111
144
  />
112
145
  );
113
146
  }
@@ -7,16 +7,19 @@ import { Theme } from '../../../../tokens/theme/theme';
7
7
  export interface DocumentRetrievalCardsCarouselProps {
8
8
  theme: Theme;
9
9
  documents: DocumentRetrievalCardProps[];
10
+ hideNavigation?: boolean;
10
11
  }
11
12
 
12
13
  export const DocumentRetrievalCardsCarousel = ({
13
14
  documents,
14
15
  theme,
16
+ hideNavigation = false,
15
17
  }: DocumentRetrievalCardsCarouselProps) => {
16
18
  const finalTheme = resolveTheme(theme);
17
19
 
18
20
  return (
19
21
  <Carousel
22
+ hideNavigation={hideNavigation}
20
23
  elements={documents.map(document => (
21
24
  <DocumentRetrievalCard
22
25
  key={document.title}
@@ -17,6 +17,8 @@ type LayoutProps = {
17
17
  chatMessages?: React.ReactNode;
18
18
  answerSuggestions?: React.ReactNode;
19
19
  scrollToBottomButton?: React.ReactNode;
20
+ disclaimer?: React.ReactNode;
21
+ isFloatingFooterLayout?: boolean;
20
22
  };
21
23
 
22
24
  export const Layout = ({
@@ -31,6 +33,8 @@ export const Layout = ({
31
33
  chatMessages,
32
34
  answerSuggestions,
33
35
  scrollToBottomButton,
36
+ disclaimer,
37
+ isFloatingFooterLayout = false,
34
38
  }: LayoutProps) => {
35
39
  const finalTheme = resolveTheme(theme);
36
40
  const hasWelcomeMessage = isValidElement(welcomeMessage);
@@ -42,7 +46,7 @@ export const Layout = ({
42
46
  testId={testId}
43
47
  style={style}
44
48
  className={classNames(
45
- 'envive-tw-flex envive-tw-h-full envive-tw-w-[512px] envive-tw-flex-col envive-tw-bg-[#FFFFFF]',
49
+ 'envive-tw-flex envive-tw-h-full envive-tw-w-full envive-tw-max-w-[512px] envive-tw-flex-col envive-tw-bg-[#FFFFFF]',
46
50
  className,
47
51
  )}
48
52
  >
@@ -50,22 +54,24 @@ export const Layout = ({
50
54
  direction="column"
51
55
  className="envive-tw-relative envive-tw-h-full envive-tw-overflow-hidden"
52
56
  >
53
- {header && <div className="envive-tw-flex-shrink-0">{header}</div>}
57
+ {header && <div className="envive-tw-flex-shrink-0 envive-tw-leading-[0]">{header}</div>}
54
58
 
55
- <div className="envive-tw-flex-1 envive-tw-overflow-y-auto envive-tw-overflow-x-hidden">
59
+ <div className="envive-tw-flex-1 envive-tw-overflow-y-auto envive-tw-overflow-x-hidden envive-tw-transition-all envive-tw-duration-300 envive-tw-ease-in-out">
56
60
  <Stack
57
61
  className="envive-tw-h-full"
58
62
  direction="column"
59
63
  justify="between"
60
64
  >
61
65
  {welcomeMessage}
66
+ {disclaimer && <div>{disclaimer}</div>}
62
67
  <Stack
63
68
  direction="column"
64
69
  gap="0"
65
70
  className={classNames(
66
71
  (!hasWelcomeMessage || (hasWelcomeMessage && finalTheme === Theme.STANDARD)) &&
67
72
  'envive-tw-pt-4',
68
- !hasAnswerSuggestions && 'envive-tw-pb-4',
73
+ !hasAnswerSuggestions && !isFloatingFooterLayout && 'envive-tw-pb-4',
74
+ isFloatingFooterLayout && 'envive-tw-pb-[180px]',
69
75
  )}
70
76
  >
71
77
  {chatMessages}
@@ -74,10 +80,26 @@ export const Layout = ({
74
80
  </Stack>
75
81
  </div>
76
82
 
77
- {footer && <div className="envive-tw-flex-shrink-0">{footer}</div>}
83
+ {footer && (
84
+ <div
85
+ className={classNames(
86
+ 'envive-tw-w-full envive-tw-transition-all envive-tw-duration-300 envive-tw-ease-in-out',
87
+ isFloatingFooterLayout
88
+ ? 'envive-tw-absolute envive-tw-bottom-[0px] envive-tw-z-10'
89
+ : 'envive-tw-flex-shrink-0',
90
+ )}
91
+ >
92
+ {footer}
93
+ </div>
94
+ )}
78
95
 
79
96
  {scrollToBottomButton && (
80
- <div className="envive-tw-absolute envive-tw-bottom-[170px] envive-tw-right-4 envive-tw-z-10">
97
+ <div
98
+ className={classNames(
99
+ 'envive-tw-absolute envive-tw-right-4 envive-tw-z-10 envive-tw-transition-all envive-tw-duration-300 envive-tw-ease-in-out',
100
+ isFloatingFooterLayout ? 'envive-tw-bottom-[80px]' : 'envive-tw-bottom-[170px]',
101
+ )}
102
+ >
81
103
  {scrollToBottomButton}
82
104
  </div>
83
105
  )}
@@ -15,14 +15,20 @@ export const MessageDivider = ({ label }: MessageDividerProps) => {
15
15
  align="center"
16
16
  justify="center"
17
17
  >
18
- <div className={lineClassName} />
18
+ <div
19
+ className={lineClassName}
20
+ style={{ display: 'block' }}
21
+ />
19
22
  <Typography
20
23
  variant={TypographyVariant.B3_RG}
21
24
  color={TypographyColor.TEXT_SECONDARY}
22
25
  >
23
26
  {label}
24
27
  </Typography>
25
- <div className={lineClassName} />
28
+ <div
29
+ className={lineClassName}
30
+ style={{ display: 'block' }}
31
+ />
26
32
  </Stack>
27
33
  );
28
34
  };