@riverbankcms/sdk 0.125.0 → 0.127.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 (177) hide show
  1. package/README.md +3 -1
  2. package/dist/{PreviewEditorSidebar-BezDOtQ7.mjs → PreviewEditorSidebar-BXtfF7tp.mjs} +122 -301
  3. package/dist/{PreviewEditorUI-CgSqmfo2.mjs → PreviewEditorUI-Dou73Q0K.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BH-3-jSj.mjs → PreviewQueryProvider-DgFDIwvK.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-Co3AHfj0.mjs → SdkPreviewModeRuntime-B0HPXr-l.mjs} +141 -63
  6. package/dist/{SiteChromeCustomizeContext-BHF-KANn.mjs → SiteChromeCustomizeContext-DZiDBAYu.mjs} +5330 -5841
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +1552 -202
  8. package/dist/_dts/api/src/common/envelope.d.ts +1 -1
  9. package/dist/_dts/api/src/contentRuntime.d.ts +1 -7
  10. package/dist/_dts/api/src/endpoints.d.ts +0 -7
  11. package/dist/_dts/api/src/sdk-event-upsert.d.ts +42 -0
  12. package/dist/_dts/api/src/sdkContracts.d.ts +11 -9
  13. package/dist/_dts/api/src/siteOperations.d.ts +18 -1
  14. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +1 -14
  15. package/dist/_dts/block-form/src/backend/store-backend.d.ts +2 -1
  16. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +1 -0
  17. package/dist/_dts/blocks/src/index.d.ts +3 -2
  18. package/dist/_dts/blocks/src/lib/media.d.ts +267 -0
  19. package/dist/_dts/blocks/src/system/constants/buttonRoles.d.ts +0 -13
  20. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +15 -2
  21. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +4 -4
  22. package/dist/_dts/blocks/src/system/runtime/nodes/mergeResolveImageUrlContexts.d.ts +7 -0
  23. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +2 -2
  24. package/dist/_dts/content-editor/src/ui/blockValidationManifestRegistry.d.ts +17 -0
  25. package/dist/_dts/content-editor/src/ui/blockValidationView.d.ts +1 -1
  26. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +4 -0
  27. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +322 -171
  28. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +4 -0
  29. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockValidationManifests.d.ts +26 -0
  30. package/dist/_dts/editor-blocks/src/widgets/rich-text/imageInsert.d.ts +3 -3
  31. package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -2
  32. package/dist/_dts/media-editor/src/context.d.ts +1 -2
  33. package/dist/_dts/media-editor/src/index.d.ts +3 -1
  34. package/dist/_dts/media-editor/src/mediaSelection.d.ts +32 -0
  35. package/dist/_dts/media-editor/src/types.d.ts +3 -1
  36. package/dist/_dts/media-editor/src/useMediaSelection.d.ts +26 -0
  37. package/dist/_dts/preview-next/src/client/index.d.ts +2 -0
  38. package/dist/_dts/preview-next/src/client/preview/HeaderMenuControls.d.ts +12 -0
  39. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +1 -2
  40. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +13 -3
  41. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +7 -2
  42. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +6 -60
  43. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +3 -13
  44. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +8 -100
  45. package/dist/_dts/preview-next/src/client/preview/headerInteractionPaletteSurfaceState.d.ts +8 -0
  46. package/dist/_dts/preview-next/src/client/preview/previewThemeRoles.d.ts +15 -0
  47. package/dist/_dts/preview-next/src/client/preview/siteChromeCustomizeTypes.d.ts +54 -0
  48. package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +13 -3
  49. package/dist/_dts/preview-next/src/client/preview/siteChromeNavQuickControlHistory.d.ts +3 -0
  50. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +6 -3
  51. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +1 -4
  52. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorApplyPayload.d.ts +1 -15
  53. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorSnapshot.d.ts +11 -21
  54. package/dist/_dts/sdk/src/cli/commands/event.d.ts +2 -2
  55. package/dist/_dts/sdk/src/cli/commands/eventOccurrenceSchedule.d.ts +12 -0
  56. package/dist/_dts/sdk/src/cli/commands/push/pushAllExtras.d.ts +6 -0
  57. package/dist/_dts/sdk/src/cli/commands/style.d.ts +1 -1
  58. package/dist/_dts/sdk/src/cli/content/legacyEventScheduleShapeError.d.ts +5 -0
  59. package/dist/_dts/sdk/src/cli/content/localEventSchedule.d.ts +17 -0
  60. package/dist/_dts/sdk/src/cli/content/reader.d.ts +5 -10
  61. package/dist/_dts/sdk/src/cli/migrations/events.d.ts +1 -1
  62. package/dist/_dts/sdk/src/cli/site-commands/eventScheduleCompiler.d.ts +24 -0
  63. package/dist/_dts/sdk/src/client/management/http.d.ts +1 -1
  64. package/dist/_dts/sdk/src/client/management/types.d.ts +3 -28
  65. package/dist/_dts/sdk/src/config/index.d.ts +1 -1
  66. package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -20
  67. package/dist/_dts/sdk/src/rendering/index.d.ts +1 -1
  68. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -2
  69. package/dist/_dts/sdk/src/version.d.ts +1 -1
  70. package/dist/_dts/site-commands/src/commandContract.d.ts +33 -5
  71. package/dist/_dts/site-commands/src/commandDomain.d.ts +2 -2
  72. package/dist/_dts/site-commands/src/commands.d.ts +38 -9
  73. package/dist/_dts/site-commands/src/siteStyleCommandSchema.d.ts +28 -1
  74. package/dist/_dts/site-commands/src/siteStyleSelectionSchemaBuilder.d.ts +4 -4
  75. package/dist/_dts/theme-core/src/buttons/effects/presets/background.d.ts +1 -1
  76. package/dist/_dts/theme-core/src/buttons/styles/registry.d.ts +0 -18
  77. package/dist/_dts/theme-core/src/buttons/types.d.ts +1 -3
  78. package/dist/_dts/theme-core/src/header/containerSchema.d.ts +20 -0
  79. package/dist/_dts/theme-core/src/header/generateHeaderCss.d.ts +1 -1
  80. package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +14 -0
  81. package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +3 -0
  82. package/dist/_dts/theme-core/src/header/paintTargets.d.ts +25 -0
  83. package/dist/_dts/theme-core/src/header/scrollTreatment.d.ts +11 -0
  84. package/dist/_dts/theme-core/src/header/surfaceRules.d.ts +9 -0
  85. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +15 -0
  86. package/dist/_dts/theme-core/src/palette/colors.d.ts +1 -1
  87. package/dist/_dts/theme-core/src/palette/concretePalette.d.ts +20 -0
  88. package/dist/_dts/theme-core/src/palette/curated/index.d.ts +2 -17
  89. package/dist/_dts/theme-core/src/palette/index.d.ts +1 -6
  90. package/dist/_dts/theme-core/src/palette/schema.d.ts +39 -0
  91. package/dist/_dts/theme-core/src/schema.d.ts +105 -45
  92. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +3 -51
  93. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +4 -11
  94. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +3 -51
  95. package/dist/_dts/theme-core/src/site-styles/headerInteractionPalette.d.ts +32 -0
  96. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +19 -106
  97. package/dist/_dts/theme-core/src/site-styles/headerOpeningForeground.d.ts +22 -0
  98. package/dist/_dts/theme-core/src/site-styles/headerOpeningSection.d.ts +2 -0
  99. package/dist/_dts/theme-core/src/site-styles/headerStyleParts.d.ts +4 -0
  100. package/dist/_dts/theme-core/src/site-styles/index.d.ts +3 -0
  101. package/dist/_dts/theme-core/src/site-styles/lookOptionGroups.d.ts +24 -0
  102. package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +1 -2
  103. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +4 -22
  104. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorOptions.d.ts +21 -0
  105. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +5 -7
  106. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +5 -6
  107. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +4 -1
  108. package/dist/cli/index.mjs +1583 -1601
  109. package/dist/cli/init-docs/content/cli-reference.md +6 -3
  110. package/dist/cli/init-docs/content/content-management.md +24 -13
  111. package/dist/client/{DiscountCodeDisclosure-CyPpekBp.mjs → DiscountCodeDisclosure-BDFRp8Y7.mjs} +1 -1
  112. package/dist/client/{EventCombined.client-zywit-60.mjs → EventCombined.client-DJgF1_lf.mjs} +2 -2
  113. package/dist/client/{EventListing.client-J2nLhkKT.mjs → EventListing.client-CnWGNjOr.mjs} +2 -2
  114. package/dist/client/{LeafletStaticMap-CSubXWt6.mjs → LeafletStaticMap-BISs9Bl7.mjs} +1 -1
  115. package/dist/client/{MagicLinkForm-DDLIfiq9.mjs → MagicLinkForm-b5E_HoG9.mjs} +1 -1
  116. package/dist/client/{StepIndicator-DE8EvHIp.mjs → StepIndicator-D8gVYkK-.mjs} +2 -2
  117. package/dist/client/{accordion-Ct5T5NiA.mjs → accordion-DFDajgDz.mjs} +1 -1
  118. package/dist/client/{bookingForm-DMxtLPxw.mjs → bookingForm-Bdqj9-52.mjs} +5 -6
  119. package/dist/client/bookings.mjs +315 -46
  120. package/dist/client/{carousel--FMqgvob.mjs → carousel-Cvqf-kN8.mjs} +1 -1
  121. package/dist/client/{cart-BKX1bWiU.mjs → cart-CuH2TJXP.mjs} +3 -3
  122. package/dist/client/{checkout-B_jxi4WW.mjs → checkout-CMNPpejZ.mjs} +3 -3
  123. package/dist/client/client.mjs +1381 -1427
  124. package/dist/client/{courseRegistration-DH4MlkRD.mjs → courseRegistration-DTEYWL6Z.mjs} +6 -7
  125. package/dist/client/{eventCalendar-BQILwAcL.mjs → eventCalendar-BW-XoxZ0.mjs} +4 -4
  126. package/dist/client/{eventCombined-DFFW_Vmo.mjs → eventCombined-Bpn7s0y9.mjs} +2 -2
  127. package/dist/client/{eventDetails-B045CTSJ.mjs → eventDetails-D2uUSTMH.mjs} +3 -3
  128. package/dist/client/{eventListing-BDMYNVzS.mjs → eventListing-CVr1c094.mjs} +2 -2
  129. package/dist/client/{eventRegistration-CQ2-BSnB.mjs → eventRegistration-Dv4AvkMw.mjs} +30 -22
  130. package/dist/client/{form-DJKuyZgN.mjs → form-DxdKf9fs.mjs} +1 -1
  131. package/dist/client/{headerSection-DeTjfiDo.mjs → headerSection-BaXI5Sro.mjs} +2 -2
  132. package/dist/client/hooks.mjs +851 -976
  133. package/dist/client/{locationMap-i2wDA8gB.mjs → locationMap-BEtW2fKz.mjs} +2 -2
  134. package/dist/client/{newsletterForm-DKiueauk.mjs → newsletterForm-BKKs0S4R.mjs} +1 -1
  135. package/dist/client/{pricing-C01J3Epx.mjs → pricing-ClkqcElA.mjs} +1 -1
  136. package/dist/client/{productDetail-Dfc1sZaX.mjs → productDetail-H-ru8dyy.mjs} +3 -3
  137. package/dist/client/{productList-BXbvXWTF.mjs → productList-Buyi5c0C.mjs} +3 -3
  138. package/dist/client/{propsDecoder-CIR5DQ1l.mjs → propsDecoder-BF7i6Ijg.mjs} +293 -65
  139. package/dist/client/rendering/client.mjs +1145 -1190
  140. package/dist/client/rendering/islands.mjs +18 -18
  141. package/dist/client/rendering.mjs +1257 -1298
  142. package/dist/client/{useDiscountCodeUi-Bcyh4508.mjs → scrollToBlock-D_7t8yWb.mjs} +18 -2
  143. package/dist/client/{shop-BbNwPKM-.mjs → shop-CF7SZQNX.mjs} +5 -6
  144. package/dist/client/{shop-commerce-XO-XMFEt.mjs → shop-commerce-DA7_Rq5p.mjs} +4 -4
  145. package/dist/client/{shop-commerce-store-Byh6OUGK.mjs → shop-commerce-store-BmLqW7Gh.mjs} +1 -1
  146. package/dist/client/{shopShared-Bbq39mwr.mjs → shopShared-WL-E1znM.mjs} +2 -2
  147. package/dist/client/{useEventFilters-C8OOJ3el.mjs → useEventFilters-rc8VLeLV.mjs} +2 -2
  148. package/dist/client/{usePolling-CyJVo9kF.mjs → usePolling-1ncrfd4S.mjs} +2 -2
  149. package/dist/preview-next/before-render.mjs +0 -7
  150. package/dist/preview-next/client/runtime.mjs +4 -4
  151. package/dist/preview-next/middleware.mjs +0 -7
  152. package/dist/{previewAuthStore-CJX21dGi.mjs → previewAuthStore-Dev9CdG9.mjs} +0 -7
  153. package/dist/{sdk-runtime-BGhyuE-E.mjs → sdk-runtime-BnrCCFJq.mjs} +2 -2
  154. package/dist/{separator-BFs-Kmv5.mjs → separator-CFvBx2yl.mjs} +1 -1
  155. package/dist/server/components.mjs +1389 -1489
  156. package/dist/server/config-validation.mjs +851 -976
  157. package/dist/server/config.mjs +851 -976
  158. package/dist/server/data.mjs +851 -976
  159. package/dist/server/index.mjs +1 -8
  160. package/dist/server/next.mjs +1393 -1500
  161. package/dist/server/page-converter.mjs +851 -976
  162. package/dist/server/prebuild.mjs +1 -1
  163. package/dist/server/rendering/server.mjs +1346 -1446
  164. package/dist/server/rendering.mjs +1390 -1490
  165. package/dist/server/routing.mjs +939 -1041
  166. package/dist/server/server.mjs +852 -984
  167. package/dist/server/theme-bridge.mjs +322 -279
  168. package/dist/server/theme.mjs +277 -33
  169. package/package.json +1 -1
  170. package/dist/_dts/editor-blocks/src/widgets/rich-text/ensureRichTextImageAssetIdentifier.d.ts +0 -8
  171. package/dist/_dts/theme-core/src/palette/editorState.d.ts +0 -75
  172. package/dist/_dts/theme-core/src/palette/libraryModel.d.ts +0 -64
  173. package/dist/_dts/theme-core/src/palette/persistenceReadSource.d.ts +0 -81
  174. package/dist/_dts/theme-core/src/palette/resolveSelection.d.ts +0 -75
  175. package/dist/_dts/theme-core/src/palette/selection.d.ts +0 -74
  176. package/dist/_dts/theme-core/src/palette/sitePalettePersistence.d.ts +0 -34
  177. package/dist/client/scrollToBlock-C86BYkyV.mjs +0 -17
