@faststore/core 3.43.0 → 3.44.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 (188) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +55 -55
  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 +63 -63
  12. package/.next/routes-manifest.json +1 -1
  13. package/.next/server/chunks/1506.js +1 -1
  14. package/.next/server/chunks/2443.js +1 -0
  15. package/.next/server/chunks/2524.js +1 -0
  16. package/.next/server/chunks/4289.js +2 -362
  17. package/.next/server/chunks/4559.js +361 -0
  18. package/.next/server/chunks/4725.js +1 -0
  19. package/.next/server/chunks/4746.js +1 -1
  20. package/.next/server/chunks/5474.js +6 -0
  21. package/.next/server/chunks/5607.js +1 -0
  22. package/.next/server/chunks/563.js +1 -1
  23. package/.next/server/chunks/6594.js +1 -1
  24. package/.next/server/chunks/674.js +1 -1
  25. package/.next/server/chunks/6968.js +3 -2
  26. package/.next/server/chunks/7986.js +6 -1
  27. package/.next/server/chunks/804.js +1 -0
  28. package/.next/server/chunks/831.js +1 -1
  29. package/.next/server/chunks/8562.js +1 -1
  30. package/.next/server/chunks/8646.js +1 -1
  31. package/.next/server/chunks/ButtonSignIn.js +1 -1
  32. package/.next/server/chunks/UIBannerText.js +1 -1
  33. package/.next/server/chunks/UISKUMatrixSidebar.js +1 -1
  34. package/.next/server/middleware-build-manifest.js +1 -1
  35. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  36. package/.next/server/pages/404.js +1 -1
  37. package/.next/server/pages/404.js.nft.json +1 -1
  38. package/.next/server/pages/500.js +1 -1
  39. package/.next/server/pages/500.js.nft.json +1 -1
  40. package/.next/server/pages/[...slug].js +1 -1
  41. package/.next/server/pages/[...slug].js.nft.json +1 -1
  42. package/.next/server/pages/[slug]/p.js +1 -1
  43. package/.next/server/pages/[slug]/p.js.nft.json +1 -1
  44. package/.next/server/pages/_app.js +1 -1
  45. package/.next/server/pages/_app.js.nft.json +1 -1
  46. package/.next/server/pages/_document.js +1 -1
  47. package/.next/server/pages/_document.js.nft.json +1 -1
  48. package/.next/server/pages/_error.js +1 -1
  49. package/.next/server/pages/_error.js.nft.json +1 -1
  50. package/.next/server/pages/account/profile.js +1 -1
  51. package/.next/server/pages/account/profile.js.nft.json +1 -1
  52. package/.next/server/pages/account.js +1 -1
  53. package/.next/server/pages/account.js.nft.json +1 -1
  54. package/.next/server/pages/api/graphql.js +2 -1
  55. package/.next/server/pages/api/graphql.js.nft.json +1 -1
  56. package/.next/server/pages/api/health/live.js.nft.json +1 -1
  57. package/.next/server/pages/api/health/ready.js.nft.json +1 -1
  58. package/.next/server/pages/api/preview.js.nft.json +1 -1
  59. package/.next/server/pages/checkout.js +1 -1
  60. package/.next/server/pages/checkout.js.nft.json +1 -1
  61. package/.next/server/pages/en-US/404.html +2 -2
  62. package/.next/server/pages/en-US/500.html +2 -2
  63. package/.next/server/pages/en-US/checkout.html +2 -2
  64. package/.next/server/pages/en-US/login.html +2 -2
  65. package/.next/server/pages/en-US/s.html +2 -2
  66. package/.next/server/pages/en-US.html +2 -2
  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/static/U_9W0qMyv_4RQSLFdrtHC/_buildManifest.js +1 -0
  74. package/.next/static/chunks/{1153.ed17e19083f51bdb.js → 1153.8f0ac867c4ddce90.js} +1 -1
  75. package/.next/static/chunks/1173.ca14a5bc4e1264f4.js +1 -0
  76. package/.next/static/chunks/1418-e86227bcf9a5d486.js +28 -0
  77. package/.next/static/chunks/1552.8751332da83cadc5.js +1 -0
  78. package/.next/static/chunks/{6076.d80e37e35892bafc.js → 3684.3e6f435506c2c7c9.js} +1 -1
  79. package/.next/static/chunks/417.edbb75ab2f55482f.js +1 -0
  80. package/.next/static/chunks/{4349-6fc936580b772e67.js → 4349-87a956a73b97519c.js} +1 -1
  81. package/.next/static/chunks/{4625-9a273e78866c389b.js → 4625-553d20c86b0ca577.js} +1 -1
  82. package/.next/static/chunks/{4746.19eddeaeb33ea820.js → 4746.2e16ec0663a3873f.js} +1 -1
  83. package/.next/static/chunks/{4774.907a71a04126d57c.js → 4774.8e70c01dcd0ed4b3.js} +1 -1
  84. package/.next/static/chunks/{4865.3e2ae9feb511c870.js → 4865.4017be0f8e7c8cf0.js} +1 -1
  85. package/.next/static/chunks/5836.c5c244a8cbfa7f7d.js +1 -0
  86. package/.next/static/chunks/6335-6eb4ff84af184b88.js +1 -0
  87. package/.next/static/chunks/6536.d5260107222db13c.js +1 -0
  88. package/.next/static/chunks/{7195.e88924bd232c58b7.js → 7195.fd4cacc0bef1a233.js} +1 -1
  89. package/.next/static/chunks/7498-72289e704e7c7056.js +1 -0
  90. package/.next/static/chunks/7959.7c721505286572c0.js +1 -0
  91. package/.next/static/chunks/9.89f24163370f3a22.js +1 -0
  92. package/.next/static/chunks/BannerNewsletter.8982f42e60ed8828.js +1 -0
  93. package/.next/static/chunks/{ButtonSignIn.df0e3ce490436fe2.js → ButtonSignIn.bff8dc7b2133806c.js} +1 -1
  94. package/.next/static/chunks/CartItem.f2493be7c504f22f.js +1 -0
  95. package/.next/static/chunks/{CartSidebar.26d3e39bf93a368f.js → CartSidebar.aa9e43be37034654.js} +1 -1
  96. package/.next/static/chunks/{Gift.affb75f8f7bcb6db.js → Gift.375356d6a74e2693.js} +1 -1
  97. package/.next/static/chunks/Newsletter.9db4df2d4fb33227.js +1 -0
  98. package/.next/static/chunks/OrderSummary.e6e0a3af3c224b4e.js +1 -0
  99. package/.next/static/chunks/ProductShelf.9cea36116836c161.js +1 -0
  100. package/.next/static/chunks/ProductTiles.059a4a6360e1d4ea.js +1 -0
  101. package/.next/static/chunks/RegionModal.4594b707a1092551.js +1 -0
  102. package/.next/static/chunks/UIBannerText.45cf608e46cde628.js +1 -0
  103. package/.next/static/chunks/UIButton.3186f933c0ecfb31.js +1 -0
  104. package/.next/static/chunks/UISKUMatrixSidebar.9ac3980a60cfc358.js +1 -0
  105. package/.next/static/chunks/UIToast.221eb10681d2f642.js +1 -0
  106. package/.next/static/chunks/pages/{404-8e61ea158e7b314c.js → 404-6300c433469b7262.js} +1 -1
  107. package/.next/static/chunks/pages/{500-68f51177e64de6e7.js → 500-2d1dd344c8a8827f.js} +1 -1
  108. package/.next/static/chunks/pages/[...slug]-c1a62d58f5940747.js +1 -0
  109. package/.next/static/chunks/pages/[slug]/p-555dc09a5e78260e.js +1 -0
  110. package/.next/static/chunks/pages/_app-929466ed763a6d46.js +1 -0
  111. package/.next/static/chunks/pages/account/{profile-1fdb500de8f12b3a.js → profile-23b2e9fbbd95a30b.js} +1 -1
  112. package/.next/static/chunks/pages/{checkout-0dfe0dc9cee443ba.js → checkout-93b647fc45454d97.js} +1 -1
  113. package/.next/static/chunks/pages/{index-d36123e232b889d8.js → index-07bc320fc045538c.js} +1 -1
  114. package/.next/static/chunks/pages/{login-b59ea5561defc0d4.js → login-2454f1cd309c27d2.js} +1 -1
  115. package/.next/static/chunks/pages/{s-6120de2f57d674fc.js → s-9901e6857f517b8b.js} +1 -1
  116. package/.next/static/chunks/webpack-c2eed1e0b727b3ee.js +1 -0
  117. package/.next/static/css/b8945ac5f5327c34.css +1 -0
  118. package/.next/static/css/{f03f8973f7c72071.css → dbbb10bf2f162a58.css} +1 -1
  119. package/.next/trace +113 -111
  120. package/.turbo/turbo-build.log +25 -25
  121. package/.turbo/turbo-test.log +5 -5
  122. package/@generated/gql.ts +18 -2
  123. package/@generated/graphql.ts +58 -1
  124. package/@generated/persisted-documents.json +3 -1
  125. package/@generated/schema.graphql +14 -0
  126. package/CHANGELOG.md +6 -0
  127. package/cms/faststore/sections.json +110 -1
  128. package/discovery.config.default.js +6 -0
  129. package/package.json +6 -6
  130. package/src/Layout.tsx +2 -0
  131. package/src/components/cms/global/Components.ts +2 -0
  132. package/src/components/region/RegionBar/RegionBar.tsx +35 -2
  133. package/src/components/region/RegionButton/RegionButton.tsx +41 -6
  134. package/src/components/region/RegionModal/RegionModal.tsx +46 -34
  135. package/src/components/region/RegionModal/useRegion.ts +79 -0
  136. package/src/components/region/RegionModal/useRegionModal.ts +44 -0
  137. package/src/components/region/RegionPopover/RegionPopover.tsx +174 -0
  138. package/src/components/region/RegionPopover/index.ts +1 -0
  139. package/src/components/region/RegionPopover/section.module.scss +9 -0
  140. package/src/components/search/SearchInput/SearchInput.tsx +2 -2
  141. package/src/components/sections/Navbar/section.module.scss +3 -0
  142. package/src/components/sections/RegionBar/RegionBar.tsx +8 -3
  143. package/src/constants.ts +1 -0
  144. package/src/pages/[slug]/p.tsx +2 -1
  145. package/src/pages/_app.tsx +4 -2
  146. package/src/sdk/geolocation/useGeolocation.ts +42 -0
  147. package/src/sdk/product/index.ts +21 -0
  148. package/src/sdk/profile/index.ts +31 -0
  149. package/src/sdk/session/index.ts +37 -0
  150. package/src/sdk/ui/useOnClickOutside.ts +3 -38
  151. package/src/utils/utilities.ts +9 -1
  152. package/test/server/index.test.ts +1 -0
  153. package/.next/server/chunks/3105.js +0 -6
  154. package/.next/server/chunks/3779.js +0 -1
  155. package/.next/server/chunks/4444.js +0 -6
  156. package/.next/server/chunks/6030.js +0 -1
  157. package/.next/server/chunks/7337.js +0 -1
  158. package/.next/server/chunks/7675.js +0 -1
  159. package/.next/server/chunks/9594.js +0 -1
  160. package/.next/static/chunks/1173.5e86a9295010b785.js +0 -1
  161. package/.next/static/chunks/1552.b5a073e7ac834965.js +0 -1
  162. package/.next/static/chunks/3684.ba7a2a994988063b.js +0 -1
  163. package/.next/static/chunks/417.c39c1c5e5ef57b4a.js +0 -1
  164. package/.next/static/chunks/6167-ecb49640dcb9d566.js +0 -28
  165. package/.next/static/chunks/6335-5870fc075bf96b86.js +0 -1
  166. package/.next/static/chunks/6536.cd75ac69c241a35c.js +0 -1
  167. package/.next/static/chunks/7498-415859c993f5002b.js +0 -1
  168. package/.next/static/chunks/7959.9d31abae51a7e419.js +0 -1
  169. package/.next/static/chunks/8827.179b49f8ab3afe48.js +0 -1
  170. package/.next/static/chunks/9.e42e9b7463b94493.js +0 -1
  171. package/.next/static/chunks/BannerNewsletter.06b2b9724aa3c3ea.js +0 -1
  172. package/.next/static/chunks/CartItem.44cc90c698a69889.js +0 -1
  173. package/.next/static/chunks/Newsletter.d775e641d99322e6.js +0 -1
  174. package/.next/static/chunks/OrderSummary.8f34504b20564fec.js +0 -1
  175. package/.next/static/chunks/ProductShelf.0b5a71a93bca3148.js +0 -1
  176. package/.next/static/chunks/ProductTiles.a75612c0bcf990d6.js +0 -1
  177. package/.next/static/chunks/RegionModal.68b05bfd591d27fc.js +0 -1
  178. package/.next/static/chunks/UIBannerText.5ee380812ac3772c.js +0 -1
  179. package/.next/static/chunks/UIButton.c7a3273ac6ee5da5.js +0 -1
  180. package/.next/static/chunks/UISKUMatrixSidebar.c68540bda6d40e13.js +0 -1
  181. package/.next/static/chunks/UIToast.85ae30e3e8cc5ec7.js +0 -1
  182. package/.next/static/chunks/pages/[...slug]-2cfb2b1b8ee3b7a9.js +0 -1
  183. package/.next/static/chunks/pages/[slug]/p-3b513ae37c648620.js +0 -1
  184. package/.next/static/chunks/pages/_app-f02182ccd58f2781.js +0 -1
  185. package/.next/static/chunks/webpack-0dd5a14ceff64065.js +0 -1
  186. package/.next/static/css/31fb64e064998460.css +0 -1
  187. package/.next/static/f5jWOXDXh3GdBy9EK8IDc/_buildManifest.js +0 -1
  188. /package/.next/static/{f5jWOXDXh3GdBy9EK8IDc → U_9W0qMyv_4RQSLFdrtHC}/_ssgManifest.js +0 -0
