@envive-ai/react-hooks 0.3.7 → 0.3.9

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 (460) hide show
  1. package/dist/_virtual/rolldown_runtime.cjs +0 -2
  2. package/dist/application/commerce-api.cjs +1 -1
  3. package/dist/application/commerce-api.js +1 -1
  4. package/dist/application/models/chatElementDisplayLocationV3.cjs +5 -1
  5. package/dist/application/models/chatElementDisplayLocationV3.d.cts +5 -1
  6. package/dist/application/models/chatElementDisplayLocationV3.d.ts +5 -1
  7. package/dist/application/models/chatElementDisplayLocationV3.js +5 -1
  8. package/dist/application/models/frontendConfigV3.d.cts +2 -2
  9. package/dist/application/models/frontendConfigV3.d.ts +2 -2
  10. package/dist/application/models/variantInfo/variantInfo.cjs +2 -2
  11. package/dist/application/models/variantInfo/variantInfo.d.cts +2 -2
  12. package/dist/application/models/variantInfo/variantInfo.d.ts +2 -2
  13. package/dist/application/models/variantInfo/variantInfo.js +2 -2
  14. package/dist/application/utils/widgetTextRequestToApiRequest.cjs +6 -2
  15. package/dist/application/utils/widgetTextRequestToApiRequest.js +6 -2
  16. package/dist/atoms/app/index.cjs +4 -4
  17. package/dist/atoms/app/index.d.cts +7 -7
  18. package/dist/atoms/app/index.d.ts +2 -2
  19. package/dist/atoms/app/index.js +4 -4
  20. package/dist/atoms/app/variant.d.cts +6 -6
  21. package/dist/atoms/app/variant.d.ts +6 -6
  22. package/dist/atoms/chat/chatState.d.cts +18 -18
  23. package/dist/atoms/chat/chatState.d.ts +17 -17
  24. package/dist/atoms/chat/form.d.cts +2 -2
  25. package/dist/atoms/chat/form.d.ts +2 -2
  26. package/dist/atoms/chat/index.cjs +7 -1
  27. package/dist/atoms/chat/index.d.cts +5 -4
  28. package/dist/atoms/chat/index.d.ts +5 -4
  29. package/dist/atoms/chat/index.js +3 -2
  30. package/dist/atoms/chat/lastMessage.d.cts +2 -2
  31. package/dist/atoms/chat/lastMessage.d.ts +2 -2
  32. package/dist/atoms/chat/messageQueue.cjs +1 -0
  33. package/dist/atoms/chat/messageQueue.d.cts +31 -0
  34. package/dist/atoms/chat/messageQueue.d.ts +31 -0
  35. package/dist/atoms/chat/messageQueue.js +1 -1
  36. package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
  37. package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
  38. package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
  39. package/dist/atoms/chat/renderedWidgetRefs.d.ts +2 -2
  40. package/dist/atoms/chat/replies.cjs +46 -0
  41. package/dist/atoms/chat/replies.d.cts +14 -0
  42. package/dist/atoms/chat/replies.d.ts +14 -0
  43. package/dist/atoms/chat/replies.js +45 -0
  44. package/dist/atoms/chat/suggestions.d.cts +2 -2
  45. package/dist/atoms/chat/suggestions.d.ts +2 -2
  46. package/dist/atoms/globalSearch/globalSearch.d.cts +5 -5
  47. package/dist/atoms/globalSearch/globalSearch.d.ts +5 -5
  48. package/dist/atoms/org/customerService.d.cts +6 -6
  49. package/dist/atoms/org/customerService.d.ts +6 -6
  50. package/dist/atoms/org/graphqlConfig.d.cts +4 -4
  51. package/dist/atoms/org/graphqlConfig.d.ts +4 -4
  52. package/dist/atoms/org/index.cjs +2 -2
  53. package/dist/atoms/org/index.js +2 -2
  54. package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
  55. package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
  56. package/dist/atoms/org/orgAnalyticsConfig.d.cts +5 -5
  57. package/dist/atoms/org/orgAnalyticsConfig.d.ts +5 -5
  58. package/dist/atoms/search/chatSearch.cjs +1 -1
  59. package/dist/atoms/search/chatSearch.d.cts +17 -17
  60. package/dist/atoms/search/chatSearch.d.ts +17 -17
  61. package/dist/atoms/search/chatSearch.js +1 -1
  62. package/dist/atoms/search/searchAPI.cjs +1 -1
  63. package/dist/atoms/search/searchAPI.d.cts +13 -13
  64. package/dist/atoms/search/searchAPI.d.ts +13 -13
  65. package/dist/atoms/search/searchAPI.js +1 -1
  66. package/dist/atoms/search/types.d.cts +1 -1
  67. package/dist/atoms/widget/chatPreviewLoading.d.cts +2 -2
  68. package/dist/atoms/widget/chatPreviewLoading.d.ts +2 -2
  69. package/dist/contexts/amplitudeContext/amplitudeContext.cjs +6 -4
  70. package/dist/contexts/amplitudeContext/amplitudeContext.js +6 -4
  71. package/dist/contexts/enviveContext/WindowChatToggleBinder.cjs +66 -0
  72. package/dist/contexts/enviveContext/WindowChatToggleBinder.js +65 -0
  73. package/dist/contexts/enviveContext/enviveContext.cjs +40 -17
  74. package/dist/contexts/enviveContext/enviveContext.d.cts +4 -1
  75. package/dist/contexts/enviveContext/enviveContext.d.ts +4 -1
  76. package/dist/contexts/enviveContext/enviveContext.js +41 -18
  77. package/dist/contexts/enviveContext/types.d.cts +1 -1
  78. package/dist/contexts/enviveContext/types.d.ts +1 -1
  79. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.cjs +56 -2
  80. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.cts +6 -1
  81. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.ts +6 -1
  82. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.js +56 -2
  83. package/dist/contexts/graphqlContext/graphqlContext.cjs +15 -10
  84. package/dist/contexts/graphqlContext/graphqlContext.js +11 -6
  85. package/dist/contexts/graphqlContext/mockV3Config.cjs +65 -58
  86. package/dist/contexts/graphqlContext/mockV3Config.js +27 -21
  87. package/dist/contexts/hardcopyContext/hardcopyContext.cjs +29 -1
  88. package/dist/contexts/hardcopyContext/hardcopyContext.js +29 -1
  89. package/dist/contexts/newOrgConfigContext/newOrgConfigContext.cjs +1 -1
  90. package/dist/contexts/newOrgConfigContext/newOrgConfigContext.js +1 -1
  91. package/dist/contexts/pageContext/mapping.cjs +9 -1
  92. package/dist/contexts/pageContext/mapping.js +9 -1
  93. package/dist/contexts/pageContext/pageContext.cjs +8 -3
  94. package/dist/contexts/pageContext/pageContext.d.cts +2 -1
  95. package/dist/contexts/pageContext/pageContext.d.ts +2 -1
  96. package/dist/contexts/pageContext/pageContext.js +8 -3
  97. package/dist/contexts/pageContext/types.d.cts +11 -3
  98. package/dist/contexts/pageContext/types.d.ts +11 -3
  99. package/dist/contexts/salesAgentContext/chatAPI.cjs +44 -8
  100. package/dist/contexts/salesAgentContext/chatAPI.d.cts +7 -6
  101. package/dist/contexts/salesAgentContext/chatAPI.d.ts +7 -6
  102. package/dist/contexts/salesAgentContext/chatAPI.js +44 -8
  103. package/dist/contexts/salesAgentContext/formSubmittedUtils.cjs +37 -0
  104. package/dist/contexts/salesAgentContext/formSubmittedUtils.js +36 -0
  105. package/dist/contexts/salesAgentContext/index.d.cts +2 -2
  106. package/dist/contexts/salesAgentContext/index.d.ts +2 -2
  107. package/dist/contexts/salesAgentContext/salesAgentContext.cjs +39 -6
  108. package/dist/contexts/salesAgentContext/salesAgentContext.d.cts +11 -4
  109. package/dist/contexts/salesAgentContext/salesAgentContext.d.ts +11 -4
  110. package/dist/contexts/salesAgentContext/salesAgentContext.js +40 -7
  111. package/dist/contexts/salesAgentContext/salesAgentService.cjs +13 -7
  112. package/dist/contexts/salesAgentContext/salesAgentService.js +13 -7
  113. package/dist/contexts/searchContext/searchContext.cjs +1 -1
  114. package/dist/contexts/searchContext/searchContext.js +1 -1
  115. package/dist/contexts/types.d.cts +1 -1
  116. package/dist/contexts/typesV3.cjs +2 -7
  117. package/dist/contexts/typesV3.d.cts +19 -11
  118. package/dist/contexts/typesV3.d.ts +21 -13
  119. package/dist/contexts/typesV3.js +3 -7
  120. package/dist/contexts/userIdentityContext/userIdentityContext.cjs +22 -29
  121. package/dist/contexts/userIdentityContext/userIdentityContext.d.cts +9 -8
  122. package/dist/contexts/userIdentityContext/userIdentityContext.d.ts +9 -8
  123. package/dist/contexts/userIdentityContext/userIdentityContext.js +22 -29
  124. package/dist/contexts/widgetConfigContext/widgetConfigContext.cjs +2 -1
  125. package/dist/contexts/widgetConfigContext/widgetConfigContext.js +2 -1
  126. package/dist/hooks/ElementObserver/useElementObserver.cjs +3 -2
  127. package/dist/hooks/ElementObserver/useElementObserver.js +3 -2
  128. package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.ts +2 -2
  129. package/dist/hooks/Search/useSearch.cjs +2 -2
  130. package/dist/hooks/Search/useSearch.js +2 -2
  131. package/dist/hooks/Search/useSearchInput.cjs +2 -2
  132. package/dist/hooks/Search/useSearchInput.js +2 -2
  133. package/dist/hooks/utils.d.cts +1 -1
  134. package/dist/mocks/index.cjs +5 -0
  135. package/dist/mocks/index.d.cts +2 -0
  136. package/dist/mocks/index.d.ts +2 -0
  137. package/dist/mocks/index.js +3 -0
  138. package/dist/mocks/salesAgentMockData.cjs +207 -0
  139. package/dist/mocks/salesAgentMockData.d.cts +11 -0
  140. package/dist/mocks/salesAgentMockData.d.ts +11 -0
  141. package/dist/mocks/salesAgentMockData.js +204 -0
  142. package/dist/services/amplitudeService/amplitudeService.cjs +77 -12
  143. package/dist/services/amplitudeService/amplitudeService.d.cts +12 -3
  144. package/dist/services/amplitudeService/amplitudeService.d.ts +12 -3
  145. package/dist/services/amplitudeService/amplitudeService.js +77 -12
  146. package/dist/services/userIdentityService/index.cjs +3 -0
  147. package/dist/services/userIdentityService/index.d.cts +2 -0
  148. package/dist/services/userIdentityService/index.d.ts +2 -0
  149. package/dist/services/userIdentityService/index.js +3 -0
  150. package/dist/services/userIdentityService/userIdentityService.cjs +49 -0
  151. package/dist/services/userIdentityService/userIdentityService.d.cts +19 -0
  152. package/dist/services/userIdentityService/userIdentityService.d.ts +19 -0
  153. package/dist/services/userIdentityService/userIdentityService.js +48 -0
  154. package/package.json +18 -5
  155. package/src/application/models/chatElementDisplayLocationV3.ts +4 -0
  156. package/src/application/models/frontendConfigV3.ts +1 -1
  157. package/src/application/models/variantInfo/variantInfo.ts +1 -1
  158. package/src/application/utils/widgetTextRequestToApiRequest.ts +7 -5
  159. package/src/atoms/app/index.ts +9 -7
  160. package/src/atoms/chat/index.ts +1 -0
  161. package/src/atoms/chat/replies.ts +56 -0
  162. package/src/contexts/amplitudeContext/__tests__/amplitudeContext.test.tsx +47 -66
  163. package/src/contexts/amplitudeContext/amplitudeContext.tsx +4 -1
  164. package/src/contexts/enviveContext/WindowChatToggleBinder.tsx +66 -0
  165. package/src/contexts/enviveContext/enviveContext.tsx +50 -7
  166. package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +101 -2
  167. package/src/contexts/graphqlContext/graphqlContext.tsx +11 -2
  168. package/src/contexts/graphqlContext/mockV3Config.ts +19 -4
  169. package/src/contexts/hardcopyContext/hardcopyContext.tsx +29 -0
  170. package/src/contexts/pageContext/mapping.ts +16 -1
  171. package/src/contexts/pageContext/pageContext.tsx +12 -3
  172. package/src/contexts/pageContext/types.ts +16 -1
  173. package/src/contexts/salesAgentContext/chatAPI.ts +52 -11
  174. package/src/contexts/salesAgentContext/formSubmittedUtils.ts +57 -0
  175. package/src/contexts/salesAgentContext/salesAgentContext.tsx +71 -5
  176. package/src/contexts/salesAgentContext/salesAgentService.ts +15 -9
  177. package/src/contexts/searchContext/__tests__/searchContext.test.tsx +3 -1
  178. package/src/contexts/typesV3.ts +22 -12
  179. package/src/contexts/userIdentityContext/__tests__/userIdentityContext.test.tsx +18 -131
  180. package/src/contexts/userIdentityContext/userIdentityContext.tsx +47 -41
  181. package/src/contexts/widgetConfigContext/widgetConfigContext.tsx +4 -0
  182. package/src/hooks/ElementObserver/useElementObserver.ts +2 -1
  183. package/src/hooks/Search/__tests__/useSearch.test.tsx +11 -1
  184. package/src/mocks/index.ts +1 -0
  185. package/src/mocks/salesAgentMockData.ts +247 -0
  186. package/src/services/amplitudeService/__tests__/amplitudeService.test.ts +17 -0
  187. package/src/services/amplitudeService/amplitudeService.ts +106 -11
  188. package/src/services/userIdentityService/index.ts +1 -0
  189. package/src/services/userIdentityService/userIdentityService.ts +64 -0
  190. package/dist/_virtual/rolldown_runtime.js +0 -29
  191. package/dist/contexts/featureFlagContext/featureFlagContext.cjs +0 -105
  192. package/dist/contexts/featureFlagContext/featureFlagContext.d.cts +0 -19
  193. package/dist/contexts/featureFlagContext/featureFlagContext.d.ts +0 -19
  194. package/dist/contexts/featureFlagContext/featureFlagContext.js +0 -102
  195. package/dist/contexts/featureFlagContext/index.cjs +0 -4
  196. package/dist/contexts/featureFlagContext/index.d.cts +0 -2
  197. package/dist/contexts/featureFlagContext/index.d.ts +0 -2
  198. package/dist/contexts/featureFlagContext/index.js +0 -3
  199. package/dist/node_modules/classnames/index.cjs +0 -52
  200. package/dist/node_modules/classnames/index.js +0 -49
  201. package/dist/packages/components-v3/dist/ChatHeader/ChatHeader.cjs +0 -2
  202. package/dist/packages/components-v3/dist/ChatHeader/ChatHeader.js +0 -4
  203. package/dist/packages/components-v3/dist/ChatHeader/components/CloseButton.cjs +0 -16
  204. package/dist/packages/components-v3/dist/ChatHeader/components/CloseButton.js +0 -17
  205. package/dist/packages/components-v3/dist/ChatHeader/components/Handle.cjs +0 -6
  206. package/dist/packages/components-v3/dist/ChatHeader/components/Handle.js +0 -8
  207. package/dist/packages/components-v3/dist/ChatHeader/components/Layout.cjs +0 -4
  208. package/dist/packages/components-v3/dist/ChatHeader/components/Layout.js +0 -6
  209. package/dist/packages/components-v3/dist/ChatHeader/components/Logo.cjs +0 -3
  210. package/dist/packages/components-v3/dist/ChatHeader/components/Logo.js +0 -5
  211. package/dist/packages/components-v3/dist/ChatHeader/components/Toggle.cjs +0 -7
  212. package/dist/packages/components-v3/dist/ChatHeader/components/Toggle.js +0 -9
  213. package/dist/packages/components-v3/dist/ChatHeader/components/ToggleItem.cjs +0 -6
  214. package/dist/packages/components-v3/dist/ChatHeader/components/ToggleItem.js +0 -8
  215. package/dist/packages/components-v3/dist/ChatHeader/components/index.cjs +0 -6
  216. package/dist/packages/components-v3/dist/ChatHeader/components/index.js +0 -8
  217. package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetCloseButtonProperties.cjs +0 -22
  218. package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetCloseButtonProperties.js +0 -23
  219. package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetHandleProperties.cjs +0 -58
  220. package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetHandleProperties.js +0 -59
  221. package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetLayoutProperties.cjs +0 -8
  222. package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetLayoutProperties.js +0 -9
  223. package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetToggleOptionProperties.cjs +0 -1
  224. package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetToggleOptionProperties.js +0 -3
  225. package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetToggleProperties.cjs +0 -12
  226. package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetToggleProperties.js +0 -13
  227. package/dist/packages/components-v3/dist/ChatHeader/index.cjs +0 -2
  228. package/dist/packages/components-v3/dist/ChatHeader/index.js +0 -4
  229. package/dist/packages/components-v3/dist/ChatHeader/types/index.cjs +0 -11
  230. package/dist/packages/components-v3/dist/ChatHeader/types/index.js +0 -10
  231. package/dist/packages/components-v3/dist/Container/Container.cjs +0 -11
  232. package/dist/packages/components-v3/dist/Container/Container.js +0 -12
  233. package/dist/packages/components-v3/dist/Container/hooks/useGetCenterContentProperties.cjs +0 -1
  234. package/dist/packages/components-v3/dist/Container/hooks/useGetCenterContentProperties.js +0 -3
  235. package/dist/packages/components-v3/dist/Container/hooks/useGetFluidProperties.cjs +0 -1
  236. package/dist/packages/components-v3/dist/Container/hooks/useGetFluidProperties.js +0 -3
  237. package/dist/packages/components-v3/dist/Container/index.cjs +0 -1
  238. package/dist/packages/components-v3/dist/Container/index.js +0 -3
  239. package/dist/packages/components-v3/dist/FloatingButton/FloatingButton.cjs +0 -2
  240. package/dist/packages/components-v3/dist/FloatingButton/FloatingButton.js +0 -4
  241. package/dist/packages/components-v3/dist/FloatingButton/components/Button.cjs +0 -9
  242. package/dist/packages/components-v3/dist/FloatingButton/components/Button.js +0 -10
  243. package/dist/packages/components-v3/dist/FloatingButton/components/Container.cjs +0 -9
  244. package/dist/packages/components-v3/dist/FloatingButton/components/Container.js +0 -10
  245. package/dist/packages/components-v3/dist/FloatingButton/components/Icon.cjs +0 -3
  246. package/dist/packages/components-v3/dist/FloatingButton/components/Icon.js +0 -5
  247. package/dist/packages/components-v3/dist/FloatingButton/components/Wrapper.cjs +0 -9
  248. package/dist/packages/components-v3/dist/FloatingButton/components/Wrapper.js +0 -10
  249. package/dist/packages/components-v3/dist/FloatingButton/components/index.cjs +0 -4
  250. package/dist/packages/components-v3/dist/FloatingButton/components/index.js +0 -6
  251. package/dist/packages/components-v3/dist/FloatingButton/index.cjs +0 -2
  252. package/dist/packages/components-v3/dist/FloatingButton/index.js +0 -4
  253. package/dist/packages/components-v3/dist/FloatingButton/types/types.cjs +0 -17
  254. package/dist/packages/components-v3/dist/FloatingButton/types/types.js +0 -16
  255. package/dist/packages/components-v3/dist/Image/Image.cjs +0 -16
  256. package/dist/packages/components-v3/dist/Image/Image.js +0 -17
  257. package/dist/packages/components-v3/dist/Image/hooks/useGetAccessibilityProperties.cjs +0 -1
  258. package/dist/packages/components-v3/dist/Image/hooks/useGetAccessibilityProperties.js +0 -3
  259. package/dist/packages/components-v3/dist/Image/hooks/useGetAspectRatioProperties.cjs +0 -1
  260. package/dist/packages/components-v3/dist/Image/hooks/useGetAspectRatioProperties.js +0 -3
  261. package/dist/packages/components-v3/dist/Image/hooks/useGetObjectFitProperties.cjs +0 -1
  262. package/dist/packages/components-v3/dist/Image/hooks/useGetObjectFitProperties.js +0 -3
  263. package/dist/packages/components-v3/dist/Image/hooks/useGetRoundedProperties.cjs +0 -1
  264. package/dist/packages/components-v3/dist/Image/hooks/useGetRoundedProperties.js +0 -3
  265. package/dist/packages/components-v3/dist/Image/hooks/useGetSkeletonProperties.cjs +0 -1
  266. package/dist/packages/components-v3/dist/Image/hooks/useGetSkeletonProperties.js +0 -3
  267. package/dist/packages/components-v3/dist/Image/hooks/useGetWidthProperties.cjs +0 -1
  268. package/dist/packages/components-v3/dist/Image/hooks/useGetWidthProperties.js +0 -3
  269. package/dist/packages/components-v3/dist/Image/hooks/useHandleImageLoading.cjs +0 -1
  270. package/dist/packages/components-v3/dist/Image/hooks/useHandleImageLoading.js +0 -3
  271. package/dist/packages/components-v3/dist/ImageGallery/ImageGallery.cjs +0 -2
  272. package/dist/packages/components-v3/dist/ImageGallery/ImageGallery.js +0 -4
  273. package/dist/packages/components-v3/dist/ImageGallery/components/ImageItem.cjs +0 -2
  274. package/dist/packages/components-v3/dist/ImageGallery/components/ImageItem.js +0 -4
  275. package/dist/packages/components-v3/dist/ImageGallery/components/Layout.cjs +0 -15
  276. package/dist/packages/components-v3/dist/ImageGallery/components/Layout.js +0 -16
  277. package/dist/packages/components-v3/dist/ImageGallery/components/NormalLayout.cjs +0 -4
  278. package/dist/packages/components-v3/dist/ImageGallery/components/NormalLayout.js +0 -4
  279. package/dist/packages/components-v3/dist/ImageGallery/components/OverlappedLayout.cjs +0 -1
  280. package/dist/packages/components-v3/dist/ImageGallery/components/OverlappedLayout.js +0 -3
  281. package/dist/packages/components-v3/dist/ImageGallery/components/index.cjs +0 -4
  282. package/dist/packages/components-v3/dist/ImageGallery/components/index.js +0 -6
  283. package/dist/packages/components-v3/dist/ImageGallery/hooks/useGetContainerProperties.cjs +0 -1
  284. package/dist/packages/components-v3/dist/ImageGallery/hooks/useGetContainerProperties.js +0 -3
  285. package/dist/packages/components-v3/dist/ImageGallery/index.cjs +0 -2
  286. package/dist/packages/components-v3/dist/ImageGallery/index.js +0 -4
  287. package/dist/packages/components-v3/dist/ImageGallery/types/types.cjs +0 -13
  288. package/dist/packages/components-v3/dist/ImageGallery/types/types.js +0 -12
  289. package/dist/packages/components-v3/dist/PromptButton/PromptButton.cjs +0 -12
  290. package/dist/packages/components-v3/dist/PromptButton/PromptButton.js +0 -13
  291. package/dist/packages/components-v3/dist/PromptButton/components/Icon.cjs +0 -1
  292. package/dist/packages/components-v3/dist/PromptButton/components/Icon.js +0 -3
  293. package/dist/packages/components-v3/dist/PromptButton/components/Label.cjs +0 -3
  294. package/dist/packages/components-v3/dist/PromptButton/components/Label.js +0 -5
  295. package/dist/packages/components-v3/dist/PromptButton/components/Layout.cjs +0 -12
  296. package/dist/packages/components-v3/dist/PromptButton/components/Layout.js +0 -13
  297. package/dist/packages/components-v3/dist/PromptButton/components/Loading.cjs +0 -9
  298. package/dist/packages/components-v3/dist/PromptButton/components/Loading.js +0 -10
  299. package/dist/packages/components-v3/dist/PromptButton/components/index.cjs +0 -4
  300. package/dist/packages/components-v3/dist/PromptButton/components/index.js +0 -6
  301. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetBoldTextProperties.cjs +0 -1
  302. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetBoldTextProperties.js +0 -3
  303. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetLayoutBaseProperties.cjs +0 -8
  304. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetLayoutBaseProperties.js +0 -9
  305. package/dist/packages/components-v3/dist/PromptButton/index.cjs +0 -2
  306. package/dist/packages/components-v3/dist/PromptButton/index.js +0 -4
  307. package/dist/packages/components-v3/dist/PromptButton/types/index.cjs +0 -13
  308. package/dist/packages/components-v3/dist/PromptButton/types/index.js +0 -12
  309. package/dist/packages/components-v3/dist/PromptCarousel/PromptCarousel.cjs +0 -12
  310. package/dist/packages/components-v3/dist/PromptCarousel/PromptCarousel.js +0 -14
  311. package/dist/packages/components-v3/dist/PromptCarousel/components/BlockScrollContainer.cjs +0 -9
  312. package/dist/packages/components-v3/dist/PromptCarousel/components/BlockScrollContainer.js +0 -10
  313. package/dist/packages/components-v3/dist/PromptCarousel/components/ButtonContainerRow.cjs +0 -11
  314. package/dist/packages/components-v3/dist/PromptCarousel/components/ButtonContainerRow.js +0 -12
  315. package/dist/packages/components-v3/dist/PromptCarousel/components/CarouselContentWithBlockScroll.cjs +0 -4
  316. package/dist/packages/components-v3/dist/PromptCarousel/components/CarouselContentWithBlockScroll.js +0 -6
  317. package/dist/packages/components-v3/dist/PromptCarousel/components/CarouselContentWithRowScroll.cjs +0 -4
  318. package/dist/packages/components-v3/dist/PromptCarousel/components/CarouselContentWithRowScroll.js +0 -6
  319. package/dist/packages/components-v3/dist/PromptCarousel/components/index.cjs +0 -3
  320. package/dist/packages/components-v3/dist/PromptCarousel/components/index.js +0 -5
  321. package/dist/packages/components-v3/dist/PromptCarousel/hooks/index.cjs +0 -5
  322. package/dist/packages/components-v3/dist/PromptCarousel/hooks/index.js +0 -7
  323. package/dist/packages/components-v3/dist/PromptCarousel/hooks/useButtonScrollPosition.cjs +0 -1
  324. package/dist/packages/components-v3/dist/PromptCarousel/hooks/useButtonScrollPosition.js +0 -3
  325. package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselAnimation.cjs +0 -3
  326. package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselAnimation.js +0 -5
  327. package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselButtons.cjs +0 -1
  328. package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselButtons.js +0 -3
  329. package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselRefs.cjs +0 -1
  330. package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselRefs.js +0 -3
  331. package/dist/packages/components-v3/dist/PromptCarousel/hooks/useHorizontalScrollAnimation.cjs +0 -1
  332. package/dist/packages/components-v3/dist/PromptCarousel/hooks/useHorizontalScrollAnimation.js +0 -3
  333. package/dist/packages/components-v3/dist/PromptCarousel/index.cjs +0 -2
  334. package/dist/packages/components-v3/dist/PromptCarousel/index.js +0 -4
  335. package/dist/packages/components-v3/dist/PromptCarousel/types/types.cjs +0 -19
  336. package/dist/packages/components-v3/dist/PromptCarousel/types/types.js +0 -17
  337. package/dist/packages/components-v3/dist/Stack/Stack.cjs +0 -36
  338. package/dist/packages/components-v3/dist/Stack/Stack.js +0 -36
  339. package/dist/packages/components-v3/dist/Stack/hooks/useFormatStackChildren.cjs +0 -27
  340. package/dist/packages/components-v3/dist/Stack/hooks/useFormatStackChildren.js +0 -26
  341. package/dist/packages/components-v3/dist/Stack/hooks/useGetAlignProperties.cjs +0 -20
  342. package/dist/packages/components-v3/dist/Stack/hooks/useGetAlignProperties.js +0 -19
  343. package/dist/packages/components-v3/dist/Stack/hooks/useGetDirectionProperties.cjs +0 -19
  344. package/dist/packages/components-v3/dist/Stack/hooks/useGetDirectionProperties.js +0 -18
  345. package/dist/packages/components-v3/dist/Stack/hooks/useGetGapProperties.cjs +0 -16
  346. package/dist/packages/components-v3/dist/Stack/hooks/useGetGapProperties.js +0 -15
  347. package/dist/packages/components-v3/dist/Stack/hooks/useGetJustifyProperties.cjs +0 -21
  348. package/dist/packages/components-v3/dist/Stack/hooks/useGetJustifyProperties.js +0 -20
  349. package/dist/packages/components-v3/dist/Stack/hooks/useGetStyleProperties.cjs +0 -38
  350. package/dist/packages/components-v3/dist/Stack/hooks/useGetStyleProperties.js +0 -38
  351. package/dist/packages/components-v3/dist/Stack/hooks/useGetWrapProperties.cjs +0 -13
  352. package/dist/packages/components-v3/dist/Stack/hooks/useGetWrapProperties.js +0 -12
  353. package/dist/packages/components-v3/dist/Stack/index.cjs +0 -1
  354. package/dist/packages/components-v3/dist/Stack/index.js +0 -3
  355. package/dist/packages/components-v3/dist/Stack/utils/constants.cjs +0 -42
  356. package/dist/packages/components-v3/dist/Stack/utils/constants.js +0 -41
  357. package/dist/packages/components-v3/dist/Tokens/index.cjs +0 -11
  358. package/dist/packages/components-v3/dist/Tokens/index.js +0 -13
  359. package/dist/packages/components-v3/dist/Typography/Typography.cjs +0 -15
  360. package/dist/packages/components-v3/dist/Typography/Typography.js +0 -16
  361. package/dist/packages/components-v3/dist/Typography/hooks/useGetAccessibilityAttributes.cjs +0 -1
  362. package/dist/packages/components-v3/dist/Typography/hooks/useGetAccessibilityAttributes.js +0 -3
  363. package/dist/packages/components-v3/dist/Typography/hooks/useGetAlignProperties.cjs +0 -1
  364. package/dist/packages/components-v3/dist/Typography/hooks/useGetAlignProperties.js +0 -3
  365. package/dist/packages/components-v3/dist/Typography/hooks/useGetColorProperties.cjs +0 -1
  366. package/dist/packages/components-v3/dist/Typography/hooks/useGetColorProperties.js +0 -3
  367. package/dist/packages/components-v3/dist/Typography/hooks/useGetNoWrapProperties.cjs +0 -1
  368. package/dist/packages/components-v3/dist/Typography/hooks/useGetNoWrapProperties.js +0 -3
  369. package/dist/packages/components-v3/dist/Typography/hooks/useGetNumberOfLinesProperties.cjs +0 -1
  370. package/dist/packages/components-v3/dist/Typography/hooks/useGetNumberOfLinesProperties.js +0 -3
  371. package/dist/packages/components-v3/dist/Typography/hooks/useGetVariantProperties.cjs +0 -1
  372. package/dist/packages/components-v3/dist/Typography/hooks/useGetVariantProperties.js +0 -3
  373. package/dist/packages/components-v3/dist/Typography/index.cjs +0 -1
  374. package/dist/packages/components-v3/dist/Typography/index.js +0 -3
  375. package/dist/packages/components-v3/dist/WelcomeMessage/WelcomeMessage.cjs +0 -2
  376. package/dist/packages/components-v3/dist/WelcomeMessage/WelcomeMessage.js +0 -4
  377. package/dist/packages/components-v3/dist/WelcomeMessage/components/Container.cjs +0 -14
  378. package/dist/packages/components-v3/dist/WelcomeMessage/components/Container.js +0 -15
  379. package/dist/packages/components-v3/dist/WelcomeMessage/components/SparkleIcon.cjs +0 -3
  380. package/dist/packages/components-v3/dist/WelcomeMessage/components/SparkleIcon.js +0 -5
  381. package/dist/packages/components-v3/dist/WelcomeMessage/components/Text.cjs +0 -3
  382. package/dist/packages/components-v3/dist/WelcomeMessage/components/Text.js +0 -5
  383. package/dist/packages/components-v3/dist/WelcomeMessage/components/Title.cjs +0 -3
  384. package/dist/packages/components-v3/dist/WelcomeMessage/components/Title.js +0 -5
  385. package/dist/packages/components-v3/dist/WelcomeMessage/components/index.cjs +0 -4
  386. package/dist/packages/components-v3/dist/WelcomeMessage/components/index.js +0 -6
  387. package/dist/packages/components-v3/dist/WelcomeMessage/hooks/useGetContainerProperties.cjs +0 -1
  388. package/dist/packages/components-v3/dist/WelcomeMessage/hooks/useGetContainerProperties.js +0 -3
  389. package/dist/packages/components-v3/dist/WelcomeMessage/hooks/useGetSparkleIconProperties.cjs +0 -1
  390. package/dist/packages/components-v3/dist/WelcomeMessage/hooks/useGetSparkleIconProperties.js +0 -3
  391. package/dist/packages/components-v3/dist/WelcomeMessage/index.cjs +0 -2
  392. package/dist/packages/components-v3/dist/WelcomeMessage/index.js +0 -4
  393. package/dist/packages/components-v3/dist/WelcomeMessage/types/types.cjs +0 -14
  394. package/dist/packages/components-v3/dist/WelcomeMessage/types/types.js +0 -14
  395. package/dist/packages/components-v3/dist/WidgetWrapper/WidgetWrapper.cjs +0 -12
  396. package/dist/packages/components-v3/dist/WidgetWrapper/WidgetWrapper.js +0 -13
  397. package/dist/packages/components-v3/dist/WidgetWrapper/hooks/useGetWrapperProperties.cjs +0 -1
  398. package/dist/packages/components-v3/dist/WidgetWrapper/hooks/useGetWrapperProperties.js +0 -3
  399. package/dist/packages/components-v3/dist/WidgetWrapper/index.cjs +0 -2
  400. package/dist/packages/components-v3/dist/WidgetWrapper/index.js +0 -4
  401. package/dist/packages/components-v3/dist/WidgetWrapper/types/types.cjs +0 -13
  402. package/dist/packages/components-v3/dist/WidgetWrapper/types/types.js +0 -12
  403. package/dist/packages/components-v3/dist/src/models/colorsConfig.cjs +0 -26
  404. package/dist/packages/components-v3/dist/src/models/colorsConfig.js +0 -25
  405. package/dist/packages/components-v3/dist/tokens/aspectRatio/aspectRatio.cjs +0 -16
  406. package/dist/packages/components-v3/dist/tokens/aspectRatio/aspectRatio.js +0 -17
  407. package/dist/packages/components-v3/dist/tokens/breakpoints/breakpoints.cjs +0 -25
  408. package/dist/packages/components-v3/dist/tokens/breakpoints/breakpoints.js +0 -23
  409. package/dist/packages/components-v3/dist/tokens/colors/colors.cjs +0 -51
  410. package/dist/packages/components-v3/dist/tokens/colors/colors.js +0 -51
  411. package/dist/packages/components-v3/dist/tokens/radius/radius.cjs +0 -64
  412. package/dist/packages/components-v3/dist/tokens/radius/radius.js +0 -65
  413. package/dist/packages/components-v3/dist/tokens/theme/theme.cjs +0 -13
  414. package/dist/packages/components-v3/dist/tokens/theme/theme.js +0 -12
  415. package/dist/packages/components-v3/dist/tokens/typography/fontFamily.cjs +0 -25
  416. package/dist/packages/components-v3/dist/tokens/typography/fontFamily.js +0 -25
  417. package/dist/packages/components-v3/dist/tokens/typography/fontSize.cjs +0 -37
  418. package/dist/packages/components-v3/dist/tokens/typography/fontSize.js +0 -38
  419. package/dist/packages/components-v3/dist/tokens/typography/fontWeight.cjs +0 -17
  420. package/dist/packages/components-v3/dist/tokens/typography/fontWeight.js +0 -18
  421. package/dist/packages/components-v3/dist/tokens/typography/letterSpacing.cjs +0 -15
  422. package/dist/packages/components-v3/dist/tokens/typography/letterSpacing.js +0 -16
  423. package/dist/packages/components-v3/dist/tokens/typography/lineHeight.cjs +0 -31
  424. package/dist/packages/components-v3/dist/tokens/typography/lineHeight.js +0 -32
  425. package/dist/packages/components-v3/dist/tokens/typography/typography.cjs +0 -5
  426. package/dist/packages/components-v3/dist/tokens/typography/typography.js +0 -7
  427. package/dist/packages/components-v3/dist/tokens/utils.cjs +0 -7
  428. package/dist/packages/components-v3/dist/tokens/utils.js +0 -6
  429. package/dist/packages/components-v3/dist/utils/CustomIcon.cjs +0 -2
  430. package/dist/packages/components-v3/dist/utils/CustomIcon.js +0 -4
  431. package/dist/packages/components-v3/dist/utils/useCheckIsMobile.cjs +0 -1
  432. package/dist/packages/components-v3/dist/utils/useCheckIsMobile.js +0 -3
  433. package/dist/packages/components-v3/dist/utils/useResponsiveValue.cjs +0 -57
  434. package/dist/packages/components-v3/dist/utils/useResponsiveValue.js +0 -56
  435. package/dist/packages/icons/dist/FourPointStar.cjs +0 -8
  436. package/dist/packages/icons/dist/FourPointStar.js +0 -9
  437. package/dist/packages/icons/dist/IconCloseRounded.cjs +0 -22
  438. package/dist/packages/icons/dist/IconCloseRounded.js +0 -22
  439. package/dist/packages/icons/dist/IconCloseSharp.cjs +0 -31
  440. package/dist/packages/icons/dist/IconCloseSharp.js +0 -31
  441. package/dist/packages/icons/dist/IconCloseTransparent.cjs +0 -24
  442. package/dist/packages/icons/dist/IconCloseTransparent.js +0 -24
  443. package/dist/packages/icons/dist/Sparkles.cjs +0 -8
  444. package/dist/packages/icons/dist/Sparkles.js +0 -9
  445. package/dist/packages/icons/dist/_virtual/rolldown_runtime.cjs +0 -28
  446. package/dist/packages/icons/dist/_virtual/rolldown_runtime.js +0 -26
  447. package/dist/packages/icons/dist/node_modules/react/cjs/react-jsx-runtime.development.cjs +0 -697
  448. package/dist/packages/icons/dist/node_modules/react/cjs/react-jsx-runtime.development.js +0 -697
  449. package/dist/packages/icons/dist/node_modules/react/cjs/react-jsx-runtime.production.min.cjs +0 -44
  450. package/dist/packages/icons/dist/node_modules/react/cjs/react-jsx-runtime.production.min.js +0 -44
  451. package/dist/packages/icons/dist/node_modules/react/cjs/react.development.cjs +0 -1529
  452. package/dist/packages/icons/dist/node_modules/react/cjs/react.development.js +0 -1529
  453. package/dist/packages/icons/dist/node_modules/react/cjs/react.production.min.cjs +0 -330
  454. package/dist/packages/icons/dist/node_modules/react/cjs/react.production.min.js +0 -330
  455. package/dist/packages/icons/dist/node_modules/react/index.cjs +0 -14
  456. package/dist/packages/icons/dist/node_modules/react/index.js +0 -14
  457. package/dist/packages/icons/dist/node_modules/react/jsx-runtime.cjs +0 -14
  458. package/dist/packages/icons/dist/node_modules/react/jsx-runtime.js +0 -14
  459. package/src/contexts/featureFlagContext/featureFlagContext.tsx +0 -180
  460. package/src/contexts/featureFlagContext/index.ts +0 -1
