@envive-ai/react-toolkit-v3 0.3.22 → 0.3.24

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 (366) 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/CSSVariablesEditor/hooks/useGetCssVariablesOptions.cjs +1 -1
  6. package/dist/CSSVariablesEditor/hooks/useGetCssVariablesOptions.js +1 -1
  7. package/dist/CSSVariablesEditor/hooks/useGetCurrentMerchantColors.cjs +1 -1
  8. package/dist/CSSVariablesEditor/hooks/useGetCurrentMerchantColors.js +1 -1
  9. package/dist/CSSVariablesEditor/hooks/useGetDefaultCssVariables.cjs +4 -4
  10. package/dist/CSSVariablesEditor/hooks/useGetDefaultCssVariables.js +4 -4
  11. package/dist/CSSVariablesEditor/hooks/useHandleUpdateCssVars.cjs +3 -3
  12. package/dist/CSSVariablesEditor/hooks/useHandleUpdateCssVars.js +3 -3
  13. package/dist/Carousel/Carousel.d.cts +2 -2
  14. package/dist/Carousel/components/Badge.cjs +1 -1
  15. package/dist/Carousel/components/Badge.js +1 -1
  16. package/dist/Carousel/components/Container.cjs +1 -1
  17. package/dist/Carousel/components/Container.js +1 -1
  18. package/dist/ChatFooter/ChatFooter.cjs +7 -3
  19. package/dist/ChatFooter/ChatFooter.d.cts +7 -3
  20. package/dist/ChatFooter/ChatFooter.d.ts +7 -3
  21. package/dist/ChatFooter/ChatFooter.js +7 -3
  22. package/dist/ChatFooter/components/Layout.cjs +1 -1
  23. package/dist/ChatFooter/components/Layout.js +1 -1
  24. package/dist/ChatFooter/components/index.d.cts +10 -6
  25. package/dist/ChatFooter/components/index.d.ts +10 -6
  26. package/dist/ChatFooter/types/types.d.cts +16 -0
  27. package/dist/ChatFooter/types/types.d.ts +16 -0
  28. package/dist/ChatHeader/ChatHeader.cjs +2 -1
  29. package/dist/ChatHeader/ChatHeader.d.cts +2 -2
  30. package/dist/ChatHeader/ChatHeader.d.ts +2 -2
  31. package/dist/ChatHeader/ChatHeader.js +2 -1
  32. package/dist/ChatHeader/components/Handle.cjs +2 -2
  33. package/dist/ChatHeader/components/Handle.js +2 -2
  34. package/dist/ChatHeader/hooks/useGetHandleProperties.cjs +4 -2
  35. package/dist/ChatHeader/hooks/useGetHandleProperties.js +4 -2
  36. package/dist/ChatHeader/hooks/useGetLayoutProperties.cjs +1 -1
  37. package/dist/ChatHeader/hooks/useGetLayoutProperties.js +1 -1
  38. package/dist/ChatHeader/hooks/useGetToggleOptionProperties.cjs +1 -1
  39. package/dist/ChatHeader/hooks/useGetToggleOptionProperties.js +1 -1
  40. package/dist/ChatPreview/ChatPreview.cjs +6 -3
  41. package/dist/ChatPreview/ChatPreview.d.cts +2 -2
  42. package/dist/ChatPreview/ChatPreview.d.ts +2 -2
  43. package/dist/ChatPreview/ChatPreview.js +6 -3
  44. package/dist/ChatPreview/index.d.cts +2 -2
  45. package/dist/ChatPreview/index.d.ts +2 -2
  46. package/dist/ChatPreview/types/types.d.cts +13 -1
  47. package/dist/ChatPreview/types/types.d.ts +13 -1
  48. package/dist/ChatPreviewComparison/ChatPreviewComparison.cjs +6 -3
  49. package/dist/ChatPreviewComparison/ChatPreviewComparison.d.cts +2 -2
  50. package/dist/ChatPreviewComparison/ChatPreviewComparison.d.ts +2 -2
  51. package/dist/ChatPreviewComparison/ChatPreviewComparison.js +6 -3
  52. package/dist/ChatPreviewComparison/components/Layout.cjs +2 -2
  53. package/dist/ChatPreviewComparison/components/Layout.js +2 -2
  54. package/dist/ChatPreviewComparison/index.d.cts +2 -2
  55. package/dist/ChatPreviewComparison/index.d.ts +2 -2
  56. package/dist/ChatPreviewComparison/types/types.d.cts +13 -1
  57. package/dist/ChatPreviewComparison/types/types.d.ts +13 -1
  58. package/dist/ChatPreviewLoading/ChatPreviewLoading.cjs +7 -2
  59. package/dist/ChatPreviewLoading/ChatPreviewLoading.d.cts +4 -3
  60. package/dist/ChatPreviewLoading/ChatPreviewLoading.d.ts +2 -1
  61. package/dist/ChatPreviewLoading/ChatPreviewLoading.js +7 -2
  62. package/dist/ChatPreviewLoading/types/types.d.cts +4 -0
  63. package/dist/ChatPreviewLoading/types/types.d.ts +4 -0
  64. package/dist/Container/Container.d.cts +172 -172
  65. package/dist/Container/Container.d.ts +172 -172
  66. package/dist/DesignTokens/DesignTokensComponent.d.cts +2 -2
  67. package/dist/DesignTokens/DesignTokensComponent.d.ts +2 -2
  68. package/dist/DesignTokens/components/FontFamily.cjs +1 -1
  69. package/dist/DesignTokens/components/FontFamily.js +1 -1
  70. package/dist/DesignTokens/components/FontSize.cjs +1 -1
  71. package/dist/DesignTokens/components/FontSize.js +1 -1
  72. package/dist/DesignTokens/components/FontWeight.cjs +1 -1
  73. package/dist/DesignTokens/components/FontWeight.js +1 -1
  74. package/dist/DesignTokens/components/LetterSpacing.cjs +1 -1
  75. package/dist/DesignTokens/components/LetterSpacing.js +1 -1
  76. package/dist/DesignTokens/components/LineHeight.cjs +1 -1
  77. package/dist/DesignTokens/components/LineHeight.js +1 -1
  78. package/dist/DesignTokens/components/Typography.cjs +1 -1
  79. package/dist/DesignTokens/components/Typography.js +1 -1
  80. package/dist/Disclaimer/components/Container.cjs +2 -2
  81. package/dist/Disclaimer/components/Container.js +2 -2
  82. package/dist/DocumentRetrievalCard/DocumentRetrievalCard.d.ts +2 -2
  83. package/dist/DocumentRetrievalCard/components/Image.cjs +1 -1
  84. package/dist/DocumentRetrievalCard/components/Image.js +1 -1
  85. package/dist/DocumentRetrievalCard/components/Layout.cjs +1 -1
  86. package/dist/DocumentRetrievalCard/components/Layout.js +1 -1
  87. package/dist/DocumentRetrievalCard/components/ViewArticleButton/components/Icon.cjs +1 -1
  88. package/dist/DocumentRetrievalCard/components/ViewArticleButton/components/Icon.js +1 -1
  89. package/dist/DocumentRetrievalCard/components/ViewArticleButton/components/Label.cjs +1 -1
  90. package/dist/DocumentRetrievalCard/components/ViewArticleButton/components/Label.js +1 -1
  91. package/dist/DocumentRetrievalCard/components/ViewArticleButton/components/Layout.cjs +1 -1
  92. package/dist/DocumentRetrievalCard/components/ViewArticleButton/components/Layout.js +1 -1
  93. package/dist/FloatingButton/FloatingButton.d.cts +2 -2
  94. package/dist/FloatingButton/components/Button.cjs +1 -1
  95. package/dist/FloatingButton/components/Button.js +1 -1
  96. package/dist/FloatingButton/components/Container.cjs +1 -1
  97. package/dist/FloatingButton/components/Container.js +1 -1
  98. package/dist/FloatingButton/components/Wrapper.cjs +1 -1
  99. package/dist/FloatingButton/components/Wrapper.js +1 -1
  100. package/dist/FloatingChat/FloatingChat.cjs +32 -4
  101. package/dist/FloatingChat/FloatingChat.d.cts +2 -2
  102. package/dist/FloatingChat/FloatingChat.d.ts +2 -2
  103. package/dist/FloatingChat/FloatingChat.js +33 -5
  104. package/dist/FloatingChat/components/AgentMessage.cjs +2 -2
  105. package/dist/FloatingChat/components/AgentMessage.js +2 -2
  106. package/dist/FloatingChat/components/ChatMessages.cjs +1 -1
  107. package/dist/FloatingChat/components/ChatMessages.js +1 -1
  108. package/dist/FloatingChat/components/Layout.cjs +1 -1
  109. package/dist/FloatingChat/components/Layout.js +1 -1
  110. package/dist/FloatingChat/components/ProductResultsModal.cjs +1 -1
  111. package/dist/FloatingChat/components/ProductResultsModal.js +1 -1
  112. package/dist/FloatingChat/components/ResultsGridView.cjs +1 -1
  113. package/dist/FloatingChat/components/ResultsGridView.js +1 -1
  114. package/dist/FloatingChat/components/SalesAgentBadgeContent.cjs +1 -1
  115. package/dist/FloatingChat/components/SalesAgentBadgeContent.js +1 -1
  116. package/dist/FloatingChat/components/SlideChatContent.cjs +1 -1
  117. package/dist/FloatingChat/components/SlideChatContent.js +1 -1
  118. package/dist/FloatingChat/hooks/useChatSuggestions.cjs +3 -5
  119. package/dist/FloatingChat/hooks/useChatSuggestions.js +4 -6
  120. package/dist/Form/Form.cjs +1 -1
  121. package/dist/Form/Form.js +1 -1
  122. package/dist/Form/components/Layout.cjs +1 -1
  123. package/dist/Form/components/Layout.js +1 -1
  124. package/dist/Form/components/SubmitButtonItem.cjs +1 -1
  125. package/dist/Form/components/SubmitButtonItem.js +1 -1
  126. package/dist/Form/components/TextFieldItem.cjs +1 -1
  127. package/dist/Form/components/TextFieldItem.js +1 -1
  128. package/dist/FullPageSalesAgent/FullPageSalesAgent.cjs +29 -2
  129. package/dist/FullPageSalesAgent/FullPageSalesAgent.d.cts +5 -3
  130. package/dist/FullPageSalesAgent/FullPageSalesAgent.d.ts +5 -3
  131. package/dist/FullPageSalesAgent/FullPageSalesAgent.js +30 -3
  132. package/dist/FullPageSalesAgent/components/Layout.cjs +1 -1
  133. package/dist/FullPageSalesAgent/components/Layout.js +1 -1
  134. package/dist/Image/Image.cjs +1 -1
  135. package/dist/Image/Image.d.cts +2 -2
  136. package/dist/Image/Image.d.ts +2 -2
  137. package/dist/Image/Image.js +1 -1
  138. package/dist/ImageGallery/ImageGallery.d.cts +2 -2
  139. package/dist/ImageGallery/ImageGallery.d.ts +2 -2
  140. package/dist/ImageGallery/components/Layout.cjs +1 -1
  141. package/dist/ImageGallery/components/Layout.js +1 -1
  142. package/dist/ImageGallery/utils/functions.cjs +1 -1
  143. package/dist/ImageGallery/utils/functions.js +1 -1
  144. package/dist/MarkdownProcessor/MarkdownProcessor.d.cts +2 -2
  145. package/dist/Message/components/Layout.cjs +1 -1
  146. package/dist/Message/components/Layout.js +1 -1
  147. package/dist/OrderLookupCard/OrderLookupCard.cjs +1 -1
  148. package/dist/OrderLookupCard/OrderLookupCard.js +1 -1
  149. package/dist/OrderLookupCard/components/Layout.cjs +1 -1
  150. package/dist/OrderLookupCard/components/Layout.js +1 -1
  151. package/dist/OrderLookupCard/components/MoreProductsOverlay.cjs +1 -1
  152. package/dist/OrderLookupCard/components/MoreProductsOverlay.js +1 -1
  153. package/dist/OrderLookupCard/components/ProductImageGridItem.cjs +1 -1
  154. package/dist/OrderLookupCard/components/ProductImageGridItem.js +1 -1
  155. package/dist/OrderLookupCard/components/ProductImageItem.cjs +1 -1
  156. package/dist/OrderLookupCard/components/ProductImageItem.js +1 -1
  157. package/dist/OrderLookupCard/components/ProductImagesGrid.cjs +1 -1
  158. package/dist/OrderLookupCard/components/ProductImagesGrid.js +1 -1
  159. package/dist/OrderLookupCard/components/StatusLabel.cjs +1 -1
  160. package/dist/OrderLookupCard/components/StatusLabel.js +1 -1
  161. package/dist/OrderLookupCard/components/TrackOrderLink.cjs +1 -1
  162. package/dist/OrderLookupCard/components/TrackOrderLink.js +1 -1
  163. package/dist/ProductCard/ProductCard.cjs +6 -2
  164. package/dist/ProductCard/ProductCard.d.cts +6 -3
  165. package/dist/ProductCard/ProductCard.d.ts +6 -3
  166. package/dist/ProductCard/ProductCard.js +6 -2
  167. package/dist/ProductCard/index.d.cts +2 -2
  168. package/dist/ProductCard/index.d.ts +2 -2
  169. package/dist/ProductCard/types/index.d.cts +7 -1
  170. package/dist/ProductCard/types/index.d.ts +7 -1
  171. package/dist/PromptButton/PromptButton.cjs +1 -1
  172. package/dist/PromptButton/PromptButton.d.cts +2 -2
  173. package/dist/PromptButton/PromptButton.js +1 -1
  174. package/dist/PromptButton/components/Layout.cjs +1 -1
  175. package/dist/PromptButton/components/Layout.js +1 -1
  176. package/dist/PromptButton/components/Loading.cjs +1 -1
  177. package/dist/PromptButton/components/Loading.js +1 -1
  178. package/dist/PromptButtonCarouselWithImage/PromptButtonCarouselWithImage.cjs +5 -2
  179. package/dist/PromptButtonCarouselWithImage/PromptButtonCarouselWithImage.d.cts +6 -3
  180. package/dist/PromptButtonCarouselWithImage/PromptButtonCarouselWithImage.d.ts +6 -3
  181. package/dist/PromptButtonCarouselWithImage/PromptButtonCarouselWithImage.js +5 -2
  182. package/dist/PromptButtonCarouselWithImage/components/Layout.cjs +1 -1
  183. package/dist/PromptButtonCarouselWithImage/components/Layout.js +1 -1
  184. package/dist/PromptButtonCarouselWithImage/components/Skeleton.cjs +1 -1
  185. package/dist/PromptButtonCarouselWithImage/components/Skeleton.js +1 -1
  186. package/dist/PromptButtonCarouselWithImage/types/types.d.cts +12 -0
  187. package/dist/PromptButtonCarouselWithImage/types/types.d.ts +12 -0
  188. package/dist/PromptCarousel/PromptCarousel.cjs +1 -1
  189. package/dist/PromptCarousel/PromptCarousel.d.cts +2 -2
  190. package/dist/PromptCarousel/PromptCarousel.d.ts +2 -2
  191. package/dist/PromptCarousel/PromptCarousel.js +1 -1
  192. package/dist/PromptCarousel/hooks/useCarouselButtons.cjs +3 -2
  193. package/dist/PromptCarousel/hooks/useCarouselButtons.js +3 -2
  194. package/dist/ReviewCard/ReviewCard.d.cts +2 -2
  195. package/dist/ReviewCard/ReviewCard.d.ts +2 -2
  196. package/dist/ReviewCard/components/Container.cjs +1 -1
  197. package/dist/ReviewCard/components/Container.js +1 -1
  198. package/dist/ReviewCard/components/Rating.cjs +1 -2
  199. package/dist/ReviewCard/components/Rating.js +1 -2
  200. package/dist/ReviewCard/components/ReadMoreButton.cjs +1 -1
  201. package/dist/ReviewCard/components/ReadMoreButton.js +1 -1
  202. package/dist/ReviewCard/components/index.d.cts +6 -6
  203. package/dist/ReviewCard/components/index.d.ts +6 -6
  204. package/dist/SalesAgentProductCard/SalesAgentProductCard.d.cts +2 -2
  205. package/dist/SalesAgentProductCard/components/Container.cjs +1 -1
  206. package/dist/SalesAgentProductCard/components/Container.js +1 -1
  207. package/dist/SalesAgentProductCard/components/ProductImage.cjs +1 -1
  208. package/dist/SalesAgentProductCard/components/ProductImage.js +1 -1
  209. package/dist/SalesAgentProductCard/components/ProductName.cjs +1 -1
  210. package/dist/SalesAgentProductCard/components/ProductName.js +1 -1
  211. package/dist/SalesAgentProductCard/components/index.d.cts +8 -8
  212. package/dist/SocialProof/SocialProof.cjs +6 -3
  213. package/dist/SocialProof/SocialProof.d.cts +2 -2
  214. package/dist/SocialProof/SocialProof.d.ts +2 -2
  215. package/dist/SocialProof/SocialProof.js +6 -3
  216. package/dist/SocialProof/components/Headline.cjs +1 -1
  217. package/dist/SocialProof/components/Headline.js +1 -1
  218. package/dist/SocialProof/components/LayoutFourHorizontal.cjs +1 -1
  219. package/dist/SocialProof/components/LayoutFourHorizontal.js +1 -1
  220. package/dist/SocialProof/components/Textfield.cjs +5 -2
  221. package/dist/SocialProof/components/Textfield.js +5 -2
  222. package/dist/SocialProof/index.d.cts +2 -2
  223. package/dist/SocialProof/index.d.ts +2 -2
  224. package/dist/SocialProof/types/types.d.cts +13 -1
  225. package/dist/SocialProof/types/types.d.ts +13 -1
  226. package/dist/SparkleAnimation/SparkleAnimation.d.cts +2 -2
  227. package/dist/Stack/Stack.d.cts +2 -2
  228. package/dist/Stack/Stack.d.ts +2 -2
  229. package/dist/TextField/TextField.cjs +35 -3
  230. package/dist/TextField/TextField.d.cts +5 -1
  231. package/dist/TextField/TextField.d.ts +5 -1
  232. package/dist/TextField/TextField.js +35 -3
  233. package/dist/TextField/components/Input.cjs +1 -1
  234. package/dist/TextField/components/Input.js +1 -1
  235. package/dist/TextField/components/Layout.cjs +11 -8
  236. package/dist/TextField/components/Layout.js +11 -8
  237. package/dist/TextField/components/SendIcon.cjs +1 -1
  238. package/dist/TextField/components/SendIcon.js +1 -1
  239. package/dist/TextField/components/VoiceInputButton.cjs +45 -0
  240. package/dist/TextField/components/VoiceInputButton.js +39 -0
  241. package/dist/TextField/components/index.cjs +3 -1
  242. package/dist/TextField/components/index.js +3 -1
  243. package/dist/TextField/hooks/useGetMicButtonContainerProperties.cjs +20 -0
  244. package/dist/TextField/hooks/useGetMicButtonContainerProperties.js +19 -0
  245. package/dist/TextField/hooks/useGetSkeletonProperties.cjs +1 -1
  246. package/dist/TextField/hooks/useGetSkeletonProperties.js +1 -1
  247. package/dist/TextField/hooks/useVoiceInput.cjs +52 -0
  248. package/dist/TextField/hooks/useVoiceInput.js +50 -0
  249. package/dist/TextField/types/index.d.cts +11 -0
  250. package/dist/TextField/types/index.d.ts +11 -0
  251. package/dist/TextField/utils/getLayoutStateProperties.cjs +9 -1
  252. package/dist/TextField/utils/getLayoutStateProperties.js +8 -1
  253. package/dist/Title/Title.cjs +1 -1
  254. package/dist/Title/Title.js +1 -1
  255. package/dist/Title/components/Layout.cjs +1 -1
  256. package/dist/Title/components/Layout.js +1 -1
  257. package/dist/TitledPromptCarousel/TitledPromptCarousel.cjs +1 -1
  258. package/dist/TitledPromptCarousel/TitledPromptCarousel.d.cts +2 -2
  259. package/dist/TitledPromptCarousel/TitledPromptCarousel.js +1 -1
  260. package/dist/Tokens/index.cjs +6 -6
  261. package/dist/Tokens/index.js +6 -6
  262. package/dist/TypingAnimation/TypingAnimation.cjs +7 -3
  263. package/dist/TypingAnimation/TypingAnimation.d.cts +2 -2
  264. package/dist/TypingAnimation/TypingAnimation.d.ts +2 -2
  265. package/dist/TypingAnimation/TypingAnimation.js +7 -3
  266. package/dist/TypingAnimation/index.d.cts +2 -2
  267. package/dist/TypingAnimation/index.d.ts +2 -2
  268. package/dist/TypingAnimation/types/index.d.cts +13 -1
  269. package/dist/TypingAnimation/types/index.d.ts +13 -1
  270. package/dist/Typography/Typography.d.cts +4 -4
  271. package/dist/Typography/Typography.d.ts +4 -4
  272. package/dist/WelcomeMessage/components/Container.cjs +1 -1
  273. package/dist/WelcomeMessage/components/Container.js +1 -1
  274. package/dist/WidgetTextField/WidgetTextField.cjs +39 -7
  275. package/dist/WidgetTextField/WidgetTextField.d.cts +7 -3
  276. package/dist/WidgetTextField/WidgetTextField.d.ts +7 -3
  277. package/dist/WidgetTextField/WidgetTextField.js +33 -2
  278. package/dist/WidgetTextField/components/Container.cjs +32 -26
  279. package/dist/WidgetTextField/components/Container.js +32 -26
  280. package/dist/WidgetTextField/components/Skeleton.cjs +1 -1
  281. package/dist/WidgetTextField/components/Skeleton.js +1 -1
  282. package/dist/WidgetTextField/hooks/useGetContainerProperties.cjs +5 -3
  283. package/dist/WidgetTextField/hooks/useGetContainerProperties.js +5 -3
  284. package/dist/WidgetTextField/hooks/useGetMicWidgetButtonProperties.cjs +20 -0
  285. package/dist/WidgetTextField/hooks/useGetMicWidgetButtonProperties.js +19 -0
  286. package/dist/WidgetTextField/types/types.d.cts +21 -0
  287. package/dist/WidgetTextField/types/types.d.ts +21 -0
  288. package/dist/WidgetWrapper/WidgetWrapper.cjs +1 -1
  289. package/dist/WidgetWrapper/WidgetWrapper.d.cts +2 -2
  290. package/dist/WidgetWrapper/WidgetWrapper.js +1 -1
  291. package/dist/WidgetWrapper/hooks/useGetWrapperProperties.cjs +1 -1
  292. package/dist/WidgetWrapper/hooks/useGetWrapperProperties.js +1 -1
  293. package/dist/WidgetWrapperWithTitle/WidgetWrapperWithTitle.d.cts +2 -2
  294. package/dist/WidgetWrapperWithTitle/WidgetWrapperWithTitle.d.ts +2 -2
  295. package/dist/node_modules/jotai/esm/react.cjs +87 -0
  296. package/dist/node_modules/jotai/esm/react.js +88 -2
  297. package/dist/node_modules/jotai/esm/vanilla/internals.cjs +2 -1
  298. package/dist/node_modules/jotai/esm/vanilla/internals.js +1 -1
  299. package/dist/packages/components-v3/tokens/typography/typography.cjs +1 -1
  300. package/dist/packages/components-v3/tokens/typography/typography.js +1 -1
  301. package/dist/styles.css +1 -1
  302. package/dist/utils/resolveTheme.cjs +1 -1
  303. package/dist/utils/resolveTheme.js +1 -1
  304. package/package.json +2 -1
  305. package/src/components/ChatFooter/ChatFooter.tsx +8 -0
  306. package/src/components/ChatFooter/__tests__/ChatFooter.test.tsx +43 -0
  307. package/src/components/ChatFooter/components/TextField.tsx +12 -0
  308. package/src/components/ChatFooter/types/types.ts +17 -0
  309. package/src/components/ChatHeader/ChatHeader.tsx +1 -0
  310. package/src/components/ChatHeader/components/Handle.tsx +7 -2
  311. package/src/components/ChatHeader/hooks/useGetHandleProperties.ts +5 -1
  312. package/src/components/ChatHeader/hooks/useGetToggleOptionProperties.ts +1 -1
  313. package/src/components/ChatHeader/types/index.ts +1 -0
  314. package/src/components/ChatPreview/ChatPreview.tsx +13 -2
  315. package/src/components/ChatPreview/__tests__/ChatPreview.test.tsx +44 -0
  316. package/src/components/ChatPreview/index.ts +1 -1
  317. package/src/components/ChatPreview/types/types.ts +13 -0
  318. package/src/components/ChatPreviewComparison/ChatPreviewComparison.tsx +6 -0
  319. package/src/components/ChatPreviewComparison/__tests__/ChatPreviewComparison.test.tsx +44 -0
  320. package/src/components/ChatPreviewComparison/index.ts +1 -1
  321. package/src/components/ChatPreviewComparison/types/types.ts +13 -0
  322. package/src/components/ChatPreviewLoading/ChatPreviewLoading.tsx +5 -3
  323. package/src/components/ChatPreviewLoading/__tests__/ChatPreviewLoading.test.tsx +40 -0
  324. package/src/components/ChatPreviewLoading/types/types.ts +5 -0
  325. package/src/components/Disclaimer/components/Container.tsx +1 -1
  326. package/src/components/FloatingChat/FloatingChat.tsx +43 -7
  327. package/src/components/FloatingChat/components/SlideChatContent.tsx +1 -1
  328. package/src/components/FloatingChat/hooks/useChatSuggestions.ts +8 -12
  329. package/src/components/FullPageSalesAgent/FullPageSalesAgent.tsx +43 -7
  330. package/src/components/ProductCard/ProductCard.tsx +7 -0
  331. package/src/components/ProductCard/__tests__/ProductCard.test.tsx +33 -0
  332. package/src/components/ProductCard/index.ts +1 -1
  333. package/src/components/ProductCard/types/index.ts +6 -0
  334. package/src/components/PromptButtonCarouselWithImage/PromptButtonCarouselWithImage.tsx +6 -0
  335. package/src/components/PromptButtonCarouselWithImage/__tests__/PromptButtonCarouselWithImage.test.tsx +34 -0
  336. package/src/components/PromptButtonCarouselWithImage/types/types.ts +12 -0
  337. package/src/components/PromptCarousel/__tests__/PromptCarousel.test.tsx +19 -0
  338. package/src/components/PromptCarousel/hooks/useCarouselButtons.ts +4 -2
  339. package/src/components/ReviewCard/components/Rating.tsx +0 -1
  340. package/src/components/SocialProof/SocialProof.tsx +6 -0
  341. package/src/components/SocialProof/__tests__/SocialProof.test.tsx +58 -0
  342. package/src/components/SocialProof/components/Textfield.tsx +9 -0
  343. package/src/components/SocialProof/index.ts +1 -1
  344. package/src/components/SocialProof/types/types.ts +13 -0
  345. package/src/components/TextField/TextField.tsx +49 -0
  346. package/src/components/TextField/__tests__/TextField.test.tsx +3 -3
  347. package/src/components/TextField/__tests__/VoiceInputButton.test.tsx +175 -0
  348. package/src/components/TextField/components/Layout.tsx +24 -17
  349. package/src/components/TextField/components/VoiceInputButton.tsx +69 -0
  350. package/src/components/TextField/components/index.ts +2 -0
  351. package/src/components/TextField/hooks/useGetMicButtonContainerProperties.ts +38 -0
  352. package/src/components/TextField/hooks/useGetSkeletonProperties.ts +1 -1
  353. package/src/components/TextField/hooks/useVoiceInput.ts +75 -0
  354. package/src/components/TextField/types/index.ts +11 -0
  355. package/src/components/TextField/utils/getLayoutStateProperties.ts +8 -0
  356. package/src/components/TypingAnimation/TypingAnimation.tsx +7 -0
  357. package/src/components/TypingAnimation/__tests__/TypingAnimation.test.tsx +47 -0
  358. package/src/components/TypingAnimation/index.ts +1 -1
  359. package/src/components/TypingAnimation/types/index.ts +14 -1
  360. package/src/components/WidgetTextField/WidgetTextField.tsx +47 -0
  361. package/src/components/WidgetTextField/__tests__/WidgetTextField.test.tsx +119 -4
  362. package/src/components/WidgetTextField/components/Container.tsx +40 -27
  363. package/src/components/WidgetTextField/hooks/useGetContainerProperties.ts +16 -4
  364. package/src/components/WidgetTextField/hooks/useGetMicWidgetButtonProperties.ts +38 -0
  365. package/src/components/WidgetTextField/types/types.ts +21 -0
  366. package/src/components/WidgetWrapper/hooks/useGetWrapperProperties.ts +1 -1
