efficient-web-builder 22.1.1 → 23.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.
- package/CHANGELOG.md +189 -5
- package/dist/components/DuplicateToPageMenu.d.ts +1 -1
- package/dist/components/DuplicateToPageMenu.js +1 -1
- package/dist/components/HeroArrows.js +1 -1
- package/dist/components/HeroSection.d.ts +1 -1
- package/dist/components/HeroSection.js +1 -1
- package/dist/components/HeroSingle.js +1 -1
- package/dist/components/HeroVideoPlay.js +1 -1
- package/dist/components/LocationsGroupedField.js +1 -1
- package/dist/components/MediaUploadField.js +1 -1
- package/dist/components/PagesPanel.js +1 -1
- package/dist/components/PartSettingsPanel.js +1 -1
- package/dist/components/PreviewChatContext.js +1 -1
- package/dist/components/PreviewHeaderContext.js +1 -1
- package/dist/components/PreviewHeroPartContext.d.ts +1 -1
- package/dist/components/PreviewHeroPartContext.js +1 -1
- package/dist/components/PreviewLocationPartContext.d.ts +1 -1
- package/dist/components/PreviewLocationPartContext.js +1 -1
- package/dist/components/PreviewPartAnchors.js +1 -1
- package/dist/components/PreviewTickerContext.d.ts +1 -1
- package/dist/components/PreviewTickerContext.js +1 -1
- package/dist/components/SectionEditor.js +1 -1
- package/dist/components/SectionTextEntries.js +1 -1
- package/dist/components/SectionTextPartBridge.js +1 -1
- package/dist/components/SiteFields.js +1 -1
- package/dist/components/SiteTextStylesField.js +1 -1
- package/dist/components/SlotChildRows.d.ts +1 -1
- package/dist/components/StandaloneSectionEditor.js +1 -1
- package/dist/components/StorefrontEditor.js +1 -1
- package/dist/components/WebsiteScreenParts.js +1 -1
- package/dist/components/preview-devices.d.ts +1 -1
- package/dist/components/preview-devices.js +1 -1
- package/dist/components/storefront-editor.css +5 -42
- package/dist/components/usePinnedChromeSeed.js +1 -1
- package/dist/lib/content/footer.d.ts +1 -1
- package/dist/lib/puck/apply-card-corners.d.ts +1 -1
- package/dist/lib/puck/block-source-fields.d.ts +2 -0
- package/dist/lib/puck/block-source-fields.js +1 -1
- package/dist/lib/puck/blocks/block-types.d.ts +4 -1
- package/dist/lib/puck/blocks/general/CategoryBar/render.js +1 -1
- package/dist/lib/puck/blocks/general/ContactLocations/render.js +1 -1
- package/dist/lib/puck/blocks/general/Eyebrow/render.js +1 -1
- package/dist/lib/puck/blocks/general/FAQ/render.js +1 -1
- package/dist/lib/puck/blocks/general/FeaturedCover/fields.js +1 -1
- package/dist/lib/puck/blocks/general/FeaturedCover/render.js +1 -1
- package/dist/lib/puck/blocks/general/Flex/fields.js +1 -1
- package/dist/lib/puck/blocks/general/Footprint/render.js +1 -1
- package/dist/lib/puck/blocks/general/Heading/render.js +1 -1
- package/dist/lib/puck/blocks/general/HeroGroup/fields.js +1 -1
- package/dist/lib/puck/blocks/general/IntroBleed/render.js +1 -1
- package/dist/lib/puck/blocks/general/LogoBlock/fields.js +1 -1
- package/dist/lib/puck/blocks/general/LogoBlock/render.js +1 -1
- package/dist/lib/puck/blocks/general/LongRead/fields.js +1 -1
- package/dist/lib/puck/blocks/general/LongRead/render.js +1 -1
- package/dist/lib/puck/blocks/general/Mockup/fields.js +2 -2
- package/dist/lib/puck/blocks/general/PostCard/fields.js +1 -1
- package/dist/lib/puck/blocks/general/PostCard/render.js +1 -1
- package/dist/lib/puck/blocks/general/ProcessSteps/fields.js +1 -1
- package/dist/lib/puck/blocks/general/SectionHeader/fields.js +1 -1
- package/dist/lib/puck/blocks/general/SectionHeader/render.js +1 -1
- package/dist/lib/puck/blocks/general/Split/render.js +1 -1
- package/dist/lib/puck/blocks/general/Text/render.js +1 -1
- package/dist/lib/puck/blocks/general/TitleWithButtons/render.js +1 -1
- package/dist/lib/puck/blocks/general/render-config.d.ts +8 -0
- package/dist/lib/puck/blocks/general/render-config.js +1 -0
- package/dist/lib/puck/blocks/scaffold.js +1 -1
- package/dist/lib/puck/blocks/shared-fields.d.ts +2 -2
- package/dist/lib/puck/canvas-typing.d.ts +1 -1
- package/dist/lib/puck/canvas-typing.js +1 -1
- package/dist/lib/puck/controls.d.ts +5 -3
- package/dist/lib/puck/controls.js +1 -1
- package/dist/lib/puck/footer-blocks.d.ts +1 -1
- package/dist/lib/puck/footer-blocks.js +1 -1
- package/dist/lib/puck/general-order.d.ts +3 -0
- package/dist/lib/puck/general-order.js +1 -0
- package/dist/lib/puck/general-registry.d.ts +1 -1
- package/dist/lib/puck/general-registry.js +1 -1
- package/dist/lib/puck/header-clearance.js +1 -1
- package/dist/lib/puck/heading-outline.d.ts +1 -1
- package/dist/lib/puck/heading-outline.js +1 -1
- package/dist/lib/puck/migrate-legacy.js +1 -1
- package/dist/lib/puck/mockup-variant-fields.d.ts +1 -1
- package/dist/lib/puck/mockup-variant-fields.js +1 -1
- package/dist/lib/puck/overrides.js +1 -1
- package/dist/lib/puck/page-frame.d.ts +34 -0
- package/dist/lib/puck/page-frame.js +1 -0
- package/dist/lib/puck/page-root.d.ts +1 -26
- package/dist/lib/puck/page-root.js +2 -2
- package/dist/lib/puck/part-rows.d.ts +1 -1
- package/dist/lib/puck/part-rows.js +1 -1
- package/dist/lib/puck/part-text.d.ts +2 -2
- package/dist/lib/puck/part-text.js +1 -1
- package/dist/lib/puck/part-typing.d.ts +1 -1
- package/dist/lib/puck/passes/cell-width.d.ts +2 -0
- package/dist/lib/puck/passes/cell-width.js +1 -1
- package/dist/lib/puck/passes/index.js +1 -1
- package/dist/lib/puck/passes/inspector.js +1 -1
- package/dist/lib/puck/passes/section-height.js +1 -1
- package/dist/lib/puck/passes/section-sticky.js +1 -1
- package/dist/lib/puck/passes/section-width.js +1 -1
- package/dist/lib/puck/passes/show-when-rows.d.ts +4 -0
- package/dist/lib/puck/passes/show-when-rows.js +1 -0
- package/dist/lib/puck/passes/types.d.ts +5 -0
- package/dist/lib/puck/registry.js +1 -1
- package/dist/lib/puck/selection-parent.d.ts +1 -1
- package/dist/lib/puck/selection-parent.js +1 -1
- package/dist/lib/puck/show-when-attach.d.ts +19 -0
- package/dist/lib/puck/show-when-attach.js +1 -0
- package/dist/lib/puck/show-when-resolve.d.ts +9 -0
- package/dist/lib/puck/show-when-resolve.js +1 -0
- package/dist/lib/puck/show-when.d.ts +12 -7
- package/dist/lib/puck/show-when.js +1 -1
- package/dist/lib/puck/slot-specs.d.ts +1 -1
- package/dist/lib/puck/slot-specs.js +1 -1
- package/dist/lib/puck/template-field.d.ts +1 -1
- package/dist/lib/puck/text-part-shape.d.ts +1 -1
- package/dist/lib/puck/text-part-shape.js +1 -1
- package/dist/lib/puck/text-parts.d.ts +2 -2
- package/dist/lib/puck/text-parts.js +1 -1
- package/dist/lib/sections/section-head-placement.d.ts +5 -2
- package/dist/lib/sections/section-head-placement.js +1 -1
- package/dist/lib/sections/section-head-style.d.ts +1 -0
- package/dist/lib/sections/section-head-style.js +1 -1
- package/dist/lib/sections/ticker-scroll.d.ts +1 -1
- package/dist/lib/source-rules/import-time-work.d.ts +9 -0
- package/dist/lib/source-rules/import-time-work.js +5 -0
- package/dist/lib/source-rules/one-show-when.d.ts +9 -0
- package/dist/lib/source-rules/one-show-when.js +4 -0
- package/dist/lib/source-rules/support/registry-source.d.ts +1 -1
- package/dist/lib/source-rules/support/registry-source.js +3 -3
- package/package.json +8 -5
- package/dist/lib/puck/part-id.d.ts +0 -1
- package/dist/lib/puck/part-id.js +0 -1
- package/dist/lib/puck/preview-events.d.ts +0 -2
- package/dist/lib/puck/preview-events.js +0 -1
- package/dist/lib/puck/preview-selection-context.d.ts +0 -2
- package/dist/lib/puck/preview-selection-context.js +0 -1
- package/dist/lib/puck/text-control-kinds.d.ts +0 -2
- package/dist/lib/puck/text-control-kinds.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as n,jsxs as h,Fragment as P}from"react/jsx-runtime";import{useState as ce}from"react";import{useEasel as de}from"efficient-easel/easel";import{headWords as D,InspectorHead as pe,InspectorIconButton as C}from"efficient-easel/chrome";import{DuplicateIcon as me,TrashIcon as fe}from"efficient-easel/icons";import{panelFieldsOf as ue}from"../lib/puck/panel-fields.js";import{TICKER_PART_LABEL as F}from"./PreviewTickerContext.js";import he from"./SectionIcon.js";import{PanelHideButton as x}from"./SidePanelHead.js";import{useEditorSession as be}from"../lib/editor-session-context.js";import{say as o}from"../lib/editor-words.js";import Se,{HintsToggle as we,SHOW_HINTS_DEFAULT as ge}from"./WebsiteSettingsPanel.js";import ke from"./ChatSettingsPanel.js";import Pe from"./SocialLinksPanel.js";import ve from"./TickerSettingsPanel.js";import Ie,{PartSourceNote as Ee}from"./PartSettingsPanel.js";import ye from"./DuplicateToPageMenu.js";import{useStorefrontDocument as Le}from"./StorefrontDocumentContext.js";import{usePreviewHeader as Oe}from"./PreviewHeaderContext.js";import{useSectionOps as Ne}from"../lib/puck/use-section-ops.js";import{SELECTION_MODE as Te}from"../lib/editor-screen.js";import{usePreviewParts as He}from"
|
|
1
|
+
"use client";import{jsx as n,jsxs as h,Fragment as P}from"react/jsx-runtime";import{useState as ce}from"react";import{useEasel as de}from"efficient-easel/easel";import{headWords as D,InspectorHead as pe,InspectorIconButton as C}from"efficient-easel/chrome";import{DuplicateIcon as me,TrashIcon as fe}from"efficient-easel/icons";import{panelFieldsOf as ue}from"../lib/puck/panel-fields.js";import{TICKER_PART_LABEL as F}from"./PreviewTickerContext.js";import he from"./SectionIcon.js";import{PanelHideButton as x}from"./SidePanelHead.js";import{useEditorSession as be}from"../lib/editor-session-context.js";import{say as o}from"../lib/editor-words.js";import Se,{HintsToggle as we,SHOW_HINTS_DEFAULT as ge}from"./WebsiteSettingsPanel.js";import ke from"./ChatSettingsPanel.js";import Pe from"./SocialLinksPanel.js";import ve from"./TickerSettingsPanel.js";import Ie,{PartSourceNote as Ee}from"./PartSettingsPanel.js";import ye from"./DuplicateToPageMenu.js";import{useStorefrontDocument as Le}from"./StorefrontDocumentContext.js";import{usePreviewHeader as Oe}from"./PreviewHeaderContext.js";import{useSectionOps as Ne}from"../lib/puck/use-section-ops.js";import{SELECTION_MODE as Te}from"../lib/editor-screen.js";import{usePreviewParts as He}from"efficient-easel/draw/client";import{entryPartsOf as _e,SectionTextEntries as Ae}from"./SectionTextEntries.js";import{SectionTextSuppressProvider as Re}from"../lib/puck/section-text-suppress.js";import{HEADER_TYPE as De,ROOT_ZONE as B}from"efficient-easel/draw";import{websiteDuplicateBlocked as Ce}from"../lib/puck/every-page.js";import{FOOTER_TYPE as v}from"../lib/puck/footer-blocks.js";import Fe from"./SwitchToBoxFooter.js";import{SiteFields as M}from"./SiteFields.js";import xe from"./HeroPartPanel.js";import{HERO_MEDIA_PART_LABELS as Be,HERO_PART_MODE as Me,heroPartLabel as ze}from"../lib/puck/hero-media-parts.js";import{SettingsSwitch as Ke}from"efficient-easel/panel";import{foldTopTier as We}from"../lib/puck/field-groups.js";import{FoldHeadingScope as je}from"../lib/puck/panel-heading-scope.js";import{partRowField as Ue}from"../lib/puck/part-row-field.js";import{decodePartKey as Ye,partRowHeadLabel as Ze}from"../lib/puck/part-rows.js";import{encodePartId as $e,partHeadLabel as qe,partLabel as Ge,sectionTextParts as Je}from"../lib/puck/text-parts.js";import{partSourceOf as Qe,sourceMenuIdOf as Ve,sourceSlugOf as Xe}from"../lib/puck/source-bound-parts.js";const Zt=Te,$t={kind:"header"},qt={kind:"website"},Gt={kind:"chat"},Jt={kind:"social"},S="Part";function et(e){return o("Part of {name}",{name:o(e)})}function tt(e,i,r){const a=e.describeNode(i);return{name:r,kindLabel:a?et(a.label):o(S)}}function nt(e){switch(e){case"Header":return{title:o("Header settings belong to a website."),own:o("Each website created from this template sets its own header afterwards.")};case"Appearance":return{title:o("Appearance settings belong to a website."),own:o("Each website created from this template sets its own appearance afterwards.")};case"Live chat":return{title:o("Live chat settings belong to a website."),own:o("Each website created from this template sets its own live chat afterwards.")};case"Social link":return{title:o("Social link settings belong to a website."),own:o("Each website created from this template sets its own social link afterwards.")};default:return{title:o("{what} settings belong to a website.",{what:e}),own:o("Each website created from this template sets its own {what} afterwards.",{what:e.toLowerCase()})}}}function z({what:e}){const i=nt(e);return h("div",{className:"sf-note",children:[n("p",{children:n("strong",{children:i.title})}),h("p",{children:[o("A template is a blueprint — it has no website of its own, so there is nothing here to change.")," ",i.own]})]})}function I(e){const i=Me[e];return{name:Be[e],kindLabel:S,icon:i,head:(r,a)=>{if(r.kind!==i)return null;const c=a.describeNode(r.nodeId);if(!c)return null;const m=D({name:o(ze(e,c.props)),tier:"part",of:o(c.label)},{partOf:({name:d})=>o("Part of {name}",{name:d})});return{name:m.name,kindLabel:m.kind}},render:(r,a)=>r.kind===i?n(xe,{nodeId:r.nodeId,part:e,sectionName:a.describeNode(r.nodeId)?.label??"Hero",onUpToSection:()=>a.onSelectNode(r.nodeId)}):null}}const ot={header:{name:"Header",kindLabel:"Site settings",icon:"header",render:(e,i)=>{const r=i.hostPanels?.header;return r?n(r,{placeholderMode:i.capabilities.placeholderFrames,tokenRef:i.tokenRef,siteId:i.siteId,websiteName:i.websiteName,onOpenWebsiteSettings:i.onOpenWebsiteSettings,onAuthExpired:()=>i.notifyParent("storefront-editor:auth-expired")}):null}},website:{name:"Appearance",kindLabel:"Site settings",icon:"website",render:(e,i)=>n(Se,{themeFromDocument:!i.capabilities.hasSiteTheme,tokenRef:i.tokenRef,siteId:i.siteId,onNotify:i.onNotify})},chat:{name:"Live chat",kindLabel:"Site settings",icon:"chat",render:()=>n(ke,{})},social:{name:"Social links",kindLabel:"Site settings",icon:"social",render:()=>n(Pe,{unavailable:n(z,{what:"Social link"})})},ticker:{name:F,kindLabel:S,icon:"ticker",head:(e,i)=>e.kind==="ticker"?tt(i,e.heroId,o(F)):null,render:e=>n(ve,{heroId:e.kind==="ticker"?e.heroId:""})},heroMedia:I("media"),heroImage:I("image"),heroImage2:I("image2"),part:{name:S,kindLabel:S,icon:"Text",head:(e,i)=>{if(e.kind!=="part")return null;const r=i.describeNode(e.nodeId);if(!r)return null;const{key:a,row:c}=Ye(e.propKey),m=c?Ue(r.fields[a],c):r.fields[a],d=Ze(o(qe(Ge(m??{},a))),c),f=D({name:d,tier:"part",of:o(r.label)},{partOf:({name:w})=>o("Part of {name}",{name:w})});return{name:f.name,kindLabel:f.kind}},render:(e,i)=>e.kind==="part"?n(Ie,{nodeId:e.nodeId,propKey:e.propKey,onBack:()=>i.onSelectNode(e.nodeId),onEditStyle:i.onOpenSiteStyles}):null}},it=new Set(["header","website","chat"]);function rt(e,i){if(e==="puck")return null;const r=ot[e];return it.has(e)&&!i.hasSiteSettings?{...r,kindLabel:"Not part of a template",render:()=>n(z,{what:r.name})}:r}function st({mode:e,onOpenWebsiteSettings:i,onOpenSiteStyles:r,onSelectNode:a,hideNodeActions:c=!1,onNotify:m,onHidePanel:d}){const{capabilities:f,tokenRef:w,notifyParent:K,currentSlug:W,siteId:E,runAuthed:j,readOnly:U}=Le(),{websiteName:Y}=Oe(),g=Ne({readOnly:U}),{select:Z}=He(),{selectedItem:t,getItemById:$,getSelectorForId:q,config:u,appState:G}=de(p=>p),J=ue(u,t?{type:t.type,props:t.props}:null),y=t?Je(J??u.components[t.type]?.fields,t.props):[],Q=p=>u.components[p]?.label??p,s=t?q(t.props.id):void 0,l=rt(e.kind,f),V=be(),L={capabilities:f,tokenRef:w,hostPanels:V.chrome?.panels,describeNode:p=>{const b=$(p);if(!b)return null;const R=u.components[b.type];return{type:b.type,label:R?.label??b.type,fields:R?.fields??{},props:b.props??{}}},siteId:E,websiteName:Y??null,notifyParent:K,onNotify:m,onOpenWebsiteSettings:i,onOpenSiteStyles:r,onSelectNode:a},O=l?.head?.(e,L)??null,X=O?.name??(l?o(l.name):t?o(Q(t.type)):o("Page settings")),ee=O?.kindLabel??(l?o(l.kindLabel):t?s&&s.zone!==B?o("Block"):o("Section"):o("Page")),te=l?l.icon:t?t.type:"page",N=l?null:t?u.components[t.type]?.fields??null:u.root?.fields??null,ne=N?We(N):2,T=e.kind==="puck"&&t?Qe(t.type):null,oe=!!t&&!!s&&s.zone===B&&t.type!==v&&t.type!==De,k=Ce(G?.data,t),ie=()=>{k||s&&g.duplicateComponent(s.zone,s.index)},re=()=>{s&&(g.removeComponent(s.zone,s.index),g.select(null))},se=t?u.components[t.type]?.defaultProps?.previewHover:void 0,H=e.kind==="puck"&&!!t&&!!s&&se!==void 0,_=H&&t.props.previewHover===!0,ae=()=>{!t||!s||g.replaceComponent(s.zone,s.index,{...t,props:{...t.props,previewHover:!_}})},[A,le]=ce(ge);return h("div",{className:`es-sidepanel es-sidepanel--right sf-panel sf-panel--right${A||!(!l&&!!t)?"":" sf-hints-folded"}`,children:[n(pe,{icon:n(he,{type:te,size:15}),name:X,kind:ee,actions:!c&&e.kind==="puck"&&t&&t.type!==v?h(P,{children:[n(C,{label:o("Duplicate section"),title:k??void 0,disabled:k!==null,onClick:ie,children:n(me,{size:15})}),oe&&f.hasSiteSettings&&n(ye,{node:t,currentSlug:W,siteId:E??void 0,tokenRef:w,runAuthed:j,onNotify:m}),n(C,{label:o("Remove section"),danger:!0,onClick:re,children:n(fe,{size:15})}),d?n(x,{side:"right",onHide:d,divider:!0}):null]}):d?n(x,{side:"right",onHide:d}):void 0}),H&&h("div",{className:"sf-preview-pin",children:[h("div",{className:"sf-preview-pin-text",children:[n("span",{className:"sf-preview-pin-label",children:o("Preview hover state")}),n("span",{className:"sf-preview-pin-hint",children:o("not shown live")})]}),n(Ke,{checked:_,onChange:ae,ariaLabel:o("Preview hover state")})]}),n(je,{tier:ne,children:n("div",{className:"sf-insp-body es-insp-body sf-scroll",children:l?l.render(e,L):t?h(P,{children:[t.type===v&&f.hasSiteSettings&&n(Fe,{}),n(Re,{children:n(M,{entries:n(Ae,{parts:y,heading:!1,onOpen:p=>Z($e(t.props.id,p))}),entryCount:_e(y).length})}),T&&n(Ee,{source:T,slug:Xe(t?.props),menuId:Ve(t?.props)}),n(we,{shown:A,onChange:le})]}):n(P,{children:n(M,{})})})})]})}export{Gt as CHAT_MODE,$t as HEADER_MODE,Zt as PUCK_MODE,Jt as SOCIAL_MODE,qt as WEBSITE_MODE,st as default,rt as resolvePanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as t,jsxs as f}from"react/jsx-runtime";import{SettingsDrill as a}from"efficient-easel/panel";import l
|
|
1
|
+
"use client";import{jsx as t,jsxs as f}from"react/jsx-runtime";import{SettingsDrill as a}from"efficient-easel/panel";import{UiIcon as l}from"efficient-easel/draw/client";import{say as i}from"../lib/editor-words.js";const m="Not shown on the page";function c({part:e,onOpen:n}){return t(a,{name:i(e.label),preview:e.offPage?i(m):e.preview||i("Empty"),offPage:e.offPage,status:e.hidden?t("span",{className:"sf-entry-eye",role:"img","aria-label":i("Hidden on the page"),children:t(l,{name:"eye-off",size:14})}):void 0,onOpen:()=>n(e.key)})}function u(e){return e.filter(n=>!n.identifier)}function g({parts:e,onOpen:n,heading:o=!0}){const r=u(e);return r.length?f("div",{className:"sf-entries",children:[o?t("h3",{className:"sf-entries-head",children:i("Text")}):null,r.map(s=>t(c,{part:s,onOpen:n},s.key))]}):null}export{g as SectionTextEntries,u as entryPartsOf};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as R}from"react/jsx-runtime";import{useEffect as T,useRef as v}from"react";import{markOverlayPortal as x}from"../lib/puck/overlay-portal.js";import{measureStyleBase as S,styleTagsOf as b}from"./PreviewPartAnchors.js";import{usePreviewParts as h}from"
|
|
1
|
+
"use client";import{jsx as R}from"react/jsx-runtime";import{useEffect as T,useRef as v}from"react";import{markOverlayPortal as x}from"../lib/puck/overlay-portal.js";import{measureStyleBase as S,styleTagsOf as b}from"./PreviewPartAnchors.js";import{usePreviewParts as h}from"efficient-easel/draw/client";import{usePartStyle as k}from"./PreviewPartStyleContext.js";import{PART_SELECTED_ATTR as n,encodePartId as A}from"../lib/puck/text-parts.js";import{TEXT_REGION_ATTR as d,textRegionForClick as _,textRegionOfAttr as O,textRegionPartKey as y}from"../lib/sections/text-regions.js";import{regionsForSection as C}from"../lib/sections/section-text-regions.js";function L({nodeId:r,sectionType:c,children:E}){const f=v(null),{selectedPartId:l,select:u}=h(),{setPartStyle:a}=k();return T(()=>{const o=f.current,s=C(c);if(!o||!r||!s)return;const i=[],m=Array.from(o.querySelectorAll(`[${d}]`));for(const t of m){const e=O(s,t.getAttribute(d));if(!e)continue;const g=x(t);g&&i.push(g);const P=A(r,y(e));P===l?(t.setAttribute(n,""),a({partId:P,...b(t),base:S(t)})):t.removeAttribute(n)}const p=t=>{const e=_(s,t.target);e&&(t.stopPropagation(),t.preventDefault(),u(A(r,y(e))))};return o.addEventListener("click",p,{capture:!0}),i.push(()=>o.removeEventListener("click",p,{capture:!0})),()=>{for(const t of i)t();for(const t of m)t.removeAttribute(n)}},[r,c,l,u,a]),R("div",{ref:f,style:{display:"contents"},children:E})}export{L as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as E}from"react/jsx-runtime";import{useLayoutEffect as P,useMemo as
|
|
1
|
+
"use client";import{jsx as E}from"react/jsx-runtime";import{useLayoutEffect as P,useMemo as F,useRef as q,useState as T}from"react";import{useEasel as R,useSelectedFields as U}from"efficient-easel/easel";import{Inspector as W,planFields as v}from"efficient-easel/fields";import{BUCKET_ICONS as X,entriesHiddenForTab as G}from"../lib/puck/controls.js";import{BUCKETS as H}from"../lib/puck/field-groups.js";import{say as Y}from"../lib/editor-words.js";import{usePreviewDevice as z}from"efficient-easel/draw/client";import{showWhenContext as J,visibleFields as Q}from"../lib/puck/show-when.js";import{fieldsOfPart as V}from"../lib/puck/hero-media-parts.js";import{bandIsDropped as Z,droppedBands as $,sameKeys as ee,TEXT_BAND_KEY as _,TEXT_BAND_TITLE as te,withoutBands as oe}from"../lib/puck/panel-bands.js";const x=new Map,p=new Set;function ne(o,r){const a=new Map;for(const s of o.querySelectorAll(".es-insp-row[data-field]"))a.set(s.getAttribute("data-field")??"",s);const n=[];for(const[s,l]of r)n.push({key:s,rows:l.map(w=>{const d=a.get(w),f=!!d&&[...d.children].some(b=>!b.hidden),u=d?.querySelector(".es-field-label, .es-list-label")?.textContent?.trim();return{shown:f,labelled:f&&!!u}})});return n}const se=Object.fromEntries(H.map(o=>{const r=X[o];return[o,E(r,{},o)]}));function be({entries:o,entryCount:r=0,part:a=null}){const{id:n,fields:s,values:l,readOnly:w,onChange:d}=U(),f=z(),{appState:u,config:b}=R(e=>e),g=J(f,b,u.data.content??[],u.ui.itemSelector),A=V(s,a),i=Q(A,l,g),[I,M]=T(()=>new Set(p)),[C,O]=T(()=>new Set),B=q(null),D=F(()=>{const e=new Map;for(const t of v(i).rows){if(!t.fold)continue;const c=e.get(t.fold.key)??[];c.push(t.name),e.set(t.fold.key,c)}return e},[i]);P(()=>{const e=B.current?.parentElement;if(!e)return;const t=new Set($(ne(e,D)));O(c=>ee(c,t)?c:t)});const N=F(()=>oe(i,C),[i,C]),k={key:_,rows:Array.from({length:r},()=>({shown:!0,labelled:!0}))},K=Z(k)?void 0:{key:_,title:te},[h,j]=T(()=>x.get(n)),y=x.get(n),m=v(i).buckets,S=y&&m.includes(y)?y:h&&m.includes(h)?h:m[0],L=S===void 0||G(m,S)!==!0;return E(W,{fields:N,values:l,onChange:d,readOnly:w,showWhenContext:{...g,node:l},tab:S,onTab:e=>{x.set(n,e),j(e)},tabIcons:se,idPrefix:n,ariaLabel:Y("Section settings"),lead:L?o:null,leadFold:K,closedFolds:I,onFold:(e,t)=>{t?p.delete(e):p.add(e),M(new Set(p))},children:E("span",{ref:B,hidden:!0})})}export{be as SiteFields,se as TAB_ICONS};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as y}from"react/jsx-runtime";import{useState as O}from"react";import{TextStylesList as v}from"efficient-easel/text-styles";import{FONT_OPTIONS as x}from"../lib/fonts.js";import{usePreviewDevice as I}from"
|
|
1
|
+
"use client";import{jsx as y}from"react/jsx-runtime";import{useState as O}from"react";import{TextStylesList as v}from"efficient-easel/text-styles";import{FONT_OPTIONS as x}from"../lib/fonts.js";import{usePreviewDevice as I}from"efficient-easel/draw/client";import{applyListChange as _,resolveTextStyles as C,toPanelStyles as E}from"../lib/site-text-styles.js";const c=["font","color","size","weight","emphasis","lineSpacing","letterSpacing","paragraphSpacing","letterCase","largestSize"],b=["size","lineSpacing","letterSpacing","letterCase"],k=500,w=x.map(e=>({value:e.key,label:e.label,family:`var(${e.cssVar})`,italic:e.italicLoaded}));function L({saved:e,old:s,colours:p,sizeOf:o,onChange:f,openId:a,onOpenChange:S,readOnly:d=!1,withoutSize:g=!1}){const[m,u]=O(null),T=I()==="mobile",l=C(e,s),r=E(l,o);return y(v,{styles:r,onChange:t=>f(_({saved:e,old:s,cur:r,next:t,sizeOf:o})),fonts:w,colours:p,settings:g?c.filter(t=>t!=="size"):c,auto:b,openId:a===void 0?m:a,onOpenChange:S??u,readOnly:d,device:T?"phone":"desktop",fallback:t=>{const n=l.find(h=>h.id===(t.kind==="heading"?"heading-1":"body-1")),i={};return n?.values.font&&t.id!==n.id&&(i.font=n.values.font),t.kind==="heading"&&(i.weight=k),i}})}export{w as SITE_FONTS,L as default};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type SlotChildActions } from "./SlotChildActionsContext.js";
|
|
2
|
-
import type { TreeItem } from "
|
|
2
|
+
import type { TreeItem } from "efficient-easel/draw";
|
|
3
3
|
export declare function SlotChildRows({ parent, parentType, label, rowName, onSelectChild, onAddChild, nestDepth, }: {
|
|
4
4
|
parent: TreeItem;
|
|
5
5
|
parentType: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as o}from"react/jsx-runtime";import{useCallback as H,useEffect as P,useMemo as l,useRef as V,useState as u}from"react";import R from"next/dynamic";import"efficient-easel/easel.css";import"efficient-easel/shell.css";import"efficient-easel/rail.css";import"efficient-easel/panel.css";import"efficient-easel/fields.css";import"efficient-easel/pick.css";import"efficient-easel/copy.css";import"efficient-easel/gold.css";import"efficient-easel/text-styles.css";import"efficient-easel/menu.css";import"efficient-easel/chrome.css";import"efficient-easel/tree.css";import"efficient-easel/screen.css";import"./storefront-editor.css";import{buildConfig as X}from"../lib/puck/build-config.js";import{withTemplateMediaPlaceholders as Z}from"../lib/puck/templateFields.js";import{setEditorPageSlug as x}from"../lib/puck/editor-page-context.js";import{StorefrontDocumentContext as $}from"./StorefrontDocumentContext.js";import{PreviewHeaderProvider as ee}from"./PreviewHeaderContext.js";import{PreviewTickerProvider as te}from"./PreviewTickerContext.js";import{PreviewHeroPartProvider as re}from"./PreviewHeroPartContext.js";import{PreviewPartsProvider as oe}from"
|
|
1
|
+
"use client";import{jsx as o}from"react/jsx-runtime";import{useCallback as H,useEffect as P,useMemo as l,useRef as V,useState as u}from"react";import R from"next/dynamic";import"efficient-easel/easel.css";import"efficient-easel/shell.css";import"efficient-easel/rail.css";import"efficient-easel/panel.css";import"efficient-easel/fields.css";import"efficient-easel/pick.css";import"efficient-easel/copy.css";import"efficient-easel/gold.css";import"efficient-easel/text-styles.css";import"efficient-easel/menu.css";import"efficient-easel/chrome.css";import"efficient-easel/tree.css";import"efficient-easel/screen.css";import"./storefront-editor.css";import{buildConfig as X}from"../lib/puck/build-config.js";import{withTemplateMediaPlaceholders as Z}from"../lib/puck/templateFields.js";import{setEditorPageSlug as x}from"../lib/puck/editor-page-context.js";import{StorefrontDocumentContext as $}from"./StorefrontDocumentContext.js";import{PreviewHeaderProvider as ee}from"./PreviewHeaderContext.js";import{PreviewTickerProvider as te}from"./PreviewTickerContext.js";import{PreviewHeroPartProvider as re}from"./PreviewHeroPartContext.js";import{PreviewPartsProvider as oe}from"efficient-easel/draw/client";import{PreviewLocationPartProvider as ie}from"./PreviewLocationPartContext.js";import{PreviewPartStyleProvider as ne}from"./PreviewPartStyleContext.js";import{sectionTemplates as O}from"../lib/editor-section-templates.js";import{nodeToDoc as se,docToNode as B}from"../lib/puck/section-doc.js";import{newNodeId as de}from"efficient-easel/draw";import{migrateRenamedProps as ae}from"../lib/puck/renamed-props.js";import{buildSlotSeedChildren as ce}from"../lib/puck/slot-specs.js";import{FOOTER_TYPE as me,buildDefaultFooterBlocks as le}from"../lib/puck/footer-blocks.js";import{NO_BRIDGED_CAPABILITIES as ue,useAdminBridge as fe}from"../lib/editor-admin-bridge.js";import{useEditorHost as pe}from"../lib/editor-host.js";import{ChromeWrap as ve}from"../lib/editor-chrome.js";import{sessionRegistry as ge}from"../lib/editor-session.js";import{useEditorSession as he}from"../lib/editor-session-context.js";import{say as F}from"../lib/editor-words.js";import{retargetWhenSaved as Pe}from"../lib/section-retarget.js";import{routeSharedHostMessage as Se}from"../lib/editor-host-inbound.js";import{routeWebsiteHostMessage as Ee}from"../lib/website-host-inbound.js";import{DEFAULT_THEME_MODE as S,THEME_MODE_KEY as ye}from"../lib/theme.js";import{makeSitePageAdapter as L}from"../lib/editor-document-adapter.js";import{documentPermissions as Te}from"efficient-easel/edit-lock";import{useAutosave as we}from"efficient-easel/autosave";import{saveStatusOf as Ne}from"../lib/puck/pinned-seed-gate.js";import{blocksOf as ke}from"../lib/website-session.js";const Ae=R(()=>import("./SiteEditorProvider.js"),{ssr:!1}),Ce=R(()=>import("./SectionEditorShell.js"),{ssr:!1}),U="HeroSingle",W="Untitled section";function Ie(i,E){const d=E.components,r=d[i]?i:U,y=d[r]?.defaultProps??{},n=ce(r,f=>d[f]?.defaultProps??{}),s=r===me?{blocks:le()}:null;return{type:r,props:{id:de(r),...y,...n?{[n.slot]:n.children}:null,...s}}}function Oe(){if(typeof window>"u")return S;try{const i=window.localStorage.getItem(ye);return i==="light"||i==="dark"||i==="auto"?i:S}catch{return S}}function be({id:i,initialType:E,initialName:d=W}){const[r,y]=u(i),n=V(r);P(()=>{n.current=r},[r]);const s=pe(),[f,Y]=u(E),[b,j]=u(d),[a,T]=u(void 0),[K,G]=u(S),{token:w,tokenRef:M}=fe({onMessage:e=>{if(Ee(e)||Se(e))return;const t=e;if(t?.type==="storefront-editor:navigate"&&t.target?.kind==="section"&&t.target.id){const I=t.target.id;if(I===n.current)return;const J=t.target.type,Q=t.target.name;Pe(k,()=>{Y(J),j(Q||W),y(I),s.address.show({kind:"section",id:I})},()=>s.send("storefront-editor:save-failed"))}}}),N=we({save:e=>O.update(e.id,e.node).then(()=>{}),onFailure:(e,t)=>{t===0&&s.send("storefront-editor:save-failed")}}),{state:p,push:_,flush:k}=N;P(()=>G(Oe()),[]);const c=he(),v=c.usesBridgedToken?!!w:!0,g=l(()=>X(ge(c),ke(c)),[c]);P(()=>{if(!v)return;let e=!1;return T(void 0),O.ensure(r,b,Ie(f??U,g)).then(t=>!e&&T(t.node)).catch(()=>!e&&T(null)),()=>{e=!0}},[r,f,b,v,g]);const A=H(e=>{s.send("storefront-editor:dirty");const t=B(e);t&&_({id:n.current,node:t})},[_,s]),h=s.send,D=H(async e=>{try{return await e(M.current??""),!0}catch{return h("storefront-editor:save-failed"),!1}},[h]),q=l(()=>Z(g,!0),[g]);P(()=>(x(null),()=>x(null)),[]);const m=l(()=>a?ae(se(a)):null,[a]),C=l(()=>({target:{kind:"page",slug:""},adapter:L(void 0),capabilities:L(void 0).capabilities,templateId:null,currentSlug:"",currentKind:null,siteId:null,ready:v,token:w,tokenRef:M,notifyParent:h,runAuthed:D,docId:r,data:m,getLiveData:()=>m,footerOriginSlug:null,error:null,redirecting:!1,saveStatus:Ne(p),saveState:p,autoSaveEnabled:!0,autoSaveStoppedByConflict:!1,hasUnsavedEdits:p.pending,toggleAutoSave:()=>{},retrySave:()=>{N.retryNow()},onChange:A,flushSave:k,onPublish:async e=>{const t=B(e);t&&await O.update(n.current,t)},bridgeCapabilities:ue,access:{kind:"editing"},readOnly:!1,takeOverEditing:()=>{},viewReadOnly:()=>{},saveConflict:null,reloadFromServer:()=>{},navigate:()=>{},pendingNav:null,cancelPendingNav:()=>{},discardAndNavigate:()=>{},saveAndNavigate:async()=>{}}),[r,v,w,h,D,m,p,A,k,N.retryNow]),z=l(()=>Te(!C.readOnly),[C.readOnly]);return a===void 0?o("div",{className:"sf-msg",children:F("Loading…")}):a===null||!m?o("div",{className:"sf-msg sf-msg--error",children:F("Couldn’t open this section.")}):o($.Provider,{value:C,children:o(ee,{themeMode:K,chromePlaceholder:!0,children:o(ve,{wrap:c.chrome?.wrap,surface:"section",children:o(te,{children:o(re,{children:o(oe,{children:o(ie,{children:o(ne,{children:o(Ae,{config:q,data:m,onChange:A,permissions:z,children:o(Ce,{})},r)})})})})})})})})}export{be as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as c,jsxs as ct}from"react/jsx-runtime";import{useCallback as a,useEffect as p,useMemo as M,useRef as S,useState as r}from"react";import"efficient-easel/easel.css";import"efficient-easel/shell.css";import"efficient-easel/rail.css";import"efficient-easel/panel.css";import"efficient-easel/fields.css";import"efficient-easel/pick.css";import"efficient-easel/copy.css";import"efficient-easel/gold.css";import"efficient-easel/text-styles.css";import"efficient-easel/menu.css";import"efficient-easel/chrome.css";import"efficient-easel/tree.css";import"efficient-easel/drag.css";import"efficient-easel/screen.css";import"./storefront-editor.css";import{buildConfig as dt}from"../lib/puck/build-config.js";import{ChromeWrap as ut}from"../lib/editor-chrome.js";import{sessionRegistry as ht}from"../lib/editor-session.js";import{backendOf as R,blocksOf as lt}from"../lib/website-session.js";import{useEditorSession as mt}from"../lib/editor-session-context.js";import{withSiteBlockGapFields as pt}from"../lib/puck/site-gap-fields.js";import{withTemplateMediaPlaceholders as St}from"../lib/puck/templateFields.js";import{setEditorPage as de}from"../lib/puck/editor-page-context.js";import{resolveSiteName as ft}from"../lib/content/site-name.js";import{normalizeSiteGutter as gt,normalizeSiteWidth as wt}from"../lib/content/page-width.js";import{normalizeSiteBlockGap as Ct}from"../lib/content/container-gap.js";import Tt,{DocumentScreen as _t}from"./EditorScreenMount.js";import{useStorefrontDocument as Et}from"./StorefrontDocumentContext.js";import{PreviewHeaderProvider as yt}from"./PreviewHeaderContext.js";import{PreviewFooterProvider as Pt}from"./PreviewFooterContext.js";import{PreviewChatProvider as vt,DEFAULT_CHAT_PREVIEW as Ht}from"./PreviewChatContext.js";import{PreviewSocialProvider as It}from"./PreviewSocialContext.js";import{useSocialSettings as Mt}from"./useSocialSettings.js";import{PreviewSurfaceProvider as Rt}from"./PreviewSurfaceContext.js";import{WEBSITE_ADDRESSING as Gt}from"../lib/website-document-addressing.js";import{PreviewTickerProvider as Ft}from"./PreviewTickerContext.js";import{PreviewHeroPartProvider as Wt}from"./PreviewHeroPartContext.js";import{PreviewPartsProvider as kt}from"
|
|
1
|
+
"use client";import{jsx as c,jsxs as ct}from"react/jsx-runtime";import{useCallback as a,useEffect as p,useMemo as M,useRef as S,useState as r}from"react";import"efficient-easel/easel.css";import"efficient-easel/shell.css";import"efficient-easel/rail.css";import"efficient-easel/panel.css";import"efficient-easel/fields.css";import"efficient-easel/pick.css";import"efficient-easel/copy.css";import"efficient-easel/gold.css";import"efficient-easel/text-styles.css";import"efficient-easel/menu.css";import"efficient-easel/chrome.css";import"efficient-easel/tree.css";import"efficient-easel/drag.css";import"efficient-easel/screen.css";import"./storefront-editor.css";import{buildConfig as dt}from"../lib/puck/build-config.js";import{ChromeWrap as ut}from"../lib/editor-chrome.js";import{sessionRegistry as ht}from"../lib/editor-session.js";import{backendOf as R,blocksOf as lt}from"../lib/website-session.js";import{useEditorSession as mt}from"../lib/editor-session-context.js";import{withSiteBlockGapFields as pt}from"../lib/puck/site-gap-fields.js";import{withTemplateMediaPlaceholders as St}from"../lib/puck/templateFields.js";import{setEditorPage as de}from"../lib/puck/editor-page-context.js";import{resolveSiteName as ft}from"../lib/content/site-name.js";import{normalizeSiteGutter as gt,normalizeSiteWidth as wt}from"../lib/content/page-width.js";import{normalizeSiteBlockGap as Ct}from"../lib/content/container-gap.js";import Tt,{DocumentScreen as _t}from"./EditorScreenMount.js";import{useStorefrontDocument as Et}from"./StorefrontDocumentContext.js";import{PreviewHeaderProvider as yt}from"./PreviewHeaderContext.js";import{PreviewFooterProvider as Pt}from"./PreviewFooterContext.js";import{PreviewChatProvider as vt,DEFAULT_CHAT_PREVIEW as Ht}from"./PreviewChatContext.js";import{PreviewSocialProvider as It}from"./PreviewSocialContext.js";import{useSocialSettings as Mt}from"./useSocialSettings.js";import{PreviewSurfaceProvider as Rt}from"./PreviewSurfaceContext.js";import{WEBSITE_ADDRESSING as Gt}from"../lib/website-document-addressing.js";import{PreviewTickerProvider as Ft}from"./PreviewTickerContext.js";import{PreviewHeroPartProvider as Wt}from"./PreviewHeroPartContext.js";import{PreviewPartsProvider as kt}from"efficient-easel/draw/client";import{PreviewLocationPartProvider as At}from"./PreviewLocationPartContext.js";import{PreviewPartStyleProvider as Dt}from"./PreviewPartStyleContext.js";import{SiteMapsProvider as xt,readSiteMapsKey as Bt,writeSiteMapsKey as ue,readSiteMapId as Nt,writeSiteMapId as Ot}from"../lib/maps-config.js";import{CORNER_STYLE_TO_PX as bt,DEFAULT_HEADING_COMPRESSION as zt,DEFAULT_HEADING_TYPOGRAPHY as Kt,DEFAULT_SWITCH_SHOWN as G,DEFAULT_SIZES as Lt,DEFAULT_THEME_MODE as C,normalizeCornerRadius as Yt,normalizeCornerStyle as Ut,normalizeCardShadow as jt,normalizeCardGap as Vt,normalizeHoverEffect as Xt,normalizeShadowColor as Zt,IDENTITY_CARD_GAP as he,IDENTITY_CARD_SHADOW as qt,IDENTITY_HOVER_EFFECT as Jt,THEME_MODE_KEY as le,THEME_STORAGE_KEY as Qt,THEME_SWITCH_HIDE as me,THEME_SWITCH_KEY as F}from"../lib/theme.js";import{DEFAULT_FONTS as $t}from"../lib/fonts.js";import{WEBSITE_SCREEN as er}from"./WebsiteScreenParts.js";import{routeWebsiteHostMessage as tr}from"../lib/website-host-inbound.js";import{siteTextFromRow as rr}from"../lib/site-text-styles.js";import{wordStylesFromRow as or}from"../lib/word-styles.js";import{chatPreviewFrom as nr}from"./PreviewChatContext.js";const ar=()=>{if(typeof window>"u")return C;try{const i=window.localStorage.getItem(le);return i==="light"||i==="dark"||i==="auto"?i:C}catch{return C}},pe=i=>{if(!(typeof window>"u"))try{window.localStorage.setItem(le,i)}catch{}},ir=()=>{if(typeof window>"u")return G;try{return window.localStorage.getItem(F)!==me}catch{return G}},sr=()=>{if(!(typeof window>"u"))try{window.localStorage.removeItem(Qt)}catch{}},Se=i=>{if(!(typeof window>"u"))try{i?window.localStorage.removeItem(F):window.localStorage.setItem(F,me)}catch{}};function cr(){const{adapter:i,capabilities:d,templateId:W,ready:f,token:l,siteId:s,currentSlug:k,currentKind:A}=Et();p(()=>(de(k,A),()=>de(null,null)),[k,A]);const T=d.placeholderFrames,[fe,D]=r(null),[ge,x]=r("");p(()=>{const e=i.templateName;if(!f||!W||!e){x("");return}let o=!1;return e().then(u=>!o&&x(u??"")).catch(()=>{}),()=>{o=!0}},[f,l,W,i]);const[we,_]=r(C),[Ce,E]=r(G),[Te,B]=r({selected:0,themes:[]}),[_e,N]=r($t),[Ee,O]=r(Lt),[ye,b]=r(null),[Pe,z]=r(zt),[ve,K]=r(null),[He,L]=r(null),[Ie,Y]=r(he),[Me,U]=r(null),[Re,j]=r(null),[Ge,V]=r(null),[y,X]=r(null),h=mt(),Z=M(()=>dt(ht(h),lt(h)),[h]),Fe=M(()=>pt(St(Z,T),y),[Z,T,y]),[We,q]=r(Kt),[ke,J]=r(null),[Ae,Q]=r(null),[De,$]=r(null),ee=S(null),n=S(!1);p(()=>{_(ar()),E(ir())},[]);const xe=a(e=>{n.current=!0,sr(),pe(e),_(e)},[]),Be=a(e=>{n.current=!0,Se(e),E(e)},[]),Ne=a(e=>{n.current=!0,B(e)},[]),Oe=a(e=>{n.current=!0,N(e)},[]),be=a(e=>{n.current=!0,O(e)},[]),ze=a(e=>{n.current=!0,b(e)},[]),Ke=a(e=>{n.current=!0,z(e)},[]),Le=a(e=>{n.current=!0,K(e)},[]),Ye=a(e=>{n.current=!0,L(e)},[]),Ue=a(e=>{n.current=!0,Y(e)},[]),je=a(e=>{n.current=!0,U(e)},[]),Ve=a(e=>{n.current=!0,q(e)},[]),[Xe,te]=r(null),[Ze,qe]=r(null),Je=a(e=>{n.current=!0,te(e)},[]),Qe=a(e=>{n.current=!0,j(e)},[]),$e=a(e=>{n.current=!0,V(e)},[]),et=a(e=>{n.current=!0,X(e)},[]),tt=a(e=>{n.current=!0,J(e)},[]),rt=a(e=>{n.current=!0,Q(e)},[]),ot=a(e=>{n.current=!0,$(e)},[]);p(()=>{const e=R(h).theme;if(!l||!d.hasSiteTheme||!e)return;const o=s??"";ee.current!==o&&(ee.current=o,n.current=!1);let u=!1;return e.get(s?{siteId:s}:void 0).then(t=>{if(u||n.current)return;pe(t.default_mode),Se(t.show_theme_switch),_(t.default_mode),E(t.show_theme_switch),B({selected:t.selected_preset,themes:t.theme_presets});const m=rr(t);N(m.fonts),O(m.sizes),b(t.corner_radius_px===void 0?bt[Ut(t.corner_style)]:Yt(t.corner_radius_px)),z(m.compression),K(t.card_shadow==null?qt:jt(t.card_shadow)),Y(t.card_gap==null?he:Vt(t.card_gap)),U(t.hover_effect==null?Jt:Xt(t.hover_effect)),L(Zt(t.shadow_color)),j(wt(t.site_width)),V(gt(t.site_gutter)),X(Ct(t.block_gap)),q(m.typography),te(m.textStyles),qe(or(t)),J(t.hero_background_follows_width===!0),Q(t.photography_grayscale===!0),$(t.share_button_on_posts===!0)}).catch(()=>{}),()=>{u=!0}},[l,s,d.hasSiteTheme,h]);const nt=Mt({token:l,siteId:s,enabled:d.hasSiteSettings}),[at,re]=r(Ht),oe=S(null),P=S(!1),v=S(null),g=S({}),it=a(e=>{P.current=!0,re(o=>({...o,...e})),!(!d.hasSiteSettings||!l)&&(g.current={...g.current,...e},v.current&&clearTimeout(v.current),v.current=setTimeout(()=>{const o=g.current;g.current={},R(h).chat?.update(o,s?{siteId:s}:void 0).catch(()=>{})},500))},[d.hasSiteSettings,l,s,h]);p(()=>{if(!l||!d.hasSiteSettings)return;const e=s??"";oe.current!==e&&(oe.current=e,P.current=!1);let o=!1;const u=R(h).chat;if(u)return u.get(s?{siteId:s}:void 0).then(t=>{o||P.current||re(nr(t))}).catch(()=>{}),()=>{o=!0}},[l,s,d.hasSiteSettings,h]);const[w,H]=r(""),ne=S(null),I=S(!1);p(()=>H(Bt()),[]);const ae=a(e=>{const o=e.trim();if(o===w)return;I.current=!0,ue(o),H(o);const u=i.updateSite;!d.canEditSiteRecord||!f||!u||u({mapsApiKey:o}).catch(()=>{})},[w,d.canEditSiteRecord,f,i]),[ie,se]=r("");p(()=>se(Nt()),[]),p(()=>{const e=i.site;if(!f||!d.hasSiteRecord||!e){D(null);return}const o=s??"";ne.current!==o&&(ne.current=o,I.current=!1);let u=!1;return e().then(t=>{if(u||(D(ft(t.name)),I.current))return;const m=t.mapsApiKey??"";ue(m),H(m);const ce=t.mapsMapId??"";Ot(ce),se(ce)}).catch(()=>{}),()=>{u=!0}},[f,l,d.hasSiteRecord,s,i]);const st=M(()=>({apiKey:w,setApiKey:ae,mapId:ie}),[w,ae,ie]);return c(_t,{config:Fe,parts:er,wrap:(e,o)=>c(yt,{websiteName:fe,templateChrome:T,templateName:ge||null,themeMode:we,onThemeModeChange:xe,themeSwitchShown:Ce,onThemeSwitchShownChange:Be,theme:Te,onThemeChange:Ne,fonts:_e,onFontsChange:Oe,cornerRadiusPx:ye,onCornerRadiusPxChange:ze,cardShadow:ve,onCardShadowChange:Le,shadowColor:He,onShadowColorChange:Ye,cardGap:Ie,onCardGapChange:Ue,hoverEffect:Me,onHoverEffectChange:je,headingCompression:Pe,onHeadingCompressionChange:Ke,headingTypography:We,onHeadingTypographyChange:Ve,textStyles:Xe,onTextStylesChange:Je,wordStyles:Ze,sizes:Ee,onSizesChange:be,siteWidth:Re,onSiteWidthChange:Qe,siteGutter:Ge,onSiteGutterChange:$e,blockGap:y,onBlockGapChange:et,heroBackgroundFollowsWidth:ke,onHeroBackgroundFollowsWidthChange:tt,photographyGrayscale:Ae,onPhotographyGrayscaleChange:rt,shareButtonOnPosts:De,onShareButtonOnPostsChange:ot,themeFromDocument:!d.hasSiteTheme,children:c(Pt,{children:c(ut,{wrap:h.chrome?.wrap,surface:"page",children:c(Ft,{children:c(Wt,{children:c(kt,{children:c(At,{children:c(Dt,{children:ct(xt,{value:st,children:[c(vt,{chat:at,onChatChange:it,children:c(It,{value:nt,children:c(Rt,{children:e})})}),o]})})})})})})})})})})}function dr({target:i}){return c(Tt,{target:i,addressing:Gt,onHostMessage:tr,children:c(cr,{})})}export{dr as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as r,Fragment as A,jsxs as k}from"react/jsx-runtime";import{useCallback as _,useEffect as b,useRef as X,useState as J}from"react";import{Button as Q,Tooltip as $}from"efficient-shell/ui";import{SettingsSwitch as ee}from"efficient-easel/panel";import{PagesIcon as te,StylesIcon as oe}from"efficient-easel/rail";import{TemplateIcon as re}from"efficient-easel/icons";import{Subtree as ne,TreeRow as y}from"efficient-easel/tree";import{useEasel as ie}from"efficient-easel/easel";import{useEaselStrings as B}from"efficient-easel/strings";import{LocationsTreeContext as se}from"./LocationsTreeContext.js";import ae from"./PagesPanel.js";import{usePreviewChat as ce}from"./PreviewChatContext.js";import{PREVIEW_DEVICES as le}from"./preview-devices.js";import{PreviewDeviceContext as de}from"./PreviewDeviceContext.js";import{usePreviewHeader as pe}from"./PreviewHeaderContext.js";import{usePreviewSocial as me}from"./PreviewSocialContext.js";import{usePreviewSurface as fe}from"./PreviewSurfaceContext.js";import{TICKER_PART_LABEL as ue,usePreviewTicker as Se}from"./PreviewTickerContext.js";import{usePreviewHeroPart as we}from"./PreviewHeroPartContext.js";import{HERO_MEDIA_PARTS as Ee,HERO_PART_MODE as H,heroMediaRows as he,heroPartId as N,readHeroPartId as Pe}from"../lib/puck/hero-media-parts.js";import Te,{CHAT_MODE as be,HEADER_MODE as D,SOCIAL_MODE as ge,WEBSITE_MODE as W}from"./SectionEditor.js";import L from"./SectionIcon.js";import Ie from"./SectionThumbnail.js";import{useStorefrontDocument as R}from"./StorefrontDocumentContext.js";import ve from"./StylesPanel.js";import{LOCATIONS_TYPE as ke,useLocationsTree as _e}from"./useLocationsTree.js";import{usePinnedChromeSeed as Ce}from"./usePinnedChromeSeed.js";import{usePreviewHref as Le}from"./usePreviewHref.js";import{WebsitePreviewButton as Re}from"./WebsitePreviewButton.js";import{SITE_STYLES_TABS as Oe,SITE_STYLES_TEXT_TAB as Ae,useWebsiteName as ye}from"./WebsiteSettingsPanel.js";import{useWebsiteMainAction as Be}from"./useWebsiteMainAction.js";import{useEditorSession as He}from"../lib/editor-session-context.js";import{useOpenPageName as Ne}from"../lib/page-rows.js";import{HERO_GROUP_TYPE as De,heroGroupNestDepth as We}from"../lib/hero-group-placement.js";import{stripMarkup as xe}from"../lib/markup.js";import{categoryShortLabel as Me,PINNED_SECTION_TYPE as Ve}from"../lib/puck/add-palette.js";import{canAddTo as Ye}from"../lib/puck/add-target.js";import{blockIsOffered as Ge}from"../lib/puck/block-offer.js";import{sectionIdOfBoxZone as Fe,setBookingPreview as ze}from"../lib/puck/booking-preview.js";import{footerBlockRowName as je}from"../lib/puck/footer-block-row-name.js";import{FOOTER_TYPE as Ke,HEADER_TYPE as x}from"../lib/puck/footer-blocks.js";import{leftViewForSelection as Ue,readLeftView as Ze,resolveLeftView as qe,writeLeftView as Xe}from"../lib/puck/left-view.js";import{websiteIsLockedBlock as Je}from"../lib/puck/locked-blocks.js";import{everyPageBadge as Qe,everyPageNotice as $e,pinnedGroupTab as et,websiteDuplicateBlocked as tt}from"../lib/puck/every-page.js";import{pinnedChromeInPlace as C}from"../lib/pinned-chrome-lock.js";import{scrollPreviewToSection as ot,scrollPreviewToTop as M}from"../lib/puck/preview-dom.js";import{SiteCanvas as rt}from"../lib/puck/overrides.js";import{labelAtLevel as nt}from"../lib/puck/section-catalog.js";import{editorWords as it,say as c}from"../lib/editor-words.js";import{SECTION_DESCRIPTIONS as st}from"../lib/puck/section-descriptions.js";import{groupAccepts as at,isSectionGroupType as ct,sectionGroupZone as lt,SITE_FOOTER_TYPE as dt,SITE_HEADER_TYPE as pt}from"../lib/puck/section-groups.js";import{resolveSaveAsTemplateAction as mt,SAVE_AS_TEMPLATE_EVENT as ft}from"../lib/save-as-template-action.js";import{newSectionNode as ut}from"../lib/sections/new-section-node.js";import{useHostProducts as St}from"../lib/use-host-products.js";import{backendOf as wt}from"../lib/website-session.js";function V({mode:e,open:t}){const{setSelectedHeroId:o,setSelectHandler:n}=Se(),l=B().tree,d=e,p=d.kind==="ticker"?d.heroId:null,a=_(i=>{if(!i)return;t({kind:"ticker",heroId:i}),ot(i)},[t]);return b(()=>{o(p)},[p,o]),b(()=>{n(a)},[n,a]),{partRows:(i,{rowClick:u})=>{const m=String(i.props.id);return i.type==="Hero"&&r(y,{icon:r(L,{type:"ticker",size:13}),name:c(ue),onSelect:()=>a(m),selected:p===m,rowProps:{onClick:u(()=>a(m))},words:l})}}}function Y({mode:e,select:t}){const{setSelectedHeroPart:o,setSelectHandler:n}=we(),l=B().tree,{appState:d}=ie(f=>f),p=d.data.content??[],a=X(p);a.current=p;const i=e,u=Ee.find(f=>H[f]===i.kind),m=u&&"nodeId"in i?N(String(i.nodeId),u):null,E=_(f=>{const s=Pe(f);if(!s)return;const h=a.current.findIndex(S=>String(S.props.id)===s.nodeId);if(h<0)return;const T={kind:H[s.part],nodeId:s.nodeId};t({index:h},T)},[t]);return b(()=>{o(m)},[m,o]),b(()=>{n(E)},[n,E]),{partRows:(f,{rowClick:s})=>{const h=String(f.props.id),T=he(f);if(T.length===0)return null;const S=I=>{const g=N(h,I.part);return r(y,{icon:r(L,{type:I.part==="media"?"heroMedia":"heroImage",size:13}),name:c(I.label),onSelect:()=>E(g),selected:m===g,rowProps:{onClick:s(()=>E(g))},words:l},g)},[w,...P]=T;return k(A,{children:[S(w),P.length>0&&r(ne,{children:P.map(S)})]})}}}function G(e,t){return{partRows:(o,n)=>k(A,{children:[e.partRows?.(o,n),t.partRows?.(o,n)]})}}function Et(e){const{adapter:t,capabilities:o,currentSlug:n,siteId:l,docId:d,hasUnsavedEdits:p,bridgeCapabilities:a,notifyParent:i,token:u}=R(),{hasPreviewLink:m}=o,E=wt(He()).preview?.draftLink,f=Be(e.data),s=mt({hasTrustedConsole:!!u,canCreatePlatformTemplate:a.canCreatePlatformTemplate,capabilities:o,siteId:l,hasUnsavedEdits:p}),h=_(()=>{!l||!n||i(ft,{siteId:l,slug:n})},[i,l,n]),T=Le({pageSlug:n,siteId:l,token:u}),S=t.previewHref?.(n)??T;return{barLead:()=>s.visible&&r($,{side:"bottom",content:s.enabled?c("Save this website as a platform template"):c(s.disabledReason),children:r("span",{className:"sf-tip-disabled",tabIndex:s.enabled?void 0:0,children:r(Q,{variant:"secondary",disabled:!s.enabled,onClick:h,rightIcon:r(re,{size:15}),children:c("Save as Template")})})}),barTrail:()=>m&&n&&r(Re,{liveHref:S,pageId:d??null,draftLink:E}),mainAction:f}}function ht(){return k("svg",{width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.7,strokeLinecap:"round",strokeLinejoin:"round",children:[r("path",{d:"M12 3a9 9 0 0 0 0 18 2.3 2.3 0 0 0 2.3-2.3c0-.55-.22-1.05-.57-1.42-.34-.37-.56-.87-.56-1.43A2.35 2.35 0 0 1 15.6 13.5H18a3 3 0 0 0 3-3c0-4.14-4-7.5-9-7.5z"}),r("circle",{cx:"7.7",cy:"11.3",r:"1.05",fill:"currentColor",stroke:"none"}),r("circle",{cx:"12",cy:"8",r:"1.05",fill:"currentColor",stroke:"none"}),r("circle",{cx:"16",cy:"11",r:"1.05",fill:"currentColor",stroke:"none"})]})}function Pt(e,t){const{capabilities:o,templateId:n,siteId:l,tokenRef:d,navigate:p}=R(),{hasSiteTheme:a,explainsSiteSettings:i}=o,u=w=>t.setView(w),[m,E]=J(Oe[0].id),{surface:f,setSurface:s}=fe(),h=()=>{if(a){u("styles"),t.reveal(),M();return}e.show(W),e.reveal(),M()},T={id:"pages",label:c("Pages"),icon:r(te,{}),panel:({onHide:w})=>r(ae,{activeSurface:f,onPreviewSurface:s,onNavigate:P=>{s(null),p(n?{kind:"template",id:n,pageSlug:P}:{kind:"page",slug:P,siteId:l??void 0})},onClose:w})},S=[];return!a&&i&&S.push({id:"appearance",label:c("Appearance"),icon:r(ht,{}),active:e.kind==="website",onSelect:h}),a&&S.push({id:"styles",label:c("Site styles"),icon:r(oe,{}),panel:({onHide:w,notify:P})=>r(ve,{tokenRef:d,siteId:l??void 0,onClose:w,onNotify:P,tab:m,onTabChange:E})}),{railLead:[T],railTrail:S,resolveLeftView:(w,P)=>qe(w,a,P),openSettings:h,openStyles:()=>{E(Ae),u("styles")}}}function Tt(e,t,o,n){const{kind:l,open:d}=e,{selected:p,zoneOf:a}=t;b(()=>{ze(p?.type==="BookingBox"&&p.props.region==="confirm"?Fe(a(String(p.props.id))):null)},[p?.props.id]);const i=_e(e,t),{capabilities:{hasSiteSettings:u}}=R(),{setSelected:m,setSelectHandler:E}=pe(),{chat:f,setChat:s,setSelected:h,setSelectHandler:T}=ce(),S=l==="header";b(()=>{m(S)},[S,m]),b(()=>{E(()=>d(D))},[E,d]);const w=_(()=>d(be),[d]),P=l==="chat";b(()=>{h(P)},[P,h]),b(()=>{T(w)},[T,w]);const{setOpenHandler:I}=me(),g=_(()=>d(ge),[d]);b(()=>{I(g)},[I,g]);const j=G(V(e),Y(e)),K=Et(t),U=Pt(e,n),Z=o.device;return{...j,...K,...U,hasOwnRows:v=>v.type===ke,ownRows:i.renderLocationTree,sectionPressed:i.sectionPressed,wrap:v=>r(se.Provider,{value:!0,children:r(de.Provider,{value:Z,children:v})}),addPanelRow:v=>u?k("div",{className:"sf-addside-sitewide",children:[r("span",{className:"sf-addside-sitewide-glyph","aria-hidden":"true",children:r(L,{type:"chat",size:16})}),k("button",{type:"button",className:"sf-addside-sitewide-name",onClick:()=>{v(),w()},children:[c("Live chat"),r("span",{className:"sf-addside-sitewide-desc",children:c("A chat bubble on every page")})]}),r(ee,{checked:f.enabled,onChange:q=>s({enabled:q}),ariaLabel:c("Show the chat bubble on the whole site")})]}):void 0}}let F=null,O=new WeakMap;function bt(e){const t=it();if(!e||!t)return e;F!==t&&(F=t,O=new WeakMap);let o=O.get(e);return o||(o={...e,choices:e.choices?e.choices.map(n=>({...n,label:c(n.label)})):null,spec:e.spec?{...e.spec,addLabel:c(e.spec.addLabel)}:null},O.set(e,o)),o}const gt={isLockedBlock:Je,duplicateBlocked:tt,nestDepth:(e,t,o)=>t===De?We(e,o):0,newSectionNode:ut,canAddTo:(e,t)=>bt(Ye(e,t)),blockIsOffered:Ge},It=new Proxy(st,{get:(e,t)=>{const o=Reflect.get(e,t);return typeof o=="string"?c(o):o}}),vt={labelAtLevel:(e,t,o)=>c(nt(e,t,o)),descriptions:It,categoryLabel:e=>{const t=Me(e);return t===void 0?void 0:c(t)},firstSection:Ve,blockRowName:je,plainText:xe,Icon:L,Thumbnail:Ie,useProducts:St},kt={desktop:2e3,tablet:800,mobile:390},z="desktop",_t={options:le,initial:z,fluid:z,widths:kt},Ct={read:Ze,write:e=>Xe(e),forSelection:(e,t)=>Ue(e,t)},Lt={first:x,last:Ke,firstGroup:pt,lastGroup:dt,isSectionGroup:ct,sectionGroupZone:lt,panelOf:e=>e===x?D:null,get groupTab(){return C()?et:void 0},get groupBadge(){return C()?Qe():void 0},get changeNotice(){return C()?$e():void 0},get band(){return C()?Rt:void 0},get groupAccepts(){return C()?at:void 0}},Rt={foldable:!0};function Ot(e){return{...G(V(e),Y(e)),openSettings:()=>e.show(W)}}const Bo={useOwnerName:ye,useDocumentLabel:Ne,useBridges:Tt,useStandaloneBridges:Ot,useDocumentPass:Ce,blockRules:gt,blockLook:vt,devices:_t,leftView:Ct,pinned:Lt,Canvas:rt,Inspector:Te};export{Bo as WEBSITE_SCREEN};
|
|
1
|
+
"use client";import{jsx as r,Fragment as A,jsxs as k}from"react/jsx-runtime";import{useCallback as _,useEffect as b,useRef as X,useState as J}from"react";import{Button as Q,Tooltip as $}from"efficient-shell/ui";import{SettingsSwitch as ee}from"efficient-easel/panel";import{PagesIcon as te,StylesIcon as oe}from"efficient-easel/rail";import{TemplateIcon as re}from"efficient-easel/icons";import{Subtree as ne,TreeRow as y}from"efficient-easel/tree";import{useEasel as ie}from"efficient-easel/easel";import{useEaselStrings as B}from"efficient-easel/strings";import{LocationsTreeContext as se}from"./LocationsTreeContext.js";import ae from"./PagesPanel.js";import{usePreviewChat as ce}from"./PreviewChatContext.js";import{PREVIEW_DEVICES as le}from"./preview-devices.js";import{PreviewDeviceContext as de}from"efficient-easel/draw/client";import{usePreviewHeader as pe}from"./PreviewHeaderContext.js";import{usePreviewSocial as me}from"./PreviewSocialContext.js";import{usePreviewSurface as fe}from"./PreviewSurfaceContext.js";import{TICKER_PART_LABEL as ue,usePreviewTicker as Se}from"./PreviewTickerContext.js";import{usePreviewHeroPart as we}from"./PreviewHeroPartContext.js";import{HERO_MEDIA_PARTS as Ee,HERO_PART_MODE as H,heroMediaRows as he,heroPartId as N,readHeroPartId as Pe}from"../lib/puck/hero-media-parts.js";import Te,{CHAT_MODE as be,HEADER_MODE as D,SOCIAL_MODE as ge,WEBSITE_MODE as W}from"./SectionEditor.js";import L from"./SectionIcon.js";import Ie from"./SectionThumbnail.js";import{useStorefrontDocument as R}from"./StorefrontDocumentContext.js";import ve from"./StylesPanel.js";import{LOCATIONS_TYPE as ke,useLocationsTree as _e}from"./useLocationsTree.js";import{usePinnedChromeSeed as Ce}from"./usePinnedChromeSeed.js";import{usePreviewHref as Le}from"./usePreviewHref.js";import{WebsitePreviewButton as Re}from"./WebsitePreviewButton.js";import{SITE_STYLES_TABS as Oe,SITE_STYLES_TEXT_TAB as Ae,useWebsiteName as ye}from"./WebsiteSettingsPanel.js";import{useWebsiteMainAction as Be}from"./useWebsiteMainAction.js";import{useEditorSession as He}from"../lib/editor-session-context.js";import{useOpenPageName as Ne}from"../lib/page-rows.js";import{HERO_GROUP_TYPE as De,heroGroupNestDepth as We}from"../lib/hero-group-placement.js";import{stripMarkup as xe}from"../lib/markup.js";import{categoryShortLabel as Me,PINNED_SECTION_TYPE as Ve}from"../lib/puck/add-palette.js";import{canAddTo as Ye}from"../lib/puck/add-target.js";import{blockIsOffered as Ge}from"../lib/puck/block-offer.js";import{sectionIdOfBoxZone as Fe,setBookingPreview as ze}from"../lib/puck/booking-preview.js";import{footerBlockRowName as je}from"../lib/puck/footer-block-row-name.js";import{FOOTER_TYPE as Ke,HEADER_TYPE as x}from"../lib/puck/footer-blocks.js";import{leftViewForSelection as Ue,readLeftView as Ze,resolveLeftView as qe,writeLeftView as Xe}from"../lib/puck/left-view.js";import{websiteIsLockedBlock as Je}from"../lib/puck/locked-blocks.js";import{everyPageBadge as Qe,everyPageNotice as $e,pinnedGroupTab as et,websiteDuplicateBlocked as tt}from"../lib/puck/every-page.js";import{pinnedChromeInPlace as C}from"../lib/pinned-chrome-lock.js";import{scrollPreviewToSection as ot,scrollPreviewToTop as M}from"../lib/puck/preview-dom.js";import{SiteCanvas as rt}from"../lib/puck/overrides.js";import{labelAtLevel as nt}from"../lib/puck/section-catalog.js";import{editorWords as it,say as c}from"../lib/editor-words.js";import{SECTION_DESCRIPTIONS as st}from"../lib/puck/section-descriptions.js";import{groupAccepts as at,isSectionGroupType as ct,sectionGroupZone as lt,SITE_FOOTER_TYPE as dt,SITE_HEADER_TYPE as pt}from"../lib/puck/section-groups.js";import{resolveSaveAsTemplateAction as mt,SAVE_AS_TEMPLATE_EVENT as ft}from"../lib/save-as-template-action.js";import{newSectionNode as ut}from"../lib/sections/new-section-node.js";import{useHostProducts as St}from"../lib/use-host-products.js";import{backendOf as wt}from"../lib/website-session.js";function V({mode:e,open:t}){const{setSelectedHeroId:o,setSelectHandler:n}=Se(),l=B().tree,d=e,p=d.kind==="ticker"?d.heroId:null,a=_(i=>{if(!i)return;t({kind:"ticker",heroId:i}),ot(i)},[t]);return b(()=>{o(p)},[p,o]),b(()=>{n(a)},[n,a]),{partRows:(i,{rowClick:u})=>{const m=String(i.props.id);return i.type==="Hero"&&r(y,{icon:r(L,{type:"ticker",size:13}),name:c(ue),onSelect:()=>a(m),selected:p===m,rowProps:{onClick:u(()=>a(m))},words:l})}}}function Y({mode:e,select:t}){const{setSelectedHeroPart:o,setSelectHandler:n}=we(),l=B().tree,{appState:d}=ie(f=>f),p=d.data.content??[],a=X(p);a.current=p;const i=e,u=Ee.find(f=>H[f]===i.kind),m=u&&"nodeId"in i?N(String(i.nodeId),u):null,E=_(f=>{const s=Pe(f);if(!s)return;const h=a.current.findIndex(S=>String(S.props.id)===s.nodeId);if(h<0)return;const T={kind:H[s.part],nodeId:s.nodeId};t({index:h},T)},[t]);return b(()=>{o(m)},[m,o]),b(()=>{n(E)},[n,E]),{partRows:(f,{rowClick:s})=>{const h=String(f.props.id),T=he(f);if(T.length===0)return null;const S=I=>{const g=N(h,I.part);return r(y,{icon:r(L,{type:I.part==="media"?"heroMedia":"heroImage",size:13}),name:c(I.label),onSelect:()=>E(g),selected:m===g,rowProps:{onClick:s(()=>E(g))},words:l},g)},[w,...P]=T;return k(A,{children:[S(w),P.length>0&&r(ne,{children:P.map(S)})]})}}}function G(e,t){return{partRows:(o,n)=>k(A,{children:[e.partRows?.(o,n),t.partRows?.(o,n)]})}}function Et(e){const{adapter:t,capabilities:o,currentSlug:n,siteId:l,docId:d,hasUnsavedEdits:p,bridgeCapabilities:a,notifyParent:i,token:u}=R(),{hasPreviewLink:m}=o,E=wt(He()).preview?.draftLink,f=Be(e.data),s=mt({hasTrustedConsole:!!u,canCreatePlatformTemplate:a.canCreatePlatformTemplate,capabilities:o,siteId:l,hasUnsavedEdits:p}),h=_(()=>{!l||!n||i(ft,{siteId:l,slug:n})},[i,l,n]),T=Le({pageSlug:n,siteId:l,token:u}),S=t.previewHref?.(n)??T;return{barLead:()=>s.visible&&r($,{side:"bottom",content:s.enabled?c("Save this website as a platform template"):c(s.disabledReason),children:r("span",{className:"sf-tip-disabled",tabIndex:s.enabled?void 0:0,children:r(Q,{variant:"secondary",disabled:!s.enabled,onClick:h,rightIcon:r(re,{size:15}),children:c("Save as Template")})})}),barTrail:()=>m&&n&&r(Re,{liveHref:S,pageId:d??null,draftLink:E}),mainAction:f}}function ht(){return k("svg",{width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.7,strokeLinecap:"round",strokeLinejoin:"round",children:[r("path",{d:"M12 3a9 9 0 0 0 0 18 2.3 2.3 0 0 0 2.3-2.3c0-.55-.22-1.05-.57-1.42-.34-.37-.56-.87-.56-1.43A2.35 2.35 0 0 1 15.6 13.5H18a3 3 0 0 0 3-3c0-4.14-4-7.5-9-7.5z"}),r("circle",{cx:"7.7",cy:"11.3",r:"1.05",fill:"currentColor",stroke:"none"}),r("circle",{cx:"12",cy:"8",r:"1.05",fill:"currentColor",stroke:"none"}),r("circle",{cx:"16",cy:"11",r:"1.05",fill:"currentColor",stroke:"none"})]})}function Pt(e,t){const{capabilities:o,templateId:n,siteId:l,tokenRef:d,navigate:p}=R(),{hasSiteTheme:a,explainsSiteSettings:i}=o,u=w=>t.setView(w),[m,E]=J(Oe[0].id),{surface:f,setSurface:s}=fe(),h=()=>{if(a){u("styles"),t.reveal(),M();return}e.show(W),e.reveal(),M()},T={id:"pages",label:c("Pages"),icon:r(te,{}),panel:({onHide:w})=>r(ae,{activeSurface:f,onPreviewSurface:s,onNavigate:P=>{s(null),p(n?{kind:"template",id:n,pageSlug:P}:{kind:"page",slug:P,siteId:l??void 0})},onClose:w})},S=[];return!a&&i&&S.push({id:"appearance",label:c("Appearance"),icon:r(ht,{}),active:e.kind==="website",onSelect:h}),a&&S.push({id:"styles",label:c("Site styles"),icon:r(oe,{}),panel:({onHide:w,notify:P})=>r(ve,{tokenRef:d,siteId:l??void 0,onClose:w,onNotify:P,tab:m,onTabChange:E})}),{railLead:[T],railTrail:S,resolveLeftView:(w,P)=>qe(w,a,P),openSettings:h,openStyles:()=>{E(Ae),u("styles")}}}function Tt(e,t,o,n){const{kind:l,open:d}=e,{selected:p,zoneOf:a}=t;b(()=>{ze(p?.type==="BookingBox"&&p.props.region==="confirm"?Fe(a(String(p.props.id))):null)},[p?.props.id]);const i=_e(e,t),{capabilities:{hasSiteSettings:u}}=R(),{setSelected:m,setSelectHandler:E}=pe(),{chat:f,setChat:s,setSelected:h,setSelectHandler:T}=ce(),S=l==="header";b(()=>{m(S)},[S,m]),b(()=>{E(()=>d(D))},[E,d]);const w=_(()=>d(be),[d]),P=l==="chat";b(()=>{h(P)},[P,h]),b(()=>{T(w)},[T,w]);const{setOpenHandler:I}=me(),g=_(()=>d(ge),[d]);b(()=>{I(g)},[I,g]);const j=G(V(e),Y(e)),K=Et(t),U=Pt(e,n),Z=o.device;return{...j,...K,...U,hasOwnRows:v=>v.type===ke,ownRows:i.renderLocationTree,sectionPressed:i.sectionPressed,wrap:v=>r(se.Provider,{value:!0,children:r(de.Provider,{value:Z,children:v})}),addPanelRow:v=>u?k("div",{className:"sf-addside-sitewide",children:[r("span",{className:"sf-addside-sitewide-glyph","aria-hidden":"true",children:r(L,{type:"chat",size:16})}),k("button",{type:"button",className:"sf-addside-sitewide-name",onClick:()=>{v(),w()},children:[c("Live chat"),r("span",{className:"sf-addside-sitewide-desc",children:c("A chat bubble on every page")})]}),r(ee,{checked:f.enabled,onChange:q=>s({enabled:q}),ariaLabel:c("Show the chat bubble on the whole site")})]}):void 0}}let F=null,O=new WeakMap;function bt(e){const t=it();if(!e||!t)return e;F!==t&&(F=t,O=new WeakMap);let o=O.get(e);return o||(o={...e,choices:e.choices?e.choices.map(n=>({...n,label:c(n.label)})):null,spec:e.spec?{...e.spec,addLabel:c(e.spec.addLabel)}:null},O.set(e,o)),o}const gt={isLockedBlock:Je,duplicateBlocked:tt,nestDepth:(e,t,o)=>t===De?We(e,o):0,newSectionNode:ut,canAddTo:(e,t)=>bt(Ye(e,t)),blockIsOffered:Ge},It=new Proxy(st,{get:(e,t)=>{const o=Reflect.get(e,t);return typeof o=="string"?c(o):o}}),vt={labelAtLevel:(e,t,o)=>c(nt(e,t,o)),descriptions:It,categoryLabel:e=>{const t=Me(e);return t===void 0?void 0:c(t)},firstSection:Ve,blockRowName:je,plainText:xe,Icon:L,Thumbnail:Ie,useProducts:St},kt={desktop:2e3,tablet:800,mobile:390},z="desktop",_t={options:le,initial:z,fluid:z,widths:kt},Ct={read:Ze,write:e=>Xe(e),forSelection:(e,t)=>Ue(e,t)},Lt={first:x,last:Ke,firstGroup:pt,lastGroup:dt,isSectionGroup:ct,sectionGroupZone:lt,panelOf:e=>e===x?D:null,get groupTab(){return C()?et:void 0},get groupBadge(){return C()?Qe():void 0},get changeNotice(){return C()?$e():void 0},get band(){return C()?Rt:void 0},get groupAccepts(){return C()?at:void 0}},Rt={foldable:!0};function Ot(e){return{...G(V(e),Y(e)),openSettings:()=>e.show(W)}}const Bo={useOwnerName:ye,useDocumentLabel:Ne,useBridges:Tt,useStandaloneBridges:Ot,useDocumentPass:Ce,blockRules:gt,blockLook:vt,devices:_t,leftView:Ct,pinned:Lt,Canvas:rt,Inspector:Te};export{Bo as WEBSITE_SCREEN};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { DeviceOption } from "efficient-easel/chrome";
|
|
2
|
-
import type { PreviewDevice } from "
|
|
2
|
+
import type { PreviewDevice } from "efficient-easel/draw/client";
|
|
3
3
|
export declare const PREVIEW_DEVICES: ReadonlyArray<DeviceOption<PreviewDevice>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as t}from"react/jsx-runtime";import{DesktopIcon as E,PhoneIcon as I,TabletIcon as e}from"efficient-easel/icons";import{say as m}from"../lib/editor-words.js";import{VIEW_TIERS as n,VIEW_TIER_LABEL as r}from"
|
|
1
|
+
"use client";import{jsx as t}from"react/jsx-runtime";import{DesktopIcon as E,PhoneIcon as I,TabletIcon as e}from"efficient-easel/icons";import{say as m}from"../lib/editor-words.js";import{VIEW_TIERS as n,VIEW_TIER_LABEL as r}from"efficient-easel/draw";const s={desktop:t(E,{}),tablet:t(e,{}),mobile:t(I,{})},l=n.map(o=>({id:o,get label(){return m(r[o])},icon:s[o]}));export{l as PREVIEW_DEVICES};
|
|
@@ -1508,51 +1508,14 @@
|
|
|
1508
1508
|
}
|
|
1509
1509
|
/* `.sf-pgroup*` and `.sf-prow` WERE HERE: the Pages headings are the shell's
|
|
1510
1510
|
`TreeGroupLabel` (its count pill and fold), its rows the shell's `TreeRow`. */
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
font-weight: 600;
|
|
1515
|
-
color: var(--sf-muted);
|
|
1516
|
-
text-transform: uppercase;
|
|
1517
|
-
letter-spacing: 0.3px;
|
|
1518
|
-
}
|
|
1519
|
-
/* Page-TYPE pills — mirror the admin Console's Pages list so a per-product PDP
|
|
1520
|
-
template (dynamic, blue) or an editable popup (lightbox, green) is as obvious
|
|
1521
|
-
in the editor's page list as it is in the Console. */
|
|
1522
|
-
.sf-badge-dynamic,
|
|
1523
|
-
.sf-badge-lightbox {
|
|
1524
|
-
flex: none;
|
|
1525
|
-
font-size: var(--text-3xs);
|
|
1526
|
-
font-weight: 700;
|
|
1527
|
-
letter-spacing: 0.3px;
|
|
1528
|
-
text-transform: uppercase;
|
|
1529
|
-
padding: var(--space-2) var(--space-8);
|
|
1530
|
-
border-radius: 999px;
|
|
1531
|
-
}
|
|
1532
|
-
.sf-badge-dynamic {
|
|
1533
|
-
color: var(--sf-accent-text);
|
|
1534
|
-
background: var(--sf-accent-tint);
|
|
1535
|
-
}
|
|
1536
|
-
.sf-badge-lightbox {
|
|
1537
|
-
/* The shell's success wash — the green the Console's Lightbox pill wears. */
|
|
1538
|
-
color: var(--status-success-soft-ink);
|
|
1539
|
-
background: var(--status-success-soft);
|
|
1540
|
-
}
|
|
1511
|
+
/* `.sf-page-draft`, `.sf-badge-dynamic` and `.sf-badge-lightbox` WERE HERE: a
|
|
1512
|
+
page's types are tags on the shell tree row's own pill (`badge`, efficient-
|
|
1513
|
+
shell `TreeBadge`), in its status tones (Lewis 2026-10-14: one pill). */
|
|
1541
1514
|
/* `.sf-page-edit` WAS HERE: a row's edit, delete and open-in-a-new-tab are
|
|
1542
1515
|
efficient-easel's `TreeRowAction` (the shell's `IconButton` and `Tooltip`),
|
|
1543
1516
|
laid over the end of the row on hover as on every Layers row. */
|
|
1544
|
-
/*
|
|
1545
|
-
.
|
|
1546
|
-
flex: none;
|
|
1547
|
-
font-size: var(--text-3xs);
|
|
1548
|
-
font-weight: 700;
|
|
1549
|
-
letter-spacing: 0.3px;
|
|
1550
|
-
text-transform: uppercase;
|
|
1551
|
-
padding: var(--space-2) var(--space-8);
|
|
1552
|
-
border-radius: 999px;
|
|
1553
|
-
color: var(--sf-warning);
|
|
1554
|
-
background: var(--sf-preview-tint);
|
|
1555
|
-
}
|
|
1517
|
+
/* `.sf-badge-preview` WAS HERE: the shop rows' Preview is a warning-toned tag
|
|
1518
|
+
on the same shell pill. */
|
|
1556
1519
|
|
|
1557
1520
|
/* `.sf-row-del` WAS HERE, for "the standalone section editor's own rows",
|
|
1558
1521
|
which have been efficient-easel's `TreeRow` with `TreeRowAction` since
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{useEffect as G,useRef as L}from"react";import{createNode as x,newId as z}from"efficient-easel/data";import{useEaselApi as U}from"efficient-easel/easel";import{useStorefrontDocument as Z}from"./StorefrontDocumentContext.js";import{SITE_FOOTER_SLUG as H}from"../lib/content/footer.js";import{boxFooterFromFooter as B}from"../lib/puck/box-footer.js";import{ROOT_ZONE as l,missingPinnedTypes as j,pinnedDuplicateIds as P}from"
|
|
1
|
+
"use client";import{useEffect as G,useRef as L}from"react";import{createNode as x,newId as z}from"efficient-easel/data";import{useEaselApi as U}from"efficient-easel/easel";import{useStorefrontDocument as Z}from"./StorefrontDocumentContext.js";import{SITE_FOOTER_SLUG as H}from"../lib/content/footer.js";import{boxFooterFromFooter as B}from"../lib/puck/box-footer.js";import{ROOT_ZONE as l,missingPinnedTypes as j,pinnedDuplicateIds as P}from"efficient-easel/draw";import{FOOTER_TYPE as c,HEADER_TYPE as p,buildDefaultFooterBlocks as D,buildDefaultHeaderNode as E}from"../lib/puck/footer-blocks.js";import{canSeedPinnedChrome as q}from"../lib/puck/pinned-seed-gate.js";import{siteFooterDocChrome as J,SITE_FOOTER_TYPE as f}from"../lib/puck/section-groups.js";import{inPlaceSeedPlan as K}from"../lib/puck/pinned-in-place-seed.js";function se(t,F){const{adapter:k,capabilities:T,currentSlug:O,docId:u,data:y,saveStatus:I}=Z(),{hasSiteSettings:N,hasPinnedChrome:b}=T,C=!!T.editsPinnedInPlace&&O!==H,R=O===H,_=U().getState,v=L(null);G(()=>{if(!q({docId:u,saveStatus:I,seededDocId:v.current})||(v.current=u,!b))return;const m=_().appState.data,o=m.content,a=y?.content??[],d=(e,n)=>e.some(r=>r?.type===n);if(!N){const e=new Set(P(o)),n=e.size?o.filter(s=>!e.has(s.props.id)):o;e.size&&t.setDocument({...m,content:n});const r=j(n,a);if(r.includes(c)){const s=n.length,i=t.insertSection(c,s);t.replaceComponent(l,s,{type:c,props:{id:i,blocks:D()}})}r.includes(p)&&t.insertNode(l,0,E());return}if(R){const e=J(o);if(e!==o&&t.setDocument({...m,content:[...e]}),!e.find(r=>r.type===c)&&!d(a,c)&&!d(e,f)&&!d(a,f)){const r=(i,g)=>x(F,i,g),s={type:c,props:{blocks:D()}};t.insertNode(l,e.length,B(s,r,z(f)))}return}if(C){const e=!!k?.pinnedChrome?.state().docId,n=K(o,{hasChromeDoc:e}),r=new Set([...n.remove,...P(o.filter(i=>!n.remove.includes(String(i.props.id))))]),s=r.size?o.filter(i=>!r.has(String(i.props.id))):o;if(s.length!==o.length&&t.setDocument({...m,content:s}),n.seedFooter&&!d(a,c)&&!d(a,f)){const i=(Y,A)=>x(F,Y,A),g={type:c,props:{blocks:D()}};t.insertNode(l,s.length,B(g,i,z(f)))}if(n.seedHeader&&!d(a,p)){const i=s[0]?.type==="SiteHeader"?1:0;t.insertNode(l,i,E())}return}const h=o.filter(e=>e.type!==c),w=new Set(P(h)),S=w.size?h.filter(e=>!w.has(e.props.id)):h;S.length!==o.length&&t.setDocument({...m,content:S}),!d(S,p)&&!d(a,p)&&t.insertNode(l,0,E())},[u,I,y,_,t,N,b,R,C,k])}export{se as usePinnedChromeSeed};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ViewTier } from "
|
|
1
|
+
import type { ViewTier } from "efficient-easel/draw";
|
|
2
2
|
export declare const SITE_FOOTER_SLUG = "site-footer";
|
|
3
3
|
export declare const FOOTER_SOURCE_SLUG = "site-footer";
|
|
4
4
|
export declare const SITE_FOOTER_KIND = "site-footer";
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { type SelectField } from "./controls.js";
|
|
2
|
+
import { type ShowWhenRule } from "./show-when.js";
|
|
2
3
|
export declare function blockSourceField(label: string, own: string): SelectField;
|
|
4
|
+
export declare const NO_BLOCK_SOURCE: ShowWhenRule;
|
|
3
5
|
export declare function blockSourceFields<Fields extends Record<string, unknown>>(block: string, fields: Fields, props: Record<string, unknown> | null | undefined, options?: {
|
|
4
6
|
hides?: readonly string[];
|
|
5
7
|
}): Fields;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as x}from"react/jsx-runtime";import{ListIcon as y}from"efficient-easel/icons";import{BLOCK_SOURCE_PROP as p,blockSources as S,blockSourcesRevision as w,declaredBlockSource as $}from"../content/block-sources.js";import{select as j}from"./controls.js";import{withShowWhen as M}from"./show-when.js";function E(s,e){return j(s,x(y,{}),[{label:e,value:""}],"")}const b=new WeakMap;let h=-1,m={};const g=new WeakMap;function _(s,e,i){h!==w()&&(h=w(),m={});let t=b.get(e);(!t||g.get(t)!==m)&&(t=new Map,g.set(t,m),b.set(e,t));const c=S(s),n=i&&!c.some(o=>o.key===i)?i:"",l=`${s}\0${n}`;let r=t.get(l);return r||(r={...e,options:[...e.options,...c.map(o=>({label:o.label,value:o.key})),...n?[{label:n,value:n}]:[]]},t.set(l,r)),r}const O=new WeakMap,C={not:{field:p,set:!0}};function F(s,e,i,t={}){const c=e[p];if(!c)return e;const n=$(i),l=S(s).length>0||n!=="",r=l?_(s,c,n):null;let o=O.get(e);o||O.set(e,o=new Map);const k=`${w()}\0${l?"1":"0"}\0${n}\0${(t.hides??[]).join(",")}`,v=o.get(k);if(v)return v;const R=new Set(t.hides??[]),a={};for(const[u,f]of Object.entries(e))u===p?r&&(a[u]=r):a[u]=R.has(u)&&f&&typeof f=="object"?M(f,C):f;return o.set(k,a),a}export{C as NO_BLOCK_SOURCE,E as blockSourceField,F as blockSourceFields};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Config } from "efficient-easel/blocks";
|
|
2
|
+
import type { BlockShowWhenFacts } from "../show-when-attach.js";
|
|
2
3
|
export type Block = Config["components"][string];
|
|
3
4
|
export type BlockSlots = Record<string, {
|
|
4
5
|
type: "slot";
|
|
@@ -8,5 +9,7 @@ export type BlockSlots = Record<string, {
|
|
|
8
9
|
export type BlockRender = Pick<Block, "label" | "defaultProps" | "render" | "inline"> & {
|
|
9
10
|
fields?: BlockSlots;
|
|
10
11
|
};
|
|
11
|
-
export type BlockFields = Pick<Block, "fields" | "resolveFields" | "resolveData"
|
|
12
|
+
export type BlockFields = Pick<Block, "fields" | "resolveFields" | "resolveData"> & {
|
|
13
|
+
showWhenFacts?: BlockShowWhenFacts;
|
|
14
|
+
};
|
|
12
15
|
export declare function assembleBlocks<Type extends string>(renders: Record<Type, BlockRender>, fields: Record<Type, BlockFields>): Record<Type, Block>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as s}from"react/jsx-runtime";import i from"../../../../../components/CategoryBar.js";import{hidableText as b}from"
|
|
1
|
+
import{jsx as s}from"react/jsx-runtime";import i from"../../../../../components/CategoryBar.js";import{hidableText as b}from"efficient-easel/draw";import{PH as e}from"../../placeholders.js";import{phRows as c}from"../../scaffold.js";import{say as m}from"../../../../editor-words.js";const f=()=>[{label:m("All")},{label:e.category},{label:e.category}],n=[{label:"Archive",href:"#sub-recent-issues"},{label:"RSS",href:"/contact"}],h={label:"Category bar",defaultProps:{tabs:[],activeTab:"All",links:n,sticky:!0},render:({tabs:t,activeTab:a,links:o,sticky:l,puck:r})=>s(i,{tabs:c(t,f(),r),activeTab:b(a),links:o,sticky:l,editing:r?.isEditing})};export{h as CategoryBarRender};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as l}from"react/jsx-runtime";import m from"../../../../../components/ContactLocations.js";import{CONTACT_LOCATIONS_CARDS_PLACEHOLDER as t,CONTACT_LOCATIONS_DEFAULTS as i}from"../../../../content/contact.js";import{hidableText as n}from"
|
|
1
|
+
import{jsx as l}from"react/jsx-runtime";import m from"../../../../../components/ContactLocations.js";import{CONTACT_LOCATIONS_CARDS_PLACEHOLDER as t,CONTACT_LOCATIONS_DEFAULTS as i}from"../../../../content/contact.js";import{hidableText as n}from"efficient-easel/draw";import{phHideDefault as a}from"../../scaffold.js";const u={label:"Contact / Locations",defaultProps:{sectionNumber:i.sectionNumber,heading:i.heading,tagline:i.tagline,galleryKicker:i.galleryKicker,galleryHint:i.galleryHint,locations:t,apiKey:i.apiKey,mapId:i.mapId,mapTheme:i.mapTheme},render:e=>l(m,{sectionNumber:a(e.sectionNumber,i.sectionNumber,e.puck),heading:a(e.heading,i.heading,e.puck),tagline:a(e.tagline,i.tagline,e.puck),galleryKicker:a(e.galleryKicker,i.galleryKicker,e.puck),galleryHint:a(e.galleryHint,i.galleryHint,e.puck),locations:e.locations??t,apiKey:n(e.apiKey),mapId:n(e.mapId),mapTheme:e.mapTheme??i.mapTheme,imageShape:e.imageShape,editing:e.puck?.isEditing,nodeId:e.puck?.isEditing?e.id:void 0})};export{u as ContactLocationsRender};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Fragment as a,jsx as e}from"react/jsx-runtime";import i from"../../../../../components/Eyebrow.js";import{hidableText as l,readHidable as n}from"
|
|
1
|
+
import{Fragment as a,jsx as e}from"react/jsx-runtime";import i from"../../../../../components/Eyebrow.js";import{hidableText as l,readHidable as n}from"efficient-easel/draw";import{parseEyebrowBlockLook as p}from"../../../../sections/section-eyebrow-look.js";import{PH as f}from"../../placeholders.js";import{phPrev as b}from"../../scaffold.js";const E={label:"Eyebrow",defaultProps:{eyebrow:"",align:"left"},render:({eyebrow:r,align:o,eyebrowLook:t,puck:m})=>n(r).hidden?e(a,{}):e(i,{text:b(l(r),f.eyebrow,m)??"",align:o,look:p(t)})};export{E as EyebrowRender};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as a}from"react/jsx-runtime";import d from"../../../../../components/FAQ.js";import{readPartStyles as l}from"../../../part-styles.js";import{hidableText as m}from"
|
|
1
|
+
import{jsx as a}from"react/jsx-runtime";import d from"../../../../../components/FAQ.js";import{readPartStyles as l}from"../../../part-styles.js";import{hidableText as m}from"efficient-easel/draw";import{parseSectionHeadPlacement as f}from"../../../../sections/section-head-placement.js";import{PH as c}from"../../placeholders.js";import{phRows as h,phHide as i}from"../../scaffold.js";import{say as t}from"../../../../editor-words.js";const r={num:c.sectionNumber,title:"Frequently *asked.*",link:"View all questions"},q=()=>[{question:t("Your first question goes here?"),answer:t("Add your answer here — a sentence or two is plenty.")},{question:t("Your second question goes here?"),answer:t("Add your answer here. Keep it clear and concise so it stays easy to scan.")},{question:t("Your third question goes here?"),answer:t("Add your answer here.")},{question:t("Your fourth question goes here?"),answer:t("Add your answer here.")},{question:t("Your fifth question goes here?"),answer:t("Add your answer here.")}],Y={label:"Q&A",defaultProps:{num:"",title:"",linkText:"",linkHref:"/faq",defaultOpen:!0,items:[]},render:e=>{const o=f(e.headPlacement)==="own-box",n=u=>o?void 0:u,s=i(e.linkText,r.link,e.puck);return a(d,{num:n(i(e.num,r.num,e.puck)),title:n(i(e.title,r.title,e.puck)),link:n(s?{text:s,href:m(e.linkHref)||"/faq"}:void 0),omitHead:o,nodeId:typeof e.id=="string"?e.id:void 0,partStyles:l(e),items:h(e.items,q(),e.puck),defaultOpen:e.defaultOpen,editing:e.puck?.isEditing})}};export{Y as FAQRender,r as FAQ_PH};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import o from"../../../../../components/BlogPostSource.js";import{BOUND_TO_POST as i,BOUND_TO_POST_NOTE as r,NOT_BOUND_TO_POST as d,group as g,linkField as m,panelNote as n,sourceField as O,text as t,textarea as a,upload as l}from"../../../controls.js";import{withRowsShownWhen as _,withShowWhen as D}from"../../../show-when.js";import{FEATUREDCOVER_PH as e}from"./render.js";const T=["image","imageDate","date","title","dek","ctaHref"],B={fields:_({source:O(o),_nBound:D(n(r),i),image:l("Cover image","image/*"),badge:t("Badge",e.badge),imageDate:t("Image date",e.imageDate),_gContent:g("Content"),category:t("Category",e.category),readLabel:t("Read time",e.readLabel),date:t("Date",e.date),title:a("Heading",e.title),dek:a("Dek",e.dek),ctaText:t("Button",e.ctaText),ctaHref:m("Link")},T,d)};export{B as FeaturedCoverFields};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as y}from"react/jsx-runtime";import H from"../../../../../components/FeaturedCover.js";import{hidableText as T}from"
|
|
1
|
+
import{jsx as y}from"react/jsx-runtime";import H from"../../../../../components/FeaturedCover.js";import{hidableText as T}from"efficient-easel/draw";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
|
|
1
|
+
import{jsx as s}from"react/jsx-runtime";import{BOX_CARD_PAD as l,BOX_DARKEN as t,BOX_DARKEN_STYLES as c,isBackgroundBox as m}from"../../../../content/box-background.js";import{containerDirectionPoints as f}from"../../../../content/container-direction.js";import{OpacityIcon as u,StylesIcon as b}from"efficient-easel/icons";import{boxAlignField as k,boxBlockSpacingField as x,boxJustifyField as F,boxPhoneRowField as y,boxShareField as S,boxWrapField as _,gapField as B,group as r,placementField as O,plainText as D,select as R,sidesPaddingFields as p,slider as h,upload as w,withPanelOnly as A}from"../../../controls.js";import{withRowRules as j}from"../../../show-when.js";import{FlexSlots as I}from"./render.js";const P={field:"bgImage",set:!0},v={fields:j({_gContent:r("Content"),content:I.content,_gLayout:r("Layout"),direction:{type:"radio",options:f("Flex")},label:A(D("Tab name")),gap:B("Flex"),justify:F(),align:k(),wrap:_(),share:S(),phoneRow:y(),blockSpacing:x(),_gBackground:r("Background image"),bgImage:w("Image","image/*"),darken:h("Darken",s(u,{}),t.min,t.max,t.step,t.fallback,t.unit),darkenStyle:R("Darken style",s(b,{}),c,c[0].value),placement:O("Content position",{stacking:!1})},[[["darken","darkenStyle","placement"],P]]),resolveFields:(n,{fields:e})=>{const o=n.props;if(m(o.bgImage)){const a=p({fallback:{top:l.desktop,bottom:l.desktop,left:l.side,right:l.side}});return d(e,a)}return n.props.padV2!==!0?d(e,p({fallback:{top:24,bottom:24}})):e}};function d(n,e){const o={};let i=!1;for(const[a,g]of Object.entries(n)){if(a in e){i||Object.assign(o,e),i=!0;continue}o[a]=g}return i||Object.assign(o,e),o}export{v as FlexFields};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as s}from"react/jsx-runtime";import h from"../../../../../components/Footprint.js";import{FOOTPRINT_DEFAULTS as a}from"../../../../content/footprint.js";import{parseDealerListPosition as f,parseFootprintSource as u}from"../../../../dealer-source.js";import{hidableText as i}from"
|
|
1
|
+
import{jsx as s}from"react/jsx-runtime";import h from"../../../../../components/Footprint.js";import{FOOTPRINT_DEFAULTS as a}from"../../../../content/footprint.js";import{parseDealerListPosition as f,parseFootprintSource as u}from"../../../../dealer-source.js";import{hidableText as i}from"efficient-easel/draw";import{parseSectionHeadPlacement as l}from"../../../../sections/section-head-placement.js";import{PH as o}from"../../placeholders.js";import{phRows as T,phHide as m}from"../../scaffold.js";import{say as t}from"../../../../editor-words.js";const r={sectionNumber:o.sectionNumber,heading:`${o.heading}
|
|
2
2
|
*${o.accent}*`,tagline:o.body},y=()=>[{role:t("Headquarters"),city:t("City"),country:t("Country"),address:t("Street address"),lat:0,lng:0,hq:!0},{role:t("Office"),city:t("City"),country:t("Country"),address:t("Street address"),lat:0,lng:0,hq:!1}],I={label:"Locations Map",defaultProps:{sectionNumber:"",heading:"",tagline:"",offices:[],apiKey:a.apiKey,mapId:a.mapId,mapTheme:a.mapTheme,padTop:120,padBottom:120,source:"typed",search:!1,searchHint:"",noMatchText:"",listPosition:"below",showDistance:!0},render:e=>{const n=l(e.headPlacement)==="own-box",c=d=>n?void 0:d;return s(h,{sectionNumber:c(m(e.sectionNumber,r.sectionNumber,e.puck)),heading:c(m(e.heading,r.heading,e.puck)),tagline:c(m(e.tagline,r.tagline,e.puck)),omitHead:n,offices:T(e.offices,y(),e.puck),apiKey:i(e.apiKey),mapId:i(e.mapId),mapTheme:e.mapTheme??a.mapTheme,padTop:n?0:typeof e.padTop=="number"?e.padTop:120,padBottom:typeof e.padBottom=="number"?e.padBottom:120,editing:e.puck?.isEditing,source:u(e.source),search:e.search===!0,searchHint:i(e.searchHint),noMatchText:i(e.noMatchText),listPosition:f(e.listPosition),showDistance:e.showDistance!==!1})}};export{r as FOOTPRINT_PH,I as FootprintRender};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Fragment as d,jsx as r}from"react/jsx-runtime";import{padValuesOf as l}from"../../../../content/section-padding.js";import m from"../../../../../components/Heading.js";import{hidableText as f,readHidable as p}from"
|
|
1
|
+
import{Fragment as d,jsx as r}from"react/jsx-runtime";import{padValuesOf as l}from"../../../../content/section-padding.js";import m from"../../../../../components/Heading.js";import{hidableText as f,readHidable as p}from"efficient-easel/draw";import{PH as g}from"../../placeholders.js";import{phPrev as s}from"../../scaffold.js";const b={label:"Heading",defaultProps:{text:"",level:"2",align:"left",contained:!0},render:e=>{const{text:t,level:a,align:n,contained:i,puck:o}=e;return p(t).hidden?r(d,{}):r(m,{text:s(f(t),g.heading,o)??"",level:a,align:n,contained:i,pad:l(e)})}};export{b as HeadingRender};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import{HERO_GROUP_NUDGE_LIMIT as o,HERO_GROUP_WIDTH_DEFAULT as
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{HERO_GROUP_NUDGE_LIMIT as o,HERO_GROUP_WIDTH_DEFAULT as _,HERO_GROUP_WIDTH_MAX as d,HERO_GROUP_WIDTH_MIN as s,HERO_GROUP_WIDTH_NESTED_DEFAULT as g,heroGroupNestDepth as c}from"../../../../hero-group-placement.js";import{NudgeIcon as a,WidthIcon as l}from"efficient-easel/icons";import{boxAlignField as f,boxJustifyField as H,boxWrapField as h,directionField as x,gapField as G,group as i,placementField as O,plainText as R,sidesPaddingFields as F,slider as t,withIdentifier as w,withOffPage as D,withPanelOnly as E}from"../../../controls.js";import{PH as I}from"../../placeholders.js";import{withRowRules as P}from"../../../show-when.js";import{HeroGroupSlots as T}from"./render.js";const j={fields:P({_gContent:i("Content"),name:E(w(D(R("Box name",I.boxName)))),content:T.content,_gLayout:i("Layout"),placement:O("Placement",{stacking:!0}),width:t("Width",e(l,{}),s,d,5,_,"%"),direction:x("HeroGroup"),gap:G("HeroGroup"),justify:H(),align:f(),wrap:h(),_gNudge:i("Nudge"),nudgeX:t("Sideways",e(a,{}),-o,o,1,0,"px"),nudgeY:t("Up and down",e(a,{}),-o,o,1,0,"px"),...F()},[[["placement"],{context:"heroGroupDepth",is:0}]]),resolveFields:(r,{fields:n,appState:m})=>{const u=typeof r.props.id=="string"?r.props.id:"";if(c(m?.data,u)===0)return n;const p={...n};return p.width=t("Width",e(l,{}),s,d,5,g,"%"),p}};export{j as HeroGroupFields};
|
|
@@ -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"
|
|
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"efficient-easel/draw";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
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{FOOTER_LOGO_PX as o,HEADER_LOGO_PX_MAX as t,HEADER_LOGO_PX_MIN as l}from"../../../../../components/Logo.js";import{HeightIcon as i}from"efficient-easel/icons";import{linkField as a,plainText as r,slider as s,upload as n,withPanelOnly as p}from"../../../controls.js";import{withRowRules as m}from"../../../show-when.js";const O={fields:m({src:n("Logo image","image/*"),alt:p(r("Alt text","Brand name","Read out in place of the picture, and shown if it can’t load.")),href:a("Link"),heightPx:s("Height",e(i,{}),l,t,1,o,"px"),reverse:{type:"select",label:"Logo color",options:[{label:"Auto contrast",value:"auto"},{label:"As uploaded",value:"off"}]}},[[["alt"],{field:"src",set:!0}]])};export{O as LogoBlockFields};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as f}from"react/jsx-runtime";import i from"../../../../../components/LogoBlock.js";import{FOOTER_LOGO_PX as n}from"../../../../../components/Logo.js";import{readHidable as m}from"
|
|
1
|
+
import{jsx as f}from"react/jsx-runtime";import i from"../../../../../components/LogoBlock.js";import{FOOTER_LOGO_PX as n}from"../../../../../components/Logo.js";import{readHidable as m}from"efficient-easel/draw";const x={label:"Logo",defaultProps:{heightPx:n,reverse:"auto"},render:({src:e,alt:o,href:r,heightPx:t,reverse:d})=>f(i,{src:e||void 0,alt:m(o).text||void 0,href:r||void 0,heightPx:t,reverse:d!=="off"})};export{x as LogoBlockRender};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import r from"../../../../../components/BlogPostSource.js";import{BOUND_TO_POST as m,BOUND_TO_POST_NOTE as n,NOT_BOUND_TO_POST as u,group as a,linkField as s,panelNote as g,sourceField as h,text as t,textarea as i,upload as _}from"../../../controls.js";import{SPLITTABLE_SECTIONS as c,headFieldsForPlacement as O,widthFieldsForParent as T}from"../../../../sections/section-head-placement.js";import{WIDTH_ROW_KEYS as P}from"../../shared-fields.js";import{withRowsShownWhen as b,withShowWhen as p}from"../../../show-when.js";import{LONGREAD_PH as e}from"./render.js";const L=["image","title","dek","ctaHref","metaPublished"],k={fields:b({source:h(r),_nBound:p(g(n),m),_gHead:a("Section header"),headNum:t("Number",e.headNum),headTitle:i("Heading",e.headTitle),headDesc:i("Body",e.headDesc),_gMeta:a("Article"),category:t("Category",e.category),metaMiddle:t("Middle meta",e.metaMiddle),readLabel:t("Read time",e.readLabel),title:i("Article title",e.title),dek:i("Dek",e.dek),_gQuote:a("Pull quote"),quote:i("Quote",e.quote),quoteAttribution:t("Attribution",e.quoteAttribution),_gLink:a("Link"),ctaText:t("Button",e.ctaText),ctaHref:s("Link"),image:_("Image","image/*"),imageLabel:t("Image label",e.imageLabel),_gOverlay:a("Image caption"),metaPublished:t("Published",e.metaPublished),metaReads:t("Reads in",e.metaReads)},L,u),resolveFields:(o,{fields:d,parent:l})=>O(T(d,l,P),o.props.headPlacement,c.LongRead.headRows)};export{k as LongReadFields};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as D}from"react/jsx-runtime";import M from"../../../../../components/LongRead.js";import{hidableText as _}from"
|
|
1
|
+
import{jsx as D}from"react/jsx-runtime";import M from"../../../../../components/LongRead.js";import{hidableText as _}from"efficient-easel/draw";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,2 +1,2 @@
|
|
|
1
|
-
import{jsx as t}from"react/jsx-runtime";import{BlockColumnIcon as i,PlacementIcon as c,StateIcon as
|
|
2
|
-
*the counter.*`),body:u("Body",""),_gCard:r("Mockup card"),variant:n("Card type",t(
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{BlockColumnIcon as i,PlacementIcon as c,StateIcon as s,TemplateIcon as d,TextLinesIcon as b}from"efficient-easel/icons";import{group as r,plainText as l,select as n,text as e,textarea as u,textList as o}from"../../../controls.js";import{withMockupVariantRules as m,MOCKUP_DEFAULT_VARIANT as p,MOCKUP_VARIANT_OPTIONS as y}from"../../../mockup-variant-fields.js";const v={fields:m({_gContent:r("Content"),eyebrow:e("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(d,{}),y,p),cardHeader:e("Card header strip","Product record"),badge:e("Header badge","LIVE"),cardTitle:e("Card title",""),cardSubtitle:e("Card subtitle",""),pills:{type:"array",label:"Selector pills",arrayFields:{label:l("Label"),value:l("Value")},defaultItemProps:{label:"",value:""},getItemSummary:a=>[a?.label,a?.value].filter(Boolean).join(" ")||"Pill"},tiles:{type:"array",label:"Spec tiles",arrayFields:{label:l("Label"),value:l("Value")},defaultItemProps:{label:"",value:""},getItemSummary:a=>[a?.label,a?.value].filter(Boolean).join(" ")||"Tile"},rows:{type:"array",label:"Result / order rows",arrayFields:{lead:l("Lead"),detail:l("Detail"),state:n("State",t(s,{}),[{label:"Match / done (green)",value:"ok"},{label:"In progress (accent)",value:"warn"},{label:"No match (gray ✕)",value:"no"}],"ok"),status:l("Status chip")},defaultItemProps:{lead:"",detail:"",state:"ok",status:""},getItemSummary:a=>[a?.lead,a?.detail].filter(Boolean).join(" · ")||"Row"},button:e("Accent button",""),footnote:e("Accent footnote",""),_gKanban:r("Kanban columns"),col1Title:e("Column 1 title",""),col1Cards:o("Column 1 cards",t(i,{}),"Job card label","verbatim"),col2Title:e("Column 2 title",""),col2Cards:o("Column 2 cards",t(i,{}),"Job card label","verbatim"),col3Title:e("Column 3 title",""),col3Cards:o("Column 3 cards",t(i,{}),"Job card label","verbatim"),col4Title:e("Column 4 title",""),col4Cards:o("Column 4 cards",t(i,{}),"Job card label","verbatim"),_gClaims:r("Claims bars"),barsHeading:e("Bars heading","Defect rate by product"),bars:{type:"array",label:"Bars",arrayFields:{label:l("Label"),value:l("Value")},defaultItemProps:{label:"",value:""},getItemSummary:a=>[a?.label,a?.value].filter(Boolean).join(" · ")||"Bar"},_gTerminal:r("Terminal"),termLines:o("Terminal lines",t(b,{}),"$ efficient …","verbatim"),_gBrowser:r("Browser mock"),urlText:e("URL pill",""),heroTitle:e("Hero line",""),heroButton:e("Hero button",""),products:{type:"array",label:"Product tiles",arrayFields:{name:l("Name"),price:l("Price")},defaultItemProps:{name:"",price:""},getItemSummary:a=>[a?.name,a?.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")})};export{v as MockupFields};
|