@faststore/core 2.1.1 → 2.1.3

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 (163) hide show
  1. package/.next/BUILD_ID +1 -0
  2. package/.next/build-manifest.json +123 -0
  3. package/.next/cache/.tsbuildinfo +1 -0
  4. package/.next/cache/config.json +7 -0
  5. package/.next/cache/eslint/.cache_1gneedd +1 -0
  6. package/.next/cache/next-server.js.nft.json +1 -0
  7. package/.next/cache/webpack/client-production/0.pack +0 -0
  8. package/.next/cache/webpack/client-production/index.pack +0 -0
  9. package/.next/cache/webpack/server-production/0.pack +0 -0
  10. package/.next/cache/webpack/server-production/index.pack +0 -0
  11. package/.next/export-marker.json +1 -0
  12. package/.next/images-manifest.json +1 -0
  13. package/.next/next-server.js.nft.json +1 -0
  14. package/.next/package.json +1 -0
  15. package/.next/prerender-manifest.json +1 -0
  16. package/.next/react-loadable-manifest.json +44 -0
  17. package/.next/required-server-files.json +1 -0
  18. package/.next/routes-manifest.json +1 -0
  19. package/.next/server/chunks/123.js +58 -0
  20. package/.next/server/chunks/143.js +106 -0
  21. package/.next/server/chunks/183.js +90 -0
  22. package/.next/server/chunks/184.js +61 -0
  23. package/.next/server/chunks/205.js +722 -0
  24. package/.next/server/chunks/247.js +61 -0
  25. package/.next/server/chunks/253.js +535 -0
  26. package/.next/server/chunks/269.js +516 -0
  27. package/.next/server/chunks/287.js +58 -0
  28. package/.next/server/chunks/289.js +242 -0
  29. package/.next/server/chunks/312.js +697 -0
  30. package/.next/server/chunks/350.js +143 -0
  31. package/.next/server/chunks/378.js +326 -0
  32. package/.next/server/chunks/487.js +9142 -0
  33. package/.next/server/chunks/502.js +626 -0
  34. package/.next/server/chunks/513.js +257 -0
  35. package/.next/server/chunks/576.js +90 -0
  36. package/.next/server/chunks/597.js +211 -0
  37. package/.next/server/chunks/650.js +9142 -0
  38. package/.next/server/chunks/676.js +32 -0
  39. package/.next/server/chunks/701.js +87 -0
  40. package/.next/server/chunks/74.js +3949 -0
  41. package/.next/server/chunks/825.js +4039 -0
  42. package/.next/server/chunks/854.js +72 -0
  43. package/.next/server/chunks/859.js +959 -0
  44. package/.next/server/chunks/886.js +120 -0
  45. package/.next/server/chunks/907.js +1957 -0
  46. package/.next/server/chunks/98.js +124 -0
  47. package/.next/server/chunks/font-manifest.json +1 -0
  48. package/.next/server/font-manifest.json +1 -0
  49. package/.next/server/middleware-build-manifest.js +1 -0
  50. package/.next/server/middleware-manifest.json +6 -0
  51. package/.next/server/middleware-react-loadable-manifest.js +1 -0
  52. package/.next/server/pages/404.js +386 -0
  53. package/.next/server/pages/404.js.nft.json +1 -0
  54. package/.next/server/pages/500.js +388 -0
  55. package/.next/server/pages/500.js.nft.json +1 -0
  56. package/.next/server/pages/[...slug].js +778 -0
  57. package/.next/server/pages/[...slug].js.nft.json +1 -0
  58. package/.next/server/pages/[slug]/p.js +2366 -0
  59. package/.next/server/pages/[slug]/p.js.nft.json +1 -0
  60. package/.next/server/pages/_app.js +281 -0
  61. package/.next/server/pages/_app.js.nft.json +1 -0
  62. package/.next/server/pages/_document.js +340 -0
  63. package/.next/server/pages/_document.js.nft.json +1 -0
  64. package/.next/server/pages/_error.js +164 -0
  65. package/.next/server/pages/_error.js.nft.json +1 -0
  66. package/.next/server/pages/account.js +363 -0
  67. package/.next/server/pages/account.js.nft.json +1 -0
  68. package/.next/server/pages/api/graphql.js +365 -0
  69. package/.next/server/pages/api/graphql.js.nft.json +1 -0
  70. package/.next/server/pages/api/preview.js +119 -0
  71. package/.next/server/pages/api/preview.js.nft.json +1 -0
  72. package/.next/server/pages/checkout.js +363 -0
  73. package/.next/server/pages/checkout.js.nft.json +1 -0
  74. package/.next/server/pages/en-US/404.html +81 -0
  75. package/.next/server/pages/en-US/404.json +1 -0
  76. package/.next/server/pages/en-US/500.html +81 -0
  77. package/.next/server/pages/en-US/500.json +1 -0
  78. package/.next/server/pages/en-US/account.html +81 -0
  79. package/.next/server/pages/en-US/account.json +1 -0
  80. package/.next/server/pages/en-US/checkout.html +81 -0
  81. package/.next/server/pages/en-US/checkout.json +1 -0
  82. package/.next/server/pages/en-US/login.html +81 -0
  83. package/.next/server/pages/en-US/login.json +1 -0
  84. package/.next/server/pages/en-US/s.html +81 -0
  85. package/.next/server/pages/en-US/s.json +1 -0
  86. package/.next/server/pages/en-US.html +81 -0
  87. package/.next/server/pages/en-US.json +1 -0
  88. package/.next/server/pages/index.js +1018 -0
  89. package/.next/server/pages/index.js.nft.json +1 -0
  90. package/.next/server/pages/login.js +368 -0
  91. package/.next/server/pages/login.js.nft.json +1 -0
  92. package/.next/server/pages/s.js +466 -0
  93. package/.next/server/pages/s.js.nft.json +1 -0
  94. package/.next/server/pages-manifest.json +16 -0
  95. package/.next/server/webpack-api-runtime.js +229 -0
  96. package/.next/server/webpack-runtime.js +229 -0
  97. package/.next/static/chunks/143.dd8a556e6957baa1.js +1 -0
  98. package/.next/static/chunks/234-7d72b0ee52936c13.js +1 -0
  99. package/.next/static/chunks/495.0ecd099878b2a36d.js +1 -0
  100. package/.next/static/chunks/502.ec90d1859d393d34.js +1 -0
  101. package/.next/static/chunks/597.f8d0595b113c70af.js +1 -0
  102. package/.next/static/chunks/64.7ea3677ac3a10e00.js +1 -0
  103. package/.next/static/chunks/651.7142f31ce1e052b3.js +1 -0
  104. package/.next/static/chunks/682-5cfea9ed52851ed1.js +1 -0
  105. package/.next/static/chunks/738-a5ff304828f20cbf.js +1 -0
  106. package/.next/static/chunks/741.52f7fb873418346f.js +1 -0
  107. package/.next/static/chunks/791-727eda8f766aa791.js +1 -0
  108. package/.next/static/chunks/98.97381d2021f86cd9.js +1 -0
  109. package/.next/static/chunks/framework-dfd14d7ce6600b03.js +1 -0
  110. package/.next/static/chunks/main-fd466221927468fd.js +1 -0
  111. package/.next/static/chunks/pages/404-c3b320b915df45bb.js +1 -0
  112. package/.next/static/chunks/pages/500-d37a3a2e931f6995.js +1 -0
  113. package/.next/static/chunks/pages/[...slug]-d4e0a671c6248369.js +1 -0
  114. package/.next/static/chunks/pages/[slug]/p-2ad8b84fd5d98814.js +1 -0
  115. package/.next/static/chunks/pages/_app-79d333aa6001a806.js +1 -0
  116. package/.next/static/chunks/pages/_error-a7a0c1d9bfbb4f38.js +1 -0
  117. package/.next/static/chunks/pages/account-86a1b6e7db03bab6.js +1 -0
  118. package/.next/static/chunks/pages/checkout-c77dbc66c0b35ec3.js +1 -0
  119. package/.next/static/chunks/pages/index-2912eeade1da43bf.js +1 -0
  120. package/.next/static/chunks/pages/login-bbf85bc59afce37c.js +1 -0
  121. package/.next/static/chunks/pages/s-dd486933e8ba7fbf.js +1 -0
  122. package/.next/static/chunks/polyfills-c67a75d1b6f99dc8.js +1 -0
  123. package/.next/static/chunks/webpack-c5cf5350bcb7f6f4.js +1 -0
  124. package/.next/static/css/0f8ce5203de8ae6f.css +1 -0
  125. package/.next/static/css/104f0f3ce3be32c6.css +1 -0
  126. package/.next/static/css/23a9d5dfc051ec6e.css +1 -0
  127. package/.next/static/css/287f5ba239375052.css +1 -0
  128. package/.next/static/css/2e00f7ba49c754b3.css +1 -0
  129. package/.next/static/css/6e41f1b6078c14c1.css +1 -0
  130. package/.next/static/css/7d822a137c54a781.css +1 -0
  131. package/.next/static/css/c7fc1f563fa33060.css +1 -0
  132. package/.next/static/css/d4a0d9df8c6df555.css +1 -0
  133. package/.next/static/css/e02cdad8fc000339.css +1 -0
  134. package/.next/static/hHM-WaPbC6D9MU3Qh2tZ1/_buildManifest.js +1 -0
  135. package/.next/static/hHM-WaPbC6D9MU3Qh2tZ1/_ssgManifest.js +1 -0
  136. package/.next/trace +72 -0
  137. package/.turbo/turbo-build.log +5 -5
  138. package/package.json +2 -2
  139. package/public/~partytown/debug/partytown-atomics.js +556 -0
  140. package/public/~partytown/debug/partytown-media.js +374 -0
  141. package/public/~partytown/debug/partytown-sandbox-sw.js +543 -0
  142. package/public/~partytown/debug/partytown-sw.js +59 -0
  143. package/public/~partytown/debug/partytown-ww-atomics.js +1789 -0
  144. package/public/~partytown/debug/partytown-ww-sw.js +1781 -0
  145. package/public/~partytown/debug/partytown.js +72 -0
  146. package/public/~partytown/partytown-atomics.js +2 -0
  147. package/public/~partytown/partytown-media.js +2 -0
  148. package/public/~partytown/partytown-sw.js +2 -0
  149. package/public/~partytown/partytown.js +2 -0
  150. package/src/components/product/ProductGrid/ProductGrid.tsx +22 -6
  151. package/src/components/search/Filter/Filter.tsx +12 -3
  152. package/src/components/sections/ProductDetails/Overrides.tsx +38 -2
  153. package/src/components/sections/ProductDetails/ProductDetails.tsx +45 -16
  154. package/src/components/sections/ProductDetails/section.module.scss +1 -0
  155. package/src/components/sections/ProductGallery/Overrides.tsx +52 -0
  156. package/src/components/ui/ImageGallery/ImageGallery.tsx +25 -14
  157. package/src/components/ui/ProductDetails/ProductDetailsSettings.tsx +32 -18
  158. package/src/components/ui/ProductGallery/ProductGallery.tsx +77 -37
  159. package/src/components/ui/ProductShelf/ProductShelf.tsx +1 -1
  160. package/src/components/ui/ShippingSimulation/ShippingSimulation.tsx +1 -2
  161. package/src/customizations/components/overrides/ProductDetails.tsx +15 -1
  162. package/src/customizations/components/overrides/ProductGallery.tsx +24 -0
  163. package/src/typings/overrides.d.ts +23 -0
