@envive-ai/react-hooks 0.3.2 → 0.3.4

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 (502) hide show
  1. package/dist/_virtual/rolldown_runtime.cjs +2 -0
  2. package/dist/_virtual/rolldown_runtime.js +29 -0
  3. package/dist/application/commerce-api.cjs +15 -5
  4. package/dist/application/commerce-api.js +14 -4
  5. package/dist/application/models/api/nextMessageRequest.d.cts +3 -1
  6. package/dist/application/models/api/nextMessageRequest.d.ts +3 -1
  7. package/dist/application/models/api/userEvent.d.cts +4 -2
  8. package/dist/application/models/api/userEvent.d.ts +4 -2
  9. package/dist/application/models/chatElementDisplayLocationV3.cjs +18 -0
  10. package/dist/application/models/chatElementDisplayLocationV3.d.cts +15 -0
  11. package/dist/application/models/chatElementDisplayLocationV3.d.ts +15 -0
  12. package/dist/application/models/chatElementDisplayLocationV3.js +17 -0
  13. package/dist/application/models/colorsConfigV3.cjs +26 -0
  14. package/dist/application/models/colorsConfigV3.d.cts +22 -0
  15. package/dist/application/models/colorsConfigV3.d.ts +22 -0
  16. package/dist/application/models/colorsConfigV3.js +24 -0
  17. package/dist/application/models/featureGates.cjs +2 -1
  18. package/dist/application/models/featureGates.d.cts +2 -1
  19. package/dist/application/models/featureGates.d.ts +2 -1
  20. package/dist/application/models/featureGates.js +2 -1
  21. package/dist/application/models/frontendConfig.d.cts +4 -2
  22. package/dist/application/models/frontendConfig.d.ts +4 -2
  23. package/dist/application/models/frontendConfigV3.d.cts +14 -0
  24. package/dist/application/models/frontendConfigV3.d.ts +14 -0
  25. package/dist/application/models/index.cjs +3 -0
  26. package/dist/application/models/index.d.cts +4 -3
  27. package/dist/application/models/index.d.ts +4 -3
  28. package/dist/application/models/index.js +3 -2
  29. package/dist/application/models/utils/snakeToCamelTransformer.cjs +2 -1
  30. package/dist/application/models/utils/snakeToCamelTransformer.d.cts +7 -2
  31. package/dist/application/models/utils/snakeToCamelTransformer.d.ts +7 -2
  32. package/dist/application/models/utils/snakeToCamelTransformer.js +2 -2
  33. package/dist/application/models/variantInfo/variantInfo.cjs +4 -1
  34. package/dist/application/models/variantInfo/variantInfo.d.cts +4 -1
  35. package/dist/application/models/variantInfo/variantInfo.d.ts +4 -1
  36. package/dist/application/models/variantInfo/variantInfo.js +4 -1
  37. package/dist/application/utils/analyticsUtils.cjs +5 -4
  38. package/dist/application/utils/analyticsUtils.d.cts +1 -1
  39. package/dist/application/utils/analyticsUtils.d.ts +1 -1
  40. package/dist/application/utils/analyticsUtils.js +3 -2
  41. package/dist/application/utils/elementObserver.cjs +1 -1
  42. package/dist/application/utils/elementObserver.d.cts +2 -2
  43. package/dist/application/utils/elementObserver.d.ts +2 -2
  44. package/dist/application/utils/elementObserver.js +1 -1
  45. package/dist/application/utils/index.d.cts +1 -1
  46. package/dist/application/utils/index.d.ts +1 -1
  47. package/dist/application/utils/widgetTextFromApiWidgetTextResponse.cjs +14 -0
  48. package/dist/application/utils/widgetTextFromApiWidgetTextResponse.js +13 -0
  49. package/dist/application/utils/widgetTextRequestToApiRequest.cjs +30 -0
  50. package/dist/application/utils/widgetTextRequestToApiRequest.js +29 -0
  51. package/dist/atoms/amplitude/amplitudeTrackEventAtom.cjs +1 -1
  52. package/dist/atoms/amplitude/amplitudeTrackEventAtom.js +1 -1
  53. package/dist/atoms/app/index.cjs +13 -1
  54. package/dist/atoms/app/index.d.cts +4 -3
  55. package/dist/atoms/app/index.d.ts +9 -8
  56. package/dist/atoms/app/index.js +13 -4
  57. package/dist/atoms/app/variant.cjs +6 -2
  58. package/dist/atoms/app/variant.d.cts +76 -5
  59. package/dist/atoms/app/variant.d.ts +76 -5
  60. package/dist/atoms/app/variant.js +4 -2
  61. package/dist/atoms/chat/chatState.cjs +9 -4
  62. package/dist/atoms/chat/chatState.d.cts +25 -18
  63. package/dist/atoms/chat/chatState.d.ts +25 -18
  64. package/dist/atoms/chat/chatState.js +6 -3
  65. package/dist/atoms/chat/form.cjs +4 -4
  66. package/dist/atoms/chat/form.d.cts +2 -2
  67. package/dist/atoms/chat/form.d.ts +2 -2
  68. package/dist/atoms/chat/index.cjs +32 -30
  69. package/dist/atoms/chat/index.d.cts +4 -4
  70. package/dist/atoms/chat/index.d.ts +3 -3
  71. package/dist/atoms/chat/index.js +2 -2
  72. package/dist/atoms/chat/lastMessage.cjs +4 -4
  73. package/dist/atoms/chat/lastMessage.d.cts +2 -2
  74. package/dist/atoms/chat/lastMessage.d.ts +2 -2
  75. package/dist/atoms/chat/messageQueue.cjs +1 -35
  76. package/dist/atoms/chat/messageQueue.js +2 -34
  77. package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
  78. package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
  79. package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
  80. package/dist/atoms/chat/renderedWidgetRefs.d.ts +2 -2
  81. package/dist/atoms/chat/replies.cjs +9 -8
  82. package/dist/atoms/chat/replies.d.cts +3 -3
  83. package/dist/atoms/chat/replies.d.ts +3 -3
  84. package/dist/atoms/chat/replies.js +3 -2
  85. package/dist/atoms/chat/suggestions.cjs +6 -6
  86. package/dist/atoms/chat/suggestions.d.cts +2 -2
  87. package/dist/atoms/chat/suggestions.d.ts +2 -2
  88. package/dist/atoms/envive/enviveConfig.cjs +5 -2
  89. package/dist/atoms/envive/enviveConfig.js +5 -2
  90. package/dist/atoms/globalSearch/globalSearch.cjs +1 -3
  91. package/dist/atoms/globalSearch/globalSearch.d.cts +7 -10
  92. package/dist/atoms/globalSearch/globalSearch.d.ts +7 -10
  93. package/dist/atoms/globalSearch/globalSearch.js +2 -3
  94. package/dist/atoms/globalSearch/index.cjs +0 -1
  95. package/dist/atoms/globalSearch/index.d.cts +2 -2
  96. package/dist/atoms/globalSearch/index.d.ts +2 -2
  97. package/dist/atoms/globalSearch/index.js +2 -2
  98. package/dist/atoms/org/customerService.d.cts +6 -6
  99. package/dist/atoms/org/customerService.d.ts +6 -6
  100. package/dist/atoms/org/graphqlConfig.cjs +1 -3
  101. package/dist/atoms/org/graphqlConfig.d.cts +6 -9
  102. package/dist/atoms/org/graphqlConfig.d.ts +6 -9
  103. package/dist/atoms/org/graphqlConfig.js +2 -3
  104. package/dist/atoms/org/index.cjs +2 -3
  105. package/dist/atoms/org/index.d.cts +2 -2
  106. package/dist/atoms/org/index.d.ts +2 -2
  107. package/dist/atoms/org/index.js +2 -2
  108. package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
  109. package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
  110. package/dist/atoms/org/orgAnalyticsConfig.d.cts +5 -5
  111. package/dist/atoms/org/orgAnalyticsConfig.d.ts +5 -5
  112. package/dist/atoms/search/chatSearch.cjs +7 -7
  113. package/dist/atoms/search/chatSearch.d.cts +20 -18
  114. package/dist/atoms/search/chatSearch.d.ts +20 -18
  115. package/dist/atoms/search/searchAPI.d.cts +15 -14
  116. package/dist/atoms/search/searchAPI.d.ts +15 -14
  117. package/dist/atoms/search/utils.d.cts +1 -1
  118. package/dist/atoms/widget/chatPreviewLoading.cjs +23 -0
  119. package/dist/atoms/widget/chatPreviewLoading.d.cts +26 -0
  120. package/dist/atoms/widget/chatPreviewLoading.d.ts +26 -0
  121. package/dist/atoms/widget/chatPreviewLoading.js +22 -0
  122. package/dist/atoms/widget/index.cjs +3 -0
  123. package/dist/atoms/widget/index.d.cts +2 -0
  124. package/dist/atoms/widget/index.d.ts +2 -0
  125. package/dist/atoms/widget/index.js +3 -0
  126. package/dist/contexts/amplitudeContext/amplitudeContext.cjs +41 -228
  127. package/dist/contexts/amplitudeContext/amplitudeContext.d.cts +4 -39
  128. package/dist/contexts/amplitudeContext/amplitudeContext.d.ts +4 -39
  129. package/dist/contexts/amplitudeContext/amplitudeContext.js +45 -231
  130. package/dist/contexts/amplitudeContext/index.cjs +2 -1
  131. package/dist/contexts/amplitudeContext/index.d.cts +2 -1
  132. package/dist/contexts/amplitudeContext/index.d.ts +2 -1
  133. package/dist/contexts/amplitudeContext/index.js +2 -1
  134. package/dist/contexts/enviveConfigContext/enviveConfigContext.cjs +3 -2
  135. package/dist/contexts/enviveConfigContext/enviveConfigContext.d.cts +2 -1
  136. package/dist/contexts/enviveConfigContext/enviveConfigContext.d.ts +2 -1
  137. package/dist/contexts/enviveConfigContext/enviveConfigContext.js +3 -2
  138. package/dist/contexts/enviveContext/enviveContext.cjs +73 -18
  139. package/dist/contexts/enviveContext/enviveContext.d.cts +9 -1
  140. package/dist/contexts/enviveContext/enviveContext.d.ts +9 -1
  141. package/dist/contexts/enviveContext/enviveContext.js +75 -20
  142. package/dist/contexts/enviveCssContext/enviveCssContext.cjs +96 -24
  143. package/dist/contexts/enviveCssContext/enviveCssContext.js +96 -24
  144. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.cjs +5 -7
  145. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.cts +2 -2
  146. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.ts +2 -2
  147. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.js +5 -7
  148. package/dist/contexts/graphqlContext/graphqlContext.cjs +70 -8
  149. package/dist/contexts/graphqlContext/graphqlContext.d.cts +17 -5
  150. package/dist/contexts/graphqlContext/graphqlContext.d.ts +17 -5
  151. package/dist/contexts/graphqlContext/graphqlContext.js +70 -8
  152. package/dist/contexts/graphqlContext/index.d.cts +2 -2
  153. package/dist/contexts/graphqlContext/index.d.ts +2 -2
  154. package/dist/contexts/graphqlContext/mockV3Config.cjs +208 -0
  155. package/dist/contexts/graphqlContext/mockV3Config.js +207 -0
  156. package/dist/contexts/hardcopyContext/hardcopyContext.cjs +169 -0
  157. package/dist/contexts/hardcopyContext/hardcopyContext.d.cts +24 -0
  158. package/dist/contexts/hardcopyContext/hardcopyContext.d.ts +24 -0
  159. package/dist/contexts/hardcopyContext/hardcopyContext.js +167 -0
  160. package/dist/contexts/hardcopyContext/index.cjs +4 -0
  161. package/dist/contexts/hardcopyContext/index.d.cts +2 -0
  162. package/dist/contexts/hardcopyContext/index.d.ts +2 -0
  163. package/dist/contexts/hardcopyContext/index.js +3 -0
  164. package/dist/contexts/newOrgConfigContext/newOrgConfigContext.cjs +7 -8
  165. package/dist/contexts/newOrgConfigContext/newOrgConfigContext.js +8 -9
  166. package/dist/contexts/pageContext/index.cjs +6 -0
  167. package/dist/contexts/pageContext/index.d.cts +3 -0
  168. package/dist/contexts/pageContext/index.d.ts +3 -0
  169. package/dist/contexts/pageContext/index.js +4 -0
  170. package/dist/contexts/pageContext/mapping.cjs +29 -0
  171. package/dist/contexts/pageContext/mapping.d.cts +8 -0
  172. package/dist/contexts/pageContext/mapping.d.ts +8 -0
  173. package/dist/contexts/pageContext/mapping.js +29 -0
  174. package/dist/contexts/pageContext/pageContext.cjs +86 -0
  175. package/dist/contexts/pageContext/pageContext.d.cts +14 -0
  176. package/dist/contexts/pageContext/pageContext.d.ts +14 -0
  177. package/dist/contexts/pageContext/pageContext.js +84 -0
  178. package/dist/contexts/pageContext/types.cjs +0 -0
  179. package/dist/contexts/pageContext/types.d.cts +31 -0
  180. package/dist/contexts/pageContext/types.d.ts +31 -0
  181. package/dist/contexts/pageContext/types.js +1 -0
  182. package/dist/contexts/salesAgentContext/chatAPI.cjs +48 -0
  183. package/dist/contexts/salesAgentContext/chatAPI.d.cts +35 -0
  184. package/dist/contexts/salesAgentContext/chatAPI.d.ts +35 -0
  185. package/dist/contexts/salesAgentContext/chatAPI.js +47 -0
  186. package/dist/contexts/salesAgentContext/index.cjs +20 -0
  187. package/dist/contexts/salesAgentContext/index.d.cts +4 -0
  188. package/dist/contexts/salesAgentContext/index.d.ts +4 -0
  189. package/dist/contexts/salesAgentContext/index.js +5 -0
  190. package/dist/contexts/salesAgentContext/salesAgentContext.cjs +130 -0
  191. package/dist/contexts/salesAgentContext/salesAgentContext.d.cts +22 -0
  192. package/dist/contexts/salesAgentContext/salesAgentContext.d.ts +22 -0
  193. package/dist/contexts/salesAgentContext/salesAgentContext.js +128 -0
  194. package/dist/contexts/salesAgentContext/salesAgentService.cjs +135 -0
  195. package/dist/contexts/salesAgentContext/salesAgentService.js +134 -0
  196. package/dist/contexts/salesAgentContext/statusCodeError.cjs +14 -0
  197. package/dist/contexts/salesAgentContext/statusCodeError.js +13 -0
  198. package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
  199. package/dist/contexts/types.cjs +2 -3
  200. package/dist/contexts/types.d.cts +12 -8
  201. package/dist/contexts/types.d.ts +12 -8
  202. package/dist/contexts/types.js +2 -3
  203. package/dist/contexts/typesV3.cjs +125 -0
  204. package/dist/contexts/typesV3.d.cts +246 -0
  205. package/dist/contexts/typesV3.d.ts +246 -0
  206. package/dist/contexts/typesV3.js +113 -0
  207. package/dist/contexts/uiConfigContext/index.cjs +4 -0
  208. package/dist/contexts/uiConfigContext/index.d.cts +2 -0
  209. package/dist/contexts/uiConfigContext/index.d.ts +2 -0
  210. package/dist/contexts/uiConfigContext/index.js +3 -0
  211. package/dist/contexts/uiConfigContext/uiConfigContext.cjs +44 -0
  212. package/dist/contexts/uiConfigContext/uiConfigContext.d.cts +15 -0
  213. package/dist/contexts/uiConfigContext/uiConfigContext.d.ts +15 -0
  214. package/dist/contexts/uiConfigContext/uiConfigContext.js +42 -0
  215. package/dist/contexts/widgetConfigContext/index.cjs +4 -0
  216. package/dist/contexts/widgetConfigContext/index.d.cts +2 -0
  217. package/dist/contexts/widgetConfigContext/index.d.ts +2 -0
  218. package/dist/contexts/widgetConfigContext/index.js +3 -0
  219. package/dist/contexts/widgetConfigContext/widgetConfigContext.cjs +67 -0
  220. package/dist/contexts/widgetConfigContext/widgetConfigContext.d.cts +19 -0
  221. package/dist/contexts/widgetConfigContext/widgetConfigContext.d.ts +19 -0
  222. package/dist/contexts/widgetConfigContext/widgetConfigContext.js +65 -0
  223. package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.d.cts +1 -1
  224. package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.d.ts +1 -1
  225. package/dist/hooks/AppDetails/useAppDetails.cjs +2 -4
  226. package/dist/hooks/AppDetails/useAppDetails.js +3 -5
  227. package/dist/hooks/ChatToggle/useChatToggle.cjs +6 -5
  228. package/dist/hooks/ChatToggle/useChatToggle.js +3 -2
  229. package/dist/hooks/ChatToggleAnalytics/useChatToggleAnalytics.cjs +3 -3
  230. package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +3 -3
  231. package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.ts +2 -2
  232. package/dist/hooks/GraphQLConfig/index.cjs +1 -1
  233. package/dist/hooks/GraphQLConfig/index.d.cts +2 -2
  234. package/dist/hooks/GraphQLConfig/index.d.ts +2 -2
  235. package/dist/hooks/GraphQLConfig/index.js +2 -2
  236. package/dist/hooks/GraphQLConfig/useGraphQLConfig.cjs +30 -21
  237. package/dist/hooks/GraphQLConfig/useGraphQLConfig.d.cts +5 -4
  238. package/dist/hooks/GraphQLConfig/useGraphQLConfig.d.ts +5 -4
  239. package/dist/hooks/GraphQLConfig/useGraphQLConfig.js +30 -21
  240. package/dist/hooks/ImageResolver/useImageResolver.cjs +1 -1
  241. package/dist/hooks/ImageResolver/useImageResolver.js +1 -1
  242. package/dist/hooks/Search/useSearch.cjs +10 -12
  243. package/dist/hooks/Search/useSearch.d.cts +1 -3
  244. package/dist/hooks/Search/useSearch.d.ts +1 -3
  245. package/dist/hooks/Search/useSearch.js +7 -9
  246. package/dist/hooks/Search/useSearchInput.cjs +4 -4
  247. package/dist/hooks/Search/useSearchInput.js +1 -1
  248. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.cjs +5 -4
  249. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.cts +1 -1
  250. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.ts +1 -1
  251. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.js +3 -2
  252. package/dist/hooks/UpdateAnalyticsProps/useUpdateAnalyticsProps.cjs +3 -2
  253. package/dist/hooks/UpdateAnalyticsProps/useUpdateAnalyticsProps.js +3 -2
  254. package/dist/hooks/utils.d.ts +1 -1
  255. package/dist/node_modules/classnames/index.cjs +52 -0
  256. package/dist/node_modules/classnames/index.js +49 -0
  257. package/dist/packages/components-v3/dist/Container/Container.cjs +11 -0
  258. package/dist/packages/components-v3/dist/Container/Container.js +12 -0
  259. package/dist/packages/components-v3/dist/Container/hooks/useGetCenterContentProperties.cjs +1 -0
  260. package/dist/packages/components-v3/dist/Container/hooks/useGetCenterContentProperties.js +3 -0
  261. package/dist/packages/components-v3/dist/Container/hooks/useGetFluidProperties.cjs +1 -0
  262. package/dist/packages/components-v3/dist/Container/hooks/useGetFluidProperties.js +3 -0
  263. package/dist/packages/components-v3/dist/Container/index.cjs +1 -0
  264. package/dist/packages/components-v3/dist/Container/index.js +3 -0
  265. package/dist/packages/components-v3/dist/Image/Image.cjs +16 -0
  266. package/dist/packages/components-v3/dist/Image/Image.js +17 -0
  267. package/dist/packages/components-v3/dist/Image/hooks/useGetAccessibilityProperties.cjs +1 -0
  268. package/dist/packages/components-v3/dist/Image/hooks/useGetAccessibilityProperties.js +3 -0
  269. package/dist/packages/components-v3/dist/Image/hooks/useGetAspectRatioProperties.cjs +1 -0
  270. package/dist/packages/components-v3/dist/Image/hooks/useGetAspectRatioProperties.js +3 -0
  271. package/dist/packages/components-v3/dist/Image/hooks/useGetObjectFitProperties.cjs +1 -0
  272. package/dist/packages/components-v3/dist/Image/hooks/useGetObjectFitProperties.js +3 -0
  273. package/dist/packages/components-v3/dist/Image/hooks/useGetRoundedProperties.cjs +1 -0
  274. package/dist/packages/components-v3/dist/Image/hooks/useGetRoundedProperties.js +3 -0
  275. package/dist/packages/components-v3/dist/Image/hooks/useGetSkeletonProperties.cjs +1 -0
  276. package/dist/packages/components-v3/dist/Image/hooks/useGetSkeletonProperties.js +3 -0
  277. package/dist/packages/components-v3/dist/Image/hooks/useGetWidthProperties.cjs +1 -0
  278. package/dist/packages/components-v3/dist/Image/hooks/useGetWidthProperties.js +3 -0
  279. package/dist/packages/components-v3/dist/Image/hooks/useHandleImageLoading.cjs +1 -0
  280. package/dist/packages/components-v3/dist/Image/hooks/useHandleImageLoading.js +3 -0
  281. package/dist/packages/components-v3/dist/ImageGallery/ImageGallery.cjs +2 -0
  282. package/dist/packages/components-v3/dist/ImageGallery/ImageGallery.js +4 -0
  283. package/dist/packages/components-v3/dist/ImageGallery/components/ImageItem.cjs +2 -0
  284. package/dist/packages/components-v3/dist/ImageGallery/components/ImageItem.js +4 -0
  285. package/dist/packages/components-v3/dist/ImageGallery/components/Layout.cjs +15 -0
  286. package/dist/packages/components-v3/dist/ImageGallery/components/Layout.js +16 -0
  287. package/dist/packages/components-v3/dist/ImageGallery/components/NormalLayout.cjs +4 -0
  288. package/dist/packages/components-v3/dist/ImageGallery/components/NormalLayout.js +4 -0
  289. package/dist/packages/components-v3/dist/ImageGallery/components/OverlappedLayout.cjs +1 -0
  290. package/dist/packages/components-v3/dist/ImageGallery/components/OverlappedLayout.js +3 -0
  291. package/dist/packages/components-v3/dist/ImageGallery/components/index.cjs +4 -0
  292. package/dist/packages/components-v3/dist/ImageGallery/components/index.js +6 -0
  293. package/dist/packages/components-v3/dist/ImageGallery/hooks/useGetContainerProperties.cjs +1 -0
  294. package/dist/packages/components-v3/dist/ImageGallery/hooks/useGetContainerProperties.js +3 -0
  295. package/dist/packages/components-v3/dist/ImageGallery/index.cjs +2 -0
  296. package/dist/packages/components-v3/dist/ImageGallery/index.js +4 -0
  297. package/dist/packages/components-v3/dist/ImageGallery/types/types.cjs +13 -0
  298. package/dist/packages/components-v3/dist/ImageGallery/types/types.js +12 -0
  299. package/dist/packages/components-v3/dist/PromptButton/PromptButton.cjs +12 -0
  300. package/dist/packages/components-v3/dist/PromptButton/PromptButton.js +13 -0
  301. package/dist/packages/components-v3/dist/PromptButton/components/Icon.cjs +1 -0
  302. package/dist/packages/components-v3/dist/PromptButton/components/Icon.js +3 -0
  303. package/dist/packages/components-v3/dist/PromptButton/components/Label.cjs +3 -0
  304. package/dist/packages/components-v3/dist/PromptButton/components/Label.js +5 -0
  305. package/dist/packages/components-v3/dist/PromptButton/components/Layout.cjs +12 -0
  306. package/dist/packages/components-v3/dist/PromptButton/components/Layout.js +13 -0
  307. package/dist/packages/components-v3/dist/PromptButton/components/Loading.cjs +9 -0
  308. package/dist/packages/components-v3/dist/PromptButton/components/Loading.js +10 -0
  309. package/dist/packages/components-v3/dist/PromptButton/components/index.cjs +4 -0
  310. package/dist/packages/components-v3/dist/PromptButton/components/index.js +6 -0
  311. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetBoldTextProperties.cjs +1 -0
  312. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetBoldTextProperties.js +3 -0
  313. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetLayoutBaseProperties.cjs +8 -0
  314. package/dist/packages/components-v3/dist/PromptButton/hooks/useGetLayoutBaseProperties.js +9 -0
  315. package/dist/packages/components-v3/dist/PromptButton/index.cjs +2 -0
  316. package/dist/packages/components-v3/dist/PromptButton/index.js +4 -0
  317. package/dist/packages/components-v3/dist/PromptButton/types/index.cjs +13 -0
  318. package/dist/packages/components-v3/dist/PromptButton/types/index.js +12 -0
  319. package/dist/packages/components-v3/dist/PromptCarousel/PromptCarousel.cjs +12 -0
  320. package/dist/packages/components-v3/dist/PromptCarousel/PromptCarousel.js +14 -0
  321. package/dist/packages/components-v3/dist/PromptCarousel/components/BlockScrollContainer.cjs +9 -0
  322. package/dist/packages/components-v3/dist/PromptCarousel/components/BlockScrollContainer.js +10 -0
  323. package/dist/packages/components-v3/dist/PromptCarousel/components/ButtonContainerRow.cjs +11 -0
  324. package/dist/packages/components-v3/dist/PromptCarousel/components/ButtonContainerRow.js +12 -0
  325. package/dist/packages/components-v3/dist/PromptCarousel/components/CarouselContentWithBlockScroll.cjs +4 -0
  326. package/dist/packages/components-v3/dist/PromptCarousel/components/CarouselContentWithBlockScroll.js +6 -0
  327. package/dist/packages/components-v3/dist/PromptCarousel/components/CarouselContentWithRowScroll.cjs +4 -0
  328. package/dist/packages/components-v3/dist/PromptCarousel/components/CarouselContentWithRowScroll.js +6 -0
  329. package/dist/packages/components-v3/dist/PromptCarousel/components/index.cjs +3 -0
  330. package/dist/packages/components-v3/dist/PromptCarousel/components/index.js +5 -0
  331. package/dist/packages/components-v3/dist/PromptCarousel/hooks/index.cjs +5 -0
  332. package/dist/packages/components-v3/dist/PromptCarousel/hooks/index.js +7 -0
  333. package/dist/packages/components-v3/dist/PromptCarousel/hooks/useButtonScrollPosition.cjs +1 -0
  334. package/dist/packages/components-v3/dist/PromptCarousel/hooks/useButtonScrollPosition.js +3 -0
  335. package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselAnimation.cjs +3 -0
  336. package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselAnimation.js +5 -0
  337. package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselButtons.cjs +1 -0
  338. package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselButtons.js +3 -0
  339. package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselRefs.cjs +1 -0
  340. package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselRefs.js +3 -0
  341. package/dist/packages/components-v3/dist/PromptCarousel/hooks/useHorizontalScrollAnimation.cjs +1 -0
  342. package/dist/packages/components-v3/dist/PromptCarousel/hooks/useHorizontalScrollAnimation.js +3 -0
  343. package/dist/packages/components-v3/dist/PromptCarousel/index.cjs +2 -0
  344. package/dist/packages/components-v3/dist/PromptCarousel/index.js +4 -0
  345. package/dist/packages/components-v3/dist/PromptCarousel/types/types.cjs +19 -0
  346. package/dist/packages/components-v3/dist/PromptCarousel/types/types.js +17 -0
  347. package/dist/packages/components-v3/dist/Stack/Stack.cjs +36 -0
  348. package/dist/packages/components-v3/dist/Stack/Stack.js +36 -0
  349. package/dist/packages/components-v3/dist/Stack/hooks/useFormatStackChildren.cjs +27 -0
  350. package/dist/packages/components-v3/dist/Stack/hooks/useFormatStackChildren.js +26 -0
  351. package/dist/packages/components-v3/dist/Stack/hooks/useGetAlignProperties.cjs +20 -0
  352. package/dist/packages/components-v3/dist/Stack/hooks/useGetAlignProperties.js +19 -0
  353. package/dist/packages/components-v3/dist/Stack/hooks/useGetDirectionProperties.cjs +19 -0
  354. package/dist/packages/components-v3/dist/Stack/hooks/useGetDirectionProperties.js +18 -0
  355. package/dist/packages/components-v3/dist/Stack/hooks/useGetGapProperties.cjs +16 -0
  356. package/dist/packages/components-v3/dist/Stack/hooks/useGetGapProperties.js +15 -0
  357. package/dist/packages/components-v3/dist/Stack/hooks/useGetJustifyProperties.cjs +21 -0
  358. package/dist/packages/components-v3/dist/Stack/hooks/useGetJustifyProperties.js +20 -0
  359. package/dist/packages/components-v3/dist/Stack/hooks/useGetStyleProperties.cjs +38 -0
  360. package/dist/packages/components-v3/dist/Stack/hooks/useGetStyleProperties.js +38 -0
  361. package/dist/packages/components-v3/dist/Stack/hooks/useGetWrapProperties.cjs +13 -0
  362. package/dist/packages/components-v3/dist/Stack/hooks/useGetWrapProperties.js +12 -0
  363. package/dist/packages/components-v3/dist/Stack/index.cjs +1 -0
  364. package/dist/packages/components-v3/dist/Stack/index.js +3 -0
  365. package/dist/packages/components-v3/dist/Stack/utils/constants.cjs +42 -0
  366. package/dist/packages/components-v3/dist/Stack/utils/constants.js +41 -0
  367. package/dist/packages/components-v3/dist/Typography/Typography.cjs +15 -0
  368. package/dist/packages/components-v3/dist/Typography/Typography.js +16 -0
  369. package/dist/packages/components-v3/dist/Typography/hooks/useGetAccessibilityAttributes.cjs +1 -0
  370. package/dist/packages/components-v3/dist/Typography/hooks/useGetAccessibilityAttributes.js +3 -0
  371. package/dist/packages/components-v3/dist/Typography/hooks/useGetAlignProperties.cjs +1 -0
  372. package/dist/packages/components-v3/dist/Typography/hooks/useGetAlignProperties.js +3 -0
  373. package/dist/packages/components-v3/dist/Typography/hooks/useGetColorProperties.cjs +1 -0
  374. package/dist/packages/components-v3/dist/Typography/hooks/useGetColorProperties.js +3 -0
  375. package/dist/packages/components-v3/dist/Typography/hooks/useGetNoWrapProperties.cjs +1 -0
  376. package/dist/packages/components-v3/dist/Typography/hooks/useGetNoWrapProperties.js +3 -0
  377. package/dist/packages/components-v3/dist/Typography/hooks/useGetNumberOfLinesProperties.cjs +1 -0
  378. package/dist/packages/components-v3/dist/Typography/hooks/useGetNumberOfLinesProperties.js +3 -0
  379. package/dist/packages/components-v3/dist/Typography/hooks/useGetVariantProperties.cjs +1 -0
  380. package/dist/packages/components-v3/dist/Typography/hooks/useGetVariantProperties.js +3 -0
  381. package/dist/packages/components-v3/dist/Typography/index.cjs +1 -0
  382. package/dist/packages/components-v3/dist/Typography/index.js +3 -0
  383. package/dist/packages/components-v3/dist/WidgetWrapper/WidgetWrapper.cjs +12 -0
  384. package/dist/packages/components-v3/dist/WidgetWrapper/WidgetWrapper.js +13 -0
  385. package/dist/packages/components-v3/dist/WidgetWrapper/hooks/useGetWrapperProperties.cjs +1 -0
  386. package/dist/packages/components-v3/dist/WidgetWrapper/hooks/useGetWrapperProperties.js +3 -0
  387. package/dist/packages/components-v3/dist/WidgetWrapper/index.cjs +2 -0
  388. package/dist/packages/components-v3/dist/WidgetWrapper/index.js +4 -0
  389. package/dist/packages/components-v3/dist/WidgetWrapper/types/types.cjs +13 -0
  390. package/dist/packages/components-v3/dist/WidgetWrapper/types/types.js +12 -0
  391. package/dist/packages/components-v3/dist/packages/components-v3/tokens/breakpoints/breakpoints.cjs +25 -0
  392. package/dist/packages/components-v3/dist/packages/components-v3/tokens/breakpoints/breakpoints.js +23 -0
  393. package/dist/packages/components-v3/dist/utils/useCheckIsMobile.cjs +1 -0
  394. package/dist/packages/components-v3/dist/utils/useCheckIsMobile.js +3 -0
  395. package/dist/packages/components-v3/dist/utils/useResponsiveValue.cjs +57 -0
  396. package/dist/packages/components-v3/dist/utils/useResponsiveValue.js +56 -0
  397. package/dist/packages/icons/dist/FourPointStar.cjs +8 -0
  398. package/dist/packages/icons/dist/FourPointStar.js +9 -0
  399. package/dist/packages/icons/dist/_virtual/rolldown_runtime.cjs +28 -0
  400. package/dist/packages/icons/dist/_virtual/rolldown_runtime.js +26 -0
  401. package/dist/packages/icons/dist/node_modules/react/cjs/react-jsx-runtime.development.cjs +697 -0
  402. package/dist/packages/icons/dist/node_modules/react/cjs/react-jsx-runtime.development.js +697 -0
  403. package/dist/packages/icons/dist/node_modules/react/cjs/react-jsx-runtime.production.min.cjs +44 -0
  404. package/dist/packages/icons/dist/node_modules/react/cjs/react-jsx-runtime.production.min.js +44 -0
  405. package/dist/packages/icons/dist/node_modules/react/cjs/react.development.cjs +1529 -0
  406. package/dist/packages/icons/dist/node_modules/react/cjs/react.development.js +1529 -0
  407. package/dist/packages/icons/dist/node_modules/react/cjs/react.production.min.cjs +330 -0
  408. package/dist/packages/icons/dist/node_modules/react/cjs/react.production.min.js +330 -0
  409. package/dist/packages/icons/dist/node_modules/react/index.cjs +14 -0
  410. package/dist/packages/icons/dist/node_modules/react/index.js +14 -0
  411. package/dist/packages/icons/dist/node_modules/react/jsx-runtime.cjs +14 -0
  412. package/dist/packages/icons/dist/node_modules/react/jsx-runtime.js +14 -0
  413. package/dist/services/amplitudeService/amplitudeService.cjs +204 -0
  414. package/dist/services/amplitudeService/amplitudeService.d.cts +75 -0
  415. package/dist/services/amplitudeService/amplitudeService.d.ts +75 -0
  416. package/dist/services/amplitudeService/amplitudeService.js +202 -0
  417. package/dist/services/amplitudeService/index.cjs +4 -0
  418. package/dist/services/amplitudeService/index.d.cts +2 -0
  419. package/dist/services/amplitudeService/index.d.ts +2 -0
  420. package/dist/services/amplitudeService/index.js +3 -0
  421. package/dist/services/enviveConfigService/enviveConfigService.cjs +36 -0
  422. package/dist/services/enviveConfigService/enviveConfigService.d.cts +43 -0
  423. package/dist/services/enviveConfigService/enviveConfigService.d.ts +43 -0
  424. package/dist/services/enviveConfigService/enviveConfigService.js +36 -0
  425. package/dist/services/enviveConfigService/index.cjs +3 -0
  426. package/dist/services/enviveConfigService/index.d.cts +2 -0
  427. package/dist/services/enviveConfigService/index.d.ts +2 -0
  428. package/dist/services/enviveConfigService/index.js +3 -0
  429. package/dist/types/enviveConfig.d.cts +29 -0
  430. package/dist/types/enviveConfig.d.ts +29 -0
  431. package/dist/types/index.d.cts +2 -1
  432. package/dist/types/index.d.ts +2 -1
  433. package/package.json +40 -4
  434. package/src/application/commerce-api.ts +14 -1
  435. package/src/application/models/api/userEvent.ts +3 -1
  436. package/src/application/models/api/widgetText.ts +9 -0
  437. package/src/application/models/api/widgetTextRequest.ts +10 -0
  438. package/src/application/models/chatElementDisplayLocationV3.ts +12 -0
  439. package/src/application/models/colorsConfigV3.ts +26 -0
  440. package/src/application/models/featureGates.ts +1 -0
  441. package/src/application/models/frontendConfig.ts +5 -0
  442. package/src/application/models/frontendConfigV3.ts +10 -0
  443. package/src/application/models/index.ts +1 -0
  444. package/src/application/models/utils/snakeToCamelTransformer.ts +1 -1
  445. package/src/application/utils/elementObserver.ts +2 -2
  446. package/src/application/utils/widgetTextFromApiWidgetTextResponse.ts +30 -0
  447. package/src/application/utils/widgetTextRequestToApiRequest.ts +45 -0
  448. package/src/atoms/amplitude/amplitudeTrackEventAtom.ts +1 -8
  449. package/src/atoms/app/index.ts +3 -3
  450. package/src/atoms/app/variant.ts +5 -0
  451. package/src/atoms/chat/chatState.ts +10 -2
  452. package/src/atoms/envive/enviveConfig.ts +5 -0
  453. package/src/atoms/org/graphqlConfig.ts +0 -1
  454. package/src/atoms/widget/chatPreviewLoading.ts +36 -0
  455. package/src/atoms/widget/index.ts +1 -0
  456. package/src/contexts/amplitudeContext/__tests__/amplitudeContext.test.tsx +197 -187
  457. package/src/contexts/amplitudeContext/amplitudeContext.tsx +56 -334
  458. package/src/contexts/enviveConfigContext/enviveConfigContext.tsx +3 -0
  459. package/src/contexts/enviveContext/enviveContext.tsx +101 -27
  460. package/src/contexts/enviveCssContext/enviveCssContext.tsx +121 -22
  461. package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +12 -11
  462. package/src/contexts/graphqlContext/graphqlContext.tsx +131 -13
  463. package/src/contexts/graphqlContext/mockV3Config.ts +209 -0
  464. package/src/contexts/hardcopyContext/hardcopyContext.tsx +136 -14
  465. package/src/contexts/newOrgConfigContext/__tests__/newOrgConfigContext.test.tsx +6 -6
  466. package/src/contexts/newOrgConfigContext/newOrgConfigContext.tsx +5 -13
  467. package/src/contexts/pageContext/__tests__/pageContext.test.tsx +24 -8
  468. package/src/contexts/pageContext/mapping.ts +4 -0
  469. package/src/contexts/pageContext/pageContext.tsx +41 -12
  470. package/src/contexts/pageContext/types.ts +4 -0
  471. package/src/contexts/salesAgentContext/chatAPI.ts +1 -0
  472. package/src/contexts/salesAgentContext/salesAgentContext.tsx +94 -42
  473. package/src/contexts/salesAgentContext/salesAgentService.ts +78 -3
  474. package/src/contexts/salesAgentContext/statusCodeError.ts +10 -0
  475. package/src/contexts/searchContext/__tests__/searchContext.test.tsx +8 -2
  476. package/src/contexts/types.ts +15 -19
  477. package/src/contexts/typesV3.ts +316 -0
  478. package/src/contexts/uiConfigContext/__tests__/uiConfigContext.test.tsx +321 -0
  479. package/src/contexts/uiConfigContext/index.ts +1 -0
  480. package/src/contexts/uiConfigContext/uiConfigContext.tsx +44 -0
  481. package/src/contexts/widgetConfigContext/__tests__/widgetConfigContext.test.tsx +512 -0
  482. package/src/contexts/widgetConfigContext/index.ts +1 -0
  483. package/src/contexts/widgetConfigContext/widgetConfigContext.tsx +84 -0
  484. package/src/hooks/AppDetails/useAppDetails.ts +2 -2
  485. package/src/hooks/GraphQLConfig/useGraphQLConfig.ts +22 -21
  486. package/src/hooks/Search/__tests__/useSearch.test.tsx +15 -6
  487. package/src/hooks/Search/useSearch.tsx +6 -5
  488. package/src/services/amplitudeService/__tests__/amplitudeService.test.ts +558 -0
  489. package/src/services/amplitudeService/amplitudeService.ts +324 -0
  490. package/src/services/amplitudeService/index.ts +1 -0
  491. package/src/services/enviveConfigService/enviveConfigService.ts +72 -0
  492. package/src/services/enviveConfigService/index.ts +1 -0
  493. package/src/types/enviveConfig.ts +27 -0
  494. package/src/types/index.ts +1 -0
  495. package/dist/contexts/chatContext/chatContext.cjs +0 -306
  496. package/dist/contexts/chatContext/chatContext.d.cts +0 -15
  497. package/dist/contexts/chatContext/chatContext.d.ts +0 -15
  498. package/dist/contexts/chatContext/chatContext.js +0 -304
  499. package/dist/contexts/chatContext/index.cjs +0 -4
  500. package/dist/contexts/chatContext/index.d.cts +0 -2
  501. package/dist/contexts/chatContext/index.d.ts +0 -2
  502. package/dist/contexts/chatContext/index.js +0 -3