@@ -7,11 +7,12 @@ import { AnimationSpeed, PromptCarouselRows } from '@envive-ai/react-toolkit-v3/
7
7
  import { WidgetWrapperVariant } from '@envive-ai/react-toolkit-v3/WidgetWrapper';
8
8
  import { Theme } from '@envive-ai/react-toolkit-v3/Tokens';
9
9
  import { ChatHeaderVariant } from '@envive-ai/react-toolkit-v3/ChatHeader';
10
+ import { WidgetKind } from '@envive-ai/react-toolkit-v3/SocialProof';
10
11
  import { SparkleIconColor } from '@envive-ai/react-toolkit-v3/WelcomeMessage';
11
12
 
12
13
  import { CustomerServiceType } from 'src/types/customerService';
13
14
  import { FloatingButtonLocation } from '@envive-ai/react-toolkit-v3/FloatingButton';
14
- import { ConfigVersionEnum, SocialProofWidgetKind, WidgetTypeV3 } from '../typesV3';
15
+ import { ConfigVersionEnum, WidgetTypeV3 } from '../typesV3';
15
16
 
16
17
  const mockImages = [
17
18
  {
@@ -138,6 +139,10 @@ export const mockV3FrontendConfig: FrontendConfigV3 = {
138
139
  enabled: false,
139
140
  suppressMerchantButton: false,
140
141
  },
142
+ singlePageApplicationSettings: {
143
+ enabled: false,
144
+ refreshInterval: 1000,
145
+ },
141
146
  },
142
147
  pageVariants: [],
143
148
  mountingConfigs: {},
@@ -188,7 +193,7 @@ export const mockV3FrontendConfig: FrontendConfigV3 = {
188
193
  type: WidgetTypeV3.SocialProofV3,
189
194
 
190
195
  imageGalleryLayout: ImageGalleryLayout.FOUR_GRID,
191
- kind: SocialProofWidgetKind.STATIC,
196
+ kind: WidgetKind.STATIC,
192
197
  variant: WidgetWrapperVariant.INLINE_WITH_BORDER,
193
198
  promptCarouselRows: PromptCarouselRows.TWO_ON_MOBILE_ONE_ON_DESKTOP,
194
199
  primaryButtonVariant: PromptButtonVariant.DARK,
@@ -201,7 +206,7 @@ export const mockV3FrontendConfig: FrontendConfigV3 = {
201
206
  type: WidgetTypeV3.SocialProofV3,
202
207
 
203
208
  imageGalleryLayout: ImageGalleryLayout.SINGLE,
204
- kind: SocialProofWidgetKind.STATIC,
209
+ kind: WidgetKind.STATIC,
205
210
  variant: WidgetWrapperVariant.CARD_NO_BORDER,
206
211
  promptCarouselRows: PromptCarouselRows.TWO_ON_MOBILE_ONE_ON_DESKTOP,
207
212
  primaryButtonVariant: PromptButtonVariant.DARK,
@@ -214,7 +219,7 @@ export const mockV3FrontendConfig: FrontendConfigV3 = {
214
219
  type: WidgetTypeV3.SocialProofV3,
215
220
 
216
221
  imageGalleryLayout: ImageGalleryLayout.FOUR_HORIZONTAL,
217
- kind: SocialProofWidgetKind.STATIC,
222
+ kind: WidgetKind.STATIC,
218
223
  variant: WidgetWrapperVariant.CARD_WITH_BORDER,
219
224
  promptCarouselRows: PromptCarouselRows.TWO_ON_MOBILE_ONE_ON_DESKTOP,
220
225
  primaryButtonVariant: PromptButtonVariant.DARK,
@@ -247,5 +252,15 @@ export const mockV3FrontendConfig: FrontendConfigV3 = {
247
252
  image: mockImages[0],
248
253
  hideTextField: false,
249
254
  },
255
+ 'product-card-test-widget': {
256
+ widgetConfigId: 'product-card-test-widget',
257
+ contentId: 'product-card-test-widget',
258
+ type: WidgetTypeV3.ProductCardV3,
259
+ promptButtonType: PromptButtonVariant.LIGHT,
260
+ italicizeHeadline: false,
261
+ fallbackColor: '#F9F6EA',
262
+ imageSrc:
263
+ 'https://www.bandolierstyle.com/cdn/shop/files/Lily17_Black_Gold_Chrome_MOD_Dec25_6.jpg?v=1765844272',
264
+ },
250
265
  },
251
266
  };
@@ -137,6 +137,35 @@ const MOCK_HARDCOPY_RESPONSE: Partial<Record<WidgetTypeV3, HardcopyResponse>> =
137
137
  textFieldPlaceholderText: 'Ask me anything...',
138
138
  },
139
139
  },
