efficient-storefront-blocks 0.91.0 → 0.92.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/chunks/{EditorPreviewCheckout-NFLTZCIQ.js → EditorPreviewCheckout-VHPWPS3N.js} +1 -1
  3. package/dist/chunks/{SiteEditorProvider-UWRLDKJS.js → SiteEditorProvider-C4HT4BT4.js} +1 -1
  4. package/dist/chunks/chunk-7L5DVQZ4.js +1 -0
  5. package/dist/chunks/chunk-PW7BA4ZJ.js +1 -0
  6. package/dist/chunks/{chunk-HRTZ7SYX.js → chunk-RAOSZKA3.js} +1 -1
  7. package/dist/chunks/chunk-S2WLJ6H2.js +388 -0
  8. package/dist/chunks/{fitment-data-6KHIA3AT.js → fitment-data-URJZ24LU.js} +1 -1
  9. package/dist/contract.js +11 -11
  10. package/dist/editor/lib/document/blocks/commerce/AlloyWheelsListing/fields.js +1 -1
  11. package/dist/editor/lib/document/blocks/commerce/index.d.ts +1 -1
  12. package/dist/editor/lib/document/blocks/service/AppointmentBooking/fields.js +1 -1
  13. package/dist/editor/lib/document/blocks/service/ContactRouting/fields.js +1 -1
  14. package/dist/editor/lib/document/blocks/service/Events/fields.js +1 -1
  15. package/dist/editor/lib/document/blocks/service/index.d.ts +1 -1
  16. package/dist/editor/lib/document/config.d.ts +2 -0
  17. package/dist/editor/lib/document/config.js +1 -1
  18. package/dist/editor/lib/storefront-editor-words.d.ts +2 -7
  19. package/dist/editor/lib/storefront-editor-words.js +1 -1
  20. package/dist/editor.css +1 -1
  21. package/dist/index.js +53 -39
  22. package/dist/links.js +1 -1
  23. package/dist/render/built-with.json +1 -1
  24. package/dist/render/components/AppointmentBooking.d.ts +2 -1
  25. package/dist/render/components/AppointmentBooking.js +1 -1
  26. package/dist/render/components/ContactRouting.d.ts +2 -1
  27. package/dist/render/components/ContactRouting.js +1 -1
  28. package/dist/render/components/Events.d.ts +3 -1
  29. package/dist/render/components/Events.js +1 -1
  30. package/dist/render/components/GridCardTemplate.d.ts +30 -1
  31. package/dist/render/components/GridCardTemplate.js +1 -1
  32. package/dist/render/components/ProductGridSection.d.ts +2 -1
  33. package/dist/render/components/ProductGridSection.js +1 -1
  34. package/dist/render/components/PublishedFooter.js +1 -1
  35. package/dist/render/components/PublishedHeader.js +1 -1
  36. package/dist/render/components/RatingBlockView.d.ts +5 -0
  37. package/dist/render/components/RatingBlockView.js +1 -0
  38. package/dist/render/components/ReviewForm.js +1 -1
  39. package/dist/render/components/TyrePlpCard.d.ts +2 -1
  40. package/dist/render/components/TyrePlpCard.js +1 -1
  41. package/dist/render/components/TyreSummaryCard.d.ts +2 -1
  42. package/dist/render/components/TyreSummaryCard.js +1 -1
  43. package/dist/render/components/WheelCardFrame.d.ts +1 -2
  44. package/dist/render/components/WheelCardFrame.js +1 -1
  45. package/dist/render/components/card-pieces/CardPicture.d.ts +1 -1
  46. package/dist/render/components/card-pieces/CardProductPicture.js +1 -1
  47. package/dist/render/components/wheels-plp/AlloyWheelsListing.d.ts +5 -14
  48. package/dist/render/components/wheels-plp/AlloyWheelsListing.js +1 -1
  49. package/dist/render/lib/api/index.d.ts +3 -1
  50. package/dist/render/lib/api/index.js +1 -1
  51. package/dist/render/lib/chrome-cache.d.ts +1 -0
  52. package/dist/render/lib/chrome-cache.js +1 -1
  53. package/dist/render/lib/content/events-featured-look.d.ts +3 -0
  54. package/dist/render/lib/content/events-featured-look.js +1 -0
  55. package/dist/render/lib/content/product-card-seed.d.ts +7 -0
  56. package/dist/render/lib/content/product-card-seed.js +1 -1
  57. package/dist/render/lib/content/rating.d.ts +1 -0
  58. package/dist/render/lib/content/rating.js +1 -0
  59. package/dist/render/lib/document/blocks/commerce/AlloyWheelsListing/meta.d.ts +6 -0
  60. package/dist/render/lib/document/blocks/commerce/AlloyWheelsListing/meta.js +1 -1
  61. package/dist/render/lib/document/blocks/commerce/AlloyWheelsListing/render.js +1 -1
  62. package/dist/render/lib/document/blocks/commerce/ProductColour/render.js +1 -1
  63. package/dist/render/lib/document/blocks/commerce/ProductEyebrow/render.js +1 -1
  64. package/dist/render/lib/document/blocks/commerce/ProductGrid/render.js +1 -1
  65. package/dist/render/lib/document/blocks/commerce/ProductPrice/render.js +1 -1
  66. package/dist/render/lib/document/blocks/commerce/ProductSpecs/render.js +1 -1
  67. package/dist/render/lib/document/blocks/service/AppointmentBooking/render.js +1 -1
  68. package/dist/render/lib/document/blocks/service/ContactRouting/render.js +1 -1
  69. package/dist/render/lib/document/blocks/service/Events/meta.d.ts +6 -0
  70. package/dist/render/lib/document/blocks/service/Events/meta.js +1 -1
  71. package/dist/render/lib/document/blocks/service/Events/render.js +1 -1
  72. package/dist/render/lib/document/blocks/service/RatingBlock/meta.d.ts +2 -1
  73. package/dist/render/lib/document/blocks/service/RatingBlock/meta.js +1 -1
  74. package/dist/render/lib/document/blocks/service/RatingBlock/render.js +1 -1
  75. package/dist/render/lib/document/card-templates.d.ts +3 -1
  76. package/dist/render/lib/document/card-templates.js +1 -1
  77. package/dist/render/lib/document/published-chrome-data.d.ts +2 -0
  78. package/dist/render/lib/document/published-chrome-data.js +1 -0
  79. package/dist/render/lib/document/render-config.d.ts +2 -0
  80. package/dist/render/lib/document/render-config.js +1 -1
  81. package/dist/render/lib/document/section-to-box-rows-detail.js +1 -1
  82. package/dist/render/lib/document/section-to-box-rows-events.d.ts +1 -0
  83. package/dist/render/lib/document/section-to-box-rows-events.js +1 -0
  84. package/dist/render/lib/document/section-to-box-rows-reviews.d.ts +2 -1
  85. package/dist/render/lib/document/section-to-box-rows-reviews.js +1 -1
  86. package/dist/render/lib/document/section-to-box-rows-service.d.ts +1 -0
  87. package/dist/render/lib/document/section-to-box-rows-service.js +1 -0
  88. package/dist/render/lib/document/section-to-box-rows-spec.js +1 -1
  89. package/dist/render/lib/sections/grid-no-hole.d.ts +1 -1
  90. package/dist/render/lib/wheels/plp-hydrate.d.ts +3 -0
  91. package/dist/render/lib/wheels/plp-hydrate.js +1 -1
  92. package/dist/words.d.ts +12 -7
  93. package/dist/words.js +4 -4
  94. package/package.json +4 -2
  95. package/dist/chunks/chunk-4VRLGKYU.js +0 -387
  96. package/dist/chunks/chunk-PHQQRGQZ.js +0 -1
  97. package/dist/chunks/chunk-YL2HPWVT.js +0 -1
  98. package/dist/render/components/wheels-plp/PlpCard.d.ts +0 -29
  99. package/dist/render/components/wheels-plp/PlpCard.js +0 -1
  100. /package/dist/chunks/{chunk-XMTQMRA3.js → chunk-JB6ISWYA.js} +0 -0
  101. /package/dist/chunks/{chunk-4VRLGKYU.js.LEGAL.txt → chunk-S2WLJ6H2.js.LEGAL.txt} +0 -0
