@faststore/core 2.2.69 → 2.2.71

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 (145) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +62 -52
  3. package/.next/cache/.tsbuildinfo +1 -1
  4. package/.next/cache/config.json +3 -3
  5. package/.next/cache/eslint/.cache_1gneedd +1 -1
  6. package/.next/cache/next-server.js.nft.json +1 -1
  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/next-server.js.nft.json +1 -1
  12. package/.next/prerender-manifest.json +1 -1
  13. package/.next/react-loadable-manifest.json +4 -4
  14. package/.next/routes-manifest.json +1 -1
  15. package/.next/server/chunks/117.js +427 -0
  16. package/.next/server/chunks/184.js +61 -0
  17. package/.next/server/chunks/350.js +2846 -35
  18. package/.next/server/chunks/585.js +22 -0
  19. package/.next/server/chunks/632.js +514 -0
  20. package/.next/server/chunks/661.js +1451 -0
  21. package/.next/server/chunks/693.js +58 -0
  22. package/.next/server/chunks/719.js +84 -0
  23. package/.next/server/chunks/74.js +987 -6854
  24. package/.next/server/chunks/779.js +58 -0
  25. package/.next/server/chunks/854.js +72 -0
  26. package/.next/server/chunks/863.js +22 -0
  27. package/.next/server/chunks/{520.js → 898.js} +250 -30
  28. package/.next/server/chunks/903.js +1926 -0
  29. package/.next/server/middleware-build-manifest.js +1 -1
  30. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  31. package/.next/server/pages/404.js +0 -21
  32. package/.next/server/pages/404.js.nft.json +1 -1
  33. package/.next/server/pages/500.js +0 -21
  34. package/.next/server/pages/500.js.nft.json +1 -1
  35. package/.next/server/pages/[...slug].js +9 -9
  36. package/.next/server/pages/[...slug].js.nft.json +1 -1
  37. package/.next/server/pages/[slug]/p.js +1373 -33
  38. package/.next/server/pages/[slug]/p.js.nft.json +1 -1
  39. package/.next/server/pages/_app.js.nft.json +1 -1
  40. package/.next/server/pages/account.js +0 -21
  41. package/.next/server/pages/account.js.nft.json +1 -1
  42. package/.next/server/pages/api/graphql.js +1 -1
  43. package/.next/server/pages/api/graphql.js.nft.json +1 -1
  44. package/.next/server/pages/checkout.js +0 -21
  45. package/.next/server/pages/checkout.js.nft.json +1 -1
  46. package/.next/server/pages/en-US/404.html +2 -2
  47. package/.next/server/pages/en-US/500.html +2 -2
  48. package/.next/server/pages/en-US/account.html +2 -2
  49. package/.next/server/pages/en-US/checkout.html +2 -2
  50. package/.next/server/pages/en-US/login.html +2 -2
  51. package/.next/server/pages/en-US/s.html +2 -2
  52. package/.next/server/pages/en-US.html +2 -2
  53. package/.next/server/pages/index.js +5 -5
  54. package/.next/server/pages/index.js.nft.json +1 -1
  55. package/.next/server/pages/login.js +0 -21
  56. package/.next/server/pages/login.js.nft.json +1 -1
  57. package/.next/server/pages/s.js +4 -58
  58. package/.next/server/pages/s.js.nft.json +1 -1
  59. package/.next/static/IDskqcKTB7kE5quFZAhgJ/_buildManifest.js +1 -0
  60. package/.next/static/chunks/223-cb77217cce52d45c.js +1 -0
  61. package/.next/static/chunks/251.11f5198fc8bef3a4.js +1 -0
  62. package/.next/static/chunks/397-0d3aada1012cd78b.js +1 -0
  63. package/.next/static/chunks/585.6561778b7763b79e.js +1 -0
  64. package/.next/static/chunks/675-479a97aecebead97.js +1 -0
  65. package/.next/static/chunks/800.5d92de2974baf641.js +1 -0
  66. package/.next/static/chunks/881-57643fb90f59e576.js +1 -0
  67. package/.next/static/chunks/988.afda042dd9ba11d1.js +1 -0
  68. package/.next/static/chunks/pages/404-e106cb9a78182f5f.js +1 -0
  69. package/.next/static/chunks/pages/500-d28aa4a8ce88bddd.js +1 -0
  70. package/.next/static/chunks/pages/[...slug]-cf872b9e9befd47c.js +1 -0
  71. package/.next/static/chunks/pages/[slug]/p-4a75b11857b82b5c.js +1 -0
  72. package/.next/static/chunks/pages/{account-1963c084b0b6e597.js → account-bf9c88a9cac80d8a.js} +1 -1
  73. package/.next/static/chunks/pages/{checkout-d66a352e910607dd.js → checkout-6ca76c1e88a28ac4.js} +1 -1
  74. package/.next/static/chunks/pages/index-629ba146ae5f0ecf.js +1 -0
  75. package/.next/static/chunks/pages/login-d2af0de13ea75848.js +1 -0
  76. package/.next/static/chunks/pages/s-d729254b91430d1c.js +1 -0
  77. package/.next/static/chunks/webpack-54ce04ec11860b0b.js +1 -0
  78. package/.next/static/css/021de9c7b050d301.css +1 -0
  79. package/.next/static/css/510895065f32ed2f.css +1 -0
  80. package/.next/static/css/7e897ebb936fac09.css +1 -0
  81. package/.next/static/css/938781cdc945862e.css +1 -0
  82. package/.next/static/css/9558da13053ac066.css +1 -0
  83. package/.next/static/css/def381bf7c69fa2e.css +1 -0
  84. package/.next/trace +82 -82
  85. package/.turbo/turbo-build.log +19 -19
  86. package/.turbo/turbo-test.log +10 -10
  87. package/index.ts +13 -0
  88. package/package.json +2 -2
  89. package/src/components/cms/GlobalSections.tsx +1 -1
  90. package/src/components/navigation/Navbar/Navbar.tsx +10 -10
  91. package/src/components/navigation/NavbarLinks/NavbarLinks.tsx +3 -5
  92. package/src/components/navigation/NavbarSlider/NavbarSlider.tsx +8 -7
  93. package/src/components/sections/Alert/Alert.tsx +11 -3
  94. package/src/components/sections/Alert/OverriddenDefaultAlert.ts +7 -4
  95. package/src/components/sections/BannerText/BannerText.tsx +10 -2
  96. package/src/components/sections/BannerText/OverriddenDefaultBannerText.ts +7 -4
  97. package/src/components/sections/Breadcrumb/Breadcrumb.tsx +9 -3
  98. package/src/components/sections/Breadcrumb/OverriddenDefaultBreadcrumb.ts +7 -4
  99. package/src/components/sections/CrossSellingShelf/CrossSellingShelf.tsx +8 -2
  100. package/src/components/sections/CrossSellingShelf/OverriddenDefaultCrossSellingShelf.ts +2 -1
  101. package/src/components/sections/EmptyState/Overrides.tsx +2 -2
  102. package/src/components/sections/Hero/Hero.tsx +11 -3
  103. package/src/components/sections/Hero/OverriddenDefaultHero.ts +7 -4
  104. package/src/components/sections/Navbar/DefaultComponents.ts +27 -0
  105. package/src/components/sections/Navbar/Navbar.tsx +10 -2
  106. package/src/components/sections/Navbar/OverriddenDefaultNavbar.ts +14 -0
  107. package/src/components/sections/Newsletter/Newsletter.tsx +10 -2
  108. package/src/components/sections/Newsletter/OverriddenDefaultNewsletter.ts +6 -4
  109. package/src/components/sections/ProductDetails/OverriddenDefaultProductDetails.ts +7 -4
  110. package/src/components/sections/ProductDetails/ProductDetails.tsx +16 -8
  111. package/src/components/sections/ProductGallery/OverriddenDefaultProductGallery.ts +6 -4
  112. package/src/components/sections/ProductGallery/ProductGallery.tsx +13 -5
  113. package/src/components/sections/ProductShelf/OverriddenDefaultProductShelf.ts +7 -4
  114. package/src/components/sections/ProductShelf/ProductShelf.tsx +12 -2
  115. package/src/components/sections/RegionBar/OverriddenDefaultRegionBar.ts +6 -4
  116. package/src/components/sections/RegionBar/RegionBar.tsx +11 -5
  117. package/src/sdk/overrides/getOverriddenSection.tsx +45 -44
  118. package/src/sdk/overrides/overrides.ts +2 -2
  119. package/src/typings/overrides.ts +265 -186
  120. package/src/typings/overridesDefinition.ts +20 -6
  121. package/.next/server/chunks/445.js +0 -167
  122. package/.next/server/chunks/829.js +0 -2938
  123. package/.next/server/chunks/934.js +0 -125
  124. package/.next/static/JNkl1RxkhVPSzLAsRUxC6/_buildManifest.js +0 -1
  125. package/.next/static/chunks/251.65e0bb7a2f58b3db.js +0 -1
  126. package/.next/static/chunks/557-4f8a963d7e07e582.js +0 -1
  127. package/.next/static/chunks/585.ee7478bead8853ae.js +0 -1
  128. package/.next/static/chunks/800.8f4f91b39aa47346.js +0 -1
  129. package/.next/static/chunks/846-c59a0f158089800c.js +0 -1
  130. package/.next/static/chunks/988.a57dac6501fb5184.js +0 -1
  131. package/.next/static/chunks/pages/404-e44d7103a9c6781f.js +0 -1
  132. package/.next/static/chunks/pages/500-2ddd76fa11c851e4.js +0 -1
  133. package/.next/static/chunks/pages/[...slug]-f7f47afa6dce5abf.js +0 -1
  134. package/.next/static/chunks/pages/[slug]/p-27a9a4ef5d07a4ce.js +0 -1
  135. package/.next/static/chunks/pages/index-9e98f2fc42dec7c1.js +0 -1
  136. package/.next/static/chunks/pages/login-349e1406a3a98968.js +0 -1
  137. package/.next/static/chunks/pages/s-9b771eb03d589ee6.js +0 -1
  138. package/.next/static/chunks/webpack-3beeb2f9a51fccf6.js +0 -1
  139. package/.next/static/css/0c844be3b8585e70.css +0 -1
  140. package/.next/static/css/280c254f1f559956.css +0 -1
  141. package/.next/static/css/a6bcc59f42b42f36.css +0 -1
  142. package/.next/static/css/ecdecb8d639a8311.css +0 -1
  143. package/src/components/sections/Navbar/Overrides.tsx +0 -60
  144. package/src/sdk/overrides/sections.tsx +0 -54
  145. /package/.next/static/{JNkl1RxkhVPSzLAsRUxC6 → IDskqcKTB7kE5quFZAhgJ}/_ssgManifest.js +0 -0
