efficient-web-builder 42.0.0 → 43.0.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 (147) hide show
  1. package/CHANGELOG.md +164 -0
  2. package/dist/editor/components/AnchorField.js +1 -1
  3. package/dist/editor/components/DuplicatePageDialog.js +1 -1
  4. package/dist/editor/components/MediaUploadField.d.ts +3 -1
  5. package/dist/editor/components/MediaUploadField.js +1 -1
  6. package/dist/editor/components/PagesPanel.js +1 -1
  7. package/dist/editor/components/SectionEditor.d.ts +5 -1
  8. package/dist/editor/components/SectionEditor.js +1 -1
  9. package/dist/editor/components/SectionIcon.js +1 -1
  10. package/dist/editor/components/SectionThumbnail.js +1 -1
  11. package/dist/editor/components/SiteFields.d.ts +2 -1
  12. package/dist/editor/components/SiteFields.js +1 -1
  13. package/dist/editor/components/StorefrontEditor.js +1 -1
  14. package/dist/editor/components/StylesPanel.d.ts +3 -1
  15. package/dist/editor/components/StylesPanel.js +1 -1
  16. package/dist/editor/components/WebsiteScreenParts.js +1 -1
  17. package/dist/editor/components/WebsiteSettingsPanel.d.ts +6 -1
  18. package/dist/editor/components/WebsiteSettingsPanel.js +1 -1
  19. package/dist/editor/components/useHostDocumentBridge.js +1 -1
  20. package/dist/editor/components/useLocationsTree.js +1 -1
  21. package/dist/editor/components/useSectionToBoxPass.js +1 -1
  22. package/dist/editor/components/useSocialSettings.d.ts +2 -2
  23. package/dist/editor/lib/document/ColourControl.d.ts +7 -2
  24. package/dist/editor/lib/document/ColourControl.js +1 -1
  25. package/dist/editor/lib/document/blocks/general/ButtonBlock/fields.js +1 -1
  26. package/dist/editor/lib/document/blocks/general/Flex/fields.js +1 -1
  27. package/dist/editor/lib/document/blocks/general/HeroSlide/fields.js +1 -1
  28. package/dist/editor/lib/document/blocks/general/Logos/fields.js +1 -1
  29. package/dist/editor/lib/document/blocks/general/Text/fields.js +1 -1
  30. package/dist/editor/lib/document/blocks/general/index.d.ts +2 -2
  31. package/dist/editor/lib/document/canvas-typing.js +1 -1
  32. package/dist/editor/lib/document/consent-words-field.d.ts +6 -0
  33. package/dist/editor/lib/document/consent-words-field.js +1 -0
  34. package/dist/editor/lib/document/controls.d.ts +13 -2
  35. package/dist/editor/lib/document/controls.js +1 -1
  36. package/dist/editor/lib/document/field-groups.js +1 -1
  37. package/dist/editor/lib/document/footer-blocks.js +1 -1
  38. package/dist/editor/lib/document/locked-blocks.d.ts +3 -0
  39. package/dist/editor/lib/document/locked-blocks.js +1 -1
  40. package/dist/editor/lib/document/overrides.js +1 -1
  41. package/dist/editor/lib/document/page-root-fields.d.ts +1 -0
  42. package/dist/editor/lib/document/page-root-fields.js +1 -1
  43. package/dist/editor/lib/document/section-width-fields.js +1 -1
  44. package/dist/editor/lib/document/selected-host.d.ts +2 -0
  45. package/dist/editor/lib/document/selected-host.js +1 -0
  46. package/dist/editor/lib/page-copy.js +1 -1
  47. package/dist/editor/lib/sections/section-dry-run.d.ts +2 -9
  48. package/dist/editor/lib/sections/section-dry-run.js +2 -2
  49. package/dist/format/lib/content/authored-props.js +1 -1
  50. package/dist/format/lib/content/block-sources.js +1 -1
  51. package/dist/format/lib/content/box-layout.d.ts +1 -0
  52. package/dist/format/lib/content/box-layout.js +1 -1
  53. package/dist/format/lib/content/box-shadow.d.ts +3 -0
  54. package/dist/format/lib/content/box-shadow.js +1 -0
  55. package/dist/format/lib/content/button-icon.d.ts +2 -1
  56. package/dist/format/lib/content/button-icon.js +1 -1
  57. package/dist/format/lib/content/button-look.d.ts +46 -0
  58. package/dist/format/lib/content/button-look.js +1 -0
  59. package/dist/format/lib/content/consent-banner.d.ts +21 -0
  60. package/dist/format/lib/content/consent-banner.js +1 -1
  61. package/dist/format/lib/content/contact.js +1 -1
  62. package/dist/format/lib/content/footer.d.ts +10 -0
  63. package/dist/format/lib/content/footer.js +1 -1
  64. package/dist/format/lib/content/gallery-layout.d.ts +12 -0
  65. package/dist/format/lib/content/gallery-layout.js +1 -1
  66. package/dist/format/lib/content/section-padding.d.ts +10 -0
  67. package/dist/format/lib/content/section-padding.js +1 -1
  68. package/dist/format/lib/content/section-width.d.ts +0 -4
  69. package/dist/format/lib/content/section-width.js +1 -1
  70. package/dist/format/lib/document/blocks/general/Logos/meta.d.ts +6 -0
  71. package/dist/format/lib/document/blocks/general/Logos/meta.js +1 -1
  72. package/dist/format/lib/document/blocks/general/SectionHeader/meta.js +1 -1
  73. package/dist/format/lib/document/box-footer.js +1 -1
  74. package/dist/format/lib/document/container-blocks.js +1 -1
  75. package/dist/format/lib/document/media-manifest.json +3 -2
  76. package/dist/format/lib/document/nestable-content-sections.js +1 -1
  77. package/dist/format/lib/document/passes/settings-groups.js +1 -1
  78. package/dist/format/lib/document/root-panel.d.ts +8 -0
  79. package/dist/format/lib/document/root-panel.js +1 -0
  80. package/dist/format/lib/document/section-catalog.js +1 -1
  81. package/dist/format/lib/document/source-bound-parts.js +1 -1
  82. package/dist/format/lib/editor-words-catalogue.d.ts +23 -4
  83. package/dist/format/lib/editor-words-catalogue.js +4 -4
  84. package/dist/format/lib/editor-words.js +1 -1
  85. package/dist/format/lib/hero-texture.js +1 -1
  86. package/dist/format/lib/hero-video.d.ts +7 -0
  87. package/dist/format/lib/hero-video.js +1 -1
  88. package/dist/format/lib/links/page-link-rules.js +1 -1
  89. package/dist/format/lib/non-empty-string.d.ts +1 -0
  90. package/dist/format/lib/non-empty-string.js +1 -0
  91. package/dist/format/lib/popup/look.d.ts +1 -1
  92. package/dist/format/lib/popup/look.js +1 -1
  93. package/dist/format/lib/reel.d.ts +2 -1
  94. package/dist/format/lib/reel.js +1 -1
  95. package/dist/format/lib/sections/hero-overlay.js +1 -1
  96. package/dist/format/lib/sections/logo-look.d.ts +7 -0
  97. package/dist/format/lib/sections/logo-look.js +1 -0
  98. package/dist/format/lib/sections/section-head-placement.d.ts +1 -0
  99. package/dist/format/lib/sections/section-head-placement.js +1 -1
  100. package/dist/format/lib/site-theme-row.d.ts +0 -1
  101. package/dist/format/lib/slugify.d.ts +1 -1
  102. package/dist/format/lib/slugify.js +1 -1
  103. package/dist/format/lib/theme.d.ts +2 -1
  104. package/dist/format/lib/theme.js +4 -4
  105. package/dist/render/components/BoxTabs.d.ts +2 -1
  106. package/dist/render/components/BoxTabs.js +1 -1
  107. package/dist/render/components/Btn.d.ts +1 -0
  108. package/dist/render/components/Btn.js +1 -1
  109. package/dist/render/components/ButtonBlock.d.ts +12 -1
  110. package/dist/render/components/ButtonBlock.js +1 -1
  111. package/dist/render/components/DocBody.js +5 -5
  112. package/dist/render/components/Flex.d.ts +3 -1
  113. package/dist/render/components/Flex.js +1 -1
  114. package/dist/render/components/LogoBlock.d.ts +1 -1
  115. package/dist/render/components/LogoBlock.js +1 -1
  116. package/dist/render/components/LogoWallContext.d.ts +12 -0
  117. package/dist/render/components/LogoWallContext.js +1 -0
  118. package/dist/render/components/Logos.d.ts +16 -1
  119. package/dist/render/components/Logos.js +1 -1
  120. package/dist/render/components/PaymentBadges.d.ts +3 -1
  121. package/dist/render/components/PaymentBadges.js +1 -1
  122. package/dist/render/components/PreviewHeaderContext.d.ts +1 -3
  123. package/dist/render/components/PreviewHeaderContext.js +1 -1
  124. package/dist/render/components/Reel.js +1 -1
  125. package/dist/render/components/SiteGutterFrame.d.ts +2 -1
  126. package/dist/render/components/SiteGutterFrame.js +1 -1
  127. package/dist/render/lib/document/blocks/general/ButtonBlock/render.js +1 -1
  128. package/dist/render/lib/document/blocks/general/Flex/render.js +1 -1
  129. package/dist/render/lib/document/blocks/general/HeroSlide/render.js +1 -1
  130. package/dist/render/lib/document/blocks/general/Logos/render.js +1 -1
  131. package/dist/render/lib/document/blocks/general/PaymentBadges/render.js +1 -1
  132. package/dist/render/lib/document/blocks/general/section-to-box-row-parts.d.ts +4 -1
  133. package/dist/render/lib/document/blocks/general/section-to-box-row-parts.js +1 -1
  134. package/dist/render/lib/document/blocks/general/section-to-box-rows-logos.d.ts +2 -0
  135. package/dist/render/lib/document/blocks/general/section-to-box-rows-logos.js +1 -0
  136. package/dist/render/lib/document/blocks/general/section-to-box-rows-stats.d.ts +5 -0
  137. package/dist/render/lib/document/blocks/general/section-to-box-rows-stats.js +1 -0
  138. package/dist/render/lib/document/blocks/general/section-to-box-rows.d.ts +0 -4
  139. package/dist/render/lib/document/blocks/general/section-to-box-rows.js +1 -1
  140. package/dist/render/lib/document/page-render.js +1 -1
  141. package/dist/render/lib/document/part-rows.js +1 -1
  142. package/dist/render/lib/document/passes/section-anchor.js +1 -1
  143. package/dist/render/lib/document/text-parts.js +1 -1
  144. package/dist/render/lib/sections/section-to-box.d.ts +2 -11
  145. package/dist/render/lib/sections/section-to-box.js +1 -1
  146. package/dist/render/lib/text-styles/site-text-styles.js +2 -2
  147. package/package.json +5 -5