@@ -1,23 +1,23 @@
1
1
 
2
- > @faststore/core@3.42.0 prebuild /home/runner/work/faststore/faststore/packages/core
2
+ > @faststore/core@3.43.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.42.0 partytown /home/runner/work/faststore/faststore/packages/core
6
+ > @faststore/core@3.43.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.42.0 generate /home/runner/work/faststore/faststore/packages/core
11
+ > @faststore/core@3.43.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.42.0 generate:schema /home/runner/work/faststore/faststore/packages/core
15
+ > @faststore/core@3.43.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.42.0 generate:codegen /home/runner/work/faststore/faststore/packages/core
20
+ > @faststore/core@3.43.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.42.0 format:generated /home/runner/work/faststore/faststore/packages/core
40
+ > @faststore/core@3.43.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.42.0 build /home/runner/work/faststore/faststore/packages/core
44
+ > @faststore/core@3.43.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
@@ -67,31 +67,31 @@ Warning: Dynamic Content not found for the page: home. Refer to the Dynamic Cont
67
67
  Collecting build traces ...
68
68
 
69
69
  Route (pages) Size First Load JS
70
- ┌ ● / 3.86 kB 124 kB
70
+ ┌ ● / 3.86 kB 128 kB
71
71
  ├ └ css/b1806cbafd0c1f81.css 3.06 kB
