@faststore/core 3.0.115 → 3.0.117

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 (85) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +22 -22
  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/webpack/client-production/0.pack +0 -0
  7. package/.next/cache/webpack/client-production/index.pack +0 -0
  8. package/.next/cache/webpack/server-production/0.pack +0 -0
  9. package/.next/cache/webpack/server-production/index.pack +0 -0
  10. package/.next/next-minimal-server.js.nft.json +1 -1
  11. package/.next/next-server.js.nft.json +1 -1
  12. package/.next/prerender-manifest.js +1 -1
  13. package/.next/prerender-manifest.json +1 -1
  14. package/.next/routes-manifest.json +1 -1
  15. package/.next/server/chunks/24.js +1 -1
  16. package/.next/server/chunks/350.js +1 -1
  17. package/.next/server/chunks/485.js +1 -1
  18. package/.next/server/chunks/498.js +1 -1
  19. package/.next/server/chunks/646.js +6 -2
  20. package/.next/server/chunks/82.js +2 -2
  21. package/.next/server/chunks/933.js +1 -1
  22. package/.next/server/chunks/997.js +1 -1
  23. package/.next/server/middleware-build-manifest.js +1 -1
  24. package/.next/server/pages/[...slug].js +1 -1
  25. package/.next/server/pages/[slug]/p.js +1 -1
  26. package/.next/server/pages/_error.js +1 -1
  27. package/.next/server/pages/api/graphql.js +1 -1
  28. package/.next/server/pages/en-US/404.html +2 -2
  29. package/.next/server/pages/en-US/404.json +1 -1
  30. package/.next/server/pages/en-US/500.html +2 -2
  31. package/.next/server/pages/en-US/500.json +1 -1
  32. package/.next/server/pages/en-US/account.html +2 -2
  33. package/.next/server/pages/en-US/account.json +1 -1
  34. package/.next/server/pages/en-US/checkout.html +2 -2
  35. package/.next/server/pages/en-US/checkout.json +1 -1
  36. package/.next/server/pages/en-US/login.html +2 -2
  37. package/.next/server/pages/en-US/login.json +1 -1
  38. package/.next/server/pages/en-US/s.html +2 -2
  39. package/.next/server/pages/en-US/s.json +1 -1
  40. package/.next/server/pages/en-US.html +3 -3
  41. package/.next/server/pages/en-US.json +1 -1
  42. package/.next/server/pages/index.js +1 -1
  43. package/.next/server/pages/s.js +1 -1
  44. package/.next/server/pages-manifest.json +1 -1
  45. package/.next/static/{Phsiu2MTzhG7Yo-7F06VY → ZcioUQf53yK_7-v4Io2W-}/_buildManifest.js +1 -1
  46. package/.next/static/chunks/629-0cb613f9bcc4f486.js +1 -0
  47. package/.next/static/chunks/661-64696c6b69aad0cd.js +1 -0
  48. package/.next/static/chunks/968-3ed71db484b2d4e6.js +1 -0
  49. package/.next/static/chunks/pages/[...slug]-dd7f247ab9486429.js +1 -0
  50. package/.next/static/chunks/pages/[slug]/p-e7077156f76f4cef.js +1 -0
  51. package/.next/static/chunks/pages/{_app-5d553d859f2f0ef5.js → _app-c735dc8671b02901.js} +1 -1
  52. package/.next/static/chunks/pages/index-d7ef84d142b53200.js +1 -0
  53. package/.next/static/chunks/pages/s-5f2e23d107382a98.js +1 -0
  54. package/.next/trace +95 -95
  55. package/.turbo/turbo-build.log +5 -5
  56. package/.turbo/turbo-test.log +4 -4
  57. package/@generated/gql.ts +2 -2
  58. package/@generated/graphql.ts +25 -2
  59. package/@generated/persisted-documents.json +2 -2
  60. package/@generated/schema.graphql +16 -0
  61. package/faststore.config.default.js +1 -0
  62. package/package.json +9 -9
  63. package/src/components/common/Alert/Alert.tsx +1 -3
  64. package/src/components/common/Footer/Footer.tsx +1 -3
  65. package/src/components/navigation/Navbar/Navbar.tsx +1 -4
  66. package/src/components/navigation/NavbarLinks/NavbarLinks.tsx +1 -2
  67. package/src/components/navigation/NavbarSlider/NavbarSlider.tsx +1 -2
  68. package/src/components/product/ProductCard/ProductCard.tsx +15 -0
  69. package/src/components/sections/ProductGallery/ProductGallery.tsx +2 -7
  70. package/src/pages/[...slug].tsx +1 -3
  71. package/src/pages/[slug]/p.tsx +1 -4
  72. package/src/pages/_document.tsx +9 -0
  73. package/src/pages/index.tsx +1 -4
  74. package/src/pages/s.tsx +1 -4
  75. package/src/server/options.ts +1 -0
  76. package/.next/static/chunks/629-2035a739f8a77882.js +0 -1
  77. package/.next/static/chunks/661-37d224da8cd18a0d.js +0 -1
  78. package/.next/static/chunks/968-d09ce43a57f43460.js +0 -1
  79. package/.next/static/chunks/pages/[...slug]-71b879bc2fe42f9c.js +0 -1
  80. package/.next/static/chunks/pages/[slug]/p-e34db2401c5476f8.js +0 -1
  81. package/.next/static/chunks/pages/index-31ed9b1d5e358000.js +0 -1
  82. package/.next/static/chunks/pages/s-42e7637b150b1768.js +0 -1
  83. package/cypress/integration/performance.test.js +0 -65
  84. package/src/sdk/tests/mark.tsx +0 -10
  85. /package/.next/static/{Phsiu2MTzhG7Yo-7F06VY → ZcioUQf53yK_7-v4Io2W-}/_ssgManifest.js +0 -0
@@ -45,10 +45,10 @@ Warning: Dynamic Content not found for the page: home. Refer to the Dynamic Cont
45
45
  Collecting build traces ...
46
46
 
47
47
  Route (pages) Size First Load JS
48
- ┌ ● / 1.27 kB 143 kB
48
+ ┌ ● / 1.24 kB 143 kB
49
49
  ├ └ css/197e314c5a03eabd.css 740 B
50
50
  ├ /_app 0 B 90.7 kB
51
- ├ ● /[...slug] 2.82 kB 155 kB
51
+ ├ ● /[...slug] 2.79 kB 155 kB
52
52
  ├ └ css/e47f1a002bdcf76f.css 2.38 kB
53
53
  ├ ● /[slug]/p 10.8 kB 152 kB
54
54
  ├ └ css/fbd711b9f5abf105.css 9.57 kB
@@ -60,12 +60,12 @@ Route (pages) Size First Load JS
60
60
  ├ λ /api/health/ready 0 B 90.7 kB
61
61
  ├ λ /api/preview 0 B 90.7 kB
62
62
  ├ ● /checkout 660 B 126 kB
63
- ├ ● /login 1.4 kB 127 kB
64
- └ ● /s 2.25 kB 155 kB
63
+ ├ ● /login 1.4 kB 126 kB
64
+ └ ● /s 2.22 kB 154 kB
65
65
  + First Load JS shared by all 93.7 kB
66
66
  ├ chunks/framework-8e279965036b6169.js 45.4 kB
67
67
  ├ chunks/main-029f1328cfee9686.js 33.1 kB
68
- ├ chunks/pages/_app-5d553d859f2f0ef5.js 9.85 kB
68
+ ├ chunks/pages/_app-c735dc8671b02901.js 9.86 kB
69
69
  ├ chunks/webpack-8883d8523b03e385.js 2.38 kB
70
70
  └ css/ee0556daedda6306.css 3.07 kB
71
71
 
@@ -1,10 +1,10 @@
1
1
  $ jest
2
- PASS test/utils/multipleTemplates.test.ts (37.085 s)
3
- PASS test/server/cms/index.test.ts (37.426 s)
4
- PASS test/server/index.test.ts (40.305 s)
2
+ PASS test/utils/multipleTemplates.test.ts (36.183 s)
3
+ PASS test/server/cms/index.test.ts (36.699 s)
4
+ PASS test/server/index.test.ts (39.743 s)
5
5
 
6
6
  Test Suites: 3 passed, 3 total
7
7
  Tests: 19 passed, 19 total
8
8
  Snapshots: 0 total
9
- Time: 41.361 s
9
+ Time: 40.871 s
10
10
  Ran all test suites.
package/@generated/gql.ts CHANGED
@@ -12,7 +12,7 @@ import * as types from './graphql'
12
12
  * Therefore it is highly recommended to use the babel or swc plugin for production.
13
13
  */
