@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
@@ -2953,6 +2953,21 @@ const themeColorTokenSchema = z$1.string().min(1).refine((value) => Boolean(isTh
2953
2953
  //#region ../theme-core/src/palette/colors.ts
2954
2954
  const HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
2955
2955
  const NORMALIZABLE_HEX_REGEX = /^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i;
2956
+ const THEME_PALETTE_COLOR_ORDER = [
2957
+ "primary",
2958
+ "secondary",
2959
+ "accent",
2960
+ "success",
2961
+ "warning",
2962
+ "destructive",
2963
+ "background",
2964
+ "surface",
2965
+ "surfaceAlt",
2966
+ "muted",
2967
+ "text",
2968
+ "primaryForeground",
2969
+ "border"
2970
+ ];
2956
2971
  const hexColorSchema = z$1.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
2957
2972
  const paletteModeSchema = z$1.enum(["light", "dark"]);
2958
2973
  const PALETTE_VALUE_KEY_PREFIX = "palette-value:v1|";
@@ -3030,6 +3045,12 @@ function requirePaletteColorsFromEntries(entries) {
3030
3045
  if (result.ok) return result.colors;
3031
3046
  throw new Error(`Invalid complete palette: ${result.error.kind}`);
3032
3047
  }
3048
+ function paletteColorEntries(colors) {
3049
+ return THEME_PALETTE_COLOR_ORDER.map((name) => ({
3050
+ name,
3051
+ hex: colors[name]
3052
+ }));
3053
+ }
3033
3054
  function paletteColorFingerprint(colors) {
3034
3055
  return PALETTE_TOKEN_NAMES.map((name) => `${name}:${colors[name]}`).join("|");
3035
3056
  }
@@ -3037,7 +3058,7 @@ function canonicalPaletteHashInput(colors, mode) {
3037
3058
  return `${mode}|${paletteColorFingerprint(colors)}`;
3038
3059
  }
3039
3060
  /**
3040
- * The shared TypeScript/SQL protocol. Do not reorder roles: the order comes
3061
+ * Stable curated-catalogue identity. Do not reorder roles: the order comes
3041
3062
  * from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
3042
3063
  */
3043
3064
  function paletteValueKey(colors, mode) {
@@ -4363,13 +4384,6 @@ const warmDarkKirtanGold = defineCuratedPalette({
4363
4384
  });
4364
4385
  //#endregion
4365
4386
  //#region ../theme-core/src/palette/curated/index.ts
4366
- /**
4367
- * Curated palette library.
4368
- *
4369
- * Authoring keys are readable source aliases. Value keys are derived from the
4370
- * complete mode and semantic colours and are the only curated identity used at
4371
- * persistence and runtime boundaries.
4372
- */
4373
4387
  function admitCuratedPaletteDefinition(definition) {
4374
4388
  return {
4375
4389
  ...definition,
@@ -4396,11 +4410,8 @@ const curatedPalettes = [
4396
4410
  admitCuratedPaletteDefinition(warmDarkEmber),
4397
4411
  admitCuratedPaletteDefinition(warmDarkKirtanGold)
4398
4412
  ];
4399
- const curatedPalettesByValueKey = new Map(curatedPalettes.map((palette) => [palette.valueKey, palette]));
4413
+ new Map(curatedPalettes.map((palette) => [palette.valueKey, palette]));
4400
4414
  const curatedPalettesByAuthoringKey = new Map(curatedPalettes.map((palette) => [palette.authoringKey, palette]));
4401
- function findCuratedPalette(valueKey) {
4402
- return curatedPalettesByValueKey.get(valueKey);
4403
- }
4404
4415
  function findCuratedPaletteByAuthoringKey(authoringKey) {
4405
4416
  return curatedPalettesByAuthoringKey.get(authoringKey);
4406
4417
  }
@@ -4409,87 +4420,6 @@ function requireCuratedPaletteValueKey(authoringKey) {
4409
4420
  if (!palette) throw new Error(`Unknown curated palette authoring key "${authoringKey}"`);
4410
4421
  return palette.valueKey;
4411
4422
  }
4412
- /** Parses a raw persisted key into catalogue-proven curated membership. */
4413
- const knownCuratedPaletteValueKeySchema = z$1.string().transform((value, ctx) => {
4414
- const valueKey = parsePaletteValueKey(value);
4415
- if (!valueKey) {
4416
- ctx.addIssue({
4417
- code: "custom",
4418
- message: "Invalid canonical palette value key"
4419
- });
4420
- return z$1.NEVER;
4421
- }
4422
- const palette = findCuratedPalette(valueKey);
4423
- if (!palette) {
4424
- ctx.addIssue({
4425
- code: "custom",
4426
- message: "Unknown curated palette value key"
4427
- });
4428
- return z$1.NEVER;
4429
- }
4430
- return palette.valueKey;
4431
- });
4432
- //#endregion
4433
- //#region ../theme-core/src/palette/selection.ts
4434
- const sitePaletteIdSchema = z$1.string().uuid().transform((value) => value);
4435
- const sitePaletteVersionSchema = z$1.number().int().nonnegative().transform((value) => value);
4436
- const paletteSelectionSchema = z$1.discriminatedUnion("kind", [z$1.object({
4437
- kind: z$1.literal("curated"),
4438
- valueKey: knownCuratedPaletteValueKeySchema
4439
- }), z$1.object({
4440
- kind: z$1.literal("site"),
4441
- paletteId: sitePaletteIdSchema
4442
- })]);
4443
- const onboardingPaletteOriginSchema = z$1.object({
4444
- kind: z$1.literal("onboarding"),
4445
- sourceKey: z$1.string().min(1).nullable()
4446
- });
4447
- const curatedForkPaletteOriginSchema = z$1.object({
4448
- kind: z$1.literal("curated-fork"),
4449
- sourceValueKey: paletteValueKeySchema
4450
- });
4451
- const manualPaletteOriginSchema = z$1.object({ kind: z$1.literal("manual") });
4452
- const legacyCustomizedPaletteOriginSchema = z$1.object({
4453
- kind: z$1.literal("legacy-customized"),
4454
- sourceKey: z$1.string().min(1).nullable()
4455
- });
4456
- const sitePaletteOriginSchema = z$1.discriminatedUnion("kind", [
4457
- onboardingPaletteOriginSchema,
4458
- curatedForkPaletteOriginSchema,
4459
- manualPaletteOriginSchema,
4460
- legacyCustomizedPaletteOriginSchema
4461
- ]);
4462
- const editorSitePaletteOriginSchema = z$1.discriminatedUnion("kind", [z$1.object({
4463
- kind: z$1.literal("curated-fork"),
4464
- sourceValueKey: knownCuratedPaletteValueKeySchema
4465
- }), manualPaletteOriginSchema]);
4466
- z$1.object({
4467
- id: sitePaletteIdSchema,
4468
- colors: paletteColorsSchema,
4469
- mode: paletteModeSchema,
4470
- origin: sitePaletteOriginSchema,
4471
- version: sitePaletteVersionSchema
4472
- });
4473
- z$1.discriminatedUnion("kind", [
4474
- z$1.object({ kind: z$1.literal("preserve") }),
4475
- z$1.object({
4476
- kind: z$1.literal("select"),
4477
- selection: paletteSelectionSchema
4478
- }),
4479
- z$1.object({
4480
- kind: z$1.literal("create-site"),
4481
- colors: paletteColorsSchema,
4482
- mode: paletteModeSchema,
4483
- origin: editorSitePaletteOriginSchema
4484
- }),
4485
- z$1.object({
4486
- kind: z$1.literal("update-site"),
4487
- paletteId: sitePaletteIdSchema,
4488
- expectedVersion: sitePaletteVersionSchema,
4489
- colors: paletteColorsSchema,
4490
- mode: paletteModeSchema
4491
- })
4492
- ]);
4493
4423
  //#endregion
4494
4424
  //#region ../theme-core/src/lib/media.ts
4495
4425
  const hotspotSchema$1 = z.object({
@@ -4548,6 +4478,34 @@ const mediaSchema$1 = z.object({
4548
4478
  transform: transformSchema$1.optional()
4549
4479
  });
4550
4480
  //#endregion
4481
+ //#region ../theme-core/src/palette/schema.ts
4482
+ const colourHexString = z$1.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
4483
+ const paletteColorSchema = z$1.object({
4484
+ name: z$1.string().min(1),
4485
+ hex: colourHexString
4486
+ });
4487
+ const paletteMetaSchema = z$1.object({ mode: z$1.enum(["light", "dark"]) });
4488
+ const paletteSchema = z$1.object({
4489
+ colors: z$1.array(paletteColorSchema),
4490
+ meta: paletteMetaSchema
4491
+ }).transform((palette, ctx) => {
4492
+ const colors = paletteColorsFromEntries(palette.colors);
4493
+ if (!colors.ok) {
4494
+ ctx.addIssue({
4495
+ code: "custom",
4496
+ message: `Invalid complete palette: ${colors.error.kind}`
4497
+ });
4498
+ return z$1.NEVER;
4499
+ }
4500
+ return {
4501
+ colors: paletteColorEntries(colors.colors).map(({ name, hex }) => ({
4502
+ name: String(name),
4503
+ hex: String(hex)
4504
+ })),
4505
+ meta: palette.meta
4506
+ };
4507
+ });
4508
+ //#endregion
4551
4509
  //#region ../theme-core/src/buttons/types.ts
4552
4510
  /**
4553
4511
  * Standard semantic variant roles a theme exposes.
@@ -4560,8 +4518,6 @@ const VARIANT_ROLES = [
4560
4518
  "secondary",
4561
4519
  "outline",
4562
4520
  "ghost",
4563
- "link",
4564
- "tertiary",
4565
4521
  "accent"
4566
4522
  ];
4567
4523
  /**
@@ -4570,7 +4526,7 @@ const VARIANT_ROLES = [
4570
4526
  * IDs become class selectors, so keep the contract deliberately narrower than
4571
4527
  * an arbitrary string and shared with every authoring/runtime boundary.
4572
4528
  */
4573
- const buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only");
4529
+ 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" });
4574
4530
  function parseOpaqueButtonColourToken(value) {
4575
4531
  const token = parseThemeColorToken(value);
4576
4532
  if (token === null) return null;
@@ -4973,6 +4929,59 @@ function surfaceForegroundStyle(input) {
4973
4929
  [SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting
4974
4930
  };
4975
4931
  }
4932
+ shadeBackgroundEffect({
4933
+ id: "darken-background",
4934
+ name: "Darken on Hover",
4935
+ description: "Darkens the background color on hover",
4936
+ label: "Darken Amount (shade step)",
4937
+ shadeDirection: 1
4938
+ });
4939
+ shadeBackgroundEffect({
4940
+ id: "lighten-background",
4941
+ name: "Lighten on Hover",
4942
+ description: "Lightens the background color on hover",
4943
+ label: "Lighten Amount (shade step)",
4944
+ shadeDirection: -1
4945
+ });
4946
+ function shadeBackgroundEffect(config) {
4947
+ return {
4948
+ id: config.id,
4949
+ name: config.name,
4950
+ description: config.description,
4951
+ category: "background",
4952
+ pseudoElement: "none",
4953
+ applicableTo: ["button"],
4954
+ customizableOption: {
4955
+ name: "amount",
4956
+ type: "select",
4957
+ label: config.label,
4958
+ default: 100,
4959
+ options: [
4960
+ 0,
4961
+ 100,
4962
+ 200,
4963
+ 300,
4964
+ 400,
4965
+ 500,
4966
+ 600,
4967
+ 700,
4968
+ 800,
4969
+ 900
4970
+ ]
4971
+ },
4972
+ isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
4973
+ generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
4974
+ if (buttonConfig.background.type !== "solid") return "";
4975
+ const amount = (options.amount || 100) * config.shadeDirection;
4976
+ const baseToken = buttonConfig.background.colorToken ?? "primary-500";
4977
+ return `
4978
+ :where([data-theme-scope="${themeId}"]) .${variantId}:hover {
4979
+ background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
4980
+ }
4981
+ `;
4982
+ }
4983
+ };
4984
+ }
4976
4985
  buttonSizeNameSchema.options;
4977
4986
  //#endregion
4978
4987
  //#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";
@@ -18220,15 +18089,6 @@ const heroLayoutControlsFragment = defineFragment({
18220
18089
  */
18221
18090
  const BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
18222
18091
  const blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
18223
- /**
18224
- * Temporary rollout boundary for persisted content written before issue #1220.
18225
- * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
18226
- * only until the post-deploy role rewrite has been audited in production.
18227
- */
18228
- function canonicalizePersistedBlockButtonRole(value) {
18229
- return value === "link" || value === "tertiary" ? "ghost" : value;
18230
- }
18231
- const persistedBlockButtonRoleSchema = z$1.preprocess((value) => typeof value === "string" ? canonicalizePersistedBlockButtonRole(value) : value, blockButtonRoleSchema);
18232
18092
  const BLOCK_BUTTON_ROLE_LABELS = {
18233
18093
  primary: "Primary",
18234
18094
  secondary: "Secondary",
@@ -25480,6 +25340,12 @@ const mediaBaseSchema = z.object({
25480
25340
  poster: mediaPosterSchema.optional(),
25481
25341
  transform: transformSchema.optional()
25482
25342
  });
25343
+ /**
25344
+ * Canonical identifier carried by media values that are safe to persist.
25345
+ * Parsing trims boundary input so downstream writers cannot retain whitespace-only
25346
+ * identifiers or independently disagree about normalization.
25347
+ */
25348
+ const mediaIdentifierSchema = z.string().trim().min(1).brand();
25483
25349
  const imageMediaSchema = mediaBaseSchema.extend({ type: z.literal("image") });
25484
25350
  const videoMediaSchema = mediaBaseSchema.extend({ type: z.literal("video") });
25485
25351
  const audioMediaSchema = mediaBaseSchema.extend({ type: z.literal("audio") });
@@ -25494,6 +25360,15 @@ const mediaSchema = z.discriminatedUnion("type", [
25494
25360
  spreadsheetMediaSchema,
25495
25361
  archiveMediaSchema
25496
25362
  ]);
25363
+ const persistableMediaBaseSchema = mediaBaseSchema.extend({ identifier: mediaIdentifierSchema });
25364
+ z.discriminatedUnion("type", [
25365
+ persistableMediaBaseSchema.extend({ type: z.literal("image") }),
25366
+ persistableMediaBaseSchema.extend({ type: z.literal("video") }),
25367
+ persistableMediaBaseSchema.extend({ type: z.literal("audio") }),
25368
+ persistableMediaBaseSchema.extend({ type: z.literal("document") }),
25369
+ persistableMediaBaseSchema.extend({ type: z.literal("spreadsheet") }),
25370
+ persistableMediaBaseSchema.extend({ type: z.literal("archive") })
25371
+ ]);
25497
25372
  //#endregion
25498
25373
  //#region ../blocks/src/system/manifest/richTextSchema.ts
25499
25374
  /**
@@ -26607,7 +26482,7 @@ function isEventCalendarListLayout(value) {
26607
26482
  //#region ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
26608
26483
  const previewStageSchema = z$1.enum(["preview", "published"]);
26609
26484
  const registrationButtonVariantSchema = blockButtonRoleSchema;
26610
- const eventButtonVariantSchema = persistedBlockButtonRoleSchema;
26485
+ const eventButtonVariantSchema = blockButtonRoleSchema;
26611
26486
  const eventLayoutSchema = z$1.enum(eventCalendarListLayoutValues);
26612
26487
  const eventCalendarDisplayModeSchema = z$1.enum(eventCalendarDisplayModeValues);
26613
26488
  const eventCalendarDefaultViewSchema = z$1.enum(eventCalendarDefaultViewValues);