@faststore/core 3.99.1 → 4.0.0-dev.1

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 (543) hide show
  1. package/.turbo/turbo-generate.log +29 -0
  2. package/.turbo/turbo-test.log +47 -16
  3. package/@generated/cached-operations.json +24 -0
  4. package/@generated/gql.ts +134 -210
  5. package/@generated/graphql.ts +1628 -3037
  6. package/@generated/index.ts +1 -1
  7. package/@generated/persisted-documents.json +1 -1
  8. package/@generated/schema.graphql +1854 -1743
  9. package/CHANGELOG.md +11 -5
  10. package/README.md +2 -1
  11. package/api/index.ts +6 -7
  12. package/cms/faststore/base.jsonc +1 -1
  13. package/cms/faststore/components/cms_component__alert.jsonc +5 -1
  14. package/cms/faststore/components/cms_component__bannernewsletter.jsonc +5 -1
  15. package/cms/faststore/components/cms_component__bannertext.jsonc +5 -1
  16. package/cms/faststore/components/cms_component__breadcrumb.jsonc +16 -4
  17. package/cms/faststore/components/cms_component__cartsidebar.jsonc +21 -1
  18. package/cms/faststore/components/cms_component__children.jsonc +5 -1
  19. package/cms/faststore/components/cms_component__crosssellingshelf.jsonc +5 -1
  20. package/cms/faststore/components/cms_component__emptystate.jsonc +8 -3
  21. package/cms/faststore/components/cms_component__footer.jsonc +9 -3
  22. package/cms/faststore/components/cms_component__hero.jsonc +5 -1
  23. package/cms/faststore/components/cms_component__incentives.jsonc +5 -1
  24. package/cms/faststore/components/cms_component__navbar.jsonc +139 -1
  25. package/cms/faststore/components/cms_component__newsletter.jsonc +5 -1
  26. package/cms/faststore/components/cms_component__productdetails.jsonc +33 -1
  27. package/cms/faststore/components/cms_component__productgallery.jsonc +113 -15
  28. package/cms/faststore/components/cms_component__productshelf.jsonc +5 -1
  29. package/cms/faststore/components/cms_component__producttiles.jsonc +5 -1
  30. package/cms/faststore/components/cms_component__regionbar.jsonc +5 -1
  31. package/cms/faststore/components/cms_component__regionmodal.jsonc +5 -1
  32. package/cms/faststore/components/cms_component__regionpopover.jsonc +5 -1
  33. package/cms/faststore/components/cms_component__scrolltotopbutton.jsonc +29 -0
  34. package/cms/faststore/components/cms_component__search.jsonc +5 -1
  35. package/cms/faststore/content-types.json +115 -0
  36. package/cms/faststore/pages/cms_content_type__globalsections.jsonc +52 -0
  37. package/cms/faststore/pages/cms_content_type__home.jsonc +6 -0
  38. package/cms/faststore/pages/cms_content_type__landingpage.jsonc +8 -1
  39. package/cms/faststore/pages/cms_content_type__pdp.jsonc +6 -0
  40. package/cms/faststore/pages/cms_content_type__plp.jsonc +17 -0
  41. package/cms/faststore/pages/cms_content_type__search.jsonc +17 -0
  42. package/cms/faststore/schema.json +547 -43
  43. package/cms/faststore/sections.json +330 -21
  44. package/discovery.config.default.js +49 -3
  45. package/next-env.d.ts +2 -1
  46. package/next.config.js +48 -26
  47. package/package.json +47 -60
  48. package/public/icons.svg +5 -1
  49. package/scripts/i18n.js +76 -0
  50. package/src/components/account/MyAccountDrawer/OrganizationDrawer/OrganizationDrawer.tsx +2 -1
  51. package/src/components/account/MyAccountDrawer/OrganizationDrawer/section.module.scss +25 -24
  52. package/src/components/account/MyAccountDrawer/ProfileSummary/profile-summary.scss +8 -6
  53. package/src/components/account/MyAccountLayout/styles.scss +16 -12
  54. package/src/components/account/MyAccountMenu/styles.scss +21 -22
  55. package/src/components/account/MyAccountUserDetails/styles.module.scss +4 -2
  56. package/src/components/account/components/MyAccountAccordion/styles.scss +4 -2
  57. package/src/components/account/components/MyAccountHeader/styles.scss +3 -1
  58. package/src/components/account/components/MyAccountTable/styles.scss +6 -4
  59. package/src/components/account/orders/MyAccountListOrders/MyAccountFilterSlider/section.module.scss +21 -19
  60. package/src/components/account/orders/MyAccountListOrders/MyAccountListOrdersTable/MyAccountListOrdersTable.tsx +3 -1
  61. package/src/components/account/orders/MyAccountListOrders/MyAccountListOrdersTable/styles.scss +5 -3
  62. package/src/components/account/orders/MyAccountListOrders/styles.module.scss +25 -22
  63. package/src/components/account/orders/MyAccountOrderDetails/MyAccountBudgetsCard/styles.scss +7 -5
  64. package/src/components/account/orders/MyAccountOrderDetails/MyAccountDeliveryOptionAccordion/styles.scss +7 -5
  65. package/src/components/account/orders/MyAccountOrderDetails/MyAccountMoreInformationCard/styles.scss +3 -1
  66. package/src/components/account/orders/MyAccountOrderDetails/MyAccountOrderActionModal/styles.module.scss +8 -6
  67. package/src/components/account/orders/MyAccountOrderDetails/MyAccountOrderActions/styles.scss +3 -1
  68. package/src/components/account/orders/MyAccountOrderDetails/MyAccountStatusCard/styles.scss +8 -6
  69. package/src/components/account/orders/MyAccountOrderDetails/section.module.scss +36 -43
  70. package/src/components/account/profile/profile.module.scss +3 -1
  71. package/src/components/account/section.module.scss +3 -1
  72. package/src/components/account/security/styles.module.scss +14 -8
  73. package/src/components/cart/CartSidebar/CartSidebar.tsx +10 -1
  74. package/src/components/cart/CartSidebar/section.module.scss +19 -17
  75. package/src/components/cart/EmptyCart/EmptyCart.tsx +12 -4
  76. package/src/components/cms/GlobalSections.tsx +12 -12
  77. package/src/components/cms/RenderSections.tsx +10 -2
  78. package/src/components/cms/plp/Components.ts +9 -0
  79. package/src/components/common/Alert/section.module.scss +10 -5
  80. package/src/components/common/PreviewTag/section.module.scss +48 -40
  81. package/src/components/common/Toast/section.module.scss +4 -2
  82. package/src/components/localization/LocalizationSelector/LocalizationSelector.tsx +320 -0
  83. package/src/components/localization/LocalizationSelector/index.ts +1 -0
  84. package/src/components/localization/LocalizationSelector/section.module.scss +18 -0
  85. package/src/components/localization/index.ts +1 -0
  86. package/src/components/navigation/Navbar/Navbar.tsx +49 -1
  87. package/src/components/navigation/NavbarSlider/NavbarSlider.tsx +19 -1
  88. package/src/components/navigation/NavbarSlider/section.module.scss +12 -10
  89. package/src/components/product/OutOfStock/OutOfStock.tsx +6 -1
  90. package/src/components/product/ProductCard/ProductCard.tsx +1 -1
  91. package/src/components/region/RegionModal/RegionModal.tsx +4 -1
  92. package/src/components/region/RegionModal/section.module.scss +10 -8
  93. package/src/components/region/RegionPopover/RegionPopover.tsx +6 -5
  94. package/src/components/region/RegionPopover/section.module.scss +9 -7
  95. package/src/components/region/RegionSlider/RegionSlider.tsx +5 -2
  96. package/src/components/region/RegionSlider/section.module.scss +16 -13
  97. package/src/components/search/Filter/FilterDeliveryMethodFacet.tsx +5 -5
  98. package/src/components/search/Filter/FilterDesktop.tsx +13 -4
  99. package/src/components/search/Filter/FilterSlider.tsx +18 -6
  100. package/src/components/search/Filter/section.module.scss +21 -19
  101. package/src/components/search/SearchDropdown/SearchDropdown.tsx +9 -7
  102. package/src/components/search/SearchHistory/SearchHistory.tsx +7 -2
  103. package/src/components/search/SearchInput/SearchInput.tsx +21 -8
  104. package/src/components/search/SearchProductItem/SearchProductItem.tsx +10 -3
  105. package/src/components/search/SearchTop/SearchTop.tsx +30 -24
  106. package/src/components/search/Sort/Sort.tsx +17 -19
  107. package/src/components/sections/Alert/Alert.tsx +6 -1
  108. package/src/components/sections/BannerNewsletter/section.module.scss +6 -4
  109. package/src/components/sections/BannerText/section.module.scss +5 -3
  110. package/src/components/sections/Breadcrumb/Breadcrumb.tsx +6 -2
  111. package/src/components/sections/Breadcrumb/section.module.scss +7 -5
  112. package/src/components/sections/EmptyState/section.module.scss +5 -3
  113. package/src/components/sections/Footer/Footer.tsx +1 -5
  114. package/src/components/sections/Footer/section.module.scss +10 -8
  115. package/src/components/sections/Hero/Hero.tsx +3 -1
  116. package/src/components/sections/Hero/section.module.scss +6 -4
  117. package/src/components/sections/Incentives/section.module.scss +5 -3
  118. package/src/components/sections/Navbar/Navbar.tsx +45 -0
  119. package/src/components/sections/Navbar/section.module.scss +34 -33
  120. package/src/components/sections/Newsletter/section.module.scss +10 -8
  121. package/src/components/sections/ProductDetails/ProductDetails.tsx +23 -1
  122. package/src/components/sections/ProductDetails/section.module.scss +32 -30
  123. package/src/components/sections/ProductGallery/EmptyGallery.tsx +13 -16
  124. package/src/components/sections/ProductGallery/section.module.scss +42 -39
  125. package/src/components/sections/ProductShelf/section.module.scss +22 -17
  126. package/src/components/sections/ProductTiles/section.module.scss +15 -13
  127. package/src/components/sections/RegionBar/section.module.scss +5 -3
  128. package/src/components/sections/ScrollToTopButton/ScrollToTopButton.tsx +4 -3
  129. package/src/components/sections/ScrollToTopButton/section.module.scss +4 -2
  130. package/src/components/templates/LandingPage/LandingPage.tsx +22 -16
  131. package/src/components/templates/ProductListingPage/ProductListing.tsx +1 -13
  132. package/src/components/templates/ProductListingPage/ProductListingPage.tsx +8 -3
  133. package/src/components/ui/Breadcrumb/Breadcrumb.tsx +14 -11
  134. package/src/components/ui/Button/ButtonSignIn/ButtonSignIn.tsx +2 -1
  135. package/src/components/ui/Button/ButtonSignIn/ButtonSignInFallback/ButtonSignInFallback.tsx +3 -1
  136. package/src/components/ui/Link/Link.tsx +19 -2
  137. package/src/components/ui/LinkButton/LinkButton.tsx +28 -0
  138. package/src/components/ui/LinkButton/index.ts +2 -0
  139. package/src/components/ui/LocalizationButton/LocalizationButton.tsx +124 -0
  140. package/src/components/ui/LocalizationButton/index.ts +1 -0
  141. package/src/components/ui/PickupPoints/PickupPointCards.tsx +2 -4
  142. package/src/components/ui/ProductComparison/ProductComparisonSidebar.tsx +34 -17
  143. package/src/components/ui/ProductDescription/ProductDescription.tsx +8 -3
  144. package/src/components/ui/ProductDetails/AddToCartLoadingSkeleton.tsx +6 -2
  145. package/src/components/ui/ProductDetails/ProductDetailsSettings.tsx +17 -5
  146. package/src/components/ui/ProductGallery/ProductGallery.tsx +7 -3
  147. package/src/components/ui/ProductGallery/ProductGalleryPage.tsx +1 -3
  148. package/src/components/ui/ShippingSimulation/ShippingSimulation.tsx +6 -1
  149. package/src/customizations/src/styles/custom-mixins.scss +0 -2
  150. package/src/experimental/index.ts +26 -0
  151. package/src/experimental/myAccountServerSideProps.ts +11 -2
  152. package/src/experimental/searchServerSideFunctions/getServerSideProps.ts +13 -7
  153. package/src/experimental/searchServerSideFunctions/getStaticProps.ts +5 -4
  154. package/src/instrumentation.ts +20 -6
  155. package/src/pages/404.tsx +5 -4
  156. package/src/pages/500.tsx +5 -4
  157. package/src/pages/[...slug].tsx +7 -4
  158. package/src/pages/[slug]/p.tsx +26 -8
  159. package/src/pages/_app.tsx +9 -1
  160. package/src/pages/api/fs/logout.ts +3 -2
  161. package/src/pages/api/graphql.ts +7 -23
  162. package/src/pages/api/preview.ts +21 -8
  163. package/src/pages/checkout.tsx +15 -5
  164. package/src/pages/index.tsx +18 -9
  165. package/src/pages/login.tsx +5 -4
  166. package/src/pages/pvt/account/403.tsx +11 -2
  167. package/src/pages/pvt/account/404.tsx +13 -3
  168. package/src/pages/pvt/account/index.tsx +6 -4
  169. package/src/pages/pvt/account/orders/[id].tsx +11 -3
  170. package/src/pages/pvt/account/orders/index.tsx +11 -3
  171. package/src/pages/pvt/account/profile.tsx +11 -2
  172. package/src/pages/pvt/account/security.tsx +11 -2
  173. package/src/pages/pvt/account/user-details.tsx +11 -2
  174. package/src/pages/s.tsx +26 -6
  175. package/src/proxy.ts +154 -0
  176. package/src/sdk/account/refreshToken.ts +4 -4
  177. package/src/sdk/account/useReorder.ts +8 -2
  178. package/src/sdk/analytics/platform/vtex/search.ts +3 -2
  179. package/src/sdk/cart/redirectToCheckout.ts +14 -8
  180. package/src/sdk/cart/useCheckoutButton.ts +7 -1
  181. package/src/sdk/deliveryPromise/useDeliveryPromise.ts +10 -18
  182. package/src/sdk/graphql/request.ts +102 -50
  183. package/src/sdk/localization/bindingSelector.ts +91 -0
  184. package/src/sdk/localization/index.ts +4 -0
  185. package/src/sdk/localization/match-url.ts +64 -0
  186. package/src/sdk/localization/types.ts +31 -0
  187. package/src/sdk/localization/useBindingSelector.ts +183 -0
  188. package/src/sdk/localization/useLocaleValidation.ts +49 -0
  189. package/src/sdk/localization/useLocalizationConfig.tsx +160 -0
  190. package/src/sdk/offer/fetcher.ts +3 -2
  191. package/src/sdk/product/useLocalizedVariables.ts +1 -1
  192. package/src/sdk/product/usePageProductsQuery.ts +2 -2
  193. package/src/sdk/product/useProductGalleryQuery.ts +1 -2
  194. package/src/sdk/product/useProductLink.ts +3 -1
  195. package/src/sdk/search/formatSearchPath.ts +28 -3
  196. package/src/sdk/search/state.ts +22 -13
  197. package/src/sdk/search/useSearchBase.ts +10 -0
  198. package/src/sdk/search/useSearchHistory.ts +41 -7
  199. package/src/sdk/session/index.ts +21 -3
  200. package/src/sdk/shipping/useShippingSimulation.ts +10 -2
  201. package/src/sdk/tsconfig.json +6 -0
  202. package/src/sdk/ui/useLink.ts +48 -0
  203. package/src/server/cms/global.ts +40 -0
  204. package/src/server/cms/index.ts +18 -10
  205. package/src/server/cms/pdp.ts +1 -0
  206. package/src/server/cms/plp.ts +3 -0
  207. package/src/server/content/service.ts +36 -24
  208. package/src/server/content/types.ts +10 -3
  209. package/src/server/index.ts +27 -20
  210. package/src/server/options.ts +27 -2
  211. package/src/styles/global/index.scss +10 -7
  212. package/src/styles/main.scss +3 -3
  213. package/src/typings/locales.ts +41 -0
  214. package/src/utils/fetchProductGallerySSR.ts +3 -1
  215. package/src/utils/getBaseDomain.ts +2 -1
  216. package/src/utils/getRequestHostname.ts +26 -0
  217. package/src/utils/globalSettings.ts +11 -0
  218. package/src/utils/localization/bindingPaths.ts +337 -0
  219. package/src/utils/localization/validateLocaleForHostname.ts +69 -0
  220. package/src/utils/localization/withLocaleValidation.ts +36 -0
  221. package/src/utils/utilities.ts +22 -0
  222. package/test/pages/api/preview.test.ts +93 -0
  223. package/test/sdk/localization/bindingSelector.test.ts +246 -0
  224. package/test/sdk/localization/store-url.browser.test.ts +140 -0
  225. package/test/sdk/localization/store-url.test.ts +96 -0
  226. package/test/sdk/localization/useBindingSelector.test.tsx +219 -0
  227. package/test/sdk/search/useSearchHistory.test.ts +222 -0
  228. package/test/server/cms/index.test.ts +3 -4
  229. package/test/server/content/service.test.ts +98 -0
  230. package/test/server/index.test.ts +10 -22
  231. package/test/utils/cookieCacheBusting.test.ts +32 -24
  232. package/test/utils/getRequestHostname.test.ts +71 -0
  233. package/test/utils/localization/bindingPaths.test.ts +706 -0
  234. package/test/utils/match-url.test.ts +388 -0
  235. package/tsconfig.json +11 -3
  236. package/vitest.config.ts +61 -0
  237. package/.next/BUILD_ID +0 -1
  238. package/.next/build-manifest.json +0 -197
  239. package/.next/cache/.tsbuildinfo +0 -1
  240. package/.next/cache/config.json +0 -7
  241. package/.next/cache/webpack/client-production/0.pack +0 -0
  242. package/.next/cache/webpack/client-production/index.pack +0 -0
  243. package/.next/cache/webpack/edge-server-production/0.pack +0 -0
  244. package/.next/cache/webpack/edge-server-production/index.pack +0 -0
  245. package/.next/cache/webpack/server-production/0.pack +0 -0
  246. package/.next/cache/webpack/server-production/index.pack +0 -0
  247. package/.next/export-marker.json +0 -1
  248. package/.next/images-manifest.json +0 -1
  249. package/.next/next-minimal-server.js.nft.json +0 -1
  250. package/.next/next-server.js.nft.json +0 -1
  251. package/.next/package.json +0 -1
  252. package/.next/prerender-manifest.js +0 -1
  253. package/.next/prerender-manifest.json +0 -1
  254. package/.next/react-loadable-manifest.json +0 -478
  255. package/.next/required-server-files.json +0 -1
  256. package/.next/routes-manifest.json +0 -1
  257. package/.next/server/chunks/1280.js +0 -1
  258. package/.next/server/chunks/1454.js +0 -1
  259. package/.next/server/chunks/1554.js +0 -1
  260. package/.next/server/chunks/1607.js +0 -1
  261. package/.next/server/chunks/1780.js +0 -1
  262. package/.next/server/chunks/1917.js +0 -1
  263. package/.next/server/chunks/1972.js +0 -1
  264. package/.next/server/chunks/2230.js +0 -1
  265. package/.next/server/chunks/2249.js +0 -1
  266. package/.next/server/chunks/2430.js +0 -1
  267. package/.next/server/chunks/2445.js +0 -12
  268. package/.next/server/chunks/2570.js +0 -1
  269. package/.next/server/chunks/2792.js +0 -1
  270. package/.next/server/chunks/2903.js +0 -1
  271. package/.next/server/chunks/294.js +0 -1
  272. package/.next/server/chunks/2955.js +0 -1
  273. package/.next/server/chunks/3006.js +0 -1
  274. package/.next/server/chunks/3029.js +0 -1
  275. package/.next/server/chunks/3060.js +0 -1
  276. package/.next/server/chunks/3408.js +0 -1
  277. package/.next/server/chunks/3483.js +0 -1
  278. package/.next/server/chunks/3683.js +0 -1
  279. package/.next/server/chunks/3836.js +0 -1
  280. package/.next/server/chunks/3890.js +0 -494
  281. package/.next/server/chunks/3922.js +0 -1
  282. package/.next/server/chunks/3945.js +0 -1
  283. package/.next/server/chunks/3951.js +0 -7
  284. package/.next/server/chunks/416.js +0 -1
  285. package/.next/server/chunks/4194.js +0 -1
  286. package/.next/server/chunks/4365.js +0 -1
  287. package/.next/server/chunks/4451.js +0 -1
  288. package/.next/server/chunks/4803.js +0 -1
  289. package/.next/server/chunks/4913.js +0 -13
  290. package/.next/server/chunks/5402.js +0 -1
  291. package/.next/server/chunks/5723.js +0 -13
  292. package/.next/server/chunks/5796.js +0 -1
  293. package/.next/server/chunks/6393.js +0 -1
  294. package/.next/server/chunks/6457.js +0 -6
  295. package/.next/server/chunks/6698.js +0 -1
  296. package/.next/server/chunks/6804.js +0 -6
  297. package/.next/server/chunks/6886.js +0 -1
  298. package/.next/server/chunks/7098.js +0 -9
  299. package/.next/server/chunks/7169.js +0 -1
  300. package/.next/server/chunks/7228.js +0 -1
  301. package/.next/server/chunks/7275.js +0 -1
  302. package/.next/server/chunks/7371.js +0 -1
  303. package/.next/server/chunks/7692.js +0 -1
  304. package/.next/server/chunks/7799.js +0 -1
  305. package/.next/server/chunks/8068.js +0 -1
  306. package/.next/server/chunks/83.js +0 -1
  307. package/.next/server/chunks/831.js +0 -1
  308. package/.next/server/chunks/8563.js +0 -1
  309. package/.next/server/chunks/8569.js +0 -1
  310. package/.next/server/chunks/8687.js +0 -1
  311. package/.next/server/chunks/870.js +0 -1
  312. package/.next/server/chunks/8737.js +0 -1
  313. package/.next/server/chunks/8741.js +0 -1
  314. package/.next/server/chunks/9088.js +0 -1
  315. package/.next/server/chunks/9117.js +0 -1
  316. package/.next/server/chunks/9237.js +0 -1
  317. package/.next/server/chunks/948.js +0 -3
  318. package/.next/server/chunks/9563.js +0 -3
  319. package/.next/server/chunks/9570.js +0 -1
  320. package/.next/server/chunks/9740.js +0 -1
  321. package/.next/server/chunks/9853.js +0 -1
  322. package/.next/server/chunks/9984.js +0 -1
  323. package/.next/server/chunks/9985.js +0 -1
  324. package/.next/server/chunks/9990.js +0 -1
  325. package/.next/server/chunks/ButtonSignIn.js +0 -1
  326. package/.next/server/chunks/Dropdown.js +0 -1
  327. package/.next/server/chunks/DropdownButton.js +0 -1
  328. package/.next/server/chunks/DropdownItem.js +0 -1
  329. package/.next/server/chunks/DropdownMenu.js +0 -1
  330. package/.next/server/chunks/FilterSkeleton.js +0 -1
  331. package/.next/server/chunks/ScrollToTopButton.js +0 -1
  332. package/.next/server/chunks/UIBannerText.js +0 -1
  333. package/.next/server/chunks/UISKUMatrixSidebar.js +0 -1
  334. package/.next/server/chunks/font-manifest.json +0 -1
  335. package/.next/server/edge-instrumentation.js +0 -2
  336. package/.next/server/edge-instrumentation.js.map +0 -1
  337. package/.next/server/edge-runtime-webpack.js +0 -157
  338. package/.next/server/edge-runtime-webpack.js.map +0 -1
  339. package/.next/server/font-manifest.json +0 -1
  340. package/.next/server/functions-config-manifest.json +0 -1
  341. package/.next/server/instrumentation.js +0 -1
  342. package/.next/server/instrumentation.js.nft.json +0 -1
  343. package/.next/server/middleware-build-manifest.js +0 -1
  344. package/.next/server/middleware-manifest.json +0 -6
  345. package/.next/server/middleware-react-loadable-manifest.js +0 -1
  346. package/.next/server/next-font-manifest.js +0 -1
  347. package/.next/server/next-font-manifest.json +0 -1
  348. package/.next/server/pages/404.js +0 -1
  349. package/.next/server/pages/404.js.nft.json +0 -1
  350. package/.next/server/pages/500.js +0 -1
  351. package/.next/server/pages/500.js.nft.json +0 -1
  352. package/.next/server/pages/[...slug].js +0 -1
  353. package/.next/server/pages/[...slug].js.nft.json +0 -1
  354. package/.next/server/pages/[slug]/p.js +0 -1
  355. package/.next/server/pages/[slug]/p.js.nft.json +0 -1
  356. package/.next/server/pages/_app.js +0 -1
  357. package/.next/server/pages/_app.js.nft.json +0 -1
  358. package/.next/server/pages/_document.js +0 -1
  359. package/.next/server/pages/_document.js.nft.json +0 -1
  360. package/.next/server/pages/_error.js +0 -1
  361. package/.next/server/pages/_error.js.nft.json +0 -1
  362. package/.next/server/pages/api/fs/logout.js +0 -1
  363. package/.next/server/pages/api/fs/logout.js.nft.json +0 -1
  364. package/.next/server/pages/api/graphql.js +0 -3
  365. package/.next/server/pages/api/graphql.js.nft.json +0 -1
  366. package/.next/server/pages/api/health/live.js +0 -1
  367. package/.next/server/pages/api/health/live.js.nft.json +0 -1
  368. package/.next/server/pages/api/health/ready.js +0 -1
  369. package/.next/server/pages/api/health/ready.js.nft.json +0 -1
  370. package/.next/server/pages/api/preview.js +0 -1
  371. package/.next/server/pages/api/preview.js.nft.json +0 -1
  372. package/.next/server/pages/checkout.js +0 -1
  373. package/.next/server/pages/checkout.js.nft.json +0 -1
  374. package/.next/server/pages/en-US/404.html +0 -42
  375. package/.next/server/pages/en-US/404.json +0 -1
  376. package/.next/server/pages/en-US/500.html +0 -42
  377. package/.next/server/pages/en-US/500.json +0 -1
  378. package/.next/server/pages/en-US/checkout.html +0 -42
  379. package/.next/server/pages/en-US/checkout.json +0 -1
  380. package/.next/server/pages/en-US/login.html +0 -42
  381. package/.next/server/pages/en-US/login.json +0 -1
  382. package/.next/server/pages/en-US/s.html +0 -42
  383. package/.next/server/pages/en-US/s.json +0 -1
  384. package/.next/server/pages/en-US.html +0 -42
  385. package/.next/server/pages/en-US.json +0 -1
  386. package/.next/server/pages/index.js +0 -1
  387. package/.next/server/pages/index.js.nft.json +0 -1
  388. package/.next/server/pages/login.js +0 -1
  389. package/.next/server/pages/login.js.nft.json +0 -1
  390. package/.next/server/pages/pvt/account/403.js +0 -1
  391. package/.next/server/pages/pvt/account/403.js.nft.json +0 -1
  392. package/.next/server/pages/pvt/account/404.js +0 -1
  393. package/.next/server/pages/pvt/account/404.js.nft.json +0 -1
  394. package/.next/server/pages/pvt/account/[...unknown].js +0 -1
  395. package/.next/server/pages/pvt/account/[...unknown].js.nft.json +0 -1
  396. package/.next/server/pages/pvt/account/orders/[id].js +0 -1
  397. package/.next/server/pages/pvt/account/orders/[id].js.nft.json +0 -1
  398. package/.next/server/pages/pvt/account/orders.js +0 -1
  399. package/.next/server/pages/pvt/account/orders.js.nft.json +0 -1
  400. package/.next/server/pages/pvt/account/profile.js +0 -1
  401. package/.next/server/pages/pvt/account/profile.js.nft.json +0 -1
  402. package/.next/server/pages/pvt/account/security.js +0 -1
  403. package/.next/server/pages/pvt/account/security.js.nft.json +0 -1
  404. package/.next/server/pages/pvt/account/user-details.js +0 -1
  405. package/.next/server/pages/pvt/account/user-details.js.nft.json +0 -1
  406. package/.next/server/pages/pvt/account.js +0 -1
  407. package/.next/server/pages/pvt/account.js.nft.json +0 -1
  408. package/.next/server/pages/s.js +0 -1
  409. package/.next/server/pages/s.js.nft.json +0 -1
  410. package/.next/server/pages-manifest.json +0 -1
  411. package/.next/server/webpack-api-runtime.js +0 -1
  412. package/.next/server/webpack-runtime.js +0 -1
  413. package/.next/static/NAuY8lqaeBBZf9CMZuYI2/_buildManifest.js +0 -1
  414. package/.next/static/NAuY8lqaeBBZf9CMZuYI2/_ssgManifest.js +0 -1
  415. package/.next/static/chunks/227-f109b24190a008ab.js +0 -8
  416. package/.next/static/chunks/2284.185d834d9829b652.js +0 -1
  417. package/.next/static/chunks/2851.e68ed3c8d27a032a.js +0 -1
  418. package/.next/static/chunks/2927.5a79877943a6bf7c.js +0 -1
  419. package/.next/static/chunks/3155.7bc4c730a79d9ecb.js +0 -1
  420. package/.next/static/chunks/3166-0b30a3887c0c346d.js +0 -1
  421. package/.next/static/chunks/3399.017c5209b74b0d97.js +0 -1
  422. package/.next/static/chunks/3483.ef53d632a763da3f.js +0 -1
  423. package/.next/static/chunks/349.b3b38e1e9f719dda.js +0 -1
  424. package/.next/static/chunks/3802.5e8b0b689eacc0f8.js +0 -1
  425. package/.next/static/chunks/3836.620480018be48233.js +0 -1
  426. package/.next/static/chunks/4436.e7af66f0b654ee36.js +0 -1
  427. package/.next/static/chunks/4803.b1920b6e3a1a6304.js +0 -1
  428. package/.next/static/chunks/5796.4351370494d8b8b6.js +0 -1
  429. package/.next/static/chunks/6393.55f991b1a6bb4fe7.js +0 -1
  430. package/.next/static/chunks/6700.b23221a57514e737.js +0 -1
  431. package/.next/static/chunks/6789.960162355435a81d.js +0 -1
  432. package/.next/static/chunks/7191-befad64ba238a817.js +0 -1
  433. package/.next/static/chunks/7692.8d5bf4560341a2f6.js +0 -1
  434. package/.next/static/chunks/7861.7f9f1a124a43da30.js +0 -6
  435. package/.next/static/chunks/8068.43663fb64762f7b8.js +0 -1
  436. package/.next/static/chunks/83.e0c16f0299b364a5.js +0 -1
  437. package/.next/static/chunks/8325.dabe9aa22eaadeed.js +0 -1
  438. package/.next/static/chunks/8587.53c8ce185ed1a2cb.js +0 -1
  439. package/.next/static/chunks/9173-e89da04079c35360.js +0 -2
  440. package/.next/static/chunks/9237.7555603703f81bf7.js +0 -1
  441. package/.next/static/chunks/9298-1d1ed0a54133cb59.js +0 -28
  442. package/.next/static/chunks/9399.d116a7fd62024783.js +0 -1
  443. package/.next/static/chunks/941.3e2782ab9c490eb0.js +0 -1
  444. package/.next/static/chunks/9701.f9a0bfffba8807dc.js +0 -1
  445. package/.next/static/chunks/9909.787576b171184aa5.js +0 -1
  446. package/.next/static/chunks/9960.7ef77f8a8b046170.js +0 -1
  447. package/.next/static/chunks/9979.aedbc094bdc2c599.js +0 -1
  448. package/.next/static/chunks/BannerNewsletter.00328ad162109908.js +0 -1
  449. package/.next/static/chunks/BannerText.dbbec87cadb8a521.js +0 -1
  450. package/.next/static/chunks/ButtonSignIn.f6e210eaca873e48.js +0 -1
  451. package/.next/static/chunks/CartItem.b34e295377f6f94f.js +0 -1
  452. package/.next/static/chunks/CartSidebar.ac447d1ef6276da1.js +0 -1
  453. package/.next/static/chunks/Dropdown.38b48c749bad6b60.js +0 -1
  454. package/.next/static/chunks/DropdownButton.66fa6b25dddb3a07.js +0 -1
  455. package/.next/static/chunks/DropdownItem.38b8f5a07c7f422a.js +0 -1
  456. package/.next/static/chunks/DropdownMenu.48b11521a24c6efd.js +0 -1
  457. package/.next/static/chunks/EmptyCart.320e2f94a0d5e6b1.js +0 -1
  458. package/.next/static/chunks/FilterSkeleton.7ab99e28f92341c9.js +0 -1
  459. package/.next/static/chunks/Footer.166b02c2f13980c6.js +0 -1
  460. package/.next/static/chunks/Gift.c49ba26da2fbab5e.js +0 -1
  461. package/.next/static/chunks/Newsletter.fc406f6029057022.js +0 -1
  462. package/.next/static/chunks/OrderSummary.5957d69f990d9add.js +0 -1
  463. package/.next/static/chunks/PreviewTag.f4f0c8710a7bcad9.js +0 -1
  464. package/.next/static/chunks/ProductShelf.cc46f5cdeeaeaff6.js +0 -1
  465. package/.next/static/chunks/ProductTiles.9b804e51b0704d60.js +0 -1
  466. package/.next/static/chunks/RegionModal.319ad44250cb12d2.js +0 -1
  467. package/.next/static/chunks/RegionSlider.0e0e93369f4f9c92.js +0 -1
  468. package/.next/static/chunks/ScrollToTopButton.c15431f2e8bb93ef.js +0 -1
  469. package/.next/static/chunks/ShoppingAssistant.ba191eb4dbed67e5.js +0 -1
  470. package/.next/static/chunks/Toast.5f90f0436708be5e.js +0 -1
  471. package/.next/static/chunks/UIBannerText.7315b16af4457059.js +0 -1
  472. package/.next/static/chunks/UISKUMatrixSidebar.b4349b2682bbe183.js +0 -1
  473. package/.next/static/chunks/UIToast.19a8664c01a00d3a.js +0 -1
  474. package/.next/static/chunks/framework-d514426edf885c68.js +0 -33
  475. package/.next/static/chunks/main-ec03882c4375091d.js +0 -1
  476. package/.next/static/chunks/pages/404-e3dfbbac003b02a2.js +0 -1
  477. package/.next/static/chunks/pages/500-c7814e085081d7b8.js +0 -1
  478. package/.next/static/chunks/pages/[...slug]-dc8a395a43b081f1.js +0 -1
  479. package/.next/static/chunks/pages/[slug]/p-644f1132f5a0f736.js +0 -1
  480. package/.next/static/chunks/pages/_app-84aaff8a9d4de60e.js +0 -1
  481. package/.next/static/chunks/pages/_error-2b0148be56a716e9.js +0 -1
  482. package/.next/static/chunks/pages/checkout-2071467ad42dfb99.js +0 -1
  483. package/.next/static/chunks/pages/index-8774d5b4a8744eb2.js +0 -1
  484. package/.next/static/chunks/pages/login-e74747c9f9cb5b49.js +0 -1
  485. package/.next/static/chunks/pages/pvt/account/403-491e6b062487b30f.js +0 -1
  486. package/.next/static/chunks/pages/pvt/account/404-5ad472d9f2ee1980.js +0 -1
  487. package/.next/static/chunks/pages/pvt/account/[...unknown]-f80f645594d2740c.js +0 -1
  488. package/.next/static/chunks/pages/pvt/account/orders/[id]-64e42157c0974c48.js +0 -1
  489. package/.next/static/chunks/pages/pvt/account/orders-faab39f2aff05fae.js +0 -1
  490. package/.next/static/chunks/pages/pvt/account/profile-9672177ee2665bc0.js +0 -1
  491. package/.next/static/chunks/pages/pvt/account/security-03eb1ccab9a30563.js +0 -1
  492. package/.next/static/chunks/pages/pvt/account/user-details-7838e3f79781596c.js +0 -1
  493. package/.next/static/chunks/pages/pvt/account-65fefcc699344bdb.js +0 -1
  494. package/.next/static/chunks/pages/s-162ba789e6611175.js +0 -1
  495. package/.next/static/chunks/polyfills-c67a75d1b6f99dc8.js +0 -1
  496. package/.next/static/chunks/webpack-f621ff3e951d2982.js +0 -1
  497. package/.next/static/css/02259c549b2179f2.css +0 -1
  498. package/.next/static/css/02eaf202d3d11fd1.css +0 -1
  499. package/.next/static/css/033e241c58ba6fbb.css +0 -1
  500. package/.next/static/css/042d012bc1895b5c.css +0 -1
  501. package/.next/static/css/14176a4704ff97b2.css +0 -1
  502. package/.next/static/css/146a8678babc61bf.css +0 -1
  503. package/.next/static/css/16d65422bfa80f51.css +0 -1
  504. package/.next/static/css/1c4983f11b861ea0.css +0 -1
  505. package/.next/static/css/204754bbd8cc4bef.css +0 -1
  506. package/.next/static/css/24d91007fc96be10.css +0 -1
  507. package/.next/static/css/2980acad3f8e1028.css +0 -1
  508. package/.next/static/css/2c19433e38fd7533.css +0 -1
  509. package/.next/static/css/31380ebc6e671486.css +0 -1
  510. package/.next/static/css/42df884711219edb.css +0 -1
  511. package/.next/static/css/4f0597b0bf0ef2e1.css +0 -1
  512. package/.next/static/css/54cedf4b65e5863f.css +0 -1
  513. package/.next/static/css/6580147d7ab8fcca.css +0 -1
  514. package/.next/static/css/6819dddf2b1b5ea7.css +0 -1
  515. package/.next/static/css/7ef7762f412ed665.css +0 -1
  516. package/.next/static/css/82f3cd529b672812.css +0 -1
  517. package/.next/static/css/837662922091162f.css +0 -1
  518. package/.next/static/css/8e6ab59ace21e03b.css +0 -1
  519. package/.next/static/css/a852afa9be31e946.css +0 -1
  520. package/.next/static/css/b684b347c5cc6514.css +0 -1
  521. package/.next/static/css/bcdaef0a83277ef5.css +0 -1
  522. package/.next/static/css/c33615999008d3f9.css +0 -1
  523. package/.next/static/css/c34f6ea9953e2f63.css +0 -1
  524. package/.next/static/css/ea11d74a2848b093.css +0 -1
  525. package/.next/static/css/f16438bcf4508fb3.css +0 -1
  526. package/.next/static/css/f60366555f563deb.css +0 -1
  527. package/.next/trace +0 -143
  528. package/.turbo/turbo-build.log +0 -140
  529. package/jest.config.js +0 -17
  530. package/public/~partytown/debug/partytown-atomics.js +0 -556
  531. package/public/~partytown/debug/partytown-media.js +0 -374
  532. package/public/~partytown/debug/partytown-sandbox-sw.js +0 -543
  533. package/public/~partytown/debug/partytown-sw.js +0 -59
  534. package/public/~partytown/debug/partytown-ww-atomics.js +0 -1789
  535. package/public/~partytown/debug/partytown-ww-sw.js +0 -1781
  536. package/public/~partytown/debug/partytown.js +0 -72
  537. package/public/~partytown/partytown-atomics.js +0 -2
  538. package/public/~partytown/partytown-media.js +0 -2
  539. package/public/~partytown/partytown-sw.js +0 -2
  540. package/public/~partytown/partytown.js +0 -2
  541. package/src/middleware__DISABLED.ts +0 -65
  542. package/src/server/generator/generateGraphQLSchemaFile.ts +0 -3
  543. package/src/server/generator/schema.ts +0 -81
