@shopgate/engage 7.31.6 → 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 (742) 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.js +1 -1
  5. package/account/components/Profile/ProfileAddressBook.d.ts.map +1 -1
  6. package/account/components/Profile/ProfileAddressBook.js +19 -30
  7. package/account/components/Profile/ProfileAddressCard.d.ts.map +1 -1
  8. package/account/components/Profile/ProfileAddressCard.js +43 -49
  9. package/account/components/Profile/ProfileForm.d.ts.map +1 -1
  10. package/account/components/Profile/ProfileForm.js +15 -42
  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 +15 -22
  14. package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.d.ts +8 -0
  15. package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.d.ts.map +1 -0
  16. package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.js +98 -0
  17. package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.d.ts +26 -0
  18. package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.d.ts.map +1 -0
  19. package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.js +61 -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 +27 -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 +6 -0
  30. package/admin-preview/constants/index.d.ts.map +1 -0
  31. package/admin-preview/constants/index.js +6 -0
  32. package/admin-preview/helpers/_internal/detection.d.ts +53 -0
  33. package/admin-preview/helpers/_internal/detection.d.ts.map +1 -0
  34. package/admin-preview/helpers/_internal/detection.js +93 -0
  35. package/admin-preview/helpers/index.d.ts +23 -0
  36. package/admin-preview/helpers/index.d.ts.map +1 -0
  37. package/admin-preview/helpers/index.js +27 -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/admin-preview/initialization/_internal/initialFrontendSettings.d.ts +32 -0
  42. package/admin-preview/initialization/_internal/initialFrontendSettings.d.ts.map +1 -0
  43. package/admin-preview/initialization/_internal/initialFrontendSettings.js +43 -0
  44. package/admin-preview/initialization/awaitInitialFrontendSettings.d.ts +22 -0
  45. package/admin-preview/initialization/awaitInitialFrontendSettings.d.ts.map +1 -0
  46. package/admin-preview/initialization/awaitInitialFrontendSettings.js +84 -0
  47. package/back-in-stock/components/BackInStockButton/index.js +19 -22
  48. package/back-in-stock/components/Subscriptions/components/Subscription/index.js +22 -26
  49. package/cart/components/CartHeaderWide/CartHeaderWide.js +4 -3
  50. package/cart/components/CartItem/CartItemCoupon.js +2 -6
  51. package/cart/components/CartItem/CartItemCouponDelete.js +3 -3
  52. package/cart/components/CartItem/CartItemCouponLayout.js +1 -1
  53. package/cart/components/CartItem/CartItemCouponPrice.js +16 -19
  54. package/cart/components/CartItem/CartItemCouponTitle.js +4 -4
  55. package/cart/components/CartItem/CartItemProduct.js +2 -6
  56. package/cart/components/CartItem/CartItemProductLayout.js +6 -9
  57. package/cart/components/CartItem/CartItemProductLayoutWide.js +21 -16
  58. package/cart/components/CartItem/CartItemProductLayoutWideFulfillmentLabel.js +5 -3
  59. package/cart/components/CartItem/CartItemProductLayoutWideOrderDetails.js +18 -12
  60. package/cart/components/CartItem/CartItemProductLayoutWideRemoveItem.js +7 -14
  61. package/cart/components/CartItem/CartItemProductOrderDetails.js +2 -2
  62. package/cart/components/CartItem/CartItemProductPriceCaption.js +5 -4
  63. package/cart/components/CartItem/CartItemProductPriceList.js +18 -12
  64. package/cart/components/CartItem/CartItemProductPriceListPromotion.js +7 -7
  65. package/cart/components/CartItem/CartItemProductProvider.connector.js +0 -2
  66. package/cart/components/CartItem/CartItemProductProvider.js +3 -30
  67. package/cart/components/CartItem/CartItemProductProvider.types.js +0 -1
  68. package/cart/components/CartItem/CartItemProductTitle.js +2 -3
  69. package/cart/components/CartItem/CartItemQuantityPicker.js +3 -7
  70. package/cart/components/CartItem/CartItemSubstitution.js +1 -2
  71. package/cart/components/CartItems/CartItemCard.js +3 -4
  72. package/cart/components/CartItems/CartItemCardReservationAccordion.js +9 -10
  73. package/cart/components/CartItems/CartItemCardReservationLabel.js +11 -11
  74. package/cart/components/CartItems/CartItemCardReservationLabelChangeStore.js +6 -24
  75. package/cart/components/CartItems/CartItemGroupReservation.js +4 -3
  76. package/cart/components/CartItems/CartItemGroupReservationLabel.js +12 -10
  77. package/cart/components/CartItems/CartItemGroupShipping.js +7 -5
  78. package/cart/components/CartItems/CartItems.js +8 -12
  79. package/cart/components/CartItems/CartItemsHeaderWide.js +43 -18
  80. package/cart/components/CartItems/CartItemsSubstitution.js +3 -2
  81. package/cart/components/CartSummaryWide/CartSummaryWide.js +9 -16
  82. package/cart/components/CartSummaryWide/CartSummaryWideCheckoutButton.js +9 -27
  83. package/cart/components/PaymentBar/PaymentBarCheckoutButton.js +8 -34
  84. package/cart/components/PaymentBar/PaymentBarContent.js +4 -10
  85. package/cart/components/PaymentBar/PaymentBarPromotionCouponMessages.js +6 -2
  86. package/cart/components/PaymentBar/PaymentBarPromotionCoupons.js +5 -5
  87. package/cart/components/PaymentBar/PaymentBarPromotionalText.js +9 -10
  88. package/cart/components/PaymentBar/testUtils/mockFactories.js +57 -0
  89. package/cart/components/Substitution/connector.js +1 -1
  90. package/cart/components/SupplementalContent/SupplementalContent.connector.js +2 -1
  91. package/cart/components/SupplementalContent/SupplementalContent.js +6 -7
  92. package/category/components/CategoryImage/connector.js +1 -1
  93. package/category/components/CategoryImage/index.js +24 -17
  94. package/category/components/CategoryList/index.js +4 -8
  95. package/checkout/components/AddressBook/AddressList.js +19 -29
  96. package/checkout/components/AddressBookContact/AddressBookContact.js +6 -6
  97. package/checkout/components/Checkout/CheckoutActions.js +4 -3
  98. package/checkout/components/Checkout/CheckoutAddress.js +33 -15
  99. package/checkout/components/Checkout/CheckoutHeader.js +9 -11
  100. package/checkout/components/Checkout/CheckoutPickupContactForm.js +2 -2
  101. package/checkout/components/Checkout/CheckoutSection.js +26 -15
  102. package/checkout/components/Checkout/CheckoutSectionInfo.js +14 -17
  103. package/checkout/components/Checkout/CheckoutSectionMessages.js +5 -4
  104. package/checkout/components/CheckoutConfirmation/CheckoutConfirmation.js +20 -20
  105. package/checkout/components/CheckoutConfirmation/CheckoutConfirmationSection.js +44 -62
  106. package/checkout/components/GuestCheckout/GuestCheckoutPickup.js +7 -4
  107. package/checkout/components/PaymentMethodButton/PaymentMethodButton.js +3 -3
  108. package/checkout/components/ResponsiveBackButton/ResponsiveBackButton.js +7 -17
  109. package/checkout/components/ShippingMethods/ShippingMethod.js +6 -5
  110. package/checkout/components/ShippingMethods/ShippingMethods.js +11 -8
  111. package/checkout/components/SupplementalContent/SupplementalContent.connector.js +2 -1
  112. package/checkout/components/SupplementalContent/SupplementalContent.js +6 -7
  113. package/checkout/paymentMethods/index.js +5 -4
  114. package/checkout/paymentMethods/paypal/PaypalPayButton.js +7 -6
  115. package/checkout/paymentMethods/stripe/StripeCreditCard.js +6 -9
  116. package/components/Badge/Badge.d.ts +30 -0
  117. package/components/Badge/Badge.d.ts.map +1 -0
  118. package/components/Badge/Badge.js +48 -0
  119. package/components/Badge/index.d.ts +3 -0
  120. package/components/Badge/index.d.ts.map +1 -0
  121. package/components/Badge/index.js +1 -0
  122. package/components/Card/Card.d.ts +27 -0
  123. package/components/Card/Card.d.ts.map +1 -0
  124. package/components/Card/Card.js +57 -0
  125. package/components/Card/index.d.ts +4 -0
  126. package/components/Card/index.d.ts.map +1 -0
  127. package/components/Card/index.js +2 -0
  128. package/components/Card/useCardAppearance.d.ts +11 -0
  129. package/components/Card/useCardAppearance.d.ts.map +1 -0
  130. package/components/Card/useCardAppearance.js +22 -0
  131. package/components/ChipLayout/index.js +6 -8
  132. package/components/Form/Builder/ElementPhoneNumber.d.ts.map +1 -1
  133. package/components/Form/Builder/ElementPhoneNumber.js +2 -6
  134. package/components/Form/Builder/stylePresets.d.ts.map +1 -1
  135. package/components/Form/Builder/stylePresets.js +12 -17
  136. package/components/Logo/connector.js +3 -1
  137. package/components/Logo/index.d.ts.map +1 -1
  138. package/components/Logo/index.js +3 -6
  139. package/components/Menu/components/Item/index.d.ts.map +1 -1
  140. package/components/Menu/components/Item/index.js +5 -17
  141. package/components/Menu/index.d.ts.map +1 -1
  142. package/components/Menu/index.js +2 -3
  143. package/components/MessageBar/MessageBar.d.ts.map +1 -1
  144. package/components/MessageBar/MessageBar.js +35 -42
  145. package/components/NavigationHandler/connector.js +1 -1
  146. package/components/Paper/Paper.d.ts +48 -0
  147. package/components/Paper/Paper.d.ts.map +1 -0
  148. package/components/Paper/Paper.js +64 -0
  149. package/components/Paper/index.d.ts +3 -0
  150. package/components/Paper/index.d.ts.map +1 -0
  151. package/components/Paper/index.js +1 -0
  152. package/components/Picker/components/Button/index.js +3 -3
  153. package/components/Picker/components/List/index.js +3 -3
  154. package/components/Picker/components/Modal/index.d.ts.map +1 -1
  155. package/components/Picker/components/Modal/index.js +2 -3
  156. package/components/PickerUtilize/components/Button/index.d.ts.map +1 -1
  157. package/components/PickerUtilize/components/Button/index.js +6 -10
  158. package/components/PickerUtilize/index.d.ts +2 -1
  159. package/components/PickerUtilize/index.d.ts.map +1 -1
  160. package/components/Radio/Radio.js +6 -5
  161. package/components/RadioCard/RadioCard.d.ts.map +1 -1
  162. package/components/RadioCard/RadioCard.js +2 -1
  163. package/components/ResponsiveContainer/breakpoints.js +2 -2
  164. package/components/ScrollHeader/index.js +3 -3
  165. package/components/SheetList/components/Item/index.js +18 -23
  166. package/components/SheetList/index.d.ts.map +1 -1
  167. package/components/SheetList/index.js +3 -7
  168. package/components/SideNavigation/SideNavigationCategories.js +2 -7
  169. package/components/SideNavigation/SideNavigationCategoriesItem.js +2 -2
  170. package/components/SideNavigation/SideNavigationContent.js +3 -3
  171. package/components/SideNavigation/SideNavigationItem.d.ts.map +1 -1
  172. package/components/SideNavigation/SideNavigationItem.js +3 -4
  173. package/components/SideNavigation/SideNavigationNestedItem.js +2 -2
  174. package/components/Switch/index.d.ts.map +1 -1
  175. package/components/Switch/index.js +6 -7
  176. package/components/Tabs/components/Tab.d.ts.map +1 -1
  177. package/components/Tabs/components/Tab.js +14 -16
  178. package/components/Tabs/components/TabIndicator.js +3 -3
  179. package/components/TextLink/TextLink.d.ts.map +1 -1
  180. package/components/TextLink/TextLink.js +8 -26
  181. package/components/Toggle/index.js +5 -5
  182. package/components/Typography/Typography.d.ts +87 -124
  183. package/components/Typography/Typography.d.ts.map +1 -0
  184. package/components/Typography/Typography.js +72 -57
  185. package/components/Typography/index.d.ts +2 -1
  186. package/components/Typography/index.d.ts.map +1 -0
  187. package/components/View/components/Above/index.d.ts.map +1 -1
  188. package/components/View/components/Above/index.js +3 -1
  189. package/components/View/components/Below/index.d.ts.map +1 -1
  190. package/components/View/components/Below/index.js +3 -1
  191. package/components/View/components/Content/index.d.ts +2 -1
  192. package/components/View/components/Content/index.d.ts.map +1 -1
  193. package/components/View/components/Content/index.js +6 -3
  194. package/components/View/index.d.ts.map +1 -1
  195. package/components/View/index.js +1 -5
  196. package/components/constants.d.ts +6 -0
  197. package/components/constants.d.ts.map +1 -0
  198. package/components/index.d.ts +5 -1
  199. package/components/index.d.ts.map +1 -1
  200. package/components/index.js +4 -2
  201. package/components/v2/Button/Button.d.ts +24 -13
  202. package/components/v2/Button/Button.d.ts.map +1 -1
  203. package/components/v2/Button/Button.js +139 -41
  204. package/components/v2/ButtonBase/ButtonBase.d.ts +50 -10
  205. package/components/v2/ButtonBase/ButtonBase.d.ts.map +1 -1
  206. package/components/v2/ButtonBase/ButtonBase.js +192 -17
  207. package/components/v2/ButtonBase/Ripple.d.ts +2 -1
  208. package/components/v2/ButtonBase/Ripple.d.ts.map +1 -1
  209. package/components/v2/ButtonBase/hooks.d.ts +0 -1
  210. package/components/v2/ButtonBase/hooks.d.ts.map +1 -1
  211. package/components/v2/ButtonBase/hooks.js +36 -12
  212. package/components/v2/ButtonGroup/ButtonGroup.d.ts +11 -5
  213. package/components/v2/ButtonGroup/ButtonGroup.d.ts.map +1 -1
  214. package/components/v2/ButtonGroup/ButtonGroup.js +49 -26
  215. package/components/v2/CircularProgress/CircularProgress.d.ts.map +1 -1
  216. package/components/v2/CircularProgress/CircularProgress.js +10 -5
  217. package/core/action-creators/merchantSettings.d.ts +1 -1
  218. package/core/action-creators/merchantSettings.d.ts.map +1 -1
  219. package/core/action-creators/merchantSettings.js +3 -11
  220. package/core/action-creators/shopSettings.d.ts +1 -2
  221. package/core/action-creators/shopSettings.d.ts.map +1 -1
  222. package/core/action-creators/shopSettings.js +3 -21
  223. package/core/constants/merchantSettings.d.ts +1 -11
  224. package/core/constants/merchantSettings.d.ts.map +1 -1
  225. package/core/constants/merchantSettings.js +3 -11
  226. package/core/constants/shopSettings.d.ts +1 -27
  227. package/core/constants/shopSettings.d.ts.map +1 -1
  228. package/core/constants/shopSettings.js +3 -27
  229. package/core/helpers/getFullImageSource.d.ts +5 -1
  230. package/core/helpers/getFullImageSource.d.ts.map +1 -1
  231. package/core/helpers/getFullImageSource.js +30 -14
  232. package/core/helpers/scrollContainer.js +2 -2
  233. package/core/hooks/html/useLoadImage.d.ts +3 -3
  234. package/core/hooks/html/useLoadImage.d.ts.map +1 -1
  235. package/core/hooks/html/useLoadImage.js +2 -2
  236. package/core/hooks/useLocalStorage.d.ts +8 -0
  237. package/core/hooks/useLocalStorage.d.ts.map +1 -1
  238. package/core/hooks/useLocalStorage.js +22 -15
  239. package/core/hooks/useNavigation.d.ts +10 -2
  240. package/core/hooks/useNavigation.d.ts.map +1 -1
  241. package/core/hooks/useNavigation.js +1 -2
  242. package/core/initialization/fetchSettings.d.ts +12 -0
  243. package/core/initialization/fetchSettings.d.ts.map +1 -0
  244. package/core/initialization/fetchSettings.js +134 -0
  245. package/core/initialization/index.d.ts +33 -2
  246. package/core/initialization/index.d.ts.map +1 -1
  247. package/core/initialization/index.js +44 -102
  248. package/core/router/conductor.d.ts +9 -0
  249. package/core/router/helpers.d.ts +28 -15
  250. package/core/router/helpers.d.ts.map +1 -1
  251. package/core/router/helpers.js +8 -8
  252. package/core/selectors/merchantSettings.d.ts +1 -20
  253. package/core/selectors/merchantSettings.d.ts.map +1 -1
  254. package/core/selectors/merchantSettings.js +3 -33
  255. package/core/selectors/shopSettings.d.ts +1 -53
  256. package/core/selectors/shopSettings.d.ts.map +1 -1
  257. package/core/selectors/shopSettings.js +3 -80
  258. package/development/components/ClientInformation/ClientInformation.js +5 -3
  259. package/development/components/DevelopmentSettings/DevelopmentSettings.js +6 -5
  260. package/development/components/SimulatedInsets/SimulatedInsetBottom.js +3 -3
  261. package/development/components/SimulatedInsets/SimulatedInsetTop.js +6 -6
  262. package/favorites/components/CommentDialog/CommentDialog.js +17 -15
  263. package/favorites/components/FavoriteButtonWide/FavoriteButtonWide.js +9 -20
  264. package/favorites/components/Item/Item.d.ts +1 -1
  265. package/favorites/components/Item/Item.d.ts.map +1 -1
  266. package/favorites/components/Item/Item.js +21 -22
  267. package/favorites/components/Item/ItemCharacteristics.d.ts.map +1 -1
  268. package/favorites/components/Item/ItemCharacteristics.js +6 -14
  269. package/favorites/components/Item/ItemNotes.js +23 -20
  270. package/favorites/components/Item/ItemQuantity.js +1 -1
  271. package/favorites/components/List/List.d.ts +1 -1
  272. package/favorites/components/List/List.d.ts.map +1 -1
  273. package/favorites/components/List/List.js +0 -5
  274. package/favorites/components/List/ListContent.js +4 -5
  275. package/favorites/components/ListChooser/ListChooserItem.js +1 -1
  276. package/favorites/components/Lists/Lists.js +19 -8
  277. package/favorites/components/Lists/ListsModal.d.ts.map +1 -1
  278. package/favorites/components/Lists/ListsModal.js +4 -11
  279. package/favorites/components/RemoveButton/RemoveButton.d.ts.map +1 -1
  280. package/favorites/components/RemoveButton/RemoveButton.js +1 -2
  281. package/filter/components/FilterItem/index.js +5 -8
  282. package/filter/components/FilterPageContent/components/ApplyButton/index.js +8 -10
  283. package/filter/components/FilterPageContent/components/ResetButton/index.js +8 -6
  284. package/filter/components/FilterPageContent/components/Selector/components/Toggle/index.js +3 -3
  285. package/filter/components/FilterPageContent/components/Selector/components/ValueButton/index.js +4 -5
  286. package/filter/components/PriceSlider/components/Label/index.js +9 -13
  287. package/filter/components/PriceSlider/index.js +9 -9
  288. package/filter/selectors/index.js +2 -2
  289. package/locations/components/Cart/CartContextMenuChangeFulfillmentContent.js +1 -1
  290. package/locations/components/ChangeLocationButton/ChangeLocationButton.js +10 -14
  291. package/locations/components/FulfillmentPath/FulfillmentPathItem.js +1 -7
  292. package/locations/components/FulfillmentSelector/FulfillmentSelector.connector.js +2 -2
  293. package/locations/components/FulfillmentSelector/FulfillmentSelectorAlternativeLocation.js +12 -10
  294. package/locations/components/FulfillmentSelector/FulfillmentSelectorHeader.js +1 -1
  295. package/locations/components/FulfillmentSelector/FulfillmentSelectorImpossibleError.js +3 -3
  296. package/locations/components/FulfillmentSelector/FulfillmentSelectorItem.js +4 -4
  297. package/locations/components/FulfillmentSelector/FulfillmentSelectorLocation.js +18 -15
  298. package/locations/components/FulfillmentSelector/FulfillmentSelectorLocationMethodNotAvailable.js +3 -3
  299. package/locations/components/FulfillmentSheet/FulfillmentSheetContent.js +4 -8
  300. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotDialog.js +25 -28
  301. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotProvider.connector.js +1 -1
  302. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcher.connector.js +1 -1
  303. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcher.js +5 -5
  304. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherBar.js +19 -28
  305. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherDefault.js +20 -23
  306. package/locations/components/GlobalLocationSelector/GlobalLocationSelector.js +1 -1
  307. package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcher.connector.js +1 -1
  308. package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherBar.js +18 -28
  309. package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherDefault.js +19 -20
  310. package/locations/components/ReservationResponses/ReservationError.js +9 -6
  311. package/locations/components/ReservationResponses/ReservationSuccess.js +14 -9
  312. package/locations/components/ReserveForm/ReserveForm.js +11 -11
  313. package/locations/components/ReserveForm/ReserveFormPhone.js +7 -9
  314. package/locations/components/StockInfo/StockInfo.js +4 -2
  315. package/locations/components/StockInfoLists/index.js +5 -7
  316. package/locations/components/StoreDetails/components/FindMoreStores.js +11 -12
  317. package/locations/components/StoreDetails/components/GetDirectionsButton.js +5 -9
  318. package/locations/components/StoreDetails/components/StoreDetails.js +27 -34
  319. package/locations/components/StoreDetails/components/StoreFinderMap.js +4 -4
  320. package/locations/components/StoreDetails/components/StoresNearby.js +5 -3
  321. package/locations/components/StoreDetails/components/StoresNearbyListItem.js +36 -30
  322. package/locations/components/StoreFinder/StoreFinder.js +1 -1
  323. package/locations/components/StoreFinder/StoreFinderLocationDetails.js +7 -6
  324. package/locations/components/StoreFinder/StoreFinderLocationHeader.js +17 -21
  325. package/locations/components/StoreFinder/StoreFinderLocations.js +2 -6
  326. package/locations/components/StoreFinder/StoreFinderSelectLocationButton.js +5 -11
  327. package/locations/components/StoreFinder/StoreFinderStoreInfoButton.js +5 -11
  328. package/locations/components/StoreList/StoreAddress.js +3 -3
  329. package/locations/components/StoreList/StoreAddressShort.js +10 -12
  330. package/locations/components/StoreList/StoreDetails.js +1 -2
  331. package/locations/components/StoreList/StoreDetailsLine.js +3 -3
  332. package/locations/components/StoreList/StoreDistance.js +6 -17
  333. package/locations/components/StoreList/StoreHeader.js +7 -7
  334. package/locations/components/StoreList/StoreHoursToday.js +3 -3
  335. package/locations/components/StoreList/StoreListLocations.js +20 -18
  336. package/locations/components/StoreList/StoreListProduct.js +4 -6
  337. package/locations/components/StoreList/StoreListProductInfo.js +9 -6
  338. package/locations/components/StoreList/StoreListProductName.js +4 -3
  339. package/locations/components/StoreList/StoreListSearch.js +11 -11
  340. package/locations/components/StoreList/StoreListSearchRadius.js +4 -5
  341. package/locations/components/StoreList/StoreOpeningHours.js +10 -12
  342. package/locations/components/StoreList/StorePhoneNumber.js +10 -12
  343. package/locations/components/StoreList/StoreSelectLocationButton.js +5 -11
  344. package/locations/helpers/showInventoryInLists.js +1 -1
  345. package/locations/providers/FulfillmentProvider.connector.js +1 -1
  346. package/locations/reducers/index.js +1 -1
  347. package/locations/selectors/index.js +2 -1
  348. package/locations/subscriptions.js +2 -2
  349. package/login/components/ForgotPassword/ForgotPassword.js +24 -36
  350. package/orders/components/OrderDetails/OrderDetailsAuthenticate.js +6 -8
  351. package/orders/components/OrderDetails/OrderDetailsContent.js +5 -4
  352. package/orders/components/OrderDetails/OrderDetailsOrderHeader.js +7 -8
  353. package/orders/components/OrderDetails/OrderDetailsOrderPickupLocation.js +2 -2
  354. package/orders/components/OrderHistory/OrderHistoryList.d.ts.map +1 -1
  355. package/orders/components/OrderHistory/OrderHistoryList.js +9 -14
  356. package/orders/components/OrderHistory/OrderHistoryTable.d.ts.map +1 -1
  357. package/orders/components/OrderHistory/OrderHistoryTable.js +5 -1
  358. package/package.json +11 -10
  359. package/page/components/NotFound.d.ts +7 -0
  360. package/page/components/NotFound.d.ts.map +1 -0
  361. package/page/components/NotFound.js +16 -15
  362. package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.d.ts +52 -0
  363. package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.d.ts.map +1 -0
  364. package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.js +4 -4
  365. package/page/components/ResponsiveWidgetImage/index.d.ts +2 -0
  366. package/page/components/ResponsiveWidgetImage/index.d.ts.map +1 -0
  367. package/page/components/WidgetHeadline/WidgetHeadline.js +4 -3
  368. package/page/components/WidgetRichText/WidgetRichText.d.ts +25 -0
  369. package/page/components/WidgetRichText/WidgetRichText.d.ts.map +1 -0
  370. package/page/components/WidgetRichText/WidgetRichText.js +1 -1
  371. package/page/components/WidgetRichText/index.d.ts +2 -0
  372. package/page/components/WidgetRichText/index.d.ts.map +1 -0
  373. package/page/components/WidgetVideo/WidgetVideo.d.ts +43 -0
  374. package/page/components/WidgetVideo/WidgetVideo.d.ts.map +1 -0
  375. package/page/components/WidgetVideo/WidgetVideo.js +33 -39
  376. package/page/components/WidgetVideo/index.d.ts +2 -0
  377. package/page/components/WidgetVideo/index.d.ts.map +1 -0
  378. package/page/components/Widgets/Overlay.d.ts +17 -0
  379. package/page/components/Widgets/Overlay.d.ts.map +1 -0
  380. package/page/components/Widgets/Overlay.js +24 -38
  381. package/page/components/Widgets/Tooltip.d.ts +20 -0
  382. package/page/components/Widgets/Tooltip.d.ts.map +1 -0
  383. package/page/components/Widgets/Tooltip.js +13 -18
  384. package/page/components/Widgets/Widget.d.ts +32 -0
  385. package/page/components/Widgets/Widget.d.ts.map +1 -0
  386. package/page/components/Widgets/Widget.js +11 -22
  387. package/page/components/Widgets/WidgetContext.d.ts +32 -38
  388. package/page/components/Widgets/WidgetContext.d.ts.map +1 -0
  389. package/page/components/Widgets/WidgetContext.js +2 -8
  390. package/page/components/Widgets/WidgetProvider.d.ts +25 -0
  391. package/page/components/Widgets/WidgetProvider.d.ts.map +1 -0
  392. package/page/components/Widgets/WidgetProvider.js +5 -12
  393. package/page/components/Widgets/Widgets.d.ts +16 -0
  394. package/page/components/Widgets/Widgets.d.ts.map +1 -0
  395. package/page/components/Widgets/Widgets.js +5 -12
  396. package/page/components/Widgets/WidgetsPreviewContext.d.ts +21 -0
  397. package/page/components/Widgets/WidgetsPreviewContext.d.ts.map +1 -0
  398. package/page/components/Widgets/WidgetsPreviewContext.js +5 -7
  399. package/page/components/Widgets/WidgetsPreviewProvider.d.ts +18 -0
  400. package/page/components/Widgets/WidgetsPreviewProvider.d.ts.map +1 -0
  401. package/page/components/Widgets/WidgetsPreviewProvider.js +5 -6
  402. package/page/components/Widgets/constants.d.ts +5 -0
  403. package/page/components/Widgets/constants.d.ts.map +1 -0
  404. package/page/components/Widgets/constants.js +1 -4
  405. package/page/components/Widgets/events.d.ts +38 -0
  406. package/page/components/Widgets/events.d.ts.map +1 -0
  407. package/page/components/Widgets/events.js +8 -12
  408. package/page/components/Widgets/helpers.d.ts +50 -0
  409. package/page/components/Widgets/helpers.d.ts.map +1 -0
  410. package/page/components/Widgets/helpers.js +8 -13
  411. package/page/components/Widgets/hooks.d.ts +13 -0
  412. package/page/components/Widgets/hooks.d.ts.map +1 -0
  413. package/page/components/Widgets/hooks.js +15 -104
  414. package/page/components/Widgets/index.d.ts +3 -0
  415. package/page/components/Widgets/index.d.ts.map +1 -0
  416. package/page/components/Widgets/types.d.ts +111 -113
  417. package/page/components/Widgets/types.d.ts.map +1 -0
  418. package/page/components/Widgets/types.js +1 -0
  419. package/page/components/index.d.ts +5 -0
  420. package/page/components/index.d.ts.map +1 -0
  421. package/page/constants/actionTypes.d.ts +4 -0
  422. package/page/constants/actionTypes.d.ts.map +1 -0
  423. package/page/constants/index.d.ts +25 -0
  424. package/page/constants/index.d.ts.map +1 -0
  425. package/page/constants/index.js +7 -2
  426. package/page/helpers/index.d.ts +70 -62
  427. package/page/helpers/index.d.ts.map +1 -0
  428. package/page/helpers/index.js +31 -29
  429. package/page/hooks/index.d.ts +54 -53
  430. package/page/hooks/index.d.ts.map +1 -0
  431. package/page/hooks/index.js +20 -15
  432. package/page/selectors/index.d.ts +32 -0
  433. package/page/selectors/index.d.ts.map +1 -0
  434. package/page/selectors/index.js +2 -1
  435. package/page/widgets/Button/Button.js +2 -3
  436. package/page/widgets/HTML/HTML.js +5 -9
  437. package/page/widgets/NestedCategoryFilter/NestedCategoryFilter.js +8 -13
  438. package/page/widgets/NestedCategoryFilter/components/Picker/components/SheetItem/index.js +2 -2
  439. package/page/widgets/NestedCategoryFilter/components/Picker/index.js +7 -9
  440. package/page/widgets/Placeholder/Placeholder.js +7 -8
  441. package/page/widgets/ProductList/ProductList.js +18 -14
  442. package/page/widgets/ProductSlider/ProductSlider.js +1 -15
  443. package/page/widgets/Video/Video.d.ts +6 -0
  444. package/page/widgets/Video/Video.d.ts.map +1 -0
  445. package/page/widgets/Video/Video.js +0 -2
  446. package/page/widgets/Video/hooks.d.ts +53 -0
  447. package/page/widgets/Video/hooks.d.ts.map +1 -0
  448. package/page/widgets/Video/hooks.js +4 -12
  449. package/page/widgets/Video/index.d.ts +2 -0
  450. package/page/widgets/Video/index.d.ts.map +1 -0
  451. package/product/components/Availability/Availability.js +0 -4
  452. package/product/components/Characteristics/Characteristic/components/SheetItem/index.js +4 -8
  453. package/product/components/Characteristics/Characteristic/index.js +9 -12
  454. package/product/components/Characteristics/Swatch/index.js +3 -7
  455. package/product/components/Characteristics/transition.js +4 -4
  456. package/product/components/Description/index.js +5 -8
  457. package/product/components/EffectivityDates/index.js +23 -17
  458. package/product/components/FilterBar/components/Content/components/FilterButton/index.js +7 -13
  459. package/product/components/FilterBar/components/Content/components/Sort/index.js +7 -13
  460. package/product/components/FilterBar/components/FilterModal/FilterModalContent.js +3 -7
  461. package/product/components/FilterBar/components/FilterModal/FilterModalTitle.js +13 -12
  462. package/product/components/FilterBar/index.js +4 -8
  463. package/product/components/Header/PriceStriked/index.js +4 -8
  464. package/product/components/Header/Shipping/index.js +3 -3
  465. package/product/components/Header/Tiers/components/Tier/index.js +3 -3
  466. package/product/components/Header/Tiers/index.js +5 -3
  467. package/product/components/MapPriceHint/index.js +8 -7
  468. package/product/components/Media/FeaturedMedia.js +7 -1
  469. package/product/components/Media/MediaImage.js +25 -24
  470. package/product/components/Media/MediaPlaceholder.js +7 -11
  471. package/product/components/MediaSlider/components/MediaImage/index.js +6 -2
  472. package/product/components/MediaSlider/constants.js +1 -12
  473. package/product/components/Options/components/TextOption/components/OptionInfo/index.js +18 -18
  474. package/product/components/Options/components/TextOption/index.js +8 -11
  475. package/product/components/OrderQuantityHint/index.js +17 -8
  476. package/product/components/PriceDifference/index.js +4 -8
  477. package/product/components/PriceInfo/PriceInfo.connector.js +2 -2
  478. package/product/components/PriceInfo/PriceInfo.js +3 -4
  479. package/product/components/ProductCard/index.js +39 -27
  480. package/product/components/ProductDiscountBadge/index.js +3 -3
  481. package/product/components/ProductGrid/components/Item/components/ItemDetails/index.js +12 -4
  482. package/product/components/ProductGrid/components/Item/components/ItemFavoritesButton/index.js +1 -1
  483. package/product/components/ProductGrid/components/Item/components/ItemImage/index.js +3 -6
  484. package/product/components/ProductGrid/components/Item/components/ItemName/index.js +9 -5
  485. package/product/components/ProductGrid/components/Item/index.js +10 -6
  486. package/product/components/ProductGrid/components/Layout/index.js +19 -4
  487. package/product/components/ProductGrid/constants.d.ts +2 -0
  488. package/product/components/ProductGrid/constants.d.ts.map +1 -0
  489. package/product/components/ProductGrid/constants.js +1 -0
  490. package/product/components/ProductGrid/hooks.d.ts +11 -0
  491. package/product/components/ProductGrid/hooks.d.ts.map +1 -0
  492. package/product/components/ProductGrid/hooks.js +48 -0
  493. package/product/components/ProductGrid/index.js +3 -6
  494. package/product/components/ProductGridPrice/index.js +8 -15
  495. package/product/components/ProductImage/ProductImage.d.ts +42 -0
  496. package/product/components/ProductImage/ProductImage.d.ts.map +1 -0
  497. package/product/components/ProductImage/ProductImage.js +158 -0
  498. package/product/components/ProductImage/ProductImagePlaceholder.d.ts +23 -0
  499. package/product/components/ProductImage/ProductImagePlaceholder.d.ts.map +1 -0
  500. package/product/components/ProductImage/ProductImagePlaceholder.js +18 -26
  501. package/product/components/ProductImage/constants.d.ts +7 -0
  502. package/product/components/ProductImage/constants.d.ts.map +1 -0
  503. package/product/components/ProductImage/constants.js +6 -0
  504. package/product/components/ProductImage/hooks.d.ts +8 -0
  505. package/product/components/ProductImage/hooks.d.ts.map +1 -0
  506. package/product/components/ProductImage/hooks.js +32 -0
  507. package/product/components/ProductImage/index.d.ts +3 -0
  508. package/product/components/ProductImage/index.d.ts.map +1 -0
  509. package/product/components/ProductImage/index.js +1 -203
  510. package/product/components/ProductList/components/Item/index.js +10 -12
  511. package/product/components/ProductList/components/Layout/index.js +8 -20
  512. package/product/components/ProductName/ProductName.d.ts +1 -1
  513. package/product/components/ProductName/ProductName.d.ts.map +1 -1
  514. package/product/components/ProductName/ProductNameContent.d.ts +2 -1
  515. package/product/components/ProductName/ProductNameContent.d.ts.map +1 -1
  516. package/product/components/ProductProperties/Content.js +1 -1
  517. package/product/components/ProductProperties/Group.js +6 -4
  518. package/product/components/ProductProperties/GroupedProperties.js +1 -1
  519. package/product/components/ProductProperties/Wrapper.js +4 -2
  520. package/product/components/ProductRatingStars/ProductRatingStars.d.ts +1 -1
  521. package/product/components/ProductRatingStars/ProductRatingStars.js +2 -4
  522. package/product/components/ProductSlider/constants.d.ts +3 -0
  523. package/product/components/ProductSlider/constants.d.ts.map +1 -0
  524. package/product/components/ProductSlider/constants.js +2 -0
  525. package/product/components/ProductSlider/hooks.d.ts +7 -0
  526. package/product/components/ProductSlider/hooks.d.ts.map +1 -0
  527. package/product/components/ProductSlider/hooks.js +40 -0
  528. package/product/components/ProductSlider/index.js +8 -8
  529. package/product/components/Rating/index.js +2 -4
  530. package/product/components/RelationsSlider/RelationsSheet.js +1 -5
  531. package/product/components/RelationsSlider/RelationsSliderContent.js +7 -6
  532. package/product/components/RelationsSlider/constants.d.ts +3 -0
  533. package/product/components/RelationsSlider/constants.d.ts.map +1 -0
  534. package/product/components/RelationsSlider/constants.js +2 -1
  535. package/product/components/RelationsSlider/hooks.d.ts +6 -0
  536. package/product/components/RelationsSlider/hooks.d.ts.map +1 -0
  537. package/product/components/RelationsSlider/hooks.js +34 -0
  538. package/product/components/Swatch/SwatchContent.js +3 -7
  539. package/product/components/Swatches/Swatches.js +3 -7
  540. package/product/components/UnitQuantityPicker/ProductUnitQuantityPicker.js +4 -4
  541. package/product/components/UnitQuantityPicker/UnitQuantityPicker.d.ts.map +1 -1
  542. package/product/components/UnitQuantityPicker/UnitQuantityPicker.js +24 -45
  543. package/product/helpers/index.js +29 -11
  544. package/product/hooks/index.js +3 -1
  545. package/product/hooks/useLoadProductImage.js +4 -2
  546. package/product/hooks/useShowEmptyRatingStars.d.ts +7 -0
  547. package/product/hooks/useShowEmptyRatingStars.d.ts.map +1 -0
  548. package/product/hooks/useShowEmptyRatingStars.js +21 -0
  549. package/product/index.js +0 -1
  550. package/push-opt-in/components/PushOptInModal/index.js +17 -17
  551. package/registration/components/GuestRegistration/GuestRegistrationFormPickup.js +2 -2
  552. package/registration/components/Registration/RegistrationContent.js +2 -1
  553. package/registration/components/Registration/RegistrationFormActions.js +4 -4
  554. package/registration/components/Registration/RegistrationFormBase.config.js +2 -1
  555. package/registration/providers/GuestRegistrationProvider.actions.js +1 -1
  556. package/registration/providers/GuestRegistrationProvider.connector.js +3 -2
  557. package/registration/providers/GuestRegistrationProvider.js +2 -1
  558. package/registration/providers/RegistrationProvider.actions.js +4 -2
  559. package/registration/providers/RegistrationProvider.connector.js +2 -2
  560. package/registration/providers/RegistrationProvider.constraints.js +1 -1
  561. package/registration/providers/RegistrationProvider.js +2 -1
  562. package/reviews/components/Reviews/components/AllReviewsLink/index.js +6 -6
  563. package/reviews/components/Reviews/components/Header/components/NoReviews/index.js +1 -1
  564. package/reviews/components/Reviews/components/Header/components/ReviewsExcerpt/index.js +3 -3
  565. package/reviews/components/Reviews/components/Header/components/WriteReviewLink/index.js +4 -3
  566. package/reviews/components/Reviews/components/List/components/Info/index.js +16 -26
  567. package/reviews/components/Reviews/components/List/components/Text/index.js +4 -2
  568. package/reviews/components/Reviews/components/List/components/Title/index.js +3 -3
  569. package/reviews/components/Reviews/components/List/index.js +1 -5
  570. package/reviews/components/Reviews/components/RatingCount/index.js +13 -15
  571. package/reviews/components/Reviews/components/ReviewsInfo/index.js +9 -9
  572. package/settings/action-creators/appSettings.d.ts +12 -0
  573. package/settings/action-creators/appSettings.d.ts.map +1 -0
  574. package/settings/action-creators/appSettings.js +10 -0
  575. package/settings/action-creators/merchantSettings.d.ts +2 -0
  576. package/settings/action-creators/merchantSettings.d.ts.map +1 -0
  577. package/settings/action-creators/merchantSettings.js +11 -0
  578. package/settings/action-creators/shopSettings.d.ts +3 -0
  579. package/settings/action-creators/shopSettings.d.ts.map +1 -0
  580. package/settings/action-creators/shopSettings.js +21 -0
  581. package/settings/constants/appSettings.d.ts +5 -0
  582. package/settings/constants/appSettings.d.ts.map +1 -0
  583. package/settings/constants/appSettings.js +6 -0
  584. package/settings/constants/imageSettings.d.ts +52 -0
  585. package/settings/constants/imageSettings.d.ts.map +1 -0
  586. package/settings/constants/imageSettings.js +69 -0
  587. package/settings/constants/merchantSettings.d.ts +12 -0
  588. package/settings/constants/merchantSettings.d.ts.map +1 -0
  589. package/settings/constants/merchantSettings.js +11 -0
  590. package/settings/constants/shopSettings.d.ts +28 -0
  591. package/settings/constants/shopSettings.d.ts.map +1 -0
  592. package/settings/constants/shopSettings.js +27 -0
  593. package/settings/helpers/index.d.ts +3 -0
  594. package/settings/helpers/index.d.ts.map +1 -0
  595. package/settings/helpers/index.js +1 -0
  596. package/settings/helpers/resolveImageSettings.d.ts +70 -0
  597. package/settings/helpers/resolveImageSettings.d.ts.map +1 -0
  598. package/settings/helpers/resolveImageSettings.js +171 -0
  599. package/settings/helpers/toImageQuality.d.ts +7 -0
  600. package/settings/helpers/toImageQuality.d.ts.map +1 -0
  601. package/settings/helpers/toImageQuality.js +44 -0
  602. package/settings/helpers/toThumborColor.d.ts +15 -0
  603. package/settings/helpers/toThumborColor.d.ts.map +1 -0
  604. package/settings/helpers/toThumborColor.js +51 -0
  605. package/settings/hooks/index.d.ts +2 -0
  606. package/settings/hooks/index.d.ts.map +1 -0
  607. package/settings/hooks/index.js +1 -0
  608. package/settings/hooks/useImageSettings.d.ts +28 -0
  609. package/settings/hooks/useImageSettings.d.ts.map +1 -0
  610. package/settings/hooks/useImageSettings.js +39 -0
  611. package/settings/reducers/appSettings.d.ts +18 -0
  612. package/settings/reducers/appSettings.d.ts.map +1 -0
  613. package/settings/reducers/appSettings.js +134 -0
  614. package/settings/reducers/index.d.ts +15 -0
  615. package/settings/reducers/index.d.ts.map +1 -0
  616. package/{core → settings}/reducers/index.js +4 -3
  617. package/settings/reducers/merchantSettings.d.ts +18 -0
  618. package/settings/reducers/merchantSettings.d.ts.map +1 -0
  619. package/{core → settings}/reducers/merchantSettings.js +9 -3
  620. package/settings/reducers/shopSettings.d.ts +28 -0
  621. package/settings/reducers/shopSettings.d.ts.map +1 -0
  622. package/{core → settings}/reducers/shopSettings.js +10 -4
  623. package/settings/selectors/appSettings.d.ts +157 -0
  624. package/settings/selectors/appSettings.d.ts.map +1 -0
  625. package/settings/selectors/appSettings.js +97 -0
  626. package/settings/selectors/merchantSettings.d.ts +21 -0
  627. package/settings/selectors/merchantSettings.d.ts.map +1 -0
  628. package/settings/selectors/merchantSettings.js +34 -0
  629. package/settings/selectors/shopSettings.d.ts +54 -0
  630. package/settings/selectors/shopSettings.d.ts.map +1 -0
  631. package/settings/selectors/shopSettings.js +81 -0
  632. package/settings/types/appSettings.d.ts +276 -0
  633. package/settings/types/appSettings.d.ts.map +1 -0
  634. package/settings/types/appSettings.js +124 -0
  635. package/styles/helpers/index.d.ts +2 -0
  636. package/styles/helpers/index.js +2 -0
  637. package/styles/helpers/loadFontCss.d.ts +22 -0
  638. package/styles/helpers/loadFontCss.d.ts.map +1 -0
  639. package/styles/helpers/loadFontCss.js +138 -0
  640. package/styles/helpers/loadThemeCss.d.ts +14 -0
  641. package/styles/helpers/loadThemeCss.d.ts.map +1 -0
  642. package/styles/helpers/loadThemeCss.js +123 -0
  643. package/styles/helpers/setPageBackgroundColor.js +2 -2
  644. package/styles/index.d.ts +1 -1
  645. package/styles/index.d.ts.map +1 -1
  646. package/styles/index.js +1 -1
  647. package/styles/reset/root.js +23 -4
  648. package/styles/reset/typographyCustomProps.d.ts +12 -0
  649. package/styles/reset/typographyCustomProps.d.ts.map +1 -0
  650. package/styles/reset/typographyCustomProps.js +11 -0
  651. package/styles/theme/createDefaultThemeOptions/index.d.ts.map +1 -1
  652. package/styles/theme/createDefaultThemeOptions/index.js +179 -7
  653. package/styles/theme/createTheme/createComponents.types.d.ts +266 -0
  654. package/styles/theme/createTheme/createComponents.types.d.ts.map +1 -1
  655. package/styles/theme/createTheme/createComponents.types.js +266 -0
  656. package/styles/theme/createTheme/createCssVarsForColorSchemeThemes.d.ts.map +1 -1
  657. package/styles/theme/createTheme/createCssVarsForColorSchemeThemes.js +41 -5
  658. package/styles/theme/createTheme/createPalette.types.d.ts +20 -7
  659. package/styles/theme/createTheme/createPalette.types.d.ts.map +1 -1
  660. package/styles/theme/createTheme/createPalette.types.js +23 -10
  661. package/styles/theme/createTheme/createShape.d.ts +3 -0
  662. package/styles/theme/createTheme/createShape.d.ts.map +1 -1
  663. package/styles/theme/createTheme/createSpacing.js +4 -1
  664. package/styles/theme/createTheme/createThemeFromColorScheme.d.ts +11 -2
  665. package/styles/theme/createTheme/createThemeFromColorScheme.d.ts.map +1 -1
  666. package/styles/theme/createTheme/createThemeFromColorScheme.js +16 -4
  667. package/styles/theme/createTheme/createTypography.d.ts +2 -1
  668. package/styles/theme/createTheme/createTypography.js +59 -18
  669. package/styles/theme/createTheme/helpers/cssVarsColorAugmentation.d.ts +2 -1
  670. package/styles/theme/createTheme/helpers/cssVarsColorAugmentation.d.ts.map +1 -1
  671. package/styles/theme/createTheme/helpers/cssVarsColorAugmentation.js +84 -6
  672. package/styles/theme/createTheme/helpers/cssVarsParser.d.ts.map +1 -1
  673. package/styles/theme/createTheme/helpers/cssVarsParser.js +10 -3
  674. package/styles/theme/createTheme/index.d.ts +2 -1
  675. package/styles/theme/createTheme/index.d.ts.map +1 -1
  676. package/styles/theme/createTheme/index.js +5 -3
  677. package/styles/theme/createTheme/layout.d.ts +23 -0
  678. package/styles/theme/createTheme/layout.d.ts.map +1 -0
  679. package/styles/theme/createTheme/layout.js +20 -0
  680. package/styles/theme/createTheme/shadows.d.ts +11 -1
  681. package/styles/theme/createTheme/shadows.d.ts.map +1 -1
  682. package/styles/theme/createTheme/shadows.js +41 -7
  683. package/styles/theme/createTheme/transitions.d.ts +4 -0
  684. package/styles/theme/createTheme/transitions.js +3 -1
  685. package/styles/theme/createTheme/types.d.ts +48 -10
  686. package/styles/theme/createTheme/types.d.ts.map +1 -1
  687. package/styles/theme/createTheme/types.js +16 -4
  688. package/styles/theme/hocs/index.d.ts +2 -0
  689. package/styles/theme/hocs/index.d.ts.map +1 -0
  690. package/styles/theme/hocs/index.js +1 -0
  691. package/styles/theme/hocs/withTheme.d.ts +21 -0
  692. package/styles/theme/hocs/withTheme.d.ts.map +1 -0
  693. package/styles/theme/hocs/withTheme.js +33 -0
  694. package/styles/theme/hooks/useColorScheme.d.ts +4 -3
  695. package/styles/theme/hooks/useColorScheme.d.ts.map +1 -1
  696. package/styles/theme/hooks/useColorScheme.js +4 -3
  697. package/styles/theme/hooks/useMediaQuery.d.ts +7 -0
  698. package/styles/theme/hooks/useMediaQuery.d.ts.map +1 -1
  699. package/styles/theme/hooks/useMediaQuery.js +5 -5
  700. package/styles/theme/hooks/useTheme.js +1 -1
  701. package/styles/theme/index.d.ts +5 -1
  702. package/styles/theme/index.d.ts.map +1 -1
  703. package/styles/theme/index.js +2 -1
  704. package/styles/theme/providers/ActiveBreakpointProvider.d.ts +1 -1
  705. package/styles/theme/providers/ColorSchemeContext.d.ts +40 -0
  706. package/styles/theme/providers/ColorSchemeContext.d.ts.map +1 -0
  707. package/styles/theme/providers/ColorSchemeContext.js +14 -0
  708. package/styles/theme/providers/ThemeContext.d.ts +3 -0
  709. package/styles/theme/providers/ThemeContext.d.ts.map +1 -0
  710. package/styles/theme/providers/ThemeContext.js +2 -0
  711. package/styles/theme/providers/ThemeProvider.d.ts +4 -14
  712. package/styles/theme/providers/ThemeProvider.d.ts.map +1 -1
  713. package/styles/theme/providers/ThemeProvider.js +90 -26
  714. package/styles/theme/utils/color.d.ts +12 -12
  715. package/styles/theme/utils/color.d.ts.map +1 -1
  716. package/tracking/components/CookieConsentModal/index.js +14 -15
  717. package/tracking/components/PrivacySettings/index.js +7 -7
  718. package/tracking/selectors/cookieConsent.js +2 -2
  719. package/cart/components/PaymentBar/PaymentBarReserveButton.connector.js +0 -6
  720. package/cart/components/PaymentBar/PaymentBarReserveButton.js +0 -75
  721. package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.connector.js +0 -16
  722. package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.js +0 -52
  723. package/product/collections/index.js +0 -1
  724. package/product/components/EffectivityDates/constants.d.ts +0 -3
  725. package/product/components/EffectivityDates/constants.d.ts.map +0 -1
  726. package/product/components/EffectivityDates/helpers.d.ts +0 -6
  727. package/product/components/EffectivityDates/helpers.d.ts.map +0 -1
  728. package/product/components/Media/helpers.d.ts +0 -2
  729. package/product/components/Media/helpers.d.ts.map +0 -1
  730. package/product/components/ProductImage/connector.js +0 -12
  731. package/product/helpers/index.d.ts +0 -13
  732. package/product/helpers/index.d.ts.map +0 -1
  733. package/product/helpers/redirects.d.ts +0 -2
  734. package/product/helpers/redirects.d.ts.map +0 -1
  735. package/product/selectors/helpers/filterProperties.d.ts +0 -8
  736. package/product/selectors/helpers/filterProperties.d.ts.map +0 -1
  737. package/product/selectors/helpers/index.d.ts +0 -3
  738. package/product/selectors/helpers/index.d.ts.map +0 -1
  739. package/product/selectors/helpers/wrapMemoizedSelector.d.ts +0 -2
  740. package/product/selectors/helpers/wrapMemoizedSelector.d.ts.map +0 -1
  741. package/product/selectors/product.d.ts +0 -112
  742. package/product/selectors/product.d.ts.map +0 -1
