@riverbankcms/sdk 0.77.0 → 0.78.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 (237) hide show
  1. package/README.md +69 -0
  2. package/dist/{PreviewEditorSidebar-XSX7QKHQ.mjs → PreviewEditorSidebar-RIKFQ72L.mjs} +4916 -4847
  3. package/dist/{PreviewEditorUI-YZNEZ3QD.mjs → PreviewEditorUI-XO7TUWKK.mjs} +3 -3
  4. package/dist/SdkPreviewModeRuntime-LAGYMPNF.mjs +8 -0
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +194 -184
  6. package/dist/_dts/api/src/accessAdmin.d.ts +5 -0
  7. package/dist/_dts/api/src/billing.d.ts +3 -26
  8. package/dist/_dts/api/src/bookingVerticals.d.ts +4 -0
  9. package/dist/_dts/api/src/content-editor.d.ts +1 -0
  10. package/dist/_dts/api/src/demoDashboardMutationSurfaces.d.ts +46 -0
  11. package/dist/_dts/api/src/endpoints.d.ts +8 -0
  12. package/dist/_dts/api/src/index.d.ts +14 -2
  13. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +87 -0
  14. package/dist/_dts/api/src/navigation/dashboardDemoNav.d.ts +5 -0
  15. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +45 -0
  16. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +42 -0
  17. package/dist/_dts/api/src/navigation/dashboardTeamMemberNav.d.ts +24 -0
  18. package/dist/_dts/api/src/navigation/linkUrlType.d.ts +3 -0
  19. package/dist/_dts/api/src/navigation.d.ts +12 -0
  20. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +55 -26
  21. package/dist/_dts/api/src/staffAccess.d.ts +79 -0
  22. package/dist/_dts/api/src/types.d.ts +3 -1
  23. package/dist/_dts/api/src/workflows/automaticWorkflowTriggers.d.ts +21 -0
  24. package/dist/_dts/blocks/src/client/site-chrome.d.ts +4 -1
  25. package/dist/_dts/blocks/src/customBlockRegistry.d.ts +20 -1
  26. package/dist/_dts/blocks/src/index.d.ts +3 -2
  27. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +288 -288
  28. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +288 -288
  29. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +288 -288
  30. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +288 -288
  31. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +288 -288
  32. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +2 -2
  33. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +294 -289
  34. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +288 -288
  35. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +1 -1
  36. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +21 -21
  37. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +288 -288
  38. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +288 -288
  39. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +288 -288
  40. package/dist/_dts/blocks/src/system/blocks/site-header.d.ts +2 -2
  41. package/dist/_dts/blocks/src/system/data/index.d.ts +5 -3
  42. package/dist/_dts/blocks/src/system/data/previewResolvedDataState.d.ts +45 -0
  43. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +2 -1
  44. package/dist/_dts/blocks/src/system/fragments/library/faqAccordion.d.ts +5 -0
  45. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +5 -0
  46. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +29 -29
  47. package/dist/_dts/blocks/src/system/node/fragments/headingDecoration.d.ts +10 -0
  48. package/dist/_dts/blocks/src/system/node/fragments/index.d.ts +1 -0
  49. package/dist/_dts/blocks/src/system/node/fragments/styledSection.d.ts +9 -0
  50. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +3 -2
  51. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
  52. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  53. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +43 -8
  54. package/dist/_dts/blocks/src/system/runtime/components/multi-step/runtimeFormValidation.d.ts +28 -0
  55. package/dist/_dts/blocks/src/system/runtime/header/shared.d.ts +8 -7
  56. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCompactRow.d.ts +1 -4
  57. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +7 -0
  58. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +2 -8
  59. package/dist/_dts/blocks/src/system/runtime/nodes/header-section.server.d.ts +2 -9
  60. package/dist/_dts/blocks/src/system/runtime/nodes/shop-cart-discount-ui.d.ts +5 -0
  61. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout-form.d.ts +76 -0
  62. package/dist/_dts/blocks/src/system/runtime/nodes/shop-checkout.state.d.ts +1 -4
  63. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce-store.d.ts +2 -0
  64. package/dist/_dts/blocks/src/system/runtime/nodes/shop-commerce.shared.d.ts +1 -0
  65. package/dist/_dts/blocks/src/system/runtime/nodes/shop-discount-apply.state.d.ts +52 -0
  66. package/dist/_dts/blocks/src/system/runtime/nodes/shop.state.d.ts +2 -4
  67. package/dist/_dts/blocks/src/system/runtime/nodes/useDiscountApply.d.ts +21 -0
  68. package/dist/_dts/blocks/src/system/runtime/shared/components/DiscountCodeDisclosure.d.ts +54 -0
  69. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -0
  70. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  71. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +4 -4
  72. package/dist/_dts/blocks/src/system/transforms/registry/ui.d.ts +1 -1
  73. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -1
  74. package/dist/_dts/content-editor/src/contentTypeEditorContentState.d.ts +26 -0
  75. package/dist/_dts/content-editor/src/definitions/factory.d.ts +75 -0
  76. package/dist/_dts/content-editor/src/entryWorkflows.d.ts +2 -0
  77. package/dist/_dts/content-editor/src/footerBlocksEditorState.d.ts +76 -0
  78. package/dist/_dts/content-editor/src/index.d.ts +5 -0
  79. package/dist/_dts/content-editor/src/pageWorkflowContent.d.ts +29 -0
  80. package/dist/_dts/content-model/src/content-types/schema.d.ts +3 -3
  81. package/dist/_dts/content-model/src/index.d.ts +1 -0
  82. package/dist/_dts/content-model/src/routeTemplate.d.ts +4 -0
  83. package/dist/_dts/content-model/src/templates/editorState.d.ts +25 -0
  84. package/dist/_dts/core/src/csv-cells.d.ts +10 -0
  85. package/dist/_dts/core/src/csv-date-filter.d.ts +27 -0
  86. package/dist/_dts/core/src/csv-escape.d.ts +1 -0
  87. package/dist/_dts/core/src/csv-filename.d.ts +18 -0
  88. package/dist/_dts/core/src/csv-render.d.ts +4 -0
  89. package/dist/_dts/core/src/csv-types.d.ts +116 -0
  90. package/dist/_dts/core/src/currency-format.d.ts +4 -0
  91. package/dist/_dts/core/src/demo-capability-policy.d.ts +29 -0
  92. package/dist/_dts/core/src/demo-claim-access.d.ts +14 -0
  93. package/dist/_dts/core/src/demo-lifecycle-status.d.ts +11 -0
  94. package/dist/_dts/core/src/demo-runtime.d.ts +47 -0
  95. package/dist/_dts/core/src/duration.d.ts +14 -0
  96. package/dist/_dts/core/src/email-format.d.ts +10 -0
  97. package/dist/_dts/core/src/field-errors.d.ts +1 -0
  98. package/dist/_dts/core/src/form-submission-preview.d.ts +24 -0
  99. package/dist/_dts/core/src/index.d.ts +20 -0
  100. package/dist/_dts/core/src/number-input.d.ts +22 -0
  101. package/dist/_dts/core/src/public-url-validation.d.ts +12 -0
  102. package/dist/_dts/core/src/slug.d.ts +39 -0
  103. package/dist/_dts/core/src/string.d.ts +19 -0
  104. package/dist/_dts/core/src/uuid.d.ts +6 -0
  105. package/dist/_dts/db/src/schemas/forms.d.ts +50 -50
  106. package/dist/_dts/media-core/src/assetsInUseSummary.d.ts +34 -0
  107. package/dist/_dts/media-core/src/bulkDeletePlanning.d.ts +24 -0
  108. package/dist/_dts/media-core/src/canonicalCropReview.d.ts +66 -0
  109. package/dist/_dts/media-core/src/classifyAllPlanning.d.ts +48 -0
  110. package/dist/_dts/media-core/src/filename.d.ts +1 -0
  111. package/dist/_dts/media-core/src/index.d.ts +10 -0
  112. package/dist/_dts/media-core/src/mediaAssetUsageStatus.d.ts +47 -0
  113. package/dist/_dts/media-core/src/mediaSettingsState.d.ts +3 -0
  114. package/dist/_dts/media-core/src/portableMediaReferences.d.ts +38 -0
  115. package/dist/_dts/media-core/src/uploadVerificationContract.d.ts +28 -0
  116. package/dist/_dts/media-core/src/videoAssetRepair.d.ts +38 -0
  117. package/dist/_dts/media-editor/src/mediaEditorDebug.d.ts +1 -0
  118. package/dist/_dts/path-utils/src/index.d.ts +8 -0
  119. package/dist/_dts/path-utils/src/redirectPaths.d.ts +26 -0
  120. package/dist/_dts/path-utils/src/safeAppPath.d.ts +26 -0
  121. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeButton.d.ts +2 -1
  122. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -0
  123. package/dist/_dts/preview-next/src/client/preview/previewDocumentFrame.d.ts +31 -0
  124. package/dist/_dts/sdk/src/client/error.d.ts +3 -0
  125. package/dist/_dts/sdk/src/client/index.d.ts +2 -2
  126. package/dist/_dts/sdk/src/client/types.d.ts +37 -19
  127. package/dist/_dts/sdk/src/contracts/theme.d.ts +1 -1
  128. package/dist/_dts/sdk/src/index.d.ts +2 -2
  129. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +16 -16
  130. package/dist/_dts/sdk/src/next/content-load-failure.d.ts +51 -0
  131. package/dist/_dts/sdk/src/next/index.d.ts +2 -1
  132. package/dist/_dts/sdk/src/next/types.d.ts +19 -0
  133. package/dist/_dts/sdk/src/portal/redirects.d.ts +1 -1
  134. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +2 -2
  135. package/dist/_dts/sdk/src/routing/index.d.ts +3 -2
  136. package/dist/_dts/sdk/src/routing/resolvePageContent.d.ts +71 -6
  137. package/dist/_dts/sdk/src/version.d.ts +1 -1
  138. package/dist/_dts/site-commands/src/commands.d.ts +12 -12
  139. package/dist/_dts/site-commands/src/index.d.ts +1 -0
  140. package/dist/_dts/site-commands/src/pagePaths.d.ts +6 -0
  141. package/dist/_dts/theme-core/src/accordions/siteStyleDefaults.d.ts +26 -0
  142. package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -0
  143. package/dist/_dts/theme-core/src/blocks/vars/index.d.ts +1 -0
  144. package/dist/_dts/theme-core/src/fonts/index.d.ts +1 -0
  145. package/dist/_dts/theme-core/src/fonts/uploadFormat.d.ts +44 -0
  146. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  147. package/dist/_dts/theme-core/src/index.d.ts +3 -1
  148. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +63 -51
  149. package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +6 -1
  150. package/dist/_dts/theme-core/src/navigation/types.d.ts +12 -0
  151. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +3 -3
  152. package/dist/_dts/theme-core/src/runtime/themeCssVarNames.d.ts +7 -0
  153. package/dist/_dts/theme-core/src/schema.d.ts +90 -48
  154. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +214 -34
  155. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +5 -2
  156. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +214 -34
  157. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +25 -1
  158. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +35 -7
  159. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -4
  160. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +96 -34
  161. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +4 -2
  162. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +9 -1
  163. package/dist/_dts/theme-core/src/site-styles/types.d.ts +27 -2
  164. package/dist/_dts/theme-core/src/siteChrome.d.ts +17 -34
  165. package/dist/_dts/theme-core/src/siteChromeOverlayClearance.d.ts +22 -0
  166. package/dist/_dts/theme-core/src/siteChromePlacement.d.ts +22 -0
  167. package/dist/_dts/theme-core/src/siteChromePlanning.d.ts +32 -0
  168. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +2 -2
  169. package/dist/{chunk-EAWHBECW.mjs → chunk-F7RTCZYN.mjs} +229 -50
  170. package/dist/{chunk-GSQX43EZ.mjs → chunk-NIDXI46P.mjs} +22 -41
  171. package/dist/{chunk-WLQBJN2Z.mjs → chunk-OECWLDHN.mjs} +4538 -1911
  172. package/dist/{chunk-VX7B5VAC.mjs → chunk-SVMMM2NA.mjs} +8 -0
  173. package/dist/{chunk-6SMUFTXD.mjs → chunk-SXOLGNMX.mjs} +1 -1
  174. package/dist/{chunk-ANKDYZ2E.mjs → chunk-TXDES5P2.mjs} +2 -2
  175. package/dist/cli/index.mjs +2036 -594
  176. package/dist/client/{accordion-RZMQSYLR.mjs → accordion-EVDEOUPR.mjs} +2 -2
  177. package/dist/client/{bookingForm-NF4ASVNV.mjs → bookingForm-DIHBLC64.mjs} +27 -30
  178. package/dist/client/bookings.mjs +3707 -259
  179. package/dist/client/{carousel-LDX47ZIK.mjs → carousel-FEBQHIWI.mjs} +3 -4
  180. package/dist/client/{cart-RGXDS5F4.mjs → cart-7CKSXAE4.mjs} +8 -8
  181. package/dist/client/{checkout-P7WWSNNY.mjs → checkout-WKYCANLV.mjs} +8 -8
  182. package/dist/client/{chunk-JNC7CGHX.mjs → chunk-2SAVKN2M.mjs} +2 -2
  183. package/dist/client/{chunk-TQ5MSPDX.mjs → chunk-36WJCERQ.mjs} +1 -1
  184. package/dist/client/{chunk-R56FQ3RR.mjs → chunk-65F47D7Y.mjs} +280 -71
  185. package/dist/client/{chunk-L3DNHIJX.mjs → chunk-GUK2FPXQ.mjs} +23 -45
  186. package/dist/client/{chunk-PMAIXMAB.mjs → chunk-IVNCUVAV.mjs} +26 -21
  187. package/dist/client/{chunk-II7O4XN3.mjs → chunk-OFMSCGNY.mjs} +2 -2
  188. package/dist/client/chunk-PD6NBCEY.mjs +66 -0
  189. package/dist/client/{chunk-GMVTOKYG.mjs → chunk-RV6FX7UH.mjs} +510 -64
  190. package/dist/client/{chunk-E2TDNXCL.mjs → chunk-RZDWX7QW.mjs} +2 -1
  191. package/dist/client/{chunk-M3L3KYYR.mjs → chunk-UDNSI5PY.mjs} +12 -0
  192. package/dist/client/{chunk-JEZECJ3W.mjs → chunk-VPPMNXCF.mjs} +129 -3
  193. package/dist/client/{chunk-UFSWADAO.mjs → chunk-YDSEG6GZ.mjs} +5 -66
  194. package/dist/client/client.mjs +8983 -6152
  195. package/dist/client/{courseRegistration-7F65K5ZR.mjs → courseRegistration-5QF2PHKM.mjs} +14 -11
  196. package/dist/client/{eventCalendar-GLSC5KTL.mjs → eventCalendar-4ZOSETDU.mjs} +9 -9
  197. package/dist/client/{eventCombined-ZHK4WKUR.mjs → eventCombined-WQGU7JUX.mjs} +9 -9
  198. package/dist/client/{eventDetails-E3PJYBIN.mjs → eventDetails-AYWVUJ5Y.mjs} +9 -9
  199. package/dist/client/{eventListing-EMS3WC3E.mjs → eventListing-NT7C6UT5.mjs} +9 -9
  200. package/dist/client/{eventRegistration-NZOTVNPI.mjs → eventRegistration-OH24F4ZJ.mjs} +9 -9
  201. package/dist/client/{form-ETFZFATW.mjs → form-7L42SRBB.mjs} +6 -6
  202. package/dist/client/{headerSection-4LBP7ULT.mjs → headerSection-OZRZNZ52.mjs} +3 -3
  203. package/dist/client/hooks.mjs +1388 -427
  204. package/dist/client/{locationMap-5M655YSJ.mjs → locationMap-ZBXRPQ7C.mjs} +2 -2
  205. package/dist/client/{newsletterForm-QOUYW44O.mjs → newsletterForm-SNAGFF2I.mjs} +3 -3
  206. package/dist/client/{productDetail-O4DOCWQG.mjs → productDetail-I46BOFGV.mjs} +8 -8
  207. package/dist/client/{productList-A5RO5WIS.mjs → productList-BOYHTYI6.mjs} +8 -8
  208. package/dist/client/rendering/client.mjs +7090 -2645
  209. package/dist/client/rendering/islands.mjs +19 -19
  210. package/dist/client/rendering.mjs +7395 -4767
  211. package/dist/client/{shop-L4MZH4I2.mjs → shop-XTXPZTKR.mjs} +8 -8
  212. package/dist/preview-next/before-render.mjs +8 -0
  213. package/dist/preview-next/client/runtime.mjs +5 -5
  214. package/dist/preview-next/editor-chrome.css +10 -0
  215. package/dist/preview-next/middleware.mjs +8 -0
  216. package/dist/{sdk-runtime-Q6MTR4KL.mjs → sdk-runtime-ZJLKC6DR.mjs} +6 -6
  217. package/dist/server/components.mjs +4175 -2480
  218. package/dist/server/config-validation.mjs +1619 -658
  219. package/dist/server/config.mjs +1619 -658
  220. package/dist/server/data.mjs +1388 -427
  221. package/dist/server/index.mjs +488 -246
  222. package/dist/server/next.mjs +5607 -3354
  223. package/dist/server/page-converter.mjs +912 -259
  224. package/dist/server/prebuild.mjs +1 -1
  225. package/dist/server/rendering/server.mjs +4176 -2481
  226. package/dist/server/rendering.mjs +4194 -2486
  227. package/dist/server/routing.mjs +2078 -639
  228. package/dist/server/server.mjs +1886 -685
  229. package/dist/server/theme-bridge.mjs +4441 -1300
  230. package/dist/server/theme.mjs +89 -12
  231. package/dist/styles/index.css +1576 -1083
  232. package/package.json +2 -1
  233. package/dist/SdkPreviewModeRuntime-5FS5E6BI.mjs +0 -8
  234. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/DiscountCodeSection.d.ts +0 -7
  235. package/dist/_dts/preview-next/src/client/widgets/PreviewMediaField.d.ts +0 -4
  236. package/dist/client/chunk-OJPZEZU2.mjs +0 -31
  237. package/dist/client/chunk-RTZ3JKKX.mjs +0 -178
