@salesforce/retail-react-app 1.0.0 → 1.0.1

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 (252) hide show
  1. package/CHANGELOG.md +179 -173
  2. package/app/components/_app/index.jsx +49 -8
  3. package/app/components/_app/index.test.js +63 -2
  4. package/app/components/_app-config/index.jsx +1 -1
  5. package/app/components/_app-config/index.test.js +3 -1
  6. package/app/components/_error/index.jsx +9 -1
  7. package/app/components/action-card/index.jsx +1 -1
  8. package/app/components/address-display/index.jsx +1 -1
  9. package/app/components/basic-tile/index.jsx +7 -1
  10. package/app/components/breadcrumb/index.jsx +1 -1
  11. package/app/components/confirmation-modal/index.jsx +1 -1
  12. package/app/components/confirmation-modal/index.test.js +1 -1
  13. package/app/components/drawer-menu/index.jsx +1 -1
  14. package/app/components/dynamic-image/index.jsx +1 -1
  15. package/app/components/field/index.jsx +1 -1
  16. package/app/components/footer/index.jsx +2 -2
  17. package/app/components/forms/address-fields.jsx +6 -1
  18. package/app/components/forms/credit-card-fields.jsx +9 -1
  19. package/app/components/forms/form-action-buttons.jsx +1 -1
  20. package/app/components/forms/login-fields.jsx +1 -1
  21. package/app/components/forms/password-requirements.jsx +1 -1
  22. package/app/components/forms/post-checkout-registration-fields.jsx +1 -1
  23. package/app/components/forms/profile-fields.jsx +1 -1
  24. package/app/components/forms/promo-code-fields.jsx +1 -1
  25. package/app/components/forms/registration-fields.jsx +1 -1
  26. package/app/components/forms/reset-password-fields.jsx +1 -1
  27. package/app/components/forms/update-password-fields.jsx +6 -1
  28. package/app/components/header/index.jsx +1 -1
  29. package/app/components/header/index.test.js +4 -2
  30. package/app/components/hero/index.jsx +7 -1
  31. package/app/components/icons/index.jsx +1 -1
  32. package/app/components/image-gallery/index.jsx +1 -1
  33. package/app/components/item-variant/item-attributes.jsx +5 -2
  34. package/app/components/item-variant/item-image.jsx +1 -1
  35. package/app/components/item-variant/item-price.jsx +3 -2
  36. package/app/components/link/index.jsx +1 -1
  37. package/app/components/links-list/index.jsx +8 -1
  38. package/app/components/links-list/index.test.js +4 -1
  39. package/app/components/list-menu/index.jsx +1 -1
  40. package/app/components/loading-spinner/index.jsx +1 -1
  41. package/app/components/locale-selector/index.jsx +1 -1
  42. package/app/components/login/index.jsx +7 -1
  43. package/app/components/nested-accordion/index.jsx +1 -1
  44. package/app/components/offline-banner/index.jsx +1 -1
  45. package/app/components/offline-boundary/index.jsx +1 -1
  46. package/app/components/order-summary/index.jsx +9 -1
  47. package/app/components/page-action-placeholder/index.jsx +1 -1
  48. package/app/components/pagination/index.jsx +1 -1
  49. package/app/components/product-item/index.jsx +1 -1
  50. package/app/components/product-scroller/index.jsx +8 -1
  51. package/app/components/product-tile/index.jsx +1 -1
  52. package/app/components/product-view/index.jsx +17 -4
  53. package/app/components/product-view/index.test.js +26 -1
  54. package/app/components/product-view-modal/index.jsx +7 -1
  55. package/app/components/product-view-modal/index.test.js +1 -1
  56. package/app/components/promo-code/index.jsx +1 -1
  57. package/app/components/promo-popover/index.jsx +1 -1
  58. package/app/components/quantity-picker/index.jsx +6 -1
  59. package/app/components/radio-card/index.jsx +1 -1
  60. package/app/components/recommended-products/index.jsx +1 -1
  61. package/app/components/register/index.jsx +7 -1
  62. package/app/components/reset-password/index.jsx +1 -1
  63. package/app/components/responsive/index.jsx +1 -1
  64. package/app/components/search/index.jsx +1 -1
  65. package/app/components/search/partials/recent-searches.jsx +1 -1
  66. package/app/components/search/partials/search-suggestions.jsx +1 -1
  67. package/app/components/search/partials/suggestions.jsx +1 -1
  68. package/app/components/section/index.jsx +7 -1
  69. package/app/components/shared/theme/index.jsx +10 -0
  70. package/app/components/shared/ui/Accordion/index.jsx +8 -0
  71. package/app/components/shared/ui/AccordionButton/index.jsx +8 -0
  72. package/app/components/shared/ui/AccordionIcon/index.jsx +8 -0
  73. package/app/components/shared/ui/AccordionItem/index.jsx +8 -0
  74. package/app/components/shared/ui/AccordionPanel/index.jsx +8 -0
  75. package/app/components/shared/ui/Alert/index.jsx +8 -0
  76. package/app/components/shared/ui/AlertDialog/index.jsx +8 -0
  77. package/app/components/shared/ui/AlertDialogBody/index.jsx +8 -0
  78. package/app/components/shared/ui/AlertDialogContent/index.jsx +8 -0
  79. package/app/components/shared/ui/AlertDialogFooter/index.jsx +8 -0
  80. package/app/components/shared/ui/AlertDialogHeader/index.jsx +8 -0
  81. package/app/components/shared/ui/AlertDialogOverlay/index.jsx +8 -0
  82. package/app/components/shared/ui/AlertIcon/index.jsx +8 -0
  83. package/app/components/shared/ui/AlertTitle/index.jsx +8 -0
  84. package/app/components/shared/ui/AspectRatio/index.jsx +8 -0
  85. package/app/components/shared/ui/Badge/index.jsx +8 -0
  86. package/app/components/shared/ui/Box/index.jsx +8 -0
  87. package/app/components/shared/ui/Breadcrumb/index.jsx +8 -0
  88. package/app/components/shared/ui/BreadcrumbItem/index.jsx +8 -0
  89. package/app/components/shared/ui/BreadcrumbLink/index.jsx +8 -0
  90. package/app/components/shared/ui/Button/index.jsx +8 -0
  91. package/app/components/shared/ui/ButtonGroup/index.jsx +8 -0
  92. package/app/components/shared/ui/Center/index.jsx +8 -0
  93. package/app/components/shared/ui/ChakraProvider/index.jsx +8 -0
  94. package/app/components/shared/ui/Checkbox/index.jsx +8 -0
  95. package/app/components/shared/ui/CloseButton/index.jsx +8 -0
  96. package/app/components/shared/ui/Container/index.jsx +8 -0
  97. package/app/components/shared/ui/Divider/index.jsx +8 -0
  98. package/app/components/shared/ui/Drawer/index.jsx +8 -0
  99. package/app/components/shared/ui/DrawerBody/index.jsx +8 -0
  100. package/app/components/shared/ui/DrawerCloseButton/index.jsx +8 -0
  101. package/app/components/shared/ui/DrawerContent/index.jsx +8 -0
  102. package/app/components/shared/ui/DrawerFooter/index.jsx +8 -0
  103. package/app/components/shared/ui/DrawerHeader/index.jsx +8 -0
  104. package/app/components/shared/ui/DrawerOverlay/index.jsx +8 -0
  105. package/app/components/shared/ui/Fade/index.jsx +8 -0
  106. package/app/components/shared/ui/Flex/index.jsx +8 -0
  107. package/app/components/shared/ui/FormControl/index.jsx +8 -0
  108. package/app/components/shared/ui/FormErrorMessage/index.jsx +8 -0
  109. package/app/components/shared/ui/FormLabel/index.jsx +8 -0
  110. package/app/components/shared/ui/Grid/index.jsx +8 -0
  111. package/app/components/shared/ui/GridItem/index.jsx +8 -0
  112. package/app/components/shared/ui/HStack/index.jsx +8 -0
  113. package/app/components/shared/ui/Heading/index.jsx +8 -0
  114. package/app/components/shared/ui/Icon/index.jsx +8 -0
  115. package/app/components/shared/ui/IconButton/index.jsx +8 -0
  116. package/app/components/shared/ui/Image/index.jsx +8 -0
  117. package/app/components/shared/ui/Img/index.jsx +8 -0
  118. package/app/components/shared/ui/Input/index.jsx +8 -0
  119. package/app/components/shared/ui/InputGroup/index.jsx +8 -0
  120. package/app/components/shared/ui/InputLeftElement/index.jsx +8 -0
  121. package/app/components/shared/ui/InputRightElement/index.jsx +8 -0
  122. package/app/components/shared/ui/Link/index.jsx +8 -0
  123. package/app/components/shared/ui/List/index.jsx +8 -0
  124. package/app/components/shared/ui/ListItem/index.jsx +8 -0
  125. package/app/components/shared/ui/Modal/index.jsx +8 -0
  126. package/app/components/shared/ui/ModalBody/index.jsx +8 -0
  127. package/app/components/shared/ui/ModalCloseButton/index.jsx +8 -0
  128. package/app/components/shared/ui/ModalContent/index.jsx +8 -0
  129. package/app/components/shared/ui/ModalFooter/index.jsx +8 -0
  130. package/app/components/shared/ui/ModalHeader/index.jsx +8 -0
  131. package/app/components/shared/ui/ModalOverlay/index.jsx +8 -0
  132. package/app/components/shared/ui/Popover/index.jsx +8 -0
  133. package/app/components/shared/ui/PopoverArrow/index.jsx +8 -0
  134. package/app/components/shared/ui/PopoverBody/index.jsx +8 -0
  135. package/app/components/shared/ui/PopoverCloseButton/index.jsx +8 -0
  136. package/app/components/shared/ui/PopoverContent/index.jsx +8 -0
  137. package/app/components/shared/ui/PopoverFooter/index.jsx +8 -0
  138. package/app/components/shared/ui/PopoverHeader/index.jsx +8 -0
  139. package/app/components/shared/ui/PopoverTrigger/index.jsx +8 -0
  140. package/app/components/shared/ui/Portal/index.jsx +8 -0
  141. package/app/components/shared/ui/Radio/index.jsx +8 -0
  142. package/app/components/shared/ui/RadioGroup/index.jsx +8 -0
  143. package/app/components/shared/ui/Select/index.jsx +8 -0
  144. package/app/components/shared/ui/SimpleGrid/index.jsx +8 -0
  145. package/app/components/shared/ui/Skeleton/index.jsx +8 -0
  146. package/app/components/shared/ui/Spacer/index.jsx +8 -0
  147. package/app/components/shared/ui/Spinner/index.jsx +8 -0
  148. package/app/components/shared/ui/Stack/index.jsx +8 -0
  149. package/app/components/shared/ui/StackDivider/index.jsx +8 -0
  150. package/app/components/shared/ui/StylesProvider/index.jsx +8 -0
  151. package/app/components/shared/ui/Text/index.jsx +8 -0
  152. package/app/components/shared/ui/Tooltip/index.jsx +8 -0
  153. package/app/components/shared/ui/VStack/index.jsx +8 -0
  154. package/app/components/shared/ui/Wrap/index.jsx +8 -0
  155. package/app/components/shared/ui/WrapItem/index.jsx +8 -0
  156. package/app/components/shared/ui/createStylesContext/index.jsx +8 -0
  157. package/app/components/shared/ui/extendTheme/index.jsx +8 -0
  158. package/app/components/shared/ui/index.jsx +107 -0
  159. package/app/components/shared/ui/useBreakpoint/index.jsx +8 -0
  160. package/app/components/shared/ui/useBreakpointValue/index.jsx +8 -0
  161. package/app/components/shared/ui/useDisclosure/index.jsx +8 -0
  162. package/app/components/shared/ui/useMediaQuery/index.jsx +8 -0
  163. package/app/components/shared/ui/useMultiStyleConfig/index.jsx +8 -0
  164. package/app/components/shared/ui/useNumberInput/index.jsx +8 -0
  165. package/app/components/shared/ui/useRadio/index.jsx +8 -0
  166. package/app/components/shared/ui/useRadioGroup/index.jsx +8 -0
  167. package/app/components/shared/ui/useStyleConfig/index.jsx +8 -0
  168. package/app/components/shared/ui/useStyles/index.jsx +8 -0
  169. package/app/components/shared/ui/useTheme/index.jsx +8 -0
  170. package/app/components/shared/ui/useToast/index.jsx +8 -0
  171. package/app/components/shared/util/SkipNavContent/index.jsx +8 -0
  172. package/app/components/shared/util/SkipNavLink/index.jsx +8 -0
  173. package/app/components/shared/util/index.jsx +9 -0
  174. package/app/components/social-icons/index.jsx +1 -1
  175. package/app/components/swatch-group/index.jsx +6 -1
  176. package/app/components/swatch-group/index.test.js +1 -1
  177. package/app/components/swatch-group/swatch.jsx +6 -1
  178. package/app/components/toggle-card/index.jsx +7 -1
  179. package/app/components/with-registration/index.test.js +1 -1
  180. package/app/hooks/use-add-to-cart-modal.js +1 -1
  181. package/app/hooks/use-auth-modal.js +1 -1
  182. package/app/hooks/use-current-basket.js +3 -6
  183. package/app/hooks/use-toast.js +1 -1
  184. package/app/hooks/use-toast.test.js +1 -1
  185. package/app/page-designer/README.md +2 -2
  186. package/app/page-designer/assets/image-tile/index.jsx +1 -1
  187. package/app/page-designer/assets/image-with-text/index.jsx +6 -1
  188. package/app/page-designer/layouts/carousel/index.jsx +1 -1
  189. package/app/page-designer/layouts/mobileGrid1r1c/index.jsx +1 -1
  190. package/app/page-designer/layouts/mobileGrid2r1c/index.jsx +1 -1
  191. package/app/page-designer/layouts/mobileGrid2r2c/index.jsx +1 -1
  192. package/app/page-designer/layouts/mobileGrid2r3c/index.jsx +1 -1
  193. package/app/page-designer/layouts/mobileGrid3r1c/index.jsx +1 -1
  194. package/app/page-designer/layouts/mobileGrid3r2c/index.jsx +1 -1
  195. package/app/pages/account/addresses.jsx +1 -1
  196. package/app/pages/account/index.jsx +1 -1
  197. package/app/pages/account/order-detail.jsx +1 -1
  198. package/app/pages/account/order-history.jsx +1 -1
  199. package/app/pages/account/profile.jsx +1 -1
  200. package/app/pages/account/wishlist/index.jsx +1 -1
  201. package/app/pages/account/wishlist/partials/wishlist-primary-action.jsx +1 -1
  202. package/app/pages/account/wishlist/partials/wishlist-secondary-button-group.jsx +5 -1
  203. package/app/pages/cart/index.jsx +9 -1
  204. package/app/pages/cart/partials/cart-cta.jsx +1 -1
  205. package/app/pages/cart/partials/cart-secondary-button-group.jsx +1 -1
  206. package/app/pages/cart/partials/cart-skeleton.jsx +1 -1
  207. package/app/pages/cart/partials/cart-title.jsx +1 -1
  208. package/app/pages/cart/partials/empty-cart.jsx +7 -1
  209. package/app/pages/checkout/confirmation.jsx +1 -1
  210. package/app/pages/checkout/index.jsx +10 -1
  211. package/app/pages/checkout/index.test.js +10 -0
  212. package/app/pages/checkout/partials/cc-radio-group.jsx +9 -1
  213. package/app/pages/checkout/partials/checkout-footer.jsx +1 -1
  214. package/app/pages/checkout/partials/checkout-header.jsx +7 -1
  215. package/app/pages/checkout/partials/checkout-skeleton.jsx +8 -1
  216. package/app/pages/checkout/partials/contact-info.jsx +8 -2
  217. package/app/pages/checkout/partials/payment-form.jsx +9 -1
  218. package/app/pages/checkout/partials/payment.jsx +10 -1
  219. package/app/pages/checkout/partials/shipping-address-selection.jsx +8 -1
  220. package/app/pages/checkout/partials/shipping-options.jsx +10 -1
  221. package/app/pages/home/index.jsx +1 -1
  222. package/app/pages/login/index.jsx +1 -1
  223. package/app/pages/page-not-found/index.jsx +8 -1
  224. package/app/pages/product-detail/index.jsx +8 -1
  225. package/app/pages/product-detail/index.mock.js +14 -0
  226. package/app/pages/product-detail/index.test.js +69 -6
  227. package/app/pages/product-detail/partials/information-accordion.jsx +1 -1
  228. package/app/pages/product-list/index.jsx +1 -1
  229. package/app/pages/product-list/partials/checkbox-refinements.jsx +1 -1
  230. package/app/pages/product-list/partials/color-refinements.jsx +9 -1
  231. package/app/pages/product-list/partials/empty-results.jsx +7 -1
  232. package/app/pages/product-list/partials/link-refinements.jsx +1 -1
  233. package/app/pages/product-list/partials/page-header.jsx +1 -1
  234. package/app/pages/product-list/partials/radio-refinements.jsx +7 -1
  235. package/app/pages/product-list/partials/refinements.jsx +1 -1
  236. package/app/pages/product-list/partials/selected-refinements.jsx +1 -1
  237. package/app/pages/product-list/partials/size-refinements.jsx +6 -1
  238. package/app/pages/registration/index.jsx +1 -1
  239. package/app/pages/reset-password/index.jsx +7 -1
  240. package/app/routes.jsx +1 -1
  241. package/app/ssr.js +9 -8
  242. package/app/theme/components/project/_app.js +1 -1
  243. package/app/theme/index.js +1 -1
  244. package/app/utils/locale.js +1 -1
  245. package/app/utils/locale.test.js +2 -0
  246. package/app/utils/responsive-image.js +1 -1
  247. package/app/utils/test-utils.js +1 -1
  248. package/config/default.js +1 -1
  249. package/config/mocks/default.js +1 -1
  250. package/jest-setup.js +3 -2
  251. package/jsconfig.json +1 -1
  252. package/package.json +6 -6
