efficient-web-builder 42.0.0 → 43.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/CHANGELOG.md +168 -0
  2. package/dist/editor/components/AnchorField.js +1 -1
  3. package/dist/editor/components/DuplicatePageDialog.js +1 -1
  4. package/dist/editor/components/MediaUploadField.d.ts +3 -1
  5. package/dist/editor/components/MediaUploadField.js +1 -1
  6. package/dist/editor/components/PagesPanel.js +1 -1
  7. package/dist/editor/components/SectionEditor.d.ts +5 -1
  8. package/dist/editor/components/SectionEditor.js +1 -1
  9. package/dist/editor/components/SectionIcon.js +1 -1
  10. package/dist/editor/components/SectionThumbnail.js +1 -1
  11. package/dist/editor/components/SiteFields.d.ts +2 -1
  12. package/dist/editor/components/SiteFields.js +1 -1
  13. package/dist/editor/components/StorefrontEditor.js +1 -1
  14. package/dist/editor/components/StylesPanel.d.ts +3 -1
  15. package/dist/editor/components/StylesPanel.js +1 -1
  16. package/dist/editor/components/WebsiteScreenParts.js +1 -1
  17. package/dist/editor/components/WebsiteSettingsPanel.d.ts +6 -1
  18. package/dist/editor/components/WebsiteSettingsPanel.js +1 -1
  19. package/dist/editor/components/useHostDocumentBridge.js +1 -1
  20. package/dist/editor/components/useLocationsTree.js +1 -1
  21. package/dist/editor/components/useSectionToBoxPass.js +1 -1
  22. package/dist/editor/components/useSocialSettings.d.ts +2 -2
  23. package/dist/editor/lib/document/ColourControl.d.ts +7 -2
  24. package/dist/editor/lib/document/ColourControl.js +1 -1
  25. package/dist/editor/lib/document/blocks/general/ButtonBlock/fields.js +1 -1
  26. package/dist/editor/lib/document/blocks/general/Flex/fields.js +1 -1
  27. package/dist/editor/lib/document/blocks/general/HeroSlide/fields.js +1 -1
  28. package/dist/editor/lib/document/blocks/general/Logos/fields.js +1 -1
  29. package/dist/editor/lib/document/blocks/general/Text/fields.js +1 -1
  30. package/dist/editor/lib/document/blocks/general/index.d.ts +2 -2
  31. package/dist/editor/lib/document/canvas-typing.js +1 -1
  32. package/dist/editor/lib/document/consent-words-field.d.ts +6 -0
  33. package/dist/editor/lib/document/consent-words-field.js +1 -0
  34. package/dist/editor/lib/document/controls.d.ts +13 -2
  35. package/dist/editor/lib/document/controls.js +1 -1
  36. package/dist/editor/lib/document/field-groups.js +1 -1
  37. package/dist/editor/lib/document/footer-blocks.js +1 -1
  38. package/dist/editor/lib/document/locked-blocks.d.ts +3 -0
  39. package/dist/editor/lib/document/locked-blocks.js +1 -1
  40. package/dist/editor/lib/document/overrides.js +1 -1
  41. package/dist/editor/lib/document/page-root-fields.d.ts +1 -0
  42. package/dist/editor/lib/document/page-root-fields.js +1 -1
  43. package/dist/editor/lib/document/section-width-fields.js +1 -1
  44. package/dist/editor/lib/document/selected-host.d.ts +2 -0
  45. package/dist/editor/lib/document/selected-host.js +1 -0
  46. package/dist/editor/lib/page-copy.js +1 -1
  47. package/dist/editor/lib/sections/section-dry-run.d.ts +2 -9
  48. package/dist/editor/lib/sections/section-dry-run.js +2 -2
  49. package/dist/format/lib/content/authored-props.js +1 -1
  50. package/dist/format/lib/content/block-sources.js +1 -1
  51. package/dist/format/lib/content/box-layout.d.ts +1 -0
  52. package/dist/format/lib/content/box-layout.js +1 -1
  53. package/dist/format/lib/content/box-shadow.d.ts +3 -0
  54. package/dist/format/lib/content/box-shadow.js +1 -0
  55. package/dist/format/lib/content/button-icon.d.ts +2 -1
  56. package/dist/format/lib/content/button-icon.js +1 -1
  57. package/dist/format/lib/content/button-look.d.ts +46 -0
  58. package/dist/format/lib/content/button-look.js +1 -0
  59. package/dist/format/lib/content/consent-banner.d.ts +21 -0
  60. package/dist/format/lib/content/consent-banner.js +1 -1
  61. package/dist/format/lib/content/contact.js +1 -1
  62. package/dist/format/lib/content/footer.d.ts +10 -0
  63. package/dist/format/lib/content/footer.js +1 -1
  64. package/dist/format/lib/content/gallery-layout.d.ts +12 -0
  65. package/dist/format/lib/content/gallery-layout.js +1 -1
  66. package/dist/format/lib/content/section-padding.d.ts +10 -0
  67. package/dist/format/lib/content/section-padding.js +1 -1
  68. package/dist/format/lib/content/section-width.d.ts +0 -4
  69. package/dist/format/lib/content/section-width.js +1 -1
  70. package/dist/format/lib/document/blocks/general/Logos/meta.d.ts +6 -0
  71. package/dist/format/lib/document/blocks/general/Logos/meta.js +1 -1
  72. package/dist/format/lib/document/blocks/general/SectionHeader/meta.js +1 -1
  73. package/dist/format/lib/document/box-footer.js +1 -1
  74. package/dist/format/lib/document/container-blocks.js +1 -1
  75. package/dist/format/lib/document/media-manifest.json +5 -3
  76. package/dist/format/lib/document/nestable-content-sections.js +1 -1
  77. package/dist/format/lib/document/passes/settings-groups.js +1 -1
  78. package/dist/format/lib/document/root-panel.d.ts +8 -0
  79. package/dist/format/lib/document/root-panel.js +1 -0
  80. package/dist/format/lib/document/section-catalog.js +1 -1
  81. package/dist/format/lib/document/source-bound-parts.js +1 -1
  82. package/dist/format/lib/editor-words-catalogue.d.ts +23 -4
  83. package/dist/format/lib/editor-words-catalogue.js +4 -4
  84. package/dist/format/lib/editor-words.js +1 -1
  85. package/dist/format/lib/hero-texture.js +1 -1
  86. package/dist/format/lib/hero-video.d.ts +7 -0
  87. package/dist/format/lib/hero-video.js +1 -1
  88. package/dist/format/lib/links/page-link-rules.js +1 -1
  89. package/dist/format/lib/non-empty-string.d.ts +1 -0
  90. package/dist/format/lib/non-empty-string.js +1 -0
  91. package/dist/format/lib/popup/look.d.ts +1 -1
  92. package/dist/format/lib/popup/look.js +1 -1
  93. package/dist/format/lib/reel.d.ts +2 -1
  94. package/dist/format/lib/reel.js +1 -1
  95. package/dist/format/lib/sections/hero-overlay.js +1 -1
  96. package/dist/format/lib/sections/logo-look.d.ts +7 -0
  97. package/dist/format/lib/sections/logo-look.js +1 -0
  98. package/dist/format/lib/sections/section-head-placement.d.ts +1 -0
  99. package/dist/format/lib/sections/section-head-placement.js +1 -1
  100. package/dist/format/lib/site-theme-row.d.ts +0 -1
  101. package/dist/format/lib/slugify.d.ts +1 -1
  102. package/dist/format/lib/slugify.js +1 -1
  103. package/dist/format/lib/theme.d.ts +2 -1
  104. package/dist/format/lib/theme.js +4 -4
  105. package/dist/render/components/BoxTabs.d.ts +2 -1
  106. package/dist/render/components/BoxTabs.js +1 -1
  107. package/dist/render/components/Btn.d.ts +1 -0
  108. package/dist/render/components/Btn.js +1 -1
  109. package/dist/render/components/ButtonBlock.d.ts +12 -1
  110. package/dist/render/components/ButtonBlock.js +1 -1
  111. package/dist/render/components/DocBody.js +5 -5
  112. package/dist/render/components/Flex.d.ts +3 -1
  113. package/dist/render/components/Flex.js +1 -1
  114. package/dist/render/components/LogoBlock.d.ts +1 -1
  115. package/dist/render/components/LogoBlock.js +1 -1
  116. package/dist/render/components/LogoWallContext.d.ts +12 -0
  117. package/dist/render/components/LogoWallContext.js +1 -0
  118. package/dist/render/components/Logos.d.ts +16 -1
  119. package/dist/render/components/Logos.js +1 -1
  120. package/dist/render/components/PaymentBadges.d.ts +3 -1
  121. package/dist/render/components/PaymentBadges.js +1 -1
  122. package/dist/render/components/PreviewHeaderContext.d.ts +1 -3
  123. package/dist/render/components/PreviewHeaderContext.js +1 -1
  124. package/dist/render/components/Reel.js +1 -1
  125. package/dist/render/components/SiteGutterFrame.d.ts +2 -1
  126. package/dist/render/components/SiteGutterFrame.js +1 -1
  127. package/dist/render/lib/document/blocks/general/ButtonBlock/render.js +1 -1
  128. package/dist/render/lib/document/blocks/general/Flex/render.js +1 -1
  129. package/dist/render/lib/document/blocks/general/HeroSlide/render.js +1 -1
  130. package/dist/render/lib/document/blocks/general/Logos/render.js +1 -1
  131. package/dist/render/lib/document/blocks/general/PaymentBadges/render.js +1 -1
  132. package/dist/render/lib/document/blocks/general/section-to-box-row-parts.d.ts +4 -1
  133. package/dist/render/lib/document/blocks/general/section-to-box-row-parts.js +1 -1
  134. package/dist/render/lib/document/blocks/general/section-to-box-rows-logos.d.ts +2 -0
  135. package/dist/render/lib/document/blocks/general/section-to-box-rows-logos.js +1 -0
  136. package/dist/render/lib/document/blocks/general/section-to-box-rows-stats.d.ts +5 -0
  137. package/dist/render/lib/document/blocks/general/section-to-box-rows-stats.js +1 -0
  138. package/dist/render/lib/document/blocks/general/section-to-box-rows.d.ts +0 -4
  139. package/dist/render/lib/document/blocks/general/section-to-box-rows.js +1 -1
  140. package/dist/render/lib/document/page-render.js +1 -1
  141. package/dist/render/lib/document/part-rows.js +1 -1
  142. package/dist/render/lib/document/passes/section-anchor.js +1 -1
  143. package/dist/render/lib/document/text-parts.js +1 -1
  144. package/dist/render/lib/sections/section-to-box.d.ts +2 -11
  145. package/dist/render/lib/sections/section-to-box.js +1 -1
  146. package/dist/render/lib/text-styles/site-text-styles.js +2 -2
  147. package/package.json +5 -5
@@ -68,6 +68,7 @@ export declare const BOX_SHARE_POINTS: readonly [{
68
68
  }];
69
69
  export type BoxShare = (typeof BOX_SHARE_POINTS)[number]["value"];
70
70
  export declare function boxShareClasses(share: unknown): string;
71
+ export declare function boxFitContentClass(share: unknown): string;
71
72
  export declare const BOX_PHONE_ROW_LABEL = "Columns";
72
73
  export declare const BOX_PHONE_ROW_MIN = 1;
73
74
  export declare const BOX_PHONE_ROW_MAX = 3;