@@ -43,27 +43,62 @@ import type {
43
43
 
44
44
  import type {
45
45
  ComponentOverrideDefinition,
46
- SectionOverrideDefinition,
46
+ SectionOverrideDefinitionV1,
47
47
  } from './overridesDefinition'
48
+ import Alert from '../components/sections/Alert'
49
+ import Breadcrumb from '../components/sections/Breadcrumb'
50
+ import BannerText from '../components/sections/BannerText'
51
+ import CrossSellingShelf from '../components/sections/CrossSellingShelf'
52
+ import Hero from '../components/sections/Hero'
53
+ import ProductShelf from '../components/sections/ProductShelf'
54
+ import ProductDetails from '../components/sections/ProductDetails'
55
+ import Navbar from '../components/sections/Navbar'
56
+ import Newsletter from '../components/sections/Newsletter'
57
+ import ProductGallery from '../components/sections/ProductGallery'
58
+ import RegionBar from '../components/sections/RegionBar'
48
59
 
49
60
  export type SectionOverride = {
50
- [K in keyof SectionsOverrides]: SectionOverrideDefinition<K>
61
+ [K in keyof SectionsOverrides]: SectionOverrideDefinitionV1<K>
51
62
  }[keyof SectionsOverrides]
52
63
 
53
- /** TODO: every use of this type should be replaced by SectionsOverrides after all sections are supported */
54
- export type SupportedSectionsOverridesV2 = Pick<
55
- SectionsOverrides,
56
- | 'Alert'
57
- | 'BannerText'
58
- | 'Breadcrumb'
59
- | 'CrossSellingShelf'
60
- | 'Hero'
61
- | 'Newsletter'
62
- | 'ProductShelf'
63
- | 'ProductDetails'
64
- | 'ProductGallery'
65
- | 'RegionBar'
66
- >
64
+ /**
65
+ * This type exists for us to be able to provide proper autocomplete
66
+ * and type checking for the override components.
67
+ *
68
+ * What it does is it maps a section component to its override components.
69
+ *
70
+ * OverrideComponentsForSection<typeof Alert> translates to:
71
+ * {
72
+ * Alert: {
73
+ * Alert: ComponentOverrideDefinition<AlertProps, Omit<AlertProps, 'onClose'>>
74
+ * Icon: ComponentOverrideDefinition<IconProps, IconProps>
75
+ * }
76
+ * }
77
+ *
78
+ * We then use ComponentsFromSection to extract the list of components
79
+ */
80
+ export type OverrideComponentsForSection<
81
+ Section extends SectionsOverrides[keyof SectionsOverrides]['Section']
82
+ > = {
83
+ // The first 'extends' condition is used to filter out sections that don't have overrides (typed 'never')
84
+ [K in keyof SectionsOverrides as SectionsOverrides[K] extends {
85
+ Section: never
86
+ }
87
+ ? never
88
+ : // In the second 'extends' condition, we check if the section matches the one we're looking for
89
+ SectionsOverrides[K] extends {
90
+ Section: Section
91
+ }
92
+ ? // If it does, we return the components. Otherwise, we return 'never', which is filtered out
93
+ K
94
+ : never]: SectionsOverrides[K]['components']
95
+ }
96
+
97
+ // This type is used to extract only the list of components from the section override
98
+ export type ComponentsFromSection<
99
+ Section extends SectionsOverrides[keyof SectionsOverrides]['Section']
100
+ > =
101
+ OverrideComponentsForSection<Section>[keyof OverrideComponentsForSection<Section>]
67
102
 
68
103
  /**
69
104
  * Originally, these types were defined in their respective Overrides file
@@ -73,199 +108,243 @@ export type SupportedSectionsOverridesV2 = Pick<
73
108
  * For some reason, defining them in the same file as SectionOverride seems to fix the issue.
74
109
  * Consider that before moving them elsewhere and test it on the starter as well.
75
110
  */
76
-
77
111
  export type SectionsOverrides = {
78
112
  Alert: {
79
- Alert: ComponentOverrideDefinition<AlertProps, Omit<AlertProps, 'onClose'>>
80
- Icon: ComponentOverrideDefinition<IconProps, IconProps>
113
+ Section: typeof Alert
114
+ components: {
115
+ Alert: ComponentOverrideDefinition<
116
+ AlertProps,
117
+ Omit<AlertProps, 'onClose'>
118
+ >
119
+ Icon: ComponentOverrideDefinition<IconProps, IconProps>
120
+ }
81
121
  }
82
122
  BannerText: {
83
- BannerText: ComponentOverrideDefinition<BannerTextProps, BannerTextProps>
84
- BannerTextContent: ComponentOverrideDefinition<
85
- BannerTextContentProps,
86
- BannerTextContentProps
87
- >
123
+ Section: typeof BannerText
124
+ components: {
125
+ BannerText: ComponentOverrideDefinition<BannerTextProps, BannerTextProps>
126
+ BannerTextContent: ComponentOverrideDefinition<
127
+ BannerTextContentProps,
128
+ BannerTextContentProps
129
+ >
130
+ }
88
131
  }
89
132
  Breadcrumb: {
90
- Breadcrumb: ComponentOverrideDefinition<BreadcrumbProps, BreadcrumbProps>
91
- Icon: ComponentOverrideDefinition<IconProps, IconProps>
133
+ Section: typeof Breadcrumb
134
+ components: {
135
+ Breadcrumb: ComponentOverrideDefinition<BreadcrumbProps, BreadcrumbProps>
136
+ Icon: ComponentOverrideDefinition<IconProps, IconProps>
137
+ }
92
138
  }
93
139
  EmptyState: {
94
- EmptyState: ComponentOverrideDefinition<
95
- PropsWithChildren<EmptyStateProps>,
96
- EmptyStateProps
97
- >
140
+ Section: never
141
+ components: {
142
+ EmptyState: ComponentOverrideDefinition<
143
+ PropsWithChildren<EmptyStateProps>,
144
+ EmptyStateProps
145
+ >
146
+ }
98
147
  }
99
148
  Hero: {
100
- Hero: ComponentOverrideDefinition<HeroProps, HeroProps>
101
- HeroImage: ComponentOverrideDefinition<HeroImageProps, HeroImageProps>
102
- HeroHeader: ComponentOverrideDefinition<HeroHeaderProps, HeroHeaderProps>
149
+ Section: typeof Hero
150
+ components: {
151
+ Hero: ComponentOverrideDefinition<HeroProps, HeroProps>
152
+ HeroImage: ComponentOverrideDefinition<HeroImageProps, HeroImageProps>
153
+ HeroHeader: ComponentOverrideDefinition<HeroHeaderProps, HeroHeaderProps>
154
+ }
103
155
  }
104
156
  Navbar: {
105
- Navbar: ComponentOverrideDefinition<NavbarProps, NavbarProps>
106
- NavbarLinks: ComponentOverrideDefinition<NavbarLinksProps, NavbarLinksProps>
107
- NavbarLinksList: ComponentOverrideDefinition<
108
- NavbarLinksListProps,
109
- NavbarLinksListProps
110
- >
111
- NavbarSlider: ComponentOverrideDefinition<
112
- NavbarSliderProps,
113
- NavbarSliderProps
114
- >
115
- NavbarSliderHeader: ComponentOverrideDefinition<
116
- NavbarSliderHeaderProps,
117
- NavbarSliderHeaderProps
118
- >
119
- NavbarSliderContent: ComponentOverrideDefinition<
120
- NavbarSliderContentProps,
121
- NavbarSliderContentProps
122
- >
123
- NavbarSliderFooter: ComponentOverrideDefinition<
124
- NavbarSliderFooterProps,
125
- NavbarSliderFooterProps
126
- >
127
- NavbarHeader: ComponentOverrideDefinition<
128
- NavbarHeaderProps,
129
- NavbarHeaderProps
130
- >
131
- NavbarRow: ComponentOverrideDefinition<NavbarRowProps, NavbarRowProps>
132
- NavbarButtons: ComponentOverrideDefinition<
133
- NavbarButtonsProps,
134
- NavbarButtonsProps
135
- >
136
- IconButton: ComponentOverrideDefinition<
137
- IconButtonProps,
138
- Omit<IconButtonProps, 'onClick'>
139
- >
157
+ Section: typeof Navbar,
158
+ components: {
159
+ Navbar: ComponentOverrideDefinition<NavbarProps, NavbarProps>
160
+ NavbarLinks: ComponentOverrideDefinition<
161
+ NavbarLinksProps,
162
+ NavbarLinksProps
163
+ >
164
+ NavbarLinksList: ComponentOverrideDefinition<
165
+ NavbarLinksListProps,
166
+ NavbarLinksListProps
167
+ >
168
+ NavbarSlider: ComponentOverrideDefinition<
169
+ NavbarSliderProps,
170
+ NavbarSliderProps
171
+ >
172
+ NavbarSliderHeader: ComponentOverrideDefinition<
173
+ NavbarSliderHeaderProps,
174
+ NavbarSliderHeaderProps
175
+ >
176
+ NavbarSliderContent: ComponentOverrideDefinition<
177
+ NavbarSliderContentProps,
178
+ NavbarSliderContentProps
179
+ >
180
+ NavbarSliderFooter: ComponentOverrideDefinition<
181
+ NavbarSliderFooterProps,
182
+ NavbarSliderFooterProps
183
+ >
184
+ NavbarHeader: ComponentOverrideDefinition<
185
+ NavbarHeaderProps,
186
+ NavbarHeaderProps
187
+ >
188
+ NavbarRow: ComponentOverrideDefinition<NavbarRowProps, NavbarRowProps>
189
+ NavbarButtons: ComponentOverrideDefinition<
190
+ NavbarButtonsProps,
191
+ NavbarButtonsProps
192
+ >
193
+ IconButton: ComponentOverrideDefinition<
194
+ IconButtonProps,
195
+ Omit<IconButtonProps, 'onClick'>
196
+ >
197
+ }
140
198
  }
141
199
  Newsletter: {
142
- Newsletter: ComponentOverrideDefinition<NewsletterProps, NewsletterProps>
143
- NewsletterAddendum: ComponentOverrideDefinition<
144
- NewsletterAddendumProps,
145
- NewsletterAddendumProps
146
- >
147
- NewsletterContent: ComponentOverrideDefinition<
148
- NewsletterContentProps,
149
- NewsletterContentProps
150
- >
151
- NewsletterForm: ComponentOverrideDefinition<
152
- NewsletterFormProps,
153
- NewsletterFormProps
154
- >
155
- NewsletterHeader: ComponentOverrideDefinition<
156
- NewsletterHeaderProps,
157
- NewsletterHeaderProps
158
- >
159
- ToastIconSuccess: ComponentOverrideDefinition<IconProps, IconProps>
160
- ToastIconError: ComponentOverrideDefinition<IconProps, IconProps>
161
- HeaderIcon: ComponentOverrideDefinition<IconProps, IconProps>
162
- InputFieldName: ComponentOverrideDefinition<
163
- InputFieldProps,
164
- Omit<InputFieldProps, 'inputRef'>
165
- >
166
- InputFieldEmail: ComponentOverrideDefinition<
167
- InputFieldProps,
168
- Omit<InputFieldProps, 'inputRef'>
169
- >
170
- Button: ComponentOverrideDefinition<ButtonProps, ButtonProps>
200
+ Section: typeof Newsletter
201
+ components: {
202
+ Newsletter: ComponentOverrideDefinition<NewsletterProps, NewsletterProps>
203
+ NewsletterAddendum: ComponentOverrideDefinition<
204
+ NewsletterAddendumProps,
205
+ NewsletterAddendumProps
206
+ >
207
+ NewsletterContent: ComponentOverrideDefinition<
208
+ NewsletterContentProps,
209
+ NewsletterContentProps
210
+ >
211
+ NewsletterForm: ComponentOverrideDefinition<
212
+ NewsletterFormProps,
213
+ NewsletterFormProps
214
+ >
215
+ NewsletterHeader: ComponentOverrideDefinition<
216
+ NewsletterHeaderProps,
217
+ NewsletterHeaderProps
218
+ >
219
+ ToastIconSuccess: ComponentOverrideDefinition<IconProps, IconProps>
220
+ ToastIconError: ComponentOverrideDefinition<IconProps, IconProps>
221
+ HeaderIcon: ComponentOverrideDefinition<IconProps, IconProps>
222
+ InputFieldName: ComponentOverrideDefinition<
223
+ InputFieldProps,
224
+ Omit<InputFieldProps, 'inputRef'>
225
+ >
226
+ InputFieldEmail: ComponentOverrideDefinition<
227
+ InputFieldProps,
228
+ Omit<InputFieldProps, 'inputRef'>
229
+ >
230
+ Button: ComponentOverrideDefinition<ButtonProps, ButtonProps>
231
+ }
171
232
  }
172
233
  ProductDetails: {
173
- ProductTitle: ComponentOverrideDefinition<
174
- ProductTitleProps,
175
- ProductTitleProps
176
- >
177
- DiscountBadge: ComponentOverrideDefinition<
178
- DiscountBadgeProps,
179
- Omit<DiscountBadgeProps, 'listPrice' | 'spotPrice'>
180
- >
181
- BuyButton: ComponentOverrideDefinition<ButtonProps, ButtonProps>
182
- Icon: ComponentOverrideDefinition<IconProps, IconProps>
183
- ProductPrice: ComponentOverrideDefinition<
184
- ProductPriceProps,
185
- Omit<ProductPriceProps, 'value'>
186
- >
187
- QuantitySelector: ComponentOverrideDefinition<
188
- QuantitySelectorProps,
189
- Omit<QuantitySelectorProps, 'onChange'>
190
- >
191
- SkuSelector: ComponentOverrideDefinition<SkuSelectorProps, SkuSelectorProps>
192
- ShippingSimulation: ComponentOverrideDefinition<
193
- ShippingSimulationProps,
194
- ShippingSimulationProps
195
- >
196
- ImageGallery: ComponentOverrideDefinition<
197
- ImageGalleryProps,
198
- ImageGalleryProps
199
- >
200
- ImageGalleryViewer: ComponentOverrideDefinition<
201
- ImageGalleryViewerProps,
202
- ImageGalleryViewerProps
203
- >
204
- __experimentalImageGalleryImage: ComponentOverrideDefinition<any, any>
205
- __experimentalImageGallery: ComponentOverrideDefinition<any, any>
206
- __experimentalShippingSimulation: ComponentOverrideDefinition<any, any>
207
- __experimentalNotAvailableButton: ComponentOverrideDefinition<any, any>
234
+ Section: typeof ProductDetails
235
+ components: {
236
+ ProductTitle: ComponentOverrideDefinition<
237
+ ProductTitleProps,
238
+ ProductTitleProps
239
+ >
240
+ DiscountBadge: ComponentOverrideDefinition<
241
+ DiscountBadgeProps,
242
+ Omit<DiscountBadgeProps, 'listPrice' | 'spotPrice'>
243
+ >
244
+ BuyButton: ComponentOverrideDefinition<ButtonProps, ButtonProps>
245
+ Icon: ComponentOverrideDefinition<IconProps, IconProps>
246
+ ProductPrice: ComponentOverrideDefinition<
247
+ ProductPriceProps,
248
+ Omit<ProductPriceProps, 'value'>
249
+ >
250
+ QuantitySelector: ComponentOverrideDefinition<
251
+ QuantitySelectorProps,
252
+ Omit<QuantitySelectorProps, 'onChange'>
253
+ >
254
+ SkuSelector: ComponentOverrideDefinition<
255
+ SkuSelectorProps,
256
+ SkuSelectorProps
257
+ >
258
+ ShippingSimulation: ComponentOverrideDefinition<
259
+ ShippingSimulationProps,
260
+ ShippingSimulationProps
261
+ >
262
+ ImageGallery: ComponentOverrideDefinition<
263
+ ImageGalleryProps,
264
+ ImageGalleryProps
265
+ >
266
+ ImageGalleryViewer: ComponentOverrideDefinition<
267
+ ImageGalleryViewerProps,
268
+ ImageGalleryViewerProps
269
+ >
270
+ __experimentalImageGalleryImage: ComponentOverrideDefinition<any, any>
271
+ __experimentalImageGallery: ComponentOverrideDefinition<any, any>
272
+ __experimentalShippingSimulation: ComponentOverrideDefinition<any, any>
273
+ __experimentalNotAvailableButton: ComponentOverrideDefinition<any, any>
274
+ }
208
275
  }
209
276
  ProductGallery: {
210
- MobileFilterButton: ComponentOverrideDefinition<
211
- ButtonProps,
212
- Omit<ButtonProps, 'onClick'>
213
- >
214
- FilterIcon: ComponentOverrideDefinition<IconProps, IconProps>
215
- PrevIcon: ComponentOverrideDefinition<IconProps, IconProps>
216
- ResultsCountSkeleton: ComponentOverrideDefinition<
217
- SkeletonProps,
218
- Omit<SkeletonProps, 'loading'>
219
- >
220
- SortSkeleton: ComponentOverrideDefinition<
221
- SkeletonProps,
222
- Omit<SkeletonProps, 'loading'>
223
- >
224
- FilterButtonSkeleton: ComponentOverrideDefinition<
225
- SkeletonProps,
226
- Omit<SkeletonProps, 'loading'>
227
- >
228
- LinkButtonPrev: ComponentOverrideDefinition<
229
- LinkButtonProps,
230
- Omit<LinkButtonProps, 'onClick' | 'href'>
231
- >
232
- LinkButtonNext: ComponentOverrideDefinition<
233
- LinkButtonProps,
234
- Omit<LinkButtonProps, 'onClick' | 'href'>
235
- >
236
- __experimentalFilterDesktop: ComponentOverrideDefinition<any, any>
237
- __experimentalFilterSlider: ComponentOverrideDefinition<any, any>
238
- __experimentalProductCard: ComponentOverrideDefinition<any, any>
239
- __experimentalEmptyGallery: ComponentOverrideDefinition<any, any>
277
+ Section: typeof ProductGallery
278
+ components: {
279
+ MobileFilterButton: ComponentOverrideDefinition<
280
+ ButtonProps,
281
+ Omit<ButtonProps, 'onClick'>
282
+ >
283
+ FilterIcon: ComponentOverrideDefinition<IconProps, IconProps>
284
+ PrevIcon: ComponentOverrideDefinition<IconProps, IconProps>
285
+ ResultsCountSkeleton: ComponentOverrideDefinition<
286
+ SkeletonProps,
287
+ Omit<SkeletonProps, 'loading'>
288
+ >
289
+ SortSkeleton: ComponentOverrideDefinition<
290
+ SkeletonProps,
291
+ Omit<SkeletonProps, 'loading'>
292
+ >
293
+ FilterButtonSkeleton: ComponentOverrideDefinition<
294
+ SkeletonProps,
295
+ Omit<SkeletonProps, 'loading'>
296
+ >
297
+ LinkButtonPrev: ComponentOverrideDefinition<
298
+ LinkButtonProps,
299
+ Omit<LinkButtonProps, 'onClick' | 'href'>
300
+ >
301
+ LinkButtonNext: ComponentOverrideDefinition<
302
+ LinkButtonProps,
303
+ Omit<LinkButtonProps, 'onClick' | 'href'>
304
+ >
305
+ __experimentalFilterDesktop: ComponentOverrideDefinition<any, any>
306
+ __experimentalFilterSlider: ComponentOverrideDefinition<any, any>
307
+ __experimentalProductCard: ComponentOverrideDefinition<any, any>
308
+ __experimentalEmptyGallery: ComponentOverrideDefinition<any, any>
309
+ }
240
310
  }
241
311
  ProductShelf: {
242
- ProductShelf: ComponentOverrideDefinition<
243
- ProductShelfProps,
244
- ProductShelfProps
245
- >
246
- __experimentalCarousel: ComponentOverrideDefinition<any, any>
247
- __experimentalProductCard: ComponentOverrideDefinition<
248
- any,
249
- Omit<any, 'key' | 'product' | 'index'>
250
- >
312
+ Section: typeof ProductShelf
313
+ components: {
314
+ ProductShelf: ComponentOverrideDefinition<
315
+ ProductShelfProps,
316
+ ProductShelfProps
317
+ >
318
+ __experimentalCarousel: ComponentOverrideDefinition<any, any>
319
+ __experimentalProductCard: ComponentOverrideDefinition<
320
+ any,
321
+ Omit<any, 'key' | 'product' | 'index'>
322
+ >
323
+ }
251
324
  }
252
325
  CrossSellingShelf: {
253
- ProductShelf: ComponentOverrideDefinition<
254
- ProductShelfProps,
255
- ProductShelfProps
256
- >
257
- __experimentalCarousel: ComponentOverrideDefinition<any, any>
258
- __experimentalProductCard: ComponentOverrideDefinition<
259
- any,
260
- Omit<any, 'key' | 'product' | 'index'>
261
- >
326
+ Section: typeof CrossSellingShelf
327
+ components: {
328
+ ProductShelf: ComponentOverrideDefinition<
329
+ ProductShelfProps,
330
+ ProductShelfProps
331
+ >
332
+ __experimentalCarousel: ComponentOverrideDefinition<any, any>
333
+ __experimentalProductCard: ComponentOverrideDefinition<
334
+ any,
335
+ Omit<any, 'key' | 'product' | 'index'>
336
+ >
337
+ }
262
338
  }
263
339
  RegionBar: {
264
- RegionBar: ComponentOverrideDefinition<
265
- RegionBarProps,
266
- Omit<RegionBarProps, 'onButtonClick' | 'postalCode'>
267
- >
268
- LocationIcon: ComponentOverrideDefinition<IconProps, IconProps>
269
- ButtonIcon: ComponentOverrideDefinition<IconProps, IconProps>
340
+ Section: typeof RegionBar
341
+ components: {
342
+ RegionBar: ComponentOverrideDefinition<
343
+ RegionBarProps,
344
+ Omit<RegionBarProps, 'onButtonClick' | 'postalCode'>
345
+ >
346
+ LocationIcon: ComponentOverrideDefinition<IconProps, IconProps>
347
+ ButtonIcon: ComponentOverrideDefinition<IconProps, IconProps>
348
+ }
270
349
  }
271
350
  }
@@ -1,6 +1,6 @@
1
- import { SectionsOverrides } from './overrides'
1
+ import { ComponentsFromSection, SectionsOverrides } from './overrides'
2
2
 
3
- export type SectionOverrideDefinition<
3
+ export type SectionOverrideDefinitionV1<
4
4
  SectionName extends keyof SectionsOverrides
5
5
  > = {
6
6
  /**
@@ -11,19 +11,33 @@ export type SectionOverrideDefinition<
11
11
  /** Name of the section to override */
12
12
  section: SectionName
13
13
  /** An object containing component and prop overrides for section components */
14
- components?: Partial<Prettify<SectionsOverrides[SectionName]>>
14
+ components?: Partial<Prettify<SectionsOverrides[SectionName]['components']>>
15
+ }
16
+
17
+ export type SectionOverrideDefinition<
18
+ Section extends SectionsOverrides[keyof SectionsOverrides]['Section']
19
+ > = {
20
+ /**
21
+ * CSS class to be appended to the \<section\> element. Behaves similarly to React's className.
22
+ * Default classNames from \<section\> element will still be applied.
23
+ */
24
+ className?: string
25
+ /** Section to override. Accepts a React Component. */
26
+ Section: Section
27
+ /** An object containing component and prop overrides for section components */
28
+ components?: Partial<Prettify<ComponentsFromSection<Section>>>
15
29
  }
16
30
 
17
31
  export type OverriddenComponents<SectionName extends keyof SectionsOverrides> =
18
32
  {
19
- [Key in keyof SectionsOverrides[SectionName]]: Merge<
20
- SectionsOverrides[SectionName][Key]
33
+ [Key in keyof SectionsOverrides[SectionName]['components']]: Merge<
34
+ SectionsOverrides[SectionName]['components'][Key]
21
35
  >
22
36
  }
23
37
 
24
38
  export type DefaultSectionComponentsDefinitions<
25
39
  K extends keyof SectionsOverrides
26
- > = Record<keyof SectionsOverrides[K], React.ComponentType>
40
+ > = Record<keyof SectionsOverrides[K]['components'], React.ComponentType>
27
41
 
28
42
  export type ComponentOverrideDefinition<ComponentProps, Props> =
29
43
  | {