@@ -7,49 +7,45 @@ import {
7
7
  } from 'src/contexts/userIdentityContext/userIdentityContext';
8
8
  import { LocalStorageProvider } from 'src/contexts/localStorageContext';
9
9
  import { EnviveConfigProvider } from 'src/contexts/enviveConfigContext/enviveConfigContext';
10
- import { FeatureFlagServiceProvider } from 'src/contexts/featureFlagServiceContext/featureFlagServiceContext';
10
+ import {
11
+ FeatureFlagService,
12
+ FeatureFlagServiceProvider,
13
+ } from 'src/contexts/featureFlagServiceContext/featureFlagServiceContext';
11
14
  import { userIdAtom } from 'src/atoms/app';
12
- import Logger from 'src/application/logging/logger';
15
+ import { AmplitudeService } from 'src/services/amplitudeService/amplitudeService';
13
16
  import { AmplitudeProvider, SpiffyMetricsEventName, useAmplitude } from '../amplitudeContext';
14
17
 
15
- // Mock the Logger to avoid console output in tests
16
- // vi.spyOn(Logger, "logInfo").mockImplementation(() => {});
17
- // vi.spyOn(Logger, "logWarn").mockImplementation(() => {});
18
- // vi.spyOn(Logger, "logError").mockImplementation(() => {});
19
- // vi.spyOn(Logger, "logDebug").mockImplementation(() => {});
20
-
21
- // Mock Amplitude
22
- const mockTrack = vi.fn();
23
- const mockInit = vi.fn();
24
- const mockAdd = vi.fn();
25
-
26
- vi.mock('@amplitude/analytics-browser', () => ({
27
- createInstance: vi.fn(() => ({
28
- track: mockTrack,
29
- init: mockInit,
30
- add: mockAdd,
31
- })),
32
- }));
33
-
34
- // Mock EventsDispatcher
35
- vi.mock('src/events', () => ({
36
- EventsDispatcher: {
37
- dispatch: vi.fn(),
38
- },
39
- SpiffyEvent: {
40
- AMPLITUDE_EVENT: 'AMPLITUDE_EVENT',
41
- },
42
- }));
43
-
44
- // Mock crypto.subtle.digest for insert_id generation
45
- const mockDigest = vi.fn().mockResolvedValue(new Uint8Array(32).fill(0));
46
- Object.defineProperty(global, 'crypto', {
47
- value: {
48
- subtle: {
49
- digest: mockDigest,
50
- },
51
- },
52
- writable: true,
18
+ // Mock AmplitudeService
19
+ const mockTrackEvent = vi.fn().mockResolvedValue(undefined);
20
+ const mockSetSupplementalDefaultProps = vi.fn();
21
+ const mockIsReady = vi.fn().mockReturnValue(true);
22
+
23
+ vi.mock('src/services/amplitudeService/amplitudeService', async () => {
24
+ const actual = await vi.importActual<
25
+ typeof import('src/services/amplitudeService/amplitudeService')
26
+ >('src/services/amplitudeService/amplitudeService');
27
+
28
+ class MockAmplitudeService {
29
+ trackEvent = mockTrackEvent;
30
+
31
+ setSupplementalDefaultProps = mockSetSupplementalDefaultProps;
32
+
33
+ get isReady(): boolean {
34
+ // eslint-disable-next-line class-methods-use-this
35
+ return mockIsReady();
36
+ }
37
+ }
38
+
39
+ function MockAmplitudeServiceConstructor() {
40
+ return new MockAmplitudeService();
41
+ }
42
+ MockAmplitudeServiceConstructor.prototype = MockAmplitudeService.prototype;
43
+ const mockAmplitudeServiceConstructor = vi.fn(MockAmplitudeServiceConstructor);
44
+
45
+ return {
46
+ ...actual,
47
+ AmplitudeService: mockAmplitudeServiceConstructor,
48
+ };
53
49
  });
54
50
 
55
51
  // Component that uses the useAmplitude hook
@@ -125,13 +121,23 @@ const CombinedContextComponent: React.FC = () => {
125
121
  );
126
122
  };
127
123
 
124
+ // FeatureFlagService
125
+ const testFeatureFlagService = new FeatureFlagService([]);
126
+
128
127
  // Wrapper component with all required providers
129
128
  const TestWrapper: React.FC<{
130
129
  children: React.ReactNode;
131
130
  amplitudeApiKey?: string;
132
131
  userIdOverride?: string;
133
132
  userIdDefault?: string;
134
- }> = ({ children, amplitudeApiKey = 'test-amplitude-key', userIdOverride, userIdDefault }) => {
133
+ externalAmplitudeService?: AmplitudeService;
134
+ }> = ({
135
+ children,
136
+ amplitudeApiKey = 'test-amplitude-key',
137
+ userIdOverride,
138
+ userIdDefault,
139
+ externalAmplitudeService,
140
+ }) => {
135
141
  // Set up localStorage with user IDs if provided
136
142
  React.useEffect(() => {
137
143
  if (userIdOverride) {
@@ -155,8 +161,10 @@ const TestWrapper: React.FC<{
155
161
  >
156
162
  <LocalStorageProvider>
157
163
  <UserIdentityProvider>
158
- <FeatureFlagServiceProvider featureGates={[]}>
159
- <AmplitudeProvider>{children}</AmplitudeProvider>
164
+ <FeatureFlagServiceProvider featureFlagService={testFeatureFlagService}>
165
+ <AmplitudeProvider externalAmplitudeService={externalAmplitudeService}>
166
+ {children}
167
+ </AmplitudeProvider>
160
168
  </FeatureFlagServiceProvider>
161
169
  </UserIdentityProvider>
162
170
  </LocalStorageProvider>
@@ -165,17 +173,19 @@ const TestWrapper: React.FC<{
165
173
  );
166
174
  };
167
175
 
168
- describe('AmplitudeProvider with UserIdentityContext', () => {
176
+ describe('AmplitudeProvider - React Context Integration', () => {
169
177
  beforeEach(() => {
170
178
  vi.clearAllMocks();
171
179
  if (typeof localStorage !== 'undefined') {
172
180
  localStorage.clear();
173
181
  }
174
182
  // Reset mocks
175
- mockTrack.mockClear();
176
- mockInit.mockClear();
177
- mockAdd.mockClear();
178
- mockDigest.mockResolvedValue(new Uint8Array(32).fill(0));
183
+ mockTrackEvent.mockClear();
184
+ mockSetSupplementalDefaultProps.mockClear();
185
+ mockIsReady.mockReturnValue(true);
186
+ if (AmplitudeService && typeof AmplitudeService === 'function') {
187
+ (AmplitudeService as unknown as ReturnType<typeof vi.fn>).mockClear();
188
+ }
179
189
  });
180
190
 
181
191
  describe('Integration with UserIdentityContext - userIdAtom', () => {
@@ -209,10 +219,12 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
209
219
  });
210
220
 
211
221
  await waitFor(() => {
212
- expect(mockTrack).toHaveBeenCalled();
213
- const callArgs = mockTrack.mock.calls[0];
214
- expect(callArgs[0]).toBe('[Spiffy] Chat User Message Input');
215
- expect(callArgs[1]).toHaveProperty('user.id', testUserId);
222
+ expect(mockTrackEvent).toHaveBeenCalled();
223
+ const callArgs = mockTrackEvent.mock.calls[0];
224
+ expect(callArgs[0]).toEqual({
225
+ eventName: SpiffyMetricsEventName.ChatUserMessageInput,
226
+ eventProps: { message: 'test message' },
227
+ });
216
228
  });
217
229
  });
218
230
 
@@ -233,9 +245,12 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
233
245
  });
234
246
 
235
247
  await waitFor(() => {
236
- expect(mockTrack).toHaveBeenCalled();
237
- const callArgs = mockTrack.mock.calls[0];
238
- expect(callArgs[1]).toHaveProperty('user.id', testUserId);
248
+ expect(mockTrackEvent).toHaveBeenCalled();
249
+ const callArgs = mockTrackEvent.mock.calls[0];
250
+ expect(callArgs[0]).toEqual({
251
+ eventName: SpiffyMetricsEventName.ChatUserMessageInput,
252
+ eventProps: { message: 'test message' },
253
+ });
239
254
  });
240
255
  });
241
256
 
@@ -260,14 +275,16 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
260
275
  });
261
276
 
262
277
  await waitFor(() => {
263
- expect(mockTrack).toHaveBeenCalled();
264
- const callArgs = mockTrack.mock.calls[0];
265
- expect(callArgs[1]).toHaveProperty('user.id', overrideUserId);
266
- expect(callArgs[1]).not.toHaveProperty('user.id', defaultUserId);
278
+ expect(mockTrackEvent).toHaveBeenCalled();
279
+ const callArgs = mockTrackEvent.mock.calls[0];
280
+ expect(callArgs[0]).toEqual({
281
+ eventName: SpiffyMetricsEventName.ChatUserMessageInput,
282
+ eventProps: { message: 'test message' },
283
+ });
267
284
  });
268
285
  });
