@envive-ai/react-hooks 0.1.0

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 (385) hide show
  1. package/LICENSE +2 -0
  2. package/README.md +2 -0
  3. package/dist/GridInsertionService-CEYo9pGj.js +22 -0
  4. package/dist/GridInsertionService-CS_bnPh0.cjs +28 -0
  5. package/dist/bandolier-Ble8jEa8.js +1221 -0
  6. package/dist/bandolier-Bm2xAt_j.cjs +1221 -0
  7. package/dist/carpe-Da7b-LCW.cjs +599 -0
  8. package/dist/carpe-W13mhRRP.js +597 -0
  9. package/dist/cdnService-CZ-aXcY6.cjs +23 -0
  10. package/dist/cdnService-zQfKk3Eb.js +18 -0
  11. package/dist/chatElementDisplayLocation-CX8fuNao.d.cts +239 -0
  12. package/dist/chatElementDisplayLocation-CwptS9tx.d.ts +239 -0
  13. package/dist/chunk-CUT6urMc.cjs +30 -0
  14. package/dist/contexts/index.cjs +13 -0
  15. package/dist/contexts/index.d.cts +65 -0
  16. package/dist/contexts/index.d.ts +66 -0
  17. package/dist/contexts/index.js +7 -0
  18. package/dist/contexts-BRjfVq_k.js +5064 -0
  19. package/dist/contexts-BYArqZtK.cjs +5164 -0
  20. package/dist/coterie-3y0D9ko4.cjs +229 -0
  21. package/dist/coterie-DOWcJAYv.js +229 -0
  22. package/dist/custservice-types-CFIFwZ-r.js +10 -0
  23. package/dist/custservice-types-CkfxZiHY.cjs +16 -0
  24. package/dist/default-C2fEZKXk.js +175 -0
  25. package/dist/default-CBUq6Q6G.cjs +4 -0
  26. package/dist/default-CGIFZK6m.js +4 -0
  27. package/dist/default-D_KPZdPJ.cjs +198 -0
  28. package/dist/divIds-Bss-btao.js +49 -0
  29. package/dist/divIds-DnZNd7rA.cjs +223 -0
  30. package/dist/dreamlandBaby-DCIsuU9R.cjs +338 -0
  31. package/dist/dreamlandBaby-DvSaZGrz.js +338 -0
  32. package/dist/entrypoints-D_JUvkgy.cjs +18 -0
  33. package/dist/entrypoints-YLQsbBRD.js +6 -0
  34. package/dist/enviveConfigContext-CUGLpPGU.js +34 -0
  35. package/dist/enviveConfigContext-Dfr2VH6u.cjs +48 -0
  36. package/dist/fiveCbd-B1SESMCO.js +605 -0
  37. package/dist/fiveCbd-CkOlVby_.cjs +605 -0
  38. package/dist/forLoveAndLemons-CfYPMnKS.cjs +660 -0
  39. package/dist/forLoveAndLemons-DmwYZIk0.js +658 -0
  40. package/dist/greenpan-Bsl3ir59.cjs +389 -0
  41. package/dist/greenpan-BtOi45lf.js +389 -0
  42. package/dist/grooveLife-6_dtYsRk.js +334 -0
  43. package/dist/grooveLife-Cmm1PSCL.cjs +334 -0
  44. package/dist/homegrownCannabis-C-kw-74X.js +400 -0
  45. package/dist/homegrownCannabis-CO0uY_mp.cjs +400 -0
  46. package/dist/hooks/index.cjs +16 -0
  47. package/dist/hooks/index.d.cts +357 -0
  48. package/dist/hooks/index.d.ts +357 -0
  49. package/dist/hooks/index.js +7 -0
  50. package/dist/jackArcher-CLVmwwpI.js +719 -0
  51. package/dist/jackArcher-DdYTIzAV.cjs +719 -0
  52. package/dist/jordanCraig-Am-Oor-O.js +1778 -0
  53. package/dist/jordanCraig-_u3-w4Hp.cjs +1778 -0
  54. package/dist/kindredBravely-CWovIDSc.cjs +482 -0
  55. package/dist/kindredBravely-eWp-ud_E.js +482 -0
  56. package/dist/kutFromTheKloth-BMV4BuGQ.js +361 -0
  57. package/dist/kutFromTheKloth-Q589bAOC.cjs +361 -0
  58. package/dist/larryAndSerges-BMUlTgI-.js +252 -0
  59. package/dist/larryAndSerges-CEau764j.cjs +252 -0
  60. package/dist/leapsAndRebounds-DGMzPO7T.js +352 -0
  61. package/dist/leapsAndRebounds-DHAtRTJD.cjs +352 -0
  62. package/dist/logger-Dln20ans.cjs +25 -0
  63. package/dist/logger-pdEEY8T2.js +19 -0
  64. package/dist/longevityrx-CZW8Hxzi.cjs +312 -0
  65. package/dist/longevityrx-jH2JLhNH.js +312 -0
  66. package/dist/lookOptic-BGXP5P_V.js +274 -0
  67. package/dist/lookOptic-CA6RwLbG.cjs +274 -0
  68. package/dist/mantraBrand-Cm9_PBCT.js +742 -0
  69. package/dist/mantraBrand-DByNqpnL.cjs +742 -0
  70. package/dist/medterra-B0wxj_PV.js +575 -0
  71. package/dist/medterra-DnPN2ksU.cjs +575 -0
  72. package/dist/modells-Bmz8Ag5M.js +476 -0
  73. package/dist/modells-CoYgkLSp.cjs +476 -0
  74. package/dist/models-DHdb7QWn.js +51 -0
  75. package/dist/models-ixxUsGL_.cjs +69 -0
  76. package/dist/pressedFloral-DSKs_oVG.js +653 -0
  77. package/dist/pressedFloral-DjBiSoUl.cjs +653 -0
  78. package/dist/skinPerfection-B_3xzVNS.cjs +326 -0
  79. package/dist/skinPerfection-IDrBuAPt.js +326 -0
  80. package/dist/snapSupplements-BJk5T5ba.js +277 -0
  81. package/dist/snapSupplements-BStTsdOZ.cjs +277 -0
  82. package/dist/socialProofClasses-Bhv2Vulz.js +9 -0
  83. package/dist/socialProofClasses-CrQBWdSA.cjs +39 -0
  84. package/dist/spanx-BYg0LE7R.js +653 -0
  85. package/dist/spanx-LwU1zSzq.cjs +655 -0
  86. package/dist/spanxStaging-CfSmuKYB.js +837 -0
  87. package/dist/spanxStaging-OZLV9qix.cjs +840 -0
  88. package/dist/suggestionBarV2-types-BllzwsBD.js +34 -0
  89. package/dist/suggestionBarV2-types-CaovchMP.cjs +46 -0
  90. package/dist/supergoop-BqPXDnKk.cjs +327 -0
  91. package/dist/supergoop-CIlrHND_.js +325 -0
  92. package/dist/types-C4T5UOIW.cjs +230 -0
  93. package/dist/types-CYNvLeSA.js +176 -0
  94. package/dist/uniqueVintage-B30mOqbH.cjs +1205 -0
  95. package/dist/uniqueVintage-CFueJOhO.js +1203 -0
  96. package/dist/venaCbd-DHGZy49P.cjs +357 -0
  97. package/dist/venaCbd-T0CqVD4k.js +357 -0
  98. package/dist/westonJonBoucher-BdMzs_Yg.cjs +414 -0
  99. package/dist/westonJonBoucher-b4TCQ4ev.js +414 -0
  100. package/dist/wineEnthusiast-BLGlOjgr.cjs +932 -0
  101. package/dist/wineEnthusiast-BqR0i_54.js +932 -0
  102. package/dist/wolfMattress-CyyO-LoC.js +362 -0
  103. package/dist/wolfMattress-DNGZOivg.cjs +362 -0
  104. package/dist/wolfTactical-3Mm2fvVF.js +341 -0
  105. package/dist/wolfTactical-BmXYlFjr.cjs +341 -0
  106. package/package.json +66 -0
  107. package/src/adapters/amplitude/amplitudeAdapter.ts +454 -0
  108. package/src/adapters/amplitude/index.ts +2 -0
  109. package/src/adapters/amplitude/stubAmplitudeAdapter.ts +34 -0
  110. package/src/adapters/spiffy/commerce/api.ts +596 -0
  111. package/src/adapters/spiffy/commerce/exceptions/sessionExceptions.ts +6 -0
  112. package/src/adapters/spiffy/commerce/exceptions/unsupportedProductExceptions.ts +6 -0
  113. package/src/adapters/spiffy/commerce/graphql.ts +184 -0
  114. package/src/application/config/generalStaticConfig.ts +37 -0
  115. package/src/application/logging/logger.ts +29 -0
  116. package/src/application/models/api/context.ts +4 -0
  117. package/src/application/models/api/generationParams.ts +4 -0
  118. package/src/application/models/api/nextMessageRequest.ts +11 -0
  119. package/src/application/models/api/orgAnalyticsConfig.ts +19 -0
  120. package/src/application/models/api/orgConfigResults.ts +40 -0
  121. package/src/application/models/api/organizationConfig.ts +12 -0
  122. package/src/application/models/api/response.ts +132 -0
  123. package/src/application/models/api/responseGenerics.ts +67 -0
  124. package/src/application/models/api/search.ts +26 -0
  125. package/src/application/models/api/suggestion.ts +4 -0
  126. package/src/application/models/api/supportedEventRequest.ts +8 -0
  127. package/src/application/models/api/userEvent.ts +101 -0
  128. package/src/application/models/cachedValue.ts +8 -0
  129. package/src/application/models/chatElementDisplayLocation.ts +22 -0
  130. package/src/application/models/clientDetails.ts +18 -0
  131. package/src/application/models/colorsConfig.ts +28 -0
  132. package/src/application/models/conversationalSearchIds.ts +5 -0
  133. package/src/application/models/dataLayer.ts +45 -0
  134. package/src/application/models/domMutationContinuation.ts +7 -0
  135. package/src/application/models/domObservationStrategy.ts +9 -0
  136. package/src/application/models/events.ts +5 -0
  137. package/src/application/models/featureGates.ts +23 -0
  138. package/src/application/models/frontendConfig.ts +14 -0
  139. package/src/application/models/googleAnalyticsEvents.ts +8 -0
  140. package/src/application/models/graphql/index.ts +2 -0
  141. package/src/application/models/graphql/queries/getMerchantColorsQuery.ts +37 -0
  142. package/src/application/models/graphql/queries/getMerchantFrontendConfigQuery.ts +103 -0
  143. package/src/application/models/graphql/queries/getMerchantOrgIdQuery.ts +11 -0
  144. package/src/application/models/guards/api/index.ts +12 -0
  145. package/src/application/models/guards/api/isApiFormResponse.ts +90 -0
  146. package/src/application/models/guards/api/isApiFormSubmittedResponseAttributes.ts +37 -0
  147. package/src/application/models/guards/api/isApiOrderResponseAttributes.ts +155 -0
  148. package/src/application/models/guards/api/isApiOrgConfigResults.ts +277 -0
  149. package/src/application/models/guards/api/isApiOrganizationConfig.ts +207 -0
  150. package/src/application/models/guards/api/isApiPDPEventAttributes.ts +21 -0
  151. package/src/application/models/guards/api/isApiPLPEventAttributes.ts +41 -0
  152. package/src/application/models/guards/api/isApiPageResponseAttributes.ts +21 -0
  153. package/src/application/models/guards/api/isApiProductResponseAttributes.ts +85 -0
  154. package/src/application/models/guards/api/isApiProductSearchAttributes.ts +23 -0
  155. package/src/application/models/guards/api/isApiProductSearchFilterAttributes.ts +15 -0
  156. package/src/application/models/guards/api/isApiQueryTypedEventAttributes.ts +4 -0
  157. package/src/application/models/guards/api/isApiResponse.ts +39 -0
  158. package/src/application/models/guards/api/isApiReviewResponseAttributes.ts +30 -0
  159. package/src/application/models/guards/api/isApiReviewRichInformation.ts +37 -0
  160. package/src/application/models/guards/api/isApiSearchEventAttributes.ts +28 -0
  161. package/src/application/models/guards/api/isApiSuggestion.ts +36 -0
  162. package/src/application/models/guards/api/isApiSuggestionClickedEventAttributes.ts +9 -0
  163. package/src/application/models/guards/api/isApiTextResponseAttributes.ts +9 -0
  164. package/src/application/models/guards/api/isApiUserEvent.ts +25 -0
  165. package/src/application/models/guards/graphQL/isGraphQLColorsConfig.ts +50 -0
  166. package/src/application/models/guards/isBaseEcommerceEvent.ts +17 -0
  167. package/src/application/models/guards/isGA4EcommerceEvent.ts +17 -0
  168. package/src/application/models/guards/isLegacyUAEcommerceEvent.ts +17 -0
  169. package/src/application/models/guards/isMobilePLPChatPlacementParameter.ts +11 -0
  170. package/src/application/models/guards/isSpanxTakeAQuizCtaParameter.ts +4 -0
  171. package/src/application/models/guards/isVariantInfo.ts +37 -0
  172. package/src/application/models/guards/utils.ts +43 -0
  173. package/src/application/models/index.ts +20 -0
  174. package/src/application/models/localStorageEventListener.ts +4 -0
  175. package/src/application/models/message.ts +146 -0
  176. package/src/application/models/mobilePLPChatPlacementParameter.ts +3 -0
  177. package/src/application/models/orgsEnum.ts +36 -0
  178. package/src/application/models/productExperiment.ts +5 -0
  179. package/src/application/models/spanxTakeAQuizCtaParameter.ts +4 -0
  180. package/src/application/models/spiffyWidgets.ts +16 -0
  181. package/src/application/models/supportedOrgs.ts +137 -0
  182. package/src/application/models/utilityTypes/camelCase.ts +87 -0
  183. package/src/application/models/utilityTypes/camelCasedPropertiesDeep.ts +80 -0
  184. package/src/application/models/utilityTypes/delimiterCase.ts +121 -0
  185. package/src/application/models/utilityTypes/delimiterCasedPropertiesDeep.ts +98 -0
  186. package/src/application/models/utilityTypes/index.ts +1 -0
  187. package/src/application/models/utilityTypes/internal.ts +93 -0
  188. package/src/application/models/utilityTypes/primitive.ts +8 -0
  189. package/src/application/models/utilityTypes/snakeCasedPropertiesDeep.ts +49 -0
  190. package/src/application/models/utilityTypes/splitWords.ts +76 -0
  191. package/src/application/models/utilityTypes/trim.ts +28 -0
  192. package/src/application/models/utilityTypes/unknownArray.ts +25 -0
  193. package/src/application/models/utils/snakeToCamelTransformer.ts +90 -0
  194. package/src/application/models/utils/stringToFulfillmentDisplayStatusEnumValue.ts +68 -0
  195. package/src/application/models/validators/validateGraphQLColorsConfig.ts +29 -0
  196. package/src/application/models/validators/validateGraphQLFrontendConfig.ts +594 -0
  197. package/src/application/models/validators/validateGraphQLOrgId.ts +7 -0
  198. package/src/application/models/validators/validateMobilePLPChatPlacementParameter.ts +14 -0
  199. package/src/application/models/validators/validateOrgConfigResults.ts +47 -0
  200. package/src/application/models/validators/validateOrganizationConfig.ts +37 -0
  201. package/src/application/models/validators/validateResponse.ts +187 -0
  202. package/src/application/models/validators/validateSuggestion.ts +16 -0
  203. package/src/application/models/validators/validateUserEvent.ts +110 -0
  204. package/src/application/models/variantInfo/index.ts +1 -0
  205. package/src/application/models/variantInfo/pageVisitInfo.ts +6 -0
  206. package/src/application/models/variantInfo/plpInfo.ts +3 -0
  207. package/src/application/models/variantInfo/productInfo.ts +5 -0
  208. package/src/application/models/variantInfo/variantInfo.ts +23 -0
  209. package/src/application/service/cachingService.ts +84 -0
  210. package/src/application/service/cdnService.ts +18 -0
  211. package/src/application/service/customerService/index.ts +8 -0
  212. package/src/application/service/customerService/providers/UnsupportedCustomerService.ts +15 -0
  213. package/src/application/service/customerService/types.ts +31 -0
  214. package/src/application/service/domMutationObserver.ts +320 -0
  215. package/src/application/service/domMutations/GridInsertionService.ts +123 -0
  216. package/src/application/service/domMutations/dataLayer/dataLayerEventsListener.ts +99 -0
  217. package/src/application/service/domMutations/domInsertionService.ts +90 -0
  218. package/src/application/service/domMutations/domMutationListener.ts +15 -0
  219. package/src/application/service/domMutations/domMutationListenerState.ts +52 -0
  220. package/src/application/service/domMutations/floatingChat/embeddedChatsPlacementsListener.ts +41 -0
  221. package/src/application/service/domMutations/gladly/gladlyListener.ts +61 -0
  222. package/src/application/service/domMutations/spiffy/orgs/common/kustomerVisibilityListener.ts +41 -0
  223. package/src/application/service/domMutations/spiffy/orgs/common/orgsCommonDataLayerListener.ts +119 -0
  224. package/src/application/service/environmentService.ts +51 -0
  225. package/src/application/service/featureFlagService.ts +130 -0
  226. package/src/application/service/kustomerIntegrationService.ts +111 -0
  227. package/src/application/service/localStorageService.ts +77 -0
  228. package/src/application/service/pageVariantService.ts +779 -0
  229. package/src/application/service/searchService.ts +140 -0
  230. package/src/application/service/sessionStorageService.ts +27 -0
  231. package/src/application/service/shopifyUrlService.ts +63 -0
  232. package/src/application/service/userIdentityService.ts +114 -0
  233. package/src/application/service/windowChatToggleService.ts +71 -0
  234. package/src/application/service/windowDataLayerService.ts +181 -0
  235. package/src/application/service/windowFrontendConfigService.ts +104 -0
  236. package/src/application/utils/__tests__/divideArrays.test.ts +14 -0
  237. package/src/application/utils/analyticsUtils.ts +110 -0
  238. package/src/application/utils/coreContextToApiContext.ts +11 -0
  239. package/src/application/utils/coreUserEventToApiUserEvent.ts +106 -0
  240. package/src/application/utils/divideArray.ts +7 -0
  241. package/src/application/utils/domObserver.ts +96 -0
  242. package/src/application/utils/elementObserver.ts +246 -0
  243. package/src/application/utils/imageFilter.ts +12 -0
  244. package/src/application/utils/index.ts +3 -0
  245. package/src/application/utils/merchantUtils.ts +16 -0
  246. package/src/application/utils/messageFromFormSubmittedEvent.ts +31 -0
  247. package/src/application/utils/messageFromQueryEvent.ts +38 -0
  248. package/src/application/utils/messageFromResponse.ts +133 -0
  249. package/src/application/utils/messageFromSuggestionEvent.ts +32 -0
  250. package/src/application/utils/mouseEventTypes.ts +1 -0
  251. package/src/application/utils/mutationHelper.ts +51 -0
  252. package/src/application/utils/nextMessageRequestToApiRequest.ts +31 -0
  253. package/src/application/utils/nodeSelector.ts +133 -0
  254. package/src/application/utils/overrides.ts +196 -0
  255. package/src/application/utils/stringUtils.ts +55 -0
  256. package/src/application/utils/supportedEventRequestToApiRequest.ts +12 -0
  257. package/src/application/utils/urlsParser.ts +53 -0
  258. package/src/application/utils/validation.ts +5 -0
  259. package/src/atoms/app/index.ts +57 -0
  260. package/src/atoms/app/variant.ts +261 -0
  261. package/src/atoms/atomStore.ts +34 -0
  262. package/src/atoms/chat/chatState.ts +44 -0
  263. package/src/atoms/chat/form.ts +19 -0
  264. package/src/atoms/chat/index.ts +38 -0
  265. package/src/atoms/chat/lastMessage.ts +11 -0
  266. package/src/atoms/chat/messageQueue.ts +65 -0
  267. package/src/atoms/chat/performanceMetrics.ts +84 -0
  268. package/src/atoms/chat/renderedWidgetRefs.ts +28 -0
  269. package/src/atoms/chat/replies.ts +51 -0
  270. package/src/atoms/chat/suggestions.ts +36 -0
  271. package/src/atoms/globalSearch.ts +12 -0
  272. package/src/atoms/index.ts +5 -0
  273. package/src/atoms/org/customerService.ts +13 -0
  274. package/src/atoms/org/graphqlConfig.ts +27 -0
  275. package/src/atoms/org/index.ts +7 -0
  276. package/src/atoms/org/merchantCss.ts +44 -0
  277. package/src/atoms/org/org.ts +256 -0
  278. package/src/atoms/org/orgAnalyticsConfig.ts +28 -0
  279. package/src/atoms/org/orgPageConfig.ts +38 -0
  280. package/src/atoms/org/orgUIConfig.ts +122 -0
  281. package/src/atoms/search/chatSearch.ts +293 -0
  282. package/src/atoms/search/index.ts +2 -0
  283. package/src/atoms/search/productFilters.ts +207 -0
  284. package/src/atoms/search/productSorter.ts +23 -0
  285. package/src/atoms/search/searchAPI.ts +194 -0
  286. package/src/atoms/search/types.ts +55 -0
  287. package/src/atoms/search/utils.ts +18 -0
  288. package/src/config/divIds.ts +27 -0
  289. package/src/config/locators/components/chat/entrypoints.ts +13 -0
  290. package/src/config/locators/components/chat/index.ts +23 -0
  291. package/src/config/locators/components/chat/preview.ts +13 -0
  292. package/src/config/locators/components/chat/variants/index.ts +16 -0
  293. package/src/config/locators/components/common/buttons.ts +6 -0
  294. package/src/config/locators/components/common/cards.ts +18 -0
  295. package/src/config/locators/components/common/links.ts +1 -0
  296. package/src/config/locators/components/common/tables.ts +2 -0
  297. package/src/config/locators/components/floating-button.ts +2 -0
  298. package/src/config/locators/components/index.ts +3 -0
  299. package/src/config/locators/components/report-issue.ts +21 -0
  300. package/src/config/locators/components/search/index.ts +5 -0
  301. package/src/config/locators/components/shadow-dom.ts +1 -0
  302. package/src/config/locators/embedded.ts +21 -0
  303. package/src/config/locators/index.ts +3 -0
  304. package/src/config/socialProofClasses.ts +17 -0
  305. package/src/contexts/chatContext.tsx +451 -0
  306. package/src/contexts/enviveConfigContext.tsx +70 -0
  307. package/src/contexts/index.ts +4 -0
  308. package/src/contexts/systemSettingsContext.tsx +61 -0
  309. package/src/contexts/types.ts +1059 -0
  310. package/src/enabled-features.ts +83 -0
  311. package/src/events/event-types.ts +11 -0
  312. package/src/events/index.ts +52 -0
  313. package/src/events/registerAnalyticsListeners.ts +49 -0
  314. package/src/extension.ts +63 -0
  315. package/src/hooks/index.ts +22 -0
  316. package/src/hooks/useBlockBackButton.ts +29 -0
  317. package/src/hooks/useChatToggle.ts +66 -0
  318. package/src/hooks/useCustomerSupportHandoff.ts +39 -0
  319. package/src/hooks/useDebounce.ts +17 -0
  320. package/src/hooks/useDynamicVariants.ts +210 -0
  321. package/src/hooks/useElementObserver.ts +245 -0
  322. package/src/hooks/useFileUpload.ts +61 -0
  323. package/src/hooks/useGrabAndScroll.ts +133 -0
  324. package/src/hooks/useHideElements.ts +82 -0
  325. package/src/hooks/useHorizontalScrollAnimation.ts +115 -0
  326. package/src/hooks/useImageResolver.ts +51 -0
  327. package/src/hooks/useIntersection.ts +28 -0
  328. package/src/hooks/useIsSmallScreen.ts +23 -0
  329. package/src/hooks/useMessageFilter.ts +49 -0
  330. package/src/hooks/useMessageScrollObserver.ts +47 -0
  331. package/src/hooks/useReducedMotionWithOverride.ts +15 -0
  332. package/src/hooks/useSearch.tsx +433 -0
  333. package/src/hooks/useSnapCalculator.ts +38 -0
  334. package/src/hooks/useSnapControl.ts +155 -0
  335. package/src/hooks/useSystemSettingsContext.ts +12 -0
  336. package/src/hooks/useTrackComponentVisibleEvent.ts +52 -0
  337. package/src/hooks/useUpdateAnalyticsProps.ts +56 -0
  338. package/src/hooks/utils.ts +153 -0
  339. package/src/index.ts +31 -0
  340. package/src/initialize.ts +163 -0
  341. package/src/interceptors/types.ts +6 -0
  342. package/src/interceptors/useFormEscalation.ts +40 -0
  343. package/src/interceptors/useMessageInterceptor.ts +32 -0
  344. package/src/main.ts +85 -0
  345. package/src/main.tsx +123 -0
  346. package/src/merchants/bandolier/bandolier.ts +1389 -0
  347. package/src/merchants/carpe/carpe.ts +656 -0
  348. package/src/merchants/coterie/coterie.ts +280 -0
  349. package/src/merchants/default.ts +193 -0
  350. package/src/merchants/dreamlandBaby/dreamlandBaby.ts +375 -0
  351. package/src/merchants/fiveCbd/fiveCbd.ts +697 -0
  352. package/src/merchants/forLoveAndLemons/forLoveAndLemons.ts +721 -0
  353. package/src/merchants/greenpan/greenpan.ts +440 -0
  354. package/src/merchants/grooveLife/grooveLife.ts +386 -0
  355. package/src/merchants/homegrownCannabis/homegrownCannabis.ts +468 -0
  356. package/src/merchants/init-merchant.sh +53 -0
  357. package/src/merchants/jackArcher/jackArcher.ts +974 -0
  358. package/src/merchants/jordanCraig/jordanCraig.ts +1927 -0
  359. package/src/merchants/kindredBravely/kindredBravely.ts +529 -0
  360. package/src/merchants/kutFromTheKloth/kutFromTheKloth.ts +418 -0
  361. package/src/merchants/larryAndSerges/larryAndSerges.ts +314 -0
  362. package/src/merchants/leapsAndRebounds/leapsAndRebounds.ts +424 -0
  363. package/src/merchants/longevityrx/longevityrx.ts +368 -0
  364. package/src/merchants/lookOptic/lookOptic.ts +323 -0
  365. package/src/merchants/mantraBrand/mantraBrand.ts +838 -0
  366. package/src/merchants/medterra/medterra.ts +670 -0
  367. package/src/merchants/modells/modells.ts +546 -0
  368. package/src/merchants/pressedFloral/pressedFloral.ts +734 -0
  369. package/src/merchants/skinPerfection/skinPerfection.ts +379 -0
  370. package/src/merchants/snapSupplements/snapSupplements.ts +325 -0
  371. package/src/merchants/spanx/spanx.ts +810 -0
  372. package/src/merchants/spanx/spanxStaging.ts +942 -0
  373. package/src/merchants/supergoop/supergoop.ts +376 -0
  374. package/src/merchants/uniqueVintage/uniqueVintage.ts +1314 -0
  375. package/src/merchants/uniqueVintage/views/useUniqueVintageChatSearch.ts +147 -0
  376. package/src/merchants/venaCbd/venaCbd.ts +410 -0
  377. package/src/merchants/westonJonBoucher/westonJonBoucher.ts +473 -0
  378. package/src/merchants/wineEnthusiast/wineEnthusiast.ts +990 -0
  379. package/src/merchants/wolfMattress/wolfMattress.ts +411 -0
  380. package/src/merchants/wolfTactical/wolfTactical.ts +389 -0
  381. package/src/types/custservice-types.ts +28 -0
  382. package/src/types/search-filter-types.ts +111 -0
  383. package/src/types/suggestionBarV2-types.ts +4 -0
  384. package/src/types/test-types.ts +3 -0
  385. package/src/types.ts +66 -0