140
+ [WidgetTypeV3.ProductCardV3]: {
141
+ language: 'en',
142
+ values: {
143
+ headline: 'Discover Your Perfect Style',
144
+ animatedText: [
145
+ 'the perfect outfit for any occasion',
146
+ 'trending fashion that fits your lifestyle',
147
+ 'quality pieces that last',
148
+ ],
149
+ prompts: [
150
+ 'What are your best sellers?',
151
+ 'Show me summer dresses',
152
+ 'Do you have free shipping?',
153
+ 'What sizes are available?',
154
+ 'Can I return items?',
155
+ ],
156
+ placeholder: 'Ask me anything...',
157
+ },
158
+ },
159
+ [WidgetTypeV3.FloatingChatV3]: {
160
+ language: 'en',
161
+ values: {
162
+ welcomeMessageTitle: 'Welcome to Envive AI',
163
+ welcomeMessageText:
164
+ 'Your personal shopper trained on the collective knowledge of thousands of real experts!',
165
+ chatFooterTextFieldPlaceholderText: 'Ask me anything...',
166
+ disclaimerText: 'This is a disclaimer...',
167
+ },
168
+ },
140
169
  };
141
170
 
142
171
  const HardcopyContext = createContext<HardcopyContextType | undefined>(undefined);
@@ -15,7 +15,7 @@ import { isApiSearchAttributes } from 'src/application/models/guards/api/isApiSe
15
15
  import { isApiSuggestionClickedAttributes } from 'src/application/models/guards/api/isApiSuggestionClickedEventAttributes';