@@ -222,6 +222,21 @@
222
222
  "score_desc"
223
223
  ]
224
224
  },
225
+ "submitButtonAriaLabel": {
226
+ "title": "Submit Search Button aria-label",
227
+ "type": "string",
228
+ "default": "Submit Search"
229
+ },
230
+ "searchHistoryTitle": {
231
+ "title": "Search History Title",
232
+ "type": "string",
233
+ "default": "History"
234
+ },
235
+ "searchTopTitle": {
236
+ "title": "Top Search Title",
237
+ "type": "string",
238
+ "default": "Top search"
239
+ },
225
240
  "quickOrderSettings": {
226
241
  "title": "Quick Order settings",
227
242
  "type": "object",
@@ -334,6 +349,29 @@
334
349
  }
335
350
  }
336
351
  },
352
+ "invalidQuantityToastLabels": {
353
+ "title": "Invalid quantity toast",
354
+ "description": "This toast will be displayed when the quantity is out of the range of the min and max values.",
355
+ "type": "object",
356
+ "properties": {
357
+ "title": {
358
+ "title": "Title",
359
+ "type": "string",
360
+ "default": "Invalid quantity!"
361
+ },
362
+ "message": {
363
+ "title": "Message",
364
+ "type": "string",
365
+ "description": "If the message has %{min}, %{max} and %{quantity} placeholders, they will be replaced by the min, max and quantity values.",
366
+ "default": "The quantity you entered is outside the range of '%{min}' to '%{max}'. The quantity was set to '%{quantity}'."
367
+ }
368
+ }
369
+ },
370
+ "outOfStockLabel": {
371
+ "title": "Out of Stock Label",
372
+ "type": "string",
373
+ "default": "Out of stock"
374
+ },
337
375
  "drawer": {
338
376
  "title": "Quick Order Drawer",
339
377
  "type": "object",
@@ -777,6 +815,16 @@
777
815
  }