269
286
 
270
- it('should initialize Amplitude with userId from UserIdentityContext', async () => {
287
+ it('should initialize AmplitudeService with userId from UserIdentityContext', async () => {
271
288
  const testUserId = 'init-user-id-345';
272
289
  render(
273
290
  <TestWrapper userIdOverride={testUserId}>
@@ -276,9 +293,10 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
276
293
  );
277
294
 
278
295
  await waitFor(() => {
279
- expect(mockInit).toHaveBeenCalled();
280
- const initArgs = mockInit.mock.calls[0];
281
- expect(initArgs[1]).toBe(testUserId);
296
+ expect(AmplitudeService).toHaveBeenCalled();
297
+ const serviceCallArgs = (AmplitudeService as unknown as ReturnType<typeof vi.fn>).mock
298
+ .calls[0];
299
+ expect(serviceCallArgs[0]).toHaveProperty('userId', testUserId);
282
300
  });
283
301
  });
284
302
  });
@@ -305,105 +323,6 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
305
323
  });
306
324
  });
307
325
 
308
- describe('Event tracking with UserIdentityContext userId', () => {
309
- it('should include user.id in all tracked events', async () => {
310
- const testUserId = 'event-user-id-901';
311
- render(
312
- <TestWrapper userIdOverride={testUserId}>
313
- <MockAmplitudeComponent />
314
- </TestWrapper>,
315
- );
316
-
317
- await waitFor(() => {
318
- expect(screen.getByTestId('is-ready').textContent).toBe('true');
319
- });
320
-
321
- await act(async () => {
322
- screen.getByTestId('track-event-button').click();
323
- });
324
-
325
- await waitFor(() => {
326
- expect(mockTrack).toHaveBeenCalled();
327
- const callArgs = mockTrack.mock.calls[0];
328
- expect(callArgs[1]).toHaveProperty('user.id', testUserId);
329
- });
330
- });
331
-
332
- it('should include user.id in default tracking props', async () => {
333
- const testUserId = 'default-props-user-id';
334
- render(
335
- <TestWrapper userIdOverride={testUserId}>
336
- <MockAmplitudeComponent />
337
- </TestWrapper>,
338
- );
339
-
340
- await waitFor(() => {
341
- expect(screen.getByTestId('is-ready').textContent).toBe('true');
342
- });
343
-
344
- await act(async () => {
345
- screen.getByTestId('track-event-button').click();
346
- });
347
-
348
- await waitFor(() => {
349
- expect(mockTrack).toHaveBeenCalled();
350
- const callArgs = mockTrack.mock.calls[0];
351
- const eventProps = callArgs[1];
352
- expect(eventProps['user.id']).toBe(testUserId);
353
- expect(eventProps['cdp.user_id']).toBe(null);
354
- });
355
- });
356
-
357
- it('should track multiple events with correct userId', async () => {
358
- const testUserId = 'multi-event-user-id';
359
- const MultiEventComponent: React.FC = () => {
360
- const amplitude = useAmplitude();
361
-
362
- const trackMultiple = () => {
363
- amplitude.trackEvent({
364
- eventName: SpiffyMetricsEventName.ChatUserMessageInput,
365
- eventProps: { event1: true },
366
- });
367
- amplitude.trackEvent({
368
- eventName: SpiffyMetricsEventName.ChatSuggestionClicked,
369
- eventProps: { event2: true },
370
- });
371
- };
372
-
373
- return (
374
- <button
375
- data-testid="track-multiple"
376
- type="button"
377
- onClick={trackMultiple}
378
- >
379
- Track Multiple
380
- </button>
381
- );
382
- };
383
-
384
- render(
385
- <TestWrapper userIdOverride={testUserId}>
386
- <MultiEventComponent />
387
- </TestWrapper>,
388
- );
389
-
390
- await waitFor(() => {
391
- expect(screen.getByTestId('track-multiple')).toBeInTheDocument();
392
- });
393
-
394
- await act(async () => {
395
- screen.getByTestId('track-multiple').click();
396
- });
397
-
398
- await waitFor(() => {
399
- expect(mockTrack).toHaveBeenCalledTimes(2);
400
- mockTrack.mock.calls.forEach((call: any[]) => {
401
- expect(call[1]).toHaveProperty('user.id', testUserId);
402
- });
403
- });
404
- });
405
- });
406
-
407
326
  describe('Context readiness and initialization', () => {
408
327
  it('should wait for UserIdentityContext to be ready before becoming ready', async () => {
409
328
  render(
@@ -419,7 +338,7 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
419
338
  });
420
339
  });
421
340
 
422
- it('should initialize Amplitude client with correct userId from UserIdentityContext', async () => {
341
+ it('should initialize AmplitudeService with correct config from UserIdentityContext', async () => {
423
342
  const testUserId = 'init-client-user-id';
424
343
  render(
425
344
  <TestWrapper userIdOverride={testUserId}>
@@ -428,13 +347,14 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
428
347
  );
429
348
 
430
349
  await waitFor(() => {
431
- expect(mockInit).toHaveBeenCalledWith(
432
- 'test-amplitude-key',
433
- testUserId,
434
- expect.objectContaining({
435
- serverZone: 'US',
436
- }),
437
- );
350
+ expect(AmplitudeService).toHaveBeenCalled();
351
+ const serviceCallArgs = (AmplitudeService as unknown as ReturnType<typeof vi.fn>).mock
352
+ .calls[0];
353
+ expect(serviceCallArgs[0]).toMatchObject({
354
+ userId: testUserId,
355
+ amplitudeApiKey: 'test-amplitude-key',
356
+ dataResidency: 'US',
357
+ });
438
358
  });
439
359
  });
440
360
 
@@ -451,7 +371,7 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
451
371
  >
452
372
  <LocalStorageProvider>
453
373
  <UserIdentityProvider>
454
- <FeatureFlagServiceProvider featureGates={[]}>
374
+ <FeatureFlagServiceProvider featureFlagService={testFeatureFlagService}>
455
375
  <AmplitudeProvider>{children}</AmplitudeProvider>
456
376
  </FeatureFlagServiceProvider>
457
377
  </UserIdentityProvider>
@@ -461,7 +381,7 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
461
381
  );
462
382
  };
463
383
 
464
- const { container } = render(
384
+ render(
465
385
  <IncompleteWrapper>
466
386
  <div data-testid="should-not-render">Should not render</div>
467
387
  </IncompleteWrapper>,
@@ -474,17 +394,20 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
474
394
  });
475
395
  });