@@ -0,0 +1,171 @@
1
+ import "core-js/modules/es.array.reduce.js";
2
+ // Imported via its module path rather than the "core" barrel, since that barrel pulls in
3
+ // getFullImageSource which reads these settings back, and would create a circular import.
4
+ import { getThemeSettings } from '@shopgate/engage/core/config/getThemeSettings';
5
+ import { DEFAULT_IMAGE_FILL_COLOR, DEFAULT_IMAGE_FILL_TRANSPARENT, DEFAULT_IMAGE_QUALITY, LEGACY_IMAGE_SETTINGS_KEY, MAX_IMAGE_DIMENSION, PRODUCT_IMAGE_BASE_WIDTHS } from "../constants/imageSettings";
6
+ import { toThumborColor } from "./toThumborColor";
7
+
8
+ /**
9
+ * The shape of the legacy AppImages theme settings. Every field is optional - the key is absent
10
+ * entirely in most shops, and undefined in every jest run, since the test theme config mock has no
11
+ * settings at all.
12
+ */
13
+
14
+ /**
15
+ * Maps a product image context onto the legacy AppImages key that configured it.
16
+ */
17
+ const LEGACY_RESOLUTION_KEYS = {
18
+ pdp: 'HeroImage',
19
+ gallery: 'GalleryImage',
20
+ list: 'ListImage'
21
+ };
22
+
23
+ /**
24
+ * The ratio the legacy resolutions are assumed to have when they are not configured at all - the
25
+ * built-in base widths then produce exactly the resolutions the legacy defaults shipped with.
26
+ */
27
+ const DEFAULT_RATIO = {
28
+ width: 1,
29
+ height: 1
30
+ };
31
+ const PRODUCT_IMAGE_CONTEXTS = Object.keys(PRODUCT_IMAGE_BASE_WIDTHS);
32
+
33
+ /**
34
+ * The resolved settings for one product image context: the resolution ladder to request from the
35
+ * image service, and the aspect ratio to apply to the rendered element.
36
+ *
37
+ * ratio is null while the legacy settings are in effect, because those configure explicit
38
+ * dimensions rather than a ratio - consumers then let the Image component derive the ratio from
39
+ * the largest resolution, exactly as before.
40
+ */
41
+
42
+ /**
43
+ * The resolved settings for every product image context, keyed by context.
44
+ */
45
+
46
+ /**
47
+ * What getFullImageSource needs to build an image url.
48
+ *
49
+ * The color and the transparency flag stay separate rather than being joined into one token,
50
+ * because the image sources spell them differently.
51
+ */
52
+
53
+ /**
54
+ * Reads the legacy AppImages settings from the theme configuration.
55
+ * @returns The legacy settings, or an empty object when they are not configured.
56
+ */
57
+ const getLegacyImageSettings = () => getThemeSettings(LEGACY_IMAGE_SETTINGS_KEY) ?? {};
58
+
59
+ /**
60
+ * Whether a ratio part can be calculated with.
61
+ * @param value The value to check.
62
+ * @returns Whether it is usable.
63
+ */
64
+ const isUsableRatioPart = value => typeof value === 'number' && Number.isFinite(value) && value > 0;
65
+
66
+ /**
67
+ * Substitutes a ratio that cannot be calculated with. Anything reading a configured ratio goes
68
+ * through here first - a source may send a half typed value, or none at all.
69
+ * @param ratio The configured ratio.
70
+ * @returns The ratio, or the default when it is unusable.
71
+ */
72
+ const toUsableRatio = ratio => {
73
+ if (!ratio || !isUsableRatioPart(ratio.width) || !isUsableRatioPart(ratio.height)) {
74
+ return DEFAULT_RATIO;
75
+ }
76
+ return ratio;
77
+ };
78
+
79
+ /**
80
+ * Derives a resolution ladder from a context's base widths and an aspect ratio.
81
+ * @param context The product image context.
82
+ * @param ratio The aspect ratio to apply, already passed through toUsableRatio.
83
+ * @returns The resolutions, ordered ascending.
84
+ */
85
+ const deriveResolutions = (context, ratio) => PRODUCT_IMAGE_BASE_WIDTHS[context].map(baseWidth => {
86
+ const height = Math.max(1, Math.round(baseWidth * ratio.height / ratio.width));
87
+ if (height <= MAX_IMAGE_DIMENSION) {
88
+ return {
89
+ width: baseWidth,
90
+ height
91
+ };
92
+ }
93
+
94
+ // Scaled down as a whole rather than capping the height alone, so the requested image keeps the
95
+ // shape the layout reserves for it.
96
+ return {
97
+ width: Math.max(1, Math.round(baseWidth * MAX_IMAGE_DIMENSION / height)),
98
+ height: MAX_IMAGE_DIMENSION
99
+ };
100
+ });
101
+
102
+ /**
103
+ * Resolves the settings for every product image context.
104
+ *
105
+ * Precedence:
106
+ * - Once the app settings are hydrated from a source (admin sync / jsonp), they are authoritative.
107
+ * The configured ratio applies to every context unless that context overrides it.
108
+ * - Before hydration the legacy AppImages resolutions are passed through as-is, with a null ratio.
109
+ * They already carry their own implied proportions, so reverse engineering a ratio from them
110
+ * would only introduce rounding - passing them through unchanged keeps the pre-hydration path
111
+ * identical to the legacy behavior.
112
+ * @param areAppSettingsHydrated Whether the app settings arrived from a source.
113
+ * @param imageSettings The image settings from the store.
114
+ * @returns The resolved settings, keyed by context.
115
+ */
116
+ export const resolveProductImageSettings = (areAppSettingsHydrated, imageSettings) => {
117
+ const legacy = areAppSettingsHydrated ? null : getLegacyImageSettings();
118
+ return PRODUCT_IMAGE_CONTEXTS.reduce((resolved, context) => {
119
+ if (legacy) {
120
+ const legacyResolutions = legacy[LEGACY_RESOLUTION_KEYS[context]];
121
+ return {
122
+ ...resolved,
123
+ [context]: {
124
+ resolutions: legacyResolutions?.length ? legacyResolutions : deriveResolutions(context, DEFAULT_RATIO),
125
+ ratio: null
126
+ }
127
+ };
128
+ }
129
+ const product = imageSettings?.product;
130
+ const ratio = toUsableRatio(product?.[context]?.ratio ?? product?.ratio);
131
+ const resolutions = deriveResolutions(context, ratio);
132
+ const largest = resolutions[resolutions.length - 1];
133
+ return {
134
+ ...resolved,
135
+ [context]: {
136
+ resolutions,
137
+ ratio: [largest.width, largest.height]
138
+ }
139
+ };
140
+ }, {});
141
+ };
142
+
143
+ /**
144
+ * Resolves the quality and fill that image urls are built with.
145
+ * @param areAppSettingsHydrated Whether the app settings arrived from a source.
146
+ * @param imageSettings The image settings from the store.
147
+ * @returns The image service settings.
148
+ */
149
+ export const resolveImageServiceSettings = (areAppSettingsHydrated, imageSettings) => {
150
+ let color;
151
+ let fillTransparent;
152
+ if (areAppSettingsHydrated) {
153
+ color = imageSettings?.fillColor ?? DEFAULT_IMAGE_FILL_COLOR;
154
+ fillTransparent = imageSettings?.fillTransparent ?? DEFAULT_IMAGE_FILL_TRANSPARENT;
155
+ } else {
156
+ // The legacy value packs both parts into one string, e.g. "FFFFFF,1". Its color is normalized
157
+ // like a configured one - theme configurations carry values the image service will not take.
158
+ const {
159
+ fillColor: legacyFillColor = ''
160
+ } = getLegacyImageSettings();
161
+ const [legacyColor, legacyFillTransparent] = legacyFillColor.split(',');
162
+ color = legacyColor ? toThumborColor(legacyColor) : DEFAULT_IMAGE_FILL_COLOR;
163
+ fillTransparent = legacyFillTransparent === undefined ? DEFAULT_IMAGE_FILL_TRANSPARENT : legacyFillTransparent.trim() === '1';
164
+ }
165
+ return {
166
+ // No hydration branch, unlike the fill: the unhydrated slice already holds the legacy quality.
167
+ quality: imageSettings?.quality ?? DEFAULT_IMAGE_QUALITY,
168
+ fillColor: color,
169
+ fillTransparent
170
+ };
171
+ };
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Converts a configured value into a compression quality the image service accepts.
3
+ * @param value The value to convert.
4
+ * @returns A whole number between 1 and 100.
5
+ */
6
+ export declare const toImageQuality: (value: unknown) => number;
7
+ //# sourceMappingURL=toImageQuality.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toImageQuality.d.ts","sourceRoot":"","sources":["../../../settings/helpers/toImageQuality.ts"],"names":[],"mappings":"AA4BA;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,KAAG,MAY/C,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { logger } from '@shopgate/pwa-core/helpers';
2
+ import { DEFAULT_IMAGE_QUALITY } from "../constants/imageSettings";
3
+
4
+ /**
5
+ * The range the image service accepts.
6
+ */
7
+ const MIN_IMAGE_QUALITY = 1;
8
+ const MAX_IMAGE_QUALITY = 100;
9
+
10
+ /**
11
+ * Coerces a configured value into a number.
12
+ * @param value The configured value.
13
+ * @returns The number, or NaN when the value does not express one.
14
+ */
15
+ const toNumber = value => {
16
+ if (typeof value === 'number') {
17
+ return value;
18
+ }
19
+
20
+ // Emptiness is handled here rather than left to Number(), which would read both "" and null as a
21
+ // perfectly valid zero.
22
+ if (typeof value === 'string' && value.trim() !== '') {
23
+ return Number(value);
24
+ }
25
+ return NaN;
26
+ };
27
+
28
+ /**
29
+ * Converts a configured value into a compression quality the image service accepts.
30
+ * @param value The value to convert.
31
+ * @returns A whole number between 1 and 100.
32
+ */
33
+ export const toImageQuality = value => {
34
+ const quality = toNumber(value);
35
+ if (!Number.isFinite(quality)) {
36
+ logger.warn(`Invalid image quality "${value}", falling back to ${DEFAULT_IMAGE_QUALITY}`);
37
+ return DEFAULT_IMAGE_QUALITY;
38
+ }
39
+
40
+ // Out of range numbers are clamped rather than rejected, so a value that is still being typed
41
+ // degrades into the nearest usable one instead of jumping back to the default. Zero is included
42
+ // in that - the service takes it, but the images it returns are unusable.
43
+ return Math.min(Math.max(Math.round(quality), MIN_IMAGE_QUALITY), MAX_IMAGE_QUALITY);
44
+ };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Converts a color into the format Thumbor's fill filter expects - a hexadecimal RGB expression
3
+ * without the leading "#", or one of its own keywords.
4
+ *
5
+ * Any alpha channel on the input is dropped: Thumbor's fill color cannot carry one, and Color.hex()
6
+ * returns the opaque six digit form. Transparency is only expressible by configuring the
7
+ * "transparent" keyword explicitly.
8
+ *
9
+ * Everything else is canonicalized to hex rather than passing HTML color names through, so that
10
+ * "white", "#fff" and "rgb(255, 255, 255)" all produce the same url and share a CDN cache entry.
11
+ * @param value The color to convert.
12
+ * @returns The Thumbor color token.
13
+ */
14
+ export declare const toThumborColor: (value: string) => string;
15
+ //# sourceMappingURL=toThumborColor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toThumborColor.d.ts","sourceRoot":"","sources":["../../../settings/helpers/toThumborColor.ts"],"names":[],"mappings":"AAqBA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,KAAG,MAiB9C,CAAC"}
@@ -0,0 +1,51 @@
1
+ import "core-js/modules/es.array.includes.js";
2
+ import "core-js/modules/es.string.replace.js";
3
+ import Color from 'color';
4
+ import { logger } from '@shopgate/pwa-core/helpers';
5
+ // Imported via its module path rather than the "styles" barrel, since that barrel pulls in the
6
+ // ThemeProvider and would create a circular import.
7
+ import { isColor } from '@shopgate/engage/styles/theme/utils/color';
8
+ import { DEFAULT_IMAGE_FILL_COLOR } from "../constants/imageSettings";
9
+
10
+ /**
11
+ * Values Thumbor's fill filter accepts that are not CSS colors, so they have to bypass the color
12
+ * parser and be passed through untouched.
13
+ * @see https://thumbor.readthedocs.io/en/latest/filling.html
14
+ */
15
+ const THUMBOR_COLOR_KEYWORDS = ['auto', 'blur', 'transparent'];
16
+
17
+ /**
18
+ * A hexadecimal color without the leading "#" - the format the image service itself expects, and
19
+ * therefore what the legacy AppImages config stores. It is not a valid CSS color, so it has to be
20
+ * recognized before the color parser sees it.
21
+ */
22
+ const BARE_HEX_PATTERN = /^([\da-f]{3}|[\da-f]{4}|[\da-f]{6}|[\da-f]{8})$/i;
23
+
24
+ /**
25
+ * Converts a color into the format Thumbor's fill filter expects - a hexadecimal RGB expression
26
+ * without the leading "#", or one of its own keywords.
27
+ *
28
+ * Any alpha channel on the input is dropped: Thumbor's fill color cannot carry one, and Color.hex()
29
+ * returns the opaque six digit form. Transparency is only expressible by configuring the
30
+ * "transparent" keyword explicitly.
31
+ *
32
+ * Everything else is canonicalized to hex rather than passing HTML color names through, so that
33
+ * "white", "#fff" and "rgb(255, 255, 255)" all produce the same url and share a CDN cache entry.
34
+ * @param value The color to convert.
35
+ * @returns The Thumbor color token.
36
+ */
37
+ export const toThumborColor = value => {
38
+ const trimmed = typeof value === 'string' ? value.trim() : '';
39
+ if (THUMBOR_COLOR_KEYWORDS.includes(trimmed.toLowerCase())) {
40
+ return trimmed.toLowerCase();
41
+ }
42
+
43
+ // A bare hex is what the image service and the legacy config use, but not something the color
44
+ // parser recognizes, so it gets its "#" back before parsing.
45
+ const parsable = BARE_HEX_PATTERN.test(trimmed) ? `#${trimmed}` : trimmed;
46
+ if (!isColor(parsable)) {
47
+ logger.warn(`Invalid image fill color "${value}", falling back to ${DEFAULT_IMAGE_FILL_COLOR}`);
48
+ return DEFAULT_IMAGE_FILL_COLOR;
49
+ }
50
+ return Color(parsable).hex().replace('#', '').toUpperCase();
51
+ };
@@ -0,0 +1,2 @@
1
+ export { useImageServiceSettings, useProductImageSettings, } from './useImageSettings';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../settings/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1 @@
1
+ export { useImageServiceSettings, useProductImageSettings } from "./useImageSettings";
@@ -0,0 +1,28 @@
1
+ import type { ResolvedImageServiceSettings, ResolvedProductImageSettings } from '../helpers';
2
+ /**
3
+ * Resolves the resolutions and aspect ratio to request for every product image context, keyed by
4
+ * `pdp`, `gallery` and `list`.
5
+ *
6
+ * Prefer giving ProductImage a `context` prop, which resolves its own settings. This hook is for
7
+ * the places that render the plain Image component instead, e.g. the fullscreen gallery sliders,
8
+ * which need its unwrapped mode.
9
+ *
10
+ * `ratio` may be null, which the Image component reads as "derive one from the largest
11
+ * resolution" - pass it through rather than substituting a value.
12
+ * @returns The resolved settings, keyed by context.
13
+ */
14
+ export declare const useProductImageSettings: () => ResolvedProductImageSettings;
15
+ /**
16
+ * Resolves the quality and fill color for image service urls, in the shape getFullImageSource
17
+ * takes as its third argument.
18
+ *
19
+ * Components rarely need this - the Image component already calls it and applies the result. It is
20
+ * separate from useProductImageSettings because both values apply to every image the service
21
+ * serves, not just product images.
22
+ *
23
+ * `fillColor` is a hash free hex, not a CSS color, and the transparency flag is a separate
24
+ * `fillTransparent` - the image sources spell the pair differently.
25
+ * @returns The image service settings.
26
+ */
27
+ export declare const useImageServiceSettings: () => ResolvedImageServiceSettings;
28
+ //# sourceMappingURL=useImageSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useImageSettings.d.ts","sourceRoot":"","sources":["../../../settings/hooks/useImageSettings.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,4BAA4B,EAC5B,4BAA4B,EAC7B,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB,QAAO,4BAQ1C,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB,QAAO,4BAQ1C,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { useMemo } from 'react';
2
+ import { useSelector } from 'react-redux';
3
+ import { getAreAppSettingsHydrated, getImageSettings } from "../selectors/appSettings";
4
+ import { resolveImageServiceSettings, resolveProductImageSettings } from "../helpers";
5
+ /**
6
+ * Resolves the resolutions and aspect ratio to request for every product image context, keyed by
7
+ * `pdp`, `gallery` and `list`.
8
+ *
9
+ * Prefer giving ProductImage a `context` prop, which resolves its own settings. This hook is for
10
+ * the places that render the plain Image component instead, e.g. the fullscreen gallery sliders,
11
+ * which need its unwrapped mode.
12
+ *
13
+ * `ratio` may be null, which the Image component reads as "derive one from the largest
14
+ * resolution" - pass it through rather than substituting a value.
15
+ * @returns The resolved settings, keyed by context.
16
+ */
17
+ export const useProductImageSettings = () => {
18
+ const areAppSettingsHydrated = useSelector(getAreAppSettingsHydrated);
19
+ const imageSettings = useSelector(getImageSettings);
20
+ return useMemo(() => resolveProductImageSettings(areAppSettingsHydrated, imageSettings), [areAppSettingsHydrated, imageSettings]);
21
+ };
22
+
23
+ /**
24
+ * Resolves the quality and fill color for image service urls, in the shape getFullImageSource
25
+ * takes as its third argument.
26
+ *
27
+ * Components rarely need this - the Image component already calls it and applies the result. It is
28
+ * separate from useProductImageSettings because both values apply to every image the service
29
+ * serves, not just product images.
30
+ *
31
+ * `fillColor` is a hash free hex, not a CSS color, and the transparency flag is a separate
32
+ * `fillTransparent` - the image sources spell the pair differently.
33
+ * @returns The image service settings.
34
+ */
35
+ export const useImageServiceSettings = () => {
36
+ const areAppSettingsHydrated = useSelector(getAreAppSettingsHydrated);
37
+ const imageSettings = useSelector(getImageSettings);
38
+ return useMemo(() => resolveImageServiceSettings(areAppSettingsHydrated, imageSettings), [areAppSettingsHydrated, imageSettings]);
39
+ };
@@ -0,0 +1,18 @@
1
+ import type { Reducer, UnknownAction } from 'redux';
2
+ import type { AppSettingsSlice } from '../types/appSettings';
3
+ import type { ReceiveAppSettingsAction } from '../action-creators/appSettings';
4
+ type AppSettingsAction = ReceiveAppSettingsAction | UnknownAction;
5
+ /**
6
+ * The built-in default app settings. Used as the reducer's initial state and as
7
+ * a safe fallback for selectors when the slice is not present in the store yet.
8
+ */
9
+ export declare const DEFAULT_APP_SETTINGS: AppSettingsSlice;
10
+ /**
11
+ * Stores the app settings.
12
+ * @param state The current state.
13
+ * @param action The action object.
14
+ * @returns The new state.
15
+ */
16
+ declare const appSettings: Reducer<AppSettingsSlice, AppSettingsAction>;
17
+ export default appSettings;
18
+ //# sourceMappingURL=appSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appSettings.d.ts","sourceRoot":"","sources":["../../../settings/reducers/appSettings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAa/E,KAAK,iBAAiB,GAAG,wBAAwB,GAAG,aAAa,CAAC;AAQlE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,gBA+DlC,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,WAAW,EAAE,OAAO,CAAC,gBAAgB,EAAE,iBAAiB,CAuC7D,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,134 @@
1
+ import _merge from "lodash/merge";
2
+ import { RECEIVE_APP_SETTINGS } from "../constants/appSettings";
3
+ import { DEFAULT_IMAGE_FILL_COLOR, DEFAULT_IMAGE_FILL_TRANSPARENT, DEFAULT_IMAGE_QUALITY, DEFAULT_SHOW_INNER_SHADOW } from "../constants/imageSettings";
4
+ // Deliberately not exported from the "helpers" barrel - they normalize values on their way into
5
+ // the slice, which is nothing a consumer of the settings needs.
6
+ import { toImageQuality } from "../helpers/toImageQuality";
7
+ import { toThumborColor } from "../helpers/toThumborColor";
8
+ const isReceiveAppSettingsAction = action => action.type === RECEIVE_APP_SETTINGS && 'settings' in action;
9
+
10
+ /**
11
+ * The built-in default app settings. Used as the reducer's initial state and as
12
+ * a safe fallback for selectors when the slice is not present in the store yet.
13
+ */
14
+ export const DEFAULT_APP_SETTINGS = {
15
+ isHydrated: false,
16
+ navigation: {
17
+ tabBar: {
18
+ variant: 'fixed',
19
+ showLabels: true,
20
+ hideOnScroll: false,
21
+ transition: 'fade',
22
+ fixed: {
23
+ borderEnabled: true
24
+ },
25
+ favorites: {
26
+ showCounter: true
27
+ }
28
+ }
29
+ },
30
+ product: {
31
+ grid: {
32
+ columns: {
33
+ small: 2,
34
+ large: 4
35
+ }
36
+ },
37
+ slider: {
38
+ slidesPerView: {
39
+ small: 2.3,
40
+ medium: 3.3,
41
+ large: 4.3
42
+ }
43
+ },
44
+ rating: {
45
+ showEmptyStars: true
46
+ },
47
+ card: {
48
+ productName: {
49
+ maxLines: 3
50
+ }
51
+ },
52
+ tile: {
53
+ productName: {
54
+ maxLines: 3
55
+ }
56
+ }
57
+ },
58
+ cards: {
59
+ style: 'shadow',
60
+ shadow: {
61
+ size: 'medium'
62
+ }
63
+ },
64
+ typography: {
65
+ variants: {}
66
+ },
67
+ appearance: {
68
+ defaultColorSchemeMode: 'light'
69
+ },
70
+ images: {
71
+ quality: DEFAULT_IMAGE_QUALITY,
72
+ // Already in the image service's format, so the unhydrated path needs no conversion.
73
+ fillColor: DEFAULT_IMAGE_FILL_COLOR,
74
+ fillTransparent: DEFAULT_IMAGE_FILL_TRANSPARENT,
75
+ product: {
76
+ ratio: {
77
+ width: 1,
78
+ height: 1
79
+ },
80
+ showInnerShadow: DEFAULT_SHOW_INNER_SHADOW
81
+ }
82
+ }
83
+ };
84
+
85
+ /**
86
+ * Stores the app settings.
87
+ * @param state The current state.
88
+ * @param action The action object.
89
+ * @returns The new state.
90
+ */
91
+ const appSettings = (state, action = {
92
+ type: ''
93
+ }) => {
94
+ if (isReceiveAppSettingsAction(action)) {
95
+ const {
96
+ images,
97
+ typography,
98
+ appearance
99
+ } = action.settings ?? {};
100
+
101
+ // Merged over the defaults rather than over the current state, so a field an incoming payload
102
+ // omits falls back to its default instead of keeping the value of an earlier one. The admin
103
+ // preview needs that: it stops sending a shadow size once the card style isn't `shadow`, and it
104
+ // clears a whole branch by sending a null.
105
+ const nextState = _merge({}, DEFAULT_APP_SETTINGS, {
106
+ ...action.settings,
107
+ // A cleared branch is mapped to undefined, which merge skips, so the defaults it started from
108
+ // stay in place. A null would be written into the slice like any other value.
109
+ images: images === null ? undefined : {
110
+ ...images,
111
+ product: images?.product ?? undefined
112
+ },
113
+ typography: typography === null ? undefined : {
114
+ ...typography,
115
+ variants: typography?.variants ?? undefined
116
+ },
117
+ appearance: appearance === null ? undefined : {
118
+ ...appearance,
119
+ defaultColorSchemeMode: appearance?.defaultColorSchemeMode ?? undefined
120
+ }
121
+ }, {
122
+ isHydrated: true
123
+ });
124
+
125
+ // Converted on the way in, so the slice holds wire ready values and every image url does not
126
+ // pay for it. Unconditional, because an empty string or a null reaches here like any other
127
+ // value - both converters are idempotent.
128
+ nextState.images.fillColor = toThumborColor(nextState.images.fillColor);
129
+ nextState.images.quality = toImageQuality(nextState.images.quality);
130
+ return nextState;
131
+ }
132
+ return state ?? DEFAULT_APP_SETTINGS;
133
+ };
134
+ export default appSettings;
@@ -0,0 +1,15 @@
1
+ export declare const settings: import("redux").Reducer<{
2
+ config: Object;
3
+ shopSettings: Object;
4
+ merchantSettings: Object;
5
+ appSettings: import("../types/appSettings").AppSettingsSlice;
6
+ }, ({
7
+ type: string;
8
+ settings: import("../types/appSettings").DeepPartial<import("../types/appSettings").AppSettings>;
9
+ } | import("redux").UnknownAction) | import("redux").Action<string>, Partial<{
10
+ config: Object | undefined;
11
+ shopSettings: Object | undefined;
12
+ merchantSettings: Object | undefined;
13
+ appSettings: import("../types/appSettings").AppSettingsSlice | undefined;
14
+ }>>;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../settings/reducers/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;GAKnB,CAAC"}
@@ -1,10 +1,11 @@
1
1
  import { combineReducers } from 'redux';
