efficient-storefront-blocks 0.80.0 → 0.82.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.
- package/CHANGELOG.md +23 -0
- package/README.md +1 -1
- package/dist/chunks/{EditorPreviewCheckout-PSONSVRR.js → EditorPreviewCheckout-XM22X3CX.js} +4 -4
- package/dist/chunks/{SiteEditorProvider-PWHW2UA6.js → SiteEditorProvider-5YHSOW4Y.js} +1 -1
- package/dist/chunks/{chunk-MCCDGDRW.js → chunk-47L7KHRW.js} +1 -1
- package/dist/chunks/{chunk-3Q66B5NU.js → chunk-NSBGNY7R.js} +1 -1
- package/dist/chunks/chunk-VIPMT34C.js +320 -0
- package/dist/chunks/{fitment-data-Q2TJ6FBU.js → fitment-data-SZWTO4WT.js} +1 -1
- package/dist/editor/components/CategoryProductFields.d.ts +4 -1
- package/dist/editor/components/CategoryProductFields.js +1 -1
- package/dist/editor/components/EditReviewsLink.d.ts +4 -0
- package/dist/editor/components/EditReviewsLink.js +1 -0
- package/dist/editor/components/GalleryShowcaseSource.js +1 -1
- package/dist/editor/components/PreviewProductPicker.js +1 -1
- package/dist/editor/components/ProductHeroSource.js +1 -1
- package/dist/editor/components/ProductPicker.js +1 -1
- package/dist/editor/components/ReviewsProductSource.d.ts +26 -0
- package/dist/editor/components/ReviewsProductSource.js +1 -0
- package/dist/editor/components/SpecTableSource.js +1 -1
- package/dist/editor/lib/document/blocks/commerce/DetailRows/fields.js +1 -1
- package/dist/editor/lib/document/blocks/commerce/GalleryB/fields.js +1 -1
- package/dist/editor/lib/document/blocks/commerce/ProductGrid/fields.js +1 -1
- package/dist/editor/lib/document/blocks/commerce/ProductHero/fields.js +1 -1
- package/dist/editor/lib/document/blocks/commerce/RelatedProducts/fields.js +1 -1
- package/dist/editor/lib/document/blocks/commerce/SpecTable/fields.js +1 -1
- package/dist/editor/lib/document/blocks/commerce/index.d.ts +1 -1
- package/dist/editor/lib/document/blocks/commerce/page-rules.d.ts +2 -0
- package/dist/editor/lib/document/blocks/commerce/page-rules.js +1 -1
- package/dist/editor/lib/document/blocks/service/ReviewForm/fields.js +1 -1
- package/dist/editor/lib/document/blocks/service/Reviews/fields.js +1 -1
- package/dist/editor/lib/document/config.d.ts +1 -0
- package/dist/editor/lib/document/config.js +1 -1
- package/dist/editor/lib/document/section-text-regions.d.ts +1 -0
- package/dist/editor/lib/document/section-text-regions.js +1 -0
- package/dist/editor/lib/storefront-editor-words.d.ts +4 -1
- package/dist/editor/lib/storefront-editor-words.js +1 -1
- package/dist/index.js +36 -28
- package/dist/render/app/globals.css +69 -20
- package/dist/render/built-with.json +1 -1
- package/dist/render/components/AppointmentBooking.js +1 -1
- package/dist/render/components/ChatContext.js +1 -1
- package/dist/render/components/CheckoutCTA.js +1 -1
- package/dist/render/components/CollectionCard.js +1 -1
- package/dist/render/components/Collections.js +1 -1
- package/dist/render/components/CompatibleTyres.js +1 -1
- package/dist/render/components/ConsentBanner.js +1 -1
- package/dist/render/components/ContactCards.js +1 -1
- package/dist/render/components/ContactRouting.js +1 -1
- package/dist/render/components/DeliveryOptions.js +1 -1
- package/dist/render/components/DetailRows.js +1 -1
- package/dist/render/components/EuTyreLabels.d.ts +1 -1
- package/dist/render/components/EuTyreLabels.js +1 -1
- package/dist/render/components/Events.js +1 -1
- package/dist/render/components/FitmentTable.js +1 -1
- package/dist/render/components/FooterDivider.js +1 -1
- package/dist/render/components/FooterSection.js +1 -1
- package/dist/render/components/FooterSocial.js +1 -1
- package/dist/render/components/FormBlock.js +1 -1
- package/dist/render/components/GalleryCard.js +1 -1
- package/dist/render/components/GalleryGrid.js +1 -1
- package/dist/render/components/GalleryItem.js +1 -1
- package/dist/render/components/GalleryShowcase.js +1 -1
- package/dist/render/components/LinkedProductHero.d.ts +2 -1
- package/dist/render/components/MessagingCards.js +1 -1
- package/dist/render/components/ProductCard.js +1 -1
- package/dist/render/components/ProductCardChrome.d.ts +4 -3
- package/dist/render/components/ProductCardChrome.js +1 -1
- package/dist/render/components/ProductGallery.js +1 -1
- package/dist/render/components/ProductGridSection.d.ts +7 -6
- package/dist/render/components/ProductGridSection.js +1 -1
- package/dist/render/components/ProductHeroPanel.d.ts +7 -2
- package/dist/render/components/ProductHeroPanel.js +1 -1
- package/dist/render/components/ProductLightbox.js +1 -1
- package/dist/render/components/RateTable.js +1 -1
- package/dist/render/components/ReviewForm.js +1 -1
- package/dist/render/components/Reviews.js +1 -1
- package/dist/render/components/SectionBand.d.ts +5 -2
- package/dist/render/components/SectionBand.js +1 -1
- package/dist/render/components/SectionBandChoice.d.ts +5 -0
- package/dist/render/components/SectionBandChoice.js +1 -0
- package/dist/render/components/SpecTable.js +1 -1
- package/dist/render/components/SubmitBuild.js +1 -1
- package/dist/render/components/Subscribe.js +1 -1
- package/dist/render/components/ThemedSelect.d.ts +4 -2
- package/dist/render/components/ThemedSelect.js +1 -1
- package/dist/render/components/TyreVehicleFitment.d.ts +2 -2
- package/dist/render/components/TyreVehicleFitment.js +1 -1
- package/dist/render/components/WheelCardFrame.js +1 -1
- package/dist/render/components/WheelPlaceholder.d.ts +3 -1
- package/dist/render/components/WheelPlaceholder.js +1 -1
- package/dist/render/components/booking/BookingRegions.js +1 -1
- package/dist/render/components/buy-row.d.ts +1 -1
- package/dist/render/components/buy-row.js +1 -1
- package/dist/render/components/card-pieces/CardPicture.d.ts +1 -1
- package/dist/render/components/card-pieces/CardPicture.js +1 -1
- package/dist/render/components/card-spin.d.ts +7 -0
- package/dist/render/components/card-spin.js +1 -0
- package/dist/render/components/catalog/CatalogFilterBar.js +1 -1
- package/dist/render/components/catalog/CatalogVehiclePicker.js +1 -1
- package/dist/render/components/catalog/PriceRange.d.ts +6 -0
- package/dist/render/components/catalog/PriceRange.js +1 -0
- package/dist/render/components/catalog/SortSelect.d.ts +8 -0
- package/dist/render/components/catalog/SortSelect.js +1 -0
- package/dist/render/components/checkout/CheckoutPageClient.js +1 -1
- package/dist/render/components/checkout/checkout-parts.js +1 -1
- package/dist/render/components/fitment/FitmentFinder.js +1 -1
- package/dist/render/components/fitment/FitmentPickerGrid.js +1 -1
- package/dist/render/components/fitment/StockFitmentCard.js +1 -1
- package/dist/render/components/pdp-dynamic/DynamicBundleOffer.js +1 -1
- package/dist/render/components/pdp-dynamic/DynamicDetailRows.js +1 -1
- package/dist/render/components/pdp-dynamic/DynamicGalleryGrid.js +1 -1
- package/dist/render/components/pdp-dynamic/DynamicProductHero.d.ts +2 -1
- package/dist/render/components/pdp-dynamic/DynamicRelatedProducts.d.ts +3 -2
- package/dist/render/components/pdp-dynamic/DynamicRelatedProducts.js +1 -1
- package/dist/render/components/pdp-dynamic/DynamicTyreSizes.js +1 -1
- package/dist/render/components/pdp-dynamic/KindGate.js +1 -1
- package/dist/render/components/pdp-dynamic/RecordPhotoGallery.js +1 -1
- package/dist/render/components/wheels-plp/AlloyWheelsListing.d.ts +3 -2
- package/dist/render/components/wheels-plp/AlloyWheelsListing.js +1 -1
- package/dist/render/components/wheels-plp/PlpCard.d.ts +3 -2
- package/dist/render/components/wheels-plp/PlpCard.js +1 -1
- package/dist/render/components/wheels-plp/PlpToolbar.d.ts +16 -0
- package/dist/render/components/wheels-plp/PlpToolbar.js +1 -0
- package/dist/render/lib/catalog/relationships.js +1 -1
- package/dist/render/lib/document/blocks/commerce/AlloyWheelsListing/render.js +1 -1
- package/dist/render/lib/document/blocks/commerce/DetailRows/render.js +1 -1
- package/dist/render/lib/document/blocks/commerce/ProductGrid/meta.js +1 -1
- package/dist/render/lib/document/blocks/commerce/ProductGrid/render.js +1 -1
- package/dist/render/lib/document/blocks/commerce/ProductHero/render.js +1 -1
- package/dist/render/lib/document/blocks/commerce/RelatedProducts/render.js +1 -1
- package/dist/render/lib/document/blocks/text-part-shapes.json +0 -14
- package/dist/render/lib/sections/catalog-text-size.d.ts +7 -0
- package/dist/render/lib/sections/catalog-text-size.js +1 -0
- package/dist/render/lib/sections/fill-row.js +1 -1
- package/dist/render/lib/sections/grid-no-hole.d.ts +1 -1
- package/dist/render/lib/sections/grid-no-hole.js +1 -1
- package/dist/render/lib/sections/product-hero-text-regions.d.ts +3 -0
- package/dist/render/lib/sections/product-hero-text-regions.js +1 -0
- package/dist/render/lib/sections/reviews.d.ts +7 -0
- package/dist/render/lib/sections/reviews.js +1 -1
- package/dist/render/lib/sections/section-band.d.ts +2 -0
- package/dist/render/lib/sections/section-band.js +1 -0
- package/dist/render/lib/wheels/catalog-default-layout.js +1 -1
- package/dist/render/lib/wheels/lug-count.d.ts +1 -0
- package/dist/render/lib/wheels/lug-count.js +1 -1
- package/dist/words.d.ts +17 -2
- package/dist/words.js +5 -5
- package/package.json +5 -4
- package/dist/chunks/chunk-6MHGEO3D.js +0 -320
- package/dist/editor/lib/document/blocks/service/placeholders.d.ts +0 -1
- package/dist/editor/lib/document/blocks/service/placeholders.js +0 -1
- /package/dist/chunks/{chunk-X5W6GJLI.js → chunk-T2R5CZ2F.js} +0 -0
- /package/dist/chunks/{chunk-6MHGEO3D.js.LEGAL.txt → chunk-VIPMT34C.js.LEGAL.txt} +0 -0
- /package/dist/chunks/{chunk-JUGY3EKR.js → chunk-VVWX2P2N.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as r,jsxs as s,Fragment as se}from"react/jsx-runtime";import{LISTING_CARD_SHOW as I}from"../../lib/sections/card-show-defaults.js";import{useScopeClass as Qe}from"../../lib/use-scope-class.js";import{useCallback as m,useEffect as Ze,useMemo as l,useRef as et,useState as tt}from"react";import{CARD_IMAGE_BG_OFF as ot,resolveCardImageBackground as rt}from"efficient-web-builder/format/lib/content/card-image-background";import{cardImageShapeTokens as nt}from"efficient-web-builder/format/lib/content/card-image-shape";import{cardIndexCss as st,DEFAULT_CARD_INDEX_FORMAT as it,DEFAULT_CARD_OUTLINE as lt}from"efficient-web-builder/format/lib/sections/product-card-style";import{answersForKind as ie}from"../../lib/content/field-usage.js";import{useCurrency as at}from"../CurrencyContext.js";import ct from"../NoCurrencyNote.js";import{usePreviewDevice as pt}from"efficient-easel/screen/components/PreviewDeviceContext";import{renderGold as mt,renderHeadline as dt}from"efficient-web-builder/render/components/goldPhrases";import{useUnifiedProductCatalog as ht}from"../useProductCatalog.js";import{scrollBehavior as ut}from"efficient-web-builder/render/components/useReducedMotion";import{normalizePlpColumns as ft,PLP_GRID_GAP_VAR as gt,plpGridVars as yt}from"../../lib/wheels/plp-grid.js";import{plpCardImageSizes as xt}from"../../lib/sections/card-image-sizes.js";import{CARD_ROWS_GRID_CLASS as St,cardRowsGridStyle as wt}from"../WheelCardFrame.js";import{applyPlpFilters as bt,asPlpSortKey as Ct,buildPlpFacets as Nt,buildPlpTypeOptions as vt,buildTyreSizeBoxes as Pt,EMPTY_PLP_FILTERS as le,hasActivePlpFilters as kt,paginatePlp as _t,pickTyreSize as Tt,plpTyreSizeBoxesShown as At,plpInStockCount as zt,plpOpeningSort as Ft,plpPriceBounds as Ot,plpShownKinds as Bt,plpSortKeysFor as It,PLP_SORT_LABELS as Lt}from"../../lib/wheels/plp-filters.js";import{itemKind as z,itemSlug as L,itemTyreSizes as Vt,plpBrandVaries as Rt,plpProcessVaries as Et,plpItemsOfKinds as Dt,plpKindNoun as V,resolvePlpKinds as Kt}from"../../lib/catalog/plp-item.js";import{plpGateWords as jt,plpVehicleCopy as Gt}from"../../lib/catalog/plp-vehicle-copy.js";import{oemBadgeSize as Mt,oemTyreSizes as $t}from"../../lib/tyres/tyre-vehicle-fitment.js";import Wt from"../TyreSummaryCard.js";import{wheelsFittingVehicle as Ht}from"../../lib/wheels/plp-fitment-match.js";import Ut from"./PlpActiveChips.js";import{DEFAULT_COVER_INDEX as Xt}from"../../lib/wheels/cover-rendering.js";import Yt from"./PlpCard.js";import qt from"./PlpPagination.js";import Jt from"./PlpSidebar.js";import Qt from"./PlpVehicleBar.js";import Zt from"./PlpVehicleGate.js";import{useVehicleCatalog as eo}from"./useVehicleCatalog.js";import{useVehicleFit as to}from"../fitment/useVehicleFit.js";import{usePlpFiltersInUrl as oo}from"./usePlpFiltersInUrl.js";import{say as R}from"efficient-web-builder/format/lib/editor-words";const jo={heading:"Let's find wheels that fit your car.",intro:"Tell us what you drive and we'll show you every set that bolts straight on — bolt pattern, offset and hub bore checked for you."};function ro({level:C,className:N,children:v}){return r(C===2?"h2":"h1",{className:N,children:v})}const no=[];function so({heading:C="",intro:N="",askForCar:v=!0,gateHeading:E="",gateIntro:ae="",perPage:D=24,columns:ce,defaultSort:pe="recommended",hiddenFacets:me=[],fieldUsage:g=no,showPrice:K=!0,showInStock:de=!0,kinds:he,products:ue,wheels:fe,requestQuery:ge,editing:d=!1,coverIndex:ye=Xt,cardImage:xe,spinOnHover:Se=!1,imageBackground:we,showBadge:be=!0,showCardSizes:Ce,showCardBuy:Ne,showCardPage:ve,showCardPrice:Pe,showCardFinishes:ke,outline:_e=lt,indexBadge:j=it,titleLevel:Te}){const{currency:a}=at(),Ae=rt(we,ot),h=Kt(he),G=pt(),M=ft(ce),ze=yt(M,d?G:null),Fe=xt(M,d?G:null),$=Qe("plp"),F=st($,j),Oe=ht(),W=ue??fe??Oe??[],H=l(()=>Dt(W,h),[W,h.join(",")]),o=to({editing:d,enabled:v,autoApply:!0}),[Be,O]=tt(!1),Ie=Ft(pe,h),y=o.applied?.vehicle??null,[t,w]=oo({editing:d,openingSort:Ie,appliedVehicle:y,vehicleRestored:o.restored,requestQuery:ge}),p=Bt(h,t.kind),i=m(e=>w(e),[w]),U=m((e,u)=>{const c=t[e],qe=c.map(String).includes(u)?c.filter(Je=>String(Je)!==u):[...c,e==="diameters"?Number(u):u];i({...t,[e]:qe,page:1})},[t,i]),X=m(e=>i({...t,priceMax:e,page:1}),[t,i]),Y=m(e=>i({...t,inStockOnly:e,page:1}),[t,i]),q=m(e=>i({...le,kind:e,inStockOnly:t.inStockOnly,priceMax:t.priceMax,sort:t.sort}),[t.inStockOnly,t.priceMax,t.sort,i]),Le=m(e=>i({...t,sort:e,page:1}),[t,i]),Ve=m(e=>{i({...t,page:e}),typeof window<"u"&&window.scrollTo({top:0,behavior:ut()})},[t,i]),J=m(()=>i({...le,sort:t.sort}),[t.sort,i]),{clear:k}=o,Q=m(()=>{k(),O(!0),w(e=>({...e,page:1}))},[k]),Re=m(()=>{k(),O(!1),w(e=>({...e,page:1}))},[k]),_=y?[y.make,y.model,y.year,y.modification].join("|"):"",T=et(null);Ze(()=>{if(o.restored){if(T.current===null){T.current=_;return}T.current!==_&&(T.current=_,w(e=>e.page===1?e:{...e,page:1}))}},[o.restored,_,w]);const A=eo({catalog:H,shownKinds:h,vehicle:y,editing:d}),n=l(()=>{if(!o.fit)return A;const e=A.filter(c=>z(c)==="alloy-wheel"),u=new Set(Ht(e,o.fit).map(c=>c.slug));return A.filter(c=>z(c)!=="alloy-wheel"||u.has(L(c)))},[A,o.fit]),b=me.join(","),Ee=l(()=>{const e=new Set(b?b.split(","):[]);return Nt(n,t,a,p,g).filter(u=>!e.has(u.key))},[n,t,a,b,p.join(","),g]),x=l(()=>bt(n,t,a),[n,t,a]),Z=p.length>1,De=l(()=>ie(g,"alloy-wheel"),[g]),Ke=l(()=>ie(g,"tyre"),[g]),ee=l(()=>Rt(x),[x]),je=l(()=>Et(x),[x]),Ge=l(()=>K?Ot(n,a):null,[n,a,K]),Me=l(()=>zt(n,t,a),[n,t,a]),$e=l(()=>vt(n,h,t,a),[n,h.join(","),t,a]),We=m((e,u)=>{const c=Tt(n.flatMap(Vt),t.tyreSizes[0]??"",e,u);i({...t,tyreSizes:c?[c]:[],page:1})},[n,t,i]),He=l(()=>{const e=new Set(b?b.split(","):[]);return!At(n,p)||e.has("tyreSizes")?null:Pt(n,t,a)},[n,t,a,b,p.join(","),g]),f=l(()=>_t(x,t.page,D),[x,t.page,D]),S=V(p),B=Gt(p),te=jt(E,ae,p,h),oe=p.length===1&&p[0]==="tyre",re=o.applied?.stock??null,P=l(()=>$t(re),[re]),Ue=l(()=>n.filter(e=>p.includes(z(e))).length,[n,p.join(",")]),ne=H.length===0,Xe=!ne&&n.length===0,Ye=v&&!d&&!o.applied&&!Be;return h.length===0?null:s("section",{style:nt(xe),children:[v&&r(Qt,{cascade:o.cascade,appliedName:o.appliedName,fit:o.fit,fitSummary:oe&&P.length>0?`Takes ${P.join(" · ")}`:null,resolving:o.resolving,unresolved:oe?!!o.applied&&!o.resolving&&P.length===0:o.unresolved,matchCount:Ue,copy:B,onAmend:Re,onClear:Q}),Ye&&r(Zt,{cascade:o.cascade,heading:te.heading,intro:te.intro,ready:o.restored,copy:B,onSkip:()=>O(!0)}),s("div",{className:"px-5 py-10 md:px-[max(2.5rem,calc((100%_-_var(--sf-content-cap,100%))/2_+_2.5rem))]",children:[(C||N)&&s("header",{className:"mb-6",children:[C&&r(ro,{level:Te,className:"font-display text-[clamp(28px,4vw,40px)] [font-weight:var(--sf-heading-weight,500)] [text-transform:var(--sf-heading-case,uppercase)] leading-[1.05] tracking-[-0.02em]",children:dt(C,!1)}),N&&r("p",{className:"mt-2 max-w-[60ch] text-[15px] text-fg-dim",children:mt(N)})]}),s("div",{className:"flex flex-col gap-8 lg:flex-row lg:items-start",children:[r(Jt,{facets:Ee,filters:t,typeOptions:$e,sizeBoxes:He,sizeMatches:t.tyreSizes.length>0?x.length:null,noun:S,priceBounds:Ge,inStockCount:de?Me:null,onToggle:U,onPickType:q,onPickSize:We,onPriceMax:X,onInStockOnly:Y,onClearAll:J}),s("div",{className:"min-w-0 flex-1",children:[s("div",{className:"mb-4 flex min-h-[34px] flex-wrap items-center justify-between gap-x-4 gap-y-2 border-b border-line pb-3",children:[s("div",{className:"flex min-w-0 flex-1 flex-wrap items-center gap-x-4 gap-y-2",children:[r("p",{className:"font-mono text-[12px] tabular-nums tracking-[0.08em]",children:f.total===0?s("span",{className:"text-fg-dim",children:["No ",S.many]}):s(se,{children:[s("span",{children:[f.from,"–",f.to]}),s("span",{className:"text-fg-dim",children:[" of ",f.total," ",S.many]})]})}),r(Ut,{filters:t,onToggle:U,onPriceMax:X,onInStockOnly:Y,onPickType:q})]}),s("label",{className:"flex items-center gap-2 font-mono text-[11px] uppercase tracking-[0.16em] text-fg-dim",children:["Sort by",r("select",{value:t.sort,onChange:e=>Le(Ct(e.target.value)),className:"cursor-pointer border border-line bg-transparent px-2 py-2 font-mono text-[12px] normal-case tracking-normal text-fg",children:It(h).map(e=>r("option",{value:e,children:Lt[e]},e))})]})]}),ne?r("div",{className:"border border-dashed border-line p-10",children:r("p",{className:"font-mono text-[12px] uppercase tracking-[0.16em] text-fg-dim",children:d?S.many==="wheels"?R("No wheels in this website's catalog yet — curate products to see them here."):S.many==="tyres"?R("No tyres in this website's catalog yet — curate products to see them here."):R("No products in this website's catalog yet — curate products to see them here."):"Our catalog is being updated. Please check back shortly."})}):Xe?s("div",{className:"border border-line p-10",children:[s("h3",{className:"font-display text-[22px] font-medium uppercase tracking-[-0.01em]",children:["No confirmed fit for your ",o.appliedName]}),r("p",{className:"mt-2 max-w-[52ch] text-[14px] text-fg-dim",children:B.nothingFits}),s("button",{type:"button",onClick:Q,className:"mt-4 cursor-pointer bg-btn px-4 py-3 font-mono text-[11px] font-bold uppercase tracking-[0.24em] text-btn-ink hover:bg-fg",children:["Show all ",S.many]})]}):f.total===0?s("div",{className:"border border-line p-10",children:[s("h3",{className:"font-display text-[22px] font-medium uppercase tracking-[-0.01em]",children:["No ",S.many," match those filters"]}),r("p",{className:"mt-2 max-w-[46ch] text-[14px] text-fg-dim",children:"Try widening the price range or clearing a filter."}),kt(t)&&r("button",{type:"button",onClick:J,className:"mt-4 cursor-pointer bg-btn px-4 py-3 font-mono text-[11px] font-bold uppercase tracking-[0.24em] text-btn-ink hover:bg-fg",children:"Clear all filters"})]}):s(se,{children:[F&&r("style",{children:F}),r("div",{className:`${F?`${$} plp-card-grid`:"plp-card-grid"} ${St}`,style:{...ze,...wt(`var(${gt})`)},children:f.items.map(e=>z(e)==="tyre"?r(Wt,{item:e,currency:a,fitSize:P.length>0?Mt(e.sizes,P):null,kindLabel:Z?V(["tyre"]).one:null,showBrand:ee,editing:d,fieldUsage:Ke},`tyre:${L(e)}`):r(Yt,{wheel:e,colours:t.finishes,fit:o.fit,editing:d,kindLabel:Z?V(["alloy-wheel"]).one:null,showBrand:ee,coverIndex:ye,fieldUsage:De,showProcess:je,spinOnHover:Se,imageBackgroundFill:Ae,showBadge:be,outline:_e,indexBadge:j,showCardSizes:Ce??I.showCardSizes,showCardBuy:Ne??I.showCardBuy,showCardPage:ve??I.showCardPage,showCardPrice:Pe??!0,showCardFinishes:ke??!0,imageSizes:Fe},`wheel:${L(e)}`))})]}),r(qt,{page:f.page,pageCount:f.pageCount,onPage:Ve}),r(ct,{editing:d})]})]})]})]})}export{jo as PLP_GATE_DEFAULTS,so as default};
|
|
1
|
+
"use client";import{jsx as r,jsxs as p,Fragment as se}from"react/jsx-runtime";import{LISTING_CARD_SHOW as O}from"../../lib/sections/card-show-defaults.js";import{useScopeClass as Qe}from"../../lib/use-scope-class.js";import{useCallback as d,useEffect as Ze,useMemo as i,useRef as et,useState as tt}from"react";import{CARD_IMAGE_BG_OFF as ot,resolveCardImageBackground as rt}from"efficient-web-builder/format/lib/content/card-image-background";import{cardImageShapeTokens as nt}from"efficient-web-builder/format/lib/content/card-image-shape";import{cardIndexCss as st,DEFAULT_CARD_INDEX_FORMAT as it,DEFAULT_CARD_OUTLINE as lt}from"efficient-web-builder/format/lib/sections/product-card-style";import{answersForKind as ie}from"../../lib/content/field-usage.js";import{useCurrency as at}from"../CurrencyContext.js";import ct from"../NoCurrencyNote.js";import{usePreviewDevice as pt}from"efficient-easel/screen/components/PreviewDeviceContext";import{renderGold as dt,renderHeadline as mt}from"efficient-web-builder/render/components/goldPhrases";import{useUnifiedProductCatalog as ht}from"../useProductCatalog.js";import{scrollBehavior as ut}from"efficient-web-builder/render/components/useReducedMotion";import{normalizePlpColumns as ft,PLP_GRID_GAP_VAR as gt,plpGridVars as yt}from"../../lib/wheels/plp-grid.js";import{plpCardImageSizes as St}from"../../lib/sections/card-image-sizes.js";import{CARD_ROWS_GRID_CLASS as xt,cardRowsGridStyle as wt}from"../WheelCardFrame.js";import{applyPlpFilters as bt,buildPlpFacets as Ct,buildPlpTypeOptions as Pt,buildTyreSizeBoxes as kt,EMPTY_PLP_FILTERS as le,hasActivePlpFilters as vt,paginatePlp as Nt,pickTyreSize as Tt,plpTyreSizeBoxesShown as _t,plpInStockCount as At,plpOpeningSort as zt,plpPriceBounds as Ft,plpShownKinds as Bt,plpSortKeysFor as It,PLP_SORT_LABELS as Ot}from"../../lib/wheels/plp-filters.js";import{itemKind as z,itemSlug as R,itemTyreSizes as Rt,plpBrandVaries as Lt,plpProcessVaries as Vt,plpItemsOfKinds as Et,plpKindNoun as L,resolvePlpKinds as Dt}from"../../lib/catalog/plp-item.js";import{plpGateWords as Gt,plpVehicleCopy as Kt}from"../../lib/catalog/plp-vehicle-copy.js";import{oemBadgeSize as jt,oemTyreSizes as Mt}from"../../lib/tyres/tyre-vehicle-fitment.js";import $t from"../TyreSummaryCard.js";import{wheelsFittingVehicle as Wt}from"../../lib/wheels/plp-fitment-match.js";import Ut from"./PlpActiveChips.js";import{DEFAULT_COVER_INDEX as Ht}from"../../lib/wheels/cover-rendering.js";import Xt from"./PlpCard.js";import Yt from"./PlpPagination.js";import qt from"./PlpSidebar.js";import{PlpResultRange as Jt,PlpToolbar as Qt}from"./PlpToolbar.js";import Zt from"../catalog/SortSelect.js";import eo from"./PlpVehicleBar.js";import to from"./PlpVehicleGate.js";import{useVehicleCatalog as oo}from"./useVehicleCatalog.js";import{useVehicleFit as ro}from"../fitment/useVehicleFit.js";import{usePlpFiltersInUrl as no}from"./usePlpFiltersInUrl.js";import{say as V}from"efficient-web-builder/format/lib/editor-words";const Wo={heading:"Let's find wheels that fit your car.",intro:"Tell us what you drive and we'll show you every set that bolts straight on — bolt pattern, offset and hub bore checked for you."};function so({level:C,className:P,children:k}){return r(C===2?"h2":"h1",{className:P,children:k})}const io=[];function lo({heading:C="",intro:P="",askForCar:k=!0,gateHeading:E="",gateIntro:ae="",perPage:D=24,columns:ce,defaultSort:pe="recommended",hiddenFacets:de=[],fieldUsage:f=io,showPrice:G=!0,showInStock:me=!0,kinds:he,products:ue,wheels:fe,requestQuery:ge,editing:m=!1,coverIndex:ye=Ht,cardImage:Se,hover:xe,imageBackground:we,showBadge:be=!0,showCardSizes:Ce,showCardBuy:Pe,showCardPage:ke,showCardPrice:ve,showCardFinishes:Ne,outline:Te=lt,indexBadge:K=it,titleLevel:_e}){const{currency:l}=at(),Ae=rt(we,ot),h=Dt(he),j=pt(),M=ft(ce),ze=yt(M,m?j:null),Fe=St(M,m?j:null),$=Qe("plp"),F=st($,K),Be=ht(),W=ue??fe??Be??[],U=i(()=>Et(W,h),[W,h.join(",")]),o=ro({editing:m,enabled:k,autoApply:!0}),[Ie,B]=tt(!1),Oe=zt(pe,h),g=o.applied?.vehicle??null,[e,x]=no({editing:m,openingSort:Oe,appliedVehicle:g,vehicleRestored:o.restored,requestQuery:ge}),c=Bt(h,e.kind),s=d(t=>x(t),[x]),H=d((t,u)=>{const a=e[t],qe=a.map(String).includes(u)?a.filter(Je=>String(Je)!==u):[...a,t==="diameters"?Number(u):u];s({...e,[t]:qe,page:1})},[e,s]),X=d(t=>s({...e,priceMax:t,page:1}),[e,s]),Y=d(t=>s({...e,inStockOnly:t,page:1}),[e,s]),q=d(t=>s({...le,kind:t,inStockOnly:e.inStockOnly,priceMax:e.priceMax,sort:e.sort}),[e.inStockOnly,e.priceMax,e.sort,s]),Re=d(t=>s({...e,sort:t,page:1}),[e,s]),Le=d(t=>{s({...e,page:t}),typeof window<"u"&&window.scrollTo({top:0,behavior:ut()})},[e,s]),J=d(()=>s({...le,sort:e.sort}),[e.sort,s]),{clear:N}=o,Q=d(()=>{N(),B(!0),x(t=>({...t,page:1}))},[N]),Ve=d(()=>{N(),B(!1),x(t=>({...t,page:1}))},[N]),T=g?[g.make,g.model,g.year,g.modification].join("|"):"",_=et(null);Ze(()=>{if(o.restored){if(_.current===null){_.current=T;return}_.current!==T&&(_.current=T,x(t=>t.page===1?t:{...t,page:1}))}},[o.restored,T,x]);const A=oo({catalog:U,shownKinds:h,vehicle:g,editing:m}),n=i(()=>{if(!o.fit)return A;const t=A.filter(a=>z(a)==="alloy-wheel"),u=new Set(Wt(t,o.fit).map(a=>a.slug));return A.filter(a=>z(a)!=="alloy-wheel"||u.has(R(a)))},[A,o.fit]),w=de.join(","),Ee=i(()=>{const t=new Set(w?w.split(","):[]);return Ct(n,e,l,c,f).filter(u=>!t.has(u.key))},[n,e,l,w,c.join(","),f]),y=i(()=>bt(n,e,l),[n,e,l]),Z=c.length>1,De=i(()=>ie(f,"alloy-wheel"),[f]),Ge=i(()=>ie(f,"tyre"),[f]),ee=i(()=>Lt(y),[y]),Ke=i(()=>Vt(y),[y]),je=i(()=>G?Ft(n,l):null,[n,l,G]),Me=i(()=>At(n,e,l),[n,e,l]),$e=i(()=>Pt(n,h,e,l),[n,h.join(","),e,l]),We=d((t,u)=>{const a=Tt(n.flatMap(Rt),e.tyreSizes[0]??"",t,u);s({...e,tyreSizes:a?[a]:[],page:1})},[n,e,s]),Ue=i(()=>{const t=new Set(w?w.split(","):[]);return!_t(n,c)||t.has("tyreSizes")?null:kt(n,e,l)},[n,e,l,w,c.join(","),f]),S=i(()=>Nt(y,e.page,D),[y,e.page,D]),b=L(c),I=Kt(c),te=Gt(E,ae,c,h),oe=c.length===1&&c[0]==="tyre",re=o.applied?.stock??null,v=i(()=>Mt(re),[re]),He=i(()=>n.filter(t=>c.includes(z(t))).length,[n,c.join(",")]),ne=U.length===0,Xe=!ne&&n.length===0,Ye=k&&!m&&!o.applied&&!Ie;return h.length===0?null:p("section",{style:nt(Se),children:[k&&r(eo,{cascade:o.cascade,appliedName:o.appliedName,fit:o.fit,fitSummary:oe&&v.length>0?`Takes ${v.join(" · ")}`:null,resolving:o.resolving,unresolved:oe?!!o.applied&&!o.resolving&&v.length===0:o.unresolved,matchCount:He,copy:I,onAmend:Ve,onClear:Q}),Ye&&r(to,{cascade:o.cascade,heading:te.heading,intro:te.intro,ready:o.restored,copy:I,onSkip:()=>B(!0)}),p("div",{className:"px-5 py-10 md:px-[max(2.5rem,calc((100%_-_var(--sf-content-cap,100%))/2_+_2.5rem))]",children:[(C||P)&&p("header",{className:"mb-6",children:[C&&r(so,{level:_e,className:"font-display text-[clamp(28px,4vw,40px)] [font-weight:var(--sf-heading-weight,500)] [text-transform:var(--sf-heading-case,uppercase)] leading-[1.05] tracking-[-0.02em]",children:mt(C,!1)}),P&&r("p",{className:"mt-2 max-w-[60ch] text-[15px] text-fg-dim",children:dt(P)})]}),p("div",{className:"flex flex-col gap-8 lg:flex-row lg:items-start",children:[r(qt,{facets:Ee,filters:e,typeOptions:$e,sizeBoxes:Ue,sizeMatches:e.tyreSizes.length>0?y.length:null,noun:b,priceBounds:je,inStockCount:me?Me:null,onToggle:H,onPickType:q,onPickSize:We,onPriceMax:X,onInStockOnly:Y,onClearAll:J}),p("div",{className:"min-w-0 flex-1",children:[r(Qt,{className:"mb-4",start:p(se,{children:[r(Jt,{total:S.total,range:{from:S.from,to:S.to},noun:b}),r(Ut,{filters:e,onToggle:H,onPriceMax:X,onInStockOnly:Y,onPickType:q})]}),end:r(Zt,{value:e.sort,keys:It(h),labels:Ot,onChange:Re})}),ne?r("div",{className:"border border-dashed border-line p-10",children:r("p",{className:"font-mono text-[12px] uppercase tracking-[0.16em] text-fg-dim",children:m?b.many==="wheels"?V("No wheels in this website's catalog yet — curate products to see them here."):b.many==="tyres"?V("No tyres in this website's catalog yet — curate products to see them here."):V("No products in this website's catalog yet — curate products to see them here."):"Our catalog is being updated. Please check back shortly."})}):Xe?p("div",{className:"border border-line p-10",children:[p("h3",{className:"font-display text-[22px] font-medium uppercase tracking-[-0.01em]",children:["No confirmed fit for your ",o.appliedName]}),r("p",{className:"mt-2 max-w-[52ch] text-[14px] text-fg-dim",children:I.nothingFits}),p("button",{type:"button",onClick:Q,className:"mt-4 cursor-pointer bg-btn px-4 py-3 font-mono text-[11px] font-bold uppercase tracking-[0.24em] text-btn-ink hover:bg-fg",children:["Show all ",b.many]})]}):S.total===0?p("div",{className:"border border-line p-10",children:[p("h3",{className:"font-display text-[22px] font-medium uppercase tracking-[-0.01em]",children:["No ",b.many," match those filters"]}),r("p",{className:"mt-2 max-w-[46ch] text-[14px] text-fg-dim",children:"Try widening the price range or clearing a filter."}),vt(e)&&r("button",{type:"button",onClick:J,className:"mt-4 cursor-pointer bg-btn px-4 py-3 font-mono text-[11px] font-bold uppercase tracking-[0.24em] text-btn-ink hover:bg-fg",children:"Clear all filters"})]}):p(se,{children:[F&&r("style",{children:F}),r("div",{className:`${F?`${$} plp-card-grid`:"plp-card-grid"} ${xt}`,style:{...ze,...wt(`var(${gt})`)},children:S.items.map(t=>z(t)==="tyre"?r($t,{item:t,currency:l,fitSize:v.length>0?jt(t.sizes,v):null,kindLabel:Z?L(["tyre"]).one:null,showBrand:ee,editing:m,fieldUsage:Ge},`tyre:${R(t)}`):r(Xt,{wheel:t,colours:e.finishes,fit:o.fit,editing:m,kindLabel:Z?L(["alloy-wheel"]).one:null,showBrand:ee,coverIndex:ye,fieldUsage:De,showProcess:Ke,hover:xe,imageBackgroundFill:Ae,showBadge:be,outline:Te,indexBadge:K,showCardSizes:Ce??O.showCardSizes,showCardBuy:Pe??O.showCardBuy,showCardPage:ke??O.showCardPage,showCardPrice:ve??!0,showCardFinishes:Ne??!0,imageSizes:Fe},`wheel:${R(t)}`))})]}),r(Yt,{page:S.page,pageCount:S.pageCount,onPage:Le}),r(ct,{editing:m})]})]})]})]})}export{Wo as PLP_GATE_DEFAULTS,lo as default};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type CardHoverDrawn } from "efficient-web-builder/format/lib/animation/hover";
|
|
1
2
|
import type { WheelSummary } from "../../lib/api/index.js";
|
|
2
3
|
import { type CardIndexFormat, type CardOutline } from "efficient-web-builder/format/lib/sections/product-card-style";
|
|
3
4
|
import type { FieldUsageAnswer } from "../../lib/content/field-usage.js";
|
|
@@ -13,7 +14,7 @@ export interface PlpCardProps {
|
|
|
13
14
|
showProcess?: boolean;
|
|
14
15
|
coverIndex?: number;
|
|
15
16
|
fieldUsage?: readonly FieldUsageAnswer[];
|
|
16
|
-
|
|
17
|
+
hover?: CardHoverDrawn;
|
|
17
18
|
imageBackgroundFill?: string;
|
|
18
19
|
showBadge?: boolean;
|
|
19
20
|
outline?: CardOutline;
|
|
@@ -25,4 +26,4 @@ export interface PlpCardProps {
|
|
|
25
26
|
showCardFinishes?: boolean;
|
|
26
27
|
imageSizes?: string;
|
|
27
28
|
}
|
|
28
|
-
export default function PlpCard({ wheel, colours, fit, editing, brandPlate, kindLabel, showBrand, showProcess, coverIndex, fieldUsage,
|
|
29
|
+
export default function PlpCard({ wheel, colours, fit, editing, brandPlate, kindLabel, showBrand, showProcess, coverIndex, fieldUsage, hover, imageBackgroundFill, showBadge, outline, indexBadge, showCardSizes, showCardBuy, showCardPage, showCardPrice, showCardFinishes, imageSizes, }: PlpCardProps): import("react").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,Fragment as
|
|
1
|
+
"use client";import{jsx as e,Fragment as $,jsxs as j}from"react/jsx-runtime";import{CARD_IMAGE_SIZES as z}from"../../lib/sections/card-image-sizes.js";import{LISTING_CARD_SHOW as P}from"../../lib/sections/card-show-defaults.js";import M from"next/image";import{useState as U}from"react";import X from"../BrandPlate.js";import H,{CardBuyDialog as V}from"../card-pieces/CardBuyButton.js";import Z from"../card-pieces/CardFinishSwatches.js";import q from"../card-pieces/CardPrice.js";import J from"../card-pieces/CardProductBadge.js";import{useWheelCardState as K,WheelCardStateProvider as Q}from"../card-pieces/ProductCardState.js";import{wheelCardEyebrow as Y,wheelCardEyebrowShows as ee}from"../ProductCardEyebrow.js";import{withRMark as T}from"efficient-web-builder/render/components/RMark";import re from"../WheelPlaceholder.js";import{cardSpinOf as oe}from"../card-spin.js";import{cardHoverOf as ae}from"efficient-web-builder/format/lib/animation/hover";import{CardSpecFacts as se}from"../card-pieces/CardSpecs.js";import te from"../WheelCardFrame.js";import{CARD_IMAGE_BG_OFF as ne}from"efficient-web-builder/format/lib/content/card-image-background";import{itemBrand as ie}from"../../lib/catalog/plp-item.js";import{CARD_INDEX_BADGE_CLASS as le,CARD_INDEX_CLASS as me,DEFAULT_CARD_INDEX_FORMAT as de,DEFAULT_CARD_OUTLINE as ce}from"efficient-web-builder/format/lib/sections/product-card-style";import{setSecondSrc as he}from"../../lib/wheels/set-mode.js";import{PLP_GRID_GAP_VAR as fe}from"../../lib/wheels/plp-grid.js";import{FITMENT_FIELD_SEPARATOR as ue}from"../../lib/wheels/plp-fitment-match.js";import{coverSrcForWheel as pe,DEFAULT_COVER_INDEX as we,resolvePaintedSrc as Se}from"../../lib/wheels/cover-rendering.js";const Ce=[],ge=ae({},"AlloyWheelsListing");function _e({wheel:n,colours:c,fit:i=null,editing:l=!1,brandPlate:m=!1,kindLabel:h=null,showBrand:s=!0,showProcess:f=!1,coverIndex:u=we,fieldUsage:p=Ce,hover:w=ge,imageBackgroundFill:S=ne,showBadge:C=!0,outline:g=ce,indexBadge:_=de,showCardSizes:E=P.showCardSizes,showCardBuy:A=P.showCardBuy,showCardPage:b=P.showCardPage,showCardPrice:r=!0,showCardFinishes:o=!0,imageSizes:d=z}){return e(Q,{wheel:n,colours:c,editing:l,children:e(Ee,{fit:i,brandPlate:m,kindLabel:h,showBrand:s,showProcess:f,coverIndex:u,fieldUsage:p,hover:w,imageBackgroundFill:S,showBadge:C,outline:g,indexBadge:_,showCardSizes:E,showCardBuy:A,showCardPage:b,showCardPrice:r,showCardFinishes:o,imageSizes:d})})}function Ee({fit:n,brandPlate:c,kindLabel:i,showBrand:l,showProcess:m,coverIndex:h,fieldUsage:s,hover:f,imageBackgroundFill:u,showBadge:p,outline:w,indexBadge:S,showCardSizes:C,showCardBuy:g,showCardPage:_,showCardPrice:E,showCardFinishes:A,imageSizes:b}){const{wheel:r,sel:o,isSet:d}=K(),G=pe(r,h,o.finish?.name,o.shownSrc,n?.holes),[y,k]=U(()=>new Set),x=a=>k(t=>t.has(a)?t:new Set(t).add(a)),F=Se({overrideSrc:G,hookSrc:o.shownSrc,failed:y}),I=ie(r),B=oe(f),R=(a,t)=>e(M,{src:a,alt:t,width:800,height:800,sizes:b,className:["block h-full w-full object-contain",B.className].filter(Boolean).join(" "),style:B.style,draggable:!1,onError:()=>x(a)},a),L=o.finish?`${r.name} — ${o.finish.name}`:r.name,O=F?R(F,L):e(re,{imageLabel:r.name,spin:B}),D=d?he(r.finishes?.find(a=>a.name===o.finish?.name),F):null,W=D&&!y.has(D)?R(D,`${L} — right`):void 0,N=S!=="off"?e("span",{"aria-hidden":!0,className:`${me} ${le}`}):null,v=Y({kindLabel:i,brand:l&&I?T(I):null,process:m&&r.process?T(r.process):null},s);return j($,{children:[e(te,{href:`/wheels/${r.slug}`,wide:d,setGridGap:`var(${fe})`,identityLink:!0,containerProps:{onPointerEnter:o.arm,onTouchStart:o.arm,onFocusCapture:o.arm},probes:o.probes,outline:w,imageBackgroundFill:u,indexBadge:N,badges:e(J,{show:p,numbered:N!=null,sale:!0}),image:O,imageSecond:W,plate:c?e(X,{brand:I,logo:r.brandLogo}):null,eyebrow:v,wholeCardLink:!0,reserveEyebrow:ee({kind:!!i,brand:l,process:m},s),spec:e(se,{sizes:C,fieldUsage:s,car:n,separator:ue}),price:e(q,{show:E,setTotal:!0,wasFollowsSize:!0}),swatches:e(Z,{show:A,showSingle:!0}),buy:e(H,{buy:g,page:_})}),e(V,{})]})}export{_e as default};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export declare function PlpToolbar({ start, end, className }: {
|
|
3
|
+
start: ReactNode;
|
|
4
|
+
end?: ReactNode;
|
|
5
|
+
className?: string;
|
|
6
|
+
}): import("react").JSX.Element;
|
|
7
|
+
export declare function PlpResultRange({ total, range, noun, }: {
|
|
8
|
+
total: number;
|
|
9
|
+
range: {
|
|
10
|
+
from: number;
|
|
11
|
+
to: number;
|
|
12
|
+
};
|
|
13
|
+
noun: {
|
|
14
|
+
many: string;
|
|
15
|
+
};
|
|
16
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as s,jsxs as e,Fragment as t}from"react/jsx-runtime";function i({start:n,end:a,className:r=""}){return e("div",{className:[r,"flex min-h-[34px] flex-wrap items-center justify-between gap-x-4 gap-y-2 border-b border-line pb-3"].filter(Boolean).join(" "),children:[s("div",{className:"flex min-w-0 flex-1 flex-wrap items-center gap-x-4 gap-y-2",children:n}),a]})}function m({total:n,range:a,noun:r}){return s("p",{className:"font-mono text-[12px] tabular-nums tracking-[0.08em]",children:n===0?e("span",{className:"text-fg-dim",children:["No ",r.many]}):e(t,{children:[e("span",{children:[a.from,"–",a.to]}),e("span",{className:"text-fg-dim",children:[" of ",n," ",r.many]})]})})}export{m as PlpResultRange,i as PlpToolbar};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
import{CARD_HOVER_KEYS as o}from"efficient-web-builder/format/lib/animation/hover";const r={kind:"tyre",tyres:[]},i={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??[]}:r},{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}:i},{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})}],h="more-like-this",a=l.map(e=>({value:e.key,label:e.label}));function s(e){return l.find(t=>t.key===e)}function y(e){return l.filter(t=>t.from.includes(e))}function c(e,t){return e.from.includes(t)}const d=["coverIndex","imageBackground","_gHover",...Object.values(o),"showBadge"];function p(e){return s(e)?.to==="tyre"}export{d as CARD_ROWS_NOT_ON_A_TYRE,h as DEFAULT_RELATIONSHIP,l as RELATIONSHIPS,a as RELATIONSHIP_OPTIONS,p as answersWithTyres,c as relationshipApplies,s as relationshipByKey,y as relationshipsFor};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as t}from"react/jsx-runtime";import n from"../../../../../components/wheels-plp/AlloyWheelsListing.js";import{hidableText as i}from"efficient-easel/screen/lib/document/hidable";import{asPlpSortKey as r,listingHiddenFacets as o}from"../../../../wheels/plp-filters.js";import{parseCoverIndex as
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import n from"../../../../../components/wheels-plp/AlloyWheelsListing.js";import{hidableText as i}from"efficient-easel/screen/lib/document/hidable";import{asPlpSortKey as r,listingHiddenFacets as o}from"../../../../wheels/plp-filters.js";import{parseCoverIndex as l}from"../../../../wheels/cover-rendering.js";import{cardHoverOf as g}from"efficient-web-builder/format/lib/animation/hover";import{parseCardOutline as h,parseCardIndexFormat as s}from"efficient-web-builder/format/lib/sections/product-card-style";import{phHide as a}from"efficient-web-builder/render/lib/document/blocks/scaffold";import{AlloyWheelsListingMeta as m,ALLOYWHEELSLISTING_PH as d}from"./meta.js";const S={...m,render:e=>t(n,{titleLevel:e.titleLevel,heading:a(e.heading,d.heading,e.editor),intro:a(e.intro,d.intro,e.editor),askForCar:e.askForCar!==!1,gateHeading:i(e.gateHeading),gateIntro:i(e.gateIntro),perPage:e.perPage,columns:e.columns,defaultSort:r(e.defaultSort),coverIndex:l(e.coverIndex),cardImage:e.cardImage,hover:g(e,"AlloyWheelsListing"),imageBackground:e.imageBackground,showBadge:e.showBadge!==!1,showCardPrice:e.showCardPrice,showCardFinishes:e.showCardFinishes,showCardSizes:e.showCardSizes,showCardBuy:e.showCardBuy,showCardPage:e.showCardPage,outline:h(e.outline),indexBadge:s(e.indexBadge),hiddenFacets:o(e),showPrice:e.showPrice,showInStock:e.showInStock!==!1,kinds:e.kinds,products:e.products,wheels:e.wheels,fieldUsage:e.fieldUsage,editing:e.editor?.isEditing})};export{S as AlloyWheelsListingRender};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import o from"../../../../../components/pdp-dynamic/DynamicDetailRows.js";import d from"../../../../../components/DetailRows.js";import{phRows as i}from"efficient-web-builder/render/lib/document/blocks/scaffold";import{DetailRowsMeta as a,DETAILROWS_SCAFFOLD_ROWS as m}from"./meta.js";const y={...a,render:t=>t.dynamic?e(o,{rowsFrom:t.rowsFrom==="details"?"details":"story",startLeft:t.startLeft,padTop:typeof t.padTop=="number"?t.padTop:void 0,padBottom:typeof t.padBottom=="number"?t.padBottom:void 0,editing:t.editor?.isEditing}):e(d,{rows:i(t.rows,m,t.editor),startLeft:t.startLeft,layout:t.layout,padTop:typeof t.padTop=="number"?t.padTop:void 0,padBottom:typeof t.padBottom=="number"?t.padBottom:void 0,editing:t.editor?.isEditing})};export{y as DetailRowsRender};
|
|
@@ -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"}},
|
|
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 +1 @@
|
|
|
1
|
-
import{jsx as m}from"react/jsx-runtime";import{phoneKey as
|
|
1
|
+
import{jsx as m}from"react/jsx-runtime";import{phoneKey as w}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 c}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 u,parseCardIndexFormat as g}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 a}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,a.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:u(e.outline),indexBadge:g(e.indexBadge),showBadge:e.showBadge??!0,hover:c(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 n=i(e.linkText,a.link,e.editor),o=e.source,h=s(e,"full"),r=I(e.headPlacement)==="own-box",d=l=>r?void 0:l;return m(P,{gap:e.gap,gapPhone:e[w("gap")],contentCapped:h.mode==="page",num:d(i(e.num,a.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(n?{text:n,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,limit:e.showAll?void 0:e.limit,editing:e.editor?.isEditing,imageBackground:e.imageBackground,cardImage:e.cardImage,hover:c(e,"ProductGrid"),coverIndex:k(e.coverIndex),outline:u(e.outline),indexBadge:g(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 +1 @@
|
|
|
1
|
-
import{jsx as r}from"react/jsx-runtime";import{SITE_WIDTH_CAP as
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import{SITE_WIDTH_CAP as h}from"efficient-web-builder/format/lib/content/page-width";import{resolveWidth as P}from"efficient-web-builder/format/lib/content/section-width";import H from"../../../../../components/LinkedProductHero.js";import m from"../../../../../components/pdp-dynamic/DynamicProductHero.js";import L from"../../../../../components/SectionNotice.js";import{trustBulletsRow as g,trustBulletsSlot as A}from"../../../../../components/product-hero/trust-bullets.js";import{TRUST_BULLETS_SLOT as R}from"../../../../sections/hero-trust-bullets.js";import{useCurrentProduct as y}from"../../../current-product.js";import{isEditorOnDynamicPage as F}from"efficient-web-builder/format/lib/document/editor-page-context";import{DEFAULT_HERO_PRICE_PLACEMENT as O,parseHeroPricePlacement as w}from"../../../../sections/hero-price-placement.js";import{DEFAULT_HERO_LAYOUT as D,DEFAULT_HERO_RATIO as S,DEFAULT_HERO_TEXT_ALIGN as I,parseHeroLayout as U,parseHeroRatio as M,parseHeroTextAlign as x}from"../../../../sections/hero-arrangement.js";import{DEFAULT_HERO_GALLERY_MODE as B,DEFAULT_HERO_IMAGE_FIT as C,parseHeroGalleryMode as k,parseHeroImageFit as p}from"../../../../sections/hero-gallery.js";import{say as G}from"efficient-web-builder/format/lib/editor-words";import{readPartStyles as N}from"efficient-web-builder/render/lib/document/part-styles";import{ProductHeroMeta as V}from"./meta.js";function b({source:e,editing:t=!1,pricePlacement:o=O,showVehicleFitment:i=!0,heroLayout:l=D,imageRatio:a=S,textAlign:u=I,showSpecTable:c=!0,showPriceQuote:d=!0,galleryMode:f=B,imageFit:s=C,trustBullets:E,nodeId:T,partStyles:_}){const n={heroLayout:l,imageRatio:a,textAlign:u,showSpecTable:c,showPriceQuote:d,galleryMode:f,imageFit:s,trustBullets:g(E,t),nodeId:T,partStyles:_};return y()||t&&F()?r(m,{editing:t,pricePlacement:o,showVehicleFitment:i,...n}):e?.slug?r(H,{slug:e.slug,kind:e.kind??"wheel",editing:t,pricePlacement:o,showVehicleFitment:i,...n}):t?r(L,{size:"tall",children:G("Pick a product in the panel to fill this hero.")}):r(m,{pricePlacement:o,showVehicleFitment:i,...n})}function j(e,t){return P(e,"full").mode!=="page"?t:r("div",{style:{"--sf-content-cap":h},children:t})}const me={...V,render:e=>j(e,r(b,{source:e.source,editing:e.editor?.isEditing,pricePlacement:w(e.pricePlacement),showVehicleFitment:e.showVehicleFitment??!0,heroLayout:U(e.heroLayout),imageRatio:M(e.imageRatio),textAlign:x(e.textAlign),showSpecTable:e.showSpecTable??!0,showPriceQuote:e.showPriceQuote??!0,galleryMode:k(e.galleryMode),imageFit:p(e.imageFit),trustBullets:A(e[R]),nodeId:typeof e.id=="string"?e.id:void 0,partStyles:N(e)}))};export{me as ProductHeroRender};
|
|
@@ -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{
|
|
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};
|
|
@@ -1478,20 +1478,6 @@
|
|
|
1478
1478
|
}
|
|
1479
1479
|
}
|
|
1480
1480
|
}
|
|
1481
|
-
},
|
|
1482
|
-
"dataSourceOptions": {
|
|
1483
|
-
"type": "object",
|
|
1484
|
-
"label": "Product",
|
|
1485
|
-
"objectFields": {
|
|
1486
|
-
"designCode": {
|
|
1487
|
-
"type": "custom",
|
|
1488
|
-
"__text": {
|
|
1489
|
-
"control": "plainText",
|
|
1490
|
-
"label": "Design code",
|
|
1491
|
-
"placeholder": "e.g. D00123 · blank = the whole store"
|
|
1492
|
-
}
|
|
1493
|
-
}
|
|
1494
|
-
}
|
|
1495
1481
|
}
|
|
1496
1482
|
},
|
|
1497
1483
|
"SubmitBox": {
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const CATALOG_TEXT_SIZE: {
|
|
2
|
+
readonly body: "text-[length:var(--size-body,14px)]";
|
|
3
|
+
readonly labelXs: "text-[length:var(--size-label,10px)]";
|
|
4
|
+
readonly labelSmall: "text-[length:var(--size-label,12px)]";
|
|
5
|
+
readonly labelLarge: "text-[length:var(--size-label,13px)]";
|
|
6
|
+
readonly labelXl: "text-[length:var(--size-label,14px)]";
|
|
7
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={body:"text-[length:var(--size-body,14px)]",labelXs:"text-[length:var(--size-label,10px)]",labelSmall:"text-[length:var(--size-label,12px)]",labelLarge:"text-[length:var(--size-label,13px)]",labelXl:"text-[length:var(--size-label,14px)]"};export{e as CATALOG_TEXT_SIZE};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
import{breakpointOf as d}from"efficient-web-builder/format/lib/content/view-lines";function x(n){const o=/(?:^|\s)grid-cols-(\d+)(?=\s|$)/.exec(n);if(!o)throw new Error(`gridColumnsOf: no base grid-cols-N in "${n}"`);const e=[...n.matchAll(/(?:^|\s)(max-[\w[\]-]+):grid-cols-(\d+)(?=\s|$)/g)].flatMap(t=>{const i=d(t[1]);return i?.max?[{below:i.px,columns:Number(t[2])}]:[]}).sort((t,i)=>i.below-t.below);return{base:Number(o[1]),steps:e}}function c(n,o){return Math.max(1,Math.min(n,Math.floor(o)))}function b(n,o){return{base:c(n.base,o),steps:n.steps.map(e=>({below:e.below,columns:c(e.columns,o)}))}}const p=n=>`grid-template-columns:repeat(${n},minmax(0,1fr))`;function g(n,o,{limit:e,cards:t}={}){const i=x(o),m=typeof e=="number"&&e>0?e:void 0,a=Math.max(i.base,...i.steps.map(r=>r.columns));if(t!==void 0&&Math.min(t,m??1/0)>=a)return"";const l=[];for(const r of w(i)){const s=m===void 0?r.columns:c(r.columns,m),f=[];s<r.columns&&f.push(`.${n}.${n}{${p(s)}}`);for(let u=s-1;u>=1;u--)f.push(`.${n}:not(:has(> :nth-child(${u+1}))){${p(u)}}`);l.push(h(r,f))}return l.join("")}function w({base:n,steps:o}){return[{min:o[0]?.below,max:void 0,columns:n},...o.map((e,t)=>({min:o[t+1]?.below,max:e.below,columns:e.columns}))]}function h(n,o){if(o.length===0)return"";const e=n.min!==void 0&&n.max!==void 0?`(${n.min}px <= width < ${n.max}px)`:n.max!==void 0?`(width < ${n.max}px)`:n.min!==void 0?`(width >= ${n.min}px)`:void 0;return e?`@media ${e}{${o.join("")}}`:o.join("")}export{b as fillRow,c as fillRowColumns,g as fillRowCss,w as gridBands,x as gridColumnsOf,p as gridTracks,h as inBand};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type GridBand } from "./fill-row.js";
|
|
2
|
-
export declare const SET_CARD_SINGLE_BELOW
|
|
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
|
|
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 @@
|
|
|
1
|
+
const e={price:{label:"Price",follows:"Heading 2",builtIn:"36px",writable:!0,sized:!0}};export{e as PRODUCT_HERO_TEXT_REGIONS};
|
|
@@ -1 +1,8 @@
|
|
|
1
1
|
export declare const PRODUCT_REVIEWS_SOURCE = "product-reviews";
|
|
2
|
+
export declare const REVIEWS_OF_EVERY_PRODUCT = "all";
|
|
3
|
+
export declare const REVIEWS_OF_CHOSEN_PRODUCT = "pick";
|
|
4
|
+
export interface ReviewsSourceOptions {
|
|
5
|
+
product?: string;
|
|
6
|
+
designCode?: string;
|
|
7
|
+
[key: string]: unknown;
|
|
8
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const E="product-reviews",R="all",_="pick";export{E as PRODUCT_REVIEWS_SOURCE,_ as REVIEWS_OF_CHOSEN_PRODUCT,R as REVIEWS_OF_EVERY_PRODUCT};
|
|
@@ -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 +1 @@
|
|
|
1
|
-
import{slugify as
|
|
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
|
|
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."
|
|
@@ -736,6 +741,7 @@ export type WebBuilderPhrase =
|
|
|
736
741
|
| "Milestone Timeline"
|
|
737
742
|
| "Milestone title."
|
|
738
743
|
| "Milestones"
|
|
744
|
+
| "Mirror cards"
|
|
739
745
|
| "Mixed"
|
|
740
746
|
| "Mockup Card"
|
|
741
747
|
| "Mockup card"
|
|
@@ -786,6 +792,7 @@ export type WebBuilderPhrase =
|
|
|
786
792
|
| "Number style"
|
|
787
793
|
| "Numbers"
|
|
788
794
|
| "N°01, N°02"
|
|
795
|
+
| "Odd cards"
|
|
789
796
|
| "Off"
|
|
790
797
|
| "Office"
|
|
791
798
|
| "Offices"
|
|
@@ -933,9 +940,10 @@ export type WebBuilderPhrase =
|
|
|
933
940
|
| "Role"
|
|
934
941
|
| "Role · Location"
|
|
935
942
|
| "Role · location"
|
|
936
|
-
| "Rotate
|
|
943
|
+
| "Rotate"
|
|
937
944
|
| "Rounds the picture. Left alone it stays square."
|
|
938
945
|
| "Rounds the picture. The card's own corner is in Styles."
|
|
946
|
+
| "Row columns"
|
|
939
947
|
| "Sans"
|
|
940
948
|
| "Save"
|
|
941
949
|
| "Save as Template"
|
|
@@ -987,6 +995,7 @@ export type WebBuilderPhrase =
|
|
|
987
995
|
| "Shape"
|
|
988
996
|
| "Share button"
|
|
989
997
|
| "Shared"
|
|
998
|
+
| "Shared, scroll"
|
|
990
999
|
| "Shop & galleries"
|
|
991
1000
|
| "Short description of this figure."
|
|
992
1001
|
| "Short detail line"
|
|
@@ -995,6 +1004,7 @@ export type WebBuilderPhrase =
|
|
|
995
1004
|
| "Show arrows"
|
|
996
1005
|
| "Show cover image"
|
|
997
1006
|
| "Show hints"
|
|
1007
|
+
| "Show next image"
|
|
998
1008
|
| "Show on a card"
|
|
999
1009
|
| "Show on phones"
|
|
1000
1010
|
| "Show slide picker"
|
|
@@ -1249,6 +1259,7 @@ export type WebBuilderPhrase =
|
|
|
1249
1259
|
| "Ways to pay"
|
|
1250
1260
|
| "We accept"
|
|
1251
1261
|
| "WeChat"
|
|
1262
|
+
| "What each card does when a shopper points at it, or taps it on a phone. Rotate turns the wheel picture."
|
|
1252
1263
|
| "What people *say.*"
|
|
1253
1264
|
| "What this does when a shopper points at it, or taps it on a phone."
|
|
1254
1265
|
| "WhatsApp"
|
|
@@ -1288,6 +1299,7 @@ export type WebBuilderPhrase =
|
|
|
1288
1299
|
| "Your third question goes here?"
|
|
1289
1300
|
| "Your unpublished changes are kept"
|
|
1290
1301
|
| "Zigzag"
|
|
1302
|
+
| "Zoom"
|
|
1291
1303
|
| "accent"
|
|
1292
1304
|
| "all theme colors"
|
|
1293
1305
|
| "body text"
|
|
@@ -1395,6 +1407,7 @@ export type StorefrontBlocksPhrase =
|
|
|
1395
1407
|
| "After close"
|
|
1396
1408
|
| "Alignment"
|
|
1397
1409
|
| "All brands"
|
|
1410
|
+
| "All categories"
|
|
1398
1411
|
| "All media groups"
|
|
1399
1412
|
| "All product types"
|
|
1400
1413
|
| "All products"
|
|
@@ -1519,6 +1532,7 @@ export type StorefrontBlocksPhrase =
|
|
|
1519
1532
|
| "ET range"
|
|
1520
1533
|
| "Edit category ✎"
|
|
1521
1534
|
| "Edit form ✎"
|
|
1535
|
+
| "Edit in Reviews →"
|
|
1522
1536
|
| "Edit menu →"
|
|
1523
1537
|
| "Edit product ✎"
|
|
1524
1538
|
| "Edit social links →"
|
|
@@ -1728,6 +1742,7 @@ export type StorefrontBlocksPhrase =
|
|
|
1728
1742
|
| "No menus found"
|
|
1729
1743
|
| "No menus yet. Create one in {place}, then pick it here."
|
|
1730
1744
|
| "No models listed"
|
|
1745
|
+
| "No product chosen yet, so reviews of every product show."
|
|
1731
1746
|
| "No products in this category"
|
|
1732
1747
|
| "No products in this website's catalog yet — curate products to see them here."
|
|
1733
1748
|
| "No products in “{name}” yet"
|
|
@@ -1832,7 +1847,6 @@ export type StorefrontBlocksPhrase =
|
|
|
1832
1847
|
| "Review content"
|
|
1833
1848
|
| "Review title (optional)"
|
|
1834
1849
|
| "Reviews are collected by the Review Form section and wait for your approval before they show."
|
|
1835
|
-
| "Reviews to display"
|
|
1836
1850
|
| "Right panel · actions"
|
|
1837
1851
|
| "Right panel · choices"
|
|
1838
1852
|
| "Right panel · form"
|
|
@@ -1980,6 +1994,7 @@ export type StorefrontBlocksPhrase =
|
|
|
1980
1994
|
| "This header uses the old layout"
|
|
1981
1995
|
| "This hero always shows a real product. Pick one to fill the title, price, pictures, options and Add to Cart from the catalog."
|
|
1982
1996
|
| "This menu has no links yet — add them in {place}."
|
|
1997
|
+
| "This product"
|
|
1983
1998
|
| "This product has no finishes yet, so its card falls back to the product image — or an empty placeholder when it has none. Add finishes to the product record, then give each one an image."
|
|
1984
1999
|
| "This product’s photos appear here on a product page. Add media groups in the product’s Media tab."
|
|
1985
2000
|
| "This product’s sizes appear here on a product page."
|