efficient-storefront-blocks 0.88.0 → 0.90.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 +27 -0
- package/dist/chunks/{EditorPreviewCheckout-ZGPS3Q3X.js → EditorPreviewCheckout-M4LID5YF.js} +1 -1
- package/dist/chunks/{SiteEditorProvider-HZ47WOEX.js → SiteEditorProvider-2JWQZN2Q.js} +1 -1
- package/dist/chunks/chunk-3XIZADE6.js +1 -0
- package/dist/chunks/chunk-6TDIG6W3.js +395 -0
- package/dist/chunks/chunk-JMUP4FBL.js +1 -0
- package/dist/chunks/{chunk-7C2YH2AQ.js → chunk-U6UPMVSX.js} +1 -1
- package/dist/chunks/{fitment-data-SH4US3BV.js → fitment-data-3VLLTJW6.js} +1 -1
- package/dist/contract.js +2 -2
- package/dist/editor/components/GalleryPicturesSource.d.ts +33 -0
- package/dist/editor/components/GalleryPicturesSource.js +1 -0
- package/dist/editor/components/ProductSourceRows.d.ts +35 -0
- package/dist/editor/components/ProductSourceRows.js +1 -0
- package/dist/editor/components/ReviewsProductSource.js +1 -1
- package/dist/editor/lib/document/blocks/commerce/GalleryB/fields.js +1 -1
- package/dist/editor/lib/document/blocks/service/FooterDivider/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/efficient-backend.d.ts +0 -1
- package/dist/editor/lib/efficient-backend.js +1 -1
- package/dist/editor/lib/storefront-editor-words.d.ts +1 -0
- package/dist/editor/lib/storefront-editor-words.js +1 -1
- package/dist/editor.css +1 -1
- package/dist/index.js +62 -43
- package/dist/links.js +1 -1
- package/dist/render/built-with.json +1 -1
- package/dist/render/components/AppointmentBooking.js +1 -1
- package/dist/render/components/ArticleBody.js +1 -1
- package/dist/render/components/BoxHeaderBar.js +1 -1
- package/dist/render/components/CollectionCard.d.ts +1 -1
- package/dist/render/components/CollectionCard.js +1 -1
- package/dist/render/components/ContactRouting.js +1 -1
- package/dist/render/components/EuTyreLabels.d.ts +2 -1
- package/dist/render/components/EuTyreLabels.js +1 -1
- package/dist/render/components/Events.js +1 -1
- package/dist/render/components/FooterDivider.d.ts +1 -2
- package/dist/render/components/FooterDivider.js +1 -1
- package/dist/render/components/FooterEmailSignup.js +1 -1
- package/dist/render/components/FooterGroup.js +1 -1
- package/dist/render/components/FooterLogo.js +1 -1
- package/dist/render/components/FooterMenu.js +1 -1
- package/dist/render/components/FooterMessaging.js +1 -1
- package/dist/render/components/FooterPayment.js +1 -1
- package/dist/render/components/FooterSection.js +1 -1
- package/dist/render/components/FooterSocial.js +1 -1
- package/dist/render/components/FooterText.js +1 -1
- package/dist/render/components/GalleryCard.js +1 -1
- package/dist/render/components/GalleryGrid.d.ts +3 -1
- package/dist/render/components/GalleryGrid.js +3 -1
- package/dist/render/components/GalleryItem.d.ts +1 -0
- package/dist/render/components/GalleryItem.js +1 -1
- package/dist/render/components/GalleryShowcase.js +1 -1
- package/dist/render/components/GridCardTemplate.js +1 -1
- package/dist/render/components/HeaderNavItem.d.ts +1 -1
- package/dist/render/components/HeaderNavItem.js +1 -1
- package/dist/render/components/HeaderToolBlocks.js +1 -1
- package/dist/render/components/HeaderTools.d.ts +5 -3
- package/dist/render/components/HeaderTools.js +1 -1
- package/dist/render/components/LegalLine.js +1 -1
- package/dist/render/components/MenuLinkBlock.js +1 -1
- package/dist/render/components/MenuPlaceholderLabel.js +1 -1
- package/dist/render/components/ProductGallery.d.ts +2 -1
- package/dist/render/components/ProductGallery.js +1 -1
- package/dist/render/components/ProductRef.js +1 -1
- package/dist/render/components/QuoteLink.d.ts +2 -1
- package/dist/render/components/QuoteLink.js +1 -1
- package/dist/render/components/RatingStars.js +1 -1
- package/dist/render/components/ReviewForm.js +1 -1
- package/dist/render/components/SectionBand.js +1 -1
- package/dist/render/components/SectionFootnote.d.ts +2 -1
- package/dist/render/components/SectionFootnote.js +1 -1
- package/dist/render/components/SectionGroupBody.js +1 -1
- package/dist/render/components/SectionNotice.js +1 -1
- package/dist/render/components/TyreFitVerdicts.js +1 -1
- package/dist/render/components/booking/BookingBox.js +1 -1
- package/dist/render/components/booking/BookingRegions.js +1 -1
- package/dist/render/components/card-pieces/CardBuyButton.d.ts +3 -1
- package/dist/render/components/card-pieces/CardBuyButton.js +1 -1
- package/dist/render/components/card-pieces/CardEyebrow.js +1 -1
- package/dist/render/components/card-pieces/CardName.js +1 -1
- package/dist/render/components/card-pieces/CardPrice.js +1 -1
- package/dist/render/components/card-pieces/CardProductPicture.js +1 -1
- package/dist/render/components/card-pieces/CardSpecs.js +1 -1
- package/dist/render/components/card-pieces/HostPart.js +1 -1
- package/dist/render/components/card-pieces/card-row.js +1 -1
- package/dist/render/components/catalog/ShopperChips.js +1 -1
- package/dist/render/components/catalog/ShopperFilters.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/fitment/StockFitmentPart.js +1 -1
- package/dist/render/components/pdp-dynamic/DynamicEuTyreLabel.d.ts +4 -0
- package/dist/render/components/pdp-dynamic/DynamicEuTyreLabel.js +1 -1
- package/dist/render/components/pdp-dynamic/DynamicGalleryGrid.js +1 -1
- package/dist/render/components/pdp-dynamic/DynamicProductGallery.js +1 -1
- package/dist/render/components/submit/SubmitBox.js +1 -1
- package/dist/render/lib/content/served-lists.d.ts +8 -0
- package/dist/render/lib/content/served-lists.js +1 -0
- package/dist/render/lib/document/blocks/commerce/GalleryB/render.js +1 -1
- package/dist/render/lib/document/blocks/commerce/ProductHero/render.js +1 -1
- package/dist/render/lib/document/blocks/commerce/ProductPrice/render.js +1 -1
- package/dist/render/lib/document/blocks/service/Events/render.js +1 -1
- package/dist/render/lib/document/blocks/service/FooterDivider/meta.js +1 -1
- package/dist/render/lib/document/blocks/service/FooterDivider/render.js +1 -1
- package/dist/render/lib/document/blocks/service/RatingBlock/render.js +1 -1
- package/dist/render/lib/document/card-templates.d.ts +2 -0
- package/dist/render/lib/document/card-templates.js +1 -1
- package/dist/render/lib/document/lazy-draws.js +1 -1
- package/dist/render/lib/document/render-config.d.ts +1 -0
- package/dist/render/lib/document/render-config.js +1 -1
- package/dist/render/lib/document/section-to-box-rows-productgrid.d.ts +1 -0
- package/dist/render/lib/document/section-to-box-rows-productgrid.js +1 -0
- package/dist/render/lib/sections/product-pictures.d.ts +25 -0
- package/dist/render/lib/sections/product-pictures.js +1 -0
- package/dist/render/lib/sections/product-source.d.ts +8 -0
- package/dist/render/lib/sections/product-source.js +1 -0
- package/dist/render/lib/sections/reviews.js +1 -1
- package/dist/words.d.ts +11 -0
- package/dist/words.js +5 -5
- package/package.json +5 -4
- package/dist/chunks/chunk-O7GCI2MP.js +0 -1
- package/dist/chunks/chunk-RHNDIM7Z.js +0 -382
- package/dist/chunks/chunk-VOK5N3IB.js +0 -1
- /package/dist/chunks/{chunk-RHNDIM7Z.js.LEGAL.txt → chunk-6TDIG6W3.js.LEGAL.txt} +0 -0
- /package/dist/chunks/{chunk-NQLVRCTI.js → chunk-N445XY3W.js} +0 -0
- /package/dist/editor/lib/{editor-words-kept.d.ts → storefront-editor-words-kept.d.ts} +0 -0
- /package/dist/editor/lib/{editor-words-kept.js → storefront-editor-words-kept.js} +0 -0
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { type CartLine } from "../CartContext.js";
|
|
2
|
+
import { type ViewHideTake } from "efficient-web-builder/render/components/ViewHideRoot";
|
|
2
3
|
import { type HeroBuyState } from "./ProductCardState.js";
|
|
3
4
|
export declare const CARD_PAGE_WORDS = "View sizes & fitment";
|
|
4
5
|
export interface CardBuyButtonSettings {
|
|
5
6
|
buy?: boolean;
|
|
6
7
|
page?: boolean;
|
|
7
8
|
}
|
|
8
|
-
export declare function HeroBuyButton({ buy, takesOrders, add, }: {
|
|
9
|
+
export declare function HeroBuyButton({ buy, takesOrders, add, take, }: {
|
|
9
10
|
buy: HeroBuyState;
|
|
10
11
|
takesOrders: boolean;
|
|
11
12
|
add: (line: CartLine) => void;
|
|
13
|
+
take?: ViewHideTake;
|
|
12
14
|
}): import("react").JSX.Element;
|
|
13
15
|
export default function CardBuyButton({ buy, page }: CardBuyButtonSettings): import("react").JSX.Element | null;
|
|
14
16
|
export declare function CardBuyDialog(): import("react").JSX.Element | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as
|
|
1
|
+
"use client";import{jsx as o,jsxs as b}from"react/jsx-runtime";import E from"next/link";import{useEffect as h}from"react";import{useCart as A}from"../CartContext.js";import g from"../QuoteLink.js";import{NO_HIDE as R,useTakeViewHide as B,withViewHide as k}from"efficient-web-builder/render/components/ViewHideRoot";import{useSiteTakesOrders as x}from"../SiteRecordContext.js";import w from"../wheels-plp/PlpNotifyMeDialog.js";import{DEFAULT_PURCHASE_STATE as _}from"../../lib/catalog/purchase.js";import{ADD_TO_BASKET_ATTR as C}from"../../lib/commerce.js";import{STOCK_WORDS as L}from"../../lib/content/stock-words.js";import{tyreCartLine as z}from"../../lib/tyres/tyre-purchase.js";import{UNPRICED_LABEL as H,priceIn as $,resolveWheelPrice as P}from"../../lib/wheels/price-display.js";import{isOneWheelDesign as W,setLabel as V}from"../../lib/wheels/variants.js";import{splitWheelName as j}from"../../lib/wheels/wheel-name.js";import{CARD_TEXT_SIZE as S,CardButtonRow as y}from"./card-row.js";import{useHeroStateOrNull as q,useProductCardStateOrNull as I,useWheelCardState as F}from"./ProductCardState.js";const O="mt-3 flex flex-col gap-2",u=`cursor-pointer bg-btn px-4 py-3 font-mono ${S.labelSmall} font-bold uppercase tracking-[0.24em] text-btn-ink transition-colors hover:bg-fg`,G=`border border-btn px-4 py-3 text-center font-mono ${S.labelSmall} font-bold uppercase tracking-[0.24em] text-btn transition-colors hover:bg-btn hover:text-btn-ink`,K="View sizes & fitment",U="mt-3 block font-mono text-[length:var(--size-label,11px)] font-bold uppercase tracking-[0.18em] text-accent underline-offset-4 group-hover:underline";function M({wheel:e,sel:t,price:n,editing:r}){const{addAndOpen:i,warmCatalog:s}=A();h(()=>{r||s()},[r,s]);const{arm:c}=t;h(()=>{c()},[c]);function d(){const a=t.selectedVariant;!a||!t.canAdd||n.priced&&(r||i({id:`${e.slug}|${a.finishName}|${a.size}|quick`,slug:e.slug,name:j(e.name),process:e.process,positionNo:"01",config:[{label:a.size},{label:a.finishName,gold:!0},{label:V(a)}],finishName:a.finishName,size:a.size,components:a.components,qty:1}))}return o("button",{type:"button",onClick:d,[C]:"",disabled:!t.canAdd,className:t.canAdd?u:`${u} opacity-80`,children:"Add to basket"})}function X(e,t,n){return W(e)?t.outOfStock?"notify":t.unsellable||!n||t.detailState==="ready"&&!t.canAdd?"choose":"add":"choose"}function Q({state:e,buy:t,page:n}){const{wheel:r,sel:i,price:s,editing:c,setNotifyOpen:d}=e,a=x(),l=X(r,i,s.priced),f=t?l==="notify"?o("button",{type:"button",onClick:()=>d(!0),className:u,children:"Notify me when back"}):l==="add"?a?o(M,{wheel:r,sel:i,price:s,editing:c}):o(g,{className:u}):null:null,p=!n||f?null:b("span",{"aria-hidden":!0,className:U,children:[K," →"]});return o(y,{children:f||p?b("div",{className:O,children:[f,p]}):null})}function Y({state:e}){const{tyre:t,currency:n,pagePath:r,detail:i,variant:s,canAdd:c,detailReady:d,unsellable:a,editing:l}=e,{addAndOpen:f,warmCatalog:p}=A(),m=x();h(()=>{!l&&m&&p("tyre")},[l,m,p]);const N=P($(t.prices,n),null).priced;function D(){!i||!s||!c||l||f(z(i,s,_.choice,_.qty))}return o(y,{children:b("div",{className:O,children:[!a&&N&&!m&&o(g,{className:u}),!a&&N&&m&&o("button",{type:"button",onClick:D,[C]:"",disabled:d&&!c,className:c||!d?`${u}${c?"":" opacity-80"}`:`cursor-not-allowed border border-dashed border-accent/50 px-4 py-3 font-mono ${S.labelSmall} font-bold uppercase tracking-[0.24em] text-accent/70`,children:d&&!c?"Select a size":"Add to basket"}),r&&o(E,{href:r,className:G,children:"Open product page"})]})})}const Z="flex-1 px-6 py-4 font-mono text-[length:var(--size-label,14px)] font-bold uppercase tracking-[0.32em]",J="flex-1 cursor-not-allowed border-2 border-dashed border-fg-dim/20 px-6 py-4 font-mono text-[length:var(--size-label,14px)] font-bold uppercase tracking-[0.32em] text-fg-dim/40";function T(e,t){return!t||e.isSet&&!e.priced?"quote":e.priced?e.outOfStock?"outOfStock":"add":"unpriced"}function v({buy:e,takesOrders:t,add:n,take:r=R}){const i=T(e,t);return i==="quote"?o(g,{className:k("flex-1 cursor-pointer bg-btn px-6 py-4 text-center font-mono text-[length:var(--size-label,14px)] font-bold uppercase tracking-[0.32em] text-btn-ink transition-colors hover:bg-fg",r.className)??"",attrs:r.attrs}):i!=="add"?o("button",{type:"button",disabled:!0,"aria-disabled":!0,className:k(J,r.className),...r.attrs,children:i==="outOfStock"?L.outOfStock:H}):b("button",{type:"button",[C]:"",onClick:()=>{const s=e.lineToAdd();s&&n(s)},"aria-disabled":!e.canAdd,className:k([`${Z} transition-colors`,e.canAdd?"cursor-pointer bg-btn text-btn-ink hover:bg-fg hover:text-bg":"cursor-pointer border-2 border-dashed border-accent/50 text-accent/80 hover:border-accent hover:text-accent"].join(" "),r.className),style:e.canAdd?void 0:{background:"color-mix(in oklab, var(--accent) 6%, transparent)"},...r.attrs,children:["Add to Cart",e.totalLabel!=null?` · ${e.totalLabel}`:""]})}const ee=()=>{};function te({buy:e,take:t}){const{addAndOpen:n}=A();return o(v,{buy:e,takesOrders:!0,add:r=>n(r),take:t})}function re({buy:e}){const t=x(),n=B();return n.scope(T(e,t)==="add"?o(te,{buy:e,take:n}):o(v,{buy:e,takesOrders:t,add:ee,take:n}))}function ne({buy:e=!0,page:t=!0}){const n=q(),r=I();if(n)return n.buy?o(re,{buy:n.buy}):null;if(!r)throw new Error("A product card piece was drawn outside a product card (no ProductCardState).");return r.kind==="bundle"?o(y,{}):r.kind==="tyre"?o(Y,{state:r}):o(Q,{state:r,buy:e,page:t})}function Ce(){const{wheel:e,sel:t,editing:n,notifyOpen:r,setNotifyOpen:i}=F();return r?o(w,{wheelName:e.name,productSlug:e.slug,finishName:t.confirmedFinishName,variants:t.outOfStockVariants,initialSize:t.selectedVariant?.size,onClose:()=>i(!1),editing:n}):null}export{K as CARD_PAGE_WORDS,Ce as CardBuyDialog,v as HeroBuyButton,ne as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e}from"react/jsx-runtime";import{CARD_TEXT_SIZE as
|
|
1
|
+
"use client";import{jsx as e}from"react/jsx-runtime";import{HideTaker as n}from"efficient-web-builder/render/components/ViewHideRoot";import{CARD_TEXT_SIZE as l,CardRow as s,useCatalogCard as d}from"./card-row.js";import{RegionBridge as m,RegionWords as u,regionAttr as f}from"./card-text-region.js";function g({children:o,reserve:i=!1,region:r}){const t=d(),a=`font-mono ${l.label} uppercase text-accent ${t?"tracking-[0.3em]":"tracking-[0.25em]"}`,c=o?e(n,{...f(r,"eyebrow"),className:a,children:e(u,{region:r,at:"eyebrow",children:o})}):t&&i?e(n,{"aria-hidden":!0,className:a,children:" "}):null;return e(m,{region:r,sectionType:"ProductEyebrow",children:e(s,{children:c})})}export{g as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as a}from"react/jsx-runtime";import{
|
|
1
|
+
"use client";import{jsx as a}from"react/jsx-runtime";import{HideTaker as m}from"efficient-web-builder/render/components/ViewHideRoot";import{withRMark as l}from"efficient-web-builder/render/components/RMark";import{CARD_TEXT_SIZE as o,useCatalogCard as s}from"./card-row.js";import{useProductCardStateOrNull as c}from"./ProductCardState.js";import{RegionBridge as u,RegionWords as f,regionAttr as h}from"./card-text-region.js";function g({children:r,region:n,fixedHeight:d=!0}){const t=s(),e=c(),i=e?.kind==="wheel"?l(e.wheel.name):e?.kind==="bundle"?e.bundle.name:null;return r===void 0&&i===null&&process.env.NODE_ENV!=="production"&&console.warn("[CardName] no name given and no wheel card state: the name block is empty"),a(u,{region:n,sectionType:"ProductName",children:a(m,{...h(n,"name"),className:t&&!d?`font-heading3 ${o.headingSmall2} font-medium uppercase leading-none tracking-[-0.02em]`:t?`mt-2 h-[60px] overflow-hidden break-words [.sf-card-rows_&]:h-auto [.sf-card-rows_&]:max-h-[60px] font-heading3 ${o.headingSmall2} font-medium uppercase leading-none tracking-[-0.02em]`:`mt-2 font-heading3 ${o.headingSmall1} font-medium tracking-[-0.02em]`,children:a(f,{region:n,at:"name",children:r??i})})})}export{g as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as r,jsxs as c,Fragment as
|
|
1
|
+
"use client";import{jsx as r,jsxs as c,Fragment as P}from"react/jsx-runtime";import{formatPrice as k}from"../../lib/commerce.js";import{say as v}from"efficient-web-builder/format/lib/editor-words";import{HideTaker as u}from"efficient-web-builder/render/components/ViewHideRoot";import{setLabel as S}from"../../lib/wheels/variants.js";import{wheelCardPriceLine as p}from"../../lib/wheels/set-mode.js";import{EACH_UNIT as L,formatSelectionPrice as N,formatSelectionWasPrice as w,formatWheelPrice as f,formatWheelWasPrice as y,FROM_PREFIX as h,priceIn as T,resolveWheelPrice as g,SET_QUOTE_LABEL as _}from"../../lib/wheels/price-display.js";import{CARD_TEXT_SIZE as m,CardRow as x}from"./card-row.js";import{RegionBridge as C,RegionWords as E,regionAttr as R}from"./card-text-region.js";import{useHeroStateOrNull as W,useProductCardState as z}from"./ProductCardState.js";function B(e,n){if(e.kind==="tyre"){const d=g(T(e.tyre.prices,e.currency),null);return{was:null,amount:f(d,e.currency,h),note:d.priced?L:null}}const{wheel:i,currency:t,price:o,sel:l,isSet:b}=e,a=g(i.prices[t],i.msrpPrices?.[t]),s=n.setTotal&&o.priced&&o.setTotal!=null&&l.selectedVariant?`${S(l.selectedVariant)} · ${k(o.setTotal,t)}`:null;return b&&n.quoteSets?{was:null,amount:a.priced?p(f(a,t,h),!0):_,note:s}:{was:n.wasFollowsSize?w(o,t):y(a,t),amount:p(N(o,t),o.priced),note:s}}function F({state:e,region:n}){const i=c(u,{className:"flex items-baseline gap-5 border-t border-line pt-[18px]",children:[e.msrpLabel&&r("div",{className:"font-mono text-[length:var(--size-label,15px)] text-fg-dim line-through",children:e.msrpLabel}),r("div",{className:"font-heading2 text-[length:min(var(--size-headingMedium,36px),var(--sf-heading-max,9999px))] font-bold leading-none tracking-[-0.01em] text-fg",...R(n,"price"),children:r(E,{region:n,at:"price",children:e.amount})}),e.unitLabel&&r("div",{className:"font-mono text-[length:var(--size-label,13px)] font-semibold uppercase tracking-[0.22em] text-fg",children:e.unitLabel}),e.packBadge&&r("div",{className:"ml-auto border border-accent px-3 py-2 font-mono text-[length:var(--size-label,13px)] font-bold uppercase tracking-[0.18em] text-accent",style:{background:"color-mix(in oklab, var(--accent) 14%, transparent)"},children:e.packBadge})]});return r(C,{region:n,sectionType:"ProductPrice",children:i})}function $({show:e=!0,region:n,...i}){const t=W();return t?r(F,{state:t,region:n}):r(A,{show:e,...i})}function j({state:e,show:n}){return!n||e.bundle.inStock?null:r(u,{className:`mt-1 font-mono ${m.labelSmall} uppercase tracking-[0.24em] text-fg-dim`,children:v("Currently unavailable")})}function A({show:e=!0,...n}){const i=z();if(i.kind==="bundle")return r(j,{state:i,show:e});const{was:t,amount:o,note:l}=B(i,n);return c(P,{children:[r(x,{children:e?c("div",{className:`mt-2 font-mono ${m.labelLarge}`,children:[t&&r("span",{className:"mr-2 text-fg-dim line-through",children:t}),o]}):null}),r(x,{children:e&&l?r("div",{className:`mt-[2px] font-mono ${m.labelSmall} tracking-[0.08em] text-fg-dim`,children:l}):null})]})}export{$ as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as m,Fragment as
|
|
1
|
+
"use client";import{jsx as e,jsxs as m,Fragment as P}from"react/jsx-runtime";import k from"next/image";import{useState as H}from"react";import{HideTaker as v}from"efficient-web-builder/render/components/ViewHideRoot";import{CARD_INDEX_BADGE_CLASS as j,CARD_INDEX_CLASS as z,parseCardIndexFormat as X}from"efficient-web-builder/format/lib/sections/product-card-style";import{CARD_IMAGE_BG_OFF as B,cardImageBackgroundPaints as K,resolveCardImageBackground as D}from"efficient-web-builder/format/lib/content/card-image-background";import{cardImageShapeTokens as _}from"efficient-web-builder/format/lib/content/card-image-shape";import{sayCount as Z}from"efficient-web-builder/format/lib/editor-words";import{parseSetPicture as q,setSecondSrc as J}from"../../lib/wheels/set-mode.js";import{coverSrcForWheel as Q,parseCoverIndex as V,resolvePaintedSrc as Y}from"../../lib/wheels/cover-rendering.js";import ee from"../WheelPlaceholder.js";import{cardSpinOf as re}from"../card-spin.js";import{useGridCard as R}from"../GridCardTemplate.js";import T from"./CardPicture.js";import N from"./CardProductBadge.js";import{useHeldCardPicture as te}from"./useHeldCardPicture.js";import{useProductCardState as ne}from"./ProductCardState.js";const _e=["well","full"],ae="well",G=r=>r==="full"?"full":ae;function le({children:r}){return e("div",{className:"h-full w-full transition-transform duration-500 motion-safe:group-hover:scale-[1.03]",children:r})}function L({fill:r,badge:a,children:o}){const c=K(r);return m("div",{className:`sf-card-image relative aspect-[4/3] overflow-hidden${c?"":" bg-surface"}`,style:c?{backgroundColor:r}:void 0,children:[o,a]})}function ie(r){const a=ne();return a.kind==="bundle"?e(se,{state:a,...r}):a.kind!=="wheel"?null:e(oe,{state:a,...r})}function se({state:r,imageBackground:a,cardImage:o,showBadge:c,frame:w}){const{bundle:i}=r,{imageSizes:g}=R(),f=G(w)==="full",s=i.components.length,t=i.image?f?e(k,{alt:i.name,src:i.image,fill:!0,sizes:g,className:"object-cover",draggable:!1}):e(k,{alt:i.name,src:i.image,width:1e3,height:1e3,sizes:g,className:"block h-full w-full object-cover",draggable:!1}):e("div",{className:"flex h-full w-full items-center justify-center font-mono text-[length:var(--size-label,12px)] uppercase tracking-[0.3em] text-fg-dim",children:Z("{n} piece","{n} pieces",s,{})}),d=e(le,{children:t}),p=D(a,B),u=c!==!1?e(N,{edge:f}):null;return e(v,{style:_(o),children:f?e(L,{fill:p,badge:u,children:d}):m(P,{children:[u,e(T,{image:d,imageBackgroundFill:p})]})})}function oe({state:r,imageBackground:a,cardImage:o,coverIndex:c,indexBadge:w,showBadge:i,frame:g,setPicture:f}){const{wheel:s,sel:t,isSet:d}=r,{hover:p,imageSizes:u}=R(),C=re(p),M=Q(s,V(c),t.finish?.name,t.shownSrc),[A,O]=H(()=>new Set),E=n=>{t.pictureFailed(n),O(h=>h.has(n)?h:new Set(h).add(n))},y=Y({overrideSrc:M,hookSrc:t.shownSrc,failed:A}),F=(n,h)=>e(k,{alt:h,src:n,width:1e3,height:1e3,sizes:u,className:`block h-full w-full object-contain ${C.className}`,style:C.style,draggable:!1,onError:()=>E(n)},n),U=t.finish?`${s.name} — ${t.finish.name}`:s.name,S=d&&q(f)==="pair",W=S?J(s.finishes?.find(n=>n.name===t.finish?.name),y):null,l=te({src:y,second:W,alt:U,sizes:u,failed:A,onFailed:E,near:t.nearScreen,holdEmpty:t.awaitingProbe}),I=m(P,{children:[l.src?F(l.src,l.alt):e(ee,{imageLabel:s.name,spin:C}),l.trial]}),x=X(w),b=x!=="off",$=D(a,B);if(G(g)==="full"){const n=m(P,{children:[b?e("span",{"aria-hidden":!0,"data-format":x,className:`${z} ${j}`}):null,e(N,{show:i!==!1,numbered:b,axleSets:!0,edge:!0})]});return e(v,{style:_(o),"data-set-picture":d&&!S?"one":void 0,children:e(L,{fill:$,badge:n,children:m("div",{className:"flex h-full w-full items-center justify-center",children:[I,l.second?F(l.second,`${l.alt} — right`):null]})})})}return m(v,{style:_(o),"data-set-picture":d&&!S?"one":void 0,children:[b?e("span",{"aria-hidden":!0,"data-format":x,className:`${z} ${j}`}):null,e(N,{show:i!==!1,numbered:b,axleSets:!0}),e(T,{image:I,imageSecond:l.second?F(l.second,`${l.alt} — right`):void 0,wide:S,imageBackgroundFill:$})]})}export{ae as DEFAULT_PICTURE_FRAME,_e as PICTURE_FRAMES,ie as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as n,Fragment as m,jsxs as p}from"react/jsx-runtime";import{Fragment as x}from"react";import{
|
|
1
|
+
"use client";import{jsx as n,Fragment as m,jsxs as p}from"react/jsx-runtime";import{Fragment as x}from"react";import{HideTaker as u}from"efficient-web-builder/render/components/ViewHideRoot";import{applyCardAnswers as h}from"../../lib/content/field-usage.js";import{wheelCardSpecFacts as f}from"../../lib/wheels/plp-fitment-match.js";import{CARD_TEXT_SIZE as i,useCatalogCard as g}from"./card-row.js";import{useProductCardState as C}from"./ProductCardState.js";const S="whitespace-nowrap",_=t=>typeof t=="string"?t:t.text,w=/^(.*\S) (\+\d+ more)$/;function $(t,r="·"){return t.map((a,c)=>{const e=_(a),l=typeof a!="string"&&a.accent,o=`${S}${l?" text-accent":""}`,d=c<t.length-1?`${e} ${r}`:e,s=w.exec(e);return p(x,{children:[s?p(m,{children:[n("span",{className:o,children:s[1]})," ",n("span",{className:o,children:c<t.length-1?`${s[2]} ${r}`:s[2]})]}):n("span",{className:o,children:d}),c<t.length-1?" ":null]},e)})}function F({children:t}){const r=g();return n(u,{className:r?`mt-2 h-[38px] overflow-hidden [.sf-card-rows_&]:h-auto [.sf-card-rows_&]:max-h-[76px] font-mono ${i.labelLarge} leading-[19px] tracking-[0.14em] text-fg-dim`:`mt-[4px] font-mono ${i.labelLarge} tracking-[0.1em] text-fg-dim`,children:t})}function E({sizes:t=!1,car:r=null,separator:a,fieldUsage:c=[]}){const e=C();if(e.kind!=="wheel")return null;const l=h(f(e.wheel,r,{sizes:t}),c).map(o=>o.text);return n(m,{children:$(l,a)})}function L(t){return n(F,{children:n(E,{...t})})}export{S as CARD_SPEC_FIELD_CLASS,E as CardSpecFacts,F as CardSpecLine,$ as cardSpecFields,L as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{Fragment as
|
|
1
|
+
"use client";import{Fragment as i,jsx as r}from"react/jsx-runtime";import{say as l}from"efficient-web-builder/format/lib/editor-words";import{useHeroStateOrNull as m,useProductCardStateOrNull as n}from"./ProductCardState.js";import{HideTaker as u}from"efficient-web-builder/render/components/ViewHideRoot";function f({label:t,editing:e,onHero:a=!1,children:o}){const s=m();return n()||a&&s?r(i,{children:o}):e?r(u,{as:"div","data-host-part-sample":"",className:"opacity-60",children:l(t)}):null}export{f as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as t,Fragment as
|
|
1
|
+
"use client";import{jsx as t,Fragment as n}from"react/jsx-runtime";import{createContext as o,useContext as i}from"react";import{HideTaker as a}from"efficient-web-builder/render/components/ViewHideRoot";const u={headingSmall1:"text-[length:var(--size-headingSmall,22px)]",headingSmall2:"text-[length:var(--size-headingSmall,30px)]",labelSmall:"text-[length:var(--size-label,11px)]",label:"text-[length:var(--size-label,12px)]",labelLarge:"text-[length:var(--size-label,13px)]"},s=o("catalog");function x(){return i(s)==="catalog"}function l({children:e}){const r=x();return t(n,{children:e??(r?t(a,{"aria-hidden":!0}):null)})}function m({children:e}){return t(l,{children:e?t(a,{className:"relative z-10",children:e}):null})}function p({children:e}){return t(l,{children:e?t(a,{className:"relative z-10 [.sf-card-rows>*>&]:self-end",children:e}):null})}export{u as CARD_TEXT_SIZE,p as CardButtonRow,m as CardControlRow,s as CardLookContext,l as CardRow,x as useCatalogCard};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,Fragment as
|
|
1
|
+
"use client";import{jsx as e,Fragment as T,jsxs as L}from"react/jsx-runtime";import{CardTemplateRows as G}from"efficient-web-builder/render/components/CardRowContext";import{cardRow as K}from"efficient-web-builder/format/lib/content/card-template";import{say as O}from"efficient-web-builder/format/lib/editor-words";import{useCurrency as B}from"../CurrencyContext.js";import{formatPrice as I}from"../../lib/commerce.js";import{filterChipItems as Y,filterStateWithoutChip as j}from"../../lib/sections/filter-option-rows.js";import{PlpResultRange as R,PlpToolbar as S}from"../wheels-plp/PlpToolbar.js";import A from"./ClearAllButton.js";import b from"./SortSelect.js";import{hasActivePlpFilters as M,plpSortKeysFor as H,PLP_SORT_LABELS as U}from"../../lib/wheels/plp-filters.js";import{itemKind as W,plpKindNoun as X}from"../../lib/catalog/plp-item.js";import{CATALOG_TEXT_SIZE as Z}from"../../lib/sections/catalog-text-size.js";import{EMPTY_PLP_FILTERS as $}from"../../lib/wheels/plp-filters.js";import{GALLERY_SORT_KEYS as q,GALLERY_SORT_LABELS as z}from"../../lib/sections/gallery-toolbar.js";import{useShopperMember as D}from"./ShopperScope.js";import{HideTaker as y}from"efficient-web-builder/render/components/ViewHideRoot";const J="✕";function Q({owner:n,showCount:r,showClear:s,showSort:l,firstShown:t,editing:a}){const{ref:i,scope:o,gallery:f}=D("chips",null,{count:r,sort:l}),{currency:c}=B(),m=(!o?.live&&t?{state:o?.state??{...$,sort:t.sort},update:()=>{},clear:()=>{},total:t.total,range:t.range,kinds:t.kinds}:null)??(o?{...o,kinds:[...new Set(o.rows.map(W))]}:null);if(!m&&f)return e(y,{as:"div",ref:i,"data-shopper-chips":"",children:e(V,{owner:n,gallery:f,showCount:r,showClear:s,showSort:l,editing:a})});if(!m)return e(y,{as:"div",ref:i,"data-shopper-chips":"",children:a&&e("p",{className:`font-mono ${Z.labelSmall} uppercase tracking-[0.2em] text-fg-dim`,children:"Filter chips show the picks of a Filters block, or the Tags of a Gallery, in this Box"})});const{state:d,update:u,clear:_,total:p,range:x,kinds:h}=m,E=X(h.length?h:["alloy-wheel"]),P=M(d),C=Y(d,c,I).map(g=>({...g,mark:J,press:()=>u(N=>j(N,g))})),w=L(T,{children:[r&&e("div",{"data-shopper-count":"",className:"contents",children:e(R,{total:p,range:x??{from:p?1:0,to:p},noun:E})}),C.length>0&&e(v,{owner:n,chips:C,editing:a}),s&&P&&e(A,{onClick:_})]}),F=H(h.length?h:["alloy-wheel"]);return e(y,{as:"div",ref:i,"data-shopper-chips":"",children:e(S,{start:w,end:l?e(b,{value:d.sort,keys:F,labels:U,onChange:g=>u({sort:g,page:1})}):void 0})})}function v({owner:n,chips:r,selected:s,editing:l}){return e("ul",{className:"flex list-none flex-wrap items-center gap-2",children:e(G,{ownerId:n.id,ownerType:"FilterChipsBlock",Template:n.template,rows:r.map(K),items:r,states:s===void 0?void 0:r.map((t,a)=>a===s?{selected:!0}:void 0),actions:l?void 0:r.map(t=>({press:t.press})),fallback:null,wrapCopy:t=>e("li",{children:t}),children:t=>t})})}function V({owner:n,gallery:r,showCount:s,showClear:l,showSort:t,editing:a}){const{tags:i,tag:o,sort:f,shown:c,pick:k,setSort:m,clear:d}=r,u=[{label:O("All"),mark:"",press:()=>k(null)},...i.map(p=>({label:p,mark:"",press:()=>k(p)}))],_=L(T,{children:[s&&e("div",{"data-shopper-count":"",className:"contents",children:e(R,{total:c,range:{from:c?1:0,to:c},noun:ee})}),i.length>0&&e(v,{owner:n,chips:u,selected:o===null?0:i.indexOf(o)+1,editing:a}),l&&o!==null&&e(A,{onClick:d})]});return e(S,{start:_,end:t?e(b,{value:f,keys:q,labels:z,onChange:m}):void 0})}const ee={many:"items"};export{Q as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as l,Fragment as G,jsxs as d}from"react/jsx-runtime";import{useCallback as K,useMemo as F,useState as z}from"react";import{say as W}from"efficient-web-builder/format/lib/editor-words";import{CardTemplateRows as ee}from"efficient-web-builder/render/components/CardRowContext";import{cardRow as le}from"efficient-web-builder/format/lib/content/card-template";import{useCurrency as
|
|
1
|
+
"use client";import{jsx as l,Fragment as G,jsxs as d}from"react/jsx-runtime";import{useCallback as K,useMemo as F,useState as z}from"react";import{say as W}from"efficient-web-builder/format/lib/editor-words";import{CardTemplateRows as ee}from"efficient-web-builder/render/components/CardRowContext";import{cardRow as le}from"efficient-web-builder/format/lib/content/card-template";import{useCurrency as re}from"../CurrencyContext.js";import{useEnglish as te}from"../EnglishVariant.js";import ne from"./ClearAllButton.js";import se from"./PriceRange.js";import oe from"./SortSelect.js";import{DEFAULT_CATALOG_FILTER_LABELS as H}from"../../lib/content/catalog-filter-labels.js";import{itemKind as U}from"../../lib/catalog/plp-item.js";import{itemLugs as ie,lugFilterLabel as ae}from"../../lib/wheels/lug-count.js";import{CATALOG_TEXT_SIZE as L}from"../../lib/sections/catalog-text-size.js";import{buildPlpFacets as ce,itemMatchesPlp as pe,plpInStockCount as ue,plpPriceBounds as me,plpSortKeysFor as de,PLP_ONE_VALUE_MAX as fe,PLP_SORT_LABELS as ge}from"../../lib/wheels/plp-filters.js";import{FILTER_IN_STOCK_KEY as he,FILTER_PRICE_KEY as T,filterGroupItems as Se}from"../../lib/sections/filter-option-rows.js";import{hasActivePlpFilters as xe}from"../../lib/wheels/plp-filters.js";import{FilterPill as be,PillButton as we}from"./FilterPill.js";import{useShopperFilter as ye}from"./ShopperScope.js";import{HideTaker as ke}from"efficient-web-builder/render/components/ViewHideRoot";const X="lugs";function Ne({owner:t,look:e,lookPhone:n,shown:s,showSort:a,openingSort:i,filtersBelow:r,fieldUsage:p,firstRows:b,editing:N}){const{currency:u}=re(),M=te(),{ref:V,scope:f}=ye({filtersBelow:r,openingSort:i}),{state:g}=f,h=f.live?f.rows:b??f.rows,w=F(()=>[...new Set(h.map(U))],[h]),A=F(()=>{const c=ce(h,g,u,w,p??[],"pass").filter(o=>o.key!=="collections"||s.includes("category"));if(s.includes("lugs")){const o=ve(h,g,u);o&&c.push(o)}return c.map(o=>({...o,label:M(o.label)}))},[h,g,u,w,p,s,M]),I=s.includes("price")?me(h,u):null,P=s.includes("inStock")&&h.length>0?ue(h,g,u):null,Z=de(w.length?w:["alloy-wheel"]),y=f.update,v=K(c=>y({...c,page:1}),[y]),B=K((c,o)=>y(m=>{if(c===X){const x=Number(o),J=(m.lugs??[]).includes(x);return{...m,page:1,lugs:J?(m.lugs??[]).filter(Q=>Q!==x):[...m.lugs??[],x]}}const _=m[c].map(String),j=_.includes(o)?_.filter(x=>x!==o):[..._,o];return{...m,page:1,[c]:c==="diameters"?j.map(Number):j}}),[y]),$=a&&!f.sortInChips,q=F(()=>{const c=Se(A,g,P).map(o=>({...o,options:o.options.map(m=>({...m,press:o.key===he?()=>v({inStockOnly:!g.inStockOnly}):()=>B(o.key,m.value)}))}));return I?[...c,{key:T,label:H.price,options:[]}]:c},[A,g,P,I,v,B]),S={owner:t,items:q,state:g,sorts:Z,showSort:$,set:v,clear:f.clear},O=e==="rail"?l(D,{...S}):l(E,{...S,columns:e==="bar-columns"}),R=(n==="rail"?e==="rail":n==="bar"&&e!=="rail")?null:n==="button"?l(_e,{...S}):n==="rail"?l(D,{...S}):l(E,{...S,columns:!1});return d(ke,{as:"div",ref:V,"data-shopper-filters":"",className:"w-full",children:[R?d(G,{children:[l("div",{className:"max-view-wide:hidden",children:O}),l("div",{className:"view-wide:hidden",children:R})]}):O,N&&f.grids===0&&l("p",{className:`mt-2 font-mono ${L.labelSmall} uppercase tracking-[0.2em] text-fg-dim`,children:"Filters a Product Grid in this Box"})]})}function ve(t,e,n){const s=new Map,a=new Set;for(const r of t){const p=U(r)==="alloy-wheel"?ie(r):null;p!==null&&(a.add(p),pe(r,e,n,"lugs","pass")&&s.set(p,(s.get(p)??0)+1))}if(a.size<=fe)return null;const i=e.lugs??[];return{key:X,label:H.lugs,options:[...a].sort((r,p)=>r-p).map(r=>({value:String(r),label:ae(r),count:s.get(r)??0,checked:i.includes(r),swatch:null}))}}function k({state:t,sorts:e,set:n}){return l(oe,{value:t.sort,keys:e,labels:ge,onChange:s=>n({sort:s})})}function Y(t,e){return t.key===T?(e.priceMin!=null?1:0)+(e.priceMax!=null?1:0):t.options.filter(n=>n.state.selected).length}function C({owner:t,items:e,state:n,set:s,wrap:a}){const i=(r,p)=>{const b=e[p.index],N=b.key===T?d(G,{children:[r,l(se,{min:n.priceMin,max:n.priceMax,onMin:u=>s({priceMin:u}),onMax:u=>s({priceMax:u})})]}):r;return a(N,b)};return l(ee,{ownerId:t.id,ownerType:"FilterBlock",Template:t.template,rows:e.map(le),items:e,fallback:null,wrapCopy:i,children:r=>r})}function E({columns:t,...e}){const[n,s]=z(null),a=i=>()=>s(r=>r===i?null:i);return t?d("div",{className:"flex flex-col gap-4",children:[l("div",{className:"grid grid-cols-[repeat(auto-fit,minmax(200px,1fr))] gap-6 border-y border-line py-4",children:l(C,{...e,wrap:(i,r)=>l("div",{children:i},r.key)})}),e.showSort&&l("div",{className:"flex flex-wrap items-center justify-end gap-4",children:l(k,{...e})})]}):d("div",{className:"flex flex-wrap items-center gap-2",children:[l(C,{...e,wrap:(i,r)=>l(be,{labelSize:L.labelSmall,name:r.key,label:r.label,badge:Y(r,e.state),open:n===r.key,onToggle:a(r.key),children:i},r.key)}),e.showSort&&l("div",{className:"ml-auto",children:l(k,{...e})})]})}function D(t){return d("aside",{className:"flex w-full flex-col gap-4 lg:w-[268px]",children:[d("div",{className:"flex items-center justify-between",children:[l("h2",{className:"font-display text-[18px] font-medium uppercase tracking-[-0.01em]",children:W("Filter")}),xe(t.state)&&l(ne,{onClick:t.clear})]}),l("div",{className:"flex flex-col",children:l(C,{...t,wrap:(e,n)=>l("div",{className:"border-t border-line py-4",children:e},n.key)})}),t.showSort&&l(k,{...t})]})}function _e(t){const[e,n]=z(!1),s=t.items.reduce((a,i)=>a+Y(i,t.state),0);return d("div",{className:"flex flex-col gap-4",children:[d("div",{className:"flex items-center justify-between gap-4",children:[l(we,{labelSize:L.labelSmall,label:"Filters",badge:s,open:e,onToggle:()=>n(a=>!a)}),t.showSort&&l(k,{...t})]}),e&&l(E,{...t,columns:!0,showSort:!1})]})}export{Ne as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as s,jsxs as
|
|
1
|
+
"use client";import{jsx as s,jsxs as p}from"react/jsx-runtime";import{PickerField as t}from"./PickerField.js";import{vehicleLevelStates as b}from"./vehicle-level-state.js";import{VEHICLE_FIELD_LABEL as a}from"../../lib/wheels/vehicle-field-focus.js";import{HideTaker as g}from"efficient-web-builder/render/components/ViewHideRoot";const u={1:"grid-cols-1",2:"grid-cols-2",3:"grid-cols-3",4:"grid-cols-4"},f={1:"max-view-tablet:grid-cols-1",2:"max-view-tablet:grid-cols-2",3:"max-view-tablet:grid-cols-3",4:"max-view-tablet:grid-cols-4"},c=e=>e===1||e===2||e===3||e===4?e:void 0;function h(e,i,r){const d=c(i),n=c(r);if(d===void 0&&n===void 0)return e?"grid-cols-1 @min-[20rem]:grid-cols-2 @min-[39rem]:grid-cols-4":"grid-cols-4 max-view-desktop:grid-cols-2 max-[700px]:grid-cols-1";const l=d!==void 0?u[d]:e?"grid-cols-1 @min-[20rem]:grid-cols-2 @min-[39rem]:grid-cols-4":"grid-cols-4 max-view-desktop:grid-cols-2";return n!==void 0?`${l} ${f[n]}`:l}function x({cascade:e,compact:i=!1,editing:r=!1,columns:d,columnsPhone:n}){const{vehicle:l}=e,o=b(e),m=p(g,{className:["grid gap-[2px] border border-line bg-line",h(i,d,n)].join(" "),children:[s(t,{label:a.make,placeholder:o.make.placeholder,disabled:o.make.disabled,value:l.make,options:e.makeOptions,onChange:e.setMake,compact:i,editing:r}),s(t,{label:a.model,placeholder:o.model.placeholder,disabled:o.model.disabled,value:l.model,options:e.modelOptions,onChange:e.setModel,compact:i,editing:r}),s(t,{label:a.year,placeholder:o.year.placeholder,disabled:o.year.disabled,value:l.year!==null?String(l.year):"",options:e.yearOptions,onChange:e.setYear,compact:i,editing:r}),s(t,{label:a.trim,placeholder:o.trim.placeholder,disabled:o.trim.disabled,value:l.modification,options:e.modOptions,onChange:e.setModification,compact:i,editing:r})]});return i?s(g,{className:"@container",children:m}):m}export{x as default,h as pickerGridColumns};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as l,jsxs as
|
|
1
|
+
"use client";import{jsx as l,jsxs as a}from"react/jsx-runtime";import{HideTaker as s}from"efficient-web-builder/render/components/ViewHideRoot";const t={body:"text-[length:var(--size-body,17px)]",labelSmall:"text-[length:var(--size-label,11px)]",labelLarge:"text-[length:var(--size-label,13px)]"};function i({loading:o,error:n,data:e}){return o?l(s,{className:`mt-10 border border-line bg-bg p-6 font-mono ${t.labelLarge} uppercase tracking-[0.24em] text-fg-dim`,children:"Loading stock fitment…"}):n?a(s,{className:`mt-10 border border-line bg-bg p-6 font-mono ${t.labelLarge} uppercase tracking-[0.22em] text-fg-dim`,children:["Couldn't load stock fitment — ",l("span",{className:"text-accent",children:n})]}):e?a(s,{className:"mt-10 grid grid-cols-4 gap-[2px] border border-line bg-line max-view-desktop:grid-cols-2 max-[700px]:grid-cols-1",children:[l(r,{label:"Bolt pattern",value:e.boltPattern??"—"}),l(r,{label:"PCD",value:e.pcd??"—"}),l(r,{label:"Hub bore",value:e.centreBore?`${e.centreBore} mm`:"—"}),l(r,{label:"ET range",value:e.etRange&&e.etRange.length===2?`${e.etRange[0]} – ${e.etRange[1]}`:"—"}),l(r,{label:"OEM front",value:e.frontWheels.length?e.frontWheels.join(" · "):"—"}),l(r,{label:"OEM rear",value:e.rearWheels.length?e.rearWheels.join(" · "):"—"}),l(r,{label:"OEM front tyres",value:e.frontTyres.length?e.frontTyres.join(" · "):"—"}),l(r,{label:"OEM rear tyres",value:e.rearTyres.length?e.rearTyres.join(" · "):"—"})]}):null}function r({label:o,value:n}){return a("div",{className:"flex min-h-[96px] flex-col gap-2 bg-bg px-5 py-5",children:[l("span",{className:`font-mono ${t.labelSmall} uppercase tracking-[0.26em] text-fg-dim`,children:o}),l("span",{className:`mt-auto font-display ${t.body} font-medium tracking-[-0.01em] text-fg`,children:n})]})}export{i as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e}from"react/jsx-runtime";import{useSyncExternalStore as c}from"react";import{say as m}from"efficient-web-builder/format/lib/editor-words";import
|
|
1
|
+
"use client";import{jsx as e}from"react/jsx-runtime";import{useSyncExternalStore as c}from"react";import{say as m}from"efficient-web-builder/format/lib/editor-words";import{HideTaker as l}from"efficient-web-builder/render/components/ViewHideRoot";import w from"./StockFitmentCard.js";import{fitmentAnswerFor as S}from"./fitment-answer-source.js";import u from"../TyreFitVerdicts.js";import{useTyreFitAnswer as k}from"../useTyreFitAnswer.js";import{useSampleProduct as A}from"../pdp-dynamic/useSampleProduct.js";import{useCurrentProduct as F}from"../../lib/document/current-product.js";import{tyreFitQuery as v,unknownAnswer as N}from"../../lib/tyres/tyre-vehicle-fitment.js";import{storefrontVehicleMemory as i}from"../../lib/wheels/vehicle-memory.js";const x=()=>null,b=()=>null,C=N({make:"",model:"",year:0,modification:""});function O({product:o,editing:r=!1,label:s=""}){const n=S(o),a=c(i.subscribeStock,i.readStock,x),p=c(i.subscribe,i.read,b),t=n.source==="tyreVerdicts"?n:null,{answer:d,loading:f,retry:y}=k(t?.slug??"",t&&!r?v(p?.vehicle):null),h=r?e(l,{"data-host-part-sample":"",className:"opacity-60",children:m(s)}):null;return t?r?e(l,{"data-host-part-sample":"",className:"opacity-60",children:e(u,{variants:t.variants,answer:C,headline:m("A sample. On the live page each size shows its own verdict for the shopper's car.")})}):e(u,{variants:t.variants,answer:d,loading:f,onRetry:y}):a?e(w,{loading:a.loading,error:a.error,data:a.stock}):h}function P({editing:o=!1,label:r=""}){const s=F(),n=A(o&&!s);return O({product:s?.product??n,editing:o,label:r})}export{P as default,O as useFitmentAnswerView};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ProductKind } from "../../lib/api/index.js";
|
|
2
|
+
import type { EuTyreLabel } from "../../lib/tyres/eu-tyre-label.js";
|
|
2
3
|
export declare const supportedKinds: readonly ProductKind[];
|
|
3
4
|
interface Props {
|
|
4
5
|
num?: string;
|
|
@@ -8,4 +9,7 @@ export default function DynamicEuTyreLabel(props: Props): import("react").JSX.El
|
|
|
8
9
|
export declare function DynamicEuTyreLabelBlock({ editing }: {
|
|
9
10
|
editing?: boolean;
|
|
10
11
|
}): import("react").JSX.Element;
|
|
12
|
+
export declare function EuTyreLabelBlockGrades({ labels }: {
|
|
13
|
+
labels: EuTyreLabel[];
|
|
14
|
+
}): import("react").JSX.Element;
|
|
11
15
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as r}from"react/jsx-runtime";import c,{EU_LABEL_BAND as m,EuTyreLabelGrades as d}from"../EuTyreLabels.js";import p from"../SectionBand.js";import a from"./KindGate.js";import{useEuTyreLabels as f}from"../useEuTyreLabels.js";import{useCurrentProduct as y}from"../../lib/document/current-product.js";import{useSampleProduct as b}from"./useSampleProduct.js";import{say as E}from"efficient-web-builder/format/lib/editor-words";const
|
|
1
|
+
"use client";import{jsx as r}from"react/jsx-runtime";import c,{EU_LABEL_BAND as m,EuTyreLabelGrades as d}from"../EuTyreLabels.js";import p from"../SectionBand.js";import a from"./KindGate.js";import{useEuTyreLabels as f}from"../useEuTyreLabels.js";import{useCurrentProduct as y}from"../../lib/document/current-product.js";import{useSampleProduct as b}from"./useSampleProduct.js";import{say as E}from"efficient-web-builder/format/lib/editor-words";import{HideTaker as L,usePeekViewHide as T}from"efficient-web-builder/render/components/ViewHideRoot";const i=["tyre"];function h(e){return r(a,{kinds:i,type:"EuTyreLabel",editing:e.editing,children:r(x,{...e})})}function x({num:e,editing:t=!1}){const n=s(t);return n.length===0&&t?r(p,{className:m,children:r(l,{})}):r(c,{labels:n,num:e??"",capped:!1})}function j({editing:e=!1}){return r(a,{kinds:i,type:"EuTyreLabel",editing:e,children:r(g,{editing:e})})}function g({editing:e}){const t=s(e);return t.length===0?e?r(l,{}):null:r(k,{labels:t})}function k({labels:e}){return r(d,{labels:e,viewHide:T()})}function s(e){const t=y(),n=b(e&&!t),o=t?.product??n,u=o?.kind==="tyre"?o.source.variants:[];return f(u)}function l(){return r(L,{as:"p",className:"font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.18em] text-fg-dim",children:E("The EU label appears here for every size with an EPREL registration number. It is read live from the registry and never stored.")})}export{j as DynamicEuTyreLabelBlock,k as EuTyreLabelBlockGrades,h as default,i as supportedKinds};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as t,jsxs as E}from"react/jsx-runtime";import
|
|
1
|
+
"use client";import{jsx as t,jsxs as E}from"react/jsx-runtime";import B from"efficient-web-builder/render/components/Btn";import C,{GALLERY_GRID_ATTR as j,GalleryLinksContext as D}from"../GalleryItem.js";import{SharedPartKinds as F}from"efficient-web-builder/render/components/PublishedPartStylesContext";import{renderHeadline as K}from"efficient-web-builder/render/components/goldPhrases";import U from"efficient-web-builder/render/components/SectionHeader";import Z from"./KindGate.js";import $ from"./RecordPhotoGallery.js";import{headIsEmpty as z,ownPadding as V}from"../../lib/sections/own-padding.js";import{PLP_KINDS as W}from"../../lib/catalog/plp-item.js";import{useCurrentProduct as X}from"../../lib/document/current-product.js";import{SAMPLE_PICTURE_COUNT as S,SAMPLE_RECORD as Y,recordPictures as q,useCurrentRecord as J,useDrawsOtherRecord as Q}from"../../lib/document/current-record.js";import{mediaGroupVehicle as ee}from"../../lib/content/source-values.js";import{useSampleProduct as re}from"./useSampleProduct.js";import{say as _}from"efficient-web-builder/format/lib/editor-words";import{resolveGalleryLayout as te}from"efficient-web-builder/format/lib/content/gallery-layout";import{HideTaker as T}from"efficient-web-builder/render/components/ViewHideRoot";const ie=W,O=["photos","lifestyle","accessories","others"];function oe(e,o){if(!e)return[];if(o==="all")return O.flatMap(s=>e[s]??[]);const r=O.includes(o)?o:null;return r?e[r]??[]:[]}const k="relative z-[2] bg-bg py-[120px] max-view-wide:py-[70px]",H="relative z-[2] bg-bg pt-0 pb-[120px] max-view-wide:pt-0 max-view-wide:pb-[70px]",L="mx-auto max-w-[var(--sf-site-width,1600px)] px-[var(--sf-site-gutter,40px)] max-view-wide:px-[min(20px,var(--sf-site-gutter,40px))]";function ae(e){return Q(!!e.editing)?t(se,{...e}):t(Z,{kinds:ie,type:"GalleryB",editing:e.editing,children:t(ne,{...e})})}function se(e){const{editing:o=!1}=e,r=J(),s=r?q(r,{firstField:!0}).map(a=>({images:[a.url],eyebrow:a.alt&&a.alt!==r.title?a.alt:void 0,...a.video?{video:a.video}:{}})):o?Array.from({length:S},()=>({images:[""]})):[];return t(R,{...e,tiles:s,owner:{name:(r??Y).title},photosOnly:!0,emptyHint:_("This record’s pictures appear here on its page. A record with no pictures draws nothing.")})}function _e(e){const{rows:o,limit:r,layout:s,editing:a=!1,title:u}=e,d=typeof r=="number"&&r>0?Math.floor(r):void 0,h=o.filter(n=>typeof n.cover=="string"&&n.cover).map(n=>({images:[n.cover],...n.video?{video:n.video}:{}})),c=a&&h.length===0?Array.from({length:d??S},()=>({images:[""]})):h;return t(R,{...e,tiles:d?c.slice(0,d):c,owner:{name:(u??"").replace(/==/g,"").trim()},photosOnly:!0,tilesAcross:te(s)?.across===3?3:4,emptyHint:_("The website’s pictures appear here, in the order they are put in. A website with no pictures draws nothing.")})}function ne({omitHead:e=!1,num:o,title:r,linkText:s,linkHref:a,galleryHref:u="/gallery",submitHref:d="/contact",zone:h="all",photoDisplay:c="covers",previewHover:n,display:b,displayPhone:g,styleOwner:v,editing:p=!1,padTop:G,padBottom:x}){const w=X(),N=re(p&&!w),f=w?.product??N,y=oe(f?.mediaGroups,h).map(i=>({images:(i.items??[]).filter(m=>m.kind==="image").map(m=>m.url),vehicle:ee(i),finish:i.finish})).filter(i=>i.images.length>0),P=(c==="auto"?y.length>=4?"covers":"all":c)==="all"?y.flatMap(i=>i.images.map(m=>({images:[m],vehicle:i.vehicle,finish:i.finish}))):y;return t(R,{omitHead:e,num:o,title:r,linkText:s,linkHref:a,galleryHref:u,submitHref:d,previewHover:n,display:b,displayPhone:g,styleOwner:v,editing:p,padTop:G,padBottom:x,tiles:f?P.map(i=>({images:i.images,eyebrow:i.vehicle||void 0,meta:i.finish})):[],owner:{name:f?.name??"",href:f?.href,process:f?.eyebrow},emptyHint:_("This product’s photos appear here on a product page. Add media groups in the product’s Media tab.")})}function R({omitHead:e=!1,num:o,title:r,linkText:s,linkHref:a,galleryHref:u="/gallery",submitHref:d="/contact",previewHover:h,display:c,displayPhone:n,styleOwner:b,editing:g=!1,tiles:v,owner:p,emptyHint:G,photosOnly:x=!1,tilesAcross:w,padTop:N,padBottom:f}){const y=s?{text:s,href:a||"#"}:void 0,A=r?K(r,!1):void 0,P=e?null:t(U,{num:o,title:A,link:y}),i=!g&&z(o,r,y?.text)?null:P,m=V(N,f);return v.length===0?g?t(T,{as:"section",className:e?H:k,style:m,children:E("div",{className:L,children:[i,t("p",{className:"mt-8 border-t border-line py-6 font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.18em] text-fg-dim",children:G})]})}):null:t(T,{as:"section",className:e?H:k,style:m,children:E("div",{className:L,children:[i,x?t($,{pictures:v.map(l=>({url:l.images[0]??"",alt:l.eyebrow,video:l.video})),name:p.name,editing:g,...w?{fit:"tiles",across:w}:{}}):t(D.Provider,{value:{galleryHref:u,submitHref:d,previewHover:h,display:c,displayPhone:n,styleOwner:b,photosOnly:x},children:t(F,{children:t("div",{[j]:"",className:"grid grid-cols-4 gap-2 max-[1500px]:grid-cols-3 max-view-wide:grid-cols-1 max-view-wide:gap-1",children:v.map((l,M)=>t(C,{image:l.images[0],photos:l.images.slice(1).map(I=>({src:I})),href:p.href,process:p.process,eyebrow:l.eyebrow,name:p.name,meta:l.meta,editing:g},`${l.eyebrow}-${M}`))})})}),!x&&t("div",{className:"mt-12 flex flex-col items-center gap-3",children:t(B,{href:u,variant:"ghost",children:"See Gallery"})})]})})}export{_e as SourcedGalleryGrid,ae as default,ie as supportedKinds};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as
|
|
1
|
+
"use client";import{jsx as o,Fragment as m,jsxs as c}from"react/jsx-runtime";import l from"../ProductGallery.js";import a from"../ProductLightbox.js";import{SECTION_NOTICE_TEXT_CLASS as p}from"../SectionNotice.js";import{heroView as d}from"../product-hero/hero-view.js";import{useRootIsDark as f}from"efficient-shell/theme";import{useLightbox as g}from"../useLightbox.js";import{useProductSelection as x}from"../useProductSelection.js";import{useCurrentProduct as h}from"../../lib/document/current-product.js";import{say as L}from"efficient-web-builder/format/lib/editor-words";import{useSampleProduct as S}from"./useSampleProduct.js";import{HideTaker as b}from"efficient-web-builder/render/components/ViewHideRoot";function y({editing:r=!1,...t}){const e=h();return e?o(n,{product:e.product,selection:e.selection,onLightbox:e.openLightbox,editing:r,...t}):r?o(I,{...t}):null}function n({product:r,selection:t,onLightbox:e,editing:i,...s}){const u=!f({whenUnset:!0});return o(l,{product:r,view:d(r,t,i),angleIdx:t.angleIdx,onSelect:t.setAngleIdx,isLight:u,onLightbox:e,...s,takesViewHide:!0})}function I(r){const t=S(!0);return t?o(P,{product:t,...r}):o(b,{as:"p",className:p,children:L("Loading sample product…")})}function P({product:r,...t}){const e=x(r,{editing:!0}),i=g();return c(m,{children:[o(n,{product:r,selection:e,onLightbox:i.open,editing:!0,...t}),o(a,{item:i.item,onClose:i.close})]})}export{y as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e}from"react/jsx-runtime";import{useBoundForm as
|
|
1
|
+
"use client";import{jsx as e}from"react/jsx-runtime";import{useBoundForm as p,useFormSubmission as S}from"../formSubmission.js";import h from"efficient-web-builder/render/components/SectionHeader";import{SubmitFormColumn as x}from"./SubmitRegions.js";import{submitKindStyle as y}from"../../lib/submit/text-kinds.js";import{HideTaker as m}from"efficient-web-builder/render/components/ViewHideRoot";const M=["head","form"],N={head:"Head",form:"Form"};function F({region:i,eyebrow:n,title:u,body:d,buttonText:f,consent:l,formSlug:t,form:a,editing:r=!1,...c}){const o=p(t,a),b=S({form:o,formSlug:t,editing:r}),s=y(c);return i==="head"?e(m,{as:"div",style:s,children:e(h,{look:"statement",num:n,title:u})}):e(m,{as:"div",style:s,children:e(x,{body:d??"",buttonLabel:f??"",consent:l??"",form:o,submission:b,showForm:!!o||r,resolving:o===void 0,editing:r})})}export{M as SUBMIT_REGIONS,N as SUBMIT_REGION_NAMES,F as default};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type SourceRow } from "efficient-web-builder/format/lib/content/block-sources";
|
|
2
|
+
export interface ServedRowLists<T> {
|
|
3
|
+
byKey: Map<string, T>;
|
|
4
|
+
byIndex: T[];
|
|
5
|
+
}
|
|
6
|
+
export declare function servedRowLists<T>(props: Record<string, unknown>, read: (row: Record<string, unknown>) => T): ServedRowLists<T>;
|
|
7
|
+
export declare function servedListOf<T>(lists: ServedRowLists<T> | null, row: SourceRow, index: number): T | undefined;
|
|
8
|
+
export declare function servedWords(value: unknown, max: number): readonly string[] | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{BLOCK_SOURCE_ROWS_PROP as c}from"efficient-web-builder/format/lib/content/block-sources";function d(e,t){const n=e[c],r=new Map,s=[];if(!Array.isArray(n))return{byKey:r,byIndex:s};for(const i of n){if(!i||typeof i!="object"||Array.isArray(i))continue;const o=i;if(!Object.values(o).some(y=>typeof y=="string"&&y))continue;const f=t(o);s.push(f),typeof o.key=="string"&&o.key&&r.set(o.key,f)}return{byKey:r,byIndex:s}}function p(e,t,n){if(e)return t.key?e.byKey.get(t.key):e.byIndex[n]}function a(e,t){if(!Array.isArray(e))return;const n=e.filter(r=>typeof r=="string"&&!!r.trim()).map(r=>r.trim()).slice(0,t);return n.length?n:void 0}export{p as servedListOf,d as servedRowLists,a as servedWords};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{Fragment as f,jsx as l}from"react/jsx-runtime";import{phoneKey as g}from"efficient-easel/draw";import H,{SourcedGalleryGrid as T}from"../../../../../components/pdp-dynamic/DynamicGalleryGrid.js";import{declaredBlockSource as k,sourcedRows as B}from"efficient-web-builder/format/lib/content/block-sources";import y from"../../../../../components/GalleryGrid.js";import{PRODUCT_PICTURES_SOURCE as h,productPictureTiles as x,productPicturesLayout as P}from"../../../../sections/product-pictures.js";import{hidableText as a}from"efficient-easel/screen/lib/document/hidable";import{parseSectionHeadPlacement as w}from"efficient-web-builder/format/lib/sections/section-head-placement";import{phHide as i}from"efficient-web-builder/render/lib/document/blocks/scaffold";import{GalleryBMeta as b,GALLERY_B_PH as n}from"./meta.js";const M={...b,render:e=>{const o=w(e.headPlacement)==="own-box",t=d=>o?void 0:d,u={num:t(i(e.num,n.num,e.editor)),title:t(i(e.title,n.title,e.editor)),omitHead:o,linkText:t(i(e.linkText,n.link,e.editor)),linkHref:t(a(e.linkHref)||"/contact"),galleryHref:a(e.galleryHref)||"/gallery",previewHover:e.previewHover,display:e.display,displayPhone:e.displayPhone,styleOwner:e.id,layout:e.layout,columns:e.columns,columnsMobile:e.columnsMobile,gap:e.gap,gapPhone:e[g("gap")],padTop:typeof e.padTop=="number"?e.padTop:void 0,padBottom:typeof e.padBottom=="number"?e.padBottom:void 0,editing:e.editor?.isEditing},r=k(e);if(r===h){const d=!!e.editor?.isEditing,m=x(e,d,e.limit);return!d&&m.length===0?l(f,{}):l(y,{...u,layout:P(e),sourced:m})}if(r!==""){const d=!!e.editor?.isEditing,{rows:m,sample:c}=B(e,d);return l(T,{num:t(i(e.num,n.num,e.editor)),title:t(i(e.title,n.title,e.editor)),linkText:t(i(e.linkText,n.link,e.editor)),linkHref:t(a(e.linkHref)||"/contact"),omitHead:o,rows:c?[]:m,limit:e.limit,layout:e.layout,editing:d,padTop:typeof e.padTop=="number"?e.padTop:void 0,padBottom:typeof e.padBottom=="number"?e.padBottom:void 0})}return e.dynamic?l(H,{num:t(i(e.num,n.num,e.editor)),title:t(i(e.title,n.title,e.editor)),linkText:t(i(e.linkText,n.link,e.editor)),linkHref:t(a(e.linkHref)||"/contact"),omitHead:o,galleryHref:a(e.galleryHref)||"/gallery",zone:e.mediaZone||"all",photoDisplay:e.photoDisplay||"covers",previewHover:e.previewHover,display:e.display,displayPhone:e.displayPhone,styleOwner:e.id,editing:e.editor?.isEditing,padTop:typeof e.padTop=="number"?e.padTop:void 0,padBottom:typeof e.padBottom=="number"?e.padBottom:void 0}):l(y,{...u,items:e.items})}};export{M as GalleryBRender};
|
|
@@ -1 +1 @@
|
|
|
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 H}from"efficient-web-builder/format/lib/content/section-width";import L from"../../../../../components/LinkedProductHero.js";import m from"../../../../../components/pdp-dynamic/DynamicProductHero.js";import P 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 F}from"../../../current-product.js";import{isEditorOnDynamicPage as y}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 I,DEFAULT_HERO_TEXT_ALIGN as U,parseHeroLayout as S,parseHeroRatio 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 H}from"efficient-web-builder/format/lib/content/section-width";import L from"../../../../../components/LinkedProductHero.js";import m from"../../../../../components/pdp-dynamic/DynamicProductHero.js";import P 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 F}from"../../../current-product.js";import{isEditorOnDynamicPage as y}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 I,DEFAULT_HERO_TEXT_ALIGN as U,parseHeroLayout as S,parseHeroRatio as p,parseHeroTextAlign as M}from"../../../../sections/hero-arrangement.js";import{DEFAULT_HERO_GALLERY_MODE as k,DEFAULT_HERO_IMAGE_FIT as x,parseHeroGalleryMode as B,parseHeroImageFit as C}from"../../../../sections/hero-gallery.js";import{say as G}from"efficient-web-builder/format/lib/editor-words";import{ProductHeroMeta as N}from"./meta.js";import{HideTaker as V}from"efficient-web-builder/render/components/ViewHideRoot";function b({source:e,editing:t=!1,pricePlacement:i=O,showVehicleFitment:o=!0,heroLayout:l=D,imageRatio:a=I,textAlign:u=U,showSpecTable:c=!0,showPriceQuote:d=!0,galleryMode:f=k,imageFit:s=x,trustBullets:E,nodeId:T,priceTemplate:_}){const n={heroLayout:l,imageRatio:a,textAlign:u,showSpecTable:c,showPriceQuote:d,galleryMode:f,imageFit:s,trustBullets:g(E,t),nodeId:T,priceTemplate:_};return F()||t&&y()?r(m,{editing:t,pricePlacement:i,showVehicleFitment:o,...n}):e?.slug?r(L,{slug:e.slug,kind:e.kind??"wheel",editing:t,pricePlacement:i,showVehicleFitment:o,...n}):t?r(P,{size:"tall",children:G("Pick a product in the panel to fill this hero.")}):r(m,{pricePlacement:i,showVehicleFitment:o,...n})}function j(e,t){return H(e,"full").mode!=="page"?t:r(V,{as:"div",style:{"--sf-content-cap":h},children:t})}const me={...N,render:e=>j(e,r(b,{source:e.source,editing:e.editor?.isEditing,pricePlacement:w(e.pricePlacement),showVehicleFitment:e.showVehicleFitment??!0,heroLayout:S(e.heroLayout),imageRatio:p(e.imageRatio),textAlign:M(e.textAlign),showSpecTable:e.showSpecTable??!0,showPriceQuote:e.showPriceQuote??!0,galleryMode:B(e.galleryMode),imageFit:C(e.imageFit),trustBullets:A(e[R]),nodeId:typeof e.id=="string"?e.id:void 0,priceTemplate:typeof e.template=="function"?e.template:void 0}))};export{me as ProductHeroRender};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,Fragment as o}from"react/jsx-runtime";import n from"../../../../../components/card-pieces/CardPrice.js";import{useGridCard as d}from"../../../../../components/GridCardTemplate.js";import
|
|
1
|
+
import{jsx as e,Fragment as o}from"react/jsx-runtime";import n from"../../../../../components/card-pieces/CardPrice.js";import{useGridCard as d}from"../../../../../components/GridCardTemplate.js";import m from"../../../../../components/card-pieces/HostPart.js";import{readPartStyles as a}from"efficient-web-builder/render/lib/document/part-styles";import{HideTaker as c}from"efficient-web-builder/render/components/ViewHideRoot";import{ProductPriceMeta as i}from"./meta.js";function f({children:r}){return d().ownerId?e(c,{children:r}):e(o,{children:r})}const x={...i,render:r=>{const t=!!r.editor?.isEditing;return e(m,{label:i.label??"",editing:t,onHero:!0,children:e(f,{children:e(n,{quoteSets:!0,region:{nodeId:typeof r.id=="string"?r.id:void 0,partStyles:a(r),editing:t}})})})}};export{x as ProductPriceRender};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as f}from"react/jsx-runtime";import{phoneKey as h}from"efficient-easel/draw";import g,{readFacets as x,readTags as k}from"../../../../../components/Events.js";import{declaredBlockSource as y,sourcedRows as b}from"efficient-web-builder/format/lib/content/block-sources";import{servedListOf as v,servedRowLists as T}from"../../../../content/served-lists.js";import{hidableText as E}from"efficient-easel/screen/lib/document/hidable";import{parseSectionHeadPlacement as A}from"efficient-web-builder/format/lib/sections/section-head-placement";import{phHide as o}from"efficient-web-builder/render/lib/document/blocks/scaffold";import{say as a}from"efficient-web-builder/format/lib/editor-words";import{EventsMeta as B,EVENTS_PH as r}from"./meta.js";const S=()=>[{key:"sample-1",title:a("First card"),excerpt:a("A line about it appears here.")},{key:"sample-2",title:a("Second card"),excerpt:a("A line about it appears here.")},{key:"sample-3",title:a("Third card"),excerpt:a("A line about it appears here.")},{key:"sample-4",title:a("Fourth card"),excerpt:a("A line about it appears here.")}],s=(e,i,t)=>({slug:e.key||`card-${i}`,title:e.title??"",excerpt:e.excerpt??"",cover:e.cover??"",meta:e.meta||void 0,dateLabel:e.dateLabel||void 0,href:e.href||"#",...t?.facets?{facets:t.facets}:{},...t?.tags?{tags:t.tags}:{}}),F=e=>T(e,i=>({facets:x(i.facets),tags:k(i.tags)})),K={...B,render:e=>{const i=A(e.headPlacement)==="own-box",t=d=>i?void 0:d,m=o(e.linkText,r.link,e.editor),n=y(e)!==""?b(e,!!e.editor?.isEditing,S()):null,c=n&&!n.sample?F(e):null,u=n?n.sample?[]:n.rows.map((d,l)=>s(d,l,v(c,d,l))):e.posts;return f(g,{num:t(o(e.num,r.num,e.editor)),title:t(o(e.title,r.title,e.editor)),link:t(m?{text:m,href:E(e.linkHref)||"/journal"}:void 0),omitHead:i,posts:u,sample:n?.sample?n.rows.map((d,l)=>s(d,l)):void 0,columns:e.columns,limit:e.limit,showAll:e.showAll,layout:e.layout,featuredWidth:e.featuredWidth,listCover:e.listCover,featuredDarken:e.featuredDarken,cardImage:e.cardImage,gap:e.gap,gapPhone:e[h("gap")],nameFilter:e.nameFilter===!0,padTop:typeof e.padTop=="number"?e.padTop:void 0,padBottom:typeof e.padBottom=="number"?e.padBottom:void 0,editing:e.editor?.isEditing})}};export{K as EventsRender};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e={label:"Divider",defaultProps:{thickness:1,lengthPct:100
|
|
1
|
+
const e={label:"Divider",defaultProps:{thickness:1,lengthPct:100}};export{e as FooterDividerMeta};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import t from"../../../../../components/FooterDivider.js";import{FooterDividerMeta as i}from"./meta.js";const n={...i,render:({thickness:r,lengthPct:e})=>o(t,{thickness:r,lengthPct:e})};export{n as FooterDividerRender};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import n,{RATING_STARS as o}from"../../../../../components/RatingStars.js";import{HideTaker as a}from"efficient-web-builder/render/components/ViewHideRoot";import{RATING_NONE as t,RatingBlockMeta as m}from"./meta.js";function f(i){return typeof i=="number"&&Number.isFinite(i)&&i>t?i:t}function g({rating:i,editing:e}){return i>t?r(n,{rating:i}):e?r(a,{className:"opacity-60",children:r(n,{rating:o})}):null}const R={...m,render:i=>r(g,{rating:f(i.rating),editing:!!i.editor?.isEditing})};export{R as RatingBlockRender};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { type CardTemplateSpec } from "efficient-web-builder/format/lib/content/card-template";
|
|
2
|
+
import type { BlockSeed } from "efficient-web-builder/format/lib/document/seed-parts";
|
|
2
3
|
export declare const drawsKits: (props: Record<string, unknown>) => boolean;
|
|
4
|
+
export declare const productGridCardSeed: (props?: Record<string, unknown>) => BlockSeed;
|
|
3
5
|
export declare const STOREFRONT_CARD_TEMPLATES: readonly CardTemplateSpec[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{registerCardTemplates as
|
|
1
|
+
import{registerCardTemplates as d}from"efficient-web-builder/format/lib/content/card-template";import{withRelatedTabletColumns as t}from"../sections/product-grid-columns.js";import{bundleColumns as s}from"../sections/bundle-to-grid.js";import{HERO_PRICE_BLOCK as c,withHeroPriceTemplate as k}from"../content/hero-price-seed.js";import{CARD_LIST_TYPE as n}from"efficient-web-builder/format/lib/content/card-template";import{FILTER_OPTIONS_FIELD as C,withFilterChipsTemplate as m,withFilterTemplate as y}from"../content/filter-card-seed.js";import{MENU_LINK_BLOCK as u,withMenuTemplate as O}from"../content/menu-card-seed.js";import{ARTICLE_BODY_BLOCK as T,withArticleBodyTemplate as p}from"../content/article-body-seed.js";import{PRODUCT_BUY_BLOCK as _,PRODUCT_CARD_FIELDS as P,PRODUCT_COLOUR_BLOCK as R,PRODUCT_EYEBROW_BLOCK as E,PRODUCT_NAME_BLOCK as L,PRODUCT_PICTURE_BLOCK as f,PRODUCT_PRICE_BLOCK as h,PRODUCT_SIZE_BLOCK as B,PRODUCT_SPECS_BLOCK as w,productCardSeed as D,withKitCardTemplate as a,withProductCardTemplate as i}from"../content/product-card-seed.js";const S=["showCardPrice","showCardFinishes","showCardSizes","showCardBuy","showCardPage"],g=e=>Object.fromEntries(Object.entries(e).filter(([l])=>!S.includes(l))),r={fields:[{key:"label",label:"Label"},{key:"href",label:"Link",kind:"link"}],blocks:[{type:u,label:"Menu link"}],seed:O},b=e=>e.dynamic===!0&&e.relationship==="bundles",x=(e={})=>D(e),o={fields:P,blocks:[{type:f,label:"Picture"},{type:E,label:"Eyebrow"},{type:L,label:"Name"},{type:w,label:"Specs"},{type:h,label:"Price"},{type:R,label:"Colour"},{type:B,label:"Size"},{type:_,label:"Buy"}],seed:e=>{if(e.dynamic!==!0)return i(e);const l=t(e);return b(e)?a(l):i(l)}},U=[{block:"Reviews",fields:[{key:"quote",label:"Quote"},{key:"title",label:"Title"},{key:"name",label:"Name"},{key:"role",label:"Role · location"},{key:"rating",label:"Rating"},{key:"dateLabel",label:"Date"}]},{block:"SpecTable",fields:[{key:"label",label:"Label"},{key:"value",label:"Value"}]},{block:"DetailRows",fields:[{key:"eyebrow",label:"Eyebrow"},{key:"title",label:"Title"},{key:"copy",label:"Body",multiline:!0},{key:"image",label:"Image",kind:"image",alt:"title"},{key:"tag",label:"Image tag"}]},{block:"FooterMenu",...r},{block:"MenuBlock",...r},{block:"ProductGrid",...o},{block:"RelatedProducts",...o,seed:e=>{const l=t({...g(e),dynamic:!0});return b(l)?a(l):i(l,{legacyWellHonoured:!0})}},{block:"BundleOffer",...o,seed:e=>a(t({...e,columns:s(e),dynamic:!0}))},{block:"ProductHero",fields:[],blocks:[{type:c,label:"Price"}],seed:k},{block:"FilterBlock",fields:[{key:"label",label:"Filter name"},{key:C,label:"Options",kind:"list",fields:[{key:"label",label:"Option"},{key:"count",label:"Count"}]}],blocks:[{type:n,label:"Card list"}],seed:y},{block:"FilterChipsBlock",fields:[{key:"label",label:"Pick"},{key:"mark",label:"Remove mark"}],seed:m},{block:T,fields:[{key:"heading",label:"Subhead"},{key:"paragraph",label:"Paragraph",multiline:!0}],seed:p}];d(U);export{U as STOREFRONT_CARD_TEMPLATES,b as drawsKits,x as productGridCardSeed};
|