@faststore/core 3.41.9 → 3.43.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 (142) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +36 -36
  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 +26 -20
  12. package/.next/routes-manifest.json +1 -1
  13. package/.next/server/chunks/1454.js +1 -0
  14. package/.next/server/chunks/1506.js +1 -1
  15. package/.next/server/chunks/3684.js +1 -1
  16. package/.next/server/chunks/416.js +1 -0
  17. package/.next/server/chunks/4289.js +13 -5
  18. package/.next/server/chunks/4746.js +1 -1
  19. package/.next/server/chunks/4816.js +1 -0
  20. package/.next/server/chunks/6030.js +1 -0
  21. package/.next/server/chunks/6076.js +1 -1
  22. package/.next/server/chunks/6594.js +1 -0
  23. package/.next/server/chunks/{8112.js → 6968.js} +2 -2
  24. package/.next/server/chunks/6999.js +1 -0
  25. package/.next/server/chunks/7371.js +1 -0
  26. package/.next/server/chunks/831.js +1 -0
  27. package/.next/server/chunks/8482.js +1 -0
  28. package/.next/server/chunks/8646.js +1 -1
  29. package/.next/server/chunks/UIBannerText.js +1 -1
  30. package/.next/server/chunks/UISKUMatrixSidebar.js +1 -0
  31. package/.next/server/middleware-build-manifest.js +1 -1
  32. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  33. package/.next/server/pages/404.js +1 -1
  34. package/.next/server/pages/404.js.nft.json +1 -1
  35. package/.next/server/pages/500.js +1 -1
  36. package/.next/server/pages/500.js.nft.json +1 -1
  37. package/.next/server/pages/[...slug].js +1 -1
  38. package/.next/server/pages/[...slug].js.nft.json +1 -1
  39. package/.next/server/pages/[slug]/p.js +1 -1
  40. package/.next/server/pages/[slug]/p.js.nft.json +1 -1
  41. package/.next/server/pages/_app.js.nft.json +1 -1
  42. package/.next/server/pages/_document.js.nft.json +1 -1
  43. package/.next/server/pages/_error.js.nft.json +1 -1
  44. package/.next/server/pages/account/profile.js +1 -1
  45. package/.next/server/pages/account/profile.js.nft.json +1 -1
  46. package/.next/server/pages/account.js.nft.json +1 -1
  47. package/.next/server/pages/api/graphql.js +1 -1
  48. package/.next/server/pages/api/graphql.js.nft.json +1 -1
  49. package/.next/server/pages/api/health/live.js.nft.json +1 -1
  50. package/.next/server/pages/api/health/ready.js.nft.json +1 -1
  51. package/.next/server/pages/api/preview.js +1 -1
  52. package/.next/server/pages/api/preview.js.nft.json +1 -1
  53. package/.next/server/pages/checkout.js +1 -1
  54. package/.next/server/pages/checkout.js.nft.json +1 -1
  55. package/.next/server/pages/en-US/404.html +2 -2
  56. package/.next/server/pages/en-US/404.json +1 -1
  57. package/.next/server/pages/en-US/500.html +2 -2
  58. package/.next/server/pages/en-US/500.json +1 -1
  59. package/.next/server/pages/en-US/checkout.html +2 -2
  60. package/.next/server/pages/en-US/checkout.json +1 -1
  61. package/.next/server/pages/en-US/login.html +2 -2
  62. package/.next/server/pages/en-US/login.json +1 -1
  63. package/.next/server/pages/en-US/s.html +2 -2
  64. package/.next/server/pages/en-US/s.json +1 -1
  65. package/.next/server/pages/en-US.html +2 -2
  66. package/.next/server/pages/en-US.json +1 -1
  67. package/.next/server/pages/index.js +1 -1
  68. package/.next/server/pages/index.js.nft.json +1 -1
  69. package/.next/server/pages/login.js +1 -1
  70. package/.next/server/pages/login.js.nft.json +1 -1
  71. package/.next/server/pages/s.js +1 -1
  72. package/.next/server/pages/s.js.nft.json +1 -1
  73. package/.next/server/pages-manifest.json +1 -1
  74. package/.next/server/webpack-runtime.js +1 -1
  75. package/.next/static/chunks/417.c39c1c5e5ef57b4a.js +1 -0
  76. package/.next/static/chunks/4865.3e2ae9feb511c870.js +1 -0
  77. package/.next/static/chunks/630.13d3dd939b789798.js +6 -0
  78. package/.next/static/chunks/6335-5870fc075bf96b86.js +1 -0
  79. package/.next/static/chunks/{7498-49bf89838314b503.js → 7498-415859c993f5002b.js} +1 -1
  80. package/.next/static/chunks/8827.179b49f8ab3afe48.js +1 -0
  81. package/.next/static/chunks/UISKUMatrixSidebar.c68540bda6d40e13.js +1 -0
  82. package/.next/static/chunks/pages/[...slug]-2cfb2b1b8ee3b7a9.js +1 -0
  83. package/.next/static/chunks/pages/[slug]/p-3b513ae37c648620.js +1 -0
  84. package/.next/static/chunks/pages/{_app-0f16b6b5d7dfab2a.js → _app-f02182ccd58f2781.js} +1 -1
  85. package/.next/static/chunks/webpack-0dd5a14ceff64065.js +1 -0
  86. package/.next/static/css/31fb64e064998460.css +1 -0
  87. package/.next/static/{YZbl2rCQaXL1-tNjqawX_ → f5jWOXDXh3GdBy9EK8IDc}/_buildManifest.js +1 -1
  88. package/.next/trace +111 -109
  89. package/.turbo/turbo-build.log +18 -24
  90. package/.turbo/turbo-test.log +5 -5
  91. package/@generated/gql.ts +2 -2
  92. package/@generated/graphql.ts +59 -7
  93. package/@generated/persisted-documents.json +3 -3
  94. package/CHANGELOG.md +12 -0
  95. package/cms/faststore/sections.json +85 -0
  96. package/discovery.config.default.js +6 -0
  97. package/package.json +5 -4
  98. package/src/components/cms/GlobalSections.tsx +13 -9
  99. package/src/components/navigation/Navbar/Navbar.tsx +2 -0
  100. package/src/components/product/ProductCard/ProductCard.tsx +8 -0
  101. package/src/components/search/SearchDropdown/SearchDropdown.tsx +14 -1
  102. package/src/components/search/SearchInput/SearchInput.tsx +17 -2
  103. package/src/components/search/SearchProductItem/SearchProductItem.tsx +120 -1
  104. package/src/components/sections/Navbar/DefaultComponents.ts +7 -0
  105. package/src/components/sections/Navbar/Navbar.tsx +16 -0
  106. package/src/components/sections/Navbar/section.module.scss +11 -0
  107. package/src/components/templates/LandingPage/LandingPage.tsx +22 -18
  108. package/src/components/templates/ProductListingPage/ProductListing.tsx +6 -1
  109. package/src/components/ui/SKUMatrix/SKUMatrixSidebar.tsx +12 -4
  110. package/src/experimental/searchServerSideFunctions/getServerSideProps.ts +8 -5
  111. package/src/experimental/searchServerSideFunctions/getStaticProps.ts +9 -7
  112. package/src/pages/404.tsx +6 -5
  113. package/src/pages/500.tsx +6 -5
  114. package/src/pages/[...slug].tsx +11 -4
  115. package/src/pages/[slug]/p.tsx +14 -5
  116. package/src/pages/api/preview.ts +43 -18
  117. package/src/pages/index.tsx +9 -7
  118. package/src/pages/login.tsx +6 -5
  119. package/src/sdk/cart/useBuyButton.ts +7 -2
  120. package/src/sdk/error/MissingContentError/MissingContentError.ts +6 -4
  121. package/src/sdk/error/MultipleContentError/MultipleContentError.ts +6 -4
  122. package/src/server/cms/index.ts +1 -2
  123. package/src/server/content/service.ts +227 -0
  124. package/src/server/content/types.ts +26 -0
  125. package/src/server/content/utils.ts +8 -0
  126. package/src/typings/overrides.ts +1 -0
  127. package/.next/server/chunks/5071.js +0 -1
  128. package/.next/server/chunks/5284.js +0 -1
  129. package/.next/server/chunks/6198.js +0 -1
  130. package/.next/server/chunks/804.js +0 -1
  131. package/.next/server/chunks/9019.js +0 -1
  132. package/.next/server/chunks/9068.js +0 -1
  133. package/.next/static/chunks/1036.27f5244aaf7d0915.js +0 -1
  134. package/.next/static/chunks/417.08663bd4b5809548.js +0 -1
  135. package/.next/static/chunks/485.a35fab0c7c75a11b.js +0 -1
  136. package/.next/static/chunks/4865.8b1970610c412187.js +0 -1
  137. package/.next/static/chunks/6335-7aa183582a89bc0e.js +0 -1
  138. package/.next/static/chunks/pages/[...slug]-f4fd6c8d7dc53f8f.js +0 -1
  139. package/.next/static/chunks/pages/[slug]/p-2e02254149cef33d.js +0 -1
  140. package/.next/static/chunks/webpack-f0ee32c953ec8952.js +0 -1
  141. package/.next/static/css/b0c0e0632c5d7f52.css +0 -1
  142. /package/.next/static/{YZbl2rCQaXL1-tNjqawX_ → f5jWOXDXh3GdBy9EK8IDc}/_ssgManifest.js +0 -0
