@faststore/core 2.1.31 → 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.
Files changed (140) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +67 -67
  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 +3 -3
  14. package/.next/routes-manifest.json +1 -1
  15. package/.next/server/chunks/186.js +16 -39
  16. package/.next/server/chunks/253.js +22 -48
  17. package/.next/server/chunks/289.js +4 -7
  18. package/.next/server/chunks/350.js +1 -1
  19. package/.next/server/chunks/721.js +22 -51
  20. package/.next/server/chunks/74.js +154 -215
  21. package/.next/server/chunks/81.js +88 -172
  22. package/.next/server/chunks/907.js +54 -100
  23. package/.next/server/middleware-build-manifest.js +1 -1
  24. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  25. package/.next/server/pages/404.js.nft.json +1 -1
  26. package/.next/server/pages/500.js.nft.json +1 -1
  27. package/.next/server/pages/[...slug].js.nft.json +1 -1
  28. package/.next/server/pages/[slug]/p.js +82 -135
  29. package/.next/server/pages/[slug]/p.js.nft.json +1 -1
  30. package/.next/server/pages/_app.js.nft.json +1 -1
  31. package/.next/server/pages/account.js.nft.json +1 -1
  32. package/.next/server/pages/api/graphql.js +1 -1
  33. package/.next/server/pages/checkout.js.nft.json +1 -1
  34. package/.next/server/pages/en-US/404.html +2 -2
  35. package/.next/server/pages/en-US/500.html +2 -2
  36. package/.next/server/pages/en-US/account.html +2 -2
  37. package/.next/server/pages/en-US/checkout.html +2 -2
  38. package/.next/server/pages/en-US/login.html +2 -2
  39. package/.next/server/pages/en-US/s.html +2 -2
  40. package/.next/server/pages/en-US.html +2 -2
  41. package/.next/server/pages/index.js.nft.json +1 -1
  42. package/.next/server/pages/login.js.nft.json +1 -1
  43. package/.next/server/pages/s.js.nft.json +1 -1
  44. package/.next/server/pages-manifest.json +2 -2
  45. package/.next/static/chunks/209-d1d2eeaeefbc68f7.js +1 -0
  46. package/.next/static/chunks/548-6b23e7ad82cd22b9.js +1 -0
  47. package/.next/static/chunks/{64.7ea3677ac3a10e00.js → 64.2f385ef39cd5877d.js} +1 -1
  48. package/.next/static/chunks/706-1020d118bb59b204.js +1 -0
  49. package/.next/static/chunks/{738-67a288ca3569cdbb.js → 738-a5ff304828f20cbf.js} +1 -1
  50. package/.next/static/chunks/791-681afeb766a9098f.js +1 -0
  51. package/.next/static/chunks/pages/404-14d27e3706f3d2c3.js +1 -0
  52. package/.next/static/chunks/pages/500-250ccf5c9626e451.js +1 -0
  53. package/.next/static/chunks/pages/[...slug]-bcfaf0c5d60b57a0.js +1 -0
  54. package/.next/static/chunks/pages/[slug]/p-c1f2b05344981f12.js +1 -0
  55. package/.next/static/chunks/pages/index-bdbfb082027ed2b7.js +1 -0
  56. package/.next/static/chunks/pages/login-b1bdf30c951bb60d.js +1 -0
  57. package/.next/static/chunks/webpack-73cade94715ad9e1.js +1 -0
  58. package/.next/static/css/208b7dd52a0981bd.css +1 -0
  59. package/.next/static/css/41ef280537acec50.css +1 -0
  60. package/.next/static/css/4ad5a6bd11a9f8d8.css +1 -0
  61. package/.next/static/css/5330ae3076254840.css +1 -0
  62. package/.next/static/css/5972921daee792bb.css +1 -0
  63. package/.next/static/css/6e1a7434f061d0ef.css +1 -0
  64. package/.next/static/css/82a475e147f4b2ee.css +1 -0
  65. package/.next/static/css/af5ef0767b748cb3.css +1 -0
  66. package/.next/static/css/cb7d1fcea42fab9c.css +1 -0
  67. package/.next/static/css/d67fbe2a613293c1.css +1 -0
  68. package/.next/static/uXS-aZT8ClbPcIudKFF0d/_buildManifest.js +1 -0
  69. package/.next/trace +80 -80
  70. package/.turbo/turbo-build.log +10 -19
  71. package/package.json +8 -8
  72. package/src/components/common/Alert/Alert.tsx +5 -8
  73. package/src/components/navigation/Navbar/Navbar.tsx +22 -22
  74. package/src/components/navigation/NavbarLinks/NavbarLinks.tsx +8 -7
  75. package/src/components/navigation/NavbarSlider/NavbarSlider.tsx +15 -14
  76. package/src/components/product/ProductGrid/ProductGrid.tsx +5 -10
  77. package/src/components/region/RegionBar/RegionBar.tsx +27 -13
  78. package/src/components/search/Filter/Filter.tsx +6 -11
  79. package/src/components/sections/Alert/Alert.tsx +17 -13
  80. package/src/components/sections/Alert/Overrides.tsx +13 -25
  81. package/src/components/sections/BannerText/BannerText.tsx +24 -20
  82. package/src/components/sections/BannerText/Overrides.tsx +11 -23
  83. package/src/components/sections/Breadcrumb/Overrides.tsx +13 -25
  84. package/src/components/sections/EmptyState/EmptyState.tsx +6 -8
  85. package/src/components/sections/EmptyState/Overrides.tsx +12 -24
  86. package/src/components/sections/Hero/Hero.tsx +15 -12
  87. package/src/components/sections/Hero/Overrides.tsx +12 -24
  88. package/src/components/sections/Navbar/Overrides.tsx +43 -31
  89. package/src/components/sections/Newsletter/Overrides.tsx +28 -26
  90. package/src/components/sections/ProductDetails/Overrides.tsx +51 -38
  91. package/src/components/sections/ProductDetails/ProductDetails.tsx +22 -30
  92. package/src/components/sections/ProductGallery/Overrides.tsx +44 -35
  93. package/src/components/sections/ProductShelf/Overrides.tsx +14 -28
  94. package/src/components/sections/RegionBar/Overrides.tsx +12 -24
  95. package/src/components/ui/Breadcrumb/Breadcrumb.tsx +9 -7
  96. package/src/components/ui/ImageGallery/ImageGallery.tsx +13 -19
  97. package/src/components/ui/Newsletter/Newsletter.tsx +23 -24
  98. package/src/components/ui/ProductDetails/ProductDetailsSettings.tsx +21 -17
  99. package/src/components/ui/ProductGallery/ProductGallery.tsx +31 -38
  100. package/src/components/ui/ProductShelf/ProductShelf.tsx +11 -16
  101. package/src/components/ui/ShippingSimulation/ShippingSimulation.tsx +2 -3
  102. package/src/components/ui/SkuSelector/Selectors.tsx +8 -7
  103. package/src/customizations/components/overrides/Alert.tsx +3 -7
  104. package/src/customizations/components/overrides/BannerText.tsx +3 -7
  105. package/src/customizations/components/overrides/Breadcrumb.tsx +3 -7
  106. package/src/customizations/components/overrides/EmptyState.tsx +3 -6
  107. package/src/customizations/components/overrides/Hero.tsx +3 -8
  108. package/src/customizations/components/overrides/Navbar.tsx +3 -16
  109. package/src/customizations/components/overrides/Newsletter.tsx +3 -11
  110. package/src/customizations/components/overrides/ProductDetails.tsx +3 -18
  111. package/src/customizations/components/overrides/ProductGallery.tsx +3 -16
  112. package/src/customizations/components/overrides/ProductShelf.tsx +3 -8
  113. package/src/customizations/components/overrides/RegionBar.tsx +3 -8
  114. package/src/typings/overrideDefinitionUtils.ts +40 -0
  115. package/src/typings/overrides.ts +267 -0
  116. package/src/utils/overrides.ts +53 -0
  117. package/.next/static/chunks/209-9a50f2317fccb202.js +0 -1
  118. package/.next/static/chunks/548-ab84e9e8b49413ab.js +0 -1
  119. package/.next/static/chunks/706-5aea41dd07970d2d.js +0 -1
  120. package/.next/static/chunks/791-63b1ccf9964b6517.js +0 -1
  121. package/.next/static/chunks/pages/404-d5f20744ecd83121.js +0 -1
  122. package/.next/static/chunks/pages/500-3911549ab88d0378.js +0 -1
  123. package/.next/static/chunks/pages/[...slug]-2232ce78cb672654.js +0 -1
  124. package/.next/static/chunks/pages/[slug]/p-16595182cbda6bb9.js +0 -1
  125. package/.next/static/chunks/pages/index-7c2ec2e4b6081dbc.js +0 -1
  126. package/.next/static/chunks/pages/login-4cc4b8e52608f076.js +0 -1
  127. package/.next/static/chunks/webpack-a86bbea19dfdfd35.js +0 -1
  128. package/.next/static/css/08e3fc80f9bad95d.css +0 -1
  129. package/.next/static/css/1b23beb5af203ffb.css +0 -1
  130. package/.next/static/css/4b19e1e142e038b0.css +0 -1
  131. package/.next/static/css/584640ffee46aa49.css +0 -1
  132. package/.next/static/css/7486a2a5fcda5283.css +0 -1
  133. package/.next/static/css/7d822a137c54a781.css +0 -1
  134. package/.next/static/css/a49f71ae6bb528e0.css +0 -1
  135. package/.next/static/css/d1ad1d89f8d5c7a1.css +0 -1
  136. package/.next/static/css/e02cdad8fc000339.css +0 -1
  137. package/.next/static/css/f9d59f597a4d8f82.css +0 -1
  138. package/.next/static/xYGxa3PwWTjNHEfOkCiX-/_buildManifest.js +0 -1
  139. package/src/typings/overrides.d.ts +0 -97
  140. /package/.next/static/{xYGxa3PwWTjNHEfOkCiX- → uXS-aZT8ClbPcIudKFF0d}/_ssgManifest.js +0 -0