778
816
  }
779
817
  }
818
+ },
819
+ "loadingLabel": {
820
+ "title": "Loading Label",
821
+ "type": "string",
822
+ "default": "Loading..."
823
+ },
824
+ "collapseSearchAriaLabel": {
825
+ "title": "Collapse Search Button aria-label",
826
+ "type": "string",
827
+ "default": "Collapse search bar"
780
828
  }
781
829
  }
782
830
  },
@@ -870,6 +918,92 @@
870
918
  }
871
919
  }
872
920
  },
921
+ "localizationButton": {
922
+ "type": "object",
923
+ "title": "Localization Button",
924
+ "properties": {
925
+ "shouldDisplayLocalizationButton": {
926
+ "type": "boolean",
927
+ "title": "Should display localization button?",
928
+ "default": false
929
+ },
930
+ "icon": {
931
+ "title": "Icon",
932
+ "type": "object",
933
+ "properties": {
934
+ "icon": {
935
+ "title": "Icon",
936
+ "type": "string",
937
+ "enumNames": ["Globe"],
938
+ "enum": ["Globe"],
939
+ "default": "Globe"
940
+ }
941
+ }
942
+ },
943
+ "ariaLabel": {
944
+ "title": "Aria Label for localization selector",
945
+ "type": "string",
946
+ "default": "Open localization selector"
947
+ }
948
+ }
949
+ },
950
+ "localizationSelector": {
951
+ "type": "object",
952
+ "title": "Localization Selector",
953
+ "properties": {
954
+ "title": {
955
+ "title": "Title",
956
+ "type": "string",
957
+ "default": "Select language and currency"
958
+ },
959
+ "languageLabel": {
960
+ "title": "Language Label",
961
+ "type": "string",
962
+ "default": "Language"
963
+ },
964
+ "currencyLabel": {
965
+ "title": "Currency Label",
966
+ "type": "string",
967
+ "default": "Currency"
968
+ },
969
+ "description": {
970
+ "title": "Description",
971
+ "type": "string",
972
+ "default": "Changing the language or currency may affect prices, promotions and availability."
973
+ },
974
+ "saveLabel": {
975
+ "title": "Save Button Label",
976
+ "type": "string",
977
+ "default": "Save"
978
+ },
979
+ "errorMessages": {
980
+ "title": "Error Messages",
981
+ "type": "object",
982
+ "properties": {
983
+ "noBindingFound": {
984
+ "title": "No Binding Found Error",
985
+ "type": "string",
986
+ "default": "Unable to save configuration. No matching store found."
987
+ },
988
+ "invalidUrl": {
989
+ "title": "Invalid URL Error",
990
+ "type": "string",
991
+ "default": "Invalid redirect URL. Please try again."
992
+ },
993
+ "noCurrencies": {
994
+ "title": "No Currencies Error",
995
+ "type": "string",
996
+ "default": "No currencies available for this language."
997
+ },
998
+ "defaultError": {
999
+ "title": "Default Error",
1000
+ "type": "string",
1001
+ "default": "An error occurred. Please try again."
1002
+ }
1003
+ }
1004
+ }
1005
+ }
1006
+ },
873
1007
  "pageLinks": {
874
1008
  "title": "Links",
875
1009
  "type": "array",
@@ -1146,11 +1280,13 @@
1146
1280
  "properties": {
1147
1281
  "url": {
1148
1282
  "title": "Link URL",
1149
- "type": "string"
1283
+ "type": "string",
1284
+ "default": "/"
1150
1285
  },
1151
1286
  "title": {
1152
1287
  "title": "Link Title",
1153
- "type": "string"
1288
+ "type": "string",
1289
+ "default": "Go to Home"
1154
1290
  }
1155
1291
  }
1156
1292
  }