@@ -1,23 +1,23 @@
1
1
 
2
- > @faststore/core@3.41.8 prebuild /home/runner/work/faststore/faststore/packages/core
2
+ > @faststore/core@3.42.0 prebuild /home/runner/work/faststore/faststore/packages/core
3
3
  > na run partytown && na run generate
4
4
 
5
5
 
6
- > @faststore/core@3.41.8 partytown /home/runner/work/faststore/faststore/packages/core
6
+ > @faststore/core@3.42.0 partytown /home/runner/work/faststore/faststore/packages/core
7
7
  > partytown copylib ./public/~partytown
8
8
 
9
9
  Partytown lib copied to: /home/runner/work/faststore/faststore/packages/core/public/~partytown
10
10
 
11
- > @faststore/core@3.41.8 generate /home/runner/work/faststore/faststore/packages/core
11
+ > @faststore/core@3.42.0 generate /home/runner/work/faststore/faststore/packages/core
12
12
  > na run generate:schema && na run generate:codegen && na run format:generated
13
13
 
14
14
 
15
- > @faststore/core@3.41.8 generate:schema /home/runner/work/faststore/faststore/packages/core
15
+ > @faststore/core@3.42.0 generate:schema /home/runner/work/faststore/faststore/packages/core
16
16
  > tsx src/server/generator/generateGraphQLSchemaFile.ts
