@envive-ai/react-hooks 0.3.7 → 0.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. package/dist/application/commerce-api.cjs +1 -1
  2. package/dist/application/commerce-api.js +1 -1
  3. package/dist/application/models/chatElementDisplayLocationV3.cjs +3 -1
  4. package/dist/application/models/chatElementDisplayLocationV3.d.cts +3 -1
  5. package/dist/application/models/chatElementDisplayLocationV3.d.ts +3 -1
  6. package/dist/application/models/chatElementDisplayLocationV3.js +3 -1
  7. package/dist/application/models/frontendConfigV3.d.cts +2 -2
  8. package/dist/application/models/frontendConfigV3.d.ts +2 -2
  9. package/dist/application/utils/widgetTextRequestToApiRequest.cjs +5 -2
  10. package/dist/application/utils/widgetTextRequestToApiRequest.js +5 -2
  11. package/dist/atoms/app/index.cjs +4 -4
  12. package/dist/atoms/app/index.d.cts +7 -7
  13. package/dist/atoms/app/index.d.ts +7 -7
  14. package/dist/atoms/app/index.js +4 -4
  15. package/dist/atoms/app/variant.d.cts +6 -6
  16. package/dist/atoms/app/variant.d.ts +6 -6
  17. package/dist/atoms/chat/chatState.d.cts +18 -18
  18. package/dist/atoms/chat/chatState.d.ts +17 -17
  19. package/dist/atoms/chat/form.d.cts +2 -2
  20. package/dist/atoms/chat/form.d.ts +2 -2
  21. package/dist/atoms/chat/index.d.cts +2 -2
  22. package/dist/atoms/chat/index.d.ts +2 -2
  23. package/dist/atoms/chat/lastMessage.d.cts +2 -2
  24. package/dist/atoms/chat/lastMessage.d.ts +2 -2
  25. package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
  26. package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
  27. package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
  28. package/dist/atoms/chat/renderedWidgetRefs.d.ts +2 -2
  29. package/dist/atoms/chat/replies.cjs +46 -0
  30. package/dist/atoms/chat/replies.d.cts +14 -0
  31. package/dist/atoms/chat/replies.d.ts +14 -0
  32. package/dist/atoms/chat/replies.js +45 -0
  33. package/dist/atoms/chat/suggestions.d.cts +2 -2
  34. package/dist/atoms/chat/suggestions.d.ts +2 -2
  35. package/dist/atoms/globalSearch/globalSearch.d.cts +5 -5
  36. package/dist/atoms/globalSearch/globalSearch.d.ts +5 -5
  37. package/dist/atoms/org/customerService.d.cts +6 -6
  38. package/dist/atoms/org/customerService.d.ts +6 -6
  39. package/dist/atoms/org/graphqlConfig.d.cts +4 -4
  40. package/dist/atoms/org/graphqlConfig.d.ts +4 -4
  41. package/dist/atoms/org/index.cjs +2 -2
  42. package/dist/atoms/org/index.js +2 -2
  43. package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
  44. package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
  45. package/dist/atoms/org/orgAnalyticsConfig.d.cts +5 -5
  46. package/dist/atoms/org/orgAnalyticsConfig.d.ts +5 -5
  47. package/dist/atoms/search/chatSearch.cjs +1 -1
  48. package/dist/atoms/search/chatSearch.d.cts +17 -17
  49. package/dist/atoms/search/chatSearch.d.ts +17 -17
  50. package/dist/atoms/search/chatSearch.js +1 -1
  51. package/dist/atoms/search/searchAPI.cjs +1 -1
  52. package/dist/atoms/search/searchAPI.d.cts +13 -13
  53. package/dist/atoms/search/searchAPI.d.ts +13 -13
  54. package/dist/atoms/search/searchAPI.js +1 -1
  55. package/dist/atoms/search/types.d.cts +1 -1
  56. package/dist/atoms/widget/chatPreviewLoading.d.cts +2 -2
  57. package/dist/atoms/widget/chatPreviewLoading.d.ts +2 -2
  58. package/dist/contexts/amplitudeContext/amplitudeContext.cjs +6 -4
  59. package/dist/contexts/amplitudeContext/amplitudeContext.js +6 -4
  60. package/dist/contexts/enviveContext/enviveContext.cjs +38 -16
  61. package/dist/contexts/enviveContext/enviveContext.d.cts +4 -1
  62. package/dist/contexts/enviveContext/enviveContext.d.ts +4 -1
  63. package/dist/contexts/enviveContext/enviveContext.js +38 -16
  64. package/dist/contexts/enviveContext/types.d.cts +1 -1
  65. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.cjs +56 -2
  66. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.cts +6 -1
  67. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.ts +6 -1
  68. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.js +56 -2
  69. package/dist/contexts/graphqlContext/graphqlContext.cjs +10 -4
  70. package/dist/contexts/graphqlContext/graphqlContext.js +10 -4
  71. package/dist/contexts/graphqlContext/mockV3Config.cjs +18 -7
  72. package/dist/contexts/graphqlContext/mockV3Config.js +17 -6
  73. package/dist/contexts/hardcopyContext/hardcopyContext.cjs +29 -1
  74. package/dist/contexts/hardcopyContext/hardcopyContext.js +29 -1
  75. package/dist/contexts/newOrgConfigContext/newOrgConfigContext.cjs +1 -1
  76. package/dist/contexts/newOrgConfigContext/newOrgConfigContext.js +1 -1
  77. package/dist/contexts/salesAgentContext/chatAPI.cjs +33 -5
  78. package/dist/contexts/salesAgentContext/chatAPI.d.cts +4 -4
  79. package/dist/contexts/salesAgentContext/chatAPI.d.ts +4 -4
  80. package/dist/contexts/salesAgentContext/chatAPI.js +33 -5
  81. package/dist/contexts/salesAgentContext/formSubmittedUtils.cjs +37 -0
  82. package/dist/contexts/salesAgentContext/formSubmittedUtils.js +36 -0
  83. package/dist/contexts/salesAgentContext/index.d.cts +2 -2
  84. package/dist/contexts/salesAgentContext/index.d.ts +2 -2
  85. package/dist/contexts/salesAgentContext/salesAgentContext.cjs +33 -4
  86. package/dist/contexts/salesAgentContext/salesAgentContext.d.cts +11 -4
  87. package/dist/contexts/salesAgentContext/salesAgentContext.d.ts +11 -4
  88. package/dist/contexts/salesAgentContext/salesAgentContext.js +33 -4
  89. package/dist/contexts/salesAgentContext/salesAgentService.cjs +13 -7
  90. package/dist/contexts/salesAgentContext/salesAgentService.js +13 -7
  91. package/dist/contexts/searchContext/searchContext.cjs +1 -1
  92. package/dist/contexts/searchContext/searchContext.js +1 -1
  93. package/dist/contexts/types.d.cts +1 -1
  94. package/dist/contexts/types.d.ts +1 -1
  95. package/dist/contexts/typesV3.cjs +2 -7
  96. package/dist/contexts/typesV3.d.cts +12 -9
  97. package/dist/contexts/typesV3.d.ts +12 -9
  98. package/dist/contexts/typesV3.js +3 -7
  99. package/dist/contexts/userIdentityContext/userIdentityContext.cjs +22 -29
  100. package/dist/contexts/userIdentityContext/userIdentityContext.d.cts +9 -8
  101. package/dist/contexts/userIdentityContext/userIdentityContext.d.ts +9 -8
  102. package/dist/contexts/userIdentityContext/userIdentityContext.js +22 -29
  103. package/dist/hooks/ElementObserver/useElementObserver.cjs +3 -2
  104. package/dist/hooks/ElementObserver/useElementObserver.js +3 -2
  105. package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +2 -2
  106. package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.ts +2 -2
  107. package/dist/hooks/Search/useSearch.cjs +2 -2
  108. package/dist/hooks/Search/useSearch.js +2 -2
  109. package/dist/hooks/Search/useSearchInput.cjs +2 -2
  110. package/dist/hooks/Search/useSearchInput.js +2 -2
  111. package/dist/hooks/utils.d.cts +1 -1
  112. package/dist/mocks/index.cjs +5 -0
  113. package/dist/mocks/index.d.cts +2 -0
  114. package/dist/mocks/index.d.ts +2 -0
  115. package/dist/mocks/index.js +3 -0
  116. package/dist/mocks/salesAgentMockData.cjs +207 -0
  117. package/dist/mocks/salesAgentMockData.d.cts +11 -0
  118. package/dist/mocks/salesAgentMockData.d.ts +11 -0
  119. package/dist/mocks/salesAgentMockData.js +204 -0
  120. package/dist/packages/components-v3/dist/ChatHeader/components/CloseButton.cjs +2 -2
  121. package/dist/packages/components-v3/dist/ChatHeader/components/CloseButton.js +2 -2
  122. package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetCloseButtonProperties.cjs +2 -2
  123. package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetCloseButtonProperties.js +2 -2
  124. package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetHandleProperties.cjs +18 -18
  125. package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetHandleProperties.js +18 -18
  126. package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetLayoutProperties.cjs +1 -1
  127. package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetLayoutProperties.js +1 -1
  128. package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetToggleProperties.cjs +4 -4
  129. package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetToggleProperties.js +4 -4
  130. package/dist/packages/components-v3/dist/ChatPreviewLoading/components/Skeleton.cjs +1 -0
  131. package/dist/packages/components-v3/dist/ChatPreviewLoading/components/Skeleton.js +3 -0
  132. package/dist/packages/components-v3/dist/Container/Container.cjs +19 -3
  133. package/dist/packages/components-v3/dist/Container/Container.js +19 -4
  134. package/dist/packages/components-v3/dist/Container/hooks/useGetCenterContentProperties.cjs +13 -0
  135. package/dist/packages/components-v3/dist/Container/hooks/useGetCenterContentProperties.js +11 -1
  136. package/dist/packages/components-v3/dist/Container/hooks/useGetFluidProperties.cjs +13 -0
  137. package/dist/packages/components-v3/dist/Container/hooks/useGetFluidProperties.js +11 -1
  138. package/dist/packages/components-v3/dist/Container/index.cjs +1 -1
  139. package/dist/packages/components-v3/dist/Container/index.js +1 -1
  140. package/dist/packages/components-v3/dist/DesignTokens/components/utils.cjs +16 -0
  141. package/dist/packages/components-v3/dist/DesignTokens/components/utils.js +15 -0
  142. package/dist/packages/components-v3/dist/ImageGallery/components/Layout.cjs +2 -2
  143. package/dist/packages/components-v3/dist/ImageGallery/components/Layout.js +2 -2
  144. package/dist/packages/components-v3/dist/PromptButton/PromptButton.cjs +40 -4
  145. package/dist/packages/components-v3/dist/PromptButton/PromptButton.js +40 -5
  146. package/dist/packages/components-v3/dist/PromptButton/components/Icon.cjs +10 -0
  147. package/dist/packages/components-v3/dist/PromptButton/components/Icon.js +8 -1
  148. package/dist/packages/components-v3/dist/PromptButton/components/Label.cjs +18 -1
  149. package/dist/packages/components-v3/dist/PromptButton/components/Label.js +16 -2
  150. package/dist/packages/components-v3/dist/PromptButton/components/Layout.cjs +31 -3
  151. package/dist/packages/components-v3/dist/PromptButton/components/Layout.js +31 -4
  152. package/dist/packages/components-v3/dist/PromptButton/components/Loading.cjs +5 -1
  153. package/dist/packages/components-v3/dist/PromptButton/components/Loading.js +5 -2
  154. package/dist/packages/components-v3/dist/PromptButton/components/index.cjs +16 -4
  155. package/dist/packages/components-v3/dist/PromptButton/components/index.js +15 -5
  156. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetBackgroundColorsProperties.cjs +18 -0
  157. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetBackgroundColorsProperties.js +18 -0
  158. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetBoldTextProperties.cjs +12 -0
  159. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetBoldTextProperties.js +10 -1
  160. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetBorderColorsProperties.cjs +18 -0
  161. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetBorderColorsProperties.js +18 -0
  162. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetIconColorsProperties.cjs +32 -0
  163. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetIconColorsProperties.js +32 -0
  164. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetLayoutBaseProperties.cjs +9 -1
  165. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetLayoutBaseProperties.js +9 -2
  166. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetTextColorsProperties.cjs +19 -0
  167. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetTextColorsProperties.js +19 -0
  168. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetVariantColorsProperties.cjs +29 -0
  169. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetVariantColorsProperties.js +29 -0
  170. package/dist/packages/components-v3/dist/PromptButton/index.cjs +1 -1
  171. package/dist/packages/components-v3/dist/PromptButton/index.js +1 -1
  172. package/dist/packages/components-v3/dist/PromptButton/utils/functions.cjs +10 -0
  173. package/dist/packages/components-v3/dist/PromptButton/utils/functions.js +10 -0
  174. package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselRefs.js +1 -1
  175. package/dist/packages/components-v3/dist/SocialProof/SocialProof.cjs +10 -0
  176. package/dist/packages/components-v3/dist/SocialProof/SocialProof.js +12 -0
  177. package/dist/packages/components-v3/dist/SocialProof/components/Headline.cjs +53 -0
  178. package/dist/packages/components-v3/dist/SocialProof/components/Headline.js +54 -0
  179. package/dist/packages/components-v3/dist/SocialProof/components/ImageGallery.cjs +5 -0
  180. package/dist/packages/components-v3/dist/SocialProof/components/ImageGallery.js +7 -0
  181. package/dist/packages/components-v3/dist/SocialProof/components/LayoutFourGrid.cjs +6 -0
  182. package/dist/packages/components-v3/dist/SocialProof/components/LayoutFourGrid.js +8 -0
  183. package/dist/packages/components-v3/dist/SocialProof/components/LayoutFourHorizontal.cjs +16 -0
  184. package/dist/packages/components-v3/dist/SocialProof/components/LayoutFourHorizontal.js +17 -0
  185. package/dist/packages/components-v3/dist/SocialProof/components/LayoutSingle.cjs +8 -0
  186. package/dist/packages/components-v3/dist/SocialProof/components/LayoutSingle.js +10 -0
  187. package/dist/packages/components-v3/dist/SocialProof/components/Skeleton.cjs +1 -0
  188. package/dist/packages/components-v3/dist/SocialProof/components/Skeleton.js +3 -0
  189. package/dist/packages/components-v3/dist/SocialProof/components/Subheadline.cjs +8 -0
  190. package/dist/packages/components-v3/dist/SocialProof/components/Subheadline.js +10 -0
  191. package/dist/packages/components-v3/dist/SocialProof/components/Textfield.cjs +3 -0
  192. package/dist/packages/components-v3/dist/SocialProof/components/Textfield.js +5 -0
  193. package/dist/packages/components-v3/dist/SocialProof/components/index.cjs +8 -0
  194. package/dist/packages/components-v3/dist/SocialProof/components/index.js +10 -0
  195. package/dist/packages/components-v3/dist/SocialProof/hooks/index.cjs +1 -0
  196. package/dist/packages/components-v3/dist/SocialProof/hooks/index.js +3 -0
  197. package/dist/packages/components-v3/dist/SocialProof/hooks/useSocialProofCount.cjs +1 -0
  198. package/dist/packages/components-v3/dist/SocialProof/hooks/useSocialProofCount.js +3 -0
  199. package/dist/packages/components-v3/dist/SocialProof/index.cjs +4 -0
  200. package/dist/packages/components-v3/dist/SocialProof/index.js +6 -0
  201. package/dist/packages/components-v3/dist/SocialProof/types/types.cjs +11 -0
  202. package/dist/packages/components-v3/dist/SocialProof/types/types.js +10 -0
  203. package/dist/packages/components-v3/dist/SocialProof/utils/functions.cjs +1 -0
  204. package/dist/packages/components-v3/dist/SocialProof/utils/functions.js +3 -0
  205. package/dist/packages/components-v3/dist/Title/Title.cjs +11 -0
  206. package/dist/packages/components-v3/dist/Title/Title.js +12 -0
  207. package/dist/packages/components-v3/dist/Title/components/Image.cjs +2 -0
  208. package/dist/packages/components-v3/dist/Title/components/Image.js +4 -0
  209. package/dist/packages/components-v3/dist/Title/components/Label.cjs +3 -0
  210. package/dist/packages/components-v3/dist/Title/components/Label.js +5 -0
  211. package/dist/packages/components-v3/dist/Title/components/Layout.cjs +11 -0
  212. package/dist/packages/components-v3/dist/Title/components/Layout.js +12 -0
  213. package/dist/packages/components-v3/dist/Title/components/index.cjs +3 -0
  214. package/dist/packages/components-v3/dist/Title/components/index.js +5 -0
  215. package/dist/packages/components-v3/dist/Title/index.cjs +1 -0
  216. package/dist/packages/components-v3/dist/Title/index.js +3 -0
  217. package/dist/packages/components-v3/dist/Tokens/index.cjs +11 -11
  218. package/dist/packages/components-v3/dist/Tokens/index.js +11 -11
  219. package/dist/packages/components-v3/dist/Typography/Typography.cjs +35 -7
  220. package/dist/packages/components-v3/dist/Typography/Typography.js +35 -8
  221. package/dist/packages/components-v3/dist/Typography/hooks/useGetAccessibilityAttributes.cjs +30 -0
  222. package/dist/packages/components-v3/dist/Typography/hooks/useGetAccessibilityAttributes.js +28 -1
  223. package/dist/packages/components-v3/dist/Typography/hooks/useGetAlignProperties.cjs +19 -0
  224. package/dist/packages/components-v3/dist/Typography/hooks/useGetAlignProperties.js +17 -1
  225. package/dist/packages/components-v3/dist/Typography/hooks/useGetColorProperties.cjs +20 -0
  226. package/dist/packages/components-v3/dist/Typography/hooks/useGetColorProperties.js +18 -1
  227. package/dist/packages/components-v3/dist/Typography/hooks/useGetNoWrapProperties.cjs +12 -0
  228. package/dist/packages/components-v3/dist/Typography/hooks/useGetNoWrapProperties.js +10 -1
  229. package/dist/packages/components-v3/dist/Typography/hooks/useGetNumberOfLinesProperties.cjs +21 -0
  230. package/dist/packages/components-v3/dist/Typography/hooks/useGetNumberOfLinesProperties.js +19 -1
  231. package/dist/packages/components-v3/dist/Typography/hooks/useGetVariantProperties.cjs +61 -0
  232. package/dist/packages/components-v3/dist/Typography/hooks/useGetVariantProperties.js +59 -1
  233. package/dist/packages/components-v3/dist/Typography/index.cjs +2 -1
  234. package/dist/packages/components-v3/dist/Typography/index.js +2 -1
  235. package/dist/packages/components-v3/dist/Typography/types/index.cjs +47 -0
  236. package/dist/packages/components-v3/dist/Typography/types/index.js +44 -0
  237. package/dist/packages/components-v3/dist/Typography/utils/utils.cjs +12 -0
  238. package/dist/packages/components-v3/dist/Typography/utils/utils.js +10 -0
  239. package/dist/packages/components-v3/dist/WelcomeMessage/components/Container.cjs +1 -1
  240. package/dist/packages/components-v3/dist/WelcomeMessage/components/Container.js +1 -1
  241. package/dist/packages/components-v3/dist/WelcomeMessage/types/types.cjs +2 -2
  242. package/dist/packages/components-v3/dist/WelcomeMessage/types/types.js +2 -2
  243. package/dist/packages/components-v3/dist/WidgetTextField/WidgetTextField.cjs +2 -0
  244. package/dist/packages/components-v3/dist/WidgetTextField/WidgetTextField.js +4 -0
  245. package/dist/packages/components-v3/dist/WidgetTextField/components/Container.cjs +14 -0
  246. package/dist/packages/components-v3/dist/WidgetTextField/components/Container.js +15 -0
  247. package/dist/packages/components-v3/dist/WidgetTextField/components/FakeTextInput.cjs +3 -0
  248. package/dist/packages/components-v3/dist/WidgetTextField/components/FakeTextInput.js +5 -0
  249. package/dist/packages/components-v3/dist/WidgetTextField/components/Icon.cjs +7 -0
  250. package/dist/packages/components-v3/dist/WidgetTextField/components/Icon.js +9 -0
  251. package/dist/packages/components-v3/dist/WidgetTextField/components/Skeleton.cjs +10 -0
  252. package/dist/packages/components-v3/dist/WidgetTextField/components/Skeleton.js +11 -0
  253. package/dist/packages/components-v3/dist/WidgetTextField/components/index.cjs +4 -0
  254. package/dist/packages/components-v3/dist/WidgetTextField/components/index.js +6 -0
  255. package/dist/packages/components-v3/dist/WidgetTextField/hooks/useGetContainerProperties.cjs +1 -0
  256. package/dist/packages/components-v3/dist/WidgetTextField/hooks/useGetContainerProperties.js +3 -0
  257. package/dist/packages/components-v3/dist/WidgetTextField/index.cjs +1 -0
  258. package/dist/packages/components-v3/dist/WidgetTextField/index.js +3 -0
  259. package/dist/packages/components-v3/dist/WidgetWrapperWithTitle/WidgetWrapperWithTitle.cjs +8 -0
  260. package/dist/packages/components-v3/dist/WidgetWrapperWithTitle/WidgetWrapperWithTitle.js +10 -0
  261. package/dist/packages/components-v3/dist/packages/components-v3/src/models/colorsConfig.cjs +26 -0
  262. package/dist/packages/components-v3/dist/packages/components-v3/src/models/colorsConfig.js +25 -0
  263. package/dist/packages/components-v3/dist/packages/components-v3/tokens/aspectRatio/aspectRatio.cjs +16 -0
  264. package/dist/packages/components-v3/dist/packages/components-v3/tokens/aspectRatio/aspectRatio.js +17 -0
  265. package/dist/packages/components-v3/dist/packages/components-v3/tokens/breakpoints/breakpoints.cjs +25 -0
  266. package/dist/packages/components-v3/dist/packages/components-v3/tokens/breakpoints/breakpoints.js +23 -0
  267. package/dist/packages/components-v3/dist/packages/components-v3/tokens/colors/colors.cjs +51 -0
  268. package/dist/packages/components-v3/dist/packages/components-v3/tokens/colors/colors.js +51 -0
  269. package/dist/packages/components-v3/dist/packages/components-v3/tokens/radius/radius.cjs +64 -0
  270. package/dist/packages/components-v3/dist/packages/components-v3/tokens/radius/radius.js +65 -0
  271. package/dist/packages/components-v3/dist/packages/components-v3/tokens/theme/theme.cjs +18 -0
  272. package/dist/packages/components-v3/dist/packages/components-v3/tokens/theme/theme.js +16 -0
  273. package/dist/packages/components-v3/dist/packages/components-v3/tokens/typography/fontFamily.cjs +25 -0
  274. package/dist/packages/components-v3/dist/packages/components-v3/tokens/typography/fontFamily.js +25 -0
  275. package/dist/packages/components-v3/dist/packages/components-v3/tokens/typography/fontSize.cjs +37 -0
  276. package/dist/packages/components-v3/dist/packages/components-v3/tokens/typography/fontSize.js +38 -0
  277. package/dist/packages/components-v3/dist/packages/components-v3/tokens/typography/fontWeight.cjs +17 -0
  278. package/dist/packages/components-v3/dist/packages/components-v3/tokens/typography/fontWeight.js +18 -0
  279. package/dist/packages/components-v3/dist/packages/components-v3/tokens/typography/letterSpacing.cjs +15 -0
  280. package/dist/packages/components-v3/dist/packages/components-v3/tokens/typography/letterSpacing.js +16 -0
  281. package/dist/packages/components-v3/dist/packages/components-v3/tokens/typography/lineHeight.cjs +31 -0
  282. package/dist/packages/components-v3/dist/packages/components-v3/tokens/typography/lineHeight.js +32 -0
  283. package/dist/packages/components-v3/dist/packages/components-v3/tokens/utils.cjs +7 -0
  284. package/dist/packages/components-v3/dist/packages/components-v3/tokens/utils.js +6 -0
  285. package/dist/packages/components-v3/dist/utils/resolveTheme.cjs +13 -0
  286. package/dist/packages/components-v3/dist/utils/resolveTheme.js +13 -0
  287. package/dist/packages/components-v3/dist/utils/useGetContentSize.cjs +1 -0
  288. package/dist/packages/components-v3/dist/utils/useGetContentSize.js +3 -0
  289. package/dist/packages/components-v3/dist/utils/useResponsiveValue.cjs +2 -2
  290. package/dist/packages/components-v3/dist/utils/useResponsiveValue.js +2 -2
  291. package/dist/packages/icons/dist/FourPointStar.cjs +16 -1
  292. package/dist/packages/icons/dist/FourPointStar.js +16 -2
  293. package/dist/packages/icons/dist/MagnifyingGlass.cjs +8 -0
  294. package/dist/packages/icons/dist/MagnifyingGlass.js +9 -0
  295. package/dist/packages/icons/dist/MagnifyingThin.cjs +8 -0
  296. package/dist/packages/icons/dist/MagnifyingThin.js +9 -0
  297. package/dist/packages/icons/dist/SendMinimalist.cjs +8 -0
  298. package/dist/packages/icons/dist/SendMinimalist.js +9 -0
  299. package/dist/packages/icons/dist/SendModern.cjs +8 -0
  300. package/dist/packages/icons/dist/SendModern.js +9 -0
  301. package/dist/packages/icons/dist/SendStandard.cjs +8 -0
  302. package/dist/packages/icons/dist/SendStandard.js +9 -0
  303. package/dist/services/amplitudeService/amplitudeService.cjs +37 -12
  304. package/dist/services/amplitudeService/amplitudeService.d.cts +11 -3
  305. package/dist/services/amplitudeService/amplitudeService.d.ts +11 -3
  306. package/dist/services/amplitudeService/amplitudeService.js +37 -12
  307. package/dist/services/userIdentityService/index.cjs +3 -0
  308. package/dist/services/userIdentityService/index.d.cts +2 -0
  309. package/dist/services/userIdentityService/index.d.ts +2 -0
  310. package/dist/services/userIdentityService/index.js +3 -0
  311. package/dist/services/userIdentityService/userIdentityService.cjs +49 -0
  312. package/dist/services/userIdentityService/userIdentityService.d.cts +19 -0
  313. package/dist/services/userIdentityService/userIdentityService.d.ts +19 -0
  314. package/dist/services/userIdentityService/userIdentityService.js +48 -0
  315. package/package.json +18 -5
  316. package/src/application/models/chatElementDisplayLocationV3.ts +2 -0
  317. package/src/application/models/frontendConfigV3.ts +1 -1
  318. package/src/application/utils/widgetTextRequestToApiRequest.ts +5 -5
  319. package/src/atoms/app/index.ts +9 -7
  320. package/src/atoms/chat/replies.ts +56 -0
  321. package/src/contexts/amplitudeContext/__tests__/amplitudeContext.test.tsx +47 -66
  322. package/src/contexts/amplitudeContext/amplitudeContext.tsx +4 -1
  323. package/src/contexts/enviveContext/enviveContext.tsx +47 -6
  324. package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +101 -2
  325. package/src/contexts/graphqlContext/graphqlContext.tsx +11 -2
  326. package/src/contexts/graphqlContext/mockV3Config.ts +15 -4
  327. package/src/contexts/hardcopyContext/hardcopyContext.tsx +29 -0
  328. package/src/contexts/salesAgentContext/chatAPI.ts +36 -7
  329. package/src/contexts/salesAgentContext/formSubmittedUtils.ts +57 -0
  330. package/src/contexts/salesAgentContext/salesAgentContext.tsx +63 -2
  331. package/src/contexts/salesAgentContext/salesAgentService.ts +15 -9
  332. package/src/contexts/searchContext/__tests__/searchContext.test.tsx +3 -1
  333. package/src/contexts/typesV3.ts +13 -10
  334. package/src/contexts/userIdentityContext/__tests__/userIdentityContext.test.tsx +18 -131
  335. package/src/contexts/userIdentityContext/userIdentityContext.tsx +47 -41
  336. package/src/hooks/ElementObserver/useElementObserver.ts +2 -1
  337. package/src/hooks/Search/__tests__/useSearch.test.tsx +11 -1
  338. package/src/mocks/index.ts +1 -0
  339. package/src/mocks/salesAgentMockData.ts +247 -0
  340. package/src/services/amplitudeService/__tests__/amplitudeService.test.ts +17 -0
  341. package/src/services/amplitudeService/amplitudeService.ts +50 -11
  342. package/src/services/userIdentityService/index.ts +1 -0
  343. package/src/services/userIdentityService/userIdentityService.ts +64 -0
  344. package/dist/contexts/featureFlagContext/featureFlagContext.cjs +0 -105
  345. package/dist/contexts/featureFlagContext/featureFlagContext.d.cts +0 -19
  346. package/dist/contexts/featureFlagContext/featureFlagContext.d.ts +0 -19
  347. package/dist/contexts/featureFlagContext/featureFlagContext.js +0 -102
  348. package/dist/contexts/featureFlagContext/index.cjs +0 -4
  349. package/dist/contexts/featureFlagContext/index.d.cts +0 -2
  350. package/dist/contexts/featureFlagContext/index.d.ts +0 -2
  351. package/dist/contexts/featureFlagContext/index.js +0 -3
  352. package/dist/packages/components-v3/dist/src/models/colorsConfig.cjs +0 -26
  353. package/dist/packages/components-v3/dist/src/models/colorsConfig.js +0 -25
  354. package/dist/packages/components-v3/dist/tokens/aspectRatio/aspectRatio.cjs +0 -16
  355. package/dist/packages/components-v3/dist/tokens/aspectRatio/aspectRatio.js +0 -17
  356. package/dist/packages/components-v3/dist/tokens/breakpoints/breakpoints.cjs +0 -25
  357. package/dist/packages/components-v3/dist/tokens/breakpoints/breakpoints.js +0 -23
  358. package/dist/packages/components-v3/dist/tokens/colors/colors.cjs +0 -51
  359. package/dist/packages/components-v3/dist/tokens/colors/colors.js +0 -51
  360. package/dist/packages/components-v3/dist/tokens/radius/radius.cjs +0 -64
  361. package/dist/packages/components-v3/dist/tokens/radius/radius.js +0 -65
  362. package/dist/packages/components-v3/dist/tokens/theme/theme.cjs +0 -13
  363. package/dist/packages/components-v3/dist/tokens/theme/theme.js +0 -12
  364. package/dist/packages/components-v3/dist/tokens/typography/fontFamily.cjs +0 -25
  365. package/dist/packages/components-v3/dist/tokens/typography/fontFamily.js +0 -25
  366. package/dist/packages/components-v3/dist/tokens/typography/fontSize.cjs +0 -37
  367. package/dist/packages/components-v3/dist/tokens/typography/fontSize.js +0 -38
  368. package/dist/packages/components-v3/dist/tokens/typography/fontWeight.cjs +0 -17
  369. package/dist/packages/components-v3/dist/tokens/typography/fontWeight.js +0 -18
  370. package/dist/packages/components-v3/dist/tokens/typography/letterSpacing.cjs +0 -15
  371. package/dist/packages/components-v3/dist/tokens/typography/letterSpacing.js +0 -16
  372. package/dist/packages/components-v3/dist/tokens/typography/lineHeight.cjs +0 -31
  373. package/dist/packages/components-v3/dist/tokens/typography/lineHeight.js +0 -32
  374. package/dist/packages/components-v3/dist/tokens/utils.cjs +0 -7
  375. package/dist/packages/components-v3/dist/tokens/utils.js +0 -6
  376. package/src/contexts/featureFlagContext/featureFlagContext.tsx +0 -180
  377. package/src/contexts/featureFlagContext/index.ts +0 -1
  378. /package/dist/packages/components-v3/dist/{tokens → packages/components-v3/tokens}/typography/typography.cjs +0 -0
  379. /package/dist/packages/components-v3/dist/{tokens → packages/components-v3/tokens}/typography/typography.js +0 -0
