efficient-storefront-blocks 0.81.0 → 0.83.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 (79) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +1 -1
  3. package/dist/chunks/EditorPreviewCheckout-RI5SBSCE.js +4 -0
  4. package/dist/chunks/{SiteEditorProvider-PXXYEDUI.js → SiteEditorProvider-OQXY7YGK.js} +1 -1
  5. package/dist/chunks/{chunk-EEBM2KUO.js → chunk-AUYTGAOU.js} +1 -1
  6. package/dist/chunks/chunk-LMOEQBT7.js +340 -0
  7. package/dist/chunks/{chunk-K3VUREAB.js → chunk-QOM2OL54.js} +1 -1
  8. package/dist/chunks/{fitment-data-WHDQR3A2.js → fitment-data-64LXUHOU.js} +1 -1
  9. package/dist/contract.js +22 -2
  10. package/dist/editor/components/CategoryProductFields.d.ts +4 -1
  11. package/dist/editor/components/CategoryProductFields.js +1 -1
  12. package/dist/editor/components/EditReviewsLink.d.ts +4 -0
  13. package/dist/editor/components/EditReviewsLink.js +1 -0
  14. package/dist/editor/components/GalleryShowcaseSource.js +1 -1
  15. package/dist/editor/components/ProductHeroSource.js +1 -1
  16. package/dist/editor/components/ProductPicker.js +1 -1
  17. package/dist/editor/components/ReviewsProductSource.d.ts +26 -0
  18. package/dist/editor/components/ReviewsProductSource.js +1 -0
  19. package/dist/editor/components/SpecTableSource.js +1 -1
  20. package/dist/editor/lib/document/blocks/commerce/index.d.ts +1 -1
  21. package/dist/editor/lib/document/blocks/service/FooterMenu/fields.js +1 -1
  22. package/dist/editor/lib/document/blocks/service/MenuLinkBlock/fields.d.ts +2 -0
  23. package/dist/editor/lib/document/blocks/service/MenuLinkBlock/fields.js +1 -0
  24. package/dist/editor/lib/document/blocks/service/ReviewForm/fields.js +1 -1
  25. package/dist/editor/lib/document/blocks/service/Reviews/fields.js +1 -1
  26. package/dist/editor/lib/document/blocks/service/index.d.ts +1 -1
  27. package/dist/editor/lib/document/blocks/service/index.js +1 -1
  28. package/dist/editor/lib/document/box-header.d.ts +1 -0
  29. package/dist/editor/lib/document/box-header.js +1 -1
  30. package/dist/editor/lib/document/config.js +1 -1
  31. package/dist/editor/lib/storefront-editor-words.d.ts +9 -2
  32. package/dist/editor/lib/storefront-editor-words.js +1 -1
  33. package/dist/index.js +37 -29
  34. package/dist/render/app/globals.css +67 -9
  35. package/dist/render/built-with.json +1 -1
  36. package/dist/render/components/ChatContext.js +1 -1
  37. package/dist/render/components/FooterMenu.d.ts +9 -9
  38. package/dist/render/components/FooterMenu.js +1 -1
  39. package/dist/render/components/MenuLinkBlock.d.ts +7 -0
  40. package/dist/render/components/MenuLinkBlock.js +1 -0
  41. package/dist/render/components/ProductCard.js +1 -1
  42. package/dist/render/components/checkout/CheckoutPageClient.d.ts +2 -1
  43. package/dist/render/components/checkout/CheckoutPageClient.js +1 -1
  44. package/dist/render/components/checkout/checkout-state.d.ts +1 -0
  45. package/dist/render/components/checkout/checkout-state.js +3 -3
  46. package/dist/render/components/wheels-plp/PlpCard.js +1 -1
  47. package/dist/render/lib/catalog/relationships.js +1 -1
  48. package/dist/render/lib/checkout/pay-first.d.ts +19 -0
  49. package/dist/render/lib/checkout/pay-first.js +1 -1
  50. package/dist/render/lib/content/menu-card-seed.d.ts +6 -0
  51. package/dist/render/lib/content/menu-card-seed.js +1 -0
  52. package/dist/render/lib/document/blocks/service/FooterMenu/meta.d.ts +6 -0
  53. package/dist/render/lib/document/blocks/service/FooterMenu/meta.js +1 -1
  54. package/dist/render/lib/document/blocks/service/FooterMenu/render.js +1 -1
  55. package/dist/render/lib/document/blocks/service/MenuLinkBlock/meta.d.ts +2 -0
  56. package/dist/render/lib/document/blocks/service/MenuLinkBlock/meta.js +1 -0
  57. package/dist/render/lib/document/blocks/service/MenuLinkBlock/render.d.ts +2 -0
  58. package/dist/render/lib/document/blocks/service/MenuLinkBlock/render.js +1 -0
  59. package/dist/render/lib/document/blocks/service/metas.d.ts +1 -0
  60. package/dist/render/lib/document/blocks/service/metas.js +1 -1
  61. package/dist/render/lib/document/blocks/service/renders.d.ts +1 -0
  62. package/dist/render/lib/document/blocks/service/renders.js +1 -1
  63. package/dist/render/lib/document/blocks/text-part-shapes.json +0 -14
  64. package/dist/render/lib/document/card-templates.js +1 -1
  65. package/dist/render/lib/document/footer-page-blocks.js +1 -1
  66. package/dist/render/lib/document/lazy-draws.js +1 -1
  67. package/dist/render/lib/menu-link.d.ts +8 -0
  68. package/dist/render/lib/sections/reviews.d.ts +7 -0
  69. package/dist/render/lib/sections/reviews.js +1 -1
  70. package/dist/words.d.ts +30 -8
  71. package/dist/words.js +4 -4
  72. package/package.json +4 -4
  73. package/dist/chunks/EditorPreviewCheckout-OIN6G67Y.js +0 -4
  74. package/dist/chunks/chunk-SXRBNRRO.js +0 -320
  75. package/dist/editor/lib/document/blocks/service/placeholders.d.ts +0 -1
  76. package/dist/editor/lib/document/blocks/service/placeholders.js +0 -1
  77. /package/dist/chunks/{chunk-5O3W5AUB.js → chunk-CRXKVHUQ.js} +0 -0
  78. /package/dist/chunks/{chunk-PBQWSV3B.js → chunk-DX6JADLE.js} +0 -0
  79. /package/dist/chunks/{chunk-SXRBNRRO.js.LEGAL.txt → chunk-LMOEQBT7.js.LEGAL.txt} +0 -0
