@riosst100/pwa-marketplace 1.3.3 → 1.3.4

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 (165) hide show
  1. package/.github/workflows/dependabot.yml +28 -28
  2. package/package.json +18 -18
  3. package/src/componentOverrideMapping.js +14 -0
  4. package/src/components/BecomeSellerLink/becomeSellerLink.js +1 -1
  5. package/src/components/BecomeSellerLink/becomeSellerLink.module.css +0 -4
  6. package/src/components/CurrencySwitcher/currencySwitcher.himmer.js +6 -0
  7. package/src/components/CurrencySwitcher/currencySwitcher.module.css +102 -0
  8. package/src/components/CurrencySwitcher/index.js +107 -0
  9. package/src/components/CurrencySwitcher/switcherItem.js +47 -0
  10. package/src/components/CurrencySwitcher/switcherItem.module.css +20 -0
  11. package/src/components/FilterOption/FilterOptionModal.module.css +90 -0
  12. package/src/components/FilterOption/filterOptionModal.js +48 -0
  13. package/src/components/FilterOptionModal/filterOptionModal.js +66 -0
  14. package/src/components/Header/becomeSellerLink.module.css +0 -4
  15. package/src/components/Header/websiteSwitcher.js +0 -1
  16. package/src/components/Header/websiteSwitcher.module.css +107 -111
  17. package/src/components/WebsiteSwitcher/websiteSwitcher.js +18 -6
  18. package/src/components/WebsiteSwitcher/websiteSwitcher.module.css +107 -111
  19. package/src/overwrites/peregrine/lib/talons/FilterModal/useFilterList.js +62 -0
  20. package/src/overwrites/peregrine/lib/talons/MegaMenu/useMegaMenuItem.js +66 -0
  21. package/src/overwrites/peregrine/lib/talons/MegaMenu/useSubMenu.js +20 -0
  22. package/src/overwrites/peregrine/lib/talons/RootComponents/Category/useCategoryContent.js +0 -2
  23. package/src/overwrites/venia-ui/lib/RootComponents/Category/NoProductsFound/index.js +1 -0
  24. package/src/overwrites/venia-ui/lib/RootComponents/Category/NoProductsFound/noProductsFound.js +77 -0
  25. package/src/overwrites/venia-ui/lib/RootComponents/Category/NoProductsFound/noProductsFound.module.css +39 -0
  26. package/src/overwrites/venia-ui/lib/RootComponents/Category/NoProductsFound/noProductsFound.png +0 -0
  27. package/src/overwrites/venia-ui/lib/RootComponents/Category/category.gql.js +17 -0
  28. package/src/overwrites/venia-ui/lib/RootComponents/Category/category.js +91 -0
  29. package/src/overwrites/venia-ui/lib/RootComponents/Category/category.module.css +77 -0
  30. package/src/overwrites/venia-ui/lib/RootComponents/Category/categoryContent.js +12 -14
  31. package/src/overwrites/venia-ui/lib/RootComponents/Category/categoryContent.shimmer.js +74 -0
  32. package/src/overwrites/venia-ui/lib/RootComponents/Category/images/001.jpg +0 -0
  33. package/src/overwrites/venia-ui/lib/RootComponents/Category/images/002.jpg +0 -0
  34. package/src/overwrites/venia-ui/lib/RootComponents/Category/images/003.jpg +0 -0
  35. package/src/overwrites/venia-ui/lib/RootComponents/Category/images/004.jpg +0 -0
  36. package/src/overwrites/venia-ui/lib/RootComponents/Category/images/005.jpg +0 -0
  37. package/src/overwrites/venia-ui/lib/RootComponents/Category/images/006.jpg +0 -0
  38. package/src/overwrites/venia-ui/lib/RootComponents/Category/images/007.jpg +0 -0
  39. package/src/overwrites/venia-ui/lib/RootComponents/Category/images/008.jpg +0 -0
  40. package/src/overwrites/venia-ui/lib/RootComponents/Category/images/009.jpg +0 -0
  41. package/src/overwrites/venia-ui/lib/RootComponents/Category/images/010.jpg +0 -0
  42. package/src/overwrites/venia-ui/lib/RootComponents/Category/images/011.jpg +0 -0
  43. package/src/overwrites/venia-ui/lib/RootComponents/Category/images/012.jpg +0 -0
  44. package/src/overwrites/venia-ui/lib/RootComponents/Category/images/index.js +12 -0
  45. package/src/overwrites/venia-ui/lib/RootComponents/Category/index.js +6 -0
  46. package/src/overwrites/venia-ui/lib/components/Breadcrumbs/breadcrumbs.js +112 -0
  47. package/src/overwrites/venia-ui/lib/components/Breadcrumbs/breadcrumbs.module.css +32 -0
  48. package/src/overwrites/venia-ui/lib/components/Breadcrumbs/breadcrumbs.shimmer.js +24 -0
  49. package/src/overwrites/venia-ui/lib/components/Breadcrumbs/index.js +2 -0
  50. package/src/overwrites/venia-ui/lib/components/Checkbox/checkbox.js +78 -0
  51. package/src/overwrites/venia-ui/lib/components/Checkbox/checkbox.module.css +73 -0
  52. package/src/overwrites/venia-ui/lib/components/Checkbox/index.js +1 -0
  53. package/src/overwrites/venia-ui/lib/components/FilterModal/CurrentFilters/currentFilter.js +60 -0
  54. package/src/overwrites/venia-ui/lib/components/FilterModal/CurrentFilters/currentFilter.module.css +21 -0
  55. package/src/overwrites/venia-ui/lib/components/FilterModal/CurrentFilters/currentFilters.js +65 -0
  56. package/src/overwrites/venia-ui/lib/components/FilterModal/CurrentFilters/currentFilters.module.css +17 -0
  57. package/src/overwrites/venia-ui/lib/components/FilterModal/CurrentFilters/index.js +1 -0
  58. package/src/overwrites/venia-ui/lib/components/FilterModal/FilterList/filterDefault.js +18 -18
  59. package/src/overwrites/venia-ui/lib/components/FilterModal/FilterList/filterDefault.module.css +0 -0
  60. package/src/overwrites/venia-ui/lib/components/FilterModal/FilterList/filterItem.js +79 -0
  61. package/src/overwrites/venia-ui/lib/components/FilterModal/FilterList/filterItemRadio.js +76 -0
  62. package/src/overwrites/venia-ui/lib/components/FilterModal/FilterList/filterItemRadio.module.css +0 -0
  63. package/src/overwrites/venia-ui/lib/components/FilterModal/FilterList/filterItemRadioGroup.js +86 -0
  64. package/src/overwrites/venia-ui/lib/components/FilterModal/FilterList/filterList.js +265 -0
  65. package/src/overwrites/venia-ui/lib/components/FilterModal/FilterList/filterList.module.css +20 -0
  66. package/src/overwrites/venia-ui/lib/components/FilterModal/FilterList/index.js +1 -0
  67. package/src/overwrites/venia-ui/lib/components/FilterModal/filterBlock.js +135 -0
  68. package/src/overwrites/venia-ui/lib/components/FilterModal/filterBlock.module.css +25 -0
  69. package/src/overwrites/venia-ui/lib/components/FilterModal/filterFooter.js +49 -0
  70. package/src/overwrites/venia-ui/lib/components/FilterModal/filterFooter.module.css +10 -0
  71. package/src/overwrites/venia-ui/lib/components/FilterModal/filterModal.js +166 -0
  72. package/src/overwrites/venia-ui/lib/components/FilterModal/filterModal.module.css +87 -0
  73. package/src/overwrites/venia-ui/lib/components/FilterModal/filterSearch.module.css +3 -0
  74. package/src/overwrites/venia-ui/lib/components/FilterModal/index.js +1 -0
  75. package/src/overwrites/venia-ui/lib/components/FilterSidebar/__tests__/filterSidebar.spec.js +246 -0
  76. package/src/overwrites/venia-ui/lib/components/FilterSidebar/filterSidebar.js +8 -8
  77. package/src/overwrites/venia-ui/lib/components/FilterSidebar/filterSidebar.module.css +57 -58
  78. package/src/overwrites/venia-ui/lib/components/FilterSidebar/filterSidebar.shimmer.js +24 -0
  79. package/src/overwrites/venia-ui/lib/components/FilterSidebar/index.js +2 -0
  80. package/src/overwrites/venia-ui/lib/components/Gallery/addToCartButton.js +116 -0
  81. package/src/overwrites/venia-ui/lib/components/Gallery/addToCartButton.module.css +38 -0
  82. package/src/overwrites/venia-ui/lib/components/Gallery/gallery.js +56 -0
  83. package/src/overwrites/venia-ui/lib/components/Gallery/gallery.module.css +28 -0
  84. package/src/overwrites/venia-ui/lib/components/Gallery/gallery.shimmer.js +39 -0
  85. package/src/overwrites/venia-ui/lib/components/Gallery/index.js +3 -0
  86. package/src/overwrites/venia-ui/lib/components/Gallery/item.js +204 -0
  87. package/src/overwrites/venia-ui/lib/components/Gallery/item.module.css +109 -0
  88. package/src/overwrites/venia-ui/lib/components/Gallery/item.shimmer.js +38 -0
  89. package/src/overwrites/venia-ui/lib/components/Gallery/star.js +12 -0
  90. package/src/overwrites/venia-ui/lib/components/Header/accountTrigger.js +98 -0
  91. package/src/overwrites/venia-ui/lib/components/Header/cartTrigger.js +116 -0
  92. package/src/overwrites/venia-ui/lib/components/Header/header.js +12 -9
  93. package/src/overwrites/venia-ui/lib/components/Header/storeSwitcher.js +22 -8
  94. package/src/overwrites/venia-ui/lib/components/Header/storeSwitcher.module.css +107 -0
  95. package/src/overwrites/venia-ui/lib/components/Header/wishlistTrigger.js +23 -0
  96. package/src/overwrites/venia-ui/lib/components/MegaMenu/megaMenuItem.js +1 -1
  97. package/src/overwrites/venia-ui/lib/components/MegaMenu/submenu.module.css +0 -1
  98. package/src/overwrites/venia-ui/lib/components/Pagination/index.js +1 -0
  99. package/src/overwrites/venia-ui/lib/components/Pagination/navButton.js +65 -0
  100. package/src/overwrites/venia-ui/lib/components/Pagination/pagination.js +107 -0
  101. package/src/overwrites/venia-ui/lib/components/Pagination/tile.js +41 -0
  102. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Boolean/boolean.js +74 -0
  103. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Boolean/boolean.module.css +9 -0
  104. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Boolean/index.js +1 -0
  105. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Date/date.js +82 -0
  106. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Date/date.module.css +9 -0
  107. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Date/index.js +1 -0
  108. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/DateTime/dateTime.js +85 -0
  109. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/DateTime/dateTime.module.css +9 -0
  110. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/DateTime/index.js +1 -0
  111. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Multiselect/index.js +1 -0
  112. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Multiselect/multiselect.js +104 -0
  113. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Multiselect/multiselect.module.css +22 -0
  114. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Price/index.js +1 -0
  115. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Price/price.js +74 -0
  116. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Price/price.module.css +9 -0
  117. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Select/index.js +1 -0
  118. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Select/select.js +99 -0
  119. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Select/select.module.css +13 -0
  120. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Text/index.js +1 -0
  121. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Text/text.js +88 -0
  122. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Text/text.module.css +13 -0
  123. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Textarea/index.js +1 -0
  124. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Textarea/textarea.js +94 -0
  125. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Textarea/textarea.module.css +13 -0
  126. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/attributeType.js +67 -0
  127. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/AttributeType/index.js +1 -0
  128. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/customAttributes.js +64 -0
  129. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/customAttributes.module.css +9 -0
  130. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/CustomAttributes/index.js +1 -0
  131. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/index.js +1 -0
  132. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/productFullDetail.gql.js +7 -0
  133. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/productFullDetail.js +413 -0
  134. package/src/overwrites/venia-ui/lib/components/ProductFullDetail/productFullDetail.module.css +203 -0
  135. package/src/overwrites/venia-ui/lib/components/ProductImageCarousel/carousel.js +180 -0
  136. package/src/overwrites/venia-ui/lib/components/ProductImageCarousel/carousel.module.css +102 -0
  137. package/src/overwrites/venia-ui/lib/components/ProductImageCarousel/carousel.shimmer.js +51 -0
  138. package/src/overwrites/venia-ui/lib/components/ProductImageCarousel/carousel.shimmer.module.css +7 -0
  139. package/src/overwrites/venia-ui/lib/components/ProductImageCarousel/index.js +1 -0
  140. package/src/overwrites/venia-ui/lib/components/ProductImageCarousel/thumbnail.js +108 -0
  141. package/src/overwrites/venia-ui/lib/components/ProductImageCarousel/thumbnail.module.css +47 -0
  142. package/src/overwrites/venia-ui/lib/components/ProductSort/index.js +2 -0
  143. package/src/overwrites/venia-ui/lib/components/ProductSort/productSort.js +233 -0
  144. package/src/overwrites/venia-ui/lib/components/ProductSort/productSort.module.css +65 -0
  145. package/src/overwrites/venia-ui/lib/components/ProductSort/productSort.shimmer.js +28 -0
  146. package/src/overwrites/venia-ui/lib/components/ProductSort/productSort.shimmer.module.css +10 -0
  147. package/src/overwrites/venia-ui/lib/components/ProductSort/sortItem.js +57 -0
  148. package/src/overwrites/venia-ui/lib/components/ProductSort/sortItem.module.css +23 -0
  149. package/src/overwrites/venia-ui/lib/components/QuantityStepper/index.js +1 -0
  150. package/src/overwrites/venia-ui/lib/components/QuantityStepper/quantityStepper.js +94 -0
  151. package/src/overwrites/venia-ui/lib/components/QuantityStepper/quantityStepper.module.css +78 -0
  152. package/src/overwrites/venia-ui/lib/components/RichContent/index.js +1 -0
  153. package/src/overwrites/venia-ui/lib/components/RichContent/plainHtmlRenderer.js +17 -0
  154. package/src/overwrites/venia-ui/lib/components/RichContent/richContent.js +59 -0
  155. package/src/overwrites/venia-ui/lib/components/RichContent/richContent.module.css +146 -0
  156. package/src/overwrites/venia-ui/lib/components/RichContent/richContentRenderers.js +7 -0
  157. package/src/overwrites/venia-ui/lib/components/SearchBar/searchBar.module.css +1 -2
  158. package/src/overwrites/venia-ui/lib/components/SearchBar/searchField.js +3 -2
  159. package/src/overwrites/venia-ui/lib/components/TextInput/field.module.css +50 -0
  160. package/src/overwrites/venia-ui/lib/components/TextInput/index.js +1 -0
  161. package/src/overwrites/venia-ui/lib/components/TextInput/textInput.js +48 -0
  162. package/src/overwrites/venia-ui/lib/components/TextInput/textInput.module.css +21 -0
  163. package/src/talons/FilterOption/useFilterOptionModal.js +11 -0
  164. package/src/talons/FilterOptionModal/useFilterOptionModal.js +11 -0
  165. package/src/theme/vars.js +12 -0