@@ -0,0 +1,57 @@
1
+ import { Message, MessageRole, MessageType } from 'src/application/models/message';
2
+ import { UserEvent } from 'src/application/models';
3
+
4
+ /**
5
+ * Searches the chat history for the form message by form response ID and builds the display string for the form.
6
+ */
7
+ export const buildFormSubmittedDisplayContent = (
8
+ messages: Message[][],
9
+ formResponseId: string,
10
+ filledSchema: Record<string, unknown>,
11
+ ): string => {
12
+ let formFields: { key: string; title: string }[] = [];
13
+ // Find the form message in the chat history
14
+ for (const turn of messages) {
15
+ for (const msg of turn) {
16
+ if (
17
+ msg.type === MessageType.Form &&
18
+ msg.id === formResponseId &&
19
+ msg.metadata &&
20
+ 'fields' in msg.metadata &&
21
+ Array.isArray(msg.metadata.fields)
22
+ ) {
23
+ formFields = msg.metadata.fields.map((field: { key: string; title: string }) => ({
24
+ key: field.key,
25
+ title: field.title,
26
+ }));
27
+ break;
28
+ }
29
+ }
30
+ if (formFields.length > 0) break;
31
+ }
32
+ // Build the display string for the form
33
+ const formStringContent =
34
+ formFields.length > 0
35
+ ? formFields.map(({ key, title }) => `${title}: ${filledSchema[key] ?? ''}`).join('\n')
36
+ : Object.entries(filledSchema)
37
+ .map(([key, value]) => `${key}: ${value}`)
38
+ .join('\n');
39
+ return formStringContent;
40
+ };
41
+
42
+ /**
43
+ * Creates a user message representing a submitted form for display in the chat.
44
+ */
45
+ export const createFormSubmittedUserMessage = (
46
+ userEvent: UserEvent,
47
+ formSubmittedContent: string,
48
+ ): Message => {
49
+ const newMessage: Message = {
50
+ id: userEvent.eventId,
51
+ role: MessageRole.User,
52
+ type: MessageType.QueryTyped,
53
+ createdAt: userEvent.createdAt,
54
+ metadata: { content: formSubmittedContent },
55
+ };
56
+ return newMessage;
57
+ };
@@ -17,6 +17,10 @@ import {
17
17
  userQueueEventCountAtom,
18
18
  } from 'src/atoms/chat/messageQueue';
