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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (529) hide show
  1. package/README.md +0 -1
  2. package/account/components/Profile/Profile.provider.d.ts +1 -1
  3. package/account/components/Profile/ProfileAddressBook.d.ts.map +1 -1
  4. package/account/components/Profile/ProfileAddressBook.js +13 -22
  5. package/account/components/Profile/ProfileAddressCard.d.ts.map +1 -1
  6. package/account/components/Profile/ProfileAddressCard.js +9 -18
  7. package/account/components/Profile/ProfileForm.d.ts.map +1 -1
  8. package/account/components/Profile/ProfileForm.js +15 -42
  9. package/account/components/ProfileContact/ProfileContact.js +13 -21
  10. package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.d.ts +2 -1
  11. package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.d.ts.map +1 -1
  12. package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.js +61 -5
  13. package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.d.ts +7 -1
  14. package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.d.ts.map +1 -1
  15. package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.js +14 -2
  16. package/admin-preview/components/FrontendSettingsPreviewBridge/types.d.ts +15 -2
  17. package/admin-preview/components/FrontendSettingsPreviewBridge/types.d.ts.map +1 -1
  18. package/admin-preview/constants/index.d.ts +0 -12
  19. package/admin-preview/constants/index.d.ts.map +1 -1
  20. package/admin-preview/constants/index.js +0 -16
  21. package/admin-preview/helpers/_internal/detection.d.ts +53 -0
  22. package/admin-preview/helpers/_internal/detection.d.ts.map +1 -0
  23. package/admin-preview/helpers/_internal/detection.js +93 -0
  24. package/admin-preview/helpers/index.d.ts +7 -0
  25. package/admin-preview/helpers/index.d.ts.map +1 -1
  26. package/admin-preview/helpers/index.js +12 -4
  27. package/admin-preview/initialization/_internal/initialFrontendSettings.d.ts +32 -0
  28. package/admin-preview/initialization/_internal/initialFrontendSettings.d.ts.map +1 -0
  29. package/admin-preview/initialization/_internal/initialFrontendSettings.js +43 -0
  30. package/admin-preview/initialization/awaitInitialFrontendSettings.d.ts +22 -0
  31. package/admin-preview/initialization/awaitInitialFrontendSettings.d.ts.map +1 -0
  32. package/admin-preview/initialization/awaitInitialFrontendSettings.js +84 -0
  33. package/back-in-stock/components/BackInStockButton/index.js +5 -5
  34. package/back-in-stock/components/Subscriptions/components/Subscription/index.js +2 -5
  35. package/cart/components/CartItem/CartItemProductLayout.js +2 -1
  36. package/cart/components/CartItem/CartItemProductLayoutWide.js +2 -2
  37. package/cart/components/CartItem/CartItemProductLayoutWideRemoveItem.js +7 -14
  38. package/cart/components/CartItem/CartItemProductProvider.connector.js +0 -2
  39. package/cart/components/CartItem/CartItemProductProvider.js +3 -30
  40. package/cart/components/CartItem/CartItemProductProvider.types.js +0 -1
  41. package/cart/components/CartItem/CartItemQuantityPicker.js +1 -0
  42. package/cart/components/CartItems/CartItemCardReservationLabelChangeStore.js +6 -24
  43. package/cart/components/CartItems/CartItems.js +8 -10
  44. package/cart/components/CartItems/CartItemsSubstitution.js +3 -2
  45. package/cart/components/CartSummaryWide/CartSummaryWide.js +2 -2
  46. package/cart/components/CartSummaryWide/CartSummaryWideCheckoutButton.js +9 -23
  47. package/cart/components/PaymentBar/PaymentBarCheckoutButton.js +8 -30
  48. package/cart/components/PaymentBar/PaymentBarContent.js +1 -1
  49. package/cart/components/PaymentBar/testUtils/mockFactories.js +4 -11
  50. package/category/components/CategoryImage/index.js +24 -17
  51. package/checkout/components/AddressBook/AddressList.js +14 -23
  52. package/checkout/components/Checkout/CheckoutActions.js +4 -3
  53. package/checkout/components/Checkout/CheckoutAddress.js +8 -0
  54. package/checkout/components/Checkout/CheckoutSection.js +6 -2
  55. package/checkout/components/CheckoutConfirmation/CheckoutConfirmation.js +6 -7
  56. package/checkout/components/ResponsiveBackButton/ResponsiveBackButton.js +7 -17
  57. package/components/Badge/Badge.d.ts +30 -0
  58. package/components/Badge/Badge.d.ts.map +1 -0
  59. package/components/Badge/Badge.js +48 -0
  60. package/components/Badge/index.d.ts +3 -0
  61. package/components/Badge/index.d.ts.map +1 -0
  62. package/components/Badge/index.js +1 -0
  63. package/components/Card/Card.d.ts +27 -0
  64. package/components/Card/Card.d.ts.map +1 -0
  65. package/components/Card/Card.js +57 -0
  66. package/components/Card/index.d.ts +4 -0
  67. package/components/Card/index.d.ts.map +1 -0
  68. package/components/Card/index.js +2 -0
  69. package/components/Card/useCardAppearance.d.ts +11 -0
  70. package/components/Card/useCardAppearance.d.ts.map +1 -0
  71. package/components/Card/useCardAppearance.js +22 -0
  72. package/components/ChipLayout/index.js +2 -4
  73. package/components/Logo/index.d.ts.map +1 -1
  74. package/components/Logo/index.js +3 -6
  75. package/components/NavigationHandler/connector.js +1 -1
  76. package/components/NavigationHandler/index.d.ts +2 -2
  77. package/components/Paper/Paper.d.ts +48 -0
  78. package/components/Paper/Paper.d.ts.map +1 -0
  79. package/components/Paper/Paper.js +64 -0
  80. package/components/Paper/index.d.ts +3 -0
  81. package/components/Paper/index.d.ts.map +1 -0
  82. package/components/Paper/index.js +1 -0
  83. package/components/PickerUtilize/index.d.ts +2 -1
  84. package/components/PickerUtilize/index.d.ts.map +1 -1
  85. package/components/RadioCard/RadioCard.d.ts.map +1 -1
  86. package/components/RadioCard/RadioCard.js +2 -1
  87. package/components/SheetList/components/Item/index.js +8 -8
  88. package/components/Tabs/components/Tab.d.ts.map +1 -1
  89. package/components/Tabs/components/Tab.js +14 -16
  90. package/components/Typography/Typography.d.ts +1 -1
  91. package/components/View/components/Above/index.d.ts.map +1 -1
  92. package/components/View/components/Above/index.js +3 -1
  93. package/components/View/components/Below/index.d.ts.map +1 -1
  94. package/components/View/components/Below/index.js +3 -1
  95. package/components/View/components/Content/index.d.ts +2 -1
  96. package/components/View/components/Content/index.d.ts.map +1 -1
  97. package/components/View/components/Content/index.js +4 -1
  98. package/components/constants.d.ts +6 -0
  99. package/components/constants.d.ts.map +1 -0
  100. package/components/index.d.ts +5 -1
  101. package/components/index.d.ts.map +1 -1
  102. package/components/index.js +4 -2
  103. package/components/v2/Button/Button.d.ts +24 -13
  104. package/components/v2/Button/Button.d.ts.map +1 -1
  105. package/components/v2/Button/Button.js +139 -41
  106. package/components/v2/ButtonBase/ButtonBase.d.ts +50 -10
  107. package/components/v2/ButtonBase/ButtonBase.d.ts.map +1 -1
  108. package/components/v2/ButtonBase/ButtonBase.js +192 -17
  109. package/components/v2/ButtonBase/Ripple.d.ts +2 -1
  110. package/components/v2/ButtonBase/Ripple.d.ts.map +1 -1
  111. package/components/v2/ButtonBase/hooks.d.ts +0 -1
  112. package/components/v2/ButtonBase/hooks.d.ts.map +1 -1
  113. package/components/v2/ButtonBase/hooks.js +36 -12
  114. package/components/v2/ButtonGroup/ButtonGroup.d.ts +11 -5
  115. package/components/v2/ButtonGroup/ButtonGroup.d.ts.map +1 -1
  116. package/components/v2/ButtonGroup/ButtonGroup.js +49 -26
  117. package/components/v2/CircularProgress/CircularProgress.d.ts.map +1 -1
  118. package/components/v2/CircularProgress/CircularProgress.js +10 -5
  119. package/core/helpers/getFullImageSource.d.ts +5 -1
  120. package/core/helpers/getFullImageSource.d.ts.map +1 -1
  121. package/core/helpers/getFullImageSource.js +30 -14
  122. package/core/helpers/i18n.d.ts +4 -0
  123. package/core/helpers/i18n.d.ts.map +1 -1
  124. package/core/helpers/i18n.js +3 -0
  125. package/core/hooks/html/useLoadImage.d.ts +3 -3
  126. package/core/hooks/html/useLoadImage.d.ts.map +1 -1
  127. package/core/hooks/html/useLoadImage.js +2 -2
  128. package/core/hooks/useLocalStorage.d.ts +8 -0
  129. package/core/hooks/useLocalStorage.d.ts.map +1 -1
  130. package/core/hooks/useLocalStorage.js +22 -15
  131. package/core/hooks/useNavigation.d.ts +10 -2
  132. package/core/hooks/useNavigation.d.ts.map +1 -1
  133. package/core/hooks/useNavigation.js +1 -2
  134. package/core/initialization/fetchSettings.d.ts +12 -0
  135. package/core/initialization/fetchSettings.d.ts.map +1 -0
  136. package/core/initialization/fetchSettings.js +134 -0
  137. package/core/initialization/index.d.ts +33 -2
  138. package/core/initialization/index.d.ts.map +1 -1
  139. package/core/initialization/index.js +44 -103
  140. package/core/router/conductor.d.ts +9 -0
  141. package/core/router/helpers.d.ts +28 -15
  142. package/core/router/helpers.d.ts.map +1 -1
  143. package/core/router/helpers.js +8 -8
  144. package/development/components/DevelopmentSettings/DevelopmentSettings.js +3 -3
  145. package/development/components/SimulatedInsets/SimulatedInsetBottom.js +3 -3
  146. package/development/components/SimulatedInsets/SimulatedInsetTop.js +2 -2
  147. package/favorites/components/FavoriteButtonWide/FavoriteButtonWide.js +7 -17
  148. package/favorites/components/Item/Item.d.ts +1 -1
  149. package/favorites/components/Item/Item.d.ts.map +1 -1
  150. package/favorites/components/Item/Item.js +7 -7
  151. package/favorites/components/List/List.d.ts +1 -1
  152. package/favorites/components/List/List.d.ts.map +1 -1
  153. package/favorites/components/List/List.js +0 -1
  154. package/favorites/components/List/ListContent.js +4 -5
  155. package/favorites/components/Lists/Lists.js +17 -6
  156. package/filter/components/FilterPageContent/components/ApplyButton/index.js +8 -10
  157. package/filter/components/FilterPageContent/components/ResetButton/index.js +8 -6
  158. package/filter/components/PriceSlider/index.js +6 -1
  159. package/locations/components/ChangeLocationButton/ChangeLocationButton.js +10 -14
  160. package/locations/components/FulfillmentSheet/FulfillmentSheetContent.js +4 -8
  161. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotDialog.js +4 -8
  162. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcher.js +1 -1
  163. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherBar.js +9 -18
  164. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherDefault.js +10 -10
  165. package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherBar.js +9 -19
  166. package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherDefault.js +9 -10
  167. package/locations/components/ReserveForm/ReserveForm.js +6 -7
  168. package/locations/components/StoreDetails/components/GetDirectionsButton.js +2 -4
  169. package/locations/components/StoreDetails/components/StoreDetails.js +5 -10
  170. package/locations/components/StoreDetails/components/StoresNearbyListItem.js +13 -21
  171. package/locations/components/StoreFinder/StoreFinderSelectLocationButton.js +5 -11
  172. package/locations/components/StoreFinder/StoreFinderStoreInfoButton.js +5 -11
  173. package/locations/components/StoreList/StoreListProduct.js +2 -3
  174. package/locations/components/StoreList/StoreListSearch.js +1 -0
  175. package/locations/components/StoreList/StoreSelectLocationButton.js +5 -11
  176. package/login/components/ForgotPassword/ForgotPassword.js +11 -23
  177. package/mocks/date.js +31 -0
  178. package/mocks/index.js +3 -0
  179. package/mocks/pipelineRequest.js +1 -0
  180. package/mocks/subscriptions.js +1 -0
  181. package/orders/components/OrderDetails/OrderDetailsAuthenticate.js +5 -7
  182. package/orders/components/OrderHistory/OrderHistoryList.d.ts.map +1 -1
  183. package/orders/components/OrderHistory/OrderHistoryList.js +8 -9
  184. package/orders/components/OrderHistory/OrderHistoryTable.d.ts.map +1 -1
  185. package/orders/components/OrderHistory/OrderHistoryTable.js +4 -0
  186. package/package.json +12 -12
  187. package/page/components/NotFound.d.ts +7 -0
  188. package/page/components/NotFound.d.ts.map +1 -0
  189. package/page/components/NotFound.js +8 -8
  190. package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.d.ts +52 -0
  191. package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.d.ts.map +1 -0
  192. package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.js +4 -4
  193. package/page/components/ResponsiveWidgetImage/index.d.ts +2 -0
  194. package/page/components/ResponsiveWidgetImage/index.d.ts.map +1 -0
  195. package/page/components/WidgetRichText/WidgetRichText.d.ts +25 -0
  196. package/page/components/WidgetRichText/WidgetRichText.d.ts.map +1 -0
  197. package/page/components/WidgetRichText/index.d.ts +2 -0
  198. package/page/components/WidgetRichText/index.d.ts.map +1 -0
  199. package/page/components/WidgetVideo/WidgetVideo.d.ts +43 -0
  200. package/page/components/WidgetVideo/WidgetVideo.d.ts.map +1 -0
  201. package/page/components/WidgetVideo/WidgetVideo.js +33 -39
  202. package/page/components/WidgetVideo/index.d.ts +2 -0
  203. package/page/components/WidgetVideo/index.d.ts.map +1 -0
  204. package/page/components/Widgets/Overlay.d.ts +17 -0
  205. package/page/components/Widgets/Overlay.d.ts.map +1 -0
  206. package/page/components/Widgets/Overlay.js +24 -38
  207. package/page/components/Widgets/Tooltip.d.ts +20 -0
  208. package/page/components/Widgets/Tooltip.d.ts.map +1 -0
  209. package/page/components/Widgets/Tooltip.js +6 -10
  210. package/page/components/Widgets/Widget.d.ts +32 -0
  211. package/page/components/Widgets/Widget.d.ts.map +1 -0
  212. package/page/components/Widgets/Widget.js +7 -18
  213. package/page/components/Widgets/WidgetContext.d.ts +32 -38
  214. package/page/components/Widgets/WidgetContext.d.ts.map +1 -0
  215. package/page/components/Widgets/WidgetContext.js +2 -8
  216. package/page/components/Widgets/WidgetProvider.d.ts +25 -0
  217. package/page/components/Widgets/WidgetProvider.d.ts.map +1 -0
  218. package/page/components/Widgets/WidgetProvider.js +5 -12
  219. package/page/components/Widgets/Widgets.d.ts +16 -0
  220. package/page/components/Widgets/Widgets.d.ts.map +1 -0
  221. package/page/components/Widgets/Widgets.js +5 -12
  222. package/page/components/Widgets/WidgetsPreviewContext.d.ts +21 -0
  223. package/page/components/Widgets/WidgetsPreviewContext.d.ts.map +1 -0
  224. package/page/components/Widgets/WidgetsPreviewContext.js +5 -7
  225. package/page/components/Widgets/WidgetsPreviewProvider.d.ts +18 -0
  226. package/page/components/Widgets/WidgetsPreviewProvider.d.ts.map +1 -0
  227. package/page/components/Widgets/WidgetsPreviewProvider.js +5 -6
  228. package/page/components/Widgets/constants.d.ts +5 -0
  229. package/page/components/Widgets/constants.d.ts.map +1 -0
  230. package/page/components/Widgets/constants.js +3 -1
  231. package/page/components/Widgets/events.d.ts +38 -0
  232. package/page/components/Widgets/events.d.ts.map +1 -0
  233. package/page/components/Widgets/events.js +8 -12
  234. package/page/components/Widgets/helpers.d.ts +50 -0
  235. package/page/components/Widgets/helpers.d.ts.map +1 -0
  236. package/page/components/Widgets/helpers.js +8 -13
  237. package/page/components/Widgets/hooks.d.ts +13 -0
  238. package/page/components/Widgets/hooks.d.ts.map +1 -0
  239. package/page/components/Widgets/hooks.js +13 -11
  240. package/page/components/Widgets/index.d.ts +3 -0
  241. package/page/components/Widgets/index.d.ts.map +1 -0
  242. package/page/components/Widgets/types.d.ts +111 -113
  243. package/page/components/Widgets/types.d.ts.map +1 -0
  244. package/page/components/Widgets/types.js +1 -0
  245. package/page/components/index.d.ts +5 -0
  246. package/page/components/index.d.ts.map +1 -0
  247. package/page/constants/actionTypes.d.ts +4 -0
  248. package/page/constants/actionTypes.d.ts.map +1 -0
  249. package/page/constants/index.d.ts +25 -0
  250. package/page/constants/index.d.ts.map +1 -0
  251. package/page/constants/index.js +5 -3
  252. package/page/helpers/index.d.ts +70 -62
  253. package/page/helpers/index.d.ts.map +1 -0
  254. package/page/helpers/index.js +31 -29
  255. package/page/hooks/index.d.ts +54 -53
  256. package/page/hooks/index.d.ts.map +1 -0
  257. package/page/hooks/index.js +20 -15
  258. package/page/selectors/index.d.ts +32 -0
  259. package/page/selectors/index.d.ts.map +1 -0
  260. package/page/widgets/Button/Button.js +2 -3
  261. package/page/widgets/NestedCategoryFilter/NestedCategoryFilter.js +8 -8
  262. package/page/widgets/ProductList/ProductList.js +18 -14
  263. package/page/widgets/ProductSlider/ProductSlider.js +1 -15
  264. package/page/widgets/Video/Video.d.ts +6 -0
  265. package/page/widgets/Video/Video.d.ts.map +1 -0
  266. package/page/widgets/Video/Video.js +0 -2
  267. package/page/widgets/Video/hooks.d.ts +53 -0
  268. package/page/widgets/Video/hooks.d.ts.map +1 -0
  269. package/page/widgets/Video/hooks.js +4 -12
  270. package/page/widgets/Video/index.d.ts +2 -0
  271. package/page/widgets/Video/index.d.ts.map +1 -0
  272. package/product/components/Description/index.js +0 -2
  273. package/product/components/FilterBar/components/Content/components/FilterButton/index.js +2 -6
  274. package/product/components/FilterBar/components/Content/components/Sort/index.js +1 -5
  275. package/product/components/Media/FeaturedMedia.js +7 -1
  276. package/product/components/Media/MediaImage.js +24 -23
  277. package/product/components/Media/MediaPlaceholder.js +4 -7
  278. package/product/components/MediaSlider/components/MediaImage/index.js +6 -2
  279. package/product/components/MediaSlider/constants.js +1 -12
  280. package/product/components/OrderQuantityHint/index.js +16 -1
  281. package/product/components/ProductCard/index.js +36 -23
  282. package/product/components/ProductGrid/components/Item/components/ItemDetails/index.js +12 -4
  283. package/product/components/ProductGrid/components/Item/components/ItemImage/index.js +3 -6
  284. package/product/components/ProductGrid/components/Item/components/ItemName/index.js +6 -1
  285. package/product/components/ProductGrid/components/Item/index.js +10 -2
  286. package/product/components/ProductGrid/components/Layout/index.js +19 -4
  287. package/product/components/ProductGrid/constants.d.ts +2 -0
  288. package/product/components/ProductGrid/constants.d.ts.map +1 -0
  289. package/product/components/ProductGrid/constants.js +1 -0
  290. package/product/components/ProductGrid/hooks.d.ts +11 -0
  291. package/product/components/ProductGrid/hooks.d.ts.map +1 -0
  292. package/product/components/ProductGrid/hooks.js +48 -0
  293. package/product/components/ProductGrid/index.js +3 -6
  294. package/product/components/ProductGridPrice/index.js +0 -1
  295. package/product/components/ProductImage/ProductImage.d.ts +42 -0
  296. package/product/components/ProductImage/ProductImage.d.ts.map +1 -0
  297. package/product/components/ProductImage/ProductImage.js +158 -0
  298. package/product/components/ProductImage/ProductImagePlaceholder.d.ts +23 -0
  299. package/product/components/ProductImage/ProductImagePlaceholder.d.ts.map +1 -0
  300. package/product/components/ProductImage/ProductImagePlaceholder.js +12 -17
  301. package/product/components/ProductImage/constants.d.ts +7 -0
  302. package/product/components/ProductImage/constants.d.ts.map +1 -0
  303. package/product/components/ProductImage/constants.js +6 -0
  304. package/product/components/ProductImage/hooks.d.ts +8 -0
  305. package/product/components/ProductImage/hooks.d.ts.map +1 -0
  306. package/product/components/ProductImage/hooks.js +32 -0
  307. package/product/components/ProductImage/index.d.ts +3 -0
  308. package/product/components/ProductImage/index.d.ts.map +1 -0
  309. package/product/components/ProductImage/index.js +1 -201
  310. package/product/components/ProductList/components/Item/index.js +5 -3
  311. package/product/components/ProductList/components/Layout/index.js +8 -20
  312. package/product/components/ProductName/ProductName.d.ts +1 -1
  313. package/product/components/ProductName/ProductName.d.ts.map +1 -1
  314. package/product/components/ProductName/ProductNameContent.d.ts +2 -1
  315. package/product/components/ProductName/ProductNameContent.d.ts.map +1 -1
  316. package/product/components/ProductRatingStars/ProductRatingStars.d.ts +1 -1
  317. package/product/components/ProductRatingStars/ProductRatingStars.js +2 -4
  318. package/product/components/ProductSlider/constants.d.ts +3 -0
  319. package/product/components/ProductSlider/constants.d.ts.map +1 -0
  320. package/product/components/ProductSlider/constants.js +2 -0
  321. package/product/components/ProductSlider/hooks.d.ts +7 -0
  322. package/product/components/ProductSlider/hooks.d.ts.map +1 -0
  323. package/product/components/ProductSlider/hooks.js +40 -0
  324. package/product/components/ProductSlider/index.js +8 -8
  325. package/product/components/Rating/index.js +2 -4
  326. package/product/components/RelationsSlider/RelationsSheet.js +1 -5
  327. package/product/components/RelationsSlider/RelationsSliderContent.js +3 -2
  328. package/product/components/RelationsSlider/constants.d.ts +3 -0
  329. package/product/components/RelationsSlider/constants.d.ts.map +1 -0
  330. package/product/components/RelationsSlider/constants.js +2 -1
  331. package/product/components/RelationsSlider/hooks.d.ts +6 -0
  332. package/product/components/RelationsSlider/hooks.d.ts.map +1 -0
  333. package/product/components/RelationsSlider/hooks.js +34 -0
  334. package/product/components/UnitQuantityPicker/UnitQuantityPicker.d.ts.map +1 -1
  335. package/product/components/UnitQuantityPicker/UnitQuantityPicker.js +16 -34
  336. package/product/helpers/index.js +29 -11
  337. package/product/hooks/index.js +3 -1
  338. package/product/hooks/useLoadProductImage.js +4 -2
  339. package/product/hooks/useShowEmptyRatingStars.d.ts +7 -0
  340. package/product/hooks/useShowEmptyRatingStars.d.ts.map +1 -0
  341. package/product/hooks/useShowEmptyRatingStars.js +21 -0
  342. package/product/index.js +0 -1
  343. package/product/selectors/mocks/productProperties.mock.js +49 -0
  344. package/push-opt-in/components/PushOptInModal/index.js +4 -4
  345. package/registration/components/Registration/RegistrationFormActions.js +4 -4
  346. package/reviews/components/Reviews/components/AllReviewsLink/index.js +6 -6
  347. package/reviews/components/Reviews/components/Header/components/WriteReviewLink/index.js +4 -3
  348. package/settings/action-creators/appSettings.d.ts +3 -3
  349. package/settings/action-creators/appSettings.d.ts.map +1 -1
  350. package/settings/constants/appSettings.d.ts +3 -0
  351. package/settings/constants/appSettings.d.ts.map +1 -1
  352. package/settings/constants/appSettings.js +6 -1
  353. package/settings/constants/imageSettings.d.ts +52 -0
  354. package/settings/constants/imageSettings.d.ts.map +1 -0
  355. package/settings/constants/imageSettings.js +69 -0
  356. package/settings/helpers/index.d.ts +3 -0
  357. package/settings/helpers/index.d.ts.map +1 -0
  358. package/settings/helpers/index.js +1 -0
  359. package/settings/helpers/resolveImageSettings.d.ts +70 -0
  360. package/settings/helpers/resolveImageSettings.d.ts.map +1 -0
  361. package/settings/helpers/resolveImageSettings.js +171 -0
  362. package/settings/helpers/toImageQuality.d.ts +7 -0
  363. package/settings/helpers/toImageQuality.d.ts.map +1 -0
  364. package/settings/helpers/toImageQuality.js +44 -0
  365. package/settings/helpers/toThumborColor.d.ts +15 -0
  366. package/settings/helpers/toThumborColor.d.ts.map +1 -0
  367. package/settings/helpers/toThumborColor.js +51 -0
  368. package/settings/hooks/index.d.ts +2 -0
  369. package/settings/hooks/index.d.ts.map +1 -0
  370. package/settings/hooks/index.js +1 -0
  371. package/settings/hooks/useImageSettings.d.ts +28 -0
  372. package/settings/hooks/useImageSettings.d.ts.map +1 -0
  373. package/settings/hooks/useImageSettings.js +39 -0
  374. package/settings/reducers/appSettings.d.ts.map +1 -1
  375. package/settings/reducers/appSettings.js +100 -8
  376. package/settings/reducers/index.d.ts +3 -3
  377. package/settings/selectors/appSettings.d.ts +114 -1
  378. package/settings/selectors/appSettings.d.ts.map +1 -1
  379. package/settings/selectors/appSettings.js +75 -1
  380. package/settings/types/appSettings.d.ts +244 -0
  381. package/settings/types/appSettings.d.ts.map +1 -1
  382. package/settings/types/appSettings.js +124 -1
  383. package/styles/helpers/index.d.ts +2 -0
  384. package/styles/helpers/index.js +2 -0
  385. package/styles/helpers/loadFontCss.d.ts +22 -0
  386. package/styles/helpers/loadFontCss.d.ts.map +1 -0
  387. package/styles/helpers/loadFontCss.js +138 -0
  388. package/styles/helpers/loadThemeCss.d.ts +14 -0
  389. package/styles/helpers/loadThemeCss.d.ts.map +1 -0
  390. package/styles/helpers/loadThemeCss.js +123 -0
  391. package/styles/index.d.ts +1 -1
  392. package/styles/index.d.ts.map +1 -1
  393. package/styles/index.js +1 -1
  394. package/styles/reset/root.js +23 -4
  395. package/styles/reset/typographyCustomProps.d.ts +12 -0
  396. package/styles/reset/typographyCustomProps.d.ts.map +1 -0
  397. package/styles/reset/typographyCustomProps.js +11 -0
  398. package/styles/theme/createDefaultThemeOptions/index.d.ts.map +1 -1
  399. package/styles/theme/createDefaultThemeOptions/index.js +107 -4
  400. package/styles/theme/createTheme/createComponents.d.ts +2 -2
  401. package/styles/theme/createTheme/createComponents.d.ts.map +1 -1
  402. package/styles/theme/createTheme/createComponents.js +0 -1
  403. package/styles/theme/createTheme/createComponents.types.d.ts +117 -0
  404. package/styles/theme/createTheme/createComponents.types.d.ts.map +1 -1
  405. package/styles/theme/createTheme/createComponents.types.js +119 -2
  406. package/styles/theme/createTheme/createCssVarsForColorSchemeThemes.d.ts.map +1 -1
  407. package/styles/theme/createTheme/createCssVarsForColorSchemeThemes.js +13 -3
  408. package/styles/theme/createTheme/createPalette.types.d.ts +5 -0
  409. package/styles/theme/createTheme/createPalette.types.d.ts.map +1 -1
  410. package/styles/theme/createTheme/createPalette.types.js +7 -2
  411. package/styles/theme/createTheme/createShape.d.ts +3 -0
  412. package/styles/theme/createTheme/createShape.d.ts.map +1 -1
  413. package/styles/theme/createTheme/createSpacing.js +4 -1
  414. package/styles/theme/createTheme/createThemeFromColorScheme.d.ts +4 -2
  415. package/styles/theme/createTheme/createThemeFromColorScheme.d.ts.map +1 -1
  416. package/styles/theme/createTheme/createThemeFromColorScheme.js +6 -3
  417. package/styles/theme/createTheme/createTypography.d.ts +2 -1
  418. package/styles/theme/createTheme/createTypography.js +59 -18
  419. package/styles/theme/createTheme/helpers/cssVarsParser.d.ts.map +1 -1
  420. package/styles/theme/createTheme/helpers/cssVarsParser.js +10 -3
  421. package/styles/theme/createTheme/index.d.ts +2 -1
  422. package/styles/theme/createTheme/index.d.ts.map +1 -1
  423. package/styles/theme/createTheme/index.js +5 -2
  424. package/styles/theme/createTheme/layout.d.ts +23 -0
  425. package/styles/theme/createTheme/layout.d.ts.map +1 -0
  426. package/styles/theme/createTheme/layout.js +20 -0
  427. package/styles/theme/createTheme/shadows.d.ts +11 -1
  428. package/styles/theme/createTheme/shadows.d.ts.map +1 -1
  429. package/styles/theme/createTheme/shadows.js +41 -7
  430. package/styles/theme/createTheme/transitions.d.ts +4 -0
  431. package/styles/theme/createTheme/transitions.js +3 -1
  432. package/styles/theme/createTheme/types.d.ts +41 -9
  433. package/styles/theme/createTheme/types.d.ts.map +1 -1
  434. package/styles/theme/createTheme/types.js +16 -4
  435. package/styles/theme/hocs/index.d.ts +2 -0
  436. package/styles/theme/hocs/index.d.ts.map +1 -0
  437. package/styles/theme/hocs/index.js +1 -0
  438. package/styles/theme/hocs/withTheme.d.ts +21 -0
  439. package/styles/theme/hocs/withTheme.d.ts.map +1 -0
  440. package/styles/theme/hocs/withTheme.js +33 -0
  441. package/styles/theme/hooks/useColorScheme.d.ts +4 -3
  442. package/styles/theme/hooks/useColorScheme.d.ts.map +1 -1
  443. package/styles/theme/hooks/useColorScheme.js +4 -3
  444. package/styles/theme/hooks/useMediaQuery.d.ts +7 -0
  445. package/styles/theme/hooks/useMediaQuery.d.ts.map +1 -1
  446. package/styles/theme/hooks/useMediaQuery.js +5 -5
  447. package/styles/theme/hooks/useTheme.js +1 -1
  448. package/styles/theme/index.d.ts +5 -1
  449. package/styles/theme/index.d.ts.map +1 -1
  450. package/styles/theme/index.js +2 -1
  451. package/styles/theme/providers/ActiveBreakpointProvider.d.ts +1 -1
  452. package/styles/theme/providers/ColorSchemeContext.d.ts +40 -0
  453. package/styles/theme/providers/ColorSchemeContext.d.ts.map +1 -0
  454. package/styles/theme/providers/ColorSchemeContext.js +14 -0
  455. package/styles/theme/providers/ThemeContext.d.ts +3 -0
  456. package/styles/theme/providers/ThemeContext.d.ts.map +1 -0
  457. package/styles/theme/providers/ThemeContext.js +2 -0
  458. package/styles/theme/providers/ThemeProvider.d.ts +4 -14
  459. package/styles/theme/providers/ThemeProvider.d.ts.map +1 -1
  460. package/styles/theme/providers/ThemeProvider.js +88 -26
  461. package/styles/theme/utils/color.d.ts +12 -12
  462. package/styles/theme/utils/color.d.ts.map +1 -1
  463. package/tracking/components/CookieConsentModal/index.js +3 -4
  464. package/tracking/components/PrivacySettings/index.js +3 -3
  465. package/cart/components/PaymentBar/PaymentBarReserveButton.connector.js +0 -6
  466. package/cart/components/PaymentBar/PaymentBarReserveButton.js +0 -71
  467. package/components/ChipLayout/spec.js +0 -41
  468. package/components/Logo/spec.js +0 -12
  469. package/components/NavigationHandler/spec.js +0 -84
  470. package/components/Picker/spec.js +0 -94
  471. package/components/PickerUtilize/spec.js +0 -35
  472. package/components/RangeSlider/spec.js +0 -190
  473. package/components/SheetList/components/Item/spec.js +0 -101
  474. package/components/SheetList/spec.js +0 -43
  475. package/components/TimeBoundary/spec.js +0 -83
  476. package/filter/components/FilterItem/spec.js +0 -14
  477. package/filter/components/FilterPageContent/components/ApplyButton/spec.js +0 -46
  478. package/filter/components/FilterPageContent/components/ResetButton/spec.js +0 -29
  479. package/filter/components/FilterPageContent/components/Selector/components/Selected/spec.js +0 -26
  480. package/filter/components/FilterPageContent/components/Selector/components/Toggle/spec.js +0 -34
  481. package/filter/components/FilterPageContent/components/Selector/components/ValueButton/spec.js +0 -32
  482. package/filter/components/FilterPageContent/components/Selector/spec.js +0 -33
  483. package/filter/components/PriceSlider/components/Label/spec.js +0 -26
  484. package/filter/components/PriceSlider/spec.js +0 -30
  485. package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.connector.js +0 -16
  486. package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.js +0 -52
  487. package/product/collections/index.js +0 -1
  488. package/product/components/EffectivityDates/constants.d.ts +0 -3
  489. package/product/components/EffectivityDates/constants.d.ts.map +0 -1
  490. package/product/components/EffectivityDates/helpers.d.ts +0 -6
  491. package/product/components/EffectivityDates/helpers.d.ts.map +0 -1
  492. package/product/components/FilterBar/components/Content/spec.js +0 -136
  493. package/product/components/Header/Shipping/spec.js +0 -36
  494. package/product/components/Header/Tiers/components/Tier/spec.js +0 -48
  495. package/product/components/Header/Tiers/spec.js +0 -64
  496. package/product/components/Media/helpers.d.ts +0 -2
  497. package/product/components/Media/helpers.d.ts.map +0 -1
  498. package/product/components/Options/components/Content/spec.js +0 -73
  499. package/product/components/Options/components/TextOption/components/OptionInfo/spec.js +0 -72
  500. package/product/components/ProductDiscountBadge/spec.js +0 -58
  501. package/product/components/ProductGrid/components/Item/components/ItemDetails/spec.js +0 -73
  502. package/product/components/ProductGrid/components/Item/components/ItemFavoritesButton/spec.js +0 -33
  503. package/product/components/ProductGrid/components/Item/components/ItemImage/spec.js +0 -16
  504. package/product/components/ProductGrid/components/Item/components/ItemName/spec.js +0 -21
  505. package/product/components/ProductGrid/components/Item/components/ItemPrice/spec.js +0 -37
  506. package/product/components/ProductGrid/spec.js +0 -52
  507. package/product/components/ProductImage/connector.js +0 -12
  508. package/product/components/ProductImage/spec.js +0 -87
  509. package/product/components/ProductSlider/spec.js +0 -37
  510. package/product/components/Rating/spec.js +0 -58
  511. package/product/helpers/index.d.ts +0 -13
  512. package/product/helpers/index.d.ts.map +0 -1
  513. package/product/helpers/redirects.d.ts +0 -2
  514. package/product/helpers/redirects.d.ts.map +0 -1
  515. package/product/selectors/helpers/filterProperties.d.ts +0 -8
  516. package/product/selectors/helpers/filterProperties.d.ts.map +0 -1
  517. package/product/selectors/helpers/index.d.ts +0 -3
  518. package/product/selectors/helpers/index.d.ts.map +0 -1
  519. package/product/selectors/helpers/wrapMemoizedSelector.d.ts +0 -2
  520. package/product/selectors/helpers/wrapMemoizedSelector.d.ts.map +0 -1
  521. package/product/selectors/product.d.ts +0 -112
  522. package/product/selectors/product.d.ts.map +0 -1
  523. package/reviews/components/Reviews/components/Header/components/WriteReviewLink/spec.js +0 -52
  524. package/reviews/components/Reviews/components/Header/spec.js +0 -78
  525. package/reviews/components/Reviews/components/List/spec.js +0 -108
  526. package/reviews/components/Reviews/components/RatingCount/spec.js +0 -38
  527. package/reviews/components/Reviews/spec.js +0 -101
  528. package/tsconfig.build.json +0 -26
  529. package/tsconfig.json +0 -19
