@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
@@ -1598,6 +1598,11 @@ function toLocationCoordinates(value) {
1598
1598
  lng: value.lng
1599
1599
  };
1600
1600
  }
1601
+ //#endregion
1602
+ //#region ../core/src/newsletter-signup-destination.ts
1603
+ function parseNewsletterSignupDestinationProvider(value) {
1604
+ return value === "riverbank" || value === "mailchimp" ? value : null;
1605
+ }
1601
1606
  z$1.object({
1602
1607
  formulaVersion: z$1.literal("managed-domain-overage-v1"),
1603
1608
  conversionRule: z$1.literal("usd-to-gbp-1-to-1-v1"),
@@ -3058,7 +3063,7 @@ function canonicalPaletteHashInput(colors, mode) {
3058
3063
  return `${mode}|${paletteColorFingerprint(colors)}`;
3059
3064
  }
3060
3065
  /**
3061
- * The shared TypeScript/SQL protocol. Do not reorder roles: the order comes
3066
+ * Stable curated-catalogue identity. Do not reorder roles: the order comes
3062
3067
  * from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
3063
3068
  */
3064
3069
  function paletteValueKey(colors, mode) {
@@ -4518,8 +4523,6 @@ const VARIANT_ROLES = [
4518
4523
  "secondary",
4519
4524
  "outline",
4520
4525
  "ghost",
4521
- "link",
4522
- "tertiary",
4523
4526
  "accent"
4524
4527
  ];
4525
4528
  /**
@@ -4528,7 +4531,7 @@ const VARIANT_ROLES = [
4528
4531
  * IDs become class selectors, so keep the contract deliberately narrower than
4529
4532
  * an arbitrary string and shared with every authoring/runtime boundary.
4530
4533
  */
4531
- const buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only");
4534
+ const 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" });
4532
4535
  function parseOpaqueButtonColourToken(value) {
4533
4536
  const token = parseThemeColorToken(value);
4534
4537
  if (token === null) return null;
@@ -4931,6 +4934,59 @@ function surfaceForegroundStyle(input) {
4931
4934
  [SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting
4932
4935
  };
4933
4936
  }
4937
+ shadeBackgroundEffect({
4938
+ id: "darken-background",
4939
+ name: "Darken on Hover",
4940
+ description: "Darkens the background color on hover",
4941
+ label: "Darken Amount (shade step)",
4942
+ shadeDirection: 1
4943
+ });
4944
+ shadeBackgroundEffect({
4945
+ id: "lighten-background",
4946
+ name: "Lighten on Hover",
4947
+ description: "Lightens the background color on hover",
4948
+ label: "Lighten Amount (shade step)",
4949
+ shadeDirection: -1
4950
+ });
4951
+ function shadeBackgroundEffect(config) {
4952
+ return {
4953
+ id: config.id,
4954
+ name: config.name,
4955
+ description: config.description,
4956
+ category: "background",
4957
+ pseudoElement: "none",
4958
+ applicableTo: ["button"],
4959
+ customizableOption: {
4960
+ name: "amount",
4961
+ type: "select",
4962
+ label: config.label,
4963
+ default: 100,
4964
+ options: [
4965
+ 0,
4966
+ 100,
4967
+ 200,
4968
+ 300,
4969
+ 400,
4970
+ 500,
4971
+ 600,
4972
+ 700,
4973
+ 800,
4974
+ 900
4975
+ ]
4976
+ },
4977
+ isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
4978
+ generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
4979
+ if (buttonConfig.background.type !== "solid") return "";
4980
+ const amount = (options.amount || 100) * config.shadeDirection;
4981
+ const baseToken = buttonConfig.background.colorToken ?? "primary-500";
4982
+ return `
4983
+ :where([data-theme-scope="${themeId}"]) .${variantId}:hover {
4984
+ background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
4985
+ }
4986
+ `;
4987
+ }
4988
+ };
4989
+ }
4934
4990
  buttonSizeNameSchema.options;
4935
4991
  //#endregion
4936
4992
  //#region ../theme-core/src/buttons/styles/domain.ts
@@ -7745,6 +7801,60 @@ function resolveThemeColorReferenceValue(input, context) {
7745
7801
  const reference = parseThemeColorReference(input, context);
7746
7802
  return reference.kind === "literal-css" ? reference.value : rgbColorValue(reference.token);
7747
7803
  }
7804
+ const BREAKPOINT_LG = 1024;
7805
+ const BREAKPOINT_XL = 1280;
7806
+ const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
7807
+ function mqUp(px) {
7808
+ return `(min-width: ${px}px)`;
7809
+ }
7810
+ function mqDown(px) {
7811
+ return `(max-width: ${px}px)`;
7812
+ }
7813
+ function mqBetween(minPx, maxPx) {
7814
+ return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
7815
+ }
7816
+ mqUp(640);
7817
+ mqUp(768);
7818
+ mqUp(BREAKPOINT_LG);
7819
+ mqUp(BREAKPOINT_XL);
7820
+ mqDown(639);
7821
+ mqDown(767);
7822
+ mqDown(BREAKPOINT_LG_DOWN);
7823
+ mqBetween(640, BREAKPOINT_LG_DOWN);
7824
+ mqDown(640);
7825
+ mqDown(768);
7826
+ //#endregion
7827
+ //#region ../theme-core/src/header/scrollTreatment.ts
7828
+ const headerScrollTreatmentSchema = z$1.discriminatedUnion("kind", [z$1.object({
7829
+ kind: z$1.literal("contrast-glass"),
7830
+ backgroundTone: z$1.enum(["light", "dark"])
7831
+ })]).optional();
7832
+ //#endregion
7833
+ //#region ../theme-core/src/header/containerSchema.ts
7834
+ const headerContainerSchema = z$1.object({
7835
+ rounded: z$1.enum([
7836
+ "none",
7837
+ "sm",
7838
+ "md",
7839
+ "lg",
7840
+ "xl",
7841
+ "2xl"
7842
+ ]).default("xl"),
7843
+ border: z$1.boolean().default(true),
7844
+ shadow: z$1.boolean().default(true),
7845
+ padding: z$1.enum([
7846
+ "sm",
7847
+ "md",
7848
+ "lg"
7849
+ ]).default("md"),
7850
+ tint: z$1.string().nullable().optional(),
7851
+ opacity: z$1.number().min(0).max(1).default(.12)
7852
+ }).optional();
7853
+ const headerInteractionPaletteSchema = z$1.enum([
7854
+ "primary",
7855
+ "secondary",
7856
+ "accent"
7857
+ ]);
7748
7858
  //#endregion
7749
7859
  //#region ../theme-core/src/schema.ts
7750
7860
  const axesSchema = z$1.object({
@@ -8154,25 +8264,6 @@ const navFontWeight = z$1.enum([
8154
8264
  ]);
8155
8265
  const headerMaxWidth = z$1.enum(["container", "full"]);
8156
8266
  const headerBarFrame = z$1.enum(["full-bleed", "inset-shell"]);
8157
- const headerContainerSchema = z$1.object({
8158
- rounded: z$1.enum([
8159
- "none",
8160
- "sm",
8161
- "md",
8162
- "lg",
8163
- "xl",
8164
- "2xl"
8165
- ]).default("xl"),
8166
- border: z$1.boolean().default(true),
8167
- shadow: z$1.boolean().default(true),
8168
- padding: z$1.enum([
8169
- "sm",
8170
- "md",
8171
- "lg"
8172
- ]).default("md"),
8173
- tint: z$1.string().nullable().optional(),
8174
- opacity: z$1.number().min(0).max(1).default(.12)
8175
- }).optional();
8176
8267
  const headerBorderSchema = componentBorderSchema.extend({ position: z$1.enum([
8177
8268
  "bottom",
8178
8269
  "top",
@@ -8299,6 +8390,7 @@ const headerSchema = z$1.object({
8299
8390
  shrinkOnScroll: z$1.boolean(),
8300
8391
  maxWidth: headerMaxWidth,
8301
8392
  barFrame: headerBarFrame.optional(),
8393
+ scrollTreatment: headerScrollTreatmentSchema,
8302
8394
  logoOverride: mediaSchema$1.nullable().optional(),
8303
8395
  background: headerBackgroundSchema.default({
8304
8396
  type: "color",
@@ -8311,6 +8403,7 @@ const headerSchema = z$1.object({
8311
8403
  navFontRole: z$1.enum(["body", "heading"]).optional(),
8312
8404
  navTypography: z$1.enum(["body", "heading"]).optional(),
8313
8405
  navTextSize: navLinkStyleSchema.shape.textSize,
8406
+ interactionPalette: headerInteractionPaletteSchema.optional(),
8314
8407
  navPlacement: z$1.enum(["end", "center"]).optional(),
8315
8408
  container: headerContainerSchema,
8316
8409
  border: headerBorderSchema,
@@ -8603,770 +8696,669 @@ z$1.object({
8603
8696
  themes: z$1.array(themeSchema).length(3)
8604
8697
  });
8605
8698
  //#endregion
8699
+ //#region ../theme-core/src/site-styles/lookOptionGroups.ts
8700
+ function defineLookOptionGroup(group) {
8701
+ defaultOption(group);
8702
+ return group;
8703
+ }
8704
+ function defaultOption(group) {
8705
+ const option = group.options.find((candidate) => candidate.id === group.defaultOptionId);
8706
+ if (option) return option;
8707
+ throw new Error(`Look option group "${group.id}" defaults to missing option "${group.defaultOptionId}".`);
8708
+ }
8709
+ //#endregion
8606
8710
  //#region ../theme-core/src/site-styles/appearancePresetResolution.ts
8607
8711
  function assertValidOptionGroups(preset) {
8608
8712
  preset.optionGroups?.forEach((group) => {
8609
- 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}".`);
8713
+ defineLookOptionGroup(group);
8610
8714
  });
8611
8715
  }
8612
8716
  function defineBlockAppearancePreset(preset) {
8613
8717
  assertValidOptionGroups(preset);
8614
8718
  return preset;
8615
8719
  }
8616
- [...[
8617
- defineBlockAppearancePreset({
8618
- kind: "block-design",
8619
- id: "hero-immersive-image",
8620
- target: "hero",
8621
- label: "Immersive image hero",
8622
- blockKinds: ["block.hero"],
8623
- constraints: { layoutFamilies: ["centered", "compact"] },
8624
- layoutPatches: [{
8625
- constraints: { layoutVariantKeys: ["micro"] },
8626
- designPatch: {
8627
- sectionHeight: "banner",
8628
- heroTypographyScale: "display"
8629
- }
8630
- }],
8631
- design: {
8632
- sectionSurface: "hero-image",
8633
- contentFrame: plainFrame,
8634
- itemSurface: "none",
8635
- sectionHeight: "hero",
8636
- heroComposition: "center",
8637
- heroTypographyScale: "display",
8638
- imageSurfaceTreatment: { kind: "neutral-wash" }
8720
+ //#endregion
8721
+ //#region ../theme-core/src/site-styles/blockAppearancePresets.ts
8722
+ const brandScrimOptionGroups = [{
8723
+ id: "image-surface-treatment",
8724
+ label: "Treatment",
8725
+ defaultOptionId: "brand-scrim-primary",
8726
+ options: [{
8727
+ id: "brand-scrim-primary",
8728
+ label: "Brand scrim",
8729
+ designPatch: { imageSurfaceTreatment: {
8730
+ kind: "brand-scrim",
8731
+ token: "primary"
8732
+ } }
8733
+ }, {
8734
+ id: "neutral-scrim",
8735
+ label: "Neutral scrim",
8736
+ designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8737
+ }]
8738
+ }];
8739
+ const microBannerLayoutPatches = [{
8740
+ constraints: { layoutVariantKeys: ["micro"] },
8741
+ designPatch: { sectionHeight: "banner" }
8742
+ }];
8743
+ defineBlockAppearancePreset({
8744
+ id: "hero-immersive-image",
8745
+ target: "hero",
8746
+ label: "Immersive image hero",
8747
+ blockKinds: ["block.hero"],
8748
+ constraints: { layoutFamilies: ["centered", "compact"] },
8749
+ layoutPatches: [{
8750
+ constraints: { layoutVariantKeys: ["micro"] },
8751
+ designPatch: {
8752
+ sectionHeight: "banner",
8753
+ heroTypographyScale: "display"
8639
8754
  }
8640
- }),
8641
- defineBlockAppearancePreset({
8642
- kind: "block-design",
8643
- id: "hero-bottom-left-panel",
8644
- target: "hero",
8645
- label: "Bottom-left panel hero",
8646
- blockKinds: ["block.hero"],
8647
- constraints: { layoutFamilies: ["centered", "compact"] },
8648
- optionGroups: [{
8649
- id: "image-surface-treatment",
8650
- label: "Treatment",
8651
- selectedOptionId: "neutral-scrim",
8652
- options: [{
8653
- id: "neutral-scrim",
8654
- label: "Neutral scrim",
8655
- designPatch: { imageSurfaceTreatment: {
8656
- kind: "neutral-scrim",
8657
- intensity: "balanced"
8658
- } }
8659
- }, {
8660
- id: "brand-scrim-primary",
8661
- label: "Brand scrim",
8662
- designPatch: { imageSurfaceTreatment: {
8663
- kind: "brand-scrim",
8664
- token: "primary",
8665
- intensity: "balanced"
8666
- } }
8667
- }]
8668
- }],
8669
- layoutPatches: [{
8670
- constraints: { layoutVariantKeys: ["micro"] },
8671
- designPatch: {
8672
- sectionHeight: "banner",
8673
- heroTypographyScale: "editorial"
8674
- }
8675
- }],
8676
- design: {
8677
- sectionSurface: "hero-image",
8678
- contentFrame: panelFrame("raised"),
8679
- itemSurface: "none",
8680
- sectionHeight: "immersive",
8681
- heroComposition: "bottom-left",
8682
- heroTypographyScale: "display",
8683
- imageSurfaceTreatment: {
8755
+ }],
8756
+ design: {
8757
+ sectionSurface: "hero-image",
8758
+ contentFrame: plainFrame,
8759
+ itemSurface: "none",
8760
+ sectionHeight: "hero",
8761
+ heroComposition: "center",
8762
+ heroTypographyScale: "display",
8763
+ imageSurfaceTreatment: { kind: "neutral-wash" }
8764
+ }
8765
+ }), defineBlockAppearancePreset({
8766
+ id: "hero-bottom-left-panel",
8767
+ target: "hero",
8768
+ label: "Bottom-left panel hero",
8769
+ blockKinds: ["block.hero"],
8770
+ constraints: { layoutFamilies: ["centered", "compact"] },
8771
+ optionGroups: [{
8772
+ id: "image-surface-treatment",
8773
+ label: "Treatment",
8774
+ defaultOptionId: "neutral-scrim",
8775
+ options: [{
8776
+ id: "neutral-scrim",
8777
+ label: "Neutral scrim",
8778
+ designPatch: { imageSurfaceTreatment: {
8684
8779
  kind: "neutral-scrim",
8685
8780
  intensity: "balanced"
8686
- }
8687
- }
8688
- }),
8689
- defineBlockAppearancePreset({
8690
- kind: "block-design",
8691
- id: "hero-poster-image",
8692
- target: "hero",
8693
- label: "Poster image hero",
8694
- blockKinds: ["block.hero"],
8695
- constraints: { layoutFamilies: ["centered", "compact"] },
8696
- layoutPatches: [{
8697
- constraints: { layoutVariantKeys: ["micro"] },
8698
- designPatch: {
8699
- sectionHeight: "banner",
8700
- heroTypographyScale: "display"
8701
- }
8702
- }],
8703
- design: {
8704
- sectionSurface: "hero-image",
8705
- contentFrame: plainFrame,
8706
- itemSurface: "none",
8707
- sectionHeight: "immersive",
8708
- heroComposition: "center",
8709
- heroTypographyScale: "poster",
8710
- imageSurfaceTreatment: {
8781
+ } }
8782
+ }, {
8783
+ id: "brand-scrim-primary",
8784
+ label: "Brand scrim",
8785
+ designPatch: { imageSurfaceTreatment: {
8711
8786
  kind: "brand-scrim",
8712
8787
  token: "primary",
8713
- intensity: "strong"
8714
- }
8715
- }
8716
- }),
8717
- defineBlockAppearancePreset({
8718
- kind: "block-design",
8719
- id: "hero-brand-scrim",
8720
- target: "hero",
8721
- label: "Brand scrim image hero",
8722
- blockKinds: ["block.hero"],
8723
- constraints: { layoutFamilies: ["centered", "compact"] },
8724
- optionGroups: [{
8725
- id: "image-surface-treatment",
8726
- label: "Treatment",
8727
- selectedOptionId: "brand-scrim-primary",
8728
- options: [{
8729
- id: "brand-scrim-primary",
8730
- label: "Brand scrim",
8731
- designPatch: { imageSurfaceTreatment: {
8732
- kind: "brand-scrim",
8733
- token: "primary"
8734
- } }
8735
- }, {
8736
- id: "neutral-scrim",
8737
- label: "Neutral scrim",
8738
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8739
- }]
8740
- }],
8741
- layoutPatches: [{
8742
- constraints: { layoutVariantKeys: ["micro"] },
8743
- designPatch: { sectionHeight: "banner" }
8744
- }],
8745
- design: {
8746
- sectionSurface: "hero-image",
8747
- contentFrame: plainFrame,
8748
- itemSurface: "none",
8749
- sectionHeight: "immersive",
8750
- heroComposition: "center",
8751
- heroTypographyScale: "display",
8752
- imageSurfaceTreatment: {
8753
- kind: "brand-scrim",
8754
- token: "primary"
8755
- }
8756
- }
8757
- }),
8758
- defineBlockAppearancePreset({
8759
- kind: "block-design",
8760
- id: "hero-brand-scrim-fixed-frame",
8761
- target: "hero",
8762
- label: "Fixed-frame brand scrim hero",
8763
- blockKinds: ["block.hero"],
8764
- constraints: { layoutFamilies: ["centered", "compact"] },
8765
- optionGroups: [{
8766
- id: "image-surface-treatment",
8767
- label: "Treatment",
8768
- selectedOptionId: "brand-scrim-primary",
8769
- options: [{
8770
- id: "brand-scrim-primary",
8771
- label: "Brand scrim",
8772
- designPatch: { imageSurfaceTreatment: {
8773
- kind: "brand-scrim",
8774
- token: "primary"
8775
- } }
8776
- }, {
8777
- id: "neutral-scrim",
8778
- label: "Neutral scrim",
8779
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8780
- }]
8781
- }],
8782
- layoutPatches: [{
8783
- constraints: { layoutVariantKeys: ["micro"] },
8784
- designPatch: { sectionHeight: "banner" }
8785
- }],
8786
- design: {
8787
- sectionSurface: "hero-image",
8788
- contentFrame: plainFrame,
8789
- itemSurface: "none",
8790
- sectionHeight: "immersive",
8791
- heroComposition: "center",
8792
- heroTypographyScale: "display",
8793
- imageSurfaceTreatment: {
8794
- kind: "brand-scrim",
8795
- token: "primary"
8796
- },
8797
- imageSurfaceMotion: "fixed-frame",
8798
- eyebrowTreatment: "accent-pill-bounce"
8799
- }
8800
- }),
8801
- defineBlockAppearancePreset({
8802
- kind: "block-design",
8803
- id: "hero-brand-depth-expressive",
8804
- target: "hero",
8805
- label: "Expressive brand-depth hero",
8806
- blockKinds: ["block.hero"],
8807
- constraints: { layoutFamilies: ["centered", "compact"] },
8808
- design: {
8809
- sectionSurface: "brand-depth-band",
8810
- contentFrame: plainFrame,
8811
- itemSurface: "none",
8812
- heroComposition: "center",
8813
- heroTypographyScale: "editorial",
8814
- eyebrowTreatment: "accent-pill-bounce"
8815
- }
8816
- }),
8817
- defineBlockAppearancePreset({
8818
- kind: "block-design",
8819
- id: "hero-contained-intro",
8820
- target: "hero",
8821
- label: "Contained intro hero",
8822
- blockKinds: ["block.hero"],
8823
- design: {
8824
- sectionSurface: "muted-band",
8825
- contentFrame: panelFrame("inset"),
8826
- itemSurface: "none",
8827
- heroComposition: "center",
8828
- heroTypographyScale: "editorial"
8829
- }
8830
- }),
8831
- defineBlockAppearancePreset({
8832
- kind: "block-design",
8833
- id: "hero-split-editorial",
8834
- target: "hero",
8835
- label: "Editorial split hero",
8836
- blockKinds: ["block.hero"],
8837
- constraints: { layoutFamilies: ["split"] },
8838
- design: {
8839
- sectionSurface: "base",
8840
- contentFrame: plainFrame,
8841
- itemSurface: "none",
8842
- heroTypographyScale: "editorial"
8843
- }
8844
- }),
8845
- defineBlockAppearancePreset({
8846
- kind: "block-design",
8847
- id: "hero-split-brand",
8848
- target: "hero",
8849
- label: "Brand split hero",
8850
- blockKinds: ["block.hero"],
8851
- constraints: { layoutFamilies: ["split"] },
8852
- design: {
8853
- sectionSurface: "brand-depth-band",
8854
- contentFrame: plainFrame,
8855
- itemSurface: "none",
8856
- heroTypographyScale: "display",
8857
- eyebrowTreatment: "accent-pill-bounce"
8858
- }
8859
- }),
8860
- defineBlockAppearancePreset({
8861
- kind: "block-design",
8862
- id: "hero-split-soft-panel",
8863
- target: "hero",
8864
- label: "Soft panel split hero",
8865
- blockKinds: ["block.hero"],
8866
- constraints: { layoutFamilies: ["split"] },
8867
- design: {
8868
- sectionSurface: "muted-band",
8869
- contentFrame: panelFrame("raised"),
8870
- itemSurface: "none",
8788
+ intensity: "balanced"
8789
+ } }
8790
+ }]
8791
+ }],
8792
+ layoutPatches: [{
8793
+ constraints: { layoutVariantKeys: ["micro"] },
8794
+ designPatch: {
8795
+ sectionHeight: "banner",
8871
8796
  heroTypographyScale: "editorial"
8872
8797
  }
8873
- }),
8874
- defineBlockAppearancePreset({
8875
- kind: "block-design",
8876
- id: "hero-split-accent",
8877
- target: "hero",
8878
- label: "Accent split hero",
8879
- blockKinds: ["block.hero"],
8880
- constraints: { layoutFamilies: ["split"] },
8881
- design: {
8882
- sectionSurface: "accent-band",
8883
- contentFrame: panelFrame("raised"),
8884
- itemSurface: "none",
8798
+ }],
8799
+ design: {
8800
+ sectionSurface: "hero-image",
8801
+ contentFrame: panelFrame("raised"),
8802
+ itemSurface: "none",
8803
+ sectionHeight: "immersive",
8804
+ heroComposition: "bottom-left",
8805
+ heroTypographyScale: "display",
8806
+ imageSurfaceTreatment: {
8807
+ kind: "neutral-scrim",
8808
+ intensity: "balanced"
8809
+ }
8810
+ }
8811
+ }), defineBlockAppearancePreset({
8812
+ id: "hero-poster-image",
8813
+ target: "hero",
8814
+ label: "Poster image hero",
8815
+ blockKinds: ["block.hero"],
8816
+ constraints: { layoutFamilies: ["centered", "compact"] },
8817
+ layoutPatches: [{
8818
+ constraints: { layoutVariantKeys: ["micro"] },
8819
+ designPatch: {
8820
+ sectionHeight: "banner",
8885
8821
  heroTypographyScale: "display"
8886
8822
  }
8887
- }),
8888
- defineBlockAppearancePreset({
8889
- kind: "block-design",
8890
- id: "intro-editorial-statement",
8891
- target: "intro",
8892
- label: "Editorial intro statement",
8893
- blockKinds: ["block.intro"],
8894
- constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
8895
- design: {
8896
- sectionSurface: "base",
8897
- contentFrame: plainFrame,
8898
- itemSurface: "none",
8899
- composition: {
8900
- kind: "intro",
8901
- treatment: "editorial-statement"
8902
- }
8903
- }
8904
- }),
8905
- defineBlockAppearancePreset({
8906
- kind: "block-design",
8907
- id: "intro-portrait-bio",
8908
- target: "intro",
8909
- label: "Portrait and bio",
8910
- blockKinds: ["block.intro"],
8911
- constraints: { layoutVariantKeys: ["media-copy"] },
8912
- design: {
8913
- sectionSurface: "base",
8914
- contentFrame: plainFrame,
8915
- itemSurface: "none",
8916
- composition: {
8917
- kind: "intro",
8918
- treatment: "portrait-bio"
8919
- }
8920
- }
8921
- }),
8922
- defineBlockAppearancePreset({
8923
- kind: "block-design",
8924
- id: "offerings-preview-default-cards",
8925
- target: "offerings",
8926
- label: "Default offering cards",
8927
- blockKinds: ["block.offerings-preview"],
8928
- design: {
8929
- sectionSurface: "base",
8930
- contentFrame: plainFrame,
8931
- itemSurface: "default"
8932
- }
8933
- }),
8934
- defineBlockAppearancePreset({
8935
- kind: "block-design",
8936
- id: "offerings-preview-secondary-cards",
8937
- target: "offerings",
8938
- label: "Secondary offering cards",
8939
- blockKinds: ["block.offerings-preview"],
8940
- design: {
8941
- sectionSurface: "muted-band",
8942
- contentFrame: plainFrame,
8943
- itemSurface: "inset"
8944
- }
8945
- }),
8946
- defineBlockAppearancePreset({
8947
- kind: "block-design",
8948
- id: "offerings-preview-non-carded",
8949
- target: "offerings",
8950
- label: "Non-carded offerings",
8951
- blockKinds: ["block.offerings-preview"],
8952
- design: {
8953
- sectionSurface: "muted-band",
8954
- contentFrame: plainFrame,
8955
- itemSurface: "editorial"
8956
- }
8957
- }),
8958
- defineBlockAppearancePreset({
8959
- kind: "block-design",
8960
- id: "offerings-preview-paired-feature-cards",
8961
- target: "offerings",
8962
- label: "Paired feature cards",
8963
- blockKinds: ["block.offerings-preview"],
8964
- constraints: { layoutVariantKeys: ["cards"] },
8965
- design: {
8966
- sectionSurface: "base",
8967
- contentFrame: plainFrame,
8968
- itemSurface: "none"
8969
- }
8970
- }),
8971
- defineBlockAppearancePreset({
8972
- kind: "block-design",
8973
- id: "offerings-preview-open-editorial-columns",
8974
- target: "offerings",
8975
- label: "Open editorial columns",
8976
- blockKinds: ["block.offerings-preview"],
8977
- constraints: { layoutVariantKeys: ["cards"] },
8978
- design: {
8979
- sectionSurface: "base",
8980
- contentFrame: plainFrame,
8981
- itemSurface: "none"
8982
- }
8983
- }),
8984
- defineBlockAppearancePreset({
8985
- kind: "block-design",
8986
- id: "offerings-preview-joined-programme-panel",
8987
- target: "offerings",
8988
- label: "Joined programme panel",
8989
- blockKinds: ["block.offerings-preview"],
8990
- constraints: { layoutVariantKeys: ["cards"] },
8991
- design: {
8992
- sectionSurface: "base",
8993
- contentFrame: plainFrame,
8994
- itemSurface: "none"
8995
- }
8996
- }),
8997
- defineBlockAppearancePreset({
8998
- kind: "block-design",
8999
- id: "feature-cards-raised-rule",
9000
- target: "feature-cards",
9001
- label: "Raised cards with rule",
9002
- blockKinds: ["block.feature-cards"],
9003
- design: {
9004
- sectionSurface: "base",
9005
- contentFrame: plainFrame,
9006
- itemSurface: "raised"
9007
- }
9008
- }),
9009
- defineBlockAppearancePreset({
9010
- kind: "block-design",
9011
- id: "feature-cards-bold-colors",
9012
- target: "feature-cards",
9013
- label: "Bold colour-blocked cards",
9014
- blockKinds: ["block.feature-cards"],
9015
- design: {
9016
- sectionSurface: "base",
9017
- contentFrame: plainFrame,
9018
- itemSurface: "color-blocked"
9019
- }
9020
- }),
9021
- defineBlockAppearancePreset({
9022
- kind: "block-design",
9023
- id: "feature-cards-editorial-columns",
9024
- target: "feature-cards",
9025
- label: "Editorial open columns",
9026
- blockKinds: ["block.feature-cards"],
9027
- design: {
9028
- sectionSurface: "base",
9029
- contentFrame: plainFrame,
9030
- itemSurface: "editorial"
9031
- }
9032
- }),
9033
- defineBlockAppearancePreset({
9034
- kind: "block-design",
9035
- id: "feature-cards-asymmetric-emphasis",
9036
- target: "feature-cards",
9037
- label: "Asymmetric emphasis pair",
9038
- blockKinds: ["block.feature-cards"],
9039
- constraints: { layoutFamilies: ["grid"] },
9040
- design: {
9041
- sectionSurface: "base",
9042
- contentFrame: plainFrame,
9043
- itemSurface: "none",
9044
- composition: {
9045
- kind: "feature-cards",
9046
- treatment: "asymmetric-emphasis"
9047
- }
9048
- }
9049
- }),
9050
- defineBlockAppearancePreset({
9051
- kind: "block-design",
9052
- id: "feature-cards-framed-programme",
9053
- target: "feature-cards",
9054
- label: "Framed programme cards",
9055
- blockKinds: ["block.feature-cards"],
9056
- constraints: { layoutFamilies: ["grid"] },
9057
- design: {
9058
- sectionSurface: "brand-depth-band",
9059
- contentFrame: plainFrame,
9060
- itemSurface: "inset",
9061
- composition: {
9062
- kind: "feature-cards",
9063
- treatment: "framed-programme"
9064
- }
9065
- }
9066
- }),
9067
- defineBlockAppearancePreset({
9068
- kind: "block-design",
9069
- id: "feature-cards-soft-panels",
9070
- target: "feature-cards",
9071
- label: "Soft tinted panels",
9072
- blockKinds: ["block.feature-cards"],
9073
- design: {
9074
- sectionSurface: "base",
9075
- contentFrame: plainFrame,
9076
- itemSurface: "inset"
9077
- }
9078
- }),
9079
- defineBlockAppearancePreset({
9080
- kind: "block-design",
9081
- id: "feature-cards-editorial-diptych",
9082
- target: "feature-cards",
9083
- label: "Editorial diptych",
9084
- blockKinds: ["block.feature-cards"],
9085
- constraints: { layoutVariantKeys: ["editorial-diptych"] },
9086
- design: {
9087
- sectionSurface: "base",
9088
- contentFrame: plainFrame,
9089
- itemSurface: "flat"
9090
- }
9091
- }),
9092
- defineBlockAppearancePreset({
9093
- kind: "block-design",
9094
- id: "feature-cards-editorial-pathways",
9095
- target: "feature-cards",
9096
- label: "Editorial pathways",
9097
- blockKinds: ["block.feature-cards"],
9098
- constraints: { layoutVariantKeys: ["editorial-pathways"] },
9099
- design: {
9100
- sectionSurface: "base",
9101
- contentFrame: plainFrame,
9102
- itemSurface: "flat"
9103
- }
9104
- }),
9105
- defineBlockAppearancePreset({
9106
- kind: "block-design",
9107
- id: "feature-cards-photo-tiles",
9108
- target: "feature-cards",
9109
- label: "Photo tiles",
9110
- blockKinds: ["block.feature-cards"],
9111
- design: {
9112
- sectionSurface: "base",
9113
- contentFrame: plainFrame,
9114
- itemSurface: "raised"
9115
- }
9116
- }),
9117
- defineBlockAppearancePreset({
9118
- kind: "block-design",
9119
- id: "events-lined-panel",
9120
- target: "events",
9121
- label: "Raised event panel",
9122
- blockKinds: ["block.event-calendar", "block.event-listing"],
9123
- design: {
9124
- sectionSurface: "base",
9125
- contentFrame: panelFrame("raised"),
9126
- itemSurface: "none"
9127
- }
9128
- }),
9129
- defineBlockAppearancePreset({
9130
- kind: "block-design",
9131
- id: "events-ruled-register",
9132
- target: "events",
9133
- label: "Ruled event register",
9134
- blockKinds: ["block.event-calendar", "block.event-listing"],
9135
- design: {
9136
- sectionSurface: "brand-depth-band",
9137
- contentFrame: plainFrame,
9138
- itemSurface: "none",
9139
- eventListTreatment: "ruled-register"
9140
- }
9141
- }),
9142
- defineBlockAppearancePreset({
9143
- kind: "block-design",
9144
- id: "events-editorial-register",
9145
- target: "events",
9146
- label: "Editorial event register",
9147
- blockKinds: ["block.event-calendar", "block.event-listing"],
9148
- design: {
9149
- sectionSurface: "base",
9150
- contentFrame: plainFrame,
9151
- itemSurface: "none",
9152
- eventListTreatment: "editorial-register"
9153
- }
9154
- }),
9155
- defineBlockAppearancePreset({
9156
- kind: "block-design",
9157
- id: "events-dense-index",
9158
- target: "events",
9159
- label: "Dense event index",
9160
- blockKinds: ["block.event-calendar", "block.event-listing"],
9161
- design: {
9162
- sectionSurface: "accent-band",
9163
- contentFrame: plainFrame,
9164
- itemSurface: "none",
9165
- eventListTreatment: "dense-index"
9166
- }
9167
- }),
9168
- defineBlockAppearancePreset({
9169
- kind: "block-design",
9170
- id: "schedule-details-brand-depth",
9171
- target: "events",
9172
- label: "Brand-depth schedule details",
9173
- blockKinds: ["block.event-details", "block.course-details"],
9174
- design: {
9175
- sectionSurface: "brand-depth-band",
9176
- contentFrame: plainFrame,
9177
- itemSurface: "none",
9178
- tileTreatment: "brand-depth"
9179
- }
9180
- }),
9181
- defineBlockAppearancePreset({
9182
- kind: "block-design",
9183
- id: "media-text-flush-feature",
9184
- target: "media-text",
9185
- label: "Flush media feature",
9186
- blockKinds: ["block.media-text"],
9187
- design: {
9188
- sectionSurface: "muted-band",
9189
- contentFrame: flushPanelFrame({ bleed: "start" }),
9190
- itemSurface: "none"
9191
- }
9192
- }),
9193
- defineBlockAppearancePreset({
9194
- kind: "block-design",
9195
- id: "testimonials-simple-cards",
9196
- target: "testimonials",
9197
- label: "Simple testimonial cards",
9198
- blockKinds: ["block.testimonials"],
9199
- design: {
9200
- sectionSurface: "base",
9201
- contentFrame: plainFrame,
9202
- itemSurface: "default"
9203
- }
9204
- }),
9205
- defineBlockAppearancePreset({
9206
- kind: "block-design",
9207
- id: "testimonials-raised-panel",
9208
- target: "testimonials",
9209
- label: "Raised testimonial panel",
9210
- blockKinds: ["block.testimonials"],
9211
- design: {
9212
- sectionSurface: "muted-band",
9213
- contentFrame: panelFrame("raised"),
9214
- itemSurface: "raised"
9215
- }
9216
- }),
9217
- defineBlockAppearancePreset({
9218
- kind: "block-design",
9219
- id: "testimonials-accent-panel",
9220
- target: "testimonials",
9221
- label: "Accent testimonial panel",
9222
- blockKinds: ["block.testimonials"],
9223
- design: {
9224
- sectionSurface: "accent-band",
9225
- contentFrame: panelFrame("raised"),
9226
- itemSurface: "raised"
9227
- }
9228
- }),
9229
- defineBlockAppearancePreset({
9230
- kind: "block-design",
9231
- id: "testimonials-default-cards",
9232
- target: "testimonials",
9233
- label: "Default cards",
9234
- blockKinds: ["block.testimonials"],
9235
- design: {
9236
- sectionSurface: "base",
9237
- contentFrame: plainFrame,
9238
- itemSurface: "none",
9239
- testimonialCardTreatment: "default"
9240
- }
9241
- }),
9242
- defineBlockAppearancePreset({
9243
- kind: "block-design",
9244
- id: "testimonials-statement-cards",
9245
- target: "testimonials",
9246
- label: "Statement cards",
9247
- blockKinds: ["block.testimonials"],
9248
- design: {
9249
- sectionSurface: "accent-band",
9250
- contentFrame: plainFrame,
9251
- itemSurface: "raised",
9252
- testimonialCardTreatment: "statement"
9253
- }
9254
- }),
9255
- defineBlockAppearancePreset({
9256
- kind: "block-design",
9257
- id: "testimonials-brand-statement-cards",
9258
- target: "testimonials",
9259
- label: "Brand statement cards",
9260
- blockKinds: ["block.testimonials"],
9261
- design: {
9262
- sectionSurface: "brand-depth-band",
9263
- contentFrame: plainFrame,
9264
- itemSurface: "raised",
9265
- testimonialCardTreatment: "statement"
9266
- }
9267
- }),
9268
- defineBlockAppearancePreset({
9269
- kind: "block-design",
9270
- id: "testimonials-non-carded",
9271
- target: "testimonials",
9272
- label: "Non-carded",
9273
- blockKinds: ["block.testimonials"],
9274
- design: {
9275
- sectionSurface: "muted-band",
9276
- contentFrame: plainFrame,
9277
- itemSurface: "none",
9278
- testimonialCardTreatment: "non-carded"
9279
- }
9280
- }),
9281
- defineBlockAppearancePreset({
9282
- kind: "block-design",
9283
- id: "testimonials-evergreen-lead",
9284
- target: "testimonials",
9285
- label: "Evergreen lead",
9286
- blockKinds: ["block.testimonials"],
9287
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9288
- design: {
9289
- sectionSurface: "base",
9290
- contentFrame: plainFrame,
9291
- itemSurface: "none"
9292
- }
9293
- }),
9294
- defineBlockAppearancePreset({
9295
- kind: "block-design",
9296
- id: "testimonials-room-and-response",
9297
- target: "testimonials",
9298
- label: "Room and response",
9299
- blockKinds: ["block.testimonials"],
9300
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9301
- design: {
9302
- sectionSurface: "base",
9303
- contentFrame: plainFrame,
9304
- itemSurface: "none"
9305
- }
9306
- }),
9307
- defineBlockAppearancePreset({
9308
- kind: "block-design",
9309
- id: "testimonials-open-floor",
9310
- target: "testimonials",
9311
- label: "Open floor",
9312
- blockKinds: ["block.testimonials"],
9313
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9314
- design: {
9315
- sectionSurface: "base",
9316
- contentFrame: plainFrame,
9317
- itemSurface: "none"
9318
- }
9319
- }),
9320
- defineBlockAppearancePreset({
9321
- kind: "block-design",
9322
- id: "faq-base-accordion",
9323
- target: "faq",
9324
- label: "Base accordion FAQ",
9325
- blockKinds: ["block.faq"],
9326
- design: {
9327
- sectionSurface: "base",
9328
- contentFrame: plainFrame,
9329
- itemSurface: "default"
9330
- }
9331
- }),
9332
- defineBlockAppearancePreset({
9333
- kind: "block-design",
9334
- id: "faq-contained-help",
9335
- target: "faq",
9336
- label: "Contained help panel",
9337
- blockKinds: ["block.faq"],
9338
- design: {
9339
- sectionSurface: "muted-band",
9340
- contentFrame: panelFrame("inset"),
9341
- itemSurface: "default"
9342
- }
9343
- }),
9344
- defineBlockAppearancePreset({
9345
- kind: "block-design",
9346
- id: "contact-form-panel",
9347
- target: "contact-form",
9348
- label: "Raised form panel",
9349
- blockKinds: ["block.form"],
9350
- design: {
9351
- sectionSurface: "muted-band",
9352
- contentFrame: panelFrame("raised"),
9353
- itemSurface: "none"
9354
- }
9355
- }),
9356
- defineBlockAppearancePreset({
9357
- kind: "block-design",
9358
- id: "cta-accent-band",
9359
- target: "cta",
9360
- label: "Accent CTA band",
9361
- blockKinds: ["block.cta-full"],
9362
- design: {
9363
- sectionSurface: "accent-band",
9364
- contentFrame: plainFrame,
9365
- itemSurface: "none",
9366
- eyebrowTreatment: "accent"
9367
- }
9368
- })
9369
- ]];
8823
+ }],
8824
+ design: {
8825
+ sectionSurface: "hero-image",
8826
+ contentFrame: plainFrame,
8827
+ itemSurface: "none",
8828
+ sectionHeight: "immersive",
8829
+ heroComposition: "center",
8830
+ heroTypographyScale: "poster",
8831
+ imageSurfaceTreatment: {
8832
+ kind: "brand-scrim",
8833
+ token: "primary",
8834
+ intensity: "strong"
8835
+ }
8836
+ }
8837
+ }), defineBlockAppearancePreset({
8838
+ id: "hero-brand-scrim",
8839
+ target: "hero",
8840
+ label: "Brand scrim image hero",
8841
+ blockKinds: ["block.hero"],
8842
+ constraints: { layoutFamilies: ["centered", "compact"] },
8843
+ optionGroups: brandScrimOptionGroups,
8844
+ layoutPatches: microBannerLayoutPatches,
8845
+ design: {
8846
+ sectionSurface: "hero-image",
8847
+ contentFrame: plainFrame,
8848
+ itemSurface: "none",
8849
+ sectionHeight: "immersive",
8850
+ heroComposition: "center",
8851
+ heroTypographyScale: "display",
8852
+ imageSurfaceTreatment: {
8853
+ kind: "brand-scrim",
8854
+ token: "primary"
8855
+ }
8856
+ }
8857
+ }), defineBlockAppearancePreset({
8858
+ id: "hero-brand-scrim-fixed-frame",
8859
+ target: "hero",
8860
+ label: "Fixed-frame brand scrim hero",
8861
+ blockKinds: ["block.hero"],
8862
+ constraints: { layoutFamilies: ["centered", "compact"] },
8863
+ optionGroups: brandScrimOptionGroups,
8864
+ layoutPatches: microBannerLayoutPatches,
8865
+ design: {
8866
+ sectionSurface: "hero-image",
8867
+ contentFrame: plainFrame,
8868
+ itemSurface: "none",
8869
+ sectionHeight: "immersive",
8870
+ heroComposition: "center",
8871
+ heroTypographyScale: "display",
8872
+ imageSurfaceTreatment: {
8873
+ kind: "brand-scrim",
8874
+ token: "primary"
8875
+ },
8876
+ imageSurfaceMotion: "fixed-frame",
8877
+ eyebrowTreatment: "accent-pill-bounce"
8878
+ }
8879
+ }), defineBlockAppearancePreset({
8880
+ id: "hero-brand-depth-expressive",
8881
+ target: "hero",
8882
+ label: "Expressive brand-depth hero",
8883
+ blockKinds: ["block.hero"],
8884
+ constraints: { layoutFamilies: ["centered", "compact"] },
8885
+ design: {
8886
+ sectionSurface: "brand-depth-band",
8887
+ contentFrame: plainFrame,
8888
+ itemSurface: "none",
8889
+ heroComposition: "center",
8890
+ heroTypographyScale: "editorial",
8891
+ eyebrowTreatment: "accent-pill-bounce"
8892
+ }
8893
+ }), defineBlockAppearancePreset({
8894
+ id: "hero-contained-intro",
8895
+ target: "hero",
8896
+ label: "Contained intro hero",
8897
+ blockKinds: ["block.hero"],
8898
+ design: {
8899
+ sectionSurface: "muted-band",
8900
+ contentFrame: panelFrame("inset"),
8901
+ itemSurface: "none",
8902
+ heroComposition: "center",
8903
+ heroTypographyScale: "editorial"
8904
+ }
8905
+ }), defineBlockAppearancePreset({
8906
+ id: "hero-split-editorial",
8907
+ target: "hero",
8908
+ label: "Editorial split hero",
8909
+ blockKinds: ["block.hero"],
8910
+ constraints: { layoutFamilies: ["split"] },
8911
+ design: {
8912
+ sectionSurface: "base",
8913
+ contentFrame: plainFrame,
8914
+ itemSurface: "none",
8915
+ heroTypographyScale: "editorial"
8916
+ }
8917
+ }), defineBlockAppearancePreset({
8918
+ id: "hero-split-brand",
8919
+ target: "hero",
8920
+ label: "Brand split hero",
8921
+ blockKinds: ["block.hero"],
8922
+ constraints: { layoutFamilies: ["split"] },
8923
+ design: {
8924
+ sectionSurface: "brand-depth-band",
8925
+ contentFrame: plainFrame,
8926
+ itemSurface: "none",
8927
+ heroTypographyScale: "display",
8928
+ eyebrowTreatment: "accent-pill-bounce"
8929
+ }
8930
+ }), defineBlockAppearancePreset({
8931
+ id: "hero-split-soft-panel",
8932
+ target: "hero",
8933
+ label: "Soft panel split hero",
8934
+ blockKinds: ["block.hero"],
8935
+ constraints: { layoutFamilies: ["split"] },
8936
+ design: {
8937
+ sectionSurface: "muted-band",
8938
+ contentFrame: panelFrame("raised"),
8939
+ itemSurface: "none",
8940
+ heroTypographyScale: "editorial"
8941
+ }
8942
+ }), defineBlockAppearancePreset({
8943
+ id: "hero-split-accent",
8944
+ target: "hero",
8945
+ label: "Accent split hero",
8946
+ blockKinds: ["block.hero"],
8947
+ constraints: { layoutFamilies: ["split"] },
8948
+ design: {
8949
+ sectionSurface: "accent-band",
8950
+ contentFrame: panelFrame("raised"),
8951
+ itemSurface: "none",
8952
+ heroTypographyScale: "display"
8953
+ }
8954
+ }), defineBlockAppearancePreset({
8955
+ id: "intro-editorial-statement",
8956
+ target: "intro",
8957
+ label: "Editorial intro statement",
8958
+ blockKinds: ["block.intro"],
8959
+ constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
8960
+ design: {
8961
+ sectionSurface: "base",
8962
+ contentFrame: plainFrame,
8963
+ itemSurface: "none",
8964
+ composition: {
8965
+ kind: "intro",
8966
+ treatment: "editorial-statement"
8967
+ }
8968
+ }
8969
+ }), defineBlockAppearancePreset({
8970
+ id: "intro-portrait-bio",
8971
+ target: "intro",
8972
+ label: "Portrait and bio",
8973
+ blockKinds: ["block.intro"],
8974
+ constraints: { layoutVariantKeys: ["media-copy"] },
8975
+ design: {
8976
+ sectionSurface: "base",
8977
+ contentFrame: plainFrame,
8978
+ itemSurface: "none",
8979
+ composition: {
8980
+ kind: "intro",
8981
+ treatment: "portrait-bio"
8982
+ }
8983
+ }
8984
+ }), defineBlockAppearancePreset({
8985
+ id: "offerings-preview-default-cards",
8986
+ target: "offerings",
8987
+ label: "Default offering cards",
8988
+ blockKinds: ["block.offerings-preview"],
8989
+ design: {
8990
+ sectionSurface: "base",
8991
+ contentFrame: plainFrame,
8992
+ itemSurface: "default"
8993
+ }
8994
+ }), defineBlockAppearancePreset({
8995
+ id: "offerings-preview-secondary-cards",
8996
+ target: "offerings",
8997
+ label: "Secondary offering cards",
8998
+ blockKinds: ["block.offerings-preview"],
8999
+ design: {
9000
+ sectionSurface: "muted-band",
9001
+ contentFrame: plainFrame,
9002
+ itemSurface: "inset"
9003
+ }
9004
+ }), defineBlockAppearancePreset({
9005
+ id: "offerings-preview-non-carded",
9006
+ target: "offerings",
9007
+ label: "Non-carded offerings",
9008
+ blockKinds: ["block.offerings-preview"],
9009
+ design: {
9010
+ sectionSurface: "muted-band",
9011
+ contentFrame: plainFrame,
9012
+ itemSurface: "editorial"
9013
+ }
9014
+ }), defineBlockAppearancePreset({
9015
+ id: "offerings-preview-paired-feature-cards",
9016
+ target: "offerings",
9017
+ label: "Paired feature cards",
9018
+ blockKinds: ["block.offerings-preview"],
9019
+ constraints: { layoutVariantKeys: ["cards"] },
9020
+ design: {
9021
+ sectionSurface: "base",
9022
+ contentFrame: plainFrame,
9023
+ itemSurface: "none"
9024
+ }
9025
+ }), defineBlockAppearancePreset({
9026
+ id: "offerings-preview-open-editorial-columns",
9027
+ target: "offerings",
9028
+ label: "Open editorial columns",
9029
+ blockKinds: ["block.offerings-preview"],
9030
+ constraints: { layoutVariantKeys: ["cards"] },
9031
+ design: {
9032
+ sectionSurface: "base",
9033
+ contentFrame: plainFrame,
9034
+ itemSurface: "none"
9035
+ }
9036
+ }), defineBlockAppearancePreset({
9037
+ id: "offerings-preview-joined-programme-panel",
9038
+ target: "offerings",
9039
+ label: "Joined programme panel",
9040
+ blockKinds: ["block.offerings-preview"],
9041
+ constraints: { layoutVariantKeys: ["cards"] },
9042
+ design: {
9043
+ sectionSurface: "base",
9044
+ contentFrame: plainFrame,
9045
+ itemSurface: "none"
9046
+ }
9047
+ }), defineBlockAppearancePreset({
9048
+ id: "feature-cards-raised-rule",
9049
+ target: "feature-cards",
9050
+ label: "Raised cards with rule",
9051
+ blockKinds: ["block.feature-cards"],
9052
+ design: {
9053
+ sectionSurface: "base",
9054
+ contentFrame: plainFrame,
9055
+ itemSurface: "raised"
9056
+ }
9057
+ }), defineBlockAppearancePreset({
9058
+ id: "feature-cards-bold-colors",
9059
+ target: "feature-cards",
9060
+ label: "Bold colour-blocked cards",
9061
+ blockKinds: ["block.feature-cards"],
9062
+ design: {
9063
+ sectionSurface: "base",
9064
+ contentFrame: plainFrame,
9065
+ itemSurface: "color-blocked"
9066
+ }
9067
+ }), defineBlockAppearancePreset({
9068
+ id: "feature-cards-editorial-columns",
9069
+ target: "feature-cards",
9070
+ label: "Editorial open columns",
9071
+ blockKinds: ["block.feature-cards"],
9072
+ design: {
9073
+ sectionSurface: "base",
9074
+ contentFrame: plainFrame,
9075
+ itemSurface: "editorial"
9076
+ }
9077
+ }), defineBlockAppearancePreset({
9078
+ id: "feature-cards-asymmetric-emphasis",
9079
+ target: "feature-cards",
9080
+ label: "Asymmetric emphasis pair",
9081
+ blockKinds: ["block.feature-cards"],
9082
+ constraints: { layoutFamilies: ["grid"] },
9083
+ design: {
9084
+ sectionSurface: "base",
9085
+ contentFrame: plainFrame,
9086
+ itemSurface: "none",
9087
+ composition: {
9088
+ kind: "feature-cards",
9089
+ treatment: "asymmetric-emphasis"
9090
+ }
9091
+ }
9092
+ }), defineBlockAppearancePreset({
9093
+ id: "feature-cards-framed-programme",
9094
+ target: "feature-cards",
9095
+ label: "Framed programme cards",
9096
+ blockKinds: ["block.feature-cards"],
9097
+ constraints: { layoutFamilies: ["grid"] },
9098
+ design: {
9099
+ sectionSurface: "brand-depth-band",
9100
+ contentFrame: plainFrame,
9101
+ itemSurface: "inset",
9102
+ composition: {
9103
+ kind: "feature-cards",
9104
+ treatment: "framed-programme"
9105
+ }
9106
+ }
9107
+ }), defineBlockAppearancePreset({
9108
+ id: "feature-cards-soft-panels",
9109
+ target: "feature-cards",
9110
+ label: "Soft tinted panels",
9111
+ blockKinds: ["block.feature-cards"],
9112
+ design: {
9113
+ sectionSurface: "base",
9114
+ contentFrame: plainFrame,
9115
+ itemSurface: "inset"
9116
+ }
9117
+ }), defineBlockAppearancePreset({
9118
+ id: "feature-cards-editorial-diptych",
9119
+ target: "feature-cards",
9120
+ label: "Editorial diptych",
9121
+ blockKinds: ["block.feature-cards"],
9122
+ constraints: { layoutVariantKeys: ["editorial-diptych"] },
9123
+ design: {
9124
+ sectionSurface: "base",
9125
+ contentFrame: plainFrame,
9126
+ itemSurface: "flat"
9127
+ }
9128
+ }), defineBlockAppearancePreset({
9129
+ id: "feature-cards-editorial-pathways",
9130
+ target: "feature-cards",
9131
+ label: "Editorial pathways",
9132
+ blockKinds: ["block.feature-cards"],
9133
+ constraints: { layoutVariantKeys: ["editorial-pathways"] },
9134
+ design: {
9135
+ sectionSurface: "base",
9136
+ contentFrame: plainFrame,
9137
+ itemSurface: "flat"
9138
+ }
9139
+ }), defineBlockAppearancePreset({
9140
+ id: "feature-cards-photo-tiles",
9141
+ target: "feature-cards",
9142
+ label: "Photo tiles",
9143
+ blockKinds: ["block.feature-cards"],
9144
+ design: {
9145
+ sectionSurface: "base",
9146
+ contentFrame: plainFrame,
9147
+ itemSurface: "raised"
9148
+ }
9149
+ }), defineBlockAppearancePreset({
9150
+ id: "events-lined-panel",
9151
+ target: "events",
9152
+ label: "Raised event panel",
9153
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9154
+ design: {
9155
+ sectionSurface: "base",
9156
+ contentFrame: panelFrame("raised"),
9157
+ itemSurface: "none"
9158
+ }
9159
+ }), defineBlockAppearancePreset({
9160
+ id: "events-ruled-register",
9161
+ target: "events",
9162
+ label: "Ruled event register",
9163
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9164
+ design: {
9165
+ sectionSurface: "brand-depth-band",
9166
+ contentFrame: plainFrame,
9167
+ itemSurface: "none",
9168
+ eventListTreatment: "ruled-register"
9169
+ }
9170
+ }), defineBlockAppearancePreset({
9171
+ id: "events-editorial-register",
9172
+ target: "events",
9173
+ label: "Editorial event register",
9174
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9175
+ design: {
9176
+ sectionSurface: "base",
9177
+ contentFrame: plainFrame,
9178
+ itemSurface: "none",
9179
+ eventListTreatment: "editorial-register"
9180
+ }
9181
+ }), defineBlockAppearancePreset({
9182
+ id: "events-dense-index",
9183
+ target: "events",
9184
+ label: "Dense event index",
9185
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9186
+ design: {
9187
+ sectionSurface: "accent-band",
9188
+ contentFrame: plainFrame,
9189
+ itemSurface: "none",
9190
+ eventListTreatment: "dense-index"
9191
+ }
9192
+ }), defineBlockAppearancePreset({
9193
+ id: "schedule-details-brand-depth",
9194
+ target: "events",
9195
+ label: "Brand-depth schedule details",
9196
+ blockKinds: ["block.event-details", "block.course-details"],
9197
+ design: {
9198
+ sectionSurface: "brand-depth-band",
9199
+ contentFrame: plainFrame,
9200
+ itemSurface: "none",
9201
+ tileTreatment: "brand-depth"
9202
+ }
9203
+ }), defineBlockAppearancePreset({
9204
+ id: "media-text-flush-feature",
9205
+ target: "media-text",
9206
+ label: "Flush media feature",
9207
+ blockKinds: ["block.media-text"],
9208
+ design: {
9209
+ sectionSurface: "muted-band",
9210
+ contentFrame: flushPanelFrame({ bleed: "start" }),
9211
+ itemSurface: "none"
9212
+ }
9213
+ }), defineBlockAppearancePreset({
9214
+ id: "testimonials-simple-cards",
9215
+ target: "testimonials",
9216
+ label: "Simple testimonial cards",
9217
+ blockKinds: ["block.testimonials"],
9218
+ design: {
9219
+ sectionSurface: "base",
9220
+ contentFrame: plainFrame,
9221
+ itemSurface: "default"
9222
+ }
9223
+ }), defineBlockAppearancePreset({
9224
+ id: "testimonials-raised-panel",
9225
+ target: "testimonials",
9226
+ label: "Raised testimonial panel",
9227
+ blockKinds: ["block.testimonials"],
9228
+ design: {
9229
+ sectionSurface: "muted-band",
9230
+ contentFrame: panelFrame("raised"),
9231
+ itemSurface: "raised"
9232
+ }
9233
+ }), defineBlockAppearancePreset({
9234
+ id: "testimonials-accent-panel",
9235
+ target: "testimonials",
9236
+ label: "Accent testimonial panel",
9237
+ blockKinds: ["block.testimonials"],
9238
+ design: {
9239
+ sectionSurface: "accent-band",
9240
+ contentFrame: panelFrame("raised"),
9241
+ itemSurface: "raised"
9242
+ }
9243
+ }), defineBlockAppearancePreset({
9244
+ id: "testimonials-default-cards",
9245
+ target: "testimonials",
9246
+ label: "Default cards",
9247
+ blockKinds: ["block.testimonials"],
9248
+ design: {
9249
+ sectionSurface: "base",
9250
+ contentFrame: plainFrame,
9251
+ itemSurface: "none",
9252
+ testimonialCardTreatment: "default"
9253
+ }
9254
+ }), defineBlockAppearancePreset({
9255
+ id: "testimonials-statement-cards",
9256
+ target: "testimonials",
9257
+ label: "Statement cards",
9258
+ blockKinds: ["block.testimonials"],
9259
+ design: {
9260
+ sectionSurface: "accent-band",
9261
+ contentFrame: plainFrame,
9262
+ itemSurface: "raised",
9263
+ testimonialCardTreatment: "statement"
9264
+ }
9265
+ }), defineBlockAppearancePreset({
9266
+ id: "testimonials-brand-statement-cards",
9267
+ target: "testimonials",
9268
+ label: "Brand statement cards",
9269
+ blockKinds: ["block.testimonials"],
9270
+ design: {
9271
+ sectionSurface: "brand-depth-band",
9272
+ contentFrame: plainFrame,
9273
+ itemSurface: "raised",
9274
+ testimonialCardTreatment: "statement"
9275
+ }
9276
+ }), defineBlockAppearancePreset({
9277
+ id: "testimonials-non-carded",
9278
+ target: "testimonials",
9279
+ label: "Non-carded",
9280
+ blockKinds: ["block.testimonials"],
9281
+ design: {
9282
+ sectionSurface: "muted-band",
9283
+ contentFrame: plainFrame,
9284
+ itemSurface: "none",
9285
+ testimonialCardTreatment: "non-carded"
9286
+ }
9287
+ }), defineBlockAppearancePreset({
9288
+ id: "testimonials-evergreen-lead",
9289
+ target: "testimonials",
9290
+ label: "Evergreen lead",
9291
+ blockKinds: ["block.testimonials"],
9292
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9293
+ design: {
9294
+ sectionSurface: "base",
9295
+ contentFrame: plainFrame,
9296
+ itemSurface: "none"
9297
+ }
9298
+ }), defineBlockAppearancePreset({
9299
+ id: "testimonials-room-and-response",
9300
+ target: "testimonials",
9301
+ label: "Room and response",
9302
+ blockKinds: ["block.testimonials"],
9303
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9304
+ design: {
9305
+ sectionSurface: "base",
9306
+ contentFrame: plainFrame,
9307
+ itemSurface: "none"
9308
+ }
9309
+ }), defineBlockAppearancePreset({
9310
+ id: "testimonials-open-floor",
9311
+ target: "testimonials",
9312
+ label: "Open floor",
9313
+ blockKinds: ["block.testimonials"],
9314
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9315
+ design: {
9316
+ sectionSurface: "base",
9317
+ contentFrame: plainFrame,
9318
+ itemSurface: "none"
9319
+ }
9320
+ }), defineBlockAppearancePreset({
9321
+ id: "faq-base-accordion",
9322
+ target: "faq",
9323
+ label: "Base accordion FAQ",
9324
+ blockKinds: ["block.faq"],
9325
+ design: {
9326
+ sectionSurface: "base",
9327
+ contentFrame: plainFrame,
9328
+ itemSurface: "default"
9329
+ }
9330
+ }), defineBlockAppearancePreset({
9331
+ id: "faq-contained-help",
9332
+ target: "faq",
9333
+ label: "Contained help panel",
9334
+ blockKinds: ["block.faq"],
9335
+ design: {
9336
+ sectionSurface: "muted-band",
9337
+ contentFrame: panelFrame("inset"),
9338
+ itemSurface: "default"
9339
+ }
9340
+ }), defineBlockAppearancePreset({
9341
+ id: "contact-form-panel",
9342
+ target: "contact-form",
9343
+ label: "Raised form panel",
9344
+ blockKinds: ["block.form"],
9345
+ design: {
9346
+ sectionSurface: "muted-band",
9347
+ contentFrame: panelFrame("raised"),
9348
+ itemSurface: "none"
9349
+ }
9350
+ }), defineBlockAppearancePreset({
9351
+ id: "cta-accent-band",
9352
+ target: "cta",
9353
+ label: "Accent CTA band",
9354
+ blockKinds: ["block.cta-full"],
9355
+ design: {
9356
+ sectionSurface: "accent-band",
9357
+ contentFrame: plainFrame,
9358
+ itemSurface: "none",
9359
+ eyebrowTreatment: "accent"
9360
+ }
9361
+ });
9370
9362
  //#endregion
9371
9363
  //#region ../theme-core/src/site-styles/headerCtaVariants.ts
9372
9364
  function hasButtonVariant(theme, variantId) {
@@ -9549,6 +9541,27 @@ function uniqueStrings(values) {
9549
9541
  return Array.from(new Set(values));
9550
9542
  }
9551
9543
  //#endregion
9544
+ //#region ../theme-core/src/site-styles/headerInteractionPalette.ts
9545
+ const clearSplitInteractionPalette = defineLookOptionGroup({
9546
+ id: "interaction-palette",
9547
+ label: "Hover colour",
9548
+ defaultOptionId: "accent",
9549
+ options: [
9550
+ {
9551
+ id: "accent",
9552
+ label: "Accent"
9553
+ },
9554
+ {
9555
+ id: "primary",
9556
+ label: "Primary"
9557
+ },
9558
+ {
9559
+ id: "secondary",
9560
+ label: "Secondary"
9561
+ }
9562
+ ]
9563
+ });
9564
+ //#endregion
9552
9565
  //#region ../theme-core/src/site-styles/headerLooks.ts
9553
9566
  function asHeaderLookId(value) {
9554
9567
  return value;
@@ -9682,7 +9695,7 @@ const overlayLogoAccommodations = [
9682
9695
  * optional nested styling fields that would otherwise leak from another Look.
9683
9696
  */
9684
9697
  function baseHeader(theme) {
9685
- 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;
9698
+ 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;
9686
9699
  return {
9687
9700
  ...header,
9688
9701
  navContainer: {
@@ -9697,7 +9710,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9697
9710
  id: asHeaderLayoutId("classic"),
9698
9711
  label: "Classic",
9699
9712
  description: "Logo and navigation in one practical horizontal row.",
9700
- structure: "inline-classic",
9701
9713
  variant: "classic",
9702
9714
  defaultPositioning: "sticky",
9703
9715
  shrinkOnScroll: false
@@ -9706,7 +9718,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9706
9718
  id: asHeaderLayoutId("centered"),
9707
9719
  label: "Centered",
9708
9720
  description: "Logo centered above a balanced navigation row.",
9709
- structure: "centered-stack",
9710
9721
  variant: "centered",
9711
9722
  defaultPositioning: "static",
9712
9723
  shrinkOnScroll: false,
@@ -9722,7 +9733,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9722
9733
  id: asHeaderLayoutId("floating"),
9723
9734
  label: "Floating",
9724
9735
  description: "Detached header chrome that sits over the opening section.",
9725
- structure: "floating-shell",
9726
9736
  variant: "floating",
9727
9737
  defaultPositioning: "sticky",
9728
9738
  shrinkOnScroll: true,
@@ -9884,10 +9894,13 @@ const headerStyleCatalog = defineExactCatalog()([
9884
9894
  label: "Clear Split",
9885
9895
  description: "Floating logo with transparent navigation and no shared shell.",
9886
9896
  supportedLayoutIds: supportedLayouts(["floating"]),
9887
- navInteraction: "color-change",
9897
+ navInteraction: "pill-background",
9888
9898
  surface: "floating",
9889
- defaultDepth: "none",
9899
+ defaultDepth: "line",
9890
9900
  navTypography: "plain",
9901
+ openingForegroundTarget: "all",
9902
+ scrollTreatment: "contrast-glass",
9903
+ interactionPalette: clearSplitInteractionPalette,
9891
9904
  moods: ["editorial", "calm"]
9892
9905
  },
9893
9906
  {
@@ -9910,6 +9923,7 @@ const headerStyleCatalog = defineExactCatalog()([
9910
9923
  surface: "floating",
9911
9924
  defaultDepth: "shadow",
9912
9925
  navTypography: "quiet-caps",
9926
+ openingForegroundTarget: "brand-only",
9913
9927
  moods: ["expressive"]
9914
9928
  },
9915
9929
  {
@@ -9921,6 +9935,7 @@ const headerStyleCatalog = defineExactCatalog()([
9921
9935
  surface: "floating",
9922
9936
  defaultDepth: "shadow",
9923
9937
  navTypography: "heading",
9938
+ openingForegroundTarget: "brand-only",
9924
9939
  moods: ["calm", "editorial"]
9925
9940
  }
9926
9941
  ]);
@@ -10422,13 +10437,6 @@ const headerLookCatalog = defineExactCatalog()([
10422
10437
  {
10423
10438
  id: asHeaderLookId("clean-base"),
10424
10439
  label: "Clean base",
10425
- visualTreatment: "solid-neutral",
10426
- layoutBehavior: "sticky",
10427
- configuration: {
10428
- structure: "inline-classic",
10429
- treatment: "solid-neutral",
10430
- behavior: "sticky"
10431
- },
10432
10440
  openingRequirement: "none",
10433
10441
  logoAccommodations: inlineClassicLogoAccommodations,
10434
10442
  compile: cleanBaseHeader
@@ -10436,13 +10444,6 @@ const headerLookCatalog = defineExactCatalog()([
10436
10444
  {
10437
10445
  id: asHeaderLookId("classic-centered-nav"),
10438
10446
  label: "Centered nav",
10439
- visualTreatment: "solid-neutral",
10440
- layoutBehavior: "sticky",
10441
- configuration: {
10442
- structure: "inline-classic",
10443
- treatment: "solid-neutral",
10444
- behavior: "sticky"
10445
- },
10446
10447
  openingRequirement: "none",
10447
10448
  maxRecommendedNavItems: 6,
10448
10449
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -10451,13 +10452,6 @@ const headerLookCatalog = defineExactCatalog()([
10451
10452
  {
10452
10453
  id: asHeaderLookId("brand-solid"),
10453
10454
  label: "Brand solid",
10454
- visualTreatment: "solid-brand",
10455
- layoutBehavior: "sticky-shrink",
10456
- configuration: {
10457
- structure: "inline-classic",
10458
- treatment: "solid-brand",
10459
- behavior: "sticky-shrink"
10460
- },
10461
10455
  openingRequirement: "none",
10462
10456
  logoAccommodations: inlineClassicLogoAccommodations,
10463
10457
  compile: solidBrandHeader
@@ -10465,13 +10459,6 @@ const headerLookCatalog = defineExactCatalog()([
10465
10459
  {
10466
10460
  id: asHeaderLookId("serif-line"),
10467
10461
  label: "Serif line",
10468
- visualTreatment: "light-serif",
10469
- layoutBehavior: "sticky",
10470
- configuration: {
10471
- structure: "centered-stack",
10472
- treatment: "light-serif",
10473
- behavior: "sticky"
10474
- },
10475
10462
  openingRequirement: "none",
10476
10463
  maxRecommendedNavItems: 6,
10477
10464
  logoAccommodations: centeredLogoAccommodations,
@@ -10480,13 +10467,6 @@ const headerLookCatalog = defineExactCatalog()([
10480
10467
  {
10481
10468
  id: asHeaderLookId("centered-calm"),
10482
10469
  label: "Centered calm",
10483
- visualTreatment: "light-serif",
10484
- layoutBehavior: "normal-flow",
10485
- configuration: {
10486
- structure: "centered-stack",
10487
- treatment: "light-serif",
10488
- behavior: "normal-flow"
10489
- },
10490
10470
  openingRequirement: "none",
10491
10471
  maxRecommendedNavItems: 5,
10492
10472
  logoAccommodations: centeredLogoAccommodations,
@@ -10495,13 +10475,6 @@ const headerLookCatalog = defineExactCatalog()([
10495
10475
  {
10496
10476
  id: asHeaderLookId("practical-utility"),
10497
10477
  label: "Practical utility",
10498
- visualTreatment: "solid-neutral",
10499
- layoutBehavior: "sticky-shrink",
10500
- configuration: {
10501
- structure: "inline-classic",
10502
- treatment: "solid-neutral",
10503
- behavior: "sticky-shrink"
10504
- },
10505
10478
  openingRequirement: "none",
10506
10479
  requiresProminentCta: true,
10507
10480
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -10510,13 +10483,6 @@ const headerLookCatalog = defineExactCatalog()([
10510
10483
  {
10511
10484
  id: asHeaderLookId("minimal-transparent"),
10512
10485
  label: "Minimal transparent",
10513
- visualTreatment: "minimal-transparent",
10514
- layoutBehavior: "normal-flow",
10515
- configuration: {
10516
- structure: "inline-classic",
10517
- treatment: "minimal-transparent",
10518
- behavior: "normal-flow"
10519
- },
10520
10486
  openingRequirement: "reserved-space-ok",
10521
10487
  logoAccommodations: inlineClassicLogoAccommodations,
10522
10488
  compile: minimalTransparentHeader
@@ -10524,13 +10490,6 @@ const headerLookCatalog = defineExactCatalog()([
10524
10490
  {
10525
10491
  id: asHeaderLookId("transparent-overlay"),
10526
10492
  label: "Transparent overlay",
10527
- visualTreatment: "transparent-overlay",
10528
- layoutBehavior: "fixed-overlay",
10529
- configuration: {
10530
- structure: "inline-classic",
10531
- treatment: "transparent-overlay",
10532
- behavior: "fixed-overlay"
10533
- },
10534
10493
  openingRequirement: "requires-image-hero-with-contrast-overlay",
10535
10494
  maxRecommendedNavItems: 5,
10536
10495
  logoAccommodations: overlayLogoAccommodations,
@@ -10539,24 +10498,13 @@ const headerLookCatalog = defineExactCatalog()([
10539
10498
  {
10540
10499
  id: asHeaderLookId("floating-glass"),
10541
10500
  label: "Floating glass",
10542
- visualTreatment: "floating-glass",
10543
- layoutBehavior: "fixed-floating",
10544
- configuration: {
10545
- structure: "floating-shell",
10546
- treatment: "floating-glass",
10547
- behavior: "fixed-floating"
10548
- },
10549
10501
  openingRequirement: "requires-image-hero-with-contrast-overlay",
10550
10502
  maxRecommendedNavItems: 5,
10551
10503
  logoAccommodations: overlayLogoAccommodations,
10552
10504
  compile: floatingGlassHeader
10553
10505
  }
10554
10506
  ]);
10555
- new Set(headerLookCatalog.map((look) => headerConfigurationKey(look.configuration)));
10556
10507
  new Map(headerLookCatalog.map((look) => [look.id, look]));
10557
- function headerConfigurationKey(configuration) {
10558
- return `${configuration.structure}:${configuration.treatment}:${configuration.behavior}`;
10559
- }
10560
10508
  //#endregion
10561
10509
  //#region ../theme-core/src/site-styles/sectionTransitions.ts
10562
10510
  function boundaryRuntimeMetrics(family, size, heightExpression) {
@@ -14165,28 +14113,6 @@ z$1.object({
14165
14113
  spacing: z$1.enum(themeTokenRecipeOptions.spacing),
14166
14114
  motion: z$1.enum(themeTokenRecipeOptions.motion)
14167
14115
  });
14168
- const BREAKPOINT_LG = 1024;
14169
- const BREAKPOINT_XL = 1280;
14170
- const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
14171
- function mqUp(px) {
14172
- return `(min-width: ${px}px)`;
14173
- }
14174
- function mqDown(px) {
14175
- return `(max-width: ${px}px)`;
14176
- }
14177
- function mqBetween(minPx, maxPx) {
14178
- return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
14179
- }
14180
- mqUp(640);
14181
- mqUp(768);
14182
- mqUp(BREAKPOINT_LG);
14183
- mqUp(BREAKPOINT_XL);
14184
- mqDown(639);
14185
- mqDown(767);
14186
- mqDown(BREAKPOINT_LG_DOWN);
14187
- mqBetween(640, BREAKPOINT_LG_DOWN);
14188
- mqDown(640);
14189
- mqDown(768);
14190
14116
  //#endregion
14191
14117
  //#region ../theme-core/src/siteChromeOverlayClearance.ts
14192
14118
  const SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
@@ -18168,15 +18094,6 @@ const heroLayoutControlsFragment = defineFragment({
18168
18094
  */
18169
18095
  const BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
18170
18096
  const blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
18171
- /**
18172
- * Temporary rollout boundary for persisted content written before issue #1220.
18173
- * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
18174
- * only until the post-deploy role rewrite has been audited in production.
18175
- */
18176
- function canonicalizePersistedBlockButtonRole(value) {
18177
- return value === "link" || value === "tertiary" ? "ghost" : value;
18178
- }
18179
- const persistedBlockButtonRoleSchema = z$1.preprocess((value) => typeof value === "string" ? canonicalizePersistedBlockButtonRole(value) : value, blockButtonRoleSchema);
18180
18097
  const BLOCK_BUTTON_ROLE_LABELS = {
18181
18098
  primary: "Primary",
18182
18099
  secondary: "Secondary",
@@ -19385,6 +19302,7 @@ const newsletterFormFragment = defineFragment({
19385
19302
  }
19386
19303
  ],
19387
19304
  layout: [el("newsletter-form", withApiBindings({
19305
+ source: "block",
19388
19306
  destinationProvider: { $bind: { from: "destinationProvider" } },
19389
19307
  listId: { $bind: { from: "listId" } },
19390
19308
  preset: { $bind: { from: "preset" } },
@@ -21504,6 +21422,7 @@ const contactNewsletterLayout = styledSection({
21504
21422
  as: "h2",
21505
21423
  className: "newsletter-copy-title"
21506
21424
  }, when("newsletterTitle"), bind("newsletterTitle")), richText({ className: "newsletter-copy-subtitle rb-prose rb-max-w-none" }, when("newsletterSubtitle"), bind("newsletterSubtitle"))]), el("newsletter-form", withApiBindings({
21425
+ source: "block",
21507
21426
  listId: { $bind: { from: "listId" } },
21508
21427
  preset: { $bind: { from: "preset" } },
21509
21428
  includePhone: { $bind: { from: "includePhone" } },
@@ -23438,6 +23357,22 @@ const footerNavGroupsLayout = stack({
23438
23357
  }, [text({ as: "span" }, bind("entry.label"))], repeat("group.children", "entry"))])], repeat("footerMenu.groups", "group"))], whenCollectionHasItems("footerMenu.groups"));
23439
23358
  //#endregion
23440
23359
  //#region ../blocks/src/system/blocks/site-footer.ts
23360
+ const footerStandardContactBindings = {
23361
+ value: { $bind: { from: "module.engagement.runtime.value" } },
23362
+ submitLabel: { $bind: { from: "module.engagement.runtime.submitLabel" } },
23363
+ successMessage: { $bind: { from: "module.engagement.runtime.successMessage" } }
23364
+ };
23365
+ const footerMailingListBindings = {
23366
+ source: { $bind: { from: "module.engagement.runtime.source" } },
23367
+ destinationRef: { $bind: { from: "module.engagement.runtime.destinationRef" } },
23368
+ listId: { $bind: { from: "module.engagement.runtime.listId" } },
23369
+ preset: { $bind: { from: "module.engagement.runtime.preset" } },
23370
+ includePhone: { $bind: { from: "module.engagement.runtime.includePhone" } },
23371
+ buttonLabel: { $bind: { from: "module.engagement.runtime.buttonLabel" } },
23372
+ successMessage: { $bind: { from: "module.engagement.runtime.successMessage" } },
23373
+ privacyNote: { $bind: { from: "module.engagement.runtime.privacyNote" } }
23374
+ };
23375
+ const footerSpamProtectionBinding = { spamProtectionEnabled: { $bind: { from: "$root.spamProtectionEnabled" } } };
23441
23376
  const brandLogo = link({
23442
23377
  href: "/",
23443
23378
  className: { $bind: {
@@ -23515,6 +23450,23 @@ const authoredCopy = richText({
23515
23450
  id: "content.interpolateRichTextTokens",
23516
23451
  options: { tokens: ["year", "site_name"] }
23517
23452
  }] }));
23453
+ const footerEngagement = stack({
23454
+ gap: "md",
23455
+ className: "rb-w-full"
23456
+ }, [
23457
+ text({
23458
+ as: "p",
23459
+ className: "rb-body rb-opacity-80"
23460
+ }, bind("module.engagement.intro"), when("module.engagement.intro")),
23461
+ form(withApiBindings({
23462
+ ...footerStandardContactBindings,
23463
+ ...footerSpamProtectionBinding
23464
+ }), [], when("module.engagement.kind", { equals: "standard-contact" })),
23465
+ el("newsletter-form", withApiBindings({
23466
+ ...footerMailingListBindings,
23467
+ ...footerSpamProtectionBinding
23468
+ }), [], when("module.engagement.kind", { equals: "mailing-list" }))
23469
+ ], when("module.kind", { equals: "engagement" }));
23518
23470
  const footerGroup = stack({
23519
23471
  gap: "md",
23520
23472
  align: "stretch",
@@ -23540,6 +23492,7 @@ const footerGroup = stack({
23540
23492
  contact,
23541
23493
  hours,
23542
23494
  socials,
23495
+ footerEngagement,
23543
23496
  stack({ className: "rb-w-full" }, [authoredCopy], when("module.kind", { equals: "supporting-text" })),
23544
23497
  stack({ className: "rb-w-full rb-lg-col-span-3" }, [authoredCopy], when("module.kind", { equals: "legal" }))
23545
23498
  ], repeat("group.modules", "module"))], repeat("region.groups", "group"));
@@ -23547,6 +23500,10 @@ const footerMainRegion = stack({
23547
23500
  className: { $bind: { from: "region.className" } },
23548
23501
  "data-footer-region": { $bind: { from: "region.kind" } }
23549
23502
  }, [footerGroup], when("region.kind", { equals: "main" }), repeat("content.footerRuntime.regions", "region"));
23503
+ const footerEngagementRegion = stack({
23504
+ className: { $bind: { from: "region.className" } },
23505
+ "data-footer-region": "engagement-row"
23506
+ }, [footerGroup], when("region.kind", { equals: "engagement-row" }), repeat("content.footerRuntime.regions", "region"));
23550
23507
  const footerBottomRegion = stack({ className: { $bind: {
23551
23508
  from: "$root.theme.footer",
23552
23509
  transforms: [{ id: "layout.footerBottomBarContainerClass" }],
@@ -23582,7 +23539,11 @@ const siteFooterBlockDefinition = { manifest: createBlockManifest({
23582
23539
  fallback: mergeStyles(backgroundColorStyle("surface"), surfaceForegroundStyle({ text: "rgb(var(--tb-text))" }), borderColorStyle("border"))
23583
23540
  } },
23584
23541
  "data-footer-membership": { $bind: { from: "content.footerRuntime.membershipKey" } }
23585
- }, [footerMainRegion, footerBottomRegion]),
23542
+ }, [
23543
+ footerEngagementRegion,
23544
+ footerMainRegion,
23545
+ footerBottomRegion
23546
+ ]),
23586
23547
  description: "Site-wide composed footer with canonical shared details.",
23587
23548
  styleTokens: { spacing: "md" },
23588
23549
  paletteHidden: true
@@ -25428,6 +25389,12 @@ const mediaBaseSchema = z.object({
25428
25389
  poster: mediaPosterSchema.optional(),
25429
25390
  transform: transformSchema.optional()
25430
25391
  });
25392
+ /**
25393
+ * Canonical identifier carried by media values that are safe to persist.
25394
+ * Parsing trims boundary input so downstream writers cannot retain whitespace-only
25395
+ * identifiers or independently disagree about normalization.
25396
+ */
25397
+ const mediaIdentifierSchema = z.string().trim().min(1).brand();
25431
25398
  const imageMediaSchema = mediaBaseSchema.extend({ type: z.literal("image") });
25432
25399
  const videoMediaSchema = mediaBaseSchema.extend({ type: z.literal("video") });
25433
25400
  const audioMediaSchema = mediaBaseSchema.extend({ type: z.literal("audio") });
@@ -25442,6 +25409,15 @@ const mediaSchema = z.discriminatedUnion("type", [
25442
25409
  spreadsheetMediaSchema,
25443
25410
  archiveMediaSchema
25444
25411
  ]);
25412
+ const persistableMediaBaseSchema = mediaBaseSchema.extend({ identifier: mediaIdentifierSchema });
25413
+ z.discriminatedUnion("type", [
25414
+ persistableMediaBaseSchema.extend({ type: z.literal("image") }),
25415
+ persistableMediaBaseSchema.extend({ type: z.literal("video") }),
25416
+ persistableMediaBaseSchema.extend({ type: z.literal("audio") }),
25417
+ persistableMediaBaseSchema.extend({ type: z.literal("document") }),
25418
+ persistableMediaBaseSchema.extend({ type: z.literal("spreadsheet") }),
25419
+ persistableMediaBaseSchema.extend({ type: z.literal("archive") })
25420
+ ]);
25445
25421
  //#endregion
25446
25422
  //#region ../blocks/src/system/manifest/richTextSchema.ts
25447
25423
  /**
@@ -26263,7 +26239,7 @@ const publicMembershipProductCollectionSchema = z$1.object({ memberships: z$1.ar
26263
26239
  * Kept in a shared module so the block definition and runtime contracts can
26264
26240
  * depend on the same schema without creating an initialization cycle.
26265
26241
  */
26266
- const occurrenceContextSchema$1 = z$1.object({
26242
+ const occurrenceContextSchema = z$1.object({
26267
26243
  id: z$1.string(),
26268
26244
  seriesId: z$1.string(),
26269
26245
  startsAt: z$1.string(),
@@ -26555,7 +26531,7 @@ function isEventCalendarListLayout(value) {
26555
26531
  //#region ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
26556
26532
  const previewStageSchema = z$1.enum(["preview", "published"]);
26557
26533
  const registrationButtonVariantSchema = blockButtonRoleSchema;
26558
- const eventButtonVariantSchema = persistedBlockButtonRoleSchema;
26534
+ const eventButtonVariantSchema = blockButtonRoleSchema;
26559
26535
  const eventLayoutSchema = z$1.enum(eventCalendarListLayoutValues);
26560
26536
  const eventCalendarDisplayModeSchema = z$1.enum(eventCalendarDisplayModeValues);
26561
26537
  const eventCalendarDefaultViewSchema = z$1.enum(eventCalendarDefaultViewValues);
@@ -26644,28 +26620,37 @@ const EVENT_REGISTRATION_SHELL_STEP_LABELS = [
26644
26620
  "Payment"
26645
26621
  ];
26646
26622
  const eventRegistrationPublicEventSchema = z$1.preprocess(normalizeEventRegistrationEventInput, publicEventSchema);
26647
- const eventRegistrationSourceSchema = z$1.object({
26648
- siteId: z$1.string().optional(),
26649
- apiBaseUrl: z$1.string().optional(),
26650
- portalToken: z$1.string().nullable().optional(),
26651
- previewToken: z$1.string().nullable().optional(),
26652
- occurrenceContext: occurrenceContextSchema$1.optional(),
26623
+ const eventRegistrationHydrationSchemaShape = {
26624
+ occurrenceContext: occurrenceContextSchema.optional(),
26653
26625
  subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
26654
26626
  events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
26655
- className: z$1.string().nullable().optional(),
26656
- buttonText: z$1.string().nullable().optional(),
26657
- maxTickets: z$1.string().nullable().optional(),
26627
+ wholeSeriesOfferings: publicCoursesArraySchema.nullable().optional(),
26628
+ wholeSeriesOffering: publicCourseSchema.nullable().optional(),
26629
+ maxTickets: z$1.string().optional(),
26658
26630
  showVenue: z$1.boolean().optional(),
26659
26631
  showCapacity: z$1.boolean().optional(),
26632
+ showSessions: z$1.boolean().optional(),
26633
+ showPrice: z$1.boolean().optional(),
26660
26634
  successMessage: z$1.string().optional(),
26661
26635
  waitlistMessage: z$1.string().optional(),
26636
+ membershipMessage: z$1.string().optional(),
26662
26637
  buttonVariant: registrationButtonVariantSchema.optional(),
26663
26638
  overlayEnabled: z$1.boolean().optional(),
26664
26639
  spamProtectionEnabled: z$1.boolean().optional(),
26665
- stage: previewStageSchema.optional(),
26666
26640
  supportEmail: z$1.string().optional(),
26667
26641
  sitePasses: publicPassProductCollectionSchema.nullable().optional(),
26668
26642
  siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
26643
+ };
26644
+ const eventRegistrationSourceSchema = z$1.object({
26645
+ siteId: z$1.string().optional(),
26646
+ apiBaseUrl: z$1.string().optional(),
26647
+ portalToken: z$1.string().nullable().optional(),
26648
+ previewToken: z$1.string().nullable().optional(),
26649
+ ...eventRegistrationHydrationSchemaShape,
26650
+ className: z$1.string().nullable().optional(),
26651
+ buttonText: z$1.string().nullable().optional(),
26652
+ maxTickets: z$1.string().nullable().optional(),
26653
+ stage: previewStageSchema.optional()
26669
26654
  });
26670
26655
  const eventRegistrationDisplaySchema = z$1.object({
26671
26656
  kind: z$1.literal("event-registration"),
@@ -26676,22 +26661,7 @@ const eventRegistrationDisplaySchema = z$1.object({
26676
26661
  stepLabels: z$1.array(z$1.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
26677
26662
  summaryButtonText: z$1.string()
26678
26663
  });
26679
- const eventRegistrationHydrationSchema = z$1.object({
26680
- occurrenceContext: occurrenceContextSchema$1.optional(),
26681
- subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
26682
- events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
26683
- maxTickets: z$1.string().optional(),
26684
- showVenue: z$1.boolean().optional(),
26685
- showCapacity: z$1.boolean().optional(),
26686
- successMessage: z$1.string().optional(),
26687
- waitlistMessage: z$1.string().optional(),
26688
- buttonVariant: registrationButtonVariantSchema.optional(),
26689
- overlayEnabled: z$1.boolean().optional(),
26690
- spamProtectionEnabled: z$1.boolean().optional(),
26691
- supportEmail: z$1.string().optional(),
26692
- sitePasses: publicPassProductCollectionSchema.nullable().optional(),
26693
- siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
26694
- });
26664
+ const eventRegistrationHydrationSchema = z$1.object(eventRegistrationHydrationSchemaShape);
26695
26665
  const eventRegistrationRenderSchema = z$1.object({
26696
26666
  display: eventRegistrationDisplaySchema,
26697
26667
  hydration: eventRegistrationHydrationSchema
@@ -26771,11 +26741,16 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
26771
26741
  occurrenceContext: source.occurrenceContext ?? null,
26772
26742
  subject: source.subject ?? null,
26773
26743
  events: source.events ?? null,
26744
+ wholeSeriesOfferings: source.wholeSeriesOfferings ?? null,
26745
+ wholeSeriesOffering: source.wholeSeriesOffering ?? null,
26774
26746
  maxTickets: source.maxTickets ?? void 0,
26775
26747
  showVenue: source.showVenue,
26776
26748
  showCapacity: source.showCapacity,
26749
+ showSessions: source.showSessions,
26750
+ showPrice: source.showPrice,
26777
26751
  successMessage: source.successMessage,
26778
26752
  waitlistMessage: source.waitlistMessage,
26753
+ membershipMessage: source.membershipMessage,
26779
26754
  buttonVariant: source.buttonVariant,
26780
26755
  overlayEnabled: source.overlayEnabled,
26781
26756
  spamProtectionEnabled: source.spamProtectionEnabled,
@@ -26891,6 +26866,24 @@ const eventRegistrationBlockDefinition = {
26891
26866
  defaultValue: true,
26892
26867
  ui: { intent: "display" }
26893
26868
  },
26869
+ {
26870
+ id: "showSessions",
26871
+ type: "boolean",
26872
+ label: "Show complete schedule",
26873
+ description: "Display every session for whole-series registrations",
26874
+ required: false,
26875
+ defaultValue: true,
26876
+ ui: { intent: "display" }
26877
+ },
26878
+ {
26879
+ id: "showPrice",
26880
+ type: "boolean",
26881
+ label: "Show price",
26882
+ description: "Display the whole-series price",
26883
+ required: false,
26884
+ defaultValue: true,
26885
+ ui: { intent: "display" }
26886
+ },
26894
26887
  {
26895
26888
  id: "successMessage",
26896
26889
  type: "text",
@@ -26901,6 +26894,26 @@ const eventRegistrationBlockDefinition = {
26901
26894
  defaultValue: "Thank you for registering! Check your email for confirmation details.",
26902
26895
  maxLength: 500
26903
26896
  },
26897
+ {
26898
+ id: "waitlistMessage",
26899
+ type: "text",
26900
+ label: "Waitlist message",
26901
+ description: "Message shown after joining a whole-series waitlist",
26902
+ required: false,
26903
+ multiline: true,
26904
+ defaultValue: "You've been added to the waitlist. We'll email you if a place becomes available.",
26905
+ maxLength: 500
26906
+ },
26907
+ {
26908
+ id: "membershipMessage",
26909
+ type: "text",
26910
+ label: "Membership registration message",
26911
+ description: "Message shown when a whole-series place is covered by membership",
26912
+ required: false,
26913
+ multiline: true,
26914
+ defaultValue: "Registered using your membership. Check your email for session details.",
26915
+ maxLength: 500
26916
+ },
26904
26917
  {
26905
26918
  id: "buttonText",
26906
26919
  type: "text",
@@ -26932,8 +26945,11 @@ const eventRegistrationBlockDefinition = {
26932
26945
  } },
26933
26946
  showVenue: { $bind: { from: "content.showVenue" } },
26934
26947
  showCapacity: { $bind: { from: "content.showCapacity" } },
26948
+ showSessions: { $bind: { from: "content.showSessions" } },
26949
+ showPrice: { $bind: { from: "content.showPrice" } },
26935
26950
  successMessage: { $bind: { from: "content.successMessage" } },
26936
26951
  waitlistMessage: { $bind: { from: "content.waitlistMessage" } },
26952
+ membershipMessage: { $bind: { from: "content.membershipMessage" } },
26937
26953
  buttonText: { $bind: {
26938
26954
  from: "content.buttonText",
26939
26955
  fallback: "Complete Registration"
@@ -26947,6 +26963,7 @@ const eventRegistrationBlockDefinition = {
26947
26963
  fallback: false
26948
26964
  } },
26949
26965
  events: { $bind: { from: "data.events" } },
26966
+ wholeSeriesOffering: { $bind: { from: "data.wholeSeriesOffering.offering" } },
26950
26967
  sitePasses: { $bind: { from: "data.sitePasses" } },
26951
26968
  siteMemberships: { $bind: { from: "data.siteMemberships" } },
26952
26969
  stage: { $bind: {
@@ -26960,9 +26977,10 @@ const eventRegistrationBlockDefinition = {
26960
26977
  runtime: eventRegistrationBlockRuntime,
26961
26978
  dataSchemas: {
26962
26979
  events: publicEventsArraySchema.optional(),
26980
+ wholeSeriesOffering: z$1.object({ offering: publicCourseSchema }).optional(),
26963
26981
  sitePasses: publicPassProductCollectionSchema.optional(),
26964
26982
  siteMemberships: publicMembershipProductCollectionSchema.optional(),
26965
- occurrenceContext: occurrenceContextSchema$1.optional()
26983
+ occurrenceContext: occurrenceContextSchema.optional()
26966
26984
  },
26967
26985
  dataLoaders: {
26968
26986
  events: {
@@ -26975,11 +26993,23 @@ const eventRegistrationBlockDefinition = {
26975
26993
  fallback: "published"
26976
26994
  } },
26977
26995
  readProfile: "registration",
26978
- seriesId: { $bind: { from: "$root.occurrenceContext.seriesId" } },
26996
+ seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
26979
26997
  includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
26980
26998
  },
26981
26999
  mode: "server"
26982
27000
  },
27001
+ wholeSeriesOffering: {
27002
+ endpoint: "getPublicWholeSeriesOffering",
27003
+ params: {
27004
+ siteId: { $bind: { from: "$root.siteId" } },
27005
+ eventSeriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
27006
+ stage: { $bind: {
27007
+ from: "$root.previewStage",
27008
+ fallback: "published"
27009
+ } }
27010
+ },
27011
+ mode: "server"
27012
+ },
26983
27013
  sitePasses: {
26984
27014
  endpoint: "listPublicPasses",
26985
27015
  params: { siteId: { $bind: { from: "$root.siteId" } } },
@@ -27414,15 +27444,6 @@ const eventDetailsManifest = createBlockManifest({
27414
27444
  })], { gap: "lg" })
27415
27445
  })]
27416
27446
  });
27417
- const occurrenceContextSchema = z$1.object({
27418
- id: z$1.string(),
27419
- seriesId: z$1.string(),
27420
- startsAt: z$1.string(),
27421
- endsAt: z$1.string(),
27422
- timeZone: z$1.string(),
27423
- capacityOverride: z$1.number().nullable().optional(),
27424
- overrides: z$1.record(z$1.string(), z$1.unknown()).nullable().optional()
27425
- }).nullable();
27426
27447
  const eventAutoApplyDiscountPreviewBaseSchema = z$1.object({
27427
27448
  id: z$1.string(),
27428
27449
  publicLabel: z$1.string(),
@@ -27457,8 +27478,9 @@ const eventDetailsBlockDefinition = {
27457
27478
  from: "$root.previewStage",
27458
27479
  fallback: "published"
27459
27480
  } },
27460
- limit: "25",
27461
- seriesId: { $bind: { from: "$root.occurrenceContext.seriesId" } },
27481
+ limit: "100",
27482
+ readProfile: "details",
27483
+ seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
27462
27484
  includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
27463
27485
  },
27464
27486
  mode: "server"
@@ -33600,9 +33622,6 @@ function parseSignedNewsletterDestinationRef(value) {
33600
33622
  const trimmed = parseTrimmedString(value);
33601
33623
  return trimmed && SIGNED_DESTINATION_REF_PATTERN.test(trimmed) ? trimmed : null;
33602
33624
  }
33603
- function parseNewsletterSignupDestinationProvider(value) {
33604
- return value === "riverbank" || value === "mailchimp" ? value : null;
33605
- }
33606
33625
  function buildNewsletterSignupBlockRef(blockId) {
33607
33626
  const parsed = parseNewsletterSignupBlockId(blockId);
33608
33627
  return parsed ? {
@@ -33749,19 +33768,9 @@ const newsletterFieldSchema = z$1.object({
33749
33768
  });
33750
33769
  const newsletterSignupBlockIdSchema = z$1.string().trim().min(1).transform(parseRequiredNewsletterSignupBlockId);
33751
33770
  const signedNewsletterDestinationRefSchema = z$1.string().trim().min(1).transform(parseRequiredSignedNewsletterDestinationRef);
33752
- const newsletterPublicDestinationRefSchema = z$1.discriminatedUnion("tag", [z$1.object({
33753
- tag: z$1.literal("block_ref"),
33754
- blockId: newsletterSignupBlockIdSchema
33755
- }), z$1.object({
33756
- tag: z$1.literal("signed_destination_ref"),
33757
- token: signedNewsletterDestinationRefSchema
33758
- })]);
33759
- const newsletterSourceSchema = z$1.object({
33760
- blockId: z$1.string().nullable().optional(),
33771
+ const newsletterSourceCommonSchema = z$1.object({
33761
33772
  siteId: z$1.string().optional(),
33762
33773
  apiBaseUrl: z$1.string().optional(),
33763
- listId: z$1.string().nullable().optional(),
33764
- destinationProvider: newsletterDestinationProviderSchema.nullable().optional(),
33765
33774
  preset: newsletterPresetSchema.optional(),
33766
33775
  includePhone: z$1.boolean().optional(),
33767
33776
  buttonLabel: z$1.string().nullable().optional(),
@@ -33772,6 +33781,25 @@ const newsletterSourceSchema = z$1.object({
33772
33781
  spamProtectionEnabled: z$1.boolean().optional(),
33773
33782
  className: z$1.string().nullable().optional()
33774
33783
  });
33784
+ const newsletterSourceSchema = z$1.discriminatedUnion("source", [
33785
+ newsletterSourceCommonSchema.extend({
33786
+ source: z$1.literal("block"),
33787
+ blockId: z$1.string().nullable().optional(),
33788
+ listId: z$1.string().nullable().optional(),
33789
+ destinationProvider: newsletterDestinationProviderSchema.nullable().optional()
33790
+ }),
33791
+ newsletterSourceCommonSchema.extend({
33792
+ source: z$1.literal("signed-footer"),
33793
+ destinationRef: z$1.object({
33794
+ tag: z$1.literal("signed_destination_ref"),
33795
+ token: signedNewsletterDestinationRefSchema
33796
+ })
33797
+ }),
33798
+ newsletterSourceCommonSchema.extend({
33799
+ source: z$1.literal("legacy-direct-list"),
33800
+ listId: z$1.string().nullable()
33801
+ })
33802
+ ]);
33775
33803
  const newsletterDisplaySchema = z$1.object({
33776
33804
  kind: z$1.literal("newsletter-form"),
33777
33805
  className: z$1.string().nullable(),
@@ -33782,8 +33810,26 @@ const newsletterDisplaySchema = z$1.object({
33782
33810
  fields: z$1.array(newsletterFieldSchema)
33783
33811
  });
33784
33812
  const newsletterHydrationSchema = z$1.object({
33785
- destinationRef: newsletterPublicDestinationRefSchema.nullable().optional(),
33786
- listId: z$1.string().nullable().optional(),
33813
+ target: z$1.discriminatedUnion("tag", [
33814
+ z$1.object({
33815
+ tag: z$1.literal("block-source"),
33816
+ destinationRef: z$1.object({
33817
+ tag: z$1.literal("block_ref"),
33818
+ blockId: newsletterSignupBlockIdSchema
33819
+ }).nullable()
33820
+ }),
33821
+ z$1.object({
33822
+ tag: z$1.literal("signed-footer-source"),
33823
+ destinationRef: z$1.object({
33824
+ tag: z$1.literal("signed_destination_ref"),
33825
+ token: signedNewsletterDestinationRefSchema
33826
+ })
33827
+ }),
33828
+ z$1.object({
33829
+ tag: z$1.literal("legacy-direct-list"),
33830
+ listId: z$1.string().nullable()
33831
+ })
33832
+ ]),
33787
33833
  preset: newsletterPresetSchema,
33788
33834
  includePhone: z$1.boolean(),
33789
33835
  tags: z$1.string().nullable().optional(),
@@ -33817,20 +33863,43 @@ const newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
33817
33863
  render: createZodCodec(newsletterRenderSchema)
33818
33864
  },
33819
33865
  buildRender: (source) => {
33820
- const runtimeSource = deriveNewsletterSignupRuntimeSource(source);
33866
+ const runtimeSource = source.source === "block" ? deriveNewsletterSignupRuntimeSource(source) : null;
33821
33867
  return {
33822
33868
  display: buildNewsletterDisplay(source),
33823
33869
  hydration: {
33824
- destinationRef: buildNewsletterSignupBlockRef(source.blockId),
33825
- listId: runtimeSource.listId,
33870
+ target: projectNewsletterFormHydrationTarget(source),
33826
33871
  preset: source.preset ?? "emailOnly",
33827
33872
  includePhone: source.includePhone ?? false,
33828
- tags: runtimeSource.tags,
33873
+ tags: runtimeSource ? runtimeSource.tags : source.tags,
33829
33874
  spamProtectionEnabled: source.spamProtectionEnabled
33830
33875
  }
33831
33876
  };
33832
33877
  }
33833
33878
  });
33879
+ function projectNewsletterFormHydrationTarget(source) {
33880
+ switch (source.source) {
33881
+ case "block": {
33882
+ const destinationRef = buildNewsletterSignupBlockRef(source.blockId);
33883
+ if (destinationRef?.tag === "block_ref") return {
33884
+ tag: "block-source",
33885
+ destinationRef
33886
+ };
33887
+ return {
33888
+ tag: "legacy-direct-list",
33889
+ listId: source.listId ?? null
33890
+ };
33891
+ }
33892
+ case "signed-footer": return {
33893
+ tag: "signed-footer-source",
33894
+ destinationRef: source.destinationRef
33895
+ };
33896
+ case "legacy-direct-list": return {
33897
+ tag: "legacy-direct-list",
33898
+ listId: source.listId
33899
+ };
33900
+ default: return assertNever$3(source);
33901
+ }
33902
+ }
33834
33903
  function parseRequiredNewsletterSignupBlockId(value) {
33835
33904
  const parsed = parseNewsletterSignupBlockId(value);
33836
33905
  if (!parsed) throw new Error("Newsletter signup block destination ref requires blockId");
@@ -36360,6 +36429,7 @@ const SUPPORTED_LOADER_ENDPOINTS$1 = [
36360
36429
  "listPublicRecurringSchedule",
36361
36430
  "getPublicEventDetails",
36362
36431
  "listPublicWholeSeriesOfferings",
36432
+ "getPublicWholeSeriesOffering",
36363
36433
  "listPublicRouteCandidates",
36364
36434
  "listPublicTeamMembers",
36365
36435
  "listPublicProducts",
@@ -37412,6 +37482,7 @@ const loaderAdapters = {
37412
37482
  listPublicEvents,
37413
37483
  listPublicRecurringSchedule,
37414
37484
  getPublicEventDetails,
37485
+ getPublicWholeSeriesOffering,
37415
37486
  listPublicRouteCandidates,
37416
37487
  listPublicTeamMembers,
37417
37488
  listPublicProducts,
@@ -37506,6 +37577,13 @@ async function listPublicEvents({ client, params }) {
37506
37577
  async function listPublicRecurringSchedule(input) {
37507
37578
  return projectRecurringSchedule(await listPublicEvents(input));
37508
37579
  }
37580
+ async function getPublicWholeSeriesOffering({ client, params }) {
37581
+ return await client.getPublicWholeSeriesOffering({
37582
+ siteId: requireStringParam(params, "siteId", "getPublicWholeSeriesOffering"),
37583
+ eventSeriesId: requireStringParam(params, "eventSeriesId", "getPublicWholeSeriesOffering"),
37584
+ stage: readStringParam(params, "stage")
37585
+ });
37586
+ }
37509
37587
  async function getPublicEventDetails({ client, params }) {
37510
37588
  return await client.getPublicEventDetails({
37511
37589
  siteId: requireStringParam(params, "siteId", "getPublicEventDetails"),