@@ -0,0 +1,116 @@
1
+ import React, { Fragment, Suspense } from 'react';
2
+ import { shape, string } from 'prop-types';
3
+ import { ShoppingBag as ShoppingCartIcon } from 'react-feather';
4
+ import { useIntl } from 'react-intl';
5
+
6
+ import { useCartTrigger } from '@magento/peregrine/lib/talons/Header/useCartTrigger';
7
+
8
+ import { useStyle } from '@magento/venia-ui/lib/classify';
9
+ import Icon from '@magento/venia-ui/lib/components/Icon';
10
+ import defaultClasses from '@magento/venia-ui/lib/components/Header/cartTrigger.module.css';
11
+ import { GET_ITEM_COUNT_QUERY } from '@magento/venia-ui/lib/components/Header/cartTrigger.gql';
12
+ import cn from 'classnames';
13
+ import { ShoppingCart } from 'iconsax-react';
14
+ import { darkBlue } from '@riosst100/pwa-marketplace/src/theme/vars';
15
+
16
+ const MiniCart = React.lazy(() => import('@magento/venia-ui/lib/components/MiniCart'));
17
+
18
+ const CartTrigger = props => {
19
+ const {
20
+ handleLinkClick,
21
+ handleTriggerClick,
22
+ itemCount,
23
+ miniCartRef,
24
+ miniCartIsOpen,
25
+ hideCartTrigger,
26
+ setMiniCartIsOpen,
27
+ miniCartTriggerRef
28
+ } = useCartTrigger({
29
+ queries: {
30
+ getItemCountQuery: GET_ITEM_COUNT_QUERY
31
+ }
32
+ });
33
+
34
+ const classes = useStyle(defaultClasses, props.classes);
35
+ const { formatMessage } = useIntl();
36
+ const buttonAriaLabel = formatMessage(
37
+ {
38
+ id: 'cartTrigger.ariaLabel',
39
+ defaultMessage:
40
+ 'Toggle mini cart. You have {count} items in your cart.'
41
+ },
42
+ { count: itemCount }
43
+ );
44
+ const itemCountDisplay = itemCount > 99 ? '99+' : itemCount;
45
+ const triggerClassName = miniCartIsOpen
46
+ ? classes.triggerContainer_open
47
+ : classes.triggerContainer;
48
+
49
+ const maybeItemCounter = itemCount ? (
50
+ <span
51
+ className={cn(
52
+ classes.counter,
53
+ 'bg-yellow-300 min-w-[18px] min-h-[18px] text-[13px] font-regular leading-[18px] text-darkblue-900 top-[-5px]',
54
+ '!left-auto right-[0px]'
55
+ )}
56
+ data-cy="CartTrigger-counter"
57
+ >
58
+ {itemCountDisplay}
59
+ </span>
60
+ ) : null;
61
+
62
+ const cartTrigger = hideCartTrigger ? null : (
63
+ // Because this button behaves differently on desktop and mobile
64
+ // we render two buttons that differ only in their click handler
65
+ // and control which one displays via CSS.
66
+ <Fragment>
67
+ <div className={cn(triggerClassName, '!h-auto')} ref={miniCartTriggerRef}>
68
+ <button
69
+ aria-expanded={miniCartIsOpen}
70
+ aria-label={buttonAriaLabel}
71
+ className={cn(
72
+ classes.trigger,
73
+ 'gap-[5px] !min-h-[30px] !h-auto !min-w-[35px] !w-fit !justify-between',
74
+ )}
75
+ onClick={handleTriggerClick}
76
+ data-cy="CartTrigger-trigger"
77
+ >
78
+ {/* <Icon src={ShoppingCartIcon} /> */}
79
+ <ShoppingCart size="30" color={darkBlue} className={cn('stroke-0')} variant="Outline" />
80
+ {maybeItemCounter}
81
+ </button>
82
+ </div>
83
+ <button
84
+ aria-expanded={miniCartIsOpen}
85
+ aria-label={buttonAriaLabel}
86
+ className={classes.link}
87
+ onClick={handleLinkClick}
88
+ >
89
+ <Icon src={ShoppingCartIcon} />
90
+ {maybeItemCounter}
91
+ </button>
92
+ <Suspense fallback={null}>
93
+ <MiniCart
94
+ isOpen={miniCartIsOpen}
95
+ setIsOpen={setMiniCartIsOpen}
96
+ ref={miniCartRef}
97
+ />
98
+ </Suspense>
99
+ </Fragment>
100
+ );
101
+
102
+ return cartTrigger;
103
+ };
104
+
105
+ export default CartTrigger;
106
+
107
+ CartTrigger.propTypes = {
108
+ classes: shape({
109
+ counter: string,
110
+ link: string,
111
+ openIndicator: string,
112
+ root: string,
113
+ trigger: string,
114
+ triggerContainer: string
115
+ })
116
+ };
@@ -2,8 +2,9 @@ import React, { Fragment, Suspense } from 'react';
2
2
  import { shape, string } from 'prop-types';