@@ -0,0 +1,158 @@
1
+ import { useLayoutEffect, useMemo, memo } from 'react';
2
+ import { useSelector } from 'react-redux';
3
+ import { logger } from '@shopgate/pwa-core';
4
+ import Image from '@shopgate/pwa-common/components/Image';
5
+ import PlaceholderIcon from '@shopgate/pwa-ui-shared/icons/PlaceholderIcon';
6
+ import SurroundPortals from '@shopgate/pwa-common/components/SurroundPortals';
7
+ import { makeStyles, useTheme } from '@shopgate/engage/styles';
8
+ import { useProductImageSettings } from '@shopgate/engage/settings/hooks';
9
+ import { getProductImagePlaceholder } from '@shopgate/engage/settings/selectors/shopSettings';
10
+ import { PORTAL_PRODUCT_IMAGE } from "../../../components/constants";
11
+ import ProductImagePlaceholder from "./ProductImagePlaceholder";
12
+ import { useProductImageShadow } from "./hooks";
13
+ import { jsx as _jsx } from "react/jsx-runtime";
14
+ const placeholderIconScale = 0.65;
15
+
16
+ /**
17
+ * The context applied when a caller passes neither a context nor explicit resolutions.
18
+ */
19
+ const DEFAULT_PRODUCT_IMAGE_CONTEXT = 'list';
20
+
21
+ /**
22
+ * The resolutions and aspect ratio the image is rendered with.
23
+ */
24
+
25
+ /**
26
+ * Everything the underlying Image accepts is forwarded, minus the two this component owns:
27
+ * `backgroundColor`, derived from `noBackground`, and `placeholder`.
28
+ */
29
+
30
+ const useStyles = makeStyles()(theme => ({
31
+ rounded: {
32
+ borderRadius: theme.components.productImage.borderRadius,
33
+ overflow: 'hidden'
34
+ },
35
+ placeholderContent: {
36
+ position: 'absolute',
37
+ width: '100%',
38
+ height: '100%',
39
+ top: 0,
40
+ textAlign: 'center'
41
+ },
42
+ placeholder: {
43
+ position: 'absolute',
44
+ width: `${placeholderIconScale * 100}% !important`,
45
+ height: `${placeholderIconScale * 100}% !important`,
46
+ top: `${(1.0 - placeholderIconScale) * 50}%`,
47
+ left: `${(1.0 - placeholderIconScale) * 50}%`,
48
+ color: theme.palette.background.emphasized
49
+ },
50
+ innerShadow: {
51
+ position: 'relative',
52
+ overflow: 'hidden',
53
+ ':after': {
54
+ display: 'block',
55
+ content: '""',
56
+ position: 'absolute',
57
+ top: 0,
58
+ right: 0,
59
+ bottom: 0,
60
+ left: 0,
61
+ boxShadow: 'inset 0 0 20px rgba(0, 0, 0, .05)',
62
+ pointerEvents: 'none'
63
+ }
64
+ }
65
+ }));
66
+
67
+ /**
68
+ * The product image component.
69
+ *
70
+ * Behaves like the core Image component, with a product placeholder for a missing or failed image.
71
+ * @param props The component props.
72
+ * @returns The rendered component.
73
+ */
74
+ const ProductImage = props => {
75
+ const {
76
+ alt = null,
77
+ className = null,
78
+ context = null,
79
+ noBackground = false,
80
+ placeholderSrc = null,
81
+ ratio = null,
82
+ resolutions = null,
83
+ src = null
84
+ } = props;
85
+ const productImageSettings = useProductImageSettings();
86
+
87
+ // An explicit resolutions prop wins over the context, which is only consulted without one.
88
+ const resolved = useMemo(() => {
89
+ if (resolutions) {
90
+ return {
91
+ resolutions,
92
+ ratio
93
+ };
94
+ }
95
+ return productImageSettings[context || DEFAULT_PRODUCT_IMAGE_CONTEXT] ?? productImageSettings[DEFAULT_PRODUCT_IMAGE_CONTEXT];
96
+ }, [context, productImageSettings, ratio, resolutions]);
97
+ useLayoutEffect(() => {
98
+ logger.assert(!(resolutions && context), 'ProductImage received both "resolutions" and "context". The explicit resolutions win - drop one of them.');
99
+ /* eslint-disable-next-line react-hooks/exhaustive-deps -- legacy: assert once at mount */
100
+ }, []);
101
+ const {
102
+ classes,
103
+ cx
104
+ } = useStyles();
105
+ const theme = useTheme();
106
+ const showInnerShadow = useProductImageShadow();
107
+ const isRounded = (context || DEFAULT_PRODUCT_IMAGE_CONTEXT) === 'list';
108
+
109
+ // Image decides when to show this.
110
+ const placeholder = placeholderSrc ? /*#__PURE__*/_jsx(ProductImagePlaceholder, {
111
+ src: placeholderSrc,
112
+ showInnerShadow: showInnerShadow,
113
+ noBackground: noBackground
114
+ }) : /*#__PURE__*/_jsx("div", {
115
+ "aria-hidden": true,
116
+ className: classes.placeholderContent,
117
+ "data-test-id": "placeHolder",
118
+ children: /*#__PURE__*/_jsx(PlaceholderIcon, {
119
+ className: classes.placeholder
120
+ })
121
+ });
122
+ return /*#__PURE__*/_jsx(SurroundPortals, {
123
+ portalName: PORTAL_PRODUCT_IMAGE,
124
+ portalProps: src ? {
125
+ src,
126
+ resolutions: resolved.resolutions,
127
+ ratio: resolved.ratio
128
+ } : undefined,
129
+ children: /*#__PURE__*/_jsx("div", {
130
+ className: cx(isRounded && classes.rounded, className, 'engage__product__product-image'),
131
+ children: /*#__PURE__*/_jsx(Image, {
132
+ ...props,
133
+ resolutions: resolved.resolutions,
134
+ ratio: resolved.ratio,
135
+ placeholder: placeholder,
136
+ className: showInnerShadow ? classes.innerShadow : '',
137
+ backgroundColor: noBackground ? 'transparent' : theme.palette.common.white,
138
+ "aria-hidden": !alt
139
+ })
140
+ })
141
+ });
142
+ };
143
+ export { ProductImage as UnwrappedProductImage };
144
+
145
+ /**
146
+ * Supplies the shop wide placeholder image.
147
+ * @param props The component props.
148
+ * @returns The rendered component.
149
+ */
150
+ const ConnectedProductImage = props => {
151
+ // The shop wide placeholder takes precedence over a passed one.
152
+ const placeholderSrc = useSelector(getProductImagePlaceholder) ?? props.placeholderSrc ?? null;
153
+ return /*#__PURE__*/_jsx(ProductImage, {
154
+ ...props,
155
+ placeholderSrc: placeholderSrc
156
+ });
157
+ };
158
+ export default /*#__PURE__*/memo(ConnectedProductImage);
@@ -0,0 +1,23 @@
1
+ export interface ProductImagePlaceholderProps {
2
+ /**
3
+ * Drops the background behind the placeholder.
4
+ */
5
+ noBackground?: boolean;
6
+ /**
7
+ * Whether the placeholder gets an inset shadow, matching the image it stands in for.
8
+ */
9
+ showInnerShadow?: boolean;
10
+ /**
11
+ * The merchant configured placeholder image. While it loads, and when it is absent, the
12
+ * built-in icon is shown instead.
13
+ */
14
+ src?: string | null;
15
+ }
16
+ /**
17
+ * The ProductImagePlaceholder component.
18
+ * @param props The components props.
19
+ * @returns The rendered component.
20
+ */
21
+ declare const ProductImagePlaceholder: (props: ProductImagePlaceholderProps) => import("react").JSX.Element;
22
+ export default ProductImagePlaceholder;
23
+ //# sourceMappingURL=ProductImagePlaceholder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductImagePlaceholder.d.ts","sourceRoot":"","sources":["../../../../product/components/ProductImage/ProductImagePlaceholder.tsx"],"names":[],"mappings":"AAMA,MAAM,WAAW,4BAA4B;IAC3C;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAqCD;;;;GAIG;AACH,QAAA,MAAM,uBAAuB,GAAI,OAAO,4BAA4B,gCAwCnE,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -1,5 +1,4 @@
1
- import React, { useEffect, useMemo, useState } from 'react';
2
- import PropTypes from 'prop-types';
1
+ import { useEffect, useMemo, useState } from 'react';
3
2
  import PlaceholderIcon from '@shopgate/pwa-ui-shared/icons/PlaceholderIcon';