@@ -1059,6 +1059,9 @@ function makeBoundaryId(previousBlockId, nextBlockId) {
1059
1059
  const next = encodeURIComponent(nextBlockId);
1060
1060
  return asDesignBoundaryId(`boundary:${previous}:${next}`);
1061
1061
  }
1062
+ function assertNever(value, message = "Unhandled Theme V2 variant") {
1063
+ throw new Error(`${message}: ${String(value)}`);
1064
+ }
1062
1065
  function brandNonEmptyString(value, label) {
1063
1066
  if (value.length === 0) {
1064
1067
  throw new Error(`${label} must be a non-empty string.`);
@@ -1086,6 +1089,10 @@ var tileTreatmentValues = [
1086
1089
  "quiet",
1087
1090
  "brand-depth"
1088
1091
  ];
1092
+ var eventListTreatmentValues = [
1093
+ "plain",
1094
+ "lined-panel"
1095
+ ];
1089
1096
  var eyebrowTreatmentValues = [
1090
1097
  "plain",
1091
1098
  "pill",
@@ -1143,6 +1150,7 @@ function defineBlockDesignCapability(capability) {
1143
1150
  imageSurfaceMotions: capability.imageSurfaceMotions ?? ["static"],
1144
1151
  testimonialCardTreatments: capability.testimonialCardTreatments ?? ["default"],
1145
1152
  tileTreatments: capability.tileTreatments ?? ["default"],
1153
+ eventListTreatments: capability.eventListTreatments ?? ["plain"],
1146
1154
  eyebrowTreatments: capability.eyebrowTreatments ?? ["plain"],
1147
1155
  ...capability.headingDecorations ? { headingDecorations: capability.headingDecorations } : {},
1148
1156
  ...capability.accordionIconSets ? { accordionIconSets: capability.accordionIconSets } : {}
@@ -1167,9 +1175,98 @@ var blockAppearancePresets = [
1167
1175
  transitionAfter: "soft-fade-short",
1168
1176
  emphasis: "high",
1169
1177
  sectionHeight: "hero",
1178
+ heroComposition: "center",
1179
+ heroTypographyScale: "display",
1170
1180
  imageSurfaceTreatment: { kind: "neutral-wash" }
1171
1181
  }
1172
1182
  }),
1183
+ defineBlockAppearancePreset({
1184
+ kind: "block-design",
1185
+ id: "hero-bottom-left-panel",
1186
+ target: "hero",
1187
+ label: "Bottom-left panel hero",
1188
+ blockKinds: ["block.hero"],
1189
+ constraints: {
1190
+ layoutFamilies: ["centered", "compact"]
1191
+ },
1192
+ optionGroups: [
1193
+ {
1194
+ id: "image-surface-treatment",
1195
+ label: "Treatment",
1196
+ selectedOptionId: "neutral-scrim",
1197
+ options: [
1198
+ {
1199
+ id: "neutral-scrim",
1200
+ label: "Neutral scrim",
1201
+ designPatch: {
1202
+ imageSurfaceTreatment: { kind: "neutral-scrim", intensity: "balanced" }
1203
+ }
1204
+ },
1205
+ {
1206
+ id: "brand-scrim-primary",
1207
+ label: "Brand scrim",
1208
+ designPatch: {
1209
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary", intensity: "balanced" }
1210
+ }
1211
+ }
1212
+ ]
1213
+ }
1214
+ ],
1215
+ layoutPatches: [
1216
+ {
1217
+ constraints: {
1218
+ layoutVariantKeys: ["micro"]
1219
+ },
1220
+ designPatch: {
1221
+ sectionHeight: "banner",
1222
+ heroTypographyScale: "editorial"
1223
+ }
1224
+ }
1225
+ ],
1226
+ design: {
1227
+ sectionSurface: "hero-image",
1228
+ contentFrame: panelFrame("raised"),
1229
+ itemSurface: "none",
1230
+ transitionAfter: "soft-fade-short",
1231
+ emphasis: "high",
1232
+ sectionHeight: "immersive",
1233
+ heroComposition: "bottom-left",
1234
+ heroTypographyScale: "display",
1235
+ imageSurfaceTreatment: { kind: "neutral-scrim", intensity: "balanced" }
1236
+ }
1237
+ }),
1238
+ defineBlockAppearancePreset({
1239
+ kind: "block-design",
1240
+ id: "hero-poster-image",
1241
+ target: "hero",
1242
+ label: "Poster image hero",
1243
+ blockKinds: ["block.hero"],
1244
+ constraints: {
1245
+ layoutFamilies: ["centered", "compact"]
1246
+ },
1247
+ layoutPatches: [
1248
+ {
1249
+ constraints: {
1250
+ layoutVariantKeys: ["micro"]
1251
+ },
1252
+ designPatch: {
1253
+ sectionHeight: "banner",
1254
+ heroTypographyScale: "display"
1255
+ }
1256
+ }
1257
+ ],
1258
+ design: {
1259
+ sectionSurface: "hero-image",
1260
+ contentFrame: plainFrame,
1261
+ itemSurface: "none",
1262
+ transitionAfter: "soft-fade-short",
1263
+ emphasis: "high",
1264
+ sectionHeight: "immersive",
1265
+ heroComposition: "center",
1266
+ heroTypographyScale: "poster",
1267
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary", intensity: "strong" }
1268
+ }
1269
+ }),
1173
1270
  defineBlockAppearancePreset({
1174
1271
  kind: "block-design",
1175
1272
  id: "hero-brand-scrim",
@@ -1219,6 +1316,8 @@ var blockAppearancePresets = [
1219
1316
  transitionAfter: "soft-fade-short",
1220
1317
  emphasis: "high",
1221
1318
  sectionHeight: "immersive",
1319
+ heroComposition: "center",
1320
+ heroTypographyScale: "display",
1222
1321
  imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
1223
1322
  }
1224
1323
  }),
@@ -1271,6 +1370,8 @@ var blockAppearancePresets = [
1271
1370
  transitionAfter: "soft-fade-short",
1272
1371
  emphasis: "high",
1273
1372
  sectionHeight: "immersive",
1373
+ heroComposition: "center",
1374
+ heroTypographyScale: "display",
1274
1375
  imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" },
1275
1376
  imageSurfaceMotion: "fixed-frame",
1276
1377
  eyebrowTreatment: "accent-pill-bounce"
@@ -1291,6 +1392,8 @@ var blockAppearancePresets = [
1291
1392
  itemSurface: "none",
1292
1393
  transitionAfter: "soft-fade-short",
1293
1394
  emphasis: "high",
1395
+ heroComposition: "center",
1396
+ heroTypographyScale: "editorial",
1294
1397
  eyebrowTreatment: "accent-pill-bounce"
1295
1398
  }
1296
1399
  }),
@@ -1305,7 +1408,82 @@ var blockAppearancePresets = [
1305
1408
  contentFrame: panelFrame("inset"),
1306
1409
  itemSurface: "none",
1307
1410
  transitionAfter: "none",
1308
- emphasis: "high"
1411
+ emphasis: "high",
1412
+ heroComposition: "center",
1413
+ heroTypographyScale: "editorial"
1414
+ }
1415
+ }),
1416
+ defineBlockAppearancePreset({
1417
+ kind: "block-design",
1418
+ id: "hero-split-editorial",
1419
+ target: "hero",
1420
+ label: "Editorial split hero",
1421
+ blockKinds: ["block.hero"],
1422
+ constraints: {
1423
+ layoutFamilies: ["split"]
1424
+ },
1425
+ design: {
1426
+ sectionSurface: "base",
1427
+ contentFrame: plainFrame,
1428
+ itemSurface: "none",
1429
+ transitionAfter: "soft-fade-short",
1430
+ emphasis: "high",
1431
+ heroTypographyScale: "editorial"
1432
+ }
1433
+ }),
1434
+ defineBlockAppearancePreset({
1435
+ kind: "block-design",
1436
+ id: "hero-split-brand",
1437
+ target: "hero",
1438
+ label: "Brand split hero",
1439
+ blockKinds: ["block.hero"],
1440
+ constraints: {
1441
+ layoutFamilies: ["split"]
1442
+ },
1443
+ design: {
1444
+ sectionSurface: "brand-depth-band",
1445
+ contentFrame: plainFrame,
1446
+ itemSurface: "none",
1447
+ transitionAfter: "soft-fade-short",
1448
+ emphasis: "high",
1449
+ heroTypographyScale: "display",
1450
+ eyebrowTreatment: "accent-pill-bounce"
1451
+ }
1452
+ }),
1453
+ defineBlockAppearancePreset({
1454
+ kind: "block-design",
1455
+ id: "hero-split-soft-panel",
1456
+ target: "hero",
1457
+ label: "Soft panel split hero",
1458
+ blockKinds: ["block.hero"],
1459
+ constraints: {
1460
+ layoutFamilies: ["split"]
1461
+ },
1462
+ design: {
1463
+ sectionSurface: "muted-band",
1464
+ contentFrame: panelFrame("raised"),
1465
+ itemSurface: "none",
1466
+ transitionAfter: "soft-fade-short",
1467
+ emphasis: "high",
1468
+ heroTypographyScale: "editorial"
1469
+ }
1470
+ }),
1471
+ defineBlockAppearancePreset({
1472
+ kind: "block-design",
1473
+ id: "hero-split-accent",
1474
+ target: "hero",
1475
+ label: "Accent split hero",
1476
+ blockKinds: ["block.hero"],
1477
+ constraints: {
1478
+ layoutFamilies: ["split"]
1479
+ },
1480
+ design: {
1481
+ sectionSurface: "accent-band",
1482
+ contentFrame: panelFrame("raised"),
1483
+ itemSurface: "none",
1484
+ transitionAfter: "soft-fade-short",
1485
+ emphasis: "high",
1486
+ heroTypographyScale: "display"
1309
1487
  }
1310
1488
  }),