3
3
  import { Link, Route } from 'react-router-dom';
4
4
 
5
- import AccountTrigger from '@magento/venia-ui/lib/components/Header/accountTrigger';
6
- import CartTrigger from '@magento/venia-ui/lib/components/Header/cartTrigger';
5
+ import AccountTrigger from '@riosst100/pwa-marketplace/src/overwrites/venia-ui/lib/components/Header/accountTrigger';
6
+ import CartTrigger from '@riosst100/pwa-marketplace/src/overwrites/venia-ui/lib/components/Header/cartTrigger';
7
+ import WishlistTrigger from '@riosst100/pwa-marketplace/src/overwrites/venia-ui/lib/components/Header/wishlistTrigger';
7
8
  import NavTrigger from '@magento/venia-ui/lib/components/Header/navTrigger';
8
9
  import SearchTrigger from '@magento/venia-ui/lib/components/Header/searchTrigger';
9
10
  import OnlineIndicator from '@magento/venia-ui/lib/components/Header/onlineIndicator';
@@ -14,7 +15,8 @@ import { useStyle } from '@magento/venia-ui/lib/classify';
14
15
  import defaultClasses from '@magento/venia-ui/lib/components/Header/header.module.css';
15
16
  import StoreSwitcher from '@magento/venia-ui/lib/components/Header/storeSwitcher';