476
396
 
477
- describe('Error handling', () => {
478
- it('should handle tracking errors gracefully when userId is available', async () => {
479
- const testUserId = 'error-user-id';
480
- mockTrack.mockImplementationOnce(() => {
481
- throw new Error('Tracking error');
397
+ describe('External service injection', () => {
398
+ it('should use external AmplitudeService when provided', async () => {
399
+ const externalService = new AmplitudeService({
400
+ userId: 'external-user-id',
401
+ amplitudeApiKey: 'external-api-key',
402
+ dataResidency: 'EU',
403
+ featureFlagService: new FeatureFlagService([]),
404
+ env: 'test', // Provide required fields to match AmplitudeServiceConfig
405
+ contextSource: 'test-source',
406
+ orgShortName: 'test-org',
482
407
  });
483
408
 
484
- const logErrorSpy = vi.spyOn(Logger, 'logError');
485
-
486
409
  render(
487
- <TestWrapper userIdOverride={testUserId}>
410
+ <TestWrapper externalAmplitudeService={externalService}>
488
411
  <MockAmplitudeComponent />
489
412
  </TestWrapper>,
490
413
  );
@@ -498,13 +421,100 @@ describe('AmplitudeProvider with UserIdentityContext', () => {
498
421
  });
499
422
 
500
423
  await waitFor(() => {
501
- expect(logErrorSpy).toHaveBeenCalledWith(
502
- '[spiffy-ai] Error tracking event',
503
- expect.any(Error),
504
- expect.objectContaining({
505
- eventName: SpiffyMetricsEventName.ChatUserMessageInput,
506
- }),
507
- );
424
+ expect(mockTrackEvent).toHaveBeenCalled();
425
+ const callArgs = mockTrackEvent.mock.calls[0];
426
+ expect(callArgs[0]).toEqual({
427
+ eventName: SpiffyMetricsEventName.ChatUserMessageInput,
428
+ eventProps: { message: 'test message' },
429
+ });
430
+ });
431
+ });
432
+
433
+ it('should not create new service when external service is provided', async () => {
434
+ // Provide all required fields to match AmplitudeServiceConfig
435
+ const externalService = new AmplitudeService({
436
+ userId: 'external-user-id',
437
+ amplitudeApiKey: 'external-api-key',
438
+ dataResidency: 'EU',
439
+ featureFlagService: new FeatureFlagService([]),
440
+ env: 'test',
441
+ contextSource: 'test-source',
442
+ orgShortName: 'test-org',
443
+ });
444
+
445
+ const serviceCallCountBefore = (AmplitudeService as unknown as ReturnType<typeof vi.fn>).mock
446
+ .calls.length;
447
+
448
+ render(
449
+ <TestWrapper externalAmplitudeService={externalService}>
450
+ <MockAmplitudeComponent />
451
+ </TestWrapper>,
452
+ );
453
+
454
+ await waitFor(() => {
455
+ expect(screen.getByTestId('is-ready').textContent).toBe('true');
456
+ });
457
+
458
+ // Should not have created an additional service instance
459
+ // The provider should use the external service directly
460
+ const serviceCallCountAfter = (AmplitudeService as unknown as ReturnType<typeof vi.fn>).mock
461
+ .calls.length;
462
+ expect(serviceCallCountAfter).toBe(serviceCallCountBefore);
463
+ });
464
+ });
465
+
466
+ describe('useAmplitude hook', () => {
467
+ it('should throw error when used outside provider', () => {
468
+ // Suppress console.error for this test
469
+ const consoleError = vi.spyOn(console, 'error').mockImplementation(() => {});
470
+
471
+ expect(() => {
472
+ render(<MockAmplitudeComponent />);
473
+ }).toThrow('useAmplitude must be used within AmplitudeProvider');
474
+
475
+ consoleError.mockRestore();
476
+ });
477
+
478
+ it('should provide amplitude context when used within provider', async () => {
479
+ render(
480
+ <TestWrapper>
481
+ <MockAmplitudeComponent />
482
+ </TestWrapper>,
483
+ );
484
+
485
+ await waitFor(() => {
486
+ expect(screen.getByTestId('amplitude-component')).toBeInTheDocument();
487
+ expect(screen.getByTestId('is-ready')).toBeInTheDocument();
488
+ });
489
+ });
490
+ });
491
+
492
+ describe('Service instance management', () => {
493
+ it('should update service when dependencies change', async () => {
494
+ const { rerender } = render(
495
+ <TestWrapper amplitudeApiKey="initial-key">
496
+ <MockAmplitudeComponent />
497
+ </TestWrapper>,
498
+ );
499
+
500
+ await waitFor(() => {
501
+ expect(screen.getByTestId('is-ready').textContent).toBe('true');
502
+ });
503
+
504
+ const initialServiceCalls = (AmplitudeService as unknown as ReturnType<typeof vi.fn>).mock
505
+ .calls.length;
506
+
507
+ rerender(
508
+ <TestWrapper amplitudeApiKey="updated-key">
509
+ <MockAmplitudeComponent />
510
+ </TestWrapper>,
511
+ );
512
+
513
+ // Service should be recreated with new config
514
+ await waitFor(() => {
515
+ const serviceCallCount = (AmplitudeService as unknown as ReturnType<typeof vi.fn>).mock
516
+ .calls.length;
517
+ expect(serviceCallCount).toBeGreaterThan(initialServiceCalls);
508
518
  });
509
519
  });
510
520
  });