@shopgate/engage 7.31.4-beta.1 → 7.32.0-beta.2

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 (481) hide show
  1. package/README.md +0 -1
  2. package/account/components/Account/Account.d.ts.map +1 -1
  3. package/account/components/Account/Account.js +4 -3
  4. package/account/components/Profile/Profile.provider.d.ts +1 -1
  5. package/account/components/Profile/Profile.provider.js +1 -1
  6. package/account/components/Profile/ProfileAddressBook.d.ts.map +1 -1
  7. package/account/components/Profile/ProfileAddressBook.js +9 -11
  8. package/account/components/Profile/ProfileAddressCard.d.ts.map +1 -1
  9. package/account/components/Profile/ProfileAddressCard.js +36 -33
  10. package/account/components/Profile/ProfileForm.js +4 -4
  11. package/account/components/Profile/ProfileHeader.d.ts.map +1 -1
  12. package/account/components/Profile/ProfileHeader.js +8 -9
  13. package/account/components/ProfileContact/ProfileContact.js +4 -3
  14. package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.d.ts +7 -0
  15. package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.d.ts.map +1 -0
  16. package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.js +42 -0
  17. package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.d.ts +20 -0
  18. package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.d.ts.map +1 -0
  19. package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.js +49 -0
  20. package/admin-preview/components/FrontendSettingsPreviewBridge/index.d.ts +2 -0
  21. package/admin-preview/components/FrontendSettingsPreviewBridge/index.d.ts.map +1 -0
  22. package/admin-preview/components/FrontendSettingsPreviewBridge/index.js +1 -0
  23. package/admin-preview/components/FrontendSettingsPreviewBridge/types.d.ts +14 -0
  24. package/admin-preview/components/FrontendSettingsPreviewBridge/types.d.ts.map +1 -0
  25. package/admin-preview/components/FrontendSettingsPreviewBridge/types.js +1 -0
  26. package/admin-preview/components/index.d.ts +2 -0
  27. package/admin-preview/components/index.d.ts.map +1 -0
  28. package/admin-preview/components/index.js +1 -0
  29. package/admin-preview/constants/index.d.ts +27 -0
  30. package/admin-preview/constants/index.d.ts.map +1 -0
  31. package/admin-preview/constants/index.js +31 -0
  32. package/admin-preview/detection.d.ts +49 -0
  33. package/admin-preview/detection.d.ts.map +1 -0
  34. package/admin-preview/detection.js +166 -0
  35. package/admin-preview/helpers/index.d.ts +16 -0
  36. package/admin-preview/helpers/index.d.ts.map +1 -0
  37. package/admin-preview/helpers/index.js +19 -0
  38. package/admin-preview/hooks/index.d.ts +36 -0
  39. package/admin-preview/hooks/index.d.ts.map +1 -0
  40. package/admin-preview/hooks/index.js +74 -0
  41. package/back-in-stock/components/BackInStockButton/index.js +16 -19
  42. package/back-in-stock/components/Subscriptions/components/Subscription/index.js +20 -21
  43. package/cart/components/CartHeaderWide/CartHeaderWide.js +4 -3
  44. package/cart/components/CartItem/CartItemCoupon.js +2 -6
  45. package/cart/components/CartItem/CartItemCouponDelete.js +3 -3
  46. package/cart/components/CartItem/CartItemCouponLayout.js +1 -1
  47. package/cart/components/CartItem/CartItemCouponPrice.js +16 -19
  48. package/cart/components/CartItem/CartItemCouponTitle.js +4 -4
  49. package/cart/components/CartItem/CartItemProduct.js +2 -6
  50. package/cart/components/CartItem/CartItemProductLayout.js +4 -8
  51. package/cart/components/CartItem/CartItemProductLayoutWide.js +19 -14
  52. package/cart/components/CartItem/CartItemProductLayoutWideFulfillmentLabel.js +5 -3
  53. package/cart/components/CartItem/CartItemProductLayoutWideOrderDetails.js +18 -12
  54. package/cart/components/CartItem/CartItemProductLayoutWideRemoveItem.js +1 -1
  55. package/cart/components/CartItem/CartItemProductOrderDetails.js +2 -2
  56. package/cart/components/CartItem/CartItemProductPriceCaption.js +5 -4
  57. package/cart/components/CartItem/CartItemProductPriceList.js +18 -12
  58. package/cart/components/CartItem/CartItemProductPriceListPromotion.js +7 -7
  59. package/cart/components/CartItem/CartItemProductProvider.connector.js +0 -2
  60. package/cart/components/CartItem/CartItemProductProvider.js +3 -30
  61. package/cart/components/CartItem/CartItemProductProvider.types.js +0 -1
  62. package/cart/components/CartItem/CartItemProductTitle.js +2 -3
  63. package/cart/components/CartItem/CartItemQuantityPicker.js +2 -7
  64. package/cart/components/CartItem/CartItemSubstitution.js +1 -2
  65. package/cart/components/CartItems/CartItemCard.js +3 -4
  66. package/cart/components/CartItems/CartItemCardReservationAccordion.js +9 -10
  67. package/cart/components/CartItems/CartItemCardReservationLabel.js +11 -11
  68. package/cart/components/CartItems/CartItemCardReservationLabelChangeStore.js +3 -3
  69. package/cart/components/CartItems/CartItemGroupReservation.js +4 -3
  70. package/cart/components/CartItems/CartItemGroupReservationLabel.js +12 -10
  71. package/cart/components/CartItems/CartItemGroupShipping.js +7 -5
  72. package/cart/components/CartItems/CartItems.js +2 -4
  73. package/cart/components/CartItems/CartItemsHeaderWide.js +43 -18
  74. package/cart/components/CartSummaryWide/CartSummaryWide.js +9 -16
  75. package/cart/components/CartSummaryWide/CartSummaryWideCheckoutButton.js +4 -8
  76. package/cart/components/PaymentBar/PaymentBarCheckoutButton.js +6 -10
  77. package/cart/components/PaymentBar/PaymentBarContent.js +4 -10
  78. package/cart/components/PaymentBar/PaymentBarPromotionCouponMessages.js +6 -2
  79. package/cart/components/PaymentBar/PaymentBarPromotionCoupons.js +5 -5
  80. package/cart/components/PaymentBar/PaymentBarPromotionalText.js +9 -10
  81. package/cart/components/PaymentBar/PaymentBarReserveButton.js +6 -10
  82. package/cart/components/PaymentBar/testUtils/mockFactories.js +64 -0
  83. package/cart/components/Substitution/connector.js +1 -1
  84. package/cart/components/SupplementalContent/SupplementalContent.connector.js +2 -1
  85. package/cart/components/SupplementalContent/SupplementalContent.js +6 -7
  86. package/category/components/CategoryImage/connector.js +1 -1
  87. package/category/components/CategoryList/index.js +4 -8
  88. package/checkout/components/AddressBook/AddressList.js +9 -10
  89. package/checkout/components/AddressBookContact/AddressBookContact.js +6 -6
  90. package/checkout/components/Checkout/CheckoutAddress.js +25 -15
  91. package/checkout/components/Checkout/CheckoutHeader.js +9 -11
  92. package/checkout/components/Checkout/CheckoutPickupContactForm.js +2 -2
  93. package/checkout/components/Checkout/CheckoutSection.js +22 -15
  94. package/checkout/components/Checkout/CheckoutSectionInfo.js +14 -17
  95. package/checkout/components/Checkout/CheckoutSectionMessages.js +5 -4
  96. package/checkout/components/CheckoutConfirmation/CheckoutConfirmation.js +15 -14
  97. package/checkout/components/CheckoutConfirmation/CheckoutConfirmationSection.js +44 -62
  98. package/checkout/components/GuestCheckout/GuestCheckoutPickup.js +7 -4
  99. package/checkout/components/PaymentMethodButton/PaymentMethodButton.js +3 -3
  100. package/checkout/components/ResponsiveBackButton/ResponsiveBackButton.js +2 -2
  101. package/checkout/components/ShippingMethods/ShippingMethod.js +6 -5
  102. package/checkout/components/ShippingMethods/ShippingMethods.js +11 -8
  103. package/checkout/components/SupplementalContent/SupplementalContent.connector.js +2 -1
  104. package/checkout/components/SupplementalContent/SupplementalContent.js +6 -7
  105. package/checkout/paymentMethods/index.js +5 -4
  106. package/checkout/paymentMethods/paypal/PaypalPayButton.js +7 -6
  107. package/checkout/paymentMethods/stripe/StripeCreditCard.js +6 -9
  108. package/components/ChipLayout/index.js +4 -4
  109. package/components/Form/Builder/ElementPhoneNumber.d.ts.map +1 -1
  110. package/components/Form/Builder/ElementPhoneNumber.js +2 -6
  111. package/components/Form/Builder/stylePresets.d.ts.map +1 -1
  112. package/components/Form/Builder/stylePresets.js +12 -17
  113. package/components/Logo/connector.js +3 -1
  114. package/components/Logo/index.d.ts.map +1 -1
  115. package/components/Logo/index.js +3 -6
  116. package/components/Menu/components/Item/index.d.ts.map +1 -1
  117. package/components/Menu/components/Item/index.js +5 -17
  118. package/components/Menu/index.d.ts.map +1 -1
  119. package/components/Menu/index.js +2 -3
  120. package/components/MessageBar/MessageBar.d.ts.map +1 -1
  121. package/components/MessageBar/MessageBar.js +35 -42
  122. package/components/NavigationHandler/index.d.ts +2 -2
  123. package/components/Picker/components/Button/index.js +3 -3
  124. package/components/Picker/components/List/index.js +3 -3
  125. package/components/Picker/components/Modal/index.d.ts.map +1 -1
  126. package/components/Picker/components/Modal/index.js +2 -3
  127. package/components/Picker/spec.js +48 -41
  128. package/components/PickerUtilize/components/Button/index.d.ts.map +1 -1
  129. package/components/PickerUtilize/components/Button/index.js +6 -10
  130. package/components/PickerUtilize/index.d.ts +2 -1
  131. package/components/PickerUtilize/index.d.ts.map +1 -1
  132. package/components/PickerUtilize/spec.js +6 -3
  133. package/components/Radio/Radio.js +6 -5
  134. package/components/ResponsiveContainer/breakpoints.js +2 -2
  135. package/components/ScrollHeader/index.js +3 -3
  136. package/components/SheetList/components/Item/index.js +11 -16
  137. package/components/SheetList/index.d.ts.map +1 -1
  138. package/components/SheetList/index.js +3 -7
  139. package/components/SideNavigation/SideNavigationCategories.js +2 -7
  140. package/components/SideNavigation/SideNavigationCategoriesItem.js +2 -2
  141. package/components/SideNavigation/SideNavigationContent.js +3 -3
  142. package/components/SideNavigation/SideNavigationItem.d.ts.map +1 -1
  143. package/components/SideNavigation/SideNavigationItem.js +3 -4
  144. package/components/SideNavigation/SideNavigationNestedItem.js +2 -2
  145. package/components/Switch/index.d.ts.map +1 -1
  146. package/components/Switch/index.js +6 -7
  147. package/components/Tabs/components/TabIndicator.js +3 -3
  148. package/components/TextLink/TextLink.d.ts.map +1 -1
  149. package/components/TextLink/TextLink.js +8 -26
  150. package/components/Toggle/index.js +5 -5
  151. package/components/Typography/Typography.d.ts +87 -124
  152. package/components/Typography/Typography.d.ts.map +1 -0
  153. package/components/Typography/Typography.js +72 -57
  154. package/components/Typography/index.d.ts +2 -1
  155. package/components/Typography/index.d.ts.map +1 -0
  156. package/components/View/components/Above/index.d.ts.map +1 -1
  157. package/components/View/components/Above/index.js +3 -1
  158. package/components/View/components/Below/index.d.ts.map +1 -1
  159. package/components/View/components/Below/index.js +3 -1
  160. package/components/View/components/Content/index.d.ts +2 -1
  161. package/components/View/components/Content/index.d.ts.map +1 -1
  162. package/components/View/components/Content/index.js +2 -2
  163. package/components/View/index.d.ts.map +1 -1
  164. package/components/View/index.js +1 -5
  165. package/components/v2/Button/Button.d.ts +1 -1
  166. package/components/v2/ButtonBase/Ripple.d.ts +2 -1
  167. package/components/v2/ButtonBase/Ripple.d.ts.map +1 -1
  168. package/core/action-creators/merchantSettings.d.ts +1 -1
  169. package/core/action-creators/merchantSettings.d.ts.map +1 -1
  170. package/core/action-creators/merchantSettings.js +3 -11
  171. package/core/action-creators/shopSettings.d.ts +1 -2
  172. package/core/action-creators/shopSettings.d.ts.map +1 -1
  173. package/core/action-creators/shopSettings.js +3 -21
  174. package/core/constants/merchantSettings.d.ts +1 -11
  175. package/core/constants/merchantSettings.d.ts.map +1 -1
  176. package/core/constants/merchantSettings.js +3 -11
  177. package/core/constants/shopSettings.d.ts +1 -27
  178. package/core/constants/shopSettings.d.ts.map +1 -1
  179. package/core/constants/shopSettings.js +3 -27
  180. package/core/helpers/scrollContainer.js +2 -2
  181. package/core/initialization/index.js +2 -1
  182. package/core/selectors/merchantSettings.d.ts +1 -20
  183. package/core/selectors/merchantSettings.d.ts.map +1 -1
  184. package/core/selectors/merchantSettings.js +3 -33
  185. package/core/selectors/shopSettings.d.ts +1 -53
  186. package/core/selectors/shopSettings.d.ts.map +1 -1
  187. package/core/selectors/shopSettings.js +3 -80
  188. package/development/components/ClientInformation/ClientInformation.js +5 -3
  189. package/development/components/DevelopmentSettings/DevelopmentSettings.js +3 -2
  190. package/development/components/SimulatedInsets/SimulatedInsetBottom.js +3 -3
  191. package/development/components/SimulatedInsets/SimulatedInsetTop.js +6 -6
  192. package/favorites/components/CommentDialog/CommentDialog.js +17 -15
  193. package/favorites/components/FavoriteButtonWide/FavoriteButtonWide.js +6 -7
  194. package/favorites/components/Item/Item.d.ts.map +1 -1
  195. package/favorites/components/Item/Item.js +19 -17
  196. package/favorites/components/Item/ItemCharacteristics.d.ts.map +1 -1
  197. package/favorites/components/Item/ItemCharacteristics.js +6 -14
  198. package/favorites/components/Item/ItemNotes.js +23 -20
  199. package/favorites/components/Item/ItemQuantity.js +1 -1
  200. package/favorites/components/List/List.d.ts.map +1 -1
  201. package/favorites/components/List/List.js +1 -5
  202. package/favorites/components/ListChooser/ListChooserItem.js +1 -1
  203. package/favorites/components/Lists/Lists.js +15 -3
  204. package/favorites/components/Lists/ListsModal.d.ts.map +1 -1
  205. package/favorites/components/Lists/ListsModal.js +4 -11
  206. package/favorites/components/RemoveButton/RemoveButton.d.ts.map +1 -1
  207. package/favorites/components/RemoveButton/RemoveButton.js +1 -2
  208. package/filter/components/FilterItem/index.js +5 -8
  209. package/filter/components/FilterItem/spec.js +3 -3
  210. package/filter/components/FilterPageContent/components/Selector/components/Selected/spec.js +5 -5
  211. package/filter/components/FilterPageContent/components/Selector/components/Toggle/index.js +3 -3
  212. package/filter/components/FilterPageContent/components/Selector/components/Toggle/spec.js +5 -5
  213. package/filter/components/FilterPageContent/components/Selector/components/ValueButton/index.js +4 -5
  214. package/filter/components/FilterPageContent/components/Selector/spec.js +3 -3
  215. package/filter/components/PriceSlider/components/Label/index.js +9 -13
  216. package/filter/components/PriceSlider/components/Label/spec.js +12 -3
  217. package/filter/components/PriceSlider/index.js +4 -9
  218. package/filter/components/PriceSlider/spec.js +10 -5
  219. package/filter/selectors/index.js +2 -2
  220. package/locations/components/Cart/CartContextMenuChangeFulfillmentContent.js +1 -1
  221. package/locations/components/ChangeLocationButton/ChangeLocationButton.js +1 -1
  222. package/locations/components/FulfillmentPath/FulfillmentPathItem.js +1 -7
  223. package/locations/components/FulfillmentSelector/FulfillmentSelector.connector.js +2 -2
  224. package/locations/components/FulfillmentSelector/FulfillmentSelectorAlternativeLocation.js +12 -10
  225. package/locations/components/FulfillmentSelector/FulfillmentSelectorHeader.js +1 -1
  226. package/locations/components/FulfillmentSelector/FulfillmentSelectorImpossibleError.js +3 -3
  227. package/locations/components/FulfillmentSelector/FulfillmentSelectorItem.js +4 -4
  228. package/locations/components/FulfillmentSelector/FulfillmentSelectorLocation.js +18 -15
  229. package/locations/components/FulfillmentSelector/FulfillmentSelectorLocationMethodNotAvailable.js +3 -3
  230. package/locations/components/FulfillmentSheet/FulfillmentSheetContent.js +4 -8
  231. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotDialog.js +22 -21
  232. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotProvider.connector.js +1 -1
  233. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcher.connector.js +1 -1
  234. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcher.js +4 -4
  235. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherBar.js +14 -18
  236. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherDefault.js +12 -15
  237. package/locations/components/GlobalLocationSelector/GlobalLocationSelector.js +1 -1
  238. package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcher.connector.js +1 -1
  239. package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherBar.js +13 -17
  240. package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherDefault.js +12 -12
  241. package/locations/components/ReservationResponses/ReservationError.js +9 -6
  242. package/locations/components/ReservationResponses/ReservationSuccess.js +14 -9
  243. package/locations/components/ReserveForm/ReserveForm.js +6 -5
  244. package/locations/components/ReserveForm/ReserveFormPhone.js +7 -9
  245. package/locations/components/StockInfo/StockInfo.js +4 -2
  246. package/locations/components/StockInfoLists/index.js +5 -7
  247. package/locations/components/StoreDetails/components/FindMoreStores.js +11 -12
  248. package/locations/components/StoreDetails/components/GetDirectionsButton.js +3 -5
  249. package/locations/components/StoreDetails/components/StoreDetails.js +24 -26
  250. package/locations/components/StoreDetails/components/StoreFinderMap.js +4 -4
  251. package/locations/components/StoreDetails/components/StoresNearby.js +5 -3
  252. package/locations/components/StoreDetails/components/StoresNearbyListItem.js +24 -10
  253. package/locations/components/StoreFinder/StoreFinder.js +1 -1
  254. package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.js +5 -5
  255. package/locations/components/StoreFinder/StoreFinderLocationDetails.js +7 -6
  256. package/locations/components/StoreFinder/StoreFinderLocationHeader.js +17 -21
  257. package/locations/components/StoreFinder/StoreFinderLocations.js +2 -6
  258. package/locations/components/StoreFinder/StoreFinderSelectLocationButton.js +3 -3
  259. package/locations/components/StoreFinder/StoreFinderStoreInfoButton.js +3 -3
  260. package/locations/components/StoreList/StoreAddress.js +3 -3
  261. package/locations/components/StoreList/StoreAddressShort.js +10 -12
  262. package/locations/components/StoreList/StoreDetails.js +1 -2
  263. package/locations/components/StoreList/StoreDetailsLine.js +3 -3
  264. package/locations/components/StoreList/StoreDistance.js +6 -17
  265. package/locations/components/StoreList/StoreHeader.js +7 -7
  266. package/locations/components/StoreList/StoreHoursToday.js +3 -3
  267. package/locations/components/StoreList/StoreListLocations.js +20 -18
  268. package/locations/components/StoreList/StoreListProduct.js +2 -3
  269. package/locations/components/StoreList/StoreListProductInfo.js +9 -6
  270. package/locations/components/StoreList/StoreListProductName.js +4 -3
  271. package/locations/components/StoreList/StoreListSearch.js +10 -11
  272. package/locations/components/StoreList/StoreListSearchRadius.js +4 -5
  273. package/locations/components/StoreList/StoreOpeningHours.js +10 -12
  274. package/locations/components/StoreList/StorePhoneNumber.js +10 -12
  275. package/locations/components/StoreList/StoreSelectLocationButton.js +3 -3
  276. package/locations/helpers/showInventoryInLists.js +1 -1
  277. package/locations/providers/FulfillmentProvider.connector.js +1 -1
  278. package/locations/reducers/index.js +1 -1
  279. package/locations/selectors/index.js +2 -1
  280. package/locations/subscriptions.js +2 -2
  281. package/login/components/ForgotPassword/ForgotPassword.js +16 -16
  282. package/orders/components/OrderDetails/OrderDetailsAuthenticate.js +1 -1
  283. package/orders/components/OrderDetails/OrderDetailsContent.js +5 -4
  284. package/orders/components/OrderDetails/OrderDetailsOrderHeader.js +7 -8
  285. package/orders/components/OrderDetails/OrderDetailsOrderPickupLocation.js +2 -2
  286. package/orders/components/OrderHistory/OrderHistoryList.d.ts.map +1 -1
  287. package/orders/components/OrderHistory/OrderHistoryList.js +4 -8
  288. package/orders/components/OrderHistory/OrderHistoryTable.js +1 -1
  289. package/package.json +12 -11
  290. package/page/components/NotFound.js +8 -7
  291. package/page/components/WidgetHeadline/WidgetHeadline.js +4 -3
  292. package/page/components/WidgetRichText/WidgetRichText.js +1 -1
  293. package/page/components/Widgets/Tooltip.js +7 -8
  294. package/page/components/Widgets/Widget.js +4 -4
  295. package/page/components/Widgets/constants.js +0 -5
  296. package/page/components/Widgets/hooks.js +5 -96
  297. package/page/constants/index.js +5 -2
  298. package/page/selectors/index.js +2 -1
  299. package/page/widgets/HTML/HTML.js +5 -9
  300. package/page/widgets/NestedCategoryFilter/NestedCategoryFilter.js +0 -5
  301. package/page/widgets/NestedCategoryFilter/components/Picker/components/SheetItem/index.js +2 -2
  302. package/page/widgets/NestedCategoryFilter/components/Picker/index.js +7 -9
  303. package/page/widgets/Placeholder/Placeholder.js +7 -8
  304. package/product/components/Availability/Availability.js +0 -4
  305. package/product/components/Characteristics/Characteristic/components/SheetItem/index.js +4 -8
  306. package/product/components/Characteristics/Characteristic/index.js +9 -12
  307. package/product/components/Characteristics/Swatch/index.js +3 -7
  308. package/product/components/Characteristics/transition.js +4 -4
  309. package/product/components/Description/index.js +6 -7
  310. package/product/components/EffectivityDates/index.js +23 -17
  311. package/product/components/FilterBar/components/Content/components/FilterButton/index.js +7 -13
  312. package/product/components/FilterBar/components/Content/components/Sort/index.js +7 -13
  313. package/product/components/FilterBar/components/FilterModal/FilterModalContent.js +3 -7
  314. package/product/components/FilterBar/components/FilterModal/FilterModalTitle.js +13 -12
  315. package/product/components/FilterBar/index.js +4 -8
  316. package/product/components/Header/PriceStriked/index.js +4 -8
  317. package/product/components/Header/Shipping/index.js +3 -3
  318. package/product/components/Header/Shipping/spec.js +7 -8
  319. package/product/components/Header/Tiers/components/Tier/index.js +3 -3
  320. package/product/components/Header/Tiers/components/Tier/spec.js +4 -4
  321. package/product/components/Header/Tiers/index.js +5 -3
  322. package/product/components/Header/Tiers/spec.js +7 -7
  323. package/product/components/MapPriceHint/index.js +8 -7
  324. package/product/components/Media/MediaImage.js +2 -2
  325. package/product/components/Media/MediaPlaceholder.js +3 -4
  326. package/product/components/Options/components/TextOption/components/OptionInfo/index.js +18 -18
  327. package/product/components/Options/components/TextOption/components/OptionInfo/spec.js +30 -21
  328. package/product/components/Options/components/TextOption/index.js +8 -11
  329. package/product/components/OrderQuantityHint/index.js +10 -16
  330. package/product/components/PriceDifference/index.js +4 -8
  331. package/product/components/PriceInfo/PriceInfo.connector.js +2 -2
  332. package/product/components/PriceInfo/PriceInfo.js +3 -4
  333. package/product/components/ProductCard/index.js +4 -5
  334. package/product/components/ProductDiscountBadge/index.js +3 -3
  335. package/product/components/ProductDiscountBadge/spec.js +5 -5
  336. package/product/components/ProductGrid/components/Item/components/ItemFavoritesButton/index.js +1 -1
  337. package/product/components/ProductGrid/components/Item/components/ItemFavoritesButton/spec.js +7 -7
  338. package/product/components/ProductGrid/components/Item/components/ItemImage/spec.js +3 -3
  339. package/product/components/ProductGrid/components/Item/components/ItemName/index.js +3 -4
  340. package/product/components/ProductGrid/components/Item/components/ItemName/spec.js +3 -3
  341. package/product/components/ProductGrid/components/Item/components/ItemPrice/spec.js +4 -4
  342. package/product/components/ProductGrid/components/Item/index.js +1 -5
  343. package/product/components/ProductGridPrice/index.js +9 -15
  344. package/product/components/ProductImage/ProductImagePlaceholder.js +9 -12
  345. package/product/components/ProductImage/index.js +6 -8
  346. package/product/components/ProductList/components/Item/index.js +5 -9
  347. package/product/components/ProductList/components/Layout/index.js +1 -1
  348. package/product/components/ProductName/ProductName.d.ts +1 -1
  349. package/product/components/ProductName/ProductName.d.ts.map +1 -1
  350. package/product/components/ProductName/ProductNameContent.d.ts +2 -1
  351. package/product/components/ProductName/ProductNameContent.d.ts.map +1 -1
  352. package/product/components/ProductProperties/Content.js +1 -1
  353. package/product/components/ProductProperties/Group.js +6 -4
  354. package/product/components/ProductProperties/GroupedProperties.js +1 -1
  355. package/product/components/ProductProperties/Wrapper.js +4 -2
  356. package/product/components/ProductRatingStars/ProductRatingStars.d.ts +1 -1
  357. package/product/components/ProductSlider/spec.js +5 -5
  358. package/product/components/Rating/spec.js +9 -8
  359. package/product/components/RelationsSlider/RelationsSheet.js +1 -5
  360. package/product/components/RelationsSlider/RelationsSliderContent.js +4 -4
  361. package/product/components/Swatch/SwatchContent.js +3 -7
  362. package/product/components/Swatches/Swatches.js +3 -7
  363. package/product/components/UnitQuantityPicker/ProductUnitQuantityPicker.js +4 -4
  364. package/product/components/UnitQuantityPicker/UnitQuantityPicker.d.ts.map +1 -1
  365. package/product/components/UnitQuantityPicker/UnitQuantityPicker.js +9 -12
  366. package/push-opt-in/components/PushOptInModal/index.js +14 -14
  367. package/registration/components/GuestRegistration/GuestRegistrationFormPickup.js +2 -2
  368. package/registration/components/Registration/RegistrationContent.js +2 -1
  369. package/registration/components/Registration/RegistrationFormBase.config.js +2 -1
  370. package/registration/providers/GuestRegistrationProvider.actions.js +1 -1
  371. package/registration/providers/GuestRegistrationProvider.connector.js +3 -2
  372. package/registration/providers/GuestRegistrationProvider.js +2 -1
  373. package/registration/providers/RegistrationProvider.actions.js +4 -2
  374. package/registration/providers/RegistrationProvider.connector.js +2 -2
  375. package/registration/providers/RegistrationProvider.constraints.js +1 -1
  376. package/registration/providers/RegistrationProvider.js +2 -1
  377. package/reviews/components/Reviews/components/Header/components/NoReviews/index.js +1 -1
  378. package/reviews/components/Reviews/components/Header/components/ReviewsExcerpt/index.js +3 -3
  379. package/reviews/components/Reviews/components/Header/components/WriteReviewLink/spec.js +43 -26
  380. package/reviews/components/Reviews/components/Header/spec.js +47 -29
  381. package/reviews/components/Reviews/components/List/components/Info/index.js +16 -26
  382. package/reviews/components/Reviews/components/List/components/Text/index.js +4 -2
  383. package/reviews/components/Reviews/components/List/components/Title/index.js +3 -3
  384. package/reviews/components/Reviews/components/List/index.js +1 -5
  385. package/reviews/components/Reviews/components/List/spec.js +68 -29
  386. package/reviews/components/Reviews/components/RatingCount/index.js +13 -15
  387. package/reviews/components/Reviews/components/RatingCount/spec.js +25 -5
  388. package/reviews/components/Reviews/components/ReviewsInfo/index.js +9 -9
  389. package/reviews/components/Reviews/spec.js +56 -28
  390. package/settings/action-creators/appSettings.d.ts +12 -0
  391. package/settings/action-creators/appSettings.d.ts.map +1 -0
  392. package/settings/action-creators/appSettings.js +10 -0
  393. package/settings/action-creators/merchantSettings.d.ts +2 -0
  394. package/settings/action-creators/merchantSettings.d.ts.map +1 -0
  395. package/settings/action-creators/merchantSettings.js +11 -0
  396. package/settings/action-creators/shopSettings.d.ts +3 -0
  397. package/settings/action-creators/shopSettings.d.ts.map +1 -0
  398. package/settings/action-creators/shopSettings.js +21 -0
  399. package/settings/constants/appSettings.d.ts +2 -0
  400. package/settings/constants/appSettings.d.ts.map +1 -0
  401. package/settings/constants/appSettings.js +1 -0
  402. package/settings/constants/merchantSettings.d.ts +12 -0
  403. package/settings/constants/merchantSettings.d.ts.map +1 -0
  404. package/settings/constants/merchantSettings.js +11 -0
  405. package/settings/constants/shopSettings.d.ts +28 -0
  406. package/settings/constants/shopSettings.d.ts.map +1 -0
  407. package/settings/constants/shopSettings.js +27 -0
  408. package/settings/reducers/appSettings.d.ts +18 -0
  409. package/settings/reducers/appSettings.d.ts.map +1 -0
  410. package/settings/reducers/appSettings.js +42 -0
  411. package/settings/reducers/index.d.ts +15 -0
  412. package/settings/reducers/index.d.ts.map +1 -0
  413. package/{core → settings}/reducers/index.js +4 -3
  414. package/settings/reducers/merchantSettings.d.ts +18 -0
  415. package/settings/reducers/merchantSettings.d.ts.map +1 -0
  416. package/{core → settings}/reducers/merchantSettings.js +9 -3
  417. package/settings/reducers/shopSettings.d.ts +28 -0
  418. package/settings/reducers/shopSettings.d.ts.map +1 -0
  419. package/{core → settings}/reducers/shopSettings.js +10 -4
  420. package/settings/selectors/appSettings.d.ts +44 -0
  421. package/settings/selectors/appSettings.d.ts.map +1 -0
  422. package/settings/selectors/appSettings.js +23 -0
  423. package/settings/selectors/merchantSettings.d.ts +21 -0
  424. package/settings/selectors/merchantSettings.d.ts.map +1 -0
  425. package/settings/selectors/merchantSettings.js +34 -0
  426. package/settings/selectors/shopSettings.d.ts +54 -0
  427. package/settings/selectors/shopSettings.d.ts.map +1 -0
  428. package/settings/selectors/shopSettings.js +81 -0
  429. package/settings/types/appSettings.d.ts +32 -0
  430. package/settings/types/appSettings.d.ts.map +1 -0
  431. package/settings/types/appSettings.js +1 -0
  432. package/styles/helpers/setPageBackgroundColor.js +2 -2
  433. package/styles/index.d.ts +1 -1
  434. package/styles/index.d.ts.map +1 -1
  435. package/styles/index.js +1 -1
  436. package/styles/theme/createDefaultThemeOptions/index.d.ts.map +1 -1
  437. package/styles/theme/createDefaultThemeOptions/index.js +72 -3
  438. package/styles/theme/createTheme/createComponents.types.d.ts +169 -0
  439. package/styles/theme/createTheme/createComponents.types.d.ts.map +1 -1
  440. package/styles/theme/createTheme/createComponents.types.js +169 -0
  441. package/styles/theme/createTheme/createCssVarsForColorSchemeThemes.d.ts.map +1 -1
  442. package/styles/theme/createTheme/createCssVarsForColorSchemeThemes.js +28 -2
  443. package/styles/theme/createTheme/createPalette.types.d.ts +15 -7
  444. package/styles/theme/createTheme/createPalette.types.d.ts.map +1 -1
  445. package/styles/theme/createTheme/createPalette.types.js +16 -8
  446. package/styles/theme/createTheme/createSpacing.js +4 -1
  447. package/styles/theme/createTheme/createThemeFromColorScheme.d.ts +9 -2
  448. package/styles/theme/createTheme/createThemeFromColorScheme.d.ts.map +1 -1
  449. package/styles/theme/createTheme/createThemeFromColorScheme.js +10 -1
  450. package/styles/theme/createTheme/helpers/cssVarsColorAugmentation.d.ts +2 -1
  451. package/styles/theme/createTheme/helpers/cssVarsColorAugmentation.d.ts.map +1 -1
  452. package/styles/theme/createTheme/helpers/cssVarsColorAugmentation.js +84 -6
  453. package/styles/theme/createTheme/helpers/cssVarsParser.d.ts.map +1 -1
  454. package/styles/theme/createTheme/helpers/cssVarsParser.js +1 -1
  455. package/styles/theme/createTheme/index.d.ts.map +1 -1
  456. package/styles/theme/createTheme/index.js +2 -2
  457. package/styles/theme/createTheme/layout.d.ts +23 -0
  458. package/styles/theme/createTheme/layout.d.ts.map +1 -0
  459. package/styles/theme/createTheme/layout.js +20 -0
  460. package/styles/theme/createTheme/transitions.d.ts +4 -0
  461. package/styles/theme/createTheme/transitions.js +3 -1
  462. package/styles/theme/createTheme/types.d.ts +32 -5
  463. package/styles/theme/createTheme/types.d.ts.map +1 -1
  464. package/styles/theme/createTheme/types.js +8 -1
  465. package/styles/theme/hocs/index.d.ts +2 -0
  466. package/styles/theme/hocs/index.d.ts.map +1 -0
  467. package/styles/theme/hocs/index.js +1 -0
  468. package/styles/theme/hocs/withTheme.d.ts +21 -0
  469. package/styles/theme/hocs/withTheme.d.ts.map +1 -0
  470. package/styles/theme/hocs/withTheme.js +33 -0
  471. package/styles/theme/index.d.ts +1 -0
  472. package/styles/theme/index.d.ts.map +1 -1
  473. package/styles/theme/index.js +2 -1
  474. package/styles/theme/providers/ActiveBreakpointProvider.d.ts +1 -1
  475. package/styles/theme/providers/ThemeProvider.d.ts +3 -3
  476. package/styles/theme/providers/ThemeProvider.d.ts.map +1 -1
  477. package/styles/theme/providers/ThemeProvider.js +13 -15
  478. package/tracking/components/CookieConsentModal/index.js +12 -12
  479. package/tracking/components/PrivacySettings/index.js +4 -4
  480. package/tracking/selectors/cookieConsent.js +2 -2
  481. package/tsconfig.json +1 -0