@@ -2000,17 +2136,25 @@
2000
2136
  "title": "Breadcrumb",
2001
2137
  "description": "Configure the breadcrumb icon and depth",
2002
2138
  "type": "object",
2003
- "required": ["icon", "alt"],
2139
+ "required": ["icon", "alt", "fallbackLabel"],
2004
2140
  "properties": {
2141
+ "fallbackLabel": {
2142
+ "title": "Fallback label",
2143
+ "description": "Label shown when there are no breadcrumb items to display, such as on the Search page.",
2144
+ "type": "string",
2145
+ "default": "All Products"
2146
+ },
2005
2147
  "icon": {
2006
2148
  "title": "Icon",
2007
2149
  "type": "string",
2008
2150
  "enumNames": ["House"],
2009
- "enum": ["House"]
2151
+ "enum": ["House"],
2152
+ "default": "House"
2010
2153
  },
2011
2154
  "alt": {
2012
2155
  "title": "Alternative Label",
2013
- "type": "string"
2156
+ "type": "string",
2157
+ "default": "Go to homepage"
2014
2158
  }
2015
2159
  }
2016
2160
  }
@@ -2051,6 +2195,11 @@
2051
2195
  }
2052
2196
  }
2053
2197
  },
2198
+ "loadingLabel": {
2199
+ "title": "Loading Label",
2200
+ "type": "string",
2201
+ "default": "Loading..."
2202
+ },
2054
2203
  "buyButton": {
2055
2204
  "title": "Buy Button",
2056
2205
  "type": "object",
@@ -2145,6 +2294,11 @@
2145
2294
  "title": "Description section title",
2146
2295
  "type": "string",
2147
2296
  "default": "Description"
2297
+ },
2298
+ "accordionAriaLabel": {
2299
+ "title": "Product description accordion aria label",
2300
+ "type": "string",
2301
+ "default": "Product Description Content"
2148
2302
  }
