@shopgate/engage 7.32.0-beta.1 → 7.32.0-beta.10

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 (529) hide show
  1. package/README.md +0 -1
  2. package/account/components/Profile/Profile.provider.d.ts +1 -1
  3. package/account/components/Profile/ProfileAddressBook.d.ts.map +1 -1
  4. package/account/components/Profile/ProfileAddressBook.js +13 -22
  5. package/account/components/Profile/ProfileAddressCard.d.ts.map +1 -1
  6. package/account/components/Profile/ProfileAddressCard.js +9 -18
  7. package/account/components/Profile/ProfileForm.d.ts.map +1 -1
  8. package/account/components/Profile/ProfileForm.js +15 -42
  9. package/account/components/ProfileContact/ProfileContact.js +13 -21
  10. package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.d.ts +2 -1
  11. package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.d.ts.map +1 -1
  12. package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.js +61 -5
  13. package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.d.ts +7 -1
  14. package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.d.ts.map +1 -1
  15. package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.js +14 -2
  16. package/admin-preview/components/FrontendSettingsPreviewBridge/types.d.ts +15 -2
  17. package/admin-preview/components/FrontendSettingsPreviewBridge/types.d.ts.map +1 -1
  18. package/admin-preview/constants/index.d.ts +0 -12
  19. package/admin-preview/constants/index.d.ts.map +1 -1
  20. package/admin-preview/constants/index.js +0 -16
  21. package/admin-preview/helpers/_internal/detection.d.ts +53 -0
  22. package/admin-preview/helpers/_internal/detection.d.ts.map +1 -0
  23. package/admin-preview/helpers/_internal/detection.js +93 -0
  24. package/admin-preview/helpers/index.d.ts +7 -0
  25. package/admin-preview/helpers/index.d.ts.map +1 -1
  26. package/admin-preview/helpers/index.js +12 -4
  27. package/admin-preview/initialization/_internal/initialFrontendSettings.d.ts +32 -0
  28. package/admin-preview/initialization/_internal/initialFrontendSettings.d.ts.map +1 -0
  29. package/admin-preview/initialization/_internal/initialFrontendSettings.js +43 -0
  30. package/admin-preview/initialization/awaitInitialFrontendSettings.d.ts +22 -0
  31. package/admin-preview/initialization/awaitInitialFrontendSettings.d.ts.map +1 -0
  32. package/admin-preview/initialization/awaitInitialFrontendSettings.js +84 -0
  33. package/back-in-stock/components/BackInStockButton/index.js +5 -5
  34. package/back-in-stock/components/Subscriptions/components/Subscription/index.js +2 -5
  35. package/cart/components/CartItem/CartItemProductLayout.js +2 -1
  36. package/cart/components/CartItem/CartItemProductLayoutWide.js +2 -2
  37. package/cart/components/CartItem/CartItemProductLayoutWideRemoveItem.js +7 -14
  38. package/cart/components/CartItem/CartItemProductProvider.connector.js +0 -2
  39. package/cart/components/CartItem/CartItemProductProvider.js +3 -30
  40. package/cart/components/CartItem/CartItemProductProvider.types.js +0 -1
  41. package/cart/components/CartItem/CartItemQuantityPicker.js +1 -0
  42. package/cart/components/CartItems/CartItemCardReservationLabelChangeStore.js +6 -24
  43. package/cart/components/CartItems/CartItems.js +8 -10
  44. package/cart/components/CartItems/CartItemsSubstitution.js +3 -2
  45. package/cart/components/CartSummaryWide/CartSummaryWide.js +2 -2
  46. package/cart/components/CartSummaryWide/CartSummaryWideCheckoutButton.js +9 -23
  47. package/cart/components/PaymentBar/PaymentBarCheckoutButton.js +8 -30
  48. package/cart/components/PaymentBar/PaymentBarContent.js +1 -1
  49. package/cart/components/PaymentBar/testUtils/mockFactories.js +4 -11
  50. package/category/components/CategoryImage/index.js +24 -17
  51. package/checkout/components/AddressBook/AddressList.js +14 -23
  52. package/checkout/components/Checkout/CheckoutActions.js +4 -3
  53. package/checkout/components/Checkout/CheckoutAddress.js +8 -0
  54. package/checkout/components/Checkout/CheckoutSection.js +6 -2
  55. package/checkout/components/CheckoutConfirmation/CheckoutConfirmation.js +6 -7
  56. package/checkout/components/ResponsiveBackButton/ResponsiveBackButton.js +7 -17
  57. package/components/Badge/Badge.d.ts +30 -0
  58. package/components/Badge/Badge.d.ts.map +1 -0
  59. package/components/Badge/Badge.js +48 -0
  60. package/components/Badge/index.d.ts +3 -0
  61. package/components/Badge/index.d.ts.map +1 -0
  62. package/components/Badge/index.js +1 -0
  63. package/components/Card/Card.d.ts +27 -0
  64. package/components/Card/Card.d.ts.map +1 -0
  65. package/components/Card/Card.js +57 -0
  66. package/components/Card/index.d.ts +4 -0
  67. package/components/Card/index.d.ts.map +1 -0
  68. package/components/Card/index.js +2 -0
  69. package/components/Card/useCardAppearance.d.ts +11 -0
  70. package/components/Card/useCardAppearance.d.ts.map +1 -0
  71. package/components/Card/useCardAppearance.js +22 -0
  72. package/components/ChipLayout/index.js +2 -4
  73. package/components/Logo/index.d.ts.map +1 -1
  74. package/components/Logo/index.js +3 -6
  75. package/components/NavigationHandler/connector.js +1 -1
  76. package/components/NavigationHandler/index.d.ts +2 -2
  77. package/components/Paper/Paper.d.ts +48 -0
  78. package/components/Paper/Paper.d.ts.map +1 -0
  79. package/components/Paper/Paper.js +64 -0
  80. package/components/Paper/index.d.ts +3 -0
  81. package/components/Paper/index.d.ts.map +1 -0
  82. package/components/Paper/index.js +1 -0
  83. package/components/PickerUtilize/index.d.ts +2 -1
  84. package/components/PickerUtilize/index.d.ts.map +1 -1
  85. package/components/RadioCard/RadioCard.d.ts.map +1 -1
  86. package/components/RadioCard/RadioCard.js +2 -1
  87. package/components/SheetList/components/Item/index.js +8 -8
  88. package/components/Tabs/components/Tab.d.ts.map +1 -1
  89. package/components/Tabs/components/Tab.js +14 -16
  90. package/components/Typography/Typography.d.ts +1 -1
  91. package/components/View/components/Above/index.d.ts.map +1 -1
  92. package/components/View/components/Above/index.js +3 -1
  93. package/components/View/components/Below/index.d.ts.map +1 -1
  94. package/components/View/components/Below/index.js +3 -1
  95. package/components/View/components/Content/index.d.ts +2 -1
  96. package/components/View/components/Content/index.d.ts.map +1 -1
  97. package/components/View/components/Content/index.js +4 -1
  98. package/components/constants.d.ts +6 -0
  99. package/components/constants.d.ts.map +1 -0
  100. package/components/index.d.ts +5 -1
  101. package/components/index.d.ts.map +1 -1
  102. package/components/index.js +4 -2
  103. package/components/v2/Button/Button.d.ts +24 -13
  104. package/components/v2/Button/Button.d.ts.map +1 -1
  105. package/components/v2/Button/Button.js +139 -41
  106. package/components/v2/ButtonBase/ButtonBase.d.ts +50 -10
  107. package/components/v2/ButtonBase/ButtonBase.d.ts.map +1 -1
  108. package/components/v2/ButtonBase/ButtonBase.js +192 -17
  109. package/components/v2/ButtonBase/Ripple.d.ts +2 -1
  110. package/components/v2/ButtonBase/Ripple.d.ts.map +1 -1
  111. package/components/v2/ButtonBase/hooks.d.ts +0 -1
  112. package/components/v2/ButtonBase/hooks.d.ts.map +1 -1
  113. package/components/v2/ButtonBase/hooks.js +36 -12
  114. package/components/v2/ButtonGroup/ButtonGroup.d.ts +11 -5
  115. package/components/v2/ButtonGroup/ButtonGroup.d.ts.map +1 -1
  116. package/components/v2/ButtonGroup/ButtonGroup.js +49 -26
  117. package/components/v2/CircularProgress/CircularProgress.d.ts.map +1 -1
  118. package/components/v2/CircularProgress/CircularProgress.js +10 -5
  119. package/core/helpers/getFullImageSource.d.ts +5 -1
  120. package/core/helpers/getFullImageSource.d.ts.map +1 -1
  121. package/core/helpers/getFullImageSource.js +30 -14
  122. package/core/helpers/i18n.d.ts +4 -0
  123. package/core/helpers/i18n.d.ts.map +1 -1
  124. package/core/helpers/i18n.js +3 -0
  125. package/core/hooks/html/useLoadImage.d.ts +3 -3
  126. package/core/hooks/html/useLoadImage.d.ts.map +1 -1
  127. package/core/hooks/html/useLoadImage.js +2 -2
  128. package/core/hooks/useLocalStorage.d.ts +8 -0
  129. package/core/hooks/useLocalStorage.d.ts.map +1 -1
  130. package/core/hooks/useLocalStorage.js +22 -15
  131. package/core/hooks/useNavigation.d.ts +10 -2
  132. package/core/hooks/useNavigation.d.ts.map +1 -1
  133. package/core/hooks/useNavigation.js +1 -2
  134. package/core/initialization/fetchSettings.d.ts +12 -0
  135. package/core/initialization/fetchSettings.d.ts.map +1 -0
  136. package/core/initialization/fetchSettings.js +134 -0
  137. package/core/initialization/index.d.ts +33 -2
  138. package/core/initialization/index.d.ts.map +1 -1
  139. package/core/initialization/index.js +44 -103
  140. package/core/router/conductor.d.ts +9 -0
  141. package/core/router/helpers.d.ts +28 -15
  142. package/core/router/helpers.d.ts.map +1 -1
  143. package/core/router/helpers.js +8 -8
  144. package/development/components/DevelopmentSettings/DevelopmentSettings.js +3 -3
  145. package/development/components/SimulatedInsets/SimulatedInsetBottom.js +3 -3
  146. package/development/components/SimulatedInsets/SimulatedInsetTop.js +2 -2
  147. package/favorites/components/FavoriteButtonWide/FavoriteButtonWide.js +7 -17
  148. package/favorites/components/Item/Item.d.ts +1 -1
  149. package/favorites/components/Item/Item.d.ts.map +1 -1
  150. package/favorites/components/Item/Item.js +7 -7
  151. package/favorites/components/List/List.d.ts +1 -1
  152. package/favorites/components/List/List.d.ts.map +1 -1
  153. package/favorites/components/List/List.js +0 -1
  154. package/favorites/components/List/ListContent.js +4 -5
  155. package/favorites/components/Lists/Lists.js +17 -6
  156. package/filter/components/FilterPageContent/components/ApplyButton/index.js +8 -10
  157. package/filter/components/FilterPageContent/components/ResetButton/index.js +8 -6
  158. package/filter/components/PriceSlider/index.js +6 -1
  159. package/locations/components/ChangeLocationButton/ChangeLocationButton.js +10 -14
  160. package/locations/components/FulfillmentSheet/FulfillmentSheetContent.js +4 -8
  161. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotDialog.js +4 -8
  162. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcher.js +1 -1
  163. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherBar.js +9 -18
  164. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherDefault.js +10 -10
  165. package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherBar.js +9 -19
  166. package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherDefault.js +9 -10
  167. package/locations/components/ReserveForm/ReserveForm.js +6 -7
  168. package/locations/components/StoreDetails/components/GetDirectionsButton.js +2 -4
  169. package/locations/components/StoreDetails/components/StoreDetails.js +5 -10
  170. package/locations/components/StoreDetails/components/StoresNearbyListItem.js +13 -21
  171. package/locations/components/StoreFinder/StoreFinderSelectLocationButton.js +5 -11
  172. package/locations/components/StoreFinder/StoreFinderStoreInfoButton.js +5 -11
  173. package/locations/components/StoreList/StoreListProduct.js +2 -3
  174. package/locations/components/StoreList/StoreListSearch.js +1 -0
  175. package/locations/components/StoreList/StoreSelectLocationButton.js +5 -11
  176. package/login/components/ForgotPassword/ForgotPassword.js +11 -23
  177. package/mocks/date.js +31 -0
  178. package/mocks/index.js +3 -0
  179. package/mocks/pipelineRequest.js +1 -0
  180. package/mocks/subscriptions.js +1 -0
  181. package/orders/components/OrderDetails/OrderDetailsAuthenticate.js +5 -7
  182. package/orders/components/OrderHistory/OrderHistoryList.d.ts.map +1 -1
  183. package/orders/components/OrderHistory/OrderHistoryList.js +8 -9
  184. package/orders/components/OrderHistory/OrderHistoryTable.d.ts.map +1 -1
  185. package/orders/components/OrderHistory/OrderHistoryTable.js +4 -0
  186. package/package.json +12 -12
  187. package/page/components/NotFound.d.ts +7 -0
  188. package/page/components/NotFound.d.ts.map +1 -0
  189. package/page/components/NotFound.js +8 -8
  190. package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.d.ts +52 -0
  191. package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.d.ts.map +1 -0
  192. package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.js +4 -4
  193. package/page/components/ResponsiveWidgetImage/index.d.ts +2 -0
  194. package/page/components/ResponsiveWidgetImage/index.d.ts.map +1 -0
  195. package/page/components/WidgetRichText/WidgetRichText.d.ts +25 -0
  196. package/page/components/WidgetRichText/WidgetRichText.d.ts.map +1 -0
  197. package/page/components/WidgetRichText/index.d.ts +2 -0
  198. package/page/components/WidgetRichText/index.d.ts.map +1 -0
  199. package/page/components/WidgetVideo/WidgetVideo.d.ts +43 -0
  200. package/page/components/WidgetVideo/WidgetVideo.d.ts.map +1 -0
  201. package/page/components/WidgetVideo/WidgetVideo.js +33 -39
  202. package/page/components/WidgetVideo/index.d.ts +2 -0
  203. package/page/components/WidgetVideo/index.d.ts.map +1 -0
  204. package/page/components/Widgets/Overlay.d.ts +17 -0
  205. package/page/components/Widgets/Overlay.d.ts.map +1 -0
  206. package/page/components/Widgets/Overlay.js +24 -38
  207. package/page/components/Widgets/Tooltip.d.ts +20 -0
  208. package/page/components/Widgets/Tooltip.d.ts.map +1 -0
  209. package/page/components/Widgets/Tooltip.js +6 -10
  210. package/page/components/Widgets/Widget.d.ts +32 -0
  211. package/page/components/Widgets/Widget.d.ts.map +1 -0
  212. package/page/components/Widgets/Widget.js +7 -18
  213. package/page/components/Widgets/WidgetContext.d.ts +32 -38
  214. package/page/components/Widgets/WidgetContext.d.ts.map +1 -0
  215. package/page/components/Widgets/WidgetContext.js +2 -8
  216. package/page/components/Widgets/WidgetProvider.d.ts +25 -0
  217. package/page/components/Widgets/WidgetProvider.d.ts.map +1 -0
  218. package/page/components/Widgets/WidgetProvider.js +5 -12
  219. package/page/components/Widgets/Widgets.d.ts +16 -0
  220. package/page/components/Widgets/Widgets.d.ts.map +1 -0
  221. package/page/components/Widgets/Widgets.js +5 -12
  222. package/page/components/Widgets/WidgetsPreviewContext.d.ts +21 -0
  223. package/page/components/Widgets/WidgetsPreviewContext.d.ts.map +1 -0
  224. package/page/components/Widgets/WidgetsPreviewContext.js +5 -7
  225. package/page/components/Widgets/WidgetsPreviewProvider.d.ts +18 -0
  226. package/page/components/Widgets/WidgetsPreviewProvider.d.ts.map +1 -0
  227. package/page/components/Widgets/WidgetsPreviewProvider.js +5 -6
  228. package/page/components/Widgets/constants.d.ts +5 -0
  229. package/page/components/Widgets/constants.d.ts.map +1 -0
  230. package/page/components/Widgets/constants.js +3 -1
  231. package/page/components/Widgets/events.d.ts +38 -0
  232. package/page/components/Widgets/events.d.ts.map +1 -0
  233. package/page/components/Widgets/events.js +8 -12
  234. package/page/components/Widgets/helpers.d.ts +50 -0
  235. package/page/components/Widgets/helpers.d.ts.map +1 -0
  236. package/page/components/Widgets/helpers.js +8 -13
  237. package/page/components/Widgets/hooks.d.ts +13 -0
  238. package/page/components/Widgets/hooks.d.ts.map +1 -0
  239. package/page/components/Widgets/hooks.js +13 -11
  240. package/page/components/Widgets/index.d.ts +3 -0
  241. package/page/components/Widgets/index.d.ts.map +1 -0
  242. package/page/components/Widgets/types.d.ts +111 -113
  243. package/page/components/Widgets/types.d.ts.map +1 -0
  244. package/page/components/Widgets/types.js +1 -0
  245. package/page/components/index.d.ts +5 -0
  246. package/page/components/index.d.ts.map +1 -0
  247. package/page/constants/actionTypes.d.ts +4 -0
  248. package/page/constants/actionTypes.d.ts.map +1 -0
  249. package/page/constants/index.d.ts +25 -0
  250. package/page/constants/index.d.ts.map +1 -0
  251. package/page/constants/index.js +5 -3
  252. package/page/helpers/index.d.ts +70 -62
  253. package/page/helpers/index.d.ts.map +1 -0
  254. package/page/helpers/index.js +31 -29
  255. package/page/hooks/index.d.ts +54 -53
  256. package/page/hooks/index.d.ts.map +1 -0
  257. package/page/hooks/index.js +20 -15
  258. package/page/selectors/index.d.ts +32 -0
  259. package/page/selectors/index.d.ts.map +1 -0
  260. package/page/widgets/Button/Button.js +2 -3
  261. package/page/widgets/NestedCategoryFilter/NestedCategoryFilter.js +8 -8
  262. package/page/widgets/ProductList/ProductList.js +18 -14
  263. package/page/widgets/ProductSlider/ProductSlider.js +1 -15
  264. package/page/widgets/Video/Video.d.ts +6 -0
  265. package/page/widgets/Video/Video.d.ts.map +1 -0
  266. package/page/widgets/Video/Video.js +0 -2
  267. package/page/widgets/Video/hooks.d.ts +53 -0
  268. package/page/widgets/Video/hooks.d.ts.map +1 -0
  269. package/page/widgets/Video/hooks.js +4 -12
  270. package/page/widgets/Video/index.d.ts +2 -0
  271. package/page/widgets/Video/index.d.ts.map +1 -0
  272. package/product/components/Description/index.js +0 -2
  273. package/product/components/FilterBar/components/Content/components/FilterButton/index.js +2 -6
  274. package/product/components/FilterBar/components/Content/components/Sort/index.js +1 -5
  275. package/product/components/Media/FeaturedMedia.js +7 -1
  276. package/product/components/Media/MediaImage.js +24 -23
  277. package/product/components/Media/MediaPlaceholder.js +4 -7
  278. package/product/components/MediaSlider/components/MediaImage/index.js +6 -2
  279. package/product/components/MediaSlider/constants.js +1 -12
  280. package/product/components/OrderQuantityHint/index.js +16 -1
  281. package/product/components/ProductCard/index.js +36 -23
  282. package/product/components/ProductGrid/components/Item/components/ItemDetails/index.js +12 -4
  283. package/product/components/ProductGrid/components/Item/components/ItemImage/index.js +3 -6
  284. package/product/components/ProductGrid/components/Item/components/ItemName/index.js +6 -1
  285. package/product/components/ProductGrid/components/Item/index.js +10 -2
  286. package/product/components/ProductGrid/components/Layout/index.js +19 -4
  287. package/product/components/ProductGrid/constants.d.ts +2 -0
  288. package/product/components/ProductGrid/constants.d.ts.map +1 -0
  289. package/product/components/ProductGrid/constants.js +1 -0
  290. package/product/components/ProductGrid/hooks.d.ts +11 -0
  291. package/product/components/ProductGrid/hooks.d.ts.map +1 -0
  292. package/product/components/ProductGrid/hooks.js +48 -0
  293. package/product/components/ProductGrid/index.js +3 -6
  294. package/product/components/ProductGridPrice/index.js +0 -1
  295. package/product/components/ProductImage/ProductImage.d.ts +42 -0
  296. package/product/components/ProductImage/ProductImage.d.ts.map +1 -0
  297. package/product/components/ProductImage/ProductImage.js +158 -0
  298. package/product/components/ProductImage/ProductImagePlaceholder.d.ts +23 -0
  299. package/product/components/ProductImage/ProductImagePlaceholder.d.ts.map +1 -0
  300. package/product/components/ProductImage/ProductImagePlaceholder.js +12 -17
  301. package/product/components/ProductImage/constants.d.ts +7 -0
  302. package/product/components/ProductImage/constants.d.ts.map +1 -0
  303. package/product/components/ProductImage/constants.js +6 -0
  304. package/product/components/ProductImage/hooks.d.ts +8 -0
  305. package/product/components/ProductImage/hooks.d.ts.map +1 -0
  306. package/product/components/ProductImage/hooks.js +32 -0
  307. package/product/components/ProductImage/index.d.ts +3 -0
  308. package/product/components/ProductImage/index.d.ts.map +1 -0
  309. package/product/components/ProductImage/index.js +1 -201
  310. package/product/components/ProductList/components/Item/index.js +5 -3
  311. package/product/components/ProductList/components/Layout/index.js +8 -20
  312. package/product/components/ProductName/ProductName.d.ts +1 -1
  313. package/product/components/ProductName/ProductName.d.ts.map +1 -1
  314. package/product/components/ProductName/ProductNameContent.d.ts +2 -1
  315. package/product/components/ProductName/ProductNameContent.d.ts.map +1 -1
  316. package/product/components/ProductRatingStars/ProductRatingStars.d.ts +1 -1
  317. package/product/components/ProductRatingStars/ProductRatingStars.js +2 -4
  318. package/product/components/ProductSlider/constants.d.ts +3 -0
  319. package/product/components/ProductSlider/constants.d.ts.map +1 -0
  320. package/product/components/ProductSlider/constants.js +2 -0
  321. package/product/components/ProductSlider/hooks.d.ts +7 -0
  322. package/product/components/ProductSlider/hooks.d.ts.map +1 -0
  323. package/product/components/ProductSlider/hooks.js +40 -0
  324. package/product/components/ProductSlider/index.js +8 -8
  325. package/product/components/Rating/index.js +2 -4
  326. package/product/components/RelationsSlider/RelationsSheet.js +1 -5
  327. package/product/components/RelationsSlider/RelationsSliderContent.js +3 -2
  328. package/product/components/RelationsSlider/constants.d.ts +3 -0
  329. package/product/components/RelationsSlider/constants.d.ts.map +1 -0
  330. package/product/components/RelationsSlider/constants.js +2 -1
  331. package/product/components/RelationsSlider/hooks.d.ts +6 -0
  332. package/product/components/RelationsSlider/hooks.d.ts.map +1 -0
  333. package/product/components/RelationsSlider/hooks.js +34 -0
  334. package/product/components/UnitQuantityPicker/UnitQuantityPicker.d.ts.map +1 -1
  335. package/product/components/UnitQuantityPicker/UnitQuantityPicker.js +16 -34
  336. package/product/helpers/index.js +29 -11
  337. package/product/hooks/index.js +3 -1
  338. package/product/hooks/useLoadProductImage.js +4 -2
  339. package/product/hooks/useShowEmptyRatingStars.d.ts +7 -0
  340. package/product/hooks/useShowEmptyRatingStars.d.ts.map +1 -0
  341. package/product/hooks/useShowEmptyRatingStars.js +21 -0
  342. package/product/index.js +0 -1
  343. package/product/selectors/mocks/productProperties.mock.js +49 -0
  344. package/push-opt-in/components/PushOptInModal/index.js +4 -4
  345. package/registration/components/Registration/RegistrationFormActions.js +4 -4
  346. package/reviews/components/Reviews/components/AllReviewsLink/index.js +6 -6
  347. package/reviews/components/Reviews/components/Header/components/WriteReviewLink/index.js +4 -3
  348. package/settings/action-creators/appSettings.d.ts +3 -3
  349. package/settings/action-creators/appSettings.d.ts.map +1 -1
  350. package/settings/constants/appSettings.d.ts +3 -0
  351. package/settings/constants/appSettings.d.ts.map +1 -1
  352. package/settings/constants/appSettings.js +6 -1
  353. package/settings/constants/imageSettings.d.ts +52 -0
  354. package/settings/constants/imageSettings.d.ts.map +1 -0
  355. package/settings/constants/imageSettings.js +69 -0
  356. package/settings/helpers/index.d.ts +3 -0
  357. package/settings/helpers/index.d.ts.map +1 -0
  358. package/settings/helpers/index.js +1 -0
  359. package/settings/helpers/resolveImageSettings.d.ts +70 -0
  360. package/settings/helpers/resolveImageSettings.d.ts.map +1 -0
  361. package/settings/helpers/resolveImageSettings.js +171 -0
  362. package/settings/helpers/toImageQuality.d.ts +7 -0
  363. package/settings/helpers/toImageQuality.d.ts.map +1 -0
  364. package/settings/helpers/toImageQuality.js +44 -0
  365. package/settings/helpers/toThumborColor.d.ts +15 -0
  366. package/settings/helpers/toThumborColor.d.ts.map +1 -0
  367. package/settings/helpers/toThumborColor.js +51 -0
  368. package/settings/hooks/index.d.ts +2 -0
  369. package/settings/hooks/index.d.ts.map +1 -0
  370. package/settings/hooks/index.js +1 -0
  371. package/settings/hooks/useImageSettings.d.ts +28 -0
  372. package/settings/hooks/useImageSettings.d.ts.map +1 -0
  373. package/settings/hooks/useImageSettings.js +39 -0
  374. package/settings/reducers/appSettings.d.ts.map +1 -1
  375. package/settings/reducers/appSettings.js +100 -8
  376. package/settings/reducers/index.d.ts +3 -3
  377. package/settings/selectors/appSettings.d.ts +114 -1
  378. package/settings/selectors/appSettings.d.ts.map +1 -1
  379. package/settings/selectors/appSettings.js +75 -1
  380. package/settings/types/appSettings.d.ts +244 -0
  381. package/settings/types/appSettings.d.ts.map +1 -1
  382. package/settings/types/appSettings.js +124 -1
  383. package/styles/helpers/index.d.ts +2 -0
  384. package/styles/helpers/index.js +2 -0
  385. package/styles/helpers/loadFontCss.d.ts +22 -0
  386. package/styles/helpers/loadFontCss.d.ts.map +1 -0
  387. package/styles/helpers/loadFontCss.js +138 -0
  388. package/styles/helpers/loadThemeCss.d.ts +14 -0
  389. package/styles/helpers/loadThemeCss.d.ts.map +1 -0
  390. package/styles/helpers/loadThemeCss.js +123 -0
  391. package/styles/index.d.ts +1 -1
  392. package/styles/index.d.ts.map +1 -1
  393. package/styles/index.js +1 -1
  394. package/styles/reset/root.js +23 -4
  395. package/styles/reset/typographyCustomProps.d.ts +12 -0
  396. package/styles/reset/typographyCustomProps.d.ts.map +1 -0
  397. package/styles/reset/typographyCustomProps.js +11 -0
  398. package/styles/theme/createDefaultThemeOptions/index.d.ts.map +1 -1
  399. package/styles/theme/createDefaultThemeOptions/index.js +107 -4
  400. package/styles/theme/createTheme/createComponents.d.ts +2 -2
  401. package/styles/theme/createTheme/createComponents.d.ts.map +1 -1
  402. package/styles/theme/createTheme/createComponents.js +0 -1
  403. package/styles/theme/createTheme/createComponents.types.d.ts +117 -0
  404. package/styles/theme/createTheme/createComponents.types.d.ts.map +1 -1
  405. package/styles/theme/createTheme/createComponents.types.js +119 -2
  406. package/styles/theme/createTheme/createCssVarsForColorSchemeThemes.d.ts.map +1 -1
  407. package/styles/theme/createTheme/createCssVarsForColorSchemeThemes.js +13 -3
  408. package/styles/theme/createTheme/createPalette.types.d.ts +5 -0
  409. package/styles/theme/createTheme/createPalette.types.d.ts.map +1 -1
  410. package/styles/theme/createTheme/createPalette.types.js +7 -2
  411. package/styles/theme/createTheme/createShape.d.ts +3 -0
  412. package/styles/theme/createTheme/createShape.d.ts.map +1 -1
  413. package/styles/theme/createTheme/createSpacing.js +4 -1
  414. package/styles/theme/createTheme/createThemeFromColorScheme.d.ts +4 -2
  415. package/styles/theme/createTheme/createThemeFromColorScheme.d.ts.map +1 -1
  416. package/styles/theme/createTheme/createThemeFromColorScheme.js +6 -3
  417. package/styles/theme/createTheme/createTypography.d.ts +2 -1
  418. package/styles/theme/createTheme/createTypography.js +59 -18
  419. package/styles/theme/createTheme/helpers/cssVarsParser.d.ts.map +1 -1
  420. package/styles/theme/createTheme/helpers/cssVarsParser.js +10 -3
  421. package/styles/theme/createTheme/index.d.ts +2 -1
  422. package/styles/theme/createTheme/index.d.ts.map +1 -1
  423. package/styles/theme/createTheme/index.js +5 -2
  424. package/styles/theme/createTheme/layout.d.ts +23 -0
  425. package/styles/theme/createTheme/layout.d.ts.map +1 -0
  426. package/styles/theme/createTheme/layout.js +20 -0
  427. package/styles/theme/createTheme/shadows.d.ts +11 -1
  428. package/styles/theme/createTheme/shadows.d.ts.map +1 -1
  429. package/styles/theme/createTheme/shadows.js +41 -7
  430. package/styles/theme/createTheme/transitions.d.ts +4 -0
  431. package/styles/theme/createTheme/transitions.js +3 -1
  432. package/styles/theme/createTheme/types.d.ts +41 -9
  433. package/styles/theme/createTheme/types.d.ts.map +1 -1
  434. package/styles/theme/createTheme/types.js +16 -4
  435. package/styles/theme/hocs/index.d.ts +2 -0
  436. package/styles/theme/hocs/index.d.ts.map +1 -0
  437. package/styles/theme/hocs/index.js +1 -0
  438. package/styles/theme/hocs/withTheme.d.ts +21 -0
  439. package/styles/theme/hocs/withTheme.d.ts.map +1 -0
  440. package/styles/theme/hocs/withTheme.js +33 -0
  441. package/styles/theme/hooks/useColorScheme.d.ts +4 -3
  442. package/styles/theme/hooks/useColorScheme.d.ts.map +1 -1
  443. package/styles/theme/hooks/useColorScheme.js +4 -3
  444. package/styles/theme/hooks/useMediaQuery.d.ts +7 -0
  445. package/styles/theme/hooks/useMediaQuery.d.ts.map +1 -1
  446. package/styles/theme/hooks/useMediaQuery.js +5 -5
  447. package/styles/theme/hooks/useTheme.js +1 -1
  448. package/styles/theme/index.d.ts +5 -1
  449. package/styles/theme/index.d.ts.map +1 -1
  450. package/styles/theme/index.js +2 -1
  451. package/styles/theme/providers/ActiveBreakpointProvider.d.ts +1 -1
  452. package/styles/theme/providers/ColorSchemeContext.d.ts +40 -0
  453. package/styles/theme/providers/ColorSchemeContext.d.ts.map +1 -0
  454. package/styles/theme/providers/ColorSchemeContext.js +14 -0
  455. package/styles/theme/providers/ThemeContext.d.ts +3 -0
  456. package/styles/theme/providers/ThemeContext.d.ts.map +1 -0
  457. package/styles/theme/providers/ThemeContext.js +2 -0
  458. package/styles/theme/providers/ThemeProvider.d.ts +4 -14
  459. package/styles/theme/providers/ThemeProvider.d.ts.map +1 -1
  460. package/styles/theme/providers/ThemeProvider.js +88 -26
  461. package/styles/theme/utils/color.d.ts +12 -12
  462. package/styles/theme/utils/color.d.ts.map +1 -1
  463. package/tracking/components/CookieConsentModal/index.js +3 -4
  464. package/tracking/components/PrivacySettings/index.js +3 -3
  465. package/cart/components/PaymentBar/PaymentBarReserveButton.connector.js +0 -6
  466. package/cart/components/PaymentBar/PaymentBarReserveButton.js +0 -71
  467. package/components/ChipLayout/spec.js +0 -41
  468. package/components/Logo/spec.js +0 -12
  469. package/components/NavigationHandler/spec.js +0 -84
  470. package/components/Picker/spec.js +0 -94
  471. package/components/PickerUtilize/spec.js +0 -35
  472. package/components/RangeSlider/spec.js +0 -190
  473. package/components/SheetList/components/Item/spec.js +0 -101
  474. package/components/SheetList/spec.js +0 -43
  475. package/components/TimeBoundary/spec.js +0 -83
  476. package/filter/components/FilterItem/spec.js +0 -14
  477. package/filter/components/FilterPageContent/components/ApplyButton/spec.js +0 -46
  478. package/filter/components/FilterPageContent/components/ResetButton/spec.js +0 -29
  479. package/filter/components/FilterPageContent/components/Selector/components/Selected/spec.js +0 -26
  480. package/filter/components/FilterPageContent/components/Selector/components/Toggle/spec.js +0 -34
  481. package/filter/components/FilterPageContent/components/Selector/components/ValueButton/spec.js +0 -32
  482. package/filter/components/FilterPageContent/components/Selector/spec.js +0 -33
  483. package/filter/components/PriceSlider/components/Label/spec.js +0 -26
  484. package/filter/components/PriceSlider/spec.js +0 -30
  485. package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.connector.js +0 -16
  486. package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.js +0 -52
  487. package/product/collections/index.js +0 -1
  488. package/product/components/EffectivityDates/constants.d.ts +0 -3
  489. package/product/components/EffectivityDates/constants.d.ts.map +0 -1
  490. package/product/components/EffectivityDates/helpers.d.ts +0 -6
  491. package/product/components/EffectivityDates/helpers.d.ts.map +0 -1
  492. package/product/components/FilterBar/components/Content/spec.js +0 -136
  493. package/product/components/Header/Shipping/spec.js +0 -36
  494. package/product/components/Header/Tiers/components/Tier/spec.js +0 -48
  495. package/product/components/Header/Tiers/spec.js +0 -64
  496. package/product/components/Media/helpers.d.ts +0 -2
  497. package/product/components/Media/helpers.d.ts.map +0 -1
  498. package/product/components/Options/components/Content/spec.js +0 -73
  499. package/product/components/Options/components/TextOption/components/OptionInfo/spec.js +0 -72
  500. package/product/components/ProductDiscountBadge/spec.js +0 -58
  501. package/product/components/ProductGrid/components/Item/components/ItemDetails/spec.js +0 -73
  502. package/product/components/ProductGrid/components/Item/components/ItemFavoritesButton/spec.js +0 -33
  503. package/product/components/ProductGrid/components/Item/components/ItemImage/spec.js +0 -16
  504. package/product/components/ProductGrid/components/Item/components/ItemName/spec.js +0 -21
  505. package/product/components/ProductGrid/components/Item/components/ItemPrice/spec.js +0 -37
  506. package/product/components/ProductGrid/spec.js +0 -52
  507. package/product/components/ProductImage/connector.js +0 -12
  508. package/product/components/ProductImage/spec.js +0 -87
  509. package/product/components/ProductSlider/spec.js +0 -37
  510. package/product/components/Rating/spec.js +0 -58
  511. package/product/helpers/index.d.ts +0 -13
  512. package/product/helpers/index.d.ts.map +0 -1
  513. package/product/helpers/redirects.d.ts +0 -2
  514. package/product/helpers/redirects.d.ts.map +0 -1
  515. package/product/selectors/helpers/filterProperties.d.ts +0 -8
  516. package/product/selectors/helpers/filterProperties.d.ts.map +0 -1
  517. package/product/selectors/helpers/index.d.ts +0 -3
  518. package/product/selectors/helpers/index.d.ts.map +0 -1
  519. package/product/selectors/helpers/wrapMemoizedSelector.d.ts +0 -2
  520. package/product/selectors/helpers/wrapMemoizedSelector.d.ts.map +0 -1
  521. package/product/selectors/product.d.ts +0 -112
  522. package/product/selectors/product.d.ts.map +0 -1
  523. package/reviews/components/Reviews/components/Header/components/WriteReviewLink/spec.js +0 -52
  524. package/reviews/components/Reviews/components/Header/spec.js +0 -78
  525. package/reviews/components/Reviews/components/List/spec.js +0 -108
  526. package/reviews/components/Reviews/components/RatingCount/spec.js +0 -38
  527. package/reviews/components/Reviews/spec.js +0 -101
  528. package/tsconfig.build.json +0 -26
  529. package/tsconfig.json +0 -19
