efficient-web-builder 19.1.0 → 22.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/CHANGELOG.md +301 -0
  2. package/dist/components/AnimatedStat.js +1 -1
  3. package/dist/components/Banner.js +1 -1
  4. package/dist/components/Cards.js +1 -1
  5. package/dist/components/CategoryBar.js +1 -1
  6. package/dist/components/ChartSection.js +1 -1
  7. package/dist/components/ChatSettingsPanel.js +1 -1
  8. package/dist/components/ContactLocations.js +3 -3
  9. package/dist/components/Countdown.js +1 -1
  10. package/dist/components/DealerFinder.d.ts +12 -0
  11. package/dist/components/DealerFinder.js +1 -0
  12. package/dist/components/DocMasthead.js +1 -1
  13. package/dist/components/DocMetaCards.js +1 -1
  14. package/dist/components/DocTabs.js +1 -1
  15. package/dist/components/FAQ.js +1 -1
  16. package/dist/components/FeaturedCover.js +1 -1
  17. package/dist/components/Footprint.d.ts +8 -1
  18. package/dist/components/Footprint.js +5 -5
  19. package/dist/components/HeroPartPanel.d.ts +7 -0
  20. package/dist/components/HeroPartPanel.js +1 -0
  21. package/dist/components/HeroPoster.d.ts +2 -1
  22. package/dist/components/HeroPoster.js +1 -1
  23. package/dist/components/HeroSingle.d.ts +12 -1
  24. package/dist/components/HeroSingle.js +11 -1
  25. package/dist/components/HeroSlide.d.ts +2 -1
  26. package/dist/components/HeroSlide.js +1 -1
  27. package/dist/components/HeroVideoPlay.d.ts +13 -0
  28. package/dist/components/HeroVideoPlay.js +1 -0
  29. package/dist/components/ImageBlock.d.ts +2 -1
  30. package/dist/components/ImageBlock.js +1 -1
  31. package/dist/components/KeyFeatures.js +1 -1
  32. package/dist/components/LocationGroupHeader.js +1 -1
  33. package/dist/components/Logos.js +1 -1
  34. package/dist/components/LongRead.js +1 -1
  35. package/dist/components/Manifesto.js +1 -1
  36. package/dist/components/Masthead.js +1 -1
  37. package/dist/components/MediaUploadField.d.ts +3 -1
  38. package/dist/components/MediaUploadField.js +1 -1
  39. package/dist/components/MockupSection.js +1 -1
  40. package/dist/components/OrderSummary.js +1 -1
  41. package/dist/components/PagesPanel.js +1 -1
  42. package/dist/components/ParagraphsA.js +1 -1
  43. package/dist/components/PostCard.js +1 -1
  44. package/dist/components/PreviewChatContext.d.ts +8 -0
  45. package/dist/components/PreviewChatContext.js +1 -1
  46. package/dist/components/PreviewHeroPartContext.d.ts +3 -0
  47. package/dist/components/PreviewHeroPartContext.js +1 -0
  48. package/dist/components/ProcessSteps.js +1 -1
  49. package/dist/components/Prose.js +1 -1
  50. package/dist/components/PublishedPartStylesContext.js +1 -1
  51. package/dist/components/Reel.js +1 -1
  52. package/dist/components/SectionEditor.d.ts +10 -0
  53. package/dist/components/SectionEditor.js +1 -1
  54. package/dist/components/SectionEyebrow.js +1 -1
  55. package/dist/components/SectionHeader.js +1 -1
  56. package/dist/components/SectionIcon.js +1 -1
  57. package/dist/components/Series.js +1 -1
  58. package/dist/components/SiteFields.d.ts +3 -1
  59. package/dist/components/SiteFields.js +1 -1
  60. package/dist/components/SiteTextStylesField.js +1 -1
  61. package/dist/components/Split.js +1 -1
  62. package/dist/components/StandaloneSectionEditor.js +1 -1
  63. package/dist/components/Stats.js +1 -1
  64. package/dist/components/StatsParagraph.js +1 -1
  65. package/dist/components/StorefrontEditor.js +1 -1
  66. package/dist/components/Testimonials.js +1 -1
  67. package/dist/components/Text.js +1 -1
  68. package/dist/components/ThemeField.js +1 -1
  69. package/dist/components/Timeline.js +1 -1
  70. package/dist/components/TimelineTrack.js +1 -1
  71. package/dist/components/WebsiteScreenParts.js +1 -1
  72. package/dist/components/storefront-editor.css +103 -302
  73. package/dist/components/useLocationsTree.js +1 -1
  74. package/dist/lib/content/chat-launcher.d.ts +9 -0
  75. package/dist/lib/content/chat-launcher.js +1 -0
  76. package/dist/lib/content/page-width.d.ts +1 -0
  77. package/dist/lib/content/page-width.js +1 -1
  78. package/dist/lib/content/phone-focus.d.ts +7 -0
  79. package/dist/lib/content/phone-focus.js +1 -0
  80. package/dist/lib/dealer-source.d.ts +34 -0
  81. package/dist/lib/dealer-source.js +1 -0
  82. package/dist/lib/editor-words-catalogue.d.ts +23 -7
  83. package/dist/lib/editor-words-catalogue.js +4 -4
  84. package/dist/lib/hero-arrows.d.ts +1 -1
  85. package/dist/lib/hero-media-layout.d.ts +11 -0
  86. package/dist/lib/hero-media-layout.js +1 -0
  87. package/dist/lib/hero-video.d.ts +15 -0
  88. package/dist/lib/hero-video.js +1 -0
  89. package/dist/lib/links/phone-href.d.ts +1 -0
  90. package/dist/lib/links/phone-href.js +1 -0
  91. package/dist/lib/markup.d.ts +5 -3
  92. package/dist/lib/markup.js +2 -2
  93. package/dist/lib/preview-header-settings.d.ts +1 -0
  94. package/dist/lib/puck/MarkupToolbar.d.ts +1 -1
  95. package/dist/lib/puck/MarkupToolbar.js +1 -1
  96. package/dist/lib/puck/blocks/general/Footprint/fields.js +1 -1
  97. package/dist/lib/puck/blocks/general/Footprint/render.js +2 -2
  98. package/dist/lib/puck/blocks/general/Hero/fields.js +1 -1
  99. package/dist/lib/puck/blocks/general/HeroSingle/fields.js +1 -1
  100. package/dist/lib/puck/blocks/general/HeroSingle/render.js +1 -1
  101. package/dist/lib/puck/blocks/general/HeroSlide/fields.js +1 -1
  102. package/dist/lib/puck/blocks/general/HeroSlide/render.js +1 -1
  103. package/dist/lib/puck/blocks/general/ImageBlock/fields.js +1 -1
  104. package/dist/lib/puck/blocks/general/ImageBlock/render.js +1 -1
  105. package/dist/lib/puck/canvas-typing.d.ts +1 -2
  106. package/dist/lib/puck/controls.d.ts +49 -2
  107. package/dist/lib/puck/controls.js +1 -1
  108. package/dist/lib/puck/field-groups.js +1 -1
  109. package/dist/lib/puck/hero-media-parts.d.ts +42 -0
  110. package/dist/lib/puck/hero-media-parts.js +1 -0
  111. package/dist/lib/puck/media-manifest.json +3 -1
  112. package/dist/lib/puck/part-styles.js +2 -2
  113. package/dist/lib/puck/passes/settings-groups.js +1 -1
  114. package/dist/lib/reel.d.ts +3 -3
  115. package/dist/lib/reel.js +1 -1
  116. package/dist/lib/sections/collection-card-text-regions.d.ts +9 -1
  117. package/dist/lib/sections/collection-card-text-regions.js +1 -1
  118. package/dist/lib/sections/text-regions.d.ts +1 -0
  119. package/dist/lib/sections/text-regions.js +1 -1
  120. package/dist/lib/site-text-styles.d.ts +1 -0
  121. package/dist/lib/site-text-styles.js +2 -2
  122. package/dist/lib/source-rules/heading-ceiling-sweep.js +3 -3
  123. package/dist/lib/source-rules/one-markup-grammar.d.ts +5 -0
  124. package/dist/lib/source-rules/one-markup-grammar.js +4 -0
  125. package/dist/lib/source-rules/one-site-column.d.ts +6 -0
  126. package/dist/lib/source-rules/one-site-column.js +3 -0
  127. package/dist/lib/source-rules/part-style-naming.js +2 -2
  128. package/dist/lib/source-rules/rule.d.ts +1 -0
  129. package/dist/lib/source-rules/rule.js +3 -1
  130. package/dist/lib/source-rules/size-token-paints.js +4 -4
  131. package/dist/lib/source-rules/style-face-matches-size.js +3 -3
  132. package/dist/lib/web-backend.d.ts +5 -0
  133. package/package.json +7 -5
  134. package/dist/components/ImageFocusRow.d.ts +0 -7
  135. package/dist/components/ImageFocusRow.js +0 -1
  136. package/dist/components/TemplateGlyph.d.ts +0 -6
  137. package/dist/components/TemplateGlyph.js +0 -1
  138. package/dist/components/TextStyleRow.d.ts +0 -13
  139. package/dist/components/TextStyleRow.js +0 -1