2149
2303
  }
2150
2304
  },
@@ -2156,6 +2310,24 @@
2156
2310
  "title": "Should use unit multiplier?",
2157
2311
  "type": "boolean",
2158
2312
  "default": false
2313
+ },
2314
+ "invalidQuantityToastLabels": {
2315
+ "title": "Invalid quantity toast",
2316
+ "description": "This toast will be displayed when the quantity is out of the range of the min and max values.",
2317
+ "type": "object",
2318
+ "properties": {
2319
+ "title": {
2320
+ "title": "Title",
2321
+ "type": "string",
2322
+ "default": "Invalid quantity!"
2323
+ },
2324
+ "message": {
2325
+ "title": "Message",
2326
+ "type": "string",
2327
+ "description": "If the message has %{min}, %{max} and %{quantity} placeholders, they will be replaced by the min, max and quantity values.",
2328
+ "default": "The quantity you entered is outside the range of '%{min}' to '%{max}'. The quantity was set to '%{quantity}'."
2329
+ }
2330
+ }
2159
2331
  }
2160
2332
  }
2161
2333
  },
@@ -2323,6 +2495,74 @@
2323
2495
  }
2324
2496
  }
2325
2497
  },
2498
+ "sortBySelector": {
2499
+ "title": "Sort by selector",
2500
+ "type": "object",
2501
+ "required": ["label", "options"],
2502
+ "properties": {
2503
+ "label": {
2504
+ "title": "Label",
2505
+ "type": "string",
2506
+ "default": "Sort by"
2507
+ },
2508
+ "options": {
2509
+ "title": "Options labels",
2510
+ "type": "object",
2511
+ "required": [
2512
+ "price_desc",
2513
+ "price_asc",
2514
+ "orders_desc",
2515
+ "name_asc",
2516
+ "name_desc",
2517
+ "release_desc",
2518
+ "discount_desc",
2519
+ "score_desc"
2520
+ ],
2521
+ "properties": {
2522
+ "price_desc": {
2523
+ "title": "Price - Descending",
2524
+ "type": "string",
2525
+ "default": "Price, descending"
2526
+ },
2527
+ "price_asc": {
2528
+ "title": "Price - Ascending",
2529
+ "type": "string",
2530
+ "default": "Price, ascending"
2531
+ },
2532
+ "orders_desc": {
2533
+ "title": "Orders - Descending",
2534
+ "type": "string",
2535
+ "default": "Top sales"
2536
+ },
2537
+ "name_asc": {
2538
+ "title": "Name - Ascending",
2539
+ "type": "string",
2540
+ "default": "Name, A-Z"
2541
+ },
2542
+ "name_desc": {
2543
+ "title": "Name - Descending",
2544
+ "type": "string",
2545
+ "default": "Name, Z-A"
2546
+ },
2547
+ "release_desc": {
2548
+ "title": "Release - Descending",
2549
+ "type": "string",
2550
+ "default": "Release date"
2551
+ },
2552
+ "discount_desc": {
2553
+ "title": "Discount - Descending",
2554
+ "type": "string",
2555
+ "default": "Discount"
2556
+ },
2557
+ "score_desc": {
2558
+ "title": "Score - Descending",
2559
+ "type": "string",
2560
+ "default": "Relevance"
2561
+ }
2562
+ }
2563
+ }
2564
+ }
2565
+ },
2326
2566
  "filter": {
2327
2567
  "title": "Filter",
2328
2568
  "type": "object",
@@ -2421,6 +2661,16 @@
2421
2661
  "title": "Sponsored Label",
2422
2662
  "type": "string",
2423
2663
  "default": "Sponsored"
2664
+ },
2665
+ "buttonLabel": {
2666
+ "title": "Button Label",
2667
+ "type": "string",
2668
+ "default": "Add"
2669
+ },
2670
+ "outOfStockLabel": {
2671
+ "title": "Out of Stock Label",
2672
+ "type": "string",
2673
+ "default": "Out of stock"
2424
2674
  }