19
19
  import { useSystemSettingsContext } from 'src/hooks/SystemSettingsContext';
20
+ import {
21
+ buildFormSubmittedDisplayContent,
22
+ createFormSubmittedUserMessage,
23
+ } from './formSubmittedUtils';
20
24
  import { SalesAgentChatAPI, useSalesAgentChatAPI } from './chatAPI';
21
25
  import { useSalesAgentService } from './salesAgentService';
22
26
 
@@ -35,19 +39,48 @@ export interface SalesAgent extends SalesAgentChatAPI {
35
39
  isInitialized: boolean;
36
40
  }
37
41
 
42
+ export interface MockSalesAgentData {
43
+ messages?: Message[][];
44
+ suggestions?: Suggestion[];
45
+ }
46
+
38
47
  const SalesAgentContext = createContext<SalesAgent | undefined>(undefined);
39
48
 
40
- export const SalesAgentProvider: React.FC<{ children: ReactNode }> = ({ children }) => {
49
+ export interface SalesAgentProviderProps {
50
+ children: ReactNode;
51
+ previewMode?: boolean;
52
+ mockData?: MockSalesAgentData;
53
+ }
54
+
55
+ export const SalesAgentProvider: React.FC<SalesAgentProviderProps> = ({
56
+ children,
57
+ previewMode = false,
58
+ mockData,
59
+ }) => {
41
60
  const userEvents = useAtomValue(userEventQueueAtom);
42
61
  const userQueueEventCount = useAtomValue(userQueueEventCountAtom);
43
62
  const markUserEventsProcessed = useSetAtom(processUserEventAtom);
44
63
  const [isInitialized, setIsInitialized] = useAtom(initializedAtom);
45
64
  const settingsContext = useSystemSettingsContext();
46
65
  const setMessages = useSetAtom(messagesAtom);
66
+ const setSuggestions = useSetAtom(suggestionsAtom);
47
67
 
48
68
  const { getStreamingResponses, createResponsePayload, getSuggestions, hydrateMessages } =
49
69
  useSalesAgentService();
50
70
 
71
+ // Initialize with mock data in preview mode
72
+ useEffect(() => {
73
+ if (previewMode && mockData) {
74
+ if (mockData.messages) {
75
+ setMessages(mockData.messages);
76
+ }
77
+ if (mockData.suggestions) {
78
+ setSuggestions(mockData.suggestions);
79
+ }
80
+ setIsInitialized(true);
81
+ }
82
+ }, [previewMode, mockData, setMessages, setSuggestions, setIsInitialized]);
83
+
51
84
  // TODO: Ensure that amplitude events are being emitted
52
85
 
53
86
  // TODO: Add support for the streaming responses to function
@@ -72,6 +105,11 @@ export const SalesAgentProvider: React.FC<{ children: ReactNode }> = ({ children
72
105
  // It will be triggered when there are pending messages to be sent to the backend
73
106
  // It will be responsible for sending the messages to the backend and receiving the responses
74
107
  useEffect(() => {
108
+ // Skip backend communication in preview mode
109
+ if (previewMode) {
110
+ return;
111
+ }
112
+
75
113
  if (userQueueEventCount > 0) {
76
114
  const payloadEvents = userEvents.slice(0, userQueueEventCount);
77
115
 
@@ -100,6 +138,23 @@ export const SalesAgentProvider: React.FC<{ children: ReactNode }> = ({ children
100
138
  };
101
139
  setMessages(current => [...current, [newMessage]]);
102
140
  }
141
+ if (userEvent && userEvent.category === UserEventCategory.FormSubmitted) {
142
+ const { formResponseId, filledSchema } = userEvent.attributes;
143
+ setMessages(prevMessagesState => {
144
+ const formSubmittedContent = buildFormSubmittedDisplayContent(
145
+ prevMessagesState,
146
+ formResponseId,
147
+ filledSchema,
148
+ );
149
+ const newUserMessage = createFormSubmittedUserMessage(userEvent, formSubmittedContent);
150
+ const turnsWithoutForm = prevMessagesState
151
+ .map(turn =>
152
+ turn.filter(msg => !(msg.type === MessageType.Form && msg.id === formResponseId)),
153
+ )
154
+ .filter(turn => turn.length > 0);
155
+ return [...turnsWithoutForm, [newUserMessage]];
156
+ });
157
+ }
103
158
  });
104
159
 
105
160
  sendMessagesToBackend(
@@ -125,14 +180,20 @@ export const SalesAgentProvider: React.FC<{ children: ReactNode }> = ({ children
125
180
  settingsContext.generationParams,
126
181
  userEvents,
127
182
  userQueueEventCount,
183
+ previewMode,
128
184
  ]);
129
185
 
130
186
  useEffect(() => {
187
+ // Skip hydration in preview mode
188
+ if (previewMode) {
189
+ return;
190
+ }
191
+
131
192
  if (isInitialized) {
132
193
  // Rehydrate any messages from the backend
133
194
  hydrateMessages();
134
195
  }
135
- }, [isInitialized, hydrateMessages]);
196
+ }, [isInitialized, hydrateMessages, previewMode]);
136
197
 
137
198
  return <SalesAgentContext.Provider value={undefined}>{children}</SalesAgentContext.Provider>;
138
199
  };
@@ -44,12 +44,14 @@ const inputPropsToTrackingProps = (
44
44
  const [userEvent] = payload.userEvents || [];
45
45
  if (userEvent.category === UserEventCategory.SuggestionClicked) {
46
46
  return {
47
+ message_id: userEvent.eventId,
47
48
  user_event_type: 'suggestion_clicked',
48
49
  user_query: userEvent.attributes.content,
49
50
  };
50
51
  }
51
52
  if (userEvent.category === UserEventCategory.QueryTyped) {
52
53
  return {
54
+ message_id: userEvent.eventId,
53
55
  user_event_type: 'query_typed',
54
56
  user_query: userEvent.attributes.query,
55
57
  };
@@ -216,6 +218,7 @@ export const useSalesAgentService: () => SalesAgentService = () => {
216
218
  const getStreamingResponses = useCallback(
217
219
  async (payload: NextMessageRequest): Promise<void> => {
218
220
  const startTime = Date.now();
221
+ let successfulResponse: boolean | undefined;
219
222
  setPendingResponse(true);
220
223
  const stream = CommerceApiClient.getNextResponseStreaming(payload);
221
224
 
@@ -228,16 +231,8 @@ export const useSalesAgentService: () => SalesAgentService = () => {
228
231
  setMessages,
229
232
  setResponseStreaming,
230
233
  );
234
+ successfulResponse = true;
231
235
 
232
- // Log successful next_responses call
233
- const responseTime = Date.now() - startTime;
234
- trackEvent({
235
- eventName: SpiffyMetricsEventName.ChatAssistantResponse,
236
- eventProps: {
237
- responseTimeMs: responseTime.toString(),
238
- ...inputPropsToTrackingProps(payload),
239
- },
240
- });
241
236
  // TODO: Add support for the Chrome Extension communication
242
237
  // await logBundleEvent({
243
238
  // level: 'info',
@@ -251,6 +246,7 @@ export const useSalesAgentService: () => SalesAgentService = () => {
251
246
  // });
252
247
  } catch (e) {
253
248
  console.error('error getting streaming responses', e);
249
+ successfulResponse = false;
254
250
  // Log failed next_responses call
255
251
  // const responseTime = Date.now() - startTime;
256
252
  // await logBundleEvent({
@@ -268,6 +264,16 @@ export const useSalesAgentService: () => SalesAgentService = () => {
268
264
  handleStreamingError(e, setRequestFailure, setMessages);
269
265
  throw e;
270
266
  } finally {
267
+ // Log next_responses call
268
+ const responseTime = Date.now() - startTime;
269
+ trackEvent({
270
+ eventName: SpiffyMetricsEventName.ChatAssistantResponse,
271
+ eventProps: {
272
+ responseTimeMs: responseTime.toString(),
273
+ successful_response: successfulResponse,
274
+ ...inputPropsToTrackingProps(payload),
275
+ },
276
+ });
271
277
  setPendingResponse(false);
272
278
  setResponseStreaming(false);
273
279
  // logPerfMetric(PerfMetricsEvents.FirstResponseCompleted);
@@ -21,6 +21,7 @@ import { SearchResult } from 'src/application/models/api/search';
21
21
 
22
22
  import { useAppDetails } from 'src/hooks/AppDetails/useAppDetails';
23
23
  import * as commerceApiClient from '@spiffy-ai/commerce-api-client';
24
+ import { UserIdentityService } from 'src/services/userIdentityService';
24
25
  import { SearchProvider, useSearchService } from '../searchContext';
25
26
 
26
27
  // Mock the commerce-api-client
@@ -61,6 +62,7 @@ vi.mock('@spiffy-ai/commerce-api-client', () => {
61
62
 
62
63
  // FeatureFlagService
63
64
  const testFeatureFlagService = new FeatureFlagService([]);
65
+ const testUserIdService = new UserIdentityService({ apiKey: '' });
64
66
 
65
67
  // Mock useAppDetails
66
68
  vi.mock('src/hooks/AppDetails/useAppDetails', () => ({
@@ -197,7 +199,7 @@ const TestWrapper: React.FC<{
197
199
  >
198
200
  <LocalStorageProvider>
199
201
  <GraphQLProvider>
200
- <UserIdentityProvider>
202
+ <UserIdentityProvider userIdService={testUserIdService}>
201
203
  <FeatureFlagServiceProvider featureFlagService={testFeatureFlagService}>
202
204
  <SearchProvider>{children}</SearchProvider>
203
205
  </FeatureFlagServiceProvider>
@@ -3,7 +3,7 @@ import { ImageGalleryImage, ImageGalleryLayout } from '@envive-ai/react-toolkit-
3
3
  import { PromptButtonVariant } from '@envive-ai/react-toolkit-v3/PromptButton';
4
4
  import { WidgetWrapperVariant } from '@envive-ai/react-toolkit-v3/WidgetWrapper';
5
5
  import { Theme } from '@envive-ai/react-toolkit-v3/Tokens';
6
- import { DynamicLayout } from '@envive-ai/react-toolkit-v3/SocialProof';
6
+ import { DynamicLayout, WidgetKind } from '@envive-ai/react-toolkit-v3/SocialProof';
7
7
  import { SparkleIconColor } from '@envive-ai/react-toolkit-v3/WelcomeMessage';
8
8
  import { FloatingButtonLocation } from '@envive-ai/react-toolkit-v3/FloatingButton';
9
9
  import { ColorNames } from '../application/models/colorsConfigV3';
@@ -240,6 +240,7 @@ export enum WidgetTypeV3 {
240
240
  SingleImagePromptV3 = 'SingleImagePromptV3',
241
241
  FloatingChatV3 = 'FloatingChatV3',
242
242
  FloatingButtonV3 = 'FloatingButtonV3',
243
+ ProductCardV3 = 'ProductCardV3',
243
244
  }
244
245
 
245
246
  interface BaseWidgetConfig<T extends WidgetTypeV3> {
@@ -261,13 +262,8 @@ interface TitledPromptCarouselWidgetV3Config extends BaseWidgetConfig<WidgetType
261
262
  promptCarouselRows?: PromptCarouselRows;
262
263
  animationSpeed?: AnimationSpeed;
263
264
  }
264
-
265
- enum SocialProofWidgetKind {
266
- STATIC = 'static',
267
- DYNAMIC = 'dynamic',
268
- }
269
265
  interface SocialProofWidgetV3Config extends BaseWidgetConfig<WidgetTypeV3.SocialProofV3> {
270
- kind: SocialProofWidgetKind;
266
+ kind: WidgetKind;
271
267
  variant: WidgetWrapperVariant;
272
268
  hexCardColor?: string;
273
269
  promptCarouselRows: PromptCarouselRows;
@@ -315,6 +311,13 @@ interface PromptButtonCarouselWithImageWidgetV3Config extends BaseWidgetConfig<W
315
311
 
316
312
  interface FloatingChatWidgetV3Config extends BaseWidgetConfig<WidgetTypeV3.FloatingChatV3> {}
317
313
 
314
+ interface ProductCardWidgetV3Config extends BaseWidgetConfig<WidgetTypeV3.ProductCardV3> {
315
+ promptButtonType?: PromptButtonVariant;
316
+ italicizeHeadline?: boolean;
317
+ fallbackColor?: string;
318
+ imageSrc?: string;
319
+ }
320
+
318
321
  type WidgetConfigV3 =
319
322
  | PromptCarouselWidgetV3Config
320
323
  | SocialProofWidgetV3Config
@@ -324,7 +327,8 @@ type WidgetConfigV3 =
324
327
  | TypingAnimationWidgetV3Config
325
328
  | ChatPreviewWidgetV3Config
326
329
  | PromptButtonCarouselWithImageWidgetV3Config
327
- | FloatingChatWidgetV3Config;
330
+ | FloatingChatWidgetV3Config
331
+ | ProductCardWidgetV3Config;
328
332
 
329
333
  export type {
330
334
  OrgUIConfigV3,
@@ -339,9 +343,8 @@ export type {
339
343
  TypingAnimationWidgetV3Config,
340
344
  PromptButtonCarouselWithImageWidgetV3Config,
341
345
  FloatingChatWidgetV3Config,
346
+ ProductCardWidgetV3Config,
342
347
  FloatingChatConfig,
343
348
  FloatingButtonConfig,
344
349
  CustomerServiceIntegration,
345
350
  };
346
-
347
- export { SocialProofWidgetKind };
@@ -5,6 +5,7 @@ import { userIdAtom } from 'src/atoms/app';
5
5
  import { LocalStorageProvider } from 'src/contexts/localStorageContext';
6
6
  import Logger from 'src/application/logging/logger';
7
7
  import CommerceApiClient from 'src/application/commerce-api';
8
+ import { UserIdentityService } from 'src/services/userIdentityService';
8
9
  import { UserIdentityProvider, useUserIdentity } from '../userIdentityContext';
9
10
 
10
11
  // Mock the Logger to avoid console output in tests
@@ -24,20 +25,32 @@ vi.mock('uuid', () => ({
24
25
  v4: vi.fn(() => 'test-uuid-12345'),
25
26
  }));
26
27
 
28
+ // Mock userIdService
29
+ const mockGetUserId = vi.fn().mockResolvedValue('spiffy-user-id-test-user-id');
30
+ const mockInitializeUser = vi.fn().mockResolvedValue(undefined);
31
+
32
+ const testUserIdService = {
33
+ getUserIdOrDefault: mockGetUserId,
34
+ initializeUser: mockInitializeUser,
35
+ getUserIdOverrideFromLocalStorage: vi.fn().mockReturnValue(undefined),
36
+ } as unknown as UserIdentityService;
37
+
27
38
  // Component that uses the useUserIdentity hook
28
39
  const MockComponent: React.FC = () => {
29
40
  const context = useUserIdentity();
41
+ const [userId, setUserId] = React.useState<string>('');
42
+
43
+ React.useEffect(() => {
44
+ context.getUserIdOrDefault().then(setUserId);
45
+ }, [context]);
30
46
 
31
47
  return (
32
48
  <div data-testid="mock-component">
33
- <div data-testid="user-id">{context.getUserIdOrDefault()}</div>
49
+ <div data-testid="user-id">{userId}</div>
34
50
  <div data-testid="is-ready">{context.isReady.toString()}</div>
35
51
  <div data-testid="user-id-override">
36
52
  {context.getUserIdOverrideFromLocalStorage() || 'none'}
37
53
  </div>
38
- <div data-testid="user-id-default">
39
- {context.getUserIdDefaultFromLocalStorage() || 'none'}
40
- </div>
41
54
  </div>
42
55
  );
43
56
  };
@@ -122,7 +135,7 @@ describe('UserIdentityProvider', () => {
122
135
  return render(
123
136
  <Provider>
124
137
  <LocalStorageProvider>
125
- <UserIdentityProvider>{children}</UserIdentityProvider>
138
+ <UserIdentityProvider userIdService={testUserIdService}>{children}</UserIdentityProvider>
126
139
  </LocalStorageProvider>
127
140
  </Provider>,
128
141
  );
@@ -220,50 +233,6 @@ describe('UserIdentityProvider', () => {
220
233
 
221
234
  consoleSpy.mockRestore();
222
235
  });
223
-
224
- it('should set userIdAtom correctly when multiple components use useUserIdentity', async () => {
225
- // Component that sets override - the atom will be set by useUserIdentity
226
- const ComponentWithActions: React.FC = () => {
227
- const context = useUserIdentity();
228
-
229
- React.useEffect(() => {
230
- // Set override on mount
231
- context.setUserIdOverrideInLocalStorage('multi-component-override');
232
- }, [context]);
233
-
234
- // Get userId from context instead of atom directly
235
- const userId = context.getUserIdOrDefault();
236
-
237
- return (
238
- <div>
239
- <div data-testid="current-user-id">{userId}</div>
240
- </div>
241
- );
242
- };
243
-
244
- renderWithProviders(
245
- <>
246
- <ComponentWithActions />
247
- <AtomReaderComponent />
248
- </>,
249
- );
250
-
251
- // Wait for the atom to be set
252
- await waitFor(() => {
253
- const atomValue = screen.getByTestId('atom-reader').textContent;
254
- expect(atomValue).not.toBe('not-set');
255
- });
256
-
257
- // Both components should see the same atom value
258
- // Note: The atom is set by useUserIdentity's useEffect, which runs after
259
- // the override is set in localStorage, so it should reflect the override
260
- await waitFor(() => {
261
- const atomValue = screen.getByTestId('atom-reader').textContent;
262
- // The atom should be set to the override value since it was set before
263
- // the component mounted, or it will be the generated default
264
- expect(atomValue).toBeTruthy();
265
- });
266
- });
267
236
  });
268
237
 
269
238
  describe('getUserIdOrDefault', () => {
@@ -276,40 +245,6 @@ describe('UserIdentityProvider', () => {
276
245
  expect(screen.getByTestId('user-id').textContent).toBe('override-123');
277
246
  });
278
247
  });
279
-
280
- it('should return default userId if override does not exist', async () => {
281
- localStorage.setItem('v1-spiffy-user-id-default', 'default-456');
282
-
283
- renderWithProviders(<MockComponent />);
284
-
285
- await waitFor(() => {
286
- expect(screen.getByTestId('user-id').textContent).toBe('default-456');
287
- });
288
- });
289
-
290
- it('should generate and store new userId if neither exists', async () => {
291
- renderWithProviders(<MockComponent />);
292
-
293
- await waitFor(() => {
294
- const userId = screen.getByTestId('user-id').textContent;
295
- expect(userId).toContain('spiffy-user-id-');
296
- expect(userId).toContain('test-uuid-12345');
297
- });
298
-
299
- // Verify it was stored in localStorage
300
- expect(localStorage.getItem('v1-spiffy-user-id-default')).toContain('spiffy-user-id-');
301
- });
302
-
303
- it('should prioritize override over default', async () => {
304
- localStorage.setItem('v1-spiffy-user-id-override', 'override-789');
305
- localStorage.setItem('v1-spiffy-user-id-default', 'default-012');
306
-
307
- renderWithProviders(<MockComponent />);
308
-
309
- await waitFor(() => {
310
- expect(screen.getByTestId('user-id').textContent).toBe('override-789');
311
- });
312
- });
313
248
  });
314
249
 
315
250
  describe('LocalStorage Operations', () => {
@@ -323,33 +258,6 @@ describe('UserIdentityProvider', () => {
323
258
  });
324
259
  });
325
260
 
326
- it('should get userId default from localStorage', async () => {
327
- localStorage.setItem('v1-spiffy-user-id-default', 'test-default');
328
-
329
- renderWithProviders(<MockComponent />);
330
-
331
- await waitFor(() => {
332
- expect(screen.getByTestId('user-id-default').textContent).toBe('test-default');
333
- });
334
- });
335
-
336
- it('should set userId default in localStorage', async () => {
337
- const ComponentWithSet: React.FC = () => {
338
- const context = useUserIdentity();
339
- React.useEffect(() => {
340
- context.setUserIdDefaultInLocalStorage('new-default-id');
341
- }, [context]);
342
-
343
- return <div data-testid="set-component">Set</div>;
344
- };
345
-
346
- renderWithProviders(<ComponentWithSet />);
347
-
348
- await waitFor(() => {
349
- expect(localStorage.getItem('v1-spiffy-user-id-default')).toBe('new-default-id');
350
- });
351
- });
352
-
353
261
  it('should set userId override in localStorage', async () => {
354
262
  const ComponentWithSet: React.FC = () => {
355
263
  const context = useUserIdentity();
@@ -386,27 +294,6 @@ describe('UserIdentityProvider', () => {
386
294
  });
387
295
  });
388
296
 
389
- it('should log info when setting userId default', async () => {
390
- const logSpy = vi.spyOn(Logger, 'logInfo');
391
-
392
- const ComponentWithSet: React.FC = () => {
393
- const context = useUserIdentity();
394
- React.useEffect(() => {
395
- context.setUserIdDefaultInLocalStorage('logged-default-id');
396
- }, [context]);
397
-
398
- return <div>Set</div>;
399
- };
400
-
401
- renderWithProviders(<ComponentWithSet />);
402
-
403
- await waitFor(() => {
404
- expect(logSpy).toHaveBeenCalledWith(
405
- 'setUserIdDefaultInLocalStorage - Setting user_id=logged-default-id',
406
- );
407
- });
408
- });
409
-
410
297
  it('should log info when setting userId override', async () => {
411
298
  const logSpy = vi.spyOn(Logger, 'logInfo');
412
299