efficient-storefront-blocks 0.79.0 → 0.81.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 (185) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/chunks/{EditorPreviewCheckout-6S2Q3GXI.js → EditorPreviewCheckout-OIN6G67Y.js} +4 -4
  3. package/dist/chunks/{SiteEditorProvider-B6JGOUMX.js → SiteEditorProvider-PXXYEDUI.js} +1 -1
  4. package/dist/chunks/{chunk-ZA227AIS.js → chunk-EEBM2KUO.js} +1 -1
  5. package/dist/chunks/{chunk-WYNB6IMA.js → chunk-K3VUREAB.js} +1 -1
  6. package/dist/chunks/chunk-SXRBNRRO.js +320 -0
  7. package/dist/chunks/{fitment-data-KCPZ77HO.js → fitment-data-WHDQR3A2.js} +1 -1
  8. package/dist/contract.js +1 -1
  9. package/dist/editor/components/PreviewProductPicker.js +1 -1
  10. package/dist/editor/lib/document/blocks/commerce/DetailRows/fields.js +1 -1
  11. package/dist/editor/lib/document/blocks/commerce/GalleryB/fields.js +1 -1
  12. package/dist/editor/lib/document/blocks/commerce/ProductColour/fields.d.ts +2 -0
  13. package/dist/editor/lib/document/blocks/commerce/ProductColour/fields.js +1 -0
  14. package/dist/editor/lib/document/blocks/commerce/ProductGrid/fields.js +1 -1
  15. package/dist/editor/lib/document/blocks/commerce/ProductHero/fields.js +1 -1
  16. package/dist/editor/lib/document/blocks/commerce/ProductPrice/fields.d.ts +2 -0
  17. package/dist/editor/lib/document/blocks/commerce/ProductPrice/fields.js +1 -0
  18. package/dist/editor/lib/document/blocks/commerce/ProductSize/fields.d.ts +2 -0
  19. package/dist/editor/lib/document/blocks/commerce/ProductSize/fields.js +1 -0
  20. package/dist/editor/lib/document/blocks/commerce/RelatedProducts/fields.js +1 -1
  21. package/dist/editor/lib/document/blocks/commerce/SpecTable/fields.js +1 -1
  22. package/dist/editor/lib/document/blocks/commerce/index.d.ts +1 -1
  23. package/dist/editor/lib/document/blocks/commerce/index.js +1 -1
  24. package/dist/editor/lib/document/blocks/commerce/page-rules.d.ts +2 -0
  25. package/dist/editor/lib/document/blocks/commerce/page-rules.js +1 -1
  26. package/dist/editor/lib/document/config.d.ts +2 -0
  27. package/dist/editor/lib/document/config.js +1 -1
  28. package/dist/editor/lib/document/section-text-regions.d.ts +1 -0
  29. package/dist/editor/lib/document/section-text-regions.js +1 -0
  30. package/dist/editor/lib/storefront-editor-words.d.ts +0 -1
  31. package/dist/editor/lib/storefront-editor-words.js +1 -1
  32. package/dist/index.js +28 -28
  33. package/dist/render/app/globals.css +23 -16
  34. package/dist/render/built-with.json +1 -1
  35. package/dist/render/components/AppointmentBooking.js +1 -1
  36. package/dist/render/components/CheckoutCTA.js +1 -1
  37. package/dist/render/components/CollectionCard.js +1 -1
  38. package/dist/render/components/Collections.js +1 -1
  39. package/dist/render/components/CompatibleTyres.js +1 -1
  40. package/dist/render/components/ConsentBanner.js +1 -1
  41. package/dist/render/components/ContactCards.js +1 -1
  42. package/dist/render/components/ContactRouting.js +1 -1
  43. package/dist/render/components/DeliveryOptions.js +1 -1
  44. package/dist/render/components/DetailRows.js +1 -1
  45. package/dist/render/components/EuTyreLabelCard.js +1 -1
  46. package/dist/render/components/EuTyreLabels.d.ts +1 -1
  47. package/dist/render/components/EuTyreLabels.js +1 -1
  48. package/dist/render/components/Events.js +1 -1
  49. package/dist/render/components/FitmentTable.js +1 -1
  50. package/dist/render/components/FooterDivider.js +1 -1
  51. package/dist/render/components/FooterSection.js +1 -1
  52. package/dist/render/components/FooterSocial.js +1 -1
  53. package/dist/render/components/FormBlock.js +1 -1
  54. package/dist/render/components/GalleryCard.js +1 -1
  55. package/dist/render/components/GalleryGrid.js +1 -1
  56. package/dist/render/components/GalleryItem.js +1 -1
  57. package/dist/render/components/GalleryShowcase.js +1 -1
  58. package/dist/render/components/LinkedProductHero.d.ts +2 -1
  59. package/dist/render/components/MessagingCards.js +1 -1
  60. package/dist/render/components/ProductCard.js +1 -1
  61. package/dist/render/components/ProductCardChrome.d.ts +4 -3
  62. package/dist/render/components/ProductCardChrome.js +1 -1
  63. package/dist/render/components/ProductGallery.js +1 -1
  64. package/dist/render/components/ProductGridSection.d.ts +7 -6
  65. package/dist/render/components/ProductGridSection.js +1 -1
  66. package/dist/render/components/ProductHeroPanel.d.ts +7 -2
  67. package/dist/render/components/ProductHeroPanel.js +1 -1
  68. package/dist/render/components/ProductLightbox.js +1 -1
  69. package/dist/render/components/RateTable.js +1 -1
  70. package/dist/render/components/ReviewForm.js +1 -1
  71. package/dist/render/components/Reviews.js +1 -1
  72. package/dist/render/components/SectionBand.d.ts +5 -2
  73. package/dist/render/components/SectionBand.js +1 -1
  74. package/dist/render/components/SectionBandChoice.d.ts +5 -0
  75. package/dist/render/components/SectionBandChoice.js +1 -0
  76. package/dist/render/components/SpecTable.d.ts +2 -1
  77. package/dist/render/components/SpecTable.js +1 -1
  78. package/dist/render/components/SubmitBuild.js +1 -1
  79. package/dist/render/components/Subscribe.js +1 -1
  80. package/dist/render/components/ThemedSelect.d.ts +4 -2
  81. package/dist/render/components/ThemedSelect.js +1 -1
  82. package/dist/render/components/TyreVehicleFitment.d.ts +2 -2
  83. package/dist/render/components/TyreVehicleFitment.js +1 -1
  84. package/dist/render/components/WheelCardFrame.d.ts +3 -15
  85. package/dist/render/components/WheelCardFrame.js +1 -1
  86. package/dist/render/components/WheelPlaceholder.d.ts +3 -1
  87. package/dist/render/components/WheelPlaceholder.js +1 -1
  88. package/dist/render/components/booking/BookingRegions.js +1 -1
  89. package/dist/render/components/buy-row.d.ts +1 -1
  90. package/dist/render/components/buy-row.js +1 -1
  91. package/dist/render/components/card-pieces/CardEyebrow.d.ts +6 -0
  92. package/dist/render/components/card-pieces/CardEyebrow.js +1 -0
  93. package/dist/render/components/card-pieces/CardName.d.ts +4 -0
  94. package/dist/render/components/card-pieces/CardName.js +1 -0
  95. package/dist/render/components/card-pieces/CardPicture.d.ts +18 -0
  96. package/dist/render/components/card-pieces/CardPicture.js +1 -0
  97. package/dist/render/components/card-pieces/CardSpecs.d.ts +20 -0
  98. package/dist/render/components/card-pieces/CardSpecs.js +1 -0
  99. package/dist/render/components/card-pieces/HostPart.d.ts +6 -0
  100. package/dist/render/components/card-pieces/HostPart.js +1 -0
  101. package/dist/render/components/card-pieces/ProductCardState.d.ts +1 -0
  102. package/dist/render/components/card-pieces/ProductCardState.js +1 -1
  103. package/dist/render/components/card-spin.d.ts +7 -0
  104. package/dist/render/components/card-spin.js +1 -0
  105. package/dist/render/components/catalog/CatalogFilterBar.js +1 -1
  106. package/dist/render/components/catalog/CatalogVehiclePicker.js +1 -1
  107. package/dist/render/components/catalog/PriceRange.d.ts +6 -0
  108. package/dist/render/components/catalog/PriceRange.js +1 -0
  109. package/dist/render/components/catalog/SortSelect.d.ts +8 -0
  110. package/dist/render/components/catalog/SortSelect.js +1 -0
  111. package/dist/render/components/checkout/CheckoutPageClient.js +1 -1
  112. package/dist/render/components/checkout/checkout-parts.js +1 -1
  113. package/dist/render/components/fitment/FitmentFinder.js +1 -1
  114. package/dist/render/components/fitment/FitmentPickerGrid.js +1 -1
  115. package/dist/render/components/fitment/StockFitmentCard.js +1 -1
  116. package/dist/render/components/pdp-dynamic/DynamicBundleOffer.js +1 -1
  117. package/dist/render/components/pdp-dynamic/DynamicDetailRows.js +1 -1
  118. package/dist/render/components/pdp-dynamic/DynamicGalleryGrid.js +1 -1
  119. package/dist/render/components/pdp-dynamic/DynamicProductHero.d.ts +2 -1
  120. package/dist/render/components/pdp-dynamic/DynamicRelatedProducts.d.ts +3 -2
  121. package/dist/render/components/pdp-dynamic/DynamicRelatedProducts.js +1 -1
  122. package/dist/render/components/pdp-dynamic/DynamicSpecTable.d.ts +1 -0
  123. package/dist/render/components/pdp-dynamic/DynamicSpecTable.js +1 -1
  124. package/dist/render/components/pdp-dynamic/DynamicTyreSizes.js +1 -1
  125. package/dist/render/components/pdp-dynamic/KindGate.js +1 -1
  126. package/dist/render/components/pdp-dynamic/RecordPhotoGallery.js +1 -1
  127. package/dist/render/components/wheels-plp/AlloyWheelsListing.d.ts +3 -2
  128. package/dist/render/components/wheels-plp/AlloyWheelsListing.js +1 -1
  129. package/dist/render/components/wheels-plp/PlpCard.d.ts +4 -3
  130. package/dist/render/components/wheels-plp/PlpCard.js +1 -1
  131. package/dist/render/components/wheels-plp/PlpToolbar.d.ts +16 -0
  132. package/dist/render/components/wheels-plp/PlpToolbar.js +1 -0
  133. package/dist/render/lib/catalog/relationships.js +1 -1
  134. package/dist/render/lib/document/blocks/commerce/AlloyWheelsListing/render.js +1 -1
  135. package/dist/render/lib/document/blocks/commerce/DetailRows/render.js +1 -1
  136. package/dist/render/lib/document/blocks/commerce/ProductColour/meta.d.ts +2 -0
  137. package/dist/render/lib/document/blocks/commerce/ProductColour/meta.js +1 -0
  138. package/dist/render/lib/document/blocks/commerce/ProductColour/render.d.ts +2 -0
  139. package/dist/render/lib/document/blocks/commerce/ProductColour/render.js +1 -0
  140. package/dist/render/lib/document/blocks/commerce/ProductGrid/meta.js +1 -1
  141. package/dist/render/lib/document/blocks/commerce/ProductGrid/render.js +1 -1
  142. package/dist/render/lib/document/blocks/commerce/ProductHero/render.js +1 -1
  143. package/dist/render/lib/document/blocks/commerce/ProductPrice/meta.d.ts +2 -0
  144. package/dist/render/lib/document/blocks/commerce/ProductPrice/meta.js +1 -0
  145. package/dist/render/lib/document/blocks/commerce/ProductPrice/render.d.ts +2 -0
  146. package/dist/render/lib/document/blocks/commerce/ProductPrice/render.js +1 -0
  147. package/dist/render/lib/document/blocks/commerce/ProductSize/meta.d.ts +2 -0
  148. package/dist/render/lib/document/blocks/commerce/ProductSize/meta.js +1 -0
  149. package/dist/render/lib/document/blocks/commerce/ProductSize/render.d.ts +2 -0
  150. package/dist/render/lib/document/blocks/commerce/ProductSize/render.js +1 -0
  151. package/dist/render/lib/document/blocks/commerce/RelatedProducts/render.js +1 -1
  152. package/dist/render/lib/document/blocks/commerce/SpecTable/meta.d.ts +6 -0
  153. package/dist/render/lib/document/blocks/commerce/SpecTable/meta.js +1 -1
  154. package/dist/render/lib/document/blocks/commerce/SpecTable/render.js +1 -1
  155. package/dist/render/lib/document/blocks/commerce/metas.d.ts +3 -0
  156. package/dist/render/lib/document/blocks/commerce/metas.js +1 -1
  157. package/dist/render/lib/document/blocks/commerce/renders.d.ts +3 -0
  158. package/dist/render/lib/document/blocks/commerce/renders.js +1 -1
  159. package/dist/render/lib/document/card-templates.js +1 -1
  160. package/dist/render/lib/document/lazy-draws.js +1 -1
  161. package/dist/render/lib/document/render-config.d.ts +1 -0
  162. package/dist/render/lib/document/render-config.js +1 -1
  163. package/dist/render/lib/document/section-to-box-rows-spec.d.ts +1 -0
  164. package/dist/render/lib/document/section-to-box-rows-spec.js +1 -0
  165. package/dist/render/lib/sections/catalog-text-size.d.ts +7 -0
  166. package/dist/render/lib/sections/catalog-text-size.js +1 -0
  167. package/dist/render/lib/sections/fill-row.js +1 -1
  168. package/dist/render/lib/sections/grid-no-hole.d.ts +1 -1
  169. package/dist/render/lib/sections/grid-no-hole.js +1 -1
  170. package/dist/render/lib/sections/product-hero-text-regions.d.ts +3 -0
  171. package/dist/render/lib/sections/product-hero-text-regions.js +1 -0
  172. package/dist/render/lib/sections/section-band.d.ts +2 -0
  173. package/dist/render/lib/sections/section-band.js +1 -0
  174. package/dist/render/lib/tyres/spec-sheet.d.ts +0 -2
  175. package/dist/render/lib/tyres/spec-sheet.js +1 -1
  176. package/dist/render/lib/wheels/catalog-default-layout.js +1 -1
  177. package/dist/render/lib/wheels/lug-count.d.ts +1 -0
  178. package/dist/render/lib/wheels/lug-count.js +1 -1
  179. package/dist/words.d.ts +14 -2
  180. package/dist/words.js +5 -5
  181. package/package.json +9 -3
  182. package/dist/chunks/chunk-NE47RYTU.js +0 -320
  183. /package/dist/chunks/{chunk-IL5OJ6VZ.js → chunk-5O3W5AUB.js} +0 -0
  184. /package/dist/chunks/{chunk-PBU5KHED.js → chunk-PBQWSV3B.js} +0 -0
  185. /package/dist/chunks/{chunk-NE47RYTU.js.LEGAL.txt → chunk-SXRBNRRO.js.LEGAL.txt} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { type GridBand } from "./fill-row.js";
