@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
@@ -1,15 +1,13 @@
1
- import { useEffect, useState } from "react";
1
+ import { useLayoutEffect, useState } from "react";
2
2
 
3
3
  //#region src/components/FloatingChat/hooks/useChatSuggestions.ts
4
4
  const useChatSuggestions = ({ suggestions, isPendingResponse, isResponseStreaming }) => {
5
5
  const [answerSuggestions, setAnswerSuggestions] = useState([]);
6
6
  const [generalSuggestions, setGeneralSuggestions] = useState([]);
7
7
  const showAnswerSuggestions = answerSuggestions.length > 0 && !isPendingResponse && !isResponseStreaming;
8
- useEffect(() => {
9
- if (suggestions.length > 0) {
10
- setAnswerSuggestions(suggestions.filter((suggestion) => suggestion.isAnswer).map((suggestion) => suggestion.content));
11
- setGeneralSuggestions(suggestions.filter((suggestion) => !suggestion.isAnswer).map((suggestion) => suggestion.content));
12
- }
8
+ useLayoutEffect(() => {
9
+ setAnswerSuggestions(suggestions.filter((suggestion) => suggestion.isAnswer).map((suggestion) => suggestion.content));
10
+ setGeneralSuggestions(suggestions.filter((suggestion) => !suggestion.isAnswer).map((suggestion) => suggestion.content));
13
11
  }, [suggestions]);
14
12
  return {
15
13
  answerSuggestions,
@@ -5,9 +5,9 @@ const require_buildSubmitButtonElement = require('./utils/buildSubmitButtonEleme
5
5
  const require_handleFormsSubmit = require('./utils/handleFormsSubmit.cjs');
6
6
  const require_mapTextFields = require('./utils/mapTextFields.cjs');
7
7
  let react = require("react");
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/Form/Form.tsx
13
13
  /**
package/dist/Form/Form.js CHANGED
@@ -4,8 +4,8 @@ import { buildSubmitButtonElement } from "./utils/buildSubmitButtonElement.js";
4
4
  import { handleFormsSubmit } from "./utils/handleFormsSubmit.js";
5
5
  import { mapTextFields } from "./utils/mapTextFields.js";
6
6
  import { useState } from "react";
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/Form/Form.tsx
11
11
  /**
@@ -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/Form/components/Layout.tsx
9
9
  const Layout = ({ textFields, submitButton, onSubmit, ariaLabel, id, testId, className, style }) => {
@@ -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/Form/components/Layout.tsx
7
7
  const Layout = ({ textFields, submitButton, onSubmit, ariaLabel, id, testId, className, style }) => {
@@ -1,8 +1,8 @@
1
1
  const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
2
  const require_useGetButtonProperties = require('../hooks/useGetButtonProperties.cjs');
3
+ let react_jsx_runtime = require("react/jsx-runtime");
3
4
  let classnames = require("classnames");
4
5
  classnames = require_rolldown_runtime.__toESM(classnames);
5
- let react_jsx_runtime = require("react/jsx-runtime");
6
6
 
7
7
  //#region src/components/Form/components/SubmitButtonItem.tsx
8
8
  const SubmitButtonItem = ({ label, isDisabled = false, ariaLabel, id, testId, className, style }) => {
@@ -1,6 +1,6 @@
1
1
  import { useGetButtonProperties } from "../hooks/useGetButtonProperties.js";
2
- import classNames from "classnames";
3
2
  import { jsx } from "react/jsx-runtime";
3
+ import classNames from "classnames";
4
4
 
5
5
  //#region src/components/Form/components/SubmitButtonItem.tsx
6
6
  const SubmitButtonItem = ({ label, isDisabled = false, ariaLabel, id, testId, className, style }) => {
@@ -1,8 +1,8 @@
1
1
  const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
2
  const require_useGetTextFieldProperties = require('../hooks/useGetTextFieldProperties.cjs');
3
+ let react_jsx_runtime = require("react/jsx-runtime");
3
4
  let classnames = require("classnames");
4
5
  classnames = require_rolldown_runtime.__toESM(classnames);
5
- let react_jsx_runtime = require("react/jsx-runtime");
6
6
 
7
7
  //#region src/components/Form/components/TextFieldItem.tsx
8
8
  const TextFieldItem = ({ label, value, onChange, type, error, ariaLabel, id, testId, className, style }) => {
@@ -1,6 +1,6 @@
1
1
  import { useGetTextFieldProperties } from "../hooks/useGetTextFieldProperties.js";
2
- import classNames from "classnames";
3
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
+ import classNames from "classnames";
4
4
 
5
5
  //#region src/components/Form/components/TextFieldItem.tsx
6
6
  const TextFieldItem = ({ label, value, onChange, type, error, ariaLabel, id, testId, className, style }) => {
@@ -2,6 +2,7 @@ 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
4
  require('../Tokens/index.cjs');
5
+ const require_react = require('../node_modules/jotai/esm/react.cjs');
5
6
  const require_usePromptCarouselAnalytics = require('../PromptCarousel/hooks/usePromptCarouselAnalytics.cjs');
6
7
  const require_PromptButton_types_index = require('../PromptButton/types/index.cjs');
7
8
  require('../PromptButton/index.cjs');
@@ -27,6 +28,7 @@ const require_index$1 = require('./components/index.cjs');
27
28
  const require_useGetMessagesStyles = require('./hooks/useGetMessagesStyles.cjs');
28
29
  let react = require("react");
29
30
  let react_jsx_runtime = require("react/jsx-runtime");
31
+ let __envive_ai_react_hooks_atoms_chat = require("@envive-ai/react-hooks/atoms/chat");
30
32
  let __envive_ai_react_hooks_contexts_amplitudeContext = require("@envive-ai/react-hooks/contexts/amplitudeContext");
31
33
  let __envive_ai_react_hooks_hooks_WidgetInteraction = require("@envive-ai/react-hooks/hooks/WidgetInteraction");
32
34
  let __envive_ai_react_hooks_hooks_WidgetInteraction_types = require("@envive-ai/react-hooks/hooks/WidgetInteraction/types");
@@ -34,7 +36,7 @@ let __envive_ai_react_hooks_application_models = require("@envive-ai/react-hooks
34
36
  let __envive_ai_react_hooks_contexts_salesAgentContext = require("@envive-ai/react-hooks/contexts/salesAgentContext");
35
37
 
36
38
  //#region src/components/FullPageSalesAgent/FullPageSalesAgent.tsx
37
- const FullPageSalesAgent = ({ theme = require_theme.Theme.GLOBAL_CUSTOM, floatingChatConfig, lookAndFeelConfig, hardcopyContent, headerContainer, autoHeight }) => {
39
+ const FullPageSalesAgent = ({ theme = require_theme.Theme.GLOBAL_CUSTOM, floatingChatConfig, lookAndFeelConfig, hardcopyContent, headerContainer, autoHeight, voiceInputEnabled }) => {
38
40
  const resolvedTheme = require_resolveTheme.resolveTheme(theme);
39
41
  const salesAgentData = (0, __envive_ai_react_hooks_contexts_salesAgentContext.useSalesAgent)(__envive_ai_react_hooks_hooks_WidgetInteraction_types.WidgetInteractionComponent.FULL_PAGE_SALES_AGENT);
40
42
  const [query, setQuery] = (0, react.useState)("");
@@ -45,6 +47,7 @@ const FullPageSalesAgent = ({ theme = require_theme.Theme.GLOBAL_CUSTOM, floatin
45
47
  const { isMobile } = require_useIsMobile.useIsMobile();
46
48
  const { trackWidgetInteraction } = (0, __envive_ai_react_hooks_hooks_WidgetInteraction.useWidgetInteraction)();
47
49
  const { onDrag, onHover, onMouseDown, onMouseUp, onTouchStart, onTouchEnd } = require_usePromptCarouselAnalytics.usePromptCarouselAnalytics(__envive_ai_react_hooks_hooks_WidgetInteraction_types.WidgetInteractionComponent.FULL_PAGE_SALES_AGENT, (text) => text);
50
+ const setListeningToSpeech = require_react.useSetAtom(__envive_ai_react_hooks_atoms_chat.listeningToSpeechAtom);
48
51
  const { welcomeMessageIconColor, ignoreFirstModelResponse, neverShowSingleProductCards, showVerifiedBuyer, showEnviveLogo, userQueryInputEnabled = true } = floatingChatConfig;
49
52
  const { agentName } = lookAndFeelConfig;
50
53
  const { welcomeMessageTitle, welcomeMessageText, chatFooterTextFieldPlaceholderText, disclaimerText } = hardcopyContent?.values ?? {};
@@ -89,6 +92,25 @@ const FullPageSalesAgent = ({ theme = require_theme.Theme.GLOBAL_CUSTOM, floatin
89
92
  const handleProductCardClick = (product) => {
90
93
  require_trackProductCardInteraction.trackProductCardClicked(trackWidgetInteraction, __envive_ai_react_hooks_hooks_WidgetInteraction_types.WidgetInteractionComponent.FULL_PAGE_SALES_AGENT, product);
91
94
  };
95
+ const handleTranscriptionStarted = (0, react.useCallback)(() => {
96
+ trackWidgetInteraction({
97
+ eventName: __envive_ai_react_hooks_contexts_amplitudeContext.EnviveMetricsEventName.WidgetInteraction,
98
+ trigger: {
99
+ widget: __envive_ai_react_hooks_hooks_WidgetInteraction_types.WidgetInteractionComponent.FULL_PAGE_SALES_AGENT,
100
+ widget_interaction: __envive_ai_react_hooks_hooks_WidgetInteraction_types.WidgetInteractionType.VOICE_TRANSCRIPTION_STARTED
101
+ }
102
+ });
103
+ }, [trackWidgetInteraction]);
104
+ const handleTranscriptionCompleted = (0, react.useCallback)((transcript) => {
105
+ trackWidgetInteraction({
106
+ eventName: __envive_ai_react_hooks_contexts_amplitudeContext.EnviveMetricsEventName.WidgetInteraction,
107
+ trigger: {
108
+ widget: __envive_ai_react_hooks_hooks_WidgetInteraction_types.WidgetInteractionComponent.FULL_PAGE_SALES_AGENT,
109
+ widget_interaction: __envive_ai_react_hooks_hooks_WidgetInteraction_types.WidgetInteractionType.VOICE_TRANSCRIPTION_COMPLETED,
110
+ widget_interaction_data: { transcription: transcript }
111
+ }
112
+ });
113
+ }, [trackWidgetInteraction]);
92
114
  const welcomeMessage = /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
93
115
  className: messageContainerClasses,
94
116
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_WelcomeMessage.WelcomeMessage, {
@@ -112,6 +134,7 @@ const FullPageSalesAgent = ({ theme = require_theme.Theme.GLOBAL_CUSTOM, floatin
112
134
  handleButtonClick: (buttonText) => {
113
135
  const suggestion = suggestions.find((s) => s.content === buttonText && !s.isAnswer);
114
136
  if (suggestion) onSuggestionClicked(suggestion, __envive_ai_react_hooks_application_models.ChatElementDisplayLocationV3.FLOATING_CHAT_PROMPT_BUTTON);
137
+ setListeningToSpeech("abort");
115
138
  setAnswerSuggestions([]);
116
139
  setGeneralSuggestions([]);
117
140
  handleBackToChat();
@@ -128,7 +151,10 @@ const FullPageSalesAgent = ({ theme = require_theme.Theme.GLOBAL_CUSTOM, floatin
128
151
  handleBackToChat();
129
152
  },
130
153
  onFocus: handleInputQueryFocus,
131
- parentWidget: __envive_ai_react_hooks_hooks_WidgetInteraction_types.WidgetInteractionComponent.FULL_PAGE_SALES_AGENT
154
+ parentWidget: __envive_ai_react_hooks_hooks_WidgetInteraction_types.WidgetInteractionComponent.FULL_PAGE_SALES_AGENT,
155
+ voiceInputEnabled,
156
+ onTranscriptionStarted: handleTranscriptionStarted,
157
+ onTranscriptionCompleted: handleTranscriptionCompleted
132
158
  });
133
159
  const chatMessages = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_index.FloatingChatComponents.ChatMessages, {
134
160
  className: messageClasses,
@@ -167,6 +193,7 @@ const FullPageSalesAgent = ({ theme = require_theme.Theme.GLOBAL_CUSTOM, floatin
167
193
  handleButtonClick: (buttonText) => {
168
194
  const suggestion = suggestions.find((s) => s.content === buttonText && s.isAnswer);
169
195
  if (suggestion) onSuggestionClicked(suggestion, __envive_ai_react_hooks_application_models.ChatElementDisplayLocationV3.FLOATING_CHAT_PROMPT_BUTTON);
196
+ setListeningToSpeech("abort");
170
197
  setAnswerSuggestions([]);
171
198
  setGeneralSuggestions([]);
172
199
  },
@@ -1,5 +1,5 @@
1
1
  import { Theme } from "../tokens/theme/theme.cjs";
2
- import * as react_jsx_runtime30 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime24 from "react/jsx-runtime";
3
3
  import { FloatingChatConfig, LookAndFeelConfig } from "@envive-ai/react-hooks/contexts/typesV3";
4
4
  import { HardcopyResponse } from "@envive-ai/react-hooks/contexts/hardcopyContext";
5
5
 
@@ -11,6 +11,7 @@ interface FullPageSalesAgentProps {
11
11
  hardcopyContent: HardcopyResponse;
12
12
  headerContainer?: string;
13
13
  autoHeight?: boolean;
14
+ voiceInputEnabled?: boolean;
14
15
  }
15
16
  declare const FullPageSalesAgent: ({
16
17
  theme,
@@ -18,7 +19,8 @@ declare const FullPageSalesAgent: ({
18
19
  lookAndFeelConfig,
19
20
  hardcopyContent,
20
21
  headerContainer,
21
- autoHeight
22
- }: FullPageSalesAgentProps) => react_jsx_runtime30.JSX.Element;
22
+ autoHeight,
23
+ voiceInputEnabled
24
+ }: FullPageSalesAgentProps) => react_jsx_runtime24.JSX.Element;
23
25
  //#endregion
24
26
  export { FullPageSalesAgent };
@@ -1,5 +1,5 @@
1
1
  import { Theme } from "../packages/components-v3/tokens/theme/theme.js";
2
- import * as react_jsx_runtime21 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime6 from "react/jsx-runtime";
3
3
  import { FloatingChatConfig, LookAndFeelConfig } from "@envive-ai/react-hooks/contexts/typesV3";
4
4
  import { HardcopyResponse } from "@envive-ai/react-hooks/contexts/hardcopyContext";
5
5
 
@@ -11,6 +11,7 @@ interface FullPageSalesAgentProps {
11
11
  hardcopyContent: HardcopyResponse;
12
12
  headerContainer?: string;
13
13
  autoHeight?: boolean;
14
+ voiceInputEnabled?: boolean;
14
15
  }
15
16
  declare const FullPageSalesAgent: ({
16
17
  theme,
@@ -18,7 +19,8 @@ declare const FullPageSalesAgent: ({
18
19
  lookAndFeelConfig,
19
20
  hardcopyContent,
20
21
  headerContainer,
21
- autoHeight
22
- }: FullPageSalesAgentProps) => react_jsx_runtime21.JSX.Element;
22
+ autoHeight,
23
+ voiceInputEnabled
24
+ }: FullPageSalesAgentProps) => react_jsx_runtime6.JSX.Element;
23
25
  //#endregion
24
26
  export { FullPageSalesAgent };
@@ -1,6 +1,7 @@
1
1
  import { Theme } from "../packages/components-v3/tokens/theme/theme.js";
2
2
  import { resolveTheme } from "../utils/resolveTheme.js";
3
3
  import "../Tokens/index.js";
4
+ import { useSetAtom } from "../node_modules/jotai/esm/react.js";
4
5
  import { usePromptCarouselAnalytics } from "../PromptCarousel/hooks/usePromptCarouselAnalytics.js";
5
6
  import { PromptButtonVariant } from "../PromptButton/types/index.js";
6
7
  import "../PromptButton/index.js";
@@ -24,8 +25,9 @@ import { useGetFooterStyles } from "./hooks/useGetFooterStyles.js";
24
25
  import { useGetScrollContentStyles } from "./hooks/useGetScrollContentStyles.js";
25
26
  import { FullPageSAComponents } from "./components/index.js";
26
27
  import { useGetMessagesStyles } from "./hooks/useGetMessagesStyles.js";
27
- import { useRef, useState } from "react";
28
+ import { useCallback, useRef, useState } from "react";
28
29
  import { jsx } from "react/jsx-runtime";
30
+ import { listeningToSpeechAtom } from "@envive-ai/react-hooks/atoms/chat";
29
31
  import { EnviveMetricsEventName } from "@envive-ai/react-hooks/contexts/amplitudeContext";
30
32
  import { useWidgetInteraction } from "@envive-ai/react-hooks/hooks/WidgetInteraction";
31
33
  import { WidgetInteractionComponent, WidgetInteractionType } from "@envive-ai/react-hooks/hooks/WidgetInteraction/types";
@@ -33,7 +35,7 @@ import { ChatElementDisplayLocationV3 } from "@envive-ai/react-hooks/application
33
35
  import { useSalesAgent } from "@envive-ai/react-hooks/contexts/salesAgentContext";
34
36
 
35
37
  //#region src/components/FullPageSalesAgent/FullPageSalesAgent.tsx
36
- const FullPageSalesAgent = ({ theme = Theme.GLOBAL_CUSTOM, floatingChatConfig, lookAndFeelConfig, hardcopyContent, headerContainer, autoHeight }) => {
38
+ const FullPageSalesAgent = ({ theme = Theme.GLOBAL_CUSTOM, floatingChatConfig, lookAndFeelConfig, hardcopyContent, headerContainer, autoHeight, voiceInputEnabled }) => {
37
39
  const resolvedTheme = resolveTheme(theme);
38
40
  const salesAgentData = useSalesAgent(WidgetInteractionComponent.FULL_PAGE_SALES_AGENT);
39
41
  const [query, setQuery] = useState("");
@@ -44,6 +46,7 @@ const FullPageSalesAgent = ({ theme = Theme.GLOBAL_CUSTOM, floatingChatConfig, l
44
46
  const { isMobile } = useIsMobile();
45
47
  const { trackWidgetInteraction } = useWidgetInteraction();
46
48
  const { onDrag, onHover, onMouseDown, onMouseUp, onTouchStart, onTouchEnd } = usePromptCarouselAnalytics(WidgetInteractionComponent.FULL_PAGE_SALES_AGENT, (text) => text);
49
+ const setListeningToSpeech = useSetAtom(listeningToSpeechAtom);
47
50
  const { welcomeMessageIconColor, ignoreFirstModelResponse, neverShowSingleProductCards, showVerifiedBuyer, showEnviveLogo, userQueryInputEnabled = true } = floatingChatConfig;
48
51
  const { agentName } = lookAndFeelConfig;
49
52
  const { welcomeMessageTitle, welcomeMessageText, chatFooterTextFieldPlaceholderText, disclaimerText } = hardcopyContent?.values ?? {};
@@ -88,6 +91,25 @@ const FullPageSalesAgent = ({ theme = Theme.GLOBAL_CUSTOM, floatingChatConfig, l
88
91
  const handleProductCardClick = (product) => {
89
92
  trackProductCardClicked(trackWidgetInteraction, WidgetInteractionComponent.FULL_PAGE_SALES_AGENT, product);
90
93
  };
94
+ const handleTranscriptionStarted = useCallback(() => {
95
+ trackWidgetInteraction({
96
+ eventName: EnviveMetricsEventName.WidgetInteraction,
97
+ trigger: {
98
+ widget: WidgetInteractionComponent.FULL_PAGE_SALES_AGENT,
99
+ widget_interaction: WidgetInteractionType.VOICE_TRANSCRIPTION_STARTED
100
+ }
101
+ });
102
+ }, [trackWidgetInteraction]);
103
+ const handleTranscriptionCompleted = useCallback((transcript) => {
104
+ trackWidgetInteraction({
105
+ eventName: EnviveMetricsEventName.WidgetInteraction,
106
+ trigger: {
107
+ widget: WidgetInteractionComponent.FULL_PAGE_SALES_AGENT,
108
+ widget_interaction: WidgetInteractionType.VOICE_TRANSCRIPTION_COMPLETED,
109
+ widget_interaction_data: { transcription: transcript }
110
+ }
111
+ });
112
+ }, [trackWidgetInteraction]);
91
113
  const welcomeMessage = /* @__PURE__ */ jsx("div", {
92
114
  className: messageContainerClasses,
93
115
  children: /* @__PURE__ */ jsx(WelcomeMessage, {
@@ -111,6 +133,7 @@ const FullPageSalesAgent = ({ theme = Theme.GLOBAL_CUSTOM, floatingChatConfig, l
111
133
  handleButtonClick: (buttonText) => {
112
134
  const suggestion = suggestions.find((s) => s.content === buttonText && !s.isAnswer);
113
135
  if (suggestion) onSuggestionClicked(suggestion, ChatElementDisplayLocationV3.FLOATING_CHAT_PROMPT_BUTTON);
136
+ setListeningToSpeech("abort");
114
137
  setAnswerSuggestions([]);
115
138
  setGeneralSuggestions([]);
116
139
  handleBackToChat();
@@ -127,7 +150,10 @@ const FullPageSalesAgent = ({ theme = Theme.GLOBAL_CUSTOM, floatingChatConfig, l
127
150
  handleBackToChat();
128
151
  },
129
152
  onFocus: handleInputQueryFocus,
130
- parentWidget: WidgetInteractionComponent.FULL_PAGE_SALES_AGENT
153
+ parentWidget: WidgetInteractionComponent.FULL_PAGE_SALES_AGENT,
154
+ voiceInputEnabled,
155
+ onTranscriptionStarted: handleTranscriptionStarted,
156
+ onTranscriptionCompleted: handleTranscriptionCompleted
131
157
  });
132
158
  const chatMessages = /* @__PURE__ */ jsx(FloatingChatComponents.ChatMessages, {
133
159
  className: messageClasses,
@@ -166,6 +192,7 @@ const FullPageSalesAgent = ({ theme = Theme.GLOBAL_CUSTOM, floatingChatConfig, l
166
192
  handleButtonClick: (buttonText) => {
167
193
  const suggestion = suggestions.find((s) => s.content === buttonText && s.isAnswer);
168
194
  if (suggestion) onSuggestionClicked(suggestion, ChatElementDisplayLocationV3.FLOATING_CHAT_PROMPT_BUTTON);
195
+ setListeningToSpeech("abort");
169
196
  setAnswerSuggestions([]);
170
197
  setGeneralSuggestions([]);
171
198
  },
@@ -7,9 +7,9 @@ const require_useIsMobile = require('../hooks/useIsMobile.cjs');
7
7
  const require_useGetFooterStyles = require('../hooks/useGetFooterStyles.cjs');
8
8
  const require_useGetScrollContentStyles = require('../hooks/useGetScrollContentStyles.cjs');
9
9
  let react = require("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/FullPageSalesAgent/components/Layout.tsx
15
15
  const Layout = ({ theme, welcomeMessage, footer, chatMessages, answerSuggestions, scrollToBottomButton, disclaimer, headerContainer, autoHeight, scrollContainerRef }) => {
@@ -6,8 +6,8 @@ import { useIsMobile } from "../hooks/useIsMobile.js";
6
6
  import { useGetFooterStyles } from "../hooks/useGetFooterStyles.js";
7
7
  import { useGetScrollContentStyles } from "../hooks/useGetScrollContentStyles.js";
8
8
  import { isValidElement } from "react";
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/FullPageSalesAgent/components/Layout.tsx
13
13
  const Layout = ({ theme, welcomeMessage, footer, chatMessages, answerSuggestions, scrollToBottomButton, disclaimer, headerContainer, autoHeight, scrollContainerRef }) => {
@@ -7,9 +7,9 @@ const require_useGetRoundedProperties = require('./hooks/useGetRoundedProperties
7
7
  const require_useGetAccessibilityProperties = require('./hooks/useGetAccessibilityProperties.cjs');
8
8
  const require_useGetWidthProperties = require('./hooks/useGetWidthProperties.cjs');
9
9
  const require_useHandleImageLoading = require('./hooks/useHandleImageLoading.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/Image/Image.tsx
15
15
  /**
@@ -1,5 +1,5 @@
1
1
  import { ImageProps } from "./types/index.cjs";
2
- import * as react_jsx_runtime27 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime20 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/Image/Image.d.ts
5
5
 
@@ -25,6 +25,6 @@ declare const Image: ({
25
25
  role,
26
26
  "aria-hidden": ariaHidden,
27
27
  ...rest
28
- }: ImageProps) => react_jsx_runtime27.JSX.Element;
28
+ }: ImageProps) => react_jsx_runtime20.JSX.Element;
29
29
  //#endregion
30
30
  export { Image };
@@ -1,5 +1,5 @@
1
1
  import { ImageProps } from "./types/index.js";
2
- import * as react_jsx_runtime17 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime15 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/Image/Image.d.ts
5
5
 
@@ -25,6 +25,6 @@ declare const Image: ({
25
25
  role,
26
26
  "aria-hidden": ariaHidden,
27
27
  ...rest
28
- }: ImageProps) => react_jsx_runtime17.JSX.Element;
28
+ }: ImageProps) => react_jsx_runtime15.JSX.Element;
29
29
  //#endregion
30
30
  export { Image };
@@ -6,8 +6,8 @@ import { useGetRoundedProperties } from "./hooks/useGetRoundedProperties.js";
6
6
  import { useGetAccessibilityProperties } from "./hooks/useGetAccessibilityProperties.js";
7
7
  import { useGetWidthProperties } from "./hooks/useGetWidthProperties.js";
8
8
  import { useHandleImageLoading } from "./hooks/useHandleImageLoading.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/Image/Image.tsx
13
13
  /**
@@ -1,5 +1,5 @@
1
1
  import { ImageGalleryProps } from "./types/types.cjs";
2
- import * as react_jsx_runtime9 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime23 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/ImageGallery/ImageGallery.d.ts
5
5
 
@@ -40,6 +40,6 @@ declare const ImageGallery: ({
40
40
  "aria-describedby": ariaDescribedBy,
41
41
  role,
42
42
  "aria-hidden": ariaHidden
43
- }: ImageGalleryProps) => react_jsx_runtime9.JSX.Element;
43
+ }: ImageGalleryProps) => react_jsx_runtime23.JSX.Element;
44
44
  //#endregion
45
45
  export { ImageGallery };
@@ -1,5 +1,5 @@
1
1
  import { ImageGalleryProps } from "./types/types.js";
2
- import * as react_jsx_runtime24 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime26 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/ImageGallery/ImageGallery.d.ts
5
5
 
@@ -40,6 +40,6 @@ declare const ImageGallery: ({
40
40
  "aria-describedby": ariaDescribedBy,
41
41
  role,
42
42
  "aria-hidden": ariaHidden
43
- }: ImageGalleryProps) => react_jsx_runtime24.JSX.Element;
43
+ }: ImageGalleryProps) => react_jsx_runtime26.JSX.Element;
44
44
  //#endregion
45
45
  export { ImageGallery };
@@ -9,9 +9,9 @@ const require_useValidateImages = require('../hooks/useValidateImages.cjs');
9
9
  const require_functions = require('../utils/functions.cjs');
10
10
  const require_OverlappedLayout = require('./OverlappedLayout.cjs');
11
11
  const require_NormalLayout = require('./NormalLayout.cjs');
12
+ let react_jsx_runtime = require("react/jsx-runtime");
12
13
  let classnames = require("classnames");
13
14
  classnames = require_rolldown_runtime.__toESM(classnames);
14
- let react_jsx_runtime = require("react/jsx-runtime");
15
15
 
16
16
  //#region src/components/ImageGallery/components/Layout.tsx
17
17
  const Layout = ({ id, testId, className, style, images, layout, theme = require_theme.Theme.GLOBAL_CUSTOM, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, role, "aria-hidden": ariaHidden }) => {
@@ -8,8 +8,8 @@ import { useValidateImages } from "../hooks/useValidateImages.js";
8
8
  import { getIsTwoSideStandardOnMobile } from "../utils/functions.js";
9
9
  import { OverlappedLayout } from "./OverlappedLayout.js";
10
10
  import { NormalLayout } from "./NormalLayout.js";
11
- import classNames from "classnames";
12
11
  import { jsx, jsxs } from "react/jsx-runtime";
12
+ import classNames from "classnames";
13
13
 
14
14
  //#region src/components/ImageGallery/components/Layout.tsx
15
15
  const Layout = ({ id, testId, className, style, images, layout, theme = Theme.GLOBAL_CUSTOM, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, role, "aria-hidden": ariaHidden }) => {
@@ -1,5 +1,5 @@
1
- const require_theme = require('../../packages/components-v3/tokens/theme/theme.cjs');
2
1
  const require_utils = require('../../DesignTokens/components/utils.cjs');
2
+ const require_theme = require('../../packages/components-v3/tokens/theme/theme.cjs');
3
3
  const require_types = require('../types/types.cjs');
4
4
 
5
5
  //#region src/components/ImageGallery/utils/functions.ts
@@ -1,5 +1,5 @@
1
- import { Theme, ThemeCSSVar } from "../../packages/components-v3/tokens/theme/theme.js";
2
1
  import { getComputedCSSVariable } from "../../DesignTokens/components/utils.js";
2
+ import { Theme, ThemeCSSVar } from "../../packages/components-v3/tokens/theme/theme.js";
3
3
  import { ImageGalleryLayout } from "../types/types.js";
4
4
 
5
5
  //#region src/components/ImageGallery/utils/functions.ts
@@ -1,5 +1,5 @@
1
1
  import { MarkdownProcessorProps } from "./types/types.cjs";
2
- import * as react_jsx_runtime12 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime22 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/MarkdownProcessor/MarkdownProcessor.d.ts
5
5
  declare const MarkdownProcessor: ({
@@ -8,6 +8,6 @@ declare const MarkdownProcessor: ({
8
8
  textColor,
9
9
  textVariant,
10
10
  onLinkClick
11
- }: MarkdownProcessorProps) => react_jsx_runtime12.JSX.Element;
11
+ }: MarkdownProcessorProps) => react_jsx_runtime22.JSX.Element;
12
12
  //#endregion
13
13
  export { MarkdownProcessor };
@@ -1,8 +1,8 @@
1
1
  const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
2
  const require_useVariantStyleProperties = require('../hooks/useVariantStyleProperties.cjs');
3
+ let react_jsx_runtime = require("react/jsx-runtime");
3
4
  let classnames = require("classnames");
4
5
  classnames = require_rolldown_runtime.__toESM(classnames);
5
- let react_jsx_runtime = require("react/jsx-runtime");
6
6
 
7
7
  //#region src/components/Message/components/Layout.tsx
8
8
  /**
@@ -1,6 +1,6 @@
1
1
  import { useVariantStyleProperties } from "../hooks/useVariantStyleProperties.js";
2
- import classNames from "classnames";
3
2
  import { jsx } from "react/jsx-runtime";
3
+ import classNames from "classnames";
4
4
 
5
5
  //#region src/components/Message/components/Layout.tsx
6
6
  /**
@@ -10,9 +10,9 @@ const require_getProductImagesToDisplay = require('./utils/getProductImagesToDis
10
10
  const require_calculateMoreProductsCount = require('./utils/calculateMoreProductsCount.cjs');
11
11
  const require_formatOrderNumber = require('./utils/formatOrderNumber.cjs');
12
12
  const require_formatOrderDate = require('./utils/formatOrderDate.cjs');
13
+ let react_jsx_runtime = require("react/jsx-runtime");
13
14
  let classnames = require("classnames");
14
15
  classnames = require_rolldown_runtime.__toESM(classnames);
15
- let react_jsx_runtime = require("react/jsx-runtime");
16
16
 
17
17
  //#region src/components/OrderLookupCard/OrderLookupCard.tsx
18
18
  /**
@@ -9,8 +9,8 @@ import { getProductImagesToDisplay } from "./utils/getProductImagesToDisplay.js"
9
9
  import { calculateMoreProductsCount } from "./utils/calculateMoreProductsCount.js";
10
10
  import { formatOrderNumber } from "./utils/formatOrderNumber.js";
11
11
  import { formatOrderDate } from "./utils/formatOrderDate.js";
12
- import classNames from "classnames";
13
12
  import { jsx, jsxs } from "react/jsx-runtime";
13
+ import classNames from "classnames";
14
14
 
15
15
  //#region src/components/OrderLookupCard/OrderLookupCard.tsx
16
16
  /**
@@ -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/OrderLookupCard/components/Layout.tsx
9
9
  const Layout = ({ productImagesGrid, content, id, testId, className, style, 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/OrderLookupCard/components/Layout.tsx
7
7
  const Layout = ({ productImagesGrid, content, id, testId, className, style, ariaLabel }) => {
@@ -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_useGetImageBorderRadiusProperties = require('../hooks/useGetImageBorderRadiusProperties.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/OrderLookupCard/components/MoreProductsOverlay.tsx
13
13
  const MoreProductsOverlay = ({ count, theme, label, className, style, id, testId, ariaLabel }) => {
@@ -4,8 +4,8 @@ import { TypographyColor, TypographyVariant } from "../../Typography/types/index
4
4
  import { Typography } from "../../Typography/Typography.js";
5
5
  import "../../Typography/index.js";
6
6
  import { useGetImageBorderRadiusProperties } from "../hooks/useGetImageBorderRadiusProperties.js";
7
- import classNames from "classnames";
8
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
+ import classNames from "classnames";
9
9
 
10
10
  //#region src/components/OrderLookupCard/components/MoreProductsOverlay.tsx
11
11
  const MoreProductsOverlay = ({ count, theme, label, className, style, id, testId, ariaLabel }) => {
@@ -1,9 +1,9 @@
1
1
  const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
2
  const require_ProductImageItem = require('./ProductImageItem.cjs');
3
3
  const require_useGetImageGridPositionProperties = require('../hooks/useGetImageGridPositionProperties.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/OrderLookupCard/components/ProductImageGridItem.tsx
9
9
  const ProductImageGridItem = ({ imageUrl, index, totalImages, moreProductsCount, theme, imageBorderRadiusClass, moreProductsOverlayAriaLabel, moreProductsLabel }) => {
@@ -1,7 +1,7 @@
1
1
  import { ProductImageItem } from "./ProductImageItem.js";
2
2
  import { useGetImageGridPositionProperties } from "../hooks/useGetImageGridPositionProperties.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/OrderLookupCard/components/ProductImageGridItem.tsx
7
7
  const ProductImageGridItem = ({ imageUrl, index, totalImages, moreProductsCount, theme, imageBorderRadiusClass, moreProductsOverlayAriaLabel, moreProductsLabel }) => {
@@ -3,9 +3,9 @@ const require_index = require('../../Image/types/index.cjs');
3
3
  const require_Image = require('../../Image/Image.cjs');
4
4
  require('../../Image/index.cjs');
5
5
  const require_MoreProductsOverlay = require('./MoreProductsOverlay.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/OrderLookupCard/components/ProductImageItem.tsx
11
11
  const ProductImageItem = ({ src, alt, className, style, id, testId, borderRadiusClass, showOverlay = false, moreProductsCount, theme, moreProductsOverlayAriaLabel, moreProductsLabel }) => {