@@ -1,16 +1,18 @@
1
- import {
2
- ImageElementData,
3
- ImageZoom,
4
- ImageGallery as UIImageGallery,
5
- } from '@faststore/ui'
1
+ import { ImageElementData } from '@faststore/ui'
6
2
  import { useEffect, useState } from 'react'
7
3
 
8
4
  import { useRouter } from 'next/router'
9
- import { Image } from 'src/components/ui/Image'
10
5
 
11
- const ImageComponent = ({ url, alternateName }) => (
12
- <Image src={url} alt={alternateName} width={68} height={68} />
13
- )
6
+ import {
7
+ Components,
8
+ Props,
9
+ } from 'src/components/sections/ProductDetails/Overrides'
10
+
11
+ const ImageComponent = ({ url, alternateName }) => {
12
+ const { __experimentalImageGalleryImage: Image } = Components
13
+
14
+ return <Image src={url} alt={alternateName} width={68} height={68} />
15
+ }
14
16
 
15
17
  export interface ImageGalleryProps {
16
18
  images: ImageElementData[]
@@ -23,25 +25,34 @@ const ImageGallery = ({ images, ...otherProps }: ImageGalleryProps) => {
23
25
 
24
26
  useEffect(() => setSelectedImageIdx(0), [dynamicRoute])
25
27
 
28
+ // Deconstructing the object to avoid circular dependency errors
29
+ const {
30
+ ImageGallery: ImageGalleryWrapper,
31
+ ImageZoom,
32
+ __experimentalImageGalleryImage: Image,
33
+ } = Components
34
+
26
35
  return (
27
- <UIImageGallery
36
+ <ImageGalleryWrapper
37
+ {...Props['ImageGallery']}
28
38
  images={images}
29
39
  ImageComponent={ImageComponent}
30
40
  selectedImageIdx={selectedImageIdx}
31
41
  setSelectedImageIdx={setSelectedImageIdx}
32
42
  {...otherProps}
33
43
  >
34
- <ImageZoom>
44
+ <ImageZoom {...Props['ImageZoom']}>
35
45
  <Image
36
- src={currentImage.url}
37
- alt={currentImage.alternateName}
38
46
  sizes="(max-width: 360px) 50vw, (max-width: 768px) 90vw, 50vw"
39
47
  width={691}
40
48
  height={691 * (3 / 4)}
41
49
  loading="eager"
50
+ {...Props['__experimentalImageGalleryImage']}
51
+ src={currentImage.url}
52
+ alt={currentImage.alternateName}
42
53
  />
43
54
  </ImageZoom>
44
- </UIImageGallery>
55
+ </ImageGalleryWrapper>
45
56
  )
46
57
  }
47
58
 
@@ -1,11 +1,5 @@
1
1
  import type { Dispatch, SetStateAction } from 'react'
2
2
 
3
- import {
4
- Icon as UIIcon,
5
- Price as UIPrice,
6
- QuantitySelector as UIQuantitySelector,
7
- } from '@faststore/ui'
8
-
9
3
  import type { ProductDetailsFragment_ProductFragment } from '@generated/graphql'
10
4
 
11
5
  import { useBuyButton } from 'src/sdk/cart/useBuyButton'
@@ -14,9 +8,12 @@ import { useFormattedPrice } from 'src/sdk/product/useFormattedPrice'
14
8
  import Selectors from 'src/components/ui/SkuSelector'
15
9
  import AddToCartLoadingSkeleton from './AddToCartLoadingSkeleton'
16
10
 
17
- import { Components } from 'src/components/sections/ProductDetails/Overrides'
11
+ import {
12
+ Components,
13
+ Props,
14
+ } from 'src/components/sections/ProductDetails/Overrides'
18
15
 
19
- const { BuyButton } = Components
16
+ const { BuyButton, Icon, Price, QuantitySelector } = Components
20
17
 
21
18
  interface ProductDetailsSettingsProps {
22
19
  product: ProductDetailsFragment_ProductFragment
@@ -36,7 +33,10 @@ function ProductDetailsSettings({
36
33
  isValidating,
37
34
  quantity,
38
35
  setQuantity,
39
- buyButtonIcon: { icon: buyButtonIconName, alt: buyButtonIconAlt },
36
+ buyButtonIcon: {
37
+ icon: buyButtonIconName = Props['Icon'].name,
38
+ alt: buyButtonIconAlt = Props['Icon']['aria-label'],
39
+ },
40
40
  }: ProductDetailsSettingsProps) {
41
41
  const {
42
42
  id,
@@ -77,25 +77,34 @@ function ProductDetailsSettings({
77
77
  <>
78
78
  <section data-fs-product-details-values>
79
79
  <div data-fs-product-details-prices>
80
- <UIPrice
81
- value={listPrice}
80
+ <Price
82
81
  formatter={useFormattedPrice}
83
82
  testId="list-price"
84
- data-value={listPrice}
85
83
  variant="listing"
86
84
  SRText="Original price:"
85
+ {...Props['Price']}
86
+ value={listPrice}
87
+ data-value={listPrice}
87
88
  />
88
- <UIPrice
89
- value={lowPrice}
89
+ <Price
90
90
  formatter={useFormattedPrice}
91
91
  testId="price"
92
- data-value={lowPrice}
93
92
  variant="spot"
94
93
  className="text__lead"
95
94
  SRText="Sale Price:"
95
+ {...Props['Price']}
96
+ value={lowPrice}
97
+ data-value={lowPrice}
96
98
  />
97
99
  </div>
98
- <UIQuantitySelector min={1} max={10} onChange={setQuantity} />
100
+ <QuantitySelector
101
+ min={1}
102
+ max={10}
103
+ {...Props['QuantitySelector']}
104
+ // Dynamic props shouldn't be overridable
105
+ // This decision can be reviewed later if needed
106
+ onChange={setQuantity}
107
+ />
99
108
  </section>
100
109
  {skuVariants && (
101
110
  <Selectors
@@ -114,10 +123,15 @@ function ProductDetailsSettings({
114
123
  <AddToCartLoadingSkeleton />
115
124
  ) : (
116
125
  <BuyButton
117
- disabled={buyDisabled}
126
+ {...Props['BuyButton']}
118
127
  icon={
119
- <UIIcon aria-label={buyButtonIconAlt} name={buyButtonIconName} />
128
+ <Icon
129
+ {...Props['Icon']}
130
+ aria-label={buyButtonIconAlt}
131
+ name={buyButtonIconName}
132
+ />
120
133
  }
134
+ disabled={buyDisabled}
121
135
  {...buyProps}
122
136
  >
123
137
  {buyButtonTitle || 'Add to Cart'}
@@ -1,14 +1,9 @@
1
1
  import { useSearch } from '@faststore/sdk'
2
- import {
3
- Button as UIButton,
4
- LinkButton as UILinkButton,
5
- Skeleton as UISkeleton,
6
- } from '@faststore/ui'
7
2
  import { NextSeo } from 'next-seo'
8
3
  import type { MouseEvent } from 'react'
9
4
  import { Suspense, lazy } from 'react'
10
5
 
11
- import { Icon, useUI } from '@faststore/ui'
6
+ import { useUI } from '@faststore/ui'
12
7
  import Filter from 'src/components/search/Filter'
13
8
  import Sort from 'src/components/search/Sort'
14
9
  import FilterSkeleton from 'src/components/skeletons/FilterSkeleton'
@@ -21,10 +16,25 @@ import { SortProps } from 'src/components/search/Sort/Sort'
21
16
  import { useDelayedFacets } from './useDelayedFacets'
22
17
  import { useDelayedPagination } from './useDelayedPagination'
23
18
  import { useProductsPrefetch } from './usePageProducts'
19
+ import {
20
+ Components,
21
+ Props,
22
+ } from 'src/components/sections/ProductGallery/Overrides'
24
23
 
25
24
  const GalleryPage = lazy(() => import('./ProductGalleryPage'))
26
25
  const GalleryPageSkeleton = <ProductGridSkeleton loading />
27
26
 
27
+ const {
28
+ Button,
29
+ FilterIcon,
30
+ PrevIcon,
31
+ ResultsCountSkeleton,
32
+ SortSkeleton,
33
+ FilterButtonSkeleton,
34
+ LinkButtonPrev,
35
+ LinkButtonNext,
36
+ } = Components
37
+
28
38
  export interface ProductGalleryProps {
29
39
  title?: string
30
40
  searchTerm?: string
@@ -98,49 +108,68 @@ function ProductGallery({
98
108
  </FilterSkeleton>
99
109
  </div>
100
110
  <div data-fs-product-listing-results-count data-count={totalCount}>
101
- <UISkeleton
111
+ <ResultsCountSkeleton
102
112
  data-fs-product-listing-results-count-skeleton
103
- loading={!productGalleryData}
104
113
  size={{ width: '100%', height: '1.5rem' }}
114
+ {...Props['ResultsCountSkeleton']}
115
+ // Dynamic props shouldn't be overridable
116
+ // This decision can be reviewed later if needed
117
+ loading={!productGalleryData}
105
118
  >
106
119
  <h2 data-testid="total-product-count">
107
120
  {totalCount} {totalCountLabel}
108
121
  </h2>
109
- </UISkeleton>
122
+ </ResultsCountSkeleton>
110
123
  </div>
111
124
  <div data-fs-product-listing-sort>
112
- <UISkeleton
125
+ <SortSkeleton
113
126
  data-fs-product-listing-sort-skeleton
114
- loading={facets?.length === 0}
115
127
  size={{ width: 'auto', height: '1.5rem' }}
128
+ {...Props['SortSkeleton']}
129
+ // Dynamic props shouldn't be overridable
130
+ // This decision can be reviewed later if needed
131
+ loading={facets?.length === 0}
116
132
  >
117
133
  <Sort
118
134
  label={sortBySelector?.label}
119
135
  options={sortBySelector?.options}
120
136
  />
121
- </UISkeleton>
122
- <UISkeleton
137
+ </SortSkeleton>
138
+ <FilterButtonSkeleton
123
139
  data-fs-product-listing-filter-button-skeleton
124
- loading={facets?.length === 0}
125
140
  size={{ width: '6rem', height: '1.5rem' }}
141
+ {...Props['FilterButtonSkeleton']}
142
+ // Dynamic props shouldn't be overridable
143
+ // This decision can be reviewed later if needed
144
+ loading={facets?.length === 0}
126
145
  >
127
- <UIButton
146
+ <Button
128
147
  variant="tertiary"
129
148
  data-testid="open-filter-button"
130
149
  icon={
131
- <Icon
132
- name={filter?.mobileOnly?.filterButton?.icon?.icon}
133
- aria-label={filter?.mobileOnly?.filterButton?.icon?.alt}
150
+ <FilterIcon
134
151
  width={16}
135
152
  height={16}
153
+ {...Props['FilterIcon']}
154
+ name={
155
+ filter?.mobileOnly?.filterButton?.icon?.icon ??
156
+ Props['FilterIcon'].name
157
+ }
158
+ aria-label={
159
+ filter?.mobileOnly?.filterButton?.icon?.alt ??
160
+ Props['FilterIcon']['aria-label']
161
+ }
136
162
  />
137
163
  }
138
164
  iconPosition="left"
165
+ {...Props['Button']}
166
+ // Dynamic props shouldn't be overridable
167
+ // This decision can be reviewed later if needed
139
168
  onClick={openFilter}
140
169
  >
141
170
  {filter?.mobileOnly?.filterButton?.label}
142
- </UIButton>
143
- </UISkeleton>
171
+ </Button>
172
+ </FilterButtonSkeleton>
144
173
  </div>
145
174
  <div data-fs-product-listing-results>
146
175
  {/* Add link to previous page. This helps on SEO */}
@@ -149,30 +178,38 @@ function ProductGallery({
149
178
  <NextSeo
150
179
  additionalLinkTags={[{ rel: 'prev', href: prev.link }]}
151
180
  />
152
- <UILinkButton
153
- onClick={(e: MouseEvent<HTMLElement>) => {
154
- e.currentTarget.blur()
155
- e.preventDefault()
156
- addPrevPage()
157
- }}
158
- href={prev.link}
181
+ <LinkButtonPrev
159
182
  rel="prev"
160
183
  variant="secondary"
161
184
  iconPosition="left"
162
185
  icon={
163
- <Icon
164
- name={previousPageButton?.icon?.icon}
165
- aria-label={
166
- previousPageButton?.icon?.alt ?? previousPageButton?.label
167
- }
186
+ <PrevIcon
168
187
  width={16}
169
188
  height={16}
170
189
  weight="bold"
190
+ {...Props['PrevIcon']}
191
+ name={
192
+ previousPageButton?.icon?.icon ?? Props['PrevIcon'].name
193
+ }
194
+ aria-label={
195
+ previousPageButton?.icon?.alt ??
196
+ previousPageButton?.label ??
197
+ Props['PrevIcon']['aria-label']
198
+ }
171
199
  />
172
200
  }
201
+ {...Props['LinkButtonPrev']}
202
+ // Dynamic props shouldn't be overridable
203
+ // This decision can be reviewed later if needed
204
+ onClick={(e: MouseEvent<HTMLElement>) => {
205
+ e.currentTarget.blur()
206
+ e.preventDefault()
207
+ addPrevPage()
208
+ }}
209
+ href={prev.link}
173
210
  >
174
211
  {previousPageButton?.label}
175
- </UILinkButton>
212
+ </LinkButtonPrev>
176
213
  </div>
177
214
  )}
178
215
  {/* Render ALL products */}
@@ -196,19 +233,22 @@ function ProductGallery({
196
233
  <NextSeo
197
234
  additionalLinkTags={[{ rel: 'next', href: next.link }]}
198
235
  />
199
- <UILinkButton
236
+ <LinkButtonNext
200
237
  testId="show-more"
238
+ rel="next"
239
+ variant="secondary"
240
+ {...Props['LinkButtonNext']}
241
+ // Dynamic props shouldn't be overridable
242
+ // This decision can be reviewed later if needed
201
243
  onClick={(e: MouseEvent<HTMLElement>) => {
202
244
  e.currentTarget.blur()
203
245
  e.preventDefault()
204
246
  addNextPage()
205
247
  }}
206
248
  href={next.link}
207
- rel="next"
208
- variant="secondary"
209
249
  >
210
250
  {loadMorePageButton?.label}
211
- </UILinkButton>
251
+ </LinkButtonNext>
212
252
  </div>
213
253
  )}
214
254
  </div>
@@ -98,7 +98,7 @@ function ProductShelf({
98
98
  {...Props['__experimentalProductCard']}
99
99
  bordered={bordered}
100
100
  showDiscountBadge={showDiscountBadge}
101
- // Dynamic props, shouldn't be overridable
101
+ // Dynamic props shouldn't be overridable
102
102
  // This decision can be reviewed later if needed
103
103
  key={`${product.node.id}`}
104
104
  product={product.node}
@@ -8,8 +8,6 @@ import { useShippingSimulation } from './useShippingSimulation'
8
8
 
9
9
  import { Components } from 'src/components/sections/ProductDetails/Overrides'
10
10
 
11
- const { ShippingSimulation: ShippingSimulationWrapper } = Components
12
-
13
11
  type ShippingSimulationOptionalProps =
14
12
  | 'title'
15
13
  | 'formatter'
@@ -58,6 +56,7 @@ export default function ShippingSimulation({
58
56
  ...otherProps
59
57
  }: ShippingSimulationProps) {
60
58
  const { country, postalCode: sessionPostalCode } = useSession()
59
+ const { ShippingSimulation: ShippingSimulationWrapper } = Components
61
60
 
62
61
  const {
63
62
  input,
@@ -6,7 +6,21 @@ const SECTION = 'ProductDetails' as const
6
6
 
7
7
  const overrides: SectionOverride[typeof SECTION] = {
8
8
  name: SECTION,
9
- components: {},
9
+ components: {
10
+ ProductTitle: { props: {} },
11
+ DiscountBadge: { props: {} },
12
+ BuyButton: { props: {} },
13
+ Icon: { props: {} },
14
+ Price: { props: {} },
15
+ QuantitySelector: { props: {} },
16
+ SkuSelector: { props: {} },
17
+ ShippingSimulation: { props: {} },
18
+ ImageGallery: { props: {} },
19
+ ImageZoom: { props: {} },
20
+ __experimentalImageGalleryImage: { props: {} },
21
+ __experimentalImageGallery: { props: {} },
22
+ __experimentalShippingSimulation: { props: {} },
23
+ },
10
24
  }
11
25
 
12
26
  export default overrides
@@ -0,0 +1,24 @@
1
+ // This is an example of how it can be used on the starter.
2
+
3
+ import { SectionOverride } from 'src/typings/overrides'
4
+
5
+ const SECTION = 'ProductGallery' as const
6
+
7
+ const overrides: SectionOverride[typeof SECTION] = {
8
+ name: SECTION,
9
+ components: {
10
+ Button: { props: {} },
11
+ FilterIcon: { props: {} },
12
+ PrevIcon: { props: {} },
13
+ ResultsCountSkeleton: { props: {} },
14
+ SortSkeleton: { props: {} },
15
+ FilterButtonSkeleton: { props: {} },
16
+ LinkButtonPrev: { props: {} },
17
+ LinkButtonNext: { props: {} },
18
+ __experimentalFilterDesktop: { props: {} },
19
+ __experimentalFilterSlider: { props: {} },
20
+ __experimentalProductCard: { props: {} },
21
+ },
22
+ }
23
+
24
+ export default overrides
@@ -10,8 +10,16 @@ export const SECTIONS = {
10
10
  'ProductTitle',
11
11
  'DiscountBadge',
12
12
  'BuyButton',
13
+ 'Icon',
14
+ 'Price',
15
+ 'QuantitySelector',
13
16
  'SkuSelector',
14
17
  'ShippingSimulation',
18
+ 'ImageGallery',
19
+ 'ImageZoom',
20
+ '__experimentalImageGalleryImage',
21
+ '__experimentalImageGallery',
22
+ '__experimentalShippingSimulation',
15
23
  ],
16
24
  },
17
25
  ProductShelf: {
@@ -39,6 +47,21 @@ export const SECTIONS = {
39
47
  Breadcrumb: {
40
48
  components: ['Breadcrumb', 'Icon'],
41
49
  },
50
+ ProductGallery: {
51
+ components: [
52
+ 'Button',
53
+ 'FilterIcon',
54
+ 'PrevIcon',
55
+ 'ResultsCountSkeleton',
56
+ 'SortSkeleton',
57
+ 'FilterButtonSkeleton',
58
+ 'LinkButtonPrev',
59
+ 'LinkButtonNext',
60
+ '__experimentalFilterDesktop',
61
+ '__experimentalFilterSlider',
62
+ '__experimentalProductCard',
63
+ ],
64
+ },
42
65
  } as const
43
66
 
44
67
  // export type ComponentOrProps =