@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
@@ -7318,7 +7318,7 @@ const API_ENDPOINTS$1 = {
7318
7318
  path: "/sites/{siteId}/shop/orders/{orderId}/digital-fulfillment",
7319
7319
  method: "POST",
7320
7320
  auth: "user",
7321
- responseKind: "void",
7321
+ responseKind: "json",
7322
7322
  errors: [
7323
7323
  "resource:not_found",
7324
7324
  "validation:invalid_input",
@@ -7942,7 +7942,7 @@ var SimpleCache = class {
7942
7942
  * 1. This constant
7943
7943
  * 2. The "version" field in package.json
7944
7944
  */
7945
- const SDK_VERSION = "0.126.0";
7945
+ const SDK_VERSION = "0.128.0";
7946
7946
  //#endregion
7947
7947
  //#region src/client/error.ts
7948
7948
  let _Symbol$for;
@@ -8698,6 +8698,39 @@ function createContentReadOperations(input) {
8698
8698
  };
8699
8699
  }
8700
8700
  //#endregion
8701
+ //#region src/client/wholeSeriesReadOperations.ts
8702
+ function createWholeSeriesReadOperations(deps) {
8703
+ return { async getPublicWholeSeriesOffering(params) {
8704
+ const { siteId, eventSeriesId, stage, signal } = params;
8705
+ if (!siteId) throw new Error("getPublicWholeSeriesOffering() requires siteId");
8706
+ if (!eventSeriesId) throw new Error("getPublicWholeSeriesOffering() requires eventSeriesId");
8707
+ const cacheKey = `public-whole-series-offering:${siteId}:${eventSeriesId}:${stage ?? ""}`;
8708
+ return deps.resilientFetchData(cacheKey, (requestSignal) => deps.apiClient({
8709
+ endpoint: "getPublicWholeSeriesOffering",
8710
+ params: {
8711
+ siteId,
8712
+ eventSeriesId,
8713
+ ...stage && { stage }
8714
+ },
8715
+ options: { signal: requestSignal }
8716
+ }), { signal });
8717
+ } };
8718
+ }
8719
+ //#endregion
8720
+ //#region src/client/combineAbortSignals.ts
8721
+ /** Combine signals into one that aborts when any input aborts. */
8722
+ function combineAbortSignals(...signals) {
8723
+ const controller = new AbortController();
8724
+ for (const signal of signals) {
8725
+ if (signal.aborted) {
8726
+ controller.abort(signal.reason);
8727
+ break;
8728
+ }
8729
+ signal.addEventListener("abort", () => controller.abort(signal.reason), { once: true });
8730
+ }
8731
+ return controller.signal;
8732
+ }
8733
+ //#endregion
8701
8734
  //#region src/client/resilience.ts
8702
8735
  const DEFAULT_RETRY_CONFIG = {
8703
8736
  maxAttempts: 3,
@@ -9485,25 +9518,15 @@ function createRiverbankClientWithDeps(deps, config) {
9485
9518
  async function resilientFetchData(cacheKey, fetcher, options) {
9486
9519
  return (await resilientFetch(cacheKey, fetcher, options)).data;
9487
9520
  }
9488
- /**
9489
- * Combine multiple AbortSignals into one that aborts when any input aborts
9490
- */
9491
- function combineAbortSignals(...signals) {
9492
- const controller = new AbortController();
9493
- for (const signal of signals) {
9494
- if (signal.aborted) {
9495
- controller.abort(signal.reason);
9496
- break;
9497
- }
9498
- signal.addEventListener("abort", () => controller.abort(signal.reason), { once: true });
9499
- }
9500
- return controller.signal;
9501
- }
9502
9521
  const contentReads = createContentReadOperations({
9503
9522
  apiClient,
9504
9523
  resilientFetch,
9505
9524
  prebuildLoader
9506
9525
  });
9526
+ const wholeSeriesReads = createWholeSeriesReadOperations({
9527
+ apiClient,
9528
+ resilientFetchData
9529
+ });
9507
9530
  async function getEntriesInternal(params) {
9508
9531
  const { siteId, contentType, limit, offset, order, preview = false, mode, entryIds, includeMeta, signal } = params;
9509
9532
  const entryIdsCacheKey = mode === "manual" && entryIds?.length ? entryIds.join(",") : "";
@@ -9537,6 +9560,7 @@ function createRiverbankClientWithDeps(deps, config) {
9537
9560
  });
9538
9561
  }
9539
9562
  return {
9563
+ ...wholeSeriesReads,
9540
9564
  async getSite(params) {
9541
9565
  return (await contentReads.getSiteWithResilience(params)).data;
9542
9566
  },
@@ -10629,6 +10653,11 @@ function toLocationCoordinates(value) {
10629
10653
  lng: value.lng
10630
10654
  };
10631
10655
  }
10656
+ //#endregion
10657
+ //#region ../core/src/newsletter-signup-destination.ts
10658
+ function parseNewsletterSignupDestinationProvider(value) {
10659
+ return value === "riverbank" || value === "mailchimp" ? value : null;
10660
+ }
10632
10661
  z$1.object({
10633
10662
  formulaVersion: z$1.literal("managed-domain-overage-v1"),
10634
10663
  conversionRule: z$1.literal("usd-to-gbp-1-to-1-v1"),
@@ -12089,7 +12118,7 @@ function canonicalPaletteHashInput(colors, mode) {
12089
12118
  return `${mode}|${paletteColorFingerprint(colors)}`;
12090
12119
  }
12091
12120
  /**
12092
- * The shared TypeScript/SQL protocol. Do not reorder roles: the order comes
12121
+ * Stable curated-catalogue identity. Do not reorder roles: the order comes
12093
12122
  * from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
12094
12123
  */
12095
12124
  function paletteValueKey(colors, mode) {
@@ -13549,8 +13578,6 @@ const VARIANT_ROLES = [
13549
13578
  "secondary",
13550
13579
  "outline",
13551
13580
  "ghost",
13552
- "link",
13553
- "tertiary",
13554
13581
  "accent"
13555
13582
  ];
13556
13583
  /**
@@ -13559,7 +13586,7 @@ const VARIANT_ROLES = [
13559
13586
  * IDs become class selectors, so keep the contract deliberately narrower than
13560
13587
  * an arbitrary string and shared with every authoring/runtime boundary.
13561
13588
  */
13562
- const buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only");
13589
+ 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" });
13563
13590
  function parseOpaqueButtonColourToken(value) {
13564
13591
  const token = parseThemeColorToken(value);
13565
13592
  if (token === null) return null;
@@ -13962,6 +13989,59 @@ function surfaceForegroundStyle(input) {
13962
13989
  [SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting
13963
13990
  };
13964
13991
  }
13992
+ shadeBackgroundEffect({
13993
+ id: "darken-background",
13994
+ name: "Darken on Hover",
13995
+ description: "Darkens the background color on hover",
13996
+ label: "Darken Amount (shade step)",
13997
+ shadeDirection: 1
13998
+ });
13999
+ shadeBackgroundEffect({
14000
+ id: "lighten-background",
14001
+ name: "Lighten on Hover",
14002
+ description: "Lightens the background color on hover",
14003
+ label: "Lighten Amount (shade step)",
14004
+ shadeDirection: -1
14005
+ });
14006
+ function shadeBackgroundEffect(config) {
14007
+ return {
14008
+ id: config.id,
14009
+ name: config.name,
14010
+ description: config.description,
14011
+ category: "background",
14012
+ pseudoElement: "none",
14013
+ applicableTo: ["button"],
14014
+ customizableOption: {
14015
+ name: "amount",
14016
+ type: "select",
14017
+ label: config.label,
14018
+ default: 100,
14019
+ options: [
14020
+ 0,
14021
+ 100,
14022
+ 200,
14023
+ 300,
14024
+ 400,
14025
+ 500,
14026
+ 600,
14027
+ 700,
14028
+ 800,
14029
+ 900
14030
+ ]
14031
+ },
14032
+ isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
14033
+ generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
14034
+ if (buttonConfig.background.type !== "solid") return "";
14035
+ const amount = (options.amount || 100) * config.shadeDirection;
14036
+ const baseToken = buttonConfig.background.colorToken ?? "primary-500";
14037
+ return `
14038
+ :where([data-theme-scope="${themeId}"]) .${variantId}:hover {
14039
+ background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
14040
+ }
14041
+ `;
14042
+ }
14043
+ };
14044
+ }
13965
14045
  buttonSizeNameSchema.options;
13966
14046
  //#endregion
13967
14047
  //#region ../theme-core/src/buttons/styles/domain.ts
@@ -16776,6 +16856,60 @@ function resolveThemeColorReferenceValue(input, context) {
16776
16856
  const reference = parseThemeColorReference(input, context);
16777
16857
  return reference.kind === "literal-css" ? reference.value : rgbColorValue(reference.token);
16778
16858
  }
16859
+ const BREAKPOINT_LG = 1024;
16860
+ const BREAKPOINT_XL = 1280;
16861
+ const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
16862
+ function mqUp(px) {
16863
+ return `(min-width: ${px}px)`;
16864
+ }
16865
+ function mqDown(px) {
16866
+ return `(max-width: ${px}px)`;
16867
+ }
16868
+ function mqBetween(minPx, maxPx) {
16869
+ return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
16870
+ }
16871
+ mqUp(640);
16872
+ mqUp(768);
16873
+ mqUp(BREAKPOINT_LG);
16874
+ mqUp(BREAKPOINT_XL);
16875
+ mqDown(639);
16876
+ mqDown(767);
16877
+ mqDown(BREAKPOINT_LG_DOWN);
16878
+ mqBetween(640, BREAKPOINT_LG_DOWN);
16879
+ mqDown(640);
16880
+ mqDown(768);
16881
+ //#endregion
16882
+ //#region ../theme-core/src/header/scrollTreatment.ts
16883
+ const headerScrollTreatmentSchema = z$1.discriminatedUnion("kind", [z$1.object({
16884
+ kind: z$1.literal("contrast-glass"),
16885
+ backgroundTone: z$1.enum(["light", "dark"])
16886
+ })]).optional();
16887
+ //#endregion
16888
+ //#region ../theme-core/src/header/containerSchema.ts
16889
+ const headerContainerSchema = z$1.object({
16890
+ rounded: z$1.enum([
16891
+ "none",
16892
+ "sm",
16893
+ "md",
16894
+ "lg",
16895
+ "xl",
16896
+ "2xl"
16897
+ ]).default("xl"),
16898
+ border: z$1.boolean().default(true),
16899
+ shadow: z$1.boolean().default(true),
16900
+ padding: z$1.enum([
16901
+ "sm",
16902
+ "md",
16903
+ "lg"
16904
+ ]).default("md"),
16905
+ tint: z$1.string().nullable().optional(),
16906
+ opacity: z$1.number().min(0).max(1).default(.12)
16907
+ }).optional();
16908
+ const headerInteractionPaletteSchema = z$1.enum([
16909
+ "primary",
16910
+ "secondary",
16911
+ "accent"
16912
+ ]);
16779
16913
  //#endregion
16780
16914
  //#region ../theme-core/src/schema.ts
16781
16915
  const axesSchema = z$1.object({
@@ -17185,25 +17319,6 @@ const navFontWeight = z$1.enum([
17185
17319
  ]);
17186
17320
  const headerMaxWidth = z$1.enum(["container", "full"]);
17187
17321
  const headerBarFrame = z$1.enum(["full-bleed", "inset-shell"]);
17188
- const headerContainerSchema = z$1.object({
17189
- rounded: z$1.enum([
17190
- "none",
17191
- "sm",
17192
- "md",
17193
- "lg",
17194
- "xl",
17195
- "2xl"
17196
- ]).default("xl"),
17197
- border: z$1.boolean().default(true),
17198
- shadow: z$1.boolean().default(true),
17199
- padding: z$1.enum([
17200
- "sm",
17201
- "md",
17202
- "lg"
17203
- ]).default("md"),
17204
- tint: z$1.string().nullable().optional(),
17205
- opacity: z$1.number().min(0).max(1).default(.12)
17206
- }).optional();
17207
17322
  const headerBorderSchema = componentBorderSchema.extend({ position: z$1.enum([
17208
17323
  "bottom",
17209
17324
  "top",
@@ -17330,6 +17445,7 @@ const headerSchema = z$1.object({
17330
17445
  shrinkOnScroll: z$1.boolean(),
17331
17446
  maxWidth: headerMaxWidth,
17332
17447
  barFrame: headerBarFrame.optional(),
17448
+ scrollTreatment: headerScrollTreatmentSchema,
17333
17449
  logoOverride: mediaSchema$1.nullable().optional(),
17334
17450
  background: headerBackgroundSchema.default({
17335
17451
  type: "color",
@@ -17342,6 +17458,7 @@ const headerSchema = z$1.object({
17342
17458
  navFontRole: z$1.enum(["body", "heading"]).optional(),
17343
17459
  navTypography: z$1.enum(["body", "heading"]).optional(),
17344
17460
  navTextSize: navLinkStyleSchema.shape.textSize,
17461
+ interactionPalette: headerInteractionPaletteSchema.optional(),
17345
17462
  navPlacement: z$1.enum(["end", "center"]).optional(),
17346
17463
  container: headerContainerSchema,
17347
17464
  border: headerBorderSchema,
@@ -17634,770 +17751,669 @@ z$1.object({
17634
17751
  themes: z$1.array(themeSchema).length(3)
17635
17752
  });
17636
17753
  //#endregion
17754
+ //#region ../theme-core/src/site-styles/lookOptionGroups.ts
17755
+ function defineLookOptionGroup(group) {
17756
+ defaultOption(group);
17757
+ return group;
17758
+ }
17759
+ function defaultOption(group) {
17760
+ const option = group.options.find((candidate) => candidate.id === group.defaultOptionId);
17761
+ if (option) return option;
17762
+ throw new Error(`Look option group "${group.id}" defaults to missing option "${group.defaultOptionId}".`);
17763
+ }
17764
+ //#endregion
17637
17765
  //#region ../theme-core/src/site-styles/appearancePresetResolution.ts
17638
17766
  function assertValidOptionGroups(preset) {
17639
17767
  preset.optionGroups?.forEach((group) => {
17640
- 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}".`);
17768
+ defineLookOptionGroup(group);
17641
17769
  });
17642
17770
  }
17643
17771
  function defineBlockAppearancePreset(preset) {
17644
17772
  assertValidOptionGroups(preset);
17645
17773
  return preset;
17646
17774
  }
17647
- [...[
17648
- defineBlockAppearancePreset({
17649
- kind: "block-design",
17650
- id: "hero-immersive-image",
17651
- target: "hero",
17652
- label: "Immersive image hero",
17653
- blockKinds: ["block.hero"],
17654
- constraints: { layoutFamilies: ["centered", "compact"] },
17655
- layoutPatches: [{
17656
- constraints: { layoutVariantKeys: ["micro"] },
17657
- designPatch: {
17658
- sectionHeight: "banner",
17659
- heroTypographyScale: "display"
17660
- }
17661
- }],
17662
- design: {
17663
- sectionSurface: "hero-image",
17664
- contentFrame: plainFrame,
17665
- itemSurface: "none",
17666
- sectionHeight: "hero",
17667
- heroComposition: "center",
17668
- heroTypographyScale: "display",
17669
- imageSurfaceTreatment: { kind: "neutral-wash" }
17775
+ //#endregion
17776
+ //#region ../theme-core/src/site-styles/blockAppearancePresets.ts
17777
+ const brandScrimOptionGroups = [{
17778
+ id: "image-surface-treatment",
17779
+ label: "Treatment",
17780
+ defaultOptionId: "brand-scrim-primary",
17781
+ options: [{
17782
+ id: "brand-scrim-primary",
17783
+ label: "Brand scrim",
17784
+ designPatch: { imageSurfaceTreatment: {
17785
+ kind: "brand-scrim",
17786
+ token: "primary"
17787
+ } }
17788
+ }, {
17789
+ id: "neutral-scrim",
17790
+ label: "Neutral scrim",
17791
+ designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
17792
+ }]
17793
+ }];
17794
+ const microBannerLayoutPatches = [{
17795
+ constraints: { layoutVariantKeys: ["micro"] },
17796
+ designPatch: { sectionHeight: "banner" }
17797
+ }];
17798
+ defineBlockAppearancePreset({
17799
+ id: "hero-immersive-image",
17800
+ target: "hero",
17801
+ label: "Immersive image hero",
17802
+ blockKinds: ["block.hero"],
17803
+ constraints: { layoutFamilies: ["centered", "compact"] },
17804
+ layoutPatches: [{
17805
+ constraints: { layoutVariantKeys: ["micro"] },
17806
+ designPatch: {
17807
+ sectionHeight: "banner",
17808
+ heroTypographyScale: "display"
17670
17809
  }
17671
- }),
17672
- defineBlockAppearancePreset({
17673
- kind: "block-design",
17674
- id: "hero-bottom-left-panel",
17675
- target: "hero",
17676
- label: "Bottom-left panel hero",
17677
- blockKinds: ["block.hero"],
17678
- constraints: { layoutFamilies: ["centered", "compact"] },
17679
- optionGroups: [{
17680
- id: "image-surface-treatment",
17681
- label: "Treatment",
17682
- selectedOptionId: "neutral-scrim",
17683
- options: [{
17684
- id: "neutral-scrim",
17685
- label: "Neutral scrim",
17686
- designPatch: { imageSurfaceTreatment: {
17687
- kind: "neutral-scrim",
17688
- intensity: "balanced"
17689
- } }
17690
- }, {
17691
- id: "brand-scrim-primary",
17692
- label: "Brand scrim",
17693
- designPatch: { imageSurfaceTreatment: {
17694
- kind: "brand-scrim",
17695
- token: "primary",
17696
- intensity: "balanced"
17697
- } }
17698
- }]
17699
- }],
17700
- layoutPatches: [{
17701
- constraints: { layoutVariantKeys: ["micro"] },
17702
- designPatch: {
17703
- sectionHeight: "banner",
17704
- heroTypographyScale: "editorial"
17705
- }
17706
- }],
17707
- design: {
17708
- sectionSurface: "hero-image",
17709
- contentFrame: panelFrame("raised"),
17710
- itemSurface: "none",
17711
- sectionHeight: "immersive",
17712
- heroComposition: "bottom-left",
17713
- heroTypographyScale: "display",
17714
- imageSurfaceTreatment: {
17810
+ }],
17811
+ design: {
17812
+ sectionSurface: "hero-image",
17813
+ contentFrame: plainFrame,
17814
+ itemSurface: "none",
17815
+ sectionHeight: "hero",
17816
+ heroComposition: "center",
17817
+ heroTypographyScale: "display",
17818
+ imageSurfaceTreatment: { kind: "neutral-wash" }
17819
+ }
17820
+ }), defineBlockAppearancePreset({
17821
+ id: "hero-bottom-left-panel",
17822
+ target: "hero",
17823
+ label: "Bottom-left panel hero",
17824
+ blockKinds: ["block.hero"],
17825
+ constraints: { layoutFamilies: ["centered", "compact"] },
17826
+ optionGroups: [{
17827
+ id: "image-surface-treatment",
17828
+ label: "Treatment",
17829
+ defaultOptionId: "neutral-scrim",
17830
+ options: [{
17831
+ id: "neutral-scrim",
17832
+ label: "Neutral scrim",
17833
+ designPatch: { imageSurfaceTreatment: {
17715
17834
  kind: "neutral-scrim",
17716
17835
  intensity: "balanced"
17717
- }
17718
- }
17719
- }),
17720
- defineBlockAppearancePreset({
17721
- kind: "block-design",
17722
- id: "hero-poster-image",
17723
- target: "hero",
17724
- label: "Poster image hero",
17725
- blockKinds: ["block.hero"],
17726
- constraints: { layoutFamilies: ["centered", "compact"] },
17727
- layoutPatches: [{
17728
- constraints: { layoutVariantKeys: ["micro"] },
17729
- designPatch: {
17730
- sectionHeight: "banner",
17731
- heroTypographyScale: "display"
17732
- }
17733
- }],
17734
- design: {
17735
- sectionSurface: "hero-image",
17736
- contentFrame: plainFrame,
17737
- itemSurface: "none",
17738
- sectionHeight: "immersive",
17739
- heroComposition: "center",
17740
- heroTypographyScale: "poster",
17741
- imageSurfaceTreatment: {
17836
+ } }
17837
+ }, {
17838
+ id: "brand-scrim-primary",
17839
+ label: "Brand scrim",
17840
+ designPatch: { imageSurfaceTreatment: {
17742
17841
  kind: "brand-scrim",
17743
17842
  token: "primary",
17744
- intensity: "strong"
17745
- }
17746
- }
17747
- }),
17748
- defineBlockAppearancePreset({
17749
- kind: "block-design",
17750
- id: "hero-brand-scrim",
17751
- target: "hero",
17752
- label: "Brand scrim image hero",
17753
- blockKinds: ["block.hero"],
17754
- constraints: { layoutFamilies: ["centered", "compact"] },
17755
- optionGroups: [{
17756
- id: "image-surface-treatment",
17757
- label: "Treatment",
17758
- selectedOptionId: "brand-scrim-primary",
17759
- options: [{
17760
- id: "brand-scrim-primary",
17761
- label: "Brand scrim",
17762
- designPatch: { imageSurfaceTreatment: {
17763
- kind: "brand-scrim",
17764
- token: "primary"
17765
- } }
17766
- }, {
17767
- id: "neutral-scrim",
17768
- label: "Neutral scrim",
17769
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
17770
- }]
17771
- }],
17772
- layoutPatches: [{
17773
- constraints: { layoutVariantKeys: ["micro"] },
17774
- designPatch: { sectionHeight: "banner" }
17775
- }],
17776
- design: {
17777
- sectionSurface: "hero-image",
17778
- contentFrame: plainFrame,
17779
- itemSurface: "none",
17780
- sectionHeight: "immersive",
17781
- heroComposition: "center",
17782
- heroTypographyScale: "display",
17783
- imageSurfaceTreatment: {
17784
- kind: "brand-scrim",
17785
- token: "primary"
17786
- }
17787
- }
17788
- }),
17789
- defineBlockAppearancePreset({
17790
- kind: "block-design",
17791
- id: "hero-brand-scrim-fixed-frame",
17792
- target: "hero",
17793
- label: "Fixed-frame brand scrim hero",
17794
- blockKinds: ["block.hero"],
17795
- constraints: { layoutFamilies: ["centered", "compact"] },
17796
- optionGroups: [{
17797
- id: "image-surface-treatment",
17798
- label: "Treatment",
17799
- selectedOptionId: "brand-scrim-primary",
17800
- options: [{
17801
- id: "brand-scrim-primary",
17802
- label: "Brand scrim",
17803
- designPatch: { imageSurfaceTreatment: {
17804
- kind: "brand-scrim",
17805
- token: "primary"
17806
- } }
17807
- }, {
17808
- id: "neutral-scrim",
17809
- label: "Neutral scrim",
17810
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
17811
- }]
17812
- }],
17813
- layoutPatches: [{
17814
- constraints: { layoutVariantKeys: ["micro"] },
17815
- designPatch: { sectionHeight: "banner" }
17816
- }],
17817
- design: {
17818
- sectionSurface: "hero-image",
17819
- contentFrame: plainFrame,
17820
- itemSurface: "none",
17821
- sectionHeight: "immersive",
17822
- heroComposition: "center",
17823
- heroTypographyScale: "display",
17824
- imageSurfaceTreatment: {
17825
- kind: "brand-scrim",
17826
- token: "primary"
17827
- },
17828
- imageSurfaceMotion: "fixed-frame",
17829
- eyebrowTreatment: "accent-pill-bounce"
17830
- }
17831
- }),
17832
- defineBlockAppearancePreset({
17833
- kind: "block-design",
17834
- id: "hero-brand-depth-expressive",
17835
- target: "hero",
17836
- label: "Expressive brand-depth hero",
17837
- blockKinds: ["block.hero"],
17838
- constraints: { layoutFamilies: ["centered", "compact"] },
17839
- design: {
17840
- sectionSurface: "brand-depth-band",
17841
- contentFrame: plainFrame,
17842
- itemSurface: "none",
17843
- heroComposition: "center",
17844
- heroTypographyScale: "editorial",
17845
- eyebrowTreatment: "accent-pill-bounce"
17846
- }
17847
- }),
17848
- defineBlockAppearancePreset({
17849
- kind: "block-design",
17850
- id: "hero-contained-intro",
17851
- target: "hero",
17852
- label: "Contained intro hero",
17853
- blockKinds: ["block.hero"],
17854
- design: {
17855
- sectionSurface: "muted-band",
17856
- contentFrame: panelFrame("inset"),
17857
- itemSurface: "none",
17858
- heroComposition: "center",
17859
- heroTypographyScale: "editorial"
17860
- }
17861
- }),
17862
- defineBlockAppearancePreset({
17863
- kind: "block-design",
17864
- id: "hero-split-editorial",
17865
- target: "hero",
17866
- label: "Editorial split hero",
17867
- blockKinds: ["block.hero"],
17868
- constraints: { layoutFamilies: ["split"] },
17869
- design: {
17870
- sectionSurface: "base",
17871
- contentFrame: plainFrame,
17872
- itemSurface: "none",
17873
- heroTypographyScale: "editorial"
17874
- }
17875
- }),
17876
- defineBlockAppearancePreset({
17877
- kind: "block-design",
17878
- id: "hero-split-brand",
17879
- target: "hero",
17880
- label: "Brand split hero",
17881
- blockKinds: ["block.hero"],
17882
- constraints: { layoutFamilies: ["split"] },
17883
- design: {
17884
- sectionSurface: "brand-depth-band",
17885
- contentFrame: plainFrame,
17886
- itemSurface: "none",
17887
- heroTypographyScale: "display",
17888
- eyebrowTreatment: "accent-pill-bounce"
17889
- }
17890
- }),
17891
- defineBlockAppearancePreset({
17892
- kind: "block-design",
17893
- id: "hero-split-soft-panel",
17894
- target: "hero",
17895
- label: "Soft panel split hero",
17896
- blockKinds: ["block.hero"],
17897
- constraints: { layoutFamilies: ["split"] },
17898
- design: {
17899
- sectionSurface: "muted-band",
17900
- contentFrame: panelFrame("raised"),
17901
- itemSurface: "none",
17843
+ intensity: "balanced"
17844
+ } }
17845
+ }]
17846
+ }],
17847
+ layoutPatches: [{
17848
+ constraints: { layoutVariantKeys: ["micro"] },
17849
+ designPatch: {
17850
+ sectionHeight: "banner",
17902
17851
  heroTypographyScale: "editorial"
17903
17852
  }
17904
- }),
17905
- defineBlockAppearancePreset({
17906
- kind: "block-design",
17907
- id: "hero-split-accent",
17908
- target: "hero",
17909
- label: "Accent split hero",
17910
- blockKinds: ["block.hero"],
17911
- constraints: { layoutFamilies: ["split"] },
17912
- design: {
17913
- sectionSurface: "accent-band",
17914
- contentFrame: panelFrame("raised"),
17915
- itemSurface: "none",
17853
+ }],
17854
+ design: {
17855
+ sectionSurface: "hero-image",
17856
+ contentFrame: panelFrame("raised"),
17857
+ itemSurface: "none",
17858
+ sectionHeight: "immersive",
17859
+ heroComposition: "bottom-left",
17860
+ heroTypographyScale: "display",
17861
+ imageSurfaceTreatment: {
17862
+ kind: "neutral-scrim",
17863
+ intensity: "balanced"
17864
+ }
17865
+ }
17866
+ }), defineBlockAppearancePreset({
17867
+ id: "hero-poster-image",
17868
+ target: "hero",
17869
+ label: "Poster image hero",
17870
+ blockKinds: ["block.hero"],
17871
+ constraints: { layoutFamilies: ["centered", "compact"] },
17872
+ layoutPatches: [{
17873
+ constraints: { layoutVariantKeys: ["micro"] },
17874
+ designPatch: {
17875
+ sectionHeight: "banner",
17916
17876
  heroTypographyScale: "display"
17917
17877
  }
17918
- }),
17919
- defineBlockAppearancePreset({
17920
- kind: "block-design",
17921
- id: "intro-editorial-statement",
17922
- target: "intro",
17923
- label: "Editorial intro statement",
17924
- blockKinds: ["block.intro"],
17925
- constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
17926
- design: {
17927
- sectionSurface: "base",
17928
- contentFrame: plainFrame,
17929
- itemSurface: "none",
17930
- composition: {
17931
- kind: "intro",
17932
- treatment: "editorial-statement"
17933
- }
17934
- }
17935
- }),
17936
- defineBlockAppearancePreset({
17937
- kind: "block-design",
17938
- id: "intro-portrait-bio",
17939
- target: "intro",
17940
- label: "Portrait and bio",
17941
- blockKinds: ["block.intro"],
17942
- constraints: { layoutVariantKeys: ["media-copy"] },
17943
- design: {
17944
- sectionSurface: "base",
17945
- contentFrame: plainFrame,
17946
- itemSurface: "none",
17947
- composition: {
17948
- kind: "intro",
17949
- treatment: "portrait-bio"
17950
- }
17951
- }
17952
- }),
17953
- defineBlockAppearancePreset({
17954
- kind: "block-design",
17955
- id: "offerings-preview-default-cards",
17956
- target: "offerings",
17957
- label: "Default offering cards",
17958
- blockKinds: ["block.offerings-preview"],
17959
- design: {
17960
- sectionSurface: "base",
17961
- contentFrame: plainFrame,
17962
- itemSurface: "default"
17963
- }
17964
- }),
17965
- defineBlockAppearancePreset({
17966
- kind: "block-design",
17967
- id: "offerings-preview-secondary-cards",
17968
- target: "offerings",
17969
- label: "Secondary offering cards",
17970
- blockKinds: ["block.offerings-preview"],
17971
- design: {
17972
- sectionSurface: "muted-band",
17973
- contentFrame: plainFrame,
17974
- itemSurface: "inset"
17975
- }
17976
- }),
17977
- defineBlockAppearancePreset({
17978
- kind: "block-design",
17979
- id: "offerings-preview-non-carded",
17980
- target: "offerings",
17981
- label: "Non-carded offerings",
17982
- blockKinds: ["block.offerings-preview"],
17983
- design: {
17984
- sectionSurface: "muted-band",
17985
- contentFrame: plainFrame,
17986
- itemSurface: "editorial"
17987
- }
17988
- }),
17989
- defineBlockAppearancePreset({
17990
- kind: "block-design",
17991
- id: "offerings-preview-paired-feature-cards",
17992
- target: "offerings",
17993
- label: "Paired feature cards",
17994
- blockKinds: ["block.offerings-preview"],
17995
- constraints: { layoutVariantKeys: ["cards"] },
17996
- design: {
17997
- sectionSurface: "base",
17998
- contentFrame: plainFrame,
17999
- itemSurface: "none"
18000
- }
18001
- }),
18002
- defineBlockAppearancePreset({
18003
- kind: "block-design",
18004
- id: "offerings-preview-open-editorial-columns",
18005
- target: "offerings",
18006
- label: "Open editorial columns",
18007
- blockKinds: ["block.offerings-preview"],
18008
- constraints: { layoutVariantKeys: ["cards"] },
18009
- design: {
18010
- sectionSurface: "base",
18011
- contentFrame: plainFrame,
18012
- itemSurface: "none"
18013
- }
18014
- }),
18015
- defineBlockAppearancePreset({
18016
- kind: "block-design",
18017
- id: "offerings-preview-joined-programme-panel",
18018
- target: "offerings",
18019
- label: "Joined programme panel",
18020
- blockKinds: ["block.offerings-preview"],
18021
- constraints: { layoutVariantKeys: ["cards"] },
18022
- design: {
18023
- sectionSurface: "base",
18024
- contentFrame: plainFrame,
18025
- itemSurface: "none"
18026
- }
18027
- }),
18028
- defineBlockAppearancePreset({
18029
- kind: "block-design",
18030
- id: "feature-cards-raised-rule",
18031
- target: "feature-cards",
18032
- label: "Raised cards with rule",
18033
- blockKinds: ["block.feature-cards"],
18034
- design: {
18035
- sectionSurface: "base",
18036
- contentFrame: plainFrame,
18037
- itemSurface: "raised"
18038
- }
18039
- }),
18040
- defineBlockAppearancePreset({
18041
- kind: "block-design",
18042
- id: "feature-cards-bold-colors",
18043
- target: "feature-cards",
18044
- label: "Bold colour-blocked cards",
18045
- blockKinds: ["block.feature-cards"],
18046
- design: {
18047
- sectionSurface: "base",
18048
- contentFrame: plainFrame,
18049
- itemSurface: "color-blocked"
18050
- }
18051
- }),
18052
- defineBlockAppearancePreset({
18053
- kind: "block-design",
18054
- id: "feature-cards-editorial-columns",
18055
- target: "feature-cards",
18056
- label: "Editorial open columns",
18057
- blockKinds: ["block.feature-cards"],
18058
- design: {
18059
- sectionSurface: "base",
18060
- contentFrame: plainFrame,
18061
- itemSurface: "editorial"
18062
- }
18063
- }),
18064
- defineBlockAppearancePreset({
18065
- kind: "block-design",
18066
- id: "feature-cards-asymmetric-emphasis",
18067
- target: "feature-cards",
18068
- label: "Asymmetric emphasis pair",
18069
- blockKinds: ["block.feature-cards"],
18070
- constraints: { layoutFamilies: ["grid"] },
18071
- design: {
18072
- sectionSurface: "base",
18073
- contentFrame: plainFrame,
18074
- itemSurface: "none",
18075
- composition: {
18076
- kind: "feature-cards",
18077
- treatment: "asymmetric-emphasis"
18078
- }
18079
- }
18080
- }),
18081
- defineBlockAppearancePreset({
18082
- kind: "block-design",
18083
- id: "feature-cards-framed-programme",
18084
- target: "feature-cards",
18085
- label: "Framed programme cards",
18086
- blockKinds: ["block.feature-cards"],
18087
- constraints: { layoutFamilies: ["grid"] },
18088
- design: {
18089
- sectionSurface: "brand-depth-band",
18090
- contentFrame: plainFrame,
18091
- itemSurface: "inset",
18092
- composition: {
18093
- kind: "feature-cards",
18094
- treatment: "framed-programme"
18095
- }
18096
- }
18097
- }),
18098
- defineBlockAppearancePreset({
18099
- kind: "block-design",
18100
- id: "feature-cards-soft-panels",
18101
- target: "feature-cards",
18102
- label: "Soft tinted panels",
18103
- blockKinds: ["block.feature-cards"],
18104
- design: {
18105
- sectionSurface: "base",
18106
- contentFrame: plainFrame,
18107
- itemSurface: "inset"
18108
- }
18109
- }),
18110
- defineBlockAppearancePreset({
18111
- kind: "block-design",
18112
- id: "feature-cards-editorial-diptych",
18113
- target: "feature-cards",
18114
- label: "Editorial diptych",
18115
- blockKinds: ["block.feature-cards"],
18116
- constraints: { layoutVariantKeys: ["editorial-diptych"] },
18117
- design: {
18118
- sectionSurface: "base",
18119
- contentFrame: plainFrame,
18120
- itemSurface: "flat"
18121
- }
18122
- }),
18123
- defineBlockAppearancePreset({
18124
- kind: "block-design",
18125
- id: "feature-cards-editorial-pathways",
18126
- target: "feature-cards",
18127
- label: "Editorial pathways",
18128
- blockKinds: ["block.feature-cards"],
18129
- constraints: { layoutVariantKeys: ["editorial-pathways"] },
18130
- design: {
18131
- sectionSurface: "base",
18132
- contentFrame: plainFrame,
18133
- itemSurface: "flat"
18134
- }
18135
- }),
18136
- defineBlockAppearancePreset({
18137
- kind: "block-design",
18138
- id: "feature-cards-photo-tiles",
18139
- target: "feature-cards",
18140
- label: "Photo tiles",
18141
- blockKinds: ["block.feature-cards"],
18142
- design: {
18143
- sectionSurface: "base",
18144
- contentFrame: plainFrame,
18145
- itemSurface: "raised"
18146
- }
18147
- }),
18148
- defineBlockAppearancePreset({
18149
- kind: "block-design",
18150
- id: "events-lined-panel",
18151
- target: "events",
18152
- label: "Raised event panel",
18153
- blockKinds: ["block.event-calendar", "block.event-listing"],
18154
- design: {
18155
- sectionSurface: "base",
18156
- contentFrame: panelFrame("raised"),
18157
- itemSurface: "none"
18158
- }
18159
- }),
18160
- defineBlockAppearancePreset({
18161
- kind: "block-design",
18162
- id: "events-ruled-register",
18163
- target: "events",
18164
- label: "Ruled event register",
18165
- blockKinds: ["block.event-calendar", "block.event-listing"],
18166
- design: {
18167
- sectionSurface: "brand-depth-band",
18168
- contentFrame: plainFrame,
18169
- itemSurface: "none",
18170
- eventListTreatment: "ruled-register"
18171
- }
18172
- }),
18173
- defineBlockAppearancePreset({
18174
- kind: "block-design",
18175
- id: "events-editorial-register",
18176
- target: "events",
18177
- label: "Editorial event register",
18178
- blockKinds: ["block.event-calendar", "block.event-listing"],
18179
- design: {
18180
- sectionSurface: "base",
18181
- contentFrame: plainFrame,
18182
- itemSurface: "none",
18183
- eventListTreatment: "editorial-register"
18184
- }
18185
- }),
18186
- defineBlockAppearancePreset({
18187
- kind: "block-design",
18188
- id: "events-dense-index",
18189
- target: "events",
18190
- label: "Dense event index",
18191
- blockKinds: ["block.event-calendar", "block.event-listing"],
18192
- design: {
18193
- sectionSurface: "accent-band",
18194
- contentFrame: plainFrame,
18195
- itemSurface: "none",
18196
- eventListTreatment: "dense-index"
18197
- }
18198
- }),
18199
- defineBlockAppearancePreset({
18200
- kind: "block-design",
18201
- id: "schedule-details-brand-depth",
18202
- target: "events",
18203
- label: "Brand-depth schedule details",
18204
- blockKinds: ["block.event-details", "block.course-details"],
18205
- design: {
18206
- sectionSurface: "brand-depth-band",
18207
- contentFrame: plainFrame,
18208
- itemSurface: "none",
18209
- tileTreatment: "brand-depth"
18210
- }
18211
- }),
18212
- defineBlockAppearancePreset({
18213
- kind: "block-design",
18214
- id: "media-text-flush-feature",
18215
- target: "media-text",
18216
- label: "Flush media feature",
18217
- blockKinds: ["block.media-text"],
18218
- design: {
18219
- sectionSurface: "muted-band",
18220
- contentFrame: flushPanelFrame({ bleed: "start" }),
18221
- itemSurface: "none"
18222
- }
18223
- }),
18224
- defineBlockAppearancePreset({
18225
- kind: "block-design",
18226
- id: "testimonials-simple-cards",
18227
- target: "testimonials",
18228
- label: "Simple testimonial cards",
18229
- blockKinds: ["block.testimonials"],
18230
- design: {
18231
- sectionSurface: "base",
18232
- contentFrame: plainFrame,
18233
- itemSurface: "default"
18234
- }
18235
- }),
18236
- defineBlockAppearancePreset({
18237
- kind: "block-design",
18238
- id: "testimonials-raised-panel",
18239
- target: "testimonials",
18240
- label: "Raised testimonial panel",
18241
- blockKinds: ["block.testimonials"],
18242
- design: {
18243
- sectionSurface: "muted-band",
18244
- contentFrame: panelFrame("raised"),
18245
- itemSurface: "raised"
18246
- }
18247
- }),
18248
- defineBlockAppearancePreset({
18249
- kind: "block-design",
18250
- id: "testimonials-accent-panel",
18251
- target: "testimonials",
18252
- label: "Accent testimonial panel",
18253
- blockKinds: ["block.testimonials"],
18254
- design: {
18255
- sectionSurface: "accent-band",
18256
- contentFrame: panelFrame("raised"),
18257
- itemSurface: "raised"
18258
- }
18259
- }),
18260
- defineBlockAppearancePreset({
18261
- kind: "block-design",
18262
- id: "testimonials-default-cards",
18263
- target: "testimonials",
18264
- label: "Default cards",
18265
- blockKinds: ["block.testimonials"],
18266
- design: {
18267
- sectionSurface: "base",
18268
- contentFrame: plainFrame,
18269
- itemSurface: "none",
18270
- testimonialCardTreatment: "default"
18271
- }
18272
- }),
18273
- defineBlockAppearancePreset({
18274
- kind: "block-design",
18275
- id: "testimonials-statement-cards",
18276
- target: "testimonials",
18277
- label: "Statement cards",
18278
- blockKinds: ["block.testimonials"],
18279
- design: {
18280
- sectionSurface: "accent-band",
18281
- contentFrame: plainFrame,
18282
- itemSurface: "raised",
18283
- testimonialCardTreatment: "statement"
18284
- }
18285
- }),
18286
- defineBlockAppearancePreset({
18287
- kind: "block-design",
18288
- id: "testimonials-brand-statement-cards",
18289
- target: "testimonials",
18290
- label: "Brand statement cards",
18291
- blockKinds: ["block.testimonials"],
18292
- design: {
18293
- sectionSurface: "brand-depth-band",
18294
- contentFrame: plainFrame,
18295
- itemSurface: "raised",
18296
- testimonialCardTreatment: "statement"
18297
- }
18298
- }),
18299
- defineBlockAppearancePreset({
18300
- kind: "block-design",
18301
- id: "testimonials-non-carded",
18302
- target: "testimonials",
18303
- label: "Non-carded",
18304
- blockKinds: ["block.testimonials"],
18305
- design: {
18306
- sectionSurface: "muted-band",
18307
- contentFrame: plainFrame,
18308
- itemSurface: "none",
18309
- testimonialCardTreatment: "non-carded"
18310
- }
18311
- }),
18312
- defineBlockAppearancePreset({
18313
- kind: "block-design",
18314
- id: "testimonials-evergreen-lead",
18315
- target: "testimonials",
18316
- label: "Evergreen lead",
18317
- blockKinds: ["block.testimonials"],
18318
- constraints: { layoutVariantKeys: ["featured-editorial"] },
18319
- design: {
18320
- sectionSurface: "base",
18321
- contentFrame: plainFrame,
18322
- itemSurface: "none"
18323
- }
18324
- }),
18325
- defineBlockAppearancePreset({
18326
- kind: "block-design",
18327
- id: "testimonials-room-and-response",
18328
- target: "testimonials",
18329
- label: "Room and response",
18330
- blockKinds: ["block.testimonials"],
18331
- constraints: { layoutVariantKeys: ["featured-editorial"] },
18332
- design: {
18333
- sectionSurface: "base",
18334
- contentFrame: plainFrame,
18335
- itemSurface: "none"
18336
- }
18337
- }),
18338
- defineBlockAppearancePreset({
18339
- kind: "block-design",
18340
- id: "testimonials-open-floor",
18341
- target: "testimonials",
18342
- label: "Open floor",
18343
- blockKinds: ["block.testimonials"],
18344
- constraints: { layoutVariantKeys: ["featured-editorial"] },
18345
- design: {
18346
- sectionSurface: "base",
18347
- contentFrame: plainFrame,
18348
- itemSurface: "none"
18349
- }
18350
- }),
18351
- defineBlockAppearancePreset({
18352
- kind: "block-design",
18353
- id: "faq-base-accordion",
18354
- target: "faq",
18355
- label: "Base accordion FAQ",
18356
- blockKinds: ["block.faq"],
18357
- design: {
18358
- sectionSurface: "base",
18359
- contentFrame: plainFrame,
18360
- itemSurface: "default"
18361
- }
18362
- }),
18363
- defineBlockAppearancePreset({
18364
- kind: "block-design",
18365
- id: "faq-contained-help",
18366
- target: "faq",
18367
- label: "Contained help panel",
18368
- blockKinds: ["block.faq"],
18369
- design: {
18370
- sectionSurface: "muted-band",
18371
- contentFrame: panelFrame("inset"),
18372
- itemSurface: "default"
18373
- }
18374
- }),
18375
- defineBlockAppearancePreset({
18376
- kind: "block-design",
18377
- id: "contact-form-panel",
18378
- target: "contact-form",
18379
- label: "Raised form panel",
18380
- blockKinds: ["block.form"],
18381
- design: {
18382
- sectionSurface: "muted-band",
18383
- contentFrame: panelFrame("raised"),
18384
- itemSurface: "none"
18385
- }
18386
- }),
18387
- defineBlockAppearancePreset({
18388
- kind: "block-design",
18389
- id: "cta-accent-band",
18390
- target: "cta",
18391
- label: "Accent CTA band",
18392
- blockKinds: ["block.cta-full"],
18393
- design: {
18394
- sectionSurface: "accent-band",
18395
- contentFrame: plainFrame,
18396
- itemSurface: "none",
18397
- eyebrowTreatment: "accent"
18398
- }
18399
- })
18400
- ]];
17878
+ }],
17879
+ design: {
17880
+ sectionSurface: "hero-image",
17881
+ contentFrame: plainFrame,
17882
+ itemSurface: "none",
17883
+ sectionHeight: "immersive",
17884
+ heroComposition: "center",
17885
+ heroTypographyScale: "poster",
17886
+ imageSurfaceTreatment: {
17887
+ kind: "brand-scrim",
17888
+ token: "primary",
17889
+ intensity: "strong"
17890
+ }
17891
+ }
17892
+ }), defineBlockAppearancePreset({
17893
+ id: "hero-brand-scrim",
17894
+ target: "hero",
17895
+ label: "Brand scrim image hero",
17896
+ blockKinds: ["block.hero"],
17897
+ constraints: { layoutFamilies: ["centered", "compact"] },
17898
+ optionGroups: brandScrimOptionGroups,
17899
+ layoutPatches: microBannerLayoutPatches,
17900
+ design: {
17901
+ sectionSurface: "hero-image",
17902
+ contentFrame: plainFrame,
17903
+ itemSurface: "none",
17904
+ sectionHeight: "immersive",
17905
+ heroComposition: "center",
17906
+ heroTypographyScale: "display",
17907
+ imageSurfaceTreatment: {
17908
+ kind: "brand-scrim",
17909
+ token: "primary"
17910
+ }
17911
+ }
17912
+ }), defineBlockAppearancePreset({
17913
+ id: "hero-brand-scrim-fixed-frame",
17914
+ target: "hero",
17915
+ label: "Fixed-frame brand scrim hero",
17916
+ blockKinds: ["block.hero"],
17917
+ constraints: { layoutFamilies: ["centered", "compact"] },
17918
+ optionGroups: brandScrimOptionGroups,
17919
+ layoutPatches: microBannerLayoutPatches,
17920
+ design: {
17921
+ sectionSurface: "hero-image",
17922
+ contentFrame: plainFrame,
17923
+ itemSurface: "none",
17924
+ sectionHeight: "immersive",
17925
+ heroComposition: "center",
17926
+ heroTypographyScale: "display",
17927
+ imageSurfaceTreatment: {
17928
+ kind: "brand-scrim",
17929
+ token: "primary"
17930
+ },
17931
+ imageSurfaceMotion: "fixed-frame",
17932
+ eyebrowTreatment: "accent-pill-bounce"
17933
+ }
17934
+ }), defineBlockAppearancePreset({
17935
+ id: "hero-brand-depth-expressive",
17936
+ target: "hero",
17937
+ label: "Expressive brand-depth hero",
17938
+ blockKinds: ["block.hero"],
17939
+ constraints: { layoutFamilies: ["centered", "compact"] },
17940
+ design: {
17941
+ sectionSurface: "brand-depth-band",
17942
+ contentFrame: plainFrame,
17943
+ itemSurface: "none",
17944
+ heroComposition: "center",
17945
+ heroTypographyScale: "editorial",
17946
+ eyebrowTreatment: "accent-pill-bounce"
17947
+ }
17948
+ }), defineBlockAppearancePreset({
17949
+ id: "hero-contained-intro",
17950
+ target: "hero",
17951
+ label: "Contained intro hero",
17952
+ blockKinds: ["block.hero"],
17953
+ design: {
17954
+ sectionSurface: "muted-band",
17955
+ contentFrame: panelFrame("inset"),
17956
+ itemSurface: "none",
17957
+ heroComposition: "center",
17958
+ heroTypographyScale: "editorial"
17959
+ }
17960
+ }), defineBlockAppearancePreset({
17961
+ id: "hero-split-editorial",
17962
+ target: "hero",
17963
+ label: "Editorial split hero",
17964
+ blockKinds: ["block.hero"],
17965
+ constraints: { layoutFamilies: ["split"] },
17966
+ design: {
17967
+ sectionSurface: "base",
17968
+ contentFrame: plainFrame,
17969
+ itemSurface: "none",
17970
+ heroTypographyScale: "editorial"
17971
+ }
17972
+ }), defineBlockAppearancePreset({
17973
+ id: "hero-split-brand",
17974
+ target: "hero",
17975
+ label: "Brand split hero",
17976
+ blockKinds: ["block.hero"],
17977
+ constraints: { layoutFamilies: ["split"] },
17978
+ design: {
17979
+ sectionSurface: "brand-depth-band",
17980
+ contentFrame: plainFrame,
17981
+ itemSurface: "none",
17982
+ heroTypographyScale: "display",
17983
+ eyebrowTreatment: "accent-pill-bounce"
17984
+ }
17985
+ }), defineBlockAppearancePreset({
17986
+ id: "hero-split-soft-panel",
17987
+ target: "hero",
17988
+ label: "Soft panel split hero",
17989
+ blockKinds: ["block.hero"],
17990
+ constraints: { layoutFamilies: ["split"] },
17991
+ design: {
17992
+ sectionSurface: "muted-band",
17993
+ contentFrame: panelFrame("raised"),
17994
+ itemSurface: "none",
17995
+ heroTypographyScale: "editorial"
17996
+ }
17997
+ }), defineBlockAppearancePreset({
17998
+ id: "hero-split-accent",
17999
+ target: "hero",
18000
+ label: "Accent split hero",
18001
+ blockKinds: ["block.hero"],
18002
+ constraints: { layoutFamilies: ["split"] },
18003
+ design: {
18004
+ sectionSurface: "accent-band",
18005
+ contentFrame: panelFrame("raised"),
18006
+ itemSurface: "none",
18007
+ heroTypographyScale: "display"
18008
+ }
18009
+ }), defineBlockAppearancePreset({
18010
+ id: "intro-editorial-statement",
18011
+ target: "intro",
18012
+ label: "Editorial intro statement",
18013
+ blockKinds: ["block.intro"],
18014
+ constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
18015
+ design: {
18016
+ sectionSurface: "base",
18017
+ contentFrame: plainFrame,
18018
+ itemSurface: "none",
18019
+ composition: {
18020
+ kind: "intro",
18021
+ treatment: "editorial-statement"
18022
+ }
18023
+ }
18024
+ }), defineBlockAppearancePreset({
18025
+ id: "intro-portrait-bio",
18026
+ target: "intro",
18027
+ label: "Portrait and bio",
18028
+ blockKinds: ["block.intro"],
18029
+ constraints: { layoutVariantKeys: ["media-copy"] },
18030
+ design: {
18031
+ sectionSurface: "base",
18032
+ contentFrame: plainFrame,
18033
+ itemSurface: "none",
18034
+ composition: {
18035
+ kind: "intro",
18036
+ treatment: "portrait-bio"
18037
+ }
18038
+ }
18039
+ }), defineBlockAppearancePreset({
18040
+ id: "offerings-preview-default-cards",
18041
+ target: "offerings",
18042
+ label: "Default offering cards",
18043
+ blockKinds: ["block.offerings-preview"],
18044
+ design: {
18045
+ sectionSurface: "base",
18046
+ contentFrame: plainFrame,
18047
+ itemSurface: "default"
18048
+ }
18049
+ }), defineBlockAppearancePreset({
18050
+ id: "offerings-preview-secondary-cards",
18051
+ target: "offerings",
18052
+ label: "Secondary offering cards",
18053
+ blockKinds: ["block.offerings-preview"],
18054
+ design: {
18055
+ sectionSurface: "muted-band",
18056
+ contentFrame: plainFrame,
18057
+ itemSurface: "inset"
18058
+ }
18059
+ }), defineBlockAppearancePreset({
18060
+ id: "offerings-preview-non-carded",
18061
+ target: "offerings",
18062
+ label: "Non-carded offerings",
18063
+ blockKinds: ["block.offerings-preview"],
18064
+ design: {
18065
+ sectionSurface: "muted-band",
18066
+ contentFrame: plainFrame,
18067
+ itemSurface: "editorial"
18068
+ }
18069
+ }), defineBlockAppearancePreset({
18070
+ id: "offerings-preview-paired-feature-cards",
18071
+ target: "offerings",
18072
+ label: "Paired feature cards",
18073
+ blockKinds: ["block.offerings-preview"],
18074
+ constraints: { layoutVariantKeys: ["cards"] },
18075
+ design: {
18076
+ sectionSurface: "base",
18077
+ contentFrame: plainFrame,
18078
+ itemSurface: "none"
18079
+ }
18080
+ }), defineBlockAppearancePreset({
18081
+ id: "offerings-preview-open-editorial-columns",
18082
+ target: "offerings",
18083
+ label: "Open editorial columns",
18084
+ blockKinds: ["block.offerings-preview"],
18085
+ constraints: { layoutVariantKeys: ["cards"] },
18086
+ design: {
18087
+ sectionSurface: "base",
18088
+ contentFrame: plainFrame,
18089
+ itemSurface: "none"
18090
+ }
18091
+ }), defineBlockAppearancePreset({
18092
+ id: "offerings-preview-joined-programme-panel",
18093
+ target: "offerings",
18094
+ label: "Joined programme panel",
18095
+ blockKinds: ["block.offerings-preview"],
18096
+ constraints: { layoutVariantKeys: ["cards"] },
18097
+ design: {
18098
+ sectionSurface: "base",
18099
+ contentFrame: plainFrame,
18100
+ itemSurface: "none"
18101
+ }
18102
+ }), defineBlockAppearancePreset({
18103
+ id: "feature-cards-raised-rule",
18104
+ target: "feature-cards",
18105
+ label: "Raised cards with rule",
18106
+ blockKinds: ["block.feature-cards"],
18107
+ design: {
18108
+ sectionSurface: "base",
18109
+ contentFrame: plainFrame,
18110
+ itemSurface: "raised"
18111
+ }
18112
+ }), defineBlockAppearancePreset({
18113
+ id: "feature-cards-bold-colors",
18114
+ target: "feature-cards",
18115
+ label: "Bold colour-blocked cards",
18116
+ blockKinds: ["block.feature-cards"],
18117
+ design: {
18118
+ sectionSurface: "base",
18119
+ contentFrame: plainFrame,
18120
+ itemSurface: "color-blocked"
18121
+ }
18122
+ }), defineBlockAppearancePreset({
18123
+ id: "feature-cards-editorial-columns",
18124
+ target: "feature-cards",
18125
+ label: "Editorial open columns",
18126
+ blockKinds: ["block.feature-cards"],
18127
+ design: {
18128
+ sectionSurface: "base",
18129
+ contentFrame: plainFrame,
18130
+ itemSurface: "editorial"
18131
+ }
18132
+ }), defineBlockAppearancePreset({
18133
+ id: "feature-cards-asymmetric-emphasis",
18134
+ target: "feature-cards",
18135
+ label: "Asymmetric emphasis pair",
18136
+ blockKinds: ["block.feature-cards"],
18137
+ constraints: { layoutFamilies: ["grid"] },
18138
+ design: {
18139
+ sectionSurface: "base",
18140
+ contentFrame: plainFrame,
18141
+ itemSurface: "none",
18142
+ composition: {
18143
+ kind: "feature-cards",
18144
+ treatment: "asymmetric-emphasis"
18145
+ }
18146
+ }
18147
+ }), defineBlockAppearancePreset({
18148
+ id: "feature-cards-framed-programme",
18149
+ target: "feature-cards",
18150
+ label: "Framed programme cards",
18151
+ blockKinds: ["block.feature-cards"],
18152
+ constraints: { layoutFamilies: ["grid"] },
18153
+ design: {
18154
+ sectionSurface: "brand-depth-band",
18155
+ contentFrame: plainFrame,
18156
+ itemSurface: "inset",
18157
+ composition: {
18158
+ kind: "feature-cards",
18159
+ treatment: "framed-programme"
18160
+ }
18161
+ }
18162
+ }), defineBlockAppearancePreset({
18163
+ id: "feature-cards-soft-panels",
18164
+ target: "feature-cards",
18165
+ label: "Soft tinted panels",
18166
+ blockKinds: ["block.feature-cards"],
18167
+ design: {
18168
+ sectionSurface: "base",
18169
+ contentFrame: plainFrame,
18170
+ itemSurface: "inset"
18171
+ }
18172
+ }), defineBlockAppearancePreset({
18173
+ id: "feature-cards-editorial-diptych",
18174
+ target: "feature-cards",
18175
+ label: "Editorial diptych",
18176
+ blockKinds: ["block.feature-cards"],
18177
+ constraints: { layoutVariantKeys: ["editorial-diptych"] },
18178
+ design: {
18179
+ sectionSurface: "base",
18180
+ contentFrame: plainFrame,
18181
+ itemSurface: "flat"
18182
+ }
18183
+ }), defineBlockAppearancePreset({
18184
+ id: "feature-cards-editorial-pathways",
18185
+ target: "feature-cards",
18186
+ label: "Editorial pathways",
18187
+ blockKinds: ["block.feature-cards"],
18188
+ constraints: { layoutVariantKeys: ["editorial-pathways"] },
18189
+ design: {
18190
+ sectionSurface: "base",
18191
+ contentFrame: plainFrame,
18192
+ itemSurface: "flat"
18193
+ }
18194
+ }), defineBlockAppearancePreset({
18195
+ id: "feature-cards-photo-tiles",
18196
+ target: "feature-cards",
18197
+ label: "Photo tiles",
18198
+ blockKinds: ["block.feature-cards"],
18199
+ design: {
18200
+ sectionSurface: "base",
18201
+ contentFrame: plainFrame,
18202
+ itemSurface: "raised"
18203
+ }
18204
+ }), defineBlockAppearancePreset({
18205
+ id: "events-lined-panel",
18206
+ target: "events",
18207
+ label: "Raised event panel",
18208
+ blockKinds: ["block.event-calendar", "block.event-listing"],
18209
+ design: {
18210
+ sectionSurface: "base",
18211
+ contentFrame: panelFrame("raised"),
18212
+ itemSurface: "none"
18213
+ }
18214
+ }), defineBlockAppearancePreset({
18215
+ id: "events-ruled-register",
18216
+ target: "events",
18217
+ label: "Ruled event register",
18218
+ blockKinds: ["block.event-calendar", "block.event-listing"],
18219
+ design: {
18220
+ sectionSurface: "brand-depth-band",
18221
+ contentFrame: plainFrame,
18222
+ itemSurface: "none",
18223
+ eventListTreatment: "ruled-register"
18224
+ }
18225
+ }), defineBlockAppearancePreset({
18226
+ id: "events-editorial-register",
18227
+ target: "events",
18228
+ label: "Editorial event register",
18229
+ blockKinds: ["block.event-calendar", "block.event-listing"],
18230
+ design: {
18231
+ sectionSurface: "base",
18232
+ contentFrame: plainFrame,
18233
+ itemSurface: "none",
18234
+ eventListTreatment: "editorial-register"
18235
+ }
18236
+ }), defineBlockAppearancePreset({
18237
+ id: "events-dense-index",
18238
+ target: "events",
18239
+ label: "Dense event index",
18240
+ blockKinds: ["block.event-calendar", "block.event-listing"],
18241
+ design: {
18242
+ sectionSurface: "accent-band",
18243
+ contentFrame: plainFrame,
18244
+ itemSurface: "none",
18245
+ eventListTreatment: "dense-index"
18246
+ }
18247
+ }), defineBlockAppearancePreset({
18248
+ id: "schedule-details-brand-depth",
18249
+ target: "events",
18250
+ label: "Brand-depth schedule details",
18251
+ blockKinds: ["block.event-details", "block.course-details"],
18252
+ design: {
18253
+ sectionSurface: "brand-depth-band",
18254
+ contentFrame: plainFrame,
18255
+ itemSurface: "none",
18256
+ tileTreatment: "brand-depth"
18257
+ }
18258
+ }), defineBlockAppearancePreset({
18259
+ id: "media-text-flush-feature",
18260
+ target: "media-text",
18261
+ label: "Flush media feature",
18262
+ blockKinds: ["block.media-text"],
18263
+ design: {
18264
+ sectionSurface: "muted-band",
18265
+ contentFrame: flushPanelFrame({ bleed: "start" }),
18266
+ itemSurface: "none"
18267
+ }
18268
+ }), defineBlockAppearancePreset({
18269
+ id: "testimonials-simple-cards",
18270
+ target: "testimonials",
18271
+ label: "Simple testimonial cards",
18272
+ blockKinds: ["block.testimonials"],
18273
+ design: {
18274
+ sectionSurface: "base",
18275
+ contentFrame: plainFrame,
18276
+ itemSurface: "default"
18277
+ }
18278
+ }), defineBlockAppearancePreset({
18279
+ id: "testimonials-raised-panel",
18280
+ target: "testimonials",
18281
+ label: "Raised testimonial panel",
18282
+ blockKinds: ["block.testimonials"],
18283
+ design: {
18284
+ sectionSurface: "muted-band",
18285
+ contentFrame: panelFrame("raised"),
18286
+ itemSurface: "raised"
18287
+ }
18288
+ }), defineBlockAppearancePreset({
18289
+ id: "testimonials-accent-panel",
18290
+ target: "testimonials",
18291
+ label: "Accent testimonial panel",
18292
+ blockKinds: ["block.testimonials"],
18293
+ design: {
18294
+ sectionSurface: "accent-band",
18295
+ contentFrame: panelFrame("raised"),
18296
+ itemSurface: "raised"
18297
+ }
18298
+ }), defineBlockAppearancePreset({
18299
+ id: "testimonials-default-cards",
18300
+ target: "testimonials",
18301
+ label: "Default cards",
18302
+ blockKinds: ["block.testimonials"],
18303
+ design: {
18304
+ sectionSurface: "base",
18305
+ contentFrame: plainFrame,
18306
+ itemSurface: "none",
18307
+ testimonialCardTreatment: "default"
18308
+ }
18309
+ }), defineBlockAppearancePreset({
18310
+ id: "testimonials-statement-cards",
18311
+ target: "testimonials",
18312
+ label: "Statement cards",
18313
+ blockKinds: ["block.testimonials"],
18314
+ design: {
18315
+ sectionSurface: "accent-band",
18316
+ contentFrame: plainFrame,
18317
+ itemSurface: "raised",
18318
+ testimonialCardTreatment: "statement"
18319
+ }
18320
+ }), defineBlockAppearancePreset({
18321
+ id: "testimonials-brand-statement-cards",
18322
+ target: "testimonials",
18323
+ label: "Brand statement cards",
18324
+ blockKinds: ["block.testimonials"],
18325
+ design: {
18326
+ sectionSurface: "brand-depth-band",
18327
+ contentFrame: plainFrame,
18328
+ itemSurface: "raised",
18329
+ testimonialCardTreatment: "statement"
18330
+ }
18331
+ }), defineBlockAppearancePreset({
18332
+ id: "testimonials-non-carded",
18333
+ target: "testimonials",
18334
+ label: "Non-carded",
18335
+ blockKinds: ["block.testimonials"],
18336
+ design: {
18337
+ sectionSurface: "muted-band",
18338
+ contentFrame: plainFrame,
18339
+ itemSurface: "none",
18340
+ testimonialCardTreatment: "non-carded"
18341
+ }
18342
+ }), defineBlockAppearancePreset({
18343
+ id: "testimonials-evergreen-lead",
18344
+ target: "testimonials",
18345
+ label: "Evergreen lead",
18346
+ blockKinds: ["block.testimonials"],
18347
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
18348
+ design: {
18349
+ sectionSurface: "base",
18350
+ contentFrame: plainFrame,
18351
+ itemSurface: "none"
18352
+ }
18353
+ }), defineBlockAppearancePreset({
18354
+ id: "testimonials-room-and-response",
18355
+ target: "testimonials",
18356
+ label: "Room and response",
18357
+ blockKinds: ["block.testimonials"],
18358
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
18359
+ design: {
18360
+ sectionSurface: "base",
18361
+ contentFrame: plainFrame,
18362
+ itemSurface: "none"
18363
+ }
18364
+ }), defineBlockAppearancePreset({
18365
+ id: "testimonials-open-floor",
18366
+ target: "testimonials",
18367
+ label: "Open floor",
18368
+ blockKinds: ["block.testimonials"],
18369
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
18370
+ design: {
18371
+ sectionSurface: "base",
18372
+ contentFrame: plainFrame,
18373
+ itemSurface: "none"
18374
+ }
18375
+ }), defineBlockAppearancePreset({
18376
+ id: "faq-base-accordion",
18377
+ target: "faq",
18378
+ label: "Base accordion FAQ",
18379
+ blockKinds: ["block.faq"],
18380
+ design: {
18381
+ sectionSurface: "base",
18382
+ contentFrame: plainFrame,
18383
+ itemSurface: "default"
18384
+ }
18385
+ }), defineBlockAppearancePreset({
18386
+ id: "faq-contained-help",
18387
+ target: "faq",
18388
+ label: "Contained help panel",
18389
+ blockKinds: ["block.faq"],
18390
+ design: {
18391
+ sectionSurface: "muted-band",
18392
+ contentFrame: panelFrame("inset"),
18393
+ itemSurface: "default"
18394
+ }
18395
+ }), defineBlockAppearancePreset({
18396
+ id: "contact-form-panel",
18397
+ target: "contact-form",
18398
+ label: "Raised form panel",
18399
+ blockKinds: ["block.form"],
18400
+ design: {
18401
+ sectionSurface: "muted-band",
18402
+ contentFrame: panelFrame("raised"),
18403
+ itemSurface: "none"
18404
+ }
18405
+ }), defineBlockAppearancePreset({
18406
+ id: "cta-accent-band",
18407
+ target: "cta",
18408
+ label: "Accent CTA band",
18409
+ blockKinds: ["block.cta-full"],
18410
+ design: {
18411
+ sectionSurface: "accent-band",
18412
+ contentFrame: plainFrame,
18413
+ itemSurface: "none",
18414
+ eyebrowTreatment: "accent"
18415
+ }
18416
+ });
18401
18417
  //#endregion
18402
18418
  //#region ../theme-core/src/site-styles/headerCtaVariants.ts
18403
18419
  function hasButtonVariant(theme, variantId) {
@@ -18580,6 +18596,27 @@ function uniqueStrings(values) {
18580
18596
  return Array.from(new Set(values));
18581
18597
  }
18582
18598
  //#endregion
18599
+ //#region ../theme-core/src/site-styles/headerInteractionPalette.ts
18600
+ const clearSplitInteractionPalette = defineLookOptionGroup({
18601
+ id: "interaction-palette",
18602
+ label: "Hover colour",
18603
+ defaultOptionId: "accent",
18604
+ options: [
18605
+ {
18606
+ id: "accent",
18607
+ label: "Accent"
18608
+ },
18609
+ {
18610
+ id: "primary",
18611
+ label: "Primary"
18612
+ },
18613
+ {
18614
+ id: "secondary",
18615
+ label: "Secondary"
18616
+ }
18617
+ ]
18618
+ });
18619
+ //#endregion
18583
18620
  //#region ../theme-core/src/site-styles/headerLooks.ts
18584
18621
  function asHeaderLookId(value) {
18585
18622
  return value;
@@ -18713,7 +18750,7 @@ const overlayLogoAccommodations = [
18713
18750
  * optional nested styling fields that would otherwise leak from another Look.
18714
18751
  */
18715
18752
  function baseHeader(theme) {
18716
- 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;
18753
+ 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;
18717
18754
  return {
18718
18755
  ...header,
18719
18756
  navContainer: {
@@ -18728,7 +18765,6 @@ const headerLayoutCatalog = defineExactCatalog()([
18728
18765
  id: asHeaderLayoutId("classic"),
18729
18766
  label: "Classic",
18730
18767
  description: "Logo and navigation in one practical horizontal row.",
18731
- structure: "inline-classic",
18732
18768
  variant: "classic",
18733
18769
  defaultPositioning: "sticky",
18734
18770
  shrinkOnScroll: false
@@ -18737,7 +18773,6 @@ const headerLayoutCatalog = defineExactCatalog()([
18737
18773
  id: asHeaderLayoutId("centered"),
18738
18774
  label: "Centered",
18739
18775
  description: "Logo centered above a balanced navigation row.",
18740
- structure: "centered-stack",
18741
18776
  variant: "centered",
18742
18777
  defaultPositioning: "static",
18743
18778
  shrinkOnScroll: false,
@@ -18753,7 +18788,6 @@ const headerLayoutCatalog = defineExactCatalog()([
18753
18788
  id: asHeaderLayoutId("floating"),
18754
18789
  label: "Floating",
18755
18790
  description: "Detached header chrome that sits over the opening section.",
18756
- structure: "floating-shell",
18757
18791
  variant: "floating",
18758
18792
  defaultPositioning: "sticky",
18759
18793
  shrinkOnScroll: true,
@@ -18915,10 +18949,13 @@ const headerStyleCatalog = defineExactCatalog()([
18915
18949
  label: "Clear Split",
18916
18950
  description: "Floating logo with transparent navigation and no shared shell.",
18917
18951
  supportedLayoutIds: supportedLayouts(["floating"]),
18918
- navInteraction: "color-change",
18952
+ navInteraction: "pill-background",
18919
18953
  surface: "floating",
18920
- defaultDepth: "none",
18954
+ defaultDepth: "line",
18921
18955
  navTypography: "plain",
18956
+ openingForegroundTarget: "all",
18957
+ scrollTreatment: "contrast-glass",
18958
+ interactionPalette: clearSplitInteractionPalette,
18922
18959
  moods: ["editorial", "calm"]
18923
18960
  },
18924
18961
  {
@@ -18941,6 +18978,7 @@ const headerStyleCatalog = defineExactCatalog()([
18941
18978
  surface: "floating",
18942
18979
  defaultDepth: "shadow",
18943
18980
  navTypography: "quiet-caps",
18981
+ openingForegroundTarget: "brand-only",
18944
18982
  moods: ["expressive"]
18945
18983
  },
18946
18984
  {
@@ -18952,6 +18990,7 @@ const headerStyleCatalog = defineExactCatalog()([
18952
18990
  surface: "floating",
18953
18991
  defaultDepth: "shadow",
18954
18992
  navTypography: "heading",
18993
+ openingForegroundTarget: "brand-only",
18955
18994
  moods: ["calm", "editorial"]
18956
18995
  }
18957
18996
  ]);
@@ -19453,13 +19492,6 @@ const headerLookCatalog = defineExactCatalog()([
19453
19492
  {
19454
19493
  id: asHeaderLookId("clean-base"),
19455
19494
  label: "Clean base",
19456
- visualTreatment: "solid-neutral",
19457
- layoutBehavior: "sticky",
19458
- configuration: {
19459
- structure: "inline-classic",
19460
- treatment: "solid-neutral",
19461
- behavior: "sticky"
19462
- },
19463
19495
  openingRequirement: "none",
19464
19496
  logoAccommodations: inlineClassicLogoAccommodations,
19465
19497
  compile: cleanBaseHeader
@@ -19467,13 +19499,6 @@ const headerLookCatalog = defineExactCatalog()([
19467
19499
  {
19468
19500
  id: asHeaderLookId("classic-centered-nav"),
19469
19501
  label: "Centered nav",
19470
- visualTreatment: "solid-neutral",
19471
- layoutBehavior: "sticky",
19472
- configuration: {
19473
- structure: "inline-classic",
19474
- treatment: "solid-neutral",
19475
- behavior: "sticky"
19476
- },
19477
19502
  openingRequirement: "none",
19478
19503
  maxRecommendedNavItems: 6,
19479
19504
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -19482,13 +19507,6 @@ const headerLookCatalog = defineExactCatalog()([
19482
19507
  {
19483
19508
  id: asHeaderLookId("brand-solid"),
19484
19509
  label: "Brand solid",
19485
- visualTreatment: "solid-brand",
19486
- layoutBehavior: "sticky-shrink",
19487
- configuration: {
19488
- structure: "inline-classic",
19489
- treatment: "solid-brand",
19490
- behavior: "sticky-shrink"
19491
- },
19492
19510
  openingRequirement: "none",
19493
19511
  logoAccommodations: inlineClassicLogoAccommodations,
19494
19512
  compile: solidBrandHeader
@@ -19496,13 +19514,6 @@ const headerLookCatalog = defineExactCatalog()([
19496
19514
  {
19497
19515
  id: asHeaderLookId("serif-line"),
19498
19516
  label: "Serif line",
19499
- visualTreatment: "light-serif",
19500
- layoutBehavior: "sticky",
19501
- configuration: {
19502
- structure: "centered-stack",
19503
- treatment: "light-serif",
19504
- behavior: "sticky"
19505
- },
19506
19517
  openingRequirement: "none",
19507
19518
  maxRecommendedNavItems: 6,
19508
19519
  logoAccommodations: centeredLogoAccommodations,
@@ -19511,13 +19522,6 @@ const headerLookCatalog = defineExactCatalog()([
19511
19522
  {
19512
19523
  id: asHeaderLookId("centered-calm"),
19513
19524
  label: "Centered calm",
19514
- visualTreatment: "light-serif",
19515
- layoutBehavior: "normal-flow",
19516
- configuration: {
19517
- structure: "centered-stack",
19518
- treatment: "light-serif",
19519
- behavior: "normal-flow"
19520
- },
19521
19525
  openingRequirement: "none",
19522
19526
  maxRecommendedNavItems: 5,
19523
19527
  logoAccommodations: centeredLogoAccommodations,
@@ -19526,13 +19530,6 @@ const headerLookCatalog = defineExactCatalog()([
19526
19530
  {
19527
19531
  id: asHeaderLookId("practical-utility"),
19528
19532
  label: "Practical utility",
19529
- visualTreatment: "solid-neutral",
19530
- layoutBehavior: "sticky-shrink",
19531
- configuration: {
19532
- structure: "inline-classic",
19533
- treatment: "solid-neutral",
19534
- behavior: "sticky-shrink"
19535
- },
19536
19533
  openingRequirement: "none",
19537
19534
  requiresProminentCta: true,
19538
19535
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -19541,13 +19538,6 @@ const headerLookCatalog = defineExactCatalog()([
19541
19538
  {
19542
19539
  id: asHeaderLookId("minimal-transparent"),
19543
19540
  label: "Minimal transparent",
19544
- visualTreatment: "minimal-transparent",
19545
- layoutBehavior: "normal-flow",
19546
- configuration: {
19547
- structure: "inline-classic",
19548
- treatment: "minimal-transparent",
19549
- behavior: "normal-flow"
19550
- },
19551
19541
  openingRequirement: "reserved-space-ok",
19552
19542
  logoAccommodations: inlineClassicLogoAccommodations,
19553
19543
  compile: minimalTransparentHeader
@@ -19555,13 +19545,6 @@ const headerLookCatalog = defineExactCatalog()([
19555
19545
  {
19556
19546
  id: asHeaderLookId("transparent-overlay"),
19557
19547
  label: "Transparent overlay",
19558
- visualTreatment: "transparent-overlay",
19559
- layoutBehavior: "fixed-overlay",
19560
- configuration: {
19561
- structure: "inline-classic",
19562
- treatment: "transparent-overlay",
19563
- behavior: "fixed-overlay"
19564
- },
19565
19548
  openingRequirement: "requires-image-hero-with-contrast-overlay",
19566
19549
  maxRecommendedNavItems: 5,
19567
19550
  logoAccommodations: overlayLogoAccommodations,
@@ -19570,24 +19553,13 @@ const headerLookCatalog = defineExactCatalog()([
19570
19553
  {
19571
19554
  id: asHeaderLookId("floating-glass"),
19572
19555
  label: "Floating glass",
19573
- visualTreatment: "floating-glass",
19574
- layoutBehavior: "fixed-floating",
19575
- configuration: {
19576
- structure: "floating-shell",
19577
- treatment: "floating-glass",
19578
- behavior: "fixed-floating"
19579
- },
19580
19556
  openingRequirement: "requires-image-hero-with-contrast-overlay",
19581
19557
  maxRecommendedNavItems: 5,
19582
19558
  logoAccommodations: overlayLogoAccommodations,
19583
19559
  compile: floatingGlassHeader
19584
19560
  }
19585
19561
  ]);
19586
- new Set(headerLookCatalog.map((look) => headerConfigurationKey(look.configuration)));
19587
19562
  new Map(headerLookCatalog.map((look) => [look.id, look]));
19588
- function headerConfigurationKey(configuration) {
19589
- return `${configuration.structure}:${configuration.treatment}:${configuration.behavior}`;
19590
- }
19591
19563
  //#endregion
19592
19564
  //#region ../theme-core/src/site-styles/sectionTransitions.ts
19593
19565
  function boundaryRuntimeMetrics(family, size, heightExpression) {
@@ -23196,28 +23168,6 @@ z$1.object({
23196
23168
  spacing: z$1.enum(themeTokenRecipeOptions.spacing),
23197
23169
  motion: z$1.enum(themeTokenRecipeOptions.motion)
23198
23170
  });
23199
- const BREAKPOINT_LG = 1024;
23200
- const BREAKPOINT_XL = 1280;
23201
- const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
23202
- function mqUp(px) {
23203
- return `(min-width: ${px}px)`;
23204
- }
23205
- function mqDown(px) {
23206
- return `(max-width: ${px}px)`;
23207
- }
23208
- function mqBetween(minPx, maxPx) {
23209
- return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
23210
- }
23211
- mqUp(640);
23212
- mqUp(768);
23213
- mqUp(BREAKPOINT_LG);
23214
- mqUp(BREAKPOINT_XL);
23215
- mqDown(639);
23216
- mqDown(767);
23217
- mqDown(BREAKPOINT_LG_DOWN);
23218
- mqBetween(640, BREAKPOINT_LG_DOWN);
23219
- mqDown(640);
23220
- mqDown(768);
23221
23171
  //#endregion
23222
23172
  //#region ../theme-core/src/siteChromeOverlayClearance.ts
23223
23173
  const SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
@@ -27199,15 +27149,6 @@ const heroLayoutControlsFragment = defineFragment({
27199
27149
  */
27200
27150
  const BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
27201
27151
  const blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
27202
- /**
27203
- * Temporary rollout boundary for persisted content written before issue #1220.
27204
- * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
27205
- * only until the post-deploy role rewrite has been audited in production.
27206
- */
27207
- function canonicalizePersistedBlockButtonRole(value) {
27208
- return value === "link" || value === "tertiary" ? "ghost" : value;
27209
- }
27210
- const persistedBlockButtonRoleSchema = z$1.preprocess((value) => typeof value === "string" ? canonicalizePersistedBlockButtonRole(value) : value, blockButtonRoleSchema);
27211
27152
  const BLOCK_BUTTON_ROLE_LABELS = {
27212
27153
  primary: "Primary",
27213
27154
  secondary: "Secondary",
@@ -28416,6 +28357,7 @@ const newsletterFormFragment = defineFragment({
28416
28357
  }
28417
28358
  ],
28418
28359
  layout: [el("newsletter-form", withApiBindings({
28360
+ source: "block",
28419
28361
  destinationProvider: { $bind: { from: "destinationProvider" } },
28420
28362
  listId: { $bind: { from: "listId" } },
28421
28363
  preset: { $bind: { from: "preset" } },
@@ -30535,6 +30477,7 @@ const contactNewsletterLayout = styledSection({
30535
30477
  as: "h2",
30536
30478
  className: "newsletter-copy-title"
30537
30479
  }, when("newsletterTitle"), bind("newsletterTitle")), richText({ className: "newsletter-copy-subtitle rb-prose rb-max-w-none" }, when("newsletterSubtitle"), bind("newsletterSubtitle"))]), el("newsletter-form", withApiBindings({
30480
+ source: "block",
30538
30481
  listId: { $bind: { from: "listId" } },
30539
30482
  preset: { $bind: { from: "preset" } },
30540
30483
  includePhone: { $bind: { from: "includePhone" } },
@@ -32469,6 +32412,22 @@ const footerNavGroupsLayout = stack({
32469
32412
  }, [text({ as: "span" }, bind("entry.label"))], repeat("group.children", "entry"))])], repeat("footerMenu.groups", "group"))], whenCollectionHasItems("footerMenu.groups"));
32470
32413
  //#endregion
32471
32414
  //#region ../blocks/src/system/blocks/site-footer.ts
32415
+ const footerStandardContactBindings = {
32416
+ value: { $bind: { from: "module.engagement.runtime.value" } },
32417
+ submitLabel: { $bind: { from: "module.engagement.runtime.submitLabel" } },
32418
+ successMessage: { $bind: { from: "module.engagement.runtime.successMessage" } }
32419
+ };
32420
+ const footerMailingListBindings = {
32421
+ source: { $bind: { from: "module.engagement.runtime.source" } },
32422
+ destinationRef: { $bind: { from: "module.engagement.runtime.destinationRef" } },
32423
+ listId: { $bind: { from: "module.engagement.runtime.listId" } },
32424
+ preset: { $bind: { from: "module.engagement.runtime.preset" } },
32425
+ includePhone: { $bind: { from: "module.engagement.runtime.includePhone" } },
32426
+ buttonLabel: { $bind: { from: "module.engagement.runtime.buttonLabel" } },
32427
+ successMessage: { $bind: { from: "module.engagement.runtime.successMessage" } },
32428
+ privacyNote: { $bind: { from: "module.engagement.runtime.privacyNote" } }
32429
+ };
32430
+ const footerSpamProtectionBinding = { spamProtectionEnabled: { $bind: { from: "$root.spamProtectionEnabled" } } };
32472
32431
  const brandLogo = link({
32473
32432
  href: "/",
32474
32433
  className: { $bind: {
@@ -32546,6 +32505,23 @@ const authoredCopy = richText({
32546
32505
  id: "content.interpolateRichTextTokens",
32547
32506
  options: { tokens: ["year", "site_name"] }
32548
32507
  }] }));
32508
+ const footerEngagement = stack({
32509
+ gap: "md",
32510
+ className: "rb-w-full"
32511
+ }, [
32512
+ text({
32513
+ as: "p",
32514
+ className: "rb-body rb-opacity-80"
32515
+ }, bind("module.engagement.intro"), when("module.engagement.intro")),
32516
+ form(withApiBindings({
32517
+ ...footerStandardContactBindings,
32518
+ ...footerSpamProtectionBinding
32519
+ }), [], when("module.engagement.kind", { equals: "standard-contact" })),
32520
+ el("newsletter-form", withApiBindings({
32521
+ ...footerMailingListBindings,
32522
+ ...footerSpamProtectionBinding
32523
+ }), [], when("module.engagement.kind", { equals: "mailing-list" }))
32524
+ ], when("module.kind", { equals: "engagement" }));
32549
32525
  const footerGroup = stack({
32550
32526
  gap: "md",
32551
32527
  align: "stretch",
@@ -32571,6 +32547,7 @@ const footerGroup = stack({
32571
32547
  contact,
32572
32548
  hours,
32573
32549
  socials,
32550
+ footerEngagement,
32574
32551
  stack({ className: "rb-w-full" }, [authoredCopy], when("module.kind", { equals: "supporting-text" })),
32575
32552
  stack({ className: "rb-w-full rb-lg-col-span-3" }, [authoredCopy], when("module.kind", { equals: "legal" }))
32576
32553
  ], repeat("group.modules", "module"))], repeat("region.groups", "group"));
@@ -32578,6 +32555,10 @@ const footerMainRegion = stack({
32578
32555
  className: { $bind: { from: "region.className" } },
32579
32556
  "data-footer-region": { $bind: { from: "region.kind" } }
32580
32557
  }, [footerGroup], when("region.kind", { equals: "main" }), repeat("content.footerRuntime.regions", "region"));
32558
+ const footerEngagementRegion = stack({
32559
+ className: { $bind: { from: "region.className" } },
32560
+ "data-footer-region": "engagement-row"
32561
+ }, [footerGroup], when("region.kind", { equals: "engagement-row" }), repeat("content.footerRuntime.regions", "region"));
32581
32562
  const footerBottomRegion = stack({ className: { $bind: {
32582
32563
  from: "$root.theme.footer",
32583
32564
  transforms: [{ id: "layout.footerBottomBarContainerClass" }],
@@ -32613,7 +32594,11 @@ const siteFooterBlockDefinition = { manifest: createBlockManifest({
32613
32594
  fallback: mergeStyles(backgroundColorStyle("surface"), surfaceForegroundStyle({ text: "rgb(var(--tb-text))" }), borderColorStyle("border"))
32614
32595
  } },
32615
32596
  "data-footer-membership": { $bind: { from: "content.footerRuntime.membershipKey" } }
32616
- }, [footerMainRegion, footerBottomRegion]),
32597
+ }, [
32598
+ footerEngagementRegion,
32599
+ footerMainRegion,
32600
+ footerBottomRegion
32601
+ ]),
32617
32602
  description: "Site-wide composed footer with canonical shared details.",
32618
32603
  styleTokens: { spacing: "md" },
32619
32604
  paletteHidden: true
@@ -34459,6 +34444,12 @@ const mediaBaseSchema = z.object({
34459
34444
  poster: mediaPosterSchema.optional(),
34460
34445
  transform: transformSchema.optional()
34461
34446
  });
34447
+ /**
34448
+ * Canonical identifier carried by media values that are safe to persist.
34449
+ * Parsing trims boundary input so downstream writers cannot retain whitespace-only
34450
+ * identifiers or independently disagree about normalization.
34451
+ */
34452
+ const mediaIdentifierSchema = z.string().trim().min(1).brand();
34462
34453
  const imageMediaSchema = mediaBaseSchema.extend({ type: z.literal("image") });
34463
34454
  const videoMediaSchema = mediaBaseSchema.extend({ type: z.literal("video") });
34464
34455
  const audioMediaSchema = mediaBaseSchema.extend({ type: z.literal("audio") });
@@ -34473,6 +34464,15 @@ const mediaSchema = z.discriminatedUnion("type", [
34473
34464
  spreadsheetMediaSchema,
34474
34465
  archiveMediaSchema
34475
34466
  ]);
34467
+ const persistableMediaBaseSchema = mediaBaseSchema.extend({ identifier: mediaIdentifierSchema });
34468
+ z.discriminatedUnion("type", [
34469
+ persistableMediaBaseSchema.extend({ type: z.literal("image") }),
34470
+ persistableMediaBaseSchema.extend({ type: z.literal("video") }),
34471
+ persistableMediaBaseSchema.extend({ type: z.literal("audio") }),
34472
+ persistableMediaBaseSchema.extend({ type: z.literal("document") }),
34473
+ persistableMediaBaseSchema.extend({ type: z.literal("spreadsheet") }),
34474
+ persistableMediaBaseSchema.extend({ type: z.literal("archive") })
34475
+ ]);
34476
34476
  //#endregion
34477
34477
  //#region ../blocks/src/system/manifest/richTextSchema.ts
34478
34478
  /**
@@ -35304,7 +35304,7 @@ const publicMembershipProductCollectionSchema = z$1.object({ memberships: z$1.ar
35304
35304
  * Kept in a shared module so the block definition and runtime contracts can
35305
35305
  * depend on the same schema without creating an initialization cycle.
35306
35306
  */
35307
- const occurrenceContextSchema$1 = z$1.object({
35307
+ const occurrenceContextSchema = z$1.object({
35308
35308
  id: z$1.string(),
35309
35309
  seriesId: z$1.string(),
35310
35310
  startsAt: z$1.string(),
@@ -35596,7 +35596,7 @@ function isEventCalendarListLayout(value) {
35596
35596
  //#region ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
35597
35597
  const previewStageSchema = z$1.enum(["preview", "published"]);
35598
35598
  const registrationButtonVariantSchema = blockButtonRoleSchema;
35599
- const eventButtonVariantSchema = persistedBlockButtonRoleSchema;
35599
+ const eventButtonVariantSchema = blockButtonRoleSchema;
35600
35600
  const eventLayoutSchema = z$1.enum(eventCalendarListLayoutValues);
35601
35601
  const eventCalendarDisplayModeSchema = z$1.enum(eventCalendarDisplayModeValues);
35602
35602
  const eventCalendarDefaultViewSchema = z$1.enum(eventCalendarDefaultViewValues);
@@ -35685,28 +35685,37 @@ const EVENT_REGISTRATION_SHELL_STEP_LABELS = [
35685
35685
  "Payment"
35686
35686
  ];
35687
35687
  const eventRegistrationPublicEventSchema = z$1.preprocess(normalizeEventRegistrationEventInput, publicEventSchema);
35688
- const eventRegistrationSourceSchema = z$1.object({
35689
- siteId: z$1.string().optional(),
35690
- apiBaseUrl: z$1.string().optional(),
35691
- portalToken: z$1.string().nullable().optional(),
35692
- previewToken: z$1.string().nullable().optional(),
35693
- occurrenceContext: occurrenceContextSchema$1.optional(),
35688
+ const eventRegistrationHydrationSchemaShape = {
35689
+ occurrenceContext: occurrenceContextSchema.optional(),
35694
35690
  subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
35695
35691
  events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
35696
- className: z$1.string().nullable().optional(),
35697
- buttonText: z$1.string().nullable().optional(),
35698
- maxTickets: z$1.string().nullable().optional(),
35692
+ wholeSeriesOfferings: publicCoursesArraySchema.nullable().optional(),
35693
+ wholeSeriesOffering: publicCourseSchema.nullable().optional(),
35694
+ maxTickets: z$1.string().optional(),
35699
35695
  showVenue: z$1.boolean().optional(),
35700
35696
  showCapacity: z$1.boolean().optional(),
35697
+ showSessions: z$1.boolean().optional(),
35698
+ showPrice: z$1.boolean().optional(),
35701
35699
  successMessage: z$1.string().optional(),
35702
35700
  waitlistMessage: z$1.string().optional(),
35701
+ membershipMessage: z$1.string().optional(),
35703
35702
  buttonVariant: registrationButtonVariantSchema.optional(),
35704
35703
  overlayEnabled: z$1.boolean().optional(),
35705
35704
  spamProtectionEnabled: z$1.boolean().optional(),
35706
- stage: previewStageSchema.optional(),
35707
35705
  supportEmail: z$1.string().optional(),
35708
35706
  sitePasses: publicPassProductCollectionSchema.nullable().optional(),
35709
35707
  siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
35708
+ };
35709
+ const eventRegistrationSourceSchema = z$1.object({
35710
+ siteId: z$1.string().optional(),
35711
+ apiBaseUrl: z$1.string().optional(),
35712
+ portalToken: z$1.string().nullable().optional(),
35713
+ previewToken: z$1.string().nullable().optional(),
35714
+ ...eventRegistrationHydrationSchemaShape,
35715
+ className: z$1.string().nullable().optional(),
35716
+ buttonText: z$1.string().nullable().optional(),
35717
+ maxTickets: z$1.string().nullable().optional(),
35718
+ stage: previewStageSchema.optional()
35710
35719
  });
35711
35720
  const eventRegistrationDisplaySchema = z$1.object({
35712
35721
  kind: z$1.literal("event-registration"),
@@ -35717,22 +35726,7 @@ const eventRegistrationDisplaySchema = z$1.object({
35717
35726
  stepLabels: z$1.array(z$1.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
35718
35727
  summaryButtonText: z$1.string()
35719
35728
  });
35720
- const eventRegistrationHydrationSchema = z$1.object({
35721
- occurrenceContext: occurrenceContextSchema$1.optional(),
35722
- subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
35723
- events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
35724
- maxTickets: z$1.string().optional(),
35725
- showVenue: z$1.boolean().optional(),
35726
- showCapacity: z$1.boolean().optional(),
35727
- successMessage: z$1.string().optional(),
35728
- waitlistMessage: z$1.string().optional(),
35729
- buttonVariant: registrationButtonVariantSchema.optional(),
35730
- overlayEnabled: z$1.boolean().optional(),
35731
- spamProtectionEnabled: z$1.boolean().optional(),
35732
- supportEmail: z$1.string().optional(),
35733
- sitePasses: publicPassProductCollectionSchema.nullable().optional(),
35734
- siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
35735
- });
35729
+ const eventRegistrationHydrationSchema = z$1.object(eventRegistrationHydrationSchemaShape);
35736
35730
  const eventRegistrationRenderSchema = z$1.object({
35737
35731
  display: eventRegistrationDisplaySchema,
35738
35732
  hydration: eventRegistrationHydrationSchema
@@ -35812,11 +35806,16 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
35812
35806
  occurrenceContext: source.occurrenceContext ?? null,
35813
35807
  subject: source.subject ?? null,
35814
35808
  events: source.events ?? null,
35809
+ wholeSeriesOfferings: source.wholeSeriesOfferings ?? null,
35810
+ wholeSeriesOffering: source.wholeSeriesOffering ?? null,
35815
35811
  maxTickets: source.maxTickets ?? void 0,
35816
35812
  showVenue: source.showVenue,
35817
35813
  showCapacity: source.showCapacity,
35814
+ showSessions: source.showSessions,
35815
+ showPrice: source.showPrice,
35818
35816
  successMessage: source.successMessage,
35819
35817
  waitlistMessage: source.waitlistMessage,
35818
+ membershipMessage: source.membershipMessage,
35820
35819
  buttonVariant: source.buttonVariant,
35821
35820
  overlayEnabled: source.overlayEnabled,
35822
35821
  spamProtectionEnabled: source.spamProtectionEnabled,
@@ -35932,6 +35931,24 @@ const eventRegistrationBlockDefinition = {
35932
35931
  defaultValue: true,
35933
35932
  ui: { intent: "display" }
35934
35933
  },
35934
+ {
35935
+ id: "showSessions",
35936
+ type: "boolean",
35937
+ label: "Show complete schedule",
35938
+ description: "Display every session for whole-series registrations",
35939
+ required: false,
35940
+ defaultValue: true,
35941
+ ui: { intent: "display" }
35942
+ },
35943
+ {
35944
+ id: "showPrice",
35945
+ type: "boolean",
35946
+ label: "Show price",
35947
+ description: "Display the whole-series price",
35948
+ required: false,
35949
+ defaultValue: true,
35950
+ ui: { intent: "display" }
35951
+ },
35935
35952
  {
35936
35953
  id: "successMessage",
35937
35954
  type: "text",
@@ -35942,6 +35959,26 @@ const eventRegistrationBlockDefinition = {
35942
35959
  defaultValue: "Thank you for registering! Check your email for confirmation details.",
35943
35960
  maxLength: 500
35944
35961
  },
35962
+ {
35963
+ id: "waitlistMessage",
35964
+ type: "text",
35965
+ label: "Waitlist message",
35966
+ description: "Message shown after joining a whole-series waitlist",
35967
+ required: false,
35968
+ multiline: true,
35969
+ defaultValue: "You've been added to the waitlist. We'll email you if a place becomes available.",
35970
+ maxLength: 500
35971
+ },
35972
+ {
35973
+ id: "membershipMessage",
35974
+ type: "text",
35975
+ label: "Membership registration message",
35976
+ description: "Message shown when a whole-series place is covered by membership",
35977
+ required: false,
35978
+ multiline: true,
35979
+ defaultValue: "Registered using your membership. Check your email for session details.",
35980
+ maxLength: 500
35981
+ },
35945
35982
  {
35946
35983
  id: "buttonText",
35947
35984
  type: "text",
@@ -35973,8 +36010,11 @@ const eventRegistrationBlockDefinition = {
35973
36010
  } },
35974
36011
  showVenue: { $bind: { from: "content.showVenue" } },
35975
36012
  showCapacity: { $bind: { from: "content.showCapacity" } },
36013
+ showSessions: { $bind: { from: "content.showSessions" } },
36014
+ showPrice: { $bind: { from: "content.showPrice" } },
35976
36015
  successMessage: { $bind: { from: "content.successMessage" } },
35977
36016
  waitlistMessage: { $bind: { from: "content.waitlistMessage" } },
36017
+ membershipMessage: { $bind: { from: "content.membershipMessage" } },
35978
36018
  buttonText: { $bind: {
35979
36019
  from: "content.buttonText",
35980
36020
  fallback: "Complete Registration"
@@ -35988,6 +36028,7 @@ const eventRegistrationBlockDefinition = {
35988
36028
  fallback: false
35989
36029
  } },
35990
36030
  events: { $bind: { from: "data.events" } },
36031
+ wholeSeriesOffering: { $bind: { from: "data.wholeSeriesOffering.offering" } },
35991
36032
  sitePasses: { $bind: { from: "data.sitePasses" } },
35992
36033
  siteMemberships: { $bind: { from: "data.siteMemberships" } },
35993
36034
  stage: { $bind: {
@@ -36001,9 +36042,10 @@ const eventRegistrationBlockDefinition = {
36001
36042
  runtime: eventRegistrationBlockRuntime,
36002
36043
  dataSchemas: {
36003
36044
  events: publicEventsArraySchema.optional(),
36045
+ wholeSeriesOffering: z$1.object({ offering: publicCourseSchema }).optional(),
36004
36046
  sitePasses: publicPassProductCollectionSchema.optional(),
36005
36047
  siteMemberships: publicMembershipProductCollectionSchema.optional(),
36006
- occurrenceContext: occurrenceContextSchema$1.optional()
36048
+ occurrenceContext: occurrenceContextSchema.optional()
36007
36049
  },
36008
36050
  dataLoaders: {
36009
36051
  events: {
@@ -36016,11 +36058,23 @@ const eventRegistrationBlockDefinition = {
36016
36058
  fallback: "published"
36017
36059
  } },
36018
36060
  readProfile: "registration",
36019
- seriesId: { $bind: { from: "$root.occurrenceContext.seriesId" } },
36061
+ seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
36020
36062
  includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
36021
36063
  },
36022
36064
  mode: "server"
36023
36065
  },
36066
+ wholeSeriesOffering: {
36067
+ endpoint: "getPublicWholeSeriesOffering",
36068
+ params: {
36069
+ siteId: { $bind: { from: "$root.siteId" } },
36070
+ eventSeriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
36071
+ stage: { $bind: {
36072
+ from: "$root.previewStage",
36073
+ fallback: "published"
36074
+ } }
36075
+ },
36076
+ mode: "server"
36077
+ },
36024
36078
  sitePasses: {
36025
36079
  endpoint: "listPublicPasses",
36026
36080
  params: { siteId: { $bind: { from: "$root.siteId" } } },
@@ -36455,15 +36509,6 @@ const eventDetailsManifest = createBlockManifest({
36455
36509
  })], { gap: "lg" })
36456
36510
  })]
36457
36511
  });
36458
- const occurrenceContextSchema = z$1.object({
36459
- id: z$1.string(),
36460
- seriesId: z$1.string(),
36461
- startsAt: z$1.string(),
36462
- endsAt: z$1.string(),
36463
- timeZone: z$1.string(),
36464
- capacityOverride: z$1.number().nullable().optional(),
36465
- overrides: z$1.record(z$1.string(), z$1.unknown()).nullable().optional()
36466
- }).nullable();
36467
36512
  const eventAutoApplyDiscountPreviewBaseSchema = z$1.object({
36468
36513
  id: z$1.string(),
36469
36514
  publicLabel: z$1.string(),
@@ -36498,8 +36543,9 @@ const eventDetailsBlockDefinition = {
36498
36543
  from: "$root.previewStage",
36499
36544
  fallback: "published"
36500
36545
  } },
36501
- limit: "25",
36502
- seriesId: { $bind: { from: "$root.occurrenceContext.seriesId" } },
36546
+ limit: "100",
36547
+ readProfile: "details",
36548
+ seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
36503
36549
  includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
36504
36550
  },
36505
36551
  mode: "server"
@@ -42641,9 +42687,6 @@ function parseSignedNewsletterDestinationRef(value) {
42641
42687
  const trimmed = parseTrimmedString(value);
42642
42688
  return trimmed && SIGNED_DESTINATION_REF_PATTERN.test(trimmed) ? trimmed : null;
42643
42689
  }
42644
- function parseNewsletterSignupDestinationProvider(value) {
42645
- return value === "riverbank" || value === "mailchimp" ? value : null;
42646
- }
42647
42690
  function buildNewsletterSignupBlockRef(blockId) {
42648
42691
  const parsed = parseNewsletterSignupBlockId(blockId);
42649
42692
  return parsed ? {
@@ -42810,19 +42853,9 @@ const newsletterFieldSchema = z$1.object({
42810
42853
  });
42811
42854
  const newsletterSignupBlockIdSchema = z$1.string().trim().min(1).transform(parseRequiredNewsletterSignupBlockId);
42812
42855
  const signedNewsletterDestinationRefSchema = z$1.string().trim().min(1).transform(parseRequiredSignedNewsletterDestinationRef);
42813
- const newsletterPublicDestinationRefSchema = z$1.discriminatedUnion("tag", [z$1.object({
42814
- tag: z$1.literal("block_ref"),
42815
- blockId: newsletterSignupBlockIdSchema
42816
- }), z$1.object({
42817
- tag: z$1.literal("signed_destination_ref"),
42818
- token: signedNewsletterDestinationRefSchema
42819
- })]);
42820
- const newsletterSourceSchema = z$1.object({
42821
- blockId: z$1.string().nullable().optional(),
42856
+ const newsletterSourceCommonSchema = z$1.object({
42822
42857
  siteId: z$1.string().optional(),
42823
42858
  apiBaseUrl: z$1.string().optional(),
42824
- listId: z$1.string().nullable().optional(),
42825
- destinationProvider: newsletterDestinationProviderSchema.nullable().optional(),
42826
42859
  preset: newsletterPresetSchema.optional(),
42827
42860
  includePhone: z$1.boolean().optional(),
42828
42861
  buttonLabel: z$1.string().nullable().optional(),
@@ -42833,6 +42866,25 @@ const newsletterSourceSchema = z$1.object({
42833
42866
  spamProtectionEnabled: z$1.boolean().optional(),
42834
42867
  className: z$1.string().nullable().optional()
42835
42868
  });
42869
+ const newsletterSourceSchema = z$1.discriminatedUnion("source", [
42870
+ newsletterSourceCommonSchema.extend({
42871
+ source: z$1.literal("block"),
42872
+ blockId: z$1.string().nullable().optional(),
42873
+ listId: z$1.string().nullable().optional(),
42874
+ destinationProvider: newsletterDestinationProviderSchema.nullable().optional()
42875
+ }),
42876
+ newsletterSourceCommonSchema.extend({
42877
+ source: z$1.literal("signed-footer"),
42878
+ destinationRef: z$1.object({
42879
+ tag: z$1.literal("signed_destination_ref"),
42880
+ token: signedNewsletterDestinationRefSchema
42881
+ })
42882
+ }),
42883
+ newsletterSourceCommonSchema.extend({
42884
+ source: z$1.literal("legacy-direct-list"),
42885
+ listId: z$1.string().nullable()
42886
+ })
42887
+ ]);
42836
42888
  const newsletterDisplaySchema = z$1.object({
42837
42889
  kind: z$1.literal("newsletter-form"),
42838
42890
  className: z$1.string().nullable(),
@@ -42843,8 +42895,26 @@ const newsletterDisplaySchema = z$1.object({
42843
42895
  fields: z$1.array(newsletterFieldSchema)
42844
42896
  });
42845
42897
  const newsletterHydrationSchema = z$1.object({
42846
- destinationRef: newsletterPublicDestinationRefSchema.nullable().optional(),
42847
- listId: z$1.string().nullable().optional(),
42898
+ target: z$1.discriminatedUnion("tag", [
42899
+ z$1.object({
42900
+ tag: z$1.literal("block-source"),
42901
+ destinationRef: z$1.object({
42902
+ tag: z$1.literal("block_ref"),
42903
+ blockId: newsletterSignupBlockIdSchema
42904
+ }).nullable()
42905
+ }),
42906
+ z$1.object({
42907
+ tag: z$1.literal("signed-footer-source"),
42908
+ destinationRef: z$1.object({
42909
+ tag: z$1.literal("signed_destination_ref"),
42910
+ token: signedNewsletterDestinationRefSchema
42911
+ })
42912
+ }),
42913
+ z$1.object({
42914
+ tag: z$1.literal("legacy-direct-list"),
42915
+ listId: z$1.string().nullable()
42916
+ })
42917
+ ]),
42848
42918
  preset: newsletterPresetSchema,
42849
42919
  includePhone: z$1.boolean(),
42850
42920
  tags: z$1.string().nullable().optional(),
@@ -42878,20 +42948,43 @@ const newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
42878
42948
  render: createZodCodec(newsletterRenderSchema)
42879
42949
  },
42880
42950
  buildRender: (source) => {
42881
- const runtimeSource = deriveNewsletterSignupRuntimeSource(source);
42951
+ const runtimeSource = source.source === "block" ? deriveNewsletterSignupRuntimeSource(source) : null;
42882
42952
  return {
42883
42953
  display: buildNewsletterDisplay(source),
42884
42954
  hydration: {
42885
- destinationRef: buildNewsletterSignupBlockRef(source.blockId),
42886
- listId: runtimeSource.listId,
42955
+ target: projectNewsletterFormHydrationTarget(source),
42887
42956
  preset: source.preset ?? "emailOnly",
42888
42957
  includePhone: source.includePhone ?? false,
42889
- tags: runtimeSource.tags,
42958
+ tags: runtimeSource ? runtimeSource.tags : source.tags,
42890
42959
  spamProtectionEnabled: source.spamProtectionEnabled
42891
42960
  }
42892
42961
  };
42893
42962
  }
42894
42963
  });
42964
+ function projectNewsletterFormHydrationTarget(source) {
42965
+ switch (source.source) {
42966
+ case "block": {
42967
+ const destinationRef = buildNewsletterSignupBlockRef(source.blockId);
42968
+ if (destinationRef?.tag === "block_ref") return {
42969
+ tag: "block-source",
42970
+ destinationRef
42971
+ };
42972
+ return {
42973
+ tag: "legacy-direct-list",
42974
+ listId: source.listId ?? null
42975
+ };
42976
+ }
42977
+ case "signed-footer": return {
42978
+ tag: "signed-footer-source",
42979
+ destinationRef: source.destinationRef
42980
+ };
42981
+ case "legacy-direct-list": return {
42982
+ tag: "legacy-direct-list",
42983
+ listId: source.listId
42984
+ };
42985
+ default: return assertNever$3(source);
42986
+ }
42987
+ }
42895
42988
  function parseRequiredNewsletterSignupBlockId(value) {
42896
42989
  const parsed = parseNewsletterSignupBlockId(value);
42897
42990
  if (!parsed) throw new Error("Newsletter signup block destination ref requires blockId");
@@ -45421,6 +45514,7 @@ const SUPPORTED_LOADER_ENDPOINTS$1 = [
45421
45514
  "listPublicRecurringSchedule",
45422
45515
  "getPublicEventDetails",
45423
45516
  "listPublicWholeSeriesOfferings",
45517
+ "getPublicWholeSeriesOffering",
45424
45518
  "listPublicRouteCandidates",
45425
45519
  "listPublicTeamMembers",
45426
45520
  "listPublicProducts",
@@ -46441,6 +46535,7 @@ const loaderAdapters = {
46441
46535
  listPublicEvents,
46442
46536
  listPublicRecurringSchedule,
46443
46537
  getPublicEventDetails,
46538
+ getPublicWholeSeriesOffering,
46444
46539
  listPublicRouteCandidates,
46445
46540
  listPublicTeamMembers,
46446
46541
  listPublicProducts,
@@ -46535,6 +46630,13 @@ async function listPublicEvents({ client, params }) {
46535
46630
  async function listPublicRecurringSchedule(input) {
46536
46631
  return projectRecurringSchedule(await listPublicEvents(input));
46537
46632
  }
46633
+ async function getPublicWholeSeriesOffering({ client, params }) {
46634
+ return await client.getPublicWholeSeriesOffering({
46635
+ siteId: requireStringParam(params, "siteId", "getPublicWholeSeriesOffering"),
46636
+ eventSeriesId: requireStringParam(params, "eventSeriesId", "getPublicWholeSeriesOffering"),
46637
+ stage: readStringParam(params, "stage")
46638
+ });
46639
+ }
46538
46640
  async function getPublicEventDetails({ client, params }) {
46539
46641
  return await client.getPublicEventDetails({
46540
46642
  siteId: requireStringParam(params, "siteId", "getPublicEventDetails"),