efficient-storefront-blocks 0.86.0 → 0.88.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 (272) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/chunks/{EditorPreviewCheckout-4LNXFNN7.js → EditorPreviewCheckout-ZGPS3Q3X.js} +1 -1
  3. package/dist/chunks/{SiteEditorProvider-A2HMVDKS.js → SiteEditorProvider-HZ47WOEX.js} +1 -1
  4. package/dist/chunks/{chunk-TGBNREUJ.js → chunk-7C2YH2AQ.js} +1 -1
  5. package/dist/chunks/chunk-O7GCI2MP.js +1 -0
  6. package/dist/chunks/chunk-RHNDIM7Z.js +382 -0
  7. package/dist/chunks/chunk-VOK5N3IB.js +1 -0
  8. package/dist/chunks/{fitment-data-TSYW6AFA.js → fitment-data-SH4US3BV.js} +1 -1
  9. package/dist/contract.js +32 -2
  10. package/dist/editor/components/CategorySource.d.ts +8 -1
  11. package/dist/editor/components/CategorySource.js +1 -1
  12. package/dist/editor/components/CollectionPicker.js +1 -1
  13. package/dist/editor/components/EditProductLink.js +1 -1
  14. package/dist/editor/components/FinishPicker.js +1 -1
  15. package/dist/editor/components/FormPicker.js +1 -1
  16. package/dist/editor/components/GalleryShowcaseSource.js +1 -1
  17. package/dist/editor/components/HeaderSettingsPanel.js +1 -1
  18. package/dist/editor/components/ProductHeroSource.js +1 -1
  19. package/dist/editor/components/ProductPicker.js +1 -1
  20. package/dist/editor/components/ReviewsProductSource.js +1 -1
  21. package/dist/editor/components/SocialLinksDoor.js +1 -1
  22. package/dist/editor/components/SpecTableSource.js +1 -1
  23. package/dist/editor/lib/document/blocks/commerce/BundleOffer/fields.js +1 -1
  24. package/dist/editor/lib/document/blocks/commerce/FilterBlock/fields.d.ts +2 -0
  25. package/dist/editor/lib/document/blocks/commerce/FilterBlock/fields.js +1 -0
  26. package/dist/editor/lib/document/blocks/commerce/FilterChipsBlock/fields.d.ts +2 -0
  27. package/dist/editor/lib/document/blocks/commerce/FilterChipsBlock/fields.js +1 -0
  28. package/dist/editor/lib/document/blocks/commerce/GalleryItem/fields.js +1 -1
  29. package/dist/editor/lib/document/blocks/commerce/ProductBuy/fields.d.ts +2 -0
  30. package/dist/editor/lib/document/blocks/commerce/ProductBuy/fields.js +1 -0
  31. package/dist/editor/lib/document/blocks/commerce/ProductBuyButton/fields.d.ts +2 -0
  32. package/dist/editor/lib/document/blocks/commerce/ProductBuyButton/fields.js +1 -0
  33. package/dist/editor/lib/document/blocks/commerce/ProductEyebrow/fields.d.ts +2 -0
  34. package/dist/editor/lib/document/blocks/commerce/ProductEyebrow/fields.js +1 -0
  35. package/dist/editor/lib/document/blocks/commerce/ProductGrid/fields.js +1 -1
  36. package/dist/editor/lib/document/blocks/commerce/ProductName/fields.d.ts +2 -0
  37. package/dist/editor/lib/document/blocks/commerce/ProductName/fields.js +1 -0
  38. package/dist/editor/lib/document/blocks/commerce/ProductPicture/fields.d.ts +2 -0
  39. package/dist/editor/lib/document/blocks/commerce/ProductPicture/fields.js +1 -0
  40. package/dist/editor/lib/document/blocks/commerce/ProductSpecs/fields.d.ts +2 -0
  41. package/dist/editor/lib/document/blocks/commerce/ProductSpecs/fields.js +1 -0
  42. package/dist/editor/lib/document/blocks/commerce/RelatedProducts/fields.js +1 -1
  43. package/dist/editor/lib/document/blocks/commerce/controls.d.ts +4 -0
  44. package/dist/editor/lib/document/blocks/commerce/controls.js +1 -1
  45. package/dist/editor/lib/document/blocks/commerce/index.d.ts +1 -1
  46. package/dist/editor/lib/document/blocks/commerce/index.js +1 -1
  47. package/dist/editor/lib/document/config.js +1 -1
  48. package/dist/editor/lib/document/section-text-regions.js +1 -1
  49. package/dist/editor/lib/editor-words-kept.d.ts +1 -0
  50. package/dist/editor/lib/editor-words-kept.js +1 -0
  51. package/dist/editor/lib/efficient-backend.d.ts +7 -1
  52. package/dist/editor/lib/efficient-backend.js +1 -1
  53. package/dist/editor/lib/storefront-document.js +1 -1
  54. package/dist/editor/lib/storefront-editor-words.d.ts +40 -12
  55. package/dist/editor/lib/storefront-editor-words.js +1 -1
  56. package/dist/editor.css +1 -1
  57. package/dist/fitment.js +1 -1
  58. package/dist/index.js +136 -83
  59. package/dist/links.js +1 -1
  60. package/dist/render/app/fonts/fallbacks.css +8 -0
  61. package/dist/render/app/fonts/jost/OFL.txt +93 -0
  62. package/dist/render/app/fonts/jost/cyrillic-italic.woff2 +0 -0
  63. package/dist/render/app/fonts/jost/cyrillic.woff2 +0 -0
  64. package/dist/render/app/fonts/jost/latin-ext-italic.woff2 +0 -0
  65. package/dist/render/app/fonts/jost/latin-ext.woff2 +0 -0
  66. package/dist/render/app/fonts/jost/latin-italic.woff2 +0 -0
  67. package/dist/render/app/fonts/jost/latin.woff2 +0 -0
  68. package/dist/render/app/globals.css +122 -11
  69. package/dist/render/built-with.json +1 -1
  70. package/dist/render/components/BundleCard.d.ts +2 -1
  71. package/dist/render/components/BundleCard.js +1 -1
  72. package/dist/render/components/Events.js +1 -1
  73. package/dist/render/components/FitmentTable.d.ts +1 -1
  74. package/dist/render/components/FitmentTable.js +1 -1
  75. package/dist/render/components/FooterMenu.d.ts +5 -1
  76. package/dist/render/components/FooterMenu.js +1 -1
  77. package/dist/render/components/GalleryGrid.js +1 -1
  78. package/dist/render/components/GalleryItem.d.ts +11 -1
  79. package/dist/render/components/GalleryItem.js +1 -1
  80. package/dist/render/components/GridCardTemplate.d.ts +40 -0
  81. package/dist/render/components/GridCardTemplate.js +1 -0
  82. package/dist/render/components/MenuLinkBlock.d.ts +5 -1
  83. package/dist/render/components/MenuLinkBlock.js +1 -1
  84. package/dist/render/components/ProductCardChrome.d.ts +1 -1
  85. package/dist/render/components/ProductCardChrome.js +1 -1
  86. package/dist/render/components/ProductGridSection.d.ts +9 -15
  87. package/dist/render/components/ProductGridSection.js +1 -1
  88. package/dist/render/components/ProductHeroPanel.js +1 -1
  89. package/dist/render/components/ProductRef.d.ts +8 -2
  90. package/dist/render/components/ProductRef.js +1 -1
  91. package/dist/render/components/SectionBand.d.ts +3 -2
  92. package/dist/render/components/SectionBand.js +1 -1
  93. package/dist/render/components/StorefrontProviders.d.ts +1 -1
  94. package/dist/render/components/StorefrontProviders.js +1 -1
  95. package/dist/render/components/TyreCard.js +1 -1
  96. package/dist/render/components/TyreFitVerdicts.d.ts +2 -1
  97. package/dist/render/components/TyreFitVerdicts.js +1 -1
  98. package/dist/render/components/TyrePlpCard.js +1 -1
  99. package/dist/render/components/card-pieces/CardBuyButton.d.ts +8 -1
  100. package/dist/render/components/card-pieces/CardBuyButton.js +1 -1
  101. package/dist/render/components/card-pieces/CardEyebrow.d.ts +3 -1
  102. package/dist/render/components/card-pieces/CardEyebrow.js +1 -1
  103. package/dist/render/components/card-pieces/CardName.d.ts +4 -1
  104. package/dist/render/components/card-pieces/CardName.js +1 -1
  105. package/dist/render/components/card-pieces/CardPrice.d.ts +2 -6
  106. package/dist/render/components/card-pieces/CardPrice.js +1 -1
  107. package/dist/render/components/card-pieces/CardProductBadge.d.ts +2 -1
  108. package/dist/render/components/card-pieces/CardProductBadge.js +1 -1
  109. package/dist/render/components/card-pieces/CardProductPicture.d.ts +13 -0
  110. package/dist/render/components/card-pieces/CardProductPicture.js +1 -0
  111. package/dist/render/components/card-pieces/CardSpecs.js +1 -1
  112. package/dist/render/components/card-pieces/HostPart.js +1 -1
  113. package/dist/render/components/card-pieces/ProductCardState.d.ts +25 -6
  114. package/dist/render/components/card-pieces/ProductCardState.js +1 -1
  115. package/dist/render/components/card-pieces/card-text-region.d.ts +18 -0
  116. package/dist/render/components/card-pieces/card-text-region.js +1 -0
  117. package/dist/render/components/catalog/CatalogFilterContext.d.ts +4 -1
  118. package/dist/render/components/catalog/CatalogFilterContext.js +1 -1
  119. package/dist/render/components/catalog/ClearAllButton.d.ts +4 -0
  120. package/dist/render/components/catalog/ClearAllButton.js +1 -0
  121. package/dist/render/components/catalog/FilterPill.d.ts +4 -2
  122. package/dist/render/components/catalog/FilterPill.js +1 -1
  123. package/dist/render/components/catalog/ShopperChips.d.ts +13 -0
  124. package/dist/render/components/catalog/ShopperChips.js +1 -0
  125. package/dist/render/components/catalog/ShopperFilters.d.ts +20 -0
  126. package/dist/render/components/catalog/ShopperFilters.js +1 -0
  127. package/dist/render/components/catalog/ShopperScope.d.ts +72 -0
  128. package/dist/render/components/catalog/ShopperScope.js +3 -0
  129. package/dist/render/components/catalog/SortSelect.js +1 -1
  130. package/dist/render/components/fitment/StockFitmentPart.d.ts +8 -1
  131. package/dist/render/components/fitment/StockFitmentPart.js +1 -1
  132. package/dist/render/components/fitment/fitment-answer-source.d.ts +12 -0
  133. package/dist/render/components/fitment/fitment-answer-source.js +1 -0
  134. package/dist/render/components/pdp-dynamic/DynamicFitmentTable.js +1 -1
  135. package/dist/render/components/pdp-dynamic/DynamicRelatedProducts.d.ts +10 -12
  136. package/dist/render/components/pdp-dynamic/DynamicRelatedProducts.js +1 -1
  137. package/dist/render/components/pdp-dynamic/DynamicSpecTable.js +1 -1
  138. package/dist/render/components/pdp-dynamic/DynamicTyreSizes.js +1 -1
  139. package/dist/render/components/wheels-plp/AlloyWheelsListing.js +1 -1
  140. package/dist/render/components/wheels-plp/PlpActiveChips.js +1 -1
  141. package/dist/render/components/wheels-plp/PlpCard.d.ts +1 -1
  142. package/dist/render/components/wheels-plp/PlpCard.js +1 -1
  143. package/dist/render/components/wheels-plp/PlpPagination.d.ts +2 -1
  144. package/dist/render/components/wheels-plp/PlpPagination.js +1 -1
  145. package/dist/render/components/wheels-plp/PlpSidebar.js +1 -1
  146. package/dist/render/components/wheels-plp/usePlpFiltersInUrl.d.ts +2 -0
  147. package/dist/render/components/wheels-plp/usePlpFiltersInUrl.js +1 -1
  148. package/dist/render/lib/api/index.d.ts +6 -0
  149. package/dist/render/lib/api/index.js +1 -1
  150. package/dist/render/lib/catalog/related-cards.d.ts +4 -1
  151. package/dist/render/lib/catalog/relationships.d.ts +9 -2
  152. package/dist/render/lib/catalog/relationships.js +1 -1
  153. package/dist/render/lib/commerce.d.ts +2 -0
  154. package/dist/render/lib/commerce.js +1 -1
  155. package/dist/render/lib/content/article-body.js +1 -5
  156. package/dist/render/lib/content/field-usage.d.ts +1 -0
  157. package/dist/render/lib/content/field-usage.js +1 -1
  158. package/dist/render/lib/content/filter-card-seed.d.ts +10 -0
  159. package/dist/render/lib/content/filter-card-seed.js +1 -0
  160. package/dist/render/lib/content/product-card-seed.d.ts +34 -0
  161. package/dist/render/lib/content/product-card-seed.js +1 -0
  162. package/dist/render/lib/content/tab-strip.d.ts +17 -0
  163. package/dist/render/lib/content/tab-strip.js +1 -0
  164. package/dist/render/lib/document/blocks/commerce/BundleOffer/meta.js +1 -1
  165. package/dist/render/lib/document/blocks/commerce/BundleOffer/render.js +1 -1
  166. package/dist/render/lib/document/blocks/commerce/FilterBlock/meta.d.ts +8 -0
  167. package/dist/render/lib/document/blocks/commerce/FilterBlock/meta.js +1 -0
  168. package/dist/render/lib/document/blocks/commerce/FilterBlock/render.d.ts +2 -0
  169. package/dist/render/lib/document/blocks/commerce/FilterBlock/render.js +1 -0
  170. package/dist/render/lib/document/blocks/commerce/FilterChipsBlock/meta.d.ts +8 -0
  171. package/dist/render/lib/document/blocks/commerce/FilterChipsBlock/meta.js +1 -0
  172. package/dist/render/lib/document/blocks/commerce/FilterChipsBlock/render.d.ts +2 -0
  173. package/dist/render/lib/document/blocks/commerce/FilterChipsBlock/render.js +1 -0
  174. package/dist/render/lib/document/blocks/commerce/GalleryB/meta.js +1 -1
  175. package/dist/render/lib/document/blocks/commerce/GalleryItem/render.js +1 -1
  176. package/dist/render/lib/document/blocks/commerce/ProductBuy/meta.d.ts +2 -0
  177. package/dist/render/lib/document/blocks/commerce/ProductBuy/meta.js +1 -0
  178. package/dist/render/lib/document/blocks/commerce/ProductBuy/render.d.ts +2 -0
  179. package/dist/render/lib/document/blocks/commerce/ProductBuy/render.js +1 -0
  180. package/dist/render/lib/document/blocks/commerce/ProductBuyButton/meta.d.ts +2 -0
  181. package/dist/render/lib/document/blocks/commerce/ProductBuyButton/meta.js +1 -0
  182. package/dist/render/lib/document/blocks/commerce/ProductBuyButton/render.d.ts +2 -0
  183. package/dist/render/lib/document/blocks/commerce/ProductBuyButton/render.js +1 -0
  184. package/dist/render/lib/document/blocks/commerce/ProductEyebrow/meta.d.ts +2 -0
  185. package/dist/render/lib/document/blocks/commerce/ProductEyebrow/meta.js +1 -0
  186. package/dist/render/lib/document/blocks/commerce/ProductEyebrow/render.d.ts +2 -0
  187. package/dist/render/lib/document/blocks/commerce/ProductEyebrow/render.js +1 -0
  188. package/dist/render/lib/document/blocks/commerce/ProductGrid/meta.d.ts +4 -0
  189. package/dist/render/lib/document/blocks/commerce/ProductGrid/meta.js +1 -1
  190. package/dist/render/lib/document/blocks/commerce/ProductGrid/render.js +1 -1
  191. package/dist/render/lib/document/blocks/commerce/ProductHero/meta.js +1 -1
  192. package/dist/render/lib/document/blocks/commerce/ProductName/meta.d.ts +2 -0
  193. package/dist/render/lib/document/blocks/commerce/ProductName/meta.js +1 -0
  194. package/dist/render/lib/document/blocks/commerce/ProductName/render.d.ts +2 -0
  195. package/dist/render/lib/document/blocks/commerce/ProductName/render.js +1 -0
  196. package/dist/render/lib/document/blocks/commerce/ProductPicture/meta.d.ts +2 -0
  197. package/dist/render/lib/document/blocks/commerce/ProductPicture/meta.js +1 -0
  198. package/dist/render/lib/document/blocks/commerce/ProductPicture/render.d.ts +2 -0
  199. package/dist/render/lib/document/blocks/commerce/ProductPicture/render.js +1 -0
  200. package/dist/render/lib/document/blocks/commerce/ProductPrice/render.js +1 -1
  201. package/dist/render/lib/document/blocks/commerce/ProductSpecs/meta.d.ts +2 -0
  202. package/dist/render/lib/document/blocks/commerce/ProductSpecs/meta.js +1 -0
  203. package/dist/render/lib/document/blocks/commerce/ProductSpecs/render.d.ts +2 -0
  204. package/dist/render/lib/document/blocks/commerce/ProductSpecs/render.js +1 -0
  205. package/dist/render/lib/document/blocks/commerce/RelatedProducts/meta.d.ts +0 -4
  206. package/dist/render/lib/document/blocks/commerce/RelatedProducts/meta.js +1 -1
  207. package/dist/render/lib/document/blocks/commerce/RelatedProducts/render.js +1 -1
  208. package/dist/render/lib/document/blocks/commerce/StockFitment/meta.js +1 -1
  209. package/dist/render/lib/document/blocks/commerce/metas.d.ts +8 -0
  210. package/dist/render/lib/document/blocks/commerce/metas.js +1 -1
  211. package/dist/render/lib/document/blocks/commerce/renders.d.ts +8 -0
  212. package/dist/render/lib/document/blocks/commerce/renders.js +1 -1
  213. package/dist/render/lib/document/blocks/text-part-shapes.json +0 -16
  214. package/dist/render/lib/document/card-templates.d.ts +1 -0
  215. package/dist/render/lib/document/card-templates.js +1 -1
  216. package/dist/render/lib/document/document-nodes.d.ts +24 -0
  217. package/dist/render/lib/document/document-nodes.js +1 -0
  218. package/dist/render/lib/document/footer-page-blocks.js +1 -1
  219. package/dist/render/lib/document/lazy-draws.js +1 -1
  220. package/dist/render/lib/document/render-config.js +1 -1
  221. package/dist/render/lib/document/storefront-root.js +1 -1
  222. package/dist/render/lib/font-table.json +209 -1
  223. package/dist/render/lib/links/link-rules.js +1 -1
  224. package/dist/render/lib/menu-link.d.ts +2 -0
  225. package/dist/render/lib/menu-link.js +1 -1
  226. package/dist/render/lib/next-fonts.js +1 -1
  227. package/dist/render/lib/sections/bundle-to-grid.d.ts +8 -0
  228. package/dist/render/lib/sections/bundle-to-grid.js +1 -0
  229. package/dist/render/lib/sections/catalog-text-size.d.ts +2 -0
  230. package/dist/render/lib/sections/catalog-text-size.js +1 -1
  231. package/dist/render/lib/sections/filter-option-rows.d.ts +37 -0
  232. package/dist/render/lib/sections/filter-option-rows.js +1 -0
  233. package/dist/render/lib/sections/gallery-toolbar.d.ts +27 -0
  234. package/dist/render/lib/sections/gallery-toolbar.js +1 -0
  235. package/dist/render/lib/sections/grid-no-hole.d.ts +4 -0
  236. package/dist/render/lib/sections/grid-no-hole.js +1 -1
  237. package/dist/render/lib/sections/product-card-text-regions.d.ts +3 -0
  238. package/dist/render/lib/sections/product-card-text-regions.js +1 -0
  239. package/dist/render/lib/sections/product-grid-columns.d.ts +13 -1
  240. package/dist/render/lib/sections/product-grid-columns.js +1 -1
  241. package/dist/render/lib/sections/product-grid-pages.d.ts +42 -0
  242. package/dist/render/lib/sections/product-grid-pages.js +1 -0
  243. package/dist/render/lib/sections/related-to-grid.d.ts +8 -0
  244. package/dist/render/lib/sections/related-to-grid.js +1 -0
  245. package/dist/render/lib/sections/shopper-filters.d.ts +45 -0
  246. package/dist/render/lib/sections/shopper-filters.js +1 -0
  247. package/dist/render/lib/storefront-page-groups.d.ts +0 -4
  248. package/dist/render/lib/storefront-page-groups.js +1 -1
  249. package/dist/render/lib/tyres/tyre-vehicle-fitment.d.ts +1 -0
  250. package/dist/render/lib/tyres/tyre-vehicle-fitment.js +1 -1
  251. package/dist/render/lib/wheels/plp-filters.d.ts +6 -3
  252. package/dist/render/lib/wheels/plp-filters.js +1 -1
  253. package/dist/render/lib/wheels/plp-hydrate.d.ts +5 -3
  254. package/dist/render/lib/wheels/plp-hydrate.js +1 -1
  255. package/dist/render/lib/wheels/selected-ranges.d.ts +16 -0
  256. package/dist/render/lib/wheels/selected-ranges.js +1 -0
  257. package/dist/render/lib/wheels/set-mode.d.ts +10 -0
  258. package/dist/render/lib/wheels/set-mode.js +1 -1
  259. package/dist/render/lib/wheels/shopper-first-paint.d.ts +28 -0
  260. package/dist/render/lib/wheels/shopper-first-paint.js +1 -0
  261. package/dist/render/lib/wheels/shopper-scope.d.ts +11 -0
  262. package/dist/render/lib/wheels/shopper-scope.js +1 -0
  263. package/dist/words.d.ts +92 -15
  264. package/dist/words.js +6 -6
  265. package/package.json +4 -4
  266. package/dist/chunks/chunk-EUKK2IN6.js +0 -1
  267. package/dist/chunks/chunk-FJRKNPNN.js +0 -340
  268. package/dist/chunks/chunk-SLRULFYY.js +0 -1
  269. package/dist/render/components/pdp-dynamic/DynamicBundleOffer.d.ts +0 -13
  270. package/dist/render/components/pdp-dynamic/DynamicBundleOffer.js +0 -1
  271. /package/dist/chunks/{chunk-ALMIS7CK.js → chunk-NQLVRCTI.js} +0 -0
  272. /package/dist/chunks/{chunk-FJRKNPNN.js.LEGAL.txt → chunk-RHNDIM7Z.js.LEGAL.txt} +0 -0
