@envive-ai/react-hooks 0.1.5 → 0.1.7

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 (747) hide show
  1. package/dist/NewOrgConfig-C5YL4Y62.cjs +20 -0
  2. package/dist/NewOrgConfig-CRyIfb_l.js +15 -0
  3. package/dist/SystemSettingsContext-Cb9YHln8.cjs +20 -0
  4. package/dist/SystemSettingsContext-D3mmGGcv.js +13 -0
  5. package/dist/TrackComponentVisibleEvent-C7c_rHFW.cjs +59 -0
  6. package/dist/TrackComponentVisibleEvent-DXTEBjGM.js +52 -0
  7. package/dist/amplitudeContext-CB_F-nJY.d.cts +52 -0
  8. package/dist/amplitudeContext-Cak6ijMq.js +287 -0
  9. package/dist/amplitudeContext-DFYBDc0h.d.ts +52 -0
  10. package/dist/amplitudeContext-sTEsPaVG.cjs +309 -0
  11. package/dist/api-DSFlctlc.cjs +269 -0
  12. package/dist/api-JTNjuOfc.js +190 -0
  13. package/dist/app-D_upYeqF.js +132 -0
  14. package/dist/app-KXTMPa4s.cjs +178 -0
  15. package/dist/application/models/graphql/index.cjs +4 -12
  16. package/dist/application/models/graphql/index.d.cts +1 -1
  17. package/dist/application/models/graphql/index.d.ts +1 -1
  18. package/dist/application/models/graphql/index.js +2 -10
  19. package/dist/application/models/guards/api/index.cjs +2 -2
  20. package/dist/application/models/guards/api/index.d.cts +2 -2
  21. package/dist/application/models/guards/api/index.d.ts +2 -2
  22. package/dist/application/models/guards/api/index.js +2 -2
  23. package/dist/application/models/index.cjs +52 -56
  24. package/dist/application/models/index.d.cts +10 -8
  25. package/dist/application/models/index.d.ts +11 -9
  26. package/dist/application/models/index.js +10 -11
  27. package/dist/application/models/utilityTypes/index.cjs +1 -1
  28. package/dist/application/models/utilityTypes/index.d.cts +1 -1
  29. package/dist/application/models/utilityTypes/index.d.ts +1 -1
  30. package/dist/application/models/utilityTypes/index.js +1 -1
  31. package/dist/application/models/variantInfo/index.cjs +1 -1
  32. package/dist/application/models/variantInfo/index.d.ts +1 -1
  33. package/dist/application/models/variantInfo/index.js +1 -1
  34. package/dist/application/utils/index.cjs +46 -37
  35. package/dist/application/utils/index.d.cts +21 -13
  36. package/dist/application/utils/index.d.ts +21 -13
  37. package/dist/application/utils/index.js +19 -10
  38. package/dist/{atomStore-JwGb7pcy.cjs → atomStore-DEZyFCNz.cjs} +1 -1
  39. package/dist/{atomStore-B1cgmbP0.js → atomStore-DnPEioF4.js} +1 -1
  40. package/dist/atoms/app/index.cjs +18 -16
  41. package/dist/atoms/app/index.d.cts +23 -18
  42. package/dist/atoms/app/index.d.ts +24 -19
  43. package/dist/atoms/app/index.js +14 -11
  44. package/dist/atoms/atomStore/index.cjs +2 -1
  45. package/dist/atoms/atomStore/index.d.cts +24 -2
  46. package/dist/atoms/atomStore/index.d.ts +24 -2
  47. package/dist/atoms/atomStore/index.js +2 -1
  48. package/dist/atoms/chat/index.cjs +50 -40
  49. package/dist/atoms/chat/index.d.cts +38 -35
  50. package/dist/atoms/chat/index.d.ts +39 -36
  51. package/dist/atoms/chat/index.js +20 -10
  52. package/dist/atoms/globalSearch/index.cjs +1 -1
  53. package/dist/atoms/globalSearch/index.d.cts +5 -5
  54. package/dist/atoms/globalSearch/index.d.ts +6 -6
  55. package/dist/atoms/globalSearch/index.js +1 -1
  56. package/dist/atoms/org/index.cjs +18 -38
  57. package/dist/atoms/org/index.d.cts +36 -54
  58. package/dist/atoms/org/index.d.ts +36 -54
  59. package/dist/atoms/org/index.js +5 -11
  60. package/dist/atoms/search/index.cjs +57 -41
  61. package/dist/atoms/search/index.d.cts +11 -8
  62. package/dist/atoms/search/index.d.ts +12 -9
  63. package/dist/atoms/search/index.js +26 -10
  64. package/dist/atoms/search/types.cjs +5 -0
  65. package/dist/atoms/search/types.d.cts +2 -0
  66. package/dist/atoms/search/types.d.ts +2 -0
  67. package/dist/atoms/search/types.js +3 -0
  68. package/dist/cdnContext-BMjVfBft.cjs +53 -0
  69. package/dist/cdnContext-DgsJ00Tb.js +38 -0
  70. package/dist/{chat-CHmD79E1.js → chat-B4lkFIxz.js} +1 -1
  71. package/dist/chat-D1Eat8Ih.cjs +394 -0
  72. package/dist/chat-DPJGdUkz.js +258 -0
  73. package/dist/{chat-_NzpO_Hn.cjs → chat-zA-K4tR_.cjs} +1 -1
  74. package/dist/chatElementDisplayLocation-9SW40Dd3.d.cts +25 -0
  75. package/dist/chatElementDisplayLocation-C1tRM5OD.d.ts +25 -0
  76. package/dist/chatSearch-B5jMnCYX.js +315 -0
  77. package/dist/chatSearch-DWMiyWN0.cjs +444 -0
  78. package/dist/chatState-BisPJd5g.cjs +120 -0
  79. package/dist/chatState-BrmBYY8l.js +34 -0
  80. package/dist/commerce-api-CxDIfeME.cjs +318 -0
  81. package/dist/commerce-api-DagLj3D_.js +311 -0
  82. package/dist/{components-Dl-TMD9k.js → components-B1edduHz.js} +1 -1
  83. package/dist/{components-D0XDRcaN.cjs → components-g0G58Kat.cjs} +1 -1
  84. package/dist/config/locators/components/chat/index.cjs +1 -1
  85. package/dist/config/locators/components/chat/index.d.cts +1 -1
  86. package/dist/config/locators/components/chat/index.d.ts +1 -1
  87. package/dist/config/locators/components/chat/index.js +1 -1
  88. package/dist/config/locators/components/chat/variants/index.d.cts +1 -1
  89. package/dist/config/locators/components/chat/variants/index.d.ts +1 -1
  90. package/dist/config/locators/components/index.cjs +1 -1
  91. package/dist/config/locators/components/index.d.cts +1 -1
  92. package/dist/config/locators/components/index.d.ts +1 -1
  93. package/dist/config/locators/components/index.js +1 -1
  94. package/dist/config/locators/components/search/index.d.cts +1 -1
  95. package/dist/config/locators/components/search/index.d.ts +1 -1
  96. package/dist/config/locators/index.cjs +42 -22
  97. package/dist/config/locators/index.d.cts +2 -2
  98. package/dist/config/locators/index.d.ts +3 -3
  99. package/dist/config/locators/index.js +25 -5
  100. package/dist/contexts/amplitudeContext/index.cjs +21 -0
  101. package/dist/contexts/amplitudeContext/index.d.cts +2 -0
  102. package/dist/contexts/amplitudeContext/index.d.ts +2 -0
  103. package/dist/contexts/amplitudeContext/index.js +19 -0
  104. package/dist/contexts/cdnContext/index.cjs +7 -0
  105. package/dist/contexts/cdnContext/index.d.cts +15 -0
  106. package/dist/contexts/cdnContext/index.d.ts +15 -0
  107. package/dist/contexts/cdnContext/index.js +6 -0
  108. package/dist/contexts/chatContext/index.cjs +329 -0
  109. package/dist/contexts/chatContext/index.d.cts +15 -0
  110. package/dist/contexts/chatContext/index.d.ts +15 -0
  111. package/dist/contexts/chatContext/index.js +322 -0
  112. package/dist/contexts/enviveConfigContext/index.cjs +7 -0
  113. package/dist/contexts/enviveConfigContext/index.d.cts +30 -0
  114. package/dist/contexts/enviveConfigContext/index.d.ts +30 -0
  115. package/dist/contexts/enviveConfigContext/index.js +6 -0
  116. package/dist/contexts/enviveCssContext/index.cjs +65 -0
  117. package/dist/contexts/enviveCssContext/index.d.cts +10 -0
  118. package/dist/contexts/enviveCssContext/index.d.ts +10 -0
  119. package/dist/contexts/enviveCssContext/index.js +62 -0
  120. package/dist/contexts/featureFlagContext/index.cjs +107 -0
  121. package/dist/contexts/featureFlagContext/index.d.cts +20 -0
  122. package/dist/contexts/featureFlagContext/index.d.ts +20 -0
  123. package/dist/contexts/featureFlagContext/index.js +103 -0
  124. package/dist/contexts/featureFlagServiceContext/index.cjs +6 -0
  125. package/dist/contexts/featureFlagServiceContext/index.d.cts +5 -0
  126. package/dist/contexts/featureFlagServiceContext/index.d.ts +5 -0
  127. package/dist/contexts/featureFlagServiceContext/index.js +5 -0
  128. package/dist/contexts/graphqlContext/index.cjs +15 -0
  129. package/dist/contexts/graphqlContext/index.d.cts +12 -0
  130. package/dist/contexts/graphqlContext/index.d.ts +12 -0
  131. package/dist/contexts/graphqlContext/index.js +14 -0
  132. package/dist/contexts/localStorageContext/index.cjs +6 -0
  133. package/dist/contexts/localStorageContext/index.d.cts +30 -0
  134. package/dist/contexts/localStorageContext/index.d.ts +30 -0
  135. package/dist/contexts/localStorageContext/index.js +4 -0
  136. package/dist/contexts/newOrgConfigContext/index.cjs +19 -0
  137. package/dist/contexts/newOrgConfigContext/index.d.cts +30 -0
  138. package/dist/contexts/newOrgConfigContext/index.d.ts +30 -0
  139. package/dist/contexts/newOrgConfigContext/index.js +18 -0
  140. package/dist/contexts/searchContext/index.cjs +23 -0
  141. package/dist/contexts/searchContext/index.d.cts +16 -0
  142. package/dist/contexts/searchContext/index.d.ts +16 -0
  143. package/dist/contexts/searchContext/index.js +22 -0
  144. package/dist/contexts/sessionStorageContext/index.cjs +5 -0
  145. package/dist/contexts/sessionStorageContext/index.d.cts +15 -0
  146. package/dist/contexts/sessionStorageContext/index.d.ts +15 -0
  147. package/dist/contexts/sessionStorageContext/index.js +4 -0
  148. package/dist/contexts/shopifyUrlContext/index.cjs +5 -0
  149. package/dist/contexts/shopifyUrlContext/index.d.cts +20 -0
  150. package/dist/contexts/shopifyUrlContext/index.d.ts +20 -0
  151. package/dist/contexts/shopifyUrlContext/index.js +4 -0
  152. package/dist/contexts/systemSettingsContext/index.cjs +8 -0
  153. package/dist/contexts/systemSettingsContext/index.d.cts +36 -0
  154. package/dist/contexts/systemSettingsContext/index.d.ts +36 -0
  155. package/dist/contexts/systemSettingsContext/index.js +6 -0
  156. package/dist/contexts/types.cjs +7 -0
  157. package/dist/contexts/types.d.cts +4 -0
  158. package/dist/contexts/types.d.ts +4 -0
  159. package/dist/contexts/types.js +3 -0
  160. package/dist/contexts/userIdentityContext/index.cjs +26 -0
  161. package/dist/contexts/userIdentityContext/index.d.cts +2 -0
  162. package/dist/contexts/userIdentityContext/index.d.ts +2 -0
  163. package/dist/contexts/userIdentityContext/index.js +25 -0
  164. package/dist/domObserver-B6cRGTny.js +285 -0
  165. package/dist/domObserver-DQZwhPrc.cjs +304 -0
  166. package/dist/enviveConfig-BJZ4zTJo.js +62 -0
  167. package/dist/enviveConfig-DdBrcGSQ.cjs +130 -0
  168. package/dist/enviveConfigContext-78orE_uH.cjs +60 -0
  169. package/dist/enviveConfigContext-jBCCWQH9.js +45 -0
  170. package/dist/events/index.cjs +1 -1
  171. package/dist/events/index.d.ts +1 -1
  172. package/dist/events/index.js +1 -1
  173. package/dist/{events-ClCDFK7t.js → events-BHJJjPDN.js} +1 -1
  174. package/dist/{events-Da7gpmGv.cjs → events-B_fJZf9E.cjs} +1 -1
  175. package/dist/featureFlagServiceContext-ChL7DJ53.cjs +56 -0
  176. package/dist/featureFlagServiceContext-D1PzHsEs.d.ts +23 -0
  177. package/dist/featureFlagServiceContext-DQwlCTde.d.cts +23 -0
  178. package/dist/featureFlagServiceContext-DzFfmb1Z.js +42 -0
  179. package/dist/featureGates-Blx10fwB.js +27 -0
  180. package/dist/featureGates-DcZNrUma.cjs +33 -0
  181. package/dist/frontendConfig-DrvrQSm8.d.ts +857 -0
  182. package/dist/frontendConfig-wg41mBok.d.cts +857 -0
  183. package/dist/{globalSearch-BTeZxvk1.cjs → globalSearch-Bnjlxtr5.cjs} +1 -1
  184. package/dist/{globalSearch-b0wC7ZEO.js → globalSearch-CRWUqnjq.js} +1 -1
  185. package/dist/graphql-B9HhDXYt.cjs +53 -0
  186. package/dist/graphql-W7GMIHUu.js +36 -0
  187. package/dist/graphqlConfig-Bn-HLHsh.cjs +39 -0
  188. package/dist/graphqlConfig-DtZm_YaH.js +14 -0
  189. package/dist/graphqlContext-BJg7B--J.js +96 -0
  190. package/dist/graphqlContext-DI-_VRmb.cjs +111 -0
  191. package/dist/hooks/AmplitudeOperations/index.cjs +21 -0
  192. package/dist/hooks/AmplitudeOperations/index.d.cts +12 -0
  193. package/dist/hooks/AmplitudeOperations/index.d.ts +12 -0
  194. package/dist/hooks/AmplitudeOperations/index.js +21 -0
  195. package/dist/hooks/AppDetails/index.cjs +18 -0
  196. package/dist/hooks/AppDetails/index.d.cts +26 -0
  197. package/dist/hooks/AppDetails/index.d.ts +26 -0
  198. package/dist/hooks/AppDetails/index.js +18 -0
  199. package/dist/hooks/BlockBackButton/index.cjs +29 -0
  200. package/dist/hooks/BlockBackButton/index.d.cts +5 -0
  201. package/dist/hooks/BlockBackButton/index.d.ts +5 -0
  202. package/dist/hooks/BlockBackButton/index.js +27 -0
  203. package/dist/hooks/CdnOperations/index.cjs +24 -0
  204. package/dist/hooks/CdnOperations/index.d.cts +7 -0
  205. package/dist/hooks/CdnOperations/index.d.ts +7 -0
  206. package/dist/hooks/CdnOperations/index.js +22 -0
  207. package/dist/hooks/ChatToggle/index.cjs +63 -0
  208. package/dist/hooks/ChatToggle/index.d.cts +12 -0
  209. package/dist/hooks/ChatToggle/index.d.ts +12 -0
  210. package/dist/hooks/ChatToggle/index.js +61 -0
  211. package/dist/hooks/ChatToggleAnalytics/index.cjs +37 -0
  212. package/dist/hooks/ChatToggleAnalytics/index.d.cts +9 -0
  213. package/dist/hooks/ChatToggleAnalytics/index.d.ts +9 -0
  214. package/dist/hooks/ChatToggleAnalytics/index.js +35 -0
  215. package/dist/hooks/CustomerSupportHandoff/index.cjs +36 -0
  216. package/dist/hooks/CustomerSupportHandoff/index.d.cts +16 -0
  217. package/dist/hooks/CustomerSupportHandoff/index.d.ts +16 -0
  218. package/dist/hooks/CustomerSupportHandoff/index.js +34 -0
  219. package/dist/hooks/Debounce/index.cjs +3 -0
  220. package/dist/hooks/Debounce/index.d.cts +5 -0
  221. package/dist/hooks/Debounce/index.d.ts +5 -0
  222. package/dist/hooks/Debounce/index.js +3 -0
  223. package/dist/hooks/ElementObserver/index.cjs +179 -0
  224. package/dist/hooks/ElementObserver/index.d.cts +29 -0
  225. package/dist/hooks/ElementObserver/index.d.ts +29 -0
  226. package/dist/hooks/ElementObserver/index.js +177 -0
  227. package/dist/hooks/GrabAndScroll/index.cjs +99 -0
  228. package/dist/hooks/GrabAndScroll/index.d.cts +14 -0
  229. package/dist/hooks/GrabAndScroll/index.d.ts +14 -0
  230. package/dist/hooks/GrabAndScroll/index.js +97 -0
  231. package/dist/hooks/GraphQLConfig/index.cjs +16 -0
  232. package/dist/hooks/GraphQLConfig/index.d.cts +15 -0
  233. package/dist/hooks/GraphQLConfig/index.d.ts +15 -0
  234. package/dist/hooks/GraphQLConfig/index.js +15 -0
  235. package/dist/hooks/IdentifyUser/index.cjs +59 -0
  236. package/dist/hooks/IdentifyUser/index.d.cts +10 -0
  237. package/dist/hooks/IdentifyUser/index.d.ts +10 -0
  238. package/dist/hooks/IdentifyUser/index.js +57 -0
  239. package/dist/hooks/ImageResolver/index.cjs +54 -0
  240. package/dist/hooks/ImageResolver/index.d.cts +7 -0
  241. package/dist/hooks/ImageResolver/index.d.ts +7 -0
  242. package/dist/hooks/ImageResolver/index.js +52 -0
  243. package/dist/hooks/Intersection/index.cjs +3 -0
  244. package/dist/hooks/Intersection/index.d.cts +7 -0
  245. package/dist/hooks/Intersection/index.d.ts +7 -0
  246. package/dist/hooks/Intersection/index.js +3 -0
  247. package/dist/hooks/IsSmallScreen/index.cjs +22 -0
  248. package/dist/hooks/IsSmallScreen/index.d.cts +5 -0
  249. package/dist/hooks/IsSmallScreen/index.d.ts +5 -0
  250. package/dist/hooks/IsSmallScreen/index.js +20 -0
  251. package/dist/hooks/LocalStorageOperations/index.cjs +79 -0
  252. package/dist/hooks/LocalStorageOperations/index.d.cts +17 -0
  253. package/dist/hooks/LocalStorageOperations/index.d.ts +17 -0
  254. package/dist/hooks/LocalStorageOperations/index.js +74 -0
  255. package/dist/hooks/MessageFilter/index.cjs +53 -0
  256. package/dist/hooks/MessageFilter/index.d.cts +29 -0
  257. package/dist/hooks/MessageFilter/index.d.ts +29 -0
  258. package/dist/hooks/MessageFilter/index.js +53 -0
  259. package/dist/hooks/MessageScrollObserver/index.cjs +36 -0
  260. package/dist/hooks/MessageScrollObserver/index.d.cts +5 -0
  261. package/dist/hooks/MessageScrollObserver/index.d.ts +5 -0
  262. package/dist/hooks/MessageScrollObserver/index.js +34 -0
  263. package/dist/hooks/NewOrgConfig/index.cjs +19 -0
  264. package/dist/hooks/NewOrgConfig/index.d.cts +22 -0
  265. package/dist/hooks/NewOrgConfig/index.d.ts +22 -0
  266. package/dist/hooks/NewOrgConfig/index.js +19 -0
  267. package/dist/hooks/Search/index.cjs +324 -0
  268. package/dist/hooks/Search/index.d.cts +66 -0
  269. package/dist/hooks/Search/index.d.ts +66 -0
  270. package/dist/hooks/Search/index.js +321 -0
  271. package/dist/hooks/SearchOperations/index.cjs +101 -0
  272. package/dist/hooks/SearchOperations/index.d.cts +22 -0
  273. package/dist/hooks/SearchOperations/index.d.ts +22 -0
  274. package/dist/hooks/SearchOperations/index.js +98 -0
  275. package/dist/hooks/SessionStorageOperations/index.cjs +30 -0
  276. package/dist/hooks/SessionStorageOperations/index.d.cts +8 -0
  277. package/dist/hooks/SessionStorageOperations/index.d.ts +8 -0
  278. package/dist/hooks/SessionStorageOperations/index.js +28 -0
  279. package/dist/hooks/ShopifyUrlOperations/index.cjs +53 -0
  280. package/dist/hooks/ShopifyUrlOperations/index.d.cts +23 -0
  281. package/dist/hooks/ShopifyUrlOperations/index.d.ts +23 -0
  282. package/dist/hooks/ShopifyUrlOperations/index.js +49 -0
  283. package/dist/hooks/SnapCalculator/index.cjs +29 -0
  284. package/dist/hooks/SnapCalculator/index.d.cts +12 -0
  285. package/dist/hooks/SnapCalculator/index.d.ts +12 -0
  286. package/dist/hooks/SnapCalculator/index.js +27 -0
  287. package/dist/hooks/SystemSettingsContext/index.cjs +7 -0
  288. package/dist/hooks/SystemSettingsContext/index.d.cts +22 -0
  289. package/dist/hooks/SystemSettingsContext/index.d.ts +22 -0
  290. package/dist/hooks/SystemSettingsContext/index.js +7 -0
  291. package/dist/hooks/TrackComponentVisibleEvent/index.cjs +21 -0
  292. package/dist/hooks/TrackComponentVisibleEvent/index.d.cts +18 -0
  293. package/dist/hooks/TrackComponentVisibleEvent/index.d.ts +18 -0
  294. package/dist/hooks/TrackComponentVisibleEvent/index.js +21 -0
  295. package/dist/hooks/UpdateAnalyticsProps/index.cjs +61 -0
  296. package/dist/hooks/UpdateAnalyticsProps/index.d.cts +9 -0
  297. package/dist/hooks/UpdateAnalyticsProps/index.d.ts +9 -0
  298. package/dist/hooks/UpdateAnalyticsProps/index.js +58 -0
  299. package/dist/index-BCLaqnc2.d.cts +689 -0
  300. package/dist/{index-D2VaMPA3.d.ts → index-BS7-_CW4.d.ts} +1 -1
  301. package/dist/{index-BTK5uzs6.d.cts → index-Bmub8e38.d.cts} +1 -1
  302. package/dist/index-Bs0QtkSu.d.ts +689 -0
  303. package/dist/{index-BzgkfbNO.d.cts → index-CESxqFso.d.cts} +1 -1
  304. package/dist/index-CKeS9dud.d.ts +28 -0
  305. package/dist/{index-ClJ0nMsR.d.cts → index-CiWEYzXl.d.cts} +2 -2
  306. package/dist/index-CyXULMyI.d.cts +186 -0
  307. package/dist/index-Cz10TYQA.d.cts +28 -0
  308. package/dist/{index-CSIOQD-A.d.ts → index-D8ThXrqI.d.ts} +1 -1
  309. package/dist/{index-Dxpscrvz.d.ts → index-D9VegTU-.d.ts} +1 -1
  310. package/dist/{index-Cr2y08f1.d.ts → index-DBqgBV9N.d.ts} +1 -1
  311. package/dist/{index-CKKkTsms.d.ts → index-DNUKSg6R.d.ts} +1 -1
  312. package/dist/{index-BdNKc2ix.d.cts → index-DO0s5KNA.d.cts} +1 -1
  313. package/dist/{index-Cx9e-fRi.d.ts → index-DuyZQOE1.d.ts} +2 -2
  314. package/dist/{index-BrXuc_Ck.d.cts → index-REhT-Pls.d.cts} +1 -1
  315. package/dist/index-fKJB9EFb.d.ts +186 -0
  316. package/dist/interceptors/index.cjs +3 -12
  317. package/dist/interceptors/index.d.cts +12 -18
  318. package/dist/interceptors/index.d.ts +13 -19
  319. package/dist/interceptors/index.js +3 -11
  320. package/dist/interceptors/types.cjs +1 -0
  321. package/dist/interceptors/types.d.cts +12 -0
  322. package/dist/interceptors/types.d.ts +12 -0
  323. package/dist/interceptors/types.js +3 -0
  324. package/dist/localStorageContext-6OrGDFid.js +95 -0
  325. package/dist/localStorageContext-Bld0OWmG.cjs +115 -0
  326. package/dist/{logger-Dln20ans.cjs → logger-CSL2jqI9.cjs} +1 -1
  327. package/dist/{logger-pdEEY8T2.js → logger-D5MFf3nW.js} +1 -1
  328. package/dist/models-Dn8Emdzc.js +1295 -0
  329. package/dist/models-ZpQcRZQK.cjs +1536 -0
  330. package/dist/newOrgConfigAtom--tewb_G0.js +8 -0
  331. package/dist/newOrgConfigAtom-DkSi45_Q.cjs +15 -0
  332. package/dist/newOrgConfigContext-B3aeblfE.cjs +68 -0
  333. package/dist/newOrgConfigContext-B5mzHKTG.js +53 -0
  334. package/dist/{nodeSelector-vKB44CDB.d.cts → nodeSelector-XsUa5vNH.d.cts} +1 -1
  335. package/dist/org-B2uRkPt3.js +12 -0
  336. package/dist/org-ClUxpHPZ.cjs +43 -0
  337. package/dist/orgAnalyticsConfig-CuWXijsr.cjs +39 -0
  338. package/dist/orgAnalyticsConfig-DOceTdNp.js +14 -0
  339. package/dist/search-BIomqYy6.d.ts +20 -0
  340. package/dist/search-B_Hg-Es2.d.cts +20 -0
  341. package/dist/search-Bn4x-3TG.js +126 -0
  342. package/dist/search-DsQm_pAi.cjs +205 -0
  343. package/dist/{search-filter-types-C-zZSpGo.d.ts → search-filter-types-B5xcaEit.d.ts} +1 -1
  344. package/dist/{search-filter-types-9rTb3jMj.d.cts → search-filter-types-Byd0lEUa.d.cts} +1 -1
  345. package/dist/searchContext-Cn-pCoDy.cjs +145 -0
  346. package/dist/searchContext-fQDGSvUF.js +129 -0
  347. package/dist/searchServiceAdapter-BSPZOg1r.js +16 -0
  348. package/dist/searchServiceAdapter-DrjFCiw8.cjs +34 -0
  349. package/dist/sessionStorageContext-C5MUl2zf.js +52 -0
  350. package/dist/sessionStorageContext-CXE7iHtP.cjs +66 -0
  351. package/dist/shopifyUrlContext-7ppKx1jJ.cjs +75 -0
  352. package/dist/shopifyUrlContext-BSYWsoX9.js +61 -0
  353. package/dist/spiffyWidgets-CdxRcXhW.d.ts +20 -0
  354. package/dist/spiffyWidgets-DxGuuuCG.d.cts +20 -0
  355. package/dist/systemSettingsContext-BdAe_3Ll.cjs +60 -0
  356. package/dist/systemSettingsContext-Cjyo2o3N.js +39 -0
  357. package/dist/{test-types-CuOq25VT.d.cts → test-types-DQB1JqOf.d.cts} +1 -1
  358. package/dist/{test-types-CXVJxTeu.d.ts → test-types-ZuRAYwox.d.ts} +1 -1
  359. package/dist/types/index.cjs +33 -5
  360. package/dist/types/index.d.cts +2 -2
  361. package/dist/types/index.d.ts +2 -2
  362. package/dist/types/index.js +30 -3
  363. package/dist/types-BCz-hOvv.d.ts +51 -0
  364. package/dist/types-BwNrLPSZ.cjs +106 -0
  365. package/dist/types-D3uOF0Oy.js +76 -0
  366. package/dist/types-DIk0FLwd.js +30 -0
  367. package/dist/types-DNLkuGWZ.cjs +48 -0
  368. package/dist/types-DzwBmZHy.d.cts +10 -0
  369. package/dist/types-Eip78dWv.d.cts +51 -0
  370. package/dist/types-YvACLe2e.d.ts +10 -0
  371. package/dist/types.cjs +0 -0
  372. package/dist/types.d.cts +15 -0
  373. package/dist/types.d.ts +15 -0
  374. package/dist/types.js +1 -0
  375. package/dist/unsupportedProductExceptions--t7AQFou.js +20 -0
  376. package/dist/unsupportedProductExceptions-Dak4AD-t.cjs +32 -0
  377. package/dist/urlsParser-BV5yF8sa.cjs +78 -0
  378. package/dist/urlsParser-DUgV_Qy9.js +42 -0
  379. package/dist/useAmplitudeOperations-C6Osqkso.js +34 -0
  380. package/dist/useAmplitudeOperations-Cco_B3A5.cjs +41 -0
  381. package/dist/useAppDetails-CGqtN6sJ.cjs +38 -0
  382. package/dist/useAppDetails-DwX2Rhed.js +30 -0
  383. package/dist/useDebounce-BJqnCBcl.cjs +26 -0
  384. package/dist/useDebounce-Ce31ph7m.js +19 -0
  385. package/dist/useGraphQLConfig-ByOZb3oZ.js +63 -0
  386. package/dist/useGraphQLConfig-DItL4BgM.cjs +76 -0
  387. package/dist/useIntersection-Czeo04jt.js +21 -0
  388. package/dist/useIntersection-DnZNLcnu.cjs +28 -0
  389. package/dist/useMessageInterceptor-C9p9No1n.cjs +33 -0
  390. package/dist/useMessageInterceptor-tntd2rvB.js +25 -0
  391. package/dist/userIdentityContext-C1HzZFb2.cjs +125 -0
  392. package/dist/userIdentityContext-CDfosvOO.js +109 -0
  393. package/dist/userIdentityContext-DBXoLrFu.d.cts +20 -0
  394. package/dist/userIdentityContext-W1OWF3cG.d.ts +20 -0
  395. package/dist/utilityTypes-CWJZb9BZ.js +1 -0
  396. package/dist/utilityTypes-YGiMSyV7.cjs +0 -0
  397. package/dist/utils-BA5HXmkL.cjs +74 -0
  398. package/dist/utils-BTDw2aMx.cjs +715 -0
  399. package/dist/utils-C7S9YiFp.js +54 -0
  400. package/dist/utils-CF13DfA1.js +606 -0
  401. package/dist/variantInfo-58JLeDJb.js +1 -0
  402. package/dist/variantInfo-DRFLcGc7.cjs +0 -0
  403. package/package.json +278 -25
  404. package/src/{adapters/spiffy/commerce/api.ts → application/commerce-api.ts} +31 -23
  405. package/src/application/models/colorsConfig.ts +18 -18
  406. package/src/application/models/frontendConfig.ts +3 -3
  407. package/src/application/models/graphql/queries/getMerchantColorsQuery.ts +1 -1
  408. package/src/application/models/graphql/queries/getMerchantFrontendConfigQuery.ts +1 -1
  409. package/src/application/models/index.ts +0 -3
  410. package/src/application/models/localStorageEventListener.ts +2 -2
  411. package/src/application/models/utils/snakeToCamelTransformer.ts +8 -8
  412. package/src/application/models/validators/validateGraphQLColorsConfig.ts +0 -21
  413. package/src/application/models/validators/validateGraphQLFrontendConfig.ts +2 -2
  414. package/src/application/utils/analyticsUtils.ts +53 -22
  415. package/src/application/utils/cdnUtils.ts +11 -0
  416. package/src/atoms/amplitude/amplitudeTrackEventAtom.ts +15 -0
  417. package/src/atoms/app/index.ts +7 -17
  418. package/src/atoms/app/variant.ts +13 -4
  419. package/src/atoms/chat/chatState.ts +28 -18
  420. package/src/atoms/chat/messageQueue.ts +36 -5
  421. package/src/atoms/chat/replies.ts +45 -37
  422. package/src/atoms/envive/enviveConfig.ts +10 -6
  423. package/src/atoms/org/graphqlConfig.ts +6 -38
  424. package/src/atoms/org/index.ts +3 -4
  425. package/src/atoms/org/newOrgConfigAtom.ts +4 -0
  426. package/src/atoms/search/chatSearch.ts +11 -5
  427. package/src/atoms/search/searchAPI.ts +22 -12
  428. package/src/atoms/search/searchServiceAdapter.ts +25 -0
  429. package/src/contexts/amplitudeContext/amplitudeContext.tsx +465 -0
  430. package/src/contexts/amplitudeContext/index.ts +1 -0
  431. package/src/contexts/cdnContext/cdnContext.tsx +48 -0
  432. package/src/contexts/cdnContext/index.ts +1 -0
  433. package/src/contexts/{chatContext.tsx → chatContext/chatContext.tsx} +16 -13
  434. package/src/contexts/chatContext/index.ts +1 -0
  435. package/src/contexts/{enviveConfigContext.tsx → enviveConfigContext/enviveConfigContext.tsx} +23 -18
  436. package/src/contexts/enviveConfigContext/index.ts +1 -0
  437. package/src/contexts/enviveCssContext/enviveCssContext.tsx +49 -0
  438. package/src/contexts/enviveCssContext/index.ts +1 -0
  439. package/src/contexts/featureFlagContext/featureFlagContext.tsx +193 -0
  440. package/src/contexts/featureFlagContext/index.ts +1 -0
  441. package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +87 -0
  442. package/src/contexts/featureFlagServiceContext/index.ts +1 -0
  443. package/src/contexts/graphqlContext/graphqlContext.tsx +165 -0
  444. package/src/contexts/graphqlContext/index.ts +1 -0
  445. package/src/contexts/localStorageContext/index.ts +1 -0
  446. package/src/contexts/localStorageContext/localStorageContext.tsx +159 -0
  447. package/src/contexts/newOrgConfigContext/index.ts +1 -0
  448. package/src/contexts/newOrgConfigContext/newOrgConfigContext.tsx +70 -0
  449. package/src/contexts/searchContext/index.ts +1 -0
  450. package/src/contexts/searchContext/searchContext.tsx +187 -0
  451. package/src/contexts/sessionStorageContext/index.ts +1 -0
  452. package/src/contexts/sessionStorageContext/sessionStorageContext.tsx +80 -0
  453. package/src/contexts/shopifyUrlContext/index.ts +1 -0
  454. package/src/contexts/shopifyUrlContext/shopifyUrlContext.tsx +97 -0
  455. package/src/contexts/systemSettingsContext/index.ts +1 -0
  456. package/src/contexts/types.ts +12 -8
  457. package/src/contexts/userIdentityContext/index.ts +1 -0
  458. package/src/contexts/userIdentityContext/userIdentityContext.tsx +197 -0
  459. package/src/events/registerAnalyticsListeners.ts +32 -38
  460. package/src/favicon.ico +0 -0
  461. package/src/hooks/AmplitudeOperations/index.ts +1 -0
  462. package/src/hooks/AmplitudeOperations/useAmplitudeOperations.ts +35 -0
  463. package/src/hooks/AppDetails/index.ts +1 -0
  464. package/src/hooks/AppDetails/useAppDetails.ts +47 -0
  465. package/src/hooks/BlockBackButton/index.ts +1 -0
  466. package/src/hooks/CdnOperations/index.ts +1 -0
  467. package/src/hooks/CdnOperations/useCdnOperations.ts +16 -0
  468. package/src/hooks/ChatToggle/index.ts +1 -0
  469. package/src/hooks/{useChatToggle.ts → ChatToggle/useChatToggle.ts} +5 -4
  470. package/src/hooks/ChatToggleAnalytics/index.ts +1 -0
  471. package/src/hooks/ChatToggleAnalytics/useChatToggleAnalytics.ts +15 -0
  472. package/src/hooks/CustomerSupportHandoff/index.ts +1 -0
  473. package/src/hooks/Debounce/index.ts +1 -0
  474. package/src/hooks/ElementObserver/index.ts +1 -0
  475. package/src/hooks/GrabAndScroll/index.ts +1 -0
  476. package/src/hooks/GraphQLConfig/index.ts +1 -0
  477. package/src/hooks/GraphQLConfig/useGraphQLConfig.ts +63 -0
  478. package/src/hooks/IdentifyUser/index.ts +1 -0
  479. package/src/hooks/IdentifyUser/useIdentifyUser.ts +33 -0
  480. package/src/hooks/ImageResolver/index.ts +1 -0
  481. package/src/hooks/{useImageResolver.ts → ImageResolver/useImageResolver.ts} +7 -7
  482. package/src/hooks/Intersection/index.ts +1 -0
  483. package/src/hooks/IsSmallScreen/index.ts +1 -0
  484. package/src/hooks/LocalStorageOperations/index.ts +1 -0
  485. package/src/hooks/LocalStorageOperations/useLocalStorageOperations.ts +92 -0
  486. package/src/hooks/MessageFilter/index.ts +1 -0
  487. package/src/hooks/MessageScrollObserver/index.ts +1 -0
  488. package/src/hooks/NewOrgConfig/index.ts +1 -0
  489. package/src/hooks/NewOrgConfig/useNewOrgConfig.ts +7 -0
  490. package/src/hooks/Search/index.ts +1 -0
  491. package/src/hooks/{useSearch.tsx → Search/useSearch.tsx} +24 -20
  492. package/src/hooks/SearchOperations/index.ts +1 -0
  493. package/src/hooks/SearchOperations/useSearchOperations.ts +97 -0
  494. package/src/hooks/SessionStorageOperations/index.ts +1 -0
  495. package/src/hooks/SessionStorageOperations/useSessionStorageOperations.ts +28 -0
  496. package/src/hooks/ShopifyUrlOperations/index.ts +1 -0
  497. package/src/hooks/ShopifyUrlOperations/useShopifyUrlOperations.ts +45 -0
  498. package/src/hooks/SnapCalculator/index.ts +1 -0
  499. package/src/hooks/SystemSettingsContext/index.ts +1 -0
  500. package/src/hooks/SystemSettingsContext/useSystemSettingsContext.ts +14 -0
  501. package/src/hooks/TrackComponentVisibleEvent/index.ts +1 -0
  502. package/src/hooks/{useTrackComponentVisibleEvent.ts → TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts} +12 -8
  503. package/src/hooks/UpdateAnalyticsProps/index.ts +1 -0
  504. package/src/hooks/{useUpdateAnalyticsProps.ts → UpdateAnalyticsProps/useUpdateAnalyticsProps.ts} +28 -17
  505. package/src/interceptors/index.ts +0 -1
  506. package/src/interceptors/useMessageInterceptor.ts +5 -8
  507. package/src/merchants/domInsertion.ts +30 -0
  508. package/src/merchants/gridInsertion.ts +19 -0
  509. package/src/types/config-versions.ts +6 -0
  510. package/src/types.ts +0 -53
  511. package/dist/adapters/amplitude/index.cjs +0 -14
  512. package/dist/adapters/amplitude/index.d.cts +0 -6
  513. package/dist/adapters/amplitude/index.d.ts +0 -6
  514. package/dist/adapters/amplitude/index.js +0 -12
  515. package/dist/api-B2euFL-5.cjs +0 -269
  516. package/dist/api-XRr_lAG6.js +0 -190
  517. package/dist/application/config/index.cjs +0 -43
  518. package/dist/application/config/index.d.cts +0 -15
  519. package/dist/application/config/index.d.ts +0 -15
  520. package/dist/application/config/index.js +0 -41
  521. package/dist/application/service/customerService/index.cjs +0 -4
  522. package/dist/application/service/customerService/index.d.cts +0 -3
  523. package/dist/application/service/customerService/index.d.ts +0 -3
  524. package/dist/application/service/customerService/index.js +0 -4
  525. package/dist/application/service/index.cjs +0 -42
  526. package/dist/application/service/index.d.cts +0 -413
  527. package/dist/application/service/index.d.ts +0 -413
  528. package/dist/application/service/index.js +0 -12
  529. package/dist/atomStore-ONYy0XuA.d.cts +0 -24
  530. package/dist/atomStore-kOKiEcNl.d.ts +0 -24
  531. package/dist/bandolier-Da4wt6sm.cjs +0 -1230
  532. package/dist/bandolier-DzEmYWcz.js +0 -1230
  533. package/dist/carpe-AXipz0Xl.cjs +0 -608
  534. package/dist/carpe-CaUKwcEa.js +0 -606
  535. package/dist/contexts/index.cjs +0 -26
  536. package/dist/contexts/index.d.cts +0 -10
  537. package/dist/contexts/index.d.ts +0 -10
  538. package/dist/contexts/index.js +0 -12
  539. package/dist/contexts-CtRlNXaS.js +0 -7674
  540. package/dist/contexts-CtgmnYNn.cjs +0 -9088
  541. package/dist/coterie--MGvWeVh.cjs +0 -240
  542. package/dist/coterie-oKHAT0lx.js +0 -240
  543. package/dist/customerService-BG1uNZZ1.cjs +0 -36
  544. package/dist/customerService-BHQRnLhC.js +0 -23
  545. package/dist/custservice-types-C8-9vKWb.cjs +0 -35
  546. package/dist/custservice-types-CamCiXjq.js +0 -23
  547. package/dist/default-B4fINY5_.cjs +0 -4
  548. package/dist/default-BrTQxA0c.js +0 -4
  549. package/dist/default-C3LrcbZB.cjs +0 -199
  550. package/dist/default-CXkYrLEr.js +0 -176
  551. package/dist/divIds-0Vj9g-fM.js +0 -23
  552. package/dist/divIds-CjceLRD9.cjs +0 -131
  553. package/dist/dreamlandBaby-BEqt0eKF.js +0 -347
  554. package/dist/dreamlandBaby-DBDjEJCc.cjs +0 -347
  555. package/dist/embedded-B5Wi9g0T.cjs +0 -131
  556. package/dist/embedded-_cLpd6FK.js +0 -23
  557. package/dist/entrypoints-CNUvSgnk.js +0 -7
  558. package/dist/entrypoints-DM9Sm18O.cjs +0 -19
  559. package/dist/featureFlagService-5wdmW02z.d.ts +0 -18
  560. package/dist/featureFlagService-DaelrXEk.d.cts +0 -18
  561. package/dist/fiveCbd-CdqNt16h.cjs +0 -614
  562. package/dist/fiveCbd-D6B-sgnX.js +0 -614
  563. package/dist/forLoveAndLemons-C7GsJG7f.cjs +0 -668
  564. package/dist/forLoveAndLemons-gNDlMtPR.js +0 -666
  565. package/dist/greenpan-B5AaW4M_.js +0 -398
  566. package/dist/greenpan-DrORpYms.cjs +0 -398
  567. package/dist/grooveLife-BJqsfH2H.cjs +0 -343
  568. package/dist/grooveLife-xIUmDM8s.js +0 -343
  569. package/dist/homegrownCannabis-8TZ21u6L.cjs +0 -411
  570. package/dist/homegrownCannabis-BtMuEvbZ.js +0 -411
  571. package/dist/hooks/index.cjs +0 -37
  572. package/dist/hooks/index.d.cts +0 -232
  573. package/dist/hooks/index.d.ts +0 -232
  574. package/dist/hooks/index.js +0 -12
  575. package/dist/index-CKUpnyJQ.d.ts +0 -72
  576. package/dist/index-CbJZOEU4.d.ts +0 -203
  577. package/dist/index-DFL1dIT_.d.ts +0 -7
  578. package/dist/index-DXpgMVpp.d.ts +0 -749
  579. package/dist/index-K2kNsOTw.d.cts +0 -203
  580. package/dist/index-MFbPQ8Ji.d.ts +0 -95
  581. package/dist/index-VHFMGkO-.d.cts +0 -72
  582. package/dist/index-VSFakgAI.d.cts +0 -95
  583. package/dist/index-aNW5V9fh.d.cts +0 -749
  584. package/dist/index-zZjcds15.d.cts +0 -7
  585. package/dist/jackArcher-WtkbLBZj.cjs +0 -728
  586. package/dist/jackArcher-sO9EbgrZ.js +0 -728
  587. package/dist/jordanCraig-471FcgqF.cjs +0 -1787
  588. package/dist/jordanCraig-DNOncplU.js +0 -1787
  589. package/dist/kindredBravely-BlLyHGMX.cjs +0 -491
  590. package/dist/kindredBravely-cqZ4OvXp.js +0 -491
  591. package/dist/kutFromTheKloth-3mOIryvt.cjs +0 -370
  592. package/dist/kutFromTheKloth-DtVNCMKa.js +0 -370
  593. package/dist/larryAndSerges-88Bvq-Us.cjs +0 -262
  594. package/dist/larryAndSerges-cvak6May.js +0 -262
  595. package/dist/leapsAndRebounds-Dmf8eUPq.js +0 -361
  596. package/dist/leapsAndRebounds-iWKc923H.cjs +0 -361
  597. package/dist/longevityrx-BTMI9vn-.js +0 -321
  598. package/dist/longevityrx-CobPyigd.cjs +0 -321
  599. package/dist/lookOptic-C4H_c0JZ.cjs +0 -283
  600. package/dist/lookOptic-Jwf7EAU8.js +0 -283
  601. package/dist/mantraBrand-CySGqbn6.cjs +0 -751
  602. package/dist/mantraBrand-DoaVj837.js +0 -751
  603. package/dist/medterra-BnZ5p27n.cjs +0 -584
  604. package/dist/medterra-DaICcPPp.js +0 -584
  605. package/dist/modells-CZ1L6dD_.js +0 -485
  606. package/dist/modells-DF0SndHr.cjs +0 -485
  607. package/dist/orgConfigResults--dAwtw3W.d.ts +0 -881
  608. package/dist/orgConfigResults-BL0XBA6x.d.cts +0 -881
  609. package/dist/pressedFloral-B3t2cYzs.cjs +0 -662
  610. package/dist/pressedFloral-Dsws2Kfb.js +0 -662
  611. package/dist/skinPerfection-CILQM2bR.cjs +0 -335
  612. package/dist/skinPerfection-DmQCntRf.js +0 -335
  613. package/dist/snapSupplements--X_v0KRM.js +0 -286
  614. package/dist/snapSupplements-Djuzl0Ed.cjs +0 -286
  615. package/dist/socialProofClasses-DdzG1tZy.js +0 -10
  616. package/dist/socialProofClasses-ky69yppk.cjs +0 -40
  617. package/dist/spanx-Bo81yXSF.cjs +0 -664
  618. package/dist/spanx-DauxB8KE.js +0 -662
  619. package/dist/spanxStaging-BucYQvR1.cjs +0 -849
  620. package/dist/spanxStaging-CfXUukdP.js +0 -846
  621. package/dist/suggestionBarV2-types-B3lwrENK.cjs +0 -16
  622. package/dist/suggestionBarV2-types-Penx3Y67.js +0 -10
  623. package/dist/supergoop-8qa_NV3F.cjs +0 -338
  624. package/dist/supergoop-DOaui-A6.js +0 -336
  625. package/dist/types-CD4LFta-.d.cts +0 -33
  626. package/dist/types-CGC6Oozp.cjs +0 -231
  627. package/dist/types-CnTCkyvK.js +0 -177
  628. package/dist/types-DBdI0j89.d.ts +0 -33
  629. package/dist/uniqueVintage-BWkDgt1z.js +0 -1212
  630. package/dist/uniqueVintage-DAne8XcL.cjs +0 -1214
  631. package/dist/variant-CC1nrywd.d.ts +0 -13
  632. package/dist/variant-CQTuQQSq.d.cts +0 -13
  633. package/dist/venaCbd-B1HO_Pkr.cjs +0 -366
  634. package/dist/venaCbd-CnByO-5R.js +0 -366
  635. package/dist/westonJonBoucher-BAGXegsX.js +0 -423
  636. package/dist/westonJonBoucher-BRfHWMbs.cjs +0 -423
  637. package/dist/wineEnthusiast-DW8JVwV8.cjs +0 -941
  638. package/dist/wineEnthusiast-EJbhMeKQ.js +0 -941
  639. package/dist/wolfMattress-B6INZNRJ.cjs +0 -373
  640. package/dist/wolfMattress-D9P7ErH_.js +0 -373
  641. package/dist/wolfTactical-C5Pupi3J.js +0 -350
  642. package/dist/wolfTactical-TMthZM93.cjs +0 -350
  643. package/src/adapters/amplitude/amplitudeAdapter.ts +0 -477
  644. package/src/adapters/amplitude/index.ts +0 -2
  645. package/src/adapters/amplitude/stubAmplitudeAdapter.ts +0 -34
  646. package/src/adapters/spiffy/commerce/graphql.ts +0 -219
  647. package/src/application/config/generalStaticConfig.ts +0 -40
  648. package/src/application/config/index.ts +0 -1
  649. package/src/application/models/domMutationContinuation.ts +0 -7
  650. package/src/application/models/domObservationStrategy.ts +0 -9
  651. package/src/application/models/supportedOrgs.ts +0 -161
  652. package/src/application/service/cachingService.ts +0 -84
  653. package/src/application/service/cdnService.ts +0 -20
  654. package/src/application/service/customerService/index.ts +0 -8
  655. package/src/application/service/customerService/providers/UnsupportedCustomerService.ts +0 -15
  656. package/src/application/service/domMutationObserver.ts +0 -320
  657. package/src/application/service/domMutations/GridInsertionService.ts +0 -123
  658. package/src/application/service/domMutations/dataLayer/dataLayerEventsListener.ts +0 -99
  659. package/src/application/service/domMutations/domInsertionService.ts +0 -90
  660. package/src/application/service/domMutations/domMutationListener.ts +0 -15
  661. package/src/application/service/domMutations/domMutationListenerState.ts +0 -52
  662. package/src/application/service/domMutations/floatingChat/embeddedChatsPlacementsListener.ts +0 -41
  663. package/src/application/service/domMutations/gladly/gladlyListener.ts +0 -61
  664. package/src/application/service/domMutations/spiffy/orgs/common/kustomerVisibilityListener.ts +0 -41
  665. package/src/application/service/domMutations/spiffy/orgs/common/orgsCommonDataLayerListener.ts +0 -119
  666. package/src/application/service/featureFlagService.ts +0 -130
  667. package/src/application/service/graphqlConfigService.ts +0 -59
  668. package/src/application/service/index.ts +0 -32
  669. package/src/application/service/kustomerIntegrationService.ts +0 -111
  670. package/src/application/service/localStorageService.ts +0 -77
  671. package/src/application/service/pageVariantService.ts +0 -866
  672. package/src/application/service/searchService.ts +0 -147
  673. package/src/application/service/sessionStorageService.ts +0 -27
  674. package/src/application/service/shopifyUrlService.ts +0 -63
  675. package/src/application/service/userIdentityService.ts +0 -114
  676. package/src/application/service/windowChatToggleService.ts +0 -80
  677. package/src/application/service/windowDataLayerService.ts +0 -181
  678. package/src/application/service/windowFrontendConfigService.ts +0 -129
  679. package/src/atoms/org/merchantCss.ts +0 -161
  680. package/src/atoms/org/org.ts +0 -251
  681. package/src/atoms/org/orgPageConfig.ts +0 -41
  682. package/src/atoms/org/orgUIConfig.ts +0 -142
  683. package/src/contexts/enviveCssContext.tsx +0 -20
  684. package/src/contexts/index.ts +0 -6
  685. package/src/contexts/orgConfigContext.tsx +0 -106
  686. package/src/enabled-features.ts +0 -83
  687. package/src/hooks/index.ts +0 -21
  688. package/src/hooks/useDynamicVariants.ts +0 -226
  689. package/src/hooks/useFileUpload.ts +0 -63
  690. package/src/hooks/useHideElements.ts +0 -85
  691. package/src/hooks/useNewOrgConfig.ts +0 -80
  692. package/src/hooks/useSystemSettingsContext.ts +0 -12
  693. package/src/interceptors/useFormEscalation.ts +0 -57
  694. package/src/merchants/bandolier/bandolier.ts +0 -1389
  695. package/src/merchants/carpe/carpe.ts +0 -656
  696. package/src/merchants/coterie/coterie.ts +0 -280
  697. package/src/merchants/default.ts +0 -193
  698. package/src/merchants/dreamlandBaby/dreamlandBaby.ts +0 -375
  699. package/src/merchants/fiveCbd/fiveCbd.ts +0 -697
  700. package/src/merchants/forLoveAndLemons/forLoveAndLemons.ts +0 -721
  701. package/src/merchants/greenpan/greenpan.ts +0 -440
  702. package/src/merchants/grooveLife/grooveLife.ts +0 -386
  703. package/src/merchants/homegrownCannabis/homegrownCannabis.ts +0 -468
  704. package/src/merchants/init-merchant.sh +0 -53
  705. package/src/merchants/jackArcher/jackArcher.ts +0 -974
  706. package/src/merchants/jordanCraig/jordanCraig.ts +0 -1927
  707. package/src/merchants/kindredBravely/kindredBravely.ts +0 -529
  708. package/src/merchants/kutFromTheKloth/kutFromTheKloth.ts +0 -418
  709. package/src/merchants/larryAndSerges/larryAndSerges.ts +0 -314
  710. package/src/merchants/leapsAndRebounds/leapsAndRebounds.ts +0 -424
  711. package/src/merchants/longevityrx/longevityrx.ts +0 -368
  712. package/src/merchants/lookOptic/lookOptic.ts +0 -323
  713. package/src/merchants/mantraBrand/mantraBrand.ts +0 -838
  714. package/src/merchants/medterra/medterra.ts +0 -670
  715. package/src/merchants/modells/modells.ts +0 -546
  716. package/src/merchants/pressedFloral/pressedFloral.ts +0 -734
  717. package/src/merchants/skinPerfection/skinPerfection.ts +0 -379
  718. package/src/merchants/snapSupplements/snapSupplements.ts +0 -325
  719. package/src/merchants/spanx/spanx.ts +0 -810
  720. package/src/merchants/spanx/spanxStaging.ts +0 -942
  721. package/src/merchants/supergoop/supergoop.ts +0 -376
  722. package/src/merchants/uniqueVintage/uniqueVintage.ts +0 -1314
  723. package/src/merchants/venaCbd/venaCbd.ts +0 -410
  724. package/src/merchants/westonJonBoucher/westonJonBoucher.ts +0 -473
  725. package/src/merchants/wineEnthusiast/wineEnthusiast.ts +0 -990
  726. package/src/merchants/wolfMattress/wolfMattress.ts +0 -411
  727. package/src/merchants/wolfTactical/wolfTactical.ts +0 -389
  728. /package/dist/{locators-CugndTUM.cjs → AmplitudeOperations-CgIVPUlr.cjs} +0 -0
  729. /package/dist/{locators-DnKpajbY.js → AmplitudeOperations-YpyaR7Mp.js} +0 -0
  730. /package/dist/{utilityTypes-BVikejDo.js → atomStore-C2OI76yN.js} +0 -0
  731. /package/dist/{utilityTypes-C4h2wgAK.cjs → atomStore-DWmT1six.cjs} +0 -0
  732. /package/dist/{variantInfo-CzhR5W6h.js → types-DQoXDiso.js} +0 -0
  733. /package/dist/{variantInfo-CNRTY0gH.cjs → types-o3zWarRp.cjs} +0 -0
  734. /package/src/contexts/{systemSettingsContext.tsx → systemSettingsContext/systemSettingsContext.tsx} +0 -0
  735. /package/src/hooks/{useBlockBackButton.ts → BlockBackButton/useBlockBackButton.ts} +0 -0
  736. /package/src/hooks/{useCustomerSupportHandoff.ts → CustomerSupportHandoff/useCustomerSupportHandoff.ts} +0 -0
  737. /package/src/hooks/{useDebounce.ts → Debounce/useDebounce.ts} +0 -0
  738. /package/src/hooks/{useElementObserver.ts → ElementObserver/useElementObserver.ts} +0 -0
  739. /package/src/hooks/{useGrabAndScroll.ts → GrabAndScroll/useGrabAndScroll.ts} +0 -0
  740. /package/src/hooks/{useIntersection.ts → Intersection/useIntersection.ts} +0 -0
  741. /package/src/hooks/{useIsSmallScreen.ts → IsSmallScreen/useIsSmallScreen.ts} +0 -0
  742. /package/src/hooks/{useMessageFilter.ts → MessageFilter/useMessageFilter.ts} +0 -0
  743. /package/src/hooks/{useMessageScrollObserver.ts → MessageScrollObserver/useMessageScrollObserver.ts} +0 -0
  744. /package/src/hooks/{useSnapCalculator.ts → SnapCalculator/useSnapCalculator.ts} +0 -0
  745. /package/src/{application/service/customerService/types.ts → types/customerService.ts} +0 -0
  746. /package/src/{adapters/spiffy/commerce → types}/exceptions/sessionExceptions.ts +0 -0
  747. /package/src/{adapters/spiffy/commerce → types}/exceptions/unsupportedProductExceptions.ts +0 -0