@@ -0,0 +1 @@
1
+ "use client";import{jsx as e}from"react/jsx-runtime";import{Button as s}from"efficient-shell/ui";import{useEaselHost as i}from"efficient-easel/screen/lib/host";import{say as r}from"efficient-web-builder/format/lib/editor-words";const t=["storefront-editor:open-site-section",{section:"reviews"}];function n(){const o=i();return e(s,{variant:"link",size:"sm",onClick:()=>o.send(t[0],t[1]),children:r("Edit in Reviews →")})}export{t as OPEN_REVIEWS,n as default};
@@ -1 +1 @@
1
- "use client";import{jsx as G,jsxs as J}from"react/jsx-runtime";import{mediaGroupVehicle as K}from"../../render/lib/content/source-values.js";import{useEffect as R,useMemo as Q,useRef as k,useState as b}from"react";import{storefrontAdmin as U}from"../../render/lib/api/index.js";import{useEaselHost as X}from"efficient-easel/screen/lib/host";import{getEditorToken as Y}from"efficient-web-builder/render/lib/editor-auth";import{getEditorSiteId as Z}from"efficient-web-builder/render/lib/editor-site";import{loadProductCatalog as F}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as v}from"./useStorefrontCategories.js";import{useCategoryFilter as ee}from"./useCategoryFilter.js";import te from"./CategoryProductFields.js";import{snapshotChanged as re}from"efficient-web-builder/editor/components/useSnapshotSource";import se from"efficient-web-builder/editor/components/SourceStatus";import{say as n,sayCount as H}from"efficient-web-builder/format/lib/editor-words";const a="__all__";function oe(e,r){return r===a?e:e.filter(o=>o.process===r)}function m(e,r){return e.map(o=>({image:o.items[0]?.url,photos:o.items.map(s=>({src:s.url})),href:`/wheels/${r.slug}`,process:r.process,eyebrow:K(o),name:r.name,meta:o.finish})).filter(o=>!!o.image)}function T(e){const r=Y();return r?U.getWheelDetail(r,e,{siteId:Z()}):Promise.reject(new Error("editor not authenticated"))}async function ne(e){const r=await T(e),o={slug:r.slug,name:r.name,process:r.process},s=r.mediaGroups??{photos:[],lifestyle:[],videos:[],accessories:[],others:[]};return{...o,vehicleCards:m(s.lifestyle??[],o),wheelCards:m(s.photos??[],o),othersCards:m(s.others??[],o)}}async function ae(e,r){const o=await Promise.all(e.map(i=>T(i.slug).catch(()=>null))),s=[],p=[],h=[];for(const i of o){if(!i)continue;const l={slug:i.slug,name:i.name,process:i.process},d=i.mediaGroups??{photos:[],lifestyle:[],videos:[],accessories:[],others:[]};s.push(...m(d.lifestyle??[],l)),p.push(...m(d.photos??[],l)),h.push(...m(d.others??[],l))}return{slug:a,name:r===a?"All products":r,process:"",vehicleCards:s,wheelCards:p,othersCards:h,category:r}}function ie({value:e,onChange:r}){const o=X(),[s,p]=b(null),[h,i]=b(null),[l,d]=b(!1),[L,P]=b(!1),u=k(!0),g=k(e);g.current=e;const O=k(r);O.current=r;const x=(t,f=!1)=>{d(!0),f||P(!1),t().then(B=>{u.current&&(re(B,g.current)&&O.current(B),P(!1))}).catch(()=>{u.current&&!f&&P(!0)}).finally(()=>{u.current&&d(!1)})},A=(t,f=!1)=>x(()=>ne(t),f),y=(t,f=!1)=>x(()=>ae(oe(s??[],t),t),f);R(()=>(u.current=!0,F().then(t=>{u.current&&p(t)}),v().then(t=>{u.current&&i(t)}),()=>{u.current=!1}),[]);const C=k(!1);R(()=>{if(C.current)return;const t=g.current;if(!t?.slug){C.current=!0;return}if(t.slug===a){if(s===null)return;C.current=!0,y(t.category??a,!0)}else C.current=!0,A(t.slug,!0)},[s]);const c=e?.slug===a,w=Q(()=>s&&e?.slug&&!c?s.find(t=>t.slug===e.slug)??null:null,[s,e?.slug,c]),{category:N,setCategory:E,categoryNames:W,filtered:D}=ee(s,h);R(()=>{c?e?.category&&E(e.category):w?.process&&E(w.process)},[w,c,e?.category]);const S=s===null,_=!!e?.slug&&!c&&s!==null&&!w,I=t=>{if(!t){r(null);return}if(t===a){y(N);return}A(t)},M=t=>{E(t),g.current?.slug===a&&y(t)},V=()=>{e?.slug&&(F(!0).then(t=>{u.current&&p(t)}),c?y(e.category??a):A(e.slug))},$=()=>{e?.slug&&o.send("storefront-editor:open-product",{slug:e.slug,name:e.name})},j=(e?.vehicleCards.length??0)+(e?.wheelCards.length??0)+(e?.othersCards?.length??0),q=L?"error":l?"loading":"idle",z=L?n("Couldn’t reach the product catalog."):l?n("Syncing media from the catalog…"):_?n("Linked to “{name}” — no longer in the catalog.",{name:e?.name??""}):c?H("Linked to “{name}” · {n} card from all products’ media groups.","Linked to “{name}” · {n} cards from all products’ media groups.",j,{name:e?.name??""}):H("Linked to “{name}” · {n} card from its media groups.","Linked to “{name}” · {n} cards from its media groups.",j,{name:e?.name??""});return J("div",{children:[G(te,{category:N,onChange:M,categoryNames:W,readOnly:S,products:D,product:e?.slug??"",onProductChange:I,productReadOnly:S||l,emptyLabel:S?n("Loading…"):n("None (write the cards yourself)"),extraOptions:[{label:n("All products"),value:a},..._?[{label:n("{name} (unavailable)",{name:e.name}),value:e.slug}]:[]]}),e?.slug?G(se,{status:q,statusText:z,onRefresh:V,busy:l,edit:c?void 0:{label:n("Edit product ✎"),onClick:$},hint:c?n("Pools every product’s grouped media: each one’s Relative / lifestyle photos feed Gallery A, its Product photos Gallery B and its Others the Others gallery. Every media group becomes a card, attributed to its own product (title, link and tag). Narrow the set with the Category filter above. Headings, intro copy and stats stay yours."):n("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.")}):G("p",{className:"es-field-hint sf-hint-keep",style:{marginTop:7},children:n("Pick a product — or All products — to build the galleries from media groups, or keep “None” to author the cards yourself.")})]})}export{ie as default};
1
+ "use client";import{jsx as G,jsxs as J}from"react/jsx-runtime";import{mediaGroupVehicle as K}from"../../render/lib/content/source-values.js";import{useEffect as R,useMemo as Q,useRef as k,useState as b}from"react";import{storefrontAdmin as U}from"../../render/lib/api/index.js";import{useEaselHost as X}from"efficient-easel/screen/lib/host";import{getEditorToken as Y}from"efficient-web-builder/render/lib/editor-auth";import{getEditorSiteId as Z}from"efficient-web-builder/render/lib/editor-site";import{loadProductCatalog as F}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as v}from"./useStorefrontCategories.js";import{useCategoryFilter as ee}from"./useCategoryFilter.js";import te from"./CategoryProductFields.js";import{snapshotChanged as re}from"efficient-web-builder/editor/components/useSnapshotSource";import se from"efficient-web-builder/editor/components/SourceStatus";import{say as n,sayCount as H}from"efficient-web-builder/format/lib/editor-words";const a="__all__";function oe(e,r){return r===a?e:e.filter(o=>o.process===r)}function m(e,r){return e.map(o=>({image:o.items[0]?.url,photos:o.items.map(s=>({src:s.url})),href:`/wheels/${r.slug}`,process:r.process,eyebrow:K(o),name:r.name,meta:o.finish})).filter(o=>!!o.image)}function T(e){const r=Y();return r?U.getWheelDetail(r,e,{siteId:Z()}):Promise.reject(new Error("editor not authenticated"))}async function ne(e){const r=await T(e),o={slug:r.slug,name:r.name,process:r.process},s=r.mediaGroups??{photos:[],lifestyle:[],videos:[],accessories:[],others:[]};return{...o,vehicleCards:m(s.lifestyle??[],o),wheelCards:m(s.photos??[],o),othersCards:m(s.others??[],o)}}async function ae(e,r){const o=await Promise.all(e.map(i=>T(i.slug).catch(()=>null))),s=[],p=[],h=[];for(const i of o){if(!i)continue;const l={slug:i.slug,name:i.name,process:i.process},d=i.mediaGroups??{photos:[],lifestyle:[],videos:[],accessories:[],others:[]};s.push(...m(d.lifestyle??[],l)),p.push(...m(d.photos??[],l)),h.push(...m(d.others??[],l))}return{slug:a,name:r===a?"All products":r,process:"",vehicleCards:s,wheelCards:p,othersCards:h,category:r}}function ie({value:e,onChange:r}){const o=X(),[s,p]=b(null),[h,i]=b(null),[l,d]=b(!1),[L,P]=b(!1),u=k(!0),g=k(e);g.current=e;const O=k(r);O.current=r;const x=(t,f=!1)=>{d(!0),f||P(!1),t().then(B=>{u.current&&(re(B,g.current)&&O.current(B),P(!1))}).catch(()=>{u.current&&!f&&P(!0)}).finally(()=>{u.current&&d(!1)})},A=(t,f=!1)=>x(()=>ne(t),f),y=(t,f=!1)=>x(()=>ae(oe(s??[],t),t),f);R(()=>(u.current=!0,F().then(t=>{u.current&&p(t)}),v().then(t=>{u.current&&i(t)}),()=>{u.current=!1}),[]);const C=k(!1);R(()=>{if(C.current)return;const t=g.current;if(!t?.slug){C.current=!0;return}if(t.slug===a){if(s===null)return;C.current=!0,y(t.category??a,!0)}else C.current=!0,A(t.slug,!0)},[s]);const c=e?.slug===a,w=Q(()=>s&&e?.slug&&!c?s.find(t=>t.slug===e.slug)??null:null,[s,e?.slug,c]),{category:N,setCategory:E,categoryNames:W,filtered:D}=ee(s,h);R(()=>{c?e?.category&&E(e.category):w?.process&&E(w.process)},[w,c,e?.category]);const S=s===null,_=!!e?.slug&&!c&&s!==null&&!w,I=t=>{if(!t){r(null);return}if(t===a){y(N);return}A(t)},M=t=>{E(t),g.current?.slug===a&&y(t)},V=()=>{e?.slug&&(F(!0).then(t=>{u.current&&p(t)}),c?y(e.category??a):A(e.slug))},$=()=>{e?.slug&&o.send("storefront-editor:open-product",{slug:e.slug,name:e.name})},j=(e?.vehicleCards.length??0)+(e?.wheelCards.length??0)+(e?.othersCards?.length??0),q=L?"error":l?"loading":"idle",z=L?n("Couldn’t reach the product catalog."):l?n("Syncing media from the catalog…"):_?n("Linked to “{name}” — no longer in the catalog.",{name:e?.name??""}):c?H("Linked to “{name}” · {n} card from all products’ media groups.","Linked to “{name}” · {n} cards from all products’ media groups.",j,{name:e?.name??""}):H("Linked to “{name}” · {n} card from its media groups.","Linked to “{name}” · {n} cards from its media groups.",j,{name:e?.name??""});return J("div",{children:[G(te,{category:N,onChange:M,categoryNames:W,readOnly:S,products:D,allProducts:s??[],product:e?.slug??"",onProductChange:I,productReadOnly:S||l,emptyLabel:S?n("Loading…"):n("None (write the cards yourself)"),extraOptions:[{label:n("All products"),value:a},..._?[{label:n("{name} (unavailable)",{name:e.name}),value:e.slug}]:[]]}),e?.slug?G(se,{status:q,statusText:z,onRefresh:V,busy:l,edit:c?void 0:{label:n("Edit product ✎"),onClick:$},hint:c?n("Pools every product’s grouped media: each one’s Relative / lifestyle photos feed Gallery A, its Product photos Gallery B and its Others the Others gallery. Every media group becomes a card, attributed to its own product (title, link and tag). Narrow the set with the Category filter above. Headings, intro copy and stats stay yours."):n("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.")}):G("p",{className:"es-field-hint sf-hint-keep",style:{marginTop:7},children:n("Pick a product — or All products — to build the galleries from media groups, or keep “None” to author the cards yourself.")})]})}export{ie as default};
@@ -1 +1 @@
1
- "use client";import{jsx as y,jsxs as I}from"react/jsx-runtime";import{useEffect as $,useMemo as C,useState as z}from"react";import{useEaselHost as N}from"efficient-easel/screen/lib/host";import{formatPrice as w}from"../../render/lib/commerce.js";import{resolveWheelPrice as K}from"../../render/lib/wheels/price-display.js";import{isRenderableFinish as O}from"../../render/lib/wheels/renderable-finishes.js";import{loadUnifiedProductCatalog as W}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as _}from"./useStorefrontCategories.js";import{filterByCategory as M,useCategoryFilter as U}from"./useCategoryFilter.js";import{CategoryField as V}from"./CategoryProductFields.js";import{useSnapshotSource as q}from"efficient-web-builder/editor/components/useSnapshotSource";import{useCurrency as D}from"../../render/components/CurrencyContext.js";import G from"efficient-web-builder/editor/components/SearchSelectField";import J from"efficient-web-builder/editor/components/SourceStatus";import{say as s,sayCount as Q}from"efficient-web-builder/format/lib/editor-words";const S=e=>e.kind==="tyre"?"tyre":"alloy-wheel",u=e=>`${e.kind}:${e.slug}`;function P(e){return e.kind==="tyre"?{kind:"tyre",slug:e.slug,name:e.name,description:e.description??"",eyebrow:e.brand??"",image:e.coverImage??null,finishes:[],prices:e.prices,href:`/tyres/${e.slug}`}:{kind:"wheel",slug:e.slug,name:e.name,description:e.description??"",eyebrow:e.process,image:e.coverImage??null,finishes:e.finishes.filter(O).map(r=>({name:r.name,color:r.color,src:r.src})),prices:e.prices,href:`/wheels/${e.slug}`}}function x(e,r){const n=S(r);return e.find(o=>o.kind===n&&o.slug===r.slug)}function X(e){return L(e)?s("Category — wheels only"):s("Category")}const L=e=>!!(e?.some(r=>r.kind==="tyre")&&e.some(r=>r.kind==="alloy-wheel")),Y=e=>Q("{n} size","{n} sizes",e);function Z({rows:e,category:r,value:n,loading:o,currency:i}){const a=e??[],c=a.filter(t=>t.kind==="alloy-wheel"),m=a.filter(t=>t.kind==="tyre"),p=c.length>0&&m.length>0,k={value:"",label:o?s("Loading…"):s("Pick a product…")},h=n&&!(e!==null&&x(e,n))?[{value:u({kind:S(n),slug:n.slug}),label:o?n.name:s("{name} (unavailable)",{name:n.name})}]:[],d=M(c,r).map(t=>{const g=K(t.prices[i],t.msrpPrices?.[i]);return{value:u({kind:"alloy-wheel",slug:t.slug}),label:t.name,...p?{group:s("Wheels")}:{},thumb:t.coverImage??null,...g.priced?{meta:w(g.unit,i)}:{}}}),b=m.map(t=>({value:u(t),label:t.name,...p?{group:s("Tyres")}:{},thumb:t.coverImage??null,meta:Y(t.variantCount)}));return[k,...h,...d,...b]}function v({value:e,onChange:r}){const n=N(),{rows:o,loading:i,refreshing:a,errored:c,refresh:m}=q({load:W,resolve:x,snapshot:P,value:e,onChange:r}),[p,k]=z(null);$(()=>{let l=!1;return _().then(f=>{l||k(f)}),()=>{l=!0}},[]);const{currency:h}=D(),d=C(()=>o&&e?x(o,e)??null:null,[o,e]),b=C(()=>(o??[]).filter(l=>l.kind==="alloy-wheel"),[o]),{category:t,setCategory:g,categoryNames:R}=U(b,p,d?.kind==="alloy-wheel"?d:null),T=!!e?.slug&&o!==null&&!d,E=C(()=>Z({rows:o,category:t,value:e,loading:i,currency:h}),[o,t,e,i,h]),j=l=>{if(!l){r(null);return}const f=(o??[]).find(H=>u(H)===l);f&&r(P(f))},A=()=>{e?.slug&&n.send("storefront-editor:open-product",{slug:e.slug,name:e.name})},B=c?"error":a?"loading":"idle",F=c?s("Couldn’t reach the product catalog."):a?s("Syncing from the catalog…"):T?s("Linked to “{name}” — no longer in the catalog.",{name:e?.name??""}):s("Linked to “{name}” · title, description, category, price & image follow the product.",{name:e?.name??""});return I("div",{children:[y(G,{label:"Product",options:E,fallback:"",value:e?u({kind:S(e),slug:e.slug}):"",onChange:j,placeholder:"Search products…"}),y(V,{label:X(o),allLabel:L(o)?s("All wheel categories"):s("All products"),category:t,onChange:g,categoryNames:R,readOnly:i}),e?.slug?y(J,{status:B,statusText:F,onRefresh:m,busy:a,edit:{label:s("Edit product ✎"),onClick:A},hint:s("The whole hero comes from the product record — title, price, pictures, options and Add to Cart. Edit the product in the Products database and this hero updates to match.")}):y("p",{className:"es-field-hint sf-hint-keep",style:{marginTop:7},children:s("This hero always shows a real product. Pick one to fill the title, price, pictures, options and Add to Cart from the catalog.")})]})}export{v as default,X as heroCategoryLabel,Z as heroPickerOptions,x as heroResolve,P as heroSnapshot};
1
+ "use client";import{jsx as b,jsxs as H}from"react/jsx-runtime";import{useEffect as I,useMemo as L,useState as $}from"react";import{useEaselHost as z}from"efficient-easel/screen/lib/host";import{formatPrice as N}from"../../render/lib/commerce.js";import{resolveWheelPrice as K}from"../../render/lib/wheels/price-display.js";import{isRenderableFinish as O}from"../../render/lib/wheels/renderable-finishes.js";import{loadUnifiedProductCatalog as _}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as w}from"./useStorefrontCategories.js";import{filterByCategory as M,useCategoryFilter as U}from"./useCategoryFilter.js";import{CategoryField as V}from"./CategoryProductFields.js";import{useSnapshotSource as q}from"efficient-web-builder/editor/components/useSnapshotSource";import{useCurrency as D}from"../../render/components/CurrencyContext.js";import G from"efficient-web-builder/editor/components/SearchSelectField";import J from"efficient-web-builder/editor/components/SourceStatus";import{say as n,sayCount as Q}from"efficient-web-builder/format/lib/editor-words";const R=e=>e.kind==="tyre"?"tyre":"alloy-wheel",m=e=>`${e.kind}:${e.slug}`;function T(e){return e.kind==="tyre"?{kind:"tyre",slug:e.slug,name:e.name,description:e.description??"",eyebrow:e.brand??"",image:e.coverImage??null,finishes:[],prices:e.prices,href:`/tyres/${e.slug}`}:{kind:"wheel",slug:e.slug,name:e.name,description:e.description??"",eyebrow:e.process,image:e.coverImage??null,finishes:e.finishes.filter(O).map(o=>({name:o.name,color:o.color,src:o.src})),prices:e.prices,href:`/wheels/${e.slug}`}}function C(e,o){const s=R(o);return e.find(t=>t.kind===s&&t.slug===o.slug)}function X(e){return E(e)?n("Category — wheels only"):n("Category")}const E=e=>!!(e?.some(o=>o.kind==="tyre")&&e.some(o=>o.kind==="alloy-wheel")),Y=e=>Q("{n} size","{n} sizes",e);function Z({rows:e,category:o,value:s,loading:t,currency:l}){const a=e??[],u=a.filter(r=>r.kind==="alloy-wheel"),p=a.filter(r=>r.kind==="tyre"),h=u.length>0&&p.length>0,S={value:"",label:t?n("Loading…"):n("Pick a product…")},g=s&&!(e!==null&&C(e,s))?[{value:m({kind:R(s),slug:s.slug}),label:t?s.name:n("{name} (unavailable)",{name:s.name})}]:[],c=M(u,o),d=s&&e!==null?C(e,s):void 0,x=[...d&&d.kind==="alloy-wheel"&&!c.includes(d)?[d]:[],...c].map(r=>{const y=K(r.prices[l],r.msrpPrices?.[l]);return{value:m({kind:"alloy-wheel",slug:r.slug}),label:r.name,...h?{group:n("Wheels")}:{},thumb:r.coverImage??null,...y.priced?{meta:N(y.unit,l)}:{}}}),P=p.map(r=>({value:m(r),label:r.name,...h?{group:n("Tyres")}:{},thumb:r.coverImage??null,meta:Y(r.variantCount)}));return[S,...g,...x,...P]}function v({value:e,onChange:o}){const s=z(),{rows:t,loading:l,refreshing:a,errored:u,refresh:p}=q({load:_,resolve:C,snapshot:T,value:e,onChange:o}),[h,S]=$(null);I(()=>{let i=!1;return w().then(k=>{i||S(k)}),()=>{i=!0}},[]);const{currency:g}=D(),c=L(()=>t&&e?C(t,e)??null:null,[t,e]),d=L(()=>(t??[]).filter(i=>i.kind==="alloy-wheel"),[t]),{category:f,setCategory:x,categoryNames:P}=U(d,h,c?.kind==="alloy-wheel"?c:null),r=!!e?.slug&&t!==null&&!c,y=L(()=>Z({rows:t,category:f,value:e,loading:l,currency:g}),[t,f,e,l,g]),W=i=>{if(!i){o(null);return}const k=(t??[]).find(F=>m(F)===i);k&&o(T(k))},j=()=>{e?.slug&&s.send("storefront-editor:open-product",{slug:e.slug,name:e.name})},A=u?"error":a?"loading":"idle",B=u?n("Couldn’t reach the product catalog."):a?n("Syncing from the catalog…"):r?n("Linked to “{name}” — no longer in the catalog.",{name:e?.name??""}):n("Linked to “{name}” · title, description, category, price & image follow the product.",{name:e?.name??""});return H("div",{children:[b(G,{label:"Product",options:y,fallback:"",value:e?m({kind:R(e),slug:e.slug}):"",onChange:W,placeholder:"Search products…"}),b(V,{label:X(t),allLabel:E(t)?n("All wheel categories"):n("All products"),category:f,onChange:x,categoryNames:P,readOnly:l}),e?.slug?b(J,{status:A,statusText:B,onRefresh:p,busy:a,edit:{label:n("Edit product ✎"),onClick:j},hint:n("The whole hero comes from the product record — title, price, pictures, options and Add to Cart. Edit the product in the Products database and this hero updates to match.")}):b("p",{className:"es-field-hint sf-hint-keep",style:{marginTop:7},children:n("This hero always shows a real product. Pick one to fill the title, price, pictures, options and Add to Cart from the catalog.")})]})}export{v as default,X as heroCategoryLabel,Z as heroPickerOptions,C as heroResolve,T as heroSnapshot};
@@ -1 +1 @@
1
- "use client";import{jsx as c,jsxs as C}from"react/jsx-runtime";import{useEffect as N,useMemo as P,useState as d}from"react";import{loadProductCatalog as x}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as b}from"./useStorefrontCategories.js";import{useCategoryFilter as j}from"./useCategoryFilter.js";import S from"./CategoryProductFields.js";import{useGridSourceLock as L}from"./useGridSourceLock.js";import{say as o}from"efficient-web-builder/format/lib/editor-words";import{sayWith as T}from"../lib/say-with.js";function W({value:r,onChange:u}){const[e,m]=d(null),[f,g]=d(null);N(()=>{let t=!1;return x().then(n=>{t||m(n)}),b().then(n=>{t||g(n)}),()=>{t=!0}},[]);const h=P(()=>e&&r?e.find(t=>t.slug===r)??null:null,[e,r]),{category:p,setCategory:y,categoryNames:k,filtered:a}=j(e,f,h),l=e===null,i=L(),s=i!==null;return C("div",{children:[s&&c("p",{className:"es-field-hint sf-hint-keep",style:{marginBottom:8},children:T(o("Disabled because this grid’s {source} is set to “{name}”. The grid fills itself from that source automatically. To pick wheels here, set {source} back to “Manual”.",{name:i??""}),{source:c("strong",{children:o("Product content")})})}),c("div",{className:s?"sf-locked":void 0,children:c(S,{category:p,onChange:y,categoryNames:k,readOnly:l||s,products:a,product:r??"",onProductChange:u,productReadOnly:l||s,emptyLabel:l?o("Loading…"):a.length===0?o("No products in this category"):o("Select a product…")})})]})}export{W as default};
1
+ "use client";import{jsx as l,jsxs as C}from"react/jsx-runtime";import{useEffect as P,useMemo as N,useState as d}from"react";import{loadProductCatalog as x}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as b}from"./useStorefrontCategories.js";import{useCategoryFilter as j}from"./useCategoryFilter.js";import S from"./CategoryProductFields.js";import{useGridSourceLock as L}from"./useGridSourceLock.js";import{say as o}from"efficient-web-builder/format/lib/editor-words";import{sayWith as T}from"../lib/say-with.js";function W({value:r,onChange:u}){const[e,m]=d(null),[f,g]=d(null);P(()=>{let t=!1;return x().then(a=>{t||m(a)}),b().then(a=>{t||g(a)}),()=>{t=!0}},[]);const h=N(()=>e&&r?e.find(t=>t.slug===r)??null:null,[e,r]),{category:p,setCategory:y,categoryNames:k,filtered:n}=j(e,f,h),c=e===null,i=L(),s=i!==null;return C("div",{children:[s&&l("p",{className:"es-field-hint sf-hint-keep",style:{marginBottom:8},children:T(o("Disabled because this grid’s {source} is set to “{name}”. The grid fills itself from that source automatically. To pick wheels here, set {source} back to “Manual”.",{name:i??""}),{source:l("strong",{children:o("Product content")})})}),l("div",{className:s?"sf-locked":void 0,children:l(S,{category:p,onChange:y,categoryNames:k,readOnly:c||s,products:n,allProducts:e??[],product:r??"",onProductChange:u,productReadOnly:c||s,emptyLabel:c?o("Loading…"):n.length===0?o("No products in this category"):o("Select a product…")})})]})}export{W as default};
@@ -0,0 +1,26 @@
1
+ import { type AdminStorefrontCategory, type WheelSummary } from "../../render/lib/api/index.js";
2
+ import { type ReviewsSourceOptions } from "../../render/lib/sections/reviews.js";
3
+ export declare const REVIEWS_PRODUCT_CHOICE: {
4
+ readonly all: "";
5
+ readonly this: "@this";
6
+ readonly pick: "@pick";
7
+ readonly kept: "@kept";
8
+ };
9
+ export declare function reviewsProductChoice(value: ReviewsSourceOptions | null | undefined, wheels: readonly WheelSummary[] | null, onProductPage: boolean): string;
10
+ export declare function reviewsOnProductPage(appState: unknown): boolean;
11
+ export declare function reviewsSourceOptionsFor(choice: string, wheels: readonly WheelSummary[] | null, value: ReviewsSourceOptions | null | undefined): ReviewsSourceOptions;
12
+ interface RowsProps {
13
+ value: ReviewsSourceOptions | null | undefined;
14
+ onChange: (value: ReviewsSourceOptions) => void;
15
+ wheels: WheelSummary[] | null;
16
+ categories: AdminStorefrontCategory[] | null;
17
+ onProductPage: boolean;
18
+ loading: boolean;
19
+ }
20
+ export declare function ReviewsProductRows({ value, onChange, wheels, categories, onProductPage, loading }: RowsProps): import("react").JSX.Element;
21
+ interface Props {
22
+ value?: ReviewsSourceOptions | null;
23
+ onChange: (value: ReviewsSourceOptions) => void;
24
+ }
25
+ export default function ReviewsProductSource({ value, onChange }: Props): import("react").JSX.Element;
26
+ export {};
@@ -0,0 +1 @@
1
+ "use client";import{jsx as p,jsxs as _}from"react/jsx-runtime";import{useEffect as x,useMemo as g,useState as v}from"react";import{useProductCatalog as S}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as b}from"./useStorefrontCategories.js";import{useCategoryFilter as D}from"./useCategoryFilter.js";import F from"./CategoryProductFields.js";import{useEasel as N}from"efficient-easel/easel";import{isEditorOnDynamicPage as T}from"efficient-web-builder/format/lib/document/editor-page-context";import{editorPageDrawsOtherRecord as j}from"../../render/lib/document/current-record.js";import{say as u}from"efficient-web-builder/format/lib/editor-words";import{REVIEWS_OF_CHOSEN_PRODUCT as f,REVIEWS_OF_EVERY_PRODUCT as C}from"../../render/lib/sections/reviews.js";const o={all:"",this:"@this",pick:"@pick",kept:"@kept"},a=e=>typeof e=="string"?e.trim():"",m=e=>(e??[]).filter(s=>a(s.designCode)!=="");function I(e,s,n){const l=e?.product;if(l===C)return o.all;const c=a(e?.designCode);if(l===f||!n&&c!==""){if(c==="")return o.pick;const r=m(s).find(t=>a(t.designCode)===c);return r?r.slug:o.kept}return n?o.this:o.all}function V(e){return T()&&!j({appState:e})}function W(e,s,n){const{product:l,designCode:c,...r}=n??{};if(e===o.kept)return{...n??{}};if(e===o.all)return{...r,product:C};if(e===o.this)return r;const t=e===o.pick?null:m(s).find(i=>i.slug===e);return t?{...r,product:f,designCode:a(t.designCode)}:{...r,product:f}}function H(e,s,n){return[...e?[{label:u("This product"),value:o.this}]:[],{label:u("Choose a product"),value:o.pick},...s!==null?[{label:n?s:u("{name} (unavailable)",{name:s}),value:o.kept}]:[]]}function L({value:e,onChange:s,wheels:n,categories:l,onProductPage:c,loading:r}){const t=g(()=>m(n),[n]),i=I(e,t,c),h=g(()=>t.find(d=>d.slug===i)??null,[t,i]),{category:y,setCategory:w,categoryNames:P,filtered:O}=D(t,l,h),k=i!==o.all&&i!==o.this,E=i===o.kept,R=a(e?.designCode);return _("div",{children:[p(F,{category:y,onChange:w,categoryNames:P,allLabel:u("All categories"),categoryHidden:!k,readOnly:r,products:O,allProducts:t,product:i,onProductChange:d=>s(W(d,t,e)),productReadOnly:r,emptyLabel:r?u("Loading…"):u("All products"),extraOptions:H(c,E?R:null,r),showPicked:!0}),i===o.pick&&!r?p("p",{className:"es-field-hint sf-hint-keep",style:{marginTop:"var(--space-8)"},children:u("No product chosen yet, so reviews of every product show.")}):null]})}function U({value:e,onChange:s}){const n=N(t=>V(t.appState)),l=S(),[c,r]=v(null);return x(()=>{let t=!1;return b().then(i=>{t||r(i)}),()=>{t=!0}},[]),p(L,{value:e,onChange:s,wheels:l,categories:c,onProductPage:n,loading:l===null})}export{o as REVIEWS_PRODUCT_CHOICE,L as ReviewsProductRows,U as default,V as reviewsOnProductPage,I as reviewsProductChoice,W as reviewsSourceOptionsFor};
@@ -1 +1 @@
1
- "use client";import{jsx as c,jsxs as N}from"react/jsx-runtime";import{useEffect as j,useMemo as T,useState as F}from"react";import{resolveMedia as O}from"efficient-web-builder/render/lib/media";import{useEaselHost as B}from"efficient-easel/screen/lib/host";import{loadProductCatalog as H}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as M}from"./useStorefrontCategories.js";import{useCategoryFilter as R}from"./useCategoryFilter.js";import _ from"./CategoryProductFields.js";import{useSnapshotSource as z}from"efficient-web-builder/editor/components/useSnapshotSource";import W from"efficient-web-builder/editor/components/SourceStatus";import{say as t}from"efficient-web-builder/format/lib/editor-words";function p(e){return{slug:e.slug,name:e.name,process:e.process,spokes:e.spokes,mesh:e.mesh,spec:e.spec,finishes:e.finishes.map(s=>({name:s.name,image:O(s.angles?.[0]??s.src)??null}))}}function Y({value:e,onChange:s}){const f=B(),{rows:r,loading:a,refreshing:i,errored:u,refresh:g}=z({load:H,resolve:(o,n)=>o.find(l=>l.slug===n.slug),snapshot:p,value:e,onChange:s}),[h,y]=F(null);j(()=>{let o=!1;return M().then(n=>{o||y(n)}),()=>{o=!0}},[]);const d=T(()=>r&&e?.slug?r.find(o=>o.slug===e.slug)??null:null,[r,e?.slug]),{category:b,setCategory:k,categoryNames:S,filtered:x}=R(r,h,d),m=!!e?.slug&&r!==null&&!d,C=o=>{if(!o){s(null);return}const n=(r??[]).find(l=>l.slug===o);n&&s(p(n))},P=()=>{e?.slug&&f.send("storefront-editor:open-product",{slug:e.slug,name:e.name})},w=!!e?.spec,E=u?"error":i?"loading":"idle",L=u?t("Couldn’t reach the product catalog."):i?t("Syncing from the catalog…"):m?t("Linked to “{name}” — no longer in the catalog.",{name:e?.name??""}):w?t("Linked to “{name}” · every spec row follows the product.",{name:e?.name??""}):t("Linked to “{name}” — this product has no spec data yet.",{name:e?.name??""});return N("div",{children:[c(_,{category:b,onChange:k,categoryNames:S,readOnly:a,products:x,product:e?.slug??"",onProductChange:C,productReadOnly:a,emptyLabel:a?t("Loading…"):t("None (write the rows yourself)"),extraOptions:m?[{label:t("{name} (unavailable)",{name:e.name}),value:e.slug}]:[]}),e?.slug?c(W,{status:E,statusText:L,onRefresh:g,busy:i,edit:{label:t("Edit product ✎"),onClick:P},hint:t("Every spec row (lug count, bolt pattern, offset, center bore, load rating, bump profile…) comes from the product record — edit its part numbers in the Products database and this table updates to match. You still choose which finish to picture and an optional size.")}):c("p",{className:"es-field-hint sf-hint-keep",style:{marginTop:7},children:t("Pick a product to fill the spec table from the catalog, or keep “None” to write the rows yourself.")})]})}export{Y as default};
1
+ "use client";import{jsx as c,jsxs as N}from"react/jsx-runtime";import{useEffect as j,useMemo as T,useState as F}from"react";import{resolveMedia as O}from"efficient-web-builder/render/lib/media";import{useEaselHost as B}from"efficient-easel/screen/lib/host";import{loadProductCatalog as H}from"../../render/components/useProductCatalog.js";import{loadStorefrontCategories as M}from"./useStorefrontCategories.js";import{useCategoryFilter as R}from"./useCategoryFilter.js";import _ from"./CategoryProductFields.js";import{useSnapshotSource as z}from"efficient-web-builder/editor/components/useSnapshotSource";import W from"efficient-web-builder/editor/components/SourceStatus";import{say as t}from"efficient-web-builder/format/lib/editor-words";function p(e){return{slug:e.slug,name:e.name,process:e.process,spokes:e.spokes,mesh:e.mesh,spec:e.spec,finishes:e.finishes.map(s=>({name:s.name,image:O(s.angles?.[0]??s.src)??null}))}}function Y({value:e,onChange:s}){const f=B(),{rows:r,loading:a,refreshing:i,errored:u,refresh:g}=z({load:H,resolve:(o,n)=>o.find(l=>l.slug===n.slug),snapshot:p,value:e,onChange:s}),[h,y]=F(null);j(()=>{let o=!1;return M().then(n=>{o||y(n)}),()=>{o=!0}},[]);const d=T(()=>r&&e?.slug?r.find(o=>o.slug===e.slug)??null:null,[r,e?.slug]),{category:b,setCategory:k,categoryNames:S,filtered:x}=R(r,h,d),m=!!e?.slug&&r!==null&&!d,C=o=>{if(!o){s(null);return}const n=(r??[]).find(l=>l.slug===o);n&&s(p(n))},P=()=>{e?.slug&&f.send("storefront-editor:open-product",{slug:e.slug,name:e.name})},w=!!e?.spec,E=u?"error":i?"loading":"idle",L=u?t("Couldn’t reach the product catalog."):i?t("Syncing from the catalog…"):m?t("Linked to “{name}” — no longer in the catalog.",{name:e?.name??""}):w?t("Linked to “{name}” · every spec row follows the product.",{name:e?.name??""}):t("Linked to “{name}” — this product has no spec data yet.",{name:e?.name??""});return N("div",{children:[c(_,{category:b,onChange:k,categoryNames:S,readOnly:a,products:x,allProducts:r??[],product:e?.slug??"",onProductChange:C,productReadOnly:a,emptyLabel:a?t("Loading…"):t("None (write the rows yourself)"),extraOptions:m?[{label:t("{name} (unavailable)",{name:e.name}),value:e.slug}]:[]}),e?.slug?c(W,{status:E,statusText:L,onRefresh:g,busy:i,edit:{label:t("Edit product ✎"),onClick:P},hint:t("Every spec row (lug count, bolt pattern, offset, center bore, load rating, bump profile…) comes from the product record — edit its part numbers in the Products database and this table updates to match. You still choose which finish to picture and an optional size.")}):c("p",{className:"es-field-hint sf-hint-keep",style:{marginTop:7},children:t("Pick a product to fill the spec table from the catalog, or keep “None” to write the rows yourself.")})]})}export{Y as default};
@@ -1 +1 @@
1
- export declare const commerceBlocks: Record<"AlloyWheelsListing" | "ProductGrid" | "CatalogFilterBar" | "Gallery" | "GalleryB" | "Header" | "SearchBlock" | "CountrySwitchBlock" | "ThemeSwitchBlock" | "AccountBlock" | "CartBlock" | "Collections" | "CollectionCard" | "ProductRef" | "GalleryItem" | "SpecTable" | "ProductHero" | "BundleOffer" | "CompatibleTyres" | "DeliveryOptions" | "DetailRows" | "FitmentFinder" | "FitmentTable" | "RelatedProducts" | "TyreFitment" | "TyreSizes" | "EuTyreLabel" | "CheckoutCTA" | "EuTyreLabelBlock" | "ProductGallery" | "ProductSize" | "ProductColour" | "ProductPrice", import("efficient-easel/blocks").ComponentConfig<any, any, Omit<import("efficient-easel/blocks").ComponentData<any, string, Record<string, import("efficient-easel/blocks").DefaultComponentProps>>, "type">>>;
1
+ export declare const commerceBlocks: Record<"AlloyWheelsListing" | "ProductGrid" | "CatalogFilterBar" | "Gallery" | "GalleryB" | "Header" | "SpecTable" | "SearchBlock" | "CountrySwitchBlock" | "ThemeSwitchBlock" | "AccountBlock" | "CartBlock" | "Collections" | "CollectionCard" | "ProductRef" | "GalleryItem" | "ProductHero" | "BundleOffer" | "CompatibleTyres" | "DeliveryOptions" | "DetailRows" | "FitmentFinder" | "FitmentTable" | "RelatedProducts" | "TyreFitment" | "TyreSizes" | "EuTyreLabel" | "CheckoutCTA" | "EuTyreLabelBlock" | "ProductGallery" | "ProductSize" | "ProductColour" | "ProductPrice", import("efficient-easel/blocks").ComponentConfig<any, any, Omit<import("efficient-easel/blocks").ComponentData<any, string, Record<string, import("efficient-easel/blocks").DefaultComponentProps>>, "type">>>;
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import t from"../../../../../components/MenuPicker.js";import{PhoneIcon as m,LineBetweenIcon as l}from"efficient-easel/icons";import{deviceField as s}from"efficient-easel/screen/lib/document/device-fields";import{plainText as a,toggle as o}from"efficient-web-builder/editor/lib/document/controls";import{group as i}from"efficient-easel/screen/lib/document/box-fields";const h={fields:{_gContent:i("Content"),menu:{type:"custom",render:({value:n,onChange:r})=>e(t,{value:n,onChange:r})},heading:a("Heading","Column heading"),_gStyle:i("Style"),accordionMobile:s("mobile",o("Show as accordion",!1,e(m,{}))),showDividers:o("Dividers between links",!1,e(l,{}))}};export{h as FooterMenuFields};
1
+ import{jsx as e}from"react/jsx-runtime";import t from"../../../../../components/MenuPicker.js";import{PhoneIcon as m,LineBetweenIcon as l}from"efficient-easel/icons";import{deviceField as s}from"efficient-easel/screen/lib/document/device-fields";import{plainText as a,toggle as o}from"efficient-web-builder/editor/lib/document/controls";import{group as i}from"efficient-easel/screen/lib/document/box-fields";import{FooterMenuSlots as d}from"../../../../../../render/lib/document/blocks/service/FooterMenu/meta.js";const w={fields:{...d,_gContent:i("Content"),menu:{type:"custom",render:({value:n,onChange:r})=>e(t,{value:n,onChange:r})},heading:a("Heading","Column heading"),_gStyle:i("Style"),accordionMobile:s("mobile",o("Show as accordion",!1,e(m,{}))),showDividers:o("Dividers between links",!1,e(l,{}))}};export{w as FooterMenuFields};
@@ -0,0 +1,2 @@
1
+ import type { BlockFields } from "efficient-web-builder/format/lib/document/blocks/block-types";
2
+ export declare const MenuLinkBlockFields: BlockFields;
@@ -0,0 +1 @@
1
+ const e={fields:{}};export{e as MenuLinkBlockFields};
@@ -1 +1 @@
1
- import{text as i,textarea as m,withOffPage as d,plainText as n}from"efficient-web-builder/editor/lib/document/controls";import{group as e}from"efficient-easel/screen/lib/document/box-fields";import{headFieldsForPlacement as s,SPLITTABLE_SECTIONS as a}from"efficient-web-builder/format/lib/sections/section-head-placement";import{REVIEWS_DESIGN_CODE_PH as l}from"../placeholders.js";import{REVIEW_FORM_PH as o}from"../../../../../../render/lib/document/blocks/service/ReviewForm/meta.js";const F={fields:{_gContent:e("Content"),eyebrow:i("Eyebrow",o.eyebrow),title:m("Heading",o.title),_gSource:e("Reviews"),designCode:d(n("Design code",l))},resolveFields:(t,{fields:r,parent:p})=>s(r,t.props.headPlacement,a.ReviewForm.headRows)};export{F as ReviewFormFields};
1
+ import{text as i,textarea as n,withOffPage as s,plainText as l}from"efficient-web-builder/editor/lib/document/controls";import{group as e}from"efficient-easel/screen/lib/document/box-fields";import{headFieldsForPlacement as a,SPLITTABLE_SECTIONS as d}from"efficient-web-builder/format/lib/sections/section-head-placement";import{REVIEW_FORM_PH as o}from"../../../../../../render/lib/document/blocks/service/ReviewForm/meta.js";const m="e.g. D00123 · blank = the whole store",_={fields:{_gContent:e("Content"),eyebrow:i("Eyebrow",o.eyebrow),title:n("Heading",o.title),_gSource:e("Reviews"),designCode:s(l("Design code",m))},resolveFields:(t,{fields:r,parent:p})=>a(r,t.props.headPlacement,d.ReviewForm.headRows)};export{_ as ReviewFormFields};
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import{StylesIcon as p,HashIcon as S,ColumnsIcon as c,StarIcon as d}from"efficient-easel/icons";import{text as R,textarea as f,withOffPage as u,plainText as r,plainTextarea as w}from"efficient-web-builder/editor/lib/document/controls";import{group as i}from"efficient-easel/screen/lib/document/box-fields";import{select as a,slider as m}from"efficient-web-builder/editor/lib/document/box-fields";import{blockSourceField as y,blockSourceFields as _}from"efficient-web-builder/editor/lib/document/block-source-fields";import{withShowWhen as l}from"efficient-web-builder/render/lib/document/show-when";import{BLOCK_SOURCE_PROP as I}from"efficient-web-builder/format/lib/content/block-sources";import{headFieldsForPlacement as O,SPLITTABLE_SECTIONS as g}from"efficient-web-builder/format/lib/sections/section-head-placement";import{SECTION_EYEBROW_LOOK_OPTIONS as E,eyebrowLookFor as b}from"efficient-web-builder/format/lib/sections/section-eyebrow-look";import{RATING_STARS as T}from"../../../../../../render/components/RatingStars.js";import{REVIEWS_DESIGN_CODE_PH as v}from"../placeholders.js";import{REVIEWS_PH as n,ReviewsSlots as P}from"../../../../../../render/lib/document/blocks/service/Reviews/meta.js";const s={field:I,set:!0},C=[{label:"None",value:""},...Array.from({length:T},(e,o)=>({label:String(o+1),value:String(o+1)}))],K={fields:{_gContent:i("Content"),eyebrow:R("Eyebrow",n.eyebrow),eyebrowLook:a("Eyebrow style",t(p,{}),[...E],b("Reviews")),title:f("Heading",n.title),_gSource:i("Reviews"),dataSource:y("Review content","Manual"),items:l({type:"array",label:"Typed reviews",arrayFields:{quote:w("Quote"),title:r("Title"),name:r("Name"),role:r("Role · location"),rating:a("Rating",t(d,{}),C,"")},defaultItemProps:{quote:"",title:"",name:"",role:"",rating:""},getItemSummary:e=>e?.name||e?.quote||"Review"},{not:s}),...P,limit:l(m("Reviews to display",t(S,{}),3,12,1,6),s),dataSourceOptions:l({type:"object",label:"Product",objectFields:{designCode:u(r("Design code",v))}},s),_gStyle:i("Style"),columns:m("Columns",t(c,{}),1,3,1,3)},resolveFields:(e,{fields:o,parent:h})=>_("Reviews",O(o,e.props.headPlacement,g.Reviews.headRows),e.props,{hides:["items"]})};export{K as ReviewsFields};
1
+ import{jsx as o}from"react/jsx-runtime";import{StylesIcon as p,HashIcon as S,ColumnsIcon as c,StarIcon as d}from"efficient-easel/icons";import{text as u,textarea as R,plainText as l,plainTextarea as w,sourceField as f}from"efficient-web-builder/editor/lib/document/controls";import{group as m}from"efficient-easel/screen/lib/document/box-fields";import{select as s,slider as a}from"efficient-web-builder/editor/lib/document/box-fields";import{blockSourceField as y,blockSourceFields as I}from"efficient-web-builder/editor/lib/document/block-source-fields";import{withShowWhen as r}from"efficient-web-builder/render/lib/document/show-when";import{BLOCK_SOURCE_PROP as _}from"efficient-web-builder/format/lib/content/block-sources";import{headFieldsForPlacement as v,SPLITTABLE_SECTIONS as O}from"efficient-web-builder/format/lib/sections/section-head-placement";import{SECTION_EYEBROW_LOOK_OPTIONS as T,eyebrowLookFor as g}from"efficient-web-builder/format/lib/sections/section-eyebrow-look";import{RATING_STARS as E}from"../../../../../../render/components/RatingStars.js";import b from"../../../../../components/ReviewsProductSource.js";import P from"../../../../../components/EditReviewsLink.js";import{REVIEWS_PH as n,ReviewsSlots as h}from"../../../../../../render/lib/document/blocks/service/Reviews/meta.js";const i={field:_,set:!0},C=[{label:"None",value:""},...Array.from({length:E},(e,t)=>({label:String(t+1),value:String(t+1)}))],Q={fields:{_gContent:m("Content"),eyebrow:u("Eyebrow",n.eyebrow),eyebrowLook:s("Eyebrow style",o(p,{}),[...T],g("Reviews")),title:R("Heading",n.title),_gSource:m("Reviews"),dataSource:y("Review content","Manual"),_editReviews:r({type:"custom",render:()=>o(P,{})},i),items:r({type:"array",label:"Typed reviews",arrayFields:{quote:w("Quote"),title:l("Title"),name:l("Name"),role:l("Role · location"),rating:s("Rating",o(d,{}),C,"")},defaultItemProps:{quote:"",title:"",name:"",role:"",rating:""},getItemSummary:e=>e?.name||e?.quote||"Review"},{not:i}),...h,limit:r(a("Items to display",o(S,{}),3,12,1,6),i),dataSourceOptions:r(f(b),i),_gStyle:m("Style"),columns:a("Columns",o(c,{}),1,3,1,3)},resolveFields:(e,{fields:t,parent:F})=>I("Reviews",v(t,e.props.headPlacement,O.Reviews.headRows),e.props,{hides:["items"]})};export{Q as ReviewsFields};
@@ -1 +1 @@
1
- export declare const serviceBlocks: Record<"Form" | "Reviews" | "Footer" | "FooterGroup" | "Events" | "SiteHeader" | "SiteFooter" | "AppointmentBooking" | "BookingBox" | "SubmitBuild" | "SubmitBox" | "FooterLogo" | "FooterMenu" | "FooterDivider" | "FooterText" | "FooterEmailSignup" | "FooterSocial" | "FooterPayment" | "Subscribe" | "OpeningHours" | "RateTable" | "MessagingCards" | "FooterMessaging" | "ReviewForm" | "ContactRouting" | "LegalLineBlock" | "ContactCards" | "RatingBlock" | "SubscribeBlogs", import("efficient-easel/blocks").ComponentConfig<any, any, Omit<import("efficient-easel/blocks").ComponentData<any, string, Record<string, import("efficient-easel/blocks").DefaultComponentProps>>, "type">>>;
1
+ export declare const serviceBlocks: Record<"Form" | "Reviews" | "Footer" | "FooterGroup" | "Events" | "MenuLinkBlock" | "FooterMenu" | "SiteHeader" | "SiteFooter" | "AppointmentBooking" | "BookingBox" | "SubmitBuild" | "SubmitBox" | "FooterLogo" | "FooterDivider" | "FooterText" | "FooterEmailSignup" | "FooterSocial" | "FooterPayment" | "Subscribe" | "OpeningHours" | "RateTable" | "MessagingCards" | "FooterMessaging" | "ReviewForm" | "ContactRouting" | "LegalLineBlock" | "ContactCards" | "RatingBlock" | "SubscribeBlogs", import("efficient-easel/blocks").ComponentConfig<any, any, Omit<import("efficient-easel/blocks").ComponentData<any, string, Record<string, import("efficient-easel/blocks").DefaultComponentProps>>, "type">>>;
@@ -1 +1 @@
1
- import{assembleBlocks as o}from"efficient-web-builder/format/lib/document/blocks/block-types";import{SITE_FOOTER_TYPE as i,SITE_HEADER_TYPE as r}from"efficient-web-builder/format/lib/document/section-groups";import{AppointmentBookingFields as e}from"./AppointmentBooking/fields.js";import{BookingBoxFields as t}from"./BookingBox/fields.js";import{ContactRoutingFields as m}from"./ContactRouting/fields.js";import{EventsFields as s}from"./Events/fields.js";import{FooterFields as F}from"./Footer/fields.js";import{FooterDividerFields as l}from"./FooterDivider/fields.js";import{FooterEmailSignupFields as p}from"./FooterEmailSignup/fields.js";import{FooterGroupFields as d}from"./FooterGroup/fields.js";import{FooterLogoFields as n}from"./FooterLogo/fields.js";import{FooterMenuFields as f}from"./FooterMenu/fields.js";import{FooterSocialFields as a}from"./FooterSocial/fields.js";import{FooterPaymentFields as g}from"./FooterPayment/fields.js";import{FooterTextFields as u}from"./FooterText/fields.js";import{FormFields as S}from"./Form/fields.js";import{LegalLineBlockFields as c}from"./LegalLineBlock/fields.js";import{OpeningHoursFields as B}from"./OpeningHours/fields.js";import{RateTableFields as E}from"./RateTable/fields.js";import{MessagingCardsFields as R}from"./MessagingCards/fields.js";import{FooterMessagingFields as b}from"./FooterMessaging/fields.js";import{ContactCardsFields as k}from"./ContactCards/fields.js";import{RatingBlockFields as C}from"./RatingBlock/fields.js";import{ReviewFormFields as v}from"./ReviewForm/fields.js";import{ReviewsFields as T}from"./Reviews/fields.js";import{SiteFooterFields as x}from"./SiteFooter/fields.js";import{SiteHeaderFields as L}from"./SiteHeader/fields.js";import{SubmitBoxFields as M}from"./SubmitBox/fields.js";import{SubmitBuildFields as _}from"./SubmitBuild/fields.js";import{SubscribeFields as D}from"./Subscribe/fields.js";import{SubscribeBlogsFields as I}from"./SubscribeBlogs/fields.js";import{SERVICE_RENDERS as w}from"../../../../../render/lib/document/blocks/service/renders.js";const H={AppointmentBooking:e,BookingBox:t,ContactRouting:m,Events:s,Footer:F,FooterDivider:l,FooterEmailSignup:p,FooterGroup:d,FooterLogo:n,FooterMenu:f,FooterSocial:a,FooterPayment:g,FooterText:u,Form:S,LegalLineBlock:c,OpeningHours:B,RateTable:E,MessagingCards:R,FooterMessaging:b,ContactCards:k,RatingBlock:C,ReviewForm:v,Reviews:T,[i]:x,[r]:L,SubmitBox:M,SubmitBuild:_,Subscribe:D,SubscribeBlogs:I},ao=o(w,H);export{ao as serviceBlocks};
1
+ import{assembleBlocks as o}from"efficient-web-builder/format/lib/document/blocks/block-types";import{SITE_FOOTER_TYPE as i,SITE_HEADER_TYPE as r}from"efficient-web-builder/format/lib/document/section-groups";import{AppointmentBookingFields as e}from"./AppointmentBooking/fields.js";import{BookingBoxFields as t}from"./BookingBox/fields.js";import{ContactRoutingFields as m}from"./ContactRouting/fields.js";import{EventsFields as s}from"./Events/fields.js";import{FooterFields as F}from"./Footer/fields.js";import{FooterDividerFields as l}from"./FooterDivider/fields.js";import{FooterEmailSignupFields as p}from"./FooterEmailSignup/fields.js";import{FooterGroupFields as n}from"./FooterGroup/fields.js";import{FooterLogoFields as d}from"./FooterLogo/fields.js";import{FooterMenuFields as f}from"./FooterMenu/fields.js";import{FooterSocialFields as a}from"./FooterSocial/fields.js";import{FooterPaymentFields as g}from"./FooterPayment/fields.js";import{FooterTextFields as u}from"./FooterText/fields.js";import{FormFields as c}from"./Form/fields.js";import{LegalLineBlockFields as B}from"./LegalLineBlock/fields.js";import{MenuLinkBlockFields as S}from"./MenuLinkBlock/fields.js";import{OpeningHoursFields as E}from"./OpeningHours/fields.js";import{RateTableFields as R}from"./RateTable/fields.js";import{MessagingCardsFields as b}from"./MessagingCards/fields.js";import{FooterMessagingFields as k}from"./FooterMessaging/fields.js";import{ContactCardsFields as C}from"./ContactCards/fields.js";import{RatingBlockFields as v}from"./RatingBlock/fields.js";import{ReviewFormFields as L}from"./ReviewForm/fields.js";import{ReviewsFields as T}from"./Reviews/fields.js";import{SiteFooterFields as M}from"./SiteFooter/fields.js";import{SiteHeaderFields as x}from"./SiteHeader/fields.js";import{SubmitBoxFields as _}from"./SubmitBox/fields.js";import{SubmitBuildFields as D}from"./SubmitBuild/fields.js";import{SubscribeFields as I}from"./Subscribe/fields.js";import{SubscribeBlogsFields as w}from"./SubscribeBlogs/fields.js";import{SERVICE_RENDERS as H}from"../../../../../render/lib/document/blocks/service/renders.js";const O={AppointmentBooking:e,BookingBox:t,ContactRouting:m,Events:s,Footer:F,FooterDivider:l,FooterEmailSignup:p,FooterGroup:n,FooterLogo:d,FooterMenu:f,FooterSocial:a,FooterPayment:g,FooterText:u,Form:c,LegalLineBlock:B,MenuLinkBlock:S,OpeningHours:E,RateTable:R,MessagingCards:b,FooterMessaging:k,ContactCards:C,RatingBlock:v,ReviewForm:L,Reviews:T,[i]:M,[r]:x,SubmitBox:_,SubmitBuild:D,Subscribe:I,SubscribeBlogs:w},uo=o(H,O);export{uo as serviceBlocks};
@@ -1,4 +1,5 @@
1
1
  import type { MakeNode } from "efficient-web-builder/format/lib/document/box-footer";