4
3
  import { makeStyles, useTheme } from '@shopgate/engage/styles';
5
4
  import { useLoadImage } from '@shopgate/engage/core';
@@ -40,14 +39,15 @@ const useStyles = makeStyles()(theme => ({
40
39
 
41
40
  /**
42
41
  * The ProductImagePlaceholder component.
43
- * @param {Object} props The components props.
44
- * @returns {JSX}
42
+ * @param props The components props.
43
+ * @returns The rendered component.
45
44
  */
46
- const ProductImagePlaceholder = ({
47
- src,
48
- showInnerShadow,
49
- noBackground
50
- }) => {
45
+ const ProductImagePlaceholder = props => {
46
+ const {
47
+ src = null,
48
+ showInnerShadow = false,
49
+ noBackground = false
50
+ } = props;
51
51
  const {
52
52
  classes,
53
53
  cx
@@ -65,14 +65,14 @@ const ProductImagePlaceholder = ({
65
65
  backgroundSize: 'contain',
66
66
  backgroundRepeat: 'no-repeat',
67
67
  backgroundPosition: 'center',
68
- backgroundColor: noBackground ? 'transparent' : theme.palette.background.surface,
68
+ backgroundColor: noBackground ? 'transparent' : theme.palette.common.white,
69
69
  position: 'absolute'
70
70
  };
71
71
  }
72
72
  return {
73
- backgroundColor: noBackground ? 'transparent' : theme.palette.background.surface
73
+ backgroundColor: noBackground ? 'transparent' : theme.palette.common.white
74
74
  };
75
- }, [srcLoaded, noBackground, theme.palette.background.surface, src]);
75
+ }, [srcLoaded, noBackground, theme.palette.common.white, src]);
76
76
  const contentClasses = cx(classes.placeholderContent, {
77
77
  [classes.innerShadow]: showInnerShadow
78
78
  });
@@ -85,9 +85,4 @@ const ProductImagePlaceholder = ({
85
85
  }), !showPlaceholder && ' ']
86
86
  });