16
16
  import { isApiFormSubmittedResponseAttributes } from 'src/application/models/guards/api/isApiFormSubmittedResponseAttributes';
17
17
 
18
- import { PageVariantInfo, VisitPageVariantInfo } from './types';
18
+ import { HomeVariantInfo, OtherVariantInfo, PageVariantInfo, VisitPageVariantInfo } from './types';
19
19
 
20
20
  export const mapUrlResolverResponseToVariantInfo = (
21
21
  url: string,
@@ -51,6 +51,21 @@ export const mapUrlResolverResponseToVariantInfo = (
51
51
  url,
52
52
  } as VisitPageVariantInfo;
53
53
  }
54
+
55
+ if (response.variant_type === VariantTypeEnum.Home) {
56
+ return {
57
+ variantType: VariantTypeEnum.Home,
58
+ url,
59
+ } as HomeVariantInfo;
60
+ }
61
+
62
+ if (response.variant_type === VariantTypeEnum.Other) {
63
+ return {
64
+ variantType: VariantTypeEnum.Other,
65
+ url,
66
+ } as OtherVariantInfo;
67
+ }
68
+
54
69
  throw new Error('Invalid variant type');
55
70
  };
56
71
 
@@ -22,7 +22,12 @@ import { mapApiUserEventToUserEvent, mapUrlResolverResponseToVariantInfo } from
22
22
  import { PageDetails } from './types';
