@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
@@ -1599,6 +1599,11 @@ function toLocationCoordinates(value) {
1599
1599
  lng: value.lng
1600
1600
  };
1601
1601
  }
1602
+ //#endregion
1603
+ //#region ../core/src/newsletter-signup-destination.ts
1604
+ function parseNewsletterSignupDestinationProvider(value) {
1605
+ return value === "riverbank" || value === "mailchimp" ? value : null;
1606
+ }
1602
1607
  z$1.object({
1603
1608
  formulaVersion: z$1.literal("managed-domain-overage-v1"),
1604
1609
  conversionRule: z$1.literal("usd-to-gbp-1-to-1-v1"),
@@ -3059,7 +3064,7 @@ function canonicalPaletteHashInput(colors, mode) {
3059
3064
  return `${mode}|${paletteColorFingerprint(colors)}`;
3060
3065
  }
3061
3066
  /**
3062
- * The shared TypeScript/SQL protocol. Do not reorder roles: the order comes
3067
+ * Stable curated-catalogue identity. Do not reorder roles: the order comes
3063
3068
  * from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
3064
3069
  */
3065
3070
  function paletteValueKey(colors, mode) {
@@ -4519,8 +4524,6 @@ const VARIANT_ROLES = [
4519
4524
  "secondary",
4520
4525
  "outline",
4521
4526
  "ghost",
4522
- "link",
4523
- "tertiary",
4524
4527
  "accent"
4525
4528
  ];
4526
4529
  /**
@@ -4529,7 +4532,7 @@ const VARIANT_ROLES = [
4529
4532
  * IDs become class selectors, so keep the contract deliberately narrower than
4530
4533
  * an arbitrary string and shared with every authoring/runtime boundary.
4531
4534
  */
4532
- const buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only");
4535
+ 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" });
4533
4536
  function parseOpaqueButtonColourToken(value) {
4534
4537
  const token = parseThemeColorToken(value);
4535
4538
  if (token === null) return null;
@@ -4932,6 +4935,59 @@ function surfaceForegroundStyle(input) {
4932
4935
  [SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting
4933
4936
  };
4934
4937
  }
4938
+ shadeBackgroundEffect({
4939
+ id: "darken-background",
4940
+ name: "Darken on Hover",
4941
+ description: "Darkens the background color on hover",
4942
+ label: "Darken Amount (shade step)",
4943
+ shadeDirection: 1
4944
+ });
4945
+ shadeBackgroundEffect({
4946
+ id: "lighten-background",
4947
+ name: "Lighten on Hover",
4948
+ description: "Lightens the background color on hover",
4949
+ label: "Lighten Amount (shade step)",
4950
+ shadeDirection: -1
4951
+ });
4952
+ function shadeBackgroundEffect(config) {
4953
+ return {
4954
+ id: config.id,
4955
+ name: config.name,
4956
+ description: config.description,
4957
+ category: "background",
4958
+ pseudoElement: "none",
4959
+ applicableTo: ["button"],
4960
+ customizableOption: {
4961
+ name: "amount",
4962
+ type: "select",
4963
+ label: config.label,
4964
+ default: 100,
4965
+ options: [
4966
+ 0,
4967
+ 100,
4968
+ 200,
4969
+ 300,
4970
+ 400,
4971
+ 500,
4972
+ 600,
4973
+ 700,
4974
+ 800,
4975
+ 900
4976
+ ]
4977
+ },
4978
+ isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
4979
+ generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
4980
+ if (buttonConfig.background.type !== "solid") return "";
4981
+ const amount = (options.amount || 100) * config.shadeDirection;
4982
+ const baseToken = buttonConfig.background.colorToken ?? "primary-500";
4983
+ return `
4984
+ :where([data-theme-scope="${themeId}"]) .${variantId}:hover {
4985
+ background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
4986
+ }
4987
+ `;
4988
+ }
4989
+ };
4990
+ }
4935
4991
  buttonSizeNameSchema.options;
4936
4992
  //#endregion
4937
4993
  //#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";
@@ -18164,15 +18090,6 @@ const heroLayoutControlsFragment = defineFragment({
18164
18090
  */
18165
18091
  const BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
18166
18092
  const blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
18167
- /**
18168
- * Temporary rollout boundary for persisted content written before issue #1220.
18169
- * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
18170
- * only until the post-deploy role rewrite has been audited in production.
18171
- */
18172
- function canonicalizePersistedBlockButtonRole(value) {
18173
- return value === "link" || value === "tertiary" ? "ghost" : value;
18174
- }
18175
- const persistedBlockButtonRoleSchema = z$1.preprocess((value) => typeof value === "string" ? canonicalizePersistedBlockButtonRole(value) : value, blockButtonRoleSchema);
18176
18093
  const BLOCK_BUTTON_ROLE_LABELS = {
18177
18094
  primary: "Primary",
18178
18095
  secondary: "Secondary",
@@ -19381,6 +19298,7 @@ const newsletterFormFragment = defineFragment({
19381
19298
  }
19382
19299
  ],
19383
19300
  layout: [el("newsletter-form", withApiBindings({
19301
+ source: "block",
19384
19302
  destinationProvider: { $bind: { from: "destinationProvider" } },
19385
19303
  listId: { $bind: { from: "listId" } },
19386
19304
  preset: { $bind: { from: "preset" } },
@@ -21500,6 +21418,7 @@ const contactNewsletterLayout = styledSection({
21500
21418
  as: "h2",
21501
21419
  className: "newsletter-copy-title"
21502
21420
  }, when("newsletterTitle"), bind("newsletterTitle")), richText({ className: "newsletter-copy-subtitle rb-prose rb-max-w-none" }, when("newsletterSubtitle"), bind("newsletterSubtitle"))]), el("newsletter-form", withApiBindings({
21421
+ source: "block",
21503
21422
  listId: { $bind: { from: "listId" } },
21504
21423
  preset: { $bind: { from: "preset" } },
21505
21424
  includePhone: { $bind: { from: "includePhone" } },
@@ -23434,6 +23353,22 @@ const footerNavGroupsLayout = stack({
23434
23353
  }, [text({ as: "span" }, bind("entry.label"))], repeat("group.children", "entry"))])], repeat("footerMenu.groups", "group"))], whenCollectionHasItems("footerMenu.groups"));
23435
23354
  //#endregion
23436
23355
  //#region ../blocks/src/system/blocks/site-footer.ts
23356
+ const footerStandardContactBindings = {
23357
+ value: { $bind: { from: "module.engagement.runtime.value" } },
23358
+ submitLabel: { $bind: { from: "module.engagement.runtime.submitLabel" } },
23359
+ successMessage: { $bind: { from: "module.engagement.runtime.successMessage" } }
23360
+ };
23361
+ const footerMailingListBindings = {
23362
+ source: { $bind: { from: "module.engagement.runtime.source" } },
23363
+ destinationRef: { $bind: { from: "module.engagement.runtime.destinationRef" } },
23364
+ listId: { $bind: { from: "module.engagement.runtime.listId" } },
23365
+ preset: { $bind: { from: "module.engagement.runtime.preset" } },
23366
+ includePhone: { $bind: { from: "module.engagement.runtime.includePhone" } },
23367
+ buttonLabel: { $bind: { from: "module.engagement.runtime.buttonLabel" } },
23368
+ successMessage: { $bind: { from: "module.engagement.runtime.successMessage" } },
23369
+ privacyNote: { $bind: { from: "module.engagement.runtime.privacyNote" } }
23370
+ };
23371
+ const footerSpamProtectionBinding = { spamProtectionEnabled: { $bind: { from: "$root.spamProtectionEnabled" } } };
23437
23372
  const brandLogo = link({
23438
23373
  href: "/",
23439
23374
  className: { $bind: {
@@ -23511,6 +23446,23 @@ const authoredCopy = richText({
23511
23446
  id: "content.interpolateRichTextTokens",
23512
23447
  options: { tokens: ["year", "site_name"] }
23513
23448
  }] }));
23449
+ const footerEngagement = stack({
23450
+ gap: "md",
23451
+ className: "rb-w-full"
23452
+ }, [
23453
+ text({
23454
+ as: "p",
23455
+ className: "rb-body rb-opacity-80"
23456
+ }, bind("module.engagement.intro"), when("module.engagement.intro")),
23457
+ form(withApiBindings({
23458
+ ...footerStandardContactBindings,
23459
+ ...footerSpamProtectionBinding
23460
+ }), [], when("module.engagement.kind", { equals: "standard-contact" })),
23461
+ el("newsletter-form", withApiBindings({
23462
+ ...footerMailingListBindings,
23463
+ ...footerSpamProtectionBinding
23464
+ }), [], when("module.engagement.kind", { equals: "mailing-list" }))
23465
+ ], when("module.kind", { equals: "engagement" }));
23514
23466
  const footerGroup = stack({
23515
23467
  gap: "md",
23516
23468
  align: "stretch",
@@ -23536,6 +23488,7 @@ const footerGroup = stack({
23536
23488
  contact,
23537
23489
  hours,
23538
23490
  socials,
23491
+ footerEngagement,
23539
23492
  stack({ className: "rb-w-full" }, [authoredCopy], when("module.kind", { equals: "supporting-text" })),
23540
23493
  stack({ className: "rb-w-full rb-lg-col-span-3" }, [authoredCopy], when("module.kind", { equals: "legal" }))
23541
23494
  ], repeat("group.modules", "module"))], repeat("region.groups", "group"));
@@ -23543,6 +23496,10 @@ const footerMainRegion = stack({
23543
23496
  className: { $bind: { from: "region.className" } },
23544
23497
  "data-footer-region": { $bind: { from: "region.kind" } }
23545
23498
  }, [footerGroup], when("region.kind", { equals: "main" }), repeat("content.footerRuntime.regions", "region"));
23499
+ const footerEngagementRegion = stack({
23500
+ className: { $bind: { from: "region.className" } },
23501
+ "data-footer-region": "engagement-row"
23502
+ }, [footerGroup], when("region.kind", { equals: "engagement-row" }), repeat("content.footerRuntime.regions", "region"));
23546
23503
  const footerBottomRegion = stack({ className: { $bind: {
23547
23504
  from: "$root.theme.footer",
23548
23505
  transforms: [{ id: "layout.footerBottomBarContainerClass" }],
@@ -23578,7 +23535,11 @@ const siteFooterBlockDefinition = { manifest: createBlockManifest({
23578
23535
  fallback: mergeStyles(backgroundColorStyle("surface"), surfaceForegroundStyle({ text: "rgb(var(--tb-text))" }), borderColorStyle("border"))
23579
23536
  } },
23580
23537
  "data-footer-membership": { $bind: { from: "content.footerRuntime.membershipKey" } }
23581
- }, [footerMainRegion, footerBottomRegion]),
23538
+ }, [
23539
+ footerEngagementRegion,
23540
+ footerMainRegion,
23541
+ footerBottomRegion
23542
+ ]),
23582
23543
  description: "Site-wide composed footer with canonical shared details.",
23583
23544
  styleTokens: { spacing: "md" },
23584
23545
  paletteHidden: true
@@ -25424,6 +25385,12 @@ const mediaBaseSchema = z.object({
25424
25385
  poster: mediaPosterSchema.optional(),
25425
25386
  transform: transformSchema.optional()
25426
25387
  });
25388
+ /**
25389
+ * Canonical identifier carried by media values that are safe to persist.
25390
+ * Parsing trims boundary input so downstream writers cannot retain whitespace-only
25391
+ * identifiers or independently disagree about normalization.
25392
+ */
25393
+ const mediaIdentifierSchema = z.string().trim().min(1).brand();
25427
25394
  const imageMediaSchema = mediaBaseSchema.extend({ type: z.literal("image") });
25428
25395
  const videoMediaSchema = mediaBaseSchema.extend({ type: z.literal("video") });
25429
25396
  const audioMediaSchema = mediaBaseSchema.extend({ type: z.literal("audio") });
@@ -25438,6 +25405,15 @@ const mediaSchema = z.discriminatedUnion("type", [
25438
25405
  spreadsheetMediaSchema,
25439
25406
  archiveMediaSchema
25440
25407
  ]);
25408
+ const persistableMediaBaseSchema = mediaBaseSchema.extend({ identifier: mediaIdentifierSchema });
25409
+ z.discriminatedUnion("type", [
25410
+ persistableMediaBaseSchema.extend({ type: z.literal("image") }),
25411
+ persistableMediaBaseSchema.extend({ type: z.literal("video") }),
25412
+ persistableMediaBaseSchema.extend({ type: z.literal("audio") }),
25413
+ persistableMediaBaseSchema.extend({ type: z.literal("document") }),
25414
+ persistableMediaBaseSchema.extend({ type: z.literal("spreadsheet") }),
25415
+ persistableMediaBaseSchema.extend({ type: z.literal("archive") })
25416
+ ]);
25441
25417
  //#endregion
25442
25418
  //#region ../blocks/src/system/manifest/richTextSchema.ts
25443
25419
  /**
@@ -26259,7 +26235,7 @@ const publicMembershipProductCollectionSchema = z$1.object({ memberships: z$1.ar
26259
26235
  * Kept in a shared module so the block definition and runtime contracts can
26260
26236
  * depend on the same schema without creating an initialization cycle.
26261
26237
  */
26262
- const occurrenceContextSchema$1 = z$1.object({
26238
+ const occurrenceContextSchema = z$1.object({
26263
26239
  id: z$1.string(),
26264
26240
  seriesId: z$1.string(),
26265
26241
  startsAt: z$1.string(),
@@ -26551,7 +26527,7 @@ function isEventCalendarListLayout(value) {
26551
26527
  //#region ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
26552
26528
  const previewStageSchema = z$1.enum(["preview", "published"]);
26553
26529
  const registrationButtonVariantSchema = blockButtonRoleSchema;
26554
- const eventButtonVariantSchema = persistedBlockButtonRoleSchema;
26530
+ const eventButtonVariantSchema = blockButtonRoleSchema;
26555
26531
  const eventLayoutSchema = z$1.enum(eventCalendarListLayoutValues);
26556
26532
  const eventCalendarDisplayModeSchema = z$1.enum(eventCalendarDisplayModeValues);
26557
26533
  const eventCalendarDefaultViewSchema = z$1.enum(eventCalendarDefaultViewValues);
@@ -26640,28 +26616,37 @@ const EVENT_REGISTRATION_SHELL_STEP_LABELS = [
26640
26616
  "Payment"
26641
26617
  ];
26642
26618
  const eventRegistrationPublicEventSchema = z$1.preprocess(normalizeEventRegistrationEventInput, publicEventSchema);
26643
- const eventRegistrationSourceSchema = z$1.object({
26644
- siteId: z$1.string().optional(),
26645
- apiBaseUrl: z$1.string().optional(),
26646
- portalToken: z$1.string().nullable().optional(),
26647
- previewToken: z$1.string().nullable().optional(),
26648
- occurrenceContext: occurrenceContextSchema$1.optional(),
26619
+ const eventRegistrationHydrationSchemaShape = {
26620
+ occurrenceContext: occurrenceContextSchema.optional(),
26649
26621
  subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
26650
26622
  events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
26651
- className: z$1.string().nullable().optional(),
26652
- buttonText: z$1.string().nullable().optional(),
26653
- maxTickets: z$1.string().nullable().optional(),
26623
+ wholeSeriesOfferings: publicCoursesArraySchema.nullable().optional(),
26624
+ wholeSeriesOffering: publicCourseSchema.nullable().optional(),
26625
+ maxTickets: z$1.string().optional(),
26654
26626
  showVenue: z$1.boolean().optional(),
26655
26627
  showCapacity: z$1.boolean().optional(),
26628
+ showSessions: z$1.boolean().optional(),
26629
+ showPrice: z$1.boolean().optional(),
26656
26630
  successMessage: z$1.string().optional(),
26657
26631
  waitlistMessage: z$1.string().optional(),
26632
+ membershipMessage: z$1.string().optional(),
26658
26633
  buttonVariant: registrationButtonVariantSchema.optional(),
26659
26634
  overlayEnabled: z$1.boolean().optional(),
26660
26635
  spamProtectionEnabled: z$1.boolean().optional(),
26661
- stage: previewStageSchema.optional(),
26662
26636
  supportEmail: z$1.string().optional(),
26663
26637
  sitePasses: publicPassProductCollectionSchema.nullable().optional(),
26664
26638
  siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
26639
+ };
26640
+ const eventRegistrationSourceSchema = z$1.object({
26641
+ siteId: z$1.string().optional(),
26642
+ apiBaseUrl: z$1.string().optional(),
26643
+ portalToken: z$1.string().nullable().optional(),
26644
+ previewToken: z$1.string().nullable().optional(),
26645
+ ...eventRegistrationHydrationSchemaShape,
26646
+ className: z$1.string().nullable().optional(),
26647
+ buttonText: z$1.string().nullable().optional(),
26648
+ maxTickets: z$1.string().nullable().optional(),
26649
+ stage: previewStageSchema.optional()
26665
26650
  });
26666
26651
  const eventRegistrationDisplaySchema = z$1.object({
26667
26652
  kind: z$1.literal("event-registration"),
@@ -26672,22 +26657,7 @@ const eventRegistrationDisplaySchema = z$1.object({
26672
26657
  stepLabels: z$1.array(z$1.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
26673
26658
  summaryButtonText: z$1.string()
26674
26659
  });
26675
- const eventRegistrationHydrationSchema = z$1.object({
26676
- occurrenceContext: occurrenceContextSchema$1.optional(),
26677
- subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
26678
- events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
26679
- maxTickets: z$1.string().optional(),
26680
- showVenue: z$1.boolean().optional(),
26681
- showCapacity: z$1.boolean().optional(),
26682
- successMessage: z$1.string().optional(),
26683
- waitlistMessage: z$1.string().optional(),
26684
- buttonVariant: registrationButtonVariantSchema.optional(),
26685
- overlayEnabled: z$1.boolean().optional(),
26686
- spamProtectionEnabled: z$1.boolean().optional(),
26687
- supportEmail: z$1.string().optional(),
26688
- sitePasses: publicPassProductCollectionSchema.nullable().optional(),
26689
- siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
26690
- });
26660
+ const eventRegistrationHydrationSchema = z$1.object(eventRegistrationHydrationSchemaShape);
26691
26661
  const eventRegistrationRenderSchema = z$1.object({
26692
26662
  display: eventRegistrationDisplaySchema,
26693
26663
  hydration: eventRegistrationHydrationSchema
@@ -26767,11 +26737,16 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
26767
26737
  occurrenceContext: source.occurrenceContext ?? null,
26768
26738
  subject: source.subject ?? null,
26769
26739
  events: source.events ?? null,
26740
+ wholeSeriesOfferings: source.wholeSeriesOfferings ?? null,
26741
+ wholeSeriesOffering: source.wholeSeriesOffering ?? null,
26770
26742
  maxTickets: source.maxTickets ?? void 0,
26771
26743
  showVenue: source.showVenue,
26772
26744
  showCapacity: source.showCapacity,
26745
+ showSessions: source.showSessions,
26746
+ showPrice: source.showPrice,
26773
26747
  successMessage: source.successMessage,
26774
26748
  waitlistMessage: source.waitlistMessage,
26749
+ membershipMessage: source.membershipMessage,
26775
26750
  buttonVariant: source.buttonVariant,
26776
26751
  overlayEnabled: source.overlayEnabled,
26777
26752
  spamProtectionEnabled: source.spamProtectionEnabled,
@@ -26887,6 +26862,24 @@ const eventRegistrationBlockDefinition = {
26887
26862
  defaultValue: true,
26888
26863
  ui: { intent: "display" }
26889
26864
  },
26865
+ {
26866
+ id: "showSessions",
26867
+ type: "boolean",
26868
+ label: "Show complete schedule",
26869
+ description: "Display every session for whole-series registrations",
26870
+ required: false,
26871
+ defaultValue: true,
26872
+ ui: { intent: "display" }
26873
+ },
26874
+ {
26875
+ id: "showPrice",
26876
+ type: "boolean",
26877
+ label: "Show price",
26878
+ description: "Display the whole-series price",
26879
+ required: false,
26880
+ defaultValue: true,
26881
+ ui: { intent: "display" }
26882
+ },
26890
26883
  {
26891
26884
  id: "successMessage",
26892
26885
  type: "text",
@@ -26897,6 +26890,26 @@ const eventRegistrationBlockDefinition = {
26897
26890
  defaultValue: "Thank you for registering! Check your email for confirmation details.",
26898
26891
  maxLength: 500
26899
26892
  },
26893
+ {
26894
+ id: "waitlistMessage",
26895
+ type: "text",
26896
+ label: "Waitlist message",
26897
+ description: "Message shown after joining a whole-series waitlist",
26898
+ required: false,
26899
+ multiline: true,
26900
+ defaultValue: "You've been added to the waitlist. We'll email you if a place becomes available.",
26901
+ maxLength: 500
26902
+ },
26903
+ {
26904
+ id: "membershipMessage",
26905
+ type: "text",
26906
+ label: "Membership registration message",
26907
+ description: "Message shown when a whole-series place is covered by membership",
26908
+ required: false,
26909
+ multiline: true,
26910
+ defaultValue: "Registered using your membership. Check your email for session details.",
26911
+ maxLength: 500
26912
+ },
26900
26913
  {
26901
26914
  id: "buttonText",
26902
26915
  type: "text",
@@ -26928,8 +26941,11 @@ const eventRegistrationBlockDefinition = {
26928
26941
  } },
26929
26942
  showVenue: { $bind: { from: "content.showVenue" } },
26930
26943
  showCapacity: { $bind: { from: "content.showCapacity" } },
26944
+ showSessions: { $bind: { from: "content.showSessions" } },
26945
+ showPrice: { $bind: { from: "content.showPrice" } },
26931
26946
  successMessage: { $bind: { from: "content.successMessage" } },
26932
26947
  waitlistMessage: { $bind: { from: "content.waitlistMessage" } },
26948
+ membershipMessage: { $bind: { from: "content.membershipMessage" } },
26933
26949
  buttonText: { $bind: {
26934
26950
  from: "content.buttonText",
26935
26951
  fallback: "Complete Registration"
@@ -26943,6 +26959,7 @@ const eventRegistrationBlockDefinition = {
26943
26959
  fallback: false
26944
26960
  } },
26945
26961
  events: { $bind: { from: "data.events" } },
26962
+ wholeSeriesOffering: { $bind: { from: "data.wholeSeriesOffering.offering" } },
26946
26963
  sitePasses: { $bind: { from: "data.sitePasses" } },
26947
26964
  siteMemberships: { $bind: { from: "data.siteMemberships" } },
26948
26965
  stage: { $bind: {
@@ -26956,9 +26973,10 @@ const eventRegistrationBlockDefinition = {
26956
26973
  runtime: eventRegistrationBlockRuntime,
26957
26974
  dataSchemas: {
26958
26975
  events: publicEventsArraySchema.optional(),
26976
+ wholeSeriesOffering: z$1.object({ offering: publicCourseSchema }).optional(),
26959
26977
  sitePasses: publicPassProductCollectionSchema.optional(),
26960
26978
  siteMemberships: publicMembershipProductCollectionSchema.optional(),
26961
- occurrenceContext: occurrenceContextSchema$1.optional()
26979
+ occurrenceContext: occurrenceContextSchema.optional()
26962
26980
  },
26963
26981
  dataLoaders: {
26964
26982
  events: {
@@ -26971,11 +26989,23 @@ const eventRegistrationBlockDefinition = {
26971
26989
  fallback: "published"
26972
26990
  } },
26973
26991
  readProfile: "registration",
26974
- seriesId: { $bind: { from: "$root.occurrenceContext.seriesId" } },
26992
+ seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
26975
26993
  includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
26976
26994
  },
26977
26995
  mode: "server"
26978
26996
  },
26997
+ wholeSeriesOffering: {
26998
+ endpoint: "getPublicWholeSeriesOffering",
26999
+ params: {
27000
+ siteId: { $bind: { from: "$root.siteId" } },
27001
+ eventSeriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
27002
+ stage: { $bind: {
27003
+ from: "$root.previewStage",
27004
+ fallback: "published"
27005
+ } }
27006
+ },
27007
+ mode: "server"
27008
+ },
26979
27009
  sitePasses: {
26980
27010
  endpoint: "listPublicPasses",
26981
27011
  params: { siteId: { $bind: { from: "$root.siteId" } } },
@@ -27410,15 +27440,6 @@ const eventDetailsManifest = createBlockManifest({
27410
27440
  })], { gap: "lg" })
27411
27441
  })]
27412
27442
  });
27413
- const occurrenceContextSchema = z$1.object({
27414
- id: z$1.string(),
27415
- seriesId: z$1.string(),
27416
- startsAt: z$1.string(),
27417
- endsAt: z$1.string(),
27418
- timeZone: z$1.string(),
27419
- capacityOverride: z$1.number().nullable().optional(),
27420
- overrides: z$1.record(z$1.string(), z$1.unknown()).nullable().optional()
27421
- }).nullable();
27422
27443
  const eventAutoApplyDiscountPreviewBaseSchema = z$1.object({
27423
27444
  id: z$1.string(),
27424
27445
  publicLabel: z$1.string(),
@@ -27453,8 +27474,9 @@ const eventDetailsBlockDefinition = {
27453
27474
  from: "$root.previewStage",
27454
27475
  fallback: "published"
27455
27476
  } },
27456
- limit: "25",
27457
- seriesId: { $bind: { from: "$root.occurrenceContext.seriesId" } },
27477
+ limit: "100",
27478
+ readProfile: "details",
27479
+ seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
27458
27480
  includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
27459
27481
  },
27460
27482
  mode: "server"
@@ -33596,9 +33618,6 @@ function parseSignedNewsletterDestinationRef(value) {
33596
33618
  const trimmed = parseTrimmedString(value);
33597
33619
  return trimmed && SIGNED_DESTINATION_REF_PATTERN.test(trimmed) ? trimmed : null;
33598
33620
  }
33599
- function parseNewsletterSignupDestinationProvider(value) {
33600
- return value === "riverbank" || value === "mailchimp" ? value : null;
33601
- }
33602
33621
  function buildNewsletterSignupBlockRef(blockId) {
33603
33622
  const parsed = parseNewsletterSignupBlockId(blockId);
33604
33623
  return parsed ? {
@@ -33745,19 +33764,9 @@ const newsletterFieldSchema = z$1.object({
33745
33764
  });
33746
33765
  const newsletterSignupBlockIdSchema = z$1.string().trim().min(1).transform(parseRequiredNewsletterSignupBlockId);
33747
33766
  const signedNewsletterDestinationRefSchema = z$1.string().trim().min(1).transform(parseRequiredSignedNewsletterDestinationRef);
33748
- const newsletterPublicDestinationRefSchema = z$1.discriminatedUnion("tag", [z$1.object({
33749
- tag: z$1.literal("block_ref"),
33750
- blockId: newsletterSignupBlockIdSchema
33751
- }), z$1.object({
33752
- tag: z$1.literal("signed_destination_ref"),
33753
- token: signedNewsletterDestinationRefSchema
33754
- })]);
33755
- const newsletterSourceSchema = z$1.object({
33756
- blockId: z$1.string().nullable().optional(),
33767
+ const newsletterSourceCommonSchema = z$1.object({
33757
33768
  siteId: z$1.string().optional(),
33758
33769
  apiBaseUrl: z$1.string().optional(),
33759
- listId: z$1.string().nullable().optional(),
33760
- destinationProvider: newsletterDestinationProviderSchema.nullable().optional(),
33761
33770
  preset: newsletterPresetSchema.optional(),
33762
33771
  includePhone: z$1.boolean().optional(),
33763
33772
  buttonLabel: z$1.string().nullable().optional(),
@@ -33768,6 +33777,25 @@ const newsletterSourceSchema = z$1.object({
33768
33777
  spamProtectionEnabled: z$1.boolean().optional(),
33769
33778
  className: z$1.string().nullable().optional()
33770
33779
  });
33780
+ const newsletterSourceSchema = z$1.discriminatedUnion("source", [
33781
+ newsletterSourceCommonSchema.extend({
33782
+ source: z$1.literal("block"),
33783
+ blockId: z$1.string().nullable().optional(),
33784
+ listId: z$1.string().nullable().optional(),
33785
+ destinationProvider: newsletterDestinationProviderSchema.nullable().optional()
33786
+ }),
33787
+ newsletterSourceCommonSchema.extend({
33788
+ source: z$1.literal("signed-footer"),
33789
+ destinationRef: z$1.object({
33790
+ tag: z$1.literal("signed_destination_ref"),
33791
+ token: signedNewsletterDestinationRefSchema
33792
+ })
33793
+ }),
33794
+ newsletterSourceCommonSchema.extend({
33795
+ source: z$1.literal("legacy-direct-list"),
33796
+ listId: z$1.string().nullable()
33797
+ })
33798
+ ]);
33771
33799
  const newsletterDisplaySchema = z$1.object({
33772
33800
  kind: z$1.literal("newsletter-form"),
33773
33801
  className: z$1.string().nullable(),
@@ -33778,8 +33806,26 @@ const newsletterDisplaySchema = z$1.object({
33778
33806
  fields: z$1.array(newsletterFieldSchema)
33779
33807
  });
33780
33808
  const newsletterHydrationSchema = z$1.object({
33781
- destinationRef: newsletterPublicDestinationRefSchema.nullable().optional(),
33782
- listId: z$1.string().nullable().optional(),
33809
+ target: z$1.discriminatedUnion("tag", [
33810
+ z$1.object({
33811
+ tag: z$1.literal("block-source"),
33812
+ destinationRef: z$1.object({
33813
+ tag: z$1.literal("block_ref"),
33814
+ blockId: newsletterSignupBlockIdSchema
33815
+ }).nullable()
33816
+ }),
33817
+ z$1.object({
33818
+ tag: z$1.literal("signed-footer-source"),
33819
+ destinationRef: z$1.object({
33820
+ tag: z$1.literal("signed_destination_ref"),
33821
+ token: signedNewsletterDestinationRefSchema
33822
+ })
33823
+ }),
33824
+ z$1.object({
33825
+ tag: z$1.literal("legacy-direct-list"),
33826
+ listId: z$1.string().nullable()
33827
+ })
33828
+ ]),
33783
33829
  preset: newsletterPresetSchema,
33784
33830
  includePhone: z$1.boolean(),
33785
33831
  tags: z$1.string().nullable().optional(),
@@ -33813,20 +33859,43 @@ const newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
33813
33859
  render: createZodCodec(newsletterRenderSchema)
33814
33860
  },
33815
33861
  buildRender: (source) => {
33816
- const runtimeSource = deriveNewsletterSignupRuntimeSource(source);
33862
+ const runtimeSource = source.source === "block" ? deriveNewsletterSignupRuntimeSource(source) : null;
33817
33863
  return {
33818
33864
  display: buildNewsletterDisplay(source),
33819
33865
  hydration: {
33820
- destinationRef: buildNewsletterSignupBlockRef(source.blockId),
33821
- listId: runtimeSource.listId,
33866
+ target: projectNewsletterFormHydrationTarget(source),
33822
33867
  preset: source.preset ?? "emailOnly",
33823
33868
  includePhone: source.includePhone ?? false,
33824
- tags: runtimeSource.tags,
33869
+ tags: runtimeSource ? runtimeSource.tags : source.tags,
33825
33870
  spamProtectionEnabled: source.spamProtectionEnabled
33826
33871
  }
33827
33872
  };
33828
33873
  }
33829
33874
  });
33875
+ function projectNewsletterFormHydrationTarget(source) {
33876
+ switch (source.source) {
33877
+ case "block": {
33878
+ const destinationRef = buildNewsletterSignupBlockRef(source.blockId);
33879
+ if (destinationRef?.tag === "block_ref") return {
33880
+ tag: "block-source",
33881
+ destinationRef
33882
+ };
33883
+ return {
33884
+ tag: "legacy-direct-list",
33885
+ listId: source.listId ?? null
33886
+ };
33887
+ }
33888
+ case "signed-footer": return {
33889
+ tag: "signed-footer-source",
33890
+ destinationRef: source.destinationRef
33891
+ };
33892
+ case "legacy-direct-list": return {
33893
+ tag: "legacy-direct-list",
33894
+ listId: source.listId
33895
+ };
33896
+ default: return assertNever$2(source);
33897
+ }
33898
+ }
33830
33899
  function parseRequiredNewsletterSignupBlockId(value) {
33831
33900
  const parsed = parseNewsletterSignupBlockId(value);
33832
33901
  if (!parsed) throw new Error("Newsletter signup block destination ref requires blockId");
@@ -36356,6 +36425,7 @@ const SUPPORTED_LOADER_ENDPOINTS$1 = [
36356
36425
  "listPublicRecurringSchedule",
36357
36426
  "getPublicEventDetails",
36358
36427
  "listPublicWholeSeriesOfferings",
36428
+ "getPublicWholeSeriesOffering",
36359
36429
  "listPublicRouteCandidates",
36360
36430
  "listPublicTeamMembers",
36361
36431
  "listPublicProducts",
@@ -37408,6 +37478,7 @@ const loaderAdapters = {
37408
37478
  listPublicEvents,
37409
37479
  listPublicRecurringSchedule,
37410
37480
  getPublicEventDetails,
37481
+ getPublicWholeSeriesOffering,
37411
37482
  listPublicRouteCandidates,
37412
37483
  listPublicTeamMembers,
37413
37484
  listPublicProducts,
@@ -37502,6 +37573,13 @@ async function listPublicEvents({ client, params }) {
37502
37573
  async function listPublicRecurringSchedule(input) {
37503
37574
  return projectRecurringSchedule(await listPublicEvents(input));
37504
37575
  }
37576
+ async function getPublicWholeSeriesOffering({ client, params }) {
37577
+ return await client.getPublicWholeSeriesOffering({
37578
+ siteId: requireStringParam(params, "siteId", "getPublicWholeSeriesOffering"),
37579
+ eventSeriesId: requireStringParam(params, "eventSeriesId", "getPublicWholeSeriesOffering"),
37580
+ stage: readStringParam(params, "stage")
37581
+ });
37582
+ }
37505
37583
  async function getPublicEventDetails({ client, params }) {
37506
37584
  return await client.getPublicEventDetails({
37507
37585
  siteId: requireStringParam(params, "siteId", "getPublicEventDetails"),