efficient-storefront-blocks 0.85.0 → 0.87.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 +24 -0
- package/dist/chunks/{EditorPreviewCheckout-4XHYYAT2.js → EditorPreviewCheckout-GD4IJ4WK.js} +1 -1
- package/dist/chunks/{SiteEditorProvider-X4YKBAJ4.js → SiteEditorProvider-2UVCJZXS.js} +1 -1
- package/dist/chunks/{chunk-NFXV7HDB.js → chunk-H4IHUSCU.js} +1 -1
- package/dist/chunks/chunk-QLR6IVWJ.js +369 -0
- package/dist/chunks/chunk-SYK5QPNV.js +1 -0
- package/dist/chunks/{chunk-VG4SUIRK.js → chunk-XZ46W3NV.js} +1 -1
- package/dist/chunks/{fitment-data-2I2FDPXW.js → fitment-data-5GBUMO2O.js} +1 -1
- package/dist/contract.js +20 -2
- package/dist/editor/lib/document/blocks/commerce/FitmentPicker/fields.d.ts +2 -0
- package/dist/editor/lib/document/blocks/commerce/FitmentPicker/fields.js +1 -0
- package/dist/editor/lib/document/blocks/commerce/FitmentTable/fields.js +1 -1
- package/dist/editor/lib/document/blocks/commerce/ProductBuy/fields.d.ts +2 -0
- package/dist/editor/lib/document/blocks/commerce/ProductBuy/fields.js +1 -0
- package/dist/editor/lib/document/blocks/commerce/ProductEyebrow/fields.d.ts +2 -0
- package/dist/editor/lib/document/blocks/commerce/ProductEyebrow/fields.js +1 -0
- package/dist/editor/lib/document/blocks/commerce/ProductGrid/fields.js +1 -1
- package/dist/editor/lib/document/blocks/commerce/ProductName/fields.d.ts +2 -0
- package/dist/editor/lib/document/blocks/commerce/ProductName/fields.js +1 -0
- package/dist/editor/lib/document/blocks/commerce/ProductPicture/fields.d.ts +2 -0
- package/dist/editor/lib/document/blocks/commerce/ProductPicture/fields.js +1 -0
- package/dist/editor/lib/document/blocks/commerce/ProductSpecs/fields.d.ts +2 -0
- package/dist/editor/lib/document/blocks/commerce/ProductSpecs/fields.js +1 -0
- package/dist/editor/lib/document/blocks/commerce/RelatedProducts/fields.js +1 -1
- package/dist/editor/lib/document/blocks/commerce/SpecTable/fields.js +1 -1
- package/dist/editor/lib/document/blocks/commerce/StockFitment/fields.d.ts +2 -0
- package/dist/editor/lib/document/blocks/commerce/StockFitment/fields.js +1 -0
- 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/blocks/commerce/page-rules.d.ts +5 -0
- package/dist/editor/lib/document/blocks/commerce/page-rules.js +1 -1
- package/dist/editor/lib/document/blocks/service/ArticleBody/fields.d.ts +2 -0
- package/dist/editor/lib/document/blocks/service/ArticleBody/fields.js +1 -0
- package/dist/editor/lib/document/blocks/service/SiteFooter/fields.js +1 -1
- package/dist/editor/lib/document/blocks/service/SiteHeader/fields.js +1 -1
- package/dist/editor/lib/document/blocks/service/index.d.ts +1 -1
- package/dist/editor/lib/document/blocks/service/index.js +1 -1
- package/dist/editor/lib/document/box-header.d.ts +1 -1
- package/dist/editor/lib/document/box-header.js +1 -1
- package/dist/editor/lib/document/config.js +1 -1
- package/dist/editor/lib/document/section-text-regions.js +1 -1
- package/dist/editor/lib/efficient-block-sources.js +1 -1
- package/dist/editor/lib/storefront-editor-words.d.ts +19 -7
- package/dist/editor/lib/storefront-editor-words.js +1 -1
- package/dist/fitment.js +1 -1
- package/dist/index.js +44 -40
- package/dist/links.js +1 -1
- package/dist/render/app/fonts/fallbacks.css +8 -0
- package/dist/render/app/fonts/jost/OFL.txt +93 -0
- package/dist/render/app/fonts/jost/cyrillic-italic.woff2 +0 -0
- package/dist/render/app/fonts/jost/cyrillic.woff2 +0 -0
- package/dist/render/app/fonts/jost/latin-ext-italic.woff2 +0 -0
- package/dist/render/app/fonts/jost/latin-ext.woff2 +0 -0
- package/dist/render/app/fonts/jost/latin-italic.woff2 +0 -0
- package/dist/render/app/fonts/jost/latin.woff2 +0 -0
- package/dist/render/app/globals.css +11 -11
- package/dist/render/built-with.json +1 -1
- package/dist/render/components/ArticleBody.d.ts +7 -0
- package/dist/render/components/ArticleBody.js +1 -0
- package/dist/render/components/BoxHeaderBar.d.ts +2 -1
- package/dist/render/components/BoxHeaderBar.js +1 -1
- package/dist/render/components/Events.js +1 -1
- package/dist/render/components/FitmentTable.d.ts +1 -1
- package/dist/render/components/FitmentTable.js +1 -1
- package/dist/render/components/FooterMenu.d.ts +5 -1
- package/dist/render/components/FooterMenu.js +1 -1
- package/dist/render/components/GridCardTemplate.d.ts +34 -0
- package/dist/render/components/GridCardTemplate.js +1 -0
- package/dist/render/components/MenuLinkBlock.d.ts +5 -1
- package/dist/render/components/MenuLinkBlock.js +1 -1
- package/dist/render/components/ProductCardChrome.d.ts +1 -1
- package/dist/render/components/ProductCardChrome.js +1 -1
- package/dist/render/components/ProductGridSection.d.ts +6 -15
- package/dist/render/components/ProductGridSection.js +1 -1
- package/dist/render/components/ProductRef.js +1 -1
- package/dist/render/components/PublishedHeader.js +1 -1
- package/dist/render/components/SectionBand.d.ts +2 -1
- package/dist/render/components/SectionBand.js +1 -1
- package/dist/render/components/SectionBandChoice.d.ts +2 -1
- package/dist/render/components/SectionBandChoice.js +1 -1
- package/dist/render/components/SectionGroupBody.d.ts +2 -2
- package/dist/render/components/SectionGroupBody.js +1 -1
- package/dist/render/components/SpecTable.d.ts +3 -1
- package/dist/render/components/SpecTable.js +1 -1
- package/dist/render/components/StorefrontProviders.d.ts +1 -1
- package/dist/render/components/StorefrontProviders.js +1 -1
- package/dist/render/components/TyreCard.js +1 -1
- package/dist/render/components/TyreFitVerdicts.d.ts +2 -1
- package/dist/render/components/TyreFitVerdicts.js +1 -1
- package/dist/render/components/TyrePlpCard.js +1 -1
- package/dist/render/components/TyreSizeGrid.d.ts +17 -0
- package/dist/render/components/TyreSizeGrid.js +1 -0
- package/dist/render/components/card-pieces/CardEyebrow.d.ts +3 -1
- package/dist/render/components/card-pieces/CardEyebrow.js +1 -1
- package/dist/render/components/card-pieces/CardName.d.ts +3 -1
- package/dist/render/components/card-pieces/CardName.js +1 -1
- package/dist/render/components/card-pieces/CardPrice.d.ts +2 -6
- package/dist/render/components/card-pieces/CardPrice.js +1 -1
- package/dist/render/components/card-pieces/CardProductPicture.d.ts +8 -0
- package/dist/render/components/card-pieces/CardProductPicture.js +1 -0
- package/dist/render/components/card-pieces/card-text-region.d.ts +18 -0
- package/dist/render/components/card-pieces/card-text-region.js +1 -0
- package/dist/render/components/fitment/FitmentPickerGrid.d.ts +5 -1
- package/dist/render/components/fitment/FitmentPickerGrid.js +1 -1
- package/dist/render/components/fitment/FitmentPickerPart.d.ts +8 -0
- package/dist/render/components/fitment/FitmentPickerPart.js +1 -0
- package/dist/render/components/fitment/StockFitmentPart.d.ts +11 -0
- package/dist/render/components/fitment/StockFitmentPart.js +1 -0
- package/dist/render/components/fitment/fitment-answer-source.d.ts +12 -0
- package/dist/render/components/fitment/fitment-answer-source.js +1 -0
- package/dist/render/components/fitment/useVehicleFit.d.ts +2 -1
- package/dist/render/components/fitment/useVehicleFit.js +1 -1
- package/dist/render/components/pdp-dynamic/DynamicFitmentTable.d.ts +5 -0
- package/dist/render/components/pdp-dynamic/DynamicFitmentTable.js +1 -1
- package/dist/render/components/pdp-dynamic/DynamicRelatedProducts.d.ts +10 -12
- package/dist/render/components/pdp-dynamic/DynamicRelatedProducts.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/pdp-dynamic/DynamicTyreSizes.js +1 -1
- package/dist/render/components/pdp-dynamic/FitmentTableBlock.d.ts +3 -1
- package/dist/render/components/pdp-dynamic/FitmentTableBlock.js +1 -1
- package/dist/render/components/wheels-plp/AlloyWheelsListing.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/content/article-body-seed.d.ts +9 -0
- package/dist/render/lib/content/article-body-seed.js +1 -0
- package/dist/render/lib/content/article-body.d.ts +8 -0
- package/dist/render/lib/content/article-body.js +5 -0
- package/dist/render/lib/content/article-page-seed.d.ts +12 -0
- package/dist/render/lib/content/article-page-seed.js +1 -0
- package/dist/render/lib/content/field-usage.d.ts +1 -0
- package/dist/render/lib/content/field-usage.js +1 -1
- package/dist/render/lib/content/product-card-seed.d.ts +29 -0
- package/dist/render/lib/content/product-card-seed.js +1 -0
- package/dist/render/lib/content/tab-strip.d.ts +17 -0
- package/dist/render/lib/content/tab-strip.js +1 -0
- package/dist/render/lib/document/blocks/commerce/FitmentPicker/meta.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/FitmentPicker/meta.js +1 -0
- package/dist/render/lib/document/blocks/commerce/FitmentPicker/render.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/FitmentPicker/render.js +1 -0
- package/dist/render/lib/document/blocks/commerce/FitmentTable/meta.js +1 -1
- package/dist/render/lib/document/blocks/commerce/FitmentTable/render.js +1 -1
- package/dist/render/lib/document/blocks/commerce/ProductBuy/meta.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductBuy/meta.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductBuy/render.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductBuy/render.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductEyebrow/meta.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductEyebrow/meta.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductEyebrow/render.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductEyebrow/render.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductGrid/meta.d.ts +4 -0
- package/dist/render/lib/document/blocks/commerce/ProductGrid/meta.js +1 -1
- package/dist/render/lib/document/blocks/commerce/ProductGrid/render.js +1 -1
- package/dist/render/lib/document/blocks/commerce/ProductName/meta.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductName/meta.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductName/render.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductName/render.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductPicture/meta.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductPicture/meta.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductPicture/render.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductPicture/render.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductPrice/render.js +1 -1
- package/dist/render/lib/document/blocks/commerce/ProductSpecs/meta.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductSpecs/meta.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductSpecs/render.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductSpecs/render.js +1 -0
- package/dist/render/lib/document/blocks/commerce/RelatedProducts/meta.d.ts +0 -4
- package/dist/render/lib/document/blocks/commerce/RelatedProducts/meta.js +1 -1
- package/dist/render/lib/document/blocks/commerce/RelatedProducts/render.js +1 -1
- package/dist/render/lib/document/blocks/commerce/SpecTable/render.js +1 -1
- package/dist/render/lib/document/blocks/commerce/StockFitment/meta.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/StockFitment/meta.js +1 -0
- package/dist/render/lib/document/blocks/commerce/StockFitment/render.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/StockFitment/render.js +1 -0
- package/dist/render/lib/document/blocks/commerce/metas.d.ts +7 -0
- package/dist/render/lib/document/blocks/commerce/metas.js +1 -1
- package/dist/render/lib/document/blocks/commerce/renders.d.ts +7 -0
- package/dist/render/lib/document/blocks/commerce/renders.js +1 -1
- package/dist/render/lib/document/blocks/service/ArticleBody/meta.d.ts +8 -0
- package/dist/render/lib/document/blocks/service/ArticleBody/meta.js +1 -0
- package/dist/render/lib/document/blocks/service/ArticleBody/render.d.ts +2 -0
- package/dist/render/lib/document/blocks/service/ArticleBody/render.js +1 -0
- package/dist/render/lib/document/blocks/service/SiteFooter/render.js +1 -1
- package/dist/render/lib/document/blocks/service/SiteHeader/render.js +1 -1
- package/dist/render/lib/document/blocks/service/metas.d.ts +1 -0
- package/dist/render/lib/document/blocks/service/metas.js +1 -1
- package/dist/render/lib/document/blocks/service/renders.d.ts +1 -0
- package/dist/render/lib/document/blocks/service/renders.js +1 -1
- package/dist/render/lib/document/blocks/text-part-shapes.json +0 -16
- package/dist/render/lib/document/card-templates.js +1 -1
- package/dist/render/lib/document/footer-page-blocks.js +1 -1
- package/dist/render/lib/document/lazy-draws.js +1 -1
- package/dist/render/lib/font-table.json +209 -1
- package/dist/render/lib/menu-link.d.ts +2 -0
- package/dist/render/lib/menu-link.js +1 -1
- package/dist/render/lib/next-fonts.js +1 -1
- package/dist/render/lib/sections/grid-no-hole.d.ts +1 -0
- package/dist/render/lib/sections/grid-no-hole.js +1 -1
- package/dist/render/lib/sections/product-card-text-regions.d.ts +3 -0
- package/dist/render/lib/sections/product-card-text-regions.js +1 -0
- package/dist/render/lib/sections/product-grid-columns.d.ts +17 -0
- package/dist/render/lib/sections/product-grid-columns.js +1 -0
- package/dist/render/lib/sections/related-to-grid.d.ts +8 -0
- package/dist/render/lib/sections/related-to-grid.js +1 -0
- package/dist/render/lib/storefront-page-groups.d.ts +0 -4
- package/dist/render/lib/storefront-page-groups.js +1 -1
- package/dist/render/lib/tyres/tyre-vehicle-fitment.d.ts +1 -0
- package/dist/render/lib/tyres/tyre-vehicle-fitment.js +1 -1
- package/dist/render/lib/wheels/plp-filters.js +1 -1
- package/dist/render/lib/wheels/vehicle-memory.d.ts +13 -0
- package/dist/render/lib/wheels/vehicle-memory.js +1 -1
- package/dist/words.d.ts +69 -8
- package/dist/words.js +6 -6
- package/package.json +4 -4
- package/dist/chunks/chunk-NNBMZAW4.js +0 -340
- package/dist/chunks/chunk-Y5LB56KB.js +0 -1
- /package/dist/chunks/{chunk-KKKMX6LH.js → chunk-DLWIDJS5.js} +0 -0
- /package/dist/chunks/{chunk-NNBMZAW4.js.LEGAL.txt → chunk-QLR6IVWJ.js.LEGAL.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{useCallback as
|
|
1
|
+
"use client";import{useCallback as k,useEffect as h,useMemo as x,useRef as F,useState as S}from"react";import{useFitmentCascade as M}from"./useFitmentCascade.js";import{DEFAULT_VEHICLE as L}from"../../lib/wheels/fitment-options.js";import{vehicleFitmentFromStock as P}from"../../lib/wheels/plp-fitment-match.js";import{clearAppliedVehicle as j}from"../../lib/wheels/applied-vehicle.js";import{isCompleteVehicle as p,vehicleFromParams as B}from"../../lib/wheels/plp-vehicle-params.js";import{storefrontVehicleMemory as a}from"../../lib/wheels/vehicle-memory.js";function b(t,c,r){return t!==c?t:r||c}function D(t,c){return t.make===c.make&&t.model===c.model&&t.modification===c.modification}function m(t,c){return t.make===c.make&&t.model===c.model&&t.year===c.year&&t.modification===c.modification}function z({initialMakes:t=[],editing:c=!1,enabled:r=!0,autoApply:N=!1,shareStock:y=!1}={}){const e=M(t,r),{setVehicle:n}=e,[l,f]=S(null),[C,w]=S(!1),u=k(()=>({make:e.makeName,model:e.modelName,modification:e.modName}),[e.makeName,e.modelName,e.modName]);h(()=>{if(c||!r){w(!0);return}const o=B(new URLSearchParams(window.location.search)),s=o?null:a.read(),i=o??s?.vehicle??null;i&&(n(i),f({vehicle:i,labels:s?.labels??{make:i.make,model:i.model,modification:i.modification},stock:null})),w(!0)},[c,r,n]),h(()=>{if(!(c||!r))return a.subscribe(()=>{const o=a.read();f(i=>o?i&&m(i.vehicle,o.vehicle)?D(i.labels,o.labels)?i:{...i,labels:o.labels}:{vehicle:o.vehicle,labels:o.labels,stock:null}:null);const s=o?.vehicle??L;n(i=>m(i,s)?i:s)})},[c,r,n]),h(()=>{!N||!p(e.vehicle)||l&&m(l.vehicle,e.vehicle)||f({vehicle:e.vehicle,labels:u(),stock:e.stock})},[N,l,e.vehicle,e.stock,u]),h(()=>{if(!l||!m(e.vehicle,l.vehicle))return;const o={make:b(e.makeName,e.vehicle.make,l.labels.make),model:b(e.modelName,e.vehicle.model,l.labels.model),modification:b(e.modName,e.vehicle.modification,l.labels.modification)};(l.stock!==e.stock||l.labels.make!==o.make||l.labels.model!==o.model||l.labels.modification!==o.modification)&&f(i=>i&&m(e.vehicle,i.vehicle)?{...i,stock:e.stock,labels:o}:i)},[l,e.vehicle,e.stock,e.makeName,e.modelName,e.modName]);const d=F("");h(()=>{if(!(c||!r))try{if(!l){d.current!==""&&(a.clear(),d.current="");return}const o=JSON.stringify({vehicle:l.vehicle,labels:l.labels});if(o===d.current)return;a.write({vehicle:l.vehicle,labels:l.labels}),d.current=o}catch{}},[l,c,r]);const v=F(!1);h(()=>{if(!y||!r)return;if(!l){v.current&&a.writeStock(null),v.current=!1;return}if(!m(e.vehicle,l.vehicle))return;const o=e.loading.stock!==!1,s=a.readStock();s&&m(s.vehicle,l.vehicle)&&s.stock===e.stock&&s.loading===o&&s.error===e.cascadeError||(a.writeStock({vehicle:l.vehicle,stock:e.stock,loading:o,error:e.cascadeError}),v.current=!0)},[y,r,l,e.vehicle,e.stock,e.loading.stock,e.cascadeError]);const A=k(()=>{p(e.vehicle)&&f({vehicle:e.vehicle,labels:u(),stock:e.stock})},[e.vehicle,e.stock,u]),R=k(()=>{f(null),n(L),!c&&r&&j()},[c,r,n]),E=x(()=>P(l?.stock),[l?.stock]),V=!!l&&m(e.vehicle,l.vehicle)&&e.loading.stock!==!1,U=l?[l.vehicle.year,l.labels.make,l.labels.model,l.labels.modification].filter(Boolean).join(" "):"";return{cascade:e,applied:l,fit:E,resolving:V,unresolved:!!l&&E===null&&!V,apply:A,clear:R,canApply:p(e.vehicle),appliedName:U,restored:C}}export{z as useVehicleFit};
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import type { ProductKind } from "../../lib/api/index.js";
|
|
2
2
|
export declare const supportedKinds: readonly ProductKind[];
|
|
3
|
+
export interface TyreHead {
|
|
4
|
+
title?: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
}
|
|
3
7
|
interface Props {
|
|
8
|
+
tyreHead?: TyreHead;
|
|
4
9
|
num?: string;
|
|
5
10
|
title?: string;
|
|
6
11
|
description?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as
|
|
1
|
+
"use client";import{jsx as n}from"react/jsx-runtime";import k from"../FitmentTable.js";import x from"./KindGate.js";import{TyreSizesContent as F}from"../TyreSizeGrid.js";import{useCurrentProduct as T}from"../../lib/document/current-product.js";import{NO_FIELD_ANSWERS as w}from"../../lib/content/field-usage.js";import{useSampleProduct as b}from"./useSampleProduct.js";const h=["alloy-wheel","tyre"];function y(t){return n(x,{kinds:h,type:"FitmentTable",editing:t.editing,children:n(S,{...t})})}function S({num:t,title:s,description:l,showFilter:f,tooltipDefaultOn:a,footnote:d,footnoteLinkText:u,footnoteLinkHref:c,editing:r=!1,omitHead:m=!1,tyreHead:e}){const o=T(),p=b(r&&!o),i=o?.product??p;if(i?.kind==="tyre")return n(F,{variants:i.source.variants,fieldUsage:o?.fieldUsage??w,num:t,title:e?e.title:s,description:e?e.description:l,editing:r,omitHead:m,keepHiddenHead:e!=null});const g=i?.kind==="alloy-wheel"?i.source.fitments??[]:[];return n(k,{num:t,title:s,description:l,rows:g,showFilter:f,tooltipDefaultOn:a,footnote:d,footnoteLinkText:u,footnoteLinkHref:c,editing:r,omitHead:m,fieldUsage:o?.fieldUsage})}export{y as default,h as supportedKinds};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import type { CardHoverDrawn } from "efficient-web-builder/format/lib/animation/hover";
|
|
1
|
+
import { type CardHoverDrawn } from "efficient-web-builder/format/lib/animation/hover";
|
|
3
2
|
import { type CardIndexFormat, type CardOutline } from "efficient-web-builder/format/lib/sections/product-card-style";
|
|
3
|
+
import type { SlotComponent } from "efficient-easel/blocks";
|
|
4
4
|
export declare const supportedKinds: readonly ("alloy-wheel" | "tyre")[];
|
|
5
5
|
interface Props {
|
|
6
6
|
num?: string;
|
|
@@ -14,19 +14,17 @@ interface Props {
|
|
|
14
14
|
footnoteLinkHref?: string;
|
|
15
15
|
editing?: boolean;
|
|
16
16
|
omitHead?: boolean;
|
|
17
|
+
hover?: CardHoverDrawn;
|
|
18
|
+
ownerId?: string;
|
|
19
|
+
template?: SlotComponent;
|
|
17
20
|
cardImage?: number | null;
|
|
18
21
|
outline?: CardOutline;
|
|
19
22
|
indexBadge?: CardIndexFormat;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
showCardBuy?: boolean;
|
|
25
|
-
showCardPage?: boolean;
|
|
26
|
-
coverIndex?: number;
|
|
27
|
-
imageBackground?: CardImageBackground;
|
|
28
|
-
hover?: CardHoverDrawn;
|
|
23
|
+
columnsPhone?: unknown;
|
|
24
|
+
columnsTablet?: unknown;
|
|
25
|
+
gap?: number | string;
|
|
26
|
+
gapPhone?: unknown;
|
|
29
27
|
}
|
|
30
28
|
export default function DynamicRelatedProducts(props: Props): import("react").JSX.Element;
|
|
31
|
-
export declare function RelatedProductsBody({ num, title, description, columns, cardCount, relationship: key, footnote, footnoteLinkText, footnoteLinkHref, editing, omitHead,
|
|
29
|
+
export declare function RelatedProductsBody({ num, title, description, columns, cardCount, relationship: key, footnote, footnoteLinkText, footnoteLinkHref, editing, omitHead, hover, ownerId, template, cardImage, outline, indexBadge, columnsPhone, columnsTablet, gap, gapPhone, }: Props): import("react").JSX.Element | null;
|
|
32
30
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as
|
|
1
|
+
"use client";import{jsx as e,jsxs as T}from"react/jsx-runtime";import P from"../SectionBand.js";import{useScopeClass as z}from"../../lib/use-scope-class.js";import{useEffect as V,useState as W}from"react";import{cardHoverOf as F}from"efficient-web-builder/format/lib/animation/hover";const U=F({},"ProductGrid");import Z from"../CompatibleTyres.js";import{cardRowsGrid as X,GridCardProvider as q,GridCards as J,gridIndexCss as Q}from"../GridCardTemplate.js";import{productGridColumnsClass as Y}from"../../lib/sections/product-grid-columns.js";import{containerGapProps as ee}from"efficient-web-builder/format/lib/content/container-gap";import{cardImageShapeTokens as _}from"efficient-web-builder/format/lib/content/card-image-shape";import{NO_FIELD_ANSWERS as re}from"../../lib/content/field-usage.js";import{gridClassImageSizes as te}from"../../lib/sections/card-image-sizes.js";import{fillRowCss as oe}from"../../lib/sections/fill-row.js";import ie from"efficient-web-builder/render/components/SectionHeader";import ne from"../ViewMoreLink.js";import{useSiteMenuLinks as se}from"../catalog/SiteMenuLinks.js";import{renderGold as I,renderHeadline as le}from"efficient-web-builder/render/components/goldPhrases";import ae from"./KindGate.js";import{loadProductCatalog as de}from"../useProductCatalog.js";import{PLP_KINDS as ce}from"../../lib/catalog/plp-item.js";import{relatedCardCount as pe,relatedViewMore as me}from"../../lib/catalog/related-cards.js";import{DEFAULT_RELATIONSHIP as fe,relationshipApplies as ue,relationshipByKey as he}from"../../lib/catalog/relationships.js";import{useCurrentProduct as ge}from"../../lib/document/current-product.js";import{PLACEHOLDER_RELATED as H}from"../../lib/wheels/placeholder-wheel.js";import{say as L}from"efficient-web-builder/format/lib/editor-words";const A={label:"text-[length:var(--size-label,13px)]"},ye=ce;function be(t){return e(ae,{kinds:ye,type:"RelatedProducts",editing:t.editing,children:e(xe,{...t})})}function xe({num:t,title:o,description:n,columns:c=3,cardCount:h,relationship:g=fe,footnote:y,footnoteLinkText:b,footnoteLinkHref:x,editing:r=!1,omitHead:p=!1,hover:v,ownerId:a="",template:d,cardImage:s,outline:m,indexBadge:f,columnsPhone:C,columnsTablet:M,gap:O,gapPhone:$}){const N={columns:c,columnsPhone:C,columnsTablet:M,gap:O,gapPhone:$,hover:v,ownerId:a,template:d,editing:r},l=ge(),j=se(),S=pe(h),[B,R]=W([]);V(()=>{if(l||!r)return;let E=!1;return de().then(G=>{const K=G.length>0?G:H;E||R(K)}).catch(()=>{E||R(H)}),()=>{E=!0}},[l,r]);const i=he(g);if(!i)return null;const k=me(i,j),w=p?null:e(ie,{num:t?I(t):void 0,title:le(o||i.heading,!1),description:n?I(n):void 0,accent:!0});if(!l)return r?e(D,{header:w,wheels:B.slice(0,S),viewMore:k,...N}):null;if(!ue(i,l.product.kind))return r?e(P,{className:"border-b border-line py-14 max-view-desktop:py-10",style:_(s),children:e("p",{className:`font-mono ${A.label} uppercase tracking-[0.18em] text-fg-dim`,children:L("“{relationship}” does not apply to this product. It is hidden on the live page.",{relationship:L(i.label)})})}):null;const u=i.resolve(l.product,l.relatedWheels);return u.kind==="tyre"?e(Z,{omitHead:p,columns:c,cardImage:s,outline:m,indexBadge:f,num:t,title:o||i.heading,description:n,tyres:[...u.tyres].slice(0,S),footnote:y,footnoteLinkText:b,footnoteLinkHref:x,viewMore:k,editing:r}):u.wheels.length===0?r?T(P,{className:"border-b border-line py-[120px] max-view-desktop:py-20",style:_(s),children:[w,e("p",{className:`border-t border-line py-6 font-mono ${A.label} uppercase tracking-[0.18em] text-fg-dim`,children:L("Related products appear here on a product page.")})]}):null:e(D,{header:w,wheels:[...u.wheels].slice(0,S),viewMore:k,...N})}function D({header:t,wheels:o,viewMore:n,columns:c,columnsPhone:h,columnsTablet:g,gap:y,gapPhone:b,hover:x,ownerId:r,template:p,editing:v}){const a=z("rp");if(o.length===0)return null;const d=Y(c,h,g),s=X(ee("ProductGrid",y,"both",b)),m=Q(a),f=oe(a,d,{cards:o.length});return T(P,{className:"border-b border-line py-[120px] max-view-desktop:py-20",children:[m&&e("style",{children:m}),f&&e("style",{children:f}),t,e(q,{value:{ownerId:r,Template:p,hover:x??U,imageSizes:te(d,o.length),fieldUsage:re,reserveEyebrow:!1,editing:v},children:e(J,{wheels:o,children:C=>e("div",{className:`${a} grid${s.className} bg-[var(--catalog-grid-bg)] ${d}`,style:s.style,children:C})})}),e("div",{className:"mt-10 flex",children:e(ne,{href:n.href,label:n.label})})]})}export{xe as RelatedProductsBody,be as default,ye as supportedKinds};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as
|
|
1
|
+
"use client";import{jsx as a}from"react/jsx-runtime";import b from"../SpecTable.js";import k from"./KindGate.js";import{DynamicEuTyreLabelBlock as I}from"./DynamicEuTyreLabel.js";import{buildSpecSheet as L,sourceFromWheel as v}from"../../lib/wheels/spec-sheet.js";import{buildTyreSpecSheet as z}from"../../lib/tyres/spec-sheet.js";import{partVariant as D}from"../../lib/catalog/from-wheel.js";import{useCurrentProduct as E}from"../../lib/document/current-product.js";import{NO_FIELD_ANSWERS as N,applySpecAnswers as h}from"../../lib/content/field-usage.js";import{useSampleProduct as _}from"./useSampleProduct.js";const j=["alloy-wheel","tyre"];function A(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 B(t){return a(k,{kinds:j,type:"SpecTable",editing:t.editing,children:a(F,{...t})})}function F({num:t,title:r,description:i,showDiagram:o=!0,editing:n=!1,nodeId:d,omitHead:u=!1,template:p,showEuLabel:y=!1}){const e=E(),w=_(n&&!e),l=e?.product??w,c=l?.kind==="tyre"?l.source:null,m=e?.fieldUsage??N;if(c){const T=A(c,e?.selection.part?.id,e?.selection.shown.size),x=z({brand:c.brand,variant:T});return a(b,{capped:!1,builtInLabels:!0,num:t,title:r,description:i,rows:h(x.rows,m),diagram:null,editing:n,nodeId:d,omitHead:u,template:p,footer:y?a(I,{editing:n}):void 0})}const s=l?.kind==="alloy-wheel"?l.source:null,S=e?e.selection.shown.finish:s?.finishes[0]?.name,g=e&&s?D(s,e.selection.part)?.size??void 0:void 0,f=s?L(v(s),S,g):{rows:[],diagram:null};return a(b,{capped:!1,builtInLabels:!0,num:t,title:r,description:i,rows:h(f.rows,m),diagram:o?f.diagram:null,editing:n,nodeId:d,omitHead:u,template:p})}export{B as default,j as supportedKinds};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as r
|
|
1
|
+
"use client";import{jsx as r}from"react/jsx-runtime";import m from"./KindGate.js";import{TyreSizesContent as u}from"../TyreSizeGrid.js";import{useCurrentProduct as p}from"../../lib/document/current-product.js";import{NO_FIELD_ANSWERS as f}from"../../lib/content/field-usage.js";import{useSampleProduct as l}from"./useSampleProduct.js";const y=["tyre"];function S(t){return r(m,{kinds:y,type:"TyreSizes",editing:t.editing,children:r(x,{...t})})}function x({num:t,title:n,description:s,editing:i=!1,omitHead:d=!1}){const e=p(),a=l(i&&!e),o=e?.product??a,c=o?.kind==="tyre"?o.source.variants:[];return r(u,{variants:c,fieldUsage:e?.fieldUsage??f,num:t,title:n,description:s,editing:i,omitHead:d})}export{S as default,y as supportedKinds};
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { type TyreHead } from "./DynamicFitmentTable.js";
|
|
1
2
|
import { type FitmentTableProps } from "../FitmentTable.js";
|
|
2
3
|
interface Props extends Omit<FitmentTableProps, "rows"> {
|
|
3
4
|
dynamic?: unknown;
|
|
4
5
|
wheel?: unknown;
|
|
6
|
+
tyreHead?: TyreHead;
|
|
5
7
|
}
|
|
6
|
-
export default function FitmentTableBlock({ dynamic, wheel, omitHead, ...rest }: Props): import("react").JSX.Element;
|
|
8
|
+
export default function FitmentTableBlock({ dynamic, wheel, omitHead, tyreHead, ...rest }: Props): import("react").JSX.Element;
|
|
7
9
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as m}from"react/jsx-runtime";import
|
|
1
|
+
"use client";import{jsx as m}from"react/jsx-runtime";import a from"./DynamicFitmentTable.js";import f from"../FitmentTable.js";import{useCurrentProduct as s}from"../../lib/document/current-product.js";import{isEditorOnDynamicPage as c}from"efficient-web-builder/format/lib/document/editor-page-context";import{fitmentTableIsDynamic as l}from"../../lib/document/fitment-table-dynamic.js";import{getFitments as p}from"../../lib/wheels/fitments.js";function u({dynamic:r,wheel:t,omitHead:i=!1,tyreHead:n,...o}){const e=s()!==null||!!o.editing&&c();return l({dynamic:r,wheel:t},e)?m(a,{...o,omitHead:i,tyreHead:n}):m(f,{...o,omitHead:i,rows:p(typeof t=="string"?t:"")})}export{u as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as r,jsxs as p,Fragment as se}from"react/jsx-runtime";import{LISTING_CARD_SHOW as O}from"../../lib/sections/card-show-defaults.js";import{useScopeClass as Qe}from"../../lib/use-scope-class.js";import{useCallback as d,useEffect as Ze,useMemo as i,useRef as et,useState as tt}from"react";import{CARD_IMAGE_BG_OFF as ot,resolveCardImageBackground as rt}from"efficient-web-builder/format/lib/content/card-image-background";import{cardImageShapeTokens as nt}from"efficient-web-builder/format/lib/content/card-image-shape";import{cardIndexCss as st,DEFAULT_CARD_INDEX_FORMAT as it,DEFAULT_CARD_OUTLINE as lt}from"efficient-web-builder/format/lib/sections/product-card-style";import{answersForKind as ie}from"../../lib/content/field-usage.js";import{useCurrency as
|
|
1
|
+
"use client";import{jsx as r,jsxs as p,Fragment as se}from"react/jsx-runtime";import{LISTING_CARD_SHOW as O}from"../../lib/sections/card-show-defaults.js";import{useScopeClass as Qe}from"../../lib/use-scope-class.js";import{useCallback as d,useEffect as Ze,useMemo as i,useRef as et,useState as tt}from"react";import{CARD_IMAGE_BG_OFF as ot,resolveCardImageBackground as rt}from"efficient-web-builder/format/lib/content/card-image-background";import{cardImageShapeTokens as nt}from"efficient-web-builder/format/lib/content/card-image-shape";import{cardIndexCss as st,DEFAULT_CARD_INDEX_FORMAT as it,DEFAULT_CARD_OUTLINE as lt}from"efficient-web-builder/format/lib/sections/product-card-style";import{NO_FIELD_ANSWERS as at,answersForKind as ie}from"../../lib/content/field-usage.js";import{useCurrency as ct}from"../CurrencyContext.js";import pt from"../NoCurrencyNote.js";import{usePreviewDevice as dt}from"efficient-easel/screen/components/PreviewDeviceContext";import{renderGold as mt,renderHeadline as ht}from"efficient-web-builder/render/components/goldPhrases";import{useUnifiedProductCatalog as ut}from"../useProductCatalog.js";import{scrollBehavior as ft}from"efficient-web-builder/render/components/useReducedMotion";import{normalizePlpColumns as gt,PLP_GRID_GAP_VAR as yt,plpGridVars as St}from"../../lib/wheels/plp-grid.js";import{plpCardImageSizes as xt}from"../../lib/sections/card-image-sizes.js";import{CARD_ROWS_GRID_CLASS as wt,cardRowsGridStyle as bt}from"../WheelCardFrame.js";import{applyPlpFilters as Ct,buildPlpFacets as Pt,buildPlpTypeOptions as kt,buildTyreSizeBoxes as vt,EMPTY_PLP_FILTERS as le,hasActivePlpFilters as Nt,paginatePlp as _t,pickTyreSize as Tt,plpTyreSizeBoxesShown as At,plpInStockCount as zt,plpOpeningSort as Ft,plpPriceBounds as It,plpShownKinds as Bt,plpSortKeysFor as Ot,PLP_SORT_LABELS as Lt}from"../../lib/wheels/plp-filters.js";import{itemKind as z,itemSlug as L,itemTyreSizes as Rt,plpBrandVaries as Vt,plpProcessVaries as Et,plpItemsOfKinds as Dt,plpKindNoun as R,resolvePlpKinds as Gt}from"../../lib/catalog/plp-item.js";import{plpGateWords as Kt,plpVehicleCopy as jt}from"../../lib/catalog/plp-vehicle-copy.js";import{oemBadgeSize as Mt,oemTyreSizes as $t}from"../../lib/tyres/tyre-vehicle-fitment.js";import Wt from"../TyreSummaryCard.js";import{wheelsFittingVehicle as Ut}from"../../lib/wheels/plp-fitment-match.js";import Ht from"./PlpActiveChips.js";import{DEFAULT_COVER_INDEX as Xt}from"../../lib/wheels/cover-rendering.js";import Yt from"./PlpCard.js";import qt from"./PlpPagination.js";import Jt from"./PlpSidebar.js";import{PlpResultRange as Qt,PlpToolbar as Zt}from"./PlpToolbar.js";import eo from"../catalog/SortSelect.js";import to from"./PlpVehicleBar.js";import oo from"./PlpVehicleGate.js";import{useVehicleCatalog as ro}from"./useVehicleCatalog.js";import{useVehicleFit as no}from"../fitment/useVehicleFit.js";import{usePlpFiltersInUrl as so}from"./usePlpFiltersInUrl.js";import{say as V}from"efficient-web-builder/format/lib/editor-words";const Wo={heading:"Let's find wheels that fit your car.",intro:"Tell us what you drive and we'll show you every set that bolts straight on — bolt pattern, offset and hub bore checked for you."};function io({level:C,className:P,children:k}){return r(C===2?"h2":"h1",{className:P,children:k})}function lo({heading:C="",intro:P="",askForCar:k=!0,gateHeading:E="",gateIntro:ae="",perPage:D=24,columns:ce,defaultSort:pe="recommended",hiddenFacets:de=[],fieldUsage:f=at,showPrice:G=!0,showInStock:me=!0,kinds:he,products:ue,wheels:fe,requestQuery:ge,editing:m=!1,coverIndex:ye=Xt,cardImage:Se,hover:xe,imageBackground:we,showBadge:be=!0,showCardSizes:Ce,showCardBuy:Pe,showCardPage:ke,showCardPrice:ve,showCardFinishes:Ne,outline:_e=lt,indexBadge:K=it,titleLevel:Te}){const{currency:l}=ct(),Ae=rt(we,ot),h=Gt(he),j=dt(),M=gt(ce),ze=St(M,m?j:null),Fe=xt(M,m?j:null),$=Qe("plp"),F=st($,K),Ie=ut(),W=ue??fe??Ie??[],U=i(()=>Dt(W,h),[W,h.join(",")]),o=no({editing:m,enabled:k,autoApply:!0}),[Be,I]=tt(!1),Oe=Ft(pe,h),g=o.applied?.vehicle??null,[e,x]=so({editing:m,openingSort:Oe,appliedVehicle:g,vehicleRestored:o.restored,requestQuery:ge}),c=Bt(h,e.kind),s=d(t=>x(t),[x]),H=d((t,u)=>{const a=e[t],qe=a.map(String).includes(u)?a.filter(Je=>String(Je)!==u):[...a,t==="diameters"?Number(u):u];s({...e,[t]:qe,page:1})},[e,s]),X=d(t=>s({...e,priceMax:t,page:1}),[e,s]),Y=d(t=>s({...e,inStockOnly:t,page:1}),[e,s]),q=d(t=>s({...le,kind:t,inStockOnly:e.inStockOnly,priceMax:e.priceMax,sort:e.sort}),[e.inStockOnly,e.priceMax,e.sort,s]),Le=d(t=>s({...e,sort:t,page:1}),[e,s]),Re=d(t=>{s({...e,page:t}),typeof window<"u"&&window.scrollTo({top:0,behavior:ft()})},[e,s]),J=d(()=>s({...le,sort:e.sort}),[e.sort,s]),{clear:N}=o,Q=d(()=>{N(),I(!0),x(t=>({...t,page:1}))},[N]),Ve=d(()=>{N(),I(!1),x(t=>({...t,page:1}))},[N]),_=g?[g.make,g.model,g.year,g.modification].join("|"):"",T=et(null);Ze(()=>{if(o.restored){if(T.current===null){T.current=_;return}T.current!==_&&(T.current=_,x(t=>t.page===1?t:{...t,page:1}))}},[o.restored,_,x]);const A=ro({catalog:U,shownKinds:h,vehicle:g,editing:m}),n=i(()=>{if(!o.fit)return A;const t=A.filter(a=>z(a)==="alloy-wheel"),u=new Set(Ut(t,o.fit).map(a=>a.slug));return A.filter(a=>z(a)!=="alloy-wheel"||u.has(L(a)))},[A,o.fit]),w=de.join(","),Ee=i(()=>{const t=new Set(w?w.split(","):[]);return Pt(n,e,l,c,f).filter(u=>!t.has(u.key))},[n,e,l,w,c.join(","),f]),y=i(()=>Ct(n,e,l),[n,e,l]),Z=c.length>1,De=i(()=>ie(f,"alloy-wheel"),[f]),Ge=i(()=>ie(f,"tyre"),[f]),ee=i(()=>Vt(y),[y]),Ke=i(()=>Et(y),[y]),je=i(()=>G?It(n,l):null,[n,l,G]),Me=i(()=>zt(n,e,l),[n,e,l]),$e=i(()=>kt(n,h,e,l),[n,h.join(","),e,l]),We=d((t,u)=>{const a=Tt(n.flatMap(Rt),e.tyreSizes[0]??"",t,u);s({...e,tyreSizes:a?[a]:[],page:1})},[n,e,s]),Ue=i(()=>{const t=new Set(w?w.split(","):[]);return!At(n,c)||t.has("tyreSizes")?null:vt(n,e,l)},[n,e,l,w,c.join(","),f]),S=i(()=>_t(y,e.page,D),[y,e.page,D]),b=R(c),B=jt(c),te=Kt(E,ae,c,h),oe=c.length===1&&c[0]==="tyre",re=o.applied?.stock??null,v=i(()=>$t(re),[re]),He=i(()=>n.filter(t=>c.includes(z(t))).length,[n,c.join(",")]),ne=U.length===0,Xe=!ne&&n.length===0,Ye=k&&!m&&!o.applied&&!Be;return h.length===0?null:p("section",{style:nt(Se),children:[k&&r(to,{cascade:o.cascade,appliedName:o.appliedName,fit:o.fit,fitSummary:oe&&v.length>0?`Takes ${v.join(" · ")}`:null,resolving:o.resolving,unresolved:oe?!!o.applied&&!o.resolving&&v.length===0:o.unresolved,matchCount:He,copy:B,onAmend:Ve,onClear:Q}),Ye&&r(oo,{cascade:o.cascade,heading:te.heading,intro:te.intro,ready:o.restored,copy:B,onSkip:()=>I(!0)}),p("div",{className:"px-5 py-10 md:px-[max(2.5rem,calc((100%_-_var(--sf-content-cap,100%))/2_+_2.5rem))]",children:[(C||P)&&p("header",{className:"mb-6",children:[C&&r(io,{level:Te,className:"font-display text-[clamp(28px,4vw,40px)] [font-weight:var(--sf-heading-weight,500)] [text-transform:var(--sf-heading-case,uppercase)] leading-[1.05] tracking-[-0.02em]",children:ht(C,!1)}),P&&r("p",{className:"mt-2 max-w-[60ch] text-[15px] text-fg-dim",children:mt(P)})]}),p("div",{className:"flex flex-col gap-8 lg:flex-row lg:items-start",children:[r(Jt,{facets:Ee,filters:e,typeOptions:$e,sizeBoxes:Ue,sizeMatches:e.tyreSizes.length>0?y.length:null,noun:b,priceBounds:je,inStockCount:me?Me:null,onToggle:H,onPickType:q,onPickSize:We,onPriceMax:X,onInStockOnly:Y,onClearAll:J}),p("div",{className:"min-w-0 flex-1",children:[r(Zt,{className:"mb-4",start:p(se,{children:[r(Qt,{total:S.total,range:{from:S.from,to:S.to},noun:b}),r(Ht,{filters:e,onToggle:H,onPriceMax:X,onInStockOnly:Y,onPickType:q})]}),end:r(eo,{value:e.sort,keys:Ot(h),labels:Lt,onChange:Le})}),ne?r("div",{className:"border border-dashed border-line p-10",children:r("p",{className:"font-mono text-[12px] uppercase tracking-[0.16em] text-fg-dim",children:m?b.many==="wheels"?V("No wheels in this website's catalog yet — curate products to see them here."):b.many==="tyres"?V("No tyres in this website's catalog yet — curate products to see them here."):V("No products in this website's catalog yet — curate products to see them here."):"Our catalog is being updated. Please check back shortly."})}):Xe?p("div",{className:"border border-line p-10",children:[p("h3",{className:"font-display text-[22px] font-medium uppercase tracking-[-0.01em]",children:["No confirmed fit for your ",o.appliedName]}),r("p",{className:"mt-2 max-w-[52ch] text-[14px] text-fg-dim",children:B.nothingFits}),p("button",{type:"button",onClick:Q,className:"mt-4 cursor-pointer bg-btn px-4 py-3 font-mono text-[11px] font-bold uppercase tracking-[0.24em] text-btn-ink hover:bg-fg",children:["Show all ",b.many]})]}):S.total===0?p("div",{className:"border border-line p-10",children:[p("h3",{className:"font-display text-[22px] font-medium uppercase tracking-[-0.01em]",children:["No ",b.many," match those filters"]}),r("p",{className:"mt-2 max-w-[46ch] text-[14px] text-fg-dim",children:"Try widening the price range or clearing a filter."}),Nt(e)&&r("button",{type:"button",onClick:J,className:"mt-4 cursor-pointer bg-btn px-4 py-3 font-mono text-[11px] font-bold uppercase tracking-[0.24em] text-btn-ink hover:bg-fg",children:"Clear all filters"})]}):p(se,{children:[F&&r("style",{children:F}),r("div",{className:`${F?`${$} plp-card-grid`:"plp-card-grid"} ${wt}`,style:{...ze,...bt(`var(${yt})`)},children:S.items.map(t=>z(t)==="tyre"?r(Wt,{item:t,currency:l,fitSize:v.length>0?Mt(t.sizes,v):null,kindLabel:Z?R(["tyre"]).one:null,showBrand:ee,editing:m,fieldUsage:Ge},`tyre:${L(t)}`):r(Yt,{wheel:t,colours:e.finishes,fit:o.fit,editing:m,kindLabel:Z?R(["alloy-wheel"]).one:null,showBrand:ee,coverIndex:ye,fieldUsage:De,showProcess:Ke,hover:xe,imageBackgroundFill:Ae,showBadge:be,outline:_e,indexBadge:K,showCardSizes:Ce??O.showCardSizes,showCardBuy:Pe??O.showCardBuy,showCardPage:ke??O.showCardPage,showCardPrice:ve??!0,showCardFinishes:Ne??!0,imageSizes:Fe},`wheel:${L(t)}`))})]}),r(qt,{page:S.page,pageCount:S.pageCount,onPage:Re}),r(pt,{editing:m})]})]})]})]})}export{Wo as PLP_GATE_DEFAULTS,lo as default};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type CardHoverDrawn } from "efficient-web-builder/format/lib/animation/hover";
|
|
2
2
|
import type { WheelSummary } from "../../lib/api/index.js";
|
|
3
3
|
import { type CardIndexFormat, type CardOutline } from "efficient-web-builder/format/lib/sections/product-card-style";
|
|
4
|
-
import type
|
|
4
|
+
import { type FieldUsageAnswer } from "../../lib/content/field-usage.js";
|
|
5
5
|
import { type VehicleFitment } from "../../lib/wheels/plp-fitment-match.js";
|
|
6
6
|
export interface PlpCardProps {
|
|
7
7
|
wheel: WheelSummary;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as r,Fragment as T,jsxs as G}from"react/jsx-runtime";import{CARD_IMAGE_SIZES as M}from"../../lib/sections/card-image-sizes.js";import{LISTING_CARD_SHOW as
|
|
1
|
+
"use client";import{jsx as r,Fragment as T,jsxs as G}from"react/jsx-runtime";import{CARD_IMAGE_SIZES as M}from"../../lib/sections/card-image-sizes.js";import{LISTING_CARD_SHOW as D}from"../../lib/sections/card-show-defaults.js";import U from"next/image";import{useHeldCardPicture as X}from"../card-pieces/useHeldCardPicture.js";import{useState as H}from"react";import V from"../BrandPlate.js";import Z,{CardBuyDialog as q}from"../card-pieces/CardBuyButton.js";import J from"../card-pieces/CardFinishSwatches.js";import K from"../card-pieces/CardPrice.js";import Q from"../card-pieces/CardProductBadge.js";import{useWheelCardState as Y,WheelCardStateProvider as ee}from"../card-pieces/ProductCardState.js";import{wheelCardEyebrow as re,wheelCardEyebrowShows as oe}from"../ProductCardEyebrow.js";import{withRMark as k}from"efficient-web-builder/render/components/RMark";import ae from"../WheelPlaceholder.js";import{cardSpinOf as te}from"../card-spin.js";import{cardHoverOf as se}from"efficient-web-builder/format/lib/animation/hover";import{CardSpecFacts as ie}from"../card-pieces/CardSpecs.js";import ne from"../WheelCardFrame.js";import{CARD_IMAGE_BG_OFF as le}from"efficient-web-builder/format/lib/content/card-image-background";import{itemBrand as de}from"../../lib/catalog/plp-item.js";import{CARD_INDEX_BADGE_CLASS as me,CARD_INDEX_CLASS as ce,DEFAULT_CARD_INDEX_FORMAT as he,DEFAULT_CARD_OUTLINE as pe}from"efficient-web-builder/format/lib/sections/product-card-style";import{NO_FIELD_ANSWERS as fe}from"../../lib/content/field-usage.js";import{setSecondSrc as ue}from"../../lib/wheels/set-mode.js";import{PLP_GRID_GAP_VAR as we}from"../../lib/wheels/plp-grid.js";import{FITMENT_FIELD_SEPARATOR as Se}from"../../lib/wheels/plp-fitment-match.js";import{coverSrcForWheel as Ce,DEFAULT_COVER_INDEX as ge,resolvePaintedSrc as _e}from"../../lib/wheels/cover-rendering.js";const Ee=se({},"AlloyWheelsListing");function Fe({wheel:n,colours:p,fit:l=null,editing:d=!1,brandPlate:m=!1,kindLabel:f=null,showBrand:s=!0,showProcess:u=!1,coverIndex:w=ge,fieldUsage:S=fe,hover:C=Ee,imageBackgroundFill:g=le,showBadge:_=!0,outline:E=pe,indexBadge:F=he,showCardSizes:A=D.showCardSizes,showCardBuy:b=D.showCardBuy,showCardPage:c=D.showCardPage,showCardPrice:o=!0,showCardFinishes:e=!0,imageSizes:h=M}){return r(ee,{wheel:n,colours:p,editing:d,children:r(Ae,{fit:l,brandPlate:m,kindLabel:f,showBrand:s,showProcess:u,coverIndex:w,fieldUsage:S,hover:C,imageBackgroundFill:g,showBadge:_,outline:E,indexBadge:F,showCardSizes:A,showCardBuy:b,showCardPage:c,showCardPrice:o,showCardFinishes:e,imageSizes:h})})}function Ae({fit:n,brandPlate:p,kindLabel:l,showBrand:d,showProcess:m,coverIndex:f,fieldUsage:s,hover:u,imageBackgroundFill:w,showBadge:S,outline:C,indexBadge:g,showCardSizes:_,showCardBuy:E,showCardPage:F,showCardPrice:A,showCardFinishes:b,imageSizes:c}){const{wheel:o,sel:e,isSet:h}=Y(),x=Ce(o,f,e.finish?.name,e.shownSrc,n?.holes),[B,O]=H(()=>new Set),y=a=>{e.pictureFailed(a),O(i=>i.has(a)?i:new Set(i).add(a))},L=_e({overrideSrc:x,hookSrc:e.shownSrc,failed:B}),I=de(o),P=te(u),R=(a,i)=>r(U,{alt:i,src:a,width:800,height:800,sizes:c,className:["block h-full w-full object-contain",P.className].filter(Boolean).join(" "),style:P.style,draggable:!1,onError:()=>y(a)},a),W=e.finish?`${o.name} — ${e.finish.name}`:o.name,v=h?ue(o.finishes?.find(a=>a.name===e.finish?.name),L):null,t=X({src:L,second:v,alt:W,sizes:c,failed:B,onFailed:y,near:e.nearScreen,holdEmpty:e.awaitingProbe}),$=G(T,{children:[t.src?R(t.src,t.alt):r(ae,{imageLabel:o.name,spin:P}),t.trial]}),j=t.second?R(t.second,`${t.alt} — right`):void 0,N=g!=="off"?r("span",{"aria-hidden":!0,className:`${ce} ${me}`}):null,z=re({kindLabel:l,brand:d&&I?k(I):null,process:m&&o.process?k(o.process):null},s);return G(T,{children:[r(ne,{href:`/wheels/${o.slug}`,wide:h,setGridGap:`var(${we})`,identityLink:!0,containerProps:{onPointerEnter:e.arm,onTouchStart:e.arm,onFocusCapture:e.arm},probes:e.probes,outline:C,imageBackgroundFill:w,indexBadge:N,badges:r(Q,{show:S,numbered:N!=null,sale:!0}),image:$,imageSecond:j,plate:p?r(V,{brand:I,logo:o.brandLogo}):null,eyebrow:z,wholeCardLink:!0,reserveEyebrow:oe({kind:!!l,brand:d,process:m},s),spec:r(ie,{sizes:_,fieldUsage:s,car:n,separator:Se}),price:r(K,{show:A,setTotal:!0,wasFollowsSize:!0}),swatches:r(J,{show:b,showSingle:!0}),buy:r(Z,{buy:E,page:F})}),r(q,{})]})}export{Fe as default};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type SeededNode } from "efficient-web-builder/format/lib/document/seed-parts";
|
|
2
|
+
type Props = Record<string, unknown>;
|
|
3
|
+
export declare const ARTICLE_BODY_BLOCK = "ArticleBody";
|
|
4
|
+
export declare const ARTICLE_HEADING_LOOK: Props;
|
|
5
|
+
export declare const ARTICLE_PARAGRAPH_LOOK: Props;
|
|
6
|
+
export declare const ARTICLE_MEASURE = 640;
|
|
7
|
+
export declare function articleBodySeed(nodeId: string): SeededNode[];
|
|
8
|
+
export declare function withArticleBodyTemplate(props: Props): Props;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{CARDS_BODY_LOOK as a,rowFieldTextSeed as n}from"efficient-web-builder/format/lib/document/blocks/general/Cards/card-seed";import{DIM as o,TEXT as d,seedNodes as c,token as g}from"efficient-web-builder/format/lib/document/seed-parts";const l="ArticleBody",h={textStyle:"heading-3",...g("headingSmall",20),weight:500,lineHeight:1.4,align:"center"},A={...a,align:"center"},i=640,m=[n("heading",{...d,tag:"h2",align:"center",maxWidth:i},h),n("paragraph",{...o,tag:"p",align:"center",maxWidth:i},A)];function x(e){return c(m,(t,r)=>`${e}~${r==="0"?"heading":"paragraph"}`)}function O(e){if(e.template!==void 0)return e;const t=typeof e.id=="string"&&e.id.trim()?e.id:l;return{...e,template:x(t)}}export{l as ARTICLE_BODY_BLOCK,h as ARTICLE_HEADING_LOOK,i as ARTICLE_MEASURE,A as ARTICLE_PARAGRAPH_LOOK,x as articleBodySeed,O as withArticleBodyTemplate};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const BLOG_POST_RECORD_TYPE = "blog-post";
|
|
2
|
+
export declare const ARTICLE_BODY_FIELD = "body";
|
|
3
|
+
export type ArticleRow = {
|
|
4
|
+
heading: string;
|
|
5
|
+
paragraph: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function articleRows(body: unknown): ArticleRow[];
|
|
8
|
+
export declare function sampleArticleRows(): ArticleRow[];
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{say as t}from"efficient-web-builder/format/lib/editor-words";import{sanitizeHtml as o}from"efficient-web-builder/render/lib/document/sanitize";const g="blog-post",l="body",p={"&":"&","<":"<",">":">",""":'"',"'":"'","'":"'"," ":" ","’":"’","‘":"‘","“":"“","”":"”","—":"—","–":"–","…":"…"};function n(r){return r.replace(/&[a-z]+;|&#\d+;/gi,a=>p[a.toLowerCase()]??a)}function i(r){return r?(/<[a-z][\s\S]*?>/i.test(r)?r.replace(/<\/(p|div|h[1-6]|li|blockquote|section|article|ul|ol)>/gi,`
|
|
2
|
+
|
|
3
|
+
`).replace(/<br\s*\/?>/gi,`
|
|
4
|
+
|
|
5
|
+
`).replace(/<[^>]+>/g,""):r).split(/\n{2,}/).map(e=>n(e).replace(/[ \t]+/g," ").trim()).filter(Boolean):[]}function s(r){return r.length<60&&/^[A-Z][^.]*\.$/.test(r.trim())}function u(r){return typeof r!="string"||!r.trim()?[]:i(o(r)).map(a=>s(a)?{heading:a,paragraph:""}:{heading:"",paragraph:a})}function d(){return[{heading:t("A subhead."),paragraph:""},{heading:"",paragraph:t("Each paragraph of the post's body is drawn by the card template.")},{heading:"",paragraph:t("Another paragraph.")}]}export{l as ARTICLE_BODY_FIELD,g as BLOG_POST_RECORD_TYPE,u as articleRows,d as sampleArticleRows};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{CARD_ROW_FIELD_PROP as s}from"efficient-web-builder/format/lib/content/card-template";import{RECORD_TITLE_FIELD as m}from"efficient-web-builder/format/lib/content/record-row";import{TEMPLATE_RECORD_TYPE_PROP as _}from"efficient-web-builder/format/lib/content/record-types";import{BOX_TYPE as n,CONTAINER_BLOCKS_SLOT as r}from"efficient-web-builder/format/lib/document/container-blocks";import{BOX as g,DIM as c,TEXT as E,boxPadding as p,seedNodes as O,token as d}from"efficient-web-builder/format/lib/document/seed-parts";import{BLOG_POST_RECORD_TYPE as P}from"./article-body.js";import{ARTICLE_BODY_BLOCK as l,ARTICLE_HEADING_LOOK as T,ARTICLE_MEASURE as y,ARTICLE_PARAGRAPH_LOOK as R,articleBodySeed as B}from"./article-body-seed.js";const a={...g,direction:"column",align:"center"},i=(e,o,t)=>({type:"Text",props:{...o,text:"",[s]:e,align:"center",maxWidth:y,_partStyles:{text:{...t,align:"center"}}}}),L=[{type:n,props:{...a,name:"Title",gap:16,...p(64,32,40,20),sectionPaddingBottom:16,sectionPaddingBottomPhone:16},slots:{[r]:[i("category",{...c,tag:"p"},{textStyle:"body-1",...d("label",13),case:"upper",letterSpacing:.2}),i(m,{...E,tag:"h1"},T),i("excerpt",{...c,tag:"p"},R)]}},{type:n,props:{...a,align:"stretch",name:"Cover",...p(0,0,0,0)},slots:{[r]:[{type:"ImageBlock",props:{[s]:"cover",aspect:"16/9",contained:!0,widthMode:"page",...p(0,32,0,20)}}]}},{type:n,props:{...a,name:"Body",...p(0,32,0,20),sectionPaddingBottom:64,sectionPaddingBottomPhone:40},slots:{[r]:[{type:l,props:{}}]}},{type:n,props:{...a,align:"stretch",name:"Breadcrumb",...p(0,0,0,0)},slots:{[r]:[{type:"Breadcrumb",props:{items:[{label:"Home",href:"/"},{label:"Journal",href:"/journal"}],meta:"",[s]:m}}]}}];function x(){const e=O(L,(o,t)=>`article-${o}-${t.replace(/\./g,"-")}`).map(u);return{root:{props:{[_]:P}},content:e,zones:{}}}function u(e){const o=e.props[r];return Array.isArray(o)?{...e,props:{...e.props,[r]:o.map(t=>t.type===l?{...t,props:{...t.props,template:B(String(t.props.id))}}:t)}}:e}export{x as articlePageDocument};
|
|
@@ -12,6 +12,7 @@ export interface FieldUsageAnswer {
|
|
|
12
12
|
specOrder?: number | null;
|
|
13
13
|
fitmentOrder?: number | null;
|
|
14
14
|
}
|
|
15
|
+
export declare const NO_FIELD_ANSWERS: readonly FieldUsageAnswer[];
|
|
15
16
|
export declare function answersForKind(answers: readonly FieldUsageAnswer[], kind: string): readonly FieldUsageAnswer[];
|
|
16
17
|
export declare function applyCardAnswers<T extends {
|
|
17
18
|
fieldKey?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const g=Object.freeze([]);function k(e,n){return e.length===0?e:e.filter(o=>o.kind===void 0||o.kind===n)}function K(e,n){if(n.length===0)return e;const o=y(n);return s(e.filter(r=>o(r.fieldKey)),r=>r.fieldKey,n,"cardOrder")}function w(e,n){const o=n==="filter"?"filterOrder":"cardOrder",r=new Map;for(const t of e){const d=t[o];if(typeof d!="number"||!Number.isFinite(d))continue;const l=r.get(t.fieldKey);(l===void 0||d<l)&&r.set(t.fieldKey,d)}return t=>t?r.get(t):void 0}function a(e){return c(e,"spec")}function F(e,n){if(n.length===0)return e;const o=a(n),r=e.filter(t=>o(t.fieldKey));return s(r,t=>t.fieldKey,n,"specOrder")}function s(e,n,o,r){const t=new Map;for(const i of o){const f=i[r];typeof f=="number"&&t.set(i.fieldKey,f)}if(t.size===0)return e;const d=[],l=[];e.forEach((i,f)=>{const p=n(i);p&&(d.push(f),l.push({item:i,index:f,order:t.get(p)}))}),l.sort((i,f)=>i.order!==void 0&&f.order!==void 0?i.order-f.order||i.index-f.index:i.order!==void 0?-1:f.order!==void 0?1:i.index-f.index);const u=[...e];return d.forEach((i,f)=>{u[i]=l[f].item}),u.every((i,f)=>i===e[f])?e:u}function y(e){return c(e,"card")}function O(e){return c(e,"filter")}const h="collection";function m(e,n){return{tyreSizes:{},brands:{"alloy-wheel":"brand",tyre:"brand"},finishes:{"alloy-wheel":"wheel_finish_ref"},diameters:{"alloy-wheel":"diameter",tyre:"rim_diameter"},collections:{"alloy-wheel":h},pcds:{"alloy-wheel":"pcd"},tyreTypes:{tyre:"tire_type"},speedRatings:{tyre:"speed_rating"}}[e]?.[n]}function x(e){return{size:"size",finish:"wheel_finish_ref",loadIndex:"load_index",speedRating:"speed_rating",tyreType:"tire_type",boltPattern:"bolt_pattern",et:"et",centreBore:"center_bore"}[e]}function _(e,n,o){const r=x(e);if(!r)return n;const t=o.find(d=>d.fieldKey===r)?.variant;return t===void 0?n:t==="none"?null:t}function E(e,n){if(n.length===0)return e;const o=[];let r=!1;for(const t of e){const d=_(t.key,t.role,n);if(d===null){r=!0;continue}if(d===t.role){o.push(t);continue}r=!0,o.push({...t,role:d})}return r?o:e}function c(e,n){const o=new Set(e.filter(r=>r[n]===!1).map(r=>r.fieldKey));return r=>!r||!o.has(r)}export{h as COLLECTION_FIELD_KEY,g as NO_FIELD_ANSWERS,w as answerOrder,k as answersForKind,K as applyCardAnswers,F as applySpecAnswers,E as applyVariantAnswers,m as facetFieldKey,y as keepForCard,O as keepForFilter,a as keepForSpec,x as optionFieldKey,s as orderByAnswers,_ as variantRoleFor};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type BlockSeed, type SeededNode } from "efficient-web-builder/format/lib/document/seed-parts";
|
|
2
|
+
type Props = Record<string, unknown>;
|
|
3
|
+
export declare const PRODUCT_PICTURE_BLOCK = "ProductPicture";
|
|
4
|
+
export declare const PRODUCT_SPECS_BLOCK = "ProductSpecs";
|
|
5
|
+
export declare const PRODUCT_BUY_BLOCK = "ProductBuy";
|
|
6
|
+
export declare const PRODUCT_PRICE_BLOCK = "ProductPrice";
|
|
7
|
+
export declare const PRODUCT_COLOUR_BLOCK = "ProductColour";
|
|
8
|
+
export declare const PRODUCT_SIZE_BLOCK = "ProductSize";
|
|
9
|
+
export declare const PRODUCT_EYEBROW_BLOCK = "ProductEyebrow";
|
|
10
|
+
export declare const PRODUCT_NAME_BLOCK = "ProductName";
|
|
11
|
+
export declare const PRODUCT_CARD_SLOT_BLOCKS: readonly ["ProductPicture", "ProductEyebrow", "ProductName", "ProductSpecs", "ProductPrice", "ProductColour", "ProductSize", "ProductBuy"];
|
|
12
|
+
export declare const PRODUCT_CARD_FIELDS: readonly [{
|
|
13
|
+
readonly key: "name";
|
|
14
|
+
readonly label: "Name";
|
|
15
|
+
}, {
|
|
16
|
+
readonly key: "eyebrow";
|
|
17
|
+
readonly label: "Eyebrow";
|
|
18
|
+
}, {
|
|
19
|
+
readonly key: "href";
|
|
20
|
+
readonly label: "Product page";
|
|
21
|
+
readonly kind: "link";
|
|
22
|
+
}];
|
|
23
|
+
export interface ProductCardSeedOptions {
|
|
24
|
+
legacyWellHonoured?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export declare function productCardSeed(props: Props, options?: ProductCardSeedOptions): BlockSeed;
|
|
27
|
+
export declare function productCardTemplate(props: Props, options?: ProductCardSeedOptions): SeededNode[];
|
|
28
|
+
export declare function withProductCardTemplate(props: Props, options?: ProductCardSeedOptions): Props;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{BOX_TYPE as m,CONTAINER_BLOCKS_SLOT as R}from"efficient-web-builder/format/lib/document/container-blocks";import{INNER_BOX as f,boxPadding as l,seedNodes as p}from"efficient-web-builder/format/lib/document/seed-parts";import{THEME_CARD_IMAGE_BG as h,resolveBoundCardImageBackground as D}from"efficient-web-builder/format/lib/content/card-image-background";import{SHARED_ROWS_KEY as E}from"efficient-web-builder/render/lib/content/box-shared-columns";import{GRID_CARD_SHOW as i}from"../sections/card-show-defaults.js";const s="ProductPicture",C="ProductSpecs",_="ProductBuy",P="ProductPrice",O="ProductColour",T="ProductSize",B="ProductEyebrow",g="ProductName",A=[s,B,g,C,P,O,T,_],N=[{key:"name",label:"Name"},{key:"eyebrow",label:"Eyebrow"},{key:"href",label:"Product page",kind:"link"}],x={...f,gap:0,gapPhone:0,...l(32,32,32,32),[E]:"shared"},w=e=>typeof e.id=="string"&&e.id.trim()?e.id:"ProductGrid",n=(e,o)=>typeof e=="boolean"?e:o;function S(e,o={}){const a=e.dynamic===!0,r={},d=a?o.legacyWellHonoured?e.imageBackground??h:D(e.imageBackground):e.imageBackground;d!==void 0&&(r.imageBackground=d);for(const c of["cardImage","coverIndex","indexBadge","showBadge"])e[c]!==void 0&&(r[c]=e[c]);const t={price:n(e.showCardPrice,!0),finishes:n(e.showCardFinishes,!0),sizes:n(e.showCardSizes,i.showCardSizes),buy:n(e.showCardBuy,i.showCardBuy),page:n(e.showCardPage,i.showCardPage)},u={...x,name:"Card"};e.outline==="hairline"&&(u.sectionBorder={width:1,style:"solid"});const y=[{type:s,props:r},{type:B},{type:g},{type:C,props:{sizes:t.sizes}},...t.price?[{type:P}]:[],...t.finishes?[{type:O}]:[],...t.buy||t.page?[{type:_,props:{buy:t.buy,page:t.page}}]:[]];return{type:m,props:u,slots:{[R]:y}}}function b(e,o={}){const a=w(e);return p([S(e,o)],(r,d)=>`${a}~card-${d}-${r}`)}function z(e,o={}){return e.template!==void 0?e:{...e,template:b(e,o)}}export{_ as PRODUCT_BUY_BLOCK,N as PRODUCT_CARD_FIELDS,A as PRODUCT_CARD_SLOT_BLOCKS,O as PRODUCT_COLOUR_BLOCK,B as PRODUCT_EYEBROW_BLOCK,g as PRODUCT_NAME_BLOCK,s as PRODUCT_PICTURE_BLOCK,P as PRODUCT_PRICE_BLOCK,T as PRODUCT_SIZE_BLOCK,C as PRODUCT_SPECS_BLOCK,S as productCardSeed,b as productCardTemplate,z as withProductCardTemplate};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const CURRENT_LINE: {
|
|
2
|
+
readonly rowLink: "relative opacity-100";
|
|
3
|
+
readonly row: "pointer-events-none absolute inset-x-0 -bottom-2 h-[2px] bg-accent";
|
|
4
|
+
readonly tab: "absolute inset-x-0 -bottom-px h-[2px] bg-accent";
|
|
5
|
+
};
|
|
6
|
+
export declare const TAB_CELLS: {
|
|
7
|
+
readonly list: "m-0 flex list-none items-stretch gap-0 overflow-auto p-0 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden";
|
|
8
|
+
readonly item: "flex";
|
|
9
|
+
readonly tab: (first: boolean, current: boolean) => string;
|
|
10
|
+
readonly underline: "absolute inset-x-0 -bottom-px h-[2px] bg-accent";
|
|
11
|
+
};
|
|
12
|
+
export declare const TAB_PILLS: {
|
|
13
|
+
readonly nav: "-mx-1 [scrollbar-width:none] max-view-wide:overflow-x-auto [&::-webkit-scrollbar]:hidden";
|
|
14
|
+
readonly list: "flex flex-wrap gap-2 px-1 pb-1 max-view-wide:min-w-max max-view-wide:flex-nowrap";
|
|
15
|
+
readonly tab: (current: boolean) => string;
|
|
16
|
+
};
|
|
17
|
+
export declare function currentLinkIndex(hrefs: readonly string[], pagePath: string | null | undefined): number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{normalizePath as r}from"efficient-web-builder/format/lib/popup/rules";import{menuLinkKind as i}from"../menu-link.js";const a="[scrollbar-width:none] [&::-webkit-scrollbar]:hidden",x="text-[length:var(--size-label,13px)]",l={rowLink:"relative opacity-100",row:"pointer-events-none absolute inset-x-0 -bottom-2 h-[2px] bg-accent",tab:"absolute inset-x-0 -bottom-px h-[2px] bg-accent"},b={list:`m-0 flex list-none items-stretch gap-0 overflow-auto p-0 ${a}`,item:"flex",tab:(e,t)=>[`relative block whitespace-nowrap border-r border-line px-[26px] py-[18px] font-mono ${x} uppercase tracking-[0.22em] transition-colors`,e?"border-l border-line":"",t?"text-fg":"text-fg-dim hover:text-fg"].join(" "),underline:l.tab},s={nav:"-mx-1 [scrollbar-width:none] max-view-wide:overflow-x-auto [&::-webkit-scrollbar]:hidden",list:"flex flex-wrap gap-2 px-1 pb-1 max-view-wide:min-w-max max-view-wide:flex-nowrap",tab:e=>`flex flex-col gap-0.5 rounded-[var(--sf-button-radius,999px)] border px-5 py-2.5 transition-colors ${e?"border-accent bg-accent text-accent-ink":"border-line text-fg hover:border-accent hover:text-accent"}`};function d(e,t){if(!t)return-1;const n=r(t);return e.findIndex(o=>i(o)==="page"&&r(o)===n)}export{l as CURRENT_LINE,b as TAB_CELLS,s as TAB_PILLS,d as currentLinkIndex};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={label:"Fitment picker",defaultProps:{}};export{e as FitmentPickerMeta};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import i from"../../../../../components/fitment/FitmentPickerPart.js";import{phoneKey as o}from"efficient-easel/draw";import{FitmentPickerMeta as r}from"./meta.js";const s={...r,render:e=>t(i,{layout:e.layout==="short"?"short":"tall",pickerColumns:e.pickerColumns,pickerColumnsPhone:e[o("pickerColumns")],editing:!!e.editor?.isEditing})};export{s as FitmentPickerRender};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{PH as t}from"efficient-web-builder/format/lib/document/blocks/placeholders";const
|
|
1
|
+
import{PH as t}from"efficient-web-builder/format/lib/document/blocks/placeholders";const e={num:t.sectionNumber,title:"Specifications *table.*",description:t.body,footnote:"Add a short footnote here.",footnoteLinkText:"Contact us"},n={label:"Sizes",defaultProps:{dynamic:!1,num:"",title:"",description:"",wheel:"",showFilter:!0,tooltipDefaultOn:!0,footnote:"",footnoteLinkText:"",footnoteLinkHref:""}};export{e as FITMENTTABLE_PH,n as FitmentTableMeta};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as l}from"react/jsx-runtime";import r from"../../../../../components/pdp-dynamic/FitmentTableBlock.js";import{TYRE_SIZES_HEAD as d}from"../../../../../components/TyreSizeGrid.js";import{hidableText as a}from"efficient-easel/screen/lib/document/hidable";import{parseSectionHeadPlacement as c}from"efficient-web-builder/format/lib/sections/section-head-placement";import{phHide as e,phHideDefault as m}from"efficient-web-builder/render/lib/document/blocks/scaffold";import{FitmentTableMeta as T,FITMENTTABLE_PH as i}from"./meta.js";const F={...T,render:t=>{const o=c(t.headPlacement)==="own-box",n=f=>o?void 0:f;return l(r,{dynamic:t.dynamic,wheel:t.wheel,num:n(e(t.num,i.num,t.editor)),title:n(e(t.title,i.title,t.editor)),description:n(e(t.description,i.description,t.editor)),tyreHead:o?void 0:{title:m(t.title,d.title,t.editor),description:m(t.description,d.description,t.editor)},omitHead:o,showFilter:t.showFilter,tooltipDefaultOn:t.tooltipDefaultOn,footnote:e(t.footnote,i.footnote,t.editor),footnoteLinkText:e(t.footnoteLinkText,i.footnoteLinkText,t.editor),footnoteLinkHref:a(t.footnoteLinkHref),editing:t.editor?.isEditing})}};export{F as FitmentTableRender};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={label:"Buy",defaultProps:{buy:!0,page:!0}};export{e as ProductBuyMeta};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import o from"../../../../../components/card-pieces/HostPart.js";import a from"../../../../../components/card-pieces/CardBuyButton.js";import{ProductBuyMeta as t}from"./meta.js";const n={...t,render:e=>r(o,{label:t.label??"",editing:!!e.editor?.isEditing,children:r(a,{buy:e.buy!==!1,page:e.page!==!1})})};export{n as ProductBuyRender};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={label:"Eyebrow",defaultProps:{}};export{e as ProductEyebrowMeta};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as o}from"react/jsx-runtime";import{withRMark as s}from"efficient-web-builder/render/components/RMark";import l from"../../../../../components/card-pieces/CardEyebrow.js";import{readPartStyles as a}from"efficient-web-builder/render/lib/document/part-styles";import m from"../../../../../components/card-pieces/HostPart.js";import{useProductCardState as c}from"../../../../../components/card-pieces/ProductCardState.js";import{useGridCard as f}from"../../../../../components/GridCardTemplate.js";import{wheelCardEyebrow as u}from"../../../../../components/ProductCardEyebrow.js";import{ProductEyebrowMeta as t}from"./meta.js";function w({region:e}){const r=c(),{fieldUsage:i,reserveEyebrow:n}=f(),d=r.kind==="wheel"&&r.wheel.process?s(r.wheel.process):null;return o(l,{reserve:n,region:e,children:u({kindLabel:null,brand:null,process:d},i)})}const x={...t,render:e=>{const r=!!e.editor?.isEditing;return o(m,{label:t.label??"",editing:r,children:o(w,{region:{nodeId:typeof e.id=="string"?e.id:void 0,partStyles:a(e),editing:r}})})}};export{x as ProductEyebrowRender};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{DEFAULT_TITLE_SIZE as
|
|
1
|
+
import{DEFAULT_TITLE_SIZE as o}from"../../../../sections/product-grid-title.js";import{cardTemplateSlot as l}from"efficient-web-builder/format/lib/content/card-template";import{PRODUCT_CARD_SLOT_BLOCKS as e}from"../../../../content/product-card-seed.js";const t=l(),r={products:{type:"slot"},template:{...t,allow:[...t.allow,...e]}},d={label:"Product Grid",fields:r,defaultProps:{dynamic:!1,num:"",title:"",titleSize:o,padTop:120,description:"",linkText:"",linkHref:"",columns:4,limit:8,showAll:!1,source:null}};export{d as ProductGridMeta,r as ProductGridSlots};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as g}from"react/jsx-runtime";import{phoneKey as d,tabletKey as h}from"efficient-easel/draw";import b from"../../../../../components/pdp-dynamic/DynamicRelatedProducts.js";import{DEFAULT_RELATIONSHIP as y}from"../../../../catalog/relationships.js";import{resolveWidth as T}from"efficient-web-builder/format/lib/content/section-width";import I from"../../../../../components/ProductGridSection.js";import{relatedCardCount as k}from"../../../../catalog/related-cards.js";import{hidableText as G}from"efficient-easel/screen/lib/document/hidable";import{cardHoverOf as P}from"efficient-web-builder/format/lib/animation/hover";import{parseSectionHeadPlacement as x}from"efficient-web-builder/format/lib/sections/section-head-placement";import{PH as o}from"efficient-web-builder/format/lib/document/blocks/placeholders";import{phHide as t}from"efficient-web-builder/render/lib/document/blocks/scaffold";import{PRODUCTGRID_PH as l}from"../placeholders.js";import{ProductGridMeta as C}from"./meta.js";const F={...C,render:e=>{const a=typeof e.id=="string"?e.id:"",c=e.template;if(e.dynamic){const n=x(e.headPlacement)==="own-box",m=H=>n?void 0:H;return g(b,{num:m(t(e.num,l.num,e.editor)),title:m(t(e.title,o.sectionHeading,e.editor)),description:m(t(e.description,o.body,e.editor)),omitHead:n,columns:typeof e.columns=="number"?e.columns:3,columnsPhone:e[d("columns")],columnsTablet:e[h("columns")],gap:e.gap,gapPhone:e[d("gap")],cardCount:k(e.limit),relationship:typeof e.relationship=="string"?e.relationship:y,hover:P(e,"ProductGrid"),ownerId:a,template:c,cardImage:e.cardImage,outline:e.outline,indexBadge:e.indexBadge,editing:e.editor?.isEditing})}const u=t(e.linkText,l.link,e.editor),r=e.source,w=T(e,"full"),f=x(e.headPlacement)==="own-box",i=n=>f?void 0:n;return g(I,{gap:e.gap,gapPhone:e[d("gap")],contentCapped:w.mode==="page",num:i(t(e.num,l.num,e.editor)),title:i(t(e.title,o.sectionHeading,e.editor)),titleSize:e.titleSize,padTop:f?0:e.padTop,description:i(t(e.description,o.body,e.editor)),link:i(u?{text:u,href:G(e.linkHref)||"#"}:void 0),products:e.products,wheels:e.wheels,source:r?.slug?r:void 0,catalog:e.catalog,kinds:e.kinds,fieldUsage:e.fieldUsage,columns:e.columns,columnsPhone:e[d("columns")],columnsTablet:e[h("columns")],limit:e.showAll?void 0:e.limit,editing:e.editor?.isEditing,hover:P(e,"ProductGrid"),ownerId:a,template:c})}};export{F as ProductGridRender};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={label:"Name",defaultProps:{}};export{e as ProductNameMeta};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as r}from"react/jsx-runtime";import o from"../../../../../components/card-pieces/CardName.js";import{readPartStyles as d}from"efficient-web-builder/render/lib/document/part-styles";import n from"../../../../../components/card-pieces/HostPart.js";import{ProductNameMeta as i}from"./meta.js";const c={...i,render:e=>{const t=!!e.editor?.isEditing;return r(n,{label:i.label??"",editing:t,children:r(o,{region:{nodeId:typeof e.id=="string"?e.id:void 0,partStyles:d(e),editing:t}})})}};export{c as ProductNameRender};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{DEFAULT_CARD_INDEX_FORMAT as e}from"efficient-web-builder/format/lib/sections/product-card-style";const r={label:"Picture",defaultProps:{indexBadge:e,showBadge:!0}};export{r as ProductPictureMeta};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import a from"../../../../../components/card-pieces/CardProductPicture.js";import i from"../../../../../components/card-pieces/HostPart.js";import{ProductPictureMeta as d}from"./meta.js";const g={...d,render:e=>r(i,{label:d.label??"",editing:!!e.editor?.isEditing,children:r(a,{imageBackground:e.imageBackground,cardImage:e.cardImage,coverIndex:e.coverIndex,indexBadge:e.indexBadge,showBadge:e.showBadge})})};export{g as ProductPictureRender};
|