@@ -1 +1 @@
1
- "use client";import{jsx as n,jsxs as _,Fragment as w}from"react/jsx-runtime";import{useEasel as N}from"efficient-easel/easel";import{useState as R}from"react";import W from"./ThemeField.js";import O from"./CornersField.js";import L from"./CardShadowField.js";import z from"./ShadowColourField.js";import v from"./BlockGapField.js";import G from"./HoverEffectField.js";import Y from"./PhotographyField.js";import j from"./ShareButtonField.js";import X from"./SideSpaceField.js";import{BackgroundWidthRow as U,ContentWidthRow as $,SITE_BACKGROUND_HINT as K,SITE_CONTENT_HINT as M}from"./SectionWidthRows.js";import q from"./SiteAccentField.js";import J from"./SiteTextStylesField.js";import{usePreviewHeader as m}from"../../render/components/PreviewHeaderContext.js";import{Tabs as Q,Tooltip as V,tabButtonId as Z,tabPanelId as D}from"efficient-shell/ui";import{ContrastIcon as ee,NoteIcon as te,SettingsIcon as ne,TypeIcon as oe}from"efficient-easel/icons";import{useThemeRowPersist as ie}from"../lib/theme-row-persist.js";import{themeSaveNotice as re}from"../../format/lib/theme-save-message.js";import{say as S}from"../../format/lib/editor-words.js";import{NEUTRAL_SITE_NAME as se}from"../../format/lib/content/site-name.js";import{PAGE_WIDTH as b}from"../../format/lib/content/page-width.js";import{previewFrame as ae}from"efficient-easel/screen/lib/document/preview-dom";import{useSiteTextStylesWriter as ce}from"../lib/site-text-styles-writer.js";import{CORNER_STYLE_TO_PX as le,normalizeCornerRadius as de,normalizeCornerStyle as he,normalizeShadowColor as ue,selectedThemeColors as pe}from"../../format/lib/theme.js";const E="sf-site-styles",fe="sf-site-styles-tabpanel",ge=!1,me="Show hints";function Se({shown:e,onChange:t}){return n("div",{className:"sf-hints",children:_("button",{type:"button","aria-pressed":e,onClick:()=>t(!e),className:`sf-rung sf-hints-toggle${e?" is-active":""}`,children:[n(te,{size:13}),S(me)]})})}const St="text",P=[{id:"basics",label:"Basics",icon:n(ne,{})},{id:"theme",label:"Theme",icon:n(ee,{})},{id:"text",label:"Text",icon:n(oe,{})}];function Ce({themeFromDocument:e,persist:t}){const{appState:o,dispatch:s}=N(u=>u),{theme:d,setTheme:a}=m(),c=o.data,p=c.root?.props??{},r=u=>{if(e){const f={...p,theme:u};s({type:"replaceRoot",root:{...c.root,props:f},recordHistory:!0})}else a(u);t({selected_preset:u.selected,theme_presets:u.themes})};return n(W,{value:e?p.theme:d,onChange:r})}function _e({themeFromDocument:e,persist:t}){const[o,s]=R(null),{theme:d,setFonts:a,setSizes:c,setHeadingTypography:p}=m(),r=ce({themeFromDocument:e,persist:t}),{old:u,saved:f,writeRoot:g}=r,l=r.fonts,h=r.sizes,x=r.typography,y=i=>i.values.size??be(we[i.id]??"body")??ye[i.kind],T=i=>r.write(i),F=xe(d),I=i=>{const C={...l,accent:i};e?g({fonts:C}):a(C),t({accent_font:i})},B=i=>{c({...h,accent:i}),t({accent_size_px:i})},k=i=>{const C={...x,weightStrong:i};e?g({headingTypography:C}):p(C),t({heading_weight_strong:i})},A=i=>{const C={...x,italicStrong:i};e?g({headingTypography:C}):p(C),t({accent_italic:i})};return _(w,{children:[n(J,{saved:f,old:u,colours:F,sizeOf:y,onChange:T,openId:o===H?null:o,onOpenChange:s,withoutSize:e}),n(q,{font:l.accent,size:h.accent,weight:x.weightStrong,italic:x.italicStrong,headingWeight:x.weight,open:o===H,onOpenChange:i=>s(i?H:null),onChange:i=>{i.key==="font"?I(i.value):i.key==="size"?B(i.value):i.key==="weight"?k(i.value):A(i.value)},withoutSize:e})]})}const H="accent";function xe(e){const t=pe(e);return[{key:"accent",name:S("Accent"),value:t.accent},{key:"text",name:S("Text"),value:t.text},{key:"labels",name:S("Labels"),value:t.muted??t.text}]}const we={"heading-1":"heading","heading-2":"heading2","heading-3":"heading3","body-1":"body","body-5":"label"},ye={heading:32,body:14},Te={heading:"main h1, main h2",heading2:"main h1, main h2",heading3:"main h1, main h2",accent:"main h1 em, main h2 em",body:"main p",label:"main .mono-eyebrow"};function be(e){if(typeof document>"u")return null;const o=(ae()?.contentDocument??document).querySelector(Te[e]);if(!o)return null;const s=parseFloat(getComputedStyle(o).fontSize);return Number.isFinite(s)?s:null}function Pe({themeFromDocument:e,persist:t,showHint:o}){const{appState:s,dispatch:d}=N(h=>h),{cornerRadiusPx:a,setCornerRadiusPx:c}=m(),p=s.data,r=p.root?.props??{},u=r.cornerRadiusPx===void 0?le[he(r.cornerStyle)]:de(r.cornerRadiusPx),f=e?u:a,g=h=>d({type:"replaceRoot",root:{...p.root,props:{...r,...h}},recordHistory:!0});return n(O,{value:f,onChange:h=>{e?g({cornerRadiusPx:h}):c(h),t({corner_radius_px:h})},showHint:o})}function Re(e){return{site_width:e}}function Ee({persist:e,showHint:t}){const{siteWidth:o,setSiteWidth:s,sectionBackgroundWidth:d,setSectionBackgroundWidth:a,sectionContentWidth:c,setSectionContentWidth:p}=m(),r=typeof o=="number"?o:b.default,u=l=>{s(l),e(Re(l),l===null)},f=l=>{a(l),e({section_background_width:l},!0)},g=l=>{p(l),e({section_content_width:l},!0)};return _(w,{children:[n(U,{value:d??"full",changed:d!==null,detail:S("Full width"),onChange:f,onReset:()=>f(null),hint:t?K:void 0}),n($,{mode:c??"content",px:r,min:b.min,max:b.max,changed:typeof o=="number"||c!==null,detail:`${S("Content width")} ${b.default}px`,onMode:g,onPx:l=>u(l),onReset:()=>{g(null),u(null)},hint:t?M:void 0})]})}function He(e){return{block_gap:e}}function Ne(e){return{site_gutter:e}}function Fe({persist:e,showHint:t}){const{siteGutter:o,setSiteGutter:s}=m();return n(X,{value:o,onChange:a=>{s(a),e(Ne(a),a===null)},showHint:t})}function Ie({persist:e,showHint:t}){const{blockGap:o,setBlockGap:s}=m();return n(v,{value:o,onChange:a=>{s(a),e(He(a),a===null)},showHint:t})}function Be({persist:e,showHint:t=!0}){return _(w,{children:[n(Ee,{persist:e,showHint:t}),n(Fe,{persist:e,showHint:t}),n(Ie,{persist:e,showHint:t})]})}function ke(e){return{card_shadow:e}}function Ae(e){return e===null?{shadow_color:null}:{shadow_color:ue(e)}}function We(e){return{hover_effect:e}}function Oe({persist:e,showHint:t=!0}){const{cardShadow:o,setCardShadow:s,shadowColor:d,setShadowColor:a,hoverEffect:c,setHoverEffect:p}=m();return _(w,{children:[n(L,{value:o,onChange:r=>{s(r),e(ke(r),!0)},showHint:t}),n(z,{value:d,onChange:r=>{a(r),e(Ae(r),r===null)},showHint:t}),n(G,{value:c,onChange:r=>{p(r),e(We(r),!0)},showHint:t})]})}function Le(e){return{photography_grayscale:e}}function ze({persist:e,showHint:t}){const{photographyGrayscale:o,setPhotographyGrayscale:s}=m();return n(Y,{value:o,onChange:a=>{s(a),e(Le(a),!0)},showHint:t})}function ve({persist:e,showHint:t=!0}){return n(w,{children:n(ze,{persist:e,showHint:t})})}function Ge(e){return{share_button_on_posts:e}}function Ye({persist:e,showHint:t=!0}){const{shareButtonOnPosts:o,setShareButtonOnPosts:s}=m();return n(j,{value:o,onChange:a=>{s(a),e(Ge(a),!0)},showHint:t})}function je(){const{websiteName:e}=m();return e?.trim()||se}function Ct(){const e=je();return n(V,{content:S("{name} — renamed in the Console: {place}.",{name:e,place:S("Storefront ▸ Sites ▸ Settings")}),className:"sf-name-tip",children:n("span",{className:"sf-panel-site",children:e})})}function Xe({themeFromDocument:e=!1,tokenRef:t,siteId:o,onNotify:s,tab:d,onTabChange:a}){const{persist:c}=ie({themeFromDocument:e,tokenRef:t,siteId:o,onResult:y=>{const T=re(y);T&&s?.(T.msg,T.tone)}}),[p,r]=R(P[0].id),u=d!==void 0,f=u?d:p,g=u?a??(()=>{}):r,l=P.find(y=>y.id===f)??P[0],[h,x]=R(ge);return _(w,{children:[n(Ue,{activeId:l.id,onSelect:g}),_("div",{id:D(E,l.id),className:fe,role:"tabpanel","aria-labelledby":Z(E,l.id),children:[f==="basics"&&_(w,{children:[n(Pe,{themeFromDocument:e,persist:c,showHint:h}),!e&&n(Oe,{persist:c,showHint:h}),!e&&n(Be,{persist:c,showHint:h}),!e&&n(ve,{persist:c,showHint:h}),!e&&n(Ye,{persist:c,showHint:h}),n(Se,{shown:h,onChange:x})]}),f==="theme"&&n(Ce,{themeFromDocument:e,persist:c}),f==="text"&&n(_e,{themeFromDocument:e,persist:c})]})]})}function Ue({activeId:e,onSelect:t}){return n("div",{className:"es-insp-tabs",children:n(Q,{variant:"underline",block:!0,labelsFit:!0,"aria-label":S("Styles"),idPrefix:E,value:e,onChange:t,items:P.map(o=>{const s=S(o.label);return{id:o.id,icon:o.icon,label:s}})})})}export{Oe as CardLookFields,Se as HintsToggle,Be as PageGroupFields,ve as PhotographyGroupFields,ge as SHOW_HINTS_DEFAULT,E as SITE_STYLES_ID_PREFIX,P as SITE_STYLES_TABS,St as SITE_STYLES_TEXT_TAB,Ye as ShareButtonRootField,Ue as SiteStylesTabStrip,fe as TABPANEL_CLASS,Ct as WebsiteNameReadonly,He as blockGapPatch,ke as cardShadowPatch,Xe as default,We as hoverEffectPatch,Le as photographyPatch,Ae as shadowColourPatch,Ge as shareButtonPatch,Ne as siteGutterPatch,Re as siteWidthPatch,je as useWebsiteName};
1
+ "use client";import{jsx as n,jsxs as T,Fragment as y}from"react/jsx-runtime";import{useEasel as O,useRootFields as G}from"efficient-easel/easel";import{Inspector as W}from"efficient-easel/fields";import{SettingsGroup as v}from"efficient-easel/panel";import{useEffect as z,useRef as Y,useState as E}from"react";import j from"./ThemeField.js";import U from"./CornersField.js";import X from"./CardShadowField.js";import $ from"./ShadowColourField.js";import q from"./BlockGapField.js";import K from"./HoverEffectField.js";import M from"./PhotographyField.js";import V from"./ShareButtonField.js";import J from"./SideSpaceField.js";import{BackgroundWidthRow as Q,ContentWidthRow as Z,SITE_BACKGROUND_HINT as D,SITE_CONTENT_HINT as ee}from"./SectionWidthRows.js";import te from"./SiteAccentField.js";import ne from"./SiteTextStylesField.js";import{usePreviewHeader as S}from"../../render/components/PreviewHeaderContext.js";import{EmptyState as oe,Tabs as re,Tooltip as ie,tabButtonId as se,tabPanelId as ae}from"efficient-shell/ui";import{ContrastIcon as ce,NoteIcon as le,SettingsIcon as ue,TypeIcon as de}from"efficient-easel/icons";import{useThemeRowPersist as he}from"../lib/theme-row-persist.js";import{themeSaveNotice as pe}from"../../format/lib/theme-save-message.js";import{say as f}from"../../format/lib/editor-words.js";import{NEUTRAL_SITE_NAME as fe}from"../../format/lib/content/site-name.js";import{PAGE_WIDTH as R}from"../../format/lib/content/page-width.js";import{PAGE_STYLE_FIELDS as ge}from"../lib/document/page-root-fields.js";import{previewFrame as me}from"efficient-easel/screen/lib/document/preview-dom";import{useSiteTextStylesWriter as Se}from"../lib/site-text-styles-writer.js";import{CORNER_STYLE_TO_PX as Ce,normalizeCornerRadius as _e,normalizeCornerStyle as Te,normalizeShadowColor as xe,selectedThemeColors as ye}from"../../format/lib/theme.js";const H="sf-site-styles",we="sf-site-styles-tabpanel",be=!1,Pe="Show hints";function Ee({shown:e,onChange:t}){return n("div",{className:"sf-hints",children:T("button",{type:"button","aria-pressed":e,onClick:()=>t(!e),className:`sf-rung sf-hints-toggle${e?" is-active":""}`,children:[n(le,{size:13}),f(Pe)]})})}const At="text",B="basics",N="this-page-group",I=[{id:B,label:"Basics",icon:n(ue,{})},{id:"theme",label:"Theme",icon:n(ce,{})},{id:"text",label:"Text",icon:n(de,{})}];function Re({themeFromDocument:e,persist:t}){const{appState:o,dispatch:i}=O(l=>l),{theme:c,setTheme:r}=S(),p=o.data,h=p.root?.props??{},a=l=>{if(e){const g={...h,theme:l};i({type:"replaceRoot",root:{...p.root,props:g},recordHistory:!0})}else r(l);t({selected_preset:l.selected,theme_presets:l.themes})};return n(j,{value:e?h.theme:c,onChange:a})}function Ie({themeFromDocument:e,persist:t}){const[o,i]=E(null),{theme:c,setFonts:r,setSizes:p,setHeadingTypography:h}=S(),a=Se({themeFromDocument:e,persist:t}),{old:l,saved:g,writeRoot:m}=a,u=a.fonts,d=a.sizes,x=a.typography,w=s=>s.values.size??Be(He[s.id]??"body")??Ae[s.kind],C=s=>a.write(s),F=Fe(c),b=s=>{const _={...u,accent:s};e?m({fonts:_}):r(_),t({accent_font:s})},P=s=>{p({...d,accent:s}),t({accent_size_px:s})},k=s=>{const _={...x,weightStrong:s};e?m({headingTypography:_}):h(_),t({heading_weight_strong:s})},L=s=>{const _={...x,italicStrong:s};e?m({headingTypography:_}):h(_),t({accent_italic:s})};return T(y,{children:[n(ne,{saved:g,old:l,colours:F,sizeOf:w,onChange:C,openId:o===A?null:o,onOpenChange:i,withoutSize:e}),n(te,{font:u.accent,size:d.accent,weight:x.weightStrong,italic:x.italicStrong,headingWeight:x.weight,open:o===A,onOpenChange:s=>i(s?A:null),onChange:s=>{s.key==="font"?b(s.value):s.key==="size"?P(s.value):s.key==="weight"?k(s.value):L(s.value)},withoutSize:e})]})}const A="accent";function Fe(e){const t=ye(e);return[{key:"accent",name:f("Accent"),value:t.accent},{key:"text",name:f("Text"),value:t.text},{key:"labels",name:f("Labels"),value:t.muted??t.text}]}const He={"heading-1":"heading","heading-2":"heading2","heading-3":"heading3","body-1":"body","body-5":"label"},Ae={heading:32,body:14},Oe={heading:"main h1, main h2",heading2:"main h1, main h2",heading3:"main h1, main h2",accent:"main h1 em, main h2 em",body:"main p",label:"main .mono-eyebrow"};function Be(e){if(typeof document>"u")return null;const o=(me()?.contentDocument??document).querySelector(Oe[e]);if(!o)return null;const i=parseFloat(getComputedStyle(o).fontSize);return Number.isFinite(i)?i:null}function Ne({themeFromDocument:e,persist:t,showHint:o}){const{appState:i,dispatch:c}=O(d=>d),{cornerRadiusPx:r,setCornerRadiusPx:p}=S(),h=i.data,a=h.root?.props??{},l=a.cornerRadiusPx===void 0?Ce[Te(a.cornerStyle)]:_e(a.cornerRadiusPx),g=e?l:r,m=d=>c({type:"replaceRoot",root:{...h.root,props:{...a,...d}},recordHistory:!0});return n(U,{value:g,onChange:d=>{e?m({cornerRadiusPx:d}):p(d),t({corner_radius_px:d})},showHint:o})}function ke(e){return{site_width:e}}function Le({persist:e,showHint:t}){const{siteWidth:o,setSiteWidth:i,sectionBackgroundWidth:c,setSectionBackgroundWidth:r,sectionContentWidth:p,setSectionContentWidth:h}=S(),a=typeof o=="number"?o:R.default,l=u=>{i(u),e(ke(u),u===null)},g=u=>{r(u),e({section_background_width:u},!0)},m=u=>{h(u),e({section_content_width:u},!0)};return T(y,{children:[n(Q,{value:c??"full",changed:c!==null,detail:f("Full width"),onChange:g,onReset:()=>g(null),hint:t?D:void 0}),n(Z,{mode:p??"content",px:a,min:R.min,max:R.max,changed:typeof o=="number"||p!==null,detail:`${f("Content width")} ${R.default}px`,onMode:m,onPx:u=>l(u),onReset:()=>{m(null),l(null)},hint:t?ee:void 0})]})}function Ge(e){return{block_gap:e}}function We(e){return{site_gutter:e}}function ve({persist:e,showHint:t}){const{siteGutter:o,setSiteGutter:i}=S();return n(J,{value:o,onChange:r=>{i(r),e(We(r),r===null)},showHint:t})}function ze({persist:e,showHint:t}){const{blockGap:o,setBlockGap:i}=S();return n(q,{value:o,onChange:r=>{i(r),e(Ge(r),r===null)},showHint:t})}function Ye({persist:e,showHint:t=!0}){return T(y,{children:[n(Le,{persist:e,showHint:t}),n(ve,{persist:e,showHint:t}),n(ze,{persist:e,showHint:t})]})}function je(e){return{card_shadow:e}}function Ue(e){return e===null?{shadow_color:null}:{shadow_color:xe(e)}}function Xe(e){return{hover_effect:e}}function $e({persist:e,showHint:t=!0}){const{cardShadow:o,setCardShadow:i,shadowColor:c,setShadowColor:r,hoverEffect:p,setHoverEffect:h}=S();return T(y,{children:[n(X,{value:o,onChange:a=>{i(a),e(je(a),!0)},showHint:t}),n($,{value:c,onChange:a=>{r(a),e(Ue(a),a===null)},showHint:t}),n(K,{value:p,onChange:a=>{h(a),e(Xe(a),!0)},showHint:t})]})}function qe(e){return{photography_grayscale:e}}function Ke({persist:e,showHint:t}){const{photographyGrayscale:o,setPhotographyGrayscale:i}=S();return n(M,{value:o,onChange:r=>{i(r),e(qe(r),!0)},showHint:t})}function Me({persist:e,showHint:t=!0}){return n(y,{children:n(Ke,{persist:e,showHint:t})})}function Ve(e){return{share_button_on_posts:e}}function Je({persist:e,showHint:t=!0}){const{shareButtonOnPosts:o,setShareButtonOnPosts:i}=S();return n(V,{value:o,onChange:r=>{i(r),e(Ve(r),!0)},showHint:t})}function Qe(){const{websiteName:e}=S();return e?.trim()||fe}function Ot(){const e=Qe();return n(ie,{content:f("{name} — renamed in the Console: {place}.",{name:e,place:f("Storefront ▸ Sites ▸ Settings")}),className:"sf-name-tip",children:n("span",{className:"sf-panel-site",children:e})})}function Ze({themeFromDocument:e=!1,tokenRef:t,siteId:o,onNotify:i,tab:c,onTabChange:r,initialTab:p,revealPageGroup:h=!1,onPageGroupRevealed:a}){const{persist:l}=he({themeFromDocument:e,tokenRef:t,siteId:o,onResult:b=>{const P=pe(b);P&&i?.(P.msg,P.tone)}}),[g,m]=E(p??I[0].id),u=c!==void 0,d=u?c:g,x=u?r??(()=>{}):m,w=I.find(b=>b.id===d)??I[0],[C,F]=E(be);return T(y,{children:[n(tt,{activeId:w.id,onSelect:x}),T("div",{id:ae(H,w.id),className:we,role:"tabpanel","aria-labelledby":se(H,w.id),children:[d===B&&T(y,{children:[n(Ne,{themeFromDocument:e,persist:l,showHint:C}),!e&&n($e,{persist:l,showHint:C}),!e&&n(Ye,{persist:l,showHint:C}),!e&&n(Me,{persist:l,showHint:C}),!e&&n(Je,{persist:l,showHint:C}),n(De,{reveal:h,onRevealed:a}),n(Ee,{shown:C,onChange:F})]}),d==="theme"&&n(Re,{themeFromDocument:e,persist:l}),d==="text"&&n(Ie,{themeFromDocument:e,persist:l})]})]})}function De({reveal:e,onRevealed:t}){const[o,i]=E(!0),c=Y(t);return c.current=t,z(()=>{if(!e)return;i(!0);const r=requestAnimationFrame(()=>{document.getElementById(N)?.scrollIntoView({block:"start"}),c.current?.()});return()=>cancelAnimationFrame(r)},[e]),n(v,{title:f("This page"),open:o,onToggle:i,id:N,children:n(et,{})})}function et(){const{fields:e,values:t,readOnly:o,onChange:i}=G(),c=Object.fromEntries(ge.filter(r=>r in e).map(r=>[r,e[r]]));return Object.keys(c).length===0?n(oe,{variant:"none",icon:!1,message:f("This page has no look of its own to set.")}):n(W,{fields:c,values:t,onChange:i,readOnly:o,tabs:!1,idPrefix:"this-page",ariaLabel:f("This page")})}function tt({activeId:e,onSelect:t}){return n("div",{className:"es-insp-tabs",children:n(re,{variant:"underline",block:!0,labelsFit:!0,"aria-label":f("Styles"),idPrefix:H,value:e,onChange:t,items:I.map(o=>{const i=f(o.label);return{id:o.id,icon:o.icon,label:i}})})})}export{$e as CardLookFields,Ee as HintsToggle,Ye as PageGroupFields,Me as PhotographyGroupFields,be as SHOW_HINTS_DEFAULT,B as SITE_STYLES_BASICS_TAB,H as SITE_STYLES_ID_PREFIX,I as SITE_STYLES_TABS,At as SITE_STYLES_TEXT_TAB,Je as ShareButtonRootField,tt as SiteStylesTabStrip,we as TABPANEL_CLASS,N as THIS_PAGE_GROUP_ID,Ot as WebsiteNameReadonly,Ge as blockGapPatch,je as cardShadowPatch,Ze as default,Xe as hoverEffectPatch,qe as photographyPatch,Ue as shadowColourPatch,Ve as shareButtonPatch,We as siteGutterPatch,ke as siteWidthPatch,Qe as useWebsiteName};
@@ -1 +1 @@
1
- "use client";import{useEffect as k,useMemo as E,useRef as I}from"react";import{useEasel as O}from"efficient-easel/easel";import{useEaselHost as B}from"efficient-easel/screen/lib/host";import{applyPageEdits as D,describeBlocks as H,describeSelection as J}from"../../format/lib/host-document-bridge.js";const p=e=>typeof e.requestId=="string"&&e.requestId?e.requestId:null;function C(){const e=B(),{appState:n,selectedItem:m,dispatch:l,history:f,config:q}=O(s=>s),i=q,g=I({appState:n,dispatch:l,history:f,blockConfig:i});g.current={appState:n,dispatch:l,history:f,blockConfig:i};const c=I(new Map),h=m?.props?.id,a=E(()=>J(i,n.data,h),[i,n.data,h]),S=a?JSON.stringify(a):"";k(()=>{e.connected&&e.send("storefront-editor:selection",{selection:a})},[e,S]),k(()=>e.subscribe(s=>{const{appState:d,dispatch:y,history:u,blockConfig:b}=g.current;switch(s.type){case"storefront-editor:request-document":{const t=p(s);if(!t)return;e.send("storefront-editor:document",{requestId:t,document:d.data,blocks:H(b)});return}case"storefront-editor:apply-page-edits":{const t=p(s);if(!t)return;const r=Array.isArray(s.ops)?s.ops:[],o=r.length?D(b,d.data,r,w=>`${w}-${crypto.randomUUID()}`):{ok:!1,reason:"no changes"};o.ok&&(y({type:"setData",data:o.document,recordHistory:!0}),c.current.set(t,JSON.stringify(o.document.content??[]))),e.send("storefront-editor:page-edits-result",{requestId:t,applied:o.ok,reason:o.ok?null:o.reason});return}case"storefront-editor:undo-page-edits":{const t=p(s);if(!t)return;const r=c.current.get(t),o=r!==void 0&&r===JSON.stringify(d.data.content??[]);o&&u.hasPast&&(u.back(),c.current.delete(t)),e.send("storefront-editor:page-edits-result",{requestId:t,applied:o&&u.hasPast,reason:o?null:"the page has changed since"});return}case"storefront-editor:set-right-panel":typeof s.shown=="boolean"&&y({type:"setUi",ui:{rightSideBarVisible:s.shown}});return;default:return}}),[e])}export{C as useHostDocumentBridge};
1
+ "use client";import{useEffect as b,useMemo as w,useRef as k}from"react";import{useEasel as O}from"efficient-easel/easel";import{useEaselHost as B}from"efficient-easel/screen/lib/host";import{applyPageEdits as D,describeBlocks as H,describeSelection as J}from"../../format/lib/host-document-bridge.js";import{nonEmptyString as N}from"../../format/lib/non-empty-string.js";const p=t=>N(t.requestId)??null;function $(){const t=B(),{appState:n,selectedItem:I,dispatch:l,history:f,config:S}=O(s=>s),i=S,g=k({appState:n,dispatch:l,history:f,blockConfig:i});g.current={appState:n,dispatch:l,history:f,blockConfig:i};const c=k(new Map),h=I?.props?.id,a=w(()=>J(i,n.data,h),[i,n.data,h]),q=a?JSON.stringify(a):"";b(()=>{t.connected&&t.send("storefront-editor:selection",{selection:a})},[t,q]),b(()=>t.subscribe(s=>{const{appState:d,dispatch:y,history:u,blockConfig:m}=g.current;switch(s.type){case"storefront-editor:request-document":{const e=p(s);if(!e)return;t.send("storefront-editor:document",{requestId:e,document:d.data,blocks:H(m)});return}case"storefront-editor:apply-page-edits":{const e=p(s);if(!e)return;const r=Array.isArray(s.ops)?s.ops:[],o=r.length?D(m,d.data,r,E=>`${E}-${crypto.randomUUID()}`):{ok:!1,reason:"no changes"};o.ok&&(y({type:"setData",data:o.document,recordHistory:!0}),c.current.set(e,JSON.stringify(o.document.content??[]))),t.send("storefront-editor:page-edits-result",{requestId:e,applied:o.ok,reason:o.ok?null:o.reason});return}case"storefront-editor:undo-page-edits":{const e=p(s);if(!e)return;const r=c.current.get(e),o=r!==void 0&&r===JSON.stringify(d.data.content??[]);o&&u.hasPast&&(u.back(),c.current.delete(e)),t.send("storefront-editor:page-edits-result",{requestId:e,applied:o&&u.hasPast,reason:o?null:"the page has changed since"});return}case"storefront-editor:set-right-panel":typeof s.shown=="boolean"&&y({type:"setUi",ui:{rightSideBarVisible:s.shown}});return;default:return}}),[t])}export{$ as useHostDocumentBridge};
@@ -1 +1 @@
1
- "use client";import{jsx as r,jsxs as m,Fragment as me}from"react/jsx-runtime";import{Fragment as Q,useEffect as V,useRef as z}from"react";import{useTreeDrag as X}from"efficient-easel/drag";import{GlobeIcon as xe,ImageIcon as ve,LocationIcon as fe,MapIcon as ke,TextLinesIcon as Le,TrashIcon as Z}from"efficient-easel/icons";import{Subtree as b,TreeRow as P,TreeRowAction as ee,TreeSeam as oe}from"efficient-easel/tree";import{useEaselStrings as Ie}from"efficient-easel/strings";import{decodeLocationPartId as Se,encodeLocationPartId as Pe,usePreviewLocationPart as he}from"../../render/components/PreviewLocationPartContext.js";import{isSelectionMode as we}from"efficient-easel/screen/lib/screen-parts";import{say as p,sayCount as Ce}from"../../format/lib/editor-words.js";import{useLocationsFocus as $e,setLocationsFocus as i}from"../lib/document/locations-focus.js";import{bucketsOf as ne,moveGroup as te,moveCity as re,addCity as Te,addGroup as De,deleteGroup as Fe,deleteCity as Ge,absCityIndex as ce,groupLabelOf as Oe,cardKey as se}from"../../format/lib/document/locations-tree.js";const le="ContactLocations",T=x=>({parentId:`locations-${x}`,slot:"groups"}),A=(x,y)=>({parentId:`locations-${x}`,slot:`cities:${y}`});function We(x,y){const{readOnly:h,selected:w}=y,k=Ie().tree,v=y.data?.content??[],ae=we(x),D=z(null);V(()=>{const o=w?.type===le?String(w.props.id):null;o&&o!==D.current&&i({level:"groups"}),D.current=o},[w?.props.id]);const{selectedLocationPartId:ie,setSelectedLocationPartId:N,setSelectHandler:R}=he(),c=$e(),u=(o,e)=>{const t=v[o];t&&y.replace(o,{type:t.type,props:{...t.props,locations:e}})},L=o=>{const e=v[o]?.props?.locations;return Array.isArray(e)?e:[]},_=X({keyOf:o=>`group:${o.si}:${o.index}`,readOnly:!!h,canDrop:(o,e)=>e.parentId===T(o.si).parentId&&e.slot==="groups",onDrop:(o,e)=>{u(o.si,te(L(o.si),o.index,e.index)),c.level==="city"&&i({level:"groups"})},onStep:(o,e)=>{u(o.si,te(L(o.si),o.index,e<0?o.index-1:o.index+2)),c.level==="city"&&i({level:"groups"})}}),F=X({keyOf:o=>`city:${o.si}:${o.group}:${o.index}`,readOnly:!!h,canDrop:(o,e)=>e.parentId===T(o.si).parentId&&e.slot.startsWith("cities:"),onDrop:(o,e)=>{const t=e.slot.slice(7);u(o.si,re(L(o.si),o.group,o.index,t,e.index)),i({level:"group",key:t})},onStep:(o,e)=>{u(o.si,re(L(o.si),o.group,o.index,o.group,e<0?o.index-1:o.index+2)),c.level==="city"&&i({level:"group",key:o.group})}}),j=z(v);j.current=v;const E=z(()=>{});V(()=>{R(o=>{const e=Se(o);if(!e)return;const t=j.current.findIndex(C=>C.props?.id===e.nodeId);t<0||E.current(t,{level:e.part,index:e.index})})},[R]);const s=(o,e)=>{D.current=v[o]?.props?.id??null,y.select(o),i(e),x.reveal();const t=v[o]?.props?.id;typeof t=="string"&&(e.level==="image"||e.level==="map")?N(Pe(t,e.index,e.level)):N(null),typeof t=="string"&&y.scrollTo(t)};return E.current=s,{renderLocationTree:(o,e,{rowClick:t,isCollapsed:C,toggleCollapse:M})=>{const f=L(e),de=ne(f),I=String(o.props.id),S=ae&&w?.props.id===I,B=n=>r(oe,{...h?{}:_.seam({place:{...T(e),index:n}})},`seam:${I}:groups:${n}`),H=(n,d)=>r(oe,{...h?{}:F.seam({place:{...A(e,n),index:d}})},`seam:${I}:cities:${n}:${d}`);return m(me,{children:[r(P,{icon:r(Le,{size:13}),name:p("Texts"),words:k,onSelect:()=>s(e,{level:"texts"}),selected:S&&c.level==="texts",rowProps:{onClick:t(()=>s(e,{level:"texts"}))}}),de.map((n,d)=>{const G=`${I}::grp::${n.key}`,K=C(G),pe=S&&c.level==="group"&&c.key===n.key,U=n.name||n.key?Oe(n.key,n.name):p("Ungrouped"),W={...A(e,n.key),index:n.cards.length},Y=F.row({item:{si:e,group:n.key,index:-1},place:W,into:W,canDrag:!1},{onClick:t(()=>s(e,{level:"group",key:n.key}))}),$=_.row({item:{si:e,index:d},place:{...T(e),index:d}},Y.rowProps);return m(Q,{children:[d===0&&B(0),r(P,{icon:r(xe,{size:13}),name:U,words:k,onSelect:()=>s(e,{level:"group",key:n.key}),selected:pe,draggable:$.draggable,dragging:$.dragging,drop:$.drop??Y.drop,fold:{open:!K,label:p("group"),onToggle:()=>M(G)},actions:r(ee,{kind:"delete",label:Ce("Delete {label} group ({n} city)","Delete {label} group ({n} cities)",n.cards.length,{label:U}),onClick:()=>{u(e,Fe(f,n.key)),i({level:"groups"})},children:r(Z,{size:15})}),rowProps:$.rowProps,children:r("span",{className:"es-group-count",children:n.cards.length})}),!K&&m(b,{children:[n.cards.map((g,a)=>{const l=ce(f,n.key,a),ue=S&&c.level==="city"&&c.index===l,O=String(g?.name??"")||p("City"),q=`${I}::city::${se(g)}`,J=C(q),{rowProps:ye,...ge}=F.row({item:{si:e,group:n.key,index:a},place:{...A(e,n.key),index:a}},{onClick:t(()=>s(e,{level:"city",index:l}))});return m(Q,{children:[a===0&&H(n.key,0),r(P,{icon:r(fe,{size:13}),name:O,words:k,onSelect:()=>s(e,{level:"city",index:l}),selected:ue,...ge,fold:{open:!J,label:O,onToggle:()=>M(q)},actions:r(ee,{kind:"delete",label:p("Delete {name}",{name:O}),onClick:()=>{u(e,Ge(f,n.key,a)),i({level:"group",key:n.key})},children:r(Z,{size:15})}),rowProps:ye}),!J&&m(b,{children:[r(P,{icon:r(ve,{size:13}),name:p("Image"),words:k,onSelect:()=>s(e,{level:"image",index:l}),selected:S&&c.level==="image"&&c.index===l,rowProps:{onClick:t(()=>s(e,{level:"image",index:l}))}}),r(P,{icon:r(ke,{size:13}),name:p("Map"),words:k,onSelect:()=>s(e,{level:"map",index:l}),selected:S&&c.level==="map"&&c.index===l,rowProps:{onClick:t(()=>s(e,{level:"map",index:l}))}})]}),H(n.key,a+1)]},se(g))}),m("button",{type:"button",className:"sf-add-card",onClick:()=>{const g=Te(f,n.key);u(e,g);const a=ne(g).find(l=>l.key===n.key);i(a&&a.cards.length?{level:"city",index:ce(g,n.key,a.cards.length-1)}:{level:"group",key:n.key})},children:[r("span",{className:"sf-plus sf-plus--sm",children:"+"}),p("Add city")]})]}),B(d+1)]},G)}),m("button",{type:"button",className:"sf-add-card",onClick:()=>{const{cards:n,key:d}=De(f);u(e,n),s(e,{level:"group",key:d})},children:[r("span",{className:"sf-plus sf-plus--sm",children:"+"}),p("Add group")]})]})},sectionPressed:o=>{o?.type===le&&i({level:"groups"})}}}export{le as LOCATIONS_TYPE,We as useLocationsTree};
1
+ "use client";import{jsx as r,jsxs as m,Fragment as xe}from"react/jsx-runtime";import{Fragment as Q,useEffect as V,useRef as z}from"react";import{useTreeDrag as X}from"efficient-easel/drag";import{GlobeIcon as ve,ImageIcon as fe,LocationIcon as ke,MapIcon as Le,TextLinesIcon as Ie,TrashIcon as Z}from"efficient-easel/icons";import{Subtree as b,TreeRow as P,TreeRowAction as ee,TreeSeam as oe}from"efficient-easel/tree";import{useEaselStrings as Se}from"efficient-easel/strings";import{decodeLocationPartId as Pe,encodeLocationPartId as he,usePreviewLocationPart as we}from"../../render/components/PreviewLocationPartContext.js";import{isSelectionMode as Ce}from"efficient-easel/screen/lib/screen-parts";import{say as p,sayCount as ne}from"../../format/lib/editor-words.js";import{useLocationsFocus as $e,setLocationsFocus as i}from"../lib/document/locations-focus.js";import{bucketsOf as te,moveGroup as re,moveCity as ce,addCity as Te,addGroup as De,deleteGroup as Fe,deleteCity as Ge,absCityIndex as le,groupLabelOf as Oe,cardKey as se}from"../../format/lib/document/locations-tree.js";const ae="ContactLocations",T=x=>({parentId:`locations-${x}`,slot:"groups"}),A=(x,y)=>({parentId:`locations-${x}`,slot:`cities:${y}`});function We(x,y){const{readOnly:h,selected:w}=y,k=Se().tree,v=y.data?.content??[],ie=Ce(x),D=z(null);V(()=>{const o=w?.type===ae?String(w.props.id):null;o&&o!==D.current&&i({level:"groups"}),D.current=o},[w?.props.id]);const{selectedLocationPartId:de,setSelectedLocationPartId:R,setSelectHandler:N}=we(),c=$e(),u=(o,e)=>{const t=v[o];t&&y.replace(o,{type:t.type,props:{...t.props,locations:e}})},L=o=>{const e=v[o]?.props?.locations;return Array.isArray(e)?e:[]},_=X({keyOf:o=>`group:${o.si}:${o.index}`,readOnly:!!h,canDrop:(o,e)=>e.parentId===T(o.si).parentId&&e.slot==="groups",onDrop:(o,e)=>{u(o.si,re(L(o.si),o.index,e.index)),c.level==="city"&&i({level:"groups"})},onStep:(o,e)=>{u(o.si,re(L(o.si),o.index,e<0?o.index-1:o.index+2)),c.level==="city"&&i({level:"groups"})}}),F=X({keyOf:o=>`city:${o.si}:${o.group}:${o.index}`,readOnly:!!h,canDrop:(o,e)=>e.parentId===T(o.si).parentId&&e.slot.startsWith("cities:"),onDrop:(o,e)=>{const t=e.slot.slice(7);u(o.si,ce(L(o.si),o.group,o.index,t,e.index)),i({level:"group",key:t})},onStep:(o,e)=>{u(o.si,ce(L(o.si),o.group,o.index,o.group,e<0?o.index-1:o.index+2)),c.level==="city"&&i({level:"group",key:o.group})}}),j=z(v);j.current=v;const E=z(()=>{});V(()=>{N(o=>{const e=Pe(o);if(!e)return;const t=j.current.findIndex(C=>C.props?.id===e.nodeId);t<0||E.current(t,{level:e.part,index:e.index})})},[N]);const l=(o,e)=>{D.current=v[o]?.props?.id??null,y.select(o),i(e),x.reveal();const t=v[o]?.props?.id;typeof t=="string"&&(e.level==="image"||e.level==="map")?R(he(t,e.index,e.level)):R(null),typeof t=="string"&&y.scrollTo(t)};return E.current=l,{renderLocationTree:(o,e,{rowClick:t,isCollapsed:C,toggleCollapse:M})=>{const f=L(e),pe=te(f),I=String(o.props.id),S=ie&&w?.props.id===I,B=n=>r(oe,{...h?{}:_.seam({place:{...T(e),index:n}})},`seam:${I}:groups:${n}`),H=(n,d)=>r(oe,{...h?{}:F.seam({place:{...A(e,n),index:d}})},`seam:${I}:cities:${n}:${d}`);return m(xe,{children:[r(P,{icon:r(Ie,{size:13}),name:p("Texts"),words:k,onSelect:()=>l(e,{level:"texts"}),selected:S&&c.level==="texts",rowProps:{onClick:t(()=>l(e,{level:"texts"}))}}),pe.map((n,d)=>{const G=`${I}::grp::${n.key}`,K=C(G),ue=S&&c.level==="group"&&c.key===n.key,U=n.name||n.key?Oe(n.key,n.name):p("Ungrouped"),W={...A(e,n.key),index:n.cards.length},Y=F.row({item:{si:e,group:n.key,index:-1},place:W,into:W,canDrag:!1},{onClick:t(()=>l(e,{level:"group",key:n.key}))}),$=_.row({item:{si:e,index:d},place:{...T(e),index:d}},Y.rowProps);return m(Q,{children:[d===0&&B(0),r(P,{icon:r(ve,{size:13}),name:U,words:k,onSelect:()=>l(e,{level:"group",key:n.key}),selected:ue,draggable:$.draggable,dragging:$.dragging,drop:$.drop??Y.drop,fold:{open:!K,label:p("group"),onToggle:()=>M(G)},actions:r(ee,{kind:"delete",label:ne("Delete {label} group ({n} city)","Delete {label} group ({n} cities)",n.cards.length,{label:U}),onClick:()=>{u(e,Fe(f,n.key)),i({level:"groups"})},children:r(Z,{size:15})}),rowProps:$.rowProps,count:n.cards.length,countLabel:ne("{n} city","{n} cities",n.cards.length)}),!K&&m(b,{children:[n.cards.map((g,a)=>{const s=le(f,n.key,a),ye=S&&c.level==="city"&&c.index===s,O=String(g?.name??"")||p("City"),q=`${I}::city::${se(g)}`,J=C(q),{rowProps:ge,...me}=F.row({item:{si:e,group:n.key,index:a},place:{...A(e,n.key),index:a}},{onClick:t(()=>l(e,{level:"city",index:s}))});return m(Q,{children:[a===0&&H(n.key,0),r(P,{icon:r(ke,{size:13}),name:O,words:k,onSelect:()=>l(e,{level:"city",index:s}),selected:ye,...me,fold:{open:!J,label:O,onToggle:()=>M(q)},actions:r(ee,{kind:"delete",label:p("Delete {name}",{name:O}),onClick:()=>{u(e,Ge(f,n.key,a)),i({level:"group",key:n.key})},children:r(Z,{size:15})}),rowProps:ge}),!J&&m(b,{children:[r(P,{icon:r(fe,{size:13}),name:p("Image"),words:k,onSelect:()=>l(e,{level:"image",index:s}),selected:S&&c.level==="image"&&c.index===s,rowProps:{onClick:t(()=>l(e,{level:"image",index:s}))}}),r(P,{icon:r(Le,{size:13}),name:p("Map"),words:k,onSelect:()=>l(e,{level:"map",index:s}),selected:S&&c.level==="map"&&c.index===s,rowProps:{onClick:t(()=>l(e,{level:"map",index:s}))}})]}),H(n.key,a+1)]},se(g))}),m("button",{type:"button",className:"sf-add-card",onClick:()=>{const g=Te(f,n.key);u(e,g);const a=te(g).find(s=>s.key===n.key);i(a&&a.cards.length?{level:"city",index:le(g,n.key,a.cards.length-1)}:{level:"group",key:n.key})},children:[r("span",{className:"sf-plus sf-plus--sm",children:"+"}),p("Add city")]})]}),B(d+1)]},G)}),m("button",{type:"button",className:"sf-add-card",onClick:()=>{const{cards:n,key:d}=De(f);u(e,n),l(e,{level:"group",key:d})},children:[r("span",{className:"sf-plus sf-plus--sm",children:"+"}),p("Add group")]})]})},sectionPressed:o=>{o?.type===ae&&i({level:"groups"})}}}export{ae as LOCATIONS_TYPE,We as useLocationsTree};
@@ -1 +1 @@
1
- "use client";import{useEffect as p,useRef as d}from"react";import{useEasel as f}from"efficient-easel/easel";import{ROOT_ZONE as s}from"efficient-easel/draw";import{usePreviewHeader as m}from"../../render/components/PreviewHeaderContext.js";import{siteCardThemeMetadata as u}from"../../format/lib/content/section-width.js";import{pageConvertContextOf as x,sectionToBoxEdits as l}from"../../render/lib/sections/section-to-box.js";function B(n){const o=f(e=>e.appState.data.content),r=d(new Set),{cardThemeIndex:t}=m();p(()=>{const e=x(u(t));E(l(o,e),n,r.current)},[o,n,t])}function E(n,o,r){for(const{index:t,nodes:e}of[...n].sort((i,c)=>c.index-i.index)){const i=String(e[0].props.id);r.has(i)||(r.add(i),o.replaceComponent(s,t,e[0]),e.slice(1).forEach((c,a)=>{o.insertNode(s,t+1+a,c),o.replaceComponent(s,t+1+a,c)}))}}export{E as applySectionToBoxEdits,B as useSectionToBoxPass};
1
+ "use client";import{useEffect as p,useRef as a}from"react";import{useEasel as d}from"efficient-easel/easel";import{ROOT_ZONE as s}from"efficient-easel/draw";import{sectionToBoxEdits as m}from"../../render/lib/sections/section-to-box.js";function T(t){const o=d(e=>e.appState.data.content),n=a(new Set);p(()=>{u(m(o),t,n.current)},[o,t])}function u(t,o,n){for(const{index:e,nodes:c}of[...t].sort((i,r)=>r.index-i.index)){const i=String(c[0].props.id);n.has(i)||(n.add(i),o.replaceComponent(s,e,c[0]),c.slice(1).forEach((r,f)=>{o.insertNode(s,e+1+f,r),o.replaceComponent(s,e+1+f,r)}))}}export{u as applySectionToBoxEdits,T as useSectionToBoxPass};
@@ -7,8 +7,8 @@ export declare function useSocialSettings({ token, siteId, enabled, }: {
7
7
  siteId: string | null;
8
8
  enabled: boolean;
9
9
  }): {
10
- links: Partial<Record<"facebook" | "instagram" | "pinterest" | "telegram" | "tiktok" | "whatsapp" | "youtube" | "x" | "linkedin" | "line" | "wechat", string>>;
11
- rows: Record<"facebook" | "instagram" | "pinterest" | "telegram" | "tiktok" | "whatsapp" | "youtube" | "x" | "linkedin" | "line" | "wechat", SocialRowState>;
10
+ links: Partial<Record<"facebook" | "instagram" | "pinterest" | "telegram" | "tiktok" | "whatsapp" | "youtube" | "line" | "x" | "linkedin" | "wechat", string>>;
11
+ rows: Record<"facebook" | "instagram" | "pinterest" | "telegram" | "tiktok" | "whatsapp" | "youtube" | "line" | "x" | "linkedin" | "wechat", SocialRowState>;
12
12
  canSave: boolean;
13
13
  saveLink: (platform: SocialPlatform, value: string) => Promise<SocialSaveOutcome>;
14
14
  };