@@ -1 +1 @@
1
- import{jsx as a,jsxs as i}from"react/jsx-runtime";import d from"./SectionEyebrow.js";import{renderGold as s,renderHeadline as c}from"./goldPhrases.js";function g({level:t,className:l,children:r}){return a(t===2?"h2":"h1",{className:l,children:r})}function f({eyebrow:t,title:l,deck:r,meta:x,editing:p=!1,titleLevel:m}){const n=(x??[]).filter(e=>(e.label??"").trim()!==""||(e.value??"").trim()!=="");return!!!(t||l||r||n.length>0)&&!p?null:a("section",{className:"relative z-[2] bg-bg",children:i("div",{className:"mx-auto max-w-[var(--sf-site-width,1600px)] border-b border-line px-[var(--sf-site-gutter,40px)] pt-[100px] pb-[60px] max-[900px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[900px]:pt-[60px] max-[900px]:pb-10",children:[i("div",{className:"grid grid-cols-[auto_1fr_auto] items-end gap-10 pb-8 max-[900px]:grid-cols-1 max-[900px]:gap-4",children:[t&&a(d,{text:t,className:"pb-3",classNameAfter:"max-[900px]:pb-0"}),l&&a(g,{level:m,className:"font-display text-[length:min(var(--size-headingLarge,clamp(56px,8vw,128px)),var(--sf-heading-max,9999px))] font-medium uppercase leading-[0.88] tracking-[-0.04em]",children:c(l,!0)}),n.length>0&&a("div",{className:"pb-3 text-right font-mono text-[length:var(--size-label,13px)] uppercase leading-[1.8] tracking-[0.22em] text-fg-dim max-[900px]:pb-0 max-[900px]:text-left",children:n.map((e,o)=>i("div",{children:[e.label&&a("strong",{className:"font-normal text-fg",children:s(e.label)}),e.label&&e.value?" ":null,e.value?s(e.value):null]},o))})]}),r&&a("p",{className:"max-w-[760px] border-t border-line pt-8 font-serif text-[length:var(--size-body,22px)] italic leading-[1.5] text-fg-dim max-[900px]:text-[length:var(--size-body,19px)]",children:s(r,!0)})]})})}export{f as default};
1
+ import{jsx as a,jsxs as s}from"react/jsx-runtime";import c from"./SectionEyebrow.js";import{renderGold as i,renderHeadline as g}from"./goldPhrases.js";const x={bodyUpTo900:"max-[900px]:text-[length:var(--size-body,19px)]",body:"text-[length:var(--size-body,22px)]",label:"text-[length:var(--size-label,13px)]"};function b({level:t,className:l,children:r}){return a(t===2?"h2":"h1",{className:l,children:r})}function f({eyebrow:t,title:l,deck:r,meta:p,editing:o=!1,titleLevel:d}){const n=(p??[]).filter(e=>(e.label??"").trim()!==""||(e.value??"").trim()!=="");return!!!(t||l||r||n.length>0)&&!o?null:a("section",{className:"relative z-[2] bg-bg",children:s("div",{className:"mx-auto max-w-[var(--sf-site-width,1600px)] border-b border-line px-[var(--sf-site-gutter,40px)] pt-[100px] pb-[60px] max-[900px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[900px]:pt-[60px] max-[900px]:pb-10",children:[s("div",{className:"grid grid-cols-[auto_1fr_auto] items-end gap-10 pb-8 max-[900px]:grid-cols-1 max-[900px]:gap-4",children:[t&&a(c,{text:t,className:"pb-3",classNameAfter:"max-[900px]:pb-0"}),l&&a(b,{level:d,className:"font-display text-[length:min(var(--size-headingLarge,clamp(56px,8vw,128px)),var(--sf-heading-max,9999px))] font-medium uppercase leading-[0.88] tracking-[-0.04em]",children:g(l,!0)}),n.length>0&&a("div",{className:`pb-3 text-right font-mono ${x.label} uppercase leading-[1.8] tracking-[0.22em] text-fg-dim max-[900px]:pb-0 max-[900px]:text-left`,children:n.map((e,m)=>s("div",{children:[e.label&&a("strong",{className:"font-normal text-fg",children:i(e.label)}),e.label&&e.value?" ":null,e.value?i(e.value):null]},m))})]}),r&&a("p",{className:`max-w-[760px] border-t border-line pt-8 font-serif ${x.body} italic leading-[1.5] text-fg-dim ${x.bodyUpTo900}`,children:i(r,!0)})]})})}export{f as default};
@@ -1 +1 @@
1
- import{jsx as a,jsxs as x}from"react/jsx-runtime";import n from"./SectionEyebrow.js";import{renderGold as t}from"./goldPhrases.js";function d({cards:i,editing:s=!1}){const r=(i??[]).filter(e=>(e.label??"").trim()!==""||(e.value??"").trim()!==""||(e.desc??"").trim()!=="");return r.length===0&&!s?null:a("section",{className:"relative z-[2] bg-bg",children:a("div",{className:"mx-auto grid max-w-[var(--sf-site-width,1600px)] grid-cols-3 gap-10 border-b border-line px-[var(--sf-site-gutter,40px)] py-[60px] max-[900px]:grid-cols-1 max-[900px]:gap-4 max-[900px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[900px]:py-10",children:r.map((e,l)=>x("div",{className:"flex flex-col gap-2 border border-line bg-surface p-6",children:[e.label&&a(n,{text:e.label,size:12}),e.value&&a("span",{className:"font-heading3 text-[length:var(--size-headingSmall,20px)] font-medium tracking-[-0.015em] text-fg",children:t(e.value)}),e.desc&&a("span",{className:"mt-1.5 font-serif text-[length:var(--size-body,14px)] italic leading-[1.5] text-fg-dim",children:t(e.desc)})]},l))})})}export{d as default};
1
+ import{jsx as a,jsxs as n}from"react/jsx-runtime";import x from"./SectionEyebrow.js";import{renderGold as t}from"./goldPhrases.js";const l={body:"text-[length:var(--size-body,14px)]",headingSmall:"text-[length:var(--size-headingSmall,20px)]"};function m({cards:i,editing:s=!1}){const r=(i??[]).filter(e=>(e.label??"").trim()!==""||(e.value??"").trim()!==""||(e.desc??"").trim()!=="");return r.length===0&&!s?null:a("section",{className:"relative z-[2] bg-bg",children:a("div",{className:"mx-auto grid max-w-[var(--sf-site-width,1600px)] grid-cols-3 gap-10 border-b border-line px-[var(--sf-site-gutter,40px)] py-[60px] max-[900px]:grid-cols-1 max-[900px]:gap-4 max-[900px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[900px]:py-10",children:r.map((e,d)=>n("div",{className:"flex flex-col gap-2 border border-line bg-surface p-6",children:[e.label&&a(x,{text:e.label,size:12}),e.value&&a("span",{className:`font-heading3 ${l.headingSmall} font-medium tracking-[-0.015em] text-fg`,children:t(e.value)}),e.desc&&a("span",{className:`mt-1.5 font-serif ${l.body} italic leading-[1.5] text-fg-dim`,children:t(e.desc)})]},d))})})}export{m as default};
@@ -1 +1 @@
1
- import{jsx as a,jsxs as s}from"react/jsx-runtime";import{SiteLink as d}from"../lib/site-runtime.js";import{renderChrome as m,renderGold as i}from"./goldPhrases.js";import{STICKY_UNDERHEADER_CLASS as f}from"../lib/puck/header-clearance.js";function b({tabs:c,metaLabel:r,metaValue:t,editing:p=!1}){const n=(c??[]).filter(e=>(e.label??"").trim()!=="");if(n.length===0&&!p)return null;const x=n.findIndex(e=>e.current);return a("nav",{className:`${f} sticky top-[var(--sf-header-h,88px)] z-40 border-b border-line px-[var(--sf-site-gutter,40px)] backdrop-blur-md max-[900px]:px-4`,style:{background:"color-mix(in oklab, var(--bg) 92%, transparent)"},children:s("div",{className:"mx-auto flex max-w-[calc(var(--sf-site-width,1600px)_-_var(--sf-site-gutter,40px)*2)] items-stretch gap-0 overflow-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:[n.map((e,o)=>{const l=o===x;return s(d,{href:e.href||"#",className:["relative whitespace-nowrap border-r border-line px-[26px] py-[18px] font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.22em] transition-colors",o===0?"border-l border-line":"",l?"text-fg":"text-fg-dim hover:text-fg"].join(" "),children:[m(e.label),l&&a("span",{className:"absolute inset-x-0 -bottom-px h-[2px] bg-accent"})]},o)}),(r||t)&&s("span",{className:"ml-auto flex items-center whitespace-nowrap border-l border-line py-[18px] pl-[26px] font-mono text-[length:var(--size-label,12px)] uppercase tracking-[0.24em] text-fg-dim max-[900px]:hidden",children:[r&&i(r),t&&a("strong",{className:"ml-2 font-normal text-accent",children:i(t)})]})]})})}export{b as default};
1
+ import{jsx as n,jsxs as o}from"react/jsx-runtime";import{SiteLink as m}from"../lib/site-runtime.js";import{renderChrome as b,renderGold as i}from"./goldPhrases.js";import{STICKY_UNDERHEADER_CLASS as f}from"../lib/puck/header-clearance.js";const c={labelSmall:"text-[length:var(--size-label,12px)]",labelLarge:"text-[length:var(--size-label,13px)]"};function h({tabs:p,metaLabel:r,metaValue:t,editing:x=!1}){const a=(p??[]).filter(e=>(e.label??"").trim()!=="");if(a.length===0&&!x)return null;const d=a.findIndex(e=>e.current);return n("nav",{className:`${f} sticky top-[var(--sf-header-h,88px)] z-40 border-b border-line px-[var(--sf-site-gutter,40px)] backdrop-blur-md max-[900px]:px-4`,style:{background:"color-mix(in oklab, var(--bg) 92%, transparent)"},children:o("div",{className:"mx-auto flex max-w-[calc(var(--sf-site-width,1600px)_-_var(--sf-site-gutter,40px)*2)] items-stretch gap-0 overflow-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:[a.map((e,l)=>{const s=l===d;return o(m,{href:e.href||"#",className:[`relative whitespace-nowrap border-r border-line px-[26px] py-[18px] font-mono ${c.labelLarge} uppercase tracking-[0.22em] transition-colors`,l===0?"border-l border-line":"",s?"text-fg":"text-fg-dim hover:text-fg"].join(" "),children:[b(e.label),s&&n("span",{className:"absolute inset-x-0 -bottom-px h-[2px] bg-accent"})]},l)}),(r||t)&&o("span",{className:`ml-auto flex items-center whitespace-nowrap border-l border-line py-[18px] pl-[26px] font-mono ${c.labelSmall} uppercase tracking-[0.24em] text-fg-dim max-[900px]:hidden`,children:[r&&i(r),t&&n("strong",{className:"ml-2 font-normal text-accent",children:i(t)})]})]})})}export{h as default};
@@ -1 +1 @@
1
- import{Fragment as v,jsx as e,jsxs as i}from"react/jsx-runtime";import{stripMarkup as E}from"../lib/markup.js";import{renderGold as o,renderHeadline as A}from"./goldPhrases.js";import F from"./SectionHeader.js";import S from"./SectionTextPartBridge.js";import{TEXT_REGION_ATTR as T,regionStyle as I,textRegionPartKey as O}from"../lib/sections/text-regions.js";import{FAQ_REGIONS as R}from"../lib/sections/faq-text-regions.js";import{SIZE_STEP_OF_ROLE as z}from"../lib/fonts.js";import{say as p}from"../lib/editor-words.js";function y(t){return E(t).trim()}function d(t,r){return t?{[T]:r}:{}}function x(t,r){const a=t?.[O(r)]?.role;return I(a,R[r],z)}function j({editing:t,nodeId:r,children:a}){return!t||!r?e(v,{children:a}):e(S,{nodeId:r,sectionType:"FAQ",children:a})}const L="relative z-[2] bg-bg py-[120px] max-[800px]:py-[70px]",M="relative z-[2] bg-bg pt-0 pb-[120px] max-[800px]:pt-0 max-[800px]:pb-[70px]",Q="mx-auto max-w-[var(--sf-site-width,1600px)] px-[var(--sf-site-gutter,40px)] max-[800px]:px-[min(20px,var(--sf-site-gutter,40px))]";function k({num:t,title:r,link:a,items:_,defaultOpen:b=!0,editing:s=!1,omitHead:u=!1,nodeId:w,partStyles:l}){const c=(_??[]).filter(n=>(n.question??"").trim()!==""),N=s&&c.length===0;if(c.length===0&&!s)return null;const f=N?[{question:p("Add your first question"),answer:p("Write the answer here.")},{question:p("Add another question"),answer:p("Write the answer here.")}]:c,h=f.filter(n=>(n.answer??"").trim()!=="").map(n=>({"@type":"Question",name:y(n.question??""),acceptedAnswer:{"@type":"Answer",text:y(n.answer??"")}})),g=!s&&h.length>0?JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:h}).replace(/</g,"\\u003c"):null,q=r?A(r,!0):void 0;return i("section",{className:u?M:L,children:[e("style",{children:".faq-acc__ico{transition:transform .2s ease}details[open]>summary .faq-acc__ico{transform:rotate(45deg)}"}),g&&e("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:g}}),i("div",{className:Q,children:[u?null:e(F,{num:t!==void 0?o(t):void 0,title:q,link:a?{text:o(a.text),href:a.href}:void 0,accent:!0}),e(j,{editing:s,nodeId:w,children:e("div",{children:f.map((n,m)=>i("details",{open:m===0&&b,className:"border-b border-line",children:[i("summary",{className:"flex cursor-pointer list-none items-center gap-6 py-7 [&::-webkit-details-marker]:hidden max-[800px]:gap-4 max-[800px]:py-5",children:[e("span",{className:"font-mono text-[length:var(--size-label,14px)] tracking-[0.2em] text-accent",...d(s,"number"),style:x(l,"number"),children:String(m+1).padStart(2,"0")}),e("span",{className:"flex-1 font-display text-[length:var(--size-body,18px)] font-medium uppercase tracking-[0.02em] text-fg max-[800px]:text-[length:var(--size-body,15px)]",...d(s,"question"),style:x(l,"question"),children:o(n.question??"")}),e("span",{"aria-hidden":!0,className:"faq-acc__ico shrink-0 text-[length:var(--size-body,22px)] leading-none text-fg-dim",children:"+"})]}),n.answer&&e("div",{className:"pb-8 pl-11 pr-8 max-[800px]:pl-0 max-[800px]:pr-0",children:e("p",{className:"max-w-[760px] text-[length:var(--size-body,15px)] leading-[1.7] text-fg-dim",...d(s,"answer"),style:x(l,"answer"),children:o(n.answer)})})]},m))})})]})]})}export{k as default};
1
+ import{Fragment as E,jsx as e,jsxs as i}from"react/jsx-runtime";import{stripMarkup as A}from"../lib/markup.js";import{renderGold as o,renderHeadline as v}from"./goldPhrases.js";import F from"./SectionHeader.js";import S from"./SectionTextPartBridge.js";import{TEXT_REGION_ATTR as T,regionStyle as I,textRegionPartKey as O}from"../lib/sections/text-regions.js";import{FAQ_REGIONS as R}from"../lib/sections/faq-text-regions.js";import{SIZE_STEP_OF_ROLE as z}from"../lib/fonts.js";import{say as l}from"../lib/editor-words.js";import{SITE_COLUMN as j}from"../lib/content/page-width.js";function y(t){return A(t).trim()}function d(t,n){return t?{[T]:n}:{}}function x(t,n){const a=t?.[O(n)]?.role;return I(a,R[n],z)}function L({editing:t,nodeId:n,children:a}){return!t||!n?e(E,{children:a}):e(S,{nodeId:n,sectionType:"FAQ",children:a})}const M="relative z-[2] bg-bg py-[120px] max-[800px]:py-[70px]",Q="relative z-[2] bg-bg pt-0 pb-[120px] max-[800px]:pt-0 max-[800px]:pb-[70px]";function k({num:t,title:n,link:a,items:_,defaultOpen:b=!0,editing:s=!1,omitHead:f=!1,nodeId:N,partStyles:p}){const c=(_??[]).filter(r=>(r.question??"").trim()!==""),w=s&&c.length===0;if(c.length===0&&!s)return null;const u=w?[{question:l("Add your first question"),answer:l("Write the answer here.")},{question:l("Add another question"),answer:l("Write the answer here.")}]:c,h=u.filter(r=>(r.answer??"").trim()!=="").map(r=>({"@type":"Question",name:y(r.question??""),acceptedAnswer:{"@type":"Answer",text:y(r.answer??"")}})),g=!s&&h.length>0?JSON.stringify({"@context":"https://schema.org","@type":"FAQPage",mainEntity:h}).replace(/</g,"\\u003c"):null,q=n?v(n,!0):void 0;return i("section",{className:f?Q:M,children:[e("style",{children:".faq-acc__ico{transition:transform .2s ease}details[open]>summary .faq-acc__ico{transform:rotate(45deg)}"}),g&&e("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:g}}),i("div",{className:j,children:[f?null:e(F,{num:t!==void 0?o(t):void 0,title:q,link:a?{text:o(a.text),href:a.href}:void 0,accent:!0}),e(L,{editing:s,nodeId:N,children:e("div",{children:u.map((r,m)=>i("details",{open:m===0&&b,className:"border-b border-line",children:[i("summary",{className:"flex cursor-pointer list-none items-center gap-6 py-7 [&::-webkit-details-marker]:hidden max-[800px]:gap-4 max-[800px]:py-5",children:[e("span",{className:"font-mono text-[length:var(--size-label,14px)] tracking-[0.2em] text-accent",...d(s,"number"),style:x(p,"number"),children:String(m+1).padStart(2,"0")}),e("span",{className:"flex-1 font-display text-[length:var(--size-body,18px)] font-medium uppercase tracking-[0.02em] text-fg max-[800px]:text-[length:var(--size-body,15px)]",...d(s,"question"),style:x(p,"question"),children:o(r.question??"")}),e("span",{"aria-hidden":!0,className:"faq-acc__ico shrink-0 text-[length:var(--size-body,22px)] leading-none text-fg-dim",children:"+"})]}),r.answer&&e("div",{className:"pb-8 pl-11 pr-8 max-[800px]:pl-0 max-[800px]:pr-0",children:e("p",{className:"max-w-[760px] text-[length:var(--size-body,15px)] leading-[1.7] text-fg-dim",...d(s,"answer"),style:x(p,"answer"),children:o(r.answer)})})]},m))})})]})]})}export{k as default};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as a}from"react/jsx-runtime";import{sectionRunsFullWidth as u}from"../lib/content/section-width.js";import{Fragment as b}from"react";import{SiteLink as v}from"../lib/site-runtime.js";import{stripMarkup as N}from"../lib/markup.js";import y from"./Placeholder.js";import{renderGold as r,renderHeadline as z,splitParagraphs as w}from"./goldPhrases.js";function k({image:f,badge:i,imageDate:l,category:p,readLabel:o,date:x,title:n,dek:m,ctaText:c,ctaHref:g,...h}){const d=[p?e("span",{className:"text-accent",children:r(p)}):null,o?e("span",{children:r(o)}):null,x?e("span",{children:r(x)}):null].filter(Boolean);return e("section",{className:u(h)?"border-b border-line px-[var(--sf-site-gutter,40px)] py-20 max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[1100px]:py-[60px]":"mx-auto max-w-[var(--sf-site-width,1600px)] border-b border-line px-[var(--sf-site-gutter,40px)] py-20 max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[1100px]:py-[60px]",children:a("article",{className:"sf-card relative grid grid-cols-[1.3fr_1fr] border border-line bg-[var(--card-bg)] max-[1100px]:grid-cols-1",children:[a("div",{className:"relative aspect-[5/4] overflow-hidden border-r border-line bg-surface-2 max-[1100px]:border-r-0 max-[1100px]:border-b",children:[e(y,{label:"featured-cover",src:f||void 0,alt:N(n||"Cover"),sizes:"(max-width: 1100px) 100vw, 56vw"}),e("div",{className:"pointer-events-none absolute inset-0 z-[1]",style:{background:"linear-gradient(180deg, rgba(10,10,10,0.45) 0%, transparent 30%, transparent 70%, rgba(10,10,10,0.55) 100%)"}}),i&&e("span",{className:"absolute left-6 top-6 z-[2] bg-accent px-3 py-2 font-mono text-[length:var(--size-label,12px)] uppercase tracking-[0.3em] text-bg",children:r(i)}),l&&e("span",{className:"absolute right-6 bottom-6 z-[2] font-mono text-[length:var(--size-label,12px)] uppercase tracking-[0.24em] text-overlay-fg",children:r(l)})]}),a("div",{className:"flex flex-col justify-between gap-6 px-12 py-14 max-[1100px]:px-7 max-[1100px]:py-9",children:[d.length>0&&e("div",{className:"flex items-center gap-4 font-mono text-[length:var(--size-label,12px)] uppercase tracking-[0.28em] text-fg-dim",children:d.map((s,t)=>a(b,{children:[t>0&&e("span",{className:"opacity-40",children:"·"}),s]},t))}),n&&e("h2",{className:"font-heading2 text-[length:min(var(--size-headingMedium,clamp(34px,3.5vw,58px)),var(--sf-heading-max,9999px))] font-medium uppercase leading-none tracking-[-0.03em]",children:z(n,!0)}),m&&w(m).map((s,t)=>e("p",{className:"max-w-[520px] font-serif text-[length:var(--size-body,20px)] italic leading-[1.5] text-fg-dim",children:r(s,!0)},t)),c&&e("div",{children:a(v,{href:g||"#",className:"group inline-flex items-center gap-3.5 py-3.5 font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.3em] text-accent",children:[r(c)," ",e("span",{className:"transition-transform group-hover:translate-x-[6px]",children:"→"})]})})]})]})})}export{k as default};
1
+ import{jsx as e,jsxs as a}from"react/jsx-runtime";import{sectionRunsFullWidth as h}from"../lib/content/section-width.js";import{Fragment as v}from"react";import{SiteLink as y}from"../lib/site-runtime.js";import{stripMarkup as N}from"../lib/markup.js";import w from"./Placeholder.js";import{renderGold as r,renderHeadline as k,splitParagraphs as z}from"./goldPhrases.js";const t={body:"text-[length:var(--size-body,20px)]",labelSmall:"text-[length:var(--size-label,12px)]",labelLarge:"text-[length:var(--size-label,13px)]"};function S({image:g,badge:i,imageDate:p,category:o,readLabel:m,date:c,title:n,dek:x,ctaText:d,ctaHref:b,...u}){const f=[o?e("span",{className:"text-accent",children:r(o)}):null,m?e("span",{children:r(m)}):null,c?e("span",{children:r(c)}):null].filter(Boolean);return e("section",{className:h(u)?"border-b border-line px-[var(--sf-site-gutter,40px)] py-20 max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[1100px]:py-[60px]":"mx-auto max-w-[var(--sf-site-width,1600px)] border-b border-line px-[var(--sf-site-gutter,40px)] py-20 max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[1100px]:py-[60px]",children:a("article",{className:"sf-card relative grid grid-cols-[1.3fr_1fr] border border-line bg-[var(--card-bg)] max-[1100px]:grid-cols-1",children:[a("div",{className:"relative aspect-[5/4] overflow-hidden border-r border-line bg-surface-2 max-[1100px]:border-r-0 max-[1100px]:border-b",children:[e(w,{label:"featured-cover",src:g||void 0,alt:N(n||"Cover"),sizes:"(max-width: 1100px) 100vw, 56vw"}),e("div",{className:"pointer-events-none absolute inset-0 z-[1]",style:{background:"linear-gradient(180deg, rgba(10,10,10,0.45) 0%, transparent 30%, transparent 70%, rgba(10,10,10,0.55) 100%)"}}),i&&e("span",{className:`absolute left-6 top-6 z-[2] bg-accent px-3 py-2 font-mono ${t.labelSmall} uppercase tracking-[0.3em] text-bg`,children:r(i)}),p&&e("span",{className:`absolute right-6 bottom-6 z-[2] font-mono ${t.labelSmall} uppercase tracking-[0.24em] text-overlay-fg`,children:r(p)})]}),a("div",{className:"flex flex-col justify-between gap-6 px-12 py-14 max-[1100px]:px-7 max-[1100px]:py-9",children:[f.length>0&&e("div",{className:`flex items-center gap-4 font-mono ${t.labelSmall} uppercase tracking-[0.28em] text-fg-dim`,children:f.map((s,l)=>a(v,{children:[l>0&&e("span",{className:"opacity-40",children:"·"}),s]},l))}),n&&e("h2",{className:"font-heading2 text-[length:min(var(--size-headingMedium,clamp(34px,3.5vw,58px)),var(--sf-heading-max,9999px))] font-medium uppercase leading-none tracking-[-0.03em]",children:k(n,!0)}),x&&z(x).map((s,l)=>e("p",{className:`max-w-[520px] font-serif ${t.body} italic leading-[1.5] text-fg-dim`,children:r(s,!0)},l)),d&&e("div",{children:a(y,{href:b||"#",className:`group inline-flex items-center gap-3.5 py-3.5 font-mono ${t.labelLarge} uppercase tracking-[0.3em] text-accent`,children:[r(d)," ",e("span",{className:"transition-transform group-hover:translate-x-[6px]",children:"→"})]})})]})]})})}export{S as default};
@@ -1,5 +1,6 @@
1
1
  import { type MapThemeMode } from "../lib/map-styles.js";
2
2
  import { type FootprintOffice } from "../lib/content/footprint.js";
3
+ import { type DealerListPosition, type FootprintSource } from "../lib/dealer-source.js";
3
4
  export interface FootprintProps {
4
5
  sectionNumber?: string;
5
6
  heading?: string;
@@ -12,5 +13,11 @@ export interface FootprintProps {
12
13
  padBottom?: number;
13
14
  editing?: boolean;
14
15
  omitHead?: boolean;
16
+ source?: FootprintSource;
17
+ search?: boolean;
18
+ searchHint?: string;
19
+ noMatchText?: string;
20
+ listPosition?: DealerListPosition;
21
+ showDistance?: boolean;
15
22
  }
16
- export default function Footprint({ sectionNumber, heading, tagline, offices, apiKey, mapId, mapTheme, padTop, padBottom, editing, omitHead, }: FootprintProps): import("react").JSX.Element | null;
23
+ export default function Footprint({ sectionNumber, heading, tagline, offices, apiKey, mapId, mapTheme, padTop, padBottom, editing, omitHead, source, search, searchHint, noMatchText, listPosition, showDistance, }: FootprintProps): import("react").JSX.Element | null;
@@ -1,4 +1,4 @@
1
- "use client";import{jsx as n,Fragment as it,jsxs as $}from"react/jsx-runtime";import{useEffect as A,useRef as m,useState as R}from"react";import{MAP_PALETTE as Y,mapBackgroundFor as _,mapMarkerColorFor as T,mapPaletteFor as q,mapStylesFor as tt,watchMapTheme as ct}from"../lib/map-styles.js";import{hasMapCoords as et,loadGoogleMaps as pt,watchMapLoad as ut}from"../lib/maps-loader.js";import{resolveMapId as dt,resolveMapsKey as ft,useSiteMapId as mt,useSiteMapsKey as gt}from"../lib/maps-config.js";import{bucketByGroup as xt,groupColsClass as bt}from"../lib/locations-grid.js";import yt from"./EditorialSectionHead.js";import{LocationGroupHeader as vt}from"./LocationGroupHeader.js";import{renderGold as ht,renderHeadline as kt}from"./goldPhrases.js";import wt from"./PartStyledText.js";import{say as Mt}from"../lib/editor-words.js";const $t=11,Ct=6,D=60;function K(t){return t.replace(/[&<>"']/g,a=>a==="&"?"&amp;":a==="<"?"&lt;":a===">"?"&gt;":a==='"'?"&quot;":"&#39;")}function nt(t,a,u){return{path:a.SymbolPath.CIRCLE,scale:t.hq?$t:Ct,fillColor:T(u),fillOpacity:1,strokeColor:T(u),strokeOpacity:t.hq?.3:.25,strokeWeight:t.hq?14:9}}function rt(t,a,u,e,l,C){l.forEach(r=>r.setMap(null)),l.clear();const N=new a.LatLngBounds;return e.forEach((r,f)=>{if(!et(r.lat,r.lng))return;N.extend({lat:r.lat,lng:r.lng});const g=new a.Marker({map:t,position:{lat:r.lat,lng:r.lng},icon:nt(r,a,u),title:r.city,zIndex:r.hq?100:10,cursor:"pointer"});g.addListener("click",()=>C(f)),l.set(f,g)}),N}function Nt(t){return`
1
+ "use client";import{jsx as n,Fragment as ct,jsxs as I}from"react/jsx-runtime";import{useEffect as B,useRef as g,useState as H}from"react";import{MAP_PALETTE as tt,mapBackgroundFor as K,mapMarkerColorFor as et,mapPaletteFor as Q,mapStylesFor as nt,watchMapTheme as pt}from"../lib/map-styles.js";import{hasMapCoords as rt,loadGoogleMaps as dt,watchMapLoad as ut}from"../lib/maps-loader.js";import{resolveMapId as mt,resolveMapsKey as ft,useSiteMapId as gt,useSiteMapsKey as bt}from"../lib/maps-config.js";import{bucketByGroup as xt,groupColsClass as yt}from"../lib/locations-grid.js";import ht from"./EditorialSectionHead.js";import{LocationGroupHeader as vt}from"./LocationGroupHeader.js";import{renderGold as kt,renderHeadline as $t}from"./goldPhrases.js";import wt from"./PartStyledText.js";import{say as Mt}from"../lib/editor-words.js";import{parseFootprintSource as St}from"../lib/dealer-source.js";import Lt from"./DealerFinder.js";const S={bodySmall:"text-[length:var(--size-body,10px)]",bodyLarge:"text-[length:var(--size-body,18px)]",labelSmall:"text-[length:var(--size-label,11px)]",labelLarge:"text-[length:var(--size-label,12px)]"},Ct=11,It=6,X=60;function U(t){return t.replace(/[&<>"']/g,r=>r==="&"?"&amp;":r==="<"?"&lt;":r===">"?"&gt;":r==='"'?"&quot;":"&#39;")}function ot(t,r,p){return{path:r.SymbolPath.CIRCLE,scale:t.hq?Ct:It,fillColor:et(p),fillOpacity:1,strokeColor:et(p),strokeOpacity:t.hq?.3:.25,strokeWeight:t.hq?14:9}}function at(t,r,p,e,l,N){l.forEach(o=>o.setMap(null)),l.clear();const L=new r.LatLngBounds;return e.forEach((o,m)=>{if(!rt(o.lat,o.lng))return;L.extend({lat:o.lat,lng:o.lng});const f=new r.Marker({map:t,position:{lat:o.lat,lng:o.lng},icon:ot(o,r,p),title:o.city,zIndex:o.hq?100:10,cursor:"pointer"});f.addListener("click",()=>N(m)),l.set(m,f)}),L}function Nt(t){return`
2
2
  .footprint-map .gm-style { font-family: var(--font-role-label), var(--font-mono-fallback) !important; }
3
3
  .footprint-map .gm-style .gm-style-iw-c {
4
4
  background: ${t.bg} !important;
@@ -16,12 +16,12 @@
16
16
  .footprint-map .gm-style button[aria-label="Close"] > span {
17
17
  background-color: ${t.closeX} !important;
18
18
  }
19
- `}function ot({pal:t}){const a=t?t.marker:"var(--accent)",u=t?t.info.bg:"var(--site-surface)",e=t?t.background:"var(--bg)",l=t?`color-mix(in oklab, ${t.info.fgDim} 12%, transparent)`:"color-mix(in oklab, var(--fg) 3%, transparent)";return $(it,{children:[n("div",{className:"pointer-events-none absolute inset-0",style:{backgroundImage:`radial-gradient(60% 70% at 50% 50%, color-mix(in oklab, ${a} 8%, ${u}) 0%, ${u} 60%, ${e} 100%)`}}),n("div",{className:"pointer-events-none absolute inset-0",style:{backgroundImage:`repeating-linear-gradient(0deg, transparent 0 22px, ${l} 22px 23px), repeating-linear-gradient(90deg, transparent 0 22px, ${l} 22px 23px)`}})]})}function It({sectionNumber:t="",heading:a="",tagline:u="",offices:e=[],apiKey:l="",mapId:C="",mapTheme:N="auto",padTop:r,padBottom:f,editing:g,omitHead:k=!1}){const I=typeof r=="number"?r:120,L=typeof f=="number"?f:120,[E,x]=R(null),z=e.length===0&&!t&&!a&&!u;if(A(()=>{x(o=>o!==null&&o>=e.length?null:o)},[e]),z&&!g)return null;const w=xt(e,o=>String(o.group??""),()=>"");return n("section",{className:"relative z-[2] bg-bg",children:$("div",{className:"mx-auto max-w-[var(--sf-site-width,1600px)] border-b border-line px-[var(--sf-site-gutter,40px)] max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[800px]:px-[min(20px,var(--sf-site-gutter,40px))]",style:{paddingTop:I,paddingBottom:L},children:[!k&&(t||a||u)&&n(yt,{num:t,title:a?kt(a):void 0,desc:u||void 0,spaceBelow:"mb-12"}),n(Et,{offices:e,apiKey:l,mapId:C,mapTheme:N,activeIndex:E,onSelect:x,editing:g}),e.length>0&&n("div",{className:"mt-12 flex flex-col gap-8",children:w.map((o,M)=>$("div",{children:[o.key&&n(vt,{groupKey:o.key,count:o.items.length}),n("div",{className:["grid gap-[2px] bg-bg",bt(o.items.length),o.items.length>2?"max-[1100px]:grid-cols-2 max-[700px]:grid-cols-1":o.items.length===2?"max-[700px]:grid-cols-1":""].join(" "),children:o.items.map(({item:i,index:y})=>{const S=E===y;return $("button",{type:"button",onClick:()=>x(y),"aria-pressed":S,className:["flex flex-col gap-1.5 bg-bg px-6 py-5 text-left transition-colors outline outline-1 -outline-offset-1",S?"outline-accent":"outline-transparent hover:outline-line"].join(" "),children:[$("span",{className:"flex items-center gap-2.5 font-mono text-[length:var(--size-label,11px)] uppercase tracking-[0.28em]",children:[i.hq&&n("span",{className:"border border-accent bg-accent px-1.5 py-0.5 text-[length:var(--size-body,10px)] text-bg",children:"HQ"}),i.role&&n("span",{className:"text-accent",children:i.role})]}),i.city&&n("span",{className:"font-display text-[length:var(--size-body,18px)] font-medium leading-[1.2] tracking-[-0.01em] text-fg",children:n(wt,{value:i.city,children:i.city})}),i.country&&n("span",{className:"font-mono text-[length:var(--size-label,11px)] uppercase tracking-[0.2em] text-fg-dim",children:i.country}),i.address&&n("span",{className:"font-mono text-[length:var(--size-label,11px)] uppercase tracking-[0.2em] text-fg-dim",children:ht(i.address)})]},y)})})]},o.key?`g:${o.key}`:`ungrouped:${M}`))}),e.length===0&&g&&n("p",{className:"mt-8 font-mono text-[length:var(--size-label,12px)] uppercase tracking-[0.24em] text-fg-dim",children:Mt("Add an office in the inspector")})]})})}function Et({offices:t,apiKey:a,mapId:u,mapTheme:e,activeIndex:l,onSelect:C,editing:N}){const r=ft(a,gt()),f=dt(u,mt()),g=!!r&&t.some(s=>et(s.lat,s.lng)),k=e!=="auto",I=q(e),L=m(null),E=m(null),x=m(null),z=m(null),w=m(new Map),o=m(null),M=m(null),i=m(null),y=m(C);y.current=C;const S=m(t);S.current=t;const W=m(l);W.current=l;const[j,O]=R(!1),F=`${r}|${f}|${e}`,[at,Z]=R(null),Q=at===F,[B,U]=R(Y.dark),[lt,X]=R(Y.dark.background);return A(()=>{U(q(e)),X(_(e))},[e]),A(()=>{if(!g)return;const s=L.current;if(!s)return;let c=!1,p=null,v=null;const P=async()=>{v=ut(()=>{c||Z(F)});try{const d=await pt(r);if(c||!E.current)return;const h=new d.Map(E.current,{center:{lat:25,lng:0},zoom:2,minZoom:1,maxZoom:5,disableDefaultUI:!0,gestureHandling:"cooperative",keyboardShortcuts:!1,clickableIcons:!1,backgroundColor:_(e),...f?{mapId:f}:{styles:tt(e)}});x.current=h,z.current=d;const G=rt(h,d,e,S.current,w.current,H=>y.current(H));M.current=G,G.isEmpty()||h.fitBounds(G,D);const J=new d.InfoWindow({disableAutoPan:!0});J.addListener("closeclick",()=>y.current(null)),o.current=J,h.addListener("click",()=>y.current(null)),h.addListener("tilesloaded",()=>{v?.ready(),c||O(!0)}),e==="auto"&&!f&&(p=ct(()=>{c||!x.current||(x.current.setOptions({styles:tt(e),backgroundColor:_(e)}),w.current.forEach((H,st)=>{const V=S.current[st];V&&H.setIcon(nt(V,d,e))}),U(q(e)),X(_(e)))}))}catch(d){console.error("[FootprintMap] Maps SDK failed:",d),v?.stop(),c||Z(F)}},b=new IntersectionObserver(d=>{for(const h of d)if(h.isIntersecting){b.disconnect(),P();break}},{rootMargin:"200px"});return b.observe(s),()=>{c=!0,b.disconnect(),v?.stop(),p?.(),o.current?.close(),o.current=null,x.current=null,z.current=null,w.current.forEach(d=>d.setMap(null)),w.current.clear(),M.current=null,O(!1)}},[g,r,f,e,F]),A(()=>{const s=x.current,c=z.current;if(!s||!c)return;const p=rt(s,c,e,t,w.current,v=>y.current(v));M.current=p,W.current===null&&!p.isEmpty()&&s.fitBounds(p,D)},[t,e]),A(()=>{const s=x.current,c=o.current;if(!s||!c)return;if(l===null){c.close(),i.current!==null&&M.current&&!M.current.isEmpty()&&s.fitBounds(M.current,D),i.current=null;return}const p=t[l],v=w.current.get(l);if(!p||!v){c.close(),i.current=l;return}s.panTo({lat:p.lat,lng:p.lng});const P=s.getZoom();P!=null&&P<4&&s.setZoom(4);const b=B.info,d=p.hq?`<span style="background:${b.accent};color:${b.bg};padding:1px 6px;font-size:10px;letter-spacing:0.18em;">HQ</span>`:"",h=p.role?`<span style="color:${b.accent};">${K(p.role)}</span>`:"";c.setContent(`
19
+ `}function lt({pal:t}){const r=t?t.marker:"var(--accent)",p=t?t.info.bg:"var(--site-surface)",e=t?t.background:"var(--bg)",l=t?`color-mix(in oklab, ${t.info.fgDim} 12%, transparent)`:"color-mix(in oklab, var(--fg) 3%, transparent)";return I(ct,{children:[n("div",{className:"pointer-events-none absolute inset-0",style:{backgroundImage:`radial-gradient(60% 70% at 50% 50%, color-mix(in oklab, ${r} 8%, ${p}) 0%, ${p} 60%, ${e} 100%)`}}),n("div",{className:"pointer-events-none absolute inset-0",style:{backgroundImage:`repeating-linear-gradient(0deg, transparent 0 22px, ${l} 22px 23px), repeating-linear-gradient(90deg, transparent 0 22px, ${l} 22px 23px)`}})]})}function Et({sectionNumber:t="",heading:r="",tagline:p="",offices:e=[],apiKey:l="",mapId:N="",mapTheme:L="auto",padTop:o,padBottom:m,editing:f,omitHead:v=!1,source:E,search:D=!1,searchHint:P="",noMatchText:k="",listPosition:_="below",showDistance:$=!0}){const x=St(E)==="dealers",w=typeof o=="number"?o:120,A=typeof m=="number"?m:120,[M,C]=H(null),G=e.length===0&&!x&&!t&&!r&&!p;if(B(()=>{C(a=>a!==null&&a>=e.length?null:a)},[e]),G&&!f)return null;const z=xt(e,a=>String(a.group??""),()=>"");return n("section",{className:"relative z-[2] bg-bg",children:I("div",{className:"mx-auto max-w-[var(--sf-site-width,1600px)] border-b border-line px-[var(--sf-site-gutter,40px)] max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[800px]:px-[min(20px,var(--sf-site-gutter,40px))]",style:{paddingTop:w,paddingBottom:A},children:[!v&&(t||r||p)&&n(ht,{num:t,title:r?$t(r):void 0,desc:p||void 0,spaceBelow:"mb-12"}),x?n(Lt,{mapLabel:r.replace(/[=*]/g,"").replace(/\s+/g," ").trim(),mapTheme:L,search:D,searchHint:P,noMatchText:k,listPosition:_,showDistance:$,editing:f}):n(At,{offices:e,apiKey:l,mapId:N,mapTheme:L,activeIndex:M,onSelect:C,editing:f}),!x&&e.length>0&&n("div",{className:"mt-12 flex flex-col gap-8",children:z.map((a,F)=>I("div",{children:[a.key&&n(vt,{groupKey:a.key,count:a.items.length}),n("div",{className:["grid gap-[2px] bg-bg",yt(a.items.length),a.items.length>2?"max-[1100px]:grid-cols-2 max-[700px]:grid-cols-1":a.items.length===2?"max-[700px]:grid-cols-1":""].join(" "),children:a.items.map(({item:u,index:R})=>{const j=M===R;return I("button",{type:"button",onClick:()=>C(R),"aria-pressed":j,className:["flex flex-col gap-1.5 bg-bg px-6 py-5 text-left transition-colors outline outline-1 -outline-offset-1",j?"outline-accent":"outline-transparent hover:outline-line"].join(" "),children:[I("span",{className:`flex items-center gap-2.5 font-mono ${S.labelSmall} uppercase tracking-[0.28em]`,children:[u.hq&&n("span",{className:`border border-accent bg-accent px-1.5 py-0.5 ${S.bodySmall} text-bg`,children:"HQ"}),u.role&&n("span",{className:"text-accent",children:u.role})]}),u.city&&n("span",{className:`font-display ${S.bodyLarge} font-medium leading-[1.2] tracking-[-0.01em] text-fg`,children:n(wt,{value:u.city,children:u.city})}),u.country&&n("span",{className:`font-mono ${S.labelSmall} uppercase tracking-[0.2em] text-fg-dim`,children:u.country}),u.address&&n("span",{className:`font-mono ${S.labelSmall} uppercase tracking-[0.2em] text-fg-dim`,children:kt(u.address)})]},R)})})]},a.key?`g:${a.key}`:`ungrouped:${F}`))}),!x&&e.length===0&&f&&n("p",{className:`mt-8 font-mono ${S.labelLarge} uppercase tracking-[0.24em] text-fg-dim`,children:Mt("Add an office in the inspector")})]})})}function At({offices:t,apiKey:r,mapId:p,mapTheme:e,activeIndex:l,onSelect:N,editing:L}){const o=ft(r,bt()),m=mt(p,gt()),f=!!o&&t.some(s=>rt(s.lat,s.lng)),v=e!=="auto",E=Q(e),D=g(null),P=g(null),k=g(null),_=g(null),$=g(new Map),x=g(null),w=g(null),A=g(null),M=g(N);M.current=N;const C=g(t);C.current=t;const G=g(l);G.current=l;const[z,a]=H(!1),F=`${o}|${m}|${e}`,[u,R]=H(null),j=u===F,[W,J]=H(tt.dark),[st,V]=H(tt.dark.background);return B(()=>{J(Q(e)),V(K(e))},[e]),B(()=>{if(!f)return;const s=D.current;if(!s)return;let i=!1,c=null,y=null;const q=async()=>{y=ut(()=>{i||R(F)});try{const d=await dt(o);if(i||!P.current)return;const h=new d.Map(P.current,{center:{lat:25,lng:0},zoom:2,minZoom:1,maxZoom:5,disableDefaultUI:!0,gestureHandling:"cooperative",keyboardShortcuts:!1,clickableIcons:!1,backgroundColor:K(e),...m?{mapId:m}:{styles:nt(e)}});k.current=h,_.current=d;const O=at(h,d,e,C.current,$.current,Z=>M.current(Z));w.current=O,O.isEmpty()||h.fitBounds(O,X);const Y=new d.InfoWindow({disableAutoPan:!0});Y.addListener("closeclick",()=>M.current(null)),x.current=Y,h.addListener("click",()=>M.current(null)),h.addListener("tilesloaded",()=>{y?.ready(),i||a(!0)}),e==="auto"&&!m&&(c=pt(()=>{i||!k.current||(k.current.setOptions({styles:nt(e),backgroundColor:K(e)}),$.current.forEach((Z,it)=>{const T=C.current[it];T&&Z.setIcon(ot(T,d,e))}),J(Q(e)),V(K(e)))}))}catch(d){console.error("[FootprintMap] Maps SDK failed:",d),y?.stop(),i||R(F)}},b=new IntersectionObserver(d=>{for(const h of d)if(h.isIntersecting){b.disconnect(),q();break}},{rootMargin:"200px"});return b.observe(s),()=>{i=!0,b.disconnect(),y?.stop(),c?.(),x.current?.close(),x.current=null,k.current=null,_.current=null,$.current.forEach(d=>d.setMap(null)),$.current.clear(),w.current=null,a(!1)}},[f,o,m,e,F]),B(()=>{const s=k.current,i=_.current;if(!s||!i)return;const c=at(s,i,e,t,$.current,y=>M.current(y));w.current=c,G.current===null&&!c.isEmpty()&&s.fitBounds(c,X)},[t,e]),B(()=>{const s=k.current,i=x.current;if(!s||!i)return;if(l===null){i.close(),A.current!==null&&w.current&&!w.current.isEmpty()&&s.fitBounds(w.current,X),A.current=null;return}const c=t[l],y=$.current.get(l);if(!c||!y){i.close(),A.current=l;return}s.panTo({lat:c.lat,lng:c.lng});const q=s.getZoom();q!=null&&q<4&&s.setZoom(4);const b=W.info,d=c.hq?`<span style="background:${b.accent};color:${b.bg};padding:1px 6px;font-size:10px;letter-spacing:0.18em;">HQ</span>`:"",h=c.role?`<span style="color:${b.accent};">${U(c.role)}</span>`:"";i.setContent(`
20
20
  <div style="padding:10px 14px 12px;min-width:180px;color:${b.fg};">
21
21
  <div style="display:flex;align-items:center;gap:8px;font-family:var(--font-role-label),var(--font-mono-fallback);font-size:11px;letter-spacing:0.28em;text-transform:uppercase;">
22
22
  ${d}${h}
23
23
  </div>
24
- <div style="font-family:var(--font-display),Georgia,serif;font-size:20px;font-weight:500;line-height:1.2;margin-top:6px;color:${b.fg};">${K(p.city)}</div>
25
- <div style="font-family:var(--font-role-label),var(--font-mono-fallback);font-size:11px;letter-spacing:0.2em;text-transform:uppercase;color:${b.fgDim};margin-top:4px;">${K(p.country)}</div>
24
+ <div style="font-family:var(--font-display),Georgia,serif;font-size:20px;font-weight:500;line-height:1.2;margin-top:6px;color:${b.fg};">${U(c.city)}</div>
25
+ <div style="font-family:var(--font-role-label),var(--font-mono-fallback);font-size:11px;letter-spacing:0.2em;text-transform:uppercase;color:${b.fgDim};margin-top:4px;">${U(c.country)}</div>
26
26
  </div>
27
- `),c.open({map:s,anchor:v}),i.current=l},[l,j,B,t]),!g||Q?N?$("div",{className:["relative aspect-[16/9] w-full overflow-hidden border border-line max-[720px]:aspect-[4/5]",k?"":"bg-bg"].join(" "),style:k?{backgroundColor:I.background}:void 0,children:[n(ot,{pal:k?I:void 0}),n("div",{className:["absolute inset-0 flex items-center justify-center px-6 text-center font-mono text-[length:var(--size-label,12px)] uppercase tracking-[0.24em]",k?"":"text-fg-dim"].join(" "),style:k?{color:I.info.fgDim}:void 0,children:r?Q?"The map could not load. Check the Google Maps key":"Add office coordinates to plot the map":"Add a Google Maps API key to show the map"})]}):null:$("div",{ref:L,className:"sf-card footprint-map relative aspect-[16/9] w-full overflow-hidden border border-line max-[720px]:aspect-[4/5]",style:{backgroundColor:lt},children:[n("style",{dangerouslySetInnerHTML:{__html:Nt(B.info)}}),n(ot,{pal:k?I:void 0}),n("div",{ref:E,className:"gmap-canvas absolute inset-0 transition-opacity duration-500",style:{opacity:j?1:0}}),n("div",{className:["pointer-events-none absolute inset-0 flex items-center justify-center font-mono text-[length:var(--size-label,12px)] uppercase tracking-[0.24em] text-fg-dim transition-opacity duration-500",j?"opacity-0":"opacity-100"].join(" "),children:"Loading map…"})]})}export{It as default};
27
+ `),i.open({map:s,anchor:y}),A.current=l},[l,z,W,t]),!f||j?L?I("div",{className:["relative aspect-[16/9] w-full overflow-hidden border border-line max-[720px]:aspect-[4/5]",v?"":"bg-bg"].join(" "),style:v?{backgroundColor:E.background}:void 0,children:[n(lt,{pal:v?E:void 0}),n("div",{className:[`absolute inset-0 flex items-center justify-center px-6 text-center font-mono ${S.labelLarge} uppercase tracking-[0.24em]`,v?"":"text-fg-dim"].join(" "),style:v?{color:E.info.fgDim}:void 0,children:o?j?"The map could not load. Check the Google Maps key":"Add office coordinates to plot the map":"Add a Google Maps API key to show the map"})]}):null:I("div",{ref:D,className:"sf-card footprint-map relative aspect-[16/9] w-full overflow-hidden border border-line max-[720px]:aspect-[4/5]",style:{backgroundColor:st},children:[n("style",{dangerouslySetInnerHTML:{__html:Nt(W.info)}}),n(lt,{pal:v?E:void 0}),n("div",{ref:P,className:"gmap-canvas absolute inset-0 transition-opacity duration-500",style:{opacity:z?1:0}}),n("div",{className:[`pointer-events-none absolute inset-0 flex items-center justify-center font-mono ${S.labelLarge} uppercase tracking-[0.24em] text-fg-dim transition-opacity duration-500`,z?"opacity-0":"opacity-100"].join(" "),children:"Loading map…"})]})}export{Et as default};
@@ -0,0 +1,7 @@
1
+ import { type HeroMediaPart } from "../lib/puck/hero-media-parts.js";
2
+ export default function HeroPartPanel({ nodeId, part, sectionName, onUpToSection, }: {
3
+ nodeId: string;
4
+ part: HeroMediaPart;
5
+ sectionName: string;
6
+ onUpToSection: () => void;
7
+ }): import("react").JSX.Element;
@@ -0,0 +1 @@
1
+ "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import{InspectorUpLevel as t}from"efficient-easel/chrome";import{usePreviewHeroPart as l}from"./PreviewHeroPartContext.js";import{SiteFields as p}from"./SiteFields.js";import{say as o}from"../lib/editor-words.js";import{HERO_MEDIA_PART_LABELS as c,heroPartId as d}from"../lib/puck/hero-media-parts.js";function f({nodeId:i,part:r,sectionName:m,onUpToSection:n}){const{select:s}=l();return a("div",{children:[r!=="media"?e(t,{inline:!0,name:o(c.media),onSelect:()=>s(d(i,"media"))}):e(t,{inline:!0,name:o(m),onSelect:n}),e(p,{part:r})]})}export{f as default};
@@ -4,7 +4,8 @@ interface HeroPosterProps {
4
4
  showVideo?: boolean;
5
5
  playbackRate?: number;
6
6
  objectPosition?: string;
7
+ objectPositionPhone?: string;
7
8
  quiet?: boolean;
8
9
  }
9
- export default function HeroPoster({ videoSrc, posterSrc, showVideo, playbackRate, objectPosition, quiet, }: HeroPosterProps): import("react").JSX.Element;
10
+ export default function HeroPoster({ videoSrc, posterSrc, showVideo, playbackRate, objectPosition, objectPositionPhone, quiet, }: HeroPosterProps): import("react").JSX.Element;
10
11
  export {};
@@ -1 +1 @@
1
- "use client";import{jsx as a,jsxs as h}from"react/jsx-runtime";import{useEffect as u,useRef as k,useState as o}from"react";import{SiteImage as C}from"../lib/site-runtime.js";import L from"./HeroHeldFrame.js";import{hasAv1Variant as N,isExternalMediaUrl as P}from"../lib/media.js";import{sizedImage as R}from"../lib/sized-image.js";const A=.5;function H({videoSrc:d,posterSrc:m,showVideo:f=!0,playbackRate:p=A,objectPosition:l="50% 50%",quiet:v=!1}){const e=m||"",t=d||"",[i,c]=o(!1),[I,y]=o(!1),[g,w]=o(!1),[j,E]=o(!1),[F,b]=o(!1),z=k(null);u(()=>{c(!1),y(!1),w(!1),E(!1)},[d,m]),u(()=>{if(typeof window>"u")return;const s=()=>{const r=window;r.requestIdleCallback?r.requestIdleCallback(()=>b(!0),{timeout:2e3}):setTimeout(()=>b(!0),800)};if(document.readyState==="complete"){s();return}return window.addEventListener("load",s,{once:!0}),()=>window.removeEventListener("load",s)},[]),u(()=>{const s=z.current;if(!s)return;const r=()=>{s.playbackRate=p};return r(),s.addEventListener("loadedmetadata",r),()=>s.removeEventListener("loadedmetadata",r)},[d,p]);const x=P(e),n=e&&x&&!I?R(e):{src:e};return h("div",{className:"absolute inset-0 z-[1]",children:[a("div",{className:"absolute inset-0",style:{background:"var(--site-surface)"}}),e&&(x?a("img",{src:n.src,...n.srcSet?{srcSet:n.srcSet,sizes:"100vw"}:{},alt:"",className:"absolute inset-0 z-[2] h-full w-full object-cover",style:{display:i?"none":"block",objectPosition:l},onError:()=>n.srcSet?y(!0):c(!0)},e):a(C,{src:e,alt:"",fill:!0,priority:!0,sizes:"100vw",className:"z-[2] object-cover",style:{display:i?"none":"block",objectPosition:l},onError:()=>c(!0)},e)),f&&!v&&t&&F&&!g&&h("video",{ref:z,autoPlay:!0,loop:!0,muted:!0,playsInline:!0,preload:"metadata",className:"absolute inset-0 z-[3] h-full w-full object-cover",style:{objectPosition:l},onError:()=>w(!0),children:[N(t)&&a("source",{src:t.replace(/\.mp4$/,".av1.mp4"),type:'video/mp4; codecs="av01.0.08M.10"'}),a("source",{src:t,type:"video/mp4"})]},t),f&&v&&t&&F&&!j&&(!e||i)&&a(L,{src:t,objectPosition:l,onError:()=>E(!0)},t)]})}export{H as default};
1
+ "use client";import{jsx as o,jsxs as N}from"react/jsx-runtime";import{useEffect as m,useRef as C,useState as a}from"react";import{SiteImage as L}from"../lib/site-runtime.js";import P from"./HeroHeldFrame.js";import{hasAv1Variant as R,isExternalMediaUrl as A}from"../lib/media.js";import{sizedImage as H}from"../lib/sized-image.js";import{phoneFocus as S}from"../lib/content/phone-focus.js";const _=.5;function $({videoSrc:d,posterSrc:f,showVideo:p=!0,playbackRate:v=_,objectPosition:l="50% 50%",objectPositionPhone:I,quiet:y=!1}){const n=S(I),e=f||"",t=d||"",[c,u]=a(!1),[g,w]=a(!1),[j,F]=a(!1),[k,E]=a(!1),[b,h]=a(!1),z=C(null);m(()=>{u(!1),w(!1),F(!1),E(!1)},[d,f]),m(()=>{if(typeof window>"u")return;const s=()=>{const r=window;r.requestIdleCallback?r.requestIdleCallback(()=>h(!0),{timeout:2e3}):setTimeout(()=>h(!0),800)};if(document.readyState==="complete"){s();return}return window.addEventListener("load",s,{once:!0}),()=>window.removeEventListener("load",s)},[]),m(()=>{const s=z.current;if(!s)return;const r=()=>{s.playbackRate=v};return r(),s.addEventListener("loadedmetadata",r),()=>s.removeEventListener("loadedmetadata",r)},[d,v]);const x=A(e),i=e&&x&&!g?H(e):{src:e};return N("div",{className:"absolute inset-0 z-[1]",children:[o("div",{className:"absolute inset-0",style:{background:"var(--site-surface)"}}),e&&(x?o("img",{src:i.src,...i.srcSet?{srcSet:i.srcSet,sizes:"100vw"}:{},alt:"",className:`absolute inset-0 z-[2] h-full w-full object-cover ${n.className}`.trim(),style:{display:c?"none":"block",objectPosition:l,...n.style},onError:()=>i.srcSet?w(!0):u(!0)},e):o(L,{src:e,alt:"",fill:!0,priority:!0,sizes:"100vw",className:`z-[2] object-cover ${n.className}`.trim(),style:{display:c?"none":"block",objectPosition:l,...n.style},onError:()=>u(!0)},e)),p&&!y&&t&&b&&!j&&N("video",{ref:z,autoPlay:!0,loop:!0,muted:!0,playsInline:!0,preload:"metadata",className:"absolute inset-0 z-[3] h-full w-full object-cover",style:{objectPosition:l},onError:()=>F(!0),children:[R(t)&&o("source",{src:t.replace(/\.mp4$/,".av1.mp4"),type:'video/mp4; codecs="av01.0.08M.10"'}),o("source",{src:t,type:"video/mp4"})]},t),p&&y&&t&&b&&!k&&(!e||c)&&o(P,{src:t,objectPosition:l,onError:()=>E(!0)},t)]})}export{$ as default};
@@ -7,11 +7,22 @@ export interface HeroSingleProps {
7
7
  mediaSrc?: string;
8
8
  poster?: string;
9
9
  objectPosition?: string;
10
+ objectPositionPhone?: string;
10
11
  tintColor?: string;
11
12
  tintOpacity?: number;
12
13
  heightDesktop?: number;
13
14
  heightMobile?: number;
14
15
  boxes?: SlotComponent;
16
+ mediaLayout?: string;
17
+ mediaLayoutPhone?: string;
18
+ mediaImage2?: string;
19
+ objectPosition2?: string;
20
+ objectPosition2Phone?: string;
21
+ tintColor2?: string;
22
+ tintOpacity2?: number;
23
+ videoSource?: string;
24
+ youtubeUrl?: string;
25
+ videoPlayback?: string;
15
26
  editing?: boolean;
16
27
  }
17
- export default function HeroSingle({ overlay, overlayColor, overlayPosition, mediaType, mediaSrc, poster, objectPosition, tintColor, tintOpacity, heightDesktop, heightMobile, boxes: Boxes, editing, }: HeroSingleProps): import("react").JSX.Element;
28
+ export default function HeroSingle({ overlay, overlayColor, overlayPosition, mediaType, mediaSrc, poster, objectPosition, objectPositionPhone, tintColor, tintOpacity, heightDesktop, heightMobile, boxes: Boxes, videoSource, youtubeUrl, videoPlayback, mediaLayout, mediaLayoutPhone, mediaImage2, objectPosition2, objectPosition2Phone, tintColor2, tintOpacity2, editing, }: HeroSingleProps): import("react").JSX.Element;
@@ -1 +1,11 @@
1
- "use client";import{jsx as e,jsxs as N}from"react/jsx-runtime";import{useRef as S}from"react";import E from"./HeroPoster.js";import{resolveMedia as s}from"../lib/media.js";import{hasSectionHeight as j,resolveSectionHeight as c}from"../lib/content/section-height.js";import{DEFAULT_OVERLAY_COLOR as z,DEFAULT_OVERLAY_POSITION as L,overlayGradient as O}from"../lib/sections/hero-overlay.js";import{ON_MEDIA_INK_STYLE as A}from"../lib/content/ink.js";function H({overlay:h=100,overlayColor:f=z,overlayPosition:d=L,mediaType:p="image",mediaSrc:r,poster:t,objectPosition:v,tintColor:u="#000000",tintOpacity:i=0,heightDesktop:a,heightMobile:n,boxes:m,editing:x=!1}){const l=j(a,n),g=l?"h-[var(--sf-hero-h-m)] min-[720px]:h-[var(--sf-hero-h-d)]":"h-screen min-h-[680px]",_=l?{"--sf-hero-h-d":c(a),"--sf-hero-h-m":c(n)}:void 0,o=p==="video",b=o?s(r):void 0,w=o?s(t):s(r)??s(t),y=S(null);return N("section",{ref:y,className:`relative mx-[var(--sf-hero-bleed-m,calc(50%_-_50vw))] w-[var(--sf-hero-bleed-w,100vw)] ${g} max-w-[var(--sf-hero-cap,none)] overflow-hidden`,style:_,children:[e("div",{className:"absolute inset-0 z-[1]",children:e(E,{videoSrc:b,posterSrc:w,showVideo:o,objectPosition:v})}),i>0&&e("div",{className:"pointer-events-none absolute inset-0 z-[2]",style:{background:u,opacity:Math.min(Math.max(i,0),100)/100}}),e("div",{className:"pointer-events-none absolute inset-0 z-[2]",style:{background:O(f,d),opacity:Math.min(Math.max(h,0),100)/100}}),m&&e("div",{className:["sf-hero-group-layer absolute inset-0 z-[3] mx-auto","max-w-[min(var(--sf-page-cap,var(--sf-site-width,1600px)),var(--sf-site-width,1600px))]","px-[var(--sf-site-gutter,40px)] pt-[140px] pb-14",x?"sf-hero-group-layer-edit":""].filter(Boolean).join(" "),style:A,children:e(m,{className:"sf-hero-group-zone",minEmptyHeight:160})})]})}export{H as default};
1
+ "use client";import{jsx as e,jsxs as m}from"react/jsx-runtime";import{useEffect as Z,useRef as $,useState as z}from"react";import N from"./HeroPoster.js";import{HeroVideoBackdrop as ee,HeroVideoPlayer as oe}from"./HeroVideoPlay.js";import{resolveMedia as l}from"../lib/media.js";import{hasSectionHeight as re,resolveSectionHeight as M}from"../lib/content/section-height.js";import{DEFAULT_OVERLAY_COLOR as te,DEFAULT_OVERLAY_POSITION as se,overlayGradient as ne}from"../lib/sections/hero-overlay.js";import{ON_MEDIA_INK_STYLE as ie}from"../lib/content/ink.js";import{usePreviewHeroPart as ae}from"./PreviewHeroPartContext.js";import{tk as C}from"./floating-editor/tokens.js";import{HERO_PART_ATTR as ce,heroPartId as le,readHeroPartId as de}from"../lib/puck/hero-media-parts.js";import{markOverlayPortal as pe}from"../lib/puck/overlay-portal.js";import{hidableText as me}from"../lib/puck/hidable.js";import{normaliseVideoPlayback as ue,normaliseVideoSource as fe,parseYouTubeId as he}from"../lib/hero-video.js";import{heroPictureCount as xe,normaliseMediaLayout as ve,resolvePhoneLayout as ge}from"../lib/hero-media-layout.js";const D=`
2
+ .hero-part-pick { cursor: pointer; }
3
+ .hero-part-pick:hover {
4
+ outline: 2px solid color-mix(in srgb, ${C.accent} 45%, transparent);
5
+ outline-offset: -2px;
6
+ }
7
+ .hero-part-pick[data-selected] {
8
+ outline: 2px solid ${C.accent};
9
+ outline-offset: -2px;
10
+ }
11
+ `;function Pe({overlay:r=100,overlayColor:o=te,overlayPosition:y=se,mediaType:u="image",mediaSrc:i,poster:f,objectPosition:d,objectPositionPhone:p,tintColor:h="#000000",tintOpacity:n=0,heightDesktop:x,heightMobile:t,boxes:a,videoSource:k,youtubeUrl:v,videoPlayback:g,mediaLayout:S,mediaLayoutPhone:T,mediaImage2:F,objectPosition2:G,objectPosition2Phone:K,tintColor2:U="#000000",tintOpacity2:B=0,editing:s=!1}){const E=re(x,t),q=E?"h-[var(--sf-hero-h-m)] min-[720px]:h-[var(--sf-hero-h-d)]":"h-screen min-h-[680px]",J=E?{"--sf-hero-h-d":M(x),"--sf-hero-h-m":M(t)}:void 0,c=u==="video",R=c?l(i):void 0,O=c?l(f):l(i)??l(f),P=c&&fe(k)==="youtube",w=c&&ue(g)==="click",V=P?he(me(v)):null,A=c&&!P&&!w,[L,Q]=z(!1),_=!L,W=$(null),X=u==="video"?"media":"image",b=ve(S),I=ge(T,b),j=!c&&xe({mediaLayout:S,mediaLayoutPhone:T})>1;return m("section",{ref:W,className:`relative mx-[var(--sf-hero-bleed-m,calc(50%_-_50vw))] w-[var(--sf-hero-bleed-w,100vw)] ${q} max-w-[var(--sf-hero-cap,none)] overflow-hidden`,style:J,children:[j?m("div",{className:`absolute inset-0 z-[1] grid ${be[I]} ${ye[b]}`,"data-hero-layout":b,"data-hero-layout-phone":I,children:[s&&e("style",{children:D}),m(H,{part:"image",editing:s,className:"relative overflow-hidden",children:[e(N,{posterSrc:l(i),showVideo:!1,objectPosition:d,objectPositionPhone:p}),e(Y,{color:h,opacity:n})]}),m(H,{part:"image2",editing:s,className:`relative overflow-hidden${I==="one"?" max-[719px]:hidden":""}${b==="one"?" min-[720px]:hidden":""}`,children:[e(N,{posterSrc:l(F),showVideo:!1,objectPosition:G,objectPositionPhone:K}),e(Y,{color:U,opacity:B})]})]}):m(H,{part:X,editing:s,className:"absolute inset-0 z-[1]",children:[s&&e("style",{children:D}),e(N,{videoSrc:A?R:void 0,posterSrc:O,showVideo:A,objectPosition:d,objectPositionPhone:p}),P&&e(ee,{youTubeId:V,ownPoster:!!O,background:!w,editing:s})]}),w&&e(oe,{youTubeId:V,fileSrc:P?void 0:R,playing:L,onPlay:()=>Q(!0),editing:s}),_&&!j&&n>0&&e("div",{className:"pointer-events-none absolute inset-0 z-[2]",style:{background:h,opacity:Math.min(Math.max(n,0),100)/100}}),_&&e("div",{className:"pointer-events-none absolute inset-0 z-[2]",style:{background:ne(o,y),opacity:Math.min(Math.max(r,0),100)/100}}),_&&a&&e("div",{className:["sf-hero-group-layer absolute inset-0 z-[3] mx-auto","max-w-[min(var(--sf-page-cap,var(--sf-site-width,1600px)),var(--sf-site-width,1600px))]","px-[var(--sf-site-gutter,40px)] pt-[140px] pb-14",s?"sf-hero-group-layer-edit":""].filter(Boolean).join(" "),style:ie,children:e(a,{className:"sf-hero-group-zone",minEmptyHeight:160})})]})}const be={one:"max-[719px]:grid-cols-1 max-[719px]:grid-rows-1",side:"max-[719px]:grid-cols-2 max-[719px]:grid-rows-1",stacked:"max-[719px]:grid-cols-1 max-[719px]:grid-rows-2"},ye={one:"min-[720px]:grid-cols-1 min-[720px]:grid-rows-1",side:"min-[720px]:grid-cols-2 min-[720px]:grid-rows-1",stacked:"min-[720px]:grid-cols-1 min-[720px]:grid-rows-2"};function Y({color:r,opacity:o}){return o>0?e("div",{className:"pointer-events-none absolute inset-0 z-[2]",style:{background:r,opacity:Math.min(Math.max(o,0),100)/100}}):null}function H({part:r,editing:o,className:y,children:u}){const i=$(null),{selectedHeroPart:f,select:d}=ae(),[p,h]=z(null);Z(()=>{if(!o)return;const t=i.current;if(!t)return;const a=t.closest("[data-puck-component]")?.getAttribute("data-puck-component")??null;h(a);const k=pe(t),v=g=>{a&&(g.stopPropagation(),g.preventDefault(),d(le(a,r)))};return t.addEventListener("click",v,{capture:!0}),()=>{k(),t.removeEventListener("click",v,{capture:!0})}},[o,r,d]);const n=de(f),x=o&&p!=null&&n?.nodeId===p&&(n.part===r||n.part==="media");return e("div",{ref:i,className:`${y}${o?" hero-part-pick":""}`,...o?{[ce]:r}:{},"data-selected":x?"":void 0,children:u})}export{Pe as default};
@@ -19,6 +19,7 @@ export interface HeroSlideProps {
19
19
  videoSpeed?: number;
20
20
  poster?: string;
21
21
  objectPosition?: string;
22
+ objectPositionPhone?: string;
22
23
  tintColor?: string;
23
24
  tintOpacity?: number;
24
25
  themeClassName?: string;
@@ -26,5 +27,5 @@ export interface HeroSlideProps {
26
27
  groups?: SlotComponent;
27
28
  editing?: boolean;
28
29
  }
29
- export default function HeroSlide({ name, process, mediaType, mediaSrc, videoSpeed, poster, objectPosition, tintColor, tintOpacity, groups: Groups, editing, themeClassName, themeStyle, }: HeroSlideProps): import("react").JSX.Element;
30
+ export default function HeroSlide({ name, process, mediaType, mediaSrc, videoSpeed, poster, objectPosition, objectPositionPhone, tintColor, tintOpacity, groups: Groups, editing, themeClassName, themeStyle, }: HeroSlideProps): import("react").JSX.Element;
30
31
  export declare const HERO_SLIDE_SEEDS: Record<string, unknown>[];
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as j}from"react/jsx-runtime";import{createContext as N,useContext as k}from"react";import H from"./HeroPoster.js";import{resolveMedia as o}from"../lib/media.js";import{heroPhoneStackStyle as z}from"../lib/hero-phone-stack.js";import{heroTextureGradient as C,heroTextureShown as D}from"../lib/hero-texture.js";import{ON_MEDIA_INK_STYLE as M}from"../lib/content/ink.js";const T=N({});function V({name:i,process:t,mediaType:u="video",mediaSrc:s,videoSpeed:a,poster:l,objectPosition:f,tintColor:x="#000000",tintOpacity:n=0,groups:d,editing:h=!1,themeClassName:p,themeStyle:y}){const{alignment:I="left",textureOpacity:c,textureOn:v,textureColor:S,quietVideo:g,phoneUpDown:w,phoneSideways:b}=k(T),r=u==="video",m=r?o(s):void 0,_=r?o(l):o(s)??o(l),E=typeof a=="number"?a/100:1;return j("section",{className:p?`relative h-full w-full overflow-hidden ${p}`:"relative h-full w-full overflow-hidden",style:y,"data-slide-name":i??"","data-slide-process":t??"","data-slide-media":m?"video":"still",children:[e(H,{videoSrc:m,posterSrc:_,showVideo:r,playbackRate:E,objectPosition:f,quiet:g}),n>0&&e("div",{className:"absolute inset-0 z-[2]",style:{background:x,opacity:Math.min(Math.max(n,0),100)/100}}),D(v)&&e("div",{className:"absolute inset-0 z-[2]",style:{background:C(S),...c!==void 0?{opacity:c/100}:null}}),e("div",{className:["sf-hero-group-layer absolute inset-0 z-[3] mx-auto max-w-[min(var(--sf-page-cap,var(--sf-site-width,1600px)),var(--sf-site-width,1600px))] px-[var(--sf-site-gutter,40px)] pt-[140px] pb-14",h?"sf-hero-group-layer-edit":""].filter(Boolean).join(" "),style:{...M,...z(w,b)},children:d&&e(d,{className:"sf-hero-group-zone",minEmptyHeight:160})})]})}const B=Array.from({length:3},(i,t)=>({name:`Slide ${t+1}`,process:"Category",mediaType:"image",mediaVideo:"",poster:""}));export{B as HERO_SLIDE_SEEDS,T as HeroSlideStyleContext,V as default};
1
+ "use client";import{jsx as e,jsxs as N}from"react/jsx-runtime";import{createContext as k,useContext as H}from"react";import P from"./HeroPoster.js";import{resolveMedia as t}from"../lib/media.js";import{heroPhoneStackStyle as z}from"../lib/hero-phone-stack.js";import{heroTextureGradient as C,heroTextureShown as D}from"../lib/hero-texture.js";import{ON_MEDIA_INK_STYLE as M}from"../lib/content/ink.js";const T=k({});function V({name:i,process:r,mediaType:u="video",mediaSrc:s,videoSpeed:a,poster:n,objectPosition:f,objectPositionPhone:h,tintColor:x="#000000",tintOpacity:l=0,groups:d,editing:y=!1,themeClassName:p,themeStyle:v}){const{alignment:I="left",textureOpacity:c,textureOn:S,textureColor:g,quietVideo:b,phoneUpDown:w,phoneSideways:_}=H(T),o=u==="video",m=o?t(s):void 0,j=o?t(n):t(s)??t(n),E=typeof a=="number"?a/100:1;return N("section",{className:p?`relative h-full w-full overflow-hidden ${p}`:"relative h-full w-full overflow-hidden",style:v,"data-slide-name":i??"","data-slide-process":r??"","data-slide-media":m?"video":"still",children:[e(P,{videoSrc:m,posterSrc:j,showVideo:o,playbackRate:E,objectPosition:f,objectPositionPhone:o?void 0:h,quiet:b}),l>0&&e("div",{className:"absolute inset-0 z-[2]",style:{background:x,opacity:Math.min(Math.max(l,0),100)/100}}),D(S)&&e("div",{className:"absolute inset-0 z-[2]",style:{background:C(g),...c!==void 0?{opacity:c/100}:null}}),e("div",{className:["sf-hero-group-layer absolute inset-0 z-[3] mx-auto max-w-[min(var(--sf-page-cap,var(--sf-site-width,1600px)),var(--sf-site-width,1600px))] px-[var(--sf-site-gutter,40px)] pt-[140px] pb-14",y?"sf-hero-group-layer-edit":""].filter(Boolean).join(" "),style:{...M,...z(w,_)},children:d&&e(d,{className:"sf-hero-group-zone",minEmptyHeight:160})})]})}const K=Array.from({length:3},(i,r)=>({name:`Slide ${r+1}`,process:"Category",mediaType:"image",mediaVideo:"",poster:""}));export{K as HERO_SLIDE_SEEDS,T as HeroSlideStyleContext,V as default};
@@ -0,0 +1,13 @@
1
+ export declare function HeroVideoBackdrop({ youTubeId, ownPoster, background, editing, }: {
2
+ youTubeId: string | null;
3
+ ownPoster: boolean;
4
+ background: boolean;
5
+ editing: boolean;
6
+ }): import("react").JSX.Element | null;
7
+ export declare function HeroVideoPlayer({ youTubeId, fileSrc, playing, onPlay, editing, }: {
8
+ youTubeId: string | null;
9
+ fileSrc?: string;
10
+ playing: boolean;
11
+ onPlay: () => void;
12
+ editing: boolean;
13
+ }): import("react").JSX.Element | null;
@@ -0,0 +1 @@
1
+ "use client";import{jsx as t,Fragment as m,jsxs as f}from"react/jsx-runtime";import{useEffect as p,useState as d}from"react";import{efficientLooks as b}from"efficient-shell/icons/efficient-looks";import{PLAY_VIDEO_LABEL as s,youTubeCoverFallbackUrl as h,youTubeCoverUrl as g,youTubeEmbedUrl as i}from"../lib/hero-video.js";const c=b.looks?.solid?.play;function y({youTubeId:e,ownPoster:l,background:a,editing:n}){const[r,o]=d("large");return p(()=>o("large"),[e]),e?f(m,{children:[!l&&r!=="none"&&t("img",{src:r==="large"?g(e):h(e),alt:"",className:"absolute inset-0 z-[2] h-full w-full object-cover",onLoad:u=>{r==="large"&&u.currentTarget.naturalWidth<=120&&o("small")},onError:()=>o(r==="large"?"small":"none")},`${e}-${r}`),a&&!n&&t("div",{className:"pointer-events-none absolute inset-0 z-[3] overflow-hidden [container-type:size]","aria-hidden":"true",children:t("iframe",{src:i(e,"background"),title:"",tabIndex:-1,allow:"autoplay; encrypted-media; picture-in-picture",className:"absolute left-1/2 top-1/2 h-[max(100%,56.25cqw)] w-[max(100%,177.78cqh)] -translate-x-1/2 -translate-y-1/2 border-0"})})]}):null}function z({youTubeId:e,fileSrc:l,playing:a,onPlay:n,editing:r}){return!e&&!l?null:a&&!r?e?t("iframe",{src:i(e,"click"),title:s,allow:"autoplay; encrypted-media; picture-in-picture; fullscreen",allowFullScreen:!0,className:"absolute inset-0 z-[6] h-full w-full border-0 bg-black"}):t("video",{src:l,controls:!0,autoPlay:!0,playsInline:!0,className:"absolute inset-0 z-[6] h-full w-full bg-black object-contain"}):t("button",{type:"button","aria-label":s,onClick:r?void 0:n,className:`absolute left-1/2 top-1/2 z-[4] grid h-16 w-16 -translate-x-1/2 -translate-y-1/2 place-items-center rounded-full bg-btn text-btn-ink shadow-lg transition-transform motion-reduce:transition-none ${r?"pointer-events-none":"cursor-pointer hover:scale-105"}`,children:c?t(c,{size:28}):null})}export{y as HeroVideoBackdrop,z as HeroVideoPlayer};
@@ -11,8 +11,9 @@ interface ImageBlockProps {
11
11
  href?: string;
12
12
  fit?: ImageFit;
13
13
  focal?: string;
14
+ focalPhone?: string;
14
15
  corners?: number;
15
16
  cornerSides?: string[] | null;
16
17
  }
17
- export default function ImageBlock({ src, alt, aspect, contained, grayscale, href, width, fit, focal, corners, cornerSides, }: ImageBlockProps): import("react").JSX.Element;
18
+ export default function ImageBlock({ src, alt, aspect, contained, grayscale, href, width, fit, focal, focalPhone, corners, cornerSides, }: ImageBlockProps): import("react").JSX.Element;
18
19
  export {};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{SiteLink as k}from"../lib/site-runtime.js";import v from"./BlockFrame.js";import{useSitePhotography as x}from"./SitePhotographyContext.js";import{media as I}from"../lib/media.js";import{CONTENT_SIZES as w,sizedImage as j}from"../lib/sized-image.js";import{imageCornerStyle as C}from"../lib/content/image-corners.js";import{imageFitClass as z,imageIsCropped as F,parseImageFit as T}from"../lib/content/image-fit.js";import{resolveImageTreatment as $}from"../lib/content/image-treatment.js";import{imageWidthStyle as E}from"../lib/content/image-width.js";const P={auto:"","21/9":"aspect-[21/9]","16/9":"aspect-[16/9]","4/3":"aspect-[4/3]","1/1":"aspect-square"};function B({src:t,alt:d,aspect:o,contained:p,grayscale:h,href:u,width:g,fit:y,focal:i,corners:S,cornerSides:N}){const l=$(h,x()),m=E(g),c=T(y,"cover"),n=C(S,N),f={...l.style??{},...i&&F(o,c)?{objectPosition:i}:{}},r=t?j(I(t)):null,a=t&&r?e("img",{src:r.src,...r.srcSet?{srcSet:r.srcSet,sizes:w}:{},alt:d,className:`h-full w-full ${o==="auto"?"":z(c)}${l.className?` ${l.className}`:""}`,...Object.keys(f).length?{style:f}:{}}):e("div",{className:"flex aspect-[16/9] items-center justify-center border border-dashed border-line font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.2em] text-fg-dim",children:"Image — set a path"}),s=(u??"").trim(),b=s&&t?s.startsWith("/")?e(k,{href:s,className:"block h-full w-full",children:a}):e("a",{href:s,className:"block h-full w-full",children:a}):a;return e(v,{contained:p,className:"py-6",children:e("figure",{...m?{style:m}:{},children:e("div",{className:`relative w-full overflow-hidden bg-surface ${P[o]}`,...n?{style:n}:{},children:b})})})}export{B as default};
1
+ import{jsx as e}from"react/jsx-runtime";import{SiteLink as I}from"../lib/site-runtime.js";import w from"./BlockFrame.js";import{useSitePhotography as $}from"./SitePhotographyContext.js";import{media as j}from"../lib/media.js";import{CONTENT_SIZES as C,sizedImage as F}from"../lib/sized-image.js";import{imageCornerStyle as z}from"../lib/content/image-corners.js";import{imageFitClass as T,imageIsCropped as E,parseImageFit as P}from"../lib/content/image-fit.js";import{resolveImageTreatment as B}from"../lib/content/image-treatment.js";import{imageWidthStyle as L}from"../lib/content/image-width.js";import{phoneFocus as O}from"../lib/content/phone-focus.js";const W={auto:"","21/9":"aspect-[21/9]","16/9":"aspect-[16/9]","4/3":"aspect-[4/3]","1/1":"aspect-square"};function _({src:t,alt:h,aspect:o,contained:u,grayscale:g,href:y,width:S,fit:N,focal:m,focalPhone:b,corners:k,cornerSides:v}){const l=B(g,$()),c=L(S),n=P(N,"cover"),f=z(k,v),d=E(o,n),a=O(d?b:void 0),p={...l.style??{},...m&&d?{objectPosition:m}:{},...a.style},s=t?F(j(t)):null,i=t&&s?e("img",{src:s.src,...s.srcSet?{srcSet:s.srcSet,sizes:C}:{},alt:h,className:`h-full w-full ${o==="auto"?"":T(n)}${l.className?` ${l.className}`:""}${a.className?` ${a.className}`:""}`,...Object.keys(p).length?{style:p}:{}}):e("div",{className:"flex aspect-[16/9] items-center justify-center border border-dashed border-line font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.2em] text-fg-dim",children:"Image — set a path"}),r=(y??"").trim(),x=r&&t?r.startsWith("/")?e(I,{href:r,className:"block h-full w-full",children:i}):e("a",{href:r,className:"block h-full w-full",children:i}):i;return e(w,{contained:u,className:"py-6",children:e("figure",{...c?{style:c}:{},children:e("div",{className:`relative w-full overflow-hidden bg-surface ${W[o]}`,...f?{style:f}:{},children:x})})})}export{_ as default};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as c,Fragment as h}from"react/jsx-runtime";import{SiteLink as u}from"../lib/site-runtime.js";import b from"./SectionEyebrow.js";import{renderGold as v,renderHeadline as k}from"./goldPhrases.js";import{say as N}from"../lib/editor-words.js";function y({look:x,eyebrow:t,title:s,items:d,columns:f,editing:i=!1}={}){const g=Math.min(4,Math.max(2,f??3)),n=(d??[]).filter(r=>i||(r.label??"").trim()),o=!!(t??"").trim()||!!(s??"").trim();return!i&&!o&&n.length===0?null:e("section",{className:"relative z-[2] border-y border-line bg-surface",children:c("div",{className:"mx-auto max-w-[var(--sf-site-width,1600px)] px-[var(--sf-site-gutter,40px)] py-[76px] max-[960px]:px-[min(24px,var(--sf-site-gutter,40px))]",children:[o&&c("div",{className:"mb-11 flex flex-wrap items-baseline gap-5 max-[800px]:mb-8",children:[(t??"").trim()&&e(b,{text:t??"",look:x}),(s??"").trim()&&e("h2",{className:"font-heading2 text-[length:min(var(--size-headingMedium,44px),var(--sf-heading-max,9999px))] font-medium uppercase leading-none tracking-[-0.02em] text-fg max-[800px]:text-[length:min(var(--size-headingMedium,32px),var(--sf-heading-max,9999px))]",children:k(s??"",!1)})]}),n.length>0&&e("div",{className:"sf-card grid grid-cols-1 gap-px border border-line bg-line min-[700px]:[grid-template-columns:repeat(var(--kf-cols),minmax(0,1fr))]",style:{"--kf-cols":String(g)},children:n.map((r,l)=>{const m=c(h,{children:[e("span",{"aria-hidden":!0,className:"h-[9px] w-[9px] flex-shrink-0 rotate-45 bg-accent"}),e("span",{className:"font-display text-[length:var(--size-body,17px)] font-medium uppercase tracking-[0.06em] text-fg transition-colors group-hover/kf:text-accent",children:v((r.label??"").trim()||N("Feature"))})]}),a=(r.href??"").trim();if(a&&!i){const p="group/kf flex items-center gap-4 bg-bg px-7 py-[30px] transition-colors hover:bg-surface";return a.startsWith("/")?e(u,{href:a,className:p,children:m},l):e("a",{href:a,className:p,children:m},l)}return e("div",{className:"flex items-center gap-4 bg-bg px-7 py-[30px]",children:m},l)})})]})})}export{y as default};
1
+ import{jsx as e,jsxs as o,Fragment as u}from"react/jsx-runtime";import{SiteLink as b}from"../lib/site-runtime.js";import v from"./SectionEyebrow.js";import{renderGold as k,renderHeadline as y}from"./goldPhrases.js";import{say as N}from"../lib/editor-words.js";const c={headingMediumUpTo800:"max-[800px]:text-[length:min(var(--size-headingMedium,32px),var(--sf-heading-max,9999px))]",headingMedium:"text-[length:min(var(--size-headingMedium,44px),var(--sf-heading-max,9999px))]",body:"text-[length:var(--size-body,17px)]"};function M({look:x,eyebrow:t,title:s,items:f,columns:g,editing:i=!1}={}){const h=Math.min(4,Math.max(2,g??3)),n=(f??[]).filter(r=>i||(r.label??"").trim()),d=!!(t??"").trim()||!!(s??"").trim();return!i&&!d&&n.length===0?null:e("section",{className:"relative z-[2] border-y border-line bg-surface",children:o("div",{className:"mx-auto max-w-[var(--sf-site-width,1600px)] px-[var(--sf-site-gutter,40px)] py-[76px] max-[960px]:px-[min(24px,var(--sf-site-gutter,40px))]",children:[d&&o("div",{className:"mb-11 flex flex-wrap items-baseline gap-5 max-[800px]:mb-8",children:[(t??"").trim()&&e(v,{text:t??"",look:x}),(s??"").trim()&&e("h2",{className:`font-heading2 ${c.headingMedium} font-medium uppercase leading-none tracking-[-0.02em] text-fg ${c.headingMediumUpTo800}`,children:y(s??"",!1)})]}),n.length>0&&e("div",{className:"sf-card grid grid-cols-1 gap-px border border-line bg-line min-[700px]:[grid-template-columns:repeat(var(--kf-cols),minmax(0,1fr))]",style:{"--kf-cols":String(h)},children:n.map((r,m)=>{const l=o(u,{children:[e("span",{"aria-hidden":!0,className:"h-[9px] w-[9px] flex-shrink-0 rotate-45 bg-accent"}),e("span",{className:`font-display ${c.body} font-medium uppercase tracking-[0.06em] text-fg transition-colors group-hover/kf:text-accent`,children:k((r.label??"").trim()||N("Feature"))})]}),a=(r.href??"").trim();if(a&&!i){const p="group/kf flex items-center gap-4 bg-bg px-7 py-[30px] transition-colors hover:bg-surface";return a.startsWith("/")?e(b,{href:a,className:p,children:l},m):e("a",{href:a,className:p,children:l},m)}return e("div",{className:"flex items-center gap-4 bg-bg px-7 py-[30px]",children:l},m)})})]})})}export{M as default};
@@ -1 +1 @@
1
- import{jsx as n,jsxs as t}from"react/jsx-runtime";function i({groupKey:s,name:e,count:a}){return t("div",{className:"mb-5 flex items-end justify-between gap-4 border-b border-line pb-4",children:[n("span",{className:"font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.3em] text-accent",children:s}),e?n("span",{className:"font-heading3 text-[length:var(--size-headingSmall,24px)] font-medium uppercase tracking-[-0.01em]",children:e}):null,t("span",{className:"font-mono text-[length:var(--size-label,12px)] uppercase tracking-[0.22em] text-fg-dim",children:[a," location",a===1?"":"s"]})]})}export{i as LocationGroupHeader};
1
+ import{jsx as n,jsxs as t}from"react/jsx-runtime";const e={headingSmall:"text-[length:var(--size-headingSmall,24px)]",labelSmall:"text-[length:var(--size-label,12px)]",labelLarge:"text-[length:var(--size-label,13px)]"};function i({groupKey:s,name:a,count:l}){return t("div",{className:"mb-5 flex items-end justify-between gap-4 border-b border-line pb-4",children:[n("span",{className:`font-mono ${e.labelLarge} uppercase tracking-[0.3em] text-accent`,children:s}),a?n("span",{className:`font-heading3 ${e.headingSmall} font-medium uppercase tracking-[-0.01em]`,children:a}):null,t("span",{className:`font-mono ${e.labelSmall} uppercase tracking-[0.22em] text-fg-dim`,children:[l," location",l===1?"":"s"]})]})}export{i as LocationGroupHeader};
@@ -1 +1 @@
1
- import{jsx as t,jsxs as p}from"react/jsx-runtime";import f from"./BlockFrame.js";import{renderChrome as x,renderHeadline as u}from"./goldPhrases.js";import{media as d}from"../lib/media.js";import{sizedImage as h}from"../lib/sized-image.js";function y({items:r,contained:e,heading:s,columns:n,grayscale:c,logoHeight:o,bandPadding:l}){const i=n!=null?{flex:`0 0 calc((100% - ${(n-1)*3.5}rem) / ${n})`}:void 0;return p(f,{contained:e,className:l==null?"py-10":"",style:l==null?void 0:{paddingTop:`${l}px`,paddingBottom:`${l}px`},children:[s!=null&&s!==""?t("h2",{className:"mb-8 text-center font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.2em] text-fg-dim",children:u(s,!1)}):null,t("div",{className:"flex flex-wrap items-center justify-center gap-x-14 gap-y-8",children:(r??[]).map((a,m)=>t("div",{className:"text-center",style:i,children:a.src?t("img",{...g(d(a.src)),alt:a.alt,className:["mx-auto w-auto opacity-60 transition-opacity hover:opacity-100",o==null?"h-7":"",c===!1?"":"grayscale"].filter(Boolean).join(" "),style:o==null?void 0:{height:`${o}px`}}):t("span",{className:"font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.2em] text-fg-dim",children:x(a.alt||"Logo")})},m))})]})}function g(r){const e=h(r,{fallbackWidth:640,maxWidth:960});return e.srcSet?{src:e.src,srcSet:e.srcSet,sizes:"240px"}:{src:r}}export{y as default};
1
+ import{jsx as t,jsxs as f}from"react/jsx-runtime";import x from"./BlockFrame.js";import{renderChrome as u,renderHeadline as d}from"./goldPhrases.js";import{media as y}from"../lib/media.js";import{sizedImage as h}from"../lib/sized-image.js";const c={label:"text-[length:var(--size-label,13px)]"};function g({items:l,contained:e,heading:s,columns:n,grayscale:i,logoHeight:o,bandPadding:a}){const m=n!=null?{flex:`0 0 calc((100% - ${(n-1)*3.5}rem) / ${n})`}:void 0;return f(x,{contained:e,className:a==null?"py-10":"",style:a==null?void 0:{paddingTop:`${a}px`,paddingBottom:`${a}px`},children:[s!=null&&s!==""?t("h2",{className:`mb-8 text-center font-mono ${c.label} uppercase tracking-[0.2em] text-fg-dim`,children:d(s,!1)}):null,t("div",{className:"flex flex-wrap items-center justify-center gap-x-14 gap-y-8",children:(l??[]).map((r,p)=>t("div",{className:"text-center",style:m,children:r.src?t("img",{...$(y(r.src)),alt:r.alt,className:["mx-auto w-auto opacity-60 transition-opacity hover:opacity-100",o==null?"h-7":"",i===!1?"":"grayscale"].filter(Boolean).join(" "),style:o==null?void 0:{height:`${o}px`}}):t("span",{className:`font-mono ${c.label} uppercase tracking-[0.2em] text-fg-dim`,children:u(r.alt||"Logo")})},p))})]})}function $(l){const e=h(l,{fallbackWidth:640,maxWidth:960});return e.srcSet?{src:e.src,srcSet:e.srcSet,sizes:"240px"}:{src:l}}export{g as default};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as r,Fragment as c}from"react/jsx-runtime";import{sectionRunsFullWidth as B}from"../lib/content/section-width.js";import{Fragment as N}from"react";import{SiteLink as S}from"../lib/site-runtime.js";import{stripMarkup as E}from"../lib/markup.js";import L from"./EditorialSectionHead.js";import C from"./Placeholder.js";import G from"./SectionEyebrow.js";import{renderGold as t,renderHeadline as z}from"./goldPhrases.js";function M({headNum:k,headTitle:m,headDesc:d,category:f,metaMiddle:g,readLabel:b,title:n,dek:h,quote:i,quoteAttribution:l,ctaText:u,ctaHref:w,image:j,imageLabel:v,metaPublished:s,metaReads:p,omitHead:x=!1,...F}){const y=[f?e("span",{className:"text-accent",children:t(f)}):null,g?e("span",{children:t(g)}):null,b?e("span",{children:t(b)}):null].filter(Boolean),_=!!s||!!p;return r("section",{className:B(F)?x?"border-b border-line px-[var(--sf-site-gutter,40px)] pt-0 pb-[120px] max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[1100px]:pt-0 max-[1100px]:pb-20":"border-b border-line px-[var(--sf-site-gutter,40px)] py-[120px] max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[1100px]:py-20":x?"mx-auto max-w-[var(--sf-site-width,1600px)] border-b border-line px-[var(--sf-site-gutter,40px)] pt-0 pb-[120px] max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[1100px]:pt-0 max-[1100px]:pb-20":"mx-auto max-w-[var(--sf-site-width,1600px)] border-b border-line px-[var(--sf-site-gutter,40px)] py-[120px] max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[1100px]:py-20",children:[x?null:e(L,{num:k,title:m?z(m,!0):void 0,desc:d?t(d):void 0}),r("article",{className:"sf-card grid min-h-[640px] grid-cols-[1fr_1.2fr] border border-line max-[1100px]:grid-cols-1",children:[r("div",{className:"flex flex-col justify-center gap-7 border-r border-line bg-surface px-14 py-16 max-[1100px]:border-r-0 max-[1100px]:border-b max-[1100px]:px-7 max-[1100px]:py-12",children:[y.length>0&&e("div",{className:"flex items-center gap-3.5 font-mono text-[length:var(--size-label,12px)] uppercase tracking-[0.3em] text-fg-dim",children:y.map((o,a)=>r(N,{children:[a>0&&e("span",{className:"opacity-40",children:"·"}),o]},a))}),n&&e("h2",{className:"font-heading2 text-[length:min(var(--size-headingMedium,clamp(36px,4.2vw,68px)),var(--sf-heading-max,9999px))] font-medium uppercase leading-[0.95] tracking-[-0.035em]",children:z(n,!0)}),h&&e("p",{className:"font-serif text-[length:var(--size-body,22px)] italic leading-[1.45] text-fg",children:t(h)}),(i||l)&&r("blockquote",{className:"max-w-[520px] border-l-2 border-accent py-1.5 pl-[22px] font-serif text-[length:var(--size-body,17px)] italic leading-[1.6] text-fg-dim",children:[i&&r(c,{children:["“",t(i),"”"]}),l&&e("strong",{className:"mt-2.5 block font-display text-[length:var(--size-body,14px)] font-normal not-italic uppercase tracking-[0.22em] text-fg",children:t(l)})]}),u&&r(S,{href:w||"#",className:"inline-flex items-center gap-3.5 self-start border border-btn px-7 py-4 font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.3em] text-btn transition-colors hover:bg-btn hover:text-btn-ink",children:[t(u)," ",e("span",{children:"→"})]})]}),r("div",{className:"relative overflow-hidden bg-surface-2 max-[1100px]:aspect-[4/3]",children:[e(C,{label:"long-read",src:j||void 0,alt:E(n||"Long read"),sizes:"(max-width: 1100px) 100vw, 56vw"}),e("div",{className:"pointer-events-none absolute inset-0 z-[1]",style:{background:"linear-gradient(180deg, rgba(10,10,10,0.55) 0%, transparent 25%, transparent 60%, rgba(10,10,10,0.7) 100%)"}}),v&&e(G,{text:v,size:12,className:"absolute right-6 top-6 z-[2]"}),_&&e("div",{className:"absolute bottom-6 left-6 z-[2] font-mono text-[length:var(--size-label,12px)] uppercase leading-[1.8] tracking-[0.22em] text-overlay-fg",children:[s?r(c,{children:[e("strong",{className:"font-normal text-accent",children:"Published"})," ",t(s)]}):null,p?r(c,{children:[e("strong",{className:"font-normal text-accent",children:"Reads in"})," ",t(p)]}):null].filter(Boolean).map((o,a)=>r(N,{children:[a>0&&e("br",{}),o]},a))})]})]})]})}export{M as default};
1
+ import{jsx as e,jsxs as r,Fragment as d}from"react/jsx-runtime";import{sectionRunsFullWidth as _}from"../lib/content/section-width.js";import{Fragment as k}from"react";import{SiteLink as E}from"../lib/site-runtime.js";import{stripMarkup as F}from"../lib/markup.js";import B from"./EditorialSectionHead.js";import C from"./Placeholder.js";import G from"./SectionEyebrow.js";import{renderGold as a,renderHeadline as w}from"./goldPhrases.js";const t={bodySmall:"text-[length:var(--size-body,14px)]",body:"text-[length:var(--size-body,17px)]",bodyLarge:"text-[length:var(--size-body,22px)]",labelSmall:"text-[length:var(--size-label,12px)]",labelLarge:"text-[length:var(--size-label,13px)]"};function I({headNum:z,headTitle:c,headDesc:f,category:g,metaMiddle:b,readLabel:h,title:l,dek:u,quote:i,quoteAttribution:s,ctaText:v,ctaHref:S,image:L,imageLabel:y,metaPublished:p,metaReads:o,omitHead:x=!1,...$}){const N=[g?e("span",{className:"text-accent",children:a(g)}):null,b?e("span",{children:a(b)}):null,h?e("span",{children:a(h)}):null].filter(Boolean),j=!!p||!!o;return r("section",{className:_($)?x?"border-b border-line px-[var(--sf-site-gutter,40px)] pt-0 pb-[120px] max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[1100px]:pt-0 max-[1100px]:pb-20":"border-b border-line px-[var(--sf-site-gutter,40px)] py-[120px] max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[1100px]:py-20":x?"mx-auto max-w-[var(--sf-site-width,1600px)] border-b border-line px-[var(--sf-site-gutter,40px)] pt-0 pb-[120px] max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[1100px]:pt-0 max-[1100px]:pb-20":"mx-auto max-w-[var(--sf-site-width,1600px)] border-b border-line px-[var(--sf-site-gutter,40px)] py-[120px] max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[1100px]:py-20",children:[x?null:e(B,{num:z,title:c?w(c,!0):void 0,desc:f?a(f):void 0}),r("article",{className:"sf-card grid min-h-[640px] grid-cols-[1fr_1.2fr] border border-line max-[1100px]:grid-cols-1",children:[r("div",{className:"flex flex-col justify-center gap-7 border-r border-line bg-surface px-14 py-16 max-[1100px]:border-r-0 max-[1100px]:border-b max-[1100px]:px-7 max-[1100px]:py-12",children:[N.length>0&&e("div",{className:`flex items-center gap-3.5 font-mono ${t.labelSmall} uppercase tracking-[0.3em] text-fg-dim`,children:N.map((m,n)=>r(k,{children:[n>0&&e("span",{className:"opacity-40",children:"·"}),m]},n))}),l&&e("h2",{className:"font-heading2 text-[length:min(var(--size-headingMedium,clamp(36px,4.2vw,68px)),var(--sf-heading-max,9999px))] font-medium uppercase leading-[0.95] tracking-[-0.035em]",children:w(l,!0)}),u&&e("p",{className:`font-serif ${t.bodyLarge} italic leading-[1.45] text-fg`,children:a(u)}),(i||s)&&r("blockquote",{className:`max-w-[520px] border-l-2 border-accent py-1.5 pl-[22px] font-serif ${t.body} italic leading-[1.6] text-fg-dim`,children:[i&&r(d,{children:["“",a(i),"”"]}),s&&e("strong",{className:`mt-2.5 block font-display ${t.bodySmall} font-normal not-italic uppercase tracking-[0.22em] text-fg`,children:a(s)})]}),v&&r(E,{href:S||"#",className:`inline-flex items-center gap-3.5 self-start border border-btn px-7 py-4 font-mono ${t.labelLarge} uppercase tracking-[0.3em] text-btn transition-colors hover:bg-btn hover:text-btn-ink`,children:[a(v)," ",e("span",{children:"→"})]})]}),r("div",{className:"relative overflow-hidden bg-surface-2 max-[1100px]:aspect-[4/3]",children:[e(C,{label:"long-read",src:L||void 0,alt:F(l||"Long read"),sizes:"(max-width: 1100px) 100vw, 56vw"}),e("div",{className:"pointer-events-none absolute inset-0 z-[1]",style:{background:"linear-gradient(180deg, rgba(10,10,10,0.55) 0%, transparent 25%, transparent 60%, rgba(10,10,10,0.7) 100%)"}}),y&&e(G,{text:y,size:12,className:"absolute right-6 top-6 z-[2]"}),j&&e("div",{className:`absolute bottom-6 left-6 z-[2] font-mono ${t.labelSmall} uppercase leading-[1.8] tracking-[0.22em] text-overlay-fg`,children:[p?r(d,{children:[e("strong",{className:"font-normal text-accent",children:"Published"})," ",a(p)]}):null,o?r(d,{children:[e("strong",{className:"font-normal text-accent",children:"Reads in"})," ",a(o)]}):null].filter(Boolean).map((m,n)=>r(k,{children:[n>0&&e("br",{}),m]},n))})]})]})]})}export{I as default};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as m}from"react/jsx-runtime";import u from"./AnimatedStat.js";import h from"./Placeholder.js";import{useSitePhotography as v}from"./SitePhotographyContext.js";import b from"./SectionEyebrow.js";import{renderGold as y,renderHeadline as w,splitParagraphs as j}from"./goldPhrases.js";import{resolveImageTreatment as N}from"../lib/content/image-treatment.js";import{sectionRunsFullWidth as _}from"../lib/content/section-width.js";function z({eyebrow:s,heading:o,body:x,stats:d,imageSrc:p,grayscale:c,...f}={}){const g=N(c,v()),l=s||null,i=o||null,n=x||null,r=(d??[]).filter(a=>(a.value??"").trim()!==""||(a.label??"").trim()!=="");return e("section",{className:"relative z-[2] bg-bg p-0",children:m("div",{className:"grid h-screen min-h-[100vh] grid-cols-2 border-y border-line max-[960px]:h-auto max-[960px]:grid-cols-1",children:[e("div",{className:"flex flex-col justify-center border-r border-line px-[var(--sf-site-gutter,40px)] py-[100px] max-[960px]:order-2 max-[960px]:border-r-0 max-[960px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[960px]:py-[60px]",children:m("div",{className:_(f)?"flex w-full flex-col gap-7":"ml-auto flex w-full flex-col gap-7 max-w-[calc(var(--sf-site-width,1600px)/2_-_var(--sf-site-gutter,40px)*2_-_1px)] max-[960px]:ml-0 max-[960px]:max-w-none",children:[l!==null&&e(b,{text:l,size:14}),i!==null&&e("h2",{className:"font-heading2 text-[length:min(var(--size-headingMedium,56px),var(--sf-heading-max,9999px))] font-normal leading-[1.05] tracking-[-0.03em] max-[800px]:text-[length:min(var(--size-headingMedium,36px),var(--sf-heading-max,9999px))] max-[800px]:leading-[1]",children:w(i,!0)}),n!==null&&j(n).map((a,t)=>e("p",{className:"max-w-[520px] text-[length:var(--size-body,16px)] leading-[1.7] text-fg-dim",children:y(a)},t)),r.length>0&&e("div",{className:"mt-4 grid max-w-[520px] gap-6 border-t border-line pt-7",style:{gridTemplateColumns:`repeat(${r.length}, minmax(0, 1fr))`},children:r.map((a,t)=>e(u,{target:a.value??"",label:a.label??""},t))})]})}),e("div",{className:"sf-card relative flex items-center justify-center bg-surface overflow-hidden max-[960px]:aspect-[4/3]",children:e(h,{label:"manifesto",src:p||void 0,objectFit:"cover",objectPosition:"center",treatment:g})})]})})}export{z as default};
1
+ import{jsx as e,jsxs as o}from"react/jsx-runtime";import h from"./AnimatedStat.js";import b from"./Placeholder.js";import{useSitePhotography as v}from"./SitePhotographyContext.js";import y from"./SectionEyebrow.js";import{renderGold as w,renderHeadline as j,splitParagraphs as N}from"./goldPhrases.js";import{resolveImageTreatment as M}from"../lib/content/image-treatment.js";import{sectionRunsFullWidth as _}from"../lib/content/section-width.js";const i={headingMediumUpTo800:"max-[800px]:text-[length:min(var(--size-headingMedium,36px),var(--sf-heading-max,9999px))]",headingMedium:"text-[length:min(var(--size-headingMedium,56px),var(--sf-heading-max,9999px))]",body:"text-[length:var(--size-body,16px)]"};function T({eyebrow:s,heading:d,body:x,stats:p,imageSrc:c,grayscale:f,...g}={}){const u=M(f,v()),l=s||null,n=d||null,m=x||null,r=(p??[]).filter(a=>(a.value??"").trim()!==""||(a.label??"").trim()!=="");return e("section",{className:"relative z-[2] bg-bg p-0",children:o("div",{className:"grid h-screen min-h-[100vh] grid-cols-2 border-y border-line max-[960px]:h-auto max-[960px]:grid-cols-1",children:[e("div",{className:"flex flex-col justify-center border-r border-line px-[var(--sf-site-gutter,40px)] py-[100px] max-[960px]:order-2 max-[960px]:border-r-0 max-[960px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[960px]:py-[60px]",children:o("div",{className:_(g)?"flex w-full flex-col gap-7":"ml-auto flex w-full flex-col gap-7 max-w-[calc(var(--sf-site-width,1600px)/2_-_var(--sf-site-gutter,40px)*2_-_1px)] max-[960px]:ml-0 max-[960px]:max-w-none",children:[l!==null&&e(y,{text:l,size:14}),n!==null&&e("h2",{className:`font-heading2 ${i.headingMedium} font-normal leading-[1.05] tracking-[-0.03em] ${i.headingMediumUpTo800} max-[800px]:leading-[1]`,children:j(n,!0)}),m!==null&&N(m).map((a,t)=>e("p",{className:`max-w-[520px] ${i.body} leading-[1.7] text-fg-dim`,children:w(a)},t)),r.length>0&&e("div",{className:"mt-4 grid max-w-[520px] gap-6 border-t border-line pt-7",style:{gridTemplateColumns:`repeat(${r.length}, minmax(0, 1fr))`},children:r.map((a,t)=>e(h,{target:a.value??"",label:a.label??""},t))})]})}),e("div",{className:"sf-card relative flex items-center justify-center bg-surface overflow-hidden max-[960px]:aspect-[4/3]",children:e(b,{label:"manifesto",src:c||void 0,objectFit:"cover",objectPosition:"center",treatment:u})})]})})}export{T as default};
@@ -1 +1 @@
1
- import{jsx as e,Fragment as v,jsxs as a}from"react/jsx-runtime";import{sectionRunsFullWidth as u}from"../lib/content/section-width.js";import N from"./SectionEyebrow.js";import{renderGold as s,renderHeadline as w,splitParagraphs as j}from"./goldPhrases.js";function k({eyebrow:n,issueMeta:c,lead:d,issueHeading:x,issueList:g,issueTotal:l,...h}){const i=(c??[]).filter(t=>(t?.lead??"").trim()||(t?.rest??"").trim()),m=(g??[]).map(t=>t?.text??"").filter(t=>t.trim()),p=j(d??""),f=!!n||i.length>0,o=!!x||m.length>0||!!l,b=p.length>0||o;return a("section",{className:u(h)?"border-b border-line px-[var(--sf-site-gutter,40px)] pt-20 pb-10 max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[1100px]:pt-[60px] max-[1100px]:pb-8":"mx-auto max-w-[var(--sf-site-width,1600px)] border-b border-line px-[var(--sf-site-gutter,40px)] pt-20 pb-10 max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[1100px]:pt-[60px] max-[1100px]:pb-8",children:[f&&a("div",{className:"flex items-end justify-between gap-[60px] pb-8 max-[1100px]:flex-col max-[1100px]:items-start max-[1100px]:gap-4",children:[n&&e(N,{text:n,size:14,className:"pb-3.5"}),i.length>0&&e("div",{className:"pb-3.5 text-right font-mono text-[length:var(--size-label,13px)] uppercase leading-[1.8] tracking-[0.18em] text-fg-dim max-[1100px]:text-left",children:i.map((t,r)=>a("div",{children:[e("strong",{className:"font-normal text-fg",children:s(t.lead??"")}),t.rest?.trim()?a(v,{children:[" ",s(t.rest)]}):null]},r))})]}),b&&a("div",{className:"grid grid-cols-[1fr_auto] items-start gap-[60px] border-t border-line pt-8 max-[1100px]:grid-cols-1 max-[1100px]:gap-4",children:[p.length>0&&e("div",{className:"max-w-[720px]",children:p.map((t,r)=>e("p",{className:"font-heading3 text-[length:var(--size-headingSmall,20px)] leading-[1.5] tracking-[-0.005em] text-fg [&:not(:first-child)]:mt-4",children:s(t,!0)},r))}),o&&a("div",{className:"min-w-[240px] text-right font-mono text-[length:var(--size-label,13px)] uppercase leading-[1.9] tracking-[0.22em] text-fg-dim max-[1100px]:text-left",children:[x&&e("strong",{className:"mb-1.5 block font-display text-[length:var(--size-body,18px)] font-normal tracking-[-0.01em] normal-case text-fg",children:w(x,!1)}),m.map((t,r)=>a("span",{children:[s(t),e("br",{})]},r)),l&&e("span",{className:"text-accent",children:s(l)})]})]})]})}export{k as default};
1
+ import{jsx as e,Fragment as u,jsxs as a}from"react/jsx-runtime";import{sectionRunsFullWidth as N}from"../lib/content/section-width.js";import w from"./SectionEyebrow.js";import{renderGold as l,renderHeadline as j,splitParagraphs as k}from"./goldPhrases.js";const s={body:"text-[length:var(--size-body,18px)]",headingSmall:"text-[length:var(--size-headingSmall,20px)]",label:"text-[length:var(--size-label,13px)]"};function S({eyebrow:n,issueMeta:c,lead:g,issueHeading:i,issueList:h,issueTotal:x,...f}){const p=(c??[]).filter(t=>(t?.lead??"").trim()||(t?.rest??"").trim()),o=(h??[]).map(t=>t?.text??"").filter(t=>t.trim()),m=k(g??""),b=!!n||p.length>0,d=!!i||o.length>0||!!x,v=m.length>0||d;return a("section",{className:N(f)?"border-b border-line px-[var(--sf-site-gutter,40px)] pt-20 pb-10 max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[1100px]:pt-[60px] max-[1100px]:pb-8":"mx-auto max-w-[var(--sf-site-width,1600px)] border-b border-line px-[var(--sf-site-gutter,40px)] pt-20 pb-10 max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[1100px]:pt-[60px] max-[1100px]:pb-8",children:[b&&a("div",{className:"flex items-end justify-between gap-[60px] pb-8 max-[1100px]:flex-col max-[1100px]:items-start max-[1100px]:gap-4",children:[n&&e(w,{text:n,size:14,className:"pb-3.5"}),p.length>0&&e("div",{className:`pb-3.5 text-right font-mono ${s.label} uppercase leading-[1.8] tracking-[0.18em] text-fg-dim max-[1100px]:text-left`,children:p.map((t,r)=>a("div",{children:[e("strong",{className:"font-normal text-fg",children:l(t.lead??"")}),t.rest?.trim()?a(u,{children:[" ",l(t.rest)]}):null]},r))})]}),v&&a("div",{className:"grid grid-cols-[1fr_auto] items-start gap-[60px] border-t border-line pt-8 max-[1100px]:grid-cols-1 max-[1100px]:gap-4",children:[m.length>0&&e("div",{className:"max-w-[720px]",children:m.map((t,r)=>e("p",{className:`font-heading3 ${s.headingSmall} leading-[1.5] tracking-[-0.005em] text-fg [&:not(:first-child)]:mt-4`,children:l(t,!0)},r))}),d&&a("div",{className:`min-w-[240px] text-right font-mono ${s.label} uppercase leading-[1.9] tracking-[0.22em] text-fg-dim max-[1100px]:text-left`,children:[i&&e("strong",{className:`mb-1.5 block font-display ${s.body} font-normal tracking-[-0.01em] normal-case text-fg`,children:j(i,!1)}),o.map((t,r)=>a("span",{children:[l(t),e("br",{})]},r)),x&&e("span",{className:"text-accent",children:l(x)})]})]})]})}export{S as default};
@@ -4,6 +4,8 @@ interface Props {
4
4
  label: string;
5
5
  accept: string;
6
6
  placeholder?: string;
7
+ focusKey?: string;
8
+ focusWhen?: (props: Record<string, unknown>) => boolean;
7
9
  }
8
- export default function MediaUploadField({ value, onChange, label, accept, placeholder }: Props): import("react").JSX.Element;
10
+ export default function MediaUploadField({ value, onChange, label, accept, placeholder, focusKey, focusWhen }: Props): import("react").JSX.Element;
9
11
  export {};
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as w}from"react/jsx-runtime";import{SettingsField as h}from"efficient-easel/panel";import{ImageIcon as y,PlayIcon as v}from"efficient-easel/icons";import{ImageBox as N}from"efficient-easel/pick";import{useEaselStrings as B}from"efficient-easel/strings";import{useContext as F,useState as b}from"react";import{FileIntakeAlert as C,useFileIntake as O}from"efficient-shell/file-intake";import{StorefrontDocumentContext as P}from"./StorefrontDocumentContext.js";import{say as s}from"../lib/editor-words.js";import{requestMediaPick as k}from"../lib/editor-media-picker.js";import{useEditorHost as z}from"../lib/editor-host.js";import{backendOf as A}from"../lib/website-session.js";import{useEditorSession as H}from"../lib/editor-session-context.js";function L({value:x,onChange:m,label:j,accept:o,placeholder:d}){const c=z(),E=H(),I=B(),t=s(j),[a,f]=b(!1),[u,n]=b(null),i=o.startsWith("video"),p=F(P),r=O({accept:o,maxSizeBytes:A(E).media.maxUploadBytes,acceptHint:i?s("videos only"):s("images only"),multiple:!1,disabled:a,onAccept:([l])=>{n(null),f(!0),k(c,{accept:o,title:t,file:l}).then(g=>{g&&m(g.url)}).catch(()=>n(s("Couldn’t open the media picker — please try again."))).finally(()=>f(!1))}}),S=()=>(r.clearRejections(),n(null),k(c,{accept:o,title:t}).then(l=>l?.url??null));return p&&!p.capabilities.mediaEditing?e(h,{label:t,icon:i?e(v,{}):e(y,{}),children:e("div",{className:"sf-image-slot-inert",children:i?s("Templates don’t store videos — this slot stays a placeholder. Each website picks its own after it’s created."):s("Templates don’t store images — this slot stays a placeholder. Each website picks its own after it’s created.")})}):w("div",{children:[e(h,{label:t,icon:i?e(v,{}):e(y,{}),children:e("div",{className:`sf-image-drop${r.dragOver?" is-dragover":""}`,...r.zoneProps,children:e(N,{value:x,onChange:m,label:t,kind:i?"video":"image",placeholder:d===void 0?void 0:s(d),openLibrary:a?void 0:S,words:I.pick.image})})}),a&&e("div",{className:"sf-image-status",role:"status",children:s("Opening the picker…")}),u&&e("div",{className:"sf-image-status sf-image-status--error",role:"alert",children:u}),e(C,{rejections:r.rejections,className:"sf-image-status sf-image-status--error"})]})}export{L as default};
1
+ "use client";import{jsx as o}from"react/jsx-runtime";import{SettingsDefaultReset as x,SettingsField as h}from"efficient-easel/panel";import{useSelectedFields as y}from"efficient-easel/easel";import{FOCAL_DEFAULT as C}from"efficient-shell/format";import{ImageIcon as v,PlayIcon as w}from"efficient-easel/icons";import{ImageBox as F}from"efficient-easel/pick";import{useEaselStrings as I}from"efficient-easel/strings";import{useContext as L}from"react";import{StorefrontDocumentContext as B}from"./StorefrontDocumentContext.js";import{editorEaselWords as D,say as a}from"../lib/editor-words.js";import{PHONE_CLEAR as P,phoneKey as A}from"../lib/puck/phone-override.js";import{usePreviewDevice as O}from"./PreviewDeviceContext.js";import{requestMediaPick as R}from"../lib/editor-media-picker.js";import{useEditorHost as T}from"../lib/editor-host.js";import{backendOf as U}from"../lib/website-session.js";import{useEditorSession as _}from"../lib/editor-session-context.js";function j(t,d){let e=null;try{e=y()}catch{e=null}const n=O()==="mobile";if(!t||!e||d&&!d(e.values??{}))return null;const r=typeof e.values?.[t]=="string"&&e.values[t]?String(e.values[t]):C,i=A(t),m=typeof e.values?.[i]=="string"&&e.values[i]?String(e.values[i]):void 0,c=e.onChange;return{phone:n,desktop:r,own:m,focus:n?m??r:r,set:p=>c(n?i:t,p),clear:()=>c(i,P)}}function H({value:t,onChange:d,label:e,accept:n,placeholder:r,focusKey:i,focusWhen:m}){const c=T(),p=_(),b=I(),u=a(e),l=n.startsWith("video"),s=j(l?void 0:i,m),f=L(B),E=g=>R(c,{accept:n,title:u,...g?{file:g}:{}}).then(S=>S?.url??null);if(f&&!f.capabilities.mediaEditing)return o(h,{label:u,icon:l?o(w,{}):o(v,{}),children:o("div",{className:"sf-image-slot-inert",children:l?a("Templates don’t store videos — this slot stays a placeholder. Each website picks its own after it’s created."):a("Templates don’t store images — this slot stays a placeholder. Each website picks its own after it’s created.")})});const k=s?.phone&&t?o(x,{words:D()?.panel,label:a("Image focus"),changed:!!s.own,detail:a("{value} on desktop",{value:s.desktop}),onReset:s.clear}):void 0;return o(h,{label:u,icon:l?o(w,{}):o(v,{}),action:k,children:o(F,{value:t,onChange:d,label:u,kind:l?"video":"image",placeholder:r===void 0?void 0:a(r),openLibrary:E,maxSizeBytes:U(p).media.maxUploadBytes,...s?{focus:s.focus,onFocusChange:s.set}:{},words:b.pick.image})})}export{H as default};