14
14
  const documents = {
15
- '\n fragment ProductSummary_product on StoreProduct {\n id: productID\n slug\n sku\n brand {\n brandName: name\n }\n name\n gtin\n\n isVariantOf {\n productGroupID\n name\n }\n\n image {\n url\n alternateName\n }\n\n brand {\n name\n }\n\n offers {\n lowPrice\n lowPriceWithTaxes\n offers {\n availability\n price\n listPrice\n listPriceWithTaxes\n quantity\n seller {\n identifier\n }\n }\n }\n\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n }\n':
15
+ '\n fragment ProductSummary_product on StoreProduct {\n id: productID\n slug\n sku\n brand {\n brandName: name\n }\n name\n gtin\n\n isVariantOf {\n productGroupID\n name\n }\n\n image {\n url\n alternateName\n }\n\n brand {\n name\n }\n\n offers {\n lowPrice\n lowPriceWithTaxes\n offers {\n availability\n price\n listPrice\n listPriceWithTaxes\n quantity\n seller {\n identifier\n }\n }\n }\n\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n\n advertisement {\n adId\n adResponseId\n }\n }\n':
16
16
  types.ProductSummary_ProductFragmentDoc,
17
17
  '\n fragment Filter_facets on StoreFacet {\n ... on StoreFacetRange {\n key\n label\n\n min {\n selected\n absolute\n }\n\n max {\n selected\n absolute\n }\n\n __typename\n }\n ... on StoreFacetBoolean {\n key\n label\n values {\n label\n value\n selected\n quantity\n }\n\n __typename\n }\n }\n':
18
18
  types.Filter_FacetsFragmentDoc,
@@ -62,7 +62,7 @@ const documents = {
62
62
  * The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
63
63
  */
64
64
  export function gql(
65
- source: '\n fragment ProductSummary_product on StoreProduct {\n id: productID\n slug\n sku\n brand {\n brandName: name\n }\n name\n gtin\n\n isVariantOf {\n productGroupID\n name\n }\n\n image {\n url\n alternateName\n }\n\n brand {\n name\n }\n\n offers {\n lowPrice\n lowPriceWithTaxes\n offers {\n availability\n price\n listPrice\n listPriceWithTaxes\n quantity\n seller {\n identifier\n }\n }\n }\n\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n }\n'
65
+ source: '\n fragment ProductSummary_product on StoreProduct {\n id: productID\n slug\n sku\n brand {\n brandName: name\n }\n name\n gtin\n\n isVariantOf {\n productGroupID\n name\n }\n\n image {\n url\n alternateName\n }\n\n brand {\n name\n }\n\n offers {\n lowPrice\n lowPriceWithTaxes\n offers {\n availability\n price\n listPrice\n listPriceWithTaxes\n quantity\n seller {\n identifier\n }\n }\n }\n\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n\n advertisement {\n adId\n adResponseId\n }\n }\n'
66
66
  ): typeof import('./graphql').ProductSummary_ProductFragmentDoc
67
67
  /**
68
68
  * The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
@@ -116,6 +116,20 @@ export type Address = {
116
116
  street: Maybe<Scalars['String']['output']>
117
117
  }
118
118
 
119
+ /** Advertisement information about a specific product in a campaign */
120
+ export type Advertisement = {
121
+ /** Cost of the action, usually Cost Per Click. */
122
+ actionCost: Scalars['Float']['output']
123
+ /** Advertiser ID of the product. */
124
+ adId: Scalars['String']['output']
125
+ /** Advertiser Request ID. */
126
+ adRequestId: Scalars['String']['output']
127
+ /** Advertiser Response ID. */
128
+ adResponseId: Scalars['String']['output']
129
+ /** Campaign ID. */
130
+ campaignId: Scalars['String']['output']
131
+ }
132
+
119
133
  export type AvailableDeliveryWindows = {
120
134
  /** Available delivery window end date in UTC */
121
135
  endDateUtc: Maybe<Scalars['String']['output']>
@@ -901,6 +915,8 @@ export type StorePerson = {
901
915
  export type StoreProduct = {
902
916
  /** Array of additional properties. */
903
917
  additionalProperty: Array<StorePropertyValue>
918
+ /** Advertisement information about the product. */
919
+ advertisement: Maybe<Advertisement>
904
920
  /** Aggregate ratings data. */
905
921
  aggregateRating: StoreAggregateRating
906
922
  /** Product brand. */
@@ -1123,6 +1139,7 @@ export type ProductSummary_ProductFragment = {
1123
1139
  value: any
1124
1140
  valueReference: any
1125
1141
  }>
1142
+ advertisement: { adId: string; adResponseId: string } | null
1126
1143
  }
1127
1144
 
1128
1145
  type Filter_Facets_StoreFacetBoolean_Fragment = {
@@ -1433,6 +1450,7 @@ export type ClientManyProductsQueryQuery = {
1433
1450
  value: any
1434
1451
  valueReference: any
1435
1452
  }>
1453
+ advertisement: { adId: string; adResponseId: string } | null
1436
1454
  }
1437
1455
  }>
1438
1456
  }
@@ -1560,6 +1578,7 @@ export type ClientSearchSuggestionsQueryQuery = {
1560
1578
  value: any
1561
1579
  valueReference: any
1562
1580
  }>
1581
+ advertisement: { adId: string; adResponseId: string } | null
1563
1582
  }>
1564
1583
  }
1565
1584
  products: { pageInfo: { totalCount: number } }
@@ -1690,6 +1709,10 @@ export const ProductSummary_ProductFragmentDoc = new TypedDocumentString(
1690
1709
  value
1691
1710
  valueReference
1692
1711
  }
1712
+ advertisement {
1713
+ adId
1714
+ adResponseId
1715
+ }
1693
1716
  }
