efficient-web-builder 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/components/BlogPostSource.js +1 -1
  3. package/dist/components/Breadcrumb.js +1 -1
  4. package/dist/components/Btn.js +1 -1
  5. package/dist/components/CardShadowField.js +1 -1
  6. package/dist/components/CategoryBar.js +1 -1
  7. package/dist/components/ChartSection.js +1 -1
  8. package/dist/components/ChatSettingsPanel.js +1 -1
  9. package/dist/components/ClearColoursDialog.js +1 -1
  10. package/dist/components/ContactLocations.js +5 -5
  11. package/dist/components/CornersField.js +1 -1
  12. package/dist/components/DocBody.js +1 -1
  13. package/dist/components/DuplicateToPageMenu.js +1 -1
  14. package/dist/components/FeaturedCover.js +1 -1
  15. package/dist/components/FieldGlyph.js +1 -1
  16. package/dist/components/Footprint.js +1 -1
  17. package/dist/components/HeadingAudit.js +1 -1
  18. package/dist/components/HeroSection.js +1 -1
  19. package/dist/components/HoverEffectField.js +1 -1
  20. package/dist/components/ImageBlock.js +1 -1
  21. package/dist/components/ImageFocusRow.js +1 -1
  22. package/dist/components/LocationsGroupedField.js +1 -1
  23. package/dist/components/LongRead.js +1 -1
  24. package/dist/components/MediaUploadField.js +1 -1
  25. package/dist/components/MockupSection.js +1 -1
  26. package/dist/components/PagesPanel.js +1 -1
  27. package/dist/components/PartResetDot.js +1 -1
  28. package/dist/components/PartSettingsPanel.js +1 -1
  29. package/dist/components/PostCard.js +1 -1
  30. package/dist/components/ProcessSteps.js +1 -1
  31. package/dist/components/RMark.js +1 -1
  32. package/dist/components/Reel.js +1 -1
  33. package/dist/components/SectionEditor.js +1 -1
  34. package/dist/components/SectionHeader.js +1 -1
  35. package/dist/components/SectionThumbnail.js +1 -1
  36. package/dist/components/SlotChildRows.js +1 -1
  37. package/dist/components/SourceStatus.js +1 -1
  38. package/dist/components/Split.js +1 -1
  39. package/dist/components/StandaloneSectionEditor.js +1 -1
  40. package/dist/components/StylesPanel.js +1 -1
  41. package/dist/components/Testimonials.js +1 -1
  42. package/dist/components/TextStylesField.js +1 -1
  43. package/dist/components/ThemeCard.js +1 -1
  44. package/dist/components/ThemeColourField.js +1 -1
  45. package/dist/components/ThemeField.js +1 -1
  46. package/dist/components/TickerSettingsPanel.js +1 -1
  47. package/dist/components/Timeline.js +1 -1
  48. package/dist/components/TimelineTrack.js +1 -1
  49. package/dist/components/TitleWithButtons.js +1 -1
  50. package/dist/components/WebsiteScreenParts.js +1 -1
  51. package/dist/components/WebsiteSettingsPanel.js +1 -1
  52. package/dist/components/goldPhrases.js +1 -1
  53. package/dist/components/storefront-editor.css +25 -212
  54. package/dist/lib/content/contact.js +3 -3
  55. package/dist/lib/content/subscribe.js +1 -1
  56. package/dist/lib/puck/MarkupToolbar.js +1 -1
  57. package/dist/lib/puck/blocks/general/CategoryBar/fields.js +1 -1
  58. package/dist/lib/puck/blocks/general/Chart/fields.js +1 -1
  59. package/dist/lib/puck/blocks/general/FAQ/render.js +1 -1
  60. package/dist/lib/puck/blocks/general/FeaturedCover/render.js +1 -1
  61. package/dist/lib/puck/blocks/general/Footprint/fields.js +1 -1
  62. package/dist/lib/puck/blocks/general/IntroBleed/render.js +1 -1
  63. package/dist/lib/puck/blocks/general/LogoBlock/fields.js +1 -1
  64. package/dist/lib/puck/blocks/general/LongRead/render.js +1 -1
  65. package/dist/lib/puck/blocks/general/Masthead/render.js +1 -1
  66. package/dist/lib/puck/blocks/general/Mockup/fields.js +1 -1
  67. package/dist/lib/puck/blocks/general/OrderSummary/render.js +1 -1
  68. package/dist/lib/puck/blocks/general/ParagraphsA/render.js +1 -1
  69. package/dist/lib/puck/blocks/general/PostCard/render.js +1 -1
  70. package/dist/lib/puck/blocks/general/ProcessSteps/render.js +1 -1
  71. package/dist/lib/puck/blocks/general/Series/render.js +1 -1
  72. package/dist/lib/puck/blocks/general/Split/render.js +1 -1
  73. package/dist/lib/puck/blocks/general/Testimonials/fields.js +1 -1
  74. package/dist/lib/puck/blocks/general/Testimonials/render.js +1 -1
  75. package/dist/lib/puck/blocks/general/TimelineTrack/render.js +1 -1
  76. package/dist/lib/puck/blocks/placeholders.js +1 -1
  77. package/dist/lib/puck/controls.js +1 -1
  78. package/dist/lib/puck/field-groups.js +1 -1
  79. package/dist/lib/puck/footer-block-row-name.js +1 -1
  80. package/dist/lib/puck/geocode-resolve.js +1 -1
  81. package/dist/lib/puck/locations-tree.js +2 -2
  82. package/dist/lib/puck/neutralization-contracts.js +1 -1
  83. package/dist/lib/puck/part-rows.js +1 -1
  84. package/dist/lib/puck/section-catalog.js +1 -1
  85. package/dist/lib/puck/section-descriptions.js +1 -1
  86. package/dist/lib/sections/divider-style.js +1 -1
  87. package/dist/lib/sections/product-card-style.js +1 -1
  88. package/dist/lib/sections/ticker-style.js +1 -1
  89. package/dist/lib/source-rules/accent-token-name.js +2 -2
  90. package/dist/lib/source-rules/button-corners.js +1 -1
  91. package/dist/lib/source-rules/editor-chrome-note.js +2 -2
  92. package/dist/lib/source-rules/editor-context-menu.js +2 -2
  93. package/dist/lib/source-rules/editor-puck-drag-off.js +2 -2
  94. package/dist/lib/source-rules/efficient-easel-version.js +1 -1
  95. package/dist/lib/source-rules/every-button-follows-the-button-colour.js +4 -4
  96. package/dist/lib/source-rules/flat-theme-palette.js +2 -2
  97. package/dist/lib/source-rules/full-width-means-full.js +1 -1
  98. package/dist/lib/source-rules/heading-ceiling-sweep.js +3 -3
  99. package/dist/lib/source-rules/label-hints.js +4 -4
  100. package/dist/lib/source-rules/label-vocabulary.js +4 -4
  101. package/dist/lib/source-rules/mirrored-rows-agree.js +4 -4
  102. package/dist/lib/source-rules/no-comment-in-jsx.js +2 -2
  103. package/dist/lib/source-rules/no-glyph-rows.js +2 -2
  104. package/dist/lib/source-rules/one-colour-control.js +2 -2
  105. package/dist/lib/source-rules/one-dropdown.js +2 -2
  106. package/dist/lib/source-rules/one-editable-list.js +3 -3
  107. package/dist/lib/source-rules/one-editor-list.js +1 -1
  108. package/dist/lib/source-rules/one-right-click.js +2 -2
  109. package/dist/lib/source-rules/one-switch.js +1 -1
  110. package/dist/lib/source-rules/one-up-level-link.js +7 -7
  111. package/dist/lib/source-rules/panel-colour-tokens.js +7 -7
  112. package/dist/lib/source-rules/panel-no-divider-lines.js +5 -5
  113. package/dist/lib/source-rules/panel-one-arrow.js +1 -1
  114. package/dist/lib/source-rules/panel-one-hover.js +2 -2
  115. package/dist/lib/source-rules/panel-rows-use-the-shared-row.js +5 -5
  116. package/dist/lib/source-rules/part-slider-fills-row.js +8 -8
  117. package/dist/lib/source-rules/part-style-naming.js +1 -1
  118. package/dist/lib/source-rules/puck-document-surfaces.js +6 -6
  119. package/dist/lib/source-rules/reduced-motion.js +2 -2
  120. package/dist/lib/source-rules/route-content-width.js +2 -2
  121. package/dist/lib/source-rules/rule.js +1 -1
  122. package/dist/lib/source-rules/section-theme-preview.js +2 -2
  123. package/dist/lib/source-rules/site-square-by-default.js +1 -1
  124. package/dist/lib/source-rules/site-width.js +2 -2
  125. package/dist/lib/source-rules/size-token-paints.js +2 -2
  126. package/dist/lib/source-rules/social-icons-import.js +1 -1
  127. package/dist/lib/source-rules/source-status-is-shared.js +1 -1
  128. package/dist/lib/source-rules/style-face-matches-size.js +3 -3
  129. package/dist/lib/source-rules/support/part-slider-call-sites.js +4 -4
  130. package/dist/lib/source-rules/support/registry-source.js +1 -1
  131. package/dist/lib/source-rules/theme-mode-controls-gone.js +3 -3
  132. package/dist/lib/source-rules/upload-intake-guard.js +2 -2
  133. package/dist/lib/source-rules/word-styles.js +2 -2
  134. package/package.json +5 -5