16
17
  import WebsiteSwitcher from '@riosst100/pwa-marketplace/src/components/WebsiteSwitcher/websiteSwitcher';
17
- import CurrencySwitcher from '@magento/venia-ui/lib/components/Header/currencySwitcher';
18
+ // import CurrencySwitcher from '@magento/venia-ui/lib/components/Header/currencySwitcher';
19
+ import CurrencySwitcher from '@riosst100/pwa-marketplace/src/components/CurrencySwitcher';
18
20
  import BecomeSellerLink from '@riosst100/pwa-marketplace/src/components/BecomeSellerLink/becomeSellerLink';
19
21
  import MegaMenu from '@magento/venia-ui/lib/components/MegaMenu';
20
22
  import PageLoadingIndicator from '@magento/venia-ui/lib/components/PageLoadingIndicator';
@@ -60,8 +62,8 @@ const Header = props => {
60
62
  return (
61
63
  <Fragment>
62
64
  <PageLoadingIndicator absolute />
63
- <div className={classes.switchersContainer}>
64
- <div className={classes.switchers} data-cy="Header-switchers">
65
+ <div className={cn(classes.switchersContainer, '!bg-white border-b border-gray-100')}>
66
+ <div className={cn(classes.switchers, 'flex flex-row gap-x-[25px] !py-2')} data-cy="Header-switchers">
65
67
  <BecomeSellerLink />
66
68
  <WebsiteSwitcher />
67
69
  <StoreSwitcher />
@@ -83,27 +85,28 @@ const Header = props => {
83
85
  <small>Toys | Card | Games</small>
84
86
  </Link>
85
87
  </div>
86
- <div className='flex'>
88
+ <div className='flex flex-auto max-w-[700px]'>
87
89
  <Suspense fallback={searchBarFallback}>
88
90
  <Route>
89
91
  <SearchBar isOpen={true} ref={searchRef} />
90
92
  </Route>
91
93
  </Suspense>
92
94
  </div>
93
- <div className={classes.secondaryActions}>
95
+ <div className={cn(classes.secondaryActions, 'lg_gap-x-5 pl-5 border-l-[1px] border-gray-100')}>
94
96
  {/* <SearchTrigger
95
97
  onClick={handleSearchTriggerClick}
96
98
  ref={searchTriggerRef}
97
99
  /> */}
98
- <AccountTrigger />
100
+ <WishlistTrigger />
99
101
  <CartTrigger />
102
+ <AccountTrigger />
100
103
  </div>
101
104
  </div>
102
105
  </div>
103
106
  <MegaMenu
104
107
  rootClassName={cn('nav-menu w-full max-w-[1210px] px-[15px] mx-[auto] flex-row gap-x-[40px]')}
105
108
  megaMenuItemClassname={cn('px-0 py-[15px] leading-[20px]')}
106
- titleClassName={cn('font-medium leading-[20px]')}
109
+ titleClassName={cn('font-medium leading-[20px] text-darkblue-900')}
107
110
  />
108
111
  </header>
109
112
  <OnlineIndicator
@@ -5,9 +5,12 @@ import { useStoreSwitcher } from '@magento/peregrine/lib/talons/Header/useStoreS
5
5
  import { availableRoutes } from '@magento/venia-ui/lib/components/Routes/routes';
6
6
 
7
7
  import { useStyle } from '@magento/venia-ui/lib/classify';
8
- import defaultClasses from '@magento/venia-ui/lib/components/Header/storeSwitcher.module.css';
8
+ import defaultClasses from '@riosst100/pwa-marketplace/src/overwrites/venia-ui/lib/components/Header/storeSwitcher.module.css';
9
9
  import SwitcherItem from '@magento/venia-ui/lib/components/Header/switcherItem';
10
10
  import Shimmer from '@magento/venia-ui/lib/components/Header/storeSwitcher.shimmer';
11
+ import cn from 'classnames';
12
+ import { ArrowUp2 } from 'iconsax-react';
13
+ import { darkBlue } from '@riosst100/pwa-marketplace/src/theme/vars';
11
14
 
12
15
  const StoreSwitcher = props => {
13
16
  const {
@@ -29,11 +32,13 @@ const StoreSwitcher = props => {
29
32
 
30
33
  const groups = [];
31
34
 
35
+ const hasOnlyOneStore = availableStores.size === 1;
36
+
32
37
  storeGroups.forEach((group, key) => {
33
38
  const stores = [];
34
39
  group.forEach(({ storeName, isCurrent, storeCode, websiteCode }) => {
35
40
  let label = `${storeName}`;
36
-
41
+
37
42
  stores.push(
38
43
  <li
39
44
  aria-selected={currentStoreName}
@@ -57,7 +62,7 @@ const StoreSwitcher = props => {
57
62
  groups.push(
58
63
  <ul
59
64
  role="listbox"
60
- className={classes.groupList}
65
+ className={cn(classes.groupList, 'text-[13px]')}
61
66
  key={key}
62
67
  data-cy="StoreSwitcher-group"
63
68
  >
@@ -67,24 +72,33 @@ const StoreSwitcher = props => {
67
72
  });
68
73
 
69
74
  return (
70
- <div className={classes.root} data-cy="StoreSwitcher-root">
75
+ <div className={cn(classes.root, 'leading-[16px]')} data-cy="StoreSwitcher-root">
71
76
  <button
72
77
  data-cy="StoreSwitcher-triggerButton"
73
- className={classes.trigger}
78
+ className={cn(classes.trigger, 'text-[13px]')}
74
79
  aria-label={currentStoreName || ''}
75
80
  onClick={handleTriggerClick}
76
81
  ref={storeMenuTriggerRef}
77
- data-cy="StoreSwitcher-trigger"
78
82
  aria-expanded={storeMenuIsOpen}
79
83
  >
80
- {currentStoreName || ''}
84
+ <span className='flex flex-row gap-[5px] items-center leading-[16px] text-darkblue-900'>
85
+ {currentStoreName || ''}
86
+ {!hasOnlyOneStore ? (
87
+ <ArrowUp2 size="12" color={darkBlue} className={cn(storeMenuIsOpen ? 'rotate-0 ' : 'rotate-180', 'transition-all stroke-current')} variant="Outline" />
88
+ ) : null}
89
+ </span>
81
90
  </button>
82
91
  <div
83
92
  ref={storeMenuRef}
84
93
  className={menuClassName}
85
94
  data-cy="StoreSwitcher-menu"
86
95
  >
87
- <div className={classes.groups}>{groups}</div>
96
+ <div className={cn(classes.groups, 'text-darkblue-900')}>
97
+ <span className='flex font-medium px-4 py-1 w-full text-[14px]'>
98
+ Language
99
+ </span>
100
+ {groups}
101
+ </div>
88
102
  </div>
89
103
  </div>
90
104
  );
@@ -0,0 +1,107 @@
1
+ .root {
2
+ composes: grid from global;
3
+ composes: items-center from global;
4
+ composes: justify-items-start from global;
5
+ composes: mx-auto from global;
6
+ composes: my-0 from global;
7
+ composes: relative from global;
8
+ composes: sm_justify-items-end from global;
9
+ }
10
+
11
+ .trigger {
12
+ composes: max-w-[15rem] from global;
13
+ composes: overflow-ellipsis from global;
14
+ composes: overflow-hidden from global;
15
+ composes: whitespace-nowrap from global;
16
+
17
+ composes: sm_max-w-full from global;
18
+ }
19
+
20
+ .menu {
21
+ composes: absolute from global;
22
+ composes: bg-white from global;
23
+ composes: border from global;
24
+ composes: border-solid from global;
25
+ composes: border-subtle from global;
26
+ composes: bottom-md from global;
27
+ composes: left-xs from global;
28
+ composes: max-w-[90vw] from global;
29
+ composes: opacity-0 from global;
30
+ composes: pb-2xs from global;
31
+ composes: pt-2xs from global;
32
+ composes: right-auto from global;
33
+ composes: rounded from global;
34
+ composes: shadow-menu from global;
35
+ composes: top-auto from global;
36
+ composes: w-max from global;
37
+ composes: z-menu from global;
38
+ transform: translate3d(0, -8px, 0);
39
+ transition-duration: 192ms;
40
+ transition-timing-function: var(--venia-global-anim-out);
41
+ transition-property: opacity, transform, visibility;
42
+
43
+ /* TODO @TW: review (B6) */
44
+ /* composes: invisible from global; */
45
+ visibility: hidden;
46
+
47
+ composes: sm_bottom-auto from global;
48
+ composes: sm_left-auto from global;
49
+ composes: sm_right-xs from global;
50
+ composes: sm_top-md from global;
51
+ }
52
+
53
+ .menu_open {
54
+ composes: menu;
55
+
56
+ composes: opacity-100 from global;
57
+ transform: translate3d(0, 4px, 0);
58
+ transition-duration: 224ms;
59
+ transition-timing-function: var(--venia-global-anim-in);
60
+
61
+ /* TODO @TW: review (B6) */
62
+ /* composes: visible from global; */
63
+ visibility: visible;
64
+ }
65
+
66
+ .menuItem {
67
+ composes: hover_bg-subtle from global;
68
+ }
69
+
70
+ .groups {
71
+ composes: max-h-[24rem] from global;
72
+ composes: overflow-auto from global;
73
+ }
74
+
75
+ .groupList {
76
+ composes: border-b from global;
77
+ composes: border-solid from global;
78
+ composes: border-subtle from global;
79
+ composes: pb-2xs from global;
80
+ composes: pt-2xs from global;
81
+
82
+ composes: last_border-none from global;
83
+ }
84
+
85
+ /*
86
+ * Mobile-specific styles.
87
+ */
88
+
89
+ @media (max-width: 639px) {
90
+ .root:only-child {
91
+ grid-column: 2;
92
+ }
93
+
94
+ /* TODO @TW: cannot compose */
95
+ .root:last-child .menu {
96
+ right: 1rem;
97
+ left: auto;
98
+ }
99
+
100
+ .menu {
101
+ transform: translate3d(0, 8px, 0);
102
+ }
103
+
104
+ .menu_open {
105
+ transform: translate3d(0, -4px, 0);
106
+ }
107
+ }
@@ -0,0 +1,23 @@
1
+ import React from 'react'
2
+ import { Link } from 'react-router-dom';
3
+ import resourceUrl from '@magento/peregrine/lib/util/makeUrl';
4
+ import { Heart } from 'iconsax-react';
5
+ import { darkBlue } from '@riosst100/pwa-marketplace/src/theme/vars';
6
+ import cn from 'classnames';
7
+
8
+ const wishlistTrigger = () => {
9
+ return (
10
+ <div className='wishlistTrigger'>
11
+ <Link
12
+ aria-label='wishlist-action'
13
+ to={resourceUrl('/wishlist')}
14
+ className={''}
15
+ data-cy="wishlistLink"
16
+ >
17
+ <Heart size="30" color={darkBlue} className={cn('stroke-0')} variant="Outline" />
18
+ </Link>
19
+ </div>
20
+ )
21
+ }
22
+
23
+ export default wishlistTrigger
@@ -85,7 +85,7 @@ const MegaMenuItem = props => {
85
85
  ]);
86
86
 
87
87
  const maybeDownArrowIcon = category.children.length ? (
88
- <ArrowDown2 className='ml-2' size="16" color={textPrimary} variant="Outline" />
88
+ <ArrowDown2 className='ml-2 stroke-current' size="16" color={textPrimary} variant="Outline" />
89
89
  ) : null;
90
90
 
91
91
  const linkAttributes = category.children.length
@@ -37,7 +37,6 @@
37
37
  composes: flex from global;
38
38
  composes: flex-wrap from global;
39
39
  composes: justify-between from global;
40
- composes: max-w-site from global;
41
40
  composes: ml-auto from global;
42
41
  composes: mr-auto from global;
43
42
  }
@@ -0,0 +1 @@
1
+ export { default } from './pagination';
@@ -0,0 +1,65 @@
1
+ import React from 'react';
2
+ import { shape, string } from 'prop-types';
3
+ import {
4
+ ChevronLeft as ChevronLeftIcon,
5
+ ChevronRight as ChevronRightIcon,
6
+ FastForward as FastForwardIcon,
7
+ Rewind as RewindIcon
8
+ } from 'react-feather';
9
+ import cn from 'classnames';
10
+ import { ArrowLeft2, ArrowRight2 } from 'iconsax-react';
11
+ import { blue } from '@riosst100/pwa-marketplace/src/theme/vars';
12
+
13
+ import { useStyle } from '@magento/venia-ui/lib/classify';
14
+ import Icon from '@magento/venia-ui/lib/components/Icon';
15
+ import defaultClasses from '@magento/venia-ui/lib/components/Pagination/navButton.module.css';
16
+
17
+ const icons = new Map()
18
+ .set('ChevronLeft', ChevronLeftIcon)
19
+ .set('ChevronRight', ChevronRightIcon)
20
+ .set('FastForward', FastForwardIcon)
21
+ .set('Rewind', RewindIcon);
22
+
23
+ const NavButton = props => {
24
+ const { active, buttonLabel, name, onClick } = props;
25
+ const iconSrc = icons.get(name);
26
+ const classes = useStyle(defaultClasses, props.classes);
27
+
28
+ const iconClass = active ? classes.icon : classes.icon_disabled;
29
+
30
+ return (
31
+ <button
32
+ aria-label={buttonLabel}
33
+ className={cn(
34
+ classes.root,
35
+ 'border-[1px] border-gray-100 rounded-[5px] !min-h-auto h-fit min-w-[40px] px-[10px] py-[7px]'
36
+ )}
37
+ disabled={!active}
38
+ onClick={onClick}
39
+ >
40
+ {name === 'ChevronLeft' && (
41
+ <ArrowLeft2 size={14} color={blue} className={cn(`stroke-[${blue}]`)} variant="Outline" />
42
+ )}
43
+ {name === 'ChevronRight' && (
44
+ <ArrowRight2 size={14} color={blue} className={cn(`stroke-[${blue}]`)} variant="Outline" />
45
+ )}
46
+ {name !== 'ChevronRight' && name !== 'ChevronLeft' && (
47
+ <Icon className={iconClass} size={20} src={iconSrc} />
48
+ )}
49
+ </button>
50
+ );
51
+ };
52
+
53
+ export default NavButton;
54
+
55
+ NavButton.propTypes = {
56
+ classes: shape({
57
+ icon: string,
58
+ icon_disabled: string,
59
+ root: string
60
+ })
61
+ };
62
+
63
+ NavButton.defaultProps = {
64
+ buttonLabel: 'move to another page'
65
+ };
@@ -0,0 +1,107 @@
1
+ import React, { useMemo } from 'react';
2
+ import { func, number, shape, string } from 'prop-types';
3
+ import { useIntl } from 'react-intl';
4
+ import { usePagination } from '@magento/peregrine/lib/talons/Pagination/usePagination';
5
+
6
+ import { useStyle } from '@magento/venia-ui/lib/classify';
7
+ import defaultClasses from '@magento/venia-ui/lib/components/Pagination/pagination.module.css';
8
+ import Tile from '@riosst100/pwa-marketplace/src/overwrites/venia-ui/lib/components/Pagination/tile';
9
+ import NavButton from '@riosst100/pwa-marketplace/src/overwrites/venia-ui/lib/components/Pagination/navButton';
10
+ import { navButtons } from '@magento/venia-ui/lib/components/Pagination/constants';
11
+ import cn from 'classnames';
12
+
13
+ const Pagination = props => {
14
+ const { currentPage, setPage, totalPages } = props.pageControl;
15
+ const { formatMessage } = useIntl();
16
+ const classes = useStyle(defaultClasses, props.classes);
17
+
18
+ const talonProps = usePagination({
19
+ currentPage,
20
+ setPage,
21
+ totalPages
22
+ });
23
+
24
+ const {
25
+ handleLeftSkip,
26
+ handleRightSkip,
27
+ handleNavBack,
28
+ handleNavForward,
29
+ isActiveLeft,
30
+ isActiveRight,
31
+ tiles
32
+ } = talonProps;
33
+
34
+ const navigationTiles = useMemo(
35
+ () =>
36
+ tiles.map(tileNumber => {
37
+ return (
38
+ <Tile
39
+ isActive={tileNumber === currentPage}
40
+ key={tileNumber}
41
+ number={tileNumber}
42
+ onClick={setPage}
43
+ />
44
+ );
45
+ }),
46
+ [currentPage, tiles, setPage]
47
+ );
48
+
49
+ if (totalPages === 1) {
50
+ return null;
51
+ }
52
+
53
+ return (
54
+ <div className={cn(classes.root, 'gap-x-[10px] !border-0')} data-cy="Pagination-root">
55
+ {/* <NavButton
56
+ name={navButtons.firstPage.name}
57
+ active={isActiveLeft}
58
+ onClick={handleLeftSkip}
59
+ buttonLabel={formatMessage({
60
+ id: 'pagination.firstPage',
61
+ defaultMessage: navButtons.firstPage.buttonLabel
62
+ })}
63
+ /> */}
64
+ <NavButton
65
+ name={navButtons.prevPage.name}
66
+ active={isActiveLeft}
67
+ onClick={handleNavBack}
68
+ buttonLabel={formatMessage({
69
+ id: 'pagination.prevPage',
70
+ defaultMessage: navButtons.prevPage.buttonLabel
71
+ })}
72
+ />
73
+ {navigationTiles}
74
+ <NavButton
75
+ name={navButtons.nextPage.name}
76
+ active={isActiveRight}
77
+ onClick={handleNavForward}
78
+ buttonLabel={formatMessage({
79
+ id: 'pagination.nextPage',
80
+ defaultMessage: navButtons.nextPage.buttonLabel
81
+ })}
82
+ />
83
+ {/* <NavButton
84
+ name={navButtons.lastPage.name}
85
+ active={isActiveRight}
86
+ onClick={handleRightSkip}
87
+ buttonLabel={formatMessage({
88
+ id: 'pagination.lastPage',
89
+ defaultMessage: navButtons.lastPage.buttonLabel
90
+ })}
91
+ /> */}
92
+ </div>
93
+ );
94
+ };
95
+
96
+ Pagination.propTypes = {
97
+ classes: shape({
98
+ root: string
99
+ }),
100
+ pageControl: shape({
101
+ currentPage: number,
102
+ setPage: func,
103
+ totalPages: number
104
+ }).isRequired
105
+ };
106
+
107
+ export default Pagination;
@@ -0,0 +1,41 @@
1
+ import React, { useCallback } from 'react';
2
+ import { bool, func, number, shape, string } from 'prop-types';
3
+
4
+ import { useStyle } from '@magento/venia-ui/lib/classify';
5
+ import defaultClasses from '@magento/venia-ui/lib/components/Pagination/tile.module.css';
6
+ import cn from 'classnames';
7
+
8
+ const Tile = props => {
9
+ const { isActive, number, onClick } = props;
10
+ const classes = useStyle(defaultClasses, props.classes);
11
+ const rootClass = isActive ? classes.root_active : classes.root;
12
+ const handleClick = useCallback(() => onClick(number), [onClick, number]);
13
+
14
+ return (
15
+ <button
16
+ className={cn(
17
+ rootClass,
18
+ isActive ? 'bg-blue-600 !border-blue-600' : 'bg-white',
19
+ 'border-[1px] border-gray-100 rounded-[5px] !min-h-auto h-fit min-w-[40px] px-[10px] py-[7px]'
20
+ )}
21
+ onClick={handleClick}
22
+ data-cy={isActive ? 'Tile-activeRoot' : 'Tile-root'}
23
+ >
24
+ <span className={cn(isActive ? '!text-white' : 'text-blue-600', 'text-base leading-[16px]')}>
25
+ {number}
26
+ </span>
27
+ </button>
28
+ );
29
+ };
30
+
31
+ Tile.propTypes = {
32
+ classes: shape({
33
+ root: string,
34
+ root_active: string
35
+ }),
36
+ isActive: bool,
37
+ number: number,
38
+ onClick: func
39
+ };
40
+
41
+ export default Tile;