@@ -0,0 +1,1927 @@
1
+ import {
2
+ CHAT_PREVIEW_TESTID,
3
+ TOP_SUGGESTION_BAR_TESTID,
4
+ BOTTOM_SUGGESTION_BAR_TESTID,
5
+ GLOBAL_SEARCH_ENTRYPOINT_TESTID,
6
+ SEARCH_RESULTS_ENTRYPOINT_TESTID,
7
+ SEARCH_OVERLAY_HOST_TESTID,
8
+ } from "src/config/locators";
9
+ import {
10
+ OrgShortName,
11
+ BasicOrgInfoType,
12
+ FeatureGates,
13
+ } from "src/application/models";
14
+ import { ChatElementDisplayLocation } from "src/application/models/chatElementDisplayLocation";
15
+ import { CdnService } from "src/application/service/cdnService";
16
+ import { GridInsertionType } from "src/application/service/domMutations/GridInsertionService";
17
+ import { DOMInsertionType } from "src/application/service/domMutations/domInsertionService";
18
+ import {
19
+ CHAT_PREVIEW_CONTAINER_ID,
20
+ TOP_SUGGESTION_BAR_PDP_ID,
21
+ BOTTOM_REVIEWS_BAR_ID,
22
+ GLOBAL_SEARCH_ENTRYPOINT_ID,
23
+ SEARCH_RESULTS_ENTRYPOINT_ID,
24
+ SEARCH_OVERLAY_ENTRYPOINT_ID,
25
+ } from "src/config/divIds";
26
+ import { SuggestionBarLocationForMetrics } from "src/types/suggestionBarV2-types";
27
+ import { defaultOrgUIConfig } from "src/merchants/default";
28
+ import {
29
+ ChatPreviewWidgetConfig,
30
+ ColorMapping,
31
+ ColorNames,
32
+ colorVar,
33
+ OrgPageConfig,
34
+ OrgUIConfig,
35
+ PageVariantTestType,
36
+ SearchEntryPointWidgetConfig,
37
+ SearchOverlayHostWidgetConfig,
38
+ SearchResultsEntryPointWidgetConfig,
39
+ SuggestionBarWidgetV2Config,
40
+ WidgetType,
41
+ } from "src/contexts/types";
42
+
43
+ const jordanCraigColors: ColorMapping = {
44
+ [ColorNames.TextPrimary]: "#1C1C1C",
45
+ [ColorNames.TextSecondary]: "#767676",
46
+ [ColorNames.TextAccent]: "#767676",
47
+ [ColorNames.TextLink]: "#1C1C1C",
48
+ [ColorNames.TextLight]: "#FFFFFF",
49
+ [ColorNames.BackgroundPrimary]: "#1C1C1C",
50
+ [ColorNames.BackgroundSecondary]: "#F6F6F6",
51
+ [ColorNames.BackgroundSecondaryDark]: "#E0E0E0",
52
+ [ColorNames.BackgroundTertiary]: "#DDDDDD",
53
+ [ColorNames.BackgroundDark]: "#1C1C1C",
54
+ [ColorNames.BackgroundLight]: "#FFFFFF",
55
+ [ColorNames.BackgroundSaturated]: "#E0E0E0",
56
+ [ColorNames.BorderLight]: "#DDDDDD",
57
+ [ColorNames.BorderMedium]: "#949596",
58
+ [ColorNames.BorderDark]: "#1C1C1C",
59
+ [ColorNames.BorderOutline]: "#1C1C1C",
60
+ [ColorNames.AccentPrimary]: "#AB1212",
61
+ [ColorNames.AccentSecondary]: "#C69846",
62
+ };
63
+
64
+ const jordanCraigOrgUIConfig = (): OrgUIConfig => {
65
+ const defaultJordanCraigOrgConfig = defaultOrgUIConfig(
66
+ OrgShortName.JordanCraig
67
+ );
68
+
69
+ return {
70
+ ...defaultJordanCraigOrgConfig,
71
+ merchantVariantSettings: {
72
+ dynamicVariants: {
73
+ enabled: false,
74
+ refreshInterval: 400,
75
+ },
76
+ },
77
+ searchConfig: {
78
+ enableGlobalSearch: true,
79
+ redirectSearchResultsUrl:
80
+ "https://jordancraig.com/collections/best-sellers-men",
81
+ searchFilterConfig: [
82
+ {
83
+ filterId: "price",
84
+ displayName: "Price",
85
+ type: "price",
86
+ bucketSize: 50,
87
+ },
88
+ {
89
+ filterId: "size",
90
+ displayName: "Size",
91
+ attribute: "size",
92
+ type: "dynamic",
93
+ sorting: {
94
+ type: "productCount",
95
+ },
96
+ },
97
+ {
98
+ filterId: "color",
99
+ displayName: "Color",
100
+ attribute: "color",
101
+ type: "dynamic",
102
+ sorting: {
103
+ type: "productCount",
104
+ },
105
+ },
106
+ {
107
+ filterId: "type",
108
+ displayName: "Type",
109
+ attribute: "type",
110
+ type: "dynamic",
111
+ sorting: {
112
+ type: "productCount",
113
+ },
114
+ },
115
+ {
116
+ filterId: "dynamic",
117
+ displayName: "",
118
+ type: "dynamic",
119
+ attribute: "dynamic",
120
+ sorting: {
121
+ type: "productCount",
122
+ },
123
+ },
124
+ ],
125
+ },
126
+ chatMessageConfig: {
127
+ ...defaultJordanCraigOrgConfig.chatMessageConfig,
128
+ assistantChatTitle: "Jordan Craig AI",
129
+ variant: "standard",
130
+ productLink: {
131
+ ...defaultJordanCraigOrgConfig.chatMessageConfig.productLink,
132
+ iconVariant: "backgroundSaturated",
133
+ },
134
+ },
135
+ chatHeader: {
136
+ ...defaultJordanCraigOrgConfig.chatHeader,
137
+ imageSrc: CdnService.getAssetURL(
138
+ "jordancraig-white.png",
139
+ OrgShortName.JordanCraig
140
+ ),
141
+ },
142
+ chatPreviewConfig: {
143
+ ...defaultJordanCraigOrgConfig.chatPreviewConfig!,
144
+ iconFillColor: colorVar(ColorNames.AccentPrimary),
145
+ buttonBackgroundColor: colorVar(ColorNames.BackgroundDark),
146
+ buttonTextHoverColor: colorVar(ColorNames.TextPrimary),
147
+ buttonBackgroundHoverColor: colorVar(ColorNames.BackgroundSecondaryDark),
148
+ topMargin: 10,
149
+ copies: {
150
+ plp: [
151
+ "what's new in style?",
152
+ "the right pair of jeans for every day?",
153
+ "a jacket to elevate your look?",
154
+ "a unique graphic print?",
155
+ ],
156
+ pdp: [
157
+ "if this is hypoallergenic?",
158
+ "if this is a meaningful gift?",
159
+ "if it is the right size for you?",
160
+ "if it's crafted with durable materials?",
161
+ ],
162
+ },
163
+ staticSuggestionCopies: {
164
+ plp: [
165
+ "the care instructions?",
166
+ "what it's made of?",
167
+ "the standout features?",
168
+ "the size guide?",
169
+ ],
170
+ pdp: [
171
+ "Is this available in other colors or styles?",
172
+ "Does this style match any other pieces?",
173
+ "What is my right size?",
174
+ "What is this made of?",
175
+ "How do I care for this product?",
176
+ ],
177
+ },
178
+ headerConfig: {
179
+ ...defaultJordanCraigOrgConfig.chatPreviewConfig!.headerConfig,
180
+ imageHeight: 24,
181
+ imageSrc: CdnService.getAssetURL(
182
+ "jordancraig-black.png",
183
+ OrgShortName.JordanCraig
184
+ ),
185
+ },
186
+ footerConfig: {
187
+ ...defaultJordanCraigOrgConfig.chatPreviewConfig!.footerConfig,
188
+ replyButtonIcon: "magnifyingGlass",
189
+ },
190
+ },
191
+ floatingEntrypointConfig: {
192
+ ...defaultJordanCraigOrgConfig.floatingEntrypointConfig!,
193
+ showOption: "always",
194
+ expandedColor: colorVar(ColorNames.BorderOutline),
195
+ expansionText: {
196
+ pdp: "Is this your next essential?",
197
+ plp: "Ready to find your perfect fit?",
198
+ },
199
+ },
200
+ productCardConfig: {
201
+ ...defaultJordanCraigOrgConfig.productCardConfig!,
202
+ },
203
+ productReviewConfig: {
204
+ ...defaultJordanCraigOrgConfig.productReviewConfig!,
205
+ colorVariant: "brand",
206
+ verifiedBuyerTitle: "",
207
+ incentivizedReviewFlag: false,
208
+ },
209
+ welcomeSectionConfig: {
210
+ ...defaultJordanCraigOrgConfig.welcomeSectionConfig!,
211
+ title: "Welcome to Jordan Craig AI!",
212
+ subtitle:
213
+ "Hey! I'm here to make your shopping experience effortless. Ask me anything—from finding your perfect fit to details about our latest styles. Let's find your next essential.",
214
+ },
215
+ merchantOverrideCss: `
216
+ .spiffy-star-rating-star {
217
+ fill: var(--spiffy-colors-text-primary) !important;
218
+ }
219
+ .spiffy-product-review-header-reviewer {
220
+ color: var(--spiffy-colors-text-primary) !important;
221
+ }
222
+ .spiffy-mini-verified-buyer-text {
223
+ color: var(--spiffy-colors-background-secondary) !important;
224
+ }
225
+ .spiffy-mini-verified-buyer-icon {
226
+ fill: var(--spiffy-colors-background-secondary) !important;
227
+ }
228
+
229
+ #spiffy-ai-chat-preview.is-plp {
230
+ max-width: calc(100vw - (2 * var(--container-gutter)));
231
+ @media (max-width: 700px) {
232
+ max-width:calc(100vw - 20px)
233
+ }
234
+ }
235
+ .spiffy-product-card-title {
236
+ font-family: var(--chakra-fonts-heading);
237
+ color: var(--spiffy-colors-text-link);
238
+ }
239
+ .spiffy-product-card-text-color {
240
+ color: var(--spiffy-colors-text-secondary);
241
+ }
242
+ .spiffy-product-card-rating-star-color {
243
+ fill: var(--spiffy-colors-background-primary);
244
+ }
245
+
246
+ .search-results-entry-point + #main {
247
+ display: none;
248
+ }
249
+ `,
250
+ };
251
+ };
252
+
253
+ const jordanCraigPageConfig = (): OrgPageConfig => ({
254
+ pageVariants: [
255
+ // START: Global Search Page Variants (MUST BE FIRST)
256
+ {
257
+ variantId: "search-results",
258
+ variantType: "plp",
259
+ variantTests: [
260
+ { testType: PageVariantTestType.UrlResolver },
261
+ {
262
+ testType: PageVariantTestType.FeatureGate,
263
+ featureGate: FeatureGates.IsGlobalSearchEnabled,
264
+ },
265
+ {
266
+ testType: PageVariantTestType.QueryParam,
267
+ queryParam: "esq",
268
+ },
269
+ ],
270
+ plpIdExtractor: "url-resolver-plp-id",
271
+ widgetMounting: [
272
+ {
273
+ mountingConfigId: "searchIconEntryPoint",
274
+ widgetConfigId: "searchIconEntryPoint",
275
+ },
276
+ {
277
+ mountingConfigId: "searchOverlayHost",
278
+ widgetConfigId: "searchOverlayHost",
279
+ },
280
+ {
281
+ mountingConfigId: "chatPreviewPLP",
282
+ widgetConfigId: "chatPreviewPLP",
283
+ },
284
+ {
285
+ mountingConfigId: "searchResultsEntryPointPLP",
286
+ widgetConfigId: "searchResultsEntryPoint",
287
+ },
288
+ ],
289
+ },
290
+ {
291
+ variantId: "plp-with-search",
292
+ variantType: "plp",
293
+ variantTests: [
294
+ { testType: PageVariantTestType.UrlResolver },
295
+ {
296
+ testType: PageVariantTestType.FeatureGate,
297
+ featureGate: FeatureGates.IsGlobalSearchEnabled,
298
+ },
299
+ ],
300
+ plpIdExtractor: "url-resolver-plp-id",
301
+ widgetMounting: [
302
+ {
303
+ mountingConfigId: "searchIconEntryPoint",
304
+ widgetConfigId: "searchIconEntryPoint",
305
+ },
306
+ {
307
+ mountingConfigId: "searchOverlayHost",
308
+ widgetConfigId: "searchOverlayHost",
309
+ },
310
+ {
311
+ mountingConfigId: "chatPreviewPLP",
312
+ widgetConfigId: "chatPreviewPLP",
313
+ },
314
+ ],
315
+ },
316
+ {
317
+ variantId: "pdp-with-search",
318
+ variantType: "pdp",
319
+ variantTests: [
320
+ { testType: PageVariantTestType.UrlResolver },
321
+ {
322
+ testType: PageVariantTestType.FeatureGate,
323
+ featureGate: FeatureGates.IsGlobalSearchEnabled,
324
+ },
325
+ ],
326
+ productIdExtractor: "url-resolver-product-id",
327
+ widgetMounting: [
328
+ {
329
+ mountingConfigId: "searchIconEntryPoint",
330
+ widgetConfigId: "searchIconEntryPoint",
331
+ },
332
+ {
333
+ mountingConfigId: "searchOverlayHost",
334
+ widgetConfigId: "searchOverlayHost",
335
+ },
336
+ {
337
+ mountingConfigId: "topSuggestionBarPDP",
338
+ widgetConfigId: "topSuggestionsBar",
339
+ },
340
+ {
341
+ mountingConfigId: "bottomSuggestionBarPDP",
342
+ widgetConfigId: "bottomSuggestionsBar",
343
+ },
344
+ {
345
+ mountingConfigId: "chatPreviewPDP",
346
+ widgetConfigId: "chatPreviewPDP",
347
+ },
348
+ ],
349
+ },
350
+ {
351
+ variantId: "home-with-search",
352
+ variantType: "homepage",
353
+ variantTests: [
354
+ {
355
+ testType: PageVariantTestType.UrlResolver,
356
+ },
357
+ {
358
+ testType: PageVariantTestType.FeatureGate,
359
+ featureGate: FeatureGates.IsGlobalSearchEnabled,
360
+ },
361
+ ],
362
+ widgetMounting: [
363
+ {
364
+ mountingConfigId: "searchIconEntryPoint",
365
+ widgetConfigId: "searchIconEntryPoint",
366
+ },
367
+ {
368
+ mountingConfigId: "searchOverlayHost",
369
+ widgetConfigId: "searchOverlayHost",
370
+ },
371
+ ],
372
+ },
373
+ {
374
+ variantId: "other-with-search",
375
+ variantType: "other",
376
+ variantTests: [
377
+ {
378
+ testType: PageVariantTestType.UrlResolver,
379
+ },
380
+ {
381
+ testType: PageVariantTestType.FeatureGate,
382
+ featureGate: FeatureGates.IsGlobalSearchEnabled,
383
+ },
384
+ ],
385
+ widgetMounting: [
386
+ {
387
+ mountingConfigId: "searchIconEntryPoint",
388
+ widgetConfigId: "searchIconEntryPoint",
389
+ },
390
+ {
391
+ mountingConfigId: "searchOverlayHost",
392
+ widgetConfigId: "searchOverlayHost",
393
+ },
394
+ ],
395
+ },
396
+ // END: Global Search Page Variants
397
+ {
398
+ variantId: "plp",
399
+ variantType: "plp",
400
+ variantTests: [{ testType: PageVariantTestType.UrlResolver }],
401
+ plpIdExtractor: "url-resolver-plp-id",
402
+ widgetMounting: [
403
+ {
404
+ mountingConfigId: "chatPreviewPLP",
405
+ widgetConfigId: "chatPreviewPLP",
406
+ },
407
+ ],
408
+ },
409
+ {
410
+ variantId: "outerwearWithReviews",
411
+ variantType: "pdp",
412
+ variantTests: [
413
+ { testType: PageVariantTestType.HasReviews, reviewMinimum: 4 },
414
+ { testType: PageVariantTestType.UrlResolver },
415
+ {
416
+ testType: PageVariantTestType.InCollection,
417
+ collections: ["outerwear", "big-mens-outerwear"],
418
+ },
419
+ ],
420
+ productIdExtractor: "url-resolver-product-id",
421
+ widgetMounting: [
422
+ {
423
+ mountingConfigId: "topSuggestionBarPDP",
424
+ widgetConfigId: "topSuggestionsBarOuterwear",
425
+ },
426
+ {
427
+ mountingConfigId: "chatPreviewPDP",
428
+ widgetConfigId: "chatPreviewPDP",
429
+ },
430
+ {
431
+ mountingConfigId: "bottomSuggestionBarPDP",
432
+ widgetConfigId: "bottomSuggestionsBarOuterwear",
433
+ },
434
+ ],
435
+ },
436
+ {
437
+ variantId: "tshirtsWithReviews",
438
+ variantType: "pdp",
439
+ variantTests: [
440
+ { testType: PageVariantTestType.HasReviews, reviewMinimum: 4 },
441
+ { testType: PageVariantTestType.UrlResolver },
442
+ {
443
+ testType: PageVariantTestType.InCollection,
444
+ collections: ["tshirt", "big-mens-t-shirts"],
445
+ },
446
+ ],
447
+ productIdExtractor: "url-resolver-product-id",
448
+ widgetMounting: [
449
+ {
450
+ mountingConfigId: "topSuggestionBarPDP",
451
+ widgetConfigId: "topSuggestionsBarTshirts",
452
+ },
453
+ {
454
+ mountingConfigId: "chatPreviewPDP",
455
+ widgetConfigId: "chatPreviewPDP",
456
+ },
457
+ {
458
+ mountingConfigId: "bottomSuggestionBarPDP",
459
+ widgetConfigId: "bottomSuggestionsBarTshirts",
460
+ },
461
+ ],
462
+ },
463
+ {
464
+ variantId: "sweatshirtsWithReviews",
465
+ variantType: "pdp",
466
+ variantTests: [
467
+ { testType: PageVariantTestType.HasReviews, reviewMinimum: 4 },
468
+ { testType: PageVariantTestType.UrlResolver },
469
+ {
470
+ testType: PageVariantTestType.InCollection,
471
+ collections: ["sweatshirts", "big-mens-sweatshirts"],
472
+ },
473
+ ],
474
+ productIdExtractor: "url-resolver-product-id",
475
+ widgetMounting: [
476
+ {
477
+ mountingConfigId: "topSuggestionBarPDP",
478
+ widgetConfigId: "topSuggestionsBarSweatshirts",
479
+ },
480
+ {
481
+ mountingConfigId: "chatPreviewPDP",
482
+ widgetConfigId: "chatPreviewPDP",
483
+ },
484
+ {
485
+ mountingConfigId: "bottomSuggestionBarPDP",
486
+ widgetConfigId: "bottomSuggestionsBarSweatshirts",
487
+ },
488
+ ],
489
+ },
490
+ {
491
+ variantId: "sweatpantsWithReviews",
492
+ variantType: "pdp",
493
+ variantTests: [
494
+ { testType: PageVariantTestType.HasReviews, reviewMinimum: 4 },
495
+ { testType: PageVariantTestType.UrlResolver },
496
+ {
497
+ testType: PageVariantTestType.InCollection,
498
+ collections: ["big-mens-sweatpants", "mens-sweatpants"],
499
+ },
500
+ ],
501
+ productIdExtractor: "url-resolver-product-id",
502
+ widgetMounting: [
503
+ {
504
+ mountingConfigId: "topSuggestionBarPDP",
505
+ widgetConfigId: "topSuggestionsBarSweatpants",
506
+ },
507
+ {
508
+ mountingConfigId: "chatPreviewPDP",
509
+ widgetConfigId: "chatPreviewPDP",
510
+ },
511
+ {
512
+ mountingConfigId: "bottomSuggestionBarPDP",
513
+ widgetConfigId: "bottomSuggestionsBarSweatpants",
514
+ },
515
+ ],
516
+ },
517
+ {
518
+ variantId: "denimWithReviews",
519
+ variantType: "pdp",
520
+ variantTests: [
521
+ { testType: PageVariantTestType.HasReviews, reviewMinimum: 4 },
522
+ { testType: PageVariantTestType.UrlResolver },
523
+ {
524
+ testType: PageVariantTestType.InCollection,
525
+ collections: ["big-mens-denim", "denim", "kids-denim"],
526
+ },
527
+ ],
528
+ productIdExtractor: "url-resolver-product-id",
529
+ widgetMounting: [
530
+ {
531
+ mountingConfigId: "topSuggestionBarPDP",
532
+ widgetConfigId: "topSuggestionsBarDenim",
533
+ },
534
+ {
535
+ mountingConfigId: "chatPreviewPDP",
536
+ widgetConfigId: "chatPreviewPDP",
537
+ },
538
+ {
539
+ mountingConfigId: "bottomSuggestionBarPDP",
540
+ widgetConfigId: "bottomSuggestionsBarDenim",
541
+ },
542
+ ],
543
+ },
544
+ {
545
+ variantId: "twillFleeceWithReviews",
546
+ variantType: "pdp",
547
+ variantTests: [
548
+ { testType: PageVariantTestType.HasReviews, reviewMinimum: 4 },
549
+ { testType: PageVariantTestType.UrlResolver },
550
+ {
551
+ testType: PageVariantTestType.InCollection,
552
+ collections: [
553
+ "big-mens-sweatpants",
554
+ "kids-fleece",
555
+ "mens-sweatpants",
556
+ "mens-twill-bottoms",
557
+ "kids-twill-pants",
558
+ ],
559
+ },
560
+ ],
561
+ productIdExtractor: "url-resolver-product-id",
562
+ widgetMounting: [
563
+ {
564
+ mountingConfigId: "topSuggestionBarPDP",
565
+ widgetConfigId: "topSuggestionsBarTwillFleece",
566
+ },
567
+ {
568
+ mountingConfigId: "chatPreviewPDP",
569
+ widgetConfigId: "chatPreviewPDP",
570
+ },
571
+ {
572
+ mountingConfigId: "bottomSuggestionBarPDP",
573
+ widgetConfigId: "bottomSuggestionsBarTwillFleece",
574
+ },
575
+ ],
576
+ },
577
+ {
578
+ variantId: "shortsWithReviews",
579
+ variantType: "pdp",
580
+ variantTests: [
581
+ { testType: PageVariantTestType.HasReviews, reviewMinimum: 4 },
582
+ { testType: PageVariantTestType.UrlResolver },
583
+ {
584
+ testType: PageVariantTestType.InCollection,
585
+ collections: ["kids-shorts", "big-mens-shorts", "shorts"],
586
+ },
587
+ ],
588
+ productIdExtractor: "url-resolver-product-id",
589
+ widgetMounting: [
590
+ {
591
+ mountingConfigId: "topSuggestionBarPDP",
592
+ widgetConfigId: "topSuggestionsBarShorts",
593
+ },
594
+ {
595
+ mountingConfigId: "chatPreviewPDP",
596
+ widgetConfigId: "chatPreviewPDP",
597
+ },
598
+ {
599
+ mountingConfigId: "bottomSuggestionBarPDP",
600
+ widgetConfigId: "bottomSuggestionsBarShorts",
601
+ },
602
+ ],
603
+ },
604
+ {
605
+ variantId: "accessoriesWithReviews",
606
+ variantType: "pdp",
607
+ variantTests: [
608
+ { testType: PageVariantTestType.HasReviews, reviewMinimum: 4 },
609
+ { testType: PageVariantTestType.UrlResolver },
610
+ {
611
+ testType: PageVariantTestType.InCollection,
612
+ collections: ["bag-collection"],
613
+ },
614
+ ],
615
+ productIdExtractor: "url-resolver-product-id",
616
+ widgetMounting: [
617
+ {
618
+ mountingConfigId: "topSuggestionBarPDP",
619
+ widgetConfigId: "topSuggestionsBarAccessories",
620
+ },
621
+ {
622
+ mountingConfigId: "chatPreviewPDP",
623
+ widgetConfigId: "chatPreviewPDP",
624
+ },
625
+ {
626
+ mountingConfigId: "bottomSuggestionBarPDP",
627
+ widgetConfigId: "bottomSuggestionsBarAccessories",
628
+ },
629
+ ],
630
+ },
631
+ {
632
+ variantId: "footwearWithReviews",
633
+ variantType: "pdp",
634
+ variantTests: [
635
+ { testType: PageVariantTestType.HasReviews, reviewMinimum: 4 },
636
+ { testType: PageVariantTestType.UrlResolver },
637
+ {
638
+ testType: PageVariantTestType.InCollection,
639
+ collections: ["footwear-collection"],
640
+ },
641
+ ],
642
+ productIdExtractor: "url-resolver-product-id",
643
+ widgetMounting: [
644
+ {
645
+ mountingConfigId: "topSuggestionBarPDP",
646
+ widgetConfigId: "topSuggestionsBarFootwear",
647
+ },
648
+ {
649
+ mountingConfigId: "chatPreviewPDP",
650
+ widgetConfigId: "chatPreviewPDP",
651
+ },
652
+ {
653
+ mountingConfigId: "bottomSuggestionBarPDP",
654
+ widgetConfigId: "bottomSuggestionsBarFootwear",
655
+ },
656
+ ],
657
+ },
658
+ {
659
+ variantId: "outerwear",
660
+ variantType: "pdp",
661
+ variantTests: [
662
+ { testType: PageVariantTestType.UrlResolver },
663
+ {
664
+ testType: PageVariantTestType.InCollection,
665
+ collections: ["outerwear", "big-mens-outerwear"],
666
+ },
667
+ ],
668
+ productIdExtractor: "url-resolver-product-id",
669
+ widgetMounting: [
670
+ {
671
+ mountingConfigId: "topSuggestionBarPDP",
672
+ widgetConfigId: "topSuggestionsBarOuterwear",
673
+ },
674
+ {
675
+ mountingConfigId: "chatPreviewPDP",
676
+ widgetConfigId: "chatPreviewPDP",
677
+ },
678
+ {
679
+ mountingConfigId: "bottomSuggestionBarPDP",
680
+ widgetConfigId: "bottomSuggestionsBarOuterwear",
681
+ },
682
+ ],
683
+ },
684
+ {
685
+ variantId: "tshirts",
686
+ variantType: "pdp",
687
+ variantTests: [
688
+ { testType: PageVariantTestType.UrlResolver },
689
+ {
690
+ testType: PageVariantTestType.InCollection,
691
+ collections: ["tshirt", "big-mens-t-shirts"],
692
+ },
693
+ ],
694
+ productIdExtractor: "url-resolver-product-id",
695
+ widgetMounting: [
696
+ {
697
+ mountingConfigId: "topSuggestionBarPDP",
698
+ widgetConfigId: "topSuggestionsBarTshirts",
699
+ },
700
+ {
701
+ mountingConfigId: "chatPreviewPDP",
702
+ widgetConfigId: "chatPreviewPDP",
703
+ },
704
+ {
705
+ mountingConfigId: "bottomSuggestionBarPDP",
706
+ widgetConfigId: "bottomSuggestionsBarTshirts",
707
+ },
708
+ ],
709
+ },
710
+ {
711
+ variantId: "sweatshirts",
712
+ variantType: "pdp",
713
+ variantTests: [
714
+ { testType: PageVariantTestType.UrlResolver },
715
+ {
716
+ testType: PageVariantTestType.InCollection,
717
+ collections: ["sweatshirts", "big-mens-sweatshirts"],
718
+ },
719
+ ],
720
+ productIdExtractor: "url-resolver-product-id",
721
+ widgetMounting: [
722
+ {
723
+ mountingConfigId: "topSuggestionBarPDP",
724
+ widgetConfigId: "topSuggestionsBarSweatshirts",
725
+ },
726
+ {
727
+ mountingConfigId: "chatPreviewPDP",
728
+ widgetConfigId: "chatPreviewPDP",
729
+ },
730
+ {
731
+ mountingConfigId: "bottomSuggestionBarPDP",
732
+ widgetConfigId: "bottomSuggestionsBarSweatshirts",
733
+ },
734
+ ],
735
+ },
736
+ {
737
+ variantId: "sweatpants",
738
+ variantType: "pdp",
739
+ variantTests: [
740
+ { testType: PageVariantTestType.UrlResolver },
741
+ {
742
+ testType: PageVariantTestType.InCollection,
743
+ collections: ["big-mens-sweatpants", "mens-sweatpants"],
744
+ },
745
+ ],
746
+ productIdExtractor: "url-resolver-product-id",
747
+ widgetMounting: [
748
+ {
749
+ mountingConfigId: "topSuggestionBarPDP",
750
+ widgetConfigId: "topSuggestionsBarSweatpants",
751
+ },
752
+ {
753
+ mountingConfigId: "chatPreviewPDP",
754
+ widgetConfigId: "chatPreviewPDP",
755
+ },
756
+ {
757
+ mountingConfigId: "bottomSuggestionBarPDP",
758
+ widgetConfigId: "bottomSuggestionsBarSweatpants",
759
+ },
760
+ ],
761
+ },
762
+ {
763
+ variantId: "graphic",
764
+ variantType: "pdp",
765
+ variantTests: [
766
+ { testType: PageVariantTestType.UrlResolver },
767
+ { testType: PageVariantTestType.HasReviews, reviewMinimum: 4 },
768
+ {
769
+ testType: PageVariantTestType.InCollection,
770
+ collections: ["mens-graphic-prints-collection"],
771
+ },
772
+ ],
773
+ productIdExtractor: "url-resolver-product-id",
774
+ widgetMounting: [
775
+ {
776
+ mountingConfigId: "topSuggestionBarPDP",
777
+ widgetConfigId: "topSuggestionsBarGraphic",
778
+ },
779
+ {
780
+ mountingConfigId: "chatPreviewPDP",
781
+ widgetConfigId: "chatPreviewPDP",
782
+ },
783
+ {
784
+ mountingConfigId: "bottomSuggestionBarPDP",
785
+ widgetConfigId: "bottomSuggestionsBarGraphic",
786
+ },
787
+ ],
788
+ },
789
+ {
790
+ variantId: "denim",
791
+ variantType: "pdp",
792
+ variantTests: [
793
+ { testType: PageVariantTestType.UrlResolver },
794
+ {
795
+ testType: PageVariantTestType.InCollection,
796
+ collections: ["big-mens-denim", "denim", "kids-denim"],
797
+ },
798
+ ],
799
+ productIdExtractor: "url-resolver-product-id",
800
+ widgetMounting: [
801
+ {
802
+ mountingConfigId: "topSuggestionBarPDP",
803
+ widgetConfigId: "topSuggestionsBarDenim",
804
+ },
805
+ {
806
+ mountingConfigId: "chatPreviewPDP",
807
+ widgetConfigId: "chatPreviewPDP",
808
+ },
809
+ {
810
+ mountingConfigId: "bottomSuggestionBarPDP",
811
+ widgetConfigId: "bottomSuggestionsBarDenim",
812
+ },
813
+ ],
814
+ },
815
+ {
816
+ variantId: "twill-fleece",
817
+ variantType: "pdp",
818
+ variantTests: [
819
+ { testType: PageVariantTestType.UrlResolver },
820
+ {
821
+ testType: PageVariantTestType.InCollection,
822
+ collections: [
823
+ "big-mens-sweatpants",
824
+ "kids-fleece",
825
+ "mens-sweatpants",
826
+ "mens-twill-bottoms",
827
+ "kids-twill-pants",
828
+ ],
829
+ },
830
+ ],
831
+ productIdExtractor: "url-resolver-product-id",
832
+ widgetMounting: [
833
+ {
834
+ mountingConfigId: "topSuggestionBarPDP",
835
+ widgetConfigId: "topSuggestionsBarTwillFleece",
836
+ },
837
+ {
838
+ mountingConfigId: "chatPreviewPDP",
839
+ widgetConfigId: "chatPreviewPDP",
840
+ },
841
+ {
842
+ mountingConfigId: "bottomSuggestionBarPDP",
843
+ widgetConfigId: "bottomSuggestionsBarTwillFleece",
844
+ },
845
+ ],
846
+ },
847
+ {
848
+ variantId: "shorts",
849
+ variantType: "pdp",
850
+ variantTests: [
851
+ { testType: PageVariantTestType.UrlResolver },
852
+ {
853
+ testType: PageVariantTestType.InCollection,
854
+ collections: ["kids-shorts", "big-mens-shorts", "shorts"],
855
+ },
856
+ ],
857
+ productIdExtractor: "url-resolver-product-id",
858
+ widgetMounting: [
859
+ {
860
+ mountingConfigId: "topSuggestionBarPDP",
861
+ widgetConfigId: "topSuggestionsBarShorts",
862
+ },
863
+ {
864
+ mountingConfigId: "chatPreviewPDP",
865
+ widgetConfigId: "chatPreviewPDP",
866
+ },
867
+ {
868
+ mountingConfigId: "bottomSuggestionBarPDP",
869
+ widgetConfigId: "bottomSuggestionsBarShorts",
870
+ },
871
+ ],
872
+ },
873
+ {
874
+ variantId: "accessories",
875
+ variantType: "pdp",
876
+ variantTests: [
877
+ { testType: PageVariantTestType.UrlResolver },
878
+ {
879
+ testType: PageVariantTestType.InCollection,
880
+ collections: ["bag-collection"],
881
+ },
882
+ ],
883
+ productIdExtractor: "url-resolver-product-id",
884
+ widgetMounting: [
885
+ {
886
+ mountingConfigId: "topSuggestionBarPDP",
887
+ widgetConfigId: "topSuggestionsBarAccessories",
888
+ },
889
+ {
890
+ mountingConfigId: "chatPreviewPDP",
891
+ widgetConfigId: "chatPreviewPDP",
892
+ },
893
+ {
894
+ mountingConfigId: "bottomSuggestionBarPDP",
895
+ widgetConfigId: "bottomSuggestionsBarAccessories",
896
+ },
897
+ ],
898
+ },
899
+ {
900
+ variantId: "footwear",
901
+ variantType: "pdp",
902
+ variantTests: [
903
+ { testType: PageVariantTestType.UrlResolver },
904
+ {
905
+ testType: PageVariantTestType.InCollection,
906
+ collections: ["footwear-collection"],
907
+ },
908
+ ],
909
+ productIdExtractor: "url-resolver-product-id",
910
+ widgetMounting: [
911
+ {
912
+ mountingConfigId: "topSuggestionBarPDP",
913
+ widgetConfigId: "topSuggestionsBarFootwear",
914
+ },
915
+ {
916
+ mountingConfigId: "chatPreviewPDP",
917
+ widgetConfigId: "chatPreviewPDP",
918
+ },
919
+ {
920
+ mountingConfigId: "bottomSuggestionBarPDP",
921
+ widgetConfigId: "bottomSuggestionsBarFootwear",
922
+ },
923
+ ],
924
+ },
925
+ {
926
+ variantId: "pdp",
927
+ variantType: "pdp",
928
+ variantTests: [{ testType: PageVariantTestType.UrlResolver }],
929
+ productIdExtractor: "url-resolver-product-id",
930
+ widgetMounting: [
931
+ {
932
+ mountingConfigId: "topSuggestionBarPDP",
933
+ widgetConfigId: "topSuggestionsBar",
934
+ },
935
+ {
936
+ mountingConfigId: "chatPreviewPDP",
937
+ widgetConfigId: "chatPreviewPDP",
938
+ },
939
+ {
940
+ mountingConfigId: "bottomSuggestionBarPDP",
941
+ widgetConfigId: "bottomSuggestionsBar",
942
+ },
943
+ ],
944
+ },
945
+ ],
946
+ widgetConfigs: {
947
+ searchIconEntryPoint: {
948
+ widgetConfigId: "searchIconEntryPoint",
949
+ type: WidgetType.SearchZeroStateEntryPoint,
950
+ searchZeroStateVariant: "backgroundTertiary",
951
+ searchInputVariant: "standard",
952
+ suggestionButtonConfig: {
953
+ variant: "darkAccent",
954
+ hoverVariant: "secondaryAccent",
955
+ borderRadius: "md",
956
+ },
957
+ layout: "icon",
958
+ searchIconVariant: "bold",
959
+ searchIconSize: 26,
960
+ searchBoxPlaceholder: 'Try "Jeans that work for all body types"',
961
+ initialSuggestions: [
962
+ "Stone washed jeans",
963
+ "White torn up jeans",
964
+ "Black soft t-shirt",
965
+ "Black moto-inspired jeans",
966
+ "Graphic t-shirt",
967
+ ],
968
+ usingPortal: true,
969
+ } satisfies SearchEntryPointWidgetConfig,
970
+ searchOverlayHost: {
971
+ widgetConfigId: "searchOverlayHost",
972
+ type: WidgetType.SearchOverlayHost,
973
+ } satisfies SearchOverlayHostWidgetConfig,
974
+ searchResultsEntryPoint: {
975
+ widgetConfigId: "searchResultsEntryPoint",
976
+ type: WidgetType.SearchResultsEntryPoint,
977
+ searchBoxPlaceholder: 'Try "Modern skinny jeans"',
978
+ productGridVariant: "standard",
979
+ searchFilterSidebarVariant: "darkButton",
980
+ searchInputVariant: "standard",
981
+ } satisfies SearchResultsEntryPointWidgetConfig,
982
+ chatPreviewPDP: {
983
+ widgetConfigId: "chatPreviewPDP",
984
+ type: WidgetType.ChatPreview,
985
+ variant: "flat",
986
+ } satisfies ChatPreviewWidgetConfig,
987
+ chatPreviewPLP: {
988
+ widgetConfigId: "chatPreviewPLP",
989
+ type: WidgetType.ChatPreview,
990
+ variant: "flat",
991
+ addSeparators: true,
992
+ footerConfig: {
993
+ replyButtonText: "What can I help you find?",
994
+ replyButtonIcon: "magnifyingGlass",
995
+ },
996
+ } satisfies ChatPreviewWidgetConfig,
997
+ topSuggestionsBar: {
998
+ widgetConfigId: "topSuggestionsBar",
999
+ contentId: "spiffy-top-suggestion-bar-contents",
1000
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1001
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1002
+ type: WidgetType.SuggestionBarV2,
1003
+ variant: "secondary",
1004
+ hoverVariant: "secondaryDark",
1005
+ animationSpeed: "none",
1006
+ buttonBorderRadius: "md",
1007
+ boldFirstButton: true,
1008
+ buttonTexts: {
1009
+ default: [
1010
+ "How do they fit?",
1011
+ "What's unique about this?",
1012
+ "What's the current deals?",
1013
+ ],
1014
+ },
1015
+ } satisfies SuggestionBarWidgetV2Config,
1016
+ bottomSuggestionsBar: {
1017
+ widgetConfigId: "bottomSuggestionsBar",
1018
+ contentId: "spiffy-top-suggestion-bar-contents",
1019
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1020
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1021
+ type: WidgetType.SuggestionBarV2,
1022
+ variant: "darkPrimary",
1023
+ hoverVariant: "secondaryDark",
1024
+ animationSpeed: "none",
1025
+ buttonBorderRadius: "md",
1026
+ boldFirstButton: true,
1027
+ buttonTexts: {
1028
+ default: [
1029
+ "How do they fit?",
1030
+ "What's unique about this?",
1031
+ "What's the current deals?",
1032
+ ],
1033
+ },
1034
+ } satisfies SuggestionBarWidgetV2Config,
1035
+ topSuggestionsBarOuterwear: {
1036
+ widgetConfigId: "topSuggestionsBarOuterwear",
1037
+ contentId: "spiffy-top-suggestion-bar-contents",
1038
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1039
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1040
+ type: WidgetType.SuggestionBarV2,
1041
+ variant: "secondary",
1042
+ hoverVariant: "secondaryDark",
1043
+ animationSpeed: "none",
1044
+ buttonBorderRadius: "md",
1045
+ boldFirstButton: true,
1046
+ buttonTexts: {
1047
+ default: [
1048
+ "How insulated is this jacket?",
1049
+ "What material is it made of?",
1050
+ "Can I layer this over a hoodie?",
1051
+ "Does the material stretch?",
1052
+ "Does it run small?",
1053
+ ],
1054
+ },
1055
+ } satisfies SuggestionBarWidgetV2Config,
1056
+ bottomSuggestionsBarOuterwear: {
1057
+ widgetConfigId: "bottomSuggestionsBarOuterwear",
1058
+ contentId: "spiffy-top-suggestion-bar-contents",
1059
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1060
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1061
+ type: WidgetType.SuggestionBarV2,
1062
+ variant: "darkPrimary",
1063
+ hoverVariant: "secondaryDark",
1064
+ animationSpeed: "none",
1065
+ buttonBorderRadius: "md",
1066
+ boldFirstButton: true,
1067
+ buttonTexts: {
1068
+ default: [
1069
+ "How insulated is this jacket?",
1070
+ "What material is it made of?",
1071
+ "Can I layer this over a hoodie?",
1072
+ "Does the material stretch?",
1073
+ "Does it run small?",
1074
+ ],
1075
+ },
1076
+ } satisfies SuggestionBarWidgetV2Config,
1077
+ topSuggestionsBarTshirts: {
1078
+ widgetConfigId: "topSuggestionsBarTshirts",
1079
+ contentId: "spiffy-top-suggestion-bar-contents",
1080
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1081
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1082
+ type: WidgetType.SuggestionBarV2,
1083
+ variant: "secondary",
1084
+ hoverVariant: "secondaryDark",
1085
+ animationSpeed: "none",
1086
+ buttonBorderRadius: "md",
1087
+ boldFirstButton: true,
1088
+ buttonTexts: {
1089
+ default: [
1090
+ "How does it fit?",
1091
+ "Will it shrink after washing?",
1092
+ "How does it feel?",
1093
+ "Which bottoms does it pair with?",
1094
+ ],
1095
+ },
1096
+ } satisfies SuggestionBarWidgetV2Config,
1097
+ bottomSuggestionsBarTshirts: {
1098
+ widgetConfigId: "bottomSuggestionsBarTshirts",
1099
+ contentId: "spiffy-top-suggestion-bar-contents",
1100
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1101
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1102
+ type: WidgetType.SuggestionBarV2,
1103
+ variant: "darkPrimary",
1104
+ hoverVariant: "secondaryDark",
1105
+ animationSpeed: "none",
1106
+ buttonBorderRadius: "md",
1107
+ boldFirstButton: true,
1108
+ buttonTexts: {
1109
+ default: [
1110
+ "How does it fit?",
1111
+ "Will it shrink after washing?",
1112
+ "How does it feel?",
1113
+ "Which bottoms does it pair with?",
1114
+ ],
1115
+ },
1116
+ } satisfies SuggestionBarWidgetV2Config,
1117
+ topSuggestionsBarSweatshirts: {
1118
+ widgetConfigId: "topSuggestionsBarSweatshirts",
1119
+ contentId: "spiffy-top-suggestion-bar-contents",
1120
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1121
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1122
+ type: WidgetType.SuggestionBarV2,
1123
+ variant: "secondary",
1124
+ hoverVariant: "secondaryDark",
1125
+ animationSpeed: "none",
1126
+ buttonBorderRadius: "md",
1127
+ boldFirstButton: true,
1128
+ buttonTexts: {
1129
+ default: [
1130
+ "How does it fit?",
1131
+ "How does it feel?",
1132
+ "What's the style?",
1133
+ "Does it pair with sweatpants?",
1134
+ ],
1135
+ },
1136
+ } satisfies SuggestionBarWidgetV2Config,
1137
+ bottomSuggestionsBarSweatshirts: {
1138
+ widgetConfigId: "bottomSuggestionsBarSweatshirts",
1139
+ contentId: "spiffy-top-suggestion-bar-contents",
1140
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1141
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1142
+ type: WidgetType.SuggestionBarV2,
1143
+ variant: "darkPrimary",
1144
+ hoverVariant: "secondaryDark",
1145
+ animationSpeed: "none",
1146
+ buttonBorderRadius: "md",
1147
+ boldFirstButton: true,
1148
+ buttonTexts: {
1149
+ default: [
1150
+ "How does it fit?",
1151
+ "How does it feel?",
1152
+ "What's the style?",
1153
+ "Does it pair with sweatshirts?",
1154
+ ],
1155
+ },
1156
+ } satisfies SuggestionBarWidgetV2Config,
1157
+ topSuggestionsBarSweatpants: {
1158
+ widgetConfigId: "topSuggestionsBarSweatpants",
1159
+ contentId: "spiffy-top-suggestion-bar-contents",
1160
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1161
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1162
+ type: WidgetType.SuggestionBarV2,
1163
+ variant: "secondary",
1164
+ hoverVariant: "secondaryDark",
1165
+ animationSpeed: "none",
1166
+ buttonBorderRadius: "md",
1167
+ boldFirstButton: true,
1168
+ buttonTexts: {
1169
+ default: [
1170
+ "How does it fit?",
1171
+ "How does it feel?",
1172
+ "What's the style?",
1173
+ "Does it pair with sweatshirts?",
1174
+ ],
1175
+ },
1176
+ } satisfies SuggestionBarWidgetV2Config,
1177
+ bottomSuggestionsBarSweatpants: {
1178
+ widgetConfigId: "bottomSuggestionsBarSweatpants",
1179
+ contentId: "spiffy-top-suggestion-bar-contents",
1180
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1181
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1182
+ type: WidgetType.SuggestionBarV2,
1183
+ variant: "darkPrimary",
1184
+ hoverVariant: "secondaryDark",
1185
+ animationSpeed: "none",
1186
+ buttonBorderRadius: "md",
1187
+ boldFirstButton: true,
1188
+ buttonTexts: {
1189
+ default: [
1190
+ "How does it fit?",
1191
+ "How does it feel?",
1192
+ "What's the style?",
1193
+ "Does it pair with sweatshirts?",
1194
+ ],
1195
+ },
1196
+ } satisfies SuggestionBarWidgetV2Config,
1197
+ topSuggestionsBarGraphic: {
1198
+ widgetConfigId: "topSuggestionsBarGraphic",
1199
+ contentId: "spiffy-top-suggestion-bar-contents",
1200
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1201
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1202
+ type: WidgetType.SuggestionBarV2,
1203
+ variant: "secondary",
1204
+ hoverVariant: "secondaryDark",
1205
+ animationSpeed: "none",
1206
+ buttonBorderRadius: "md",
1207
+ boldFirstButton: true,
1208
+ buttonTexts: {
1209
+ default: [
1210
+ "What is the style? (Work/tech/street)",
1211
+ "What is the sleeve length?",
1212
+ "Does it pair with bottoms?",
1213
+ ],
1214
+ },
1215
+ } satisfies SuggestionBarWidgetV2Config,
1216
+ bottomSuggestionsBarGraphic: {
1217
+ widgetConfigId: "bottomSuggestionsBarGraphic",
1218
+ contentId: "spiffy-top-suggestion-bar-contents",
1219
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1220
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1221
+ type: WidgetType.SuggestionBarV2,
1222
+ variant: "darkPrimary",
1223
+ hoverVariant: "secondaryDark",
1224
+ animationSpeed: "none",
1225
+ buttonBorderRadius: "md",
1226
+ boldFirstButton: true,
1227
+ buttonTexts: {
1228
+ default: [
1229
+ "What is the style? (Work/tech/street)",
1230
+ "What is the sleeve length?",
1231
+ "Does it pair with bottoms?",
1232
+ ],
1233
+ },
1234
+ } satisfies SuggestionBarWidgetV2Config,
1235
+ topSuggestionsBarDenim: {
1236
+ widgetConfigId: "topSuggestionsBarDenim",
1237
+ contentId: "spiffy-top-suggestion-bar-contents",
1238
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1239
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1240
+ type: WidgetType.SuggestionBarV2,
1241
+ variant: "secondary",
1242
+ hoverVariant: "secondaryDark",
1243
+ animationSpeed: "none",
1244
+ buttonBorderRadius: "md",
1245
+ boldFirstButton: true,
1246
+ buttonTexts: {
1247
+ default: [
1248
+ "How do they fit?",
1249
+ "What size should I get?",
1250
+ "What's the rise?",
1251
+ "What's the material?",
1252
+ ],
1253
+ },
1254
+ } satisfies SuggestionBarWidgetV2Config,
1255
+ bottomSuggestionsBarDenim: {
1256
+ widgetConfigId: "bottomSuggestionsBarDenim",
1257
+ contentId: "spiffy-top-suggestion-bar-contents",
1258
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1259
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1260
+ type: WidgetType.SuggestionBarV2,
1261
+ variant: "darkPrimary",
1262
+ hoverVariant: "secondaryDark",
1263
+ animationSpeed: "none",
1264
+ buttonBorderRadius: "md",
1265
+ boldFirstButton: true,
1266
+ buttonTexts: {
1267
+ default: [
1268
+ "How do they fit?",
1269
+ "What size should I get?",
1270
+ "What's the rise?",
1271
+ "What's the material?",
1272
+ ],
1273
+ },
1274
+ } satisfies SuggestionBarWidgetV2Config,
1275
+ topSuggestionsBarTwillFleece: {
1276
+ widgetConfigId: "topSuggestionsBarTwillFleece",
1277
+ contentId: "spiffy-top-suggestion-bar-contents",
1278
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1279
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1280
+ type: WidgetType.SuggestionBarV2,
1281
+ variant: "secondary",
1282
+ hoverVariant: "secondaryDark",
1283
+
1284
+ buttonBorderRadius: "md",
1285
+ boldFirstButton: true,
1286
+ buttonTexts: {
1287
+ default: [
1288
+ "Are these true to size?",
1289
+ "What size should I get?",
1290
+ "How does it feel?",
1291
+ "Do they stretch out over time?",
1292
+ "What's the fit/style?",
1293
+ ],
1294
+ },
1295
+ } satisfies SuggestionBarWidgetV2Config,
1296
+ bottomSuggestionsBarTwillFleece: {
1297
+ widgetConfigId: "bottomSuggestionsBarTwillFleece",
1298
+ contentId: "spiffy-top-suggestion-bar-contents",
1299
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1300
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1301
+ type: WidgetType.SuggestionBarV2,
1302
+ variant: "darkPrimary",
1303
+ hoverVariant: "secondaryDark",
1304
+ animationSpeed: "none",
1305
+ buttonBorderRadius: "md",
1306
+ boldFirstButton: true,
1307
+ buttonTexts: {
1308
+ default: [
1309
+ "Are these true to size?",
1310
+ "What size should I get?",
1311
+ "How does it feel?",
1312
+ "Do they stretch out over time?",
1313
+ "What's the fit/style?",
1314
+ ],
1315
+ },
1316
+ } satisfies SuggestionBarWidgetV2Config,
1317
+ topSuggestionsBarShorts: {
1318
+ widgetConfigId: "topSuggestionsBarShorts",
1319
+ contentId: "spiffy-top-suggestion-bar-contents",
1320
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1321
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1322
+ type: WidgetType.SuggestionBarV2,
1323
+ variant: "secondary",
1324
+ hoverVariant: "secondaryDark",
1325
+ animationSpeed: "none",
1326
+ buttonBorderRadius: "md",
1327
+ boldFirstButton: true,
1328
+ buttonTexts: {
1329
+ default: [
1330
+ "How far down does it go?",
1331
+ "Are these true to size?",
1332
+ "What size should I get?",
1333
+ "How does it feel?",
1334
+ "Do they stretch out over time?",
1335
+ "What's the fit/style?",
1336
+ ],
1337
+ },
1338
+ } satisfies SuggestionBarWidgetV2Config,
1339
+ bottomSuggestionsBarShorts: {
1340
+ widgetConfigId: "bottomSuggestionsBarShorts",
1341
+ contentId: "spiffy-top-suggestion-bar-contents",
1342
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1343
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1344
+ type: WidgetType.SuggestionBarV2,
1345
+ variant: "darkPrimary",
1346
+ hoverVariant: "secondaryDark",
1347
+ animationSpeed: "none",
1348
+ buttonBorderRadius: "md",
1349
+ boldFirstButton: true,
1350
+ buttonTexts: {
1351
+ default: [
1352
+ "How far down does it go?",
1353
+ "Are these true to size?",
1354
+ "What size should I get?",
1355
+ "How does it feel?",
1356
+ "Do they stretch out over time?",
1357
+ "What's the fit/style?",
1358
+ ],
1359
+ },
1360
+ } satisfies SuggestionBarWidgetV2Config,
1361
+ topSuggestionsBarAccessories: {
1362
+ widgetConfigId: "topSuggestionsBarAccessories",
1363
+ contentId: "spiffy-top-suggestion-bar-contents",
1364
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1365
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1366
+ type: WidgetType.SuggestionBarV2,
1367
+ variant: "secondary",
1368
+ hoverVariant: "secondaryDark",
1369
+ animationSpeed: "none",
1370
+ buttonBorderRadius: "md",
1371
+ boldFirstButton: true,
1372
+ buttonTexts: {
1373
+ default: [
1374
+ "How does it enhance my outfit?",
1375
+ "Is it good for everyday use?",
1376
+ "Is it water resistant?",
1377
+ "Is it carry-on size?",
1378
+ ],
1379
+ },
1380
+ } satisfies SuggestionBarWidgetV2Config,
1381
+ bottomSuggestionsBarAccessories: {
1382
+ widgetConfigId: "bottomSuggestionsBarAccessories",
1383
+ contentId: "spiffy-top-suggestion-bar-contents",
1384
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1385
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1386
+ type: WidgetType.SuggestionBarV2,
1387
+ variant: "darkPrimary",
1388
+ hoverVariant: "secondaryDark",
1389
+ animationSpeed: "none",
1390
+ buttonBorderRadius: "md",
1391
+ boldFirstButton: true,
1392
+ buttonTexts: {
1393
+ default: [
1394
+ "How does it enhance my outfit?",
1395
+ "Is it good for everyday use?",
1396
+ "Is it water resistant?",
1397
+ "Is it carry-on size?",
1398
+ ],
1399
+ },
1400
+ } satisfies SuggestionBarWidgetV2Config,
1401
+ topSuggestionsBarFootwear: {
1402
+ widgetConfigId: "topSuggestionsBar",
1403
+ contentId: "spiffy-top-suggestion-bar-contents",
1404
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1405
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1406
+ type: WidgetType.SuggestionBarV2,
1407
+ variant: "secondary",
1408
+ hoverVariant: "secondaryDark",
1409
+ animationSpeed: "none",
1410
+ buttonBorderRadius: "md",
1411
+ boldFirstButton: true,
1412
+ buttonTexts: {
1413
+ default: [
1414
+ "What size should I choose?",
1415
+ "Are they good for everyday wear?",
1416
+ ],
1417
+ },
1418
+ } satisfies SuggestionBarWidgetV2Config,
1419
+ bottomSuggestionsBarFootwear: {
1420
+ widgetConfigId: "bottomSuggestionsBarFootwear",
1421
+ contentId: "spiffy-top-suggestion-bar-contents",
1422
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1423
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1424
+ type: WidgetType.SuggestionBarV2,
1425
+ variant: "darkPrimary",
1426
+ hoverVariant: "secondaryDark",
1427
+ animationSpeed: "none",
1428
+ buttonBorderRadius: "md",
1429
+ boldFirstButton: true,
1430
+ buttonTexts: {
1431
+ default: [
1432
+ "What size should I choose?",
1433
+ "Are they good for everyday wear?",
1434
+ "How do they fit?",
1435
+ "What material are they made of?",
1436
+ ],
1437
+ },
1438
+ } satisfies SuggestionBarWidgetV2Config,
1439
+ topSuggestionsBarOuterwearWithReviews: {
1440
+ widgetConfigId: "topSuggestionsBarOuterwearWithReviews",
1441
+ contentId: "spiffy-top-suggestion-bar-contents",
1442
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1443
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1444
+ type: WidgetType.SuggestionBarV2,
1445
+ variant: "secondary",
1446
+ hoverVariant: "secondaryDark",
1447
+ animationSpeed: "none",
1448
+ buttonBorderRadius: "md",
1449
+ boldFirstButton: true,
1450
+ buttonTexts: {
1451
+ default: [
1452
+ "Summarize the reviews.",
1453
+ "How insulated is this jacket?",
1454
+ "What material is it made of?",
1455
+ "Can I layer this over a hoodie?",
1456
+ "Does the material stretch?",
1457
+ "Does it run small?",
1458
+ ],
1459
+ },
1460
+ } satisfies SuggestionBarWidgetV2Config,
1461
+ bottomSuggestionsBarOuterwearWithReviews: {
1462
+ widgetConfigId: "bottomSuggestionsBarOuterwearWithReviews",
1463
+ contentId: "spiffy-bottom-suggestion-bar-contents",
1464
+ metricDisplayLocation: ChatElementDisplayLocation.BOTTOM_REVIEWS_SNIPPET,
1465
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_BOTTOM,
1466
+ type: WidgetType.SuggestionBarV2,
1467
+ variant: "darkPrimary",
1468
+ hoverVariant: "secondaryDark",
1469
+ animationSpeed: "none",
1470
+ buttonBorderRadius: "md",
1471
+ boldFirstButton: true,
1472
+ buttonTexts: {
1473
+ default: [
1474
+ "Summarize the reviews.",
1475
+ "How insulated is this jacket?",
1476
+ "What material is it made of?",
1477
+ "Can I layer this over a hoodie?",
1478
+ "Does the material stretch?",
1479
+ "Does it run small?",
1480
+ ],
1481
+ },
1482
+ } satisfies SuggestionBarWidgetV2Config,
1483
+ topSuggestionsBarTshirtsWithReviews: {
1484
+ widgetConfigId: "topSuggestionsBarTshirtsWithReviews",
1485
+ contentId: "spiffy-top-suggestion-bar-contents",
1486
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1487
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1488
+ type: WidgetType.SuggestionBarV2,
1489
+ variant: "secondary",
1490
+ hoverVariant: "secondaryDark",
1491
+ animationSpeed: "none",
1492
+ buttonBorderRadius: "md",
1493
+ boldFirstButton: true,
1494
+ buttonTexts: {
1495
+ default: [
1496
+ "Summarize the reviews.",
1497
+ "How does it fit?",
1498
+ "What material is it made of?",
1499
+ "Does it shrink in the wash?",
1500
+ "Is it true to size?",
1501
+ "What colors does it come in?",
1502
+ ],
1503
+ },
1504
+ } satisfies SuggestionBarWidgetV2Config,
1505
+ bottomSuggestionsBarTshirtsWithReviews: {
1506
+ widgetConfigId: "bottomSuggestionsBarTshirtsWithReviews",
1507
+ contentId: "spiffy-bottom-suggestion-bar-contents",
1508
+ metricDisplayLocation: ChatElementDisplayLocation.BOTTOM_REVIEWS_SNIPPET,
1509
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_BOTTOM,
1510
+ type: WidgetType.SuggestionBarV2,
1511
+ variant: "darkPrimary",
1512
+ hoverVariant: "secondaryDark",
1513
+ animationSpeed: "none",
1514
+ buttonBorderRadius: "md",
1515
+ boldFirstButton: true,
1516
+ buttonTexts: {
1517
+ default: [
1518
+ "Summarize the reviews.",
1519
+ "How does it fit?",
1520
+ "What material is it made of?",
1521
+ "Does it shrink in the wash?",
1522
+ "Is it true to size?",
1523
+ "What colors does it come in?",
1524
+ ],
1525
+ },
1526
+ } satisfies SuggestionBarWidgetV2Config,
1527
+ topSuggestionsBarSweatshirtsWithReviews: {
1528
+ widgetConfigId: "topSuggestionsBarSweatshirtsWithReviews",
1529
+ contentId: "spiffy-top-suggestion-bar-contents",
1530
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1531
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1532
+ type: WidgetType.SuggestionBarV2,
1533
+ variant: "secondary",
1534
+ hoverVariant: "secondaryDark",
1535
+ animationSpeed: "none",
1536
+ buttonBorderRadius: "md",
1537
+ boldFirstButton: true,
1538
+ buttonTexts: {
1539
+ default: [
1540
+ "Summarize the reviews.",
1541
+ "How does it fit?",
1542
+ "How does it feel?",
1543
+ "What's the style?",
1544
+ "Does it pair with sweatpants?",
1545
+ "Is it warm enough for winter?",
1546
+ ],
1547
+ },
1548
+ } satisfies SuggestionBarWidgetV2Config,
1549
+ bottomSuggestionsBarSweatshirtsWithReviews: {
1550
+ widgetConfigId: "bottomSuggestionsBarSweatshirtsWithReviews",
1551
+ contentId: "spiffy-bottom-suggestion-bar-contents",
1552
+ metricDisplayLocation: ChatElementDisplayLocation.BOTTOM_REVIEWS_SNIPPET,
1553
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_BOTTOM,
1554
+ type: WidgetType.SuggestionBarV2,
1555
+ variant: "darkPrimary",
1556
+ hoverVariant: "secondaryDark",
1557
+ animationSpeed: "none",
1558
+ buttonBorderRadius: "md",
1559
+ boldFirstButton: true,
1560
+ buttonTexts: {
1561
+ default: [
1562
+ "Summarize the reviews.",
1563
+ "How does it fit?",
1564
+ "How does it feel?",
1565
+ "What's the style?",
1566
+ "Does it pair with sweatpants?",
1567
+ "Is it warm enough for winter?",
1568
+ ],
1569
+ },
1570
+ } satisfies SuggestionBarWidgetV2Config,
1571
+ topSuggestionsBarSweatpantsWithReviews: {
1572
+ widgetConfigId: "topSuggestionsBarSweatpantsWithReviews",
1573
+ contentId: "spiffy-top-suggestion-bar-contents",
1574
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1575
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1576
+ type: WidgetType.SuggestionBarV2,
1577
+ variant: "secondary",
1578
+ hoverVariant: "secondaryDark",
1579
+ animationSpeed: "none",
1580
+ buttonBorderRadius: "md",
1581
+ boldFirstButton: true,
1582
+ buttonTexts: {
1583
+ default: [
1584
+ "Summarize the reviews.",
1585
+ "How does it fit?",
1586
+ "How does it feel?",
1587
+ "What's the style?",
1588
+ "Does it pair with sweatshirts?",
1589
+ "Are they true to size?",
1590
+ ],
1591
+ },
1592
+ } satisfies SuggestionBarWidgetV2Config,
1593
+ bottomSuggestionsBarSweatpantsWithReviews: {
1594
+ widgetConfigId: "bottomSuggestionsBarSweatpantsWithReviews",
1595
+ contentId: "spiffy-bottom-suggestion-bar-contents",
1596
+ metricDisplayLocation: ChatElementDisplayLocation.BOTTOM_REVIEWS_SNIPPET,
1597
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_BOTTOM,
1598
+ type: WidgetType.SuggestionBarV2,
1599
+ variant: "darkPrimary",
1600
+ hoverVariant: "secondaryDark",
1601
+ animationSpeed: "none",
1602
+ buttonBorderRadius: "md",
1603
+ boldFirstButton: true,
1604
+ buttonTexts: {
1605
+ default: [
1606
+ "Summarize the reviews.",
1607
+ "How does it fit?",
1608
+ "How does it feel?",
1609
+ "What's the style?",
1610
+ "Does it pair with sweatshirts?",
1611
+ "Are they true to size?",
1612
+ ],
1613
+ },
1614
+ } satisfies SuggestionBarWidgetV2Config,
1615
+ topSuggestionsBarDenimWithReviews: {
1616
+ widgetConfigId: "topSuggestionsBarDenimWithReviews",
1617
+ contentId: "spiffy-top-suggestion-bar-contents",
1618
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1619
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1620
+ type: WidgetType.SuggestionBarV2,
1621
+ variant: "secondary",
1622
+ hoverVariant: "secondaryDark",
1623
+ animationSpeed: "none",
1624
+ buttonBorderRadius: "md",
1625
+ boldFirstButton: true,
1626
+ buttonTexts: {
1627
+ default: [
1628
+ "Summarize the reviews.",
1629
+ "How do they fit?",
1630
+ "What size should I get?",
1631
+ "What's the rise?",
1632
+ "What's the material?",
1633
+ "Do they stretch?",
1634
+ ],
1635
+ },
1636
+ } satisfies SuggestionBarWidgetV2Config,
1637
+ bottomSuggestionsBarDenimWithReviews: {
1638
+ widgetConfigId: "bottomSuggestionsBarDenimWithReviews",
1639
+ contentId: "spiffy-bottom-suggestion-bar-contents",
1640
+ metricDisplayLocation: ChatElementDisplayLocation.BOTTOM_REVIEWS_SNIPPET,
1641
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_BOTTOM,
1642
+ type: WidgetType.SuggestionBarV2,
1643
+ variant: "darkPrimary",
1644
+ hoverVariant: "secondaryDark",
1645
+ animationSpeed: "none",
1646
+ buttonBorderRadius: "md",
1647
+ boldFirstButton: true,
1648
+ buttonTexts: {
1649
+ default: [
1650
+ "Summarize the reviews.",
1651
+ "How do they fit?",
1652
+ "What size should I get?",
1653
+ "What's the rise?",
1654
+ "What's the material?",
1655
+ "Do they stretch?",
1656
+ ],
1657
+ },
1658
+ } satisfies SuggestionBarWidgetV2Config,
1659
+ topSuggestionsBarTwillFleeceWithReviews: {
1660
+ widgetConfigId: "topSuggestionsBarTwillFleeceWithReviews",
1661
+ contentId: "spiffy-top-suggestion-bar-contents",
1662
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1663
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1664
+ type: WidgetType.SuggestionBarV2,
1665
+ variant: "secondary",
1666
+ hoverVariant: "secondaryDark",
1667
+ animationSpeed: "none",
1668
+ buttonBorderRadius: "md",
1669
+ boldFirstButton: true,
1670
+ buttonTexts: {
1671
+ default: [
1672
+ "Summarize the reviews.",
1673
+ "Are these true to size?",
1674
+ "What size should I get?",
1675
+ "How does it feel?",
1676
+ "Do they stretch out over time?",
1677
+ "What's the fit/style?",
1678
+ ],
1679
+ },
1680
+ } satisfies SuggestionBarWidgetV2Config,
1681
+ bottomSuggestionsBarTwillFleeceWithReviews: {
1682
+ widgetConfigId: "bottomSuggestionsBarTwillFleeceWithReviews",
1683
+ contentId: "spiffy-bottom-suggestion-bar-contents",
1684
+ metricDisplayLocation: ChatElementDisplayLocation.BOTTOM_REVIEWS_SNIPPET,
1685
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_BOTTOM,
1686
+ type: WidgetType.SuggestionBarV2,
1687
+ variant: "darkPrimary",
1688
+ hoverVariant: "secondaryDark",
1689
+ animationSpeed: "none",
1690
+ buttonBorderRadius: "md",
1691
+ boldFirstButton: true,
1692
+ buttonTexts: {
1693
+ default: [
1694
+ "Summarize the reviews.",
1695
+ "Are these true to size?",
1696
+ "What size should I get?",
1697
+ "How does it feel?",
1698
+ "Do they stretch out over time?",
1699
+ "What's the fit/style?",
1700
+ ],
1701
+ },
1702
+ } satisfies SuggestionBarWidgetV2Config,
1703
+ topSuggestionsBarShortsWithReviews: {
1704
+ widgetConfigId: "topSuggestionsBarShortsWithReviews",
1705
+ contentId: "spiffy-top-suggestion-bar-contents",
1706
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1707
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1708
+ type: WidgetType.SuggestionBarV2,
1709
+ variant: "secondary",
1710
+ hoverVariant: "secondaryDark",
1711
+ animationSpeed: "none",
1712
+ buttonBorderRadius: "md",
1713
+ boldFirstButton: true,
1714
+ buttonTexts: {
1715
+ default: [
1716
+ "Summarize the reviews.",
1717
+ "How far down does it go?",
1718
+ "Are these true to size?",
1719
+ "What size should I get?",
1720
+ "How does it feel?",
1721
+ "Do they stretch out over time?",
1722
+ "What's the fit/style?",
1723
+ ],
1724
+ },
1725
+ } satisfies SuggestionBarWidgetV2Config,
1726
+ bottomSuggestionsBarShortsWithReviews: {
1727
+ widgetConfigId: "bottomSuggestionsBarShortsWithReviews",
1728
+ contentId: "spiffy-bottom-suggestion-bar-contents",
1729
+ metricDisplayLocation: ChatElementDisplayLocation.BOTTOM_REVIEWS_SNIPPET,
1730
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_BOTTOM,
1731
+ type: WidgetType.SuggestionBarV2,
1732
+ variant: "darkPrimary",
1733
+ hoverVariant: "secondaryDark",
1734
+ animationSpeed: "none",
1735
+ buttonBorderRadius: "md",
1736
+ boldFirstButton: true,
1737
+ buttonTexts: {
1738
+ default: [
1739
+ "Summarize the reviews.",
1740
+ "How far down does it go?",
1741
+ "Are these true to size?",
1742
+ "What size should I get?",
1743
+ "How does it feel?",
1744
+ "Do they stretch out over time?",
1745
+ "What's the fit/style?",
1746
+ ],
1747
+ },
1748
+ } satisfies SuggestionBarWidgetV2Config,
1749
+ topSuggestionsBarAccessoriesWithReviews: {
1750
+ widgetConfigId: "topSuggestionsBarAccessoriesWithReviews",
1751
+ contentId: "spiffy-top-suggestion-bar-contents",
1752
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1753
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1754
+ type: WidgetType.SuggestionBarV2,
1755
+ variant: "secondary",
1756
+ hoverVariant: "secondaryDark",
1757
+ animationSpeed: "none",
1758
+ buttonBorderRadius: "md",
1759
+ boldFirstButton: true,
1760
+ buttonTexts: {
1761
+ default: [
1762
+ "Summarize the reviews.",
1763
+ "How does it enhance my outfit?",
1764
+ "Is it good for everyday use?",
1765
+ "Is it water resistant?",
1766
+ "Is it carry-on size?",
1767
+ ],
1768
+ },
1769
+ } satisfies SuggestionBarWidgetV2Config,
1770
+ bottomSuggestionsBarAccessoriesWithReviews: {
1771
+ widgetConfigId: "bottomSuggestionsBarAccessoriesWithReviews",
1772
+ contentId: "spiffy-bottom-suggestion-bar-contents",
1773
+ metricDisplayLocation: ChatElementDisplayLocation.BOTTOM_REVIEWS_SNIPPET,
1774
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_BOTTOM,
1775
+ type: WidgetType.SuggestionBarV2,
1776
+ variant: "darkPrimary",
1777
+ hoverVariant: "secondaryDark",
1778
+ animationSpeed: "none",
1779
+ buttonBorderRadius: "md",
1780
+ boldFirstButton: true,
1781
+ buttonTexts: {
1782
+ default: [
1783
+ "Summarize the reviews.",
1784
+ "How does it enhance my outfit?",
1785
+ "Is it good for everyday use?",
1786
+ "Is it water resistant?",
1787
+ "Is it carry-on size?",
1788
+ ],
1789
+ },
1790
+ } satisfies SuggestionBarWidgetV2Config,
1791
+ topSuggestionsBarFootwearWithReviews: {
1792
+ widgetConfigId: "topSuggestionsBarFootwearWithReviews",
1793
+ contentId: "spiffy-top-suggestion-bar-contents",
1794
+ metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
1795
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
1796
+ type: WidgetType.SuggestionBarV2,
1797
+ variant: "secondary",
1798
+ hoverVariant: "secondaryDark",
1799
+ animationSpeed: "none",
1800
+ buttonBorderRadius: "md",
1801
+ boldFirstButton: true,
1802
+ buttonTexts: {
1803
+ default: [
1804
+ "Summarize the reviews.",
1805
+ "What size should I choose?",
1806
+ "Are they good for everyday wear?",
1807
+ "How do they fit?",
1808
+ "What material are they made of?",
1809
+ ],
1810
+ },
1811
+ } satisfies SuggestionBarWidgetV2Config,
1812
+ bottomSuggestionsBarFootwearWithReviews: {
1813
+ widgetConfigId: "bottomSuggestionsBarFootwearWithReviews",
1814
+ contentId: "spiffy-bottom-suggestion-bar-contents",
1815
+ metricDisplayLocation: ChatElementDisplayLocation.BOTTOM_REVIEWS_SNIPPET,
1816
+ location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_BOTTOM,
1817
+ type: WidgetType.SuggestionBarV2,
1818
+ variant: "darkPrimary",
1819
+ hoverVariant: "secondaryDark",
1820
+ animationSpeed: "none",
1821
+ buttonBorderRadius: "md",
1822
+ boldFirstButton: true,
1823
+ buttonTexts: {
1824
+ default: [
1825
+ "Summarize the reviews.",
1826
+ "What size should I choose?",
1827
+ "Are they good for everyday wear?",
1828
+ "How do they fit?",
1829
+ "What material are they made of?",
1830
+ ],
1831
+ },
1832
+ } satisfies SuggestionBarWidgetV2Config,
1833
+ },
1834
+ mountingConfigs: {
1835
+ searchIconEntryPoint: {
1836
+ mountingConfigId: "searchIconEntryPoint",
1837
+ containerId: GLOBAL_SEARCH_ENTRYPOINT_ID,
1838
+ testId: GLOBAL_SEARCH_ENTRYPOINT_TESTID,
1839
+ insertionPoint: {
1840
+ selector: '.header__secondary-nav a[href="/search"]',
1841
+ insertionType: DOMInsertionType.BEFORE,
1842
+ },
1843
+ suppressionSelector: 'a[href="/search"]',
1844
+ className: "global-entry-desktop",
1845
+ },
1846
+ searchOverlayHost: {
1847
+ mountingConfigId: "searchOverlayHost",
1848
+ containerId: SEARCH_OVERLAY_ENTRYPOINT_ID,
1849
+ testId: SEARCH_OVERLAY_HOST_TESTID,
1850
+ insertionPoint: {
1851
+ selector: "body",
1852
+ insertionType: DOMInsertionType.APPEND_CHILD,
1853
+ },
1854
+ className: "spiffy-overlay-host",
1855
+ },
1856
+ searchResultsEntryPointPLP: {
1857
+ mountingConfigId: "searchResultsEntryPointPLP",
1858
+ containerId: SEARCH_RESULTS_ENTRYPOINT_ID,
1859
+ testId: SEARCH_RESULTS_ENTRYPOINT_TESTID,
1860
+ insertionPoint: {
1861
+ selector: "#main",
1862
+ insertionType: DOMInsertionType.BEFORE,
1863
+ },
1864
+ className: "search-results-entry-point",
1865
+ style: {
1866
+ marginBottom: "60px",
1867
+ },
1868
+ },
1869
+ chatPreviewPLP: {
1870
+ mountingConfigId: "chatPreviewPLP",
1871
+ containerId: CHAT_PREVIEW_CONTAINER_ID,
1872
+ testId: CHAT_PREVIEW_TESTID,
1873
+ insertionPoint: {
1874
+ selector: ".product-list",
1875
+ insertionType: DOMInsertionType.AFTER,
1876
+ },
1877
+ gridInsertionType: GridInsertionType.FIXED_8,
1878
+ className: "is-plp",
1879
+ style: {
1880
+ gridRow: "3 / 3",
1881
+ gridColumn: "1 / -1",
1882
+ },
1883
+ },
1884
+ chatPreviewPDP: {
1885
+ mountingConfigId: "chatPreviewPDP",
1886
+ containerId: CHAT_PREVIEW_CONTAINER_ID,
1887
+ testId: CHAT_PREVIEW_TESTID,
1888
+ insertionPoint: {
1889
+ selector: 'div[data-block-type="description"].product-info__block-item',
1890
+ insertionType: DOMInsertionType.BEFORE,
1891
+ },
1892
+ },
1893
+ topSuggestionBarPDP: {
1894
+ mountingConfigId: "topSuggestionBarPDP",
1895
+ containerId: TOP_SUGGESTION_BAR_PDP_ID,
1896
+ testId: TOP_SUGGESTION_BAR_TESTID,
1897
+ insertionPoint: {
1898
+ selector: 'div[data-block-type="price"].product-info__block-item',
1899
+ insertionType: DOMInsertionType.AFTER,
1900
+ },
1901
+ style: { marginTop: "15px" },
1902
+ },
1903
+ bottomSuggestionBarPDP: {
1904
+ mountingConfigId: "bottomSuggestionBarPDP",
1905
+ containerId: BOTTOM_REVIEWS_BAR_ID,
1906
+ testId: BOTTOM_SUGGESTION_BAR_TESTID,
1907
+ insertionPoint: {
1908
+ selector: ".oke-w-header",
1909
+ insertionType: DOMInsertionType.AFTER,
1910
+ },
1911
+ style: { marginBottom: "15px" },
1912
+ },
1913
+ },
1914
+ });
1915
+
1916
+ const jordanCraigOrgInfo = {
1917
+ shortName: OrgShortName.JordanCraig,
1918
+ name: "Jordan Craig",
1919
+ domain: "jordancraig.com",
1920
+ defaultProductId: "scallop-t-shirt",
1921
+ alwaysEnabledMerchants: false,
1922
+ orgUIConfig: jordanCraigOrgUIConfig,
1923
+ orgColors: () => jordanCraigColors,
1924
+ orgPageConfig: jordanCraigPageConfig,
1925
+ } satisfies BasicOrgInfoType;
1926
+
1927
+ export { jordanCraigOrgInfo };