2
- import config from "../config/config.reducers";
2
+ import config from "../../core/config/config.reducers";
3
3
  import shopSettings from "./shopSettings";
4
4
  import merchantSettings from "./merchantSettings";
5
- export { default as app } from "./app";
5
+ import appSettings from "./appSettings";
6
6
  export const settings = combineReducers({
7
7
  config,
8
8
  shopSettings,
9
- merchantSettings
9
+ merchantSettings,
10
+ appSettings
10
11
  });
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Stores the merchant settings.
3
+ * @param {Object} [state={}] The current state.
4
+ * @param {Object} action The action object.
5
+ * @returns {Object} The new state.
6
+ */
7
+ export default function merchantSettings(state?: Object, action?: Object): Object;
8
+ export namespace DEFAULT_MERCHANT_SETTINGS {
9
+ export let locationBasedShoppingEnabled: boolean;
10
+ export let enableSubstitutionPreferences: boolean;
11
+ export let restrictMultiLocationOrders: boolean;
12
+ export { currency as defaultCurrency };
13
+ export let enableWebIndexing: boolean;
14
+ export let enabledCmsVersion: string;
15
+ }
16
+ declare const currency: any;
17
+ export {};
18
+ //# sourceMappingURL=merchantSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merchantSettings.d.ts","sourceRoot":"","sources":["../../../settings/reducers/merchantSettings.js"],"names":[],"mappings":"AA4BA;;;;;GAKG;AACH,iDAJW,MAAM,WACN,MAAM,GACJ,MAAM,CAkBlB"}
@@ -1,12 +1,18 @@
1
1
  import { produce } from 'immer';