@@ -0,0 +1,166 @@
1
+ import "core-js/modules/es.array.includes.js";
2
+ // The logger is imported from @shopgate/pwa-core/helpers rather than @shopgate/engage/core/helpers
3
+ // on purpose: that barrel pulls in scrollContainer, which imports this module back. Since detection
4
+ // runs while the constants module is evaluated, the cycle would resolve to undefined at boot.
5
+ import { logger } from '@shopgate/pwa-core/helpers';
6
+ export const PAGE_PREVIEW_PATTERN = '/shopgate-internal-page-preview';
7
+ export const FRONTEND_SETTINGS_PREVIEW_PARAM = 'frontendSettingsPreview=true';
8
+ export const SESSION_STORAGE_KEY_PAGE_PREVIEW = 'sgPageAdminPreview';
9
+ export const SESSION_STORAGE_KEY_FRONTEND_SETTINGS_PREVIEW = 'sgFrontendSettingsAdminPreview';
10
+ const LOG_PREFIX = '[AdminPreview]';
11
+
12
+ /**
13
+ * The url as it was when this module was first evaluated. Captured here because detection can run
14
+ * again later, when the url may already have been rewritten.
15
+ */
16
+ const INITIAL_HREF = window.location.href;
17
+
18
+ /**
19
+ * Remembers the last logged result per detector, so repeated calls only log on a real change.
20
+ * isAdminPreviewActive() is called from hot paths like breakpoints and scroll handling.
21
+ */
22
+ const lastLoggedResults = {};
23
+
24
+ /**
25
+ * Reads a sticky preview flag. Storage access throws in a sandboxed iframe without
26
+ * "allow-same-origin", and is blocked by some browsers in cross-origin iframes - the preview
27
+ * runs in exactly that context, so a throw here would break app boot for everyone.
28
+ * @param key The session storage key to read.
29
+ * @returns True when the flag was persisted before, false otherwise.
30
+ */
31
+ const readStickyFlag = key => {
32
+ try {
33
+ return window.sessionStorage.getItem(key) === '1';
34
+ } catch (error) {
35
+ logger.warn(`${LOG_PREFIX} session storage is not readable`, {
36
+ key,
37
+ error
38
+ });
39
+ return false;
40
+ }
41
+ };
42
+
43
+ /**
44
+ * Persists a sticky preview flag, so preview mode survives a reload or a url rewrite that drops
45
+ * the query string. See readStickyFlag for why this can throw.
46
+ * @param key The session storage key to write.
47
+ */
48
+ const writeStickyFlag = key => {
49
+ try {
50
+ window.sessionStorage.setItem(key, '1');
51
+ } catch (error) {
52
+ logger.warn(`${LOG_PREFIX} session storage is not writable`, {
53
+ key,
54
+ error
55
+ });
56
+ }
57
+ };
58
+
59
+ /**
60
+ * Logs how a detection result was reached, but only when it differs from the previous result for
61
+ * that detector. Kept verbose on purpose: it exists to investigate why preview mode is not picked
62
+ * up on deployed builds.
63
+ * @param name The detector that produced the result.
64
+ * @param result The detected result.
65
+ * @param matchedUrl Whether the current url carries the preview marker.
66
+ * @param matchedStickyFlag Whether the persisted sticky flag was set.
67
+ */
68
+ const logDetection = (name, result, matchedUrl, matchedStickyFlag) => {
69
+ if (lastLoggedResults[name] === result) {
70
+ return;
71
+ }
72
+ lastLoggedResults[name] = result;
73
+ logger.log(`${LOG_PREFIX} ${name} -> ${result}`, {
74
+ result,
75
+ // True when the url still carries the marker.
76
+ matchedUrl,
77
+ // True when the result came from the persisted flag - i.e. the url lost the marker.
78
+ matchedStickyFlag,
79
+ // Compare these two to see whether the url changed since the app booted.
80
+ initialHref: INITIAL_HREF,
81
+ currentHref: window.location.href,
82
+ pathname: window.location.pathname,
83
+ search: window.location.search,
84
+ // A cross-origin parent means the app really is embedded in the admin.
85
+ isInIframe: window.parent !== window,
86
+ referrer: document.referrer
87
+ });
88
+ };
89
+
90
+ /**
91
+ * Detects whether the app is in page admin preview mode. Once detected, the result is remembered
92
+ * for the rest of the session, because the url is not guaranteed to keep the preview marker.
93
+ * @returns True if the app is in page admin preview mode, false otherwise.
94
+ */
95
+ export const detectPageAdminPreview = () => {
96
+ const matchedUrl = window.location.pathname.startsWith(PAGE_PREVIEW_PATTERN);
97
+ if (matchedUrl) {
98
+ writeStickyFlag(SESSION_STORAGE_KEY_PAGE_PREVIEW);
99
+ logDetection('detectPageAdminPreview', true, true, false);
100
+ return true;
101
+ }
102
+ const matchedStickyFlag = readStickyFlag(SESSION_STORAGE_KEY_PAGE_PREVIEW);
103
+ logDetection('detectPageAdminPreview', matchedStickyFlag, false, matchedStickyFlag);
104
+ return matchedStickyFlag;
105
+ };
106
+
107
+ /**
108
+ * Detects whether the app is in frontend settings admin preview mode. Once detected, the result is
109
+ * remembered for the rest of the session, because the url is not guaranteed to keep the query
110
+ * param.
111
+ * @returns True if the app is in frontend settings admin preview mode, false otherwise.
112
+ */
113
+ export const detectFrontendSettingsAdminPreview = () => {
114
+ const matchedUrl = window.location.search.includes(FRONTEND_SETTINGS_PREVIEW_PARAM);
115
+ if (matchedUrl) {
116
+ writeStickyFlag(SESSION_STORAGE_KEY_FRONTEND_SETTINGS_PREVIEW);
117
+ logDetection('detectFrontendSettingsAdminPreview', true, true, false);
118
+ return true;
119
+ }
120
+ const matchedStickyFlag = readStickyFlag(SESSION_STORAGE_KEY_FRONTEND_SETTINGS_PREVIEW);
121
+ logDetection('detectFrontendSettingsAdminPreview', matchedStickyFlag, false, matchedStickyFlag);
122
+ return matchedStickyFlag;
123
+ };
124
+
125
+ /**
126
+ * Detects whether the app is in admin preview mode (pages or frontend settings).
127
+ * @returns True if the app is in admin preview mode, false otherwise.
128
+ */
129
+ export const detectAdminPreview = () => detectPageAdminPreview() || detectFrontendSettingsAdminPreview();
130
+
131
+ /**
132
+ * Returns the current detection state. Exposed on window as SGAdminPreviewDebug so the values can
133
+ * be inspected on a deployed build, from the console of the preview iframe:
134
+ *
135
+ * window.SGAdminPreviewDebug()
136
+ *
137
+ * @returns A snapshot of everything detection depends on.
138
+ */
139
+ export const getAdminPreviewDebugInfo = () => ({
140
+ initialHref: INITIAL_HREF,
141
+ currentHref: window.location.href,
142
+ pathname: window.location.pathname,
143
+ search: window.location.search,
144
+ urlChangedSinceBoot: INITIAL_HREF !== window.location.href,
145
+ isInIframe: window.parent !== window,
146
+ referrer: document.referrer,
147
+ stickyFlags: {
148
+ page: readStickyFlag(SESSION_STORAGE_KEY_PAGE_PREVIEW),
149
+ frontendSettings: readStickyFlag(SESSION_STORAGE_KEY_FRONTEND_SETTINGS_PREVIEW)
150
+ },
151
+ detected: {
152
+ page: detectPageAdminPreview(),
153
+ frontendSettings: detectFrontendSettingsAdminPreview(),
154
+ any: detectAdminPreview()
155
+ }
156
+ });
157
+ logger.log(`${LOG_PREFIX} module evaluated`, {
158
+ href: INITIAL_HREF,
159
+ search: window.location.search,
160
+ hasParamAtBoot: window.location.search.includes(FRONTEND_SETTINGS_PREVIEW_PARAM),
161
+ isInIframe: window.parent !== window,
162
+ referrer: document.referrer
163
+ });
164
+
165
+ // @ts-expect-error - debug-only global, intentionally not on the Window type.
166
+ window.SGAdminPreviewDebug = getAdminPreviewDebugInfo;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Checks if the app is currently in admin preview mode (pages or frontend settings).
3
+ * @returns True if the app is in admin preview mode, false otherwise.
4
+ */
5
+ export declare const isAdminPreviewActive: () => boolean;
6
+ /**
7
+ * Checks if the app is currently in page admin preview mode.
8
+ * @returns True if the app is in page admin preview mode, false otherwise.
9
+ */
10
+ export declare const isPageAdminPreviewActive: () => boolean;
11
+ /**
12
+ * Checks if the app is currently in frontend settings admin preview mode.
13
+ * @returns True if the app is in frontend settings admin preview mode, false otherwise.
14
+ */
15
+ export declare const isFrontendSettingsAdminPreviewActive: () => boolean;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,19 @@
1
+ import { detectAdminPreview, detectFrontendSettingsAdminPreview, detectPageAdminPreview } from "../detection";
2
+
3
+ /**
4
+ * Checks if the app is currently in admin preview mode (pages or frontend settings).
5
+ * @returns True if the app is in admin preview mode, false otherwise.
6
+ */
7
+ export const isAdminPreviewActive = () => detectAdminPreview();
8
+
9
+ /**
10
+ * Checks if the app is currently in page admin preview mode.
11
+ * @returns True if the app is in page admin preview mode, false otherwise.
12
+ */
13
+ export const isPageAdminPreviewActive = () => detectPageAdminPreview();
14
+
15
+ /**
16
+ * Checks if the app is currently in frontend settings admin preview mode.
17
+ * @returns True if the app is in frontend settings admin preview mode, false otherwise.
18
+ */
19
+ export const isFrontendSettingsAdminPreviewActive = () => detectFrontendSettingsAdminPreview();
@@ -0,0 +1,36 @@
1
+ export interface MessageData {
2
+ /**
3
+ * Identifier for the kind of message.
4
+ */
5
+ type: string;
6
+ /**
7
+ * Optional data payload for this message.
8
+ */
9
+ payload?: unknown;
10
+ }
11
+ export type OnIframeMessage<TMessage extends MessageData = MessageData> = (data: TMessage, rawEvent: MessageEvent<TMessage>) => void;
12
+ export interface IframeMessengerResult<TMessage extends MessageData = MessageData> {
13
+ /**
14
+ * Send data up to window.parent.
15
+ * If targetOrigin is omitted, uses the most recently seen origin
16
+ * (from an incoming message). If none was seen yet, falls back to
17
+ * the origin derived from document.referrer, then parentOrigins[0], then "*".
18
+ */
19
+ sendToParent: (data: TMessage, targetOrigin?: string) => void;
20
+ }
21
+ /**
22
+ * Hook for postMessage communication when your component is inside an iframe.
23
+ *
24
+ * Listens on window for "message" events from any origin in parentOrigins,
25
+ * and only calls onMessage(data, rawEvent) if both origin and source match.
26
+ *
27
+ * @param onMessage Callback invoked when a trusted message arrives.
28
+ * Receives data and the raw event so consumers can inspect origin, source,
29
+ * and other metadata when needed.
30
+ * @param parentOrigins Array of allowed parent origin strings, e.g.
31
+ * ['https://a.example.com', 'https://b.example.com'].
32
+ * @returns An object with a single method:
33
+ * sendToParent(data, [targetOrigin]) to post data to the parent window.
34
+ */
35
+ export declare function useIframeMessenger<TMessage extends MessageData = MessageData>(onMessage: OnIframeMessage<TMessage>, parentOrigins: string[]): IframeMessengerResult<TMessage>;
36
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../admin-preview/hooks/index.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,eAAe,CAAC,QAAQ,SAAS,WAAW,GAAG,WAAW,IAAI,CACxE,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,KAC7B,IAAI,CAAC;AAEV,MAAM,WAAW,qBAAqB,CAAC,QAAQ,SAAS,WAAW,GAAG,WAAW;IAC/E;;;;;OAKG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,SAAS,WAAW,GAAG,WAAW,EAC3E,SAAS,EAAE,eAAe,CAAC,QAAQ,CAAC,EACpC,aAAa,EAAE,MAAM,EAAE,GACtB,qBAAqB,CAAC,QAAQ,CAAC,CAmEjC"}
@@ -0,0 +1,74 @@
1
+ import "core-js/modules/es.array.includes.js";
2
+ import "core-js/modules/web.url.js";
3
+ import "core-js/modules/web.url.to-json.js";
4
+ import "core-js/modules/web.url-search-params.js";
5
+ import { useCallback, useEffect, useRef } from 'react';
6
+ import { logger } from '@shopgate/engage/core/helpers';
7
+ /**
8
+ * Hook for postMessage communication when your component is inside an iframe.
9
+ *
10
+ * Listens on window for "message" events from any origin in parentOrigins,
11
+ * and only calls onMessage(data, rawEvent) if both origin and source match.
12
+ *
13
+ * @param onMessage Callback invoked when a trusted message arrives.
14
+ * Receives data and the raw event so consumers can inspect origin, source,
15
+ * and other metadata when needed.
16
+ * @param parentOrigins Array of allowed parent origin strings, e.g.
17
+ * ['https://a.example.com', 'https://b.example.com'].
18
+ * @returns An object with a single method:
19
+ * sendToParent(data, [targetOrigin]) to post data to the parent window.
20
+ */
21
+ export function useIframeMessenger(onMessage, parentOrigins) {
22
+ // Keep a ref to the latest onMessage callback so the listener always has it.
23
+ const onMessageRef = useRef(onMessage);
24
+ useEffect(() => {
25
+ onMessageRef.current = onMessage;
26
+ }, [onMessage]);
27
+
28
+ // Keep track of the last allowed origin we heard from
29
+ const lastOriginRef = useRef(null);
30
+
31
+ /**
32
+ * Send a message up to the parent window.
33
+ * @param data - The data object to post.
34
+ * @param targetOrigin Optional override for the origin to post to.
35
+ * If omitted, uses the last seen origin, then referrer origin,
36
+ * then parentOrigins[0], then "*".
37
+ */
38
+ const sendToParent = useCallback((data, targetOrigin) => {
39
+ // Determine which origin to use: explicit, then last seen, then first, then "*".
40
+ const originToUse = typeof targetOrigin === 'string' ? targetOrigin : lastOriginRef.current ?? (document.referrer ? new URL(document.referrer).origin : undefined) ?? parentOrigins[0] ?? '*';
41
+ if (!originToUse) {
42
+ logger.warn('useIframeMessenger: no targetOrigin available. ' + 'Provide parentOrigins or pass targetOrigin.');
43
+ return;
44
+ }
45
+ window.parent.postMessage(data, originToUse);
46
+ }, [parentOrigins]);
47
+
48
+ // Attach / detach the "message" listener.
49
+ useEffect(() => {
50
+ /**
51
+ * Handler for incoming postMessage events.
52
+ * @param rawEvent The original MessageEvent object.
53
+ */
54
+ function handler(rawEvent) {
55
+ // Only proceed if the origin is in our whitelist.
56
+ if (!parentOrigins.includes(rawEvent.origin)) return;
57
+ // Ensure the message actually came from window.parent.
58
+ if (rawEvent.source !== window.parent) return;
59
+
60
+ // Record this origin as most recently seen.
61
+ lastOriginRef.current = rawEvent.origin;
62
+
63
+ // Forward the event.data and the raw event to the callback.
64
+ onMessageRef.current(rawEvent.data, rawEvent);
65
+ }
66
+ window.addEventListener('message', handler);
67
+ return () => {
68
+ window.removeEventListener('message', handler);
69
+ };
70
+ }, [parentOrigins, sendToParent]);
71
+ return {
72
+ sendToParent
73
+ };
74
+ }
@@ -1,37 +1,31 @@
1
1
  import React, { useCallback } from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { themeConfig } from '@shopgate/engage';
