@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
@@ -1,7 +1,16 @@
1
1
  import { UserEvent } from '@spiffy-ai/commerce-api-client';
2
- import { ReactNode, createContext, useCallback, useContext, useMemo } from 'react';
2
+ import { ReactNode, createContext, useCallback, useContext, useMemo, useState } from 'react';
3
3
  import Logger from 'src/application/logging/logger';
4
- import { WidgetTypeV3 } from '../types';
4
+
5
+ import CommerceApiClient from 'src/application/commerce-api';
6
+ import { WidgetText } from 'src/application/models/api/widgetText';
7
+ import { WidgetTextRequest } from 'src/application/models/api/widgetTextRequest';
8
+
9
+ import { useAtomValue } from 'jotai';
10
+ import { appDetailsAtom } from 'src/atoms/app';
11
+ import { toCamelCase } from 'src/application/models/utils/snakeToCamelTransformer';
12
+ import { WidgetTypeV3 } from '../typesV3';
13
+ import { useFeatureFlagService } from '../featureFlagServiceContext/featureFlagServiceContext';
5
14
 
6
15
  interface HardcopyRequest {
7
16
  widgetType: WidgetTypeV3;
@@ -15,19 +24,52 @@ export type HardcopyResponse = {
15
24
 
16
25
  interface HardcopyContextType {
17
26
  getHardcopy: (HardcopyRequest: HardcopyRequest) => Promise<HardcopyResponse>;
27
+ isLoading: boolean;
18
28
  }
19
29
 
30
+ const convertToHardcopyResponse = (response: WidgetText): HardcopyResponse => {
31
+ return {
32
+ language: response.language,
33
+ values: Object.fromEntries(
34
+ Object.entries(response.values).map(([key, value]) => [
35
+ // Transform the key from snake_case to camelCase
36
+ toCamelCase(key),
37
+ value.length === 1 ? value[0].value : value.map(v => v.value),
38
+ ]),
39
+ ),
40
+ };
41
+ };
42
+
20
43
  // These are just sample responses for the sake of testing.
21
44
  // As we start to build the actual widgets we should determine what the actual
22
45
  // values and their names should be.
23
46
  const MOCK_HARDCOPY_RESPONSE: Partial<Record<WidgetTypeV3, HardcopyResponse>> = {
24
- [WidgetTypeV3.SuggestionBarV3]: {
47
+ [WidgetTypeV3.PromptCarouselV3]: {
25
48
  language: 'en',
26
49
  values: {
27
- suggestionBarButtons: ['Button 1', 'Button 2', 'Button 3'],
50
+ promptButtonTexts: [
51
+ 'What are your best sellers?',
52
+ 'Show me summer dresses',
53
+ 'Do you have free shipping?',
54
+ 'What sizes are available?',
55
+ 'Can I return items?',
56
+ ],
28
57
  },
29
58
  },
30
- [WidgetTypeV3.ChatPreviewV3]: {
59
+ [WidgetTypeV3.TitledPromptCarouselV3]: {
60
+ language: 'en',
61
+ values: {
62
+ titleLabel: 'Need some help?',
63
+ promptButtonTexts: [
64
+ 'What are your best sellers?',
65
+ 'Show me summer dresses',
66
+ 'Do you have free shipping?',
67
+ 'What sizes are available?',
68
+ 'Can I return items?',
69
+ ],
70
+ },
71
+ },
72
+ [WidgetTypeV3.TypingAnimationV3]: {
31
73
  language: 'en',
32
74
  values: {
33
75
  chatPreviewTitle: 'Chat Preview Title',
@@ -39,24 +81,104 @@ const MOCK_HARDCOPY_RESPONSE: Partial<Record<WidgetTypeV3, HardcopyResponse>> =
39
81
  chatPreviewDescription: 'Chat Preview Description',
40
82
  },
41
83
  },
84
+ [WidgetTypeV3.SocialProofV3]: {
85
+ language: 'en',
86
+ values: {
87
+ titleLabel: 'Shopping Assistant',
88
+ numberOfCustomersText: '123 customers',
89
+ customerQueryText: 'found what they were looking for...',
90
+ primaryButtonText: 'Start shopping',
91
+ secondaryButtonTitleText: 'Popular searches',
92
+ secondaryButtonTexts: [
93
+ 'Why should I buy from you?',
94
+ 'How do I return an item?',
95
+ 'New arrivals',
96
+ 'Sale items',
97
+ 'Popular items',
98
+ ],
99
+ textFieldPlaceholderText: 'Ask me anything...',
100
+ },
101
+ },
102
+ [WidgetTypeV3.ChatPreviewComparisonV3]: {
103
+ language: 'en',
104
+ values: {
105
+ titleLabel: 'Shopping Assistant',
106
+ headlineText: 'Need help comparing?',
107
+ textFieldPlaceholderText: 'Ask me anything...',
108
+ },
109
+ },
110
+ [WidgetTypeV3.ChatPreviewLoadingV3]: {
111
+ language: 'en',
112
+ values: {
113
+ titleLabel: 'Shopping Assistant',
114
+ textFieldPlaceholderText: 'Ask me anything...',
115
+ },
116
+ },
117
+ [WidgetTypeV3.ChatPreviewV3]: {
118
+ language: 'en',
119
+ values: {
120
+ titleLabel: 'Shopping Assistant',
121
+ textFieldPlaceholderText: 'Ask me anything...',
122
+ },
123
+ },
42
124
  };
43
125
 
44
126
  const HardcopyContext = createContext<HardcopyContextType | undefined>(undefined);
45
127
 
46
128
  export const HardcopyProvider: React.FC<{ children: ReactNode }> = ({ children }) => {
47
129
  const languages = useMemo(() => navigator.languages, []);
130
+ const [isLoading, setIsLoading] = useState(false);
131
+ const context = useAtomValue(appDetailsAtom);
48
132
 
49
- const getHardcopy = useCallback(async (request: HardcopyRequest): Promise<HardcopyResponse> => {
50
- Logger.logInfo('hardcopyContext | retrieving hardcopy', languages);
51
- const response = MOCK_HARDCOPY_RESPONSE[request.widgetType];
52
- Logger.logInfo('hardcopyContext | returning hardcopy response', response);
53
- if (!response) {
133
+ const { featureFlagService } = useFeatureFlagService();
134
+ const getHardcopyFromBackend = useCallback(
135
+ async (request: HardcopyRequest): Promise<HardcopyResponse> => {
136
+ const widgetTextRequest: WidgetTextRequest = {
137
+ widgetType: request.widgetType,
138
+ context,
139
+ featureFlags: featureFlagService?.getFeatureFlags() || {},
140
+ language: languages[0] || 'en',
141
+ url: window.location.href,
142
+ };
143
+ try {
144
+ const response = await CommerceApiClient.getHardcopy(widgetTextRequest);
145
+ if (response) {
146
+ const convertedResponse = convertToHardcopyResponse(response);
147
+ Logger.logInfo('hardcopyContext | converted response', convertedResponse);
148
+ return convertedResponse;
149
+ }
150
+ } catch (error) {
151
+ Logger.logError('hardcopyContext | error getting hardcopy from backend', error);
152
+ }
153
+ const mockResponse = MOCK_HARDCOPY_RESPONSE[request.widgetType];
154
+ if (mockResponse) {
155
+ Logger.logInfo('hardcopyContext | no real response, using mock', mockResponse);
156
+ return mockResponse;
157
+ }
54
158
  throw new Error(`No hardcopy response found for widget type: ${request.widgetType}`);
55
- }
56
- return response;
57
- }, []);
159
+ },
160
+ [context, featureFlagService, languages],
161
+ );
162
+
163
+ const getHardcopy = useCallback(
164
+ async (request: HardcopyRequest): Promise<HardcopyResponse> => {
165
+ setIsLoading(true);
166
+ Logger.logInfo('hardcopyContext | retrieving hardcopy', languages);
167
+
168
+ Logger.logInfo('hardcopyContext | request', request);
169
+ const response = await getHardcopyFromBackend(request);
170
+ Logger.logInfo('hardcopyContext | returning hardcopy response', response);
171
+ if (!response) {
172
+ setIsLoading(false);
173
+ throw new Error(`No hardcopy response found for widget type: ${request.widgetType}`);
174
+ }
175
+ setIsLoading(false);
176
+ return response;
177
+ },
178
+ [getHardcopyFromBackend, languages],
179
+ );
58
180
 
59
- const value = useMemo(() => ({ getHardcopy }), [getHardcopy]);
181
+ const value = useMemo(() => ({ getHardcopy, isLoading }), [getHardcopy, isLoading]);
60
182
 
61
183
  return <HardcopyContext.Provider value={value}>{children}</HardcopyContext.Provider>;
62
184
  };
@@ -6,12 +6,12 @@ import { GraphQLProvider } from 'src/contexts/graphqlContext/graphqlContext';
6
6
  import { LocalStorageProvider } from 'src/contexts/localStorageContext/localStorageContext';
7
7
  import { newOrgConfigAtom } from 'src/atoms/org/newOrgConfigAtom';
8
8
  import { orgShortNameAtom } from 'src/atoms/envive/enviveConfig';
9
- import { useColorsAndFrontendConfig } from 'src/hooks/GraphQLConfig/useGraphQLConfig';
9
+ import { useUIConfig } from 'src/hooks/GraphQLConfig/useGraphQLConfig';
10
10
  import { NewOrgConfigProvider, useNewOrgConfigContext } from '../newOrgConfigContext';
11
11
 
12
- // Mock the useColorsAndFrontendConfig hook
12
+ // Mock the useUIConfig hook
13
13
  vi.mock('src/hooks/GraphQLConfig/useGraphQLConfig', () => ({
14
- useColorsAndFrontendConfig: vi.fn(),
14
+ useUIConfig: vi.fn(),
15
15
  }));
16
16
 
17
17
  // Component that uses the useNewOrgConfigContext hook
@@ -59,8 +59,8 @@ const TestWrapper: React.FC<{
59
59
  };
60
60
  }> = ({ children, orgShortName, mockHookData = {} }) => {
61
61
  // Mock the hook
62
- const mockUseColorsAndFrontendConfig = useColorsAndFrontendConfig as any;
63
- mockUseColorsAndFrontendConfig.mockReturnValue({
62
+ const mockUseUIConfig = useUIConfig as any;
63
+ mockUseUIConfig.mockReturnValue({
64
64
  data: mockHookData.data || {},
65
65
  loading: mockHookData.loading ?? false,
66
66
  error: mockHookData.error || null,
@@ -186,7 +186,7 @@ describe('NewOrgConfigProvider', () => {
186
186
  });
187
187
 
188
188
  describe('Error Handling', () => {
189
- it('should handle errors from useColorsAndFrontendConfig', async () => {
189
+ it('should handle errors from useUIConfig', async () => {
190
190
  const testError = new Error('Failed to fetch config');
191
191
 
192
192
  render(
@@ -1,10 +1,8 @@
1
1
  import React, { ReactNode, createContext, useContext, useMemo } from 'react';
2
2
  import { useAtomValue, useSetAtom } from 'jotai';
3
- import { useColorsAndFrontendConfig } from 'src/hooks/GraphQLConfig/useGraphQLConfig';
3
+ import { useUIConfig } from 'src/hooks/GraphQLConfig/useGraphQLConfig';
4
4
  import { orgShortNameAtom } from 'src/atoms/envive/enviveConfig';
5
5
  import { newOrgConfigAtom } from 'src/atoms/org/newOrgConfigAtom'; // Import newOrgConfigAtom
6
- import { OrgConfigFeatureGate } from 'src/application/models/api/orgConfigResults'; // Import OrgConfigFeatureGate
7
- import { FeatureFlagServiceProvider } from 'src/contexts/featureFlagServiceContext/featureFlagServiceContext'; // Import FeatureFlagServiceProvider
8
6
  import { GraphQlConfigValues } from '../graphqlContext';
9
7
 
10
8
  export type NewOrgConfigContextType = GraphQlConfigValues & {
@@ -22,7 +20,8 @@ export const NewOrgConfigProvider: React.FC<NewOrgConfigProviderProps> = ({ chil
22
20
  const orgShortName = useAtomValue(orgShortNameAtom);
23
21
  const setNewOrgConfig = useSetAtom(newOrgConfigAtom);
24
22
 
25
- const { data: newConfig, loading, error } = useColorsAndFrontendConfig();
23
+ const { data: newConfig, loading, error } = useUIConfig();
24
+ console.log('NewOrgConfigProvider: newConfig', newConfig, loading, error);
26
25
 
27
26
  const contextValue = useMemo(() => {
28
27
  if (!orgShortName || loading) {
@@ -34,17 +33,10 @@ export const NewOrgConfigProvider: React.FC<NewOrgConfigProviderProps> = ({ chil
34
33
  }
35
34
  setNewOrgConfig(newConfig);
36
35
  return { ...newConfig, loading: false, error: null };
37
- }, [orgShortName, loading, error]);
38
-
39
- // TODO: Provide actual featureGates when available in combinedConfig
40
- const featureGates: OrgConfigFeatureGate[] = [];
36
+ }, [orgShortName, loading, error, setNewOrgConfig, newConfig]);
41
37
 
42
38
  return (
43
- <NewOrgConfigContext.Provider value={contextValue}>
44
- <FeatureFlagServiceProvider featureGates={featureGates}>
45
- {children}
46
- </FeatureFlagServiceProvider>
47
- </NewOrgConfigContext.Provider>
39
+ <NewOrgConfigContext.Provider value={contextValue}>{children}</NewOrgConfigContext.Provider>
48
40
  );
49
41
  };
50
42
 
@@ -1,13 +1,13 @@
1
- import React from 'react';
1
+ import { PageVisitCategory, UserEvent } from '@spiffy-ai/commerce-api-client';
2
2
  import { act, render, screen, waitFor } from '@testing-library/react';
3
3
  import { Provider, useAtom } from 'jotai';
4
- import { PageVisitCategory, UserEvent } from '@spiffy-ai/commerce-api-client';
5
- import { urlResolverAtom, UrlResolverResponse } from 'src/atoms/app/variant';
6
- import Logger from 'src/application/logging/logger';
4
+ import React from 'react';
7
5
  import CommerceApiClient from 'src/application/commerce-api';
6
+ import Logger from 'src/application/logging/logger';
8
7
  import { VariantTypeEnum } from 'src/application/models';
9
- import { PageProvider, usePage } from '../pageContext';
8
+ import { UrlResolverResponse, urlResolverAtom } from 'src/atoms/app/variant';
10
9
  import { mapUrlResolverResponseToVariantInfo } from '../mapping';
10
+ import { PageProvider, usePage } from '../pageContext';
11
11
 
12
12
  // Mock the Logger to avoid console output in tests
13
13
  vi.spyOn(Logger, 'logInfo').mockImplementation(() => {});
@@ -207,7 +207,9 @@ describe('PageProvider', () => {
207
207
  // Empty string is falsy, so resolveUrl should not be called
208
208
  // The component checks `if (!pageUrl)` which treats empty string as falsy
209
209
  await act(async () => {
210
- await new Promise(resolve => setTimeout(resolve, 100));
210
+ await new Promise<void>(resolve => {
211
+ setTimeout(resolve, 100);
212
+ });
211
213
  });
212
214
 
213
215
  expect(mockResolveUrl).not.toHaveBeenCalled();
@@ -498,7 +500,7 @@ describe('PageProvider', () => {
498
500
 
499
501
  let renderCount = 0;
500
502
  const CountingComponent: React.FC = () => {
501
- renderCount++;
503
+ renderCount += 1;
502
504
  const context = usePage();
503
505
  return <div data-testid="count">{renderCount}</div>;
504
506
  };
@@ -514,7 +516,9 @@ describe('PageProvider', () => {
514
516
 
515
517
  // Trigger a re-render (simulating parent re-render)
516
518
  await act(async () => {
517
- await new Promise(resolve => setTimeout(resolve, 100));
519
+ await new Promise<void>(resolve => {
520
+ setTimeout(resolve, 100);
521
+ });
518
522
  });
519
523
 
520
524
  // The context value should be memoized, so additional renders
@@ -566,6 +570,9 @@ describe('mapUrlResolverResponseToVariantInfo', () => {
566
570
  pdp_attributes: {
567
571
  product_id: 'test-product-123',
568
572
  },
573
+ collections: ['test-collection-123'],
574
+ number_of_reviews: 10,
575
+ merchant_tags: ['test-merchant-tag-123'],
569
576
  },
570
577
  ready: true,
571
578
  };
@@ -575,6 +582,9 @@ describe('mapUrlResolverResponseToVariantInfo', () => {
575
582
  expect(result).toEqual({
576
583
  variantType: VariantTypeEnum.Pdp,
577
584
  productId: 'test-product-123',
585
+ collections: ['test-collection-123'],
586
+ numberOfReviews: 10,
587
+ merchantTags: ['test-merchant-tag-123'],
578
588
  url: 'https://example.com/product',
579
589
  });
580
590
  });
@@ -583,6 +593,7 @@ describe('mapUrlResolverResponseToVariantInfo', () => {
583
593
  const response: UrlResolverResponse = {
584
594
  variant_type: VariantTypeEnum.Plp,
585
595
  specific_details: {
596
+ top_category: 'test-top-category',
586
597
  plp_attributes: {
587
598
  attributes: {
588
599
  id: 'test-plp-456',
@@ -597,6 +608,7 @@ describe('mapUrlResolverResponseToVariantInfo', () => {
597
608
  expect(result).toEqual({
598
609
  variantType: VariantTypeEnum.Plp,
599
610
  plpId: 'test-plp-456',
611
+ topCategory: 'test-top-category',
600
612
  url: 'https://example.com/category',
601
613
  });
602
614
  });
@@ -630,6 +642,9 @@ describe('mapUrlResolverResponseToVariantInfo', () => {
630
642
  expect(result).toEqual({
631
643
  variantType: VariantTypeEnum.Pdp,
632
644
  productId: '',
645
+ collections: [],
646
+ numberOfReviews: 0,
647
+ merchantTags: [],
633
648
  url: 'https://example.com/product',
634
649
  });
635
650
  });
@@ -648,6 +663,7 @@ describe('mapUrlResolverResponseToVariantInfo', () => {
648
663
  expect(result).toEqual({
649
664
  variantType: VariantTypeEnum.Plp,
650
665
  plpId: '',
666
+ topCategory: '',
651
667
  url: 'https://example.com/category',
652
668
  });
653
669
  });
@@ -15,6 +15,9 @@ export const mapUrlResolverResponseToVariantInfo = (
15
15
  return {
16
16
  variantType: VariantTypeEnum.Pdp,
17
17
  productId: response.specific_details.pdp_attributes.product_id ?? '',
18
+ collections: response.specific_details.collections ?? [],
19
+ numberOfReviews: response.specific_details.number_of_reviews ?? 0,
20
+ merchantTags: response.specific_details.merchant_tags ?? [],
18
21
  url,
19
22
  };
20
23
  }
@@ -25,6 +28,7 @@ export const mapUrlResolverResponseToVariantInfo = (
25
28
  return {
26
29
  variantType: VariantTypeEnum.Plp,
27
30
  plpId: response.specific_details.plp_attributes?.attributes?.id ?? '',
31
+ topCategory: response.specific_details.top_category ?? '',
28
32
  url,
29
33
  };
30
34
  }
@@ -7,23 +7,31 @@ import {
7
7
  useMemo,
8
8
  useState,
9
9
  } from 'react';
10
- import { UserEvent } from '@spiffy-ai/commerce-api-client';
11
- import { UrlResolverResponse, urlResolverAtom } from 'src/atoms/app/variant';
10
+ import {
11
+ UrlResolverResponse,
12
+ pageUserEventAtom,
13
+ pageVariantInfoAtom,
14
+ urlResolverAtom,
15
+ } from 'src/atoms/app/variant';
12
16
  import { useAtom } from 'jotai';
13
-
14
17
  import CommerceApiClient from 'src/application/commerce-api';
15
18
  import Logger from 'src/application/logging/logger';
16
19
  import { mapUrlResolverResponseToVariantInfo } from './mapping';
17
- import { PageDetails, PageVariantInfo } from './types';
20
+ import { PageDetails } from './types';
18
21
 
19
- const PageContext = createContext<PageDetails | undefined>(undefined);
22
+ const PageContext = createContext<
23
+ (PageDetails & { isLoading: boolean; isSupported: boolean }) | undefined
24
+ >(undefined);
20
25
 
21
- export const PageProvider: React.FC<{ children: ReactNode }> = ({ children }) => {
26
+ export const PageProvider: React.FC<{
27
+ children: ReactNode;
28
+ }> = ({ children }) => {
22
29
  const [pageUrl, setPageUrl] = useState<string | undefined>(undefined);
23
- const [variantInfo, setVariantInfo] = useState<PageVariantInfo | undefined>(undefined);
24
30
  const [urlResolverResponse, setUrlResolverResponse] = useAtom(urlResolverAtom);
25
- const [userEvent, setUserEvent] = useState<UserEvent | undefined>(undefined);
26
-
31
+ const [isLoading, setIsLoading] = useState(false);
32
+ const [variantInfo, setVariantInfo] = useAtom(pageVariantInfoAtom);
33
+ const [userEvent, setUserEvent] = useAtom(pageUserEventAtom);
34
+ const [isSupported, setIsSupported] = useState(false);
27
35
  useEffect(() => {
28
36
  // TODO: Add support for SPA's and other changes to the URL to ensure that the pageUrl is set correctly
29
37
  setPageUrl(window.location.href);
@@ -36,34 +44,55 @@ export const PageProvider: React.FC<{ children: ReactNode }> = ({ children }) =>
36
44
  setVariantInfo(newVariantInfo);
37
45
  setUserEvent(newUserEvent);
38
46
  },
39
- [setVariantInfo],
47
+ [setVariantInfo, setUserEvent],
40
48
  );
41
49
 
42
50
  useEffect(() => {
43
51
  const resolvePageUrl = async () => {
52
+ setIsLoading(true);
44
53
  try {
45
54
  if (!pageUrl) {
55
+ setIsLoading(false);
46
56
  return;
47
57
  }
58
+
59
+ // If atoms are already set (e.g., by storybook), skip API call
60
+ if (userEvent || variantInfo) {
61
+ setIsLoading(false);
62
+ return;
63
+ }
64
+
48
65
  const cleansedUrl = pageUrl.toLowerCase().trim();
49
66
  const response =
50
67
  urlResolverResponse[cleansedUrl] ??
51
68
  ((await CommerceApiClient.resolveUrl(cleansedUrl)) as UrlResolverResponse);
52
69
  setVariantFromUrlResolver(cleansedUrl, response);
70
+ setIsLoading(false);
71
+ setIsSupported(response.ready);
53
72
  } catch (e) {
73
+ setIsLoading(false);
54
74
  Logger.logError('Failed to resolve page URL', e, { pageUrl });
55
75
  }
56
76
  };
57
77
  resolvePageUrl();
58
- }, [pageUrl, urlResolverResponse, setUrlResolverResponse, setVariantFromUrlResolver]);
78
+ }, [
79
+ pageUrl,
80
+ urlResolverResponse,
81
+ setUrlResolverResponse,
82
+ setVariantFromUrlResolver,
83
+ userEvent,
84
+ variantInfo,
85
+ ]);
59
86
 
60
87
  const value = useMemo(
61
88
  () => ({
62
89
  pageUrl,
63
90
  variantInfo,
64
91
  userEvent,
92
+ isLoading,
93
+ isSupported,
65
94
  }),
66
- [pageUrl, userEvent, variantInfo],
95
+ [pageUrl, userEvent, variantInfo, isLoading, isSupported],
67
96
  );
68
97
 
69
98
  return <PageContext.Provider value={value}>{children}</PageContext.Provider>;
@@ -4,12 +4,16 @@ import { VariantTypeEnum } from 'src/application/models';
4
4
  export type PDPPageVariantInfo = {
5
5
  variantType: VariantTypeEnum.Pdp;
6
6
  productId: string;
7
+ collections: string[];
8
+ numberOfReviews: number;
9
+ merchantTags: string[];
7
10
  url: string;
8
11
  };
9
12
 
10
13
  export type PLPPageVariantInfo = {
11
14
  variantType: VariantTypeEnum.Plp;
12
15
  plpId: string;
16
+ topCategory: string;
13
17
  url: string;
14
18
  };
15
19
 
@@ -42,6 +42,7 @@ export const useSalesAgentChatAPI = () => {
42
42
  createdAt: new Date().toISOString(),
43
43
  attributes: {
44
44
  suggestionId: suggestion.id,
45
+ content: suggestion.content,
45
46
  },
46
47
  };
47
48
  queueUserEvent(event);