2
- export declare const SET_CARD_SINGLE_BELOW = 800;
2
+ export declare const SET_CARD_SINGLE_BELOW: 800 | 720;
3
3
  export declare function packsFull(spans: readonly number[], columns: number): boolean;
4
4
  export declare function cardsWithoutHole(spans: readonly number[], columns: number, limit: number | undefined, topUp?: boolean): number;
5
5
  export interface NoHoleBand {
@@ -1 +1 @@
1
- import{gridBands as l,gridColumnsOf as h,gridTracks as d,inBand as x}from"./fill-row.js";const m=800;function p(t,r){const n=[],f=(o,e,i)=>{for(let c=e;c<e+i;c++)if(n[o][c])return!1;return!0};for(const o of t){const e=Math.max(1,Math.min(r,o));for(let i=0;;i++){n[i]??=Array(r).fill(!1);let c=0;for(;c+e<=r&&!f(i,c,e);)c++;if(!(c+e>r)){for(let s=c;s<c+e;s++)n[i][s]=!0;break}}}return n.every(o=>o.every(Boolean))}const a=(t,r)=>t.reduce((n,f)=>n+Math.max(1,Math.min(r,f)),0),u=(t,r)=>p(t,Math.min(r,Math.max(1,a(t,r))));function w(t,r,n,f=!0){const o=Math.min(t.length,n&&n>0?n:t.length);if(o===0||u(t.slice(0,o),r))return o;if(f){for(let e=o+1;e<=t.length;e++)if(u(t.slice(0,e),r))return e}for(let e=o-1;e>=1;e--)if(u(t.slice(0,e),r))return e;return o}const M=(t,r)=>r.max!==void 0&&r.max<=m?t.map(()=>1):t;function k(t,r,n,f=!0){return l(h(t)).map(o=>{const e=M(r,o),i=w(e,o.columns,n,f),c=a(e.slice(0,i),o.columns);return{band:o,cards:i,tracks:Math.min(o.columns,Math.max(1,c))}})}function $(t,r){return t.slice(0,r&&r>0?r:t.length).some(n=>n>1)}function B(t,r,n){const f=[`.${t}{grid-auto-flow:row dense}`];for(const{band:o,cards:e,tracks:i}of r){const c=[];e<n&&c.push(`.${t} > *:nth-child(n+${e+1}){display:none}`),i<o.columns&&c.push(`.${t}.${t}{${d(i)}}`),f.push(x(o,c))}return f.join("")}export{m as SET_CARD_SINGLE_BELOW,w as cardsWithoutHole,k as noHoleBands,B as noHoleCss,p as packsFull,$ as showsASetCard};
1
+ import{gridBands as l,gridColumnsOf as h,gridTracks as d,inBand as m}from"./fill-row.js";import{VIEW_LINE_PX as x}from"efficient-web-builder/format/lib/content/view-lines";const w=x["view-wide"];function p(t,r){const n=[],f=(o,e,c)=>{for(let i=e;i<e+c;i++)if(n[o][i])return!1;return!0};for(const o of t){const e=Math.max(1,Math.min(r,o));for(let c=0;;c++){n[c]??=Array(r).fill(!1);let i=0;for(;i+e<=r&&!f(c,i,e);)i++;if(!(i+e>r)){for(let s=i;s<i+e;s++)n[c][s]=!0;break}}}return n.every(o=>o.every(Boolean))}const a=(t,r)=>t.reduce((n,f)=>n+Math.max(1,Math.min(r,f)),0),u=(t,r)=>p(t,Math.min(r,Math.max(1,a(t,r))));function M(t,r,n,f=!0){const o=Math.min(t.length,n&&n>0?n:t.length);if(o===0||u(t.slice(0,o),r))return o;if(f){for(let e=o+1;e<=t.length;e++)if(u(t.slice(0,e),r))return e}for(let e=o-1;e>=1;e--)if(u(t.slice(0,e),r))return e;return o}const g=(t,r)=>r.max!==void 0&&r.max<=w?t.map(()=>1):t;function B(t,r,n,f=!0){return l(h(t)).map(o=>{const e=g(r,o),c=M(e,o.columns,n,f),i=a(e.slice(0,c),o.columns);return{band:o,cards:c,tracks:Math.min(o.columns,Math.max(1,i))}})}function E(t,r){return t.slice(0,r&&r>0?r:t.length).some(n=>n>1)}function I(t,r,n){const f=[`.${t}{grid-auto-flow:row dense}`];for(const{band:o,cards:e,tracks:c}of r){const i=[];e<n&&i.push(`.${t} > *:nth-child(n+${e+1}){display:none}`),c<o.columns&&i.push(`.${t}.${t}{${d(c)}}`),f.push(m(o,i))}return f.join("")}export{w as SET_CARD_SINGLE_BELOW,M as cardsWithoutHole,B as noHoleBands,I as noHoleCss,p as packsFull,E as showsASetCard};
@@ -0,0 +1,3 @@
1
+ import type { TextRegion } from "efficient-web-builder/format/lib/sections/text-regions";
2
+ export type ProductHeroRegionKey = "price";
3
+ export declare const PRODUCT_HERO_TEXT_REGIONS: Readonly<Record<ProductHeroRegionKey, TextRegion>>;
@@ -0,0 +1 @@
1
+ const e={price:{label:"Price",follows:"Heading 2",builtIn:"36px",writable:!0,sized:!0}};export{e as PRODUCT_HERO_TEXT_REGIONS};
@@ -0,0 +1,2 @@
1
+ export declare const BAND_CAP = "mx-auto max-w-[var(--sf-site-width,1600px)]";
2
+ export declare function bandClassesInBox(classes: string): string;
@@ -0,0 +1 @@
1
+ const i="mx-auto max-w-[var(--sf-site-width,1600px)]",e=[/^border(-[tblrxy])?$/,/^border-line$/,/^bg-/,/^mx-auto$/,/^max-w-\[var\(--sf-site-width/,/--sf-site-gutter/,/^p[xytblr]?-(\d+(\.\d+)?|px|\[\d+(\.\d+)?px\])$/];function x(t){const s=t.lastIndexOf(":");return s<0?t:t.slice(s+1)}function a(t){return t.split(/\s+/).filter(s=>s&&!e.some(r=>r.test(x(s)))).join(" ")}export{i as BAND_CAP,a as bandClassesInBox};
@@ -1,10 +1,8 @@
1
1
  import type { TyreVariant } from "../api/index.js";
2
- import { type EuTyreLabel } from "./eu-tyre-label.js";
3
2
  import type { SpecSheetRow } from "../wheels/spec-sheet.js";
4
3
  export interface TyreSpecSheetSource {
5
4
  brand: string;
6
5
  variant: TyreVariant | null | undefined;
7
- euLabel?: EuTyreLabel | null;
8
6
  }
9
7
  export interface TyreSpecSheet {
10
8
  rows: SpecSheetRow[];
@@ -1 +1 @@
1
- import{noiseLabel as d}from"./eu-tyre-label.js";import{parseTyreSize as c}from"./tyre-size.js";const e={size:"size",sectionWidth:"section_width",aspectRatio:"aspect_ratio",rimDiameter:"rim_diameter",construction:"construction",loadIndex:"load_index",speedRating:"speed_rating",maxLoad:"max_load_lbs",maxPressure:"max_psi",treadDepth:"tread_depth",overallDiameter:"overall_diameter",treadPattern:"tread_pattern",tireType:"tire_type",brand:"brand"},u=Object.values(e).filter(o=>o!==e.size);function p(o){const{brand:s,variant:i,euLabel:t}=o;if(!i)return[];const a=c(i.size),r=i.specs,n=r;return[[e.size,"Size",i.size],[e.sectionWidth,"Section Width",a?`${a.width} mm`:""],[e.aspectRatio,"Aspect Ratio",a?`${a.profile}`:""],[e.rimDiameter,"Rim Diameter",a?`${a.rim}"`:""],[e.construction,"Construction",r.construction],[e.loadIndex,"Load Index",r.loadIndex],[e.speedRating,"Speed Rating",r.speedRating],[e.maxLoad,"Max Load",n.maxLoad??""],[e.maxPressure,"Max Pressure",n.maxPressure??""],[e.treadDepth,"Tread Depth",n.treadDepth??""],[e.overallDiameter,"Overall Diameter",n.overallDiameter??""],[e.treadPattern,"Tread Pattern",r.treadPattern],[e.tireType,"Type",r.tireType],[e.brand,"Manufacturer",s],["","Fuel Efficiency",t?.fuelClass??""],["","Wet Grip",t?.wetGripClass??""],["","Noise",t&&d(t)||""],["","Snow Grip",t?.severeSnow?"Yes":""],["","Ice Grip",t?.iceGrip?"Yes":""],["","Reinforced",t?.loadIndicator??""]]}function x(o){const s=[];for(const[i,t,a]of p(o)){const r=(a??"").trim();r&&s.push(i?{label:t,value:r,fieldKey:i}:{label:t,value:r})}return{rows:s}}export{u as TYRE_SPEC_FIELD_KEYS,e as TYRE_SPEC_KEYS,x as buildTyreSpecSheet};
1
+ import{parseTyreSize as s}from"./tyre-size.js";const e={size:"size",sectionWidth:"section_width",aspectRatio:"aspect_ratio",rimDiameter:"rim_diameter",construction:"construction",loadIndex:"load_index",speedRating:"speed_rating",maxLoad:"max_load_lbs",maxPressure:"max_psi",treadDepth:"tread_depth",overallDiameter:"overall_diameter",treadPattern:"tread_pattern",tireType:"tire_type",brand:"brand"},p=Object.values(e).filter(o=>o!==e.size);function d(o){const{brand:n,variant:i}=o;if(!i)return[];const t=s(i.size),r=i.specs,a=r;return[[e.size,"Size",i.size],[e.sectionWidth,"Section Width",t?`${t.width} mm`:""],[e.aspectRatio,"Aspect Ratio",t?`${t.profile}`:""],[e.rimDiameter,"Rim Diameter",t?`${t.rim}"`:""],[e.construction,"Construction",r.construction],[e.loadIndex,"Load Index",r.loadIndex],[e.speedRating,"Speed Rating",r.speedRating],[e.maxLoad,"Max Load",a.maxLoad??""],[e.maxPressure,"Max Pressure",a.maxPressure??""],[e.treadDepth,"Tread Depth",a.treadDepth??""],[e.overallDiameter,"Overall Diameter",a.overallDiameter??""],[e.treadPattern,"Tread Pattern",r.treadPattern],[e.tireType,"Type",r.tireType],[e.brand,"Manufacturer",n]]}function m(o){const n=[];for(const[i,t,r]of d(o)){const a=(r??"").trim();a&&n.push({label:t,value:a,fieldKey:i})}return{rows:n}}export{p as TYRE_SPEC_FIELD_KEYS,e as TYRE_SPEC_KEYS,m as buildTyreSpecSheet};
@@ -1 +1 @@
1
- import{slugify as l}from"efficient-shell/format";import{filterBarCategoryOf as u}from"./grid-source.js";import{itemCollections as f}from"../catalog/plp-item.js";import{BUILT_IN_LISTING_PATH as a,withListingFilter as m}from"../links/link-rules.js";import{PLP_PARAM as d}from"./plp-filters.js";import{FOOTER_TYPE as s,HEADER_TYPE as g}from"efficient-easel/screen/lib/document/content-tree";import{CARD_IMAGE_BG_OFF as E}from"efficient-web-builder/format/lib/content/card-image-background";import{DEFAULT_TITLE_SIZE as _}from"../sections/product-grid-title.js";const h="wheels",O={content:[],root:{},zones:{}};function C(){return{type:"CatalogFilterBar",props:{id:"CatalogFilterBar-wheels-seed",showProcess:!0,showLugs:!0,showPrice:!0,showCount:!0,showSort:!0}}}function P(o,t){const r=l(o);return{type:"ProductGrid",props:{id:`ProductGrid-wheels-${r}`,dynamic:!1,num:t,title:o,titleSize:_,padTop:100,description:"",linkText:"Explore the collection",linkHref:m(a,{param:d.collections,value:o}),columns:4,showAll:!0,limit:8,imageBackground:E,spinOnHover:!0,source:{slug:r,name:o},products:[]}}}function T(o){const t=new Set;for(const r of o)for(const n of f(r))t.add(n);return[...t]}function w(o=[]){return[C(),...T(o).map((t,r)=>P(t,String(r+1).padStart(2,"0")))]}function A(o){return o.every(t=>t?.type===g||t?.type===s)}function H(o,t,r){if(o!==h)return t;const n=t?.content??[];if(!A(n))return t;const e=w(r),i=n.findIndex(p=>p?.type===s),c=i===-1?[...n,...e]:[...n.slice(0,i),...e,...n.slice(i)];return{...t,content:c}}function D(o){const t=o?.content??[],r=[...new Set(t.filter(e=>e?.type==="ProductGrid").map(e=>u(e.props.source)).filter(e=>e!==null))],n=t.map(e=>e?.type==="CatalogFilterBar"?{...e,props:{...e.props,processOptions:r}}:e);return{...o,content:n}}export{O as EMPTY_CATALOG_DATA,h as WHEELS_PAGE_SLUG,w as buildCatalogSections,H as ensureWheelsCatalogSections,D as scopeCatalogSections};
1
+ import{slugify as p}from"efficient-shell/format";import{filterBarCategoryOf as u}from"./grid-source.js";import{itemCollections as f}from"../catalog/plp-item.js";import{BUILT_IN_LISTING_PATH as a,withListingFilter as m}from"../links/link-rules.js";import{PLP_PARAM as d}from"./plp-filters.js";import{FOOTER_TYPE as s,HEADER_TYPE as g}from"efficient-easel/screen/lib/document/content-tree";import{CARD_IMAGE_BG_OFF as E}from"efficient-web-builder/format/lib/content/card-image-background";import{DEFAULT_TITLE_SIZE as _}from"../sections/product-grid-title.js";const h="wheels",O={content:[],root:{},zones:{}};function C(){return{type:"CatalogFilterBar",props:{id:"CatalogFilterBar-wheels-seed",showProcess:!0,showLugs:!0,showPrice:!0,showCount:!0,showSort:!0}}}function P(o,t){const r=p(o);return{type:"ProductGrid",props:{id:`ProductGrid-wheels-${r}`,dynamic:!1,num:t,title:o,titleSize:_,padTop:100,description:"",linkText:"Explore the collection",linkHref:m(a,{param:d.collections,value:o}),columns:4,showAll:!0,limit:8,imageBackground:E,source:{slug:r,name:o},products:[]}}}function T(o){const t=new Set;for(const r of o)for(const n of f(r))t.add(n);return[...t]}function w(o=[]){return[C(),...T(o).map((t,r)=>P(t,String(r+1).padStart(2,"0")))]}function A(o){return o.every(t=>t?.type===g||t?.type===s)}function D(o,t,r){if(o!==h)return t;const n=t?.content??[];if(!A(n))return t;const e=w(r),i=n.findIndex(l=>l?.type===s),c=i===-1?[...n,...e]:[...n.slice(0,i),...e,...n.slice(i)];return{...t,content:c}}function H(o){const t=o?.content??[],r=[...new Set(t.filter(e=>e?.type==="ProductGrid").map(e=>u(e.props.source)).filter(e=>e!==null))],n=t.map(e=>e?.type==="CatalogFilterBar"?{...e,props:{...e.props,processOptions:r}}:e);return{...o,content:n}}export{O as EMPTY_CATALOG_DATA,h as WHEELS_PAGE_SLUG,w as buildCatalogSections,D as ensureWheelsCatalogSections,H as scopeCatalogSections};
@@ -5,6 +5,7 @@ interface HasLugs {
5
5
  }
6
6
  export declare function lugDigits(lugs: number | null | undefined): string;
7
7
  export declare function lugLabel(lugs: number | null | undefined): string;
8
+ export declare function lugFilterLabel(n: number): string;
8
9
  export declare function itemLugs(item: HasLugs): number | null;
9
10
  export declare function lugCountsOf(items: readonly HasLugs[]): number[];
10
11
  export {};
@@ -1 +1 @@
1
- function e(t){return typeof t=="number"?String(t):""}function s(t){const n=e(t);return n&&`${n} LUG`}function r(t){const n=t.spec?.lugs;return typeof n=="number"?n:null}function i(t){const n=new Set;for(const u of t){const o=r(u);o!==null&&n.add(o)}return[...n].sort((u,o)=>u-o)}export{r as itemLugs,i as lugCountsOf,e as lugDigits,s as lugLabel};
1
+ function o(t){return typeof t=="number"?String(t):""}function i(t){const n=o(t);return n&&`${n} LUG`}function s(t){return`${t}-Lug`}function r(t){const n=t.spec?.lugs;return typeof n=="number"?n:null}function l(t){const n=new Set;for(const e of t){const u=r(e);u!==null&&n.add(u)}return[...n].sort((e,u)=>e-u)}export{r as itemLugs,l as lugCountsOf,o as lugDigits,s as lugFilterLabel,i as lugLabel};
package/dist/words.d.ts CHANGED
@@ -141,6 +141,7 @@ export type WebBuilderPhrase =
141
141
  | "An editorial text panel with a stat strip and founders' note."
142
142
  | "An empty section. Add whatever you want inside."
143
143
  | "Anchor"
144
+ | "Angle"
144
145
  | "Animation"
145
146
  | "Another group already uses this heading — pick a different one."
146
147
  | "Answer"
@@ -269,6 +270,8 @@ export type WebBuilderPhrase =
269
270
  | "Card title two"
270
271
  | "Card type"
271
272
  | "Cards"
273
+ | "Cards 1, 3, 5 draw the other way round"
274
+ | "Cards 2, 4, 6 draw the other way round"
272
275
  | "Cards from"
273
276
  | "Cart"
274
277
  | "Cash"
@@ -420,6 +423,7 @@ export type WebBuilderPhrase =
420
423
  | "Dynamic Pages"
421
424
  | "EU Tyre Label"
422
425
  | "Each block"
426
+ | "Each row"
423
427
  | "Each side"
424
428
  | "Each website created from this template sets its own appearance afterwards."
425
429
  | "Each website created from this template sets its own header afterwards."
@@ -449,6 +453,7 @@ export type WebBuilderPhrase =
449
453
  | "Equal"
450
454
  | "Essay"
451
455
  | "Even"
456
+ | "Even cards"
452
457
  | "Every Publish keeps a copy of the whole website: pages, menus and site styles."
453
458
  | "Every text on the site that follows {style} changes to look like this one. This text’s own changes are cleared, and it keeps following {style}."
454
459
  | "Every {part} in this section follows it. The face and the size change; the letter case is the section’s own and stays as it is."
@@ -643,6 +648,7 @@ export type WebBuilderPhrase =
643
648
  | "Label only"
644
649
  | "Labels"
645
650
  | "Ladder"
651
+ | "Landscape (4:3)"
646
652
  | "Large"
647
653
  | "Large tabs"
648
654
  | "Large text only"
@@ -735,6 +741,7 @@ export type WebBuilderPhrase =
735
741
  | "Milestone Timeline"
736
742
  | "Milestone title."
737
743
  | "Milestones"
744
+ | "Mirror cards"
738
745
  | "Mixed"
739
746
  | "Mockup Card"
740
747
  | "Mockup card"
@@ -785,6 +792,7 @@ export type WebBuilderPhrase =
785
792
  | "Number style"
786
793
  | "Numbers"
787
794
  | "N°01, N°02"
795
+ | "Odd cards"
788
796
  | "Off"
789
797
  | "Office"
790
798
  | "Offices"
@@ -932,9 +940,10 @@ export type WebBuilderPhrase =
932
940
  | "Role"
933
941
  | "Role · Location"
934
942
  | "Role · location"
935
- | "Rotate on hover"
943
+ | "Rotate"
936
944
  | "Rounds the picture. Left alone it stays square."
937
945
  | "Rounds the picture. The card's own corner is in Styles."
946
+ | "Row columns"
938
947
  | "Sans"
939
948
  | "Save"
940
949
  | "Save as Template"
@@ -986,6 +995,7 @@ export type WebBuilderPhrase =
986
995
  | "Shape"
987
996
  | "Share button"
988
997
  | "Shared"
998
+ | "Shared, scroll"
989
999
  | "Shop & galleries"
990
1000
  | "Short description of this figure."
991
1001
  | "Short detail line"
@@ -994,6 +1004,7 @@ export type WebBuilderPhrase =
994
1004
  | "Show arrows"
995
1005
  | "Show cover image"
996
1006
  | "Show hints"
1007
+ | "Show next image"
997
1008
  | "Show on a card"
998
1009
  | "Show on phones"
999
1010
  | "Show slide picker"
@@ -1248,6 +1259,7 @@ export type WebBuilderPhrase =
1248
1259
  | "Ways to pay"
1249
1260
  | "We accept"
1250
1261
  | "WeChat"
1262
+ | "What each card does when a shopper points at it, or taps it on a phone. Rotate turns the wheel picture."
1251
1263
  | "What people *say.*"
1252
1264
  | "What this does when a shopper points at it, or taps it on a phone."
1253
1265
  | "WhatsApp"
@@ -1287,6 +1299,7 @@ export type WebBuilderPhrase =
1287
1299
  | "Your third question goes here?"
1288
1300
  | "Your unpublished changes are kept"
1289
1301
  | "Zigzag"
1302
+ | "Zoom"
1290
1303
  | "accent"
1291
1304
  | "all theme colors"
1292
1305
  | "body text"
@@ -1646,7 +1659,6 @@ export type StorefrontBlocksPhrase =
1646
1659
  | "Keeps the logo readable on any header — flips just its black & white parts to contrast the bar behind it (in both light and dark themes). Any other colors are kept as-is."
1647
1660
  | "Know your size? Pick it below"
1648
1661
  | "L"
1649
- | "Landscape (4:3)"
1650
1662
  | "Last name"
1651
1663
  | "Lead time"
1652
1664
  | "Leave a *review.*"