2425
2675
  }
2426
2676
  },
@@ -2450,6 +2700,8 @@
2450
2700
  "icon": {
2451
2701
  "title": "Icon",
2452
2702
  "type": "string",
2703
+ "enumNames": ["CircleWavyWarning"],
2704
+ "enum": ["CircleWavyWarning"],
2453
2705
  "default": "CircleWavyWarning"
2454
2706
  }
2455
2707
  }
@@ -2471,6 +2723,8 @@
2471
2723
  "icon": {
2472
2724
  "title": "Icon",
2473
2725
  "type": "string",
2726
+ "enumNames": ["RocketLaunch"],
2727
+ "enum": ["RocketLaunch"],
2474
2728
  "default": "RocketLaunch"
2475
2729
  }
2476
2730
  }
@@ -2519,15 +2773,32 @@
2519
2773
  "type": "string",
2520
2774
  "default": "Filters"
2521
2775
  },
2522
- "productNameFilterLabel": {
2523
- "title": "Filter by product name text",
2524
- "type": "string",
2525
- "default": "Product name"
2526
- },
2527
- "sortLabel": {
2528
- "title": "Sort filter text",
2529
- "type": "string",
2530
- "default": "Sort by"
2776
+ "sortLabels": {
2777
+ "title": "Sort labels",
2778
+ "type": "object",
2779
+ "properties": {
2780
+ "label": {
2781
+ "title": "Sort filter text",
2782
+ "type": "string",
2783
+ "default": "Sort by"
2784
+ },
2785
+ "options": {
2786
+ "title": "Sort options",
2787
+ "type": "object",
2788
+ "properties": {
2789
+ "productByName": {
2790
+ "title": "Product Name",
2791
+ "type": "string",
2792
+ "default": "Product Name"
2793
+ },
2794
+ "productByPrice": {
2795
+ "title": "Price",
2796
+ "type": "string",
2797
+ "default": "Price"
2798
+ }
2799
+ }
2800
+ }
2801
+ }
2531
2802
  },
2532
2803
  "toggleFieldLabel": {
2533
2804
  "title": "Toggle filter text",
@@ -2544,11 +2815,6 @@
2544
2815
  "type": "string",
2545
2816
  "default": "Add to cart"
2546
2817
  },
2547
- "priceLabel": {
2548
- "title": "Price text",
2549
- "type": "string",
2550
- "default": "Price"
2551
- },
2552
2818
  "priceWithTaxLabel": {
2553
2819
  "title": "Price with taxes text",
2554
2820
  "type": "string",
@@ -2636,6 +2902,22 @@
2636
2902
  }
2637
2903
  }