@@ -1 +1 @@
1
- import{jsx as r}from"react/jsx-runtime";import n,{RATING_STARS as o}from"../../../../../components/RatingStars.js";import{HideTaker as a}from"efficient-web-builder/render/components/ViewHideRoot";import{RATING_NONE as t,RatingBlockMeta as m}from"./meta.js";function f(i){return typeof i=="number"&&Number.isFinite(i)&&i>t?i:t}function g({rating:i,editing:e}){return i>t?r(n,{rating:i}):e?r(a,{className:"opacity-60",children:r(n,{rating:o})}):null}const R={...m,render:i=>r(g,{rating:f(i.rating),editing:!!i.editor?.isEditing})};export{R as RatingBlockRender};
1
+ import{jsx as e}from"react/jsx-runtime";import n from"../../../../../components/RatingBlockView.js";import{namedRowField as r}from"efficient-web-builder/format/lib/content/card-template";import{RATING_NONE as t,RatingBlockMeta as o}from"./meta.js";function m(i){return typeof i=="number"&&Number.isFinite(i)&&i>t?i:t}const l={...o,render:i=>e(n,{rating:m(i.rating),field:r(i),editing:!!i.editor?.isEditing})};export{l as RatingBlockRender};
@@ -1,5 +1,7 @@
1
1
  import { type CardTemplateSpec } from "efficient-web-builder/format/lib/content/card-template";
2
- import type { BlockSeed } from "efficient-web-builder/format/lib/document/seed-parts";
2
+ import { type BlockSeed } from "efficient-web-builder/format/lib/document/seed-parts";
3
+ export declare const eventsCardSeeds: () => BlockSeed[];
4
+ export declare function withEventsTemplate(props: Record<string, unknown>): Record<string, unknown>;
3
5
  export declare const drawsKits: (props: Record<string, unknown>) => boolean;
4
6
  export declare const productGridCardSeed: (props?: Record<string, unknown>) => BlockSeed;
5
7
  export declare const STOREFRONT_CARD_TEMPLATES: readonly CardTemplateSpec[];