@@ -3024,6 +3024,21 @@ const themeColorTokenSchema = z$1.string().min(1).refine((value) => Boolean(isTh
3024
3024
  //#region ../theme-core/src/palette/colors.ts
3025
3025
  const HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
3026
3026
  const NORMALIZABLE_HEX_REGEX = /^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i;
3027
+ const THEME_PALETTE_COLOR_ORDER = [
3028
+ "primary",
3029
+ "secondary",
3030
+ "accent",
3031
+ "success",
3032
+ "warning",
3033
+ "destructive",
3034
+ "background",
3035
+ "surface",
3036
+ "surfaceAlt",
3037
+ "muted",
3038
+ "text",
3039
+ "primaryForeground",
3040
+ "border"
3041
+ ];
3027
3042
  const hexColorSchema = z$1.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
3028
3043
  const paletteModeSchema = z$1.enum(["light", "dark"]);
3029
3044
  const PALETTE_VALUE_KEY_PREFIX = "palette-value:v1|";
@@ -3101,6 +3116,12 @@ function requirePaletteColorsFromEntries(entries) {
3101
3116
  if (result.ok) return result.colors;
3102
3117
  throw new Error(`Invalid complete palette: ${result.error.kind}`);
3103
3118
  }
3119
+ function paletteColorEntries(colors) {
3120
+ return THEME_PALETTE_COLOR_ORDER.map((name) => ({
3121
+ name,
3122
+ hex: colors[name]
3123
+ }));
3124
+ }
3104
3125
  function paletteColorFingerprint(colors) {
3105
3126
  return PALETTE_TOKEN_NAMES.map((name) => `${name}:${colors[name]}`).join("|");
3106
3127
  }
@@ -3108,7 +3129,7 @@ function canonicalPaletteHashInput(colors, mode) {
3108
3129
  return `${mode}|${paletteColorFingerprint(colors)}`;
3109
3130
  }
3110
3131
  /**
3111
- * The shared TypeScript/SQL protocol. Do not reorder roles: the order comes
3132
+ * Stable curated-catalogue identity. Do not reorder roles: the order comes
3112
3133
  * from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
3113
3134
  */
3114
3135
  function paletteValueKey(colors, mode) {
@@ -4434,13 +4455,6 @@ const warmDarkKirtanGold = defineCuratedPalette({
4434
4455
  });
4435
4456
  //#endregion
4436
4457
  //#region ../theme-core/src/palette/curated/index.ts
4437
- /**
4438
- * Curated palette library.
4439
- *
4440
- * Authoring keys are readable source aliases. Value keys are derived from the
4441
- * complete mode and semantic colours and are the only curated identity used at
4442
- * persistence and runtime boundaries.
4443
- */
4444
4458
  function admitCuratedPaletteDefinition(definition) {
4445
4459
  return {
4446
4460
  ...definition,
@@ -4467,11 +4481,8 @@ const curatedPalettes = [
4467
4481
  admitCuratedPaletteDefinition(warmDarkEmber),
4468
4482
  admitCuratedPaletteDefinition(warmDarkKirtanGold)
4469
4483
  ];
4470
- const curatedPalettesByValueKey = new Map(curatedPalettes.map((palette) => [palette.valueKey, palette]));
4484
+ new Map(curatedPalettes.map((palette) => [palette.valueKey, palette]));
4471
4485
  const curatedPalettesByAuthoringKey = new Map(curatedPalettes.map((palette) => [palette.authoringKey, palette]));
4472
- function findCuratedPalette(valueKey) {
4473
- return curatedPalettesByValueKey.get(valueKey);
4474
- }
4475
4486
  function findCuratedPaletteByAuthoringKey(authoringKey) {
4476
4487
  return curatedPalettesByAuthoringKey.get(authoringKey);
4477
4488
  }
@@ -4480,87 +4491,6 @@ function requireCuratedPaletteValueKey(authoringKey) {
4480
4491
  if (!palette) throw new Error(`Unknown curated palette authoring key "${authoringKey}"`);
4481
4492
  return palette.valueKey;
4482
4493
  }
4483
- /** Parses a raw persisted key into catalogue-proven curated membership. */
4484
- const knownCuratedPaletteValueKeySchema = z$1.string().transform((value, ctx) => {
4485
- const valueKey = parsePaletteValueKey(value);
4486
- if (!valueKey) {
4487
- ctx.addIssue({
4488
- code: "custom",
4489
- message: "Invalid canonical palette value key"
4490
- });
4491
- return z$1.NEVER;
4492
- }
4493
- const palette = findCuratedPalette(valueKey);
4494
- if (!palette) {
4495
- ctx.addIssue({
4496
- code: "custom",
4497
- message: "Unknown curated palette value key"
4498
- });
4499
- return z$1.NEVER;
4500
- }
4501
- return palette.valueKey;
4502
- });
4503
- //#endregion
4504
- //#region ../theme-core/src/palette/selection.ts
4505
- const sitePaletteIdSchema = z$1.string().uuid().transform((value) => value);
4506
- const sitePaletteVersionSchema = z$1.number().int().nonnegative().transform((value) => value);
4507
- const paletteSelectionSchema = z$1.discriminatedUnion("kind", [z$1.object({
4508
- kind: z$1.literal("curated"),
4509
- valueKey: knownCuratedPaletteValueKeySchema
4510
- }), z$1.object({
4511
- kind: z$1.literal("site"),
4512
- paletteId: sitePaletteIdSchema
4513
- })]);
4514
- const onboardingPaletteOriginSchema = z$1.object({
4515
- kind: z$1.literal("onboarding"),
4516
- sourceKey: z$1.string().min(1).nullable()
4517
- });
4518
- const curatedForkPaletteOriginSchema = z$1.object({
4519
- kind: z$1.literal("curated-fork"),
4520
- sourceValueKey: paletteValueKeySchema
4521
- });
4522
- const manualPaletteOriginSchema = z$1.object({ kind: z$1.literal("manual") });
4523
- const legacyCustomizedPaletteOriginSchema = z$1.object({
4524
- kind: z$1.literal("legacy-customized"),
4525
- sourceKey: z$1.string().min(1).nullable()
4526
- });
4527
- const sitePaletteOriginSchema = z$1.discriminatedUnion("kind", [
4528
- onboardingPaletteOriginSchema,
4529
- curatedForkPaletteOriginSchema,
4530
- manualPaletteOriginSchema,
4531
- legacyCustomizedPaletteOriginSchema
4532
- ]);
4533
- const editorSitePaletteOriginSchema = z$1.discriminatedUnion("kind", [z$1.object({
4534
- kind: z$1.literal("curated-fork"),
4535
- sourceValueKey: knownCuratedPaletteValueKeySchema
4536
- }), manualPaletteOriginSchema]);
4537
- z$1.object({
4538
- id: sitePaletteIdSchema,
4539
- colors: paletteColorsSchema,
4540
- mode: paletteModeSchema,
4541
- origin: sitePaletteOriginSchema,
4542
- version: sitePaletteVersionSchema
4543
- });
4544
- z$1.discriminatedUnion("kind", [
4545
- z$1.object({ kind: z$1.literal("preserve") }),
4546
- z$1.object({
4547
- kind: z$1.literal("select"),
4548
- selection: paletteSelectionSchema
4549
- }),
4550
- z$1.object({
4551
- kind: z$1.literal("create-site"),
4552
- colors: paletteColorsSchema,
4553
- mode: paletteModeSchema,
4554
- origin: editorSitePaletteOriginSchema
4555
- }),
4556
- z$1.object({
4557
- kind: z$1.literal("update-site"),
4558
- paletteId: sitePaletteIdSchema,
4559
- expectedVersion: sitePaletteVersionSchema,
4560
- colors: paletteColorsSchema,
4561
- mode: paletteModeSchema
4562
- })
4563
- ]);
4564
4494
  //#endregion
4565
4495
  //#region ../theme-core/src/lib/media.ts
4566
4496
  const hotspotSchema$1 = z.object({
@@ -4619,6 +4549,34 @@ const mediaSchema$1 = z.object({
4619
4549
  transform: transformSchema$1.optional()
4620
4550
  });
4621
4551
  //#endregion
4552
+ //#region ../theme-core/src/palette/schema.ts
4553
+ const colourHexString = z$1.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
4554
+ const paletteColorSchema = z$1.object({
4555
+ name: z$1.string().min(1),
4556
+ hex: colourHexString
4557
+ });
4558
+ const paletteMetaSchema = z$1.object({ mode: z$1.enum(["light", "dark"]) });
4559
+ const paletteSchema = z$1.object({
4560
+ colors: z$1.array(paletteColorSchema),
4561
+ meta: paletteMetaSchema
4562
+ }).transform((palette, ctx) => {
4563
+ const colors = paletteColorsFromEntries(palette.colors);
4564
+ if (!colors.ok) {
4565
+ ctx.addIssue({
4566
+ code: "custom",
4567
+ message: `Invalid complete palette: ${colors.error.kind}`
4568
+ });
4569
+ return z$1.NEVER;
4570
+ }
4571
+ return {
4572
+ colors: paletteColorEntries(colors.colors).map(({ name, hex }) => ({
4573
+ name: String(name),
4574
+ hex: String(hex)
4575
+ })),
4576
+ meta: palette.meta
4577
+ };
4578
+ });
4579
+ //#endregion
4622
4580
  //#region ../theme-core/src/buttons/types.ts
4623
4581
  /**
4624
4582
  * Standard semantic variant roles a theme exposes.
@@ -4631,8 +4589,6 @@ const VARIANT_ROLES = [
4631
4589
  "secondary",
4632
4590
  "outline",
4633
4591
  "ghost",
4634
- "link",
4635
- "tertiary",
4636
4592
  "accent"
4637
4593
  ];
4638
4594
  /**
@@ -4641,7 +4597,7 @@ const VARIANT_ROLES = [
4641
4597
  * IDs become class selectors, so keep the contract deliberately narrower than
4642
4598
  * an arbitrary string and shared with every authoring/runtime boundary.
4643
4599
  */
4644
- const buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only");
4600
+ 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" });
4645
4601
  function parseOpaqueButtonColourToken(value) {
4646
4602
  const token = parseThemeColorToken(value);
4647
4603
  if (token === null) return null;
@@ -5044,6 +5000,59 @@ function surfaceForegroundStyle(input) {
5044
5000
  [SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting
5045
5001
  };
5046
5002
  }
5003
+ shadeBackgroundEffect({
5004
+ id: "darken-background",
5005
+ name: "Darken on Hover",
5006
+ description: "Darkens the background color on hover",
5007
+ label: "Darken Amount (shade step)",
5008
+ shadeDirection: 1
5009
+ });
5010
+ shadeBackgroundEffect({
5011
+ id: "lighten-background",
5012
+ name: "Lighten on Hover",
5013
+ description: "Lightens the background color on hover",
5014
+ label: "Lighten Amount (shade step)",
5015
+ shadeDirection: -1
5016
+ });
5017
+ function shadeBackgroundEffect(config) {
5018
+ return {
5019
+ id: config.id,
5020
+ name: config.name,
5021
+ description: config.description,
5022
+ category: "background",
5023
+ pseudoElement: "none",
5024
+ applicableTo: ["button"],
5025
+ customizableOption: {
5026
+ name: "amount",
5027
+ type: "select",
5028
+ label: config.label,
5029
+ default: 100,
5030
+ options: [
5031
+ 0,
5032
+ 100,
5033
+ 200,
5034
+ 300,
5035
+ 400,
5036
+ 500,
5037
+ 600,
5038
+ 700,
5039
+ 800,
5040
+ 900
5041
+ ]
5042
+ },
5043
+ isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
5044
+ generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
5045
+ if (buttonConfig.background.type !== "solid") return "";
5046
+ const amount = (options.amount || 100) * config.shadeDirection;
5047
+ const baseToken = buttonConfig.background.colorToken ?? "primary-500";
5048
+ return `
5049
+ :where([data-theme-scope="${themeId}"]) .${variantId}:hover {
5050
+ background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
5051
+ }
5052
+ `;
5053
+ }
5054
+ };
5055
+ }
5047
5056
  buttonSizeNameSchema.options;
5048
5057
  //#endregion
5049
5058
  //#region ../theme-core/src/buttons/styles/domain.ts
@@ -7858,6 +7867,60 @@ function resolveThemeColorReferenceValue(input, context) {
7858
7867
  const reference = parseThemeColorReference(input, context);
7859
7868
  return reference.kind === "literal-css" ? reference.value : rgbColorValue(reference.token);
7860
7869
  }
7870
+ const BREAKPOINT_LG = 1024;
7871
+ const BREAKPOINT_XL = 1280;
7872
+ const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
7873
+ function mqUp(px) {
7874
+ return `(min-width: ${px}px)`;
7875
+ }
7876
+ function mqDown(px) {
7877
+ return `(max-width: ${px}px)`;
7878
+ }
7879
+ function mqBetween(minPx, maxPx) {
7880
+ return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
7881
+ }
7882
+ mqUp(640);
7883
+ mqUp(768);
7884
+ mqUp(BREAKPOINT_LG);
7885
+ mqUp(BREAKPOINT_XL);
7886
+ mqDown(639);
7887
+ mqDown(767);
7888
+ mqDown(BREAKPOINT_LG_DOWN);
7889
+ mqBetween(640, BREAKPOINT_LG_DOWN);
7890
+ mqDown(640);
7891
+ mqDown(768);
7892
+ //#endregion
7893
+ //#region ../theme-core/src/header/scrollTreatment.ts
7894
+ const headerScrollTreatmentSchema = z$1.discriminatedUnion("kind", [z$1.object({
7895
+ kind: z$1.literal("contrast-glass"),
7896
+ backgroundTone: z$1.enum(["light", "dark"])
7897
+ })]).optional();
7898
+ //#endregion
7899
+ //#region ../theme-core/src/header/containerSchema.ts
7900
+ const headerContainerSchema = z$1.object({
7901
+ rounded: z$1.enum([
7902
+ "none",
7903
+ "sm",
7904
+ "md",
7905
+ "lg",
7906
+ "xl",
7907
+ "2xl"
7908
+ ]).default("xl"),
7909
+ border: z$1.boolean().default(true),
7910
+ shadow: z$1.boolean().default(true),
7911
+ padding: z$1.enum([
7912
+ "sm",
7913
+ "md",
7914
+ "lg"
7915
+ ]).default("md"),
7916
+ tint: z$1.string().nullable().optional(),
7917
+ opacity: z$1.number().min(0).max(1).default(.12)
7918
+ }).optional();
7919
+ const headerInteractionPaletteSchema = z$1.enum([
7920
+ "primary",
7921
+ "secondary",
7922
+ "accent"
7923
+ ]);
7861
7924
  //#endregion
7862
7925
  //#region ../theme-core/src/schema.ts
7863
7926
  const axesSchema = z$1.object({
@@ -7888,16 +7951,6 @@ const axesSchema = z$1.object({
7888
7951
  "expressive"
7889
7952
  ])
7890
7953
  });
7891
- const colourHexString = z$1.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
7892
- const paletteColorSchema = z$1.object({
7893
- name: z$1.string().min(1),
7894
- hex: colourHexString
7895
- });
7896
- const paletteMetaSchema = z$1.object({ mode: z$1.enum(["light", "dark"]) });
7897
- const paletteSchema = z$1.object({
7898
- colors: z$1.array(paletteColorSchema),
7899
- meta: paletteMetaSchema
7900
- });
7901
7954
  const typographyStyleSchema = z$1.object({
7902
7955
  family: z$1.string().min(1),
7903
7956
  weight: z$1.enum([
@@ -8277,25 +8330,6 @@ const navFontWeight = z$1.enum([
8277
8330
  ]);
8278
8331
  const headerMaxWidth = z$1.enum(["container", "full"]);
8279
8332
  const headerBarFrame = z$1.enum(["full-bleed", "inset-shell"]);
8280
- const headerContainerSchema = z$1.object({
8281
- rounded: z$1.enum([
8282
- "none",
8283
- "sm",
8284
- "md",
8285
- "lg",
8286
- "xl",
8287
- "2xl"
8288
- ]).default("xl"),
8289
- border: z$1.boolean().default(true),
8290
- shadow: z$1.boolean().default(true),
8291
- padding: z$1.enum([
8292
- "sm",
8293
- "md",
8294
- "lg"
8295
- ]).default("md"),
8296
- tint: z$1.string().nullable().optional(),
8297
- opacity: z$1.number().min(0).max(1).default(.12)
8298
- }).optional();
8299
8333
  const headerBorderSchema = componentBorderSchema.extend({ position: z$1.enum([
8300
8334
  "bottom",
8301
8335
  "top",
@@ -8422,6 +8456,7 @@ const headerSchema = z$1.object({
8422
8456
  shrinkOnScroll: z$1.boolean(),
8423
8457
  maxWidth: headerMaxWidth,
8424
8458
  barFrame: headerBarFrame.optional(),
8459
+ scrollTreatment: headerScrollTreatmentSchema,
8425
8460
  logoOverride: mediaSchema$1.nullable().optional(),
8426
8461
  background: headerBackgroundSchema.default({
8427
8462
  type: "color",
@@ -8434,6 +8469,7 @@ const headerSchema = z$1.object({
8434
8469
  navFontRole: z$1.enum(["body", "heading"]).optional(),
8435
8470
  navTypography: z$1.enum(["body", "heading"]).optional(),
8436
8471
  navTextSize: navLinkStyleSchema.shape.textSize,
8472
+ interactionPalette: headerInteractionPaletteSchema.optional(),
8437
8473
  navPlacement: z$1.enum(["end", "center"]).optional(),
8438
8474
  container: headerContainerSchema,
8439
8475
  border: headerBorderSchema,
@@ -8726,770 +8762,669 @@ z$1.object({
8726
8762
  themes: z$1.array(themeSchema).length(3)
8727
8763
  });
8728
8764
  //#endregion
8765
+ //#region ../theme-core/src/site-styles/lookOptionGroups.ts
8766
+ function defineLookOptionGroup(group) {
8767
+ defaultOption(group);
8768
+ return group;
8769
+ }
8770
+ function defaultOption(group) {
8771
+ const option = group.options.find((candidate) => candidate.id === group.defaultOptionId);
8772
+ if (option) return option;
8773
+ throw new Error(`Look option group "${group.id}" defaults to missing option "${group.defaultOptionId}".`);
8774
+ }
8775
+ //#endregion
8729
8776
  //#region ../theme-core/src/site-styles/appearancePresetResolution.ts
8730
8777
  function assertValidOptionGroups(preset) {
8731
8778
  preset.optionGroups?.forEach((group) => {
8732
- 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}".`);
8779
+ defineLookOptionGroup(group);
8733
8780
  });
8734
8781
  }
8735
8782
  function defineBlockAppearancePreset(preset) {
8736
8783
  assertValidOptionGroups(preset);
8737
8784
  return preset;
8738
8785
  }
8739
- [...[
8740
- defineBlockAppearancePreset({
8741
- kind: "block-design",
8742
- id: "hero-immersive-image",
8743
- target: "hero",
8744
- label: "Immersive image hero",
8745
- blockKinds: ["block.hero"],
8746
- constraints: { layoutFamilies: ["centered", "compact"] },
8747
- layoutPatches: [{
8748
- constraints: { layoutVariantKeys: ["micro"] },
8749
- designPatch: {
8750
- sectionHeight: "banner",
8751
- heroTypographyScale: "display"
8752
- }
8753
- }],
8754
- design: {
8755
- sectionSurface: "hero-image",
8756
- contentFrame: plainFrame,
8757
- itemSurface: "none",
8758
- sectionHeight: "hero",
8759
- heroComposition: "center",
8760
- heroTypographyScale: "display",
8761
- imageSurfaceTreatment: { kind: "neutral-wash" }
8786
+ //#endregion
8787
+ //#region ../theme-core/src/site-styles/blockAppearancePresets.ts
8788
+ const brandScrimOptionGroups = [{
8789
+ id: "image-surface-treatment",
8790
+ label: "Treatment",
8791
+ defaultOptionId: "brand-scrim-primary",
8792
+ options: [{
8793
+ id: "brand-scrim-primary",
8794
+ label: "Brand scrim",
8795
+ designPatch: { imageSurfaceTreatment: {
8796
+ kind: "brand-scrim",
8797
+ token: "primary"
8798
+ } }
8799
+ }, {
8800
+ id: "neutral-scrim",
8801
+ label: "Neutral scrim",
8802
+ designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8803
+ }]
8804
+ }];
8805
+ const microBannerLayoutPatches = [{
8806
+ constraints: { layoutVariantKeys: ["micro"] },
8807
+ designPatch: { sectionHeight: "banner" }
8808
+ }];
8809
+ defineBlockAppearancePreset({
8810
+ id: "hero-immersive-image",
8811
+ target: "hero",
8812
+ label: "Immersive image hero",
8813
+ blockKinds: ["block.hero"],
8814
+ constraints: { layoutFamilies: ["centered", "compact"] },
8815
+ layoutPatches: [{
8816
+ constraints: { layoutVariantKeys: ["micro"] },
8817
+ designPatch: {
8818
+ sectionHeight: "banner",
8819
+ heroTypographyScale: "display"
8762
8820
  }
8763
- }),
8764
- defineBlockAppearancePreset({
8765
- kind: "block-design",
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
- selectedOptionId: "neutral-scrim",
8775
- options: [{
8776
- id: "neutral-scrim",
8777
- label: "Neutral scrim",
8778
- designPatch: { imageSurfaceTreatment: {
8779
- kind: "neutral-scrim",
8780
- intensity: "balanced"
8781
- } }
8782
- }, {
8783
- id: "brand-scrim-primary",
8784
- label: "Brand scrim",
8785
- designPatch: { imageSurfaceTreatment: {
8786
- kind: "brand-scrim",
8787
- token: "primary",
8788
- intensity: "balanced"
8789
- } }
8790
- }]
8791
- }],
8792
- layoutPatches: [{
8793
- constraints: { layoutVariantKeys: ["micro"] },
8794
- designPatch: {
8795
- sectionHeight: "banner",
8796
- heroTypographyScale: "editorial"
8797
- }
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: {
8821
+ }],
8822
+ design: {
8823
+ sectionSurface: "hero-image",
8824
+ contentFrame: plainFrame,
8825
+ itemSurface: "none",
8826
+ sectionHeight: "hero",
8827
+ heroComposition: "center",
8828
+ heroTypographyScale: "display",
8829
+ imageSurfaceTreatment: { kind: "neutral-wash" }
8830
+ }
8831
+ }), defineBlockAppearancePreset({
8832
+ id: "hero-bottom-left-panel",
8833
+ target: "hero",
8834
+ label: "Bottom-left panel hero",
8835
+ blockKinds: ["block.hero"],
8836
+ constraints: { layoutFamilies: ["centered", "compact"] },
8837
+ optionGroups: [{
8838
+ id: "image-surface-treatment",
8839
+ label: "Treatment",
8840
+ defaultOptionId: "neutral-scrim",
8841
+ options: [{
8842
+ id: "neutral-scrim",
8843
+ label: "Neutral scrim",
8844
+ designPatch: { imageSurfaceTreatment: {
8807
8845
  kind: "neutral-scrim",
8808
8846
  intensity: "balanced"
8809
- }
8810
- }
8811
- }),
8812
- defineBlockAppearancePreset({
8813
- kind: "block-design",
8814
- id: "hero-poster-image",
8815
- target: "hero",
8816
- label: "Poster image hero",
8817
- blockKinds: ["block.hero"],
8818
- constraints: { layoutFamilies: ["centered", "compact"] },
8819
- layoutPatches: [{
8820
- constraints: { layoutVariantKeys: ["micro"] },
8821
- designPatch: {
8822
- sectionHeight: "banner",
8823
- heroTypographyScale: "display"
8824
- }
8825
- }],
8826
- design: {
8827
- sectionSurface: "hero-image",
8828
- contentFrame: plainFrame,
8829
- itemSurface: "none",
8830
- sectionHeight: "immersive",
8831
- heroComposition: "center",
8832
- heroTypographyScale: "poster",
8833
- imageSurfaceTreatment: {
8847
+ } }
8848
+ }, {
8849
+ id: "brand-scrim-primary",
8850
+ label: "Brand scrim",
8851
+ designPatch: { imageSurfaceTreatment: {
8834
8852
  kind: "brand-scrim",
8835
8853
  token: "primary",
8836
- intensity: "strong"
8837
- }
8838
- }
8839
- }),
8840
- defineBlockAppearancePreset({
8841
- kind: "block-design",
8842
- id: "hero-brand-scrim",
8843
- target: "hero",
8844
- label: "Brand scrim image hero",
8845
- blockKinds: ["block.hero"],
8846
- constraints: { layoutFamilies: ["centered", "compact"] },
8847
- optionGroups: [{
8848
- id: "image-surface-treatment",
8849
- label: "Treatment",
8850
- selectedOptionId: "brand-scrim-primary",
8851
- options: [{
8852
- id: "brand-scrim-primary",
8853
- label: "Brand scrim",
8854
- designPatch: { imageSurfaceTreatment: {
8855
- kind: "brand-scrim",
8856
- token: "primary"
8857
- } }
8858
- }, {
8859
- id: "neutral-scrim",
8860
- label: "Neutral scrim",
8861
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8862
- }]
8863
- }],
8864
- layoutPatches: [{
8865
- constraints: { layoutVariantKeys: ["micro"] },
8866
- designPatch: { sectionHeight: "banner" }
8867
- }],
8868
- design: {
8869
- sectionSurface: "hero-image",
8870
- contentFrame: plainFrame,
8871
- itemSurface: "none",
8872
- sectionHeight: "immersive",
8873
- heroComposition: "center",
8874
- heroTypographyScale: "display",
8875
- imageSurfaceTreatment: {
8876
- kind: "brand-scrim",
8877
- token: "primary"
8878
- }
8879
- }
8880
- }),
8881
- defineBlockAppearancePreset({
8882
- kind: "block-design",
8883
- id: "hero-brand-scrim-fixed-frame",
8884
- target: "hero",
8885
- label: "Fixed-frame brand scrim hero",
8886
- blockKinds: ["block.hero"],
8887
- constraints: { layoutFamilies: ["centered", "compact"] },
8888
- optionGroups: [{
8889
- id: "image-surface-treatment",
8890
- label: "Treatment",
8891
- selectedOptionId: "brand-scrim-primary",
8892
- options: [{
8893
- id: "brand-scrim-primary",
8894
- label: "Brand scrim",
8895
- designPatch: { imageSurfaceTreatment: {
8896
- kind: "brand-scrim",
8897
- token: "primary"
8898
- } }
8899
- }, {
8900
- id: "neutral-scrim",
8901
- label: "Neutral scrim",
8902
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8903
- }]
8904
- }],
8905
- layoutPatches: [{
8906
- constraints: { layoutVariantKeys: ["micro"] },
8907
- designPatch: { sectionHeight: "banner" }
8908
- }],
8909
- design: {
8910
- sectionSurface: "hero-image",
8911
- contentFrame: plainFrame,
8912
- itemSurface: "none",
8913
- sectionHeight: "immersive",
8914
- heroComposition: "center",
8915
- heroTypographyScale: "display",
8916
- imageSurfaceTreatment: {
8917
- kind: "brand-scrim",
8918
- token: "primary"
8919
- },
8920
- imageSurfaceMotion: "fixed-frame",
8921
- eyebrowTreatment: "accent-pill-bounce"
8922
- }
8923
- }),
8924
- defineBlockAppearancePreset({
8925
- kind: "block-design",
8926
- id: "hero-brand-depth-expressive",
8927
- target: "hero",
8928
- label: "Expressive brand-depth hero",
8929
- blockKinds: ["block.hero"],
8930
- constraints: { layoutFamilies: ["centered", "compact"] },
8931
- design: {
8932
- sectionSurface: "brand-depth-band",
8933
- contentFrame: plainFrame,
8934
- itemSurface: "none",
8935
- heroComposition: "center",
8936
- heroTypographyScale: "editorial",
8937
- eyebrowTreatment: "accent-pill-bounce"
8938
- }
8939
- }),
8940
- defineBlockAppearancePreset({
8941
- kind: "block-design",
8942
- id: "hero-contained-intro",
8943
- target: "hero",
8944
- label: "Contained intro hero",
8945
- blockKinds: ["block.hero"],
8946
- design: {
8947
- sectionSurface: "muted-band",
8948
- contentFrame: panelFrame("inset"),
8949
- itemSurface: "none",
8950
- heroComposition: "center",
8951
- heroTypographyScale: "editorial"
8952
- }
8953
- }),
8954
- defineBlockAppearancePreset({
8955
- kind: "block-design",
8956
- id: "hero-split-editorial",
8957
- target: "hero",
8958
- label: "Editorial split hero",
8959
- blockKinds: ["block.hero"],
8960
- constraints: { layoutFamilies: ["split"] },
8961
- design: {
8962
- sectionSurface: "base",
8963
- contentFrame: plainFrame,
8964
- itemSurface: "none",
8965
- heroTypographyScale: "editorial"
8966
- }
8967
- }),
8968
- defineBlockAppearancePreset({
8969
- kind: "block-design",
8970
- id: "hero-split-brand",
8971
- target: "hero",
8972
- label: "Brand split hero",
8973
- blockKinds: ["block.hero"],
8974
- constraints: { layoutFamilies: ["split"] },
8975
- design: {
8976
- sectionSurface: "brand-depth-band",
8977
- contentFrame: plainFrame,
8978
- itemSurface: "none",
8979
- heroTypographyScale: "display",
8980
- eyebrowTreatment: "accent-pill-bounce"
8981
- }
8982
- }),
8983
- defineBlockAppearancePreset({
8984
- kind: "block-design",
8985
- id: "hero-split-soft-panel",
8986
- target: "hero",
8987
- label: "Soft panel split hero",
8988
- blockKinds: ["block.hero"],
8989
- constraints: { layoutFamilies: ["split"] },
8990
- design: {
8991
- sectionSurface: "muted-band",
8992
- contentFrame: panelFrame("raised"),
8993
- itemSurface: "none",
8854
+ intensity: "balanced"
8855
+ } }
8856
+ }]
8857
+ }],
8858
+ layoutPatches: [{
8859
+ constraints: { layoutVariantKeys: ["micro"] },
8860
+ designPatch: {
8861
+ sectionHeight: "banner",
8994
8862
  heroTypographyScale: "editorial"
8995
8863
  }
8996
- }),
8997
- defineBlockAppearancePreset({
8998
- kind: "block-design",
8999
- id: "hero-split-accent",
9000
- target: "hero",
9001
- label: "Accent split hero",
9002
- blockKinds: ["block.hero"],
9003
- constraints: { layoutFamilies: ["split"] },
9004
- design: {
9005
- sectionSurface: "accent-band",
9006
- contentFrame: panelFrame("raised"),
9007
- itemSurface: "none",
8864
+ }],
8865
+ design: {
8866
+ sectionSurface: "hero-image",
8867
+ contentFrame: panelFrame("raised"),
8868
+ itemSurface: "none",
8869
+ sectionHeight: "immersive",
8870
+ heroComposition: "bottom-left",
8871
+ heroTypographyScale: "display",
8872
+ imageSurfaceTreatment: {
8873
+ kind: "neutral-scrim",
8874
+ intensity: "balanced"
8875
+ }
8876
+ }
8877
+ }), defineBlockAppearancePreset({
8878
+ id: "hero-poster-image",
8879
+ target: "hero",
8880
+ label: "Poster image hero",
8881
+ blockKinds: ["block.hero"],
8882
+ constraints: { layoutFamilies: ["centered", "compact"] },
8883
+ layoutPatches: [{
8884
+ constraints: { layoutVariantKeys: ["micro"] },
8885
+ designPatch: {
8886
+ sectionHeight: "banner",
9008
8887
  heroTypographyScale: "display"
9009
8888
  }
9010
- }),
9011
- defineBlockAppearancePreset({
9012
- kind: "block-design",
9013
- id: "intro-editorial-statement",
9014
- target: "intro",
9015
- label: "Editorial intro statement",
9016
- blockKinds: ["block.intro"],
9017
- constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
9018
- design: {
9019
- sectionSurface: "base",
9020
- contentFrame: plainFrame,
9021
- itemSurface: "none",
9022
- composition: {
9023
- kind: "intro",
9024
- treatment: "editorial-statement"
9025
- }
9026
- }
9027
- }),
9028
- defineBlockAppearancePreset({
9029
- kind: "block-design",
9030
- id: "intro-portrait-bio",
9031
- target: "intro",
9032
- label: "Portrait and bio",
9033
- blockKinds: ["block.intro"],
9034
- constraints: { layoutVariantKeys: ["media-copy"] },
9035
- design: {
9036
- sectionSurface: "base",
9037
- contentFrame: plainFrame,
9038
- itemSurface: "none",
9039
- composition: {
9040
- kind: "intro",
9041
- treatment: "portrait-bio"
9042
- }
9043
- }
9044
- }),
9045
- defineBlockAppearancePreset({
9046
- kind: "block-design",
9047
- id: "offerings-preview-default-cards",
9048
- target: "offerings",
9049
- label: "Default offering cards",
9050
- blockKinds: ["block.offerings-preview"],
9051
- design: {
9052
- sectionSurface: "base",
9053
- contentFrame: plainFrame,
9054
- itemSurface: "default"
9055
- }
9056
- }),
9057
- defineBlockAppearancePreset({
9058
- kind: "block-design",
9059
- id: "offerings-preview-secondary-cards",
9060
- target: "offerings",
9061
- label: "Secondary offering cards",
9062
- blockKinds: ["block.offerings-preview"],
9063
- design: {
9064
- sectionSurface: "muted-band",
9065
- contentFrame: plainFrame,
9066
- itemSurface: "inset"
9067
- }
9068
- }),
9069
- defineBlockAppearancePreset({
9070
- kind: "block-design",
9071
- id: "offerings-preview-non-carded",
9072
- target: "offerings",
9073
- label: "Non-carded offerings",
9074
- blockKinds: ["block.offerings-preview"],
9075
- design: {
9076
- sectionSurface: "muted-band",
9077
- contentFrame: plainFrame,
9078
- itemSurface: "editorial"
9079
- }
9080
- }),
9081
- defineBlockAppearancePreset({
9082
- kind: "block-design",
9083
- id: "offerings-preview-paired-feature-cards",
9084
- target: "offerings",
9085
- label: "Paired feature cards",
9086
- blockKinds: ["block.offerings-preview"],
9087
- constraints: { layoutVariantKeys: ["cards"] },
9088
- design: {
9089
- sectionSurface: "base",
9090
- contentFrame: plainFrame,
9091
- itemSurface: "none"
9092
- }
9093
- }),
9094
- defineBlockAppearancePreset({
9095
- kind: "block-design",
9096
- id: "offerings-preview-open-editorial-columns",
9097
- target: "offerings",
9098
- label: "Open editorial columns",
9099
- blockKinds: ["block.offerings-preview"],
9100
- constraints: { layoutVariantKeys: ["cards"] },
9101
- design: {
9102
- sectionSurface: "base",
9103
- contentFrame: plainFrame,
9104
- itemSurface: "none"
9105
- }
9106
- }),
9107
- defineBlockAppearancePreset({
9108
- kind: "block-design",
9109
- id: "offerings-preview-joined-programme-panel",
9110
- target: "offerings",
9111
- label: "Joined programme panel",
9112
- blockKinds: ["block.offerings-preview"],
9113
- constraints: { layoutVariantKeys: ["cards"] },
9114
- design: {
9115
- sectionSurface: "base",
9116
- contentFrame: plainFrame,
9117
- itemSurface: "none"
9118
- }
9119
- }),
9120
- defineBlockAppearancePreset({
9121
- kind: "block-design",
9122
- id: "feature-cards-raised-rule",
9123
- target: "feature-cards",
9124
- label: "Raised cards with rule",
9125
- blockKinds: ["block.feature-cards"],
9126
- design: {
9127
- sectionSurface: "base",
9128
- contentFrame: plainFrame,
9129
- itemSurface: "raised"
9130
- }
9131
- }),
9132
- defineBlockAppearancePreset({
9133
- kind: "block-design",
9134
- id: "feature-cards-bold-colors",
9135
- target: "feature-cards",
9136
- label: "Bold colour-blocked cards",
9137
- blockKinds: ["block.feature-cards"],
9138
- design: {
9139
- sectionSurface: "base",
9140
- contentFrame: plainFrame,
9141
- itemSurface: "color-blocked"
9142
- }
9143
- }),
9144
- defineBlockAppearancePreset({
9145
- kind: "block-design",
9146
- id: "feature-cards-editorial-columns",
9147
- target: "feature-cards",
9148
- label: "Editorial open columns",
9149
- blockKinds: ["block.feature-cards"],
9150
- design: {
9151
- sectionSurface: "base",
9152
- contentFrame: plainFrame,
9153
- itemSurface: "editorial"
9154
- }
9155
- }),
9156
- defineBlockAppearancePreset({
9157
- kind: "block-design",
9158
- id: "feature-cards-asymmetric-emphasis",
9159
- target: "feature-cards",
9160
- label: "Asymmetric emphasis pair",
9161
- blockKinds: ["block.feature-cards"],
9162
- constraints: { layoutFamilies: ["grid"] },
9163
- design: {
9164
- sectionSurface: "base",
9165
- contentFrame: plainFrame,
9166
- itemSurface: "none",
9167
- composition: {
9168
- kind: "feature-cards",
9169
- treatment: "asymmetric-emphasis"
9170
- }
9171
- }
9172
- }),
9173
- defineBlockAppearancePreset({
9174
- kind: "block-design",
9175
- id: "feature-cards-framed-programme",
9176
- target: "feature-cards",
9177
- label: "Framed programme cards",
9178
- blockKinds: ["block.feature-cards"],
9179
- constraints: { layoutFamilies: ["grid"] },
9180
- design: {
9181
- sectionSurface: "brand-depth-band",
9182
- contentFrame: plainFrame,
9183
- itemSurface: "inset",
9184
- composition: {
9185
- kind: "feature-cards",
9186
- treatment: "framed-programme"
9187
- }
9188
- }
9189
- }),
9190
- defineBlockAppearancePreset({
9191
- kind: "block-design",
9192
- id: "feature-cards-soft-panels",
9193
- target: "feature-cards",
9194
- label: "Soft tinted panels",
9195
- blockKinds: ["block.feature-cards"],
9196
- design: {
9197
- sectionSurface: "base",
9198
- contentFrame: plainFrame,
9199
- itemSurface: "inset"
9200
- }
9201
- }),
9202
- defineBlockAppearancePreset({
9203
- kind: "block-design",
9204
- id: "feature-cards-editorial-diptych",
9205
- target: "feature-cards",
9206
- label: "Editorial diptych",
9207
- blockKinds: ["block.feature-cards"],
9208
- constraints: { layoutVariantKeys: ["editorial-diptych"] },
9209
- design: {
9210
- sectionSurface: "base",
9211
- contentFrame: plainFrame,
9212
- itemSurface: "flat"
9213
- }
9214
- }),
9215
- defineBlockAppearancePreset({
9216
- kind: "block-design",
9217
- id: "feature-cards-editorial-pathways",
9218
- target: "feature-cards",
9219
- label: "Editorial pathways",
9220
- blockKinds: ["block.feature-cards"],
9221
- constraints: { layoutVariantKeys: ["editorial-pathways"] },
9222
- design: {
9223
- sectionSurface: "base",
9224
- contentFrame: plainFrame,
9225
- itemSurface: "flat"
9226
- }
9227
- }),
9228
- defineBlockAppearancePreset({
9229
- kind: "block-design",
9230
- id: "feature-cards-photo-tiles",
9231
- target: "feature-cards",
9232
- label: "Photo tiles",
9233
- blockKinds: ["block.feature-cards"],
9234
- design: {
9235
- sectionSurface: "base",
9236
- contentFrame: plainFrame,
9237
- itemSurface: "raised"
9238
- }
9239
- }),
9240
- defineBlockAppearancePreset({
9241
- kind: "block-design",
9242
- id: "events-lined-panel",
9243
- target: "events",
9244
- label: "Raised event panel",
9245
- blockKinds: ["block.event-calendar", "block.event-listing"],
9246
- design: {
9247
- sectionSurface: "base",
9248
- contentFrame: panelFrame("raised"),
9249
- itemSurface: "none"
9250
- }
9251
- }),
9252
- defineBlockAppearancePreset({
9253
- kind: "block-design",
9254
- id: "events-ruled-register",
9255
- target: "events",
9256
- label: "Ruled event register",
9257
- blockKinds: ["block.event-calendar", "block.event-listing"],
9258
- design: {
9259
- sectionSurface: "brand-depth-band",
9260
- contentFrame: plainFrame,
9261
- itemSurface: "none",
9262
- eventListTreatment: "ruled-register"
9263
- }
9264
- }),
9265
- defineBlockAppearancePreset({
9266
- kind: "block-design",
9267
- id: "events-editorial-register",
9268
- target: "events",
9269
- label: "Editorial event register",
9270
- blockKinds: ["block.event-calendar", "block.event-listing"],
9271
- design: {
9272
- sectionSurface: "base",
9273
- contentFrame: plainFrame,
9274
- itemSurface: "none",
9275
- eventListTreatment: "editorial-register"
9276
- }
9277
- }),
9278
- defineBlockAppearancePreset({
9279
- kind: "block-design",
9280
- id: "events-dense-index",
9281
- target: "events",
9282
- label: "Dense event index",
9283
- blockKinds: ["block.event-calendar", "block.event-listing"],
9284
- design: {
9285
- sectionSurface: "accent-band",
9286
- contentFrame: plainFrame,
9287
- itemSurface: "none",
9288
- eventListTreatment: "dense-index"
9289
- }
9290
- }),
9291
- defineBlockAppearancePreset({
9292
- kind: "block-design",
9293
- id: "schedule-details-brand-depth",
9294
- target: "events",
9295
- label: "Brand-depth schedule details",
9296
- blockKinds: ["block.event-details", "block.course-details"],
9297
- design: {
9298
- sectionSurface: "brand-depth-band",
9299
- contentFrame: plainFrame,
9300
- itemSurface: "none",
9301
- tileTreatment: "brand-depth"
9302
- }
9303
- }),
9304
- defineBlockAppearancePreset({
9305
- kind: "block-design",
9306
- id: "media-text-flush-feature",
9307
- target: "media-text",
9308
- label: "Flush media feature",
9309
- blockKinds: ["block.media-text"],
9310
- design: {
9311
- sectionSurface: "muted-band",
9312
- contentFrame: flushPanelFrame({ bleed: "start" }),
9313
- itemSurface: "none"
9314
- }
9315
- }),
9316
- defineBlockAppearancePreset({
9317
- kind: "block-design",
9318
- id: "testimonials-simple-cards",
9319
- target: "testimonials",
9320
- label: "Simple testimonial cards",
9321
- blockKinds: ["block.testimonials"],
9322
- design: {
9323
- sectionSurface: "base",
9324
- contentFrame: plainFrame,
9325
- itemSurface: "default"
9326
- }
9327
- }),
9328
- defineBlockAppearancePreset({
9329
- kind: "block-design",
9330
- id: "testimonials-raised-panel",
9331
- target: "testimonials",
9332
- label: "Raised testimonial panel",
9333
- blockKinds: ["block.testimonials"],
9334
- design: {
9335
- sectionSurface: "muted-band",
9336
- contentFrame: panelFrame("raised"),
9337
- itemSurface: "raised"
9338
- }
9339
- }),
9340
- defineBlockAppearancePreset({
9341
- kind: "block-design",
9342
- id: "testimonials-accent-panel",
9343
- target: "testimonials",
9344
- label: "Accent testimonial panel",
9345
- blockKinds: ["block.testimonials"],
9346
- design: {
9347
- sectionSurface: "accent-band",
9348
- contentFrame: panelFrame("raised"),
9349
- itemSurface: "raised"
9350
- }
9351
- }),
9352
- defineBlockAppearancePreset({
9353
- kind: "block-design",
9354
- id: "testimonials-default-cards",
9355
- target: "testimonials",
9356
- label: "Default cards",
9357
- blockKinds: ["block.testimonials"],
9358
- design: {
9359
- sectionSurface: "base",
9360
- contentFrame: plainFrame,
9361
- itemSurface: "none",
9362
- testimonialCardTreatment: "default"
9363
- }
9364
- }),
9365
- defineBlockAppearancePreset({
9366
- kind: "block-design",
9367
- id: "testimonials-statement-cards",
9368
- target: "testimonials",
9369
- label: "Statement cards",
9370
- blockKinds: ["block.testimonials"],
9371
- design: {
9372
- sectionSurface: "accent-band",
9373
- contentFrame: plainFrame,
9374
- itemSurface: "raised",
9375
- testimonialCardTreatment: "statement"
9376
- }
9377
- }),
9378
- defineBlockAppearancePreset({
9379
- kind: "block-design",
9380
- id: "testimonials-brand-statement-cards",
9381
- target: "testimonials",
9382
- label: "Brand statement cards",
9383
- blockKinds: ["block.testimonials"],
9384
- design: {
9385
- sectionSurface: "brand-depth-band",
9386
- contentFrame: plainFrame,
9387
- itemSurface: "raised",
9388
- testimonialCardTreatment: "statement"
9389
- }
9390
- }),
9391
- defineBlockAppearancePreset({
9392
- kind: "block-design",
9393
- id: "testimonials-non-carded",
9394
- target: "testimonials",
9395
- label: "Non-carded",
9396
- blockKinds: ["block.testimonials"],
9397
- design: {
9398
- sectionSurface: "muted-band",
9399
- contentFrame: plainFrame,
9400
- itemSurface: "none",
9401
- testimonialCardTreatment: "non-carded"
9402
- }
9403
- }),
9404
- defineBlockAppearancePreset({
9405
- kind: "block-design",
9406
- id: "testimonials-evergreen-lead",
9407
- target: "testimonials",
9408
- label: "Evergreen lead",
9409
- blockKinds: ["block.testimonials"],
9410
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9411
- design: {
9412
- sectionSurface: "base",
9413
- contentFrame: plainFrame,
9414
- itemSurface: "none"
9415
- }
9416
- }),
9417
- defineBlockAppearancePreset({
9418
- kind: "block-design",
9419
- id: "testimonials-room-and-response",
9420
- target: "testimonials",
9421
- label: "Room and response",
9422
- blockKinds: ["block.testimonials"],
9423
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9424
- design: {
9425
- sectionSurface: "base",
9426
- contentFrame: plainFrame,
9427
- itemSurface: "none"
9428
- }
9429
- }),
9430
- defineBlockAppearancePreset({
9431
- kind: "block-design",
9432
- id: "testimonials-open-floor",
9433
- target: "testimonials",
9434
- label: "Open floor",
9435
- blockKinds: ["block.testimonials"],
9436
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9437
- design: {
9438
- sectionSurface: "base",
9439
- contentFrame: plainFrame,
9440
- itemSurface: "none"
9441
- }
9442
- }),
9443
- defineBlockAppearancePreset({
9444
- kind: "block-design",
9445
- id: "faq-base-accordion",
9446
- target: "faq",
9447
- label: "Base accordion FAQ",
9448
- blockKinds: ["block.faq"],
9449
- design: {
9450
- sectionSurface: "base",
9451
- contentFrame: plainFrame,
9452
- itemSurface: "default"
9453
- }
9454
- }),
9455
- defineBlockAppearancePreset({
9456
- kind: "block-design",
9457
- id: "faq-contained-help",
9458
- target: "faq",
9459
- label: "Contained help panel",
9460
- blockKinds: ["block.faq"],
9461
- design: {
9462
- sectionSurface: "muted-band",
9463
- contentFrame: panelFrame("inset"),
9464
- itemSurface: "default"
9465
- }
9466
- }),
9467
- defineBlockAppearancePreset({
9468
- kind: "block-design",
9469
- id: "contact-form-panel",
9470
- target: "contact-form",
9471
- label: "Raised form panel",
9472
- blockKinds: ["block.form"],
9473
- design: {
9474
- sectionSurface: "muted-band",
9475
- contentFrame: panelFrame("raised"),
9476
- itemSurface: "none"
9477
- }
9478
- }),
9479
- defineBlockAppearancePreset({
9480
- kind: "block-design",
9481
- id: "cta-accent-band",
9482
- target: "cta",
9483
- label: "Accent CTA band",
9484
- blockKinds: ["block.cta-full"],
9485
- design: {
9486
- sectionSurface: "accent-band",
9487
- contentFrame: plainFrame,
9488
- itemSurface: "none",
9489
- eyebrowTreatment: "accent"
9490
- }
9491
- })
9492
- ]];
8889
+ }],
8890
+ design: {
8891
+ sectionSurface: "hero-image",
8892
+ contentFrame: plainFrame,
8893
+ itemSurface: "none",
8894
+ sectionHeight: "immersive",
8895
+ heroComposition: "center",
8896
+ heroTypographyScale: "poster",
8897
+ imageSurfaceTreatment: {
8898
+ kind: "brand-scrim",
8899
+ token: "primary",
8900
+ intensity: "strong"
8901
+ }
8902
+ }
8903
+ }), defineBlockAppearancePreset({
8904
+ id: "hero-brand-scrim",
8905
+ target: "hero",
8906
+ label: "Brand scrim image hero",
8907
+ blockKinds: ["block.hero"],
8908
+ constraints: { layoutFamilies: ["centered", "compact"] },
8909
+ optionGroups: brandScrimOptionGroups,
8910
+ layoutPatches: microBannerLayoutPatches,
8911
+ design: {
8912
+ sectionSurface: "hero-image",
8913
+ contentFrame: plainFrame,
8914
+ itemSurface: "none",
8915
+ sectionHeight: "immersive",
8916
+ heroComposition: "center",
8917
+ heroTypographyScale: "display",
8918
+ imageSurfaceTreatment: {
8919
+ kind: "brand-scrim",
8920
+ token: "primary"
8921
+ }
8922
+ }
8923
+ }), defineBlockAppearancePreset({
8924
+ id: "hero-brand-scrim-fixed-frame",
8925
+ target: "hero",
8926
+ label: "Fixed-frame brand scrim hero",
8927
+ blockKinds: ["block.hero"],
8928
+ constraints: { layoutFamilies: ["centered", "compact"] },
8929
+ optionGroups: brandScrimOptionGroups,
8930
+ layoutPatches: microBannerLayoutPatches,
8931
+ design: {
8932
+ sectionSurface: "hero-image",
8933
+ contentFrame: plainFrame,
8934
+ itemSurface: "none",
8935
+ sectionHeight: "immersive",
8936
+ heroComposition: "center",
8937
+ heroTypographyScale: "display",
8938
+ imageSurfaceTreatment: {
8939
+ kind: "brand-scrim",
8940
+ token: "primary"
8941
+ },
8942
+ imageSurfaceMotion: "fixed-frame",
8943
+ eyebrowTreatment: "accent-pill-bounce"
8944
+ }
8945
+ }), defineBlockAppearancePreset({
8946
+ id: "hero-brand-depth-expressive",
8947
+ target: "hero",
8948
+ label: "Expressive brand-depth hero",
8949
+ blockKinds: ["block.hero"],
8950
+ constraints: { layoutFamilies: ["centered", "compact"] },
8951
+ design: {
8952
+ sectionSurface: "brand-depth-band",
8953
+ contentFrame: plainFrame,
8954
+ itemSurface: "none",
8955
+ heroComposition: "center",
8956
+ heroTypographyScale: "editorial",
8957
+ eyebrowTreatment: "accent-pill-bounce"
8958
+ }
8959
+ }), defineBlockAppearancePreset({
8960
+ id: "hero-contained-intro",
8961
+ target: "hero",
8962
+ label: "Contained intro hero",
8963
+ blockKinds: ["block.hero"],
8964
+ design: {
8965
+ sectionSurface: "muted-band",
8966
+ contentFrame: panelFrame("inset"),
8967
+ itemSurface: "none",
8968
+ heroComposition: "center",
8969
+ heroTypographyScale: "editorial"
8970
+ }
8971
+ }), defineBlockAppearancePreset({
8972
+ id: "hero-split-editorial",
8973
+ target: "hero",
8974
+ label: "Editorial split hero",
8975
+ blockKinds: ["block.hero"],
8976
+ constraints: { layoutFamilies: ["split"] },
8977
+ design: {
8978
+ sectionSurface: "base",
8979
+ contentFrame: plainFrame,
8980
+ itemSurface: "none",
8981
+ heroTypographyScale: "editorial"
8982
+ }
8983
+ }), defineBlockAppearancePreset({
8984
+ id: "hero-split-brand",
8985
+ target: "hero",
8986
+ label: "Brand split hero",
8987
+ blockKinds: ["block.hero"],
8988
+ constraints: { layoutFamilies: ["split"] },
8989
+ design: {
8990
+ sectionSurface: "brand-depth-band",
8991
+ contentFrame: plainFrame,
8992
+ itemSurface: "none",
8993
+ heroTypographyScale: "display",
8994
+ eyebrowTreatment: "accent-pill-bounce"
8995
+ }
8996
+ }), defineBlockAppearancePreset({
8997
+ id: "hero-split-soft-panel",
8998
+ target: "hero",
8999
+ label: "Soft panel split hero",
9000
+ blockKinds: ["block.hero"],
9001
+ constraints: { layoutFamilies: ["split"] },
9002
+ design: {
9003
+ sectionSurface: "muted-band",
9004
+ contentFrame: panelFrame("raised"),
9005
+ itemSurface: "none",
9006
+ heroTypographyScale: "editorial"
9007
+ }
9008
+ }), defineBlockAppearancePreset({
9009
+ id: "hero-split-accent",
9010
+ target: "hero",
9011
+ label: "Accent split hero",
9012
+ blockKinds: ["block.hero"],
9013
+ constraints: { layoutFamilies: ["split"] },
9014
+ design: {
9015
+ sectionSurface: "accent-band",
9016
+ contentFrame: panelFrame("raised"),
9017
+ itemSurface: "none",
9018
+ heroTypographyScale: "display"
9019
+ }
9020
+ }), defineBlockAppearancePreset({
9021
+ id: "intro-editorial-statement",
9022
+ target: "intro",
9023
+ label: "Editorial intro statement",
9024
+ blockKinds: ["block.intro"],
9025
+ constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
9026
+ design: {
9027
+ sectionSurface: "base",
9028
+ contentFrame: plainFrame,
9029
+ itemSurface: "none",
9030
+ composition: {
9031
+ kind: "intro",
9032
+ treatment: "editorial-statement"
9033
+ }
9034
+ }
9035
+ }), defineBlockAppearancePreset({
9036
+ id: "intro-portrait-bio",
9037
+ target: "intro",
9038
+ label: "Portrait and bio",
9039
+ blockKinds: ["block.intro"],
9040
+ constraints: { layoutVariantKeys: ["media-copy"] },
9041
+ design: {
9042
+ sectionSurface: "base",
9043
+ contentFrame: plainFrame,
9044
+ itemSurface: "none",
9045
+ composition: {
9046
+ kind: "intro",
9047
+ treatment: "portrait-bio"
9048
+ }
9049
+ }
9050
+ }), defineBlockAppearancePreset({
9051
+ id: "offerings-preview-default-cards",
9052
+ target: "offerings",
9053
+ label: "Default offering cards",
9054
+ blockKinds: ["block.offerings-preview"],
9055
+ design: {
9056
+ sectionSurface: "base",
9057
+ contentFrame: plainFrame,
9058
+ itemSurface: "default"
9059
+ }
9060
+ }), defineBlockAppearancePreset({
9061
+ id: "offerings-preview-secondary-cards",
9062
+ target: "offerings",
9063
+ label: "Secondary offering cards",
9064
+ blockKinds: ["block.offerings-preview"],
9065
+ design: {
9066
+ sectionSurface: "muted-band",
9067
+ contentFrame: plainFrame,
9068
+ itemSurface: "inset"
9069
+ }
9070
+ }), defineBlockAppearancePreset({
9071
+ id: "offerings-preview-non-carded",
9072
+ target: "offerings",
9073
+ label: "Non-carded offerings",
9074
+ blockKinds: ["block.offerings-preview"],
9075
+ design: {
9076
+ sectionSurface: "muted-band",
9077
+ contentFrame: plainFrame,
9078
+ itemSurface: "editorial"
9079
+ }
9080
+ }), defineBlockAppearancePreset({
9081
+ id: "offerings-preview-paired-feature-cards",
9082
+ target: "offerings",
9083
+ label: "Paired feature cards",
9084
+ blockKinds: ["block.offerings-preview"],
9085
+ constraints: { layoutVariantKeys: ["cards"] },
9086
+ design: {
9087
+ sectionSurface: "base",
9088
+ contentFrame: plainFrame,
9089
+ itemSurface: "none"
9090
+ }
9091
+ }), defineBlockAppearancePreset({
9092
+ id: "offerings-preview-open-editorial-columns",
9093
+ target: "offerings",
9094
+ label: "Open editorial columns",
9095
+ blockKinds: ["block.offerings-preview"],
9096
+ constraints: { layoutVariantKeys: ["cards"] },
9097
+ design: {
9098
+ sectionSurface: "base",
9099
+ contentFrame: plainFrame,
9100
+ itemSurface: "none"
9101
+ }
9102
+ }), defineBlockAppearancePreset({
9103
+ id: "offerings-preview-joined-programme-panel",
9104
+ target: "offerings",
9105
+ label: "Joined programme panel",
9106
+ blockKinds: ["block.offerings-preview"],
9107
+ constraints: { layoutVariantKeys: ["cards"] },
9108
+ design: {
9109
+ sectionSurface: "base",
9110
+ contentFrame: plainFrame,
9111
+ itemSurface: "none"
9112
+ }
9113
+ }), defineBlockAppearancePreset({
9114
+ id: "feature-cards-raised-rule",
9115
+ target: "feature-cards",
9116
+ label: "Raised cards with rule",
9117
+ blockKinds: ["block.feature-cards"],
9118
+ design: {
9119
+ sectionSurface: "base",
9120
+ contentFrame: plainFrame,
9121
+ itemSurface: "raised"
9122
+ }
9123
+ }), defineBlockAppearancePreset({
9124
+ id: "feature-cards-bold-colors",
9125
+ target: "feature-cards",
9126
+ label: "Bold colour-blocked cards",
9127
+ blockKinds: ["block.feature-cards"],
9128
+ design: {
9129
+ sectionSurface: "base",
9130
+ contentFrame: plainFrame,
9131
+ itemSurface: "color-blocked"
9132
+ }
9133
+ }), defineBlockAppearancePreset({
9134
+ id: "feature-cards-editorial-columns",
9135
+ target: "feature-cards",
9136
+ label: "Editorial open columns",
9137
+ blockKinds: ["block.feature-cards"],
9138
+ design: {
9139
+ sectionSurface: "base",
9140
+ contentFrame: plainFrame,
9141
+ itemSurface: "editorial"
9142
+ }
9143
+ }), defineBlockAppearancePreset({
9144
+ id: "feature-cards-asymmetric-emphasis",
9145
+ target: "feature-cards",
9146
+ label: "Asymmetric emphasis pair",
9147
+ blockKinds: ["block.feature-cards"],
9148
+ constraints: { layoutFamilies: ["grid"] },
9149
+ design: {
9150
+ sectionSurface: "base",
9151
+ contentFrame: plainFrame,
9152
+ itemSurface: "none",
9153
+ composition: {
9154
+ kind: "feature-cards",
9155
+ treatment: "asymmetric-emphasis"
9156
+ }
9157
+ }
9158
+ }), defineBlockAppearancePreset({
9159
+ id: "feature-cards-framed-programme",
9160
+ target: "feature-cards",
9161
+ label: "Framed programme cards",
9162
+ blockKinds: ["block.feature-cards"],
9163
+ constraints: { layoutFamilies: ["grid"] },
9164
+ design: {
9165
+ sectionSurface: "brand-depth-band",
9166
+ contentFrame: plainFrame,
9167
+ itemSurface: "inset",
9168
+ composition: {
9169
+ kind: "feature-cards",
9170
+ treatment: "framed-programme"
9171
+ }
9172
+ }
9173
+ }), defineBlockAppearancePreset({
9174
+ id: "feature-cards-soft-panels",
9175
+ target: "feature-cards",
9176
+ label: "Soft tinted panels",
9177
+ blockKinds: ["block.feature-cards"],
9178
+ design: {
9179
+ sectionSurface: "base",
9180
+ contentFrame: plainFrame,
9181
+ itemSurface: "inset"
9182
+ }
9183
+ }), defineBlockAppearancePreset({
9184
+ id: "feature-cards-editorial-diptych",
9185
+ target: "feature-cards",
9186
+ label: "Editorial diptych",
9187
+ blockKinds: ["block.feature-cards"],
9188
+ constraints: { layoutVariantKeys: ["editorial-diptych"] },
9189
+ design: {
9190
+ sectionSurface: "base",
9191
+ contentFrame: plainFrame,
9192
+ itemSurface: "flat"
9193
+ }
9194
+ }), defineBlockAppearancePreset({
9195
+ id: "feature-cards-editorial-pathways",
9196
+ target: "feature-cards",
9197
+ label: "Editorial pathways",
9198
+ blockKinds: ["block.feature-cards"],
9199
+ constraints: { layoutVariantKeys: ["editorial-pathways"] },
9200
+ design: {
9201
+ sectionSurface: "base",
9202
+ contentFrame: plainFrame,
9203
+ itemSurface: "flat"
9204
+ }
9205
+ }), defineBlockAppearancePreset({
9206
+ id: "feature-cards-photo-tiles",
9207
+ target: "feature-cards",
9208
+ label: "Photo tiles",
9209
+ blockKinds: ["block.feature-cards"],
9210
+ design: {
9211
+ sectionSurface: "base",
9212
+ contentFrame: plainFrame,
9213
+ itemSurface: "raised"
9214
+ }
9215
+ }), defineBlockAppearancePreset({
9216
+ id: "events-lined-panel",
9217
+ target: "events",
9218
+ label: "Raised event panel",
9219
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9220
+ design: {
9221
+ sectionSurface: "base",
9222
+ contentFrame: panelFrame("raised"),
9223
+ itemSurface: "none"
9224
+ }
9225
+ }), defineBlockAppearancePreset({
9226
+ id: "events-ruled-register",
9227
+ target: "events",
9228
+ label: "Ruled event register",
9229
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9230
+ design: {
9231
+ sectionSurface: "brand-depth-band",
9232
+ contentFrame: plainFrame,
9233
+ itemSurface: "none",
9234
+ eventListTreatment: "ruled-register"
9235
+ }
9236
+ }), defineBlockAppearancePreset({
9237
+ id: "events-editorial-register",
9238
+ target: "events",
9239
+ label: "Editorial event register",
9240
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9241
+ design: {
9242
+ sectionSurface: "base",
9243
+ contentFrame: plainFrame,
9244
+ itemSurface: "none",
9245
+ eventListTreatment: "editorial-register"
9246
+ }
9247
+ }), defineBlockAppearancePreset({
9248
+ id: "events-dense-index",
9249
+ target: "events",
9250
+ label: "Dense event index",
9251
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9252
+ design: {
9253
+ sectionSurface: "accent-band",
9254
+ contentFrame: plainFrame,
9255
+ itemSurface: "none",
9256
+ eventListTreatment: "dense-index"
9257
+ }
9258
+ }), defineBlockAppearancePreset({
9259
+ id: "schedule-details-brand-depth",
9260
+ target: "events",
9261
+ label: "Brand-depth schedule details",
9262
+ blockKinds: ["block.event-details", "block.course-details"],
9263
+ design: {
9264
+ sectionSurface: "brand-depth-band",
9265
+ contentFrame: plainFrame,
9266
+ itemSurface: "none",
9267
+ tileTreatment: "brand-depth"
9268
+ }
9269
+ }), defineBlockAppearancePreset({
9270
+ id: "media-text-flush-feature",
9271
+ target: "media-text",
9272
+ label: "Flush media feature",
9273
+ blockKinds: ["block.media-text"],
9274
+ design: {
9275
+ sectionSurface: "muted-band",
9276
+ contentFrame: flushPanelFrame({ bleed: "start" }),
9277
+ itemSurface: "none"
9278
+ }
9279
+ }), defineBlockAppearancePreset({
9280
+ id: "testimonials-simple-cards",
9281
+ target: "testimonials",
9282
+ label: "Simple testimonial cards",
9283
+ blockKinds: ["block.testimonials"],
9284
+ design: {
9285
+ sectionSurface: "base",
9286
+ contentFrame: plainFrame,
9287
+ itemSurface: "default"
9288
+ }
9289
+ }), defineBlockAppearancePreset({
9290
+ id: "testimonials-raised-panel",
9291
+ target: "testimonials",
9292
+ label: "Raised testimonial panel",
9293
+ blockKinds: ["block.testimonials"],
9294
+ design: {
9295
+ sectionSurface: "muted-band",
9296
+ contentFrame: panelFrame("raised"),
9297
+ itemSurface: "raised"
9298
+ }
9299
+ }), defineBlockAppearancePreset({
9300
+ id: "testimonials-accent-panel",
9301
+ target: "testimonials",
9302
+ label: "Accent testimonial panel",
9303
+ blockKinds: ["block.testimonials"],
9304
+ design: {
9305
+ sectionSurface: "accent-band",
9306
+ contentFrame: panelFrame("raised"),
9307
+ itemSurface: "raised"
9308
+ }
9309
+ }), defineBlockAppearancePreset({
9310
+ id: "testimonials-default-cards",
9311
+ target: "testimonials",
9312
+ label: "Default cards",
9313
+ blockKinds: ["block.testimonials"],
9314
+ design: {
9315
+ sectionSurface: "base",
9316
+ contentFrame: plainFrame,
9317
+ itemSurface: "none",
9318
+ testimonialCardTreatment: "default"
9319
+ }
9320
+ }), defineBlockAppearancePreset({
9321
+ id: "testimonials-statement-cards",
9322
+ target: "testimonials",
9323
+ label: "Statement cards",
9324
+ blockKinds: ["block.testimonials"],
9325
+ design: {
9326
+ sectionSurface: "accent-band",
9327
+ contentFrame: plainFrame,
9328
+ itemSurface: "raised",
9329
+ testimonialCardTreatment: "statement"
9330
+ }
9331
+ }), defineBlockAppearancePreset({
9332
+ id: "testimonials-brand-statement-cards",
9333
+ target: "testimonials",
9334
+ label: "Brand statement cards",
9335
+ blockKinds: ["block.testimonials"],
9336
+ design: {
9337
+ sectionSurface: "brand-depth-band",
9338
+ contentFrame: plainFrame,
9339
+ itemSurface: "raised",
9340
+ testimonialCardTreatment: "statement"
9341
+ }
9342
+ }), defineBlockAppearancePreset({
9343
+ id: "testimonials-non-carded",
9344
+ target: "testimonials",
9345
+ label: "Non-carded",
9346
+ blockKinds: ["block.testimonials"],
9347
+ design: {
9348
+ sectionSurface: "muted-band",
9349
+ contentFrame: plainFrame,
9350
+ itemSurface: "none",
9351
+ testimonialCardTreatment: "non-carded"
9352
+ }
9353
+ }), defineBlockAppearancePreset({
9354
+ id: "testimonials-evergreen-lead",
9355
+ target: "testimonials",
9356
+ label: "Evergreen lead",
9357
+ blockKinds: ["block.testimonials"],
9358
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9359
+ design: {
9360
+ sectionSurface: "base",
9361
+ contentFrame: plainFrame,
9362
+ itemSurface: "none"
9363
+ }
9364
+ }), defineBlockAppearancePreset({
9365
+ id: "testimonials-room-and-response",
9366
+ target: "testimonials",
9367
+ label: "Room and response",
9368
+ blockKinds: ["block.testimonials"],
9369
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9370
+ design: {
9371
+ sectionSurface: "base",
9372
+ contentFrame: plainFrame,
9373
+ itemSurface: "none"
9374
+ }
9375
+ }), defineBlockAppearancePreset({
9376
+ id: "testimonials-open-floor",
9377
+ target: "testimonials",
9378
+ label: "Open floor",
9379
+ blockKinds: ["block.testimonials"],
9380
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9381
+ design: {
9382
+ sectionSurface: "base",
9383
+ contentFrame: plainFrame,
9384
+ itemSurface: "none"
9385
+ }
9386
+ }), defineBlockAppearancePreset({
9387
+ id: "faq-base-accordion",
9388
+ target: "faq",
9389
+ label: "Base accordion FAQ",
9390
+ blockKinds: ["block.faq"],
9391
+ design: {
9392
+ sectionSurface: "base",
9393
+ contentFrame: plainFrame,
9394
+ itemSurface: "default"
9395
+ }
9396
+ }), defineBlockAppearancePreset({
9397
+ id: "faq-contained-help",
9398
+ target: "faq",
9399
+ label: "Contained help panel",
9400
+ blockKinds: ["block.faq"],
9401
+ design: {
9402
+ sectionSurface: "muted-band",
9403
+ contentFrame: panelFrame("inset"),
9404
+ itemSurface: "default"
9405
+ }
9406
+ }), defineBlockAppearancePreset({
9407
+ id: "contact-form-panel",
9408
+ target: "contact-form",
9409
+ label: "Raised form panel",
9410
+ blockKinds: ["block.form"],
9411
+ design: {
9412
+ sectionSurface: "muted-band",
9413
+ contentFrame: panelFrame("raised"),
9414
+ itemSurface: "none"
9415
+ }
9416
+ }), defineBlockAppearancePreset({
9417
+ id: "cta-accent-band",
9418
+ target: "cta",
9419
+ label: "Accent CTA band",
9420
+ blockKinds: ["block.cta-full"],
9421
+ design: {
9422
+ sectionSurface: "accent-band",
9423
+ contentFrame: plainFrame,
9424
+ itemSurface: "none",
9425
+ eyebrowTreatment: "accent"
9426
+ }
9427
+ });
9493
9428
  //#endregion
9494
9429
  //#region ../theme-core/src/site-styles/headerCtaVariants.ts
9495
9430
  function hasButtonVariant(theme, variantId) {
@@ -9570,6 +9505,27 @@ function uniqueStrings(values) {
9570
9505
  return Array.from(new Set(values));
9571
9506
  }
9572
9507
  //#endregion
9508
+ //#region ../theme-core/src/site-styles/headerInteractionPalette.ts
9509
+ const clearSplitInteractionPalette = defineLookOptionGroup({
9510
+ id: "interaction-palette",
9511
+ label: "Hover colour",
9512
+ defaultOptionId: "accent",
9513
+ options: [
9514
+ {
9515
+ id: "accent",
9516
+ label: "Accent"
9517
+ },
9518
+ {
9519
+ id: "primary",
9520
+ label: "Primary"
9521
+ },
9522
+ {
9523
+ id: "secondary",
9524
+ label: "Secondary"
9525
+ }
9526
+ ]
9527
+ });
9528
+ //#endregion
9573
9529
  //#region ../theme-core/src/site-styles/headerLooks.ts
9574
9530
  function asHeaderLookId(value) {
9575
9531
  return value;
@@ -9703,7 +9659,7 @@ const overlayLogoAccommodations = [
9703
9659
  * optional nested styling fields that would otherwise leak from another Look.
9704
9660
  */
9705
9661
  function baseHeader(theme) {
9706
- 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;
9662
+ 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;
9707
9663
  return {
9708
9664
  ...header,
9709
9665
  navContainer: {
@@ -9718,7 +9674,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9718
9674
  id: asHeaderLayoutId("classic"),
9719
9675
  label: "Classic",
9720
9676
  description: "Logo and navigation in one practical horizontal row.",
9721
- structure: "inline-classic",
9722
9677
  variant: "classic",
9723
9678
  defaultPositioning: "sticky",
9724
9679
  shrinkOnScroll: false
@@ -9727,7 +9682,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9727
9682
  id: asHeaderLayoutId("centered"),
9728
9683
  label: "Centered",
9729
9684
  description: "Logo centered above a balanced navigation row.",
9730
- structure: "centered-stack",
9731
9685
  variant: "centered",
9732
9686
  defaultPositioning: "static",
9733
9687
  shrinkOnScroll: false,
@@ -9743,7 +9697,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9743
9697
  id: asHeaderLayoutId("floating"),
9744
9698
  label: "Floating",
9745
9699
  description: "Detached header chrome that sits over the opening section.",
9746
- structure: "floating-shell",
9747
9700
  variant: "floating",
9748
9701
  defaultPositioning: "sticky",
9749
9702
  shrinkOnScroll: true,
@@ -9905,10 +9858,13 @@ const headerStyleCatalog = defineExactCatalog()([
9905
9858
  label: "Clear Split",
9906
9859
  description: "Floating logo with transparent navigation and no shared shell.",
9907
9860
  supportedLayoutIds: supportedLayouts(["floating"]),
9908
- navInteraction: "color-change",
9861
+ navInteraction: "pill-background",
9909
9862
  surface: "floating",
9910
- defaultDepth: "none",
9863
+ defaultDepth: "line",
9911
9864
  navTypography: "plain",
9865
+ openingForegroundTarget: "all",
9866
+ scrollTreatment: "contrast-glass",
9867
+ interactionPalette: clearSplitInteractionPalette,
9912
9868
  moods: ["editorial", "calm"]
9913
9869
  },
9914
9870
  {
@@ -9931,6 +9887,7 @@ const headerStyleCatalog = defineExactCatalog()([
9931
9887
  surface: "floating",
9932
9888
  defaultDepth: "shadow",
9933
9889
  navTypography: "quiet-caps",
9890
+ openingForegroundTarget: "brand-only",
9934
9891
  moods: ["expressive"]
9935
9892
  },
9936
9893
  {
@@ -9942,6 +9899,7 @@ const headerStyleCatalog = defineExactCatalog()([
9942
9899
  surface: "floating",
9943
9900
  defaultDepth: "shadow",
9944
9901
  navTypography: "heading",
9902
+ openingForegroundTarget: "brand-only",
9945
9903
  moods: ["calm", "editorial"]
9946
9904
  }
9947
9905
  ]);
@@ -10443,13 +10401,6 @@ const headerLookCatalog = defineExactCatalog()([
10443
10401
  {
10444
10402
  id: asHeaderLookId("clean-base"),
10445
10403
  label: "Clean base",
10446
- visualTreatment: "solid-neutral",
10447
- layoutBehavior: "sticky",
10448
- configuration: {
10449
- structure: "inline-classic",
10450
- treatment: "solid-neutral",
10451
- behavior: "sticky"
10452
- },
10453
10404
  openingRequirement: "none",
10454
10405
  logoAccommodations: inlineClassicLogoAccommodations,
10455
10406
  compile: cleanBaseHeader
@@ -10457,13 +10408,6 @@ const headerLookCatalog = defineExactCatalog()([
10457
10408
  {
10458
10409
  id: asHeaderLookId("classic-centered-nav"),
10459
10410
  label: "Centered nav",
10460
- visualTreatment: "solid-neutral",
10461
- layoutBehavior: "sticky",
10462
- configuration: {
10463
- structure: "inline-classic",
10464
- treatment: "solid-neutral",
10465
- behavior: "sticky"
10466
- },
10467
10411
  openingRequirement: "none",
10468
10412
  maxRecommendedNavItems: 6,
10469
10413
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -10472,13 +10416,6 @@ const headerLookCatalog = defineExactCatalog()([
10472
10416
  {
10473
10417
  id: asHeaderLookId("brand-solid"),
10474
10418
  label: "Brand solid",
10475
- visualTreatment: "solid-brand",
10476
- layoutBehavior: "sticky-shrink",
10477
- configuration: {
10478
- structure: "inline-classic",
10479
- treatment: "solid-brand",
10480
- behavior: "sticky-shrink"
10481
- },
10482
10419
  openingRequirement: "none",
10483
10420
  logoAccommodations: inlineClassicLogoAccommodations,
10484
10421
  compile: solidBrandHeader
@@ -10486,13 +10423,6 @@ const headerLookCatalog = defineExactCatalog()([
10486
10423
  {
10487
10424
  id: asHeaderLookId("serif-line"),
10488
10425
  label: "Serif line",
10489
- visualTreatment: "light-serif",
10490
- layoutBehavior: "sticky",
10491
- configuration: {
10492
- structure: "centered-stack",
10493
- treatment: "light-serif",
10494
- behavior: "sticky"
10495
- },
10496
10426
  openingRequirement: "none",
10497
10427
  maxRecommendedNavItems: 6,
10498
10428
  logoAccommodations: centeredLogoAccommodations,
@@ -10501,13 +10431,6 @@ const headerLookCatalog = defineExactCatalog()([
10501
10431
  {
10502
10432
  id: asHeaderLookId("centered-calm"),
10503
10433
  label: "Centered calm",
10504
- visualTreatment: "light-serif",
10505
- layoutBehavior: "normal-flow",
10506
- configuration: {
10507
- structure: "centered-stack",
10508
- treatment: "light-serif",
10509
- behavior: "normal-flow"
10510
- },
10511
10434
  openingRequirement: "none",
10512
10435
  maxRecommendedNavItems: 5,
10513
10436
  logoAccommodations: centeredLogoAccommodations,
@@ -10516,13 +10439,6 @@ const headerLookCatalog = defineExactCatalog()([
10516
10439
  {
10517
10440
  id: asHeaderLookId("practical-utility"),
10518
10441
  label: "Practical utility",
10519
- visualTreatment: "solid-neutral",
10520
- layoutBehavior: "sticky-shrink",
10521
- configuration: {
10522
- structure: "inline-classic",
10523
- treatment: "solid-neutral",
10524
- behavior: "sticky-shrink"
10525
- },
10526
10442
  openingRequirement: "none",
10527
10443
  requiresProminentCta: true,
10528
10444
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -10531,13 +10447,6 @@ const headerLookCatalog = defineExactCatalog()([
10531
10447
  {
10532
10448
  id: asHeaderLookId("minimal-transparent"),
10533
10449
  label: "Minimal transparent",
10534
- visualTreatment: "minimal-transparent",
10535
- layoutBehavior: "normal-flow",
10536
- configuration: {
10537
- structure: "inline-classic",
10538
- treatment: "minimal-transparent",
10539
- behavior: "normal-flow"
10540
- },
10541
10450
  openingRequirement: "reserved-space-ok",
10542
10451
  logoAccommodations: inlineClassicLogoAccommodations,
10543
10452
  compile: minimalTransparentHeader
@@ -10545,13 +10454,6 @@ const headerLookCatalog = defineExactCatalog()([
10545
10454
  {
10546
10455
  id: asHeaderLookId("transparent-overlay"),
10547
10456
  label: "Transparent overlay",
10548
- visualTreatment: "transparent-overlay",
10549
- layoutBehavior: "fixed-overlay",
10550
- configuration: {
10551
- structure: "inline-classic",
10552
- treatment: "transparent-overlay",
10553
- behavior: "fixed-overlay"
10554
- },
10555
10457
  openingRequirement: "requires-image-hero-with-contrast-overlay",
10556
10458
  maxRecommendedNavItems: 5,
10557
10459
  logoAccommodations: overlayLogoAccommodations,
@@ -10560,24 +10462,13 @@ const headerLookCatalog = defineExactCatalog()([
10560
10462
  {
10561
10463
  id: asHeaderLookId("floating-glass"),
10562
10464
  label: "Floating glass",
10563
- visualTreatment: "floating-glass",
10564
- layoutBehavior: "fixed-floating",
10565
- configuration: {
10566
- structure: "floating-shell",
10567
- treatment: "floating-glass",
10568
- behavior: "fixed-floating"
10569
- },
10570
10465
  openingRequirement: "requires-image-hero-with-contrast-overlay",
10571
10466
  maxRecommendedNavItems: 5,
10572
10467
  logoAccommodations: overlayLogoAccommodations,
10573
10468
  compile: floatingGlassHeader
10574
10469
  }
10575
10470
  ]);
10576
- new Set(headerLookCatalog.map((look) => headerConfigurationKey(look.configuration)));
10577
10471
  new Map(headerLookCatalog.map((look) => [look.id, look]));
10578
- function headerConfigurationKey(configuration) {
10579
- return `${configuration.structure}:${configuration.treatment}:${configuration.behavior}`;
10580
- }
10581
10472
  //#endregion
10582
10473
  //#region ../theme-core/src/site-styles/sectionTransitions.ts
10583
10474
  function boundaryRuntimeMetrics(family, size, heightExpression) {
@@ -14186,28 +14077,6 @@ z$1.object({
14186
14077
  spacing: z$1.enum(themeTokenRecipeOptions.spacing),
14187
14078
  motion: z$1.enum(themeTokenRecipeOptions.motion)
14188
14079
  });
14189
- const BREAKPOINT_LG = 1024;
14190
- const BREAKPOINT_XL = 1280;
14191
- const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
14192
- function mqUp(px) {
14193
- return `(min-width: ${px}px)`;
14194
- }
14195
- function mqDown(px) {
14196
- return `(max-width: ${px}px)`;
14197
- }
14198
- function mqBetween(minPx, maxPx) {
14199
- return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
14200
- }
14201
- mqUp(640);
14202
- mqUp(768);
14203
- mqUp(BREAKPOINT_LG);
14204
- mqUp(BREAKPOINT_XL);
14205
- mqDown(639);
14206
- mqDown(767);
14207
- mqDown(BREAKPOINT_LG_DOWN);
14208
- mqBetween(640, BREAKPOINT_LG_DOWN);
14209
- mqDown(640);
14210
- mqDown(768);
14211
14080
  //#endregion
14212
14081
  //#region ../theme-core/src/siteChromeOverlayClearance.ts
14213
14082
  const SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
@@ -18300,15 +18169,6 @@ const heroLayoutControlsFragment = defineFragment({
18300
18169
  */
18301
18170
  const BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
18302
18171
  const blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
18303
- /**
18304
- * Temporary rollout boundary for persisted content written before issue #1220.
18305
- * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
18306
- * only until the post-deploy role rewrite has been audited in production.
18307
- */
18308
- function canonicalizePersistedBlockButtonRole(value) {
18309
- return value === "link" || value === "tertiary" ? "ghost" : value;
18310
- }
18311
- const persistedBlockButtonRoleSchema = z$1.preprocess((value) => typeof value === "string" ? canonicalizePersistedBlockButtonRole(value) : value, blockButtonRoleSchema);
18312
18172
  const BLOCK_BUTTON_ROLE_LABELS = {
18313
18173
  primary: "Primary",
18314
18174
  secondary: "Secondary",
@@ -25550,6 +25410,12 @@ const mediaBaseSchema = z.object({
25550
25410
  poster: mediaPosterSchema.optional(),
25551
25411
  transform: transformSchema.optional()
25552
25412
  });
25413
+ /**
25414
+ * Canonical identifier carried by media values that are safe to persist.
25415
+ * Parsing trims boundary input so downstream writers cannot retain whitespace-only
25416
+ * identifiers or independently disagree about normalization.
25417
+ */
25418
+ const mediaIdentifierSchema = z.string().trim().min(1).brand();
25553
25419
  const imageMediaSchema = mediaBaseSchema.extend({ type: z.literal("image") });
25554
25420
  const videoMediaSchema = mediaBaseSchema.extend({ type: z.literal("video") });
25555
25421
  const audioMediaSchema = mediaBaseSchema.extend({ type: z.literal("audio") });
@@ -25564,6 +25430,15 @@ const mediaSchema = z.discriminatedUnion("type", [
25564
25430
  spreadsheetMediaSchema,
25565
25431
  archiveMediaSchema
25566
25432
  ]);
25433
+ const persistableMediaBaseSchema = mediaBaseSchema.extend({ identifier: mediaIdentifierSchema });
25434
+ z.discriminatedUnion("type", [
25435
+ persistableMediaBaseSchema.extend({ type: z.literal("image") }),
25436
+ persistableMediaBaseSchema.extend({ type: z.literal("video") }),
25437
+ persistableMediaBaseSchema.extend({ type: z.literal("audio") }),
25438
+ persistableMediaBaseSchema.extend({ type: z.literal("document") }),
25439
+ persistableMediaBaseSchema.extend({ type: z.literal("spreadsheet") }),
25440
+ persistableMediaBaseSchema.extend({ type: z.literal("archive") })
25441
+ ]);
25567
25442
  //#endregion
25568
25443
  //#region ../blocks/src/system/manifest/richTextSchema.ts
25569
25444
  /**
@@ -26677,7 +26552,7 @@ function isEventCalendarListLayout(value) {
26677
26552
  //#region ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
26678
26553
  const previewStageSchema = z$1.enum(["preview", "published"]);
26679
26554
  const registrationButtonVariantSchema = blockButtonRoleSchema;
26680
- const eventButtonVariantSchema = persistedBlockButtonRoleSchema;
26555
+ const eventButtonVariantSchema = blockButtonRoleSchema;
26681
26556
  const eventLayoutSchema = z$1.enum(eventCalendarListLayoutValues);
26682
26557
  const eventCalendarDisplayModeSchema = z$1.enum(eventCalendarDisplayModeValues);
26683
26558
  const eventCalendarDefaultViewSchema = z$1.enum(eventCalendarDefaultViewValues);