@@ -1 +1 @@
1
- const p=[{label:"Start",value:"start"},{label:"Center",value:"center"},{label:"Space between",value:"between"},{label:"End",value:"end"}],x=[{label:"Start",value:"start"},{label:"Center",value:"center"},{label:"End",value:"end"},{label:"Stretch",value:"stretch"}],g={sectionPaddingTop:0,sectionPaddingBottom:0},_="Wrap",b=[{label:"Wrap",value:"wrap"},{label:"No wrap",value:"nowrap"}],l={start:"justify-start",center:"justify-center",between:"justify-between",end:"justify-end"},n={start:"items-start",center:"items-center",end:"items-end",stretch:"items-stretch"};function u(e,t){const r=typeof e=="string"&&e in l?l[e]:"",o=typeof t=="string"&&t in n?n[t]:"";return[r,o].filter(Boolean).join(" ")}function S(e){return e===!0||e==="wrap"?"flex-wrap":""}const O="Block widths",f=[{label:"Fit content",value:"content",weights:null},{label:"Equal",value:"equal",weights:[1,1]},{label:"Big left",value:"bigLeft",weights:[2,1]},{label:"Big right",value:"bigRight",weights:[1,2]},{label:"Bigger left",value:"biggerLeft",weights:[3,1]},{label:"Bigger right",value:"biggerRight",weights:[1,3]}],a="[&>*]:min-w-0 [&>*]:flex-1 [&>*]:basis-0",s={equal:a,bigLeft:`${a} [&>*:first-child]:min-[800px]:grow-[2]`,bigRight:`${a} [&>*:last-child]:min-[800px]:grow-[2]`,biggerLeft:`${a} [&>*:first-child]:min-[800px]:grow-[3]`,biggerRight:`${a} [&>*:last-child]:min-[800px]:grow-[3]`};function B(e){return typeof e=="string"?s[e]??"":""}const w="Columns",L=1,h=3,i={2:"max-[800px]:flex-wrap [&>*]:max-[800px]:min-w-0 [&>*]:max-[800px]:basis-[calc((100%_-_var(--sf-gap-len,0px))/2)]",3:"max-[800px]:flex-wrap [&>*]:max-[800px]:min-w-0 [&>*]:max-[800px]:basis-[calc((100%_-_var(--sf-gap-len,0px)_*_2)/3)]"};function A(e){const t=Number(e);return i[t]??"max-[800px]:flex-col"}const m="Block spacing",v=[{label:"Each block",value:"each"},{label:"Gap only",value:"gap"}],c="sf-box-gap-only";function E(e){return e==="gap"?c:""}export{x as BOX_ALIGN_POINTS,m as BOX_BLOCK_SPACING_LABEL,v as BOX_BLOCK_SPACING_POINTS,c as BOX_GAP_ONLY_CLASS,p as BOX_JUSTIFY_POINTS,w as BOX_PHONE_ROW_LABEL,h as BOX_PHONE_ROW_MAX,L as BOX_PHONE_ROW_MIN,O as BOX_SHARE_LABEL,f as BOX_SHARE_POINTS,_ as BOX_WRAP_LABEL,b as BOX_WRAP_POINTS,g as NESTED_BOX_PADDING,E as boxBlockSpacingClass,u as boxLayoutClasses,A as boxPhoneRowClasses,B as boxShareClasses,S as boxWrapClass};
1
+ const _=[{label:"Start",value:"start"},{label:"Center",value:"center"},{label:"Space between",value:"between"},{label:"End",value:"end"}],g=[{label:"Start",value:"start"},{label:"Center",value:"center"},{label:"End",value:"end"},{label:"Stretch",value:"stretch"}],b={sectionPaddingTop:0,sectionPaddingBottom:0},u="Wrap",S=[{label:"Wrap",value:"wrap"},{label:"No wrap",value:"nowrap"}],a={start:"justify-start",center:"justify-center",between:"justify-between",end:"justify-end"},l={start:"items-start",center:"items-center",end:"items-end",stretch:"items-stretch"};function O(e,t){const o=typeof e=="string"&&e in a?a[e]:"",r=typeof t=="string"&&t in l?l[t]:"";return[o,r].filter(Boolean).join(" ")}function f(e){return e===!0||e==="wrap"?"flex-wrap":""}const B="Block widths",L=[{label:"Fit content",value:"content",weights:null},{label:"Equal",value:"equal",weights:[1,1]},{label:"Big left",value:"bigLeft",weights:[2,1]},{label:"Big right",value:"bigRight",weights:[1,2]},{label:"Bigger left",value:"biggerLeft",weights:[3,1]},{label:"Bigger right",value:"biggerRight",weights:[1,3]}],n="[&>*]:min-w-0 [&>*]:flex-1 [&>*]:basis-0",s={equal:n,bigLeft:`${n} [&>*:first-child]:min-[800px]:grow-[2]`,bigRight:`${n} [&>*:last-child]:min-[800px]:grow-[2]`,biggerLeft:`${n} [&>*:first-child]:min-[800px]:grow-[3]`,biggerRight:`${n} [&>*:last-child]:min-[800px]:grow-[3]`};function i(e){return typeof e=="string"?s[e]??"":""}const c="[&>*]:min-[800px]:basis-[content]";function w(e){return i(e)===""?c:""}const h="Columns",A=1,m=3,p={2:"max-[800px]:flex-wrap [&>*]:max-[800px]:min-w-0 [&>*]:max-[800px]:basis-[calc((100%_-_var(--sf-gap-len,0px))/2)]",3:"max-[800px]:flex-wrap [&>*]:max-[800px]:min-w-0 [&>*]:max-[800px]:basis-[calc((100%_-_var(--sf-gap-len,0px)_*_2)/3)]"};function C(e){const t=Number(e);return p[t]??"max-[800px]:flex-col"}const N="Block spacing",v=[{label:"Each block",value:"each"},{label:"Gap only",value:"gap"}],x="sf-box-gap-only";function E(e){return e==="gap"?x:""}export{g as BOX_ALIGN_POINTS,N as BOX_BLOCK_SPACING_LABEL,v as BOX_BLOCK_SPACING_POINTS,x as BOX_GAP_ONLY_CLASS,_ as BOX_JUSTIFY_POINTS,h as BOX_PHONE_ROW_LABEL,m as BOX_PHONE_ROW_MAX,A as BOX_PHONE_ROW_MIN,B as BOX_SHARE_LABEL,L as BOX_SHARE_POINTS,u as BOX_WRAP_LABEL,S as BOX_WRAP_POINTS,b as NESTED_BOX_PADDING,E as boxBlockSpacingClass,w as boxFitContentClass,O as boxLayoutClasses,C as boxPhoneRowClasses,i as boxShareClasses,f as boxWrapClass};
@@ -0,0 +1,3 @@
1
+ export declare const BOX_SHADOW_ATTR = "data-sf-box-shadow";
2
+ export declare function boxShadowOn(value: unknown): boolean;
3
+ export declare function boxShadowAttrs(value: unknown): Record<string, string>;
@@ -0,0 +1 @@
1
+ const t="data-sf-box-shadow";function r(o){return o===!0}function n(o){return r(o)?{[t]:""}:{}}export{t as BOX_SHADOW_ATTR,n as boxShadowAttrs,r as boxShadowOn};
@@ -1,9 +1,10 @@
1
1
  export declare const BUTTON_ICONS: readonly ["none", "arrow-right", "arrow-long-right", "arrow-up-right", "chevron-right", "external", "cart", "bag", "tag", "email", "location", "play", "download", "search", "car"];
2
2
  export type ButtonIconChoice = (typeof BUTTON_ICONS)[number];
3
3
  export type ButtonIconGlyph = Exclude<ButtonIconChoice, "none">;
4
- export type ButtonIconSide = "before" | "after";
4
+ export type ButtonIconSide = "before" | "after" | "end";
5
5
  export type ButtonWidth = "fit" | "fill";
6
6
  export declare function storedButtonIcon(value: unknown): ButtonIconChoice | undefined;
7
7
  export declare function buttonIconChoice(icon: unknown, arrow: unknown): ButtonIconChoice;
8
8
  export declare function buttonIconSide(value: unknown): ButtonIconSide;
9
+ export declare function buttonIconAtEnd(side: unknown, width: unknown): boolean;
9
10
  export declare function buttonWidth(value: unknown): ButtonWidth;
@@ -1 +1 @@
1
- import{buttonArrowShown as o}from"./button-arrow.js";const n=["none","arrow-right","arrow-long-right","arrow-up-right","chevron-right","external","cart","bag","tag","email","location","play","download","search","car"];function e(r){return typeof r=="string"&&n.includes(r)?r:void 0}function c(r,t){return e(r)??(o(t)?"arrow-right":"none")}function u(r){return r==="before"?"before":"after"}function a(r){return r==="fill"?"fill":"fit"}export{n as BUTTON_ICONS,c as buttonIconChoice,u as buttonIconSide,a as buttonWidth,e as storedButtonIcon};
1
+ import{buttonArrowShown as o}from"./button-arrow.js";const r=["none","arrow-right","arrow-long-right","arrow-up-right","chevron-right","external","cart","bag","tag","email","location","play","download","search","car"];function e(t){return typeof t=="string"&&r.includes(t)?t:void 0}function f(t,n){return e(t)??(o(n)?"arrow-right":"none")}function i(t){return t==="before"?"before":t==="end"?"end":"after"}function a(t,n){return i(t)==="end"&&c(n)==="fill"}function c(t){return t==="fill"?"fill":"fit"}export{r as BUTTON_ICONS,a as buttonIconAtEnd,f as buttonIconChoice,i as buttonIconSide,c as buttonWidth,e as storedButtonIcon};
@@ -0,0 +1,46 @@
1
+ import type { CSSProperties } from "react";
2
+ export declare const BUTTON_PAD_KEYS: {
3
+ readonly top: "buttonPaddingTop";
4
+ readonly right: "buttonPaddingRight";
5
+ readonly bottom: "buttonPaddingBottom";
6
+ readonly left: "buttonPaddingLeft";
7
+ };
8
+ export declare const BUTTON_PAD_CLASSES = "px-6 py-4";
9
+ export declare const BUTTON_PAD_BUILT_IN: {
10
+ readonly top: number;
11
+ readonly right: number;
12
+ readonly bottom: number;
13
+ readonly left: number;
14
+ };
15
+ export declare const SITE_BUTTON_FILL = "var(--btn)";
16
+ export type ButtonLookProps = {
17
+ variant?: unknown;
18
+ buttonColor?: unknown;
19
+ buttonFillOpacity?: unknown;
20
+ buttonBorder?: unknown;
21
+ };
22
+ export declare function buttonLook(p: ButtonLookProps): {
23
+ fillOpacity: number;
24
+ border: {
25
+ width: number;
26
+ color: string;
27
+ };
28
+ changed: boolean;
29
+ };
30
+ export declare function buttonPaint(p: ButtonLookProps): CSSProperties | null;
31
+ export declare function buttonPadAttrs(p: Record<string, unknown>): {
32
+ className: string;
33
+ style: CSSProperties;
34
+ } | null;
35
+ export declare const BUTTON_WORDS_BUILT_IN_CASE = "upper";
36
+ export declare function buttonWordsSummary(style: unknown, siteStyles: readonly {
37
+ id?: unknown;
38
+ name?: unknown;
39
+ }[] | null | undefined, words: {
40
+ noStyle: string;
41
+ styleName: (v: {
42
+ kind: "heading" | "body";
43
+ n: number;
44
+ }) => string;
45
+ cases: Record<"none" | "upper" | "capitalize" | "lower", string>;
46
+ }): string;
@@ -0,0 +1 @@
1
+ import{finiteNumber as s}from"../finite-number.js";import{nonEmptyString as c}from"../non-empty-string.js";import{padSideAttrs as g}from"./section-padding.js";const i={top:"buttonPaddingTop",right:"buttonPaddingRight",bottom:"buttonPaddingBottom",left:"buttonPaddingLeft"},y="px-6 py-4",x=4,d=t=>{const o=new RegExp(`\\bp${t}-(?:\\[(\\d+)px\\]|(\\d+))`).exec(y);if(!o)throw new Error(`BUTTON_PAD_CLASSES has no p${t}`);return o[1]!==void 0?Number(o[1]):Number(o[2])*x},B={top:d("y"),right:d("x"),bottom:d("y"),left:d("x")},b="var(--btn)",T=t=>t&&typeof t=="object"&&(s(t.width)!==void 0||c(t.color))?t:void 0,P=t=>Math.round(Math.min(Math.max(t,0),100));function S(t){const o=t.variant==="ghost",n=s(t.buttonFillOpacity),r=T(t.buttonBorder),e=c(t.buttonColor);return{fillOpacity:n!==void 0?P(n):o?0:100,border:{width:s(r?.width)??1,color:c(r?.color)??e??(o?"currentColor":b)},changed:n!==void 0||r!==void 0}}function $(t){const o=S(t);if(!o.changed)return null;const n=c(t.buttonColor)??b;return{background:o.fillOpacity===0?"transparent":o.fillOpacity===100?n:`color-mix(in srgb, ${n} ${o.fillOpacity}%, transparent)`,borderWidth:o.border.width,borderStyle:"solid",borderColor:o.border.color}}function A(t){const o={top:t[i.top],right:t[i.right],bottom:t[i.bottom],left:t[i.left]},n={top:t[`${i.top}Phone`],right:t[`${i.right}Phone`],bottom:t[`${i.bottom}Phone`],left:t[`${i.left}Phone`]},{classes:r,style:e}=g(o,n);return Object.keys(e).length?{className:r.join(" "),style:e}:null}const f="upper";function I(t,o,n){const r=t&&typeof t=="object"?t:{},e=c(r.textStyle),u=e?c(o?.find(h=>h?.id===e)?.name):void 0,l=e?/^(heading|body)-(\d+)$/.exec(e):null,p=e?u||(l?n.styleName({kind:l[1],n:Number(l[2])}):e):n.noStyle,{cases:a}=n,m=c(r.case)??f;return`${p} · ${a[m]??a[f]}`}export{B as BUTTON_PAD_BUILT_IN,y as BUTTON_PAD_CLASSES,i as BUTTON_PAD_KEYS,f as BUTTON_WORDS_BUILT_IN_CASE,b as SITE_BUTTON_FILL,S as buttonLook,A as buttonPadAttrs,$ as buttonPaint,I as buttonWordsSummary};
@@ -1,3 +1,4 @@
1
+ import { type PopupLook } from "../popup/look.js";
1
2
  export declare const CONSENT_BANNER_SLUG = "consent-banner";