@@ -8,9 +8,9 @@ import {
8
8
  useCallback,
9
9
  useMemo,
10
10
  } from "react";
11
- import CommerceApiClient from "src/adapters/spiffy/commerce/api";
11
+ import CommerceApiClient from "src/application/commerce-api";
12
12
  import { v4 as uuid } from "uuid";
13
- import { SessionRestartRequired } from "src/adapters/spiffy/commerce/exceptions/sessionExceptions";
13
+ import { SessionRestartRequired } from "src/types/exceptions/sessionExceptions";
14
14
  import Logger from "src/application/logging/logger";
15
15
  import {
16
16
  Message,
@@ -19,10 +19,7 @@ import {
19
19
  NextMessageRequest,
20
20
  Response,
21
21
  } from "src/application/models";
22
- import {
23
- AmplitudeAdapter,
24
- SpiffyMetricsEventName,
25
- } from "src/adapters/amplitude";
22
+ import { SpiffyMetricsEventName } from "src/contexts/amplitudeContext/amplitudeContext";
26
23
  import { messageFromResponse } from "src/application/utils";
27
24
  import { chatIdAtom, userIdAtom, variantInfoAtom } from "src/atoms/app";
28
25
  import {
@@ -43,8 +40,6 @@ import {
43
40
  handleSearchResultsAtom,
44
41
  chatSearchIsLoadingAtom,
45
42
  } from "src/atoms/search/chatSearch";
46
- import { orgIdAtom } from "src/atoms/org/org";
47
- import { useSystemSettingsContext } from "src/hooks";
48
43
  import { createAppLoadedEvent, createVisitUserEvent } from "src/hooks/utils";
49
44
  import { useMessageInterceptor } from "src/interceptors/useMessageInterceptor";
50
45
  import { supportedEventAtom } from "src/atoms/app/variant";
@@ -57,6 +52,8 @@ import {
57
52
  userEventQueueAtom,
58
53
  userQueueEventCountAtom,
59
54
  } from "src/atoms/chat/messageQueue";
55
+ import { useAmplitudeTracking } from "src/hooks/AmplitudeOperations/useAmplitudeOperations";
56
+ import { useSystemSettingsContext } from "src/hooks/SystemSettingsContext";
60
57
 
61
58
  /**
62
59
  * Record the chat assistant response in Amplitude
@@ -66,7 +63,11 @@ import {
66
63
  */
67
64
  const recordAssistantResponse = (
68
65
  startTimeMs: number,
69
- payload: NextMessageRequest
66
+ payload: NextMessageRequest,
67
+ track: (
68
+ eventName: SpiffyMetricsEventName,
69
+ eventProps?: Record<string, unknown>
70
+ ) => void
70
71
  ) => {
71
72
  const atomStore = getAtomStore();
72
73
  const chatState = atomStore.get(chatAtom);
@@ -115,8 +116,7 @@ const recordAssistantResponse = (
115
116
  eventProps.search_products_sort_type = searchProductsSort;
116
117
  }
117
118
 
118
- AmplitudeAdapter.trackEvent({
119
- eventName: SpiffyMetricsEventName.ChatAssistantResponse,
119
+ track(SpiffyMetricsEventName.ChatAssistantResponse, {
120
120
  eventProps,
121
121
  });
122
122
  };
@@ -252,13 +252,15 @@ const ChatContextProvider = ({ children }: { children: ReactNode }) => {
252
252
  const userId = useAtomValue(userIdAtom);
253
253
  const chatId = useAtomValue(chatIdAtom);
254
254
  const supportedEvent = useAtomValue(supportedEventAtom);
255
- const orgId = useAtomValue(orgIdAtom);
255
+ // TODO: Replace with actual orgId from useEnviveConfig or NewOrgConfigContext when available
256
+ const orgId = "mock-org-id";
256
257
 
257
258
  const variantInfo = useAtomValue(variantInfoAtom);
258
259
  const settingsContext = useSystemSettingsContext();
259
260
  const messageInterceptor = useMessageInterceptor();
260
261
  const handleSearchResults = useSetAtom(handleSearchResultsAtom);
261
262
  const setSearchIsLoading = useSetAtom(chatSearchIsLoadingAtom);
263
+ const { track } = useAmplitudeTracking();
262
264
 
263
265
  const getStreamingResponses = useCallback(
264
266
  async (
@@ -340,7 +342,7 @@ const ChatContextProvider = ({ children }: { children: ReactNode }) => {
340
342
 
341
343
  await getStreamingResponses(requestPayload);
342
344
 
343
- recordAssistantResponse(startTimeMs, requestPayload);
345
+ recordAssistantResponse(startTimeMs, requestPayload, track);
344
346
  await getSuggestions();
345
347
  } catch (error) {
346
348
  Logger.logError("[spiffy-ai] getResponses error", error);
@@ -361,6 +363,7 @@ const ChatContextProvider = ({ children }: { children: ReactNode }) => {
361
363
  markUserEventsProcessed,
362
364
  getSuggestions,
363
365
  setUserHasReplied,
366
+ track,
364
367
  ]
365
368
  );
366
369
 
@@ -0,0 +1 @@
1
+ export * from "./chatContext";
@@ -1,8 +1,9 @@
1
1
  import React, { createContext, useContext, ReactNode, useEffect } from "react";
2
2
  import { useSetAtom, useAtomValue } from "jotai";
3
- import type { EnviveConfig } from "./types";
4
3
  import { enviveConfigAtom } from "src/atoms/envive/enviveConfig";
5
4
  import Logger from "src/application/logging/logger";
5
+ import { OrgConfigFeatureGate } from "src/application/models/api/orgConfigResults";
6
+ import { EnviveConfig } from "../types";
6
7
 
7
8
  const EnviveConfigContext = createContext<EnviveConfig | undefined>(undefined);
8
9
 
@@ -18,6 +19,12 @@ interface EnviveConfigProviderProps {
18
19
  orgLevelApiKey?: string;
19
20
  orgShortName?: string;
20
21
  identifyingPrefix: string;
22
+ featureOverrides?: Record<string, boolean>;
23
+ variantUrlOverride?: string;
24
+ variantInfoOverride?: any;
25
+ show?: boolean;
26
+ publicKey?: string;
27
+ featureGates?: OrgConfigFeatureGate[]; // New prop for feature gates
21
28
  }
22
29
 
23
30
  export const EnviveConfigProvider: React.FC<EnviveConfigProviderProps> = ({
@@ -32,8 +39,15 @@ export const EnviveConfigProvider: React.FC<EnviveConfigProviderProps> = ({
32
39
  orgLevelApiKey,
33
40
  orgShortName,
34
41
  identifyingPrefix,
42
+ featureOverrides,
43
+ variantUrlOverride,
44
+ variantInfoOverride,
45
+ show,
46
+ publicKey,
47
+ featureGates, // Destructure new prop
35
48
  }) => {
36
49
  const setEnviveConfig = useSetAtom(enviveConfigAtom);
50
+
37
51
  const config: EnviveConfig = {
38
52
  amplitudeApiKey,
39
53
  dataResidency,
@@ -45,6 +59,12 @@ export const EnviveConfigProvider: React.FC<EnviveConfigProviderProps> = ({
45
59
  orgLevelApiKey,
46
60
  orgShortName,
47
61
  identifyingPrefix,
62
+ featureOverrides,
63
+ variantUrlOverride,
64
+ variantInfoOverride,
65
+ show,
66
+ publicKey,
67
+ featureGates, // Add to config
48
68
  };
49
69
 
50
70
  useEffect(() => {
@@ -54,28 +74,13 @@ export const EnviveConfigProvider: React.FC<EnviveConfigProviderProps> = ({
54
74
 
55
75
  return (
56
76
  <EnviveConfigContext.Provider value={config}>
57
- {children}
77
+ {config ? children : null}
58
78
  </EnviveConfigContext.Provider>
59
79
  );
60
80
  };
61
81
 
62
82
  export const useEnviveConfig = (): EnviveConfig => {
63
83
  const config = useAtomValue(enviveConfigAtom);
64
- Logger.logDebug("useEnviveConfig: Accessing EnviveConfig", config);
65
-
66
- // During initial render, the atom might not be set yet, so we need to be more patient
67
- // The EnviveConfigProvider will set it in its useEffect
68
- if (!config) {
69
- // Instead of throwing immediately, let's return a default/empty config
70
- // This prevents the error during initial render
71
- Logger.logWarn(
72
- "EnviveConfig not yet available, returning default config",
73
- undefined
74
- );
75
- return {
76
- identifyingPrefix: "spiffy", // This is required, so provide a default
77
- } as EnviveConfig;
78
- }
79
84
 
80
- return config;
85
+ return config ? config : {};
81
86
  };
@@ -0,0 +1 @@
1
+ export * from "./enviveConfigContext";
@@ -0,0 +1,49 @@
1
+ import React, { ReactNode } from "react";
2
+ import { useNewOrgConfig } from "src/hooks/NewOrgConfig";
3
+
4
+ interface EnviveCssProviderProps {
5
+ children: ReactNode;
6
+ }
7
+
8
+ export const EnviveCssProvider: React.FC<EnviveCssProviderProps> = ({
9
+ children,
10
+ }) => {
11
+ const { colorsConfig, frontendConfig, loading } = useNewOrgConfig();
12
+ let merchantThemeCss = `* {}`;
13
+ if (colorsConfig && !loading) {
14
+ merchantThemeCss = `
15
+ * {
16
+ --spiffy-colors-text-primary: ${colorsConfig.textPrimary};
17
+ --spiffy-colors-text-secondary: ${colorsConfig.textSecondary};
18
+ --spiffy-colors-text-accent: ${colorsConfig.textAccent};
19
+ --spiffy-colors-text-link: ${colorsConfig.textLink};
20
+ --spiffy-colors-text-light: ${colorsConfig.textLight};
21
+ --spiffy-colors-background-primary: ${colorsConfig.backgroundPrimary};
22
+ --spiffy-colors-background-secondary: ${colorsConfig.backgroundSecondary};
23
+ --spiffy-colors-background-secondary-dark: ${colorsConfig.backgroundSecondaryDark};
24
+ --spiffy-colors-background-tertiary: ${colorsConfig.backgroundTertiary};
25
+ --spiffy-colors-background-dark: ${colorsConfig.backgroundDark};
26
+ --spiffy-colors-background-light: ${colorsConfig.backgroundLight};
27
+ --spiffy-colors-background-saturated: ${colorsConfig.backgroundSaturated};
28
+ --spiffy-colors-border-light: ${colorsConfig.borderLight};
29
+ --spiffy-colors-border-medium: ${colorsConfig.borderMedium};
30
+ --spiffy-colors-border-dark: ${colorsConfig.borderDark};
31
+ --spiffy-colors-border-outline: ${colorsConfig.borderOutline};
32
+ --spiffy-colors-accent-primary: ${colorsConfig.accentPrimary};
33
+ --spiffy-colors-accent-secondary: ${colorsConfig.accentSecondary};
34
+ }`;
35
+ }
36
+ console.log(frontendConfig);
37
+ return (
38
+ <>
39
+ {frontendConfig ? (
40
+ <style id="merchant-css-overrides">{`${frontendConfig.merchantOverrideCss}`}</style>
41
+ ) : null}
42
+ {colorsConfig ? (
43
+ <style id="merchant-css-colors">{`${merchantThemeCss}`}</style>
44
+ ) : null}
45
+
46
+ {children}
47
+ </>
48
+ );
49
+ };
@@ -0,0 +1 @@
1
+ export * from "./enviveCssContext";
@@ -0,0 +1,193 @@
1
+ import React, { createContext, useContext, useCallback, useMemo } from "react";
2
+ import Logger from "src/application/logging/logger";
3
+ import { StatsigFeatureGate } from "@spiffy-ai/commerce-api-client";
4
+ import { FeatureGates } from "src/application/models/featureGates";
5
+ import { useSessionStorage } from "src/contexts/sessionStorageContext";
6
+ import { OrgConfigFeatureGate } from "src/application/models/api/orgConfigResults";
7
+ import { useEnviveConfig } from "src/contexts/enviveConfigContext/enviveConfigContext";
8
+
9
+ const FEATURE_FLAGS_STORAGE_KEY = "spiffy-feature-flags";
10
+
11
+ export interface FeatureFlagContextType {
12
+ isFeatureGateEnabled: (featureGate: FeatureGates) => boolean;
13
+ isClientSessionEnabled: () => boolean;
14
+ getFeatureFlags: () => Record<string, boolean>;
15
+ persistFeatureGateOverrides: () => void;
16
+ }
17
+
18
+ const FeatureFlagContext = createContext<FeatureFlagContextType | undefined>(
19
+ undefined
20
+ );
21
+
22
+ export const FeatureFlagProvider: React.FC<{
23
+ featureGates: OrgConfigFeatureGate[];
24
+ children: React.ReactNode;
25
+ }> = ({ featureGates, children }) => {
26
+ const { getItem, setItem } = useSessionStorage();
27
+ const { featureOverrides } = useEnviveConfig();
28
+
29
+ const getQueryParamFeatureGateOverrides = useCallback(
30
+ (featureGate: FeatureGates): boolean | undefined => {
31
+ const urlObj = new URL(window.location.href);
32
+ const params = new URLSearchParams(urlObj.search);
33
+ const paramsObj = Object.fromEntries(params.entries());
34
+ const value = paramsObj[featureGate];
35
+
36
+ if (value != null) {
37
+ return value === "true";
38
+ }
39
+
40
+ return undefined;
41
+ },
42
+ []
43
+ );
44
+
45
+ const getWindowFeatureGateOverrides = useCallback(
46
+ (featureGate: FeatureGates): boolean | undefined => {
47
+ const value = featureOverrides?.[String(featureGate)];
48
+ if (value != null) {
49
+ return value;
50
+ }
51
+
52
+ return undefined;
53
+ },
54
+ [featureOverrides]
55
+ );
56
+
57
+ const getStoredFeatureGateOverrides = useCallback(
58
+ (featureGate: FeatureGates): boolean | undefined => {
59
+ const featureFlags = getItem(FEATURE_FLAGS_STORAGE_KEY);
60
+
61
+ if (featureFlags) {
62
+ try {
63
+ const featureFlagsObj = JSON.parse(featureFlags);
64
+ return featureFlagsObj[featureGate];
65
+ } catch (err) {
66
+ Logger.logError(
67
+ "[spiffy-ai] getStoredFeatureGateOverrides: error parsing feature flags",
68
+ err
69
+ );
70
+ }
71
+ }
72
+
73
+ return undefined;
74
+ },
75
+ []
76
+ );
77
+
78
+ const getFeatureFlagOverride = useCallback(
79
+ (featureGate: FeatureGates): boolean | undefined => {
80
+ const queryOverride = getQueryParamFeatureGateOverrides(featureGate);
81
+ if (queryOverride != null) {
82
+ Logger.logDebug(
83
+ `[spiffy-ai] isFeatureGateEnabled featureGate:${featureGate} overridden by URL param. New value: ${queryOverride}`
84
+ );
85
+ return queryOverride;
86
+ }
87
+
88
+ const windowOverride = getWindowFeatureGateOverrides(featureGate);
89
+ if (windowOverride != null) {
90
+ Logger.logDebug(
91
+ `[spiffy-ai] isFeatureGateEnabled featureGate:${featureGate} overridden by window param. New value: ${windowOverride}`
92
+ );
93
+ return windowOverride;
94
+ }
95
+
96
+ const storedOverride = getStoredFeatureGateOverrides(featureGate);
97
+ if (storedOverride != null) {
98
+ Logger.logDebug(
99
+ `[spiffy-ai] isFeatureGateEnabled featureGate:${featureGate} overridden by stored value. New value: ${storedOverride}`
100
+ );
101
+ return storedOverride;
102
+ }
103
+
104
+ return undefined;
105
+ },
106
+ [
107
+ getQueryParamFeatureGateOverrides,
108
+ getWindowFeatureGateOverrides,
109
+ getStoredFeatureGateOverrides,
110
+ ]
111
+ );
112
+
113
+ const isFeatureGateEnabled = useCallback(
114
+ (featureGate: FeatureGates): boolean => {
115
+ const gateValue = featureGates.find((gate) => gate.name === featureGate);
116
+
117
+ const featureFlagOverride = getFeatureFlagOverride(featureGate);
118
+ if (featureFlagOverride !== undefined) {
119
+ return featureFlagOverride;
120
+ }
121
+
122
+ if (gateValue == null || gateValue.value == null) {
123
+ Logger.logDebug(
124
+ `[spiffy-ai] isFeatureGateEnabled featureGate:${featureGate} value is undefined - returning false`
125
+ );
126
+
127
+ return false;
128
+ }
129
+
130
+ return gateValue.value;
131
+ },
132
+ [featureGates, getFeatureFlagOverride]
133
+ );
134
+
135
+ const isClientSessionEnabled = useCallback((): boolean => {
136
+ const gates: Array<StatsigFeatureGate> | undefined = featureGates;
137
+ const isEnabled =
138
+ gates == null ||
139
+ gates?.filter(
140
+ (gate) =>
141
+ gate.name === FeatureGates.IsClientSessionEnabled &&
142
+ gate.value === true
143
+ ).length > 0;
144
+
145
+ return isEnabled;
146
+ }, [featureGates]);
147
+
148
+ const getFeatureFlags = useCallback((): Record<string, boolean> => {
149
+ return Object.fromEntries(
150
+ Object.values(FeatureGates).map((featureGate: FeatureGates) => [
151
+ featureGate,
152
+ isFeatureGateEnabled(featureGate),
153
+ ])
154
+ );
155
+ }, [isFeatureGateEnabled]);
156
+
157
+ const persistFeatureGateOverrides = useCallback(() => {
158
+ const featureFlags = Object.values(FeatureGates)
159
+ .map((featureGate) => [featureGate, getFeatureFlagOverride(featureGate)])
160
+ .filter(([, val]) => val !== undefined)
161
+ .reduce((acc, [key, val]) => ({ ...acc, [key as string]: val }), {});
162
+ setItem(FEATURE_FLAGS_STORAGE_KEY, JSON.stringify(featureFlags));
163
+ }, [getFeatureFlagOverride, setItem]);
164
+
165
+ const value = useMemo(
166
+ () => ({
167
+ isFeatureGateEnabled,
168
+ isClientSessionEnabled,
169
+ getFeatureFlags,
170
+ persistFeatureGateOverrides,
171
+ }),
172
+ [
173
+ isFeatureGateEnabled,
174
+ isClientSessionEnabled,
175
+ getFeatureFlags,
176
+ persistFeatureGateOverrides,
177
+ ]
178
+ );
179
+
180
+ return (
181
+ <FeatureFlagContext.Provider value={value}>
182
+ {children}
183
+ </FeatureFlagContext.Provider>
184
+ );
185
+ };
186
+
187
+ export const useFeatureFlag = () => {
188
+ const context = useContext(FeatureFlagContext);
189
+ if (context === undefined) {
190
+ throw new Error("useFeatureFlag must be used within a FeatureFlagProvider");
191
+ }
192
+ return context;
193
+ };
@@ -0,0 +1 @@
1
+ export * from "./featureFlagContext";
@@ -0,0 +1,87 @@
1
+ import React, { createContext, useContext, useMemo, ReactNode } from "react";
2
+ import { OrgConfigFeatureGate } from "src/application/models/api/orgConfigResults";
3
+ import { FeatureGates } from "src/application/models/featureGates";
4
+ import Logger from "src/application/logging/logger";
5
+
6
+ // This is the class that was previously implicitly used or defined elsewhere
7
+ class FeatureFlagService {
8
+ private featureGates: OrgConfigFeatureGate[];
9
+
10
+ constructor(featureGates: OrgConfigFeatureGate[]) {
11
+ this.featureGates = featureGates;
12
+ }
13
+
14
+ isFeatureGateEnabled = (featureGate: FeatureGates): boolean => {
15
+ const gateValue = this.featureGates.find(
16
+ (gate) => gate.name === featureGate
17
+ );
18
+
19
+ // TODO: Add logic for overrides (query params, window, stored) if needed, similar to the old FeatureFlagContext.tsx
20
+ // For now, direct value from config is used.
21
+
22
+ if (gateValue == null || gateValue.value == null) {
23
+ Logger.logDebug(
24
+ `[spiffy-ai] isFeatureGateEnabled featureGate:${featureGate} value is undefined - returning false`
25
+ );
26
+ return false;
27
+ }
28
+ return gateValue.value;
29
+ };
30
+
31
+ isClientSessionEnabled = (): boolean => {
32
+ const isEnabled =
33
+ this.featureGates.filter(
34
+ (gate) =>
35
+ gate.name === FeatureGates.IsClientSessionEnabled &&
36
+ gate.value === true
37
+ ).length > 0;
38
+ return isEnabled;
39
+ };
40
+
41
+ getFeatureFlags = (): Record<string, boolean> => {
42
+ return Object.fromEntries(
43
+ Object.values(FeatureGates).map((featureGate: FeatureGates) => [
44
+ featureGate,
45
+ this.isFeatureGateEnabled(featureGate),
46
+ ])
47
+ );
48
+ };
49
+ }
50
+
51
+ export interface FeatureFlagContextType {
52
+ featureFlagService: FeatureFlagService | undefined;
53
+ }
54
+
55
+ const FeatureFlagServiceContext = createContext<
56
+ FeatureFlagContextType | undefined
57
+ >(undefined);
58
+
59
+ interface FeatureFlagServiceProviderProps {
60
+ featureGates: OrgConfigFeatureGate[];
61
+ children: ReactNode;
62
+ }
63
+
64
+ export const FeatureFlagServiceProvider: React.FC<
65
+ FeatureFlagServiceProviderProps
66
+ > = ({ featureGates, children }) => {
67
+ const featureFlagService = useMemo(
68
+ () => new FeatureFlagService(featureGates),
69
+ [featureGates]
70
+ );
71
+
72
+ return (
73
+ <FeatureFlagServiceContext.Provider value={{ featureFlagService }}>
74
+ {children}
75
+ </FeatureFlagServiceContext.Provider>
76
+ );
77
+ };
78
+
79
+ export const useFeatureFlagService = () => {
80
+ const context = useContext(FeatureFlagServiceContext);
81
+ if (context === undefined) {
82
+ throw new Error(
83
+ "useFeatureFlagService must be used within a FeatureFlagServiceProvider"
84
+ );
85
+ }
86
+ return context;
87
+ };
@@ -0,0 +1 @@
1
+ export * from "./featureFlagServiceContext";
@@ -0,0 +1,165 @@
1
+ import React, {
2
+ createContext,
3
+ useContext,
4
+ useCallback,
5
+ useMemo,
6
+ ReactNode,
7
+ } from "react";
8
+ import { useAtomValue } from "jotai";
9
+ import { baseUrlAtom, orgLevelApiKeyAtom } from "src/atoms/envive/enviveConfig";
10
+ import { getMerchantOrgIdQuery } from "src/application/models/graphql/queries/getMerchantOrgIdQuery";
11
+ import { validateGraphQLOrgId } from "src/application/models/validators/validateGraphQLOrgId";
12
+ import {
13
+ getMerchantColorsQuery,
14
+ GetMerchantColorsQueryData,
15
+ getMerchantFrontendConfigQuery,
16
+ GetMerchantFrontendConfigQueryData,
17
+ } from "src/application/models/graphql";
18
+ import { validateGraphQLColorsConfig } from "src/application/models/validators/validateGraphQLColorsConfig";
19
+ import { validateGraphQLFrontendConfig } from "src/application/models/validators/validateGraphQLFrontendConfig";
20
+ import { ColorMapping } from "src/application/models/colorsConfig";
21
+ import { FrontendConfig } from "src/application/models/frontendConfig";
22
+ import Logger from "src/application/logging/logger";
23
+ import { configVersion } from "src/types/config-versions";
24
+ import {
25
+ CamelCasedPropertiesDeep,
26
+ transformSnakeToCamel,
27
+ } from "src/application/models";
28
+
29
+ interface BaseMeConfigQueryResponse {
30
+ me: {
31
+ org?: {
32
+ id: string;
33
+ };
34
+ getProductsConfigByVersion?: {
35
+ frontend?: {
36
+ values: CamelCasedPropertiesDeep<GetMerchantFrontendConfigQueryData>;
37
+ };
38
+ colors?: { values: CamelCasedPropertiesDeep<GetMerchantColorsQueryData> };
39
+ };
40
+ };
41
+ }
42
+ export type ColorsConfigResponse = CamelCasedPropertiesDeep<ColorMapping>;
43
+ export type FrontendConfigResponse = CamelCasedPropertiesDeep<FrontendConfig>;
44
+
45
+ export type GraphQlConfigValues = {
46
+ colorsConfig?: ColorsConfigResponse;
47
+ frontendConfig?: CamelCasedPropertiesDeep<FrontendConfig>;
48
+ };
49
+
50
+ interface GraphQLContextValue {
51
+ executeQuery: <T>(
52
+ query: string,
53
+ variables?: Record<string, unknown>
54
+ ) => Promise<T>;
55
+ getOrgId: () => Promise<string | undefined>;
56
+ getColorsAndFrontendConfig: () => Promise<GraphQlConfigValues>;
57
+ isReady: boolean;
58
+ }
59
+
60
+ const GraphQLContext = createContext<GraphQLContextValue | null>(null);
61
+
62
+ const colorsAndFrontendConfigQuery = () => `
63
+ query ($version: String = "${configVersion()}") {
64
+ me {
65
+ getProductsConfigByVersion(version: $version) {
66
+ frontend { values }
67
+ colors { values }
68
+ }
69
+ }
70
+ }
71
+ `;
72
+
73
+ type GraphQLProviderProps = {
74
+ children: ReactNode;
75
+ };
76
+
77
+ export const GraphQLProvider = ({ children }: GraphQLProviderProps) => {
78
+ const apiKey = useAtomValue(orgLevelApiKeyAtom);
79
+ const baseUrl = useAtomValue(baseUrlAtom);
80
+
81
+ const isReady = Boolean(apiKey && baseUrl);
82
+
83
+ const executeQuery = useCallback(
84
+ async (query: string, variables?: Record<string, unknown>) => {
85
+ if (!isReady) {
86
+ throw new Error("GraphQL client not ready - missing apiKey or baseUrl");
87
+ }
88
+
89
+ const response = await fetch(`${baseUrl}/v1/graphql`, {
90
+ method: "POST",
91
+ headers: {
92
+ "Content-Type": "application/json",
93
+ Authorization: `Bearer ${apiKey}`,
94
+ },
95
+ body: JSON.stringify({ query, variables }),
96
+ });
97
+
98
+ if (!response.ok) {
99
+ throw new Error(`GraphQL request failed: ${response.statusText}`);
100
+ }
101
+
102
+ const result = await response.json();
103
+ if (result.errors) {
104
+ throw new Error(`GraphQL errors: ${JSON.stringify(result.errors)}`);
105
+ }
106
+
107
+ return result.data;
108
+ },
109
+ [apiKey, baseUrl, isReady]
110
+ );
111
+
112
+ const getOrgId = useCallback(async () => {
113
+ const response = await executeQuery(getMerchantOrgIdQuery);
114
+ return validateGraphQLOrgId(response.me.org?.id);
115
+ }, [executeQuery]);
116
+
117
+ const getColorsAndFrontendConfig =
118
+ useCallback(async (): Promise<GraphQlConfigValues> => {
119
+ try {
120
+ const query = await colorsAndFrontendConfigQuery();
121
+ if (!query) {
122
+ throw new Error("Colors and frontend config query is not defined");
123
+ }
124
+ const response = await executeQuery(query);
125
+ const colorsConfig =
126
+ response.me.getProductsConfigByVersion?.colors?.values;
127
+ const frontendConfig =
128
+ response.me.getProductsConfigByVersion?.frontend?.values;
129
+ const transformedColorConfig = transformSnakeToCamel(colorsConfig);
130
+ const transformedFrontendConfig = transformSnakeToCamel(frontendConfig);
131
+ return {
132
+ colorsConfig: transformedColorConfig as ColorsConfigResponse,
133
+ frontendConfig: transformedFrontendConfig as FrontendConfigResponse,
134
+ };
135
+ } catch (err) {
136
+ Logger.logError(
137
+ "Error fetching graphql colors and frontend config",
138
+ err
139
+ );
140
+ return { colorsConfig: undefined, frontendConfig: undefined };
141
+ }
142
+ }, [executeQuery]);
143
+
144
+ const value = useMemo(
145
+ () => ({
146
+ executeQuery,
147
+ getOrgId,
148
+ getColorsAndFrontendConfig,
149
+ isReady,
150
+ }),
151
+ [executeQuery, getOrgId, getColorsAndFrontendConfig, isReady]
152
+ );
153
+
154
+ return (
155
+ <GraphQLContext.Provider value={value}>{children}</GraphQLContext.Provider>
156
+ );
157
+ };
158
+
159
+ export const useGraphQLClient = () => {
160
+ const context = useContext(GraphQLContext);
161
+ if (!context) {
162
+ throw new Error("useGraphQLClient must be used within a GraphQLProvider");
163
+ }
164
+ return context;
165
+ };
@@ -0,0 +1 @@
1
+ export * from "./graphqlContext";
@@ -0,0 +1 @@
1
+ export * from "./localStorageContext";