@@ -1,5 +1,5 @@
1
1
  import type { ReactElement, ReactNode } from "react";
2
- export declare function ColourControl({ value, onChange, label, id, caption, inherited, ariaLabel, }: {
2
+ export declare function ColourControl({ value, onChange, label, id, caption, inherited, ariaLabel, opacity, onOpacityChange, }: {
3
3
  value: string;
4
4
  onChange: (next: string) => void;
5
5
  label: string;
@@ -7,6 +7,8 @@ export declare function ColourControl({ value, onChange, label, id, caption, inh
7
7
  caption?: string;
8
8
  inherited?: string;
9
9
  ariaLabel?: string;
10
+ opacity?: number;
11
+ onOpacityChange?: (opacity: number) => void;
10
12
  }): import("react").JSX.Element;
11
13
  export declare function AnyColourSwatch({ value, onChange, label, }: {
12
14
  value: string;
@@ -21,7 +23,7 @@ export declare function ColourRow({ label, icon, changed, hint, onReset, resetTo
21
23
  resetTo?: string;
22
24
  children?: ReactNode;
23
25
  }): import("react").JSX.Element;
24
- export declare function InheritedColourRow({ label, icon, value, inherited, resetTo, onChange, onReset, hint, }: {
26
+ export declare function InheritedColourRow({ label, icon, value, inherited, resetTo, onChange, onReset, hint, opacity, onOpacityChange, changed, }: {
25
27
  label: string;
26
28
  icon?: ReactElement;
27
29
  value: string;
@@ -30,4 +32,7 @@ export declare function InheritedColourRow({ label, icon, value, inherited, rese
30
32
  onChange: (hex: string) => void;
31
33
  onReset: () => void;
32
34
  hint?: ReactNode;
35
+ opacity?: number;
36
+ onOpacityChange?: (opacity: number) => void;
37
+ changed?: boolean;
33
38
  }): import("react").JSX.Element;
@@ -1 +1 @@
1
- "use client";import{jsx as s,jsxs as m}from"react/jsx-runtime";import{ColorPicker as p,HexInput as C}from"efficient-shell/ui";import{SettingsDefaultReset as g,SettingsField as x}from"efficient-easel/panel";import{typedHex as u}from"efficient-easel/pick";import{usePreviewHeader as w}from"../../../render/components/PreviewHeaderContext.js";import{editorEaselWords as b,say as c}from"../../../format/lib/editor-words.js";import{themeSwatches as N}from"./theme-swatches.js";function S({value:e,onChange:o,label:n,id:r,caption:t,inherited:l,ariaLabel:a}){return s(P,{value:e,onChange:o,label:c(a??n),id:r,caption:t,inherited:l})}function j(){const{theme:e}=w();return N(e).map(o=>({value:o.value,label:o.name}))}function P({value:e,onChange:o,label:n,id:r,caption:t,inherited:l}){const a=j(),i=e?null:u(l??""),d=t!==void 0&&(!e||u(t)!==u(e))?t:null,f=h=>{h!==e&&o(h)};return m("div",{className:"sf-colour",children:[s(p,{id:r,value:e,onChange:f,label:n,presets:a,fallback:i??void 0,size:"md",align:"start"}),d!==null?s("span",{className:"sf-colour-caption",children:d}):s("span",{className:"sf-colour-hexwrap",children:s(C,{value:e||i||"",onChange:f,label:c("{label} hex code",{label:n}),placeholder:e||i?void 0:c("Not set"),className:i?"sf-colour-hex is-inherited":"sf-colour-hex",size:"md"})})]})}function T({value:e,onChange:o,label:n}){return s(p,{value:e,onChange:r=>{r&&r!==e&&o(r)},label:c(n),size:"sm",align:"end"})}function R({label:e,icon:o,changed:n,hint:r,onReset:t,resetTo:l,children:a,...i}){return m(x,{label:e,icon:o,htmlFor:i.id,changed:n,hint:r,action:t?s(g,{words:b()?.panel,label:e,changed:!!n,detail:l,onReset:t}):void 0,children:[S({...i,label:e}),a]})}function _({label:e,icon:o,value:n,inherited:r,resetTo:t,onChange:l,onReset:a,hint:i}){const d=!!n;return s(R,{label:e,icon:o,value:n,inherited:d?void 0:r,onChange:l,changed:d,onReset:a,resetTo:t,hint:i})}export{T as AnyColourSwatch,S as ColourControl,R as ColourRow,_ as InheritedColourRow};
1
+ "use client";import{jsx as s,jsxs as g}from"react/jsx-runtime";import{ColorPicker as m,HexInput as w}from"efficient-shell/ui";import{SettingsDefaultReset as C,SettingsField as b}from"efficient-easel/panel";import{typedHex as p}from"efficient-easel/pick";import{usePreviewHeader as N}from"../../../render/components/PreviewHeaderContext.js";import{editorEaselWords as S,say as h}from"../../../format/lib/editor-words.js";import{themeSwatches as j}from"./theme-swatches.js";function k({value:e,onChange:n,label:o,id:r,caption:t,inherited:a,ariaLabel:d,opacity:i,onOpacityChange:c}){return s(H,{value:e,onChange:n,label:h(d??o),id:r,caption:t,inherited:a,...c?{opacity:i,onOpacityChange:c}:{}})}function z(){const{theme:e}=N();return j(e).map(n=>({value:n.value,label:n.name}))}function H({value:e,onChange:n,label:o,id:r,caption:t,inherited:a,opacity:d,onOpacityChange:i}){const c=z(),l=e?null:p(a??""),f=t!==void 0&&(!e||p(t)!==p(e))?t:null,u=x=>{x!==e&&n(x)};return i?s("div",{className:"sf-colour",children:s(m,{id:r,value:e,onChange:u,label:o,presets:c,fallback:l??void 0,size:"md",align:"start",showHexInput:!0,opacity:d,onOpacityChange:i})}):g("div",{className:"sf-colour",children:[s(m,{id:r,value:e,onChange:u,label:o,presets:c,fallback:l??void 0,size:"md",align:"start"}),f!==null?s("span",{className:"sf-colour-caption",children:f}):s("span",{className:"sf-colour-hexwrap",children:s(w,{value:e||l||"",onChange:u,label:h("{label} hex code",{label:o}),placeholder:e||l?void 0:h("Not set"),className:l?"sf-colour-hex is-inherited":"sf-colour-hex",size:"md"})})]})}function _({value:e,onChange:n,label:o}){return s(m,{value:e,onChange:r=>{r&&r!==e&&n(r)},label:h(o),size:"sm",align:"end"})}function P({label:e,icon:n,changed:o,hint:r,onReset:t,resetTo:a,children:d,...i}){return g(b,{label:e,icon:n,htmlFor:i.id,changed:o,hint:r,action:t?s(C,{words:S()?.panel,label:e,changed:!!o,detail:a,onReset:t}):void 0,children:[k({...i,label:e}),d]})}function A({label:e,icon:n,value:o,inherited:r,resetTo:t,onChange:a,onReset:d,hint:i,opacity:c,onOpacityChange:l,changed:f}){const u=!!o;return s(P,{label:e,icon:n,value:o,inherited:u?void 0:r,onChange:a,changed:f??u,onReset:d,resetTo:t,hint:i,...l?{opacity:c,onOpacityChange:l}:{}})}export{_ as AnyColourSwatch,k as ColourControl,P as ColourRow,A as InheritedColourRow};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as I}from"react/jsx-runtime";import{ButtonIcon as g,ButtonIconIcon as x,GroundIcon as b,IconAfterTextIcon as y,IconBeforeTextIcon as C,StylesIcon as F,TextColorIcon as S,WidthIcon as T}from"efficient-easel/icons";import*as _ from"efficient-easel/icons";import{SettingsField as B}from"efficient-easel/panel";import{useSelectedFields as a}from"efficient-easel/easel";import{IconPicker as O,Segmented as k}from"efficient-shell/ui";import{StorefrontTextLinkField as v}from"../../../../../components/StorefrontLinkField.js";import{BUTTON_ICONS as w,buttonIconChoice as L,buttonIconSide as N}from"../../../../../../format/lib/content/button-icon.js";import{say as l}from"../../../../../../format/lib/editor-words.js";import{FOLLOWS_SITE_BUTTON as z,FOLLOWS_SITE_BUTTON_INK as W,colorInput as m,group as u,inOwnBox as j,linkField as P,plainText as R,section as f,segmented as p}from"../../../controls.js";import{NoControlMark as A,noControlField as U}from"efficient-easel/screen/lib/document/panel-no-control-mark";import{alignField as E}from"../../shared-fields.js";import{CARD_ROW_FACTS as G,cardRowField as d,cardRowFields as D}from"../../../card-row-fields.js";const c=o=>({...U({type:"custom",render:()=>e(A,{})},"always"),reachedBy:o});function K(o){const n=(o==="none"?"no-symbol":o).replace(/(^|-)([a-z])/g,(r,s,h)=>h.toUpperCase()),t=_[`${n}Icon`];return t?e(t,{size:16}):null}const M=w.map(o=>({value:o,icon:K(o)}));function V({value:o,onChange:i}){const n=a(),t=n.values.href,r=typeof o=="string"?o:o&&typeof o=="object"&&"text"in o?String(o.text??""):"";return e(v,{label:"Button",icon:e(g,{size:18}),text:r,onTextChange:i,link:typeof t=="string"?t:"",onLinkChange:s=>n.onChange("href",s)})}function $({value:o,onChange:i}){const n=a(),t=L(o,n.values.arrow),r=N(n.values.iconPosition);return e(B,{label:l("Icon"),icon:e(x,{size:18}),children:I("div",{className:"flex items-center gap-2",children:[e(O,{label:l("Icon"),value:t,emptyValue:"none",options:M,onChange:i}),t!=="none"&&e(k,{size:"sm",block:!0,label:l("Icon position"),value:r,onChange:s=>n.onChange("iconPosition",s),options:[{value:"before",icon:e(C,{size:16}),label:e("span",{className:"sr-only",children:l("Icon before text")}),title:l("Icon before text")},{value:"after",icon:e(y,{size:16}),label:e("span",{className:"sr-only",children:l("Icon after text")}),title:l("Icon after text")}]})]})})}const lo={fields:{label:j(R("Button"),o=>e(V,{value:o.value,onChange:o.onChange})),href:{...P("Button link"),...c("label")},_gButton:u("Button"),rowField:d("Shows","text"),rowLinkField:d("Link from","link"),_dSize:f("Size"),widthFit:p("Width",e(T,{}),[{label:"Fit content",value:"fit"},{label:"Fill",value:"fill"}],"fit"),_gStyle:u("Style"),variant:p("Style",e(F,{}),[{label:"Filled",value:"primary"},{label:"Outline",value:"ghost"}],"primary"),icon:{type:"custom",render:o=>e($,{value:o.value,onChange:o.onChange})},iconPosition:c("icon"),arrow:c("icon"),buttonColor:m("Fill color",z,e(b,{})),buttonTextColor:m("Text color",W,e(S,{})),_dLayout:f("Layout"),align:E()},resolveFields:(o,i)=>D(i.fields,o,i),showWhenFacts:G};export{lo as ButtonBlockFields};
1
+ import{jsx as t,jsxs as I}from"react/jsx-runtime";import{ButtonIcon as F,ButtonIconIcon as g,GroundIcon as x,IconAfterTextIcon as T,IconBeforeTextIcon as y,TextColorIcon as C,WidthIcon as _}from"efficient-easel/icons";import*as B from"efficient-easel/icons";import{SettingsField as O}from"efficient-easel/panel";import{useSelectedFields as d}from"efficient-easel/easel";import{IconPicker as S,Segmented as k}from"efficient-shell/ui";import{StorefrontTextLinkField as w}from"../../../../../components/StorefrontLinkField.js";import{BUTTON_ICONS as L,buttonIconChoice as N,buttonIconSide as v,buttonWidth as W}from"../../../../../../format/lib/content/button-icon.js";import{BUTTON_PAD_BUILT_IN as z,BUTTON_PAD_KEYS as P,buttonLook as A}from"../../../../../../format/lib/content/button-look.js";import{say as n}from"../../../../../../format/lib/editor-words.js";import{FOLLOWS_SITE_BUTTON as U,FOLLOWS_SITE_BUTTON_INK as R,buttonBorderField as j,buttonWordsEntryField as E,colorInput as u,group as f,inOwnBox as D,linkField as K,plainText as G,section as m,segmented as Y,sidesPaddingFields as M}from"../../../controls.js";import{NoControlMark as V,noControlField as $}from"efficient-easel/screen/lib/document/panel-no-control-mark";import{alignField as q}from"../../shared-fields.js";import{CARD_ROW_FACTS as H,cardRowField as p,cardRowFields as J}from"../../../card-row-fields.js";import{consentWordsKept as Q,withConsentWordsRow as X}from"../../../consent-words-field.js";const c=o=>({...$({type:"custom",render:()=>t(V,{})},"always"),reachedBy:o});function h(o){const e=(o==="none"?"no-symbol":o).replace(/(^|-)([a-z])/g,(r,s,a)=>a.toUpperCase()),l=B[`${e}Icon`];return l?t(l,{size:16}):null}const Z=L.map(o=>({value:o,icon:h(o)}));function oo({value:o,onChange:i}){const e=d(),l=e.values.href,r=typeof o=="string"?o:o&&typeof o=="object"&&"text"in o?String(o.text??""):"";return t(w,{label:"Button",icon:t(F,{size:18}),text:r,onTextChange:i,link:typeof l=="string"?l:"",onLinkChange:s=>e.onChange("href",s)})}function to({value:o,onChange:i}){const e=d(),l=N(o,e.values.arrow),r=v(e.values.iconPosition),s=W(e.values.widthFit)==="fill",a=h("icon-at-end");return t(O,{label:n("Icon"),icon:t(g,{size:18}),children:I("div",{className:"flex items-center gap-2",children:[t(S,{label:n("Icon"),value:l,emptyValue:"none",options:Z,onChange:i}),l!=="none"&&t(k,{size:"sm",block:!0,label:n("Icon position"),value:r==="end"&&!s?"after":r,onChange:b=>e.onChange("iconPosition",b),options:[{value:"before",icon:t(y,{size:16}),label:t("span",{className:"sr-only",children:n("Icon before text")}),title:n("Icon before text")},{value:"after",icon:t(T,{size:16}),label:t("span",{className:"sr-only",children:n("Icon after text")}),title:n("Icon after text")},...s?[{value:"end",icon:a,label:t("span",{className:"sr-only",children:n("Icon at the far end")}),title:n("Icon at the far end")}]:[]]})]})})}const eo={key:"buttonFillOpacity",unsetFrom:"variant",unset:o=>A({variant:o}).fillOpacity},Fo={fields:{label:D(G("Button"),o=>t(oo,{value:o.value,onChange:o.onChange})),labelText:E("label"),href:{...K("Button link"),...c("label")},consentWords:Q("label"),_gButton:f("Button"),rowField:p("Shows","text"),rowLinkField:p("Link from","link"),_dSize:m("Size"),widthFit:Y("Width",t(_,{}),[{label:"Fit content",value:"fit"},{label:"Fill",value:"fill"}],"fit"),...M({keys:P,fallback:z,group:!1}),_gStyle:f("Style"),variant:c("buttonColor"),icon:{type:"custom",render:o=>t(to,{value:o.value,onChange:o.onChange})},iconPosition:c("icon"),arrow:c("icon"),buttonColor:u("Fill color",U,t(x,{}),eo),buttonFillOpacity:c("buttonColor"),buttonBorder:j(),buttonTextColor:u("Text color",R,t(C,{})),_dLayout:m("Layout"),align:q()},resolveFields:(o,i)=>X(J(i.fields,o,i),o.props,"label",["href"]),showWhenFacts:H};export{Fo as ButtonBlockFields};
@@ -1 +1 @@
1
- import{jsx as n}from"react/jsx-runtime";import{BOX_CARD_PAD as o,BOX_DARKEN as e,BOX_DARKEN_STYLES as l,isBackgroundBox as c}from"../../../../../../format/lib/content/box-background.js";import{containerDirectionPoints as b}from"../../../../../../format/lib/content/container-direction.js";import{deviceField as r}from"efficient-easel/screen/lib/document/device-fields";import{OpacityIcon as k,StylesIcon as f}from"efficient-easel/icons";import{boxAlignField as u,boxBlockSpacingField as x,boxJustifyField as F,boxPhoneRowField as y,boxShareField as S,boxWrapField as _,gapField as B,group as i,placementField as h,plainText as D,select as I,sidesPaddingFields as p,slider as R,swapPadding as s,upload as d,withPanelOnly as w}from"../../../controls.js";import{withRowRules as A}from"../../../../../../render/lib/document/show-when.js";import{FlexSlots as P}from"../../../../../../format/lib/document/blocks/general/Flex/meta.js";const O={field:"bgImage",set:!0},G={fields:A({_gContent:i("Content"),content:P.content,_gLayout:i("Layout"),direction:{type:"radio",options:b("Flex")},label:w(D("Tab name")),gap:B("Flex"),justify:F(),align:u(),wrap:_(),share:S(),phoneRow:y(),blockSpacing:x(),_gBackground:i("Background image"),bgImage:r("desktop",d("Image","image/*")),bgImagePhone:r("mobile",d("Image","image/*")),darken:R("Darken",n(k,{}),e.min,e.max,e.step,e.fallback,e.unit),darkenStyle:I("Darken style",n(f,{}),l,l[0].value),placement:h("Content position",{stacking:!1})},[[["darken","darkenStyle","placement"],O]]),resolveFields:(a,{fields:t})=>{const m=a.props;if(c(m.bgImage)){const g=p({fallback:{top:o.desktop,bottom:o.desktop,left:o.side,right:o.side}});return s(t,g)}return a.props.padV2!==!0?s(t,p({fallback:{top:24,bottom:24}})):t}};export{G as FlexFields};
1
+ import{jsx as t}from"react/jsx-runtime";import{BOX_CARD_PAD as a,BOX_DARKEN as o,BOX_DARKEN_STYLES as l,isBackgroundBox as S}from"../../../../../../format/lib/content/box-background.js";import{containerDirectionPoints as f}from"../../../../../../format/lib/content/container-direction.js";import{BOX_TAB_SHAPES as k,REEL_SHAPE_LABELS as h}from"../../../../../../format/lib/reel.js";import{deviceField as r}from"efficient-easel/screen/lib/document/device-fields";import{OpacityIcon as x,ShadowIcon as F,StylesIcon as p}from"efficient-easel/icons";import{boxAlignField as _,boxBlockSpacingField as u,boxJustifyField as y,boxPhoneRowField as B,boxShareField as w,boxWrapField as A,gapField as I,group as i,placementField as P,plainText as R,select as s,sidesPaddingFields as d,slider as D,swapPadding as m,toggle as E,upload as g,withPanelOnly as O}from"../../../controls.js";import{withRowRules as L}from"../../../../../../render/lib/document/show-when.js";import{FlexSlots as T}from"../../../../../../format/lib/document/blocks/general/Flex/meta.js";const C={field:"bgImage",set:!0},X={field:"direction",is:"tabs"},Y={fields:L({_gContent:i("Content"),content:T.content,_gLayout:i("Layout"),direction:{type:"radio",options:f("Flex")},tabShape:s("Tab shape",t(p,{}),k.map(e=>({label:h[e],value:e})),"tabs"),label:O(R("Tab name")),gap:I("Flex"),justify:y(),align:_(),wrap:A(),share:w(),phoneRow:B(),blockSpacing:u(),_gShadow:i("Shadow"),shadow:E("Shadow",!1,t(F,{})),_gBackground:i("Background image"),bgImage:r("desktop",g("Image","image/*")),bgImagePhone:r("mobile",g("Image","image/*")),darken:D("Darken",t(x,{}),o.min,o.max,o.step,o.fallback,o.unit),darkenStyle:s("Darken style",t(p,{}),l,l[0].value),placement:P("Content position",{stacking:!1})},[[["darken","darkenStyle","placement"],C],[["tabShape"],X]]),resolveFields:(e,{fields:n})=>{const c=e.props;if(S(c.bgImage)){const b=d({fallback:{top:a.desktop,bottom:a.desktop,left:a.side,right:a.side}});return m(n,b)}return e.props.padV2!==!0?m(n,d({fallback:{top:24,bottom:24}})):n}};export{Y as FlexFields};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{MediaIcon as r,OpacityIcon as d,PlayIcon as m}from"efficient-easel/icons";import{colorInput as p,focusKeptField as a,group as o,MEDIA_TYPE_OPTIONS as n,plainText as g,segmented as s,slider as l,text as c,upload as i,withIdentifier as I,withPanelOnly as t}from"../../../controls.js";import{PH as f}from"../../../../../../format/lib/document/blocks/placeholders.js";import{slotNoticeField as F}from"../../shared-fields.js";import{heroMediaFields as _,VIDEO_FILE_LABEL as u,VIDEO_FILE_PROMPT as y}from"../../../../../../render/lib/document/hero-media-parts.js";import{HeroSlideSlots as P}from"../../../../../../format/lib/document/blocks/general/HeroSlide/meta.js";const h={fields:_({_gContent:o("Content"),name:t(I(g("Slide name",f.slideName))),process:t(c("Reel label","Label")),groupNotice:F("HeroSlide"),groups:P.groups,_gMedia:o("Media"),mediaType:s("Type",e(r,{}),n,"video"),mediaVideo:i(u,"video/*",y),videoSpeed:l("Playback speed",e(m,{}),25,100,5,100,"%"),mediaImage:i("Background image","image/*","Upload a background image",{focus:"imageFocal"}),imageFocal:a(),imageFocalPhone:a(),poster:i("Video poster","image/*","Upload a poster still"),_gTint:o("Image tint"),tintColor:p("Tint color","#000000"),overlay:l("Overlay",e(d,{}),0,100,5,0,"%")},{onlyFor:{image:["mediaImage","imageFocal","imageFocalPhone","_gTint","tintColor","overlay"],video:["mediaVideo","videoSpeed","poster"]},fallback:"video"})};export{h as HeroSlideFields};
1
+ import{jsx as e}from"react/jsx-runtime";import{BlockVideoIcon as m,ClockIcon as r,ImageIcon as t,MediaIcon as n,OpacityIcon as g,PlayIcon as p}from"efficient-easel/icons";import{colorInput as s,focusKeptField as o,group as i,loadingShowsField as c,MEDIA_TYPE_OPTIONS as I,plainText as f,segmented as F,slider as l,text as v,upload as a,withIdentifier as S,withPanelOnly as d}from"../../../controls.js";import{LOADING_SHOWS_IMAGE as _}from"../../../../../../format/lib/hero-video.js";import{PH as u}from"../../../../../../format/lib/document/blocks/placeholders.js";import{slotNoticeField as h}from"../../shared-fields.js";import{heroMediaFields as y,VIDEO_FILE_LABEL as O,VIDEO_FILE_PROMPT as P}from"../../../../../../render/lib/document/hero-media-parts.js";import{HeroSlideSlots as T}from"../../../../../../format/lib/document/blocks/general/HeroSlide/meta.js";const H={fields:y({_gContent:i("Content"),name:d(S(f("Slide name",u.slideName))),process:d(v("Reel label","Label")),groupNotice:h("HeroSlide"),groups:T.groups,_gMedia:i("Media"),mediaType:F("Type",e(n,{}),I,"video"),mediaVideo:a(O,"video/*",P,{frame:"videoFrame"}),videoSpeed:l("Playback speed",e(p,{}),25,100,5,100,"%"),loadingShows:c("Show while loading",e(r,{}),{frame:e(m,{}),image:e(t,{})}),videoFrame:o(),mediaImage:a("Background image","image/*","Upload a background image",{focus:"imageFocal"}),imageFocal:o(),imageFocalPhone:o(),poster:a("Image","image/*","Choose an image"),_gTint:i("Image tint"),tintColor:s("Tint color","#000000"),overlay:l("Overlay",e(g,{}),0,100,5,0,"%")},{onlyFor:{image:["mediaImage","imageFocal","imageFocalPhone","_gTint","tintColor","overlay"],video:["mediaVideo","videoSpeed","loadingShows","videoFrame"]},fallback:"video",rules:{poster:{all:[{field:"mediaType",is:"video",default:"video"},_]}}})};export{H as HeroSlideFields};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{BlackAndWhiteIcon as l,ColumnsIcon as n,HeightIcon as g,PaddingYIcon as r}from"efficient-easel/icons";import{group as t,plainText as i,slider as o,textarea as s,toggle as d,upload as m,withPanelOnly as c}from"../../../controls.js";const u={fields:{_gContent:t("Content"),heading:s("Heading","Trusted by *teams worldwide*"),items:{type:"array",label:"Logos",arrayFields:{src:m("Image","image/*"),alt:c(i("Name / alt"))},getItemSummary:a=>a.alt||a.src||"logo"},_gStyle:t("Style"),columns:o("Columns",e(n,{}),3,6,1,5),logoHeight:o("Logo height",e(g,{}),20,72,2,28,"px"),bandPadding:o("Space above and below",e(r,{}),16,120,4,40,"px"),grayscale:d("Black and white logos",!0,e(l,{}))}};export{u as LogosFields};
1
+ import{jsx as o}from"react/jsx-runtime";import{BlackAndWhiteIcon as a,ColumnsIcon as s,HeightIcon as n,PaddingYIcon as r,StylesIcon as g}from"efficient-easel/icons";import{group as l,plainText as i,select as m,slider as e,textarea as d,toggle as O,upload as _,withPanelOnly as c}from"../../../controls.js";import{DEFAULT_LOGO_LOOK as p,LOGO_LOOK_OPTIONS as S}from"../../../../../../format/lib/sections/logo-look.js";import{HEAD_ROWS_SHOW_WHEN as y,OWN_BOX_ROWS_SHOW_WHEN as L}from"../../../../../../format/lib/sections/section-head-placement.js";import{withRowRules as h}from"../../../../../../render/lib/document/show-when.js";import{LogosSlots as W}from"../../../../../../format/lib/document/blocks/general/Logos/meta.js";const u=["items","heading","bandPadding"],H=["look"],E={fields:h({_gContent:l("Content"),heading:d("Heading","Trusted by *teams worldwide*"),items:{type:"array",label:"Logos",arrayFields:{src:_("Image","image/*"),alt:c(i("Name / alt"))},getItemSummary:t=>t.alt||t.src||"logo"},logos:W.logos,_gStyle:l("Style"),columns:e("Columns",o(s,{}),3,6,1,5),logoHeight:e("Logo height",o(n,{}),20,72,2,28,"px"),bandPadding:e("Space above and below",o(r,{}),16,120,4,40,"px"),grayscale:O("Black and white logos",!0,o(a,{})),look:m("Logo style",o(g,{}),S,p)},[[u,y],[H,L]])};export{E as LogosFields};
@@ -1 +1 @@
1
- import{jsx as a}from"react/jsx-runtime";import{FieldGlyph as o}from"../../../../../components/FieldGlyph.js";import{CARD_ROW_FACTS as t,cardRowField as r,cardRowFields as i}from"../../../card-row-fields.js";import{group as d,select as s,textarea as h}from"../../../controls.js";import{PH as m}from"../../../../../../format/lib/document/blocks/placeholders.js";import{alignField as p,toneField as F}from"../../shared-fields.js";const v={fields:{text:h("Body",m.body),align:p(),tone:F(),_gText:d("Text"),rowField:r("Shows","text"),tag:s("HTML tag",a(o,{noun:"heading"}),[{label:"Paragraph",value:"p"},{label:"H1",value:"h1"},{label:"H2",value:"h2"},{label:"H3",value:"h3"},{label:"H4",value:"h4"},{label:"H5",value:"h5"},{label:"H6",value:"h6"}],"p")},resolveFields:(l,e)=>i(e.fields,l,e),showWhenFacts:t};export{v as TextFields};
1
+ import{jsx as o}from"react/jsx-runtime";import{FieldGlyph as t}from"../../../../../components/FieldGlyph.js";import{CARD_ROW_FACTS as r,cardRowField as a,cardRowFields as i}from"../../../card-row-fields.js";import{group as s,select as d,textarea as n}from"../../../controls.js";import{PH as p}from"../../../../../../format/lib/document/blocks/placeholders.js";import{alignField as h,toneField as m}from"../../shared-fields.js";import{consentWordsKept as x,withConsentWordsRow as F}from"../../../consent-words-field.js";const w={fields:{text:n("Body",p.body),consentWords:x("text"),align:h(),tone:m(),_gText:s("Text"),rowField:a("Shows","text"),tag:d("HTML tag",o(t,{noun:"heading"}),[{label:"Paragraph",value:"p"},{label:"H1",value:"h1"},{label:"H2",value:"h2"},{label:"H3",value:"h3"},{label:"H4",value:"h4"},{label:"H5",value:"h5"},{label:"H6",value:"h6"}],"p")},resolveFields:(e,l)=>F(i(l.fields,e,l),e.props,"text"),showWhenFacts:r};export{w as TextFields};
@@ -1,2 +1,2 @@
1
- export declare const assembleGeneralBlocks: () => Record<"Grid" | "Flex" | "HeroGroup" | "Ticker" | "Prose" | "Logos" | "Divider" | "LogoBlock" | "Text" | "Hero" | "HeroSingle" | "IntroBleed" | "SpecStrip" | "Timeline" | "Footprint" | "ParagraphsA" | "Cards" | "KeyFeatures" | "Chart" | "Mockup" | "Testimonials" | "TitleWithButtons" | "Countdown" | "DocMasthead" | "DocBody" | "DocMetaCards" | "FAQ" | "Split" | "Breadcrumb" | "Banner" | "Stats" | "OrderSummary" | "PaymentBadges" | "Manifesto" | "SectionHeader" | "TimelineTrack" | "ProcessSteps" | "StatsParagraph" | "Masthead" | "FeaturedCover" | "LongRead" | "Series" | "ContactLocations" | "CategoryBar" | "DocTabs" | "CustomHTML" | "Spacer" | "Heading" | "Eyebrow" | "ImageBlock" | "ButtonBlock" | "PostCard" | "HeroSlide" | "Integrations", import("efficient-easel/blocks").ComponentConfig<any, any, Omit<import("efficient-easel/blocks").ComponentData<any, string, Record<string, import("efficient-easel/blocks").DefaultComponentProps>>, "type">>>;
2
- export declare const generalBlocks: Record<"Grid" | "Flex" | "HeroGroup" | "Ticker" | "Prose" | "Logos" | "Divider" | "LogoBlock" | "Text" | "Hero" | "HeroSingle" | "IntroBleed" | "SpecStrip" | "Timeline" | "Footprint" | "ParagraphsA" | "Cards" | "KeyFeatures" | "Chart" | "Mockup" | "Testimonials" | "TitleWithButtons" | "Countdown" | "DocMasthead" | "DocBody" | "DocMetaCards" | "FAQ" | "Split" | "Breadcrumb" | "Banner" | "Stats" | "OrderSummary" | "PaymentBadges" | "Manifesto" | "SectionHeader" | "TimelineTrack" | "ProcessSteps" | "StatsParagraph" | "Masthead" | "FeaturedCover" | "LongRead" | "Series" | "ContactLocations" | "CategoryBar" | "DocTabs" | "CustomHTML" | "Spacer" | "Heading" | "Eyebrow" | "ImageBlock" | "ButtonBlock" | "PostCard" | "HeroSlide" | "Integrations", import("efficient-easel/blocks").ComponentConfig<any, any, Omit<import("efficient-easel/blocks").ComponentData<any, string, Record<string, import("efficient-easel/blocks").DefaultComponentProps>>, "type">>>;
1
+ export declare const assembleGeneralBlocks: () => Record<"Grid" | "Flex" | "HeroGroup" | "Ticker" | "Prose" | "Logos" | "Divider" | "LogoBlock" | "Text" | "Hero" | "HeroSingle" | "IntroBleed" | "SpecStrip" | "ProcessSteps" | "OrderSummary" | "PaymentBadges" | "Manifesto" | "Timeline" | "Footprint" | "ParagraphsA" | "Split" | "Cards" | "Stats" | "StatsParagraph" | "Chart" | "Mockup" | "Testimonials" | "Banner" | "TitleWithButtons" | "Countdown" | "Masthead" | "FeaturedCover" | "LongRead" | "Series" | "Breadcrumb" | "CategoryBar" | "DocTabs" | "DocMasthead" | "DocBody" | "DocMetaCards" | "FAQ" | "ContactLocations" | "SectionHeader" | "CustomHTML" | "TimelineTrack" | "Spacer" | "KeyFeatures" | "Heading" | "Eyebrow" | "ImageBlock" | "ButtonBlock" | "PostCard" | "HeroSlide" | "Integrations", import("efficient-easel/blocks").ComponentConfig<any, any, Omit<import("efficient-easel/blocks").ComponentData<any, string, Record<string, import("efficient-easel/blocks").DefaultComponentProps>>, "type">>>;
2
+ export declare const generalBlocks: Record<"Grid" | "Flex" | "HeroGroup" | "Ticker" | "Prose" | "Logos" | "Divider" | "LogoBlock" | "Text" | "Hero" | "HeroSingle" | "IntroBleed" | "SpecStrip" | "ProcessSteps" | "OrderSummary" | "PaymentBadges" | "Manifesto" | "Timeline" | "Footprint" | "ParagraphsA" | "Split" | "Cards" | "Stats" | "StatsParagraph" | "Chart" | "Mockup" | "Testimonials" | "Banner" | "TitleWithButtons" | "Countdown" | "Masthead" | "FeaturedCover" | "LongRead" | "Series" | "Breadcrumb" | "CategoryBar" | "DocTabs" | "DocMasthead" | "DocBody" | "DocMetaCards" | "FAQ" | "ContactLocations" | "SectionHeader" | "CustomHTML" | "TimelineTrack" | "Spacer" | "KeyFeatures" | "Heading" | "Eyebrow" | "ImageBlock" | "ButtonBlock" | "PostCard" | "HeroSlide" | "Integrations", import("efficient-easel/blocks").ComponentConfig<any, any, Omit<import("efficient-easel/blocks").ComponentData<any, string, Record<string, import("efficient-easel/blocks").DefaultComponentProps>>, "type">>>;
@@ -1 +1 @@
1
- import{useSyncExternalStore as T}from"react";import{rowBound as P}from"../../../format/lib/content/card-template.js";import{SHOP_MARKUP as S}from"../../../format/lib/markup.js";import{readHidable as k,textFieldOffPage as v}from"./controls.js";import{decodePartId as b}from"efficient-easel/draw";import{PART_ATTR as y}from"../../../render/lib/document/text-parts.js";import{partRowField as K}from"./part-row-field.js";import{decodePartKey as O,partRowValue as w}from"../../../render/lib/document/part-rows.js";import{isMultilineKind as A,typeInPlaceKind as R}from"../../../render/lib/document/part-text.js";import{commitPartText as C}from"./part-typing.js";const F=["bold","italic","underline","strike","link","sup","sub"],E=["bullet","number"];function I(e,t){return e?[...F,...t?E:[]]:[]}function g(e,t){const r=b(e);if(!r?.propKey)return null;const{nodeId:u,propKey:s}=r,o=t.getItemById(u),c=t.getSelectorForId(u);if(!o||!c)return null;const{key:n,row:i}=O(s),p=t.components[o.type]?.fields?.[n],d=i?K(p,i):p,m=R(d);if(!m)return null;const l=o.props??{};if(!i&&P(o.type,l,n)||i&&!(Array.isArray(l[n])&&i.index<l[n].length))return null;const x=i?w(l[n],i):l[n];return{node:o,selector:c,propKey:s,kind:m,stored:x,offPage:v(d)}}function W(e,t){const r=g(e,t);if(!r||r.offPage)return null;const{text:u,hidden:s}=k(r.stored);if(s)return null;const o=A(r.kind);return{partId:e,value:u,rules:S,multiline:o,offered:I(r.kind!=="plainText",o),write:c=>{const n=g(e,t);n&&C({node:n.node,propKey:n.propKey,kind:n.kind,zone:n.selector.zone,index:n.selector.index},c,t.replace)}}}function j(e,t,r){return e?.isConnected&&e.getAttribute(y)===r?e:t?.querySelector(`[${y}="${_(r)}"]`)??null}function _(e){return e.replace(/["\\]/g,"\\$&")}function G(e){const t=e.activeElement;return t?t.tagName==="IFRAME"||!!t.closest(".es-canvas"):!1}let f=null;const a=new Set;function B(){return f}function J(e){if(e!==f){f=e;for(const t of a)t()}}function L(e){return a.add(e),()=>{a.delete(e)}}function Q(){return T(L,B,()=>null)}export{B as canvasTypingPart,G as keysOnCanvas,j as partElement,I as partTextTools,W as partTypingTarget,J as setCanvasTypingPart,L as subscribeCanvasTypingPart,Q as useCanvasTypingPart};
1
+ import{useSyncExternalStore as T}from"react";import{rowBound as P}from"../../../format/lib/content/card-template.js";import{SHOP_MARKUP as S}from"../../../format/lib/markup.js";import{readHidable as k,textFieldOffPage as v}from"./controls.js";import{decodePartId as O}from"efficient-easel/draw";import{PART_ATTR as y}from"../../../render/lib/document/text-parts.js";import{partRowField as b}from"./part-row-field.js";import{decodePartKey as K,partRowValue as w}from"../../../render/lib/document/part-rows.js";import{isMultilineKind as A,typeInPlaceKind as R}from"../../../render/lib/document/part-text.js";import{commitPartText as C}from"./part-typing.js";import{consentWordsOf as F}from"../../../format/lib/content/consent-banner.js";const E=["bold","italic","underline","strike","link","sup","sub"],I=["bullet","number"];function _(e,t){return e?[...E,...t?I:[]]:[]}function g(e,t){const r=O(e);if(!r?.propKey)return null;const{nodeId:u,propKey:s}=r,o=t.getItemById(u),c=t.getSelectorForId(u);if(!o||!c)return null;const{key:n,row:i}=K(s),p=t.components[o.type]?.fields?.[n],d=i?b(p,i):p,m=R(d);if(!m)return null;const l=o.props??{};if(F(l)!==null||!i&&P(o.type,l,n)||i&&!(Array.isArray(l[n])&&i.index<l[n].length))return null;const x=i?w(l[n],i):l[n];return{node:o,selector:c,propKey:s,kind:m,stored:x,offPage:v(d)}}function G(e,t){const r=g(e,t);if(!r||r.offPage)return null;const{text:u,hidden:s}=k(r.stored);if(s)return null;const o=A(r.kind);return{partId:e,value:u,rules:S,multiline:o,offered:_(r.kind!=="plainText",o),write:c=>{const n=g(e,t);n&&C({node:n.node,propKey:n.propKey,kind:n.kind,zone:n.selector.zone,index:n.selector.index},c,t.replace)}}}function J(e,t,r){return e?.isConnected&&e.getAttribute(y)===r?e:t?.querySelector(`[${y}="${B(r)}"]`)??null}function B(e){return e.replace(/["\\]/g,"\\$&")}function Q(e){const t=e.activeElement;return t?t.tagName==="IFRAME"||!!t.closest(".es-canvas"):!1}let f=null;const a=new Set;function L(){return f}function X(e){if(e!==f){f=e;for(const t of a)t()}}function M(e){return a.add(e),()=>{a.delete(e)}}function Y(){return T(M,L,()=>null)}export{L as canvasTypingPart,Q as keysOnCanvas,J as partElement,_ as partTextTools,G as partTypingTarget,X as setCanvasTypingPart,M as subscribeCanvasTypingPart,Y as useCanvasTypingPart};
@@ -0,0 +1,6 @@
1
+ export declare function consentWordsKept(wordsRow: string): {
2
+ reachedBy: string;
3
+ type: "custom";
4
+ render: () => import("react").JSX.Element;
5
+ };
6
+ export declare function withConsentWordsRow<F extends Record<string, unknown>>(fields: F, props: Record<string, unknown> | undefined, wordsRow: string, dropped?: readonly string[]): F;
@@ -0,0 +1 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{LockIcon as c}from"efficient-easel/icons";import{FieldText as u}from"efficient-easel/fields";import{SettingsField as d}from"efficient-easel/panel";import{NoControlMark as l,noControlField as p}from"efficient-easel/screen/lib/document/panel-no-control-mark";import{CONSENT_WORDS_PROP as f,consentWordsOf as a}from"../../../format/lib/content/consent-banner.js";import{say as i}from"../../../format/lib/editor-words.js";function y(){return{type:"custom",render:({id:r,name:n})=>{const o=`${r??n??f}-words`;return e(d,{label:i("Words"),icon:e(c,{}),htmlFor:o,children:e(u,{id:o,value:i("Set by country"),onChange:()=>{},readOnly:!0})})}}}function b(r){return{...p({type:"custom",render:()=>e(l,{})},"always"),reachedBy:r}}function j(r,n,o,s=[]){return a(n)===null?r:Object.fromEntries(Object.entries(r).filter(([t])=>!s.includes(t)).map(([t,m])=>[t,t===o?y():m]))}export{b as consentWordsKept,j as withConsentWordsRow};
@@ -1,5 +1,6 @@
1
1
  import { type ReactElement, type ReactNode } from "react";
2
- import type { MediaValue } from "../../../format/lib/media-value.js";
2
+ import { type MediaValue } from "../../../format/lib/media-value.js";
3
+ import { type LoadingShows } from "../../../format/lib/hero-video.js";
3
4
  import { readHidable, hidableText, type HidableValue } from "efficient-easel/draw";
4
5
  import { FOLD_FIELD_MARKER, LINK_FIELD_MARKER, MEDIA_FIELD_MARKER, SCAFFOLD_FIELD_MARKER, TEXT_FIELD_MARKER, foldMetaOf, textFieldIdentifier, type EdgeCell, type FoldFieldMeta, type TextFieldMeta, type TextListRendering } from "efficient-easel/draw";
5
6
  import type { ShowWhenRule } from "../../../render/lib/document/show-when.js";
@@ -172,11 +173,14 @@ interface CornersRowTier {
172
173
  }
173
174
  export declare function cornersRowField(tier: CornersRowTier): CustomField<number | null>;
174
175
  export declare function useSelectedSibling(key: string): [unknown, (next: unknown) => void];
176
+ export declare function useSelectedPatch(): (patch: Record<string, unknown>) => void;
175
177
  export declare function cornerSidesField(): CustomField<string[] | null>;
176
178
  export declare function sectionCornersField(): CustomField<number | null>;
177
179
  export declare const SECTION_BLEEDS_HINT = "This section runs edge to edge, so its corners sit off the page. Set Width to Content width to use them.";
178
180
  export declare function sectionShapeFields(): Record<string, unknown>;
179
181
  export declare function sectionBorderField(tier: "desktop" | "mobile"): CustomField<SettingsBorderValue | undefined>;
182
+ export declare function buttonWordsEntryField(partKey: string): CustomField<undefined>;
183
+ export declare function buttonBorderField(): CustomField<SettingsBorderValue | undefined>;
180
184
  export declare function sectionAnimationFields(): Record<string, unknown>;
181
185
  export declare function cardCornersField(): CustomField<number | null>;
182
186
  export declare function templateField<V>(inner: CustomField<V>): CustomField<V>;
@@ -296,7 +300,12 @@ export type FollowsSiteButton = {
296
300
  };
297
301
  export declare const FOLLOWS_SITE_BUTTON: FollowsSiteButton;
298
302
  export declare const FOLLOWS_SITE_BUTTON_INK: FollowsSiteButton;
299
- export declare function colorInput(label: string, fallback: string | FollowsSiteButton, icon?: ReactElement): CustomField<string>;
303
+ export type ColourOpacity = {
304
+ key: string;
305
+ unsetFrom: string;
306
+ unset: (from: unknown) => number;
307
+ };
308
+ export declare function colorInput(label: string, fallback: string | FollowsSiteButton, icon?: ReactElement, opacity?: ColourOpacity): CustomField<string>;
300
309
  export declare const FOCAL_POINTS: {
301
310
  value: string;
302
311
  label: string;
@@ -373,9 +382,11 @@ export declare function segmented<V>(label: string, icon: ReactElement, options:
373
382
  value: V;
374
383
  picture?: ReactElement;
375
384
  }[], fallback: V): CustomField<V>;
385
+ export declare function loadingShowsField(label: string, icon: ReactElement, pictures: Readonly<Record<LoadingShows, ReactElement>>): CustomField<LoadingShows>;
376
386
  export declare function upload(label: string, accept: string, placeholder?: string, opts?: {
377
387
  focus?: string;
378
388
  focusWhen?: (props: Record<string, unknown>) => boolean;
389
+ frame?: string;
379
390
  }): CustomField<MediaValue>;
380
391
  export declare const CUSTOM_FIELD_MEDIA: Record<string, string[]>;
381
392
  export declare function CoordsField({ value, onChange, label, }: {