@@ -0,0 +1,93 @@
1
+ import "core-js/modules/es.array.includes.js";
2
+ /**
3
+ * Internal to the admin-preview package - do not import this module from anywhere else. Consume
4
+ * the isAdminPreviewActive / isPageAdminPreviewActive / isFrontendSettingsAdminPreviewActive
5
+ * helpers from @shopgate/engage/admin-preview/helpers instead.
6
+ */
7
+
8
+ import { PAGE_PREVIEW_PATTERN } from "../../constants";
9
+ export const FRONTEND_SETTINGS_PREVIEW_PARAM = 'frontendSettingsPreview=true';
10
+
11
+ /**
12
+ * The url as it was when this module was first evaluated. Captured here because detection can run
13
+ * again later, when the url may already have been rewritten.
14
+ */
15
+ const INITIAL_HREF = window.location.href;
16
+
17
+ /**
18
+ * Preview mode is latched in memory rather than persisted. Session storage is scoped per origin
19
+ * per tab, not per iframe - the admin shows the preview in same-origin iframes on several screens
20
+ * within one tab, so a persisted flag from one screen would leak into the next. Module state is
21
+ * per document, so each iframe gets its own.
22
+ *
23
+ * The latches only ever go false -> true. Detection must not fall back to re-reading the url,
24
+ * because the frontend settings preview navigates the app normally: once the admin opens another
25
+ * page, the query param is gone from the url even though preview mode is still on.
26
+ */
27
+ let pageAdminPreviewLatched = false;
28
+ let frontendSettingsAdminPreviewLatched = false;
29
+
30
+ /**
31
+ * Detects whether the app is in page admin preview mode. Once detected, the result is latched for
32
+ * the lifetime of the document, because the url is not guaranteed to keep the preview marker.
33
+ * @returns True if the app is in page admin preview mode, false otherwise.
34
+ */
35
+ export const detectPageAdminPreview = () => {
36
+ if (pageAdminPreviewLatched) {
37
+ return true;
38
+ }
39
+ pageAdminPreviewLatched = window.location.pathname.startsWith(PAGE_PREVIEW_PATTERN);
40
+ return pageAdminPreviewLatched;
41
+ };
42
+
43
+ /**
44
+ * Detects whether the app is in frontend settings admin preview mode. Once detected, the result is
45
+ * latched for the lifetime of the document, because the app keeps navigating while the preview is
46
+ * open and the query param only exists on the url it started on.
47
+ * @returns True if the app is in frontend settings admin preview mode, false otherwise.
48
+ */
49
+ export const detectFrontendSettingsAdminPreview = () => {
50
+ if (frontendSettingsAdminPreviewLatched) {
51
+ return true;
52
+ }
53
+ frontendSettingsAdminPreviewLatched = window.location.search.includes(FRONTEND_SETTINGS_PREVIEW_PARAM);
54
+ return frontendSettingsAdminPreviewLatched;
55
+ };
56
+
57
+ /**
58
+ * Detects whether the app is in admin preview mode (pages or frontend settings).
59
+ * @returns True if the app is in admin preview mode, false otherwise.
60
+ */
61
+ export const detectAdminPreview = () => detectPageAdminPreview() || detectFrontendSettingsAdminPreview();
62
+
63
+ /**
64
+ * Returns the current detection state. Exposed on window as SGAdminPreviewDebug so the values can
65
+ * be inspected on a deployed build, from the console of the preview iframe:
66
+ *
67
+ * window.SGAdminPreviewDebug()
68
+ *
69
+ * Compare initialHref with currentHref to see whether the url changed since the app booted, and
70
+ * check latched to see whether a result came from the latch rather than the current url.
71
+ * @returns A snapshot of everything detection depends on.
72
+ */
73
+ export const getAdminPreviewDebugInfo = () => ({
74
+ initialHref: INITIAL_HREF,
75
+ currentHref: window.location.href,
76
+ pathname: window.location.pathname,
77
+ search: window.location.search,
78
+ urlChangedSinceBoot: INITIAL_HREF !== window.location.href,
79
+ isInIframe: window.parent !== window,
80
+ referrer: document.referrer,
81
+ latched: {
82
+ page: pageAdminPreviewLatched,
83
+ frontendSettings: frontendSettingsAdminPreviewLatched
84
+ },
85
+ detected: {
86
+ page: detectPageAdminPreview(),
87
+ frontendSettings: detectFrontendSettingsAdminPreview(),
88
+ any: detectAdminPreview()
89
+ }
90
+ });
91
+
92
+ // @ts-expect-error - debug-only global, intentionally not on the Window type.
93
+ window.SGAdminPreviewDebug = getAdminPreviewDebugInfo;
@@ -13,4 +13,11 @@ export declare const isPageAdminPreviewActive: () => boolean;
13
13
  * @returns True if the app is in frontend settings admin preview mode, false otherwise.