4
3
  import { makeStyles } from '@shopgate/engage/styles';
5
- import { Link, CheckedIcon, Button, NotificationIcon } from '@shopgate/engage/components';
4
+ import { Link, CheckedIcon, Button, NotificationIcon, Typography } from '@shopgate/engage/components';
6
5
  import { BACK_IN_STOCK_PATTERN } from '@shopgate/engage/back-in-stock/constants';
7
6
  import { i18n } from '@shopgate/engage/core/helpers';
8
7
  import connect from "./connector";
9
8
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
- const {
11
- colors
12
- } = themeConfig;
13
- const useStyles = makeStyles()({
9
+ const useStyles = makeStyles()(theme => ({
14
10
  button: {
15
- lineHeight: '16.5px',
16
- color: themeConfig.colors.warning,
11
+ color: theme.palette.warning.main,
17
12
  width: '100%'
18
13
  },
19
14
  backInStockMessageContainer: {
20
- lineHeight: '16.5px',
21
15
  display: 'flex',
22
16
  alignItems: 'center',
23
- width: 'auto'
17
+ width: 'auto',
18
+ lineHeight: '16.5px'
24
19
  },
25
20
  rightAligned: {
26
21
  display: 'inline-block',
27
22
  textAlign: 'right'
28
23
  },
29
24
  backInStockMessage: {
30
- verticalAlign: 'middle',
31
- fontSize: '0.875rem'
25
+ verticalAlign: 'middle'
32
26
  },
33
27
  buttonText: {
34
- fontSize: '0.875rem'
28
+ fontSize: theme.typography.body2.fontSize
35
29
  },
36
30
  icon: {
37
31
  marginRight: 4,
@@ -46,7 +40,7 @@ const useStyles = makeStyles()({
46
40
  marginLeft: '-2px',
47
41
  marginRight: '8px'
48
42
  }
49
- });
43
+ }));
50
44
  /**
51
45
  * This component renders a button to subscribe a product or a hint
52
46
  * that the product is already subscribed
@@ -72,7 +66,8 @@ const BackInStockButton = ({
72
66
  }) => {
73
67
  const {
74
68
  classes,
75
- cx
69
+ cx,
70
+ theme
76
71
  } = useStyles();
77
72
  const handleClick = useCallback(async event => {
78
73
  if (stopPropagation) {
@@ -107,9 +102,11 @@ const BackInStockButton = ({
107
102
  }),
108
103
  tag: "span",
109
104
  children: [/*#__PURE__*/_jsx(CheckedIcon, {
110
- color: colors.success,
111
- className: alignRight ? classes.icon : cx(classes.iconCentered, classes.icon)
112
- }), /*#__PURE__*/_jsx("span", {
105
+ color: theme.palette.success.main,
106
+ className: alignRight ? classes.icon : cx(classes.icon, classes.iconCentered)
107
+ }), /*#__PURE__*/_jsx(Typography, {
108
+ variant: "body2",
109
+ component: "span",
113
110
  className: classes.backInStockMessage,
114
111
  children: i18n.text('back_in_stock.we_will_remind_you')
115
112
  })]
@@ -138,7 +135,7 @@ const BackInStockButton = ({
138
135
  [classes.rightAligned]: alignRight
139
136
  }),
140
137
  children: [/*#__PURE__*/_jsx(NotificationIcon, {
141
- color: colors.primary,
138
+ color: theme.palette.primary.main,
142
139
  className: classes.icon
143
140
  }), /*#__PURE__*/_jsx("span", {
144
141
  className: classes.buttonText,
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { Link, Ripple, PriceInfo, CrossIcon, PriceStriked, Price, Availability } from '@shopgate/engage/components';
2
+ import { Link, Ripple, PriceInfo, CrossIcon, PriceStriked, Price, Availability, Typography } from '@shopgate/engage/components';
3
3
  import { makeStyles } from '@shopgate/engage/styles';
4
4
  import { getProductRoute, ProductImage } from '@shopgate/engage/product';
5
5
  import PropTypes from 'prop-types';
@@ -39,16 +39,10 @@ const useStyles = makeStyles()(theme => ({
39
39
  },
40
40
  priceInfo: {
41
41
  wordBreak: 'break-word',
42
- fontSize: '0.875rem',
43
42
  lineHeight: '0.875rem',
44
- color: theme.palette.text.secondary,
45
- padding: theme.spacing(0.5, 0),
46
- textAlign: 'right'
43
+ padding: theme.spacing(0.5, 0)
47
44
  },
48
- titleContainer: {},
49
45
  title: {
50
- fontSize: 17,
51
- fontWeight: 600,
52
46
  flexWrap: 'wrap',
53
47
  overflowWrap: 'anywhere'
54
48
  },
@@ -56,12 +50,8 @@ const useStyles = makeStyles()(theme => ({
56
50
  minWidth: '30px'
57
51
  },
58
52
  availabilityText: {
59
- fontSize: '0.875rem',
60
53
  marginBottom: '4px'
61
54
  },
62
- characteristicText: {
63
- fontSize: '0.875rem'
64
- },
65
55
  ripple: {
66
56
  minWidth: '17px'
67
57
  }
@@ -113,11 +103,11 @@ const Subscription = ({
113
103
  children: [/*#__PURE__*/_jsx(Link, {
114
104
  href: productLink,
115
105
  tag: "span",
116
- className: classes.titleContainer,
117
- children: /*#__PURE__*/_jsx("span", {
118
- className: classes.title
119
- // eslint-disable-next-line react/no-danger
120
- ,
106
+ children: /*#__PURE__*/_jsx(Typography, {
107
+ variant: "h4",
108
+ component: "span",
109
+ fontWeight: "bold",
110
+ className: classes.title,
121
111
  dangerouslySetInnerHTML: {
122
112
  __html: `${product.name}`
123
113
  }
@@ -141,7 +131,9 @@ const Subscription = ({
141
131
  children: [product?.characteristics?.map(({
142
132
  label,
143
133
  value
144
- }) => /*#__PURE__*/_jsxs("div", {
134
+ }) => /*#__PURE__*/_jsxs(Typography, {
135
+ variant: "body2",
136
+ component: "div",
145
137
  className: classes.characteristicText,
146
138
  children: [label, ': ', value]
147
139
  }, label + value)), /*#__PURE__*/_jsx(Availability, {
@@ -162,9 +154,16 @@ const Subscription = ({
162
154
  currency: currency,
163
155
  discounted: hasStrikePrice,
164
156
  unitPrice: defaultPrice
165
- }), !!product.price.info && /*#__PURE__*/_jsx(PriceInfo, {
166
- text: product.price.info,
167
- className: classes.priceInfo
157
+ }), !!product.price.info && /*#__PURE__*/_jsx(Typography, {
158
+ variant: "body2",
159
+ component: "div",
160
+ color: "textSecondary",
161
+ align: "right",
162
+ className: classes.priceInfo,
163
+ children: /*#__PURE__*/_jsx(PriceInfo, {
164
+ text: product.price.info,
165
+ className: classes.priceInfo
166
+ })
168
167
  })]
169
168
  })]
170
169
  })]
@@ -1,11 +1,10 @@
1
1
  import React from 'react';
2
2
  import { i18n } from '@shopgate/engage/core/helpers';
3
+ import { Typography } from '@shopgate/engage/components';
3
4
  import { makeStyles } from '@shopgate/engage/styles';
4
5
  import { jsx as _jsx } from "react/jsx-runtime";
5
6
  const useStyles = makeStyles()(theme => ({
6
7
  header: {
7
- fontSize: '2.125rem',
8
- lineHeight: '2.25rem',
9
8
  padding: theme.spacing(4)
10
9
  }
11
10
  }));
@@ -17,7 +16,9 @@ const CartHeaderWide = () => {
17
16
  const {
18
17
  classes
19
18
  } = useStyles();
20
- return /*#__PURE__*/_jsx("div", {
19
+ return /*#__PURE__*/_jsx(Typography, {
20
+ variant: "h1",
21
+ component: "div",
21
22
  className: classes.header,
22
23
  children: i18n.text('navigation.cart')
23
24
  });
@@ -6,14 +6,10 @@ import { CART_PATH } from '@shopgate/pwa-common-commerce/cart/constants';
6
6
  import { CART_ITEM_TYPE_COUPON } from '@shopgate/pwa-common-commerce/cart';
7
7
  import { getPageSettings } from '@shopgate/engage/core/config';
8
8
  import { makeStyles } from '@shopgate/engage/styles';
9
- import { themeConfig } from '@shopgate/pwa-common/helpers/config';
10
9
  import { MessageBar, CardList } from '@shopgate/engage/components';
11
10
  import connect from "./CartItemCoupon.connector";
12
11
  import { CartItemCouponLayout, CartItemCouponLayoutContext } from "./CartItemCouponLayout";
13
12
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
- const {
15
- colors
16
- } = themeConfig;
17
13
  const duration = 300;
18
14
  const defaultTransitionStyle = {
19
15
  transition: `height ${duration}ms cubic-bezier(0.25, 0.1, 0.25, 1)`,
@@ -44,7 +40,7 @@ const useStyles = makeStyles()(theme => ({
44
40
  marginBottom: 4
45
41
  },
46
42
  messagesContainerCard: {
47
- background: colors.light,
43
+ background: theme.palette.background.surface,
48
44
  padding: theme.spacing(0, 0, 2, 0)
49
45
  },
50
46
  messagesCard: {
@@ -52,7 +48,7 @@ const useStyles = makeStyles()(theme => ({
52
48
  padding: theme.spacing(1, 1.75)
53
49
  },
54
50
  messagesContainerLine: {
55
- background: colors.light,
51
+ background: theme.palette.background.surface,
56
52
  padding: theme.spacing(2, 2, 0)
57
53
  },
58
54
  messagesLine: {
@@ -4,14 +4,14 @@ import { CrossIcon } from '@shopgate/engage/components';
4
4
  import { i18n } from '@shopgate/engage/core/helpers';
5
5
  import { makeStyles } from '@shopgate/engage/styles';
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
- const useStyles = makeStyles()({
7
+ const useStyles = makeStyles()(theme => ({
8
8
  button: {
9
9
  padding: 0,
10
- fontSize: '1.5rem',
10
+ fontSize: theme.components.icon.medium,
11
11
  marginTop: -2,
12
12
  marginRight: -5
13
13
  }
14
- });
14
+ }));
15
15
  /**
16
16
  * The Coupon Delete component.
17
17
  * @param {Object} props The component properties.
@@ -20,7 +20,7 @@ export const CartItemCouponLayoutContext = /*#__PURE__*/React.createContext({
20
20
  });
21
21
  const useStyles = makeStyles()(theme => ({
22
22
  item: {
23
- fontSize: '0.875rem',
23
+ fontSize: theme.typography.body2.fontSize,
24
24
  padding: theme.spacing(0.5, 2)
25
25
  },
26
26
  icon: {
@@ -1,16 +1,9 @@
1
1
  import * as React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { makeStyles } from '@shopgate/engage/styles';
3
+ import { Typography } from '@shopgate/engage/components';
4
4
  import { COUPON_TYPE_FIXED, COUPON_TYPE_PERCENTAGE } from '@shopgate/pwa-common-commerce/cart';
5
5
  import Price from '@shopgate/pwa-ui-shared/Price';
6
- import { jsx as _jsx } from "react/jsx-runtime";
7
- const useStyles = makeStyles()({
8
- price: {
9
- fontSize: '1rem',
10
- fontWeight: 500,
11
- color: 'var(--color-primary)'
12
- }
13
- });
6
+
14
7
  /**
15
8
  * @typedef {import('../../cart.types').SavedPrice} SavedPrice
16
9
  */
@@ -24,24 +17,28 @@ const useStyles = makeStyles()({
24
17
  * @param {number} props.savedPrice.value The value of the saved price.
25
18
  * @returns {JSX.Element|null}
26
19
  */
20
+ import { jsx as _jsx } from "react/jsx-runtime";
27
21
  export const CartItemCouponPrice = /*#__PURE__*/React.memo(({
28
22
  currency,
29
23
  savedPrice
30
24
  }) => {
31
- const {
32
- classes
33
- } = useStyles();
34
25
  if (savedPrice.type === COUPON_TYPE_FIXED) {
35
- return /*#__PURE__*/_jsx(Price, {
36
- className: classes.price,
37
- currency: currency,
38
- discounted: true,
39
- unitPrice: -savedPrice.value
26
+ return /*#__PURE__*/_jsx(Typography, {
27
+ fontWeight: "medium",
28
+ component: "span",
29
+ color: "primary",
30
+ children: /*#__PURE__*/_jsx(Price, {
31
+ currency: currency,
32
+ discounted: true,
33
+ unitPrice: -savedPrice.value
34
+ })
40
35
  });
41
36
  }
42
37
  if (savedPrice.type === COUPON_TYPE_PERCENTAGE) {
43
- return /*#__PURE__*/_jsx("span", {
44
- className: classes.price,
38
+ return /*#__PURE__*/_jsx(Typography, {
39
+ fontWeight: "medium",
40
+ component: "span",
41
+ color: "primary",
45
42
  children: `-${savedPrice.value}%`
46
43
  });
47
44
  }
@@ -2,12 +2,10 @@ import React, { useMemo } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { i18n } from '@shopgate/engage/core/helpers';
4
4
  import { makeStyles } from '@shopgate/engage/styles';
5
+ import { Typography } from '@shopgate/engage/components';
5
6
  import { jsx as _jsx } from "react/jsx-runtime";
6
7
  const useStyles = makeStyles()({
7
8
  title: {
8
- fontSize: '1rem',
9
- fontWeight: 500,
10
- lineHeight: 1.125,
11
9
  marginBottom: 4
12
10
  }
13
11
  });
@@ -24,7 +22,9 @@ export function CartItemCouponTitle({
24
22
  classes
25
23
  } = useStyles();
26
24
  const title = useMemo(() => value || i18n.text('cart.default_coupon_label'), [value]);
27
- return /*#__PURE__*/_jsx("div", {
25
+ return /*#__PURE__*/_jsx(Typography, {
26
+ variant: "h5",
27
+ component: "div",
28
28
  className: classes.title,
29
29
  children: title
30
30
  });