@@ -6,8 +6,8 @@ import { useGetThemeProperties } from "../hooks/useGetThemeProperties.js";
6
6
  import { useGetStackLayoutProperties } from "../hooks/useGetStackLayoutProperties.js";
7
7
  import { useGetCardWidthProperties } from "../hooks/useGetCardWidthProperties.js";
8
8
  import { useGetPaddingProperties } from "../hooks/useGetPaddingProperties.js";
9
- import classNames from "classnames";
10
9
  import { jsx, jsxs } from "react/jsx-runtime";
10
+ import classNames from "classnames";
11
11
 
12
12
  //#region src/components/DocumentRetrievalCard/components/Layout.tsx
13
13
  const Layout = ({ content, image, viewArticleButton, id, testId, className, style, theme, ariaLabel }) => {
@@ -2,9 +2,9 @@ const require_rolldown_runtime = require('../../../../_virtual/rolldown_runtime.
2
2
  const require_Stack = require('../../../../Stack/Stack.cjs');
3
3
  require('../../../../Stack/index.cjs');
4
4
  const require_CustomIcon = require('../../../../utils/CustomIcon.cjs');
5
+ let react_jsx_runtime = require("react/jsx-runtime");
5
6
  let classnames = require("classnames");
6
7
  classnames = require_rolldown_runtime.__toESM(classnames);
7
- let react_jsx_runtime = require("react/jsx-runtime");
8
8
  let __envive_ai_react_icons_Document = require("@envive-ai/react-icons/Document");
9
9
  __envive_ai_react_icons_Document = require_rolldown_runtime.__toESM(__envive_ai_react_icons_Document);
10
10
 
@@ -1,8 +1,8 @@
1
1
  import { Stack } from "../../../../Stack/Stack.js";
2
2
  import "../../../../Stack/index.js";
3
3
  import { CustomIcon } from "../../../../utils/CustomIcon.js";
4
- import classNames from "classnames";
5
4
  import { jsx } from "react/jsx-runtime";
5
+ import classNames from "classnames";
6
6
  import Document from "@envive-ai/react-icons/Document";
7
7
 
8
8
  //#region src/components/DocumentRetrievalCard/components/ViewArticleButton/components/Icon.tsx
@@ -5,9 +5,9 @@ const require_index = require('../../../../Typography/types/index.cjs');
5
5
  const require_Typography = require('../../../../Typography/Typography.cjs');
6
6
  require('../../../../Typography/index.cjs');
7
7
  const require_useGetLabelUnderlineProperties = require('../../../hooks/useGetLabelUnderlineProperties.cjs');
8
+ let react_jsx_runtime = require("react/jsx-runtime");
8
9
  let classnames = require("classnames");
9
10
  classnames = require_rolldown_runtime.__toESM(classnames);
10
- let react_jsx_runtime = require("react/jsx-runtime");
11
11
 
12
12
  //#region src/components/DocumentRetrievalCard/components/ViewArticleButton/components/Label.tsx
13
13
  const Label = ({ viewArticleLabel, typographyVariant, shouldUnderline = false, textCaseClassName }) => {
@@ -4,8 +4,8 @@ import { TypographyColor } from "../../../../Typography/types/index.js";
4
4
  import { Typography } from "../../../../Typography/Typography.js";
5
5
  import "../../../../Typography/index.js";
6
6
  import { useGetLabelUnderlineProperties } from "../../../hooks/useGetLabelUnderlineProperties.js";
7
- import classNames from "classnames";
8
7
  import { jsx } from "react/jsx-runtime";
8
+ import classNames from "classnames";
9
9
 
10
10
  //#region src/components/DocumentRetrievalCard/components/ViewArticleButton/components/Label.tsx
11
11
  const Label = ({ viewArticleLabel, typographyVariant, shouldUnderline = false, textCaseClassName }) => {
@@ -1,9 +1,9 @@
1
1
  const require_rolldown_runtime = require('../../../../_virtual/rolldown_runtime.cjs');
2
2
  const require_Stack = require('../../../../Stack/Stack.cjs');
3
3
  require('../../../../Stack/index.cjs');
4
+ let react_jsx_runtime = require("react/jsx-runtime");
4
5
  let classnames = require("classnames");
5
6
  classnames = require_rolldown_runtime.__toESM(classnames);
6
- let react_jsx_runtime = require("react/jsx-runtime");
7
7
 
8
8
  //#region src/components/DocumentRetrievalCard/components/ViewArticleButton/components/Layout.tsx
9
9
  const Layout = ({ icon, label, onClick, className, ariaLabel }) => {
@@ -1,7 +1,7 @@
1
1
  import { Stack } from "../../../../Stack/Stack.js";
2
2
  import "../../../../Stack/index.js";
3
- import classNames from "classnames";
4
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
+ import classNames from "classnames";
5
5
 
6
6
  //#region src/components/DocumentRetrievalCard/components/ViewArticleButton/components/Layout.tsx
7
7
  const Layout = ({ icon, label, onClick, className, ariaLabel }) => {
@@ -1,5 +1,5 @@
1
1
  import { FloatingButtonProps } from "./types/types.cjs";
2
- import * as react_jsx_runtime25 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime18 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/FloatingButton/FloatingButton.d.ts
5
5
  declare const FloatingButton: ({
@@ -18,6 +18,6 @@ declare const FloatingButton: ({
18
18
  onMouseOver,
19
19
  ariaLabel,
20
20
  previewMode
21
- }: FloatingButtonProps) => react_jsx_runtime25.JSX.Element;
21
+ }: FloatingButtonProps) => react_jsx_runtime18.JSX.Element;
22
22
  //#endregion
23
23
  export { FloatingButton };
@@ -2,9 +2,9 @@ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
2
  const require_types = require('../types/types.cjs');
3
3
  const require_useGetButtonHoverProperties = require('../hooks/useGetButtonHoverProperties.cjs');
4
4
  const require_useGetButtonProperties = require('../hooks/useGetButtonProperties.cjs');
5
+ let react_jsx_runtime = require("react/jsx-runtime");
5
6
  let classnames = require("classnames");
6
7
  classnames = require_rolldown_runtime.__toESM(classnames);
7
- let react_jsx_runtime = require("react/jsx-runtime");
8
8
 
9
9
  //#region src/components/FloatingButton/components/Button.tsx
10
10
  const Button = ({ variant = require_types.FloatingButtonVariant.ATTACHED, mode = require_types.FloatingButtonMode.LIGHT, backgroundColor, onClick, onMouseOver, onFocus, children, className = "", ariaLabel }) => {
@@ -1,8 +1,8 @@
1
1
  import { FloatingButtonMode, FloatingButtonVariant } from "../types/types.js";
2
2
  import { useGetButtonHoverProperties } from "../hooks/useGetButtonHoverProperties.js";
3
3
  import { useGetButtonProperties } from "../hooks/useGetButtonProperties.js";
4
- import classNames from "classnames";
5
4
  import { jsx } from "react/jsx-runtime";
5
+ import classNames from "classnames";
6
6
 
7
7
  //#region src/components/FloatingButton/components/Button.tsx
8
8
  const Button = ({ variant = FloatingButtonVariant.ATTACHED, mode = FloatingButtonMode.LIGHT, backgroundColor, onClick, onMouseOver, onFocus, children, className = "", ariaLabel }) => {
@@ -1,9 +1,9 @@
1
1
  const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
2
  const require_types = require('../types/types.cjs');
3
3
  const require_useGetContainerProperties = require('../hooks/useGetContainerProperties.cjs');
4
+ let react_jsx_runtime = require("react/jsx-runtime");
4
5
  let classnames = require("classnames");
5
6
  classnames = require_rolldown_runtime.__toESM(classnames);
6
- let react_jsx_runtime = require("react/jsx-runtime");
7
7
 
8
8
  //#region src/components/FloatingButton/components/Container.tsx
9
9
  const Container = ({ location = require_types.FloatingButtonLocation.BOTTOM_RIGHT, show = require_types.FloatingButtonShow.ALWAYS, variant = require_types.FloatingButtonVariant.ATTACHED, hasInteractionHappened = false, children, id, testId, className = "", style, previewMode = false }) => {
@@ -1,7 +1,7 @@
1
1
  import { FloatingButtonLocation, FloatingButtonShow, FloatingButtonVariant } from "../types/types.js";
2
2
  import { useGetContainerProperties } from "../hooks/useGetContainerProperties.js";
3
- import classNames from "classnames";
4
3
  import { jsx } from "react/jsx-runtime";
4
+ import classNames from "classnames";
5
5
 
6
6
  //#region src/components/FloatingButton/components/Container.tsx
7
7
  const Container = ({ location = FloatingButtonLocation.BOTTOM_RIGHT, show = FloatingButtonShow.ALWAYS, variant = FloatingButtonVariant.ATTACHED, hasInteractionHappened = false, children, id, testId, className = "", style, previewMode = false }) => {
@@ -1,9 +1,9 @@
1
1
  const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
2
  const require_types = require('../types/types.cjs');
3
3
  const require_useGetWrapperProperties = require('../hooks/useGetWrapperProperties.cjs');
4
+ let react_jsx_runtime = require("react/jsx-runtime");
4
5
  let classnames = require("classnames");
5
6
  classnames = require_rolldown_runtime.__toESM(classnames);
6
- let react_jsx_runtime = require("react/jsx-runtime");
7
7
 
8
8
  //#region src/components/FloatingButton/components/Wrapper.tsx
9
9
  const Wrapper = ({ location = require_types.FloatingButtonLocation.BOTTOM_RIGHT, children, className = "" }) => {
@@ -1,7 +1,7 @@
1
1
  import { FloatingButtonLocation } from "../types/types.js";
2
2
  import { useGetWrapperProperties } from "../hooks/useGetWrapperProperties.js";
3
- import classNames from "classnames";
4
3
  import { jsx } from "react/jsx-runtime";
4
+ import classNames from "classnames";
5
5
 
6
6
  //#region src/components/FloatingButton/components/Wrapper.tsx
7
7
  const Wrapper = ({ location = FloatingButtonLocation.BOTTOM_RIGHT, children, className = "" }) => {
@@ -1,6 +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
3
  const require_resolveTheme = require('../utils/resolveTheme.cjs');
4
+ const require_react = require('../node_modules/jotai/esm/react.cjs');
4
5
  const require_usePromptCarouselAnalytics = require('../PromptCarousel/hooks/usePromptCarouselAnalytics.cjs');
5
6
  const require_PromptButton_types_index = require('../PromptButton/types/index.cjs');
6
7
  require('../PromptButton/index.cjs');
@@ -19,13 +20,14 @@ const require_useChatSuggestions = require('./hooks/useChatSuggestions.cjs');
19
20
  const require_useProductResultsView = require('./hooks/useProductResultsView.cjs');
20
21
  const require_useScrollToBottom = require('./hooks/useScrollToBottom.cjs');
21
22
  const require_useSnapSetup = require('./hooks/useSnapSetup.cjs');
22
- const require_useFilteredChatMessages = require('./hooks/useFilteredChatMessages.cjs');
23
- const require_useSnapCalculator = require('./hooks/useSnapCalculator.cjs');
24
23
  const require_trackProductCardInteraction = require('./utils/trackProductCardInteraction.cjs');
24
+ const require_useSnapCalculator = require('./hooks/useSnapCalculator.cjs');
25
25
  const require_ModalSheet = require('./components/ModalSheet.cjs');
26
26
  const require_index$1 = require('./components/index.cjs');
27
+ const require_useFilteredChatMessages = require('./hooks/useFilteredChatMessages.cjs');
27
28
  let react = require("react");
28
29
  let react_jsx_runtime = require("react/jsx-runtime");
30
+ let __envive_ai_react_hooks_atoms_chat = require("@envive-ai/react-hooks/atoms/chat");
29
31
  let __envive_ai_react_hooks_contexts_amplitudeContext = require("@envive-ai/react-hooks/contexts/amplitudeContext");
30
32
  let __envive_ai_react_hooks_hooks_WidgetInteraction = require("@envive-ai/react-hooks/hooks/WidgetInteraction");
31
33
  let __envive_ai_react_hooks_hooks_WidgetInteraction_types = require("@envive-ai/react-hooks/hooks/WidgetInteraction/types");
@@ -37,6 +39,7 @@ const FloatingChat = ({ id, className, style, testId, theme = require_theme.Them
37
39
  const finalTheme = require_resolveTheme.resolveTheme(theme);
38
40
  const { trackWidgetInteraction } = (0, __envive_ai_react_hooks_hooks_WidgetInteraction.useWidgetInteraction)();
39
41
  const { onDrag, onHover, onMouseDown, onMouseUp, onTouchStart, onTouchEnd } = require_usePromptCarouselAnalytics.usePromptCarouselAnalytics(__envive_ai_react_hooks_hooks_WidgetInteraction_types.WidgetInteractionComponent.FLOATING_CHAT, (text) => text);
42
+ const setListeningToSpeech = require_react.useSetAtom(__envive_ai_react_hooks_atoms_chat.listeningToSpeechAtom);
40
43
  const [query, setQuery] = (0, react.useState)("");
41
44
  const chatMessagesRef = (0, react.useRef)(null);
42
45
  const { headerBackgroundColor, headerMode, welcomeMessageIconColor, showVerifiedBuyer, userQueryInputEnabled = true, showEnviveLogo, ignoreFirstModelResponse, neverShowSingleProductCards } = floatingChatConfig;
@@ -48,7 +51,7 @@ const FloatingChat = ({ id, className, style, testId, theme = require_theme.Them
48
51
  if (textString && typeof textString === "string") return textString;
49
52
  }
50
53
  }, [disclaimerText]);
51
- const { agentName, chatHeaderLogoDarkSrc, chatHeaderLogoLightSrc } = lookAndFeelConfig;
54
+ const { agentName, chatHeaderLogoDarkSrc, chatHeaderLogoLightSrc, voiceInputEnabled } = lookAndFeelConfig;
52
55
  const { messages, isResponseStreaming, isPendingResponse, suggestions, onSuggestionClicked, onTypedMessageSubmitted, onFormResponseSubmitted } = salesAgentData;
53
56
  const { answerSuggestions, generalSuggestions, showAnswerSuggestions, setAnswerSuggestions, setGeneralSuggestions } = require_useChatSuggestions.useChatSuggestions({
54
57
  suggestions,
@@ -122,6 +125,25 @@ const FloatingChat = ({ id, className, style, testId, theme = require_theme.Them
122
125
  const handleProductCardClick = (product) => {
123
126
  require_trackProductCardInteraction.trackProductCardClicked(trackWidgetInteraction, __envive_ai_react_hooks_hooks_WidgetInteraction_types.WidgetInteractionComponent.FLOATING_CHAT, product);
124
127
  };
128
+ const handleTranscriptionStarted = (0, react.useCallback)(() => {
129
+ trackWidgetInteraction({
130
+ eventName: __envive_ai_react_hooks_contexts_amplitudeContext.EnviveMetricsEventName.WidgetInteraction,
131
+ trigger: {
132
+ widget: __envive_ai_react_hooks_hooks_WidgetInteraction_types.WidgetInteractionComponent.FLOATING_CHAT,
133
+ widget_interaction: __envive_ai_react_hooks_hooks_WidgetInteraction_types.WidgetInteractionType.VOICE_TRANSCRIPTION_STARTED
134
+ }
135
+ });
136
+ }, [trackWidgetInteraction]);
137
+ const handleTranscriptionCompleted = (0, react.useCallback)((transcript) => {
138
+ trackWidgetInteraction({
139
+ eventName: __envive_ai_react_hooks_contexts_amplitudeContext.EnviveMetricsEventName.WidgetInteraction,
140
+ trigger: {
141
+ widget: __envive_ai_react_hooks_hooks_WidgetInteraction_types.WidgetInteractionComponent.FLOATING_CHAT,
142
+ widget_interaction: __envive_ai_react_hooks_hooks_WidgetInteraction_types.WidgetInteractionType.VOICE_TRANSCRIPTION_COMPLETED,
143
+ widget_interaction_data: { transcription: transcript }
144
+ }
145
+ });
146
+ }, [trackWidgetInteraction]);
125
147
  const header = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ChatHeader.ChatHeader, {
126
148
  logoDark: chatHeaderLogoDarkSrc,
127
149
  logoLight: chatHeaderLogoLightSrc,
@@ -175,6 +197,7 @@ const FloatingChat = ({ id, className, style, testId, theme = require_theme.Them
175
197
  theme: finalTheme,
176
198
  isScrolled: isMobile ? isFloatingLayout : false,
177
199
  onChange: setQuery,
200
+ inputClassName: "placeholder:envive-tw-text-text-secondary",
178
201
  onSubmit: () => {
179
202
  onTypedMessageSubmitted({
180
203
  query,
@@ -190,6 +213,7 @@ const FloatingChat = ({ id, className, style, testId, theme = require_theme.Them
190
213
  handleButtonClick: (buttonText) => {
191
214
  const suggestion = suggestions.find((s) => s.content === buttonText && !s.isAnswer);
192
215
  if (suggestion) onSuggestionClicked(suggestion, __envive_ai_react_hooks_application_models.ChatElementDisplayLocationV3.FLOATING_CHAT_PROMPT_BUTTON);
216
+ setListeningToSpeech("abort");
193
217
  setAnswerSuggestions([]);
194
218
  setGeneralSuggestions([]);
195
219
  handleBackToChat();
@@ -199,7 +223,10 @@ const FloatingChat = ({ id, className, style, testId, theme = require_theme.Them
199
223
  isLoadingPromptSuggestions: isPendingResponse || isResponseStreaming || generalSuggestions.length === 0,
200
224
  hideEnviveWatermark: !showEnviveLogo,
201
225
  onFocus: handleInputQueryFocus,
202
- parentWidget: __envive_ai_react_hooks_hooks_WidgetInteraction_types.WidgetInteractionComponent.FLOATING_CHAT
226
+ parentWidget: __envive_ai_react_hooks_hooks_WidgetInteraction_types.WidgetInteractionComponent.FLOATING_CHAT,
227
+ voiceInputEnabled,
228
+ onTranscriptionStarted: handleTranscriptionStarted,
229
+ onTranscriptionCompleted: handleTranscriptionCompleted
203
230
  });
204
231
  const welcomeMessage = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_WelcomeMessage.WelcomeMessage, {
205
232
  sparkleIconColor: welcomeMessageIconColor,
@@ -242,6 +269,7 @@ const FloatingChat = ({ id, className, style, testId, theme = require_theme.Them
242
269
  handleButtonClick: (buttonText) => {
243
270
  const suggestion = suggestions.find((s) => s.content === buttonText && s.isAnswer);
244
271
  if (suggestion) onSuggestionClicked(suggestion, __envive_ai_react_hooks_application_models.ChatElementDisplayLocationV3.FLOATING_CHAT_PROMPT_BUTTON);
272
+ setListeningToSpeech("abort");
245
273
  setAnswerSuggestions([]);
246
274
  setGeneralSuggestions([]);
247
275
  },
@@ -1,5 +1,5 @@
1
1
  import { FloatingChatProps } from "./types/types.cjs";
2
- import * as react_jsx_runtime29 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime33 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/FloatingChat/FloatingChat.d.ts
5
5
  declare const FloatingChat: ({
@@ -19,6 +19,6 @@ declare const FloatingChat: ({
19
19
  onSwipeClose,
20
20
  onToggleCXButton,
21
21
  setIsResultsModalOpen
22
- }: FloatingChatProps) => react_jsx_runtime29.JSX.Element;
22
+ }: FloatingChatProps) => react_jsx_runtime33.JSX.Element;
23
23
  //#endregion
24
24
  export { FloatingChat };
@@ -1,5 +1,5 @@
1
1
  import { FloatingChatProps } from "./types/types.js";
2
- import * as react_jsx_runtime34 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime23 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/FloatingChat/FloatingChat.d.ts
5
5
  declare const FloatingChat: ({
@@ -19,6 +19,6 @@ declare const FloatingChat: ({
19
19
  onSwipeClose,
20
20
  onToggleCXButton,
21
21
  setIsResultsModalOpen
22
- }: FloatingChatProps) => react_jsx_runtime34.JSX.Element;
22
+ }: FloatingChatProps) => react_jsx_runtime23.JSX.Element;
23
23
  //#endregion
24
24
  export { FloatingChat };
@@ -1,5 +1,6 @@
1
1
  import { Theme } from "../packages/components-v3/tokens/theme/theme.js";
2
2
  import { resolveTheme } from "../utils/resolveTheme.js";
3
+ import { useSetAtom } from "../node_modules/jotai/esm/react.js";
3
4
  import { usePromptCarouselAnalytics } from "../PromptCarousel/hooks/usePromptCarouselAnalytics.js";
4
5
  import { PromptButtonVariant } from "../PromptButton/types/index.js";
5
6
  import "../PromptButton/index.js";
@@ -18,13 +19,14 @@ import { useChatSuggestions } from "./hooks/useChatSuggestions.js";
18
19
  import { useProductResultsView } from "./hooks/useProductResultsView.js";
19
20
  import { useScrollToBottom } from "./hooks/useScrollToBottom.js";
20
21
  import { useSnapSetup } from "./hooks/useSnapSetup.js";
21
- import { useFilteredChatMessages } from "./hooks/useFilteredChatMessages.js";
22
- import { Unit } from "./hooks/useSnapCalculator.js";
23
22
  import { trackProductCardClicked } from "./utils/trackProductCardInteraction.js";
23
+ import { Unit } from "./hooks/useSnapCalculator.js";
24
24
  import { ModalSheet } from "./components/ModalSheet.js";
25
25
  import { FloatingChatComponents } from "./components/index.js";
26
- import { useEffect, useMemo, useRef, useState } from "react";
26
+ import { useFilteredChatMessages } from "./hooks/useFilteredChatMessages.js";
27
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
27
28
  import { jsx } from "react/jsx-runtime";
29
+ import { listeningToSpeechAtom } from "@envive-ai/react-hooks/atoms/chat";
28
30
  import { EnviveMetricsEventName } from "@envive-ai/react-hooks/contexts/amplitudeContext";
29
31
  import { useWidgetInteraction } from "@envive-ai/react-hooks/hooks/WidgetInteraction";
30
32
  import { WidgetInteractionComponent, WidgetInteractionType } from "@envive-ai/react-hooks/hooks/WidgetInteraction/types";
@@ -36,6 +38,7 @@ const FloatingChat = ({ id, className, style, testId, theme = Theme.GLOBAL_CUSTO
36
38
  const finalTheme = resolveTheme(theme);
37
39
  const { trackWidgetInteraction } = useWidgetInteraction();
38
40
  const { onDrag, onHover, onMouseDown, onMouseUp, onTouchStart, onTouchEnd } = usePromptCarouselAnalytics(WidgetInteractionComponent.FLOATING_CHAT, (text) => text);
41
+ const setListeningToSpeech = useSetAtom(listeningToSpeechAtom);
39
42
  const [query, setQuery] = useState("");
40
43
  const chatMessagesRef = useRef(null);
41
44
  const { headerBackgroundColor, headerMode, welcomeMessageIconColor, showVerifiedBuyer, userQueryInputEnabled = true, showEnviveLogo, ignoreFirstModelResponse, neverShowSingleProductCards } = floatingChatConfig;
@@ -47,7 +50,7 @@ const FloatingChat = ({ id, className, style, testId, theme = Theme.GLOBAL_CUSTO
47
50
  if (textString && typeof textString === "string") return textString;
48
51
  }
49
52
  }, [disclaimerText]);
50
- const { agentName, chatHeaderLogoDarkSrc, chatHeaderLogoLightSrc } = lookAndFeelConfig;
53
+ const { agentName, chatHeaderLogoDarkSrc, chatHeaderLogoLightSrc, voiceInputEnabled } = lookAndFeelConfig;
51
54
  const { messages, isResponseStreaming, isPendingResponse, suggestions, onSuggestionClicked, onTypedMessageSubmitted, onFormResponseSubmitted } = salesAgentData;
52
55
  const { answerSuggestions, generalSuggestions, showAnswerSuggestions, setAnswerSuggestions, setGeneralSuggestions } = useChatSuggestions({
53
56
  suggestions,
@@ -121,6 +124,25 @@ const FloatingChat = ({ id, className, style, testId, theme = Theme.GLOBAL_CUSTO
121
124
  const handleProductCardClick = (product) => {
122
125
  trackProductCardClicked(trackWidgetInteraction, WidgetInteractionComponent.FLOATING_CHAT, product);
123
126
  };
127
+ const handleTranscriptionStarted = useCallback(() => {
128
+ trackWidgetInteraction({
129
+ eventName: EnviveMetricsEventName.WidgetInteraction,
130
+ trigger: {
131
+ widget: WidgetInteractionComponent.FLOATING_CHAT,
132
+ widget_interaction: WidgetInteractionType.VOICE_TRANSCRIPTION_STARTED
133
+ }
134
+ });
135
+ }, [trackWidgetInteraction]);
136
+ const handleTranscriptionCompleted = useCallback((transcript) => {
137
+ trackWidgetInteraction({
138
+ eventName: EnviveMetricsEventName.WidgetInteraction,
139
+ trigger: {
140
+ widget: WidgetInteractionComponent.FLOATING_CHAT,
141
+ widget_interaction: WidgetInteractionType.VOICE_TRANSCRIPTION_COMPLETED,
142
+ widget_interaction_data: { transcription: transcript }
143
+ }
144
+ });
145
+ }, [trackWidgetInteraction]);
124
146
  const header = /* @__PURE__ */ jsx(ChatHeader, {
125
147
  logoDark: chatHeaderLogoDarkSrc,
126
148
  logoLight: chatHeaderLogoLightSrc,
@@ -174,6 +196,7 @@ const FloatingChat = ({ id, className, style, testId, theme = Theme.GLOBAL_CUSTO
174
196
  theme: finalTheme,
175
197
  isScrolled: isMobile ? isFloatingLayout : false,
176
198
  onChange: setQuery,
199
+ inputClassName: "placeholder:envive-tw-text-text-secondary",
177
200
  onSubmit: () => {
178
201
  onTypedMessageSubmitted({
179
202
  query,
@@ -189,6 +212,7 @@ const FloatingChat = ({ id, className, style, testId, theme = Theme.GLOBAL_CUSTO
189
212
  handleButtonClick: (buttonText) => {
190
213
  const suggestion = suggestions.find((s) => s.content === buttonText && !s.isAnswer);
191
214
  if (suggestion) onSuggestionClicked(suggestion, ChatElementDisplayLocationV3.FLOATING_CHAT_PROMPT_BUTTON);
215
+ setListeningToSpeech("abort");
192
216
  setAnswerSuggestions([]);
193
217
  setGeneralSuggestions([]);
194
218
  handleBackToChat();
@@ -198,7 +222,10 @@ const FloatingChat = ({ id, className, style, testId, theme = Theme.GLOBAL_CUSTO
198
222
  isLoadingPromptSuggestions: isPendingResponse || isResponseStreaming || generalSuggestions.length === 0,
199
223
  hideEnviveWatermark: !showEnviveLogo,
200
224
  onFocus: handleInputQueryFocus,
201
- parentWidget: WidgetInteractionComponent.FLOATING_CHAT
225
+ parentWidget: WidgetInteractionComponent.FLOATING_CHAT,
226
+ voiceInputEnabled,
227
+ onTranscriptionStarted: handleTranscriptionStarted,
228
+ onTranscriptionCompleted: handleTranscriptionCompleted
202
229
  });
203
230
  const welcomeMessage = /* @__PURE__ */ jsx(WelcomeMessage, {
204
231
  sparkleIconColor: welcomeMessageIconColor,
@@ -241,6 +268,7 @@ const FloatingChat = ({ id, className, style, testId, theme = Theme.GLOBAL_CUSTO
241
268
  handleButtonClick: (buttonText) => {
242
269
  const suggestion = suggestions.find((s) => s.content === buttonText && s.isAnswer);
243
270
  if (suggestion) onSuggestionClicked(suggestion, ChatElementDisplayLocationV3.FLOATING_CHAT_PROMPT_BUTTON);
271
+ setListeningToSpeech("abort");
244
272
  setAnswerSuggestions([]);
245
273
  setGeneralSuggestions([]);
246
274
  },
@@ -1,11 +1,11 @@
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
3
  const require_resolveTheme = require('../../utils/resolveTheme.cjs');
4
+ const require_react = require('../../node_modules/jotai/esm/react.cjs');
4
5
  const require_functions = require('../utils/functions.cjs');
5
6
  const require_index = require('../../Message/types/index.cjs');
6
7
  const require_Message = require('../../Message/Message.cjs');
7
8
  require('../../Message/index.cjs');
8
- const require_react = require('../../node_modules/jotai/esm/react.cjs');
9
9
  const require_Form = require('../../Form/Form.cjs');
10
10
  require('../../Form/index.cjs');
11
11
  const require_trackProductCardInteraction = require('../utils/trackProductCardInteraction.cjs');
@@ -14,11 +14,11 @@ const require_OrderLookupCardCarousel = require('./OrderLookupCardCarousel.cjs')
14
14
  const require_ReviewCardsCarousel = require('./ReviewCardsCarousel.cjs');
15
15
  const require_SalesAgentProductCardsCarousel = require('./SalesAgentProductCardsCarousel.cjs');
16
16
  let react_jsx_runtime = require("react/jsx-runtime");
17
+ let __envive_ai_react_hooks_atoms_chat = require("@envive-ai/react-hooks/atoms/chat");
17
18
  let __envive_ai_react_hooks_contexts_amplitudeContext = require("@envive-ai/react-hooks/contexts/amplitudeContext");
18
19
  let __envive_ai_react_hooks_hooks_WidgetInteraction = require("@envive-ai/react-hooks/hooks/WidgetInteraction");
19
20
  let __envive_ai_react_hooks_hooks_WidgetInteraction_types = require("@envive-ai/react-hooks/hooks/WidgetInteraction/types");
20
21
  let __envive_ai_react_hooks_application_models = require("@envive-ai/react-hooks/application/models");
21
- let __envive_ai_react_hooks_atoms_chat = require("@envive-ai/react-hooks/atoms/chat");
22
22
 
23
23
  //#region src/components/FloatingChat/components/AgentMessage.tsx
24
24
  const AgentMessage = ({ theme = require_theme.Theme.GLOBAL_CUSTOM, agentName, type, messages, hideAgentName = false, isResponseStreaming = false, isPendingResponse = false, neverShowSingleProductCards = false, showVerifiedBuyer = false, onFormResponseSubmitted, parentWidget, onExploreAllResults }) => {
@@ -1,10 +1,10 @@
1
1
  import { Theme } from "../../packages/components-v3/tokens/theme/theme.js";
2
2
  import { resolveTheme } from "../../utils/resolveTheme.js";
3
+ import { useSetAtom } from "../../node_modules/jotai/esm/react.js";
3
4
  import { getCleanDocuments, getCleanOrders, getCleanProducts, getCleanReviews } from "../utils/functions.js";
4
5
  import { MessageVariant } from "../../Message/types/index.js";
5
6
  import { Message } from "../../Message/Message.js";
6
7
  import "../../Message/index.js";
7
- import { useSetAtom } from "../../node_modules/jotai/esm/react.js";
8
8
  import { Form } from "../../Form/Form.js";
9
9
  import "../../Form/index.js";
10
10
  import { trackProductCardClicked } from "../utils/trackProductCardInteraction.js";
@@ -13,11 +13,11 @@ import { OrderLookupCardCarousel } from "./OrderLookupCardCarousel.js";
13
13
  import { ReviewCardsCarousel } from "./ReviewCardsCarousel.js";
14
14
  import { SalesAgentProductCardsCarousel } from "./SalesAgentProductCardsCarousel.js";
15
15
  import { jsx } from "react/jsx-runtime";
16
+ import { handleFormSubmittedAtom } from "@envive-ai/react-hooks/atoms/chat";
16
17
  import { EnviveMetricsEventName } from "@envive-ai/react-hooks/contexts/amplitudeContext";
17
18
  import { useWidgetInteraction } from "@envive-ai/react-hooks/hooks/WidgetInteraction";
18
19
  import { WidgetInteractionType } from "@envive-ai/react-hooks/hooks/WidgetInteraction/types";
19
20
  import { MessageType } from "@envive-ai/react-hooks/application/models";
20
- import { handleFormSubmittedAtom } from "@envive-ai/react-hooks/atoms/chat";
21
21
 
22
22
  //#region src/components/FloatingChat/components/AgentMessage.tsx
23
23
  const AgentMessage = ({ theme = Theme.GLOBAL_CUSTOM, agentName, type, messages, hideAgentName = false, isResponseStreaming = false, isPendingResponse = false, neverShowSingleProductCards = false, showVerifiedBuyer = false, onFormResponseSubmitted, parentWidget, onExploreAllResults }) => {
@@ -14,9 +14,9 @@ const require_UserMessage = require('./UserMessage.cjs');
14
14
  const require_AgentMessage = require('./AgentMessage.cjs');
15
15
  const require_MessageDivider = require('./MessageDivider.cjs');
16
16
  let react = require("react");
17
+ let react_jsx_runtime = require("react/jsx-runtime");
17
18
  let classnames = require("classnames");
18
19
  classnames = require_rolldown_runtime.__toESM(classnames);
19
- let react_jsx_runtime = require("react/jsx-runtime");
20
20
  let __envive_ai_react_hooks_application_models = require("@envive-ai/react-hooks/application/models");
21
21
 
22
22
  //#region src/components/FloatingChat/components/ChatMessages.tsx
@@ -13,8 +13,8 @@ import { UserMessage } from "./UserMessage.js";
13
13
  import { AgentMessage } from "./AgentMessage.js";
14
14
  import { MessageDivider } from "./MessageDivider.js";
15
15
  import { forwardRef } from "react";
16
- import classNames from "classnames";
17
16
  import { jsx, jsxs } from "react/jsx-runtime";
17
+ import classNames from "classnames";
18
18
  import { MessageRole, MessageType } from "@envive-ai/react-hooks/application/models";
19
19
 
20
20
  //#region src/components/FloatingChat/components/ChatMessages.tsx
@@ -6,9 +6,9 @@ const require_Container = require('../../Container/Container.cjs');
6
6
  require('../../Container/index.cjs');
7
7
  const require_resolveTheme = require('../../utils/resolveTheme.cjs');
8
8
  let react = require("react");
9
+ let react_jsx_runtime = require("react/jsx-runtime");
9
10
  let classnames = require("classnames");
10
11
  classnames = require_rolldown_runtime.__toESM(classnames);
11
- let react_jsx_runtime = require("react/jsx-runtime");
12
12
 
13
13
  //#region src/components/FloatingChat/components/Layout.tsx
14
14
  const Layout = ({ id, className, style, testId, theme = require_theme.Theme.GLOBAL_CUSTOM, header, footer, welcomeMessage, chatMessages, answerSuggestions, scrollToBottomButton, disclaimer, isFloatingFooterLayout = false, debugBar, scrollContainerRef }) => {
@@ -5,8 +5,8 @@ import { Container } from "../../Container/Container.js";
5
5
  import "../../Container/index.js";
6
6
  import { resolveTheme } from "../../utils/resolveTheme.js";
7
7
  import { isValidElement } from "react";
8
- import classNames from "classnames";
9
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
+ import classNames from "classnames";
10
10
 
11
11
  //#region src/components/FloatingChat/components/Layout.tsx
12
12
  const Layout = ({ id, className, style, testId, theme = Theme.GLOBAL_CUSTOM, header, footer, welcomeMessage, chatMessages, answerSuggestions, scrollToBottomButton, disclaimer, isFloatingFooterLayout = false, debugBar, scrollContainerRef }) => {
@@ -3,9 +3,9 @@ const require_index = require('../../ChatHeader/types/index.cjs');
3
3
  const require_ChatHeader = require('../../ChatHeader/ChatHeader.cjs');
4
4
  require('../../ChatHeader/index.cjs');
5
5
  const require_ResultsGridView = require('./ResultsGridView.cjs');
6
+ let react_jsx_runtime = require("react/jsx-runtime");
6
7
  let classnames = require("classnames");
7
8
  classnames = require_rolldown_runtime.__toESM(classnames);
8
- let react_jsx_runtime = require("react/jsx-runtime");
9
9
 
10
10
  //#region src/components/FloatingChat/components/ProductResultsModal.tsx
11
11
  const overlayWrapperClasses = (0, classnames.default)("envive-tw-min-h-0 envive-tw-flex envive-tw-h-full envive-tw-w-full", "envive-tw-items-center envive-tw-justify-center envive-tw-p-4");
@@ -2,8 +2,8 @@ import { ChatHeaderOptions, ChatHeaderVariant } from "../../ChatHeader/types/ind
2
2
  import { ChatHeader } from "../../ChatHeader/ChatHeader.js";
3
3
  import "../../ChatHeader/index.js";
4
4
  import { ResultsGridView } from "./ResultsGridView.js";
5
- import classNames from "classnames";
6
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
+ import classNames from "classnames";
7
7
 
8
8
  //#region src/components/FloatingChat/components/ProductResultsModal.tsx
9
9
  const overlayWrapperClasses = classNames("envive-tw-min-h-0 envive-tw-flex envive-tw-h-full envive-tw-w-full", "envive-tw-items-center envive-tw-justify-center envive-tw-p-4");
@@ -7,9 +7,9 @@ require('../../Typography/index.cjs');
7
7
  const require_resolveTheme = require('../../utils/resolveTheme.cjs');
8
8
  const require_types = require('../../SalesAgentProductCard/types/types.cjs');
9
9
  const require_SalesAgentProductCard = require('../../SalesAgentProductCard/SalesAgentProductCard.cjs');
10
+ let react_jsx_runtime = require("react/jsx-runtime");
10
11
  let classnames = require("classnames");
11
12
  classnames = require_rolldown_runtime.__toESM(classnames);
12
- let react_jsx_runtime = require("react/jsx-runtime");
13
13
 
14
14
  //#region src/components/FloatingChat/components/ResultsGridView.tsx
15
15
  const NUM_COLUMNS_MOBILE = 2;
@@ -6,8 +6,8 @@ import "../../Typography/index.js";
6
6
  import { resolveTheme } from "../../utils/resolveTheme.js";
7
7
  import { SalesAgentProductCardVariant } from "../../SalesAgentProductCard/types/types.js";
8
8
  import { SalesAgentProductCard } from "../../SalesAgentProductCard/SalesAgentProductCard.js";
9
- import classNames from "classnames";
10
9
  import { jsx, jsxs } from "react/jsx-runtime";
10
+ import classNames from "classnames";
11
11
 
12
12
  //#region src/components/FloatingChat/components/ResultsGridView.tsx
13
13
  const NUM_COLUMNS_MOBILE = 2;
@@ -7,9 +7,9 @@ require('../../Typography/index.cjs');
7
7
  const require_functions = require('../utils/functions.cjs');
8
8
  let react = require("react");
9
9
  react = require_rolldown_runtime.__toESM(react);
10
+ let react_jsx_runtime = require("react/jsx-runtime");
10
11
  let classnames = require("classnames");
11
12
  classnames = require_rolldown_runtime.__toESM(classnames);
12
- let react_jsx_runtime = require("react/jsx-runtime");
13
13
 
14
14
  //#region src/components/FloatingChat/components/SalesAgentBadgeContent.tsx
15
15
  const SalesAgentBadgeContent = ({ totalProducts, displayLimit = require_functions.MOST_RELEVANT_DISPLAY_LIMIT, onExploreAllResults }) => {
@@ -5,8 +5,8 @@ import { Typography } from "../../Typography/Typography.js";
5
5
  import "../../Typography/index.js";
6
6
  import { MOST_RELEVANT_DISPLAY_LIMIT } from "../utils/functions.js";
7
7
  import React from "react";
8
- import classNames from "classnames";
9
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
+ import classNames from "classnames";
10
10
 
11
11
  //#region src/components/FloatingChat/components/SalesAgentBadgeContent.tsx
12
12
  const SalesAgentBadgeContent = ({ totalProducts, displayLimit = MOST_RELEVANT_DISPLAY_LIMIT, onExploreAllResults }) => {
@@ -19,7 +19,7 @@ const SlideChatContent = ({ isResultsView, isResultsViewRef, resultsViewData, on
19
19
  gridCols: resultsGridColumns
20
20
  });
21
21
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
22
- className: "envive-tw-relative envive-tw-min-h-[200px] envive-tw-w-full envive-tw-overflow-hidden",
22
+ className: "envive-tw-relative envive-tw-w-full envive-tw-overflow-hidden",
23
23
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(framer_motion.AnimatePresence, {
24
24
  initial: false,
25
25
  mode: "wait",
@@ -18,7 +18,7 @@ const SlideChatContent = ({ isResultsView, isResultsViewRef, resultsViewData, on
18
18
  gridCols: resultsGridColumns
19
19
  });
20
20
  return /* @__PURE__ */ jsx("div", {
21
- className: "envive-tw-relative envive-tw-min-h-[200px] envive-tw-w-full envive-tw-overflow-hidden",
21
+ className: "envive-tw-relative envive-tw-w-full envive-tw-overflow-hidden",
22
22
  children: /* @__PURE__ */ jsx(AnimatePresence, {
23
23
  initial: false,
24
24
  mode: "wait",
@@ -6,11 +6,9 @@ const useChatSuggestions = ({ suggestions, isPendingResponse, isResponseStreamin
6
6
  const [answerSuggestions, setAnswerSuggestions] = (0, react.useState)([]);
7
7
  const [generalSuggestions, setGeneralSuggestions] = (0, react.useState)([]);
8
8
  const showAnswerSuggestions = answerSuggestions.length > 0 && !isPendingResponse && !isResponseStreaming;
9
- (0, react.useEffect)(() => {
10
- if (suggestions.length > 0) {
11
- setAnswerSuggestions(suggestions.filter((suggestion) => suggestion.isAnswer).map((suggestion) => suggestion.content));
12
- setGeneralSuggestions(suggestions.filter((suggestion) => !suggestion.isAnswer).map((suggestion) => suggestion.content));
13
- }
9
+ (0, react.useLayoutEffect)(() => {
10
+ setAnswerSuggestions(suggestions.filter((suggestion) => suggestion.isAnswer).map((suggestion) => suggestion.content));
11
+ setGeneralSuggestions(suggestions.filter((suggestion) => !suggestion.isAnswer).map((suggestion) => suggestion.content));
14
12
  }, [suggestions]);
15
13
  return {
16
14
  answerSuggestions,