14
14
  */
15
15
  export declare const isFrontendSettingsAdminPreviewActive: () => boolean;
16
+ /**
17
+ * Checks if navigation is blocked. Page admin preview renders a single page in an iframe, so
18
+ * leaving that page would only ever show the admin something it did not ask to preview.
19
+ * Frontend settings preview is not affected - it previews styling on the regular app.
20
+ * @returns True if the app must not navigate, false otherwise.
21
+ */
22
+ export declare const isNavigationBlocked: () => boolean;
16
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../admin-preview/helpers/index.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAO,OACf,CAAC;AAE1B;;;GAGG;AACH,eAAO,MAAM,wBAAwB,QAAO,OACd,CAAC;AAE/B;;;GAGG;AACH,eAAO,MAAM,oCAAoC,QAAO,OACb,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../admin-preview/helpers/index.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAO,OAClB,CAAC;AAEvB;;;GAGG;AACH,eAAO,MAAM,wBAAwB,QAAO,OAClB,CAAC;AAE3B;;;GAGG;AACH,eAAO,MAAM,oCAAoC,QAAO,OAClB,CAAC;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,QAAO,OACX,CAAC"}
@@ -1,19 +1,27 @@
1
- import { IS_ADMIN_PREVIEW_ACTIVE, IS_FRONTEND_SETTINGS_ADMIN_PREVIEW_ACTIVE, IS_PAGE_ADMIN_PREVIEW_ACTIVE } from "../constants";
1
+ import { detectAdminPreview, detectFrontendSettingsAdminPreview, detectPageAdminPreview } from "./_internal/detection";
2
2
 
