@faststore/core 3.0.45 → 3.0.47

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 (247) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +25 -0
  3. package/.next/app-path-routes-manifest.json +1 -0
  4. package/.next/build-manifest.json +95 -90
  5. package/.next/cache/.tsbuildinfo +1 -1
  6. package/.next/cache/config.json +3 -3
  7. package/.next/cache/eslint/.cache_1gneedd +1 -1
  8. package/.next/cache/webpack/client-production/0.pack +0 -0
  9. package/.next/cache/webpack/client-production/index.pack +0 -0
  10. package/.next/cache/webpack/server-production/0.pack +0 -0
  11. package/.next/cache/webpack/server-production/index.pack +0 -0
  12. package/.next/next-minimal-server.js.nft.json +1 -1
  13. package/.next/next-server.js.nft.json +1 -1
  14. package/.next/prerender-manifest.js +1 -1
  15. package/.next/prerender-manifest.json +1 -1
  16. package/.next/react-loadable-manifest.json +17 -17
  17. package/.next/required-server-files.json +1 -1
  18. package/.next/routes-manifest.json +1 -1
  19. package/.next/server/app/_not-found.html +1 -0
  20. package/.next/server/app/_not-found.js +1 -0
  21. package/.next/server/app/_not-found.js.nft.json +1 -0
  22. package/.next/server/app/_not-found.meta +1 -0
  23. package/.next/server/app/_not-found.rsc +6 -0
  24. package/.next/server/app/_not-found_client-reference-manifest.js +1 -0
  25. package/.next/server/app/fs-next-update/page.js +1 -0
  26. package/.next/server/app/fs-next-update/page.js.nft.json +1 -0
  27. package/.next/server/app/fs-next-update/page_client-reference-manifest.js +1 -0
  28. package/.next/server/app/fs-next-update.html +1 -0
  29. package/.next/server/app/fs-next-update.meta +1 -0
  30. package/.next/server/app/fs-next-update.rsc +6 -0
  31. package/.next/server/app-paths-manifest.json +4 -0
  32. package/.next/server/chunks/1408.js +1 -0
  33. package/.next/server/chunks/1488.js +9 -0
  34. package/.next/server/chunks/2053.js +8 -0
  35. package/.next/server/chunks/3057.js +1 -0
  36. package/.next/server/chunks/3068.js +1 -0
  37. package/.next/server/chunks/3131.js +1 -0
  38. package/.next/server/chunks/3404.js +1 -0
  39. package/.next/server/chunks/3607.js +1 -0
  40. package/.next/server/chunks/368.js +1 -0
  41. package/.next/server/chunks/3779.js +1 -0
  42. package/.next/server/chunks/3992.js +1 -0
  43. package/.next/server/chunks/4222.js +1 -0
  44. package/.next/server/chunks/466.js +1 -0
  45. package/.next/server/chunks/513.js +1 -0
  46. package/.next/server/chunks/522.js +1 -0
  47. package/.next/server/chunks/5640.js +6 -0
  48. package/.next/server/chunks/5686.js +1 -0
  49. package/.next/server/chunks/6090.js +1 -0
  50. package/.next/server/chunks/6414.js +1 -0
  51. package/.next/server/chunks/647.js +296 -0
  52. package/.next/server/chunks/6535.js +1 -0
  53. package/.next/server/chunks/6693.js +1 -0
  54. package/.next/server/chunks/{859.js → 6859.js} +2 -2
  55. package/.next/server/chunks/692.js +1 -0
  56. package/.next/server/chunks/7143.js +1 -0
  57. package/.next/server/chunks/7982.js +1 -0
  58. package/.next/server/chunks/8352.js +1 -0
  59. package/.next/server/chunks/8609.js +1 -0
  60. package/.next/server/chunks/8653.js +1 -0
  61. package/.next/server/chunks/8811.js +1 -0
  62. package/.next/server/chunks/9134.js +1 -0
  63. package/.next/server/chunks/9239.js +1 -0
  64. package/.next/server/chunks/9740.js +1 -0
  65. package/.next/server/middleware-build-manifest.js +1 -1
  66. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  67. package/.next/server/pages/404.html +1 -0
  68. package/.next/server/pages/404.js +1 -1
  69. package/.next/server/pages/404.js.nft.json +1 -1
  70. package/.next/server/pages/500.js +1 -1
  71. package/.next/server/pages/500.js.nft.json +1 -1
  72. package/.next/server/pages/[...slug].js +1 -1
  73. package/.next/server/pages/[...slug].js.nft.json +1 -1
  74. package/.next/server/pages/[slug]/p.js +1 -1
  75. package/.next/server/pages/[slug]/p.js.nft.json +1 -1
  76. package/.next/server/pages/_app.js +1 -1
  77. package/.next/server/pages/_app.js.nft.json +1 -1
  78. package/.next/server/pages/_document.js +1 -1
  79. package/.next/server/pages/_document.js.nft.json +1 -1
  80. package/.next/server/pages/_error.js +1 -1
  81. package/.next/server/pages/_error.js.nft.json +1 -1
  82. package/.next/server/pages/account.js +1 -1
  83. package/.next/server/pages/account.js.nft.json +1 -1
  84. package/.next/server/pages/api/graphql.js +1 -1
  85. package/.next/server/pages/api/graphql.js.nft.json +1 -1
  86. package/.next/server/pages/api/health/live.js +1 -1
  87. package/.next/server/pages/api/health/live.js.nft.json +1 -1
  88. package/.next/server/pages/api/health/ready.js +1 -1
  89. package/.next/server/pages/api/health/ready.js.nft.json +1 -1
  90. package/.next/server/pages/api/preview.js +1 -1
  91. package/.next/server/pages/api/preview.js.nft.json +1 -1
  92. package/.next/server/pages/checkout.js +1 -1
  93. package/.next/server/pages/checkout.js.nft.json +1 -1
  94. package/.next/server/pages/en-US/404.html +2 -2
  95. package/.next/server/pages/en-US/404.json +1 -1
  96. package/.next/server/pages/en-US/500.html +2 -2
  97. package/.next/server/pages/en-US/500.json +1 -1
  98. package/.next/server/pages/en-US/account.html +2 -2
  99. package/.next/server/pages/en-US/account.json +1 -1
  100. package/.next/server/pages/en-US/checkout.html +2 -2
  101. package/.next/server/pages/en-US/checkout.json +1 -1
  102. package/.next/server/pages/en-US/login.html +2 -2
  103. package/.next/server/pages/en-US/login.json +1 -1
  104. package/.next/server/pages/en-US/s.html +2 -2
  105. package/.next/server/pages/en-US/s.json +1 -1
  106. package/.next/server/pages/en-US.html +2 -2
  107. package/.next/server/pages/en-US.json +1 -1
  108. package/.next/server/pages/index.js +1 -1
  109. package/.next/server/pages/index.js.nft.json +1 -1
  110. package/.next/server/pages/login.js +1 -1
  111. package/.next/server/pages/login.js.nft.json +1 -1
  112. package/.next/server/pages/s.js +1 -1
  113. package/.next/server/pages/s.js.nft.json +1 -1
  114. package/.next/server/pages-manifest.json +1 -1
  115. package/.next/server/server-reference-manifest.js +1 -0
  116. package/.next/server/server-reference-manifest.json +1 -0
  117. package/.next/server/webpack-api-runtime.js +1 -1
  118. package/.next/server/webpack-runtime.js +1 -1
  119. package/.next/static/chunks/{484.b82b73b1d8c37e02.js → 119.e218828b0132b8b2.js} +1 -1
  120. package/.next/static/chunks/{857.d2299cfe995af21d.js → 319.8d30e9ffafb22a7b.js} +1 -1
  121. package/.next/static/chunks/346-94f30a4bb6dafd89.js +1 -0
  122. package/.next/static/chunks/439.db1fe827fd6839bb.js +1 -0
  123. package/.next/static/chunks/461.74f76bc649cb0446.js +1 -0
  124. package/.next/static/chunks/503-e6db8cab6eb3bf60.js +25 -0
  125. package/.next/static/chunks/{540.6c62d2536d42a1e0.js → 515.e66ca5426460f9b5.js} +1 -1
  126. package/.next/static/chunks/551-448d32b3b6393825.js +1 -0
  127. package/.next/static/chunks/{575-853fb8b1ba4ce8c4.js → 575-cdcaf62ab25bbfca.js} +1 -1
  128. package/.next/static/chunks/{202.c7d8a71173edecfb.js → 576.bd044c1cd3af7bbc.js} +1 -1
  129. package/.next/static/chunks/{217.01bc0ad07edd6f1b.js → 641.e663ec37da787600.js} +1 -1
  130. package/.next/static/chunks/{758.3ca049c36b5ddd7d.js → 661.df439acd66dbae34.js} +1 -1
  131. package/.next/static/chunks/680.355e4fc032bd559f.js +1 -0
  132. package/.next/static/chunks/913-4af007b10d50c50f.js +1 -0
  133. package/.next/static/chunks/app/_not-found-3649108cdca52b21.js +1 -0
  134. package/.next/static/chunks/app/fs-next-update/page-9a2debb5dd829908.js +1 -0
  135. package/.next/static/chunks/app/layout-a5723c7cfcca3bdf.js +1 -0
  136. package/.next/static/chunks/fd9d1056-e4950b334bc218cf.js +9 -0
  137. package/.next/static/chunks/main-5e45f8a409e3ce1c.js +1 -0
  138. package/.next/static/chunks/main-app-7b31a9960d0fa675.js +1 -0
  139. package/.next/static/chunks/pages/{404-1334d11ab8467b3d.js → 404-2e174f10fe6712cd.js} +1 -1
  140. package/.next/static/chunks/pages/{500-449c5bd51f98423f.js → 500-52c42b827ed9693b.js} +1 -1
  141. package/.next/static/chunks/pages/[...slug]-91cd643a14638b90.js +1 -0
  142. package/.next/static/chunks/pages/[slug]/p-436d394ddc268573.js +1 -0
  143. package/.next/static/chunks/pages/{_app-ec0d2e833bd9cea0.js → _app-88eac41033b6a613.js} +2 -2
  144. package/.next/static/chunks/pages/{_error-fbf331a03642b495.js → _error-5a3e12f364a20272.js} +1 -1
  145. package/.next/static/chunks/pages/{account-dbc5c028225cd1ac.js → account-9e4bcc3ab5b88353.js} +1 -1
  146. package/.next/static/chunks/pages/{checkout-29ae2c37eaf172e1.js → checkout-7c95e252d2cbfd75.js} +1 -1
  147. package/.next/static/chunks/pages/index-d3008f576cb2fc9d.js +1 -0
  148. package/.next/static/chunks/pages/{login-c4d2c856008df5ac.js → login-7a53f93622c6fded.js} +1 -1
  149. package/.next/static/chunks/pages/s-4d4c0bb22d489fa2.js +1 -0
  150. package/.next/static/chunks/webpack-31f87692f808967d.js +1 -0
  151. package/.next/static/css/173705e880fb4eaf.css +1 -0
  152. package/.next/static/css/17e37eb991935d47.css +1 -0
  153. package/.next/static/css/185f3332f3d0db64.css +1 -0
  154. package/.next/static/css/25261a033e496803.css +1 -0
  155. package/.next/static/css/36f9392d58a1a958.css +1 -0
  156. package/.next/static/css/4ababb851a0d481b.css +1 -0
  157. package/.next/static/css/6ce7302d311d7d68.css +1 -0
  158. package/.next/static/css/d6562b2ce182bbef.css +1 -0
  159. package/.next/static/css/ec44b650be144ada.css +1 -0
  160. package/.next/static/css/ec840ce35f0cf5e0.css +1 -0
  161. package/.next/static/ieYDvu46hXTqDayv0izz5/_buildManifest.js +1 -0
  162. package/.next/trace +113 -91
  163. package/.next/types/app/fs-next-update/page.ts +71 -0
  164. package/.next/types/package.json +1 -0
  165. package/.turbo/turbo-build.log +38 -28
  166. package/.turbo/turbo-test.log +11 -11
  167. package/@generated/gql.ts +4 -4
  168. package/@generated/graphql.ts +15 -3
  169. package/@generated/persisted-documents.json +3 -3
  170. package/@generated/schema.graphql +2 -0
  171. package/api/index.ts +2 -0
  172. package/app/fs-next-update/page.tsx +3 -0
  173. package/app/layout.tsx +11 -0
  174. package/cms/faststore/sections.json +22 -0
  175. package/index.ts +1 -9
  176. package/next-env.d.ts +1 -0
  177. package/next.config.js +11 -0
  178. package/package.json +9 -9
  179. package/src/components/cart/CartItem/CartItem.tsx +4 -1
  180. package/src/components/cart/CartSidebar/CartSidebar.tsx +10 -1
  181. package/src/components/sections/ProductDetails/ProductDetails.tsx +7 -2
  182. package/src/components/templates/LandingPage/LandingPage.tsx +10 -1
  183. package/src/components/ui/ProductDetails/ProductDetailsSettings.tsx +7 -0
  184. package/src/customizations/src/dynamicContent/index.ts +16 -0
  185. package/src/experimental/index.ts +4 -0
  186. package/src/pages/[...slug].tsx +5 -0
  187. package/src/pages/index.tsx +18 -4
  188. package/src/sdk/cart/index.ts +1 -0
  189. package/src/sdk/graphql/request.ts +3 -3
  190. package/src/sdk/overrides/PageProvider.tsx +19 -8
  191. package/src/utils/dynamicContent.ts +29 -0
  192. package/tsconfig.json +17 -2
  193. package/.next/server/chunks/119.js +0 -1
  194. package/.next/server/chunks/12.js +0 -1
  195. package/.next/server/chunks/187.js +0 -1
  196. package/.next/server/chunks/202.js +0 -1
  197. package/.next/server/chunks/24.js +0 -1
  198. package/.next/server/chunks/242.js +0 -1
  199. package/.next/server/chunks/247.js +0 -1
  200. package/.next/server/chunks/344.js +0 -1
  201. package/.next/server/chunks/404.js +0 -1
  202. package/.next/server/chunks/414.js +0 -1
  203. package/.next/server/chunks/484.js +0 -1
  204. package/.next/server/chunks/493.js +0 -1
  205. package/.next/server/chunks/498.js +0 -1
  206. package/.next/server/chunks/540.js +0 -1
  207. package/.next/server/chunks/57.js +0 -1
  208. package/.next/server/chunks/624.js +0 -1
  209. package/.next/server/chunks/640.js +0 -6
  210. package/.next/server/chunks/646.js +0 -292
  211. package/.next/server/chunks/659.js +0 -9
  212. package/.next/server/chunks/679.js +0 -1
  213. package/.next/server/chunks/693.js +0 -1
  214. package/.next/server/chunks/694.js +0 -1
  215. package/.next/server/chunks/779.js +0 -1
  216. package/.next/server/chunks/82.js +0 -8
  217. package/.next/server/chunks/857.js +0 -1
  218. package/.next/server/chunks/881.js +0 -1
  219. package/.next/server/chunks/917.js +0 -1
  220. package/.next/server/chunks/936.js +0 -1
  221. package/.next/server/chunks/96.js +0 -1
  222. package/.next/server/chunks/997.js +0 -1
  223. package/.next/static/4d-dhs4ERxMUlufFbhp1E/_buildManifest.js +0 -1
  224. package/.next/static/chunks/104-549e3a03338dbf15.js +0 -1
  225. package/.next/static/chunks/161-b39fe2f79ff7bc85.js +0 -1
  226. package/.next/static/chunks/247.6f1391104a867395.js +0 -1
  227. package/.next/static/chunks/624.455cdc0925956ae5.js +0 -1
  228. package/.next/static/chunks/629-751d31ac7c84f87d.js +0 -1
  229. package/.next/static/chunks/65.da22595d53beae76.js +0 -1
  230. package/.next/static/chunks/main-6f63f6746cc029db.js +0 -1
  231. package/.next/static/chunks/pages/[...slug]-bcaf61b01157d8cb.js +0 -1
  232. package/.next/static/chunks/pages/[slug]/p-7ac0f128969c3df8.js +0 -1
  233. package/.next/static/chunks/pages/index-cd109119d65df8e3.js +0 -1
  234. package/.next/static/chunks/pages/s-26e475975386c51a.js +0 -1
  235. package/.next/static/chunks/webpack-cb411fb5cc9a0449.js +0 -1
  236. package/.next/static/css/0d45c82d8887a269.css +0 -1
  237. package/.next/static/css/211c7542af66d8b4.css +0 -1
  238. package/.next/static/css/2980acad3f8e1028.css +0 -1
  239. package/.next/static/css/4c4d90eb8cb1d2b7.css +0 -1
  240. package/.next/static/css/96e3fddf695d6aa9.css +0 -1
  241. package/.next/static/css/b9d9ba1b04f3160d.css +0 -1
  242. package/.next/static/css/cff9aafa16fccc9c.css +0 -1
  243. package/.next/static/css/d586715f4f707df4.css +0 -1
  244. package/.next/static/css/d8b918e01478a2ed.css +0 -1
  245. package/.next/static/css/e32410b31c666cb2.css +0 -1
  246. /package/.next/static/chunks/{framework-8e279965036b6169.js → framework-21e9365486ba23a6.js} +0 -0
  247. /package/.next/static/{4d-dhs4ERxMUlufFbhp1E → ieYDvu46hXTqDayv0izz5}/_ssgManifest.js +0 -0
