efficient-storefront-blocks 0.85.0 → 0.87.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/dist/chunks/{EditorPreviewCheckout-4XHYYAT2.js → EditorPreviewCheckout-GD4IJ4WK.js} +1 -1
- package/dist/chunks/{SiteEditorProvider-X4YKBAJ4.js → SiteEditorProvider-2UVCJZXS.js} +1 -1
- package/dist/chunks/{chunk-NFXV7HDB.js → chunk-H4IHUSCU.js} +1 -1
- package/dist/chunks/chunk-QLR6IVWJ.js +369 -0
- package/dist/chunks/chunk-SYK5QPNV.js +1 -0
- package/dist/chunks/{chunk-VG4SUIRK.js → chunk-XZ46W3NV.js} +1 -1
- package/dist/chunks/{fitment-data-2I2FDPXW.js → fitment-data-5GBUMO2O.js} +1 -1
- package/dist/contract.js +20 -2
- package/dist/editor/lib/document/blocks/commerce/FitmentPicker/fields.d.ts +2 -0
- package/dist/editor/lib/document/blocks/commerce/FitmentPicker/fields.js +1 -0
- package/dist/editor/lib/document/blocks/commerce/FitmentTable/fields.js +1 -1
- package/dist/editor/lib/document/blocks/commerce/ProductBuy/fields.d.ts +2 -0
- package/dist/editor/lib/document/blocks/commerce/ProductBuy/fields.js +1 -0
- package/dist/editor/lib/document/blocks/commerce/ProductEyebrow/fields.d.ts +2 -0
- package/dist/editor/lib/document/blocks/commerce/ProductEyebrow/fields.js +1 -0
- package/dist/editor/lib/document/blocks/commerce/ProductGrid/fields.js +1 -1
- package/dist/editor/lib/document/blocks/commerce/ProductName/fields.d.ts +2 -0
- package/dist/editor/lib/document/blocks/commerce/ProductName/fields.js +1 -0
- package/dist/editor/lib/document/blocks/commerce/ProductPicture/fields.d.ts +2 -0
- package/dist/editor/lib/document/blocks/commerce/ProductPicture/fields.js +1 -0
- package/dist/editor/lib/document/blocks/commerce/ProductSpecs/fields.d.ts +2 -0
- package/dist/editor/lib/document/blocks/commerce/ProductSpecs/fields.js +1 -0
- package/dist/editor/lib/document/blocks/commerce/RelatedProducts/fields.js +1 -1
- package/dist/editor/lib/document/blocks/commerce/SpecTable/fields.js +1 -1
- package/dist/editor/lib/document/blocks/commerce/StockFitment/fields.d.ts +2 -0
- package/dist/editor/lib/document/blocks/commerce/StockFitment/fields.js +1 -0
- package/dist/editor/lib/document/blocks/commerce/index.d.ts +1 -1
- package/dist/editor/lib/document/blocks/commerce/index.js +1 -1
- package/dist/editor/lib/document/blocks/commerce/page-rules.d.ts +5 -0
- package/dist/editor/lib/document/blocks/commerce/page-rules.js +1 -1
- package/dist/editor/lib/document/blocks/service/ArticleBody/fields.d.ts +2 -0
- package/dist/editor/lib/document/blocks/service/ArticleBody/fields.js +1 -0
- package/dist/editor/lib/document/blocks/service/SiteFooter/fields.js +1 -1
- package/dist/editor/lib/document/blocks/service/SiteHeader/fields.js +1 -1
- package/dist/editor/lib/document/blocks/service/index.d.ts +1 -1
- package/dist/editor/lib/document/blocks/service/index.js +1 -1
- package/dist/editor/lib/document/box-header.d.ts +1 -1
- package/dist/editor/lib/document/box-header.js +1 -1
- package/dist/editor/lib/document/config.js +1 -1
- package/dist/editor/lib/document/section-text-regions.js +1 -1
- package/dist/editor/lib/efficient-block-sources.js +1 -1
- package/dist/editor/lib/storefront-editor-words.d.ts +19 -7
- package/dist/editor/lib/storefront-editor-words.js +1 -1
- package/dist/fitment.js +1 -1
- package/dist/index.js +44 -40
- package/dist/links.js +1 -1
- package/dist/render/app/fonts/fallbacks.css +8 -0
- package/dist/render/app/fonts/jost/OFL.txt +93 -0
- package/dist/render/app/fonts/jost/cyrillic-italic.woff2 +0 -0
- package/dist/render/app/fonts/jost/cyrillic.woff2 +0 -0
- package/dist/render/app/fonts/jost/latin-ext-italic.woff2 +0 -0
- package/dist/render/app/fonts/jost/latin-ext.woff2 +0 -0
- package/dist/render/app/fonts/jost/latin-italic.woff2 +0 -0
- package/dist/render/app/fonts/jost/latin.woff2 +0 -0
- package/dist/render/app/globals.css +11 -11
- package/dist/render/built-with.json +1 -1
- package/dist/render/components/ArticleBody.d.ts +7 -0
- package/dist/render/components/ArticleBody.js +1 -0
- package/dist/render/components/BoxHeaderBar.d.ts +2 -1
- package/dist/render/components/BoxHeaderBar.js +1 -1
- package/dist/render/components/Events.js +1 -1
- package/dist/render/components/FitmentTable.d.ts +1 -1
- package/dist/render/components/FitmentTable.js +1 -1
- package/dist/render/components/FooterMenu.d.ts +5 -1
- package/dist/render/components/FooterMenu.js +1 -1
- package/dist/render/components/GridCardTemplate.d.ts +34 -0
- package/dist/render/components/GridCardTemplate.js +1 -0
- package/dist/render/components/MenuLinkBlock.d.ts +5 -1
- package/dist/render/components/MenuLinkBlock.js +1 -1
- package/dist/render/components/ProductCardChrome.d.ts +1 -1
- package/dist/render/components/ProductCardChrome.js +1 -1
- package/dist/render/components/ProductGridSection.d.ts +6 -15
- package/dist/render/components/ProductGridSection.js +1 -1
- package/dist/render/components/ProductRef.js +1 -1
- package/dist/render/components/PublishedHeader.js +1 -1
- package/dist/render/components/SectionBand.d.ts +2 -1
- package/dist/render/components/SectionBand.js +1 -1
- package/dist/render/components/SectionBandChoice.d.ts +2 -1
- package/dist/render/components/SectionBandChoice.js +1 -1
- package/dist/render/components/SectionGroupBody.d.ts +2 -2
- package/dist/render/components/SectionGroupBody.js +1 -1
- package/dist/render/components/SpecTable.d.ts +3 -1
- package/dist/render/components/SpecTable.js +1 -1
- package/dist/render/components/StorefrontProviders.d.ts +1 -1
- package/dist/render/components/StorefrontProviders.js +1 -1
- package/dist/render/components/TyreCard.js +1 -1
- package/dist/render/components/TyreFitVerdicts.d.ts +2 -1
- package/dist/render/components/TyreFitVerdicts.js +1 -1
- package/dist/render/components/TyrePlpCard.js +1 -1
- package/dist/render/components/TyreSizeGrid.d.ts +17 -0
- package/dist/render/components/TyreSizeGrid.js +1 -0
- package/dist/render/components/card-pieces/CardEyebrow.d.ts +3 -1
- package/dist/render/components/card-pieces/CardEyebrow.js +1 -1
- package/dist/render/components/card-pieces/CardName.d.ts +3 -1
- package/dist/render/components/card-pieces/CardName.js +1 -1
- package/dist/render/components/card-pieces/CardPrice.d.ts +2 -6
- package/dist/render/components/card-pieces/CardPrice.js +1 -1
- package/dist/render/components/card-pieces/CardProductPicture.d.ts +8 -0
- package/dist/render/components/card-pieces/CardProductPicture.js +1 -0
- package/dist/render/components/card-pieces/card-text-region.d.ts +18 -0
- package/dist/render/components/card-pieces/card-text-region.js +1 -0
- package/dist/render/components/fitment/FitmentPickerGrid.d.ts +5 -1
- package/dist/render/components/fitment/FitmentPickerGrid.js +1 -1
- package/dist/render/components/fitment/FitmentPickerPart.d.ts +8 -0
- package/dist/render/components/fitment/FitmentPickerPart.js +1 -0
- package/dist/render/components/fitment/StockFitmentPart.d.ts +11 -0
- package/dist/render/components/fitment/StockFitmentPart.js +1 -0
- package/dist/render/components/fitment/fitment-answer-source.d.ts +12 -0
- package/dist/render/components/fitment/fitment-answer-source.js +1 -0
- package/dist/render/components/fitment/useVehicleFit.d.ts +2 -1
- package/dist/render/components/fitment/useVehicleFit.js +1 -1
- package/dist/render/components/pdp-dynamic/DynamicFitmentTable.d.ts +5 -0
- package/dist/render/components/pdp-dynamic/DynamicFitmentTable.js +1 -1
- package/dist/render/components/pdp-dynamic/DynamicRelatedProducts.d.ts +10 -12
- package/dist/render/components/pdp-dynamic/DynamicRelatedProducts.js +1 -1
- package/dist/render/components/pdp-dynamic/DynamicSpecTable.d.ts +1 -0
- package/dist/render/components/pdp-dynamic/DynamicSpecTable.js +1 -1
- package/dist/render/components/pdp-dynamic/DynamicTyreSizes.js +1 -1
- package/dist/render/components/pdp-dynamic/FitmentTableBlock.d.ts +3 -1
- package/dist/render/components/pdp-dynamic/FitmentTableBlock.js +1 -1
- package/dist/render/components/wheels-plp/AlloyWheelsListing.js +1 -1
- package/dist/render/components/wheels-plp/PlpCard.d.ts +1 -1
- package/dist/render/components/wheels-plp/PlpCard.js +1 -1
- package/dist/render/lib/content/article-body-seed.d.ts +9 -0
- package/dist/render/lib/content/article-body-seed.js +1 -0
- package/dist/render/lib/content/article-body.d.ts +8 -0
- package/dist/render/lib/content/article-body.js +5 -0
- package/dist/render/lib/content/article-page-seed.d.ts +12 -0
- package/dist/render/lib/content/article-page-seed.js +1 -0
- package/dist/render/lib/content/field-usage.d.ts +1 -0
- package/dist/render/lib/content/field-usage.js +1 -1
- package/dist/render/lib/content/product-card-seed.d.ts +29 -0
- package/dist/render/lib/content/product-card-seed.js +1 -0
- package/dist/render/lib/content/tab-strip.d.ts +17 -0
- package/dist/render/lib/content/tab-strip.js +1 -0
- package/dist/render/lib/document/blocks/commerce/FitmentPicker/meta.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/FitmentPicker/meta.js +1 -0
- package/dist/render/lib/document/blocks/commerce/FitmentPicker/render.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/FitmentPicker/render.js +1 -0
- package/dist/render/lib/document/blocks/commerce/FitmentTable/meta.js +1 -1
- package/dist/render/lib/document/blocks/commerce/FitmentTable/render.js +1 -1
- package/dist/render/lib/document/blocks/commerce/ProductBuy/meta.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductBuy/meta.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductBuy/render.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductBuy/render.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductEyebrow/meta.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductEyebrow/meta.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductEyebrow/render.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductEyebrow/render.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductGrid/meta.d.ts +4 -0
- package/dist/render/lib/document/blocks/commerce/ProductGrid/meta.js +1 -1
- package/dist/render/lib/document/blocks/commerce/ProductGrid/render.js +1 -1
- package/dist/render/lib/document/blocks/commerce/ProductName/meta.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductName/meta.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductName/render.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductName/render.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductPicture/meta.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductPicture/meta.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductPicture/render.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductPicture/render.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductPrice/render.js +1 -1
- package/dist/render/lib/document/blocks/commerce/ProductSpecs/meta.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductSpecs/meta.js +1 -0
- package/dist/render/lib/document/blocks/commerce/ProductSpecs/render.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/ProductSpecs/render.js +1 -0
- package/dist/render/lib/document/blocks/commerce/RelatedProducts/meta.d.ts +0 -4
- package/dist/render/lib/document/blocks/commerce/RelatedProducts/meta.js +1 -1
- package/dist/render/lib/document/blocks/commerce/RelatedProducts/render.js +1 -1
- package/dist/render/lib/document/blocks/commerce/SpecTable/render.js +1 -1
- package/dist/render/lib/document/blocks/commerce/StockFitment/meta.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/StockFitment/meta.js +1 -0
- package/dist/render/lib/document/blocks/commerce/StockFitment/render.d.ts +2 -0
- package/dist/render/lib/document/blocks/commerce/StockFitment/render.js +1 -0
- package/dist/render/lib/document/blocks/commerce/metas.d.ts +7 -0
- package/dist/render/lib/document/blocks/commerce/metas.js +1 -1
- package/dist/render/lib/document/blocks/commerce/renders.d.ts +7 -0
- package/dist/render/lib/document/blocks/commerce/renders.js +1 -1
- package/dist/render/lib/document/blocks/service/ArticleBody/meta.d.ts +8 -0
- package/dist/render/lib/document/blocks/service/ArticleBody/meta.js +1 -0
- package/dist/render/lib/document/blocks/service/ArticleBody/render.d.ts +2 -0
- package/dist/render/lib/document/blocks/service/ArticleBody/render.js +1 -0
- package/dist/render/lib/document/blocks/service/SiteFooter/render.js +1 -1
- package/dist/render/lib/document/blocks/service/SiteHeader/render.js +1 -1
- package/dist/render/lib/document/blocks/service/metas.d.ts +1 -0
- package/dist/render/lib/document/blocks/service/metas.js +1 -1
- package/dist/render/lib/document/blocks/service/renders.d.ts +1 -0
- package/dist/render/lib/document/blocks/service/renders.js +1 -1
- package/dist/render/lib/document/blocks/text-part-shapes.json +0 -16
- package/dist/render/lib/document/card-templates.js +1 -1
- package/dist/render/lib/document/footer-page-blocks.js +1 -1
- package/dist/render/lib/document/lazy-draws.js +1 -1
- package/dist/render/lib/font-table.json +209 -1
- package/dist/render/lib/menu-link.d.ts +2 -0
- package/dist/render/lib/menu-link.js +1 -1
- package/dist/render/lib/next-fonts.js +1 -1
- package/dist/render/lib/sections/grid-no-hole.d.ts +1 -0
- package/dist/render/lib/sections/grid-no-hole.js +1 -1
- package/dist/render/lib/sections/product-card-text-regions.d.ts +3 -0
- package/dist/render/lib/sections/product-card-text-regions.js +1 -0
- package/dist/render/lib/sections/product-grid-columns.d.ts +17 -0
- package/dist/render/lib/sections/product-grid-columns.js +1 -0
- package/dist/render/lib/sections/related-to-grid.d.ts +8 -0
- package/dist/render/lib/sections/related-to-grid.js +1 -0
- package/dist/render/lib/storefront-page-groups.d.ts +0 -4
- package/dist/render/lib/storefront-page-groups.js +1 -1
- package/dist/render/lib/tyres/tyre-vehicle-fitment.d.ts +1 -0
- package/dist/render/lib/tyres/tyre-vehicle-fitment.js +1 -1
- package/dist/render/lib/wheels/plp-filters.js +1 -1
- package/dist/render/lib/wheels/vehicle-memory.d.ts +13 -0
- package/dist/render/lib/wheels/vehicle-memory.js +1 -1
- package/dist/words.d.ts +69 -8
- package/dist/words.js +6 -6
- package/package.json +4 -4
- package/dist/chunks/chunk-NNBMZAW4.js +0 -340
- package/dist/chunks/chunk-Y5LB56KB.js +0 -1
- /package/dist/chunks/{chunk-KKKMX6LH.js → chunk-DLWIDJS5.js} +0 -0
- /package/dist/chunks/{chunk-NNBMZAW4.js.LEGAL.txt → chunk-QLR6IVWJ.js.LEGAL.txt} +0 -0
package/dist/contract.js
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
var m=["general","commerce","service"],i=[{key:"openers",title:"Hero & intros",defaultExpanded:!0,templateable:!0,sections:[{type:"Hero",label:"Hero",set:"general"},{type:"HeroSingle",label:"Hero Single",set:"general"},{type:"IntroBleed",label:"Scroll-Over Text",set:"general"}]},{key:"shop",title:"Shop & galleries",templateable:!0,sections:[{type:"Collections",label:"Collections",set:"commerce"},{type:"AlloyWheelsListing",label:"List",set:"commerce"},{type:"CatalogFilterBar",label:"Catalog Filter Bar",set:"commerce"},{type:"ProductGrid",label:"Product Grid",set:"commerce"},{type:"FitmentFinder",label:"Fitment Form",set:"commerce"},{type:"Gallery",label:"Tabbed Gallery",set:"commerce"},{type:"GalleryB",label:"Customer Photo Grid",set:"commerce"}]},{key:"product",title:"Product page",templateable:!0,sections:[{type:"ProductHero",label:"Product Hero",set:"commerce"},{type:"SpecTable",label:"Spec Table",set:"commerce"},{type:"ProcessSteps",label:"Image & Text Columns",set:"general"},{type:"DetailRows",label:"Feature Rows",set:"commerce"},{type:"FitmentTable",label:"Fitment Table",set:"commerce"},{type:"TyreSizes",label:"Tyre Sizes",set:"commerce"},{type:"TyreFitment",label:"Tyre Fitment Form",set:"commerce"},{type:"EuTyreLabel",label:"EU Tyre Label",set:"commerce"},{type:"RelatedProducts",label:"Related Products",set:"commerce"},{type:"BundleOffer",label:"Bundle Products",set:"commerce"}]},{key:"checkout",title:"Checkout & ordering",templateable:!0,sections:[{type:"OrderSummary",label:"Order Table",set:"general"},{type:"PaymentBadges",label:"Payment Methods",set:"general"},{type:"CheckoutCTA",label:"Ready-to-Order Banner",set:"commerce"}]},{key:"about",title:"About & brand story",templateable:!0,sections:[{type:"Footprint",label:"Locations Map",set:"general"}]},{key:"content",title:"Text & content",templateable:!0,sections:[{type:"Prose",label:"Editorial Text",set:"general"},{type:"ParagraphsA",label:"Lead Text",set:"general"},{type:"Cards",label:"Cards",set:"general"}]},{key:"proof",title:"Stats & social proof",templateable:!0,sections:[{type:"Stats",label:"Stats",set:"general"},{type:"StatsParagraph",label:"Stats with Text",set:"general"},{type:"Chart",label:"Chart",set:"general"},{type:"Mockup",label:"Mockup Card",set:"general"},{type:"Testimonials",label:"Testimonials",set:"general"},{type:"Reviews",label:"Reviews",set:"service"},{type:"Logos",label:"Logos",set:"general"}]},{key:"promo",title:"Promotions & sign-ups",templateable:!0,sections:[{type:"Banner",label:"Banner",set:"general"},{type:"TitleWithButtons",label:"Call-to-Action Heading",set:"general"},{type:"Countdown",label:"Countdown",set:"general"}]},{key:"blog",title:"Blog & journal",templateable:!0,sections:[{type:"Masthead",label:"Issue Header",set:"general"},{type:"FeaturedCover",label:"Feature Banner",set:"general"},{type:"LongRead",label:"Article Text",set:"general"},{type:"Events",label:"Latest Posts",set:"service"}]},{key:"navigation",title:"Navigation & wayfinding",templateable:!0,sections:[{type:"Breadcrumb",label:"Breadcrumb",set:"general"},{type:"CategoryBar",label:"Category Bar",set:"general"},{type:"DocTabs",label:"Document Tabs",set:"general"}]},{key:"legal",title:"Legal & documents",templateable:!0,sections:[{type:"DocMasthead",label:"Document Header",set:"general"},{type:"DocBody",label:"Document Text",set:"general"}]},{key:"contact",title:"Contact, FAQ & forms",templateable:!0,sections:[{type:"FAQ",label:"Q&A",set:"general"},{type:"ContactRouting",label:"Contact Form",set:"service"},{type:"ContactLocations",label:"Contact / Locations",set:"general"},{type:"SubmitBuild",label:"Photo Submission Form",set:"service"},{type:"ReviewForm",label:"Review Form",set:"service"},{type:"Form",label:"Form",set:"service"},{type:"AppointmentBooking",label:"Booking Form",set:"service"}]},{key:"structure",title:"Layout, structure & embeds",templateable:!1,sections:[{type:"SectionHeader",label:"Section Header",set:"general"},{type:"Flex",label:"Box",set:"general"},{type:"Divider",label:"Divider",set:"general"},{type:"CustomHTML",label:"Custom HTML",set:"general"}]},{key:"layouts",title:"Layouts",templateable:!0,sections:[{type:"Manifesto",label:"Brand Text",set:"general"},{type:"Split",label:"Image & Text Split",set:"general"},{type:"Subscribe",label:"Signup Form",set:"service"},{type:"Ticker",label:"Scrolling Bar",set:"general"},{type:"SpecStrip",label:"Spec Strip",set:"general"},{type:"TimelineTrack",label:"Milestone Timeline",set:"general"},{type:"Timeline",label:"Story Timeline",set:"general"}]}];var b={Grid:'Lewis, 2026-09-14: Box and Grid duplicate each other and it feels confusing. 2026-09-15 he chose the order: give Box uneven widths FIRST, then merge Grid into Box. Shown three ways to pick the widths (mockup "Uneven Box Widths"), he chose A \u2014 shape pictures on the Box\'s `Block widths` row, the same "a row is a shape, pick a picture of it" rule he set for the photo wall on 2026-09-07.\n\nWHAT REPLACES IT: a Box set to One row, with `Block widths` at Equal or Custom, and its own `Columns` in the Phone view. Measured on PRODUCTION 2026-09-16 ~09:28 AEST (database `efficient-system`, all 10 tenant schemas, 128 storefront pages, both `layout` and `published_layout` \u2014 256 documents): 2 Grid nodes, and they are ONE Grid counted twice \u2014 the 9DIEM homepage on 9diem.com (`xtreme_mudder` schema), once as draft and once as published. It is top-level, holds three `ImageBlock`s at `columns` 3 \u2014 equal thirds \u2014 and NO block sets `Positions`. A Box draws that with `Block widths` at Equal.\n\n\u26A0\uFE0F THE COUNT MOVES; THE RULE MUST NOT DEPEND ON IT. This entry has already carried three different readings. A local-clone snapshot said no Grid used `Positions`. A PRODUCTION reading on 2026-09-15 ~13:15 AEST found 6 nodes on two sites, 4 of them spanned \u2014 hartesmetal.com.au homepage and about, 4 columns, spans 1 + 3. That one was TRUE when it was taken and stopped being true the same day: those two pages were rebuilt on Box (`Block widths: Bigger right`), and on 2026-09-16 they hold zero Grid nodes and are built from `Flex`. \u26D4 So the rule is NOT "there are still N spanned Grids". NEVER delete the Grid component or its `gridSpan` handling, whatever a census says \u2014 Grid still renders, still edits, still drags, and a merchant may rebuild a page either way on any day. Re-run the census on production before anyone PROPOSES deleting either, and read any number written here as the reading of its own day, not as the state of the world.\n\nWHAT A MERCHANT LOSES: a new Grid, and with it a fixed "N per row" that wraps by itself past three across, and the per-block `Positions` number. Box wraps with `Wrap`, but by content width, not by a fixed count.\n\nTHE TYPE KEY STAYS AND SO DOES THE COMPONENT. Every page holding a Grid still renders through it and can still be edited, dragged and added to; no document is rewritten and NO MIGRATION RUNS \u2014 the owner redoes live sections himself.\n\n\u26A0\uFE0F AND IT STAYS DROPPABLE WHERE IT LIVES. The drop rule in lib/document/config.tsx read the nestable containers off the catalogue\'s `structure` row, so leaving the catalogue would have made every open slot \u2014 a Box included \u2014 refuse a Grid already stored inside one. `scripts/test-retired-grid-stays-editable.tsx` \xA73 pins it.',CompatibleTyres:'Lewis, 2026-09-09: "Do not bother counting. Delete Compatible Tyres and use the new one. The new one needs complete settings \u2014 it must have every setting our cards have." Shown three ways to finish it, he chose C: retire from the menu now, and take styling the card text as its own card.\n\nWHAT REPLACES IT: `RelatedProducts` with its `Show` dropdown set to "Tyres that fit this product". That block is the GENERIC relationship section from card 1128 \u2014 it knows nothing about wheels or tyres, it asks the registry for a relationship by name. The two have rendered through the SAME renderer (`DynamicRelatedProducts`) since that card; this one is the pre-registry one-off that was never removed.\n\n\u26A0\uFE0F THE SWAP WAS NOT SAFE UNTIL #1305, AND SAYING SO IS THE POINT. The first old-versus-new table put in front of the owner was WRONG. `DynamicRelatedProducts` returns EARLY on a tyre answer and draws this component, so the seven card settings, the head split and the Width control all stopped at that call \u2014 nine settings, measured NO EFFECT, on precisely the relationship that replaces this block. #1283 gave the new block the card settings, #1299 the head split and its own Width, #1305 carried all of it onto the tyre branch. Only then was the claim true.\n\nWHAT WAS MEASURED BEFORE RETIRING, four ways, because the premise decides the card:\n \u2022 settable text kinds (SECTION_TEXT_KINDS): both blocks ABSENT \u2014 the map holds only TimelineTrack and Footprint, both AUTHORED lists\n \u2022 read-only text regions: neither `components/CompatibleTyres` nor `components/TyreCard` stamps one\n \u2022 panel rows through resolveFields: this block 31, `RelatedProducts` 42. This block\'s only style-ish key is `_sStyle`, the bucket HEADER, not a control\n \u2022 head text (num/title/description) is authored on both, so `_partStyles` reaches it identically\nSo on the CARD runs the two are zero against zero \u2014 neither can style them \u2014 and everywhere else the new block is ahead. Styling those runs needs a section-level prop family and a paint path for DERIVED text, which no section has yet: a part is anchored by matching an AUTHORED prop\'s string against the DOM, and `lib/document/source-bound-parts` keeps hydrated copy unreachable on purpose so a merchant cannot type into a copy of a product name and lose it at the next sync. That is its own card, and `lib/sections/text-regions` is the read-only half that already ships.\n\nTHE TYPE KEY STAYS AND SO DOES THE COMPONENT, the same contract Subscribe, Split and SubscribeBlogs have. Every page holding a `CompatibleTyres` still renders through it, no published document is rewritten, and NO MIGRATION RUNS \u2014 the owner\'s standing ruling of 2026-09-05: he redoes live sections himself and deletes the old ones when he does. He also said explicitly not to count them first.\n\n\u26A0\uFE0F AND THIS COMPONENT IS LOAD-BEARING FOR ITS OWN REPLACEMENT: `DynamicRelatedProducts` draws it for EVERY tyre answer. Deleting it would blank the block that replaces it, not just the pages still holding this one.',Spacer:`Lewis, 2026-10-10 (section-merges.md group 19, approved): one Divider holds space and lines. Style = None (was Spacer) / Line / Stripes; the space above and below as number boxes. Retired by card [MERGE] Spacer Into Divider (2026-10-26).
|
|
1
|
+
var y=["general","commerce","service"],i=[{key:"openers",title:"Hero & intros",defaultExpanded:!0,templateable:!0,sections:[{type:"Hero",label:"Hero",set:"general"},{type:"HeroSingle",label:"Hero Single",set:"general"},{type:"IntroBleed",label:"Scroll-Over Text",set:"general"}]},{key:"shop",title:"Shop & galleries",templateable:!0,sections:[{type:"Collections",label:"Collections",set:"commerce"},{type:"AlloyWheelsListing",label:"List",set:"commerce"},{type:"CatalogFilterBar",label:"Catalog Filter Bar",set:"commerce"},{type:"ProductGrid",label:"Product Grid",set:"commerce"},{type:"FitmentFinder",label:"Fitment Form",set:"commerce"},{type:"Gallery",label:"Tabbed Gallery",set:"commerce"},{type:"GalleryB",label:"Customer Photo Grid",set:"commerce"}]},{key:"product",title:"Product page",templateable:!0,sections:[{type:"ProductHero",label:"Product Hero",set:"commerce"},{type:"SpecTable",label:"Spec Table",set:"commerce"},{type:"ProcessSteps",label:"Image & Text Columns",set:"general"},{type:"DetailRows",label:"Feature Rows",set:"commerce"},{type:"FitmentTable",label:"Fitment Table",set:"commerce"},{type:"TyreSizes",label:"Tyre Sizes",set:"commerce"},{type:"TyreFitment",label:"Tyre Fitment Form",set:"commerce"},{type:"EuTyreLabel",label:"EU Tyre Label",set:"commerce"},{type:"BundleOffer",label:"Bundle Products",set:"commerce"}]},{key:"checkout",title:"Checkout & ordering",templateable:!0,sections:[{type:"OrderSummary",label:"Order Table",set:"general"},{type:"PaymentBadges",label:"Payment Methods",set:"general"},{type:"CheckoutCTA",label:"Ready-to-Order Banner",set:"commerce"}]},{key:"about",title:"About & brand story",templateable:!0,sections:[{type:"Footprint",label:"Locations Map",set:"general"}]},{key:"content",title:"Text & content",templateable:!0,sections:[{type:"Prose",label:"Editorial Text",set:"general"},{type:"ParagraphsA",label:"Lead Text",set:"general"},{type:"Cards",label:"Cards",set:"general"}]},{key:"proof",title:"Stats & social proof",templateable:!0,sections:[{type:"Stats",label:"Stats",set:"general"},{type:"Chart",label:"Chart",set:"general"},{type:"Mockup",label:"Mockup Card",set:"general"},{type:"Reviews",label:"Reviews",set:"service"}]},{key:"promo",title:"Promotions & sign-ups",templateable:!0,sections:[{type:"Banner",label:"Banner",set:"general"},{type:"TitleWithButtons",label:"Call-to-Action Heading",set:"general"},{type:"Countdown",label:"Countdown",set:"general"}]},{key:"blog",title:"Blog & journal",templateable:!0,sections:[{type:"FeaturedCover",label:"Feature Banner",set:"general"},{type:"LongRead",label:"Article Text",set:"general"},{type:"Events",label:"Latest Posts",set:"service"}]},{key:"navigation",title:"Navigation & wayfinding",templateable:!0,sections:[{type:"Breadcrumb",label:"Breadcrumb",set:"general"},{type:"CategoryBar",label:"Category Bar",set:"general"},{type:"DocTabs",label:"Document Tabs",set:"general"}]},{key:"legal",title:"Legal & documents",templateable:!0,sections:[{type:"DocBody",label:"Document Text",set:"general"}]},{key:"contact",title:"Contact, FAQ & forms",templateable:!0,sections:[{type:"FAQ",label:"Q&A",set:"general"},{type:"ContactRouting",label:"Contact Form",set:"service"},{type:"ContactLocations",label:"Contact / Locations",set:"general"},{type:"SubmitBuild",label:"Photo Submission Form",set:"service"},{type:"ReviewForm",label:"Review Form",set:"service"},{type:"Form",label:"Form",set:"service"},{type:"AppointmentBooking",label:"Booking Form",set:"service"}]},{key:"structure",title:"Layout, structure & embeds",templateable:!1,sections:[{type:"SectionHeader",label:"Section Header",set:"general"},{type:"Flex",label:"Box",set:"general"},{type:"Divider",label:"Divider",set:"general"},{type:"CustomHTML",label:"Custom HTML",set:"general"}]},{key:"layouts",title:"Layouts",templateable:!0,sections:[{type:"Manifesto",label:"Brand Text",set:"general"},{type:"Split",label:"Image & Text Split",set:"general"},{type:"Subscribe",label:"Signup Form",set:"service"},{type:"Ticker",label:"Scrolling Bar",set:"general"},{type:"SpecStrip",label:"Spec Strip",set:"general"},{type:"TimelineTrack",label:"Milestone Timeline",set:"general"},{type:"Timeline",label:"Story Timeline",set:"general"},{type:"Logos",label:"Logos",set:"general"},{type:"DocMasthead",label:"Page Header",set:"general"}]}];var b={Masthead:`Owner, 2026-10-10 (the page headers become ONE Layouts row): Issue Header and Document Header are one Page Header. Retired from the Add menu with no second preset (reviewer, 2026-11-06).
|
|
2
|
+
|
|
3
|
+
WHAT REPLACES IT: Page Header, a Box of Text blocks: a Header Box (the eyebrow, the title, a Details Box of one Text per line) over a Deck Box. Every Issue Header field is plain words with no data source, so the merchant makes the issue shape from Text blocks in that Box: the issue lines are Details lines, the lead is the Deck, and the "In this issue" panel is a Box of Texts beside it. Its converter row (\`section-to-box-rows-pageheader\` \`masthead\`, OFF) stays for a stored page that moves later.
|
|
4
|
+
|
|
5
|
+
WHAT A MERCHANT LOSES: a press that lays down the two-row issue shape with its "In this issue" panel; the merchant builds it from Boxes and Text blocks. No field is lost.
|
|
6
|
+
|
|
7
|
+
1 Issue Header is stored on the US sites (journal, draft and published; read only, 2026-11-07). Old sites stay as they are (owner, 2026-11-06).
|
|
8
|
+
|
|
9
|
+
THE TYPE KEY STAYS AND SO DOES THE COMPONENT. A page holding an Issue Header still renders through it and can still be edited; no document is rewritten.`,Grid:'Lewis, 2026-09-14: Box and Grid duplicate each other and it feels confusing. 2026-09-15 he chose the order: give Box uneven widths FIRST, then merge Grid into Box. Shown three ways to pick the widths (mockup "Uneven Box Widths"), he chose A \u2014 shape pictures on the Box\'s `Block widths` row, the same "a row is a shape, pick a picture of it" rule he set for the photo wall on 2026-09-07.\n\nWHAT REPLACES IT: a Box set to One row, with `Block widths` at Equal or Custom, and its own `Columns` in the Phone view. Measured on PRODUCTION 2026-09-16 ~09:28 AEST (database `efficient-system`, all 10 tenant schemas, 128 storefront pages, both `layout` and `published_layout` \u2014 256 documents): 2 Grid nodes, and they are ONE Grid counted twice \u2014 the 9DIEM homepage on 9diem.com (`xtreme_mudder` schema), once as draft and once as published. It is top-level, holds three `ImageBlock`s at `columns` 3 \u2014 equal thirds \u2014 and NO block sets `Positions`. A Box draws that with `Block widths` at Equal.\n\n\u26A0\uFE0F THE COUNT MOVES; THE RULE MUST NOT DEPEND ON IT. This entry has already carried three different readings. A local-clone snapshot said no Grid used `Positions`. A PRODUCTION reading on 2026-09-15 ~13:15 AEST found 6 nodes on two sites, 4 of them spanned \u2014 hartesmetal.com.au homepage and about, 4 columns, spans 1 + 3. That one was TRUE when it was taken and stopped being true the same day: those two pages were rebuilt on Box (`Block widths: Bigger right`), and on 2026-09-16 they hold zero Grid nodes and are built from `Flex`. \u26D4 So the rule is NOT "there are still N spanned Grids". NEVER delete the Grid component or its `gridSpan` handling, whatever a census says \u2014 Grid still renders, still edits, still drags, and a merchant may rebuild a page either way on any day. Re-run the census on production before anyone PROPOSES deleting either, and read any number written here as the reading of its own day, not as the state of the world.\n\nWHAT A MERCHANT LOSES: a new Grid, and with it a fixed "N per row" that wraps by itself past three across, and the per-block `Positions` number. Box wraps with `Wrap`, but by content width, not by a fixed count.\n\nTHE TYPE KEY STAYS AND SO DOES THE COMPONENT. Every page holding a Grid still renders through it and can still be edited, dragged and added to; no document is rewritten and NO MIGRATION RUNS \u2014 the owner redoes live sections himself.\n\n\u26A0\uFE0F AND IT STAYS DROPPABLE WHERE IT LIVES. The drop rule in lib/document/config.tsx read the nestable containers off the catalogue\'s `structure` row, so leaving the catalogue would have made every open slot \u2014 a Box included \u2014 refuse a Grid already stored inside one. `scripts/test-retired-grid-stays-editable.tsx` \xA73 pins it.',CompatibleTyres:'Lewis, 2026-09-09: "Do not bother counting. Delete Compatible Tyres and use the new one. The new one needs complete settings \u2014 it must have every setting our cards have." Shown three ways to finish it, he chose C: retire from the menu now, and take styling the card text as its own card.\n\nWHAT REPLACES IT: `RelatedProducts` with its `Show` dropdown set to "Tyres that fit this product". That block is the GENERIC relationship section from card 1128 \u2014 it knows nothing about wheels or tyres, it asks the registry for a relationship by name. The two have rendered through the SAME renderer (`DynamicRelatedProducts`) since that card; this one is the pre-registry one-off that was never removed.\n\n\u26A0\uFE0F THE SWAP WAS NOT SAFE UNTIL #1305, AND SAYING SO IS THE POINT. The first old-versus-new table put in front of the owner was WRONG. `DynamicRelatedProducts` returns EARLY on a tyre answer and draws this component, so the seven card settings, the head split and the Width control all stopped at that call \u2014 nine settings, measured NO EFFECT, on precisely the relationship that replaces this block. #1283 gave the new block the card settings, #1299 the head split and its own Width, #1305 carried all of it onto the tyre branch. Only then was the claim true.\n\nWHAT WAS MEASURED BEFORE RETIRING, four ways, because the premise decides the card:\n \u2022 settable text kinds (SECTION_TEXT_KINDS): both blocks ABSENT \u2014 the map holds only TimelineTrack and Footprint, both AUTHORED lists\n \u2022 read-only text regions: neither `components/CompatibleTyres` nor `components/TyreCard` stamps one\n \u2022 panel rows through resolveFields: this block 31, `RelatedProducts` 42. This block\'s only style-ish key is `_sStyle`, the bucket HEADER, not a control\n \u2022 head text (num/title/description) is authored on both, so `_partStyles` reaches it identically\nSo on the CARD runs the two are zero against zero \u2014 neither can style them \u2014 and everywhere else the new block is ahead. Styling those runs needs a section-level prop family and a paint path for DERIVED text, which no section has yet: a part is anchored by matching an AUTHORED prop\'s string against the DOM, and `lib/document/source-bound-parts` keeps hydrated copy unreachable on purpose so a merchant cannot type into a copy of a product name and lose it at the next sync. That is its own card, and `lib/sections/text-regions` is the read-only half that already ships.\n\nTHE TYPE KEY STAYS AND SO DOES THE COMPONENT, the same contract Subscribe, Split and SubscribeBlogs have. Every page holding a `CompatibleTyres` still renders through it, no published document is rewritten, and NO MIGRATION RUNS \u2014 the owner\'s standing ruling of 2026-09-05: he redoes live sections himself and deletes the old ones when he does. He also said explicitly not to count them first.\n\n\u26A0\uFE0F AND THIS COMPONENT IS LOAD-BEARING FOR ITS OWN REPLACEMENT: `DynamicRelatedProducts` draws it for EVERY tyre answer. Deleting it would blank the block that replaces it, not just the pages still holding this one.',Spacer:`Lewis, 2026-10-10 (section-merges.md group 19, approved): one Divider holds space and lines. Style = None (was Spacer) / Line / Stripes; the space above and below as number boxes. Retired by card [MERGE] Spacer Into Divider (2026-10-26).
|
|
2
10
|
|
|
3
11
|
WHAT REPLACES IT: a Divider with Style set to None. It draws no line, only its space, and that space is the Divider's Padding row (top and bottom, each with its phone value): the Spacer's 24 / 48 / 96 / 160 px are None with Padding 12 + 12, 24 + 24, 48 + 48, 80 + 80. \`scripts/test-divider-holds-the-spacer.tsx\` \xA75 holds it.
|
|
4
12
|
|
|
@@ -32,4 +40,14 @@ WHAT REPLACES IT: Cards drawn from its card template, each card a Label, a Value
|
|
|
32
40
|
|
|
33
41
|
WHAT A MERCHANT LOSES (the LOOK GAPS in that file): the grid takes the Cards block's own gaps and breakpoints, not the old 40 (16 on a phone).
|
|
34
42
|
|
|
35
|
-
THE TYPE KEY STAYS AND SO DOES THE COMPONENT. Every page holding a Document Detail Cards still renders through it and can still be edited; no document is rewritten.`,
|
|
43
|
+
THE TYPE KEY STAYS AND SO DOES THE COMPONENT. Every page holding a Document Detail Cards still renders through it and can still be edited; no document is rewritten.`,StatsParagraph:`Lewis, 2026-10-10 (approved): one Stats holds Stats and Stats with Text. Its head (eyebrow, heading, body) and each number's Prefix, Unit, Superscript, Label, "Use accent color" and text go into Stats; Card style Table (the old Stats with Text) or List (the old Stats). 2026-10-27: no Number block, the cards are Box + Text. Retired when the two became one Stats (2026-11-06).
|
|
44
|
+
|
|
45
|
+
WHAT REPLACES IT: a Stats press, a Box of real parts: three head Texts, then a Stats Box holding ONE Card list, Card style Table. Each number is a row of the Card list; its card is a figure Text (the prefix and number typed in it, the unit marked \`==_yr_==\`, which draws the section theme's Main colour; a whole number in that colour is \`==_8_==\`), a superscript Text beside it, a label Text and a body Text, each showing its row's field, and a row may link its own live number. The Stats Box's Card style row (Table / List) writes the Box's Gap and the card's own Border, Padding and Height.
|
|
46
|
+
|
|
47
|
+
WHAT A MERCHANT LOSES: the numbers do not count up (the Text block's Count up numbers setting is its own change, held); the figure has no tabular numbers; a unit is not a lighter weight than its number; rows of four stack below 800px, not two columns from 1100px.
|
|
48
|
+
|
|
49
|
+
THE TYPE KEY STAYS AND SO DOES THE COMPONENT. Every page holding a Stats with Text still renders through it and can still be edited; no document is rewritten (owner 2026-11-06: old sites stay as they are).`,Testimonials:"Lewis, 2026-10-10 (section-merges.md group 6, approved): Testimonials goes into Reviews, whose Review content is Manual (typed quotes) or Reviews (the store's approved reviews), with a product choice in place of the old Design code. Retired by card [MERGE] Remaining Section Merges (2026-11-06), after Reviews took typed quotes and a card template (efficient-storefront-blocks #242) and the product choice (#359).\n\nWHAT REPLACES IT: Reviews with Review content set to Manual. Every Testimonials key has the same key there: `eyebrow`, `eyebrowLook`, `title`, `items[]` (`quote`, `name`, `role`), `columns` 1-3 and `headPlacement` (both split their head). A typed review also has a `title` and a `rating`, empty for a quote that has none.\n\nWHAT A MERCHANT LOSES on a NEW quote list: nothing this section had. Reviews is in the service set where this section was general; no host narrows the sets (2026-11-06).\n\nNO CONVERTER ROW HERE: its Box row is efficient-storefront-blocks' (`section-to-box-rows-reviews`, OFF). 0 Testimonials nodes on the US sites, draft or published (read only, 2026-11-06). Old sites stay as they are (owner, 2026-11-06).\n\nTHE TYPE KEY STAYS AND SO DOES THE COMPONENT. A Testimonials anywhere still renders through it and can still be edited; no document is rewritten.",SubscribeBlogs:"card 66396 \u2014 folded into `Subscribe`, which now chooses its rail's content with a `Type` control (the newsletter's own issues, or live blog posts). The two shared 21 of their fields and rendered THE SAME BYTES from equivalent rows, so offering both asked a merchant to choose between two names for one section. The type key stays because it is stored on published pages, and the component stays because those pages still render through it.",RelatedProducts:`Owner, 2026-11-06 (plan productgrid-card-template-2026-11-06, inovit row 19): a Product Grid with "Show the current product's related" on IS the related grid, so offering both asked a merchant to choose between two names for one section.
|
|
50
|
+
|
|
51
|
+
WHAT REPLACES IT: Product Grid, bound to the current product. Both draw every card through the grid's ONE card template (efficient-storefront-blocks, lib/content/product-card-seed).
|
|
52
|
+
|
|
53
|
+
THE TYPE KEY STAYS AND SO DOES THE COMPONENT. A stored Related Products node is read as that grid by the host (\`relatedToGrid\`) and draws the same cards; no document is rewritten. Its footnote is the one value the grid has no home for.`};var O=Array.from(new Set([...i.flatMap(e=>e.sections.map(t=>t.type)),...Object.keys(b)])),A=Object.fromEntries(i.flatMap(e=>e.sections.map(t=>[t.type,t.label]))),g={Heading:"general",Text:"general",Eyebrow:"general",ImageBlock:"general",LogoBlock:"general",LocationMap:"general",Contents:"general",ButtonBlock:"general",CardList:"general",PostCard:"general",HeroSlide:"general",HeroGroup:"general",Integrations:"general",Grid:"general",KeyFeatures:"general",Spacer:"general",Series:"general",DocMetaCards:"general",StatsParagraph:"general",Testimonials:"general",Masthead:"general",CollectionCard:"commerce",GalleryItem:"commerce",ProductRef:"commerce",CompatibleTyres:"commerce",DeliveryOptions:"commerce",Header:"commerce",SearchBlock:"commerce",CartBlock:"commerce",CountrySwitchBlock:"commerce",AccountBlock:"commerce",ThemeSwitchBlock:"commerce",ProductGallery:"commerce",EuTyreLabelBlock:"commerce",SubmitBox:"service",BookingBox:"service",SubscribeBlogs:"service",RatingBlock:"service",Footer:"service",FooterLogo:"service",FooterMenu:"service",FooterDivider:"service",FooterGroup:"service",FooterText:"service",FooterEmailSignup:"service",FooterSocial:"service",FooterPayment:"service",MenuBlock:"service",MenuLinkBlock:"service",ArticleBody:"service",ProductPrice:"commerce",ProductSize:"commerce",ProductColour:"commerce",ProductPicture:"commerce",ProductEyebrow:"commerce",ProductName:"commerce",ProductSpecs:"commerce",ProductBuy:"commerce",FitmentPicker:"commerce",StockFitment:"commerce",RelatedProducts:"commerce",EmailFormBlock:"service",SocialLogosBlock:"service",PaymentLogosBlock:"service",LegalLineBlock:"service",SiteHeader:"service",SiteFooter:"service"},a={...g,...Object.fromEntries(i.flatMap(e=>e.sections.map(t=>[t.type,t.set])))};function T(e){return Object.prototype.hasOwnProperty.call(a,e)?a[e]:void 0}function l(e){return Object.keys(a).filter(t=>a[t]===e).sort()}var E=l("general"),w=l("commerce"),S=l("service");var f="Box",C=`${f}es`;var h=e=>!!e&&typeof e=="object"&&!Array.isArray(e),p=e=>h(e)&&typeof e.type=="string"&&h(e.props);var s=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),d=e=>p(e)&&e.type!=="";function u(e,t,o){if(Array.isArray(e))for(let r of e)d(r)?c(r,t,o):s(r)&&typeof r.type=="string"&&r.type!==""&&t.add(r.type)}function n(e,t,o){if(Array.isArray(e)){if(o.has(e))return;o.add(e);for(let r of e)d(r)?c(r,t,o):n(r,t,o)}else if(s(e)&&!o.has(e)){o.add(e);for(let r of Object.values(e))n(r,t,o)}}function c(e,t,o){if(!o.has(e)){o.add(e),t.add(e.type);for(let r of Object.values(e.props))n(r,t,o)}}function m(e){let t=new Set,o=new Set;if(d(e))c(e,t,o);else if(s(e)){if(u(e.content,t,o),s(e.zones))for(let r of Object.values(e.zones))u(r,t,o);s(e.root)&&n(e.root,t,o)}return[...t].sort()}export{y as BLOCK_SETS,w as COMMERCE_BLOCKS,E as GENERAL_BLOCKS,S as SERVICE_BLOCKS,T as blockSetOf,m as blockTypesIn};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as l}from"react/jsx-runtime";import{ColumnsIcon as o,HeightIcon as t}from"efficient-easel/icons";import{phoneTwinFields as i}from"efficient-easel/screen/lib/document/box-fields";import{select as r,slider as e}from"efficient-web-builder/editor/lib/document/box-fields";const p={fields:{layout:r("Cell height",l(t,{}),[{label:"Tall",value:"tall"},{label:"Short",value:"short"}],"tall"),...i("pickerColumns",e("Columns",l(o,{}),1,4,1,4),void 0,{phoneRow:e("Columns",l(o,{}),1,4,1,1)})}};export{p as FitmentPickerFields};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as n}from"react/jsx-runtime";import{getFitments as a}from"../../../../../../render/lib/wheels/fitments.js";import{WHEELS as f}from"../../../../../../render/lib/wheels/wheels.js";import{ProductFieldIcon as s,BlockProductIcon as p,ProductSizeIcon as c,NoteIcon as d}from"efficient-easel/icons";import{toggle as i,text as r,textarea as l,linkField as F}from"efficient-web-builder/editor/lib/document/controls";import{group as t}from"efficient-easel/screen/lib/document/box-fields";import{select as u}from"efficient-web-builder/editor/lib/document/box-fields";import{headFieldsForPlacement as T,SPLITTABLE_SECTIONS as _}from"efficient-web-builder/format/lib/sections/section-head-placement";import{withRowRules as g}from"efficient-web-builder/render/lib/document/show-when";import{OFF_DYNAMIC_PAGE as E,ON_TYRE_TEMPLATE as h,TYRE_TEMPLATE_FACTS as L}from"../page-rules.js";import{FITMENTTABLE_PH as e}from"../../../../../../render/lib/document/blocks/commerce/FitmentTable/meta.js";const P=f.filter(o=>a(o.slug).length>0).map(o=>({value:o.slug,label:o.name})),C={fields:g({_gDynamic:t("Product page"),dynamic:i("Connect to product data",!1,n(s,{})),_gContent:t("Header"),num:r("Number",e.num),title:r("Heading",e.title),description:l("Body",e.description),_gData:t("Wheel"),wheel:u("Product",n(p,{}),P,"vector-iii"),_gOptions:t("Controls"),showFilter:i("Size-filter chips",!0,n(c,{})),tooltipDefaultOn:i("Detail tooltip on by default",!0,n(d,{})),_gFootnote:t("Footnote"),footnote:l("Footnote",e.footnote),footnoteLinkText:r("Footnote button",e.footnoteLinkText),footnoteLinkHref:F("Footnote link")},[[["_gDynamic","dynamic"],{any:[]}],[["_gData","wheel"],E],[["_gOptions","showFilter","tooltipDefaultOn","_gFootnote","footnote","footnoteLinkText","footnoteLinkHref"],{not:h}]]),resolveFields:(o,{fields:m,parent:I})=>T(m,o.props.headPlacement,_.FitmentTable.headRows),showWhenFacts:L};export{C as FitmentTableFields};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{CartIcon as r,LinkIcon as e}from"efficient-easel/icons";import{toggle as t}from"efficient-web-builder/editor/lib/document/controls";const n={fields:{buy:t("Buy button",!0,o(r,{})),page:t("Product page link",!0,o(e,{}))}};export{n as ProductBuyFields};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={fields:{}};export{e as ProductEyebrowFields};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as o}from"react/jsx-runtime";import
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import F from"../../../../../components/CategorySource.js";import{headerKeysOfPlace as g,LAYOUT_FIELD_KEYS as y,SECTION_THEME_FIELD_KEYS as N,SECTION_SHAPE_FIELD_KEYS as G,SECTION_ANIM_FIELD_KEYS as k}from"efficient-web-builder/editor/lib/document/field-groups";import{TITLE_SIZES as w}from"../../../../../../render/components/ProductGridSection.js";import{DEFAULT_TITLE_SIZE as A}from"../../../../../../render/lib/sections/product-grid-title.js";import{ProductFieldIcon as U,TextSizeIcon as H,ColumnsIcon as l,ListIcon as b,HashIcon as x}from"efficient-easel/icons";import{toggle as c,text as d,textarea as a,sourceField as M,linkField as B,containerGapRows as p,spacingFields as K}from"efficient-web-builder/editor/lib/document/controls";import{VIEW_KEY_ACCESS as Y,group as t,phoneTwinFields as u}from"efficient-easel/screen/lib/document/box-fields";import{PRODUCT_GRID_COLUMNS as e,PRODUCT_GRID_PHONE_COLUMNS as i,PRODUCT_GRID_TABLET_COLUMNS as _,builtInTabletColumns as j}from"../../../../../../render/lib/sections/product-grid-columns.js";import{select as W,slider as n}from"efficient-web-builder/editor/lib/document/box-fields";import{isEditorOnDynamicPage as z}from"efficient-web-builder/format/lib/document/editor-page-context";import{productKindsField as Z}from"../shared-fields.js";import{ALL_PRODUCTS_SLUG as v}from"../../../../../../render/lib/wheels/grid-source.js";import{headFieldsForPlacement as V,SPLITTABLE_SECTIONS as q}from"efficient-web-builder/format/lib/sections/section-head-placement";import{PH as f}from"efficient-web-builder/format/lib/document/blocks/placeholders";import{slotRowsField as J}from"efficient-web-builder/editor/lib/document/blocks/shared-fields";import{PRODUCTGRID_PH as T}from"../../../../../../render/lib/document/blocks/commerce/placeholders.js";import{truthy as m,withRowRules as E}from"efficient-web-builder/render/lib/document/show-when";import{BOUND_TO_THE_RECORD as Q,OFF_DYNAMIC_PAGE as O,ON_DYNAMIC_PAGE_ROW as X,PAGE_FACTS as $}from"../page-rules.js";import{ProductGridSlots as S}from"../../../../../../render/lib/document/blocks/commerce/ProductGrid/meta.js";const P=K({top:120,keys:{top:"padTop",bottom:"padBottom"},group:!1,only:"top"}),oo=new Set([...g("Content"),"_gDynamic","dynamic","_gHeader","num","title","titleSize","description","_gLayout","columns","columnsTablet","columnsPhone","limit",...Object.keys(p("ProductGrid")),"template",...Object.keys(P),...y,...N,...G,...k]),to={not:Q},C=n("Columns",o(l,{}),e.min,e.max,1,e.fallback),{columns:eo,columnsTablet:io}=u("columns",C,Y,{phoneRow:n("Columns",o(l,{}),_.min,_.max,1,e.fallback,"",{clear:{phoneFollows:!1,hint:r=>j(r.follows)}})}),{columnsPhone:no}=u("columns",C,void 0,{phoneRow:n("Columns",o(l,{}),i.min,i.max,1,i.min,"",{clear:{phoneFollows:!1,hint:i.min}})}),ro={columns:eo,columnsTablet:io,columnsPhone:no},go={fields:E({_gDynamic:t("Product page"),dynamic:c("Connect to product data",!1,o(U,{})),_gHeader:t("Header"),num:d("Number",T.num),title:a("Heading",f.sectionHeading),titleSize:W("Heading size",o(H,{}),w,A),description:a("Body",f.body),_gProducts:t("Products"),source:M(F),kinds:Z(),productList:J("ProductGrid"),products:S.products,template:S.template,_gLink:t("Link"),linkText:d("Button",T.link),linkHref:B("Link"),_gLayout:t("Grid"),...ro,showAll:c("Show all items",!1,o(b,{})),limit:n("Items to display",o(x,{}),1,12,1,8),...p("ProductGrid"),...P},[[["_gDynamic","dynamic"],X],[["kinds"],{field:"source.slug",is:v}],[["products","productList"],{not:m("source.slug")}],[["limit"],{any:[O,{not:m("showAll")}]}],[["linkHref"],{any:[O,{not:m("linkText.hidden")}]}]]),resolveFields:(r,{fields:I,parent:so})=>{const L=I,D=r.props,s=V(L,D.headPlacement,q.ProductGrid.headRows);if(!z())return s;const h=Object.keys(s).filter(R=>!oo.has(R));return E(s,[[h,to]])},showWhenFacts:$};export{go as ProductGridFields};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={fields:{}};export{e as ProductNameFields};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{cardMediaFields as d,cardStyleFields as e}from"efficient-web-builder/editor/lib/document/controls";const{indexBadge:i,showBadge:o}=e(),s={fields:{...d(),indexBadge:i,showBadge:o}};export{s as ProductPictureFields};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as s}from"react/jsx-runtime";import{HashIcon as o}from"efficient-easel/icons";import{toggle as e}from"efficient-web-builder/editor/lib/document/controls";const m={fields:{sizes:e("Sizes",!1,s(o,{}))}};export{m as ProductSpecsFields};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{RELATED_CARDS_MIN as a,RELATED_CARDS_MAX as l,RELATED_CARDS_DEFAULT as n}from"../../../../../../render/lib/catalog/related-cards.js";import{RELATIONSHIP_OPTIONS as p,DEFAULT_RELATIONSHIP as t,RELATIONSHIPS as R,CARD_ROWS_NOT_ON_A_TYRE as _}from"../../../../../../render/lib/catalog/relationships.js";import{EyeIcon as f,HashIcon as T,ColumnsIcon as A}from"efficient-easel/icons";import{text as E,textarea as r}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 i}from"efficient-web-builder/editor/lib/document/box-fields";import{headFieldsForPlacement as c,SPLITTABLE_SECTIONS as I}from"efficient-web-builder/format/lib/sections/section-head-placement";import{PH as s}from"efficient-web-builder/format/lib/document/blocks/placeholders";import{PRODUCTGRID_PH as u}from"../../../../../../render/lib/document/blocks/commerce/placeholders.js";import{withRowsShownWhen as P}from"efficient-web-builder/render/lib/document/show-when";import{ProductGridSlots as D}from"../../../../../../render/lib/document/blocks/commerce/ProductGrid/meta.js";const h={not:{field:"relationship",in:R.filter(o=>o.to==="tyre").map(o=>o.key),default:t}},j={fields:{_gHeader:m("Header"),num:E("Number",u.num),title:r("Heading",s.sectionHeading),description:r("Body",s.body),template:D.template,_gLayout:m("Grid"),relationship:S("Show",e(f,{}),p,t),cardCount:i("Cards to show",e(T,{}),a,l,1,n),columns:i("Columns",e(A,{}),2,4,1,3)},resolveFields:(o,{fields:d,parent:C})=>c(P(d,_,h),o.props.headPlacement,I.RelatedProducts.headRows)};export{j as RelatedProductsFields};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import{headerKeysOfPlace as P,LAYOUT_FIELD_KEYS as b,SECTION_THEME_FIELD_KEYS as L,SECTION_SHAPE_FIELD_KEYS as F,SECTION_ANIM_FIELD_KEYS as R}from"efficient-web-builder/editor/lib/document/field-groups";import{getWheelBySlug as I}from"../../../../../../render/lib/wheels/wheels.js";import A from"../../../../../components/SpecTableSource.js";import{ProductFieldIcon as N,FinishIcon as E,DiagramIcon as C}from"efficient-easel/icons";import{DisplayRow as B,toggle as u,text as H,textarea as g,sourceField as Y,plainText as d}from"efficient-web-builder/editor/lib/document/controls";import{group as i}from"efficient-easel/screen/lib/document/box-fields";import{select as f}from"efficient-web-builder/editor/lib/document/box-fields";import{isEditorOnDynamicPage as x}from"efficient-web-builder/format/lib/document/editor-page-context";import{headFieldsForPlacement as U,SPLITTABLE_SECTIONS as K}from"efficient-web-builder/format/lib/sections/section-head-placement";import{truthy as m,withRowRules as h}from"efficient-web-builder/render/lib/document/show-when";import{BOUND_TO_THE_RECORD as W,BOUND_TO_THE_RECORD_ROW as S,OFF_TYRE_TEMPLATE_FACTS as v,ON_DYNAMIC_PAGE_ROW as M,ON_TYRE_TEMPLATE_ROW as j,PAGE_FACTS as z}from"../page-rules.js";import{SPECTABLE_PH as c,SpecTableSlots as k}from"../../../../../../render/lib/document/blocks/commerce/SpecTable/meta.js";const G="Size (blank = none selected)",V=[{id:"euLabel",label:"EU tyre label"}],Z=new Set([...P("Content"),"_gDynamic","dynamic","_gHeader","num","title","description","_gDiagram","showDiagram","showEuLabel","template",...b,...L,...F,...R]),q={not:W},_={any:[{all:[m("source.slug"),m("source.spec")]},{all:[{not:m("source.slug")},m("wheel")]}]},me={fields:h({...k,_gDynamic:i("Product page"),dynamic:u("Connect to product data",!1,r(N,{})),_gHeader:i("Header"),num:H("Number",c.num),title:g("Heading",c.title),description:g("Body",c.description),_gData:i("Product"),source:Y(A),finish:f("Finish",r(E,{}),[],""),size:{type:"text",label:G},_gDiagram:i("Diagram"),showDiagram:u("Dimension diagram",!0,r(C,{})),showEuLabel:{type:"custom",render:({value:e,onChange:l})=>r(B,{parts:V,changed:e===!0,shown:()=>e===!0,onPress:(T,o)=>l(o),onReset:()=>l(!1)})},_gRows:i("Rows"),rows:{type:"array",label:"Rows",arrayFields:{label:d("Label"),value:d("Value")},defaultItemProps:{label:"Label",value:""},getItemSummary:e=>e?.label||e?.value||"Row"}},[[["_gDynamic","dynamic"],M],[["finish","size"],_],[["_gDiagram","showDiagram"],{any:[S,_]}],[["_gRows","rows"],{not:_}],[["showEuLabel"],{all:[S,j]}]]),resolveFields:(e,{fields:l,parent:T})=>{const o=e.props,D=x(),y=t=>U(t,e.props.headPlacement,K.SpecTable.headRows),s=o.source,p=!s?.slug&&typeof o.wheel=="string"?o.wheel:"";let n=l;if(!(D&&o.dynamic)&&(s?.slug&&s.spec||p)){const t=s?.slug?s.finishes.map(a=>a.name):(I(p)?.finishes??[]).map(a=>a.name),w=[{value:"",label:"Default (first finish)"},...t.map(a=>({value:a,label:a}))];n={...n,finish:f("Finish",r(E,{}),w,"")}}const O=Object.keys(n).filter(t=>!Z.has(t));return y(h(n,[[O,q]]))},showWhenFacts:{...z,...v}};export{me as SpecTableFields};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const t={fields:{}};export{t as StockFitmentFields};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const commerceBlocks: Record<"AlloyWheelsListing" | "ProductGrid" | "CatalogFilterBar" | "ProductPrice" | "Gallery" | "GalleryB" | "Header" | "ProductHero" | "SpecTable" | "DetailRows" | "SearchBlock" | "CountrySwitchBlock" | "ThemeSwitchBlock" | "AccountBlock" | "CartBlock" | "Collections" | "CollectionCard" | "ProductRef" | "GalleryItem" | "BundleOffer" | "CompatibleTyres" | "DeliveryOptions" | "FitmentFinder" | "FitmentTable" | "
|
|
1
|
+
export declare const commerceBlocks: Record<"AlloyWheelsListing" | "ProductGrid" | "CatalogFilterBar" | "StockFitment" | "ProductPrice" | "ProductEyebrow" | "ProductName" | "Gallery" | "GalleryB" | "Header" | "ProductHero" | "ProductPicture" | "ProductSpecs" | "ProductBuy" | "ProductColour" | "ProductSize" | "SpecTable" | "DetailRows" | "RelatedProducts" | "SearchBlock" | "CountrySwitchBlock" | "ThemeSwitchBlock" | "AccountBlock" | "CartBlock" | "Collections" | "CollectionCard" | "ProductRef" | "GalleryItem" | "BundleOffer" | "CompatibleTyres" | "DeliveryOptions" | "FitmentFinder" | "FitmentTable" | "TyreFitment" | "TyreSizes" | "EuTyreLabel" | "CheckoutCTA" | "EuTyreLabelBlock" | "ProductGallery" | "FitmentPicker", 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
|
|
1
|
+
import{assembleBlocks as r}from"efficient-web-builder/format/lib/document/blocks/block-types";import{AccountBlockFields as o}from"./AccountBlock/fields.js";import{AlloyWheelsListingFields as e}from"./AlloyWheelsListing/fields.js";import{BundleOfferFields as i}from"./BundleOffer/fields.js";import{CartBlockFields as t}from"./CartBlock/fields.js";import{CatalogFilterBarFields as l}from"./CatalogFilterBar/fields.js";import{CheckoutCTAFields as m}from"./CheckoutCTA/fields.js";import{CollectionCardFields as d}from"./CollectionCard/fields.js";import{CollectionsFields as c}from"./Collections/fields.js";import{CompatibleTyresFields as s}from"./CompatibleTyres/fields.js";import{CountrySwitchBlockFields as F}from"./CountrySwitchBlock/fields.js";import{DeliveryOptionsFields as p}from"./DeliveryOptions/fields.js";import{DetailRowsFields as f}from"./DetailRows/fields.js";import{EuTyreLabelFields as u}from"./EuTyreLabel/fields.js";import{EuTyreLabelBlockFields as a}from"./EuTyreLabelBlock/fields.js";import{FitmentFinderFields as P}from"./FitmentFinder/fields.js";import{FitmentPickerFields as n}from"./FitmentPicker/fields.js";import{FitmentTableFields as y}from"./FitmentTable/fields.js";import{GalleryFields as C}from"./Gallery/fields.js";import{GalleryBFields as B}from"./GalleryB/fields.js";import{GalleryItemFields as k}from"./GalleryItem/fields.js";import{HeaderFields as S}from"./Header/fields.js";import{ProductGalleryFields as T}from"./ProductGallery/fields.js";import{ProductGridFields as b}from"./ProductGrid/fields.js";import{ProductHeroFields as E}from"./ProductHero/fields.js";import{ProductRefFields as h}from"./ProductRef/fields.js";import{RelatedProductsFields as G}from"./RelatedProducts/fields.js";import{SearchBlockFields as R}from"./SearchBlock/fields.js";import{SpecTableFields as w}from"./SpecTable/fields.js";import{ThemeSwitchBlockFields as L}from"./ThemeSwitchBlock/fields.js";import{TyreFitmentFields as A}from"./TyreFitment/fields.js";import{TyreSizesFields as D}from"./TyreSizes/fields.js";import{ProductSizeFields as O}from"./ProductSize/fields.js";import{ProductColourFields as g}from"./ProductColour/fields.js";import{ProductPriceFields as z}from"./ProductPrice/fields.js";import{StockFitmentFields as H}from"./StockFitment/fields.js";import{ProductPictureFields as M}from"./ProductPicture/fields.js";import{ProductSpecsFields as I}from"./ProductSpecs/fields.js";import{ProductBuyFields as N}from"./ProductBuy/fields.js";import{ProductEyebrowFields as v}from"./ProductEyebrow/fields.js";import{ProductNameFields as W}from"./ProductName/fields.js";import{COMMERCE_RENDERS as _}from"../../../../../render/lib/document/blocks/commerce/renders.js";const x={AccountBlock:o,AlloyWheelsListing:e,BundleOffer:i,CartBlock:t,CatalogFilterBar:l,CheckoutCTA:m,CollectionCard:d,Collections:c,CompatibleTyres:s,CountrySwitchBlock:F,DeliveryOptions:p,DetailRows:f,EuTyreLabel:u,EuTyreLabelBlock:a,FitmentFinder:P,FitmentTable:y,Gallery:C,GalleryB:B,GalleryItem:k,Header:S,ProductGallery:T,ProductGrid:b,ProductHero:E,ProductRef:h,RelatedProducts:G,SearchBlock:R,SpecTable:w,ThemeSwitchBlock:L,TyreFitment:A,TyreSizes:D,ProductSize:O,ProductColour:g,ProductPrice:z,FitmentPicker:n,StockFitment:H,ProductPicture:M,ProductSpecs:I,ProductBuy:N,ProductEyebrow:v,ProductName:W},Dr=r(_,x);export{Dr as commerceBlocks};
|
|
@@ -8,3 +8,8 @@ export declare const BOUND_TO_THE_RECORD: ShowWhenRule;
|
|
|
8
8
|
export declare const BOUND_TO_THE_RECORD_ROW: ShowWhenRule;
|
|
9
9
|
export declare const DRAWS_OTHER_RECORD: ShowWhenRule;
|
|
10
10
|
export declare const PAGE_FACTS: BlockShowWhenFacts;
|
|
11
|
+
export declare function editorOnTyreTemplate(appState: unknown): boolean;
|
|
12
|
+
export declare const ON_TYRE_TEMPLATE: ShowWhenRule;
|
|
13
|
+
export declare const ON_TYRE_TEMPLATE_ROW: ShowWhenRule;
|
|
14
|
+
export declare const TYRE_TEMPLATE_FACTS: BlockShowWhenFacts;
|
|
15
|
+
export declare const OFF_TYRE_TEMPLATE_FACTS: BlockShowWhenFacts;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{truthy as
|
|
1
|
+
import{truthy as a}from"efficient-web-builder/render/lib/document/show-when";import{editorTemplateProductKind as T,isEditorOnDynamicPage as o}from"efficient-web-builder/format/lib/document/editor-page-context";import{editorPageDrawsOtherRecord as c}from"../../../../../render/lib/document/current-record.js";const r={context:"dynamicPage",is:!0},i={not:r},p={not:{context:"offDynamicPage",is:!0}},n=a("dynamic"),x={all:[r,n]},R={all:[p,n]},d={context:"drawsOtherRecord",is:!0},m={offDynamicPage:()=>!o(),drawsOtherRecord:(e,t)=>c(t)};function _(e){if(!o())return!1;const t=e?.data?.root;return T(t?.props)==="tyre"}const A={context:"tyreTemplate",is:!0},f={not:{context:"offTyreTemplate",is:!0}},D={tyreTemplate:(e,{appState:t})=>_(t)},P={offTyreTemplate:(e,{appState:t})=>!_(t)};export{x as BOUND_TO_THE_RECORD,R as BOUND_TO_THE_RECORD_ROW,d as DRAWS_OTHER_RECORD,n as DYNAMIC_ON,i as OFF_DYNAMIC_PAGE,P as OFF_TYRE_TEMPLATE_FACTS,r as ON_DYNAMIC_PAGE,p as ON_DYNAMIC_PAGE_ROW,A as ON_TYRE_TEMPLATE,f as ON_TYRE_TEMPLATE_ROW,m as PAGE_FACTS,D as TYRE_TEMPLATE_FACTS,_ as editorOnTyreTemplate};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ArticleBodySlots as o}from"../../../../../../render/lib/document/blocks/service/ArticleBody/meta.js";const e={fields:{...o}};export{e as ArticleBodyFields};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{chromeOwnWidthFields as o}from"efficient-web-builder/editor/lib/document/section-own-width-fields";import{SiteFooterSlots as t}from"../../../../../../render/lib/document/blocks/service/SiteFooter/meta.js";const s={fields:{...o(),sections:t.sections}};export{s as SiteFooterFields};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import{
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{chromeOwnWidthFields as a}from"efficient-web-builder/editor/lib/document/section-own-width-fields";import{CaseIcon as r,ContrastIcon as i,HeightIcon as s,LayoutIcon as n,StickyIcon as m}from"efficient-easel/icons";import{sectionThemeFields as c}from"efficient-web-builder/editor/lib/document/controls";import{segmented as o,slider as p}from"efficient-web-builder/editor/lib/document/box-fields";import{HEADER_THEME_FOLLOW as u,resolveHeaderTheme as d}from"../../../../../../render/lib/content/header-theme.js";import{HEADER_HEIGHT_PX as l}from"efficient-web-builder/render/lib/document/header-clearance";import{SiteHeaderSlots as h}from"../../../../../../render/lib/document/blocks/service/SiteHeader/meta.js";const{sectionAccent:v}=c(t=>d(t)??u,"Follow the site theme"),_={fields:{heightPx:p("Height",e(s,{}),l.min,l.max,2,l.default,"px"),...a(),sectionAccent:v,topTextColor:o("Text color at the top",e(i,{}),[{label:"Auto",value:"auto"},{label:"Light",value:"light"},{label:"Dark",value:"dark"}],"auto"),navTextCase:o("Letters",e(r,{}),[{label:"Uppercase",value:"uppercase"},{label:"Capitalised",value:"capitalised"}],"uppercase"),menuRow:o("Menu row",e(n,{}),[{label:"Own row",value:"top"},{label:"Same row",value:"inline"}],"top"),sticky:o("Sticky header",e(m,{}),[{label:"None",value:"none"},{label:"Always",value:"always"},{label:"On scroll up",value:"on_scroll_up"}],"always"),sections:h.sections}};export{_ as SiteHeaderFields};
|
|
@@ -1 +1 @@
|
|
|
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
|
+
export declare const serviceBlocks: Record<"Form" | "Reviews" | "Footer" | "FooterGroup" | "Events" | "MenuLinkBlock" | "ArticleBody" | "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
|
|
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{ArticleBodyFields as a}from"./ArticleBody/fields.js";import{FooterSocialFields as g}from"./FooterSocial/fields.js";import{FooterPaymentFields as c}from"./FooterPayment/fields.js";import{FooterTextFields as u}from"./FooterText/fields.js";import{FormFields as B}from"./Form/fields.js";import{LegalLineBlockFields as S}from"./LegalLineBlock/fields.js";import{MenuLinkBlockFields as E}from"./MenuLinkBlock/fields.js";import{OpeningHoursFields as R}from"./OpeningHours/fields.js";import{RateTableFields as b}from"./RateTable/fields.js";import{MessagingCardsFields as k}from"./MessagingCards/fields.js";import{FooterMessagingFields as C}from"./FooterMessaging/fields.js";import{ContactCardsFields as v}from"./ContactCards/fields.js";import{RatingBlockFields as L}from"./RatingBlock/fields.js";import{ReviewFormFields as T}from"./ReviewForm/fields.js";import{ReviewsFields as M}from"./Reviews/fields.js";import{SiteFooterFields as x}from"./SiteFooter/fields.js";import{SiteHeaderFields as _}from"./SiteHeader/fields.js";import{SubmitBoxFields as A}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 y}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,ArticleBody:a,FooterSocial:g,FooterPayment:c,FooterText:u,Form:B,LegalLineBlock:S,MenuLinkBlock:E,OpeningHours:R,RateTable:b,MessagingCards:k,FooterMessaging:C,ContactCards:v,RatingBlock:L,ReviewForm:T,Reviews:M,[i]:x,[r]:_,SubmitBox:A,SubmitBuild:D,Subscribe:I,SubscribeBlogs:w},Bo=o(y,H);export{Bo as serviceBlocks};
|
|
@@ -39,7 +39,7 @@ export declare function boxHeaderFromRow(row: HeaderRowForBox, make: MakeNode, g
|
|
|
39
39
|
menuRow?: import("../../../render/lib/content/header-bar.js").HeaderMenuRow | undefined;
|
|
40
40
|
navTextCase?: "uppercase" | "capitalised" | undefined;
|
|
41
41
|
sectionAccent?: number | undefined;
|
|
42
|
-
|
|
42
|
+
sectionContentWidth?: string | undefined;
|
|
43
43
|
heightPx?: number | undefined;
|
|
44
44
|
sticky: "none" | "always" | "on_scroll_up";
|
|
45
45
|
topTextColor: "light" | "dark" | "auto";
|
|
@@ -1 +1 @@
|
|
|
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
|
|
1
|
+
import{SECTION_WIDTH_KEYS as E}from"efficient-web-builder/format/lib/content/section-width";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 I}from"efficient-web-builder/format/lib/document/section-groups";import{resolveCountryShowAs as D}from"../../../render/lib/content/country-show-as.js";import{templateOnInsert as F}from"efficient-web-builder/format/lib/content/card-template";import"../../../render/lib/document/card-templates.js";const A="Flex",v=10;function N(e,n,R,{logoHeightPx:a}={}){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:D(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),_=n("LogoBlock",{...a?{heightPx:a}:{},...e.reverse_logo!=null?{reverse:e.reverse_logo?"auto":"off"}:{}}),i=t=>{const o=n("MenuBlock",{menu:u,direction:"row",...t}),l=F("MenuBlock",o.props);return l===o.props?o:{...o,props:l}},T=y(e.menu_row)==="inline"?32:20,h=t=>n(A,{direction:"row",justify:"end",align:"center",share:"content",wrap:"nowrap",phoneRow:3,gap:T,content:t}),r=Math.min(Math.max(e.menu_split??3,1),4),g=e.logo_position==="center"&&u.items.length>r,d=e.menu_position==="center"?"center":e.menu_position==="beside"?"left":"right",k=!g&&d==="left"?e.menu_gap_px??32:32,S=g?[i({linkAlign:"left",linkRange:{from:1,to:r}}),_,h([i({linkAlign:"right",linkRange:{from:r+1}}),...c])]:[_,i({linkAlign:d}),...c.length?[h(c)]:[]],C=n(A,{direction:"row",justify:"between",align:"center",share:"content",wrap:"nowrap",phoneRow:3,sectionPaddingTop:v,sectionPaddingBottom:v,gap:k,content:S}),f=P(I,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"?{[E.content]:"full"}:{},...x!==null?{sectionAccent:x}:{},...e.nav_text_case?{navTextCase:e.nav_text_case}:{},...B?{menuRow:B}:{}}}}export{N as boxHeaderFromRow};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as l,Fragment as G,jsxs as U}from"react/jsx-runtime";import{assignSectionGroups as k,reseatBucketTabs as E}from"efficient-web-builder/editor/lib/document/field-groups";import{buildBlockCategories as K}from"efficient-web-builder/format/lib/document/section-catalog";import{FONT_ROLES as W,FONT_ROLE_LABELS as j}from"efficient-web-builder/format/lib/fonts";import{CONTAINER_DIRECTION_LABELS as F}from"efficient-web-builder/format/lib/content/container-direction";import{SITE_FOOTER_TYPE as Y,SITE_HEADER_TYPE as q}from"efficient-web-builder/format/lib/document/section-groups";import z from"../../components/MenuLinkRangeField.js";import V from"../../components/EditorPreviewChat.js";import X from"../../components/EditorPreviewSurface.js";import{isSystemPageSlug as Q,POPUP_DAYS_RANGE as O,POPUP_DELAY_RANGE as _,POPUP_HIDE_AFTER as J,POPUP_SCROLL_RANGE as L,POPUP_SHOW_ON as Z,POPUP_TRIGGERS as C,SUBSCRIBE_POPUP_DEFAULTS as $,SUBSCRIBE_POPUP_KIND as ee}from"efficient-web-builder/format/lib/content/subscribe";import{shownForOption as b,withRowRules as oe}from"efficient-web-builder/render/lib/document/show-when";import{POPUP_KIND_PROP as te,POPUP_TEXT_KIND_LABELS as v,POPUP_TEXT_KINDS as re}from"efficient-web-builder/format/lib/popup/text-kinds";import{loadPages as ie}from"efficient-web-builder/editor/components/StorefrontLinkField";import{pagePath as ae}from"../../../render/lib/links/link-rules.js";import{getEditorSiteId as le}from"efficient-web-builder/render/lib/editor-site";import{CART_DRAWER_DEFAULTS as ne,CART_DRAWER_KIND as f}from"efficient-web-builder/format/lib/content/cart-drawer";import{POPUP_PAGE_KIND as R}from"efficient-web-builder/format/lib/popup/look";import{popupLookFields as se}from"./popup-look-fields.js";import{CONSENT_BANNER_KIND as A}from"efficient-web-builder/format/lib/content/consent-banner";import{consentBannerLayoutField as ce}from"../../components/ConsentBannerLayoutTiles.js";import{CategoryIcon as me,CheckIcon as ue,ClockIcon as S,ColumnsIcon as de,DirectionIcon as pe,EyeIcon as ge,ListIcon as Pe,PageIcon as be,PlacementIcon as fe,ScrollPointIcon as Se,TriggerIcon as he}from"efficient-easel/icons";import{deviceField as D}from"efficient-easel/screen/lib/document/device-fields";import{FieldGlyph as Te}from"efficient-web-builder/editor/components/FieldGlyph";import{multiSelect as ye,panelNote as Be,plainText as a,plainTextarea as u,sectionShapeFields as ke,sectionThemeFields as Ee,textList as h,toggle as w}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 I,slider as T}from"efficient-web-builder/editor/lib/document/box-fields";import{blockAlignRow as Fe}from"./block-align-row.js";import{formPicker as Oe}from"./blocks/service/controls.js";import{SECTION_THEME_FOLLOW_LABEL as _e}from"efficient-web-builder/editor/components/SectionThemePicker";import{nestedAccentValue as Le}from"efficient-web-builder/format/lib/content/section-surface";import{isEditorOnDynamicPage as Ce}from"efficient-web-builder/format/lib/document/editor-page-context";import{TEMPLATE_PRODUCT_TYPE_PROP as ve}from"efficient-web-builder/format/lib/content/product-page";import{PRODUCT_KIND_OPTIONS as Re}from"../../../render/lib/catalog/plp-item.js";import{PH as y}from"efficient-web-builder/format/lib/document/blocks/placeholders";import{textKindGlyph as Ae}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"../../../render/lib/document/section-to-box-rows-detail.js";import"./section-text-regions.js";import{generalBlocks as e}from"efficient-web-builder/editor/lib/document/blocks/general/index";import{commerceBlocks as r}from"./blocks/commerce/index.js";import{serviceBlocks as i}from"./blocks/service/index.js";import{EditorThemedBody as De,suppressPreviewNav as we}from"efficient-web-builder/editor/lib/document/page-root";import Ie from"../../components/HeaderSection.js";import{addPageBlocksFromFooter as xe,PAGE_MENU_DIRECTION_DEFAULT as Ne}from"../../../render/lib/document/footer-page-blocks.js";import{drawPopupPage as He,drawPublishedStorefrontRoot as Me,drawSystemPage as Ge,StorefrontPageProviders as Ue}from"../../../render/lib/document/storefront-root.js";import{GENERAL_ROOT_FIELDS as Ke}from"efficient-web-builder/editor/lib/document/page-root-fields";import{finishRegistry as We}from"efficient-web-builder/editor/lib/document/registry";const je="Newsletter (built in)",$o=[{value:"00",label:y.label},{value:"00",label:y.label},{value:"00",label:y.label}],o=$,g={field:"autoOpen",is:!0},Ye={all:[b("hideAfter",J,o.hideAfter,["days"]),{not:{all:[{field:"hideAfter",is:null,default:null},{field:"oncePerSession",in:[!0,!1]}]}}]},qe=[[["trigger","showOn","hideAfter"],g],[["autoOpenDelaySec"],{all:[g,b("trigger",C,o.trigger,["delay","exit"])]}],[["scrollPercent"],{all:[g,b("trigger",C,o.trigger,["scroll"])]}],[["showOnPages"],{all:[g,b("showOn",Z,o.showOn,["chosen"])]}],[["hideDays"],{all:[g,Ye]}]],ze=oe({formSlug:Oe(void 0,je),_gLeft:c("Left panel"),metaLabel:a("Meta label",o.metaLabel),issueLabel:a("Issue label",o.issueLabel),issueNumber:a("Issue number",o.issueNumber),kicker:a("Eyebrow",o.kicker),heading:u("Heading",o.heading),deck:u("Deck",o.deck),stats:{type:"array",label:"Stats",arrayFields:{label:a("Label"),value:a("Value")},getItemSummary:t=>t?.label||t?.value||"Stat"},_gForm:c("Right panel · form"),formLabel:a("Section label",o.formLabel),formHeading:a("Heading",o.formHeading),formIntro:u("Intro",o.formIntro),firstNameLabel:a("First-name label",o.firstNameLabel),firstNamePlaceholder:a("First-name placeholder",o.firstNamePlaceholder),emailLabel:a("Email label",o.emailLabel),emailPlaceholder:a("Email placeholder",o.emailPlaceholder),_gChoices:c("Right panel · choices"),interestsLabel:a("Interests label",o.interestsLabel),interests:h("Interest chips",l(Te,{noun:"tag"}),"Chip label","verbatim"),frequencyLabel:a("Frequency label",o.frequencyLabel),frequencies:h("Frequency options",l(Pe,{}),"Option label","verbatim"),_gActions:c("Right panel · actions"),submitText:a("Submit button",o.submitText),finePrint:a("Fine print",o.finePrint),dismissText:a("Dismiss link",o.dismissText),emailInvalidText:a("Invalid-email error",o.emailInvalidText),submitErrorText:a("Submit-failed error",o.submitErrorText),_gSuccess:c("Success state"),successHeading:a("Heading",o.successHeading),successBody:u("Message",o.successBody),keepBrowsingText:a("Dismiss button",o.keepBrowsingText),...Ee(Le,_e),...ke(),_gTextStyle:c("Text style"),...Object.fromEntries(re.map(t=>[te[t],I(v[t],Ae(v[t]),[{label:"Popup's own",value:""},...W.map(n=>({label:j[n],value:n}))],"")])),_gBehaviour:c("Behavior"),autoOpen:w("Show by itself",o.autoOpen,l(ge,{})),trigger:p("Trigger",l(he,{}),[{label:"Delay",value:"delay"},{label:"Scroll",value:"scroll"},{label:"Exit",value:"exit"}],o.trigger),autoOpenDelaySec:T("Delay",l(S,{}),_.min,_.max,1,o.autoOpenDelaySec,"s"),scrollPercent:T("Scroll",l(Se,{}),L.min,L.max,5,o.scrollPercent,"%"),showOn:p("Pages",l(be,{}),[{label:"All",value:"all"},{label:"Chosen",value:"chosen"}],o.showOn),showOnPages:ye("Chosen pages",[],"None"),hideAfter:p("After close",l(S,{}),[{label:"This visit",value:"visit"},{label:"Days",value:"days"},{label:"Never",value:"never"}],o.hideAfter),hideDays:T("Days",l(S,{}),O.min,O.max,1,o.hideDays),_gArrangement:c("Arrangement"),formSide:p("Form side",l(fe,{}),[{label:"Right",value:"right"},{label:"Left",value:"left"}],o.formSide),_gPhone:D("mobile",c("On a phone")),valuePanelOnPhone:D("mobile",w("Left panel",o.valuePanelOnPhone,l(de,{})))},qe),x=k(ze,"SubscribePopup");async function Ve(){return(await ie(le()??"")).filter(n=>!Q(n.slug)).map(n=>({label:n.label,value:ae(n.slug)}))}async function Xe(){return E({...x,showOnPages:{...x.showOnPages,options:await Ve().catch(()=>[])}})}const m=ne,Qe={_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:h("Trust markers",l(ue,{}),"Marker","verbatim"),_gEmpty:c("Empty basket"),emptyKicker:a("Eyebrow",m.emptyKicker),emptyBody:u("Message",m.emptyBody)},N=(t,n,s)=>E({...t,...k(se(n),s)}),Je=N(Qe,f,"CartDrawer"),Ze={layout:ce,_nConsentWhere:Be("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 $e({kind:t}){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:t===f?"This is the cart drawer — edit its copy in the Settings panel →":t===A?"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:{...Ke},resolveFields:async(t,{fields:n})=>{if(t?.props?.kind===ee)return Xe();if(t?.props?.kind===R)return N(n,R,"PopupPage");if(t?.props?.kind===f)return Je;if(t?.props?.kind===A)return Ze;const s=n;return Ce()?{[ve]:I("Product type",l(me,{}),Re,"alloy-wheel"),...s}:s},render:t=>{const{editor:n,pageBackground:s,theme:d,fonts:H}=t;if(!n?.isEditing)return Me(t);const B=Ge(t,l($e,{kind:t.kind}));if(B)return B;const M=He(t,!0);return l(De,{propsTheme:d,propsFonts:H,pageBackground:typeof s=="string"?s:void 0,suppressPreviewNav:we,overlay:U(G,{children:[l(V,{}),l(X,{})]}),children:M??l(Ue,{rootProps:t,children:t.children})})}},categories:K(),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:r.Collections,CollectionCard:r.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:r.Gallery,GalleryB:r.GalleryB,SpecStrip:e.SpecStrip,GalleryItem:r.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:r.CatalogFilterBar,AlloyWheelsListing:r.AlloyWheelsListing,ProductGrid:r.ProductGrid,ProductHero:r.ProductHero,ProductGallery:r.ProductGallery,SpecTable:r.SpecTable,ProcessSteps:e.ProcessSteps,DetailRows:r.DetailRows,FitmentTable:r.FitmentTable,RelatedProducts:r.RelatedProducts,BundleOffer:r.BundleOffer,CompatibleTyres:r.CompatibleTyres,TyreSizes:r.TyreSizes,TyreFitment:r.TyreFitment,EuTyreLabel:r.EuTyreLabel,EuTyreLabelBlock:r.EuTyreLabelBlock,ProductSize:r.ProductSize,ProductColour:r.ProductColour,ProductPrice:r.ProductPrice,FitmentFinder:r.FitmentFinder,OrderSummary:e.OrderSummary,DeliveryOptions:r.DeliveryOptions,PaymentBadges:e.PaymentBadges,CheckoutCTA:r.CheckoutCTA,ProductRef:r.ProductRef,CustomHTML:e.CustomHTML,Header:r.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:r.SearchBlock,CartBlock:r.CartBlock,CountrySwitchBlock:r.CountrySwitchBlock,AccountBlock:r.AccountBlock,ThemeSwitchBlock:r.ThemeSwitchBlock,[q]:i.SiteHeader,[Y]:i.SiteFooter}};xe(P.components);{const t=P.components.MenuBlock;t.fields={...t.fields,direction:p("Direction",l(pe,{}),[{label:F.column,value:"column"},{label:F.row,value:"row"}],Ne)};const n={type:"custom",render:({value:s,onChange:d})=>l(z,{value:s,onChange:d})};t.fields=Object.fromEntries(Object.entries(t.fields).flatMap(([s,d])=>s==="menu"?[[s,d],["linkRange",n]]:[[s,d]])),t.fields={...t.fields,linkAlign:Fe({label:"Link alignment"})}}{const t=P.components.Header,n=t.render;t.render=s=>s.editor?.isEditing?l(Ie,{editing:!0}):n(s)}const eo=We(P),et=eo.sectionGroupAllow;var ot=P;export{et as SECTION_GROUP_ALLOW,P as config,ot as default,ze as subscribePopupFields};
|
|
1
|
+
import{jsx as l,Fragment as Y,jsxs as j}from"react/jsx-runtime";import{assignSectionGroups as L,reseatBucketTabs as O}from"efficient-web-builder/editor/lib/document/field-groups";import{buildBlockCategories as q}from"efficient-web-builder/format/lib/document/section-catalog";import{FONT_ROLES as z,FONT_ROLE_LABELS as V}from"efficient-web-builder/format/lib/fonts";import{CONTAINER_DIRECTION_LABELS as C}from"efficient-web-builder/format/lib/content/container-direction";import{SITE_FOOTER_TYPE as X,SITE_HEADER_TYPE as Q}from"efficient-web-builder/format/lib/document/section-groups";import J from"../../components/MenuLinkRangeField.js";import Z from"../../components/EditorPreviewChat.js";import $ from"../../components/EditorPreviewSurface.js";import{isSystemPageSlug as ee,POPUP_DAYS_RANGE as R,POPUP_DELAY_RANGE as A,POPUP_HIDE_AFTER as te,POPUP_SCROLL_RANGE as v,POPUP_SHOW_ON as oe,POPUP_TRIGGERS as w,SUBSCRIBE_POPUP_DEFAULTS as re,SUBSCRIBE_POPUP_KIND as ie}from"efficient-web-builder/format/lib/content/subscribe";import{shownForOption as b,withRowRules as ae,withShowWhen as h}from"efficient-web-builder/render/lib/document/show-when";import{POPUP_KIND_PROP as le,POPUP_TEXT_KIND_LABELS as D,POPUP_TEXT_KINDS as ne}from"efficient-web-builder/format/lib/popup/text-kinds";import{loadPages as se}from"efficient-web-builder/editor/components/StorefrontLinkField";import{pagePath as ce}from"../../../render/lib/links/link-rules.js";import{getEditorSiteId as me}from"efficient-web-builder/render/lib/editor-site";import{CART_DRAWER_DEFAULTS as ue,CART_DRAWER_KIND as T}from"efficient-web-builder/format/lib/content/cart-drawer";import{POPUP_PAGE_KIND as I}from"efficient-web-builder/format/lib/popup/look";import{popupLookFields as de}from"./popup-look-fields.js";import{CONSENT_BANNER_KIND as N}from"efficient-web-builder/format/lib/content/consent-banner";import{consentBannerLayoutField as pe}from"../../components/ConsentBannerLayoutTiles.js";import{CategoryIcon as ge,CheckIcon as Pe,ClockIcon as B,ColumnsIcon as fe,DirectionIcon as be,EyeIcon as Se,ListIcon as ye,PageIcon as he,PlacementIcon as Te,ScrollPointIcon as Be,TabsIcon as ke,TriggerIcon as Ee}from"efficient-easel/icons";import{deviceField as x}from"efficient-easel/screen/lib/document/device-fields";import{FieldGlyph as _e}from"efficient-web-builder/editor/components/FieldGlyph";import{DisplayRow as Fe,multiSelect as Le,panelNote as Oe,plainText as a,plainTextarea as p,sectionShapeFields as Ce,sectionThemeFields as Re,textList as k,toggle as H}from"efficient-web-builder/editor/lib/document/controls";import{group as c}from"efficient-easel/screen/lib/document/box-fields";import{segmented as g,select as M,slider as E}from"efficient-web-builder/editor/lib/document/box-fields";import{blockAlignRow as Ae}from"./block-align-row.js";import{formPicker as ve}from"./blocks/service/controls.js";import{SECTION_THEME_FOLLOW_LABEL as we}from"efficient-web-builder/editor/components/SectionThemePicker";import{nestedAccentValue as De}from"efficient-web-builder/format/lib/content/section-surface";import{isEditorOnDynamicPage as Ie}from"efficient-web-builder/format/lib/document/editor-page-context";import{TEMPLATE_PRODUCT_TYPE_PROP as Ne}from"efficient-web-builder/format/lib/content/product-page";import{PRODUCT_KIND_OPTIONS as xe}from"../../../render/lib/catalog/plp-item.js";import{PH as _}from"efficient-web-builder/format/lib/document/blocks/placeholders";import{textKindGlyph as He}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"../../../render/lib/document/section-to-box-rows-detail.js";import"./section-text-regions.js";import{generalBlocks as e}from"efficient-web-builder/editor/lib/document/blocks/general/index";import{commerceBlocks as t}from"./blocks/commerce/index.js";import{serviceBlocks as i}from"./blocks/service/index.js";import{EditorThemedBody as Me,suppressPreviewNav as Ge}from"efficient-web-builder/editor/lib/document/page-root";import Ue from"../../components/HeaderSection.js";import{addPageBlocksFromFooter as Ke,PAGE_MENU_DIRECTION_DEFAULT as F}from"../../../render/lib/document/footer-page-blocks.js";import{MENU_STYLE_PLAIN as G,MENU_STYLE_TABS as U}from"../../../render/components/FooterMenu.js";import{drawPopupPage as We,drawPublishedStorefrontRoot as Ye,drawSystemPage as je,StorefrontPageProviders as qe}from"../../../render/lib/document/storefront-root.js";import{GENERAL_ROOT_FIELDS as ze}from"efficient-web-builder/editor/lib/document/page-root-fields";import{finishRegistry as Ve}from"efficient-web-builder/editor/lib/document/registry";const Xe="Newsletter (built in)",Qe=[{id:"currentPage",label:"Current page"}],ao=[{value:"00",label:_.label},{value:"00",label:_.label},{value:"00",label:_.label}],r=re,P={field:"autoOpen",is:!0},Je={all:[b("hideAfter",te,r.hideAfter,["days"]),{not:{all:[{field:"hideAfter",is:null,default:null},{field:"oncePerSession",in:[!0,!1]}]}}]},Ze=[[["trigger","showOn","hideAfter"],P],[["autoOpenDelaySec"],{all:[P,b("trigger",w,r.trigger,["delay","exit"])]}],[["scrollPercent"],{all:[P,b("trigger",w,r.trigger,["scroll"])]}],[["showOnPages"],{all:[P,b("showOn",oe,r.showOn,["chosen"])]}],[["hideDays"],{all:[P,Je]}]],$e=ae({formSlug:ve(void 0,Xe),_gLeft:c("Left panel"),metaLabel:a("Meta label",r.metaLabel),issueLabel:a("Issue label",r.issueLabel),issueNumber:a("Issue number",r.issueNumber),kicker:a("Eyebrow",r.kicker),heading:p("Heading",r.heading),deck:p("Deck",r.deck),stats:{type:"array",label:"Stats",arrayFields:{label:a("Label"),value:a("Value")},getItemSummary:o=>o?.label||o?.value||"Stat"},_gForm:c("Right panel · form"),formLabel:a("Section label",r.formLabel),formHeading:a("Heading",r.formHeading),formIntro:p("Intro",r.formIntro),firstNameLabel:a("First-name label",r.firstNameLabel),firstNamePlaceholder:a("First-name placeholder",r.firstNamePlaceholder),emailLabel:a("Email label",r.emailLabel),emailPlaceholder:a("Email placeholder",r.emailPlaceholder),_gChoices:c("Right panel · choices"),interestsLabel:a("Interests label",r.interestsLabel),interests:k("Interest chips",l(_e,{noun:"tag"}),"Chip label","verbatim"),frequencyLabel:a("Frequency label",r.frequencyLabel),frequencies:k("Frequency options",l(ye,{}),"Option label","verbatim"),_gActions:c("Right panel · actions"),submitText:a("Submit button",r.submitText),finePrint:a("Fine print",r.finePrint),dismissText:a("Dismiss link",r.dismissText),emailInvalidText:a("Invalid-email error",r.emailInvalidText),submitErrorText:a("Submit-failed error",r.submitErrorText),_gSuccess:c("Success state"),successHeading:a("Heading",r.successHeading),successBody:p("Message",r.successBody),keepBrowsingText:a("Dismiss button",r.keepBrowsingText),...Re(De,we),...Ce(),_gTextStyle:c("Text style"),...Object.fromEntries(ne.map(o=>[le[o],M(D[o],He(D[o]),[{label:"Popup's own",value:""},...z.map(n=>({label:V[n],value:n}))],"")])),_gBehaviour:c("Behavior"),autoOpen:H("Show by itself",r.autoOpen,l(Se,{})),trigger:g("Trigger",l(Ee,{}),[{label:"Delay",value:"delay"},{label:"Scroll",value:"scroll"},{label:"Exit",value:"exit"}],r.trigger),autoOpenDelaySec:E("Delay",l(B,{}),A.min,A.max,1,r.autoOpenDelaySec,"s"),scrollPercent:E("Scroll",l(Be,{}),v.min,v.max,5,r.scrollPercent,"%"),showOn:g("Pages",l(he,{}),[{label:"All",value:"all"},{label:"Chosen",value:"chosen"}],r.showOn),showOnPages:Le("Chosen pages",[],"None"),hideAfter:g("After close",l(B,{}),[{label:"This visit",value:"visit"},{label:"Days",value:"days"},{label:"Never",value:"never"}],r.hideAfter),hideDays:E("Days",l(B,{}),R.min,R.max,1,r.hideDays),_gArrangement:c("Arrangement"),formSide:g("Form side",l(Te,{}),[{label:"Right",value:"right"},{label:"Left",value:"left"}],r.formSide),_gPhone:x("mobile",c("On a phone")),valuePanelOnPhone:x("mobile",H("Left panel",r.valuePanelOnPhone,l(fe,{})))},Ze),K=L($e,"SubscribePopup");async function et(){return(await se(me()??"")).filter(n=>!ee(n.slug)).map(n=>({label:n.label,value:ce(n.slug)}))}async function tt(){return O({...K,showOnPages:{...K.showOnPages,options:await et().catch(()=>[])}})}const u=ue,ot={_gHeader:c("Header"),kickerBadge:a("Eyebrow badge",u.kickerBadge),kickerText:a("Eyebrow text",u.kickerText),titleLead:a("Heading",u.titleLead),titleAccent:a("Heading accent",u.titleAccent),subtitleEmpty:p("Sub-line · empty",u.subtitleEmpty),subtitleOne:p("Sub-line · one set",u.subtitleOne),subtitleMany:p("Sub-line · several sets",u.subtitleMany,"{count} becomes the number of sets"),_gStatus:c("Status rail"),leadTimeValue:a("Lead time",u.leadTimeValue),shipsToFallback:a("Ships to · fallback",u.shipsToFallback,"Shown only while the site serves no countries — otherwise the site's default country is stated"),_gPromises:c("Promise row"),promises:k("Trust markers",l(Pe,{}),"Marker","verbatim"),_gEmpty:c("Empty basket"),emptyKicker:a("Eyebrow",u.emptyKicker),emptyBody:p("Message",u.emptyBody)},W=(o,n,m)=>O({...o,...L(de(n),m)}),rt=W(ot,T,"CartDrawer"),it={layout:pe,_nConsentWhere:Oe("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 at({kind:o}){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:o===T?"This is the cart drawer — edit its copy in the Settings panel →":o===N?"This is the cookie banner — pick its layout in the Settings panel →":"This is the site popup — edit it in the Settings panel →"})}const f={root:{fields:{...ze},resolveFields:async(o,{fields:n})=>{if(o?.props?.kind===ie)return tt();if(o?.props?.kind===I)return W(n,I,"PopupPage");if(o?.props?.kind===T)return rt;if(o?.props?.kind===N)return it;const m=n;return Ie()?{[Ne]:M("Product type",l(ge,{}),xe,"alloy-wheel"),...m}:m},render:o=>{const{editor:n,pageBackground:m,theme:s,fonts:d}=o;if(!n?.isEditing)return Ye(o);const S=je(o,l(at,{kind:o.kind}));if(S)return S;const y=We(o,!0);return l(Me,{propsTheme:s,propsFonts:d,pageBackground:typeof m=="string"?m:void 0,suppressPreviewNav:Ge,overlay:j(Y,{children:[l(Z,{}),l($,{})]}),children:y??l(qe,{rootProps:o,children:o.children})})}},categories:q(),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:t.Collections,CollectionCard:t.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:t.Gallery,GalleryB:t.GalleryB,SpecStrip:e.SpecStrip,GalleryItem:t.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:t.CatalogFilterBar,AlloyWheelsListing:t.AlloyWheelsListing,ProductGrid:t.ProductGrid,ProductHero:t.ProductHero,ProductGallery:t.ProductGallery,SpecTable:t.SpecTable,ProcessSteps:e.ProcessSteps,DetailRows:t.DetailRows,FitmentTable:t.FitmentTable,RelatedProducts:t.RelatedProducts,BundleOffer:t.BundleOffer,CompatibleTyres:t.CompatibleTyres,TyreSizes:t.TyreSizes,TyreFitment:t.TyreFitment,EuTyreLabel:t.EuTyreLabel,EuTyreLabelBlock:t.EuTyreLabelBlock,ProductSize:t.ProductSize,ProductColour:t.ProductColour,ProductPrice:t.ProductPrice,ProductPicture:t.ProductPicture,ProductSpecs:t.ProductSpecs,ProductBuy:t.ProductBuy,ProductEyebrow:t.ProductEyebrow,ProductName:t.ProductName,FitmentFinder:t.FitmentFinder,FitmentPicker:t.FitmentPicker,StockFitment:t.StockFitment,OrderSummary:e.OrderSummary,DeliveryOptions:t.DeliveryOptions,PaymentBadges:e.PaymentBadges,CheckoutCTA:t.CheckoutCTA,ProductRef:t.ProductRef,CustomHTML:e.CustomHTML,CardList:e.CardList,Header:t.Header,Footer:i.Footer,FooterLogo:i.FooterLogo,FooterMenu:i.FooterMenu,ArticleBody:i.ArticleBody,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:t.SearchBlock,CartBlock:t.CartBlock,CountrySwitchBlock:t.CountrySwitchBlock,AccountBlock:t.AccountBlock,ThemeSwitchBlock:t.ThemeSwitchBlock,[Q]:i.SiteHeader,[X]:i.SiteFooter}};Ke(f.components);{const o=f.components.MenuBlock;o.fields={...o.fields,direction:g("Direction",l(be,{}),[{label:C.column,value:"column"},{label:C.row,value:"row"}],F)};const n={type:"custom",render:({value:s,onChange:d})=>l(J,{value:s,onChange:d})},m=h({type:"custom",render:({value:s,onChange:d})=>l(Fe,{parts:Qe,changed:s===!0,shown:()=>s===!0,onPress:(S,y)=>d(y),onReset:()=>d(void 0)})},{not:{field:"direction",is:"column",default:F}});o.fields=Object.fromEntries(Object.entries(o.fields).flatMap(([s,d])=>s==="menu"?[[s,d],["linkRange",n],["currentPage",m]]:[[s,d]])),o.fields={...o.fields,linkAlign:Ae({label:"Link alignment"}),menuStyle:h(g("Menu style",l(ke,{}),[{label:"Plain",value:G},{label:"Tabs",value:U}],G),{not:{field:"direction",is:"column",default:F}})};for(const s of["linkRange","linkAlign"])o.fields[s]=h(o.fields[s],{not:{field:"menuStyle",is:U}})}{const o=f.components.Header,n=o.render;o.render=m=>m.editor?.isEditing?l(Ue,{editing:!0}):n(m)}const lt=Ve(f),lo=lt.sectionGroupAllow;var no=f;export{lo as SECTION_GROUP_ALLOW,f as config,no as default,$e as subscribePopupFields};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{registerSectionTextRegions as r}from"efficient-web-builder/format/lib/sections/section-text-regions";import{PRODUCT_PRICE_TEXT_REGIONS as o}from"../../../render/lib/sections/product-price-text-regions.js";r({ProductPrice:o});
|
|
1
|
+
import{registerSectionTextRegions as r}from"efficient-web-builder/format/lib/sections/section-text-regions";import{PRODUCT_PRICE_TEXT_REGIONS as o}from"../../../render/lib/sections/product-price-text-regions.js";import{PRODUCT_EYEBROW_TEXT_REGIONS as E,PRODUCT_NAME_TEXT_REGIONS as T}from"../../../render/lib/sections/product-card-text-regions.js";r({ProductPrice:o,ProductEyebrow:E,ProductName:T});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{registerBlockSources as
|
|
1
|
+
import{registerBlockSources as p}from"efficient-web-builder/format/lib/content/block-sources";import{cardTemplateFields as u,hasCardTemplate as h}from"efficient-web-builder/format/lib/content/card-template";import{say as e}from"efficient-web-builder/format/lib/editor-words";import{OPENING_SAMPLE_WEEK as f}from"../../render/lib/sections/opening-hours.js";import{PRODUCT_REVIEWS_SOURCE as y}from"../../render/lib/sections/reviews.js";const k=[{key:"group-offices",label:"Group offices",blocks:["Footprint"]},{key:y,label:"Product reviews",blocks:["Reviews"]}];p(k);const c="+00 000 0000",S={rooms:()=>[{key:"sample-1",title:e("First room"),excerpt:e("What this room has.")},{key:"sample-2",title:e("Second room"),excerpt:e("What this room has.")},{key:"sample-3",title:e("Third room"),excerpt:e("What this room has.")}],"location-contact":()=>[{key:"location",name:e("Location name"),address:e("Street address"),state:e("State"),country:e("Country"),phone:c,hours:e("Opening hours")}],"location-cards":()=>[{key:"where",name:e("Address"),note:e("Street address")},{key:"hours",name:e("Opening hours"),note:e("A line about it appears here.")},{key:"call",name:e("Phone"),note:c}],"location-footer":()=>[{text:e("Street address")},{text:c},{text:e("Opening hours")}],"location-rate-table":()=>{const t=o=>JSON.stringify([{column:e("Standard"),amount:"$000",standard:!1},{column:e("VIP"),amount:"$000",standard:o}]);return[{group:e("In-house"),label:e("Session · 60 min"),cells:t(!1)},{group:e("In-house"),label:e("Session · 60 min · Night"),cells:t(!0)},{group:e("Away"),label:e("Session · 60 min"),cells:t(!1)}]},"location-opening":()=>[{week:f,zone:"Australia/Sydney",hours:""}],"site-messaging":()=>[{app:"wechat",name:"WeChat",handle:"yourvenue",href:"",qr:"https://u.wechat.com/yourvenue"},{app:"telegram",name:"Telegram",handle:"@yourvenue",href:"https://t.me/yourvenue",qr:"https://t.me/yourvenue"},{app:"whatsapp",name:"WhatsApp",handle:"0400 000 000",href:"https://wa.me/61400000000",qr:"https://wa.me/61400000000"},{app:"line",name:"LINE",handle:"yourvenue",href:"https://line.me/ti/p/~yourvenue",qr:"https://line.me/ti/p/~yourvenue"}],"location-payment-methods":()=>[{label:e("Cash"),kind:"cash"},{label:e("Card"),kind:"card"}],"shop-payment-methods":()=>[{label:"Visa / Mastercard / American Express",kind:"card"},{label:"PayPal",kind:""},{label:e("Bank transfer"),kind:"wire"}]},m=new Set(["Cards"]),b={name:()=>e("Name"),note:()=>e("Note"),price:()=>e("Price"),time:()=>e("Time")},g=t=>t.replace(/_([a-z0-9])/g,(o,a)=>a.toUpperCase());function E(t){const o=Array.isArray(t.blocks)?t.blocks:[];if(!o.some(n=>m.has(n))||o.some(n=>!m.has(n)&&h(n))||!Array.isArray(t.fields))return;const a=o.filter(n=>m.has(n)).flatMap(n=>u(n)),r=[];for(const n of t.fields){if(typeof n!="string"||!n.trim())continue;const s=g(n.trim());if(s==="key"||r.some(l=>l.key===s))continue;const i=a.find(l=>l.key===s),d=i?.kind==="image"||i?.kind==="link"?i.kind:void 0;r.push({key:s,label:i?.label??b[s]?.()??s,...d?{kind:d}:{}})}return r.length?r:void 0}function P(t){if(Array.isArray(t))for(const o of t){const a=typeof o?.key=="string"?S[o.key]?.():void 0;try{const r=E(o);p([{key:o.key,label:o.label,blocks:o.blocks,...a?{sample:a}:{},...r?{fields:r}:{}}])}catch{}}}export{k as EFFICIENT_BLOCK_SOURCES,P as registerServedBlockSources};
|