72
- ├ /_app 0 B 92.5 kB
73
- ├ ● /[...slug] 2.44 kB 133 kB
74
- ├ ● /[slug]/p 35.7 kB 156 kB
72
+ ├ /_app 0 B 98.3 kB
73
+ ├ ● /[...slug] 2.44 kB 136 kB
74
+ ├ ● /[slug]/p 35.4 kB 159 kB
75
75
  ├ ├ css/a3ca6a9b63f657be.css 5.75 kB
76
76
  ├ ├ css/62a5153ac7061286.css 6.11 kB
77
77
  ├ └ css/b5bf49598c8f8b66.css 16.1 kB
78
- ├ ○ /404 1.48 kB 122 kB
79
- ├ ● /500 1.48 kB 122 kB
80
- ├ λ /account 240 B 92.8 kB
81
- ├ λ /account/profile 1.34 kB 122 kB
78
+ ├ ○ /404 1.48 kB 125 kB
79
+ ├ ● /500 1.48 kB 125 kB
80
+ ├ λ /account 240 B 98.5 kB
81
+ ├ λ /account/profile 1.33 kB 125 kB
82
82
  ├ └ css/249b9deaabc0d32d.css 2.51 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
87
- ├ ● /checkout 694 B 121 kB
88
- ├ ● /login 1.59 kB 122 kB
89
- └ ● /s 3.17 kB 134 kB
90
- + First Load JS shared by all 96 kB
83
+ ├ λ /api/graphql 0 B 98.3 kB
84
+ ├ λ /api/health/live 0 B 98.3 kB
85
+ ├ λ /api/health/ready 0 B 98.3 kB
86
+ ├ λ /api/preview 0 B 98.3 kB
87
+ ├ ● /checkout 695 B 124 kB
88
+ ├ ● /login 1.59 kB 125 kB
89
+ └ ● /s 3.17 kB 137 kB
90
+ + First Load JS shared by all 102 kB
91
91
  ├ chunks/framework-807b0f81cbc129f0.js 45.4 kB