17
17
 
18
18
  Schema GraphQL file generated successfully
19
19
 
20
- > @faststore/core@3.41.8 generate:codegen /home/runner/work/faststore/faststore/packages/core
20
+ > @faststore/core@3.42.0 generate:codegen /home/runner/work/faststore/faststore/packages/core
21
21
  > graphql-codegen
22
22
 
23
23
  [STARTED] Parse Configuration
@@ -37,11 +37,11 @@ Running lifecycle hook "afterStart" scripts...
37
37
  [CLI] Loading Documents
38
38
  [CLI] Generating output
39
39
 
40
- > @faststore/core@3.41.8 format:generated /home/runner/work/faststore/faststore/packages/core
40
+ > @faststore/core@3.42.0 format:generated /home/runner/work/faststore/faststore/packages/core
41
41
  > prettier --write "@generated/**/*.{ts,js,tsx,jsx,json}" --loglevel error
42
42
 
43
43
 
44
- > @faststore/core@3.41.8 build /home/runner/work/faststore/faststore/packages/core
44
+ > @faststore/core@3.42.0 build /home/runner/work/faststore/faststore/packages/core
45
45
  > next build
46
46
 
47
47
  ⚠ No build cache found. Please configure build caching for faster rebuilds. Read more: https://nextjs.org/docs/messages/no-cache
@@ -58,16 +58,10 @@ https://nextjs.org/telemetry
58
58
  ✓ Compiled successfully
59
59
  Collecting page data ...
60
60
  Generating static pages (0/6) ...
61
- RegionPopover not found. Add a new component for this section or remove it from the CMS
62
61
 
63
62
  Generating static pages (1/6)
64
63
  Warning: Dynamic Content not found for the page: home. Refer to the Dynamic Content documentation at https://developers.vtex.com/docs/guides/faststore/dynamic-content-overview for mapping the page and the corresponding data-fetching function.
65
- RegionPopover not found. Add a new component for this section or remove it from the CMS
66
64
 
67
65
  Generating static pages (2/6)
68
- RegionPopover not found. Add a new component for this section or remove it from the CMS
69
- RegionPopover not found. Add a new component for this section or remove it from the CMS
70
66
 
71
67
  Generating static pages (4/6)
72
- RegionPopover not found. Add a new component for this section or remove it from the CMS
73
- RegionPopover not found. Add a new component for this section or remove it from the CMS
74
68
 
75
69
  ✓ Generating static pages (6/6)
76
70
  Finalizing page optimization ...
77
71
  Collecting build traces ...
@@ -75,29 +69,29 @@ RegionPopover not found. Add a new component for this section or remove it from
75
69
  Route (pages) Size First Load JS
76
70
  ┌ ● / 3.86 kB 124 kB
77
71
  ├ └ css/b1806cbafd0c1f81.css 3.06 kB
78
- ├ /_app 0 B 92.4 kB
79
- ├ ● /[...slug] 2.34 kB 133 kB
80
- ├ ● /[slug]/p 35.6 kB 156 kB
72
+ ├ /_app 0 B 92.5 kB
73
+ ├ ● /[...slug] 2.44 kB 133 kB
74
+ ├ ● /[slug]/p 35.7 kB 156 kB
81
75
  ├ ├ css/a3ca6a9b63f657be.css 5.75 kB
82
76
  ├ ├ css/62a5153ac7061286.css 6.11 kB
83
77
  ├ └ css/b5bf49598c8f8b66.css 16.1 kB
