@shopgate/engage 7.32.0-beta.7 → 7.32.0-beta.9

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 (188) hide show
  1. package/account/components/Profile/Profile.provider.d.ts +1 -1
  2. package/account/components/Profile/ProfileAddressBook.d.ts.map +1 -1
  3. package/account/components/Profile/ProfileAddressBook.js +13 -22
  4. package/account/components/Profile/ProfileAddressCard.d.ts.map +1 -1
  5. package/account/components/Profile/ProfileAddressCard.js +8 -18
  6. package/account/components/Profile/ProfileForm.d.ts.map +1 -1
  7. package/account/components/Profile/ProfileForm.js +15 -42
  8. package/account/components/ProfileContact/ProfileContact.js +13 -21
  9. package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.d.ts.map +1 -1
  10. package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.js +41 -7
  11. package/admin-preview/components/FrontendSettingsPreviewBridge/types.d.ts +7 -0
  12. package/admin-preview/components/FrontendSettingsPreviewBridge/types.d.ts.map +1 -1
  13. package/admin-preview/initialization/_internal/initialFrontendSettings.d.ts +32 -0
  14. package/admin-preview/initialization/_internal/initialFrontendSettings.d.ts.map +1 -0
  15. package/admin-preview/initialization/_internal/initialFrontendSettings.js +43 -0
  16. package/admin-preview/initialization/awaitInitialFrontendSettings.d.ts +22 -0
  17. package/admin-preview/initialization/awaitInitialFrontendSettings.d.ts.map +1 -0
  18. package/admin-preview/initialization/awaitInitialFrontendSettings.js +84 -0
  19. package/back-in-stock/components/BackInStockButton/index.js +5 -5
  20. package/cart/components/CartItem/CartItemProductLayout.js +1 -0
  21. package/cart/components/CartItem/CartItemProductLayoutWideRemoveItem.js +7 -14
  22. package/cart/components/CartItem/CartItemQuantityPicker.js +1 -0
  23. package/cart/components/CartItems/CartItemCardReservationLabelChangeStore.js +6 -24
  24. package/cart/components/CartSummaryWide/CartSummaryWide.js +2 -2
  25. package/cart/components/CartSummaryWide/CartSummaryWideCheckoutButton.js +9 -23
  26. package/cart/components/PaymentBar/PaymentBarCheckoutButton.js +8 -30
  27. package/cart/components/PaymentBar/testUtils/mockFactories.js +4 -11
  28. package/category/components/CategoryImage/index.js +13 -2
  29. package/checkout/components/AddressBook/AddressList.js +14 -23
  30. package/checkout/components/Checkout/CheckoutActions.js +4 -3
  31. package/checkout/components/Checkout/CheckoutAddress.js +8 -0
  32. package/checkout/components/Checkout/CheckoutSection.js +6 -2
  33. package/checkout/components/CheckoutConfirmation/CheckoutConfirmation.js +6 -7
  34. package/checkout/components/ResponsiveBackButton/ResponsiveBackButton.js +7 -17
  35. package/components/Badge/spec.js +6 -29
  36. package/components/Card/Card.js +1 -1
  37. package/components/ChipLayout/index.js +2 -4
  38. package/components/NavigationHandler/connector.js +1 -1
  39. package/components/NavigationHandler/index.d.ts +2 -2
  40. package/components/NavigationHandler/spec.js +10 -1
  41. package/components/Paper/Paper.d.ts +1 -2
  42. package/components/Paper/Paper.d.ts.map +1 -1
  43. package/components/Paper/spec.js +5 -22
  44. package/components/Tabs/components/Tab.d.ts.map +1 -1
  45. package/components/Tabs/components/Tab.js +14 -16
  46. package/components/Typography/Typography.d.ts +1 -1
  47. package/components/v2/Button/Button.d.ts +24 -13
  48. package/components/v2/Button/Button.d.ts.map +1 -1
  49. package/components/v2/Button/Button.js +139 -41
  50. package/components/v2/ButtonBase/ButtonBase.d.ts +50 -10
  51. package/components/v2/ButtonBase/ButtonBase.d.ts.map +1 -1
  52. package/components/v2/ButtonBase/ButtonBase.js +192 -17
  53. package/components/v2/ButtonBase/hooks.d.ts +0 -1
  54. package/components/v2/ButtonBase/hooks.d.ts.map +1 -1
  55. package/components/v2/ButtonBase/hooks.js +36 -12
  56. package/components/v2/ButtonGroup/ButtonGroup.d.ts +11 -5
  57. package/components/v2/ButtonGroup/ButtonGroup.d.ts.map +1 -1
  58. package/components/v2/ButtonGroup/ButtonGroup.js +49 -26
  59. package/components/v2/CircularProgress/CircularProgress.d.ts.map +1 -1
  60. package/components/v2/CircularProgress/CircularProgress.js +10 -5
  61. package/core/hooks/useNavigation.d.ts +10 -2
  62. package/core/hooks/useNavigation.d.ts.map +1 -1
  63. package/core/hooks/useNavigation.js +1 -2
  64. package/core/initialization/index.d.ts.map +1 -1
  65. package/core/initialization/index.js +24 -5
  66. package/core/router/conductor.d.ts +9 -0
  67. package/core/router/helpers.d.ts +28 -15
  68. package/core/router/helpers.d.ts.map +1 -1
  69. package/core/router/helpers.js +8 -8
  70. package/development/components/DevelopmentSettings/DevelopmentSettings.js +3 -3
  71. package/favorites/components/FavoriteButtonWide/FavoriteButtonWide.js +7 -17
  72. package/favorites/components/List/List.d.ts.map +1 -1
  73. package/favorites/components/List/List.js +0 -1
  74. package/favorites/components/List/ListContent.js +4 -5
  75. package/favorites/components/Lists/Lists.js +4 -5
  76. package/filter/components/FilterPageContent/components/ApplyButton/index.js +8 -10
  77. package/filter/components/FilterPageContent/components/ResetButton/index.js +8 -6
  78. package/locations/components/ChangeLocationButton/ChangeLocationButton.js +10 -14
  79. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotDialog.js +4 -8
  80. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcher.js +1 -1
  81. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherBar.js +8 -13
  82. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherDefault.js +10 -10
  83. package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherBar.js +8 -14
  84. package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherDefault.js +9 -10
  85. package/locations/components/ReserveForm/ReserveForm.js +6 -7
  86. package/locations/components/StoreDetails/components/GetDirectionsButton.js +2 -4
  87. package/locations/components/StoreDetails/components/StoreDetails.js +5 -10
  88. package/locations/components/StoreDetails/components/StoresNearbyListItem.js +13 -21
  89. package/locations/components/StoreFinder/StoreFinderSelectLocationButton.js +5 -11
  90. package/locations/components/StoreFinder/StoreFinderStoreInfoButton.js +5 -11
  91. package/locations/components/StoreList/StoreListSearch.js +1 -0
  92. package/locations/components/StoreList/StoreSelectLocationButton.js +5 -11
  93. package/login/components/ForgotPassword/ForgotPassword.js +11 -23
  94. package/orders/components/OrderDetails/OrderDetailsAuthenticate.js +5 -7
  95. package/package.json +7 -7
  96. package/page/components/NotFound.d.ts.map +1 -1
  97. package/page/components/NotFound.js +7 -6
  98. package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.d.ts +1 -1
  99. package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.js +2 -2
  100. package/page/components/WidgetVideo/WidgetVideo.d.ts +1 -1
  101. package/page/components/WidgetVideo/WidgetVideo.d.ts.map +1 -1
  102. package/page/helpers/index.d.ts +5 -2
  103. package/page/helpers/index.d.ts.map +1 -1
  104. package/page/helpers/index.js +8 -5
  105. package/page/widgets/Button/Button.js +2 -3
  106. package/page/widgets/NestedCategoryFilter/NestedCategoryFilter.js +8 -8
  107. package/page/widgets/ProductList/ProductList.js +18 -14
  108. package/page/widgets/Video/hooks.d.ts +2 -2
  109. package/product/components/ProductCard/index.js +7 -1
  110. package/product/components/ProductGrid/components/Item/components/ItemDetails/index.js +6 -1
  111. package/product/components/ProductGrid/components/Item/components/ItemImage/index.js +1 -11
  112. package/product/components/ProductGrid/components/Item/index.js +3 -2
  113. package/product/components/ProductGrid/components/Layout/index.js +2 -1
  114. package/product/components/ProductGridPrice/index.js +0 -1
  115. package/product/components/ProductImage/ProductImage.d.ts.map +1 -1
  116. package/product/components/ProductImage/ProductImage.js +7 -2
  117. package/product/components/ProductImage/ProductImagePlaceholder.js +3 -3
  118. package/product/components/ProductSlider/index.js +1 -1
  119. package/product/components/UnitQuantityPicker/UnitQuantityPicker.d.ts.map +1 -1
  120. package/product/components/UnitQuantityPicker/UnitQuantityPicker.js +15 -33
  121. package/push-opt-in/components/PushOptInModal/index.js +4 -4
  122. package/registration/components/Registration/RegistrationFormActions.js +4 -4
  123. package/reviews/components/Reviews/components/AllReviewsLink/index.js +6 -6
  124. package/reviews/components/Reviews/components/Header/components/WriteReviewLink/index.js +4 -3
  125. package/reviews/components/Reviews/components/Header/components/WriteReviewLink/spec.js +28 -22
  126. package/reviews/components/Reviews/spec.js +5 -6
  127. package/settings/reducers/appSettings.d.ts.map +1 -1
  128. package/settings/reducers/appSettings.js +18 -2
  129. package/settings/selectors/appSettings.d.ts +37 -2
  130. package/settings/selectors/appSettings.d.ts.map +1 -1
  131. package/settings/selectors/appSettings.js +30 -1
  132. package/settings/types/appSettings.d.ts +42 -2
  133. package/settings/types/appSettings.d.ts.map +1 -1
  134. package/settings/types/appSettings.js +124 -1
  135. package/styles/helpers/index.d.ts +1 -0
  136. package/styles/helpers/index.js +1 -0
  137. package/styles/helpers/loadFontCss.d.ts +22 -0
  138. package/styles/helpers/loadFontCss.d.ts.map +1 -0
  139. package/styles/helpers/loadFontCss.js +138 -0
  140. package/styles/helpers/loadThemeCss.d.ts.map +1 -1
  141. package/styles/helpers/loadThemeCss.js +11 -0
  142. package/styles/index.d.ts +1 -1
  143. package/styles/index.d.ts.map +1 -1
  144. package/styles/theme/createDefaultThemeOptions/index.d.ts.map +1 -1
  145. package/styles/theme/createDefaultThemeOptions/index.js +94 -3
  146. package/styles/theme/createTheme/createComponents.types.d.ts +25 -0
  147. package/styles/theme/createTheme/createComponents.types.d.ts.map +1 -1
  148. package/styles/theme/createTheme/createComponents.types.js +28 -3
  149. package/styles/theme/createTheme/createShape.d.ts +2 -3
  150. package/styles/theme/createTheme/createShape.d.ts.map +1 -1
  151. package/styles/theme/createTheme/createShape.js +1 -2
  152. package/styles/theme/createTheme/createThemeFromColorScheme.d.ts +3 -1
  153. package/styles/theme/createTheme/createThemeFromColorScheme.d.ts.map +1 -1
  154. package/styles/theme/createTheme/createThemeFromColorScheme.js +4 -2
  155. package/styles/theme/createTheme/createTypography.d.ts +2 -1
  156. package/styles/theme/createTheme/createTypography.js +58 -18
  157. package/styles/theme/createTheme/index.d.ts +2 -2
  158. package/styles/theme/createTheme/index.d.ts.map +1 -1
  159. package/styles/theme/createTheme/index.js +2 -2
  160. package/styles/theme/createTheme/types.d.ts +9 -2
  161. package/styles/theme/createTheme/types.d.ts.map +1 -1
  162. package/styles/theme/createTheme/types.js +6 -0
  163. package/styles/theme/hooks/useColorScheme.d.ts +2 -2
  164. package/styles/theme/hooks/useColorScheme.d.ts.map +1 -1
  165. package/styles/theme/hooks/useColorScheme.js +1 -1
  166. package/styles/theme/hooks/useMediaQuery.d.ts +7 -0
  167. package/styles/theme/hooks/useMediaQuery.d.ts.map +1 -1
  168. package/styles/theme/hooks/useMediaQuery.js +5 -5
  169. package/styles/theme/hooks/useTheme.js +1 -1
  170. package/styles/theme/index.d.ts +3 -1
  171. package/styles/theme/index.d.ts.map +1 -1
  172. package/styles/theme/providers/ColorSchemeContext.d.ts +30 -9
  173. package/styles/theme/providers/ColorSchemeContext.d.ts.map +1 -1
  174. package/styles/theme/providers/ColorSchemeContext.js +8 -0
  175. package/styles/theme/providers/ThemeContext.d.ts +3 -0
  176. package/styles/theme/providers/ThemeContext.d.ts.map +1 -0
  177. package/styles/theme/providers/ThemeContext.js +2 -0
  178. package/styles/theme/providers/ThemeProvider.d.ts +2 -2
  179. package/styles/theme/providers/ThemeProvider.d.ts.map +1 -1
  180. package/styles/theme/providers/ThemeProvider.js +58 -16
  181. package/styles/theme/utils/color.d.ts +12 -12
  182. package/styles/theme/utils/color.d.ts.map +1 -1
  183. package/tracking/components/CookieConsentModal/index.js +3 -4
  184. package/tracking/components/PrivacySettings/index.js +3 -3
  185. package/cart/components/PaymentBar/PaymentBarReserveButton.connector.js +0 -6
  186. package/cart/components/PaymentBar/PaymentBarReserveButton.js +0 -71
  187. package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.connector.js +0 -16
  188. package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.js +0 -52