@@ -7,7 +7,15 @@
7
7
  import React from 'react'
8
8
  import PropTypes from 'prop-types'
9
9
  import {Helmet} from 'react-helmet'
10
- import {Box, Button, Flex, Heading, IconButton, Stack, Text} from '@chakra-ui/react'
10
+ import {
11
+ Box,
12
+ Button,
13
+ Flex,
14
+ Heading,
15
+ IconButton,
16
+ Stack,
17
+ Text
18
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
11
19
 
12
20
  import {BrandLogo, FileIcon} from '@salesforce/retail-react-app/app/components/icons'
13
21
  import {useHistory} from 'react-router-dom'
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import React, {useState} from 'react'
8
8
  import PropTypes from 'prop-types'
9
- import {Stack, Box, Button} from '@chakra-ui/react'
9
+ import {Stack, Box, Button} from '@salesforce/retail-react-app/app/components/shared/ui'
10
10
  import {FormattedMessage} from 'react-intl'
11
11
  import LoadingSpinner from '@salesforce/retail-react-app/app/components/loading-spinner'
12
12
 
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import React from 'react'
8
8
  import PropTypes from 'prop-types'
9
- import {Box, Text} from '@chakra-ui/react'
9
+ import {Box, Text} from '@salesforce/retail-react-app/app/components/shared/ui'
10
10
 
11
11
  const AddressDisplay = ({address}) => {
12
12
  return (
@@ -7,7 +7,13 @@
7
7
 
8
8
  import React from 'react'
9
9
  import PropTypes from 'prop-types'
10
- import {Box, Img, Text, AspectRatio, useTheme} from '@chakra-ui/react'
10
+ import {
11
+ Box,
12
+ Img,
13
+ Text,
14
+ AspectRatio,
15
+ useTheme
16
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
11
17
  import {Link} from 'react-router-dom'
12
18
 
13
19
  import {ChevronRightIcon} from '@salesforce/retail-react-app/app/components/icons'
@@ -17,7 +17,7 @@ import {
17
17
  BreadcrumbLink as ChakraBreadcrumbLink,
18
18
  // Hooks
19
19
  useStyleConfig
20
- } from '@chakra-ui/react'
20
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
21
21
 
22
22
  // Icons
23
23
  import {ChevronRightIcon} from '@salesforce/retail-react-app/app/components/icons'
@@ -15,7 +15,7 @@ import {
15
15
  AlertDialogContent,
16
16
  AlertDialogOverlay,
17
17
  Text
18
- } from '@chakra-ui/react'
18
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
19
19
 
20
20
  import PropTypes from 'prop-types'
21
21
  import {CONFIRMATION_DIALOG_DEFAULT_CONFIG} from '@salesforce/retail-react-app/app/pages/account/constant'
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import React from 'react'
8
8
  import ConfirmationModal from '@salesforce/retail-react-app/app/components/confirmation-modal/index'
9
- import {Box, useDisclosure} from '@chakra-ui/react'
9
+ import {Box, useDisclosure} from '@salesforce/retail-react-app/app/components/shared/ui'
10
10
  import {renderWithProviders} from '@salesforce/retail-react-app/app/utils/test-utils'
11
11
  import userEvent from '@testing-library/user-event'
12
12
  import {screen} from '@testing-library/react'
@@ -39,7 +39,7 @@ import {
39
39
  // Hooks
40
40
  useBreakpointValue,
41
41
  useMultiStyleConfig
42
- } from '@chakra-ui/react'
42
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
43
43
  import {AuthHelpers, useAuthHelper, useCustomerType} from '@salesforce/commerce-sdk-react'
44
44
  import Link from '@salesforce/retail-react-app/app/components/link'
45
45
  // Icons
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import React, {useMemo} from 'react'
8
8
  import PropTypes from 'prop-types'
9
- import {Img, Box, useTheme} from '@chakra-ui/react'
9
+ import {Img, Box, useTheme} from '@salesforce/retail-react-app/app/components/shared/ui'
10
10
  import {getResponsiveImageAttributes} from '@salesforce/retail-react-app/app/utils/responsive-image'
11
11
 
12
12
  /**
@@ -17,7 +17,7 @@ import {
17
17
  InputRightElement,
18
18
  Select,
19
19
  Checkbox
20
- } from '@chakra-ui/react'
20
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
21
21
  import {VisibilityIcon, VisibilityOffIcon} from '@salesforce/retail-react-app/app/components/icons'
22
22
 
23
23
  const Field = ({
@@ -20,7 +20,7 @@ import {
20
20
  createStylesContext,
21
21
  Button,
22
22
  FormControl
23
- } from '@chakra-ui/react'
23
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
24
24
  import {useIntl} from 'react-intl'
25
25
 
26
26
  import LinksList from '@salesforce/retail-react-app/app/components/links-list'
@@ -211,7 +211,7 @@ const Subscribe = ({...otherProps}) => {
211
211
 
212
212
  <Box>
213
213
  <InputGroup>
214
- {/* Had to swap the following InputRightElement and Input
214
+ {/* Had to swap the following InputRightElement and Input
215
215
  to avoid the hydration error due to mismatched html between server and client side.
216
216
  This is a workaround for Lastpass plugin that automatically injects its icon for input fields.
217
217
  */}
@@ -6,7 +6,12 @@
6
6
  */
7
7
  import React from 'react'
8
8
  import PropTypes from 'prop-types'
9
- import {Grid, GridItem, SimpleGrid, Stack} from '@chakra-ui/react'
9
+ import {
10
+ Grid,
11
+ GridItem,
12
+ SimpleGrid,
13
+ Stack
14
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
10
15
  import useAddressFields from '@salesforce/retail-react-app/app/components/forms/useAddressFields'
11
16
  import Field from '@salesforce/retail-react-app/app/components/field'
12
17
  import {useCurrentCustomer} from '@salesforce/retail-react-app/app/hooks/use-current-customer'
@@ -8,7 +8,15 @@ import React from 'react'
8
8
  import PropTypes from 'prop-types'
9
9
  import ccValidator from 'card-validator'
10
10
  import {useIntl} from 'react-intl'
11
- import {Box, Flex, FormLabel, InputRightElement, SimpleGrid, Stack, Tooltip} from '@chakra-ui/react'
11
+ import {
12
+ Box,
13
+ Flex,
14
+ FormLabel,
15
+ InputRightElement,
16
+ SimpleGrid,
17
+ Stack,
18
+ Tooltip
19
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
12
20
  import {
13
21
  formatCreditCardNumber,
14
22
  getCreditCardIcon
@@ -7,7 +7,7 @@
7
7
  import React from 'react'
8
8
  import PropTypes from 'prop-types'
9
9
  import {FormattedMessage} from 'react-intl'
10
- import {Button, Stack} from '@chakra-ui/react'
10
+ import {Button, Stack} from '@salesforce/retail-react-app/app/components/shared/ui'
11
11
  import {MESSAGE_PROPTYPE} from '@salesforce/retail-react-app/app/utils/locale.js'
12
12
 
13
13
  /**
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import React from 'react'
8
8
  import PropTypes from 'prop-types'
9
- import {Stack} from '@chakra-ui/react'
9
+ import {Stack} from '@salesforce/retail-react-app/app/components/shared/ui'
10
10
  import useLoginFields from '@salesforce/retail-react-app/app/components/forms/useLoginFields'
11
11
  import Field from '@salesforce/retail-react-app/app/components/field'
12
12
 
@@ -7,7 +7,7 @@
7
7
  import React from 'react'
8
8
  import PropTypes from 'prop-types'
9
9
  import {FormattedMessage} from 'react-intl'
10
- import {Flex, Text, Stack} from '@chakra-ui/react'
10
+ import {Flex, Text, Stack} from '@salesforce/retail-react-app/app/components/shared/ui'
11
11
  import {CheckCircleIcon} from '@salesforce/retail-react-app/app/components/icons'
12
12
  import {validatePassword} from '@salesforce/retail-react-app/app/utils/password-utils'
13
13
 
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import React from 'react'
8
8
  import PropTypes from 'prop-types'
9
- import {Stack, Box} from '@chakra-ui/react'
9
+ import {Stack, Box} from '@salesforce/retail-react-app/app/components/shared/ui'
10
10
  import useRegistrationFields from '@salesforce/retail-react-app/app/components/forms/useRegistrationFields'
11
11
  import PasswordRequirements from '@salesforce/retail-react-app/app/components/forms/password-requirements'
12
12
  import Field from '@salesforce/retail-react-app/app/components/field'
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import React from 'react'
8
8
  import PropTypes from 'prop-types'
9
- import {SimpleGrid, Stack} from '@chakra-ui/react'
9
+ import {SimpleGrid, Stack} from '@salesforce/retail-react-app/app/components/shared/ui'
10
10
  import useProfileFields from '@salesforce/retail-react-app/app/components/forms/useProfileFields'
11
11
  import Field from '@salesforce/retail-react-app/app/components/field'
12
12
 
@@ -7,7 +7,7 @@
7
7
  import React from 'react'
8
8
  import PropTypes from 'prop-types'
9
9
  import {FormattedMessage} from 'react-intl'
10
- import {Box, Button} from '@chakra-ui/react'
10
+ import {Box, Button} from '@salesforce/retail-react-app/app/components/shared/ui'
11
11
  import usePromoCodeFields from '@salesforce/retail-react-app/app/components/forms/usePromoCodeFields'
12
12
  import Field from '@salesforce/retail-react-app/app/components/field'
13
13
 
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import React from 'react'
8
8
  import PropTypes from 'prop-types'
9
- import {Stack} from '@chakra-ui/react'
9
+ import {Stack} from '@salesforce/retail-react-app/app/components/shared/ui'
10
10
  import useRegistrationFields from '@salesforce/retail-react-app/app/components/forms/useRegistrationFields'
11
11
  import Field from '@salesforce/retail-react-app/app/components/field'
12
12
  import PasswordRequirements from '@salesforce/retail-react-app/app/components/forms/password-requirements'
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import React from 'react'
8
8
  import PropTypes from 'prop-types'
9
- import {Box} from '@chakra-ui/react'
9
+ import {Box} from '@salesforce/retail-react-app/app/components/shared/ui'
10
10
  import useResetPasswordFields from '@salesforce/retail-react-app/app/components/forms/useResetPasswordFields'
11
11
  import Field from '@salesforce/retail-react-app/app/components/field'
12
12
 
@@ -7,7 +7,12 @@
7
7
  import React from 'react'
8
8
  import PropTypes from 'prop-types'
9
9
  import {FormattedMessage} from 'react-intl'
10
- import {Box, Button, Stack, StackDivider} from '@chakra-ui/react'
10
+ import {
11
+ Box,
12
+ Button,
13
+ Stack,
14
+ StackDivider
15
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
11
16
  import useUpdatePasswordFields from '@salesforce/retail-react-app/app/components/forms/useUpdatePasswordFields'
12
17
  import Field from '@salesforce/retail-react-app/app/components/field'
13
18
  import PasswordRequirements from '@salesforce/retail-react-app/app/components/forms/password-requirements'
@@ -26,7 +26,7 @@ import {
26
26
  Divider,
27
27
  useDisclosure,
28
28
  useMediaQuery
29
- } from '@chakra-ui/react'
29
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
30
30
  import {AuthHelpers, useAuthHelper, useCustomerType} from '@salesforce/commerce-sdk-react'
31
31
 
32
32
  import {useCurrentBasket} from '@salesforce/retail-react-app/app/hooks/use-current-basket'
@@ -20,8 +20,10 @@ import {
20
20
  mockedRegisteredCustomer
21
21
  } from '@salesforce/retail-react-app/app/mocks/mock-data'
22
22
 
23
- jest.mock('@chakra-ui/react', () => {
24
- const originalModule = jest.requireActual('@chakra-ui/react')
23
+ jest.mock('@salesforce/retail-react-app/app/components/shared/ui', () => {
24
+ const originalModule = jest.requireActual(
25
+ '@salesforce/retail-react-app/app/components/shared/ui'
26
+ )
25
27
  return {
26
28
  ...originalModule,
27
29
  useMediaQuery: jest.fn().mockReturnValue([true])
@@ -7,7 +7,13 @@
7
7
 
8
8
  import React from 'react'
9
9
  import PropTypes from 'prop-types'
10
- import {Box, Flex, Heading, Stack, Image} from '@chakra-ui/react'
10
+ import {
11
+ Box,
12
+ Flex,
13
+ Heading,
14
+ Stack,
15
+ Image
16
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
11
17
 
12
18
  const Hero = ({title, img, actions, ...props}) => {
13
19
  const {src, alt} = img
@@ -5,7 +5,7 @@
5
5
  * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause
6
6
  */
7
7
  import React, {forwardRef} from 'react'
8
- import {Icon, useTheme} from '@chakra-ui/react'
8
+ import {Icon, useTheme} from '@salesforce/retail-react-app/app/components/shared/ui'
9
9
 
10
10
  // Our own SVG imports. These will be extracted to a single sprite sheet by the
11
11
  // svg-sprite-loader webpack plugin at build time and injected in the <body> tag
@@ -21,7 +21,7 @@ import {
21
21
  ListItem,
22
22
  List,
23
23
  useMultiStyleConfig
24
- } from '@chakra-ui/react'
24
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
25
25
  import {findImageGroupBy} from '@salesforce/retail-react-app/app/utils/image-groups-utils'
26
26
  import DynamicImage from '@salesforce/retail-react-app/app/components/dynamic-image'
27
27
 
@@ -8,7 +8,7 @@
8
8
  import React from 'react'
9
9
  import PropTypes from 'prop-types'
10
10
  import {FormattedMessage, FormattedNumber} from 'react-intl'
11
- import {Flex, Stack, Text} from '@chakra-ui/react'
11
+ import {Flex, Stack, Text} from '@salesforce/retail-react-app/app/components/shared/ui'
12
12
  import {useItemVariant} from '@salesforce/retail-react-app/app/components/item-variant'
13
13
  import PromoPopover from '@salesforce/retail-react-app/app/components/promo-popover'
14
14
  import {useCurrency} from '@salesforce/retail-react-app/app/hooks'
@@ -80,7 +80,10 @@ const ItemAttributes = ({includeQuantity, currency, ...props}) => {
80
80
  <FormattedNumber
81
81
  style="currency"
82
82
  currency={currency || basket?.currency || activeCurrency}
83
- value={variant.priceAdjustments[0].price}
83
+ value={variant.priceAdjustments.reduce(
84
+ (acc, adj) => acc + (adj.price ?? 0),
85
+ 0
86
+ )}
84
87
  />
85
88
  </Text>
86
89
  </Text>
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import React from 'react'
8
8
  import PropTypes from 'prop-types'
9
- import {AspectRatio, Box, Badge, Image} from '@chakra-ui/react'
9
+ import {AspectRatio, Box, Badge, Image} from '@salesforce/retail-react-app/app/components/shared/ui'
10
10
  import {useItemVariant} from '.'
11
11
  import {FormattedMessage} from 'react-intl'
12
12
  import {findImageGroupBy} from '@salesforce/retail-react-app/app/utils/image-groups-utils'
@@ -7,7 +7,7 @@
7
7
  import React from 'react'
8
8
  import PropTypes from 'prop-types'
9
9
  import {FormattedMessage, FormattedNumber, useIntl} from 'react-intl'
10
- import {Stack, Text} from '@chakra-ui/react'
10
+ import {Stack, Text} from '@salesforce/retail-react-app/app/components/shared/ui'
11
11
  import {useItemVariant} from '.'
12
12
  import {HideOnDesktop, HideOnMobile} from '@salesforce/retail-react-app/app/components/responsive'
13
13
  import {useCurrency} from '@salesforce/retail-react-app/app/hooks'
@@ -50,7 +50,8 @@ const ItemPrice = ({currency, align = 'right', baseDirection = 'column', ...prop
50
50
  const {price, basePrice, priceAfterItemDiscount} = variant
51
51
  const isProductASet = variant?.type?.set
52
52
 
53
- const displayPrice = priceAfterItemDiscount ? Math.min(price, priceAfterItemDiscount) : price
53
+ const displayPrice =
54
+ typeof priceAfterItemDiscount === 'number' ? Math.min(price, priceAfterItemDiscount) : price
54
55
 
55
56
  const hasDiscount = displayPrice !== price
56
57
 
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import React from 'react'
8
8
  import PropTypes from 'prop-types'
9
- import {Link as ChakraLink} from '@chakra-ui/react'
9
+ import {Link as ChakraLink} from '@salesforce/retail-react-app/app/components/shared/ui'
10
10
  import {Link as SPALink, NavLink as NavSPALink} from 'react-router-dom'
11
11
  import useMultiSite from '@salesforce/retail-react-app/app/hooks/use-multi-site'
12
12
 
@@ -6,7 +6,14 @@
6
6
  */
7
7
  import React from 'react'
8
8
  import PropTypes from 'prop-types'
9
- import {Box, List, ListItem, Heading, HStack, useMultiStyleConfig} from '@chakra-ui/react'
9
+ import {
10
+ Box,
11
+ List,
12
+ ListItem,
13
+ Heading,
14
+ HStack,
15
+ useMultiStyleConfig
16
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
10
17
  import Link from '@salesforce/retail-react-app/app/components/link'
11
18
 
12
19
  const LinksList = ({
@@ -6,7 +6,10 @@
6
6
  */
7
7
  import React from 'react'
8
8
  import PropTypes from 'prop-types'
9
- import {StylesProvider, useMultiStyleConfig} from '@chakra-ui/react'
9
+ import {
10
+ StylesProvider,
11
+ useMultiStyleConfig
12
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
10
13
  import {screen} from '@testing-library/react'
11
14
 
12
15
  import {renderWithProviders} from '@salesforce/retail-react-app/app/utils/test-utils'
@@ -31,7 +31,7 @@ import {
31
31
  // Hooks
32
32
  useTheme,
33
33
  useDisclosure
34
- } from '@chakra-ui/react'
34
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
35
35
  import Link from '@salesforce/retail-react-app/app/components/link'
36
36
  // Others
37
37
  import {categoryUrlBuilder} from '@salesforce/retail-react-app/app/utils/url'
@@ -5,7 +5,7 @@
5
5
  * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause
6
6
  */
7
7
  import React from 'react'
8
- import {Box, Spinner} from '@chakra-ui/react'
8
+ import {Box, Spinner} from '@salesforce/retail-react-app/app/components/shared/ui'
9
9
  import PropTypes from 'prop-types'
10
10
 
11
11
  const LoadingSpinner = ({wrapperStyles = {}, spinnerStyles = {}}) => {
@@ -19,7 +19,7 @@ import {
19
19
 
20
20
  // Hooks
21
21
  useStyleConfig
22
- } from '@chakra-ui/react'
22
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
23
23
 
24
24
  // Icons
25
25
  import {
@@ -8,7 +8,13 @@
8
8
  import React, {Fragment} from 'react'
9
9
  import PropTypes from 'prop-types'
10
10
  import {FormattedMessage} from 'react-intl'
11
- import {Alert, Box, Button, Stack, Text} from '@chakra-ui/react'
11
+ import {
12
+ Alert,
13
+ Box,
14
+ Button,
15
+ Stack,
16
+ Text
17
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
12
18
  import {AlertIcon, BrandLogo} from '@salesforce/retail-react-app/app/components/icons'
13
19
  import LoginFields from '@salesforce/retail-react-app/app/components/forms/login-fields'
14
20
  import {noop} from '@salesforce/retail-react-app/app/utils/utils'
@@ -18,7 +18,7 @@ import {
18
18
 
19
19
  // Hooks
20
20
  useStyleConfig
21
- } from '@chakra-ui/react'
21
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
22
22
  import Link from '@salesforce/retail-react-app/app/components/link'
23
23
  // Icons
24
24
  import {ChevronDownIcon, ChevronRightIcon} from '@salesforce/retail-react-app/app/components/icons'
@@ -15,7 +15,7 @@ import {
15
15
 
16
16
  // Hooks
17
17
  useStyleConfig
18
- } from '@chakra-ui/react'
18
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
19
19
 
20
20
  // Icons
21
21
  import {AlertIcon} from '@salesforce/retail-react-app/app/components/icons'
@@ -7,7 +7,7 @@
7
7
  import React from 'react'
8
8
  import PropTypes from 'prop-types'
9
9
  import {withRouter} from 'react-router-dom'
10
- import {Button} from '@chakra-ui/react'
10
+ import {Button} from '@salesforce/retail-react-app/app/components/shared/ui'
11
11
  import {AlertIcon} from '@salesforce/retail-react-app/app/components/icons'
12
12
 
13
13
  // import Button from '@salesforce/pwa-kit-react-sdk/components/button'
@@ -7,7 +7,15 @@
7
7
  import React, {useState} from 'react'
8
8
  import PropTypes from 'prop-types'
9
9
  import {FormattedMessage, FormattedNumber} from 'react-intl'
10
- import {Box, Flex, Button, Stack, Text, Heading, Divider} from '@chakra-ui/react'
10
+ import {
11
+ Box,
12
+ Flex,
13
+ Button,
14
+ Stack,
15
+ Text,
16
+ Heading,
17
+ Divider
18
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
11
19
  import {
12
20
  BasketIcon,
13
21
  ChevronDownIcon,
@@ -7,7 +7,7 @@
7
7
 
8
8
  import React from 'react'
9
9
  import PropTypes from 'prop-types'
10
- import {Box, Button, Stack, Text} from '@chakra-ui/react'
10
+ import {Box, Button, Stack, Text} from '@salesforce/retail-react-app/app/components/shared/ui'
11
11
  import {PlusIcon} from '@salesforce/retail-react-app/app/components/icons'
12
12
 
13
13
  const PageActionPlaceHolder = ({heading, text, icon, buttonText, buttonProps, onButtonClick}) => {
@@ -19,7 +19,7 @@ import {
19
19
 
20
20
  // Hooks
21
21
  useStyleConfig
22
- } from '@chakra-ui/react'
22
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
23
23
 
24
24
  // Icons
25
25
  import {ChevronLeftIcon, ChevronRightIcon} from '@salesforce/retail-react-app/app/components/icons'
@@ -9,7 +9,7 @@ import PropTypes from 'prop-types'
9
9
  import {FormattedMessage} from 'react-intl'
10
10
 
11
11
  // Chakra Components
12
- import {Box, Fade, Flex, Stack, Text} from '@chakra-ui/react'
12
+ import {Box, Fade, Flex, Stack, Text} from '@salesforce/retail-react-app/app/components/shared/ui'
13
13
 
14
14
  // Project Components
15
15
  import {HideOnDesktop, HideOnMobile} from '@salesforce/retail-react-app/app/components/responsive'
@@ -6,7 +6,14 @@
6
6
  */
7
7
  import React, {forwardRef, useRef} from 'react'
8
8
  import PropTypes from 'prop-types'
9
- import {AspectRatio, Box, Heading, IconButton, Skeleton, Stack} from '@chakra-ui/react'
9
+ import {
10
+ AspectRatio,
11
+ Box,
12
+ Heading,
13
+ IconButton,
14
+ Skeleton,
15
+ Stack
16
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
10
17
  import ProductTile from '@salesforce/retail-react-app/app/components/product-tile'
11
18
  import {ChevronLeftIcon, ChevronRightIcon} from '@salesforce/retail-react-app/app/components/icons'
12
19
 
@@ -18,7 +18,7 @@ import {
18
18
  Stack,
19
19
  useMultiStyleConfig,
20
20
  IconButton
21
- } from '@chakra-ui/react'
21
+ } from '@salesforce/retail-react-app/app/components/shared/ui'
22
22
  import DynamicImage from '@salesforce/retail-react-app/app/components/dynamic-image'
23
23
 
24
24
  // Hooks