@riverbankcms/sdk 0.126.0 → 0.128.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 (212) hide show
  1. package/dist/{PreviewEditorSidebar-DcYJxTgc.mjs → PreviewEditorSidebar-Dbvb7GIr.mjs} +64 -68
  2. package/dist/{PreviewEditorUI-Ctt1yTJr.mjs → PreviewEditorUI-e9O9l20X.mjs} +3 -3
  3. package/dist/{PreviewQueryProvider-DgFDIwvK.mjs → PreviewQueryProvider-B1kbhaJD.mjs} +1 -1
  4. package/dist/SdkPreviewModeRuntime-BZHt6e9w.mjs +11006 -0
  5. package/dist/{SiteChromeCustomizeContext-C87qlKWw.mjs → SiteChromeCustomizeContext-CvuGbHJX.mjs} +51247 -20733
  6. package/dist/_dts/ai/src/contracts/proposals.d.ts +486 -36
  7. package/dist/_dts/api/src/bookingClosures.d.ts +19 -3
  8. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +4 -3
  9. package/dist/_dts/api/src/bookingRecords.d.ts +0 -13
  10. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +2 -2
  11. package/dist/_dts/api/src/communications.d.ts +2 -1
  12. package/dist/_dts/api/src/contactFormSummary.d.ts +15 -0
  13. package/dist/_dts/api/src/contentRuntime.d.ts +3 -10
  14. package/dist/_dts/api/src/endpoints.d.ts +1 -1
  15. package/dist/_dts/api/src/footerSettings.d.ts +11 -0
  16. package/dist/_dts/api/src/index.d.ts +2 -1
  17. package/dist/_dts/api/src/occurrenceScheduling.d.ts +48 -0
  18. package/dist/_dts/api/src/participantMessaging.d.ts +5 -3
  19. package/dist/_dts/api/src/publicExperience/siteEndpoints.d.ts +7 -0
  20. package/dist/_dts/api/src/sdkContracts.d.ts +7 -5
  21. package/dist/_dts/api/src/siteOperations.d.ts +12 -3
  22. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +3 -2
  23. package/dist/_dts/block-form/src/backend/store-backend.d.ts +2 -1
  24. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +1 -0
  25. package/dist/_dts/blocks/src/client/form.d.ts +1 -0
  26. package/dist/_dts/blocks/src/client/newsletter-form.d.ts +1 -0
  27. package/dist/_dts/blocks/src/client/site-chrome.d.ts +1 -0
  28. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -8
  29. package/dist/_dts/blocks/src/index.d.ts +3 -2
  30. package/dist/_dts/blocks/src/lib/media.d.ts +267 -0
  31. package/dist/_dts/blocks/src/rendering/server.d.ts +1 -1
  32. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +41 -0
  33. package/dist/_dts/blocks/src/system/blocks/newsletter-signup-destination.d.ts +14 -23
  34. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +1 -1
  35. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +109 -23
  36. package/dist/_dts/blocks/src/system/constants/buttonRoles.d.ts +0 -13
  37. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  38. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +42 -108
  39. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +21 -54
  40. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/logic.d.ts +1 -1
  41. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationSurface.d.ts +26 -0
  42. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +8 -0
  43. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +21 -0
  44. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +4 -4
  45. package/dist/_dts/blocks/src/system/runtime/nodes/mergeResolveImageUrlContexts.d.ts +7 -0
  46. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +29 -78
  47. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.server.d.ts +1 -1
  48. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +3 -6
  49. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +27 -8
  50. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +2 -2
  51. package/dist/_dts/content-editor/src/FooterComposerOverview.d.ts +21 -0
  52. package/dist/_dts/content-editor/src/FooterComposerPanel.d.ts +3 -1
  53. package/dist/_dts/content-editor/src/FooterEngagementEditorFields.d.ts +31 -0
  54. package/dist/_dts/content-editor/src/FooterEngagementEditorPanel.d.ts +17 -0
  55. package/dist/_dts/content-editor/src/footerComposer.d.ts +3 -0
  56. package/dist/_dts/content-editor/src/footerEngagementDraft.d.ts +57 -0
  57. package/dist/_dts/content-editor/src/footerEngagementEditor.d.ts +11 -0
  58. package/dist/_dts/content-editor/src/footerPreviewRuntime.d.ts +13 -0
  59. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  60. package/dist/_dts/content-editor/src/ui/blockValidationManifestRegistry.d.ts +17 -0
  61. package/dist/_dts/content-editor/src/ui/blockValidationView.d.ts +1 -1
  62. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +4 -0
  63. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +35 -0
  64. package/dist/_dts/core/src/footer-arrangement.d.ts +2 -0
  65. package/dist/_dts/core/src/footer-composition-types.d.ts +118 -0
  66. package/dist/_dts/core/src/footer-composition.d.ts +7 -116
  67. package/dist/_dts/core/src/footer-engagement.d.ts +30 -0
  68. package/dist/_dts/core/src/index.d.ts +4 -0
  69. package/dist/_dts/core/src/newsletter-signup-destination.d.ts +38 -0
  70. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +200 -159
  71. package/dist/_dts/db/src/index.d.ts +1 -0
  72. package/dist/_dts/db/src/schemas/forms.d.ts +72 -2
  73. package/dist/_dts/db/src/schemas/standard-contact.d.ts +114 -0
  74. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +4 -0
  75. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockValidationManifests.d.ts +26 -0
  76. package/dist/_dts/editor-blocks/src/widgets/rich-text/imageInsert.d.ts +3 -3
  77. package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -2
  78. package/dist/_dts/media-editor/src/context.d.ts +1 -2
  79. package/dist/_dts/media-editor/src/index.d.ts +3 -1
  80. package/dist/_dts/media-editor/src/mediaSelection.d.ts +32 -0
  81. package/dist/_dts/media-editor/src/types.d.ts +3 -1
  82. package/dist/_dts/media-editor/src/useMediaSelection.d.ts +26 -0
  83. package/dist/_dts/preview-next/src/client/blocks/previewBatchLoaderParams.d.ts +6 -0
  84. package/dist/_dts/preview-next/src/client/index.d.ts +2 -0
  85. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -5
  86. package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -5
  87. package/dist/_dts/preview-next/src/client/preview/HeaderMenuControls.d.ts +12 -0
  88. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -5
  89. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -4
  90. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +13 -2
  91. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +8 -4
  92. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -49
  93. package/dist/_dts/preview-next/src/client/preview/headerInteractionPaletteSurfaceState.d.ts +8 -0
  94. package/dist/_dts/preview-next/src/client/preview/previewThemeRoles.d.ts +15 -0
  95. package/dist/_dts/preview-next/src/client/preview/siteChromeCustomizeTypes.d.ts +54 -0
  96. package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +13 -3
  97. package/dist/_dts/preview-next/src/client/preview/siteChromeNavQuickControlHistory.d.ts +3 -0
  98. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +6 -3
  99. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +6 -5
  100. package/dist/_dts/sdk/src/cli/commands/push/execute/footer.d.ts +9 -0
  101. package/dist/_dts/sdk/src/cli/content/footerFile.d.ts +10 -0
  102. package/dist/_dts/sdk/src/cli/content/reader.d.ts +3 -5
  103. package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +15 -3
  104. package/dist/_dts/sdk/src/client/combineAbortSignals.d.ts +2 -0
  105. package/dist/_dts/sdk/src/client/management/types.d.ts +6 -15
  106. package/dist/_dts/sdk/src/client/types.d.ts +10 -2
  107. package/dist/_dts/sdk/src/client/wholeSeriesReadOperations.d.ts +11 -0
  108. package/dist/_dts/sdk/src/config/types.d.ts +1 -1
  109. package/dist/_dts/sdk/src/config/validation.d.ts +3 -0
  110. package/dist/_dts/sdk/src/contracts/event-registration-content.d.ts +16 -0
  111. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +4 -15
  112. package/dist/_dts/sdk/src/public-api/contracts.d.ts +4 -18
  113. package/dist/_dts/sdk/src/public-api/teamMemberContracts.d.ts +17 -0
  114. package/dist/_dts/sdk/src/public-api/wholeSeriesContracts.d.ts +2 -0
  115. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +7 -0
  116. package/dist/_dts/sdk/src/rendering/index.d.ts +5 -3
  117. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -2
  118. package/dist/_dts/sdk/src/rendering/mediaAssets.d.ts +8 -2
  119. package/dist/_dts/sdk/src/version.d.ts +1 -1
  120. package/dist/_dts/site-commands/src/commandContract.d.ts +8 -1
  121. package/dist/_dts/site-commands/src/commands.d.ts +16 -2
  122. package/dist/_dts/theme-core/src/buttons/effects/presets/background.d.ts +1 -1
  123. package/dist/_dts/theme-core/src/buttons/styles/registry.d.ts +0 -18
  124. package/dist/_dts/theme-core/src/buttons/types.d.ts +1 -3
  125. package/dist/_dts/theme-core/src/header/containerSchema.d.ts +20 -0
  126. package/dist/_dts/theme-core/src/header/generateHeaderCss.d.ts +1 -1
  127. package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +14 -0
  128. package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +3 -0
  129. package/dist/_dts/theme-core/src/header/paintTargets.d.ts +31 -0
  130. package/dist/_dts/theme-core/src/header/scrollTreatment.d.ts +11 -0
  131. package/dist/_dts/theme-core/src/header/surfaceRules.d.ts +8 -0
  132. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +15 -0
  133. package/dist/_dts/theme-core/src/palette/colors.d.ts +1 -1
  134. package/dist/_dts/theme-core/src/schema.d.ts +67 -19
  135. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +3 -51
  136. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +4 -11
  137. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +3 -51
  138. package/dist/_dts/theme-core/src/site-styles/headerInteractionPalette.d.ts +32 -0
  139. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +19 -106
  140. package/dist/_dts/theme-core/src/site-styles/headerOpeningForeground.d.ts +22 -0
  141. package/dist/_dts/theme-core/src/site-styles/headerOpeningSection.d.ts +2 -0
  142. package/dist/_dts/theme-core/src/site-styles/headerStyleParts.d.ts +4 -0
  143. package/dist/_dts/theme-core/src/site-styles/index.d.ts +3 -0
  144. package/dist/_dts/theme-core/src/site-styles/lookOptionGroups.d.ts +24 -0
  145. package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +1 -2
  146. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +4 -22
  147. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorOptions.d.ts +21 -0
  148. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
  149. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +4 -1
  150. package/dist/cli/index.mjs +6272 -5706
  151. package/dist/client/{courseRegistration-BcemLAdN.mjs → CourseRegistrationWizard-xRmA7REV.mjs} +329 -49
  152. package/dist/client/{DiscountCodeDisclosure-DS0AuFWW.mjs → DiscountCodeDisclosure-B9vriL5C.mjs} +1 -1
  153. package/dist/client/{EventCombined.client-DtMxLr7q.mjs → EventCombined.client-BgVnVTlz.mjs} +2 -2
  154. package/dist/client/{EventListing.client-BdLSRNg1.mjs → EventListing.client-CqdsO7jO.mjs} +2 -2
  155. package/dist/client/{LeafletStaticMap-BrpC6vsT.mjs → LeafletStaticMap-CKPxot9M.mjs} +1 -1
  156. package/dist/client/{StepIndicator-CBYPFVoy.mjs → StepIndicator-DGCYuBJ1.mjs} +2 -2
  157. package/dist/client/{accordion-BqqwPJWM.mjs → accordion-BfN5Eqd-.mjs} +1 -1
  158. package/dist/client/{bookingForm-SneP3yxC.mjs → bookingForm-DOvCpBFP.mjs} +5 -5
  159. package/dist/client/bookings.mjs +126 -23
  160. package/dist/client/{carousel-BTIR9L3I.mjs → carousel-DPNmiH0f.mjs} +1 -1
  161. package/dist/client/{cart-bqiqd8SX.mjs → cart--egVXlrR.mjs} +3 -3
  162. package/dist/client/{checkout-WbTFV5v4.mjs → checkout-DywWtMcq.mjs} +3 -3
  163. package/dist/client/client.mjs +6111 -5794
  164. package/dist/client/courseRegistration-Dk9qFVwt.mjs +46 -0
  165. package/dist/client/{eventCalendar-CsxIw0V_.mjs → eventCalendar-Bkz2HjlS.mjs} +4 -4
  166. package/dist/client/{eventCombined-B6XMoHfa.mjs → eventCombined-D4kipYWg.mjs} +2 -2
  167. package/dist/client/{eventDetails-BJaoPPfo.mjs → eventDetails-Dz_5ix2Q.mjs} +56 -35
  168. package/dist/client/{eventListing-DgwdYHRT.mjs → eventListing-D0vm-zST.mjs} +2 -2
  169. package/dist/client/{eventRegistration-C0O3folu.mjs → eventRegistration-Cw1E4Q4p.mjs} +58 -6
  170. package/dist/client/{form-Bk9txGFt.mjs → form-C2Zf1n3K.mjs} +1 -1
  171. package/dist/client/{headerSection-yIBt0yTv.mjs → headerSection-CP05gzdc.mjs} +2 -2
  172. package/dist/client/hooks.mjs +1013 -935
  173. package/dist/client/{locationMap-C-3KIpv-.mjs → locationMap-Cl3x9PYJ.mjs} +2 -2
  174. package/dist/client/{newsletterForm-CzB8g8h2.mjs → newsletterForm-DyEJoClm.mjs} +26 -20
  175. package/dist/client/{pricing-C1QeDes_.mjs → pricing-DGuNR1W4.mjs} +1 -1
  176. package/dist/client/{productDetail-w7SBp5uc.mjs → productDetail-Cq-HrGew.mjs} +3 -3
  177. package/dist/client/{productList-D0tGKHGf.mjs → productList-DbB3jwqd.mjs} +3 -3
  178. package/dist/client/{propsDecoder-Bcin2DB3.mjs → propsDecoder-CiTuhUwY.mjs} +257 -142
  179. package/dist/client/rendering/client.mjs +1342 -1122
  180. package/dist/client/rendering/islands.mjs +18 -18
  181. package/dist/client/rendering.mjs +6622 -6321
  182. package/dist/client/{scrollToBlock-h-o_STf_.mjs → scrollToBlock-CShkRqab.mjs} +1 -1
  183. package/dist/client/{shop-BGzmL8O_.mjs → shop-Cu4Ib-ZA.mjs} +5 -5
  184. package/dist/client/{shop-commerce-lX8QxjX-.mjs → shop-commerce-BzpsOdh7.mjs} +4 -4
  185. package/dist/client/{shop-commerce-store-CEurARtu.mjs → shop-commerce-store-DaE7Fhj8.mjs} +1 -1
  186. package/dist/client/{shopShared-DXxH8xxw.mjs → shopShared-cF0c20vB.mjs} +2 -2
  187. package/dist/client/{useEventFilters-B591g9vd.mjs → useEventFilters-QZ3HMgaJ.mjs} +2 -2
  188. package/dist/client/{usePolling-BvnChV4m.mjs → usePolling-BKf0GcE-.mjs} +2 -2
  189. package/dist/preview-next/before-render.mjs +1 -1
  190. package/dist/preview-next/client/runtime.mjs +4 -4
  191. package/dist/preview-next/middleware.mjs +1 -1
  192. package/dist/{previewAuthStore-Dev9CdG9.mjs → previewAuthStore-BesgU5Xu.mjs} +1 -1
  193. package/dist/{sdk-runtime-M__i3Jce.mjs → sdk-runtime-Cn_QSCOg.mjs} +2 -2
  194. package/dist/{separator-VSlnI9bc.mjs → separator-CEoGABRc.mjs} +1 -1
  195. package/dist/server/components.mjs +1750 -1614
  196. package/dist/server/config-validation.mjs +1010 -935
  197. package/dist/server/config.mjs +1010 -935
  198. package/dist/server/data.mjs +1013 -935
  199. package/dist/server/index.mjs +40 -16
  200. package/dist/server/next.mjs +1790 -1632
  201. package/dist/server/page-converter.mjs +1012 -938
  202. package/dist/server/prebuild.mjs +1 -1
  203. package/dist/server/rendering/server.mjs +1746 -1601
  204. package/dist/server/rendering.mjs +1759 -1615
  205. package/dist/server/routing.mjs +1123 -975
  206. package/dist/server/server.mjs +1053 -951
  207. package/dist/server/theme-bridge.mjs +151 -118
  208. package/dist/server/theme.mjs +111 -23
  209. package/package.json +1 -1
  210. package/dist/SdkPreviewModeRuntime-CvW1vdQ4.mjs +0 -39468
  211. package/dist/_dts/editor-blocks/src/widgets/rich-text/ensureRichTextImageAssetIdentifier.d.ts +0 -8
  212. package/dist/client/MagicLinkForm-Bt3IuLMy.mjs +0 -327
@@ -509,7 +509,7 @@ function encodePublicProductCategorySelector(selector) {
509
509
  };
510
510
  }
511
511
  }
