@faststore/core 3.77.3 → 3.78.0

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 (168) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +49 -49
  3. package/.next/cache/.tsbuildinfo +1 -1
  4. package/.next/cache/config.json +3 -3
  5. package/.next/cache/webpack/client-production/0.pack +0 -0
  6. package/.next/cache/webpack/client-production/index.pack +0 -0
  7. package/.next/cache/webpack/server-production/0.pack +0 -0
  8. package/.next/cache/webpack/server-production/index.pack +0 -0
  9. package/.next/prerender-manifest.js +1 -1
  10. package/.next/prerender-manifest.json +1 -1
  11. package/.next/react-loadable-manifest.json +71 -57
  12. package/.next/routes-manifest.json +1 -1
  13. package/.next/server/chunks/1270.js +1 -0
  14. package/.next/server/chunks/1911.js +1 -0
  15. package/.next/server/chunks/2430.js +1 -0
  16. package/.next/server/chunks/3006.js +1 -1
  17. package/.next/server/chunks/3836.js +1 -1
  18. package/.next/server/chunks/3945.js +1 -0
  19. package/.next/server/chunks/5402.js +1 -0
  20. package/.next/server/chunks/6698.js +1 -0
  21. package/.next/server/chunks/6789.js +1 -1
  22. package/.next/server/chunks/{7178.js → 8071.js} +1 -1
  23. package/.next/server/chunks/83.js +1 -1
  24. package/.next/server/chunks/831.js +1 -1
  25. package/.next/server/chunks/8474.js +9 -0
  26. package/.next/server/chunks/8563.js +1 -0
  27. package/.next/server/chunks/9088.js +1 -1
  28. package/.next/server/chunks/9117.js +1 -0
  29. package/.next/server/chunks/948.js +1 -1
  30. package/.next/server/chunks/9563.js +2 -2
  31. package/.next/server/chunks/9630.js +101 -4
  32. package/.next/server/chunks/9853.js +1 -1
  33. package/.next/server/chunks/UIBannerText.js +1 -1
  34. package/.next/server/chunks/UISKUMatrixSidebar.js +1 -1
  35. package/.next/server/middleware-build-manifest.js +1 -1
  36. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  37. package/.next/server/pages/404.js.nft.json +1 -1
  38. package/.next/server/pages/500.js.nft.json +1 -1
  39. package/.next/server/pages/[...slug].js +1 -1
  40. package/.next/server/pages/[...slug].js.nft.json +1 -1
  41. package/.next/server/pages/[slug]/p.js +1 -1
  42. package/.next/server/pages/[slug]/p.js.nft.json +1 -1
  43. package/.next/server/pages/_app.js.nft.json +1 -1
  44. package/.next/server/pages/_document.js.nft.json +1 -1
  45. package/.next/server/pages/_error.js.nft.json +1 -1
  46. package/.next/server/pages/account/403.js.nft.json +1 -1
  47. package/.next/server/pages/account/404.js.nft.json +1 -1
  48. package/.next/server/pages/account/[...unknown].js.nft.json +1 -1
  49. package/.next/server/pages/account/orders/[id].js.nft.json +1 -1
  50. package/.next/server/pages/account/orders.js +1 -1
  51. package/.next/server/pages/account/orders.js.nft.json +1 -1
  52. package/.next/server/pages/account/profile.js.nft.json +1 -1
  53. package/.next/server/pages/account/security.js.nft.json +1 -1
  54. package/.next/server/pages/account/user-details.js.nft.json +1 -1
  55. package/.next/server/pages/account.js.nft.json +1 -1
  56. package/.next/server/pages/api/graphql.js +2 -2
  57. package/.next/server/pages/api/graphql.js.nft.json +1 -1
  58. package/.next/server/pages/api/health/live.js.nft.json +1 -1
  59. package/.next/server/pages/api/health/ready.js.nft.json +1 -1
  60. package/.next/server/pages/api/preview.js.nft.json +1 -1
  61. package/.next/server/pages/checkout.js.nft.json +1 -1
  62. package/.next/server/pages/en-US/404.html +1 -1
  63. package/.next/server/pages/en-US/500.html +1 -1
  64. package/.next/server/pages/en-US/checkout.html +1 -1
  65. package/.next/server/pages/en-US/login.html +1 -1
  66. package/.next/server/pages/en-US/s.html +1 -1
  67. package/.next/server/pages/en-US.html +1 -1
  68. package/.next/server/pages/index.js.nft.json +1 -1
  69. package/.next/server/pages/login.js.nft.json +1 -1
  70. package/.next/server/pages/s.js +1 -1
  71. package/.next/server/pages/s.js.nft.json +1 -1
  72. package/.next/server/pages-manifest.json +1 -1
  73. package/.next/static/{xFgIjKNUaH5r_Yo0uIAnc → 6VSKTBCq7vRe86nXQK6nv}/_buildManifest.js +1 -1
  74. package/.next/static/chunks/3155.c3fa96f983101956.js +1 -0
  75. package/.next/static/chunks/3166-a1d98d71987c90d6.js +1 -0
  76. package/.next/static/chunks/3399.60aae5ddb9123ef5.js +1 -0
  77. package/.next/static/chunks/3836.a2f49cd66f78bcb2.js +1 -0
  78. package/.next/static/chunks/4836.ef87204971e182f4.js +1 -0
  79. package/.next/static/chunks/6789.634a5fcc1ed30b8d.js +1 -0
  80. package/.next/static/chunks/7026.e990acc86d95259d.js +1 -0
  81. package/.next/static/chunks/7191-2b424236f6799274.js +1 -0
  82. package/.next/static/chunks/7351.8ef7b6b1d6e1505a.js +1 -0
  83. package/.next/static/chunks/83.affac11ef34a0c11.js +1 -0
  84. package/.next/static/chunks/8325.b3ddbb43feda1a85.js +1 -0
  85. package/.next/static/chunks/8587.1d6d458c9b697351.js +1 -0
  86. package/.next/static/chunks/9173-acced9d62b9088c8.js +1 -0
  87. package/.next/static/chunks/9666-9be3f1e484eeb148.js +1 -0
  88. package/.next/static/chunks/{7351.e90a4cc21797c136.js → 9714.68af2d4bf27f560b.js} +1 -1
  89. package/.next/static/chunks/9781.dd4028663db7414b.js +1 -0
  90. package/.next/static/chunks/BannerNewsletter.d91d065d644d15f3.js +1 -0
  91. package/.next/static/chunks/BannerText.3bc2f0af3687e984.js +1 -0
  92. package/.next/static/chunks/CartSidebar.f2f885b6d9a227e2.js +1 -0
  93. package/.next/static/chunks/ProductShelf.dcdeffe85dca1ace.js +1 -0
  94. package/.next/static/chunks/ProductTiles.12e553830401871d.js +1 -0
  95. package/.next/static/chunks/RegionModal.0aff964cb36eb49a.js +1 -0
  96. package/.next/static/chunks/RegionSlider.cbf2ac28eeac8dbe.js +1 -0
  97. package/.next/static/chunks/Toast.c06d4e2e2e7913c5.js +1 -0
  98. package/.next/static/chunks/UIBannerText.08c65db460bd1695.js +1 -0
  99. package/.next/static/chunks/UIToast.55af19d2eba3d8a1.js +1 -0
  100. package/.next/static/chunks/pages/{[...slug]-b3a9bdfcf0127006.js → [...slug]-1e68a914dfca7da9.js} +1 -1
  101. package/.next/static/chunks/pages/[slug]/p-2c73921b1ab00c27.js +1 -0
  102. package/.next/static/chunks/pages/_app-57478e0d1d2ddf62.js +1 -0
  103. package/.next/static/chunks/pages/{s-989fccebe1b60a4e.js → s-e7745eef6c834c3e.js} +1 -1
  104. package/.next/static/chunks/webpack-d29ca7e9684f9a33.js +1 -0
  105. package/.next/static/css/{70353bf19c496790.css → 297be4be3be36ff0.css} +1 -1
  106. package/.next/static/css/{0a57ee6c7a57788c.css → 4b8252ed2f23ac67.css} +1 -1
  107. package/.next/static/css/{6831395ff5fd317a.css → 6d92375b6ee8276a.css} +1 -1
  108. package/.next/static/css/8f6350925b347380.css +1 -0
  109. package/.next/trace +136 -135
  110. package/.turbo/turbo-build.log +19 -19
  111. package/.turbo/turbo-test.log +5 -5
  112. package/@generated/gql.ts +20 -4
  113. package/@generated/graphql.ts +310 -6
  114. package/@generated/persisted-documents.json +6 -5
  115. package/@generated/schema.graphql +39 -1
  116. package/CHANGELOG.md +6 -0
  117. package/cms/faststore/sections.json +99 -0
  118. package/package.json +4 -4
  119. package/src/components/product/ProductCard/ProductCard.tsx +74 -35
  120. package/src/components/product/ProductGrid/ProductGrid.tsx +16 -0
  121. package/src/components/sections/ProductDetails/ProductDetails.tsx +4 -0
  122. package/src/components/sections/ProductGallery/DefaultComponents.ts +15 -0
  123. package/src/components/sections/ProductGallery/ProductGallery.tsx +1 -0
  124. package/src/components/sections/ProductGallery/section.module.scss +16 -3
  125. package/src/components/ui/ProductComparison/ProductComparisonSidebar.tsx +256 -0
  126. package/src/components/ui/ProductComparison/index.ts +1 -0
  127. package/src/components/ui/ProductGallery/ProductGallery.tsx +251 -173
  128. package/src/components/ui/ProductGallery/ProductGalleryPage.tsx +6 -0
  129. package/src/sdk/product/useProductsSelected.tsx +45 -0
  130. package/src/typings/overrides.ts +30 -1
  131. package/test/server/index.test.ts +1 -0
  132. package/.next/server/chunks/1333.js +0 -1
  133. package/.next/server/chunks/2295.js +0 -1
  134. package/.next/server/chunks/2778.js +0 -9
  135. package/.next/server/chunks/3918.js +0 -1
  136. package/.next/server/chunks/3963.js +0 -1
  137. package/.next/server/chunks/5607.js +0 -1
  138. package/.next/server/chunks/6335.js +0 -1
  139. package/.next/server/chunks/76.js +0 -1
  140. package/.next/server/chunks/7794.js +0 -1
  141. package/.next/server/chunks/839.js +0 -1
  142. package/.next/static/chunks/3155.243c7558a71f0695.js +0 -1
  143. package/.next/static/chunks/3166-e2e2d3255aa5f208.js +0 -1
  144. package/.next/static/chunks/3399.93804fb74f79436c.js +0 -1
  145. package/.next/static/chunks/3836.c0487aea7bd0c6f0.js +0 -1
  146. package/.next/static/chunks/5781.28d03feacead66ad.js +0 -1
  147. package/.next/static/chunks/6355.454b14737c2bf69c.js +0 -1
  148. package/.next/static/chunks/6857.b2c06171638955ea.js +0 -1
  149. package/.next/static/chunks/7191-7badbb9888b79ce9.js +0 -1
  150. package/.next/static/chunks/7481.3c4ad3642e346232.js +0 -1
  151. package/.next/static/chunks/7498-0dc4f9a9ed199d3a.js +0 -1
  152. package/.next/static/chunks/83.ee1fdbe283ac65b6.js +0 -1
  153. package/.next/static/chunks/9173-3a00edf7b695a319.js +0 -1
  154. package/.next/static/chunks/BannerNewsletter.fe0181162c046991.js +0 -1
  155. package/.next/static/chunks/BannerText.681f118e9f149f6c.js +0 -1
  156. package/.next/static/chunks/CartSidebar.55cc31a37ffa6ee6.js +0 -1
  157. package/.next/static/chunks/ProductShelf.b75a7ab8e313ea07.js +0 -1
  158. package/.next/static/chunks/ProductTiles.35cd23ada22f5a96.js +0 -1
  159. package/.next/static/chunks/RegionModal.04b02aafc0836d49.js +0 -1
  160. package/.next/static/chunks/RegionSlider.d063ccee38bdfdb7.js +0 -1
  161. package/.next/static/chunks/Toast.75a18f47eb23b703.js +0 -1
  162. package/.next/static/chunks/UIBannerText.f4167ceafb96cf67.js +0 -1
  163. package/.next/static/chunks/UIToast.a49584c87d3adc17.js +0 -1
  164. package/.next/static/chunks/pages/[slug]/p-73a253032aaf8ce2.js +0 -1
  165. package/.next/static/chunks/pages/_app-df4ba03d82beaf86.js +0 -1
  166. package/.next/static/chunks/webpack-c996443db6f4fa91.js +0 -1
  167. package/.next/static/css/4bd5e2314f697713.css +0 -1
  168. /package/.next/static/{xFgIjKNUaH5r_Yo0uIAnc → 6VSKTBCq7vRe86nXQK6nv}/_ssgManifest.js +0 -0