2638
2904
  },
2905
+ "emptyCart": {
2906
+ "title": "Empty Cart",
2907
+ "type": "object",
2908
+ "properties": {
2909
+ "title": {
2910
+ "title": "Title",
2911
+ "type": "string",
2912
+ "default": "Your Cart is empty"
2913
+ },
2914
+ "buttonLabel": {
2915
+ "title": "Button Label",
2916
+ "type": "string",
2917
+ "default": "Start Shopping"
2918
+ }
2919
+ }
2920
+ },
2639
2921
  "checkoutButton": {
2640
2922
  "title": "Checkout button",
2641
2923
  "type": "object",
@@ -2963,8 +3245,9 @@
2963
3245
  "icon": {
2964
3246
  "title": "Icon",
2965
3247
  "type": "string",
2966
- "enumNames": ["CircleWavy Warning"],
2967
- "enum": ["CircleWavyWarning"]
3248
+ "enumNames": ["CircleWavyWarning"],
3249
+ "enum": ["CircleWavyWarning"],
3250
+ "default": "CircleWavyWarning"
2968
3251
  },
2969
3252
  "alt": {
2970
3253
  "title": "Alternative Label",
@@ -3018,6 +3301,32 @@
3018
3301
  }
3019
3302
  }
3020
3303
  },