84
78
  ├ ○ /404 1.48 kB 122 kB
85
79
  ├ ● /500 1.48 kB 122 kB
86
- ├ λ /account 240 B 92.6 kB
80
+ ├ λ /account 240 B 92.8 kB
87
81
  ├ λ /account/profile 1.34 kB 122 kB
88
82
  ├ └ css/249b9deaabc0d32d.css 2.51 kB
89
- ├ λ /api/graphql 0 B 92.4 kB
90
- ├ λ /api/health/live 0 B 92.4 kB
91
- ├ λ /api/health/ready 0 B 92.4 kB
92
- ├ λ /api/preview 0 B 92.4 kB
83
+ ├ λ /api/graphql 0 B 92.5 kB
84
+ ├ λ /api/health/live 0 B 92.5 kB
85
+ ├ λ /api/health/ready 0 B 92.5 kB
86
+ ├ λ /api/preview 0 B 92.5 kB
93
87
  ├ ● /checkout 694 B 121 kB
94
88
  ├ ● /login 1.59 kB 122 kB
95
89
  └ ● /s 3.17 kB 134 kB
96
- + First Load JS shared by all 95.9 kB
90
+ + First Load JS shared by all 96 kB
97
91
  ├ chunks/framework-807b0f81cbc129f0.js 45.4 kB
98
92
  ├ chunks/main-5569625b3fdd6741.js 33.1 kB
99
- ├ chunks/pages/_app-0f16b6b5d7dfab2a.js 10.4 kB
100
- ├ chunks/webpack-f0ee32c953ec8952.js 3.58 kB
93
+ ├ chunks/pages/_app-f02182ccd58f2781.js 10.4 kB
94
+ ├ chunks/webpack-0dd5a14ceff64065.js 3.68 kB
101
95
  └ css/0a57ee6c7a57788c.css 3.49 kB
102
96
 
103
97
  λ (Server) server-side renders at runtime (uses getInitialProps or getServerSideProps)
@@ -1,14 +1,14 @@
1
1
 
2
- > @faststore/core@3.41.8 test /home/runner/work/faststore/faststore/packages/core
2
+ > @faststore/core@3.42.0 test /home/runner/work/faststore/faststore/packages/core
3
3
  > jest
4
4
 
5
- PASS test/server/cms/global.test.ts (23.387 s)
6
- PASS test/utils/multipleTemplates.test.ts (23.848 s)
5
+ PASS test/server/cms/global.test.ts (24.058 s)
6
+ PASS test/utils/multipleTemplates.test.ts (24.28 s)
7
7
  PASS test/server/cms/index.test.ts
8
- PASS test/server/index.test.ts (27.937 s)
8
+ PASS test/server/index.test.ts (29.435 s)
9
9
 
10
10
  Test Suites: 4 passed, 4 total
11
11
  Tests: 22 passed, 22 total
12
12
  Snapshots: 0 total