@@ -841,6 +841,8 @@ export type Query = {
841
841
  product: StoreProduct
842
842
  /** Returns the total product count information based on a specific location accessible through the VTEX segment cookie. */
843
843
  productCount: Maybe<ProductCountResult>
844
+ /** Returns information about selected products. */
845
+ products: Array<StoreProduct>
844
846
  /** Returns information about the profile. */
845
847
  profile: Maybe<Profile>
846
848
  /** Returns if there's a redirect for a search. */
@@ -895,6 +897,10 @@ export type QueryProductCountArgs = {
895
897
  term: InputMaybe<Scalars['String']['input']>
896
898
  }
897
899
 
900
+ export type QueryProductsArgs = {
901
+ productIds: Array<Scalars['String']['input']>
902
+ }
903
+
898
904
  export type QueryProfileArgs = {
899
905
  id: Scalars['String']['input']
900
906
  }
@@ -930,6 +936,19 @@ export type QueryUserOrderArgs = {
930
936
  orderId: Scalars['String']['input']
931
937
  }
932
938
 
939
+ export type SkuSpecificationField = {
940
+ id: Maybe<Scalars['String']['output']>
941
+ name: Scalars['String']['output']
942
+ originalName: Maybe<Scalars['String']['output']>
943
+ }
944
+
945
+ export type SkuSpecificationValue = {
946
+ fieldId: Maybe<Scalars['String']['output']>
947
+ id: Maybe<Scalars['String']['output']>
948
+ name: Scalars['String']['output']
949
+ originalName: Maybe<Scalars['String']['output']>
950
+ }
951
+
933
952
  /** Search result. */
934
953
  export type SearchMetadata = {
935
954
  /** Indicates how the search engine corrected the misspelled word by using fuzzy logic. */
@@ -1012,10 +1031,15 @@ export type ShippingSla = {
1012
1031
  shippingEstimateDate: Maybe<Scalars['String']['output']>
1013
1032
  }
1014
1033
 
1034
+ export type SkuSpecification = {
1035
+ field: SkuSpecificationField
1036
+ values: Array<SkuSpecificationValue>
1037
+ }
1038
+
1015
1039
  export type SkuVariants = {
1016
1040
  /** SKU property values for the current SKU. */
1017
1041
  activeVariations: Maybe<Scalars['ActiveVariations']['output']>
1018
- /** All possible variant combinations of the current product. It also includes the data for each variant. */
1042
+ /** All available options for each SKU variant property, indexed by their name. */
1019
1043
  allVariantProducts: Maybe<Array<StoreProduct>>
1020
1044
  /** All available options for each SKU variant property, indexed by their name. */
1021
1045
  allVariantsByName: Maybe<Scalars['VariantsByName']['output']>
@@ -1046,6 +1070,18 @@ export type SkuVariantsSlugsMapArgs = {
1046
1070
  dominantVariantName: InputMaybe<Scalars['String']['input']>
1047
1071
  }
1048
1072
 
1073
+ export type Specification = {
1074
+ name: Scalars['String']['output']
1075
+ originalName: Scalars['String']['output']
1076
+ values: Array<Scalars['String']['output']>
1077
+ }
1078
+
1079
+ export type SpecificationGroup = {
1080
+ name: Scalars['String']['output']
1081
+ originalName: Scalars['String']['output']
1082
+ specifications: Array<Specification>
1083
+ }
1084
+
1049
1085
  /** Account profile information. */
1050
1086
  export type StoreAccountProfile = {
1051
1087
  email: Maybe<Scalars['String']['output']>
@@ -1385,6 +1421,8 @@ export type StoreProduct = {
1385
1421
  description: Scalars['String']['output']
1386
1422
  /** Global Trade Item Number. */
1387
1423
  gtin: Scalars['String']['output']
1424
+ /** Indicates whether the product has specifications. */
1425
+ hasSpecifications: Maybe<Scalars['Boolean']['output']>
1388
1426
  /** Array of images. */
1389
1427
  image: Array<StoreImage>
1390
1428
  /** Indicates product group related to this product. */
@@ -1403,8 +1441,12 @@ export type StoreProduct = {
1403
1441
  seo: StoreSeo
1404
1442
  /** Stock Keeping Unit. Merchant-specific ID for the product. */
1405
1443
  sku: Scalars['String']['output']
1444
+ /** Indicate the specifications of a product. */
1445
+ skuSpecifications: Array<SkuSpecification>
1406
1446
  /** Corresponding collection URL slug, with which to retrieve this entity. */
1407
1447
  slug: Scalars['String']['output']
1448
+ /** Indicate the specifications of a group of SKUs. */
1449
+ specificationGroups: Array<SpecificationGroup>
1408
1450
  /** Sku Unit Multiplier */
1409
1451
  unitMultiplier: Maybe<Scalars['Float']['output']>
1410
1452
  }
@@ -2362,6 +2404,7 @@ export type ProductSummary_ProductFragment = {
2362
2404
  name: string
2363
2405
  gtin: string
2364
2406
  unitMultiplier: number | null
2407
+ hasSpecifications: boolean | null
2365
2408
  id: string
2366
2409
  brand: { name: string; brandName: string }
2367
2410
  isVariantOf: {
@@ -2372,6 +2415,7 @@ export type ProductSummary_ProductFragment = {
2372
2415
  activeVariations: any | null
2373
2416
  slugsMap: any | null
2374
2417
  availableVariations: any | null
2418
+ allVariantProducts: Array<{ name: string; productID: string }> | null
2375
2419
  } | null
2376
2420
  }
2377
2421
  image: Array<{ url: string; alternateName: string }>
@@ -2435,6 +2479,7 @@ export type ProductDetailsFragment_ProductFragment = {
2435
2479
  activeVariations: any | null
2436
2480
  slugsMap: any | null
2437
2481
  availableVariations: any | null
2482
+ allVariantProducts: Array<{ name: string; productID: string }> | null
2438
2483
  } | null
2439
2484
  }
2440
2485
  image: Array<{ url: string; alternateName: string }>
@@ -2459,6 +2504,67 @@ export type ProductDetailsFragment_ProductFragment = {
2459
2504
  }>
2460
2505
  }
2461
2506
 
2507
+ export type ProductComparisonFragment_ProductFragment = {
2508
+ sku: string
2509
+ slug: string
2510
+ name: string
2511
+ gtin: string
2512
+ description: string
2513
+ unitMultiplier: number | null
2514
+ hasSpecifications: boolean | null
2515
+ id: string
2516
+ isVariantOf: {
2517
+ name: string
2518
+ productGroupID: string
2519
+ skuVariants: {
2520
+ activeVariations: any | null
2521
+ slugsMap: any | null
2522
+ availableVariations: any | null
2523
+ allVariantProducts: Array<{ name: string; productID: string }> | null
2524
+ } | null
2525
+ }
2526
+ image: Array<{ url: string; alternateName: string }>
2527
+ brand: { name: string }
2528
+ offers: {
2529
+ lowPrice: number
2530
+ lowPriceWithTaxes: number
2531
+ offers: Array<{
2532
+ availability: string
2533
+ price: number
2534
+ priceWithTaxes: number
2535
+ listPrice: number
2536
+ quantity: number
2537
+ listPriceWithTaxes: number
2538
+ seller: { identifier: string }
2539
+ }>
2540
+ }
2541
+ additionalProperty: Array<{
2542
+ propertyID: string
2543
+ name: string
2544
+ value: any
2545
+ valueReference: any
2546
+ }>
2547
+ advertisement: { adId: string; adResponseId: string } | null
2548
+ skuSpecifications: Array<{
2549
+ field: { id: string | null; name: string; originalName: string | null }
2550
+ values: Array<{
2551
+ name: string
2552
+ id: string | null
2553
+ fieldId: string | null
2554
+ originalName: string | null
2555
+ }>
2556
+ }>
2557
+ specificationGroups: Array<{
2558
+ name: string
2559
+ originalName: string
2560
+ specifications: Array<{
2561
+ name: string
2562
+ originalName: string
2563
+ values: Array<string>
2564
+ }>
2565
+ }>
2566
+ }
2567
+
2462
2568
  export type ProductSkuMatrixSidebarFragment_ProductFragment = {
2463
2569
  id: string
2464
2570
  isVariantOf: {
@@ -2592,6 +2698,7 @@ export type ServerProductQueryQuery = {
2592
2698
  activeVariations: any | null
2593
2699
  slugsMap: any | null
2594
2700
  availableVariations: any | null
2701
+ allVariantProducts: Array<{ name: string; productID: string }> | null
2595
2702
  } | null
2596
2703
  }
2597
2704
  additionalProperty: Array<{
@@ -3145,6 +3252,7 @@ export type ClientManyProductsQueryQuery = {
3145
3252
  name: string
3146
3253
  gtin: string
3147
3254
  unitMultiplier: number | null
3255
+ hasSpecifications: boolean | null
3148
3256
  id: string
3149
3257
  brand: { name: string; brandName: string }
3150
3258
  isVariantOf: {
@@ -3155,6 +3263,10 @@ export type ClientManyProductsQueryQuery = {
3155
3263
  activeVariations: any | null
3156
3264
  slugsMap: any | null
3157
3265
  availableVariations: any | null
3266
+ allVariantProducts: Array<{
3267
+ name: string
3268
+ productID: string
3269
+ }> | null
3158
3270
  } | null
3159
3271
  }
3160
3272
  image: Array<{ url: string; alternateName: string }>
@@ -3249,6 +3361,7 @@ export type ClientProductQueryQuery = {
3249
3361
  activeVariations: any | null
3250
3362
  slugsMap: any | null
3251
3363
  availableVariations: any | null
3364
+ allVariantProducts: Array<{ name: string; productID: string }> | null
3252
3365
  } | null
3253
3366
  }
3254
3367
  image: Array<{ url: string; alternateName: string }>
@@ -3274,6 +3387,73 @@ export type ClientProductQueryQuery = {
3274
3387
  }
3275
3388
  }
3276
3389
 
3390
+ export type ClientManyProductsSelectedQueryQueryVariables = Exact<{
3391
+ productIds: Array<Scalars['String']['input']> | Scalars['String']['input']
3392
+ }>
3393
+
3394
+ export type ClientManyProductsSelectedQueryQuery = {
3395
+ products: Array<{
3396
+ sku: string
3397
+ slug: string
3398
+ name: string
3399
+ gtin: string
3400
+ description: string
3401
+ unitMultiplier: number | null
3402
+ hasSpecifications: boolean | null
3403
+ id: string
3404
+ isVariantOf: {
3405
+ name: string
3406
+ productGroupID: string
3407
+ skuVariants: {
3408
+ activeVariations: any | null
3409
+ slugsMap: any | null
3410
+ availableVariations: any | null
3411
+ allVariantProducts: Array<{ name: string; productID: string }> | null
3412
+ } | null
3413
+ }
3414
+ image: Array<{ url: string; alternateName: string }>
3415
+ brand: { name: string }
3416
+ offers: {
3417
+ lowPrice: number
3418
+ lowPriceWithTaxes: number
3419
+ offers: Array<{
3420
+ availability: string
3421
+ price: number
3422
+ priceWithTaxes: number
3423
+ listPrice: number
3424
+ quantity: number
3425
+ listPriceWithTaxes: number
3426
+ seller: { identifier: string }
3427
+ }>
3428
+ }
3429
+ additionalProperty: Array<{
3430
+ propertyID: string
3431
+ name: string
3432
+ value: any
3433
+ valueReference: any
3434
+ }>
3435
+ advertisement: { adId: string; adResponseId: string } | null
3436
+ skuSpecifications: Array<{
3437
+ field: { id: string | null; name: string; originalName: string | null }
3438
+ values: Array<{
3439
+ name: string
3440
+ id: string | null
3441
+ fieldId: string | null
3442
+ originalName: string | null
3443
+ }>
3444
+ }>
3445
+ specificationGroups: Array<{
3446
+ name: string
3447
+ originalName: string
3448
+ specifications: Array<{
3449
+ name: string
3450
+ originalName: string
3451
+ values: Array<string>
3452
+ }>
3453
+ }>
3454
+ }>
3455
+ }
3456
+
3277
3457
  export type ClientProfileQueryQueryVariables = Exact<{
3278
3458
  id: Scalars['String']['input']
3279
3459
  }>
@@ -3304,6 +3484,7 @@ export type ClientSearchSuggestionsQueryQuery = {
3304
3484
  name: string
3305
3485
  gtin: string
3306
3486
  unitMultiplier: number | null
3487
+ hasSpecifications: boolean | null
3307
3488
  id: string
3308
3489
  brand: { name: string; brandName: string }
3309
3490
  isVariantOf: {
@@ -3314,6 +3495,10 @@ export type ClientSearchSuggestionsQueryQuery = {
3314
3495
  activeVariations: any | null
3315
3496
  slugsMap: any | null
3316
3497
  availableVariations: any | null
3498
+ allVariantProducts: Array<{
3499
+ name: string
3500
+ productID: string
3501
+ }> | null
3317
3502
  } | null
3318
3503
  }
3319
3504
  image: Array<{ url: string; alternateName: string }>
@@ -3457,6 +3642,7 @@ export type ServerManyProductsQueryQuery = {
3457
3642
  name: string
3458
3643
  gtin: string
3459
3644
  unitMultiplier: number | null
3645
+ hasSpecifications: boolean | null
3460
3646
  id: string
3461
3647
  brand: { name: string; brandName: string }
3462
3648
  isVariantOf: {
@@ -3467,6 +3653,10 @@ export type ServerManyProductsQueryQuery = {
3467
3653
  activeVariations: any | null
3468
3654
  slugsMap: any | null
3469
3655
  availableVariations: any | null
3656
+ allVariantProducts: Array<{
3657
+ name: string
3658
+ productID: string
3659
+ }> | null
3470
3660
  } | null
3471
3661
  }
3472
3662
  image: Array<{ url: string; alternateName: string }>
@@ -3565,6 +3755,21 @@ export const ProductSummary_ProductFragmentDoc = new TypedDocumentString(
3565
3755
  value
3566
3756
  valueReference
3567
3757
  }
3758
+ hasSpecifications
3759
+ unitMultiplier
3760
+ isVariantOf {
3761
+ productGroupID
3762
+ name
3763
+ skuVariants {
3764
+ activeVariations
3765
+ slugsMap
3766
+ availableVariations
3767
+ allVariantProducts {
3768
+ name
3769
+ productID
3770
+ }
3771
+ }
3772
+ }
3568
3773
  advertisement {
3569
3774
  adId
3570
3775
  adResponseId
@@ -3654,6 +3859,10 @@ export const ProductDetailsFragment_ProductFragmentDoc =
3654
3859
  activeVariations
3655
3860
  slugsMap
3656
3861
  availableVariations
3862
+ allVariantProducts {
3863
+ name
3864
+ productID
3865
+ }
3657
3866
  }
3658
3867
  }
3659
3868
  image {
@@ -3718,6 +3927,92 @@ export const ProductDetailsFragment_ProductFragmentDoc =
3718
3927
  ProductDetailsFragment_ProductFragment,
3719
3928
  unknown
3720
3929
  >
3930
+ export const ProductComparisonFragment_ProductFragmentDoc =
3931
+ new TypedDocumentString(
3932
+ `
3933
+ fragment ProductComparisonFragment_product on StoreProduct {
3934
+ id: productID
3935
+ sku
3936
+ slug
3937
+ name
3938
+ gtin
3939
+ description
3940
+ unitMultiplier
3941
+ isVariantOf {
3942
+ name
3943
+ productGroupID
3944
+ skuVariants {
3945
+ activeVariations
3946
+ slugsMap
3947
+ availableVariations
3948
+ allVariantProducts {
3949
+ name
3950
+ productID
3951
+ }
3952
+ }
3953
+ }
3954
+ image {
3955
+ url
3956
+ alternateName
3957
+ }
3958
+ brand {
3959
+ name
3960
+ }
3961
+ offers {
3962
+ lowPrice
3963
+ lowPriceWithTaxes
3964
+ offers {
3965
+ availability
3966
+ price
3967
+ priceWithTaxes
3968
+ listPrice
3969
+ quantity
3970
+ listPriceWithTaxes
3971
+ seller {
3972
+ identifier
3973
+ }
3974
+ }
3975
+ }
3976
+ additionalProperty {
3977
+ propertyID
3978
+ name
3979
+ value
3980
+ valueReference
3981
+ }
3982
+ advertisement {
3983
+ adId
3984
+ adResponseId
3985
+ }
3986
+ hasSpecifications
3987
+ skuSpecifications {
3988
+ field {
3989
+ id
3990
+ name
3991
+ originalName
3992
+ }
3993
+ values {
3994
+ name
3995
+ id
3996
+ fieldId
3997
+ originalName
3998
+ }
3999
+ }
4000
+ specificationGroups {
4001
+ name
4002
+ originalName
4003
+ specifications {
4004
+ name
4005
+ originalName
4006
+ values
4007
+ }
4008
+ }
4009
+ }
4010
+ `,
4011
+ { fragmentName: 'ProductComparisonFragment_product' }
4012
+ ) as unknown as TypedDocumentString<
4013
+ ProductComparisonFragment_ProductFragment,
4014
+ unknown
4015
+ >
3721
4016
  export const ProductSkuMatrixSidebarFragment_ProductFragmentDoc =
3722
4017
  new TypedDocumentString(
3723
4018
  `
@@ -3985,7 +4280,7 @@ export const ServerCollectionPageQueryDocument = {
3985
4280
  export const ServerProductQueryDocument = {
3986
4281
  __meta__: {
3987
4282
  operationName: 'ServerProductQuery',
3988
- operationHash: '46103bee661405bde706d72126fdbf9b0a0c9e6e',
4283
+ operationHash: 'e855903879c6504e90269e6e010549bc6de933eb',
3989
4284
  },
3990
4285
  } as unknown as TypedDocumentString<
3991
4286
  ServerProductQueryQuery,
@@ -4111,7 +4406,7 @@ export const ClientAllVariantProductsQueryDocument = {
4111
4406
  export const ClientManyProductsQueryDocument = {
4112
4407
  __meta__: {
4113
4408
  operationName: 'ClientManyProductsQuery',
4114
- operationHash: '1adc93c70f16173540c50f725ee09a2d67cb85ab',
4409
+ operationHash: 'a4d0dbbeaafcf323c0850f282d4beaa2969ababa',
4115
4410
  },
4116
4411
  } as unknown as TypedDocumentString<
4117
4412
  ClientManyProductsQueryQuery,
@@ -4129,12 +4424,21 @@ export const ClientProductGalleryQueryDocument = {
4129
4424
  export const ClientProductQueryDocument = {
4130
4425
  __meta__: {
4131
4426
  operationName: 'ClientProductQuery',
4132
- operationHash: '7d121ef8d4dc99174e64e4429a9b977b8bbebed8',
4427
+ operationHash: '47aa22eb750cb2c529e5eeafb921bfeadb67db71',
4133
4428
  },
4134
4429
  } as unknown as TypedDocumentString<
4135
4430
  ClientProductQueryQuery,
4136
4431
  ClientProductQueryQueryVariables
4137
4432
  >
4433
+ export const ClientManyProductsSelectedQueryDocument = {
4434
+ __meta__: {
4435
+ operationName: 'ClientManyProductsSelectedQuery',
4436
+ operationHash: 'b668777678c137b8c7004297df4d8b8f2b29ee06',
4437
+ },
4438
+ } as unknown as TypedDocumentString<
4439
+ ClientManyProductsSelectedQueryQuery,
4440
+ ClientManyProductsSelectedQueryQueryVariables
4441
+ >
4138
4442
  export const ClientProfileQueryDocument = {
4139
4443
  __meta__: {
4140
4444
  operationName: 'ClientProfileQuery',
@@ -4147,7 +4451,7 @@ export const ClientProfileQueryDocument = {
4147
4451
  export const ClientSearchSuggestionsQueryDocument = {
4148
4452
  __meta__: {
4149
4453
  operationName: 'ClientSearchSuggestionsQuery',
4150
- operationHash: 'b548281d477a173be7b6960434604d69769a97e7',
4454
+ operationHash: '3df0026ed7d06f74ef470ecb6e4d2e7c70882451',
4151
4455
  },
4152
4456
  } as unknown as TypedDocumentString<
4153
4457
  ClientSearchSuggestionsQueryQuery,
@@ -4183,7 +4487,7 @@ export const ClientShippingSimulationQueryDocument = {
4183
4487
  export const ServerManyProductsQueryDocument = {
4184
4488
  __meta__: {
4185
4489
  operationName: 'ServerManyProductsQuery',
4186
- operationHash: '5c2181dde311ca80b72e0cc76ac0855d8aa8b51e',
4490
+ operationHash: '59ff9a09e138da0f0d5e7ab553c4889a6d4bc432',
4187
4491
  },
4188
4492
  } as unknown as TypedDocumentString<
4189
4493
  ServerManyProductsQueryQuery,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "47315a3cd26ddd9c7fa963778988464341b8193f": "query ServerAccountPageQuery { accountName }",
3
3
  "4b33c5c07f440dc7489e55619dc2211a13786e72": "fragment ServerCollectionPage on Query { collection(slug: $slug) { id } } query ServerCollectionPageQuery($slug: String!) { collection(slug: $slug) { breadcrumbList { itemListElement { item name position } } meta { selectedFacets { key value } } seo { description title } } ...ServerCollectionPage }",
4
- "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
+ "e855903879c6504e90269e6e010549bc6de933eb": "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 allVariantProducts { name productID } 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 }",
5
5
  "ba4e1865d9840cb386fa6d646a51f275cd991bfa": "query ServerOrderDetailsQuery($orderId: String!) { accountName userOrder(orderId: $orderId) { allowCancellation canProcessOrderAuthorization clientProfileData { corporateName email firstName isCorporate lastName phone } creationDate customFields { fields { name refId value } id type } deliveryOptionsData { contact { email name phone } deliveryOptions { address { addressId addressType city complement country entityId geoCoordinates neighborhood number postalCode receiverName reference state street versionId } deliveryChannel deliveryCompany deliveryWindow { endDateUtc price startDateUtc } friendlyDeliveryOptionName friendlyShippingEstimate items { id imageUrl name price quantity tax total uniqueId } pickupStoreInfo { additionalInfo address { addressId addressType city complement country entityId geoCoordinates neighborhood number postalCode receiverName reference state street versionId } dockId friendlyName isPickupStore } quantityOfDifferentItems selectedSla seller shippingEstimate shippingEstimateDate total } } orderId paymentData { transactions { isActive payments { bankIssuedInvoiceIdentificationNumber connectorResponses { authId } group id installments lastDigits paymentOrigin paymentSystemName redemptionCode referenceValue tid url value } } } ruleForAuthorization { dimensionId orderAuthorizationId rule { authorizationData { authorizers { authorizationDate email id type } requireAllApprovals } authorizedEmails doId id isUserAuthorized isUserNextAuthorizer name notification priority scoreInterval { accept deny } status timeout trigger { condition { conditionType description expression greatherThan lessThan } effect { description effectType funcPath } } } } shopperName { firstName lastName } status statusDescription storePreferencesData { currencyCode } totals { id name value } } }",
6
6
  "ee84ac3f5b58c5e1950a927a42c5c1dd6012fcc4": "query ServerListOrdersQuery($clientEmail: String, $dateFinal: String, $dateInitial: String, $page: Int, $perPage: Int, $status: [String], $text: String) { accountName listUserOrders( page: $page perPage: $perPage status: $status dateInitial: $dateInitial dateFinal: $dateFinal text: $text clientEmail: $clientEmail ) { list { ShippingEstimatedDate clientName creationDate currencyCode customFields { type value } items { description ean id price productId quantity refId seller sellingPrice } orderId status statusDescription totalValue } paging { currentPage pages perPage total } } }",
7
7
  "0ed4b5db8fed122d8418195d01fb91b30261d587": "query ServerProfileQuery { accountName accountProfile { email id name } }",
@@ -15,13 +15,14 @@
15
15
  "feb7005103a859e2bc8cf2360d568806fd88deba": "mutation SubscribeToNewsletter($data: IPersonNewsletter!) { subscribeToNewsletter(data: $data) { id } }",
16
16
  "dc912e7272e3d9f5ced206837df87f544d39d0a5": "query ClientProductCountQuery($term: String) { productCount(term: $term) { total } }",
17
17
  "4039e05f01a2fe449e20e8b82170d0ba94b1fbe9": "fragment ProductSKUMatrixSidebarFragment_product on StoreProduct { isVariantOf { name productGroupID skuVariants { activeVariations allVariantProducts { additionalProperty { name propertyID value valueReference } image { alternateName url } name offers { highPrice lowPrice lowPriceWithTaxes offerCount offers { availability itemCondition listPrice listPriceWithTaxes price priceCurrency priceValidUntil priceWithTaxes quantity sellingPrice } priceCurrency } sku } availableVariations slugsMap } } id: productID } query ClientAllVariantProductsQuery($locator: [IStoreSelectedFacet!]!) { product(locator: $locator) { ...ProductSKUMatrixSidebarFragment_product } }",
18
- "1adc93c70f16173540c50f725ee09a2d67cb85ab": "fragment ClientManyProducts on Query { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets sponsoredCount: $sponsoredCount ) { 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 skuVariants { activeVariations allVariantsByName availableVariations slugsMap } } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price priceWithTaxes quantity seller { identifier } } } id: productID sku slug unitMultiplier } query ClientManyProductsQuery($after: String, $first: Int!, $selectedFacets: [IStoreSelectedFacet!]!, $sort: StoreSort!, $sponsoredCount: Int, $term: String!) { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets sponsoredCount: $sponsoredCount ) { products { edges { node { ...ProductSummary_product } } pageInfo { totalCount } } } ...ClientManyProducts }",
18
+ "a4d0dbbeaafcf323c0850f282d4beaa2969ababa": "fragment ClientManyProducts on Query { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets sponsoredCount: $sponsoredCount ) { products { pageInfo { totalCount } } } } fragment ProductSummary_product on StoreProduct { additionalProperty { name propertyID value valueReference } advertisement { adId adResponseId } brand { brandName: name } brand { name } gtin hasSpecifications image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations allVariantsByName availableVariations slugsMap } } isVariantOf { name productGroupID skuVariants { activeVariations allVariantProducts { name productID } availableVariations slugsMap } } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price priceWithTaxes quantity seller { identifier } } } id: productID sku slug unitMultiplier unitMultiplier } query ClientManyProductsQuery($after: String, $first: Int!, $selectedFacets: [IStoreSelectedFacet!]!, $sort: StoreSort!, $sponsoredCount: Int, $term: String!) { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets sponsoredCount: $sponsoredCount ) { products { edges { node { ...ProductSummary_product } } pageInfo { totalCount } } } ...ClientManyProducts }",
19
19
  "bfc40da32b60f9404a4adb96b0856e3fbb04b076": "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 { fuzzy 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 }",
20
- "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 }",
20
+ "47aa22eb750cb2c529e5eeafb921bfeadb67db71": "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 allVariantProducts { name productID } 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 }",
21
+ "b668777678c137b8c7004297df4d8b8f2b29ee06": "fragment ProductComparisonFragment_product on StoreProduct { additionalProperty { name propertyID value valueReference } advertisement { adId adResponseId } brand { name } description gtin hasSpecifications image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations allVariantProducts { name productID } availableVariations slugsMap } } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price priceWithTaxes quantity seller { identifier } } } id: productID sku skuSpecifications { field { id name originalName } values { fieldId id name originalName } } slug specificationGroups { name originalName specifications { name originalName values } } unitMultiplier } query ClientManyProductsSelectedQuery($productIds: [String!]!) { products(productIds: $productIds) { ...ProductComparisonFragment_product } }",
21
22
  "34ea14c0d4a57ddf9bc11e4be0cd2b5a6506d3d4": "query ClientProfileQuery($id: String!) { profile(id: $id) { addresses { city country geoCoordinate postalCode } } }",
22
- "b548281d477a173be7b6960434604d69769a97e7": "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 skuVariants { activeVariations allVariantsByName availableVariations slugsMap } } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price priceWithTaxes quantity seller { identifier } } } id: productID sku slug unitMultiplier } fragment SearchEvent_metadata on SearchMetadata { fuzzy 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 }",
23
+ "3df0026ed7d06f74ef470ecb6e4d2e7c70882451": "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 hasSpecifications image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations allVariantsByName availableVariations slugsMap } } isVariantOf { name productGroupID skuVariants { activeVariations allVariantProducts { name productID } availableVariations slugsMap } } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price priceWithTaxes quantity seller { identifier } } } id: productID sku slug unitMultiplier unitMultiplier } fragment SearchEvent_metadata on SearchMetadata { fuzzy 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 }",
23
24
  "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 }",
24
25
  "5da2700f5a69ee8835b1cb6c69e14f4b6e12c4df": "mutation ValidateSession($search: String!, $session: IStoreSession!) { validateSession(session: $session, search: $search) { addressType b2b { customerId firstName isRepresentative lastName savedPostalCode unitId unitName userEmail userName } channel city country currency { code symbol } deliveryMode { deliveryChannel deliveryMethod deliveryWindow { endDate startDate } } geoCoordinates { latitude longitude } locale marketingData { utmCampaign utmMedium utmSource utmiCampaign utmiPage utmiPart } person { email familyName givenName id } postalCode refreshAfter } }",
25
26
  "c35bad22f67f3eb34fea52bb49efa6b1da6b728d": "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 deliveryChannel localizedEstimates price shippingEstimate } } } ...ClientShippingSimulation }",
26
- "5c2181dde311ca80b72e0cc76ac0855d8aa8b51e": "fragment ClientManyProducts on Query { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets sponsoredCount: $sponsoredCount ) { 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 skuVariants { activeVariations allVariantsByName availableVariations slugsMap } } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price priceWithTaxes quantity seller { identifier } } } id: productID sku slug unitMultiplier } fragment SearchEvent_metadata on SearchMetadata { fuzzy isTermMisspelled logicalOperator } query ServerManyProductsQuery($after: String, $first: Int!, $selectedFacets: [IStoreSelectedFacet!]!, $sort: StoreSort!, $sponsoredCount: Int, $term: String!) { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets sponsoredCount: $sponsoredCount ) { metadata { ...SearchEvent_metadata } products { edges { node { ...ProductSummary_product } } pageInfo { totalCount } } } ...ClientManyProducts }"
27
+ "59ff9a09e138da0f0d5e7ab553c4889a6d4bc432": "fragment ClientManyProducts on Query { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets sponsoredCount: $sponsoredCount ) { products { pageInfo { totalCount } } } } fragment ProductSummary_product on StoreProduct { additionalProperty { name propertyID value valueReference } advertisement { adId adResponseId } brand { brandName: name } brand { name } gtin hasSpecifications image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations allVariantsByName availableVariations slugsMap } } isVariantOf { name productGroupID skuVariants { activeVariations allVariantProducts { name productID } availableVariations slugsMap } } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price priceWithTaxes quantity seller { identifier } } } id: productID sku slug unitMultiplier unitMultiplier } fragment SearchEvent_metadata on SearchMetadata { fuzzy isTermMisspelled logicalOperator } query ServerManyProductsQuery($after: String, $first: Int!, $selectedFacets: [IStoreSelectedFacet!]!, $sort: StoreSort!, $sponsoredCount: Int, $term: String!) { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets sponsoredCount: $sponsoredCount ) { metadata { ...SearchEvent_metadata } products { edges { node { ...ProductSummary_product } } pageInfo { totalCount } } } ...ClientManyProducts }"
27
28
  }
@@ -692,6 +692,42 @@ type StoreProduct {
692
692
  unitMultiplier: Float
693
693
  """Advertisement information about the product."""
694
694
  advertisement: Advertisement
695
+ """Indicates whether the product has specifications."""
696
+ hasSpecifications: Boolean
697
+ """Indicate the specifications of a product."""
698
+ skuSpecifications: [SkuSpecification!]!
699
+ """Indicate the specifications of a group of SKUs."""
700
+ specificationGroups: [SpecificationGroup!]!
701
+ }
702
+
703
+ type SkuSpecification {
704
+ field: SKUSpecificationField!
705
+ values: [SKUSpecificationValue!]!
706
+ }
707
+
708
+ type SKUSpecificationValue {
709
+ name: String!
710
+ id: String
711
+ fieldId: String
712
+ originalName: String
713
+ }
714
+
715
+ type SKUSpecificationField {
716
+ name: String!
717
+ originalName: String
718
+ id: String
719
+ }
720
+
721
+ type SpecificationGroup {
722
+ name: String!
723
+ originalName: String!
724
+ specifications: [Specification!]!
725
+ }
726
+
727
+ type Specification {
728
+ name: String!
729
+ originalName: String!
730
+ values: [String!]!
695
731
  }
696
732
 
697
733
  """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."""
@@ -932,6 +968,8 @@ type Query {
932
968
  """Product pagination argument, indicating the cursor corresponding with the item after which the items should be fetched."""
933
969
  after: String
934
970
  ): StoreProductConnection! @cacheControl(scope: "public", sMaxAge: 120, staleWhileRevalidate: 3600)
971
+ """Returns information about selected products."""
972
+ products(productIds: [String!]!): [StoreProduct!]! @cacheControl(scope: "public", sMaxAge: 120, staleWhileRevalidate: 3600)
935
973
  """Returns information about all collections."""
936
974
  allCollections(
937
975
  """Collection pagination argument, indicating how many items should be returned from the complete result list."""
@@ -1466,7 +1504,7 @@ type SkuVariants {
1466
1504
  considered the dominant one.
1467
1505
  """
1468
1506
  availableVariations(dominantVariantName: String): FormattedVariants
1469
- """All possible variant combinations of the current product. It also includes the data for each variant."""
1507
+ """All available options for each SKU variant property, indexed by their name."""
1470
1508
  allVariantProducts: [StoreProduct!]
1471
1509
  }
1472
1510
 
package/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [3.78.0](https://github.com/vtex/faststore/compare/v3.77.3...v3.78.0) (2025-09-02)
7
+
8
+ ### Features
9
+
10
+ - Product Comparison ([#3000](https://github.com/vtex/faststore/issues/3000)) ([2150bee](https://github.com/vtex/faststore/commit/2150bee82e570205421859e14de8416d5e34c545))
11
+
6
12
  ## [3.77.3](https://github.com/vtex/faststore/compare/v3.77.2...v3.77.3) (2025-09-01)
7
13
 
8
14
  ### Bug Fixes