1694
1717
  `,
1695
1718
  { fragmentName: 'ProductSummary_product' }
@@ -2051,7 +2074,7 @@ export const SubscribeToNewsletterDocument = {
2051
2074
  export const ClientManyProductsQueryDocument = {
2052
2075
  __meta__: {
2053
2076
  operationName: 'ClientManyProductsQuery',
2054
- operationHash: '99012563e9885c3b27a716ca212a2c317e7ec12f',
2077
+ operationHash: 'ad2eb78cfccb9dbd5a9f2d1e150cc70fea5da99a',
2055
2078
  },
2056
2079
  } as unknown as TypedDocumentString<
2057
2080
  ClientManyProductsQueryQuery,
@@ -2078,7 +2101,7 @@ export const ClientProductQueryDocument = {
2078
2101
  export const ClientSearchSuggestionsQueryDocument = {
2079
2102
  __meta__: {
2080
2103
  operationName: 'ClientSearchSuggestionsQuery',
2081
- operationHash: '71809c86cb940861f01bcc57dbaf57e6f41cb378',
2104
+ operationHash: '4d9f934764d8578aea08673b8ba57e8bf738f534',
2082
2105
  },
2083
2106
  } as unknown as TypedDocumentString<
2084
2107
  ClientSearchSuggestionsQueryQuery,
@@ -3,10 +3,10 @@
3
3
  "46103bee661405bde706d72126fdbf9b0a0c9e6e": "fragment CartProductItem on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations availableVariations slugsMap } } name sku unitMultiplier } fragment ProductDetailsFragment_product on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } description gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations availableVariations slugsMap } } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price priceWithTaxes seller { identifier } } } id: productID sku unitMultiplier ...CartProductItem } fragment ServerProduct on Query { product(locator: $locator) { id: productID } } query ServerProductQuery($locator: [IStoreSelectedFacet!]!) { product(locator: $locator) { brand { name } breadcrumbList { itemListElement { item name position } } description gtin image { alternateName url } isVariantOf { productGroupID } name offers { highPrice lowPrice lowPriceWithTaxes offers { availability itemCondition price priceCurrency priceValidUntil seller { identifier } } priceCurrency } id: productID releaseDate seo { canonical description title } sku ...ProductDetailsFragment_product } ...ServerProduct }",
4
4
  "324471076994dca94a47adcaf1c6b8f7896e1b4f": "fragment CartItem on StoreOffer { itemOffered { ...CartProductItem } listPrice listPriceWithTaxes price priceWithTaxes quantity seller { identifier } } fragment CartMessage on StoreCartMessage { status text } fragment CartProductItem on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations availableVariations slugsMap } } name sku unitMultiplier } mutation ValidateCartMutation($cart: IStoreCart!, $session: IStoreSession!) { validateCart(cart: $cart, session: $session) { messages { ...CartMessage } order { acceptedOffer { ...CartItem } orderNumber } } }",
5
5
  "feb7005103a859e2bc8cf2360d568806fd88deba": "mutation SubscribeToNewsletter($data: IPersonNewsletter!) { subscribeToNewsletter(data: $data) { id } }",
6
- "99012563e9885c3b27a716ca212a2c317e7ec12f": "fragment ClientManyProducts on Query { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets ) { products { pageInfo { totalCount } } } } fragment ProductSummary_product on StoreProduct { additionalProperty { name propertyID value valueReference } brand { brandName: name } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price quantity seller { identifier } } } id: productID sku slug } query ClientManyProductsQuery($after: String, $first: Int!, $selectedFacets: [IStoreSelectedFacet!]!, $sort: StoreSort!, $term: String!) { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets ) { products { edges { node { ...ProductSummary_product } } pageInfo { totalCount } } } ...ClientManyProducts }",
6
+ "ad2eb78cfccb9dbd5a9f2d1e150cc70fea5da99a": "fragment ClientManyProducts on Query { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets ) { products { pageInfo { totalCount } } } } fragment ProductSummary_product on StoreProduct { additionalProperty { name propertyID value valueReference } advertisement { adId adResponseId } brand { brandName: name } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price quantity seller { identifier } } } id: productID sku slug } query ClientManyProductsQuery($after: String, $first: Int!, $selectedFacets: [IStoreSelectedFacet!]!, $sort: StoreSort!, $term: String!) { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets ) { products { edges { node { ...ProductSummary_product } } pageInfo { totalCount } } } ...ClientManyProducts }",
7
7
  "177fe68cb385737b0901fc9e105f0a4813e18a20": "fragment ClientProductGallery on Query { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets ) { products { pageInfo { totalCount } } } } fragment Filter_facets on StoreFacet { ... on StoreFacetBoolean { __typename key label values { label quantity selected value } } ... on StoreFacetRange { __typename key label max { absolute selected } min { absolute selected } } } fragment SearchEvent_metadata on SearchMetadata { isTermMisspelled logicalOperator } query ClientProductGalleryQuery($after: String!, $first: Int!, $selectedFacets: [IStoreSelectedFacet!]!, $sort: StoreSort!, $term: String!) { redirect(term: $term, selectedFacets: $selectedFacets) { url } search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets ) { facets { ...Filter_facets } metadata { ...SearchEvent_metadata } products { pageInfo { totalCount } } } ...ClientProductGallery }",
8
8
  "7d121ef8d4dc99174e64e4429a9b977b8bbebed8": "fragment CartProductItem on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations availableVariations slugsMap } } name sku unitMultiplier } fragment ClientProduct on Query { product(locator: $locator) { id: productID } } fragment ProductDetailsFragment_product on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } description gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations availableVariations slugsMap } } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price priceWithTaxes seller { identifier } } } id: productID sku unitMultiplier ...CartProductItem } query ClientProductQuery($locator: [IStoreSelectedFacet!]!) { product(locator: $locator) { ...ProductDetailsFragment_product } ...ClientProduct }",
9
- "71809c86cb940861f01bcc57dbaf57e6f41cb378": "fragment ClientSearchSuggestions on Query { search(first: 5, term: $term, selectedFacets: $selectedFacets) { suggestions { terms { value } } } } fragment ProductSummary_product on StoreProduct { additionalProperty { name propertyID value valueReference } brand { brandName: name } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price quantity seller { identifier } } } id: productID sku slug } fragment SearchEvent_metadata on SearchMetadata { isTermMisspelled logicalOperator } query ClientSearchSuggestionsQuery($selectedFacets: [IStoreSelectedFacet!], $term: String!) { search(first: 5, term: $term, selectedFacets: $selectedFacets) { metadata { ...SearchEvent_metadata } products { pageInfo { totalCount } } suggestions { products { ...ProductSummary_product } terms { value } } } ...ClientSearchSuggestions }",
9
+ "4d9f934764d8578aea08673b8ba57e8bf738f534": "fragment ClientSearchSuggestions on Query { search(first: 5, term: $term, selectedFacets: $selectedFacets) { suggestions { terms { value } } } } fragment ProductSummary_product on StoreProduct { additionalProperty { name propertyID value valueReference } advertisement { adId adResponseId } brand { brandName: name } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price quantity seller { identifier } } } id: productID sku slug } fragment SearchEvent_metadata on SearchMetadata { isTermMisspelled logicalOperator } query ClientSearchSuggestionsQuery($selectedFacets: [IStoreSelectedFacet!], $term: String!) { search(first: 5, term: $term, selectedFacets: $selectedFacets) { metadata { ...SearchEvent_metadata } products { pageInfo { totalCount } } suggestions { products { ...ProductSummary_product } terms { value } } } ...ClientSearchSuggestions }",
10
10
  "e2385b0f11726d0068f96548f57a8dd441c064e3": "fragment ClientTopSearchSuggestions on Query { search(first: 5, term: $term, selectedFacets: $selectedFacets) { suggestions { terms { value } } } } query ClientTopSearchSuggestionsQuery($selectedFacets: [IStoreSelectedFacet!], $term: String!) { search(first: 5, term: $term, selectedFacets: $selectedFacets) { suggestions { terms { value } } } ...ClientTopSearchSuggestions }",
11
11
  "5696202828f9275216a445e316ebf516f168c506": "mutation ValidateSession($search: String!, $session: IStoreSession!) { validateSession(session: $session, search: $search) { addressType channel country currency { code symbol } deliveryMode { deliveryChannel deliveryMethod deliveryWindow { endDate startDate } } geoCoordinates { latitude longitude } locale person { email familyName givenName id } postalCode } }",
12
12
  "d6667f1de2a26b94b9b55f4b25d7d823f82635a0": "fragment ClientShippingSimulation on Query { shipping(items: $items, postalCode: $postalCode, country: $country) { address { city } } } query ClientShippingSimulationQuery($country: String!, $items: [IShippingItem!]!, $postalCode: String!) { shipping(items: $items, postalCode: $postalCode, country: $country) { address { city neighborhood state } logisticsInfo { slas { availableDeliveryWindows { endDateUtc listPrice price startDateUtc } carrier localizedEstimates price shippingEstimate } } } ...ClientShippingSimulation }"
@@ -29,6 +29,20 @@ type Address {
29
29
  geoCoordinates: [Float]
30
30
  }
31
31
 
32
+ """Advertisement information about a specific product in a campaign"""
33
+ type Advertisement {
34
+ """Advertiser ID of the product."""
35
+ adId: String!
36
+ """Campaign ID."""
37
+ campaignId: String!
38
+ """Cost of the action, usually Cost Per Click."""
39
+ actionCost: Float!
40
+ """Advertiser Request ID."""
41
+ adRequestId: String!
42
+ """Advertiser Response ID."""
43
+ adResponseId: String!
44
+ }
45
+
32
46
  """Aggregate offer information, for a given SKU that is available to be fulfilled by multiple sellers."""
33
47
  type StoreAggregateOffer {
34
48
  """Highest price among all sellers."""
@@ -382,6 +396,8 @@ type StoreProduct {
382
396
  releaseDate: String!
383
397
  """Sku Unit Multiplier"""
384
398
  unitMultiplier: Float
399
+ """Advertisement information about the product."""
400
+ advertisement: Advertisement
385
401
  }
386
402
 
387
403
  """Product input. Products are variants within product groups, equivalent to VTEX [SKUs](https://help.vtex.com/en/tutorial/what-is-an-sku--1K75s4RXAQyOuGUYKMM68u#). For example, you may have a **Shirt** product group with associated products such as **Blue shirt size L**, **Green shirt size XL** and so on."""
@@ -19,6 +19,7 @@ module.exports = {
19
19
  subDomainPrefix: ['www'],
20
20
  environment: 'vtexcommercestable',
21
21
  hideUnavailableItems: false,
22
+ showSponsored: false,
22
23
  incrementAddress: true,
23
24
  },
24
25
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faststore/core",
3
- "version": "3.0.115",
3
+ "version": "3.0.117",
4
4
  "license": "MIT",
5
5
  "repository": "vtex/faststore",
6
6
  "browserslist": "supports es6-module and not dead",
@@ -43,12 +43,12 @@
43
43
  "@envelop/graphql-jit": "^1.1.1",
44
44
  "@envelop/parser-cache": "^2.2.0",
45
45
  "@envelop/validation-cache": "^2.2.0",
46
- "@faststore/api": "^3.0.110",
47
- "@faststore/components": "^3.0.115",
48
- "@faststore/graphql-utils": "^3.0.110",
49
- "@faststore/lighthouse": "^3.0.110",
50
- "@faststore/sdk": "^3.0.110",
51
- "@faststore/ui": "^3.0.115",
46
+ "@faststore/api": "^3.0.117",
47
+ "@faststore/components": "^3.0.116",
48
+ "@faststore/graphql-utils": "^3.0.116",
49
+ "@faststore/lighthouse": "^3.0.116",
50
+ "@faststore/sdk": "^3.0.116",
51
+ "@faststore/ui": "^3.0.116",
52
52
  "@graphql-codegen/cli": "^5.0.2",
53
53
  "@graphql-codegen/client-preset": "^4.2.6",
54
54
  "@graphql-codegen/typescript": "^4.0.7",
@@ -87,7 +87,7 @@
87
87
  "devDependencies": {
88
88
  "@cypress/code-coverage": "^3.12.1",
89
89
  "@envelop/testing": "^6.0.0",
90
- "@faststore/eslint-config": "^3.0.110",
90
+ "@faststore/eslint-config": "^3.0.116",
91
91
  "@lhci/cli": "^0.9.0",
92
92
  "@testing-library/cypress": "^10.0.1",
93
93
  "@types/cypress": "^1.1.3",
@@ -128,5 +128,5 @@
128
128
  "node": "18.19.0",
129
129
  "yarn": "1.19.1"
130
130
  },
131
- "gitHead": "1cc987d52dfce0b3235e80662099a55c7acb9ba9"
131
+ "gitHead": "7f082b44a4b4a5f79afc98b0c9803237feefd2e4"
132
132
  }
@@ -2,7 +2,6 @@ import type { PropsWithChildren, ReactNode } from 'react'
2
2
  import { useCallback, useState } from 'react'
3
3
 
4
4
  import { AlertProps as UIAlertProps } from '@faststore/ui'
5
- import { mark } from 'src/sdk/tests/mark'
6
5
 
7
6
  import Section from 'src/components/sections/Section/Section'
8
7
  import styles from './section.module.scss'
@@ -50,5 +49,4 @@ function Alert({
50
49
  )
51
50
  }
52
51
 
53
- Alert.displayName = 'Alert'
54
- export default mark(Alert)
52
+ export default Alert
@@ -1,5 +1,4 @@
1
1
  import { ReactNode } from 'react'
2
- import { mark } from 'src/sdk/tests/mark'
3
2
 
4
3
  interface FooterProps {
5
4
  children: ReactNode
@@ -30,5 +29,4 @@ export function Footer({ children }: FooterProps) {
30
29
  )
31
30
  }
32
31
 
33
- Footer.displayName = 'Footer'
34
- export default mark(Footer)
32
+ export default Footer
@@ -2,8 +2,6 @@ import { useRef, useState, useCallback } from 'react'
2
2
 
3
3
  import { useUI, useScrollDirection, Icon as UIIcon } from '@faststore/ui'
4
4
 
5
- import { mark } from 'src/sdk/tests/mark'
6
-
7
5
  import type { SearchInputRef } from 'src/components/search/SearchInput'
8
6
  import SearchInput from 'src/components/search/SearchInput'
9
7
  import NavbarLinks from 'src/components/navigation/NavbarLinks'
@@ -174,5 +172,4 @@ function Navbar({
174
172
  )
175
173
  }
176
174
 
177
- Navbar.displayName = 'Navbar'
178
- export default mark(Navbar)
175
+ export default Navbar
@@ -7,7 +7,6 @@ import Link from 'src/components/ui/Link'
7
7
  import RegionButton from 'src/components/region/RegionButton'
8
8
  import type { NavbarProps } from 'src/components/navigation/Navbar'
9
9
 
10
- import { mark } from 'src/sdk/tests/mark'
11
10
  import { useOverrideComponents } from 'src/sdk/overrides/OverrideContext'
12
11
 
13
12
  interface NavbarLinksProps extends UINavbarLinksProps {
@@ -52,4 +51,4 @@ function NavbarLinks({
52
51
  )
53
52
  }
54
53
 
55
- export default mark(NavbarLinks)
54
+ export default NavbarLinks
@@ -5,7 +5,6 @@ import { ButtonSignInFallback } from 'src/components/ui/Button'
5
5
  import Link from 'src/components/ui/Link'
6
6
  import NavbarLinks from 'src/components/navigation/NavbarLinks'
7
7
  import Logo from 'src/components/ui/Logo'
8
- import { mark } from 'src/sdk/tests/mark'
9
8
 
10
9
  import type { NavbarProps } from '../Navbar'
11
10
 
@@ -73,4 +72,4 @@ function NavbarSlider({
73
72
  )
74
73
  }
75
74
 
76
- export default mark(NavbarSlider)
75
+ export default NavbarSlider
@@ -77,6 +77,7 @@ function ProductCard({
77
77
  sku,
78
78
  isVariantOf: { name },
79
79
  image: [img],
80
+ advertisement,
80
81
  offers: {
81
82
  lowPrice,
82
83
  lowPriceWithTaxes,
@@ -106,12 +107,21 @@ function ProductCard({
106
107
 
107
108
  const hasDiscount = spotPrice <= listPrice
108
109
 
110
+ const advertisementDataAttributes = advertisement
111
+ ? {
112
+ 'data-van-res-id': advertisement.adResponseId,
113
+ 'data-van-aid': advertisement.adId,
114
+ 'data-van-prod-name': name,
115
+ }
116
+ : {}
117
+
109
118
  return (
110
119
  <UIProductCard
111
120
  outOfStock={outOfStock}
112
121
  bordered={bordered}
113
122
  variant={variant}
114
123
  data-fs-product-card-sku={sku}
124
+ {...advertisementDataAttributes}
115
125
  {...otherProps}
116
126
  >
117
127
  <UIProductCardImage aspectRatio={aspectRatio}>
@@ -189,6 +199,11 @@ export const fragment = gql(`
189
199
  value