2
2
  import appConfig from '@shopgate/pwa-common/helpers/config';
3
- import { RECEIVE_MERCHANT_SETTINGS, MERCHANT_SETTINGS_LOCATION_BASED_SHOPPING_ENABLED, MERCHANT_SETTINGS_SUBSTITUTION_PREFERENCES_ENABLED, MERCHANT_SETTINGS_RESTRICT_MULTI_LOCATION_ORDERS, MERCHANT_SETTINGS_DEFAULT_CURRENCY, MERCHANT_SETTINGS_ENABLE_WEB_INDEXING, MERCHANT_SETTINGS_ENABLED_CMS_VERSION } from "../constants";
3
+ import { RECEIVE_MERCHANT_SETTINGS, MERCHANT_SETTINGS_LOCATION_BASED_SHOPPING_ENABLED, MERCHANT_SETTINGS_SUBSTITUTION_PREFERENCES_ENABLED, MERCHANT_SETTINGS_RESTRICT_MULTI_LOCATION_ORDERS, MERCHANT_SETTINGS_DEFAULT_CURRENCY, MERCHANT_SETTINGS_ENABLE_WEB_INDEXING, MERCHANT_SETTINGS_ENABLED_CMS_VERSION } from "../constants/merchantSettings";
4
4
  const {
5
5
  locales: {
6
6
  currency = null
7
7
  } = {}
8
8
  } = appConfig;