512
- function isRecord$25(value) {
512
+ function isRecord$27(value) {
513
513
  return typeof value === "object" && value !== null;
514
514
  }
515
515
  function isJsonResponseContentType(contentType) {
@@ -533,8 +533,8 @@ async function parseJsonBody(response) {
533
533
  }
534
534
  }
535
535
  function getBlockApiErrorDetails(data) {
536
- if (!isRecord$25(data)) return {};
537
- const nestedError = isRecord$25(data.error) ? data.error : void 0;
536
+ if (!isRecord$27(data)) return {};
537
+ const nestedError = isRecord$27(data.error) ? data.error : void 0;
538
538
  return {
539
539
  message: typeof nestedError?.message === "string" ? nestedError.message : typeof data.message === "string" ? data.message : void 0,
540
540
  code: typeof nestedError?.code === "string" ? nestedError.code : typeof data.code === "string" ? data.code : void 0
@@ -1793,11 +1793,9 @@ var init_types$15 = __esmMin((() => {
1793
1793
  "secondary",
1794
1794
  "outline",
1795
1795
  "ghost",
1796
- "link",
1797
- "tertiary",
1798
1796
  "accent"
1799
1797
  ];
1800
- buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only");
1798
+ buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only").refine((value) => value !== "link" && value !== "tertiary", { message: "Retired button role IDs are not valid variant IDs" });
1801
1799
  DEFAULT_VARIANT_ALIAS_ID = "default";
1802
1800
  opaqueButtonColourTokenSchema = themeColorTokenSchema.refine((value) => parseOpaqueButtonColourToken(value) !== null, "Button colour tokens must be opaque").transform((value) => {
1803
1801
  const token = parseOpaqueButtonColourToken(value);
@@ -2244,7 +2242,7 @@ function canonicalPaletteHashInput(colors, mode) {
2244
2242
  return `${mode}|${paletteColorFingerprint(colors)}`;
2245
2243
  }
2246
2244
  /**
2247
- * The shared TypeScript/SQL protocol. Do not reorder roles: the order comes
2245
+ * Stable curated-catalogue identity. Do not reorder roles: the order comes
2248
2246
  * from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
2249
2247
  */
2250
2248
  function paletteValueKey(colors, mode) {
@@ -3385,6 +3383,76 @@ var init_tokenOrColor = __esmMin((() => {
3385
3383
  ]);
3386
3384
  }));
3387
3385
  //#endregion
3386
+ //#region ../theme-core/src/responsive/breakpoints.ts
3387
+ function mqUp(px) {
3388
+ return `(min-width: ${px}px)`;
3389
+ }
3390
+ function mqDown(px) {
3391
+ return `(max-width: ${px}px)`;
3392
+ }
3393
+ function mqBetween(minPx, maxPx) {
3394
+ return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
3395
+ }
3396
+ var BREAKPOINT_LG, BREAKPOINT_XL, BREAKPOINT_LG_DOWN;
3397
+ var init_breakpoints = __esmMin((() => {
3398
+ BREAKPOINT_LG = 1024;
3399
+ BREAKPOINT_XL = 1280;
3400
+ BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
3401
+ mqUp(640);
3402
+ mqUp(768);
3403
+ mqUp(BREAKPOINT_LG);
3404
+ mqUp(BREAKPOINT_XL);
3405
+ mqDown(639);
3406
+ mqDown(767);
3407
+ mqDown(BREAKPOINT_LG_DOWN);
3408
+ mqBetween(640, BREAKPOINT_LG_DOWN);
3409
+ mqDown(640);
3410
+ mqDown(768);
3411
+ }));
3412
+ var init_paintTargets = __esmMin((() => {
3413
+ init_breakpoints();
3414
+ })), headerScrollTreatmentSchema;
3415
+ var init_scrollTreatment = __esmMin((() => {
3416
+ init_paintTargets();
3417
+ headerScrollTreatmentSchema = z$1.discriminatedUnion("kind", [z$1.object({
3418
+ kind: z$1.literal("contrast-glass"),
3419
+ backgroundTone: z$1.enum(["light", "dark"])
3420
+ })]).optional();
3421
+ }));
3422
+ //#endregion
3423
+ //#region ../theme-core/src/header/containerSchema.ts
3424
+ var headerContainerSchema;
3425
+ var init_containerSchema = __esmMin((() => {
3426
+ headerContainerSchema = z$1.object({
3427
+ rounded: z$1.enum([
3428
+ "none",
3429
+ "sm",
3430
+ "md",
3431
+ "lg",
3432
+ "xl",
3433
+ "2xl"
3434
+ ]).default("xl"),
3435
+ border: z$1.boolean().default(true),
3436
+ shadow: z$1.boolean().default(true),
3437
+ padding: z$1.enum([
3438
+ "sm",
3439
+ "md",
3440
+ "lg"
3441
+ ]).default("md"),
3442
+ tint: z$1.string().nullable().optional(),
3443
+ opacity: z$1.number().min(0).max(1).default(.12)
3444
+ }).optional();
3445
+ }));
3446
+ var headerInteractionPaletteValues, headerInteractionPaletteSchema;
3447
+ var init_interactionPalette = __esmMin((() => {
3448
+ headerInteractionPaletteValues = [
3449
+ "primary",
3450
+ "secondary",
3451
+ "accent"
3452
+ ];
3453
+ headerInteractionPaletteSchema = z$1.enum(headerInteractionPaletteValues);
3454
+ }));
3455
+ //#endregion
3388
3456
  //#region ../theme-core/src/schema.ts
3389
3457
  /**
3390
3458
  * Normalises the legacy `navTypography` font-role alias into the canonical
@@ -3400,7 +3468,7 @@ function normaliseHeaderNavFontRole(header) {
3400
3468
  navFontRole: navTypography
3401
3469
  } : rest;
3402
3470
  }
3403
- var axesSchema, typographyStyleSchema, bodyTypographyStyleSchema, headingSizeSchema, headingTypographyOverridesSchema, headingTypographyStyleSchema, proseLinkUnderlineStyleSchema, proseLinkUnderlineThicknessSchema, proseLinkUnderlineOffsetSchema, proseLinkStyleSchema, semanticSpacingSchema, boxRoundedSchema, boxBackgroundOverlaySchema, boxBackgroundSchema, noHeadingDecorationSchema, visibleHeadingDecorationSchema, headingDecorationSchema, headingDecorationOverrideSchema, accordionIconTreatmentSchema, sectionStylesOverrideSchema, containerStylesOverrideSchema, cardBorderOverrideSchema, cardStylesOverrideSchema, blockStyleOverridesSchema, blockThemeOverrideSchema, typographyScaleSchema, eyebrowTypographyStyleSchema, typographySchema, spaceSchema, corners, shadow, border, motion, inputStyle$1, headerVariant, headerPositioning, headerNavStyle, navFontWeight, headerMaxWidth, headerBarFrame, headerContainerSchema, headerBorderSchema, logoStyleSchema, headerLogoTextSchema, navEffectsSchema, dropdownStyleSchema, headerCtaGapSchema, headerCtaTreatmentSchema, navContainerSchema, headerBackgroundSchema, headerSchema, footerVariant, footerMaxWidth, footerMode, footerNavLayoutMode, footerNavLayoutAlign, footerSpacing, footerLogoPlacement, footerLogoSize, footerLogoMaxHeight, footerBottomTextLinkStyleSchema, footerBottomBarSchema, footerNavLayoutSchema, footerLogoSchema, footerSchema, containerPaddingPresetSchema, layoutSchema, heroTypographySizeSchema, heroTypographyLineHeightSchema, heroResponsiveTypographySchema, heroTypographySchema, heroSchema, bodyTextIntroTypographySizeSchema, bodyTextSchema, gradientsSchema, testimonialQuoteTreatmentSchema, themeSchema;
3471
+ var axesSchema, typographyStyleSchema, bodyTypographyStyleSchema, headingSizeSchema, headingTypographyOverridesSchema, headingTypographyStyleSchema, proseLinkUnderlineStyleSchema, proseLinkUnderlineThicknessSchema, proseLinkUnderlineOffsetSchema, proseLinkStyleSchema, semanticSpacingSchema, boxRoundedSchema, boxBackgroundOverlaySchema, boxBackgroundSchema, noHeadingDecorationSchema, visibleHeadingDecorationSchema, headingDecorationSchema, headingDecorationOverrideSchema, accordionIconTreatmentSchema, sectionStylesOverrideSchema, containerStylesOverrideSchema, cardBorderOverrideSchema, cardStylesOverrideSchema, blockStyleOverridesSchema, blockThemeOverrideSchema, typographyScaleSchema, eyebrowTypographyStyleSchema, typographySchema, spaceSchema, corners, shadow, border, motion, inputStyle$1, headerVariant, headerPositioning, headerNavStyle, navFontWeight, headerMaxWidth, headerBarFrame, headerBorderSchema, logoStyleSchema, headerLogoTextSchema, navEffectsSchema, dropdownStyleSchema, headerCtaGapSchema, headerCtaTreatmentSchema, navContainerSchema, headerBackgroundSchema, headerSchema, footerVariant, footerMaxWidth, footerMode, footerNavLayoutMode, footerNavLayoutAlign, footerSpacing, footerLogoPlacement, footerLogoSize, footerLogoMaxHeight, footerBottomTextLinkStyleSchema, footerBottomBarSchema, footerNavLayoutSchema, footerLogoSchema, footerSchema, containerPaddingPresetSchema, layoutSchema, heroTypographySizeSchema, heroTypographyLineHeightSchema, heroResponsiveTypographySchema, heroTypographySchema, heroSchema, bodyTextIntroTypographySizeSchema, bodyTextSchema, gradientsSchema, testimonialQuoteTreatmentSchema, themeSchema;
3404
3472
  var init_schema$2 = __esmMin((() => {
3405
3473
  init_media$2();
3406
3474
  init_schema$3();
@@ -3418,6 +3486,9 @@ var init_schema$2 = __esmMin((() => {
3418
3486
  init_rawStyleFields();
3419
3487
  init_themeColorTokens();
3420
3488
  init_tokenOrColor();
3489
+ init_scrollTreatment();
3490
+ init_containerSchema();
3491
+ init_interactionPalette();
3421
3492
  axesSchema = z$1.object({
3422
3493
  tone: z$1.enum([
3423
3494
  "minimal",
@@ -3825,25 +3896,6 @@ var init_schema$2 = __esmMin((() => {
3825
3896
  ]);
3826
3897
  headerMaxWidth = z$1.enum(["container", "full"]);
3827
3898
  headerBarFrame = z$1.enum(["full-bleed", "inset-shell"]);
3828
- headerContainerSchema = z$1.object({
3829
- rounded: z$1.enum([
3830
- "none",
3831
- "sm",
3832
- "md",
3833
- "lg",
3834
- "xl",
3835
- "2xl"
3836
- ]).default("xl"),
3837
- border: z$1.boolean().default(true),
3838
- shadow: z$1.boolean().default(true),
3839
- padding: z$1.enum([
3840
- "sm",
3841
- "md",
3842
- "lg"
3843
- ]).default("md"),
3844
- tint: z$1.string().nullable().optional(),
3845
- opacity: z$1.number().min(0).max(1).default(.12)
3846
- }).optional();
3847
3899
  headerBorderSchema = componentBorderSchema.extend({ position: z$1.enum([
3848
3900
  "bottom",
3849
3901
  "top",
@@ -3966,6 +4018,7 @@ var init_schema$2 = __esmMin((() => {
3966
4018
  shrinkOnScroll: z$1.boolean(),
3967
4019
  maxWidth: headerMaxWidth,
3968
4020
  barFrame: headerBarFrame.optional(),
4021
+ scrollTreatment: headerScrollTreatmentSchema,
3969
4022
  logoOverride: mediaSchema$1.nullable().optional(),
3970
4023
  background: headerBackgroundSchema.default({
3971
4024
  type: "color",
@@ -3978,6 +4031,7 @@ var init_schema$2 = __esmMin((() => {
3978
4031
  navFontRole: z$1.enum(["body", "heading"]).optional(),
3979
4032
  navTypography: z$1.enum(["body", "heading"]).optional(),
3980
4033
  navTextSize: navLinkStyleSchema.shape.textSize,
4034
+ interactionPalette: headerInteractionPaletteSchema.optional(),
3981
4035
  navPlacement: z$1.enum(["end", "center"]).optional(),
3982
4036
  container: headerContainerSchema,
3983
4037
  border: headerBorderSchema,
@@ -4407,7 +4461,6 @@ var init_classNames = __esmMin((() => {
4407
4461
  init_types$15();
4408
4462
  }));
4409
4463
  var init_generateBaseCSS = __esmMin((() => {}));
4410
- var init_background$2 = __esmMin((() => {}));
4411
4464
  var STATE_SELECTORS;
4412
4465
  var init_cssUtils = __esmMin((() => {
4413
4466
  STATE_SELECTORS = {
@@ -4417,6 +4470,64 @@ var init_cssUtils = __esmMin((() => {
4417
4470
  base: ""
4418
4471
  };
4419
4472
  }));
4473
+ //#endregion
4474
+ //#region ../theme-core/src/buttons/effects/presets/background.ts
4475
+ function shadeBackgroundEffect(config) {
4476
+ return {
4477
+ id: config.id,
4478
+ name: config.name,
4479
+ description: config.description,
4480
+ category: "background",
4481
+ pseudoElement: "none",
4482
+ applicableTo: ["button"],
4483
+ customizableOption: {
4484
+ name: "amount",
4485
+ type: "select",
4486
+ label: config.label,
4487
+ default: 100,
4488
+ options: [
4489
+ 0,
4490
+ 100,
4491
+ 200,
4492
+ 300,
4493
+ 400,
4494
+ 500,
4495
+ 600,
4496
+ 700,
4497
+ 800,
4498
+ 900
4499
+ ]
4500
+ },
4501
+ isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
4502
+ generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
4503
+ if (buttonConfig.background.type !== "solid") return "";
4504
+ const amount = (options.amount || 100) * config.shadeDirection;
4505
+ const baseToken = buttonConfig.background.colorToken ?? "primary-500";
4506
+ return `
4507
+ :where([data-theme-scope="${themeId}"]) .${variantId}:hover {
4508
+ background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
4509
+ }
4510
+ `;
4511
+ }
4512
+ };
4513
+ }
4514
+ var init_background$2 = __esmMin((() => {
4515
+ init_cssUtils();
4516
+ shadeBackgroundEffect({
4517
+ id: "darken-background",
4518
+ name: "Darken on Hover",
4519
+ description: "Darkens the background color on hover",
4520
+ label: "Darken Amount (shade step)",
4521
+ shadeDirection: 1
4522
+ });
4523
+ shadeBackgroundEffect({
4524
+ id: "lighten-background",
4525
+ name: "Lighten on Hover",
4526
+ description: "Lightens the background color on hover",
4527
+ label: "Lighten Amount (shade step)",
4528
+ shadeDirection: -1
4529
+ });
4530
+ }));
4420
4531
  var init_shadow = __esmMin((() => {
4421
4532
  init_cssUtils();
4422
4533
  }));
@@ -6169,11 +6280,11 @@ var UnsafePathSegmentError = class extends Error {
6169
6280
  function assertSafePathSegments(segments) {
6170
6281
  for (const segment of segments) if (typeof segment === "string" && UNSAFE_PATH_SEGMENTS.has(segment)) throw new UnsafePathSegmentError(segment);
6171
6282
  }
6172
- function isRecord$24(value) {
6283
+ function isRecord$26(value) {
6173
6284
  return typeof value === "object" && value !== null && !Array.isArray(value);
6174
6285
  }
6175
6286
  function isPathContainer(value) {
6176
- return Array.isArray(value) || isRecord$24(value);
6287
+ return Array.isArray(value) || isRecord$26(value);
6177
6288
  }
6178
6289
  function getContainerValue(container, segment) {
6179
6290
  if (typeof segment === "number") return Array.isArray(container) ? container[segment] : void 0;
@@ -6479,7 +6590,7 @@ var init_event_pricing = __esmMin((() => {
6479
6590
  //#endregion
6480
6591
  //#region ../core/src/event-page-surface-subject.ts
6481
6592
  function parseEventPageSurfaceSubject(value) {
6482
- if (!isRecord$23(value)) return err$2({ kind: "notObject" });
6593
+ if (!isRecord$25(value)) return err$2({ kind: "notObject" });
6483
6594
  switch (value.kind) {
6484
6595
  case "eventSeries": {
6485
6596
  const eventSeriesId = parseEventSeriesId(value.eventSeriesId);
@@ -6522,7 +6633,7 @@ function parseEventPageSurfaceSubject(value) {
6522
6633
  });
6523
6634
  }
6524
6635
  }
6525
- function isRecord$23(value) {
6636
+ function isRecord$25(value) {
6526
6637
  return typeof value === "object" && value !== null && !Array.isArray(value);
6527
6638
  }
6528
6639
  var init_event_page_surface_subject = __esmMin((() => {
@@ -6939,7 +7050,7 @@ var init_public_profile = __esmMin((() => {
6939
7050
  }));
6940
7051
  //#endregion
6941
7052
  //#region ../core/src/rich-text.ts
6942
- function isRecord$21(value) {
7053
+ function isRecord$23(value) {
6943
7054
  return typeof value === "object" && value !== null && !Array.isArray(value);
6944
7055
  }
6945
7056
  function hasOnlyKeys(value, allowed) {
@@ -6950,10 +7061,10 @@ function isDenseArrayOf(value, predicate) {
6950
7061
  return true;
6951
7062
  }
6952
7063
  function isTipTapMark(value) {
6953
- return isRecord$21(value) && hasOnlyKeys(value, markKeys) && typeof value.type === "string" && value.type.length > 0 && (value.attrs === void 0 || isRecord$21(value.attrs));
7064
+ return isRecord$23(value) && hasOnlyKeys(value, markKeys) && typeof value.type === "string" && value.type.length > 0 && (value.attrs === void 0 || isRecord$23(value.attrs));
6954
7065
  }
6955
7066
  function isTipTapNode(value) {
6956
- if (!isRecord$21(value) || !hasOnlyKeys(value, nodeKeys) || typeof value.type !== "string" || value.type.length === 0 || value.type === "doc" || value.attrs !== void 0 && !isRecord$21(value.attrs) || value.marks !== void 0 && (!Array.isArray(value.marks) || !isDenseArrayOf(value.marks, isTipTapMark)) || value.content !== void 0 && (!Array.isArray(value.content) || !isDenseArrayOf(value.content, isTipTapNode))) return false;
7067
+ if (!isRecord$23(value) || !hasOnlyKeys(value, nodeKeys) || typeof value.type !== "string" || value.type.length === 0 || value.type === "doc" || value.attrs !== void 0 && !isRecord$23(value.attrs) || value.marks !== void 0 && (!Array.isArray(value.marks) || !isDenseArrayOf(value.marks, isTipTapMark)) || value.content !== void 0 && (!Array.isArray(value.content) || !isDenseArrayOf(value.content, isTipTapNode))) return false;
6957
7068
  if (value.type === "text") return typeof value.text === "string" && value.text.length > 0 && value.content === void 0;
6958
7069
  return value.text === void 0;
6959
7070
  }
@@ -6968,10 +7079,18 @@ var init_rich_text = __esmMin((() => {
6968
7079
  ]);
6969
7080
  markKeys = /* @__PURE__ */ new Set(["type", "attrs"]);
6970
7081
  }));
6971
- var sectionKinds;
6972
- var init_footer_composition = __esmMin((() => {
6973
- init_rich_text();
7082
+ function parseNewsletterSignupDestinationProvider(value) {
7083
+ return value === "riverbank" || value === "mailchimp" ? value : null;
7084
+ }
7085
+ var init_newsletter_signup_destination$1 = __esmMin((() => {
6974
7086
  init_result();
7087
+ }));
7088
+ var init_footer_engagement = __esmMin((() => {
7089
+ init_branded();
7090
+ init_newsletter_signup_destination$1();
7091
+ init_result();
7092
+ })), sectionKinds;
7093
+ var init_footer_arrangement = __esmMin((() => {
6975
7094
  sectionKinds = [
6976
7095
  "brand",
6977
7096
  "supporting-text",
@@ -6980,11 +7099,21 @@ var init_footer_composition = __esmMin((() => {
6980
7099
  "business-address",
6981
7100
  "contact",
6982
7101
  "opening-hours",
7102
+ "engagement",
6983
7103
  "legal-navigation",
6984
7104
  "legal"
6985
7105
  ];
6986
7106
  new Map(sectionKinds.map((kind, index) => [kind, index]));
6987
7107
  }));
7108
+ var init_footer_composition = __esmMin((() => {
7109
+ init_footer_engagement();
7110
+ init_rich_text();
7111
+ init_result();
7112
+ init_footer_arrangement();
7113
+ }));
7114
+ //#endregion
7115
+ //#region ../core/src/footer-composition-types.ts
7116
+ var init_footer_composition_types = __esmMin((() => {}));
6988
7117
  var init_number_input = __esmMin((() => {}));
6989
7118
  var init_field_errors = __esmMin((() => {})), init_form_submission_preview = __esmMin((() => {
6990
7119
  init_string();
@@ -7085,6 +7214,10 @@ var init_src$3 = __esmMin((() => {
7085
7214
  init_public_profile();
7086
7215
  init_rich_text();
7087
7216
  init_footer_composition();
7217
+ init_footer_arrangement();
7218
+ init_footer_composition_types();
7219
+ init_footer_engagement();
7220
+ init_newsletter_signup_destination$1();
7088
7221
  init_number_input();
7089
7222
  init_field_errors();
7090
7223
  init_form_submission_preview();
@@ -7107,7 +7240,7 @@ var init_types$8 = __esmMin((() => {}));
7107
7240
  //#endregion
7108
7241
  //#region ../media-core/src/fileSafety.ts
7109
7242
  function containsUnsafePathSegmentCharacter(value) {
7110
- return value.includes("/") || value.includes("\\") || CONTROL_CHARACTER_PATTERN$1.test(value);
7243
+ return value.includes("/") || value.includes("\\") || CONTROL_CHARACTER_PATTERN.test(value);
7111
7244
  }
7112
7245
  function isReservedPathSegment(value) {
7113
7246
  return value === "." || value === "..";
@@ -7115,8 +7248,8 @@ function isReservedPathSegment(value) {
7115
7248
  function isUnsafePathSegment(segment) {
7116
7249
  return segment.trim().length === 0 || segment !== segment.trim() || isReservedPathSegment(segment) || containsUnsafePathSegmentCharacter(segment);
7117
7250
  }
7118
- var CONTROL_CHARACTER_PATTERN$1, init_fileSafety = __esmMin((() => {
7119
- CONTROL_CHARACTER_PATTERN$1 = /[\u0000-\u001f\u007f]/u;
7251
+ var CONTROL_CHARACTER_PATTERN, init_fileSafety = __esmMin((() => {
7252
+ CONTROL_CHARACTER_PATTERN = /[\u0000-\u001f\u007f]/u;
7120
7253
  })), AMBIENT_BACKGROUND_ROLES;
7121
7254
  var init_fileDomain = __esmMin((() => {
7122
7255
  init_src$3();
@@ -10333,40 +10466,6 @@ function resolveButtonAffordance(input) {
10333
10466
  if (nodeIcon) return { iconId: nodeIcon };
10334
10467
  return null;
10335
10468
  }
10336
- //#endregion
10337
- //#region ../blocks/src/system/constants/buttonRoles.ts
10338
- /**
10339
- * Temporary rollout boundary for persisted content written before issue #1220.
10340
- * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
10341
- * only until the post-deploy role rewrite has been audited in production.
10342
- */
10343
- function canonicalizePersistedBlockButtonRole(value) {
10344
- return value === "link" || value === "tertiary" ? "ghost" : value;
10345
- }
10346
- function isBlockButtonRole(value) {
10347
- return blockButtonRoleSchema.safeParse(value).success;
10348
- }
10349
- var BLOCK_BUTTON_ROLES, blockButtonRoleSchema, persistedBlockButtonRoleSchema, BLOCK_BUTTON_ROLE_LABELS, BLOCK_BUTTON_ROLE_OPTIONS;
10350
- var init_buttonRoles = __esmMin((() => {
10351
- init_buttons();
10352
- BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
10353
- blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
10354
- persistedBlockButtonRoleSchema = z$1.preprocess((value) => typeof value === "string" ? canonicalizePersistedBlockButtonRole(value) : value, blockButtonRoleSchema);
10355
- BLOCK_BUTTON_ROLE_LABELS = {
10356
- primary: "Primary",
10357
- secondary: "Secondary",
10358
- outline: "Outline",
10359
- ghost: "Ghost",
10360
- accent: "Accent"
10361
- };
10362
- BLOCK_BUTTON_ROLE_OPTIONS = BLOCK_BUTTON_ROLES.map((value) => ({
10363
- value,
10364
- label: BLOCK_BUTTON_ROLE_LABELS[value]
10365
- }));
10366
- }));
10367
- //#endregion
10368
- //#region ../blocks/src/system/inlineText.ts
10369
- init_buttonRoles();
10370
10469
  const inlineTextMarkSchema = z$1.discriminatedUnion("kind", [
10371
10470
  z$1.object({ kind: z$1.literal("strong") }),
10372
10471
  z$1.object({ kind: z$1.literal("emphasis") }),
@@ -10653,6 +10752,9 @@ function renderTrailingAffordanceIcon(affordance) {
10653
10752
  className: "rb-ml-2 rb-h-4 rb-w-4 rb-inline-block"
10654
10753
  });
10655
10754
  }
10755
+ function isMissingRequiredLink(linkRequired, resolvedHref) {
10756
+ return linkRequired && resolvedHref.length === 0;
10757
+ }
10656
10758
  const ButtonNode = ({ value, children, href, variantId = "primary", size = "md", disabled, type = "button", target, rel, linkRequired = false, trailingIcon, blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, className, ...rest }) => {
10657
10759
  const content = value ?? children;
10658
10760
  if (!content) {
@@ -10661,12 +10763,16 @@ const ButtonNode = ({ value, children, href, variantId = "primary", size = "md",
10661
10763
  }
10662
10764
  const affordanceIcon = renderTrailingAffordanceIcon(resolveButtonAffordance({ trailingIcon }));
10663
10765
  const resolvedHref = typeof href === "string" ? href.trim() : "";
10664
- if (linkRequired && resolvedHref.length === 0) {
10766
+ if (isMissingRequiredLink(linkRequired, resolvedHref)) {
10665
10767
  console.warn("[ButtonNode] Missing href for link-required button");
10666
10768
  return null;
10667
10769
  }
10668
10770
  const extraClassName = affordanceIcon ? [className, AFFORDANCE_SUPPRESS_CLASS].filter(Boolean).join(" ") : className;
10669
- const resolvedVariantId = parseThemeButtonVariantId(canonicalizePersistedBlockButtonRole(variantId));
10771
+ const resolvedVariantId = parseThemeButtonVariantId(variantId);
10772
+ if (variantId && !resolvedVariantId) {
10773
+ console.error("[ButtonNode] Invalid button variant", { variantId });
10774
+ return null;
10775
+ }
10670
10776
  const combinedClassName = resolvedVariantId ? themeButtonClassName({
10671
10777
  variant: resolvedVariantId,
10672
10778
  size,
@@ -11016,8 +11122,7 @@ const FeatureCardIconNode = ({ value, treatment, generatedIconSizePx, className,
11016
11122
  * in Server Component context. For client-side error handling,
11017
11123
  * use MediaNode from media.client.tsx via the client registry.
11018
11124
  */
11019
- var MediaNodeServer;
11020
- var init_media_server = __esmMin((() => {
11125
+ var MediaNodeServer, init_media_server = __esmMin((() => {
11021
11126
  init_media$1();
11022
11127
  MediaNodeServer = ({ value, className, style, videoPlayback = "inline", loading = "lazy", fetchPriority, size = ImagePresets.full, fieldPath, blockKind, blockContent, imageResolveContext: explicitImageResolveContext }) => {
11023
11128
  const imageResolveContext = explicitImageResolveContext ?? getCurrentResolveImageUrlContext();
@@ -11049,7 +11154,7 @@ var init_media_server = __esmMin((() => {
11049
11154
  decoding: "async"
11050
11155
  });
11051
11156
  };
11052
- })), PUBLIC_DOWNLOAD_MEDIA_TYPES, hotspotSchema, rotationSchema, rectSchema, aspectCropSchema, transformSchema, mediaPosterSchema, mediaBaseSchema, imageMediaSchema, videoMediaSchema, audioMediaSchema, documentMediaSchema, spreadsheetMediaSchema, archiveMediaSchema, mediaSchema;
11157
+ })), PUBLIC_DOWNLOAD_MEDIA_TYPES, hotspotSchema, rotationSchema, rectSchema, aspectCropSchema, transformSchema, mediaPosterSchema, mediaBaseSchema, mediaIdentifierSchema, imageMediaSchema, videoMediaSchema, audioMediaSchema, documentMediaSchema, spreadsheetMediaSchema, archiveMediaSchema, mediaSchema, persistableMediaBaseSchema;
11053
11158
  var init_media = __esmMin((() => {
11054
11159
  init_src$2();
11055
11160
  PUBLIC_DOWNLOAD_MEDIA_TYPES = [
@@ -11116,6 +11221,7 @@ var init_media = __esmMin((() => {
11116
11221
  poster: mediaPosterSchema.optional(),
11117
11222
  transform: transformSchema.optional()
11118
11223
  });
11224
+ mediaIdentifierSchema = z.string().trim().min(1).brand();
11119
11225
  imageMediaSchema = mediaBaseSchema.extend({ type: z.literal("image") });
11120
11226
  videoMediaSchema = mediaBaseSchema.extend({ type: z.literal("video") });
11121
11227
  audioMediaSchema = mediaBaseSchema.extend({ type: z.literal("audio") });
@@ -11130,6 +11236,37 @@ var init_media = __esmMin((() => {
11130
11236
  spreadsheetMediaSchema,
11131
11237
  archiveMediaSchema
11132
11238
  ]);
11239
+ persistableMediaBaseSchema = mediaBaseSchema.extend({ identifier: mediaIdentifierSchema });
11240
+ z.discriminatedUnion("type", [
11241
+ persistableMediaBaseSchema.extend({ type: z.literal("image") }),
11242
+ persistableMediaBaseSchema.extend({ type: z.literal("video") }),
11243
+ persistableMediaBaseSchema.extend({ type: z.literal("audio") }),
11244
+ persistableMediaBaseSchema.extend({ type: z.literal("document") }),
11245
+ persistableMediaBaseSchema.extend({ type: z.literal("spreadsheet") }),
11246
+ persistableMediaBaseSchema.extend({ type: z.literal("archive") })
11247
+ ]);
11248
+ }));
11249
+ //#endregion
11250
+ //#region ../blocks/src/system/constants/buttonRoles.ts
11251
+ function isBlockButtonRole(value) {
11252
+ return blockButtonRoleSchema.safeParse(value).success;
11253
+ }
11254
+ var BLOCK_BUTTON_ROLES, blockButtonRoleSchema, BLOCK_BUTTON_ROLE_LABELS, BLOCK_BUTTON_ROLE_OPTIONS;
11255
+ var init_buttonRoles = __esmMin((() => {
11256
+ init_buttons();
11257
+ BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
11258
+ blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
11259
+ BLOCK_BUTTON_ROLE_LABELS = {
11260
+ primary: "Primary",
11261
+ secondary: "Secondary",
11262
+ outline: "Outline",
11263
+ ghost: "Ghost",
11264
+ accent: "Accent"
11265
+ };
11266
+ BLOCK_BUTTON_ROLE_OPTIONS = BLOCK_BUTTON_ROLES.map((value) => ({
11267
+ value,
11268
+ label: BLOCK_BUTTON_ROLE_LABELS[value]
11269
+ }));
11133
11270
  }));
11134
11271
  //#endregion
11135
11272
  //#region ../blocks/src/system/runtime/nodes/file-download.tsx
@@ -11170,8 +11307,9 @@ function iconForMediaType(type) {
11170
11307
  });
11171
11308
  }
11172
11309
  }
11173
- function normalizeButtonVariant(value) {
11174
- return isBlockButtonRole(value) ? value : "primary";
11310
+ function parseButtonVariant(value) {
11311
+ if (value === null || value === void 0) return "primary";
11312
+ return isBlockButtonRole(value) ? value : null;
11175
11313
  }
11176
11314
  function FileDownloadNode({ value, title, description, buttonLabel, buttonVariant, className }) {
11177
11315
  if (!value || !isDownloadableMediaType(value.type)) return null;
@@ -11181,7 +11319,11 @@ function FileDownloadNode({ value, title, description, buttonLabel, buttonVarian
11181
11319
  const heading = title?.trim() || filename;
11182
11320
  const body = description?.trim();
11183
11321
  const label = buttonLabel?.trim() || "Download";
11184
- const variant = normalizeButtonVariant(buttonVariant);
11322
+ const variant = parseButtonVariant(buttonVariant);
11323
+ if (!variant) {
11324
+ console.error("[FileDownloadNode] Invalid button variant", { buttonVariant });
11325
+ return null;
11326
+ }
11185
11327
  return /* @__PURE__ */ jsx("div", {
11186
11328
  className,
11187
11329
  children: /* @__PURE__ */ jsxs("div", {
@@ -13137,6 +13279,33 @@ function uniqByOccurrenceId(events) {
13137
13279
  }
13138
13280
  return out;
13139
13281
  }
13282
+ function selectFromOccurrenceContext(events, occurrenceContext) {
13283
+ if (!occurrenceContext) return null;
13284
+ const byId = events.find((event) => event.occurrenceId === occurrenceContext.id || event.id === occurrenceContext.id);
13285
+ if (byId) return byId;
13286
+ const contextDate = getBookingLocalDateKey(toScheduledBookingDateTime({
13287
+ startsAt: occurrenceContext.startsAt,
13288
+ timeZone: occurrenceContext.timeZone
13289
+ }));
13290
+ return events.find((event) => getBookingLocalDateKey(toScheduledBookingDateTime({
13291
+ startsAt: event.startsAt,
13292
+ timeZone: event.timeZone
13293
+ })) === contextDate) ?? null;
13294
+ }
13295
+ function selectNextUpcoming(events, nowIso) {
13296
+ return [...events].filter((event) => isFutureOrNow(event.startsAt, nowIso)).sort((left, right) => Date.parse(left.startsAt) - Date.parse(right.startsAt))[0] ?? null;
13297
+ }
13298
+ function selectCompletedWholeSeries(events) {
13299
+ if (events.length === 0 || !events.every((event) => event.bookingScope === "whole_series")) return null;
13300
+ return [...events].sort((left, right) => Date.parse(right.startsAt) - Date.parse(left.startsAt))[0] ?? null;
13301
+ }
13302
+ function selectRelatedDates(input) {
13303
+ if (!input.seriesId) return [];
13304
+ const isWholeSeries = input.selected?.bookingScope === "whole_series";
13305
+ const selectedOccurrenceId = input.selected ? input.selected.occurrenceId || input.selected.id : null;
13306
+ const dates = input.events.filter((event) => event.seriesId === input.seriesId).filter((event) => isWholeSeries || isFutureOrNow(event.startsAt, input.nowIso)).filter((event) => !selectedOccurrenceId || (event.occurrenceId || event.id) !== selectedOccurrenceId).sort((left, right) => Date.parse(left.startsAt) - Date.parse(right.startsAt));
13307
+ return isWholeSeries ? dates : dates.slice(0, input.limit);
13308
+ }
13140
13309
  function selectEventDetails(args) {
13141
13310
  const all = uniqByOccurrenceId(resolveEventRegistrationScopedEvents((args.events ?? []).filter(Boolean), {
13142
13311
  occurrenceContext: args.occurrenceContext,
@@ -13144,37 +13313,22 @@ function selectEventDetails(args) {
13144
13313
  }));
13145
13314
  const occurrenceContext = args.occurrenceContext ?? null;
13146
13315
  const otherLimit = parseLimit$1(args.otherDatesLimit, 5);
13147
- const selectedFromContext = (() => {
13148
- if (!occurrenceContext) return null;
13149
- const byId = all.find((e) => e.occurrenceId === occurrenceContext.id || e.id === occurrenceContext.id) ?? null;
13150
- if (byId) return byId;
13151
- const ctxDate = getBookingLocalDateKey(toScheduledBookingDateTime({
13152
- startsAt: occurrenceContext.startsAt,
13153
- timeZone: occurrenceContext.timeZone
13154
- }));
13155
- return all.find((e) => getBookingLocalDateKey(toScheduledBookingDateTime({
13156
- startsAt: e.startsAt,
13157
- timeZone: e.timeZone
13158
- })) === ctxDate) ?? null;
13159
- })();
13160
- const nextUpcoming = (() => {
13161
- const upcoming = all.filter((e) => isFutureOrNow(e.startsAt, args.nowIso));
13162
- upcoming.sort((a, b) => Date.parse(a.startsAt) - Date.parse(b.startsAt));
13163
- return upcoming[0] ?? null;
13164
- })();
13165
- const mode = selectedFromContext ? "selected" : "next";
13166
- const selected = selectedFromContext ?? nextUpcoming;
13316
+ const selectedFromContext = selectFromOccurrenceContext(all, occurrenceContext);
13317
+ const nextUpcoming = selectNextUpcoming(all, args.nowIso);
13318
+ const completedWholeSeries = selectCompletedWholeSeries(all);
13319
+ const selected = selectedFromContext ?? nextUpcoming ?? completedWholeSeries;
13320
+ const mode = selectedFromContext ? "selected" : nextUpcoming ? "next" : completedWholeSeries ? "completed" : "next";
13167
13321
  const timeZone = toBookingTimeZone(selected?.timeZone ?? all[0]?.timeZone ?? null);
13168
- const seriesId = occurrenceContext?.seriesId ?? selected?.seriesId ?? all[0]?.seriesId ?? null;
13169
- const selectedOccurrenceId = selected?.occurrenceId ?? null;
13170
13322
  return {
13171
13323
  mode,
13172
13324
  selected,
13173
- otherDates: seriesId ? all.filter((e) => e.seriesId === seriesId).filter((e) => isFutureOrNow(e.startsAt, args.nowIso)).filter((e) => {
13174
- const occId = e.occurrenceId || e.id;
13175
- if (selectedOccurrenceId && occId === selectedOccurrenceId) return false;
13176
- return true;
13177
- }).slice(0, otherLimit) : [],
13325
+ otherDates: selectRelatedDates({
13326
+ events: all,
13327
+ seriesId: occurrenceContext?.seriesId ?? selected?.seriesId ?? all[0]?.seriesId ?? null,
13328
+ selected,
13329
+ nowIso: args.nowIso,
13330
+ limit: otherLimit
13331
+ }),
13178
13332
  timeZone
13179
13333
  };
13180
13334
  }
@@ -14597,7 +14751,7 @@ function EventFacts({ selection, selected, venue, teamMembers, pricing }) {
14597
14751
  /* @__PURE__ */ jsxs("div", { children: [
14598
14752
  /* @__PURE__ */ jsx("div", {
14599
14753
  className: "rb-label rb-mb-2",
14600
- children: selection.mode === "next" ? "Next date" : "Date"
14754
+ children: selected.bookingScope === "whole_series" ? selection.mode === "next" ? "Next session" : "Selected session" : selection.mode === "next" ? "Next date" : "Date"
14601
14755
  }),
14602
14756
  /* @__PURE__ */ jsx("p", { children: /* @__PURE__ */ jsx("strong", { children: date }) }),
14603
14757
  /* @__PURE__ */ jsx("p", {
@@ -14635,18 +14789,27 @@ function EventFacts({ selection, selected, venue, teamMembers, pricing }) {
14635
14789
  }) : null] }, member.id))
14636
14790
  })]
14637
14791
  }) : null,
14638
- pricing
14792
+ pricing,
14793
+ selected.bookingScope === "whole_series" ? /* @__PURE__ */ jsxs("div", {
14794
+ className: "rb-mt-6",
14795
+ children: [/* @__PURE__ */ jsx("div", {
14796
+ className: "rb-label rb-mb-2",
14797
+ children: "Registration"
14798
+ }), /* @__PURE__ */ jsx("p", { children: /* @__PURE__ */ jsx("strong", { children: selected.wholeSeries?.enrollmentOpen ? "Open" : "Closed" }) })]
14799
+ }) : null
14639
14800
  ]
14640
14801
  });
14641
14802
  }
14642
14803
  function OtherEventDates({ selection }) {
14643
- if (selection.otherDates.length === 0) return null;
14804
+ const isWholeSeries = selection.selected?.bookingScope === "whole_series";
14805
+ const dates = isWholeSeries && selection.selected ? [selection.selected, ...selection.otherDates].sort((left, right) => Date.parse(left.startsAt) - Date.parse(right.startsAt)) : selection.otherDates;
14806
+ if (dates.length === 0) return null;
14644
14807
  return /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
14645
14808
  className: "rb-label",
14646
- children: "Other dates"
14809
+ children: isWholeSeries ? "Session schedule" : "Other dates"
14647
14810
  }), /* @__PURE__ */ jsx("div", {
14648
14811
  className: "rb-mt-2 rb-tiles-grid",
14649
- children: selection.otherDates.map((event) => /* @__PURE__ */ jsx("a", {
14812
+ children: dates.map((event) => /* @__PURE__ */ jsx("a", {
14650
14813
  className: "rb-tile rb-tile--interactive",
14651
14814
  ...resolveEventLinkProps(event),
14652
14815
  children: /* @__PURE__ */ jsx(DateTimeTile, {
@@ -15786,7 +15949,7 @@ var init_contract_schemas = __esmMin((() => {
15786
15949
  init_buttonRoles();
15787
15950
  previewStageSchema = z$1.enum(["preview", "published"]);
15788
15951
  registrationButtonVariantSchema = blockButtonRoleSchema;
15789
- eventButtonVariantSchema = persistedBlockButtonRoleSchema;
15952
+ eventButtonVariantSchema = blockButtonRoleSchema;
15790
15953
  eventLayoutSchema = z$1.enum(eventCalendarListLayoutValues);
15791
15954
  eventCalendarDisplayModeSchema = z$1.enum(eventCalendarDisplayModeValues);
15792
15955
  eventCalendarDefaultViewSchema = z$1.enum(eventCalendarDefaultViewValues);
@@ -18724,10 +18887,22 @@ var init_accessibleSurfaces = __esmMin((() => {
18724
18887
  init_onColor();
18725
18888
  }));
18726
18889
  //#endregion
18890
+ //#region ../theme-core/src/site-styles/lookOptionGroups.ts
18891
+ function defineLookOptionGroup(group) {
18892
+ defaultOption(group);
18893
+ return group;
18894
+ }
18895
+ function defaultOption(group) {
18896
+ const option = group.options.find((candidate) => candidate.id === group.defaultOptionId);
18897
+ if (option) return option;
18898
+ throw new Error(`Look option group "${group.id}" defaults to missing option "${group.defaultOptionId}".`);
18899
+ }
18900
+ var init_lookOptionGroups = __esmMin((() => {}));
18901
+ //#endregion
18727
18902
  //#region ../theme-core/src/site-styles/appearancePresetResolution.ts
18728
18903
  function assertValidOptionGroups(preset) {
18729
18904
  preset.optionGroups?.forEach((group) => {
18730
- if (!group.options.find((option) => option.id === group.selectedOptionId)) throw new Error(`Appearance preset "${preset.id}" option group "${group.id}" selects missing option "${group.selectedOptionId}".`);
18905
+ defineLookOptionGroup(group);
18731
18906
  });
18732
18907
  }
18733
18908
  function defineBlockAppearancePreset(preset) {
@@ -18735,772 +18910,655 @@ function defineBlockAppearancePreset(preset) {
18735
18910
  return preset;
18736
18911
  }
18737
18912
  var init_appearancePresetResolution = __esmMin((() => {
18913
+ init_lookOptionGroups();
18738
18914
  init_types$9();
18739
- }));
18740
- //#endregion
18741
- //#region ../theme-core/src/site-styles/blockAppearancePresets.ts
18742
- var blockAppearancePresets;
18915
+ })), brandScrimOptionGroups, microBannerLayoutPatches;
18743
18916
  var init_blockAppearancePresets = __esmMin((() => {
18744
18917
  init_appearancePresetResolution();
18745
18918
  init_types$9();
18746
- blockAppearancePresets = [
18747
- defineBlockAppearancePreset({
18748
- kind: "block-design",
18749
- id: "hero-immersive-image",
18750
- target: "hero",
18751
- label: "Immersive image hero",
18752
- blockKinds: ["block.hero"],
18753
- constraints: { layoutFamilies: ["centered", "compact"] },
18754
- layoutPatches: [{
18755
- constraints: { layoutVariantKeys: ["micro"] },
18756
- designPatch: {
18757
- sectionHeight: "banner",
18758
- heroTypographyScale: "display"
18759
- }
18760
- }],
18761
- design: {
18762
- sectionSurface: "hero-image",
18763
- contentFrame: plainFrame,
18764
- itemSurface: "none",
18765
- sectionHeight: "hero",
18766
- heroComposition: "center",
18767
- heroTypographyScale: "display",
18768
- imageSurfaceTreatment: { kind: "neutral-wash" }
18919
+ brandScrimOptionGroups = [{
18920
+ id: "image-surface-treatment",
18921
+ label: "Treatment",
18922
+ defaultOptionId: "brand-scrim-primary",
18923
+ options: [{
18924
+ id: "brand-scrim-primary",
18925
+ label: "Brand scrim",
18926
+ designPatch: { imageSurfaceTreatment: {
18927
+ kind: "brand-scrim",
18928
+ token: "primary"
18929
+ } }
18930
+ }, {
18931
+ id: "neutral-scrim",
18932
+ label: "Neutral scrim",
18933
+ designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
18934
+ }]
18935
+ }];
18936
+ microBannerLayoutPatches = [{
18937
+ constraints: { layoutVariantKeys: ["micro"] },
18938
+ designPatch: { sectionHeight: "banner" }
18939
+ }];
18940
+ defineBlockAppearancePreset({
18941
+ id: "hero-immersive-image",
18942
+ target: "hero",
18943
+ label: "Immersive image hero",
18944
+ blockKinds: ["block.hero"],
18945
+ constraints: { layoutFamilies: ["centered", "compact"] },
18946
+ layoutPatches: [{
18947
+ constraints: { layoutVariantKeys: ["micro"] },
18948
+ designPatch: {
18949
+ sectionHeight: "banner",
18950
+ heroTypographyScale: "display"
18769
18951
  }
18770
- }),
18771
- defineBlockAppearancePreset({
18772
- kind: "block-design",
18773
- id: "hero-bottom-left-panel",
18774
- target: "hero",
18775
- label: "Bottom-left panel hero",
18776
- blockKinds: ["block.hero"],
18777
- constraints: { layoutFamilies: ["centered", "compact"] },
18778
- optionGroups: [{
18779
- id: "image-surface-treatment",
18780
- label: "Treatment",
18781
- selectedOptionId: "neutral-scrim",
18782
- options: [{
18783
- id: "neutral-scrim",
18784
- label: "Neutral scrim",
18785
- designPatch: { imageSurfaceTreatment: {
18786
- kind: "neutral-scrim",
18787
- intensity: "balanced"
18788
- } }
18789
- }, {
18790
- id: "brand-scrim-primary",
18791
- label: "Brand scrim",
18792
- designPatch: { imageSurfaceTreatment: {
18793
- kind: "brand-scrim",
18794
- token: "primary",
18795
- intensity: "balanced"
18796
- } }
18797
- }]
18798
- }],
18799
- layoutPatches: [{
18800
- constraints: { layoutVariantKeys: ["micro"] },
18801
- designPatch: {
18802
- sectionHeight: "banner",
18803
- heroTypographyScale: "editorial"
18804
- }
18805
- }],
18806
- design: {
18807
- sectionSurface: "hero-image",
18808
- contentFrame: panelFrame("raised"),
18809
- itemSurface: "none",
18810
- sectionHeight: "immersive",
18811
- heroComposition: "bottom-left",
18812
- heroTypographyScale: "display",
18813
- imageSurfaceTreatment: {
18952
+ }],
18953
+ design: {
18954
+ sectionSurface: "hero-image",
18955
+ contentFrame: plainFrame,
18956
+ itemSurface: "none",
18957
+ sectionHeight: "hero",
18958
+ heroComposition: "center",
18959
+ heroTypographyScale: "display",
18960
+ imageSurfaceTreatment: { kind: "neutral-wash" }
18961
+ }
18962
+ }), defineBlockAppearancePreset({
18963
+ id: "hero-bottom-left-panel",
18964
+ target: "hero",
18965
+ label: "Bottom-left panel hero",
18966
+ blockKinds: ["block.hero"],
18967
+ constraints: { layoutFamilies: ["centered", "compact"] },
18968
+ optionGroups: [{
18969
+ id: "image-surface-treatment",
18970
+ label: "Treatment",
18971
+ defaultOptionId: "neutral-scrim",
18972
+ options: [{
18973
+ id: "neutral-scrim",
18974
+ label: "Neutral scrim",
18975
+ designPatch: { imageSurfaceTreatment: {
18814
18976
  kind: "neutral-scrim",
18815
18977
  intensity: "balanced"
18816
- }
18817
- }
18818
- }),
18819
- defineBlockAppearancePreset({
18820
- kind: "block-design",
18821
- id: "hero-poster-image",
18822
- target: "hero",
18823
- label: "Poster image hero",
18824
- blockKinds: ["block.hero"],
18825
- constraints: { layoutFamilies: ["centered", "compact"] },
18826
- layoutPatches: [{
18827
- constraints: { layoutVariantKeys: ["micro"] },
18828
- designPatch: {
18829
- sectionHeight: "banner",
18830
- heroTypographyScale: "display"
18831
- }
18832
- }],
18833
- design: {
18834
- sectionSurface: "hero-image",
18835
- contentFrame: plainFrame,
18836
- itemSurface: "none",
18837
- sectionHeight: "immersive",
18838
- heroComposition: "center",
18839
- heroTypographyScale: "poster",
18840
- imageSurfaceTreatment: {
18978
+ } }
18979
+ }, {
18980
+ id: "brand-scrim-primary",
18981
+ label: "Brand scrim",
18982
+ designPatch: { imageSurfaceTreatment: {
18841
18983
  kind: "brand-scrim",
18842
18984
  token: "primary",
18843
- intensity: "strong"
18844
- }
18845
- }
18846
- }),
18847
- defineBlockAppearancePreset({
18848
- kind: "block-design",
18849
- id: "hero-brand-scrim",
18850
- target: "hero",
18851
- label: "Brand scrim image hero",
18852
- blockKinds: ["block.hero"],
18853
- constraints: { layoutFamilies: ["centered", "compact"] },
18854
- optionGroups: [{
18855
- id: "image-surface-treatment",
18856
- label: "Treatment",
18857
- selectedOptionId: "brand-scrim-primary",
18858
- options: [{
18859
- id: "brand-scrim-primary",
18860
- label: "Brand scrim",
18861
- designPatch: { imageSurfaceTreatment: {
18862
- kind: "brand-scrim",
18863
- token: "primary"
18864
- } }
18865
- }, {
18866
- id: "neutral-scrim",
18867
- label: "Neutral scrim",
18868
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
18869
- }]
18870
- }],
18871
- layoutPatches: [{
18872
- constraints: { layoutVariantKeys: ["micro"] },
18873
- designPatch: { sectionHeight: "banner" }
18874
- }],
18875
- design: {
18876
- sectionSurface: "hero-image",
18877
- contentFrame: plainFrame,
18878
- itemSurface: "none",
18879
- sectionHeight: "immersive",
18880
- heroComposition: "center",
18881
- heroTypographyScale: "display",
18882
- imageSurfaceTreatment: {
18883
- kind: "brand-scrim",
18884
- token: "primary"
18885
- }
18886
- }
18887
- }),
18888
- defineBlockAppearancePreset({
18889
- kind: "block-design",
18890
- id: "hero-brand-scrim-fixed-frame",
18891
- target: "hero",
18892
- label: "Fixed-frame brand scrim hero",
18893
- blockKinds: ["block.hero"],
18894
- constraints: { layoutFamilies: ["centered", "compact"] },
18895
- optionGroups: [{
18896
- id: "image-surface-treatment",
18897
- label: "Treatment",
18898
- selectedOptionId: "brand-scrim-primary",
18899
- options: [{
18900
- id: "brand-scrim-primary",
18901
- label: "Brand scrim",
18902
- designPatch: { imageSurfaceTreatment: {
18903
- kind: "brand-scrim",
18904
- token: "primary"
18905
- } }
18906
- }, {
18907
- id: "neutral-scrim",
18908
- label: "Neutral scrim",
18909
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
18910
- }]
18911
- }],
18912
- layoutPatches: [{
18913
- constraints: { layoutVariantKeys: ["micro"] },
18914
- designPatch: { sectionHeight: "banner" }
18915
- }],
18916
- design: {
18917
- sectionSurface: "hero-image",
18918
- contentFrame: plainFrame,
18919
- itemSurface: "none",
18920
- sectionHeight: "immersive",
18921
- heroComposition: "center",
18922
- heroTypographyScale: "display",
18923
- imageSurfaceTreatment: {
18924
- kind: "brand-scrim",
18925
- token: "primary"
18926
- },
18927
- imageSurfaceMotion: "fixed-frame",
18928
- eyebrowTreatment: "accent-pill-bounce"
18929
- }
18930
- }),
18931
- defineBlockAppearancePreset({
18932
- kind: "block-design",
18933
- id: "hero-brand-depth-expressive",
18934
- target: "hero",
18935
- label: "Expressive brand-depth hero",
18936
- blockKinds: ["block.hero"],
18937
- constraints: { layoutFamilies: ["centered", "compact"] },
18938
- design: {
18939
- sectionSurface: "brand-depth-band",
18940
- contentFrame: plainFrame,
18941
- itemSurface: "none",
18942
- heroComposition: "center",
18943
- heroTypographyScale: "editorial",
18944
- eyebrowTreatment: "accent-pill-bounce"
18945
- }
18946
- }),
18947
- defineBlockAppearancePreset({
18948
- kind: "block-design",
18949
- id: "hero-contained-intro",
18950
- target: "hero",
18951
- label: "Contained intro hero",
18952
- blockKinds: ["block.hero"],
18953
- design: {
18954
- sectionSurface: "muted-band",
18955
- contentFrame: panelFrame("inset"),
18956
- itemSurface: "none",
18957
- heroComposition: "center",
18958
- heroTypographyScale: "editorial"
18959
- }
18960
- }),
18961
- defineBlockAppearancePreset({
18962
- kind: "block-design",
18963
- id: "hero-split-editorial",
18964
- target: "hero",
18965
- label: "Editorial split hero",
18966
- blockKinds: ["block.hero"],
18967
- constraints: { layoutFamilies: ["split"] },
18968
- design: {
18969
- sectionSurface: "base",
18970
- contentFrame: plainFrame,
18971
- itemSurface: "none",
18985
+ intensity: "balanced"
18986
+ } }
18987
+ }]
18988
+ }],
18989
+ layoutPatches: [{
18990
+ constraints: { layoutVariantKeys: ["micro"] },
18991
+ designPatch: {
18992
+ sectionHeight: "banner",
18972
18993
  heroTypographyScale: "editorial"
18973
18994
  }
18974
- }),
18975
- defineBlockAppearancePreset({
18976
- kind: "block-design",
18977
- id: "hero-split-brand",
18978
- target: "hero",
18979
- label: "Brand split hero",
18980
- blockKinds: ["block.hero"],
18981
- constraints: { layoutFamilies: ["split"] },
18982
- design: {
18983
- sectionSurface: "brand-depth-band",
18984
- contentFrame: plainFrame,
18985
- itemSurface: "none",
18986
- heroTypographyScale: "display",
18987
- eyebrowTreatment: "accent-pill-bounce"
18988
- }
18989
- }),
18990
- defineBlockAppearancePreset({
18991
- kind: "block-design",
18992
- id: "hero-split-soft-panel",
18993
- target: "hero",
18994
- label: "Soft panel split hero",
18995
- blockKinds: ["block.hero"],
18996
- constraints: { layoutFamilies: ["split"] },
18997
- design: {
18998
- sectionSurface: "muted-band",
18999
- contentFrame: panelFrame("raised"),
19000
- itemSurface: "none",
19001
- heroTypographyScale: "editorial"
18995
+ }],
18996
+ design: {
18997
+ sectionSurface: "hero-image",
18998
+ contentFrame: panelFrame("raised"),
18999
+ itemSurface: "none",
19000
+ sectionHeight: "immersive",
19001
+ heroComposition: "bottom-left",
19002
+ heroTypographyScale: "display",
19003
+ imageSurfaceTreatment: {
19004
+ kind: "neutral-scrim",
19005
+ intensity: "balanced"
19002
19006
  }
19003
- }),
19004
- defineBlockAppearancePreset({
19005
- kind: "block-design",
19006
- id: "hero-split-accent",
19007
- target: "hero",
19008
- label: "Accent split hero",
19009
- blockKinds: ["block.hero"],
19010
- constraints: { layoutFamilies: ["split"] },
19011
- design: {
19012
- sectionSurface: "accent-band",
19013
- contentFrame: panelFrame("raised"),
19014
- itemSurface: "none",
19007
+ }
19008
+ }), defineBlockAppearancePreset({
19009
+ id: "hero-poster-image",
19010
+ target: "hero",
19011
+ label: "Poster image hero",
19012
+ blockKinds: ["block.hero"],
19013
+ constraints: { layoutFamilies: ["centered", "compact"] },
19014
+ layoutPatches: [{
19015
+ constraints: { layoutVariantKeys: ["micro"] },
19016
+ designPatch: {
19017
+ sectionHeight: "banner",
19015
19018
  heroTypographyScale: "display"
19016
19019
  }
19017
- }),
19018
- defineBlockAppearancePreset({
19019
- kind: "block-design",
19020
- id: "intro-editorial-statement",
19021
- target: "intro",
19022
- label: "Editorial intro statement",
19023
- blockKinds: ["block.intro"],
19024
- constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
19025
- design: {
19026
- sectionSurface: "base",
19027
- contentFrame: plainFrame,
19028
- itemSurface: "none",
19029
- composition: {
19030
- kind: "intro",
19031
- treatment: "editorial-statement"
19032
- }
19033
- }
19034
- }),
19035
- defineBlockAppearancePreset({
19036
- kind: "block-design",
19037
- id: "intro-portrait-bio",
19038
- target: "intro",
19039
- label: "Portrait and bio",
19040
- blockKinds: ["block.intro"],
19041
- constraints: { layoutVariantKeys: ["media-copy"] },
19042
- design: {
19043
- sectionSurface: "base",
19044
- contentFrame: plainFrame,
19045
- itemSurface: "none",
19046
- composition: {
19047
- kind: "intro",
19048
- treatment: "portrait-bio"
19049
- }
19050
- }
19051
- }),
19052
- defineBlockAppearancePreset({
19053
- kind: "block-design",
19054
- id: "offerings-preview-default-cards",
19055
- target: "offerings",
19056
- label: "Default offering cards",
19057
- blockKinds: ["block.offerings-preview"],
19058
- design: {
19059
- sectionSurface: "base",
19060
- contentFrame: plainFrame,
19061
- itemSurface: "default"
19062
- }
19063
- }),
19064
- defineBlockAppearancePreset({
19065
- kind: "block-design",
19066
- id: "offerings-preview-secondary-cards",
19067
- target: "offerings",
19068
- label: "Secondary offering cards",
19069
- blockKinds: ["block.offerings-preview"],
19070
- design: {
19071
- sectionSurface: "muted-band",
19072
- contentFrame: plainFrame,
19073
- itemSurface: "inset"
19074
- }
19075
- }),
19076
- defineBlockAppearancePreset({
19077
- kind: "block-design",
19078
- id: "offerings-preview-non-carded",
19079
- target: "offerings",
19080
- label: "Non-carded offerings",
19081
- blockKinds: ["block.offerings-preview"],
19082
- design: {
19083
- sectionSurface: "muted-band",
19084
- contentFrame: plainFrame,
19085
- itemSurface: "editorial"
19086
- }
19087
- }),
19088
- defineBlockAppearancePreset({
19089
- kind: "block-design",
19090
- id: "offerings-preview-paired-feature-cards",
19091
- target: "offerings",
19092
- label: "Paired feature cards",
19093
- blockKinds: ["block.offerings-preview"],
19094
- constraints: { layoutVariantKeys: ["cards"] },
19095
- design: {
19096
- sectionSurface: "base",
19097
- contentFrame: plainFrame,
19098
- itemSurface: "none"
19099
- }
19100
- }),
19101
- defineBlockAppearancePreset({
19102
- kind: "block-design",
19103
- id: "offerings-preview-open-editorial-columns",
19104
- target: "offerings",
19105
- label: "Open editorial columns",
19106
- blockKinds: ["block.offerings-preview"],
19107
- constraints: { layoutVariantKeys: ["cards"] },
19108
- design: {
19109
- sectionSurface: "base",
19110
- contentFrame: plainFrame,
19111
- itemSurface: "none"
19112
- }
19113
- }),
19114
- defineBlockAppearancePreset({
19115
- kind: "block-design",
19116
- id: "offerings-preview-joined-programme-panel",
19117
- target: "offerings",
19118
- label: "Joined programme panel",
19119
- blockKinds: ["block.offerings-preview"],
19120
- constraints: { layoutVariantKeys: ["cards"] },
19121
- design: {
19122
- sectionSurface: "base",
19123
- contentFrame: plainFrame,
19124
- itemSurface: "none"
19125
- }
19126
- }),
19127
- defineBlockAppearancePreset({
19128
- kind: "block-design",
19129
- id: "feature-cards-raised-rule",
19130
- target: "feature-cards",
19131
- label: "Raised cards with rule",
19132
- blockKinds: ["block.feature-cards"],
19133
- design: {
19134
- sectionSurface: "base",
19135
- contentFrame: plainFrame,
19136
- itemSurface: "raised"
19137
- }
19138
- }),
19139
- defineBlockAppearancePreset({
19140
- kind: "block-design",
19141
- id: "feature-cards-bold-colors",
19142
- target: "feature-cards",
19143
- label: "Bold colour-blocked cards",
19144
- blockKinds: ["block.feature-cards"],
19145
- design: {
19146
- sectionSurface: "base",
19147
- contentFrame: plainFrame,
19148
- itemSurface: "color-blocked"
19149
- }
19150
- }),
19151
- defineBlockAppearancePreset({
19152
- kind: "block-design",
19153
- id: "feature-cards-editorial-columns",
19154
- target: "feature-cards",
19155
- label: "Editorial open columns",
19156
- blockKinds: ["block.feature-cards"],
19157
- design: {
19158
- sectionSurface: "base",
19159
- contentFrame: plainFrame,
19160
- itemSurface: "editorial"
19161
- }
19162
- }),
19163
- defineBlockAppearancePreset({
19164
- kind: "block-design",
19165
- id: "feature-cards-asymmetric-emphasis",
19166
- target: "feature-cards",
19167
- label: "Asymmetric emphasis pair",
19168
- blockKinds: ["block.feature-cards"],
19169
- constraints: { layoutFamilies: ["grid"] },
19170
- design: {
19171
- sectionSurface: "base",
19172
- contentFrame: plainFrame,
19173
- itemSurface: "none",
19174
- composition: {
19175
- kind: "feature-cards",
19176
- treatment: "asymmetric-emphasis"
19177
- }
19178
- }
19179
- }),
19180
- defineBlockAppearancePreset({
19181
- kind: "block-design",
19182
- id: "feature-cards-framed-programme",
19183
- target: "feature-cards",
19184
- label: "Framed programme cards",
19185
- blockKinds: ["block.feature-cards"],
19186
- constraints: { layoutFamilies: ["grid"] },
19187
- design: {
19188
- sectionSurface: "brand-depth-band",
19189
- contentFrame: plainFrame,
19190
- itemSurface: "inset",
19191
- composition: {
19192
- kind: "feature-cards",
19193
- treatment: "framed-programme"
19194
- }
19195
- }
19196
- }),
19197
- defineBlockAppearancePreset({
19198
- kind: "block-design",
19199
- id: "feature-cards-soft-panels",
19200
- target: "feature-cards",
19201
- label: "Soft tinted panels",
19202
- blockKinds: ["block.feature-cards"],
19203
- design: {
19204
- sectionSurface: "base",
19205
- contentFrame: plainFrame,
19206
- itemSurface: "inset"
19207
- }
19208
- }),
19209
- defineBlockAppearancePreset({
19210
- kind: "block-design",
19211
- id: "feature-cards-editorial-diptych",
19212
- target: "feature-cards",
19213
- label: "Editorial diptych",
19214
- blockKinds: ["block.feature-cards"],
19215
- constraints: { layoutVariantKeys: ["editorial-diptych"] },
19216
- design: {
19217
- sectionSurface: "base",
19218
- contentFrame: plainFrame,
19219
- itemSurface: "flat"
19220
- }
19221
- }),
19222
- defineBlockAppearancePreset({
19223
- kind: "block-design",
19224
- id: "feature-cards-editorial-pathways",
19225
- target: "feature-cards",
19226
- label: "Editorial pathways",
19227
- blockKinds: ["block.feature-cards"],
19228
- constraints: { layoutVariantKeys: ["editorial-pathways"] },
19229
- design: {
19230
- sectionSurface: "base",
19231
- contentFrame: plainFrame,
19232
- itemSurface: "flat"
19233
- }
19234
- }),
19235
- defineBlockAppearancePreset({
19236
- kind: "block-design",
19237
- id: "feature-cards-photo-tiles",
19238
- target: "feature-cards",
19239
- label: "Photo tiles",
19240
- blockKinds: ["block.feature-cards"],
19241
- design: {
19242
- sectionSurface: "base",
19243
- contentFrame: plainFrame,
19244
- itemSurface: "raised"
19245
- }
19246
- }),
19247
- defineBlockAppearancePreset({
19248
- kind: "block-design",
19249
- id: "events-lined-panel",
19250
- target: "events",
19251
- label: "Raised event panel",
19252
- blockKinds: ["block.event-calendar", "block.event-listing"],
19253
- design: {
19254
- sectionSurface: "base",
19255
- contentFrame: panelFrame("raised"),
19256
- itemSurface: "none"
19257
- }
19258
- }),
19259
- defineBlockAppearancePreset({
19260
- kind: "block-design",
19261
- id: "events-ruled-register",
19262
- target: "events",
19263
- label: "Ruled event register",
19264
- blockKinds: ["block.event-calendar", "block.event-listing"],
19265
- design: {
19266
- sectionSurface: "brand-depth-band",
19267
- contentFrame: plainFrame,
19268
- itemSurface: "none",
19269
- eventListTreatment: "ruled-register"
19270
- }
19271
- }),
19272
- defineBlockAppearancePreset({
19273
- kind: "block-design",
19274
- id: "events-editorial-register",
19275
- target: "events",
19276
- label: "Editorial event register",
19277
- blockKinds: ["block.event-calendar", "block.event-listing"],
19278
- design: {
19279
- sectionSurface: "base",
19280
- contentFrame: plainFrame,
19281
- itemSurface: "none",
19282
- eventListTreatment: "editorial-register"
19283
- }
19284
- }),
19285
- defineBlockAppearancePreset({
19286
- kind: "block-design",
19287
- id: "events-dense-index",
19288
- target: "events",
19289
- label: "Dense event index",
19290
- blockKinds: ["block.event-calendar", "block.event-listing"],
19291
- design: {
19292
- sectionSurface: "accent-band",
19293
- contentFrame: plainFrame,
19294
- itemSurface: "none",
19295
- eventListTreatment: "dense-index"
19296
- }
19297
- }),
19298
- defineBlockAppearancePreset({
19299
- kind: "block-design",
19300
- id: "schedule-details-brand-depth",
19301
- target: "events",
19302
- label: "Brand-depth schedule details",
19303
- blockKinds: ["block.event-details", "block.course-details"],
19304
- design: {
19305
- sectionSurface: "brand-depth-band",
19306
- contentFrame: plainFrame,
19307
- itemSurface: "none",
19308
- tileTreatment: "brand-depth"
19309
- }
19310
- }),
19311
- defineBlockAppearancePreset({
19312
- kind: "block-design",
19313
- id: "media-text-flush-feature",
19314
- target: "media-text",
19315
- label: "Flush media feature",
19316
- blockKinds: ["block.media-text"],
19317
- design: {
19318
- sectionSurface: "muted-band",
19319
- contentFrame: flushPanelFrame({ bleed: "start" }),
19320
- itemSurface: "none"
19321
- }
19322
- }),
19323
- defineBlockAppearancePreset({
19324
- kind: "block-design",
19325
- id: "testimonials-simple-cards",
19326
- target: "testimonials",
19327
- label: "Simple testimonial cards",
19328
- blockKinds: ["block.testimonials"],
19329
- design: {
19330
- sectionSurface: "base",
19331
- contentFrame: plainFrame,
19332
- itemSurface: "default"
19333
- }
19334
- }),
19335
- defineBlockAppearancePreset({
19336
- kind: "block-design",
19337
- id: "testimonials-raised-panel",
19338
- target: "testimonials",
19339
- label: "Raised testimonial panel",
19340
- blockKinds: ["block.testimonials"],
19341
- design: {
19342
- sectionSurface: "muted-band",
19343
- contentFrame: panelFrame("raised"),
19344
- itemSurface: "raised"
19345
- }
19346
- }),
19347
- defineBlockAppearancePreset({
19348
- kind: "block-design",
19349
- id: "testimonials-accent-panel",
19350
- target: "testimonials",
19351
- label: "Accent testimonial panel",
19352
- blockKinds: ["block.testimonials"],
19353
- design: {
19354
- sectionSurface: "accent-band",
19355
- contentFrame: panelFrame("raised"),
19356
- itemSurface: "raised"
19357
- }
19358
- }),
19359
- defineBlockAppearancePreset({
19360
- kind: "block-design",
19361
- id: "testimonials-default-cards",
19362
- target: "testimonials",
19363
- label: "Default cards",
19364
- blockKinds: ["block.testimonials"],
19365
- design: {
19366
- sectionSurface: "base",
19367
- contentFrame: plainFrame,
19368
- itemSurface: "none",
19369
- testimonialCardTreatment: "default"
19370
- }
19371
- }),
19372
- defineBlockAppearancePreset({
19373
- kind: "block-design",
19374
- id: "testimonials-statement-cards",
19375
- target: "testimonials",
19376
- label: "Statement cards",
19377
- blockKinds: ["block.testimonials"],
19378
- design: {
19379
- sectionSurface: "accent-band",
19380
- contentFrame: plainFrame,
19381
- itemSurface: "raised",
19382
- testimonialCardTreatment: "statement"
19383
- }
19384
- }),
19385
- defineBlockAppearancePreset({
19386
- kind: "block-design",
19387
- id: "testimonials-brand-statement-cards",
19388
- target: "testimonials",
19389
- label: "Brand statement cards",
19390
- blockKinds: ["block.testimonials"],
19391
- design: {
19392
- sectionSurface: "brand-depth-band",
19393
- contentFrame: plainFrame,
19394
- itemSurface: "raised",
19395
- testimonialCardTreatment: "statement"
19396
- }
19397
- }),
19398
- defineBlockAppearancePreset({
19399
- kind: "block-design",
19400
- id: "testimonials-non-carded",
19401
- target: "testimonials",
19402
- label: "Non-carded",
19403
- blockKinds: ["block.testimonials"],
19404
- design: {
19405
- sectionSurface: "muted-band",
19406
- contentFrame: plainFrame,
19407
- itemSurface: "none",
19408
- testimonialCardTreatment: "non-carded"
19409
- }
19410
- }),
19411
- defineBlockAppearancePreset({
19412
- kind: "block-design",
19413
- id: "testimonials-evergreen-lead",
19414
- target: "testimonials",
19415
- label: "Evergreen lead",
19416
- blockKinds: ["block.testimonials"],
19417
- constraints: { layoutVariantKeys: ["featured-editorial"] },
19418
- design: {
19419
- sectionSurface: "base",
19420
- contentFrame: plainFrame,
19421
- itemSurface: "none"
19422
- }
19423
- }),
19424
- defineBlockAppearancePreset({
19425
- kind: "block-design",
19426
- id: "testimonials-room-and-response",
19427
- target: "testimonials",
19428
- label: "Room and response",
19429
- blockKinds: ["block.testimonials"],
19430
- constraints: { layoutVariantKeys: ["featured-editorial"] },
19431
- design: {
19432
- sectionSurface: "base",
19433
- contentFrame: plainFrame,
19434
- itemSurface: "none"
19020
+ }],
19021
+ design: {
19022
+ sectionSurface: "hero-image",
19023
+ contentFrame: plainFrame,
19024
+ itemSurface: "none",
19025
+ sectionHeight: "immersive",
19026
+ heroComposition: "center",
19027
+ heroTypographyScale: "poster",
19028
+ imageSurfaceTreatment: {
19029
+ kind: "brand-scrim",
19030
+ token: "primary",
19031
+ intensity: "strong"
19435
19032
  }
19436
- }),
19437
- defineBlockAppearancePreset({
19438
- kind: "block-design",
19439
- id: "testimonials-open-floor",
19440
- target: "testimonials",
19441
- label: "Open floor",
19442
- blockKinds: ["block.testimonials"],
19443
- constraints: { layoutVariantKeys: ["featured-editorial"] },
19444
- design: {
19445
- sectionSurface: "base",
19446
- contentFrame: plainFrame,
19447
- itemSurface: "none"
19033
+ }
19034
+ }), defineBlockAppearancePreset({
19035
+ id: "hero-brand-scrim",
19036
+ target: "hero",
19037
+ label: "Brand scrim image hero",
19038
+ blockKinds: ["block.hero"],
19039
+ constraints: { layoutFamilies: ["centered", "compact"] },
19040
+ optionGroups: brandScrimOptionGroups,
19041
+ layoutPatches: microBannerLayoutPatches,
19042
+ design: {
19043
+ sectionSurface: "hero-image",
19044
+ contentFrame: plainFrame,
19045
+ itemSurface: "none",
19046
+ sectionHeight: "immersive",
19047
+ heroComposition: "center",
19048
+ heroTypographyScale: "display",
19049
+ imageSurfaceTreatment: {
19050
+ kind: "brand-scrim",
19051
+ token: "primary"
19448
19052
  }
19449
- }),
19450
- defineBlockAppearancePreset({
19451
- kind: "block-design",
19452
- id: "faq-base-accordion",
19453
- target: "faq",
19454
- label: "Base accordion FAQ",
19455
- blockKinds: ["block.faq"],
19456
- design: {
19457
- sectionSurface: "base",
19458
- contentFrame: plainFrame,
19459
- itemSurface: "default"
19053
+ }
19054
+ }), defineBlockAppearancePreset({
19055
+ id: "hero-brand-scrim-fixed-frame",
19056
+ target: "hero",
19057
+ label: "Fixed-frame brand scrim hero",
19058
+ blockKinds: ["block.hero"],
19059
+ constraints: { layoutFamilies: ["centered", "compact"] },
19060
+ optionGroups: brandScrimOptionGroups,
19061
+ layoutPatches: microBannerLayoutPatches,
19062
+ design: {
19063
+ sectionSurface: "hero-image",
19064
+ contentFrame: plainFrame,
19065
+ itemSurface: "none",
19066
+ sectionHeight: "immersive",
19067
+ heroComposition: "center",
19068
+ heroTypographyScale: "display",
19069
+ imageSurfaceTreatment: {
19070
+ kind: "brand-scrim",
19071
+ token: "primary"
19072
+ },
19073
+ imageSurfaceMotion: "fixed-frame",
19074
+ eyebrowTreatment: "accent-pill-bounce"
19075
+ }
19076
+ }), defineBlockAppearancePreset({
19077
+ id: "hero-brand-depth-expressive",
19078
+ target: "hero",
19079
+ label: "Expressive brand-depth hero",
19080
+ blockKinds: ["block.hero"],
19081
+ constraints: { layoutFamilies: ["centered", "compact"] },
19082
+ design: {
19083
+ sectionSurface: "brand-depth-band",
19084
+ contentFrame: plainFrame,
19085
+ itemSurface: "none",
19086
+ heroComposition: "center",
19087
+ heroTypographyScale: "editorial",
19088
+ eyebrowTreatment: "accent-pill-bounce"
19089
+ }
19090
+ }), defineBlockAppearancePreset({
19091
+ id: "hero-contained-intro",
19092
+ target: "hero",
19093
+ label: "Contained intro hero",
19094
+ blockKinds: ["block.hero"],
19095
+ design: {
19096
+ sectionSurface: "muted-band",
19097
+ contentFrame: panelFrame("inset"),
19098
+ itemSurface: "none",
19099
+ heroComposition: "center",
19100
+ heroTypographyScale: "editorial"
19101
+ }
19102
+ }), defineBlockAppearancePreset({
19103
+ id: "hero-split-editorial",
19104
+ target: "hero",
19105
+ label: "Editorial split hero",
19106
+ blockKinds: ["block.hero"],
19107
+ constraints: { layoutFamilies: ["split"] },
19108
+ design: {
19109
+ sectionSurface: "base",
19110
+ contentFrame: plainFrame,
19111
+ itemSurface: "none",
19112
+ heroTypographyScale: "editorial"
19113
+ }
19114
+ }), defineBlockAppearancePreset({
19115
+ id: "hero-split-brand",
19116
+ target: "hero",
19117
+ label: "Brand split hero",
19118
+ blockKinds: ["block.hero"],
19119
+ constraints: { layoutFamilies: ["split"] },
19120
+ design: {
19121
+ sectionSurface: "brand-depth-band",
19122
+ contentFrame: plainFrame,
19123
+ itemSurface: "none",
19124
+ heroTypographyScale: "display",
19125
+ eyebrowTreatment: "accent-pill-bounce"
19126
+ }
19127
+ }), defineBlockAppearancePreset({
19128
+ id: "hero-split-soft-panel",
19129
+ target: "hero",
19130
+ label: "Soft panel split hero",
19131
+ blockKinds: ["block.hero"],
19132
+ constraints: { layoutFamilies: ["split"] },
19133
+ design: {
19134
+ sectionSurface: "muted-band",
19135
+ contentFrame: panelFrame("raised"),
19136
+ itemSurface: "none",
19137
+ heroTypographyScale: "editorial"
19138
+ }
19139
+ }), defineBlockAppearancePreset({
19140
+ id: "hero-split-accent",
19141
+ target: "hero",
19142
+ label: "Accent split hero",
19143
+ blockKinds: ["block.hero"],
19144
+ constraints: { layoutFamilies: ["split"] },
19145
+ design: {
19146
+ sectionSurface: "accent-band",
19147
+ contentFrame: panelFrame("raised"),
19148
+ itemSurface: "none",
19149
+ heroTypographyScale: "display"
19150
+ }
19151
+ }), defineBlockAppearancePreset({
19152
+ id: "intro-editorial-statement",
19153
+ target: "intro",
19154
+ label: "Editorial intro statement",
19155
+ blockKinds: ["block.intro"],
19156
+ constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
19157
+ design: {
19158
+ sectionSurface: "base",
19159
+ contentFrame: plainFrame,
19160
+ itemSurface: "none",
19161
+ composition: {
19162
+ kind: "intro",
19163
+ treatment: "editorial-statement"
19460
19164
  }
19461
- }),
19462
- defineBlockAppearancePreset({
19463
- kind: "block-design",
19464
- id: "faq-contained-help",
19465
- target: "faq",
19466
- label: "Contained help panel",
19467
- blockKinds: ["block.faq"],
19468
- design: {
19469
- sectionSurface: "muted-band",
19470
- contentFrame: panelFrame("inset"),
19471
- itemSurface: "default"
19165
+ }
19166
+ }), defineBlockAppearancePreset({
19167
+ id: "intro-portrait-bio",
19168
+ target: "intro",
19169
+ label: "Portrait and bio",
19170
+ blockKinds: ["block.intro"],
19171
+ constraints: { layoutVariantKeys: ["media-copy"] },
19172
+ design: {
19173
+ sectionSurface: "base",
19174
+ contentFrame: plainFrame,
19175
+ itemSurface: "none",
19176
+ composition: {
19177
+ kind: "intro",
19178
+ treatment: "portrait-bio"
19472
19179
  }
19473
- }),
19474
- defineBlockAppearancePreset({
19475
- kind: "block-design",
19476
- id: "contact-form-panel",
19477
- target: "contact-form",
19478
- label: "Raised form panel",
19479
- blockKinds: ["block.form"],
19480
- design: {
19481
- sectionSurface: "muted-band",
19482
- contentFrame: panelFrame("raised"),
19483
- itemSurface: "none"
19180
+ }
19181
+ }), defineBlockAppearancePreset({
19182
+ id: "offerings-preview-default-cards",
19183
+ target: "offerings",
19184
+ label: "Default offering cards",
19185
+ blockKinds: ["block.offerings-preview"],
19186
+ design: {
19187
+ sectionSurface: "base",
19188
+ contentFrame: plainFrame,
19189
+ itemSurface: "default"
19190
+ }
19191
+ }), defineBlockAppearancePreset({
19192
+ id: "offerings-preview-secondary-cards",
19193
+ target: "offerings",
19194
+ label: "Secondary offering cards",
19195
+ blockKinds: ["block.offerings-preview"],
19196
+ design: {
19197
+ sectionSurface: "muted-band",
19198
+ contentFrame: plainFrame,
19199
+ itemSurface: "inset"
19200
+ }
19201
+ }), defineBlockAppearancePreset({
19202
+ id: "offerings-preview-non-carded",
19203
+ target: "offerings",
19204
+ label: "Non-carded offerings",
19205
+ blockKinds: ["block.offerings-preview"],
19206
+ design: {
19207
+ sectionSurface: "muted-band",
19208
+ contentFrame: plainFrame,
19209
+ itemSurface: "editorial"
19210
+ }
19211
+ }), defineBlockAppearancePreset({
19212
+ id: "offerings-preview-paired-feature-cards",
19213
+ target: "offerings",
19214
+ label: "Paired feature cards",
19215
+ blockKinds: ["block.offerings-preview"],
19216
+ constraints: { layoutVariantKeys: ["cards"] },
19217
+ design: {
19218
+ sectionSurface: "base",
19219
+ contentFrame: plainFrame,
19220
+ itemSurface: "none"
19221
+ }
19222
+ }), defineBlockAppearancePreset({
19223
+ id: "offerings-preview-open-editorial-columns",
19224
+ target: "offerings",
19225
+ label: "Open editorial columns",
19226
+ blockKinds: ["block.offerings-preview"],
19227
+ constraints: { layoutVariantKeys: ["cards"] },
19228
+ design: {
19229
+ sectionSurface: "base",
19230
+ contentFrame: plainFrame,
19231
+ itemSurface: "none"
19232
+ }
19233
+ }), defineBlockAppearancePreset({
19234
+ id: "offerings-preview-joined-programme-panel",
19235
+ target: "offerings",
19236
+ label: "Joined programme panel",
19237
+ blockKinds: ["block.offerings-preview"],
19238
+ constraints: { layoutVariantKeys: ["cards"] },
19239
+ design: {
19240
+ sectionSurface: "base",
19241
+ contentFrame: plainFrame,
19242
+ itemSurface: "none"
19243
+ }
19244
+ }), defineBlockAppearancePreset({
19245
+ id: "feature-cards-raised-rule",
19246
+ target: "feature-cards",
19247
+ label: "Raised cards with rule",
19248
+ blockKinds: ["block.feature-cards"],
19249
+ design: {
19250
+ sectionSurface: "base",
19251
+ contentFrame: plainFrame,
19252
+ itemSurface: "raised"
19253
+ }
19254
+ }), defineBlockAppearancePreset({
19255
+ id: "feature-cards-bold-colors",
19256
+ target: "feature-cards",
19257
+ label: "Bold colour-blocked cards",
19258
+ blockKinds: ["block.feature-cards"],
19259
+ design: {
19260
+ sectionSurface: "base",
19261
+ contentFrame: plainFrame,
19262
+ itemSurface: "color-blocked"
19263
+ }
19264
+ }), defineBlockAppearancePreset({
19265
+ id: "feature-cards-editorial-columns",
19266
+ target: "feature-cards",
19267
+ label: "Editorial open columns",
19268
+ blockKinds: ["block.feature-cards"],
19269
+ design: {
19270
+ sectionSurface: "base",
19271
+ contentFrame: plainFrame,
19272
+ itemSurface: "editorial"
19273
+ }
19274
+ }), defineBlockAppearancePreset({
19275
+ id: "feature-cards-asymmetric-emphasis",
19276
+ target: "feature-cards",
19277
+ label: "Asymmetric emphasis pair",
19278
+ blockKinds: ["block.feature-cards"],
19279
+ constraints: { layoutFamilies: ["grid"] },
19280
+ design: {
19281
+ sectionSurface: "base",
19282
+ contentFrame: plainFrame,
19283
+ itemSurface: "none",
19284
+ composition: {
19285
+ kind: "feature-cards",
19286
+ treatment: "asymmetric-emphasis"
19484
19287
  }
19485
- }),
19486
- defineBlockAppearancePreset({
19487
- kind: "block-design",
19488
- id: "cta-accent-band",
19489
- target: "cta",
19490
- label: "Accent CTA band",
19491
- blockKinds: ["block.cta-full"],
19492
- design: {
19493
- sectionSurface: "accent-band",
19494
- contentFrame: plainFrame,
19495
- itemSurface: "none",
19496
- eyebrowTreatment: "accent"
19288
+ }
19289
+ }), defineBlockAppearancePreset({
19290
+ id: "feature-cards-framed-programme",
19291
+ target: "feature-cards",
19292
+ label: "Framed programme cards",
19293
+ blockKinds: ["block.feature-cards"],
19294
+ constraints: { layoutFamilies: ["grid"] },
19295
+ design: {
19296
+ sectionSurface: "brand-depth-band",
19297
+ contentFrame: plainFrame,
19298
+ itemSurface: "inset",
19299
+ composition: {
19300
+ kind: "feature-cards",
19301
+ treatment: "framed-programme"
19497
19302
  }
19498
- })
19499
- ];
19303
+ }
19304
+ }), defineBlockAppearancePreset({
19305
+ id: "feature-cards-soft-panels",
19306
+ target: "feature-cards",
19307
+ label: "Soft tinted panels",
19308
+ blockKinds: ["block.feature-cards"],
19309
+ design: {
19310
+ sectionSurface: "base",
19311
+ contentFrame: plainFrame,
19312
+ itemSurface: "inset"
19313
+ }
19314
+ }), defineBlockAppearancePreset({
19315
+ id: "feature-cards-editorial-diptych",
19316
+ target: "feature-cards",
19317
+ label: "Editorial diptych",
19318
+ blockKinds: ["block.feature-cards"],
19319
+ constraints: { layoutVariantKeys: ["editorial-diptych"] },
19320
+ design: {
19321
+ sectionSurface: "base",
19322
+ contentFrame: plainFrame,
19323
+ itemSurface: "flat"
19324
+ }
19325
+ }), defineBlockAppearancePreset({
19326
+ id: "feature-cards-editorial-pathways",
19327
+ target: "feature-cards",
19328
+ label: "Editorial pathways",
19329
+ blockKinds: ["block.feature-cards"],
19330
+ constraints: { layoutVariantKeys: ["editorial-pathways"] },
19331
+ design: {
19332
+ sectionSurface: "base",
19333
+ contentFrame: plainFrame,
19334
+ itemSurface: "flat"
19335
+ }
19336
+ }), defineBlockAppearancePreset({
19337
+ id: "feature-cards-photo-tiles",
19338
+ target: "feature-cards",
19339
+ label: "Photo tiles",
19340
+ blockKinds: ["block.feature-cards"],
19341
+ design: {
19342
+ sectionSurface: "base",
19343
+ contentFrame: plainFrame,
19344
+ itemSurface: "raised"
19345
+ }
19346
+ }), defineBlockAppearancePreset({
19347
+ id: "events-lined-panel",
19348
+ target: "events",
19349
+ label: "Raised event panel",
19350
+ blockKinds: ["block.event-calendar", "block.event-listing"],
19351
+ design: {
19352
+ sectionSurface: "base",
19353
+ contentFrame: panelFrame("raised"),
19354
+ itemSurface: "none"
19355
+ }
19356
+ }), defineBlockAppearancePreset({
19357
+ id: "events-ruled-register",
19358
+ target: "events",
19359
+ label: "Ruled event register",
19360
+ blockKinds: ["block.event-calendar", "block.event-listing"],
19361
+ design: {
19362
+ sectionSurface: "brand-depth-band",
19363
+ contentFrame: plainFrame,
19364
+ itemSurface: "none",
19365
+ eventListTreatment: "ruled-register"
19366
+ }
19367
+ }), defineBlockAppearancePreset({
19368
+ id: "events-editorial-register",
19369
+ target: "events",
19370
+ label: "Editorial event register",
19371
+ blockKinds: ["block.event-calendar", "block.event-listing"],
19372
+ design: {
19373
+ sectionSurface: "base",
19374
+ contentFrame: plainFrame,
19375
+ itemSurface: "none",
19376
+ eventListTreatment: "editorial-register"
19377
+ }
19378
+ }), defineBlockAppearancePreset({
19379
+ id: "events-dense-index",
19380
+ target: "events",
19381
+ label: "Dense event index",
19382
+ blockKinds: ["block.event-calendar", "block.event-listing"],
19383
+ design: {
19384
+ sectionSurface: "accent-band",
19385
+ contentFrame: plainFrame,
19386
+ itemSurface: "none",
19387
+ eventListTreatment: "dense-index"
19388
+ }
19389
+ }), defineBlockAppearancePreset({
19390
+ id: "schedule-details-brand-depth",
19391
+ target: "events",
19392
+ label: "Brand-depth schedule details",
19393
+ blockKinds: ["block.event-details", "block.course-details"],
19394
+ design: {
19395
+ sectionSurface: "brand-depth-band",
19396
+ contentFrame: plainFrame,
19397
+ itemSurface: "none",
19398
+ tileTreatment: "brand-depth"
19399
+ }
19400
+ }), defineBlockAppearancePreset({
19401
+ id: "media-text-flush-feature",
19402
+ target: "media-text",
19403
+ label: "Flush media feature",
19404
+ blockKinds: ["block.media-text"],
19405
+ design: {
19406
+ sectionSurface: "muted-band",
19407
+ contentFrame: flushPanelFrame({ bleed: "start" }),
19408
+ itemSurface: "none"
19409
+ }
19410
+ }), defineBlockAppearancePreset({
19411
+ id: "testimonials-simple-cards",
19412
+ target: "testimonials",
19413
+ label: "Simple testimonial cards",
19414
+ blockKinds: ["block.testimonials"],
19415
+ design: {
19416
+ sectionSurface: "base",
19417
+ contentFrame: plainFrame,
19418
+ itemSurface: "default"
19419
+ }
19420
+ }), defineBlockAppearancePreset({
19421
+ id: "testimonials-raised-panel",
19422
+ target: "testimonials",
19423
+ label: "Raised testimonial panel",
19424
+ blockKinds: ["block.testimonials"],
19425
+ design: {
19426
+ sectionSurface: "muted-band",
19427
+ contentFrame: panelFrame("raised"),
19428
+ itemSurface: "raised"
19429
+ }
19430
+ }), defineBlockAppearancePreset({
19431
+ id: "testimonials-accent-panel",
19432
+ target: "testimonials",
19433
+ label: "Accent testimonial panel",
19434
+ blockKinds: ["block.testimonials"],
19435
+ design: {
19436
+ sectionSurface: "accent-band",
19437
+ contentFrame: panelFrame("raised"),
19438
+ itemSurface: "raised"
19439
+ }
19440
+ }), defineBlockAppearancePreset({
19441
+ id: "testimonials-default-cards",
19442
+ target: "testimonials",
19443
+ label: "Default cards",
19444
+ blockKinds: ["block.testimonials"],
19445
+ design: {
19446
+ sectionSurface: "base",
19447
+ contentFrame: plainFrame,
19448
+ itemSurface: "none",
19449
+ testimonialCardTreatment: "default"
19450
+ }
19451
+ }), defineBlockAppearancePreset({
19452
+ id: "testimonials-statement-cards",
19453
+ target: "testimonials",
19454
+ label: "Statement cards",
19455
+ blockKinds: ["block.testimonials"],
19456
+ design: {
19457
+ sectionSurface: "accent-band",
19458
+ contentFrame: plainFrame,
19459
+ itemSurface: "raised",
19460
+ testimonialCardTreatment: "statement"
19461
+ }
19462
+ }), defineBlockAppearancePreset({
19463
+ id: "testimonials-brand-statement-cards",
19464
+ target: "testimonials",
19465
+ label: "Brand statement cards",
19466
+ blockKinds: ["block.testimonials"],
19467
+ design: {
19468
+ sectionSurface: "brand-depth-band",
19469
+ contentFrame: plainFrame,
19470
+ itemSurface: "raised",
19471
+ testimonialCardTreatment: "statement"
19472
+ }
19473
+ }), defineBlockAppearancePreset({
19474
+ id: "testimonials-non-carded",
19475
+ target: "testimonials",
19476
+ label: "Non-carded",
19477
+ blockKinds: ["block.testimonials"],
19478
+ design: {
19479
+ sectionSurface: "muted-band",
19480
+ contentFrame: plainFrame,
19481
+ itemSurface: "none",
19482
+ testimonialCardTreatment: "non-carded"
19483
+ }
19484
+ }), defineBlockAppearancePreset({
19485
+ id: "testimonials-evergreen-lead",
19486
+ target: "testimonials",
19487
+ label: "Evergreen lead",
19488
+ blockKinds: ["block.testimonials"],
19489
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
19490
+ design: {
19491
+ sectionSurface: "base",
19492
+ contentFrame: plainFrame,
19493
+ itemSurface: "none"
19494
+ }
19495
+ }), defineBlockAppearancePreset({
19496
+ id: "testimonials-room-and-response",
19497
+ target: "testimonials",
19498
+ label: "Room and response",
19499
+ blockKinds: ["block.testimonials"],
19500
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
19501
+ design: {
19502
+ sectionSurface: "base",
19503
+ contentFrame: plainFrame,
19504
+ itemSurface: "none"
19505
+ }
19506
+ }), defineBlockAppearancePreset({
19507
+ id: "testimonials-open-floor",
19508
+ target: "testimonials",
19509
+ label: "Open floor",
19510
+ blockKinds: ["block.testimonials"],
19511
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
19512
+ design: {
19513
+ sectionSurface: "base",
19514
+ contentFrame: plainFrame,
19515
+ itemSurface: "none"
19516
+ }
19517
+ }), defineBlockAppearancePreset({
19518
+ id: "faq-base-accordion",
19519
+ target: "faq",
19520
+ label: "Base accordion FAQ",
19521
+ blockKinds: ["block.faq"],
19522
+ design: {
19523
+ sectionSurface: "base",
19524
+ contentFrame: plainFrame,
19525
+ itemSurface: "default"
19526
+ }
19527
+ }), defineBlockAppearancePreset({
19528
+ id: "faq-contained-help",
19529
+ target: "faq",
19530
+ label: "Contained help panel",
19531
+ blockKinds: ["block.faq"],
19532
+ design: {
19533
+ sectionSurface: "muted-band",
19534
+ contentFrame: panelFrame("inset"),
19535
+ itemSurface: "default"
19536
+ }
19537
+ }), defineBlockAppearancePreset({
19538
+ id: "contact-form-panel",
19539
+ target: "contact-form",
19540
+ label: "Raised form panel",
19541
+ blockKinds: ["block.form"],
19542
+ design: {
19543
+ sectionSurface: "muted-band",
19544
+ contentFrame: panelFrame("raised"),
19545
+ itemSurface: "none"
19546
+ }
19547
+ }), defineBlockAppearancePreset({
19548
+ id: "cta-accent-band",
19549
+ target: "cta",
19550
+ label: "Accent CTA band",
19551
+ blockKinds: ["block.cta-full"],
19552
+ design: {
19553
+ sectionSurface: "accent-band",
19554
+ contentFrame: plainFrame,
19555
+ itemSurface: "none",
19556
+ eyebrowTreatment: "accent"
19557
+ }
19558
+ });
19500
19559
  }));
19501
19560
  var init_appearancePresetCatalog = __esmMin((() => {
19502
19561
  init_blockAppearancePresets();
19503
- [...blockAppearancePresets];
19504
19562
  }));
19505
19563
  var init_appearancePresetTypes = __esmMin((() => {}));
19506
19564
  //#endregion
@@ -22197,6 +22255,38 @@ var init_backgroundAppearance = __esmMin((() => {
22197
22255
  var init_compositionBudget = __esmMin((() => {
22198
22256
  init_types$9();
22199
22257
  }));
22258
+ var init_headerStyleParts = __esmMin((() => {}));
22259
+ var clearSplitInteractionPalette;
22260
+ var init_headerInteractionPalette = __esmMin((() => {
22261
+ init_interactionPalette();
22262
+ init_lookOptionGroups();
22263
+ clearSplitInteractionPalette = defineLookOptionGroup({
22264
+ id: "interaction-palette",
22265
+ label: "Hover colour",
22266
+ defaultOptionId: "accent",
22267
+ options: [
22268
+ {
22269
+ id: "accent",
22270
+ label: "Accent"
22271
+ },
22272
+ {
22273
+ id: "primary",
22274
+ label: "Primary"
22275
+ },
22276
+ {
22277
+ id: "secondary",
22278
+ label: "Secondary"
22279
+ }
22280
+ ]
22281
+ });
22282
+ }));
22283
+ var init_headerOpeningForeground = __esmMin((() => {
22284
+ init_expandPalette();
22285
+ init_colorConversion();
22286
+ init_tokens();
22287
+ init_colorTokenParts();
22288
+ init_types$9();
22289
+ }));
22200
22290
  var init_customizableSurfaces = __esmMin((() => {
22201
22291
  init_types$9();
22202
22292
  }));
@@ -22216,7 +22306,7 @@ function asHeaderStyleId(value) {
22216
22306
  * optional nested styling fields that would otherwise leak from another Look.
22217
22307
  */
22218
22308
  function baseHeader(theme) {
22219
- const { navLinkStyle: _navLinkStyle, navFontRole: _navFontRole, navTypography: _navTypography, navTextSize: _navTextSize, dropdownStyle: _dropdownStyle, ctaVariant: _ctaVariant, navContainer: _navContainer, container: _container, shadow: _shadow, logo: _logo, logoText: _logoText, border: _border, ...header } = theme.header;
22309
+ const { navLinkStyle: _navLinkStyle, navFontRole: _navFontRole, navTypography: _navTypography, navTextSize: _navTextSize, interactionPalette: _interactionPalette, dropdownStyle: _dropdownStyle, ctaVariant: _ctaVariant, navContainer: _navContainer, container: _container, shadow: _shadow, logo: _logo, logoText: _logoText, border: _border, ...header } = theme.header;
22220
22310
  return {
22221
22311
  ...header,
22222
22312
  navContainer: {
@@ -22575,12 +22665,12 @@ function floatingGlassHeader(theme) {
22575
22665
  }
22576
22666
  };
22577
22667
  }
22578
- function headerConfigurationKey(configuration) {
22579
- return `${configuration.structure}:${configuration.treatment}:${configuration.behavior}`;
22580
- }
22581
22668
  var titleOnlyLogoAccommodation, inlineWordmarkLogoAccommodation, inlineMarkWithTitleLogoAccommodation, logoPlateAccommodation, centeredBadgeAccommodation, popoutBadgeAccommodation, centeredMastheadAccommodation, unbackedOverlayLogoAccommodation, inlineClassicLogoAccommodations, centeredLogoAccommodations, overlayLogoAccommodations, headerLayoutCatalog, headerStyleCatalog, headerStylesById, headerStyleCompatibilityOrder, legacyHeaderLookAliases, legacyHeaderLookAliasesById, headerLookCatalog;
22582
22669
  var init_headerLooks = __esmMin((() => {
22583
22670
  init_headerCtaVariants();
22671
+ init_headerStyleParts();
22672
+ init_headerInteractionPalette();
22673
+ init_headerOpeningForeground();
22584
22674
  init_customizableSurfaces();
22585
22675
  init_logoBranding();
22586
22676
  init_types$9();
@@ -22707,7 +22797,6 @@ var init_headerLooks = __esmMin((() => {
22707
22797
  id: asHeaderLayoutId("classic"),
22708
22798
  label: "Classic",
22709
22799
  description: "Logo and navigation in one practical horizontal row.",
22710
- structure: "inline-classic",
22711
22800
  variant: "classic",
22712
22801
  defaultPositioning: "sticky",
22713
22802
  shrinkOnScroll: false
@@ -22716,7 +22805,6 @@ var init_headerLooks = __esmMin((() => {
22716
22805
  id: asHeaderLayoutId("centered"),
22717
22806
  label: "Centered",
22718
22807
  description: "Logo centered above a balanced navigation row.",
22719
- structure: "centered-stack",
22720
22808
  variant: "centered",
22721
22809
  defaultPositioning: "static",
22722
22810
  shrinkOnScroll: false,
@@ -22732,7 +22820,6 @@ var init_headerLooks = __esmMin((() => {
22732
22820
  id: asHeaderLayoutId("floating"),
22733
22821
  label: "Floating",
22734
22822
  description: "Detached header chrome that sits over the opening section.",
22735
- structure: "floating-shell",
22736
22823
  variant: "floating",
22737
22824
  defaultPositioning: "sticky",
22738
22825
  shrinkOnScroll: true,
@@ -22891,10 +22978,13 @@ var init_headerLooks = __esmMin((() => {
22891
22978
  label: "Clear Split",
22892
22979
  description: "Floating logo with transparent navigation and no shared shell.",
22893
22980
  supportedLayoutIds: supportedLayouts(["floating"]),
22894
- navInteraction: "color-change",
22981
+ navInteraction: "pill-background",
22895
22982
  surface: "floating",
22896
- defaultDepth: "none",
22983
+ defaultDepth: "line",
22897
22984
  navTypography: "plain",
22985
+ openingForegroundTarget: "all",
22986
+ scrollTreatment: "contrast-glass",
22987
+ interactionPalette: clearSplitInteractionPalette,
22898
22988
  moods: ["editorial", "calm"]
22899
22989
  },
22900
22990
  {
@@ -22917,6 +23007,7 @@ var init_headerLooks = __esmMin((() => {
22917
23007
  surface: "floating",
22918
23008
  defaultDepth: "shadow",
22919
23009
  navTypography: "quiet-caps",
23010
+ openingForegroundTarget: "brand-only",
22920
23011
  moods: ["expressive"]
22921
23012
  },
22922
23013
  {
@@ -22928,6 +23019,7 @@ var init_headerLooks = __esmMin((() => {
22928
23019
  surface: "floating",
22929
23020
  defaultDepth: "shadow",
22930
23021
  navTypography: "heading",
23022
+ openingForegroundTarget: "brand-only",
22931
23023
  moods: ["calm", "editorial"]
22932
23024
  }
22933
23025
  ]);
@@ -23083,13 +23175,6 @@ var init_headerLooks = __esmMin((() => {
23083
23175
  {
23084
23176
  id: asHeaderLookId("clean-base"),
23085
23177
  label: "Clean base",
23086
- visualTreatment: "solid-neutral",
23087
- layoutBehavior: "sticky",
23088
- configuration: {
23089
- structure: "inline-classic",
23090
- treatment: "solid-neutral",
23091
- behavior: "sticky"
23092
- },
23093
23178
  openingRequirement: "none",
23094
23179
  logoAccommodations: inlineClassicLogoAccommodations,
23095
23180
  compile: cleanBaseHeader
@@ -23097,13 +23182,6 @@ var init_headerLooks = __esmMin((() => {
23097
23182
  {
23098
23183
  id: asHeaderLookId("classic-centered-nav"),
23099
23184
  label: "Centered nav",
23100
- visualTreatment: "solid-neutral",
23101
- layoutBehavior: "sticky",
23102
- configuration: {
23103
- structure: "inline-classic",
23104
- treatment: "solid-neutral",
23105
- behavior: "sticky"
23106
- },
23107
23185
  openingRequirement: "none",
23108
23186
  maxRecommendedNavItems: 6,
23109
23187
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -23112,13 +23190,6 @@ var init_headerLooks = __esmMin((() => {
23112
23190
  {
23113
23191
  id: asHeaderLookId("brand-solid"),
23114
23192
  label: "Brand solid",
23115
- visualTreatment: "solid-brand",
23116
- layoutBehavior: "sticky-shrink",
23117
- configuration: {
23118
- structure: "inline-classic",
23119
- treatment: "solid-brand",
23120
- behavior: "sticky-shrink"
23121
- },
23122
23193
  openingRequirement: "none",
23123
23194
  logoAccommodations: inlineClassicLogoAccommodations,
23124
23195
  compile: solidBrandHeader
@@ -23126,13 +23197,6 @@ var init_headerLooks = __esmMin((() => {
23126
23197
  {
23127
23198
  id: asHeaderLookId("serif-line"),
23128
23199
  label: "Serif line",
23129
- visualTreatment: "light-serif",
23130
- layoutBehavior: "sticky",
23131
- configuration: {
23132
- structure: "centered-stack",
23133
- treatment: "light-serif",
23134
- behavior: "sticky"
23135
- },
23136
23200
  openingRequirement: "none",
23137
23201
  maxRecommendedNavItems: 6,
23138
23202
  logoAccommodations: centeredLogoAccommodations,
@@ -23141,13 +23205,6 @@ var init_headerLooks = __esmMin((() => {
23141
23205
  {
23142
23206
  id: asHeaderLookId("centered-calm"),
23143
23207
  label: "Centered calm",
23144
- visualTreatment: "light-serif",
23145
- layoutBehavior: "normal-flow",
23146
- configuration: {
23147
- structure: "centered-stack",
23148
- treatment: "light-serif",
23149
- behavior: "normal-flow"
23150
- },
23151
23208
  openingRequirement: "none",
23152
23209
  maxRecommendedNavItems: 5,
23153
23210
  logoAccommodations: centeredLogoAccommodations,
@@ -23156,13 +23213,6 @@ var init_headerLooks = __esmMin((() => {
23156
23213
  {
23157
23214
  id: asHeaderLookId("practical-utility"),
23158
23215
  label: "Practical utility",
23159
- visualTreatment: "solid-neutral",
23160
- layoutBehavior: "sticky-shrink",
23161
- configuration: {
23162
- structure: "inline-classic",
23163
- treatment: "solid-neutral",
23164
- behavior: "sticky-shrink"
23165
- },
23166
23216
  openingRequirement: "none",
23167
23217
  requiresProminentCta: true,
23168
23218
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -23171,13 +23221,6 @@ var init_headerLooks = __esmMin((() => {
23171
23221
  {
23172
23222
  id: asHeaderLookId("minimal-transparent"),
23173
23223
  label: "Minimal transparent",
23174
- visualTreatment: "minimal-transparent",
23175
- layoutBehavior: "normal-flow",
23176
- configuration: {
23177
- structure: "inline-classic",
23178
- treatment: "minimal-transparent",
23179
- behavior: "normal-flow"
23180
- },
23181
23224
  openingRequirement: "reserved-space-ok",
23182
23225
  logoAccommodations: inlineClassicLogoAccommodations,
23183
23226
  compile: minimalTransparentHeader
@@ -23185,13 +23228,6 @@ var init_headerLooks = __esmMin((() => {
23185
23228
  {
23186
23229
  id: asHeaderLookId("transparent-overlay"),
23187
23230
  label: "Transparent overlay",
23188
- visualTreatment: "transparent-overlay",
23189
- layoutBehavior: "fixed-overlay",
23190
- configuration: {
23191
- structure: "inline-classic",
23192
- treatment: "transparent-overlay",
23193
- behavior: "fixed-overlay"
23194
- },
23195
23231
  openingRequirement: "requires-image-hero-with-contrast-overlay",
23196
23232
  maxRecommendedNavItems: 5,
23197
23233
  logoAccommodations: overlayLogoAccommodations,
@@ -23200,20 +23236,12 @@ var init_headerLooks = __esmMin((() => {
23200
23236
  {
23201
23237
  id: asHeaderLookId("floating-glass"),
23202
23238
  label: "Floating glass",
23203
- visualTreatment: "floating-glass",
23204
- layoutBehavior: "fixed-floating",
23205
- configuration: {
23206
- structure: "floating-shell",
23207
- treatment: "floating-glass",
23208
- behavior: "fixed-floating"
23209
- },
23210
23239
  openingRequirement: "requires-image-hero-with-contrast-overlay",
23211
23240
  maxRecommendedNavItems: 5,
23212
23241
  logoAccommodations: overlayLogoAccommodations,
23213
23242
  compile: floatingGlassHeader
23214
23243
  }
23215
23244
  ]);
23216
- new Set(headerLookCatalog.map((look) => headerConfigurationKey(look.configuration)));
23217
23245
  new Map(headerLookCatalog.map((look) => [look.id, look]));
23218
23246
  }));
23219
23247
  var init_compilationPlan = __esmMin((() => {
@@ -26692,6 +26720,7 @@ var init_records = __esmMin((() => {}));
26692
26720
  var init_headerOpeningSection = __esmMin((() => {
26693
26721
  init_headerLooks();
26694
26722
  init_records();
26723
+ init_tokens();
26695
26724
  }));
26696
26725
  var init_generatedDesignPipeline = __esmMin((() => {
26697
26726
  init_compositionBudget();
@@ -26987,8 +27016,11 @@ var init_site_styles = __esmMin((() => {
26987
27016
  init_generatedSchemas();
26988
27017
  init_generatedDesignPipeline();
26989
27018
  init_headerLooks();
27019
+ init_headerInteractionPalette();
27020
+ init_headerOpeningForeground();
26990
27021
  init_headerOpeningSection();
26991
27022
  init_lookResolution();
27023
+ init_lookOptionGroups();
26992
27024
  init_logoBranding();
26993
27025
  init_pageDesignAuthority();
26994
27026
  init_pageDesignEditorErrors();
@@ -28009,33 +28041,6 @@ var init_node = __esmMin((() => {
28009
28041
  init_typeBasedLayout();
28010
28042
  init_validation_constants();
28011
28043
  }));
28012
- //#endregion
28013
- //#region ../theme-core/src/responsive/breakpoints.ts
28014
- function mqUp(px) {
28015
- return `(min-width: ${px}px)`;
28016
- }
28017
- function mqDown(px) {
28018
- return `(max-width: ${px}px)`;
28019
- }
28020
- function mqBetween(minPx, maxPx) {
28021
- return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
28022
- }
28023
- var BREAKPOINT_LG, BREAKPOINT_XL, BREAKPOINT_LG_DOWN;
28024
- var init_breakpoints = __esmMin((() => {
28025
- BREAKPOINT_LG = 1024;
28026
- BREAKPOINT_XL = 1280;
28027
- BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
28028
- mqUp(640);
28029
- mqUp(768);
28030
- mqUp(BREAKPOINT_LG);
28031
- mqUp(BREAKPOINT_XL);
28032
- mqDown(639);
28033
- mqDown(767);
28034
- mqDown(BREAKPOINT_LG_DOWN);
28035
- mqBetween(640, BREAKPOINT_LG_DOWN);
28036
- mqDown(640);
28037
- mqDown(768);
28038
- }));
28039
28044
  function asNonEmptyString(value) {
28040
28045
  if (typeof value !== "string") return null;
28041
28046
  const trimmed = value.trim();
@@ -31111,6 +31116,7 @@ var init_newsletterForm$1 = __esmMin((() => {
31111
31116
  }
31112
31117
  ],
31113
31118
  layout: [el("newsletter-form", withApiBindings({
31119
+ source: "block",
31114
31120
  destinationProvider: { $bind: { from: "destinationProvider" } },
31115
31121
  listId: { $bind: { from: "listId" } },
31116
31122
  preset: { $bind: { from: "preset" } },
@@ -33088,9 +33094,9 @@ const giftingBlockDefinition = {
33088
33094
  };
33089
33095
  //#endregion
33090
33096
  //#region ../blocks/src/system/blocks/event-registration.shared.ts
33091
- var occurrenceContextSchema$1;
33097
+ var occurrenceContextSchema;
33092
33098
  var init_event_registration_shared = __esmMin((() => {
33093
- occurrenceContextSchema$1 = z$1.object({
33099
+ occurrenceContextSchema = z$1.object({
33094
33100
  id: z$1.string(),
33095
33101
  seriesId: z$1.string(),
33096
33102
  startsAt: z$1.string(),
@@ -33292,9 +33298,10 @@ function buildEventRegistrationInteractiveIslandProps(props) {
33292
33298
  source: props
33293
33299
  });
33294
33300
  }
33295
- var EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS, EVENT_REGISTRATION_SHELL_STEP_LABELS, eventRegistrationPublicEventSchema, eventRegistrationSourceSchema, eventRegistrationDisplaySchema, eventRegistrationHydrationSchema, eventRegistrationRenderSchema, eventRegistrationIslandMetaCodec, eventRegistrationIslandMetaKeys, eventRegistrationBlockRuntime, eventRegistrationInteractiveIslandPropsCodec;
33301
+ var EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS, EVENT_REGISTRATION_SHELL_STEP_LABELS, eventRegistrationPublicEventSchema, eventRegistrationHydrationSchemaShape, eventRegistrationSourceSchema, eventRegistrationDisplaySchema, eventRegistrationHydrationSchema, eventRegistrationRenderSchema, eventRegistrationIslandMetaCodec, eventRegistrationIslandMetaKeys, eventRegistrationBlockRuntime, eventRegistrationInteractiveIslandPropsCodec;
33296
33302
  var init_event_registration_interactive = __esmMin((() => {
33297
33303
  init_schemas();
33304
+ init_schemas$1();
33298
33305
  init_shop_shared();
33299
33306
  init_event_registration_shared();
33300
33307
  init_eventScope();
@@ -33319,28 +33326,37 @@ var init_event_registration_interactive = __esmMin((() => {
33319
33326
  "Payment"
33320
33327
  ];
33321
33328
  eventRegistrationPublicEventSchema = z$1.preprocess(normalizeEventRegistrationEventInput, publicEventSchema);
33322
- eventRegistrationSourceSchema = z$1.object({
33323
- siteId: z$1.string().optional(),
33324
- apiBaseUrl: z$1.string().optional(),
33325
- portalToken: z$1.string().nullable().optional(),
33326
- previewToken: z$1.string().nullable().optional(),
33327
- occurrenceContext: occurrenceContextSchema$1.optional(),
33329
+ eventRegistrationHydrationSchemaShape = {
33330
+ occurrenceContext: occurrenceContextSchema.optional(),
33328
33331
  subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
33329
33332
  events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
33330
- className: z$1.string().nullable().optional(),
33331
- buttonText: z$1.string().nullable().optional(),
33332
- maxTickets: z$1.string().nullable().optional(),
33333
+ wholeSeriesOfferings: publicCoursesArraySchema.nullable().optional(),
33334
+ wholeSeriesOffering: publicCourseSchema.nullable().optional(),
33335
+ maxTickets: z$1.string().optional(),
33333
33336
  showVenue: z$1.boolean().optional(),
33334
33337
  showCapacity: z$1.boolean().optional(),
33338
+ showSessions: z$1.boolean().optional(),
33339
+ showPrice: z$1.boolean().optional(),
33335
33340
  successMessage: z$1.string().optional(),
33336
33341
  waitlistMessage: z$1.string().optional(),
33342
+ membershipMessage: z$1.string().optional(),
33337
33343
  buttonVariant: registrationButtonVariantSchema.optional(),
33338
33344
  overlayEnabled: z$1.boolean().optional(),
33339
33345
  spamProtectionEnabled: z$1.boolean().optional(),
33340
- stage: previewStageSchema.optional(),
33341
33346
  supportEmail: z$1.string().optional(),
33342
33347
  sitePasses: publicPassProductCollectionSchema.nullable().optional(),
33343
33348
  siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
33349
+ };
33350
+ eventRegistrationSourceSchema = z$1.object({
33351
+ siteId: z$1.string().optional(),
33352
+ apiBaseUrl: z$1.string().optional(),
33353
+ portalToken: z$1.string().nullable().optional(),
33354
+ previewToken: z$1.string().nullable().optional(),
33355
+ ...eventRegistrationHydrationSchemaShape,
33356
+ className: z$1.string().nullable().optional(),
33357
+ buttonText: z$1.string().nullable().optional(),
33358
+ maxTickets: z$1.string().nullable().optional(),
33359
+ stage: previewStageSchema.optional()
33344
33360
  });
33345
33361
  eventRegistrationDisplaySchema = z$1.object({
33346
33362
  kind: z$1.literal("event-registration"),
@@ -33351,22 +33367,7 @@ var init_event_registration_interactive = __esmMin((() => {
33351
33367
  stepLabels: z$1.array(z$1.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
33352
33368
  summaryButtonText: z$1.string()
33353
33369
  });
33354
- eventRegistrationHydrationSchema = z$1.object({
33355
- occurrenceContext: occurrenceContextSchema$1.optional(),
33356
- subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
33357
- events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
33358
- maxTickets: z$1.string().optional(),
33359
- showVenue: z$1.boolean().optional(),
33360
- showCapacity: z$1.boolean().optional(),
33361
- successMessage: z$1.string().optional(),
33362
- waitlistMessage: z$1.string().optional(),
33363
- buttonVariant: registrationButtonVariantSchema.optional(),
33364
- overlayEnabled: z$1.boolean().optional(),
33365
- spamProtectionEnabled: z$1.boolean().optional(),
33366
- supportEmail: z$1.string().optional(),
33367
- sitePasses: publicPassProductCollectionSchema.nullable().optional(),
33368
- siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
33369
- });
33370
+ eventRegistrationHydrationSchema = z$1.object(eventRegistrationHydrationSchemaShape);
33370
33371
  eventRegistrationRenderSchema = z$1.object({
33371
33372
  display: eventRegistrationDisplaySchema,
33372
33373
  hydration: eventRegistrationHydrationSchema
@@ -33391,11 +33392,16 @@ var init_event_registration_interactive = __esmMin((() => {
33391
33392
  occurrenceContext: source.occurrenceContext ?? null,
33392
33393
  subject: source.subject ?? null,
33393
33394
  events: source.events ?? null,
33395
+ wholeSeriesOfferings: source.wholeSeriesOfferings ?? null,
33396
+ wholeSeriesOffering: source.wholeSeriesOffering ?? null,
33394
33397
  maxTickets: source.maxTickets ?? void 0,
33395
33398
  showVenue: source.showVenue,
33396
33399
  showCapacity: source.showCapacity,
33400
+ showSessions: source.showSessions,
33401
+ showPrice: source.showPrice,
33397
33402
  successMessage: source.successMessage,
33398
33403
  waitlistMessage: source.waitlistMessage,
33404
+ membershipMessage: source.membershipMessage,
33399
33405
  buttonVariant: source.buttonVariant,
33400
33406
  overlayEnabled: source.overlayEnabled,
33401
33407
  spamProtectionEnabled: source.spamProtectionEnabled,
@@ -33431,6 +33437,7 @@ init_shop_shared();
33431
33437
  init_defineBlock();
33432
33438
  init_event_registration_shared();
33433
33439
  init_event_registration_interactive();
33440
+ init_shared$4();
33434
33441
  const eventRegistrationBlockDefinition = {
33435
33442
  manifest: createBlockManifest({
33436
33443
  id: "block.event-registration",
@@ -33526,6 +33533,24 @@ const eventRegistrationBlockDefinition = {
33526
33533
  defaultValue: true,
33527
33534
  ui: { intent: "display" }
33528
33535
  },
33536
+ {
33537
+ id: "showSessions",
33538
+ type: "boolean",
33539
+ label: "Show complete schedule",
33540
+ description: "Display every session for whole-series registrations",
33541
+ required: false,
33542
+ defaultValue: true,
33543
+ ui: { intent: "display" }
33544
+ },
33545
+ {
33546
+ id: "showPrice",
33547
+ type: "boolean",
33548
+ label: "Show price",
33549
+ description: "Display the whole-series price",
33550
+ required: false,
33551
+ defaultValue: true,
33552
+ ui: { intent: "display" }
33553
+ },
33529
33554
  {
33530
33555
  id: "successMessage",
33531
33556
  type: "text",
@@ -33536,6 +33561,26 @@ const eventRegistrationBlockDefinition = {
33536
33561
  defaultValue: "Thank you for registering! Check your email for confirmation details.",
33537
33562
  maxLength: 500
33538
33563
  },
33564
+ {
33565
+ id: "waitlistMessage",
33566
+ type: "text",
33567
+ label: "Waitlist message",
33568
+ description: "Message shown after joining a whole-series waitlist",
33569
+ required: false,
33570
+ multiline: true,
33571
+ defaultValue: "You've been added to the waitlist. We'll email you if a place becomes available.",
33572
+ maxLength: 500
33573
+ },
33574
+ {
33575
+ id: "membershipMessage",
33576
+ type: "text",
33577
+ label: "Membership registration message",
33578
+ description: "Message shown when a whole-series place is covered by membership",
33579
+ required: false,
33580
+ multiline: true,
33581
+ defaultValue: "Registered using your membership. Check your email for session details.",
33582
+ maxLength: 500
33583
+ },
33539
33584
  {
33540
33585
  id: "buttonText",
33541
33586
  type: "text",
@@ -33567,8 +33612,11 @@ const eventRegistrationBlockDefinition = {
33567
33612
  } },
33568
33613
  showVenue: { $bind: { from: "content.showVenue" } },
33569
33614
  showCapacity: { $bind: { from: "content.showCapacity" } },
33615
+ showSessions: { $bind: { from: "content.showSessions" } },
33616
+ showPrice: { $bind: { from: "content.showPrice" } },
33570
33617
  successMessage: { $bind: { from: "content.successMessage" } },
33571
33618
  waitlistMessage: { $bind: { from: "content.waitlistMessage" } },
33619
+ membershipMessage: { $bind: { from: "content.membershipMessage" } },
33572
33620
  buttonText: { $bind: {
33573
33621
  from: "content.buttonText",
33574
33622
  fallback: "Complete Registration"
@@ -33582,6 +33630,7 @@ const eventRegistrationBlockDefinition = {
33582
33630
  fallback: false
33583
33631
  } },
33584
33632
  events: { $bind: { from: "data.events" } },
33633
+ wholeSeriesOffering: { $bind: { from: "data.wholeSeriesOffering.offering" } },
33585
33634
  sitePasses: { $bind: { from: "data.sitePasses" } },
33586
33635
  siteMemberships: { $bind: { from: "data.siteMemberships" } },
33587
33636
  stage: { $bind: {
@@ -33595,9 +33644,10 @@ const eventRegistrationBlockDefinition = {
33595
33644
  runtime: eventRegistrationBlockRuntime,
33596
33645
  dataSchemas: {
33597
33646
  events: publicEventsArraySchema.optional(),
33647
+ wholeSeriesOffering: z$1.object({ offering: publicCourseSchema }).optional(),
33598
33648
  sitePasses: publicPassProductCollectionSchema.optional(),
33599
33649
  siteMemberships: publicMembershipProductCollectionSchema.optional(),
33600
- occurrenceContext: occurrenceContextSchema$1.optional()
33650
+ occurrenceContext: occurrenceContextSchema.optional()
33601
33651
  },
33602
33652
  dataLoaders: {
33603
33653
  events: {
@@ -33610,11 +33660,23 @@ const eventRegistrationBlockDefinition = {
33610
33660
  fallback: "published"
33611
33661
  } },
33612
33662
  readProfile: "registration",
33613
- seriesId: { $bind: { from: "$root.occurrenceContext.seriesId" } },
33663
+ seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
33614
33664
  includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
33615
33665
  },
33616
33666
  mode: "server"
33617
33667
  },
33668
+ wholeSeriesOffering: {
33669
+ endpoint: "getPublicWholeSeriesOffering",
33670
+ params: {
33671
+ siteId: { $bind: { from: "$root.siteId" } },
33672
+ eventSeriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
33673
+ stage: { $bind: {
33674
+ from: "$root.previewStage",
33675
+ fallback: "published"
33676
+ } }
33677
+ },
33678
+ mode: "server"
33679
+ },
33618
33680
  sitePasses: {
33619
33681
  endpoint: "listPublicPasses",
33620
33682
  params: { siteId: { $bind: { from: "$root.siteId" } } },
@@ -35478,9 +35540,6 @@ function parseSignedNewsletterDestinationRef(value) {
35478
35540
  const trimmed = parseTrimmedString(value);
35479
35541
  return trimmed && SIGNED_DESTINATION_REF_PATTERN.test(trimmed) ? trimmed : null;
35480
35542
  }
35481
- function parseNewsletterSignupDestinationProvider(value) {
35482
- return value === "riverbank" || value === "mailchimp" ? value : null;
35483
- }
35484
35543
  function buildNewsletterSignupBlockRef(blockId) {
35485
35544
  const parsed = parseNewsletterSignupBlockId(blockId);
35486
35545
  return parsed ? {
@@ -35521,6 +35580,7 @@ function parseTrimmedString(value) {
35521
35580
  }
35522
35581
  var BLOCK_ID_PATTERN, SIGNED_DESTINATION_REF_PATTERN;
35523
35582
  var init_newsletter_signup_destination = __esmMin((() => {
35583
+ init_src$3();
35524
35584
  BLOCK_ID_PATTERN = /^[A-Za-z0-9._:-]{1,200}$/;
35525
35585
  SIGNED_DESTINATION_REF_PATTERN = /^[A-Za-z0-9._~-]{16,1000}$/;
35526
35586
  }));
@@ -35627,6 +35687,30 @@ function buildNewsletterDisplay(source) {
35627
35687
  fields: getPresetFields(preset, { includePhone })
35628
35688
  };
35629
35689
  }
35690
+ function projectNewsletterFormHydrationTarget(source) {
35691
+ switch (source.source) {
35692
+ case "block": {
35693
+ const destinationRef = buildNewsletterSignupBlockRef(source.blockId);
35694
+ if (destinationRef?.tag === "block_ref") return {
35695
+ tag: "block-source",
35696
+ destinationRef
35697
+ };
35698
+ return {
35699
+ tag: "legacy-direct-list",
35700
+ listId: source.listId ?? null
35701
+ };
35702
+ }
35703
+ case "signed-footer": return {
35704
+ tag: "signed-footer-source",
35705
+ destinationRef: source.destinationRef
35706
+ };
35707
+ case "legacy-direct-list": return {
35708
+ tag: "legacy-direct-list",
35709
+ listId: source.listId
35710
+ };
35711
+ default: return assertNever$20(source);
35712
+ }
35713
+ }
35630
35714
  function buildNewsletterFormInteractiveIslandProps(props) {
35631
35715
  return buildInteractiveIslandProps({
35632
35716
  runtime: newsletterFormBlockRuntime,
@@ -35648,8 +35732,9 @@ function parseRequiredSignedNewsletterDestinationRef(value) {
35648
35732
  if (!parsed) throw new Error("Newsletter signup signed destination ref requires token");
35649
35733
  return parsed;
35650
35734
  }
35651
- var newsletterPresetSchema, newsletterDestinationProviderSchema, newsletterButtonVariantSchema, newsletterFieldSchema, newsletterSignupBlockIdSchema, signedNewsletterDestinationRefSchema, newsletterPublicDestinationRefSchema, newsletterSourceSchema, newsletterDisplaySchema, newsletterHydrationSchema, newsletterRenderSchema, newsletterIslandMetaCodec, newsletterIslandMetaKeys, newsletterFormBlockRuntime, newsletterFormInteractiveIslandPropsCodec;
35735
+ var newsletterPresetSchema, newsletterDestinationProviderSchema, newsletterButtonVariantSchema, newsletterFieldSchema, newsletterSignupBlockIdSchema, signedNewsletterDestinationRefSchema, newsletterSourceCommonSchema, newsletterSourceSchema, newsletterDisplaySchema, newsletterHydrationSchema, newsletterRenderSchema, newsletterIslandMetaCodec, newsletterIslandMetaKeys, newsletterFormBlockRuntime, newsletterFormInteractiveIslandPropsCodec;
35652
35736
  var init_newsletter_form_interactive = __esmMin((() => {
35737
+ init_src$3();
35653
35738
  init_islands();
35654
35739
  init_runtime();
35655
35740
  init_newsletter_signup_destination();
@@ -35672,19 +35757,9 @@ var init_newsletter_form_interactive = __esmMin((() => {
35672
35757
  });
35673
35758
  newsletterSignupBlockIdSchema = z$1.string().trim().min(1).transform(parseRequiredNewsletterSignupBlockId);
35674
35759
  signedNewsletterDestinationRefSchema = z$1.string().trim().min(1).transform(parseRequiredSignedNewsletterDestinationRef);
35675
- newsletterPublicDestinationRefSchema = z$1.discriminatedUnion("tag", [z$1.object({
35676
- tag: z$1.literal("block_ref"),
35677
- blockId: newsletterSignupBlockIdSchema
35678
- }), z$1.object({
35679
- tag: z$1.literal("signed_destination_ref"),
35680
- token: signedNewsletterDestinationRefSchema
35681
- })]);
35682
- newsletterSourceSchema = z$1.object({
35683
- blockId: z$1.string().nullable().optional(),
35760
+ newsletterSourceCommonSchema = z$1.object({
35684
35761
  siteId: z$1.string().optional(),
35685
35762
  apiBaseUrl: z$1.string().optional(),
35686
- listId: z$1.string().nullable().optional(),
35687
- destinationProvider: newsletterDestinationProviderSchema.nullable().optional(),
35688
35763
  preset: newsletterPresetSchema.optional(),
35689
35764
  includePhone: z$1.boolean().optional(),
35690
35765
  buttonLabel: z$1.string().nullable().optional(),
@@ -35695,6 +35770,25 @@ var init_newsletter_form_interactive = __esmMin((() => {
35695
35770
  spamProtectionEnabled: z$1.boolean().optional(),
35696
35771
  className: z$1.string().nullable().optional()
35697
35772
  });
35773
+ newsletterSourceSchema = z$1.discriminatedUnion("source", [
35774
+ newsletterSourceCommonSchema.extend({
35775
+ source: z$1.literal("block"),
35776
+ blockId: z$1.string().nullable().optional(),
35777
+ listId: z$1.string().nullable().optional(),
35778
+ destinationProvider: newsletterDestinationProviderSchema.nullable().optional()
35779
+ }),
35780
+ newsletterSourceCommonSchema.extend({
35781
+ source: z$1.literal("signed-footer"),
35782
+ destinationRef: z$1.object({
35783
+ tag: z$1.literal("signed_destination_ref"),
35784
+ token: signedNewsletterDestinationRefSchema
35785
+ })
35786
+ }),
35787
+ newsletterSourceCommonSchema.extend({
35788
+ source: z$1.literal("legacy-direct-list"),
35789
+ listId: z$1.string().nullable()
35790
+ })
35791
+ ]);
35698
35792
  newsletterDisplaySchema = z$1.object({
35699
35793
  kind: z$1.literal("newsletter-form"),
35700
35794
  className: z$1.string().nullable(),
@@ -35705,8 +35799,26 @@ var init_newsletter_form_interactive = __esmMin((() => {
35705
35799
  fields: z$1.array(newsletterFieldSchema)
35706
35800
  });
35707
35801
  newsletterHydrationSchema = z$1.object({
35708
- destinationRef: newsletterPublicDestinationRefSchema.nullable().optional(),
35709
- listId: z$1.string().nullable().optional(),
35802
+ target: z$1.discriminatedUnion("tag", [
35803
+ z$1.object({
35804
+ tag: z$1.literal("block-source"),
35805
+ destinationRef: z$1.object({
35806
+ tag: z$1.literal("block_ref"),
35807
+ blockId: newsletterSignupBlockIdSchema
35808
+ }).nullable()
35809
+ }),
35810
+ z$1.object({
35811
+ tag: z$1.literal("signed-footer-source"),
35812
+ destinationRef: z$1.object({
35813
+ tag: z$1.literal("signed_destination_ref"),
35814
+ token: signedNewsletterDestinationRefSchema
35815
+ })
35816
+ }),
35817
+ z$1.object({
35818
+ tag: z$1.literal("legacy-direct-list"),
35819
+ listId: z$1.string().nullable()
35820
+ })
35821
+ ]),
35710
35822
  preset: newsletterPresetSchema,
35711
35823
  includePhone: z$1.boolean(),
35712
35824
  tags: z$1.string().nullable().optional(),
@@ -35728,15 +35840,14 @@ var init_newsletter_form_interactive = __esmMin((() => {
35728
35840
  render: createZodCodec(newsletterRenderSchema)
35729
35841
  },
35730
35842
  buildRender: (source) => {
35731
- const runtimeSource = deriveNewsletterSignupRuntimeSource(source);
35843
+ const runtimeSource = source.source === "block" ? deriveNewsletterSignupRuntimeSource(source) : null;
35732
35844
  return {
35733
35845
  display: buildNewsletterDisplay(source),
35734
35846
  hydration: {
35735
- destinationRef: buildNewsletterSignupBlockRef(source.blockId),
35736
- listId: runtimeSource.listId,
35847
+ target: projectNewsletterFormHydrationTarget(source),
35737
35848
  preset: source.preset ?? "emailOnly",
35738
35849
  includePhone: source.includePhone ?? false,
35739
- tags: runtimeSource.tags,
35850
+ tags: runtimeSource ? runtimeSource.tags : source.tags,
35740
35851
  spamProtectionEnabled: source.spamProtectionEnabled
35741
35852
  }
35742
35853
  };
@@ -38239,13 +38350,13 @@ init_newsletter_form_interactive();
38239
38350
  * Renders the newsletter signup form for SSR with hydration support.
38240
38351
  * Uses the islands architecture pattern to hydrate on the client.
38241
38352
  */
38242
- function NewsletterFormSSR({ blockId, siteId, apiBaseUrl, listId, destinationProvider, preset = "emailOnly", includePhone, buttonLabel = "Subscribe", buttonVariant = "primary", successMessage, privacyNote, tags, spamProtectionEnabled, className }) {
38353
+ function NewsletterFormSSR(props) {
38354
+ const { siteId, apiBaseUrl, preset = "emailOnly", includePhone, buttonLabel = "Subscribe", buttonVariant = "primary", successMessage, privacyNote, tags, spamProtectionEnabled, className } = props;
38355
+ const blockId = props.source === "block" ? props.blockId : null;
38243
38356
  const islandProps = buildNewsletterFormInteractiveIslandProps({
38244
- blockId,
38357
+ ...props,
38245
38358
  siteId,
38246
38359
  apiBaseUrl,
38247
- listId,
38248
- destinationProvider,
38249
38360
  preset,
38250
38361
  includePhone,
38251
38362
  buttonLabel,
@@ -104167,78 +104278,6 @@ var init_EventRegistrationWizard = __esmMin((() => {
104167
104278
  };
104168
104279
  }));
104169
104280
  //#endregion
104170
- //#region ../blocks/src/system/runtime/nodes/event-registration/PastOccurrenceNotice.tsx
104171
- function isPastOccurrence(startsAt) {
104172
- if (!startsAt) return false;
104173
- const startsAtTime = new Date(startsAt).getTime();
104174
- if (!Number.isFinite(startsAtTime)) return false;
104175
- return startsAtTime <= Date.now();
104176
- }
104177
- function getParentPathname(pathname) {
104178
- const segments = pathname.split("/").filter(Boolean);
104179
- if (segments.length < 2) return null;
104180
- return `/${segments.slice(0, -1).join("/")}`;
104181
- }
104182
- function PastOccurrenceNotice(props) {
104183
- const [parentPathname, setParentPathname] = useState(null);
104184
- useEffect(() => {
104185
- setParentPathname(getParentPathname(window.location.pathname));
104186
- }, []);
104187
- return /* @__PURE__ */ jsx("div", {
104188
- id: props.anchorId,
104189
- className: `event-registration ${props.className || ""}`,
104190
- "data-block": "event-registration",
104191
- children: /* @__PURE__ */ jsxs("div", {
104192
- className: "er-empty",
104193
- children: [/* @__PURE__ */ jsxs("p", {
104194
- className: "er-empty__text",
104195
- children: [
104196
- "This event date (",
104197
- formatEventDateTime(props.startsAt, { timeZone: props.timeZone ?? void 0 }),
104198
- ") has already started. Registration is closed."
104199
- ]
104200
- }), parentPathname && /* @__PURE__ */ jsx("p", {
104201
- className: "er-empty__text",
104202
- children: /* @__PURE__ */ jsx("a", {
104203
- href: parentPathname,
104204
- className: "er-link",
104205
- children: "View other dates for this event"
104206
- })
104207
- })]
104208
- })
104209
- });
104210
- }
104211
- var init_PastOccurrenceNotice = __esmMin((() => {
104212
- init_utils$1();
104213
- }));
104214
- //#endregion
104215
- //#region ../blocks/src/system/runtime/nodes/event-registration.client.tsx
104216
- function toEventRegistrationClientProps(props) {
104217
- return {
104218
- ...props.render.hydration,
104219
- buttonText: props.render.display.summaryButtonText,
104220
- className: props.render.display.className ?? void 0
104221
- };
104222
- }
104223
- var EventRegistrationClient, EventRegistrationIslandClient;
104224
- var init_event_registration_client = __esmMin((() => {
104225
- init_EventRegistrationWizard();
104226
- init_constants();
104227
- init_PastOccurrenceNotice();
104228
- EventRegistrationClient = (clientProps) => {
104229
- if (isPastOccurrence(clientProps.occurrenceContext?.startsAt) && clientProps.occurrenceContext?.startsAt) return /* @__PURE__ */ jsx(PastOccurrenceNotice, {
104230
- anchorId: EVENT_REGISTRATION_ANCHOR_ID,
104231
- className: clientProps.className,
104232
- startsAt: clientProps.occurrenceContext.startsAt,
104233
- timeZone: clientProps.events?.[0]?.timeZone ?? null
104234
- });
104235
- return /* @__PURE__ */ jsx(EventRegistrationWizard, { ...clientProps });
104236
- };
104237
- EventRegistrationIslandClient = (props) => {
104238
- return /* @__PURE__ */ jsx(EventRegistrationClient, { ...toEventRegistrationClientProps(props) });
104239
- };
104240
- }));
104241
- //#endregion
104242
104281
  //#region ../blocks/src/system/runtime/nodes/course-registration/utils.ts
104243
104282
  /**
104244
104283
  * Format a date string to a localized date.
@@ -106220,6 +106259,136 @@ var init_CourseRegistrationWizard = __esmMin((() => {
106220
106259
  init_DiscountCodeDisclosure();
106221
106260
  }));
106222
106261
  //#endregion
106262
+ //#region ../blocks/src/system/runtime/nodes/event-registration/registrationSurface.ts
106263
+ function planEventRegistrationSurface(input) {
106264
+ const scopedEvents = resolveEventRegistrationScopedEvents(input.events, {
106265
+ occurrenceContext: input.occurrenceContext,
106266
+ subject: input.subject
106267
+ });
106268
+ const bookingScopes = new Set(scopedEvents.map((event) => event.bookingScope));
106269
+ if (!input.occurrenceContext && !input.subject && bookingScopes.has("single_occurrence")) return {
106270
+ kind: "occurrence",
106271
+ events: scopedEvents.filter((event) => event.bookingScope === "single_occurrence")
106272
+ };
106273
+ if (bookingScopes.size === 0 || bookingScopes.has("single_occurrence")) return bookingScopes.has("whole_series") ? { kind: "mixedBookingScopes" } : {
106274
+ kind: "occurrence",
106275
+ events: scopedEvents
106276
+ };
106277
+ const requiredSeriesIds = new Set(scopedEvents.map((event) => event.seriesId));
106278
+ const offerings = input.wholeSeriesOfferings.filter((offering) => requiredSeriesIds.has(offering.eventSeriesId));
106279
+ const loadedSeriesIds = new Set(offerings.map((offering) => offering.eventSeriesId));
106280
+ return [...requiredSeriesIds].every((seriesId) => loadedSeriesIds.has(seriesId)) && offerings.length > 0 ? {
106281
+ kind: "wholeSeries",
106282
+ offerings
106283
+ } : { kind: "unavailableWholeSeries" };
106284
+ }
106285
+ var init_registrationSurface = __esmMin((() => {
106286
+ init_eventScope();
106287
+ }));
106288
+ //#endregion
106289
+ //#region ../blocks/src/system/runtime/nodes/event-registration/PastOccurrenceNotice.tsx
106290
+ function isPastOccurrence(startsAt) {
106291
+ if (!startsAt) return false;
106292
+ const startsAtTime = new Date(startsAt).getTime();
106293
+ if (!Number.isFinite(startsAtTime)) return false;
106294
+ return startsAtTime <= Date.now();
106295
+ }
106296
+ function getParentPathname(pathname) {
106297
+ const segments = pathname.split("/").filter(Boolean);
106298
+ if (segments.length < 2) return null;
106299
+ return `/${segments.slice(0, -1).join("/")}`;
106300
+ }
106301
+ function PastOccurrenceNotice(props) {
106302
+ const [parentPathname, setParentPathname] = useState(null);
106303
+ useEffect(() => {
106304
+ setParentPathname(getParentPathname(window.location.pathname));
106305
+ }, []);
106306
+ return /* @__PURE__ */ jsx("div", {
106307
+ id: props.anchorId,
106308
+ className: `event-registration ${props.className || ""}`,
106309
+ "data-block": "event-registration",
106310
+ children: /* @__PURE__ */ jsxs("div", {
106311
+ className: "er-empty",
106312
+ children: [/* @__PURE__ */ jsxs("p", {
106313
+ className: "er-empty__text",
106314
+ children: [
106315
+ "This event date (",
106316
+ formatEventDateTime(props.startsAt, { timeZone: props.timeZone ?? void 0 }),
106317
+ ") has already started. Registration is closed."
106318
+ ]
106319
+ }), parentPathname && /* @__PURE__ */ jsx("p", {
106320
+ className: "er-empty__text",
106321
+ children: /* @__PURE__ */ jsx("a", {
106322
+ href: parentPathname,
106323
+ className: "er-link",
106324
+ children: "View other dates for this event"
106325
+ })
106326
+ })]
106327
+ })
106328
+ });
106329
+ }
106330
+ var init_PastOccurrenceNotice = __esmMin((() => {
106331
+ init_utils$1();
106332
+ }));
106333
+ //#endregion
106334
+ //#region ../blocks/src/system/runtime/nodes/event-registration.client.tsx
106335
+ function toEventRegistrationClientProps(props) {
106336
+ return {
106337
+ ...props.render.hydration,
106338
+ buttonText: props.render.display.summaryButtonText,
106339
+ className: props.render.display.className ?? void 0
106340
+ };
106341
+ }
106342
+ var EventRegistrationClient, EventRegistrationIslandClient;
106343
+ var init_event_registration_client = __esmMin((() => {
106344
+ init_EventRegistrationWizard();
106345
+ init_CourseRegistrationErrorBoundary();
106346
+ init_CourseRegistrationWizard();
106347
+ init_registrationSurface();
106348
+ init_constants();
106349
+ init_PastOccurrenceNotice();
106350
+ EventRegistrationClient = (clientProps) => {
106351
+ const surface = planEventRegistrationSurface({
106352
+ events: clientProps.events ?? [],
106353
+ wholeSeriesOfferings: clientProps.wholeSeriesOffering ? [clientProps.wholeSeriesOffering] : clientProps.wholeSeriesOfferings ?? [],
106354
+ occurrenceContext: clientProps.occurrenceContext,
106355
+ subject: clientProps.subject
106356
+ });
106357
+ if (surface.kind === "wholeSeries") return /* @__PURE__ */ jsx(CourseRegistrationErrorBoundary, {
106358
+ className: clientProps.className,
106359
+ children: /* @__PURE__ */ jsx(CourseRegistrationWizard, {
106360
+ subject: clientProps.subject,
106361
+ courses: [...surface.offerings],
106362
+ showSessions: clientProps.showSessions,
106363
+ showPrice: clientProps.showPrice,
106364
+ showCapacity: clientProps.showCapacity,
106365
+ showVenue: clientProps.showVenue,
106366
+ successMessage: clientProps.successMessage,
106367
+ waitlistMessage: clientProps.waitlistMessage,
106368
+ membershipMessage: clientProps.membershipMessage,
106369
+ buttonText: clientProps.buttonText,
106370
+ buttonVariant: clientProps.buttonVariant,
106371
+ className: clientProps.className
106372
+ })
106373
+ });
106374
+ if (surface.kind === "unavailableWholeSeries" || surface.kind === "mixedBookingScopes") return /* @__PURE__ */ jsx("div", {
106375
+ className: clientProps.className,
106376
+ role: "status",
106377
+ children: "Registration is temporarily unavailable. Please refresh the page or try again shortly."
106378
+ });
106379
+ if (isPastOccurrence(clientProps.occurrenceContext?.startsAt) && clientProps.occurrenceContext?.startsAt) return /* @__PURE__ */ jsx(PastOccurrenceNotice, {
106380
+ anchorId: EVENT_REGISTRATION_ANCHOR_ID,
106381
+ className: clientProps.className,
106382
+ startsAt: clientProps.occurrenceContext.startsAt,
106383
+ timeZone: clientProps.events?.[0]?.timeZone ?? null
106384
+ });
106385
+ return /* @__PURE__ */ jsx(EventRegistrationWizard, { ...clientProps });
106386
+ };
106387
+ EventRegistrationIslandClient = (props) => {
106388
+ return /* @__PURE__ */ jsx(EventRegistrationClient, { ...toEventRegistrationClientProps(props) });
106389
+ };
106390
+ }));
106391
+ //#endregion
106223
106392
  //#region ../blocks/src/system/runtime/nodes/course-registration.client.tsx
106224
106393
  function toCourseRegistrationClientProps(props) {
106225
106394
  return {
@@ -114498,6 +114667,44 @@ function useImageResolveContextOptional() {
114498
114667
  return useContext(ImageResolveContext);
114499
114668
  }
114500
114669
  //#endregion
114670
+ //#region ../blocks/src/system/runtime/nodes/mergeResolveImageUrlContexts.ts
114671
+ init_src$2();
114672
+ function normalizedIdentifier(asset) {
114673
+ return (typeof asset.identifier === "string" ? asset.identifier.trim() : "") || void 0;
114674
+ }
114675
+ function indexAssets(index) {
114676
+ if (!index) return [];
114677
+ const assetsById = /* @__PURE__ */ new Map();
114678
+ for (const asset of [...index.byId.values(), ...index.byIdentifier.values()]) assetsById.set(asset.id, asset);
114679
+ return [...assetsById.values()];
114680
+ }
114681
+ function mergeAssetIndexes(baseline, live) {
114682
+ if (!baseline) return live;
114683
+ if (!live) return baseline;
114684
+ let merged = [...indexAssets(baseline)];
114685
+ for (const liveAsset of indexAssets(live)) {
114686
+ const liveIdentifier = normalizedIdentifier(liveAsset);
114687
+ merged = merged.filter((asset) => asset.id !== liveAsset.id && (liveIdentifier === void 0 || normalizedIdentifier(asset) !== liveIdentifier));
114688
+ merged.push(liveAsset);
114689
+ }
114690
+ return buildRenderableMediaAssetIndex(merged);
114691
+ }
114692
+ /**
114693
+ * Combines a render snapshot with client registrations without changing the
114694
+ * persisted media value. Live registrations are authoritative for both asset
114695
+ * IDs and identifiers. Contexts for different known sites never share indexes.
114696
+ */
114697
+ function mergeResolveImageUrlContexts(baseline, live) {
114698
+ if (!baseline) return live ?? void 0;
114699
+ if (!live) return baseline;
114700
+ const sitesConflict = baseline.siteId !== void 0 && live.siteId !== void 0 && baseline.siteId !== live.siteId;
114701
+ return {
114702
+ supabaseUrl: live.supabaseUrl ?? baseline.supabaseUrl,
114703
+ siteId: live.siteId ?? baseline.siteId,
114704
+ mediaAssetIndex: sitesConflict ? live.mediaAssetIndex : mergeAssetIndexes(baseline.mediaAssetIndex, live.mediaAssetIndex)
114705
+ };
114706
+ }
114707
+ //#endregion
114501
114708
  //#region ../blocks/src/system/runtime/nodes/media.client.tsx
114502
114709
  /**
114503
114710
  * Client MediaNode component with error handling.
@@ -114521,11 +114728,16 @@ const FALLBACK_IMAGE_DATA_URL = "data:image/svg+xml;charset=utf-8," + encodeURIC
114521
114728
  </g>
114522
114729
  </svg>`);
114523
114730
  const MediaNode = ({ value, className, style, videoPlayback = "inline", loading = "lazy", fetchPriority, size = ImagePresets.full, fieldPath, blockKind, blockContent, imageResolveContext: explicitImageResolveContext }) => {
114524
- const contextImageResolveContext = useImageResolveContextOptional();
114525
- const imageResolveContext = explicitImageResolveContext ?? contextImageResolveContext;
114731
+ const imageResolveContext = mergeResolveImageUrlContexts(explicitImageResolveContext, useImageResolveContextOptional());
114526
114732
  if (!value) return null;
114527
- if (value.type === "video") return renderVideo(value, className, style, imageResolveContext, { playback: videoPlayback });
114528
- if (value.type === "audio") return renderAudio(value, className, style, imageResolveContext);
114733
+ switch (value.type) {
114734
+ case "video": return renderVideo(value, className, style, imageResolveContext, { playback: videoPlayback });
114735
+ case "audio": return renderAudio(value, className, style, imageResolveContext);
114736
+ case "image":
114737
+ case "archive":
114738
+ case "document":
114739
+ case "spreadsheet": break;
114740
+ }
114529
114741
  const { imageUrl, responsive, transformAspectRatio, resolvedTransform, isProxy } = resolveMediaNodeResponsiveImage(value, size, style, {
114530
114742
  fieldPath,
114531
114743
  blockKind,
@@ -114629,24 +114841,34 @@ function mapNewsletterFormFieldsToSubscriberInput(fields) {
114629
114841
  };
114630
114842
  }
114631
114843
  function resolveNewsletterSubmitTarget(input) {
114632
- const listId = input.listId?.trim();
114633
- if (input.destinationRef) return {
114634
- tag: "ready",
114635
- target: {
114636
- tag: "published_block_ref",
114637
- destinationRef: input.destinationRef
114844
+ switch (input.tag) {
114845
+ case "block-source": return input.destinationRef ? publishedDestinationTarget(input.destinationRef) : {
114846
+ tag: "unavailable",
114847
+ reason: "missing_block_source"
114848
+ };
114849
+ case "signed-footer-source": return publishedDestinationTarget(input.destinationRef);
114850
+ case "legacy-direct-list": {
114851
+ const listId = input.listId?.trim();
114852
+ return listId ? {
114853
+ tag: "ready",
114854
+ target: {
114855
+ tag: "legacy_riverbank_list",
114856
+ listId
114857
+ }
114858
+ } : {
114859
+ tag: "unavailable",
114860
+ reason: "missing_legacy_list"
114861
+ };
114638
114862
  }
114639
- };
114640
- if (!listId) return {
114641
- tag: "unavailable",
114642
- reason: "missing_legacy_list"
114643
- };
114863
+ default: return assertNever$20(input);
114864
+ }
114865
+ }
114866
+ function publishedDestinationTarget(destinationRef) {
114644
114867
  return {
114645
114868
  tag: "ready",
114646
114869
  target: {
114647
- tag: "legacy_riverbank_list",
114648
- listId,
114649
- destinationRef: input.destinationRef ?? void 0
114870
+ tag: "published_block_ref",
114871
+ destinationRef
114650
114872
  }
114651
114873
  };
114652
114874
  }
@@ -114657,7 +114879,9 @@ function readOptionalSubmittedText(value) {
114657
114879
  function readSubmittedText(value) {
114658
114880
  return typeof value === "string" ? value.trim() : "";
114659
114881
  }
114660
- var init_newsletter_form_submission = __esmMin((() => {}));
114882
+ var init_newsletter_form_submission = __esmMin((() => {
114883
+ init_src$3();
114884
+ }));
114661
114885
  //#endregion
114662
114886
  //#region ../blocks/src/system/runtime/nodes/newsletter-form.client.tsx
114663
114887
  function NewsletterFormClient({ render }) {
@@ -114690,10 +114914,7 @@ function NewsletterFormClient({ render }) {
114690
114914
  });
114691
114915
  return;
114692
114916
  }
114693
- const submitTarget = resolveNewsletterSubmitTarget({
114694
- listId: render.hydration.listId,
114695
- destinationRef: render.hydration.destinationRef
114696
- });
114917
+ const submitTarget = resolveNewsletterSubmitTarget(render.hydration.target);
114697
114918
  if (submitTarget.tag === "unavailable") {
114698
114919
  dispatchSubmission({
114699
114920
  type: "failed",
@@ -115072,12 +115293,18 @@ init_colorConversion();
115072
115293
  init_generateBaseCSS();
115073
115294
  init_generateEffectsCSS();
115074
115295
  //#endregion
115296
+ //#region ../theme-core/src/header/surfaceRules.ts
115297
+ init_shared$5();
115298
+ init_colorStyles();
115299
+ //#endregion
115075
115300
  //#region ../theme-core/src/header/generateHeaderCss.ts
115076
115301
  init_resolver$1();
115077
115302
  init_siteChromeNavPreferences();
115078
115303
  init_shared$5();
115079
115304
  init_breakpoints();
115080
115305
  init_navDropdownSizing();
115306
+ init_scrollTreatment();
115307
+ init_paintTargets();
115081
115308
  //#endregion
115082
115309
  //#region ../theme-core/src/footer/generateFooterCss.ts
115083
115310
  init_resolver$1();
@@ -115952,7 +116179,7 @@ function isSafeHttpsUrl(value) {
115952
116179
  }
115953
116180
  //#endregion
115954
116181
  //#region ../blocks/src/system/blocks/event-details.ts
115955
- var occurrenceContextSchema, eventAutoApplyDiscountPreviewBaseSchema, eventAutoApplyDiscountPreviewSchema;
116182
+ var eventAutoApplyDiscountPreviewBaseSchema, eventAutoApplyDiscountPreviewSchema;
115956
116183
  var init_event_details = __esmMin((() => {
115957
116184
  init_builder$2();
115958
116185
  init_styledSection();
@@ -115960,6 +116187,7 @@ var init_event_details = __esmMin((() => {
115960
116187
  init_shared$2();
115961
116188
  init_shop_shared();
115962
116189
  init_defineBlock();
116190
+ init_event_registration_shared();
115963
116191
  createBlockManifest({
115964
116192
  id: "block.event-details",
115965
116193
  version: "1.0.0",
@@ -116114,15 +116342,6 @@ var init_event_details = __esmMin((() => {
116114
116342
  })], { gap: "lg" })
116115
116343
  })]
116116
116344
  });
116117
- occurrenceContextSchema = z$1.object({
116118
- id: z$1.string(),
116119
- seriesId: z$1.string(),
116120
- startsAt: z$1.string(),
116121
- endsAt: z$1.string(),
116122
- timeZone: z$1.string(),
116123
- capacityOverride: z$1.number().nullable().optional(),
116124
- overrides: z$1.record(z$1.string(), z$1.unknown()).nullable().optional()
116125
- }).nullable();
116126
116345
  eventAutoApplyDiscountPreviewBaseSchema = z$1.object({
116127
116346
  id: z$1.string(),
116128
116347
  publicLabel: z$1.string(),
@@ -116526,6 +116745,7 @@ var init_carousel = __esmMin((() => {
116526
116745
  var init_form$1 = __esmMin((() => {
116527
116746
  init_api();
116528
116747
  init_form_client();
116748
+ init_form_interactive();
116529
116749
  }));
116530
116750
  //#endregion
116531
116751
  //#region src/rendering/islands/enhancers/form.tsx
@@ -116996,6 +117216,7 @@ var init_shop = __esmMin((() => {
116996
117216
  var init_newsletter_form = __esmMin((() => {
116997
117217
  init_api();
116998
117218
  init_newsletter_form_client();
117219
+ init_newsletter_form_interactive();
116999
117220
  }));
117000
117221
  //#endregion
117001
117222
  //#region src/rendering/islands/enhancers/newsletterForm.tsx
@@ -117035,7 +117256,6 @@ var init_newsletterForm = __esmMin((() => {
117035
117256
  const { siteId, apiBaseUrl, render } = props;
117036
117257
  if (!siteId) throw new Error("[sdk:islands] newsletter-form requires siteId");
117037
117258
  if (!apiBaseUrl) throw new Error("[sdk:islands] newsletter-form requires apiBaseUrl");
117038
- if (!render.hydration.listId) throw new Error("[sdk:islands] newsletter-form requires listId");
117039
117259
  const apiConfig = {
117040
117260
  baseUrl: apiBaseUrl,
117041
117261
  auth: { type: "none" },