@envive-ai/react-hooks 0.1.4 → 0.1.6

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 (488) hide show
  1. package/dist/amplitudeContext-CHzas7Cf.d.cts +52 -0
  2. package/dist/amplitudeContext-D-7fmVh1.cjs +356 -0
  3. package/dist/amplitudeContext-hY3caPC6.js +322 -0
  4. package/dist/amplitudeContext-tJ4y-SzX.d.ts +52 -0
  5. package/dist/api-DjeZXxl_.js +207 -0
  6. package/dist/api-_JaUnIUj.cjs +292 -0
  7. package/dist/app-CjsQ2_n-.js +132 -0
  8. package/dist/app-CnKRZ9RW.cjs +178 -0
  9. package/dist/application/models/graphql/index.cjs +3 -12
  10. package/dist/application/models/graphql/index.d.cts +1 -1
  11. package/dist/application/models/graphql/index.d.ts +1 -1
  12. package/dist/application/models/graphql/index.js +1 -10
  13. package/dist/application/models/guards/api/index.cjs +1 -2
  14. package/dist/application/models/guards/api/index.d.cts +2 -2
  15. package/dist/application/models/guards/api/index.d.ts +2 -2
  16. package/dist/application/models/guards/api/index.js +1 -2
  17. package/dist/application/models/index.cjs +48 -54
  18. package/dist/application/models/index.d.cts +7 -9
  19. package/dist/application/models/index.d.ts +7 -9
  20. package/dist/application/models/index.js +7 -11
  21. package/dist/application/models/utilityTypes/index.cjs +1 -1
  22. package/dist/application/models/utilityTypes/index.d.cts +1 -1
  23. package/dist/application/models/utilityTypes/index.d.ts +1 -1
  24. package/dist/application/models/utilityTypes/index.js +1 -1
  25. package/dist/application/models/variantInfo/index.cjs +1 -1
  26. package/dist/application/models/variantInfo/index.d.cts +1 -1
  27. package/dist/application/models/variantInfo/index.d.ts +1 -1
  28. package/dist/application/models/variantInfo/index.js +1 -1
  29. package/dist/application/utils/index.cjs +40 -37
  30. package/dist/application/utils/index.d.cts +18 -14
  31. package/dist/application/utils/index.d.ts +17 -13
  32. package/dist/application/utils/index.js +13 -10
  33. package/dist/{atomStore-JwGb7pcy.cjs → atomStore-B4jIaDPd.cjs} +1 -1
  34. package/dist/{atomStore-B1cgmbP0.js → atomStore-D8pjE1vL.js} +1 -1
  35. package/dist/atoms/app/index.cjs +14 -16
  36. package/dist/atoms/app/index.d.cts +20 -19
  37. package/dist/atoms/app/index.d.ts +20 -19
  38. package/dist/atoms/app/index.js +10 -11
  39. package/dist/atoms/atomStore/index.cjs +2 -1
  40. package/dist/atoms/atomStore/index.d.cts +1 -1
  41. package/dist/atoms/atomStore/index.js +2 -1
  42. package/dist/atoms/chat/index.cjs +44 -40
  43. package/dist/atoms/chat/index.d.cts +35 -36
  44. package/dist/atoms/chat/index.d.ts +35 -36
  45. package/dist/atoms/chat/index.js +14 -10
  46. package/dist/atoms/globalSearch/index.cjs +1 -1
  47. package/dist/atoms/globalSearch/index.d.cts +5 -5
  48. package/dist/atoms/globalSearch/index.d.ts +5 -5
  49. package/dist/atoms/globalSearch/index.js +1 -1
  50. package/dist/atoms/org/index.cjs +26 -37
  51. package/dist/atoms/org/index.d.cts +37 -47
  52. package/dist/atoms/org/index.d.ts +37 -47
  53. package/dist/atoms/org/index.js +11 -11
  54. package/dist/atoms/search/index.cjs +47 -41
  55. package/dist/atoms/search/index.d.cts +7 -9
  56. package/dist/atoms/search/index.d.ts +7 -9
  57. package/dist/atoms/search/index.js +16 -10
  58. package/dist/bandolier-DYEz4-8C.js +1229 -0
  59. package/dist/bandolier-o_-xrbOV.cjs +1229 -0
  60. package/dist/carpe-CsG5jCcl.cjs +607 -0
  61. package/dist/carpe-DONk00bZ.js +605 -0
  62. package/dist/cdnUtils-32v8bDX9.cjs +16 -0
  63. package/dist/cdnUtils-E4tLBt2g.js +11 -0
  64. package/dist/{chat-BgONoYU7.cjs → chat-BubCW1as.cjs} +1 -1
  65. package/dist/chat-CO7cRkaq.cjs +506 -0
  66. package/dist/{chat-CLJ4NWcN.js → chat-CV6MXeID.js} +1 -1
  67. package/dist/chat-hcRc4RRd.js +285 -0
  68. package/dist/{components-CV1fhAkj.js → components-B4T3Uzth.js} +1 -1
  69. package/dist/{components-BKZbet67.cjs → components-Cw9WjA6g.cjs} +1 -1
  70. package/dist/config/locators/components/chat/index.cjs +1 -1
  71. package/dist/config/locators/components/chat/index.d.cts +1 -1
  72. package/dist/config/locators/components/chat/index.d.ts +1 -1
  73. package/dist/config/locators/components/chat/index.js +1 -1
  74. package/dist/config/locators/components/chat/variants/index.d.ts +1 -1
  75. package/dist/config/locators/components/index.cjs +1 -1
  76. package/dist/config/locators/components/index.d.cts +1 -1
  77. package/dist/config/locators/components/index.d.ts +1 -1
  78. package/dist/config/locators/components/index.js +1 -1
  79. package/dist/config/locators/index.cjs +4 -4
  80. package/dist/config/locators/index.d.cts +2 -2
  81. package/dist/config/locators/index.d.ts +3 -3
  82. package/dist/config/locators/index.js +4 -4
  83. package/dist/contexts/index.cjs +45 -14
  84. package/dist/contexts/index.d.cts +10 -78
  85. package/dist/contexts/index.d.ts +10 -78
  86. package/dist/contexts/index.js +22 -11
  87. package/dist/contexts-B4ihTBsV.cjs +2980 -0
  88. package/dist/contexts-DGlr7M1o.js +2596 -0
  89. package/dist/coterie-CKB93qfz.cjs +239 -0
  90. package/dist/{coterie-yQ-_JXSw.cjs → coterie-DHcj2fRE.js} +64 -65
  91. package/dist/{custservice-types-C83itZmy.cjs → custservice-types-Dy0kc9TW.cjs} +1 -1
  92. package/dist/{custservice-types-DPQ-4TI6.js → custservice-types-mnIunabv.js} +1 -1
  93. package/dist/default-BnB4p0Se.cjs +234 -0
  94. package/dist/default-D6f5Dyt7.js +199 -0
  95. package/dist/default-ZKkE5zT4.cjs +4 -0
  96. package/dist/default-legGZJwI.js +4 -0
  97. package/dist/{divIds-DEL_-qU0.cjs → divIds-2dJlU3z8.cjs} +1 -15
  98. package/dist/{divIds-CWkntTsx.js → divIds-BUrN2vY-.js} +2 -4
  99. package/dist/dreamlandBaby-BiRYYFav.js +346 -0
  100. package/dist/dreamlandBaby-zuvmfzfD.cjs +346 -0
  101. package/dist/{embedded-C5uJqmuD.js → embedded-BJLWIriJ.js} +1 -1
  102. package/dist/{embedded--2L0F4b5.cjs → embedded-Dl79TJLC.cjs} +1 -1
  103. package/dist/{entrypoints-CNUvSgnk.js → entrypoints-Bs3pn6EV.js} +1 -1
  104. package/dist/{entrypoints-DM9Sm18O.cjs → entrypoints-Dqi5pzWH.cjs} +1 -1
  105. package/dist/enviveConfig-BccuzS2a.cjs +240 -0
  106. package/dist/enviveConfig-CzhTz8Aa.js +152 -0
  107. package/dist/events/index.cjs +1 -1
  108. package/dist/events/index.d.cts +1 -1
  109. package/dist/events/index.js +1 -1
  110. package/dist/{events-ClCDFK7t.js → events-BrLpaNxh.js} +1 -1
  111. package/dist/{events-Da7gpmGv.cjs → events-DwT6cEwI.cjs} +1 -1
  112. package/dist/fiveCbd-DwTTwC2j.cjs +613 -0
  113. package/dist/fiveCbd-Dz2NouOF.js +613 -0
  114. package/dist/forLoveAndLemons-DqSdyD6S.js +665 -0
  115. package/dist/forLoveAndLemons-Ud6mPrV3.cjs +667 -0
  116. package/dist/{globalSearch-b0wC7ZEO.js → globalSearch-B6THR7Jx.js} +1 -1
  117. package/dist/{globalSearch-BTeZxvk1.cjs → globalSearch-BFvEg53C.cjs} +1 -1
  118. package/dist/graphql-BNW60InJ.cjs +128 -0
  119. package/dist/graphql-CjB8wHzm.js +74 -0
  120. package/dist/graphqlConfig-CYt6tWII.js +30 -0
  121. package/dist/graphqlConfig-DicykC-o.cjs +61 -0
  122. package/dist/greenpan-B_EbPkSP.js +397 -0
  123. package/dist/greenpan-kPE4fJgd.cjs +397 -0
  124. package/dist/grooveLife-Ckuir319.js +342 -0
  125. package/dist/grooveLife-DKSEQp1F.cjs +342 -0
  126. package/dist/homegrownCannabis-BVPa2pqe.js +410 -0
  127. package/dist/homegrownCannabis-BwIAkxuA.cjs +410 -0
  128. package/dist/hooks/index.cjs +40 -16
  129. package/dist/hooks/index.d.cts +122 -95
  130. package/dist/hooks/index.d.ts +122 -95
  131. package/dist/hooks/index.js +22 -11
  132. package/dist/{index-D46Rd0io.d.cts → index-B0NW9KTj.d.cts} +1 -1
  133. package/dist/{index-jBATkcc_.d.cts → index-BDPWBU3h.d.cts} +1 -1
  134. package/dist/index-BMPtlgac.d.ts +191 -0
  135. package/dist/{index-BTK5uzs6.d.cts → index-Bmub8e38.d.cts} +1 -1
  136. package/dist/{index-C62lPpy4.d.cts → index-Byb45OPg.d.cts} +1 -1
  137. package/dist/{index-DPx8s5YH.d.ts → index-C6KdON7d.d.ts} +1 -1
  138. package/dist/index-C7pGDl1A.d.ts +1609 -0
  139. package/dist/{index-CYtsPztZ.d.cts → index-C9lgsCWp.d.cts} +32 -32
  140. package/dist/{index-BzgkfbNO.d.cts → index-CESxqFso.d.cts} +1 -1
  141. package/dist/{index-C_C0tLeD.d.ts → index-Cc-wBCn6.d.ts} +32 -32
  142. package/dist/{index-Cx9e-fRi.d.ts → index-CcIG01PJ.d.ts} +2 -2
  143. package/dist/{index-ClJ0nMsR.d.cts → index-CiWEYzXl.d.cts} +2 -2
  144. package/dist/{index-CKKkTsms.d.ts → index-Cqg6ltII.d.ts} +1 -1
  145. package/dist/{index-CExtydIH.d.ts → index-DOii3C6b.d.ts} +1 -1
  146. package/dist/index-DTu2X-YS.d.cts +1609 -0
  147. package/dist/index-OEifcBsm.d.cts +191 -0
  148. package/dist/{index-Dxpscrvz.d.ts → index-PGF8BvxQ.d.ts} +1 -1
  149. package/dist/{index-D2VaMPA3.d.ts → index-ylUiJvnr.d.ts} +1 -1
  150. package/dist/interceptors/index.cjs +2 -12
  151. package/dist/interceptors/index.d.cts +8 -13
  152. package/dist/interceptors/index.d.ts +8 -13
  153. package/dist/interceptors/index.js +2 -11
  154. package/dist/jackArcher-B39OEIj6.cjs +727 -0
  155. package/dist/{jackArcher-CXf_IAmC.js → jackArcher-BwkWGybC.js} +24 -25
  156. package/dist/jordanCraig-CxRH_jLi.js +1786 -0
  157. package/dist/jordanCraig-RwmWw-jM.cjs +1786 -0
  158. package/dist/kindredBravely-D78VwL20.cjs +490 -0
  159. package/dist/kindredBravely-DQDpAzdl.js +490 -0
  160. package/dist/kutFromTheKloth-TcXQkIti.js +369 -0
  161. package/dist/kutFromTheKloth-dXRrNti0.cjs +369 -0
  162. package/dist/larryAndSerges-Bh5XEXsZ.js +262 -0
  163. package/dist/larryAndSerges-COdBzOzu.cjs +262 -0
  164. package/dist/leapsAndRebounds-BbXnqkl5.cjs +360 -0
  165. package/dist/leapsAndRebounds-mjCaH1k-.js +360 -0
  166. package/dist/longevityrx-DdV3v26F.cjs +320 -0
  167. package/dist/longevityrx-DfPDfvAt.js +320 -0
  168. package/dist/lookOptic-DgXFGBPP.cjs +282 -0
  169. package/dist/{lookOptic-BGhU4910.js → lookOptic-FgVW1afF.js} +19 -20
  170. package/dist/mantraBrand-C5gVm3rk.cjs +750 -0
  171. package/dist/{mantraBrand-DrqG9uqO.js → mantraBrand-uV8HCDR8.js} +22 -23
  172. package/dist/medterra-BtDpr1Hw.cjs +583 -0
  173. package/dist/medterra-DgzE7-mj.js +583 -0
  174. package/dist/modells-CJjsxOIR.js +484 -0
  175. package/dist/modells-Ck5KbRFj.cjs +484 -0
  176. package/dist/models-BkXg5eIP.cjs +1534 -0
  177. package/dist/models-UZ6HszfZ.js +1281 -0
  178. package/dist/{nodeSelector-BiCDowlK.d.ts → nodeSelector-BxrS2S_k.d.ts} +1 -1
  179. package/dist/{nodeSelector-B3bPtEjX.d.cts → nodeSelector-Dm4S-10n.d.cts} +1 -1
  180. package/dist/org-C2RrBVQR.cjs +81 -0
  181. package/dist/org-xMytX--e.js +38 -0
  182. package/dist/orgAnalyticsConfig-BJ2A1RZ-.cjs +39 -0
  183. package/dist/orgAnalyticsConfig-ClrFy2qH.js +14 -0
  184. package/dist/pressedFloral-Bteoboms.js +661 -0
  185. package/dist/pressedFloral-CexgV-xy.cjs +661 -0
  186. package/dist/search-BMOAmrmY.js +459 -0
  187. package/dist/search-Df0Ifneg.cjs +672 -0
  188. package/dist/{search-filter-types-BNTLVXqQ.d.cts → search-filter-types-DosbseF3.d.cts} +1 -1
  189. package/dist/{search-filter-types-DkmH1TxJ.d.ts → search-filter-types-fZf91Pdw.d.ts} +1 -1
  190. package/dist/skinPerfection-BGzq9lq-.cjs +334 -0
  191. package/dist/skinPerfection-BlvcEcUE.js +334 -0
  192. package/dist/snapSupplements-CbbGzAgO.cjs +285 -0
  193. package/dist/snapSupplements-kcsPAOm9.js +285 -0
  194. package/dist/{socialProofClasses-ky69yppk.cjs → socialProofClasses-Db8gzsfi.cjs} +1 -1
  195. package/dist/{socialProofClasses-DdzG1tZy.js → socialProofClasses-kwDvwLOZ.js} +1 -1
  196. package/dist/spanx-B4WFA_rI.js +661 -0
  197. package/dist/spanx-BWoE4F8b.cjs +663 -0
  198. package/dist/spanxStaging-BOrOjhXn.js +845 -0
  199. package/dist/spanxStaging-BfdfIug4.cjs +848 -0
  200. package/dist/{suggestionBarV2-types-CwOXzIKq.js → suggestionBarV2-types-IMMOmCir.js} +1 -1
  201. package/dist/{suggestionBarV2-types-Dc4-zJlV.cjs → suggestionBarV2-types-nnGNgFvR.cjs} +1 -1
  202. package/dist/supergoop-22dd5_BS.js +323 -0
  203. package/dist/supergoop-B-a4cku2.cjs +323 -0
  204. package/dist/{test-types-CXVJxTeu.d.ts → test-types-C9b_OdfO.d.ts} +1 -1
  205. package/dist/{test-types-CuOq25VT.d.cts → test-types-CgVJtwUr.d.cts} +1 -1
  206. package/dist/types/index.cjs +2 -2
  207. package/dist/types/index.d.cts +2 -2
  208. package/dist/types/index.d.ts +2 -2
  209. package/dist/types/index.js +2 -2
  210. package/dist/types--pr1GQQx.js +154 -0
  211. package/dist/types-BVSyY3Hk.cjs +196 -0
  212. package/dist/{uniqueVintage-Cui74mlJ.js → uniqueVintage-CJXiNNe7.js} +19 -20
  213. package/dist/uniqueVintage-D0jzJWlo.cjs +1213 -0
  214. package/dist/useMessageInterceptor-B87e3yu3.cjs +33 -0
  215. package/dist/useMessageInterceptor-Bb7YRaWk.js +25 -0
  216. package/dist/userIdentityContext-BPqvVIg0.d.cts +20 -0
  217. package/dist/userIdentityContext-wbCRmlzp.d.ts +20 -0
  218. package/dist/utils-C9ZSCx12.js +888 -0
  219. package/dist/utils-D5HO61hG.cjs +1016 -0
  220. package/dist/variantInfo-DbVxA1yE.js +1 -0
  221. package/dist/variantInfo-orXoPBCU.cjs +0 -0
  222. package/dist/venaCbd-Bhhu_qUf.cjs +365 -0
  223. package/dist/venaCbd-CanovPS_.js +365 -0
  224. package/dist/westonJonBoucher-BC0x1ktI.cjs +422 -0
  225. package/dist/{westonJonBoucher-C95EuCl-.js → westonJonBoucher-BUu1_wP1.js} +19 -20
  226. package/dist/wineEnthusiast-BlCryfil.cjs +940 -0
  227. package/dist/{wineEnthusiast-DeTFY8Gm.js → wineEnthusiast-Ck1x5iJq.js} +19 -20
  228. package/dist/wolfMattress-D9Mjq-HP.js +372 -0
  229. package/dist/wolfMattress-JssghhC-.cjs +372 -0
  230. package/dist/wolfTactical-C6exYhL7.cjs +349 -0
  231. package/dist/wolfTactical-CnV3KQdI.js +349 -0
  232. package/package.json +101 -19
  233. package/src/{adapters/spiffy/commerce/api.ts → application/commerce-api.ts} +31 -23
  234. package/src/application/models/colorsConfig.ts +18 -18
  235. package/src/application/models/frontendConfig.ts +3 -3
  236. package/src/application/models/graphql/queries/getMerchantColorsQuery.ts +1 -1
  237. package/src/application/models/graphql/queries/getMerchantFrontendConfigQuery.ts +1 -1
  238. package/src/application/models/index.ts +0 -2
  239. package/src/application/models/localStorageEventListener.ts +2 -2
  240. package/src/application/models/supportedOrgs.ts +1 -1
  241. package/src/application/models/utils/snakeToCamelTransformer.ts +8 -8
  242. package/src/application/models/validators/validateGraphQLColorsConfig.ts +0 -21
  243. package/src/application/models/validators/validateGraphQLFrontendConfig.ts +2 -2
  244. package/src/application/utils/analyticsUtils.ts +53 -22
  245. package/src/application/utils/cdnUtils.ts +11 -0
  246. package/src/atoms/amplitude/amplitudeTrackEventAtom.ts +15 -0
  247. package/src/atoms/app/index.ts +7 -17
  248. package/src/atoms/app/variant.ts +13 -4
  249. package/src/atoms/chat/chatState.ts +28 -18
  250. package/src/atoms/chat/messageQueue.ts +36 -5
  251. package/src/atoms/chat/replies.ts +45 -37
  252. package/src/atoms/envive/enviveConfig.ts +10 -6
  253. package/src/atoms/org/graphqlConfig.ts +21 -4
  254. package/src/atoms/org/index.ts +7 -7
  255. package/src/atoms/org/newOrgConfigAtom.ts +8 -0
  256. package/src/atoms/org/orgPageConfig.ts +6 -5
  257. package/src/atoms/search/chatSearch.ts +11 -5
  258. package/src/atoms/search/searchAPI.ts +68 -48
  259. package/src/atoms/search/searchServiceAdapter.ts +25 -0
  260. package/src/contexts/amplitudeContext.tsx +466 -0
  261. package/src/contexts/cdnContext.tsx +48 -0
  262. package/src/contexts/chatContext.tsx +15 -12
  263. package/src/contexts/enviveConfigContext.tsx +22 -17
  264. package/src/contexts/enviveCssContext.tsx +34 -5
  265. package/src/contexts/featureFlagContext.tsx +193 -0
  266. package/src/contexts/featureFlagServiceContext.tsx +87 -0
  267. package/src/contexts/graphqlContext.tsx +165 -0
  268. package/src/contexts/index.ts +13 -3
  269. package/src/contexts/localStorageContext.tsx +159 -0
  270. package/src/contexts/newOrgConfigContext.tsx +104 -0
  271. package/src/contexts/orgConfigContext.tsx +92 -92
  272. package/src/contexts/searchContext.tsx +187 -0
  273. package/src/contexts/sessionStorageContext.tsx +80 -0
  274. package/src/contexts/shopifyUrlContext.tsx +97 -0
  275. package/src/contexts/types.ts +12 -8
  276. package/src/contexts/userIdentityContext.tsx +197 -0
  277. package/src/events/registerAnalyticsListeners.ts +32 -38
  278. package/src/hooks/index.ts +10 -6
  279. package/src/hooks/useAmplitudeOperations.ts +35 -0
  280. package/src/hooks/useAppDetails.ts +49 -0
  281. package/src/hooks/useCdnOperations.ts +16 -0
  282. package/src/hooks/useChatToggle.ts +5 -4
  283. package/src/hooks/useChatToggleAnalytics.ts +15 -0
  284. package/src/hooks/useGraphQLConfig.ts +63 -0
  285. package/src/hooks/useIdentifyUser.ts +33 -0
  286. package/src/hooks/useImageResolver.ts +18 -10
  287. package/src/hooks/useLocalStorageOperations.ts +92 -0
  288. package/src/hooks/useNewOrgConfig.ts +7 -0
  289. package/src/hooks/useSearch.tsx +21 -18
  290. package/src/hooks/useSearchOperations.ts +97 -0
  291. package/src/hooks/useSessionStorageOperations.ts +28 -0
  292. package/src/hooks/useShopifyUrlOperations.ts +45 -0
  293. package/src/hooks/useTrackComponentVisibleEvent.ts +12 -8
  294. package/src/hooks/useUpdateAnalyticsProps.ts +28 -17
  295. package/src/interceptors/index.ts +0 -1
  296. package/src/interceptors/useMessageInterceptor.ts +5 -8
  297. package/src/merchants/bandolier/bandolier.ts +10 -28
  298. package/src/merchants/carpe/carpe.ts +5 -8
  299. package/src/merchants/coterie/coterie.ts +3 -6
  300. package/src/merchants/default.ts +73 -70
  301. package/src/merchants/domInsertion.ts +30 -0
  302. package/src/merchants/dreamlandBaby/dreamlandBaby.ts +12 -6
  303. package/src/merchants/fiveCbd/fiveCbd.ts +7 -13
  304. package/src/merchants/forLoveAndLemons/forLoveAndLemons.ts +44 -14
  305. package/src/merchants/greenpan/greenpan.ts +6 -12
  306. package/src/merchants/gridInsertion.ts +19 -0
  307. package/src/merchants/grooveLife/grooveLife.ts +13 -7
  308. package/src/merchants/homegrownCannabis/homegrownCannabis.ts +12 -6
  309. package/src/merchants/jackArcher/jackArcher.ts +26 -11
  310. package/src/merchants/jordanCraig/jordanCraig.ts +5 -5
  311. package/src/merchants/kindredBravely/kindredBravely.ts +16 -7
  312. package/src/merchants/kutFromTheKloth/kutFromTheKloth.ts +9 -6
  313. package/src/merchants/larryAndSerges/larryAndSerges.ts +6 -2
  314. package/src/merchants/leapsAndRebounds/leapsAndRebounds.ts +7 -7
  315. package/src/merchants/longevityrx/longevityrx.ts +14 -8
  316. package/src/merchants/lookOptic/lookOptic.ts +6 -6
  317. package/src/merchants/mantraBrand/mantraBrand.ts +14 -8
  318. package/src/merchants/medterra/medterra.ts +14 -11
  319. package/src/merchants/modells/modells.ts +6 -9
  320. package/src/merchants/pressedFloral/pressedFloral.ts +7 -13
  321. package/src/merchants/skinPerfection/skinPerfection.ts +13 -7
  322. package/src/merchants/snapSupplements/snapSupplements.ts +13 -10
  323. package/src/merchants/spanx/spanx.ts +6 -6
  324. package/src/merchants/spanx/spanxStaging.ts +6 -12
  325. package/src/merchants/supergoop/supergoop.ts +11 -12
  326. package/src/merchants/uniqueVintage/uniqueVintage.ts +6 -6
  327. package/src/merchants/venaCbd/venaCbd.ts +6 -9
  328. package/src/merchants/westonJonBoucher/westonJonBoucher.ts +6 -6
  329. package/src/merchants/wineEnthusiast/wineEnthusiast.ts +6 -6
  330. package/src/merchants/wolfMattress/wolfMattress.ts +3 -3
  331. package/src/merchants/wolfTactical/wolfTactical.ts +5 -11
  332. package/src/types/config-versions.ts +6 -0
  333. package/src/types.ts +0 -53
  334. package/dist/adapters/amplitude/index.cjs +0 -14
  335. package/dist/adapters/amplitude/index.d.cts +0 -6
  336. package/dist/adapters/amplitude/index.d.ts +0 -6
  337. package/dist/adapters/amplitude/index.js +0 -12
  338. package/dist/api-B2euFL-5.cjs +0 -269
  339. package/dist/api-XRr_lAG6.js +0 -190
  340. package/dist/application/config/index.cjs +0 -43
  341. package/dist/application/config/index.d.cts +0 -15
  342. package/dist/application/config/index.d.ts +0 -15
  343. package/dist/application/config/index.js +0 -41
  344. package/dist/application/service/customerService/index.cjs +0 -4
  345. package/dist/application/service/customerService/index.d.cts +0 -3
  346. package/dist/application/service/customerService/index.d.ts +0 -3
  347. package/dist/application/service/customerService/index.js +0 -4
  348. package/dist/application/service/index.cjs +0 -41
  349. package/dist/application/service/index.d.cts +0 -399
  350. package/dist/application/service/index.d.ts +0 -399
  351. package/dist/application/service/index.js +0 -12
  352. package/dist/bandolier-B76-OE75.cjs +0 -1230
  353. package/dist/bandolier-DRn_x1g1.js +0 -1230
  354. package/dist/carpe-kHi4RLB5.cjs +0 -608
  355. package/dist/carpe-qrSU99gq.js +0 -606
  356. package/dist/contexts-CQDwe3rK.cjs +0 -14333
  357. package/dist/contexts-e2sM-B9g.js +0 -12919
  358. package/dist/coterie-mMirPcHP.js +0 -240
  359. package/dist/customerService-BG1uNZZ1.cjs +0 -36
  360. package/dist/customerService-BHQRnLhC.js +0 -23
  361. package/dist/default-8Jfv8ehQ.cjs +0 -199
  362. package/dist/default-C8PQf-38.js +0 -176
  363. package/dist/default-LukSiCz1.js +0 -4
  364. package/dist/default-rJSJ887P.cjs +0 -4
  365. package/dist/dreamlandBaby-DHltv12Z.cjs +0 -347
  366. package/dist/dreamlandBaby-cG0HM9bt.js +0 -347
  367. package/dist/featureFlagService-5wdmW02z.d.ts +0 -18
  368. package/dist/featureFlagService-DaelrXEk.d.cts +0 -18
  369. package/dist/fiveCbd-Cvnwh03g.cjs +0 -614
  370. package/dist/fiveCbd-DhYMlsf9.js +0 -614
  371. package/dist/forLoveAndLemons-C8DuUexW.js +0 -666
  372. package/dist/forLoveAndLemons-DR6a1zjJ.cjs +0 -668
  373. package/dist/greenpan-B4Pu65kV.js +0 -398
  374. package/dist/greenpan-BL5p6j7f.cjs +0 -398
  375. package/dist/grooveLife-DjKWHoN3.cjs +0 -343
  376. package/dist/grooveLife-JK0TyaPz.js +0 -343
  377. package/dist/homegrownCannabis-DxqSDkmS.js +0 -411
  378. package/dist/homegrownCannabis-ZnfCqW-m.cjs +0 -411
  379. package/dist/index-BfuO9b0Q.d.ts +0 -749
  380. package/dist/index-CNsGWfS6.d.cts +0 -749
  381. package/dist/index-DFL1dIT_.d.ts +0 -7
  382. package/dist/index-MFbPQ8Ji.d.ts +0 -95
  383. package/dist/index-VSFakgAI.d.cts +0 -95
  384. package/dist/index-zZjcds15.d.cts +0 -7
  385. package/dist/jackArcher-mGkojXek.cjs +0 -728
  386. package/dist/jordanCraig-BvCvPRoR.js +0 -1787
  387. package/dist/jordanCraig-Dv8pVCiS.cjs +0 -1787
  388. package/dist/kindredBravely-UQP7wiNu.cjs +0 -491
  389. package/dist/kindredBravely-X8F_LNph.js +0 -491
  390. package/dist/kutFromTheKloth-BhYKk3CN.cjs +0 -370
  391. package/dist/kutFromTheKloth-D1xsTSJr.js +0 -370
  392. package/dist/larryAndSerges-1411NuZa.cjs +0 -262
  393. package/dist/larryAndSerges-DVIRLItu.js +0 -262
  394. package/dist/leapsAndRebounds-BJ8mwr33.js +0 -361
  395. package/dist/leapsAndRebounds-UcP9EJVO.cjs +0 -361
  396. package/dist/logger-Dln20ans.cjs +0 -26
  397. package/dist/logger-pdEEY8T2.js +0 -20
  398. package/dist/longevityrx-BFSv9GF5.cjs +0 -321
  399. package/dist/longevityrx-Cp6wleWr.js +0 -321
  400. package/dist/lookOptic-KieSqskd.cjs +0 -283
  401. package/dist/mantraBrand-CHQw-0nw.cjs +0 -751
  402. package/dist/medterra-CLG6Co1C.cjs +0 -584
  403. package/dist/medterra-D8ZX9NZC.js +0 -584
  404. package/dist/modells-BzyPwN2m.cjs +0 -485
  405. package/dist/modells-CAfqOCW4.js +0 -485
  406. package/dist/orgConfigResults--dAwtw3W.d.ts +0 -881
  407. package/dist/orgConfigResults-BL0XBA6x.d.cts +0 -881
  408. package/dist/pressedFloral-DULBuQwR.cjs +0 -662
  409. package/dist/pressedFloral-Dp-7Fk3S.js +0 -662
  410. package/dist/skinPerfection-BxuYCeJX.js +0 -335
  411. package/dist/skinPerfection-Cd3XZ6By.cjs +0 -335
  412. package/dist/snapSupplements-Bf6htPM0.js +0 -286
  413. package/dist/snapSupplements-ZFnXyMuZ.cjs +0 -286
  414. package/dist/spanx-CwDPQaGj.js +0 -662
  415. package/dist/spanx-Cyd4qDlK.cjs +0 -664
  416. package/dist/spanxStaging-D43nyAGy.js +0 -846
  417. package/dist/spanxStaging-ijbYnHzr.cjs +0 -849
  418. package/dist/supergoop-BnbFG7hm.cjs +0 -338
  419. package/dist/supergoop-CY043wIg.js +0 -336
  420. package/dist/types-BF_CJeck.js +0 -177
  421. package/dist/types-CD4LFta-.d.cts +0 -33
  422. package/dist/types-CNH4sfF-.cjs +0 -231
  423. package/dist/types-DBdI0j89.d.ts +0 -33
  424. package/dist/uniqueVintage-R2Jcu1y1.cjs +0 -1214
  425. package/dist/variant-CKVRF2-W.d.ts +0 -13
  426. package/dist/variant-raYuOP4L.d.cts +0 -13
  427. package/dist/venaCbd-o5_vOp4e.js +0 -366
  428. package/dist/venaCbd-r-IxEVc1.cjs +0 -366
  429. package/dist/westonJonBoucher-DjGEW3ZB.cjs +0 -423
  430. package/dist/wineEnthusiast-DvfcV5B3.cjs +0 -941
  431. package/dist/wolfMattress-6xPfOJt3.js +0 -373
  432. package/dist/wolfMattress-BjGnGKjP.cjs +0 -373
  433. package/dist/wolfTactical-Bi3WZu0m.cjs +0 -350
  434. package/dist/wolfTactical-C_F9-oPX.js +0 -350
  435. package/src/adapters/amplitude/amplitudeAdapter.ts +0 -477
  436. package/src/adapters/amplitude/index.ts +0 -2
  437. package/src/adapters/amplitude/stubAmplitudeAdapter.ts +0 -34
  438. package/src/adapters/spiffy/commerce/graphql.ts +0 -219
  439. package/src/application/config/generalStaticConfig.ts +0 -40
  440. package/src/application/config/index.ts +0 -1
  441. package/src/application/models/domMutationContinuation.ts +0 -7
  442. package/src/application/models/domObservationStrategy.ts +0 -9
  443. package/src/application/service/cachingService.ts +0 -84
  444. package/src/application/service/cdnService.ts +0 -20
  445. package/src/application/service/customerService/index.ts +0 -8
  446. package/src/application/service/customerService/providers/UnsupportedCustomerService.ts +0 -15
  447. package/src/application/service/domMutationObserver.ts +0 -320
  448. package/src/application/service/domMutations/GridInsertionService.ts +0 -123
  449. package/src/application/service/domMutations/dataLayer/dataLayerEventsListener.ts +0 -99
  450. package/src/application/service/domMutations/domInsertionService.ts +0 -90
  451. package/src/application/service/domMutations/domMutationListener.ts +0 -15
  452. package/src/application/service/domMutations/domMutationListenerState.ts +0 -52
  453. package/src/application/service/domMutations/floatingChat/embeddedChatsPlacementsListener.ts +0 -41
  454. package/src/application/service/domMutations/gladly/gladlyListener.ts +0 -61
  455. package/src/application/service/domMutations/spiffy/orgs/common/kustomerVisibilityListener.ts +0 -41
  456. package/src/application/service/domMutations/spiffy/orgs/common/orgsCommonDataLayerListener.ts +0 -119
  457. package/src/application/service/featureFlagService.ts +0 -130
  458. package/src/application/service/index.ts +0 -31
  459. package/src/application/service/kustomerIntegrationService.ts +0 -111
  460. package/src/application/service/localStorageService.ts +0 -77
  461. package/src/application/service/pageVariantService.ts +0 -866
  462. package/src/application/service/searchService.ts +0 -147
  463. package/src/application/service/sessionStorageService.ts +0 -27
  464. package/src/application/service/shopifyUrlService.ts +0 -63
  465. package/src/application/service/userIdentityService.ts +0 -114
  466. package/src/application/service/windowChatToggleService.ts +0 -80
  467. package/src/application/service/windowDataLayerService.ts +0 -181
  468. package/src/application/service/windowFrontendConfigService.ts +0 -129
  469. package/src/atoms/org/merchantCss.ts +0 -158
  470. package/src/atoms/org/org.ts +0 -291
  471. package/src/atoms/org/orgUIConfig.ts +0 -142
  472. package/src/enabled-features.ts +0 -83
  473. package/src/hooks/useDynamicVariants.ts +0 -210
  474. package/src/hooks/useFileUpload.ts +0 -63
  475. package/src/hooks/useHideElements.ts +0 -82
  476. package/src/hooks/useHorizontalScrollAnimation.ts +0 -115
  477. package/src/hooks/useReducedMotionWithOverride.ts +0 -15
  478. package/src/hooks/useSnapControl.ts +0 -155
  479. package/src/interceptors/useFormEscalation.ts +0 -57
  480. /package/dist/{variantInfo-CzhR5W6h.js → atomStore-CZnUUsrr.js} +0 -0
  481. /package/dist/{variantInfo-CNRTY0gH.cjs → atomStore-KSoFS3Jj.cjs} +0 -0
  482. /package/dist/{utilityTypes-C4h2wgAK.cjs → locators-0YYZu9n4.cjs} +0 -0
  483. /package/dist/{utilityTypes-BVikejDo.js → locators-fBXS_pxP.js} +0 -0
  484. /package/dist/{locators-Dc5ZT0aF.js → utilityTypes-8sETsYPk.js} +0 -0
  485. /package/dist/{locators-lQMJj830.cjs → utilityTypes-COShxVir.cjs} +0 -0
  486. /package/src/{application/service/customerService/types.ts → types/customerService.ts} +0 -0
  487. /package/src/{adapters/spiffy/commerce → types}/exceptions/sessionExceptions.ts +0 -0
  488. /package/src/{adapters/spiffy/commerce → types}/exceptions/unsupportedProductExceptions.ts +0 -0
