@faststore/core 2.1.33 → 2.1.35
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.
- package/.next/BUILD_ID +1 -0
- package/.next/build-manifest.json +129 -0
- package/.next/cache/.tsbuildinfo +1 -0
- package/.next/cache/config.json +7 -0
- package/.next/cache/eslint/.cache_1gneedd +1 -0
- package/.next/cache/next-server.js.nft.json +1 -0
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/export-marker.json +1 -0
- package/.next/images-manifest.json +1 -0
- package/.next/next-server.js.nft.json +1 -0
- package/.next/package.json +1 -0
- package/.next/prerender-manifest.json +1 -0
- package/.next/react-loadable-manifest.json +44 -0
- package/.next/required-server-files.json +1 -0
- package/.next/routes-manifest.json +1 -0
- package/.next/server/chunks/123.js +58 -0
- package/.next/server/chunks/143.js +106 -0
- package/.next/server/chunks/183.js +90 -0
- package/.next/server/chunks/184.js +61 -0
- package/.next/server/chunks/186.js +113 -0
- package/.next/server/chunks/247.js +61 -0
- package/.next/server/chunks/253.js +509 -0
- package/.next/server/chunks/269.js +517 -0
- package/.next/server/chunks/287.js +58 -0
- package/.next/server/chunks/289.js +239 -0
- package/.next/server/chunks/312.js +697 -0
- package/.next/server/chunks/350.js +143 -0
- package/.next/server/chunks/487.js +9142 -0
- package/.next/server/chunks/502.js +626 -0
- package/.next/server/chunks/576.js +90 -0
- package/.next/server/chunks/597.js +211 -0
- package/.next/server/chunks/650.js +9142 -0
- package/.next/server/chunks/676.js +32 -0
- package/.next/server/chunks/721.js +650 -0
- package/.next/server/chunks/74.js +4039 -0
- package/.next/server/chunks/81.js +1254 -0
- package/.next/server/chunks/825.js +4039 -0
- package/.next/server/chunks/854.js +72 -0
- package/.next/server/chunks/859.js +959 -0
- package/.next/server/chunks/886.js +120 -0
- package/.next/server/chunks/907.js +1910 -0
- package/.next/server/chunks/98.js +124 -0
- package/.next/server/chunks/font-manifest.json +1 -0
- package/.next/server/font-manifest.json +1 -0
- package/.next/server/middleware-build-manifest.js +1 -0
- package/.next/server/middleware-manifest.json +6 -0
- package/.next/server/middleware-react-loadable-manifest.js +1 -0
- package/.next/server/pages/404.js +386 -0
- package/.next/server/pages/404.js.nft.json +1 -0
- package/.next/server/pages/500.js +388 -0
- package/.next/server/pages/500.js.nft.json +1 -0
- package/.next/server/pages/[...slug].js +1005 -0
- package/.next/server/pages/[...slug].js.nft.json +1 -0
- package/.next/server/pages/[slug]/p.js +2337 -0
- package/.next/server/pages/[slug]/p.js.nft.json +1 -0
- package/.next/server/pages/_app.js +281 -0
- package/.next/server/pages/_app.js.nft.json +1 -0
- package/.next/server/pages/_document.js +352 -0
- package/.next/server/pages/_document.js.nft.json +1 -0
- package/.next/server/pages/_error.js +164 -0
- package/.next/server/pages/_error.js.nft.json +1 -0
- package/.next/server/pages/account.js +363 -0
- package/.next/server/pages/account.js.nft.json +1 -0
- package/.next/server/pages/api/graphql.js +365 -0
- package/.next/server/pages/api/graphql.js.nft.json +1 -0
- package/.next/server/pages/api/preview.js +148 -0
- package/.next/server/pages/api/preview.js.nft.json +1 -0
- package/.next/server/pages/checkout.js +363 -0
- package/.next/server/pages/checkout.js.nft.json +1 -0
- package/.next/server/pages/en-US/404.html +81 -0
- package/.next/server/pages/en-US/404.json +1 -0
- package/.next/server/pages/en-US/500.html +81 -0
- package/.next/server/pages/en-US/500.json +1 -0
- package/.next/server/pages/en-US/account.html +81 -0
- package/.next/server/pages/en-US/account.json +1 -0
- package/.next/server/pages/en-US/checkout.html +81 -0
- package/.next/server/pages/en-US/checkout.json +1 -0
- package/.next/server/pages/en-US/login.html +81 -0
- package/.next/server/pages/en-US/login.json +1 -0
- package/.next/server/pages/en-US/s.html +81 -0
- package/.next/server/pages/en-US/s.json +1 -0
- package/.next/server/pages/en-US.html +81 -0
- package/.next/server/pages/en-US.json +1 -0
- package/.next/server/pages/index.js +439 -0
- package/.next/server/pages/index.js.nft.json +1 -0
- package/.next/server/pages/login.js +368 -0
- package/.next/server/pages/login.js.nft.json +1 -0
- package/.next/server/pages/s.js +466 -0
- package/.next/server/pages/s.js.nft.json +1 -0
- package/.next/server/pages-manifest.json +16 -0
- package/.next/server/webpack-api-runtime.js +229 -0
- package/.next/server/webpack-runtime.js +229 -0
- package/.next/static/chunks/143.dd8a556e6957baa1.js +1 -0
- package/.next/static/chunks/209-d1d2eeaeefbc68f7.js +1 -0
- package/.next/static/chunks/495.0ecd099878b2a36d.js +1 -0
- package/.next/static/chunks/502.b14533723651e5a1.js +1 -0
- package/.next/static/chunks/548-6b23e7ad82cd22b9.js +1 -0
- package/.next/static/chunks/597.f8d0595b113c70af.js +1 -0
- package/.next/static/chunks/64.2f385ef39cd5877d.js +1 -0
- package/.next/static/chunks/651.7142f31ce1e052b3.js +1 -0
- package/.next/static/chunks/706-1020d118bb59b204.js +1 -0
- package/.next/static/chunks/738-a5ff304828f20cbf.js +1 -0
- package/.next/static/chunks/741.52f7fb873418346f.js +1 -0
- package/.next/static/chunks/791-681afeb766a9098f.js +1 -0
- package/.next/static/chunks/98.97381d2021f86cd9.js +1 -0
- package/.next/static/chunks/framework-dfd14d7ce6600b03.js +1 -0
- package/.next/static/chunks/main-fd466221927468fd.js +1 -0
- package/.next/static/chunks/pages/404-14d27e3706f3d2c3.js +1 -0
- package/.next/static/chunks/pages/500-250ccf5c9626e451.js +1 -0
- package/.next/static/chunks/pages/[...slug]-bcfaf0c5d60b57a0.js +1 -0
- package/.next/static/chunks/pages/[slug]/p-c1f2b05344981f12.js +1 -0
- package/.next/static/chunks/pages/_app-babcc4d7b80d8f4a.js +1 -0
- package/.next/static/chunks/pages/_error-a7a0c1d9bfbb4f38.js +1 -0
- package/.next/static/chunks/pages/account-d248acc931146694.js +1 -0
- package/.next/static/chunks/pages/checkout-97f6d6f36f041a6f.js +1 -0
- package/.next/static/chunks/pages/index-bdbfb082027ed2b7.js +1 -0
- package/.next/static/chunks/pages/login-b1bdf30c951bb60d.js +1 -0
- package/.next/static/chunks/pages/s-aabfa5c08338974a.js +1 -0
- package/.next/static/chunks/polyfills-c67a75d1b6f99dc8.js +1 -0
- package/.next/static/chunks/webpack-73cade94715ad9e1.js +1 -0
- package/.next/static/css/208b7dd52a0981bd.css +1 -0
- package/.next/static/css/41ef280537acec50.css +1 -0
- package/.next/static/css/4ad5a6bd11a9f8d8.css +1 -0
- package/.next/static/css/5330ae3076254840.css +1 -0
- package/.next/static/css/5972921daee792bb.css +1 -0
- package/.next/static/css/6e1a7434f061d0ef.css +1 -0
- package/.next/static/css/82a475e147f4b2ee.css +1 -0
- package/.next/static/css/af5ef0767b748cb3.css +1 -0
- package/.next/static/css/cb7d1fcea42fab9c.css +1 -0
- package/.next/static/css/d67fbe2a613293c1.css +1 -0
- package/.next/static/uXS-aZT8ClbPcIudKFF0d/_buildManifest.js +1 -0
- package/.next/static/uXS-aZT8ClbPcIudKFF0d/_ssgManifest.js +1 -0
- package/.next/trace +80 -0
- package/.turbo/turbo-build.log +7 -7
- package/package.json +2 -2
- package/public/~partytown/debug/partytown-atomics.js +556 -0
- package/public/~partytown/debug/partytown-media.js +374 -0
- package/public/~partytown/debug/partytown-sandbox-sw.js +543 -0
- package/public/~partytown/debug/partytown-sw.js +59 -0
- package/public/~partytown/debug/partytown-ww-atomics.js +1789 -0
- package/public/~partytown/debug/partytown-ww-sw.js +1781 -0
- package/public/~partytown/debug/partytown.js +72 -0
- package/public/~partytown/partytown-atomics.js +2 -0
- package/public/~partytown/partytown-media.js +2 -0
- package/public/~partytown/partytown-sw.js +2 -0
- package/public/~partytown/partytown.js +2 -0
- package/src/components/common/Alert/Alert.tsx +5 -8
- package/src/components/navigation/Navbar/Navbar.tsx +22 -22
- package/src/components/navigation/NavbarLinks/NavbarLinks.tsx +8 -7
- package/src/components/navigation/NavbarSlider/NavbarSlider.tsx +15 -14
- package/src/components/product/ProductGrid/ProductGrid.tsx +5 -10
- package/src/components/region/RegionBar/RegionBar.tsx +27 -13
- package/src/components/search/Filter/Filter.tsx +6 -11
- package/src/components/sections/Alert/Alert.tsx +17 -13
- package/src/components/sections/Alert/Overrides.tsx +13 -25
- package/src/components/sections/BannerText/BannerText.tsx +24 -20
- package/src/components/sections/BannerText/Overrides.tsx +11 -23
- package/src/components/sections/Breadcrumb/Overrides.tsx +13 -25
- package/src/components/sections/EmptyState/EmptyState.tsx +6 -8
- package/src/components/sections/EmptyState/Overrides.tsx +12 -24
- package/src/components/sections/Hero/Hero.tsx +15 -12
- package/src/components/sections/Hero/Overrides.tsx +12 -24
- package/src/components/sections/Navbar/Overrides.tsx +43 -31
- package/src/components/sections/Newsletter/Overrides.tsx +28 -26
- package/src/components/sections/ProductDetails/Overrides.tsx +51 -38
- package/src/components/sections/ProductDetails/ProductDetails.tsx +22 -30
- package/src/components/sections/ProductGallery/Overrides.tsx +44 -35
- package/src/components/sections/ProductShelf/Overrides.tsx +14 -28
- package/src/components/sections/RegionBar/Overrides.tsx +12 -24
- package/src/components/ui/Breadcrumb/Breadcrumb.tsx +9 -7
- package/src/components/ui/ImageGallery/ImageGallery.tsx +13 -19
- package/src/components/ui/Newsletter/Newsletter.tsx +23 -24
- package/src/components/ui/ProductDetails/ProductDetailsSettings.tsx +21 -17
- package/src/components/ui/ProductGallery/ProductGallery.tsx +31 -38
- package/src/components/ui/ProductShelf/ProductShelf.tsx +11 -16
- package/src/components/ui/ShippingSimulation/ShippingSimulation.tsx +2 -3
- package/src/components/ui/SkuSelector/Selectors.tsx +8 -7
- package/src/customizations/components/overrides/Alert.tsx +3 -7
- package/src/customizations/components/overrides/BannerText.tsx +3 -7
- package/src/customizations/components/overrides/Breadcrumb.tsx +3 -7
- package/src/customizations/components/overrides/EmptyState.tsx +3 -6
- package/src/customizations/components/overrides/Hero.tsx +3 -8
- package/src/customizations/components/overrides/Navbar.tsx +3 -16
- package/src/customizations/components/overrides/Newsletter.tsx +3 -11
- package/src/customizations/components/overrides/ProductDetails.tsx +3 -18
- package/src/customizations/components/overrides/ProductGallery.tsx +3 -16
- package/src/customizations/components/overrides/ProductShelf.tsx +3 -8
- package/src/customizations/components/overrides/RegionBar.tsx +3 -8
- package/src/typings/overrideDefinitionUtils.ts +40 -0
- package/src/typings/overrides.ts +267 -0
- package/src/utils/overrides.ts +53 -0
- package/src/typings/overrides.d.ts +0 -97
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import type { PropsWithChildren } from 'react'
|
|
2
|
+
import type {
|
|
3
|
+
AlertProps,
|
|
4
|
+
BannerTextContentProps,
|
|
5
|
+
BannerTextProps,
|
|
6
|
+
BreadcrumbProps,
|
|
7
|
+
ButtonProps,
|
|
8
|
+
DiscountBadgeProps,
|
|
9
|
+
EmptyStateProps,
|
|
10
|
+
HeroHeaderProps,
|
|
11
|
+
HeroImageProps,
|
|
12
|
+
HeroProps,
|
|
13
|
+
IconButtonProps,
|
|
14
|
+
IconProps,
|
|
15
|
+
ImageGalleryProps,
|
|
16
|
+
ImageZoomProps,
|
|
17
|
+
InputFieldProps,
|
|
18
|
+
LinkButtonProps,
|
|
19
|
+
NavbarButtonsProps,
|
|
20
|
+
NavbarHeaderProps,
|
|
21
|
+
NavbarLinksListProps,
|
|
22
|
+
NavbarLinksProps,
|
|
23
|
+
NavbarProps,
|
|
24
|
+
NavbarRowProps,
|
|
25
|
+
NavbarSliderContentProps,
|
|
26
|
+
NavbarSliderFooterProps,
|
|
27
|
+
NavbarSliderHeaderProps,
|
|
28
|
+
NavbarSliderProps,
|
|
29
|
+
PriceProps,
|
|
30
|
+
ProductShelfProps,
|
|
31
|
+
ProductTitleProps,
|
|
32
|
+
QuantitySelectorProps,
|
|
33
|
+
RegionBarProps,
|
|
34
|
+
ShippingSimulationProps,
|
|
35
|
+
SkeletonProps,
|
|
36
|
+
SkuSelectorProps,
|
|
37
|
+
} from '@faststore/ui'
|
|
38
|
+
|
|
39
|
+
import type {
|
|
40
|
+
ComponentOverrideDefinition,
|
|
41
|
+
SectionOverrideDefinition,
|
|
42
|
+
} from './overrideDefinitionUtils'
|
|
43
|
+
|
|
44
|
+
export type SectionOverride =
|
|
45
|
+
| AlertOverrideDefinition
|
|
46
|
+
| BannerTextOverrideDefinition
|
|
47
|
+
| BreadcrumbOverrideDefinition
|
|
48
|
+
| EmptyStateOverrideDefinition
|
|
49
|
+
| HeroOverrideDefinition
|
|
50
|
+
| NavbarOverrideDefinition
|
|
51
|
+
| NewsletterOverrideDefinition
|
|
52
|
+
| ProductDetailsOverrideDefinition
|
|
53
|
+
| ProductGalleryOverrideDefinition
|
|
54
|
+
| ProductShelfOverrideDefinition
|
|
55
|
+
| RegionBarOverrideDefinition
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Originally, these types were defined in their respective Overrides file
|
|
59
|
+
* For some reason, typescript wouldn't interpret SectionOverride correctly when
|
|
60
|
+
* defining it by importing each of the SectionOverrideDefinitions and would set it as 'any'
|
|
61
|
+
*
|
|
62
|
+
* For some reason, defining them in the same file as SectionOverride seems to fix the issue.
|
|
63
|
+
* Consider that before moving them elsewhere and test it on the starter as well.
|
|
64
|
+
*/
|
|
65
|
+
export type AlertOverrideDefinition = SectionOverrideDefinition<
|
|
66
|
+
'Alert',
|
|
67
|
+
{
|
|
68
|
+
Alert: ComponentOverrideDefinition<AlertProps, Omit<AlertProps, 'onClose'>>
|
|
69
|
+
Icon: ComponentOverrideDefinition<IconProps, IconProps>
|
|
70
|
+
}
|
|
71
|
+
>
|
|
72
|
+
|
|
73
|
+
export type BannerTextOverrideDefinition = SectionOverrideDefinition<
|
|
74
|
+
'BannerText',
|
|
75
|
+
{
|
|
76
|
+
BannerText: ComponentOverrideDefinition<BannerTextProps, BannerTextProps>
|
|
77
|
+
BannerTextContent: ComponentOverrideDefinition<
|
|
78
|
+
BannerTextContentProps,
|
|
79
|
+
BannerTextContentProps
|
|
80
|
+
>
|
|
81
|
+
}
|
|
82
|
+
>
|
|
83
|
+
|
|
84
|
+
export type BreadcrumbOverrideDefinition = SectionOverrideDefinition<
|
|
85
|
+
'Breadcrumb',
|
|
86
|
+
{
|
|
87
|
+
Breadcrumb: ComponentOverrideDefinition<BreadcrumbProps, BreadcrumbProps>
|
|
88
|
+
Icon: ComponentOverrideDefinition<IconProps, IconProps>
|
|
89
|
+
}
|
|
90
|
+
>
|
|
91
|
+
|
|
92
|
+
export type EmptyStateOverrideDefinition = SectionOverrideDefinition<
|
|
93
|
+
'EmptyState',
|
|
94
|
+
{
|
|
95
|
+
EmptyState: ComponentOverrideDefinition<
|
|
96
|
+
PropsWithChildren<EmptyStateProps>,
|
|
97
|
+
EmptyStateProps
|
|
98
|
+
>
|
|
99
|
+
}
|
|
100
|
+
>
|
|
101
|
+
|
|
102
|
+
export type HeroOverrideDefinition = SectionOverrideDefinition<
|
|
103
|
+
'Hero',
|
|
104
|
+
{
|
|
105
|
+
Hero: ComponentOverrideDefinition<HeroProps, HeroProps>
|
|
106
|
+
HeroImage: ComponentOverrideDefinition<HeroImageProps, HeroImageProps>
|
|
107
|
+
HeroHeader: ComponentOverrideDefinition<HeroHeaderProps, HeroHeaderProps>
|
|
108
|
+
}
|
|
109
|
+
>
|
|
110
|
+
|
|
111
|
+
export type NavbarOverrideDefinition = SectionOverrideDefinition<
|
|
112
|
+
'Navbar',
|
|
113
|
+
{
|
|
114
|
+
Navbar: ComponentOverrideDefinition<NavbarProps, NavbarProps>
|
|
115
|
+
NavbarLinks: ComponentOverrideDefinition<NavbarLinksProps, NavbarLinksProps>
|
|
116
|
+
NavbarLinksList: ComponentOverrideDefinition<
|
|
117
|
+
NavbarLinksListProps,
|
|
118
|
+
NavbarLinksListProps
|
|
119
|
+
>
|
|
120
|
+
NavbarSlider: ComponentOverrideDefinition<
|
|
121
|
+
NavbarSliderProps,
|
|
122
|
+
NavbarSliderProps
|
|
123
|
+
>
|
|
124
|
+
NavbarSliderHeader: ComponentOverrideDefinition<
|
|
125
|
+
NavbarSliderHeaderProps,
|
|
126
|
+
NavbarSliderHeaderProps
|
|
127
|
+
>
|
|
128
|
+
NavbarSliderContent: ComponentOverrideDefinition<
|
|
129
|
+
NavbarSliderContentProps,
|
|
130
|
+
NavbarSliderContentProps
|
|
131
|
+
>
|
|
132
|
+
NavbarSliderFooter: ComponentOverrideDefinition<
|
|
133
|
+
NavbarSliderFooterProps,
|
|
134
|
+
NavbarSliderFooterProps
|
|
135
|
+
>
|
|
136
|
+
NavbarHeader: ComponentOverrideDefinition<
|
|
137
|
+
NavbarHeaderProps,
|
|
138
|
+
NavbarHeaderProps
|
|
139
|
+
>
|
|
140
|
+
NavbarRow: ComponentOverrideDefinition<NavbarRowProps, NavbarRowProps>
|
|
141
|
+
NavbarButtons: ComponentOverrideDefinition<
|
|
142
|
+
NavbarButtonsProps,
|
|
143
|
+
NavbarButtonsProps
|
|
144
|
+
>
|
|
145
|
+
IconButton: ComponentOverrideDefinition<
|
|
146
|
+
IconButtonProps,
|
|
147
|
+
Omit<IconButtonProps, 'onClick'>
|
|
148
|
+
>
|
|
149
|
+
}
|
|
150
|
+
>
|
|
151
|
+
|
|
152
|
+
export type NewsletterOverrideDefinition = SectionOverrideDefinition<
|
|
153
|
+
'Newsletter',
|
|
154
|
+
{
|
|
155
|
+
ToastIconSuccess: ComponentOverrideDefinition<IconProps, IconProps>
|
|
156
|
+
ToastIconError: ComponentOverrideDefinition<IconProps, IconProps>
|
|
157
|
+
HeaderIcon: ComponentOverrideDefinition<IconProps, IconProps>
|
|
158
|
+
InputFieldName: ComponentOverrideDefinition<
|
|
159
|
+
InputFieldProps,
|
|
160
|
+
Omit<InputFieldProps, 'inputRef'>
|
|
161
|
+
>
|
|
162
|
+
InputFieldEmail: ComponentOverrideDefinition<
|
|
163
|
+
InputFieldProps,
|
|
164
|
+
Omit<InputFieldProps, 'inputRef'>
|
|
165
|
+
>
|
|
166
|
+
Button: ComponentOverrideDefinition<ButtonProps, ButtonProps>
|
|
167
|
+
}
|
|
168
|
+
>
|
|
169
|
+
|
|
170
|
+
export type ProductDetailsOverrideDefinition = SectionOverrideDefinition<
|
|
171
|
+
'ProductDetails',
|
|
172
|
+
{
|
|
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
|
+
Price: ComponentOverrideDefinition<
|
|
184
|
+
PriceProps,
|
|
185
|
+
Omit<PriceProps, 'value' | 'data-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
|
+
ImageZoom: ComponentOverrideDefinition<ImageZoomProps, ImageZoomProps>
|
|
201
|
+
__experimentalImageGalleryImage: ComponentOverrideDefinition<any, any>
|
|
202
|
+
__experimentalImageGallery: ComponentOverrideDefinition<any, any>
|
|
203
|
+
__experimentalShippingSimulation: ComponentOverrideDefinition<any, any>
|
|
204
|
+
}
|
|
205
|
+
>
|
|
206
|
+
|
|
207
|
+
export type ProductGalleryOverrideDefinition = SectionOverrideDefinition<
|
|
208
|
+
'ProductGallery',
|
|
209
|
+
{
|
|
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
|
+
}
|
|
240
|
+
>
|
|
241
|
+
|
|
242
|
+
export type ProductShelfOverrideDefinition = SectionOverrideDefinition<
|
|
243
|
+
'ProductShelf',
|
|
244
|
+
{
|
|
245
|
+
ProductShelf: ComponentOverrideDefinition<
|
|
246
|
+
ProductShelfProps,
|
|
247
|
+
ProductShelfProps
|
|
248
|
+
>
|
|
249
|
+
__experimentalCarousel: ComponentOverrideDefinition<any, any>
|
|
250
|
+
__experimentalProductCard: ComponentOverrideDefinition<
|
|
251
|
+
any,
|
|
252
|
+
Omit<any, 'key' | 'product' | 'index'>
|
|
253
|
+
>
|
|
254
|
+
}
|
|
255
|
+
>
|
|
256
|
+
|
|
257
|
+
export type RegionBarOverrideDefinition = SectionOverrideDefinition<
|
|
258
|
+
'RegionBar',
|
|
259
|
+
{
|
|
260
|
+
RegionBar: ComponentOverrideDefinition<
|
|
261
|
+
RegionBarProps,
|
|
262
|
+
Omit<RegionBarProps, 'onButtonClick' | 'postalCode'>
|
|
263
|
+
>
|
|
264
|
+
LocationIcon: ComponentOverrideDefinition<IconProps, IconProps>
|
|
265
|
+
ButtonIcon: ComponentOverrideDefinition<IconProps, IconProps>
|
|
266
|
+
}
|
|
267
|
+
>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
DefaultSectionComponentsDefinitions,
|
|
3
|
+
ComponentOverrideDefinition,
|
|
4
|
+
Merge,
|
|
5
|
+
} from 'src/typings/overrideDefinitionUtils'
|
|
6
|
+
|
|
7
|
+
import type { SectionOverride } from 'src/typings/overrides'
|
|
8
|
+
|
|
9
|
+
export type GetSectionOverridesReturn<SO extends SectionOverride> = {
|
|
10
|
+
[Key in keyof SO['components']]: Merge<SO['components'][Key]>
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function getSectionOverrides<SO extends SectionOverride>(
|
|
14
|
+
defaultComponents: DefaultSectionComponentsDefinitions<SO>,
|
|
15
|
+
override: SO
|
|
16
|
+
): GetSectionOverridesReturn<SO> {
|
|
17
|
+
const overriddenComponents = {} as GetSectionOverridesReturn<SO>
|
|
18
|
+
|
|
19
|
+
Object.entries(defaultComponents).forEach(([key, value]) => {
|
|
20
|
+
const componentOverride:
|
|
21
|
+
| ComponentOverrideDefinition<unknown, unknown>
|
|
22
|
+
| undefined = override.components?.[key]
|
|
23
|
+
|
|
24
|
+
if (!componentOverride) {
|
|
25
|
+
overriddenComponents[key] = {
|
|
26
|
+
Component: value,
|
|
27
|
+
props: {},
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (componentOverride.Component && componentOverride.props) {
|
|
34
|
+
console.warn(
|
|
35
|
+
`Mixed use of Component and props overrides detected. Defaulting to Component override: component ${key} in the ${override.section} section.`
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (componentOverride.Component) {
|
|
40
|
+
overriddenComponents[key] = {
|
|
41
|
+
Component: componentOverride.Component,
|
|
42
|
+
props: {},
|
|
43
|
+
}
|
|
44
|
+
} else {
|
|
45
|
+
overriddenComponents[key] = {
|
|
46
|
+
Component: value,
|
|
47
|
+
props: componentOverride.props ?? {},
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
return overriddenComponents
|
|
53
|
+
}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
export const SECTIONS = {
|
|
2
|
-
Hero: {
|
|
3
|
-
components: ['Hero', 'HeroImage', 'HeroHeader'],
|
|
4
|
-
},
|
|
5
|
-
BannerText: {
|
|
6
|
-
components: ['BannerText', 'BannerTextContent'],
|
|
7
|
-
},
|
|
8
|
-
ProductDetails: {
|
|
9
|
-
components: [
|
|
10
|
-
'ProductTitle',
|
|
11
|
-
'DiscountBadge',
|
|
12
|
-
'BuyButton',
|
|
13
|
-
'Icon',
|
|
14
|
-
'Price',
|
|
15
|
-
'QuantitySelector',
|
|
16
|
-
'SkuSelector',
|
|
17
|
-
'ShippingSimulation',
|
|
18
|
-
'ImageGallery',
|
|
19
|
-
'ImageZoom',
|
|
20
|
-
'__experimentalImageGalleryImage',
|
|
21
|
-
'__experimentalImageGallery',
|
|
22
|
-
'__experimentalShippingSimulation',
|
|
23
|
-
],
|
|
24
|
-
},
|
|
25
|
-
ProductShelf: {
|
|
26
|
-
components: [
|
|
27
|
-
'ProductShelf',
|
|
28
|
-
'__experimentalCarousel',
|
|
29
|
-
'__experimentalProductCard',
|
|
30
|
-
],
|
|
31
|
-
},
|
|
32
|
-
Navbar: {
|
|
33
|
-
components: [
|
|
34
|
-
'Navbar',
|
|
35
|
-
'NavbarLinks',
|
|
36
|
-
'NavbarLinksList',
|
|
37
|
-
'NavbarSlider',
|
|
38
|
-
'NavbarSliderHeader',
|
|
39
|
-
'NavbarSliderContent',
|
|
40
|
-
'NavbarSliderFooter',
|
|
41
|
-
'NavbarHeader',
|
|
42
|
-
'NavbarRow',
|
|
43
|
-
'NavbarButtons',
|
|
44
|
-
'IconButton',
|
|
45
|
-
],
|
|
46
|
-
},
|
|
47
|
-
Breadcrumb: {
|
|
48
|
-
components: ['Breadcrumb', 'Icon'],
|
|
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
|
-
},
|
|
65
|
-
Alert: {
|
|
66
|
-
components: ['Alert', 'Icon'],
|
|
67
|
-
},
|
|
68
|
-
EmptyState: {
|
|
69
|
-
components: ['EmptyState'],
|
|
70
|
-
},
|
|
71
|
-
RegionBar: {
|
|
72
|
-
components: ['RegionBar', 'LocationIcon', 'ButtonIcon'],
|
|
73
|
-
},
|
|
74
|
-
Newsletter: {
|
|
75
|
-
components: [
|
|
76
|
-
'ToastIconSuccess',
|
|
77
|
-
'ToastIconError',
|
|
78
|
-
'HeaderIcon',
|
|
79
|
-
'InputFieldName',
|
|
80
|
-
'InputFieldEmail',
|
|
81
|
-
'Button',
|
|
82
|
-
],
|
|
83
|
-
},
|
|
84
|
-
} as const
|
|
85
|
-
|
|
86
|
-
// export type ComponentOrProps =
|
|
87
|
-
// | { Component: React.ElementType }
|
|
88
|
-
// | { props: Record<string, unknown> };
|
|
89
|
-
|
|
90
|
-
export type SectionOverride = {
|
|
91
|
-
[K in keyof typeof SECTIONS]: {
|
|
92
|
-
name: K
|
|
93
|
-
components: {
|
|
94
|
-
[ComponentKey in (typeof SECTIONS)[K]['components'][number]]?: any
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|