190
200
  valueReference
191
201
  }
202
+
203
+ advertisement {
204
+ adId
205
+ adResponseId
206
+ }
192
207
  }
193
208
  `)
194
209
 
@@ -1,5 +1,3 @@
1
- import { mark } from '../../../sdk/tests/mark'
2
-
3
1
  import ProductGallery, {
4
2
  ProductGalleryProps,
5
3
  } from '../../ui/ProductGallery/ProductGallery'
@@ -70,11 +68,8 @@ function ProductGallerySection({
70
68
  )
71
69
  }
72
70
 
73
- ProductGallerySection.displayName = 'ProductGallery'
74
- const MarkedProductGallery = mark(ProductGallerySection)
75
-
76
71
  const OverridableProductGallery = getOverridableSection<
77
- typeof MarkedProductGallery
78
- >('ProductGallery', MarkedProductGallery, ProductGalleryDefaultComponents)
72
+ typeof ProductGallerySection
73
+ >('ProductGallery', ProductGallerySection, ProductGalleryDefaultComponents)
79
74
 
80
75
  export default OverridableProductGallery
@@ -7,7 +7,6 @@ import type {
7
7
  ServerCollectionPageQueryQuery,
8
8
  ServerCollectionPageQueryQueryVariables,
9
9
  } from '@generated/graphql'
10
- import { mark } from 'src/sdk/tests/mark'
11
10
  import { execute } from 'src/server'
12
11
 
13
12
  import { Locator } from '@vtex/client-cms'
@@ -150,5 +149,4 @@ export const getStaticPaths: GetStaticPaths = async () => {
150
149
  }
151
150
  }
152
151
 
153
- Page.displayName = 'Page'
154
- export default mark(Page)
152
+ export default Page
@@ -22,7 +22,6 @@ import { OverriddenDefaultProductShelf as ProductShelf } from 'src/components/se
22
22
  import ProductTiles from 'src/components/sections/ProductTiles'
23
23
  import CUSTOM_COMPONENTS from 'src/customizations/src/components'
24
24
  import { useSession } from 'src/sdk/session'
25
- import { mark } from 'src/sdk/tests/mark'
26
25
  import { execute } from 'src/server'
27
26
 
28
27
  import storeConfig from 'faststore.config'
@@ -274,6 +273,4 @@ export const getStaticPaths: GetStaticPaths = async () => {
274
273
  }
275
274
  }
276
275
 
277
- Page.displayName = 'Page'
278
-
279
- export default mark(Page)
276
+ export default Page
@@ -1,4 +1,5 @@
1
1
  import { Head, Html, Main, NextScript } from 'next/document'
2
+ import storeConfig from '../../faststore.config'
2
3
 
3
4
  import ThirdPartyScripts from 'src/components/ThirdPartyScripts'
4
5
  import { WebFonts } from 'src/customizations/src/GlobalOverrides'
@@ -7,6 +8,14 @@ function Document() {
7
8
  return (
8
9
  <Html>
9
10
  <Head>
11
+ <link
12
+ rel="preconnect"
13
+ href={`https://${storeConfig.api.storeId}.vtexassets.com`}
14
+ />
15
+ <link
16
+ rel="dns-prefetch"
17
+ href={`https://${storeConfig.api.storeId}.vtexassets.com`}
18
+ />
10
19
  {!process.env.DISABLE_3P_SCRIPTS && <ThirdPartyScripts />}
11
20
  <WebFonts />
12
21
  </Head>
@@ -12,7 +12,6 @@ import { OverriddenDefaultNewsletter as Newsletter } from 'src/components/sectio
12
12
  import { OverriddenDefaultProductShelf as ProductShelf } from 'src/components/sections/ProductShelf/OverriddenDefaultProductShelf'
13
13
  import ProductTiles from 'src/components/sections/ProductTiles'
14
14
  import CUSTOM_COMPONENTS from 'src/customizations/src/components'
15
- import { mark } from 'src/sdk/tests/mark'
16
15
  import type { PageContentType } from 'src/server/cms'
17
16
  import { getPage } from 'src/server/cms'
18
17
 
@@ -129,6 +128,4 @@ export const getStaticProps: GetStaticProps<
129
128
  }
130
129
  }
131
130
 
132
- Page.displayName = 'Page'
133
-
134
- export default mark(Page)
131
+ export default Page
package/src/pages/s.tsx CHANGED
@@ -13,7 +13,6 @@ import { SROnly as UISROnly } from '@faststore/ui'
13
13
 
14
14
  import { ITEMS_PER_PAGE } from 'src/constants'
15
15
  import { useApplySearchState } from 'src/sdk/search/state'
16
- import { mark } from 'src/sdk/tests/mark'
17
16
 
18
17
  import { Locator } from '@vtex/client-cms'
19
18
  import storeConfig from 'faststore.config'
@@ -153,6 +152,4 @@ export const getStaticProps: GetStaticProps<
153
152
  }
154
153
  }
155
154
 
