@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
@@ -1320,6 +1320,11 @@ const unsafeAsEventSeriesId = (id) => id;
1320
1320
  const parseEventOfferingId = (value) => parseUuidBrand(value, unsafeAsEventOfferingId);
1321
1321
  const parseEventSeriesId = (value) => parseUuidBrand(value, unsafeAsEventSeriesId);
1322
1322
  //#endregion
1323
+ //#region ../core/src/assert-never.ts
1324
+ function assertNever$2(value, message = "Unexpected variant") {
1325
+ throw new Error(`${message}: ${String(value)}`);
1326
+ }
1327
+ //#endregion
1323
1328
  //#region ../core/src/currency-format.ts
1324
1329
  const CURRENCY_LOCALE_BY_CODE = {
1325
1330
  USD: "en-US",
@@ -1593,6 +1598,11 @@ function toLocationCoordinates(value) {
1593
1598
  lng: value.lng
1594
1599
  };
1595
1600
  }
1601
+ //#endregion
1602
+ //#region ../core/src/newsletter-signup-destination.ts
1603
+ function parseNewsletterSignupDestinationProvider(value) {
1604
+ return value === "riverbank" || value === "mailchimp" ? value : null;
1605
+ }
1596
1606
  z$1.object({
1597
1607
  formulaVersion: z$1.literal("managed-domain-overage-v1"),
1598
1608
  conversionRule: z$1.literal("usd-to-gbp-1-to-1-v1"),
@@ -3053,7 +3063,7 @@ function canonicalPaletteHashInput(colors, mode) {
3053
3063
  return `${mode}|${paletteColorFingerprint(colors)}`;
3054
3064
  }
3055
3065
  /**
3056
- * The shared TypeScript/SQL protocol. Do not reorder roles: the order comes
3066
+ * Stable curated-catalogue identity. Do not reorder roles: the order comes
3057
3067
  * from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
3058
3068
  */
3059
3069
  function paletteValueKey(colors, mode) {
@@ -4513,8 +4523,6 @@ const VARIANT_ROLES = [
4513
4523
  "secondary",
4514
4524
  "outline",
4515
4525
  "ghost",
4516
- "link",
4517
- "tertiary",
4518
4526
  "accent"
4519
4527
  ];
4520
4528
  /**
@@ -4523,7 +4531,7 @@ const VARIANT_ROLES = [
4523
4531
  * IDs become class selectors, so keep the contract deliberately narrower than
4524
4532
  * an arbitrary string and shared with every authoring/runtime boundary.
4525
4533
  */
4526
- const buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only");
4534
+ const buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only").refine((value) => value !== "link" && value !== "tertiary", { message: "Retired button role IDs are not valid variant IDs" });
4527
4535
  function parseOpaqueButtonColourToken(value) {
4528
4536
  const token = parseThemeColorToken(value);
4529
4537
  if (token === null) return null;
@@ -4926,6 +4934,59 @@ function surfaceForegroundStyle(input) {
4926
4934
  [SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting
4927
4935
  };
4928
4936
  }
4937
+ shadeBackgroundEffect({
4938
+ id: "darken-background",
4939
+ name: "Darken on Hover",
4940
+ description: "Darkens the background color on hover",
4941
+ label: "Darken Amount (shade step)",
4942
+ shadeDirection: 1
4943
+ });
4944
+ shadeBackgroundEffect({
4945
+ id: "lighten-background",
4946
+ name: "Lighten on Hover",
4947
+ description: "Lightens the background color on hover",
4948
+ label: "Lighten Amount (shade step)",
4949
+ shadeDirection: -1
4950
+ });
4951
+ function shadeBackgroundEffect(config) {
4952
+ return {
4953
+ id: config.id,
4954
+ name: config.name,
4955
+ description: config.description,
4956
+ category: "background",
4957
+ pseudoElement: "none",
4958
+ applicableTo: ["button"],
4959
+ customizableOption: {
4960
+ name: "amount",
4961
+ type: "select",
4962
+ label: config.label,
4963
+ default: 100,
4964
+ options: [
4965
+ 0,
4966
+ 100,
4967
+ 200,
4968
+ 300,
4969
+ 400,
4970
+ 500,
4971
+ 600,
4972
+ 700,
4973
+ 800,
4974
+ 900
4975
+ ]
4976
+ },
4977
+ isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
4978
+ generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
4979
+ if (buttonConfig.background.type !== "solid") return "";
4980
+ const amount = (options.amount || 100) * config.shadeDirection;
4981
+ const baseToken = buttonConfig.background.colorToken ?? "primary-500";
4982
+ return `
4983
+ :where([data-theme-scope="${themeId}"]) .${variantId}:hover {
4984
+ background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
4985
+ }
4986
+ `;
4987
+ }
4988
+ };
4989
+ }
4929
4990
  buttonSizeNameSchema.options;
4930
4991
  //#endregion
4931
4992
  //#region ../theme-core/src/buttons/styles/domain.ts
@@ -7740,6 +7801,60 @@ function resolveThemeColorReferenceValue(input, context) {
7740
7801
  const reference = parseThemeColorReference(input, context);
7741
7802
  return reference.kind === "literal-css" ? reference.value : rgbColorValue(reference.token);
7742
7803
  }
7804
+ const BREAKPOINT_LG = 1024;
7805
+ const BREAKPOINT_XL = 1280;
7806
+ const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
7807
+ function mqUp(px) {
7808
+ return `(min-width: ${px}px)`;
7809
+ }
7810
+ function mqDown(px) {
7811
+ return `(max-width: ${px}px)`;
7812
+ }
7813
+ function mqBetween(minPx, maxPx) {
7814
+ return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
7815
+ }
7816
+ mqUp(640);
7817
+ mqUp(768);
7818
+ mqUp(BREAKPOINT_LG);
7819
+ mqUp(BREAKPOINT_XL);
7820
+ mqDown(639);
7821
+ mqDown(767);
7822
+ mqDown(BREAKPOINT_LG_DOWN);
7823
+ mqBetween(640, BREAKPOINT_LG_DOWN);
7824
+ mqDown(640);
7825
+ mqDown(768);
7826
+ //#endregion
7827
+ //#region ../theme-core/src/header/scrollTreatment.ts
7828
+ const headerScrollTreatmentSchema = z$1.discriminatedUnion("kind", [z$1.object({
7829
+ kind: z$1.literal("contrast-glass"),
7830
+ backgroundTone: z$1.enum(["light", "dark"])
7831
+ })]).optional();
7832
+ //#endregion
7833
+ //#region ../theme-core/src/header/containerSchema.ts
7834
+ const headerContainerSchema = z$1.object({
7835
+ rounded: z$1.enum([
7836
+ "none",
7837
+ "sm",
7838
+ "md",
7839
+ "lg",
7840
+ "xl",
7841
+ "2xl"
7842
+ ]).default("xl"),
7843
+ border: z$1.boolean().default(true),
7844
+ shadow: z$1.boolean().default(true),
7845
+ padding: z$1.enum([
7846
+ "sm",
7847
+ "md",
7848
+ "lg"
7849
+ ]).default("md"),
7850
+ tint: z$1.string().nullable().optional(),
7851
+ opacity: z$1.number().min(0).max(1).default(.12)
7852
+ }).optional();
7853
+ const headerInteractionPaletteSchema = z$1.enum([
7854
+ "primary",
7855
+ "secondary",
7856
+ "accent"
7857
+ ]);
7743
7858
  //#endregion
7744
7859
  //#region ../theme-core/src/schema.ts
7745
7860
  const axesSchema = z$1.object({
@@ -8149,25 +8264,6 @@ const navFontWeight = z$1.enum([
8149
8264
  ]);
8150
8265
  const headerMaxWidth = z$1.enum(["container", "full"]);
8151
8266
  const headerBarFrame = z$1.enum(["full-bleed", "inset-shell"]);
8152
- const headerContainerSchema = z$1.object({
8153
- rounded: z$1.enum([
8154
- "none",
8155
- "sm",
8156
- "md",
8157
- "lg",
8158
- "xl",
8159
- "2xl"
8160
- ]).default("xl"),
8161
- border: z$1.boolean().default(true),
8162
- shadow: z$1.boolean().default(true),
8163
- padding: z$1.enum([
8164
- "sm",
8165
- "md",
8166
- "lg"
8167
- ]).default("md"),
8168
- tint: z$1.string().nullable().optional(),
8169
- opacity: z$1.number().min(0).max(1).default(.12)
8170
- }).optional();
8171
8267
  const headerBorderSchema = componentBorderSchema.extend({ position: z$1.enum([
8172
8268
  "bottom",
8173
8269
  "top",
@@ -8294,6 +8390,7 @@ const headerSchema = z$1.object({
8294
8390
  shrinkOnScroll: z$1.boolean(),
8295
8391
  maxWidth: headerMaxWidth,
8296
8392
  barFrame: headerBarFrame.optional(),
8393
+ scrollTreatment: headerScrollTreatmentSchema,
8297
8394
  logoOverride: mediaSchema$1.nullable().optional(),
8298
8395
  background: headerBackgroundSchema.default({
8299
8396
  type: "color",
@@ -8306,6 +8403,7 @@ const headerSchema = z$1.object({
8306
8403
  navFontRole: z$1.enum(["body", "heading"]).optional(),
8307
8404
  navTypography: z$1.enum(["body", "heading"]).optional(),
8308
8405
  navTextSize: navLinkStyleSchema.shape.textSize,
8406
+ interactionPalette: headerInteractionPaletteSchema.optional(),
8309
8407
  navPlacement: z$1.enum(["end", "center"]).optional(),
8310
8408
  container: headerContainerSchema,
8311
8409
  border: headerBorderSchema,
@@ -8598,770 +8696,669 @@ z$1.object({
8598
8696
  themes: z$1.array(themeSchema).length(3)
8599
8697
  });
8600
8698
  //#endregion
8699
+ //#region ../theme-core/src/site-styles/lookOptionGroups.ts
8700
+ function defineLookOptionGroup(group) {
8701
+ defaultOption(group);
8702
+ return group;
8703
+ }
8704
+ function defaultOption(group) {
8705
+ const option = group.options.find((candidate) => candidate.id === group.defaultOptionId);
8706
+ if (option) return option;
8707
+ throw new Error(`Look option group "${group.id}" defaults to missing option "${group.defaultOptionId}".`);
8708
+ }
8709
+ //#endregion
8601
8710
  //#region ../theme-core/src/site-styles/appearancePresetResolution.ts
8602
8711
  function assertValidOptionGroups(preset) {
8603
8712
  preset.optionGroups?.forEach((group) => {
8604
- if (!group.options.find((option) => option.id === group.selectedOptionId)) throw new Error(`Appearance preset "${preset.id}" option group "${group.id}" selects missing option "${group.selectedOptionId}".`);
8713
+ defineLookOptionGroup(group);
8605
8714
  });
8606
8715
  }
8607
8716
  function defineBlockAppearancePreset(preset) {
8608
8717
  assertValidOptionGroups(preset);
8609
8718
  return preset;
8610
8719
  }
8611
- [...[
8612
- defineBlockAppearancePreset({
8613
- kind: "block-design",
8614
- id: "hero-immersive-image",
8615
- target: "hero",
8616
- label: "Immersive image hero",
8617
- blockKinds: ["block.hero"],
8618
- constraints: { layoutFamilies: ["centered", "compact"] },
8619
- layoutPatches: [{
8620
- constraints: { layoutVariantKeys: ["micro"] },
8621
- designPatch: {
8622
- sectionHeight: "banner",
8623
- heroTypographyScale: "display"
8624
- }
8625
- }],
8626
- design: {
8627
- sectionSurface: "hero-image",
8628
- contentFrame: plainFrame,
8629
- itemSurface: "none",
8630
- sectionHeight: "hero",
8631
- heroComposition: "center",
8632
- heroTypographyScale: "display",
8633
- imageSurfaceTreatment: { kind: "neutral-wash" }
8720
+ //#endregion
8721
+ //#region ../theme-core/src/site-styles/blockAppearancePresets.ts
8722
+ const brandScrimOptionGroups = [{
8723
+ id: "image-surface-treatment",
8724
+ label: "Treatment",
8725
+ defaultOptionId: "brand-scrim-primary",
8726
+ options: [{
8727
+ id: "brand-scrim-primary",
8728
+ label: "Brand scrim",
8729
+ designPatch: { imageSurfaceTreatment: {
8730
+ kind: "brand-scrim",
8731
+ token: "primary"
8732
+ } }
8733
+ }, {
8734
+ id: "neutral-scrim",
8735
+ label: "Neutral scrim",
8736
+ designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8737
+ }]
8738
+ }];
8739
+ const microBannerLayoutPatches = [{
8740
+ constraints: { layoutVariantKeys: ["micro"] },
8741
+ designPatch: { sectionHeight: "banner" }
8742
+ }];
8743
+ defineBlockAppearancePreset({
8744
+ id: "hero-immersive-image",
8745
+ target: "hero",
8746
+ label: "Immersive image hero",
8747
+ blockKinds: ["block.hero"],
8748
+ constraints: { layoutFamilies: ["centered", "compact"] },
8749
+ layoutPatches: [{
8750
+ constraints: { layoutVariantKeys: ["micro"] },
8751
+ designPatch: {
8752
+ sectionHeight: "banner",
8753
+ heroTypographyScale: "display"
8634
8754
  }
8635
- }),
8636
- defineBlockAppearancePreset({
8637
- kind: "block-design",
8638
- id: "hero-bottom-left-panel",
8639
- target: "hero",
8640
- label: "Bottom-left panel hero",
8641
- blockKinds: ["block.hero"],
8642
- constraints: { layoutFamilies: ["centered", "compact"] },
8643
- optionGroups: [{
8644
- id: "image-surface-treatment",
8645
- label: "Treatment",
8646
- selectedOptionId: "neutral-scrim",
8647
- options: [{
8648
- id: "neutral-scrim",
8649
- label: "Neutral scrim",
8650
- designPatch: { imageSurfaceTreatment: {
8651
- kind: "neutral-scrim",
8652
- intensity: "balanced"
8653
- } }
8654
- }, {
8655
- id: "brand-scrim-primary",
8656
- label: "Brand scrim",
8657
- designPatch: { imageSurfaceTreatment: {
8658
- kind: "brand-scrim",
8659
- token: "primary",
8660
- intensity: "balanced"
8661
- } }
8662
- }]
8663
- }],
8664
- layoutPatches: [{
8665
- constraints: { layoutVariantKeys: ["micro"] },
8666
- designPatch: {
8667
- sectionHeight: "banner",
8668
- heroTypographyScale: "editorial"
8669
- }
8670
- }],
8671
- design: {
8672
- sectionSurface: "hero-image",
8673
- contentFrame: panelFrame("raised"),
8674
- itemSurface: "none",
8675
- sectionHeight: "immersive",
8676
- heroComposition: "bottom-left",
8677
- heroTypographyScale: "display",
8678
- imageSurfaceTreatment: {
8755
+ }],
8756
+ design: {
8757
+ sectionSurface: "hero-image",
8758
+ contentFrame: plainFrame,
8759
+ itemSurface: "none",
8760
+ sectionHeight: "hero",
8761
+ heroComposition: "center",
8762
+ heroTypographyScale: "display",
8763
+ imageSurfaceTreatment: { kind: "neutral-wash" }
8764
+ }
8765
+ }), defineBlockAppearancePreset({
8766
+ id: "hero-bottom-left-panel",
8767
+ target: "hero",
8768
+ label: "Bottom-left panel hero",
8769
+ blockKinds: ["block.hero"],
8770
+ constraints: { layoutFamilies: ["centered", "compact"] },
8771
+ optionGroups: [{
8772
+ id: "image-surface-treatment",
8773
+ label: "Treatment",
8774
+ defaultOptionId: "neutral-scrim",
8775
+ options: [{
8776
+ id: "neutral-scrim",
8777
+ label: "Neutral scrim",
8778
+ designPatch: { imageSurfaceTreatment: {
8679
8779
  kind: "neutral-scrim",
8680
8780
  intensity: "balanced"
8681
- }
8682
- }
8683
- }),
8684
- defineBlockAppearancePreset({
8685
- kind: "block-design",
8686
- id: "hero-poster-image",
8687
- target: "hero",
8688
- label: "Poster image hero",
8689
- blockKinds: ["block.hero"],
8690
- constraints: { layoutFamilies: ["centered", "compact"] },
8691
- layoutPatches: [{
8692
- constraints: { layoutVariantKeys: ["micro"] },
8693
- designPatch: {
8694
- sectionHeight: "banner",
8695
- heroTypographyScale: "display"
8696
- }
8697
- }],
8698
- design: {
8699
- sectionSurface: "hero-image",
8700
- contentFrame: plainFrame,
8701
- itemSurface: "none",
8702
- sectionHeight: "immersive",
8703
- heroComposition: "center",
8704
- heroTypographyScale: "poster",
8705
- imageSurfaceTreatment: {
8781
+ } }
8782
+ }, {
8783
+ id: "brand-scrim-primary",
8784
+ label: "Brand scrim",
8785
+ designPatch: { imageSurfaceTreatment: {
8706
8786
  kind: "brand-scrim",
8707
8787
  token: "primary",
8708
- intensity: "strong"
8709
- }
8710
- }
8711
- }),
8712
- defineBlockAppearancePreset({
8713
- kind: "block-design",
8714
- id: "hero-brand-scrim",
8715
- target: "hero",
8716
- label: "Brand scrim image hero",
8717
- blockKinds: ["block.hero"],
8718
- constraints: { layoutFamilies: ["centered", "compact"] },
8719
- optionGroups: [{
8720
- id: "image-surface-treatment",
8721
- label: "Treatment",
8722
- selectedOptionId: "brand-scrim-primary",
8723
- options: [{
8724
- id: "brand-scrim-primary",
8725
- label: "Brand scrim",
8726
- designPatch: { imageSurfaceTreatment: {
8727
- kind: "brand-scrim",
8728
- token: "primary"
8729
- } }
8730
- }, {
8731
- id: "neutral-scrim",
8732
- label: "Neutral scrim",
8733
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8734
- }]
8735
- }],
8736
- layoutPatches: [{
8737
- constraints: { layoutVariantKeys: ["micro"] },
8738
- designPatch: { sectionHeight: "banner" }
8739
- }],
8740
- design: {
8741
- sectionSurface: "hero-image",
8742
- contentFrame: plainFrame,
8743
- itemSurface: "none",
8744
- sectionHeight: "immersive",
8745
- heroComposition: "center",
8746
- heroTypographyScale: "display",
8747
- imageSurfaceTreatment: {
8748
- kind: "brand-scrim",
8749
- token: "primary"
8750
- }
8751
- }
8752
- }),
8753
- defineBlockAppearancePreset({
8754
- kind: "block-design",
8755
- id: "hero-brand-scrim-fixed-frame",
8756
- target: "hero",
8757
- label: "Fixed-frame brand scrim hero",
8758
- blockKinds: ["block.hero"],
8759
- constraints: { layoutFamilies: ["centered", "compact"] },
8760
- optionGroups: [{
8761
- id: "image-surface-treatment",
8762
- label: "Treatment",
8763
- selectedOptionId: "brand-scrim-primary",
8764
- options: [{
8765
- id: "brand-scrim-primary",
8766
- label: "Brand scrim",
8767
- designPatch: { imageSurfaceTreatment: {
8768
- kind: "brand-scrim",
8769
- token: "primary"
8770
- } }
8771
- }, {
8772
- id: "neutral-scrim",
8773
- label: "Neutral scrim",
8774
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8775
- }]
8776
- }],
8777
- layoutPatches: [{
8778
- constraints: { layoutVariantKeys: ["micro"] },
8779
- designPatch: { sectionHeight: "banner" }
8780
- }],
8781
- design: {
8782
- sectionSurface: "hero-image",
8783
- contentFrame: plainFrame,
8784
- itemSurface: "none",
8785
- sectionHeight: "immersive",
8786
- heroComposition: "center",
8787
- heroTypographyScale: "display",
8788
- imageSurfaceTreatment: {
8789
- kind: "brand-scrim",
8790
- token: "primary"
8791
- },
8792
- imageSurfaceMotion: "fixed-frame",
8793
- eyebrowTreatment: "accent-pill-bounce"
8794
- }
8795
- }),
8796
- defineBlockAppearancePreset({
8797
- kind: "block-design",
8798
- id: "hero-brand-depth-expressive",
8799
- target: "hero",
8800
- label: "Expressive brand-depth hero",
8801
- blockKinds: ["block.hero"],
8802
- constraints: { layoutFamilies: ["centered", "compact"] },
8803
- design: {
8804
- sectionSurface: "brand-depth-band",
8805
- contentFrame: plainFrame,
8806
- itemSurface: "none",
8807
- heroComposition: "center",
8808
- heroTypographyScale: "editorial",
8809
- eyebrowTreatment: "accent-pill-bounce"
8810
- }
8811
- }),
8812
- defineBlockAppearancePreset({
8813
- kind: "block-design",
8814
- id: "hero-contained-intro",
8815
- target: "hero",
8816
- label: "Contained intro hero",
8817
- blockKinds: ["block.hero"],
8818
- design: {
8819
- sectionSurface: "muted-band",
8820
- contentFrame: panelFrame("inset"),
8821
- itemSurface: "none",
8822
- heroComposition: "center",
8823
- heroTypographyScale: "editorial"
8824
- }
8825
- }),
8826
- defineBlockAppearancePreset({
8827
- kind: "block-design",
8828
- id: "hero-split-editorial",
8829
- target: "hero",
8830
- label: "Editorial split hero",
8831
- blockKinds: ["block.hero"],
8832
- constraints: { layoutFamilies: ["split"] },
8833
- design: {
8834
- sectionSurface: "base",
8835
- contentFrame: plainFrame,
8836
- itemSurface: "none",
8837
- heroTypographyScale: "editorial"
8838
- }
8839
- }),
8840
- defineBlockAppearancePreset({
8841
- kind: "block-design",
8842
- id: "hero-split-brand",
8843
- target: "hero",
8844
- label: "Brand split hero",
8845
- blockKinds: ["block.hero"],
8846
- constraints: { layoutFamilies: ["split"] },
8847
- design: {
8848
- sectionSurface: "brand-depth-band",
8849
- contentFrame: plainFrame,
8850
- itemSurface: "none",
8851
- heroTypographyScale: "display",
8852
- eyebrowTreatment: "accent-pill-bounce"
8853
- }
8854
- }),
8855
- defineBlockAppearancePreset({
8856
- kind: "block-design",
8857
- id: "hero-split-soft-panel",
8858
- target: "hero",
8859
- label: "Soft panel split hero",
8860
- blockKinds: ["block.hero"],
8861
- constraints: { layoutFamilies: ["split"] },
8862
- design: {
8863
- sectionSurface: "muted-band",
8864
- contentFrame: panelFrame("raised"),
8865
- itemSurface: "none",
8788
+ intensity: "balanced"
8789
+ } }
8790
+ }]
8791
+ }],
8792
+ layoutPatches: [{
8793
+ constraints: { layoutVariantKeys: ["micro"] },
8794
+ designPatch: {
8795
+ sectionHeight: "banner",
8866
8796
  heroTypographyScale: "editorial"
8867
8797
  }
8868
- }),
8869
- defineBlockAppearancePreset({
8870
- kind: "block-design",
8871
- id: "hero-split-accent",
8872
- target: "hero",
8873
- label: "Accent split hero",
8874
- blockKinds: ["block.hero"],
8875
- constraints: { layoutFamilies: ["split"] },
8876
- design: {
8877
- sectionSurface: "accent-band",
8878
- contentFrame: panelFrame("raised"),
8879
- itemSurface: "none",
8798
+ }],
8799
+ design: {
8800
+ sectionSurface: "hero-image",
8801
+ contentFrame: panelFrame("raised"),
8802
+ itemSurface: "none",
8803
+ sectionHeight: "immersive",
8804
+ heroComposition: "bottom-left",
8805
+ heroTypographyScale: "display",
8806
+ imageSurfaceTreatment: {
8807
+ kind: "neutral-scrim",
8808
+ intensity: "balanced"
8809
+ }
8810
+ }
8811
+ }), defineBlockAppearancePreset({
8812
+ id: "hero-poster-image",
8813
+ target: "hero",
8814
+ label: "Poster image hero",
8815
+ blockKinds: ["block.hero"],
8816
+ constraints: { layoutFamilies: ["centered", "compact"] },
8817
+ layoutPatches: [{
8818
+ constraints: { layoutVariantKeys: ["micro"] },
8819
+ designPatch: {
8820
+ sectionHeight: "banner",
8880
8821
  heroTypographyScale: "display"
8881
8822
  }
8882
- }),
8883
- defineBlockAppearancePreset({
8884
- kind: "block-design",
8885
- id: "intro-editorial-statement",
8886
- target: "intro",
8887
- label: "Editorial intro statement",
8888
- blockKinds: ["block.intro"],
8889
- constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
8890
- design: {
8891
- sectionSurface: "base",
8892
- contentFrame: plainFrame,
8893
- itemSurface: "none",
8894
- composition: {
8895
- kind: "intro",
8896
- treatment: "editorial-statement"
8897
- }
8898
- }
8899
- }),
8900
- defineBlockAppearancePreset({
8901
- kind: "block-design",
8902
- id: "intro-portrait-bio",
8903
- target: "intro",
8904
- label: "Portrait and bio",
8905
- blockKinds: ["block.intro"],
8906
- constraints: { layoutVariantKeys: ["media-copy"] },
8907
- design: {
8908
- sectionSurface: "base",
8909
- contentFrame: plainFrame,
8910
- itemSurface: "none",
8911
- composition: {
8912
- kind: "intro",
8913
- treatment: "portrait-bio"
8914
- }
8915
- }
8916
- }),
8917
- defineBlockAppearancePreset({
8918
- kind: "block-design",
8919
- id: "offerings-preview-default-cards",
8920
- target: "offerings",
8921
- label: "Default offering cards",
8922
- blockKinds: ["block.offerings-preview"],
8923
- design: {
8924
- sectionSurface: "base",
8925
- contentFrame: plainFrame,
8926
- itemSurface: "default"
8927
- }
8928
- }),
8929
- defineBlockAppearancePreset({
8930
- kind: "block-design",
8931
- id: "offerings-preview-secondary-cards",
8932
- target: "offerings",
8933
- label: "Secondary offering cards",
8934
- blockKinds: ["block.offerings-preview"],
8935
- design: {
8936
- sectionSurface: "muted-band",
8937
- contentFrame: plainFrame,
8938
- itemSurface: "inset"
8939
- }
8940
- }),
8941
- defineBlockAppearancePreset({
8942
- kind: "block-design",
8943
- id: "offerings-preview-non-carded",
8944
- target: "offerings",
8945
- label: "Non-carded offerings",
8946
- blockKinds: ["block.offerings-preview"],
8947
- design: {
8948
- sectionSurface: "muted-band",
8949
- contentFrame: plainFrame,
8950
- itemSurface: "editorial"
8951
- }
8952
- }),
8953
- defineBlockAppearancePreset({
8954
- kind: "block-design",
8955
- id: "offerings-preview-paired-feature-cards",
8956
- target: "offerings",
8957
- label: "Paired feature cards",
8958
- blockKinds: ["block.offerings-preview"],
8959
- constraints: { layoutVariantKeys: ["cards"] },
8960
- design: {
8961
- sectionSurface: "base",
8962
- contentFrame: plainFrame,
8963
- itemSurface: "none"
8964
- }
8965
- }),
8966
- defineBlockAppearancePreset({
8967
- kind: "block-design",
8968
- id: "offerings-preview-open-editorial-columns",
8969
- target: "offerings",
8970
- label: "Open editorial columns",
8971
- blockKinds: ["block.offerings-preview"],
8972
- constraints: { layoutVariantKeys: ["cards"] },
8973
- design: {
8974
- sectionSurface: "base",
8975
- contentFrame: plainFrame,
8976
- itemSurface: "none"
8977
- }
8978
- }),
8979
- defineBlockAppearancePreset({
8980
- kind: "block-design",
8981
- id: "offerings-preview-joined-programme-panel",
8982
- target: "offerings",
8983
- label: "Joined programme panel",
8984
- blockKinds: ["block.offerings-preview"],
8985
- constraints: { layoutVariantKeys: ["cards"] },
8986
- design: {
8987
- sectionSurface: "base",
8988
- contentFrame: plainFrame,
8989
- itemSurface: "none"
8990
- }
8991
- }),
8992
- defineBlockAppearancePreset({
8993
- kind: "block-design",
8994
- id: "feature-cards-raised-rule",
8995
- target: "feature-cards",
8996
- label: "Raised cards with rule",
8997
- blockKinds: ["block.feature-cards"],
8998
- design: {
8999
- sectionSurface: "base",
9000
- contentFrame: plainFrame,
9001
- itemSurface: "raised"
9002
- }
9003
- }),
9004
- defineBlockAppearancePreset({
9005
- kind: "block-design",
9006
- id: "feature-cards-bold-colors",
9007
- target: "feature-cards",
9008
- label: "Bold colour-blocked cards",
9009
- blockKinds: ["block.feature-cards"],
9010
- design: {
9011
- sectionSurface: "base",
9012
- contentFrame: plainFrame,
9013
- itemSurface: "color-blocked"
9014
- }
9015
- }),
9016
- defineBlockAppearancePreset({
9017
- kind: "block-design",
9018
- id: "feature-cards-editorial-columns",
9019
- target: "feature-cards",
9020
- label: "Editorial open columns",
9021
- blockKinds: ["block.feature-cards"],
9022
- design: {
9023
- sectionSurface: "base",
9024
- contentFrame: plainFrame,
9025
- itemSurface: "editorial"
9026
- }
9027
- }),
9028
- defineBlockAppearancePreset({
9029
- kind: "block-design",
9030
- id: "feature-cards-asymmetric-emphasis",
9031
- target: "feature-cards",
9032
- label: "Asymmetric emphasis pair",
9033
- blockKinds: ["block.feature-cards"],
9034
- constraints: { layoutFamilies: ["grid"] },
9035
- design: {
9036
- sectionSurface: "base",
9037
- contentFrame: plainFrame,
9038
- itemSurface: "none",
9039
- composition: {
9040
- kind: "feature-cards",
9041
- treatment: "asymmetric-emphasis"
9042
- }
9043
- }
9044
- }),
9045
- defineBlockAppearancePreset({
9046
- kind: "block-design",
9047
- id: "feature-cards-framed-programme",
9048
- target: "feature-cards",
9049
- label: "Framed programme cards",
9050
- blockKinds: ["block.feature-cards"],
9051
- constraints: { layoutFamilies: ["grid"] },
9052
- design: {
9053
- sectionSurface: "brand-depth-band",
9054
- contentFrame: plainFrame,
9055
- itemSurface: "inset",
9056
- composition: {
9057
- kind: "feature-cards",
9058
- treatment: "framed-programme"
9059
- }
9060
- }
9061
- }),
9062
- defineBlockAppearancePreset({
9063
- kind: "block-design",
9064
- id: "feature-cards-soft-panels",
9065
- target: "feature-cards",
9066
- label: "Soft tinted panels",
9067
- blockKinds: ["block.feature-cards"],
9068
- design: {
9069
- sectionSurface: "base",
9070
- contentFrame: plainFrame,
9071
- itemSurface: "inset"
9072
- }
9073
- }),
9074
- defineBlockAppearancePreset({
9075
- kind: "block-design",
9076
- id: "feature-cards-editorial-diptych",
9077
- target: "feature-cards",
9078
- label: "Editorial diptych",
9079
- blockKinds: ["block.feature-cards"],
9080
- constraints: { layoutVariantKeys: ["editorial-diptych"] },
9081
- design: {
9082
- sectionSurface: "base",
9083
- contentFrame: plainFrame,
9084
- itemSurface: "flat"
9085
- }
9086
- }),
9087
- defineBlockAppearancePreset({
9088
- kind: "block-design",
9089
- id: "feature-cards-editorial-pathways",
9090
- target: "feature-cards",
9091
- label: "Editorial pathways",
9092
- blockKinds: ["block.feature-cards"],
9093
- constraints: { layoutVariantKeys: ["editorial-pathways"] },
9094
- design: {
9095
- sectionSurface: "base",
9096
- contentFrame: plainFrame,
9097
- itemSurface: "flat"
9098
- }
9099
- }),
9100
- defineBlockAppearancePreset({
9101
- kind: "block-design",
9102
- id: "feature-cards-photo-tiles",
9103
- target: "feature-cards",
9104
- label: "Photo tiles",
9105
- blockKinds: ["block.feature-cards"],
9106
- design: {
9107
- sectionSurface: "base",
9108
- contentFrame: plainFrame,
9109
- itemSurface: "raised"
9110
- }
9111
- }),
9112
- defineBlockAppearancePreset({
9113
- kind: "block-design",
9114
- id: "events-lined-panel",
9115
- target: "events",
9116
- label: "Raised event panel",
9117
- blockKinds: ["block.event-calendar", "block.event-listing"],
9118
- design: {
9119
- sectionSurface: "base",
9120
- contentFrame: panelFrame("raised"),
9121
- itemSurface: "none"
9122
- }
9123
- }),
9124
- defineBlockAppearancePreset({
9125
- kind: "block-design",
9126
- id: "events-ruled-register",
9127
- target: "events",
9128
- label: "Ruled event register",
9129
- blockKinds: ["block.event-calendar", "block.event-listing"],
9130
- design: {
9131
- sectionSurface: "brand-depth-band",
9132
- contentFrame: plainFrame,
9133
- itemSurface: "none",
9134
- eventListTreatment: "ruled-register"
9135
- }
9136
- }),
9137
- defineBlockAppearancePreset({
9138
- kind: "block-design",
9139
- id: "events-editorial-register",
9140
- target: "events",
9141
- label: "Editorial event register",
9142
- blockKinds: ["block.event-calendar", "block.event-listing"],
9143
- design: {
9144
- sectionSurface: "base",
9145
- contentFrame: plainFrame,
9146
- itemSurface: "none",
9147
- eventListTreatment: "editorial-register"
9148
- }
9149
- }),
9150
- defineBlockAppearancePreset({
9151
- kind: "block-design",
9152
- id: "events-dense-index",
9153
- target: "events",
9154
- label: "Dense event index",
9155
- blockKinds: ["block.event-calendar", "block.event-listing"],
9156
- design: {
9157
- sectionSurface: "accent-band",
9158
- contentFrame: plainFrame,
9159
- itemSurface: "none",
9160
- eventListTreatment: "dense-index"
9161
- }
9162
- }),
9163
- defineBlockAppearancePreset({
9164
- kind: "block-design",
9165
- id: "schedule-details-brand-depth",
9166
- target: "events",
9167
- label: "Brand-depth schedule details",
9168
- blockKinds: ["block.event-details", "block.course-details"],
9169
- design: {
9170
- sectionSurface: "brand-depth-band",
9171
- contentFrame: plainFrame,
9172
- itemSurface: "none",
9173
- tileTreatment: "brand-depth"
9174
- }
9175
- }),
9176
- defineBlockAppearancePreset({
9177
- kind: "block-design",
9178
- id: "media-text-flush-feature",
9179
- target: "media-text",
9180
- label: "Flush media feature",
9181
- blockKinds: ["block.media-text"],
9182
- design: {
9183
- sectionSurface: "muted-band",
9184
- contentFrame: flushPanelFrame({ bleed: "start" }),
9185
- itemSurface: "none"
9186
- }
9187
- }),
9188
- defineBlockAppearancePreset({
9189
- kind: "block-design",
9190
- id: "testimonials-simple-cards",
9191
- target: "testimonials",
9192
- label: "Simple testimonial cards",
9193
- blockKinds: ["block.testimonials"],
9194
- design: {
9195
- sectionSurface: "base",
9196
- contentFrame: plainFrame,
9197
- itemSurface: "default"
9198
- }
9199
- }),
9200
- defineBlockAppearancePreset({
9201
- kind: "block-design",
9202
- id: "testimonials-raised-panel",
9203
- target: "testimonials",
9204
- label: "Raised testimonial panel",
9205
- blockKinds: ["block.testimonials"],
9206
- design: {
9207
- sectionSurface: "muted-band",
9208
- contentFrame: panelFrame("raised"),
9209
- itemSurface: "raised"
9210
- }
9211
- }),
9212
- defineBlockAppearancePreset({
9213
- kind: "block-design",
9214
- id: "testimonials-accent-panel",
9215
- target: "testimonials",
9216
- label: "Accent testimonial panel",
9217
- blockKinds: ["block.testimonials"],
9218
- design: {
9219
- sectionSurface: "accent-band",
9220
- contentFrame: panelFrame("raised"),
9221
- itemSurface: "raised"
9222
- }
9223
- }),
9224
- defineBlockAppearancePreset({
9225
- kind: "block-design",
9226
- id: "testimonials-default-cards",
9227
- target: "testimonials",
9228
- label: "Default cards",
9229
- blockKinds: ["block.testimonials"],
9230
- design: {
9231
- sectionSurface: "base",
9232
- contentFrame: plainFrame,
9233
- itemSurface: "none",
9234
- testimonialCardTreatment: "default"
9235
- }
9236
- }),
9237
- defineBlockAppearancePreset({
9238
- kind: "block-design",
9239
- id: "testimonials-statement-cards",
9240
- target: "testimonials",
9241
- label: "Statement cards",
9242
- blockKinds: ["block.testimonials"],
9243
- design: {
9244
- sectionSurface: "accent-band",
9245
- contentFrame: plainFrame,
9246
- itemSurface: "raised",
9247
- testimonialCardTreatment: "statement"
9248
- }
9249
- }),
9250
- defineBlockAppearancePreset({
9251
- kind: "block-design",
9252
- id: "testimonials-brand-statement-cards",
9253
- target: "testimonials",
9254
- label: "Brand statement cards",
9255
- blockKinds: ["block.testimonials"],
9256
- design: {
9257
- sectionSurface: "brand-depth-band",
9258
- contentFrame: plainFrame,
9259
- itemSurface: "raised",
9260
- testimonialCardTreatment: "statement"
9261
- }
9262
- }),
9263
- defineBlockAppearancePreset({
9264
- kind: "block-design",
9265
- id: "testimonials-non-carded",
9266
- target: "testimonials",
9267
- label: "Non-carded",
9268
- blockKinds: ["block.testimonials"],
9269
- design: {
9270
- sectionSurface: "muted-band",
9271
- contentFrame: plainFrame,
9272
- itemSurface: "none",
9273
- testimonialCardTreatment: "non-carded"
9274
- }
9275
- }),
9276
- defineBlockAppearancePreset({
9277
- kind: "block-design",
9278
- id: "testimonials-evergreen-lead",
9279
- target: "testimonials",
9280
- label: "Evergreen lead",
9281
- blockKinds: ["block.testimonials"],
9282
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9283
- design: {
9284
- sectionSurface: "base",
9285
- contentFrame: plainFrame,
9286
- itemSurface: "none"
9287
- }
9288
- }),
9289
- defineBlockAppearancePreset({
9290
- kind: "block-design",
9291
- id: "testimonials-room-and-response",
9292
- target: "testimonials",
9293
- label: "Room and response",
9294
- blockKinds: ["block.testimonials"],
9295
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9296
- design: {
9297
- sectionSurface: "base",
9298
- contentFrame: plainFrame,
9299
- itemSurface: "none"
9300
- }
9301
- }),
9302
- defineBlockAppearancePreset({
9303
- kind: "block-design",
9304
- id: "testimonials-open-floor",
9305
- target: "testimonials",
9306
- label: "Open floor",
9307
- blockKinds: ["block.testimonials"],
9308
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9309
- design: {
9310
- sectionSurface: "base",
9311
- contentFrame: plainFrame,
9312
- itemSurface: "none"
9313
- }
9314
- }),
9315
- defineBlockAppearancePreset({
9316
- kind: "block-design",
9317
- id: "faq-base-accordion",
9318
- target: "faq",
9319
- label: "Base accordion FAQ",
9320
- blockKinds: ["block.faq"],
9321
- design: {
9322
- sectionSurface: "base",
9323
- contentFrame: plainFrame,
9324
- itemSurface: "default"
9325
- }
9326
- }),
9327
- defineBlockAppearancePreset({
9328
- kind: "block-design",
9329
- id: "faq-contained-help",
9330
- target: "faq",
9331
- label: "Contained help panel",
9332
- blockKinds: ["block.faq"],
9333
- design: {
9334
- sectionSurface: "muted-band",
9335
- contentFrame: panelFrame("inset"),
9336
- itemSurface: "default"
9337
- }
9338
- }),
9339
- defineBlockAppearancePreset({
9340
- kind: "block-design",
9341
- id: "contact-form-panel",
9342
- target: "contact-form",
9343
- label: "Raised form panel",
9344
- blockKinds: ["block.form"],
9345
- design: {
9346
- sectionSurface: "muted-band",
9347
- contentFrame: panelFrame("raised"),
9348
- itemSurface: "none"
9349
- }
9350
- }),
9351
- defineBlockAppearancePreset({
9352
- kind: "block-design",
9353
- id: "cta-accent-band",
9354
- target: "cta",
9355
- label: "Accent CTA band",
9356
- blockKinds: ["block.cta-full"],
9357
- design: {
9358
- sectionSurface: "accent-band",
9359
- contentFrame: plainFrame,
9360
- itemSurface: "none",
9361
- eyebrowTreatment: "accent"
9362
- }
9363
- })
9364
- ]];
8823
+ }],
8824
+ design: {
8825
+ sectionSurface: "hero-image",
8826
+ contentFrame: plainFrame,
8827
+ itemSurface: "none",
8828
+ sectionHeight: "immersive",
8829
+ heroComposition: "center",
8830
+ heroTypographyScale: "poster",
8831
+ imageSurfaceTreatment: {
8832
+ kind: "brand-scrim",
8833
+ token: "primary",
8834
+ intensity: "strong"
8835
+ }
8836
+ }
8837
+ }), defineBlockAppearancePreset({
8838
+ id: "hero-brand-scrim",
8839
+ target: "hero",
8840
+ label: "Brand scrim image hero",
8841
+ blockKinds: ["block.hero"],
8842
+ constraints: { layoutFamilies: ["centered", "compact"] },
8843
+ optionGroups: brandScrimOptionGroups,
8844
+ layoutPatches: microBannerLayoutPatches,
8845
+ design: {
8846
+ sectionSurface: "hero-image",
8847
+ contentFrame: plainFrame,
8848
+ itemSurface: "none",
8849
+ sectionHeight: "immersive",
8850
+ heroComposition: "center",
8851
+ heroTypographyScale: "display",
8852
+ imageSurfaceTreatment: {
8853
+ kind: "brand-scrim",
8854
+ token: "primary"
8855
+ }
8856
+ }
8857
+ }), defineBlockAppearancePreset({
8858
+ id: "hero-brand-scrim-fixed-frame",
8859
+ target: "hero",
8860
+ label: "Fixed-frame brand scrim hero",
8861
+ blockKinds: ["block.hero"],
8862
+ constraints: { layoutFamilies: ["centered", "compact"] },
8863
+ optionGroups: brandScrimOptionGroups,
8864
+ layoutPatches: microBannerLayoutPatches,
8865
+ design: {
8866
+ sectionSurface: "hero-image",
8867
+ contentFrame: plainFrame,
8868
+ itemSurface: "none",
8869
+ sectionHeight: "immersive",
8870
+ heroComposition: "center",
8871
+ heroTypographyScale: "display",
8872
+ imageSurfaceTreatment: {
8873
+ kind: "brand-scrim",
8874
+ token: "primary"
8875
+ },
8876
+ imageSurfaceMotion: "fixed-frame",
8877
+ eyebrowTreatment: "accent-pill-bounce"
8878
+ }
8879
+ }), defineBlockAppearancePreset({
8880
+ id: "hero-brand-depth-expressive",
8881
+ target: "hero",
8882
+ label: "Expressive brand-depth hero",
8883
+ blockKinds: ["block.hero"],
8884
+ constraints: { layoutFamilies: ["centered", "compact"] },
8885
+ design: {
8886
+ sectionSurface: "brand-depth-band",
8887
+ contentFrame: plainFrame,
8888
+ itemSurface: "none",
8889
+ heroComposition: "center",
8890
+ heroTypographyScale: "editorial",
8891
+ eyebrowTreatment: "accent-pill-bounce"
8892
+ }
8893
+ }), defineBlockAppearancePreset({
8894
+ id: "hero-contained-intro",
8895
+ target: "hero",
8896
+ label: "Contained intro hero",
8897
+ blockKinds: ["block.hero"],
8898
+ design: {
8899
+ sectionSurface: "muted-band",
8900
+ contentFrame: panelFrame("inset"),
8901
+ itemSurface: "none",
8902
+ heroComposition: "center",
8903
+ heroTypographyScale: "editorial"
8904
+ }
8905
+ }), defineBlockAppearancePreset({
8906
+ id: "hero-split-editorial",
8907
+ target: "hero",
8908
+ label: "Editorial split hero",
8909
+ blockKinds: ["block.hero"],
8910
+ constraints: { layoutFamilies: ["split"] },
8911
+ design: {
8912
+ sectionSurface: "base",
8913
+ contentFrame: plainFrame,
8914
+ itemSurface: "none",
8915
+ heroTypographyScale: "editorial"
8916
+ }
8917
+ }), defineBlockAppearancePreset({
8918
+ id: "hero-split-brand",
8919
+ target: "hero",
8920
+ label: "Brand split hero",
8921
+ blockKinds: ["block.hero"],
8922
+ constraints: { layoutFamilies: ["split"] },
8923
+ design: {
8924
+ sectionSurface: "brand-depth-band",
8925
+ contentFrame: plainFrame,
8926
+ itemSurface: "none",
8927
+ heroTypographyScale: "display",
8928
+ eyebrowTreatment: "accent-pill-bounce"
8929
+ }
8930
+ }), defineBlockAppearancePreset({
8931
+ id: "hero-split-soft-panel",
8932
+ target: "hero",
8933
+ label: "Soft panel split hero",
8934
+ blockKinds: ["block.hero"],
8935
+ constraints: { layoutFamilies: ["split"] },
8936
+ design: {
8937
+ sectionSurface: "muted-band",
8938
+ contentFrame: panelFrame("raised"),
8939
+ itemSurface: "none",
8940
+ heroTypographyScale: "editorial"
8941
+ }
8942
+ }), defineBlockAppearancePreset({
8943
+ id: "hero-split-accent",
8944
+ target: "hero",
8945
+ label: "Accent split hero",
8946
+ blockKinds: ["block.hero"],
8947
+ constraints: { layoutFamilies: ["split"] },
8948
+ design: {
8949
+ sectionSurface: "accent-band",
8950
+ contentFrame: panelFrame("raised"),
8951
+ itemSurface: "none",
8952
+ heroTypographyScale: "display"
8953
+ }
8954
+ }), defineBlockAppearancePreset({
8955
+ id: "intro-editorial-statement",
8956
+ target: "intro",
8957
+ label: "Editorial intro statement",
8958
+ blockKinds: ["block.intro"],
8959
+ constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
8960
+ design: {
8961
+ sectionSurface: "base",
8962
+ contentFrame: plainFrame,
8963
+ itemSurface: "none",
8964
+ composition: {
8965
+ kind: "intro",
8966
+ treatment: "editorial-statement"
8967
+ }
8968
+ }
8969
+ }), defineBlockAppearancePreset({
8970
+ id: "intro-portrait-bio",
8971
+ target: "intro",
8972
+ label: "Portrait and bio",
8973
+ blockKinds: ["block.intro"],
8974
+ constraints: { layoutVariantKeys: ["media-copy"] },
8975
+ design: {
8976
+ sectionSurface: "base",
8977
+ contentFrame: plainFrame,
8978
+ itemSurface: "none",
8979
+ composition: {
8980
+ kind: "intro",
8981
+ treatment: "portrait-bio"
8982
+ }
8983
+ }
8984
+ }), defineBlockAppearancePreset({
8985
+ id: "offerings-preview-default-cards",
8986
+ target: "offerings",
8987
+ label: "Default offering cards",
8988
+ blockKinds: ["block.offerings-preview"],
8989
+ design: {
8990
+ sectionSurface: "base",
8991
+ contentFrame: plainFrame,
8992
+ itemSurface: "default"
8993
+ }
8994
+ }), defineBlockAppearancePreset({
8995
+ id: "offerings-preview-secondary-cards",
8996
+ target: "offerings",
8997
+ label: "Secondary offering cards",
8998
+ blockKinds: ["block.offerings-preview"],
8999
+ design: {
9000
+ sectionSurface: "muted-band",
9001
+ contentFrame: plainFrame,
9002
+ itemSurface: "inset"
9003
+ }
9004
+ }), defineBlockAppearancePreset({
9005
+ id: "offerings-preview-non-carded",
9006
+ target: "offerings",
9007
+ label: "Non-carded offerings",
9008
+ blockKinds: ["block.offerings-preview"],
9009
+ design: {
9010
+ sectionSurface: "muted-band",
9011
+ contentFrame: plainFrame,
9012
+ itemSurface: "editorial"
9013
+ }
9014
+ }), defineBlockAppearancePreset({
9015
+ id: "offerings-preview-paired-feature-cards",
9016
+ target: "offerings",
9017
+ label: "Paired feature cards",
9018
+ blockKinds: ["block.offerings-preview"],
9019
+ constraints: { layoutVariantKeys: ["cards"] },
9020
+ design: {
9021
+ sectionSurface: "base",
9022
+ contentFrame: plainFrame,
9023
+ itemSurface: "none"
9024
+ }
9025
+ }), defineBlockAppearancePreset({
9026
+ id: "offerings-preview-open-editorial-columns",
9027
+ target: "offerings",
9028
+ label: "Open editorial columns",
9029
+ blockKinds: ["block.offerings-preview"],
9030
+ constraints: { layoutVariantKeys: ["cards"] },
9031
+ design: {
9032
+ sectionSurface: "base",
9033
+ contentFrame: plainFrame,
9034
+ itemSurface: "none"
9035
+ }
9036
+ }), defineBlockAppearancePreset({
9037
+ id: "offerings-preview-joined-programme-panel",
9038
+ target: "offerings",
9039
+ label: "Joined programme panel",
9040
+ blockKinds: ["block.offerings-preview"],
9041
+ constraints: { layoutVariantKeys: ["cards"] },
9042
+ design: {
9043
+ sectionSurface: "base",
9044
+ contentFrame: plainFrame,
9045
+ itemSurface: "none"
9046
+ }
9047
+ }), defineBlockAppearancePreset({
9048
+ id: "feature-cards-raised-rule",
9049
+ target: "feature-cards",
9050
+ label: "Raised cards with rule",
9051
+ blockKinds: ["block.feature-cards"],
9052
+ design: {
9053
+ sectionSurface: "base",
9054
+ contentFrame: plainFrame,
9055
+ itemSurface: "raised"
9056
+ }
9057
+ }), defineBlockAppearancePreset({
9058
+ id: "feature-cards-bold-colors",
9059
+ target: "feature-cards",
9060
+ label: "Bold colour-blocked cards",
9061
+ blockKinds: ["block.feature-cards"],
9062
+ design: {
9063
+ sectionSurface: "base",
9064
+ contentFrame: plainFrame,
9065
+ itemSurface: "color-blocked"
9066
+ }
9067
+ }), defineBlockAppearancePreset({
9068
+ id: "feature-cards-editorial-columns",
9069
+ target: "feature-cards",
9070
+ label: "Editorial open columns",
9071
+ blockKinds: ["block.feature-cards"],
9072
+ design: {
9073
+ sectionSurface: "base",
9074
+ contentFrame: plainFrame,
9075
+ itemSurface: "editorial"
9076
+ }
9077
+ }), defineBlockAppearancePreset({
9078
+ id: "feature-cards-asymmetric-emphasis",
9079
+ target: "feature-cards",
9080
+ label: "Asymmetric emphasis pair",
9081
+ blockKinds: ["block.feature-cards"],
9082
+ constraints: { layoutFamilies: ["grid"] },
9083
+ design: {
9084
+ sectionSurface: "base",
9085
+ contentFrame: plainFrame,
9086
+ itemSurface: "none",
9087
+ composition: {
9088
+ kind: "feature-cards",
9089
+ treatment: "asymmetric-emphasis"
9090
+ }
9091
+ }
9092
+ }), defineBlockAppearancePreset({
9093
+ id: "feature-cards-framed-programme",
9094
+ target: "feature-cards",
9095
+ label: "Framed programme cards",
9096
+ blockKinds: ["block.feature-cards"],
9097
+ constraints: { layoutFamilies: ["grid"] },
9098
+ design: {
9099
+ sectionSurface: "brand-depth-band",
9100
+ contentFrame: plainFrame,
9101
+ itemSurface: "inset",
9102
+ composition: {
9103
+ kind: "feature-cards",
9104
+ treatment: "framed-programme"
9105
+ }
9106
+ }
9107
+ }), defineBlockAppearancePreset({
9108
+ id: "feature-cards-soft-panels",
9109
+ target: "feature-cards",
9110
+ label: "Soft tinted panels",
9111
+ blockKinds: ["block.feature-cards"],
9112
+ design: {
9113
+ sectionSurface: "base",
9114
+ contentFrame: plainFrame,
9115
+ itemSurface: "inset"
9116
+ }
9117
+ }), defineBlockAppearancePreset({
9118
+ id: "feature-cards-editorial-diptych",
9119
+ target: "feature-cards",
9120
+ label: "Editorial diptych",
9121
+ blockKinds: ["block.feature-cards"],
9122
+ constraints: { layoutVariantKeys: ["editorial-diptych"] },
9123
+ design: {
9124
+ sectionSurface: "base",
9125
+ contentFrame: plainFrame,
9126
+ itemSurface: "flat"
9127
+ }
9128
+ }), defineBlockAppearancePreset({
9129
+ id: "feature-cards-editorial-pathways",
9130
+ target: "feature-cards",
9131
+ label: "Editorial pathways",
9132
+ blockKinds: ["block.feature-cards"],
9133
+ constraints: { layoutVariantKeys: ["editorial-pathways"] },
9134
+ design: {
9135
+ sectionSurface: "base",
9136
+ contentFrame: plainFrame,
9137
+ itemSurface: "flat"
9138
+ }
9139
+ }), defineBlockAppearancePreset({
9140
+ id: "feature-cards-photo-tiles",
9141
+ target: "feature-cards",
9142
+ label: "Photo tiles",
9143
+ blockKinds: ["block.feature-cards"],
9144
+ design: {
9145
+ sectionSurface: "base",
9146
+ contentFrame: plainFrame,
9147
+ itemSurface: "raised"
9148
+ }
9149
+ }), defineBlockAppearancePreset({
9150
+ id: "events-lined-panel",
9151
+ target: "events",
9152
+ label: "Raised event panel",
9153
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9154
+ design: {
9155
+ sectionSurface: "base",
9156
+ contentFrame: panelFrame("raised"),
9157
+ itemSurface: "none"
9158
+ }
9159
+ }), defineBlockAppearancePreset({
9160
+ id: "events-ruled-register",
9161
+ target: "events",
9162
+ label: "Ruled event register",
9163
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9164
+ design: {
9165
+ sectionSurface: "brand-depth-band",
9166
+ contentFrame: plainFrame,
9167
+ itemSurface: "none",
9168
+ eventListTreatment: "ruled-register"
9169
+ }
9170
+ }), defineBlockAppearancePreset({
9171
+ id: "events-editorial-register",
9172
+ target: "events",
9173
+ label: "Editorial event register",
9174
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9175
+ design: {
9176
+ sectionSurface: "base",
9177
+ contentFrame: plainFrame,
9178
+ itemSurface: "none",
9179
+ eventListTreatment: "editorial-register"
9180
+ }
9181
+ }), defineBlockAppearancePreset({
9182
+ id: "events-dense-index",
9183
+ target: "events",
9184
+ label: "Dense event index",
9185
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9186
+ design: {
9187
+ sectionSurface: "accent-band",
9188
+ contentFrame: plainFrame,
9189
+ itemSurface: "none",
9190
+ eventListTreatment: "dense-index"
9191
+ }
9192
+ }), defineBlockAppearancePreset({
9193
+ id: "schedule-details-brand-depth",
9194
+ target: "events",
9195
+ label: "Brand-depth schedule details",
9196
+ blockKinds: ["block.event-details", "block.course-details"],
9197
+ design: {
9198
+ sectionSurface: "brand-depth-band",
9199
+ contentFrame: plainFrame,
9200
+ itemSurface: "none",
9201
+ tileTreatment: "brand-depth"
9202
+ }
9203
+ }), defineBlockAppearancePreset({
9204
+ id: "media-text-flush-feature",
9205
+ target: "media-text",
9206
+ label: "Flush media feature",
9207
+ blockKinds: ["block.media-text"],
9208
+ design: {
9209
+ sectionSurface: "muted-band",
9210
+ contentFrame: flushPanelFrame({ bleed: "start" }),
9211
+ itemSurface: "none"
9212
+ }
9213
+ }), defineBlockAppearancePreset({
9214
+ id: "testimonials-simple-cards",
9215
+ target: "testimonials",
9216
+ label: "Simple testimonial cards",
9217
+ blockKinds: ["block.testimonials"],
9218
+ design: {
9219
+ sectionSurface: "base",
9220
+ contentFrame: plainFrame,
9221
+ itemSurface: "default"
9222
+ }
9223
+ }), defineBlockAppearancePreset({
9224
+ id: "testimonials-raised-panel",
9225
+ target: "testimonials",
9226
+ label: "Raised testimonial panel",
9227
+ blockKinds: ["block.testimonials"],
9228
+ design: {
9229
+ sectionSurface: "muted-band",
9230
+ contentFrame: panelFrame("raised"),
9231
+ itemSurface: "raised"
9232
+ }
9233
+ }), defineBlockAppearancePreset({
9234
+ id: "testimonials-accent-panel",
9235
+ target: "testimonials",
9236
+ label: "Accent testimonial panel",
9237
+ blockKinds: ["block.testimonials"],
9238
+ design: {
9239
+ sectionSurface: "accent-band",
9240
+ contentFrame: panelFrame("raised"),
9241
+ itemSurface: "raised"
9242
+ }
9243
+ }), defineBlockAppearancePreset({
9244
+ id: "testimonials-default-cards",
9245
+ target: "testimonials",
9246
+ label: "Default cards",
9247
+ blockKinds: ["block.testimonials"],
9248
+ design: {
9249
+ sectionSurface: "base",
9250
+ contentFrame: plainFrame,
9251
+ itemSurface: "none",
9252
+ testimonialCardTreatment: "default"
9253
+ }
9254
+ }), defineBlockAppearancePreset({
9255
+ id: "testimonials-statement-cards",
9256
+ target: "testimonials",
9257
+ label: "Statement cards",
9258
+ blockKinds: ["block.testimonials"],
9259
+ design: {
9260
+ sectionSurface: "accent-band",
9261
+ contentFrame: plainFrame,
9262
+ itemSurface: "raised",
9263
+ testimonialCardTreatment: "statement"
9264
+ }
9265
+ }), defineBlockAppearancePreset({
9266
+ id: "testimonials-brand-statement-cards",
9267
+ target: "testimonials",
9268
+ label: "Brand statement cards",
9269
+ blockKinds: ["block.testimonials"],
9270
+ design: {
9271
+ sectionSurface: "brand-depth-band",
9272
+ contentFrame: plainFrame,
9273
+ itemSurface: "raised",
9274
+ testimonialCardTreatment: "statement"
9275
+ }
9276
+ }), defineBlockAppearancePreset({
9277
+ id: "testimonials-non-carded",
9278
+ target: "testimonials",
9279
+ label: "Non-carded",
9280
+ blockKinds: ["block.testimonials"],
9281
+ design: {
9282
+ sectionSurface: "muted-band",
9283
+ contentFrame: plainFrame,
9284
+ itemSurface: "none",
9285
+ testimonialCardTreatment: "non-carded"
9286
+ }
9287
+ }), defineBlockAppearancePreset({
9288
+ id: "testimonials-evergreen-lead",
9289
+ target: "testimonials",
9290
+ label: "Evergreen lead",
9291
+ blockKinds: ["block.testimonials"],
9292
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9293
+ design: {
9294
+ sectionSurface: "base",
9295
+ contentFrame: plainFrame,
9296
+ itemSurface: "none"
9297
+ }
9298
+ }), defineBlockAppearancePreset({
9299
+ id: "testimonials-room-and-response",
9300
+ target: "testimonials",
9301
+ label: "Room and response",
9302
+ blockKinds: ["block.testimonials"],
9303
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9304
+ design: {
9305
+ sectionSurface: "base",
9306
+ contentFrame: plainFrame,
9307
+ itemSurface: "none"
9308
+ }
9309
+ }), defineBlockAppearancePreset({
9310
+ id: "testimonials-open-floor",
9311
+ target: "testimonials",
9312
+ label: "Open floor",
9313
+ blockKinds: ["block.testimonials"],
9314
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9315
+ design: {
9316
+ sectionSurface: "base",
9317
+ contentFrame: plainFrame,
9318
+ itemSurface: "none"
9319
+ }
9320
+ }), defineBlockAppearancePreset({
9321
+ id: "faq-base-accordion",
9322
+ target: "faq",
9323
+ label: "Base accordion FAQ",
9324
+ blockKinds: ["block.faq"],
9325
+ design: {
9326
+ sectionSurface: "base",
9327
+ contentFrame: plainFrame,
9328
+ itemSurface: "default"
9329
+ }
9330
+ }), defineBlockAppearancePreset({
9331
+ id: "faq-contained-help",
9332
+ target: "faq",
9333
+ label: "Contained help panel",
9334
+ blockKinds: ["block.faq"],
9335
+ design: {
9336
+ sectionSurface: "muted-band",
9337
+ contentFrame: panelFrame("inset"),
9338
+ itemSurface: "default"
9339
+ }
9340
+ }), defineBlockAppearancePreset({
9341
+ id: "contact-form-panel",
9342
+ target: "contact-form",
9343
+ label: "Raised form panel",
9344
+ blockKinds: ["block.form"],
9345
+ design: {
9346
+ sectionSurface: "muted-band",
9347
+ contentFrame: panelFrame("raised"),
9348
+ itemSurface: "none"
9349
+ }
9350
+ }), defineBlockAppearancePreset({
9351
+ id: "cta-accent-band",
9352
+ target: "cta",
9353
+ label: "Accent CTA band",
9354
+ blockKinds: ["block.cta-full"],
9355
+ design: {
9356
+ sectionSurface: "accent-band",
9357
+ contentFrame: plainFrame,
9358
+ itemSurface: "none",
9359
+ eyebrowTreatment: "accent"
9360
+ }
9361
+ });
9365
9362
  //#endregion
9366
9363
  //#region ../theme-core/src/site-styles/headerCtaVariants.ts
9367
9364
  function hasButtonVariant(theme, variantId) {
@@ -9442,6 +9439,27 @@ function uniqueStrings(values) {
9442
9439
  return Array.from(new Set(values));
9443
9440
  }
9444
9441
  //#endregion
9442
+ //#region ../theme-core/src/site-styles/headerInteractionPalette.ts
9443
+ const clearSplitInteractionPalette = defineLookOptionGroup({
9444
+ id: "interaction-palette",
9445
+ label: "Hover colour",
9446
+ defaultOptionId: "accent",
9447
+ options: [
9448
+ {
9449
+ id: "accent",
9450
+ label: "Accent"
9451
+ },
9452
+ {
9453
+ id: "primary",
9454
+ label: "Primary"
9455
+ },
9456
+ {
9457
+ id: "secondary",
9458
+ label: "Secondary"
9459
+ }
9460
+ ]
9461
+ });
9462
+ //#endregion
9445
9463
  //#region ../theme-core/src/site-styles/headerLooks.ts
9446
9464
  function asHeaderLookId(value) {
9447
9465
  return value;
@@ -9575,7 +9593,7 @@ const overlayLogoAccommodations = [
9575
9593
  * optional nested styling fields that would otherwise leak from another Look.
9576
9594
  */
9577
9595
  function baseHeader(theme) {
9578
- 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;
9596
+ 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;
9579
9597
  return {
9580
9598
  ...header,
9581
9599
  navContainer: {
@@ -9590,7 +9608,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9590
9608
  id: asHeaderLayoutId("classic"),
9591
9609
  label: "Classic",
9592
9610
  description: "Logo and navigation in one practical horizontal row.",
9593
- structure: "inline-classic",
9594
9611
  variant: "classic",
9595
9612
  defaultPositioning: "sticky",
9596
9613
  shrinkOnScroll: false
@@ -9599,7 +9616,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9599
9616
  id: asHeaderLayoutId("centered"),
9600
9617
  label: "Centered",
9601
9618
  description: "Logo centered above a balanced navigation row.",
9602
- structure: "centered-stack",
9603
9619
  variant: "centered",
9604
9620
  defaultPositioning: "static",
9605
9621
  shrinkOnScroll: false,
@@ -9615,7 +9631,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9615
9631
  id: asHeaderLayoutId("floating"),
9616
9632
  label: "Floating",
9617
9633
  description: "Detached header chrome that sits over the opening section.",
9618
- structure: "floating-shell",
9619
9634
  variant: "floating",
9620
9635
  defaultPositioning: "sticky",
9621
9636
  shrinkOnScroll: true,
@@ -9777,10 +9792,13 @@ const headerStyleCatalog = defineExactCatalog()([
9777
9792
  label: "Clear Split",
9778
9793
  description: "Floating logo with transparent navigation and no shared shell.",
9779
9794
  supportedLayoutIds: supportedLayouts(["floating"]),
9780
- navInteraction: "color-change",
9795
+ navInteraction: "pill-background",
9781
9796
  surface: "floating",
9782
- defaultDepth: "none",
9797
+ defaultDepth: "line",
9783
9798
  navTypography: "plain",
9799
+ openingForegroundTarget: "all",
9800
+ scrollTreatment: "contrast-glass",
9801
+ interactionPalette: clearSplitInteractionPalette,
9784
9802
  moods: ["editorial", "calm"]
9785
9803
  },
9786
9804
  {
@@ -9803,6 +9821,7 @@ const headerStyleCatalog = defineExactCatalog()([
9803
9821
  surface: "floating",
9804
9822
  defaultDepth: "shadow",
9805
9823
  navTypography: "quiet-caps",
9824
+ openingForegroundTarget: "brand-only",
9806
9825
  moods: ["expressive"]
9807
9826
  },
9808
9827
  {
@@ -9814,6 +9833,7 @@ const headerStyleCatalog = defineExactCatalog()([
9814
9833
  surface: "floating",
9815
9834
  defaultDepth: "shadow",
9816
9835
  navTypography: "heading",
9836
+ openingForegroundTarget: "brand-only",
9817
9837
  moods: ["calm", "editorial"]
9818
9838
  }
9819
9839
  ]);
@@ -10315,13 +10335,6 @@ const headerLookCatalog = defineExactCatalog()([
10315
10335
  {
10316
10336
  id: asHeaderLookId("clean-base"),
10317
10337
  label: "Clean base",
10318
- visualTreatment: "solid-neutral",
10319
- layoutBehavior: "sticky",
10320
- configuration: {
10321
- structure: "inline-classic",
10322
- treatment: "solid-neutral",
10323
- behavior: "sticky"
10324
- },
10325
10338
  openingRequirement: "none",
10326
10339
  logoAccommodations: inlineClassicLogoAccommodations,
10327
10340
  compile: cleanBaseHeader
@@ -10329,13 +10342,6 @@ const headerLookCatalog = defineExactCatalog()([
10329
10342
  {
10330
10343
  id: asHeaderLookId("classic-centered-nav"),
10331
10344
  label: "Centered nav",
10332
- visualTreatment: "solid-neutral",
10333
- layoutBehavior: "sticky",
10334
- configuration: {
10335
- structure: "inline-classic",
10336
- treatment: "solid-neutral",
10337
- behavior: "sticky"
10338
- },
10339
10345
  openingRequirement: "none",
10340
10346
  maxRecommendedNavItems: 6,
10341
10347
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -10344,13 +10350,6 @@ const headerLookCatalog = defineExactCatalog()([
10344
10350
  {
10345
10351
  id: asHeaderLookId("brand-solid"),
10346
10352
  label: "Brand solid",
10347
- visualTreatment: "solid-brand",
10348
- layoutBehavior: "sticky-shrink",
10349
- configuration: {
10350
- structure: "inline-classic",
10351
- treatment: "solid-brand",
10352
- behavior: "sticky-shrink"
10353
- },
10354
10353
  openingRequirement: "none",
10355
10354
  logoAccommodations: inlineClassicLogoAccommodations,
10356
10355
  compile: solidBrandHeader
@@ -10358,13 +10357,6 @@ const headerLookCatalog = defineExactCatalog()([
10358
10357
  {
10359
10358
  id: asHeaderLookId("serif-line"),
10360
10359
  label: "Serif line",
10361
- visualTreatment: "light-serif",
10362
- layoutBehavior: "sticky",
10363
- configuration: {
10364
- structure: "centered-stack",
10365
- treatment: "light-serif",
10366
- behavior: "sticky"
10367
- },
10368
10360
  openingRequirement: "none",
10369
10361
  maxRecommendedNavItems: 6,
10370
10362
  logoAccommodations: centeredLogoAccommodations,
@@ -10373,13 +10365,6 @@ const headerLookCatalog = defineExactCatalog()([
10373
10365
  {
10374
10366
  id: asHeaderLookId("centered-calm"),
10375
10367
  label: "Centered calm",
10376
- visualTreatment: "light-serif",
10377
- layoutBehavior: "normal-flow",
10378
- configuration: {
10379
- structure: "centered-stack",
10380
- treatment: "light-serif",
10381
- behavior: "normal-flow"
10382
- },
10383
10368
  openingRequirement: "none",
10384
10369
  maxRecommendedNavItems: 5,
10385
10370
  logoAccommodations: centeredLogoAccommodations,
@@ -10388,13 +10373,6 @@ const headerLookCatalog = defineExactCatalog()([
10388
10373
  {
10389
10374
  id: asHeaderLookId("practical-utility"),
10390
10375
  label: "Practical utility",
10391
- visualTreatment: "solid-neutral",
10392
- layoutBehavior: "sticky-shrink",
10393
- configuration: {
10394
- structure: "inline-classic",
10395
- treatment: "solid-neutral",
10396
- behavior: "sticky-shrink"
10397
- },
10398
10376
  openingRequirement: "none",
10399
10377
  requiresProminentCta: true,
10400
10378
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -10403,13 +10381,6 @@ const headerLookCatalog = defineExactCatalog()([
10403
10381
  {
10404
10382
  id: asHeaderLookId("minimal-transparent"),
10405
10383
  label: "Minimal transparent",
10406
- visualTreatment: "minimal-transparent",
10407
- layoutBehavior: "normal-flow",
10408
- configuration: {
10409
- structure: "inline-classic",
10410
- treatment: "minimal-transparent",
10411
- behavior: "normal-flow"
10412
- },
10413
10384
  openingRequirement: "reserved-space-ok",
10414
10385
  logoAccommodations: inlineClassicLogoAccommodations,
10415
10386
  compile: minimalTransparentHeader
@@ -10417,13 +10388,6 @@ const headerLookCatalog = defineExactCatalog()([
10417
10388
  {
10418
10389
  id: asHeaderLookId("transparent-overlay"),
10419
10390
  label: "Transparent overlay",
10420
- visualTreatment: "transparent-overlay",
10421
- layoutBehavior: "fixed-overlay",
10422
- configuration: {
10423
- structure: "inline-classic",
10424
- treatment: "transparent-overlay",
10425
- behavior: "fixed-overlay"
10426
- },
10427
10391
  openingRequirement: "requires-image-hero-with-contrast-overlay",
10428
10392
  maxRecommendedNavItems: 5,
10429
10393
  logoAccommodations: overlayLogoAccommodations,
@@ -10432,24 +10396,13 @@ const headerLookCatalog = defineExactCatalog()([
10432
10396
  {
10433
10397
  id: asHeaderLookId("floating-glass"),
10434
10398
  label: "Floating glass",
10435
- visualTreatment: "floating-glass",
10436
- layoutBehavior: "fixed-floating",
10437
- configuration: {
10438
- structure: "floating-shell",
10439
- treatment: "floating-glass",
10440
- behavior: "fixed-floating"
10441
- },
10442
10399
  openingRequirement: "requires-image-hero-with-contrast-overlay",
10443
10400
  maxRecommendedNavItems: 5,
10444
10401
  logoAccommodations: overlayLogoAccommodations,
10445
10402
  compile: floatingGlassHeader
10446
10403
  }
10447
10404
  ]);
10448
- new Set(headerLookCatalog.map((look) => headerConfigurationKey(look.configuration)));
10449
10405
  new Map(headerLookCatalog.map((look) => [look.id, look]));
10450
- function headerConfigurationKey(configuration) {
10451
- return `${configuration.structure}:${configuration.treatment}:${configuration.behavior}`;
10452
- }
10453
10406
  //#endregion
10454
10407
  //#region ../theme-core/src/site-styles/sectionTransitions.ts
10455
10408
  function boundaryRuntimeMetrics(family, size, heightExpression) {
@@ -14058,28 +14011,6 @@ z$1.object({
14058
14011
  spacing: z$1.enum(themeTokenRecipeOptions.spacing),
14059
14012
  motion: z$1.enum(themeTokenRecipeOptions.motion)
14060
14013
  });
14061
- const BREAKPOINT_LG = 1024;
14062
- const BREAKPOINT_XL = 1280;
14063
- const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
14064
- function mqUp(px) {
14065
- return `(min-width: ${px}px)`;
14066
- }
14067
- function mqDown(px) {
14068
- return `(max-width: ${px}px)`;
14069
- }
14070
- function mqBetween(minPx, maxPx) {
14071
- return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
14072
- }
14073
- mqUp(640);
14074
- mqUp(768);
14075
- mqUp(BREAKPOINT_LG);
14076
- mqUp(BREAKPOINT_XL);
14077
- mqDown(639);
14078
- mqDown(767);
14079
- mqDown(BREAKPOINT_LG_DOWN);
14080
- mqBetween(640, BREAKPOINT_LG_DOWN);
14081
- mqDown(640);
14082
- mqDown(768);
14083
14014
  //#endregion
14084
14015
  //#region ../theme-core/src/siteChromeOverlayClearance.ts
14085
14016
  const SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
@@ -18172,15 +18103,6 @@ const heroLayoutControlsFragment = defineFragment({
18172
18103
  */
18173
18104
  const BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
18174
18105
  const blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
18175
- /**
18176
- * Temporary rollout boundary for persisted content written before issue #1220.
18177
- * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
18178
- * only until the post-deploy role rewrite has been audited in production.
18179
- */
18180
- function canonicalizePersistedBlockButtonRole(value) {
18181
- return value === "link" || value === "tertiary" ? "ghost" : value;
18182
- }
18183
- const persistedBlockButtonRoleSchema = z$1.preprocess((value) => typeof value === "string" ? canonicalizePersistedBlockButtonRole(value) : value, blockButtonRoleSchema);
18184
18106
  const BLOCK_BUTTON_ROLE_LABELS = {
18185
18107
  primary: "Primary",
18186
18108
  secondary: "Secondary",
@@ -19389,6 +19311,7 @@ const newsletterFormFragment = defineFragment({
19389
19311
  }
19390
19312
  ],
19391
19313
  layout: [el("newsletter-form", withApiBindings({
19314
+ source: "block",
19392
19315
  destinationProvider: { $bind: { from: "destinationProvider" } },
19393
19316
  listId: { $bind: { from: "listId" } },
19394
19317
  preset: { $bind: { from: "preset" } },
@@ -21508,6 +21431,7 @@ const contactNewsletterLayout = styledSection({
21508
21431
  as: "h2",
21509
21432
  className: "newsletter-copy-title"
21510
21433
  }, when("newsletterTitle"), bind("newsletterTitle")), richText({ className: "newsletter-copy-subtitle rb-prose rb-max-w-none" }, when("newsletterSubtitle"), bind("newsletterSubtitle"))]), el("newsletter-form", withApiBindings({
21434
+ source: "block",
21511
21435
  listId: { $bind: { from: "listId" } },
21512
21436
  preset: { $bind: { from: "preset" } },
21513
21437
  includePhone: { $bind: { from: "includePhone" } },
@@ -23432,6 +23356,22 @@ const footerNavGroupsLayout = stack({
23432
23356
  }, [text({ as: "span" }, bind("entry.label"))], repeat("group.children", "entry"))])], repeat("footerMenu.groups", "group"))], whenCollectionHasItems("footerMenu.groups"));
23433
23357
  //#endregion
23434
23358
  //#region ../blocks/src/system/blocks/site-footer.ts
23359
+ const footerStandardContactBindings = {
23360
+ value: { $bind: { from: "module.engagement.runtime.value" } },
23361
+ submitLabel: { $bind: { from: "module.engagement.runtime.submitLabel" } },
23362
+ successMessage: { $bind: { from: "module.engagement.runtime.successMessage" } }
23363
+ };
23364
+ const footerMailingListBindings = {
23365
+ source: { $bind: { from: "module.engagement.runtime.source" } },
23366
+ destinationRef: { $bind: { from: "module.engagement.runtime.destinationRef" } },
23367
+ listId: { $bind: { from: "module.engagement.runtime.listId" } },
23368
+ preset: { $bind: { from: "module.engagement.runtime.preset" } },
23369
+ includePhone: { $bind: { from: "module.engagement.runtime.includePhone" } },
23370
+ buttonLabel: { $bind: { from: "module.engagement.runtime.buttonLabel" } },
23371
+ successMessage: { $bind: { from: "module.engagement.runtime.successMessage" } },
23372
+ privacyNote: { $bind: { from: "module.engagement.runtime.privacyNote" } }
23373
+ };
23374
+ const footerSpamProtectionBinding = { spamProtectionEnabled: { $bind: { from: "$root.spamProtectionEnabled" } } };
23435
23375
  const brandLogo = link({
23436
23376
  href: "/",
23437
23377
  className: { $bind: {
@@ -23509,6 +23449,23 @@ const authoredCopy = richText({
23509
23449
  id: "content.interpolateRichTextTokens",
23510
23450
  options: { tokens: ["year", "site_name"] }
23511
23451
  }] }));
23452
+ const footerEngagement = stack({
23453
+ gap: "md",
23454
+ className: "rb-w-full"
23455
+ }, [
23456
+ text({
23457
+ as: "p",
23458
+ className: "rb-body rb-opacity-80"
23459
+ }, bind("module.engagement.intro"), when("module.engagement.intro")),
23460
+ form(withApiBindings({
23461
+ ...footerStandardContactBindings,
23462
+ ...footerSpamProtectionBinding
23463
+ }), [], when("module.engagement.kind", { equals: "standard-contact" })),
23464
+ el("newsletter-form", withApiBindings({
23465
+ ...footerMailingListBindings,
23466
+ ...footerSpamProtectionBinding
23467
+ }), [], when("module.engagement.kind", { equals: "mailing-list" }))
23468
+ ], when("module.kind", { equals: "engagement" }));
23512
23469
  const footerGroup = stack({
23513
23470
  gap: "md",
23514
23471
  align: "stretch",
@@ -23534,6 +23491,7 @@ const footerGroup = stack({
23534
23491
  contact,
23535
23492
  hours,
23536
23493
  socials,
23494
+ footerEngagement,
23537
23495
  stack({ className: "rb-w-full" }, [authoredCopy], when("module.kind", { equals: "supporting-text" })),
23538
23496
  stack({ className: "rb-w-full rb-lg-col-span-3" }, [authoredCopy], when("module.kind", { equals: "legal" }))
23539
23497
  ], repeat("group.modules", "module"))], repeat("region.groups", "group"));
@@ -23541,6 +23499,10 @@ const footerMainRegion = stack({
23541
23499
  className: { $bind: { from: "region.className" } },
23542
23500
  "data-footer-region": { $bind: { from: "region.kind" } }
23543
23501
  }, [footerGroup], when("region.kind", { equals: "main" }), repeat("content.footerRuntime.regions", "region"));
23502
+ const footerEngagementRegion = stack({
23503
+ className: { $bind: { from: "region.className" } },
23504
+ "data-footer-region": "engagement-row"
23505
+ }, [footerGroup], when("region.kind", { equals: "engagement-row" }), repeat("content.footerRuntime.regions", "region"));
23544
23506
  const footerBottomRegion = stack({ className: { $bind: {
23545
23507
  from: "$root.theme.footer",
23546
23508
  transforms: [{ id: "layout.footerBottomBarContainerClass" }],
@@ -23576,7 +23538,11 @@ const siteFooterBlockDefinition = { manifest: createBlockManifest({
23576
23538
  fallback: mergeStyles(backgroundColorStyle("surface"), surfaceForegroundStyle({ text: "rgb(var(--tb-text))" }), borderColorStyle("border"))
23577
23539
  } },
23578
23540
  "data-footer-membership": { $bind: { from: "content.footerRuntime.membershipKey" } }
23579
- }, [footerMainRegion, footerBottomRegion]),
23541
+ }, [
23542
+ footerEngagementRegion,
23543
+ footerMainRegion,
23544
+ footerBottomRegion
23545
+ ]),
23580
23546
  description: "Site-wide composed footer with canonical shared details.",
23581
23547
  styleTokens: { spacing: "md" },
23582
23548
  paletteHidden: true
@@ -25422,6 +25388,12 @@ const mediaBaseSchema = z.object({
25422
25388
  poster: mediaPosterSchema.optional(),
25423
25389
  transform: transformSchema.optional()
25424
25390
  });
25391
+ /**
25392
+ * Canonical identifier carried by media values that are safe to persist.
25393
+ * Parsing trims boundary input so downstream writers cannot retain whitespace-only
25394
+ * identifiers or independently disagree about normalization.
25395
+ */
25396
+ const mediaIdentifierSchema = z.string().trim().min(1).brand();
25425
25397
  const imageMediaSchema = mediaBaseSchema.extend({ type: z.literal("image") });
25426
25398
  const videoMediaSchema = mediaBaseSchema.extend({ type: z.literal("video") });
25427
25399
  const audioMediaSchema = mediaBaseSchema.extend({ type: z.literal("audio") });
@@ -25436,6 +25408,15 @@ const mediaSchema = z.discriminatedUnion("type", [
25436
25408
  spreadsheetMediaSchema,
25437
25409
  archiveMediaSchema
25438
25410
  ]);
25411
+ const persistableMediaBaseSchema = mediaBaseSchema.extend({ identifier: mediaIdentifierSchema });
25412
+ z.discriminatedUnion("type", [
25413
+ persistableMediaBaseSchema.extend({ type: z.literal("image") }),
25414
+ persistableMediaBaseSchema.extend({ type: z.literal("video") }),
25415
+ persistableMediaBaseSchema.extend({ type: z.literal("audio") }),
25416
+ persistableMediaBaseSchema.extend({ type: z.literal("document") }),
25417
+ persistableMediaBaseSchema.extend({ type: z.literal("spreadsheet") }),
25418
+ persistableMediaBaseSchema.extend({ type: z.literal("archive") })
25419
+ ]);
25439
25420
  //#endregion
25440
25421
  //#region ../blocks/src/system/manifest/richTextSchema.ts
25441
25422
  /**
@@ -26257,7 +26238,7 @@ const publicMembershipProductCollectionSchema = z$1.object({ memberships: z$1.ar
26257
26238
  * Kept in a shared module so the block definition and runtime contracts can
26258
26239
  * depend on the same schema without creating an initialization cycle.
26259
26240
  */
26260
- const occurrenceContextSchema$1 = z$1.object({
26241
+ const occurrenceContextSchema = z$1.object({
26261
26242
  id: z$1.string(),
26262
26243
  seriesId: z$1.string(),
26263
26244
  startsAt: z$1.string(),
@@ -26549,7 +26530,7 @@ function isEventCalendarListLayout(value) {
26549
26530
  //#region ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
26550
26531
  const previewStageSchema = z$1.enum(["preview", "published"]);
26551
26532
  const registrationButtonVariantSchema = blockButtonRoleSchema;
26552
- const eventButtonVariantSchema = persistedBlockButtonRoleSchema;
26533
+ const eventButtonVariantSchema = blockButtonRoleSchema;
26553
26534
  const eventLayoutSchema = z$1.enum(eventCalendarListLayoutValues);
26554
26535
  const eventCalendarDisplayModeSchema = z$1.enum(eventCalendarDisplayModeValues);
26555
26536
  const eventCalendarDefaultViewSchema = z$1.enum(eventCalendarDefaultViewValues);
@@ -26638,28 +26619,37 @@ const EVENT_REGISTRATION_SHELL_STEP_LABELS = [
26638
26619
  "Payment"
26639
26620
  ];
26640
26621
  const eventRegistrationPublicEventSchema = z$1.preprocess(normalizeEventRegistrationEventInput, publicEventSchema);
26641
- const eventRegistrationSourceSchema = z$1.object({
26642
- siteId: z$1.string().optional(),
26643
- apiBaseUrl: z$1.string().optional(),
26644
- portalToken: z$1.string().nullable().optional(),
26645
- previewToken: z$1.string().nullable().optional(),
26646
- occurrenceContext: occurrenceContextSchema$1.optional(),
26622
+ const eventRegistrationHydrationSchemaShape = {
26623
+ occurrenceContext: occurrenceContextSchema.optional(),
26647
26624
  subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
26648
26625
  events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
26649
- className: z$1.string().nullable().optional(),
26650
- buttonText: z$1.string().nullable().optional(),
26651
- maxTickets: z$1.string().nullable().optional(),
26626
+ wholeSeriesOfferings: publicCoursesArraySchema.nullable().optional(),
26627
+ wholeSeriesOffering: publicCourseSchema.nullable().optional(),
26628
+ maxTickets: z$1.string().optional(),
26652
26629
  showVenue: z$1.boolean().optional(),
26653
26630
  showCapacity: z$1.boolean().optional(),
26631
+ showSessions: z$1.boolean().optional(),
26632
+ showPrice: z$1.boolean().optional(),
26654
26633
  successMessage: z$1.string().optional(),
26655
26634
  waitlistMessage: z$1.string().optional(),
26635
+ membershipMessage: z$1.string().optional(),
26656
26636
  buttonVariant: registrationButtonVariantSchema.optional(),
26657
26637
  overlayEnabled: z$1.boolean().optional(),
26658
26638
  spamProtectionEnabled: z$1.boolean().optional(),
26659
- stage: previewStageSchema.optional(),
26660
26639
  supportEmail: z$1.string().optional(),
26661
26640
  sitePasses: publicPassProductCollectionSchema.nullable().optional(),
26662
26641
  siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
26642
+ };
26643
+ const eventRegistrationSourceSchema = z$1.object({
26644
+ siteId: z$1.string().optional(),
26645
+ apiBaseUrl: z$1.string().optional(),
26646
+ portalToken: z$1.string().nullable().optional(),
26647
+ previewToken: z$1.string().nullable().optional(),
26648
+ ...eventRegistrationHydrationSchemaShape,
26649
+ className: z$1.string().nullable().optional(),
26650
+ buttonText: z$1.string().nullable().optional(),
26651
+ maxTickets: z$1.string().nullable().optional(),
26652
+ stage: previewStageSchema.optional()
26663
26653
  });
26664
26654
  const eventRegistrationDisplaySchema = z$1.object({
26665
26655
  kind: z$1.literal("event-registration"),
@@ -26670,22 +26660,7 @@ const eventRegistrationDisplaySchema = z$1.object({
26670
26660
  stepLabels: z$1.array(z$1.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
26671
26661
  summaryButtonText: z$1.string()
26672
26662
  });
26673
- const eventRegistrationHydrationSchema = z$1.object({
26674
- occurrenceContext: occurrenceContextSchema$1.optional(),
26675
- subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
26676
- events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
26677
- maxTickets: z$1.string().optional(),
26678
- showVenue: z$1.boolean().optional(),
26679
- showCapacity: z$1.boolean().optional(),
26680
- successMessage: z$1.string().optional(),
26681
- waitlistMessage: z$1.string().optional(),
26682
- buttonVariant: registrationButtonVariantSchema.optional(),
26683
- overlayEnabled: z$1.boolean().optional(),
26684
- spamProtectionEnabled: z$1.boolean().optional(),
26685
- supportEmail: z$1.string().optional(),
26686
- sitePasses: publicPassProductCollectionSchema.nullable().optional(),
26687
- siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
26688
- });
26663
+ const eventRegistrationHydrationSchema = z$1.object(eventRegistrationHydrationSchemaShape);
26689
26664
  const eventRegistrationRenderSchema = z$1.object({
26690
26665
  display: eventRegistrationDisplaySchema,
26691
26666
  hydration: eventRegistrationHydrationSchema
@@ -26765,11 +26740,16 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
26765
26740
  occurrenceContext: source.occurrenceContext ?? null,
26766
26741
  subject: source.subject ?? null,
26767
26742
  events: source.events ?? null,
26743
+ wholeSeriesOfferings: source.wholeSeriesOfferings ?? null,
26744
+ wholeSeriesOffering: source.wholeSeriesOffering ?? null,
26768
26745
  maxTickets: source.maxTickets ?? void 0,
26769
26746
  showVenue: source.showVenue,
26770
26747
  showCapacity: source.showCapacity,
26748
+ showSessions: source.showSessions,
26749
+ showPrice: source.showPrice,
26771
26750
  successMessage: source.successMessage,
26772
26751
  waitlistMessage: source.waitlistMessage,
26752
+ membershipMessage: source.membershipMessage,
26773
26753
  buttonVariant: source.buttonVariant,
26774
26754
  overlayEnabled: source.overlayEnabled,
26775
26755
  spamProtectionEnabled: source.spamProtectionEnabled,
@@ -26885,6 +26865,24 @@ const eventRegistrationBlockDefinition = {
26885
26865
  defaultValue: true,
26886
26866
  ui: { intent: "display" }
26887
26867
  },
26868
+ {
26869
+ id: "showSessions",
26870
+ type: "boolean",
26871
+ label: "Show complete schedule",
26872
+ description: "Display every session for whole-series registrations",
26873
+ required: false,
26874
+ defaultValue: true,
26875
+ ui: { intent: "display" }
26876
+ },
26877
+ {
26878
+ id: "showPrice",
26879
+ type: "boolean",
26880
+ label: "Show price",
26881
+ description: "Display the whole-series price",
26882
+ required: false,
26883
+ defaultValue: true,
26884
+ ui: { intent: "display" }
26885
+ },
26888
26886
  {
26889
26887
  id: "successMessage",
26890
26888
  type: "text",
@@ -26895,6 +26893,26 @@ const eventRegistrationBlockDefinition = {
26895
26893
  defaultValue: "Thank you for registering! Check your email for confirmation details.",
26896
26894
  maxLength: 500
26897
26895
  },
26896
+ {
26897
+ id: "waitlistMessage",
26898
+ type: "text",
26899
+ label: "Waitlist message",
26900
+ description: "Message shown after joining a whole-series waitlist",
26901
+ required: false,
26902
+ multiline: true,
26903
+ defaultValue: "You've been added to the waitlist. We'll email you if a place becomes available.",
26904
+ maxLength: 500
26905
+ },
26906
+ {
26907
+ id: "membershipMessage",
26908
+ type: "text",
26909
+ label: "Membership registration message",
26910
+ description: "Message shown when a whole-series place is covered by membership",
26911
+ required: false,
26912
+ multiline: true,
26913
+ defaultValue: "Registered using your membership. Check your email for session details.",
26914
+ maxLength: 500
26915
+ },
26898
26916
  {
26899
26917
  id: "buttonText",
26900
26918
  type: "text",
@@ -26926,8 +26944,11 @@ const eventRegistrationBlockDefinition = {
26926
26944
  } },
26927
26945
  showVenue: { $bind: { from: "content.showVenue" } },
26928
26946
  showCapacity: { $bind: { from: "content.showCapacity" } },
26947
+ showSessions: { $bind: { from: "content.showSessions" } },
26948
+ showPrice: { $bind: { from: "content.showPrice" } },
26929
26949
  successMessage: { $bind: { from: "content.successMessage" } },
26930
26950
  waitlistMessage: { $bind: { from: "content.waitlistMessage" } },
26951
+ membershipMessage: { $bind: { from: "content.membershipMessage" } },
26931
26952
  buttonText: { $bind: {
26932
26953
  from: "content.buttonText",
26933
26954
  fallback: "Complete Registration"
@@ -26941,6 +26962,7 @@ const eventRegistrationBlockDefinition = {
26941
26962
  fallback: false
26942
26963
  } },
26943
26964
  events: { $bind: { from: "data.events" } },
26965
+ wholeSeriesOffering: { $bind: { from: "data.wholeSeriesOffering.offering" } },
26944
26966
  sitePasses: { $bind: { from: "data.sitePasses" } },
26945
26967
  siteMemberships: { $bind: { from: "data.siteMemberships" } },
26946
26968
  stage: { $bind: {
@@ -26954,9 +26976,10 @@ const eventRegistrationBlockDefinition = {
26954
26976
  runtime: eventRegistrationBlockRuntime,
26955
26977
  dataSchemas: {
26956
26978
  events: publicEventsArraySchema.optional(),
26979
+ wholeSeriesOffering: z$1.object({ offering: publicCourseSchema }).optional(),
26957
26980
  sitePasses: publicPassProductCollectionSchema.optional(),
26958
26981
  siteMemberships: publicMembershipProductCollectionSchema.optional(),
26959
- occurrenceContext: occurrenceContextSchema$1.optional()
26982
+ occurrenceContext: occurrenceContextSchema.optional()
26960
26983
  },
26961
26984
  dataLoaders: {
26962
26985
  events: {
@@ -26969,11 +26992,23 @@ const eventRegistrationBlockDefinition = {
26969
26992
  fallback: "published"
26970
26993
  } },
26971
26994
  readProfile: "registration",
26972
- seriesId: { $bind: { from: "$root.occurrenceContext.seriesId" } },
26995
+ seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
26973
26996
  includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
26974
26997
  },
26975
26998
  mode: "server"
26976
26999
  },
27000
+ wholeSeriesOffering: {
27001
+ endpoint: "getPublicWholeSeriesOffering",
27002
+ params: {
27003
+ siteId: { $bind: { from: "$root.siteId" } },
27004
+ eventSeriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
27005
+ stage: { $bind: {
27006
+ from: "$root.previewStage",
27007
+ fallback: "published"
27008
+ } }
27009
+ },
27010
+ mode: "server"
27011
+ },
26977
27012
  sitePasses: {
26978
27013
  endpoint: "listPublicPasses",
26979
27014
  params: { siteId: { $bind: { from: "$root.siteId" } } },
@@ -27408,15 +27443,6 @@ const eventDetailsManifest = createBlockManifest({
27408
27443
  })], { gap: "lg" })
27409
27444
  })]
27410
27445
  });
27411
- const occurrenceContextSchema = z$1.object({
27412
- id: z$1.string(),
27413
- seriesId: z$1.string(),
27414
- startsAt: z$1.string(),
27415
- endsAt: z$1.string(),
27416
- timeZone: z$1.string(),
27417
- capacityOverride: z$1.number().nullable().optional(),
27418
- overrides: z$1.record(z$1.string(), z$1.unknown()).nullable().optional()
27419
- }).nullable();
27420
27446
  const eventAutoApplyDiscountPreviewBaseSchema = z$1.object({
27421
27447
  id: z$1.string(),
27422
27448
  publicLabel: z$1.string(),
@@ -27451,8 +27477,9 @@ const eventDetailsBlockDefinition = {
27451
27477
  from: "$root.previewStage",
27452
27478
  fallback: "published"
27453
27479
  } },
27454
- limit: "25",
27455
- seriesId: { $bind: { from: "$root.occurrenceContext.seriesId" } },
27480
+ limit: "100",
27481
+ readProfile: "details",
27482
+ seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
27456
27483
  includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
27457
27484
  },
27458
27485
  mode: "server"
@@ -33370,9 +33397,6 @@ function parseSignedNewsletterDestinationRef(value) {
33370
33397
  const trimmed = parseTrimmedString(value);
33371
33398
  return trimmed && SIGNED_DESTINATION_REF_PATTERN.test(trimmed) ? trimmed : null;
33372
33399
  }
33373
- function parseNewsletterSignupDestinationProvider(value) {
33374
- return value === "riverbank" || value === "mailchimp" ? value : null;
33375
- }
33376
33400
  function buildNewsletterSignupBlockRef(blockId) {
33377
33401
  const parsed = parseNewsletterSignupBlockId(blockId);
33378
33402
  return parsed ? {
@@ -33519,19 +33543,9 @@ const newsletterFieldSchema = z$1.object({
33519
33543
  });
33520
33544
  const newsletterSignupBlockIdSchema = z$1.string().trim().min(1).transform(parseRequiredNewsletterSignupBlockId);
33521
33545
  const signedNewsletterDestinationRefSchema = z$1.string().trim().min(1).transform(parseRequiredSignedNewsletterDestinationRef);
33522
- const newsletterPublicDestinationRefSchema = z$1.discriminatedUnion("tag", [z$1.object({
33523
- tag: z$1.literal("block_ref"),
33524
- blockId: newsletterSignupBlockIdSchema
33525
- }), z$1.object({
33526
- tag: z$1.literal("signed_destination_ref"),
33527
- token: signedNewsletterDestinationRefSchema
33528
- })]);
33529
- const newsletterSourceSchema = z$1.object({
33530
- blockId: z$1.string().nullable().optional(),
33546
+ const newsletterSourceCommonSchema = z$1.object({
33531
33547
  siteId: z$1.string().optional(),
33532
33548
  apiBaseUrl: z$1.string().optional(),
33533
- listId: z$1.string().nullable().optional(),
33534
- destinationProvider: newsletterDestinationProviderSchema.nullable().optional(),
33535
33549
  preset: newsletterPresetSchema.optional(),
33536
33550
  includePhone: z$1.boolean().optional(),
33537
33551
  buttonLabel: z$1.string().nullable().optional(),
@@ -33542,6 +33556,25 @@ const newsletterSourceSchema = z$1.object({
33542
33556
  spamProtectionEnabled: z$1.boolean().optional(),
33543
33557
  className: z$1.string().nullable().optional()
33544
33558
  });
33559
+ const newsletterSourceSchema = z$1.discriminatedUnion("source", [
33560
+ newsletterSourceCommonSchema.extend({
33561
+ source: z$1.literal("block"),
33562
+ blockId: z$1.string().nullable().optional(),
33563
+ listId: z$1.string().nullable().optional(),
33564
+ destinationProvider: newsletterDestinationProviderSchema.nullable().optional()
33565
+ }),
33566
+ newsletterSourceCommonSchema.extend({
33567
+ source: z$1.literal("signed-footer"),
33568
+ destinationRef: z$1.object({
33569
+ tag: z$1.literal("signed_destination_ref"),
33570
+ token: signedNewsletterDestinationRefSchema
33571
+ })
33572
+ }),
33573
+ newsletterSourceCommonSchema.extend({
33574
+ source: z$1.literal("legacy-direct-list"),
33575
+ listId: z$1.string().nullable()
33576
+ })
33577
+ ]);
33545
33578
  const newsletterDisplaySchema = z$1.object({
33546
33579
  kind: z$1.literal("newsletter-form"),
33547
33580
  className: z$1.string().nullable(),
@@ -33552,8 +33585,26 @@ const newsletterDisplaySchema = z$1.object({
33552
33585
  fields: z$1.array(newsletterFieldSchema)
33553
33586
  });
33554
33587
  const newsletterHydrationSchema = z$1.object({
33555
- destinationRef: newsletterPublicDestinationRefSchema.nullable().optional(),
33556
- listId: z$1.string().nullable().optional(),
33588
+ target: z$1.discriminatedUnion("tag", [
33589
+ z$1.object({
33590
+ tag: z$1.literal("block-source"),
33591
+ destinationRef: z$1.object({
33592
+ tag: z$1.literal("block_ref"),
33593
+ blockId: newsletterSignupBlockIdSchema
33594
+ }).nullable()
33595
+ }),
33596
+ z$1.object({
33597
+ tag: z$1.literal("signed-footer-source"),
33598
+ destinationRef: z$1.object({
33599
+ tag: z$1.literal("signed_destination_ref"),
33600
+ token: signedNewsletterDestinationRefSchema
33601
+ })
33602
+ }),
33603
+ z$1.object({
33604
+ tag: z$1.literal("legacy-direct-list"),
33605
+ listId: z$1.string().nullable()
33606
+ })
33607
+ ]),
33557
33608
  preset: newsletterPresetSchema,
33558
33609
  includePhone: z$1.boolean(),
33559
33610
  tags: z$1.string().nullable().optional(),
@@ -33587,20 +33638,43 @@ const newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
33587
33638
  render: createZodCodec(newsletterRenderSchema)
33588
33639
  },
33589
33640
  buildRender: (source) => {
33590
- const runtimeSource = deriveNewsletterSignupRuntimeSource(source);
33641
+ const runtimeSource = source.source === "block" ? deriveNewsletterSignupRuntimeSource(source) : null;
33591
33642
  return {
33592
33643
  display: buildNewsletterDisplay(source),
33593
33644
  hydration: {
33594
- destinationRef: buildNewsletterSignupBlockRef(source.blockId),
33595
- listId: runtimeSource.listId,
33645
+ target: projectNewsletterFormHydrationTarget(source),
33596
33646
  preset: source.preset ?? "emailOnly",
33597
33647
  includePhone: source.includePhone ?? false,
33598
- tags: runtimeSource.tags,
33648
+ tags: runtimeSource ? runtimeSource.tags : source.tags,
33599
33649
  spamProtectionEnabled: source.spamProtectionEnabled
33600
33650
  }
33601
33651
  };
33602
33652
  }
33603
33653
  });
33654
+ function projectNewsletterFormHydrationTarget(source) {
33655
+ switch (source.source) {
33656
+ case "block": {
33657
+ const destinationRef = buildNewsletterSignupBlockRef(source.blockId);
33658
+ if (destinationRef?.tag === "block_ref") return {
33659
+ tag: "block-source",
33660
+ destinationRef
33661
+ };
33662
+ return {
33663
+ tag: "legacy-direct-list",
33664
+ listId: source.listId ?? null
33665
+ };
33666
+ }
33667
+ case "signed-footer": return {
33668
+ tag: "signed-footer-source",
33669
+ destinationRef: source.destinationRef
33670
+ };
33671
+ case "legacy-direct-list": return {
33672
+ tag: "legacy-direct-list",
33673
+ listId: source.listId
33674
+ };
33675
+ default: return assertNever$2(source);
33676
+ }
33677
+ }
33604
33678
  function parseRequiredNewsletterSignupBlockId(value) {
33605
33679
  const parsed = parseNewsletterSignupBlockId(value);
33606
33680
  if (!parsed) throw new Error("Newsletter signup block destination ref requires blockId");
@@ -35702,6 +35776,7 @@ const SUPPORTED_LOADER_ENDPOINTS$1 = [
35702
35776
  "listPublicRecurringSchedule",
35703
35777
  "getPublicEventDetails",
35704
35778
  "listPublicWholeSeriesOfferings",
35779
+ "getPublicWholeSeriesOffering",
35705
35780
  "listPublicRouteCandidates",
35706
35781
  "listPublicTeamMembers",
35707
35782
  "listPublicProducts",