@@ -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 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[209],{7216:function(e,t,r){"use strict";var n=r(2784);const a=(0,n.forwardRef)((function({testId:e="fs-label",children:t,...r},a){return n.createElement("label",{ref:a,"data-fs-label":!0,"data-testid":e,...r},t)}));t.Z=a},7549:function(e,t,r){"use strict";var n=r(2784),a=r(2691);const i=(0,n.forwardRef)((function({value:e,as:t="span",variant:r="selling",testId:i="fs-price",formatter:o=(e=>e),SRText:c,...s},l){const d=o(e,r);return n.createElement(t,{ref:l,"data-fs-price":!0,"data-fs-price-variant":r,"data-testid":i,...s},c&&n.createElement(a.Z,{text:c}),d)}));t.Z=i},2928:function(e,t,r){"use strict";var n=r(2784);const a=(0,n.forwardRef)((function({testId:e="fs-skeleton",loading:t=!0,shimmer:r=!0,children:a,size:i,border:o,borderRadius:c,...s},l){const d={width:i.width,height:i.height};return t?n.createElement("div",{ref:l,"data-fs-skeleton":!0,"data-testid":e,"data-fs-skeleton-border":o||null,style:c?{...d,borderRadius:c}:d,...s},r&&n.createElement("div",{"data-fs-skeleton-shimmer":!0})):n.createElement(n.Fragment,null,a)}));t.Z=a},9875:function(e,t,r){"use strict";r.d(t,{Z:function(){return i}});var n=r(2784),a=r(44);var i=({listPrice:e,spotPrice:t,thresholdLow:r=15,thresholdHigh:i=40,size:o,testId:c="fs-discount-badge"})=>{const s=((e,t)=>(0,n.useMemo)((()=>{const r=100*(e-t)/e;return Math.round(r)}),[t,e]))(e,t);if(0===s)return n.createElement(n.Fragment,null);const l=s<=r?"low":s<=i?"medium":"high";return n.createElement(a.Z,{"data-fs-discount-badge":!0,"data-fs-discount-badge-variant":l,size:o,"data-testid":c},s,"% off")}},8287:function(e,t,r){"use strict";var n=r(2784),a=r(875),i=r(7216),o=r(2765),c=r(5045),s=r(7578);t.Z=({id:e,label:t,type:r="text",error:l,displayClearButton:d,actionable:u,buttonActionText:f="Apply",onSubmit:p,onClear:m,placeholder:b=" ",inputRef:v,disabled:g,value:h,testId:y="fs-input-field",...O})=>{const P=!g&&l&&""!==l,w=u&&!g&&""!==h;return n.createElement("div",{"data-fs-input-field":!0,"data-fs-input-field-actionable":u,"data-fs-input-field-error":l&&""!==l,"data-testid":y},n.createElement(a.Z,{id:e,type:r,value:h,ref:v,disabled:g,placeholder:b,...O}),n.createElement(i.Z,{htmlFor:e},t),w&&(d||l?n.createElement(o.Z,{size:"small","aria-label":"Clear Field",icon:n.createElement(c.Z,{name:"XCircle"}),onClick:()=>{m?.(),v?.current?.focus()}}):n.createElement(s.Z,{variant:"tertiary",size:"small",onClick:p},f)),P&&n.createElement("span",{"data-fs-input-field-error-message":!0},l))}},783:function(e,t,r){"use strict";var n=r(2784),a=r(5045),i=r(2765),o=r(1329);const c=(0,n.forwardRef)((function({children:e,testId:t="fs-rating",length:r=5,value:c=0,icon:s,onChange:l,...d},u){const[f,p]=(0,n.useState)(0),m={"data-fs-rating-icon-outline":!0},b=n.isValidElement(s)?s:n.createElement(a.Z,{name:"Star"});return n.createElement(o.Z,{ref:u,"data-fs-rating":!0,"data-fs-rating-actionable":"function"===typeof l,"data-testid":t,...d},Array.from({length:r}).map(((e,r)=>{const o=r+1;return n.createElement("li",{key:`rating-${r}`,"data-fs-rating-item":o<=(f||c)?"full":o-c>0&&o-c<1?"partial":"empty","data-testid":`${t}-item`},l?n.createElement(i.Z,{"data-fs-rating-button":!0,icon:b,size:"small","aria-label":"rate",onClick:()=>{l(o)},onMouseEnter:()=>p(o),onMouseLeave:()=>p(c)}):n.createElement(n.Fragment,null,n.createElement("div",{"data-fs-rating-icon-wrapper":!0},b),n.isValidElement(s)?n.cloneElement(s,m):n.createElement(a.Z,{name:"Star","data-fs-rating-icon-outline":!0})))})))}));t.Z=c},3432:function(e,t,r){"use strict";r.d(t,{Z:function(){return k}});var n=r(9499),a=r(4730),i=r(2784);var o=(0,i.forwardRef)((function({testId:e="fs-product-card",variant:t="default",bordered:r=!1,outOfStock:n,children:a,...o},c){return i.createElement("article",{ref:c,"data-fs-product-card":n?"out-of-stock":"","data-fs-product-card-variant":t,"data-fs-product-card-bordered":r,"data-testid":e,...o},a)}));var c=(0,i.forwardRef)((function({testId:e="fs-product-card-image",aspectRatio:t=1,children:r,...n},a){return i.createElement("div",{ref:a,"data-fs-product-card-image":!0,"data-testid":e,style:{"--fs-product-card-image-aspect-ratio":t},...n},r)})),s=r(7865),l=r(7549),d=r(783),u=r(5045),f=r(9875),p=r(44),m=r(7578);var b=(0,i.forwardRef)((function({testId:e="fs-product-card-content",title:t,linkProps:r,price:n,outOfStock:a,outOfStockLabel:o="Out of stock",ratingValue:c,showDiscountBadge:b,buttonLabel:v="Add",onButtonClick:g,children:h,...y},O){return i.createElement("section",{ref:O,"data-fs-product-card-content":!0,"data-fs-product-card-badge":b,"data-testid":e,...y},i.createElement("div",{"data-fs-product-card-heading":!0},i.createElement("h3",{"data-fs-product-card-title":!0},i.createElement(s.Z,{...r,title:t},i.createElement("span",null,t))),i.createElement("div",{"data-fs-product-card-prices":!0},i.createElement(l.Z,{value:n?.listPrice?n.listPrice:0,formatter:n?.formatter,testId:"list-price","data-value":n?.listPrice,variant:"listing",SRText:"Original price:"}),i.createElement(l.Z,{value:n?.value?n.value:0,formatter:n?.formatter,testId:"price","data-value":n?.value,variant:"spot",SRText:"Sale Price:"})),c&&i.createElement(d.Z,{value:c,icon:i.createElement(u.Z,{name:"Star"})})),b&&!a&&i.createElement(f.Z,{listPrice:n?.listPrice?n.listPrice:0,spotPrice:n?.value?n.value:0}),a&&i.createElement(p.Z,null,o),g&&!a&&i.createElement("div",{"data-fs-product-card-actions":!0},i.createElement(m.Z,{variant:"primary",icon:i.createElement(u.Z,{name:"ShoppingCart"}),iconPosition:"left",size:"small",onClick:g},v)))})),v=r(1664),g=r.n(v),h=r(9266),y=r(5346),O=r(9854),P=r(2322),w=["product","index","bordered","variant","aspectRatio","imgProps","ratingValue","buttonLabel","onButtonClick","showDiscountBadge"];function j(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function x(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?j(Object(r),!0).forEach((function(t){(0,n.Z)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):j(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function E(e){var t,r,{product:n,index:s,bordered:l=!0,variant:d="default",aspectRatio:u=1,imgProps:f,ratingValue:p,buttonLabel:m="Add",onButtonClick:v,showDiscountBadge:j=!0}=e,E=(0,a.Z)(e,w),{sku:k,isVariantOf:{name:I},image:[S],offers:{lowPrice:_,offers:[{listPrice:Z,availability:C}]}}=n,D=x(x({},(0,O.w)({product:n,selectedOffer:0,index:s})),{},{as:g(),passHref:!0,legacyBehavior:!1,prefetch:!1}),R=(0,i.useMemo)((()=>"https://schema.org/InStock"!==C),[C]);return(0,P.jsxs)(o,x(x({outOfStock:R,bordered:l,variant:d,"data-fs-product-card-sku":k},E),{},{children:[(0,P.jsx)(c,{aspectRatio:u,children:(0,P.jsx)(h.E,{src:S.url,alt:S.alternateName,sizes:"".concat(null!==(t=null===f||void 0===f?void 0:f.sizes)&&void 0!==t?t:"(max-width: 768px) 40vw, 30vw"),width:null!==(r=null===f||void 0===f?void 0:f.width)&&void 0!==r?r:360,height:Math.round((Number(null===f||void 0===f?void 0:f.height)||360)/u),loading:null===f||void 0===f?void 0:f.loading})}),(0,P.jsx)(b,{title:I,price:{value:_,listPrice:Z,formatter:y.P},ratingValue:p,outOfStock:R,onButtonClick:v,linkProps:D,showDiscountBadge:j})]}))}var k=(0,i.memo)(E)},3405:function(e,t,r){"use strict";r.d(t,{Z:function(){return w}});var n=r(9499),a=r(2784);const i=(0,a.createContext)(void 0);var o=(0,a.forwardRef)((function({children:e,testId:t="fs-banner-text",variant:r="primary",colorVariant:n="main",...o},c){const s={variant:r,colorVariant:n};return a.createElement(i.Provider,{value:s},a.createElement("article",{ref:c,"data-fs-banner-text":!0,"data-fs-banner-text-variant":r,"data-fs-banner-text-color-variant":n,"data-testid":t,...o},e))})),c=r(7703);var s=(0,a.forwardRef)((function({testId:e="fs-banner-text-content",title:t,caption:r,link:n,linkText:o,...s},l){const{variant:d,colorVariant:u}=function(){const e=(0,a.useContext)(i);if(void 0===e)throw new Error("Do not use BannerText components outside the BannerText context.");return e}();return a.createElement("header",{ref:l,"data-fs-banner-text-content":!0,"data-fs-content":"banner-text","data-testid":e,...s},a.createElement("div",{"data-fs-banner-text-heading":!0,"data-fs-banner-text-color-variant":u},a.createElement("h2",null,t),"secondary"===d&&r&&a.createElement("p",null,r)),a.createElement(c.Z,{"data-fs-banner-text-link":!0,href:n,variant:d,inverse:"main"===u,"aria-label":o},o))})),l={name:"BannerText",components:{BannerText:{props:{}},BannerTextContent:{props:{}}}};function d(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}var u={},f={};Object.entries(l.components).forEach((e=>{var[t,r]=e;r.Component&&(u[t]=r.Component)})),Object.entries(l.components).forEach((e=>{var[t,r]=e;r.props&&(f[t]=r.props)}));var p=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?d(Object(r),!0).forEach((function(t){(0,n.Z)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):d(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({BannerText:o,BannerTextContent:s},u),m=r(7067),b=r(23),v=r.n(b),g=r(2322);function h(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function y(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?h(Object(r),!0).forEach((function(t){(0,n.Z)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):h(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var{BannerText:O,BannerTextContent:P}=p;var w=function(e){var t,r,{title:n,caption:a,link:{url:i=f.BannerTextContent.link,text:o=f.BannerTextContent.linkText},variant:c=(null!==(t=f.BannerText.variant)&&void 0!==t?t:"primary"),colorVariant:s=(null!==(r=f.BannerText.colorVariant)&&void 0!==r?r:"main")}=e;return(0,g.jsx)(m.Z,{className:"".concat(v().section," section-banner layout__section"),children:(0,g.jsx)(O,y(y({},f.BannerText),{},{variant:c,colorVariant:s,children:(0,g.jsx)(P,y(y({},f.BannerTextContent),{},{title:n,caption:a,link:i,linkText:o}))}))})}},5168:function(e,t,r){"use strict";r.d(t,{Z:function(){return V}});var n=r(9499),a=r(4730),i=r(2784),o=r(1503),c=r(4262),s=r(395),l=r(29),d=r(9857),u=r(180),f=r(7732),p=(e,t,r)=>{var n=(0,d.ZP)((0,f.km)(e,t),(()=>null),f.WN),a=function(){var t=(0,l.Z)((function*(t){var a=yield(0,u.W)(e,t,r);n.mutate(a,!1)}));return function(e){return t.apply(this,arguments)}}();return[a,n]},m=r(5045),b=r(8287),v=r(7578),g={name:"Newsletter",components:{ToastIconSuccess:{props:{}},ToastIconError:{props:{}},HeaderIcon:{props:{}},InputFieldName:{props:{}},InputFieldEmail:{props:{}},Button:{props:{}}}};function h(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}var y={},O={};Object.entries(g.components).forEach((e=>{var[t,r]=e;r.Component&&(y[t]=r.Component)})),Object.entries(g.components).forEach((e=>{var[t,r]=e;r.props&&(O[t]=r.props)}));var P=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?h(Object(r),!0).forEach((function(t){(0,n.Z)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):h(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({ToastIconSuccess:m.Z,ToastIconError:m.Z,HeaderIcon:m.Z,InputFieldName:b.Z,InputFieldEmail:b.Z,Button:v.Z},y),w=r(2322);function j(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function x(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?j(Object(r),!0).forEach((function(t){(0,n.Z)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):j(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var{ToastIconSuccess:E,ToastIconError:k,HeaderIcon:I,InputFieldEmail:S,InputFieldName:_,Button:Z}=P,C=e=>{if(!e)return"";var t=JSON.parse(e);return(0,c.E)((0,o.convertFromRaw)(t),{entityStyleFn:e=>{if("link"===e.get("type").toLowerCase())return{element:"a",attributes:{"data-fs-link":"true","data-fs-link-variant":"inline","data-fs-link-inverse":"true","data-fs-link-size":"regular","data-testid":"fs-link",href:e.getData().url}}}})},D=(0,i.forwardRef)((function(e,t){var r,{icon:n,title:a,description:o,privacyPolicy:c,emailInputLabel:l,displayNameInput:d,nameInputLabel:u,subscribeButtonLabel:f,subscribeButtonLoadingLabel:m,card:b,toastSubscribe:v,toastSubscribeError:g}=e,{subscribeUser:h,loading:y,data:P}=(()=>{var[e,{data:t,error:r,isValidating:n}]=p("SubscribeToNewsletter",{data:{name:"",email:""}});return{subscribeUser:e,data:t,error:r,loading:n}})(),j=(0,i.useRef)(null),D=(0,i.useRef)(null),{pushToast:R}=((0,i.useMemo)((()=>y?m:f),[y,f,m]),(0,s.l)());return(0,w.jsx)("div",{"data-fs-newsletter":b?"card":"",children:(0,w.jsxs)("form",{ref:t,"data-fs-newsletter-form":!0,"data-fs-content":"newsletter",onSubmit:e=>{var t,r,n,a,i,o,c;(e.preventDefault(),h({data:{name:null!==(t=null===(r=j.current)||void 0===r?void 0:r.value)&&void 0!==t?t:"",email:null!==(n=null===(a=D.current)||void 0===a?void 0:a.value)&&void 0!==n?n:""}}),null!==P&&void 0!==P&&null!==(i=P.subscribeToNewsletter)&&void 0!==i&&i.id)?R(x(x({},v),{},{status:"INFO",icon:(0,w.jsx)(E,x(x({width:30,height:30},O.ToastIconSuccess),{},{name:null!==(o=v.icon)&&void 0!==o?o:O.ToastIconSuccess.name}))})):R(x(x({},g),{},{status:"ERROR",icon:(0,w.jsx)(k,x(x({width:30,height:30},O.ToastIconError),{},{name:null!==(c=v.icon)&&void 0!==c?c:O.ToastIconError.name}))}));e.currentTarget.reset()},children:[(0,w.jsxs)("header",{"data-fs-newsletter-header":!0,children:[(0,w.jsxs)("h3",{children:[(0,w.jsx)(I,x(x({width:32,height:32},O.HeaderIcon),{},{name:null!==(r=null===n||void 0===n?void 0:n.icon)&&void 0!==r?r:O.HeaderIcon.name})),a]}),o&&(0,w.jsxs)("span",{children:[" ",o]})]}),(0,w.jsx)("div",{"data-fs-newsletter-controls":!0,children:(0,w.jsxs)(w.Fragment,{children:[d?(0,w.jsx)(_,x(x({id:"newsletter-name",required:!0},O.InputFieldName),{},{label:null!==u&&void 0!==u?u:O.InputFieldName.label,inputRef:j})):null,(0,w.jsx)(S,x(x({id:"newsletter-email",type:"email",required:!0},O.InputFieldEmail),{},{label:null!==l&&void 0!==l?l:O.InputFieldEmail.label,inputRef:D})),(0,w.jsx)("span",{"data-fs-newsletter-addendum":!0,dangerouslySetInnerHTML:{__html:C(c)}}),(0,w.jsx)(Z,x(x({variant:"secondary",inverse:!0,type:"submit"},O.Button),{},{children:y?m:f}))]})})]})})})),R=r(7067),T=r(1778),B=r.n(T),N=["icon","title","description","privacyPolicy","emailInputLabel","displayNameInput","nameInputLabel","subscribeButtonLabel","card","toastSubscribe","toastSubscribeError"];function L(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function F(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?L(Object(r),!0).forEach((function(t){(0,n.Z)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):L(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var V=function(e){var{icon:t,title:r,description:n,privacyPolicy:i,emailInputLabel:o,displayNameInput:c,nameInputLabel:s,subscribeButtonLabel:l,card:d,toastSubscribe:u,toastSubscribeError:f}=e,p=(0,a.Z)(e,N);return(0,w.jsx)(R.Z,{className:"".concat(B().section," section-newsletter"),children:(0,w.jsx)(D,F({icon:t,title:r,description:n,privacyPolicy:i,emailInputLabel:o,displayNameInput:c,nameInputLabel:s,subscribeButtonLabel:l,toastSubscribe:u,toastSubscribeError:f,card:d},p))})}},3288:function(e,t,r){"use strict";r.d(t,{Z:function(){return i}});var n=r(2928),a=r(2322);var i=function(e){var{bordered:t,sectioned:r,displayButton:i,aspectRatio:o=1,variant:c="default"}=e;return(0,a.jsxs)("div",{"data-fs-product-card-skeleton":!0,"data-fs-product-card-skeleton-variant":c,"data-fs-product-card-skeleton-bordered":t,"data-fs-product-card-skeleton-sectioned":r,children:[(0,a.jsx)("div",{"data-fs-product-card-skeleton-image":!0,style:{"--fs-product-card-skeleton-image-aspect-ratio":o},children:(0,a.jsx)(n.Z,{size:{width:"100%",height:"100%"}})}),(0,a.jsxs)("div",{"data-fs-product-card-skeleton-content":!0,children:[(0,a.jsx)(n.Z,{"data-fs-product-card-skeleton-text":!0,size:{width:"90%",height:"1.5rem"}}),(0,a.jsx)(n.Z,{"data-fs-product-card-skeleton-text":!0,size:{width:"70%",height:"1.5rem"}}),(0,a.jsx)(n.Z,{"data-fs-product-card-skeleton-badge":!0,size:{width:"6rem",height:"2rem"},border:"pill"}),i&&(0,a.jsx)(n.Z,{"data-fs-product-card-skeleton-button":!0,size:{width:"6rem",height:"2rem"},style:{columnGap:".75rem"}})]})]})}},8704:function(e,t,r){"use strict";r.d(t,{Z:function(){return V}});var n=r(9499),a=r(4730),i=r(2784);var o=(0,i.forwardRef)((function({testId:e="fs-product-shelf",children:t,...r},n){return i.createElement("div",{ref:n,"data-fs-product-shelf":!0,"data-fs-content":"product-shelf","data-testid":e,...r},t)}));var c=(0,i.forwardRef)((function({testId:e="fs-product-shelf-items",children:t,...r},n){return i.createElement("ul",{role:"list",ref:n,"data-fs-product-shelf-items":!0,"data-fs-content":"product-shelf","data-testid":e,...r},t)}));var s=(0,i.forwardRef)((function({testId:e="fs-product-shelf-item",children:t,...r},n){return i.createElement("li",{role:"listitem",ref:n,"data-fs-product-shelf-item":!0,"data-testid":e,...r},t)})),l=r(8459),d=r(3288),u=r(2322);var f=function(e){var{children:t,aspectRatio:r,loading:n=!0}=e;return n?(0,u.jsx)(o,{"data-fs-product-shelf-skeleton":!0,children:(0,u.jsx)(c,{children:Array.from({length:l.K},((e,t)=>(0,u.jsx)(s,{children:(0,u.jsx)(d.Z,{aspectRatio:r,sectioned:!0,bordered:!0})},String(t))))})}):(0,u.jsx)(u.Fragment,{children:t})},p=r(5184),m=r(737);var b=r(3432),v=r(2765),g=r(5045),h=r(5724);function y(e,t){switch(t.type){case"NEXT_PAGE":{const t=e.infinite?e.totalPages+1:e.totalPages,r=(e.currentPage+1)%t,n=r%t*e.itemsPerPage;return{...e,sliding:!0,slideDirection:"next",currentItem:n,currentPage:r}}case"PREVIOUS_PAGE":{const t=e.infinite?e.totalPages+1:e.totalPages,r=e.infinite&&0===e.currentPage?-1:((e,t)=>(t-(t-e+1)%t)%t)(e.currentPage,e.totalPages);return{...e,sliding:!0,slideDirection:"previous",currentItem:r%t*e.itemsPerPage,currentPage:r}}case"GO_TO_PAGE":return t.payload.pageIndex===e.currentPage?e:{...e,sliding:t.payload.shouldSlide,slideDirection:t.payload.pageIndex>e.currentPage?"next":"previous",currentItem:t.payload.pageIndex%e.totalPages*e.itemsPerPage,currentPage:t.payload.pageIndex};case"STOP_SLIDE":return{...e,sliding:!1};default:return e}}const O=(e,t)=>{"next"===e&&t({type:"NEXT_PAGE"}),"previous"===e&&t({type:"PREVIOUS_PAGE"}),"number"===typeof e&&t({type:"GO_TO_PAGE",payload:{pageIndex:e,shouldSlide:!0}})},P=({totalItems:e,itemsPerPage:t=1,infiniteMode:r=!1,shouldSlideOnSwipe:n=!0,...a})=>{const[o,c]=(0,i.useReducer)(y,void 0,(()=>((e,t,r)=>({currentItem:0,currentPage:0,sliding:!1,slideDirection:"next",totalItems:e,itemsPerPage:t,totalPages:Math.ceil(e/t),infinite:r}))(e,t,r)));return{handlers:(0,h.QS)({onSwipedRight:()=>n&&O("previous",c),onSwipedLeft:()=>n&&O("next",c),trackMouse:!0,...a}),slide:O,sliderState:o,sliderDispatch:c}};var w=r(7578);const j=(e,t,r)=>r?`Current page from ${e}`:`Go to page ${t+1} from ${e}`;var x=(0,i.forwardRef)((function({id:e,totalQuantity:t,activeBullet:r,onClick:n,testId:a="fs-carousel-bullets",ariaLabelGenerator:o=j,ariaControlsGenerator:c,...s},l){const d=(0,i.useMemo)((()=>Array(t).fill(0)),[t]);return i.createElement("div",{ref:l,"data-fs-carousel-bullets":!0,"data-testid":a,role:"tablist",...s},d.map(((t,s)=>{const l=r===s;return i.createElement(w.Z,{key:`${e}-${s}`,role:"tab",tabIndex:-1,"data-fs-carousel-bullet":!0,testId:`${a}-bullet`,onClick:e=>n(e,s),"aria-label":o(e,s,l),"aria-controls":c?.(s),"aria-selected":l,variant:"tertiary"})})))}));var E=function({id:e,index:t,state:r,children:n,totalItems:a,infiniteMode:o,isScrollCarousel:c}){const{isItemVisible:s,shouldRenderItem:l}=(({currentSlide:e,itemsPerPage:t,totalItems:r})=>{const n=(0,i.useRef)(new Set);(0,i.useEffect)((()=>{for(let r=0;r<t;r++)n.current.add(e+r)}),[e,t]);const a=n=>function({itemsPerPage:e,currentSlide:t,slideIdx:r,totalItems:n}){return t<0||t>=n||r>=t&&r<t+e}({slideIdx:n,currentSlide:e,itemsPerPage:t,totalItems:r});return{shouldRenderItem:e=>n.current.has(e)||a(e),isItemVisible:a}})({totalItems:a,currentSlide:r.currentItem,itemsPerPage:r.itemsPerPage}),d=!c&&{width:"100%"}||c&&{maxWidth:"60%",display:"inline-block"},u=c||l(t-Number(o));return i.createElement("li",{style:d,id:`${e}-carousel-item-${t}`,"data-fs-carousel-item":!0,"data-fs-carousel-item-visible":s(t-Number(o))||void 0},u?n:null)};var k=function({children:e,className:t,"aria-label":r,infiniteMode:n=!0,controls:a="complete",testId:o="fs-carousel",transition:c={duration:400,property:"transform"},id:s="fs-carousel",variant:l="slide",itemsPerPage:d=1,navigationIcons:u,...f}){const p=(0,i.useRef)(null),m="slide"===l,b="scroll"===l,h=i.Children.toArray(e),y=h.length,O=n?y+2:y,w=`${c.property} ${c.duration}ms ${c.timing??""} ${c.delay??""}`,{handlers:j,slide:k,sliderState:I,sliderDispatch:S}=P({itemsPerPage:d,infiniteMode:n,totalItems:y,shouldSlideOnSwipe:m,...f}),_=Math.ceil(y/I.itemsPerPage),Z=1!==_&&("complete"===a||"navigationArrows"===a),C=1!==_&&("complete"===a||"paginationBullets"===a),D=(0,i.useMemo)((()=>((e,t)=>{const r={},n=100/t;for(let a=0;a<t;++a){const t=-n*a;r[e?a-1:a]=t}return r})(n,O)),[O,n]),R=n&&e?h.slice(0,1):[],T=(n&&e?h.slice(y-1):[]).concat(e??[],R),B=(0,i.useMemo)((()=>({display:"flex",width:100*O+"%",transition:I.sliding?w:void 0,transform:`translate3d(${D[I.currentPage]}%, 0, 0)`})),[O,D,w,I.sliding,I.currentPage]),N=(0,i.useMemo)((()=>({width:"100%",display:"block",overflowX:"scroll",whiteSpace:"nowrap"})),[]),L=m&&B||b&&N,F=()=>{I.sliding||!n&&0===I.currentPage||k("previous",S)},V=()=>{I.sliding||!n&&I.currentPage===y-1||k("next",S)},M=async(e,t)=>{if("previous"===t&&0===I.currentPage)return;if("next"===t&&I.currentPage===I.totalPages-1)return;let r;const n=Number(p.current?.firstElementChild?.clientWidth);r=d>1?e*n*d:e*n-.125*n,p.current?.scrollTo({left:r,behavior:"smooth"}),k(e,S)};return i.createElement("section",{id:s,"data-fs-carousel":!0,className:t,"data-testid":o,"aria-label":r},i.createElement("div",{"data-fs-carousel-track-container":!0,style:{width:"100%",overflow:"hidden",display:b?"block":void 0},...j},i.createElement("ul",{"aria-live":"polite",ref:p,style:L,"data-fs-carousel-track":!0,onScroll:e=>{if(m||d>1)return;const t=Number(e.currentTarget.firstElementChild?.scrollWidth),r=e.currentTarget?.scrollLeft,n=(r>t/2?Math.round:Math.floor)(r/t);k(n,S)},onTransitionEnd:()=>{S({type:"STOP_SLIDE"}),n&&I.currentItem>=y&&S({type:"GO_TO_PAGE",payload:{pageIndex:0,shouldSlide:!1}}),n&&I.currentItem<0&&S({type:"GO_TO_PAGE",payload:{pageIndex:I.totalPages-1,shouldSlide:!1}})}},T.map(((e,t)=>i.createElement(E,{id:s,index:t,key:String(t),state:I,totalItems:y,infiniteMode:n,isScrollCarousel:b},e))))),Z&&i.createElement("div",{"data-fs-carousel-controls":!0},i.createElement(v.Z,{"data-fs-carousel-control":"left","aria-controls":s,"aria-label":"previous",icon:u?.left??i.createElement(g.Z,{name:"ArrowLeft",width:20,height:20,weight:"bold"}),onClick:()=>{m&&F(),b&&M(I.currentPage-1,"previous")}}),i.createElement(v.Z,{"data-fs-carousel-control":"right","aria-controls":s,"aria-label":"next",icon:u?.right??i.createElement(g.Z,{name:"ArrowRight",width:20,height:20,weight:"bold"}),onClick:()=>{m&&V(),b&&M(I.currentPage+1,"next")}})),C&&i.createElement(x,{id:s,tabIndex:0,activeBullet:I.currentPage,totalQuantity:_,onKeyDown:e=>{switch(e.key){case"ArrowLeft":m&&F(),b&&M(I.currentPage-1,"previous");break;case"ArrowRight":m&&V(),b&&M(I.currentPage+1,"next");break;case"Home":k(0,S);break;case"End":k(y-1,S)}},onClick:async(e,t)=>{m&&!I.sliding&&k(t,S),b&&M(t)},onFocus:e=>e.currentTarget.focus(),ariaControlsGenerator:e=>`${s}-carousel-item-${e}`}))};var I=function(e){var{id:t,testId:r,children:n,itemsPerPage:a=5}=e,i=window.innerWidth<=768;return(0,u.jsx)(k,{id:t,testId:r,variant:"scroll",infiniteMode:!1,itemsPerPage:i?1:a,children:n})},S={name:"ProductShelf",components:{ProductShelf:{props:{}},__experimentalCarousel:{props:{}},__experimentalProductCard:{props:{}}}};function _(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}var Z={},C={};Object.entries(S.components).forEach((e=>{var[t,r]=e;r.Component&&(Z[t]=r.Component)})),Object.entries(S.components).forEach((e=>{var[t,r]=e;r.props&&(C[t]=r.props)}));var D=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?_(Object(r),!0).forEach((function(t){(0,n.Z)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):_(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({ProductShelf:o,__experimentalCarousel:I,__experimentalProductCard:b.Z},Z),R=["title","inView","productCardConfiguration"];function T(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function B(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?T(Object(r),!0).forEach((function(t){(0,n.Z)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):T(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var{ProductShelf:N,__experimentalCarousel:L,__experimentalProductCard:F}=D;var V=function(e){var t,{title:r,inView:n,productCardConfiguration:{bordered:o=C.__experimentalProductCard.bordered,showDiscountBadge:c=C.__experimentalProductCard.showDiscountBadge}={}}=e,s=(0,a.Z)(e,R),l=function(e){var t,r=e.replace(/[^\w\s]/gi,"-");return null!==(t=r=(r=r.replace(/\s+/g,"-")).toLowerCase())&&void 0!==t?t:""}(r),d=(0,i.useId)(),b=(0,i.useRef)(!1),v=(0,m.kN)(s),g=null!==(t=null===v||void 0===v?void 0:v.edges)&&void 0!==t?t:[],{sendViewItemListEvent:h}=(0,p.m)({products:g,title:r,page:0,pageSize:0});return(0,i.useEffect)((()=>{n&&!b.current&&g.length&&(h(),b.current=!0)}),[n,g.length,h]),0===(null===v||void 0===v?void 0:v.edges.length)?null:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)("h2",{className:"text__title-section layout__content",children:r}),(0,u.jsx)(f,{aspectRatio:1,loading:void 0===v,children:(0,u.jsx)(N,B(B({},C.ProductShelfWrapper),{},{children:(0,u.jsx)(L,B(B({id:l||d},C.__experimentalCarousel),{},{children:g.map(((e,t)=>(0,i.createElement)(F,B(B({aspectRatio:1,imgProps:{width:216,height:216,sizes:"(max-width: 768px) 42vw, 30vw"}},C.__experimentalProductCard),{},{bordered:o,showDiscountBadge:c,key:"".concat(e.node.id),product:e.node,index:t+1}))))}))}))})]})}},8459:function(e,t,r){"use strict";r.d(t,{K:function(){return a},g:function(){return n}});var n=12,a=5},5184:function(e,t,r){"use strict";r.d(t,{m:function(){return o}});var n=r(1072),a=r(2784),i=r(7295),o=e=>{var{products:t,title:r,page:o,pageSize:c}=e,{currency:{code:s}}=(0,i.kP)();return{sendViewItemListEvent:(0,a.useCallback)((()=>{(0,n._)({name:"view_item_list",params:{item_list_name:r,item_list_id:r,items:t.map(((e,t)=>{var{node:r}=e;return{item_id:r.isVariantOf.productGroupID,item_name:r.isVariantOf.name,item_brand:r.brand.name,item_variant:r.sku,price:r.offers.offers[0].price,index:o*c+t+1,discount:r.offers.offers[0].listPrice-r.offers.offers[0].price,currency:s,item_variant_name:r.name,product_reference_id:r.gtin}}))}})}),[s,t,r,o,c])}}},5346:function(e,t,r){"use strict";r.d(t,{P:function(){return i}});var n=r(2784),a=r(7295),i=e=>{var t=function(){var{decimals:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{currency:t,locale:r}=(0,a.kP)();return(0,n.useCallback)((n=>Intl.NumberFormat(r,{style:"currency",currency:t.code,minimumFractionDigits:e?2:0}).format(n)),[t.code,r,e])}();return(0,n.useMemo)((()=>t(e)),[t,e])}},9854:function(e,t,r){"use strict";r.d(t,{w:function(){return o}});var n=r(1072),a=r(2784),i=r(7295),o=e=>{var{index:t,product:r,selectedOffer:o}=e,{slug:c}=r,{currency:{code:s}}=(0,i.kP)(),l=(0,a.useCallback)((()=>{(0,n._)({name:"select_item",params:{items:[{item_id:r.isVariantOf.productGroupID,item_name:r.isVariantOf.name,item_brand:r.brand.name,item_variant:r.sku,index:t,price:r.offers.offers[o].price,discount:r.offers.offers[o].listPrice-r.offers.offers[o].price,currency:s,item_variant_name:r.name,product_reference_id:r.gtin}]}}),(0,n._)({name:"search_select_item",params:{url:window.location.href,items:[{item_id:r.isVariantOf.productGroupID,item_variant:r.sku,index:t}]}})}),[s,r,t,o]);return{href:"/".concat(c,"/p"),onClick:l,"data-testid":"product-link"}}},737:function(e,t,r){"use strict";r.d(t,{yb:function(){return b},kN:function(){return v},BG:function(){return g}});var n=r(9499),a=r(2784),i=r(9857),o=r(8459),c=r(4730),s=r(180),l=r(7732),d=["cache"],u=r(7295);function f(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function p(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?f(Object(r),!0).forEach((function(t){(0,n.Z)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):f(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var m="ProductsQuery",b=e=>{var{first:t,after:r,sort:n,term:i,selectedFacets:c}=e,{channel:s,locale:l}=(0,u.kP)();return(0,a.useMemo)((()=>{var e,a=(e=c,Array.isArray(e)?e:e?[e]:[]);return{first:null!==t&&void 0!==t?t:o.K,after:null!==r&&void 0!==r?r:"0",sort:null!==n&&void 0!==n?n:"score_desc",term:null!==i&&void 0!==i?i:"",selectedFacets:[...a,{key:"channel",value:null!==s&&void 0!==s?s:""},{key:"locale",value:l}]}}),[c,t,r,n,i,s,l])},v=(e,t)=>{var r,n=b(e),{data:a}=(0,l.aM)(m,n,p({fallbackData:null,suspense:!0},t));return null===a||void 0===a||null===(r=a.search)||void 0===r?void 0:r.products},g=(e,t)=>{var r=b(e),{cache:n}=(0,i.kY)();return(0,a.useCallback)((()=>((e,t,r)=>{var{cache:n}=r,a=(0,c.Z)(r,d),o=(0,l.km)(e,t);n.get(o)||(0,i.JG)(o,(0,s.W)(e,t,a))})(m,r,p({cache:n},t))),[r,n,t])}},23:function(e){e.exports={section:"section_section__ivuGF"}},1778:function(e){e.exports={section:"section_section__kRRBW"}},3262:function(e){e.exports={section:"section_section__C1DoH",loading:"section_loading__k5bCF"}}}]);