@@ -1,51 +1,59 @@
1
- import { atom } from 'jotai';
2
- import { Message, MessageType } from 'src/application/models';
1
+ import { atom } from "jotai";
2
+ import { Message, MessageType } from "src/application/models";
3
3
  import {
4
4
  userHasRepliedAtom,
5
5
  messagesAtom,
6
6
  userQueryAtom,
7
7
  replyEventCategoryAtom,
8
- } from 'src/atoms/chat';
9
- import { UserEventCategory } from '@spiffy-ai/commerce-api-client';
10
- import { AmplitudeAdapter, SpiffyMetricsEventName } from 'src/adapters/amplitude';
11
- import { queueUserEventAtom } from './messageQueue';
8
+ } from "src/atoms/chat";
9
+ import { UserEventCategory } from "@spiffy-ai/commerce-api-client";
10
+ import { queueUserEventAtom } from "./messageQueue";
11
+ import { SpiffyMetricsEventName } from "src/contexts/amplitudeContext";
12
+ import { amplitudeTrackEventAtom } from "src/atoms/amplitude/amplitudeTrackEventAtom";
12
13
 
13
14
  type HandleReplyParams = {
14
15
  message: Message;
15
16
  userTyped: boolean;
16
17
  };
17
18
 
18
- export const handleReplyAtom = atom(null, (get, set, { message, userTyped }: HandleReplyParams) => {
19
- if (message.type !== MessageType.QueryTyped) {
20
- return;
21
- }
19
+ export const handleReplyAtom = atom(
20
+ null,
21
+ (get, set, { message, userTyped }: HandleReplyParams) => {
22
+ if (message.type !== MessageType.QueryTyped) {
23
+ return;
24
+ }
22
25
 
23
- const queryTyped = message.metadata.content;
26
+ const trackEvent = get(amplitudeTrackEventAtom);
27
+ const queryTyped = message.metadata.content;
24
28
 
25
- set(replyEventCategoryAtom, UserEventCategory.QueryTyped);
26
- set(userQueryAtom, queryTyped);
27
- set(messagesAtom, [...get(messagesAtom), [message]]);
28
- set(userHasRepliedAtom, true);
29
- set(queueUserEventAtom, {
30
- eventId: message.id,
31
- createdAt: message.createdAt,
32
- category: UserEventCategory.QueryTyped,
33
- attributes: {
34
- query: queryTyped,
35
- },
36
- });
37
- AmplitudeAdapter.trackEvent({
38
- eventName: SpiffyMetricsEventName.ChatUserMessageInput,
39
- eventProps: {
40
- message_id: message.id,
41
- message_role: message.role,
42
- message_type: message.type,
43
- message_metadata: {
44
- content: AmplitudeAdapter.amplitudeSafeString(message?.metadata?.content),
45
- created_at: message.createdAt,
46
- user_typed: userTyped,
29
+ set(replyEventCategoryAtom, UserEventCategory.QueryTyped);
30
+ set(userQueryAtom, queryTyped);
31
+ set(messagesAtom, [...get(messagesAtom), [message]]);
32
+ set(userHasRepliedAtom, true);
33
+ set(queueUserEventAtom, {
34
+ eventId: message.id,
35
+ createdAt: message.createdAt,
36
+ category: UserEventCategory.QueryTyped,
37
+ attributes: {
38
+ query: queryTyped,
47
39
  },
48
- },
49
- alsoSendToGoogleAnalytics: true,
50
- });
51
- });
40
+ });
41
+
42
+ if (trackEvent) {
43
+ trackEvent({
44
+ eventName: SpiffyMetricsEventName.ChatUserMessageInput,
45
+ eventProps: {
46
+ message_id: message.id,
47
+ message_role: message.role,
48
+ message_type: message.type,
49
+ message_metadata: {
50
+ content: message?.metadata?.content, // Removed amplitudeSafeString
51
+ created_at: message.createdAt,
52
+ user_typed: userTyped,
53
+ },
54
+ },
55
+ alsoSendToGoogleAnalytics: true,
56
+ });
57
+ }
58
+ }
59
+ );
@@ -2,7 +2,7 @@ import Logger from "src/application/logging/logger";
2
2
  import { atom } from "jotai";
3
3
  import { EnviveConfig } from "src/contexts/types";
4
4
  import { ContextSourceEnum } from "@spiffy-ai/commerce-api-client";
5
- import { LocalStorageService } from "src/application/service";
5
+ import { LocalStorageKeys } from "src/contexts/localStorageContext";
6
6
 
7
7
  const internalEnviveConfigAtom = atom<EnviveConfig | undefined>(undefined);
8
8
 
@@ -48,15 +48,13 @@ export const cdnUrlAtom = atom((get) => {
48
48
  export const contextSourceAtom = atom((get) => {
49
49
  const config = get(enviveConfigAtom);
50
50
 
51
- if (window.IS_STORYBOOK) {
52
- return ContextSourceEnum.Test;
53
- }
54
-
55
51
  if (config?.contextSource) {
56
52
  return config.contextSource as ContextSourceEnum;
57
53
  }
58
54
 
59
- const spiffyOnFeatureFlagSet = LocalStorageService.getSpiffyOnFeatureFlag();
55
+ const spiffyOnFeatureFlagSet = window.localStorage.getItem(
56
+ LocalStorageKeys.SpiffyOnOverride
57
+ );
60
58
  if (spiffyOnFeatureFlagSet === "true") {
61
59
  return ContextSourceEnum.Playground;
62
60
  }
@@ -79,3 +77,9 @@ export const identifyingPrefixAtom = atom((get) => {
79
77
  Logger.logDebug("enviveConfig.ts: Accessing identifyingPrefix", config);
80
78
  return config?.identifyingPrefix || "spiffy";
81
79
  });
80
+
81
+ export const publicKeyAtom = atom((get) => {
82
+ const config = get(enviveConfigAtom);
83
+ Logger.logDebug("enviveConfig.ts: Accessing publicKey", config);
84
+ return config?.publicKey;
85
+ });
@@ -2,15 +2,21 @@ import { atom } from "jotai";
2
2
  import { ColorMapping } from "src/application/models/colorsConfig";
3
3
  import { FrontendConfig } from "src/application/models/frontendConfig";
4
4
  import { getOrgInfo } from "src/application/models/supportedOrgs";
5
- import { orgShortNameAtom } from "src/atoms/org/org";
5
+ import { orgShortNameAtom } from "../envive/enviveConfig";
6
+ import { FeatureFlagContextType } from "src/contexts/featureFlagServiceContext"; // Import FeatureFlagContextType from new context
6
7
 
7
- const internalGraphQLColorsConfigAtom = atom<ColorMapping | undefined>(
8
+ export const internalGraphQLColorsConfigAtom = atom<ColorMapping | undefined>(
8
9
  undefined
9
10
  );
10
11
  const internalGraphQLFrontendConfigAtom = atom<FrontendConfig | undefined>(
11
12
  undefined
12
13
  );
13
14
 
15
+ export const orgIdAtom = atom<string | undefined>(undefined); // New atom for orgId
16
+ export const featureFlagServiceAtom = atom<FeatureFlagContextType | undefined>(
17
+ undefined
18
+ ); // New atom for FeatureFlagService
19
+
14
20
  export const colorsConfigAtom = atom(
15
21
  async (get) => {
16
22
  const colors = get(internalGraphQLColorsConfigAtom);
@@ -21,7 +27,7 @@ export const colorsConfigAtom = atom(
21
27
  const orgInfo = await getOrgInfo(orgShortName);
22
28
  const orgUIConfigColors = orgInfo.orgColors();
23
29
 
24
- // Only merge if orgUIConfigColors is a proper ColorMapping, not an empty object
30
+ // If we have GraphQL colors, merge them with org colors (GraphQL takes priority)
25
31
  if (
26
32
  colors &&
27
33
  orgUIConfigColors &&
@@ -30,7 +36,18 @@ export const colorsConfigAtom = atom(
30
36
  return { ...orgUIConfigColors, ...colors } as ColorMapping;
31
37
  }
32
38
 
33
- return colors;
39
+ // If we have GraphQL colors but no org colors, return GraphQL colors
40
+ if (colors) {
41
+ return colors;
42
+ }
43
+
44
+ // If we have org colors but no GraphQL colors, return org colors
45
+ if (orgUIConfigColors && Object.keys(orgUIConfigColors).length > 0) {
46
+ return orgUIConfigColors as ColorMapping;
47
+ }
48
+
49
+ // Fallback to undefined if neither are available
50
+ return undefined;
34
51
  },
35
52
  (_, set, value: ColorMapping | undefined) => {
36
53
  set(internalGraphQLColorsConfigAtom, value);
@@ -1,7 +1,7 @@
1
- export * from './customerService';
2
- export * from './graphqlConfig';
3
- export * from './merchantCss';
4
- export * from './org';
5
- export * from './orgAnalyticsConfig';
6
- export * from './orgPageConfig';
7
- export * from './orgUIConfig';
1
+ export * from "./customerService";
2
+ export * from "./graphqlConfig";
3
+ // export * from "./org";
4
+ export * from "./orgAnalyticsConfig";
5
+ export * from "./orgPageConfig";
6
+ export * from "./newOrgConfigAtom";
7
+ // export * from "./orgUIConfig";
@@ -0,0 +1,8 @@
1
+ import { atom } from "jotai";
2
+ import { BasicOrgInfoType } from "src/application/models";
3
+ import { GraphQlConfigValues } from "src/contexts";
4
+ import { NewOrgConfigContextType } from "src/contexts/newOrgConfigContext";
5
+
6
+ export const newOrgConfigAtom = atom<
7
+ (GraphQlConfigValues & BasicOrgInfoType) | null
8
+ >(null);
@@ -1,18 +1,19 @@
1
1
  import { atom } from "jotai";
2
2
  import { getOrgInfo } from "src/application/models";
3
3
  import { frontendConfigAtom } from "src/atoms/org/graphqlConfig";
4
- import { orgConfigAtom } from "src/atoms/org/org";
4
+ import { enviveConfigAtom } from "src/atoms/envive/enviveConfig";
5
5
  import { PageVariantConfig } from "src/contexts/types";
6
6
 
7
7
  const internalInjectedPageVariantsAtom = atom<PageVariantConfig[]>([]);
8
8
 
9
9
  export const orgPageConfigAtom = atom(
10
10
  async (get) => {
11
- const orgConfig = get(orgConfigAtom);
12
- if (!orgConfig) {
13
- throw new Error("orgConfig is not available");
11
+ const enviveConfig = get(enviveConfigAtom);
12
+ const orgShortName = enviveConfig?.orgShortName;
13
+ if (!orgShortName) {
14
+ throw new Error("orgShortName is not available from enviveConfig");
14
15
  }
15
- const orgInfo = await getOrgInfo(orgConfig.org.org.shortName);
16
+ const orgInfo = await getOrgInfo(orgShortName);
16
17
  const frontendConfig = get(frontendConfigAtom);
17
18
  const injectedPageVariants = get(internalInjectedPageVariantsAtom);
18
19
  const localOrgPageConfig = orgInfo.orgPageConfig();
@@ -14,7 +14,7 @@ import {
14
14
  userQueryAtom,
15
15
  } from "src/atoms/chat";
16
16
  import { queueUserEventAtom } from "../chat/messageQueue";
17
- import { orgUIConfigAtom } from "../org";
17
+ import { newOrgConfigAtom } from "../org";
18
18
  import { ProductFilters } from "./productFilters";
19
19
  import { ProductSorter } from "./productSorter";
20
20
  import { ChatSearchStateType, ProductSorting } from "./types";
@@ -75,8 +75,11 @@ const buildChatSearchTurn = (
75
75
  };
76
76
 
77
77
  const chatSearchFilterConfigAtom = atom((get) => {
78
- const orgUIConfig = get(orgUIConfigAtom);
79
- return orgUIConfig?.searchConfig?.searchFilterConfig || [];
78
+ const newOrgConfig = get(newOrgConfigAtom);
79
+ return (
80
+ newOrgConfig?.frontendConfig?.uiConfigs?.searchConfig?.searchFilterConfig ||
81
+ []
82
+ );
80
83
  });
81
84
 
82
85
  const searchMapAtom = atom((get) => {
@@ -107,8 +110,11 @@ export const selectedFilterOptionsAtom = atom<SelectedChatSearchFilterOption[]>(
107
110
  );
108
111
 
109
112
  export const additiveDynamicFiltersAtom = atom((get) => {
110
- const orgUIConfig = get(orgUIConfigAtom);
111
- return orgUIConfig?.searchConfig?.additiveDynamicFilters ?? false;
113
+ const newOrgConfig = get(newOrgConfigAtom);
114
+ return (
115
+ newOrgConfig?.frontendConfig?.uiConfigs?.searchConfig
116
+ ?.additiveDynamicFilters ?? false
117
+ );
112
118
  });
113
119
 
114
120
  export const createChatSearchFilterOption = (
@@ -1,10 +1,10 @@
1
- import { atom } from 'jotai';
2
- import { SearchResult, SearchParams } from 'src/application/models/api/search';
3
- import SearchService from 'src/application/service/searchService';
4
- import { ProductSorting } from './types';
5
- import { ProductFilters } from './productFilters';
6
- import { ProductSorter } from './productSorter';
7
- import { orgUIConfigAtom } from '../org';
1
+ import { atom } from "jotai";
2
+ import { SearchResult, SearchParams } from "src/application/models/api/search";
3
+ import { ProductSorting } from "./types";
4
+ import { ProductFilters } from "./productFilters";
5
+ import { ProductSorter } from "./productSorter";
6
+ import { newOrgConfigAtom } from "../org";
7
+ import { getSearchServiceFunction } from "./searchServiceAdapter";
8
8
 
9
9
  export type SelectedFilterOption = {
10
10
  id: string; // "filterId:filterItemId" - maintains backward compatibility for comparisons
@@ -27,13 +27,15 @@ export const searchAtom = atom<SearchState>({
27
27
  lastQuery: null,
28
28
  });
29
29
 
30
- export const searchProductSortingAtom = atom<ProductSorting>(ProductSorting.FEATURED);
30
+ export const searchProductSortingAtom = atom<ProductSorting>(
31
+ ProductSorting.FEATURED
32
+ );
31
33
  export const searchSelectedFiltersAtom = atom<SelectedFilterOption[]>([]);
32
34
 
33
35
  export const createFilterOption = (
34
36
  filterId: string,
35
37
  filterItemId: string,
36
- displayName: string,
38
+ displayName: string
37
39
  ): SelectedFilterOption => ({
38
40
  id: `${filterId}:${filterItemId}`,
39
41
  displayName,
@@ -53,7 +55,7 @@ export const searchParamsAtom = atom(
53
55
  (get) => get(internalSearchParamsAtom),
54
56
  (_, set, value: { id: string | null; query: string | null }) => {
55
57
  set(internalSearchParamsAtom, value);
56
- },
58
+ }
57
59
  );
58
60
  export const internalSearchSystemStateAtom = atom<boolean>(false);
59
61
 
@@ -65,9 +67,9 @@ export const searchSystemAtom = atom(
65
67
  }
66
68
  const stateChangeHandler = () => {
67
69
  const params = new URLSearchParams(window.location.search);
68
- if (params.get('es') === 'true') {
69
- const id = params.get('esi');
70
- const query = params.get('esq');
70
+ if (params.get("es") === "true") {
71
+ const id = params.get("esi");
72
+ const query = params.get("esq");
71
73
  set(searchParamsAtom, { id, query });
72
74
  } else {
73
75
  set(searchParamsAtom, { id: null, query: null });
@@ -75,29 +77,33 @@ export const searchSystemAtom = atom(
75
77
  };
76
78
  if (value) {
77
79
  set(internalSearchSystemStateAtom, true);
78
- window.addEventListener('popstate', stateChangeHandler);
80
+ window.addEventListener("popstate", stateChangeHandler);
79
81
  // Also trigger the hash change handler to set the initial state
80
82
  stateChangeHandler();
81
83
  } else {
82
84
  set(internalSearchSystemStateAtom, false);
83
- window.removeEventListener('popstate', stateChangeHandler);
85
+ window.removeEventListener("popstate", stateChangeHandler);
84
86
  }
85
- },
87
+ }
86
88
  );
87
89
 
88
90
  export const filteredSearchProductsAtom = atom((get) => {
89
91
  const searchData = get(searchAtom).data;
90
92
  const sorting = get(searchProductSortingAtom);
91
93
  const selectedFilters = get(searchSelectedFiltersAtom);
92
- const orgConfig = get(orgUIConfigAtom);
94
+ const newOrgConfig = get(newOrgConfigAtom);
93
95
 
94
- if (!searchData?.products) return [];
96
+ if (
97
+ !searchData?.products ||
98
+ !newOrgConfig?.frontendConfig?.uiConfigs?.searchConfig
99
+ )
100
+ return [];
95
101
 
96
102
  const filteredProducts = ProductFilters.filterProducts(
97
103
  searchData.products,
98
- orgConfig.searchConfig.searchFilterConfig,
104
+ newOrgConfig.frontendConfig.uiConfigs.searchConfig.searchFilterConfig,
99
105
  selectedFilters,
100
- orgConfig.searchConfig.additiveDynamicFilters,
106
+ newOrgConfig.frontendConfig.uiConfigs.searchConfig.additiveDynamicFilters
101
107
  );
102
108
 
103
109
  return ProductSorter.sort(filteredProducts, sorting);
@@ -106,31 +112,41 @@ export const filteredSearchProductsAtom = atom((get) => {
106
112
  export const searchFiltersAtom = atom((get) => {
107
113
  const searchData = get(searchAtom).data;
108
114
  const selectedFilters = get(searchSelectedFiltersAtom);
109
- const orgConfig = get(orgUIConfigAtom);
115
+ const newOrgConfig = get(newOrgConfigAtom);
110
116
 
111
- if (!searchData?.products) return [];
117
+ if (
118
+ !searchData?.products ||
119
+ !newOrgConfig?.frontendConfig?.uiConfigs?.searchConfig
120
+ )
121
+ return [];
112
122
 
113
123
  return ProductFilters.getFiltersForProducts(
114
124
  searchData.products,
115
- orgConfig.searchConfig.searchFilterConfig,
116
- selectedFilters,
125
+ newOrgConfig.frontendConfig.uiConfigs.searchConfig.searchFilterConfig,
126
+ selectedFilters
117
127
  );
118
128
  });
119
129
 
120
- export const addSearchFilterAtom = atom(null, (get, set, filter: SelectedFilterOption) => {
121
- const current = get(searchSelectedFiltersAtom);
122
- if (!current.some((f) => f.id === filter.id)) {
123
- set(searchSelectedFiltersAtom, [...current, filter]);
130
+ export const addSearchFilterAtom = atom(
131
+ null,
132
+ (get, set, filter: SelectedFilterOption) => {
133
+ const current = get(searchSelectedFiltersAtom);
134
+ if (!current.some((f) => f.id === filter.id)) {
135
+ set(searchSelectedFiltersAtom, [...current, filter]);
136
+ }
124
137
  }
125
- });
138
+ );
126
139
 
127
- export const removeSearchFilterAtom = atom(null, (get, set, filterId: string) => {
128
- const current = get(searchSelectedFiltersAtom);
129
- set(
130
- searchSelectedFiltersAtom,
131
- current.filter((f) => f.id !== filterId),
132
- );
133
- });
140
+ export const removeSearchFilterAtom = atom(
141
+ null,
142
+ (get, set, filterId: string) => {
143
+ const current = get(searchSelectedFiltersAtom);
144
+ set(
145
+ searchSelectedFiltersAtom,
146
+ current.filter((f) => f.id !== filterId)
147
+ );
148
+ }
149
+ );
134
150
 
135
151
  export const clearSearchFiltersAtom = atom(null, (_, set) => {
136
152
  set(searchSelectedFiltersAtom, []);
@@ -140,29 +156,31 @@ export const performSearchAtom = atom(
140
156
  null,
141
157
  async (get, set, params: SearchParams, allowRedirect = false) => {
142
158
  const currentState = get(searchAtom);
143
- const orgUIConfig = get(orgUIConfigAtom);
144
- const redirectSearchResultsUrl = orgUIConfig.searchConfig?.redirectSearchResultsUrl;
159
+ const newOrgConfig = get(newOrgConfigAtom);
160
+ const redirectSearchResultsUrl =
161
+ newOrgConfig?.frontendConfig?.uiConfigs?.searchConfig
162
+ ?.redirectSearchResultsUrl;
145
163
 
146
164
  if (allowRedirect && redirectSearchResultsUrl) {
147
165
  const redirectUrl = new URL(redirectSearchResultsUrl);
148
- redirectUrl.searchParams.set('es', 'true');
149
- redirectUrl.searchParams.set('esq', params.query);
166
+ redirectUrl.searchParams.set("es", "true");
167
+ redirectUrl.searchParams.set("esq", params.query);
150
168
  window.location.href = redirectUrl.toString();
151
169
  } else {
152
170
  // Update URL and manually trigger state change (since pushState doesn't trigger popstate)
153
171
  const url = new URL(window.location.href);
154
- url.searchParams.set('es', 'true');
155
- url.searchParams.set('esq', params.query);
156
- window.history.pushState({}, '', url);
172
+ url.searchParams.set("es", "true");
173
+ url.searchParams.set("esq", params.query);
174
+ window.history.pushState({}, "", url);
157
175
 
158
176
  // Manually trigger page variant re-evaluation by dispatching a popstate event
159
177
  // This ensures the page variant system detects the URL change and mounts search results
160
- window.dispatchEvent(new PopStateEvent('popstate', { state: {} }));
178
+ window.dispatchEvent(new PopStateEvent("popstate", { state: {} }));
161
179
  }
162
180
 
163
181
  // Manually trigger page variant re-evaluation by dispatching a popstate event
164
182
  // This ensures the page variant system detects the URL change and mounts search results
165
- window.dispatchEvent(new PopStateEvent('popstate', { state: {} }));
183
+ window.dispatchEvent(new PopStateEvent("popstate", { state: {} }));
166
184
  if (currentState.loading) {
167
185
  return; // Prevent concurrent searches
168
186
  }
@@ -174,7 +192,8 @@ export const performSearchAtom = atom(
174
192
  lastQuery: params.query,
175
193
  });
176
194
  try {
177
- const result = await SearchService.searchProducts(params);
195
+ const searchServiceFunction = getSearchServiceFunction();
196
+ const result = await searchServiceFunction(params);
178
197
  set(searchAtom, {
179
198
  data: result,
180
199
  loading: false,
@@ -182,7 +201,8 @@ export const performSearchAtom = atom(
182
201
  lastQuery: params.query,
183
202
  });
184
203
  } catch (error: unknown) {
185
- const errorMessage = error instanceof Error ? error.message : 'An unknown error occurred';
204
+ const errorMessage =
205
+ error instanceof Error ? error.message : "An unknown error occurred";
186
206
  set(searchAtom, {
187
207
  data: null,
188
208
  loading: false,
@@ -190,5 +210,5 @@ export const performSearchAtom = atom(
190
210
  lastQuery: params.query,
191
211
  });
192
212
  }
193
- },
213
+ }
194
214
  );
@@ -0,0 +1,25 @@
1
+ import { SearchResult, SearchParams } from "src/application/models/api/search";
2
+
3
+ // This will be set by the SearchProvider when it initializes
4
+ let searchServiceFunction:
5
+ | ((params: SearchParams) => Promise<SearchResult>)
6
+ | null = null;
7
+
8
+ export const setSearchServiceFunction = (
9
+ fn: (params: SearchParams) => Promise<SearchResult>
10
+ ) => {
11
+ searchServiceFunction = fn;
12
+ };
13
+
14
+ export const getSearchServiceFunction = () => {
15
+ if (!searchServiceFunction) {
16
+ throw new Error(
17
+ "Search service function not initialized. Make sure SearchProvider is mounted."
18
+ );
19
+ }
20
+ return searchServiceFunction;
21
+ };
22
+
23
+ export const clearSearchServiceFunction = () => {
24
+ searchServiceFunction = null;
25
+ };