@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
@@ -3,12 +3,12 @@ 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';
10
10
  import { CustomerServiceType } from '../types/customerService';
11
- import type { MerchantVariantSettings, SearchConfig } from './types';
11
+ import type { SearchConfig } from './types';
12
12
 
13
13
  export enum LetterSpacingCSSVar {
14
14
  Tight0 = 'envive-typography-letter-spacing-tight-0',
@@ -204,6 +204,11 @@ type CustomerServiceIntegration = {
204
204
  suppressMerchantButton?: boolean;
205
205
  };
206
206
 
207
+ type SPASettings = {
208
+ enabled: boolean;
209
+ refreshInterval?: number;
210
+ };
211
+
207
212
  type OrgUIConfigV3 = {
208
213
  id?: string;
209
214
 
@@ -221,7 +226,7 @@ type OrgUIConfigV3 = {
221
226
 
222
227
  customerServiceIntegration?: CustomerServiceIntegration;
223
228
 
224
- merchantVariantSettings?: MerchantVariantSettings;
229
+ singlePageApplicationSettings?: SPASettings;
225
230
 
226
231
  searchConfig?: SearchConfig;
227
232
  };
@@ -240,6 +245,7 @@ export enum WidgetTypeV3 {
240
245
  SingleImagePromptV3 = 'SingleImagePromptV3',
241
246
  FloatingChatV3 = 'FloatingChatV3',
242
247
  FloatingButtonV3 = 'FloatingButtonV3',
248
+ ProductCardV3 = 'ProductCardV3',
243
249
  }
244
250
 
245
251
  interface BaseWidgetConfig<T extends WidgetTypeV3> {
@@ -261,13 +267,8 @@ interface TitledPromptCarouselWidgetV3Config extends BaseWidgetConfig<WidgetType
261
267
  promptCarouselRows?: PromptCarouselRows;
262
268
  animationSpeed?: AnimationSpeed;
263
269
  }
264
-
265
- enum SocialProofWidgetKind {
266
- STATIC = 'static',
267
- DYNAMIC = 'dynamic',
268
- }
269
270
  interface SocialProofWidgetV3Config extends BaseWidgetConfig<WidgetTypeV3.SocialProofV3> {
270
- kind: SocialProofWidgetKind;
271
+ kind: WidgetKind;
271
272
  variant: WidgetWrapperVariant;
272
273
  hexCardColor?: string;
273
274
  promptCarouselRows: PromptCarouselRows;
@@ -311,10 +312,18 @@ interface PromptButtonCarouselWithImageWidgetV3Config extends BaseWidgetConfig<W
311
312
  promptButtonType?: PromptButtonVariant;
312
313
  image?: ImageGalleryImage;
313
314
  hideTextField?: boolean;
315
+ isDynamic?: boolean;
314
316
  }
315
317
 
316
318
  interface FloatingChatWidgetV3Config extends BaseWidgetConfig<WidgetTypeV3.FloatingChatV3> {}
317
319
 
320
+ interface ProductCardWidgetV3Config extends BaseWidgetConfig<WidgetTypeV3.ProductCardV3> {
321
+ promptButtonType?: PromptButtonVariant;
322
+ italicizeHeadline?: boolean;
323
+ fallbackColor?: string;
324
+ imageSrc?: string;
325
+ }
326
+
318
327
  type WidgetConfigV3 =
319
328
  | PromptCarouselWidgetV3Config
320
329
  | SocialProofWidgetV3Config
@@ -324,7 +333,8 @@ type WidgetConfigV3 =
324
333
  | TypingAnimationWidgetV3Config
325
334
  | ChatPreviewWidgetV3Config
326
335
  | PromptButtonCarouselWithImageWidgetV3Config
327
- | FloatingChatWidgetV3Config;
336
+ | FloatingChatWidgetV3Config
337
+ | ProductCardWidgetV3Config;
328
338
 
329
339
  export type {
330
340
  OrgUIConfigV3,
@@ -339,9 +349,9 @@ export type {
339
349
  TypingAnimationWidgetV3Config,
340
350
  PromptButtonCarouselWithImageWidgetV3Config,
341
351
  FloatingChatWidgetV3Config,
352
+ ProductCardWidgetV3Config,
342
353
  FloatingChatConfig,
343
354
  FloatingButtonConfig,
344
355
  CustomerServiceIntegration,
356
+ SPASettings,
345
357
  };
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
 
@@ -1,12 +1,20 @@
1
- import React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';
1
+ import React, {
2
+ ReactNode,
3
+ createContext,
4
+ useCallback,
5
+ useContext,
6
+ useEffect,
7
+ useMemo,
8
+ useState,
9
+ } from 'react';
2
10
  import UAParser from 'ua-parser-js';
3
11
  import Logger from 'src/application/logging/logger';
4
12
  import CommerceApiClient from 'src/application/commerce-api';
5
- import { v4 as uuid } from 'uuid';
6
13
  import { ClientDetails } from 'src/application/models/clientDetails';
7
14
  import { useLocalStorage } from 'src/contexts/localStorageContext';
8
15
  import { useSetAtom } from 'jotai';
9
16
  import { userIdAtom } from 'src/atoms/app';
17
+ import { UserIdentityService } from 'src/services/userIdentityService';
10
18
 
11
19
  // Helper function from the original service
12
20
  const getUserAgentDetails = (): ClientDetails => {
@@ -27,10 +35,8 @@ const getUserAgentDetails = (): ClientDetails => {
27
35
 
28
36
  export interface UserIdentityContextType {
29
37
  identifyUser: () => Promise<void>;
30
- getUserIdOrDefault: () => string;
38
+ getUserIdOrDefault: () => Promise<string>;
31
39
  getUserIdOverrideFromLocalStorage: () => string | undefined;
32
- getUserIdDefaultFromLocalStorage: () => string | undefined;
33
- setUserIdDefaultInLocalStorage: (userId: string) => string;
34
40
  setUserIdOverrideInLocalStorage: (userId: string) => string;
35
41
  clearUserIdOverrideInLocalStorage: () => void;
36
42
  isReady: boolean;
@@ -38,7 +44,15 @@ export interface UserIdentityContextType {
38
44
 
39
45
  const UserIdentityContext = createContext<UserIdentityContextType | undefined>(undefined);
40
46
 
41
- export const UserIdentityProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
47
+ interface UserIdentityProviderProps {
48
+ userIdService: UserIdentityService;
49
+ children: ReactNode;
50
+ }
51
+
52
+ export const UserIdentityProvider: React.FC<UserIdentityProviderProps> = ({
53
+ userIdService: inputService,
54
+ children,
55
+ }) => {
42
56
  const [localUserId, setLocalUserId] = useState<string | undefined>(undefined);
43
57
  const setUserId = useSetAtom(userIdAtom);
44
58
  const { getItem, setItem, isAvailable: localStorageIsReady } = useLocalStorage();
@@ -52,26 +66,12 @@ export const UserIdentityProvider: React.FC<{ children: React.ReactNode }> = ({
52
66
  }, [localStorageIsReady]);
53
67
 
54
68
  const USER_ID_OVERRIDE_KEY = 'v1-spiffy-user-id-override';
55
- const USER_ID_DEFAULT_KEY = 'v1-spiffy-user-id-default';
56
69
 
70
+ // @deprecated
57
71
  const getUserIdOverrideFromLocalStorage = useCallback((): string | undefined => {
58
72
  return getItem(USER_ID_OVERRIDE_KEY) ?? undefined;
59
73
  }, [getItem]);
60
74
 
61
- const getUserIdDefaultFromLocalStorage = useCallback((): string | undefined => {
62
- return getItem(USER_ID_DEFAULT_KEY) ?? undefined;
63
- }, [getItem]);
64
-
65
- const setUserIdDefaultInLocalStorage = useCallback(
66
- (userId: string): string => {
67
- Logger.logInfo(`setUserIdDefaultInLocalStorage - Setting user_id=${userId}`);
68
- setItem(USER_ID_DEFAULT_KEY, userId);
69
- // window.dispatchEvent is handled by useLocalStorage now
70
- return userId;
71
- },
72
- [setItem, USER_ID_DEFAULT_KEY],
73
- );
74
-
75
75
  const setUserIdOverrideInLocalStorage = useCallback(
76
76
  (userId: string): string => {
77
77
  Logger.logInfo(`setUserIdOverrideInLocalStorage - Setting user_id=${userId}`);
@@ -89,23 +89,29 @@ export const UserIdentityProvider: React.FC<{ children: React.ReactNode }> = ({
89
89
  setItem(USER_ID_OVERRIDE_KEY, ''); // Set to empty string to clear
90
90
  }, [setItem, USER_ID_OVERRIDE_KEY]);
91
91
 
92
- const getUserIdOrDefault = useCallback((): string => {
92
+ const getUserIdOrDefault = useCallback(async (): Promise<string> => {
93
93
  const userIdOverride = getUserIdOverrideFromLocalStorage();
94
94
  if (userIdOverride) {
95
95
  return userIdOverride;
96
96
  }
97
97
 
98
- const defaultUserId = getUserIdDefaultFromLocalStorage();
99
- if (defaultUserId) {
100
- return defaultUserId;
101
- }
98
+ try {
99
+ // NOTE: This uses EnviveAnalytics under the hood to determine the userID
100
+ const enviveUserId = await inputService.getUserIdOrDefault();
102
101
 
103
- return setUserIdDefaultInLocalStorage(`spiffy-user-id-${uuid()}`);
104
- }, [
105
- getUserIdOverrideFromLocalStorage,
106
- getUserIdDefaultFromLocalStorage,
107
- setUserIdDefaultInLocalStorage,
108
- ]);
102
+ if (!enviveUserId) {
103
+ throw new Error(
104
+ '[spiffy-ai] EnviveAnalytics.resolveEnviveUserId() returned null/undefined - this should never happen',
105
+ );
106
+ }
107
+
108
+ return enviveUserId;
109
+ } catch (error: unknown) {
110
+ Logger.logError('[spiffy-ai] CRITICAL: Failed to get user ID from EnviveAnalytics', error);
111
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
112
+ throw new Error(`[spiffy-ai] CRITICAL: User ID resolution failed: ${errorMessage}`);
113
+ }
114
+ }, [getUserIdOverrideFromLocalStorage]);
109
115
 
110
116
  const identifyUser = useCallback(async (): Promise<void> => {
111
117
  if (!isReady) {
@@ -117,7 +123,7 @@ export const UserIdentityProvider: React.FC<{ children: React.ReactNode }> = ({
117
123
  // Temporarily commented out until WindowDataLayerService is resolved
118
124
  // const cdpUserId = WindowDataLayerService.getGoogleAnalyticsClientId();
119
125
  const cdpUserId = 'UNKNOWN_CDP_USER_ID'; // Placeholder
120
- const userId = getUserIdOrDefault();
126
+ const userId = await getUserIdOrDefault();
121
127
  const userAgentDetails = getUserAgentDetails();
122
128
 
123
129
  if (!cdpUserId) {
@@ -136,8 +142,6 @@ export const UserIdentityProvider: React.FC<{ children: React.ReactNode }> = ({
136
142
  identifyUser,
137
143
  getUserIdOrDefault,
138
144
  getUserIdOverrideFromLocalStorage,
139
- getUserIdDefaultFromLocalStorage,
140
- setUserIdDefaultInLocalStorage,
141
145
  setUserIdOverrideInLocalStorage,
142
146
  clearUserIdOverrideInLocalStorage,
143
147
  isReady,
@@ -146,8 +150,6 @@ export const UserIdentityProvider: React.FC<{ children: React.ReactNode }> = ({
146
150
  identifyUser,
147
151
  getUserIdOrDefault,
148
152
  getUserIdOverrideFromLocalStorage,
149
- getUserIdDefaultFromLocalStorage,
150
- setUserIdDefaultInLocalStorage,
151
153
  setUserIdOverrideInLocalStorage,
152
154
  clearUserIdOverrideInLocalStorage,
153
155
  isReady,
@@ -155,11 +157,15 @@ export const UserIdentityProvider: React.FC<{ children: React.ReactNode }> = ({
155
157
  );
156
158
  useEffect(() => {
157
159
  if (isReady && !localUserId) {
158
- const newUserId = getUserIdOrDefault();
159
- setLocalUserId(newUserId);
160
- setUserId(newUserId);
160
+ const setUserIdStates = async () => {
161
+ const newUserId = await getUserIdOrDefault();
162
+ console.log('useUserIdentity useEffect - setting localUserId', newUserId);
163
+ setLocalUserId(newUserId);
164
+ setUserId(newUserId);
165
+ };
166
+ setUserIdStates();
161
167
  }
162
- }, [isReady, localUserId, setUserId]);
168
+ }, [getUserIdOrDefault, isReady, localUserId, setUserId]);
163
169
 
164
170
  if (!localUserId) {
165
171
  return null;
@@ -35,6 +35,10 @@ export const WidgetConfigProvider: React.FC<{ children: ReactNode }> = ({ childr
35
35
  const response = frontendConfig?.widgetConfigs?.[widgetConfigId];
36
36
  Logger.logInfo('widgetConfigContext | returning widget config response', response);
37
37
 
38
+ if (widgetConfigId === 'fake-widget-config-id') {
39
+ return {} as WidgetConfigV3;
40
+ }
41
+
38
42
  if (
39
43
  [
40
44
  WidgetTypeV3.SocialProofV3,
@@ -51,8 +51,9 @@ export interface ElementObserverUtility {
51
51
  */
52
52
  export const useElementObserver = (selector: NodeSelector): ElementObserverUtility => {
53
53
  const INITIAL_RENDER_STATE = true;
54
- const eoRef = useRef<ElementObserver>(DOMObserver.add(selector));
54
+ const eoRef = useRef<ElementObserver | null>(null);
55
55
  const [renderBlocked, setRenderBlocked] = useState(INITIAL_RENDER_STATE);
56
+ eoRef.current = DOMObserver.add(selector);
56
57
 
57
58
  /**
58
59
  * Fired every time the HTML element changes.
@@ -25,6 +25,7 @@ import { ProductSorting } from 'src/atoms/search/types';
25
25
  import { SearchResult } from 'src/application/models/api/search';
26
26
  import { SearchResultsState } from 'src/hooks/utils';
27
27
  import { SearchResponseProduct } from '@spiffy-ai/commerce-api-client';
28
+ import { UserIdentityService } from 'src/services/userIdentityService';
28
29
  import { useSearch } from '../useSearch';
29
30
 
30
31
  // Mock dependencies
@@ -171,6 +172,15 @@ vi.mock('src/events', () => ({
171
172
  },
172
173
  }));
173
174
 
175
+ const mockGetUserId = vi.fn().mockResolvedValue('test-user-id');
176
+ const mockInitializeUser = vi.fn().mockResolvedValue(undefined);
177
+
178
+ const testUserIdService = {
179
+ getUserIdOrDefault: mockGetUserId,
180
+ initializeUser: mockInitializeUser,
181
+ getUserIdOverrideFromLocalStorage: vi.fn().mockReturnValue(undefined),
182
+ } as unknown as UserIdentityService;
183
+
174
184
  // FeatureFlagService
175
185
  const testFeatureFlagService = new FeatureFlagService([]);
176
186
 
@@ -398,7 +408,7 @@ const TestWrapper: React.FC<{
398
408
  >
399
409
  <LocalStorageProvider>
400
410
  <GraphQLProvider>
401
- <UserIdentityProvider>
411
+ <UserIdentityProvider userIdService={testUserIdService}>
402
412
  <FeatureFlagServiceProvider featureFlagService={testFeatureFlagService}>
403
413
  <AmplitudeProvider>
404
414
  <NewOrgConfigProvider>
@@ -0,0 +1 @@
1
+ export * from './salesAgentMockData';