92
92
  ├ chunks/main-5569625b3fdd6741.js 33.1 kB
93
- ├ chunks/pages/_app-f02182ccd58f2781.js 10.4 kB
94
- ├ chunks/webpack-0dd5a14ceff64065.js 3.68 kB
93
+ ├ chunks/pages/_app-929466ed763a6d46.js 16.2 kB
94
+ ├ chunks/webpack-c2eed1e0b727b3ee.js 3.67 kB
95
95
  └ css/0a57ee6c7a57788c.css 3.49 kB
96
96
 
97
97
  λ (Server) server-side renders at runtime (uses getInitialProps or getServerSideProps)
@@ -1,14 +1,14 @@
1
1
 
2
- > @faststore/core@3.42.0 test /home/runner/work/faststore/faststore/packages/core
2
+ > @faststore/core@3.43.0 test /home/runner/work/faststore/faststore/packages/core
3
3
  > jest
4
4
 
5
- PASS test/server/cms/global.test.ts (24.058 s)
6
- PASS test/utils/multipleTemplates.test.ts (24.28 s)
5
+ PASS test/server/cms/global.test.ts (23.396 s)
6
+ PASS test/utils/multipleTemplates.test.ts (24.179 s)
7
7
  PASS test/server/cms/index.test.ts
8
- PASS test/server/index.test.ts (29.435 s)
8
+ PASS test/server/index.test.ts (28.681 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: 30.555 s
13
+ Time: 30.024 s
14
14
  Ran all test suites.
package/@generated/gql.ts CHANGED
@@ -44,6 +44,8 @@ const documents = {
44
44
  types.ValidateCartMutationDocument,
45
45
  '\n mutation SubscribeToNewsletter($data: IPersonNewsletter!) {\n subscribeToNewsletter(data: $data) {\n id\n }\n }\n':
46
46
  types.SubscribeToNewsletterDocument,
47
+ '\n query ClientProductCountQuery($term: String) {\n productCount(term: $term) {\n total\n }\n }\n':
48
+ types.ClientProductCountQueryDocument,
47
49
  '\n query ClientAllVariantProductsQuery($locator: [IStoreSelectedFacet!]!) {\n product(locator: $locator) {\n ...ProductSKUMatrixSidebarFragment_product\n }\n }\n':
48
50
  types.ClientAllVariantProductsQueryDocument,
49
51
  '\n query ClientManyProductsQuery(\n $first: Int!\n $after: String\n $sort: StoreSort!\n $term: String!\n $selectedFacets: [IStoreSelectedFacet!]!\n $sponsoredCount: Int\n ) {\n ...ClientManyProducts\n search(\n first: $first\n after: $after\n sort: $sort\n term: $term\n selectedFacets: $selectedFacets\n sponsoredCount: $sponsoredCount\n ) {\n products {\n pageInfo {\n totalCount\n }\n edges {\n node {\n ...ProductSummary_product\n }\n }\n }\n }\n }\n':
@@ -52,11 +54,13 @@ const documents = {
52
54
  types.ClientProductGalleryQueryDocument,
53
55
  '\n query ClientProductQuery($locator: [IStoreSelectedFacet!]!) {\n ...ClientProduct\n product(locator: $locator) {\n ...ProductDetailsFragment_product\n }\n }\n':
54
56
  types.ClientProductQueryDocument,
57
+ '\n query ClientProfileQuery($id: String!) {\n profile(id: $id) {\n addresses {\n country\n postalCode\n geoCoordinate\n city\n }\n }\n }\n':
58
+ types.ClientProfileQueryDocument,
55
59
  '\n query ClientSearchSuggestionsQuery(\n $term: String!\n $selectedFacets: [IStoreSelectedFacet!]\n ) {\n ...ClientSearchSuggestions\n search(first: 5, term: $term, selectedFacets: $selectedFacets) {\n suggestions {\n terms {\n value\n }\n products {\n ...ProductSummary_product\n }\n }\n products {\n pageInfo {\n totalCount\n }\n }\n metadata {\n ...SearchEvent_metadata\n }\n }\n }\n':
56
60
  types.ClientSearchSuggestionsQueryDocument,
57
61
  '\n query ClientTopSearchSuggestionsQuery(\n $term: String!\n $selectedFacets: [IStoreSelectedFacet!]\n ) {\n ...ClientTopSearchSuggestions\n search(first: 5, term: $term, selectedFacets: $selectedFacets) {\n suggestions {\n terms {\n value\n }\n }\n }\n }\n':
58
62
  types.ClientTopSearchSuggestionsQueryDocument,
59
- '\n mutation ValidateSession($session: IStoreSession!, $search: String!) {\n validateSession(session: $session, search: $search) {\n locale\n channel\n country\n addressType\n postalCode\n deliveryMode {\n deliveryChannel\n deliveryMethod\n deliveryWindow {\n startDate\n endDate\n }\n }\n geoCoordinates {\n latitude\n longitude\n }\n currency {\n code\n symbol\n }\n person {\n id\n email\n givenName\n familyName\n }\n b2b {\n customerId\n }\n marketingData {\n utmCampaign\n utmMedium\n utmSource\n utmiCampaign\n utmiPage\n utmiPart\n }\n }\n }\n':
63
+ '\n mutation ValidateSession($session: IStoreSession!, $search: String!) {\n validateSession(session: $session, search: $search) {\n locale\n channel\n country\n addressType\n postalCode\n city\n deliveryMode {\n deliveryChannel\n deliveryMethod\n deliveryWindow {\n startDate\n endDate\n }\n }\n geoCoordinates {\n latitude\n longitude\n }\n currency {\n code\n symbol\n }\n person {\n id\n email\n givenName\n familyName\n }\n b2b {\n customerId\n }\n marketingData {\n utmCampaign\n utmMedium\n utmSource\n utmiCampaign\n utmiPage\n utmiPart\n }\n }\n }\n':
60
64
  types.ValidateSessionDocument,
61
65
  '\n query ClientShippingSimulationQuery(\n $postalCode: String!\n $country: String!\n $items: [IShippingItem!]!\n ) {\n ...ClientShippingSimulation\n shipping(items: $items, postalCode: $postalCode, country: $country) {\n logisticsInfo {\n slas {\n carrier\n price\n availableDeliveryWindows {\n startDateUtc\n endDateUtc\n price\n listPrice\n }\n shippingEstimate\n localizedEstimates\n deliveryChannel\n }\n }\n address {\n city\n neighborhood\n state\n }\n }\n }\n':
62
66
  types.ClientShippingSimulationQueryDocument,
@@ -160,6 +164,12 @@ export function gql(
160
164
  export function gql(
161
165
  source: '\n mutation SubscribeToNewsletter($data: IPersonNewsletter!) {\n subscribeToNewsletter(data: $data) {\n id\n }\n }\n'
162
166
  ): typeof import('./graphql').SubscribeToNewsletterDocument
167
+ /**
168
+ * The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
169
+ */
170
+ export function gql(
171
+ source: '\n query ClientProductCountQuery($term: String) {\n productCount(term: $term) {\n total\n }\n }\n'
172
+ ): typeof import('./graphql').ClientProductCountQueryDocument
163
173
  /**
164
174
  * The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
165
175
  */
@@ -184,6 +194,12 @@ export function gql(
184
194
  export function gql(
185
195
  source: '\n query ClientProductQuery($locator: [IStoreSelectedFacet!]!) {\n ...ClientProduct\n product(locator: $locator) {\n ...ProductDetailsFragment_product\n }\n }\n'
186
196
  ): typeof import('./graphql').ClientProductQueryDocument
197
+ /**
198
+ * The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
199
+ */
200
+ export function gql(
201
+ source: '\n query ClientProfileQuery($id: String!) {\n profile(id: $id) {\n addresses {\n country\n postalCode\n geoCoordinate\n city\n }\n }\n }\n'
202
+ ): typeof import('./graphql').ClientProfileQueryDocument
187
203
  /**
188
204
  * The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
189
205
  */
@@ -200,7 +216,7 @@ export function gql(
200
216
  * The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
201
217
  */
202
218
  export function gql(
203
- source: '\n mutation ValidateSession($session: IStoreSession!, $search: String!) {\n validateSession(session: $session, search: $search) {\n locale\n channel\n country\n addressType\n postalCode\n deliveryMode {\n deliveryChannel\n deliveryMethod\n deliveryWindow {\n startDate\n endDate\n }\n }\n geoCoordinates {\n latitude\n longitude\n }\n currency {\n code\n symbol\n }\n person {\n id\n email\n givenName\n familyName\n }\n b2b {\n customerId\n }\n marketingData {\n utmCampaign\n utmMedium\n utmSource\n utmiCampaign\n utmiPage\n utmiPart\n }\n }\n }\n'
219
+ source: '\n mutation ValidateSession($session: IStoreSession!, $search: String!) {\n validateSession(session: $session, search: $search) {\n locale\n channel\n country\n addressType\n postalCode\n city\n deliveryMode {\n deliveryChannel\n deliveryMethod\n deliveryWindow {\n startDate\n endDate\n }\n }\n geoCoordinates {\n latitude\n longitude\n }\n currency {\n code\n symbol\n }\n person {\n id\n email\n givenName\n familyName\n }\n b2b {\n customerId\n }\n marketingData {\n utmCampaign\n utmMedium\n utmSource\n utmiCampaign\n utmiPage\n utmiPart\n }\n }\n }\n'
204
220
  ): typeof import('./graphql').ValidateSessionDocument
205
221
  /**
206
222
  * The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
@@ -320,6 +320,8 @@ export type IStoreSession = {
320
320
  b2b: InputMaybe<IStoreB2B>
321
321
  /** Session input channel. */
322
322
  channel: InputMaybe<Scalars['String']['input']>
323
+ /** Session input city. */
324
+ city: InputMaybe<Scalars['String']['input']>
323
325
  /** Session input country. */
324
326
  country: Scalars['String']['input']
325
327
  /** Session input currency. */
@@ -469,6 +471,11 @@ export type PickupStoreInfo = {
469
471
  isPickupStore: Maybe<Scalars['Boolean']['output']>
470
472
  }
471
473
 
474
+ export type ProductCountResult = {
475
+ /** Total product count. */
476
+ total: Scalars['Int']['output']
477
+ }
478
+
472
479
  export type Profile = {
473
480
  /** Collection of user's address */
474
481
  addresses: Maybe<Array<Maybe<ProfileAddress>>>
@@ -512,6 +519,8 @@ export type Query = {
512
519
  collection: StoreCollection
513
520
  /** Returns the details of a product based on the specified locator. */
514
521
  product: StoreProduct
522
+ /** Returns the total product count information based on a specific location accessible through the VTEX segment cookie. */
523
+ productCount: Maybe<ProductCountResult>
515
524
  /** Returns information about the profile. */
516
525
  profile: Maybe<Profile>
517
526
  /** Returns if there's a redirect for a search. */
@@ -542,6 +551,10 @@ export type QueryProductArgs = {
542
551
  locator: Array<IStoreSelectedFacet>
543
552
  }
544
553
 
554
+ export type QueryProductCountArgs = {
555
+ term: InputMaybe<Scalars['String']['input']>
556
+ }
557
+
545
558
  export type QueryProfileArgs = {
546
559
  id: Scalars['String']['input']
547
560
  }
@@ -1138,6 +1151,8 @@ export type StoreSession = {
1138
1151
  b2b: Maybe<StoreB2B>
1139
1152
  /** Session channel. */
1140
1153
  channel: Maybe<Scalars['String']['output']>
1154
+ /** Session city. */
1155
+ city: Maybe<Scalars['String']['output']>
1141
1156
  /** Session country. */
1142
1157
  country: Scalars['String']['output']
1143
1158
  /** Session currency. */
@@ -1547,6 +1562,14 @@ export type SubscribeToNewsletterMutation = {
1547
1562
  subscribeToNewsletter: { id: string } | null
1548
1563
  }
1549
1564
 
1565
+ export type ClientProductCountQueryQueryVariables = Exact<{
1566
+ term: InputMaybe<Scalars['String']['input']>
1567
+ }>
1568
+
1569
+ export type ClientProductCountQueryQuery = {
1570
+ productCount: { total: number } | null
1571
+ }
1572
+
1550
1573
  export type ClientAllVariantProductsQueryQueryVariables = Exact<{
1551
1574
  locator: Array<IStoreSelectedFacet> | IStoreSelectedFacet
1552
1575
  }>
@@ -1745,6 +1768,21 @@ export type ClientProductQueryQuery = {
1745
1768
  }
1746
1769
  }
1747
1770
 
1771
+ export type ClientProfileQueryQueryVariables = Exact<{
1772
+ id: Scalars['String']['input']
1773
+ }>
1774
+
1775
+ export type ClientProfileQueryQuery = {
1776
+ profile: {
1777
+ addresses: Array<{
1778
+ country: string | null
1779
+ postalCode: string | null
1780
+ geoCoordinate: Array<number | null> | null
1781
+ city: string | null
1782
+ } | null> | null
1783
+ } | null
1784
+ }
1785
+
1748
1786
  export type ClientSearchSuggestionsQueryQueryVariables = Exact<{
1749
1787
  term: Scalars['String']['input']
1750
1788
  selectedFacets: InputMaybe<Array<IStoreSelectedFacet> | IStoreSelectedFacet>
@@ -1825,6 +1863,7 @@ export type ValidateSessionMutation = {
1825
1863
  country: string
1826
1864
  addressType: string | null
1827
1865
  postalCode: string | null
1866
+ city: string | null
1828
1867
  deliveryMode: {
1829
1868
  deliveryChannel: string
1830
1869
  deliveryMethod: string
@@ -2427,6 +2466,15 @@ export const SubscribeToNewsletterDocument = {
2427
2466
  SubscribeToNewsletterMutation,
2428
2467
  SubscribeToNewsletterMutationVariables
2429
2468
  >
2469
+ export const ClientProductCountQueryDocument = {
2470
+ __meta__: {
2471
+ operationName: 'ClientProductCountQuery',
2472
+ operationHash: 'dc912e7272e3d9f5ced206837df87f544d39d0a5',
2473
+ },
2474
+ } as unknown as TypedDocumentString<
2475
+ ClientProductCountQueryQuery,
2476
+ ClientProductCountQueryQueryVariables
2477
+ >
2430
2478
  export const ClientAllVariantProductsQueryDocument = {
2431
2479
  __meta__: {
2432
2480
  operationName: 'ClientAllVariantProductsQuery',
@@ -2463,6 +2511,15 @@ export const ClientProductQueryDocument = {
2463
2511
  ClientProductQueryQuery,
2464
2512
  ClientProductQueryQueryVariables
2465
2513
  >
2514
+ export const ClientProfileQueryDocument = {
2515
+ __meta__: {
2516
+ operationName: 'ClientProfileQuery',
2517
+ operationHash: '34ea14c0d4a57ddf9bc11e4be0cd2b5a6506d3d4',
2518
+ },
2519
+ } as unknown as TypedDocumentString<
2520
+ ClientProfileQueryQuery,
2521
+ ClientProfileQueryQueryVariables
2522
+ >
2466
2523
  export const ClientSearchSuggestionsQueryDocument = {
2467
2524
  __meta__: {
2468
2525
  operationName: 'ClientSearchSuggestionsQuery',
@@ -2484,7 +2541,7 @@ export const ClientTopSearchSuggestionsQueryDocument = {
2484
2541
  export const ValidateSessionDocument = {
2485
2542
  __meta__: {
2486
2543
  operationName: 'ValidateSession',
2487
- operationHash: '2c6e94b978eb50647873082daebcc5b332154cb1',
2544
+ operationHash: '6189ed611a20d9d5fe8ebebf61c87c9c29a5cef4',
2488
2545
  },
2489
2546
  } as unknown as TypedDocumentString<
2490
2547
  ValidateSessionMutation,
@@ -3,13 +3,15 @@
3
3
  "46103bee661405bde706d72126fdbf9b0a0c9e6e": "fragment CartProductItem on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations availableVariations slugsMap } } name sku unitMultiplier } fragment ProductDetailsFragment_product on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } description gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations availableVariations slugsMap } } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price priceWithTaxes seller { identifier } } } id: productID sku unitMultiplier ...CartProductItem } fragment ServerProduct on Query { product(locator: $locator) { id: productID } } query ServerProductQuery($locator: [IStoreSelectedFacet!]!) { product(locator: $locator) { brand { name } breadcrumbList { itemListElement { item name position } } description gtin image { alternateName url } isVariantOf { productGroupID } name offers { highPrice lowPrice lowPriceWithTaxes offers { availability itemCondition price priceCurrency priceValidUntil seller { identifier } } priceCurrency } id: productID releaseDate seo { canonical description title } sku ...ProductDetailsFragment_product } ...ServerProduct }",
4
4
  "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
+ "dc912e7272e3d9f5ced206837df87f544d39d0a5": "query ClientProductCountQuery($term: String) { productCount(term: $term) { total } }",
6
7
  "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
8
  "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
9
  "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
10
  "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 }",
11
+ "34ea14c0d4a57ddf9bc11e4be0cd2b5a6506d3d4": "query ClientProfileQuery($id: String!) { profile(id: $id) { addresses { city country geoCoordinate postalCode } } }",
10
12
  "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
13
  "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
- "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 } }",
14
+ "6189ed611a20d9d5fe8ebebf61c87c9c29a5cef4": "mutation ValidateSession($search: String!, $session: IStoreSession!) { validateSession(session: $session, search: $search) { addressType b2b { customerId } 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 } }",
13
15
  "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
16
  "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
17
  }
@@ -602,6 +602,11 @@ input IGeoCoordinates {
602
602
  longitude: Float!
603
603
  }
604
604
 
605
+ type ProductCountResult {
606
+ """Total product count."""
607
+ total: Int!
608
+ }
609
+
605
610
  type Query {
606
611
  """Returns the details of a product based on the specified locator."""
607
612
  product(
@@ -674,6 +679,11 @@ type Query {
674
679
  """Identifier for user."""
675
680
  id: String!
676
681
  ): Profile @cacheControl(scope: "public", sMaxAge: 120, staleWhileRevalidate: 3600)
682
+ """Returns the total product count information based on a specific location accessible through the VTEX segment cookie."""
683
+ productCount(
684
+ """Search term."""
685
+ term: String
686
+ ): ProductCountResult @cacheControl(scope: "public", sMaxAge: 120, staleWhileRevalidate: 3600)
677
687
  }
678
688
 
679
689
  """
@@ -829,6 +839,8 @@ type StoreSession {
829
839
  deliveryMode: StoreDeliveryMode
830
840
  """Session address type."""
831
841
  addressType: String
842
+ """Session city."""
843
+ city: String
832
844
  """Session postal code."""
833
845
  postalCode: String
834
846
  """Session input geoCoordinates."""
@@ -863,6 +875,8 @@ input IStoreSession {
863
875
  deliveryMode: IStoreDeliveryMode
864
876
  """Session input address type."""
865
877
  addressType: String
878
+ """Session input city."""
879
+ city: String
866
880
  """Session input postal code."""
867
881
  postalCode: String
868
882
  """Session input geoCoordinates."""
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.44.0](https://github.com/vtex/faststore/compare/v3.43.0...v3.44.0) (2025-05-13)
7
+
8
+ ### Features
9
+
10
+ - Delivery Promise - navigation based on shopper location ([#2716](https://github.com/vtex/faststore/issues/2716)) ([d683080](https://github.com/vtex/faststore/commit/d683080b9806bf7587be5ef84d403e30d3969e51)), closes [#2708](https://github.com/vtex/faststore/issues/2708) [#2728](https://github.com/vtex/faststore/issues/2728) [#2739](https://github.com/vtex/faststore/issues/2739) [#2745](https://github.com/vtex/faststore/issues/2745) [#2749](https://github.com/vtex/faststore/issues/2749) [#2750](https://github.com/vtex/faststore/issues/2750) [#2768](https://github.com/vtex/faststore/issues/2768) [#2772](https://github.com/vtex/faststore/issues/2772) [#2775](https://github.com/vtex/faststore/issues/2775) [#2809](https://github.com/vtex/faststore/issues/2809) [#2817](https://github.com/vtex/faststore/issues/2817) [#2824](https://github.com/vtex/faststore/issues/2824) [#2835](https://github.com/vtex/faststore/issues/2835)
11
+
6
12
  # [3.43.0](https://github.com/vtex/faststore/compare/v3.42.0...v3.43.0) (2025-05-12)
7
13
 
8
14
  ### Features
@@ -2206,7 +2206,7 @@
2206
2206
  "description": {
2207
2207
  "title": "Description",
2208
2208
  "type": "string",
2209
- "default": "Prices, offers and availability may vary according to your location."
2209
+ "default": "Offers and availability vary by location"
2210
2210
  },
2211
2211
  "closeButtonAriaLabel": {
2212
2212
  "title": "Close modal aria-label",
@@ -2226,6 +2226,17 @@
2226
2226
  "title": "Input field error message",
2227
2227
  "type": "string",
2228
2228
  "default": "You entered an invalid Postal Code"
2229
+ },
2230
+ "noProductsAvailableErrorMessage": {
2231
+ "title": "Input field error message for the scenario of no products available for a given location",
2232
+ "type": "string",
2233
+ "default": "There are no products available for %s.",
2234
+ "description": "The '%s' will be replaced by the postal code value."
2235
+ },
2236
+ "buttonActionText": {
2237
+ "title": "Input field action button label",
2238
+ "type": "string",
2239
+ "default": "Apply"
2229
2240
  }
2230
2241
  }
2231
2242
  },
@@ -2265,6 +2276,104 @@
2265
2276
  }
2266
2277
  }
2267
2278
  },
2279
+ {
2280
+ "name": "RegionPopover",
2281
+ "requiredScopes": [],
2282
+ "schema": {
2283
+ "title": "Region Popover",
2284
+ "type": "object",
2285
+ "description": "Region Popover configuration",
2286
+ "properties": {
2287
+ "title": {
2288
+ "title": "Title",
2289
+ "type": "string",
2290
+ "default": "Set your location"
2291
+ },
2292
+ "closeButtonAriaLabel": {
2293
+ "title": "Close popover aria-label",
2294
+ "type": "string",
2295
+ "default": "Close Region Popover"
2296
+ },
2297
+ "inputField": {
2298
+ "title": "Input Field",
2299
+ "type": "object",
2300
+ "properties": {
2301
+ "label": {
2302
+ "title": "Input field label",
2303
+ "type": "string",
2304
+ "default": "Postal Code"
2305
+ },
2306
+ "errorMessage": {
2307
+ "title": "Input field error message",
2308
+ "type": "string",
2309
+ "default": "You entered an invalid Postal Code"
2310
+ },
2311
+ "noProductsAvailableErrorMessage": {
2312
+ "title": "Input field error message for the scenario of no products available for a given location",
2313
+ "type": "string",
2314
+ "default": "There are no products available for %s.",
2315
+ "description": "The '%s' will be replaced by the postal code value."
2316
+ },
2317
+ "buttonActionText": {
2318
+ "title": "Input field action button label",
2319
+ "type": "string",
2320
+ "default": "Apply"
2321
+ }
2322
+ }
2323
+ },
2324
+ "textBeforeLocation": {
2325
+ "title": "Text before location",
2326
+ "type": "string",
2327
+ "default": "Your current location is",
2328
+ "description": "If location is available, this text will be shown before the location"
2329
+ },
2330
+ "textAfterLocation": {
2331
+ "title": "Text After location",
2332
+ "type": "string",
2333
+ "default": "Use the field below to change it.",
2334
+ "description": "If location is available, this text will be shown after the location"
2335
+ },
2336
+ "description": {
2337
+ "title": "Description",
2338
+ "type": "string",
2339
+ "default": "Offers and availability vary by location"
2340
+ },
2341
+ "idkPostalCodeLink": {
2342
+ "title": "I don't know my postal code link",
2343
+ "type": "object",
2344
+ "properties": {
2345
+ "text": {
2346
+ "type": "string",
2347
+ "title": "Link Text",
2348
+ "default": "I don't know my Postal Code"
2349
+ },
2350
+ "to": {
2351
+ "type": "string",
2352
+ "title": "Action link"
2353
+ },
2354
+ "icon": {
2355
+ "title": "Icon",
2356
+ "type": "object",
2357
+ "properties": {
2358
+ "icon": {
2359
+ "title": "Icon",
2360
+ "type": "string",
2361
+ "enumNames": ["Arrow Square Out"],
2362
+ "enum": ["ArrowSquareOut"],
2363
+ "default": "ArrowSquareOut"
2364
+ },
2365
+ "alt": {
2366
+ "title": "Alternative Label",
2367
+ "type": "string",
2368
+ "default": "Arrow Square Out icon"
2369
+ }
2370
+ }
2371
+ }
2372
+ }
2373
+ }
2374
+ }
2375
+ }
2376
+ },
2268
2377
  {
2269
2378
  "name": "EmptyState",
2270
2379
  "schema": {
@@ -52,6 +52,7 @@ module.exports = {
52
52
  country: 'USA',
53
53
  deliveryMode: null,
54
54
  addressType: null,
55
+ city: null,
55
56
  postalCode: null,
56
57
  geoCoordinates: null,
57
58
  b2b: null,
@@ -128,6 +129,11 @@ module.exports = {
128
129
  type: 'CMS',
129
130
  },
130
131
 
132
+ deliveryPromise: {
133
+ enabled: false,
134
+ mandatory: false,
135
+ },
136
+
131
137
  experimental: {
132
138
  cypressVersion: 12,
133
139
  enableCypressExtension: false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faststore/core",
3
- "version": "3.43.0",
3
+ "version": "3.44.0",
4
4
  "license": "MIT",
5
5
  "repository": "vtex/faststore",
6
6
  "browserslist": "supports es6-module and not dead",
@@ -44,12 +44,12 @@
44
44
  "@envelop/graphql-jit": "^8.0.3",
45
45
  "@envelop/parser-cache": "^6.0.2",
46
46
  "@envelop/validation-cache": "^6.0.2",
47
- "@faststore/api": "^3.41.8",
48
- "@faststore/components": "^3.42.0",
47
+ "@faststore/api": "^3.44.0",
48
+ "@faststore/components": "^3.44.0",
49
49
  "@faststore/graphql-utils": "^3.38.3",
50
50
  "@faststore/lighthouse": "^3.38.3",
51
- "@faststore/sdk": "^3.38.3",
52
- "@faststore/ui": "^3.42.0",
51
+ "@faststore/sdk": "^3.44.0",
52
+ "@faststore/ui": "^3.44.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",
@@ -106,5 +106,5 @@
106
106
  "ts-jest": "29.1.1",
107
107
  "typescript": "5.3.2"
108
108
  },
109
- "gitHead": "201303ea329a26779a521232b5f866dea4aa278c"
109
+ "gitHead": "14c097d5af92dbe8a6bf8e07e91ce4b343a827a7"
110
110
  }
package/src/Layout.tsx CHANGED
@@ -1,10 +1,12 @@
1
1
  import { useMemo, type PropsWithChildren, type ReactElement } from 'react'
2
2
 
3
+ import { useRegionModal } from './components/region/RegionModal/useRegionModal'
3
4
  import { usePageViewEvent } from './sdk/analytics/hooks/usePageViewEvent'
4
5
 
5
6
  function Layout({ children }: PropsWithChildren) {
6
7
  const props = useMemo(() => (children as ReactElement)?.props, [])
7
8
  usePageViewEvent(props)
9
+ useRegionModal()
8
10
 
9
11
  return <>{children}</>
10
12
  }
@@ -1,6 +1,7 @@
1
1
  import dynamic from 'next/dynamic'
2
2
  import type { ComponentType } from 'react'
3
3
 
4
+ import RegionPopover from 'src/components/region/RegionPopover'
4
5
  import { OverriddenDefaultAlert as Alert } from 'src/components/sections/Alert/OverriddenDefaultAlert'
5
6
  import { OverriddenDefaultNavbar as Navbar } from 'src/components/sections/Navbar/OverriddenDefaultNavbar'
6
7
  import { OverriddenDefaultRegionBar as RegionBar } from 'src/components/sections/RegionBar/OverriddenDefaultRegionBar'
@@ -32,6 +33,7 @@ const COMPONENTS: Record<string, ComponentType<any>> = {
32
33
  Alert,
33
34
  Navbar,
34
35
  RegionBar,
36
+ RegionPopover,
35
37
  CartSidebar, // out of viewport
36
38
  RegionModal, // out of viewport
37
39
  Footer, // out of viewport