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
@@ -1,4 +1,4 @@
1
- import type { CompatibleTyre, ProductKind, WheelSummary } from "../api/index.js";
1
+ import type { Bundle, CompatibleTyre, ProductKind, WheelSummary } from "../api/index.js";
2
2
  import type { StoreProduct } from "./store-product.js";
3
3
  export type RelatedCards = {
4
4
  kind: "tyre";
@@ -6,12 +6,16 @@ export type RelatedCards = {
6
6
  } | {
7
7
  kind: "alloy-wheel";
8
8
  wheels: readonly WheelSummary[];
9
+ } | {
10
+ kind: "bundle";
11
+ bundles: readonly Bundle[];
9
12
  };
13
+ export type RelatedKind = ProductKind | "bundle";
10
14
  export interface Relationship {
11
15
  key: string;
12
16
  label: string;
13
17
  from: readonly ProductKind[];
14
- to: ProductKind;
18
+ to: RelatedKind;
15
19
  heading: string;
16
20
  resolve(product: StoreProduct, relatedWheels: readonly WheelSummary[]): RelatedCards;
17
21
  }
@@ -23,6 +27,9 @@ export declare const RELATIONSHIP_OPTIONS: readonly {
23
27
  }[];
24
28
  export declare function relationshipByKey(key: string | null | undefined): Relationship | undefined;
25
29
  export declare function relationshipsFor(kind: ProductKind): Relationship[];
30
+ export declare function answersWithProducts(relationship: Relationship): relationship is Relationship & {
31
+ to: ProductKind;
32
+ };
26
33
  export declare function relationshipApplies(relationship: Relationship, kind: ProductKind): boolean;
27
34
  export declare const CARD_ROWS_NOT_ON_A_TYRE: readonly string[];
28
35
  export declare function answersWithTyres(key: string | null | undefined): boolean;
@@ -1 +1 @@
1
- import{CARD_HOVER_KEYS as o,HOVER_GROUP_KEY as r}from"efficient-web-builder/format/lib/animation/hover";const i={kind:"tyre",tyres:[]},s={kind:"alloy-wheel",wheels:[]},l=[{key:"tyres-that-fit",label:"Tyres that fit this product",from:["alloy-wheel"],to:"tyre",heading:"Compatible *tyres.*",resolve:e=>e.kind==="alloy-wheel"?{kind:"tyre",tyres:e.source.compatibleTyres??[]}:i},{key:"wheels-that-fit",label:"Wheels this product fits",from:["tyre"],to:"alloy-wheel",heading:"Wheels that *fit.*",resolve:(e,t)=>e.kind==="tyre"?{kind:"alloy-wheel",wheels:t}:s},{key:"more-like-this",label:"More like this",from:["alloy-wheel"],to:"alloy-wheel",heading:"Others you might *like.*",resolve:(e,t)=>({kind:"alloy-wheel",wheels:t})}],a="more-like-this",y=l.map(e=>({value:e.key,label:e.label}));function n(e){return l.find(t=>t.key===e)}function c(e){return l.filter(t=>t.from.includes(e))}function d(e,t){return e.from.includes(t)}const p=["coverIndex","imageBackground",r,...Object.values(o),"showBadge"];function f(e){return n(e)?.to==="tyre"}export{p as CARD_ROWS_NOT_ON_A_TYRE,a as DEFAULT_RELATIONSHIP,l as RELATIONSHIPS,y as RELATIONSHIP_OPTIONS,f as answersWithTyres,d as relationshipApplies,n as relationshipByKey,c as relationshipsFor};
1
+ import{CARD_HOVER_KEYS as o,HOVER_GROUP_KEY as r}from"efficient-web-builder/format/lib/animation/hover";const n={kind:"tyre",tyres:[]},i={kind:"alloy-wheel",wheels:[]},s={kind:"bundle",bundles:[]},t=[{key:"more-like-this",label:"Similar products",from:["alloy-wheel"],to:"alloy-wheel",heading:"Others you might *like.*",resolve:(e,l)=>({kind:"alloy-wheel",wheels:l})},{key:"tyres-that-fit",label:"Compatible tyres",from:["alloy-wheel"],to:"tyre",heading:"Compatible *tyres.*",resolve:e=>e.kind==="alloy-wheel"?{kind:"tyre",tyres:e.source.compatibleTyres??[]}:n},{key:"wheels-that-fit",label:"Compatible wheels",from:["tyre"],to:"alloy-wheel",heading:"Wheels that *fit.*",resolve:(e,l)=>e.kind==="tyre"?{kind:"alloy-wheel",wheels:l}:i},{key:"bundles",label:"Bundles",from:["alloy-wheel"],to:"bundle",heading:"Buy it *with.*",resolve:e=>e.kind==="alloy-wheel"?{kind:"bundle",bundles:e.source.bundles??[]}:s}],d="more-like-this",u=t.filter(e=>h(e)).map(e=>({value:e.key,label:e.label}));function a(e){return t.find(l=>l.key===e)}function c(e){return t.filter(l=>l.from.includes(e))}function h(e){return e.to!=="bundle"}function k(e,l){return e.from.includes(l)}const b=["coverIndex","imageBackground",r,...Object.values(o),"showBadge"];function p(e){return a(e)?.to==="tyre"}export{b as CARD_ROWS_NOT_ON_A_TYRE,d as DEFAULT_RELATIONSHIP,t as RELATIONSHIPS,u as RELATIONSHIP_OPTIONS,h as answersWithProducts,p as answersWithTyres,k as relationshipApplies,a as relationshipByKey,c as relationshipsFor};
@@ -1,3 +1,4 @@
1
+ import type { Bundle, Currency } from "./api/index.js";
1
2
  export declare const WHEELS_PER_SET = 4;
2
3
  export interface SetComponent {
3
4
  partNumber: string;
@@ -41,3 +42,4 @@ export declare const PRICE_LOCALE = "en";
41
42
  export declare function currencyFormat(currency: string, minimumFractionDigits?: number, maximumFractionDigits?: number): Intl.NumberFormat;
42
43
  export declare function formatPrice(amount: number, currency: string, decimalPlaces?: number): string;
43
44
  export declare function formatMoneyInCurrency(amount: number, currency: string): string;
45
+ export declare function bundleSaving(bundle: Pick<Bundle, "savings" | "savingIsFrom">, currency: Currency): string | null;
@@ -1 +1 @@
1
- const E=4;function x(e,t){return e.map(r=>({partNumber:r.partNumber,quantity:r.wheels*t}))}function S(e,t){if(e.length===0)return null;let r=0;for(const s of e){const n=s.prices?.[t];if(typeof n!="number"||!Number.isFinite(n)||n<=0)return null;r+=n*s.wheels}return r}const u=4,_=1,h={unit:"set",spares:0,spareSide:"left"};function f(e){return e.unit==="single"?1:u+e.spares}function P(e,t){return[{partNumber:e.partNumber,wheels:f(t),prices:e.prices}]}function T(e,t){const r=f(t)-u;if(r<=0||e.length===0)return e;const s=l(e),n=s?s[t.spareSide]:0;return e.map((o,a)=>a===n?{...o,wheels:o.wheels+r}:o)}function l(e){let t,r;for(let s=0;s<e.length;s+=1){const n=e[s].hand;if(n!=="left"&&n!=="right")continue;if((n==="left"?t:r)!==void 0)return null;n==="left"?t=s:r=s}return t!==void 0&&r!==void 0?{left:t,right:r}:null}function y(e){const t=typeof e.spares=="number"?e.spares:e.spare?1:0;return{unit:e.unit,spares:t,spareSide:e.spareSide??"left"}}function c(e,t){return t.spares>0?`${e} + spare`:e}function b(e){return e.unit==="single"?"Single":c(`Set of ${u}`,e)}const A="data-add-to-basket",C=9,d="en",p=new Map;function i(e,t,r){const s=`${e}|${t??""}|${r??""}`;let n=p.get(s);return n||(n=new Intl.NumberFormat(d,{style:"currency",currency:e,...t===void 0?{}:{minimumFractionDigits:t},...r===void 0?{}:{maximumFractionDigits:r}}),p.set(s,n)),n}function g(e,t,r=0){return i(t,0,r).format(e)}function w(e,t){return i(t).format(e)}export{A as ADD_TO_BASKET_ATTR,h as DEFAULT_PURCHASE_CHOICE,C as MAX_QTY_PER_LINE,_ as MAX_SPARES,d as PRICE_LOCALE,u as UNITS_PER_SET,E as WHEELS_PER_SET,i as currencyFormat,w as formatMoneyInCurrency,g as formatPrice,x as orderLinesForSets,P as packComposition,b as packLabel,y as purchaseChoiceFromPack,T as setPackComposition,S as setPrice,l as spareTargetsByHand,f as unitsPerPack,c as withSpare};
1
+ const x=4;function E(e,t){return e.map(r=>({partNumber:r.partNumber,quantity:r.wheels*t}))}function _(e,t){if(e.length===0)return null;let r=0;for(const n of e){const s=n.prices?.[t];if(typeof s!="number"||!Number.isFinite(s)||s<=0)return null;r+=s*n.wheels}return r}const u=4,h=1,P={unit:"set",spares:0,spareSide:"left"};function f(e){return e.unit==="single"?1:u+e.spares}function g(e,t){return[{partNumber:e.partNumber,wheels:f(t),prices:e.prices}]}function T(e,t){const r=f(t)-u;if(r<=0||e.length===0)return e;const n=l(e),s=n?n[t.spareSide]:0;return e.map((o,p)=>p===s?{...o,wheels:o.wheels+r}:o)}function l(e){let t,r;for(let n=0;n<e.length;n+=1){const s=e[n].hand;if(s!=="left"&&s!=="right")continue;if((s==="left"?t:r)!==void 0)return null;s==="left"?t=n:r=n}return t!==void 0&&r!==void 0?{left:t,right:r}:null}function y(e){const t=typeof e.spares=="number"?e.spares:e.spare?1:0;return{unit:e.unit,spares:t,spareSide:e.spareSide??"left"}}function c(e,t){return t.spares>0?`${e} + spare`:e}function b(e){return e.unit==="single"?"Single":c(`Set of ${u}`,e)}const A="data-add-to-basket",C=9,d="en",i=new Map;function a(e,t,r){const n=`${e}|${t??""}|${r??""}`;let s=i.get(n);return s||(s=new Intl.NumberFormat(d,{style:"currency",currency:e,...t===void 0?{}:{minimumFractionDigits:t},...r===void 0?{}:{maximumFractionDigits:r}}),i.set(n,s)),s}function S(e,t,r=0){return a(t,0,r).format(e)}function w(e,t){return a(t).format(e)}function L(e,t){const r=e.savings[t];if(r===void 0)return null;const n=S(r,t);return e.savingIsFrom?`Save from ${n}`:`Save ${n}`}export{A as ADD_TO_BASKET_ATTR,P as DEFAULT_PURCHASE_CHOICE,C as MAX_QTY_PER_LINE,h as MAX_SPARES,d as PRICE_LOCALE,u as UNITS_PER_SET,x as WHEELS_PER_SET,L as bundleSaving,a as currencyFormat,w as formatMoneyInCurrency,S as formatPrice,E as orderLinesForSets,g as packComposition,b as packLabel,y as purchaseChoiceFromPack,T as setPackComposition,_ as setPrice,l as spareTargetsByHand,f as unitsPerPack,c as withSpare};
@@ -1,5 +1 @@
1
- import{say as t}from"efficient-web-builder/format/lib/editor-words";import{sanitizeHtml as o}from"efficient-web-builder/render/lib/document/sanitize";const g="blog-post",l="body",p={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'","&apos;":"'","&nbsp;":" ","&rsquo;":"’","&lsquo;":"‘","&ldquo;":"“","&rdquo;":"”","&mdash;":"—","&ndash;":"–","&hellip;":"…"};function n(r){return r.replace(/&[a-z]+;|&#\d+;/gi,a=>p[a.toLowerCase()]??a)}function i(r){return r?(/<[a-z][\s\S]*?>/i.test(r)?r.replace(/<\/(p|div|h[1-6]|li|blockquote|section|article|ul|ol)>/gi,`
2
-
3
- `).replace(/<br\s*\/?>/gi,`
4
-
5
- `).replace(/<[^>]+>/g,""):r).split(/\n{2,}/).map(e=>n(e).replace(/[ \t]+/g," ").trim()).filter(Boolean):[]}function s(r){return r.length<60&&/^[A-Z][^.]*\.$/.test(r.trim())}function u(r){return typeof r!="string"||!r.trim()?[]:i(o(r)).map(a=>s(a)?{heading:a,paragraph:""}:{heading:"",paragraph:a})}function d(){return[{heading:t("A subhead."),paragraph:""},{heading:"",paragraph:t("Each paragraph of the post's body is drawn by the card template.")},{heading:"",paragraph:t("Another paragraph.")}]}export{l as ARTICLE_BODY_FIELD,g as BLOG_POST_RECORD_TYPE,u as articleRows,d as sampleArticleRows};
1
+ import{htmlToMarkupRows as a}from"efficient-easel/markup-from-html";import{say as n}from"efficient-web-builder/format/lib/editor-words";import{SHOP_MARKUP as i}from"efficient-web-builder/format/lib/markup";import{sanitizeHtmlFragment as h}from"efficient-web-builder/render/lib/document/sanitize";const T="blog-post",R="body",f=t=>({nodeType:3,nodeName:"#text",textContent:t,childNodes:[]}),m=/\n[ \t]*\n\s*/;function p(t){for(const e of Array.from(t.childNodes)){if(e.nodeType!==3){p(e);continue}const o=(e.textContent??"").split(m);if(o.length<2)continue;const r=e.ownerDocument;r&&(o.forEach((c,s)=>{s>0&&t.insertBefore(r.createElement("br"),e),t.insertBefore(r.createTextNode(c),e)}),t.removeChild(e))}}function d(t){const e=h(t);return p(e),e}function u(t){return t.length<60&&/^[A-Z][^.]*\.$/.test(t.trim())}function g(t){return a(f(t.plain),i)[0]?.markup??""}function _(t){return typeof t!="string"||!t.trim()?[]:a(d(t),i).map(e=>u(e.plain)?{heading:g(e),paragraph:""}:{heading:"",paragraph:e.markup})}function b(){return[{heading:n("A subhead."),paragraph:""},{heading:"",paragraph:n("Each paragraph of the post's body is drawn by the card template.")},{heading:"",paragraph:n("Another paragraph.")}]}export{R as ARTICLE_BODY_FIELD,T as BLOG_POST_RECORD_TYPE,_ as articleRows,b as sampleArticleRows};
@@ -12,6 +12,7 @@ export interface FieldUsageAnswer {
12
12
  specOrder?: number | null;
13
13
  fitmentOrder?: number | null;
14
14
  }
15
+ export declare const NO_FIELD_ANSWERS: readonly FieldUsageAnswer[];
15
16
  export declare function answersForKind(answers: readonly FieldUsageAnswer[], kind: string): readonly FieldUsageAnswer[];
16
17
  export declare function applyCardAnswers<T extends {
17
18
  fieldKey?: string;
@@ -1 +1 @@
1
- function g(e,n){return e.length===0?e:e.filter(o=>o.kind===void 0||o.kind===n)}function k(e,n){if(n.length===0)return e;const o=y(n);return s(e.filter(r=>o(r.fieldKey)),r=>r.fieldKey,n,"cardOrder")}function K(e,n){const o=n==="filter"?"filterOrder":"cardOrder",r=new Map;for(const t of e){const d=t[o];if(typeof d!="number"||!Number.isFinite(d))continue;const l=r.get(t.fieldKey);(l===void 0||d<l)&&r.set(t.fieldKey,d)}return t=>t?r.get(t):void 0}function a(e){return c(e,"spec")}function w(e,n){if(n.length===0)return e;const o=a(n),r=e.filter(t=>o(t.fieldKey));return s(r,t=>t.fieldKey,n,"specOrder")}function s(e,n,o,r){const t=new Map;for(const i of o){const f=i[r];typeof f=="number"&&t.set(i.fieldKey,f)}if(t.size===0)return e;const d=[],l=[];e.forEach((i,f)=>{const p=n(i);p&&(d.push(f),l.push({item:i,index:f,order:t.get(p)}))}),l.sort((i,f)=>i.order!==void 0&&f.order!==void 0?i.order-f.order||i.index-f.index:i.order!==void 0?-1:f.order!==void 0?1:i.index-f.index);const u=[...e];return d.forEach((i,f)=>{u[i]=l[f].item}),u.every((i,f)=>i===e[f])?e:u}function y(e){return c(e,"card")}function F(e){return c(e,"filter")}const h="collection";function m(e,n){return{tyreSizes:{},brands:{"alloy-wheel":"brand",tyre:"brand"},finishes:{"alloy-wheel":"wheel_finish_ref"},diameters:{"alloy-wheel":"diameter",tyre:"rim_diameter"},collections:{"alloy-wheel":h},pcds:{"alloy-wheel":"pcd"},tyreTypes:{tyre:"tire_type"},speedRatings:{tyre:"speed_rating"}}[e]?.[n]}function x(e){return{size:"size",finish:"wheel_finish_ref",loadIndex:"load_index",speedRating:"speed_rating",tyreType:"tire_type",boltPattern:"bolt_pattern",et:"et",centreBore:"center_bore"}[e]}function _(e,n,o){const r=x(e);if(!r)return n;const t=o.find(d=>d.fieldKey===r)?.variant;return t===void 0?n:t==="none"?null:t}function O(e,n){if(n.length===0)return e;const o=[];let r=!1;for(const t of e){const d=_(t.key,t.role,n);if(d===null){r=!0;continue}if(d===t.role){o.push(t);continue}r=!0,o.push({...t,role:d})}return r?o:e}function c(e,n){const o=new Set(e.filter(r=>r[n]===!1).map(r=>r.fieldKey));return r=>!r||!o.has(r)}export{h as COLLECTION_FIELD_KEY,K as answerOrder,g as answersForKind,k as applyCardAnswers,w as applySpecAnswers,O as applyVariantAnswers,m as facetFieldKey,y as keepForCard,F as keepForFilter,a as keepForSpec,x as optionFieldKey,s as orderByAnswers,_ as variantRoleFor};
1
+ const g=Object.freeze([]);function k(e,n){return e.length===0?e:e.filter(o=>o.kind===void 0||o.kind===n)}function K(e,n){if(n.length===0)return e;const o=y(n);return s(e.filter(r=>o(r.fieldKey)),r=>r.fieldKey,n,"cardOrder")}function w(e,n){const o=n==="filter"?"filterOrder":"cardOrder",r=new Map;for(const t of e){const d=t[o];if(typeof d!="number"||!Number.isFinite(d))continue;const l=r.get(t.fieldKey);(l===void 0||d<l)&&r.set(t.fieldKey,d)}return t=>t?r.get(t):void 0}function a(e){return c(e,"spec")}function F(e,n){if(n.length===0)return e;const o=a(n),r=e.filter(t=>o(t.fieldKey));return s(r,t=>t.fieldKey,n,"specOrder")}function s(e,n,o,r){const t=new Map;for(const i of o){const f=i[r];typeof f=="number"&&t.set(i.fieldKey,f)}if(t.size===0)return e;const d=[],l=[];e.forEach((i,f)=>{const p=n(i);p&&(d.push(f),l.push({item:i,index:f,order:t.get(p)}))}),l.sort((i,f)=>i.order!==void 0&&f.order!==void 0?i.order-f.order||i.index-f.index:i.order!==void 0?-1:f.order!==void 0?1:i.index-f.index);const u=[...e];return d.forEach((i,f)=>{u[i]=l[f].item}),u.every((i,f)=>i===e[f])?e:u}function y(e){return c(e,"card")}function O(e){return c(e,"filter")}const h="collection";function m(e,n){return{tyreSizes:{},brands:{"alloy-wheel":"brand",tyre:"brand"},finishes:{"alloy-wheel":"wheel_finish_ref"},diameters:{"alloy-wheel":"diameter",tyre:"rim_diameter"},collections:{"alloy-wheel":h},pcds:{"alloy-wheel":"pcd"},tyreTypes:{tyre:"tire_type"},speedRatings:{tyre:"speed_rating"}}[e]?.[n]}function x(e){return{size:"size",finish:"wheel_finish_ref",loadIndex:"load_index",speedRating:"speed_rating",tyreType:"tire_type",boltPattern:"bolt_pattern",et:"et",centreBore:"center_bore"}[e]}function _(e,n,o){const r=x(e);if(!r)return n;const t=o.find(d=>d.fieldKey===r)?.variant;return t===void 0?n:t==="none"?null:t}function E(e,n){if(n.length===0)return e;const o=[];let r=!1;for(const t of e){const d=_(t.key,t.role,n);if(d===null){r=!0;continue}if(d===t.role){o.push(t);continue}r=!0,o.push({...t,role:d})}return r?o:e}function c(e,n){const o=new Set(e.filter(r=>r[n]===!1).map(r=>r.fieldKey));return r=>!r||!o.has(r)}export{h as COLLECTION_FIELD_KEY,g as NO_FIELD_ANSWERS,w as answerOrder,k as answersForKind,K as applyCardAnswers,F as applySpecAnswers,E as applyVariantAnswers,m as facetFieldKey,y as keepForCard,O as keepForFilter,a as keepForSpec,x as optionFieldKey,s as orderByAnswers,_ as variantRoleFor};
@@ -0,0 +1,10 @@
1
+ import { type SeededNode } from "efficient-web-builder/format/lib/document/seed-parts";
2
+ type Props = Record<string, unknown>;
3
+ export declare const FILTER_OPTIONS_FIELD = "options";
4
+ export declare const FILTER_TEMPLATE_ALLOW: readonly ["Text", "ImageBlock", "Flex", "CardList"];
5
+ export declare const FILTER_CHIPS_TEMPLATE_ALLOW: readonly ["Text", "ImageBlock", "Flex"];
6
+ export declare function filterCardSeed(nodeId: string): SeededNode[];
7
+ export declare function filterChipSeed(nodeId: string): SeededNode[];
8
+ export declare function withFilterTemplate(props: Props): Props;
9
+ export declare function withFilterChipsTemplate(props: Props): Props;
10
+ export {};
@@ -0,0 +1 @@
1
+ import{CARD_LIST_TYPE as c,CARD_ROW_FIELD_PROP as f}from"efficient-web-builder/format/lib/content/card-template";import{BOX_TYPE as n,CONTAINER_BLOCKS_SLOT as p}from"efficient-web-builder/format/lib/document/container-blocks";import{rowFieldTextSeed as r}from"efficient-web-builder/format/lib/document/blocks/general/Cards/card-seed";import{BOX as L,DIM as s,INNER_BOX as E,TEXT as l,boxPadding as m,seedNodes as O,token as d}from"efficient-web-builder/format/lib/document/seed-parts";const I="options",R=["Text","ImageBlock",n,c],b=["Text","ImageBlock",n],u=(e,t)=>({textStyle:"body-5",...d("label",e),case:"upper",letterSpacing:t,lineHeight:1.2}),P=u(12,.32),T=u(12,.18),_={textStyle:"body-5",...d("label",11),case:"upper",letterSpacing:.14,lineHeight:1.2,color:"main"},a=(e,t,i={})=>({...L,direction:"row",align:"center",gap:e,gapPhone:e,phoneRow:2,sharePhone:"content",...t?{wrapPhone:"nowrap"}:{},...i}),x=()=>({type:n,props:{...a(8,!0),name:"Option",...m(8,12),sectionBorder:{width:1}},slots:{[p]:[r("label",{...l,tag:"p"},T),r("count",{...s,tag:"p"},T)]}});function S(e){const t=o=>o==="0"?`${e}~group`:`${e}~group.${o.slice(2)}`,i={type:n,props:{...E,name:"Group",gap:12,gapPhone:12},slots:{[p]:[r("label",{...s,tag:"p"},P),{type:n,props:{...a(8,!1,{align:"start",wrap:!0}),name:"Options"},slots:{[p]:[{type:c,props:{[f]:I},slots:{template:[x()]}}]}}]}};return O([i],(o,h)=>t(h))}function w(e){const t={type:n,props:{...a(8,!0),name:"Chip",...m(4,8),sectionBorder:{width:1}},slots:{[p]:[r("label",{...l,tag:"p"},_),r("mark",{...l,tag:"p"},_)]}};return O([t],(i,o)=>o==="0"?`${e}~chip`:`${e}~chip.${o.slice(2)}`)}const g=(e,t)=>typeof e.id=="string"&&e.id.trim()?e.id:t;function A(e){return e.template!==void 0?e:{...e,template:S(g(e,"FilterBlock"))}}function N(e){return e.template!==void 0?e:{...e,template:w(g(e,"FilterChipsBlock"))}}export{b as FILTER_CHIPS_TEMPLATE_ALLOW,I as FILTER_OPTIONS_FIELD,R as FILTER_TEMPLATE_ALLOW,S as filterCardSeed,w as filterChipSeed,N as withFilterChipsTemplate,A as withFilterTemplate};
@@ -0,0 +1,34 @@
1
+ import { type BlockSeed, type SeededNode } from "efficient-web-builder/format/lib/document/seed-parts";
2
+ type Props = Record<string, unknown>;
3
+ export declare const PRODUCT_PICTURE_BLOCK = "ProductPicture";
4
+ export declare const PRODUCT_SPECS_BLOCK = "ProductSpecs";
5
+ export declare const PRODUCT_BUY_BLOCK = "ProductBuy";
6
+ export declare const PRODUCT_PRICE_BLOCK = "ProductPrice";
7
+ export declare const PRODUCT_COLOUR_BLOCK = "ProductColour";
8
+ export declare const PRODUCT_SIZE_BLOCK = "ProductSize";
9
+ export declare const PRODUCT_EYEBROW_BLOCK = "ProductEyebrow";
10
+ export declare const PRODUCT_NAME_BLOCK = "ProductName";
11
+ export declare const PRODUCT_CARD_SLOT_BLOCKS: readonly ["ProductPicture", "ProductEyebrow", "ProductName", "ProductSpecs", "ProductPrice", "ProductColour", "ProductSize", "ProductBuy"];
12
+ export declare const PRODUCT_CARD_FIELDS: readonly [{
13
+ readonly key: "name";
14
+ readonly label: "Name";
15
+ }, {
16
+ readonly key: "eyebrow";
17
+ readonly label: "Eyebrow";
18
+ }, {
19
+ readonly key: "note";
20
+ readonly label: "Note";
21
+ }, {
22
+ readonly key: "href";
23
+ readonly label: "Product page";
24
+ readonly kind: "link";
25
+ }];
26
+ export interface ProductCardSeedOptions {
27
+ legacyWellHonoured?: boolean;
28
+ }
29
+ export declare function productCardSeed(props: Props, options?: ProductCardSeedOptions): BlockSeed;
30
+ export declare function kitCardSeed(props: Props): BlockSeed;
31
+ export declare function withKitCardTemplate(props: Props): Props;
32
+ export declare function productCardTemplate(props: Props, options?: ProductCardSeedOptions): SeededNode[];
33
+ export declare function withProductCardTemplate(props: Props, options?: ProductCardSeedOptions): Props;
34
+ export {};
@@ -0,0 +1 @@
1
+ import{BOX_TYPE as c,CONTAINER_BLOCKS_SLOT as s}from"efficient-web-builder/format/lib/document/container-blocks";import{DIM as D,INNER_BOX as u,boxPadding as C,seedNodes as P,token as x}from"efficient-web-builder/format/lib/document/seed-parts";import{CARD_ROW_FIELD_PROP as E}from"efficient-web-builder/format/lib/content/card-template";import{CARDS_BODY_LOOK as S}from"efficient-web-builder/format/lib/document/blocks/general/Cards/card-seed";import{THEME_CARD_IMAGE_BG as w,resolveBoundCardImageBackground as I}from"efficient-web-builder/format/lib/content/card-image-background";import{SHARED_ROWS_KEY as K}from"efficient-web-builder/render/lib/content/box-shared-columns";import{GRID_CARD_SHOW as _}from"../sections/card-show-defaults.js";const g="ProductPicture",l="ProductSpecs",m="ProductBuy",p="ProductPrice",f="ProductColour",b="ProductSize",B="ProductEyebrow",O="ProductName",Z=[g,B,O,l,p,f,b,m],j=[{key:"name",label:"Name"},{key:"eyebrow",label:"Eyebrow"},{key:"note",label:"Note"},{key:"href",label:"Product page",kind:"link"}],L={...u,gap:0,gapPhone:0,...C(32,32,32,32),[K]:"shared"},h=e=>typeof e.id=="string"&&e.id.trim()?e.id:"ProductGrid",a=(e,t)=>typeof e=="boolean"?e:t,k={type:"Text",props:{...D,tag:"p",text:"",[E]:"note",_partStyles:{text:{...S,...x("body",14),lineHeight:1.375}}}};function A(e,t={}){const n=e.dynamic===!0,o={},i=n?t.legacyWellHonoured?e.imageBackground??w:I(e.imageBackground):e.imageBackground;i!==void 0&&(o.imageBackground=i);for(const d of["cardImage","coverIndex","indexBadge","showBadge"])e[d]!==void 0&&(o[d]=e[d]);const r={price:a(e.showCardPrice,!0),finishes:a(e.showCardFinishes,!0),sizes:a(e.showCardSizes,_.showCardSizes),buy:a(e.showCardBuy,_.showCardBuy),page:a(e.showCardPage,_.showCardPage)},y={...L,name:"Card"};e.outline==="hairline"&&(y.sectionBorder={width:1,style:"solid"});const T=[{type:g,props:o},{type:B},{type:O},{type:l,props:{sizes:r.sizes}},...r.price?[{type:p}]:[],...r.finishes?[{type:f}]:[],...r.buy||r.page?[{type:m,props:{buy:r.buy,page:r.page}}]:[]];return{type:c,props:y,slots:{[s]:T}}}const U={...u,gap:0,gapPhone:0,...C(0,0,0,0)},N={...u,gap:8,gapPhone:8,...C(16,20,16,20)},z={role:"heading",size:18,weight:500,case:"none",letterSpacing:-.015,lineHeight:1.2},R=24;function H(e){const t={frame:"full"};for(const o of["cardImage","showBadge"])e[o]!==void 0&&(t[o]=e[o]);const n={type:c,props:{...N,name:"Copy"},slots:{[s]:[{type:O,props:{fixedHeight:!1,_partStyles:{"@name":z}}},k,{type:p}]}};return{type:c,props:{...U,name:"Card"},slots:{[s]:[{type:g,props:t},n]}}}function q(e){if(e.template!==void 0)return e;const t=h(e);return{...e,gap:e.gap??R,gapPhone:e.gapPhone??R,template:P([H(e)],(n,o)=>`${t}~card-${o}-${n}`)}}function G(e,t={}){const n=h(e);return P([A(e,t)],(o,i)=>`${n}~card-${i}-${o}`)}function J(e,t={}){return e.template!==void 0?e:{...e,template:G(e,t)}}export{m as PRODUCT_BUY_BLOCK,j as PRODUCT_CARD_FIELDS,Z as PRODUCT_CARD_SLOT_BLOCKS,f as PRODUCT_COLOUR_BLOCK,B as PRODUCT_EYEBROW_BLOCK,O as PRODUCT_NAME_BLOCK,g as PRODUCT_PICTURE_BLOCK,p as PRODUCT_PRICE_BLOCK,b as PRODUCT_SIZE_BLOCK,l as PRODUCT_SPECS_BLOCK,H as kitCardSeed,A as productCardSeed,G as productCardTemplate,q as withKitCardTemplate,J as withProductCardTemplate};
@@ -0,0 +1,17 @@
1
+ export declare const CURRENT_LINE: {
2
+ readonly rowLink: "relative opacity-100";
3
+ readonly row: "pointer-events-none absolute inset-x-0 -bottom-2 h-[2px] bg-accent";
4
+ readonly tab: "absolute inset-x-0 -bottom-px h-[2px] bg-accent";
5
+ };
6
+ export declare const TAB_CELLS: {
7
+ readonly list: "m-0 flex list-none items-stretch gap-0 overflow-auto p-0 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden";
8
+ readonly item: "flex";
9
+ readonly tab: (first: boolean, current: boolean) => string;
10
+ readonly underline: "absolute inset-x-0 -bottom-px h-[2px] bg-accent";
11
+ };
12
+ export declare const TAB_PILLS: {
13
+ readonly nav: "-mx-1 [scrollbar-width:none] max-view-wide:overflow-x-auto [&::-webkit-scrollbar]:hidden";
14
+ readonly list: "flex flex-wrap gap-2 px-1 pb-1 max-view-wide:min-w-max max-view-wide:flex-nowrap";
15
+ readonly tab: (current: boolean) => string;
16
+ };
17
+ export declare function currentLinkIndex(hrefs: readonly string[], pagePath: string | null | undefined): number;
@@ -0,0 +1 @@
1
+ import{normalizePath as r}from"efficient-web-builder/format/lib/popup/rules";import{menuLinkKind as i}from"../menu-link.js";const a="[scrollbar-width:none] [&::-webkit-scrollbar]:hidden",x="text-[length:var(--size-label,13px)]",l={rowLink:"relative opacity-100",row:"pointer-events-none absolute inset-x-0 -bottom-2 h-[2px] bg-accent",tab:"absolute inset-x-0 -bottom-px h-[2px] bg-accent"},b={list:`m-0 flex list-none items-stretch gap-0 overflow-auto p-0 ${a}`,item:"flex",tab:(e,t)=>[`relative block whitespace-nowrap border-r border-line px-[26px] py-[18px] font-mono ${x} uppercase tracking-[0.22em] transition-colors`,e?"border-l border-line":"",t?"text-fg":"text-fg-dim hover:text-fg"].join(" "),underline:l.tab},s={nav:"-mx-1 [scrollbar-width:none] max-view-wide:overflow-x-auto [&::-webkit-scrollbar]:hidden",list:"flex flex-wrap gap-2 px-1 pb-1 max-view-wide:min-w-max max-view-wide:flex-nowrap",tab:e=>`flex flex-col gap-0.5 rounded-[var(--sf-button-radius,999px)] border px-5 py-2.5 transition-colors ${e?"border-accent bg-accent text-accent-ink":"border-line text-fg hover:border-accent hover:text-accent"}`};function d(e,t){if(!t)return-1;const n=r(t);return e.findIndex(o=>i(o)==="page"&&r(o)===n)}export{l as CURRENT_LINE,b as TAB_CELLS,s as TAB_PILLS,d as currentLinkIndex};
@@ -1 +1 @@
1
- const e={label:"Bundle Products",defaultProps:{num:"",title:"",description:"",columns:3}};export{e as BundleOfferMeta};
1
+ import{ProductGridSlots as t}from"../ProductGrid/meta.js";const l={label:"Bundle Products",fields:{template:t.template},defaultProps:{num:"",title:"",description:"",columns:3}};export{l as BundleOfferMeta};
@@ -1 +1 @@
1
- import{jsx as d}from"react/jsx-runtime";import r from"../../../../../components/pdp-dynamic/DynamicBundleOffer.js";import{parseSectionHeadPlacement as a}from"efficient-web-builder/format/lib/sections/section-head-placement";import{PH as m}from"efficient-web-builder/format/lib/document/blocks/placeholders";import{phHide as n}from"efficient-web-builder/render/lib/document/blocks/scaffold";import{PRODUCTGRID_PH as c}from"../placeholders.js";import{BundleOfferMeta as f}from"./meta.js";const B={...f,render:e=>{const i=a(e.headPlacement)==="own-box",t=o=>i?void 0:o;return d(r,{num:t(n(e.num,c.num,e.editor)),title:t(n(e.title,m.sectionHeading,e.editor)),description:t(n(e.description,m.body,e.editor)),omitHead:i,columns:typeof e.columns=="number"?e.columns:3,cardImage:e.cardImage,editing:e.editor?.isEditing})}};export{B as BundleOfferRender};
1
+ import{bundleToGrid as e}from"../../../../sections/bundle-to-grid.js";import{ProductGridRender as o}from"../ProductGrid/render.js";import{BundleOfferMeta as d}from"./meta.js";const m={...d,render:r=>o.render(e(r).props)};export{m as BundleOfferRender};
@@ -0,0 +1,8 @@
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
+ export declare const FilterBlockSlots: {
3
+ template: {
4
+ type: "slot";
5
+ allow: ("Flex" | "Text" | "ImageBlock" | "CardList")[];
6
+ };
7
+ };
8
+ export declare const FilterBlockMeta: Omit<BlockRender, "render">;
@@ -0,0 +1 @@
1
+ import{phoneKey as o}from"efficient-easel/draw";import{FILTER_TEMPLATE_ALLOW as t}from"../../../../content/filter-card-seed.js";import{DEFAULT_FILTER_LOOK as e,DEFAULT_FILTER_LOOK_PHONE as l,DEFAULT_OPENING_SORT as r,DEFAULT_SHOWN_FILTERS as L}from"../../../../sections/shopper-filters.js";const E={template:{type:"slot",allow:[...t]}},_={label:"Filters",fields:E,defaultProps:{look:e,[o("look")]:l,filtersShown:[...L],showSort:!0,openingSort:r,filtersBelow:!1}};export{_ as FilterBlockMeta,E as FilterBlockSlots};
@@ -0,0 +1,2 @@
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
+ export declare const FilterBlockRender: BlockRender;
@@ -0,0 +1 @@
1
+ import{jsx as o}from"react/jsx-runtime";import{phoneKey as t}from"efficient-easel/draw";import i from"../../../../../components/catalog/ShopperFilters.js";import{FIRST_ROWS_PROP as r}from"../../../../wheels/shopper-first-paint.js";import{parseFilterLook as l,parseFilterLookPhone as n,parseOpeningSort as m,parseShownFilters as f}from"../../../../sections/shopper-filters.js";import{FilterBlockMeta as s}from"./meta.js";const k={...s,render:e=>o(i,{owner:{id:String(e.id??""),template:e.template},look:l(e.look),lookPhone:n(e[t("look")]),shown:f(e.filtersShown),showSort:e.showSort!==!1,openingSort:m(e.openingSort),filtersBelow:e.filtersBelow===!0,fieldUsage:e.fieldUsage,firstRows:e[r],editing:e.editor?.isEditing})};export{k as FilterBlockRender};
@@ -0,0 +1,8 @@
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
+ export declare const FilterChipsBlockSlots: {
3
+ template: {
4
+ type: "slot";
5
+ allow: ("Flex" | "Text" | "ImageBlock")[];
6
+ };
7
+ };
8
+ export declare const FilterChipsBlockMeta: Omit<BlockRender, "render">;
@@ -0,0 +1 @@
1
+ import{FILTER_CHIPS_TEMPLATE_ALLOW as t}from"../../../../content/filter-card-seed.js";const o={template:{type:"slot",allow:[...t]}},l={label:"Filter chips",fields:o,defaultProps:{showCount:!0,showClear:!0,showSort:!1}};export{l as FilterChipsBlockMeta,o as FilterChipsBlockSlots};
@@ -0,0 +1,2 @@
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
+ export declare const FilterChipsBlockRender: BlockRender;
@@ -0,0 +1 @@
1
+ import{jsx as e}from"react/jsx-runtime";import o from"../../../../../components/catalog/ShopperChips.js";import{FIRST_SHOWN_PROP as i}from"../../../../wheels/shopper-first-paint.js";import{FilterChipsBlockMeta as r}from"./meta.js";const n={...r,render:t=>e(o,{owner:{id:String(t.id??""),template:t.template},showCount:t.showCount!==!1,showClear:t.showClear!==!1,showSort:t.showSort===!0,firstShown:t[i],editing:t.editor?.isEditing})};export{n as FilterChipsBlockRender};
@@ -1 +1 @@
1
- import{PH as e}from"efficient-web-builder/format/lib/document/blocks/placeholders";const o={num:e.sectionNumber,title:e.headingAccent,link:e.viewAll},l={items:{type:"slot",allow:["GalleryItem"]}},r={label:"Customer Photo Grid",fields:l,defaultProps:{dynamic:!1,mediaZone:"all",photoDisplay:"covers",num:"",title:"",linkText:"",linkHref:"/contact",galleryHref:"/gallery",previewHover:!1}};export{o as GALLERY_B_PH,r as GalleryBMeta,l as GalleryBSlots};
1
+ import{PH as e}from"efficient-web-builder/format/lib/document/blocks/placeholders";const a={num:e.sectionNumber,title:e.headingAccent,link:e.viewAll},l={items:{type:"slot",allow:["GalleryItem"]}},o={label:"Gallery",fields:l,defaultProps:{dynamic:!1,mediaZone:"all",photoDisplay:"covers",num:"",title:"",linkText:"",linkHref:"/contact",galleryHref:"/gallery",previewHover:!1,displayPhone:{tag:!1}}};export{a as GALLERY_B_PH,o as GalleryBMeta,l as GalleryBSlots};
@@ -1 +1 @@
1
- import{jsx as m}from"react/jsx-runtime";import c,{GALLERY_ITEM_HINTS as r}from"../../../../../components/GalleryItem.js";import{phHide as n}from"efficient-web-builder/render/lib/document/blocks/scaffold";import{GalleryItemMeta as f}from"./meta.js";function o(e,t){if(typeof e=="string")return e.trim()===t?"":e;if(e&&typeof e=="object"){const i=e;if(typeof i.text=="string"&&i.text.trim()===t)return{...i,text:""}}return e}const u={...f,render:e=>{const t=e.product??{},i=e.fromProduct===!0&&!!t.code;return m(c,{image:i?t.cover:e.image,photos:i?(t.photos??[]).map(d=>({src:d})):e.photos,href:i?t.href:e.href,process:i?t.hideProcess?void 0:t.category:n(o(e.process,r.process),r.process,e.editor),eyebrow:i?t.hideEyebrow?void 0:t.vehicle||void 0:n(o(e.eyebrow,r.eyebrow),r.eyebrow,e.editor),name:i?t.hideName?void 0:t.name:n(o(e.name,r.name),r.name,e.editor),meta:i?t.hideFinish?void 0:t.finish:n(o(e.meta,r.meta),r.meta,e.editor),previewHover:e.previewHover,ratio:e.ratio,captionPlace:e.captionPlace,editing:e.editor?.isEditing})}};export{u as GalleryItemRender};
1
+ import{jsx as c}from"react/jsx-runtime";import f,{GALLERY_ITEM_HINTS as r}from"../../../../../components/GalleryItem.js";import{phHide as d}from"efficient-web-builder/render/lib/document/blocks/scaffold";import{GalleryItemMeta as a}from"./meta.js";function n(e,t){if(typeof e=="string")return e.trim()===t?"":e;if(e&&typeof e=="object"){const i=e;if(typeof i.text=="string"&&i.text.trim()===t)return{...i,text:""}}return e}function m(e,t){const i=n(e,t);if(typeof i=="string")return i.trim();if(i&&typeof i=="object"&&!i.hidden){const o=i.text;return typeof o=="string"?o.trim():""}return""}const u={...a,render:e=>{const t=e.product??{},i=e.fromProduct===!0&&!!t.code;return c(f,{image:i?t.cover:e.image,photos:i?(t.photos??[]).map(o=>({src:o})):e.photos,href:i?t.href:e.href,process:i?t.hideProcess?void 0:t.category:d(n(e.process,r.process),r.process,e.editor),eyebrow:i?t.hideEyebrow?void 0:t.vehicle||void 0:d(n(e.eyebrow,r.eyebrow),r.eyebrow,e.editor),name:i?t.hideName?void 0:t.name:d(n(e.name,r.name),r.name,e.editor),meta:i?t.hideFinish?void 0:t.finish:d(n(e.meta,r.meta),r.meta,e.editor),previewHover:e.previewHover,ratio:e.ratio,captionPlace:e.captionPlace,editing:e.editor?.isEditing,tile:{id:String(e.id??""),tag:i?t.hideProcess?"":t.category??"":m(e.process,r.process),name:i?t.hideName?"":t.name??"":m(e.name,r.name)}})}};export{u as GalleryItemRender};
@@ -0,0 +1,2 @@
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
+ export declare const ProductBuyMeta: Omit<BlockRender, "render">;
@@ -0,0 +1 @@
1
+ const e={label:"Buy",defaultProps:{buy:!0,page:!0}};export{e as ProductBuyMeta};
@@ -0,0 +1,2 @@
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
+ export declare const ProductBuyRender: BlockRender;
@@ -0,0 +1 @@
1
+ import{jsx as r}from"react/jsx-runtime";import o from"../../../../../components/card-pieces/HostPart.js";import a from"../../../../../components/card-pieces/CardBuyButton.js";import{ProductBuyMeta as t}from"./meta.js";const n={...t,render:e=>r(o,{label:t.label??"",editing:!!e.editor?.isEditing,children:r(a,{buy:e.buy!==!1,page:e.page!==!1})})};export{n as ProductBuyRender};
@@ -0,0 +1,2 @@
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
+ export declare const ProductBuyButtonMeta: Omit<BlockRender, "render">;
@@ -0,0 +1 @@
1
+ const t={label:"Buy button",defaultProps:{}};export{t as ProductBuyButtonMeta};
@@ -0,0 +1,2 @@
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
+ export declare const ProductBuyButtonRender: BlockRender;
@@ -0,0 +1 @@
1
+ import{jsx as o}from"react/jsx-runtime";import e from"../../../../../components/card-pieces/CardBuyButton.js";import i from"../../../../../components/card-pieces/HostPart.js";import{ProductBuyButtonMeta as t}from"./meta.js";const a={...t,render:r=>o(i,{label:t.label??"",editing:!!r.editor?.isEditing,onHero:!0,children:o(e,{})})};export{a as ProductBuyButtonRender};
@@ -0,0 +1,2 @@
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
+ export declare const ProductEyebrowMeta: Omit<BlockRender, "render">;
@@ -0,0 +1 @@
1
+ const e={label:"Eyebrow",defaultProps:{}};export{e as ProductEyebrowMeta};
@@ -0,0 +1,2 @@
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
+ export declare const ProductEyebrowRender: BlockRender;
@@ -0,0 +1 @@
1
+ "use client";import{jsx as o}from"react/jsx-runtime";import{withRMark as s}from"efficient-web-builder/render/components/RMark";import l from"../../../../../components/card-pieces/CardEyebrow.js";import{readPartStyles as a}from"efficient-web-builder/render/lib/document/part-styles";import m from"../../../../../components/card-pieces/HostPart.js";import{useProductCardState as c}from"../../../../../components/card-pieces/ProductCardState.js";import{useGridCard as f}from"../../../../../components/GridCardTemplate.js";import{wheelCardEyebrow as u}from"../../../../../components/ProductCardEyebrow.js";import{ProductEyebrowMeta as t}from"./meta.js";function w({region:e}){const r=c(),{fieldUsage:i,reserveEyebrow:n}=f(),d=r.kind==="wheel"&&r.wheel.process?s(r.wheel.process):null;return o(l,{reserve:n,region:e,children:u({kindLabel:null,brand:null,process:d},i)})}const x={...t,render:e=>{const r=!!e.editor?.isEditing;return o(m,{label:t.label??"",editing:r,children:o(w,{region:{nodeId:typeof e.id=="string"?e.id:void 0,partStyles:a(e),editing:r}})})}};export{x as ProductEyebrowRender};
@@ -3,5 +3,9 @@ export declare const ProductGridSlots: {
3
3
  products: {
4
4
  type: "slot";
5
5
  };
6
+ template: {
7
+ allow: string[];
8
+ type: "slot";
9
+ };
6
10
  };
7
11
  export declare const ProductGridMeta: Omit<BlockRender, "render">;
@@ -1 +1 @@
1
- import{DEFAULT_TITLE_SIZE as t}from"../../../../sections/product-grid-title.js";import{DEFAULT_COVER_INDEX as o}from"../../../../wheels/cover-rendering.js";import{DEFAULT_CARD_OUTLINE as e,DEFAULT_CARD_INDEX_FORMAT as r}from"efficient-web-builder/format/lib/sections/product-card-style";const i={products:{type:"slot"}},n={label:"Product Grid",fields:i,defaultProps:{dynamic:!1,num:"",title:"",titleSize:t,padTop:120,description:"",linkText:"",linkHref:"",columns:4,limit:8,showAll:!1,coverIndex:String(o),outline:e,indexBadge:r,showBadge:!0,source:null}};export{n as ProductGridMeta,i as ProductGridSlots};
1
+ import{DEFAULT_TITLE_SIZE as t}from"../../../../sections/product-grid-title.js";import{DEFAULT_MORE_PRODUCTS as l,DEFAULT_PER_PAGE as r}from"../../../../sections/product-grid-pages.js";import{cardTemplateSlot as e}from"efficient-web-builder/format/lib/content/card-template";import{PRODUCT_CARD_SLOT_BLOCKS as i}from"../../../../content/product-card-seed.js";const o=e(),s={products:{type:"slot"},template:{...o,allow:[...o.allow,...i]}},c={label:"Product Grid",fields:s,defaultProps:{dynamic:!1,num:"",title:"",titleSize:t,padTop:120,description:"",linkText:"",linkHref:"",columns:4,limit:8,showAll:!1,moreProducts:l,perPage:r,source:null}};export{c as ProductGridMeta,s as ProductGridSlots};
@@ -1 +1 @@
1
- import{jsx as m}from"react/jsx-runtime";import{phoneKey as c}from"efficient-easel/draw";import f from"../../../../../components/pdp-dynamic/DynamicRelatedProducts.js";import{DEFAULT_RELATIONSHIP as C}from"../../../../catalog/relationships.js";import{resolveWidth as s}from"efficient-web-builder/format/lib/content/section-width";import P from"../../../../../components/ProductGridSection.js";import{resolveBoundCardImageBackground as B}from"efficient-web-builder/format/lib/content/card-image-background";import{hidableText as x}from"efficient-easel/screen/lib/document/hidable";import{parseCoverIndex as k}from"../../../../wheels/cover-rendering.js";import{cardHoverOf as u}from"efficient-web-builder/format/lib/animation/hover";import{parseSectionHeadPlacement as I}from"efficient-web-builder/format/lib/sections/section-head-placement";import{parseCardOutline as g,parseCardIndexFormat as h}from"efficient-web-builder/format/lib/sections/product-card-style";import{PH as t}from"efficient-web-builder/format/lib/document/blocks/placeholders";import{phHide as i}from"efficient-web-builder/render/lib/document/blocks/scaffold";import{PRODUCTGRID_PH as n}from"../placeholders.js";import{ProductGridMeta as y}from"./meta.js";const K={...y,render:e=>{if(e.dynamic)return m(f,{num:i(e.num,n.num,e.editor),title:i(e.title,t.sectionHeading,e.editor),description:i(e.description,t.body,e.editor),columns:typeof e.columns=="number"?e.columns:3,relationship:C,cardImage:e.cardImage,outline:g(e.outline),indexBadge:h(e.indexBadge),showBadge:e.showBadge??!0,hover:u(e,"ProductGrid"),imageBackground:B(e.imageBackground),showCardPrice:e.showCardPrice,showCardFinishes:e.showCardFinishes,showCardSizes:e.showCardSizes,showCardBuy:e.showCardBuy,showCardPage:e.showCardPage,editing:e.editor?.isEditing});const a=i(e.linkText,n.link,e.editor),o=e.source,l=s(e,"full"),r=I(e.headPlacement)==="own-box",d=w=>r?void 0:w;return m(P,{gap:e.gap,gapPhone:e[c("gap")],contentCapped:l.mode==="page",num:d(i(e.num,n.num,e.editor)),title:d(i(e.title,t.sectionHeading,e.editor)),titleSize:e.titleSize,padTop:r?0:e.padTop,description:d(i(e.description,t.body,e.editor)),link:d(a?{text:a,href:x(e.linkHref)||"#"}:void 0),products:e.products,wheels:e.wheels,source:o?.slug?o:void 0,catalog:e.catalog,kinds:e.kinds,fieldUsage:e.fieldUsage,columns:e.columns,columnsPhone:e[c("columns")],limit:e.showAll?void 0:e.limit,editing:e.editor?.isEditing,imageBackground:e.imageBackground,cardImage:e.cardImage,hover:u(e,"ProductGrid"),coverIndex:k(e.coverIndex),outline:g(e.outline),indexBadge:h(e.indexBadge),showBadge:e.showBadge??!0,showCardPrice:e.showCardPrice,showCardFinishes:e.showCardFinishes,showCardSizes:e.showCardSizes,showCardBuy:e.showCardBuy,showCardPage:e.showCardPage})}};export{K as ProductGridRender};
1
+ import{jsx as g}from"react/jsx-runtime";import{gridLimitOf as H}from"../../../../sections/product-grid-pages.js";import{FIRST_COUNT_IN_CHIPS_PROP as T}from"../../../../wheels/shopper-first-paint.js";import{phoneKey as d,tabletKey as P}from"efficient-easel/draw";import b from"../../../../../components/pdp-dynamic/DynamicRelatedProducts.js";import{DEFAULT_RELATIONSHIP as y}from"../../../../catalog/relationships.js";import{resolveWidth as C}from"efficient-web-builder/format/lib/content/section-width";import s from"../../../../../components/ProductGridSection.js";import{relatedCardCount as k}from"../../../../catalog/related-cards.js";import{hidableText as R}from"efficient-easel/screen/lib/document/hidable";import{cardHoverOf as h}from"efficient-web-builder/format/lib/animation/hover";import{parseSectionHeadPlacement as w}from"efficient-web-builder/format/lib/sections/section-head-placement";import{PH as o}from"efficient-web-builder/format/lib/document/blocks/placeholders";import{phHide as t}from"efficient-web-builder/render/lib/document/blocks/scaffold";import{PRODUCTGRID_PH as l}from"../placeholders.js";import{parseMoreProducts as S}from"../../../../sections/product-grid-pages.js";import{ProductGridMeta as _}from"./meta.js";const Q={..._,render:e=>{const a=typeof e.id=="string"?e.id:"",c=e.template;if(e.dynamic){const n=w(e.headPlacement)==="own-box",m=I=>n?void 0:I;return g(b,{num:m(t(e.num,l.num,e.editor)),title:m(t(e.title,o.sectionHeading,e.editor)),description:m(t(e.description,o.body,e.editor)),omitHead:n,columns:typeof e.columns=="number"?e.columns:3,columnsPhone:e[d("columns")],columnsTablet:e[P("columns")],gap:e.gap,gapPhone:e[d("gap")],cardCount:k(e.limit),relationship:typeof e.relationship=="string"?e.relationship:y,hover:h(e,"ProductGrid"),ownerId:a,template:c,cardImage:e.cardImage,outline:e.outline,indexBadge:e.indexBadge,editing:e.editor?.isEditing})}const r=t(e.linkText,l.link,e.editor),u=e.source,x=C(e,"full"),f=w(e.headPlacement)==="own-box",i=n=>f?void 0:n;return g(s,{gap:e.gap,gapPhone:e[d("gap")],contentCapped:x.mode==="page",num:i(t(e.num,l.num,e.editor)),title:i(t(e.title,o.sectionHeading,e.editor)),titleSize:e.titleSize,padTop:f?0:e.padTop,description:i(t(e.description,o.body,e.editor)),link:i(r?{text:r,href:R(e.linkHref)||"#"}:void 0),products:e.products,wheels:e.wheels,source:u?.slug?u:void 0,catalog:e.catalog,firstCountInChips:e[T]===!0,kinds:e.kinds,fieldUsage:e.fieldUsage,columns:e.columns,columnsPhone:e[d("columns")],columnsTablet:e[P("columns")],limit:H({limit:e.limit,showAll:e.showAll}),moreProducts:S(e.moreProducts),perPage:e.perPage,editing:e.editor?.isEditing,hover:h(e,"ProductGrid"),ownerId:a,template:c})}};export{Q as ProductGridRender};
@@ -1 +1 @@
1
- import{DEFAULT_HERO_PRICE_PLACEMENT as e}from"../../../../sections/hero-price-placement.js";import{DEFAULT_HERO_LAYOUT as r,DEFAULT_HERO_RATIO as l,DEFAULT_HERO_TEXT_ALIGN as E}from"../../../../sections/hero-arrangement.js";import{DEFAULT_HERO_GALLERY_MODE as _,DEFAULT_HERO_IMAGE_FIT as T}from"../../../../sections/hero-gallery.js";import{cardTemplateSlot as L}from"efficient-web-builder/format/lib/content/card-template";import{HERO_PRICE_BLOCK as m}from"../../../../content/hero-price-seed.js";import{TRUST_BULLETS_ALLOW as a,TRUST_BULLETS_SLOT as o}from"../../../../sections/hero-trust-bullets.js";const t=L(),i={template:{...t,allow:[...t.allow,m]},[o]:{type:"slot",allow:a}},u={label:"Product Hero",fields:i,defaultProps:{source:null,pricePlacement:e,showVehicleFitment:!0,heroLayout:r,imageRatio:l,textAlign:E,showSpecTable:!0,showPriceQuote:!0,galleryMode:_,imageFit:T,[o]:[]}};export{u as ProductHeroMeta,i as ProductHeroSlots};
1
+ import{DEFAULT_HERO_PRICE_PLACEMENT as e}from"../../../../sections/hero-price-placement.js";import{DEFAULT_HERO_LAYOUT as r,DEFAULT_HERO_RATIO as l,DEFAULT_HERO_TEXT_ALIGN as E}from"../../../../sections/hero-arrangement.js";import{DEFAULT_HERO_GALLERY_MODE as _,DEFAULT_HERO_IMAGE_FIT as L}from"../../../../sections/hero-gallery.js";import{cardTemplateSlot as T}from"efficient-web-builder/format/lib/content/card-template";import{HERO_PRICE_BLOCK as m}from"../../../../content/hero-price-seed.js";import{TRUST_BULLETS_ALLOW as a,TRUST_BULLETS_SLOT as o}from"../../../../sections/hero-trust-bullets.js";const t=T(),i="ProductBuyButton",c={template:{...t,allow:[...t.allow,m,i]},[o]:{type:"slot",allow:a}},U={label:"Product Hero",fields:c,defaultProps:{source:null,pricePlacement:e,showVehicleFitment:!0,heroLayout:r,imageRatio:l,textAlign:E,showSpecTable:!0,showPriceQuote:!0,galleryMode:_,imageFit:L,[o]:[]}};export{U as ProductHeroMeta,c as ProductHeroSlots};
@@ -0,0 +1,2 @@
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
+ export declare const ProductNameMeta: Omit<BlockRender, "render">;
@@ -0,0 +1 @@
1
+ const e={label:"Name",defaultProps:{}};export{e as ProductNameMeta};
@@ -0,0 +1,2 @@
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
+ export declare const ProductNameRender: BlockRender;
@@ -0,0 +1 @@
1
+ "use client";import{jsx as i}from"react/jsx-runtime";import d from"../../../../../components/card-pieces/CardName.js";import{readPartStyles as o}from"efficient-web-builder/render/lib/document/part-styles";import n from"../../../../../components/card-pieces/HostPart.js";import{ProductNameMeta as r}from"./meta.js";const g={...r,render:e=>{const t=!!e.editor?.isEditing;return i(n,{label:r.label??"",editing:t,children:i(d,{region:{nodeId:typeof e.id=="string"?e.id:void 0,partStyles:o(e),editing:t},fixedHeight:e.fixedHeight!==!1})})}};export{g as ProductNameRender};
@@ -0,0 +1,2 @@
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
+ export declare const ProductPictureMeta: Omit<BlockRender, "render">;
@@ -0,0 +1 @@
1
+ import{DEFAULT_CARD_INDEX_FORMAT as e}from"efficient-web-builder/format/lib/sections/product-card-style";const r={label:"Picture",defaultProps:{indexBadge:e,showBadge:!0}};export{r as ProductPictureMeta};
@@ -0,0 +1,2 @@
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
+ export declare const ProductPictureRender: BlockRender;
@@ -0,0 +1 @@
1
+ import{jsx as r}from"react/jsx-runtime";import t from"../../../../../components/card-pieces/CardProductPicture.js";import a from"../../../../../components/card-pieces/HostPart.js";import{ProductPictureMeta as d}from"./meta.js";const n={...d,render:e=>r(a,{label:d.label??"",editing:!!e.editor?.isEditing,children:r(t,{imageBackground:e.imageBackground,cardImage:e.cardImage,coverIndex:e.coverIndex,indexBadge:e.indexBadge,showBadge:e.showBadge,frame:e.frame,setPicture:e.setPicture})})};export{n as ProductPictureRender};
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import o from"../../../../../components/card-pieces/CardPrice.js";import d from"../../../../../components/card-pieces/HostPart.js";import{readPartStyles as n}from"efficient-web-builder/render/lib/document/part-styles";import{ProductPriceMeta as i}from"./meta.js";const s={...i,render:r=>{const e=!!r.editor?.isEditing;return t(d,{label:i.label??"",editing:e,onHero:!0,children:t(o,{region:{nodeId:typeof r.id=="string"?r.id:void 0,partStyles:n(r),editing:e}})})}};export{s as ProductPriceRender};
1
+ import{jsx as e,Fragment as o}from"react/jsx-runtime";import n from"../../../../../components/card-pieces/CardPrice.js";import{useGridCard as d}from"../../../../../components/GridCardTemplate.js";import a from"../../../../../components/card-pieces/HostPart.js";import{readPartStyles as m}from"efficient-web-builder/render/lib/document/part-styles";import{ProductPriceMeta as i}from"./meta.js";function c({children:r}){return d().ownerId?e("div",{children:r}):e(o,{children:r})}const h={...i,render:r=>{const t=!!r.editor?.isEditing;return e(a,{label:i.label??"",editing:t,onHero:!0,children:e(c,{children:e(n,{quoteSets:!0,region:{nodeId:typeof r.id=="string"?r.id:void 0,partStyles:m(r),editing:t}})})})}};export{h as ProductPriceRender};
@@ -0,0 +1,2 @@
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
+ export declare const ProductSpecsMeta: Omit<BlockRender, "render">;
@@ -0,0 +1 @@
1
+ const e={label:"Specs",defaultProps:{sizes:!1}};export{e as ProductSpecsMeta};
@@ -0,0 +1,2 @@
1
+ import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
+ export declare const ProductSpecsRender: BlockRender;
@@ -0,0 +1 @@
1
+ "use client";import{jsx as r}from"react/jsx-runtime";import s from"../../../../../components/card-pieces/HostPart.js";import{CardSpecFacts as o,CardSpecLine as d}from"../../../../../components/card-pieces/CardSpecs.js";import{useGridCard as c}from"../../../../../components/GridCardTemplate.js";import{ProductSpecsMeta as i}from"./meta.js";function n({sizes:e}){const{fieldUsage:t}=c();return r(d,{children:r(o,{sizes:e,fieldUsage:t})})}const u={...i,render:e=>r(s,{label:i.label??"",editing:!!e.editor?.isEditing,children:r(n,{sizes:e.sizes===!0})})};export{u as ProductSpecsRender};
@@ -1,6 +1,2 @@
1
1
  import type { BlockRender } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
- export declare const RELATEDPRODUCTS_PH: {
3
- footnote: string;
4
- footnoteLinkText: string;
5
- };
6
2
  export declare const RelatedProductsMeta: Omit<BlockRender, "render">;
@@ -1 +1 @@
1
- import{RELATED_CARDS_DEFAULT as o}from"../../../../catalog/related-cards.js";import{DEFAULT_RELATIONSHIP as t}from"../../../../catalog/relationships.js";const r={footnote:"A note about how these are matched.",footnoteLinkText:"Enquire"},i={label:"Related Products",defaultProps:{num:"",title:"",description:"",footnote:"",footnoteLinkText:"",footnoteLinkHref:"",cardCount:o,columns:3,relationship:t}};export{r as RELATEDPRODUCTS_PH,i as RelatedProductsMeta};
1
+ import{RELATED_CARDS_DEFAULT as t}from"../../../../catalog/related-cards.js";import{DEFAULT_RELATIONSHIP as o}from"../../../../catalog/relationships.js";import{ProductGridSlots as e}from"../ProductGrid/meta.js";const i={label:"Related Products",fields:{template:e.template},defaultProps:{num:"",title:"",description:"",cardCount:t,columns:3,relationship:o}};export{i as RelatedProductsMeta};
@@ -1 +1 @@
1
- import{jsx as a}from"react/jsx-runtime";import m from"../../../../../components/pdp-dynamic/DynamicRelatedProducts.js";import{relatedCardCount as f}from"../../../../catalog/related-cards.js";import{DEFAULT_RELATIONSHIP as c}from"../../../../catalog/relationships.js";import{hidableText as u}from"efficient-easel/screen/lib/document/hidable";import{parseCoverIndex as l}from"../../../../wheels/cover-rendering.js";import{cardHoverOf as x}from"efficient-web-builder/format/lib/animation/hover";import{parseSectionHeadPlacement as g}from"efficient-web-builder/format/lib/sections/section-head-placement";import{parseCardOutline as P,parseCardIndexFormat as H}from"efficient-web-builder/format/lib/sections/product-card-style";import{PH as i}from"efficient-web-builder/format/lib/document/blocks/placeholders";import{phHide as t}from"efficient-web-builder/render/lib/document/blocks/scaffold";import{PRODUCTGRID_PH as h}from"../placeholders.js";import{RelatedProductsMeta as R,RELATEDPRODUCTS_PH as d}from"./meta.js";const _={...R,render:e=>{const n=g(e.headPlacement)==="own-box",o=r=>n?void 0:r;return a(m,{num:o(t(e.num,h.num,e.editor)),title:o(t(e.title,i.sectionHeading,e.editor)),description:o(t(e.description,i.body,e.editor)),omitHead:n,columns:typeof e.columns=="number"?e.columns:3,cardCount:f(e.cardCount),relationship:typeof e.relationship=="string"?e.relationship:c,footnote:t(e.footnote,d.footnote,e.editor),footnoteLinkText:t(e.footnoteLinkText,d.footnoteLinkText,e.editor),footnoteLinkHref:u(e.footnoteLinkHref),cardImage:e.cardImage,coverIndex:l(e.coverIndex),imageBackground:e.imageBackground,hover:x(e,"RelatedProducts"),outline:P(e.outline),indexBadge:H(e.indexBadge),showBadge:e.showBadge,editing:e.editor?.isEditing})}};export{_ as RelatedProductsRender};
1
+ import{relatedToGrid as e}from"../../../../sections/related-to-grid.js";import{ProductGridRender as o}from"../ProductGrid/render.js";import{RelatedProductsMeta as d}from"./meta.js";const i={...d,render:r=>o.render(e(r).props)};export{i as RelatedProductsRender};
@@ -1 +1 @@
1
- const t={label:"Stock fitment",defaultProps:{}};export{t as StockFitmentMeta};
1
+ const t={label:"Fitment answer",defaultProps:{}};export{t as StockFitmentMeta};
@@ -33,6 +33,14 @@ export declare const COMMERCE_METAS: {
33
33
  ProductSize: Omit<BlockRender, "render">;
34
34
  ProductColour: Omit<BlockRender, "render">;
35
35
  ProductPrice: Omit<BlockRender, "render">;
36
+ ProductBuyButton: Omit<BlockRender, "render">;
37
+ FilterBlock: Omit<BlockRender, "render">;
38
+ FilterChipsBlock: Omit<BlockRender, "render">;
36
39
  FitmentPicker: Omit<BlockRender, "render">;
37
40
  StockFitment: Omit<BlockRender, "render">;
41
+ ProductPicture: Omit<BlockRender, "render">;
42
+ ProductSpecs: Omit<BlockRender, "render">;
43
+ ProductBuy: Omit<BlockRender, "render">;
44
+ ProductEyebrow: Omit<BlockRender, "render">;
45
+ ProductName: Omit<BlockRender, "render">;
38
46
  };
@@ -1 +1 @@
1
- import{AccountBlockMeta as t}from"./AccountBlock/meta.js";import{AlloyWheelsListingMeta as r}from"./AlloyWheelsListing/meta.js";import{BundleOfferMeta as o}from"./BundleOffer/meta.js";import{CartBlockMeta as e}from"./CartBlock/meta.js";import{CatalogFilterBarMeta as m}from"./CatalogFilterBar/meta.js";import{CheckoutCTAMeta as i}from"./CheckoutCTA/meta.js";import{CollectionCardMeta as a}from"./CollectionCard/meta.js";import{CollectionsMeta as l}from"./Collections/meta.js";import{CompatibleTyresMeta as c}from"./CompatibleTyres/meta.js";import{CountrySwitchBlockMeta as p}from"./CountrySwitchBlock/meta.js";import{DeliveryOptionsMeta as f}from"./DeliveryOptions/meta.js";import{DetailRowsMeta as M}from"./DetailRows/meta.js";import{EuTyreLabelMeta as u}from"./EuTyreLabel/meta.js";import{EuTyreLabelBlockMeta as d}from"./EuTyreLabelBlock/meta.js";import{FitmentFinderMeta as n}from"./FitmentFinder/meta.js";import{FitmentPickerMeta as y}from"./FitmentPicker/meta.js";import{FitmentTableMeta as C}from"./FitmentTable/meta.js";import{GalleryBMeta as P}from"./GalleryB/meta.js";import{GalleryItemMeta as T}from"./GalleryItem/meta.js";import{GalleryMeta as k}from"./Gallery/meta.js";import{HeaderMeta as B}from"./Header/meta.js";import{ProductGalleryMeta as s}from"./ProductGallery/meta.js";import{ProductGridMeta as S}from"./ProductGrid/meta.js";import{ProductHeroMeta as F}from"./ProductHero/meta.js";import{ProductRefMeta as h}from"./ProductRef/meta.js";import{RelatedProductsMeta as b}from"./RelatedProducts/meta.js";import{SearchBlockMeta as G}from"./SearchBlock/meta.js";import{SpecTableMeta as A}from"./SpecTable/meta.js";import{ThemeSwitchBlockMeta as E}from"./ThemeSwitchBlock/meta.js";import{TyreFitmentMeta as R}from"./TyreFitment/meta.js";import{TyreSizesMeta as w}from"./TyreSizes/meta.js";import{ProductSizeMeta as L}from"./ProductSize/meta.js";import{ProductColourMeta as O}from"./ProductColour/meta.js";import{ProductPriceMeta as g}from"./ProductPrice/meta.js";import{StockFitmentMeta as z}from"./StockFitment/meta.js";const Ct={AccountBlock:t,AlloyWheelsListing:r,BundleOffer:o,CartBlock:e,CatalogFilterBar:m,CheckoutCTA:i,CollectionCard:a,Collections:l,CompatibleTyres:c,CountrySwitchBlock:p,DeliveryOptions:f,DetailRows:M,EuTyreLabel:u,EuTyreLabelBlock:d,FitmentFinder:n,FitmentTable:C,Gallery:k,GalleryB:P,GalleryItem:T,Header:B,ProductGallery:s,ProductGrid:S,ProductHero:F,ProductRef:h,RelatedProducts:b,SearchBlock:G,SpecTable:A,ThemeSwitchBlock:E,TyreFitment:R,TyreSizes:w,ProductSize:L,ProductColour:O,ProductPrice:g,FitmentPicker:y,StockFitment:z};export{Ct as COMMERCE_METAS};
1
+ import{AccountBlockMeta as t}from"./AccountBlock/meta.js";import{AlloyWheelsListingMeta as r}from"./AlloyWheelsListing/meta.js";import{BundleOfferMeta as o}from"./BundleOffer/meta.js";import{CartBlockMeta as e}from"./CartBlock/meta.js";import{CatalogFilterBarMeta as m}from"./CatalogFilterBar/meta.js";import{CheckoutCTAMeta as i}from"./CheckoutCTA/meta.js";import{CollectionCardMeta as a}from"./CollectionCard/meta.js";import{CollectionsMeta as l}from"./Collections/meta.js";import{CompatibleTyresMeta as c}from"./CompatibleTyres/meta.js";import{CountrySwitchBlockMeta as p}from"./CountrySwitchBlock/meta.js";import{DeliveryOptionsMeta as u}from"./DeliveryOptions/meta.js";import{DetailRowsMeta as f}from"./DetailRows/meta.js";import{EuTyreLabelMeta as M}from"./EuTyreLabel/meta.js";import{EuTyreLabelBlockMeta as d}from"./EuTyreLabelBlock/meta.js";import{FitmentFinderMeta as P}from"./FitmentFinder/meta.js";import{FitmentPickerMeta as y}from"./FitmentPicker/meta.js";import{FitmentTableMeta as n}from"./FitmentTable/meta.js";import{GalleryBMeta as B}from"./GalleryB/meta.js";import{GalleryItemMeta as C}from"./GalleryItem/meta.js";import{GalleryMeta as k}from"./Gallery/meta.js";import{HeaderMeta as s}from"./Header/meta.js";import{ProductGalleryMeta as T}from"./ProductGallery/meta.js";import{ProductGridMeta as F}from"./ProductGrid/meta.js";import{ProductHeroMeta as S}from"./ProductHero/meta.js";import{ProductRefMeta as h}from"./ProductRef/meta.js";import{RelatedProductsMeta as b}from"./RelatedProducts/meta.js";import{SearchBlockMeta as G}from"./SearchBlock/meta.js";import{SpecTableMeta as E}from"./SpecTable/meta.js";import{ThemeSwitchBlockMeta as w}from"./ThemeSwitchBlock/meta.js";import{TyreFitmentMeta as A}from"./TyreFitment/meta.js";import{TyreSizesMeta as R}from"./TyreSizes/meta.js";import{ProductSizeMeta as L}from"./ProductSize/meta.js";import{ProductColourMeta as O}from"./ProductColour/meta.js";import{ProductBuyButtonMeta as g}from"./ProductBuyButton/meta.js";import{ProductPriceMeta as z}from"./ProductPrice/meta.js";import{FilterBlockMeta as D}from"./FilterBlock/meta.js";import{FilterChipsBlockMeta as H}from"./FilterChipsBlock/meta.js";import{StockFitmentMeta as v}from"./StockFitment/meta.js";import{ProductPictureMeta as I}from"./ProductPicture/meta.js";import{ProductSpecsMeta as N}from"./ProductSpecs/meta.js";import{ProductBuyMeta as W}from"./ProductBuy/meta.js";import{ProductEyebrowMeta as x}from"./ProductEyebrow/meta.js";import{ProductNameMeta as _}from"./ProductName/meta.js";const Ot={AccountBlock:t,AlloyWheelsListing:r,BundleOffer:o,CartBlock:e,CatalogFilterBar:m,CheckoutCTA:i,CollectionCard:a,Collections:l,CompatibleTyres:c,CountrySwitchBlock:p,DeliveryOptions:u,DetailRows:f,EuTyreLabel:M,EuTyreLabelBlock:d,FitmentFinder:P,FitmentTable:n,Gallery:k,GalleryB:B,GalleryItem:C,Header:s,ProductGallery:T,ProductGrid:F,ProductHero:S,ProductRef:h,RelatedProducts:b,SearchBlock:G,SpecTable:E,ThemeSwitchBlock:w,TyreFitment:A,TyreSizes:R,ProductSize:L,ProductColour:O,ProductPrice:z,ProductBuyButton:g,FilterBlock:D,FilterChipsBlock:H,FitmentPicker:y,StockFitment:v,ProductPicture:I,ProductSpecs:N,ProductBuy:W,ProductEyebrow:x,ProductName:_};export{Ot as COMMERCE_METAS};
@@ -33,7 +33,15 @@ export declare const COMMERCE_RENDERS: {
33
33
  ProductSize: BlockRender;
34
34
  ProductColour: BlockRender;
35
35
  ProductPrice: BlockRender;
36
+ ProductBuyButton: BlockRender;
37
+ FilterBlock: BlockRender;
38
+ FilterChipsBlock: BlockRender;
36
39
  FitmentPicker: BlockRender;
37
40
  StockFitment: BlockRender;
41
+ ProductPicture: BlockRender;
42
+ ProductSpecs: BlockRender;
43
+ ProductBuy: BlockRender;
44
+ ProductEyebrow: BlockRender;
45
+ ProductName: BlockRender;
38
46
  };
39
47
  export type CommerceBlockType = keyof typeof COMMERCE_RENDERS;
@@ -1 +1 @@
1
- import{AccountBlockRender as r}from"./AccountBlock/render.js";import{AlloyWheelsListingRender as e}from"./AlloyWheelsListing/render.js";import{BundleOfferRender as o}from"./BundleOffer/render.js";import{CartBlockRender as t}from"./CartBlock/render.js";import{CatalogFilterBarRender as m}from"./CatalogFilterBar/render.js";import{CheckoutCTARender as i}from"./CheckoutCTA/render.js";import{CollectionCardRender as l}from"./CollectionCard/render.js";import{CollectionsRender as d}from"./Collections/render.js";import{CompatibleTyresRender as n}from"./CompatibleTyres/render.js";import{CountrySwitchBlockRender as c}from"./CountrySwitchBlock/render.js";import{DeliveryOptionsRender as R}from"./DeliveryOptions/render.js";import{DetailRowsRender as p}from"./DetailRows/render.js";import{EuTyreLabelRender as f}from"./EuTyreLabel/render.js";import{EuTyreLabelBlockRender as a}from"./EuTyreLabelBlock/render.js";import{FitmentFinderRender as u}from"./FitmentFinder/render.js";import{FitmentPickerRender as y}from"./FitmentPicker/render.js";import{FitmentTableRender as C}from"./FitmentTable/render.js";import{GalleryRender as P}from"./Gallery/render.js";import{GalleryBRender as k}from"./GalleryB/render.js";import{GalleryItemRender as B}from"./GalleryItem/render.js";import{HeaderRender as T}from"./Header/render.js";import{ProductGalleryRender as s}from"./ProductGallery/render.js";import{ProductGridRender as S}from"./ProductGrid/render.js";import{ProductHeroRender as F}from"./ProductHero/render.js";import{ProductRefRender as h}from"./ProductRef/render.js";import{RelatedProductsRender as b}from"./RelatedProducts/render.js";import{SearchBlockRender as G}from"./SearchBlock/render.js";import{SpecTableRender as E}from"./SpecTable/render.js";import{ThemeSwitchBlockRender as w}from"./ThemeSwitchBlock/render.js";import{TyreFitmentRender as A}from"./TyreFitment/render.js";import{TyreSizesRender as L}from"./TyreSizes/render.js";import{ProductSizeRender as D}from"./ProductSize/render.js";import{ProductColourRender as O}from"./ProductColour/render.js";import{ProductPriceRender as g}from"./ProductPrice/render.js";import{StockFitmentRender as z}from"./StockFitment/render.js";const Cr={AccountBlock:r,AlloyWheelsListing:e,BundleOffer:o,CartBlock:t,CatalogFilterBar:m,CheckoutCTA:i,CollectionCard:l,Collections:d,CompatibleTyres:n,CountrySwitchBlock:c,DeliveryOptions:R,DetailRows:p,EuTyreLabel:f,EuTyreLabelBlock:a,FitmentFinder:u,FitmentTable:C,Gallery:P,GalleryB:k,GalleryItem:B,Header:T,ProductGallery:s,ProductGrid:S,ProductHero:F,ProductRef:h,RelatedProducts:b,SearchBlock:G,SpecTable:E,ThemeSwitchBlock:w,TyreFitment:A,TyreSizes:L,ProductSize:D,ProductColour:O,ProductPrice:g,FitmentPicker:y,StockFitment:z};export{Cr as COMMERCE_RENDERS};
1
+ import{AccountBlockRender as r}from"./AccountBlock/render.js";import{AlloyWheelsListingRender as e}from"./AlloyWheelsListing/render.js";import{BundleOfferRender as o}from"./BundleOffer/render.js";import{CartBlockRender as t}from"./CartBlock/render.js";import{CatalogFilterBarRender as m}from"./CatalogFilterBar/render.js";import{CheckoutCTARender as i}from"./CheckoutCTA/render.js";import{CollectionCardRender as d}from"./CollectionCard/render.js";import{CollectionsRender as l}from"./Collections/render.js";import{CompatibleTyresRender as c}from"./CompatibleTyres/render.js";import{CountrySwitchBlockRender as n}from"./CountrySwitchBlock/render.js";import{DeliveryOptionsRender as p}from"./DeliveryOptions/render.js";import{DetailRowsRender as R}from"./DetailRows/render.js";import{EuTyreLabelRender as u}from"./EuTyreLabel/render.js";import{EuTyreLabelBlockRender as f}from"./EuTyreLabelBlock/render.js";import{FitmentFinderRender as a}from"./FitmentFinder/render.js";import{FitmentPickerRender as P}from"./FitmentPicker/render.js";import{FitmentTableRender as y}from"./FitmentTable/render.js";import{GalleryRender as B}from"./Gallery/render.js";import{GalleryBRender as C}from"./GalleryB/render.js";import{GalleryItemRender as k}from"./GalleryItem/render.js";import{HeaderRender as s}from"./Header/render.js";import{ProductGalleryRender as F}from"./ProductGallery/render.js";import{ProductGridRender as T}from"./ProductGrid/render.js";import{ProductHeroRender as S}from"./ProductHero/render.js";import{ProductRefRender as h}from"./ProductRef/render.js";import{RelatedProductsRender as b}from"./RelatedProducts/render.js";import{SearchBlockRender as E}from"./SearchBlock/render.js";import{SpecTableRender as G}from"./SpecTable/render.js";import{ThemeSwitchBlockRender as w}from"./ThemeSwitchBlock/render.js";import{TyreFitmentRender as A}from"./TyreFitment/render.js";import{TyreSizesRender as L}from"./TyreSizes/render.js";import{ProductSizeRender as D}from"./ProductSize/render.js";import{ProductColourRender as O}from"./ProductColour/render.js";import{ProductBuyButtonRender as g}from"./ProductBuyButton/render.js";import{ProductPriceRender as z}from"./ProductPrice/render.js";import{FilterBlockRender as H}from"./FilterBlock/render.js";import{FilterChipsBlockRender as N}from"./FilterChipsBlock/render.js";import{StockFitmentRender as v}from"./StockFitment/render.js";import{ProductPictureRender as I}from"./ProductPicture/render.js";import{ProductSpecsRender as M}from"./ProductSpecs/render.js";import{ProductBuyRender as W}from"./ProductBuy/render.js";import{ProductEyebrowRender as x}from"./ProductEyebrow/render.js";import{ProductNameRender as _}from"./ProductName/render.js";const Or={AccountBlock:r,AlloyWheelsListing:e,BundleOffer:o,CartBlock:t,CatalogFilterBar:m,CheckoutCTA:i,CollectionCard:d,Collections:l,CompatibleTyres:c,CountrySwitchBlock:n,DeliveryOptions:p,DetailRows:R,EuTyreLabel:u,EuTyreLabelBlock:f,FitmentFinder:a,FitmentTable:y,Gallery:B,GalleryB:C,GalleryItem:k,Header:s,ProductGallery:F,ProductGrid:T,ProductHero:S,ProductRef:h,RelatedProducts:b,SearchBlock:E,SpecTable:G,ThemeSwitchBlock:w,TyreFitment:A,TyreSizes:L,ProductSize:D,ProductColour:O,ProductPrice:z,ProductBuyButton:g,FilterBlock:H,FilterChipsBlock:N,FitmentPicker:P,StockFitment:v,ProductPicture:I,ProductSpecs:M,ProductBuy:W,ProductEyebrow:x,ProductName:_};export{Or as COMMERCE_RENDERS};
@@ -805,22 +805,6 @@
805
805
  "label": "Body",
806
806
  "placeholder": "Add a sentence or two of supporting copy."
807
807
  }
808
- },
809
- "footnote": {
810
- "type": "custom",
811
- "__text": {
812
- "control": "textarea",
813
- "label": "Footnote",
814
- "placeholder": "A note about how these are matched."
815
- }
816
- },
817
- "footnoteLinkText": {
818
- "type": "custom",
819
- "__text": {
820
- "control": "text",
821
- "label": "Footnote button",
822
- "placeholder": "Enquire"
823
- }
824
808
  }
825
809
  },
826
810
  "SpecTable": {
@@ -1,2 +1,3 @@
1
1
  import { type CardTemplateSpec } from "efficient-web-builder/format/lib/content/card-template";
2
+ export declare const drawsKits: (props: Record<string, unknown>) => boolean;
2
3
  export declare const STOREFRONT_CARD_TEMPLATES: readonly CardTemplateSpec[];