3
3
  /**
4
4
  * Checks if the app is currently in admin preview mode (pages or frontend settings).
5
5
  * @returns True if the app is in admin preview mode, false otherwise.
6
6
  */
7
- export const isAdminPreviewActive = () => IS_ADMIN_PREVIEW_ACTIVE;
7
+ export const isAdminPreviewActive = () => detectAdminPreview();
8
8
 
9
9
  /**
10
10
  * Checks if the app is currently in page admin preview mode.
11
11
  * @returns True if the app is in page admin preview mode, false otherwise.
12
12
  */
13
- export const isPageAdminPreviewActive = () => IS_PAGE_ADMIN_PREVIEW_ACTIVE;
13
+ export const isPageAdminPreviewActive = () => detectPageAdminPreview();
14
14
 
15
15
  /**
16
16
  * Checks if the app is currently in frontend settings admin preview mode.
17
17
  * @returns True if the app is in frontend settings admin preview mode, false otherwise.
18
18
  */
19
- export const isFrontendSettingsAdminPreviewActive = () => IS_FRONTEND_SETTINGS_ADMIN_PREVIEW_ACTIVE;
19
+ export const isFrontendSettingsAdminPreviewActive = () => detectFrontendSettingsAdminPreview();
20
+
21
+ /**
22
+ * Checks if navigation is blocked. Page admin preview renders a single page in an iframe, so
23
+ * leaving that page would only ever show the admin something it did not ask to preview.
24
+ * Frontend settings preview is not affected - it previews styling on the regular app.
25
+ * @returns True if the app must not navigate, false otherwise.
26
+ */
27
+ export const isNavigationBlocked = () => isPageAdminPreviewActive();
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Internal to the admin-preview package - do not import this module from anywhere else.
3
+ *
4
+ * Hands the payload that `awaitInitialFrontendSettings` received over to the
5
+ * FrontendSettingsPreviewBridge, which mounts long after app start finished. Module state rather
6
+ * than a store slice, because the styling map never belongs in redux - it is applied to a style
7
+ * tag, and the bridge only needs it to avoid removing what app start already applied.
8
+ */
9
+ import type { FrontendSettingsStyling } from '../../components/FrontendSettingsPreviewBridge/types';
10
+ /**
11
+ * Records the payload that app start received.
12
+ * @param initialStyling The styling map the payload carried, if any.
13
+ */
14
+ export declare const setInitialFrontendSettings: (initialStyling: FrontendSettingsStyling | null) => void;
15
+ /**
16
+ * Whether app start received a payload. A payload without a styling map still counts - it
17
+ * carried app settings, which is enough to consider the preview applied.
18
+ * @returns True when a payload arrived during app start.
19
+ */
20
+ export declare const hasInitialFrontendSettings: () => boolean;
21
+ /**
22
+ * The styling map that app start applied, so the bridge can seed its state with it instead of
23
+ * starting at null - which would make its first effect remove the style tag again.
24
+ * @returns The styling map, or null when none arrived.
25
+ */
26
+ export declare const getInitialFrontendSettingsStyling: () => FrontendSettingsStyling | null;
27
+ /**
28
+ * Test only. Module state outlives a test file's individual cases, so specs need a way back to the
29
+ * initial state.
30
+ */
31
+ export declare const resetInitialFrontendSettings: () => void;
32
+ //# sourceMappingURL=initialFrontendSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialFrontendSettings.d.ts","sourceRoot":"","sources":["../../../../admin-preview/initialization/_internal/initialFrontendSettings.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AAMpG;;;GAGG;AACH,eAAO,MAAM,0BAA0B,GAAI,gBAAgB,uBAAuB,GAAG,IAAI,SAGxF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,QAAO,OAAmB,CAAC;AAElE;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,QAAO,uBAAuB,GAAG,IAAe,CAAC;AAE/F;;;GAGG;AACH,eAAO,MAAM,4BAA4B,YAGxC,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Internal to the admin-preview package - do not import this module from anywhere else.
3
+ *
4
+ * Hands the payload that `awaitInitialFrontendSettings` received over to the
5
+ * FrontendSettingsPreviewBridge, which mounts long after app start finished. Module state rather
6
+ * than a store slice, because the styling map never belongs in redux - it is applied to a style
7
+ * tag, and the bridge only needs it to avoid removing what app start already applied.
8
+ */
9
+
10
+ let received = false;
11
+ let styling = null;
12
+
13
+ /**
14
+ * Records the payload that app start received.
15
+ * @param initialStyling The styling map the payload carried, if any.
16
+ */
17
+ export const setInitialFrontendSettings = initialStyling => {
18
+ received = true;
19
+ styling = initialStyling;
20
+ };
21
+
22
+ /**
23
+ * Whether app start received a payload. A payload without a styling map still counts - it
24
+ * carried app settings, which is enough to consider the preview applied.
25
+ * @returns True when a payload arrived during app start.
26
+ */
27
+ export const hasInitialFrontendSettings = () => received;
28
+
29
+ /**
30
+ * The styling map that app start applied, so the bridge can seed its state with it instead of
31
+ * starting at null - which would make its first effect remove the style tag again.
32
+ * @returns The styling map, or null when none arrived.
33
+ */
34
+ export const getInitialFrontendSettingsStyling = () => styling;
35
+
36
+ /**
37
+ * Test only. Module state outlives a test file's individual cases, so specs need a way back to the
38
+ * initial state.
39
+ */
40
+ export const resetInitialFrontendSettings = () => {
41
+ received = false;
42
+ styling = null;
43
+ };
@@ -0,0 +1,22 @@
1
+ interface PreviewStore {
2
+ dispatch: (action: unknown) => void;
3
+ }
4
+ /**
5
+ * Waits for the first settings message from the admin and applies it before the app renders.
6
+ *
7
+ * Without this the app paints with the theme defaults first: the bridge that owns the message
8
+ * listener only mounts once React committed, so everything the admin sent before that is dropped
9
+ * and the styling arrives as a visible restyle.
10
+ *
11
+ * The handshake goes to every allowed origin rather than to a single guessed one. Nothing has been
12
+ * received at this point, so there is no known parent origin, and the referrer is not guaranteed to
13
+ * survive the admin's referrer policy. The browser drops the copies whose target does not match.
14
+ *
15
+ * Resolves when the payload arrived or when REQUEST_TIMEOUT elapsed, and never rejects - an admin
16
+ * that stays silent has to fall back to the unstyled app, never to an iframe that never renders.
17
+ * @param store Reference to the store.
18
+ * @returns A promise that resolves once the first payload settled.
19
+ */
20
+ export declare const awaitInitialFrontendSettings: (store: PreviewStore) => Promise<void>;
21
+ export {};
22
+ //# sourceMappingURL=awaitInitialFrontendSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"awaitInitialFrontendSettings.d.ts","sourceRoot":"","sources":["../../../admin-preview/initialization/awaitInitialFrontendSettings.ts"],"names":[],"mappings":"AAmBA,UAAU,YAAY;IACpB,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,4BAA4B,GAAI,OAAO,YAAY,KAAG,OAAO,CAAC,IAAI,CAqE3E,CAAC"}
@@ -0,0 +1,84 @@
1
+ import "core-js/modules/es.array.includes.js";
2
+ import { withScope, captureMessage, Severity as SentrySeverity } from '@sentry/browser';
3
+ import { receiveAppSettings } from '@shopgate/engage/settings/action-creators/appSettings';
4
+ import { isFrontendSettingsAdminPreviewActive } from "../helpers";
5
+ import { ALLOWED_ADMIN_PREVIEW_ORIGINS } from "../constants";
6
+ import { getOrCreateStyleTag, serializeStyling } from "../components/FrontendSettingsPreviewBridge/helpers";
7
+ import { setInitialFrontendSettings } from "./_internal/initialFrontendSettings";
8
+ const REQUEST_TIMEOUT = 3000;
9
+ /**
10
+ * Waits for the first settings message from the admin and applies it before the app renders.
11
+ *
12
+ * Without this the app paints with the theme defaults first: the bridge that owns the message
13
+ * listener only mounts once React committed, so everything the admin sent before that is dropped
14
+ * and the styling arrives as a visible restyle.
15
+ *
16
+ * The handshake goes to every allowed origin rather than to a single guessed one. Nothing has been
17
+ * received at this point, so there is no known parent origin, and the referrer is not guaranteed to
18
+ * survive the admin's referrer policy. The browser drops the copies whose target does not match.
19
+ *
20
+ * Resolves when the payload arrived or when REQUEST_TIMEOUT elapsed, and never rejects - an admin
21
+ * that stays silent has to fall back to the unstyled app, never to an iframe that never renders.
22
+ * @param store Reference to the store.
23
+ * @returns A promise that resolves once the first payload settled.
24
+ */
25
+ export const awaitInitialFrontendSettings = store => new Promise(resolve => {
26
+ if (!isFrontendSettingsAdminPreviewActive()) {
27
+ resolve();
28
+ return;
29
+ }
30
+ let settled = false;
31
+ let timeout;
32
+
33
+ /**
34
+ * Resolves the promise once, whichever of payload / timeout comes first, and stops listening.
35
+ * The bridge attaches its own listener when it mounts and re-sends the handshake, so the admin
36
+ * resyncs from there.
37
+ */
38
+ const settle = () => {
39
+ if (settled) {
40
+ return;
41
+ }
42
+ settled = true;
43
+ clearTimeout(timeout);
44
+ window.removeEventListener('message', handleMessage);
45
+ resolve();
46
+ };
47
+
48
+ /**
49
+ * Handles the first trusted message. A function declaration, so `settle` can detach it again
50
+ * without a forward reference.
51
+ * @param event The message event.
52
+ */
53
+ function handleMessage(event) {
54
+ if (!ALLOWED_ADMIN_PREVIEW_ORIGINS.includes(event.origin)) return;
55
+ if (event.source !== window.parent) return;
56
+ const {
57
+ data
58
+ } = event;
59
+ if (data?.type !== 'receiveFrontendSettings') return;
60
+ const styling = data.payload?.styling ?? null;
61
+ if (styling) {
62
+ getOrCreateStyleTag().textContent = serializeStyling(styling);
63
+ }
64
+ if (data.payload?.appSettings) {
65
+ store.dispatch(receiveAppSettings(data.payload.appSettings));
66
+ }
67
+ setInitialFrontendSettings(styling);
68
+ settle();
69
+ }
70
+ window.addEventListener('message', handleMessage);
71
+ timeout = setTimeout(() => {
72
+ withScope(scope => {
73
+ scope.setLevel(SentrySeverity.Warning);
74
+ scope.setExtra('timeout', REQUEST_TIMEOUT);
75
+ captureMessage('Waiting for the initial frontend settings took too long');
76
+ });
77
+ settle();
78
+ }, REQUEST_TIMEOUT);
79
+ ALLOWED_ADMIN_PREVIEW_ORIGINS.forEach(origin => {
80
+ window.parent.postMessage({
81
+ type: 'frontendSettingsPreviewReady'
82
+ }, origin);
83
+ });
84
+ });
@@ -1,15 +1,15 @@
1
1
  import React, { useCallback } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { makeStyles } from '@shopgate/engage/styles';