23
23
 
24
24
  const PageContext = createContext<
25
- (PageDetails & { isLoading: boolean; isSupported: boolean }) | undefined
25
+ | (PageDetails & {
26
+ isLoading: boolean;
27
+ isSupported: boolean;
28
+ setPageUrl: (url: string) => void;
29
+ })
30
+ | undefined
26
31
  >(undefined);
27
32
 
28
33
  export const PageProvider: React.FC<{
@@ -36,7 +41,6 @@ export const PageProvider: React.FC<{
36
41
  const [userEvent, setUserEvent] = useAtom(pageUserEventAtom);
37
42
  const [isSupported, setIsSupported] = useState(false);
38
43
  useEffect(() => {
39
- // TODO: Add support for SPA's and other changes to the URL to ensure that the pageUrl is set correctly
40
44
  setPageUrl(window.location.href);
41
45
  }, []);
42
46
 
@@ -109,6 +113,10 @@ export const PageProvider: React.FC<{
109
113
  previewMode,
110
114
  ]);
111
115
 
116
+ const setPageUrlStable = useCallback((url: string) => {
117
+ setPageUrl(url);
118
+ }, []);
119
+
112
120
  const value = useMemo(
113
121
  () => ({
114
122
  pageUrl,
@@ -116,8 +124,9 @@ export const PageProvider: React.FC<{
116
124
  userEvent,
117
125
  isLoading,
118
126
  isSupported,
127
+ setPageUrl: setPageUrlStable,
119
128
  }),
120
- [pageUrl, userEvent, variantInfo, isLoading, isSupported],
129
+ [pageUrl, userEvent, variantInfo, isLoading, isSupported, setPageUrlStable],
121
130
  );
122
131
 
123
132
  return <PageContext.Provider value={value}>{children}</PageContext.Provider>;
@@ -21,7 +21,22 @@ export type VisitPageVariantInfo = {
21
21
  url: string;
22
22
  };
23
23
 
24
- export type PageVariantInfo = PDPPageVariantInfo | PLPPageVariantInfo | VisitPageVariantInfo;
24
+ export type HomeVariantInfo = {
25
+ variantType: VariantTypeEnum.Home;
26
+ url: string;
27
+ };
28
+
29
+ export type OtherVariantInfo = {
30
+ variantType: VariantTypeEnum.Other;
31
+ url: string;
32
+ };
33
+
34
+ export type PageVariantInfo =
35
+ | PDPPageVariantInfo
36
+ | PLPPageVariantInfo
37
+ | VisitPageVariantInfo
38
+ | HomeVariantInfo
39
+ | OtherVariantInfo;
25
40
 
26
41
  export interface PageDetails {
27
42
  pageUrl: string | undefined;
@@ -1,25 +1,38 @@
1
1
  // This component will interact with the backend API to get the responses from the sales agent.
2
2
 
3
3
  import { PageVisitCategory, UserEventCategory } from '@spiffy-ai/commerce-api-client';
4
- import { Suggestion, UserEvent } from 'src/application/models';
4
+ import {
5
+ ChatElementDisplayLocationV3,
6
+ FormSubmittedAttributes,
7
+ MessageRole,
8
+ MessageType,
9
+ Suggestion,
10
+ UserEvent,
11
+ } from 'src/application/models';
5
12
  import { useSetAtom } from 'jotai';
6
13
  import { useCallback } from 'react';
7
14
  import { v4 as uuid } from 'uuid';
15
+ import { formSubmitAtom, replyEventCategoryAtom } from 'src/atoms/chat';
8
16
  import { queueUserEventAtom } from 'src/atoms/chat/messageQueue';
9
17
  import { SpiffyMetricsEventName, useAmplitude } from '../amplitudeContext';
10
18
 
11
19
  export interface SalesAgentChatAPI {
12
20
  logPageVisit: ({ pageVisitCategory }: { pageVisitCategory: PageVisitCategory }) => void;
13
21
  logUserEvent: (event: UserEvent) => void;
14
- onSuggestionClicked: (suggestion: Suggestion) => void;
22
+ onSuggestionClicked: (
23
+ suggestion: Suggestion,
24
+ displayLocation: ChatElementDisplayLocationV3,
25
+ ) => void;
15
26
  onTypedMessageSubmitted: ({ query, userTyped }: { query: string; userTyped: boolean }) => void;
16
- onFormResponseSubmitted: (formResponse: any) => void; // TODO: Figure out the right type
27
+ onFormResponseSubmitted: (formResponse: FormSubmittedAttributes) => void;
17
28
  }
18
29
 
19
30
  export const useSalesAgentChatAPI = () => {
20
31
  // TODO: Each of these functions will trigger both the necessary amplitude events and initiate the
21
32
  // necessary actions to trigger the backend API
22
33
  const queueUserEvent = useSetAtom(queueUserEventAtom);
34
+ const setReplyEventCategory = useSetAtom(replyEventCategoryAtom);
35
+ const setFormSubmit = useSetAtom(formSubmitAtom);
23
36
  const { trackEvent } = useAmplitude();
24
37
 
25
38
  const logPageVisit = useCallback(
@@ -45,12 +58,20 @@ export const useSalesAgentChatAPI = () => {
45
58
  [queueUserEvent],
46
59
  );
47
60
  const onSuggestionClicked = useCallback(
48
- (suggestion: Suggestion) => {
61
+ (suggestion: Suggestion, displayLocation: ChatElementDisplayLocationV3) => {
49
62
  trackEvent({
50
63
  eventName: SpiffyMetricsEventName.ChatSuggestionClicked,
51
64
  eventProps: {
52
- suggestionId: suggestion.id,
53
- content: suggestion.content,
65
+ message_id: suggestion.id,
66
+ message_role: MessageRole.User,
67
+ message_type: MessageType.SuggestionClicked,
68
+ message_metadata: {
69
+ content: suggestion.content,
70
+ created_at: suggestion.createdAt,
71
+ category: suggestion.category,
72
+ is_answer: suggestion.isAnswer,
73
+ display_location: displayLocation,
74
+ },
54
75
  },
55
76
  });
56
77
  const event: UserEvent = {
@@ -68,15 +89,24 @@ export const useSalesAgentChatAPI = () => {
68
89
  );
69
90
  const onTypedMessageSubmitted = useCallback(
70
91
  ({ query, userTyped }: { query: string; userTyped: boolean }) => {
92
+ const eventId = uuid();
71
93
  trackEvent({
72
94
  eventName: SpiffyMetricsEventName.ChatUserMessageInput,
73
95
  eventProps: {
74
96
  query,
75
- userTyped,
97
+ user_typed: userTyped,
98
+ message_id: eventId,
99
+ message_role: MessageRole.User,
100
+ message_type: MessageType.QueryTyped,
101
+ message_metadata: {
102
+ content: query,
103
+ created_at: new Date().toISOString(),
104
+ user_typed: userTyped,
105
+ },
76
106
  },
77
107
  });
78
108
  const event: UserEvent = {
79
- eventId: uuid(),
109
+ eventId,
80
110
  category: UserEventCategory.QueryTyped,
81
111
  createdAt: new Date().toISOString(),
82
112
  attributes: {
@@ -88,9 +118,20 @@ export const useSalesAgentChatAPI = () => {
88
118
  },
89
119
  [queueUserEvent, trackEvent],
90
120
  );
91
- const onFormResponseSubmitted = useCallback(() => {
92
- // TODO: Implement the form response submitted
93
- }, []);
121
+ const onFormResponseSubmitted = useCallback(
122
+ (form: FormSubmittedAttributes) => {
123
+ setReplyEventCategory(UserEventCategory.FormSubmitted);
124
+ setFormSubmit(form);
125
+ const event: UserEvent = {
126
+ eventId: uuid(),
127
+ category: UserEventCategory.FormSubmitted,
128
+ createdAt: new Date().toISOString(),
129
+ attributes: form,
130
+ };
131
+ queueUserEvent(event);
132
+ },
133
+ [queueUserEvent, setReplyEventCategory, setFormSubmit],
134
+ );
94
135
 
95
136
  return {
96
137
  logPageVisit,
@@ -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
+ };
@@ -1,5 +1,5 @@
1
1
  import { useAtom, useAtomValue, useSetAtom } from 'jotai';
2
- import { ReactNode, createContext, useCallback, useEffect, useMemo } from 'react';
2
+ import { ReactNode, createContext, useCallback, useEffect, useMemo, useRef } from 'react';
3
3
  import { UserEventCategory } from '@spiffy-ai/commerce-api-client';
4
4
  import Logger from 'src/application/logging/logger';
5
5
  import { Message, MessageRole, MessageType } from 'src/application/models/message';
@@ -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,50 @@ 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
+ const isSendingRef = useRef(false);
72
+
73
+ // Initialize with mock data in preview mode
74
+ useEffect(() => {
75
+ if (previewMode && mockData) {
76
+ if (mockData.messages) {
77
+ setMessages(mockData.messages);
78
+ }
79
+ if (mockData.suggestions) {
80
+ setSuggestions(mockData.suggestions);
81
+ }
82
+ setIsInitialized(true);
83
+ }
84
+ }, [previewMode, mockData, setMessages, setSuggestions, setIsInitialized]);
85
+
51
86
  // TODO: Ensure that amplitude events are being emitted
52
87
 
53
88
  // TODO: Add support for the streaming responses to function
@@ -72,7 +107,13 @@ export const SalesAgentProvider: React.FC<{ children: ReactNode }> = ({ children
72
107
  // It will be triggered when there are pending messages to be sent to the backend
73
108
  // It will be responsible for sending the messages to the backend and receiving the responses
74
109
  useEffect(() => {
75
- if (userQueueEventCount > 0) {
110
+ // Skip backend communication in preview mode
111
+ if (previewMode) {
112
+ return;
113
+ }
114
+
115
+ if (userQueueEventCount > 0 && !isSendingRef.current) {
116
+ isSendingRef.current = true;
76
117
  const payloadEvents = userEvents.slice(0, userQueueEventCount);
77
118
 
78
119
  payloadEvents.forEach(userEvent => {
@@ -100,6 +141,23 @@ export const SalesAgentProvider: React.FC<{ children: ReactNode }> = ({ children
100
141
  };
101
142
  setMessages(current => [...current, [newMessage]]);
102
143
  }
144
+ if (userEvent && userEvent.category === UserEventCategory.FormSubmitted) {
145
+ const { formResponseId, filledSchema } = userEvent.attributes;
146
+ setMessages(prevMessagesState => {
147
+ const formSubmittedContent = buildFormSubmittedDisplayContent(
148
+ prevMessagesState,
149
+ formResponseId,
150
+ filledSchema,
151
+ );
152
+ const newUserMessage = createFormSubmittedUserMessage(userEvent, formSubmittedContent);
153
+ const turnsWithoutForm = prevMessagesState
154
+ .map(turn =>
155
+ turn.filter(msg => !(msg.type === MessageType.Form && msg.id === formResponseId)),
156
+ )
157
+ .filter(turn => turn.length > 0);
158
+ return [...turnsWithoutForm, [newUserMessage]];
159
+ });
160
+ }
103
161
  });
104
162
 
105
163
  sendMessagesToBackend(
@@ -107,7 +165,9 @@ export const SalesAgentProvider: React.FC<{ children: ReactNode }> = ({ children
107
165
  userEvents: payloadEvents,
108
166
  generationParams: settingsContext.generationParams,
109
167
  }),
110
- );
168
+ ).finally(() => {
169
+ isSendingRef.current = false;
170
+ });
111
171
  } else if (isInitialized) {
112
172
  getSuggestions(
113
173
  createResponsePayload({
@@ -125,14 +185,20 @@ export const SalesAgentProvider: React.FC<{ children: ReactNode }> = ({ children
125
185
  settingsContext.generationParams,
126
186
  userEvents,
127
187
  userQueueEventCount,
188
+ previewMode,
128
189
  ]);
129
190
 
130
191
  useEffect(() => {
192
+ // Skip hydration in preview mode
193
+ if (previewMode) {
194
+ return;
195
+ }
196
+
131
197
  if (isInitialized) {
132
198
  // Rehydrate any messages from the backend
133
199
  hydrateMessages();
134
200
  }
135
- }, [isInitialized, hydrateMessages]);
201
+ }, [isInitialized, hydrateMessages, previewMode]);
136
202
 
137
203
  return <SalesAgentContext.Provider value={undefined}>{children}</SalesAgentContext.Provider>;
138
204
  };
@@ -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>