156
- Page.displayName = 'Page'
157
-
158
- export default mark(Page)
155
+ export default Page
@@ -8,6 +8,7 @@ export const apiOptions: APIOptions = {
8
8
  environment: storeConfig.api.environment as APIOptions['environment'],
9
9
  subDomainPrefix: storeConfig.api.subDomainPrefix ?? ['www'],
10
10
  hideUnavailableItems: storeConfig.api.hideUnavailableItems,
11
+ showSponsored: storeConfig.api.showSponsored,
11
12
  simulationBehavior: (storeConfig.api as Record<string, any>)
12
13
  .simulationBehavior,
13
14
  incrementAddress: storeConfig.api.incrementAddress,
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[629],{5699:function(e,t,r){"use strict";var n=r(2784),a=r(1516);t.Z=function({testId:e,title:t,indicesExpanded:r,onAccordionChange:o,children:l}){return n.createElement("div",{"data-fs-filter":!0,"data-testid":e},n.createElement("h2",{"data-fs-filter-title":!0},t),n.createElement(a.Z,{indices:r,onChange:o,"data-fs-filter-accordion":!0},l))}},2815:function(e,t,r){"use strict";var n=r(2784),a=r(4564);t.Z=function({children:e}){return n.createElement(a.Z,{"data-fs-filter-list":!0},e)}},1305:function(e,t,r){"use strict";r.d(t,{Z:function(){return Filter_FilterFacetBooleanItem}});var n=r(2784);let a=(0,n.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),l=r(276),Filter_FilterFacetBooleanItem=function({testId:e,id:t,selected:r,value:i,quantity:c,facetKey:s,label:u,onFacetChange:d}){return n.createElement("li",{key:t,"data-fs-filter-list-item":!0},n.createElement(a,{id:t,checked:r,onChange:()=>d({key:s,value:i},"BOOLEAN"),"data-fs-filter-list-item-checkbox":!0,"data-testid":`${e}-accordion-panel-checkbox`,"data-value":i,"data-quantity":c}),n.createElement(o.Z,{htmlFor:t,className:"text__title-mini-alt","data-fs-filter-list-item-label":!0},u," ",n.createElement(l.Z,{"data-fs-filter-list-item-badge":!0},c)))}},1355:function(e,t,r){"use strict";r.d(t,{Z:function(){return Filter_FilterFacetRange}});var n=r(2784);let percent=(e,t,r)=>Math.round((e-t)/(r-t)*100),a=(0,n.forwardRef)(function({min:e,max:t,absoluteValuesLabel:r,onChange:a,onEnd:o,testId:l="fs-slider",getAriaValueText:i,step:c,minValueLabelComponent:s,maxValueLabelComponent:u,...d},p){let f=(0,n.useMemo)(()=>(t.absolute-e.absolute)/100,[t.absolute,e.absolute]),[m,b]=(0,n.useState)(()=>percent(e.selected,e.absolute,t.absolute)),[v,y]=(0,n.useState)(()=>percent(t.selected,e.absolute,t.absolute)),[h,g]=(0,n.useState)(()=>Math.floor(e.absolute+m*f)),[j,P]=(0,n.useState)(()=>Math.round(e.absolute+v*f));return(0,n.useImperativeHandle)(p,()=>({setSliderValues:r=>{let n=Math.min(Number(r.min),j);if(g(n),b(percent(n,e.absolute,t.absolute)),r.max>t.absolute){P(t.absolute),y(percent(t.absolute,e.absolute,t.absolute));return}let a=Math.max(Number(r.max),h);P(a),y(percent(a,e.absolute,t.absolute))}})),n.createElement("div",{"data-fs-slider":!0,"data-testid":l,...d},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:`${v-m}%`}}),n.createElement("input",{type:"range",min:Math.floor(e.absolute),max:Math.round(t.absolute),value:h,step:c,onMouseUp:()=>o?.({min:h,max:j}),onTouchEnd:()=>o?.({min:h,max:j}),onChange:r=>{let n=Math.min(Number(r.target.value),j);g(n),b(percent(n,e.absolute,t.absolute)),a?.({min:n,max:j})},"data-fs-slider-thumb":"left","aria-valuemin":e.absolute,"aria-valuemax":t.absolute,"aria-valuenow":h,"aria-label":String(h),"aria-labelledby":i?.(h,"min")}),s&&n.createElement("span",{"data-fs-slider-value-label":"min",style:{left:`calc(${h/t.absolute*100}% + (${8-.2*(h/t.absolute*100)}px))`}},s(h)),n.createElement("input",{type:"range",min:Math.floor(e.absolute),max:Math.round(t.absolute),value:j,step:c,onMouseUp:()=>o?.({min:h,max:j}),onTouchEnd:()=>o?.({min:h,max:j}),onChange:r=>{let n=Math.max(Number(r.target.value),h);P(n),y(percent(n,e.absolute,t.absolute)),a?.({min:h,max:n})},"data-fs-slider-thumb":"right","aria-valuemin":e.absolute,"aria-valuemax":t.absolute,"aria-valuenow":j,"aria-label":String(j),"aria-labelledby":i?.(j,"max")}),u&&n.createElement("span",{"data-fs-slider-value-label":"max",style:{left:`calc(${j/t.absolute*100}% + (${8-.2*(j/t.absolute*100)}px))`}},u(j))))});var o=r(9767),l=r(3779);let i=(0,n.forwardRef)(function({formatter:e,max:t,min:r,step:i=1,onChange:c,onEnd:s,testId:u="fs-price-range",variant:d,"aria-label":p,...f},m){let b=(0,n.useRef)();(0,n.useImperativeHandle)(m,()=>({setPriceRangeValues:e=>{c?.(e),b.current?.setSliderValues(e)}}));let v=(0,n.useRef)(null),y=(0,n.useRef)(null),[h,g]=(0,n.useState)(),[j,P]=(0,n.useState)(),[w,O]=(0,n.useState)({min:Math.floor(r.selected),max:Math.round(t.selected)});return n.createElement("div",{"data-fs-price-range":!0,"data-testid":u,...f},n.createElement(a,{ref:b,min:r,max:t,step:i,onEnd:e=>{s?.(e),g(void 0),P(void 0),O({min:e.min,max:e.max}),v.current?.value&&(v.current.value=String(e.min)),y.current?.value&&(y.current.value=String(e.max))},"aria-label":p,onChange:e=>c?.(e),absoluteValuesLabel:{min:n.createElement(o.Z,{value:Math.floor(r.absolute),variant:d,formatter:e}),max:n.createElement(o.Z,{value:Math.round(t.absolute),variant:d,formatter:e})},minValueLabelComponent:t=>n.createElement(o.Z,{value:t,variant:d,formatter:e}),maxValueLabelComponent:t=>n.createElement(o.Z,{value:t,variant:d,formatter:e})}),n.createElement("div",{"data-fs-price-range-inputs":!0},n.createElement(l.Z,{id:"price-range-min",step:i,label:"Min",type:"number",inputMode:"numeric",error:h,inputRef:v,min:Math.floor(r.absolute),max:w.max,value:w.min,onChange:e=>{var t;return t=e.target.value,void(g(void 0),Number(t)<Math.floor(r.absolute)||(Number(t)>Math.floor(w.max)&&g("Min price can't be greater than max"),O({...w,min:Number(t)}),b.current?.setSliderValues({...w,min:Number(t)})))},onBlur:()=>!h&&s?.(w)}),n.createElement(l.Z,{id:"price-range-max",label:"Max",step:i,type:"number",inputMode:"numeric",error:j,inputRef:y,max:Math.round(t.absolute),min:w.min,value:w.max,onChange:e=>{var r;return r=e.target.value,void(P(void 0),Number(r)>Math.round(t.absolute)||(Number(r)<Math.round(w.min)&&P("Max price can't be smaller than min"),O({...w,max:Number(r)}),b.current?.setSliderValues({...w,max:Number(r)})))},onBlur:()=>!j&&s?.(w)})))}),formatRange=(e,t)=>`${e.toFixed(2)}-to-${t.toFixed(2)}`;var Filter_FilterFacetRange=function({min:e,max:t,formatter:r,facetKey:a,onFacetChange:o}){return n.createElement(i,{"data-fs-filter-facet-range":!0,min:e,max:t,formatter:r,step:1,onEnd:e=>o({key:a,value:formatRange(e.min,e.max)},"RANGE")})}},4199:function(e,t,r){"use strict";var n=r(2784),a=r(783),o=r(7734),l=r(7583);t.Z=function({testId:e,label:t,index:r,children:i,type:c}){return n.createElement(a.Z,{key:`${t}-${r}`,prefixId:e,testId:`${e}-accordion`,index:r,"data-type":c,"data-fs-filter-accordion-item":!0},n.createElement(o.Z,{testId:`${e}-accordion-button`},t),n.createElement(l.Z,null,i))}},7936:function(e,t,r){"use strict";r.d(t,{j:function(){return S}});var n=r(9499),a=r(7296),o=r(2784),l=r(9089),i=r(4177),c=r.n(i),s=r(4960),u=r(4329),d=r(2614),p=r(727);let f=(0,o.createContext)({isOpen:!1,dropdownButtonRef:null,selectedDropdownItemIndexRef:null,dropdownItemsRef:null,id:"fs-dropdown"});var Dropdown_Dropdown=({children:e,isOpen:t=!1,onDismiss:r,id:n="fs-dropdown"})=>{let[a,l]=(0,o.useState)(t),i=(0,o.useRef)([]),c=(0,o.useRef)(0),s=(0,o.useRef)(null),u=(0,o.useCallback)(()=>{l(!1),r?.()},[r]),open=()=>{l(!0)},d=(0,o.useCallback)(()=>{l(e=>(e&&(r?.(),s.current?.focus()),!e))},[r]);(0,o.useEffect)(()=>{l(t)},[t]),(0,o.useEffect)(()=>{a&&i?.current[0]?.focus()},[a]),(0,o.useEffect)(()=>{let e=!0,event=t=>{let r=i?.current.some(e=>t.target===e);if(e){e=!1;return}r||u()};return a?document.addEventListener("click",event):document.removeEventListener("click",event),()=>{document.removeEventListener("click",event)}},[u,a]);let p=(0,o.useMemo)(()=>({isOpen:a,close:u,open,toggle:d,dropdownButtonRef:s,onDismiss:r,selectedDropdownItemIndexRef:c,dropdownItemsRef:i,id:n}),[u,n,a,r,d]);return o.createElement(f.Provider,{value:p},e)},m=r(3339);let useDropdown=()=>{let e=(0,o.useContext)(f);if(void 0===e)throw Error("Do not use useDropdown hook outside the Dropdown context.");return e},b=(0,o.forwardRef)(function({testId:e="fs-dropdown-button","aria-label":t,children:r,...n},a){let{toggle:l,dropdownButtonRef:i,isOpen:c,id:s}=useDropdown();return(0,o.useImperativeHandle)(a,()=>i.current,[i]),o.createElement(m.Z,{"data-fs-dropdown-button":!0,onClick:l,"data-testid":e,ref:i,"aria-label":t,"aria-expanded":c,"aria-haspopup":"menu","aria-controls":s,variant:"tertiary",...n},r)});var v=r(8316);let useDropdownPosition=()=>{let{dropdownButtonRef:e}=useDropdown(),t="undefined"!=typeof window,r=e?.current?.getBoundingClientRect(),n=r?.top??0,a=r?.height??0,o=r?.left??0,l=t?document?.documentElement?.scrollTop:0,i=t?document?.documentElement?.scrollLeft:0;return{position:"absolute",top:n+a+l,left:o+i}};var Dropdown_DropdownMenu=({children:e,testId:t="fs-dropdown-menu",size:r="regular",style:n,...a})=>{let{isOpen:l,close:i,dropdownItemsRef:c,selectedDropdownItemIndexRef:s,dropdownButtonRef:u,id:d}=useDropdown(),p=useDropdownPosition(),f=o.Children.toArray(e).length,handleDownPress=()=>{s.current<f-1?s.current++:s.current=0,c?.current[s.current]?.focus()},handleUpPress=()=>{s.current>0?s.current--:s.current=f-1,c?.current[s.current]?.focus()},handleHomePress=()=>{s.current=0,c?.current[s.current]?.focus()},handleEndPress=()=>{s.current=f-1,c?.current[s.current]?.focus()},handleEscapePress=()=>{i?.(),u?.current?.focus()};return l?(0,v.createPortal)(o.createElement("div",{role:"presentation","data-fs-dropdown-overlay":!0,onKeyDown:e=>{e.defaultPrevented||"Enter"===e.key||(e.preventDefault(),"Escape"===e.key&&handleEscapePress(),"ArrowDown"===e.key&&handleDownPress(),"ArrowUp"===e.key&&handleUpPress(),"Home"===e.key&&handleHomePress(),"End"===e.key&&handleEndPress(),e.stopPropagation())},"data-testid":`${t}-overlay`},o.createElement("div",{role:"menu","aria-orientation":"vertical","data-fs-dropdown-menu":!0,"data-fs-dropdown-menu-size":r,"data-testid":t,style:{...p,...n},id:d,...a},e)),document.body):(c.current=[],null)};let y=(0,o.forwardRef)(function({children:e,icon:t,onClick:r,testId:n="fs-dropdown-item",...a},l){let{dropdownItemsRef:i,selectedDropdownItemIndexRef:c,close:s}=useDropdown(),[u,d]=(0,o.useState)(0),p=(0,o.useRef)(),onFocusItem=()=>{c.current=u,i?.current[c.current]?.focus()};return(0,o.useImperativeHandle)(l,()=>p.current,[]),o.createElement("button",{"data-fs-dropdown-item":!0,"data-testid":n,ref:e=>{e&&!i?.current.includes(e)&&(i?.current.push(e),d(i?.current.findIndex(t=>t===e)??0)),p.current=e},onFocus:onFocusItem,onMouseEnter:onFocusItem,onClick:e=>{r?.(e),s?.()},role:"menuitem",tabIndex:-1,"data-index":u,...a},!!t&&t,e)});var h=r(4564),Breadcrumb_Divider=({divider:e,testId:t})=>{let r={"data-fs-breadcrumb-divider":!0,"aria-hidden":!0,"data-testid":`${t}-divider`};return o.isValidElement(e)?o.cloneElement(e,r):o.createElement("span",{...r},e??"/")},Breadcrumb_ListItem=({children:e,isLastItem:t,divider:r,testId:n})=>{let a={"data-testid":`${n}-item`,"data-fs-breadcrumb-item":!t||"current","aria-current":t?"page":void 0};return o.isValidElement(e)?o.createElement("li",{"data-fs-breadcrumb-list-item":!0},o.cloneElement(e,a),t?null:o.createElement(Breadcrumb_Divider,{divider:r,testId:n})):o.createElement("li",{"data-fs-breadcrumb-list-item":!0},o.createElement("span",{...a},e,t?null:o.createElement(Breadcrumb_Divider,{divider:r,testId:n})))};let g=(0,o.forwardRef)(function({children:e,divider:t="",testId:r="fs-breadcrumb",...n},a){return o.createElement("nav",{"aria-label":"Breadcrumb",role:"navigation",ref:a,"data-fs-breadcrumb":!0,"data-testid":r,...n},o.createElement(h.Z,{as:"ol","data-fs-breadcrumb-list":!0,"data-fs-content":"breadcrumb"},o.Children.toArray(e).map((e,n,a)=>{let l=n===a.length-1;return o.createElement(Breadcrumb_ListItem,{isLastItem:l,divider:t,key:`breadcrumb-${n}`,testId:r},e)})))}),j=(0,o.forwardRef)(function({children:e,divider:t="",testId:r="fs-breadcrumb",breadcrumbList:n,isDesktop:a=!1,renderLink:l,homeLink:i,dropdownButtonIcon:c=o.createElement(d.Z,{name:"DotsThree"}),collapsedItemsIcon:s=o.createElement(d.Z,{"data-fs-dropdown-item-icon":!0,name:"ArrowElbowDownRight"}),...u},f){let m=a?n[0]:null,v=a?n.slice(1,-2):n.slice(0,-2),h=n.slice(-2),j=n.length>4,P=(0,o.useCallback)(e=>{let t=l?.(e),r=e.collapsed?{"data-fs-breadcrumb-dropdown-link":!0}:{"data-fs-breadcrumb-link":!0};return t?(0,o.cloneElement)(t,{...r,key:e.itemProps.position}):o.createElement(p.Z,{...r,href:e.itemProps.item,key:e.itemProps.position},e.itemProps.name)},[l]);return o.createElement(g,{ref:f,"data-fs-breadcrumb-is-desktop":a,...u},i,!j&&n.map((e,t)=>n.length===t+1?o.createElement("span",{key:String(e.position)},e.name):P({itemProps:e,collapsed:!1})),j&&m&&P({itemProps:m,collapsed:!1}),j&&o.createElement(Dropdown_Dropdown,null,o.createElement(b,{"aria-label":"View More","data-fs-breadcrumb-dropdown-button":!0,size:"small"},c),o.createElement(Dropdown_DropdownMenu,{"data-fs-breadcrumb-dropdown-menu":!0},v.map(e=>o.createElement(y,{"data-fs-breadcrumb-dropdown-item":!0,key:String(e.position),icon:s},P({itemProps:e,collapsed:!0}))))),j&&h.map((e,t)=>h.length===t+1?o.createElement("span",{key:String(e.position)},e.name):P({itemProps:e,collapsed:!1})))});var P={Breadcrumb:({breadcrumbList:e,...t})=>o.createElement(o.Fragment,null,o.createElement(j,{breadcrumbList:e,...t}),o.createElement(j,{breadcrumbList:e,isDesktop:!0,...t})),Icon:d.Z},w=r(2322);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}var O=(0,a.B)("Breadcrumb",function(e){var t,r,a,o,i,d,p,f,m,b=Object.assign({},e),{Breadcrumb:v}=(0,u.r3)(),y=(0,s.qt)(),h=(0,s.OJ)(y)?null==y?void 0:null===(t=y.data)||void 0===t?void 0:null===(r=t.collection)||void 0===r?void 0:null===(a=r.seo)||void 0===a?void 0:a.title:"All Products",g=(0,s.tS)(y)?null==y?void 0:null===(o=y.data)||void 0===o?void 0:null===(i=o.product)||void 0===i?void 0:null===(d=i.breadcrumbList)||void 0===d?void 0:d.itemListElement:(0,s.OJ)(y)?null==y?void 0:null===(p=y.data)||void 0===p?void 0:null===(f=p.collection)||void 0===f?void 0:null===(m=f.breadcrumbList)||void 0===m?void 0:m.itemListElement:[{item:"/",name:h,position:1}];return(0,w.jsx)(l.Z,{className:"".concat(c().section," section-breadcrumb"),children:(0,w.jsx)(v.Component,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){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({breadcrumbList:g},b))})},P),_=(0,o.memo)(O);function OverriddenDefaultBreadcrumb_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 OverriddenDefaultBreadcrumb_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?OverriddenDefaultBreadcrumb_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):OverriddenDefaultBreadcrumb_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var S=(0,a.v)(OverriddenDefaultBreadcrumb_objectSpread(OverriddenDefaultBreadcrumb_objectSpread({},{section:"Breadcrumb"}),{},{Section:_}))},4583:function(e,t,r){"use strict";r.d(t,{f:function(){return Y}});var n=r(9499),a=r(7296),o=r(4730),l=r(2718),i=r(3221),c=r(5351),s=r(2784),u=r(6652),d=r(4329),p=r(9664),f=["value"];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){(0,n.Z)(e,t,r[t])}):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 reducer=(e,t)=>{var{expanded:r,selected:n}=e,{type:a,payload:o}=t;switch(a){case"toggleExpanded":return r.has(o)?r.delete(o):r.add(o),_objectSpread(_objectSpread({},e),{},{expanded:new Set(r)});case"selectFacets":if(o!==n)return _objectSpread(_objectSpread({},e),{},{selected:o});break;case"toggleFacet":return _objectSpread(_objectSpread({},e),{},{selected:(0,p.wB)(e.selected,o)});case"setFacet":return _objectSpread(_objectSpread({},e),{},{selected:(0,p.uL)(e.selected,o.facet,o.unique)});default:throw Error("Action ".concat(a," not implemented"))}return e},useFilter=e=>{var{state:{selectedFacets:t}}=(0,i.R)(),{0:{selected:r,expanded:n},1:a}=(0,s.useReducer)(reducer,null,()=>({expanded:new Set([]),selected:t})),l=(0,s.useMemo)(()=>r.reduce((e,t)=>{var r;return e.has(t.key)||e.set(t.key,new Map),null===(r=e.get(t.key))||void 0===r||r.set(t.value,t),e},new Map),[r]),c=(0,s.useMemo)(()=>e.map(e=>"StoreFacetBoolean"===e.__typename?_objectSpread(_objectSpread({},e),{},{values:e.values.map(t=>{var r,{value:n}=t;return _objectSpread(_objectSpread({},(0,o.Z)(t,f)),{},{value:n,selected:!!(null===(r=l.get(e.key))||void 0===r?void 0:r.has(n))})})}):e),[e,l]);return(0,s.useEffect)(()=>{a({type:"selectFacets",payload:t})},[t]),{facets:c,selected:r,expanded:n,dispatch:a}},m=r(2322);function Filter_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 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){(0,n.Z)(e,t,r[t])}):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}var Filter_Filter=function(e){var t,r,{facets:n,testId:a="fs-filter",filter:o}=e,{__experimentalFilterDesktop:l,__experimentalFilterSlider:i}=(0,d.r3)(),c=useFilter(n),{filter:p}=(0,u.l)();return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)("div",{className:"hidden-mobile",children:(0,m.jsx)(l.Component,Filter_objectSpread(Filter_objectSpread(Filter_objectSpread({},l.props),c),{},{testId:a,title:null==o?void 0:o.title}))}),p&&(0,m.jsx)(s.Suspense,{fallback:null,children:(0,m.jsx)(i.Component,Filter_objectSpread(Filter_objectSpread(Filter_objectSpread({},i.props),c),{},{testId:a,title:null==o?void 0:o.title,clearButtonLabel:null==o?void 0:null===(t=o.mobileOnly)||void 0===t?void 0:t.clearButtonLabel,applyButtonLabel:null==o?void 0:null===(r=o.mobileOnly)||void 0===r?void 0:r.applyButtonLabel}))})]})},b=r(1953),v=r(2614);let y=(0,s.forwardRef)(function({options:e,id:t,testId:r="fs-select",...n},a){return s.createElement("div",{"data-fs-select":!0},s.createElement("select",{ref:a,id:t,"data-testid":r,...n},Object.keys(e).map(t=>s.createElement("option",{key:t,value:t},e[t]))),s.createElement(v.Z,{"data-fs-select-icon":!0,name:"CaretDown"}))}),h=(0,s.forwardRef)(function({id:e,label:t,options:r,testId:n="fs-select-field",...a},o){return s.createElement("div",{ref:o,"data-fs-select-field":!0},s.createElement(b.Z,{"data-fs-select-field-label":!0,htmlFor:e},t),s.createElement(y,{id:e,options:r,"data-testid":n,...a}))});function Sort_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 Sort_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Sort_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Sort_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var g={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"},j=Object.keys(g),Sort_Sort=function(e){var{label:t="Sort by",options:r=g}=e,{state:n,setState:a}=(0,i.R)(),o=Object.keys(r).reduce((e,t)=>{var n;return e[t]=null!==(n=r[t])&&void 0!==n?n:g[t],e},{});return(0,m.jsx)(h,{id:"sort-select",className:"sort / text__title-mini-alt",label:t,options:o,onChange:e=>{var t=j[e.target.selectedIndex];a(Sort_objectSpread(Sort_objectSpread({},n),{},{sort:t,page:0}))},value:n.sort,testId:"search-sort"})},P=r(792),FilterSkeleton_FilterSkeleton=function(e){var{children:t,loading:r=!0}=e;return r?(0,m.jsxs)("div",{"data-fs-filter-skeleton":!0,children:[(0,m.jsx)(P.Z,{"data-fs-filter-skeleton-text":!0,size:{width:"100%",height:"1.5rem"}}),(0,m.jsxs)("div",{"data-fs-filter-skeleton-content":!0,children:[(0,m.jsx)(P.Z,{"data-fs-filter-skeleton-text":!0,size:{width:"100%",height:"1.5rem"},shimmer:!1}),(0,m.jsx)(P.Z,{"data-fs-filter-skeleton-text":!0,size:{width:"100%",height:"1.5rem"},shimmer:!1}),(0,m.jsx)(P.Z,{"data-fs-filter-skeleton-text":!0,size:{width:"100%",height:"1.5rem"},shimmer:!1})]})]}):(0,m.jsx)(m.Fragment,{children:t})},w=r(4548),useDelayedFacets=e=>{var t=(0,s.useRef)([]);return(0,s.useMemo)(()=>{if(e){var r;t.current=null===(r=e.search)||void 0===r?void 0:r.facets}return t.current},[e,t])},O=r(2339);let getLink=e=>{let{pathname:t,search:r}=(0,O.Z)(e);return`${t}${r}`},usePagination=e=>{let{pages:t,itemsPerPage:r,state:n}=(0,i.R)(),a=Math.ceil(e/r),o=Number(t[t.length-1])+1,l=t[0]-1;return(0,s.useMemo)(()=>({next:o<a&&{cursor:o,link:getLink({...n,page:o})},prev:l>-1&&{cursor:l,link:getLink({...n,page:l})}}),[o,l,n,a])};var useDelayedPagination=e=>{var t=usePagination(e),{0:r,1:n}=(0,s.useState)(()=>({next:!1,prev:!1}));return(0,s.useEffect)(()=>{n(t)},[t]),r},_=r(4960),S=r(3523),x=r(9857),E=r(2495),k=r(7553),D=["cache"],prefetchQuery=(e,t,r)=>{var{cache:n}=r,a=(0,o.Z)(r,D),l=(0,k.km)(e.__meta__.operationName,t);n.get(l)||(0,x.JG)(l,(0,E.W)(e,t,a))},F=r(5081);function useProductsPrefetch_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}var Z=S.gU,useProductsQueryPrefetch=(e,t)=>{var r=(0,F.y)(e),{cache:a}=(0,x.kY)();return(0,s.useCallback)(()=>prefetchQuery(Z,r,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?useProductsPrefetch_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):useProductsPrefetch_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({cache:a},t)),[r,a,t])},useProductsPrefetch=e=>{var{itemsPerPage:t,state:{sort:r,term:n,selectedFacets:a}}=(0,i.R)(),o=useProductsQueryPrefetch({first:t,after:(t*(null!=e?e:0)).toString(),sort:r,term:null!=n?n:"",selectedFacets:a});(0,s.useEffect)(()=>{null!==e&&o()},[e,o])};function ProductGallery_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 ProductGallery_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ProductGallery_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ProductGallery_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var C=(0,s.lazy)(()=>r.e(758).then(r.bind(r,5758))),G=(0,m.jsx)(w.Z,{loading:!0}),ProductGallery_ProductGallery=function(e){var t,r,n,a,o,l,p,f,b,v,y,h,g,j,P,w,O,S,{title:x,searchTerm:E,totalCount:k,searchTermLabel:D,totalCountLabel:F,filter:Z,previousPageButton:R,loadMorePageButton:M,sortBySelector:B,productCard:I}=e,{FilterButtonSkeleton:N,FilterIcon:K,LinkButtonNext:L,LinkButtonPrev:$,MobileFilterButton:A,PrevIcon:q,ResultsCountSkeleton:T,SortSkeleton:U}=(0,d.r3)(),{openFilter:z}=(0,u.l)(),{pages:V,addNextPage:H,addPrevPage:J,itemsPerPage:Q}=(0,i.R)(),W=(0,_.qt)(),Y=null==W?void 0:W.data,X=null!==(t=useDelayedFacets(Y))&&void 0!==t?t:[],{next:ee,prev:et}=useDelayedPagination(k);useProductsPrefetch(et?et.cursor:null),useProductsPrefetch(ee?ee.cursor:null);var er=!!(null==Y?void 0:null===(r=Y.search)||void 0===r?void 0:r.facets),en=!!(null==Y?void 0:null===(n=Y.search)||void 0===n?void 0:n.products);return(0,m.jsxs)("section",{"data-testid":"product-gallery","data-fs-product-listing":!0,children:[E&&(0,m.jsx)("header",{"data-fs-product-listing-search-term":!0,"data-fs-content":"product-gallery",children:(0,m.jsxs)("h1",{children:[D," ",(0,m.jsx)("span",{children:E})]})}),(0,m.jsxs)("div",{"data-fs-product-listing-content-grid":!0,"data-fs-content":"product-gallery",children:[(0,m.jsx)("div",{"data-fs-product-listing-filters":!0,children:(0,m.jsx)(FilterSkeleton_FilterSkeleton,{loading:!er,children:er&&(null==X?void 0:X.length)>0&&(0,m.jsx)(Filter_Filter,{facets:X,filter:Z})})}),(0,m.jsx)("div",{"data-fs-product-listing-results-count":!0,"data-count":k,children:(0,m.jsx)(T.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({"data-fs-product-listing-results-count-skeleton":!0,size:{width:"100%",height:"1.5rem"}},T.props),{},{loading:!en,children:(0,m.jsxs)("h2",{"data-testid":"total-product-count",children:[k," ",F]})}))}),(0,m.jsxs)("div",{"data-fs-product-listing-sort":!0,children:[(0,m.jsx)(U.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({"data-fs-product-listing-sort-skeleton":!0,size:{width:"auto",height:"1.5rem"}},U.props),{},{loading:!en,children:(0,m.jsx)(Sort_Sort,{label:null==B?void 0:B.label,options:null==B?void 0:B.options})})),(0,m.jsx)(N.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({"data-fs-product-listing-filter-button-skeleton":!0,size:{width:"6rem",height:"1.5rem"}},N.props),{},{loading:!er,children:er&&(null==X?void 0:X.length)>0&&(0,m.jsx)(A.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({variant:"tertiary","data-testid":"open-filter-button",icon:(0,m.jsx)(K.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({width:16,height:16},K.props),{},{name:null!==(a=null==Z?void 0:null===(o=Z.mobileOnly)||void 0===o?void 0:null===(l=o.filterButton)||void 0===l?void 0:null===(p=l.icon)||void 0===p?void 0:p.icon)&&void 0!==a?a:K.props.name,"aria-label":null!==(f=null==Z?void 0:null===(b=Z.mobileOnly)||void 0===b?void 0:null===(v=b.filterButton)||void 0===v?void 0:null===(y=v.icon)||void 0===y?void 0:y.alt)&&void 0!==f?f:K.props["aria-label"]})),iconPosition:"left"},A.props),{},{onClick:z,children:null==Z?void 0:null===(h=Z.mobileOnly)||void 0===h?void 0:null===(g=h.filterButton)||void 0===g?void 0:g.label}))}))]}),(0,m.jsxs)("div",{"data-fs-product-listing-results":!0,children:[!1!==et&&(0,m.jsxs)("div",{"data-fs-product-listing-pagination":"top",children:[(0,m.jsx)(c.PB,{additionalLinkTags:[{rel:"prev",href:et.link}]}),(0,m.jsx)($.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({rel:"prev",variant:"secondary",iconPosition:"left",icon:(0,m.jsx)(q.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({width:16,height:16,weight:"bold"},q.props),{},{name:null!==(j=null==R?void 0:null===(P=R.icon)||void 0===P?void 0:P.icon)&&void 0!==j?j:q.props.name,"aria-label":null!==(w=null!==(O=null==R?void 0:null===(S=R.icon)||void 0===S?void 0:S.alt)&&void 0!==O?O:null==R?void 0:R.label)&&void 0!==w?w:q.props["aria-label"]}))},$.props),{},{onClick:e=>{e.currentTarget.blur(),e.preventDefault(),J()},href:et.link,children:null==R?void 0:R.label}))]}),en?(0,m.jsx)(s.Suspense,{fallback:G,children:V.map(e=>(0,m.jsx)(C,{page:e,title:x,productCard:I,itemsPerPage:Q},"gallery-page-".concat(e)))}):G,!1!==ee&&(0,m.jsxs)("div",{"data-fs-product-listing-pagination":"bottom",children:[(0,m.jsx)(c.PB,{additionalLinkTags:[{rel:"next",href:ee.link}]}),(0,m.jsx)(L.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({testId:"show-more",rel:"next",variant:"secondary"},L.props),{},{onClick:e=>{e.currentTarget.blur(),e.preventDefault(),H()},href:ee.link,children:null==M?void 0:M.label}))]})]})]})]})},R=r(9089),M=r(1080),B=r.n(M),I=r(3339),N=r(3922),K=r(6068),L=r(5699),$=r(4199),A=r(2815),q=r(1305),T=r(1355),U=r(113);function FilterDesktop_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 FilterDesktop_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?FilterDesktop_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):FilterDesktop_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var z=r(6133),V=(0,s.lazy)(()=>r.e(624).then(r.bind(r,7624))),H={MobileFilterButton:I.Z,FilterIcon:v.Z,PrevIcon:v.Z,ResultsCountSkeleton:P.Z,SortSkeleton:P.Z,FilterButtonSkeleton:P.Z,LinkButtonPrev:N.Z,LinkButtonNext:N.Z,__experimentalFilterDesktop:function(e){var{facets:t,testId:r,dispatch:n,expanded:a,title:o}=e,{resetInfiniteScroll:l,state:c,setState:s}=(0,i.R)();return(0,m.jsx)(L.Z,{testId:"desktop-".concat(r),title:o,indicesExpanded:a,onAccordionChange:e=>n({type:"toggleExpanded",payload:e}),children:t.map((e,t)=>{var{__typename:n,label:o}=e,i=a.has(t);return(0,m.jsxs)($.Z,{testId:r,index:t,type:n,label:o,children:["StoreFacetBoolean"===n&&i&&(0,m.jsx)(A.Z,{children:e.values.map(t=>(0,m.jsx)(q.Z,{id:"".concat(r,"-").concat(e.label,"-").concat(t.label),testId:r,onFacetChange:e=>{s(FilterDesktop_objectSpread(FilterDesktop_objectSpread({},c),{},{selectedFacets:(0,p.wB)(c.selectedFacets,e),page:0})),l(0)},selected:t.selected,value:t.value,quantity:t.quantity,facetKey:e.key,label:t.label},"".concat(r,"-").concat(e.label,"-").concat(t.label)))}),"StoreFacetRange"===n&&i&&(0,m.jsx)(T.Z,{facetKey:e.key,min:e.min,max:e.max,formatter:"price"===e.key.toLowerCase()?U.P:void 0,onFacetChange:e=>{s(FilterDesktop_objectSpread(FilterDesktop_objectSpread({},c),{},{selectedFacets:(0,p.uL)(c.selectedFacets,e,!0),page:0})),l(0)}})]},"".concat(r,"-").concat(o,"-").concat(t))})})},__experimentalFilterSlider:V,__experimentalProductCard:K.Z,__experimentalEmptyGallery:function(e){var t,r,n,a,o,l,{title:i,firstButton:c,secondButton:s}=e;return(0,m.jsxs)(z.Z,{variant:"rounded",title:null!=i?i:"Nothing matches with your search",titleIcon:(0,m.jsx)(v.Z,{name:"CircleWavyWarning",width:56,height:56,weight:"thin"}),children:[(0,m.jsx)(N.Z,{href:null!==(t=null==c?void 0:c.url)&&void 0!==t?t:"/office",variant:"secondary",icon:(0,m.jsx)(v.Z,{name:null!==(r=null==c?void 0:c.icon)&&void 0!==r?r:"CircleWavyWarning",width:18,height:18,weight:"bold"}),iconPosition:"left",children:null!==(n=null==c?void 0:c.label)&&void 0!==n?n:"Browse Offers"}),(0,m.jsx)(N.Z,{href:null!==(a=null==s?void 0:s.url)&&void 0!==a?a:"/technology",variant:"secondary",icon:(0,m.jsx)(v.Z,{name:null!==(o=null==s?void 0:s.icon)&&void 0!==o?o:"RocketLaunch",width:18,height:18,weight:"bold"}),iconPosition:"left",children:null!==(l=null==s?void 0:s.label)&&void 0!==l?l:"Just Arrived"})]})}},J=["emptyGallery"];function ProductGallery_ProductGallery_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 ProductGallery_ProductGallery_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ProductGallery_ProductGallery_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ProductGallery_ProductGallery_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function ProductGallerySection(e){var t,r,n,a,l,i,c,s,u,p,f,b,{emptyGallery:v}=e,y=(0,o.Z)(e,J),{__experimentalEmptyGallery:h}=(0,d.r3)(),g=(0,_.qt)(),[j,P]=(0,_.En)(g)?[null==g?void 0:null===(t=g.data)||void 0===t?void 0:t.title,null==g?void 0:null===(r=g.data)||void 0===r?void 0:r.searchTerm]:(0,_.OJ)(g)?[null==g?void 0:null===(n=g.data)||void 0===n?void 0:null===(a=n.collection)||void 0===a?void 0:null===(l=a.seo)||void 0===l?void 0:l.title]:[""],w=null!==(i=null==g?void 0:null===(c=g.data)||void 0===c?void 0:null===(s=c.search)||void 0===s?void 0:null===(u=s.products)||void 0===u?void 0:null===(p=u.pageInfo)||void 0===p?void 0:p.totalCount)&&void 0!==i?i:0;return null!=g&&null!==(f=g.data)&&void 0!==f&&null!==(b=f.search)&&void 0!==b&&b.products&&0===w?(0,m.jsx)(R.Z,{className:"".concat(B().section," section-product-gallery"),children:(0,m.jsx)("section",{"data-testid":"product-gallery","data-fs-product-listing":!0,children:(0,m.jsx)(h.Component,ProductGallery_ProductGallery_objectSpread({},v))})}):(0,m.jsx)(R.Z,{className:"".concat(B().section," section-product-gallery layout__section"),children:(0,m.jsx)(ProductGallery_ProductGallery,ProductGallery_ProductGallery_objectSpread({title:j,searchTerm:P,totalCount:w},y))})}ProductGallerySection.displayName="ProductGallery";var Q=(0,l.B)(ProductGallerySection),W=(0,a.B)("ProductGallery",Q,H);function OverriddenDefaultProductGallery_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 OverriddenDefaultProductGallery_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?OverriddenDefaultProductGallery_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):OverriddenDefaultProductGallery_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var Y=(0,a.v)(OverriddenDefaultProductGallery_objectSpread(OverriddenDefaultProductGallery_objectSpread({},{section:"ProductGallery"}),{},{Section:W}))},4548:function(e,t,r){"use strict";var n=r(1023),a=r(5476),o=r(2322);t.Z=function(e){var{children:t,aspectRatio:r,loading:l=!0}=e;return l?(0,o.jsx)("ul",{"data-fs-product-grid":!0,children:Array.from({length:n.g},(e,t)=>(0,o.jsx)("li",{children:(0,o.jsx)(a.Z,{aspectRatio:r,bordered:!0})},String(t)))}):(0,o.jsx)(o.Fragment,{children:t})}},7171:function(e,t,r){"use strict";r.d(t,{Bj:function(){return c},Y_:function(){return useCreateUseGalleryPage},__:function(){return useGalleryPage}});var n=r(3523),a=r(3221),o=r(2784),l=r(7553),i=r(5081),c=(0,o.createContext)(e=>({data:null})),useGalleryPage=e=>{var t=(0,o.useContext)(c);if(!t)throw Error("Missing UseGalleryPageContext on React tree");return t(e)},s=n.gU,getKey=e=>JSON.stringify(e),useCreateUseGalleryPage=()=>{var{0:e,1:t}=(0,o.useState)([]),r=(0,o.useRef)([]),n=(0,o.useRef)([]),c=(0,o.useCallback)(function(e){var{state:{sort:c,term:u,selectedFacets:d},itemsPerPage:p}=(0,a.R)(),f=(0,i.y)({first:p,after:(p*e).toString(),sort:c,term:null!=u?u:"",selectedFacets:d}),m=n.current[e]===getKey(f),{data:b}=(0,l.aM)(s,f,{fallbackData:null,suspense:!0,doNotRun:m}),v=!m&&null!==b;if(v){n.current[e]=getKey(f);var y=[...r.current];y[e]=b,r.current=y}return(0,o.useEffect)(()=>{v&&t(t=>{var r=[...t];return r[e]=b,r})},[b,e,v]),(0,o.useMemo)(()=>m?{data:r.current[e]}:{data:b},[m,b,e])},[]);return(0,o.useMemo)(()=>({pages:e,useGalleryPage:c}),[e,c])}},7921:function(e,t,r){"use strict";r.d(t,{U:function(){return useProductGalleryQuery}});var n=r(3523),a=r(1072),o=r(7553),l=r(1868),i=r(5081),c=n.VA,useProductGalleryQuery=e=>{var{term:t,sort:r,selectedFacets:n,itemsPerPage:s}=e,{locale:u}=(0,l.kP)(),d=(0,i.y)({first:s,after:"0",sort:r,term:null!=t?t:"",selectedFacets:n});return(0,o.aM)(c,d,{onSuccess:e=>{if(e&&t){var r,n,o,l;(0,a._)({name:"intelligent_search_query",params:{locale:u,term:t,url:window.location.href,logicalOperator:null!==(r=null===(n=e.search.metadata)||void 0===n?void 0:n.logicalOperator)&&void 0!==r?r:"and",isTermMisspelled:null!==(o=null===(l=e.search.metadata)||void 0===l?void 0:l.isTermMisspelled)&&void 0!==o&&o,totalCount:e.search.products.pageInfo.totalCount}})}}})}},5403:function(e,t,r){"use strict";r.d(t,{j:function(){return useApplySearchState}});var n=r(2784),a=r(1163),useApplySearchState=()=>{var e=(0,a.useRouter)();return(0,n.useCallback)(t=>e.push("".concat(t.pathname).concat(t.search)),[e])}},4177:function(e){e.exports={section:"section_section__dvBbv"}},1080:function(e){e.exports={section:"section_section__4Hqa8",loading:"section_loading__GPzvE"}},1197:function(e,t,r){"use strict";r.d(t,{_:function(){return l},z:function(){return Provider}});var n=r(2784),a=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 a.q("Unknown action for infinite search")}},useSearchInfiniteState=e=>{let[t,r]=(0,n.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]),a=(0,n.useMemo)(()=>({addPrevPage:()=>r({type:"addPrev"}),addNextPage:()=>r({type:"addNext"}),resetInfiniteScroll:e=>r({type:"reset",payload:e})}),[]);return{pages:t,...a}};var o=r(2524);let l=(0,n.createContext)(void 0),Provider=({children:e,itemsPerPage:t,onChange:r,...a})=>{let{state:i,...c}=(0,o.X)(a,r),{pages:s,...u}=useSearchInfiniteState(i.page),d=(0,n.useMemo)(()=>({state:i,...c,pages:s,...u,itemsPerPage:t}),[u,t,s,c,i]);return n.createElement(l.Provider,{value:d},e)}},9664:function(e,t,r){"use strict";r.d(t,{uL:function(){return setFacet},wB:function(){return toggleFacet},wb:function(){return isSearchSort}});var n=r(2254);let a=new Set(["price_desc","price_asc","orders_desc","name_desc","name_asc","release_desc","discount_desc","score_desc"]),isSearchSort=e=>a.has(e),removeFacet=(e,t)=>{let{value:r}=t,a=e.findIndex(e=>e.value===r);if(a<0)throw new n.q(`Cannot remove ${r} from search params`);return e.filter((e,t)=>t!==a)},setFacet=(e,t,r)=>{if(!0===r){let r=e.findIndex(e=>e.key===t.key);if(r>-1)return e.map((e,n)=>n===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:function(e,t,r){"use strict";r.d(t,{Q:function(){return parse}});var n=r(2254),a=r(9664),o=r(2524);let parse=({pathname:e,searchParams:t})=>{let r=(0,o.j)({base:e,term:t.get("q")??null,sort:t.get("sort")??void 0,page:Number(t.get("page")??0)});if(!(0,a.wb)(r.sort))throw new n.q(`Uknown sorting option ${r.sort}`);let l=t.get("facets")?.split(",")??[];for(let e of l){let n=t.getAll(e);for(let t of n)r.selectedFacets=(0,a.uL)(r.selectedFacets,{key:e,value:t})}return r.passThrough=function(e,t){let r=new URLSearchParams,n=new Set(t),a=Array.from(e.entries());for(let[e,t]of a)n.has(e)||r.append(e,t);return r}(t,["q","sort","page","facets",...l]),r}},3221:function(e,t,r){"use strict";r.d(t,{R:function(){return useSearch}});var n=r(1197),a=r(2784),o=r(2254);let useContext=e=>{let t=(0,a.useContext)(e);if(void 0===t)throw new o.q(`${e.displayName??"Context"} needs to be on the React tree`);return t},useSearch=()=>useContext(n._)}}]);