9
- const defaultState = {
9
+
10
+ /**
11
+ * The built-in default merchant settings. Used as the reducer's initial state
12
+ * and as a safe fallback for selectors when the slice is not present in the
13
+ * store yet.
14
+ */
15
+ export const DEFAULT_MERCHANT_SETTINGS = {
10
16
  [MERCHANT_SETTINGS_LOCATION_BASED_SHOPPING_ENABLED]: false,
11
17
  [MERCHANT_SETTINGS_SUBSTITUTION_PREFERENCES_ENABLED]: false,
12
18
  [MERCHANT_SETTINGS_RESTRICT_MULTI_LOCATION_ORDERS]: false,
@@ -21,7 +27,7 @@ const defaultState = {
21
27
  * @param {Object} action The action object.
22
28
  * @returns {Object} The new state.
23
29
  */
24
- export default function merchantSettings(state = defaultState, action = {}) {
30
+ export default function merchantSettings(state = DEFAULT_MERCHANT_SETTINGS, action = {}) {
25
31
  const producer = produce(draft => {
26
32
  switch (action.type) {
27
33
  case RECEIVE_MERCHANT_SETTINGS:
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Stores the product locations by the location code.
3
+ * @param {Object} [state={}] The current state.
4
+ * @param {Object} action The action object.
5
+ * @returns {Object} The new state.
6
+ */
7
+ export default function shopSettings(state?: Object, action?: Object): Object;
8
+ export namespace DEFAULT_SHOP_SETTINGS {
9
+ export let googleSiteVerificationCode: null;
10
+ export let cartSupplementalContent: null;
11
+ export let orderSupplementalContent: null;
12
+ export let showShopLogoInWeb: boolean;
13
+ export let showShopLogoInApp: boolean;
14
+ export { SORT_RELEVANCE as productsSortOrder };
15
+ export let numberOfAddressLines: number;
16
+ export namespace images {
17
+ let productPlaceholder: null;
18
+ let categoryPlaceholder: null;
19
+ let favicon: null;
20
+ }
21
+ export let wishlistItemQuantityEnabled: boolean;
22
+ export let wishlistItemNotesEnabled: boolean;
23
+ export let loadWishlistOnAppStartEnabled: boolean;
24
+ export let showWishlistItemsCountBadge: boolean;
25
+ export let enableCms2ForAllShoppers: boolean;
26
+ }
27
+ import { SORT_RELEVANCE } from '@shopgate/pwa-common/constants/DisplayOptions';
28
+ //# sourceMappingURL=shopSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shopSettings.d.ts","sourceRoot":"","sources":["../../../settings/reducers/shopSettings.js"],"names":[],"mappings":"AAgDA;;;;;GAKG;AACH,6CAJW,MAAM,WACN,MAAM,GACJ,MAAM,CA0BlB;;;;;;;;;;;;;;;;;;;;+BA7E8B,+CAA+C"}