@@ -1 +1 @@
1
- import{jsx as u}from"react/jsx-runtime";import d from"../../../../../components/FAQ.js";import{readPartStyles as a}from"../../../part-styles.js";import{hidableText as l}from"../../../hidable.js";import{parseSectionHeadPlacement as m}from"../../../../sections/section-head-placement.js";import{PH as f}from"../../placeholders.js";import{phRows as c,phHide as n}from"../../scaffold.js";const i={num:f.sectionNumber,title:"Frequently *asked.*",link:"View all questions"},h=[{question:"Your first question goes here?",answer:"Add your answer here \u2014 a sentence or two is plenty."},{question:"Your second question goes here?",answer:"Add your answer here. Keep it clear and concise so it stays easy to scan."},{question:"Your third question goes here?",answer:"Add your answer here."},{question:"Your fourth question goes here?",answer:"Add your answer here."},{question:"Your fifth question goes here?",answer:"Add your answer here."}],F={label:"Q&A",defaultProps:{num:"",title:"",linkText:"",linkHref:"/faq",defaultOpen:!0,items:[]},render:e=>{const r=m(e.headPlacement)==="own-box",t=s=>r?void 0:s,o=n(e.linkText,i.link,e.puck);return u(d,{num:t(n(e.num,i.num,e.puck)),title:t(n(e.title,i.title,e.puck)),link:t(o?{text:o,href:l(e.linkHref)||"/faq"}:void 0),omitHead:r,nodeId:typeof e.id=="string"?e.id:void 0,partStyles:a(e),items:c(e.items,h,e.puck),defaultOpen:e.defaultOpen,editing:e.puck?.isEditing})}};export{F as FAQRender,i as FAQ_PH};
1
+ import{jsx as u}from"react/jsx-runtime";import d from"../../../../../components/FAQ.js";import{readPartStyles as a}from"../../../part-styles.js";import{hidableText as l}from"../../../hidable.js";import{parseSectionHeadPlacement as m}from"../../../../sections/section-head-placement.js";import{PH as f}from"../../placeholders.js";import{phRows as c,phHide as n}from"../../scaffold.js";const i={num:f.sectionNumber,title:"Frequently *asked.*",link:"View all questions"},h=[{question:"Your first question goes here?",answer:"Add your answer here — a sentence or two is plenty."},{question:"Your second question goes here?",answer:"Add your answer here. Keep it clear and concise so it stays easy to scan."},{question:"Your third question goes here?",answer:"Add your answer here."},{question:"Your fourth question goes here?",answer:"Add your answer here."},{question:"Your fifth question goes here?",answer:"Add your answer here."}],F={label:"Q&A",defaultProps:{num:"",title:"",linkText:"",linkHref:"/faq",defaultOpen:!0,items:[]},render:e=>{const r=m(e.headPlacement)==="own-box",t=s=>r?void 0:s,o=n(e.linkText,i.link,e.puck);return u(d,{num:t(n(e.num,i.num,e.puck)),title:t(n(e.title,i.title,e.puck)),link:t(o?{text:o,href:l(e.linkHref)||"/faq"}:void 0),omitHead:r,nodeId:typeof e.id=="string"?e.id:void 0,partStyles:a(e),items:c(e.items,h,e.puck),defaultOpen:e.defaultOpen,editing:e.puck?.isEditing})}};export{F as FAQRender,i as FAQ_PH};
@@ -1 +1 @@
1
- import{jsx as y}from"react/jsx-runtime";import H from"../../../../../components/FeaturedCover.js";import{hidableText as T}from"../../../hidable.js";import{CTA_PH as D,PH as o}from"../../placeholders.js";import{phHide as t}from"../../scaffold.js";const a={badge:"Featured",imageDate:o.date,category:o.category,readLabel:"0 min read",date:o.date,title:"Add a *headline* for this story.",dek:"A short summary of the featured article \u2014 one or two sentences that draw the reader in.",ctaText:"Read the story",ctaHref:D.href},P={label:"Featured cover",defaultProps:{source:null,image:"",badge:"",imageDate:"",category:"",readLabel:"",date:"",title:"",dek:"",ctaText:"",ctaHref:""},render:({source:i,image:m,badge:l,imageDate:s,category:g,readLabel:n,date:f,title:c,dek:h,ctaText:b,ctaHref:x,puck:e})=>{const r=i,d=!!r?.slug;return y(H,{image:d?r.image:m,badge:t(l,a.badge,e),imageDate:d?r.date:t(s,a.imageDate,e),category:t(g,a.category,e),readLabel:t(n,a.readLabel,e),date:d?r.date:t(f,a.date,e),title:d?r.title:t(c,a.title,e),dek:d?r.dek:t(h,a.dek,e),ctaText:t(b,a.ctaText,e),ctaHref:d?r.href:T(x)})}};export{a as FEATUREDCOVER_PH,P as FeaturedCoverRender};
1
+ import{jsx as y}from"react/jsx-runtime";import H from"../../../../../components/FeaturedCover.js";import{hidableText as T}from"../../../hidable.js";import{CTA_PH as D,PH as o}from"../../placeholders.js";import{phHide as t}from"../../scaffold.js";const a={badge:"Featured",imageDate:o.date,category:o.category,readLabel:"0 min read",date:o.date,title:"Add a *headline* for this story.",dek:"A short summary of the featured article — one or two sentences that draw the reader in.",ctaText:"Read the story",ctaHref:D.href},P={label:"Featured cover",defaultProps:{source:null,image:"",badge:"",imageDate:"",category:"",readLabel:"",date:"",title:"",dek:"",ctaText:"",ctaHref:""},render:({source:i,image:m,badge:l,imageDate:s,category:g,readLabel:n,date:f,title:c,dek:h,ctaText:b,ctaHref:x,puck:e})=>{const r=i,d=!!r?.slug;return y(H,{image:d?r.image:m,badge:t(l,a.badge,e),imageDate:d?r.date:t(s,a.imageDate,e),category:t(g,a.category,e),readLabel:t(n,a.readLabel,e),date:d?r.date:t(f,a.date,e),title:d?r.title:t(c,a.title,e),dek:d?r.dek:t(h,a.dek,e),ctaText:t(b,a.ctaText,e),ctaHref:d?r.href:T(x)})}};export{a as FEATUREDCOVER_PH,P as FeaturedCoverRender};
@@ -1 +1 @@
1
- import{jsx as a}from"react/jsx-runtime";import{FOOTPRINT_DEFAULTS as m}from"../../../../content/footprint.js";import{HeadquartersIcon as p,ThemeIcon as f}from"efficient-easel/icons";import{CoordsField as u,copyText as g,group as l,plainText as t,section as y,segmented as F,sourceField as h,text as T,textarea as n,toggle as S}from"../../../controls.js";import{needsGeocodeWork as O,resolveGeocodeRows as b}from"../../../geocode-resolve.js";import{SPLITTABLE_SECTIONS as I,headFieldsForPlacement as _,widthFieldsForParent as P}from"../../../../sections/section-head-placement.js";import{innerSpacingFields as v,WIDTH_ROW_KEYS as x}from"../../shared-fields.js";import{FOOTPRINT_PH as s}from"./render.js";const L={fields:{_gContent:l("Section"),sectionNumber:T("Section number",s.sectionNumber),heading:n("Heading",s.heading),tagline:n("Body",s.tagline),_gOffices:l("Offices"),offices:{type:"array",label:"Offices",arrayFields:{role:t("Role"),city:t("City"),country:t("Region \xB7 country"),address:g("Address"),group:t("Group"),hq:S("HQ",!1,a(p,{})),geocode:h(u,{label:"Coordinates"})},defaultItemProps:{role:"Sales & Distribution",city:"City",country:"Country",address:"",group:"",hq:!1,lat:0,lng:0},getItemSummary:e=>e?.city||"Office"},mapTheme:F("Map theme",a(f,{}),[{label:"Auto",value:"auto"},{label:"Dark",value:"dark"},{label:"Light",value:"light"}],m.mapTheme),_sStyle:y("Style"),...v("Footprint")},resolveData:async e=>{const o=e.props,r=o.offices??[];if(!O(r))return e;const c=await b(r,i=>[i.address,i.city,i.country].map(d=>String(d??"").replace(/\*/g,"").trim()).filter(Boolean).join(", "));return{...e,props:{...o,offices:c}}},resolveFields:(e,{fields:o,parent:r})=>_(P(o,r,x),e.props.headPlacement,I.Footprint.headRows)};export{L as FootprintFields};
1
+ import{jsx as a}from"react/jsx-runtime";import{FOOTPRINT_DEFAULTS as m}from"../../../../content/footprint.js";import{HeadquartersIcon as p,ThemeIcon as f}from"efficient-easel/icons";import{CoordsField as u,copyText as g,group as l,plainText as t,section as y,segmented as F,sourceField as h,text as T,textarea as n,toggle as S}from"../../../controls.js";import{needsGeocodeWork as O,resolveGeocodeRows as b}from"../../../geocode-resolve.js";import{SPLITTABLE_SECTIONS as I,headFieldsForPlacement as _,widthFieldsForParent as P}from"../../../../sections/section-head-placement.js";import{innerSpacingFields as v,WIDTH_ROW_KEYS as x}from"../../shared-fields.js";import{FOOTPRINT_PH as s}from"./render.js";const L={fields:{_gContent:l("Section"),sectionNumber:T("Section number",s.sectionNumber),heading:n("Heading",s.heading),tagline:n("Body",s.tagline),_gOffices:l("Offices"),offices:{type:"array",label:"Offices",arrayFields:{role:t("Role"),city:t("City"),country:t("Region · country"),address:g("Address"),group:t("Group"),hq:S("HQ",!1,a(p,{})),geocode:h(u,{label:"Coordinates"})},defaultItemProps:{role:"Sales & Distribution",city:"City",country:"Country",address:"",group:"",hq:!1,lat:0,lng:0},getItemSummary:e=>e?.city||"Office"},mapTheme:F("Map theme",a(f,{}),[{label:"Auto",value:"auto"},{label:"Dark",value:"dark"},{label:"Light",value:"light"}],m.mapTheme),_sStyle:y("Style"),...v("Footprint")},resolveData:async e=>{const o=e.props,r=o.offices??[];if(!O(r))return e;const c=await b(r,i=>[i.address,i.city,i.country].map(d=>String(d??"").replace(/\*/g,"").trim()).filter(Boolean).join(", "));return{...e,props:{...o,offices:c}}},resolveFields:(e,{fields:o,parent:r})=>_(P(o,r,x),e.props.headPlacement,I.Footprint.headRows)};export{L as FootprintFields};
@@ -1,2 +1,2 @@
1
- import{jsx as l}from"react/jsx-runtime";import{PAGE_WIDTH as a,centredCap as b}from"../../../../content/page-width.js";import{TYPE_SIZE_INHERIT as t}from"../../../../content/section-type-size.js";import r from"../../../../../components/IntroBleed.js";import{hidableText as d}from"../../../hidable.js";import{parseIntroBleedLayout as n}from"../../../../sections/intro-bleed-layout.js";import{phHide as o,ctaHide as c}from"../../scaffold.js";const i={eyebrow:"\u2014 Label",title:`Section headline
1
+ import{jsx as l}from"react/jsx-runtime";import{PAGE_WIDTH as a,centredCap as b}from"../../../../content/page-width.js";import{TYPE_SIZE_INHERIT as t}from"../../../../content/section-type-size.js";import r from"../../../../../components/IntroBleed.js";import{hidableText as d}from"../../../hidable.js";import{parseIntroBleedLayout as n}from"../../../../sections/intro-bleed-layout.js";import{phHide as o,ctaHide as c}from"../../scaffold.js";const i={eyebrow:"— Label",title:`Section headline
2
2
  *Highlight line*`,body:"A sentence or two of supporting copy."};function y(e){if(e===!1)return b(`var(--sf-page-width, ${a.default}px)`)}const M={label:"Scroll-Over Text",defaultProps:{eyebrow:"",title:"",body:"",imageSrc:"",imageSrcMobile:"",heightDesktop:100,heightMobile:100,overlay:60,titleSizeDesktop:t,bodySizeDesktop:t,titleSizeMobile:t,bodySizeMobile:t,ctaText:"",ctaHref:"",buttonColor:"",buttonTextColor:"",sticky:!0,uppercase:!1,fullWidth:!0},render:e=>l(r,{eyebrow:o(e.eyebrow,i.eyebrow,e.puck),title:o(e.title,i.title,e.puck),body:o(e.body,i.body,e.puck),imageLabel:d(e.title)||i.title,imageSrc:e.imageSrc||void 0,imageSrcMobile:e.imageSrcMobile||void 0,cta:c(e.ctaText,e.ctaHref,e.puck),sticky:e.sticky,layout:n(e.layout),copyShareDesktop:e.copyShareDesktop,copyShareMobile:e.copyShareMobile,heightDesktop:e.heightDesktop,heightMobile:e.heightMobile,overlay:e.overlay,titleSizeDesktop:e.titleSizeDesktop,bodySizeDesktop:e.bodySizeDesktop,titleSizeMobile:e.titleSizeMobile,bodySizeMobile:e.bodySizeMobile,buttonColor:e.buttonColor||void 0,buttonTextColor:e.buttonTextColor||void 0,uppercase:e.uppercase,capStyle:y(e.fullWidth)})};export{i as INTRO_PH,M as IntroBleedRender};
@@ -1 +1 @@
1
- import{jsx as r}from"react/jsx-runtime";import{FOOTER_LOGO_PX as l,HEADER_LOGO_PX_MAX as i,HEADER_LOGO_PX_MIN as a}from"../../../../../components/Logo.js";import{HeightIcon as s}from"efficient-easel/icons";import{linkField as p,plainText as n,slider as c,upload as d}from"../../../controls.js";const O={fields:{src:d("Logo image","image/*"),alt:n("Alt text","Brand name","Read out in place of the picture, and shown if it can\u2019t load."),href:p("Link"),heightPx:c("Height",r(s,{}),a,i,1,l,"px"),reverse:{type:"select",label:"Logo color",options:[{label:"Auto contrast",value:"auto"},{label:"As uploaded",value:"off"}]}},resolveFields:(t,{fields:o})=>{if((t.props.src??"").trim())return o;const e={...o};return delete e.alt,e}};export{O as LogoBlockFields};
1
+ import{jsx as r}from"react/jsx-runtime";import{FOOTER_LOGO_PX as l,HEADER_LOGO_PX_MAX as i,HEADER_LOGO_PX_MIN as a}from"../../../../../components/Logo.js";import{HeightIcon as s}from"efficient-easel/icons";import{linkField as p,plainText as n,slider as c,upload as d}from"../../../controls.js";const O={fields:{src:d("Logo image","image/*"),alt:n("Alt text","Brand name","Read out in place of the picture, and shown if it can’t load."),href:p("Link"),heightPx:c("Height",r(s,{}),a,i,1,l,"px"),reverse:{type:"select",label:"Logo color",options:[{label:"Auto contrast",value:"auto"},{label:"As uploaded",value:"off"}]}},resolveFields:(t,{fields:o})=>{if((t.props.src??"").trim())return o;const e={...o};return delete e.alt,e}};export{O as LogoBlockFields};
@@ -1 +1 @@
1
- import{jsx as D}from"react/jsx-runtime";import M from"../../../../../components/LongRead.js";import{hidableText as _}from"../../../hidable.js";import{parseSectionHeadPlacement as j}from"../../../../sections/section-head-placement.js";import{CTA_PH as w,PH as o}from"../../placeholders.js";import{phHide as t}from"../../scaffold.js";const a={headNum:o.sectionNumber,headTitle:o.headingAccent,headDesc:o.body,category:o.category,metaMiddle:"Section",readLabel:"0 min read",title:"Article *headline* goes here.",dek:"A short summary of the article goes here.",quote:"A short pull quote.",quoteAttribution:"\u2014 "+o.date,ctaText:"Begin reading",ctaHref:w.href,imageLabel:"Featured *image*",metaPublished:o.date,metaReads:"0 min"},O={label:"Long read",defaultProps:{source:null,headNum:"",headTitle:"",headDesc:"",category:"",metaMiddle:"",readLabel:"",title:"",dek:"",quote:"",quoteAttribution:"",ctaText:"",ctaHref:"",image:"",imageLabel:"",metaPublished:"",metaReads:""},render:({source:l,headNum:n,headTitle:s,headDesc:h,category:g,metaMiddle:b,readLabel:u,title:c,dek:f,quote:L,quoteAttribution:x,ctaText:A,ctaHref:T,image:q,imageLabel:H,metaPublished:P,metaReads:R,headPlacement:y,puck:e})=>{const m=j(y)==="own-box",r=N=>m?void 0:N,d=l,i=!!d?.slug;return D(M,{headNum:r(t(n,a.headNum,e)),headTitle:r(t(s,a.headTitle,e)),headDesc:r(t(h,a.headDesc,e)),omitHead:m,category:t(g,a.category,e),metaMiddle:t(b,a.metaMiddle,e),readLabel:t(u,a.readLabel,e),title:i?d.title:t(c,a.title,e),dek:i?d.dek:t(f,a.dek,e),quote:t(L,a.quote,e),quoteAttribution:t(x,a.quoteAttribution,e),ctaText:t(A,a.ctaText,e),ctaHref:i?d.href:_(T),image:i?d.image:q,imageLabel:t(H,a.imageLabel,e),metaPublished:i?d.date:t(P,a.metaPublished,e),metaReads:t(R,a.metaReads,e)})}};export{a as LONGREAD_PH,O as LongReadRender};
1
+ import{jsx as D}from"react/jsx-runtime";import M from"../../../../../components/LongRead.js";import{hidableText as _}from"../../../hidable.js";import{parseSectionHeadPlacement as j}from"../../../../sections/section-head-placement.js";import{CTA_PH as w,PH as o}from"../../placeholders.js";import{phHide as t}from"../../scaffold.js";const a={headNum:o.sectionNumber,headTitle:o.headingAccent,headDesc:o.body,category:o.category,metaMiddle:"Section",readLabel:"0 min read",title:"Article *headline* goes here.",dek:"A short summary of the article goes here.",quote:"A short pull quote.",quoteAttribution:"— "+o.date,ctaText:"Begin reading",ctaHref:w.href,imageLabel:"Featured *image*",metaPublished:o.date,metaReads:"0 min"},O={label:"Long read",defaultProps:{source:null,headNum:"",headTitle:"",headDesc:"",category:"",metaMiddle:"",readLabel:"",title:"",dek:"",quote:"",quoteAttribution:"",ctaText:"",ctaHref:"",image:"",imageLabel:"",metaPublished:"",metaReads:""},render:({source:l,headNum:n,headTitle:s,headDesc:h,category:g,metaMiddle:b,readLabel:u,title:c,dek:f,quote:L,quoteAttribution:x,ctaText:A,ctaHref:T,image:q,imageLabel:H,metaPublished:P,metaReads:R,headPlacement:y,puck:e})=>{const m=j(y)==="own-box",r=N=>m?void 0:N,d=l,i=!!d?.slug;return D(M,{headNum:r(t(n,a.headNum,e)),headTitle:r(t(s,a.headTitle,e)),headDesc:r(t(h,a.headDesc,e)),omitHead:m,category:t(g,a.category,e),metaMiddle:t(b,a.metaMiddle,e),readLabel:t(u,a.readLabel,e),title:i?d.title:t(c,a.title,e),dek:i?d.dek:t(f,a.dek,e),quote:t(L,a.quote,e),quoteAttribution:t(x,a.quoteAttribution,e),ctaText:t(A,a.ctaText,e),ctaHref:i?d.href:_(T),image:i?d.image:q,imageLabel:t(H,a.imageLabel,e),metaPublished:i?d.date:t(P,a.metaPublished,e),metaReads:t(R,a.metaReads,e)})}};export{a as LONGREAD_PH,O as LongReadRender};
@@ -1 +1 @@
1
- import{jsx as u}from"react/jsx-runtime";import A from"../../../../../components/Masthead.js";import{PH as H}from"../../placeholders.js";import{phRows as i,phHide as s}from"../../scaffold.js";const t={eyebrow:H.eyebrow,lead:"A short lead paragraph introducing this section \u2014 a sentence or two about its theme.",issueHeading:"In this issue",issueTotal:"\u2014 Articles in total"},h=[{lead:"Volume",rest:"No. 1"},{lead:"Season",rest:"Year"},{lead:"Frequency",rest:""}],m=[{text:"Article headline"},{text:"Feature story"},{text:"Interview"},{text:"Field notes"}],M={label:"Issue Header",defaultProps:{eyebrow:"",issueMeta:[],lead:"",issueHeading:"",issueList:[],issueTotal:""},render:({eyebrow:o,issueMeta:a,lead:r,issueHeading:d,issueList:n,issueTotal:l,puck:e})=>u(A,{eyebrow:s(o,t.eyebrow,e),issueMeta:i(a,h,e),lead:s(r,t.lead,e),issueHeading:s(d,t.issueHeading,e),issueList:i(n,m,e),issueTotal:s(l,t.issueTotal,e),editing:e?.isEditing})};export{t as MASTHEAD_PH,M as MastheadRender};
1
+ import{jsx as u}from"react/jsx-runtime";import A from"../../../../../components/Masthead.js";import{PH as H}from"../../placeholders.js";import{phRows as i,phHide as s}from"../../scaffold.js";const t={eyebrow:H.eyebrow,lead:"A short lead paragraph introducing this section — a sentence or two about its theme.",issueHeading:"In this issue",issueTotal:"— Articles in total"},h=[{lead:"Volume",rest:"No. 1"},{lead:"Season",rest:"Year"},{lead:"Frequency",rest:""}],m=[{text:"Article headline"},{text:"Feature story"},{text:"Interview"},{text:"Field notes"}],M={label:"Issue Header",defaultProps:{eyebrow:"",issueMeta:[],lead:"",issueHeading:"",issueList:[],issueTotal:""},render:({eyebrow:o,issueMeta:a,lead:r,issueHeading:d,issueList:n,issueTotal:l,puck:e})=>u(A,{eyebrow:s(o,t.eyebrow,e),issueMeta:i(a,h,e),lead:s(r,t.lead,e),issueHeading:s(d,t.issueHeading,e),issueList:i(n,m,e),issueTotal:s(l,t.issueTotal,e),editing:e?.isEditing})};export{t as MASTHEAD_PH,M as MastheadRender};
@@ -1,2 +1,2 @@
1
1
  import{jsx as t}from"react/jsx-runtime";import{BlockColumnIcon as i,PlacementIcon as c,StateIcon as d,TemplateIcon as b,TextLinesIcon as m}from"efficient-easel/icons";import{group as r,plainText as a,select as n,text as l,textarea as u,textList as o}from"../../../controls.js";import{cullMockupFields as p,MOCKUP_DEFAULT_VARIANT as y,MOCKUP_VARIANT_OPTIONS as f}from"../../../mockup-variant-fields.js";const T={fields:{_gContent:r("Content"),eyebrow:l("Chip label","In the product"),title:u("Heading",`Seen from
2
- *the counter.*`),body:u("Body",""),_gCard:r("Mockup card"),variant:n("Card type",t(b,{}),f,y),cardHeader:l("Card header strip","Product record"),badge:l("Header badge","LIVE"),cardTitle:l("Card title",""),cardSubtitle:l("Card subtitle",""),pills:{type:"array",label:"Selector pills",arrayFields:{label:a("Label"),value:a("Value")},defaultItemProps:{label:"",value:""},getItemSummary:e=>[e?.label,e?.value].filter(Boolean).join(" ")||"Pill"},tiles:{type:"array",label:"Spec tiles",arrayFields:{label:a("Label"),value:a("Value")},defaultItemProps:{label:"",value:""},getItemSummary:e=>[e?.label,e?.value].filter(Boolean).join(" ")||"Tile"},rows:{type:"array",label:"Result / order rows",arrayFields:{lead:a("Lead"),detail:a("Detail"),state:n("State",t(d,{}),[{label:"Match / done (green)",value:"ok"},{label:"In progress (accent)",value:"warn"},{label:"No match (gray \u2715)",value:"no"}],"ok"),status:a("Status chip")},defaultItemProps:{lead:"",detail:"",state:"ok",status:""},getItemSummary:e=>[e?.lead,e?.detail].filter(Boolean).join(" \xB7 ")||"Row"},button:l("Accent button",""),footnote:l("Accent footnote",""),_gKanban:r("Kanban columns"),col1Title:l("Column 1 title",""),col1Cards:o("Column 1 cards",t(i,{}),"Job card label","verbatim"),col2Title:l("Column 2 title",""),col2Cards:o("Column 2 cards",t(i,{}),"Job card label","verbatim"),col3Title:l("Column 3 title",""),col3Cards:o("Column 3 cards",t(i,{}),"Job card label","verbatim"),col4Title:l("Column 4 title",""),col4Cards:o("Column 4 cards",t(i,{}),"Job card label","verbatim"),_gClaims:r("Claims bars"),barsHeading:l("Bars heading","Defect rate by product"),bars:{type:"array",label:"Bars",arrayFields:{label:a("Label"),value:a("Value")},defaultItemProps:{label:"",value:""},getItemSummary:e=>[e?.label,e?.value].filter(Boolean).join(" \xB7 ")||"Bar"},_gTerminal:r("Terminal"),termLines:o("Terminal lines",t(m,{}),"$ efficient \u2026","verbatim"),_gBrowser:r("Browser mock"),urlText:l("URL pill",""),heroTitle:l("Hero line",""),heroButton:l("Hero button",""),products:{type:"array",label:"Product tiles",arrayFields:{name:a("Name"),price:a("Price")},defaultItemProps:{name:"",price:""},getItemSummary:e=>[e?.name,e?.price].filter(Boolean).join(" \xB7 ")||"Tile"},_gStyle:r("Style"),align:n("Mockup position",t(c,{}),[{label:"Right of the copy",value:"right"},{label:"Left of the copy",value:"left"}],"right")},resolveFields:(e,{fields:s})=>p(s,e.props.variant)};export{T as MockupFields};
2
+ *the counter.*`),body:u("Body",""),_gCard:r("Mockup card"),variant:n("Card type",t(b,{}),f,y),cardHeader:l("Card header strip","Product record"),badge:l("Header badge","LIVE"),cardTitle:l("Card title",""),cardSubtitle:l("Card subtitle",""),pills:{type:"array",label:"Selector pills",arrayFields:{label:a("Label"),value:a("Value")},defaultItemProps:{label:"",value:""},getItemSummary:e=>[e?.label,e?.value].filter(Boolean).join(" ")||"Pill"},tiles:{type:"array",label:"Spec tiles",arrayFields:{label:a("Label"),value:a("Value")},defaultItemProps:{label:"",value:""},getItemSummary:e=>[e?.label,e?.value].filter(Boolean).join(" ")||"Tile"},rows:{type:"array",label:"Result / order rows",arrayFields:{lead:a("Lead"),detail:a("Detail"),state:n("State",t(d,{}),[{label:"Match / done (green)",value:"ok"},{label:"In progress (accent)",value:"warn"},{label:"No match (gray ✕)",value:"no"}],"ok"),status:a("Status chip")},defaultItemProps:{lead:"",detail:"",state:"ok",status:""},getItemSummary:e=>[e?.lead,e?.detail].filter(Boolean).join(" · ")||"Row"},button:l("Accent button",""),footnote:l("Accent footnote",""),_gKanban:r("Kanban columns"),col1Title:l("Column 1 title",""),col1Cards:o("Column 1 cards",t(i,{}),"Job card label","verbatim"),col2Title:l("Column 2 title",""),col2Cards:o("Column 2 cards",t(i,{}),"Job card label","verbatim"),col3Title:l("Column 3 title",""),col3Cards:o("Column 3 cards",t(i,{}),"Job card label","verbatim"),col4Title:l("Column 4 title",""),col4Cards:o("Column 4 cards",t(i,{}),"Job card label","verbatim"),_gClaims:r("Claims bars"),barsHeading:l("Bars heading","Defect rate by product"),bars:{type:"array",label:"Bars",arrayFields:{label:a("Label"),value:a("Value")},defaultItemProps:{label:"",value:""},getItemSummary:e=>[e?.label,e?.value].filter(Boolean).join(" · ")||"Bar"},_gTerminal:r("Terminal"),termLines:o("Terminal lines",t(m,{}),"$ efficient …","verbatim"),_gBrowser:r("Browser mock"),urlText:l("URL pill",""),heroTitle:l("Hero line",""),heroButton:l("Hero button",""),products:{type:"array",label:"Product tiles",arrayFields:{name:a("Name"),price:a("Price")},defaultItemProps:{name:"",price:""},getItemSummary:e=>[e?.name,e?.price].filter(Boolean).join(" · ")||"Tile"},_gStyle:r("Style"),align:n("Mockup position",t(c,{}),[{label:"Right of the copy",value:"right"},{label:"Left of the copy",value:"left"}],"right")},resolveFields:(e,{fields:s})=>p(s,e.props.variant)};export{T as MockupFields};
@@ -1 +1 @@
1
- import{jsx as d}from"react/jsx-runtime";import S from"../../../../../components/OrderSummary.js";import{PH as u}from"../../placeholders.js";import{phRows as o,phHide as e}from"../../scaffold.js";const r={title:"Order summary",note:"A short reassurance note under the total."},O=[{label:"Product name",meta:"Finish \xB7 Size \xB7 \xD71",amount:"$0,000"},{label:"Second item",meta:"Detail line",amount:"$000"}],_=[{label:"Subtotal",amount:"$0,000"},{label:"Delivery",amount:"$00"}],M={label:"Order Table",defaultProps:{eyebrow:"",title:"",rows:[],subRows:[],totalLabel:"",totalAmount:"",note:"",contained:!0},render:({eyebrow:a,title:l,rows:n,subRows:m,totalLabel:s,totalAmount:i,note:R,contained:b,puck:t})=>d(S,{eyebrow:e(a,u.eyebrow,t),title:e(l,r.title,t),rows:o(n,O,t),subRows:o(m,_,t),totalLabel:e(s,"Total",t),totalAmount:e(i,"$0,000",t),note:e(R,r.note,t),contained:b})};export{r as ORDER_SUMMARY_PH,M as OrderSummaryRender};
1
+ import{jsx as d}from"react/jsx-runtime";import S from"../../../../../components/OrderSummary.js";import{PH as u}from"../../placeholders.js";import{phRows as o,phHide as e}from"../../scaffold.js";const r={title:"Order summary",note:"A short reassurance note under the total."},O=[{label:"Product name",meta:"Finish · Size · ×1",amount:"$0,000"},{label:"Second item",meta:"Detail line",amount:"$000"}],_=[{label:"Subtotal",amount:"$0,000"},{label:"Delivery",amount:"$00"}],M={label:"Order Table",defaultProps:{eyebrow:"",title:"",rows:[],subRows:[],totalLabel:"",totalAmount:"",note:"",contained:!0},render:({eyebrow:a,title:l,rows:n,subRows:m,totalLabel:s,totalAmount:i,note:R,contained:b,puck:t})=>d(S,{eyebrow:e(a,u.eyebrow,t),title:e(l,r.title,t),rows:o(n,O,t),subRows:o(m,_,t),totalLabel:e(s,"Total",t),totalAmount:e(i,"$0,000",t),note:e(R,r.note,t),contained:b})};export{r as ORDER_SUMMARY_PH,M as OrderSummaryRender};
@@ -1 +1 @@
1
- import{jsx as y}from"react/jsx-runtime";import b from"../../../../../components/ParagraphsA.js";import{PH as t}from"../../placeholders.js";import{phHide as e}from"../../scaffold.js";const r={eyebrow:t.eyebrow,lead:"Introduce your company in a paragraph or two.",foundersHeading:"Add a short heading.",foundersBody:"Add a short statement here \u2014 a sentence or two is plenty.",attribution:"\u2014 Name, Year"},H={label:"Lead Text",defaultProps:{eyebrow:"",lead:"",stats:[],foundersHeading:"",foundersBody:"",attribution:"",padTop:60,padBottom:80},render:({eyebrow:a,lead:d,stats:n,foundersHeading:s,foundersBody:i,attribution:p,padTop:f,padBottom:m,puck:o})=>y(b,{eyebrow:e(a,r.eyebrow,o),lead:e(d,t.body,o),stats:n,foundersHeading:e(s,r.foundersHeading,o),foundersBody:e(i,r.foundersBody,o),attribution:e(p,r.attribution,o),padTop:f,padBottom:m})};export{r as PARAGRAPHS_A_PH,H as ParagraphsARender};
1
+ import{jsx as y}from"react/jsx-runtime";import b from"../../../../../components/ParagraphsA.js";import{PH as t}from"../../placeholders.js";import{phHide as e}from"../../scaffold.js";const r={eyebrow:t.eyebrow,lead:"Introduce your company in a paragraph or two.",foundersHeading:"Add a short heading.",foundersBody:"Add a short statement here — a sentence or two is plenty.",attribution:"— Name, Year"},H={label:"Lead Text",defaultProps:{eyebrow:"",lead:"",stats:[],foundersHeading:"",foundersBody:"",attribution:"",padTop:60,padBottom:80},render:({eyebrow:a,lead:d,stats:n,foundersHeading:s,foundersBody:i,attribution:p,padTop:f,padBottom:m,puck:o})=>y(b,{eyebrow:e(a,r.eyebrow,o),lead:e(d,t.body,o),stats:n,foundersHeading:e(s,r.foundersHeading,o),foundersBody:e(i,r.foundersBody,o),attribution:e(p,r.attribution,o),padTop:f,padBottom:m})};export{r as PARAGRAPHS_A_PH,H as ParagraphsARender};
@@ -1 +1 @@
1
- import{jsx as n}from"react/jsx-runtime";import{BOX_DARKEN_STYLES as i}from"../../../../content/box-background.js";import o,{POST_CARD_HEIGHT as c,POST_CARD_LAYOUT_FALLBACK as m}from"../../../../../components/PostCard.js";import{hidableText as u}from"../../../hidable.js";import{PH as l}from"../../placeholders.js";import{phHide as d}from"../../scaffold.js";const r={title:"Add a *headline* for this post.",excerpt:"A short summary of the post \u2014 one or two sentences.",category:l.category,date:l.date,readLabel:"0 min read"},b={label:"Post Card",defaultProps:{source:null,image:"",title:"",excerpt:"",href:"",category:"",date:"",readLabel:"",layout:m,showCover:!0,placement:"bottom-left",darken:55,darkenStyle:i[0].value,minHeight:c.fallback},render:e=>{const t=e.source,a=!!t?.slug;return n(o,{post:{slug:a?t.slug:"post-card",title:(a?t.title:d(e.title,r.title,e.puck))||"",excerpt:(a?t.dek:d(e.excerpt,r.excerpt,e.puck))||"",cover:(a?t.image:e.image)||"",meta:d(e.category,r.category,e.puck)||void 0,dateLabel:(a?t.date:d(e.date,r.date,e.puck))||void 0,read:d(e.readLabel,r.readLabel,e.puck)||void 0},href:(a?t.href:u(e.href))||void 0,layout:e.layout,showCover:e.showCover,placement:e.placement,darken:e.darken,darkenStyle:e.darkenStyle,minHeight:e.minHeight,scaffold:!!e.puck?.isEditing&&!a})}};export{r as POSTCARD_PH,b as PostCardRender};
1
+ import{jsx as n}from"react/jsx-runtime";import{BOX_DARKEN_STYLES as i}from"../../../../content/box-background.js";import o,{POST_CARD_HEIGHT as c,POST_CARD_LAYOUT_FALLBACK as m}from"../../../../../components/PostCard.js";import{hidableText as u}from"../../../hidable.js";import{PH as l}from"../../placeholders.js";import{phHide as d}from"../../scaffold.js";const r={title:"Add a *headline* for this post.",excerpt:"A short summary of the post — one or two sentences.",category:l.category,date:l.date,readLabel:"0 min read"},b={label:"Post Card",defaultProps:{source:null,image:"",title:"",excerpt:"",href:"",category:"",date:"",readLabel:"",layout:m,showCover:!0,placement:"bottom-left",darken:55,darkenStyle:i[0].value,minHeight:c.fallback},render:e=>{const t=e.source,a=!!t?.slug;return n(o,{post:{slug:a?t.slug:"post-card",title:(a?t.title:d(e.title,r.title,e.puck))||"",excerpt:(a?t.dek:d(e.excerpt,r.excerpt,e.puck))||"",cover:(a?t.image:e.image)||"",meta:d(e.category,r.category,e.puck)||void 0,dateLabel:(a?t.date:d(e.date,r.date,e.puck))||void 0,read:d(e.readLabel,r.readLabel,e.puck)||void 0},href:(a?t.href:u(e.href))||void 0,layout:e.layout,showCover:e.showCover,placement:e.placement,darken:e.darken,darkenStyle:e.darkenStyle,minHeight:e.minHeight,scaffold:!!e.puck?.isEditing&&!a})}};export{r as POSTCARD_PH,b as PostCardRender};
@@ -1 +1 @@
1
- import{jsx as c}from"react/jsx-runtime";import u from"../../../../../components/ProcessSteps.js";import{parseSectionHeadPlacement as b}from"../../../../sections/section-head-placement.js";import{PH as e}from"../../placeholders.js";import{phRows as m,phHide as o,ctaHide as s}from"../../scaffold.js";const i={num:e.sectionNumber,title:e.headingAccent,description:e.body,cta:e.viewAll},d=[{image:"",tag:"A \xB7 Step",meta:"Short detail line",title:"Step *one*",copy:"Describe this step in a sentence or two.",specs:[{label:e.label,value:e.value},{label:e.label,value:e.value},{label:e.label,value:e.value},{label:e.label,value:e.value}]},{image:"",tag:"B \xB7 Step",meta:"Short detail line",title:"Step *two*",copy:"Describe this step in a sentence or two.",specs:[{label:e.label,value:e.value},{label:e.label,value:e.value},{label:e.label,value:e.value},{label:e.label,value:e.value}]},{image:"",tag:"C \xB7 Step",meta:"Short detail line",title:"Step *three*",copy:"Describe this step in a sentence or two.",specs:[{label:e.label,value:e.value},{label:e.label,value:e.value},{label:e.label,value:e.value},{label:e.label,value:e.value}]}],r={boxes:{type:"slot"}},g={label:"Image & Text Columns",fields:r,defaultProps:{num:"",title:"",description:"",columns:3,padTop:120,padBottom:120},render:t=>{const l=b(t.headPlacement)==="own-box",a=n=>l?void 0:n;return c(u,{num:a(o(t.num,i.num,t.puck)),title:a(o(t.title,i.title,t.puck)),description:a(o(t.description,e.body,t.puck)),omitHead:l,boxes:t.boxes,steps:m(t.steps,d,t.puck),columns:typeof t.columns=="number"?t.columns:3,cta:s(t.ctaText,t.ctaHref),padTop:l?0:typeof t.padTop=="number"?t.padTop:120,padBottom:typeof t.padBottom=="number"?t.padBottom:120,cardImage:t.cardImage,cardText:t.cardText,editing:t.puck?.isEditing})}};export{i as PROCESS_PH,g as ProcessStepsRender,r as ProcessStepsSlots};
1
+ import{jsx as c}from"react/jsx-runtime";import u from"../../../../../components/ProcessSteps.js";import{parseSectionHeadPlacement as b}from"../../../../sections/section-head-placement.js";import{PH as e}from"../../placeholders.js";import{phRows as m,phHide as o,ctaHide as s}from"../../scaffold.js";const i={num:e.sectionNumber,title:e.headingAccent,description:e.body,cta:e.viewAll},d=[{image:"",tag:"A · Step",meta:"Short detail line",title:"Step *one*",copy:"Describe this step in a sentence or two.",specs:[{label:e.label,value:e.value},{label:e.label,value:e.value},{label:e.label,value:e.value},{label:e.label,value:e.value}]},{image:"",tag:"B · Step",meta:"Short detail line",title:"Step *two*",copy:"Describe this step in a sentence or two.",specs:[{label:e.label,value:e.value},{label:e.label,value:e.value},{label:e.label,value:e.value},{label:e.label,value:e.value}]},{image:"",tag:"C · Step",meta:"Short detail line",title:"Step *three*",copy:"Describe this step in a sentence or two.",specs:[{label:e.label,value:e.value},{label:e.label,value:e.value},{label:e.label,value:e.value},{label:e.label,value:e.value}]}],r={boxes:{type:"slot"}},g={label:"Image & Text Columns",fields:r,defaultProps:{num:"",title:"",description:"",columns:3,padTop:120,padBottom:120},render:t=>{const l=b(t.headPlacement)==="own-box",a=n=>l?void 0:n;return c(u,{num:a(o(t.num,i.num,t.puck)),title:a(o(t.title,i.title,t.puck)),description:a(o(t.description,e.body,t.puck)),omitHead:l,boxes:t.boxes,steps:m(t.steps,d,t.puck),columns:typeof t.columns=="number"?t.columns:3,cta:s(t.ctaText,t.ctaHref),padTop:l?0:typeof t.padTop=="number"?t.padTop:120,padBottom:typeof t.padBottom=="number"?t.padBottom:120,cardImage:t.cardImage,cardText:t.cardText,editing:t.puck?.isEditing})}};export{i as PROCESS_PH,g as ProcessStepsRender,r as ProcessStepsSlots};
@@ -1 +1 @@
1
- import{jsx as b}from"react/jsx-runtime";import f from"../../../../../components/Series.js";import{resolveSectionBackground as p}from"../../../../content/section-background.js";import{parseSectionHeadPlacement as S}from"../../../../sections/section-head-placement.js";import{PH as n}from"../../placeholders.js";import{phRows as g,phHide as r}from"../../scaffold.js";import{SECTION_BG_BUILT_IN as L}from"../section-bg-built-in.js";const i={headNum:n.sectionNumber,headTitle:n.headingAccent,headDesc:n.body,viewLabel:"View series \u2192"},w=[{num:"01",since:"Year",title:"Column *title.*",desc:"A short description of this recurring column.",entries:"0",entriesLabel:"entries"},{num:"02",since:"Year",title:"Column *title.*",desc:"A short description of this recurring column.",entries:"0",entriesLabel:"entries"},{num:"03",since:"Year",title:"Column *title.*",desc:"A short description of this recurring column.",entries:"0",entriesLabel:"entries"}],R={label:"Recurring Columns",defaultProps:{headNum:"",headTitle:"",headDesc:"",cards:[],viewLabel:"",background:"transparent"},render:({headNum:s,headTitle:a,headDesc:d,cards:c,viewLabel:m,background:l,headPlacement:h,puck:e})=>{const o=S(h)==="own-box",t=u=>o?void 0:u;return b(f,{headNum:t(r(s,i.headNum,e)),headTitle:t(r(a,i.headTitle,e)),headDesc:t(r(d,i.headDesc,e)),omitHead:o,cards:g(c,w,e),viewLabel:r(m,i.viewLabel,e),background:p(l,L.Series),editing:e?.isEditing})}};export{i as SERIES_PH,R as SeriesRender};
1
+ import{jsx as b}from"react/jsx-runtime";import f from"../../../../../components/Series.js";import{resolveSectionBackground as p}from"../../../../content/section-background.js";import{parseSectionHeadPlacement as S}from"../../../../sections/section-head-placement.js";import{PH as n}from"../../placeholders.js";import{phRows as g,phHide as r}from"../../scaffold.js";import{SECTION_BG_BUILT_IN as L}from"../section-bg-built-in.js";const i={headNum:n.sectionNumber,headTitle:n.headingAccent,headDesc:n.body,viewLabel:"View series →"},w=[{num:"01",since:"Year",title:"Column *title.*",desc:"A short description of this recurring column.",entries:"0",entriesLabel:"entries"},{num:"02",since:"Year",title:"Column *title.*",desc:"A short description of this recurring column.",entries:"0",entriesLabel:"entries"},{num:"03",since:"Year",title:"Column *title.*",desc:"A short description of this recurring column.",entries:"0",entriesLabel:"entries"}],R={label:"Recurring Columns",defaultProps:{headNum:"",headTitle:"",headDesc:"",cards:[],viewLabel:"",background:"transparent"},render:({headNum:s,headTitle:a,headDesc:d,cards:c,viewLabel:m,background:l,headPlacement:h,puck:e})=>{const o=S(h)==="own-box",t=u=>o?void 0:u;return b(f,{headNum:t(r(s,i.headNum,e)),headTitle:t(r(a,i.headTitle,e)),headDesc:t(r(d,i.headDesc,e)),omitHead:o,cards:g(c,w,e),viewLabel:r(m,i.viewLabel,e),background:p(l,L.Series),editing:e?.isEditing})}};export{i as SERIES_PH,R as SeriesRender};
@@ -1,2 +1,2 @@
1
- import{jsx as l}from"react/jsx-runtime";import c from"../../../../../components/Split.js";import{hidableText as g}from"../../../hidable.js";import{phHide as t,ctaHide as d}from"../../scaffold.js";const i={eyebrow:"\u2014 Label",title:`Section headline *here.*
1
+ import{jsx as l}from"react/jsx-runtime";import c from"../../../../../components/Split.js";import{hidableText as g}from"../../../hidable.js";import{phHide as t,ctaHide as d}from"../../scaffold.js";const i={eyebrow:"— Label",title:`Section headline *here.*
2
2
  *Highlight line*`,body:"Describe this section in a sentence or two."},m={text:"Learn more"};function x(e,n,r){const a=t(e,m.text,r);if(a!==void 0)return{text:a,href:n||"#"}}const y={label:"Image & Text Split",defaultProps:{eyebrow:"",title:"",body:"",imageSrc:"",reverse:!1,uppercase:!1,textAlign:"left",ctaText:"",ctaHref:"",imageBtnText:"",imageBtnHref:"",textBgSrc:"",overlay:60},render:e=>l(c,{eyebrow:t(e.eyebrow,i.eyebrow,e.puck),title:t(e.title,i.title,e.puck),body:t(e.body,i.body,e.puck),imageLabel:g(e.title)||i.title,imageSrc:e.imageSrc||void 0,reverse:e.reverse,uppercase:e.uppercase,textAlign:e.textAlign,cta:d(e.ctaText,e.ctaHref,e.puck),imageButton:x(e.imageBtnText,e.imageBtnHref,e.puck),textBgSrc:e.textBgSrc||void 0,textBgTint:(typeof e.overlay=="number"?e.overlay:60)/100,grayscale:e.grayscale})};export{m as IMGBTN_PH,i as SPLIT_PH,y as SplitRender};
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import{ColumnsIcon as a,StylesIcon as i}from"efficient-easel/icons";import{group as t,plainText as r,plainTextarea as n,select as p,slider as d,text as y,textarea as T}from"../../../controls.js";import{SPLITTABLE_SECTIONS as u,headFieldsForPlacement as S,widthFieldsForParent as I}from"../../../../sections/section-head-placement.js";import{SECTION_EYEBROW_LOOK_OPTIONS as f,eyebrowLookFor as _}from"../../../../sections/section-eyebrow-look.js";import{WIDTH_ROW_KEYS as E}from"../../shared-fields.js";import{TESTIMONIALS_PH as l}from"./render.js";const C={fields:{_gContent:t("Content"),eyebrow:y("Eyebrow",l.eyebrow),eyebrowLook:p("Eyebrow style",o(i,{}),[...f],_("Testimonials")),title:T("Heading",l.title),items:{type:"array",label:"Quotes",arrayFields:{quote:n("Quote"),name:r("Name"),role:r("Role \xB7 location")},defaultItemProps:{quote:"",name:"",role:""},getItemSummary:e=>e?.name||e?.quote||"Quote"},_gStyle:t("Style"),columns:d("Columns",o(a,{}),1,3,1,3)},resolveFields:(e,{fields:m,parent:s})=>S(I(m,s,E),e.props.headPlacement,u.Testimonials.headRows)};export{C as TestimonialsFields};
1
+ import{jsx as o}from"react/jsx-runtime";import{ColumnsIcon as a,StylesIcon as i}from"efficient-easel/icons";import{group as t,plainText as r,plainTextarea as n,select as p,slider as d,text as y,textarea as T}from"../../../controls.js";import{SPLITTABLE_SECTIONS as u,headFieldsForPlacement as S,widthFieldsForParent as I}from"../../../../sections/section-head-placement.js";import{SECTION_EYEBROW_LOOK_OPTIONS as f,eyebrowLookFor as _}from"../../../../sections/section-eyebrow-look.js";import{WIDTH_ROW_KEYS as E}from"../../shared-fields.js";import{TESTIMONIALS_PH as l}from"./render.js";const C={fields:{_gContent:t("Content"),eyebrow:y("Eyebrow",l.eyebrow),eyebrowLook:p("Eyebrow style",o(i,{}),[...f],_("Testimonials")),title:T("Heading",l.title),items:{type:"array",label:"Quotes",arrayFields:{quote:n("Quote"),name:r("Name"),role:r("Role · location")},defaultItemProps:{quote:"",name:"",role:""},getItemSummary:e=>e?.name||e?.quote||"Quote"},_gStyle:t("Style"),columns:d("Columns",o(a,{}),1,3,1,3)},resolveFields:(e,{fields:m,parent:s})=>S(I(m,s,E),e.props.headPlacement,u.Testimonials.headRows)};export{C as TestimonialsFields};
@@ -1 +1 @@
1
- import{jsx as m}from"react/jsx-runtime";import a from"../../../../../components/Testimonials.js";import{parseSectionHeadPlacement as s}from"../../../../sections/section-head-placement.js";import{parseSectionEyebrowLook as l}from"../../../../sections/section-eyebrow-look.js";import{phRows as c,phHide as i}from"../../scaffold.js";const n={eyebrow:"Feedback",title:"What people *say.*"},u=[{quote:"A short customer quote goes here \u2014 replace it with a real testimonial from your customers.",name:"Customer name",role:"Role \xB7 Location"},{quote:"A second customer quote \u2014 what they loved, in a sentence or two.",name:"Customer name",role:"Role \xB7 Location"},{quote:"A third short quote to round out the row.",name:"Customer name",role:"Role \xB7 Location"}],T={label:"Testimonials",defaultProps:{eyebrow:"",title:"",items:[],columns:3},render:e=>{const o=s(e.headPlacement)==="own-box",t=r=>o?void 0:r;return m(a,{look:l(e.eyebrowLook,"Testimonials"),eyebrow:t(i(e.eyebrow,n.eyebrow,e.puck)),title:t(i(e.title,n.title,e.puck)),omitHead:o,items:c(e.items,u,e.puck),columns:e.columns,editing:e.puck?.isEditing})}};export{n as TESTIMONIALS_PH,T as TestimonialsRender};
1
+ import{jsx as m}from"react/jsx-runtime";import a from"../../../../../components/Testimonials.js";import{parseSectionHeadPlacement as s}from"../../../../sections/section-head-placement.js";import{parseSectionEyebrowLook as l}from"../../../../sections/section-eyebrow-look.js";import{phRows as c,phHide as i}from"../../scaffold.js";const n={eyebrow:"Feedback",title:"What people *say.*"},u=[{quote:"A short customer quote goes here — replace it with a real testimonial from your customers.",name:"Customer name",role:"Role · Location"},{quote:"A second customer quote — what they loved, in a sentence or two.",name:"Customer name",role:"Role · Location"},{quote:"A third short quote to round out the row.",name:"Customer name",role:"Role · Location"}],T={label:"Testimonials",defaultProps:{eyebrow:"",title:"",items:[],columns:3},render:e=>{const o=s(e.headPlacement)==="own-box",t=r=>o?void 0:r;return m(a,{look:l(e.eyebrowLook,"Testimonials"),eyebrow:t(i(e.eyebrow,n.eyebrow,e.puck)),title:t(i(e.title,n.title,e.puck)),omitHead:o,items:c(e.items,u,e.puck),columns:e.columns,editing:e.puck?.isEditing})}};export{n as TESTIMONIALS_PH,T as TestimonialsRender};
@@ -1 +1 @@
1
- import{jsx as l}from"react/jsx-runtime";import c from"../../../../../components/TimelineTrack.js";import{SECTION_BG_INHERIT as m,resolveSectionBackground as u}from"../../../../content/section-background.js";import{parseSectionHeadPlacement as d}from"../../../../sections/section-head-placement.js";import{CTA_PH as b,PH as i}from"../../placeholders.js";import{phRows as T,phHide as n,ctaHide as f}from"../../scaffold.js";import{SECTION_BG_BUILT_IN as s}from"../section-bg-built-in.js";const r={eyebrow:i.eyebrow,title:i.headingAccent,intro:i.body,cta:b.text},k=[{date:"Year",title:"Milestone",blurb:"A short line about this milestone.",future:!1},{date:"Year",title:"Milestone",blurb:"A short line about this milestone.",future:!1},{date:"Year",title:"Milestone",blurb:"A short line about this milestone.",future:!1},{date:"Year \u2192",title:"Upcoming",blurb:"A milestone still to come.",future:!0}],y={label:"Milestone Timeline",defaultProps:{eyebrow:"",title:"",intro:"",entries:[],ctaText:"",ctaHref:"",background:m,padTop:120,padBottom:120},render:e=>{const t=d(e.headPlacement)==="own-box",o=a=>t?void 0:a;return l(c,{eyebrow:o(n(e.eyebrow,r.eyebrow,e.puck)),title:o(n(e.title,r.title,e.puck)),intro:o(n(e.intro,r.intro,e.puck)),omitHead:t,entries:T(e.entries,k,e.puck),cta:f(e.ctaText,e.ctaHref,e.puck),background:u(e.background,s.TimelineTrack),padTop:t?0:typeof e.padTop=="number"?e.padTop:120,padBottom:typeof e.padBottom=="number"?e.padBottom:120,editing:e.puck?.isEditing})}};export{r as TIMELINE_TRACK_PH,y as TimelineTrackRender};
1
+ import{jsx as l}from"react/jsx-runtime";import c from"../../../../../components/TimelineTrack.js";import{SECTION_BG_INHERIT as m,resolveSectionBackground as u}from"../../../../content/section-background.js";import{parseSectionHeadPlacement as d}from"../../../../sections/section-head-placement.js";import{CTA_PH as b,PH as i}from"../../placeholders.js";import{phRows as T,phHide as n,ctaHide as f}from"../../scaffold.js";import{SECTION_BG_BUILT_IN as s}from"../section-bg-built-in.js";const r={eyebrow:i.eyebrow,title:i.headingAccent,intro:i.body,cta:b.text},k=[{date:"Year",title:"Milestone",blurb:"A short line about this milestone.",future:!1},{date:"Year",title:"Milestone",blurb:"A short line about this milestone.",future:!1},{date:"Year",title:"Milestone",blurb:"A short line about this milestone.",future:!1},{date:"Year →",title:"Upcoming",blurb:"A milestone still to come.",future:!0}],y={label:"Milestone Timeline",defaultProps:{eyebrow:"",title:"",intro:"",entries:[],ctaText:"",ctaHref:"",background:m,padTop:120,padBottom:120},render:e=>{const t=d(e.headPlacement)==="own-box",o=a=>t?void 0:a;return l(c,{eyebrow:o(n(e.eyebrow,r.eyebrow,e.puck)),title:o(n(e.title,r.title,e.puck)),intro:o(n(e.intro,r.intro,e.puck)),omitHead:t,entries:T(e.entries,k,e.puck),cta:f(e.ctaText,e.ctaHref,e.puck),background:u(e.background,s.TimelineTrack),padTop:t?0:typeof e.padTop=="number"?e.padTop:120,padBottom:typeof e.padBottom=="number"?e.padBottom:120,editing:e.puck?.isEditing})}};export{r as TIMELINE_TRACK_PH,y as TimelineTrackRender};
@@ -1 +1 @@
1
- const e={text:"Button label",href:"#"},n={eyebrow:"Eyebrow",heading:"Main heading",accent:"Highlight line",body:"Add a sentence or two of supporting copy.",button:"Button label",link:"#",sectionHeading:"Section heading",slideName:"Slide name",boxName:"Box name",headingAccent:"Section heading *here.*",sectionNumber:"Section number",imageCaption:"Image caption",bookingConfirmation:"Thanks \u2014 we'll email you to confirm.",imageMeta:"Image meta",label:"Label",value:"Value",viewAll:"View all",date:"Month DD, YYYY",category:"Category"};export{e as CTA_PH,n as PH};
1
+ const e={text:"Button label",href:"#"},n={eyebrow:"Eyebrow",heading:"Main heading",accent:"Highlight line",body:"Add a sentence or two of supporting copy.",button:"Button label",link:"#",sectionHeading:"Section heading",slideName:"Slide name",boxName:"Box name",headingAccent:"Section heading *here.*",sectionNumber:"Section number",imageCaption:"Image caption",bookingConfirmation:"Thanks — we'll email you to confirm.",imageMeta:"Image meta",label:"Label",value:"Value",viewAll:"View all",date:"Month DD, YYYY",category:"Category"};export{e as CTA_PH,n as PH};
@@ -1 +1 @@
1
- "use client";import{jsx as r,jsxs as S,Fragment as I}from"react/jsx-runtime";import{cloneElement as qe,useId as Je,useRef as j,useState as q}from"react";import{useEasel as O}from"efficient-easel/easel";import{readHidable as ue,hidableText as de}from"./hidable.js";import{FOCAL_DEFAULT as pe}from"../image-focus.js";import{FOLD_FIELD_MARKER as J,LINK_FIELD_MARKER as fe,MEDIA_FIELD_MARKER as me,SCAFFOLD_FIELD_MARKER as he,TEXT_FIELD_MARKER as T,foldMetaOf as Z,textFieldIdentifier as Ze}from"./field-markers.js";import Qe from"../../components/ApplyCornersToSiblings.js";import{CARD_IMAGE_RADIUS_STEP as et,CORNER_RADIUS_MAX as W,CORNER_RADIUS_MIN as H}from"../content/card-image-shape.js";import{IMAGE_CORNER_STEP as tt,IMAGE_CORNERS_LABEL as nt}from"../content/image-corners.js";import{GRID_MAX_COLUMNS as ot}from"../content/grid-span.js";import{GALLERY_ACROSS_BUCKETS as rt,GALLERY_LAYOUTS as A,GALLERY_LAYOUT_KEYS as ge}from"../content/gallery-layout.js";import{anchorSiblingsOf as it,HERO_GROUP_PLACEMENTS as lt,HERO_GROUP_PLACEMENT_DEFAULT as at,normalisePlacement as st,placementPoints as be}from"../hero-group-placement.js";import ct from"../../components/KeepHint.js";import{AlignLeftIcon as ut,AlignSeparateIcon as dt,AnimationIcon as xe,BackgroundIcon as pt,BlockSectionIcon as ft,CartIcon as mt,ColumnWidthsIcon as Ce,ColumnsIcon as ht,CornerIcon as Se,DirectionDownIcon as gt,DirectionLeftIcon as bt,DirectionRightIcon as xt,DirectionUpIcon as Ct,DollarIcon as St,FinishIcon as _t,GapIcon as _e,GridIcon as It,GroundIcon as yt,HashIcon as Ie,ImageIcon as Et,LayoutIcon as Tt,ListIcon as Rt,LocationIcon as Q,PaddingBottomIcon as vt,PaddingLeftIcon as Lt,PaddingRightIcon as Nt,PaddingTopIcon as Ot,PageIcon as ye,PhoneIcon as At,PlacementIcon as Ft,ProductSizeIcon as Pt,RotateIcon as wt,SquareIcon as kt,StylesIcon as Dt,TextLinesIcon as Bt,TypeIcon as Ht,WidthIcon as Mt,WrapIcon as Gt}from"efficient-easel/icons";import{FieldGlyph as Ee}from"../../components/FieldGlyph.js";import{resolvePageBackground as $t}from"../content/page-background.js";import{CORNER_SIDES as F,CORNER_SIDE_POINTS as ee,CORNER_SIDES_LABEL as P,cornerSidesSummary as Te,hasOwnSectionCorners as Wt,normalizeCornerSides as U}from"../content/section-corners.js";import{hasOwnCardCorners as Ut}from"../content/card-corners.js";import{SECTION_MOTION_NONE as Kt,SECTION_MOTION_OPTIONS as Xt}from"../content/section-animation.js";import{enclosingSectionProps as Re}from"./enclosing-section.js";import{SettingsCorners as ve,SettingsDefaultReset as g,SettingsField as m,SettingsGroupHead as Vt,SettingsGroupSub as zt,SettingsPlacement as Yt,SettingsSegmented as jt,SettingsSwitch as qt}from"efficient-easel/panel";import{FieldSelect as Jt,ListField as Zt}from"efficient-easel/fields";import{ColourControl as Le}from"./ColourControl.js";import Ne from"./MarkupToolbar.js";import{deviceField as R}from"./device-fields.js";import{noControlField as Qt}from"./panel-no-control-mark.js";import{phoneKey as K,resolvePhoneValue as te}from"./phone-override.js";import{SuppressibleText as en}from"./section-text-suppress.js";import{TYPED_NUMBER_COMMIT as tn,typedNumberKey as Oe}from"./slider-typing.js";import{CARD_INDEX_OPTIONS as nn,CARD_OUTLINE_OPTIONS as on,DEFAULT_CARD_INDEX_FORMAT as rn,DEFAULT_CARD_OUTLINE as ln}from"../sections/product-card-style.js";import{COVER_INDEX_OPTIONS as an,DEFAULT_COVER_INDEX as sn}from"../sections/card-cover-index.js";import{SCALAR_TEXT_CONTROLS as cn}from"./text-control-kinds.js";import un from"../../components/ImageFocusRow.js";import dn from"../../components/MediaUploadField.js";import pn from"../../components/MultiSelectField.js";import fn from"../../components/SectionThemePicker.js";import mn from"../../components/SearchSelectField.js";import hn from"../../components/StorefrontLinkField.js";import Ae from"../../components/UiIcon.js";import{SECTION_PADDING as _}from"../content/section-padding.js";import{hasPhoneHeight as gn,resolveSectionMinHeight as bn}from"../content/section-min-height.js";import{VIEW_TIER_LABEL as ne}from"../content/view-tiers.js";import{SECTION_MIN_HEIGHT as xn,SECTION_MIN_HEIGHT_GROUP_LABEL as M,SECTION_SCREEN_PCT as Cn}from"../content/section-min-height.js";import{CONTAINER_DIRECTION_LABEL as Sn,containerDirectionPoints as _n,resolveContainerDirection as Fe}from"../content/container-direction.js";import{BOX_ALIGN_POINTS as In,BOX_BLOCK_SPACING_LABEL as yn,BOX_BLOCK_SPACING_POINTS as Pe,BOX_JUSTIFY_POINTS as we,BOX_PHONE_ROW_LABEL as En,BOX_PHONE_ROW_MAX as Tn,BOX_PHONE_ROW_MIN as ke,BOX_SHARE_LABEL as De,BOX_SHARE_POINTS as oe,BOX_WRAP_LABEL as Rn,BOX_WRAP_POINTS as Be}from"../content/box-layout.js";import{usePreviewHeader as X}from"../../components/PreviewHeaderContext.js";import{CONTAINER_GAP as re,CONTAINER_GAP_BUILT_IN as vn,GAP_FIELD_CONTAINER as Ln,hasOwnContainerGap as Nn,resolveContainerGap as On}from"../content/container-gap.js";import{CARD_IMAGE_BG_INHERIT as An,CARD_IMAGE_BG_OFF as Fn,CARD_IMAGE_BG_SWATCH_NAMES as Pn,CARD_IMAGE_BG_SWATCHES as wn,isCardImageBackgroundInheriting as kn,resolveCardImageBackground as Dn,THEME_CARD_IMAGE_BG as Bn}from"../content/card-image-background.js";import{SECTION_BG_INHERIT as Hn,SECTION_BG_SWATCHES as Mn,SECTION_BG_SWATCH_NAMES as Gn,THEME_SECTION_BG as $n,isSectionBackgroundInheriting as Wn}from"../content/section-background.js";import{SECTION_THEME_GROUP_LABEL as Un}from"../content/section-surface.js";import{TYPE_SIZE_FIXED as Kn,TYPE_SIZE_INHERIT as Xn,isTypeSizeInheriting as Vn}from"../content/section-type-size.js";import{SECTION_WIDTH_CHOICES as zn,WIDTH_CHOICE_LABEL as Yn,WIDTH_INHERIT as jn,resolveWidth as qn,sectionRunsFullWidth as He}from"../content/section-width.js";import{useFoldHeadingLevel as Me}from"./panel-heading-scope.js";import{withStyleKind as Jn}from"efficient-easel/style-clipboard";function G(e){for(const[t,n]of Object.entries(e))n&&typeof n=="object"&&!Z(n)&&Jn(n,`section:${t}`);return e}function Yr({children:e}){return r("div",{className:"sf-field-label",children:e})}function Ge(){return null}function Zn(e){if(!e.trim())throw new Error("noGlyph() needs a reason naming the ruling that decided it.");return r(Ge,{},e)}function Qn(e){return e.type===Ge}function V(e){return Qn(e)?void 0:e}function w(e,t){return`${e} from ${t}`}function eo(){const{appState:e}=O(i=>i),t=e.data.root?.props??{},{mode:n,pageWidth:o}=qn(t,"full");return w(n==="page"?`${o}px`:n==="contained"?"Contained":"Full","the page")}function to(){const{blockGap:e}=X();return e===null?"this container's own spacing":w(`${e}px`,"Site styles")}function no({inherited:e,onReset:t,label:n}){return r(g,{label:n,changed:!e,detail:to(),onReset:t})}function oo({inherited:e,onReset:t,label:n}){return r(g,{label:n,changed:!e,detail:eo(),onReset:t})}function k({value:e,onChange:t,label:n,placeholder:o,hint:i,multiline:l,hideable:a=!0,markup:s=!0}){const{text:u,hidden:d}=ue(e),f=j(null),c=j(null),p=E=>t(a?{text:E,hidden:d}:E),h=()=>t({text:u,hidden:!d}),b=a&&d,y=Je(),x=i?so(i)?r("span",{className:"sf-hint-keep sf-hint-while-typing",children:i}):r(ct,{children:i}):void 0;return r(m,{label:n,icon:r(Ht,{}),htmlFor:y,className:b?"is-hidden":void 0,hint:x,action:a?r("button",{type:"button",className:"sf-field-eye","aria-pressed":d,"aria-label":d?`Show ${n} on the slide`:`Hide ${n} on the slide`,title:d?`Show ${n} on the slide`:`Hide ${n} on the slide`,onClick:h,children:d?r(Ae,{name:"eye-off",size:14}):r(Ae,{name:"eye",size:14})}):void 0,children:S("div",{className:"sf-copybox",children:[s&&r(Ne,{target:l?c:f,value:u,onChange:p}),l?r("textarea",{id:y,ref:c,value:u,placeholder:o,onChange:E=>p(E.target.value)}):r("input",{id:y,ref:f,type:"text",value:u,placeholder:o,onChange:E=>p(E.target.value)})]})})}function jr(e,t){return{...e,[he]:t}}function qr(e){const t=e[T];if(!t)throw new Error("withOffPage: the field holds no authored text");return{...e,[T]:{...t,offPage:!0}}}function Jr(e){return!e||typeof e!="object"?!1:e[T]?.offPage===!0}function Zr(e){const t=e[T];if(!t)throw new Error("withIdentifier: the field holds no authored text");return{...e,[T]:{...t,identifier:!0}}}import{TEXT_CONTROL_KINDS as tl,SCALAR_TEXT_CONTROLS as nl}from"./text-control-kinds.js";const ro=new Set(cn),D=(e,t)=>{const n={...t,[T]:e};if(!ro.has(e.control))return n;const o=t.render;return{...Qt(n,"authored-copy"),render:i=>r(en,{name:i.name,children:o(i)})}},Qr="Everything else on this block comes from the linked post. Unlink it to edit by hand.",io="Select a word, then press the highlighter.",lo="A short name so a link can jump straight to this section, like yoursite.com/page#about.",ao=new Set([io]),so=e=>ao.has(e);function ei(e,t,n){return D({control:"text",label:e,placeholder:t,hint:n},{type:"custom",render:({value:o,onChange:i})=>r(k,{value:o,onChange:i,label:e,placeholder:t,hint:n})})}function ti(e,t,n){return D({control:"textarea",label:e,placeholder:t,hint:n},{type:"custom",render:({value:o,onChange:i})=>r(k,{value:o,onChange:i,label:e,placeholder:t,hint:n,multiline:!0})})}function co(e,t,n){return D({control:"plainText",label:e,placeholder:t,hint:n},{type:"custom",render:({value:o,onChange:i})=>r(k,{value:o,onChange:i,label:e,placeholder:t,hint:n,hideable:!1,markup:!1})})}function ni(e,t,n){return D({control:"copyText",label:e,placeholder:t,hint:n},{type:"custom",render:({value:o,onChange:i})=>r(k,{value:o,onChange:i,label:e,placeholder:t,hint:n,hideable:!1})})}function oi(e){return{type:"custom",[fe]:{label:e},render:({value:t,onChange:n})=>r(hn,{value:de(t),onChange:n,label:e})}}function ri(e,t,n){return D({control:"plainTextarea",label:e,placeholder:t,hint:n},{type:"custom",render:({value:o,onChange:i})=>r(k,{value:o,onChange:i,label:e,placeholder:t,hint:n,multiline:!0,hideable:!1})})}const ii={Content:Bt,Style:Dt,Layout:Tt,Animation:xe};function li(e,t){return e.includes("Content")?t!=="Content":null}function uo({label:e}){return r(Vt,{title:e,level:Me(1)})}function po({level:e,label:t}){return e===1?r(uo,{label:t}):r(mo,{label:t})}function $e(e,t){return{type:"custom",[J]:{label:e,level:t},render:()=>r(po,{level:t,label:e})}}function C(e){return $e(e,2)}function ai(e){return{type:"custom",render:()=>r(fo,{text:e})}}function fo({text:e}){return r("p",{className:"sf-note",children:e})}function si(e){return $e(e,1)}function ci(e){return Z(e)!==null&&e?.tabs!==void 0}const We=new Map;function ui(e,t){const n=`${e}\0${t?t.join(""):""}`,o=We.get(n)??{type:"custom",tabs:t,[J]:{label:e,level:1},bucket:e,marker:!0,render:()=>r(I,{})};return We.set(n,o),o}function mo({label:e}){return r(zt,{title:e,level:Me(2)})}function Ue({swatches:e,current:t,onPick:n,names:o}){const i=e.find(a=>a.toLowerCase()===t.toLowerCase()),l=(i?o?.[i]:void 0)??t;return S("div",{className:"sf-swatches",children:[e.map(a=>{const s=o?.[a]??a;return r("button",{type:"button","aria-pressed":t.toLowerCase()===a.toLowerCase(),className:`sf-swatch ${t.toLowerCase()===a.toLowerCase()?"is-active":""}`,style:{background:a},onClick:()=>n(a),"aria-label":s,title:s},a)}),r("span",{className:"sf-swatch-hex",children:l})]})}function di(e,t){return{type:"custom",render:({value:n,onChange:o})=>{const i=Wn(n,t);return r(m,{label:e,icon:r(pt,{}),changed:!i,action:r(g,{label:e,changed:!i,detail:"the theme's section background",onReset:()=>o(Hn)}),children:Ue({swatches:Mn,current:i?$n:n??t??"",onPick:o,names:Gn})})}}}function ho(e,t){return{type:"custom",render:({value:n,onChange:o})=>{const i=n,l=kn(i,t);return r(m,{label:e,icon:r(yt,{}),changed:!l,action:r(g,{label:e,changed:!l,detail:"the theme's image stage",onReset:()=>o(An)}),children:Ue({swatches:wn,current:l?Bn:Dn(i,t),onPick:o,names:Pn})})}}}function pi(e=n=>n,t){return G({_gSectionTheme:C(Un),sectionAccent:{type:"custom",render:({value:n,onChange:o})=>r(fn,{value:e(n),onChange:o,followLabel:t})}})}function L({min:e,max:t,step:n,value:o,onChange:i,suffix:l="",readout:a=!0,notch:s,ariaLabel:u,disabled:d=!1}){const f=s!==void 0&&Number.isFinite(s)&&s>=e&&s<=t;return S("div",{className:f?"sf-slider has-notch":"sf-slider",style:f?{"--sf-notch":(s-e)/(t-e)}:void 0,children:[r("input",{type:"range",min:e,max:t,step:n,value:o,"aria-label":u,disabled:d||void 0,onChange:c=>i(Number(c.target.value))}),a&&r(go,{value:o,min:e,max:t,step:n,suffix:l,ariaLabel:u,onChange:i})]})}function go({value:e,min:t,max:n,step:o,onChange:i,suffix:l="",ariaLabel:a,children:s}){const[u,d]=q(null),f=c=>{c.editing||d(null),c.commit!==null&&c.commit!==e&&i(c.commit)};return u===null?r("button",{type:"button",className:"sf-slider-val",title:"Click to type a value","aria-label":a?`${a}: type a value`:"Type a value",onClick:()=>d(String(e)),children:s??S(I,{children:[e,l]})}):r("input",{autoFocus:!0,type:"text",inputMode:"decimal",className:"sf-slider-val sf-slider-typed",value:u,"aria-label":a,onChange:c=>d(c.target.value),onFocus:c=>c.currentTarget.select(),onKeyDown:c=>{const p=Oe(c.key,u,t,n,o);p.handled&&(c.preventDefault(),c.stopPropagation(),f(p))},onBlur:()=>f(Oe(tn,u,t,n,o))})}function B(e,t,n,o,i,l,a="",s){return{type:"custom",render:u=>r(m,{label:e,icon:V(t),action:s?s("storedValue"in u?u.storedValue:u.value,u.onChange):void 0,children:L({min:n,max:o,step:i,value:typeof u.value=="number"?u.value:l,suffix:a,onChange:u.onChange})})}}function Ke({min:e,max:t,step:n,px:o,label:i,onChange:l,disabled:a=!1}){const{cornerRadiusPx:s}=X();return r(I,{children:L({min:e,max:t,step:n,value:o??(typeof s=="number"?s:e),readout:!1,ariaLabel:i,disabled:a,onChange:l})})}function $(e,t){const{min:n,max:o,step:i=1,unsetLabel:l,hint:a,restAtSite:s=!1,restTrack:u,unsetMark:d}=t;return{type:"custom",render:({value:f,onChange:c})=>{const p=typeof f=="number"?f:null,h=p===null;return r(m,{label:e,value:h?d?void 0:l:`${p}px`,changed:!h,action:d?qe(d,{changed:!h,onReset:()=>c(null)}):r(g,{label:e,changed:!h,onReset:()=>c(null)}),hint:a,children:u?u({min:n,max:o,step:i,px:p,label:e,onChange:c}):s?r(Ke,{min:n,max:o,step:i,px:p,label:e,onChange:c}):L({min:n,max:o,step:i,value:p??n,readout:!1,ariaLabel:e,onChange:c})})}}}function fi(e){const t=B("Gap",r(_e,{}),re.min,re.max,re.step,vn[e],"px",(n,o)=>r(no,{inherited:!Nn(e,n),onReset:()=>o(void 0),label:"Gap"}));return{type:"custom",[Ln]:e,render:n=>t.render({...n,value:On(e,n.value,n.field?.siteGap),storedValue:n.value,onChange:o=>n.onChange(o)})}}function bo(){return{type:"custom",render:({value:e,onChange:t})=>{const o=U(e)??[...F],i=o.length===F.length;return r(m,{label:P,icon:r(Se,{}),value:Te(o),changed:!i,action:r(g,{label:P,changed:!i,onReset:()=>t(null)}),hint:"Corners left off stay square. The row above sets how round the others are.",children:r(Io,{value:o,onChange:l=>{const a=U(l)??[];t(a.length===F.length?null:a)}})})}}}function xo({label:e,changed:t=!1,onReset:n=()=>{}}){const{cornerRadiusPx:o}=X(),i=typeof o=="number"?`${o}px`:"not set";return r(g,{label:e,changed:t,detail:o==null?"the built-in corners":w(i,"Site styles"),onReset:n})}function Co(){return $("Corners",{min:H,max:W,unsetLabel:"Follows the site",unsetMark:r(xo,{label:"Corners"}),restTrack:e=>r(So,{...e}),hint:r(_o,{})})}const Xe="This section runs edge to edge, so its corners sit off the page. Set Width to Content width to use them.";function ie(){return He(z())}function So(e){return r(Ke,{...e,disabled:ie()})}function _o(){return r(I,{children:ie()?Xe:"Follows Site styles \u25B8 Basics \u25B8 Corners until you set a number here."})}function Io({value:e,onChange:t}){const n=ie();return r(ve,{label:P,value:e,corners:n?ee.map(o=>({...o,disabled:!0,title:Xe})):ee,onChange:t})}function mi(){return G({_gShape:C("Shape"),sectionCorners:Co(),sectionCornerSides:bo()})}function hi(){return{_gMotion:C("Motion"),sectionAnimation:ce("Entrance",r(xe,{}),[...Xt],Kt)}}function le(){let e=null;try{const{appState:t,selectedItem:n}=O(i=>i),o=n?.props?.id?String(n.props.id):void 0;e=o?Re(t?.data,o):null}catch{e=null}return e!==null&&He(e)}function Ve(e){const{cornerRadiusPx:t}=X(),n=le(),o=typeof t=="number"?t:e;let i=null;try{const{appState:a,selectedItem:s}=O(d=>d),u=s?.props?.id?String(s.props.id):void 0;i=u?Re(a?.data,u):null}catch{i=null}if(n||!i)return o;const l=i.sectionCorners;return Wt(l)?l:o}function yo({min:e,max:t,step:n,px:o,label:i,onChange:l}){const a=Ve(e);return r(I,{children:L({min:e,max:t,step:n,value:o??a,readout:!1,ariaLabel:i,onChange:l})})}function Eo({label:e,changed:t=!1,onReset:n=()=>{}}){const o=le(),i=Ve(H),l=o?"Site":"Section";return r(g,{label:e,changed:t,detail:w(`${i}px`,o?"Site styles":"the section"),onReset:n})}function To(){return r(I,{children:le()?"The section is full width, so this card follows Site styles \u25B8 Basics \u25B8 Corners.":"Follows the section's Corners until you set a number here."})}function Ro(){return $("Corners",{min:H,max:W,unsetLabel:"Follows the section",unsetMark:r(Eo,{label:"Corners"}),restTrack:e=>r(yo,{...e}),hint:r(To,{})})}function vo({value:e,onChange:t}){return r(ve,{label:P,value:e,corners:ee,onChange:t})}function Lo({unset:e}){return r(I,{children:e?"Set a number above first \u2014 there is nothing to shape yet.":"Corners left off stay square. The row above sets how round the others are."})}function No(){return{type:"custom",render:({value:e,onChange:t})=>{const o=U(e)??[...F],i=o.length===F.length;return r(m,{label:P,icon:r(Se,{}),value:Te(o),changed:!i,action:r(g,{label:P,changed:!i,onReset:()=>t(null)}),hint:r(Lo,{unset:!Ut(e)}),children:r(vo,{value:o,onChange:l=>{const a=U(l)??[];t(a.length===F.length?null:a)}})})}}}function Oo(){return{type:"custom",render:()=>r(Qe,{})}}function gi(){return{_gShape:C("Shape"),cardCorners:Ro(),cardCornerSides:No(),cardCornersApplyAll:Oo()}}function bi(){return v("Justify",r(dt,{}),we,we[0].value)}function xi(){return v("Item alignment",r(ut,{}),In,"stretch")}function Ci(){return v(Rn,r(Gt,{}),Be,Be[0].value)}function Si(){return{type:"custom",render:({value:e,onChange:t})=>{const n=oe.find(o=>o.value===e)??oe[0];return r(m,{label:De,icon:r(Ce,{}),value:n.label,children:r("div",{className:"sf-gallery-layouts",role:"group","aria-label":De,children:oe.map(o=>r("button",{type:"button","aria-pressed":n.value===o.value,"aria-label":o.label,title:o.label,onClick:()=>t(o.value),children:r("span",{className:"sf-gallery-pic",children:Ao(o.weights).map((i,l)=>r("i",{style:{gridColumn:`span ${i}`}},l))})},o.value))})})}}}function Ao(e){if(!e)return[3,4];const t=e.reduce((n,o)=>n+o,0);return e.map(n=>Math.round(n/t*12))}function _i(){return v(yn,r(_e,{}),Pe,Pe[0].value)}function Ii(){return B(En,r(At,{}),ke,Tn,1,ke)}function yi(e){const t=ce(Sn,Zn("`Direction` names how a container's children run \u2014 a MODIFIER, not a thing. doc/naming.md N10.1 gives the idea a dash in its Glyph column; editor-shell's own `direction` meaning says the bare row is CORRECT and not an omission (SS seat, 2026-09-11)."),_n(e),Fe(e,void 0));return{type:"custom",render:n=>t.render({...n,value:Fe(e,n.value),onChange:o=>n.onChange(o)})}}function Ei(e,t,n,o,i,l){return{type:"custom",render:({value:a,onChange:s})=>r(m,{label:e,icon:r(Ee,{noun:l}),action:r(g,{label:e,changed:!Vn(a),detail:"the Text style in Site styles",onReset:()=>s(Xn),defaultAction:{onPress:()=>s(Kn),title:"Keep this section's own built-in size",icon:r(ft,{})}}),children:L({min:t,max:n,step:o,value:typeof a=="number"?a:i,suffix:"px",onChange:s})})}}function Ti(){return{_gCellWidth:C("Cell width"),gridSpan:v("Positions",r(Ce,{}),[{label:"Auto",value:""},...Array.from({length:ot},(e,t)=>({label:t===0?"1 position":`${t+1} positions`,value:String(t+1)}))],"")}}function z(){let e=null;try{e=O(t=>t).selectedItem}catch{e=null}return e?.props??{}}function Fo({min:e,max:t,step:n,px:o,label:i,onChange:l,desktopKey:a,fallback:s}){const u=z()[a],d=te(void 0,u,s);return r(I,{children:L({min:e,max:t,step:n,value:te(o,u,s),readout:!1,ariaLabel:i,notch:d,onChange:l})})}function Po({label:e,desktopKey:t,fallback:n,changed:o=!1,onReset:i=()=>{}}){const l=z()[t],a=te(void 0,l,n);return r(g,{label:e,changed:o,detail:`${a}px on ${ne.desktop.toLowerCase()}`,onReset:i})}function wo(e){return $(e.label,{min:e.min,max:e.max,step:e.step,unsetLabel:`Follows ${ne.desktop}`,unsetMark:r(Po,{label:e.label,desktopKey:e.desktopKey,fallback:e.fallback}),restTrack:t=>r(Fo,{...t,desktopKey:e.desktopKey,fallback:e.fallback})})}function Ri(e={}){const t=e.keys?.top??"sectionPaddingTop",n=e.keys?.bottom??"sectionPaddingBottom",o=e.group!==!1,i=x=>o?x:`Padding ${x.toLowerCase()}`,l=x=>B(i("Top"),r(Ot,{}),_.min,_.max,_.step,x,"px"),a=(x,E,je,Y=_)=>R("mobile",wo({label:i(x),desktopKey:E,min:Y.min,max:Y.max,step:Y.step,fallback:je})),s=e.top??_.min,u=e.bottom??_.min,d="sectionPaddingLeft",f="sectionPaddingRight",c=e.sideBounds??_,p=e.side??c.min,h=e.sidePhone??p,b=e.phone===!0,y=x=>b?R("desktop",x):x;return G({...o?{_gSpacing:C("Padding")}:{},[t]:y(l(s)),...b?{[K(t)]:a("Top",t,s)}:{},...e.only==="top"?{}:{[n]:y(B(i("Bottom"),r(vt,{}),_.min,_.max,_.step,u,"px")),...b?{[K(n)]:a("Bottom",n,u)}:{}},...e.sides?{[d]:y(B(i("Left"),r(Lt,{}),c.min,c.max,c.step,p,"px")),...b?{[K(d)]:a("Left",d,h,c)}:{},[f]:y(B(i("Right"),r(Nt,{}),c.min,c.max,c.step,p,"px")),...b?{[K(f)]:a("Right",f,h,c)}:{}}:{}})}const ko={contained:"Contained",page:"Page",full:"Full"},ae="Width";function vi(e,t=zn,n=!0){const o=t.map(i=>({label:Yn[i]??ko[i],value:i}));return G({...n?{_gWidth:C(ae)}:{},widthMode:{type:"custom",render:({onChange:i,field:l})=>r(m,{label:"Width",icon:r(Mt,{}),action:n?r(oo,{inherited:l?.inherited??!1,onReset:()=>i(jn),label:ae}):void 0,children:se({options:o,value:l?.currentValue||e,onChange:i,ariaLabel:ae})})}})}function Li(){const e=o=>({type:"custom",render:({value:i,onChange:l})=>S("div",{className:"sf-field",children:[o?S("div",{className:"sf-field-head",children:[r("span",{className:"sf-field-label sf-field-label--inline",children:M}),o(l)]}):null,r("div",{children:se({options:[{label:"Auto",value:"auto"},{label:"Fixed",value:"fixed"},{label:"Screen",value:"screen"}],value:["auto","fixed","screen"].includes(i)?i:"auto",onChange:l,ariaLabel:M})})]})}),t=()=>({type:"custom",render:({value:o,onChange:i,field:l})=>{const a=l?.unit==="%"?"%":"px",s=a==="%"?Cn:xn;return r("div",{className:"sf-field",children:L({min:s.min,max:s.max,step:s.step,value:typeof o=="number"?o:s.fallback,suffix:a,ariaLabel:M,onChange:i})})}}),n=()=>ce("Unit",r(Ie,{}),[{label:"px",value:"px"},{label:"%",value:"%"}],"px");return G({_gHeight:C(M),sectionHeightMode:R("desktop",e()),sectionHeightValue:R("desktop",t()),sectionHeightUnit:R("desktop",n()),sectionHeightModePhone:R("mobile",e(o=>r(Do,{onClear:()=>o(void 0)}))),sectionHeightValuePhone:R("mobile",t()),sectionHeightUnitPhone:R("mobile",n())})}function Do({onClear:e}){const t=z(),n=gn(t),o=bn(t),i=`${o.mode==="auto"?"Auto":`${o.value}${o.unit}`} on ${ne.desktop.toLowerCase()}`;return r(g,{label:M,changed:n,detail:i,onReset:e})}function Ni(){return{_gAnchor:C("Anchor"),anchor:co("Anchor name","e.g. about",lo)}}function N(e,t,n){return{type:"custom",render:({value:o,onChange:i,id:l,name:a})=>{const s=typeof o=="boolean"?o:t,u=`${l??a??e}-label`;return r(m,{label:e,labelId:u,icon:n,action:r(qt,{checked:s,onChange:i,ariaLabelledBy:u})})}}}function Oi(){return{type:"custom",render:({value:e,onChange:t,id:n,name:o})=>{const i=`${String(n??o??"pageBackground")}-colour`;return r(m,{label:"Background",icon:r(ye,{}),htmlFor:i,action:r(Le,{id:i,label:"Background",value:$t(e),onChange:t})})}}}function Ai(e,t){return{type:"custom",render:({value:n,onChange:o,id:i})=>{const l=typeof n=="boolean"?n:t,a=`${i??e}-checkbox`;return r(m,{label:e,htmlFor:a,className:"sf-checkbox",action:r("input",{id:a,type:"checkbox",checked:l,onChange:s=>o(s.target.checked)})})}}}function Fi(e,t){return{type:"custom",render:({value:n,onChange:o})=>r(m,{label:e,action:Le({value:n||t,onChange:o,label:e})})}}const Bo=[{value:"0% 0%",label:"Top left"},{value:"50% 0%",label:"Top"},{value:"100% 0%",label:"Top right"},{value:"0% 50%",label:"Left"},{value:"50% 50%",label:"Center"},{value:"100% 50%",label:"Right"},{value:"0% 100%",label:"Bottom left"},{value:"50% 100%",label:"Bottom"},{value:"100% 100%",label:"Bottom right"}];function ze({label:e,value:t,onChange:n,points:o=Bo}){return r(Yt,{label:e,value:t,points:o,onChange:n})}function Pi(e,t=pe,n="mediaImage"){return{type:"custom",render:({value:o,onChange:i})=>r("div",{className:"sf-focal-row",children:r(Ho,{label:e,value:o||t,onChange:i,imageProp:n})})}}function Ho({label:e,value:t,onChange:n,imageProp:o}){const{selectedItem:i}=O(a=>a),l=i?.props?.[o];return r(un,{label:e,value:t,onChange:n,image:typeof l=="string"?l:void 0})}const Mo=be([]);function wi(e,{stacking:t,fallback:n=at}){return{type:"custom",render:({value:o,onChange:i})=>{const l=lt.includes(o)?o:n;return t?r(Go,{label:e,value:l,onChange:i}):Ye({label:e,value:l,onChange:i,points:Mo})}}}function Go({label:e,value:t,onChange:n}){const{appState:o,selectedItem:i}=O(s=>s),l=i?.props?.id?String(i.props.id):void 0,a=l?it(o?.data,l):[];return Ye({label:e,value:t,onChange:n,points:be(a,l)})}function Ye({label:e,value:t,onChange:n,points:o}){const i=o.find(l=>l.disabled);return r(m,{label:e,icon:r(Ft,{}),hint:i?i.title:void 0,children:ze({label:e,value:st(t),onChange:n,points:o})})}const ki={top:r(Ct,{}),right:r(xt,{}),bottom:r(gt,{}),left:r(bt,{})};function Di(e,t,n,o,i,l){const a=f=>t.find(c=>c.value===f),s=f=>({value:f,label:"",disabled:!0,title:o}),u=f=>{const c=t.find(h=>h.cell===f);if(!c)return s(`missing-${f}`);const p=l?.[f];return p?{value:c.value,label:c.label,icon:p}:{value:c.value,label:c.label}},d=[s("corner-top-left"),u("top"),s("corner-top-right"),u("left"),s("centre"),u("right"),s("corner-bottom-left"),u("bottom"),s("corner-bottom-right")];return{type:"custom",render:({value:f,onChange:c})=>{const p=t.some(h=>h.value===f)?f:n;return r(m,{label:e,icon:i,value:a(p)?.label??"",children:ze({label:e,value:p,onChange:c,points:d})})}}}const $o="\0note";function v(e,t,n,o,i){return{type:"custom",options:n,fallback:o,...i?{note:i}:{},render:({value:l,onChange:a,field:s})=>{const u=s.options??n,d=s.fallback??o,f=u.some(c=>c.value===l)?l:d;return r(m,{label:e,icon:V(t),children:r(Jt,{value:f,ariaLabel:e,onChange:a,options:[...i?[{label:i,value:$o,disabled:!0}]:[],...u.map(c=>({label:c.label,value:c.value}))]})})}}}function Bi(e,t,n){return{type:"custom",options:t,render:({value:o,onChange:i,field:l})=>r(pn,{label:e,options:l.options??t,value:Array.isArray(o)?o:[],onChange:i,...n?{emptyLabel:n}:{}})}}function Hi(e,t,n,o){return{type:"custom",options:t,fallback:n,render:({value:i,onChange:l,field:a})=>r(mn,{label:e,options:a.options??t,fallback:a.fallback??n,value:i,onChange:l,placeholder:o})}}function Mi(e,t={}){return{type:"custom",render:({value:n,onChange:o})=>{const i={value:n,onChange:o,...t};return r(e,{...i})}}}function se({options:e,value:t,onChange:n,ariaLabel:o,disabled:i=!1}){return r(jt,{options:e.map(l=>({id:l.value,label:l.label,title:l.title})),value:t,onChange:n,ariaLabel:o,disabled:i})}const Gi=[{label:"Image",value:"image"},{label:"Video",value:"video"}];function ce(e,t,n,o){const i=n.map(l=>typeof l=="string"?{label:l,value:l}:l);return{type:"custom",render:({value:l,onChange:a,field:s})=>r(m,{label:e,icon:V(t),children:se({options:i,value:i.some(u=>u.value===l)?l:l||s?.currentValue||o,onChange:a,ariaLabel:e})})}}function $i(e,t,n){return{type:"custom",[me]:!0,render:({value:o,onChange:i})=>r(dn,{value:o||"",onChange:i,label:e,accept:t,placeholder:n})}}const Wi={HeroSingle:["imageFocal"],ContactLocations:["locations[].photo"],ProcessSteps:["steps[].image"]};function Ui({value:e,onChange:t,label:n}){const o=e||{},i=!!o.pending,l=i?"var(--fg-dim, #888)":o.ok?"#1d9e75":"#d85a30",a=(s,u)=>t({...o,[s]:u===""?void 0:Number(u)});return S(m,{label:n,icon:r(Q,{}),children:[r("button",{type:"button",disabled:i,onClick:()=>t({...o,pending:!0,ok:!1,status:"Finding\u2026"}),style:{width:"100%",display:"flex",alignItems:"center",justifyContent:"center",gap:6,padding:"8px 10px",fontSize:13,cursor:i?"default":"pointer",opacity:i?.6:1,border:"1px solid var(--border-strong, #ccc)",borderRadius:6,background:"transparent",color:"inherit"},children:i?"Finding\u2026":"Find coordinates"}),o.status&&r("div",{style:{marginTop:6,fontSize:12,lineHeight:1.4,color:l},children:o.status}),r("div",{style:{marginTop:6,fontSize:11,color:"var(--fg-dim, #999)"},children:"Coordinates from OpenStreetMap"}),r("button",{type:"button",onClick:()=>t({...o,manual:!o.manual}),style:{marginTop:8,padding:0,border:"none",background:"none",font:"inherit",fontSize:12,color:"var(--sf-accent, #2563eb)",cursor:"pointer",textDecoration:"underline"},children:o.manual?"Hide manual coordinates":"Enter coordinates manually"}),o.manual&&S("div",{style:{marginTop:8,display:"grid",gap:8},children:[r(m,{label:"Latitude",icon:r(Q,{}),children:r("input",{type:"number",step:"any",placeholder:"e.g. 34.0990198",value:typeof o.lat=="number"?o.lat:"",onChange:s=>a("lat",s.target.value)})}),r(m,{label:"Longitude",icon:r(Q,{}),children:r("input",{type:"number",step:"any",placeholder:"e.g. -117.9842833",value:typeof o.lng=="number"?o.lng:"",onChange:s=>a("lng",s.target.value)})})]})]})}function Wo(e,t){return t===null||t<0||t>=e.length?"":e[t]?.text??""}function Uo(e,t,n){const o=e.map(i=>({text:i?.text??""}));return t===null||t<0||t>=e.length?o:o.map((i,l)=>l===t?{text:n}:i)}function Ki(e,t){return e===null?null:t>e?e:null}function Ko(e,t,n){if(n===null||n>=t.length)return null;for(let o=0;o<n;o+=1)if(e[o]!==t[o])return null;return e[n]!==t[n]&&t.includes(e[n])||e[n]!==t[n]&&t.length!==e.length?null:n}const Xi={label:"Ticker items",icon:r(Rt,{})};function Vi(e,t,n,o){return{type:"custom",[T]:{control:"textList",label:e,placeholder:n,itemKey:"text",rendering:o},render:({value:i,onChange:l})=>r(Xo,{label:e,icon:V(t),items:Array.isArray(i)?i:[],placeholder:n,onChange:l,markup:o==="markup"})}}function Xo({label:e,icon:t,items:n,placeholder:o,onChange:i,markup:l=!1}){const a=j(null),[s,u]=q(null),d=c=>c.map(p=>({text:p?.text??""}));return r(Zt,{label:e,icon:t,noun:"item",items:n,onChange:c=>{const p=Ko(n,c,s);p===null&&(a.current=null),u(p),i(d(c))},newItem:()=>({text:""}),open:null,onOpen:()=>{},renderItem:()=>null,above:l?r(Ne,{target:a,value:Wo(n,s),onChange:c=>i(Uo(n,s??-1,c)),disabled:s===null,label:s===null?"Formatting \u2014 click a row first":`Formatting \u2014 row ${s+1}`}):void 0,renderRow:(c,p,h)=>r("input",{type:"text",className:l&&s===p?"sf-list-marking":void 0,value:c?.text??"",placeholder:o,"aria-label":`${e} ${p+1}`,onChange:b=>h({text:b.target.value}),onFocus:b=>{a.current=b.currentTarget,u(p)}})})}function zi(e,t){const n=`${e.label} \u2014 row ${t+1}`;return D({control:"plainText",label:n,placeholder:e.placeholder,offPage:e.offPage},{type:"custom",render:({value:o,onChange:i})=>r(k,{value:o,onChange:i,label:n,placeholder:e.placeholder,hideable:!1,markup:e.rendering==="markup"})})}function Yi(e){return{_gCards:C("Cards"),coverIndex:v("Cover image",r(Et,{}),an,String(sn),e?.coverHint??"A card's opening picture \u2014 a card pinned to a finish keeps its own."),imageBackground:ho("Image background",Fn),cardImage:Vo(),spinOnHover:N("Rotate on hover",e?.spinDefault??!0,r(wt,{}))}}function ji(){return{outline:v("Card outline",r(kt,{}),on,ln),indexBadge:v("Card number",r(Ie,{}),nn,rn),showBadge:N("Product badge",!0,r(Ee,{noun:"tag"}))}}function qi(e){const t=e?.bottomDefault??!0;return{_gShowOnCard:C("Show on a card"),showCardPrice:N("Price",!0,r(St,{})),showCardFinishes:N("Finish swatches",!0,r(_t,{})),showCardSizes:N("Sizes",t,r(Pt,{})),showCardBuy:N("Buy button",t,r(mt,{})),showCardPage:N("Page button",t,r(ye,{}))}}function Vo(){return $("Card image",{min:H,max:W,step:et,hint:"Rounds the picture. The card's own corner is in Site styles."})}function Ji(){return $(nt,{min:H,max:W,step:tt,unsetLabel:"Square",hint:"Rounds the picture. Left alone it stays square."})}function Zi(){return{type:"custom",render:({value:e,onChange:t})=>r(zo,{value:typeof e=="string"?e:"",onChange:t})}}function zo({value:e,onChange:t}){const[n,o]=q(null),i=ge.filter(a=>n===null||A[a].across===n),l=e&&e in A?A[e]:null;return S(I,{children:[r(m,{label:"Photos in a row",icon:r(ht,{}),children:S("div",{className:"sf-gallery-filter",children:[r("button",{type:"button","aria-pressed":n===null,onClick:()=>o(null),children:"All"}),rt.map(a=>r("button",{type:"button","aria-pressed":n===a,onClick:()=>o(a),children:a},a))]})}),r(m,{label:"Layout",icon:r(It,{}),value:l?l.label:"Not chosen",hint:`${i.length} of ${ge.length} layouts`,children:r("div",{className:"sf-gallery-layouts",children:i.map(a=>r("button",{type:"button","aria-pressed":e===a,"aria-label":A[a].label,title:A[a].label,onClick:()=>t(e===a?"":a),children:r("span",{className:"sf-gallery-pic",children:A[a].desktop.map(([s,u],d)=>r("i",{style:{gridColumn:`span ${s}`,gridRow:`span ${u}`}},d))})},a))})})]})}export{lo as ANCHOR_HINT,Qr as BOUND_TO_POST_NOTE,ii as BUCKET_ICONS,Wi as CUSTOM_FIELD_MEDIA,Ui as CoordsField,ki as EDGE_ARROWS,pe as FOCAL_DEFAULT,Bo as FOCAL_POINTS,J as FOLD_FIELD_MARKER,ze as FocalPicker,mo as GroupLabel,io as HIGHLIGHT_HINT,k as HidableTextField,fe as LINK_FIELD_MARKER,Yr as Label,me as MEDIA_FIELD_MARKER,Gi as MEDIA_TYPE_OPTIONS,fo as PanelNoteLine,Ye as PlacementGridView,he as SCAFFOLD_FIELD_MARKER,nl as SCALAR_TEXT_CONTROLS,Xe as SECTION_BLEEDS_HINT,uo as SectionHeading,se as Segmented,no as SiteGapDefaultReset,L as Slider,go as SliderValue,Ue as Swatches,tl as TEXT_CONTROL_KINDS,T as TEXT_FIELD_MARKER,Xi as TICKER_ITEMS_ROW,Xo as TextListField,oo as WidthDefaultReset,Ko as aimAfterListChange,Ni as anchorFields,w as backTo,di as backgroundField,xi as boxAlignField,_i as boxBlockSpacingField,bi as boxJustifyField,Ii as boxPhoneRowField,Si as boxShareField,Ci as boxWrapField,ui as bucketHeader,No as cardCornerSidesField,Ro as cardCornersField,ho as cardImageBackgroundField,Vo as cardImageField,Yi as cardMediaFields,gi as cardShapeFields,qi as cardShowFields,ji as cardStyleFields,Ti as cellWidthFields,Ai as checkbox,Fi as colorInput,ni as copyText,yi as directionField,Di as edgePad,li as entriesHiddenForTab,Pi as focalPicker,Ki as focusAfterRemove,Z as foldMetaOf,Zi as galleryLayoutField,fi as gapField,C as group,Li as heightFields,de as hidableText,so as hintIsWhileTyping,V as iconOf,Ji as imageCornersField,ci as isBucketHeader,Qn as isNoGlyph,oi as linkField,Bi as multiSelect,Zn as noGlyph,Oi as pageBackgroundField,ai as panelNote,wo as phoneOverrideField,wi as placementField,co as plainText,ri as plainTextarea,$ as pxField,ue as readHidable,Wo as rowText,Hi as searchSelect,si as section,hi as sectionAnimationFields,bo as sectionCornerSidesField,Co as sectionCornersField,mi as sectionShapeFields,pi as sectionThemeFields,ce as segmented,v as select,Uo as setRowText,Ei as sizeField,B as slider,Mi as sourceField,Ri as spacingFields,ei as text,Ze as textFieldIdentifier,Jr as textFieldOffPage,Vi as textList,zi as textListRowField,ti as textarea,N as toggle,$i as upload,eo as usePageWidthDetail,to as useSiteGapDetail,vi as widthField,Zr as withIdentifier,qr as withOffPage,jr as withScaffold};
1
+ "use client";import{jsx as r,jsxs as S,Fragment as I}from"react/jsx-runtime";import{cloneElement as Je,useId as Ze,useRef as j,useState as q}from"react";import{useEasel as O}from"efficient-easel/easel";import{readHidable as ue,hidableText as de}from"./hidable.js";import{FOCAL_DEFAULT as pe}from"../image-focus.js";import{FOLD_FIELD_MARKER as J,LINK_FIELD_MARKER as fe,MEDIA_FIELD_MARKER as me,SCAFFOLD_FIELD_MARKER as he,TEXT_FIELD_MARKER as T,foldMetaOf as Z,textFieldIdentifier as Qe}from"./field-markers.js";import et from"../../components/ApplyCornersToSiblings.js";import{CARD_IMAGE_RADIUS_STEP as tt,CORNER_RADIUS_MAX as W,CORNER_RADIUS_MIN as H}from"../content/card-image-shape.js";import{IMAGE_CORNER_STEP as nt,IMAGE_CORNERS_LABEL as ot}from"../content/image-corners.js";import{GRID_MAX_COLUMNS as rt}from"../content/grid-span.js";import{GALLERY_ACROSS_BUCKETS as it,GALLERY_LAYOUTS as A,GALLERY_LAYOUT_KEYS as ge}from"../content/gallery-layout.js";import{anchorSiblingsOf as lt,HERO_GROUP_PLACEMENTS as at,HERO_GROUP_PLACEMENT_DEFAULT as st,normalisePlacement as ct,placementPoints as be}from"../hero-group-placement.js";import ut from"../../components/KeepHint.js";import{AlignLeftIcon as dt,AlignSeparateIcon as pt,AnimationIcon as xe,BackgroundIcon as ft,BlockSectionIcon as mt,CartIcon as ht,ColumnWidthsIcon as Ce,ColumnsIcon as gt,CornerIcon as Se,DirectionDownIcon as bt,DirectionLeftIcon as xt,DirectionRightIcon as Ct,DirectionUpIcon as St,DollarIcon as _t,FinishIcon as It,GapIcon as _e,GridIcon as yt,GroundIcon as Et,HashIcon as Ie,ImageIcon as Tt,LayoutIcon as Rt,ListIcon as vt,LocationIcon as Q,PaddingBottomIcon as Lt,PaddingLeftIcon as Nt,PaddingRightIcon as Ot,PaddingTopIcon as At,PageIcon as ye,PhoneIcon as Ft,PlacementIcon as Pt,ProductSizeIcon as wt,RotateIcon as kt,SquareIcon as Dt,StylesIcon as Bt,TextLinesIcon as Ht,TypeIcon as Mt,WidthIcon as Gt,WrapIcon as $t}from"efficient-easel/icons";import{FieldGlyph as Ee}from"../../components/FieldGlyph.js";import{resolvePageBackground as Wt}from"../content/page-background.js";import{CORNER_SIDES as F,CORNER_SIDE_POINTS as ee,CORNER_SIDES_LABEL as P,cornerSidesSummary as Te,hasOwnSectionCorners as Ut,normalizeCornerSides as U}from"../content/section-corners.js";import{hasOwnCardCorners as Kt}from"../content/card-corners.js";import{SECTION_MOTION_NONE as Xt,SECTION_MOTION_OPTIONS as Vt}from"../content/section-animation.js";import{enclosingSectionProps as Re}from"./enclosing-section.js";import{SettingsCorners as ve,SettingsDefaultReset as g,SettingsField as m,SettingsGroupHead as zt,SettingsGroupSub as Yt,SettingsPlacement as jt,SettingsSegmented as qt,SettingsSwitch as Jt}from"efficient-easel/panel";import{FieldSelect as Zt,ListField as Qt}from"efficient-easel/fields";import{Checkbox as en,Tooltip as Le}from"efficient-shell/ui";import{ColourControl as Ne}from"./ColourControl.js";import Oe from"./MarkupToolbar.js";import{deviceField as R}from"./device-fields.js";import{noControlField as tn}from"./panel-no-control-mark.js";import{phoneKey as K,resolvePhoneValue as te}from"./phone-override.js";import{SuppressibleText as nn}from"./section-text-suppress.js";import{TYPED_NUMBER_COMMIT as on,typedNumberKey as Ae}from"./slider-typing.js";import{CARD_INDEX_OPTIONS as rn,CARD_OUTLINE_OPTIONS as ln,DEFAULT_CARD_INDEX_FORMAT as an,DEFAULT_CARD_OUTLINE as sn}from"../sections/product-card-style.js";import{COVER_INDEX_OPTIONS as cn,DEFAULT_COVER_INDEX as un}from"../sections/card-cover-index.js";import{SCALAR_TEXT_CONTROLS as dn}from"./text-control-kinds.js";import pn from"../../components/ImageFocusRow.js";import fn from"../../components/MediaUploadField.js";import mn from"../../components/MultiSelectField.js";import hn from"../../components/SectionThemePicker.js";import gn from"../../components/SearchSelectField.js";import bn from"../../components/StorefrontLinkField.js";import Fe from"../../components/UiIcon.js";import{SECTION_PADDING as _}from"../content/section-padding.js";import{hasPhoneHeight as xn,resolveSectionMinHeight as Cn}from"../content/section-min-height.js";import{VIEW_TIER_LABEL as ne}from"../content/view-tiers.js";import{SECTION_MIN_HEIGHT as Sn,SECTION_MIN_HEIGHT_GROUP_LABEL as M,SECTION_SCREEN_PCT as _n}from"../content/section-min-height.js";import{CONTAINER_DIRECTION_LABEL as In,containerDirectionPoints as yn,resolveContainerDirection as Pe}from"../content/container-direction.js";import{BOX_ALIGN_POINTS as En,BOX_BLOCK_SPACING_LABEL as Tn,BOX_BLOCK_SPACING_POINTS as we,BOX_JUSTIFY_POINTS as ke,BOX_PHONE_ROW_LABEL as Rn,BOX_PHONE_ROW_MAX as vn,BOX_PHONE_ROW_MIN as De,BOX_SHARE_LABEL as Be,BOX_SHARE_POINTS as oe,BOX_WRAP_LABEL as Ln,BOX_WRAP_POINTS as He}from"../content/box-layout.js";import{usePreviewHeader as X}from"../../components/PreviewHeaderContext.js";import{CONTAINER_GAP as re,CONTAINER_GAP_BUILT_IN as Nn,GAP_FIELD_CONTAINER as On,hasOwnContainerGap as An,resolveContainerGap as Fn}from"../content/container-gap.js";import{CARD_IMAGE_BG_INHERIT as Pn,CARD_IMAGE_BG_OFF as wn,CARD_IMAGE_BG_SWATCH_NAMES as kn,CARD_IMAGE_BG_SWATCHES as Dn,isCardImageBackgroundInheriting as Bn,resolveCardImageBackground as Hn,THEME_CARD_IMAGE_BG as Mn}from"../content/card-image-background.js";import{SECTION_BG_INHERIT as Gn,SECTION_BG_SWATCHES as $n,SECTION_BG_SWATCH_NAMES as Wn,THEME_SECTION_BG as Un,isSectionBackgroundInheriting as Kn}from"../content/section-background.js";import{SECTION_THEME_GROUP_LABEL as Xn}from"../content/section-surface.js";import{TYPE_SIZE_FIXED as Vn,TYPE_SIZE_INHERIT as zn,isTypeSizeInheriting as Yn}from"../content/section-type-size.js";import{SECTION_WIDTH_CHOICES as jn,WIDTH_CHOICE_LABEL as qn,WIDTH_INHERIT as Jn,resolveWidth as Zn,sectionRunsFullWidth as Me}from"../content/section-width.js";import{useFoldHeadingLevel as Ge}from"./panel-heading-scope.js";import{withStyleKind as Qn}from"efficient-easel/style-clipboard";function G(e){for(const[t,n]of Object.entries(e))n&&typeof n=="object"&&!Z(n)&&Qn(n,`section:${t}`);return e}function Jr({children:e}){return r("div",{className:"sf-field-label",children:e})}function $e(){return null}function eo(e){if(!e.trim())throw new Error("noGlyph() needs a reason naming the ruling that decided it.");return r($e,{},e)}function to(e){return e.type===$e}function V(e){return to(e)?void 0:e}function w(e,t){return`${e} from ${t}`}function no(){const{appState:e}=O(i=>i),t=e.data.root?.props??{},{mode:n,pageWidth:o}=Zn(t,"full");return w(n==="page"?`${o}px`:n==="contained"?"Contained":"Full","the page")}function oo(){const{blockGap:e}=X();return e===null?"this container's own spacing":w(`${e}px`,"Site styles")}function ro({inherited:e,onReset:t,label:n}){return r(g,{label:n,changed:!e,detail:oo(),onReset:t})}function io({inherited:e,onReset:t,label:n}){return r(g,{label:n,changed:!e,detail:no(),onReset:t})}function k({value:e,onChange:t,label:n,placeholder:o,hint:i,multiline:l,hideable:a=!0,markup:s=!0}){const{text:u,hidden:d}=ue(e),f=j(null),c=j(null),p=E=>t(a?{text:E,hidden:d}:E),h=()=>t({text:u,hidden:!d}),b=a&&d,y=Ze(),x=i?uo(i)?r("span",{className:"sf-hint-keep sf-hint-while-typing",children:i}):r(ut,{children:i}):void 0;return r(m,{label:n,icon:r(Mt,{}),htmlFor:y,className:b?"is-hidden":void 0,hint:x,action:a?r(Le,{content:d?`Show ${n} on the slide`:`Hide ${n} on the slide`,children:r("button",{type:"button",className:"sf-field-eye","aria-pressed":d,"aria-label":d?`Show ${n} on the slide`:`Hide ${n} on the slide`,onClick:h,children:d?r(Fe,{name:"eye-off",size:14}):r(Fe,{name:"eye",size:14})})}):void 0,children:S("div",{className:"sf-copybox",children:[s&&r(Oe,{target:l?c:f,value:u,onChange:p}),l?r("textarea",{id:y,ref:c,value:u,placeholder:o,onChange:E=>p(E.target.value)}):r("input",{id:y,ref:f,type:"text",value:u,placeholder:o,onChange:E=>p(E.target.value)})]})})}function Zr(e,t){return{...e,[he]:t}}function Qr(e){const t=e[T];if(!t)throw new Error("withOffPage: the field holds no authored text");return{...e,[T]:{...t,offPage:!0}}}function ei(e){return!e||typeof e!="object"?!1:e[T]?.offPage===!0}function ti(e){const t=e[T];if(!t)throw new Error("withIdentifier: the field holds no authored text");return{...e,[T]:{...t,identifier:!0}}}import{TEXT_CONTROL_KINDS as rl,SCALAR_TEXT_CONTROLS as il}from"./text-control-kinds.js";const lo=new Set(dn),D=(e,t)=>{const n={...t,[T]:e};if(!lo.has(e.control))return n;const o=t.render;return{...tn(n,"authored-copy"),render:i=>r(nn,{name:i.name,children:o(i)})}},ni="Everything else on this block comes from the linked post. Unlink it to edit by hand.",ao="Select a word, then press the highlighter.",so="A short name so a link can jump straight to this section, like yoursite.com/page#about.",co=new Set([ao]),uo=e=>co.has(e);function oi(e,t,n){return D({control:"text",label:e,placeholder:t,hint:n},{type:"custom",render:({value:o,onChange:i})=>r(k,{value:o,onChange:i,label:e,placeholder:t,hint:n})})}function ri(e,t,n){return D({control:"textarea",label:e,placeholder:t,hint:n},{type:"custom",render:({value:o,onChange:i})=>r(k,{value:o,onChange:i,label:e,placeholder:t,hint:n,multiline:!0})})}function po(e,t,n){return D({control:"plainText",label:e,placeholder:t,hint:n},{type:"custom",render:({value:o,onChange:i})=>r(k,{value:o,onChange:i,label:e,placeholder:t,hint:n,hideable:!1,markup:!1})})}function ii(e,t,n){return D({control:"copyText",label:e,placeholder:t,hint:n},{type:"custom",render:({value:o,onChange:i})=>r(k,{value:o,onChange:i,label:e,placeholder:t,hint:n,hideable:!1})})}function li(e){return{type:"custom",[fe]:{label:e},render:({value:t,onChange:n})=>r(bn,{value:de(t),onChange:n,label:e})}}function ai(e,t,n){return D({control:"plainTextarea",label:e,placeholder:t,hint:n},{type:"custom",render:({value:o,onChange:i})=>r(k,{value:o,onChange:i,label:e,placeholder:t,hint:n,multiline:!0,hideable:!1})})}const si={Content:Ht,Style:Bt,Layout:Rt,Animation:xe};function ci(e,t){return e.includes("Content")?t!=="Content":null}function fo({label:e}){return r(zt,{title:e,level:Ge(1)})}function mo({level:e,label:t}){return e===1?r(fo,{label:t}):r(go,{label:t})}function We(e,t){return{type:"custom",[J]:{label:e,level:t},render:()=>r(mo,{level:t,label:e})}}function C(e){return We(e,2)}function ui(e){return{type:"custom",render:()=>r(ho,{text:e})}}function ho({text:e}){return r("p",{className:"sf-note",children:e})}function di(e){return We(e,1)}function pi(e){return Z(e)!==null&&e?.tabs!==void 0}const Ue=new Map;function fi(e,t){const n=`${e}\0${t?t.join(""):""}`,o=Ue.get(n)??{type:"custom",tabs:t,[J]:{label:e,level:1},bucket:e,marker:!0,render:()=>r(I,{})};return Ue.set(n,o),o}function go({label:e}){return r(Yt,{title:e,level:Ge(2)})}function Ke({swatches:e,current:t,onPick:n,names:o}){const i=e.find(a=>a.toLowerCase()===t.toLowerCase()),l=(i?o?.[i]:void 0)??t;return S("div",{className:"sf-swatches",children:[e.map(a=>{const s=o?.[a]??a;return r(Le,{content:s,children:r("button",{type:"button","aria-pressed":t.toLowerCase()===a.toLowerCase(),className:`sf-swatch ${t.toLowerCase()===a.toLowerCase()?"is-active":""}`,style:{background:a},onClick:()=>n(a),"aria-label":s})},a)}),r("span",{className:"sf-swatch-hex",children:l})]})}function mi(e,t){return{type:"custom",render:({value:n,onChange:o})=>{const i=Kn(n,t);return r(m,{label:e,icon:r(ft,{}),changed:!i,action:r(g,{label:e,changed:!i,detail:"the theme's section background",onReset:()=>o(Gn)}),children:Ke({swatches:$n,current:i?Un:n??t??"",onPick:o,names:Wn})})}}}function bo(e,t){return{type:"custom",render:({value:n,onChange:o})=>{const i=n,l=Bn(i,t);return r(m,{label:e,icon:r(Et,{}),changed:!l,action:r(g,{label:e,changed:!l,detail:"the theme's image stage",onReset:()=>o(Pn)}),children:Ke({swatches:Dn,current:l?Mn:Hn(i,t),onPick:o,names:kn})})}}}function hi(e=n=>n,t){return G({_gSectionTheme:C(Xn),sectionAccent:{type:"custom",render:({value:n,onChange:o})=>r(hn,{value:e(n),onChange:o,followLabel:t})}})}function L({min:e,max:t,step:n,value:o,onChange:i,suffix:l="",readout:a=!0,notch:s,ariaLabel:u,disabled:d=!1}){const f=s!==void 0&&Number.isFinite(s)&&s>=e&&s<=t;return S("div",{className:f?"sf-slider has-notch":"sf-slider",style:f?{"--sf-notch":(s-e)/(t-e)}:void 0,children:[r("input",{type:"range",min:e,max:t,step:n,value:o,"aria-label":u,disabled:d||void 0,onChange:c=>i(Number(c.target.value))}),a&&r(xo,{value:o,min:e,max:t,step:n,suffix:l,ariaLabel:u,onChange:i})]})}function xo({value:e,min:t,max:n,step:o,onChange:i,suffix:l="",ariaLabel:a,children:s}){const[u,d]=q(null),f=c=>{c.editing||d(null),c.commit!==null&&c.commit!==e&&i(c.commit)};return u===null?r("button",{type:"button",className:"sf-slider-val",title:"Click to type a value","aria-label":a?`${a}: type a value`:"Type a value",onClick:()=>d(String(e)),children:s??S(I,{children:[e,l]})}):r("input",{autoFocus:!0,type:"text",inputMode:"decimal",className:"sf-slider-val sf-slider-typed",value:u,"aria-label":a,onChange:c=>d(c.target.value),onFocus:c=>c.currentTarget.select(),onKeyDown:c=>{const p=Ae(c.key,u,t,n,o);p.handled&&(c.preventDefault(),c.stopPropagation(),f(p))},onBlur:()=>f(Ae(on,u,t,n,o))})}function B(e,t,n,o,i,l,a="",s){return{type:"custom",render:u=>r(m,{label:e,icon:V(t),action:s?s("storedValue"in u?u.storedValue:u.value,u.onChange):void 0,children:L({min:n,max:o,step:i,value:typeof u.value=="number"?u.value:l,suffix:a,onChange:u.onChange})})}}function Xe({min:e,max:t,step:n,px:o,label:i,onChange:l,disabled:a=!1}){const{cornerRadiusPx:s}=X();return r(I,{children:L({min:e,max:t,step:n,value:o??(typeof s=="number"?s:e),readout:!1,ariaLabel:i,disabled:a,onChange:l})})}function $(e,t){const{min:n,max:o,step:i=1,unsetLabel:l,hint:a,restAtSite:s=!1,restTrack:u,unsetMark:d}=t;return{type:"custom",render:({value:f,onChange:c})=>{const p=typeof f=="number"?f:null,h=p===null;return r(m,{label:e,value:h?d?void 0:l:`${p}px`,changed:!h,action:d?Je(d,{changed:!h,onReset:()=>c(null)}):r(g,{label:e,changed:!h,onReset:()=>c(null)}),hint:a,children:u?u({min:n,max:o,step:i,px:p,label:e,onChange:c}):s?r(Xe,{min:n,max:o,step:i,px:p,label:e,onChange:c}):L({min:n,max:o,step:i,value:p??n,readout:!1,ariaLabel:e,onChange:c})})}}}function gi(e){const t=B("Gap",r(_e,{}),re.min,re.max,re.step,Nn[e],"px",(n,o)=>r(ro,{inherited:!An(e,n),onReset:()=>o(void 0),label:"Gap"}));return{type:"custom",[On]:e,render:n=>t.render({...n,value:Fn(e,n.value,n.field?.siteGap),storedValue:n.value,onChange:o=>n.onChange(o)})}}function Co(){return{type:"custom",render:({value:e,onChange:t})=>{const o=U(e)??[...F],i=o.length===F.length;return r(m,{label:P,icon:r(Se,{}),value:Te(o),changed:!i,action:r(g,{label:P,changed:!i,onReset:()=>t(null)}),hint:"Corners left off stay square. The row above sets how round the others are.",children:r(Eo,{value:o,onChange:l=>{const a=U(l)??[];t(a.length===F.length?null:a)}})})}}}function So({label:e,changed:t=!1,onReset:n=()=>{}}){const{cornerRadiusPx:o}=X(),i=typeof o=="number"?`${o}px`:"not set";return r(g,{label:e,changed:t,detail:o==null?"the built-in corners":w(i,"Site styles"),onReset:n})}function _o(){return $("Corners",{min:H,max:W,unsetLabel:"Follows the site",unsetMark:r(So,{label:"Corners"}),restTrack:e=>r(Io,{...e}),hint:r(yo,{})})}const Ve="This section runs edge to edge, so its corners sit off the page. Set Width to Content width to use them.";function ie(){return Me(z())}function Io(e){return r(Xe,{...e,disabled:ie()})}function yo(){return r(I,{children:ie()?Ve:"Follows Site styles ▸ Basics ▸ Corners until you set a number here."})}function Eo({value:e,onChange:t}){const n=ie();return r(ve,{label:P,value:e,corners:n?ee.map(o=>({...o,disabled:!0,title:Ve})):ee,onChange:t})}function bi(){return G({_gShape:C("Shape"),sectionCorners:_o(),sectionCornerSides:Co()})}function xi(){return{_gMotion:C("Motion"),sectionAnimation:ce("Entrance",r(xe,{}),[...Vt],Xt)}}function le(){let e=null;try{const{appState:t,selectedItem:n}=O(i=>i),o=n?.props?.id?String(n.props.id):void 0;e=o?Re(t?.data,o):null}catch{e=null}return e!==null&&Me(e)}function ze(e){const{cornerRadiusPx:t}=X(),n=le(),o=typeof t=="number"?t:e;let i=null;try{const{appState:a,selectedItem:s}=O(d=>d),u=s?.props?.id?String(s.props.id):void 0;i=u?Re(a?.data,u):null}catch{i=null}if(n||!i)return o;const l=i.sectionCorners;return Ut(l)?l:o}function To({min:e,max:t,step:n,px:o,label:i,onChange:l}){const a=ze(e);return r(I,{children:L({min:e,max:t,step:n,value:o??a,readout:!1,ariaLabel:i,onChange:l})})}function Ro({label:e,changed:t=!1,onReset:n=()=>{}}){const o=le(),i=ze(H),l=o?"Site":"Section";return r(g,{label:e,changed:t,detail:w(`${i}px`,o?"Site styles":"the section"),onReset:n})}function vo(){return r(I,{children:le()?"The section is full width, so this card follows Site styles ▸ Basics ▸ Corners.":"Follows the section's Corners until you set a number here."})}function Lo(){return $("Corners",{min:H,max:W,unsetLabel:"Follows the section",unsetMark:r(Ro,{label:"Corners"}),restTrack:e=>r(To,{...e}),hint:r(vo,{})})}function No({value:e,onChange:t}){return r(ve,{label:P,value:e,corners:ee,onChange:t})}function Oo({unset:e}){return r(I,{children:e?"Set a number above first — there is nothing to shape yet.":"Corners left off stay square. The row above sets how round the others are."})}function Ao(){return{type:"custom",render:({value:e,onChange:t})=>{const o=U(e)??[...F],i=o.length===F.length;return r(m,{label:P,icon:r(Se,{}),value:Te(o),changed:!i,action:r(g,{label:P,changed:!i,onReset:()=>t(null)}),hint:r(Oo,{unset:!Kt(e)}),children:r(No,{value:o,onChange:l=>{const a=U(l)??[];t(a.length===F.length?null:a)}})})}}}function Fo(){return{type:"custom",render:()=>r(et,{})}}function Ci(){return{_gShape:C("Shape"),cardCorners:Lo(),cardCornerSides:Ao(),cardCornersApplyAll:Fo()}}function Si(){return v("Justify",r(pt,{}),ke,ke[0].value)}function _i(){return v("Item alignment",r(dt,{}),En,"stretch")}function Ii(){return v(Ln,r($t,{}),He,He[0].value)}function yi(){return{type:"custom",render:({value:e,onChange:t})=>{const n=oe.find(o=>o.value===e)??oe[0];return r(m,{label:Be,icon:r(Ce,{}),value:n.label,children:r("div",{className:"sf-gallery-layouts",role:"group","aria-label":Be,children:oe.map(o=>r("button",{type:"button","aria-pressed":n.value===o.value,"aria-label":o.label,title:o.label,onClick:()=>t(o.value),children:r("span",{className:"sf-gallery-pic",children:Po(o.weights).map((i,l)=>r("i",{style:{gridColumn:`span ${i}`}},l))})},o.value))})})}}}function Po(e){if(!e)return[3,4];const t=e.reduce((n,o)=>n+o,0);return e.map(n=>Math.round(n/t*12))}function Ei(){return v(Tn,r(_e,{}),we,we[0].value)}function Ti(){return B(Rn,r(Ft,{}),De,vn,1,De)}function Ri(e){const t=ce(In,eo("`Direction` names how a container's children run — a MODIFIER, not a thing. doc/naming.md N10.1 gives the idea a dash in its Glyph column; editor-shell's own `direction` meaning says the bare row is CORRECT and not an omission (SS seat, 2026-09-11)."),yn(e),Pe(e,void 0));return{type:"custom",render:n=>t.render({...n,value:Pe(e,n.value),onChange:o=>n.onChange(o)})}}function vi(e,t,n,o,i,l){return{type:"custom",render:({value:a,onChange:s})=>r(m,{label:e,icon:r(Ee,{noun:l}),action:r(g,{label:e,changed:!Yn(a),detail:"the Text style in Site styles",onReset:()=>s(zn),defaultAction:{onPress:()=>s(Vn),title:"Keep this section's own built-in size",icon:r(mt,{})}}),children:L({min:t,max:n,step:o,value:typeof a=="number"?a:i,suffix:"px",onChange:s})})}}function Li(){return{_gCellWidth:C("Cell width"),gridSpan:v("Positions",r(Ce,{}),[{label:"Auto",value:""},...Array.from({length:rt},(e,t)=>({label:t===0?"1 position":`${t+1} positions`,value:String(t+1)}))],"")}}function z(){let e=null;try{e=O(t=>t).selectedItem}catch{e=null}return e?.props??{}}function wo({min:e,max:t,step:n,px:o,label:i,onChange:l,desktopKey:a,fallback:s}){const u=z()[a],d=te(void 0,u,s);return r(I,{children:L({min:e,max:t,step:n,value:te(o,u,s),readout:!1,ariaLabel:i,notch:d,onChange:l})})}function ko({label:e,desktopKey:t,fallback:n,changed:o=!1,onReset:i=()=>{}}){const l=z()[t],a=te(void 0,l,n);return r(g,{label:e,changed:o,detail:`${a}px on ${ne.desktop.toLowerCase()}`,onReset:i})}function Do(e){return $(e.label,{min:e.min,max:e.max,step:e.step,unsetLabel:`Follows ${ne.desktop}`,unsetMark:r(ko,{label:e.label,desktopKey:e.desktopKey,fallback:e.fallback}),restTrack:t=>r(wo,{...t,desktopKey:e.desktopKey,fallback:e.fallback})})}function Ni(e={}){const t=e.keys?.top??"sectionPaddingTop",n=e.keys?.bottom??"sectionPaddingBottom",o=e.group!==!1,i=x=>o?x:`Padding ${x.toLowerCase()}`,l=x=>B(i("Top"),r(At,{}),_.min,_.max,_.step,x,"px"),a=(x,E,qe,Y=_)=>R("mobile",Do({label:i(x),desktopKey:E,min:Y.min,max:Y.max,step:Y.step,fallback:qe})),s=e.top??_.min,u=e.bottom??_.min,d="sectionPaddingLeft",f="sectionPaddingRight",c=e.sideBounds??_,p=e.side??c.min,h=e.sidePhone??p,b=e.phone===!0,y=x=>b?R("desktop",x):x;return G({...o?{_gSpacing:C("Padding")}:{},[t]:y(l(s)),...b?{[K(t)]:a("Top",t,s)}:{},...e.only==="top"?{}:{[n]:y(B(i("Bottom"),r(Lt,{}),_.min,_.max,_.step,u,"px")),...b?{[K(n)]:a("Bottom",n,u)}:{}},...e.sides?{[d]:y(B(i("Left"),r(Nt,{}),c.min,c.max,c.step,p,"px")),...b?{[K(d)]:a("Left",d,h,c)}:{},[f]:y(B(i("Right"),r(Ot,{}),c.min,c.max,c.step,p,"px")),...b?{[K(f)]:a("Right",f,h,c)}:{}}:{}})}const Bo={contained:"Contained",page:"Page",full:"Full"},ae="Width";function Oi(e,t=jn,n=!0){const o=t.map(i=>({label:qn[i]??Bo[i],value:i}));return G({...n?{_gWidth:C(ae)}:{},widthMode:{type:"custom",render:({onChange:i,field:l})=>r(m,{label:"Width",icon:r(Gt,{}),action:n?r(io,{inherited:l?.inherited??!1,onReset:()=>i(Jn),label:ae}):void 0,children:se({options:o,value:l?.currentValue||e,onChange:i,ariaLabel:ae})})}})}function Ai(){const e=o=>({type:"custom",render:({value:i,onChange:l})=>S("div",{className:"sf-field",children:[o?S("div",{className:"sf-field-head",children:[r("span",{className:"sf-field-label sf-field-label--inline",children:M}),o(l)]}):null,r("div",{children:se({options:[{label:"Auto",value:"auto"},{label:"Fixed",value:"fixed"},{label:"Screen",value:"screen"}],value:["auto","fixed","screen"].includes(i)?i:"auto",onChange:l,ariaLabel:M})})]})}),t=()=>({type:"custom",render:({value:o,onChange:i,field:l})=>{const a=l?.unit==="%"?"%":"px",s=a==="%"?_n:Sn;return r("div",{className:"sf-field",children:L({min:s.min,max:s.max,step:s.step,value:typeof o=="number"?o:s.fallback,suffix:a,ariaLabel:M,onChange:i})})}}),n=()=>ce("Unit",r(Ie,{}),[{label:"px",value:"px"},{label:"%",value:"%"}],"px");return G({_gHeight:C(M),sectionHeightMode:R("desktop",e()),sectionHeightValue:R("desktop",t()),sectionHeightUnit:R("desktop",n()),sectionHeightModePhone:R("mobile",e(o=>r(Ho,{onClear:()=>o(void 0)}))),sectionHeightValuePhone:R("mobile",t()),sectionHeightUnitPhone:R("mobile",n())})}function Ho({onClear:e}){const t=z(),n=xn(t),o=Cn(t),i=`${o.mode==="auto"?"Auto":`${o.value}${o.unit}`} on ${ne.desktop.toLowerCase()}`;return r(g,{label:M,changed:n,detail:i,onReset:e})}function Fi(){return{_gAnchor:C("Anchor"),anchor:po("Anchor name","e.g. about",so)}}function N(e,t,n){return{type:"custom",render:({value:o,onChange:i,id:l,name:a})=>{const s=typeof o=="boolean"?o:t,u=`${l??a??e}-label`;return r(m,{label:e,labelId:u,icon:n,action:r(Jt,{checked:s,onChange:i,ariaLabelledBy:u})})}}}function Pi(){return{type:"custom",render:({value:e,onChange:t,id:n,name:o})=>{const i=`${String(n??o??"pageBackground")}-colour`;return r(m,{label:"Background",icon:r(ye,{}),htmlFor:i,action:r(Ne,{id:i,label:"Background",value:Wt(e),onChange:t})})}}}function wi(e,t){return{type:"custom",render:({value:n,onChange:o,id:i})=>{const l=typeof n=="boolean"?n:t,a=`${i??e}-checkbox`;return r(m,{label:e,htmlFor:a,className:"sf-checkbox",action:r(en,{id:a,checked:l,onChange:o})})}}}function ki(e,t){return{type:"custom",render:({value:n,onChange:o})=>r(m,{label:e,action:Ne({value:n||t,onChange:o,label:e})})}}const Mo=[{value:"0% 0%",label:"Top left"},{value:"50% 0%",label:"Top"},{value:"100% 0%",label:"Top right"},{value:"0% 50%",label:"Left"},{value:"50% 50%",label:"Center"},{value:"100% 50%",label:"Right"},{value:"0% 100%",label:"Bottom left"},{value:"50% 100%",label:"Bottom"},{value:"100% 100%",label:"Bottom right"}];function Ye({label:e,value:t,onChange:n,points:o=Mo}){return r(jt,{label:e,value:t,points:o,onChange:n})}function Di(e,t=pe,n="mediaImage"){return{type:"custom",render:({value:o,onChange:i})=>r("div",{className:"sf-focal-row",children:r(Go,{label:e,value:o||t,onChange:i,imageProp:n})})}}function Go({label:e,value:t,onChange:n,imageProp:o}){const{selectedItem:i}=O(a=>a),l=i?.props?.[o];return r(pn,{label:e,value:t,onChange:n,image:typeof l=="string"?l:void 0})}const $o=be([]);function Bi(e,{stacking:t,fallback:n=st}){return{type:"custom",render:({value:o,onChange:i})=>{const l=at.includes(o)?o:n;return t?r(Wo,{label:e,value:l,onChange:i}):je({label:e,value:l,onChange:i,points:$o})}}}function Wo({label:e,value:t,onChange:n}){const{appState:o,selectedItem:i}=O(s=>s),l=i?.props?.id?String(i.props.id):void 0,a=l?lt(o?.data,l):[];return je({label:e,value:t,onChange:n,points:be(a,l)})}function je({label:e,value:t,onChange:n,points:o}){const i=o.find(l=>l.disabled);return r(m,{label:e,icon:r(Pt,{}),hint:i?i.title:void 0,children:Ye({label:e,value:ct(t),onChange:n,points:o})})}const Hi={top:r(St,{}),right:r(Ct,{}),bottom:r(bt,{}),left:r(xt,{})};function Mi(e,t,n,o,i,l){const a=f=>t.find(c=>c.value===f),s=f=>({value:f,label:"",disabled:!0,title:o}),u=f=>{const c=t.find(h=>h.cell===f);if(!c)return s(`missing-${f}`);const p=l?.[f];return p?{value:c.value,label:c.label,icon:p}:{value:c.value,label:c.label}},d=[s("corner-top-left"),u("top"),s("corner-top-right"),u("left"),s("centre"),u("right"),s("corner-bottom-left"),u("bottom"),s("corner-bottom-right")];return{type:"custom",render:({value:f,onChange:c})=>{const p=t.some(h=>h.value===f)?f:n;return r(m,{label:e,icon:i,value:a(p)?.label??"",children:Ye({label:e,value:p,onChange:c,points:d})})}}}const Uo="\0note";function v(e,t,n,o,i){return{type:"custom",options:n,fallback:o,...i?{note:i}:{},render:({value:l,onChange:a,field:s})=>{const u=s.options??n,d=s.fallback??o,f=u.some(c=>c.value===l)?l:d;return r(m,{label:e,icon:V(t),children:r(Zt,{value:f,ariaLabel:e,onChange:a,options:[...i?[{label:i,value:Uo,disabled:!0}]:[],...u.map(c=>({label:c.label,value:c.value}))]})})}}}function Gi(e,t,n){return{type:"custom",options:t,render:({value:o,onChange:i,field:l})=>r(mn,{label:e,options:l.options??t,value:Array.isArray(o)?o:[],onChange:i,...n?{emptyLabel:n}:{}})}}function $i(e,t,n,o){return{type:"custom",options:t,fallback:n,render:({value:i,onChange:l,field:a})=>r(gn,{label:e,options:a.options??t,fallback:a.fallback??n,value:i,onChange:l,placeholder:o})}}function Wi(e,t={}){return{type:"custom",render:({value:n,onChange:o})=>{const i={value:n,onChange:o,...t};return r(e,{...i})}}}function se({options:e,value:t,onChange:n,ariaLabel:o,disabled:i=!1}){return r(qt,{options:e.map(l=>({id:l.value,label:l.label,title:l.title})),value:t,onChange:n,ariaLabel:o,disabled:i})}const Ui=[{label:"Image",value:"image"},{label:"Video",value:"video"}];function ce(e,t,n,o){const i=n.map(l=>typeof l=="string"?{label:l,value:l}:l);return{type:"custom",render:({value:l,onChange:a,field:s})=>r(m,{label:e,icon:V(t),children:se({options:i,value:i.some(u=>u.value===l)?l:l||s?.currentValue||o,onChange:a,ariaLabel:e})})}}function Ki(e,t,n){return{type:"custom",[me]:!0,render:({value:o,onChange:i})=>r(fn,{value:o||"",onChange:i,label:e,accept:t,placeholder:n})}}const Xi={HeroSingle:["imageFocal"],ContactLocations:["locations[].photo"],ProcessSteps:["steps[].image"]};function Vi({value:e,onChange:t,label:n}){const o=e||{},i=!!o.pending,l=i?"var(--fg-dim, #888)":o.ok?"#1d9e75":"#d85a30",a=(s,u)=>t({...o,[s]:u===""?void 0:Number(u)});return S(m,{label:n,icon:r(Q,{}),children:[r("button",{type:"button",disabled:i,onClick:()=>t({...o,pending:!0,ok:!1,status:"Finding…"}),style:{width:"100%",display:"flex",alignItems:"center",justifyContent:"center",gap:6,padding:"8px 10px",fontSize:13,cursor:i?"default":"pointer",opacity:i?.6:1,border:"1px solid var(--border-strong, #ccc)",borderRadius:6,background:"transparent",color:"inherit"},children:i?"Finding…":"Find coordinates"}),o.status&&r("div",{style:{marginTop:6,fontSize:12,lineHeight:1.4,color:l},children:o.status}),r("div",{style:{marginTop:6,fontSize:11,color:"var(--fg-dim, #999)"},children:"Coordinates from OpenStreetMap"}),r("button",{type:"button",onClick:()=>t({...o,manual:!o.manual}),style:{marginTop:8,padding:0,border:"none",background:"none",font:"inherit",fontSize:12,color:"var(--sf-accent, #2563eb)",cursor:"pointer",textDecoration:"underline"},children:o.manual?"Hide manual coordinates":"Enter coordinates manually"}),o.manual&&S("div",{style:{marginTop:8,display:"grid",gap:8},children:[r(m,{label:"Latitude",icon:r(Q,{}),children:r("input",{type:"number",step:"any",placeholder:"e.g. 34.0990198",value:typeof o.lat=="number"?o.lat:"",onChange:s=>a("lat",s.target.value)})}),r(m,{label:"Longitude",icon:r(Q,{}),children:r("input",{type:"number",step:"any",placeholder:"e.g. -117.9842833",value:typeof o.lng=="number"?o.lng:"",onChange:s=>a("lng",s.target.value)})})]})]})}function Ko(e,t){return t===null||t<0||t>=e.length?"":e[t]?.text??""}function Xo(e,t,n){const o=e.map(i=>({text:i?.text??""}));return t===null||t<0||t>=e.length?o:o.map((i,l)=>l===t?{text:n}:i)}function zi(e,t){return e===null?null:t>e?e:null}function Vo(e,t,n){if(n===null||n>=t.length)return null;for(let o=0;o<n;o+=1)if(e[o]!==t[o])return null;return e[n]!==t[n]&&t.includes(e[n])||e[n]!==t[n]&&t.length!==e.length?null:n}const Yi={label:"Ticker items",icon:r(vt,{})};function ji(e,t,n,o){return{type:"custom",[T]:{control:"textList",label:e,placeholder:n,itemKey:"text",rendering:o},render:({value:i,onChange:l})=>r(zo,{label:e,icon:V(t),items:Array.isArray(i)?i:[],placeholder:n,onChange:l,markup:o==="markup"})}}function zo({label:e,icon:t,items:n,placeholder:o,onChange:i,markup:l=!1}){const a=j(null),[s,u]=q(null),d=c=>c.map(p=>({text:p?.text??""}));return r(Qt,{label:e,icon:t,noun:"item",items:n,onChange:c=>{const p=Vo(n,c,s);p===null&&(a.current=null),u(p),i(d(c))},newItem:()=>({text:""}),open:null,onOpen:()=>{},renderItem:()=>null,above:l?r(Oe,{target:a,value:Ko(n,s),onChange:c=>i(Xo(n,s??-1,c)),disabled:s===null,label:s===null?"Formatting — click a row first":`Formatting — row ${s+1}`}):void 0,renderRow:(c,p,h)=>r("input",{type:"text",className:l&&s===p?"sf-list-marking":void 0,value:c?.text??"",placeholder:o,"aria-label":`${e} ${p+1}`,onChange:b=>h({text:b.target.value}),onFocus:b=>{a.current=b.currentTarget,u(p)}})})}function qi(e,t){const n=`${e.label} — row ${t+1}`;return D({control:"plainText",label:n,placeholder:e.placeholder,offPage:e.offPage},{type:"custom",render:({value:o,onChange:i})=>r(k,{value:o,onChange:i,label:n,placeholder:e.placeholder,hideable:!1,markup:e.rendering==="markup"})})}function Ji(e){return{_gCards:C("Cards"),coverIndex:v("Cover image",r(Tt,{}),cn,String(un),e?.coverHint??"A card's opening picture — a card pinned to a finish keeps its own."),imageBackground:bo("Image background",wn),cardImage:Yo(),spinOnHover:N("Rotate on hover",e?.spinDefault??!0,r(kt,{}))}}function Zi(){return{outline:v("Card outline",r(Dt,{}),ln,sn),indexBadge:v("Card number",r(Ie,{}),rn,an),showBadge:N("Product badge",!0,r(Ee,{noun:"tag"}))}}function Qi(e){const t=e?.bottomDefault??!0;return{_gShowOnCard:C("Show on a card"),showCardPrice:N("Price",!0,r(_t,{})),showCardFinishes:N("Finish swatches",!0,r(It,{})),showCardSizes:N("Sizes",t,r(wt,{})),showCardBuy:N("Buy button",t,r(ht,{})),showCardPage:N("Page button",t,r(ye,{}))}}function Yo(){return $("Card image",{min:H,max:W,step:tt,hint:"Rounds the picture. The card's own corner is in Site styles."})}function el(){return $(ot,{min:H,max:W,step:nt,unsetLabel:"Square",hint:"Rounds the picture. Left alone it stays square."})}function tl(){return{type:"custom",render:({value:e,onChange:t})=>r(jo,{value:typeof e=="string"?e:"",onChange:t})}}function jo({value:e,onChange:t}){const[n,o]=q(null),i=ge.filter(a=>n===null||A[a].across===n),l=e&&e in A?A[e]:null;return S(I,{children:[r(m,{label:"Photos in a row",icon:r(gt,{}),children:S("div",{className:"sf-gallery-filter",children:[r("button",{type:"button","aria-pressed":n===null,onClick:()=>o(null),children:"All"}),it.map(a=>r("button",{type:"button","aria-pressed":n===a,onClick:()=>o(a),children:a},a))]})}),r(m,{label:"Layout",icon:r(yt,{}),value:l?l.label:"Not chosen",hint:`${i.length} of ${ge.length} layouts`,children:r("div",{className:"sf-gallery-layouts",children:i.map(a=>r("button",{type:"button","aria-pressed":e===a,"aria-label":A[a].label,title:A[a].label,onClick:()=>t(e===a?"":a),children:r("span",{className:"sf-gallery-pic",children:A[a].desktop.map(([s,u],d)=>r("i",{style:{gridColumn:`span ${s}`,gridRow:`span ${u}`}},d))})},a))})})]})}export{so as ANCHOR_HINT,ni as BOUND_TO_POST_NOTE,si as BUCKET_ICONS,Xi as CUSTOM_FIELD_MEDIA,Vi as CoordsField,Hi as EDGE_ARROWS,pe as FOCAL_DEFAULT,Mo as FOCAL_POINTS,J as FOLD_FIELD_MARKER,Ye as FocalPicker,go as GroupLabel,ao as HIGHLIGHT_HINT,k as HidableTextField,fe as LINK_FIELD_MARKER,Jr as Label,me as MEDIA_FIELD_MARKER,Ui as MEDIA_TYPE_OPTIONS,ho as PanelNoteLine,je as PlacementGridView,he as SCAFFOLD_FIELD_MARKER,il as SCALAR_TEXT_CONTROLS,Ve as SECTION_BLEEDS_HINT,fo as SectionHeading,se as Segmented,ro as SiteGapDefaultReset,L as Slider,xo as SliderValue,Ke as Swatches,rl as TEXT_CONTROL_KINDS,T as TEXT_FIELD_MARKER,Yi as TICKER_ITEMS_ROW,zo as TextListField,io as WidthDefaultReset,Vo as aimAfterListChange,Fi as anchorFields,w as backTo,mi as backgroundField,_i as boxAlignField,Ei as boxBlockSpacingField,Si as boxJustifyField,Ti as boxPhoneRowField,yi as boxShareField,Ii as boxWrapField,fi as bucketHeader,Ao as cardCornerSidesField,Lo as cardCornersField,bo as cardImageBackgroundField,Yo as cardImageField,Ji as cardMediaFields,Ci as cardShapeFields,Qi as cardShowFields,Zi as cardStyleFields,Li as cellWidthFields,wi as checkbox,ki as colorInput,ii as copyText,Ri as directionField,Mi as edgePad,ci as entriesHiddenForTab,Di as focalPicker,zi as focusAfterRemove,Z as foldMetaOf,tl as galleryLayoutField,gi as gapField,C as group,Ai as heightFields,de as hidableText,uo as hintIsWhileTyping,V as iconOf,el as imageCornersField,pi as isBucketHeader,to as isNoGlyph,li as linkField,Gi as multiSelect,eo as noGlyph,Pi as pageBackgroundField,ui as panelNote,Do as phoneOverrideField,Bi as placementField,po as plainText,ai as plainTextarea,$ as pxField,ue as readHidable,Ko as rowText,$i as searchSelect,di as section,xi as sectionAnimationFields,Co as sectionCornerSidesField,_o as sectionCornersField,bi as sectionShapeFields,hi as sectionThemeFields,ce as segmented,v as select,Xo as setRowText,vi as sizeField,B as slider,Wi as sourceField,Ni as spacingFields,oi as text,Qe as textFieldIdentifier,ei as textFieldOffPage,ji as textList,qi as textListRowField,ri as textarea,N as toggle,Ki as upload,no as usePageWidthDetail,oo as useSiteGapDetail,Oi as widthField,ti as withIdentifier,Qr as withOffPage,Zr as withScaffold};
@@ -1 +1 @@
1
- import{anchorFields as m,bucketHeader as p,cardMediaFields as B,cardShowFields as E,cardStyleFields as w,foldMetaOf as y,group as O,heightFields as T,sectionAnimationFields as F,sectionShapeFields as I,sectionThemeFields as x,spacingFields as A,widthField as H}from"./controls.js";import{deviceField as R,deviceMetaOf as D}from"./device-fields.js";import{SETTINGS_BUCKETS as $}from"efficient-easel/panel";import{BUCKET_KEY as i}from"./field-buckets.js";const s=$,V=[i.Layout,...Object.keys(A({phone:!0})),...Object.keys(H("full")),...Object.keys(T()),...Object.keys(m())],z=[i.Style,...Object.keys(x())],X=[i.Style,...Object.keys(I())],Z=[i.Animation,...Object.keys(F())],K=Object.keys(B()),M=new Set(["cardImage","imageBackground"]),ee=[i.Style,...K.filter(o=>o.startsWith("_g")||M.has(o))],te=Object.keys(w()),oe=Object.keys(E({bottomDefault:!0})),P="Editor only \u2014 not shown live",v={"Archive link":"Content",Article:"Content",Boxes:"Content",Blocks:"Content","Blog posts":"Content","Browser mock":"Content",Button:"Content","Call to action":"Content","Car prompt":"Content","Card link":"Content",Cards:"Content","Claims bars":"Content","Contact info":"Content",Content:"Content","Content source":"Content",Contents:"Content",Filters:"Content","Show on a card":"Content","Opening filter":"Content",Footnote:"Content",Form:"Content",Founders:"Content","Gallery A":"Content","Gallery B":"Content","Gallery link":"Content",Header:"Content","Header link":"Content","Image caption":"Content","In this issue":"Content",Items:"Content","Kanban columns":"Content",Lead:"Content","Left panel":"Content",Link:"Content",Links:"Content","Message form":"Content",Metadata:"Content",Milestones:"Content","Mockup card":"Content","Newsletter panel":"Content",Offices:"Content",Options:"Content","Others gallery":"Content","Overlay button":"Content",Product:"Content","Product page":"Content",Products:"Content","Pull quote":"Content",Questions:"Content","Recent issues":"Content","Recent posts":"Content",Reviews:"Content","Right panel \xB7 actions":"Content","Right panel \xB7 choices":"Content","Right panel \xB7 form":"Content","Routing groups":"Content",Rows:"Content",Section:"Content","Section header":"Content",Sections:"Content","Signup form":"Content","Source product":"Content","Stat & note":"Content",Stats:"Content","Submit button":"Content","Success state":"Content",Wheel:"Content",Terminal:"Content",Text:"Content","Text column":"Content","Timeline entries":"Content","Top row":"Content",Total:"Content","Trailing note":"Content","\u201COther\u201D reason":"Content","Background images":"Style",Gallery:"Style",Image:"Style","Image column":"Style",Images:"Style",Logo:"Style",Media:"Style","Background image":"Style",Color:"Style","Image tint":"Style",Style:"Style",Shape:"Style",Texture:"Style","Text style":"Style",Motion:"Animation",Animation:"Animation",Anchor:"Layout",Arrangement:"Layout","Auto-slide":"Layout",Bar:"Layout","Cell width":"Layout",Behavior:"Layout",Controls:"Layout",Diagram:"Layout",[P]:"Layout","Filters shown":"Layout","Slide picker":"Layout",Arrows:"Layout","On a phone":"Layout",Nudge:"Layout","Image gallery":"Layout",Grid:"Layout",Layout:"Layout",Padding:"Layout",Price:"Layout",Preview:"Layout",Setup:"Layout","Show / hide elements":"Layout","Show in the buy box":"Layout",Visibility:"Layout",Width:"Layout",Height:"Layout"},_={"AlloyWheelsListing._gCards":"Style","ProductGrid._gCards":"Style"};function j(o,t,n){return _[`${o}.${t}`]??v[n]}const G={"ImageBlock._gStyle":"duplicated the Style bucket header above it (2026-09-04)","ButtonBlock._gStyle":"duplicated the Style bucket header above it (2026-09-04)","HeroGroup._gContent":"duplicated the Content bucket header above it (2026-09-04)","HeroGroup._gLayout":"duplicated the Layout bucket header above it (2026-09-04)","Footer._gLayout":"duplicated the Layout bucket header above it (2026-09-04)","FooterLogo._gContent":"duplicated the Content bucket header above it (2026-09-04)","FooterLogo._gStyle":"duplicated the Style bucket header above it (2026-09-04)","FooterMenu._gContent":"duplicated the Content bucket header above it (2026-09-04)","FooterMenu._gStyle":"duplicated the Style bucket header above it (2026-09-04)","FooterGroup._gLayout":"duplicated the Layout bucket header above it (2026-09-04)","FooterText._gContent":"duplicated the Content bucket header above it (2026-09-04)","FooterText._gStyle":"duplicated the Style bucket header above it (2026-09-04)","FooterSocial._gStyle":"duplicated the Style bucket header above it (born tabbed, 2026-09-17)","FooterSocial._gLayout":"duplicated the Layout bucket header above it (born tabbed, 2026-09-17)","MenuBlock._gContent":"duplicated the Content bucket header above it (born tabbed, H.1)","MenuBlock._gStyle":"duplicated the Style bucket header above it (born tabbed, H.1)","EmailFormBlock._gContent":"duplicated the Content bucket header above it (born tabbed, H.1)","SocialLogosBlock._gStyle":"duplicated the Style bucket header above it (born tabbed, H.1)","SocialLogosBlock._gLayout":"duplicated the Layout bucket header above it (born tabbed, H.1)","SearchBlock._gStyle":"duplicated the Style bucket header above it (born tabbed, H.2)","CartBlock._gStyle":"duplicated the Style bucket header above it (born tabbed, H.2)","Split._gContent":"duplicated the Content bucket header above it (2026-09-04)","Gallery._gVehicleContent":"duplicated the Content bucket header above it (2026-09-04)","Gallery._gWheelContent":"duplicated the Content bucket header above it (2026-09-04)","Gallery._gOthersContent":"duplicated the Content bucket header above it (2026-09-04)","Subscribe._gHeadCopy":"duplicated the Content bucket header above it (2026-09-04)","Subscribe._gLeftCopy":"duplicated the Content bucket header above it (2026-09-04)","Subscribe._gRightCopy":"duplicated the Content bucket header above it (2026-09-04)","CollectionCard._gContent":"duplicated the Content bucket header above it (A Card Sets Its Own Corners)","HeroSlide._gContent":"duplicated the Content bucket header above it (Hero Slide Tabs And Theme)","BrandStrip._gContent":"duplicated the Content bucket header above it (66338)","BrandStrip._gStyle":"duplicated the Style bucket header above it (66338)","BrandStrip._gLayout":"duplicated the Layout bucket header above it (66338)","KeyFeatures._gContent":"duplicated the Content bucket header above it (66049)","KeyFeatures._gStyle":"duplicated the Style bucket header above it (66049)","ParagraphsA._gContent":"duplicated the Content bucket header above it (66049)","ParagraphsA._gStyle":"duplicated the Style bucket header above it (66049)","Chart._gContent":"duplicated the Content bucket header above it (66049)","Chart._gStyle":"duplicated the Style bucket header above it (66049)","Logos._gContent":"duplicated the Content bucket header above it (66049)","Logos._gStyle":"duplicated the Style bucket header above it (66049)","Mockup._gContent":"duplicated the Content bucket header above it (66049)","Mockup._gStyle":"duplicated the Style bucket header above it (66049)","Stats._gContent":"duplicated the Content bucket header above it (66049)","Stats._gStyle":"duplicated the Style bucket header above it (66049)","StatsParagraph._gContent":"duplicated the Content bucket header above it (66049)","StatsParagraph._gStyle":"duplicated the Style bucket header above it (66049)","Testimonials._gContent":"duplicated the Content bucket header above it (66049)","Testimonials._gStyle":"duplicated the Style bucket header above it (66049)","AppointmentBooking._gContent":"duplicated the Content bucket header above it (66050)","BookingBox._gContent":"duplicated the Content bucket header above it ([SPLIT] Booking Form Into Three Boxes) \u2014 the same fault its own section retired in 66050, one level down","FAQ._gContent":"duplicated the Content bucket header above it (66050, family sweep)","FAQ._gLayout":"duplicated the Layout bucket header above it (66050, family sweep)","Form._gContent":"duplicated the Content bucket header above it (66050)","ReviewForm._gContent":"duplicated the Content bucket header above it (66050)","SubmitBuild._gContent":"duplicated the Content bucket header above it (66050)","SubmitBox._gContent":"duplicated the Content bucket header above it ([SPLIT] SubmitBuild Keeps Its Two Columns) \u2014 the same fault its own section retired in 66050, one level down","CheckoutCTA._gContent":"duplicated the Content bucket header above it (66051)","CheckoutCTA._gLayout":"duplicated the Layout bucket header above it (66051)","DeliveryOptions._gContent":"duplicated the Content bucket header above it (66051)","DeliveryOptions._gLayout":"duplicated the Layout bucket header above it (66051)","OrderSummary._gContent":"duplicated the Content bucket header above it (66051)","OrderSummary._gLayout":"duplicated the Layout bucket header above it (66051)","PaymentBadges._gContent":"duplicated the Content bucket header above it (66051)","PaymentBadges._gLayout":"duplicated the Layout bucket header above it (66051)","Collections._gContent":"duplicated the Content bucket header above it (66052)","Collections._gLayout":"duplicated the Layout bucket header above it (66052)","DocMasthead._gContent":"duplicated the Content bucket header above it (66053)","Events._gContent":"duplicated the Content bucket header above it (66054)","Events._gLayout":"duplicated the Layout bucket header above it (66054)","FeaturedCover._gContent":"duplicated the Content bucket header above it (66054)","Series._gStyle":"duplicated the Style bucket header above it (66054)","Flex._gContent":"duplicated the Content bucket header above it (66055)","Flex._gLayout":"duplicated the Layout bucket header above it (66055)","SectionHeader._gContent":"duplicated the Content bucket header above it (66055)","Breadcrumb._gContent":"duplicated the Content bucket header above it (66056)","CategoryBar._gStyle":"duplicated the Style bucket header above it (66056)","Hero._gContent":"duplicated the Content bucket header above it (66056)","Hero._gStyle":"duplicated the Style bucket header above it (66056)","HeroSingle._gStyle":"duplicated the Style bucket header above it (66056)","IntroBleed._gContent":"duplicated the Content bucket header above it (66056)","IntroBleed._gLayout":"duplicated the Layout bucket header above it (66056)","BundleOffer._gLayout":"duplicated the Layout bucket header above it (66059)","ProcessSteps._gContent":"duplicated the Content bucket header above it (66059)","Banner._gContent":"duplicated the Content bucket header above it (66060.1)","Banner._gLayout":"duplicated the Layout bucket header above it, and governed no controls (66060.1)","Manifesto._gContent":"duplicated the Content bucket header above it (66060.1)","SubscribeBlogs._gHeadCopy":"duplicated the Content bucket header above it (66060.1)","SubscribeBlogs._gLeftCopy":"duplicated the Content bucket header above it (66060.1)","SubscribeBlogs._gRightCopy":"duplicated the Content bucket header above it (66060.1)","Ticker._gContent":"duplicated the Content bucket header above it (66060.1)","Ticker._gStyle":"duplicated the Style bucket header above it (66060.1)","Timeline._gContent":"duplicated the Content bucket header above it (66060.1)","TitleWithButtons._gContent":"duplicated the Content bucket header above it (66060.1)","TitleWithButtons._gStyle":"duplicated the Style bucket header above it (66060.1)","Cards._gContent":"duplicated the Content bucket header above it (66218)","Cards._gStyle":"duplicated the Style bucket header above it (66218)","Prose._gContent":"duplicated the Content bucket header above it (66218)","Reviews._gContent":"duplicated the Content bucket header above it (66218)","Reviews._gStyle":"duplicated the Style bucket header above it (66218)"};function ne(o){const t=new Set(Object.values(i));for(const[n,d]of Object.entries(o))if(!t.has(n)&&y(d)?.level===1)return 1;return 2}function Y(o){const t=`${o}.`;return Object.keys(G).filter(n=>n.startsWith(t)).map(n=>n.slice(t.length))}function N(o,t){const n=D(o),d=O(t);return n?R(n.tier,d):d}function ae(o,t){const n=[],d=new Set(Y(t)),g=new Set;let h=null;for(const[e,r]of Object.entries(o)){const a=y(r);if(!a){h||n.push(h={bucket:"Content",entries:[]}),h.entries.push([e,r]);continue}if(d.has(e)){const l=v[a.label];if(a.level!==2||!l||a.label!==l)throw new Error(`${t}.${e}: RETIRED (lib/puck/field-groups.ts) lists this sub-heading as one whose name duplicates its bucket, but it is a level-${a.level} "${a.label}" header in the ${l??"(unclassified)"} bucket. Only a level-2 header whose label IS its bucket's name may be retired \u2014 anything else is a heading a merchant reads for its own sake. Fix the row or drop it.`);g.add(e),n.push(h={bucket:l,entries:[]});continue}const c=j(t,e,a.label);if(!c)throw new Error(`${t}.${e}: the inspector group "${a.label}" is not classified in LABEL_BUCKET (lib/puck/field-groups.ts), so there is no way to say which of ${s.join(" / ")} its controls belong under. Classify it \u2014 an unclassified group silently lands wherever it was declared, which is the whole bug.`);const u=e===i[c]&&a.level===1;if(!u&&e===i[c])throw new Error(`${t}.${e}: that key is reserved for the ${c} bucket header, but this field is a level-${a.level} "${a.label}" header, so it cannot serve as one. Rename the section's own field.`);n.push(h={bucket:c,entries:[[e,u||a.level===2?r:N(r,a.label)]],isBucketHeader:u})}const f=new Set(Object.entries(o).filter(([,e])=>y(e)).map(([e])=>e)),k=Object.keys(_).filter(e=>e.startsWith(`${t}.`)).filter(e=>!f.has(e.slice(t.length+1)));if(k.length)throw new Error(`${t}: KEY_BUCKET (lib/puck/field-groups.ts) lists ${JSON.stringify(k)}, but no fold header by that key is in this section's panel. Either the heading was renamed or removed and the row is stale, or the row names the wrong key \u2014 an override that quietly matches nothing is worse than no override.`);const b=n.some(e=>e.isBucketHeader)?[]:[...d].filter(e=>!g.has(e));if(b.length)throw new Error(`${t}: RETIRED (lib/puck/field-groups.ts) lists ${JSON.stringify(b)}, but this section has no such fold header${b.length>1?"s":""}. Either the heading was renamed or removed and the row is stale, or the row names the wrong section \u2014 a list that quietly matches nothing is worse than no list.`);for(const e of s){const r=i[e];if(r in o&&!n.some(a=>a.isBucketHeader&&a.entries[0]?.[0]===r))throw new Error(`${t}.${r} is reserved for the ${e} bucket header but is not a level-1 "${e}" fold header. Rename the section's own field.`)}const S=s.filter(e=>n.some(r=>r.bucket===e)),C={};for(const e of s){const r=n.filter(u=>u.bucket===e);if(!r.length)continue;const a=r.findIndex(u=>u.isBucketHeader);a>0&&r.unshift(...r.splice(a,1));const c=p(e,e===S[0]?S:null);a<0&&(C[i[e]]=c);for(const u of r)for(const[l,L]of u.entries)C[l]=u.isBucketHeader&&l===i[e]?c:L}return C}function ie(o){return i.Content in o?o:{[i.Content]:p("Content",null),...o}}function re(o){return s.some(t=>i[t]in o)}function de(o){const t=s.filter(d=>i[d]in o);if(t.length===0)return o;const n={...o};for(const d of t)n[i[d]]=p(d,d===t[0]?t:null);return n}export{ee as BOUND_CARD_MEDIA_FIELD_KEYS,s as BUCKETS,i as BUCKET_KEY,K as CARD_MEDIA_FIELD_KEYS,oe as CARD_SHOW_FIELD_KEYS,te as CARD_STYLE_FIELD_KEYS,P as EDITOR_ONLY_GROUP,_ as KEY_BUCKET,v as LABEL_BUCKET,V as LAYOUT_FIELD_KEYS,G as RETIRED,Z as SECTION_ANIM_FIELD_KEYS,X as SECTION_SHAPE_FIELD_KEYS,z as SECTION_THEME_FIELD_KEYS,ae as assignSectionGroups,j as bucketOf,ne as foldTopTier,re as hasBucketTabs,de as reseatBucketTabs,Y as retiredHeadings,ie as seatContentBucket};
1
+ import{anchorFields as m,bucketHeader as p,cardMediaFields as B,cardShowFields as E,cardStyleFields as w,foldMetaOf as y,group as O,heightFields as T,sectionAnimationFields as F,sectionShapeFields as I,sectionThemeFields as x,spacingFields as A,widthField as H}from"./controls.js";import{deviceField as R,deviceMetaOf as D}from"./device-fields.js";import{SETTINGS_BUCKETS as $}from"efficient-easel/panel";import{BUCKET_KEY as i}from"./field-buckets.js";const s=$,V=[i.Layout,...Object.keys(A({phone:!0})),...Object.keys(H("full")),...Object.keys(T()),...Object.keys(m())],z=[i.Style,...Object.keys(x())],X=[i.Style,...Object.keys(I())],Z=[i.Animation,...Object.keys(F())],K=Object.keys(B()),M=new Set(["cardImage","imageBackground"]),ee=[i.Style,...K.filter(o=>o.startsWith("_g")||M.has(o))],te=Object.keys(w()),oe=Object.keys(E({bottomDefault:!0})),P="Editor only — not shown live",v={"Archive link":"Content",Article:"Content",Boxes:"Content",Blocks:"Content","Blog posts":"Content","Browser mock":"Content",Button:"Content","Call to action":"Content","Car prompt":"Content","Card link":"Content",Cards:"Content","Claims bars":"Content","Contact info":"Content",Content:"Content","Content source":"Content",Contents:"Content",Filters:"Content","Show on a card":"Content","Opening filter":"Content",Footnote:"Content",Form:"Content",Founders:"Content","Gallery A":"Content","Gallery B":"Content","Gallery link":"Content",Header:"Content","Header link":"Content","Image caption":"Content","In this issue":"Content",Items:"Content","Kanban columns":"Content",Lead:"Content","Left panel":"Content",Link:"Content",Links:"Content","Message form":"Content",Metadata:"Content",Milestones:"Content","Mockup card":"Content","Newsletter panel":"Content",Offices:"Content",Options:"Content","Others gallery":"Content","Overlay button":"Content",Product:"Content","Product page":"Content",Products:"Content","Pull quote":"Content",Questions:"Content","Recent issues":"Content","Recent posts":"Content",Reviews:"Content","Right panel · actions":"Content","Right panel · choices":"Content","Right panel · form":"Content","Routing groups":"Content",Rows:"Content",Section:"Content","Section header":"Content",Sections:"Content","Signup form":"Content","Source product":"Content","Stat & note":"Content",Stats:"Content","Submit button":"Content","Success state":"Content",Wheel:"Content",Terminal:"Content",Text:"Content","Text column":"Content","Timeline entries":"Content","Top row":"Content",Total:"Content","Trailing note":"Content","“Other” reason":"Content","Background images":"Style",Gallery:"Style",Image:"Style","Image column":"Style",Images:"Style",Logo:"Style",Media:"Style","Background image":"Style",Color:"Style","Image tint":"Style",Style:"Style",Shape:"Style",Texture:"Style","Text style":"Style",Motion:"Animation",Animation:"Animation",Anchor:"Layout",Arrangement:"Layout","Auto-slide":"Layout",Bar:"Layout","Cell width":"Layout",Behavior:"Layout",Controls:"Layout",Diagram:"Layout",[P]:"Layout","Filters shown":"Layout","Slide picker":"Layout",Arrows:"Layout","On a phone":"Layout",Nudge:"Layout","Image gallery":"Layout",Grid:"Layout",Layout:"Layout",Padding:"Layout",Price:"Layout",Preview:"Layout",Setup:"Layout","Show / hide elements":"Layout","Show in the buy box":"Layout",Visibility:"Layout",Width:"Layout",Height:"Layout"},_={"AlloyWheelsListing._gCards":"Style","ProductGrid._gCards":"Style"};function j(o,t,n){return _[`${o}.${t}`]??v[n]}const G={"ImageBlock._gStyle":"duplicated the Style bucket header above it (2026-09-04)","ButtonBlock._gStyle":"duplicated the Style bucket header above it (2026-09-04)","HeroGroup._gContent":"duplicated the Content bucket header above it (2026-09-04)","HeroGroup._gLayout":"duplicated the Layout bucket header above it (2026-09-04)","Footer._gLayout":"duplicated the Layout bucket header above it (2026-09-04)","FooterLogo._gContent":"duplicated the Content bucket header above it (2026-09-04)","FooterLogo._gStyle":"duplicated the Style bucket header above it (2026-09-04)","FooterMenu._gContent":"duplicated the Content bucket header above it (2026-09-04)","FooterMenu._gStyle":"duplicated the Style bucket header above it (2026-09-04)","FooterGroup._gLayout":"duplicated the Layout bucket header above it (2026-09-04)","FooterText._gContent":"duplicated the Content bucket header above it (2026-09-04)","FooterText._gStyle":"duplicated the Style bucket header above it (2026-09-04)","FooterSocial._gStyle":"duplicated the Style bucket header above it (born tabbed, 2026-09-17)","FooterSocial._gLayout":"duplicated the Layout bucket header above it (born tabbed, 2026-09-17)","MenuBlock._gContent":"duplicated the Content bucket header above it (born tabbed, H.1)","MenuBlock._gStyle":"duplicated the Style bucket header above it (born tabbed, H.1)","EmailFormBlock._gContent":"duplicated the Content bucket header above it (born tabbed, H.1)","SocialLogosBlock._gStyle":"duplicated the Style bucket header above it (born tabbed, H.1)","SocialLogosBlock._gLayout":"duplicated the Layout bucket header above it (born tabbed, H.1)","SearchBlock._gStyle":"duplicated the Style bucket header above it (born tabbed, H.2)","CartBlock._gStyle":"duplicated the Style bucket header above it (born tabbed, H.2)","Split._gContent":"duplicated the Content bucket header above it (2026-09-04)","Gallery._gVehicleContent":"duplicated the Content bucket header above it (2026-09-04)","Gallery._gWheelContent":"duplicated the Content bucket header above it (2026-09-04)","Gallery._gOthersContent":"duplicated the Content bucket header above it (2026-09-04)","Subscribe._gHeadCopy":"duplicated the Content bucket header above it (2026-09-04)","Subscribe._gLeftCopy":"duplicated the Content bucket header above it (2026-09-04)","Subscribe._gRightCopy":"duplicated the Content bucket header above it (2026-09-04)","CollectionCard._gContent":"duplicated the Content bucket header above it (A Card Sets Its Own Corners)","HeroSlide._gContent":"duplicated the Content bucket header above it (Hero Slide Tabs And Theme)","BrandStrip._gContent":"duplicated the Content bucket header above it (66338)","BrandStrip._gStyle":"duplicated the Style bucket header above it (66338)","BrandStrip._gLayout":"duplicated the Layout bucket header above it (66338)","KeyFeatures._gContent":"duplicated the Content bucket header above it (66049)","KeyFeatures._gStyle":"duplicated the Style bucket header above it (66049)","ParagraphsA._gContent":"duplicated the Content bucket header above it (66049)","ParagraphsA._gStyle":"duplicated the Style bucket header above it (66049)","Chart._gContent":"duplicated the Content bucket header above it (66049)","Chart._gStyle":"duplicated the Style bucket header above it (66049)","Logos._gContent":"duplicated the Content bucket header above it (66049)","Logos._gStyle":"duplicated the Style bucket header above it (66049)","Mockup._gContent":"duplicated the Content bucket header above it (66049)","Mockup._gStyle":"duplicated the Style bucket header above it (66049)","Stats._gContent":"duplicated the Content bucket header above it (66049)","Stats._gStyle":"duplicated the Style bucket header above it (66049)","StatsParagraph._gContent":"duplicated the Content bucket header above it (66049)","StatsParagraph._gStyle":"duplicated the Style bucket header above it (66049)","Testimonials._gContent":"duplicated the Content bucket header above it (66049)","Testimonials._gStyle":"duplicated the Style bucket header above it (66049)","AppointmentBooking._gContent":"duplicated the Content bucket header above it (66050)","BookingBox._gContent":"duplicated the Content bucket header above it ([SPLIT] Booking Form Into Three Boxes) — the same fault its own section retired in 66050, one level down","FAQ._gContent":"duplicated the Content bucket header above it (66050, family sweep)","FAQ._gLayout":"duplicated the Layout bucket header above it (66050, family sweep)","Form._gContent":"duplicated the Content bucket header above it (66050)","ReviewForm._gContent":"duplicated the Content bucket header above it (66050)","SubmitBuild._gContent":"duplicated the Content bucket header above it (66050)","SubmitBox._gContent":"duplicated the Content bucket header above it ([SPLIT] SubmitBuild Keeps Its Two Columns) — the same fault its own section retired in 66050, one level down","CheckoutCTA._gContent":"duplicated the Content bucket header above it (66051)","CheckoutCTA._gLayout":"duplicated the Layout bucket header above it (66051)","DeliveryOptions._gContent":"duplicated the Content bucket header above it (66051)","DeliveryOptions._gLayout":"duplicated the Layout bucket header above it (66051)","OrderSummary._gContent":"duplicated the Content bucket header above it (66051)","OrderSummary._gLayout":"duplicated the Layout bucket header above it (66051)","PaymentBadges._gContent":"duplicated the Content bucket header above it (66051)","PaymentBadges._gLayout":"duplicated the Layout bucket header above it (66051)","Collections._gContent":"duplicated the Content bucket header above it (66052)","Collections._gLayout":"duplicated the Layout bucket header above it (66052)","DocMasthead._gContent":"duplicated the Content bucket header above it (66053)","Events._gContent":"duplicated the Content bucket header above it (66054)","Events._gLayout":"duplicated the Layout bucket header above it (66054)","FeaturedCover._gContent":"duplicated the Content bucket header above it (66054)","Series._gStyle":"duplicated the Style bucket header above it (66054)","Flex._gContent":"duplicated the Content bucket header above it (66055)","Flex._gLayout":"duplicated the Layout bucket header above it (66055)","SectionHeader._gContent":"duplicated the Content bucket header above it (66055)","Breadcrumb._gContent":"duplicated the Content bucket header above it (66056)","CategoryBar._gStyle":"duplicated the Style bucket header above it (66056)","Hero._gContent":"duplicated the Content bucket header above it (66056)","Hero._gStyle":"duplicated the Style bucket header above it (66056)","HeroSingle._gStyle":"duplicated the Style bucket header above it (66056)","IntroBleed._gContent":"duplicated the Content bucket header above it (66056)","IntroBleed._gLayout":"duplicated the Layout bucket header above it (66056)","BundleOffer._gLayout":"duplicated the Layout bucket header above it (66059)","ProcessSteps._gContent":"duplicated the Content bucket header above it (66059)","Banner._gContent":"duplicated the Content bucket header above it (66060.1)","Banner._gLayout":"duplicated the Layout bucket header above it, and governed no controls (66060.1)","Manifesto._gContent":"duplicated the Content bucket header above it (66060.1)","SubscribeBlogs._gHeadCopy":"duplicated the Content bucket header above it (66060.1)","SubscribeBlogs._gLeftCopy":"duplicated the Content bucket header above it (66060.1)","SubscribeBlogs._gRightCopy":"duplicated the Content bucket header above it (66060.1)","Ticker._gContent":"duplicated the Content bucket header above it (66060.1)","Ticker._gStyle":"duplicated the Style bucket header above it (66060.1)","Timeline._gContent":"duplicated the Content bucket header above it (66060.1)","TitleWithButtons._gContent":"duplicated the Content bucket header above it (66060.1)","TitleWithButtons._gStyle":"duplicated the Style bucket header above it (66060.1)","Cards._gContent":"duplicated the Content bucket header above it (66218)","Cards._gStyle":"duplicated the Style bucket header above it (66218)","Prose._gContent":"duplicated the Content bucket header above it (66218)","Reviews._gContent":"duplicated the Content bucket header above it (66218)","Reviews._gStyle":"duplicated the Style bucket header above it (66218)"};function ne(o){const t=new Set(Object.values(i));for(const[n,d]of Object.entries(o))if(!t.has(n)&&y(d)?.level===1)return 1;return 2}function Y(o){const t=`${o}.`;return Object.keys(G).filter(n=>n.startsWith(t)).map(n=>n.slice(t.length))}function N(o,t){const n=D(o),d=O(t);return n?R(n.tier,d):d}function ae(o,t){const n=[],d=new Set(Y(t)),g=new Set;let h=null;for(const[e,r]of Object.entries(o)){const a=y(r);if(!a){h||n.push(h={bucket:"Content",entries:[]}),h.entries.push([e,r]);continue}if(d.has(e)){const l=v[a.label];if(a.level!==2||!l||a.label!==l)throw new Error(`${t}.${e}: RETIRED (lib/puck/field-groups.ts) lists this sub-heading as one whose name duplicates its bucket, but it is a level-${a.level} "${a.label}" header in the ${l??"(unclassified)"} bucket. Only a level-2 header whose label IS its bucket's name may be retired — anything else is a heading a merchant reads for its own sake. Fix the row or drop it.`);g.add(e),n.push(h={bucket:l,entries:[]});continue}const c=j(t,e,a.label);if(!c)throw new Error(`${t}.${e}: the inspector group "${a.label}" is not classified in LABEL_BUCKET (lib/puck/field-groups.ts), so there is no way to say which of ${s.join(" / ")} its controls belong under. Classify it — an unclassified group silently lands wherever it was declared, which is the whole bug.`);const u=e===i[c]&&a.level===1;if(!u&&e===i[c])throw new Error(`${t}.${e}: that key is reserved for the ${c} bucket header, but this field is a level-${a.level} "${a.label}" header, so it cannot serve as one. Rename the section's own field.`);n.push(h={bucket:c,entries:[[e,u||a.level===2?r:N(r,a.label)]],isBucketHeader:u})}const f=new Set(Object.entries(o).filter(([,e])=>y(e)).map(([e])=>e)),k=Object.keys(_).filter(e=>e.startsWith(`${t}.`)).filter(e=>!f.has(e.slice(t.length+1)));if(k.length)throw new Error(`${t}: KEY_BUCKET (lib/puck/field-groups.ts) lists ${JSON.stringify(k)}, but no fold header by that key is in this section's panel. Either the heading was renamed or removed and the row is stale, or the row names the wrong key — an override that quietly matches nothing is worse than no override.`);const b=n.some(e=>e.isBucketHeader)?[]:[...d].filter(e=>!g.has(e));if(b.length)throw new Error(`${t}: RETIRED (lib/puck/field-groups.ts) lists ${JSON.stringify(b)}, but this section has no such fold header${b.length>1?"s":""}. Either the heading was renamed or removed and the row is stale, or the row names the wrong section — a list that quietly matches nothing is worse than no list.`);for(const e of s){const r=i[e];if(r in o&&!n.some(a=>a.isBucketHeader&&a.entries[0]?.[0]===r))throw new Error(`${t}.${r} is reserved for the ${e} bucket header but is not a level-1 "${e}" fold header. Rename the section's own field.`)}const S=s.filter(e=>n.some(r=>r.bucket===e)),C={};for(const e of s){const r=n.filter(u=>u.bucket===e);if(!r.length)continue;const a=r.findIndex(u=>u.isBucketHeader);a>0&&r.unshift(...r.splice(a,1));const c=p(e,e===S[0]?S:null);a<0&&(C[i[e]]=c);for(const u of r)for(const[l,L]of u.entries)C[l]=u.isBucketHeader&&l===i[e]?c:L}return C}function ie(o){return i.Content in o?o:{[i.Content]:p("Content",null),...o}}function re(o){return s.some(t=>i[t]in o)}function de(o){const t=s.filter(d=>i[d]in o);if(t.length===0)return o;const n={...o};for(const d of t)n[i[d]]=p(d,d===t[0]?t:null);return n}export{ee as BOUND_CARD_MEDIA_FIELD_KEYS,s as BUCKETS,i as BUCKET_KEY,K as CARD_MEDIA_FIELD_KEYS,oe as CARD_SHOW_FIELD_KEYS,te as CARD_STYLE_FIELD_KEYS,P as EDITOR_ONLY_GROUP,_ as KEY_BUCKET,v as LABEL_BUCKET,V as LAYOUT_FIELD_KEYS,G as RETIRED,Z as SECTION_ANIM_FIELD_KEYS,X as SECTION_SHAPE_FIELD_KEYS,z as SECTION_THEME_FIELD_KEYS,ae as assignSectionGroups,j as bucketOf,ne as foldTopTier,re as hasBucketTabs,de as reseatBucketTabs,Y as retiredHeadings,ie as seatContentBucket};
@@ -1 +1 @@
1
- function r(t,o){const n=t.props;if(t.type==="FooterMenu"){const e=n.menu;return n.heading||e?.name||"Menu"}if(t.type==="FooterText"){const e=typeof n.text=="string"?n.text.trim():"";return e?e.length>28?`${e.slice(0,28)}\u2026`:e:"Text"}return t.type==="FooterEmailSignup"?n.heading||"Email signup":o(t.type)}export{r as footerBlockRowName};
1
+ function r(t,o){const n=t.props;if(t.type==="FooterMenu"){const e=n.menu;return n.heading||e?.name||"Menu"}if(t.type==="FooterText"){const e=typeof n.text=="string"?n.text.trim():"";return e?e.length>28?`${e.slice(0,28)}…`:e:"Text"}return t.type==="FooterEmailSignup"?n.heading||"Email signup":o(t.type)}export{r as footerBlockRowName};
@@ -1 +1 @@
1
- import{geocodeAddress as c}from"../geocode.js";const i=a=>typeof a=="number"&&Number.isFinite(a);function r(a){return a.some(g=>{const l=g?.geocode;return l?l.pending||l.manual&&l.lat===void 0&&l.lng===void 0?!0:i(l.lat)&&l.lat!==g.lat||i(l.lng)&&l.lng!==g.lng:!1})}async function m(a,g,{geocode:l=c,courtesyGapMs:s=1100}={}){const u=e=>new Promise(n=>setTimeout(n,e));let d=a.slice();if(a.some(e=>e?.geocode?.pending)){const e=[];let n=!1;for(const t of a){if(!t?.geocode?.pending){e.push(t);continue}n&&s>0&&await u(s),n=!0;try{const o=await l(g(t));e.push(o?{...t,lat:o.lat,lng:o.lng,geocode:{...t.geocode,pending:!1,ok:!0,status:`Found \u2014 ${o.label.split(",").slice(0,3).join(",").trim()}`,lat:o.lat,lng:o.lng}}:{...t,geocode:{...t.geocode,pending:!1,ok:!1,status:"No match \u2014 check the address and try again."}})}catch{e.push({...t,geocode:{...t.geocode,pending:!1,ok:!1,status:"Lookup busy \u2014 try again in a moment."}})}}d=e}return d.map(e=>{const n=e?.geocode;if(!n)return e;if(n.manual&&n.lat===void 0&&n.lng===void 0)return{...e,geocode:{...n,lat:e.lat,lng:e.lng}};const t=i(n.lat)&&n.lat!==e.lat?n.lat:e.lat,o=i(n.lng)&&n.lng!==e.lng?n.lng:e.lng;return t!==e.lat||o!==e.lng?{...e,lat:t,lng:o}:e})}export{r as needsGeocodeWork,m as resolveGeocodeRows};
1
+ import{geocodeAddress as c}from"../geocode.js";const i=a=>typeof a=="number"&&Number.isFinite(a);function r(a){return a.some(g=>{const l=g?.geocode;return l?l.pending||l.manual&&l.lat===void 0&&l.lng===void 0?!0:i(l.lat)&&l.lat!==g.lat||i(l.lng)&&l.lng!==g.lng:!1})}async function m(a,g,{geocode:l=c,courtesyGapMs:s=1100}={}){const u=e=>new Promise(n=>setTimeout(n,e));let d=a.slice();if(a.some(e=>e?.geocode?.pending)){const e=[];let n=!1;for(const t of a){if(!t?.geocode?.pending){e.push(t);continue}n&&s>0&&await u(s),n=!0;try{const o=await l(g(t));e.push(o?{...t,lat:o.lat,lng:o.lng,geocode:{...t.geocode,pending:!1,ok:!0,status:`Found — ${o.label.split(",").slice(0,3).join(",").trim()}`,lat:o.lat,lng:o.lng}}:{...t,geocode:{...t.geocode,pending:!1,ok:!1,status:"No match — check the address and try again."}})}catch{e.push({...t,geocode:{...t.geocode,pending:!1,ok:!1,status:"Lookup busy — try again in a moment."}})}}d=e}return d.map(e=>{const n=e?.geocode;if(!n)return e;if(n.manual&&n.lat===void 0&&n.lng===void 0)return{...e,geocode:{...n,lat:e.lat,lng:e.lng}};const t=i(n.lat)&&n.lat!==e.lat?n.lat:e.lat,o=i(n.lng)&&n.lng!==e.lng?n.lng:e.lng;return t!==e.lat||o!==e.lng?{...e,lat:t,lng:o}:e})}export{r as needsGeocodeWork,m as resolveGeocodeRows};
@@ -1,2 +1,2 @@
1
- import{bucketByGroup as h}from"../locations-grid.js";const s=t=>String(t?.group??""),d=new WeakMap;let x=0;function b(t){let e=d.get(t);return e||(e=`loc${++x}`,d.set(t,e)),e}const w=(t,e)=>e||t||"Ungrouped",y={photo:"",group:"",groupName:"",name:"City name",state:"State",country:"Country",timezone:"GMT \xB7 UTC +0",address:`Address line one
2
- Address line two`,phone:"+00 000 0000",hours:"Mon\u2013Fri 9:00\u201318:00",lat:0,lng:0,mapsUrl:""};function a(t){return h(t,s,e=>String(e?.groupName??"")).map(e=>({key:e.key,name:e.name,cards:e.items.map(n=>n.item)}))}const m=t=>t.flatMap(e=>e.cards),g=(t,e,n)=>Math.min(Math.max(t,e),n);function C(t,e,n){let r=0;for(let o=0;o<t.length;o++)if(s(t[o])===e){if(r===n)return o;r++}return-1}function G(t,e,n){const r=a(t);if(e<0||e>=r.length)return t;const[o]=r.splice(e,1),u=g(e<n?n-1:n,0,r.length);return r.splice(u,0,o),m(r)}function N(t,e,n,r,o){const u=a(t),c=u.find(f=>f.key===e),i=u.find(f=>f.key===r);if(!c||!i||n<0||n>=c.cards.length)return t;const[p]=c.cards.splice(n,1),l=e===r?p:{...p,group:i.key,groupName:i.name};l!==p&&d.set(l,b(p));const k=g(c===i&&n<o?o-1:o,0,i.cards.length);return i.cards.splice(k,0,l),m(u)}function S(t,e){const n=a(t),r=n.find(u=>u.key===e),o={...y,group:e,groupName:r?.name??""};return r?(r.cards.push(o),m(n)):[...t,o]}function O(t){const e=new Set(a(t).map(o=>o.key));let n=e.size+1,r=`Group ${n}`;for(;e.has(r);)r=`Group ${++n}`;return{cards:[...t,{...y,group:r,groupName:""}],key:r}}function _(t,e){return t.filter(n=>s(n)!==e)}function v(t,e,n){const r=C(t,e,n);return r<0?t:t.filter((o,u)=>u!==r)}function T(t,e,n){const r=t.flatMap((c,i)=>s(c)===e?[i]:[]),o=t.slice();r.forEach((c,i)=>{o[c]=n[i]});const u=n.slice(r.length);return[...o.filter(c=>c!==void 0),...u]}function U(t,e,n){return e.flatMap(r=>{const o=t.filter(u=>s(u)===r);return o.length?o:n(r)})}export{y as NEW_CITY,C as absCityIndex,S as addCity,O as addGroup,a as bucketsOf,b as cardKey,v as deleteCity,_ as deleteGroup,s as groupKeyOf,w as groupLabelOf,N as moveCity,G as moveGroup,T as writeGroupCities,U as writeGroupOrder};
1
+ import{bucketByGroup as h}from"../locations-grid.js";const s=t=>String(t?.group??""),d=new WeakMap;let x=0;function b(t){let e=d.get(t);return e||(e=`loc${++x}`,d.set(t,e)),e}const w=(t,e)=>e||t||"Ungrouped",y={photo:"",group:"",groupName:"",name:"City name",state:"State",country:"Country",timezone:"GMT · UTC +0",address:`Address line one
2
+ Address line two`,phone:"+00 000 0000",hours:"Mon–Fri 9:00–18:00",lat:0,lng:0,mapsUrl:""};function a(t){return h(t,s,e=>String(e?.groupName??"")).map(e=>({key:e.key,name:e.name,cards:e.items.map(n=>n.item)}))}const m=t=>t.flatMap(e=>e.cards),g=(t,e,n)=>Math.min(Math.max(t,e),n);function C(t,e,n){let r=0;for(let o=0;o<t.length;o++)if(s(t[o])===e){if(r===n)return o;r++}return-1}function G(t,e,n){const r=a(t);if(e<0||e>=r.length)return t;const[o]=r.splice(e,1),u=g(e<n?n-1:n,0,r.length);return r.splice(u,0,o),m(r)}function N(t,e,n,r,o){const u=a(t),c=u.find(f=>f.key===e),i=u.find(f=>f.key===r);if(!c||!i||n<0||n>=c.cards.length)return t;const[p]=c.cards.splice(n,1),l=e===r?p:{...p,group:i.key,groupName:i.name};l!==p&&d.set(l,b(p));const k=g(c===i&&n<o?o-1:o,0,i.cards.length);return i.cards.splice(k,0,l),m(u)}function S(t,e){const n=a(t),r=n.find(u=>u.key===e),o={...y,group:e,groupName:r?.name??""};return r?(r.cards.push(o),m(n)):[...t,o]}function O(t){const e=new Set(a(t).map(o=>o.key));let n=e.size+1,r=`Group ${n}`;for(;e.has(r);)r=`Group ${++n}`;return{cards:[...t,{...y,group:r,groupName:""}],key:r}}function _(t,e){return t.filter(n=>s(n)!==e)}function v(t,e,n){const r=C(t,e,n);return r<0?t:t.filter((o,u)=>u!==r)}function T(t,e,n){const r=t.flatMap((c,i)=>s(c)===e?[i]:[]),o=t.slice();r.forEach((c,i)=>{o[c]=n[i]});const u=n.slice(r.length);return[...o.filter(c=>c!==void 0),...u]}function U(t,e,n){return e.flatMap(r=>{const o=t.filter(u=>s(u)===r);return o.length?o:n(r)})}export{y as NEW_CITY,C as absCityIndex,S as addCity,O as addGroup,a as bucketsOf,b as cardKey,v as deleteCity,_ as deleteGroup,s as groupKeyOf,w as groupLabelOf,N as moveCity,G as moveGroup,T as writeGroupCities,U as writeGroupOrder};
@@ -1 +1 @@
1
- import{SNAPSHOT_OBJECTS as s,HYDRATED_LISTS as l}from"./snapshot-contracts.js";const b={heading:"Main heading",body:"Add supporting copy.",eyebrow:"Label",button:"Button label",alt:"Image description",caption:"Image caption",address:null,phone:null,email:null,legal:null,generic:"Label"},o=[{semantic:"alt",name:/(^|[a-z])alt$|^imageLabel$|Alt$/i,label:/\balt text\b/i},{semantic:"caption",name:/caption/i,label:/\bcaption\b/i},{semantic:"email",name:/email/i,label:/\be-?mail\b/i},{semantic:"phone",name:/phone|tel$|mobile/i,label:/\bphone\b|\btelephone\b/i},{semantic:"address",name:/address|street|postcode|suburb|^hours$|^timezone$/i,label:/\baddress\b|\bopening hours\b/i},{semantic:"legal",name:/consent|finePrint|legal|disclaimer|copyright|abn|acn/i,label:/\bconsent\b|\bfine print\b|\blegal\b|\bdisclaimer\b/i},{semantic:"button",name:/^cta|Cta|button|Button|submitText|linkText|readLabel|viewLabel|archiveText|subscribedText/i,label:/\bbutton\b|\bcta\b|\blink text\b/i},{semantic:"eyebrow",name:/eyebrow|kicker|badge|^tag$|^num$|Number$|^label$|Label$|^meta|Meta$|^value$/i,label:/\beyebrow\b|\bkicker\b|\bbadge\b|\blabel\b|\bnumber\b|\btag\b/i},{semantic:"heading",name:/heading|Heading|^title|Title$|titleTop|titleBottom|^name$|question/i,label:/\bheading\b|\btitle\b/i},{semantic:"body",name:/body|description|^desc$|^intro|^lead|^dek$|^deck$|blurb|^copy$|quote|tagline|answer|^note$|footnote|^text$/i,label:/\bbody\b|\bdescription\b|\bblurb\b|\bintro\b|\bparagraph\b/i}];function g(e,a="",r=!1){for(const t of o)if(t.name?.test(e))return t.semantic;for(const t of o)if(t.label?.test(a))return t.semantic;return r?"body":"generic"}const c=["anchor"],d=/^href$|Href$|^url$|Url$|^link$|^mailto$|^tel$/;function E(e){return c.includes(e)||d.test(e)}const T={Reviews:["designCode"],ReviewForm:["designCode"],Form:["formSlug"]},v={HeroSingle:[{path:"eyebrow",semantic:"eyebrow",shape:"hidable"},{path:"titleTop",semantic:"heading",shape:"hidable"}],Hero:[{path:"tickerItems",semantic:"eyebrow",shape:"textList"}],ContactLocations:[{path:"sectionNumber",semantic:"eyebrow"},{path:"heading",semantic:"heading"},{path:"tagline",semantic:"body"},{path:"galleryKicker",semantic:"eyebrow"},{path:"galleryHint",semantic:"body"},{path:"locations[].groupName",semantic:"eyebrow"},{path:"locations[].name",semantic:"heading",neutral:"City name"},{path:"locations[].address",semantic:"address"},{path:"locations[].phone",semantic:"phone"},{path:"locations[].email",semantic:"email"},{path:"locations[].state",semantic:"address"},{path:"locations[].country",semantic:"address"},{path:"locations[].region",semantic:"address"},{path:"locations[].hours",semantic:"address"},{path:"locations[].timezone",semantic:"address"}]},p={Gallery:{source:{verb:"snapshot",keep:[]}},ProductHero:{source:{verb:"snapshot",keep:[]}},SpecTable:{source:{verb:"snapshot",keep:[]},wheel:{verb:"reference"},finish:{verb:"reference"},size:{verb:"reference"}},CollectionCard:{collection:{verb:"snapshot",keep:[]}},FooterMenu:{menu:{verb:"snapshot",keep:[]}},MenuBlock:{menu:{verb:"snapshot",keep:[]}},BrandStrip:{picks:{verb:"reference"}},ProductGrid:{design_codes:{verb:"reference"}},ProductRef:{code:{verb:"reference"},finish:{verb:"reference"}},FitmentTable:{wheel:{verb:"reference"}},GalleryItem:{fromProduct:{verb:"reference"}},Footprint:{"offices[].group":{verb:"groupKey"},"offices[].lat":{verb:"pii"},"offices[].lng":{verb:"pii"},"offices[].geocode":{verb:"pii"}}};p.ContactLocations={"locations[].lat":{verb:"pii"},"locations[].lng":{verb:"pii"},"locations[].mapsUrl":{verb:"pii"},"locations[].geocode":{verb:"pii"}};const S=["previewProduct"],y=Object.fromEntries(Object.entries(s).map(([e,a])=>[e,Object.keys(a)])),_=Object.fromEntries(Object.entries(l).map(([e,a])=>[e,[...a]])),m=["email","phone","address"],u={email:"Email address",phone:"Phone number",address:"Address"},h=[{rule:"email address",re:/[\w.+-]+@[\w-]+\.[\w.]+/},{rule:"url or domain",re:/https?:\/\/|\bwww\.|\.(?:com|net|org|au|co|io)\b/i},{rule:"phone number",re:/(?:\+\d[\d\s-]{7,}|\b0\d[\d\s-]{7,})/},{rule:"street address",re:/\b\d+[a-z]?\s+[A-Z][a-z]+\s+(?:St|Street|Rd|Road|Ave|Avenue|Hwy|Highway|Dr|Drive)\b/}];function $(e,a){const r=(a??"").trim();if(r){const t=h.find(({re:i})=>i.test(r));if(!t)return{ok:!0,neutral:r,source:"declared"};const n=m.includes(e)?u[e]:void 0;return n?{ok:!0,neutral:n,source:"safe-substitute"}:{ok:!1,reason:`declared placeholder ${JSON.stringify(r)} looks like a ${t.rule}. A placeholder is copied verbatim into every platform template \u2014 make it generic.`}}return{ok:!0,neutral:b[e],source:"fallback"}}export{v as CUSTOM_FIELD_TEXT,p as CUSTOM_FIELD_VALUES,_ as HYDRATED_PROPS_FROM_MEDIA_CONTRACT,d as LINK_TEXT_PROP_RE,h as PLACEHOLDER_FORBIDDEN,T as REFERENCE_TEXT_FIELDS,S as ROOT_REFERENCE_PROPS,u as SAFE_SEMANTIC_PLACEHOLDER,m as SEMANTICS_WITH_UNSAFE_PLACEHOLDERS,b as SEMANTIC_FALLBACKS,y as SNAPSHOT_PROPS_FROM_MEDIA_CONTRACT,c as STRUCTURAL_TEXT_PROPS,g as classifyTextSemantic,E as isStructuralTextProp,$ as resolveNeutralValue};
1
+ import{SNAPSHOT_OBJECTS as s,HYDRATED_LISTS as l}from"./snapshot-contracts.js";const b={heading:"Main heading",body:"Add supporting copy.",eyebrow:"Label",button:"Button label",alt:"Image description",caption:"Image caption",address:null,phone:null,email:null,legal:null,generic:"Label"},o=[{semantic:"alt",name:/(^|[a-z])alt$|^imageLabel$|Alt$/i,label:/\balt text\b/i},{semantic:"caption",name:/caption/i,label:/\bcaption\b/i},{semantic:"email",name:/email/i,label:/\be-?mail\b/i},{semantic:"phone",name:/phone|tel$|mobile/i,label:/\bphone\b|\btelephone\b/i},{semantic:"address",name:/address|street|postcode|suburb|^hours$|^timezone$/i,label:/\baddress\b|\bopening hours\b/i},{semantic:"legal",name:/consent|finePrint|legal|disclaimer|copyright|abn|acn/i,label:/\bconsent\b|\bfine print\b|\blegal\b|\bdisclaimer\b/i},{semantic:"button",name:/^cta|Cta|button|Button|submitText|linkText|readLabel|viewLabel|archiveText|subscribedText/i,label:/\bbutton\b|\bcta\b|\blink text\b/i},{semantic:"eyebrow",name:/eyebrow|kicker|badge|^tag$|^num$|Number$|^label$|Label$|^meta|Meta$|^value$/i,label:/\beyebrow\b|\bkicker\b|\bbadge\b|\blabel\b|\bnumber\b|\btag\b/i},{semantic:"heading",name:/heading|Heading|^title|Title$|titleTop|titleBottom|^name$|question/i,label:/\bheading\b|\btitle\b/i},{semantic:"body",name:/body|description|^desc$|^intro|^lead|^dek$|^deck$|blurb|^copy$|quote|tagline|answer|^note$|footnote|^text$/i,label:/\bbody\b|\bdescription\b|\bblurb\b|\bintro\b|\bparagraph\b/i}];function g(e,a="",r=!1){for(const t of o)if(t.name?.test(e))return t.semantic;for(const t of o)if(t.label?.test(a))return t.semantic;return r?"body":"generic"}const c=["anchor"],d=/^href$|Href$|^url$|Url$|^link$|^mailto$|^tel$/;function E(e){return c.includes(e)||d.test(e)}const T={Reviews:["designCode"],ReviewForm:["designCode"],Form:["formSlug"]},v={HeroSingle:[{path:"eyebrow",semantic:"eyebrow",shape:"hidable"},{path:"titleTop",semantic:"heading",shape:"hidable"}],Hero:[{path:"tickerItems",semantic:"eyebrow",shape:"textList"}],ContactLocations:[{path:"sectionNumber",semantic:"eyebrow"},{path:"heading",semantic:"heading"},{path:"tagline",semantic:"body"},{path:"galleryKicker",semantic:"eyebrow"},{path:"galleryHint",semantic:"body"},{path:"locations[].groupName",semantic:"eyebrow"},{path:"locations[].name",semantic:"heading",neutral:"City name"},{path:"locations[].address",semantic:"address"},{path:"locations[].phone",semantic:"phone"},{path:"locations[].email",semantic:"email"},{path:"locations[].state",semantic:"address"},{path:"locations[].country",semantic:"address"},{path:"locations[].region",semantic:"address"},{path:"locations[].hours",semantic:"address"},{path:"locations[].timezone",semantic:"address"}]},p={Gallery:{source:{verb:"snapshot",keep:[]}},ProductHero:{source:{verb:"snapshot",keep:[]}},SpecTable:{source:{verb:"snapshot",keep:[]},wheel:{verb:"reference"},finish:{verb:"reference"},size:{verb:"reference"}},CollectionCard:{collection:{verb:"snapshot",keep:[]}},FooterMenu:{menu:{verb:"snapshot",keep:[]}},MenuBlock:{menu:{verb:"snapshot",keep:[]}},BrandStrip:{picks:{verb:"reference"}},ProductGrid:{design_codes:{verb:"reference"}},ProductRef:{code:{verb:"reference"},finish:{verb:"reference"}},FitmentTable:{wheel:{verb:"reference"}},GalleryItem:{fromProduct:{verb:"reference"}},Footprint:{"offices[].group":{verb:"groupKey"},"offices[].lat":{verb:"pii"},"offices[].lng":{verb:"pii"},"offices[].geocode":{verb:"pii"}}};p.ContactLocations={"locations[].lat":{verb:"pii"},"locations[].lng":{verb:"pii"},"locations[].mapsUrl":{verb:"pii"},"locations[].geocode":{verb:"pii"}};const S=["previewProduct"],y=Object.fromEntries(Object.entries(s).map(([e,a])=>[e,Object.keys(a)])),_=Object.fromEntries(Object.entries(l).map(([e,a])=>[e,[...a]])),m=["email","phone","address"],u={email:"Email address",phone:"Phone number",address:"Address"},h=[{rule:"email address",re:/[\w.+-]+@[\w-]+\.[\w.]+/},{rule:"url or domain",re:/https?:\/\/|\bwww\.|\.(?:com|net|org|au|co|io)\b/i},{rule:"phone number",re:/(?:\+\d[\d\s-]{7,}|\b0\d[\d\s-]{7,})/},{rule:"street address",re:/\b\d+[a-z]?\s+[A-Z][a-z]+\s+(?:St|Street|Rd|Road|Ave|Avenue|Hwy|Highway|Dr|Drive)\b/}];function $(e,a){const r=(a??"").trim();if(r){const t=h.find(({re:i})=>i.test(r));if(!t)return{ok:!0,neutral:r,source:"declared"};const n=m.includes(e)?u[e]:void 0;return n?{ok:!0,neutral:n,source:"safe-substitute"}:{ok:!1,reason:`declared placeholder ${JSON.stringify(r)} looks like a ${t.rule}. A placeholder is copied verbatim into every platform template — make it generic.`}}return{ok:!0,neutral:b[e],source:"fallback"}}export{v as CUSTOM_FIELD_TEXT,p as CUSTOM_FIELD_VALUES,_ as HYDRATED_PROPS_FROM_MEDIA_CONTRACT,d as LINK_TEXT_PROP_RE,h as PLACEHOLDER_FORBIDDEN,T as REFERENCE_TEXT_FIELDS,S as ROOT_REFERENCE_PROPS,u as SAFE_SEMANTIC_PLACEHOLDER,m as SEMANTICS_WITH_UNSAFE_PLACEHOLDERS,b as SEMANTIC_FALLBACKS,y as SNAPSHOT_PROPS_FROM_MEDIA_CONTRACT,c as STRUCTURAL_TEXT_PROPS,g as classifyTextSemantic,E as isStructuralTextProp,$ as resolveNeutralValue};
@@ -1 +1 @@
1
- import{TEXT_FIELD_MARKER as s}from"./field-markers.js";import{partText as p,partValueWithText as x,typeInPlaceKind as y}from"./part-text.js";import{decodePartKey as P,encodePartKey as b}from"./part-key.js";function d(t){if(!(!t||typeof t!="object"))return t[s]}function l(t){if(!t||typeof t!="object")return null;const r=t.arrayFields;return r&&typeof r=="object"?r:null}function A(t,r){if(!Array.isArray(r))return[];const e=d(t),i=[];if(e?.control==="textList"){const n=e.itemKey??"text";return r.forEach((u,a)=>{const c=u?.[n];typeof c=="string"&&c&&i.push({row:{index:a,rowKey:n},text:c})}),i}const o=l(t);return o?(r.forEach((n,u)=>{for(const[a,c]of Object.entries(o)){if(!y(c))continue;const f=p(n?.[a]);f&&i.push({row:{index:u,rowKey:a},text:f})}}),i):[]}function w(t,r){if(Array.isArray(t))return t[r.index]?.[r.rowKey]}function K(t,r,e,i){const o=t[r];return!Array.isArray(o)||e.index<0||e.index>=o.length?null:{...t,[r]:o.map((n,u)=>u===e.index?{...n,[e.rowKey]:i}:n)}}function R(t,r,e,i,o){const n=w(t[r],e);return p(n)===o?null:K(t,r,e,x(i,n,o))}function T(t,r){return r?`${t} \xB7 row ${r.index+1}`:t}export{l as arrayFieldsOf,P as decodePartKey,b as encodePartKey,R as partPropsWithRowText,K as partPropsWithRowValue,T as partRowHeadLabel,A as partRowTexts,w as partRowValue,d as textMeta};
1
+ import{TEXT_FIELD_MARKER as s}from"./field-markers.js";import{partText as p,partValueWithText as x,typeInPlaceKind as y}from"./part-text.js";import{decodePartKey as P,encodePartKey as b}from"./part-key.js";function d(t){if(!(!t||typeof t!="object"))return t[s]}function l(t){if(!t||typeof t!="object")return null;const r=t.arrayFields;return r&&typeof r=="object"?r:null}function A(t,r){if(!Array.isArray(r))return[];const e=d(t),i=[];if(e?.control==="textList"){const n=e.itemKey??"text";return r.forEach((u,a)=>{const c=u?.[n];typeof c=="string"&&c&&i.push({row:{index:a,rowKey:n},text:c})}),i}const o=l(t);return o?(r.forEach((n,u)=>{for(const[a,c]of Object.entries(o)){if(!y(c))continue;const f=p(n?.[a]);f&&i.push({row:{index:u,rowKey:a},text:f})}}),i):[]}function w(t,r){if(Array.isArray(t))return t[r.index]?.[r.rowKey]}function K(t,r,e,i){const o=t[r];return!Array.isArray(o)||e.index<0||e.index>=o.length?null:{...t,[r]:o.map((n,u)=>u===e.index?{...n,[e.rowKey]:i}:n)}}function R(t,r,e,i,o){const n=w(t[r],e);return p(n)===o?null:K(t,r,e,x(i,n,o))}function T(t,r){return r?`${t} · row ${r.index+1}`:t}export{l as arrayFieldsOf,P as decodePartKey,b as encodePartKey,R as partPropsWithRowText,K as partPropsWithRowValue,T as partRowHeadLabel,A as partRowTexts,w as partRowValue,d as textMeta};