13
- Time: 29.291 s
13
+ Time: 30.555 s
14
14
  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 advertisement {\n adId\n adResponseId\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\t\tunitMultiplier\n\n isVariantOf {\n productGroupID\n name\n\t\t\tskuVariants {\n\t\t\t\tallVariantsByName\n\t\t\t\tactiveVariations\n\t\t\t\tslugsMap\n\t\t\t\tavailableVariations\n\t\t\t}\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\t\t\t\tpriceWithTaxes\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,
@@ -68,7 +68,7 @@ const documents = {
68
68
  * The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
69
69
  */
70
70
  export function gql(
71
- 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'
71
+ 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\t\tunitMultiplier\n\n isVariantOf {\n productGroupID\n name\n\t\t\tskuVariants {\n\t\t\t\tallVariantsByName\n\t\t\t\tactiveVariations\n\t\t\t\tslugsMap\n\t\t\t\tavailableVariations\n\t\t\t}\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\t\t\t\tpriceWithTaxes\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'
72
72
  ): typeof import('./graphql').ProductSummary_ProductFragmentDoc
73
73
  /**
74
74
  * The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
@@ -1199,9 +1199,19 @@ export type ProductSummary_ProductFragment = {
1199
1199
  sku: string
1200
1200
  name: string
1201
1201
  gtin: string
1202
+ unitMultiplier: number | null
1202
1203
  id: string
1203
1204
  brand: { name: string; brandName: string }
1204
- isVariantOf: { productGroupID: string; name: string }
1205
+ isVariantOf: {
1206
+ productGroupID: string
1207
+ name: string
1208
+ skuVariants: {
1209
+ allVariantsByName: any | null
1210
+ activeVariations: any | null
1211
+ slugsMap: any | null
1212
+ availableVariations: any | null
1213
+ } | null
1214
+ }
1205
1215
  image: Array<{ url: string; alternateName: string }>
1206
1216
  offers: {
1207
1217
  lowPrice: number
@@ -1211,6 +1221,7 @@ export type ProductSummary_ProductFragment = {
1211
1221
  price: number
1212
1222
  listPrice: number
1213
1223
  listPriceWithTaxes: number
1224
+ priceWithTaxes: number
1214
1225
  quantity: number
1215
1226
  seller: { identifier: string }
1216
1227
  }>
@@ -1604,9 +1615,19 @@ export type ClientManyProductsQueryQuery = {
1604
1615
  sku: string
1605
1616
  name: string
1606
1617
  gtin: string
1618
+ unitMultiplier: number | null
1607
1619
  id: string
1608
1620
  brand: { name: string; brandName: string }
1609
- isVariantOf: { productGroupID: string; name: string }
1621
+ isVariantOf: {
1622
+ productGroupID: string
1623
+ name: string
1624
+ skuVariants: {
1625
+ allVariantsByName: any | null
1626
+ activeVariations: any | null
1627
+ slugsMap: any | null
1628
+ availableVariations: any | null
1629
+ } | null
1630
+ }
1610
1631
  image: Array<{ url: string; alternateName: string }>
1611
1632
  offers: {
1612
1633
  lowPrice: number
@@ -1616,6 +1637,7 @@ export type ClientManyProductsQueryQuery = {
1616
1637
  price: number
1617
1638
  listPrice: number
1618
1639
  listPriceWithTaxes: number
1640
+ priceWithTaxes: number
1619
1641
  quantity: number
1620
1642
  seller: { identifier: string }
1621
1643
  }>
@@ -1737,9 +1759,19 @@ export type ClientSearchSuggestionsQueryQuery = {
1737
1759
  sku: string
1738
1760
  name: string
1739
1761
  gtin: string
1762
+ unitMultiplier: number | null
1740
1763
  id: string
1741
1764
  brand: { name: string; brandName: string }
1742
- isVariantOf: { productGroupID: string; name: string }
1765
+ isVariantOf: {
1766
+ productGroupID: string
1767
+ name: string
1768
+ skuVariants: {
1769
+ allVariantsByName: any | null
1770
+ activeVariations: any | null
1771
+ slugsMap: any | null
1772
+ availableVariations: any | null
1773
+ } | null
1774
+ }
1743
1775
  image: Array<{ url: string; alternateName: string }>
1744
1776
  offers: {
1745
1777
  lowPrice: number
@@ -1749,6 +1781,7 @@ export type ClientSearchSuggestionsQueryQuery = {
1749
1781
  price: number
1750
1782
  listPrice: number
1751
1783
  listPriceWithTaxes: number
1784
+ priceWithTaxes: number
1752
1785
  quantity: number
1753
1786
  seller: { identifier: string }
1754
1787
  }>
@@ -1867,9 +1900,19 @@ export type ServerManyProductsQueryQuery = {
1867
1900
  sku: string
1868
1901
  name: string
1869
1902
  gtin: string
1903
+ unitMultiplier: number | null
1870
1904
  id: string
1871
1905
  brand: { name: string; brandName: string }
1872
- isVariantOf: { productGroupID: string; name: string }
1906
+ isVariantOf: {
1907
+ productGroupID: string
1908
+ name: string
1909
+ skuVariants: {
1910
+ allVariantsByName: any | null
1911
+ activeVariations: any | null
1912
+ slugsMap: any | null
1913
+ availableVariations: any | null
1914
+ } | null
1915
+ }
1873
1916
  image: Array<{ url: string; alternateName: string }>
1874
1917
  offers: {
1875
1918
  lowPrice: number
@@ -1879,6 +1922,7 @@ export type ServerManyProductsQueryQuery = {
1879
1922
  price: number
1880
1923
  listPrice: number
1881
1924
  listPriceWithTaxes: number
1925
+ priceWithTaxes: number
1882
1926
  quantity: number
1883
1927
  seller: { identifier: string }
1884
1928
  }>
@@ -1926,9 +1970,16 @@ export const ProductSummary_ProductFragmentDoc = new TypedDocumentString(
1926
1970
  }
1927
1971
  name
1928
1972
  gtin
1973
+ unitMultiplier
1929
1974
  isVariantOf {
1930
1975
  productGroupID
1931
1976
  name
1977
+ skuVariants {
1978
+ allVariantsByName
1979
+ activeVariations
1980
+ slugsMap
1981
+ availableVariations
1982
+ }
1932
1983
  }
1933
1984
  image {
1934
1985
  url
@@ -1945,6 +1996,7 @@ export const ProductSummary_ProductFragmentDoc = new TypedDocumentString(
1945
1996
  price
1946
1997
  listPrice
1947
1998
  listPriceWithTaxes
1999
+ priceWithTaxes
1948
2000
  quantity
1949
2001
  seller {
1950
2002
  identifier
@@ -2387,7 +2439,7 @@ export const ClientAllVariantProductsQueryDocument = {
2387
2439
  export const ClientManyProductsQueryDocument = {
2388
2440
  __meta__: {
2389
2441
  operationName: 'ClientManyProductsQuery',
2390
- operationHash: '14148671fbf53498fad5c600ee87765920145019',
2442
+ operationHash: '1adc93c70f16173540c50f725ee09a2d67cb85ab',
2391
2443
  },
2392
2444
  } as unknown as TypedDocumentString<
2393
2445
  ClientManyProductsQueryQuery,
@@ -2414,7 +2466,7 @@ export const ClientProductQueryDocument = {
2414
2466
  export const ClientSearchSuggestionsQueryDocument = {
2415
2467
  __meta__: {
2416
2468
  operationName: 'ClientSearchSuggestionsQuery',
2417
- operationHash: '47e48eaee91d16a4237eb2c1241bc2ed3e2ad9bb',
2469
+ operationHash: 'b548281d477a173be7b6960434604d69769a97e7',
2418
2470
  },
2419
2471
  } as unknown as TypedDocumentString<
2420
2472
  ClientSearchSuggestionsQueryQuery,
@@ -2450,7 +2502,7 @@ export const ClientShippingSimulationQueryDocument = {
2450
2502
  export const ServerManyProductsQueryDocument = {
2451
2503
  __meta__: {
2452
2504
  operationName: 'ServerManyProductsQuery',
2453
- operationHash: '4fa4dfd1233e2ed5b0b3f662e8866a901d481a52',
2505
+ operationHash: '5c2181dde311ca80b72e0cc76ac0855d8aa8b51e',
2454
2506
  },
2455
2507
  } as unknown as TypedDocumentString<
2456
2508
  ServerManyProductsQueryQuery,
@@ -4,12 +4,12 @@
4
4
  "c2b3f8bff73ebf6ac79d758c66cabbc21ba9fcc0": "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 shouldSplitItem } } }",
5
5
  "feb7005103a859e2bc8cf2360d568806fd88deba": "mutation SubscribeToNewsletter($data: IPersonNewsletter!) { subscribeToNewsletter(data: $data) { id } }",
6
6
  "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 } }",
7
- "14148671fbf53498fad5c600ee87765920145019": "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 } 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!, $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 }",
7
+ "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 }",
8
8
  "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 }",
9
9
  "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 }",
10
- "47e48eaee91d16a4237eb2c1241bc2ed3e2ad9bb": "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 { 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 }",
10
+ "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 }",
11
11
  "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 }",
12
12
  "2c6e94b978eb50647873082daebcc5b332154cb1": "mutation ValidateSession($search: String!, $session: IStoreSession!) { validateSession(session: $session, search: $search) { addressType b2b { customerId } channel 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 } }",
13
13
  "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 }",
14
- "4fa4dfd1233e2ed5b0b3f662e8866a901d481a52": "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 } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price quantity seller { identifier } } } id: productID sku slug } 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 }"
14
+ "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 }"
15
15
  }
package/CHANGELOG.md CHANGED
@@ -3,6 +3,18 @@
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.43.0](https://github.com/vtex/faststore/compare/v3.42.0...v3.43.0) (2025-05-12)
7
+
8
+ ### Features
9
+
10
+ - [CP-432] [CP-433] Adding CP integration as a data source alternative to hCMS ([#2807](https://github.com/vtex/faststore/issues/2807)) ([122e2d9](https://github.com/vtex/faststore/commit/122e2d94cb94a6edc9726a3be8d83e62fa44a51e)), closes [/github.com/vtex/faststore/pull/2807/files#diff-63a7f8cba93bce2eb5ed6be3a1bcf1fbde76d643b165ae2a1a44cc8765dfb73fR141](https://github.com//github.com/vtex/faststore/pull/2807/files/issues/diff-63a7f8cba93bce2eb5ed6be3a1bcf1fbde76d643b165ae2a1a44cc8765dfb73fR141) [/github.com/vtex/faststore/pull/2807/files#diff-8dd0ec358e808043c69af593825ff65e9afe1dd776dad04f15480a45b57a2608R91](https://github.com//github.com/vtex/faststore/pull/2807/files/issues/diff-8dd0ec358e808043c69af593825ff65e9afe1dd776dad04f15480a45b57a2608R91) [/github.com/vtex/faststore/pull/2807/files#diff-63a7f8cba93bce2eb5ed6be3a1bcf1fbde76d643b165ae2a1a44cc8765dfb73fR24](https://github.com//github.com/vtex/faststore/pull/2807/files/issues/diff-63a7f8cba93bce2eb5ed6be3a1bcf1fbde76d643b165ae2a1a44cc8765dfb73fR24)
11
+
12
+ # [3.42.0](https://github.com/vtex/faststore/compare/v3.41.9...v3.42.0) (2025-05-08)
13
+
14
+ ### Features
15
+
16
+ - Quick Order feature ([#2831](https://github.com/vtex/faststore/issues/2831)) ([875c6f4](https://github.com/vtex/faststore/commit/875c6f4ad4eb780cfa6f8a7aad445db5b3da2ee6))
17
+
6
18
  ## [3.41.9](https://github.com/vtex/faststore/compare/v3.41.8...v3.41.9) (2025-05-01)
7
19
 
8
20
  ### Bug Fixes
@@ -221,6 +221,91 @@
221
221
  "discount_desc",
222
222
  "score_desc"
223
223
  ]
224
+ },
225
+ "quickOrderSettings": {
226
+ "title": "Quick Order settings",
227
+ "type": "object",
228
+ "properties": {
229
+ "quickOrder": {
230
+ "title": "Enable Quick Order?",
231
+ "description": "Allows adding products directly to the cart through search terms, streamlining the purchase.",
232
+ "type": "boolean",
233
+ "default": false
234
+ },
235
+ "skuMatrix": {
236
+ "title": "SKUMatrix Configuration",
237
+ "type": "object",
238
+ "properties": {
239
+ "triggerButtonLabel": {
240
+ "title": "SKU Matrix Trigger label to be displayed",
241
+ "type": "string",
242
+ "default": "Select multiple"
243
+ },
244
+ "columns": {
245
+ "title": "Columns",
246
+ "type": "object",
247
+ "properties": {
248
+ "name": {
249
+ "title": "SKU name column label",
250
+ "type": "string",
251
+ "default": "Name"
252
+ },
253
+ "additionalColumns": {
254
+ "title": "Additional columns",
255
+ "type": "array",
256
+ "items": {
257
+ "title": "Column",
258
+ "type": "object",
259
+ "required": ["label", "value"],
260
+ "properties": {
261
+ "label": {
262
+ "title": "Label",
263
+ "type": "string"
264
+ },
265
+ "value": {
266
+ "title": "Value",
267
+ "type": "string"
268
+ }
269
+ }
270
+ }
271
+ },
272
+ "availability": {
273
+ "title": "Availability column label",
274
+ "type": "object",
275
+ "properties": {
276
+ "label": {
277
+ "title": "Label",
278
+ "type": "string",
279
+ "default": "Availability"
280
+ },
281
+ "stockDisplaySettings": {
282
+ "title": "Stock display settings",
283
+ "description": "Control how the stock status of your products is displayed to customers on your online store.",
284
+ "type": "string",
285
+ "enum": ["showAvailability", "showStockQuantity"],
286
+ "enumNames": [
287
+ "Show availability (Available/Out of Stock)",
288
+ "Show stock quantity"
289
+ ],
290
+ "default": "showAvailability"
291
+ }
292
+ }
293
+ },
294
+ "price": {
295
+ "title": "Price column label",
296
+ "type": "string",
297
+ "default": "Price"
298
+ },
299
+ "quantitySelector": {
300
+ "title": "Quantity selector column label",
301
+ "type": "string",
302
+ "default": "Quantity"
303
+ }
304
+ }
305
+ }
306
+ }
307
+ }
308
+ }
224
309
  }
225
310
  }
226
311
  },
@@ -88,6 +88,8 @@ module.exports = {
88
88
  plp: '/office',
89
89
  search: '/s?q=headphone',
90
90
  pdp: '/apple-magic-mouse/p',
91
+ 500: '/500',
92
+ 404: '/404',
91
93
  },
92
94
 
93
95
  // Lighthouse CI
@@ -122,6 +124,10 @@ module.exports = {
122
124
  data: process.env.CMS_DATA,
123
125
  },
124
126
 
127
+ contentSource: {
128
+ type: 'CMS',
129
+ },
130
+
125
131
  experimental: {
126
132
  cypressVersion: 12,
127
133
  enableCypressExtension: false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faststore/core",
3
- "version": "3.41.9",
3
+ "version": "3.43.0",
4
4
  "license": "MIT",
5
5
  "repository": "vtex/faststore",
6
6
  "browserslist": "supports es6-module and not dead",
@@ -45,11 +45,11 @@
45
45
  "@envelop/parser-cache": "^6.0.2",
46
46
  "@envelop/validation-cache": "^6.0.2",
47
47
  "@faststore/api": "^3.41.8",
48
- "@faststore/components": "^3.41.3",
48
+ "@faststore/components": "^3.42.0",
49
49
  "@faststore/graphql-utils": "^3.38.3",
50
50
  "@faststore/lighthouse": "^3.38.3",
51
51
  "@faststore/sdk": "^3.38.3",
52
- "@faststore/ui": "^3.41.5",
52
+ "@faststore/ui": "^3.42.0",
53
53
  "@graphql-codegen/cli": "5.0.2",
54
54
  "@graphql-codegen/client-preset": "4.2.6",
55
55
  "@graphql-codegen/typescript": "4.0.7",
@@ -62,6 +62,7 @@
62
62
  "@parcel/watcher": "^2.4.0",
63
63
  "@types/react": "^18.2.42",
64
64
  "@vtex/client-cms": "^0.2.12",
65
+ "@vtex/client-cp": "0.2.2",
65
66
  "@vtex/prettier-config": "1.0.0",
66
67
  "autoprefixer": "^10.4.0",
67
68
  "css-loader": "^6.7.1",
@@ -105,5 +106,5 @@
105
106
  "ts-jest": "29.1.1",
106
107
  "typescript": "5.3.2"
107
108
  },
108
- "gitHead": "810f481b997a7392cf13e613fee4527a149b64ad"
109
+ "gitHead": "201303ea329a26779a521232b5f866dea4aa278c"
109
110
  }
@@ -1,6 +1,8 @@
1
- import type { Locator, Section } from '@vtex/client-cms'
1
+ import type { Section } from '@vtex/client-cms'
2
2
  import storeConfig from 'discovery.config'
3
- import { type PageContentType, getPage } from 'src/server/cms'
3
+ import type { PageContentType } from 'src/server/cms'
4
+ import { contentService } from 'src/server/content/service'
5
+ import type { PreviewData } from 'src/server/content/types'
4
6
 
5
7
  export const GLOBAL_SECTIONS_CONTENT_TYPE = 'globalSections'
6
8
  export const GLOBAL_SECTIONS_HEADER_CONTENT_TYPE = 'globalHeaderSections'
@@ -11,7 +13,7 @@ export type GlobalSectionsData = {
11
13
  }
12
14
 
13
15
  export const getGlobalSectionsByType = async (
14
- previewData: Locator,
16
+ previewData: PreviewData,
15
17
  contentType: string
16
18
  ): Promise<GlobalSectionsData> => {
17
19
  if (storeConfig.cms.data) {
@@ -19,26 +21,28 @@ export const getGlobalSectionsByType = async (
19
21
  const page = cmsData[contentType][0]
20
22
 
21
23
  if (page) {
22
- const pageData = getPage<PageContentType>({
23
- contentType: contentType,
24
+ const pageData = contentService.getSingleContent<PageContentType>({
25
+ contentType,
26
+ previewData,
24
27
  documentId: page.documentId,
25
28
  versionId: page.versionId,
29
+ releaseId: page.releaseId,
26
30
  })
27
31
 
28
32
  return pageData
29
33
  }
30
34
  }
31
35
 
32
- const pageData = getPage<PageContentType>({
33
- ...(previewData?.contentType === contentType && previewData),
34
- contentType: contentType,
36
+ const pageData = contentService.getSingleContent<PageContentType>({
37
+ contentType,
38
+ previewData,
35
39
  })
36
40
 
37
41
  return pageData
38
42
  }
39
43
 
40
44
  export const getGlobalSectionsData = (
41
- previewData: Locator
45
+ previewData: PreviewData
42
46
  ): Promise<GlobalSectionsData>[] => {
43
47
  const globalSections = getGlobalSectionsByType(
44
48
  previewData,
@@ -143,6 +143,7 @@ function Navbar({
143
143
  <SearchInput
144
144
  placeholder={searchInput?.placeholder}
145
145
  sort={searchInput?.sort}
146
+ quickOrderSettings={searchInput?.quickOrderSettings}
146
147
  />
147
148
  )}
148
149
 
@@ -170,6 +171,7 @@ function Navbar({
170
171
  buttonTestId="store-input-mobile-button"
171
172
  onSearchClick={handlerExpandSearch}
172
173
  sort={searchInput?.sort}
174
+ quickOrderSettings={searchInput?.quickOrderSettings}
173
175
  hidden={!searchExpanded}
174
176
  aria-hidden={!searchExpanded}
175
177
  />
@@ -170,10 +170,17 @@ export const fragment = gql(`
170
170
  }
171
171
  name
172
172
  gtin
173
+ unitMultiplier
173
174
 
174
175
  isVariantOf {
175
176
  productGroupID
176
177
  name
178
+ skuVariants {
179
+ allVariantsByName
180
+ activeVariations
181
+ slugsMap
182
+ availableVariations
183
+ }
177
184
  }
178
185
 
179
186
  image {
@@ -193,6 +200,7 @@ export const fragment = gql(`
193
200
  price
194
201
  listPrice
195
202
  listPriceWithTaxes
203
+ priceWithTaxes
196
204
  quantity
197
205
  seller {
198
206
  identifier