2
+ import "../../../render/lib/document/card-templates.js";
2
3
  export interface HeaderRowForBox {
3
4
  menu: string | null;
4
5
  menu_handle: string | null;
@@ -1 +1 @@
1
- import{resolveMenuRow as b}from"../../../render/lib/content/header-bar.js";import{resolveHeaderTheme as P}from"../../../render/lib/content/header-theme.js";import{buildSectionGroup as E,SITE_HEADER_TYPE as M}from"efficient-web-builder/format/lib/document/section-groups";import{resolveCountryShowAs as F}from"../../../render/lib/content/country-show-as.js";const y="Flex",A=10;function L(e,n,v,{logoHeightPx:i}={}){const o=e.util_style==="text"?"text":"icon",a={...e.menu?{id:e.menu}:{},...e.menu_handle?{handle:e.menu_handle}:{},...e.menu_name?{name:e.menu_name}:{},items:(e.menu_items??[]).map(({label:t,url:C,dropdown_items:x})=>({label:t,url:C,...x?.length?{dropdown_items:x.map(B=>({label:B.label,url:B.url}))}:{}}))},u=e.search_enabled?n("SearchBlock",{style:o}):null,r=e.search_position==="left",l=[r?u:null,e.country_selector_enabled?n("CountrySwitchBlock",{showAs:F(e.country_selector_show_as)}):null,n("ThemeSwitchBlock"),e.account_enabled!==!1?n("AccountBlock",{style:o}):null,e.cart_enabled!==!1?n("CartBlock",{style:o}):null,r?null:u].filter(t=>t!==null),h=n("LogoBlock",{...i?{heightPx:i}:{},...e.reverse_logo!=null?{reverse:e.reverse_logo?"auto":"off"}:{}}),s=t=>n("MenuBlock",{menu:a,direction:"row",...t}),R=b(e.menu_row)==="inline"?32:20,_=t=>n(y,{direction:"row",justify:"end",align:"center",share:"content",wrap:"nowrap",phoneRow:3,gap:R,content:t}),c=Math.min(Math.max(e.menu_split??3,1),4),p=e.logo_position==="center"&&a.items.length>c,m=e.menu_position==="center"?"center":e.menu_position==="beside"?"left":"right",k=!p&&m==="left"?e.menu_gap_px??32:32,T=p?[s({linkAlign:"left",linkRange:{from:1,to:c}}),h,_([s({linkAlign:"right",linkRange:{from:c+1}}),...l])]:[h,s({linkAlign:m}),...l.length?[_(l)]:[]],S=n(y,{direction:"row",justify:"between",align:"center",share:"content",wrap:"nowrap",phoneRow:3,sectionPaddingTop:A,sectionPaddingBottom:A,gap:k,content:T}),g=E(M,v,[S]),d=P(e.theme),f=b(e.menu_row);return{...g,props:{...g.props,sticky:e.sticky??"always",topTextColor:e.top_text_color??"auto",...e.height_px!=null?{heightPx:e.height_px}:{},...e.width==="full"?{fullWidth:!0}:{},...d!==null?{sectionAccent:d}:{},...e.nav_text_case?{navTextCase:e.nav_text_case}:{},...f?{menuRow:f}:{}}}}export{L as boxHeaderFromRow};
1
+ import{resolveMenuRow as y}from"../../../render/lib/content/header-bar.js";import{resolveHeaderTheme as M}from"../../../render/lib/content/header-theme.js";import{buildSectionGroup as P,SITE_HEADER_TYPE as E}from"efficient-web-builder/format/lib/document/section-groups";import{resolveCountryShowAs as F}from"../../../render/lib/content/country-show-as.js";import{templateOnInsert as j}from"efficient-web-builder/format/lib/content/card-template";import"../../../render/lib/document/card-templates.js";const A="Flex",v=10;function W(e,n,R,{logoHeightPx:r}={}){const s=e.util_style==="text"?"text":"icon",u={...e.menu?{id:e.menu}:{},...e.menu_handle?{handle:e.menu_handle}:{},...e.menu_name?{name:e.menu_name}:{},items:(e.menu_items??[]).map(({label:t,url:o,dropdown_items:l})=>({label:t,url:o,...l?.length?{dropdown_items:l.map(b=>({label:b.label,url:b.url}))}:{}}))},p=e.search_enabled?n("SearchBlock",{style:s}):null,m=e.search_position==="left",c=[m?p:null,e.country_selector_enabled?n("CountrySwitchBlock",{showAs:F(e.country_selector_show_as)}):null,n("ThemeSwitchBlock"),e.account_enabled!==!1?n("AccountBlock",{style:s}):null,e.cart_enabled!==!1?n("CartBlock",{style:s}):null,m?null:p].filter(t=>t!==null),h=n("LogoBlock",{...r?{heightPx:r}:{},...e.reverse_logo!=null?{reverse:e.reverse_logo?"auto":"off"}:{}}),i=t=>{const o=n("MenuBlock",{menu:u,direction:"row",...t}),l=j("MenuBlock",o.props);return l===o.props?o:{...o,props:l}},k=y(e.menu_row)==="inline"?32:20,_=t=>n(A,{direction:"row",justify:"end",align:"center",share:"content",wrap:"nowrap",phoneRow:3,gap:k,content:t}),a=Math.min(Math.max(e.menu_split??3,1),4),g=e.logo_position==="center"&&u.items.length>a,d=e.menu_position==="center"?"center":e.menu_position==="beside"?"left":"right",T=!g&&d==="left"?e.menu_gap_px??32:32,S=g?[i({linkAlign:"left",linkRange:{from:1,to:a}}),h,_([i({linkAlign:"right",linkRange:{from:a+1}}),...c])]:[h,i({linkAlign:d}),...c.length?[_(c)]:[]],C=n(A,{direction:"row",justify:"between",align:"center",share:"content",wrap:"nowrap",phoneRow:3,sectionPaddingTop:v,sectionPaddingBottom:v,gap:T,content:S}),f=P(E,R,[C]),x=M(e.theme),B=y(e.menu_row);return{...f,props:{...f.props,sticky:e.sticky??"always",topTextColor:e.top_text_color??"auto",...e.height_px!=null?{heightPx:e.height_px}:{},...e.width==="full"?{fullWidth:!0}:{},...x!==null?{sectionAccent:x}:{},...e.nav_text_case?{navTextCase:e.nav_text_case}:{},...B?{menuRow:B}:{}}}}export{W as boxHeaderFromRow};
@@ -1 +1 @@
1
- import{jsx as l,Fragment as x,jsxs as N}from"react/jsx-runtime";import{assignSectionGroups as H,reseatBucketTabs as M}from"efficient-web-builder/editor/lib/document/field-groups";import{buildBlockCategories as G}from"efficient-web-builder/format/lib/document/section-catalog";import{FONT_ROLES as U,FONT_ROLE_LABELS as K}from"efficient-web-builder/format/lib/fonts";import{CONTAINER_DIRECTION_LABELS as B}from"efficient-web-builder/format/lib/content/container-direction";import{SITE_FOOTER_TYPE as W,SITE_HEADER_TYPE as j}from"efficient-web-builder/format/lib/document/section-groups";import Y from"../../components/MenuLinkRangeField.js";import q from"../../components/EditorPreviewChat.js";import z from"../../components/EditorPreviewSurface.js";import{isSystemPageSlug as V,POPUP_DAYS_RANGE as E,POPUP_DELAY_RANGE as F,POPUP_HIDE_AFTER as X,POPUP_SCROLL_RANGE as k,POPUP_SHOW_ON as Q,POPUP_TRIGGERS as O,SUBSCRIBE_POPUP_DEFAULTS as J,SUBSCRIBE_POPUP_KIND as Z}from"efficient-web-builder/format/lib/content/subscribe";import{shownForOption as b,withRowRules as $}from"efficient-web-builder/render/lib/document/show-when";import{POPUP_KIND_PROP as ee,POPUP_TEXT_KIND_LABELS as _,POPUP_TEXT_KINDS as te}from"efficient-web-builder/format/lib/popup/text-kinds";import{loadPages as oe}from"efficient-web-builder/editor/components/StorefrontLinkField";import{pagePath as re}from"../../../render/lib/links/link-rules.js";import{getEditorSiteId as ie}from"efficient-web-builder/render/lib/editor-site";import{CART_DRAWER_DEFAULTS as ae,CART_DRAWER_KIND as L}from"efficient-web-builder/format/lib/content/cart-drawer";import{CONSENT_BANNER_KIND as C}from"efficient-web-builder/format/lib/content/consent-banner";import{consentBannerLayoutField as le}from"../../components/ConsentBannerLayoutTiles.js";import{CategoryIcon as ne,CheckIcon as se,ClockIcon as f,ColumnsIcon as ce,DirectionIcon as me,EyeIcon as ue,ListIcon as de,PageIcon as pe,PlacementIcon as ge,ScrollPointIcon as Pe,TriggerIcon as be}from"efficient-easel/icons";import{deviceField as v}from"efficient-easel/screen/lib/document/device-fields";import{FieldGlyph as fe}from"efficient-web-builder/editor/components/FieldGlyph";import{multiSelect as Se,panelNote as he,plainText as a,plainTextarea as u,sectionShapeFields as Te,sectionThemeFields as ye,textList as S,toggle as R}from"efficient-web-builder/editor/lib/document/controls";import{group as c}from"efficient-easel/screen/lib/document/box-fields";import{segmented as p,select as A,slider as h}from"efficient-web-builder/editor/lib/document/box-fields";import{blockAlignRow as Be}from"./block-align-row.js";import{formPicker as Ee}from"./blocks/service/controls.js";import{SECTION_THEME_FOLLOW_LABEL as Fe}from"efficient-web-builder/editor/components/SectionThemePicker";import{nestedAccentValue as ke}from"efficient-web-builder/format/lib/content/section-surface";import{isEditorOnDynamicPage as Oe}from"efficient-web-builder/format/lib/document/editor-page-context";import{TEMPLATE_PRODUCT_TYPE_PROP as _e}from"efficient-web-builder/format/lib/content/product-page";import{PRODUCT_KIND_OPTIONS as Le}from"../../../render/lib/catalog/plp-item.js";import{PH as T}from"efficient-web-builder/format/lib/document/blocks/placeholders";import{textKindGlyph as Ce}from"efficient-web-builder/editor/lib/document/blocks/shared-fields";import"../efficient-backend.js";import"../../../render/lib/document/slot-seeds.js";import"../../../render/lib/document/card-templates.js";import"../../../render/lib/document/section-to-box-rows-reviews.js";import"../../../render/lib/document/section-to-box-rows-spec.js";import"./section-text-regions.js";import{generalBlocks as e}from"efficient-web-builder/editor/lib/document/blocks/general/index";import{commerceBlocks as o}from"./blocks/commerce/index.js";import{serviceBlocks as i}from"./blocks/service/index.js";import{EditorThemedBody as ve,suppressPreviewNav as Re}from"efficient-web-builder/editor/lib/document/page-root";import Ae from"../../components/HeaderSection.js";import{addPageBlocksFromFooter as De,PAGE_MENU_DIRECTION_DEFAULT as we}from"../../../render/lib/document/footer-page-blocks.js";import{drawPopupPage as Ie,drawPublishedStorefrontRoot as xe,drawSystemPage as Ne,StorefrontPageProviders as He}from"../../../render/lib/document/storefront-root.js";import{GENERAL_ROOT_FIELDS as Me}from"efficient-web-builder/editor/lib/document/page-root-fields";import{finishRegistry as Ge}from"efficient-web-builder/editor/lib/document/registry";const Ue="Newsletter (built in)",Yt=[{value:"00",label:T.label},{value:"00",label:T.label},{value:"00",label:T.label}],t=J,g={field:"autoOpen",is:!0},Ke={all:[b("hideAfter",X,t.hideAfter,["days"]),{not:{all:[{field:"hideAfter",is:null,default:null},{field:"oncePerSession",in:[!0,!1]}]}}]},We=[[["trigger","showOn","hideAfter"],g],[["autoOpenDelaySec"],{all:[g,b("trigger",O,t.trigger,["delay","exit"])]}],[["scrollPercent"],{all:[g,b("trigger",O,t.trigger,["scroll"])]}],[["showOnPages"],{all:[g,b("showOn",Q,t.showOn,["chosen"])]}],[["hideDays"],{all:[g,Ke]}]],je=$({formSlug:Ee(void 0,Ue),_gLeft:c("Left panel"),metaLabel:a("Meta label",t.metaLabel),issueLabel:a("Issue label",t.issueLabel),issueNumber:a("Issue number",t.issueNumber),kicker:a("Eyebrow",t.kicker),heading:u("Heading",t.heading),deck:u("Deck",t.deck),stats:{type:"array",label:"Stats",arrayFields:{label:a("Label"),value:a("Value")},getItemSummary:r=>r?.label||r?.value||"Stat"},_gForm:c("Right panel · form"),formLabel:a("Section label",t.formLabel),formHeading:a("Heading",t.formHeading),formIntro:u("Intro",t.formIntro),firstNameLabel:a("First-name label",t.firstNameLabel),firstNamePlaceholder:a("First-name placeholder",t.firstNamePlaceholder),emailLabel:a("Email label",t.emailLabel),emailPlaceholder:a("Email placeholder",t.emailPlaceholder),_gChoices:c("Right panel · choices"),interestsLabel:a("Interests label",t.interestsLabel),interests:S("Interest chips",l(fe,{noun:"tag"}),"Chip label","verbatim"),frequencyLabel:a("Frequency label",t.frequencyLabel),frequencies:S("Frequency options",l(de,{}),"Option label","verbatim"),_gActions:c("Right panel · actions"),submitText:a("Submit button",t.submitText),finePrint:a("Fine print",t.finePrint),dismissText:a("Dismiss link",t.dismissText),emailInvalidText:a("Invalid-email error",t.emailInvalidText),submitErrorText:a("Submit-failed error",t.submitErrorText),_gSuccess:c("Success state"),successHeading:a("Heading",t.successHeading),successBody:u("Message",t.successBody),keepBrowsingText:a("Dismiss button",t.keepBrowsingText),...ye(ke,Fe),...Te(),_gTextStyle:c("Text style"),...Object.fromEntries(te.map(r=>[ee[r],A(_[r],Ce(_[r]),[{label:"Popup's own",value:""},...U.map(n=>({label:K[n],value:n}))],"")])),_gBehaviour:c("Behavior"),autoOpen:R("Show by itself",t.autoOpen,l(ue,{})),trigger:p("Trigger",l(be,{}),[{label:"Delay",value:"delay"},{label:"Scroll",value:"scroll"},{label:"Exit",value:"exit"}],t.trigger),autoOpenDelaySec:h("Delay",l(f,{}),F.min,F.max,1,t.autoOpenDelaySec,"s"),scrollPercent:h("Scroll",l(Pe,{}),k.min,k.max,5,t.scrollPercent,"%"),showOn:p("Pages",l(pe,{}),[{label:"All",value:"all"},{label:"Chosen",value:"chosen"}],t.showOn),showOnPages:Se("Chosen pages",[],"None"),hideAfter:p("After close",l(f,{}),[{label:"This visit",value:"visit"},{label:"Days",value:"days"},{label:"Never",value:"never"}],t.hideAfter),hideDays:h("Days",l(f,{}),E.min,E.max,1,t.hideDays),_gArrangement:c("Arrangement"),formSide:p("Form side",l(ge,{}),[{label:"Right",value:"right"},{label:"Left",value:"left"}],t.formSide),_gPhone:v("mobile",c("On a phone")),valuePanelOnPhone:v("mobile",R("Left panel",t.valuePanelOnPhone,l(ce,{})))},We),D=H(je,"SubscribePopup");async function Ye(){return(await oe(ie()??"")).filter(n=>!V(n.slug)).map(n=>({label:n.label,value:re(n.slug)}))}async function qe(){return M({...D,showOnPages:{...D.showOnPages,options:await Ye().catch(()=>[])}})}const m=ae,ze={_gHeader:c("Header"),kickerBadge:a("Eyebrow badge",m.kickerBadge),kickerText:a("Eyebrow text",m.kickerText),titleLead:a("Heading",m.titleLead),titleAccent:a("Heading accent",m.titleAccent),subtitleEmpty:u("Sub-line · empty",m.subtitleEmpty),subtitleOne:u("Sub-line · one set",m.subtitleOne),subtitleMany:u("Sub-line · several sets",m.subtitleMany,"{count} becomes the number of sets"),_gStatus:c("Status rail"),leadTimeValue:a("Lead time",m.leadTimeValue),shipsToFallback:a("Ships to · fallback",m.shipsToFallback,"Shown only while the site serves no countries — otherwise the site's default country is stated"),_gPromises:c("Promise row"),promises:S("Trust markers",l(se,{}),"Marker","verbatim"),_gEmpty:c("Empty basket"),emptyKicker:a("Eyebrow",m.emptyKicker),emptyBody:u("Message",m.emptyBody)},Ve={layout:le,_nConsentWhere:he("The banner's words follow each visitor's country. Turn consent on or off, and pick the privacy page, in Admin › Storefront › Marketing › Privacy.")};function Xe({kind:r}){return l("div",{style:{padding:"14px 18px",fontFamily:"var(--font-mono, monospace)",fontSize:12,letterSpacing:"0.18em",textTransform:"uppercase",color:"var(--fg-dim)",borderBottom:"1px solid var(--site-line)"},children:r===L?"This is the cart drawer — edit its copy in the Settings panel →":r===C?"This is the cookie banner — pick its layout in the Settings panel →":"This is the site popup — edit it in the Settings panel →"})}const P={root:{fields:{...Me},resolveFields:async(r,{fields:n})=>{if(r?.props?.kind===Z)return qe();if(r?.props?.kind===L)return ze;if(r?.props?.kind===C)return Ve;const s=n;return Oe()?{[_e]:A("Product type",l(ne,{}),Le,"alloy-wheel"),...s}:s},render:r=>{const{editor:n,pageBackground:s,theme:d,fonts:w}=r;if(!n?.isEditing)return xe(r);const y=Ne(r,l(Xe,{kind:r.kind}));if(y)return y;const I=Ie(r,!0);return l(ve,{propsTheme:d,propsFonts:w,pageBackground:typeof s=="string"?s:void 0,suppressPreviewNav:Re,overlay:N(x,{children:[l(q,{}),l(z,{})]}),children:I??l(He,{rootProps:r,children:r.children})})}},categories:G(),components:{Heading:e.Heading,Text:e.Text,Eyebrow:e.Eyebrow,ImageBlock:e.ImageBlock,LogoBlock:e.LogoBlock,ButtonBlock:e.ButtonBlock,Spacer:e.Spacer,Divider:e.Divider,Grid:e.Grid,Flex:e.Flex,Breadcrumb:e.Breadcrumb,Masthead:e.Masthead,CategoryBar:e.CategoryBar,FeaturedCover:e.FeaturedCover,LongRead:e.LongRead,Series:e.Series,Subscribe:i.Subscribe,SubscribeBlogs:i.SubscribeBlogs,Banner:e.Banner,ParagraphsA:e.ParagraphsA,StatsParagraph:e.StatsParagraph,Timeline:e.Timeline,Footprint:e.Footprint,TimelineTrack:e.TimelineTrack,TitleWithButtons:e.TitleWithButtons,Stats:e.Stats,Integrations:e.Integrations,Mockup:e.Mockup,Chart:e.Chart,KeyFeatures:e.KeyFeatures,Testimonials:e.Testimonials,Reviews:i.Reviews,RatingBlock:i.RatingBlock,Prose:e.Prose,Cards:e.Cards,Logos:e.Logos,Ticker:e.Ticker,ContactRouting:i.ContactRouting,ContactLocations:e.ContactLocations,HeroSingle:e.HeroSingle,Hero:e.Hero,HeroSlide:e.HeroSlide,HeroGroup:e.HeroGroup,Collections:o.Collections,CollectionCard:o.CollectionCard,Events:i.Events,RateTable:i.RateTable,MessagingCards:i.MessagingCards,ContactCards:i.ContactCards,OpeningHours:i.OpeningHours,PostCard:e.PostCard,DocMetaCards:e.DocMetaCards,DocTabs:e.DocTabs,DocMasthead:e.DocMasthead,DocBody:e.DocBody,Contents:e.Contents,FAQ:e.FAQ,Gallery:o.Gallery,GalleryB:o.GalleryB,SpecStrip:e.SpecStrip,GalleryItem:o.GalleryItem,Manifesto:e.Manifesto,SectionHeader:e.SectionHeader,IntroBleed:e.IntroBleed,Split:e.Split,SubmitBuild:i.SubmitBuild,SubmitBox:i.SubmitBox,ReviewForm:i.ReviewForm,Form:i.Form,AppointmentBooking:i.AppointmentBooking,BookingBox:i.BookingBox,CatalogFilterBar:o.CatalogFilterBar,AlloyWheelsListing:o.AlloyWheelsListing,ProductGrid:o.ProductGrid,ProductHero:o.ProductHero,ProductGallery:o.ProductGallery,SpecTable:o.SpecTable,ProcessSteps:e.ProcessSteps,DetailRows:o.DetailRows,FitmentTable:o.FitmentTable,RelatedProducts:o.RelatedProducts,BundleOffer:o.BundleOffer,CompatibleTyres:o.CompatibleTyres,TyreSizes:o.TyreSizes,TyreFitment:o.TyreFitment,EuTyreLabel:o.EuTyreLabel,EuTyreLabelBlock:o.EuTyreLabelBlock,ProductSize:o.ProductSize,ProductColour:o.ProductColour,ProductPrice:o.ProductPrice,FitmentFinder:o.FitmentFinder,OrderSummary:e.OrderSummary,DeliveryOptions:o.DeliveryOptions,PaymentBadges:e.PaymentBadges,CheckoutCTA:o.CheckoutCTA,ProductRef:o.ProductRef,CustomHTML:e.CustomHTML,Header:o.Header,Footer:i.Footer,FooterLogo:i.FooterLogo,FooterMenu:i.FooterMenu,FooterDivider:i.FooterDivider,FooterGroup:i.FooterGroup,FooterText:i.FooterText,FooterEmailSignup:i.FooterEmailSignup,FooterSocial:i.FooterSocial,FooterMessaging:i.FooterMessaging,FooterPayment:i.FooterPayment,LegalLineBlock:i.LegalLineBlock,SearchBlock:o.SearchBlock,CartBlock:o.CartBlock,CountrySwitchBlock:o.CountrySwitchBlock,AccountBlock:o.AccountBlock,ThemeSwitchBlock:o.ThemeSwitchBlock,[j]:i.SiteHeader,[W]:i.SiteFooter}};De(P.components);{const r=P.components.MenuBlock;r.fields={...r.fields,direction:p("Direction",l(me,{}),[{label:B.column,value:"column"},{label:B.row,value:"row"}],we)};const n={type:"custom",render:({value:s,onChange:d})=>l(Y,{value:s,onChange:d})};r.fields=Object.fromEntries(Object.entries(r.fields).flatMap(([s,d])=>s==="menu"?[[s,d],["linkRange",n]]:[[s,d]])),r.fields={...r.fields,linkAlign:Be({label:"Link alignment"})}}{const r=P.components.Header,n=r.render;r.render=s=>s.editor?.isEditing?l(Ae,{editing:!0}):n(s)}const Qe=Ge(P),qt=Qe.sectionGroupAllow;var zt=P;export{qt as SECTION_GROUP_ALLOW,P as config,zt as default,je as subscribePopupFields};
1
+ import{jsx as l,Fragment as x,jsxs as N}from"react/jsx-runtime";import{assignSectionGroups as H,reseatBucketTabs as M}from"efficient-web-builder/editor/lib/document/field-groups";import{buildBlockCategories as G}from"efficient-web-builder/format/lib/document/section-catalog";import{FONT_ROLES as U,FONT_ROLE_LABELS as K}from"efficient-web-builder/format/lib/fonts";import{CONTAINER_DIRECTION_LABELS as B}from"efficient-web-builder/format/lib/content/container-direction";import{SITE_FOOTER_TYPE as W,SITE_HEADER_TYPE as j}from"efficient-web-builder/format/lib/document/section-groups";import Y from"../../components/MenuLinkRangeField.js";import q from"../../components/EditorPreviewChat.js";import z from"../../components/EditorPreviewSurface.js";import{isSystemPageSlug as V,POPUP_DAYS_RANGE as k,POPUP_DELAY_RANGE as E,POPUP_HIDE_AFTER as X,POPUP_SCROLL_RANGE as F,POPUP_SHOW_ON as Q,POPUP_TRIGGERS as O,SUBSCRIBE_POPUP_DEFAULTS as J,SUBSCRIBE_POPUP_KIND as Z}from"efficient-web-builder/format/lib/content/subscribe";import{shownForOption as b,withRowRules as $}from"efficient-web-builder/render/lib/document/show-when";import{POPUP_KIND_PROP as ee,POPUP_TEXT_KIND_LABELS as _,POPUP_TEXT_KINDS as te}from"efficient-web-builder/format/lib/popup/text-kinds";import{loadPages as oe}from"efficient-web-builder/editor/components/StorefrontLinkField";import{pagePath as re}from"../../../render/lib/links/link-rules.js";import{getEditorSiteId as ie}from"efficient-web-builder/render/lib/editor-site";import{CART_DRAWER_DEFAULTS as ae,CART_DRAWER_KIND as L}from"efficient-web-builder/format/lib/content/cart-drawer";import{CONSENT_BANNER_KIND as C}from"efficient-web-builder/format/lib/content/consent-banner";import{consentBannerLayoutField as le}from"../../components/ConsentBannerLayoutTiles.js";import{CategoryIcon as ne,CheckIcon as se,ClockIcon as f,ColumnsIcon as ce,DirectionIcon as me,EyeIcon as ue,ListIcon as de,PageIcon as pe,PlacementIcon as ge,ScrollPointIcon as Pe,TriggerIcon as be}from"efficient-easel/icons";import{deviceField as v}from"efficient-easel/screen/lib/document/device-fields";import{FieldGlyph as fe}from"efficient-web-builder/editor/components/FieldGlyph";import{multiSelect as Se,panelNote as he,plainText as a,plainTextarea as u,sectionShapeFields as Te,sectionThemeFields as ye,textList as S,toggle as R}from"efficient-web-builder/editor/lib/document/controls";import{group as c}from"efficient-easel/screen/lib/document/box-fields";import{segmented as p,select as A,slider as h}from"efficient-web-builder/editor/lib/document/box-fields";import{blockAlignRow as Be}from"./block-align-row.js";import{formPicker as ke}from"./blocks/service/controls.js";import{SECTION_THEME_FOLLOW_LABEL as Ee}from"efficient-web-builder/editor/components/SectionThemePicker";import{nestedAccentValue as Fe}from"efficient-web-builder/format/lib/content/section-surface";import{isEditorOnDynamicPage as Oe}from"efficient-web-builder/format/lib/document/editor-page-context";import{TEMPLATE_PRODUCT_TYPE_PROP as _e}from"efficient-web-builder/format/lib/content/product-page";import{PRODUCT_KIND_OPTIONS as Le}from"../../../render/lib/catalog/plp-item.js";import{PH as T}from"efficient-web-builder/format/lib/document/blocks/placeholders";import{textKindGlyph as Ce}from"efficient-web-builder/editor/lib/document/blocks/shared-fields";import"../efficient-backend.js";import"../../../render/lib/document/slot-seeds.js";import"../../../render/lib/document/card-templates.js";import"../../../render/lib/document/section-to-box-rows-reviews.js";import"../../../render/lib/document/section-to-box-rows-spec.js";import"./section-text-regions.js";import{generalBlocks as e}from"efficient-web-builder/editor/lib/document/blocks/general/index";import{commerceBlocks as o}from"./blocks/commerce/index.js";import{serviceBlocks as i}from"./blocks/service/index.js";import{EditorThemedBody as ve,suppressPreviewNav as Re}from"efficient-web-builder/editor/lib/document/page-root";import Ae from"../../components/HeaderSection.js";import{addPageBlocksFromFooter as De,PAGE_MENU_DIRECTION_DEFAULT as we}from"../../../render/lib/document/footer-page-blocks.js";import{drawPopupPage as Ie,drawPublishedStorefrontRoot as xe,drawSystemPage as Ne,StorefrontPageProviders as He}from"../../../render/lib/document/storefront-root.js";import{GENERAL_ROOT_FIELDS as Me}from"efficient-web-builder/editor/lib/document/page-root-fields";import{finishRegistry as Ge}from"efficient-web-builder/editor/lib/document/registry";const Ue="Newsletter (built in)",Yt=[{value:"00",label:T.label},{value:"00",label:T.label},{value:"00",label:T.label}],t=J,g={field:"autoOpen",is:!0},Ke={all:[b("hideAfter",X,t.hideAfter,["days"]),{not:{all:[{field:"hideAfter",is:null,default:null},{field:"oncePerSession",in:[!0,!1]}]}}]},We=[[["trigger","showOn","hideAfter"],g],[["autoOpenDelaySec"],{all:[g,b("trigger",O,t.trigger,["delay","exit"])]}],[["scrollPercent"],{all:[g,b("trigger",O,t.trigger,["scroll"])]}],[["showOnPages"],{all:[g,b("showOn",Q,t.showOn,["chosen"])]}],[["hideDays"],{all:[g,Ke]}]],je=$({formSlug:ke(void 0,Ue),_gLeft:c("Left panel"),metaLabel:a("Meta label",t.metaLabel),issueLabel:a("Issue label",t.issueLabel),issueNumber:a("Issue number",t.issueNumber),kicker:a("Eyebrow",t.kicker),heading:u("Heading",t.heading),deck:u("Deck",t.deck),stats:{type:"array",label:"Stats",arrayFields:{label:a("Label"),value:a("Value")},getItemSummary:r=>r?.label||r?.value||"Stat"},_gForm:c("Right panel · form"),formLabel:a("Section label",t.formLabel),formHeading:a("Heading",t.formHeading),formIntro:u("Intro",t.formIntro),firstNameLabel:a("First-name label",t.firstNameLabel),firstNamePlaceholder:a("First-name placeholder",t.firstNamePlaceholder),emailLabel:a("Email label",t.emailLabel),emailPlaceholder:a("Email placeholder",t.emailPlaceholder),_gChoices:c("Right panel · choices"),interestsLabel:a("Interests label",t.interestsLabel),interests:S("Interest chips",l(fe,{noun:"tag"}),"Chip label","verbatim"),frequencyLabel:a("Frequency label",t.frequencyLabel),frequencies:S("Frequency options",l(de,{}),"Option label","verbatim"),_gActions:c("Right panel · actions"),submitText:a("Submit button",t.submitText),finePrint:a("Fine print",t.finePrint),dismissText:a("Dismiss link",t.dismissText),emailInvalidText:a("Invalid-email error",t.emailInvalidText),submitErrorText:a("Submit-failed error",t.submitErrorText),_gSuccess:c("Success state"),successHeading:a("Heading",t.successHeading),successBody:u("Message",t.successBody),keepBrowsingText:a("Dismiss button",t.keepBrowsingText),...ye(Fe,Ee),...Te(),_gTextStyle:c("Text style"),...Object.fromEntries(te.map(r=>[ee[r],A(_[r],Ce(_[r]),[{label:"Popup's own",value:""},...U.map(n=>({label:K[n],value:n}))],"")])),_gBehaviour:c("Behavior"),autoOpen:R("Show by itself",t.autoOpen,l(ue,{})),trigger:p("Trigger",l(be,{}),[{label:"Delay",value:"delay"},{label:"Scroll",value:"scroll"},{label:"Exit",value:"exit"}],t.trigger),autoOpenDelaySec:h("Delay",l(f,{}),E.min,E.max,1,t.autoOpenDelaySec,"s"),scrollPercent:h("Scroll",l(Pe,{}),F.min,F.max,5,t.scrollPercent,"%"),showOn:p("Pages",l(pe,{}),[{label:"All",value:"all"},{label:"Chosen",value:"chosen"}],t.showOn),showOnPages:Se("Chosen pages",[],"None"),hideAfter:p("After close",l(f,{}),[{label:"This visit",value:"visit"},{label:"Days",value:"days"},{label:"Never",value:"never"}],t.hideAfter),hideDays:h("Days",l(f,{}),k.min,k.max,1,t.hideDays),_gArrangement:c("Arrangement"),formSide:p("Form side",l(ge,{}),[{label:"Right",value:"right"},{label:"Left",value:"left"}],t.formSide),_gPhone:v("mobile",c("On a phone")),valuePanelOnPhone:v("mobile",R("Left panel",t.valuePanelOnPhone,l(ce,{})))},We),D=H(je,"SubscribePopup");async function Ye(){return(await oe(ie()??"")).filter(n=>!V(n.slug)).map(n=>({label:n.label,value:re(n.slug)}))}async function qe(){return M({...D,showOnPages:{...D.showOnPages,options:await Ye().catch(()=>[])}})}const m=ae,ze={_gHeader:c("Header"),kickerBadge:a("Eyebrow badge",m.kickerBadge),kickerText:a("Eyebrow text",m.kickerText),titleLead:a("Heading",m.titleLead),titleAccent:a("Heading accent",m.titleAccent),subtitleEmpty:u("Sub-line · empty",m.subtitleEmpty),subtitleOne:u("Sub-line · one set",m.subtitleOne),subtitleMany:u("Sub-line · several sets",m.subtitleMany,"{count} becomes the number of sets"),_gStatus:c("Status rail"),leadTimeValue:a("Lead time",m.leadTimeValue),shipsToFallback:a("Ships to · fallback",m.shipsToFallback,"Shown only while the site serves no countries — otherwise the site's default country is stated"),_gPromises:c("Promise row"),promises:S("Trust markers",l(se,{}),"Marker","verbatim"),_gEmpty:c("Empty basket"),emptyKicker:a("Eyebrow",m.emptyKicker),emptyBody:u("Message",m.emptyBody)},Ve={layout:le,_nConsentWhere:he("The banner's words follow each visitor's country. Turn consent on or off, and pick the privacy page, in Admin › Storefront › Marketing › Privacy.")};function Xe({kind:r}){return l("div",{style:{padding:"14px 18px",fontFamily:"var(--font-mono, monospace)",fontSize:12,letterSpacing:"0.18em",textTransform:"uppercase",color:"var(--fg-dim)",borderBottom:"1px solid var(--site-line)"},children:r===L?"This is the cart drawer — edit its copy in the Settings panel →":r===C?"This is the cookie banner — pick its layout in the Settings panel →":"This is the site popup — edit it in the Settings panel →"})}const P={root:{fields:{...Me},resolveFields:async(r,{fields:n})=>{if(r?.props?.kind===Z)return qe();if(r?.props?.kind===L)return ze;if(r?.props?.kind===C)return Ve;const s=n;return Oe()?{[_e]:A("Product type",l(ne,{}),Le,"alloy-wheel"),...s}:s},render:r=>{const{editor:n,pageBackground:s,theme:d,fonts:w}=r;if(!n?.isEditing)return xe(r);const y=Ne(r,l(Xe,{kind:r.kind}));if(y)return y;const I=Ie(r,!0);return l(ve,{propsTheme:d,propsFonts:w,pageBackground:typeof s=="string"?s:void 0,suppressPreviewNav:Re,overlay:N(x,{children:[l(q,{}),l(z,{})]}),children:I??l(He,{rootProps:r,children:r.children})})}},categories:G(),components:{Heading:e.Heading,Text:e.Text,Eyebrow:e.Eyebrow,ImageBlock:e.ImageBlock,LogoBlock:e.LogoBlock,ButtonBlock:e.ButtonBlock,Spacer:e.Spacer,Divider:e.Divider,Grid:e.Grid,Flex:e.Flex,Breadcrumb:e.Breadcrumb,Masthead:e.Masthead,CategoryBar:e.CategoryBar,FeaturedCover:e.FeaturedCover,LongRead:e.LongRead,Series:e.Series,Subscribe:i.Subscribe,SubscribeBlogs:i.SubscribeBlogs,Banner:e.Banner,ParagraphsA:e.ParagraphsA,StatsParagraph:e.StatsParagraph,Timeline:e.Timeline,Footprint:e.Footprint,TimelineTrack:e.TimelineTrack,TitleWithButtons:e.TitleWithButtons,Stats:e.Stats,Integrations:e.Integrations,Mockup:e.Mockup,Chart:e.Chart,KeyFeatures:e.KeyFeatures,Testimonials:e.Testimonials,Reviews:i.Reviews,RatingBlock:i.RatingBlock,Prose:e.Prose,Cards:e.Cards,Logos:e.Logos,Ticker:e.Ticker,ContactRouting:i.ContactRouting,ContactLocations:e.ContactLocations,HeroSingle:e.HeroSingle,Hero:e.Hero,HeroSlide:e.HeroSlide,HeroGroup:e.HeroGroup,Collections:o.Collections,CollectionCard:o.CollectionCard,Events:i.Events,RateTable:i.RateTable,MessagingCards:i.MessagingCards,ContactCards:i.ContactCards,OpeningHours:i.OpeningHours,PostCard:e.PostCard,DocMetaCards:e.DocMetaCards,DocTabs:e.DocTabs,DocMasthead:e.DocMasthead,DocBody:e.DocBody,Contents:e.Contents,FAQ:e.FAQ,Gallery:o.Gallery,GalleryB:o.GalleryB,SpecStrip:e.SpecStrip,GalleryItem:o.GalleryItem,Manifesto:e.Manifesto,SectionHeader:e.SectionHeader,IntroBleed:e.IntroBleed,Split:e.Split,SubmitBuild:i.SubmitBuild,SubmitBox:i.SubmitBox,ReviewForm:i.ReviewForm,Form:i.Form,AppointmentBooking:i.AppointmentBooking,BookingBox:i.BookingBox,CatalogFilterBar:o.CatalogFilterBar,AlloyWheelsListing:o.AlloyWheelsListing,ProductGrid:o.ProductGrid,ProductHero:o.ProductHero,ProductGallery:o.ProductGallery,SpecTable:o.SpecTable,ProcessSteps:e.ProcessSteps,DetailRows:o.DetailRows,FitmentTable:o.FitmentTable,RelatedProducts:o.RelatedProducts,BundleOffer:o.BundleOffer,CompatibleTyres:o.CompatibleTyres,TyreSizes:o.TyreSizes,TyreFitment:o.TyreFitment,EuTyreLabel:o.EuTyreLabel,EuTyreLabelBlock:o.EuTyreLabelBlock,ProductSize:o.ProductSize,ProductColour:o.ProductColour,ProductPrice:o.ProductPrice,FitmentFinder:o.FitmentFinder,OrderSummary:e.OrderSummary,DeliveryOptions:o.DeliveryOptions,PaymentBadges:e.PaymentBadges,CheckoutCTA:o.CheckoutCTA,ProductRef:o.ProductRef,CustomHTML:e.CustomHTML,Header:o.Header,Footer:i.Footer,FooterLogo:i.FooterLogo,FooterMenu:i.FooterMenu,MenuLinkBlock:i.MenuLinkBlock,FooterDivider:i.FooterDivider,FooterGroup:i.FooterGroup,FooterText:i.FooterText,FooterEmailSignup:i.FooterEmailSignup,FooterSocial:i.FooterSocial,FooterMessaging:i.FooterMessaging,FooterPayment:i.FooterPayment,LegalLineBlock:i.LegalLineBlock,SearchBlock:o.SearchBlock,CartBlock:o.CartBlock,CountrySwitchBlock:o.CountrySwitchBlock,AccountBlock:o.AccountBlock,ThemeSwitchBlock:o.ThemeSwitchBlock,[j]:i.SiteHeader,[W]:i.SiteFooter}};De(P.components);{const r=P.components.MenuBlock;r.fields={...r.fields,direction:p("Direction",l(me,{}),[{label:B.column,value:"column"},{label:B.row,value:"row"}],we)};const n={type:"custom",render:({value:s,onChange:d})=>l(Y,{value:s,onChange:d})};r.fields=Object.fromEntries(Object.entries(r.fields).flatMap(([s,d])=>s==="menu"?[[s,d],["linkRange",n]]:[[s,d]])),r.fields={...r.fields,linkAlign:Be({label:"Link alignment"})}}{const r=P.components.Header,n=r.render;r.render=s=>s.editor?.isEditing?l(Ae,{editing:!0}):n(s)}const Qe=Ge(P),qt=Qe.sectionGroupAllow;var zt=P;export{qt as SECTION_GROUP_ALLOW,P as config,zt as default,je as subscribePopupFields};
@@ -36,6 +36,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
36
36
  readonly "After close": "After close";
37
37
  readonly Alignment: "Alignment";
38
38
  readonly "All brands": "All brands";
39
+ readonly "All categories": "All categories";
39
40
  readonly "All media groups": "All media groups";
40
41
  readonly "All product types": "All product types";
41
42
  readonly "All products": "All products";
@@ -88,6 +89,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
88
89
  readonly Capitalised: "Capitalised";
89
90
  readonly "Car prompt": "Car prompt";
90
91
  readonly "Card text": "Card text";
92
+ readonly "Cards from": "Cards from";
91
93
  readonly "Cards to show": "Cards to show";
92
94
  readonly "Cart, checkout, your country and currency, sign-in, and this choice. The site cannot work without them.": "Cart, checkout, your country and currency, sign-in, and this choice. The site cannot work without them.";
93
95
  readonly "Category \u2014 wheels only": "Category — wheels only";
@@ -142,6 +144,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
142
144
  readonly "Default (the product's default finish)": "Default (the product's default finish)";
143
145
  readonly "Default (the product\u2019s default finish)": "Default (the product’s default finish)";
144
146
  readonly "Default links": "Default links";
147
+ readonly "Delivery Options": "Delivery Options";
145
148
  readonly "Delivery options": "Delivery options";
146
149
  readonly "Delivery, your way": "Delivery, your way";
147
150
  readonly "Describe this feature in a sentence or two.": "Describe this feature in a sentence or two.";
@@ -160,6 +163,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
160
163
  readonly "ET range": "ET range";
161
164
  readonly "Edit category \u270E": "Edit category ✎";
162
165
  readonly "Edit form \u270E": "Edit form ✎";
166
+ readonly "Edit in Reviews \u2192": "Edit in Reviews →";
163
167
  readonly "Edit menu \u2192": "Edit menu →";
164
168
  readonly "Edit product \u270E": "Edit product ✎";
165
169
  readonly "Edit social links \u2192": "Edit social links →";
@@ -250,7 +254,6 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
250
254
  readonly "Heading size": "Heading size";
251
255
  readonly Hidden: "Hidden";
252
256
  readonly "Hide on the card": "Hide on the card";
253
- readonly "Highlight badge": "Highlight badge";
254
257
  readonly Horizontal: "Horizontal";
255
258
  readonly "Hours from": "Hours from";
256
259
  readonly "How much room the menu leaves the logo. Only the logo moves away; the space between the menu words stays as it is.": "How much room the menu leaves the logo. Only the logo moves away; the space between the menu words stays as it is.";
@@ -331,6 +334,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
331
334
  readonly Max: "Max";
332
335
  readonly "Media group": "Media group";
333
336
  readonly "Menu Item": "Menu Item";
337
+ readonly "Menu link": "Menu link";
334
338
  readonly "Menu row": "Menu row";
335
339
  readonly "Message form": "Message form";
336
340
  readonly "Message us": "Message us";
@@ -339,6 +343,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
339
343
  readonly Meta: "Meta";
340
344
  readonly "Meta label": "Meta label";
341
345
  readonly "Meta lines": "Meta lines";
346
+ readonly "Methods from": "Methods from";
342
347
  readonly Min: "Min";
343
348
  readonly Model: "Model";
344
349
  readonly "Month YYYY": "Month YYYY";
@@ -369,6 +374,7 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
369
374
  readonly "No menus found": "No menus found";
370
375
  readonly "No menus yet. Create one in {place}, then pick it here.": "No menus yet. Create one in {place}, then pick it here.";
371
376
  readonly "No models listed": "No models listed";
377
+ readonly "No product chosen yet, so reviews of every product show.": "No product chosen yet, so reviews of every product show.";
372
378
  readonly "No products in this category": "No products in this category";
373
379
  readonly "No products in this website's catalog yet \u2014 curate products to see them here.": "No products in this website's catalog yet — curate products to see them here.";
374
380
  readonly "No products in \u201C{name}\u201D yet": "No products in “{name}” yet";
@@ -473,7 +479,6 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
473
479
  readonly "Review content": "Review content";
474
480
  readonly "Review title (optional)": "Review title (optional)";
475
481
  readonly "Reviews are collected by the Review Form section and wait for your approval before they show.": "Reviews are collected by the Review Form section and wait for your approval before they show.";
476
- readonly "Reviews to display": "Reviews to display";
477
482
  readonly "Right panel \u00B7 actions": "Right panel · actions";
478
483
  readonly "Right panel \u00B7 choices": "Right panel · choices";
479
484
  readonly "Right panel \u00B7 form": "Right panel · form";
@@ -620,7 +625,9 @@ export declare const STOREFRONT_BLOCKS_WORDS: {
620
625
  readonly "This form is switched off, so it won\u2019t appear on the published page. Turn it back on in {place}.": "This form is switched off, so it won’t appear on the published page. Turn it back on in {place}.";
621
626
  readonly "This header uses the old layout": "This header uses the old layout";
622
627
  readonly "This hero always shows a real product. Pick one to fill the title, price, pictures, options and Add to Cart from the catalog.": "This hero always shows a real product. Pick one to fill the title, price, pictures, options and Add to Cart from the catalog.";
628
+ readonly "This menu draws no links: its card template is empty. Undo the delete, or delete this Menu and add it again.": "This menu draws no links: its card template is empty. Undo the delete, or delete this Menu and add it again.";
623
629
  readonly "This menu has no links yet \u2014 add them in {place}.": "This menu has no links yet — add them in {place}.";
630
+ readonly "This product": "This product";
624
631
  readonly "This product has no finishes yet, so its card falls back to the product image \u2014 or an empty placeholder when it has none. Add finishes to the product record, then give each one an image.": "This product has no finishes yet, so its card falls back to the product image — or an empty placeholder when it has none. Add finishes to the product record, then give each one an image.";
625
632
  readonly "This product\u2019s photos appear here on a product page. Add media groups in the product\u2019s Media tab.": "This product’s photos appear here on a product page. Add media groups in the product’s Media tab.";
626
633
  readonly "This product\u2019s sizes appear here on a product page.": "This product’s sizes appear here on a product page.";