3304
+ {
3305
+ "name": "ScrollToTopButton",
3306
+ "requiredScopes": ["plp", "search"],
3307
+ "schema": {
3308
+ "title": "Scroll to Top Button",
3309
+ "description": "A button to scroll the page back to the top",
3310
+ "type": "object",
3311
+ "required": ["text"],
3312
+ "properties": {
3313
+ "text": {
3314
+ "title": "Button Text",
3315
+ "description": "Text displayed on the button",
3316
+ "type": "string",
3317
+ "default": "Scroll to top"
3318
+ },
3319
+ "iconPosition": {
3320
+ "title": "Icon Position",
3321
+ "description": "Position of the icon relative to the text",
3322
+ "type": "string",
3323
+ "enumNames": ["Left", "Right"],
3324
+ "enum": ["left", "right"],
3325
+ "default": "left"
3326
+ }
3327
+ }
3328
+ }
3329
+ },
3021
3330
  {
3022
3331
  "name": "ShoppingAssistant",
3023
3332
  "requiredScopes": [],
@@ -3,7 +3,6 @@ module.exports = {
3
3
  title: 'FastStore Starter',
4
4
  description: 'Fast Demo Store',
5
5
  titleTemplate: '%s | FastStore',
6
- author: 'Store Framework',
7
6
  name: 'FastStore',
8
7
  publisherId: '',
9
8
  plp: {
@@ -70,6 +69,51 @@ module.exports = {
70
69
  refreshAfter: null, // timestamp in seconds e.g. '1743042990'
71
70
  },
72
71
 
72
+ // Localization feature flag
73
+ localization: {
74
+ enabled: false,
75
+
76
+ // generated by @faststore/cli when localization is enabled
77
+ defaultLocale: 'pt-BR',
78
+ regions: {
79
+ BR: {
80
+ code: 'BR',
81
+ name: 'Brazil',
82
+ dateFormat: 'DD/MM/YYYY',
83
+ timeFormat: '12h',
84
+ timeFormatMask: 'hh:mm a',
85
+ unitSystem: 'metric',
86
+ defaultTimezone: 'GMT-3',
87
+ },
88
+ },
89
+ locales: {
90
+ 'pt-BR': {
91
+ code: 'pt-BR',
92
+ name: 'Português',
93
+ languageCode: 'pt',
94
+ languageName: 'Portuguese',
95
+ script: 'Latn',
96
+ textDirection: 'ltr',
97
+ regionCode: 'BR',
98
+ bindings: [
99
+ {
100
+ currencyCode: 'BRL',
101
+ url: 'https://brandless.fast.store/pt-BR',
102
+ salesChannel: '1',
103
+ isDefault: true,
104
+ },
105
+ ],
106
+ },
107
+ },
108
+ currencies: {
109
+ BRL: {
110
+ code: 'BRL',
111
+ name: 'Brazilian Real',
112
+ symbol: 'R$',
113
+ },
114
+ },
115
+ },
116
+
73
117
  // Default cart
74
118
  cart: {
75
119
  id: '',
@@ -88,12 +132,12 @@ module.exports = {
88
132
 
89
133
  // Preview redirects
90
134
  previewRedirects: {
135
+ 404: '/404',
136
+ 500: '/500',
91
137
  home: '/',
92
138
  plp: '/office',
93
139
  search: '/s?q=headphone',
94
140
  pdp: '/apple-magic-mouse/p',
95
- 500: '/500',
96
- 404: '/404',
97
141
  },
98
142
 
99
143
  // Lighthouse CI
@@ -122,6 +166,8 @@ module.exports = {
122
166
  analytics: {
123
167
  // https://developers.google.com/tag-platform/tag-manager/web#standard_web_page_installation,
124
168
  gtmContainerId: 'GTM-PGHZ95N',
169
+ serviceName: 'faststore-proxy',
170
+ otelEnabled: true,
125
171
  },
126
172
 
127
173
  cms: {
package/next-env.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  /// <reference types="next" />
2
2
  /// <reference types="next/image-types/global" />
3
+ import './.next/types/routes.d.ts'
3
4
 
4
5
  // NOTE: This file should not be edited
5
- // see https://nextjs.org/docs/basic-features/typescript for more information.
6
+ // see https://nextjs.org/docs/pages/api-reference/config/typescript for more information.
package/next.config.js CHANGED
@@ -1,6 +1,21 @@
1
- // @ts-check
2
1
  const path = require('path')
3
2
  const storeConfig = require('./discovery.config')
3
+ const { buildI18nDomains } = require('./scripts/i18n')
4
+
5
+ // Load locales settings (generated by CLI during build)
6
+ const localesSettings = storeConfig.localization
7
+
8
+ const getRootFolder = () => {
9
+ if (__dirname.endsWith('.faststore')) return path.join(__dirname, '..')
10
+
11
+ return path.join(__dirname, '../../')
12
+ }
13
+
14
+ console.log(`
15
+ Root folder at: ${getRootFolder()}
16
+ AccountID: ${storeConfig.api?.storeId ?? 'Unknown'}
17
+ Analytics Enabled: ${storeConfig.analytics?.otelEnabled ?? false}
18
+ `)
4
19
 
5
20
  /**
6
21
  * @type {import('next').NextConfig}
@@ -14,31 +29,44 @@ const nextConfig = {
14
29
  transpilePackages: storeConfig.experimental.transpilePackages,
15
30
  }),
16
31
  images: {
17
- domains: [`${storeConfig.api.storeId}.vtexassets.com`],
32
+ remotePatterns: [
33
+ {
34
+ protocol: 'https',
35
+ hostname: `${storeConfig.api.storeId}.vtexassets.com`,
36
+ pathname: '/**',
37
+ },
38
+ ],
18
39
  deviceSizes: [360, 412, 540, 768, 1280, 1440],
19
40
  imageSizes: [34, 68, 154, 320],
20
41
  loader: 'custom',
21
42
  loaderFile: './src/components/ui/Image/loader.ts',
22
43
  },
23
- i18n: {
24
- locales: [storeConfig.session.locale],
25
- defaultLocale: storeConfig.session.locale,
26
- },
44
+ i18n: localesSettings.enabled
45
+ ? {
46
+ locales: Object.keys(localesSettings.locales || {}),
47
+ defaultLocale: localesSettings.defaultLocale,
48
+ localeDetection: false,
49
+ domains: buildI18nDomains(localesSettings),
50
+ }
51
+ : {
52
+ locales: [storeConfig.session.locale],
53
+ defaultLocale: storeConfig.session.locale,
54
+ },
27
55
  sassOptions: {
28
- additionalData: `@import "src/customizations/src/styles/custom-mixins.scss";`,
56
+ silenceDeprecations: ['if-function', 'legacy-js-api'],
29
57
  },
30
58
  // TODO: We won't need to enable this experimental feature when migrating to Next.js 13
31
59
  experimental: {
32
60
  instrumentationHook: true,
33
61
  scrollRestoration: !storeConfig.experimental.scrollRestoration,
34
- /*
35
- * The FastStore Discovery CLI will update this value to match the path where the
36
- * command is being run, because that is where the node_modules directory is.
37
- * For discovery-only paths, that is the user directory, and for monorepo, that is the base
38
- * of the monorepo
39
- * */
40
- outputFileTracingRoot: path.join(__dirname, '../'),
41
62
  },
63
+ /*
64
+ * The FastStore Discovery CLI will update this value to match the path where the
65
+ * command is being run, because that is where the node_modules directory is.
66
+ * For discovery-only paths, that is the user directory, and for monorepo, that is the base
67
+ * of the monorepo
68
+ * */
69
+ outputFileTracingRoot: getRootFolder(),
42
70
  webpack: (config, { isServer, dev }) => {
43
71
  // https://github.com/vercel/next.js/discussions/11267#discussioncomment-2479112
44
72
  // camel-case style names from css modules
@@ -58,22 +86,16 @@ const nextConfig = {
58
86
  config.optimization.splitChunks.maxInitialRequests = 1
59
87
  }
60
88
 
61
- if (storeConfig.experimental.preact && !isServer && !dev) {
62
- Object.assign(config.resolve.alias, {
63
- react: 'preact/compat',
64
-
65
- 'react-dom/test-utils': 'preact/test-utils',
66
-
67
- 'react-dom': 'preact/compat',
68
- })
69
- }
70
-
71
89
  return config
72
90
  },
73
91
  redirects: storeConfig.redirects,
74
92
  rewrites: storeConfig.rewrites,
75
- eslint: {
76
- ignoreDuringBuilds: true,
93
+ turbopack: {
94
+ root: getRootFolder(),
95
+ // https://nextjs.org/docs/app/api-reference/turbopack#css-module-ordering
96
+ resolveAlias: {
97
+ '~*': '*',
98
+ },
77
99
  },
78
100
  }
79
101