@@ -0,0 +1 @@
1
+ export declare const KEPT_EDITOR_PHRASES: Readonly<Record<string, string>>;
@@ -0,0 +1 @@
1
+ const l={galleryItemFillFromProduct:"Fill from a product"};export{l as KEPT_EDITOR_PHRASES};
@@ -1,7 +1,8 @@
1
1
  import { type AdminRecordType, type EditorPortalAudience } from "../../render/lib/api/index.js";
2
2
  import { PAGE_CONFLICT_CODE } from "efficient-easel/screen/lib/failure";
3
- import { type PageLiveState, type WebsiteBackend } from "efficient-web-builder/format/lib/web-backend";
3
+ import { type PageLiveState, type VideoFrames, type WebsiteBackend } from "efficient-web-builder/format/lib/web-backend";
4
4
  export { PAGE_CONFLICT_CODE };
5
+ export declare const EDITOR_SHOW_HINTS_KEY = "editor_show_hints";
5
6
  export declare const pageVersion: (page: {
6
7
  layout_updated_at?: string;
7
8
  updated_at?: string;
@@ -11,6 +12,11 @@ export declare const liveOf: (page: {
11
12
  }) => {
12
13
  live?: PageLiveState;
13
14
  };
15
+ export declare const framesOf: (page: {
16
+ video_frames?: VideoFrames | null;
17
+ }) => {
18
+ videoFrames?: VideoFrames;
19
+ };
14
20
  export declare function toBackendError(err: unknown): unknown;
15
21
  export declare function publishRefusal(data: unknown): string | null;
16
22
  export declare function registerServedRecordTypes(served: readonly AdminRecordType[]): void;
@@ -1 +1 @@
1
- import{readLockHolder as M}from"efficient-easel/edit-lock";import{AmbiguousPageSlugError as U,ApiError as k,SERVER_UNREACHABLE_MESSAGE as x,STATUS_NETWORK_ERROR as F,setEditorLanguage as H,setEditorPortalAudience as K,storefrontAdmin as o}from"../../render/lib/api/index.js";import{AdminSectionTemplateStore as N}from"./api/section-templates.js";import{registerServedBlockSources as D}from"./efficient-block-sources.js";import{registerRecordTypes as G}from"efficient-web-builder/format/lib/content/record-types";import{uploadLimits as z}from"../../render/lib/api/upload-limits.js";import{SITE_FOOTER_SLUG as $}from"efficient-web-builder/format/lib/content/footer";import{SOCIAL_PLATFORMS as _,socialUrlField as E}from"efficient-web-builder/format/lib/content/social-links";import{EFFICIENT_BACKEND as V,currentEaselSession as P,provideDefaultBackend as W}from"efficient-easel/screen/lib/session";import{loadEditorSiteSlug as Y}from"efficient-web-builder/editor/lib/editor-site-slug";import{editorPreviewHref as q,originIsSiteAmbiguous as J}from"efficient-web-builder/format/lib/editor/preview-href";import{postPath as Q}from"../../render/lib/links/link-rules.js";import{absolutizeApiUrl as X,efficientMediaResolve as Z}from"efficient-web-builder/render/lib/media";import{HOME_PAGE_SLUG as ee}from"efficient-web-builder/format/lib/document/home-page";import{groupPagesForMenu as te,pageMenuLabel as T}from"../../render/lib/storefront-page-groups.js";import{PAGE_CONFLICT_CODE as L}from"efficient-easel/screen/lib/failure";import{shopRouteBase as ne}from"efficient-web-builder/format/lib/web-runtime";import{WebsiteBackendError as f,provideHostFailures as ae}from"efficient-easel/screen/lib/backend-error";const A=n=>n.layout_updated_at??n.updated_at??null,ie=["live","changed","never"],R=n=>ie.includes(n.live_state)?{live:n.live_state}:{};function se(n){if(!n||typeof n!="object")return null;const s=n;return s.code!==L?null:{savedBy:typeof s.saved_by=="string"?s.saved_by:"",savedByYou:s.saved_by_you===!0,secondsAgo:typeof s.seconds_ago=="number"?s.seconds_ago:0}}function oe(n){return n===401||n===403?"unauthorized":n===404?"not-found":n===F||n>=500?"unavailable":"invalid"}function re(n){if(!(n instanceof k))return n;if(n.status===409){const s=se(n.data);if(s)return new f("changed-elsewhere",n.message,{conflict:s,cause:n});const r=M(n.data);if(r)return new f("lock-taken",n.message,{holder:r,cause:n})}return new f(oe(n.status),n.message,{cause:n})}function le(n){if(!n||typeof n!="object"||Array.isArray(n))return null;const s=r=>{if(typeof r=="string")return r.trim()||null;const d=Array.isArray(r)?r:r&&typeof r=="object"?Object.values(r):[];for(const c of d){const m=s(c);if(m)return m}return null};for(const[r,d]of Object.entries(n)){if(r==="detail")continue;const c=s(d);if(c)return`${r}: ${c}`}return null}const I=new WeakMap;function ce(n,s){const r=ne(),d=r?new URL(r).hostname:typeof window<"u"?window.location?.hostname??null:null;let c=null;const m=s.siteId(),w=s.token();if(J(d)&&m&&w){const p=Y(w,m);I.has(p)?c=I.get(p)??null:p.then(S=>I.set(p,S))}const y=q({pageSlug:n,siteSlug:c,hostname:d});return r?`${r}${y}`:y}const ue={group:"Template pages",groupKey:"template"},B=n=>({id:n.id,slug:n.slug,label:n.title||n.slug,...ue,draft:!1});function j(n){const s=async t=>{const e=n.token();if(!e)throw new f("unauthorized","The editor has no sign-in yet.");try{return await t(e)}catch(a){throw re(a)}},r={list:t=>s(async e=>{const a=await o.listPages(e,t?.siteId);return te(a.filter(i=>i.slug!==$)).flatMap(i=>i.pages.map(l=>({id:l.id,slug:l.slug,label:T(l),group:i.group,groupKey:i.key,draft:!l.is_published,kind:l.kind??null})))}),load:t=>s(async e=>{const a="id"in t?t.id:(await o.findPageBySlug(t.slug,e,t.siteId))?.id,i=a?await o.getPageById(a,e):null;return i?{id:i.id,layout:i.layout,kind:i.kind,version:A(i),...R(i)}:null}),save:(t,e,a)=>{const{version:i}=a;return i?s(async l=>{const g=await o.saveLayout(t,e.layout,l,i,a.clientId||void 0);return{version:A(g),...R(g)}}):Promise.reject(new Error("Refusing to save this page: the editor does not know which version it is replacing. Reload the page and try again."))},version:t=>s(e=>o.getPageById(t,e).then(A)),linkTargets:t=>s(async e=>(await o.listPages(e,t?.siteId)).map(a=>({id:a.id,slug:a.slug,label:T(a),layout:a.layout??null}))),duplicate:(t,e)=>s(async a=>{const i=await o.duplicatePage(t,{title:e.title,slug:e.slug},a);return{id:i.id,slug:i.slug,label:T(i),group:i.group||null,draft:!i.is_published,kind:i.kind??null}})},d=t=>({list:()=>s(async e=>(await o.listTemplatePages(t,e)).map(B)),load:e=>s(async a=>{const i=u=>"id"in e?u.id===e.id:u.slug===e.slug,l=u=>({id:u.id,layout:u.layout,version:null}),g=await o.listTemplatePages(t,a);if(g.length)return l(g.find(i)??g[0]);const b=await o.getTemplate(t,a).catch(()=>null);try{return l(await o.createTemplatePage(t,{slug:ee,title:"Home",layout:b?.layout??{}},a))}catch{const u=await o.listTemplatePages(t,a),h=u.find(i)??u[0];return h?l(h):null}}),save:(e,a)=>s(async i=>(await o.saveTemplatePageLayout(e,a.layout,i),{version:null})),create:e=>s(async a=>B(await o.createTemplatePage(t,{slug:e.slug,title:e.title,layout:e.layout},a))),remove:(e,a)=>s(i=>o.deleteTemplatePage(e,i,a))}),c=t=>{const e=t?.siteId??n.siteId();if(!e)throw new f("not-found","This editor is not connected to a website.");return e},m=t=>({name:t.name,slug:t.slug}),w=t=>Object.fromEntries(_.map(e=>[e,t[E(e)]??""])),y={launcherColor:"launcher_color",launcherIcon:"launcher_icon",launcherPosition:"launcher_position",launcherLabel:"launcher_label",showOnPhones:"show_on_phones"},p=Object.keys(y),S=t=>{const e={enabled:t.enabled,title:t.title,subtitle:t.subtitle,greeting:t.greeting};for(const a of p){const i=t[y[a]];i!==void 0&&Object.assign(e,{[a]:i})}return e},C=t=>{const e={};for(const[a,i]of Object.entries(t))e[y[a]??a]=i;return e},O={pages:r,lock:{claim:(t,e,a)=>s(async i=>({heartbeatSeconds:(await o.claimPageEditLock(t,i,e,a)).heartbeat_seconds})),release:t=>s(e=>o.releasePageEditLock(t,e))},site:{get:t=>s(async e=>m(await o.getSite(c(t),e))),publish:t=>s(async e=>{try{const{state:a,published:i}=await o.publishSite(c(t),e);return{state:a,published:i}}catch(a){const i=a instanceof k&&a.status===400?le(a.data):null;throw i?new f("invalid",i,{cause:a}):a}}),liveState:t=>s(async e=>{const{state:a,changes:i}=await o.getSiteLiveState(c(t),e);return{state:a,changes:i}})},media:{resolve:Z,maxUploadBytes:z("POST /api/storefront/media/","file").maxSizeBytes},sectionTemplates:new N(n.token),social:{get:t=>s(async e=>w(await o.getSocialSettings(e,c(t)))),update:(t,e)=>s(async a=>{const i=Object.fromEntries(_.filter(l=>l in t).map(l=>[E(l),t[l]]));try{return w(await o.updateSocialSettings(i,a,c(e)))}catch(l){if(l instanceof k&&l.status===400){const g=l.data??{},b={};for(const u of _){const h=g[E(u)],v=Array.isArray(h)?h[0]:h;typeof v=="string"&&v.trim()&&(b[u]=v)}if(Object.keys(b).length>0)throw new f("invalid",l.message,{fields:b,cause:l})}throw l}})},theme:{get:t=>s(e=>o.getThemeSettings(e,t?.siteId)),update:(t,e)=>s(a=>o.updateThemeSettings(t,a,e?.siteId))},geocode:{locate:(t,e)=>s(async a=>{const i=await o.geocode(t,a,e?.country);if(i.status==="not_found")return null;if(i.status!=="found"||i.lat===null||i.lng===null)throw new f("unavailable","The geocoder could not answer just now.");return{lat:i.lat,lng:i.lng,label:i.label}})},chat:{get:t=>s(async e=>S(await o.getChatSettings(e,t?.siteId))),update:(t,e)=>s(async a=>S(await o.updateChatSettings(C(t),a,e?.siteId)))},blog:{posts:t=>s(async e=>(await o.listBlogPosts(e,{visibleOnly:!0,siteId:t?.siteId})).map(a=>({slug:a.slug,title:a.title,excerpt:a.excerpt,category:a.category,coverImage:a.cover_image?X(a.cover_image)??"":"",publishedAt:a.published_at,href:Q(a.slug)})))},templates:{get:t=>s(async e=>{const a=await o.getTemplate(t,e);return{id:a.id,name:a.name}}),pages:d},preview:{href:t=>ce(t,n),draftLink:t=>s(async e=>({url:(await o.createPagePreviewLink(t,e)).url??null}))}};return O[V]=!0,O}const de=["text","date","images"],ge=n=>n.replace(/_([a-z0-9])/g,(s,r)=>r.toUpperCase());function fe(n){if(Array.isArray(n))for(const s of n){const d=(Array.isArray(s?.fields)?s.fields:[]).filter(c=>de.includes(c.kind)).map(c=>({key:ge(c.key),label:c.label,kind:c.kind}));try{G([{key:s.key,label:s.label,fields:d}])}catch{}}}function Be(n){return P().cache("efficient:editor-offerings",()=>Promise.all([o.listBlockSources(n).then(D).catch(()=>{}),o.listRecordTypes(n).then(fe).catch(()=>{})]).then(()=>{}))}ae({read:n=>n instanceof k?{status:n.status,data:n.data,message:n.message}:null,unreachableMessage:x,loadRefusal:(n,{slug:s})=>n instanceof U?`“${s}” exists on more than one website. Open it from the site you want to edit.`:null}),W(n=>j({token:()=>n.auth.token,siteId:()=>n.siteId()}));function je(n={}){return n.portalAudience!==void 0&&K(n.portalAudience),n.language!==void 0&&H(n.language),j({token:()=>P().auth.token,siteId:()=>n.siteId??P().siteId()})}export{L as PAGE_CONFLICT_CODE,je as createEfficientBackend,R as liveOf,Be as loadEditorOfferings,A as pageVersion,le as publishRefusal,fe as registerServedRecordTypes,re as toBackendError};
1
+ import{readLockHolder as H}from"efficient-easel/edit-lock";import{AmbiguousPageSlugError as F,ApiError as _,SERVER_UNREACHABLE_MESSAGE as U,STATUS_NETWORK_ERROR as K,setEditorLanguage as N,setEditorPortalAudience as D,storefrontAdmin as o}from"../../render/lib/api/index.js";import{AdminSectionTemplateStore as G}from"./api/section-templates.js";import{registerServedBlockSources as z}from"./efficient-block-sources.js";import{registerRecordTypes as $}from"efficient-web-builder/format/lib/content/record-types";import{uploadLimits as W}from"../../render/lib/api/upload-limits.js";import{SITE_FOOTER_SLUG as V}from"efficient-web-builder/format/lib/content/footer";import{SOCIAL_PLATFORMS as v,socialUrlField as E}from"efficient-web-builder/format/lib/content/social-links";import{EFFICIENT_BACKEND as Y,currentEaselSession as P,provideDefaultBackend as q}from"efficient-easel/screen/lib/session";import{loadEditorSiteSlug as J}from"efficient-web-builder/editor/lib/editor-site-slug";import{editorPreviewHref as Q,originIsSiteAmbiguous as X}from"efficient-web-builder/format/lib/editor/preview-href";import{postPath as Z}from"../../render/lib/links/link-rules.js";import{absolutizeApiUrl as ee,efficientMediaResolve as te}from"efficient-web-builder/render/lib/media";import{HOME_PAGE_SLUG as ne}from"efficient-web-builder/format/lib/document/home-page";import{groupPagesForMenu as ae,pageMenuLabel as T}from"../../render/lib/storefront-page-groups.js";import{PAGE_CONFLICT_CODE as L}from"efficient-easel/screen/lib/failure";import{shopRouteBase as se}from"efficient-web-builder/format/lib/web-runtime";import{WebsiteBackendError as f,provideHostFailures as ie}from"efficient-easel/screen/lib/backend-error";const R="editor_show_hints",A=n=>n.layout_updated_at??n.updated_at??null,oe=["live","changed","never"],B=n=>oe.includes(n.live_state)?{live:n.live_state}:{},j=n=>n.video_frames?{videoFrames:n.video_frames}:{};function re(n){if(!n||typeof n!="object")return null;const i=n;return i.code!==L?null:{savedBy:typeof i.saved_by=="string"?i.saved_by:"",savedByYou:i.saved_by_you===!0,secondsAgo:typeof i.seconds_ago=="number"?i.seconds_ago:0}}function le(n){return n===401||n===403?"unauthorized":n===404?"not-found":n===K||n>=500?"unavailable":"invalid"}function ce(n){if(!(n instanceof _))return n;if(n.status===409){const i=re(n.data);if(i)return new f("changed-elsewhere",n.message,{conflict:i,cause:n});const r=H(n.data);if(r)return new f("lock-taken",n.message,{holder:r,cause:n})}return new f(le(n.status),n.message,{cause:n})}function ue(n){if(!n||typeof n!="object"||Array.isArray(n))return null;const i=r=>{if(typeof r=="string")return r.trim()||null;const d=Array.isArray(r)?r:r&&typeof r=="object"?Object.values(r):[];for(const c of d){const m=i(c);if(m)return m}return null};for(const[r,d]of Object.entries(n)){if(r==="detail")continue;const c=i(d);if(c)return`${r}: ${c}`}return null}const O=new WeakMap;function de(n,i){const r=se(),d=r?new URL(r).hostname:typeof window<"u"?window.location?.hostname??null:null;let c=null;const m=i.siteId(),w=i.token();if(X(d)&&m&&w){const p=J(w,m);O.has(p)?c=O.get(p)??null:p.then(S=>O.set(p,S))}const y=Q({pageSlug:n,siteSlug:c,hostname:d});return r?`${r}${y}`:y}const ge={group:"Template pages",groupKey:"template"},M=n=>({id:n.id,slug:n.slug,label:n.title||n.slug,...ge,draft:!1});function x(n){const i=async t=>{const e=n.token();if(!e)throw new f("unauthorized","The editor has no sign-in yet.");try{return await t(e)}catch(a){throw ce(a)}},r={list:t=>i(async e=>{const a=await o.listPages(e,t?.siteId);return ae(a.filter(s=>s.slug!==V)).flatMap(s=>s.pages.map(l=>({id:l.id,slug:l.slug,label:T(l),group:s.group,groupKey:s.key,draft:!l.is_published,kind:l.kind??null})))}),load:t=>i(async e=>{const a="id"in t?t.id:(await o.findPageBySlug(t.slug,e,t.siteId))?.id,s=a?await o.getPageById(a,e):null;return s?{id:s.id,layout:s.layout,kind:s.kind,version:A(s),...B(s),...j(s)}:null}),save:(t,e,a)=>{const{version:s}=a;return s?i(async l=>{const g=await o.saveLayout(t,e.layout,l,s,a.clientId||void 0);return{version:A(g),...B(g),...j(g)}}):Promise.reject(new Error("Refusing to save this page: the editor does not know which version it is replacing. Reload the page and try again."))},version:t=>i(e=>o.getPageById(t,e).then(A)),linkTargets:t=>i(async e=>(await o.listPages(e,t?.siteId)).map(a=>({id:a.id,slug:a.slug,label:T(a),layout:a.layout??null}))),duplicate:(t,e)=>i(async a=>{const s=await o.duplicatePage(t,{title:e.title,slug:e.slug},a);return{id:s.id,slug:s.slug,label:T(s),group:s.group||null,draft:!s.is_published,kind:s.kind??null}})},d=t=>({list:()=>i(async e=>(await o.listTemplatePages(t,e)).map(M)),load:e=>i(async a=>{const s=u=>"id"in e?u.id===e.id:u.slug===e.slug,l=u=>({id:u.id,layout:u.layout,version:null}),g=await o.listTemplatePages(t,a);if(g.length)return l(g.find(s)??g[0]);const b=await o.getTemplate(t,a).catch(()=>null);try{return l(await o.createTemplatePage(t,{slug:ne,title:"Home",layout:b?.layout??{}},a))}catch{const u=await o.listTemplatePages(t,a),h=u.find(s)??u[0];return h?l(h):null}}),save:(e,a)=>i(async s=>(await o.saveTemplatePageLayout(e,a.layout,s),{version:null})),create:e=>i(async a=>M(await o.createTemplatePage(t,{slug:e.slug,title:e.title,layout:e.layout},a))),remove:(e,a)=>i(s=>o.deleteTemplatePage(e,s,a))}),c=t=>{const e=t?.siteId??n.siteId();if(!e)throw new f("not-found","This editor is not connected to a website.");return e},m=t=>({name:t.name,slug:t.slug}),w=t=>Object.fromEntries(v.map(e=>[e,t[E(e)]??""])),y={launcherColor:"launcher_color",launcherIcon:"launcher_icon",launcherPosition:"launcher_position",launcherLabel:"launcher_label",showOnPhones:"show_on_phones"},p=Object.keys(y),S=t=>{const e={enabled:t.enabled,title:t.title,subtitle:t.subtitle,greeting:t.greeting};for(const a of p){const s=t[y[a]];s!==void 0&&Object.assign(e,{[a]:s})}return e},C=t=>{const e={};for(const[a,s]of Object.entries(t))e[y[a]??a]=s;return e},I={pages:r,lock:{claim:(t,e,a)=>i(async s=>({heartbeatSeconds:(await o.claimPageEditLock(t,s,e,a)).heartbeat_seconds})),release:t=>i(e=>o.releasePageEditLock(t,e))},site:{get:t=>i(async e=>m(await o.getSite(c(t),e))),publish:t=>i(async e=>{try{const{state:a,published:s}=await o.publishSite(c(t),e);return{state:a,published:s}}catch(a){const s=a instanceof _&&a.status===400?ue(a.data):null;throw s?new f("invalid",s,{cause:a}):a}}),liveState:t=>i(async e=>{const{state:a,changes:s}=await o.getSiteLiveState(c(t),e);return{state:a,changes:s}})},media:{resolve:te,maxUploadBytes:W("POST /api/storefront/media/","file").maxSizeBytes},sectionTemplates:new G(n.token),social:{get:t=>i(async e=>w(await o.getSocialSettings(e,c(t)))),update:(t,e)=>i(async a=>{const s=Object.fromEntries(v.filter(l=>l in t).map(l=>[E(l),t[l]]));try{return w(await o.updateSocialSettings(s,a,c(e)))}catch(l){if(l instanceof _&&l.status===400){const g=l.data??{},b={};for(const u of v){const h=g[E(u)],k=Array.isArray(h)?h[0]:h;typeof k=="string"&&k.trim()&&(b[u]=k)}if(Object.keys(b).length>0)throw new f("invalid",l.message,{fields:b,cause:l})}throw l}})},theme:{get:t=>i(e=>o.getThemeSettings(e,t?.siteId)),update:(t,e)=>i(a=>o.updateThemeSettings(t,a,e?.siteId))},geocode:{locate:(t,e)=>i(async a=>{const s=await o.geocode(t,a,e?.country);if(s.status==="not_found")return null;if(s.status!=="found"||s.lat===null||s.lng===null)throw new f("unavailable","The geocoder could not answer just now.");return{lat:s.lat,lng:s.lng,label:s.label}})},preferences:{get:()=>i(async t=>{const e=(await o.getMyPreferences(t))[R];return typeof e=="boolean"?{showHints:e}:{}}),update:t=>i(async e=>{typeof t.showHints=="boolean"&&await o.updateMyPreferences({[R]:t.showHints},e)})},chat:{get:t=>i(async e=>S(await o.getChatSettings(e,t?.siteId))),update:(t,e)=>i(async a=>S(await o.updateChatSettings(C(t),a,e?.siteId)))},blog:{posts:t=>i(async e=>(await o.listBlogPosts(e,{visibleOnly:!0,siteId:t?.siteId})).map(a=>({slug:a.slug,title:a.title,excerpt:a.excerpt,category:a.category,coverImage:a.cover_image?ee(a.cover_image)??"":"",publishedAt:a.published_at,href:Z(a.slug)})))},templates:{get:t=>i(async e=>{const a=await o.getTemplate(t,e);return{id:a.id,name:a.name}}),pages:d},preview:{href:t=>de(t,n),draftLink:t=>i(async e=>({url:(await o.createPagePreviewLink(t,e)).url??null}))}};return I[Y]=!0,I}const fe=["text","date","images"],me=n=>n.replace(/_([a-z0-9])/g,(i,r)=>r.toUpperCase());function ye(n){if(Array.isArray(n))for(const i of n){const d=(Array.isArray(i?.fields)?i.fields:[]).filter(c=>fe.includes(c.kind)).map(c=>({key:me(c.key),label:c.label,kind:c.kind}));try{$([{key:i.key,label:i.label,fields:d}])}catch{}}}function Me(n){return P().cache("efficient:editor-offerings",()=>Promise.all([o.listBlockSources(n).then(z).catch(()=>{}),o.listRecordTypes(n).then(ye).catch(()=>{})]).then(()=>{}))}ie({read:n=>n instanceof _?{status:n.status,data:n.data,message:n.message}:null,unreachableMessage:U,loadRefusal:(n,{slug:i})=>n instanceof F?`“${i}” exists on more than one website. Open it from the site you want to edit.`:null}),q(n=>x({token:()=>n.auth.token,siteId:()=>n.siteId()}));function xe(n={}){return n.portalAudience!==void 0&&D(n.portalAudience),n.language!==void 0&&N(n.language),x({token:()=>P().auth.token,siteId:()=>n.siteId??P().siteId()})}export{R as EDITOR_SHOW_HINTS_KEY,L as PAGE_CONFLICT_CODE,xe as createEfficientBackend,j as framesOf,B as liveOf,Me as loadEditorOfferings,A as pageVersion,ue as publishRefusal,ye as registerServedRecordTypes,ce as toBackendError};
@@ -1 +1 @@
1
- import{loadProductCatalog as l,loadUnifiedProductCatalog as d}from"../../render/components/useProductCatalog.js";import{WHEELS_PAGE_SLUG as c,ensureWheelsCatalogSections as h}from"../../render/lib/wheels/catalog-default-layout.js";import{dehydrateWheelsListing as C,dehydrateWheelsListingNode as m,hydrateWheelsListing as f,pageHasWheelsListing as r}from"../../render/lib/wheels/plp-hydrate.js";import{normalizeCatalogRows as L}from"../../render/lib/wheels/wheel-summary-casing.js";const S={opening({slug:t,isTemplate:e,capabilities:o}){const n=o.hasCatalog&&!e&&t===c?l().catch(()=>[]):Promise.resolve([]);return async g=>{const i=await n,a=h(e||!o.hasCatalog?"":t,g,i);if(o.hasCatalog&&r(a)){const s=await d().catch(()=>[]);if(s.length)return f(a,L(s))}return a}},stored:t=>r(t)?C(t):t,storedNode:t=>m(t)};export{S as STOREFRONT_DOCUMENT_HOOKS};
1
+ import{loadProductCatalog as d,loadUnifiedProductCatalog as l}from"../../render/components/useProductCatalog.js";import{WHEELS_PAGE_SLUG as i,ensureWheelsCatalogSections as c}from"../../render/lib/wheels/catalog-default-layout.js";import{dehydrateWheelsListing as h,dehydrateWheelsListingNode as C,hydrateWheelsListing as m,pageHasHydratedValues as f,pageHasWheelsListing as L}from"../../render/lib/wheels/plp-hydrate.js";import{normalizeCatalogRows as W}from"../../render/lib/wheels/wheel-summary-casing.js";const P={opening({slug:t,isTemplate:e,capabilities:a}){const r=a.hasCatalog&&!e&&t===i?d().catch(()=>[]):Promise.resolve([]);return async n=>{const g=await r,o=c(e||!a.hasCatalog?"":t,n,g);if(a.hasCatalog&&L(o)){const s=await l().catch(()=>[]);if(s.length)return m(o,W(s))}return o}},stored:t=>f(t)?h(t):t,storedNode:t=>C(t)};export{P as STOREFRONT_DOCUMENT_HOOKS};
@@ -12,8 +12,8 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
12
12
  readonly "A detail of this record": "A detail of this record";
13
13
  readonly "A few quick picks and we show the right option for you.": "A few quick picks and we show the right option for you.";
14
14
  readonly "A line about it appears here.": "A line about it appears here.";
15
- readonly "A note about how these are matched.": "A note about how these are matched.";
16
15
  readonly "A number, @name or an ID": "A number, @name or an ID";
16
+ readonly "A sample. On the live page each size shows its own verdict for the shopper's car.": "A sample. On the live page each size shows its own verdict for the shopper's car.";
17
17
  readonly "A short description of your newsletter or publication.": "A short description of your newsletter or publication.";
18
18
  readonly "A short summary of the post appears here.": "A short summary of the post appears here.";
19
19
  readonly "A subhead.": "A subhead.";
@@ -43,8 +43,11 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
43
43
  readonly "All products": "All products";
44
44
  readonly "All wheel categories": "All wheel categories";
45
45
  readonly "Alloy wheels": "Alloy wheels";
46
+ readonly "Also filters the grids below": "Also filters the grids below";
46
47
  readonly "Alt name": "Alt name";
47
48
  readonly Always: "Always";
49
+ readonly "Always 2 lines": "Always 2 lines";
50
+ readonly "Always 2 lines keeps every name in a row the same height. Fit the name uses only the lines the name needs.": "Always 2 lines keeps every name in a row the same height. Fit the name uses only the lines the name needs.";
48
51
  readonly Analytics: "Analytics";
49
52
  readonly "Another detail": "Another detail";
50
53
  readonly "Another paragraph.": "Another paragraph.";
@@ -54,8 +57,6 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
54
57
  readonly "Apps from": "Apps from";
55
58
  readonly "Archive button": "Archive button";
56
59
  readonly "Archive link": "Archive link";
57
- readonly Arrangement: "Arrangement";
58
- readonly "Article Body": "Article Body";
59
60
  readonly "Ask for the car first": "Ask for the car first";
60
61
  readonly "Authorization expired \u2014 try again in a moment.": "Authorization expired — try again in a moment.";
61
62
  readonly "Auto (covers if 4+ groups)": "Auto (covers if 4+ groups)";
@@ -64,8 +65,11 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
64
65
  readonly "Auto-refreshes from the most-recent visible posts each time you open the editor. Set how many appear with \u201CPosts to display\u201D.": "Auto-refreshes from the most-recent visible posts each time you open the editor. Set how many appear with “Posts to display”.";
65
66
  readonly "Auto-synced from {place} \u00B7 {n} post": "Auto-synced from {place} · {n} post";
66
67
  readonly "Auto-synced from {place} \u00B7 {n} posts": "Auto-synced from {place} · {n} posts";
68
+ readonly Availability: "Availability";
67
69
  readonly "Available *sizes.*": "Available *sizes.*";
68
70
  readonly Away: "Away";
71
+ readonly "Bar \u00B7 columns": "Bar · columns";
72
+ readonly "Bar \u00B7 pills": "Bar · pills";
69
73
  readonly Behavior: "Behavior";
70
74
  readonly "Below the photo": "Below the photo";
71
75
  readonly "Below the specs": "Below the specs";
@@ -84,7 +88,9 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
84
88
  readonly "Browse all products": "Browse all products";
85
89
  readonly "Build it out of Boxes and blocks: the logo, menu, search, region and cart become blocks you can move. Your current header is kept.": "Build it out of Boxes and blocks: the logo, menu, search, region and cart become blocks you can move. Your current header is kept.";
86
90
  readonly "Bump Profile": "Bump Profile";
91
+ readonly Bundles: "Bundles";
87
92
  readonly "Bundles containing this product appear here on a product page.": "Bundles containing this product appear here on a product page.";
93
+ readonly Buy: "Buy";
88
94
  readonly CSV: "CSV";
89
95
  readonly Call: "Call";
90
96
  readonly "Call button": "Call button";
@@ -109,6 +115,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
109
115
  readonly "Choose a form in the inspector, under Message form \u2014 until then this column is hidden on the live page and no message can be sent.": "Choose a form in the inspector, under Message form — until then this column is hidden on the live page and no message can be sent.";
110
116
  readonly Chosen: "Chosen";
111
117
  readonly "Chosen pages": "Chosen pages";
118
+ readonly "Clear all": "Clear all";
112
119
  readonly "Close button": "Close button";
113
120
  readonly "Close popup": "Close popup";
114
121
  readonly "Code and currency": "Code and currency";
@@ -121,6 +128,8 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
121
128
  readonly "Columns per line": "Columns per line";
122
129
  readonly "Compatible *tyres.*": "Compatible *tyres.*";
123
130
  readonly "Compatible Tyres": "Compatible Tyres";
131
+ readonly "Compatible tyres": "Compatible tyres";
132
+ readonly "Compatible wheels": "Compatible wheels";
124
133
  readonly "Confirmation message": "Confirmation message";
125
134
  readonly "Connect to product data": "Connect to product data";
126
135
  readonly "Consent line": "Consent line";
@@ -144,6 +153,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
144
153
  readonly "Creates a retail account": "Creates a retail account";
145
154
  readonly "Creates a wholesale account": "Creates a wholesale account";
146
155
  readonly Currency: "Currency";
156
+ readonly "Currently unavailable": "Currently unavailable";
147
157
  readonly "Custom SVG logo uploaded for this store.": "Custom SVG logo uploaded for this store.";
148
158
  readonly Days: "Days";
149
159
  readonly Deck: "Deck";
@@ -183,7 +193,6 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
183
193
  readonly "Empty basket": "Empty basket";
184
194
  readonly "Encrypted in transit": "Encrypted in transit";
185
195
  readonly End: "End";
186
- readonly Enquire: "Enquire";
187
196
  readonly "Enquire about tyres": "Enquire about tyres";
188
197
  readonly "Even columns": "Even columns";
189
198
  readonly "Even grid": "Even grid";
@@ -205,9 +214,13 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
205
214
  readonly "Fewer {unit} on {view}": "Fewer {unit} on {view}";
206
215
  readonly "Field placeholder": "Field placeholder";
207
216
  readonly "Fill from a product": "Fill from a product";
217
+ readonly "Fill to edges": "Fill to edges";
218
+ readonly Filter: "Filter";
208
219
  readonly "Filter by brand, colour, size and fitment to find your set.": "Filter by brand, colour, size and fitment to find your set.";
209
220
  readonly "Filter by name": "Filter by name";
221
+ readonly "Filter chips": "Filter chips";
210
222
  readonly Filters: "Filters";
223
+ readonly "Filters button": "Filters button";
211
224
  readonly "Filters shown": "Filters shown";
212
225
  readonly "Find by name": "Find by name";
213
226
  readonly "Find your *match.*": "Find your *match.*";
@@ -221,6 +234,8 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
221
234
  readonly "First room": "First room";
222
235
  readonly "First-name label": "First-name label";
223
236
  readonly "First-name placeholder": "First-name placeholder";
237
+ readonly "Fit the name": "Fit the name";
238
+ readonly "Fitment answer": "Fitment answer";
224
239
  readonly "Fitment picker": "Fitment picker";
225
240
  readonly Fits: "Fits";
226
241
  readonly Flag: "Flag";
@@ -265,6 +280,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
265
280
  readonly "Heading size": "Heading size";
266
281
  readonly Hidden: "Hidden";
267
282
  readonly "Hide on the card": "Hide on the card";
283
+ readonly "Hide the rest": "Hide the rest";
268
284
  readonly Horizontal: "Horizontal";
269
285
  readonly "Hours from": "Hours from";
270
286
  readonly "How much room the menu leaves the logo. Only the logo moves away; the space between the menu words stays as it is.": "How much room the menu leaves the logo. Only the logo moves away; the space between the menu words stays as it is.";
@@ -272,16 +288,18 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
272
288
  readonly "Icon size": "Icon size";
273
289
  readonly "Icon style": "Icon style";
274
290
  readonly "Image / buy ratio": "Image / buy ratio";
291
+ readonly "Image content": "Image content";
275
292
  readonly "Image gallery": "Image gallery";
276
293
  readonly "Image shape": "Image shape";
277
294
  readonly "Image source": "Image source";
278
- readonly "Image tag": "Image tag";
279
295
  readonly Images: "Images";
280
296
  readonly "Images from": "Images from";
281
297
  readonly "Images to show": "Images to show";
282
298
  readonly "Images typed here": "Images typed here";
283
299
  readonly "In stock": "In stock";
284
300
  readonly "In-house": "In-house";
301
+ readonly Inset: "Inset";
302
+ readonly "Inset keeps the picture inside the card with space around it. Fill to edges runs it to the card's edges.": "Inset keeps the picture inside the card with space around it. Fill to edges runs it to the card's edges.";
285
303
  readonly Inside: "Inside";
286
304
  readonly "Interest chips": "Interest chips";
287
305
  readonly "Interests label": "Interests label";
@@ -349,6 +367,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
349
367
  readonly "Menu Item": "Menu Item";
350
368
  readonly "Menu link": "Menu link";
351
369
  readonly "Menu row": "Menu row";
370
+ readonly "Menu style": "Menu style";
352
371
  readonly "Message form": "Message form";
353
372
  readonly "Message us": "Message us";
354
373
  readonly "Messaging Strip": "Messaging Strip";
@@ -361,10 +380,11 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
361
380
  readonly Model: "Model";
362
381
  readonly "Month YYYY": "Month YYYY";
363
382
  readonly "More images": "More images";
364
- readonly "More like this": "More like this";
383
+ readonly "More products": "More products";
365
384
  readonly "More {unit} on {view}": "More {unit} on {view}";
366
385
  readonly "My Car": "My Car";
367
386
  readonly "Name A\u2013Z": "Name A–Z";
387
+ readonly "Name height": "Name height";
368
388
  readonly "Name, description and image come from {place}. Edit them there \u2014 this card updates to match.": "Name, description and image come from {place}. Edit them there — this card updates to match.";
369
389
  readonly "Narrow image": "Narrow image";
370
390
  readonly Necessary: "Necessary";
@@ -398,6 +418,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
398
418
  readonly "None (write the cards yourself)": "None (write the cards yourself)";
399
419
  readonly "None (write the rows yourself)": "None (write the rows yourself)";
400
420
  readonly "None of this product\u2019s finishes has an image, so none can be shown on the card. Add an image to a finish on the product record to pick it here.": "None of this product’s finishes has an image, so none can be shown on the card. Add an image to a finish on the product record to pick it here.";
421
+ readonly "None \u2014 Product types only": "None — Product types only";
401
422
  readonly "None \u2014 this section will be empty": "None — this section will be empty";
402
423
  readonly "Not authorized yet \u2014 reopen once the editor has loaded.": "Not authorized yet — reopen once the editor has loaded.";
403
424
  readonly "Not your size": "Not your size";
@@ -410,6 +431,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
410
431
  readonly "Offset (ET)": "Offset (ET)";
411
432
  readonly "On scroll up": "On scroll up";
412
433
  readonly "On the photo": "On the photo";
434
+ readonly "One wheel": "One wheel";
413
435
  readonly "Only for looking at while you design. Shoppers always see the product they opened.": "Only for looking at while you design. Shoppers always see the product they opened.";
414
436
  readonly "Open chat": "Open chat";
415
437
  readonly "Open live": "Open live";
@@ -432,6 +454,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
432
454
  readonly "PNG \u00B7 JPG \u00B7 MP4": "PNG · JPG · MP4";
433
455
  readonly "PNG \u00B7 JPG \u00B7 SVG \u00B7 WEBP \u00B7 MP4": "PNG · JPG · SVG · WEBP · MP4";
434
456
  readonly "PNG \u00B7 JPG \u00B7 WEBP": "PNG · JPG · WEBP";
457
+ readonly Pair: "Pair";
435
458
  readonly "Photo cards": "Photo cards";
436
459
  readonly Photos: "Photos";
437
460
  readonly "Pick a category from {place} to fill this card\u2019s name, description and image. That content is edited in the category.": "Pick a category from {place} to fill this card’s name, description and image. That content is edited in the category.";
@@ -443,6 +466,8 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
443
466
  readonly "Pick a product\u2026": "Pick a product…";
444
467
  readonly "Pick the products yourself below, or choose \u201CAll products\u201D or a category from {place}.": "Pick the products yourself below, or choose “All products” or a category from {place}.";
445
468
  readonly Pickup: "Pickup";
469
+ readonly Picture: "Picture";
470
+ readonly "Picture fit": "Picture fit";
446
471
  readonly Pills: "Pills";
447
472
  readonly "Pinning one overrides the section\u2019s Cover image.": "Pinning one overrides the section’s Cover image.";
448
473
  readonly "Pools every product\u2019s grouped media: each one\u2019s Relative / lifestyle photos feed Gallery A, its Product photos Gallery B and its Others the Others gallery. Every media group becomes a card, attributed to its own product (title, link and tag). Narrow the set with the Category filter above. Headings, intro copy and stats stay yours.": "Pools every product’s grouped media: each one’s Relative / lifestyle photos feed Gallery A, its Product photos Gallery B and its Others the Others gallery. Every media group becomes a card, attributed to its own product (title, link and tag). Narrow the set with the Category filter above. Headings, intro copy and stats stay yours.";
@@ -463,6 +488,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
463
488
  readonly "Product Gallery": "Product Gallery";
464
489
  readonly "Product content": "Product content";
465
490
  readonly "Product link": "Product link";
491
+ readonly "Product page link": "Product page link";
466
492
  readonly "Product photos": "Product photos";
467
493
  readonly "Product story": "Product story";
468
494
  readonly "Product type": "Product type";
@@ -500,10 +526,8 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
500
526
  readonly Rim: "Rim";
501
527
  readonly "Rim Profile": "Rim Profile";
502
528
  readonly "Routing groups": "Routing groups";
503
- readonly Row: "Row";
504
529
  readonly "Row shape": "Row shape";
505
530
  readonly "Row {n}": "Row {n}";
506
- readonly Rows: "Rows";
507
531
  readonly "Rows from": "Rows from";
508
532
  readonly S: "S";
509
533
  readonly "STP \u00B7 STEP \u00B7 DXF \u00B7 PDF": "STP · STEP · DXF · PDF";
@@ -513,6 +537,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
513
537
  readonly "Sample reviewer": "Sample reviewer";
514
538
  readonly "Save this address to my account": "Save this address to my account";
515
539
  readonly "Saving\u2026": "Saving…";
540
+ readonly Scroll: "Scroll";
516
541
  readonly "Search forms\u2026": "Search forms…";
517
542
  readonly "Search your catalog\u2026": "Search your catalog…";
518
543
  readonly "Second card": "Second card";
@@ -533,6 +558,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
533
558
  readonly "Session \u00B7 60 min \u00B7 Night": "Session · 60 min · Night";
534
559
  readonly "Set a design code": "Set a design code";
535
560
  readonly "Set a product design code on this section to show one product's reviews; leave it blank for the whole store.": "Set a product design code on this section to show one product's reviews; leave it blank for the whole store.";
561
+ readonly "Set picture": "Set picture";
536
562
  readonly "Set the default Light / Dark / Auto mode and show or hide the light\u2194dark switch in Appearance.": "Set the default Light / Dark / Auto mode and show or hide the light↔dark switch in Appearance.";
537
563
  readonly "Set up display mode \u2192": "Set up display mode →";
538
564
  readonly "Sets how tall the header bar is; the content below it shifts down to match.": "Sets how tall the header bar is; the content below it shifts down to match.";
@@ -565,13 +591,16 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
565
591
  readonly "Show \u201COther\u201D reason": "Show “Other” reason";
566
592
  readonly "Shown only while the site serves no countries \u2014 otherwise the site's default country is stated": "Shown only while the site serves no countries — otherwise the site's default country is stated";
567
593
  readonly "Shows this source\u2019s products as they are now, here and on the live page. Set how many appear with \u201CItems to display\u201D.": "Shows this source’s products as they are now, here and on the live page. Set how many appear with “Items to display”.";
594
+ readonly "Side rail": "Side rail";
568
595
  readonly "Signup form": "Signup form";
596
+ readonly "Similar products": "Similar products";
569
597
  readonly Site: "Site";
570
598
  readonly "Site Footer": "Site Footer";
571
599
  readonly "Site Header": "Site Header";
572
600
  readonly "Size (blank = none selected)": "Size (blank = none selected)";
573
601
  readonly "Size \u00B7 diameter": "Size · diameter";
574
602
  readonly "Size-filter chips": "Size-filter chips";
603
+ readonly Sort: "Sort";
575
604
  readonly "Sort + Clear all": "Sort + Clear all";
576
605
  readonly "Sort control": "Sort control";
577
606
  readonly "Sort \u00B7 Featured": "Sort · Featured";
@@ -579,13 +608,11 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
579
608
  readonly "Space from the logo": "Space from the logo";
580
609
  readonly "Spec table": "Spec table";
581
610
  readonly "Specifications *table.*": "Specifications *table.*";
582
- readonly Specs: "Specs";
583
611
  readonly "Speed rating": "Speed rating";
584
612
  readonly "Staggered spread": "Staggered spread";
585
613
  readonly "Status rail": "Status rail";
586
614
  readonly Step: "Step";
587
615
  readonly "Sticky header": "Sticky header";
588
- readonly "Stock fitment": "Stock fitment";
589
616
  readonly "Storefront \u203A Settings \u203A Regions & currencies": "Storefront › Settings › Regions & currencies";
590
617
  readonly "Storefront \u2192 Booking Services": "Storefront → Booking Services";
591
618
  readonly "Storefront \u2192 Catalog": "Storefront → Catalog";
@@ -622,6 +649,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
622
649
  readonly "That didn\u2019t come back \u2014 pick the form from the list, or try again.": "That didn’t come back — pick the form from the list, or try again.";
623
650
  readonly "The EU label appears here for every size with an EPREL registration number. It is read live from the registry and never stored.": "The EU label appears here for every size with an EPREL registration number. It is read live from the registry and never stored.";
624
651
  readonly "The banner's words follow each visitor's country. Turn consent on or off, and pick the privacy page, in Admin \u203A Storefront \u203A Marketing \u203A Privacy.": "The banner's words follow each visitor's country. Turn consent on or off, and pick the privacy page, in Admin › Storefront › Marketing › Privacy.";
652
+ readonly "The card is empty. Add parts to its card template in Layers.": "The card is empty. Add parts to its card template in Layers.";
625
653
  readonly "The color the bar paints once it is solid \u2014 after any scroll, and on every product page from the first paint. Follow the site theme keeps it on whatever palette the site is on.": "The color the bar paints once it is solid — after any scroll, and on every product page from the first paint. Follow the site theme keeps it on whatever palette the site is on.";
626
654
  readonly "The header settings could not be read. Try again.": "The header settings could not be read. Try again.";
627
655
  readonly "The linked menu": "The linked menu";
@@ -669,7 +697,6 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
669
697
  readonly "Tyre type": "Tyre type";
670
698
  readonly Tyres: "Tyres";
671
699
  readonly "Tyres shown are fitment-matched companions.": "Tyres shown are fitment-matched companions.";
672
- readonly "Tyres that fit this product": "Tyres that fit this product";
673
700
  readonly "Under the title": "Under the title";
674
701
  readonly Unknown: "Unknown";
675
702
  readonly "Update links": "Update links";
@@ -699,7 +726,6 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
699
726
  readonly Wheel: "Wheel";
700
727
  readonly "Wheel Spec": "Wheel Spec";
701
728
  readonly Wheels: "Wheels";
702
- readonly "Wheels this product fits": "Wheels this product fits";
703
729
  readonly "Where the answers go": "Where the answers go";
704
730
  readonly "Whether the footer's blocks sit on the page's column, or run edge to edge. The background always spans the screen.": "Whether the footer's blocks sit on the page's column, or run edge to edge. The background always spans the screen.";
705
731
  readonly "Which countries this website serves \u2014 and each region's own URL \u2014 is set in the admin console under {place}. Whether the picker is SHOWN stays here: that is header chrome, but the served-country list has tax consequences and belongs with commerce configuration.": "Which countries this website serves — and each region's own URL — is set in the admin console under {place}. Whether the picker is SHOWN stays here: that is header chrome, but the served-country list has tax consequences and belongs with commerce configuration.";
@@ -727,6 +753,8 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
727
753
  readonly "{n} field": "{n} field";
728
754
  readonly "{n} fields": "{n} fields";
729
755
  readonly "{n} photos": "{n} photos";
756
+ readonly "{n} piece": "{n} piece";
757
+ readonly "{n} pieces": "{n} pieces";
730
758
  readonly "{n} pixels": "{n} pixels";
731
759
  readonly "{n} size": "{n} size";
732
760
  readonly "{n} sizes": "{n} sizes";