4
- import { Link, CheckedIcon, Button, NotificationIcon, Typography } from '@shopgate/engage/components';
4
+ import { Link, CheckedIcon, NotificationIcon, Typography } from '@shopgate/engage/components';
5
+ import { Button } from '@shopgate/engage/components/v2';
5
6
  import { BACK_IN_STOCK_PATTERN } from '@shopgate/engage/back-in-stock/constants';
6
7
  import { i18n } from '@shopgate/engage/core/helpers';
7
8
  import connect from "./connector";
8
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
10
  const useStyles = makeStyles()(theme => ({
10
11
  button: {
11
- color: theme.palette.warning.main,
12
- width: '100%'
12
+ color: theme.palette.warning.main
13
13
  },
14
14
  backInStockMessageContainer: {
15
15
  display: 'flex',
@@ -114,10 +114,10 @@ const BackInStockButton = ({
114
114
  }
115
115
  if (showAsButton) {
116
116
  return /*#__PURE__*/_jsx(Button, {
117
- type: "primary",
117
+ color: "secondary",
118
+ fullWidth: true,
118
119
  tabIndex: 0,
119
120
  onClick: handleClick,
120
- className: classes.button,
121
121
  children: /*#__PURE__*/_jsx("span", {
122
122
  className: classes.buttonText,
123
123
  children: i18n.text('back_in_stock.get_notified')
@@ -4,7 +4,7 @@ import { makeStyles } from '@shopgate/engage/styles';
4
4
  import { getProductRoute, ProductImage } from '@shopgate/engage/product';
5
5
  import PropTypes from 'prop-types';
6
6
  import { BackInStockButton } from '@shopgate/engage/back-in-stock/components';
7
- import { getThemeSettings, i18n } from '@shopgate/engage/core';
7
+ import { i18n } from '@shopgate/engage/core';
8
8
  import { useBackInStockSubscriptions } from '@shopgate/engage/back-in-stock/hooks';
9
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
10
  const useStyles = makeStyles()(theme => ({
@@ -77,9 +77,6 @@ const Subscription = ({
77
77
  const {
78
78
  removeBackInStockSubscription
79
79
  } = useBackInStockSubscriptions();
80
- const {
81
- ListImage: gridResolutions
82
- } = getThemeSettings('AppImages') || {};
83
80
  const currency = product.price?.currency || 'EUR';
84
81
  const defaultPrice = product.price?.unitPrice || 0;
85
82
  const specialPrice = product.price?.unitPriceStriked;
@@ -94,7 +91,7 @@ const Subscription = ({
94
91
  "aria-hidden": true,
95
92
  children: /*#__PURE__*/_jsx(ProductImage, {
96
93
  src: product.featuredImageBaseUrl,
97
- resolutions: gridResolutions
94
+ context: "list"
98
95
  })
99
96
  }), /*#__PURE__*/_jsxs("div", {
100
97
  className: classes.infoContainer,
@@ -26,8 +26,8 @@ const useStyles = makeStyles()((theme, _params, classes) => ({
26
26
  },
27
27
  image: {
28
28
  background: theme.palette.background.emphasized,
29
+ borderRadius: theme.shape.borderRadius,
29
30
  marginBottom: theme.spacing(1.25),
30
- height: leftColumnWidth,
31
31
  width: leftColumnWidth
32
32
  },
33
33
  content: {
@@ -218,6 +218,7 @@ export function CartItemProductLayout() {
218
218
  portalName: CART_ITEM_IMAGE,
219
219
  portalProps: portalProps,
220
220
  children: /*#__PURE__*/_jsx(ProductImage, {
221
+ context: "list",
221
222
  src: product.featuredImageBaseUrl || product.featuredImageUrl
222
223
  })
223
224
  })
@@ -22,7 +22,6 @@ const useStyles = makeStyles()((theme, _params, classes) => ({
22
22
  },
23
23
  imageColumn: {
24
24
  width: 120,
25
- height: 120,
26
25
  marginRight: theme.spacing(1),
27
26
  flexShrink: 0,
28
27
  flexGrow: 0
@@ -163,7 +162,8 @@ const CartItemProductLayoutWide = () => {
163
162
  children: [/*#__PURE__*/_jsx("div", {
164
163
  className: classes.imageColumn,
165
164
  children: /*#__PURE__*/_jsx(ProductImage, {
166
- src: product.featuredImageBaseUrl || product.featuredImageUrl
165
+ src: product.featuredImageBaseUrl || product.featuredImageUrl,
166
+ context: "list"
167
167
  })
168
168
  }), /*#__PURE__*/_jsxs("div", {
169
169
  className: classes.detailsColumn,
@@ -1,19 +1,13 @@
1
1
  import React from 'react';
2
- import { RippleButton, I18n } from '@shopgate/engage/components';
2
+ import { I18n } from '@shopgate/engage/components';
3
+ import { Button } from '@shopgate/engage/components/v2';
3
4
  import { makeStyles } from '@shopgate/engage/styles';
4
5
  import { useCartItemProduct } from "./CartItem.hooks";
5
6
  import { jsx as _jsx } from "react/jsx-runtime";
6
7
  const useStyles = makeStyles()(theme => ({
7
8
  button: {
8
- fontSize: `${theme.typography.body2.fontSize} !important`,
9
- letterSpacing: '0.05em',
10
- padding: `${theme.spacing(2, 0)} !important`,
11
- ' *': {
12
- padding: '0 !important'
13
- }
14
- },
15
- ripple: {
16
- padding: 0
9
+ marginTop: theme.spacing(2),
10
+ textTransform: 'none'
17
11
  }
18
12
  }));
19
13
 
@@ -27,12 +21,11 @@ const CartItemProductLayoutWideRemoveItem = () => {
27
21
  const {
28
22
  handleRemove
29
23
  } = useCartItemProduct();
30
- return /*#__PURE__*/_jsx(RippleButton, {
24
+ return /*#__PURE__*/_jsx(Button, {
25
+ variant: "text",
26
+ color: "primary",
31
27
  onClick: handleRemove,
32
28
  className: classes.button,
33
- rippleClassName: classes.ripple,
34
- type: "secondary",
35
- flat: true,
36
29
  children: /*#__PURE__*/_jsx(I18n.Text, {
37
30
  string: "cart.remove_item"
38
31
  })
@@ -1,5 +1,4 @@
1
1
  import { connect } from 'react-redux';
2
- import { isAndroid } from '@shopgate/pwa-common/selectors/client';
3
2
  import deleteProductsFromCart from '@shopgate/pwa-common-commerce/cart/actions/deleteProductsFromCart';
4
3
  import updateProductsInCart from '@shopgate/pwa-common-commerce/cart/actions/updateProductsInCart';
5
4
  import { getCurrency } from '@shopgate/pwa-common-commerce/cart/selectors';
@@ -15,7 +14,6 @@ import { getCurrency } from '@shopgate/pwa-common-commerce/cart/selectors';
15
14
  * @returns {StateProps} The extended component props.
16
15
  */
17
16
  const mapStateToProps = state => ({
18
- isAndroid: isAndroid(state),
19
17
  currency: getCurrency(state)
20
18
  });
21
19
 
@@ -1,17 +1,10 @@
1
1
  import "core-js/modules/es.regexp.flags.js";
2
2
  import React, { useMemo, useCallback, useState, useRef } from 'react';
3
- import { getAbsoluteHeight } from '@shopgate/pwa-common/helpers/dom';
4
- import { themeConfig } from '@shopgate/pwa-common/helpers/config';
5
3
  import { CART_ITEM_TYPE_PRODUCT } from '@shopgate/pwa-common-commerce/cart/constants';
6
4
  import PropTypes from 'prop-types';
7
- import { CART_INPUT_AUTO_SCROLL_DELAY } from "../../cart.constants";
8
5
  import Context from "./CartItemProductProvider.context";
9
6
  import connect from "./CartItemProductProvider.connector";
10
7
  import CartItemProductProviderLegacy from "./CartItemProductProviderLegacy";
11
- import { jsx as _jsx } from "react/jsx-runtime";
12
- const {
13
- variables
14
- } = themeConfig;
15
8
 
16
9
  /**
17
10
  * @typedef {import('./CartItemProductProvider.types').OwnProps} OwnProps
@@ -28,6 +21,7 @@ const {
28
21
  * @param {Props} props The component props.
29
22
  * @returns {JSX.Element}
30
23
  */
24
+ import { jsx as _jsx } from "react/jsx-runtime";
31
25
  const CartItemProductProvider = ({
32
26
  currency,
33
27
  deleteProduct,
@@ -36,7 +30,6 @@ const CartItemProductProvider = ({
36
30
  cartItem,
37
31
  isEditable,
38
32
  children,
39
- isAndroid,
40
33
  currencyOverride
41
34
  }) => {
42
35
  const {
@@ -66,25 +59,6 @@ const CartItemProductProvider = ({
66
59
  updateProduct(id, updatedQuantity);
67
60
  }, [id, updateProduct]);
68
61
  const toggleEditMode = useCallback(isEnabled => {
69
- if (isAndroid && isEnabled) {
70
- /**
71
- * When the user focuses the quantity input, the keyboard will pop up an overlap the input.
72
- * Therefor the input has to be scrolled into the viewport again. Since between the focus and
73
- * the keyboard appearance some time ticks away, the execution of the scroll code is delayed.
74
- *
75
- * This should not happen on iOS devices, since their web views behave different.
76
- */
77
- setTimeout(() => {
78
- const yOffset = -(window.innerHeight / 2) + getAbsoluteHeight(cartItemRef.current) + variables.paymentBar.height;
79
- if (cartItemRef.current) {
80
- cartItemRef.current.scrollIntoView({
81
- behavior: 'smooth',
82
- yOffset
83
- });
84
- }
85
- }, CART_INPUT_AUTO_SCROLL_DELAY);
86
- }
87
-
88
62
  // Give the keyboard some time to slide out after blur, before further actions are taken.
89
63
  setTimeout(() => {
90
64
  if (onFocus) {
@@ -92,7 +66,7 @@ const CartItemProductProvider = ({
92
66
  }
93
67
  }, isEnabled ? 300 : 0);
94
68
  setEditMode(isEnabled);
95
- }, [isAndroid, onFocus]);
69
+ }, [onFocus]);
96
70
  const value = useMemo(() => {
97
71
  const isLinkable = flags?.disableLink !== true;
98
72
  const allowQuantityChange = flags?.disableQuantityField !== true;
@@ -140,7 +114,6 @@ CartItemProductProvider.defaultProps = {
140
114
  isEditable: true,
141
115
  onFocus: () => {},
142
116
  currencyOverride: null,
143
- currency: null,
144
- isAndroid: false
117
+ currency: null
145
118
  };
146
119
  export default connect(CartItemProductProvider);
@@ -25,7 +25,6 @@
25
25
 
26
26
  /**
27
27
  * @typedef {Object} StateProps
28
- * @property {boolean} [isAndroid]
29
28
  * @property {string} [currency]
30
29
  */
31
30
 
@@ -8,6 +8,7 @@ const useStyles = makeStyles()(theme => ({
8
8
  inputStyle: {
9
9
  border: 'none',
10
10
  background: theme.palette.background.emphasized,
11
+ color: theme.contrastColor(theme.palette.background.emphasized),
11
12
  display: 'block',
12
13
  fontSize: theme.typography.caption.fontSize,
13
14
  textAlign: 'center',
@@ -1,29 +1,13 @@
1
1
  import React, { useCallback } from 'react';
2
- import { RippleButton, I18n } from '@shopgate/engage/components';
3
- import { makeStyles } from '@shopgate/engage/styles';
2
+ import { I18n } from '@shopgate/engage/components';
3
+ import { Button } from '@shopgate/engage/components/v2';
4
4
  import { useCartItem } from "../CartItem";
5
- import { jsx as _jsx } from "react/jsx-runtime";
6
- const useStyles = makeStyles()(theme => ({
7
- button: {
8
- fontSize: `${theme.typography.body2.fontSize} !important`,
9
- letterSpacing: '0.05em',
10
- padding: '0px !important',
11
- ' *': {
12
- padding: '0px !important'
13
- }
14
- },
15
- ripple: {
16
- padding: 0
17
- }
18
- }));
19
5
 
20
6
  /**
21
7
  * @returns {JSX}
22
8
  */
9
+ import { jsx as _jsx } from "react/jsx-runtime";
23
10
  const CartItemCardReservationLabelChangeStore = () => {
24
- const {
25
- classes
26
- } = useStyles();
27
11
  const {
28
12
  invokeFulfillmentAction,
29
13
  cartItem
@@ -39,12 +23,10 @@ const CartItemCardReservationLabelChangeStore = () => {
39
23
  } = cartItem;
40
24
  invokeFulfillmentAction('changeLocation', method);
41
25
  }, [cartItem, invokeFulfillmentAction]);
42
- return /*#__PURE__*/_jsx(RippleButton, {
26
+ return /*#__PURE__*/_jsx(Button, {
27
+ variant: "link",
28
+ color: "primary",
43
29
  onClick: handleChangeLocationClick,
44
- className: classes.button,
45
- rippleClassName: classes.ripple,
46
- type: "secondary",
47
- flat: true,
48
30
  children: /*#__PURE__*/_jsx(I18n.Text, {
49
31
  string: "locations.change_location"
50
32
  })