@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
@@ -2954,6 +2954,21 @@ const themeColorTokenSchema = z$1.string().min(1).refine((value) => Boolean(isTh
2954
2954
  //#region ../theme-core/src/palette/colors.ts
2955
2955
  const HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
2956
2956
  const NORMALIZABLE_HEX_REGEX = /^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i;
2957
+ const THEME_PALETTE_COLOR_ORDER = [
2958
+ "primary",
2959
+ "secondary",
2960
+ "accent",
2961
+ "success",
2962
+ "warning",
2963
+ "destructive",
2964
+ "background",
2965
+ "surface",
2966
+ "surfaceAlt",
2967
+ "muted",
2968
+ "text",
2969
+ "primaryForeground",
2970
+ "border"
2971
+ ];
2957
2972
  const hexColorSchema = z$1.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
2958
2973
  const paletteModeSchema = z$1.enum(["light", "dark"]);
2959
2974
  const PALETTE_VALUE_KEY_PREFIX = "palette-value:v1|";
@@ -3031,6 +3046,12 @@ function requirePaletteColorsFromEntries(entries) {
3031
3046
  if (result.ok) return result.colors;
3032
3047
  throw new Error(`Invalid complete palette: ${result.error.kind}`);
3033
3048
  }
3049
+ function paletteColorEntries(colors) {
3050
+ return THEME_PALETTE_COLOR_ORDER.map((name) => ({
3051
+ name,
3052
+ hex: colors[name]
3053
+ }));
3054
+ }
3034
3055
  function paletteColorFingerprint(colors) {
3035
3056
  return PALETTE_TOKEN_NAMES.map((name) => `${name}:${colors[name]}`).join("|");
3036
3057
  }
@@ -3038,7 +3059,7 @@ function canonicalPaletteHashInput(colors, mode) {
3038
3059
  return `${mode}|${paletteColorFingerprint(colors)}`;
3039
3060
  }
3040
3061
  /**
3041
- * The shared TypeScript/SQL protocol. Do not reorder roles: the order comes
3062
+ * Stable curated-catalogue identity. Do not reorder roles: the order comes
3042
3063
  * from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
3043
3064
  */
3044
3065
  function paletteValueKey(colors, mode) {
@@ -4364,13 +4385,6 @@ const warmDarkKirtanGold = defineCuratedPalette({
4364
4385
  });
4365
4386
  //#endregion
4366
4387
  //#region ../theme-core/src/palette/curated/index.ts
4367
- /**
4368
- * Curated palette library.
4369
- *
4370
- * Authoring keys are readable source aliases. Value keys are derived from the
4371
- * complete mode and semantic colours and are the only curated identity used at
4372
- * persistence and runtime boundaries.
4373
- */
4374
4388
  function admitCuratedPaletteDefinition(definition) {
4375
4389
  return {
4376
4390
  ...definition,
@@ -4397,11 +4411,8 @@ const curatedPalettes = [
4397
4411
  admitCuratedPaletteDefinition(warmDarkEmber),
4398
4412
  admitCuratedPaletteDefinition(warmDarkKirtanGold)
4399
4413
  ];
4400
- const curatedPalettesByValueKey = new Map(curatedPalettes.map((palette) => [palette.valueKey, palette]));
4414
+ new Map(curatedPalettes.map((palette) => [palette.valueKey, palette]));
4401
4415
  const curatedPalettesByAuthoringKey = new Map(curatedPalettes.map((palette) => [palette.authoringKey, palette]));
4402
- function findCuratedPalette(valueKey) {
4403
- return curatedPalettesByValueKey.get(valueKey);
4404
- }
4405
4416
  function findCuratedPaletteByAuthoringKey(authoringKey) {
4406
4417
  return curatedPalettesByAuthoringKey.get(authoringKey);
4407
4418
  }
@@ -4410,87 +4421,6 @@ function requireCuratedPaletteValueKey(authoringKey) {
4410
4421
  if (!palette) throw new Error(`Unknown curated palette authoring key "${authoringKey}"`);
4411
4422
  return palette.valueKey;
4412
4423
  }
4413
- /** Parses a raw persisted key into catalogue-proven curated membership. */
4414
- const knownCuratedPaletteValueKeySchema = z$1.string().transform((value, ctx) => {
4415
- const valueKey = parsePaletteValueKey(value);
4416
- if (!valueKey) {
4417
- ctx.addIssue({
4418
- code: "custom",
4419
- message: "Invalid canonical palette value key"
4420
- });
4421
- return z$1.NEVER;
4422
- }
4423
- const palette = findCuratedPalette(valueKey);
4424
- if (!palette) {
4425
- ctx.addIssue({
4426
- code: "custom",
4427
- message: "Unknown curated palette value key"
4428
- });
4429
- return z$1.NEVER;
4430
- }
4431
- return palette.valueKey;
4432
- });
4433
- //#endregion
4434
- //#region ../theme-core/src/palette/selection.ts
4435
- const sitePaletteIdSchema = z$1.string().uuid().transform((value) => value);
4436
- const sitePaletteVersionSchema = z$1.number().int().nonnegative().transform((value) => value);
4437
- const paletteSelectionSchema = z$1.discriminatedUnion("kind", [z$1.object({
4438
- kind: z$1.literal("curated"),
4439
- valueKey: knownCuratedPaletteValueKeySchema
4440
- }), z$1.object({
4441
- kind: z$1.literal("site"),
4442
- paletteId: sitePaletteIdSchema
4443
- })]);
4444
- const onboardingPaletteOriginSchema = z$1.object({
4445
- kind: z$1.literal("onboarding"),
4446
- sourceKey: z$1.string().min(1).nullable()
4447
- });
4448
- const curatedForkPaletteOriginSchema = z$1.object({
4449
- kind: z$1.literal("curated-fork"),
4450
- sourceValueKey: paletteValueKeySchema
4451
- });
4452
- const manualPaletteOriginSchema = z$1.object({ kind: z$1.literal("manual") });
4453
- const legacyCustomizedPaletteOriginSchema = z$1.object({
4454
- kind: z$1.literal("legacy-customized"),
4455
- sourceKey: z$1.string().min(1).nullable()
4456
- });
4457
- const sitePaletteOriginSchema = z$1.discriminatedUnion("kind", [
4458
- onboardingPaletteOriginSchema,
4459
- curatedForkPaletteOriginSchema,
4460
- manualPaletteOriginSchema,
4461
- legacyCustomizedPaletteOriginSchema
4462
- ]);
4463
- const editorSitePaletteOriginSchema = z$1.discriminatedUnion("kind", [z$1.object({
4464
- kind: z$1.literal("curated-fork"),
4465
- sourceValueKey: knownCuratedPaletteValueKeySchema
4466
- }), manualPaletteOriginSchema]);
4467
- z$1.object({
4468
- id: sitePaletteIdSchema,
4469
- colors: paletteColorsSchema,
4470
- mode: paletteModeSchema,
4471
- origin: sitePaletteOriginSchema,
4472
- version: sitePaletteVersionSchema
4473
- });
4474
- z$1.discriminatedUnion("kind", [
4475
- z$1.object({ kind: z$1.literal("preserve") }),
4476
- z$1.object({
4477
- kind: z$1.literal("select"),
4478
- selection: paletteSelectionSchema
4479
- }),
4480
- z$1.object({
4481
- kind: z$1.literal("create-site"),
4482
- colors: paletteColorsSchema,
4483
- mode: paletteModeSchema,
4484
- origin: editorSitePaletteOriginSchema
4485
- }),
4486
- z$1.object({
4487
- kind: z$1.literal("update-site"),
4488
- paletteId: sitePaletteIdSchema,
4489
- expectedVersion: sitePaletteVersionSchema,
4490
- colors: paletteColorsSchema,
4491
- mode: paletteModeSchema
4492
- })
4493
- ]);
4494
4424
  //#endregion
4495
4425
  //#region ../theme-core/src/lib/media.ts
4496
4426
  const hotspotSchema$1 = z.object({
@@ -4549,6 +4479,34 @@ const mediaSchema$1 = z.object({
4549
4479
  transform: transformSchema$1.optional()
4550
4480
  });
4551
4481
  //#endregion
4482
+ //#region ../theme-core/src/palette/schema.ts
4483
+ const colourHexString = z$1.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
4484
+ const paletteColorSchema = z$1.object({
4485
+ name: z$1.string().min(1),
4486
+ hex: colourHexString
4487
+ });
4488
+ const paletteMetaSchema = z$1.object({ mode: z$1.enum(["light", "dark"]) });
4489
+ const paletteSchema = z$1.object({
4490
+ colors: z$1.array(paletteColorSchema),
4491
+ meta: paletteMetaSchema
4492
+ }).transform((palette, ctx) => {
4493
+ const colors = paletteColorsFromEntries(palette.colors);
4494
+ if (!colors.ok) {
4495
+ ctx.addIssue({
4496
+ code: "custom",
4497
+ message: `Invalid complete palette: ${colors.error.kind}`
4498
+ });
4499
+ return z$1.NEVER;
4500
+ }
4501
+ return {
4502
+ colors: paletteColorEntries(colors.colors).map(({ name, hex }) => ({
4503
+ name: String(name),
4504
+ hex: String(hex)
4505
+ })),
4506
+ meta: palette.meta
4507
+ };
4508
+ });
4509
+ //#endregion
4552
4510
  //#region ../theme-core/src/buttons/types.ts
4553
4511
  /**
4554
4512
  * Standard semantic variant roles a theme exposes.
@@ -4561,8 +4519,6 @@ const VARIANT_ROLES = [
4561
4519
  "secondary",
4562
4520
  "outline",
4563
4521
  "ghost",
4564
- "link",
4565
- "tertiary",
4566
4522
  "accent"
4567
4523
  ];
4568
4524
  /**
@@ -4571,7 +4527,7 @@ const VARIANT_ROLES = [
4571
4527
  * IDs become class selectors, so keep the contract deliberately narrower than
4572
4528
  * an arbitrary string and shared with every authoring/runtime boundary.
4573
4529
  */
4574
- const buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only");
4530
+ 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" });
4575
4531
  function parseOpaqueButtonColourToken(value) {
4576
4532
  const token = parseThemeColorToken(value);
4577
4533
  if (token === null) return null;
@@ -4974,6 +4930,59 @@ function surfaceForegroundStyle(input) {
4974
4930
  [SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting
4975
4931
  };
4976
4932
  }
4933
+ shadeBackgroundEffect({
4934
+ id: "darken-background",
4935
+ name: "Darken on Hover",
4936
+ description: "Darkens the background color on hover",
4937
+ label: "Darken Amount (shade step)",
4938
+ shadeDirection: 1
4939
+ });
4940
+ shadeBackgroundEffect({
4941
+ id: "lighten-background",
4942
+ name: "Lighten on Hover",
4943
+ description: "Lightens the background color on hover",
4944
+ label: "Lighten Amount (shade step)",
4945
+ shadeDirection: -1
4946
+ });
4947
+ function shadeBackgroundEffect(config) {
4948
+ return {
4949
+ id: config.id,
4950
+ name: config.name,
4951
+ description: config.description,
4952
+ category: "background",
4953
+ pseudoElement: "none",
4954
+ applicableTo: ["button"],
4955
+ customizableOption: {
4956
+ name: "amount",
4957
+ type: "select",
4958
+ label: config.label,
4959
+ default: 100,
4960
+ options: [
4961
+ 0,
4962
+ 100,
4963
+ 200,
4964
+ 300,
4965
+ 400,
4966
+ 500,
4967
+ 600,
4968
+ 700,
4969
+ 800,
4970
+ 900
4971
+ ]
4972
+ },
4973
+ isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
4974
+ generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
4975
+ if (buttonConfig.background.type !== "solid") return "";
4976
+ const amount = (options.amount || 100) * config.shadeDirection;
4977
+ const baseToken = buttonConfig.background.colorToken ?? "primary-500";
4978
+ return `
4979
+ :where([data-theme-scope="${themeId}"]) .${variantId}:hover {
4980
+ background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
4981
+ }
4982
+ `;
4983
+ }
4984
+ };
4985
+ }
4977
4986
  buttonSizeNameSchema.options;
4978
4987
  //#endregion
4979
4988
  //#region ../theme-core/src/buttons/styles/domain.ts
@@ -7787,6 +7796,60 @@ function resolveThemeColorReferenceValue(input, context) {
7787
7796
  const reference = parseThemeColorReference(input, context);
7788
7797
  return reference.kind === "literal-css" ? reference.value : rgbColorValue(reference.token);
7789
7798
  }
7799
+ const BREAKPOINT_LG = 1024;
7800
+ const BREAKPOINT_XL = 1280;
7801
+ const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
7802
+ function mqUp(px) {
7803
+ return `(min-width: ${px}px)`;
7804
+ }
7805
+ function mqDown(px) {
7806
+ return `(max-width: ${px}px)`;
7807
+ }
7808
+ function mqBetween(minPx, maxPx) {
7809
+ return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
7810
+ }
7811
+ mqUp(640);
7812
+ mqUp(768);
7813
+ mqUp(BREAKPOINT_LG);
7814
+ mqUp(BREAKPOINT_XL);
7815
+ mqDown(639);
7816
+ mqDown(767);
7817
+ mqDown(BREAKPOINT_LG_DOWN);
7818
+ mqBetween(640, BREAKPOINT_LG_DOWN);
7819
+ mqDown(640);
7820
+ mqDown(768);
7821
+ //#endregion
7822
+ //#region ../theme-core/src/header/scrollTreatment.ts
7823
+ const headerScrollTreatmentSchema = z$1.discriminatedUnion("kind", [z$1.object({
7824
+ kind: z$1.literal("contrast-glass"),
7825
+ backgroundTone: z$1.enum(["light", "dark"])
7826
+ })]).optional();
7827
+ //#endregion
7828
+ //#region ../theme-core/src/header/containerSchema.ts
7829
+ const headerContainerSchema = z$1.object({
7830
+ rounded: z$1.enum([
7831
+ "none",
7832
+ "sm",
7833
+ "md",
7834
+ "lg",
7835
+ "xl",
7836
+ "2xl"
7837
+ ]).default("xl"),
7838
+ border: z$1.boolean().default(true),
7839
+ shadow: z$1.boolean().default(true),
7840
+ padding: z$1.enum([
7841
+ "sm",
7842
+ "md",
7843
+ "lg"
7844
+ ]).default("md"),
7845
+ tint: z$1.string().nullable().optional(),
7846
+ opacity: z$1.number().min(0).max(1).default(.12)
7847
+ }).optional();
7848
+ const headerInteractionPaletteSchema = z$1.enum([
7849
+ "primary",
7850
+ "secondary",
7851
+ "accent"
7852
+ ]);
7790
7853
  //#endregion
7791
7854
  //#region ../theme-core/src/schema.ts
7792
7855
  const axesSchema = z$1.object({
@@ -7817,16 +7880,6 @@ const axesSchema = z$1.object({
7817
7880
  "expressive"
7818
7881
  ])
7819
7882
  });
7820
- const colourHexString = z$1.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
7821
- const paletteColorSchema = z$1.object({
7822
- name: z$1.string().min(1),
7823
- hex: colourHexString
7824
- });
7825
- const paletteMetaSchema = z$1.object({ mode: z$1.enum(["light", "dark"]) });
7826
- const paletteSchema = z$1.object({
7827
- colors: z$1.array(paletteColorSchema),
7828
- meta: paletteMetaSchema
7829
- });
7830
7883
  const typographyStyleSchema = z$1.object({
7831
7884
  family: z$1.string().min(1),
7832
7885
  weight: z$1.enum([
@@ -8206,25 +8259,6 @@ const navFontWeight = z$1.enum([
8206
8259
  ]);
8207
8260
  const headerMaxWidth = z$1.enum(["container", "full"]);
8208
8261
  const headerBarFrame = z$1.enum(["full-bleed", "inset-shell"]);
8209
- const headerContainerSchema = z$1.object({
8210
- rounded: z$1.enum([
8211
- "none",
8212
- "sm",
8213
- "md",
8214
- "lg",
8215
- "xl",
8216
- "2xl"
8217
- ]).default("xl"),
8218
- border: z$1.boolean().default(true),
8219
- shadow: z$1.boolean().default(true),
8220
- padding: z$1.enum([
8221
- "sm",
8222
- "md",
8223
- "lg"
8224
- ]).default("md"),
8225
- tint: z$1.string().nullable().optional(),
8226
- opacity: z$1.number().min(0).max(1).default(.12)
8227
- }).optional();
8228
8262
  const headerBorderSchema = componentBorderSchema.extend({ position: z$1.enum([
8229
8263
  "bottom",
8230
8264
  "top",
@@ -8351,6 +8385,7 @@ const headerSchema = z$1.object({
8351
8385
  shrinkOnScroll: z$1.boolean(),
8352
8386
  maxWidth: headerMaxWidth,
8353
8387
  barFrame: headerBarFrame.optional(),
8388
+ scrollTreatment: headerScrollTreatmentSchema,
8354
8389
  logoOverride: mediaSchema$1.nullable().optional(),
8355
8390
  background: headerBackgroundSchema.default({
8356
8391
  type: "color",
@@ -8363,6 +8398,7 @@ const headerSchema = z$1.object({
8363
8398
  navFontRole: z$1.enum(["body", "heading"]).optional(),
8364
8399
  navTypography: z$1.enum(["body", "heading"]).optional(),
8365
8400
  navTextSize: navLinkStyleSchema.shape.textSize,
8401
+ interactionPalette: headerInteractionPaletteSchema.optional(),
8366
8402
  navPlacement: z$1.enum(["end", "center"]).optional(),
8367
8403
  container: headerContainerSchema,
8368
8404
  border: headerBorderSchema,
@@ -8655,770 +8691,669 @@ z$1.object({
8655
8691
  themes: z$1.array(themeSchema).length(3)
8656
8692
  });
8657
8693
  //#endregion
8694
+ //#region ../theme-core/src/site-styles/lookOptionGroups.ts
8695
+ function defineLookOptionGroup(group) {
8696
+ defaultOption(group);
8697
+ return group;
8698
+ }
8699
+ function defaultOption(group) {
8700
+ const option = group.options.find((candidate) => candidate.id === group.defaultOptionId);
8701
+ if (option) return option;
8702
+ throw new Error(`Look option group "${group.id}" defaults to missing option "${group.defaultOptionId}".`);
8703
+ }
8704
+ //#endregion
8658
8705
  //#region ../theme-core/src/site-styles/appearancePresetResolution.ts
8659
8706
  function assertValidOptionGroups(preset) {
8660
8707
  preset.optionGroups?.forEach((group) => {
8661
- 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}".`);
8708
+ defineLookOptionGroup(group);
8662
8709
  });
8663
8710
  }
8664
8711
  function defineBlockAppearancePreset(preset) {
8665
8712
  assertValidOptionGroups(preset);
8666
8713
  return preset;
8667
8714
  }
8668
- [...[
8669
- defineBlockAppearancePreset({
8670
- kind: "block-design",
8671
- id: "hero-immersive-image",
8672
- target: "hero",
8673
- label: "Immersive image hero",
8674
- blockKinds: ["block.hero"],
8675
- constraints: { layoutFamilies: ["centered", "compact"] },
8676
- layoutPatches: [{
8677
- constraints: { layoutVariantKeys: ["micro"] },
8678
- designPatch: {
8679
- sectionHeight: "banner",
8680
- heroTypographyScale: "display"
8681
- }
8682
- }],
8683
- design: {
8684
- sectionSurface: "hero-image",
8685
- contentFrame: plainFrame,
8686
- itemSurface: "none",
8687
- sectionHeight: "hero",
8688
- heroComposition: "center",
8689
- heroTypographyScale: "display",
8690
- imageSurfaceTreatment: { kind: "neutral-wash" }
8715
+ //#endregion
8716
+ //#region ../theme-core/src/site-styles/blockAppearancePresets.ts
8717
+ const brandScrimOptionGroups = [{
8718
+ id: "image-surface-treatment",
8719
+ label: "Treatment",
8720
+ defaultOptionId: "brand-scrim-primary",
8721
+ options: [{
8722
+ id: "brand-scrim-primary",
8723
+ label: "Brand scrim",
8724
+ designPatch: { imageSurfaceTreatment: {
8725
+ kind: "brand-scrim",
8726
+ token: "primary"
8727
+ } }
8728
+ }, {
8729
+ id: "neutral-scrim",
8730
+ label: "Neutral scrim",
8731
+ designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8732
+ }]
8733
+ }];
8734
+ const microBannerLayoutPatches = [{
8735
+ constraints: { layoutVariantKeys: ["micro"] },
8736
+ designPatch: { sectionHeight: "banner" }
8737
+ }];
8738
+ defineBlockAppearancePreset({
8739
+ id: "hero-immersive-image",
8740
+ target: "hero",
8741
+ label: "Immersive image hero",
8742
+ blockKinds: ["block.hero"],
8743
+ constraints: { layoutFamilies: ["centered", "compact"] },
8744
+ layoutPatches: [{
8745
+ constraints: { layoutVariantKeys: ["micro"] },
8746
+ designPatch: {
8747
+ sectionHeight: "banner",
8748
+ heroTypographyScale: "display"
8691
8749
  }
8692
- }),
8693
- defineBlockAppearancePreset({
8694
- kind: "block-design",
8695
- id: "hero-bottom-left-panel",
8696
- target: "hero",
8697
- label: "Bottom-left panel hero",
8698
- blockKinds: ["block.hero"],
8699
- constraints: { layoutFamilies: ["centered", "compact"] },
8700
- optionGroups: [{
8701
- id: "image-surface-treatment",
8702
- label: "Treatment",
8703
- selectedOptionId: "neutral-scrim",
8704
- options: [{
8705
- id: "neutral-scrim",
8706
- label: "Neutral scrim",
8707
- designPatch: { imageSurfaceTreatment: {
8708
- kind: "neutral-scrim",
8709
- intensity: "balanced"
8710
- } }
8711
- }, {
8712
- id: "brand-scrim-primary",
8713
- label: "Brand scrim",
8714
- designPatch: { imageSurfaceTreatment: {
8715
- kind: "brand-scrim",
8716
- token: "primary",
8717
- intensity: "balanced"
8718
- } }
8719
- }]
8720
- }],
8721
- layoutPatches: [{
8722
- constraints: { layoutVariantKeys: ["micro"] },
8723
- designPatch: {
8724
- sectionHeight: "banner",
8725
- heroTypographyScale: "editorial"
8726
- }
8727
- }],
8728
- design: {
8729
- sectionSurface: "hero-image",
8730
- contentFrame: panelFrame("raised"),
8731
- itemSurface: "none",
8732
- sectionHeight: "immersive",
8733
- heroComposition: "bottom-left",
8734
- heroTypographyScale: "display",
8735
- imageSurfaceTreatment: {
8750
+ }],
8751
+ design: {
8752
+ sectionSurface: "hero-image",
8753
+ contentFrame: plainFrame,
8754
+ itemSurface: "none",
8755
+ sectionHeight: "hero",
8756
+ heroComposition: "center",
8757
+ heroTypographyScale: "display",
8758
+ imageSurfaceTreatment: { kind: "neutral-wash" }
8759
+ }
8760
+ }), defineBlockAppearancePreset({
8761
+ id: "hero-bottom-left-panel",
8762
+ target: "hero",
8763
+ label: "Bottom-left panel hero",
8764
+ blockKinds: ["block.hero"],
8765
+ constraints: { layoutFamilies: ["centered", "compact"] },
8766
+ optionGroups: [{
8767
+ id: "image-surface-treatment",
8768
+ label: "Treatment",
8769
+ defaultOptionId: "neutral-scrim",
8770
+ options: [{
8771
+ id: "neutral-scrim",
8772
+ label: "Neutral scrim",
8773
+ designPatch: { imageSurfaceTreatment: {
8736
8774
  kind: "neutral-scrim",
8737
8775
  intensity: "balanced"
8738
- }
8739
- }
8740
- }),
8741
- defineBlockAppearancePreset({
8742
- kind: "block-design",
8743
- id: "hero-poster-image",
8744
- target: "hero",
8745
- label: "Poster image hero",
8746
- blockKinds: ["block.hero"],
8747
- constraints: { layoutFamilies: ["centered", "compact"] },
8748
- layoutPatches: [{
8749
- constraints: { layoutVariantKeys: ["micro"] },
8750
- designPatch: {
8751
- sectionHeight: "banner",
8752
- heroTypographyScale: "display"
8753
- }
8754
- }],
8755
- design: {
8756
- sectionSurface: "hero-image",
8757
- contentFrame: plainFrame,
8758
- itemSurface: "none",
8759
- sectionHeight: "immersive",
8760
- heroComposition: "center",
8761
- heroTypographyScale: "poster",
8762
- imageSurfaceTreatment: {
8776
+ } }
8777
+ }, {
8778
+ id: "brand-scrim-primary",
8779
+ label: "Brand scrim",
8780
+ designPatch: { imageSurfaceTreatment: {
8763
8781
  kind: "brand-scrim",
8764
8782
  token: "primary",
8765
- intensity: "strong"
8766
- }
8767
- }
8768
- }),
8769
- defineBlockAppearancePreset({
8770
- kind: "block-design",
8771
- id: "hero-brand-scrim",
8772
- target: "hero",
8773
- label: "Brand scrim image hero",
8774
- blockKinds: ["block.hero"],
8775
- constraints: { layoutFamilies: ["centered", "compact"] },
8776
- optionGroups: [{
8777
- id: "image-surface-treatment",
8778
- label: "Treatment",
8779
- selectedOptionId: "brand-scrim-primary",
8780
- options: [{
8781
- id: "brand-scrim-primary",
8782
- label: "Brand scrim",
8783
- designPatch: { imageSurfaceTreatment: {
8784
- kind: "brand-scrim",
8785
- token: "primary"
8786
- } }
8787
- }, {
8788
- id: "neutral-scrim",
8789
- label: "Neutral scrim",
8790
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8791
- }]
8792
- }],
8793
- layoutPatches: [{
8794
- constraints: { layoutVariantKeys: ["micro"] },
8795
- designPatch: { sectionHeight: "banner" }
8796
- }],
8797
- design: {
8798
- sectionSurface: "hero-image",
8799
- contentFrame: plainFrame,
8800
- itemSurface: "none",
8801
- sectionHeight: "immersive",
8802
- heroComposition: "center",
8803
- heroTypographyScale: "display",
8804
- imageSurfaceTreatment: {
8805
- kind: "brand-scrim",
8806
- token: "primary"
8807
- }
8808
- }
8809
- }),
8810
- defineBlockAppearancePreset({
8811
- kind: "block-design",
8812
- id: "hero-brand-scrim-fixed-frame",
8813
- target: "hero",
8814
- label: "Fixed-frame brand scrim hero",
8815
- blockKinds: ["block.hero"],
8816
- constraints: { layoutFamilies: ["centered", "compact"] },
8817
- optionGroups: [{
8818
- id: "image-surface-treatment",
8819
- label: "Treatment",
8820
- selectedOptionId: "brand-scrim-primary",
8821
- options: [{
8822
- id: "brand-scrim-primary",
8823
- label: "Brand scrim",
8824
- designPatch: { imageSurfaceTreatment: {
8825
- kind: "brand-scrim",
8826
- token: "primary"
8827
- } }
8828
- }, {
8829
- id: "neutral-scrim",
8830
- label: "Neutral scrim",
8831
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8832
- }]
8833
- }],
8834
- layoutPatches: [{
8835
- constraints: { layoutVariantKeys: ["micro"] },
8836
- designPatch: { sectionHeight: "banner" }
8837
- }],
8838
- design: {
8839
- sectionSurface: "hero-image",
8840
- contentFrame: plainFrame,
8841
- itemSurface: "none",
8842
- sectionHeight: "immersive",
8843
- heroComposition: "center",
8844
- heroTypographyScale: "display",
8845
- imageSurfaceTreatment: {
8846
- kind: "brand-scrim",
8847
- token: "primary"
8848
- },
8849
- imageSurfaceMotion: "fixed-frame",
8850
- eyebrowTreatment: "accent-pill-bounce"
8851
- }
8852
- }),
8853
- defineBlockAppearancePreset({
8854
- kind: "block-design",
8855
- id: "hero-brand-depth-expressive",
8856
- target: "hero",
8857
- label: "Expressive brand-depth hero",
8858
- blockKinds: ["block.hero"],
8859
- constraints: { layoutFamilies: ["centered", "compact"] },
8860
- design: {
8861
- sectionSurface: "brand-depth-band",
8862
- contentFrame: plainFrame,
8863
- itemSurface: "none",
8864
- heroComposition: "center",
8865
- heroTypographyScale: "editorial",
8866
- eyebrowTreatment: "accent-pill-bounce"
8867
- }
8868
- }),
8869
- defineBlockAppearancePreset({
8870
- kind: "block-design",
8871
- id: "hero-contained-intro",
8872
- target: "hero",
8873
- label: "Contained intro hero",
8874
- blockKinds: ["block.hero"],
8875
- design: {
8876
- sectionSurface: "muted-band",
8877
- contentFrame: panelFrame("inset"),
8878
- itemSurface: "none",
8879
- heroComposition: "center",
8880
- heroTypographyScale: "editorial"
8881
- }
8882
- }),
8883
- defineBlockAppearancePreset({
8884
- kind: "block-design",
8885
- id: "hero-split-editorial",
8886
- target: "hero",
8887
- label: "Editorial split hero",
8888
- blockKinds: ["block.hero"],
8889
- constraints: { layoutFamilies: ["split"] },
8890
- design: {
8891
- sectionSurface: "base",
8892
- contentFrame: plainFrame,
8893
- itemSurface: "none",
8894
- heroTypographyScale: "editorial"
8895
- }
8896
- }),
8897
- defineBlockAppearancePreset({
8898
- kind: "block-design",
8899
- id: "hero-split-brand",
8900
- target: "hero",
8901
- label: "Brand split hero",
8902
- blockKinds: ["block.hero"],
8903
- constraints: { layoutFamilies: ["split"] },
8904
- design: {
8905
- sectionSurface: "brand-depth-band",
8906
- contentFrame: plainFrame,
8907
- itemSurface: "none",
8908
- heroTypographyScale: "display",
8909
- eyebrowTreatment: "accent-pill-bounce"
8910
- }
8911
- }),
8912
- defineBlockAppearancePreset({
8913
- kind: "block-design",
8914
- id: "hero-split-soft-panel",
8915
- target: "hero",
8916
- label: "Soft panel split hero",
8917
- blockKinds: ["block.hero"],
8918
- constraints: { layoutFamilies: ["split"] },
8919
- design: {
8920
- sectionSurface: "muted-band",
8921
- contentFrame: panelFrame("raised"),
8922
- itemSurface: "none",
8783
+ intensity: "balanced"
8784
+ } }
8785
+ }]
8786
+ }],
8787
+ layoutPatches: [{
8788
+ constraints: { layoutVariantKeys: ["micro"] },
8789
+ designPatch: {
8790
+ sectionHeight: "banner",
8923
8791
  heroTypographyScale: "editorial"
8924
8792
  }
8925
- }),
8926
- defineBlockAppearancePreset({
8927
- kind: "block-design",
8928
- id: "hero-split-accent",
8929
- target: "hero",
8930
- label: "Accent split hero",
8931
- blockKinds: ["block.hero"],
8932
- constraints: { layoutFamilies: ["split"] },
8933
- design: {
8934
- sectionSurface: "accent-band",
8935
- contentFrame: panelFrame("raised"),
8936
- itemSurface: "none",
8793
+ }],
8794
+ design: {
8795
+ sectionSurface: "hero-image",
8796
+ contentFrame: panelFrame("raised"),
8797
+ itemSurface: "none",
8798
+ sectionHeight: "immersive",
8799
+ heroComposition: "bottom-left",
8800
+ heroTypographyScale: "display",
8801
+ imageSurfaceTreatment: {
8802
+ kind: "neutral-scrim",
8803
+ intensity: "balanced"
8804
+ }
8805
+ }
8806
+ }), defineBlockAppearancePreset({
8807
+ id: "hero-poster-image",
8808
+ target: "hero",
8809
+ label: "Poster image hero",
8810
+ blockKinds: ["block.hero"],
8811
+ constraints: { layoutFamilies: ["centered", "compact"] },
8812
+ layoutPatches: [{
8813
+ constraints: { layoutVariantKeys: ["micro"] },
8814
+ designPatch: {
8815
+ sectionHeight: "banner",
8937
8816
  heroTypographyScale: "display"
8938
8817
  }
8939
- }),
8940
- defineBlockAppearancePreset({
8941
- kind: "block-design",
8942
- id: "intro-editorial-statement",
8943
- target: "intro",
8944
- label: "Editorial intro statement",
8945
- blockKinds: ["block.intro"],
8946
- constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
8947
- design: {
8948
- sectionSurface: "base",
8949
- contentFrame: plainFrame,
8950
- itemSurface: "none",
8951
- composition: {
8952
- kind: "intro",
8953
- treatment: "editorial-statement"
8954
- }
8955
- }
8956
- }),
8957
- defineBlockAppearancePreset({
8958
- kind: "block-design",
8959
- id: "intro-portrait-bio",
8960
- target: "intro",
8961
- label: "Portrait and bio",
8962
- blockKinds: ["block.intro"],
8963
- constraints: { layoutVariantKeys: ["media-copy"] },
8964
- design: {
8965
- sectionSurface: "base",
8966
- contentFrame: plainFrame,
8967
- itemSurface: "none",
8968
- composition: {
8969
- kind: "intro",
8970
- treatment: "portrait-bio"
8971
- }
8972
- }
8973
- }),
8974
- defineBlockAppearancePreset({
8975
- kind: "block-design",
8976
- id: "offerings-preview-default-cards",
8977
- target: "offerings",
8978
- label: "Default offering cards",
8979
- blockKinds: ["block.offerings-preview"],
8980
- design: {
8981
- sectionSurface: "base",
8982
- contentFrame: plainFrame,
8983
- itemSurface: "default"
8984
- }
8985
- }),
8986
- defineBlockAppearancePreset({
8987
- kind: "block-design",
8988
- id: "offerings-preview-secondary-cards",
8989
- target: "offerings",
8990
- label: "Secondary offering cards",
8991
- blockKinds: ["block.offerings-preview"],
8992
- design: {
8993
- sectionSurface: "muted-band",
8994
- contentFrame: plainFrame,
8995
- itemSurface: "inset"
8996
- }
8997
- }),
8998
- defineBlockAppearancePreset({
8999
- kind: "block-design",
9000
- id: "offerings-preview-non-carded",
9001
- target: "offerings",
9002
- label: "Non-carded offerings",
9003
- blockKinds: ["block.offerings-preview"],
9004
- design: {
9005
- sectionSurface: "muted-band",
9006
- contentFrame: plainFrame,
9007
- itemSurface: "editorial"
9008
- }
9009
- }),
9010
- defineBlockAppearancePreset({
9011
- kind: "block-design",
9012
- id: "offerings-preview-paired-feature-cards",
9013
- target: "offerings",
9014
- label: "Paired feature cards",
9015
- blockKinds: ["block.offerings-preview"],
9016
- constraints: { layoutVariantKeys: ["cards"] },
9017
- design: {
9018
- sectionSurface: "base",
9019
- contentFrame: plainFrame,
9020
- itemSurface: "none"
9021
- }
9022
- }),
9023
- defineBlockAppearancePreset({
9024
- kind: "block-design",
9025
- id: "offerings-preview-open-editorial-columns",
9026
- target: "offerings",
9027
- label: "Open editorial columns",
9028
- blockKinds: ["block.offerings-preview"],
9029
- constraints: { layoutVariantKeys: ["cards"] },
9030
- design: {
9031
- sectionSurface: "base",
9032
- contentFrame: plainFrame,
9033
- itemSurface: "none"
9034
- }
9035
- }),
9036
- defineBlockAppearancePreset({
9037
- kind: "block-design",
9038
- id: "offerings-preview-joined-programme-panel",
9039
- target: "offerings",
9040
- label: "Joined programme panel",
9041
- blockKinds: ["block.offerings-preview"],
9042
- constraints: { layoutVariantKeys: ["cards"] },
9043
- design: {
9044
- sectionSurface: "base",
9045
- contentFrame: plainFrame,
9046
- itemSurface: "none"
9047
- }
9048
- }),
9049
- defineBlockAppearancePreset({
9050
- kind: "block-design",
9051
- id: "feature-cards-raised-rule",
9052
- target: "feature-cards",
9053
- label: "Raised cards with rule",
9054
- blockKinds: ["block.feature-cards"],
9055
- design: {
9056
- sectionSurface: "base",
9057
- contentFrame: plainFrame,
9058
- itemSurface: "raised"
9059
- }
9060
- }),
9061
- defineBlockAppearancePreset({
9062
- kind: "block-design",
9063
- id: "feature-cards-bold-colors",
9064
- target: "feature-cards",
9065
- label: "Bold colour-blocked cards",
9066
- blockKinds: ["block.feature-cards"],
9067
- design: {
9068
- sectionSurface: "base",
9069
- contentFrame: plainFrame,
9070
- itemSurface: "color-blocked"
9071
- }
9072
- }),
9073
- defineBlockAppearancePreset({
9074
- kind: "block-design",
9075
- id: "feature-cards-editorial-columns",
9076
- target: "feature-cards",
9077
- label: "Editorial open columns",
9078
- blockKinds: ["block.feature-cards"],
9079
- design: {
9080
- sectionSurface: "base",
9081
- contentFrame: plainFrame,
9082
- itemSurface: "editorial"
9083
- }
9084
- }),
9085
- defineBlockAppearancePreset({
9086
- kind: "block-design",
9087
- id: "feature-cards-asymmetric-emphasis",
9088
- target: "feature-cards",
9089
- label: "Asymmetric emphasis pair",
9090
- blockKinds: ["block.feature-cards"],
9091
- constraints: { layoutFamilies: ["grid"] },
9092
- design: {
9093
- sectionSurface: "base",
9094
- contentFrame: plainFrame,
9095
- itemSurface: "none",
9096
- composition: {
9097
- kind: "feature-cards",
9098
- treatment: "asymmetric-emphasis"
9099
- }
9100
- }
9101
- }),
9102
- defineBlockAppearancePreset({
9103
- kind: "block-design",
9104
- id: "feature-cards-framed-programme",
9105
- target: "feature-cards",
9106
- label: "Framed programme cards",
9107
- blockKinds: ["block.feature-cards"],
9108
- constraints: { layoutFamilies: ["grid"] },
9109
- design: {
9110
- sectionSurface: "brand-depth-band",
9111
- contentFrame: plainFrame,
9112
- itemSurface: "inset",
9113
- composition: {
9114
- kind: "feature-cards",
9115
- treatment: "framed-programme"
9116
- }
9117
- }
9118
- }),
9119
- defineBlockAppearancePreset({
9120
- kind: "block-design",
9121
- id: "feature-cards-soft-panels",
9122
- target: "feature-cards",
9123
- label: "Soft tinted panels",
9124
- blockKinds: ["block.feature-cards"],
9125
- design: {
9126
- sectionSurface: "base",
9127
- contentFrame: plainFrame,
9128
- itemSurface: "inset"
9129
- }
9130
- }),
9131
- defineBlockAppearancePreset({
9132
- kind: "block-design",
9133
- id: "feature-cards-editorial-diptych",
9134
- target: "feature-cards",
9135
- label: "Editorial diptych",
9136
- blockKinds: ["block.feature-cards"],
9137
- constraints: { layoutVariantKeys: ["editorial-diptych"] },
9138
- design: {
9139
- sectionSurface: "base",
9140
- contentFrame: plainFrame,
9141
- itemSurface: "flat"
9142
- }
9143
- }),
9144
- defineBlockAppearancePreset({
9145
- kind: "block-design",
9146
- id: "feature-cards-editorial-pathways",
9147
- target: "feature-cards",
9148
- label: "Editorial pathways",
9149
- blockKinds: ["block.feature-cards"],
9150
- constraints: { layoutVariantKeys: ["editorial-pathways"] },
9151
- design: {
9152
- sectionSurface: "base",
9153
- contentFrame: plainFrame,
9154
- itemSurface: "flat"
9155
- }
9156
- }),
9157
- defineBlockAppearancePreset({
9158
- kind: "block-design",
9159
- id: "feature-cards-photo-tiles",
9160
- target: "feature-cards",
9161
- label: "Photo tiles",
9162
- blockKinds: ["block.feature-cards"],
9163
- design: {
9164
- sectionSurface: "base",
9165
- contentFrame: plainFrame,
9166
- itemSurface: "raised"
9167
- }
9168
- }),
9169
- defineBlockAppearancePreset({
9170
- kind: "block-design",
9171
- id: "events-lined-panel",
9172
- target: "events",
9173
- label: "Raised event panel",
9174
- blockKinds: ["block.event-calendar", "block.event-listing"],
9175
- design: {
9176
- sectionSurface: "base",
9177
- contentFrame: panelFrame("raised"),
9178
- itemSurface: "none"
9179
- }
9180
- }),
9181
- defineBlockAppearancePreset({
9182
- kind: "block-design",
9183
- id: "events-ruled-register",
9184
- target: "events",
9185
- label: "Ruled event register",
9186
- blockKinds: ["block.event-calendar", "block.event-listing"],
9187
- design: {
9188
- sectionSurface: "brand-depth-band",
9189
- contentFrame: plainFrame,
9190
- itemSurface: "none",
9191
- eventListTreatment: "ruled-register"
9192
- }
9193
- }),
9194
- defineBlockAppearancePreset({
9195
- kind: "block-design",
9196
- id: "events-editorial-register",
9197
- target: "events",
9198
- label: "Editorial event register",
9199
- blockKinds: ["block.event-calendar", "block.event-listing"],
9200
- design: {
9201
- sectionSurface: "base",
9202
- contentFrame: plainFrame,
9203
- itemSurface: "none",
9204
- eventListTreatment: "editorial-register"
9205
- }
9206
- }),
9207
- defineBlockAppearancePreset({
9208
- kind: "block-design",
9209
- id: "events-dense-index",
9210
- target: "events",
9211
- label: "Dense event index",
9212
- blockKinds: ["block.event-calendar", "block.event-listing"],
9213
- design: {
9214
- sectionSurface: "accent-band",
9215
- contentFrame: plainFrame,
9216
- itemSurface: "none",
9217
- eventListTreatment: "dense-index"
9218
- }
9219
- }),
9220
- defineBlockAppearancePreset({
9221
- kind: "block-design",
9222
- id: "schedule-details-brand-depth",
9223
- target: "events",
9224
- label: "Brand-depth schedule details",
9225
- blockKinds: ["block.event-details", "block.course-details"],
9226
- design: {
9227
- sectionSurface: "brand-depth-band",
9228
- contentFrame: plainFrame,
9229
- itemSurface: "none",
9230
- tileTreatment: "brand-depth"
9231
- }
9232
- }),
9233
- defineBlockAppearancePreset({
9234
- kind: "block-design",
9235
- id: "media-text-flush-feature",
9236
- target: "media-text",
9237
- label: "Flush media feature",
9238
- blockKinds: ["block.media-text"],
9239
- design: {
9240
- sectionSurface: "muted-band",
9241
- contentFrame: flushPanelFrame({ bleed: "start" }),
9242
- itemSurface: "none"
9243
- }
9244
- }),
9245
- defineBlockAppearancePreset({
9246
- kind: "block-design",
9247
- id: "testimonials-simple-cards",
9248
- target: "testimonials",
9249
- label: "Simple testimonial cards",
9250
- blockKinds: ["block.testimonials"],
9251
- design: {
9252
- sectionSurface: "base",
9253
- contentFrame: plainFrame,
9254
- itemSurface: "default"
9255
- }
9256
- }),
9257
- defineBlockAppearancePreset({
9258
- kind: "block-design",
9259
- id: "testimonials-raised-panel",
9260
- target: "testimonials",
9261
- label: "Raised testimonial panel",
9262
- blockKinds: ["block.testimonials"],
9263
- design: {
9264
- sectionSurface: "muted-band",
9265
- contentFrame: panelFrame("raised"),
9266
- itemSurface: "raised"
9267
- }
9268
- }),
9269
- defineBlockAppearancePreset({
9270
- kind: "block-design",
9271
- id: "testimonials-accent-panel",
9272
- target: "testimonials",
9273
- label: "Accent testimonial panel",
9274
- blockKinds: ["block.testimonials"],
9275
- design: {
9276
- sectionSurface: "accent-band",
9277
- contentFrame: panelFrame("raised"),
9278
- itemSurface: "raised"
9279
- }
9280
- }),
9281
- defineBlockAppearancePreset({
9282
- kind: "block-design",
9283
- id: "testimonials-default-cards",
9284
- target: "testimonials",
9285
- label: "Default cards",
9286
- blockKinds: ["block.testimonials"],
9287
- design: {
9288
- sectionSurface: "base",
9289
- contentFrame: plainFrame,
9290
- itemSurface: "none",
9291
- testimonialCardTreatment: "default"
9292
- }
9293
- }),
9294
- defineBlockAppearancePreset({
9295
- kind: "block-design",
9296
- id: "testimonials-statement-cards",
9297
- target: "testimonials",
9298
- label: "Statement cards",
9299
- blockKinds: ["block.testimonials"],
9300
- design: {
9301
- sectionSurface: "accent-band",
9302
- contentFrame: plainFrame,
9303
- itemSurface: "raised",
9304
- testimonialCardTreatment: "statement"
9305
- }
9306
- }),
9307
- defineBlockAppearancePreset({
9308
- kind: "block-design",
9309
- id: "testimonials-brand-statement-cards",
9310
- target: "testimonials",
9311
- label: "Brand statement cards",
9312
- blockKinds: ["block.testimonials"],
9313
- design: {
9314
- sectionSurface: "brand-depth-band",
9315
- contentFrame: plainFrame,
9316
- itemSurface: "raised",
9317
- testimonialCardTreatment: "statement"
9318
- }
9319
- }),
9320
- defineBlockAppearancePreset({
9321
- kind: "block-design",
9322
- id: "testimonials-non-carded",
9323
- target: "testimonials",
9324
- label: "Non-carded",
9325
- blockKinds: ["block.testimonials"],
9326
- design: {
9327
- sectionSurface: "muted-band",
9328
- contentFrame: plainFrame,
9329
- itemSurface: "none",
9330
- testimonialCardTreatment: "non-carded"
9331
- }
9332
- }),
9333
- defineBlockAppearancePreset({
9334
- kind: "block-design",
9335
- id: "testimonials-evergreen-lead",
9336
- target: "testimonials",
9337
- label: "Evergreen lead",
9338
- blockKinds: ["block.testimonials"],
9339
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9340
- design: {
9341
- sectionSurface: "base",
9342
- contentFrame: plainFrame,
9343
- itemSurface: "none"
9344
- }
9345
- }),
9346
- defineBlockAppearancePreset({
9347
- kind: "block-design",
9348
- id: "testimonials-room-and-response",
9349
- target: "testimonials",
9350
- label: "Room and response",
9351
- blockKinds: ["block.testimonials"],
9352
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9353
- design: {
9354
- sectionSurface: "base",
9355
- contentFrame: plainFrame,
9356
- itemSurface: "none"
9357
- }
9358
- }),
9359
- defineBlockAppearancePreset({
9360
- kind: "block-design",
9361
- id: "testimonials-open-floor",
9362
- target: "testimonials",
9363
- label: "Open floor",
9364
- blockKinds: ["block.testimonials"],
9365
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9366
- design: {
9367
- sectionSurface: "base",
9368
- contentFrame: plainFrame,
9369
- itemSurface: "none"
9370
- }
9371
- }),
9372
- defineBlockAppearancePreset({
9373
- kind: "block-design",
9374
- id: "faq-base-accordion",
9375
- target: "faq",
9376
- label: "Base accordion FAQ",
9377
- blockKinds: ["block.faq"],
9378
- design: {
9379
- sectionSurface: "base",
9380
- contentFrame: plainFrame,
9381
- itemSurface: "default"
9382
- }
9383
- }),
9384
- defineBlockAppearancePreset({
9385
- kind: "block-design",
9386
- id: "faq-contained-help",
9387
- target: "faq",
9388
- label: "Contained help panel",
9389
- blockKinds: ["block.faq"],
9390
- design: {
9391
- sectionSurface: "muted-band",
9392
- contentFrame: panelFrame("inset"),
9393
- itemSurface: "default"
9394
- }
9395
- }),
9396
- defineBlockAppearancePreset({
9397
- kind: "block-design",
9398
- id: "contact-form-panel",
9399
- target: "contact-form",
9400
- label: "Raised form panel",
9401
- blockKinds: ["block.form"],
9402
- design: {
9403
- sectionSurface: "muted-band",
9404
- contentFrame: panelFrame("raised"),
9405
- itemSurface: "none"
9406
- }
9407
- }),
9408
- defineBlockAppearancePreset({
9409
- kind: "block-design",
9410
- id: "cta-accent-band",
9411
- target: "cta",
9412
- label: "Accent CTA band",
9413
- blockKinds: ["block.cta-full"],
9414
- design: {
9415
- sectionSurface: "accent-band",
9416
- contentFrame: plainFrame,
9417
- itemSurface: "none",
9418
- eyebrowTreatment: "accent"
9419
- }
9420
- })
9421
- ]];
8818
+ }],
8819
+ design: {
8820
+ sectionSurface: "hero-image",
8821
+ contentFrame: plainFrame,
8822
+ itemSurface: "none",
8823
+ sectionHeight: "immersive",
8824
+ heroComposition: "center",
8825
+ heroTypographyScale: "poster",
8826
+ imageSurfaceTreatment: {
8827
+ kind: "brand-scrim",
8828
+ token: "primary",
8829
+ intensity: "strong"
8830
+ }
8831
+ }
8832
+ }), defineBlockAppearancePreset({
8833
+ id: "hero-brand-scrim",
8834
+ target: "hero",
8835
+ label: "Brand scrim image hero",
8836
+ blockKinds: ["block.hero"],
8837
+ constraints: { layoutFamilies: ["centered", "compact"] },
8838
+ optionGroups: brandScrimOptionGroups,
8839
+ layoutPatches: microBannerLayoutPatches,
8840
+ design: {
8841
+ sectionSurface: "hero-image",
8842
+ contentFrame: plainFrame,
8843
+ itemSurface: "none",
8844
+ sectionHeight: "immersive",
8845
+ heroComposition: "center",
8846
+ heroTypographyScale: "display",
8847
+ imageSurfaceTreatment: {
8848
+ kind: "brand-scrim",
8849
+ token: "primary"
8850
+ }
8851
+ }
8852
+ }), defineBlockAppearancePreset({
8853
+ id: "hero-brand-scrim-fixed-frame",
8854
+ target: "hero",
8855
+ label: "Fixed-frame brand scrim hero",
8856
+ blockKinds: ["block.hero"],
8857
+ constraints: { layoutFamilies: ["centered", "compact"] },
8858
+ optionGroups: brandScrimOptionGroups,
8859
+ layoutPatches: microBannerLayoutPatches,
8860
+ design: {
8861
+ sectionSurface: "hero-image",
8862
+ contentFrame: plainFrame,
8863
+ itemSurface: "none",
8864
+ sectionHeight: "immersive",
8865
+ heroComposition: "center",
8866
+ heroTypographyScale: "display",
8867
+ imageSurfaceTreatment: {
8868
+ kind: "brand-scrim",
8869
+ token: "primary"
8870
+ },
8871
+ imageSurfaceMotion: "fixed-frame",
8872
+ eyebrowTreatment: "accent-pill-bounce"
8873
+ }
8874
+ }), defineBlockAppearancePreset({
8875
+ id: "hero-brand-depth-expressive",
8876
+ target: "hero",
8877
+ label: "Expressive brand-depth hero",
8878
+ blockKinds: ["block.hero"],
8879
+ constraints: { layoutFamilies: ["centered", "compact"] },
8880
+ design: {
8881
+ sectionSurface: "brand-depth-band",
8882
+ contentFrame: plainFrame,
8883
+ itemSurface: "none",
8884
+ heroComposition: "center",
8885
+ heroTypographyScale: "editorial",
8886
+ eyebrowTreatment: "accent-pill-bounce"
8887
+ }
8888
+ }), defineBlockAppearancePreset({
8889
+ id: "hero-contained-intro",
8890
+ target: "hero",
8891
+ label: "Contained intro hero",
8892
+ blockKinds: ["block.hero"],
8893
+ design: {
8894
+ sectionSurface: "muted-band",
8895
+ contentFrame: panelFrame("inset"),
8896
+ itemSurface: "none",
8897
+ heroComposition: "center",
8898
+ heroTypographyScale: "editorial"
8899
+ }
8900
+ }), defineBlockAppearancePreset({
8901
+ id: "hero-split-editorial",
8902
+ target: "hero",
8903
+ label: "Editorial split hero",
8904
+ blockKinds: ["block.hero"],
8905
+ constraints: { layoutFamilies: ["split"] },
8906
+ design: {
8907
+ sectionSurface: "base",
8908
+ contentFrame: plainFrame,
8909
+ itemSurface: "none",
8910
+ heroTypographyScale: "editorial"
8911
+ }
8912
+ }), defineBlockAppearancePreset({
8913
+ id: "hero-split-brand",
8914
+ target: "hero",
8915
+ label: "Brand split hero",
8916
+ blockKinds: ["block.hero"],
8917
+ constraints: { layoutFamilies: ["split"] },
8918
+ design: {
8919
+ sectionSurface: "brand-depth-band",
8920
+ contentFrame: plainFrame,
8921
+ itemSurface: "none",
8922
+ heroTypographyScale: "display",
8923
+ eyebrowTreatment: "accent-pill-bounce"
8924
+ }
8925
+ }), defineBlockAppearancePreset({
8926
+ id: "hero-split-soft-panel",
8927
+ target: "hero",
8928
+ label: "Soft panel split hero",
8929
+ blockKinds: ["block.hero"],
8930
+ constraints: { layoutFamilies: ["split"] },
8931
+ design: {
8932
+ sectionSurface: "muted-band",
8933
+ contentFrame: panelFrame("raised"),
8934
+ itemSurface: "none",
8935
+ heroTypographyScale: "editorial"
8936
+ }
8937
+ }), defineBlockAppearancePreset({
8938
+ id: "hero-split-accent",
8939
+ target: "hero",
8940
+ label: "Accent split hero",
8941
+ blockKinds: ["block.hero"],
8942
+ constraints: { layoutFamilies: ["split"] },
8943
+ design: {
8944
+ sectionSurface: "accent-band",
8945
+ contentFrame: panelFrame("raised"),
8946
+ itemSurface: "none",
8947
+ heroTypographyScale: "display"
8948
+ }
8949
+ }), defineBlockAppearancePreset({
8950
+ id: "intro-editorial-statement",
8951
+ target: "intro",
8952
+ label: "Editorial intro statement",
8953
+ blockKinds: ["block.intro"],
8954
+ constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
8955
+ design: {
8956
+ sectionSurface: "base",
8957
+ contentFrame: plainFrame,
8958
+ itemSurface: "none",
8959
+ composition: {
8960
+ kind: "intro",
8961
+ treatment: "editorial-statement"
8962
+ }
8963
+ }
8964
+ }), defineBlockAppearancePreset({
8965
+ id: "intro-portrait-bio",
8966
+ target: "intro",
8967
+ label: "Portrait and bio",
8968
+ blockKinds: ["block.intro"],
8969
+ constraints: { layoutVariantKeys: ["media-copy"] },
8970
+ design: {
8971
+ sectionSurface: "base",
8972
+ contentFrame: plainFrame,
8973
+ itemSurface: "none",
8974
+ composition: {
8975
+ kind: "intro",
8976
+ treatment: "portrait-bio"
8977
+ }
8978
+ }
8979
+ }), defineBlockAppearancePreset({
8980
+ id: "offerings-preview-default-cards",
8981
+ target: "offerings",
8982
+ label: "Default offering cards",
8983
+ blockKinds: ["block.offerings-preview"],
8984
+ design: {
8985
+ sectionSurface: "base",
8986
+ contentFrame: plainFrame,
8987
+ itemSurface: "default"
8988
+ }
8989
+ }), defineBlockAppearancePreset({
8990
+ id: "offerings-preview-secondary-cards",
8991
+ target: "offerings",
8992
+ label: "Secondary offering cards",
8993
+ blockKinds: ["block.offerings-preview"],
8994
+ design: {
8995
+ sectionSurface: "muted-band",
8996
+ contentFrame: plainFrame,
8997
+ itemSurface: "inset"
8998
+ }
8999
+ }), defineBlockAppearancePreset({
9000
+ id: "offerings-preview-non-carded",
9001
+ target: "offerings",
9002
+ label: "Non-carded offerings",
9003
+ blockKinds: ["block.offerings-preview"],
9004
+ design: {
9005
+ sectionSurface: "muted-band",
9006
+ contentFrame: plainFrame,
9007
+ itemSurface: "editorial"
9008
+ }
9009
+ }), defineBlockAppearancePreset({
9010
+ id: "offerings-preview-paired-feature-cards",
9011
+ target: "offerings",
9012
+ label: "Paired feature cards",
9013
+ blockKinds: ["block.offerings-preview"],
9014
+ constraints: { layoutVariantKeys: ["cards"] },
9015
+ design: {
9016
+ sectionSurface: "base",
9017
+ contentFrame: plainFrame,
9018
+ itemSurface: "none"
9019
+ }
9020
+ }), defineBlockAppearancePreset({
9021
+ id: "offerings-preview-open-editorial-columns",
9022
+ target: "offerings",
9023
+ label: "Open editorial columns",
9024
+ blockKinds: ["block.offerings-preview"],
9025
+ constraints: { layoutVariantKeys: ["cards"] },
9026
+ design: {
9027
+ sectionSurface: "base",
9028
+ contentFrame: plainFrame,
9029
+ itemSurface: "none"
9030
+ }
9031
+ }), defineBlockAppearancePreset({
9032
+ id: "offerings-preview-joined-programme-panel",
9033
+ target: "offerings",
9034
+ label: "Joined programme panel",
9035
+ blockKinds: ["block.offerings-preview"],
9036
+ constraints: { layoutVariantKeys: ["cards"] },
9037
+ design: {
9038
+ sectionSurface: "base",
9039
+ contentFrame: plainFrame,
9040
+ itemSurface: "none"
9041
+ }
9042
+ }), defineBlockAppearancePreset({
9043
+ id: "feature-cards-raised-rule",
9044
+ target: "feature-cards",
9045
+ label: "Raised cards with rule",
9046
+ blockKinds: ["block.feature-cards"],
9047
+ design: {
9048
+ sectionSurface: "base",
9049
+ contentFrame: plainFrame,
9050
+ itemSurface: "raised"
9051
+ }
9052
+ }), defineBlockAppearancePreset({
9053
+ id: "feature-cards-bold-colors",
9054
+ target: "feature-cards",
9055
+ label: "Bold colour-blocked cards",
9056
+ blockKinds: ["block.feature-cards"],
9057
+ design: {
9058
+ sectionSurface: "base",
9059
+ contentFrame: plainFrame,
9060
+ itemSurface: "color-blocked"
9061
+ }
9062
+ }), defineBlockAppearancePreset({
9063
+ id: "feature-cards-editorial-columns",
9064
+ target: "feature-cards",
9065
+ label: "Editorial open columns",
9066
+ blockKinds: ["block.feature-cards"],
9067
+ design: {
9068
+ sectionSurface: "base",
9069
+ contentFrame: plainFrame,
9070
+ itemSurface: "editorial"
9071
+ }
9072
+ }), defineBlockAppearancePreset({
9073
+ id: "feature-cards-asymmetric-emphasis",
9074
+ target: "feature-cards",
9075
+ label: "Asymmetric emphasis pair",
9076
+ blockKinds: ["block.feature-cards"],
9077
+ constraints: { layoutFamilies: ["grid"] },
9078
+ design: {
9079
+ sectionSurface: "base",
9080
+ contentFrame: plainFrame,
9081
+ itemSurface: "none",
9082
+ composition: {
9083
+ kind: "feature-cards",
9084
+ treatment: "asymmetric-emphasis"
9085
+ }
9086
+ }
9087
+ }), defineBlockAppearancePreset({
9088
+ id: "feature-cards-framed-programme",
9089
+ target: "feature-cards",
9090
+ label: "Framed programme cards",
9091
+ blockKinds: ["block.feature-cards"],
9092
+ constraints: { layoutFamilies: ["grid"] },
9093
+ design: {
9094
+ sectionSurface: "brand-depth-band",
9095
+ contentFrame: plainFrame,
9096
+ itemSurface: "inset",
9097
+ composition: {
9098
+ kind: "feature-cards",
9099
+ treatment: "framed-programme"
9100
+ }
9101
+ }
9102
+ }), defineBlockAppearancePreset({
9103
+ id: "feature-cards-soft-panels",
9104
+ target: "feature-cards",
9105
+ label: "Soft tinted panels",
9106
+ blockKinds: ["block.feature-cards"],
9107
+ design: {
9108
+ sectionSurface: "base",
9109
+ contentFrame: plainFrame,
9110
+ itemSurface: "inset"
9111
+ }
9112
+ }), defineBlockAppearancePreset({
9113
+ id: "feature-cards-editorial-diptych",
9114
+ target: "feature-cards",
9115
+ label: "Editorial diptych",
9116
+ blockKinds: ["block.feature-cards"],
9117
+ constraints: { layoutVariantKeys: ["editorial-diptych"] },
9118
+ design: {
9119
+ sectionSurface: "base",
9120
+ contentFrame: plainFrame,
9121
+ itemSurface: "flat"
9122
+ }
9123
+ }), defineBlockAppearancePreset({
9124
+ id: "feature-cards-editorial-pathways",
9125
+ target: "feature-cards",
9126
+ label: "Editorial pathways",
9127
+ blockKinds: ["block.feature-cards"],
9128
+ constraints: { layoutVariantKeys: ["editorial-pathways"] },
9129
+ design: {
9130
+ sectionSurface: "base",
9131
+ contentFrame: plainFrame,
9132
+ itemSurface: "flat"
9133
+ }
9134
+ }), defineBlockAppearancePreset({
9135
+ id: "feature-cards-photo-tiles",
9136
+ target: "feature-cards",
9137
+ label: "Photo tiles",
9138
+ blockKinds: ["block.feature-cards"],
9139
+ design: {
9140
+ sectionSurface: "base",
9141
+ contentFrame: plainFrame,
9142
+ itemSurface: "raised"
9143
+ }
9144
+ }), defineBlockAppearancePreset({
9145
+ id: "events-lined-panel",
9146
+ target: "events",
9147
+ label: "Raised event panel",
9148
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9149
+ design: {
9150
+ sectionSurface: "base",
9151
+ contentFrame: panelFrame("raised"),
9152
+ itemSurface: "none"
9153
+ }
9154
+ }), defineBlockAppearancePreset({
9155
+ id: "events-ruled-register",
9156
+ target: "events",
9157
+ label: "Ruled event register",
9158
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9159
+ design: {
9160
+ sectionSurface: "brand-depth-band",
9161
+ contentFrame: plainFrame,
9162
+ itemSurface: "none",
9163
+ eventListTreatment: "ruled-register"
9164
+ }
9165
+ }), defineBlockAppearancePreset({
9166
+ id: "events-editorial-register",
9167
+ target: "events",
9168
+ label: "Editorial event register",
9169
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9170
+ design: {
9171
+ sectionSurface: "base",
9172
+ contentFrame: plainFrame,
9173
+ itemSurface: "none",
9174
+ eventListTreatment: "editorial-register"
9175
+ }
9176
+ }), defineBlockAppearancePreset({
9177
+ id: "events-dense-index",
9178
+ target: "events",
9179
+ label: "Dense event index",
9180
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9181
+ design: {
9182
+ sectionSurface: "accent-band",
9183
+ contentFrame: plainFrame,
9184
+ itemSurface: "none",
9185
+ eventListTreatment: "dense-index"
9186
+ }
9187
+ }), defineBlockAppearancePreset({
9188
+ id: "schedule-details-brand-depth",
9189
+ target: "events",
9190
+ label: "Brand-depth schedule details",
9191
+ blockKinds: ["block.event-details", "block.course-details"],
9192
+ design: {
9193
+ sectionSurface: "brand-depth-band",
9194
+ contentFrame: plainFrame,
9195
+ itemSurface: "none",
9196
+ tileTreatment: "brand-depth"
9197
+ }
9198
+ }), defineBlockAppearancePreset({
9199
+ id: "media-text-flush-feature",
9200
+ target: "media-text",
9201
+ label: "Flush media feature",
9202
+ blockKinds: ["block.media-text"],
9203
+ design: {
9204
+ sectionSurface: "muted-band",
9205
+ contentFrame: flushPanelFrame({ bleed: "start" }),
9206
+ itemSurface: "none"
9207
+ }
9208
+ }), defineBlockAppearancePreset({
9209
+ id: "testimonials-simple-cards",
9210
+ target: "testimonials",
9211
+ label: "Simple testimonial cards",
9212
+ blockKinds: ["block.testimonials"],
9213
+ design: {
9214
+ sectionSurface: "base",
9215
+ contentFrame: plainFrame,
9216
+ itemSurface: "default"
9217
+ }
9218
+ }), defineBlockAppearancePreset({
9219
+ id: "testimonials-raised-panel",
9220
+ target: "testimonials",
9221
+ label: "Raised testimonial panel",
9222
+ blockKinds: ["block.testimonials"],
9223
+ design: {
9224
+ sectionSurface: "muted-band",
9225
+ contentFrame: panelFrame("raised"),
9226
+ itemSurface: "raised"
9227
+ }
9228
+ }), defineBlockAppearancePreset({
9229
+ id: "testimonials-accent-panel",
9230
+ target: "testimonials",
9231
+ label: "Accent testimonial panel",
9232
+ blockKinds: ["block.testimonials"],
9233
+ design: {
9234
+ sectionSurface: "accent-band",
9235
+ contentFrame: panelFrame("raised"),
9236
+ itemSurface: "raised"
9237
+ }
9238
+ }), defineBlockAppearancePreset({
9239
+ id: "testimonials-default-cards",
9240
+ target: "testimonials",
9241
+ label: "Default cards",
9242
+ blockKinds: ["block.testimonials"],
9243
+ design: {
9244
+ sectionSurface: "base",
9245
+ contentFrame: plainFrame,
9246
+ itemSurface: "none",
9247
+ testimonialCardTreatment: "default"
9248
+ }
9249
+ }), defineBlockAppearancePreset({
9250
+ id: "testimonials-statement-cards",
9251
+ target: "testimonials",
9252
+ label: "Statement cards",
9253
+ blockKinds: ["block.testimonials"],
9254
+ design: {
9255
+ sectionSurface: "accent-band",
9256
+ contentFrame: plainFrame,
9257
+ itemSurface: "raised",
9258
+ testimonialCardTreatment: "statement"
9259
+ }
9260
+ }), defineBlockAppearancePreset({
9261
+ id: "testimonials-brand-statement-cards",
9262
+ target: "testimonials",
9263
+ label: "Brand statement cards",
9264
+ blockKinds: ["block.testimonials"],
9265
+ design: {
9266
+ sectionSurface: "brand-depth-band",
9267
+ contentFrame: plainFrame,
9268
+ itemSurface: "raised",
9269
+ testimonialCardTreatment: "statement"
9270
+ }
9271
+ }), defineBlockAppearancePreset({
9272
+ id: "testimonials-non-carded",
9273
+ target: "testimonials",
9274
+ label: "Non-carded",
9275
+ blockKinds: ["block.testimonials"],
9276
+ design: {
9277
+ sectionSurface: "muted-band",
9278
+ contentFrame: plainFrame,
9279
+ itemSurface: "none",
9280
+ testimonialCardTreatment: "non-carded"
9281
+ }
9282
+ }), defineBlockAppearancePreset({
9283
+ id: "testimonials-evergreen-lead",
9284
+ target: "testimonials",
9285
+ label: "Evergreen lead",
9286
+ blockKinds: ["block.testimonials"],
9287
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9288
+ design: {
9289
+ sectionSurface: "base",
9290
+ contentFrame: plainFrame,
9291
+ itemSurface: "none"
9292
+ }
9293
+ }), defineBlockAppearancePreset({
9294
+ id: "testimonials-room-and-response",
9295
+ target: "testimonials",
9296
+ label: "Room and response",
9297
+ blockKinds: ["block.testimonials"],
9298
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9299
+ design: {
9300
+ sectionSurface: "base",
9301
+ contentFrame: plainFrame,
9302
+ itemSurface: "none"
9303
+ }
9304
+ }), defineBlockAppearancePreset({
9305
+ id: "testimonials-open-floor",
9306
+ target: "testimonials",
9307
+ label: "Open floor",
9308
+ blockKinds: ["block.testimonials"],
9309
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9310
+ design: {
9311
+ sectionSurface: "base",
9312
+ contentFrame: plainFrame,
9313
+ itemSurface: "none"
9314
+ }
9315
+ }), defineBlockAppearancePreset({
9316
+ id: "faq-base-accordion",
9317
+ target: "faq",
9318
+ label: "Base accordion FAQ",
9319
+ blockKinds: ["block.faq"],
9320
+ design: {
9321
+ sectionSurface: "base",
9322
+ contentFrame: plainFrame,
9323
+ itemSurface: "default"
9324
+ }
9325
+ }), defineBlockAppearancePreset({
9326
+ id: "faq-contained-help",
9327
+ target: "faq",
9328
+ label: "Contained help panel",
9329
+ blockKinds: ["block.faq"],
9330
+ design: {
9331
+ sectionSurface: "muted-band",
9332
+ contentFrame: panelFrame("inset"),
9333
+ itemSurface: "default"
9334
+ }
9335
+ }), defineBlockAppearancePreset({
9336
+ id: "contact-form-panel",
9337
+ target: "contact-form",
9338
+ label: "Raised form panel",
9339
+ blockKinds: ["block.form"],
9340
+ design: {
9341
+ sectionSurface: "muted-band",
9342
+ contentFrame: panelFrame("raised"),
9343
+ itemSurface: "none"
9344
+ }
9345
+ }), defineBlockAppearancePreset({
9346
+ id: "cta-accent-band",
9347
+ target: "cta",
9348
+ label: "Accent CTA band",
9349
+ blockKinds: ["block.cta-full"],
9350
+ design: {
9351
+ sectionSurface: "accent-band",
9352
+ contentFrame: plainFrame,
9353
+ itemSurface: "none",
9354
+ eyebrowTreatment: "accent"
9355
+ }
9356
+ });
9422
9357
  //#endregion
9423
9358
  //#region ../theme-core/src/site-styles/headerCtaVariants.ts
9424
9359
  function hasButtonVariant(theme, variantId) {
@@ -9601,6 +9536,27 @@ function uniqueStrings(values) {
9601
9536
  return Array.from(new Set(values));
9602
9537
  }
9603
9538
  //#endregion
9539
+ //#region ../theme-core/src/site-styles/headerInteractionPalette.ts
9540
+ const clearSplitInteractionPalette = defineLookOptionGroup({
9541
+ id: "interaction-palette",
9542
+ label: "Hover colour",
9543
+ defaultOptionId: "accent",
9544
+ options: [
9545
+ {
9546
+ id: "accent",
9547
+ label: "Accent"
9548
+ },
9549
+ {
9550
+ id: "primary",
9551
+ label: "Primary"
9552
+ },
9553
+ {
9554
+ id: "secondary",
9555
+ label: "Secondary"
9556
+ }
9557
+ ]
9558
+ });
9559
+ //#endregion
9604
9560
  //#region ../theme-core/src/site-styles/headerLooks.ts
9605
9561
  function asHeaderLookId(value) {
9606
9562
  return value;
@@ -9734,7 +9690,7 @@ const overlayLogoAccommodations = [
9734
9690
  * optional nested styling fields that would otherwise leak from another Look.
9735
9691
  */
9736
9692
  function baseHeader(theme) {
9737
- 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;
9693
+ 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;
9738
9694
  return {
9739
9695
  ...header,
9740
9696
  navContainer: {
@@ -9749,7 +9705,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9749
9705
  id: asHeaderLayoutId("classic"),
9750
9706
  label: "Classic",
9751
9707
  description: "Logo and navigation in one practical horizontal row.",
9752
- structure: "inline-classic",
9753
9708
  variant: "classic",
9754
9709
  defaultPositioning: "sticky",
9755
9710
  shrinkOnScroll: false
@@ -9758,7 +9713,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9758
9713
  id: asHeaderLayoutId("centered"),
9759
9714
  label: "Centered",
9760
9715
  description: "Logo centered above a balanced navigation row.",
9761
- structure: "centered-stack",
9762
9716
  variant: "centered",
9763
9717
  defaultPositioning: "static",
9764
9718
  shrinkOnScroll: false,
@@ -9774,7 +9728,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9774
9728
  id: asHeaderLayoutId("floating"),
9775
9729
  label: "Floating",
9776
9730
  description: "Detached header chrome that sits over the opening section.",
9777
- structure: "floating-shell",
9778
9731
  variant: "floating",
9779
9732
  defaultPositioning: "sticky",
9780
9733
  shrinkOnScroll: true,
@@ -9936,10 +9889,13 @@ const headerStyleCatalog = defineExactCatalog()([
9936
9889
  label: "Clear Split",
9937
9890
  description: "Floating logo with transparent navigation and no shared shell.",
9938
9891
  supportedLayoutIds: supportedLayouts(["floating"]),
9939
- navInteraction: "color-change",
9892
+ navInteraction: "pill-background",
9940
9893
  surface: "floating",
9941
- defaultDepth: "none",
9894
+ defaultDepth: "line",
9942
9895
  navTypography: "plain",
9896
+ openingForegroundTarget: "all",
9897
+ scrollTreatment: "contrast-glass",
9898
+ interactionPalette: clearSplitInteractionPalette,
9943
9899
  moods: ["editorial", "calm"]
9944
9900
  },
9945
9901
  {
@@ -9962,6 +9918,7 @@ const headerStyleCatalog = defineExactCatalog()([
9962
9918
  surface: "floating",
9963
9919
  defaultDepth: "shadow",
9964
9920
  navTypography: "quiet-caps",
9921
+ openingForegroundTarget: "brand-only",
9965
9922
  moods: ["expressive"]
9966
9923
  },
9967
9924
  {
@@ -9973,6 +9930,7 @@ const headerStyleCatalog = defineExactCatalog()([
9973
9930
  surface: "floating",
9974
9931
  defaultDepth: "shadow",
9975
9932
  navTypography: "heading",
9933
+ openingForegroundTarget: "brand-only",
9976
9934
  moods: ["calm", "editorial"]
9977
9935
  }
9978
9936
  ]);
@@ -10474,13 +10432,6 @@ const headerLookCatalog = defineExactCatalog()([
10474
10432
  {
10475
10433
  id: asHeaderLookId("clean-base"),
10476
10434
  label: "Clean base",
10477
- visualTreatment: "solid-neutral",
10478
- layoutBehavior: "sticky",
10479
- configuration: {
10480
- structure: "inline-classic",
10481
- treatment: "solid-neutral",
10482
- behavior: "sticky"
10483
- },
10484
10435
  openingRequirement: "none",
10485
10436
  logoAccommodations: inlineClassicLogoAccommodations,
10486
10437
  compile: cleanBaseHeader
@@ -10488,13 +10439,6 @@ const headerLookCatalog = defineExactCatalog()([
10488
10439
  {
10489
10440
  id: asHeaderLookId("classic-centered-nav"),
10490
10441
  label: "Centered nav",
10491
- visualTreatment: "solid-neutral",
10492
- layoutBehavior: "sticky",
10493
- configuration: {
10494
- structure: "inline-classic",
10495
- treatment: "solid-neutral",
10496
- behavior: "sticky"
10497
- },
10498
10442
  openingRequirement: "none",
10499
10443
  maxRecommendedNavItems: 6,
10500
10444
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -10503,13 +10447,6 @@ const headerLookCatalog = defineExactCatalog()([
10503
10447
  {
10504
10448
  id: asHeaderLookId("brand-solid"),
10505
10449
  label: "Brand solid",
10506
- visualTreatment: "solid-brand",
10507
- layoutBehavior: "sticky-shrink",
10508
- configuration: {
10509
- structure: "inline-classic",
10510
- treatment: "solid-brand",
10511
- behavior: "sticky-shrink"
10512
- },
10513
10450
  openingRequirement: "none",
10514
10451
  logoAccommodations: inlineClassicLogoAccommodations,
10515
10452
  compile: solidBrandHeader
@@ -10517,13 +10454,6 @@ const headerLookCatalog = defineExactCatalog()([
10517
10454
  {
10518
10455
  id: asHeaderLookId("serif-line"),
10519
10456
  label: "Serif line",
10520
- visualTreatment: "light-serif",
10521
- layoutBehavior: "sticky",
10522
- configuration: {
10523
- structure: "centered-stack",
10524
- treatment: "light-serif",
10525
- behavior: "sticky"
10526
- },
10527
10457
  openingRequirement: "none",
10528
10458
  maxRecommendedNavItems: 6,
10529
10459
  logoAccommodations: centeredLogoAccommodations,
@@ -10532,13 +10462,6 @@ const headerLookCatalog = defineExactCatalog()([
10532
10462
  {
10533
10463
  id: asHeaderLookId("centered-calm"),
10534
10464
  label: "Centered calm",
10535
- visualTreatment: "light-serif",
10536
- layoutBehavior: "normal-flow",
10537
- configuration: {
10538
- structure: "centered-stack",
10539
- treatment: "light-serif",
10540
- behavior: "normal-flow"
10541
- },
10542
10465
  openingRequirement: "none",
10543
10466
  maxRecommendedNavItems: 5,
10544
10467
  logoAccommodations: centeredLogoAccommodations,
@@ -10547,13 +10470,6 @@ const headerLookCatalog = defineExactCatalog()([
10547
10470
  {
10548
10471
  id: asHeaderLookId("practical-utility"),
10549
10472
  label: "Practical utility",
10550
- visualTreatment: "solid-neutral",
10551
- layoutBehavior: "sticky-shrink",
10552
- configuration: {
10553
- structure: "inline-classic",
10554
- treatment: "solid-neutral",
10555
- behavior: "sticky-shrink"
10556
- },
10557
10473
  openingRequirement: "none",
10558
10474
  requiresProminentCta: true,
10559
10475
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -10562,13 +10478,6 @@ const headerLookCatalog = defineExactCatalog()([
10562
10478
  {
10563
10479
  id: asHeaderLookId("minimal-transparent"),
10564
10480
  label: "Minimal transparent",
10565
- visualTreatment: "minimal-transparent",
10566
- layoutBehavior: "normal-flow",
10567
- configuration: {
10568
- structure: "inline-classic",
10569
- treatment: "minimal-transparent",
10570
- behavior: "normal-flow"
10571
- },
10572
10481
  openingRequirement: "reserved-space-ok",
10573
10482
  logoAccommodations: inlineClassicLogoAccommodations,
10574
10483
  compile: minimalTransparentHeader
@@ -10576,13 +10485,6 @@ const headerLookCatalog = defineExactCatalog()([
10576
10485
  {
10577
10486
  id: asHeaderLookId("transparent-overlay"),
10578
10487
  label: "Transparent overlay",
10579
- visualTreatment: "transparent-overlay",
10580
- layoutBehavior: "fixed-overlay",
10581
- configuration: {
10582
- structure: "inline-classic",
10583
- treatment: "transparent-overlay",
10584
- behavior: "fixed-overlay"
10585
- },
10586
10488
  openingRequirement: "requires-image-hero-with-contrast-overlay",
10587
10489
  maxRecommendedNavItems: 5,
10588
10490
  logoAccommodations: overlayLogoAccommodations,
@@ -10591,24 +10493,13 @@ const headerLookCatalog = defineExactCatalog()([
10591
10493
  {
10592
10494
  id: asHeaderLookId("floating-glass"),
10593
10495
  label: "Floating glass",
10594
- visualTreatment: "floating-glass",
10595
- layoutBehavior: "fixed-floating",
10596
- configuration: {
10597
- structure: "floating-shell",
10598
- treatment: "floating-glass",
10599
- behavior: "fixed-floating"
10600
- },
10601
10496
  openingRequirement: "requires-image-hero-with-contrast-overlay",
10602
10497
  maxRecommendedNavItems: 5,
10603
10498
  logoAccommodations: overlayLogoAccommodations,
10604
10499
  compile: floatingGlassHeader
10605
10500
  }
10606
10501
  ]);
10607
- new Set(headerLookCatalog.map((look) => headerConfigurationKey(look.configuration)));
10608
10502
  new Map(headerLookCatalog.map((look) => [look.id, look]));
10609
- function headerConfigurationKey(configuration) {
10610
- return `${configuration.structure}:${configuration.treatment}:${configuration.behavior}`;
10611
- }
10612
10503
  //#endregion
10613
10504
  //#region ../theme-core/src/site-styles/sectionTransitions.ts
10614
10505
  function boundaryRuntimeMetrics(family, size, heightExpression) {
@@ -14217,28 +14108,6 @@ z$1.object({
14217
14108
  spacing: z$1.enum(themeTokenRecipeOptions.spacing),
14218
14109
  motion: z$1.enum(themeTokenRecipeOptions.motion)
14219
14110
  });
14220
- const BREAKPOINT_LG = 1024;
14221
- const BREAKPOINT_XL = 1280;
14222
- const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
14223
- function mqUp(px) {
14224
- return `(min-width: ${px}px)`;
14225
- }
14226
- function mqDown(px) {
14227
- return `(max-width: ${px}px)`;
14228
- }
14229
- function mqBetween(minPx, maxPx) {
14230
- return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
14231
- }
14232
- mqUp(640);
14233
- mqUp(768);
14234
- mqUp(BREAKPOINT_LG);
14235
- mqUp(BREAKPOINT_XL);
14236
- mqDown(639);
14237
- mqDown(767);
14238
- mqDown(BREAKPOINT_LG_DOWN);
14239
- mqBetween(640, BREAKPOINT_LG_DOWN);
14240
- mqDown(640);
14241
- mqDown(768);
14242
14111
  //#endregion
14243
14112
  //#region ../theme-core/src/siteChromeOverlayClearance.ts
14244
14113
  const SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
@@ -18216,15 +18085,6 @@ const heroLayoutControlsFragment = defineFragment({
18216
18085
  */
18217
18086
  const BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
18218
18087
  const blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
18219
- /**
18220
- * Temporary rollout boundary for persisted content written before issue #1220.
18221
- * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
18222
- * only until the post-deploy role rewrite has been audited in production.
18223
- */
18224
- function canonicalizePersistedBlockButtonRole(value) {
18225
- return value === "link" || value === "tertiary" ? "ghost" : value;
18226
- }
18227
- const persistedBlockButtonRoleSchema = z$1.preprocess((value) => typeof value === "string" ? canonicalizePersistedBlockButtonRole(value) : value, blockButtonRoleSchema);
18228
18088
  const BLOCK_BUTTON_ROLE_LABELS = {
18229
18089
  primary: "Primary",
18230
18090
  secondary: "Secondary",
@@ -25476,6 +25336,12 @@ const mediaBaseSchema = z.object({
25476
25336
  poster: mediaPosterSchema.optional(),
25477
25337
  transform: transformSchema.optional()
25478
25338
  });
25339
+ /**
25340
+ * Canonical identifier carried by media values that are safe to persist.
25341
+ * Parsing trims boundary input so downstream writers cannot retain whitespace-only
25342
+ * identifiers or independently disagree about normalization.
25343
+ */
25344
+ const mediaIdentifierSchema = z.string().trim().min(1).brand();
25479
25345
  const imageMediaSchema = mediaBaseSchema.extend({ type: z.literal("image") });
25480
25346
  const videoMediaSchema = mediaBaseSchema.extend({ type: z.literal("video") });
25481
25347
  const audioMediaSchema = mediaBaseSchema.extend({ type: z.literal("audio") });
@@ -25490,6 +25356,15 @@ const mediaSchema = z.discriminatedUnion("type", [
25490
25356
  spreadsheetMediaSchema,
25491
25357
  archiveMediaSchema
25492
25358
  ]);
25359
+ const persistableMediaBaseSchema = mediaBaseSchema.extend({ identifier: mediaIdentifierSchema });
25360
+ z.discriminatedUnion("type", [
25361
+ persistableMediaBaseSchema.extend({ type: z.literal("image") }),
25362
+ persistableMediaBaseSchema.extend({ type: z.literal("video") }),
25363
+ persistableMediaBaseSchema.extend({ type: z.literal("audio") }),
25364
+ persistableMediaBaseSchema.extend({ type: z.literal("document") }),
25365
+ persistableMediaBaseSchema.extend({ type: z.literal("spreadsheet") }),
25366
+ persistableMediaBaseSchema.extend({ type: z.literal("archive") })
25367
+ ]);
25493
25368
  //#endregion
25494
25369
  //#region ../blocks/src/system/manifest/richTextSchema.ts
25495
25370
  /**
@@ -26603,7 +26478,7 @@ function isEventCalendarListLayout(value) {
26603
26478
  //#region ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
26604
26479
  const previewStageSchema = z$1.enum(["preview", "published"]);
26605
26480
  const registrationButtonVariantSchema = blockButtonRoleSchema;
26606
- const eventButtonVariantSchema = persistedBlockButtonRoleSchema;
26481
+ const eventButtonVariantSchema = blockButtonRoleSchema;
26607
26482
  const eventLayoutSchema = z$1.enum(eventCalendarListLayoutValues);
26608
26483
  const eventCalendarDisplayModeSchema = z$1.enum(eventCalendarDisplayModeValues);
26609
26484
  const eventCalendarDefaultViewSchema = z$1.enum(eventCalendarDefaultViewValues);