@@ -1 +1 @@
1
- import{registerCardTemplates as d}from"efficient-web-builder/format/lib/content/card-template";import{withRelatedTabletColumns as t}from"../sections/product-grid-columns.js";import{bundleColumns as s}from"../sections/bundle-to-grid.js";import{HERO_PRICE_BLOCK as c,withHeroPriceTemplate as k}from"../content/hero-price-seed.js";import{CARD_LIST_TYPE as n}from"efficient-web-builder/format/lib/content/card-template";import{FILTER_OPTIONS_FIELD as C,withFilterChipsTemplate as m,withFilterTemplate as y}from"../content/filter-card-seed.js";import{MENU_LINK_BLOCK as u,withMenuTemplate as O}from"../content/menu-card-seed.js";import{ARTICLE_BODY_BLOCK as T,withArticleBodyTemplate as p}from"../content/article-body-seed.js";import{PRODUCT_BUY_BLOCK as _,PRODUCT_CARD_FIELDS as P,PRODUCT_COLOUR_BLOCK as R,PRODUCT_EYEBROW_BLOCK as E,PRODUCT_NAME_BLOCK as L,PRODUCT_PICTURE_BLOCK as f,PRODUCT_PRICE_BLOCK as h,PRODUCT_SIZE_BLOCK as B,PRODUCT_SPECS_BLOCK as w,productCardSeed as D,withKitCardTemplate as a,withProductCardTemplate as i}from"../content/product-card-seed.js";const S=["showCardPrice","showCardFinishes","showCardSizes","showCardBuy","showCardPage"],g=e=>Object.fromEntries(Object.entries(e).filter(([l])=>!S.includes(l))),r={fields:[{key:"label",label:"Label"},{key:"href",label:"Link",kind:"link"}],blocks:[{type:u,label:"Menu link"}],seed:O},b=e=>e.dynamic===!0&&e.relationship==="bundles",x=(e={})=>D(e),o={fields:P,blocks:[{type:f,label:"Picture"},{type:E,label:"Eyebrow"},{type:L,label:"Name"},{type:w,label:"Specs"},{type:h,label:"Price"},{type:R,label:"Colour"},{type:B,label:"Size"},{type:_,label:"Buy"}],seed:e=>{if(e.dynamic!==!0)return i(e);const l=t(e);return b(e)?a(l):i(l)}},U=[{block:"Reviews",fields:[{key:"quote",label:"Quote"},{key:"title",label:"Title"},{key:"name",label:"Name"},{key:"role",label:"Role · location"},{key:"rating",label:"Rating"},{key:"dateLabel",label:"Date"}]},{block:"SpecTable",fields:[{key:"label",label:"Label"},{key:"value",label:"Value"}]},{block:"DetailRows",fields:[{key:"eyebrow",label:"Eyebrow"},{key:"title",label:"Title"},{key:"copy",label:"Body",multiline:!0},{key:"image",label:"Image",kind:"image",alt:"title"},{key:"tag",label:"Image tag"}]},{block:"FooterMenu",...r},{block:"MenuBlock",...r},{block:"ProductGrid",...o},{block:"RelatedProducts",...o,seed:e=>{const l=t({...g(e),dynamic:!0});return b(l)?a(l):i(l,{legacyWellHonoured:!0})}},{block:"BundleOffer",...o,seed:e=>a(t({...e,columns:s(e),dynamic:!0}))},{block:"ProductHero",fields:[],blocks:[{type:c,label:"Price"}],seed:k},{block:"FilterBlock",fields:[{key:"label",label:"Filter name"},{key:C,label:"Options",kind:"list",fields:[{key:"label",label:"Option"},{key:"count",label:"Count"}]}],blocks:[{type:n,label:"Card list"}],seed:y},{block:"FilterChipsBlock",fields:[{key:"label",label:"Pick"},{key:"mark",label:"Remove mark"}],seed:m},{block:T,fields:[{key:"heading",label:"Subhead"},{key:"paragraph",label:"Paragraph",multiline:!0}],seed:p}];d(U);export{U as STOREFRONT_CARD_TEMPLATES,b as drawsKits,x as productGridCardSeed};
1
+ import{CARD_ROW_FIELD_PROP as h,CARD_ROW_LINK_PROP as g,registerCardTemplates as D}from"efficient-web-builder/format/lib/content/card-template";import{DIM as o,INNER_BOX as a,TEXT as s,boxPadding as d,fillSlot as w,labelLook as N,labelStyle as B,seedNodes as A,token as p}from"efficient-web-builder/format/lib/document/seed-parts";import{BOX_TYPE as i,CONTAINER_BLOCKS_SLOT as n}from"efficient-web-builder/format/lib/document/container-blocks";import{BOX_ROW_IMAGE_PROP as F}from"efficient-web-builder/format/lib/content/box-card-rule";import{POST_CARD_HEIGHT as I}from"efficient-web-builder/format/lib/post-card-layout";import{EVENTS_FEATURED_DARKEN as K,EVENTS_FEATURED_DARKEN_STYLE as P,EVENTS_FEATURED_PLACEMENT as U}from"../content/events-featured-look.js";import{SH_LINK as H}from"efficient-web-builder/render/lib/document/blocks/general/section-to-box-row-parts";import{rowFieldTextSeed as l}from"efficient-web-builder/format/lib/document/blocks/general/Cards/card-seed";import{withRelatedTabletColumns as b}from"../sections/product-grid-columns.js";import{bundleColumns as x}from"../sections/bundle-to-grid.js";import{HERO_PRICE_BLOCK as M,withHeroPriceTemplate as V}from"../content/hero-price-seed.js";import{CARD_LIST_TYPE as E}from"efficient-web-builder/format/lib/content/card-template";import{FILTER_OPTIONS_FIELD as v,withFilterChipsTemplate as W,withFilterTemplate as G}from"../content/filter-card-seed.js";import{MENU_LINK_BLOCK as Y,withMenuTemplate as $}from"../content/menu-card-seed.js";import{ARTICLE_BODY_BLOCK as X,withArticleBodyTemplate as j}from"../content/article-body-seed.js";import{PRODUCT_BUY_BLOCK as z,PRODUCT_CARD_FIELDS as q,PRODUCT_COLOUR_BLOCK as Q,PRODUCT_EYEBROW_BLOCK as Z,PRODUCT_NAME_BLOCK as J,PRODUCT_PICTURE_BLOCK as ee,PRODUCT_PRICE_BLOCK as te,PRODUCT_SIZE_BLOCK as le,PRODUCT_SPECS_BLOCK as oe,productCardSeed as ae,withKitCardTemplate as m,withListingCardTemplate as ie,withProductCardTemplate as T}from"../content/product-card-seed.js";const u="tags",r=N(12),O={textStyle:"heading-3",...p("headingSmall",20),weight:500,lineHeight:1.2,letterSpacing:-.02},C={textStyle:"body-1",...p("body",14),lineHeight:1.55},ne={...O,...p("headingSmall",30)},re={sectionPaddingTop:24,sectionPaddingRight:28,sectionPaddingBottom:32,sectionPaddingLeft:28,sectionPaddingTopPhone:24,sectionPaddingRightPhone:28,sectionPaddingBottomPhone:32,sectionPaddingLeftPhone:28},se=I.fallback,de=480,ce=70,pe=()=>({type:i,props:{...a,name:"Featured",[F]:"cover",darken:K,darkenStyle:P,darkenPhone:ce,darkenStylePhone:P,placement:U,direction:"column",gap:8,gapPhone:8,...d(32,32,20,20),sectionHeightMode:"fixed",sectionHeightValue:se,sectionHeightUnit:"px",sectionHeightModePhone:"fixed",sectionHeightValuePhone:de,sectionHeightUnitPhone:"px",[g]:"href"},slots:{[n]:[l("meta",{...s,tag:"p"},r,!0),l("title",{...s,tag:"h3",widthFit:"fill"},ne),l("excerpt",{...o,tag:"p",widthFit:"fill",maxWidth:384},C),l("dateLabel",{...o,tag:"p"},{...r,color:"muted"})]}}),be=()=>({type:i,props:{...a,name:"Post",gap:0,gapPhone:0,...d(0,0,0,0),...w("surface"),shadow:!0},slots:{[n]:[{type:"ImageBlock",props:{[h]:"cover",aspect:"16/10",contained:!1}},{type:i,props:{...a,name:"Words",gap:12,gapPhone:12,...re},slots:{[n]:[{type:i,props:{...a,name:"Meta",direction:"row",wrap:!0,share:"content",sharePhone:"content",phoneRow:2,gap:12,gapPhone:12,...d(0,0,0,0)},slots:{[n]:[l("meta",{...s,tag:"p"},r,!0),l("dateLabel",{...o,tag:"p"},{...r,color:"muted"},!0)]}},l("title",{...s,tag:"h3",widthFit:"fill"},O),l("excerpt",{...o,tag:"p",widthFit:"fill"},C),{type:E,props:{[h]:u},slots:{template:[{type:i,props:{...a,name:"Chip",...d(4,8,4,8),sectionBorder:{width:1}},slots:{[n]:[l("label",{...o,tag:"p"},r)]}}]}},{type:"ButtonBlock",props:{variant:"ghost",label:"Read more",href:"",[g]:"href",...H,icon:"arrow-right",iconPosition:"after",_partStyles:{label:B(12)}}}]}}]}}),Ee=()=>[pe(),be()];function me(e){if(e.template!==void 0)return e;const t=typeof e.id=="string"&&e.id.trim()?e.id:"Events",L=["featured","post"];return{...e,template:A(Ee(),(he,S)=>{const[_,...k]=S.split("."),y=L[Number(_)]??`card${_}`;return k.length?`${t}~${y}.${k.join(".")}`:`${t}~${y}`})}}const Te={fields:[{key:"cover",label:"Cover",kind:"image",alt:"title"},{key:"meta",label:"Eyebrow"},{key:"dateLabel",label:"Date"},{key:"title",label:"Title"},{key:"excerpt",label:"Excerpt",multiline:!0},{key:"href",label:"Link",kind:"link"},{key:u,label:"Tags",kind:"list",fields:[{key:"label",label:"Tag"}]}],blocks:[{type:E,label:"Card list"}],seedOnInsert:me},_e=["showCardPrice","showCardFinishes","showCardSizes","showCardBuy","showCardPage"],ke=e=>Object.fromEntries(Object.entries(e).filter(([t])=>!_e.includes(t))),R={fields:[{key:"label",label:"Label"},{key:"href",label:"Link",kind:"link"}],blocks:[{type:Y,label:"Menu link"}],seed:$},f=e=>e.dynamic===!0&&e.relationship==="bundles",Ke=(e={})=>ae(e),c={fields:q,blocks:[{type:ee,label:"Picture"},{type:Z,label:"Eyebrow"},{type:J,label:"Name"},{type:oe,label:"Specs"},{type:te,label:"Price"},{type:Q,label:"Colour"},{type:le,label:"Size"},{type:z,label:"Buy"}],seed:e=>{if(e.dynamic!==!0)return T(e);const t=b(e);return f(e)?m(t):T(t)}},ye=[{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"}],blocks:[{type:"RatingBlock",label:"Rating"}]},{block:"SpecTable",fields:[{key:"label",label:"Label"},{key:"value",label:"Value"}]},{block:"DetailRows",fields:[{key:"eyebrow",label:"Eyebrow"},{key:"title",label:"Title"},{key:"copy",label:"Body",multiline:!0},{key:"image",label:"Image",kind:"image",alt:"title"},{key:"tag",label:"Image tag"}]},{block:"FooterMenu",...R},{block:"MenuBlock",...R},{block:"ProductGrid",...c},{block:"AlloyWheelsListing",...c,seed:ie},{block:"RelatedProducts",...c,seed:e=>{const t=b({...ke(e),dynamic:!0});return f(t)?m(t):T(t,{legacyWellHonoured:!0})}},{block:"BundleOffer",...c,seed:e=>m(b({...e,columns:x(e),dynamic:!0}))},{block:"ProductHero",fields:[],blocks:[{type:M,label:"Price"}],seed:V},{block:"FilterBlock",fields:[{key:"label",label:"Filter name"},{key:v,label:"Options",kind:"list",fields:[{key:"label",label:"Option"},{key:"count",label:"Count"}]}],blocks:[{type:E,label:"Card list"}],seed:G},{block:"FilterChipsBlock",fields:[{key:"label",label:"Pick"},{key:"mark",label:"Remove mark"}],seed:W},{block:X,fields:[{key:"heading",label:"Subhead"},{key:"paragraph",label:"Paragraph",multiline:!0}],seed:j},{block:"Events",...Te}];D(ye);export{ye as STOREFRONT_CARD_TEMPLATES,f as drawsKits,Ee as eventsCardSeeds,Ke as productGridCardSeed,me as withEventsTemplate};
@@ -0,0 +1,2 @@
1
+ import type { Data } from "efficient-easel/blocks";
2
+ export declare function publishedChromeData(data: Data): Data;
@@ -0,0 +1 @@
1
+ import{migrateRenamedProps as o}from"efficient-web-builder/format/lib/document/renamed-props";import{dropEmptySourcedBoxes as m}from"efficient-web-builder/render/lib/document/head-core-boxes";import{markWallLabels as e}from"efficient-web-builder/render/lib/document/wall-labels";function i(r){return e(m(o(r)))}export{i as publishedChromeData};
@@ -4,6 +4,8 @@ import "./card-templates.js";
4
4
  import "./section-to-box-rows-reviews.js";
5
5
  import "./section-to-box-rows-spec.js";
6
6
  import "./section-to-box-rows-productgrid.js";
7
+ import "./section-to-box-rows-events.js";
7
8
  import "./section-to-box-rows-detail.js";
9
+ import "./section-to-box-rows-service.js";
8
10
  export declare function renderConfig(): Config;
9
11
  export declare function headerRenderConfig(): Config;
@@ -1 +1 @@
1
- import{Fragment as u,jsx as E}from"react/jsx-runtime";import{generalRenderMetas as h}from"efficient-web-builder/format/lib/document/blocks/general/metas";import{finishRenderRegistry as g}from"efficient-web-builder/render/lib/document/render-registry";import{buildBlockCategories as S}from"efficient-web-builder/format/lib/document/section-catalog";import{SITE_HEADER_TYPE as a}from"efficient-web-builder/format/lib/document/section-groups";import"./slot-seeds.js";import"./card-templates.js";import"./section-to-box-rows-reviews.js";import"./section-to-box-rows-spec.js";import"./section-to-box-rows-productgrid.js";import"./section-to-box-rows-detail.js";import{COMMERCE_METAS as R}from"./blocks/commerce/metas.js";import{SERVICE_METAS as _}from"./blocks/service/metas.js";import P from"./blocks/text-part-shapes.json";import{addPageBlocksFromFooter as y}from"./footer-page-blocks.js";import{LAZY_DRAWS as f}from"./lazy-draws.js";import{drawPublishedStorefrontRoot as T}from"./storefront-root.js";import{withShopperAddressMark as b}from"../../components/catalog/ShopperScope.js";import{SHOPPER_BLOCK_TYPES as k}from"../wheels/shopper-first-paint.js";const A=P,O=(t,e)=>{const r=A[t];return{...e,...r?{textParts:r}:null}};let p=null;function l(){if(p)return p;const t={},e=h();for(const o of Object.keys(e))t[o]={...e[o],render:f[o]};const r={...R,..._};for(const o of Object.keys(r)){const c=k.has(o)?b(f[o]):f[o];t[o]=O(o,{...r[o],render:c})}y(t);const n={root:{render:T},categories:S(),components:t};return g(n),p=n,n}function j(t=l()){const e=t.components,r=Object.keys(e),n=new Set([a]),o=[a];for(;o.length;){const c=o.shift();for(const m of Object.values(e[c]?.fields??{})){if(m?.type!=="slot")continue;const d=m.allow??r.filter(s=>!m.disallow?.includes(s));for(const s of d)n.has(s)||!(s in e)||(n.add(s),o.push(s))}}return[...n]}let i=null;function G(){if(i)return i;const t=l(),e=t.components;return i={...t,root:{render:({children:r})=>E(u,{children:r})},components:Object.fromEntries(j(t).map(r=>[r,e[r]]))},i}export{G as headerRenderConfig,l as renderConfig};
1
+ import{Fragment as u,jsx as E}from"react/jsx-runtime";import{generalRenderMetas as h}from"efficient-web-builder/format/lib/document/blocks/general/metas";import{finishRenderRegistry as g}from"efficient-web-builder/render/lib/document/render-registry";import{buildBlockCategories as S}from"efficient-web-builder/format/lib/document/section-catalog";import{SITE_HEADER_TYPE as a}from"efficient-web-builder/format/lib/document/section-groups";import"./slot-seeds.js";import"./card-templates.js";import"./section-to-box-rows-reviews.js";import"./section-to-box-rows-spec.js";import"./section-to-box-rows-productgrid.js";import"./section-to-box-rows-events.js";import"./section-to-box-rows-detail.js";import"./section-to-box-rows-service.js";import{COMMERCE_METAS as R}from"./blocks/commerce/metas.js";import{SERVICE_METAS as _}from"./blocks/service/metas.js";import P from"./blocks/text-part-shapes.json";import{addPageBlocksFromFooter as y}from"./footer-page-blocks.js";import{LAZY_DRAWS as f}from"./lazy-draws.js";import{drawPublishedStorefrontRoot as T}from"./storefront-root.js";import{withShopperAddressMark as b}from"../../components/catalog/ShopperScope.js";import{SHOPPER_BLOCK_TYPES as k}from"../wheels/shopper-first-paint.js";const A=P,O=(t,e)=>{const r=A[t];return{...e,...r?{textParts:r}:null}};let p=null;function l(){if(p)return p;const t={},e=h();for(const o of Object.keys(e))t[o]={...e[o],render:f[o]};const r={...R,..._};for(const o of Object.keys(r)){const m=k.has(o)?b(f[o]):f[o];t[o]=O(o,{...r[o],render:m})}y(t);const n={root:{render:T},categories:S(),components:t};return g(n),p=n,n}function j(t=l()){const e=t.components,r=Object.keys(e),n=new Set([a]),o=[a];for(;o.length;){const m=o.shift();for(const c of Object.values(e[m]?.fields??{})){if(c?.type!=="slot")continue;const d=c.allow??r.filter(s=>!c.disallow?.includes(s));for(const s of d)n.has(s)||!(s in e)||(n.add(s),o.push(s))}}return[...n]}let i=null;function N(){if(i)return i;const t=l(),e=t.components;return i={...t,root:{render:({children:r})=>E(u,{children:r})},components:Object.fromEntries(j(t).map(r=>[r,e[r]]))},i}export{N as headerRenderConfig,l as renderConfig};
@@ -1 +1 @@
1
- import{SECTION_BOX_SLOT as o,SECTION_BOX_TYPE as i,registerSectionToBox as g}from"efficient-web-builder/render/lib/sections/section-to-box";import{DIM as a,INNER_BOX as r,NO_PAD as m,SAME_KEYS as y,SECTION_BOX as S,TEXT as p}from"efficient-web-builder/render/lib/document/blocks/general/section-to-box-row-parts";import{token as n}from"efficient-web-builder/render/lib/document/blocks/general/section-head-looks";import{CARD_ROW_FIELD_PROP as s}from"efficient-web-builder/format/lib/content/card-template";const c=e=>({textStyle:"body-5",...n("label",e),letterSpacing:.2,case:"upper"}),t=(e,l,d)=>({type:"Text",props:{...l,[s]:e,_partStyles:{text:d}}}),P=e=>({type:i,props:{...r,name:"Row",mirrorCards:e?"odd":"even",direction:"row",share:"equal",align:"center",gap:48,sectionPaddingTop:60,sectionPaddingBottom:60,sectionPaddingTopPhone:60,sectionPaddingBottomPhone:60},slots:{[o]:[{type:i,props:{...r,name:"Words",direction:"column",gap:16},slots:{[o]:[t("eyebrow",p,{...c(13),color:"accent"}),t("title",p,{textStyle:"heading-2",...n("headingMedium",42,28),lineHeight:1.1,letterSpacing:-.02}),t("copy",a,{textStyle:"body-1",...n("body",15),lineHeight:1.6})]}},{type:i,props:{...r,name:"Picture",direction:"column",gap:12},slots:{[o]:[{type:"ImageBlock",props:{[s]:"image",aspect:"1/1",fit:"contain"}},t("tag",{...a,align:"right"},{...c(11),align:"right"})]}}]}}),_={name:"Feature Rows",boxProps:{...S,...m,direction:"column",gap:0},box:y,parts:[{kind:"core",keep:"rest",slots:e=>({template:[P(e.startLeft===!0)]})}]};g({DetailRows:_});export{P as detailRowSeed};
1
+ import{SECTION_BOX_SLOT as o,SECTION_BOX_TYPE as i,registerSectionToBox as c}from"efficient-web-builder/render/lib/sections/section-to-box";import{DIM as a,INNER_BOX as r,NO_PAD as d,SAME_KEYS as l,SECTION_BOX as m,TEXT as p}from"efficient-web-builder/render/lib/document/blocks/general/section-to-box-row-parts";import{token as n}from"efficient-web-builder/render/lib/document/blocks/general/section-head-looks";import{CARD_ROW_FIELD_PROP as g}from"efficient-web-builder/format/lib/content/card-template";import{rowFieldTextSeed as t}from"efficient-web-builder/format/lib/document/blocks/general/Cards/card-seed";const s=e=>({textStyle:"body-5",...n("label",e),letterSpacing:.2,case:"upper"}),S=e=>({type:i,props:{...r,name:"Row",mirrorCards:e?"odd":"even",direction:"row",share:"equal",align:"center",gap:48,sectionPaddingTop:60,sectionPaddingBottom:60,sectionPaddingTopPhone:60,sectionPaddingBottomPhone:60},slots:{[o]:[{type:i,props:{...r,name:"Words",direction:"column",gap:16},slots:{[o]:[t("eyebrow",p,{...s(13),color:"accent"}),t("title",p,{textStyle:"heading-2",...n("headingMedium",42,28),lineHeight:1.1,letterSpacing:-.02}),t("copy",a,{textStyle:"body-1",...n("body",15),lineHeight:1.6})]}},{type:i,props:{...r,name:"Picture",direction:"column",gap:12},slots:{[o]:[{type:"ImageBlock",props:{[g]:"image",aspect:"1/1",fit:"contain"}},t("tag",{...a,align:"right"},{...s(11),align:"right"})]}}]}}),y={name:"Feature Rows",boxProps:{...m,...d,direction:"column",gap:0},box:l,parts:[{kind:"core",keep:"rest",slots:e=>({template:[S(e.startLeft===!0)]})}]};c({DetailRows:y});export{S as detailRowSeed};
@@ -0,0 +1 @@
1
+ import{registerSectionToBox as o}from"efficient-web-builder/render/lib/sections/section-to-box";import{headOnlyRow as e}from"efficient-web-builder/render/lib/document/blocks/general/section-to-box-rows-head";import{CARD_TEMPLATE_SLOT as r}from"efficient-web-builder/format/lib/content/card-template";import{SECTION_ACCENT_INHERIT as t}from"efficient-web-builder/format/lib/content/section-surface";import{eventsCardSeeds as m}from"./card-templates.js";o({Events:e("Events",{slots:{[r]:m()},coreProps:{sectionAccent:t},roomBelow:{bottom:120,bottomPhone:70},pressHeading:!0})});
@@ -1 +1,2 @@
1
- export {};
1
+ import { type OwnPad } from "efficient-web-builder/render/lib/document/blocks/general/section-to-box-row-parts";
2
+ export declare const REVIEWS_BAND_OWN: OwnPad;
@@ -1 +1 @@
1
- import{SECTION_BOX_SLOT as s,SECTION_BOX_TYPE as n,headParts as c,registerSectionToBox as m}from"efficient-web-builder/render/lib/sections/section-to-box";import{DIM as a,DROP_COMMON as h,DROP_SIDE_PADDING as g,INNER_BOX as o,SAME_KEYS as P,SECTION_BOX as T,TEXT as e,headingCaseOf as O,wrapperPad as y,wrapperPadKeys as S}from"efficient-web-builder/render/lib/document/blocks/general/section-to-box-row-parts";import{CARD_ROW_FIELD_PROP as _}from"efficient-web-builder/format/lib/content/card-template";import{FRAME_OWN_BOX as b}from"../../components/Reviews.js";import{bandRoomBelow as x}from"../sections/section-band.js";const p=x(b),r={top:84,bottom:p.bottom,topPhone:84,bottomPhone:p.bottomPhone},[w,E]=c("Testimonials"),i=(t,d,l)=>({type:"Text",props:{...d,[_]:t,_partStyles:{text:l}}}),R={type:n,props:{...o,name:"Card",gap:20,sectionPaddingTop:36,sectionPaddingBottom:36,sectionPaddingLeft:36,sectionPaddingRight:36,sectionPaddingTopPhone:28,sectionPaddingBottomPhone:28,sectionPaddingLeftPhone:28,sectionPaddingRightPhone:28,sectionAccent:0},slots:{[s]:[{type:"Text",props:{...e,text:"“",_partStyles:{text:{textStyle:"heading-2",color:"accent",lineHeight:1}}}},i("quote",a,{size:16,lineHeight:1.6}),{type:n,props:{...o,name:"Name",gap:4,sectionPaddingTop:20,sectionBorder:{top:1}},slots:{[s]:[i("name",e,{textStyle:"body-5",weight:500,case:"upper",letterSpacing:.04}),i("role",a,{textStyle:"body-5"})]}}]}},B={name:"Testimonials",boxProps:t=>({...T,direction:"column",gap:44,sectionBorder:{top:1},...y(t,r)}),box:[...P,...S(r)],parts:[{kind:"group",name:"Heading",props:{...o,gap:16},parts:[{...w,props:e},{...E,props:e,style:{textStyle:"heading-2",lineHeight:1,letterSpacing:-.02}}]},{kind:"core",as:"Reviews",keep:["items","columns"],slots:{template:[R]}}],site:O("title"),drop:{...h,...g,eyebrowLook:"the eyebrow Text wears the plain eyebrow's start look (Testimonials' default); a stored `filled` look needs a filled Text look",headPlacement:"the head is the Text blocks above the Reviews block, which is always own-box here"}};m({Testimonials:B});
1
+ import{SECTION_BOX_SLOT as i,SECTION_BOX_TYPE as n,headParts as d,registerSectionToBox as l}from"efficient-web-builder/render/lib/sections/section-to-box";import{DIM as s,DROP_COMMON as c,DROP_SIDE_PADDING as m,INNER_BOX as t,SAME_KEYS as g,SECTION_BOX as h,TEXT as e,headingCaseOf as P,wrapperPad as T,wrapperPadKeys as O}from"efficient-web-builder/render/lib/document/blocks/general/section-to-box-row-parts";import{rowFieldTextSeed as o}from"efficient-web-builder/format/lib/document/blocks/general/Cards/card-seed";import{FRAME_OWN_BOX as S}from"../../components/Reviews.js";import{bandRoomBelow as b}from"../sections/section-band.js";const a=b(S),y={top:84,bottom:a.bottom,topPhone:84,bottomPhone:a.bottomPhone},r=y,[x,_]=d("Testimonials"),w={type:n,props:{...t,name:"Card",gap:20,sectionPaddingTop:36,sectionPaddingBottom:36,sectionPaddingLeft:36,sectionPaddingRight:36,sectionPaddingTopPhone:28,sectionPaddingBottomPhone:28,sectionPaddingLeftPhone:28,sectionPaddingRightPhone:28,sectionAccent:0},slots:{[i]:[{type:"Text",props:{...e,text:"“",_partStyles:{text:{textStyle:"heading-2",color:"accent",lineHeight:1}}}},o("quote",s,{size:16,lineHeight:1.6}),{type:n,props:{...t,name:"Name",gap:4,sectionPaddingTop:20,sectionBorder:{top:1}},slots:{[i]:[o("name",e,{textStyle:"body-5",weight:500,case:"upper",letterSpacing:.04}),o("role",s,{textStyle:"body-5"})]}}]}},E={name:"Testimonials",boxProps:p=>({...h,direction:"column",gap:44,sectionBorder:{top:1},...T(p,r)}),box:[...g,...O(r)],parts:[{kind:"group",name:"Heading",props:{...t,gap:16},parts:[{...x,props:e},{..._,props:e,style:{textStyle:"heading-2",lineHeight:1,letterSpacing:-.02}}]},{kind:"core",as:"Reviews",keep:["items","columns"],slots:{template:[w]}}],site:P("title"),drop:{...c,...m,eyebrowLook:"the eyebrow Text wears the plain eyebrow's start look (Testimonials' default); a stored `filled` look needs a filled Text look",headPlacement:"the head is the Text blocks above the Reviews block, which is always own-box here"}};l({Testimonials:E});export{y as REVIEWS_BAND_OWN};
@@ -0,0 +1 @@
1
+ import{SECTION_BOX_SLOT as f,SECTION_BOX_TYPE as O,convertTheme as C,headParts as _,registerSectionToBox as H}from"efficient-web-builder/render/lib/sections/section-to-box";import{BUTTON as I,DIM as a,DROP_COMMON as s,DROP_SIDE_PADDING as c,FOLLOW_THE_BOX as W,INNER_BOX as p,SAME_KEYS as E,SECTION_BOX as g,SH_LINK as D,TEXT as r,bandPage as R,smallText as m,wrapperPad as y,wrapperPadKeys as S}from"efficient-web-builder/render/lib/document/blocks/general/section-to-box-row-parts";import{boxPadding as F,token as o}from"efficient-web-builder/format/lib/document/seed-parts";import{surfacePresetIndex as K}from"efficient-web-builder/format/lib/theme";import{CARD_ROW_FIELD_PROP as L}from"efficient-web-builder/format/lib/content/card-template";import{phoneKey as b}from"efficient-easel/draw";import{REVIEWS_BAND_OWN as M}from"./section-to-box-rows-reviews.js";import{rowFieldTextSeed as d}from"efficient-web-builder/format/lib/document/blocks/general/Cards/card-seed";const w=(e,t)=>{const n=C(t)?.themes,i=n?K(n,R(e,t)):-1;return i>=0?i:e},l=e=>[...E.filter(t=>t!=="sectionAccent"),["sectionAccent","sectionAccent",(t,n,i)=>w(t,i)],...S(e)],x=(e,t,n)=>(i,N)=>({...g,sectionAccent:w(i.sectionAccent??0,N),direction:"column",gap:t,gapPhone:n,sectionBorder:{top:1},...y(i,e)}),P=(e,t,n)=>({kind:"text",key:e,role:"heading",props:r,style:{textStyle:"heading-2",...o("headingMedium",44,32),weight:500,case:"upper",lineHeight:t,letterSpacing:n}}),u=(e,t,n={})=>({kind:"group",name:"Heading",props:{...p,gap:e,gapPhone:e,...n},parts:t}),k=(e={})=>({kind:"core",keep:"rest",props:W,...e}),h=M,[X]=_("ReviewForm"),G=()=>({name:"Review Form",boxProps:x(h,48,32),box:l(h),parts:[u(16,[{...X,props:r},P("title",1,-.02)]),k()],pressKeepsEmpty:["eyebrow","title"],drop:{...s,...c,headPlacement:"the head is the Text blocks above the form, which is always own-box here"}}),[V]=_("Reviews"),T=e=>({textStyle:"body-5",...o("label",12),case:"upper",letterSpacing:e}),j={type:O,props:{...p,name:"Card",gap:16,...F(40,40,32,32),sectionAccent:0},slots:{[f]:[{type:"RatingBlock",props:{[L]:"rating"}},d("title",r,{textStyle:"heading-1",...o("body",19),weight:500,case:"upper",lineHeight:1.2,letterSpacing:-.01}),d("quote",a,{textStyle:"body-1",...o("body",15),lineHeight:1.65}),{type:O,props:{...p,name:"Byline",direction:"row",justify:"between",align:"start",share:"content",phoneRow:2,[b("share")]:"content",gap:16,sectionPaddingTop:20,sectionPaddingTopPhone:20,sectionBorder:{top:1}},slots:{[f]:[d("name",r,T(.22)),d("dateLabel",{...a,align:"right"},{...T(.18),align:"right"}),d("role",{...a,align:"right"},{...T(.18),align:"right"})]}}]}},Y=()=>({name:"Reviews",boxProps:x(h,48,32),box:l(h),parts:[u(16,[{...V,props:r},P("title",1,-.02)]),k({slots:{template:[j]}})],pressKeepsEmpty:["eyebrow","title"],drop:{...s,...c,eyebrowLook:"the eyebrow Text wears the plain eyebrow's start look (Reviews' default); a stored `filled` look needs a filled Text look",headPlacement:"the head is the Text blocks above the reviews, which are always own-box here"}}),B={top:88,bottom:88,topTablet:88,bottomTablet:88,topPhone:64,bottomPhone:64},q=()=>({name:"Booking Form",boxProps:x(B,40,40),box:l(B),parts:[u(16,[m("eyebrow",{...o("label",12),weight:600,letterSpacing:.24,color:"accent"}),P("heading",.98,-.025),{kind:"text",key:"intro",props:{...a,maxWidth:660},style:{textStyle:"heading-1",...o("body",17),weight:400,case:"none",lineHeight:1.65,color:"muted"}}],{maxWidth:760}),k()],pressKeepsEmpty:["eyebrow","heading","intro"],drop:{...s,...c}}),A={top:88,bottom:88,topPhone:64,bottomPhone:64},U=()=>({name:"Ready-to-Order Banner",boxProps:e=>({...g,direction:"column",align:"center",gap:20,gapPhone:20,...y(e,A)}),box:[...E,...S(A)],parts:[{...m("eyebrow"),props:{...r,align:"center"}},{kind:"text",key:"title",role:"heading",props:{...r,align:"center",maxWidth:720},style:{textStyle:"heading-1",...o("headingMedium",44,30),weight:500,case:"none",lineHeight:1.05,letterSpacing:-.03,align:"center"}},{kind:"text",key:"body",props:{...r,align:"center",maxWidth:560},style:{textStyle:"body-1",...o("body",16),lineHeight:1.6,align:"center"}},{kind:"group",name:"Buttons",props:{...p,direction:"row",align:"center",justify:"center",share:"content",phoneRow:2,[b("share")]:"content",gap:24,gapPhone:24,sectionPaddingTop:8,sectionPaddingTopPhone:8},parts:[{kind:"button",key:"ctaText",href:"ctaHref",variant:"primary",props:e=>({...I,align:"center",href:typeof e.ctaHref=="string"&&e.ctaHref?e.ctaHref:"/checkout"})},{kind:"button",key:"secondaryText",href:"secondaryHref",variant:"ghost",props:{...D,align:"center",icon:"none"},style:{...o("label",13),case:"upper",letterSpacing:.2,color:"muted"}}]}],pressKeepsEmpty:["eyebrow","title","body"],drop:{...s,...c}}),v={top:60,bottom:0,topPhone:60,bottomPhone:0},z=()=>({name:"Contact Form",boxProps:(e,t)=>({...g,sectionAccent:w(e.sectionAccent??0,t),direction:"column",gap:0,gapPhone:0,...y(e,v)}),box:l(v),parts:[{kind:"group",name:"Header",props:{...p,direction:"row",align:"center",share:"content",phoneRow:2,[b("share")]:"content",gap:24,gapPhone:24,sectionPaddingBottom:24,sectionPaddingBottomPhone:24,sectionBorder:{bottom:1}},parts:[m("routingNumber"),{kind:"text",key:"routingTagline",props:a,style:{textStyle:"heading-1",...o("body",14),weight:400,case:"upper",letterSpacing:.04,color:"muted"}}]},{kind:"core",keep:"rest",derive:{reads:["sectionAccent"],props:(e,t)=>({sectionAccent:R(e.sectionAccent??0,t)})}}],drop:{...s,...c}});H({ContactRouting:z(),ReviewForm:G(),AppointmentBooking:q(),Reviews:Y(),CheckoutCTA:U()});
@@ -1 +1 @@
1
- import{SECTION_BOX_SLOT as a,SECTION_BOX_TYPE as m,registerSectionToBox as c}from"efficient-web-builder/render/lib/sections/section-to-box";import{headOnlyRow as l}from"efficient-web-builder/render/lib/document/blocks/general/section-to-box-rows-head";import{DIM as P,INNER_BOX as d,TEXT as g,lineSides as B}from"efficient-web-builder/render/lib/document/blocks/general/section-to-box-row-parts";import{bandRoomBelow as E}from"../sections/section-band.js";import{SPEC_TABLE_BAND as _}from"../sections/spec-table-band.js";import{token as b}from"efficient-web-builder/render/lib/document/blocks/general/section-head-looks";import{CARD_ROW_FIELD_PROP as S}from"efficient-web-builder/format/lib/content/card-template";import{phoneKey as i}from"efficient-easel/draw";const r={textStyle:"body-5",...b("label",14),letterSpacing:.05,lineHeight:1.5},s=(t,e,p)=>({type:"Text",props:{...e,[S]:t,_partStyles:{text:p}}}),T={type:m,props:{...d,name:"Row",direction:"row",justify:"between",align:"start",share:"content",phoneRow:2,[i("share")]:"content",[i("wrap")]:!1,gap:24,sectionPaddingTop:16,sectionPaddingBottom:16,sectionPaddingTopPhone:16,sectionPaddingBottomPhone:16},slots:{[a]:[s("label",P,{...r,case:"upper"}),s("value",{...g,align:"right"},{...r,align:"right"})]}},o=l("SpecTable",{slots:{template:[T]}}),n=E(_.ownBox),h={...o,boxProps:(t,e)=>({...typeof o.boxProps=="function"?o.boxProps(t,e):o.boxProps,sectionPaddingBottom:n.bottom,sectionPaddingBottomPhone:n.bottomPhone,...n.line?{sectionBorder:B({bottom:1})}:{}})};c({SpecTable:h});
1
+ import{SECTION_BOX_SLOT as p,SECTION_BOX_TYPE as a,registerSectionToBox as m}from"efficient-web-builder/render/lib/sections/section-to-box";import{headOnlyRow as l}from"efficient-web-builder/render/lib/document/blocks/general/section-to-box-rows-head";import{DIM as c,INNER_BOX as d,TEXT as P,lineSides as g}from"efficient-web-builder/render/lib/document/blocks/general/section-to-box-row-parts";import{bandRoomBelow as B}from"../sections/section-band.js";import{SPEC_TABLE_BAND as b}from"../sections/spec-table-band.js";import{token as E}from"efficient-web-builder/render/lib/document/blocks/general/section-head-looks";import{rowFieldTextSeed as e}from"efficient-web-builder/format/lib/document/blocks/general/Cards/card-seed";import{phoneKey as n}from"efficient-easel/draw";const i={textStyle:"body-5",...E("label",14),letterSpacing:.05,lineHeight:1.5},S={type:a,props:{...d,name:"Row",direction:"row",justify:"between",align:"start",share:"content",phoneRow:2,[n("share")]:"content",[n("wrap")]:!1,gap:24,sectionPaddingTop:16,sectionPaddingBottom:16,sectionPaddingTopPhone:16,sectionPaddingBottomPhone:16},slots:{[p]:[e("label",c,{...i,case:"upper"}),e("value",{...P,align:"right"},{...i,align:"right"})]}},o=l("SpecTable",{slots:{template:[S]}}),t=B(b.ownBox),T={...o,boxProps:(r,s)=>({...typeof o.boxProps=="function"?o.boxProps(r,s):o.boxProps,sectionPaddingBottom:t.bottom,sectionPaddingBottomPhone:t.bottomPhone,...t.line?{sectionBorder:g({bottom:1})}:{}})};m({SpecTable:T});
@@ -1,5 +1,5 @@
1
1
  import { type GridBand } from "./fill-row.js";
2
- export declare const SET_CARD_SINGLE_BELOW: 800 | 720;
2
+ export declare const SET_CARD_SINGLE_BELOW: 800;
3
3
  export declare function packsFull(spans: readonly number[], columns: number): boolean;
4
4
  export declare function cardsWithoutHole(spans: readonly number[], columns: number, limit: number | undefined, topUp?: boolean): number;
5
5
  export interface NoHoleBand {
@@ -5,6 +5,8 @@ import { FILTER_BLOCK_TYPE, PRODUCT_GRID_TYPE } from "../document/document-nodes
5
5
  export declare const ALLOY_WHEELS_LISTING_TYPE = "AlloyWheelsListing";
6
6
  export { PRODUCT_GRID_TYPE };
7
7
  export declare const GRID_CATALOG_PROP = "catalog";
8
+ export declare const GRID_CATALOG_TOTAL_PROP = "catalogTotal";
9
+ export declare const GRID_TOP_UP_SPARE = 12;
8
10
  export declare const CATALOG_FILTER_BAR_TYPE = "CatalogFilterBar";
9
11
  export declare const FIELD_USAGE_PROP = "fieldUsage";
10
12
  export declare const LISTING_QUERY_PROP = "requestQuery";
@@ -18,6 +20,7 @@ export declare function pageHasHydratedValues(data: Data | null | undefined): bo
18
20
  export declare function pageReadsFieldUsage(data: Data | null | undefined): boolean;
19
21
  export declare function hydrateFieldUsage(data: Data, answers: readonly FieldUsageAnswer[]): Data;
20
22
  export declare function listingCatalogKinds(data: Data | null | undefined): ProductKind[];
23
+ export declare function listingCatalogBound(data: Data | null | undefined): number | undefined;
21
24
  export declare function listingWantsWheelsOnly(kinds: readonly ProductKind[]): boolean;
22
25
  export declare function hydrateWheelsListing(data: Data, products: ProductSummary[] | WheelSummary[]): Data;
23
26
  export declare function stampListingQuery(data: Data, query: string): Data;
@@ -1 +1 @@
1
- import{resolvePlpKinds as O}from"../catalog/plp-item.js";import{gridKindsOf as E,gridRowsOf as S,isLinkedSource as T}from"./grid-source.js";import{FILTER_BLOCK_TYPE as y,PRODUCT_GRID_TYPE as L,documentNodes as W,mapDocumentNodes as G}from"../document/document-nodes.js";import{selectedRangesOf as I,stripSelectedRanges as f}from"./selected-ranges.js";import{withShopperFirstPaint as N,withoutShopperFirstPaint as A,withoutShopperFirstPaintNode as P}from"./shopper-first-paint.js";const p="AlloyWheelsListing",x="catalog",U="CatalogFilterBar",i="fieldUsage",R="requestQuery";function l(r){return r.props?.source}function o(r){return r?.type===L&&T(l(r))}function a(r){return r?.type===U||r?.type===y}function g(r){return r?.type===p||o(r)||a(r)}const u=r=>W(r);function d(r){return r?u(r).some(t=>t?.type===p||o(t)):!1}function K(r){return r?d(r)||u(r).some(t=>P(t)!==t)||f(r)!==r:!1}function Q(r){return r?u(r).some(g):!1}function q(r,t){return t.length===0?r:c(r,g,e=>({...e,props:{...e.props??{},[i]:t}}))}function v(r){if(!r)return[];const t=new Set;for(const e of u(r)){if(e?.type!==p&&!o(e))continue;const s=e.props?.kinds;for(const n of o(e)?E(l(e),s):O(s))t.add(n)}return[...t]}function V(r){return r.length===1&&r[0]==="alloy-wheel"}function b(r,t){const e=I(r.root?.props);return N(C(r,s=>o(s)?{...s,props:{...h(s).props,[x]:S(l(s),s.props?.kinds,t)}}:{...s,props:{..._(s).props,products:t}}),e)}function j(r,t){const e=t.replace(/^\?/,"");return e?c(r,s=>s?.type===p,s=>({...s,props:{...s.props??{},[R]:e}})):r}function z(r){return A(c(f(r),g,t=>a(t)?w(t):o(t)?h(t):_(t)))}function w(r){if(!r.props||!(i in r.props))return r;const{[i]:t,...e}=r.props;return{...r,props:e}}function h(r){const{[x]:t,[i]:e,...s}=r.props??{},n=s.source;if(n&&"wheels"in n){const{wheels:m,...F}=n;s.source=F}return{...r,props:s}}function J(r){const t=f({content:[r]}).content[0],e=P(t);return o(e)?h(e):a(e)?w(e):e?.type===p?_(e):e}function _(r){const{wheels:t,products:e,[i]:s,[R]:n,...m}=r.props??{};return{...r,props:m}}function C(r,t){return c(r,e=>e?.type===p||o(e),t)}function c(r,t,e){return G(r,s=>t(s)?e(s):s)}export{p as ALLOY_WHEELS_LISTING_TYPE,U as CATALOG_FILTER_BAR_TYPE,i as FIELD_USAGE_PROP,y as FILTER_BLOCK_TYPE,x as GRID_CATALOG_PROP,R as LISTING_QUERY_PROP,L as PRODUCT_GRID_TYPE,z as dehydrateWheelsListing,J as dehydrateWheelsListingNode,q as hydrateFieldUsage,b as hydrateWheelsListing,v as listingCatalogKinds,V as listingWantsWheelsOnly,K as pageHasHydratedValues,d as pageHasWheelsListing,Q as pageReadsFieldUsage,j as stampListingQuery};
1
+ import{resolvePlpKinds as E}from"../catalog/plp-item.js";import{gridPagingOf as I}from"../sections/product-grid-pages.js";import{gridKindsOf as L,gridRowsOf as W,isAllProductsSource as C,isLinkedSource as N}from"./grid-source.js";import{FILTER_BLOCK_TYPE as O,PRODUCT_GRID_TYPE as R,documentNodes as U,mapDocumentNodes as k}from"../document/document-nodes.js";import{selectedRangesOf as D,stripSelectedRanges as h}from"./selected-ranges.js";import{withShopperFirstPaint as Y,withoutShopperFirstPaint as B,withoutShopperFirstPaintNode as T}from"./shopper-first-paint.js";const p="AlloyWheelsListing",_="catalog",w="catalogTotal",K=12,H="CatalogFilterBar",c="fieldUsage",S="requestQuery";function f(t){return t.props?.source}function o(t){return t?.type===R&&N(f(t))}function l(t){return t?.type===H||t?.type===O}function A(t,e){if(e)return;const{limit:r,cap:n}=I(t.props??{});return n?Math.ceil(r)+K:void 0}function m(t){return t?.type===p||o(t)||l(t)}const u=t=>U(t);function Q(t){return t?u(t).some(e=>e?.type===p||o(e)):!1}function Z(t){return t?Q(t)||u(t).some(e=>T(e)!==e)||h(t)!==t:!1}function $(t){return t?u(t).some(m):!1}function tt(t,e){return e.length===0?t:g(t,m,r=>({...r,props:{...r.props??{},[c]:e}}))}function q(t){if(!t)return[];const e=new Set;for(const r of u(t)){if(r?.type!==p&&!o(r))continue;const n=r.props?.kinds;for(const s of o(r)?L(f(r),n):E(n))e.add(s)}return[...e]}function et(t){if(!t)return;const e=u(t);if(e.some(l))return;const r=q(t).length;let n;for(const s of e){if(s?.type===p)return;if(!o(s))continue;const i=A(s,!1),a=s.props??{},d=new Set(L(f(s),a.kinds)),G=["num","title","description","linkText"].some(x=>typeof a[x]=="string"&&a[x]!=="");if(i===void 0||!C(f(s))||d.size!==r||G)return;n=Math.max(n??0,i)}return n}function rt(t){return t.length===1&&t[0]==="alloy-wheel"}function nt(t,e){const r=D(t.root?.props),n=u(t).some(l);return Y(M(t,s=>o(s)?v(s,e,A(s,n)):{...s,props:{...y(s).props,products:e}}),r)}function v(t,e,r){const n=W(f(t),t.props?.kinds,e),s={...P(t).props};return r!==void 0&&n.length>r?(s[_]=n.slice(0,r),s[w]=n.length):s[_]=n,{...t,props:s}}function st(t,e){const r=e.replace(/^\?/,"");return r?g(t,n=>n?.type===p,n=>({...n,props:{...n.props??{},[S]:r}})):t}function ot(t){return B(g(h(t),m,e=>l(e)?F(e):o(e)?P(e):y(e)))}function F(t){if(!t.props||!(c in t.props))return t;const{[c]:e,...r}=t.props;return{...t,props:r}}function P(t){const{[_]:e,[w]:r,[c]:n,...s}=t.props??{},i=s.source;if(i&&"wheels"in i){const{wheels:a,...d}=i;s.source=d}return{...t,props:s}}function it(t){const e=h({content:[t]}).content[0],r=T(e);return o(r)?P(r):l(r)?F(r):r?.type===p?y(r):r}function y(t){const{wheels:e,products:r,[c]:n,[S]:s,...i}=t.props??{};return{...t,props:i}}function M(t,e){return g(t,r=>r?.type===p||o(r),e)}function g(t,e,r){return k(t,n=>e(n)?r(n):n)}export{p as ALLOY_WHEELS_LISTING_TYPE,H as CATALOG_FILTER_BAR_TYPE,c as FIELD_USAGE_PROP,O as FILTER_BLOCK_TYPE,_ as GRID_CATALOG_PROP,w as GRID_CATALOG_TOTAL_PROP,K as GRID_TOP_UP_SPARE,S as LISTING_QUERY_PROP,R as PRODUCT_GRID_TYPE,ot as dehydrateWheelsListing,it as dehydrateWheelsListingNode,tt as hydrateFieldUsage,nt as hydrateWheelsListing,et as listingCatalogBound,q as listingCatalogKinds,rt as listingWantsWheelsOnly,Z as pageHasHydratedValues,Q as pageHasWheelsListing,$ as pageReadsFieldUsage,st as stampListingQuery};
package/dist/words.d.ts CHANGED
@@ -101,6 +101,7 @@ export type WebBuilderPhrase =
101
101
  | "A titled chart — bars, line or donut — drawn from your own labeled data points."
102
102
  | "A vehicle picker — make, model, year and trim resolve the OEM stock fitment live."
103
103
  | "A wall of city photos, grouped by region. Each photo links to its city's card."
104
+ | "A wall of your photos or your products' pictures, with a click-to-open lightbox."
104
105
  | "A world map of your locations with a legend — designed here, sold worldwide."
105
106
  | "A write-a-review form — submissions wait for your approval before they show."
106
107
  | "About & brand story"
@@ -231,6 +232,7 @@ export type WebBuilderPhrase =
231
232
  | "Box"
232
233
  | "Box name"
233
234
  | "Box shape"
235
+ | "Box: on small screens the Box keeps its own side space, up to 24 px. Site: it uses the site's Side space, as the site's own sections do. It has no effect when Content is Full width."
234
236
  | "Brand Text"
235
237
  | "Brand name"
236
238
  | "Breadcrumb"
@@ -326,6 +328,7 @@ export type WebBuilderPhrase =
326
328
  | "Column 4 title"
327
329
  | "Column {n}"
328
330
  | "Columns"
331
+ | "Compatible Tyres"
329
332
  | "Connect to a live number"
330
333
  | "Contact / Locations"
331
334
  | "Contact Form"
@@ -393,6 +396,7 @@ export type WebBuilderPhrase =
393
396
  | "Delete “{name}”"
394
397
  | "Deleted “{name}”"
395
398
  | "Delivery"
399
+ | "Delivery Options"
396
400
  | "Delivery tiers as cards — name, window and price, one highlighted."
397
401
  | "Describe this section in a sentence or two."
398
402
  | "Describe this step in a sentence or two."
@@ -544,6 +548,7 @@ export type WebBuilderPhrase =
544
548
  | "Full-bleed intro image the next section scrolls over."
545
549
  | "Full-screen image or video with a headline."
546
550
  | "Full-screen opener with rotating slides."
551
+ | "Gallery"
547
552
  | "Gap"
548
553
  | "Gap only"
549
554
  | "Give the new template page a name. It starts blank — add sections once it opens."
@@ -618,6 +623,7 @@ export type WebBuilderPhrase =
618
623
  | "Image background"
619
624
  | "Image caption"
620
625
  | "Image column"
626
+ | "Image content"
621
627
  | "Image date"
622
628
  | "Image fit"
623
629
  | "Image focus"
@@ -1005,6 +1011,7 @@ export type WebBuilderPhrase =
1005
1011
  | "Save your page changes first"
1006
1012
  | "Scale"
1007
1013
  | "Screen"
1014
+ | "Screen 16:10"
1008
1015
  | "Scroll-Over Text"
1009
1016
  | "Scrolling Bar"
1010
1017
  | "Search"
@@ -1078,6 +1085,7 @@ export type WebBuilderPhrase =
1078
1085
  | "Sideways"
1079
1086
  | "Signup Form"
1080
1087
  | "Simple"
1088
+ | "Site"
1081
1089
  | "Site button color"
1082
1090
  | "Site settings"
1083
1091
  | "Six across"
@@ -1155,6 +1163,7 @@ export type WebBuilderPhrase =
1155
1163
  | "Sub-total lines"
1156
1164
  | "Subhead"
1157
1165
  | "Subscribe"
1166
+ | "Subscribe with Posts"
1158
1167
  | "Subtitle"
1159
1168
  | "Subtitle font size"
1160
1169
  | "Subtotal"
@@ -1348,6 +1357,7 @@ export type WebBuilderPhrase =
1348
1357
  | "WeChat"
1349
1358
  | "What each card does when a shopper points at it, or taps it on a phone. Rotate turns the wheel picture."
1350
1359
  | "What people *say.*"
1360
+ | "What this card does when a shopper points at it, or taps it on a phone. Highlight fills it with the surface color and turns its text the main color."
1351
1361
  | "What this does when a shopper points at it, or taps it on a phone."
1352
1362
  | "What this picture does when a shopper points at it. Black and white shows it in grey until then. A phone shows its colour."
1353
1363
  | "What this picture does when a shopper points at the card. Show next image fades to the card's next photo. Black and white shows it in grey until then. A phone shows the first photo in colour."
@@ -1477,7 +1487,6 @@ export type StorefrontBlocksPhrase =
1477
1487
  | "5–7 business days"
1478
1488
  | "A Booking Form is these three boxes. They cannot be added to or removed."
1479
1489
  | "A Submit-a-build section is these two boxes. They cannot be added to or removed."
1480
- | "A card's opening picture — picking another color opens that color's first picture."
1481
1490
  | "A detail of this record"
1482
1491
  | "A few quick picks and we show the right option for you."
1483
1492
  | "A line about it appears here."
@@ -1596,7 +1605,6 @@ export type StorefrontBlocksPhrase =
1596
1605
  | "Column heading"
1597
1606
  | "Columns per line"
1598
1607
  | "Compatible *tyres.*"
1599
- | "Compatible Tyres"
1600
1608
  | "Compatible tyres"
1601
1609
  | "Compatible wheels"
1602
1610
  | "Confirmation message"
@@ -1630,7 +1638,6 @@ export type StorefrontBlocksPhrase =
1630
1638
  | "Default (the product's default finish)"
1631
1639
  | "Default (the product’s default finish)"
1632
1640
  | "Default links"
1633
- | "Delivery Options"
1634
1641
  | "Delivery options"
1635
1642
  | "Delivery, your way"
1636
1643
  | "Describe this feature in a sentence or two."
@@ -1725,7 +1732,6 @@ export type StorefrontBlocksPhrase =
1725
1732
  | "Frequency label"
1726
1733
  | "Frequency options"
1727
1734
  | "From our *customers.*"
1728
- | "Gallery"
1729
1735
  | "Gallery A"
1730
1736
  | "Gallery A comes from the product’s Relative / lifestyle photos, Gallery B from its Product photos and the Others gallery from its Others — edit those in the product’s Media tab and refresh. Each media group is a card: its name is the eyebrow, its finish the meta line; the card’s title is the product name and its tag the category. Headings, intro copy and stats stay yours."
1731
1737
  | "Gallery A comes from the product’s Relative / lifestyle photos, Gallery B from its Product photos and the Others gallery from its Others — edit those in the product’s Media tab and refresh. Each media group is a card: the car set on the group is the eyebrow (a card keeps its caption when the group has no car), its finish the meta line; the card’s title is the product name and its tag the category. Headings, intro copy and stats stay yours."
@@ -1759,7 +1765,6 @@ export type StorefrontBlocksPhrase =
1759
1765
  | "Icon size"
1760
1766
  | "Icon style"
1761
1767
  | "Image / buy ratio"
1762
- | "Image content"
1763
1768
  | "Image gallery"
1764
1769
  | "Image shape"
1765
1770
  | "Image source"
@@ -1977,6 +1982,7 @@ export type StorefrontBlocksPhrase =
1977
1982
  | "Rates from"
1978
1983
  | "Reach by"
1979
1984
  | "Read all posts →"
1985
+ | "Read more"
1980
1986
  | "Ready when *you are.*"
1981
1987
  | "Recent issues"
1982
1988
  | "Recent posts"
@@ -2069,7 +2075,6 @@ export type StorefrontBlocksPhrase =
2069
2075
  | "Side rail"
2070
2076
  | "Signup form"
2071
2077
  | "Similar products"
2072
- | "Site"
2073
2078
  | "Site Footer"
2074
2079
  | "Site Header"
2075
2080
  | "Size (blank = none selected)"
@@ -2103,7 +2108,6 @@ export type StorefrontBlocksPhrase =
2103
2108
  | "Submit button"
2104
2109
  | "Submit-failed error"
2105
2110
  | "Subscribe Form"
2106
- | "Subscribe with Posts"
2107
2111
  | "Subscribe →"
2108
2112
  | "Subscribed button"
2109
2113
  | "Subscribed ✓"
@@ -2115,6 +2119,7 @@ export type StorefrontBlocksPhrase =
2115
2119
  | "Tab switcher"
2116
2120
  | "Tag"
2117
2121
  | "Tag filters"
2122
+ | "Tags"
2118
2123
  | "Tall"
2119
2124
  | "Tell readers what they get and how often. One email, straight to the inbox. We will never sell your address."
2120
2125
  | "Template pages"