87
87
  };
88
- ProductImagePlaceholder.defaultProps = {
89
- src: null,
90
- noBackground: false,
91
- showInnerShadow: false
92
- };
93
88
  export default ProductImagePlaceholder;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The widget id the legacy inner shadow setting is configured under.
3
+ *
4
+ * Extracted so the resolution hook can read it without importing the component.
5
+ */
6
+ export declare const WIDGET_ID = "@shopgate/engage/product/ProductImage";
7
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../product/components/ProductImage/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,SAAS,0CAA0C,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The widget id the legacy inner shadow setting is configured under.
3
+ *
4
+ * Extracted so the resolution hook can read it without importing the component.
5
+ */
6
+ export const WIDGET_ID = '@shopgate/engage/product/ProductImage';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Resolves whether product images render with an inset shadow.
3
+ * @param widgetId The widget id the legacy setting is configured under, for the product image
4
+ * components that have their own.
5
+ * @returns Whether to render the shadow.
6
+ */
7
+ export declare const useProductImageShadow: (widgetId?: string) => boolean;
8
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../../product/components/ProductImage/hooks.ts"],"names":[],"mappings":"AAYA;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,WAAU,MAAkB,KAAG,OAiBpE,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { useMemo } from 'react';
2
+ import { useSelector } from 'react-redux';
3
+ // Imported via its module path rather than the "core/hooks" barrel, to keep this out of the
4
+ // import cycle the barrel pulls in.
5
+ import { useWidgetSettings } from '@shopgate/engage/core/hooks/useWidgetSettings';
6
+ import { getAreAppSettingsHydrated, getImageSettings } from '@shopgate/engage/settings/selectors/appSettings';
7
+ import { DEFAULT_SHOW_INNER_SHADOW } from '@shopgate/engage/settings/constants/imageSettings';
8
+ import { WIDGET_ID } from "./constants";
9
+
10
+ /**
11
+ * Resolves whether product images render with an inset shadow.
12
+ * @param widgetId The widget id the legacy setting is configured under, for the product image
13
+ * components that have their own.
14
+ * @returns Whether to render the shadow.
15
+ */
16
+ export const useProductImageShadow = (widgetId = WIDGET_ID) => {
17
+ const areAppSettingsHydrated = useSelector(getAreAppSettingsHydrated);
18
+ const configured = useSelector(getImageSettings)?.product?.showInnerShadow;
19
+ const {
20
+ showInnerShadow: legacy
21
+ } = useWidgetSettings(widgetId) || {};
22
+ return useMemo(() => {
23
+ if (areAppSettingsHydrated) {
24
+ return configured ?? DEFAULT_SHOW_INNER_SHADOW;
25
+ }
26
+
27
+ // Until a source hydrates the app settings the legacy widget configuration wins, and failing
28
+ // that the built-in default, which is derived from the legacy app config flag so that each
29
+ // theme keeps its own behavior.
30
+ return legacy ?? DEFAULT_SHOW_INNER_SHADOW;
31
+ }, [areAppSettingsHydrated, configured, legacy]);
32
+ };
@@ -0,0 +1,3 @@
1
+ export { default } from './ProductImage';
2
+ export type { ProductImageProps } from './ProductImage';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../product/components/ProductImage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,201 +1 @@
1
- import React, { useState, useEffect, useLayoutEffect, useCallback, memo } from 'react';
2
- import PropTypes from 'prop-types';
3
- import { logger } from '@shopgate/pwa-core';
4
- import appConfig from '@shopgate/pwa-common/helpers/config';
5
- import Image from '@shopgate/pwa-common/components/Image';
6
- import PlaceholderIcon from '@shopgate/pwa-ui-shared/icons/PlaceholderIcon';
7
- import SurroundPortals from '@shopgate/pwa-common/components/SurroundPortals';
8
- import { makeStyles, useTheme } from '@shopgate/engage/styles';
9
- import { withWidgetSettings } from "../../../core/hocs/withWidgetSettings";
10
- import { PORTAL_PRODUCT_IMAGE } from "../../../components/constants";
11
- import ProductImagePlaceholder from "./ProductImagePlaceholder";
12
- import connect from "./connector";
13
- import { jsx as _jsx } from "react/jsx-runtime";
14
- const placeholderIconScale = 0.65;
15
-
16
- /**
17
- * Derives the image aspect ratio from explicit ratio props or the largest resolution.
18
- * @param {Object} props The component props.
19
- * @param {number[]} [props.ratio] Optional width/height ratio tuple.
20
- * @param {Array<{ width: number, height: number }>} props.resolutions Available image resolutions.
21
- * @returns {string} The computed ratio as a fixed decimal string.
22
- */
23
- const getImageRatio = ({
24
- ratio,
25
- resolutions
26
- } = {}) => {
27
- if (Array.isArray(ratio) && ratio.length === 2 && ratio[0]) {
28
- const [x, y] = ratio;
29
- return (y / x).toFixed(3);
30
- }
31
- if (Array.isArray(resolutions) && resolutions.length > 0) {
32
- const {
33
- width,
34
- height
35
- } = resolutions[resolutions.length - 1];
36
- if (width && height) {
37
- return (height / width).toFixed(3);
38
- }
39
- }
40
- return '1.000';
41
- };
42
- const useStyles = makeStyles()((theme, {
43
- ratio
44
- }) => ({
45
- placeholderContainer: {
46
- position: 'relative',
47
- width: '100%',
48
- ':before': {
49
- display: 'block',
50
- content: '""',
51
- width: '100%',
52
- paddingTop: `${100 * ratio}%`
53
- }
54
- },
55
- placeholderContent: {
56
- position: 'absolute',
57
- width: '100%',
58
- height: '100%',
59
- top: 0,
60
- textAlign: 'center'
61
- },
62
- placeholder: {
63
- position: 'absolute',
64
- width: `${placeholderIconScale * 100}% !important`,
65
- height: `${placeholderIconScale * 100}% !important`,
66
- top: `${(1.0 - placeholderIconScale) * 50}%`,
67
- left: `${(1.0 - placeholderIconScale) * 50}%`,
68
- color: theme.palette.background.emphasized
69
- },
70
- innerShadow: {
71
- position: 'relative',
72
- overflow: 'hidden',
73
- ':after': {
74
- display: 'block',
75
- content: '""',
76
- position: 'absolute',
77
- top: 0,
78
- right: 0,
79
- bottom: 0,
80
- left: 0,
81
- boxShadow: 'inset 0 0 20px rgba(0, 0, 0, .05)',
82
- pointerEvents: 'none'
83
- }
84
- }
85
- }));
86
-
87
- /**
88
- * The product image component.
89
- * This component will behave like the core Image component with the additional
90
- * feature of showing a placeholder in case no src property has been passed
91
- * or the given source image cannot be loaded.
92
- * @param {Object} props Props.
93
- * @returns {JSX.Element}
94
- */
95
- const ProductImage = props => {
96
- const {
97
- alt,
98
- className,
99
- noBackground,
100
- placeholderSrc,
101
- ratio,
102
- resolutions,
103
- src,
104
- srcmap,
105
- widgetSettings
106
- } = props;
107
- const ratioValue = Number.parseFloat(getImageRatio({
108
- ratio,
109
- resolutions
110
- })) || 1;
111
- const {
112
- classes,
113
- cx
114
- } = useStyles({
115
- ratio: ratioValue
116
- });
117
- const theme = useTheme();
118
- const [showPlaceholder, setShowPlaceholder] = useState(!src && (srcmap === null || srcmap.length === 0));
119
- const [imageLoadingFailed, setImageLoadingFailed] = useState(false);
120
- useLayoutEffect(() => {
121
- logger.assert(!srcmap, 'Use of srcmap prop is deprecated. Use resolutions instead');
122
- /* eslint-disable-next-line react-hooks/exhaustive-deps -- legacy: assert once at mount */
123
- }, []);
124
- useEffect(() => {
125
- const nextShowPlaceholder = !src && (!srcmap || srcmap.length === 0);
126
- setShowPlaceholder(nextShowPlaceholder);
127
- }, [src, srcmap]);
128
- const imageLoadingFailedHandler = useCallback(() => {
129
- setShowPlaceholder(true);
130
- setImageLoadingFailed(true);
131
- }, []);
132
- let {
133
- showInnerShadow
134
- } = widgetSettings;
135
- if (typeof showInnerShadow === 'undefined') {
136
- showInnerShadow = !appConfig.hideProductImageShadow;
137
- }
138
- if (imageLoadingFailed || showPlaceholder) {
139
- return /*#__PURE__*/_jsx(SurroundPortals, {
140
- portalName: PORTAL_PRODUCT_IMAGE,
141
- children: /*#__PURE__*/_jsx("div", {
142
- className: cx(classes.placeholderContainer, {
143
- [classes.innerShadow]: showInnerShadow,
144
- [className]: !!className
145
- }),
146
- children: placeholderSrc ? /*#__PURE__*/_jsx(ProductImagePlaceholder, {
147
- src: placeholderSrc,
148
- showInnerShadow: showInnerShadow,
149
- noBackground: noBackground
150
- }) : /*#__PURE__*/_jsx("div", {
151
- "aria-hidden": true,
152
- className: classes.placeholderContent,
153
- "data-test-id": "placeHolder",
154
- children: /*#__PURE__*/_jsx(PlaceholderIcon, {
155
- className: classes.placeholder
156
- })
157
- })
158
- })
159
- });
160
- }
161
- return /*#__PURE__*/_jsx(SurroundPortals, {
162
- portalName: PORTAL_PRODUCT_IMAGE,
163
- portalProps: {
164
- src,
165
- resolutions
166
- },
167
- children: /*#__PURE__*/_jsx("div", {
168
- className: cx(className, 'engage__product__product-image'),
169
- children: /*#__PURE__*/_jsx(Image, {
170
- ...props,
171
- className: showInnerShadow ? classes.innerShadow : '',
172
- backgroundColor: noBackground ? 'transparent' : theme.palette.background.surface,
173
- onError: imageLoadingFailedHandler,
174
- "aria-hidden": !alt
175
- })
176
- })
177
- });
178
- };
179
- ProductImage.defaultProps = {
180
- alt: null,
181
- animating: true,
182
- className: null,
183
- forcePlaceholder: false,
184
- highestResolutionLoaded: () => {},
185
- noBackground: false,
186
- ratio: null,
187
- resolutions: [{
188
- width: 50,
189
- height: 50,
190
- blur: 2
191
- }, {
192
- width: 440,
193
- height: 440
194
- }],
195
- src: null,
196
- srcmap: null,
197
- placeholderSrc: null,
198
- widgetSettings: {}
199
- };
200
- export { ProductImage as UnwrappedProductImage };
201
- export default connect(withWidgetSettings(/*#__PURE__*/memo(ProductImage), '@shopgate/engage/product/ProductImage'));
1
+ export { default } from "./ProductImage";
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { Image, Link, Grid, Availability } from '@shopgate/engage/components';
3
+ import { Link, Grid, Availability } from '@shopgate/engage/components';
4
4
  import { bin2hex } from '@shopgate/pwa-common/helpers/data';