@@ -51,6 +51,9 @@ export interface ProductDetailsProps {
51
51
  notAvailableButton: {
52
52
  title: string
53
53
  }
54
+ quantitySelector: {
55
+ useUnitMultiplier?: boolean
56
+ }
54
57
  }
55
58
 
56
59
  function ProductDetails({
@@ -71,6 +74,7 @@ function ProductDetails({
71
74
  displayDescription: shouldDisplayProductDescription,
72
75
  },
73
76
  notAvailableButton: { title: notAvailableButtonTitle },
77
+ quantitySelector,
74
78
  }: ProductDetailsProps) {
75
79
  const {
76
80
  DiscountBadge,
@@ -80,9 +84,9 @@ function ProductDetails({
80
84
  __experimentalNotAvailableButton: NotAvailableButton,
81
85
  } = useOverrideComponents<'ProductDetails'>()
82
86
  const { currency } = useSession()
83
- const [quantity, setQuantity] = useState(1)
84
87
  const context = usePDP()
85
88
  const { product, isValidating } = context?.data
89
+ const [quantity, setQuantity] = useState(1)
86
90
 
87
91
  if (!product) {
88
92
  throw new Error('NotFound')
@@ -188,6 +192,7 @@ function ProductDetails({
188
192
  notAvailableButtonTitle={
189
193
  notAvailableButtonTitle ?? NotAvailableButton.props.title
190
194
  }
195
+ useUnitMultiplier={quantitySelector?.useUnitMultiplier ?? false}
191
196
  />
192
197
  </section>
193
198
 
@@ -245,7 +250,7 @@ export const fragment = gql(`
245
250
  name
246
251
  gtin
247
252
  description
248
-
253
+ unitMultiplier
249
254
  isVariantOf {
250
255
  name
251
256
  productGroupID
@@ -11,6 +11,7 @@ import { OverriddenDefaultProductShelf as ProductShelf } from 'src/components/se
11
11
  import ProductTiles from 'src/components/sections/ProductTiles'
12
12
  import CUSTOM_COMPONENTS from 'src/customizations/src/components'
13
13
  import MissingContentError from 'src/sdk/error/MissingContentError/MissingContentError'
14
+ import PageProvider from 'src/sdk/overrides/PageProvider'
14
15
  import type { PageContentType } from 'src/server/cms'
15
16
  import { getPage } from 'src/server/cms'
16
17
 
@@ -30,12 +31,18 @@ const COMPONENTS: Record<string, ComponentType<any>> = {
30
31
  export type LandingPageProps = {
31
32
  page: PageContentType
32
33
  slug?: string
34
+ serverData?: unknown
33
35
  }
34
36
 
35
37
  export default function LandingPage({
36
38
  page: { sections, settings },
37
39
  slug,
40
+ serverData,
38
41
  }: LandingPageProps) {
42
+ const context = {
43
+ data: serverData,
44
+ }
45
+
39
46
  return (
40
47
  <>
41
48
  {/* SEO */}
@@ -75,7 +82,9 @@ export default function LandingPage({
75
82
  If needed, wrap your component in a <Section /> component
76
83
  (not the HTML tag) before rendering it here.
77
84
  */}
78
- <RenderSections sections={sections} components={COMPONENTS} />
85
+ <PageProvider context={context}>
86
+ <RenderSections sections={sections} components={COMPONENTS} />
87
+ </PageProvider>
79
88
  </>
80
89
  )
81
90
  }
@@ -5,6 +5,7 @@ import type { ProductDetailsFragment_ProductFragment } from '@generated/graphql'
5
5
 
6
6
  import { useBuyButton } from 'src/sdk/cart/useBuyButton'
7
7
  import { useFormattedPrice } from 'src/sdk/product/useFormattedPrice'
8
+ import config from '../../../../faststore.config'
8
9
 
9
10
  import Selectors from 'src/components/ui/SkuSelector'
10
11
  import AddToCartLoadingSkeleton from './AddToCartLoadingSkeleton'
@@ -22,6 +23,7 @@ interface ProductDetailsSettingsProps {
22
23
  quantity: number
23
24
  setQuantity: Dispatch<SetStateAction<number>>
24
25
  notAvailableButtonTitle: string
26
+ useUnitMultiplier: boolean
25
27
  }
26
28
 
27
29
  function ProductDetailsSettings({
@@ -32,6 +34,7 @@ function ProductDetailsSettings({
32
34
  setQuantity,
33
35
  buyButtonIcon: { icon: buyButtonIconName, alt: buyButtonIconAlt },
34
36
  notAvailableButtonTitle,
37
+ useUnitMultiplier,
35
38
  }: ProductDetailsSettingsProps) {
36
39
  const {
37
40
  BuyButton,
@@ -45,6 +48,7 @@ function ProductDetailsSettings({
45
48
  id,
46
49
  sku,
47
50
  gtin,
51
+ unitMultiplier,
48
52
  name: variantName,
49
53
  brand,
50
54
  isVariantOf,
@@ -70,6 +74,7 @@ function ProductDetailsSettings({
70
74
  brand,
71
75
  isVariantOf,
72
76
  additionalProperty,
77
+ unitMultiplier,
73
78
  },
74
79
  })
75
80
 
@@ -115,6 +120,8 @@ function ProductDetailsSettings({
115
120
  <QuantitySelector.Component
116
121
  min={1}
117
122
  max={10}
123
+ unitMultiplier={useUnitMultiplier ? unitMultiplier : 1}
124
+ useUnitMultiplier={useUnitMultiplier}
118
125
  {...QuantitySelector.props}
119
126
  // Dynamic props shouldn't be overridable
120
127
  // This decision can be reviewed later if needed
@@ -0,0 +1,16 @@
1
+ // starter.store code that will be copied to .faststore (core) dynamicContent/index.ts
2
+
3
+ // Refer to the Dynamic Content documentation at https://developers.vtex.com/docs/guides/faststore/dynamic-content-overview
4
+ // for mapping the page and the corresponding data-fetching function.
5
+
6
+ // Example:
7
+ // const dynamicContent = {
8
+ // home: fetchDataHomepage,
9
+ // "my-landing-page": fetchDataMyLandingPage,
10
+ // };
11
+
12
+ // export default dynamicContent;
13
+
14
+ const dynamicContent = {}
15
+
16
+ export default dynamicContent
@@ -30,9 +30,13 @@ export { default as useTopSearch_unstable } from '../../src/sdk/search/useTopSea
30
30
  export { useFilter as useFilter_unstable } from '../../src/sdk/search/useFilter'
31
31
  export { useDelayedFacets as useDelayedFacets_unstable } from '../../src/sdk/search/useDelayedFacets'
32
32
  export { useDelayedPagination as useDelayedPagination_unstable } from '../../src/sdk/search/useDelayedPagination'
33
+
33
34
  export { getShippingSimulation as getShippingSimulation_unstable } from '../../src/sdk/shipping'
34
35
  export { useShippingSimulation as useShippingSimulation_unstable } from '../../src/sdk/shipping/useShippingSimulation'
35
36
 
36
37
  // Components
37
38
  export { Image as Image_unstable } from '../../src/components/ui/Image'
38
39
  export { ProfileChallenge as ProfileChallenge_unstable } from '../../src/components/auth/ProfileChallenge'
40
+
41
+ // Server GraphQL
42
+ export { execute as execute_unstable } from '../../src/server'
@@ -23,6 +23,7 @@ import ProductListingPage, {
23
23
  } from 'src/components/templates/ProductListingPage'
24
24
  import { PageContentType } from 'src/server/cms'
25
25
  import { getPLP, PLPContentType } from 'src/server/cms/plp'
26
+ import { getDynamicContent } from 'src/utils/dynamicContent'
26
27
 
27
28
  type BaseProps = {
28
29
  globalSections: GlobalSectionsData
@@ -39,6 +40,7 @@ type Props = BaseProps &
39
40
  type: 'page'
40
41
  slug: string
41
42
  page: PageContentType
43
+ serverData?: unknown
42
44
  }
43
45
  )
44
46
 
@@ -91,12 +93,15 @@ export const getStaticProps: GetStaticProps<
91
93
  ]
92
94
 
93
95
  if (await landingPagePromise) {
96
+ const serverData = await getDynamicContent({ pageType: slug })
97
+
94
98
  return {
95
99
  props: {
96
100
  page: await landingPagePromise,
97
101
  globalSections: await globalSectionsPromise,
98
102
  type: 'page',
99
103
  slug,
104
+ serverData,
100
105
  },
101
106
  }
102
107
  }
@@ -19,6 +19,8 @@ import GlobalSections, {
19
19
  GlobalSectionsData,
20
20
  getGlobalSectionsData,
21
21
  } from 'src/components/cms/GlobalSections'
22
+ import PageProvider from 'src/sdk/overrides/PageProvider'
23
+ import { getDynamicContent } from 'src/utils/dynamicContent'
22
24
  import storeConfig from '../../faststore.config'
23
25
 
24
26
  /* A list of components that can be used in the CMS. */
@@ -35,9 +37,18 @@ const COMPONENTS: Record<string, ComponentType<any>> = {
35
37
  type Props = {
36
38
  page: PageContentType
37
39
  globalSections: GlobalSectionsData
40
+ serverData?: unknown
38
41
  }
39
42
 
40
- function Page({ page: { sections, settings }, globalSections }: Props) {
43
+ function Page({
44
+ page: { sections, settings },
45
+ globalSections,
46
+ serverData,
47
+ }: Props) {
48
+ const context = {
49
+ data: serverData,
50
+ }
51
+
41
52
  return (
42
53
  <GlobalSections {...globalSections}>
43
54
  {/* SEO */}
@@ -75,7 +86,9 @@ function Page({ page: { sections, settings }, globalSections }: Props) {
75
86
  If needed, wrap your component in a <Section /> component
76
87
  (not the HTML tag) before rendering it here.
77
88
  */}
78
- <RenderSections sections={sections} components={COMPONENTS} />
89
+ <PageProvider context={context}>
90
+ <RenderSections sections={sections} components={COMPONENTS} />
91
+ </PageProvider>
79
92
  </GlobalSections>
80
93
  )
81
94
  }
@@ -85,6 +98,7 @@ export const getStaticProps: GetStaticProps<
85
98
  Record<string, string>,
86
99
  Locator
87
100
  > = async ({ previewData }) => {
101
+ const serverData = await getDynamicContent({ pageType: 'home' })
88
102
  const globalSections = await getGlobalSectionsData(previewData)
89
103
 
90
104
  if (storeConfig.cms.data) {
@@ -99,7 +113,7 @@ export const getStaticProps: GetStaticProps<
99
113
  })
100
114
 
101
115
  return {
102
- props: { page: pageData, globalSections },
116
+ props: { page: pageData, globalSections, serverData },
103
117
  }
104
118
  }
105
119
  }
@@ -110,7 +124,7 @@ export const getStaticProps: GetStaticProps<
110
124
  })
111
125
 
112
126
  return {
113
- props: { page, globalSections },
127
+ props: { page, globalSections, serverData },
114
128
  }
115
129
  }
116
130
 
@@ -58,6 +58,7 @@ export const ValidateCartMutation = gql(`
58
58
  fragment CartProductItem on StoreProduct {
59
59
  sku
60
60
  name
61
+ unitMultiplier
61
62
  image {
62
63
  url
63
64
  alternateName
@@ -1,7 +1,7 @@
1
- import { TypedDocumentString } from '@generated/graphql'
2
-
3
1
  export type RequestOptions = Omit<BaseRequestOptions, 'operation' | 'variables'>
4
- export type Operation = Pick<TypedDocumentString<any, any>, '__meta__'>
2
+ export type Operation = {
3
+ __meta__?: Record<string, any>
4
+ }
5
5
 
6
6
  export interface GraphQLResponse<D = any> {
7
7
  data: D
@@ -1,7 +1,7 @@
1
1
  import {
2
+ ClientManyProductsQueryQuery,
2
3
  ClientProductGalleryQueryQuery,
3
4
  ClientProductQueryQuery,
4
- ClientManyProductsQueryQuery,
5
5
  ServerCollectionPageQueryQuery,
6
6
  ServerProductQueryQuery,
7
7
  } from '@generated/graphql'
@@ -28,6 +28,20 @@ export interface SearchPageContext {
28
28
  }
29
29
  }
30
30
 
31
+ export interface DynamicContent<T> {
32
+ data?: T
33
+ }
34
+
35
+ export interface PageProviderContextValue {
36
+ context?: PageProviderContext
37
+ }
38
+
39
+ type PageProviderContext =
40
+ | PDPContext
41
+ | PLPContext
42
+ | SearchPageContext
43
+ | DynamicContent<unknown>
44
+
31
45
  export const isPDP = (x: any): x is PDPContext =>
32
46
  x?.data?.product?.sku != undefined && x?.data?.product?.sku != null
33
47
 
@@ -41,10 +55,6 @@ export const isSearchPage = (x: any): x is SearchPageContext =>
41
55
  x?.data?.title != undefined ||
42
56
  x?.data?.searchTerm != undefined
43
57
 
44
- export interface PageProviderContextValue {
45
- context?: PDPContext | PLPContext | SearchPageContext
46
- }
47
-
48
58
  const PageContext = createContext<PageProviderContextValue | null>(null)
49
59
 
50
60
  function PageProvider({
@@ -61,9 +71,7 @@ function PageProvider({
61
71
  return <PageContext.Provider value={value}>{children}</PageContext.Provider>
62
72
  }
63
73
 
64
- export function usePage<
65
- T extends PLPContext | SearchPageContext | PDPContext
66
- >(): T {
74
+ export function usePage<T extends PageProviderContext>(): T {
67
75
  const { context } = useContext(PageContext)
68
76
 
69
77
  if (context == null) {
@@ -79,4 +87,7 @@ export const usePLP = () => usePage<PLPContext>()
79
87
 
80
88
  export const useSearchPage = () => usePage<SearchPageContext>()
81
89
 
90
+ export const useDynamicContent = <T extends unknown>() =>
91
+ usePage<DynamicContent<T>>()
92
+
82
93
  export default PageProvider
@@ -0,0 +1,29 @@
1
+ import dynamicContent from 'src/customizations/src/dynamicContent'
2
+
3
+ export async function getDynamicContent({ pageType }: { pageType: string }) {
4
+ try {
5
+ // Checking if the fetch function corresponding to the type of page exists (home or LP slug)
6
+ const fetchFunction = dynamicContent[pageType]
7
+
8
+ if (!fetchFunction) {
9
+ console.warn(
10
+ `Warning: Dynamic Content not found for the page: ${pageType}. Refer to the Dynamic Content documentation at https://developers.vtex.com/docs/guides/faststore/dynamic-content-overview for mapping the page and the corresponding data-fetching function.`
11
+ )
12
+ return null
13
+ }
14
+ // Calling the fetch function corresponding to the page
15
+ const { data, errors = [] } = await fetchFunction()
16
+
17
+ if (errors.length > 0) {
18
+ console.error(...errors)
19
+ }
20
+
21
+ return data
22
+ } catch (error) {
23
+ console.error('Error while fetching Dynamic Content:', error)
24
+ console.warn(
25
+ `Refer to the Dynamic Content documentation at https://developers.vtex.com/docs/guides/faststore/dynamic-content-overview for mapping the page and the corresponding data-fetching function.`
26
+ )
27
+ return null
28
+ }
29
+ }
package/tsconfig.json CHANGED
@@ -13,6 +13,7 @@
13
13
  "allowJs": true,
14
14
  "paths": {
15
15
  "src/*": ["src/*"],
16
+ "app/*": ["app/*"],
16
17
  "@generated/*": ["@generated/*"],
17
18
  "@faststore/core": ["index.ts"],
18
19
  "@faststore/core/api": ["api/index.ts"],
@@ -25,8 +26,22 @@
25
26
  "target": "es5",
26
27
  "lib": ["dom", "dom.iterable", "esnext"],
27
28
  "skipLibCheck": true,
28
- "esModuleInterop": true
29
+ "esModuleInterop": true,
30
+ "plugins": [
31
+ {
32
+ "name": "next"
33
+ }
34
+ ],
35
+ "strictNullChecks": false
29
36
  },
30
- "include": ["*.d.ts", "src/**/*.ts", "src/**/*.tsx", "@generated/**/*.ts"],
37
+ "include": [
38
+ "*.d.ts",
39
+ "src/**/*.ts",
40
+ "src/**/*.tsx",
41
+ "@generated/**/*.ts",
42
+ "app/**/*.ts",
43
+ "app/**/*.tsx",
44
+ ".next/types/**/*.ts"
45
+ ],
31
46
  "exclude": ["node_modules", "public"]
32
47
  }
@@ -1 +0,0 @@
1
- exports.id=119,exports.ids=[119],exports.modules={3405:(e,t,r)=>{"use strict";r.d(t,{V:()=>g});var n=r(7296),o=r(8918),i=r(4329),c=r(9089),a=r(4809),s=r.n(a),l=r(6689),d=r.n(l);let u=(0,l.createContext)(void 0),f=(0,l.forwardRef)(function({children:e,testId:t="fs-hero",variant:r="primary",colorVariant:n="main",...o},i){return d().createElement(u.Provider,{value:{variant:r,colorVariant:n}},d().createElement("article",{ref:i,"data-fs-hero":!0,"data-fs-hero-variant":r,"data-fs-hero-color-variant":n,"data-testid":t,...o},e))}),p=(0,l.forwardRef)(function({children:e,testId:t="fs-hero-image",...r},n){return d().createElement("div",{ref:n,"data-fs-hero-image":!0,"data-testid":t,...r},e)});var b=r(3922),O=r(2614);let j=(0,l.forwardRef)(function({icon:e,link:t,title:r,linkText:n,linkTargetBlank:o,subtitle:i,children:c,testId:a="fs-hero-heading",...s},f){let{variant:p,colorVariant:j}=function(){let e=(0,l.useContext)(u);if(void 0===e)throw Error("Do not use Hero components outside the Hero context.");return e}();return d().createElement("header",{ref:f,"data-fs-hero-heading":!0,"data-testid":a,...s},d().createElement("div",{"data-fs-hero-wrapper":!0,"data-fs-content":"hero"},d().createElement("div",{"data-fs-hero-info":!0},d().createElement("h1",{"data-fs-hero-title":!0},r),d().createElement("p",{"data-fs-hero-subtitle":!0},i),!!t&&d().createElement(b.Z,{href:t,inverse:"main"===j,icon:d().createElement(O.Z,{name:"ArrowRight"}),iconPosition:"right",target:o?"_blank":void 0},n)),!!e&&"secondary"===p&&d().createElement("span",{"data-fs-hero-icon":!0},e)))});var h=r(997);function ownKeys(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 _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let y=(0,n.B)("Hero",({link:e,title:t,subtitle:r,image:n,variant:a,colorVariant:l,icon:d})=>{let{Hero:u,HeroImage:f,HeroHeader:p}=(0,i.r3)();return h.jsx(c.Z,{className:`${s().section} section-hero`,children:(0,h.jsxs)(u.Component,_objectSpread(_objectSpread({},u.props),{},{variant:a??u.props.variant??"primary",colorVariant:l??u.props.colorVariant??"main",children:[h.jsx(f.Component,_objectSpread(_objectSpread({},f.props),{},{children:h.jsx(o.Z,{loading:"eager",src:n.src,alt:n.alt,width:360,height:240,sizes:"(max-width: 360px) 50vw, (max-width: 768px) 90vw, 50vw"})})),h.jsx(p.Component,_objectSpread({title:t,subtitle:r,link:e?.url,linkText:e?.text,linkTargetBlank:e?.linkTargetBlank,icon:d},p.props))]}))})},{Hero:f,HeroImage:p,HeroHeader:j});function OverriddenDefaultHero_ownKeys(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 OverriddenDefaultHero_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?OverriddenDefaultHero_ownKeys(Object(r),!0).forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):OverriddenDefaultHero_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let g=(0,n.v)(OverriddenDefaultHero_objectSpread(OverriddenDefaultHero_objectSpread({},{section:"Hero"}),{},{Section:y}))},7242:(e,t,r)=>{"use strict";r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var n=r(7332),o=r(9089),i=r(4890),c=r.n(i),a=r(997);let __WEBPACK_DEFAULT_EXPORT__=function({incentives:e}){return a.jsx(o.Z,{className:`${c().section} section-incentives layout__section`,children:a.jsx(n.Z,{incentives:e,colored:!0})})}},9158:(e,t,r)=>{"use strict";r.d(t,{B:()=>c});var n=r(6737),o=r(6068),i=r(8314);let c={ProductShelf:n.Z,__experimentalCarousel:i.Z,__experimentalProductCard:o.Z}},1087:(e,t,r)=>{"use strict";r.a(e,async(e,n)=>{try{r.d(t,{T:()=>s});var o=r(5783),i=r(7296),c=r(1017),a=e([c]);function ownKeys(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 _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}c=(a.then?(await a)():a)[0];let s=(0,i.v)(_objectSpread(_objectSpread({},o.K),{},{Section:c.Z}));n()}catch(e){n(e)}})},1017:(e,t,r)=>{"use strict";r.a(e,async(e,n)=>{try{r.d(t,{Z:()=>b});var o=r(9785),i=r(9089),c=r(6369),a=r(1958),s=r.n(a),l=r(9158),d=r(7296),u=r(997),f=e([c]);function ownKeys(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}c=(f.then?(await f)():f)[0];let p=(0,d.B)("ProductShelf",function(e){let t=Object.assign({},e),{ref:r,inView:n}=(0,o.useInView)();return u.jsx(i.Z,{className:`${s().section} section-product-shelf layout__section`,ref:r,children:u.jsx(c.Z,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({inView:n},t))})},l.B),b=p;n()}catch(e){n(e)}})},6598:(e,t,r)=>{"use strict";r.a(e,async(e,n)=>{try{r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var o=r(6689),i=r(9785),c=r(6068),a=r(3647),s=r(6520),l=r(7901),d=r(6414),u=r(173),f=r(9089),p=r(1301),b=r.n(p),O=r(997),j=e([u]);u=(j.then?(await j)():j)[0];let h=["title"],getRatio=(e,t)=>3===e&&0===t||2===e&&(0===t||1===t)?5/3:3/4,getSizes=(e,t)=>3===e&&0===t||2===e&&(0===t||1===t)?{width:594,height:364}:{width:284,height:364},__WEBPACK_DEFAULT_EXPORT__=e=>{let{title:t}=e,r=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,h),n=(0,o.useRef)(!1),{ref:p,inView:j}=(0,i.useInView)(),y=(0,u.k)(r),g=y?.search?.products,v=g?.edges??[],{sendViewItemListEvent:w}=(0,d.m)({products:v,title:t,page:0,pageSize:0});return((0,o.useEffect)(()=>{j&&!n.current&&v.length&&(w(),n.current=!0)},[j,v.length,w]),g?.edges.length===0)?null:(0,O.jsxs)(f.Z,{className:`${b().section} section-product-tiles layout__section`,ref:p,children:[O.jsx("h2",{className:"text__title-section layout__content",children:t}),O.jsx(a.Z,{loading:!g,children:O.jsx(s.Z,{children:v.map((e,t)=>O.jsx(l.Z,{children:O.jsx(c.Z,{"data-testid":"tile-card",product:e.node,index:t+1,variant:"wide",aspectRatio:getRatio(v.length,t),imgProps:getSizes(v.length,t)})},e.node.id))})})]})};n()}catch(e){n(e)}})},3647:(e,t,r)=>{"use strict";r.d(t,{Z:()=>ProductTilesSkeleton_ProductTilesSkeleton});var n=r(6520),o=r(7901),i=r(792),c=r(997);let ProductTileSkeleton_ProductTileSkeleton=function({index:e,aspectRatio:t=1}){return(0,c.jsxs)("div",{"data-fs-product-tile-skeleton":!0,"data-fs-product-tile-skeleton-index":e,children:[c.jsx("div",{"data-fs-product-tile-skeleton-image":!0,"data-fs-product-tile-skeleton-index":e,style:{"--fs-product-tile-skeleton-image-aspect-ratio":t},children:c.jsx(i.Z,{size:{width:"auto",height:"100%"},loading:!0})}),(0,c.jsxs)("div",{"data-fs-product-tile-skeleton-content":!0,"data-fs-product-tile-skeleton-index":e,children:[(0,c.jsxs)("div",{"data-fs-product-tile-skeleton-heading":!0,children:[c.jsx("div",{"data-fs-product-tile-skeleton-text":!0,"data-fs-product-tile-skeleton-index":e,children:c.jsx(i.Z,{size:{width:"70%",height:"1.5rem"}})}),c.jsx("div",{"data-fs-product-tile-skeleton-price":!0,children:c.jsx(i.Z,{size:{width:"60%",height:"1.5rem"}})})]}),c.jsx("div",{"data-fs-product-tile-skeleton-badge":!0,"data-fs-product-tile-skeleton-index":e,children:c.jsx(i.Z,{size:{width:"6rem",height:"2rem"},border:"pill"})})]})]})},getRatio=(e,t)=>3===e&&0===t||2===e&&(0===t||1===t)?5/3:3/4,ProductTilesSkeleton_ProductTilesSkeleton=function({children:e,loading:t=!0}){return t?c.jsx(n.Z,{children:Array.from({length:3},(e,t)=>c.jsx(o.Z,{children:c.jsx(ProductTileSkeleton_ProductTileSkeleton,{index:t+1,aspectRatio:getRatio(3,t)})},String(t)))}):c.jsx(c.Fragment,{children:e})}},6520:(e,t,r)=>{"use strict";r.d(t,{Z:()=>ui_Tiles_Tiles});var n=r(6689),o=r.n(n);let i=(0,n.forwardRef)(function({testId:e="store-tiles",children:t,...r},i){let c=n.Children.count(t);return o().createElement("ul",{ref:i,role:"list","data-fs-tiles":!0,"data-fs-tiles-variant":3===c?"expanded-first":2===c?"expanded-first-two":"","data-fs-content":"tiles","data-testid":e,...r},t)});var c=r(997);let a=["children"];function ownKeys(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 _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let ui_Tiles_Tiles=e=>{let{children:t}=e,r=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,a);return c.jsx(i,_objectSpread(_objectSpread({},r),{},{children:t}))}},5783:(e,t,r)=>{"use strict";r.d(t,{K:()=>n});let n={section:"ProductShelf"}},4809:e=>{e.exports={section:"section_section__Pdf2v"}},4890:e=>{e.exports={section:"section_section__jnQ3q"}},1301:e=>{e.exports={section:"section_section__Wwc_y",loading:"section_loading__7M1Dl"}},7901:(e,t,r)=>{"use strict";r.d(t,{Z:()=>c});var n=r(6689),o=r.n(n);let i=(0,n.forwardRef)(function({testId:e="store-tile",children:t,...r},n){return o().createElement("li",{ref:n,role:"listitem","data-fs-tile":!0,"data-testid":e,...r},t)}),c=i}};
@@ -1 +0,0 @@
1
- exports.id=12,exports.ids=[12],exports.modules={7187:(e,t)=>{"use strict";function isInAmpMode(e){let{ampFirst:t=!1,hybrid:n=!1,hasQuery:r=!1}=void 0===e?{}:e;return t||n&&r}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isInAmpMode",{enumerable:!0,get:function(){return isInAmpMode}})},2268:(e,t,n)=>{"use strict";function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{defaultHead:function(){return defaultHead},default:function(){return _default}});let r=n(7083),o=n(5570),u=o._(n(6689)),a=r._(n(8959)),i=n(8039),l=n(1988),c=n(7187);function defaultHead(e){void 0===e&&(e=!1);let t=[u.default.createElement("meta",{charSet:"utf-8"})];return e||t.push(u.default.createElement("meta",{name:"viewport",content:"width=device-width"})),t}function onlyReactElement(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===u.default.Fragment?e.concat(u.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}n(9067);let d=["name","httpEquiv","charSet","itemProp"];function reduceComponents(e,t){let{inAmpMode:n}=t;return e.reduce(onlyReactElement,[]).reverse().concat(defaultHead(n).reverse()).filter(function(){let e=new Set,t=new Set,n=new Set,r={};return o=>{let u=!0,a=!1;if(o.key&&"number"!=typeof o.key&&o.key.indexOf("$")>0){a=!0;let t=o.key.slice(o.key.indexOf("$")+1);e.has(t)?u=!1:e.add(t)}switch(o.type){case"title":case"base":t.has(o.type)?u=!1:t.add(o.type);break;case"meta":for(let e=0,t=d.length;e<t;e++){let t=d[e];if(o.props.hasOwnProperty(t)){if("charSet"===t)n.has(t)?u=!1:n.add(t);else{let e=o.props[t],n=r[t]||new Set;("name"!==t||!a)&&n.has(e)?u=!1:(n.add(e),r[t]=n)}}}}return u}}()).reverse().map((e,t)=>{let r=e.key||t;if(!n&&"link"===e.type&&e.props.href&&["https://fonts.googleapis.com/css","https://use.typekit.net/"].some(t=>e.props.href.startsWith(t))){let t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(n),!0).forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({},e.props||{});return t["data-href"]=t.href,t.href=void 0,t["data-optimized-fonts"]=!0,u.default.cloneElement(e,t)}return u.default.cloneElement(e,{key:r})})}let _default=function(e){let{children:t}=e,n=(0,u.useContext)(i.AmpStateContext),r=(0,u.useContext)(l.HeadManagerContext);return u.default.createElement(a.default,{reduceComponentsToState:reduceComponents,headManager:r,inAmpMode:(0,c.isInAmpMode)(n)},t)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8959:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return SideEffect}});let r=n(6689),useClientOnlyLayoutEffect=()=>{},useClientOnlyEffect=()=>{};function SideEffect(e){var t;let{headManager:n,reduceComponentsToState:o}=e;function emitChange(){if(n&&n.mountedInstances){let t=r.Children.toArray(Array.from(n.mountedInstances).filter(Boolean));n.updateHead(o(t,e))}}return null==n||null==(t=n.mountedInstances)||t.add(e.children),emitChange(),useClientOnlyLayoutEffect(()=>{var t;return null==n||null==(t=n.mountedInstances)||t.add(e.children),()=>{var t;null==n||null==(t=n.mountedInstances)||t.delete(e.children)}}),useClientOnlyLayoutEffect(()=>(n&&(n._pendingUpdate=emitChange),()=>{n&&(n._pendingUpdate=emitChange)})),useClientOnlyEffect(()=>(n&&n._pendingUpdate&&(n._pendingUpdate(),n._pendingUpdate=null),()=>{n&&n._pendingUpdate&&(n._pendingUpdate(),n._pendingUpdate=null)})),null}},9067:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return warnOnce}});let warnOnce=e=>{}},1323:(e,t)=>{"use strict";Object.defineProperty(t,"l",{enumerable:!0,get:function(){return function hoist(e,t){return t in e?e[t]:"then"in e&&"function"==typeof e.then?e.then(e=>hoist(e,t)):"function"==typeof e&&"default"===t?e:void 0}}})},5244:(e,t)=>{"use strict";var n;Object.defineProperty(t,"x",{enumerable:!0,get:function(){return n}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE"}(n||(n={}))},8039:(e,t,n)=>{"use strict";e.exports=n(7093).vendored.contexts.AmpContext},1988:(e,t,n)=>{"use strict";e.exports=n(7093).vendored.contexts.HeadManagerContext},5570:(e,t)=>{"use strict";function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(_getRequireWildcardCache=function(e){return e?n:t})(e)}t._=t._interop_require_wildcard=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=_getRequireWildcardCache(t);if(n&&n.has(e))return n.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var a=o?Object.getOwnPropertyDescriptor(e,u):null;a&&(a.get||a.set)?Object.defineProperty(r,u,a):r[u]=e[u]}return r.default=e,n&&n.set(e,r),r}}};
@@ -1 +0,0 @@
1
- exports.id=187,exports.ids=[187],exports.modules={6652:(e,t,r)=>{"use strict";r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__,l:()=>useUI});var o=r(6689),a=r.n(o);let reducer=(e,t)=>{let{type:r}=t;switch(r){case"open":{let{payload:r}=t;return document.body.classList.add("no-scroll"),{...e,[r]:!0}}case"close":{let{payload:r}=t;return document.body.classList.remove("no-scroll"),{...e,[r]:!1}}case"pushToast":{let r=e.toasts.some(e=>e.message===t.payload.message&&e.status===t.payload.status);if(r)return e;return{...e,toasts:[...e.toasts,t.payload]}}case"popToast":return{...e,toasts:e.toasts.slice(1)};default:throw Error(`Action ${r} not implemented`)}},initializer=()=>({cart:!1,modal:!1,navbar:!1,filter:!1,toasts:[]}),n=(0,o.createContext)(void 0);function useUI(){let e=(0,o.useContext)(n);if(void 0===e)throw Error("Missing UI context on React tree");return e}let __WEBPACK_DEFAULT_EXPORT__=function({children:e}){let[t,r]=(0,o.useReducer)(reducer,void 0,initializer),s=(0,o.useMemo)(()=>({openFilter:()=>r({type:"open",payload:"filter"}),closeFilter:()=>r({type:"close",payload:"filter"}),openNavbar:()=>r({type:"open",payload:"navbar"}),closeNavbar:()=>r({type:"close",payload:"navbar"}),openCart:()=>r({type:"open",payload:"cart"}),closeCart:()=>r({type:"close",payload:"cart"}),openModal:()=>r({type:"open",payload:"modal"}),closeModal:()=>r({type:"close",payload:"modal"}),pushToast:e=>r({type:"pushToast",payload:e}),popToast:()=>r({type:"popToast"})}),[]),l=(0,o.useMemo)(()=>({...t,...s}),[s,t]);return a().createElement(n.Provider,{value:l},e)}},8187:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>_app}),r(6968),r(1071);var o=r(8890),a=r.n(o),n=r(6652),s=r(997);let src_Layout=function({children:e}){return s.jsx(s.Fragment,{children:e})};var l=r(6689),c=r(4950);let useAnalyticsEvent=e=>{let t=(0,l.useCallback)(t=>{try{if(t.data.name!==c.vi)return;e((0,c.Wg)(t.data))}catch(e){console.error("Something went wrong while running Analytics handler")}},[e]);(0,l.useEffect)(()=>(window.addEventListener("message",t),()=>window.removeEventListener("message",t)),[t])};var i=r(7997),p=r.n(i);let analytics=()=>(useAnalyticsEvent(e=>{window.dataLayer.push({ecommerce:null}),window.dataLayer.push({event:e.name,ecommerce:e.params}),r(3982)(`./${p().platform}`).then(({default:t})=>{t(e)})}),null),getReloads=()=>Number(window.sessionStorage.getItem("store:reloads")??"0"),setReloads=e=>window.sessionStorage.setItem("store:reloads",`${e}`),canRecover=()=>2>getReloads(),isFrameworkLevelError=e=>e?.name==="ChunkLoadError";let ErrorBoundary=class ErrorBoundary extends l.Component{constructor(...e){super(...e),function(e,t,r){t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r}(this,"state",{hasError:!1,error:null})}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){if(console.error(`React Error: ${e.message} ${t.componentStack}`),window.location.pathname.startsWith("/404")||window.location.pathname.startsWith("/500"))return;let r=encodeURIComponent(window.location.pathname),o=e?.extensions?.exception?.status===404;isFrameworkLevelError(e)&&canRecover()?(setReloads(getReloads()+1),window.location.reload()):o?window.location.href=`/404?from=${r}`:window.location.href=`/500?from=${r}&errorId=unknown`}render(){return this.state.hasError?null:this.props.children}};var d=r(6641);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,o)}return r}let _app=function({Component:e,pageProps:t}){return(0,s.jsxs)(ErrorBoundary,{children:[s.jsx(a(),{color:"var(--fs-color-primary-bkg);",showOnShallow:!1,options:{showSpinner:!1}}),s.jsx(d.DefaultSeo,{norobots:p().experimental.noRobots}),s.jsx(analytics,{}),s.jsx(n.Z,{children:s.jsx(src_Layout,{children:s.jsx(e,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){var o;o=r[t],t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({},t))})})]})}},1071:()=>{},6968:()=>{},3982:(e,t,r)=>{var o={"./vtex":[3202,202],"./vtex/":[3202,202],"./vtex/index":[3202,202],"./vtex/index.ts":[3202,202],"./vtex/search":[5484,484],"./vtex/search.ts":[5484,484]};function webpackAsyncContext(e){if(!r.o(o,e))return Promise.resolve().then(()=>{var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t});var t=o[e],a=t[0];return r.e(t[1]).then(()=>r(a))}webpackAsyncContext.keys=()=>Object.keys(o),webpackAsyncContext.id=3982,e.exports=webpackAsyncContext},4950:(e,t,r)=>{"use strict";r.d(t,{Wg:()=>unwrap,re:()=>wrap,vi:()=>a});let o="store:",a="AnalyticsEvent",wrap=e=>({name:a,params:{...e,name:`${o}${e.name}`}}),unwrap=e=>({...e.params,name:e.params.name.slice(o.length,e.params.name.length)})}};
@@ -1 +0,0 @@
1
- "use strict";exports.id=202,exports.ids=[202,484],exports.modules={3202:(e,t,r)=>{r.r(t),r.d(t,{default:()=>sendEvent});var o=r(5484);function sendEvent(e){window?.sendrc?.(e.name,e.params),(0,o.default)(e)}},5484:(e,t,r)=>{r.r(t),r.d(t,{default:()=>search});var o=r(7997),n=r.n(o);function getCookie(e){let t=decodeURIComponent(document.cookie),r=t.split(";");for(let t of r){let[r,o]=t.trim().split("=");if(r===e)return o}}function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,o)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){var o;o=r[t],t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let randomUUID=()=>"function"==typeof crypto.randomUUID?crypto.randomUUID():(1e6*Math.random()).toFixed(0),createCookie=(e,t)=>{let r=`.${new URL(n().storeUrl).hostname}`;return()=>{let o=void 0===getCookie(e);if(o){let o=randomUUID();return document.cookie=`${e}=${o}; max-age=${t}; domain=${r}; path=/;`,o}return getCookie(e)}},s={anonymous:createCookie("vtex-faststore-anonymous",31536e3),session:createCookie("vtex-faststore-session",1800)},sendEvent=e=>fetch(`https://sp.vtex.com/event-api/v1/${n().api.storeId}/event`,{method:"POST",body:JSON.stringify(_objectSpread(_objectSpread({},e),{},{userAgent:navigator.userAgent,anonymous:s.anonymous(),session:s.session()})),headers:{"content-type":"application/json"}}),isFullTextSearch=e=>"string"==typeof e.searchParams.get("q")&&/^\/s(\/)?$/g.test(e.pathname);setInterval(()=>sendEvent({type:"session.ping"}),6e4);let search=e=>{switch(e.name){case"search_select_item":{let t=new URL(e.params.url);if(!isFullTextSearch(t))return;for(let r of e.params.items??[]){let e=r.item_id??r.item_variant,o=r.index;e&&o&&sendEvent({type:"search.click",productId:e,position:o,url:t.href,text:t.searchParams.get("q")??"<empty>"})}break}case"intelligent_search_query":sendEvent({type:"search.query",url:e.params.url,text:e.params.term,misspelled:e.params.isTermMisspelled,match:e.params.totalCount,operator:e.params.logicalOperator,locale:e.params.locale})}}}};
@@ -1 +0,0 @@
1
- exports.id=24,exports.ids=[24],exports.modules={6133:(e,t,r)=>{"use strict";r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var a=r(6689),n=r.n(a);let __WEBPACK_DEFAULT_EXPORT__=function({testId:e="fs-empty-state",title:t,titleIcon:r,variant:a="default",bkgColor:l="default",children:o,...s}){return n().createElement("section",{"data-fs-empty-state":!0,"data-fs-empty-state-variant":a,"data-fs-empty-state-bkg-color":l,"data-fs-content":"empty-state","data-testid":e,...s},t&&n().createElement("header",{"data-fs-empty-state-title":!0},r&&n().createElement(n().Fragment,null,r),n().createElement("p",null,t)),o)}},5699:(e,t,r)=>{"use strict";r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var a=r(6689),n=r.n(a),l=r(1516);let __WEBPACK_DEFAULT_EXPORT__=function({testId:e,title:t,indicesExpanded:r,onAccordionChange:a,children:o}){return n().createElement("div",{"data-fs-filter":!0,"data-testid":e},n().createElement("h2",{"data-fs-filter-title":!0},t),n().createElement(l.Z,{indices:r,onChange:a,"data-fs-filter-accordion":!0},o))}},2815:(e,t,r)=>{"use strict";r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var a=r(6689),n=r.n(a),l=r(4564);let __WEBPACK_DEFAULT_EXPORT__=function({children:e}){return n().createElement(l.Z,{"data-fs-filter-list":!0},e)}},1305:(e,t,r)=>{"use strict";r.d(t,{Z:()=>Filter_FilterFacetBooleanItem});var a=r(6689),n=r.n(a);let l=(0,a.forwardRef)(function({testId:e="fs-checkbox",partial:t,...r},a){return n().createElement("input",{ref:a,"data-fs-checkbox":!0,"data-testid":e,"data-fs-checkbox-partial":t,type:"checkbox",...r})});var o=r(1953),s=r(276);let Filter_FilterFacetBooleanItem=function({testId:e,id:t,selected:r,value:a,quantity:i,facetKey:c,label:u,onFacetChange:d}){return n().createElement("li",{key:t,"data-fs-filter-list-item":!0},n().createElement(l,{id:t,checked:r,onChange:()=>d({key:c,value:a},"BOOLEAN"),"data-fs-filter-list-item-checkbox":!0,"data-testid":`${e}-accordion-panel-checkbox`,"data-value":a,"data-quantity":i}),n().createElement(o.Z,{htmlFor:t,className:"text__title-mini-alt","data-fs-filter-list-item-label":!0},u," ",n().createElement(s.Z,{"data-fs-filter-list-item-badge":!0},i)))}},1355:(e,t,r)=>{"use strict";r.d(t,{Z:()=>Filter_FilterFacetRange});var a=r(6689),n=r.n(a);let percent=(e,t,r)=>Math.round((e-t)/(r-t)*100),l=(0,a.forwardRef)(function({min:e,max:t,absoluteValuesLabel:r,onChange:l,onEnd:o,testId:s="fs-slider",getAriaValueText:i,step:c,minValueLabelComponent:u,maxValueLabelComponent:d,...p},f){let b=(0,a.useMemo)(()=>(t.absolute-e.absolute)/100,[t.absolute,e.absolute]),[m,y]=(0,a.useState)(()=>percent(e.selected,e.absolute,t.absolute)),[h,g]=(0,a.useState)(()=>percent(t.selected,e.absolute,t.absolute)),[j,O]=(0,a.useState)(()=>Math.floor(e.absolute+m*b)),[_,v]=(0,a.useState)(()=>Math.round(e.absolute+h*b));return(0,a.useImperativeHandle)(f,()=>({setSliderValues:r=>{let a=Math.min(Number(r.min),_);if(O(a),y(percent(a,e.absolute,t.absolute)),r.max>t.absolute){v(t.absolute),g(percent(t.absolute,e.absolute,t.absolute));return}let n=Math.max(Number(r.max),j);v(n),g(percent(n,e.absolute,t.absolute))}})),n().createElement("div",{"data-fs-slider":!0,"data-testid":s,...p},n().createElement("div",{"data-fs-slider-absolute-values":!0},n().createElement("span",null,r.min),n().createElement("span",null,r.max)),n().createElement("div",{"data-fs-slider-wrapper":!0},n().createElement("div",{"data-fs-slider-range":!0,style:{left:`${m}%`,width:`${h-m}%`}}),n().createElement("input",{type:"range",min:Math.floor(e.absolute),max:Math.round(t.absolute),value:j,step:c,onMouseUp:()=>o?.({min:j,max:_}),onTouchEnd:()=>o?.({min:j,max:_}),onChange:r=>{let a=Math.min(Number(r.target.value),_);O(a),y(percent(a,e.absolute,t.absolute)),l?.({min:a,max:_})},"data-fs-slider-thumb":"left","aria-valuemin":e.absolute,"aria-valuemax":t.absolute,"aria-valuenow":j,"aria-label":String(j),"aria-labelledby":i?.(j,"min")}),u&&n().createElement("span",{"data-fs-slider-value-label":"min",style:{left:`calc(${j/t.absolute*100}% + (${8-.2*(j/t.absolute*100)}px))`}},u(j)),n().createElement("input",{type:"range",min:Math.floor(e.absolute),max:Math.round(t.absolute),value:_,step:c,onMouseUp:()=>o?.({min:j,max:_}),onTouchEnd:()=>o?.({min:j,max:_}),onChange:r=>{let a=Math.max(Number(r.target.value),j);v(a),g(percent(a,e.absolute,t.absolute)),l?.({min:j,max:a})},"data-fs-slider-thumb":"right","aria-valuemin":e.absolute,"aria-valuemax":t.absolute,"aria-valuenow":_,"aria-label":String(_),"aria-labelledby":i?.(_,"max")}),d&&n().createElement("span",{"data-fs-slider-value-label":"max",style:{left:`calc(${_/t.absolute*100}% + (${8-.2*(_/t.absolute*100)}px))`}},d(_))))});var o=r(9767),s=r(3779);let i=(0,a.forwardRef)(function({formatter:e,max:t,min:r,step:i=1,onChange:c,onEnd:u,testId:d="fs-price-range",variant:p,"aria-label":f,...b},m){let y=(0,a.useRef)();(0,a.useImperativeHandle)(m,()=>({setPriceRangeValues:e=>{c?.(e),y.current?.setSliderValues(e)}}));let h=(0,a.useRef)(null),g=(0,a.useRef)(null),[j,O]=(0,a.useState)(),[_,v]=(0,a.useState)(),[P,w]=(0,a.useState)({min:Math.floor(r.selected),max:Math.round(t.selected)});return n().createElement("div",{"data-fs-price-range":!0,"data-testid":d,...b},n().createElement(l,{ref:y,min:r,max:t,step:i,onEnd:e=>{u?.(e),O(void 0),v(void 0),w({min:e.min,max:e.max}),h.current?.value&&(h.current.value=String(e.min)),g.current?.value&&(g.current.value=String(e.max))},"aria-label":f,onChange:e=>c?.(e),absoluteValuesLabel:{min:n().createElement(o.Z,{value:Math.floor(r.absolute),variant:p,formatter:e}),max:n().createElement(o.Z,{value:Math.round(t.absolute),variant:p,formatter:e})},minValueLabelComponent:t=>n().createElement(o.Z,{value:t,variant:p,formatter:e}),maxValueLabelComponent:t=>n().createElement(o.Z,{value:t,variant:p,formatter:e})}),n().createElement("div",{"data-fs-price-range-inputs":!0},n().createElement(s.Z,{id:"price-range-min",step:i,label:"Min",type:"number",inputMode:"numeric",error:j,inputRef:h,min:Math.floor(r.absolute),max:P.max,value:P.min,onChange:e=>{var t;return t=e.target.value,void(O(void 0),Number(t)<Math.floor(r.absolute)||(Number(t)>Math.floor(P.max)&&O("Min price can't be greater than max"),w({...P,min:Number(t)}),y.current?.setSliderValues({...P,min:Number(t)})))},onBlur:()=>!j&&u?.(P)}),n().createElement(s.Z,{id:"price-range-max",label:"Max",step:i,type:"number",inputMode:"numeric",error:_,inputRef:g,max:Math.round(t.absolute),min:P.min,value:P.max,onChange:e=>{var r;return r=e.target.value,void(v(void 0),Number(r)>Math.round(t.absolute)||(Number(r)<Math.round(P.min)&&v("Max price can't be smaller than min"),w({...P,max:Number(r)}),y.current?.setSliderValues({...P,max:Number(r)})))},onBlur:()=>!_&&u?.(P)})))}),formatRange=(e,t)=>`${e.toFixed(2)}-to-${t.toFixed(2)}`,Filter_FilterFacetRange=function({min:e,max:t,formatter:r,facetKey:a,onFacetChange:l}){return n().createElement(i,{"data-fs-filter-facet-range":!0,min:e,max:t,formatter:r,step:1,onEnd:e=>l({key:a,value:formatRange(e.min,e.max)},"RANGE")})}},4199:(e,t,r)=>{"use strict";r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var a=r(6689),n=r.n(a),l=r(783),o=r(7734),s=r(7583);let __WEBPACK_DEFAULT_EXPORT__=function({testId:e,label:t,index:r,children:a,type:i}){return n().createElement(l.Z,{key:`${t}-${r}`,prefixId:e,testId:`${e}-accordion`,index:r,"data-type":i,"data-fs-filter-accordion-item":!0},n().createElement(o.Z,{testId:`${e}-accordion-button`},t),n().createElement(s.Z,null,a))}},6522:(e,t,r)=>{"use strict";r.d(t,{Z:()=>Filter_Filter});var a=r(6652),n=r(6689),l=r(4329),o=r(8492),s=r(3221);let i=["value"];function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let reducer=(e,t)=>{let{expanded:r,selected:a}=e,{type:n,payload:l}=t;switch(n){case"toggleExpanded":return r.has(l)?r.delete(l):r.add(l),_objectSpread(_objectSpread({},e),{},{expanded:new Set(r)});case"selectFacets":if(l!==a)return _objectSpread(_objectSpread({},e),{},{selected:l});break;case"toggleFacet":return _objectSpread(_objectSpread({},e),{},{selected:(0,o.wB)(e.selected,l)});case"setFacet":return _objectSpread(_objectSpread({},e),{},{selected:(0,o.uL)(e.selected,l.facet,l.unique)});default:throw Error(`Action ${n} not implemented`)}return e},useFilter=e=>{let{state:{selectedFacets:t}}=(0,s.R)(),{0:{selected:r,expanded:a},1:l}=(0,n.useReducer)(reducer,null,()=>({expanded:new Set([]),selected:t})),o=(0,n.useMemo)(()=>r.reduce((e,t)=>(e.has(t.key)||e.set(t.key,new Map),e.get(t.key)?.set(t.value,t),e),new Map),[r]),c=(0,n.useMemo)(()=>e.map(e=>"StoreFacetBoolean"===e.__typename?_objectSpread(_objectSpread({},e),{},{values:e.values.map(t=>{let{value:r}=t;return _objectSpread(_objectSpread({},function(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},l=Object.keys(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)r=l[a],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}(t,i)),{},{value:r,selected:!!o.get(e.key)?.has(r)})})}):e),[e,o]);return(0,n.useEffect)(()=>{l({type:"selectFacets",payload:t})},[t]),{facets:c,selected:r,expanded:a,dispatch:l}};var c=r(997);function Filter_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function Filter_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Filter_ownKeys(Object(r),!0).forEach(function(t){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Filter_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let Filter_Filter=function({facets:e,testId:t="fs-filter",filter:r}){let{__experimentalFilterDesktop:o,__experimentalFilterSlider:s}=(0,l.r3)(),i=useFilter(e),{filter:u}=(0,a.l)();return(0,c.jsxs)(c.Fragment,{children:[c.jsx("div",{className:"hidden-mobile",children:c.jsx(o.Component,Filter_objectSpread(Filter_objectSpread(Filter_objectSpread({},o.props),i),{},{testId:t,title:r?.title}))}),u&&c.jsx(n.Suspense,{fallback:null,children:c.jsx(s.Component,Filter_objectSpread(Filter_objectSpread(Filter_objectSpread({},s.props),i),{},{testId:t,title:r?.title,clearButtonLabel:r?.mobileOnly?.clearButtonLabel,applyButtonLabel:r?.mobileOnly?.applyButtonLabel}))})]})}},1582:(e,t,r)=>{"use strict";r.d(t,{Z:()=>Sort_Sort});var a=r(3221),n=r(6689),l=r.n(n),o=r(1953),s=r(2614);let i=(0,n.forwardRef)(function({options:e,id:t,testId:r="fs-select",...a},n){return l().createElement("div",{"data-fs-select":!0},l().createElement("select",{ref:n,id:t,"data-testid":r,...a},Object.keys(e).map(t=>l().createElement("option",{key:t,value:t},e[t]))),l().createElement(s.Z,{"data-fs-select-icon":!0,name:"CaretDown"}))}),c=(0,n.forwardRef)(function({id:e,label:t,options:r,testId:a="fs-select-field",...n},s){return l().createElement("div",{ref:s,"data-fs-select-field":!0},l().createElement(o.Z,{"data-fs-select-field-label":!0,htmlFor:e},t),l().createElement(i,{id:e,options:r,"data-testid":a,...n}))});var u=r(997);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let d={price_desc:"Price, descending",price_asc:"Price, ascending",orders_desc:"Top sales",name_asc:"Name, A-Z",name_desc:"Name, Z-A",release_desc:"Release date",discount_desc:"Discount",score_desc:"Relevance"},p=Object.keys(d),Sort_Sort=function({label:e="Sort by",options:t=d}){let{state:r,setState:n}=(0,a.R)(),l=Object.keys(t).reduce((e,r)=>(e[r]=t[r]??d[r],e),{});return u.jsx(c,{id:"sort-select",className:"sort / text__title-mini-alt",label:e,options:l,onChange:e=>{let t=p[e.target.selectedIndex];n(_objectSpread(_objectSpread({},r),{},{sort:t,page:0}))},value:r.sort,testId:"search-sort"})}},594:(e,t,r)=>{"use strict";r.d(t,{h:()=>O});var a=r(6689),n=r(3339),l=r(2614),o=r(792),s=r(3922),i=r(6068),c=r(3221),u=r(8492),d=r(5699),p=r(4199),f=r(2815),b=r(1305),m=r(1355),y=r(113),h=r(997);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var g=r(6133);let j=(0,a.lazy)(()=>r.e(624).then(r.bind(r,7624))),O={MobileFilterButton:n.Z,FilterIcon:l.Z,PrevIcon:l.Z,ResultsCountSkeleton:o.Z,SortSkeleton:o.Z,FilterButtonSkeleton:o.Z,LinkButtonPrev:s.Z,LinkButtonNext:s.Z,__experimentalFilterDesktop:function({facets:e,testId:t,dispatch:r,expanded:a,title:n}){let{resetInfiniteScroll:l,state:o,setState:s}=(0,c.R)();return h.jsx(d.Z,{testId:`desktop-${t}`,title:n,indicesExpanded:a,onAccordionChange:e=>r({type:"toggleExpanded",payload:e}),children:e.map((e,r)=>{let{__typename:n,label:i}=e,c=a.has(r);return(0,h.jsxs)(p.Z,{testId:t,index:r,type:n,label:i,children:["StoreFacetBoolean"===n&&c&&h.jsx(f.Z,{children:e.values.map(r=>h.jsx(b.Z,{id:`${t}-${e.label}-${r.label}`,testId:t,onFacetChange:e=>{s(_objectSpread(_objectSpread({},o),{},{selectedFacets:(0,u.wB)(o.selectedFacets,e),page:0})),l(0)},selected:r.selected,value:r.value,quantity:r.quantity,facetKey:e.key,label:r.label},`${t}-${e.label}-${r.label}`))}),"StoreFacetRange"===n&&c&&h.jsx(m.Z,{facetKey:e.key,min:e.min,max:e.max,formatter:"price"===e.key.toLowerCase()?y.P:void 0,onFacetChange:e=>{s(_objectSpread(_objectSpread({},o),{},{selectedFacets:(0,u.uL)(o.selectedFacets,e,!0),page:0})),l(0)}})]},`${t}-${i}-${r}`)})})},__experimentalFilterSlider:j,__experimentalProductCard:i.Z,__experimentalEmptyGallery:function({title:e,firstButton:t,secondButton:r}){return(0,h.jsxs)(g.Z,{variant:"rounded",title:e??"Nothing matches with your search",titleIcon:h.jsx(l.Z,{name:"CircleWavyWarning",width:56,height:56,weight:"thin"}),children:[h.jsx(s.Z,{href:t?.url??"/office",variant:"secondary",icon:h.jsx(l.Z,{name:t?.icon??"CircleWavyWarning",width:18,height:18,weight:"bold"}),iconPosition:"left",children:t?.label??"Browse Offers"}),h.jsx(s.Z,{href:r?.url??"/technology",variant:"secondary",icon:h.jsx(l.Z,{name:r?.icon??"RocketLaunch",width:18,height:18,weight:"bold"}),iconPosition:"left",children:r?.label??"Just Arrived"})]})}}},3853:(e,t,r)=>{"use strict";r.a(e,async(e,a)=>{try{r.d(t,{f:()=>i});var n=r(6592),l=r(7296),o=r(6679),s=e([o]);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}o=(s.then?(await s)():s)[0];let i=(0,l.v)(_objectSpread(_objectSpread({},n.K),{},{Section:o.Z}));a()}catch(e){a(e)}})},6679:(e,t,r)=>{"use strict";r.a(e,async(e,a)=>{try{r.d(t,{Z:()=>g});var n=r(2718),l=r(9959),o=r(9089),s=r(8624),i=r.n(s),c=r(4960),u=r(4329),d=r(7296),p=r(594),f=r(997),b=e([l]);l=(b.then?(await b)():b)[0];let m=["emptyGallery"];function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function ProductGallerySection(e){let{emptyGallery:t}=e,r=function(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},l=Object.keys(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)r=l[a],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}(e,m),{__experimentalEmptyGallery:a}=(0,u.r3)(),n=(0,c.qt)(),[s,d]=(0,c.En)(n)?[n?.data?.title,n?.data?.searchTerm]:(0,c.OJ)(n)?[n?.data?.collection?.seo?.title]:[""],p=n?.data?.search?.products?.pageInfo?.totalCount??0;return n?.data?.search?.products&&0===p?f.jsx(o.Z,{className:`${i().section} section-product-gallery`,children:f.jsx("section",{"data-testid":"product-gallery","data-fs-product-listing":!0,children:f.jsx(a.Component,_objectSpread({},t))})}):f.jsx(o.Z,{className:`${i().section} section-product-gallery layout__section`,children:f.jsx(l.Z,_objectSpread({title:s,searchTerm:d,totalCount:p},r))})}ProductGallerySection.displayName="ProductGallery";let y=(0,n.B)(ProductGallerySection),h=(0,d.B)("ProductGallery",y,p.h),g=h;a()}catch(e){a(e)}})},9491:(e,t,r)=>{"use strict";r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var a=r(792),n=r(997);let __WEBPACK_DEFAULT_EXPORT__=function({children:e,loading:t=!0}){return t?(0,n.jsxs)("div",{"data-fs-filter-skeleton":!0,children:[n.jsx(a.Z,{"data-fs-filter-skeleton-text":!0,size:{width:"100%",height:"1.5rem"}}),(0,n.jsxs)("div",{"data-fs-filter-skeleton-content":!0,children:[n.jsx(a.Z,{"data-fs-filter-skeleton-text":!0,size:{width:"100%",height:"1.5rem"},shimmer:!1}),n.jsx(a.Z,{"data-fs-filter-skeleton-text":!0,size:{width:"100%",height:"1.5rem"},shimmer:!1}),n.jsx(a.Z,{"data-fs-filter-skeleton-text":!0,size:{width:"100%",height:"1.5rem"},shimmer:!1})]})]}):n.jsx(n.Fragment,{children:e})}},4548:(e,t,r)=>{"use strict";r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var a=r(1023),n=r(5476),l=r(997);let __WEBPACK_DEFAULT_EXPORT__=function({children:e,aspectRatio:t,loading:r=!0}){return r?l.jsx("ul",{"data-fs-product-grid":!0,children:Array.from({length:a.g},(e,r)=>l.jsx("li",{children:l.jsx(n.Z,{aspectRatio:t,bordered:!0})},String(r)))}):l.jsx(l.Fragment,{children:e})}},9959:(e,t,r)=>{"use strict";r.a(e,async(e,a)=>{try{r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var n=r(3221),l=r(6641),o=r(6689),s=r(6652),i=r(6522),c=r(1582),u=r(9491),d=r(4548),p=r(7364),f=r(7452),b=r(4960),m=r(3139),y=r(4329),h=r(997),g=e([m]);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}m=(g.then?(await g)():g)[0];let j=(0,o.lazy)(()=>Promise.all([r.e(414),r.e(96)]).then(r.bind(r,8096))),O=h.jsx(d.Z,{loading:!0}),__WEBPACK_DEFAULT_EXPORT__=function({title:e,searchTerm:t,totalCount:r,searchTermLabel:a,totalCountLabel:d,filter:g,previousPageButton:_,loadMorePageButton:v,sortBySelector:P,productCard:w}){let{FilterButtonSkeleton:x,FilterIcon:S,LinkButtonNext:E,LinkButtonPrev:F,MobileFilterButton:k,PrevIcon:C,ResultsCountSkeleton:Z,SortSkeleton:D}=(0,y.r3)(),{openFilter:R}=(0,s.l)(),{pages:K,addNextPage:M,addPrevPage:A,itemsPerPage:B}=(0,n.R)(),T=(0,b.qt)(),N=T?.data,$=(0,p.u)(N)??[],{next:L,prev:I}=(0,f.g)(r);(0,m.Fl)(I?I.cursor:null),(0,m.Fl)(L?L.cursor:null);let U=!!N?.search?.facets,W=!!N?.search?.products;return(0,h.jsxs)("section",{"data-testid":"product-gallery","data-fs-product-listing":!0,children:[t&&h.jsx("header",{"data-fs-product-listing-search-term":!0,"data-fs-content":"product-gallery",children:(0,h.jsxs)("h1",{children:[a," ",h.jsx("span",{children:t})]})}),(0,h.jsxs)("div",{"data-fs-product-listing-content-grid":!0,"data-fs-content":"product-gallery",children:[h.jsx("div",{"data-fs-product-listing-filters":!0,children:h.jsx(u.Z,{loading:!U,children:U&&$?.length>0&&h.jsx(i.Z,{facets:$,filter:g})})}),h.jsx("div",{"data-fs-product-listing-results-count":!0,"data-count":r,children:h.jsx(Z.Component,_objectSpread(_objectSpread({"data-fs-product-listing-results-count-skeleton":!0,size:{width:"100%",height:"1.5rem"}},Z.props),{},{loading:!W,children:(0,h.jsxs)("h2",{"data-testid":"total-product-count",children:[r," ",d]})}))}),(0,h.jsxs)("div",{"data-fs-product-listing-sort":!0,children:[h.jsx(D.Component,_objectSpread(_objectSpread({"data-fs-product-listing-sort-skeleton":!0,size:{width:"auto",height:"1.5rem"}},D.props),{},{loading:!W,children:h.jsx(c.Z,{label:P?.label,options:P?.options})})),h.jsx(x.Component,_objectSpread(_objectSpread({"data-fs-product-listing-filter-button-skeleton":!0,size:{width:"6rem",height:"1.5rem"}},x.props),{},{loading:!U,children:U&&$?.length>0&&h.jsx(k.Component,_objectSpread(_objectSpread({variant:"tertiary","data-testid":"open-filter-button",icon:h.jsx(S.Component,_objectSpread(_objectSpread({width:16,height:16},S.props),{},{name:g?.mobileOnly?.filterButton?.icon?.icon??S.props.name,"aria-label":g?.mobileOnly?.filterButton?.icon?.alt??S.props["aria-label"]})),iconPosition:"left"},k.props),{},{onClick:R,children:g?.mobileOnly?.filterButton?.label}))}))]}),(0,h.jsxs)("div",{"data-fs-product-listing-results":!0,children:[!1!==I&&(0,h.jsxs)("div",{"data-fs-product-listing-pagination":"top",children:[h.jsx(l.NextSeo,{additionalLinkTags:[{rel:"prev",href:I.link}]}),h.jsx(F.Component,_objectSpread(_objectSpread({rel:"prev",variant:"secondary",iconPosition:"left",icon:h.jsx(C.Component,_objectSpread(_objectSpread({width:16,height:16,weight:"bold"},C.props),{},{name:_?.icon?.icon??C.props.name,"aria-label":_?.icon?.alt??_?.label??C.props["aria-label"]}))},F.props),{},{onClick:e=>{e.currentTarget.blur(),e.preventDefault(),A()},href:I.link,children:_?.label}))]}),W?h.jsx(o.Suspense,{fallback:O,children:K.map(t=>h.jsx(j,{page:t,title:e,productCard:w,itemsPerPage:B},`gallery-page-${t}`))}):O,!1!==L&&(0,h.jsxs)("div",{"data-fs-product-listing-pagination":"bottom",children:[h.jsx(l.NextSeo,{additionalLinkTags:[{rel:"next",href:L.link}]}),h.jsx(E.Component,_objectSpread(_objectSpread({testId:"show-more",rel:"next",variant:"secondary"},E.props),{},{onClick:e=>{e.currentTarget.blur(),e.preventDefault(),M()},href:L.link,children:v?.label}))]})]})]})]})};a()}catch(e){a(e)}})},6592:(e,t,r)=>{"use strict";r.d(t,{K:()=>a});let a={section:"ProductGallery"}},6227:(e,t,r)=>{"use strict";r.a(e,async(e,a)=>{try{r.d(t,{p:()=>prefetchQuery});var n=r(5941),l=r(2495),o=r(7553),s=e([n,o]);[n,o]=s.then?(await s)():s;let i=["cache"],prefetchQuery=(e,t,r)=>{let{cache:a}=r,s=function(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},l=Object.keys(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)r=l[a],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}(r,i),c=(0,o.km)(e.__meta__.operationName,t);a.get(c)||(0,n.mutate)(c,(0,l.W)(e,t,s))};a()}catch(e){a(e)}})},7171:(e,t,r)=>{"use strict";r.a(e,async(e,a)=>{try{r.d(t,{Bj:()=>u,Y_:()=>useCreateUseGalleryPage,__:()=>useGalleryPage});var n=r(3523),l=r(3221),o=r(6689),s=r(7553),i=r(5081),c=e([s]);s=(c.then?(await c)():c)[0];let u=(0,o.createContext)(e=>({data:null})),useGalleryPage=e=>{let t=(0,o.useContext)(u);if(!t)throw Error("Missing UseGalleryPageContext on React tree");return t(e)},d=n.gU,getKey=e=>JSON.stringify(e),useCreateUseGalleryPage=()=>{let{0:e,1:t}=(0,o.useState)([]),r=(0,o.useRef)([]),a=(0,o.useRef)([]),n=(0,o.useCallback)(function(e){let{state:{sort:n,term:c,selectedFacets:u},itemsPerPage:p}=(0,l.R)(),f=(0,i.y)({first:p,after:(p*e).toString(),sort:n,term:c??"",selectedFacets:u}),b=a.current[e]===getKey(f),{data:m}=(0,s.aM)(d,f,{fallbackData:null,suspense:!0,doNotRun:b}),y=!b&&null!==m;if(y){a.current[e]=getKey(f);let t=[...r.current];t[e]=m,r.current=t}return(0,o.useEffect)(()=>{y&&t(t=>{let r=[...t];return r[e]=m,r})},[m,e,y]),(0,o.useMemo)(()=>b?{data:r.current[e]}:{data:m},[b,m,e])},[]);return(0,o.useMemo)(()=>({pages:e,useGalleryPage:n}),[e,n])};a()}catch(e){a(e)}})},7921:(e,t,r)=>{"use strict";r.a(e,async(e,a)=>{try{r.d(t,{UO:()=>useProductGalleryQuery});var n=r(3523),l=r(1072),o=r(3221),s=r(7553),i=r(5081),c=r(1868),u=e([s]);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}s=(u.then?(await u)():u)[0];let d=n.VA,useProductGalleryQuery=({term:e,sort:t,selectedFacets:r,itemsPerPage:a})=>{let{locale:n}=(0,c.kP)(),{state:u,setState:p}=(0,o.R)(),f=(0,i.y)({first:a,after:"0",sort:t,term:e??"",selectedFacets:r}),findFacetValue=(e,t)=>{let r=e.find(({key:e})=>e===t);return r?.value??null};return(0,s.aM)(d,f,{onSuccess:t=>{if(t){let a=findFacetValue(r,"fuzzy"),o=findFacetValue(r,"operator");a||o||p(_objectSpread(_objectSpread({},u),{},{selectedFacets:[...r,{key:"fuzzy",value:t.search.metadata?.fuzzy},{key:"operator",value:t.search.metadata?.logicalOperator}]})),e&&(0,l._)({name:"intelligent_search_query",params:{locale:n,term:e,url:window.location.href,logicalOperator:t.search.metadata?.logicalOperator??"and",isTermMisspelled:t.search.metadata?.isTermMisspelled??!1,totalCount:t.search.products.pageInfo.totalCount}})}}})};a()}catch(e){a(e)}})},3139:(e,t,r)=>{"use strict";r.a(e,async(e,a)=>{try{r.d(t,{Fl:()=>useProductsPrefetch});var n=r(3523),l=r(3221),o=r(6689),s=r(5941),i=r(6227),c=r(5081),u=e([s,i]);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}[s,i]=u.then?(await u)():u;let d=n.gU,useProductsQueryPrefetch=(e,t)=>{let r=(0,c.y)(e),{cache:a}=(0,s.useSWRConfig)();return(0,o.useCallback)(()=>(0,i.p)(d,r,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({cache:a},t)),[r,a,t])},useProductsPrefetch=e=>{let{itemsPerPage:t,state:{sort:r,term:a,selectedFacets:n}}=(0,l.R)(),s=useProductsQueryPrefetch({first:t,after:(t*(e??0)).toString(),sort:r,term:a??"",selectedFacets:n});(0,o.useEffect)(()=>{null!==e&&s()},[e,s])};a()}catch(e){a(e)}})},5403:(e,t,r)=>{"use strict";r.d(t,{j:()=>useApplySearchState});var a=r(6689),n=r(1163);let useApplySearchState=()=>{let e=(0,n.useRouter)();return(0,a.useCallback)(t=>e.push(`${t.pathname}${t.search}`),[e])}},7364:(e,t,r)=>{"use strict";r.d(t,{u:()=>useDelayedFacets});var a=r(6689);let useDelayedFacets=e=>{let t=(0,a.useRef)([]);return(0,a.useMemo)(()=>(e&&(t.current=e.search?.facets),t.current),[e,t])}},7452:(e,t,r)=>{"use strict";r.d(t,{g:()=>useDelayedPagination});var a=r(6689),n=r(2339),l=r(3221);let getLink=e=>{let{pathname:t,search:r}=(0,n.Z)(e);return`${t}${r}`},usePagination=e=>{let{pages:t,itemsPerPage:r,state:n}=(0,l.R)(),o=Math.ceil(e/r),s=Number(t[t.length-1])+1,i=t[0]-1;return(0,a.useMemo)(()=>({next:s<o&&{cursor:s,link:getLink({...n,page:s})},prev:i>-1&&{cursor:i,link:getLink({...n,page:i})}}),[s,i,n,o])},useDelayedPagination=e=>{let t=usePagination(e),{0:r,1:n}=(0,a.useState)(()=>({next:!1,prev:!1}));return(0,a.useEffect)(()=>{n(t)},[t]),r}},8624:e=>{e.exports={section:"section_section__4Hqa8",loading:"section_loading__GPzvE"}},1197:(e,t,r)=>{"use strict";r.d(t,{_:()=>s,z:()=>Provider});var a=r(6689),n=r.n(a),l=r(2254);function setPagesSessionStorage(e){try{let t=window.history.state?.key;if(!t)return;let r=`__fs_gallery_page_${t}`;sessionStorage.setItem(r,JSON.stringify(e))}catch(e){return}}let reducer=(e,t)=>{switch(t.type){case"addPrev":{let t=e[0]-1,r=[t,...e];return setPagesSessionStorage(r),r}case"addNext":{let t=Number(e[e.length-1])+1,r=[...e,t];return setPagesSessionStorage(r),r}case"reset":{let{payload:e}=t,r=[e];return setPagesSessionStorage(r),r}default:throw new l.q("Unknown action for infinite search")}},useSearchInfiniteState=e=>{let[t,r]=(0,a.useReducer)(reducer,void 0,()=>(function(){try{let e=window.history.state?.key;if(!e)return null;let t=`__fs_gallery_page_${e}`,r=sessionStorage.getItem(t);return r?JSON.parse(r):null}catch(e){return null}})()??[e]),n=(0,a.useMemo)(()=>({addPrevPage:()=>r({type:"addPrev"}),addNextPage:()=>r({type:"addNext"}),resetInfiniteScroll:e=>r({type:"reset",payload:e})}),[]);return{pages:t,...n}};var o=r(2524);let s=(0,a.createContext)(void 0),Provider=({children:e,itemsPerPage:t,onChange:r,...l})=>{let{state:i,...c}=(0,o.X)(l,r),{pages:u,...d}=useSearchInfiniteState(i.page),p=(0,a.useMemo)(()=>({state:i,...c,pages:u,...d,itemsPerPage:t}),[d,t,u,c,i]);return n().createElement(s.Provider,{value:p},e)}},8492:(e,t,r)=>{"use strict";r.d(t,{uL:()=>setFacet,wB:()=>toggleFacet,wb:()=>isSearchSort});var a=r(2254);let n=new Set(["price_desc","price_asc","orders_desc","name_desc","name_asc","release_desc","discount_desc","score_desc"]),isSearchSort=e=>n.has(e),removeFacet=(e,t)=>{let{value:r}=t,n=e.findIndex(e=>e.value===r);if(n<0)throw new a.q(`Cannot remove ${r} from search params`);return e.filter((e,t)=>t!==n)},setFacet=(e,t,r)=>{if(!0===r){let r=e.findIndex(e=>e.key===t.key);if(r>-1)return e.map((e,a)=>a===r?t:e)}return[...e,t]},toggleFacet=(e,t)=>{let r=e.find(e=>e.key===t.key&&e.value===t.value);return void 0!==r?removeFacet(e,t):setFacet(e,t,!1)}},6142:(e,t,r)=>{"use strict";r.d(t,{Q:()=>parse});var a=r(2254),n=r(8492),l=r(2524);let parse=({pathname:e,searchParams:t})=>{let r=(0,l.j)({base:e,term:t.get("q")??null,sort:t.get("sort")??void 0,page:Number(t.get("page")??0)});if(!(0,n.wb)(r.sort))throw new a.q(`Uknown sorting option ${r.sort}`);let o=t.get("facets")?.split(",")??[];for(let e of o){let a=t.getAll(e);for(let t of a)r.selectedFacets=(0,n.uL)(r.selectedFacets,{key:e,value:t})}return r}},3221:(e,t,r)=>{"use strict";r.d(t,{R:()=>useSearch});var a=r(1197),n=r(6689),l=r(2254);let useContext=e=>{let t=(0,n.useContext)(e);if(void 0===t)throw new l.q(`${e.displayName??"Context"} needs to be on the React tree`);return t},useSearch=()=>useContext(a._)}};