efficient-storefront-blocks 0.79.0 → 0.80.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 +14 -0
- package/dist/chunks/{EditorPreviewCheckout-6S2Q3GXI.js → EditorPreviewCheckout-PSONSVRR.js} +1 -1
- package/dist/chunks/{SiteEditorProvider-B6JGOUMX.js → SiteEditorProvider-PWHW2UA6.js} +1 -1
- package/dist/chunks/{chunk-WYNB6IMA.js → chunk-3Q66B5NU.js} +1 -1
- package/dist/chunks/chunk-6MHGEO3D.js +320 -0
- package/dist/chunks/{chunk-ZA227AIS.js → chunk-MCCDGDRW.js} +1 -1
- package/dist/chunks/{fitment-data-KCPZ77HO.js → fitment-data-Q2TJ6FBU.js} +1 -1
- package/dist/contract.js +1 -1
- package/dist/editor/lib/document/blocks/commerce/ProductColour/fields.d.ts +2 -0
- package/dist/editor/lib/document/blocks/commerce/ProductColour/fields.js +1 -0
- package/dist/editor/lib/document/blocks/commerce/ProductPrice/fields.d.ts +2 -0
- package/dist/editor/lib/document/blocks/commerce/ProductPrice/fields.js +1 -0
- package/dist/editor/lib/document/blocks/commerce/ProductSize/fields.d.ts +2 -0
- package/dist/editor/lib/document/blocks/commerce/ProductSize/fields.js +1 -0
- 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/index.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/storefront-editor-words.d.ts +0 -1
- package/dist/editor/lib/storefront-editor-words.js +1 -1
- package/dist/index.js +28 -28
- package/dist/render/app/globals.css +7 -0
- package/dist/render/built-with.json +1 -1
- package/dist/render/components/EuTyreLabelCard.js +1 -1
- package/dist/render/components/ProductCard.js +1 -1
- package/dist/render/components/SpecTable.d.ts +2 -1
- package/dist/render/components/SpecTable.js +1 -1
- package/dist/render/components/WheelCardFrame.d.ts +3 -15
- package/dist/render/components/WheelCardFrame.js +1 -1
- package/dist/render/components/card-pieces/CardEyebrow.d.ts +6 -0
- package/dist/render/components/card-pieces/CardEyebrow.js +1 -0
- package/dist/render/components/card-pieces/CardName.d.ts +4 -0
- package/dist/render/components/card-pieces/CardName.js +1 -0
- package/dist/render/components/card-pieces/CardPicture.d.ts +18 -0
- package/dist/render/components/card-pieces/CardPicture.js +1 -0
- package/dist/render/components/card-pieces/CardSpecs.d.ts +20 -0
- package/dist/render/components/card-pieces/CardSpecs.js +1 -0
- package/dist/render/components/card-pieces/HostPart.d.ts +6 -0
- package/dist/render/components/card-pieces/HostPart.js +1 -0
- package/dist/render/components/card-pieces/ProductCardState.d.ts +1 -0
- package/dist/render/components/card-pieces/ProductCardState.js +1 -1
- package/dist/render/components/pdp-dynamic/DynamicSpecTable.d.ts +1 -0
- package/dist/render/components/pdp-dynamic/DynamicSpecTable.js +1 -1
- package/dist/render/components/wheels-plp/PlpCard.d.ts +1 -1
- package/dist/render/components/wheels-plp/PlpCard.js +1 -1
- package/dist/render/lib/document/blocks/commerce/ProductColour/meta.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductColour/meta.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductColour/render.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductColour/render.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductPrice/meta.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductPrice/meta.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductPrice/render.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductPrice/render.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductSize/meta.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductSize/meta.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductSize/render.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductSize/render.js +1 -0
- package/dist/render/lib/document/blocks/commerce/SpecTable/meta.d.ts +6 -0
- package/dist/render/lib/document/blocks/commerce/SpecTable/meta.js +1 -1
- package/dist/render/lib/document/blocks/commerce/SpecTable/render.js +1 -1
- package/dist/render/lib/document/blocks/commerce/metas.d.ts +3 -0
- package/dist/render/lib/document/blocks/commerce/metas.js +1 -1
- package/dist/render/lib/document/blocks/commerce/renders.d.ts +3 -0
- package/dist/render/lib/document/blocks/commerce/renders.js +1 -1
- 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-spec.d.ts +1 -0
- package/dist/render/lib/document/section-to-box-rows-spec.js +1 -0
- package/dist/render/lib/tyres/spec-sheet.d.ts +0 -2
- package/dist/render/lib/tyres/spec-sheet.js +1 -1
- package/dist/words.d.ts +1 -1
- package/dist/words.js +2 -2
- package/package.json +8 -3
- package/dist/chunks/chunk-NE47RYTU.js +0 -320
- /package/dist/chunks/{chunk-NE47RYTU.js.LEGAL.txt → chunk-6MHGEO3D.js.LEGAL.txt} +0 -0
- /package/dist/chunks/{chunk-PBU5KHED.js → chunk-JUGY3EKR.js} +0 -0
- /package/dist/chunks/{chunk-IL5OJ6VZ.js → chunk-X5W6GJLI.js} +0 -0
|
@@ -1311,6 +1311,13 @@ body:has([data-page-width="full"]) footer {
|
|
|
1311
1311
|
@theme {
|
|
1312
1312
|
--breakpoint-view-tablet: 720px;
|
|
1313
1313
|
--breakpoint-view-desktop: 1100px;
|
|
1314
|
+
/* THE WIDE LINE: below it a page draws its phone layout (`max-view-wide:`),
|
|
1315
|
+
from it the wide one (`view-wide:`). Under the v1 rules it is 800, the line
|
|
1316
|
+
every hand-typed `max-[800px]:` / `min-[800px]:` drew, and it compiles to
|
|
1317
|
+
the same `width < 800px` / `width >= 800px`. The switch to the v2 rules
|
|
1318
|
+
(three-views plan PR 11) moves it to 720, the Tablet view's edge, in this
|
|
1319
|
+
one line; the same guard holds it to the rules in force. */
|
|
1320
|
+
--breakpoint-view-wide: 800px;
|
|
1314
1321
|
}
|
|
1315
1322
|
|
|
1316
1323
|
@theme inline {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as a,jsxs as
|
|
1
|
+
import{jsx as a,jsxs as i}from"react/jsx-runtime";import{noiseLabel as l}from"../lib/tyres/eu-tyre-label.js";const n={headingSmall:"text-[length:var(--size-headingSmall,22px)]",labelSmall:"text-[length:var(--size-label,11px)]",labelLarge:"text-[length:var(--size-label,12px)]"};function o(e){const r=[];e.fuelClass&&r.push({key:"Fuel efficiency",value:e.fuelClass}),e.wetGripClass&&r.push({key:"Wet grip",value:e.wetGripClass});const t=l(e);return t&&r.push({key:"Rolling noise",value:t}),e.loadIndicator&&r.push({key:"Reinforced",value:e.loadIndicator}),r}function c(e){const r=[];return e.severeSnow&&r.push("3PMSF severe snow"),e.iceGrip&&r.push("Ice grip"),r}function m({label:e}){const r=o(e),t=c(e);return i("div",{className:"flex flex-col bg-[var(--card-bg)] p-5",children:[a("h3",{className:`font-heading3 ${n.headingSmall} font-medium leading-tight`,children:e.size}),a("dl",{className:`mt-3 flex flex-col gap-2 font-mono ${n.labelLarge}`,children:r.map(s=>i("div",{className:"flex items-baseline justify-between gap-3",children:[a("dt",{className:"uppercase tracking-[0.14em] text-fg-dim",children:s.key}),a("dd",{className:"text-right text-fg",children:s.value})]},s.key))}),t.length>0?a("ul",{className:"mt-3 flex flex-wrap gap-2",children:t.map(s=>a("li",{className:`border border-line px-2 py-1 font-mono ${n.labelSmall} uppercase tracking-[0.14em] text-fg-dim`,children:s},s))}):null,i("a",{href:e.eprelUrl,target:"_blank",rel:"noopener noreferrer",className:`group mt-4 inline-flex items-center gap-2 border-t border-line pt-3 font-mono ${n.labelLarge} uppercase tracking-[0.2em] text-accent transition-colors hover:text-fg`,children:[`EPREL ${e.registrationNumber}`,a("span",{"aria-hidden":!0,className:"transition-transform group-hover:translate-x-1",children:"→"})]})]})}export{m as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as
|
|
1
|
+
"use client";import{jsx as e,Fragment as N,jsxs as R}from"react/jsx-runtime";import U from"next/image";import{useState as X}from"react";import{setSecondSrc as q}from"../lib/wheels/set-mode.js";import{CARD_INDEX_BADGE_CLASS as G,CARD_INDEX_CLASS as H}from"efficient-web-builder/format/lib/sections/product-card-style";import{coverSrcForWheel as M,resolvePaintedSrc as O}from"../lib/wheels/cover-rendering.js";import{wheelCardEyebrow as J,withSetChip as K}from"./ProductCardEyebrow.js";import{withRMark as Q}from"efficient-web-builder/render/components/RMark";import T from"./WheelPlaceholder.js";import{useProductCardChrome as V}from"./ProductCardChrome.js";import Y,{CardBuyDialog as Z}from"./card-pieces/CardBuyButton.js";import ee from"./card-pieces/CardFinishSwatches.js";import re from"./card-pieces/CardPrice.js";import oe from"./card-pieces/CardProductBadge.js";import{useWheelCardState as te,WheelCardStateProvider as se}from"./card-pieces/ProductCardState.js";import{CardSpecFacts as ie}from"./card-pieces/CardSpecs.js";import ae from"./WheelCardFrame.js";function ne({wheel:a,variant:s="compact",defaultFinish:r}){return e(se,{wheel:a,defaultFinish:r,children:e(de,{variant:s})})}function de({variant:a}){const s=a==="catalog",{wheel:r,sel:t,isSet:n}=te(),{imageBackgroundFill:S,spinOnHover:b,coverIndex:B,indexBadge:m,outline:y,showBadge:F,fieldUsage:h,reserveEyebrow:x,showCardPrice:E,showCardFinishes:P,showCardSizes:k,showCardBuy:u,showCardPage:f,imageSizes:v}=V(),d=s&&(u||f),$=M(r,B,t.finish?.name,t.shownSrc),_="h-full w-full",z=b?`transition-transform duration-700 [transition-timing-function:cubic-bezier(.2,.6,.2,1)] ${s?"group-hover:rotate-[72deg]":"group-hover:rotate-[60deg]"}`:"",[g,A]=X(()=>new Set),D=o=>A(i=>i.has(o)?i:new Set(i).add(o)),c=O({overrideSrc:$,hookSrc:t.shownSrc,failed:g}),p=(o,i)=>e(U,{src:o,alt:i,width:1e3,height:1e3,sizes:v,className:`block object-contain ${z} ${_}`,draggable:!1,onError:()=>D(o)},o),w=t.finish?`${r.name} — ${t.finish.name}`:r.name,I=c?p(c,w):e(T,{imageLabel:r.name}),l=n?q(r.finishes?.find(o=>o.name===t.finish?.name),c):null,L=l&&!g.has(l)?p(l,`${w} — right`):void 0,C=J({kindLabel:null,brand:null,process:r.process?Q(r.process):null},h),j=n&&!s?K(C):C,W=m!=="off"?e("span",{"aria-hidden":!0,className:`${H} ${G}`}):null;return R(N,{children:[e(ae,{variant:a,wide:n&&s,href:`/wheels/${r.slug}`,outline:y,imageBackgroundFill:S,probes:t.probes,reserveEyebrow:x,indexBadge:W,badges:e(oe,{show:F,numbered:m!=="off",axleSets:!0}),image:I,imageSecond:L,eyebrow:j,spec:e(ie,{sizes:k,fieldUsage:h}),price:e(re,{show:E,quoteSets:!0}),swatches:e(ee,{show:P}),identityLink:d,wholeCardLink:!0,buy:e(Y,{buy:d&&u,page:d&&f})}),e(Z,{})]})}export{ne as default};
|
|
@@ -14,6 +14,7 @@ export interface SpecTableProps {
|
|
|
14
14
|
editing?: boolean;
|
|
15
15
|
nodeId?: string;
|
|
16
16
|
omitHead?: boolean;
|
|
17
|
+
template?: unknown;
|
|
17
18
|
capped?: boolean;
|
|
18
19
|
}
|
|
19
|
-
export default function SpecTable({ num, title, description, rows, builtInLabels, diagram, editing, omitHead, nodeId, capped, }: SpecTableProps): import("react").JSX.Element;
|
|
20
|
+
export default function SpecTable({ num, title, description, rows, builtInLabels, diagram, editing, omitHead, nodeId, capped, template, }: SpecTableProps): import("react").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{Fragment as
|
|
1
|
+
"use client";import{Fragment as E,jsx as e,jsxs as l}from"react/jsx-runtime";import z from"./SectionBand.js";import{useScopeClass as I}from"../lib/use-scope-class.js";import{useState as C}from"react";import R from"efficient-web-builder/render/components/SectionHeader";import{CardTemplateRows as D}from"efficient-web-builder/render/components/CardRowContext";import j from"./WheelSvg.js";import{renderGold as w,renderHeadline as V}from"efficient-web-builder/render/components/goldPhrases";import{inchLabel as y}from"../lib/wheels/spec-format.js";import W from"./DimensionArrowMarkers.js";import B from"./SpecTablePartBridge.js";import{SPEC_REGION_ATTR as A}from"efficient-web-builder/format/lib/sections/spec-table-regions";import{say as _}from"efficient-web-builder/format/lib/editor-words";import{applyShopMark as M}from"efficient-web-builder/format/lib/markup";import{useEnglish as P}from"./EnglishVariant.js";import{sizedImage as G}from"efficient-web-builder/format/lib/sized-image";const $={between:"[&>*+*]:border-t [&>*+*]:border-line",every:"[&>*]:border-t [&>*]:border-line"},T="[&_sup.text-accent.tracking-normal]:static [&_sup.text-accent.tracking-normal]:align-baseline [&_sup.text-accent.tracking-normal]:[font-size:inherit] [&_sup.text-accent.tracking-normal]:text-current [&_sup.text-accent.tracking-normal]:tracking-[inherit]",H="(max-width: 1100px) 80vw, 290px",d={labelSmall:"text-[length:var(--size-label,11px)]",label:"text-[length:var(--size-label,12px)]",labelLarge:"text-[length:var(--size-label,14px)]"};function r(i,a){return i?{[A]:a}:{}}function O({editing:i,nodeId:a,children:n}){return!i||!a?e(E,{children:n}):e(B,{nodeId:a,children:n})}function L({row:i,topBorder:a,editing:n}){return l("div",{className:`flex items-baseline justify-between gap-6 py-4 font-mono ${d.labelLarge} tracking-[0.05em] ${a?"border-t border-line":""}`,children:[e("span",{...r(n,"rowLabel"),className:"uppercase text-fg-dim",children:i.label}),e("span",{...r(n,"rowValue"),className:`text-right ${i.accent?"text-accent":"text-fg"}`,children:i.value})]})}function F({diagram:i,editing:a}){const[n,b]=C(!1),o=I("spec"),{wheelName:p,imageSrc:s,diameter:f,width:x,offset:h,holes:v,pcd:S,spokes:m,mesh:c,bore:N}=i,g=!!s&&!n;return l("div",{className:"sf-card bg-surface p-6 max-[1100px]:mt-8",children:[e("div",{...r(a,"diagramTitle"),className:`mb-3 font-mono ${d.label} uppercase tracking-[0.25em] text-fg-dim`,children:"Wheel Dimension Diagram"}),l("div",{className:"relative flex aspect-square items-center justify-center",children:[l("svg",{viewBox:"0 0 320 320",className:"absolute inset-0 h-full w-full text-fg-dim",fill:"none",stroke:"currentColor",children:[e("line",{x1:40,y1:20,x2:280,y2:20,strokeWidth:1,markerStart:`url(#${o}-L)`,markerEnd:`url(#${o}-R)`}),e("line",{x1:40,y1:15,x2:40,y2:25,strokeWidth:1}),e("line",{x1:280,y1:15,x2:280,y2:25,strokeWidth:1}),e(W,{id:o})]}),g?e("img",{...G(s,{fallbackWidth:960}),sizes:H,alt:`${p} — face`,onError:()=>b(!0),loading:"lazy",className:"relative z-[1] block h-[80%] w-[80%] object-contain"}):e(j,{spokes:m,mesh:c,className:"relative z-[1] block h-[72%] w-[72%] text-accent"}),l("span",{...r(a,"diagramCallout"),className:`absolute top-1.5 left-1/2 z-20 -translate-x-1/2 bg-surface px-2 font-mono ${d.label} tracking-[0.2em] text-accent`,children:["⌀ ",y(f)]}),l("span",{...r(a,"diagramCallout"),className:`absolute bottom-1.5 left-1/2 z-20 -translate-x-1/2 bg-surface px-2 font-mono ${d.label} tracking-[0.2em] text-fg`,children:["WIDTH ",y(x)]})]}),l("div",{className:`mt-4 grid grid-cols-5 gap-3 font-mono ${d.labelSmall} uppercase tracking-[0.2em] text-fg-dim max-[480px]:grid-cols-3`,children:[l("div",{children:[e("div",{...r(a,"diagramStatLabel"),className:"text-fg-dim/60",children:"Holes"}),e("div",{...r(a,"diagramStatValue"),className:"mt-1 text-fg",children:v})]}),l("div",{children:[e("div",{...r(a,"diagramStatLabel"),className:"text-fg-dim/60",children:"PCD"}),e("div",{...r(a,"diagramStatValue"),className:"mt-1 text-fg",children:S})]}),l("div",{children:[e("div",{...r(a,"diagramStatLabel"),className:"text-fg-dim/60",children:"Spokes"}),l("div",{...r(a,"diagramStatValue"),className:"mt-1 text-fg",children:[m,c?" + Mesh":""]})]}),l("div",{children:[e("div",{...r(a,"diagramStatLabel"),className:"text-fg-dim/60",children:"Bore"}),e("div",{...r(a,"diagramStatValue"),className:"mt-1 text-fg",children:N})]}),l("div",{children:[e("div",{...r(a,"diagramStatLabel"),className:"text-fg-dim/60",children:"ET"}),e("div",{...r(a,"diagramStatValue"),className:"mt-1 text-accent",children:h})]})]})]})}function Y({num:i,title:a,description:n,rows:b,builtInLabels:o=!1,diagram:p,editing:s=!1,omitHead:f=!1,nodeId:x,capped:h=!0,template:v}){const S=P(),m=(b??[]).filter(t=>(t?.label??"").trim()||(t?.value??"").trim()).map(t=>o&&t.label?{...t,label:S(t.label)}:t),c=m.length>0?m:s?[{label:_("Label"),value:_("Value")}]:[],N=c.map(t=>({label:t.label??"",value:t.accent&&t.value?M(t.value,0,t.value.length,"highlight").text:t.value??""})),g=t=>p?l("div",{className:"grid grid-cols-[1fr_400px] gap-12 max-[1100px]:grid-cols-1",children:[e("div",{className:t?`${$.between} ${T}`:void 0,children:t??c.map((k,u)=>e(L,{row:k,topBorder:u>0,editing:s},u))}),e(F,{diagram:p,editing:s})]}):e("div",{className:`grid grid-cols-2 gap-x-16 max-[900px]:grid-cols-1${t?` ${$.every} ${T}`:""}`,children:t??c.map((k,u)=>e(L,{row:k,topBorder:!0,editing:s},u))});return e(z,{className:f?"border-b border-line pt-0 pb-[120px] max-[1100px]:pt-0 max-[1100px]:pb-20":"border-b border-line py-[120px] max-[1100px]:py-20",capped:h,children:l(O,{editing:s,nodeId:x,children:[f?null:e(R,{num:i?w(i):void 0,title:a?V(a,!1):void 0,description:n?w(n):void 0,accent:!0}),e(D,{ownerId:x??"",ownerType:"SpecTable",Template:v,rows:N,fallback:g(),children:t=>g(t)})]})})}export{Y as default};
|
|
@@ -5,20 +5,8 @@ export declare const cardRowsGridStyle: (rowGap: string) => CSSProperties;
|
|
|
5
5
|
export declare const cardRowsGap: (zone: {
|
|
6
6
|
style: CSSProperties;
|
|
7
7
|
}) => string;
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
export declare const CARD_PAD_X_PX = 32;
|
|
11
|
-
export declare const setBandGapPx: (showImageBackground: boolean) => number;
|
|
12
|
-
export declare const setBandGapCss: (showImageBackground: boolean, gridGap?: string) => string;
|
|
13
|
-
export declare const SET_PLATE_PX = 252;
|
|
14
|
-
export declare const SET_STACK_GAP_PX = 16;
|
|
15
|
-
export declare const SET_STACK_MAX_PX = 800;
|
|
16
|
-
export declare const CARD_SPEC_FIELD_CLASS = "whitespace-nowrap";
|
|
17
|
-
export type CardSpecField = string | {
|
|
18
|
-
readonly text: string;
|
|
19
|
-
readonly accent: boolean;
|
|
20
|
-
};
|
|
21
|
-
export declare function cardSpecFields(fields: readonly CardSpecField[], separator?: string): ReactNode;
|
|
8
|
+
export { CARD_PAD_X_PX, GRID_GAP_PX, SET_PLATE_PX, SET_STACK_GAP_PX, SET_STACK_MAX_PX, setBandGapCss, setBandGapPx, setPlateWidthCss, } from "./card-pieces/CardPicture.js";
|
|
9
|
+
export { CARD_SPEC_FIELD_CLASS, cardSpecFields, type CardSpecField } from "./card-pieces/CardSpecs.js";
|
|
22
10
|
export default function WheelCardFrame({ variant, wide, setGridGap, href, identityLink, outline, imageBackgroundFill, containerProps, probes, indexBadge, badges, image, imageSecond, plate, eyebrow, reserveEyebrow, name, spec, price, swatches, sizes, buy, wholeCardLink, }: {
|
|
23
11
|
variant?: "compact" | "catalog";
|
|
24
12
|
wide?: boolean;
|
|
@@ -36,7 +24,7 @@ export default function WheelCardFrame({ variant, wide, setGridGap, href, identi
|
|
|
36
24
|
plate?: ReactNode;
|
|
37
25
|
eyebrow?: ReactNode;
|
|
38
26
|
reserveEyebrow?: boolean;
|
|
39
|
-
name
|
|
27
|
+
name?: ReactNode;
|
|
40
28
|
spec?: ReactNode;
|
|
41
29
|
price?: ReactNode;
|
|
42
30
|
swatches?: ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as
|
|
1
|
+
"use client";import{jsx as r,Fragment as p,jsxs as o}from"react/jsx-runtime";import{GAP_LENGTH_VAR as y,GAP_PHONE_LENGTH_VAR as j}from"efficient-web-builder/format/lib/content/container-gap";import g from"next/link";import{CardLookContext as k,CardRow as s}from"./card-pieces/card-row.js";import I from"./card-pieces/CardEyebrow.js";import O from"./card-pieces/CardName.js";import W from"./card-pieces/CardPicture.js";import{CardSpecLine as B}from"./card-pieces/CardSpecs.js";import{cardOutlineClass as H}from"efficient-web-builder/format/lib/sections/product-card-style";import{CARD_IMAGE_BG_OFF as K}from"efficient-web-builder/format/lib/content/card-image-background";const ar="sf-card-rows",or=a=>({rowGap:0,"--sf-card-row-gap":a}),sr=a=>j in a.style?"var(--sf-card-row-gap-auto)":`var(${y})`;import{CARD_PAD_X_PX as cr,GRID_GAP_PX as ir,SET_PLATE_PX as lr,SET_STACK_GAP_PX as dr,SET_STACK_MAX_PX as nr,setBandGapCss as fr,setBandGapPx as pr,setPlateWidthCss as mr}from"./card-pieces/CardPicture.js";import{CARD_SPEC_FIELD_CLASS as gr,cardSpecFields as wr}from"./card-pieces/CardSpecs.js";function M({variant:a="catalog",wide:m=!1,setGridGap:w,href:e,identityLink:C=!1,outline:x="none",imageBackgroundFill:u=K,containerProps:_,probes:t,indexBadge:c,badges:i,image:h,imageSecond:A,plate:G,eyebrow:P,reserveEyebrow:v=!1,name:S,spec:R,price:b,swatches:E,sizes:L,buy:D,wholeCardLink:F=!1}){const N=a==="catalog",T=r(W,{image:h,imageSecond:A,plate:G,wide:m,imageBackgroundFill:u,setGridGap:w}),l=[N?"sf-card sf-card-fill group relative flex min-h-[460px] flex-col bg-[var(--card-bg)] px-8 pt-8 pb-8 transition-colors duration-200 hover:bg-[var(--card-bg-hover)] [.sf-card-rows>&]:row-span-9 [.sf-card-rows>&]:mb-[var(--sf-card-row-gap)] [.sf-card-rows>&]:grid [.sf-card-rows>&]:grid-rows-subgrid [.sf-card-rows>&]:gap-y-0":"sf-card sf-card-fill group relative block bg-[var(--card-bg)] p-5 transition-colors duration-300 hover:bg-[var(--card-bg-hover)]",H(x),m?"col-span-2 max-[800px]:col-span-1 @max-[720px]:col-span-1":""].filter(Boolean).join(" "),d=o(p,{children:[T,r(I,{reserve:v,children:P}),r(O,{children:S})]}),n=o(p,{children:[r(B,{children:R}),b??o(p,{children:[r(s,{}),r(s,{})]}),E??r(s,{}),L??r(s,{}),D??r(s,{})]}),f=X=>r(k.Provider,{value:a,children:X});return f(e?C?o("article",{..._,className:l,children:[t,c,i,r(g,{href:e,className:`flex flex-col ${F?"after:absolute after:inset-0 after:content-['']":""} [.sf-card-rows>*>&]:row-span-3 [.sf-card-rows>*>&]:grid [.sf-card-rows>*>&]:grid-rows-subgrid [.sf-card-rows>*>&]:gap-y-0`,children:d}),n]}):o(g,{href:e,className:l,children:[t,c,i,d,n]}):o("article",{..._,className:l,children:[t,c,i,d,n]}))}export{cr as CARD_PAD_X_PX,ar as CARD_ROWS_GRID_CLASS,gr as CARD_SPEC_FIELD_CLASS,ir as GRID_GAP_PX,lr as SET_PLATE_PX,dr as SET_STACK_GAP_PX,nr as SET_STACK_MAX_PX,sr as cardRowsGap,or as cardRowsGridStyle,wr as cardSpecFields,M as default,fr as setBandGapCss,pr as setBandGapPx,mr as setPlateWidthCss};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as e}from"react/jsx-runtime";import{CARD_TEXT_SIZE as o,CardRow as s,useCatalogCard as c}from"./card-row.js";function i({children:a,reserve:n=!1}){const r=c(),t=`font-mono ${o.label} uppercase text-accent ${r?"tracking-[0.3em]":"tracking-[0.25em]"}`,l=a?e("div",{className:t,children:a}):r&&n?e("div",{"aria-hidden":!0,className:t,children:" "}):null;return e(s,{children:l})}export{i as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as r}from"react/jsx-runtime";import{withRMark as t}from"efficient-web-builder/render/components/RMark";import{CARD_TEXT_SIZE as n,useCatalogCard as d}from"./card-row.js";import{useProductCardStateOrNull as i}from"./ProductCardState.js";function m({children:a}){const o=d(),e=i();return a===void 0&&e?.kind!=="wheel"&&process.env.NODE_ENV!=="production"&&console.warn("[CardName] no name given and no wheel card state: the name block is empty"),r("div",{className:o?`mt-2 h-[60px] overflow-hidden break-words [.sf-card-rows_&]:h-auto [.sf-card-rows_&]:max-h-[60px] font-heading3 ${n.headingSmall2} font-medium uppercase leading-none tracking-[-0.02em]`:`mt-2 font-heading3 ${n.headingSmall1} font-medium tracking-[-0.02em]`,children:a??(e?.kind==="wheel"?t(e.wheel.name):null)})}export{m as default};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export declare const setPlateWidthCss: (gap: number | string) => string;
|
|
3
|
+
export declare const GRID_GAP_PX = 2;
|
|
4
|
+
export declare const CARD_PAD_X_PX = 32;
|
|
5
|
+
export declare const setBandGapPx: (showImageBackground: boolean) => number;
|
|
6
|
+
export declare const setBandGapCss: (showImageBackground: boolean, gridGap?: string) => string;
|
|
7
|
+
export declare const SET_PLATE_PX = 252;
|
|
8
|
+
export declare const SET_STACK_GAP_PX = 16;
|
|
9
|
+
export declare const SET_STACK_MAX_PX = 800;
|
|
10
|
+
export interface CardPictureSettings {
|
|
11
|
+
image: ReactNode;
|
|
12
|
+
imageSecond?: ReactNode;
|
|
13
|
+
plate?: ReactNode;
|
|
14
|
+
wide?: boolean;
|
|
15
|
+
imageBackgroundFill?: string;
|
|
16
|
+
setGridGap?: string;
|
|
17
|
+
}
|
|
18
|
+
export default function CardPicture({ image, imageSecond, plate, wide, imageBackgroundFill, setGridGap, }: CardPictureSettings): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as b,Fragment as P,jsxs as o}from"react/jsx-runtime";import{CARD_IMAGE_BG_OFF as C,cardImageBackgroundPaints as A,THEME_CARD_IMAGE_BG as v}from"efficient-web-builder/format/lib/content/card-image-background";import{useCatalogCard as g}from"./card-row.js";const h=e=>`calc((100% - ${typeof e=="number"?`${e}px`:e}) / 2)`,x=2,j=32,_=e=>x+2*j+(e?16:0),d=(e,s)=>s===void 0?`${_(e)}px`:`calc(${s} + ${_(e)-x}px)`,S=252,w=16,X=800;function E({image:e,imageSecond:s,plate:l,wide:a=!1,imageBackgroundFill:r=C,setGridGap:c}){const f=g(),t=A(r),n=t&&r===v,p=n?"bg-[var(--wheel-stage)] p-2":t?"p-2":"",i=t&&!n?{backgroundColor:r}:{},m=u=>b("figure",{className:"m-0 aspect-square [flex:0_0_auto] max-w-full w-[var(--sf-set-plate-w)] max-[800px]:w-full",style:{"--sf-set-plate-w":h(d(t,c))},children:u});return f?o("div",{className:a?`relative mt-2 mb-5 flex items-center justify-center [&_img]:object-top max-[800px]:flex-col ${p}`:`relative mt-2 mb-5 flex aspect-square items-center justify-center overflow-hidden [&_img]:object-top ${p}`,style:a?{...i,borderRadius:10,columnGap:d(t,c),rowGap:w}:{...i,borderRadius:"var(--sf-card-image-radius, 10px)"},children:[a?o(P,{children:[m(e),m(s??e)]}):e,l]}):o("div",{className:"relative mb-5 aspect-square overflow-hidden bg-bg p-8 [&_img]:object-top",style:{borderRadius:"var(--sf-card-image-radius, 10px)"},children:[e,l]})}export{j as CARD_PAD_X_PX,x as GRID_GAP_PX,S as SET_PLATE_PX,w as SET_STACK_GAP_PX,X as SET_STACK_MAX_PX,E as default,d as setBandGapCss,_ as setBandGapPx,h as setPlateWidthCss};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type FieldUsageAnswer } from "../../lib/content/field-usage.js";
|
|
3
|
+
import { type VehicleFitment } from "../../lib/wheels/plp-fitment-match.js";
|
|
4
|
+
export declare const CARD_SPEC_FIELD_CLASS = "whitespace-nowrap";
|
|
5
|
+
export type CardSpecField = string | {
|
|
6
|
+
readonly text: string;
|
|
7
|
+
readonly accent: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare function cardSpecFields(fields: readonly CardSpecField[], separator?: string): ReactNode;
|
|
10
|
+
export declare function CardSpecLine({ children }: {
|
|
11
|
+
children?: ReactNode;
|
|
12
|
+
}): import("react").JSX.Element;
|
|
13
|
+
export interface CardSpecsSettings {
|
|
14
|
+
sizes?: boolean;
|
|
15
|
+
car?: VehicleFitment | null;
|
|
16
|
+
separator?: string;
|
|
17
|
+
fieldUsage?: readonly FieldUsageAnswer[];
|
|
18
|
+
}
|
|
19
|
+
export declare function CardSpecFacts({ sizes, car, separator, fieldUsage }: CardSpecsSettings): import("react").JSX.Element | null;
|
|
20
|
+
export default function CardSpecs(settings: CardSpecsSettings): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as a,jsxs as m,Fragment as l}from"react/jsx-runtime";import{Fragment as i}from"react";import{applyCardAnswers as d}from"../../lib/content/field-usage.js";import{wheelCardSpecFacts as x}from"../../lib/wheels/plp-fitment-match.js";import{CARD_TEXT_SIZE as s,useCatalogCard as u}from"./card-row.js";import{useProductCardState as f}from"./ProductCardState.js";const g="whitespace-nowrap",h=t=>typeof t=="string"?t:t.text;function C(t,r="·"){return t.map((n,o)=>{const e=h(n),c=typeof n!="string"&&n.accent;return m(i,{children:[a("span",{className:`${g}${c?" text-accent":""}`,children:o<t.length-1?`${e} ${r}`:e}),o<t.length-1?" ":null]},e)})}function S({children:t}){const r=u();return a("div",{className:r?`mt-2 h-[38px] overflow-hidden [.sf-card-rows_&]:h-auto [.sf-card-rows_&]:max-h-[76px] font-mono ${s.labelLarge} leading-[19px] tracking-[0.14em] text-fg-dim`:`mt-[4px] font-mono ${s.labelLarge} tracking-[0.1em] text-fg-dim`,children:t})}function _({sizes:t=!1,car:r=null,separator:n,fieldUsage:o=[]}){const e=f();if(e.kind!=="wheel")return null;const c=d(x(e.wheel,r,{sizes:t}),o).map(p=>p.text);return a(l,{children:C(c,n)})}function w(t){return a(S,{children:a(_,{...t})})}export{g as CARD_SPEC_FIELD_CLASS,_ as CardSpecFacts,S as CardSpecLine,C as cardSpecFields,w as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{Fragment as o,jsx as r}from"react/jsx-runtime";import{say as s}from"efficient-web-builder/format/lib/editor-words";import{useProductCardStateOrNull as i}from"./ProductCardState.js";function n({label:t,editing:a,children:e}){return i()?r(o,{children:e}):a?r("div",{"data-host-part-sample":"",className:"opacity-60",children:s(t)}):null}export{n as default};
|
|
@@ -37,6 +37,7 @@ export interface TyreCardState {
|
|
|
37
37
|
}
|
|
38
38
|
export type ProductCardState = WheelCardState | TyreCardState;
|
|
39
39
|
export declare function useProductCardState(): ProductCardState;
|
|
40
|
+
export declare function useProductCardStateOrNull(): ProductCardState | null;
|
|
40
41
|
export declare function useWheelCardState(): WheelCardState;
|
|
41
42
|
export declare function WheelCardStateProvider({ wheel, colours, defaultFinish, editing, children, }: {
|
|
42
43
|
wheel: WheelSummary;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as v}from"react/jsx-runtime";import{createContext as
|
|
1
|
+
"use client";import{jsx as v}from"react/jsx-runtime";import{createContext as z,useCallback as A,useContext as P,useMemo as W,useState as y}from"react";import{useCurrency as h}from"../CurrencyContext.js";import{useTyreDetail as b}from"../useTyreDetail.js";import{usePlpCardSelection as B}from"../wheels-plp/usePlpCardSelection.js";import{tyrePagePath as N}from"../../lib/tyres/tyre-page-path.js";import{canOrderTyreVariant as T}from"../../lib/tyres/tyre-purchase.js";import{resolveSelectionPrice as j}from"../../lib/wheels/price-display.js";import{setBuildLabel as E,setIsWide as L,summarySetBuild as R}from"../../lib/wheels/set-mode.js";const c=z(null);function V(){const e=P(c);if(!e)throw new Error("A product card piece was drawn outside a product card (no ProductCardState).");return e}function K(){return P(c)}function Q(){const e=V();if(e.kind!=="wheel")throw new Error("A wheel card piece was drawn on a tyre card.");return e}const _=[];function X({wheel:e,colours:i=_,defaultFinish:u,editing:l=!1,children:a}){const{currency:t}=h(),r=B(e,i,u),[d,f]=y(!1),s=R(e),n={kind:"wheel",wheel:e,sel:r,currency:t,price:j(e,r.selectedVariant,t,1),isSet:L(s),setWords:E(s),editing:l,notifyOpen:d,setNotifyOpen:f};return v(c.Provider,{value:n,children:a})}function Y({tyre:e,currency:i,editing:u=!1,children:l}){const{currency:a}=h(),{slug:t}=e,r=N(t),[d,f]=y(!1),s=A(()=>{t&&f(!0)},[t]),{state:n,tyre:m}=b(t??null,d),o=W(()=>m?.variants??[],[m]),[x,w]=y(null),O=o.length===1?o[0].size:null,C=x??O,p=o.find(k=>k.size===C),S=n==="ready",g={kind:"tyre",tyre:e,currency:i,activeCurrency:a,pagePath:r,arm:s,detailState:n,detail:m,variants:o,chosen:C,setSize:w,variant:p,canAdd:p!=null&&T(p,a),detailReady:S,unsellable:!r||n==="error"||S&&o.length===0,editing:u};return v(c.Provider,{value:g,children:l})}export{Y as TyreCardStateProvider,X as WheelCardStateProvider,V as useProductCardState,K as useProductCardStateOrNull,Q as useWheelCardState};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as
|
|
1
|
+
"use client";import{jsx as l}from"react/jsx-runtime";import h from"../SpecTable.js";import x from"./KindGate.js";import{buildSpecSheet as k,sourceFromWheel as v}from"../../lib/wheels/spec-sheet.js";import{buildTyreSpecSheet as z}from"../../lib/tyres/spec-sheet.js";import{partVariant as I}from"../../lib/catalog/from-wheel.js";import{useCurrentProduct as P}from"../../lib/document/current-product.js";import{applySpecAnswers as b}from"../../lib/content/field-usage.js";import{useSampleProduct as j}from"./useSampleProduct.js";const A=["alloy-wheel","tyre"],E=[];function G(t,r,i){const o=t.variants??[];return(r?o.find(n=>n.sku===r):void 0)??(i?o.find(n=>n.size===i):void 0)??o[0]??null}function K(t){return l(x,{kinds:A,type:"SpecTable",editing:t.editing,children:l(L,{...t})})}function L({num:t,title:r,description:i,showDiagram:o=!0,editing:n=!1,nodeId:d,omitHead:u=!1,template:p}){const e=P(),w=j(n&&!e),a=e?.product??w,c=a?.kind==="tyre"?a.source:null,m=e?.fieldUsage??E;if(c){const g=G(c,e?.selection.part?.id,e?.selection.shown.size),T=z({brand:c.brand,variant:g});return l(h,{capped:!1,builtInLabels:!0,num:t,title:r,description:i,rows:b(T.rows,m),diagram:null,editing:n,nodeId:d,omitHead:u,template:p})}const s=a?.kind==="alloy-wheel"?a.source:null,y=e?e.selection.shown.finish:s?.finishes[0]?.name,S=e&&s?I(s,e.selection.part)?.size??void 0:void 0,f=s?k(v(s),y,S):{rows:[],diagram:null};return l(h,{capped:!1,builtInLabels:!0,num:t,title:r,description:i,rows:b(f.rows,m),diagram:o?f.diagram:null,editing:n,nodeId:d,omitHead:u,template:p})}export{K as default,A as supportedKinds};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { WheelSummary } from "../../lib/api/index.js";
|
|
2
2
|
import { type CardIndexFormat, type CardOutline } from "efficient-web-builder/format/lib/sections/product-card-style";
|
|
3
|
-
import {
|
|
3
|
+
import type { FieldUsageAnswer } from "../../lib/content/field-usage.js";
|
|
4
4
|
import { type VehicleFitment } from "../../lib/wheels/plp-fitment-match.js";
|
|
5
5
|
export interface PlpCardProps {
|
|
6
6
|
wheel: WheelSummary;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as
|
|
1
|
+
"use client";import{jsx as e,Fragment as W,jsxs as $}from"react/jsx-runtime";import{CARD_IMAGE_SIZES as j}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 N}from"efficient-web-builder/render/components/RMark";import re from"../WheelPlaceholder.js";import{CardSpecFacts as oe}from"../card-pieces/CardSpecs.js";import ae from"../WheelCardFrame.js";import{CARD_IMAGE_BG_OFF as te}from"efficient-web-builder/format/lib/content/card-image-background";import{itemBrand as ne}from"../../lib/catalog/plp-item.js";import{CARD_INDEX_BADGE_CLASS as se,CARD_INDEX_CLASS as ie,DEFAULT_CARD_INDEX_FORMAT as le,DEFAULT_CARD_OUTLINE as de}from"efficient-web-builder/format/lib/sections/product-card-style";import{setSecondSrc as me}from"../../lib/wheels/set-mode.js";import{PLP_GRID_GAP_VAR as ce}from"../../lib/wheels/plp-grid.js";import{FITMENT_FIELD_SEPARATOR as he}from"../../lib/wheels/plp-fitment-match.js";import{coverSrcForWheel as ue,DEFAULT_COVER_INDEX as fe,resolvePaintedSrc as pe}from"../../lib/wheels/cover-rendering.js";const we=[];function Se({wheel:s,colours:c,fit:i=null,editing:l=!1,brandPlate:d=!1,kindLabel:h=null,showBrand:t=!0,showProcess:u=!1,coverIndex:f=fe,fieldUsage:p=we,spinOnHover:w=!1,imageBackgroundFill:S=te,showBadge:g=!0,outline:C=de,indexBadge:_=le,showCardSizes:E=P.showCardSizes,showCardBuy:b=P.showCardBuy,showCardPage:A=P.showCardPage,showCardPrice:r=!0,showCardFinishes:o=!0,imageSizes:m=j}){return e(Q,{wheel:s,colours:c,editing:l,children:e(ge,{fit:i,brandPlate:d,kindLabel:h,showBrand:t,showProcess:u,coverIndex:f,fieldUsage:p,spinOnHover:w,imageBackgroundFill:S,showBadge:g,outline:C,indexBadge:_,showCardSizes:E,showCardBuy:b,showCardPage:A,showCardPrice:r,showCardFinishes:o,imageSizes:m})})}function ge({fit:s,brandPlate:c,kindLabel:i,showBrand:l,showProcess:d,coverIndex:h,fieldUsage:t,spinOnHover:u,imageBackgroundFill:f,showBadge:p,outline:w,indexBadge:S,showCardSizes:g,showCardBuy:C,showCardPage:_,showCardPrice:E,showCardFinishes:b,imageSizes:A}){const{wheel:r,sel:o,isSet:m}=K(),T=ue(r,h,o.finish?.name,o.shownSrc,s?.holes),[I,k]=U(()=>new Set),x=a=>k(n=>n.has(a)?n:new Set(n).add(a)),F=pe({overrideSrc:T,hookSrc:o.shownSrc,failed:I}),B=ne(r),G=u?"transition-transform duration-700 [transition-timing-function:cubic-bezier(.2,.6,.2,1)] group-hover:rotate-[72deg]":"",R=(a,n)=>e(M,{src:a,alt:n,width:800,height:800,sizes:A,className:["block h-full w-full object-contain",G].filter(Boolean).join(" "),draggable:!1,onError:()=>x(a)},a),y=o.finish?`${r.name} — ${o.finish.name}`:r.name,O=F?R(F,y):e(re,{imageLabel:r.name}),D=m?me(r.finishes?.find(a=>a.name===o.finish?.name),F):null,v=D&&!I.has(D)?R(D,`${y} — right`):void 0,L=S!=="off"?e("span",{"aria-hidden":!0,className:`${ie} ${se}`}):null,z=Y({kindLabel:i,brand:l&&B?N(B):null,process:d&&r.process?N(r.process):null},t);return $(W,{children:[e(ae,{href:`/wheels/${r.slug}`,wide:m,setGridGap:`var(${ce})`,identityLink:!0,containerProps:{onPointerEnter:o.arm,onTouchStart:o.arm,onFocusCapture:o.arm},probes:o.probes,outline:w,imageBackgroundFill:f,indexBadge:L,badges:e(J,{show:p,numbered:L!=null,sale:!0}),image:O,imageSecond:v,plate:c?e(X,{brand:B,logo:r.brandLogo}):null,eyebrow:z,wholeCardLink:!0,reserveEyebrow:ee({kind:!!i,brand:l,process:d},t),spec:e(oe,{sizes:g,fieldUsage:t,car:s,separator:he}),price:e(q,{show:E,setTotal:!0,wasFollowsSize:!0}),swatches:e(Z,{show:b,showSingle:!0}),buy:e(H,{buy:C,page:_})}),e(V,{})]})}export{Se as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const o={label:"Colour",defaultProps:{}};export{o as ProductColourMeta};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import e from"../../../../../components/card-pieces/CardFinishSwatches.js";import i from"../../../../../components/card-pieces/HostPart.js";import{ProductColourMeta as r}from"./meta.js";const n={...r,render:t=>o(i,{label:r.label??"",editing:!!t.editor?.isEditing,children:o(e,{})})};export{n as ProductColourRender};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={label:"Price",defaultProps:{}};export{e as ProductPriceMeta};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import i from"../../../../../components/card-pieces/CardPrice.js";import t from"../../../../../components/card-pieces/HostPart.js";import{ProductPriceMeta as o}from"./meta.js";const n={...o,render:e=>r(t,{label:o.label??"",editing:!!e.editor?.isEditing,children:r(i,{})})};export{n as ProductPriceRender};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={label:"Size",defaultProps:{}};export{e as ProductSizeMeta};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import i from"../../../../../components/card-pieces/CardSizes.js";import t from"../../../../../components/card-pieces/HostPart.js";import{ProductSizeMeta as o}from"./meta.js";const s={...o,render:e=>r(t,{label:o.label??"",editing:!!e.editor?.isEditing,children:r(i,{})})};export{s as ProductSizeRender};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{PH as e}from"efficient-web-builder/format/lib/document/blocks/placeholders";const
|
|
1
|
+
import{cardTemplateSlot as t}from"efficient-web-builder/format/lib/content/card-template";import{PH as e}from"efficient-web-builder/format/lib/document/blocks/placeholders";const r={num:e.sectionNumber,title:"Specifications *table.*",description:e.body},o={template:t()},s={label:"Spec Table",fields:o,defaultProps:{dynamic:!1,num:"",title:"",description:"",source:null,finish:"",size:"",showDiagram:!0,rows:[]}};export{r as SPECTABLE_PH,s as SpecTableMeta,o as SpecTableSlots};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as g}from"react/jsx-runtime";import h from"../../../../../components/pdp-dynamic/DynamicSpecTable.js";import w from"../../../../../components/SpecTable.js";import{buildSpecSheet as b,buildLegacySpecSheet as y}from"../../../../wheels/spec-sheet.js";import{parseSectionHeadPlacement as S}from"efficient-web-builder/format/lib/sections/section-head-placement";import{phHide as n}from"efficient-web-builder/render/lib/document/blocks/scaffold";import{SpecTableMeta as x,SPECTABLE_PH as
|
|
1
|
+
import{jsx as g}from"react/jsx-runtime";import h from"../../../../../components/pdp-dynamic/DynamicSpecTable.js";import w from"../../../../../components/SpecTable.js";import{buildSpecSheet as b,buildLegacySpecSheet as y}from"../../../../wheels/spec-sheet.js";import{parseSectionHeadPlacement as S}from"efficient-web-builder/format/lib/sections/section-head-placement";import{phHide as n}from"efficient-web-builder/render/lib/document/blocks/scaffold";import{SpecTableMeta as x,SPECTABLE_PH as a}from"./meta.js";const z={...x,render:e=>{const m=S(e.headPlacement)==="own-box",t=i=>m?void 0:i;if(e.dynamic)return g(h,{nodeId:typeof e.id=="string"?e.id:void 0,num:t(n(e.num,a.num,e.editor)),title:t(n(e.title,a.title,e.editor)),description:t(n(e.description,a.description,e.editor)),showDiagram:e.showDiagram!==!1,omitHead:m,editing:e.editor?.isEditing,template:e.template});const d=e.source??null,o=e.wheel,r=!d?.slug&&typeof o=="string"?o:"",s=typeof e.finish=="string"?e.finish:"",f=typeof e.size=="string"?e.size:"";let l,u=!0,c=null;if(d?.slug&&d.spec){const i=b(d,s,f);l=i.rows,c=e.showDiagram===!1?null:i.diagram}else if(r){const i=y(r,s,f);l=i.rows,c=e.showDiagram===!1?null:i.diagram}else l=e.rows??[],u=!1;return g(w,{capped:!1,nodeId:typeof e.id=="string"?e.id:void 0,num:t(n(e.num,a.num,e.editor)),title:t(n(e.title,a.title,e.editor)),description:t(n(e.description,a.description,e.editor)),rows:l,builtInLabels:u,diagram:c,omitHead:m,editing:e.editor?.isEditing,template:e.template})}};export{z as SpecTableRender};
|
|
@@ -30,4 +30,7 @@ export declare const COMMERCE_METAS: {
|
|
|
30
30
|
ThemeSwitchBlock: Omit<BlockRender, "render">;
|
|
31
31
|
TyreFitment: Omit<BlockRender, "render">;
|
|
32
32
|
TyreSizes: Omit<BlockRender, "render">;
|
|
33
|
+
ProductSize: Omit<BlockRender, "render">;
|
|
34
|
+
ProductColour: Omit<BlockRender, "render">;
|
|
35
|
+
ProductPrice: Omit<BlockRender, "render">;
|
|
33
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{AccountBlockMeta as
|
|
1
|
+
import{AccountBlockMeta as r}from"./AccountBlock/meta.js";import{AlloyWheelsListingMeta as t}from"./AlloyWheelsListing/meta.js";import{BundleOfferMeta as o}from"./BundleOffer/meta.js";import{CartBlockMeta as e}from"./CartBlock/meta.js";import{CatalogFilterBarMeta as m}from"./CatalogFilterBar/meta.js";import{CheckoutCTAMeta as i}from"./CheckoutCTA/meta.js";import{CollectionCardMeta as a}from"./CollectionCard/meta.js";import{CollectionsMeta as l}from"./Collections/meta.js";import{CompatibleTyresMeta as c}from"./CompatibleTyres/meta.js";import{CountrySwitchBlockMeta as p}from"./CountrySwitchBlock/meta.js";import{DeliveryOptionsMeta as f}from"./DeliveryOptions/meta.js";import{DetailRowsMeta as M}from"./DetailRows/meta.js";import{EuTyreLabelMeta as u}from"./EuTyreLabel/meta.js";import{EuTyreLabelBlockMeta as d}from"./EuTyreLabelBlock/meta.js";import{FitmentFinderMeta as y}from"./FitmentFinder/meta.js";import{FitmentTableMeta as n}from"./FitmentTable/meta.js";import{GalleryBMeta as C}from"./GalleryB/meta.js";import{GalleryItemMeta as T}from"./GalleryItem/meta.js";import{GalleryMeta as B}from"./Gallery/meta.js";import{HeaderMeta as P}from"./Header/meta.js";import{ProductGalleryMeta as s}from"./ProductGallery/meta.js";import{ProductGridMeta as k}from"./ProductGrid/meta.js";import{ProductHeroMeta as S}from"./ProductHero/meta.js";import{ProductRefMeta as h}from"./ProductRef/meta.js";import{RelatedProductsMeta as b}from"./RelatedProducts/meta.js";import{SearchBlockMeta as F}from"./SearchBlock/meta.js";import{SpecTableMeta as G}from"./SpecTable/meta.js";import{ThemeSwitchBlockMeta as A}from"./ThemeSwitchBlock/meta.js";import{TyreFitmentMeta as E}from"./TyreFitment/meta.js";import{TyreSizesMeta as R}from"./TyreSizes/meta.js";import{ProductSizeMeta as w}from"./ProductSize/meta.js";import{ProductColourMeta as L}from"./ProductColour/meta.js";import{ProductPriceMeta as O}from"./ProductPrice/meta.js";const ur={AccountBlock:r,AlloyWheelsListing:t,BundleOffer:o,CartBlock:e,CatalogFilterBar:m,CheckoutCTA:i,CollectionCard:a,Collections:l,CompatibleTyres:c,CountrySwitchBlock:p,DeliveryOptions:f,DetailRows:M,EuTyreLabel:u,EuTyreLabelBlock:d,FitmentFinder:y,FitmentTable:n,Gallery:B,GalleryB:C,GalleryItem:T,Header:P,ProductGallery:s,ProductGrid:k,ProductHero:S,ProductRef:h,RelatedProducts:b,SearchBlock:F,SpecTable:G,ThemeSwitchBlock:A,TyreFitment:E,TyreSizes:R,ProductSize:w,ProductColour:L,ProductPrice:O};export{ur as COMMERCE_METAS};
|
|
@@ -30,5 +30,8 @@ export declare const COMMERCE_RENDERS: {
|
|
|
30
30
|
ThemeSwitchBlock: BlockRender;
|
|
31
31
|
TyreFitment: BlockRender;
|
|
32
32
|
TyreSizes: BlockRender;
|
|
33
|
+
ProductSize: BlockRender;
|
|
34
|
+
ProductColour: BlockRender;
|
|
35
|
+
ProductPrice: BlockRender;
|
|
33
36
|
};
|
|
34
37
|
export type CommerceBlockType = keyof typeof COMMERCE_RENDERS;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{AccountBlockRender as
|
|
1
|
+
import{AccountBlockRender as r}from"./AccountBlock/render.js";import{AlloyWheelsListingRender as e}from"./AlloyWheelsListing/render.js";import{BundleOfferRender as o}from"./BundleOffer/render.js";import{CartBlockRender as t}from"./CartBlock/render.js";import{CatalogFilterBarRender as m}from"./CatalogFilterBar/render.js";import{CheckoutCTARender as i}from"./CheckoutCTA/render.js";import{CollectionCardRender as l}from"./CollectionCard/render.js";import{CollectionsRender as d}from"./Collections/render.js";import{CompatibleTyresRender as n}from"./CompatibleTyres/render.js";import{CountrySwitchBlockRender as c}from"./CountrySwitchBlock/render.js";import{DeliveryOptionsRender as R}from"./DeliveryOptions/render.js";import{DetailRowsRender as p}from"./DetailRows/render.js";import{EuTyreLabelRender as f}from"./EuTyreLabel/render.js";import{EuTyreLabelBlockRender as a}from"./EuTyreLabelBlock/render.js";import{FitmentFinderRender as u}from"./FitmentFinder/render.js";import{FitmentTableRender as y}from"./FitmentTable/render.js";import{GalleryRender as C}from"./Gallery/render.js";import{GalleryBRender as B}from"./GalleryB/render.js";import{GalleryItemRender as P}from"./GalleryItem/render.js";import{HeaderRender as T}from"./Header/render.js";import{ProductGalleryRender as s}from"./ProductGallery/render.js";import{ProductGridRender as k}from"./ProductGrid/render.js";import{ProductHeroRender as S}from"./ProductHero/render.js";import{ProductRefRender as h}from"./ProductRef/render.js";import{RelatedProductsRender as b}from"./RelatedProducts/render.js";import{SearchBlockRender as F}from"./SearchBlock/render.js";import{SpecTableRender as G}from"./SpecTable/render.js";import{ThemeSwitchBlockRender as E}from"./ThemeSwitchBlock/render.js";import{TyreFitmentRender as w}from"./TyreFitment/render.js";import{TyreSizesRender as A}from"./TyreSizes/render.js";import{ProductSizeRender as L}from"./ProductSize/render.js";import{ProductColourRender as D}from"./ProductColour/render.js";import{ProductPriceRender as O}from"./ProductPrice/render.js";const fr={AccountBlock:r,AlloyWheelsListing:e,BundleOffer:o,CartBlock:t,CatalogFilterBar:m,CheckoutCTA:i,CollectionCard:l,Collections:d,CompatibleTyres:n,CountrySwitchBlock:c,DeliveryOptions:R,DetailRows:p,EuTyreLabel:f,EuTyreLabelBlock:a,FitmentFinder:u,FitmentTable:y,Gallery:C,GalleryB:B,GalleryItem:P,Header:T,ProductGallery:s,ProductGrid:k,ProductHero:S,ProductRef:h,RelatedProducts:b,SearchBlock:F,SpecTable:G,ThemeSwitchBlock:E,TyreFitment:w,TyreSizes:A,ProductSize:L,ProductColour:D,ProductPrice:O};export{fr as COMMERCE_RENDERS};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{registerCardTemplates as e}from"efficient-web-builder/format/lib/content/card-template";const l=[{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"}]}];e(l);export{l as STOREFRONT_CARD_TEMPLATES};
|
|
1
|
+
import{registerCardTemplates as e}from"efficient-web-builder/format/lib/content/card-template";const l=[{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"}]}];e(l);export{l as STOREFRONT_CARD_TEMPLATES};
|