2
3
  export declare const CONSENT_BANNER_KIND = "consent-banner";
3
4
  export declare const CONSENT_BANNER_PAGE_TITLE = "Overlay - ConsentBanner";
@@ -15,3 +16,23 @@ export interface ConsentBannerContent {
15
16
  }
16
17
  export declare const CONSENT_BANNER_DEFAULTS: ConsentBannerContent;
17
18
  export declare function resolveConsentBannerContent(rootProps: Record<string, unknown> | undefined | null): ConsentBannerContent;
19
+ export declare function resolveConsentBannerLook(rootProps: Record<string, unknown> | undefined | null): PopupLook;
20
+ export declare const CONSENT_WORDS_PROP = "consentWords";
21
+ export declare const CONSENT_WORD_KEYS: readonly ["eyebrow", "notice", "accept", "reject", "choose"];
22
+ export type ConsentWordKey = (typeof CONSENT_WORD_KEYS)[number];
23
+ export declare function consentWordsOf(props: Record<string, unknown> | undefined | null): ConsentWordKey | null;
24
+ export declare function isConsentLocked(node: {
25
+ type?: string;
26
+ props?: Record<string, unknown>;
27
+ } | null | undefined): boolean;
28
+ interface BannerNode {
29
+ type: string;
30
+ props: Record<string, unknown>;
31
+ }
32
+ export declare function consentBannerDocument(): BannerNode[];
33
+ export declare function withConsentBannerDocument<D extends {
34
+ content?: unknown[];
35
+ }>(doc: D): D & {
36
+ content: unknown[];
37
+ };
38
+ export {};
@@ -1 +1 @@
1
- import{authoredString as e}from"./authored-props.js";const E="consent-banner",l="consent-banner",s="Overlay - ConsentBanner",N=[{value:"bar",label:"Bar"},{value:"card",label:"Card"}],u="Layout",n={layout:"bar"},a=t=>N.some(o=>o.value===t);function _(t){const o=e((t??{}).layout,n.layout);return{layout:a(o)?o:n.layout}}export{n as CONSENT_BANNER_DEFAULTS,l as CONSENT_BANNER_KIND,N as CONSENT_BANNER_LAYOUTS,u as CONSENT_BANNER_LAYOUT_LABEL,s as CONSENT_BANNER_PAGE_TITLE,E as CONSENT_BANNER_SLUG,_ as resolveConsentBannerContent};
1
+ import{authoredString as u}from"./authored-props.js";import{POPUP_LOOK_DEFAULTS as l,resolvePopupLook as p}from"../popup/look.js";const T="consent-banner",C="consent-banner",L="Overlay - ConsentBanner",i=[{value:"bar",label:"Bar"},{value:"card",label:"Card"}],S="Layout",s={layout:"bar"},N=t=>i.some(n=>n.value===t);function O(t){const n=u((t??{}).layout,s.layout);return{layout:N(n)?n:s.layout}}const b={...l,placement:"bottom-center",fullWidth:!0,width:440,tintOpacity:0,outsideClick:!1,closeButton:"none"},y={bar:{placement:"bottom-center",fullWidth:!0},card:{placement:"bottom-left",fullWidth:!1,width:440}};function m(t){const{layout:n}=O(t);return{...p(t,{...b,...y[n]}),height:"auto",tintOpacity:0,outsideClick:!1,closeButton:"none"}}const r="consentWords",_=["eyebrow","notice","accept","reject","choose"];function f(t){const n=(t??{})[r];return typeof n=="string"&&_.includes(n)?n:null}function E(t){const n=t?.props;return n?f(n)!==null?!0:Object.values(n).some(o=>Array.isArray(o)&&o.some(e=>e&&typeof e=="object"&&"props"in e&&E(e))):!1}function a(t,n){return{type:"Text",props:{id:t,text:"",[r]:n}}}function c(t,n){return{type:"ButtonBlock",props:{id:t,label:"",href:"",[r]:n}}}function B(){return[{type:"Flex",props:{id:"consent-banner",label:"Banner",direction:"column",content:[a("consent-banner-eyebrow","eyebrow"),a("consent-banner-notice","notice"),{type:"Flex",props:{id:"consent-banner-buttons",label:"Buttons",direction:"row",content:[c("consent-banner-accept","accept"),c("consent-banner-reject","reject"),c("consent-banner-choose","choose")]}}]}}]}function d(t){return Array.isArray(t.content)&&t.content.length>0?t:{...t,content:B()}}export{s as CONSENT_BANNER_DEFAULTS,C as CONSENT_BANNER_KIND,i as CONSENT_BANNER_LAYOUTS,S as CONSENT_BANNER_LAYOUT_LABEL,L as CONSENT_BANNER_PAGE_TITLE,T as CONSENT_BANNER_SLUG,r as CONSENT_WORDS_PROP,_ as CONSENT_WORD_KEYS,B as consentBannerDocument,f as consentWordsOf,E as isConsentLocked,O as resolveConsentBannerContent,m as resolveConsentBannerLook,d as withConsentBannerDocument};
@@ -1,3 +1,3 @@
1
- import{slugify as r}from"../slugify.js";import{mapCoordOfText as o}from"../map-styles.js";const a=["tall","square","wide"],n="tall";function u(e){return a.includes(String(e??""))?String(e):n}const p={sectionNumber:"· Locations",heading:"Our *locations.*",tagline:"Visit us in person — find your nearest studio below.",galleryKicker:"Gallery",galleryHint:"Hover to see in colour · click to jump",mapTheme:"auto"},m=[{photo:"",group:"",groupName:"",name:"City name",state:"State",country:"Country",timezone:"GMT · UTC +0",address:`Address line one
1
+ import{slugify as r}from"efficient-shell/format";import{mapCoordOfText as o}from"../map-styles.js";const a=["tall","square","wide"],n="tall";function u(e){return a.includes(String(e??""))?String(e):n}const p={sectionNumber:"· Locations",heading:"Our *locations.*",tagline:"Visit us in person — find your nearest studio below.",galleryKicker:"Gallery",galleryHint:"Hover to see in colour · click to jump",mapTheme:"auto"},m=[{photo:"",group:"",groupName:"",name:"City name",state:"State",country:"Country",timezone:"GMT · UTC +0",address:`Address line one
2
2
  Address line two`,phone:"+00 000 0000",hours:"Mon–Fri 9:00–18:00",lat:0,lng:0,mapsUrl:""},{photo:"",group:"",groupName:"",name:"City name",state:"State",country:"Country",timezone:"GMT · UTC +0",address:`Address line one
3
3
  Address line two`,phone:"+00 000 0000",hours:"Mon–Fri 9:00–18:00",lat:0,lng:0,mapsUrl:""}],i=/^https?:\/\//i;function c(e){const t=(e.mapsUrl??"").trim();return{photo:"",group:"",groupName:"",name:e.name??"",state:e.state??"",country:e.country??"",timezone:"",address:e.address??"",phone:e.phone??"",hours:e.hours??"",lat:o(e.lat),lng:o(e.lng),mapsUrl:i.test(t)?t:""}}function h(e){const t=String(e??"").split(" · ");return{state:(t[0]??"").trim(),country:(t[1]??"").trim()}}const d="other",g={routingNumber:"02 · Routing",routingTagline:"What can we help you with?",groups:[{id:"fitment",eyebrow:"A · Label",title:"Group one",copy:"Short description of this routing group.",response:"< 48h"},{id:"trade",eyebrow:"B · Label",title:"Group two",copy:"Short description of this routing group.",response:"< 24h"},{id:"press",eyebrow:"C · Label",title:"Group three",copy:"Short description of this routing group.",response:"< 48h"},{id:"order",eyebrow:"D · Label",title:"Group four",copy:"Short description of this routing group.",response:"< 24h"}],formNumber:"03 · Message",formHeading:"Send *a note.*",metaLines:["Encrypted in transit","Stored 12 months"],showOther:!0,otherLabel:"Other",otherNoteTitle:"No matching team",otherNoteBody:"Tell us what you need in the message field below — we'll route it to whoever can help.",buttonText:"Send Message →",consent:"By submitting, you agree to our privacy policy. We never share contact details with third parties.",channels:[{label:"Team one",value:"team-one@email.com",href:"mailto:team-one@email.com",sub:"Detail · Detail",groupId:"fitment"},{label:"Team two",value:"team-two@email.com",href:"mailto:team-two@email.com",sub:"Detail · Detail",groupId:"trade"},{label:"Team three",value:"team-three@email.com",href:"mailto:team-three@email.com",sub:"Detail · Detail",groupId:"press"},{label:"Team four",value:"team-four@email.com",href:"mailto:team-four@email.com",sub:"Detail · Detail",groupId:"order"},{label:"Phone",value:"+1 (000) 000-0000",href:"tel:+10000000000",sub:"Mon–Fri · 9:00–18:00"}]};function y(e){return r(e)}export{m as CONTACT_LOCATIONS_CARDS_PLACEHOLDER,p as CONTACT_LOCATIONS_DEFAULTS,g as CONTACT_ROUTING_DEFAULTS,a as LOCATION_TILE_SHAPES,n as LOCATION_TILE_SHAPE_DEFAULT,d as OTHER_REASON_ID,c as contactLocationCardOfRow,u as parseLocationTileShape,y as slugifyGroupId,h as splitLegacyRegion};
@@ -4,6 +4,16 @@ export declare const EMAIL_SIGNUP_PH: {
4
4
  readonly placeholder: "Email address";
5
5
  readonly buttonLabel: "Subscribe";
6
6
  };
7
+ export declare const FOOTER_PAYMENT_PH: {
8
+ readonly lead: "We accept";
9
+ };
10
+ export declare const FOOTER_PAYMENT_SEED: {
11
+ readonly methods: readonly [];
12
+ readonly size: "sm";
13
+ readonly align: "start";
14
+ readonly dataSource: "shop-payment-methods";
15
+ readonly lead: "We accept";
16
+ };
7
17
  export declare const SITE_FOOTER_SLUG = "site-footer";
8
18
  export declare const FOOTER_SOURCE_SLUG = "site-footer";
9
19
  export declare const SITE_FOOTER_KIND = "site-footer";
@@ -1 +1 @@
1
- const _={heading:"Join our email list",placeholder:"Email address",buttonLabel:"Subscribe"},l="site-footer",u=l,E=l,f={desktop:!0,tablet:!0,mobile:!0},d={desktop:!1,tablet:!1,mobile:!1},s=1,c=6,m=Array.from({length:c-s+1},(t,o)=>s+o),n={desktop:6,tablet:3,mobile:2},i={2:{desktop:2,tablet:2,mobile:1},3:{desktop:3,tablet:3,mobile:1},4:{desktop:4,tablet:2,mobile:2},5:{desktop:5,tablet:3,mobile:2},6:{desktop:6,tablet:3,mobile:2}},r=t=>Math.min(Math.max(Math.round(t),s),c);function x(t){if(typeof t=="number")return i[r(t)]??{desktop:r(t),tablet:r(t),mobile:r(t)};if(t&&typeof t=="object"){const o=t;return{desktop:r(o.desktop??n.desktop),tablet:r(o.tablet??n.tablet),mobile:r(o.mobile??n.mobile)}}return{...n}}function b(t){const o=t?.content;return Array.isArray(o)?o.find(e=>!!e&&typeof e=="object"&&e.type==="Footer")??null:null}function F(t){const o=t?.content;return Array.isArray(o)?o.find(e=>!!e&&typeof e=="object"&&e.type===a)??b(t):null}const a="SiteFooter",O="SiteHeader";function L(t){const o=t?.content;return Array.isArray(o)?o.find(e=>!!e&&typeof e=="object"&&e.type===O)??null:null}function T(t){const o=t?.root?.props;return o&&typeof o=="object"&&!Array.isArray(o)?o:null}export{_ as EMAIL_SIGNUP_PH,n as FOOTER_COLUMNS_DEFAULT,c as FOOTER_COLUMNS_MAX,s as FOOTER_COLUMNS_MIN,m as FOOTER_COLUMN_STEPS,u as FOOTER_SOURCE_SLUG,f as LOGO_FILL_DEFAULT,d as LOGO_ROW_FILL_DEFAULT,a as SITE_FOOTER_GROUP_TYPE,E as SITE_FOOTER_KIND,l as SITE_FOOTER_SLUG,O as SITE_HEADER_GROUP_TYPE,F as extractDrawnFooter,b as extractFooterBlock,T as extractFooterRootProps,L as extractHeaderGroup,x as normalizeFooterColumns};
1
+ const E={heading:"Join our email list",placeholder:"Email address",buttonLabel:"Subscribe"},a={lead:"We accept"},u={...a,methods:[],size:"sm",align:"start",dataSource:"shop-payment-methods"},c="site-footer",d=c,m=c,f={desktop:!0,tablet:!0,mobile:!0},x={desktop:!1,tablet:!1,mobile:!1},s=1,l=6,T=Array.from({length:l-s+1},(t,o)=>s+o),n={desktop:6,tablet:3,mobile:2},i={2:{desktop:2,tablet:2,mobile:1},3:{desktop:3,tablet:3,mobile:1},4:{desktop:4,tablet:2,mobile:2},5:{desktop:5,tablet:3,mobile:2},6:{desktop:6,tablet:3,mobile:2}},r=t=>Math.min(Math.max(Math.round(t),s),l);function F(t){if(typeof t=="number")return i[r(t)]??{desktop:r(t),tablet:r(t),mobile:r(t)};if(t&&typeof t=="object"){const o=t;return{desktop:r(o.desktop??n.desktop),tablet:r(o.tablet??n.tablet),mobile:r(o.mobile??n.mobile)}}return{...n}}function b(t){const o=t?.content;return Array.isArray(o)?o.find(e=>!!e&&typeof e=="object"&&e.type==="Footer")??null:null}function A(t){const o=t?.content;return Array.isArray(o)?o.find(e=>!!e&&typeof e=="object"&&e.type===O)??b(t):null}const O="SiteFooter",_="SiteHeader";function L(t){const o=t?.content;return Array.isArray(o)?o.find(e=>!!e&&typeof e=="object"&&e.type===_)??null:null}function S(t){const o=t?.root?.props;return o&&typeof o=="object"&&!Array.isArray(o)?o:null}export{E as EMAIL_SIGNUP_PH,n as FOOTER_COLUMNS_DEFAULT,l as FOOTER_COLUMNS_MAX,s as FOOTER_COLUMNS_MIN,T as FOOTER_COLUMN_STEPS,a as FOOTER_PAYMENT_PH,u as FOOTER_PAYMENT_SEED,d as FOOTER_SOURCE_SLUG,f as LOGO_FILL_DEFAULT,x as LOGO_ROW_FILL_DEFAULT,O as SITE_FOOTER_GROUP_TYPE,m as SITE_FOOTER_KIND,c as SITE_FOOTER_SLUG,_ as SITE_HEADER_GROUP_TYPE,A as extractDrawnFooter,b as extractFooterBlock,S as extractFooterRootProps,L as extractHeaderGroup,F as normalizeFooterColumns};
@@ -8,6 +8,8 @@ export interface GalleryLayout {
8
8
  readonly phone: readonly GalleryCell[];
9
9
  readonly across: 2 | 3 | 4 | 6;
10
10
  readonly acrossPhone: 2 | 3 | 6;
11
+ readonly lead?: readonly GalleryCell[];
12
+ readonly leadPhone?: readonly GalleryCell[];
11
13
  }
12
14
  export declare const GALLERY_LAYOUTS: {
13
15
  readonly twoAcross: {
@@ -143,12 +145,22 @@ export declare const GALLERY_LAYOUTS: {
143
145
  readonly desktop: readonly [readonly [3, 1], readonly [2, 1], readonly [1, 1], readonly [2, 1], readonly [1, 1], readonly [3, 1], readonly [1, 1], readonly [3, 1], readonly [2, 1], readonly [2, 1], readonly [1, 1], readonly [3, 1]];
144
146
  readonly phone: readonly [readonly [1, 1], readonly [1, 1], readonly [1, 1], readonly [1, 1], readonly [1, 1], readonly [1, 1]];
145
147
  };
148
+ readonly twoThenThrees: {
149
+ readonly label: "Two, then threes";
150
+ readonly across: 3;
151
+ readonly acrossPhone: 3;
152
+ readonly lead: readonly [readonly [6, 1], readonly [6, 1]];
153
+ readonly desktop: readonly [readonly [4, 1], readonly [4, 1], readonly [4, 1]];
154
+ readonly leadPhone: readonly [readonly [3, 1], readonly [3, 1]];
155
+ readonly phone: readonly [readonly [2, 1], readonly [2, 1], readonly [2, 1]];
156
+ };
146
157
  };
147
158
  export type GalleryLayoutKey = keyof typeof GALLERY_LAYOUTS;
148
159
  export declare const GALLERY_LAYOUT_KEYS: GalleryLayoutKey[];
149
160
  export declare const GALLERY_ACROSS_BUCKETS: readonly (2 | 3 | 4 | 6)[];
150
161
  export declare function resolveGalleryLayout(value: unknown): GalleryLayout | null;
151
162
  export declare function galleryTailSpan(layout: GalleryLayout, phone: boolean): number;
163
+ export declare function galleryPictureCells(layout: GalleryLayout): readonly GalleryCell[];
152
164
  export declare const GALLERY_LAYOUT_CLASS_PREFIX = "sf-wall--";
153
165
  export declare function galleryLayoutClass(key: GalleryLayoutKey): string;
154
166
  export declare function galleryLayoutCss(key: GalleryLayoutKey): string;
@@ -1 +1 @@
1
- const P=12,b=6,f=800,l={twoAcross:{label:"Two across",across:2,acrossPhone:2,desktop:[[6,1],[6,1]],phone:[[3,1],[3,1]]},zigzag:{label:"Zigzag",across:2,acrossPhone:2,desktop:[[8,1],[4,1],[4,1],[8,1]],phone:[[4,1],[2,1],[2,1],[4,1]]},brick:{label:"Brick",across:2,acrossPhone:2,desktop:[[5,1],[7,1],[7,1],[5,1]],phone:[[2,1],[4,1],[4,1],[2,1]]},twoTall:{label:"Two tall",across:2,acrossPhone:2,desktop:[[6,2],[6,2]],phone:[[3,2],[3,2]]},offsetTall:{label:"Offset tall",across:2,acrossPhone:2,desktop:[[5,2],[7,1],[3,1],[4,1]],phone:[[3,2],[3,1],[3,1]]},ladder:{label:"Ladder",across:2,acrossPhone:2,desktop:[[3,2],[9,1],[5,1],[4,1]],phone:[[2,2],[4,1],[2,1],[2,1]]},threeAcross:{label:"Three across",across:3,acrossPhone:3,desktop:[[4,1],[4,1],[4,1]],phone:[[2,1],[2,1],[2,1]]},bigLeft:{label:"Big left",across:3,acrossPhone:3,desktop:[[6,1],[3,1],[3,1]],phone:[[4,1],[1,1],[1,1]]},bigRight:{label:"Big right",across:3,acrossPhone:3,desktop:[[3,1],[3,1],[6,1]],phone:[[1,1],[1,1],[4,1]]},threeStagger:{label:"Three stagger",across:3,acrossPhone:3,desktop:[[5,1],[4,1],[3,1],[3,1],[4,1],[5,1]],phone:[[3,1],[2,1],[1,1],[1,1],[2,1],[3,1]]},threeLadder:{label:"Three ladder",across:3,acrossPhone:3,desktop:[[3,1],[4,1],[5,1],[5,1],[4,1],[3,1]],phone:[[1,1],[2,1],[3,1],[3,1],[2,1],[1,1]]},tallMiddle:{label:"Tall middle",across:3,acrossPhone:3,desktop:[[4,1],[4,2],[4,1],[4,1],[4,1]],phone:[[2,1],[2,2],[2,1],[2,1],[2,1]]},fourAcross:{label:"Four across",across:4,acrossPhone:2,desktop:[[3,1],[3,1],[3,1],[3,1]],phone:[[3,1],[3,1]]},bigFirst:{label:"Big first",across:4,acrossPhone:2,desktop:[[6,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1]],phone:[[6,1],[3,1],[3,1]]},fourStagger:{label:"Four stagger",across:4,acrossPhone:2,desktop:[[4,1],[3,1],[2,1],[3,1],[2,1],[3,1],[4,1],[3,1]],phone:[[4,1],[2,1],[2,1],[4,1]]},tallFirst:{label:"Tall first",across:4,acrossPhone:2,desktop:[[3,2],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1]],phone:[[3,2],[3,1],[3,1]]},oneThenFour:{label:"One then four",across:4,acrossPhone:2,desktop:[[12,1],[3,1],[3,1],[3,1],[3,1]],phone:[[6,1],[3,1],[3,1]]},sixAcross:{label:"Six across",across:6,acrossPhone:3,desktop:[[2,1],[2,1],[2,1],[2,1],[2,1],[2,1]],phone:[[2,1],[2,1],[2,1]]},sixStagger:{label:"Six stagger",across:6,acrossPhone:6,desktop:[[3,1],[2,1],[1,1],[2,1],[1,1],[3,1],[1,1],[3,1],[2,1],[2,1],[1,1],[3,1]],phone:[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]]}},k=Object.keys(l),A=[2,3,4,6];function E(s){return typeof s!="string"||s===""?null:l[s]??null}function h(s,e){return e?6/s.acrossPhone:12/s.across}const g="sf-wall--";function u(s){return`${g}${s}`}function _(s){const e=l[s],a=`.${u(s)}`,o=[],c=(p,i)=>{const t=[],n=p.length;p.forEach(([r,d],L)=>{t.push(`${a} > :nth-child(${n}n+${L+1}){grid-column:span ${r};grid-row:span ${d}}`)});for(let r=1;r<n;r+=1)t.push(`${a}:has(> :nth-child(${n}n+${r}):last-child) > :nth-last-child(-n+${r}){grid-column:span ${i};grid-row:span 1}`);return t};return o.push(`${a}{grid-template-columns:repeat(12,minmax(0,1fr))}`),o.push(...c(e.desktop,h(e,!1))),o.push("@media (max-width:800px){"),o.push(`${a}{grid-template-columns:repeat(6,minmax(0,1fr))}`),o.push(...c(e.phone,h(e,!0))),o.push("}"),o.join("")}export{A as GALLERY_ACROSS_BUCKETS,P as GALLERY_COLUMNS,b as GALLERY_COLUMNS_PHONE,l as GALLERY_LAYOUTS,g as GALLERY_LAYOUT_CLASS_PREFIX,k as GALLERY_LAYOUT_KEYS,f as GALLERY_PHONE_BREAKPOINT,u as galleryLayoutClass,_ as galleryLayoutCss,h as galleryTailSpan,E as resolveGalleryLayout};
1
+ const f=12,k=6,E=800,h={twoAcross:{label:"Two across",across:2,acrossPhone:2,desktop:[[6,1],[6,1]],phone:[[3,1],[3,1]]},zigzag:{label:"Zigzag",across:2,acrossPhone:2,desktop:[[8,1],[4,1],[4,1],[8,1]],phone:[[4,1],[2,1],[2,1],[4,1]]},brick:{label:"Brick",across:2,acrossPhone:2,desktop:[[5,1],[7,1],[7,1],[5,1]],phone:[[2,1],[4,1],[4,1],[2,1]]},twoTall:{label:"Two tall",across:2,acrossPhone:2,desktop:[[6,2],[6,2]],phone:[[3,2],[3,2]]},offsetTall:{label:"Offset tall",across:2,acrossPhone:2,desktop:[[5,2],[7,1],[3,1],[4,1]],phone:[[3,2],[3,1],[3,1]]},ladder:{label:"Ladder",across:2,acrossPhone:2,desktop:[[3,2],[9,1],[5,1],[4,1]],phone:[[2,2],[4,1],[2,1],[2,1]]},threeAcross:{label:"Three across",across:3,acrossPhone:3,desktop:[[4,1],[4,1],[4,1]],phone:[[2,1],[2,1],[2,1]]},bigLeft:{label:"Big left",across:3,acrossPhone:3,desktop:[[6,1],[3,1],[3,1]],phone:[[4,1],[1,1],[1,1]]},bigRight:{label:"Big right",across:3,acrossPhone:3,desktop:[[3,1],[3,1],[6,1]],phone:[[1,1],[1,1],[4,1]]},threeStagger:{label:"Three stagger",across:3,acrossPhone:3,desktop:[[5,1],[4,1],[3,1],[3,1],[4,1],[5,1]],phone:[[3,1],[2,1],[1,1],[1,1],[2,1],[3,1]]},threeLadder:{label:"Three ladder",across:3,acrossPhone:3,desktop:[[3,1],[4,1],[5,1],[5,1],[4,1],[3,1]],phone:[[1,1],[2,1],[3,1],[3,1],[2,1],[1,1]]},tallMiddle:{label:"Tall middle",across:3,acrossPhone:3,desktop:[[4,1],[4,2],[4,1],[4,1],[4,1]],phone:[[2,1],[2,2],[2,1],[2,1],[2,1]]},fourAcross:{label:"Four across",across:4,acrossPhone:2,desktop:[[3,1],[3,1],[3,1],[3,1]],phone:[[3,1],[3,1]]},bigFirst:{label:"Big first",across:4,acrossPhone:2,desktop:[[6,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1]],phone:[[6,1],[3,1],[3,1]]},fourStagger:{label:"Four stagger",across:4,acrossPhone:2,desktop:[[4,1],[3,1],[2,1],[3,1],[2,1],[3,1],[4,1],[3,1]],phone:[[4,1],[2,1],[2,1],[4,1]]},tallFirst:{label:"Tall first",across:4,acrossPhone:2,desktop:[[3,2],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1]],phone:[[3,2],[3,1],[3,1]]},oneThenFour:{label:"One then four",across:4,acrossPhone:2,desktop:[[12,1],[3,1],[3,1],[3,1],[3,1]],phone:[[6,1],[3,1],[3,1]]},sixAcross:{label:"Six across",across:6,acrossPhone:3,desktop:[[2,1],[2,1],[2,1],[2,1],[2,1],[2,1]],phone:[[2,1],[2,1],[2,1]]},sixStagger:{label:"Six stagger",across:6,acrossPhone:6,desktop:[[3,1],[2,1],[1,1],[2,1],[1,1],[3,1],[1,1],[3,1],[2,1],[2,1],[1,1],[3,1]],phone:[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]]},twoThenThrees:{label:"Two, then threes",across:3,acrossPhone:3,lead:[[6,1],[6,1]],desktop:[[4,1],[4,1],[4,1]],leadPhone:[[3,1],[3,1]],phone:[[2,1],[2,1],[2,1]]}},A=Object.keys(h),$=[2,3,4,6];function _(s){return typeof s!="string"||s===""?null:h[s]??null}function g(s,o){return o?6/s.acrossPhone:12/s.across}function x(s){return[...s.lead??[],...s.desktop]}const P="sf-wall--";function b(s){return`${P}${s}`}function O(s){const o=h[s],a=`.${b(s)}`,r=[],p=(d,u,i=[])=>{const t=[],n=d.length,L=i.length;i.forEach(([e,l],c)=>{t.push(`${a} > :nth-child(${c+1}){grid-column:span ${e};grid-row:span ${l}}`)}),d.forEach(([e,l],c)=>{t.push(`${a} > :nth-child(${n}n+${L+c+1}){grid-column:span ${e};grid-row:span ${l}}`)});for(let e=1;e<n;e+=1)t.push(`${a}:has(> :nth-child(${n}n+${L+e}):last-child) > :nth-last-child(-n+${e}){grid-column:span ${u};grid-row:span 1}`);return t};return r.push(`${a}{grid-template-columns:repeat(12,minmax(0,1fr))}`),r.push(...p(o.desktop,g(o,!1),o.lead)),r.push("@media (max-width:800px){"),r.push(`${a}{grid-template-columns:repeat(6,minmax(0,1fr))}`),r.push(...p(o.phone,g(o,!0),o.leadPhone)),r.push("}"),r.join("")}export{$ as GALLERY_ACROSS_BUCKETS,f as GALLERY_COLUMNS,k as GALLERY_COLUMNS_PHONE,h as GALLERY_LAYOUTS,P as GALLERY_LAYOUT_CLASS_PREFIX,A as GALLERY_LAYOUT_KEYS,E as GALLERY_PHONE_BREAKPOINT,b as galleryLayoutClass,O as galleryLayoutCss,x as galleryPictureCells,g as galleryTailSpan,_ as resolveGalleryLayout};
@@ -17,6 +17,16 @@ export declare function sectionPadAttrs(pt: unknown, pb: unknown, ptPhone: unkno
17
17
  className: string;
18
18
  style: CSSProperties;
19
19
  } | null;
20
+ export type PadSides = {
21
+ top?: unknown;
22
+ right?: unknown;
23
+ bottom?: unknown;
24
+ left?: unknown;
25
+ };
26
+ export declare function padSideAttrs(inline: PadSides, phone: PadSides): {
27
+ classes: string[];
28
+ style: CSSProperties;
29
+ };
20
30
  export interface SectionPaddingProps {
21
31
  padTop?: unknown;
22
32
  padBottom?: unknown;
@@ -1 +1 @@
1
- import{finiteNumber as r}from"../finite-number.js";const y={min:10,max:200,step:10};function u(t,e){const o=r(t),n=r(e);if(!(o===void 0&&n===void 0))return{paddingTop:o,paddingBottom:n}}const m="sf-pad-top-phone",_="sf-pad-bottom-phone",x="--sf-pad-t-phone",A="--sf-pad-b-phone",b="sf-pad-left-phone",O="sf-pad-right-phone",l="--sf-pad-l-phone",T="--sf-pad-r-phone";function a(t,e,o,n,i,P,p,c){const g=u(t,e)??{},s={},d=["sf-section-pad"];typeof o=="number"&&(d.push(m),s[x]=`${o}px`),typeof n=="number"&&(d.push(_),s[A]=`${n}px`);const f={};return typeof i=="number"&&(f.paddingLeft=i),typeof P=="number"&&(f.paddingRight=P),typeof p=="number"&&(d.push(b),s[l]=`${p}px`),typeof c=="number"&&(d.push(O),s[T]=`${c}px`),d.length===1&&u(t,e)===void 0&&!Object.keys(f).length?null:{className:d.join(" "),style:{...g,...f,...s}}}function h(t,e,o){const n=r(t)??o,i=r(e);return n===void 0?i:i===void 0?n:n+i}function E(t,e={}){return{top:h(t.padTop,t.sectionPaddingTop,e.top),bottom:h(t.padBottom,t.sectionPaddingBottom,e.bottom)}}function S(t){return{top:t.sectionPaddingTop,bottom:t.sectionPaddingBottom,topPhone:t.sectionPaddingTopPhone,bottomPhone:t.sectionPaddingBottomPhone,left:t.sectionPaddingLeft,right:t.sectionPaddingRight,leftPhone:t.sectionPaddingLeftPhone,rightPhone:t.sectionPaddingRightPhone}}function D(t){return a(t.top,t.bottom,t.topPhone,t.bottomPhone,t.left,t.right,t.leftPhone,t.rightPhone)}function H(t,e){const o=n=>typeof n=="number"?n+e:void 0;return a(o(t.top),o(t.bottom),o(t.topPhone),o(t.bottomPhone),t.left,t.right,t.leftPhone,t.rightPhone)}export{_ as PAD_BOTTOM_PHONE_CLASS,A as PAD_BOTTOM_PHONE_VAR,b as PAD_LEFT_PHONE_CLASS,l as PAD_LEFT_PHONE_VAR,O as PAD_RIGHT_PHONE_CLASS,T as PAD_RIGHT_PHONE_VAR,m as PAD_TOP_PHONE_CLASS,x as PAD_TOP_PHONE_VAR,y as SECTION_PADDING,S as padValuesOf,E as resolveSectionPadding,H as rootPadAttrs,a as sectionPadAttrs,u as sectionPadStyle,D as wrapperPadAttrs};
1
+ import{finiteNumber as s}from"../finite-number.js";const E={min:10,max:200,step:10};function u(t,e){const o=s(t),n=s(e);if(!(o===void 0&&n===void 0))return{paddingTop:o,paddingBottom:n}}const g="sf-pad-top-phone",l="sf-pad-bottom-phone",_="--sf-pad-t-phone",m="--sf-pad-b-phone",A="sf-pad-left-phone",x="sf-pad-right-phone",O="--sf-pad-l-phone",T="--sf-pad-r-phone";function a(t,e,o,n,i,r,P,c){const p=u(t,e),d=S({left:i,right:r},{top:o,bottom:n,left:P,right:c});return p===void 0&&!d.classes.length&&!Object.keys(d.style).length?null:{className:["sf-section-pad",...d.classes].join(" "),style:{...p,...d.style}}}const b=[["top","paddingTop",g,_],["bottom","paddingBottom",l,m],["left","paddingLeft",A,O],["right","paddingRight",x,T]];function S(t,e){const o={},n={},i=[];for(const[r,P,c,p]of b){const d=s(t[r]);d!==void 0&&(o[P]=d);const f=s(e[r]);f!==void 0&&(i.push(c),n[p]=`${f}px`)}return{classes:i,style:{...o,...n}}}function h(t,e,o){const n=s(t)??o,i=s(e);return n===void 0?i:i===void 0?n:n+i}function N(t,e={}){return{top:h(t.padTop,t.sectionPaddingTop,e.top),bottom:h(t.padBottom,t.sectionPaddingBottom,e.bottom)}}function H(t){return{top:t.sectionPaddingTop,bottom:t.sectionPaddingBottom,topPhone:t.sectionPaddingTopPhone,bottomPhone:t.sectionPaddingBottomPhone,left:t.sectionPaddingLeft,right:t.sectionPaddingRight,leftPhone:t.sectionPaddingLeftPhone,rightPhone:t.sectionPaddingRightPhone}}function L(t){return a(t.top,t.bottom,t.topPhone,t.bottomPhone,t.left,t.right,t.leftPhone,t.rightPhone)}function R(t,e){const o=n=>typeof n=="number"?n+e:void 0;return a(o(t.top),o(t.bottom),o(t.topPhone),o(t.bottomPhone),t.left,t.right,t.leftPhone,t.rightPhone)}export{l as PAD_BOTTOM_PHONE_CLASS,m as PAD_BOTTOM_PHONE_VAR,A as PAD_LEFT_PHONE_CLASS,O as PAD_LEFT_PHONE_VAR,x as PAD_RIGHT_PHONE_CLASS,T as PAD_RIGHT_PHONE_VAR,g as PAD_TOP_PHONE_CLASS,_ as PAD_TOP_PHONE_VAR,E as SECTION_PADDING,S as padSideAttrs,H as padValuesOf,N as resolveSectionPadding,R as rootPadAttrs,a as sectionPadAttrs,u as sectionPadStyle,L as wrapperPadAttrs};
@@ -41,7 +41,3 @@ export interface SiteWidths {
41
41
  export declare function normalizeSiteBackground(v: unknown): WidthAnswer | null;
42
42
  export declare function siteWidthsMetadata(background: unknown, content?: unknown): Record<string, SiteWidths>;
43
43
  export declare function siteWidthsOf(props: Readonly<Record<string, unknown>>): SiteWidths;
44
- export declare const SITE_CARD_THEME_KEY = "siteCardTheme";
45
- export declare function normalizeCardThemeIndex(v: unknown): number | null;
46
- export declare function siteCardThemeMetadata(index: unknown): Record<string, number>;
47
- export declare function siteCardThemeOf(metadata: Readonly<Record<string, unknown>> | undefined): number | null;
@@ -1 +1 @@
1
- import{PAGE_WIDTH as h}from"./page-width.js";const m=["contained","page","full"],S=["full","page"],y={full:"Full width",page:"Content width"},k="inherit",W=e=>typeof e=="string"&&m.includes(e),i=e=>e===k;function c(e,n){const t=typeof e.pageWidth=="number"?e.pageWidth:h.default;return i(e.widthMode)?{mode:"full",pageWidth:t,inherited:!0}:e.widthMode==="contained"?{mode:"page",pageWidth:t,inherited:!1}:W(e.widthMode)?{mode:e.widthMode,pageWidth:t,inherited:!1}:e.contained===!0?{mode:"page",pageWidth:t,inherited:!1}:typeof e.fullWidth=="boolean"?{mode:e.fullWidth?"full":"page",pageWidth:t,inherited:!1}:e.contained===!1?{mode:"full",pageWidth:t,inherited:!1}:{mode:n,pageWidth:t,inherited:n==="full"}}function I(e){return c(e,"page").mode==="full"}const l="site",s={Hero:"hero",HeroSingle:"hero",IntroBleed:"scrollOver",SpecStrip:"background",Timeline:"background",Footprint:"background",Prose:"background",ParagraphsA:"background",Cards:"background",KeyFeatures:"background",Chart:"background",Mockup:"background",Testimonials:"background",TitleWithButtons:"background",Countdown:"background",DocMasthead:"background",DocBody:"background",DocMetaCards:"background",Gallery:"background",GalleryB:"background",Reviews:"background",ReviewForm:"background",Form:"background",AppointmentBooking:"background",FAQ:"background",Events:"background",Split:"both",Breadcrumb:"both",Collections:"both",CatalogFilterBar:"both",AlloyWheelsListing:"both",Banner:"contained",Stats:"contained",Logos:"contained",Divider:"contained",OrderSummary:"contained",DeliveryOptions:"contained",PaymentBadges:"contained",CheckoutCTA:"contained",Flex:"contained",Grid:"contained",Manifesto:"contentColumn",SectionHeader:"contentFull",ProductHero:"contentFull",ProductGrid:"productGrid",TimelineTrack:"capped",DetailRows:"capped",FitmentTable:"capped",TyreSizes:"capped",TyreFitment:"capped",EuTyreLabel:"capped",BundleOffer:"capped",CompatibleTyres:"capped",RelatedProducts:"capped",ProcessSteps:"capped",StatsParagraph:"capped",Masthead:"capped",FeaturedCover:"capped",LongRead:"capped",Series:"capped",ContactLocations:"capped",FitmentFinder:"capped",SpecTable:"capped",Subscribe:"capped",SubscribeBlogs:"capped",ContactRouting:"capped",SubmitBuild:"capped"};function x(e){return Object.prototype.hasOwnProperty.call(s,e)}const u=e=>e==="full"||e==="content",T=e=>typeof e=="number"&&Number.isFinite(e)&&e>0,f=({widthMode:e,fullWidth:n,pageWidth:t})=>({widthMode:e,fullWidth:n,pageWidth:t});function C(e,n){const t={background:null,content:null,contentMax:null};switch(e){case"hero":return i(n.widthMode)||n.widthMode!=="full"?t:{...t,background:"full"};case"scrollOver":return n.fullWidth===!1?t:{...t,content:"full"};case"background":return c(n,"full").mode==="full"?t:{...t,background:"content"};case"both":return c(n,"full").mode==="full"?{...t,content:"full"}:{...t,background:"content"};case"contained":return c(n,"page").mode==="full"?{...t,content:"full"}:{...t,background:"content"};case"contentColumn":return c(f(n),"page").mode==="full"?{...t,content:"full"}:t;case"contentFull":return c(f(n),"full").mode==="full"?{...t,content:"full"}:t;case"productGrid":{const o=c(n,"full");return o.mode==="full"?{...t,content:"full"}:{background:"content",content:"content",contentMax:o.pageWidth}}case"capped":return{...t,background:"content"}}}function F(e,n){if(!x(e))return{background:null,content:null,contentMax:null};const t=s[e],o=n,a=C(t,o),d=o.backgroundWidth===l?null:u(o.backgroundWidth)?o.backgroundWidth:a.background;return o.contentWidth===l?{background:d,content:null,contentMax:null}:u(o.contentWidth)?{background:d,content:o.contentWidth,contentMax:o.contentWidth==="content"&&T(o.contentMax)?o.contentMax:null}:{background:d,content:a.content,contentMax:a.contentMax}}const g="siteWidths";function r(e){return u(e)?e:null}function w(e,n){return{[g]:{background:r(e),content:r(n)}}}function E(e){const t=e.editor?.metadata?.[g];return{background:r(t?.background),content:r(t?.content)}}const p="siteCardTheme";function b(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0?e:null}function H(e){const n=b(e);return n===null?{}:{[p]:n}}function O(e){return b(e?.[p])}export{l as FOLLOW_SITE,S as SECTION_WIDTH_CHOICES,s as SECTION_WIDTH_FAMILY,p as SITE_CARD_THEME_KEY,g as SITE_WIDTHS_KEY,y as WIDTH_CHOICE_LABEL,k as WIDTH_INHERIT,m as WIDTH_MODES,i as isInheritValue,b as normalizeCardThemeIndex,r as normalizeSiteBackground,F as resolveSectionWidth,c as resolveWidth,x as sectionHasWidthRows,I as sectionRunsFullWidth,H as siteCardThemeMetadata,O as siteCardThemeOf,w as siteWidthsMetadata,E as siteWidthsOf};
1
+ import{PAGE_WIDTH as b}from"./page-width.js";const p=["contained","page","full"],C=["full","page"],w={full:"Full width",page:"Content width"},k="inherit",m=e=>typeof e=="string"&&p.includes(e),u=e=>e===k;function c(e,n){const t=typeof e.pageWidth=="number"?e.pageWidth:b.default;return u(e.widthMode)?{mode:"full",pageWidth:t,inherited:!0}:e.widthMode==="contained"?{mode:"page",pageWidth:t,inherited:!1}:m(e.widthMode)?{mode:e.widthMode,pageWidth:t,inherited:!1}:e.contained===!0?{mode:"page",pageWidth:t,inherited:!1}:typeof e.fullWidth=="boolean"?{mode:e.fullWidth?"full":"page",pageWidth:t,inherited:!1}:e.contained===!1?{mode:"full",pageWidth:t,inherited:!1}:{mode:n,pageWidth:t,inherited:n==="full"}}function F(e){return c(e,"page").mode==="full"}const s="site",f={Hero:"hero",HeroSingle:"hero",IntroBleed:"scrollOver",SpecStrip:"background",Timeline:"background",Footprint:"background",Prose:"background",ParagraphsA:"background",Cards:"background",KeyFeatures:"background",Chart:"background",Mockup:"background",Testimonials:"background",TitleWithButtons:"background",Countdown:"background",DocMasthead:"background",DocBody:"background",DocMetaCards:"background",Gallery:"background",GalleryB:"background",Reviews:"background",ReviewForm:"background",Form:"background",AppointmentBooking:"background",FAQ:"background",Events:"background",Split:"both",Breadcrumb:"both",Collections:"both",CatalogFilterBar:"both",AlloyWheelsListing:"both",Banner:"contained",Stats:"contained",Logos:"contained",Divider:"contained",OrderSummary:"contained",DeliveryOptions:"contained",PaymentBadges:"contained",CheckoutCTA:"contained",Flex:"contained",Grid:"contained",Manifesto:"contentColumn",SectionHeader:"contentFull",ProductHero:"contentFull",ProductGrid:"productGrid",TimelineTrack:"capped",DetailRows:"capped",FitmentTable:"capped",TyreSizes:"capped",TyreFitment:"capped",EuTyreLabel:"capped",BundleOffer:"capped",CompatibleTyres:"capped",RelatedProducts:"capped",ProcessSteps:"capped",StatsParagraph:"capped",Masthead:"capped",FeaturedCover:"capped",LongRead:"capped",Series:"capped",ContactLocations:"capped",FitmentFinder:"capped",SpecTable:"capped",Subscribe:"capped",SubscribeBlogs:"capped",ContactRouting:"capped",SubmitBuild:"capped"};function W(e){return Object.prototype.hasOwnProperty.call(f,e)}const l=e=>e==="full"||e==="content",g=e=>typeof e=="number"&&Number.isFinite(e)&&e>0,i=({widthMode:e,fullWidth:n,pageWidth:t})=>({widthMode:e,fullWidth:n,pageWidth:t}),x=["widthMode","contained","fullWidth","pageWidth"];function M(e,n){if(e==="scrollOver")return n.fullWidth!==void 0&&n.fullWidth!==null;if(u(n.widthMode))return!1;const t=e==="contentColumn"||e==="contentFull"?i(n):n;return x.some(o=>t[o]!==void 0&&t[o]!==null)}function S(e,n){const t={background:null,content:null,contentMax:null};if(!M(e,n))return t;switch(e){case"hero":return u(n.widthMode)||n.widthMode!=="full"?t:{...t,background:"full"};case"scrollOver":return n.fullWidth===!1?t:{...t,content:"full"};case"background":return c(n,"full").mode==="full"?t:{...t,background:"content"};case"both":return c(n,"full").mode==="full"?{...t,content:"full"}:{...t,background:"content"};case"contained":return c(n,"page").mode==="full"?{...t,content:"full"}:{...t,background:"content"};case"contentColumn":return c(i(n),"page").mode==="full"?{...t,content:"full"}:t;case"contentFull":return c(i(n),"full").mode==="full"?{...t,content:"full"}:t;case"productGrid":return c(n,"full").mode==="full"?{...t,content:"full"}:{background:"content",content:"content",contentMax:g(n.pageWidth)?n.pageWidth:null};case"capped":return t}}function I(e,n){if(!W(e))return{background:null,content:null,contentMax:null};const t=f[e],o=n,a=S(t,o),r=o.backgroundWidth===s?null:l(o.backgroundWidth)?o.backgroundWidth:a.background;return o.contentWidth===s?{background:r,content:null,contentMax:null}:l(o.contentWidth)?{background:r,content:o.contentWidth,contentMax:o.contentWidth==="content"&&g(o.contentMax)?o.contentMax:null}:{background:r,content:a.content,contentMax:a.contentMax}}const h="siteWidths";function d(e){return l(e)?e:null}function O(e,n){return{[h]:{background:d(e),content:d(n)}}}function y(e){const t=e.editor?.metadata?.[h];return{background:d(t?.background),content:d(t?.content)}}export{s as FOLLOW_SITE,C as SECTION_WIDTH_CHOICES,f as SECTION_WIDTH_FAMILY,h as SITE_WIDTHS_KEY,w as WIDTH_CHOICE_LABEL,k as WIDTH_INHERIT,p as WIDTH_MODES,u as isInheritValue,d as normalizeSiteBackground,I as resolveSectionWidth,c as resolveWidth,W as sectionHasWidthRows,F as sectionRunsFullWidth,O as siteWidthsMetadata,y as siteWidthsOf};
@@ -1,2 +1,8 @@
1
1
  import type { BlockMeta } from "../../block-types.js";
2
+ export declare const LogosSlots: {
3
+ logos: {
4
+ type: "slot";
5
+ allow: string[];
6
+ };
7
+ };
2
8
  export declare const LogosMeta: BlockMeta;
@@ -1 +1 @@
1
- const o={label:"Logos",defaultProps:{items:[],contained:!0}};export{o as LogosMeta};
1
+ const o={logos:{type:"slot",allow:["LogoBlock"]}},t={label:"Logos",fields:o,defaultProps:{items:[],contained:!0}};export{t as LogosMeta,o as LogosSlots};
@@ -1 +1 @@
1
- import{PAGE_WIDTH as t}from"../../../../content/page-width.js";import{DEFAULT_SECTION_NUMBER_STYLE as e}from"../../../../sections/section-number-style.js";import{DEFAULT_SECTION_HEAD_STYLE as o}from"../../../../sections/section-head-style.js";const S={label:"Section Header",defaultProps:{headStyle:o,num:"01 / Section",numStyle:e,title:"Section *title*",description:"",logoSrc:"",logoAlt:"",linkText:"",linkHref:"",fullWidth:!0,pageWidth:t.default}};export{S as SectionHeaderMeta};
1
+ import{DEFAULT_SECTION_NUMBER_STYLE as e}from"../../../../sections/section-number-style.js";import{DEFAULT_SECTION_HEAD_STYLE as t}from"../../../../sections/section-head-style.js";const l={label:"Section Header",defaultProps:{headStyle:t,num:"01 / Section",numStyle:e,title:"Section *title*",description:"",logoSrc:"",logoAlt:"",linkText:"",linkHref:""}};export{l as SectionHeaderMeta};
@@ -1 +1 @@
1
- import{FOOTER_LOGO_PX as m}from"../logo/logo-size.js";import{resolveContainerGap as E}from"../content/container-gap.js";import{NESTED_BOX_PADDING as d}from"../content/box-layout.js";import{finiteNumber as p}from"../finite-number.js";import{buildSectionGroup as _,SITE_FOOTER_TYPE as O}from"./section-groups.js";const u="Flex",P={FooterMenu:"MenuBlock",FooterEmailSignup:"EmailFormBlock",FooterSocial:"SocialLogosBlock"},x=o=>{const{id:e,...t}=o;return t},a=o=>typeof o=="string"?o:"",f={sm:12,md:13,lg:15},L="md",h=1.5,y={size:13,lineHeight:h,width:280},A=14,b=40,B=o=>o==="center"||o==="right"?o:"left";function G(o){const e={},t=[["padTop","sectionPaddingTop"],["padRight","sectionPaddingRight"],["padBottom","sectionPaddingBottom"],["padLeft","sectionPaddingLeft"]];for(const[s,r]of t){const n=p(o[s]);n&&(e[r]=n)}return e}function F(o,e){const t=o.props??{},s=P[o.type];if(s)return[e(s,x(t))];switch(o.type){case"FooterLogo":{const r=B(t.align),n=e("LogoBlock",{...t.reverse?{reverse:t.reverse}:{},...typeof t.customColor=="string"&&t.customColor?{customColor:t.customColor}:{},heightPx:Math.round(m*((p(t.widthPct)??100)/100)),href:"/",align:r,...G(t)}),i=a(t.tagline).trim();return i?[n,e("Text",{text:i,tone:"dim",align:r,_partStyles:{text:{...y}}})]:[n]}case"FooterText":{const r=typeof t.size=="string"&&t.size in f?t.size:L;return[e("Text",{text:a(t.text),tone:typeof t.tone=="string"?t.tone:"default",_partStyles:{text:{size:f[r],lineHeight:h}}})]}case"FooterDivider":{const r=p(t.thickness),n=p(t.lengthPct);return[e("Divider",{...r!==void 0?{thickness:r}:{},...n!==void 0?{lengthPct:n}:{},...t.hideOnMobile===!0?{hideOnMobile:!0}:{}})]}case"FooterGroup":{const r=Array.isArray(t.blocks)?t.blocks:[];return[e(u,{direction:t.direction==="horizontal"?"row":"column",gap:E("FooterGroup",t.gap),align:t.align==="center"||t.align==="end"?t.align:"start",...d,content:r.flatMap(n=>F(n,e))})]}default:return[]}}function M(o,e,t){const s=o&&Array.isArray(o.props?.blocks)?o.props.blocks:[],r=c=>e(u,{direction:"row",wrap:!0,share:"equal",gap:b,content:c}),n=[];let i=[];for(const c of s){const l=F(c,e);if(c.type==="FooterDivider"){i.length&&n.push(r(i)),i=[],n.push(...l);continue}l.length<=1?i.push(...l):i.push(e(u,{direction:"column",gap:A,align:"stretch",...d,content:l}))}(i.length||!n.length)&&n.push(r(i));const T=e(u,{direction:"column",content:[e("LegalLineBlock")]}),g=_(O,t,[...n,T]);return{...g,props:{...g.props,...o?.props?.width==="full"?{fullWidth:!0}:{}}}}export{M as boxFooterFromFooter,F as pageBlocksFromFooterBlock};
1
+ import{FOOTER_LOGO_PX as T}from"../logo/logo-size.js";import{resolveContainerGap as E}from"../content/container-gap.js";import{NESTED_BOX_PADDING as a}from"../content/box-layout.js";import{finiteNumber as p}from"../finite-number.js";import{buildSectionGroup as _,SITE_FOOTER_TYPE as O}from"./section-groups.js";const u="Flex",P={FooterMenu:"MenuBlock",FooterEmailSignup:"EmailFormBlock",FooterSocial:"SocialLogosBlock",FooterPayment:"PaymentLogosBlock"},x=o=>{const{id:e,...t}=o;return t},d=o=>typeof o=="string"?o:"",f={sm:12,md:13,lg:15},y="md",h=1.5,L={size:13,lineHeight:h,width:280},A=14,B=40,b=o=>o==="center"||o==="right"?o:"left";function G(o){const e={},t=[["padTop","sectionPaddingTop"],["padRight","sectionPaddingRight"],["padBottom","sectionPaddingBottom"],["padLeft","sectionPaddingLeft"]];for(const[s,r]of t){const n=p(o[s]);n&&(e[r]=n)}return e}function F(o,e){const t=o.props??{},s=P[o.type];if(s)return[e(s,x(t))];switch(o.type){case"FooterLogo":{const r=b(t.align),n=e("LogoBlock",{...t.reverse?{reverse:t.reverse}:{},...typeof t.customColor=="string"&&t.customColor?{customColor:t.customColor}:{},heightPx:Math.round(T*((p(t.widthPct)??100)/100)),href:"/",align:r,...G(t)}),i=d(t.tagline).trim();return i?[n,e("Text",{text:i,tone:"dim",align:r,_partStyles:{text:{...L}}})]:[n]}case"FooterText":{const r=typeof t.size=="string"&&t.size in f?t.size:y;return[e("Text",{text:d(t.text),tone:typeof t.tone=="string"?t.tone:"default",_partStyles:{text:{size:f[r],lineHeight:h}}})]}case"FooterDivider":{const r=p(t.thickness),n=p(t.lengthPct);return[e("Divider",{...r!==void 0?{thickness:r}:{},...n!==void 0?{lengthPct:n}:{},...t.hideOnMobile===!0?{hideOnMobile:!0}:{}})]}case"FooterGroup":{const r=Array.isArray(t.blocks)?t.blocks:[];return[e(u,{direction:t.direction==="horizontal"?"row":"column",gap:E("FooterGroup",t.gap),align:t.align==="center"||t.align==="end"?t.align:"start",...a,content:r.flatMap(n=>F(n,e))})]}default:return[]}}function M(o,e,t){const s=o&&Array.isArray(o.props?.blocks)?o.props.blocks:[],r=c=>e(u,{direction:"row",wrap:!0,share:"equal",gap:B,content:c}),n=[];let i=[];for(const c of s){const l=F(c,e);if(c.type==="FooterDivider"){i.length&&n.push(r(i)),i=[],n.push(...l);continue}l.length<=1?i.push(...l):i.push(e(u,{direction:"column",gap:A,align:"stretch",...a,content:l}))}(i.length||!n.length)&&n.push(r(i));const m=e(u,{direction:"column",content:[e("LegalLineBlock")]}),g=_(O,t,[...n,m]);return{...g,props:{...g.props,...o?.props?.width==="full"?{fullWidth:!0}:{}}}}export{M as boxFooterFromFooter,F as pageBlocksFromFooterBlock};
@@ -1 +1 @@
1
- import{BOX_LABEL as a,SECTION_CATALOG as p}from"./section-catalog.js";const o="content",C="Flex",n="Text & media",y="Layout & structure",i=[{type:"Eyebrow",label:"Eyebrow",retired:!0},{type:"Heading",label:"Heading",retired:!0},{type:"Text",label:"Text"},{type:"ImageBlock",label:"Image"},{type:"LogoBlock",label:"Logo"},{type:"ButtonBlock",label:"Button"},{type:"Form",label:"Form"},{type:"PostCard",label:"Post Card"},{type:"Stats",label:"Stats"},{type:"MenuBlock",label:"Menu"},{type:"EmailFormBlock",label:"Email Form"},{type:"SocialLogosBlock",label:"Social Logos"},{type:"LegalLineBlock",label:"Legal Line"},{type:"SearchBlock",label:"Search"},{type:"CartBlock",label:"Cart"},{type:"CountrySwitchBlock",label:"Country Switch"},{type:"AccountBlock",label:"Account"},{type:"ThemeSwitchBlock",label:"Theme Switch"}].map(e=>({...e,group:n})),s=(p.find(e=>e.key==="structure")?.sections??[]).map(e=>({type:e.type,label:e.label,group:y})),c=[...i,...s],l=[{type:"Eyebrow",label:"Eyebrow",retired:!0},{type:"Heading",label:"Heading",retired:!0},{type:"Text",label:"Text"},{type:"ImageBlock",label:"Image"},{type:"LogoBlock",label:"Logo"},{type:"ButtonBlock",label:"Button"},{type:"HeroGroup",label:a}],T=l.map(e=>e.type),b=1,u=l.filter(e=>e.type!=="HeroGroup");function E(e){return e<b?l:u}const B={Flex:{slot:o,choices:()=>c},Grid:{slot:o,choices:()=>c},HeroGroup:{slot:o,choices:E}};function _(e,r=0){const t=B[e];return t?{slot:t.slot,choices:t.choices(r)}:null}export{C as BOX_TYPE,o as CONTAINER_BLOCKS_SLOT,c as CONTAINER_BLOCK_CHOICES,T as HERO_GROUP_BLOCK_TYPES,b as HERO_GROUP_NEST_DEPTH,_ as containerBlocksFor};
1
+ import{BOX_LABEL as r,SECTION_CATALOG as n}from"./section-catalog.js";const o="content",C="Flex",p="Text & media",y="Layout & structure",s=[{type:"Eyebrow",label:"Eyebrow",retired:!0},{type:"Heading",label:"Heading",retired:!0},{type:"Text",label:"Text"},{type:"ImageBlock",label:"Image"},{type:"LogoBlock",label:"Logo"},{type:"ButtonBlock",label:"Button"},{type:"Form",label:"Form"},{type:"PostCard",label:"Post Card"},{type:"Stats",label:"Stats"},{type:"MenuBlock",label:"Menu"},{type:"EmailFormBlock",label:"Email Form"},{type:"SocialLogosBlock",label:"Social Logos"},{type:"PaymentLogosBlock",label:"Payment Logos"},{type:"LegalLineBlock",label:"Legal Line"},{type:"SearchBlock",label:"Search"},{type:"CartBlock",label:"Cart"},{type:"CountrySwitchBlock",label:"Country Switch"},{type:"AccountBlock",label:"Account"},{type:"ThemeSwitchBlock",label:"Theme Switch"}].map(e=>({...e,group:p})),i=(n.find(e=>e.key==="structure")?.sections??[]).map(e=>({type:e.type,label:e.label,group:y})),c=[...s,...i],l=[{type:"Eyebrow",label:"Eyebrow",retired:!0},{type:"Heading",label:"Heading",retired:!0},{type:"Text",label:"Text"},{type:"ImageBlock",label:"Image"},{type:"LogoBlock",label:"Logo"},{type:"ButtonBlock",label:"Button"},{type:"HeroGroup",label:r}],T=l.map(e=>e.type),b=1,u=l.filter(e=>e.type!=="HeroGroup");function B(e){return e<b?l:u}const E={Flex:{slot:o,choices:()=>c},Grid:{slot:o,choices:()=>c},HeroGroup:{slot:o,choices:B}};function L(e,a=0){const t=E[e];return t?{slot:t.slot,choices:t.choices(a)}:null}export{C as BOX_TYPE,o as CONTAINER_BLOCKS_SLOT,c as CONTAINER_BLOCK_CHOICES,T as HERO_GROUP_BLOCK_TYPES,b as HERO_GROUP_NEST_DEPTH,L as containerBlocksFor};
@@ -1,5 +1,5 @@
1
1
  {
2
- "contentHash": "81f2e3c31abcbfd9",
2
+ "contentHash": "035f4205f0351855",
3
3
  "schema": 1,
4
4
  "mediaFields": {
5
5
  "ImageBlock": [
@@ -40,7 +40,8 @@
40
40
  "HeroSlide": [
41
41
  "mediaImage",
42
42
  "mediaVideo",
43
- "poster"
43
+ "poster",
44
+ "videoFrame"
44
45
  ],
45
46
  "PostCard": [
46
47
  "image"
@@ -95,7 +96,8 @@
95
96
  "photo",
96
97
  "poster",
97
98
  "src",
98
- "textBgSrc"
99
+ "textBgSrc",
100
+ "videoFrame"
99
101
  ],
100
102
  "snapshotObjects": {
101
103
  "ProductGrid": {
@@ -1 +1 @@
1
- const e=new Set(["Form","Stats"]);function o(){return[...e]}function s(n){for(const t of n){if(typeof t!="string"||t.length===0)throw new Error("lib/document/nestable-content-sections: a section type must be a non-empty string");e.add(t)}}export{o as nestableContentSections,s as registerNestableContentSections};
1
+ const e=new Set(["Form","Stats","Logos"]);function o(){return[...e]}function s(n){for(const t of n){if(typeof t!="string"||t.length===0)throw new Error("lib/document/nestable-content-sections: a section type must be a non-empty string");e.add(t)}}export{o as nestableContentSections,s as registerNestableContentSections};
@@ -1 +1 @@
1
- const i=new Set(["Reviews","Cards","FAQ","Prose","ProductHero","SpecTable","ProductGrid","ParagraphsA","KeyFeatures","Stats","StatsParagraph","Chart","Mockup","Testimonials","Logos","ContactRouting","ContactLocations","SubmitBuild","ReviewForm","Form","AppointmentBooking","OrderSummary","DeliveryOptions","PaymentBadges","CheckoutCTA","Collections","AlloyWheelsListing","CatalogFilterBar","FitmentFinder","GalleryB","DocMasthead","DocBody","DocMetaCards","Masthead","FeaturedCover","LongRead","Series","Events","SectionHeader","Grid","Flex","Spacer","Divider","CustomHTML","Breadcrumb","CategoryBar","DocTabs","Hero","HeroSingle","IntroBleed","Manifesto","Timeline","TimelineTrack","Footprint","Banner","TitleWithButtons","Ticker","SubscribeBlogs","TyreSizes","TyreFitment","EuTyreLabel","SpecStrip","ProcessSteps","DetailRows","FitmentTable","CompatibleTyres","RelatedProducts","BundleOffer","Split","Gallery","Subscribe","Countdown"]),a={name:"sectionGroups",applies:(e,o)=>o.isSection(e)&&(i.has(e)||o.isHostBlock(e)),panel(e,o,t){const r=t.assignSectionGroups;e?.fields&&(e.fields=r(e.fields,o))}},s=new Set(["HeroSlide","Heading","Text","ImageBlock","ButtonBlock","HeroGroup","GalleryItem","Footer","FooterLogo","FooterMenu","FooterGroup","FooterText","PostCard","LogoBlock","CollectionCard","Eyebrow","BookingBox","SubmitBox","FooterSocial","MenuBlock","SocialLogosBlock","EmailFormBlock","SearchBlock","CartBlock","CountrySwitchBlock","AccountBlock","LegalLineBlock"]),n={name:"blockGroups",applies:e=>s.has(e),panel(e,o,t){const r=t.assignSectionGroups;e?.fields&&(e.fields=r(e.fields,o))}};export{n as blockGroups,a as sectionGroups};
1
+ const i=new Set(["Reviews","Cards","FAQ","Prose","ProductHero","SpecTable","ProductGrid","ParagraphsA","KeyFeatures","Stats","StatsParagraph","Chart","Mockup","Testimonials","Logos","ContactRouting","ContactLocations","SubmitBuild","ReviewForm","Form","AppointmentBooking","OrderSummary","DeliveryOptions","PaymentBadges","CheckoutCTA","Collections","AlloyWheelsListing","CatalogFilterBar","FitmentFinder","GalleryB","DocMasthead","DocBody","DocMetaCards","Masthead","FeaturedCover","LongRead","Series","Events","SectionHeader","Grid","Flex","Spacer","Divider","CustomHTML","Breadcrumb","CategoryBar","DocTabs","Hero","HeroSingle","IntroBleed","Manifesto","Timeline","TimelineTrack","Footprint","Banner","TitleWithButtons","Ticker","SubscribeBlogs","TyreSizes","TyreFitment","EuTyreLabel","SpecStrip","ProcessSteps","DetailRows","FitmentTable","CompatibleTyres","RelatedProducts","BundleOffer","Split","Gallery","Subscribe","Countdown"]),a={name:"sectionGroups",applies:(e,o)=>o.isSection(e)&&(i.has(e)||o.isHostBlock(e)),panel(e,o,t){const r=t.assignSectionGroups;e?.fields&&(e.fields=r(e.fields,o))}},s=new Set(["HeroSlide","Heading","Text","ImageBlock","ButtonBlock","HeroGroup","GalleryItem","Footer","FooterLogo","FooterMenu","FooterGroup","FooterText","PostCard","LogoBlock","CollectionCard","Eyebrow","BookingBox","SubmitBox","FooterSocial","FooterPayment","MenuBlock","SocialLogosBlock","PaymentLogosBlock","EmailFormBlock","SearchBlock","CartBlock","CountrySwitchBlock","AccountBlock","LegalLineBlock"]),n={name:"blockGroups",applies:e=>s.has(e),panel(e,o,t){const r=t.assignSectionGroups;e?.fields&&(e.fields=r(e.fields,o))}};export{n as blockGroups,a as sectionGroups};
@@ -0,0 +1,8 @@
1
+ export interface RootPanelHeadInput {
2
+ kind?: string | null;
3
+ pageName?: string | null;
4
+ }
5
+ export declare function rootPanelHead({ kind, pageName }: RootPanelHeadInput): {
6
+ name: string;
7
+ kindLabel: string;
8
+ };
@@ -0,0 +1 @@
1
+ import{say as e}from"../editor-words.js";import{isDynamicPageRow as r}from"../editor-page-rows.js";function t({kind:a,pageName:o}){return{name:o?.trim()||e("This page"),kindLabel:r({kind:a})?e("Template"):e("Page")}}export{t as rootPanelHead};
@@ -12,4 +12,4 @@ WHAT REPLACES IT: a Cards section with Card style set to Label only. It draws th
12
12
 
13
13
  WHAT A MERCHANT LOSES on a NEW Label only section: nothing this section had. It GAINS the Cards head split (its head can move into a box of its own), which Key Features never had: that head draws the shared \`simple\` head, eyebrow ABOVE the heading, where Key Features drew it beside.
14
14
 
15
- THE TYPE KEY STAYS AND SO DOES THE COMPONENT. Every page holding a Key Features still renders through it and can still be edited; no document is rewritten and NO MIGRATION RUNS.`,SubscribeBlogs:"card 66396 — folded into `Subscribe`, which now chooses its rail's content with a `Type` control (the newsletter's own issues, or live blog posts). The two shared 21 of their fields and rendered THE SAME BYTES from equivalent rows, so offering both asked a merchant to choose between two names for one section. The type key stays because it is stored on published pages, and the component stays because those pages still render through it."},m=["Grid","Spacer"],y=Array.from(new Set([...o.flatMap(e=>e.sections.map(t=>t.type)),...Object.keys(l)])),u=Object.fromEntries(o.flatMap(e=>e.sections.map(t=>[t.type,t.label]))),i={Heading:"general",Text:"general",Eyebrow:"general",ImageBlock:"general",LogoBlock:"general",ButtonBlock:"general",PostCard:"general",HeroSlide:"general",HeroGroup:"general",Integrations:"general",Grid:"general",TimelineTrack:"general",KeyFeatures:"general",Spacer:"general",CollectionCard:"commerce",GalleryItem:"commerce",ProductRef:"commerce",CompatibleTyres:"commerce",Header:"commerce",SearchBlock:"commerce",CartBlock:"commerce",CountrySwitchBlock:"commerce",AccountBlock:"commerce",ThemeSwitchBlock:"commerce",ProductGallery:"commerce",EuTyreLabelBlock:"commerce",SubmitBox:"service",BookingBox:"service",SubscribeBlogs:"service",RatingBlock:"service",Footer:"service",FooterLogo:"service",FooterMenu:"service",FooterDivider:"service",FooterGroup:"service",FooterText:"service",FooterEmailSignup:"service",FooterSocial:"service",MenuBlock:"service",EmailFormBlock:"service",SocialLogosBlock:"service",LegalLineBlock:"service",SiteHeader:"service",SiteFooter:"service"},a={...i,...Object.fromEntries(o.flatMap(e=>e.sections.map(t=>[t.type,t.set])))};function b(e){return Object.prototype.hasOwnProperty.call(a,e)?a[e]:void 0}function r(e){return Object.keys(a).filter(t=>a[t]===e).sort()}const g=r("general"),T=r("commerce"),E=r("service"),c="Flex",s="Box",S=`${s}es`;function d(e){return e==="section"?"Blank section":s}function w(e,t,n){return e===c?d(t):n}export{y as ALL_SECTION_TYPES,h as BLOCK_SETS,s as BOX_LABEL,S as BOX_LABEL_PLURAL,T as COMMERCE_BLOCKS,g as GENERAL_BLOCKS,c as LEVEL_NAMED_TYPE,m as RETIRED_NESTABLE_SECTIONS,l as RETIRED_SECTIONS,o as SECTION_CATALOG,u as SECTION_LABELS,E as SERVICE_BLOCKS,i as UNLISTED_BLOCK_SETS,b as blockSetOf,r as blocksInSet,p as buildBlockCategories,w as labelAtLevel,d as labelForFlex};
15
+ THE TYPE KEY STAYS AND SO DOES THE COMPONENT. Every page holding a Key Features still renders through it and can still be edited; no document is rewritten and NO MIGRATION RUNS.`,SubscribeBlogs:"card 66396 — folded into `Subscribe`, which now chooses its rail's content with a `Type` control (the newsletter's own issues, or live blog posts). The two shared 21 of their fields and rendered THE SAME BYTES from equivalent rows, so offering both asked a merchant to choose between two names for one section. The type key stays because it is stored on published pages, and the component stays because those pages still render through it."},m=["Grid","Spacer"],y=Array.from(new Set([...o.flatMap(e=>e.sections.map(t=>t.type)),...Object.keys(l)])),u=Object.fromEntries(o.flatMap(e=>e.sections.map(t=>[t.type,t.label]))),i={Heading:"general",Text:"general",Eyebrow:"general",ImageBlock:"general",LogoBlock:"general",ButtonBlock:"general",PostCard:"general",HeroSlide:"general",HeroGroup:"general",Integrations:"general",Grid:"general",TimelineTrack:"general",KeyFeatures:"general",Spacer:"general",CollectionCard:"commerce",GalleryItem:"commerce",ProductRef:"commerce",CompatibleTyres:"commerce",Header:"commerce",SearchBlock:"commerce",CartBlock:"commerce",CountrySwitchBlock:"commerce",AccountBlock:"commerce",ThemeSwitchBlock:"commerce",ProductGallery:"commerce",EuTyreLabelBlock:"commerce",SubmitBox:"service",BookingBox:"service",SubscribeBlogs:"service",RatingBlock:"service",Footer:"service",FooterLogo:"service",FooterMenu:"service",FooterDivider:"service",FooterGroup:"service",FooterText:"service",FooterEmailSignup:"service",FooterSocial:"service",FooterPayment:"service",MenuBlock:"service",EmailFormBlock:"service",SocialLogosBlock:"service",PaymentLogosBlock:"service",LegalLineBlock:"service",SiteHeader:"service",SiteFooter:"service"},a={...i,...Object.fromEntries(o.flatMap(e=>e.sections.map(t=>[t.type,t.set])))};function b(e){return Object.prototype.hasOwnProperty.call(a,e)?a[e]:void 0}function r(e){return Object.keys(a).filter(t=>a[t]===e).sort()}const g=r("general"),T=r("commerce"),E=r("service"),c="Flex",s="Box",S=`${s}es`;function d(e){return e==="section"?"Blank section":s}function w(e,t,n){return e===c?d(t):n}export{y as ALL_SECTION_TYPES,h as BLOCK_SETS,s as BOX_LABEL,S as BOX_LABEL_PLURAL,T as COMMERCE_BLOCKS,g as GENERAL_BLOCKS,c as LEVEL_NAMED_TYPE,m as RETIRED_NESTABLE_SECTIONS,l as RETIRED_SECTIONS,o as SECTION_CATALOG,u as SECTION_LABELS,E as SERVICE_BLOCKS,i as UNLISTED_BLOCK_SETS,b as blockSetOf,r as blocksInSet,p as buildBlockCategories,w as labelAtLevel,d as labelForFlex};
@@ -1 +1 @@
1
- import{CUSTOM_FIELD_VALUES as n}from"./neutralization-contracts.js";import{HYDRATED_LISTS as u,SNAPSHOT_OBJECTS as s}from"./snapshot-contracts.js";function S(){const e=new Set([...Object.keys(s),...Object.keys(u)]);for(const[t,o]of Object.entries(n))for(const r of Object.values(o))r.verb==="snapshot"&&e.add(t);return[...e].sort()}function c(e){const t=new Set([...Object.keys(s[e]??{}),...u[e]??[]]);for(const[o,r]of Object.entries(n[e]??{}))r.verb==="snapshot"&&t.add(o);return[...t].sort()}const p={CollectionCard:"product",FooterMenu:"menu",Gallery:"product",GalleryItem:"product",ProductGrid:"product",ProductHero:"product",SpecTable:"product",Events:"blog",FeaturedCover:"blog",LongRead:"blog",SubscribeBlogs:"blog"},i={product:"Synced from the product.",blog:"Synced from the blog post.",menu:"Synced from the site menu."},O="Open",g={product:{type:"storefront-editor:open-product",needsSlug:!0},blog:{type:"storefront-editor:open-post",needsSlug:!0},menu:{type:"storefront-editor:open-menus",needsSlug:!1}};function b(e){const o=e?.source?.slug;return typeof o=="string"&&o.length>0?o:void 0}function d(e){return p[e]??null}function m(e,t){const o=d(e);return o&&c(e).includes(t)?o:null}function a(e){const o=e?.menu?.id;return typeof o=="string"&&o.length>0?o:void 0}export{p as PART_SOURCES,g as SOURCE_ACTIONS,O as SOURCE_ACTION_LABEL,i as SOURCE_LINES,c as hydratedPropsOf,m as partSourceNoteFor,d as partSourceOf,S as sourceBoundBlocks,a as sourceMenuIdOf,b as sourceSlugOf};
1
+ import{CUSTOM_FIELD_VALUES as n}from"./neutralization-contracts.js";import{HYDRATED_LISTS as u,SNAPSHOT_OBJECTS as c}from"./snapshot-contracts.js";import{nonEmptyString as s}from"../non-empty-string.js";function O(){const o=new Set([...Object.keys(c),...Object.keys(u)]);for(const[t,e]of Object.entries(n))for(const r of Object.values(e))r.verb==="snapshot"&&o.add(t);return[...o].sort()}function p(o){const t=new Set([...Object.keys(c[o]??{}),...u[o]??[]]);for(const[e,r]of Object.entries(n[o]??{}))r.verb==="snapshot"&&t.add(e);return[...t].sort()}const d={CollectionCard:"product",FooterMenu:"menu",Gallery:"product",GalleryItem:"product",ProductGrid:"product",ProductHero:"product",SpecTable:"product",Events:"blog",FeaturedCover:"blog",LongRead:"blog",SubscribeBlogs:"blog"},m={product:"Synced from the product.",blog:"Synced from the blog post.",menu:"Synced from the site menu."},b="Open",g={product:{type:"storefront-editor:open-product",needsSlug:!0},blog:{type:"storefront-editor:open-post",needsSlug:!0},menu:{type:"storefront-editor:open-menus",needsSlug:!1}};function a(o){const e=o?.source?.slug;return s(e)}function l(o){return d[o]??null}function y(o,t){const e=l(o);return e&&p(o).includes(t)?e:null}function E(o){const e=o?.menu?.id;return s(e)}export{d as PART_SOURCES,g as SOURCE_ACTIONS,b as SOURCE_ACTION_LABEL,m as SOURCE_LINES,p as hydratedPropsOf,y as partSourceNoteFor,l as partSourceOf,O as sourceBoundBlocks,E as sourceMenuIdOf,a as sourceSlugOf};