@@ -4,7 +4,8 @@ import { i18n, hasNewServices } from '@shopgate/engage/core/helpers';
4
4
  import { UIEvents } from '@shopgate/engage/core';
5
5
  import { useWidgetSettings } from '@shopgate/engage/core/hooks';
6
6
  import { makeStyles, useTheme } from '@shopgate/engage/styles';
7
- import { RippleButton, QuantityInput } from '@shopgate/engage/components';
7
+ import { QuantityInput } from '@shopgate/engage/components';
8
+ import { Button } from '@shopgate/engage/components/v2';
8
9
  import { broadcastLiveMessage } from '@shopgate/engage/a11y/helpers';
9
10
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
10
11
  const useStyles = makeStyles()((theme, {
@@ -60,6 +61,7 @@ const useStyles = makeStyles()((theme, {
60
61
  fontWeight,
61
62
  height: '100%',
62
63
  width: '100%',
64
+ color: theme.contrastColor(inputBgColor || theme.components.input.background),
63
65
  ...(inputColor && {
64
66
  color: `${inputColor}`
65
67
  }),
@@ -76,10 +78,8 @@ const useStyles = makeStyles()((theme, {
76
78
  },
77
79
  button: {
78
80
  width: sizeValue,
79
- ' &&': {
80
- minWidth: sizeValue,
81
- padding: 0
82
- },
81
+ minWidth: sizeValue,
82
+ padding: 0,
83
83
  height: sizeValue,
84
84
  fontSize: `${Math.floor(sizeValue / 28 * 100)}%`,
85
85
  '&:not(:disabled)': {
@@ -91,25 +91,13 @@ const useStyles = makeStyles()((theme, {
91
91
  })
92
92
  }
93
93
  },
94
- buttonRipple: {
95
- padding: 0
96
- },
97
94
  buttonNoRadiusLeft: {
98
- ' &&': {
99
- borderTopLeftRadius: 0,
100
- borderBottomLeftRadius: 0
101
- }
95
+ borderTopLeftRadius: 0,
96
+ borderBottomLeftRadius: 0
102
97
  },
103
98
  buttonNoRadiusRight: {
104
- ' &&': {
105
- borderTopRightRadius: 0,
106
- borderBottomRightRadius: 0
107
- }
108
- },
109
- disabled: {
110
- ' > div': {
111
- padding: 0
112
- }
99
+ borderTopRightRadius: 0,
100
+ borderBottomRightRadius: 0
113
101
  }
114
102
  };
115
103
  });
@@ -251,13 +239,10 @@ const UnitQuantityPicker = ({
251
239
  className: classes.backdrop
252
240
  }), /*#__PURE__*/_jsxs("div", {
253
241
  className: cx(classes.root, className),
254
- children: [/*#__PURE__*/_jsx(RippleButton, {
255
- type: "secondary",
242
+ children: [/*#__PURE__*/_jsx(Button, {
243
+ color: "primary",
256
244
  disabled: !allowDecrement || disabled,
257
- rippleClassName: classes.buttonRipple,
258
- className: cx(classes.button, classes.buttonNoRadiusRight, {
259
- [classes.disabled]: !allowDecrement || disabled
260
- }),
245
+ className: cx(classes.button, classes.buttonNoRadiusRight),
261
246
  onClick: handleDecrement,
262
247
  "aria-label": i18n.text('product.decrease_quantity'),
263
248
  children: "-"
@@ -282,13 +267,10 @@ const UnitQuantityPicker = ({
282
267
  onKeyDown: handleKeyDown,
283
268
  ref: inputRef
284
269
  })]
285
- }), /*#__PURE__*/_jsx(RippleButton, {
286
- type: "secondary",
270
+ }), /*#__PURE__*/_jsx(Button, {
271
+ color: "primary",
287
272
  disabled: !allowIncrement || disabled,
288
- rippleClassName: classes.buttonRipple,
289
- className: cx(classes.button, classes.buttonNoRadiusLeft, {
290
- [classes.disabled]: !allowIncrement || disabled
291
- }),
273
+ className: cx(classes.button, classes.buttonNoRadiusLeft),
292
274
  onClick: handleIncrement,
293
275
  "aria-label": i18n.text('product.increase_quantity'),
294
276
  children: "+"
@@ -2,7 +2,8 @@ import React, { useMemo, useEffect } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import throttle from 'lodash/throttle';
4
4
  import { makeStyles } from '@shopgate/engage/styles';
5
- import { Grid, I18n, Button, Modal, Typography } from '@shopgate/engage/components';
5
+ import { Grid, I18n, Modal, Typography } from '@shopgate/engage/components';
6
+ import { Button, ButtonBase } from '@shopgate/engage/components/v2';
6
7
  import { appConfig } from '@shopgate/engage';
7
8
  import pushImage from "./push-opt-in.svg";
8
9
  import connect from "./connector";
@@ -127,14 +128,13 @@ const PushOptInModal = ({
127
128
  id: "pushOptInDialogMessage"
128
129
  }), /*#__PURE__*/_jsx(Button, {
129
130
  onClick: handleAllowPushOptIn,
130
- type: "primary",
131
+ color: "secondary",
131
132
  className: cx(classes.button, 'push-opt-in-modal__button-allow'),
132
133
  children: /*#__PURE__*/_jsx(I18n.Text, {
133
134
  string: modalButtonAllow || 'pushOptInModal.buttonAllow'
134
135
  })
135
- }), /*#__PURE__*/_jsx(Button, {
136
+ }), /*#__PURE__*/_jsx(ButtonBase, {
136
137
  onClick: handleDenyPushOptIn,
137
- type: "plain",
138
138
  className: cx(classes.button, 'push-opt-in-modal__button-deny'),
139
139
  children: /*#__PURE__*/_jsx(I18n.Text, {
140
140
  string: modalButtonDeny || 'pushOptInModal.buttonDeny',
@@ -2,7 +2,7 @@ import React, { useMemo } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { i18n, isIOSTheme } from '@shopgate/engage/core';
4
4
  import { makeStyles } from '@shopgate/engage/styles';
5
- import { RippleButton } from '@shopgate/engage/components';
5
+ import { Button } from '@shopgate/engage/components/v2';
6
6
  import { useRegistration } from "../../hooks";
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
8
  const useStyles = makeStyles()(theme => ({
@@ -15,7 +15,6 @@ const useStyles = makeStyles()(theme => ({
15
15
  } : null)
16
16
  },
17
17
  submitButton: {
18
- width: '100%',
19
18
  marginTop: 8
20
19
  }
21
20
  }));
@@ -48,8 +47,9 @@ const RegisterFormActions = ({
48
47
  }, [guestRegistrationEditMode, isGuest, orderNeedsPayment]);
49
48
  return /*#__PURE__*/_jsx("div", {
50
49
  className: classes.submitButtonContainer,
51
- children: /*#__PURE__*/_jsx(RippleButton, {
52
- type: "secondary",
50
+ children: /*#__PURE__*/_jsx(Button, {
51
+ color: "primary",
52
+ fullWidth: true,
53
53
  onClick: handleSubmit,
54
54
  disabled: isLocked,
55
55
  className: classes.submitButton,
@@ -4,17 +4,15 @@ import { bin2hex } from '@shopgate/pwa-common/helpers/data';
4
4
  import { I18n } from '@shopgate/engage/components';
5
5
  import { ITEM_PATH } from '@shopgate/pwa-common-commerce/product/constants/index';
6
6
  import { REVIEW_PREVIEW_COUNT } from '@shopgate/pwa-common-commerce/reviews/constants';
7
- import ButtonLink from '@shopgate/pwa-ui-shared/ButtonLink';
7
+ import { Button } from '@shopgate/engage/components/v2';
8
8
  import { makeStyles } from '@shopgate/engage/styles';
9
9
  import connect from "./connector";
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
- const useStyles = makeStyles()(theme => ({
11
+ const useStyles = makeStyles()(() => ({
12
12
  container: {
13
13
  display: 'flex',
14
14
  justifyContent: 'flex-end',
15
- textAlign: 'right',
16
- marginTop: theme.spacing(-1),
17
- marginBottom: theme.spacing(-2)
15
+ textAlign: 'right'
18
16
  }
19
17
  }));
20
18
 
@@ -33,7 +31,9 @@ const AllReviewsLink = props => {
33
31
  return /*#__PURE__*/_jsx("div", {
34
32
  className: cx(classes.container, 'engage__reviews__all-reviews-link'),
35
33
  "data-test-id": "showAllReviewsButton",
36
- children: /*#__PURE__*/_jsx(ButtonLink, {
34
+ children: /*#__PURE__*/_jsx(Button, {
35
+ variant: "text",
36
+ color: "primary",
37
37
  href: `${ITEM_PATH}/${bin2hex(props.productId)}/reviews`,
38
38
  children: /*#__PURE__*/_jsx(I18n.Text, {
39
39
  string: "reviews.button_all",
@@ -4,7 +4,7 @@ import { I18n } from '@shopgate/engage/components';
4
4
  import { i18n } from '@shopgate/engage/core/helpers';
5
5
  import { ITEM_PATH } from '@shopgate/pwa-common-commerce/product/constants';
6
6
  import { bin2hex } from '@shopgate/pwa-common/helpers/data';
7
- import ButtonLink from '@shopgate/pwa-ui-shared/ButtonLink';
7
+ import { Button } from '@shopgate/engage/components/v2';
8
8
 
9
9
  /**
10
10
  * Link to add a review.
@@ -16,9 +16,10 @@ const WriteReviewLink = ({
16
16
  }) => /*#__PURE__*/_jsx("div", {
17
17
  "data-test-id": "writeReview",
18
18
  className: "engage__reviews__write-review-link",
19
- children: /*#__PURE__*/_jsx(ButtonLink, {
19
+ children: /*#__PURE__*/_jsx(Button, {
20
+ variant: "text",
21
+ color: "primary",
20
22
  href: `${ITEM_PATH}/${bin2hex(productId)}/write_review`,
21
- noGap: true,
22
23
  "aria-label": i18n.text('reviews.button_add'),
23
24
  children: /*#__PURE__*/_jsx(I18n.Text, {
24
25
  string: "reviews.button_add"
@@ -1,9 +1,17 @@
1
1
  import React from 'react';
2
- import { render, screen } from '@testing-library/react';
2
+ import { render, screen, fireEvent } from '@testing-library/react';
3
3
  import WriteReviewLink from "./index";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ const mockPush = jest.fn();
6
+ jest.mock('@shopgate/engage/core/hooks/useNavigation', () => ({
7
+ useNavigation: () => ({
8
+ push: mockPush,
9
+ replace: jest.fn()
10
+ })
11
+ }));
4
12
 
5
13
  /* eslint-disable react/prop-types */
6
- import { jsx as _jsx } from "react/jsx-runtime";
14
+
7
15
  jest.mock('@shopgate/engage/components', () => ({
8
16
  I18n: {
9
17
  Text: ({
@@ -13,23 +21,6 @@ jest.mock('@shopgate/engage/components', () => ({
13
21
  })
14
22
  }
15
23
  }));
16
- jest.mock('@shopgate/pwa-ui-shared/ButtonLink', () => {
17
- function ButtonLink(props) {
18
- const {
19
- children,
20
- href,
21
- noGap,
22
- ...rest
23
- } = props;
24
- return /*#__PURE__*/_jsx("a", {
25
- href: href,
26
- ...rest,
27
- "data-no-gap": String(noGap),
28
- children: children
29
- });
30
- }
31
- return ButtonLink;
32
- });
33
24
 
34
25
  /**
35
26
  * Creates component.
@@ -39,13 +30,28 @@ const createComponent = () => render(/*#__PURE__*/_jsx(WriteReviewLink, {
39
30
  productId: "foo"
40
31
  }));
41
32
  describe('<WriteReviewLink>', () => {
33
+ beforeEach(() => {
34
+ jest.clearAllMocks();
35
+ jest.useFakeTimers();
36
+ });
37
+ afterEach(() => {
38
+ jest.useRealTimers();
39
+ });
42
40
  it('should render when current product is set', () => {
43
41
  createComponent();
44
- const link = screen.getByRole('link', {
42
+ expect(screen.getByText('reviews.button_add')).toBeTruthy();
43
+ });
44
+
45
+ // The button renders as an anchor on web builds only, so the navigation itself is the contract.
46
+ it('should navigate to the write review route when pressed', () => {
47
+ createComponent();
48
+ fireEvent.click(screen.getByRole('button', {
45
49
  name: 'reviews.button_add'
50
+ }));
51
+ jest.runAllTimers();
52
+ expect(mockPush).toHaveBeenCalledWith({
53
+ pathname: '/item/666f6f/write_review'
46
54
  });
47
- expect(link).toHaveAttribute('href', '/item/666f6f/write_review');
48
- expect(screen.getByText('reviews.button_add')).toBeTruthy();
49
55
  });
50
56
  });
51
57
 
@@ -40,7 +40,6 @@ jest.mock('@shopgate/engage/components', () => ({
40
40
  })
41
41
  }
42
42
  }));
43
- jest.mock('@shopgate/pwa-ui-shared/ButtonLink', () => 'a');
44
43
 
45
44
  // Mock the getter of the hasReviews key inside the app config, so that we can turn it off later
46
45
  jest.resetModules();
@@ -66,7 +65,7 @@ describe('<Reviews />', () => {
66
65
  expect(screen.getByTestId('reviews-header')).toBeTruthy();
67
66
  expect(screen.getByTestId('reviews-list')).toBeTruthy();
68
67
  expect(screen.getByTestId('reviews-info')).toBeTruthy();
69
- expect(screen.queryByRole('link', {
68
+ expect(screen.queryByRole('button', {
70
69
  name: 'reviews.button_all'
71
70
  })).toBeNull();
72
71
  });
@@ -74,15 +73,15 @@ describe('<Reviews />', () => {
74
73
  createComponent(mockedStateWithAll);
75
74
  expect(screen.getByTestId('reviews-header')).toBeTruthy();
76
75
  expect(screen.getByTestId('reviews-list')).toBeTruthy();
77
- expect(screen.getByRole('link', {
76
+ expect(screen.getByRole('button', {
78
77
  name: 'reviews.button_all'
79
- })).toHaveAttribute('href', '/item/666f6f/reviews');
78
+ })).toBeTruthy();
80
79
  });
81
80
  it('should render reviews, header, but no all reviews link', () => {
82
81
  createComponent(mockedStateWithTwoReviews);
83
82
  expect(screen.getByTestId('reviews-header')).toBeTruthy();
84
83
  expect(screen.getByTestId('reviews-list')).toBeTruthy();
85
- expect(screen.queryByRole('link', {
84
+ expect(screen.queryByRole('button', {
86
85
  name: 'reviews.button_all'
87
86
  })).toBeNull();
88
87
  });
@@ -94,7 +93,7 @@ describe('<Reviews />', () => {
94
93
  expect(container.firstChild).toBeNull();
95
94
  expect(screen.queryByTestId('reviews-header')).toBeNull();
96
95
  expect(screen.queryByTestId('reviews-list')).toBeNull();
97
- expect(screen.queryByRole('link', {
96
+ expect(screen.queryByRole('button', {
98
97
  name: 'reviews.button_all'
99
98
  })).toBeNull();
100
99
  });
@@ -1 +1 @@
1
- {"version":3,"file":"appSettings.d.ts","sourceRoot":"","sources":["../../../settings/reducers/appSettings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAa/E,KAAK,iBAAiB,GAAG,wBAAwB,GAAG,aAAa,CAAC;AAQlE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,gBAyDlC,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,WAAW,EAAE,OAAO,CAAC,gBAAgB,EAAE,iBAAiB,CA+B7D,CAAC;AAEF,eAAe,WAAW,CAAC"}
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"}
@@ -42,7 +42,7 @@ export const DEFAULT_APP_SETTINGS = {
42
42
  }
43
43
  },
44
44
  rating: {
45
- showEmptyStars: false
45
+ showEmptyStars: true
46
46
  },
47
47
  card: {
48
48
  productName: {
@@ -61,6 +61,12 @@ export const DEFAULT_APP_SETTINGS = {
61
61
  size: 'medium'
62
62
  }
63
63
  },
64
+ typography: {
65
+ variants: {}
66
+ },
67
+ appearance: {
68
+ defaultColorSchemeMode: 'light'
69
+ },
64
70
  images: {
65
71
  quality: DEFAULT_IMAGE_QUALITY,
66
72
  // Already in the image service's format, so the unhydrated path needs no conversion.
@@ -87,7 +93,9 @@ const appSettings = (state, action = {
87
93
  }) => {
88
94
  if (isReceiveAppSettingsAction(action)) {
89
95
  const {
90
- images
96
+ images,
97
+ typography,
98
+ appearance
91
99
  } = action.settings ?? {};
92
100
 
93
101
  // Merged over the defaults rather than over the current state, so a field an incoming payload
@@ -101,6 +109,14 @@ const appSettings = (state, action = {
101
109
  images: images === null ? undefined : {
102
110
  ...images,
103
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
104
120
  }
105
121
  }, {
106
122
  isHydrated: true
@@ -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.
@@ -114,7 +114,42 @@ export declare const getCardSettings: ((state: AppSettingsState) => import("../t
114
114
  /**
115
115
  * Selects the effective card shadow size. `none` unless the shadow style is selected.
116
116
  */
117
- export declare const getCardShadowSize: ((state: AppSettingsState) => import("../../styles").ShadowSize) & import("reselect").OutputSelectorFields<(args_0: import("../types/appSettings").CardSettings) => import("../../styles").ShadowSize, {
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[], {
118
153
  clearCache: () => void;
119
154
  }> & {
120
155
  clearCache: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"appSettings.d.ts","sourceRoot":"","sources":["../../../settings/selectors/appSettings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG/E;;;;;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"}
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
  /**
@@ -65,4 +66,32 @@ export const getCardSettings = createSelector(getAppSettingsState, appSettings =
65
66
  /**
66
67
  * Selects the effective card shadow size. `none` unless the shadow style is selected.
67
68
  */
68
- export const getCardShadowSize = createSelector(getCardSettings, cards => cards.style === 'shadow' ? cards.shadow.size : 'none');
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,5 +1,13 @@
1
- import type { ShadowSize } from '@shopgate/engage/styles/theme';
2
- export type { ShadowSize };
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;
3
11
  /**
4
12
  * Recursively optional variant of `T`. The settings sources send only what a merchant configured,
5
13
  * and the admin preview additionally prunes the fields its visibility conditions hide.
@@ -190,6 +198,16 @@ export interface ImageSettings {
190
198
  */
191
199
  product: ProductImageSettings;
192
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
+ }
193
211
  export interface AppSettings {
194
212
  navigation: {
195
213
  tabBar: {
@@ -214,6 +232,28 @@ export interface AppSettings {
214
232
  */
215
233
  images: ImageSettings;
216
234
  cards: CardSettings;
235
+ typography: TypographySettings;
236
+ appearance: AppearanceSettings;
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>>;
217
257
  }
218
258
  /**
219
259
  * What a settings source actually sends. Every field is optional, so the reducer fills the gaps
@@ -1 +1 @@
1
- {"version":3,"file":"appSettings.d.ts","sourceRoot":"","sources":["../../../settings/types/appSettings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"appSettings.d.ts","sourceRoot":"","sources":["../../../settings/types/appSettings.ts"],"names":[],"mappings":"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"}