@shopgate/engage 7.32.0-beta.1 → 7.32.0-beta.11
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.
- package/README.md +0 -1
- package/account/components/Profile/Profile.provider.d.ts +1 -1
- package/account/components/Profile/ProfileAddressBook.d.ts.map +1 -1
- package/account/components/Profile/ProfileAddressBook.js +13 -22
- package/account/components/Profile/ProfileAddressCard.d.ts.map +1 -1
- package/account/components/Profile/ProfileAddressCard.js +9 -18
- package/account/components/Profile/ProfileForm.d.ts.map +1 -1
- package/account/components/Profile/ProfileForm.js +15 -42
- package/account/components/ProfileContact/ProfileContact.js +13 -21
- package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.d.ts +2 -1
- package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.d.ts.map +1 -1
- package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.js +61 -5
- package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.d.ts +7 -1
- package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.d.ts.map +1 -1
- package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.js +14 -2
- package/admin-preview/components/FrontendSettingsPreviewBridge/types.d.ts +15 -2
- package/admin-preview/components/FrontendSettingsPreviewBridge/types.d.ts.map +1 -1
- package/admin-preview/constants/index.d.ts +0 -12
- package/admin-preview/constants/index.d.ts.map +1 -1
- package/admin-preview/constants/index.js +0 -16
- package/admin-preview/helpers/_internal/detection.d.ts +53 -0
- package/admin-preview/helpers/_internal/detection.d.ts.map +1 -0
- package/admin-preview/helpers/_internal/detection.js +93 -0
- package/admin-preview/helpers/index.d.ts +7 -0
- package/admin-preview/helpers/index.d.ts.map +1 -1
- package/admin-preview/helpers/index.js +12 -4
- package/admin-preview/initialization/_internal/initialFrontendSettings.d.ts +32 -0
- package/admin-preview/initialization/_internal/initialFrontendSettings.d.ts.map +1 -0
- package/admin-preview/initialization/_internal/initialFrontendSettings.js +43 -0
- package/admin-preview/initialization/awaitInitialFrontendSettings.d.ts +22 -0
- package/admin-preview/initialization/awaitInitialFrontendSettings.d.ts.map +1 -0
- package/admin-preview/initialization/awaitInitialFrontendSettings.js +84 -0
- package/back-in-stock/components/BackInStockButton/index.js +5 -5
- package/back-in-stock/components/Subscriptions/components/Subscription/index.js +2 -5
- package/cart/components/CartItem/CartItemProductLayout.js +2 -1
- package/cart/components/CartItem/CartItemProductLayoutWide.js +2 -2
- package/cart/components/CartItem/CartItemProductLayoutWideRemoveItem.js +7 -14
- package/cart/components/CartItem/CartItemProductProvider.connector.js +0 -2
- package/cart/components/CartItem/CartItemProductProvider.js +3 -30
- package/cart/components/CartItem/CartItemProductProvider.types.js +0 -1
- package/cart/components/CartItem/CartItemQuantityPicker.js +1 -0
- package/cart/components/CartItems/CartItemCardReservationLabelChangeStore.js +6 -24
- package/cart/components/CartItems/CartItems.js +8 -10
- package/cart/components/CartItems/CartItemsSubstitution.js +3 -2
- package/cart/components/CartSummaryWide/CartSummaryWide.js +2 -2
- package/cart/components/CartSummaryWide/CartSummaryWideCheckoutButton.js +9 -23
- package/cart/components/PaymentBar/PaymentBarCheckoutButton.js +8 -30
- package/cart/components/PaymentBar/PaymentBarContent.js +1 -1
- package/cart/components/PaymentBar/testUtils/mockFactories.js +4 -11
- package/category/components/CategoryImage/index.js +24 -17
- package/checkout/components/AddressBook/AddressList.js +14 -23
- package/checkout/components/Checkout/CheckoutActions.js +4 -3
- package/checkout/components/Checkout/CheckoutAddress.js +8 -0
- package/checkout/components/Checkout/CheckoutSection.js +6 -2
- package/checkout/components/CheckoutConfirmation/CheckoutConfirmation.js +6 -7
- package/checkout/components/ResponsiveBackButton/ResponsiveBackButton.js +7 -17
- package/components/Badge/Badge.d.ts +30 -0
- package/components/Badge/Badge.d.ts.map +1 -0
- package/components/Badge/Badge.js +48 -0
- package/components/Badge/index.d.ts +3 -0
- package/components/Badge/index.d.ts.map +1 -0
- package/components/Badge/index.js +1 -0
- package/components/Card/Card.d.ts +27 -0
- package/components/Card/Card.d.ts.map +1 -0
- package/components/Card/Card.js +57 -0
- package/components/Card/index.d.ts +4 -0
- package/components/Card/index.d.ts.map +1 -0
- package/components/Card/index.js +2 -0
- package/components/Card/useCardAppearance.d.ts +11 -0
- package/components/Card/useCardAppearance.d.ts.map +1 -0
- package/components/Card/useCardAppearance.js +22 -0
- package/components/ChipLayout/index.js +2 -4
- package/components/Logo/index.d.ts.map +1 -1
- package/components/Logo/index.js +3 -6
- package/components/NavigationHandler/connector.js +1 -1
- package/components/NavigationHandler/index.d.ts +2 -2
- package/components/Paper/Paper.d.ts +48 -0
- package/components/Paper/Paper.d.ts.map +1 -0
- package/components/Paper/Paper.js +64 -0
- package/components/Paper/index.d.ts +3 -0
- package/components/Paper/index.d.ts.map +1 -0
- package/components/Paper/index.js +1 -0
- package/components/PickerUtilize/index.d.ts +2 -1
- package/components/PickerUtilize/index.d.ts.map +1 -1
- package/components/RadioCard/RadioCard.d.ts.map +1 -1
- package/components/RadioCard/RadioCard.js +2 -1
- package/components/SheetList/components/Item/index.js +8 -8
- package/components/Tabs/components/Tab.d.ts.map +1 -1
- package/components/Tabs/components/Tab.js +14 -16
- package/components/Typography/Typography.d.ts +1 -1
- package/components/View/components/Above/index.d.ts.map +1 -1
- package/components/View/components/Above/index.js +3 -1
- package/components/View/components/Below/index.d.ts.map +1 -1
- package/components/View/components/Below/index.js +3 -1
- package/components/View/components/Content/index.d.ts +2 -1
- package/components/View/components/Content/index.d.ts.map +1 -1
- package/components/View/components/Content/index.js +4 -1
- package/components/constants.d.ts +6 -0
- package/components/constants.d.ts.map +1 -0
- package/components/index.d.ts +5 -1
- package/components/index.d.ts.map +1 -1
- package/components/index.js +4 -2
- package/components/v2/Button/Button.d.ts +24 -13
- package/components/v2/Button/Button.d.ts.map +1 -1
- package/components/v2/Button/Button.js +139 -41
- package/components/v2/ButtonBase/ButtonBase.d.ts +50 -10
- package/components/v2/ButtonBase/ButtonBase.d.ts.map +1 -1
- package/components/v2/ButtonBase/ButtonBase.js +192 -17
- package/components/v2/ButtonBase/Ripple.d.ts +2 -1
- package/components/v2/ButtonBase/Ripple.d.ts.map +1 -1
- package/components/v2/ButtonBase/hooks.d.ts +0 -1
- package/components/v2/ButtonBase/hooks.d.ts.map +1 -1
- package/components/v2/ButtonBase/hooks.js +36 -12
- package/components/v2/ButtonGroup/ButtonGroup.d.ts +11 -5
- package/components/v2/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/components/v2/ButtonGroup/ButtonGroup.js +49 -26
- package/components/v2/CircularProgress/CircularProgress.d.ts.map +1 -1
- package/components/v2/CircularProgress/CircularProgress.js +10 -5
- package/core/helpers/getFullImageSource.d.ts +5 -1
- package/core/helpers/getFullImageSource.d.ts.map +1 -1
- package/core/helpers/getFullImageSource.js +30 -14
- package/core/helpers/i18n.d.ts +4 -0
- package/core/helpers/i18n.d.ts.map +1 -1
- package/core/helpers/i18n.js +3 -0
- package/core/hooks/events/appEvents.d.ts +31 -46
- package/core/hooks/events/appEvents.d.ts.map +1 -0
- package/core/hooks/events/appEvents.js +26 -29
- package/core/hooks/events/index.d.ts +4 -4
- package/core/hooks/events/index.d.ts.map +1 -1
- package/core/hooks/events/useLongPress.d.ts +55 -58
- package/core/hooks/events/useLongPress.d.ts.map +1 -0
- package/core/hooks/events/useLongPress.js +23 -16
- package/core/hooks/events/usePressHandler.d.ts +32 -21
- package/core/hooks/events/usePressHandler.d.ts.map +1 -1
- package/core/hooks/events/usePressHandler.js +12 -10
- package/core/hooks/events/useScrollDirectionChange.d.ts +72 -61
- package/core/hooks/events/useScrollDirectionChange.d.ts.map +1 -0
- package/core/hooks/events/useScrollDirectionChange.js +36 -43
- package/core/hooks/html/useLoadImage.d.ts +3 -3
- package/core/hooks/html/useLoadImage.d.ts.map +1 -1
- package/core/hooks/html/useLoadImage.js +2 -2
- package/core/hooks/useLocalStorage.d.ts +8 -0
- package/core/hooks/useLocalStorage.d.ts.map +1 -1
- package/core/hooks/useLocalStorage.js +22 -15
- package/core/hooks/useNavigation.d.ts +10 -2
- package/core/hooks/useNavigation.d.ts.map +1 -1
- package/core/hooks/useNavigation.js +1 -2
- package/core/initialization/fetchSettings.d.ts +12 -0
- package/core/initialization/fetchSettings.d.ts.map +1 -0
- package/core/initialization/fetchSettings.js +134 -0
- package/core/initialization/index.d.ts +33 -2
- package/core/initialization/index.d.ts.map +1 -1
- package/core/initialization/index.js +44 -103
- package/core/router/conductor.d.ts +9 -0
- package/core/router/helpers.d.ts +28 -15
- package/core/router/helpers.d.ts.map +1 -1
- package/core/router/helpers.js +8 -8
- package/development/action-creators/index.d.ts +3 -0
- package/development/action-creators/index.d.ts.map +1 -0
- package/development/action-creators/settings.d.ts +45 -0
- package/development/action-creators/settings.d.ts.map +1 -0
- package/development/action-creators/settings.js +21 -10
- package/development/action-creators/storage.d.ts +17 -0
- package/development/action-creators/storage.d.ts.map +1 -0
- package/development/action-creators/storage.js +7 -4
- package/development/components/ClientInformation/ClientInformation.d.ts +6 -0
- package/development/components/ClientInformation/ClientInformation.d.ts.map +1 -0
- package/development/components/ClientInformation/ClientInformation.js +7 -4
- package/development/components/ClientInformation/actions.d.ts +6 -0
- package/development/components/ClientInformation/actions.d.ts.map +1 -0
- package/development/components/ClientInformation/actions.js +1 -1
- package/development/components/ClientInformation/index.d.ts +2 -0
- package/development/components/ClientInformation/index.d.ts.map +1 -0
- package/development/components/DevelopmentSettings/DevelopmentSettings.d.ts +16 -0
- package/development/components/DevelopmentSettings/DevelopmentSettings.d.ts.map +1 -0
- package/development/components/DevelopmentSettings/DevelopmentSettings.js +43 -30
- package/development/components/DevelopmentSettings/index.d.ts +2 -0
- package/development/components/DevelopmentSettings/index.d.ts.map +1 -0
- package/development/components/DevelopmentTools/DevelopmentTools.d.ts +10 -0
- package/development/components/DevelopmentTools/DevelopmentTools.d.ts.map +1 -0
- package/development/components/DevelopmentTools/DevelopmentTools.js +8 -8
- package/development/components/DevelopmentTools/Shortcuts.d.ts +6 -0
- package/development/components/DevelopmentTools/Shortcuts.d.ts.map +1 -0
- package/development/components/DevelopmentTools/Shortcuts.js +0 -1
- package/development/components/DevelopmentTools/hooks.d.ts +8 -0
- package/development/components/DevelopmentTools/hooks.d.ts.map +1 -0
- package/development/components/DevelopmentTools/hooks.js +2 -3
- package/development/components/DevelopmentTools/index.d.ts +2 -0
- package/development/components/DevelopmentTools/index.d.ts.map +1 -0
- package/development/components/SimulatedInsets/SimulatedInsetBottom.d.ts +7 -0
- package/development/components/SimulatedInsets/SimulatedInsetBottom.d.ts.map +1 -0
- package/development/components/SimulatedInsets/SimulatedInsetBottom.js +4 -9
- package/development/components/SimulatedInsets/SimulatedInsetTop.d.ts +7 -0
- package/development/components/SimulatedInsets/SimulatedInsetTop.d.ts.map +1 -0
- package/development/components/SimulatedInsets/SimulatedInsetTop.js +4 -9
- package/development/components/SimulatedInsets/SimulatedInsets.d.ts +13 -0
- package/development/components/SimulatedInsets/SimulatedInsets.d.ts.map +1 -0
- package/development/components/SimulatedInsets/SimulatedInsets.js +2 -7
- package/development/components/SimulatedInsets/index.d.ts +2 -0
- package/development/components/SimulatedInsets/index.d.ts.map +1 -0
- package/development/components/SimulatedInsets/types.d.ts +15 -0
- package/development/components/SimulatedInsets/types.d.ts.map +1 -0
- package/development/components/SimulatedInsets/types.js +1 -0
- package/development/components/index.d.ts +3 -0
- package/development/components/index.d.ts.map +1 -0
- package/development/constants/actionTypes.d.ts +6 -0
- package/development/constants/actionTypes.d.ts.map +1 -0
- package/development/constants/actionTypes.js +2 -1
- package/development/constants/index.d.ts +2 -0
- package/development/constants/index.d.ts.map +1 -0
- package/development/reducers/index.d.ts +24 -0
- package/development/reducers/index.d.ts.map +1 -0
- package/development/reducers/settings.d.ts +17 -0
- package/development/reducers/settings.d.ts.map +1 -0
- package/development/reducers/settings.js +48 -35
- package/development/reducers/storage.d.ts +17 -0
- package/development/reducers/storage.d.ts.map +1 -0
- package/development/reducers/storage.js +24 -24
- package/development/selectors/index.d.ts +3 -0
- package/development/selectors/index.d.ts.map +1 -0
- package/development/selectors/settings.d.ts +52 -0
- package/development/selectors/settings.d.ts.map +1 -0
- package/development/selectors/settings.js +21 -11
- package/development/selectors/storage.d.ts +10 -0
- package/development/selectors/storage.d.ts.map +1 -0
- package/development/selectors/storage.js +6 -18
- package/development/streams/index.d.ts +2 -0
- package/development/streams/index.d.ts.map +1 -0
- package/development/streams/insets.d.ts +8 -0
- package/development/streams/insets.d.ts.map +1 -0
- package/development/streams/insets.js +1 -3
- package/development/subscriptions/index.d.ts +15 -0
- package/development/subscriptions/index.d.ts.map +1 -0
- package/development/subscriptions/index.js +6 -2
- package/development/types/development.d.ts +68 -0
- package/development/types/development.d.ts.map +1 -0
- package/development/types/development.js +1 -0
- package/development/types/index.d.ts +2 -0
- package/development/types/index.d.ts.map +1 -0
- package/development/types/index.js +1 -0
- package/favorites/components/FavoriteButtonWide/FavoriteButtonWide.js +7 -17
- package/favorites/components/Item/Item.d.ts +1 -1
- package/favorites/components/Item/Item.d.ts.map +1 -1
- package/favorites/components/Item/Item.js +7 -7
- package/favorites/components/List/List.d.ts +1 -1
- package/favorites/components/List/List.d.ts.map +1 -1
- package/favorites/components/List/List.js +0 -1
- package/favorites/components/List/ListContent.js +4 -5
- package/favorites/components/Lists/Lists.js +17 -6
- package/filter/components/FilterPageContent/components/ApplyButton/index.js +8 -10
- package/filter/components/FilterPageContent/components/ResetButton/index.js +8 -6
- package/filter/components/PriceSlider/index.js +6 -1
- package/locations/components/ChangeLocationButton/ChangeLocationButton.js +10 -14
- package/locations/components/FulfillmentSheet/FulfillmentSheetContent.js +4 -8
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotDialog.js +4 -8
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcher.js +1 -1
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherBar.js +9 -18
- package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherDefault.js +10 -10
- package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherBar.js +9 -19
- package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherDefault.js +9 -10
- package/locations/components/ReserveForm/ReserveForm.js +6 -7
- package/locations/components/StoreDetails/components/GetDirectionsButton.js +2 -4
- package/locations/components/StoreDetails/components/StoreDetails.js +5 -10
- package/locations/components/StoreDetails/components/StoresNearbyListItem.js +13 -21
- package/locations/components/StoreFinder/StoreFinderSelectLocationButton.js +5 -11
- package/locations/components/StoreFinder/StoreFinderStoreInfoButton.js +5 -11
- package/locations/components/StoreList/StoreListProduct.js +2 -3
- package/locations/components/StoreList/StoreListSearch.js +1 -0
- package/locations/components/StoreList/StoreSelectLocationButton.js +5 -11
- package/login/components/ForgotPassword/ForgotPassword.js +11 -23
- package/mocks/date.js +31 -0
- package/mocks/index.js +3 -0
- package/mocks/pipelineRequest.js +1 -0
- package/mocks/subscriptions.js +1 -0
- package/orders/components/OrderDetails/OrderDetailsAuthenticate.js +5 -7
- package/orders/components/OrderHistory/OrderHistoryList.d.ts.map +1 -1
- package/orders/components/OrderHistory/OrderHistoryList.js +8 -9
- package/orders/components/OrderHistory/OrderHistoryTable.d.ts.map +1 -1
- package/orders/components/OrderHistory/OrderHistoryTable.js +4 -0
- package/package.json +12 -12
- package/page/components/NotFound.d.ts +7 -0
- package/page/components/NotFound.d.ts.map +1 -0
- package/page/components/NotFound.js +8 -8
- package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.d.ts +52 -0
- package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.d.ts.map +1 -0
- package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.js +4 -4
- package/page/components/ResponsiveWidgetImage/index.d.ts +2 -0
- package/page/components/ResponsiveWidgetImage/index.d.ts.map +1 -0
- package/page/components/WidgetRichText/WidgetRichText.d.ts +25 -0
- package/page/components/WidgetRichText/WidgetRichText.d.ts.map +1 -0
- package/page/components/WidgetRichText/index.d.ts +2 -0
- package/page/components/WidgetRichText/index.d.ts.map +1 -0
- package/page/components/WidgetVideo/WidgetVideo.d.ts +43 -0
- package/page/components/WidgetVideo/WidgetVideo.d.ts.map +1 -0
- package/page/components/WidgetVideo/WidgetVideo.js +33 -39
- package/page/components/WidgetVideo/index.d.ts +2 -0
- package/page/components/WidgetVideo/index.d.ts.map +1 -0
- package/page/components/Widgets/Overlay.d.ts +17 -0
- package/page/components/Widgets/Overlay.d.ts.map +1 -0
- package/page/components/Widgets/Overlay.js +24 -38
- package/page/components/Widgets/Tooltip.d.ts +20 -0
- package/page/components/Widgets/Tooltip.d.ts.map +1 -0
- package/page/components/Widgets/Tooltip.js +6 -10
- package/page/components/Widgets/Widget.d.ts +32 -0
- package/page/components/Widgets/Widget.d.ts.map +1 -0
- package/page/components/Widgets/Widget.js +7 -18
- package/page/components/Widgets/WidgetContext.d.ts +32 -38
- package/page/components/Widgets/WidgetContext.d.ts.map +1 -0
- package/page/components/Widgets/WidgetContext.js +2 -8
- package/page/components/Widgets/WidgetProvider.d.ts +25 -0
- package/page/components/Widgets/WidgetProvider.d.ts.map +1 -0
- package/page/components/Widgets/WidgetProvider.js +5 -12
- package/page/components/Widgets/Widgets.d.ts +16 -0
- package/page/components/Widgets/Widgets.d.ts.map +1 -0
- package/page/components/Widgets/Widgets.js +5 -12
- package/page/components/Widgets/WidgetsPreviewContext.d.ts +21 -0
- package/page/components/Widgets/WidgetsPreviewContext.d.ts.map +1 -0
- package/page/components/Widgets/WidgetsPreviewContext.js +5 -7
- package/page/components/Widgets/WidgetsPreviewProvider.d.ts +18 -0
- package/page/components/Widgets/WidgetsPreviewProvider.d.ts.map +1 -0
- package/page/components/Widgets/WidgetsPreviewProvider.js +5 -6
- package/page/components/Widgets/constants.d.ts +5 -0
- package/page/components/Widgets/constants.d.ts.map +1 -0
- package/page/components/Widgets/constants.js +3 -1
- package/page/components/Widgets/events.d.ts +38 -0
- package/page/components/Widgets/events.d.ts.map +1 -0
- package/page/components/Widgets/events.js +8 -12
- package/page/components/Widgets/helpers.d.ts +50 -0
- package/page/components/Widgets/helpers.d.ts.map +1 -0
- package/page/components/Widgets/helpers.js +8 -13
- package/page/components/Widgets/hooks.d.ts +13 -0
- package/page/components/Widgets/hooks.d.ts.map +1 -0
- package/page/components/Widgets/hooks.js +13 -11
- package/page/components/Widgets/index.d.ts +3 -0
- package/page/components/Widgets/index.d.ts.map +1 -0
- package/page/components/Widgets/types.d.ts +111 -113
- package/page/components/Widgets/types.d.ts.map +1 -0
- package/page/components/Widgets/types.js +1 -0
- package/page/components/index.d.ts +5 -0
- package/page/components/index.d.ts.map +1 -0
- package/page/constants/actionTypes.d.ts +4 -0
- package/page/constants/actionTypes.d.ts.map +1 -0
- package/page/constants/index.d.ts +25 -0
- package/page/constants/index.d.ts.map +1 -0
- package/page/constants/index.js +5 -3
- package/page/helpers/index.d.ts +70 -62
- package/page/helpers/index.d.ts.map +1 -0
- package/page/helpers/index.js +31 -29
- package/page/hooks/index.d.ts +54 -53
- package/page/hooks/index.d.ts.map +1 -0
- package/page/hooks/index.js +20 -15
- package/page/selectors/index.d.ts +32 -0
- package/page/selectors/index.d.ts.map +1 -0
- package/page/widgets/Button/Button.js +2 -3
- package/page/widgets/NestedCategoryFilter/NestedCategoryFilter.js +8 -8
- package/page/widgets/ProductList/ProductList.js +18 -14
- package/page/widgets/ProductSlider/ProductSlider.js +1 -15
- package/page/widgets/Video/Video.d.ts +6 -0
- package/page/widgets/Video/Video.d.ts.map +1 -0
- package/page/widgets/Video/Video.js +0 -2
- package/page/widgets/Video/hooks.d.ts +53 -0
- package/page/widgets/Video/hooks.d.ts.map +1 -0
- package/page/widgets/Video/hooks.js +4 -12
- package/page/widgets/Video/index.d.ts +2 -0
- package/page/widgets/Video/index.d.ts.map +1 -0
- package/product/components/Description/index.js +0 -2
- package/product/components/FilterBar/components/Content/components/FilterButton/index.js +2 -6
- package/product/components/FilterBar/components/Content/components/Sort/index.js +1 -5
- package/product/components/Media/FeaturedMedia.js +7 -1
- package/product/components/Media/MediaImage.js +24 -23
- package/product/components/Media/MediaPlaceholder.js +4 -7
- package/product/components/MediaSlider/components/MediaImage/index.js +6 -2
- package/product/components/MediaSlider/constants.js +1 -12
- package/product/components/OrderQuantityHint/index.js +16 -1
- package/product/components/ProductCard/index.js +36 -23
- package/product/components/ProductGrid/components/Item/components/ItemDetails/index.js +12 -4
- package/product/components/ProductGrid/components/Item/components/ItemImage/index.js +3 -6
- package/product/components/ProductGrid/components/Item/components/ItemName/index.js +6 -1
- package/product/components/ProductGrid/components/Item/index.js +10 -2
- package/product/components/ProductGrid/components/Layout/index.js +19 -4
- package/product/components/ProductGrid/constants.d.ts +2 -0
- package/product/components/ProductGrid/constants.d.ts.map +1 -0
- package/product/components/ProductGrid/constants.js +1 -0
- package/product/components/ProductGrid/hooks.d.ts +11 -0
- package/product/components/ProductGrid/hooks.d.ts.map +1 -0
- package/product/components/ProductGrid/hooks.js +48 -0
- package/product/components/ProductGrid/index.js +3 -6
- package/product/components/ProductGridPrice/index.js +0 -1
- package/product/components/ProductImage/ProductImage.d.ts +42 -0
- package/product/components/ProductImage/ProductImage.d.ts.map +1 -0
- package/product/components/ProductImage/ProductImage.js +158 -0
- package/product/components/ProductImage/ProductImagePlaceholder.d.ts +23 -0
- package/product/components/ProductImage/ProductImagePlaceholder.d.ts.map +1 -0
- package/product/components/ProductImage/ProductImagePlaceholder.js +12 -17
- package/product/components/ProductImage/constants.d.ts +7 -0
- package/product/components/ProductImage/constants.d.ts.map +1 -0
- package/product/components/ProductImage/constants.js +6 -0
- package/product/components/ProductImage/hooks.d.ts +8 -0
- package/product/components/ProductImage/hooks.d.ts.map +1 -0
- package/product/components/ProductImage/hooks.js +32 -0
- package/product/components/ProductImage/index.d.ts +3 -0
- package/product/components/ProductImage/index.d.ts.map +1 -0
- package/product/components/ProductImage/index.js +1 -201
- package/product/components/ProductList/components/Item/index.js +5 -3
- package/product/components/ProductList/components/Layout/index.js +8 -20
- package/product/components/ProductName/ProductName.d.ts +1 -1
- package/product/components/ProductName/ProductName.d.ts.map +1 -1
- package/product/components/ProductName/ProductNameContent.d.ts +2 -1
- package/product/components/ProductName/ProductNameContent.d.ts.map +1 -1
- package/product/components/ProductRatingStars/ProductRatingStars.d.ts +1 -1
- package/product/components/ProductRatingStars/ProductRatingStars.js +2 -4
- package/product/components/ProductSlider/constants.d.ts +3 -0
- package/product/components/ProductSlider/constants.d.ts.map +1 -0
- package/product/components/ProductSlider/constants.js +2 -0
- package/product/components/ProductSlider/hooks.d.ts +7 -0
- package/product/components/ProductSlider/hooks.d.ts.map +1 -0
- package/product/components/ProductSlider/hooks.js +40 -0
- package/product/components/ProductSlider/index.js +8 -8
- package/product/components/Rating/index.js +2 -4
- package/product/components/RelationsSlider/RelationsSheet.js +1 -5
- package/product/components/RelationsSlider/RelationsSliderContent.js +3 -2
- package/product/components/RelationsSlider/constants.d.ts +3 -0
- package/product/components/RelationsSlider/constants.d.ts.map +1 -0
- package/product/components/RelationsSlider/constants.js +2 -1
- package/product/components/RelationsSlider/hooks.d.ts +6 -0
- package/product/components/RelationsSlider/hooks.d.ts.map +1 -0
- package/product/components/RelationsSlider/hooks.js +34 -0
- package/product/components/UnitQuantityPicker/UnitQuantityPicker.d.ts.map +1 -1
- package/product/components/UnitQuantityPicker/UnitQuantityPicker.js +16 -34
- package/product/helpers/index.js +29 -11
- package/product/hooks/index.js +3 -1
- package/product/hooks/useLoadProductImage.js +4 -2
- package/product/hooks/useShowEmptyRatingStars.d.ts +7 -0
- package/product/hooks/useShowEmptyRatingStars.d.ts.map +1 -0
- package/product/hooks/useShowEmptyRatingStars.js +21 -0
- package/product/index.js +0 -1
- package/product/selectors/mocks/productProperties.mock.js +49 -0
- package/push-opt-in/components/PushOptInModal/index.js +4 -4
- package/registration/components/Registration/RegistrationFormActions.js +4 -4
- package/reviews/components/Reviews/components/AllReviewsLink/index.js +6 -6
- package/reviews/components/Reviews/components/Header/components/WriteReviewLink/index.js +4 -3
- package/settings/action-creators/appSettings.d.ts +3 -3
- package/settings/action-creators/appSettings.d.ts.map +1 -1
- package/settings/constants/appSettings.d.ts +3 -0
- package/settings/constants/appSettings.d.ts.map +1 -1
- package/settings/constants/appSettings.js +6 -1
- package/settings/constants/imageSettings.d.ts +52 -0
- package/settings/constants/imageSettings.d.ts.map +1 -0
- package/settings/constants/imageSettings.js +69 -0
- package/settings/helpers/index.d.ts +3 -0
- package/settings/helpers/index.d.ts.map +1 -0
- package/settings/helpers/index.js +1 -0
- package/settings/helpers/resolveImageSettings.d.ts +70 -0
- package/settings/helpers/resolveImageSettings.d.ts.map +1 -0
- package/settings/helpers/resolveImageSettings.js +171 -0
- package/settings/helpers/toImageQuality.d.ts +7 -0
- package/settings/helpers/toImageQuality.d.ts.map +1 -0
- package/settings/helpers/toImageQuality.js +44 -0
- package/settings/helpers/toThumborColor.d.ts +15 -0
- package/settings/helpers/toThumborColor.d.ts.map +1 -0
- package/settings/helpers/toThumborColor.js +51 -0
- package/settings/hooks/index.d.ts +2 -0
- package/settings/hooks/index.d.ts.map +1 -0
- package/settings/hooks/index.js +1 -0
- package/settings/hooks/useImageSettings.d.ts +28 -0
- package/settings/hooks/useImageSettings.d.ts.map +1 -0
- package/settings/hooks/useImageSettings.js +39 -0
- package/settings/reducers/appSettings.d.ts.map +1 -1
- package/settings/reducers/appSettings.js +100 -8
- package/settings/reducers/index.d.ts +3 -3
- package/settings/selectors/appSettings.d.ts +114 -1
- package/settings/selectors/appSettings.d.ts.map +1 -1
- package/settings/selectors/appSettings.js +75 -1
- package/settings/types/appSettings.d.ts +244 -0
- package/settings/types/appSettings.d.ts.map +1 -1
- package/settings/types/appSettings.js +124 -1
- package/styles/helpers/index.d.ts +2 -0
- package/styles/helpers/index.js +2 -0
- package/styles/helpers/loadFontCss.d.ts +22 -0
- package/styles/helpers/loadFontCss.d.ts.map +1 -0
- package/styles/helpers/loadFontCss.js +138 -0
- package/styles/helpers/loadThemeCss.d.ts +14 -0
- package/styles/helpers/loadThemeCss.d.ts.map +1 -0
- package/styles/helpers/loadThemeCss.js +123 -0
- package/styles/index.d.ts +1 -1
- package/styles/index.d.ts.map +1 -1
- package/styles/index.js +1 -1
- package/styles/reset/root.js +23 -4
- package/styles/reset/typographyCustomProps.d.ts +12 -0
- package/styles/reset/typographyCustomProps.d.ts.map +1 -0
- package/styles/reset/typographyCustomProps.js +11 -0
- package/styles/theme/createDefaultThemeOptions/index.d.ts.map +1 -1
- package/styles/theme/createDefaultThemeOptions/index.js +112 -4
- package/styles/theme/createTheme/createComponents.d.ts +2 -2
- package/styles/theme/createTheme/createComponents.d.ts.map +1 -1
- package/styles/theme/createTheme/createComponents.js +0 -1
- package/styles/theme/createTheme/createComponents.types.d.ts +117 -0
- package/styles/theme/createTheme/createComponents.types.d.ts.map +1 -1
- package/styles/theme/createTheme/createComponents.types.js +119 -2
- package/styles/theme/createTheme/createCssVarsForColorSchemeThemes.d.ts.map +1 -1
- package/styles/theme/createTheme/createCssVarsForColorSchemeThemes.js +13 -3
- package/styles/theme/createTheme/createPalette.types.d.ts +5 -0
- package/styles/theme/createTheme/createPalette.types.d.ts.map +1 -1
- package/styles/theme/createTheme/createPalette.types.js +7 -2
- package/styles/theme/createTheme/createShape.d.ts +3 -0
- package/styles/theme/createTheme/createShape.d.ts.map +1 -1
- package/styles/theme/createTheme/createSpacing.js +4 -1
- package/styles/theme/createTheme/createThemeFromColorScheme.d.ts +4 -2
- package/styles/theme/createTheme/createThemeFromColorScheme.d.ts.map +1 -1
- package/styles/theme/createTheme/createThemeFromColorScheme.js +6 -3
- package/styles/theme/createTheme/createTypography.d.ts +2 -1
- package/styles/theme/createTheme/createTypography.js +59 -18
- package/styles/theme/createTheme/helpers/cssVarsParser.d.ts.map +1 -1
- package/styles/theme/createTheme/helpers/cssVarsParser.js +10 -3
- package/styles/theme/createTheme/index.d.ts +2 -1
- package/styles/theme/createTheme/index.d.ts.map +1 -1
- package/styles/theme/createTheme/index.js +5 -2
- package/styles/theme/createTheme/layout.d.ts +23 -0
- package/styles/theme/createTheme/layout.d.ts.map +1 -0
- package/styles/theme/createTheme/layout.js +20 -0
- package/styles/theme/createTheme/shadows.d.ts +11 -1
- package/styles/theme/createTheme/shadows.d.ts.map +1 -1
- package/styles/theme/createTheme/shadows.js +41 -7
- package/styles/theme/createTheme/transitions.d.ts +4 -0
- package/styles/theme/createTheme/transitions.js +3 -1
- package/styles/theme/createTheme/types.d.ts +41 -9
- package/styles/theme/createTheme/types.d.ts.map +1 -1
- package/styles/theme/createTheme/types.js +16 -4
- package/styles/theme/hocs/index.d.ts +2 -0
- package/styles/theme/hocs/index.d.ts.map +1 -0
- package/styles/theme/hocs/index.js +1 -0
- package/styles/theme/hocs/withTheme.d.ts +21 -0
- package/styles/theme/hocs/withTheme.d.ts.map +1 -0
- package/styles/theme/hocs/withTheme.js +33 -0
- package/styles/theme/hooks/useColorScheme.d.ts +4 -3
- package/styles/theme/hooks/useColorScheme.d.ts.map +1 -1
- package/styles/theme/hooks/useColorScheme.js +4 -3
- package/styles/theme/hooks/useMediaQuery.d.ts +7 -0
- package/styles/theme/hooks/useMediaQuery.d.ts.map +1 -1
- package/styles/theme/hooks/useMediaQuery.js +5 -5
- package/styles/theme/hooks/useTheme.js +1 -1
- package/styles/theme/index.d.ts +5 -1
- package/styles/theme/index.d.ts.map +1 -1
- package/styles/theme/index.js +2 -1
- package/styles/theme/providers/ActiveBreakpointProvider.d.ts +1 -1
- package/styles/theme/providers/ColorSchemeContext.d.ts +40 -0
- package/styles/theme/providers/ColorSchemeContext.d.ts.map +1 -0
- package/styles/theme/providers/ColorSchemeContext.js +14 -0
- package/styles/theme/providers/ThemeContext.d.ts +3 -0
- package/styles/theme/providers/ThemeContext.d.ts.map +1 -0
- package/styles/theme/providers/ThemeContext.js +2 -0
- package/styles/theme/providers/ThemeProvider.d.ts +4 -14
- package/styles/theme/providers/ThemeProvider.d.ts.map +1 -1
- package/styles/theme/providers/ThemeProvider.js +95 -26
- package/styles/theme/utils/color.d.ts +12 -12
- package/styles/theme/utils/color.d.ts.map +1 -1
- package/tracking/components/CookieConsentModal/index.js +3 -4
- package/tracking/components/PrivacySettings/index.js +3 -3
- package/cart/components/PaymentBar/PaymentBarReserveButton.connector.js +0 -6
- package/cart/components/PaymentBar/PaymentBarReserveButton.js +0 -71
- package/components/ChipLayout/spec.js +0 -41
- package/components/Logo/spec.js +0 -12
- package/components/NavigationHandler/spec.js +0 -84
- package/components/Picker/spec.js +0 -94
- package/components/PickerUtilize/spec.js +0 -35
- package/components/RangeSlider/spec.js +0 -190
- package/components/SheetList/components/Item/spec.js +0 -101
- package/components/SheetList/spec.js +0 -43
- package/components/TimeBoundary/spec.js +0 -83
- package/filter/components/FilterItem/spec.js +0 -14
- package/filter/components/FilterPageContent/components/ApplyButton/spec.js +0 -46
- package/filter/components/FilterPageContent/components/ResetButton/spec.js +0 -29
- package/filter/components/FilterPageContent/components/Selector/components/Selected/spec.js +0 -26
- package/filter/components/FilterPageContent/components/Selector/components/Toggle/spec.js +0 -34
- package/filter/components/FilterPageContent/components/Selector/components/ValueButton/spec.js +0 -32
- package/filter/components/FilterPageContent/components/Selector/spec.js +0 -33
- package/filter/components/PriceSlider/components/Label/spec.js +0 -26
- package/filter/components/PriceSlider/spec.js +0 -30
- package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.connector.js +0 -16
- package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.js +0 -52
- package/product/collections/index.js +0 -1
- package/product/components/EffectivityDates/constants.d.ts +0 -3
- package/product/components/EffectivityDates/constants.d.ts.map +0 -1
- package/product/components/EffectivityDates/helpers.d.ts +0 -6
- package/product/components/EffectivityDates/helpers.d.ts.map +0 -1
- package/product/components/FilterBar/components/Content/spec.js +0 -136
- package/product/components/Header/Shipping/spec.js +0 -36
- package/product/components/Header/Tiers/components/Tier/spec.js +0 -48
- package/product/components/Header/Tiers/spec.js +0 -64
- package/product/components/Media/helpers.d.ts +0 -2
- package/product/components/Media/helpers.d.ts.map +0 -1
- package/product/components/Options/components/Content/spec.js +0 -73
- package/product/components/Options/components/TextOption/components/OptionInfo/spec.js +0 -72
- package/product/components/ProductDiscountBadge/spec.js +0 -58
- package/product/components/ProductGrid/components/Item/components/ItemDetails/spec.js +0 -73
- package/product/components/ProductGrid/components/Item/components/ItemFavoritesButton/spec.js +0 -33
- package/product/components/ProductGrid/components/Item/components/ItemImage/spec.js +0 -16
- package/product/components/ProductGrid/components/Item/components/ItemName/spec.js +0 -21
- package/product/components/ProductGrid/components/Item/components/ItemPrice/spec.js +0 -37
- package/product/components/ProductGrid/spec.js +0 -52
- package/product/components/ProductImage/connector.js +0 -12
- package/product/components/ProductImage/spec.js +0 -87
- package/product/components/ProductSlider/spec.js +0 -37
- package/product/components/Rating/spec.js +0 -58
- package/product/helpers/index.d.ts +0 -13
- package/product/helpers/index.d.ts.map +0 -1
- package/product/helpers/redirects.d.ts +0 -2
- package/product/helpers/redirects.d.ts.map +0 -1
- package/product/selectors/helpers/filterProperties.d.ts +0 -8
- package/product/selectors/helpers/filterProperties.d.ts.map +0 -1
- package/product/selectors/helpers/index.d.ts +0 -3
- package/product/selectors/helpers/index.d.ts.map +0 -1
- package/product/selectors/helpers/wrapMemoizedSelector.d.ts +0 -2
- package/product/selectors/helpers/wrapMemoizedSelector.d.ts.map +0 -1
- package/product/selectors/product.d.ts +0 -112
- package/product/selectors/product.d.ts.map +0 -1
- package/reviews/components/Reviews/components/Header/components/WriteReviewLink/spec.js +0 -52
- package/reviews/components/Reviews/components/Header/spec.js +0 -78
- package/reviews/components/Reviews/components/List/spec.js +0 -108
- package/reviews/components/Reviews/components/RatingCount/spec.js +0 -38
- package/reviews/components/Reviews/spec.js +0 -101
- package/tsconfig.build.json +0 -26
- package/tsconfig.json +0 -19
|
@@ -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
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appSettings.d.ts","sourceRoot":"","sources":["../../../settings/reducers/appSettings.ts"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import _merge from "lodash/merge";
|
|
2
|
-
import { produce } from 'immer';
|
|
3
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";
|
|
4
8
|
const isReceiveAppSettingsAction = action => action.type === RECEIVE_APP_SETTINGS && 'settings' in action;
|
|
5
9
|
|
|
6
10
|
/**
|
|
@@ -17,8 +21,64 @@ export const DEFAULT_APP_SETTINGS = {
|
|
|
17
21
|
transition: 'fade',
|
|
18
22
|
fixed: {
|
|
19
23
|
borderEnabled: true
|
|
24
|
+
},
|
|
25
|
+
favorites: {
|
|
26
|
+
showCounter: true
|
|
20
27
|
}
|
|
21
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
|
+
}
|
|
22
82
|
}
|
|
23
83
|
};
|
|
24
84
|
|
|
@@ -30,13 +90,45 @@ export const DEFAULT_APP_SETTINGS = {
|
|
|
30
90
|
*/
|
|
31
91
|
const appSettings = (state, action = {
|
|
32
92
|
type: ''
|
|
33
|
-
}) =>
|
|
93
|
+
}) => {
|
|
34
94
|
if (isReceiveAppSettingsAction(action)) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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;
|
|
40
131
|
}
|
|
41
|
-
|
|
132
|
+
return state ?? DEFAULT_APP_SETTINGS;
|
|
133
|
+
};
|
|
42
134
|
export default appSettings;
|
|
@@ -3,10 +3,10 @@ export declare const settings: import("redux").Reducer<{
|
|
|
3
3
|
shopSettings: Object;
|
|
4
4
|
merchantSettings: Object;
|
|
5
5
|
appSettings: import("../types/appSettings").AppSettingsSlice;
|
|
6
|
-
}, (
|
|
6
|
+
}, ({
|
|
7
7
|
type: string;
|
|
8
|
-
settings: import("../types/appSettings").AppSettings
|
|
9
|
-
}) | import("redux").Action<string>, Partial<{
|
|
8
|
+
settings: import("../types/appSettings").DeepPartial<import("../types/appSettings").AppSettings>;
|
|
9
|
+
} | import("redux").UnknownAction) | import("redux").Action<string>, Partial<{
|
|
10
10
|
config: Object | undefined;
|
|
11
11
|
shopSettings: Object | undefined;
|
|
12
12
|
merchantSettings: Object | undefined;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AppSettingsSlice, AppSettingsState } from '../types/appSettings';
|
|
1
|
+
import type { AppSettingsSlice, AppSettingsState, ColorSchemeMode } from '../types/appSettings';
|
|
2
2
|
/**
|
|
3
3
|
* Retrieves the appSettings state from the store. Falls back to the built-in
|
|
4
4
|
* defaults when the slice is not present in the store yet.
|
|
@@ -28,6 +28,9 @@ export declare const getTabBarSettings: ((state: AppSettingsState) => {
|
|
|
28
28
|
fixed: {
|
|
29
29
|
borderEnabled: boolean;
|
|
30
30
|
};
|
|
31
|
+
favorites: {
|
|
32
|
+
showCounter: boolean;
|
|
33
|
+
};
|
|
31
34
|
}) & import("reselect").OutputSelectorFields<(args_0: AppSettingsSlice) => {
|
|
32
35
|
variant: "fixed" | "floating";
|
|
33
36
|
transition: "fade" | "slide";
|
|
@@ -36,9 +39,119 @@ export declare const getTabBarSettings: ((state: AppSettingsState) => {
|
|
|
36
39
|
fixed: {
|
|
37
40
|
borderEnabled: boolean;
|
|
38
41
|
};
|
|
42
|
+
favorites: {
|
|
43
|
+
showCounter: boolean;
|
|
44
|
+
};
|
|
39
45
|
}, {
|
|
40
46
|
clearCache: () => void;
|
|
41
47
|
}> & {
|
|
42
48
|
clearCache: () => void;
|
|
43
49
|
};
|
|
50
|
+
/**
|
|
51
|
+
* Selects the ProductGrid columns setting (keyed by breakpoint).
|
|
52
|
+
*/
|
|
53
|
+
export declare const getProductGridColumns: ((state: AppSettingsState) => Partial<Record<import("../types/appSettings").ScreenSize, number>>) & import("reselect").OutputSelectorFields<(args_0: AppSettingsSlice) => Partial<Record<import("../types/appSettings").ScreenSize, number>>, {
|
|
54
|
+
clearCache: () => void;
|
|
55
|
+
}> & {
|
|
56
|
+
clearCache: () => void;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Selects the ProductSlider slidesPerView setting (keyed by breakpoint).
|
|
60
|
+
*/
|
|
61
|
+
export declare const getProductSliderSlidesPerView: ((state: AppSettingsState) => Partial<Record<import("../types/appSettings").ScreenSize, number>>) & import("reselect").OutputSelectorFields<(args_0: AppSettingsSlice) => Partial<Record<import("../types/appSettings").ScreenSize, number>>, {
|
|
62
|
+
clearCache: () => void;
|
|
63
|
+
}> & {
|
|
64
|
+
clearCache: () => void;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Selects whether the favorites tab bar icon shows the number of favorites within its badge.
|
|
68
|
+
*/
|
|
69
|
+
export declare const getShowFavoritesCounter: ((state: AppSettingsState) => boolean) & import("reselect").OutputSelectorFields<(args_0: AppSettingsSlice) => boolean, {
|
|
70
|
+
clearCache: () => void;
|
|
71
|
+
}> & {
|
|
72
|
+
clearCache: () => void;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Selects whether rating stars are also shown for products without a rating.
|
|
76
|
+
*/
|
|
77
|
+
export declare const getShowEmptyRatingStars: ((state: AppSettingsState) => boolean) & import("reselect").OutputSelectorFields<(args_0: AppSettingsSlice) => boolean, {
|
|
78
|
+
clearCache: () => void;
|
|
79
|
+
}> & {
|
|
80
|
+
clearCache: () => void;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Selects the image settings.
|
|
84
|
+
*/
|
|
85
|
+
export declare const getImageSettings: ((state: AppSettingsState) => import("../types/appSettings").ImageSettings) & import("reselect").OutputSelectorFields<(args_0: AppSettingsSlice) => import("../types/appSettings").ImageSettings, {
|
|
86
|
+
clearCache: () => void;
|
|
87
|
+
}> & {
|
|
88
|
+
clearCache: () => void;
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Selects the max number of lines a product card name is clamped to.
|
|
92
|
+
*/
|
|
93
|
+
export declare const getProductCardNameMaxLines: ((state: AppSettingsState) => number) & import("reselect").OutputSelectorFields<(args_0: AppSettingsSlice) => number, {
|
|
94
|
+
clearCache: () => void;
|
|
95
|
+
}> & {
|
|
96
|
+
clearCache: () => void;
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* Selects the max number of lines a product tile name is clamped to.
|
|
100
|
+
*/
|
|
101
|
+
export declare const getProductTileNameMaxLines: ((state: AppSettingsState) => number) & import("reselect").OutputSelectorFields<(args_0: AppSettingsSlice) => number, {
|
|
102
|
+
clearCache: () => void;
|
|
103
|
+
}> & {
|
|
104
|
+
clearCache: () => void;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Selects the themed card settings (style and shadow size).
|
|
108
|
+
*/
|
|
109
|
+
export declare const getCardSettings: ((state: AppSettingsState) => import("../types/appSettings").CardSettings) & import("reselect").OutputSelectorFields<(args_0: AppSettingsSlice) => import("../types/appSettings").CardSettings, {
|
|
110
|
+
clearCache: () => void;
|
|
111
|
+
}> & {
|
|
112
|
+
clearCache: () => void;
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Selects the effective card shadow size. `none` unless the shadow style is selected.
|
|
116
|
+
*/
|
|
117
|
+
export declare const getCardShadowSize: ((state: AppSettingsState) => import("../types/appSettings").ShadowSize) & import("reselect").OutputSelectorFields<(args_0: import("../types/appSettings").CardSettings) => import("../types/appSettings").ShadowSize, {
|
|
118
|
+
clearCache: () => void;
|
|
119
|
+
}> & {
|
|
120
|
+
clearCache: () => void;
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* Selects the color scheme mode that applies while the visitor has no own preference stored. A
|
|
124
|
+
* mode rather than a scheme name, since it can also ask to follow the operating system: a
|
|
125
|
+
* `selectable` setting starts there, so the theme layer only ever sees its own vocabulary.
|
|
126
|
+
*/
|
|
127
|
+
export declare const getDefaultColorSchemeMode: ((state: AppSettingsState) => ColorSchemeMode) & import("reselect").OutputSelectorFields<(args_0: import("../types/appSettings").DefaultColorSchemeMode) => ColorSchemeMode, {
|
|
128
|
+
clearCache: () => void;
|
|
129
|
+
}> & {
|
|
130
|
+
clearCache: () => void;
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* Selects whether visitors may pick a color scheme themselves. False while a binding `light` or
|
|
134
|
+
* `dark` is configured, in which case a stored pick of theirs does not apply.
|
|
135
|
+
*/
|
|
136
|
+
export declare const getCanSelectColorScheme: ((state: AppSettingsState) => boolean) & import("reselect").OutputSelectorFields<(args_0: import("../types/appSettings").DefaultColorSchemeMode) => boolean, {
|
|
137
|
+
clearCache: () => void;
|
|
138
|
+
}> & {
|
|
139
|
+
clearCache: () => void;
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* Selects the typography settings.
|
|
143
|
+
*/
|
|
144
|
+
export declare const getTypographySettings: ((state: AppSettingsState) => import("../types/appSettings").TypographySettings) & import("reselect").OutputSelectorFields<(args_0: AppSettingsSlice) => import("../types/appSettings").TypographySettings, {
|
|
145
|
+
clearCache: () => void;
|
|
146
|
+
}> & {
|
|
147
|
+
clearCache: () => void;
|
|
148
|
+
};
|
|
149
|
+
/**
|
|
150
|
+
* Selects the font stylesheets to load, global file first and without duplicates.
|
|
151
|
+
*/
|
|
152
|
+
export declare const getTypographyFontCssUrls: ((state: AppSettingsState) => string[]) & import("reselect").OutputSelectorFields<(args_0: import("../types/appSettings").TypographySettings) => string[], {
|
|
153
|
+
clearCache: () => void;
|
|
154
|
+
}> & {
|
|
155
|
+
clearCache: () => void;
|
|
156
|
+
};
|
|
44
157
|
//# sourceMappingURL=appSettings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appSettings.d.ts","sourceRoot":"","sources":["../../../settings/selectors/appSettings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"appSettings.d.ts","sourceRoot":"","sources":["../../../settings/selectors/appSettings.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGhG;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAAI,OAAO,gBAAgB,KAAG,gBACR,CAAC;AAEvD;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB;;;;CAGrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;CAG7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;CAGjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B;;;;CAGzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;CAGnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;CAGnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;CAG5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;CAGtC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;CAGtC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe;;;;CAG3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;CAG7B,CAAC;AAWF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB;;;;CAIrC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB;;;;CAGnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;CAGjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;CAMpC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createSelector } from 'reselect';
|
|
2
|
+
import { COLOR_SCHEME_SELECTABLE } from "../types/appSettings";
|
|
2
3
|
import { DEFAULT_APP_SETTINGS } from "../reducers/appSettings";
|
|
3
4
|
|
|
4
5
|
/**
|
|
@@ -20,4 +21,77 @@ export const getAreAppSettingsHydrated = createSelector(getAppSettingsState, app
|
|
|
20
21
|
/**
|
|
21
22
|
* Selects the tab bar settings.
|
|
22
23
|
*/
|
|
23
|
-
export const getTabBarSettings = createSelector(getAppSettingsState, appSettings => appSettings.navigation.tabBar);
|
|
24
|
+
export const getTabBarSettings = createSelector(getAppSettingsState, appSettings => appSettings.navigation.tabBar);
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Selects the ProductGrid columns setting (keyed by breakpoint).
|
|
28
|
+
*/
|
|
29
|
+
export const getProductGridColumns = createSelector(getAppSettingsState, appSettings => appSettings.product.grid.columns);
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Selects the ProductSlider slidesPerView setting (keyed by breakpoint).
|
|
33
|
+
*/
|
|
34
|
+
export const getProductSliderSlidesPerView = createSelector(getAppSettingsState, appSettings => appSettings.product.slider.slidesPerView);
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Selects whether the favorites tab bar icon shows the number of favorites within its badge.
|
|
38
|
+
*/
|
|
39
|
+
export const getShowFavoritesCounter = createSelector(getAppSettingsState, appSettings => appSettings.navigation.tabBar.favorites.showCounter);
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Selects whether rating stars are also shown for products without a rating.
|
|
43
|
+
*/
|
|
44
|
+
export const getShowEmptyRatingStars = createSelector(getAppSettingsState, appSettings => appSettings.product.rating.showEmptyStars);
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Selects the image settings.
|
|
48
|
+
*/
|
|
49
|
+
export const getImageSettings = createSelector(getAppSettingsState, appSettings => appSettings.images);
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Selects the max number of lines a product card name is clamped to.
|
|
53
|
+
*/
|
|
54
|
+
export const getProductCardNameMaxLines = createSelector(getAppSettingsState, appSettings => appSettings.product.card.productName.maxLines);
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Selects the max number of lines a product tile name is clamped to.
|
|
58
|
+
*/
|
|
59
|
+
export const getProductTileNameMaxLines = createSelector(getAppSettingsState, appSettings => appSettings.product.tile.productName.maxLines);
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Selects the themed card settings (style and shadow size).
|
|
63
|
+
*/
|
|
64
|
+
export const getCardSettings = createSelector(getAppSettingsState, appSettings => appSettings.cards);
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Selects the effective card shadow size. `none` unless the shadow style is selected.
|
|
68
|
+
*/
|
|
69
|
+
export const getCardShadowSize = createSelector(getCardSettings, cards => cards.style === 'shadow' ? cards.shadow.size : 'none');
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Selects the raw appearance setting: a binding color scheme, or `selectable`.
|
|
73
|
+
*/
|
|
74
|
+
const getConfiguredColorSchemeMode = createSelector(getAppSettingsState, appSettings => appSettings.appearance?.defaultColorSchemeMode ?? DEFAULT_APP_SETTINGS.appearance.defaultColorSchemeMode);
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Selects the color scheme mode that applies while the visitor has no own preference stored. A
|
|
78
|
+
* mode rather than a scheme name, since it can also ask to follow the operating system: a
|
|
79
|
+
* `selectable` setting starts there, so the theme layer only ever sees its own vocabulary.
|
|
80
|
+
*/
|
|
81
|
+
export const getDefaultColorSchemeMode = createSelector(getConfiguredColorSchemeMode, configured => configured === COLOR_SCHEME_SELECTABLE ? 'system' : configured);
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Selects whether visitors may pick a color scheme themselves. False while a binding `light` or
|
|
85
|
+
* `dark` is configured, in which case a stored pick of theirs does not apply.
|
|
86
|
+
*/
|
|
87
|
+
export const getCanSelectColorScheme = createSelector(getConfiguredColorSchemeMode, configured => configured === COLOR_SCHEME_SELECTABLE);
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Selects the typography settings.
|
|
91
|
+
*/
|
|
92
|
+
export const getTypographySettings = createSelector(getAppSettingsState, appSettings => appSettings.typography);
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Selects the font stylesheets to load, global file first and without duplicates.
|
|
96
|
+
*/
|
|
97
|
+
export const getTypographyFontCssUrls = createSelector(getTypographySettings, typography => Array.from(new Set([typography.fontCssUrl].concat(Object.values(typography.variants).map(variant => variant?.fontCssUrl)).filter(url => typeof url === 'string' && url.length > 0))));
|
|
@@ -1,8 +1,213 @@
|
|
|
1
|
+
import type { ColorSchemeMode, ColorSchemeName, ShadowSize, TypographyVariant } from '@shopgate/engage/styles/theme';
|
|
2
|
+
export type { ColorSchemeMode, ColorSchemeName, ShadowSize, TypographyVariant, };
|
|
3
|
+
export declare const COLOR_SCHEME_SELECTABLE = "selectable";
|
|
4
|
+
/**
|
|
5
|
+
* What the app settings can configure: a color scheme that is binding, or `selectable` to let
|
|
6
|
+
* visitors pick one themselves. Distinct from the theme's `ColorSchemeMode`, which is what a
|
|
7
|
+
* visitor can pick - `selectable` is a permission rather than an appearance, and maps to the
|
|
8
|
+
* theme's `system` mode.
|
|
9
|
+
*/
|
|
10
|
+
export type DefaultColorSchemeMode = ColorSchemeName | typeof COLOR_SCHEME_SELECTABLE;
|
|
11
|
+
/**
|
|
12
|
+
* Recursively optional variant of `T`. The settings sources send only what a merchant configured,
|
|
13
|
+
* and the admin preview additionally prunes the fields its visibility conditions hide.
|
|
14
|
+
*/
|
|
15
|
+
export type DeepPartial<T> = {
|
|
16
|
+
[K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K];
|
|
17
|
+
};
|
|
1
18
|
export interface AppSettingsState {
|
|
2
19
|
settings: {
|
|
3
20
|
appSettings: AppSettingsSlice;
|
|
4
21
|
};
|
|
5
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* The merchant-facing screen sizes for the product list types. Each maps to a theme
|
|
25
|
+
* breakpoint inside the consuming hook (small → xs, medium → sm, large → md).
|
|
26
|
+
*/
|
|
27
|
+
export type ScreenSize = 'small' | 'medium' | 'large';
|
|
28
|
+
/**
|
|
29
|
+
* A value keyed by screen size. Partial: any unset size cascades down to the next smaller
|
|
30
|
+
* defined value (see useResponsiveValue).
|
|
31
|
+
*/
|
|
32
|
+
export type PerScreenSize = Partial<Record<ScreenSize, number>>;
|
|
33
|
+
/**
|
|
34
|
+
* Number of product columns to render, keyed by screen size.
|
|
35
|
+
*/
|
|
36
|
+
export type ProductColumns = PerScreenSize;
|
|
37
|
+
/**
|
|
38
|
+
* Settings for the ProductGrid list type.
|
|
39
|
+
*/
|
|
40
|
+
export interface ProductGridSettings {
|
|
41
|
+
columns: ProductColumns;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Name-clamping shared by the card and tile product surfaces.
|
|
45
|
+
*/
|
|
46
|
+
export interface ProductNameSettings {
|
|
47
|
+
/** Max number of lines the product name is clamped to before an ellipsis. */
|
|
48
|
+
maxLines: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Drop shadow of the card surface.
|
|
52
|
+
*/
|
|
53
|
+
export interface ShadowSettings {
|
|
54
|
+
/** Which preset elevation to draw. `none` renders no shadow at all. */
|
|
55
|
+
size: ShadowSize;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Number of slides to render side by side, keyed by screen size. Fractional values are allowed.
|
|
59
|
+
*/
|
|
60
|
+
export type SlidesPerView = PerScreenSize;
|
|
61
|
+
/**
|
|
62
|
+
* Settings for the ProductSlider list type.
|
|
63
|
+
*/
|
|
64
|
+
export interface ProductSliderSettings {
|
|
65
|
+
slidesPerView: SlidesPerView;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Settings for the product rating stars.
|
|
69
|
+
*/
|
|
70
|
+
export interface ProductRatingSettings {
|
|
71
|
+
/**
|
|
72
|
+
* Whether rating stars are also rendered for products that have no rating yet.
|
|
73
|
+
*/
|
|
74
|
+
showEmptyStars: boolean;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Settings for product presentation across the app.
|
|
78
|
+
*/
|
|
79
|
+
export interface ProductSettings {
|
|
80
|
+
grid: ProductGridSettings;
|
|
81
|
+
slider: ProductSliderSettings;
|
|
82
|
+
rating: ProductRatingSettings;
|
|
83
|
+
/** Product cards (sliders, relations, live shopping). */
|
|
84
|
+
card: {
|
|
85
|
+
productName: ProductNameSettings;
|
|
86
|
+
};
|
|
87
|
+
/** Product grid tiles. */
|
|
88
|
+
tile: {
|
|
89
|
+
productName: ProductNameSettings;
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* The visual style of the card surface.
|
|
94
|
+
*/
|
|
95
|
+
export type CardStyle = 'shadow' | 'border' | 'flat';
|
|
96
|
+
/**
|
|
97
|
+
* Settings for the themed card surface (checkout sections, address cards, sliders).
|
|
98
|
+
*/
|
|
99
|
+
export interface CardSettings {
|
|
100
|
+
style: CardStyle;
|
|
101
|
+
shadow: ShadowSettings;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* An aspect ratio expressed as width and height parts. Only the proportion matters -
|
|
105
|
+
* { width: 4, height: 5 } and { width: 8, height: 10 } are equivalent.
|
|
106
|
+
*/
|
|
107
|
+
export interface AspectRatio {
|
|
108
|
+
/**
|
|
109
|
+
* The width part of the proportion.
|
|
110
|
+
*/
|
|
111
|
+
width: number;
|
|
112
|
+
/**
|
|
113
|
+
* The height part of the proportion.
|
|
114
|
+
*/
|
|
115
|
+
height: number;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* A single image resolution requested from the image service.
|
|
119
|
+
*/
|
|
120
|
+
export interface ImageResolution {
|
|
121
|
+
/**
|
|
122
|
+
* Width in pixels.
|
|
123
|
+
*/
|
|
124
|
+
width: number;
|
|
125
|
+
/**
|
|
126
|
+
* Height in pixels, derived from the configured aspect ratio.
|
|
127
|
+
*/
|
|
128
|
+
height: number;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* The product image contexts. pdp drives the product detail page, gallery the fullscreen gallery,
|
|
132
|
+
* and list every grid, slider, list and row tile.
|
|
133
|
+
*/
|
|
134
|
+
export type ProductImageContext = 'pdp' | 'gallery' | 'list';
|
|
135
|
+
/**
|
|
136
|
+
* Settings for a single product image context. The pixel dimensions are not configurable - they
|
|
137
|
+
* are derived from the built-in base widths for the context (see PRODUCT_IMAGE_BASE_WIDTHS) so
|
|
138
|
+
* that image weight stays under the theme's control.
|
|
139
|
+
*/
|
|
140
|
+
export interface ProductImageContextSettings {
|
|
141
|
+
/**
|
|
142
|
+
* The aspect ratio images in this context are rendered at.
|
|
143
|
+
*/
|
|
144
|
+
ratio: AspectRatio;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Settings for the product image contexts.
|
|
148
|
+
*/
|
|
149
|
+
export interface ProductImageSettings {
|
|
150
|
+
/**
|
|
151
|
+
* The aspect ratio applied to every context that does not override it.
|
|
152
|
+
*/
|
|
153
|
+
ratio: AspectRatio;
|
|
154
|
+
/**
|
|
155
|
+
* Whether product images get an inset shadow. Applies to the image and to the placeholder that
|
|
156
|
+
* stands in for it, so both keep the same silhouette.
|
|
157
|
+
*/
|
|
158
|
+
showInnerShadow: boolean;
|
|
159
|
+
/**
|
|
160
|
+
* Overrides for the product detail page.
|
|
161
|
+
*/
|
|
162
|
+
pdp?: ProductImageContextSettings;
|
|
163
|
+
/**
|
|
164
|
+
* Overrides for the fullscreen gallery.
|
|
165
|
+
*/
|
|
166
|
+
gallery?: ProductImageContextSettings;
|
|
167
|
+
/**
|
|
168
|
+
* Overrides for grid, slider, list and row tiles.
|
|
169
|
+
*/
|
|
170
|
+
list?: ProductImageContextSettings;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Settings for images that are served through the image service.
|
|
174
|
+
*
|
|
175
|
+
* quality, fillColor and fillTransparent sit here rather than under product because they are not
|
|
176
|
+
* product specific - getFullImageSource applies them to every image that goes through the image
|
|
177
|
+
* service, including category images, carrier logos and page builder widget images.
|
|
178
|
+
*/
|
|
179
|
+
export interface ImageSettings {
|
|
180
|
+
/**
|
|
181
|
+
* Compression quality passed to the image service, 1 to 100.
|
|
182
|
+
*/
|
|
183
|
+
quality: number;
|
|
184
|
+
/**
|
|
185
|
+
* The color the image service fills letterboxed areas with. A source may send any CSS color -
|
|
186
|
+
* named, hex 3/6/8, rgb(), rgba(), hsl() - or one of Thumbor's own keywords: 'auto', 'blur',
|
|
187
|
+
* 'transparent'. The value reaches the store untouched and the reducer converts it into a
|
|
188
|
+
* Thumbor color token, so everything reading this field gets a wire-ready value.
|
|
189
|
+
*/
|
|
190
|
+
fillColor: string;
|
|
191
|
+
/**
|
|
192
|
+
* Thumbor's fill_transparent argument - whether transparent areas of the source image are
|
|
193
|
+
* filled too. True is what the legacy 'FFFFFF,1' config expressed.
|
|
194
|
+
*/
|
|
195
|
+
fillTransparent: boolean;
|
|
196
|
+
/**
|
|
197
|
+
* Aspect ratios for the product image contexts.
|
|
198
|
+
*/
|
|
199
|
+
product: ProductImageSettings;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Settings for the app's overall appearance.
|
|
203
|
+
*/
|
|
204
|
+
export interface AppearanceSettings {
|
|
205
|
+
/**
|
|
206
|
+
* The color scheme the app renders in. A binding `light` or `dark` always applies, while
|
|
207
|
+
* `selectable` starts from the operating system preference and lets the visitor pick another.
|
|
208
|
+
*/
|
|
209
|
+
defaultColorSchemeMode: DefaultColorSchemeMode;
|
|
210
|
+
}
|
|
6
211
|
export interface AppSettings {
|
|
7
212
|
navigation: {
|
|
8
213
|
tabBar: {
|
|
@@ -13,9 +218,48 @@ export interface AppSettings {
|
|
|
13
218
|
fixed: {
|
|
14
219
|
borderEnabled: boolean;
|
|
15
220
|
};
|
|
221
|
+
favorites: {
|
|
222
|
+
/**
|
|
223
|
+
* Whether the favorites tab bar icon renders the number of favorites within its badge.
|
|
224
|
+
*/
|
|
225
|
+
showCounter: boolean;
|
|
226
|
+
};
|
|
16
227
|
};
|
|
17
228
|
};
|
|
229
|
+
product: ProductSettings;
|
|
230
|
+
/**
|
|
231
|
+
* Settings for images that are served through the image service.
|
|
232
|
+
*/
|
|
233
|
+
images: ImageSettings;
|
|
234
|
+
cards: CardSettings;
|
|
235
|
+
typography: TypographySettings;
|
|
236
|
+
appearance: AppearanceSettings;
|
|
18
237
|
}
|
|
238
|
+
/**
|
|
239
|
+
* A font stylesheet to load. The file carries the `@font-face` rules and points its target at the
|
|
240
|
+
* new family itself, e.g. `:root { --sg-typography-h1-fontFamily: 'Recoleta'; }`.
|
|
241
|
+
*/
|
|
242
|
+
export interface FontCssSettings {
|
|
243
|
+
/**
|
|
244
|
+
* Absolute url of the stylesheet.
|
|
245
|
+
*/
|
|
246
|
+
fontCssUrl?: string;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Typography settings. The top level file applies to everything, a variant entry only to that
|
|
250
|
+
* variant. Variant files are loaded after the global one, so they win at equal specificity.
|
|
251
|
+
*/
|
|
252
|
+
export interface TypographySettings extends FontCssSettings {
|
|
253
|
+
/**
|
|
254
|
+
* Per variant font stylesheets, keyed by typography variant.
|
|
255
|
+
*/
|
|
256
|
+
variants: Partial<Record<TypographyVariant, FontCssSettings>>;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* What a settings source actually sends. Every field is optional, so the reducer fills the gaps
|
|
260
|
+
* from its defaults instead of leaving consumers with undefined.
|
|
261
|
+
*/
|
|
262
|
+
export type AppSettingsPayload = DeepPartial<AppSettings>;
|
|
19
263
|
/**
|
|
20
264
|
* The stored app settings slice. Extends the raw {@link AppSettings} values
|
|
21
265
|
* with metadata that is derived by the reducer rather than supplied by a
|