5
5
  import Portal from '@shopgate/pwa-common/components/Portal';
6
6
  import * as portals from '@shopgate/pwa-common-commerce/category/constants/Portals';
@@ -12,6 +12,7 @@ import Manufacturer from '@shopgate/pwa-ui-shared/Manufacturer';
12
12
  import { PriceInfo, ProductName, ProductBadges } from '@shopgate/engage/product';
13
13
  import { i18n } from '@shopgate/engage/core/helpers';
14
14
  import { makeStyles } from '@shopgate/engage/styles';
15
+ import ProductImage from "../../../ProductImage";
15
16
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
16
17
  const useStyles = makeStyles()(theme => ({
17
18
  listItemContainer: {
@@ -92,10 +93,11 @@ const Item = ({
92
93
  props: {
93
94
  productId: product.id
94
95
  },
95
- children: /*#__PURE__*/_jsx(Image, {
96
+ children: /*#__PURE__*/_jsx(ProductImage, {
96
97
  itemProp: "image",
97
98
  src: product.featuredImageBaseUrl,
98
- alt: product.name
99
+ alt: product.name,
100
+ context: "list"
99
101
  })
100
102
  }), /*#__PURE__*/_jsx(Portal, {
101
103
  name: portals.PRODUCT_ITEM_IMAGE_AFTER,
@@ -1,34 +1,22 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import List from '@shopgate/pwa-common/components/List';
4
- import { makeStyles } from '@shopgate/engage/styles';
5
- import { jsx as _jsx } from "react/jsx-runtime";
6
- const useStyles = makeStyles()(theme => ({
7
- list: {
8
- background: theme.palette.background.surface
9
- }
10
- }));
11
4
 
12
5
  /**
13
6
  * The Product List Layout component.
14
7
  * @param {Object} props The component props.
15
8
  * @return {JSX}
16
9
  */
10
+ import { jsx as _jsx } from "react/jsx-runtime";
17
11
  const Layout = ({
18
12
  children
19
- }) => {
20
- const {
21
- classes,
22
- cx
23
- } = useStyles();
24
- return /*#__PURE__*/_jsx(List, {
25
- className: cx(classes.list, 'engage__product__product-list'),
26
- itemScope: true,
27
- itemType: "http://schema.org/ItemList",
28
- "data-test-id": "productList",
29
- children: children
30
- });
31
- };
13
+ }) => /*#__PURE__*/_jsx(List, {
14
+ className: "engage__product__product-list",
15
+ itemScope: true,
16
+ itemType: "http://schema.org/ItemList",
17
+ "data-test-id": "productList",
18
+ children: children
19
+ });
32
20
  Layout.defaultProps = {
33
21
  children: null
34
22
  };
@@ -13,6 +13,6 @@ export interface ProductNameProps {
13
13
  /**
14
14
  * The ProductName component.
15
15
  */
16
- declare const ProductName: ({ name, className, testId, ellipsis, portalName, portalProps, itemProp, rows, style, }: ProductNameProps) => import("react/jsx-runtime").JSX.Element;
16
+ declare const ProductName: ({ name, className, testId, ellipsis, portalName, portalProps, itemProp, rows, style, }: ProductNameProps) => React.JSX.Element;
17
17
  export default ProductName;
18
18
  //# sourceMappingURL=ProductName.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProductName.d.ts","sourceRoot":"","sources":["../../../../product/components/ProductName/ProductName.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAWD;;GAEG;AACH,QAAA,MAAM,WAAW,GAAI,wFAUlB,gBAAgB,4CAuBlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"ProductName.d.ts","sourceRoot":"","sources":["../../../../product/components/ProductName/ProductName.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAWD;;GAEG;AACH,QAAA,MAAM,WAAW,GAAI,wFAUlB,gBAAgB,sBAuBlB,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  export interface ProductNameContentProps {
2
3
  name?: string | null;
3
4
  ellipsis?: boolean;
@@ -7,6 +8,6 @@ export interface ProductNameContentProps {
7
8
  * The ProductNameContent component.
8
9
  * @returns The ProductNameContent component.
9
10
  */
10
- declare const ProductNameContent: ({ name, ellipsis, rows, }: ProductNameContentProps) => import("react/jsx-runtime").JSX.Element;
11
+ declare const ProductNameContent: ({ name, ellipsis, rows, }: ProductNameContentProps) => React.JSX.Element;
11
12
  export default ProductNameContent;
12
13
  //# sourceMappingURL=ProductNameContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProductNameContent.d.ts","sourceRoot":"","sources":["../../../../product/components/ProductName/ProductNameContent.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;;GAGG;AACH,QAAA,MAAM,kBAAkB,GAAI,2BAIzB,uBAAuB,4CAczB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"ProductNameContent.d.ts","sourceRoot":"","sources":["../../../../product/components/ProductName/ProductNameContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;;GAGG;AACH,QAAA,MAAM,kBAAkB,GAAI,2BAIzB,uBAAuB,sBAczB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -9,6 +9,6 @@ interface RatingProps {
9
9
  */
10
10
  size?: 'big' | 'small' | 'large';
11
11
  }
12
- declare const _default: import("react").MemoExoticComponent<({ productId, size, }: RatingProps) => import("react/jsx-runtime").JSX.Element | null>;
12
+ declare const _default: import("react").MemoExoticComponent<({ productId, size, }: RatingProps) => import("react").JSX.Element | null>;
13
13
  export default _default;
14
14
  //# sourceMappingURL=ProductRatingStars.d.ts.map
@@ -3,7 +3,7 @@ import { useSelector } from 'react-redux';
3
3
  import appConfig from '@shopgate/pwa-common/helpers/config';
4
4
  import { getProductRating } from '@shopgate/pwa-common-commerce/product/selectors/product';
5
5
  import { RatingStars } from '@shopgate/engage/components';
6
- import { useWidgetSettings } from '@shopgate/engage/core/hooks';
6
+ import useShowEmptyRatingStars from "../../hooks/useShowEmptyRatingStars";
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
8
  const {
9
9
  hasReviews
@@ -20,9 +20,7 @@ const ProductRatingStars = ({
20
20
  getProductRating(state, {
21
21
  productId
22
22
  }));
23
- const {
24
- showEmptyRatingStars = false
25
- } = useWidgetSettings('@shopgate/engage/rating');
23
+ const showEmptyRatingStars = useShowEmptyRatingStars();
26
24
  const showRatings = useMemo(() => {
27
25
  if (hasReviews && (rating?.average ?? 0) > 0) {
28
26
  return true;
@@ -0,0 +1,3 @@
1
+ export const WIDGET_ID: "@shopgate/engage/product/ProductSlider";
2
+ export const DEFAULT_SLIDES_PER_VIEW: 2.3;
3
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../product/components/ProductSlider/constants.js"],"names":[],"mappings":"AAAA,wBAAyB,wCAAwC,CAAC;AAElE,sCAAuC,GAAG,CAAC"}