1311
1489
  defineBlockAppearancePreset({
@@ -1338,9 +1516,9 @@ var blockAppearancePresets = [
1338
1516
  }),
1339
1517
  defineBlockAppearancePreset({
1340
1518
  kind: "block-design",
1341
- id: "intro-soft-earth-statement",
1519
+ id: "intro-organic-statement",
1342
1520
  target: "intro",
1343
- label: "Soft Earth intro statement",
1521
+ label: "Organic intro statement",
1344
1522
  blockKinds: ["block.intro"],
1345
1523
  design: {
1346
1524
  sectionSurface: "base",
@@ -1371,9 +1549,9 @@ var blockAppearancePresets = [
1371
1549
  }),
1372
1550
  defineBlockAppearancePreset({
1373
1551
  kind: "block-design",
1374
- id: "feature-cards-soft-earth-offerings",
1552
+ id: "feature-cards-raised-rule",
1375
1553
  target: "feature-cards",
1376
- label: "Soft Earth offering cards",
1554
+ label: "Raised cards with rule",
1377
1555
  blockKinds: ["block.feature-cards"],
1378
1556
  design: {
1379
1557
  sectionSurface: "base",
@@ -1402,6 +1580,21 @@ var blockAppearancePresets = [
1402
1580
  emphasis: "medium"
1403
1581
  }
1404
1582
  }),
1583
+ defineBlockAppearancePreset({
1584
+ kind: "block-design",
1585
+ id: "events-lined-panel",
1586
+ target: "events",
1587
+ label: "Lined event panel",
1588
+ blockKinds: ["block.event-calendar", "block.event-listing"],
1589
+ design: {
1590
+ sectionSurface: "base",
1591
+ contentFrame: plainFrame,
1592
+ itemSurface: "none",
1593
+ transitionAfter: "none",
1594
+ emphasis: "medium",
1595
+ eventListTreatment: "lined-panel"
1596
+ }
1597
+ }),
1405
1598
  defineBlockAppearancePreset({
1406
1599
  kind: "block-design",
1407
1600
  id: "schedule-details-accent-section",
@@ -1461,9 +1654,9 @@ var blockAppearancePresets = [
1461
1654
  }),
1462
1655
  defineBlockAppearancePreset({
1463
1656
  kind: "block-design",
1464
- id: "testimonials-carded-proof",
1657
+ id: "testimonials-simple-cards",
1465
1658
  target: "testimonials",
1466
- label: "Carded social proof",
1659
+ label: "Simple testimonial cards",
1467
1660
  blockKinds: ["block.testimonials"],
1468
1661
  design: {
1469
1662
  sectionSurface: "base",
@@ -1475,9 +1668,9 @@ var blockAppearancePresets = [
1475
1668
  }),
1476
1669
  defineBlockAppearancePreset({
1477
1670
  kind: "block-design",
1478
- id: "testimonials-contained-proof",
1671
+ id: "testimonials-raised-panel",
1479
1672
  target: "testimonials",
1480
- label: "Contained social proof",
1673
+ label: "Raised testimonial panel",
1481
1674
  blockKinds: ["block.testimonials"],
1482
1675
  design: {
1483
1676
  sectionSurface: "muted-band",
@@ -1489,9 +1682,9 @@ var blockAppearancePresets = [
1489
1682
  }),
1490
1683
  defineBlockAppearancePreset({
1491
1684
  kind: "block-design",
1492
- id: "testimonials-dark-proof",
1685
+ id: "testimonials-accent-panel",
1493
1686
  target: "testimonials",
1494
- label: "Dark proof panel",
1687
+ label: "Accent testimonial panel",
1495
1688
  blockKinds: ["block.testimonials"],
1496
1689
  design: {
1497
1690
  sectionSurface: "accent-band",
@@ -1503,9 +1696,9 @@ var blockAppearancePresets = [
1503
1696
  }),
1504
1697
  defineBlockAppearancePreset({
1505
1698
  kind: "block-design",
1506
- id: "testimonials-accent-quote-proof",
1699
+ id: "testimonials-accent-quote-cards",
1507
1700
  target: "testimonials",
1508
- label: "Accent quote proof",
1701
+ label: "Accent quote cards",
1509
1702
  blockKinds: ["block.testimonials"],
1510
1703
  design: {
1511
1704
  sectionSurface: "accent-band",
@@ -1518,9 +1711,9 @@ var blockAppearancePresets = [
1518
1711
  }),
1519
1712
  defineBlockAppearancePreset({
1520
1713
  kind: "block-design",
1521
- id: "testimonials-soft-earth-proof-band",
1714
+ id: "testimonials-brand-background-quotes",
1522
1715
  target: "testimonials",
1523
- label: "Soft Earth proof band",
1716
+ label: "Brand background quotes",
1524
1717
  blockKinds: ["block.testimonials"],
1525
1718
  design: {
1526
1719
  sectionSurface: "brand-depth-band",
@@ -1564,25 +1757,6 @@ var blockAppearancePresets = [
1564
1757
  emphasis: "low"
1565
1758
  }
1566
1759
  }),
1567
- defineBlockAppearancePreset({
1568
- kind: "block-design",
1569
- id: "faq-soft-earth-two-column",
1570
- target: "faq",
1571
- label: "Soft Earth two-column FAQ",
1572
- blockKinds: ["block.faq"],
1573
- design: {
1574
- sectionSurface: "base",
1575
- contentFrame: plainFrame,
1576
- itemSurface: "flat",
1577
- transitionAfter: "none",
1578
- emphasis: "medium",
1579
- accordionIconTreatment: {
1580
- iconSet: "plus",
1581
- colorToken: "primary",
1582
- motion: "swap"
1583
- }
1584
- }
1585
- }),
1586
1760
  defineBlockAppearancePreset({
1587
1761
  kind: "block-design",
1588
1762
  id: "contact-form-panel",
@@ -2948,7 +3122,8 @@ var accordionSystemSchema = z10.object({
2948
3122
  icon: z10.object({
2949
3123
  style: accordionIconSchema,
2950
3124
  position: z10.enum(["left", "right"]),
2951
- size: z10.enum(["sm", "md", "lg"])
3125
+ size: z10.enum(["sm", "md", "lg"]),
3126
+ colorToken: themeColorTokenSchema.optional()
2952
3127
  }),
2953
3128
  // Trigger (question) styling
2954
3129
  trigger: z10.object({
@@ -3082,6 +3257,7 @@ var navLinkPaddingXSchema = z14.enum(["none", "tight", "compact", "default", "re
3082
3257
  var navLinkBorderRadiusSchema = z14.enum(["none", "sm", "md", "full"]);
3083
3258
  var navLinkTextSizeSchema = z14.enum(["xs", "sm", "base", "lg"]);
3084
3259
  var navLinkLetterSpacingSchema = z14.enum(["normal", "wide", "wider", "widest"]);
3260
+ var navLinkContrastTreatmentSchema = z14.enum(["none", "soft-glow"]);
3085
3261
  var navLinkStyleSchema = z14.object({
3086
3262
  /** Display name for the style */
3087
3263
  name: z14.string().min(1).max(30).optional(),
@@ -3093,6 +3269,8 @@ var navLinkStyleSchema = z14.object({
3093
3269
  textSize: navLinkTextSizeSchema.optional(),
3094
3270
  /** Optional letter spacing override */
3095
3271
  letterSpacing: navLinkLetterSpacingSchema.optional(),
3272
+ /** Optional text-only contrast treatment for transparent/overlay navigation */
3273
+ contrastTreatment: navLinkContrastTreatmentSchema.optional(),
3096
3274
  /** Hover/active color token (for color-change effects) */
3097
3275
  hoverColorToken: themeColorTokenSchema.nullable().optional(),
3098
3276
  /** Padding preset */
@@ -3376,8 +3554,19 @@ var headingTypographyStyleSchema = typographyStyleSchema.extend({
3376
3554
  colorToken: themeColorTokenSchema.nullable().optional()
3377
3555
  });
3378
3556
  var proseLinkUnderlineStyleSchema = z19.enum(["solid", "dotted", "dashed"]);
3379
- var proseLinkUnderlineThicknessSchema = z19.enum(["auto", "fromFont", "thin", "medium", "thick"]);
3380
- var proseLinkUnderlineOffsetSchema = z19.enum(["auto", "tight", "normal", "loose"]);
3557
+ var proseLinkUnderlineThicknessSchema = z19.enum([
3558
+ "auto",
3559
+ "fromFont",
3560
+ "thin",
3561
+ "medium",
3562
+ "thick"
3563
+ ]);
3564
+ var proseLinkUnderlineOffsetSchema = z19.enum([
3565
+ "auto",
3566
+ "tight",
3567
+ "normal",
3568
+ "loose"
3569
+ ]);
3381
3570
  var proseLinkStyleSchema = z19.object({
3382
3571
  colorToken: themeColorTokenSchema.optional(),
3383
3572
  hoverColorToken: themeColorTokenSchema.optional(),
@@ -3388,7 +3577,14 @@ var proseLinkStyleSchema = z19.object({
3388
3577
  underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
3389
3578
  underlineOffset: proseLinkUnderlineOffsetSchema.optional()
3390
3579
  });
3391
- var semanticSpacingSchema = z19.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
3580
+ var semanticSpacingSchema = z19.enum([
3581
+ "none",
3582
+ "compact",
3583
+ "cozy",
3584
+ "medium",
3585
+ "comfortable",
3586
+ "spacious"
3587
+ ]);
3392
3588
  var boxRoundedSchema = z19.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
3393
3589
  var boxBackgroundOverlaySchema = z19.object({
3394
3590
  type: z19.enum(["none", "color", "gradient"]).nullable().optional(),
@@ -3434,6 +3630,7 @@ var sectionStylesOverrideSchema = z19.object({
3434
3630
  spacing: semanticSpacingSchema.nullable().optional(),
3435
3631
  minHeight: z19.enum(["none", "banner", "hero", "immersive"]).nullable().optional(),
3436
3632
  tileTreatment: z19.enum(tileTreatmentValues).nullable().optional(),
3633
+ eventListTreatment: z19.enum(eventListTreatmentValues).nullable().optional(),
3437
3634
  eyebrowTreatment: z19.enum(eyebrowTreatmentValues).nullable().optional(),
3438
3635
  headingDecoration: headingDecorationSchema.nullable().optional(),
3439
3636
  // Author-level override consumed by later block/editor rendering phases.
@@ -3532,9 +3729,17 @@ var inputStyle = z19.object({
3532
3729
  focus: z19.enum(["glow", "ring", "underline"]),
3533
3730
  label: z19.enum(["inside", "above"])
3534
3731
  });
3535
- var headerVariant = z19.enum(["classic", "centered", "transparent", "floating", "editorial"]);
3732
+ var headerVariant = z19.enum(["classic", "centered", "transparent", "floating"]);
3536
3733
  var headerPositioning = z19.enum(["static", "sticky", "fixed"]);
3537
- var headerNavStyle = z19.enum(["minimal", "underline", "underline-grow", "capsule", "scale", "frosted", "solid"]);
3734
+ var headerNavStyle = z19.enum([
3735
+ "minimal",
3736
+ "underline",
3737
+ "underline-grow",
3738
+ "capsule",
3739
+ "scale",
3740
+ "frosted",
3741
+ "solid"
3742
+ ]);
3538
3743
  var navFontWeight = z19.enum(["regular", "medium", "semibold", "bold"]);
3539
3744
  var headerMaxWidth = z19.enum(["container", "full"]);
3540
3745
  var headerContainerSchema = z19.object({
@@ -3582,8 +3787,22 @@ var dropdownStyleSchema = z19.object({
3582
3787
  textSize: z19.enum(["xs", "sm", "base", "lg"]).optional()
3583
3788
  // optional = no override (browser default)
3584
3789
  }).optional();
3585
- var headerCtaGapSchema = z19.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
3586
- var headerCtaTreatmentSchema = z19.enum(["default", "primary", "secondary", "inverted", "outline", "ghost"]);
3790
+ var headerCtaGapSchema = z19.enum([
3791
+ "none",
3792
+ "tight",
3793
+ "compact",
3794
+ "default",
3795
+ "relaxed",
3796
+ "spacious"
3797
+ ]);
3798
+ var headerCtaTreatmentSchema = z19.enum([
3799
+ "default",
3800
+ "primary",
3801
+ "secondary",
3802
+ "inverted",
3803
+ "outline",
3804
+ "ghost"
3805
+ ]);
3587
3806
  var navContainerSchema = z19.object({
3588
3807
  type: z19.enum(["none", "pill", "glass"]).default("none"),
3589
3808
  tint: z19.string().nullable().optional(),
@@ -3638,7 +3857,14 @@ var footerMaxWidth = z19.enum(["container", "full"]);
3638
3857
  var footerMode = z19.enum(["default", "blocks", "default+blocks", "none"]);
3639
3858
  var footerNavLayoutMode = z19.enum(["stack", "inline", "inline-wrap"]);
3640
3859
  var footerNavLayoutAlign = z19.enum(["start", "center", "end", "space-between"]);
3641
- var footerSpacing = z19.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
3860
+ var footerSpacing = z19.enum([
3861
+ "none",
3862
+ "tight",
3863
+ "compact",
3864
+ "default",
3865
+ "relaxed",
3866
+ "spacious"
3867
+ ]);
3642
3868
  var footerLogoPlacement = z19.enum(["left", "right", "above", "below"]);
3643
3869
  var footerLogoSize = z19.enum(["sm", "md", "lg", "xl"]);
3644
3870
  var footerLogoMaxHeight = z19.enum(["sm", "md", "lg", "xl"]);
@@ -3703,7 +3929,12 @@ var footerSchema = z19.object({
3703
3929
  logo: footerLogoSchema.optional(),
3704
3930
  bottomBar: footerBottomBarSchema.optional()
3705
3931
  });
3706
- var containerPaddingPresetSchema = z19.enum(["tight", "compact", "default", "relaxed"]);
3932
+ var containerPaddingPresetSchema = z19.enum([
3933
+ "tight",
3934
+ "compact",
3935
+ "default",
3936
+ "relaxed"
3937
+ ]);
3707
3938
  var layoutSchema = z19.object({
3708
3939
  containerPadding: z19.object({
3709
3940
  mobile: containerPaddingPresetSchema.optional(),
@@ -3711,8 +3942,24 @@ var layoutSchema = z19.object({
3711
3942
  desktop: containerPaddingPresetSchema.optional()
3712
3943
  }).optional()
3713
3944
  }).optional();
3714
- var heroTypographySizeSchema = z19.enum(["sm", "base", "lg", "xl", "2xl", "3xl", "4xl", "5xl", "6xl", "editorial"]);
3715
- var heroTypographyLineHeightSchema = z19.enum(["tight", "snug", "normal", "relaxed"]);
3945
+ var heroTypographySizeSchema = z19.enum([
3946
+ "sm",
3947
+ "base",
3948
+ "lg",
3949
+ "xl",
3950
+ "2xl",
3951
+ "3xl",
3952
+ "4xl",
3953
+ "5xl",
3954
+ "6xl",
3955
+ "editorial"
3956
+ ]);
3957
+ var heroTypographyLineHeightSchema = z19.enum([
3958
+ "tight",
3959
+ "snug",
3960
+ "normal",
3961
+ "relaxed"
3962
+ ]);
3716
3963
  var heroResponsiveTypographySchema = z19.object({
3717
3964
  headlineSize: heroTypographySizeSchema.optional(),
3718
3965
  headlineLineHeight: heroTypographyLineHeightSchema.optional(),
@@ -4217,6 +4464,34 @@ var paletteVariantsById = new Map(
4217
4464
  paletteVariants.map((v) => [v.id, v])
4218
4465
  );
4219
4466
 
4467
+ // ../theme-core/src/accordions/siteStyleDefaults.ts
4468
+ var softEarthAccordionSystem = {
4469
+ background: {
4470
+ type: "solid",
4471
+ colorToken: "background"
4472
+ },
4473
+ spacing: "comfortable",
4474
+ corners: "square",
4475
+ border: null,
4476
+ shadow: null,
4477
+ icon: {
4478
+ style: "plus-minus",
4479
+ position: "right",
4480
+ size: "md",
4481
+ colorToken: "primary"
4482
+ },
4483
+ trigger: {
4484
+ textColorToken: "text",
4485
+ fontWeight: "medium"
4486
+ },
4487
+ hover: {
4488
+ textColorToken: "primary"
4489
+ },
4490
+ content: {
4491
+ textColorToken: "neutral-700"
4492
+ }
4493
+ };
4494
+
4220
4495
  // ../theme-core/src/site-styles/headerLooks.ts
4221
4496
  function asHeaderLookId(value) {
4222
4497
  return value;
@@ -4266,23 +4541,13 @@ var headerLayoutCatalog = [
4266
4541
  maxRecommendedNavItems: 5,
4267
4542
  allowedLogoShapes: ["none", "text-only", "horizontal", "square"]
4268
4543
  },
4269
- {
4270
- id: asHeaderLayoutId("editorial"),
4271
- label: "Editorial",
4272
- description: "A composed, magazine-like stacked header treatment.",
4273
- structure: "editorial-stack",
4274
- variant: "editorial",
4275
- defaultPositioning: "static",
4276
- shrinkOnScroll: false,
4277
- maxRecommendedNavItems: 6
4278
- },
4279
4544
  {
4280
4545
  id: asHeaderLayoutId("floating"),
4281
4546
  label: "Floating",
4282
4547
  description: "Detached header chrome that sits over the opening section.",
4283
4548
  structure: "floating-shell",
4284
4549
  variant: "floating",
4285
- defaultPositioning: "fixed",
4550
+ defaultPositioning: "sticky",
4286
4551
  shrinkOnScroll: true,
4287
4552
  maxRecommendedNavItems: 5,
4288
4553
  allowedLogoShapes: ["none", "text-only", "horizontal"]
@@ -4296,17 +4561,23 @@ var headerStyleCatalog = [
4296
4561
  id: asHeaderStyleId("minimal"),
4297
4562
  label: "Minimal",
4298
4563
  description: "Quiet surface with simple color-change navigation.",
4299
- supportedLayoutIds: supportedLayouts(["classic", "centered", "editorial"]),
4564
+ supportedLayoutIds: supportedLayouts(["classic", "centered"]),
4300
4565
  navInteraction: "color-change",
4301
- surface: "neutral"
4566
+ surface: "neutral",
4567
+ defaultDepth: "none",
4568
+ navTypography: "plain",
4569
+ moods: ["calm", "professional", "editorial"]
4302
4570
  },
4303
4571
  {
4304
4572
  id: asHeaderStyleId("fine-line"),
4305
4573
  label: "Fine Line",
4306
4574
  description: "Light surface with a crisp lower rule and underline hover.",
4307
- supportedLayoutIds: supportedLayouts(["classic", "centered", "editorial"]),
4575
+ supportedLayoutIds: supportedLayouts(["classic", "centered"]),
4308
4576
  navInteraction: "underline-grow",
4309
- surface: "bordered"
4577
+ surface: "bordered",
4578
+ defaultDepth: "line",
4579
+ navTypography: "plain",
4580
+ moods: ["calm", "professional", "editorial"]
4310
4581
  },
4311
4582
  {
4312
4583
  id: asHeaderStyleId("soft-bar"),
@@ -4314,7 +4585,10 @@ var headerStyleCatalog = [
4314
4585
  description: "Soft tinted surface with gentle pill hover states.",
4315
4586
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
4316
4587
  navInteraction: "pill-background",
4317
- surface: "soft"
4588
+ surface: "soft",
4589
+ defaultDepth: "line",
4590
+ navTypography: "plain",
4591
+ moods: ["calm", "professional"]
4318
4592
  },
4319
4593
  {
4320
4594
  id: asHeaderStyleId("pill-nav"),
@@ -4322,23 +4596,32 @@ var headerStyleCatalog = [
4322
4596
  description: "A calm pill navigation rail over a neutral header.",
4323
4597
  supportedLayoutIds: supportedLayouts(["classic", "centered"]),
4324
4598
  navInteraction: "pill-background",
4325
- surface: "soft"
4599
+ surface: "soft",
4600
+ defaultDepth: "none",
4601
+ navTypography: "plain",
4602
+ moods: ["calm"]
4326
4603
  },
4327
4604
  {
4328
4605
  id: asHeaderStyleId("brand-bar"),
4329
4606
  label: "Brand Bar",
4330
4607
  description: "Solid brand surface with high-contrast navigation.",
4331
- supportedLayoutIds: supportedLayouts(["classic", "centered", "editorial"]),
4608
+ supportedLayoutIds: supportedLayouts(["classic", "centered"]),
4332
4609
  navInteraction: "color-change",
4333
- surface: "brand-solid"
4610
+ surface: "brand-solid",
4611
+ defaultDepth: "none",
4612
+ navTypography: "brand-caps",
4613
+ moods: ["professional", "expressive", "utility"]
4334
4614
  },
4335
4615
  {
4336
4616
  id: asHeaderStyleId("brand-underline"),
4337
4617
  label: "Brand Underline",
4338
4618
  description: "Brand surface with underline-grow navigation.",
4339
- supportedLayoutIds: supportedLayouts(["classic", "editorial"]),
4619
+ supportedLayoutIds: supportedLayouts(["classic"]),
4340
4620
  navInteraction: "underline-grow",
4341
- surface: "brand-solid"
4621
+ surface: "brand-solid",
4622
+ defaultDepth: "none",
4623
+ navTypography: "brand-caps",
4624
+ moods: ["expressive"]
4342
4625
  },
4343
4626
  {
4344
4627
  id: asHeaderStyleId("brand-pill"),
@@ -4346,41 +4629,54 @@ var headerStyleCatalog = [
4346
4629
  description: "Solid brand surface with rounded active and hover states.",
4347
4630
  supportedLayoutIds: supportedLayouts(["classic", "centered", "floating"]),
4348
4631
  navInteraction: "pill-background",
4349
- surface: "brand-solid"
4632
+ surface: "brand-solid",
4633
+ defaultDepth: "none",
4634
+ navTypography: "brand-caps",
4635
+ moods: ["expressive"]
4350
4636
  },
4351
4637
  {
4352
- id: asHeaderStyleId("editorial-line"),
4353
- label: "Editorial Line",
4638
+ id: asHeaderStyleId("serif-line"),
4639
+ label: "Serif Line",
4354
4640
  description: "Typographic logo treatment with understated underline navigation.",
4355
- supportedLayoutIds: supportedLayouts(["classic", "centered", "editorial"]),
4641
+ supportedLayoutIds: supportedLayouts(["classic", "centered"]),
4356
4642
  navInteraction: "underline-grow",
4357
- surface: "bordered"
4643
+ surface: "bordered",
4644
+ defaultDepth: "line",
4645
+ navTypography: "heading",
4646
+ moods: ["editorial", "calm"]
4358
4647
  },
4359
4648
  {
4360
4649
  id: asHeaderStyleId("flat-tabs"),
4361
4650
  label: "Flat Tabs",
4362
4651
  description: "Flat block hover and active states with a Swiss utility feel.",
4363
- supportedLayoutIds: supportedLayouts(["classic", "centered", "editorial"]),
4652
+ supportedLayoutIds: supportedLayouts(["classic", "centered"]),
4364
4653
  navInteraction: "flat-block",
4365
- surface: "bordered"
4654
+ surface: "bordered",
4655
+ defaultDepth: "shadow",
4656
+ navTypography: "quiet-caps",
4657
+ moods: ["professional", "utility", "expressive"]
4366
4658
  },
4367
4659
  {
4368
4660
  id: asHeaderStyleId("glass"),
4369
4661
  label: "Glass",
4370
- description: "Floating translucent chrome with frosted navigation backing.",
4662
+ description: "Translucent chrome with frosted navigation backing.",
4371
4663
  supportedLayoutIds: supportedLayouts(["floating"]),
4372
4664
  navInteraction: "glass-backed",
4373
4665
  surface: "floating",
4374
- requiresFloatingLayout: true
4666
+ defaultDepth: "shadow",
4667
+ navTypography: "plain",
4668
+ moods: ["expressive", "calm"]
4375
4669
  },
4376
4670
  {
4377
4671
  id: asHeaderStyleId("minimal-surface"),
4378
- label: "Minimal Surface",
4379
- description: "Floating chrome with a restrained translucent surface.",
4672
+ label: "Clear Split",
4673
+ description: "Floating logo with transparent navigation and no shared shell.",
4380
4674
  supportedLayoutIds: supportedLayouts(["floating"]),
4381
4675
  navInteraction: "color-change",
4382
4676
  surface: "floating",
4383
- requiresFloatingLayout: true
4677
+ defaultDepth: "none",
4678
+ navTypography: "plain",
4679
+ moods: ["editorial", "calm"]
4384
4680
  },
4385
4681
  {
4386
4682
  id: asHeaderStyleId("soft-shell"),
@@ -4389,7 +4685,31 @@ var headerStyleCatalog = [
4389
4685
  supportedLayoutIds: supportedLayouts(["floating"]),
4390
4686
  navInteraction: "pill-background",
4391
4687
  surface: "floating",
4392
- requiresFloatingLayout: true
4688
+ defaultDepth: "shadow",
4689
+ navTypography: "plain",
4690
+ moods: ["calm", "professional"]
4691
+ },
4692
+ {
4693
+ id: asHeaderStyleId("split-glass"),
4694
+ label: "Split Glass",
4695
+ description: "Logo floats independently while the navigation sits in a glass rail.",
4696
+ supportedLayoutIds: supportedLayouts(["floating"]),
4697
+ navInteraction: "glass-backed",
4698
+ surface: "floating",
4699
+ defaultDepth: "shadow",
4700
+ navTypography: "quiet-caps",
4701
+ moods: ["expressive"]
4702
+ },
4703
+ {
4704
+ id: asHeaderStyleId("split-pill"),
4705
+ label: "Split Pill",
4706
+ description: "Logo floats independently with a soft pill-backed navigation rail.",
4707
+ supportedLayoutIds: supportedLayouts(["floating"]),
4708
+ navInteraction: "pill-background",
4709
+ surface: "floating",
4710
+ defaultDepth: "shadow",
4711
+ navTypography: "heading",
4712
+ moods: ["calm", "editorial"]
4393
4713
  }
4394
4714
  ];
4395
4715
  var headerLayoutsById = new Map(
@@ -4409,7 +4729,7 @@ var headerStyleCompatibilityOrder = /* @__PURE__ */ new Map([
4409
4729
  "brand-bar",
4410
4730
  "brand-underline",
4411
4731
  "brand-pill",
4412
- "editorial-line",
4732
+ "serif-line",
4413
4733
  "flat-tabs"
4414
4734
  ])
4415
4735
  ],
@@ -4422,19 +4742,7 @@ var headerStyleCompatibilityOrder = /* @__PURE__ */ new Map([
4422
4742
  "pill-nav",
4423
4743
  "brand-bar",
4424
4744
  "brand-pill",
4425
- "editorial-line",
4426
- "flat-tabs"
4427
- ])
4428
- ],
4429
- [
4430
- asHeaderLayoutId("editorial"),
4431
- headerStyleRepairChain([
4432
- "minimal",
4433
- "fine-line",
4434
- "soft-bar",
4435
- "brand-bar",
4436
- "brand-underline",
4437
- "editorial-line",
4745
+ "serif-line",
4438
4746
  "flat-tabs"
4439
4747
  ])
4440
4748
  ],
@@ -4443,6 +4751,8 @@ var headerStyleCompatibilityOrder = /* @__PURE__ */ new Map([
4443
4751
  headerStyleRepairChain([
4444
4752
  "glass",
4445
4753
  "minimal-surface",
4754
+ "split-glass",
4755
+ "split-pill",
4446
4756
  "soft-shell",
4447
4757
  "brand-pill"
4448
4758
  ])
@@ -4451,20 +4761,69 @@ var headerStyleCompatibilityOrder = /* @__PURE__ */ new Map([
4451
4761
  function headerStyleRepairChain(values) {
4452
4762
  return values.map(asHeaderStyleId);
4453
4763
  }
4454
- var headerStyleRepairOrder = /* @__PURE__ */ new Map([
4455
- [asHeaderStyleId("brand-bar"), headerStyleRepairChain(["brand-bar", "brand-pill", "minimal"])],
4456
- [asHeaderStyleId("brand-underline"), headerStyleRepairChain(["editorial-line", "fine-line", "minimal"])],
4457
- [asHeaderStyleId("brand-pill"), headerStyleRepairChain(["brand-pill", "brand-bar", "minimal"])],
4458
- [asHeaderStyleId("pill-nav"), headerStyleRepairChain(["pill-nav", "soft-bar", "minimal"])],
4459
- [asHeaderStyleId("flat-tabs"), headerStyleRepairChain(["flat-tabs", "pill-nav", "minimal"])],
4460
- [asHeaderStyleId("editorial-line"), headerStyleRepairChain(["editorial-line", "fine-line", "minimal"])],
4461
- [asHeaderStyleId("glass"), headerStyleRepairChain(["glass", "minimal-surface", "minimal"])],
4462
- [asHeaderStyleId("soft-shell"), headerStyleRepairChain(["soft-shell", "soft-bar", "minimal"])],
4463
- [asHeaderStyleId("minimal-surface"), headerStyleRepairChain(["minimal-surface", "minimal"])],
4464
- [asHeaderStyleId("fine-line"), headerStyleRepairChain(["fine-line", "minimal"])],
4465
- [asHeaderStyleId("soft-bar"), headerStyleRepairChain(["soft-bar", "minimal"])],
4466
- [asHeaderStyleId("minimal"), headerStyleRepairChain(["minimal"])]
4467
- ]);
4764
+ var headerStyleRepairOrder = /* @__PURE__ */ new Map(
4765
+ [
4766
+ [
4767
+ asHeaderStyleId("brand-bar"),
4768
+ headerStyleRepairChain(["brand-bar", "brand-pill", "minimal"])
4769
+ ],
4770
+ [
4771
+ asHeaderStyleId("brand-underline"),
4772
+ headerStyleRepairChain(["serif-line", "fine-line", "minimal"])
4773
+ ],
4774
+ [
4775
+ asHeaderStyleId("brand-pill"),
4776
+ headerStyleRepairChain(["brand-pill", "brand-bar", "minimal"])
4777
+ ],
4778
+ [
4779
+ asHeaderStyleId("pill-nav"),
4780
+ headerStyleRepairChain(["pill-nav", "soft-bar", "minimal"])
4781
+ ],
4782
+ [
4783
+ asHeaderStyleId("flat-tabs"),
4784
+ headerStyleRepairChain(["flat-tabs", "pill-nav", "minimal"])
4785
+ ],
4786
+ [
4787
+ asHeaderStyleId("serif-line"),
4788
+ headerStyleRepairChain(["serif-line", "fine-line", "minimal"])
4789
+ ],
4790
+ [
4791
+ asHeaderStyleId("glass"),
4792
+ headerStyleRepairChain([
4793
+ "glass",
4794
+ "soft-shell",
4795
+ "fine-line",
4796
+ "minimal-surface",
4797
+ "minimal"
4798
+ ])
4799
+ ],
4800
+ [
4801
+ asHeaderStyleId("soft-shell"),
4802
+ headerStyleRepairChain(["soft-shell", "soft-bar", "minimal"])
4803
+ ],
4804
+ [
4805
+ asHeaderStyleId("minimal-surface"),
4806
+ headerStyleRepairChain(["minimal-surface", "minimal"])
4807
+ ],
4808
+ [
4809
+ asHeaderStyleId("split-glass"),
4810
+ headerStyleRepairChain(["split-glass", "glass", "minimal-surface"])
4811
+ ],
4812
+ [
4813
+ asHeaderStyleId("split-pill"),
4814
+ headerStyleRepairChain(["split-pill", "soft-shell", "brand-pill"])
4815
+ ],
4816
+ [
4817
+ asHeaderStyleId("fine-line"),
4818
+ headerStyleRepairChain(["fine-line", "minimal"])
4819
+ ],
4820
+ [
4821
+ asHeaderStyleId("soft-bar"),
4822
+ headerStyleRepairChain(["soft-bar", "minimal"])
4823
+ ],
4824
+ [asHeaderStyleId("minimal"), headerStyleRepairChain(["minimal"])]
4825
+ ]
4826
+ );
4468
4827
  var legacyHeaderLookAliases = [
4469
4828
  {
4470
4829
  lookId: asHeaderLookId("clean-base"),
@@ -4481,10 +4840,10 @@ var legacyHeaderLookAliases = [
4481
4840
  }
4482
4841
  },
4483
4842
  {
4484
- lookId: asHeaderLookId("editorial-line"),
4843
+ lookId: asHeaderLookId("serif-line"),
4485
4844
  selection: {
4486
- layoutId: asHeaderLayoutId("editorial"),
4487
- styleId: asHeaderStyleId("editorial-line")
4845
+ layoutId: asHeaderLayoutId("centered"),
4846
+ styleId: asHeaderStyleId("serif-line")
4488
4847
  }
4489
4848
  },
4490
4849
  {
@@ -4523,9 +4882,7 @@ var legacyHeaderLookAliases = [
4523
4882
  }
4524
4883
  }
4525
4884
  ];
4526
- var legacyHeaderLookAliasesById = new Map(
4527
- legacyHeaderLookAliases.map((alias) => [alias.lookId, alias])
4528
- );
4885
+ var legacyHeaderLookAliasesById = new Map(legacyHeaderLookAliases.map((alias) => [alias.lookId, alias]));
4529
4886
  function getHeaderStyle(id) {
4530
4887
  return headerStylesById.get(id) ?? null;
4531
4888
  }
@@ -4543,10 +4900,29 @@ function resolveLegacyHeaderLookAlias(lookId) {
4543
4900
  return legacyHeaderLookAliasesById.get(lookId)?.selection ?? null;
4544
4901
  }
4545
4902
  function getCompatibleHeaderStyleIds(layoutId) {
4546
- return (headerStyleCompatibilityOrder.get(layoutId) ?? []).filter((styleId) => {
4547
- const style = getHeaderStyleOrThrow(styleId);
4548
- return isHeaderStyleCompatibleWithLayout(style, layoutId);
4549
- });
4903
+ return (headerStyleCompatibilityOrder.get(layoutId) ?? []).filter(
4904
+ (styleId) => {
4905
+ const style = getHeaderStyleOrThrow(styleId);
4906
+ return isHeaderStyleCompatibleWithLayout(style, layoutId);
4907
+ }
4908
+ );
4909
+ }
4910
+ function themedHeaderShadow(theme) {
4911
+ switch (theme.shadow.elevation) {
4912
+ case "none":
4913
+ return void 0;
4914
+ case "low":
4915
+ return { elevation: "sm" };
4916
+ case "medium":
4917
+ return { elevation: "md" };
4918
+ case "high":
4919
+ return { elevation: "lg" };
4920
+ default:
4921
+ return assertNever(
4922
+ theme.shadow.elevation,
4923
+ "Unhandled theme shadow elevation"
4924
+ );
4925
+ }
4550
4926
  }
4551
4927
  function solidBrandHeader(theme) {
4552
4928
  const ctaVariant = resolveHeaderCtaVariant(theme, "inverted");
@@ -4577,8 +4953,14 @@ function solidBrandHeader(theme) {
4577
4953
  borderRadius: "none",
4578
4954
  effects: {
4579
4955
  hover: [
4580
- { effectId: "text-color-change", options: { hoverColorToken: "secondary" } },
4581
- { effectId: "nav-underline", options: { style: "grow", colorToken: "secondary" } }
4956
+ {
4957
+ effectId: "text-color-change",
4958
+ options: { hoverColorToken: "secondary" }
4959
+ },
4960
+ {
4961
+ effectId: "nav-underline",
4962
+ options: { style: "grow", colorToken: "secondary" }
4963
+ }
4582
4964
  ]
4583
4965
  }
4584
4966
  },
@@ -4634,10 +5016,10 @@ function cleanBaseHeader(theme) {
4634
5016
  ctaGap: "default"
4635
5017
  };
4636
5018
  }
4637
- function editorialLineHeader(theme) {
5019
+ function serifLineHeader(theme) {
4638
5020
  return {
4639
5021
  ...baseHeader(theme),
4640
- variant: "editorial",
5022
+ variant: "centered",
4641
5023
  positioning: "sticky",
4642
5024
  shrinkOnScroll: false,
4643
5025
  background: {
@@ -4691,9 +5073,7 @@ function practicalUtilityHeader(theme) {
4691
5073
  navColor: "text",
4692
5074
  navStyle: "solid",
4693
5075
  navWeight: "semibold",
4694
- shadow: {
4695
- elevation: "sm"
4696
- },
5076
+ shadow: themedHeaderShadow(theme),
4697
5077
  border: {
4698
5078
  style: "solid",
4699
5079
  width: "thin",
@@ -4762,6 +5142,7 @@ function floatingGlassHeader(theme) {
4762
5142
  return {
4763
5143
  ...transparentOverlayHeader(theme),
4764
5144
  variant: "floating",
5145
+ positioning: "sticky",
4765
5146
  navStyle: "frosted",
4766
5147
  navContainer: {
4767
5148
  type: "glass",
@@ -4806,27 +5187,27 @@ var headerLookCatalog = [
4806
5187
  compile: solidBrandHeader
4807
5188
  },
4808
5189
  {
4809
- id: asHeaderLookId("editorial-line"),
4810
- label: "Editorial line",
4811
- visualTreatment: "light-editorial",
5190
+ id: asHeaderLookId("serif-line"),
5191
+ label: "Serif line",
5192
+ visualTreatment: "light-serif",
4812
5193
  layoutBehavior: "sticky",
4813
5194
  configuration: {
4814
- structure: "editorial-stack",
4815
- treatment: "light-editorial",
5195
+ structure: "centered-stack",
5196
+ treatment: "light-serif",
4816
5197
  behavior: "sticky"
4817
5198
  },
4818
5199
  openingRequirement: "none",
4819
5200
  maxRecommendedNavItems: 6,
4820
- compile: editorialLineHeader
5201
+ compile: serifLineHeader
4821
5202
  },
4822
5203
  {
4823
5204
  id: asHeaderLookId("centered-calm"),
4824
5205
  label: "Centered calm",
4825
- visualTreatment: "light-editorial",
5206
+ visualTreatment: "light-serif",
4826
5207
  layoutBehavior: "normal-flow",
4827
5208
  configuration: {
4828
5209
  structure: "centered-stack",
4829
- treatment: "light-editorial",
5210
+ treatment: "light-serif",
4830
5211
  behavior: "normal-flow"
4831
5212
  },
4832
5213
  openingRequirement: "none",
@@ -5277,7 +5658,7 @@ var typographyPresets = [
5277
5658
  heroTypography: {
5278
5659
  headlineSize: "6xl",
5279
5660
  headlineLineHeight: "tight",
5280
- subheadlineSize: "editorial",
5661
+ subheadlineSize: "2xl",
5281
5662
  subheadlineLineHeight: "normal",
5282
5663
  microHeadlineSize: "6xl",
5283
5664
  microHeadlineLineHeight: "tight",
@@ -5295,6 +5676,8 @@ var typographyPresetsById = new Map(
5295
5676
  );
5296
5677
 
5297
5678
  // ../theme-core/src/site-styles/curatedSiteStyles.ts
5679
+ var SOFT_EARTH_SITE_STYLE_ID_VALUE = "site-style:soft-earth";
5680
+ var SOFT_EARTH_SITE_STYLE_ID = asSiteStyleId(SOFT_EARTH_SITE_STYLE_ID_VALUE);
5298
5681
  var curatedSiteStyleIdValues = [
5299
5682
  "site-style:calm-studio",
5300
5683
  "site-style:clear-professional",
@@ -5306,7 +5689,7 @@ var curatedSiteStyleIdValues = [
5306
5689
  "site-style:personal-retreat-journal",
5307
5690
  "site-style:tactile-workshop",
5308
5691
  "site-style:modern-wellness",
5309
- "site-style:soft-earth",
5692
+ SOFT_EARTH_SITE_STYLE_ID_VALUE,
5310
5693
  "site-style:bold-launch",
5311
5694
  "site-style:south-west-twerk-school"
5312
5695
  ];
@@ -5372,22 +5755,31 @@ var expressiveUnderlineInputs = {
5372
5755
  }
5373
5756
  };
5374
5757
  function uniqueContentFrameKinds() {
5375
- const kinds = [...new Set(
5376
- generatedDesignOptionCatalog.contentFrames.map((frame) => frame.kind)
5377
- )];
5758
+ const kinds = [
5759
+ ...new Set(
5760
+ generatedDesignOptionCatalog.contentFrames.map((frame) => frame.kind)
5761
+ )
5762
+ ];
5378
5763
  const firstKind = kinds[0];
5379
5764
  if (!firstKind) {
5380
- throw new Error("Expected generated design option catalog to expose at least one content frame kind.");
5765
+ throw new Error(
5766
+ "Expected generated design option catalog to expose at least one content frame kind."
5767
+ );
5381
5768
  }
5382
5769
  return [firstKind, ...kinds.slice(1)];
5383
5770
  }
5384
5771
  var generatedContentFrameKinds = uniqueContentFrameKinds();
5385
5772
  function defineCuratedSiteStyle(input) {
5386
5773
  const legacyHeaderLookIds = input.recommendedHeaderLookIds ?? ["clean-base"];
5387
- const inferredHeaderCuration = inferHeaderCurationFromLegacyLooks(legacyHeaderLookIds);
5774
+ const inferredHeaderCuration = inferHeaderCurationFromLegacyLooks(
5775
+ legacyHeaderLookIds,
5776
+ input.tokenRecipes
5777
+ );
5388
5778
  const typographyPresetChoices = input.typographyPresetChoices ?? defaultTypographyPresetChoicesForRecipe(input.tokenRecipes.typography);
5389
5779
  const defaultTypographyPresetId = input.defaultTypographyPresetId ? asTypographyPresetId(input.defaultTypographyPresetId) : typographyPresetChoices[0].id;
5390
- if (!typographyPresetChoices.some((choice) => choice.id === defaultTypographyPresetId)) {
5780
+ if (!typographyPresetChoices.some(
5781
+ (choice) => choice.id === defaultTypographyPresetId
5782
+ )) {
5391
5783
  throw new Error(
5392
5784
  `Default typography preset ${defaultTypographyPresetId} is not curated for site style ${input.id}.`
5393
5785
  );
@@ -5398,9 +5790,13 @@ function defineCuratedSiteStyle(input) {
5398
5790
  description: input.description,
5399
5791
  generationBrief: input.generationBrief,
5400
5792
  selectionKeywordRules: input.selectionKeywordRules ?? [],
5401
- siteCreatorSelection: input.siteCreatorSelection ?? { kind: "explicit_only" },
5793
+ siteCreatorSelection: input.siteCreatorSelection ?? {
5794
+ kind: "explicit_only"
5795
+ },
5402
5796
  template: {
5403
- id: asDesignSystemTemplateId(`template:${input.id.replace("site-style:", "")}`),
5797
+ id: asDesignSystemTemplateId(
5798
+ `template:${input.id.replace("site-style:", "")}`
5799
+ ),
5404
5800
  name: input.name,
5405
5801
  version: 1,
5406
5802
  tokenRecipes: input.tokenRecipes,
@@ -5411,6 +5807,7 @@ function defineCuratedSiteStyle(input) {
5411
5807
  supportedTransitions: generatedDesignOptionCatalog.transitions
5412
5808
  },
5413
5809
  ...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
5810
+ ...input.defaultBlockVariants ? { defaultBlockVariants: input.defaultBlockVariants } : {},
5414
5811
  recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
5415
5812
  defaultHeaderSelection: input.defaultHeaderSelection ? {
5416
5813
  layoutId: asHeaderLayoutId(input.defaultHeaderSelection.layoutId),
@@ -5418,13 +5815,17 @@ function defineCuratedSiteStyle(input) {
5418
5815
  } : inferredHeaderCuration.defaultHeaderSelection,
5419
5816
  recommendedHeaderLayoutChoices: input.recommendedHeaderLayoutChoices ?? inferredHeaderCuration.recommendedHeaderLayoutChoices,
5420
5817
  recommendedHeaderStyleChoicesByLayout: input.recommendedHeaderStyleChoicesByLayout ?? inferredHeaderCuration.recommendedHeaderStyleChoicesByLayout,
5421
- discouragedHeaderSelections: input.discouragedHeaderSelections?.map((selection) => ({
5422
- layoutId: asHeaderLayoutId(selection.layoutId),
5423
- styleId: asHeaderStyleId(selection.styleId)
5424
- })),
5818
+ discouragedHeaderSelections: input.discouragedHeaderSelections?.map(
5819
+ (selection) => ({
5820
+ layoutId: asHeaderLayoutId(selection.layoutId),
5821
+ styleId: asHeaderStyleId(selection.styleId)
5822
+ })
5823
+ ),
5425
5824
  recommendedHeaderLookIds: legacyHeaderLookIds.map(asHeaderLookId),
5426
5825
  // Empty is intentional: resolveFooterLook always appends its guaranteed fallback.
5427
- recommendedFooterLookIds: (input.recommendedFooterLookIds ?? []).map(asFooterLookId),
5826
+ recommendedFooterLookIds: (input.recommendedFooterLookIds ?? []).map(
5827
+ asFooterLookId
5828
+ ),
5428
5829
  buttonPersonalityChoices: input.buttonPersonalityChoices,
5429
5830
  paletteVariantChoices: input.paletteVariantChoices,
5430
5831
  typographyPresetChoices,
@@ -5443,7 +5844,7 @@ function headerLayoutChoice(id, note) {
5443
5844
  function headerStyleChoice(id, note) {
5444
5845
  return note ? { id: asHeaderStyleId(id), note } : { id: asHeaderStyleId(id) };
5445
5846
  }
5446
- function headerLayoutRecordKey(id) {
5847
+ function unbrandHeaderLayoutId(id) {
5447
5848
  return id;
5448
5849
  }
5449
5850
  function uniqueHeaderLayoutChoices(choices) {
@@ -5465,8 +5866,72 @@ function nonEmptyHeaderStyleChoices(choices, fallbackLayoutId) {
5465
5866
  };
5466
5867
  return [first, ...choices.slice(1)];
5467
5868
  }
5468
- function inferHeaderCurationFromLegacyLooks(lookIds) {
5469
- const selections = lookIds.map((lookId) => resolveLegacyHeaderLookAlias(asHeaderLookId(lookId))).filter((selection) => Boolean(selection));
5869
+ function uniqueCompatibleHeaderStyleChoices(choices, fallbackLayoutId) {
5870
+ const compatible = new Set(getCompatibleHeaderStyleIds(fallbackLayoutId));
5871
+ const seen = /* @__PURE__ */ new Set();
5872
+ const unique = choices.filter((choice) => {
5873
+ if (!compatible.has(choice.id)) return false;
5874
+ if (seen.has(choice.id)) return false;
5875
+ seen.add(choice.id);
5876
+ return true;
5877
+ });
5878
+ return nonEmptyHeaderStyleChoices(unique, fallbackLayoutId);
5879
+ }
5880
+ function inferredHeaderStyleValuesForRecipes(layoutId, recipes) {
5881
+ switch (layoutId) {
5882
+ case "classic":
5883
+ if (isExpressiveRecipe(recipes)) {
5884
+ return [
5885
+ "brand-bar",
5886
+ "brand-underline",
5887
+ "flat-tabs",
5888
+ "brand-pill",
5889
+ "fine-line"
5890
+ ];
5891
+ }
5892
+ if (recipes.spacing === "compact") {
5893
+ return ["flat-tabs", "fine-line", "minimal", "brand-bar"];
5894
+ }
5895
+ if (isSerifTypographyRecipe(recipes)) {
5896
+ return ["serif-line", "fine-line", "minimal", "soft-bar"];
5897
+ }
5898
+ if (recipes.radius === "rounded" || recipes.radius === "pill") {
5899
+ return ["soft-bar", "pill-nav", "fine-line", "minimal"];
5900
+ }
5901
+ return ["fine-line", "minimal", "soft-bar", "brand-bar"];
5902
+ case "centered":
5903
+ if (isSerifTypographyRecipe(recipes)) {
5904
+ return ["serif-line", "fine-line", "minimal", "soft-bar"];
5905
+ }
5906
+ if (isExpressiveRecipe(recipes)) {
5907
+ return ["brand-pill", "flat-tabs", "brand-bar", "fine-line"];
5908
+ }
5909
+ if (recipes.radius === "rounded" || recipes.radius === "pill") {
5910
+ return ["soft-bar", "pill-nav", "fine-line", "minimal"];
5911
+ }
5912
+ return ["minimal", "fine-line", "soft-bar"];
5913
+ case "floating":
5914
+ if (isExpressiveRecipe(recipes)) {
5915
+ return ["glass", "split-glass", "brand-pill", "soft-shell"];
5916
+ }
5917
+ if (isSerifTypographyRecipe(recipes)) {
5918
+ return ["split-pill", "minimal-surface", "soft-shell"];
5919
+ }
5920
+ return ["soft-shell", "minimal-surface", "glass"];
5921
+ default:
5922
+ return [];
5923
+ }
5924
+ }
5925
+ function isExpressiveRecipe(recipes) {
5926
+ return recipes.contrast === "maximum" || recipes.shadow === "layered" || recipes.motion === "expressive";
5927
+ }
5928
+ function isSerifTypographyRecipe(recipes) {
5929
+ return recipes.typography === "serif-editorial" || recipes.typography === "classic-serif";
5930
+ }
5931
+ function inferHeaderCurationFromLegacyLooks(lookIds, recipes) {
5932
+ const selections = lookIds.map((lookId) => resolveLegacyHeaderLookAlias(asHeaderLookId(lookId))).filter(
5933
+ (selection) => Boolean(selection)
5934
+ );
5470
5935
  const defaultHeaderSelection = selections[0] ?? {
5471
5936
  layoutId: asHeaderLayoutId("classic"),
5472
5937
  styleId: asHeaderStyleId("minimal")
@@ -5476,9 +5941,13 @@ function inferHeaderCurationFromLegacyLooks(lookIds) {
5476
5941
  );
5477
5942
  const stylesByLayout = {};
5478
5943
  for (const layoutChoice of layoutChoices) {
5479
- const styleChoices = selections.filter((selection) => selection.layoutId === layoutChoice.id).map((selection) => headerStyleChoice(selection.styleId));
5480
- stylesByLayout[headerLayoutRecordKey(layoutChoice.id)] = nonEmptyHeaderStyleChoices(
5481
- styleChoices,
5944
+ const legacyStyleChoices = selections.filter((selection) => selection.layoutId === layoutChoice.id).map((selection) => headerStyleChoice(selection.styleId));
5945
+ const inferredStyleChoices = inferredHeaderStyleValuesForRecipes(
5946
+ layoutChoice.id,
5947
+ recipes
5948
+ ).map((styleId) => headerStyleChoice(styleId));
5949
+ stylesByLayout[unbrandHeaderLayoutId(layoutChoice.id)] = uniqueCompatibleHeaderStyleChoices(
5950
+ [...legacyStyleChoices, ...inferredStyleChoices],
5482
5951
  layoutChoice.id
5483
5952
  );
5484
5953
  }
@@ -5535,7 +6004,11 @@ var curatedSiteStyles = [
5535
6004
  motion: "subtle"
5536
6005
  },
5537
6006
  compositionBudget: quietBudget,
5538
- recommendedHeaderLookIds: ["centered-calm", "minimal-transparent", "clean-base"],
6007
+ recommendedHeaderLookIds: [
6008
+ "centered-calm",
6009
+ "minimal-transparent",
6010
+ "clean-base"
6011
+ ],
5539
6012
  buttonPersonalityChoices: [
5540
6013
  buttonChoice("soft-pill"),
5541
6014
  buttonChoice("pebble"),
@@ -5564,7 +6037,11 @@ var curatedSiteStyles = [
5564
6037
  motion: "subtle"
5565
6038
  },
5566
6039
  compositionBudget: balancedBudget,
5567
- recommendedHeaderLookIds: ["practical-utility", "brand-solid", "clean-base"],
6040
+ recommendedHeaderLookIds: [
6041
+ "practical-utility",
6042
+ "brand-solid",
6043
+ "clean-base"
6044
+ ],
5568
6045
  buttonPersonalityChoices: [
5569
6046
  buttonChoice("confident-chip"),
5570
6047
  buttonChoice("soft-pill"),
@@ -5591,7 +6068,11 @@ var curatedSiteStyles = [
5591
6068
  motion: "subtle"
5592
6069
  },
5593
6070
  compositionBudget: balancedBudget,
5594
- recommendedHeaderLookIds: ["editorial-line", "minimal-transparent", "centered-calm"],
6071
+ recommendedHeaderLookIds: [
6072
+ "serif-line",
6073
+ "minimal-transparent",
6074
+ "centered-calm"
6075
+ ],
5595
6076
  buttonPersonalityChoices: [
5596
6077
  buttonChoice("editorial-link"),
5597
6078
  buttonChoice("soft-pill"),
@@ -5619,7 +6100,11 @@ var curatedSiteStyles = [
5619
6100
  motion: "expressive"
5620
6101
  },
5621
6102
  compositionBudget: balancedBudget,
5622
- recommendedHeaderLookIds: ["brand-solid", "practical-utility", "clean-base"],
6103
+ recommendedHeaderLookIds: [
6104
+ "brand-solid",
6105
+ "practical-utility",
6106
+ "clean-base"
6107
+ ],
5623
6108
  buttonPersonalityChoices: [
5624
6109
  buttonChoice("pebble"),
5625
6110
  buttonChoice("brushed-wash"),
@@ -5636,7 +6121,10 @@ var curatedSiteStyles = [
5636
6121
  name: "Quiet Luxury",
5637
6122
  description: "Minimal, confident, and refined for premium experiences and private services.",
5638
6123
  generationBrief: "Use fewer claims, more specificity, and restrained sensory detail. Favor elegant media and low repetition over dense panels.",
5639
- siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 20 },
6124
+ siteCreatorSelection: {
6125
+ kind: "site_creator_keyword_heuristic",
6126
+ priority: 20
6127
+ },
5640
6128
  selectionKeywordRules: [
5641
6129
  { kind: "word", value: "luxury" },
5642
6130
  { kind: "word", value: "premium" },
@@ -5654,7 +6142,11 @@ var curatedSiteStyles = [
5654
6142
  motion: "none"
5655
6143
  },
5656
6144
  compositionBudget: quietBudget,
5657
- recommendedHeaderLookIds: ["minimal-transparent", "editorial-line", "clean-base"],
6145
+ recommendedHeaderLookIds: [
6146
+ "minimal-transparent",
6147
+ "serif-line",
6148
+ "clean-base"
6149
+ ],
5658
6150
  buttonPersonalityChoices: [
5659
6151
  buttonChoice("editorial-link"),
5660
6152
  buttonChoice("confident-chip"),
@@ -5690,7 +6182,11 @@ var curatedSiteStyles = [
5690
6182
  motion: "none"
5691
6183
  },
5692
6184
  compositionBudget: quietBudget,
5693
- recommendedHeaderLookIds: ["practical-utility", "brand-solid", "clean-base"],
6185
+ recommendedHeaderLookIds: [
6186
+ "practical-utility",
6187
+ "brand-solid",
6188
+ "clean-base"
6189
+ ],
5694
6190
  buttonPersonalityChoices: [
5695
6191
  buttonChoice("confident-chip"),
5696
6192
  buttonChoice("pebble"),
@@ -5717,7 +6213,11 @@ var curatedSiteStyles = [
5717
6213
  motion: "subtle"
5718
6214
  },
5719
6215
  compositionBudget: balancedBudget,
5720
- recommendedHeaderLookIds: ["centered-calm", "minimal-transparent", "clean-base"],
6216
+ recommendedHeaderLookIds: [
6217
+ "centered-calm",
6218
+ "minimal-transparent",
6219
+ "clean-base"
6220
+ ],
5721
6221
  buttonPersonalityChoices: [
5722
6222
  buttonChoice("soft-pill"),
5723
6223
  buttonChoice("pebble"),
@@ -5734,7 +6234,10 @@ var curatedSiteStyles = [
5734
6234
  name: "Quiet Practice",
5735
6235
  description: "Grounded, calm, and practical for small appointment-first practices.",
5736
6236
  generationBrief: "Make services, practitioner trust, preparation notes, and booking routes easy to scan. Keep the tone warm and specific, with quiet confidence rather than spa cliches or medical claims.",
5737
- siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 30 },
6237
+ siteCreatorSelection: {
6238
+ kind: "site_creator_keyword_heuristic",
6239
+ priority: 30
6240
+ },
5738
6241
  selectionKeywordRules: [
5739
6242
  { kind: "substring", value: "massage" },
5740
6243
  { kind: "word", value: "bodywork" },
@@ -5755,7 +6258,11 @@ var curatedSiteStyles = [
5755
6258
  motion: "subtle"
5756
6259
  },
5757
6260
  compositionBudget: quietBudget,
5758
- recommendedHeaderLookIds: ["practical-utility", "clean-base", "centered-calm"],
6261
+ recommendedHeaderLookIds: [
6262
+ "practical-utility",
6263
+ "clean-base",
6264
+ "centered-calm"
6265
+ ],
5759
6266
  buttonPersonalityChoices: [
5760
6267
  buttonChoice("pebble"),
5761
6268
  buttonChoice("soft-pill"),
@@ -5772,7 +6279,10 @@ var curatedSiteStyles = [
5772
6279
  name: "Personal Retreat Journal",
5773
6280
  description: "Warm, story-led, and readable for solo practitioners with mixed offers.",
5774
6281
  generationBrief: "Center the practitioner as the guide, then make private sessions, classes, retreats, and resources feel like clear pathways. Keep retreat copy grounded and practical, with enough editorial warmth for longer reading.",
5775
- siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 40 },
6282
+ siteCreatorSelection: {
6283
+ kind: "site_creator_keyword_heuristic",
6284
+ priority: 40
6285
+ },
5776
6286
  selectionKeywordRules: [
5777
6287
  { kind: "substring", value: "retreat" },
5778
6288
  { kind: "phrase", value: "solo practitioner" },
@@ -5792,7 +6302,11 @@ var curatedSiteStyles = [
5792
6302
  motion: "subtle"
5793
6303
  },
5794
6304
  compositionBudget: balancedBudget,
5795
- recommendedHeaderLookIds: ["editorial-line", "centered-calm", "minimal-transparent"],
6305
+ recommendedHeaderLookIds: [
6306
+ "serif-line",
6307
+ "centered-calm",
6308
+ "minimal-transparent"
6309
+ ],
5796
6310
  buttonPersonalityChoices: [
5797
6311
  buttonChoice("editorial-link"),
5798
6312
  buttonChoice("soft-pill"),
@@ -5809,7 +6323,10 @@ var curatedSiteStyles = [
5809
6323
  name: "Tactile Workshop",
5810
6324
  description: "Bright, hands-on, and image-led for maker studios, workshops, and creative classes.",
5811
6325
  generationBrief: "Lead with objects, materials, studio process, and practical booking detail. Keep the tone warm and direct, with useful mess, clear dates, and enough gallery rhythm to feel like a real creative studio.",
5812
- siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 50 },
6326
+ siteCreatorSelection: {
6327
+ kind: "site_creator_keyword_heuristic",
6328
+ priority: 50
6329
+ },
5813
6330
  selectionKeywordRules: [
5814
6331
  { kind: "substring", value: "ceramic" },
5815
6332
  { kind: "word", value: "pottery" },
@@ -5829,8 +6346,15 @@ var curatedSiteStyles = [
5829
6346
  motion: "subtle"
5830
6347
  },
5831
6348
  compositionBudget: balancedBudget,
5832
- recommendedHeaderLookIds: ["brand-solid", "practical-utility", "clean-base"],
5833
- recommendedFooterLookIds: ["site-footer-brand-two-band", "footer-muted-grounding"],
6349
+ recommendedHeaderLookIds: [
6350
+ "brand-solid",
6351
+ "practical-utility",
6352
+ "clean-base"
6353
+ ],
6354
+ recommendedFooterLookIds: [
6355
+ "site-footer-brand-two-band",
6356
+ "footer-muted-grounding"
6357
+ ],
5834
6358
  buttonPersonalityChoices: [
5835
6359
  buttonChoice("pebble"),
5836
6360
  buttonChoice("confident-chip"),
@@ -5845,11 +6369,14 @@ var curatedSiteStyles = [
5845
6369
  ]
5846
6370
  }),
5847
6371
  defineCuratedSiteStyle({
5848
- id: "site-style:soft-earth",
6372
+ id: SOFT_EARTH_SITE_STYLE_ID,
5849
6373
  name: "Soft Earth",
5850
6374
  description: "Warm, grounded, and editorial for yoga studios, retreats, and wellbeing communities.",
5851
- generationBrief: "Use cream space, terracotta CTAs, olive proof bands, natural imagery, generous but composed spacing, and editorial serif headings. Prefer a real intro section, image-led offering cards, warm community proof, and a simple two-column FAQ when content allows.",
5852
- siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 45 },
6375
+ generationBrief: "Use cream space, terracotta CTAs, olive quote bands, natural imagery, generous but composed spacing, and editorial serif headings. Prefer a real intro section, image-led offering cards, warm community quotes, and an FAQ with a full-width intro above two columns of questions when content allows.",
6376
+ siteCreatorSelection: {
6377
+ kind: "site_creator_keyword_heuristic",
6378
+ priority: 45
6379
+ },
5853
6380
  selectionKeywordRules: [
5854
6381
  { kind: "word", value: "meditation" },
5855
6382
  { kind: "word", value: "wellbeing" },
@@ -5915,18 +6442,29 @@ var curatedSiteStyles = [
5915
6442
  paragraphSize: "default",
5916
6443
  headingSize: "editorial"
5917
6444
  }
5918
- }
6445
+ },
6446
+ accordions: softEarthAccordionSystem
6447
+ },
6448
+ defaultBlockVariants: {
6449
+ "block.faq": "question-columns"
5919
6450
  },
5920
6451
  recommendedAppearancePresetIds: [
5921
6452
  "hero-brand-scrim",
5922
- "intro-soft-earth-statement",
5923
- "feature-cards-soft-earth-offerings",
5924
- "testimonials-soft-earth-proof-band",
5925
- "faq-soft-earth-two-column",
6453
+ "intro-organic-statement",
6454
+ "feature-cards-raised-rule",
6455
+ "events-lined-panel",
6456
+ "testimonials-brand-background-quotes",
5926
6457
  "contact-form-panel"
5927
6458
  ],
5928
- recommendedHeaderLookIds: ["centered-calm", "minimal-transparent", "editorial-line"],
5929
- recommendedFooterLookIds: ["footer-muted-grounding", "site-footer-brand-two-band"],
6459
+ recommendedHeaderLookIds: [
6460
+ "centered-calm",
6461
+ "minimal-transparent",
6462
+ "serif-line"
6463
+ ],
6464
+ recommendedFooterLookIds: [
6465
+ "footer-muted-grounding",
6466
+ "site-footer-brand-two-band"
6467
+ ],
5930
6468
  buttonPersonalityChoices: [
5931
6469
  buttonChoice("earth-pill"),
5932
6470
  buttonChoice("soft-pill"),
@@ -5945,7 +6483,10 @@ var curatedSiteStyles = [
5945
6483
  name: "Bold Launch",
5946
6484
  description: "High-energy and punchy for launches, campaigns, and creative offers.",
5947
6485
  generationBrief: "Use crisp positioning, bold hero structure, strong calls to action, and confident visual rhythm. Keep it precise, not shouty.",
5948
- siteCreatorSelection: { kind: "site_creator_keyword_heuristic", priority: 10 },
6486
+ siteCreatorSelection: {
6487
+ kind: "site_creator_keyword_heuristic",
6488
+ priority: 10
6489
+ },
5949
6490
  selectionKeywordRules: [
5950
6491
  { kind: "substring", value: "launch" },
5951
6492
  { kind: "substring", value: "campaign" },
@@ -5964,7 +6505,11 @@ var curatedSiteStyles = [
5964
6505
  motion: "expressive"
5965
6506
  },
5966
6507
  compositionBudget: expressiveBudget,
5967
- recommendedHeaderLookIds: ["transparent-overlay", "floating-glass", "brand-solid"],
6508
+ recommendedHeaderLookIds: [
6509
+ "transparent-overlay",
6510
+ "floating-glass",
6511
+ "brand-solid"
6512
+ ],
5968
6513
  buttonPersonalityChoices: [
5969
6514
  buttonChoice("ink-stamp"),
5970
6515
  buttonChoice("confident-chip"),
@@ -6012,11 +6557,18 @@ var curatedSiteStyles = [
6012
6557
  "hero-brand-scrim-fixed-frame",
6013
6558
  "body-text-editorial-intro",
6014
6559
  "schedule-details-brand-depth",
6015
- "testimonials-accent-quote-proof",
6560
+ "testimonials-accent-quote-cards",
6016
6561
  "contact-form-brand-depth-card"
6017
6562
  ],
6018
- recommendedHeaderLookIds: ["brand-solid", "transparent-overlay", "practical-utility"],
6019
- recommendedFooterLookIds: ["site-footer-brand-two-band", "footer-muted-grounding"],
6563
+ recommendedHeaderLookIds: [
6564
+ "brand-solid",
6565
+ "transparent-overlay",
6566
+ "practical-utility"
6567
+ ],
6568
+ recommendedFooterLookIds: [
6569
+ "site-footer-brand-two-band",
6570
+ "footer-muted-grounding"
6571
+ ],
6020
6572
  buttonPersonalityChoices: [
6021
6573
  buttonChoice("showtime-pill"),
6022
6574
  buttonChoice("confident-chip"),
@@ -6100,6 +6652,7 @@ var themeV2RuntimeStyleFieldNames = [
6100
6652
  ];
6101
6653
  var themeV2BlockSpecificRawStyleFieldNames = [
6102
6654
  "_contentCardStyles",
6655
+ "_heroLayoutStyles",
6103
6656
  "_textCardStyles"
6104
6657
  ];
6105
6658
  var themeV2NormalEditorRawStyleFieldNames = [
@@ -6109,6 +6662,10 @@ var themeV2NormalEditorRawStyleFieldNames = [
6109
6662
  var themeV2NormalEditorRawStyleFieldNameSet = new Set(
6110
6663
  themeV2NormalEditorRawStyleFieldNames
6111
6664
  );
6665
+ var themeV2CompilerOwnedFieldNames = [
6666
+ ...themeV2RuntimeStyleFieldNames,
6667
+ ...themeV2BlockSpecificRawStyleFieldNames
6668
+ ];
6112
6669
 
6113
6670
  // ../theme-core/src/site-styles/designState.ts
6114
6671
  var themeV2DesignStateSchemaVersion = 1;
@@ -6123,6 +6680,16 @@ var heroLegibilityStrategySchema = z21.enum([
6123
6680
  "scrim-gradient",
6124
6681
  "solid-panel"
6125
6682
  ]);
6683
+ var heroCompositionIntentSchema = z21.enum([
6684
+ "center",
6685
+ "bottom-left"
6686
+ ]);
6687
+ var heroTypographyScaleIntentSchema = z21.enum([
6688
+ "quiet",
6689
+ "editorial",
6690
+ "display",
6691
+ "poster"
6692
+ ]);
6126
6693
  var sectionHeightIntentSchema = z21.enum([
6127
6694
  "default",
6128
6695
  "banner",
@@ -6158,6 +6725,7 @@ var imageSurfaceTreatmentSchema = z21.discriminatedUnion("kind", [
6158
6725
  ]);
6159
6726
  var testimonialCardTreatmentSchema = z21.enum(["default", "accent-quote"]);
6160
6727
  var tileTreatmentSchema = z21.enum(tileTreatmentValues);
6728
+ var eventListTreatmentSchema = z21.enum(eventListTreatmentValues);
6161
6729
  var eyebrowTreatmentSchema = z21.enum(eyebrowTreatmentValues);
6162
6730
  function uniqueNonEmpty(values) {
6163
6731
  const uniqueValues = [...new Set(values)];
@@ -6199,10 +6767,13 @@ var blockDesignPlanSchema = z21.object({
6199
6767
  emphasis: z21.enum(userDesignOptionCatalog.emphases),
6200
6768
  sectionHeight: sectionHeightIntentSchema.optional(),
6201
6769
  heroLegibility: heroLegibilityStrategySchema.optional(),
6770
+ heroComposition: heroCompositionIntentSchema.optional(),
6771
+ heroTypographyScale: heroTypographyScaleIntentSchema.optional(),
6202
6772
  imageSurfaceTreatment: imageSurfaceTreatmentSchema.optional(),
6203
6773
  imageSurfaceMotion: imageSurfaceMotionSchema.optional(),
6204
6774
  testimonialCardTreatment: testimonialCardTreatmentSchema.optional(),
6205
6775
  tileTreatment: tileTreatmentSchema.optional(),
6776
+ eventListTreatment: eventListTreatmentSchema.optional(),
6206
6777
  eyebrowTreatment: eyebrowTreatmentSchema.optional()
6207
6778
  }).strict();
6208
6779
  var styleAuthoritySchema = z21.discriminatedUnion("kind", [
@@ -7522,6 +8093,7 @@ function styledSection(config) {
7522
8093
  renderBackgroundImage = true,
7523
8094
  backgroundImageLoading,
7524
8095
  backgroundImageFetchPriority,
8096
+ allowOverflow = false,
7525
8097
  fullWidthPath
7526
8098
  } = config;
7527
8099
  const renderedBackgroundNodes = backgroundLayer(`${bindFrom}.background`, {
@@ -7556,7 +8128,7 @@ function styledSection(config) {
7556
8128
  // No fallback needed - transform handles all cases via defaultSpacing
7557
8129
  }
7558
8130
  },
7559
- allowOverflow: {
8131
+ allowOverflow: allowOverflow ? true : {
7560
8132
  $bind: {
7561
8133
  from: `${bindFrom}.background`,
7562
8134
  transforms: [{ id: "background.resolveAllowOverflow" }],
@@ -8017,6 +8589,7 @@ function footerNav(opts) {
8017
8589
 
8018
8590
  // ../blocks/src/system/transforms/registry/boxStyles.ts
8019
8591
  var tileTreatmentSet = new Set(tileTreatmentValues);
8592
+ var eventListTreatmentSet = new Set(eventListTreatmentValues);
8020
8593
  var GAP_VALUE_MAP = {
8021
8594
  none: "0",
8022
8595
  compact: "calc(1rem * var(--space-mult, 1))",
@@ -8277,6 +8850,35 @@ function sectionState(opts) {
8277
8850
  );
8278
8851
  }
8279
8852
 
8853
+ // ../blocks/src/system/node/fragments/headingDecoration.ts
8854
+ var defaultBindFrom = "_sectionStyles.headingDecoration";
8855
+ function headingDecoration({
8856
+ bindFrom = defaultBindFrom,
8857
+ family,
8858
+ placement,
8859
+ className
8860
+ }) {
8861
+ return el(
8862
+ "div",
8863
+ {
8864
+ "aria-hidden": "true",
8865
+ className: {
8866
+ $bind: {
8867
+ from: bindFrom,
8868
+ transforms: [
8869
+ {
8870
+ id: "ui.headingDecorationClassName",
8871
+ options: { baseClass: className, family }
8872
+ }
8873
+ ]
8874
+ }
8875
+ }
8876
+ },
8877
+ null,
8878
+ when(`${bindFrom}.placement`, { equals: placement })
8879
+ );
8880
+ }
8881
+
8280
8882
  // ../blocks/src/system/fragments/types.ts
8281
8883
  import { z as z25 } from "zod";
8282
8884
  var FRAGMENT_ID_PATTERN = /^[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?$/i;
@@ -9055,6 +9657,10 @@ var testimonialsHeadingFragment = defineFragment({
9055
9657
  when("content.heading"),
9056
9658
  bind("content.heading")
9057
9659
  ),
9660
+ headingDecoration({
9661
+ family: "short-center-rule",
9662
+ placement: "under-centered-heading"
9663
+ }),
9058
9664
  text(
9059
9665
  {
9060
9666
  as: "p",
@@ -9726,6 +10332,41 @@ var faqHeadingFragment = defineFragment({
9726
10332
  });
9727
10333
 
9728
10334
  // ../blocks/src/system/fragments/library/faqAccordion.ts
10335
+ function createFaqAccordionLayout(options = {}) {
10336
+ return accordionList({
10337
+ collection: "content.items",
10338
+ itemName: "faqItem",
10339
+ indexName: "faqIndex",
10340
+ accordionProps: {
10341
+ className: options.rootClassName ?? "accordion-root",
10342
+ type: "single",
10343
+ collapsible: true
10344
+ },
10345
+ itemProps: {
10346
+ className: {
10347
+ $bind: {
10348
+ from: "content._cardStyles",
10349
+ transforms: [
10350
+ {
10351
+ id: "boxStyles.all",
10352
+ options: {
10353
+ axis: "all",
10354
+ includeSpacing: false,
10355
+ baseClass: "rb-faq-item rb-relative rb-isolate rb-overflow-hidden"
10356
+ }
10357
+ }
10358
+ ]
10359
+ },
10360
+ fallback: "rb-faq-item"
10361
+ },
10362
+ iconStyle: { $bind: { from: "theme.accordions.icon.style" } },
10363
+ // Legacy theme accordion style
10364
+ iconTreatment: { $bind: { from: "content._sectionStyles.accordionIconTreatment" } }
10365
+ },
10366
+ triggerFrom: "faqItem.question",
10367
+ contentFrom: "faqItem.answer"
10368
+ });
10369
+ }
9729
10370
  var faqAccordionFragment = defineFragment({
9730
10371
  id: "faqAccordion",
9731
10372
  title: "FAQ Accordion",
@@ -9759,40 +10400,7 @@ var faqAccordionFragment = defineFragment({
9759
10400
  }
9760
10401
  }
9761
10402
  ],
9762
- layout: accordionList({
9763
- collection: "content.items",
9764
- itemName: "faqItem",
9765
- indexName: "faqIndex",
9766
- accordionProps: {
9767
- className: "accordion-root",
9768
- // CSS-first: all styling handled by theme CSS
9769
- type: "single",
9770
- collapsible: true
9771
- },
9772
- itemProps: {
9773
- className: {
9774
- $bind: {
9775
- from: "content._cardStyles",
9776
- transforms: [
9777
- {
9778
- id: "boxStyles.all",
9779
- options: {
9780
- axis: "all",
9781
- includeSpacing: false,
9782
- baseClass: "rb-faq-item rb-relative rb-isolate rb-overflow-hidden rb-border"
9783
- }
9784
- }
9785
- ]
9786
- },
9787
- fallback: "rb-faq-item"
9788
- },
9789
- iconStyle: { $bind: { from: "theme.accordions.icon.style" } },
9790
- // Legacy theme accordion style
9791
- iconTreatment: { $bind: { from: "content._sectionStyles.accordionIconTreatment" } }
9792
- },
9793
- triggerFrom: "faqItem.question",
9794
- contentFrom: "faqItem.answer"
9795
- })
10403
+ layout: createFaqAccordionLayout()
9796
10404
  });
9797
10405
 
9798
10406
  // ../blocks/src/system/fragments/library/card.ts
@@ -10845,6 +11453,7 @@ var microLayout = styledSection({
10845
11453
  function splitLayoutWith(children) {
10846
11454
  return styledSection({
10847
11455
  children: styledContainer({
11456
+ baseClassName: "rb-relative rb-isolate rb-overflow-visible",
10848
11457
  children: {
10849
11458
  type: "grid",
10850
11459
  props: {
@@ -10869,6 +11478,7 @@ function splitLayoutWith(children) {
10869
11478
  // The split variants render the image as a real grid column, so suppress
10870
11479
  // the default absolute background image layer while keeping color/overlay.
10871
11480
  renderBackgroundImage: false,
11481
+ allowOverflow: true,
10872
11482
  baseClass: ""
10873
11483
  });
10874
11484
  }
@@ -11022,6 +11632,21 @@ function introHeading(className) {
11022
11632
  bind("content.title")
11023
11633
  );
11024
11634
  }
11635
+ function introHeadingGroup(className) {
11636
+ return stack(
11637
+ {
11638
+ gap: "sm",
11639
+ className: "rb-intro-heading-group"
11640
+ },
11641
+ [
11642
+ introHeading(className),
11643
+ headingDecoration({
11644
+ family: "organic-squiggle",
11645
+ placement: "after-heading"
11646
+ })
11647
+ ]
11648
+ );
11649
+ }
11025
11650
  function introBody(className = "rb-prose rb-max-w-none") {
11026
11651
  return richText({ className }, bind("content.body"));
11027
11652
  }
@@ -11040,6 +11665,10 @@ function introCopyStack(options = {}) {
11040
11665
  },
11041
11666
  [
11042
11667
  introHeading(options.headingClassName ?? "rb-intro-title"),
11668
+ headingDecoration({
11669
+ family: "organic-squiggle",
11670
+ placement: "after-heading"
11671
+ }),
11043
11672
  introBody(options.bodyClassName),
11044
11673
  introCtas(options.ctaJustify)
11045
11674
  ]
@@ -11079,7 +11708,7 @@ var statementCopyLayout = styledSection({
11079
11708
  className: "rb-intro rb-intro-statement rb-grid rb-grid-cols-1 rb-gap-8 rb-md-grid-cols-2 rb-md-items-start"
11080
11709
  },
11081
11710
  [
11082
- introHeading("rb-intro-title rb-max-w-xl"),
11711
+ introHeadingGroup("rb-intro-title rb-max-w-xl"),
11083
11712
  stack({ gap: "md", className: "rb-intro-copy rb-max-w-xl" }, [
11084
11713
  introBody(),
11085
11714
  introCtas("start")
@@ -11100,7 +11729,7 @@ var statementMediaLayout = styledSection({
11100
11729
  className: "rb-intro rb-intro-statement-media rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-3 rb-lg-items-center"
11101
11730
  },
11102
11731
  [
11103
- introHeading("rb-intro-title rb-max-w-xl"),
11732
+ introHeadingGroup("rb-intro-title rb-max-w-xl"),
11104
11733
  stack({ gap: "md", className: "rb-intro-copy rb-max-w-xl" }, [
11105
11734
  introBody(),
11106
11735
  introCtas("start")
@@ -12102,6 +12731,9 @@ function isNodeDefinitionArray(layout) {
12102
12731
  }
12103
12732
  var headingLayout = fragmentLayoutNode(faqHeadingFragment.layout);
12104
12733
  var accordionLayout = fragmentLayoutNode(faqAccordionFragment.layout);
12734
+ var questionColumnsAccordionLayout = createFaqAccordionLayout({
12735
+ rootClassName: "accordion-root rb-faq-question-columns rb-grid rb-grid-cols-1 rb-gap-4 rb-lg-grid-cols-2"
12736
+ });
12105
12737
  var defaultLayout = styledSection({
12106
12738
  children: styledContainer({
12107
12739
  baseClassName: "rb-relative rb-isolate",
@@ -12115,11 +12747,24 @@ var twoColumnLayout = styledSection({
12115
12747
  children: el(
12116
12748
  "div",
12117
12749
  {
12118
- className: "rb-faq-two-column rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
12750
+ className: "rb-faq-split-heading rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start"
12119
12751
  },
12120
12752
  [
12121
- el("div", { className: "rb-faq-two-column-heading" }, [headingLayout]),
12122
- el("div", { className: "rb-faq-two-column-accordion" }, [accordionLayout])
12753
+ el("div", { className: "rb-faq-split-heading-copy" }, [headingLayout]),
12754
+ el("div", { className: "rb-faq-split-heading-accordion" }, [accordionLayout])
12755
+ ]
12756
+ )
12757
+ }),
12758
+ baseClass: ""
12759
+ });
12760
+ var questionColumnsLayout = styledSection({
12761
+ children: styledContainer({
12762
+ baseClassName: "rb-relative rb-isolate",
12763
+ children: stack(
12764
+ { gap: "xl", className: "rb-w-full" },
12765
+ [
12766
+ headingLayout,
12767
+ questionColumnsAccordionLayout
12123
12768
  ]
12124
12769
  )
12125
12770
  }),
@@ -12144,7 +12789,8 @@ var faqManifest = createBlockManifest({
12144
12789
  layout: defaultLayout,
12145
12790
  variants: {
12146
12791
  default: defaultLayout,
12147
- "two-column": twoColumnLayout
12792
+ "two-column": twoColumnLayout,
12793
+ "question-columns": questionColumnsLayout
12148
12794
  },
12149
12795
  defaultVariant: "default",
12150
12796
  variantOptions: {
@@ -12155,6 +12801,10 @@ var faqManifest = createBlockManifest({
12155
12801
  "two-column": {
12156
12802
  label: "Two column",
12157
12803
  description: "A left heading column with FAQ items on the right."
12804
+ },
12805
+ "question-columns": {
12806
+ label: "Question columns",
12807
+ description: "A full-width heading above FAQ items split into two columns."
12158
12808
  }
12159
12809
  },
12160
12810
  description: "Accordion of frequently asked questions and answers.",
@@ -12205,6 +12855,10 @@ function desktopOnlyDisplay(display) {
12205
12855
  return `rb-hidden ${LARGE_DISPLAY_CLASSES[display]}`;
12206
12856
  }
12207
12857
 
12858
+ // ../theme-core/src/siteChromeOverlayClearance.ts
12859
+ var SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
12860
+ var SITE_CHROME_VISIBLE_HEADER_SELECTOR = `[${SITE_CHROME_VISIBLE_HEADER_ATTR}="true"]`;
12861
+
12208
12862
  // ../blocks/src/system/blocks/site-header.ts
12209
12863
  var logoRow = link(
12210
12864
  {
@@ -12299,15 +12953,21 @@ var mobileCta = ctaButton({
12299
12953
  var mobileToggleIcon = stack({ gap: "xs", className: "nav-mobile-icon" }, [
12300
12954
  {
12301
12955
  type: "div",
12302
- props: { className: "nav-mobile-bar nav-mobile-bar-top rb-h-0.5 rb-w-5 rb-rounded-full rb-bg-current" }
12956
+ props: {
12957
+ className: "nav-mobile-bar nav-mobile-bar-top rb-h-0.5 rb-w-5 rb-rounded-full rb-bg-current"
12958
+ }
12303
12959
  },
12304
12960
  {
12305
12961
  type: "div",
12306
- props: { className: "nav-mobile-bar nav-mobile-bar-middle rb-h-0.5 rb-w-5 rb-rounded-full rb-bg-current" }
12962
+ props: {
12963
+ className: "nav-mobile-bar nav-mobile-bar-middle rb-h-0.5 rb-w-5 rb-rounded-full rb-bg-current"
12964
+ }
12307
12965
  },
12308
12966
  {
12309
12967
  type: "div",
12310
- props: { className: "nav-mobile-bar nav-mobile-bar-bottom rb-h-0.5 rb-w-5 rb-rounded-full rb-bg-current" }
12968
+ props: {
12969
+ className: "nav-mobile-bar nav-mobile-bar-bottom rb-h-0.5 rb-w-5 rb-rounded-full rb-bg-current"
12970
+ }
12311
12971
  }
12312
12972
  ]);
12313
12973
  var mobileToggleButton = {
@@ -12471,6 +13131,7 @@ var transparentLayout = inline(
12471
13131
  );
12472
13132
  var floatingLayout = inline(
12473
13133
  {
13134
+ [SITE_CHROME_VISIBLE_HEADER_ATTR]: "true",
12474
13135
  className: bindProp("$root.theme.header.maxWidth", {
12475
13136
  transforms: pipe(
12476
13137
  tx("layout.maxWidthClass", {
@@ -12490,28 +13151,6 @@ var floatingLayout = inline(
12490
13151
  ],
12491
13152
  when("$root.theme.header.variant", { equals: "floating" })
12492
13153
  );
12493
- var editorialLayout = stack(
12494
- {
12495
- gap: "md",
12496
- align: "center",
12497
- className: bindProp("$root.theme.header.maxWidth", {
12498
- transforms: pipe(
12499
- tx("layout.maxWidthClass", {
12500
- base: `rb-header-layout ${desktopOnlyDisplay("flex")} rb-w-full rb-flex-col rb-items-center rb-gap-6 rb-text-center`
12501
- })
12502
- ),
12503
- fallback: `rb-container rb-header-layout ${desktopOnlyDisplay("flex")} rb-w-full rb-flex-col rb-items-center rb-gap-6 rb-text-center`
12504
- })
12505
- },
12506
- [
12507
- centeredLogoRow,
12508
- createNavRow(
12509
- `${desktopOnlyDisplay("flex")} rb-flex-wrap rb-justify-center rb-gap-x-8 rb-gap-y-3`,
12510
- "center"
12511
- )
12512
- ],
12513
- when("$root.theme.header.variant", { equals: "editorial" })
12514
- );
12515
13154
  var headerLayout = headerSection(
12516
13155
  {
12517
13156
  background: bindProp("$root.theme.header", {
@@ -12525,10 +13164,7 @@ var headerLayout = headerSection(
12525
13164
  }),
12526
13165
  style: bindProp("$root.theme.header", {
12527
13166
  transforms: pipe(tx("layout.headerRootStyle")),
12528
- fallback: mergeStyles(
12529
- textColorStyle("text"),
12530
- borderColorStyle("border")
12531
- )
13167
+ fallback: mergeStyles(textColorStyle("text"), borderColorStyle("border"))
12532
13168
  })
12533
13169
  },
12534
13170
  [
@@ -12537,7 +13173,6 @@ var headerLayout = headerSection(
12537
13173
  centeredLayout,
12538
13174
  transparentLayout,
12539
13175
  floatingLayout,
12540
- editorialLayout,
12541
13176
  mobileOverlay
12542
13177
  ],
12543
13178
  props({
@@ -13442,6 +14077,10 @@ var sectionHeading = stack(
13442
14077
  when("content.title"),
13443
14078
  bind("content.title")
13444
14079
  ),
14080
+ headingDecoration({
14081
+ family: "short-center-rule",
14082
+ placement: "under-centered-heading"
14083
+ }),
13445
14084
  richText(
13446
14085
  {
13447
14086
  className: "rb-feature-cards-description rb-prose rb-mx-auto rb-max-w-none",
@@ -15865,7 +16504,7 @@ var COLUMN_CLASSES = {
15865
16504
  };
15866
16505
  function getContainerClass(layout, columns) {
15867
16506
  if (layout === "compact") {
15868
- return "event-listing-compact-container rb-flex rb-flex-col rb-gap-2";
16507
+ return "event-listing-compact-container rb-flex rb-flex-col";
15869
16508
  }
15870
16509
  if (layout === "stack") {
15871
16510
  return "rb-flex rb-flex-col rb-gap-6";
@@ -18617,6 +19256,7 @@ import { z as z46 } from "zod";
18617
19256
  var storedProductCartItemSchema = z46.object({
18618
19257
  kind: z46.literal("product"),
18619
19258
  productId: z46.string().min(1),
19259
+ productCategoryId: z46.string().min(1).optional().nullable(),
18620
19260
  variantId: z46.string().min(1).optional().nullable(),
18621
19261
  title: z46.string().min(1),
18622
19262
  variantTitle: z46.string().optional().nullable(),
@@ -21121,6 +21761,10 @@ var scheduleTileTreatments = [
21121
21761
  "quiet",
21122
21762
  "brand-depth"
21123
21763
  ];
21764
+ var eventListTreatments = [
21765
+ "plain",
21766
+ "lined-panel"
21767
+ ];
21124
21768
  function scheduleDetailsCapable() {
21125
21769
  return declareBlockDesignCapability({
21126
21770
  sectionSurfaces: "supported",
@@ -21129,6 +21773,14 @@ function scheduleDetailsCapable() {
21129
21773
  tileTreatments: scheduleTileTreatments
21130
21774
  });
21131
21775
  }
21776
+ function eventListCapable() {
21777
+ return declareBlockDesignCapability({
21778
+ sectionSurfaces: "supported",
21779
+ contentFrames: ["plain"],
21780
+ itemSurfaces: "unsupported",
21781
+ eventListTreatments
21782
+ });
21783
+ }
21132
21784
  function defaultBoundaryBias(visualWeight) {
21133
21785
  return visualWeight === "featured" || visualWeight === "immersive" ? "clear" : "soft";
21134
21786
  }
@@ -21348,7 +22000,8 @@ var systemBlockDefinitionsRaw = [
21348
22000
  flow: bodyFlow,
21349
22001
  layoutProfiles: [
21350
22002
  layoutProfile({ variantKey: "default", family: "stack", weight: "standard" }),
21351
- layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" })
22003
+ layoutProfile({ variantKey: "two-column", family: "split", weight: "standard" }),
22004
+ layoutProfile({ variantKey: "question-columns", family: "grid", weight: "standard" })
21352
22005
  ]
21353
22006
  })),
21354
22007
  withDesignCapability("block.site-header", siteHeaderBlockDefinition, declareNoBlockDesignCapability("site-chrome"), defineBlockDesignMetadata({
@@ -21442,11 +22095,11 @@ var systemBlockDefinitionsRaw = [
21442
22095
  flow: offeringsFlow,
21443
22096
  layoutProfiles: [layoutProfile({ variantKey: "default", family: "centered", weight: "featured" })]
21444
22097
  })),
21445
- withDesignCapability("block.event-listing", eventListingBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
22098
+ withDesignCapability("block.event-listing", eventListingBlockDefinition, eventListCapable(), defineBlockDesignMetadata({
21446
22099
  flow: offeringsFlow,
21447
22100
  layoutProfiles: [layoutProfile({ variantKey: "default", family: "stack", weight: "standard" })]
21448
22101
  })),
21449
- withDesignCapability("block.event-calendar", eventCalendarBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
22102
+ withDesignCapability("block.event-calendar", eventCalendarBlockDefinition, eventListCapable(), defineBlockDesignMetadata({
21450
22103
  flow: offeringsFlow,
21451
22104
  layoutProfiles: [
21452
22105
  layoutProfile({ variantKey: "combined", family: "grid", weight: "standard" }),