@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
@@ -2948,6 +2948,21 @@ const themeColorTokenSchema = z$1.string().min(1).refine((value) => Boolean(isTh
2948
2948
  //#region ../theme-core/src/palette/colors.ts
2949
2949
  const HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
2950
2950
  const NORMALIZABLE_HEX_REGEX = /^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i;
2951
+ const THEME_PALETTE_COLOR_ORDER = [
2952
+ "primary",
2953
+ "secondary",
2954
+ "accent",
2955
+ "success",
2956
+ "warning",
2957
+ "destructive",
2958
+ "background",
2959
+ "surface",
2960
+ "surfaceAlt",
2961
+ "muted",
2962
+ "text",
2963
+ "primaryForeground",
2964
+ "border"
2965
+ ];
2951
2966
  const hexColorSchema = z$1.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
2952
2967
  const paletteModeSchema = z$1.enum(["light", "dark"]);
2953
2968
  const PALETTE_VALUE_KEY_PREFIX = "palette-value:v1|";
@@ -3025,6 +3040,12 @@ function requirePaletteColorsFromEntries(entries) {
3025
3040
  if (result.ok) return result.colors;
3026
3041
  throw new Error(`Invalid complete palette: ${result.error.kind}`);
3027
3042
  }
3043
+ function paletteColorEntries(colors) {
3044
+ return THEME_PALETTE_COLOR_ORDER.map((name) => ({
3045
+ name,
3046
+ hex: colors[name]
3047
+ }));
3048
+ }
3028
3049
  function paletteColorFingerprint(colors) {
3029
3050
  return PALETTE_TOKEN_NAMES.map((name) => `${name}:${colors[name]}`).join("|");
3030
3051
  }
@@ -3032,7 +3053,7 @@ function canonicalPaletteHashInput(colors, mode) {
3032
3053
  return `${mode}|${paletteColorFingerprint(colors)}`;
3033
3054
  }
3034
3055
  /**
3035
- * The shared TypeScript/SQL protocol. Do not reorder roles: the order comes
3056
+ * Stable curated-catalogue identity. Do not reorder roles: the order comes
3036
3057
  * from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
3037
3058
  */
3038
3059
  function paletteValueKey(colors, mode) {
@@ -4358,13 +4379,6 @@ const warmDarkKirtanGold = defineCuratedPalette({
4358
4379
  });
4359
4380
  //#endregion
4360
4381
  //#region ../theme-core/src/palette/curated/index.ts
4361
- /**
4362
- * Curated palette library.
4363
- *
4364
- * Authoring keys are readable source aliases. Value keys are derived from the
4365
- * complete mode and semantic colours and are the only curated identity used at
4366
- * persistence and runtime boundaries.
4367
- */
4368
4382
  function admitCuratedPaletteDefinition(definition) {
4369
4383
  return {
4370
4384
  ...definition,
@@ -4391,11 +4405,8 @@ const curatedPalettes = [
4391
4405
  admitCuratedPaletteDefinition(warmDarkEmber),
4392
4406
  admitCuratedPaletteDefinition(warmDarkKirtanGold)
4393
4407
  ];
4394
- const curatedPalettesByValueKey = new Map(curatedPalettes.map((palette) => [palette.valueKey, palette]));
4408
+ new Map(curatedPalettes.map((palette) => [palette.valueKey, palette]));
4395
4409
  const curatedPalettesByAuthoringKey = new Map(curatedPalettes.map((palette) => [palette.authoringKey, palette]));
4396
- function findCuratedPalette(valueKey) {
4397
- return curatedPalettesByValueKey.get(valueKey);
4398
- }
4399
4410
  function findCuratedPaletteByAuthoringKey(authoringKey) {
4400
4411
  return curatedPalettesByAuthoringKey.get(authoringKey);
4401
4412
  }
@@ -4404,87 +4415,6 @@ function requireCuratedPaletteValueKey(authoringKey) {
4404
4415
  if (!palette) throw new Error(`Unknown curated palette authoring key "${authoringKey}"`);
4405
4416
  return palette.valueKey;
4406
4417
  }
4407
- /** Parses a raw persisted key into catalogue-proven curated membership. */
4408
- const knownCuratedPaletteValueKeySchema = z$1.string().transform((value, ctx) => {
4409
- const valueKey = parsePaletteValueKey(value);
4410
- if (!valueKey) {
4411
- ctx.addIssue({
4412
- code: "custom",
4413
- message: "Invalid canonical palette value key"
4414
- });
4415
- return z$1.NEVER;
4416
- }
4417
- const palette = findCuratedPalette(valueKey);
4418
- if (!palette) {
4419
- ctx.addIssue({
4420
- code: "custom",
4421
- message: "Unknown curated palette value key"
4422
- });
4423
- return z$1.NEVER;
4424
- }
4425
- return palette.valueKey;
4426
- });
4427
- //#endregion
4428
- //#region ../theme-core/src/palette/selection.ts
4429
- const sitePaletteIdSchema = z$1.string().uuid().transform((value) => value);
4430
- const sitePaletteVersionSchema = z$1.number().int().nonnegative().transform((value) => value);
4431
- const paletteSelectionSchema = z$1.discriminatedUnion("kind", [z$1.object({
4432
- kind: z$1.literal("curated"),
4433
- valueKey: knownCuratedPaletteValueKeySchema
4434
- }), z$1.object({
4435
- kind: z$1.literal("site"),
4436
- paletteId: sitePaletteIdSchema
4437
- })]);
4438
- const onboardingPaletteOriginSchema = z$1.object({
4439
- kind: z$1.literal("onboarding"),
4440
- sourceKey: z$1.string().min(1).nullable()
4441
- });
4442
- const curatedForkPaletteOriginSchema = z$1.object({
4443
- kind: z$1.literal("curated-fork"),
4444
- sourceValueKey: paletteValueKeySchema
4445
- });
4446
- const manualPaletteOriginSchema = z$1.object({ kind: z$1.literal("manual") });
4447
- const legacyCustomizedPaletteOriginSchema = z$1.object({
4448
- kind: z$1.literal("legacy-customized"),
4449
- sourceKey: z$1.string().min(1).nullable()
4450
- });
4451
- const sitePaletteOriginSchema = z$1.discriminatedUnion("kind", [
4452
- onboardingPaletteOriginSchema,
4453
- curatedForkPaletteOriginSchema,
4454
- manualPaletteOriginSchema,
4455
- legacyCustomizedPaletteOriginSchema
4456
- ]);
4457
- const editorSitePaletteOriginSchema = z$1.discriminatedUnion("kind", [z$1.object({
4458
- kind: z$1.literal("curated-fork"),
4459
- sourceValueKey: knownCuratedPaletteValueKeySchema
4460
- }), manualPaletteOriginSchema]);
4461
- z$1.object({
4462
- id: sitePaletteIdSchema,
4463
- colors: paletteColorsSchema,
4464
- mode: paletteModeSchema,
4465
- origin: sitePaletteOriginSchema,
4466
- version: sitePaletteVersionSchema
4467
- });
4468
- z$1.discriminatedUnion("kind", [
4469
- z$1.object({ kind: z$1.literal("preserve") }),
4470
- z$1.object({
4471
- kind: z$1.literal("select"),
4472
- selection: paletteSelectionSchema
4473
- }),
4474
- z$1.object({
4475
- kind: z$1.literal("create-site"),
4476
- colors: paletteColorsSchema,
4477
- mode: paletteModeSchema,
4478
- origin: editorSitePaletteOriginSchema
4479
- }),
4480
- z$1.object({
4481
- kind: z$1.literal("update-site"),
4482
- paletteId: sitePaletteIdSchema,
4483
- expectedVersion: sitePaletteVersionSchema,
4484
- colors: paletteColorsSchema,
4485
- mode: paletteModeSchema
4486
- })
4487
- ]);
4488
4418
  //#endregion
4489
4419
  //#region ../theme-core/src/lib/media.ts
4490
4420
  const hotspotSchema$1 = z.object({
@@ -4543,6 +4473,34 @@ const mediaSchema$1 = z.object({
4543
4473
  transform: transformSchema$1.optional()
4544
4474
  });
4545
4475
  //#endregion
4476
+ //#region ../theme-core/src/palette/schema.ts
4477
+ const colourHexString = z$1.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
4478
+ const paletteColorSchema = z$1.object({
4479
+ name: z$1.string().min(1),
4480
+ hex: colourHexString
4481
+ });
4482
+ const paletteMetaSchema = z$1.object({ mode: z$1.enum(["light", "dark"]) });
4483
+ const paletteSchema = z$1.object({
4484
+ colors: z$1.array(paletteColorSchema),
4485
+ meta: paletteMetaSchema
4486
+ }).transform((palette, ctx) => {
4487
+ const colors = paletteColorsFromEntries(palette.colors);
4488
+ if (!colors.ok) {
4489
+ ctx.addIssue({
4490
+ code: "custom",
4491
+ message: `Invalid complete palette: ${colors.error.kind}`
4492
+ });
4493
+ return z$1.NEVER;
4494
+ }
4495
+ return {
4496
+ colors: paletteColorEntries(colors.colors).map(({ name, hex }) => ({
4497
+ name: String(name),
4498
+ hex: String(hex)
4499
+ })),
4500
+ meta: palette.meta
4501
+ };
4502
+ });
4503
+ //#endregion
4546
4504
  //#region ../theme-core/src/buttons/types.ts
4547
4505
  /**
4548
4506
  * Standard semantic variant roles a theme exposes.
@@ -4555,8 +4513,6 @@ const VARIANT_ROLES = [
4555
4513
  "secondary",
4556
4514
  "outline",
4557
4515
  "ghost",
4558
- "link",
4559
- "tertiary",
4560
4516
  "accent"
4561
4517
  ];
4562
4518
  /**
@@ -4565,7 +4521,7 @@ const VARIANT_ROLES = [
4565
4521
  * IDs become class selectors, so keep the contract deliberately narrower than
4566
4522
  * an arbitrary string and shared with every authoring/runtime boundary.
4567
4523
  */
4568
- const buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only");
4524
+ 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" });
4569
4525
  function parseOpaqueButtonColourToken(value) {
4570
4526
  const token = parseThemeColorToken(value);
4571
4527
  if (token === null) return null;
@@ -4968,6 +4924,59 @@ function surfaceForegroundStyle(input) {
4968
4924
  [SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting
4969
4925
  };
4970
4926
  }
4927
+ shadeBackgroundEffect({
4928
+ id: "darken-background",
4929
+ name: "Darken on Hover",
4930
+ description: "Darkens the background color on hover",
4931
+ label: "Darken Amount (shade step)",
4932
+ shadeDirection: 1
4933
+ });
4934
+ shadeBackgroundEffect({
4935
+ id: "lighten-background",
4936
+ name: "Lighten on Hover",
4937
+ description: "Lightens the background color on hover",
4938
+ label: "Lighten Amount (shade step)",
4939
+ shadeDirection: -1
4940
+ });
4941
+ function shadeBackgroundEffect(config) {
4942
+ return {
4943
+ id: config.id,
4944
+ name: config.name,
4945
+ description: config.description,
4946
+ category: "background",
4947
+ pseudoElement: "none",
4948
+ applicableTo: ["button"],
4949
+ customizableOption: {
4950
+ name: "amount",
4951
+ type: "select",
4952
+ label: config.label,
4953
+ default: 100,
4954
+ options: [
4955
+ 0,
4956
+ 100,
4957
+ 200,
4958
+ 300,
4959
+ 400,
4960
+ 500,
4961
+ 600,
4962
+ 700,
4963
+ 800,
4964
+ 900
4965
+ ]
4966
+ },
4967
+ isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
4968
+ generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
4969
+ if (buttonConfig.background.type !== "solid") return "";
4970
+ const amount = (options.amount || 100) * config.shadeDirection;
4971
+ const baseToken = buttonConfig.background.colorToken ?? "primary-500";
4972
+ return `
4973
+ :where([data-theme-scope="${themeId}"]) .${variantId}:hover {
4974
+ background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
4975
+ }
4976
+ `;
4977
+ }
4978
+ };
4979
+ }
4971
4980
  buttonSizeNameSchema.options;
4972
4981
  //#endregion
4973
4982
  //#region ../theme-core/src/buttons/styles/domain.ts
@@ -7782,6 +7791,60 @@ function resolveThemeColorReferenceValue(input, context) {
7782
7791
  const reference = parseThemeColorReference(input, context);
7783
7792
  return reference.kind === "literal-css" ? reference.value : rgbColorValue(reference.token);
7784
7793
  }
7794
+ const BREAKPOINT_LG = 1024;
7795
+ const BREAKPOINT_XL = 1280;
7796
+ const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
7797
+ function mqUp(px) {
7798
+ return `(min-width: ${px}px)`;
7799
+ }
7800
+ function mqDown(px) {
7801
+ return `(max-width: ${px}px)`;
7802
+ }
7803
+ function mqBetween(minPx, maxPx) {
7804
+ return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
7805
+ }
7806
+ mqUp(640);
7807
+ mqUp(768);
7808
+ mqUp(BREAKPOINT_LG);
7809
+ mqUp(BREAKPOINT_XL);
7810
+ mqDown(639);
7811
+ mqDown(767);
7812
+ mqDown(BREAKPOINT_LG_DOWN);
7813
+ mqBetween(640, BREAKPOINT_LG_DOWN);
7814
+ mqDown(640);
7815
+ mqDown(768);
7816
+ //#endregion
7817
+ //#region ../theme-core/src/header/scrollTreatment.ts
7818
+ const headerScrollTreatmentSchema = z$1.discriminatedUnion("kind", [z$1.object({
7819
+ kind: z$1.literal("contrast-glass"),
7820
+ backgroundTone: z$1.enum(["light", "dark"])
7821
+ })]).optional();
7822
+ //#endregion
7823
+ //#region ../theme-core/src/header/containerSchema.ts
7824
+ const headerContainerSchema = z$1.object({
7825
+ rounded: z$1.enum([
7826
+ "none",
7827
+ "sm",
7828
+ "md",
7829
+ "lg",
7830
+ "xl",
7831
+ "2xl"
7832
+ ]).default("xl"),
7833
+ border: z$1.boolean().default(true),
7834
+ shadow: z$1.boolean().default(true),
7835
+ padding: z$1.enum([
7836
+ "sm",
7837
+ "md",
7838
+ "lg"
7839
+ ]).default("md"),
7840
+ tint: z$1.string().nullable().optional(),
7841
+ opacity: z$1.number().min(0).max(1).default(.12)
7842
+ }).optional();
7843
+ const headerInteractionPaletteSchema = z$1.enum([
7844
+ "primary",
7845
+ "secondary",
7846
+ "accent"
7847
+ ]);
7785
7848
  //#endregion
7786
7849
  //#region ../theme-core/src/schema.ts
7787
7850
  const axesSchema = z$1.object({
@@ -7812,16 +7875,6 @@ const axesSchema = z$1.object({
7812
7875
  "expressive"
7813
7876
  ])
7814
7877
  });
7815
- const colourHexString = z$1.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
7816
- const paletteColorSchema = z$1.object({
7817
- name: z$1.string().min(1),
7818
- hex: colourHexString
7819
- });
7820
- const paletteMetaSchema = z$1.object({ mode: z$1.enum(["light", "dark"]) });
7821
- const paletteSchema = z$1.object({
7822
- colors: z$1.array(paletteColorSchema),
7823
- meta: paletteMetaSchema
7824
- });
7825
7878
  const typographyStyleSchema = z$1.object({
7826
7879
  family: z$1.string().min(1),
7827
7880
  weight: z$1.enum([
@@ -8201,25 +8254,6 @@ const navFontWeight = z$1.enum([
8201
8254
  ]);
8202
8255
  const headerMaxWidth = z$1.enum(["container", "full"]);
8203
8256
  const headerBarFrame = z$1.enum(["full-bleed", "inset-shell"]);
8204
- const headerContainerSchema = z$1.object({
8205
- rounded: z$1.enum([
8206
- "none",
8207
- "sm",
8208
- "md",
8209
- "lg",
8210
- "xl",
8211
- "2xl"
8212
- ]).default("xl"),
8213
- border: z$1.boolean().default(true),
8214
- shadow: z$1.boolean().default(true),
8215
- padding: z$1.enum([
8216
- "sm",
8217
- "md",
8218
- "lg"
8219
- ]).default("md"),
8220
- tint: z$1.string().nullable().optional(),
8221
- opacity: z$1.number().min(0).max(1).default(.12)
8222
- }).optional();
8223
8257
  const headerBorderSchema = componentBorderSchema.extend({ position: z$1.enum([
8224
8258
  "bottom",
8225
8259
  "top",
@@ -8346,6 +8380,7 @@ const headerSchema = z$1.object({
8346
8380
  shrinkOnScroll: z$1.boolean(),
8347
8381
  maxWidth: headerMaxWidth,
8348
8382
  barFrame: headerBarFrame.optional(),
8383
+ scrollTreatment: headerScrollTreatmentSchema,
8349
8384
  logoOverride: mediaSchema$1.nullable().optional(),
8350
8385
  background: headerBackgroundSchema.default({
8351
8386
  type: "color",
@@ -8358,6 +8393,7 @@ const headerSchema = z$1.object({
8358
8393
  navFontRole: z$1.enum(["body", "heading"]).optional(),
8359
8394
  navTypography: z$1.enum(["body", "heading"]).optional(),
8360
8395
  navTextSize: navLinkStyleSchema.shape.textSize,
8396
+ interactionPalette: headerInteractionPaletteSchema.optional(),
8361
8397
  navPlacement: z$1.enum(["end", "center"]).optional(),
8362
8398
  container: headerContainerSchema,
8363
8399
  border: headerBorderSchema,
@@ -8650,770 +8686,669 @@ z$1.object({
8650
8686
  themes: z$1.array(themeSchema).length(3)
8651
8687
  });
8652
8688
  //#endregion
8689
+ //#region ../theme-core/src/site-styles/lookOptionGroups.ts
8690
+ function defineLookOptionGroup(group) {
8691
+ defaultOption(group);
8692
+ return group;
8693
+ }
8694
+ function defaultOption(group) {
8695
+ const option = group.options.find((candidate) => candidate.id === group.defaultOptionId);
8696
+ if (option) return option;
8697
+ throw new Error(`Look option group "${group.id}" defaults to missing option "${group.defaultOptionId}".`);
8698
+ }
8699
+ //#endregion
8653
8700
  //#region ../theme-core/src/site-styles/appearancePresetResolution.ts
8654
8701
  function assertValidOptionGroups(preset) {
8655
8702
  preset.optionGroups?.forEach((group) => {
8656
- 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}".`);
8703
+ defineLookOptionGroup(group);
8657
8704
  });
8658
8705
  }
8659
8706
  function defineBlockAppearancePreset(preset) {
8660
8707
  assertValidOptionGroups(preset);
8661
8708
  return preset;
8662
8709
  }
8663
- [...[
8664
- defineBlockAppearancePreset({
8665
- kind: "block-design",
8666
- id: "hero-immersive-image",
8667
- target: "hero",
8668
- label: "Immersive image hero",
8669
- blockKinds: ["block.hero"],
8670
- constraints: { layoutFamilies: ["centered", "compact"] },
8671
- layoutPatches: [{
8672
- constraints: { layoutVariantKeys: ["micro"] },
8673
- designPatch: {
8674
- sectionHeight: "banner",
8675
- heroTypographyScale: "display"
8676
- }
8677
- }],
8678
- design: {
8679
- sectionSurface: "hero-image",
8680
- contentFrame: plainFrame,
8681
- itemSurface: "none",
8682
- sectionHeight: "hero",
8683
- heroComposition: "center",
8684
- heroTypographyScale: "display",
8685
- imageSurfaceTreatment: { kind: "neutral-wash" }
8710
+ //#endregion
8711
+ //#region ../theme-core/src/site-styles/blockAppearancePresets.ts
8712
+ const brandScrimOptionGroups = [{
8713
+ id: "image-surface-treatment",
8714
+ label: "Treatment",
8715
+ defaultOptionId: "brand-scrim-primary",
8716
+ options: [{
8717
+ id: "brand-scrim-primary",
8718
+ label: "Brand scrim",
8719
+ designPatch: { imageSurfaceTreatment: {
8720
+ kind: "brand-scrim",
8721
+ token: "primary"
8722
+ } }
8723
+ }, {
8724
+ id: "neutral-scrim",
8725
+ label: "Neutral scrim",
8726
+ designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8727
+ }]
8728
+ }];
8729
+ const microBannerLayoutPatches = [{
8730
+ constraints: { layoutVariantKeys: ["micro"] },
8731
+ designPatch: { sectionHeight: "banner" }
8732
+ }];
8733
+ defineBlockAppearancePreset({
8734
+ id: "hero-immersive-image",
8735
+ target: "hero",
8736
+ label: "Immersive image hero",
8737
+ blockKinds: ["block.hero"],
8738
+ constraints: { layoutFamilies: ["centered", "compact"] },
8739
+ layoutPatches: [{
8740
+ constraints: { layoutVariantKeys: ["micro"] },
8741
+ designPatch: {
8742
+ sectionHeight: "banner",
8743
+ heroTypographyScale: "display"
8686
8744
  }
8687
- }),
8688
- defineBlockAppearancePreset({
8689
- kind: "block-design",
8690
- id: "hero-bottom-left-panel",
8691
- target: "hero",
8692
- label: "Bottom-left panel hero",
8693
- blockKinds: ["block.hero"],
8694
- constraints: { layoutFamilies: ["centered", "compact"] },
8695
- optionGroups: [{
8696
- id: "image-surface-treatment",
8697
- label: "Treatment",
8698
- selectedOptionId: "neutral-scrim",
8699
- options: [{
8700
- id: "neutral-scrim",
8701
- label: "Neutral scrim",
8702
- designPatch: { imageSurfaceTreatment: {
8703
- kind: "neutral-scrim",
8704
- intensity: "balanced"
8705
- } }
8706
- }, {
8707
- id: "brand-scrim-primary",
8708
- label: "Brand scrim",
8709
- designPatch: { imageSurfaceTreatment: {
8710
- kind: "brand-scrim",
8711
- token: "primary",
8712
- intensity: "balanced"
8713
- } }
8714
- }]
8715
- }],
8716
- layoutPatches: [{
8717
- constraints: { layoutVariantKeys: ["micro"] },
8718
- designPatch: {
8719
- sectionHeight: "banner",
8720
- heroTypographyScale: "editorial"
8721
- }
8722
- }],
8723
- design: {
8724
- sectionSurface: "hero-image",
8725
- contentFrame: panelFrame("raised"),
8726
- itemSurface: "none",
8727
- sectionHeight: "immersive",
8728
- heroComposition: "bottom-left",
8729
- heroTypographyScale: "display",
8730
- imageSurfaceTreatment: {
8745
+ }],
8746
+ design: {
8747
+ sectionSurface: "hero-image",
8748
+ contentFrame: plainFrame,
8749
+ itemSurface: "none",
8750
+ sectionHeight: "hero",
8751
+ heroComposition: "center",
8752
+ heroTypographyScale: "display",
8753
+ imageSurfaceTreatment: { kind: "neutral-wash" }
8754
+ }
8755
+ }), defineBlockAppearancePreset({
8756
+ id: "hero-bottom-left-panel",
8757
+ target: "hero",
8758
+ label: "Bottom-left panel hero",
8759
+ blockKinds: ["block.hero"],
8760
+ constraints: { layoutFamilies: ["centered", "compact"] },
8761
+ optionGroups: [{
8762
+ id: "image-surface-treatment",
8763
+ label: "Treatment",
8764
+ defaultOptionId: "neutral-scrim",
8765
+ options: [{
8766
+ id: "neutral-scrim",
8767
+ label: "Neutral scrim",
8768
+ designPatch: { imageSurfaceTreatment: {
8731
8769
  kind: "neutral-scrim",
8732
8770
  intensity: "balanced"
8733
- }
8734
- }
8735
- }),
8736
- defineBlockAppearancePreset({
8737
- kind: "block-design",
8738
- id: "hero-poster-image",
8739
- target: "hero",
8740
- label: "Poster image hero",
8741
- blockKinds: ["block.hero"],
8742
- constraints: { layoutFamilies: ["centered", "compact"] },
8743
- layoutPatches: [{
8744
- constraints: { layoutVariantKeys: ["micro"] },
8745
- designPatch: {
8746
- sectionHeight: "banner",
8747
- heroTypographyScale: "display"
8748
- }
8749
- }],
8750
- design: {
8751
- sectionSurface: "hero-image",
8752
- contentFrame: plainFrame,
8753
- itemSurface: "none",
8754
- sectionHeight: "immersive",
8755
- heroComposition: "center",
8756
- heroTypographyScale: "poster",
8757
- imageSurfaceTreatment: {
8771
+ } }
8772
+ }, {
8773
+ id: "brand-scrim-primary",
8774
+ label: "Brand scrim",
8775
+ designPatch: { imageSurfaceTreatment: {
8758
8776
  kind: "brand-scrim",
8759
8777
  token: "primary",
8760
- intensity: "strong"
8761
- }
8762
- }
8763
- }),
8764
- defineBlockAppearancePreset({
8765
- kind: "block-design",
8766
- id: "hero-brand-scrim",
8767
- target: "hero",
8768
- label: "Brand scrim image hero",
8769
- blockKinds: ["block.hero"],
8770
- constraints: { layoutFamilies: ["centered", "compact"] },
8771
- optionGroups: [{
8772
- id: "image-surface-treatment",
8773
- label: "Treatment",
8774
- selectedOptionId: "brand-scrim-primary",
8775
- options: [{
8776
- id: "brand-scrim-primary",
8777
- label: "Brand scrim",
8778
- designPatch: { imageSurfaceTreatment: {
8779
- kind: "brand-scrim",
8780
- token: "primary"
8781
- } }
8782
- }, {
8783
- id: "neutral-scrim",
8784
- label: "Neutral scrim",
8785
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8786
- }]
8787
- }],
8788
- layoutPatches: [{
8789
- constraints: { layoutVariantKeys: ["micro"] },
8790
- designPatch: { sectionHeight: "banner" }
8791
- }],
8792
- design: {
8793
- sectionSurface: "hero-image",
8794
- contentFrame: plainFrame,
8795
- itemSurface: "none",
8796
- sectionHeight: "immersive",
8797
- heroComposition: "center",
8798
- heroTypographyScale: "display",
8799
- imageSurfaceTreatment: {
8800
- kind: "brand-scrim",
8801
- token: "primary"
8802
- }
8803
- }
8804
- }),
8805
- defineBlockAppearancePreset({
8806
- kind: "block-design",
8807
- id: "hero-brand-scrim-fixed-frame",
8808
- target: "hero",
8809
- label: "Fixed-frame brand scrim hero",
8810
- blockKinds: ["block.hero"],
8811
- constraints: { layoutFamilies: ["centered", "compact"] },
8812
- optionGroups: [{
8813
- id: "image-surface-treatment",
8814
- label: "Treatment",
8815
- selectedOptionId: "brand-scrim-primary",
8816
- options: [{
8817
- id: "brand-scrim-primary",
8818
- label: "Brand scrim",
8819
- designPatch: { imageSurfaceTreatment: {
8820
- kind: "brand-scrim",
8821
- token: "primary"
8822
- } }
8823
- }, {
8824
- id: "neutral-scrim",
8825
- label: "Neutral scrim",
8826
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8827
- }]
8828
- }],
8829
- layoutPatches: [{
8830
- constraints: { layoutVariantKeys: ["micro"] },
8831
- designPatch: { sectionHeight: "banner" }
8832
- }],
8833
- design: {
8834
- sectionSurface: "hero-image",
8835
- contentFrame: plainFrame,
8836
- itemSurface: "none",
8837
- sectionHeight: "immersive",
8838
- heroComposition: "center",
8839
- heroTypographyScale: "display",
8840
- imageSurfaceTreatment: {
8841
- kind: "brand-scrim",
8842
- token: "primary"
8843
- },
8844
- imageSurfaceMotion: "fixed-frame",
8845
- eyebrowTreatment: "accent-pill-bounce"
8846
- }
8847
- }),
8848
- defineBlockAppearancePreset({
8849
- kind: "block-design",
8850
- id: "hero-brand-depth-expressive",
8851
- target: "hero",
8852
- label: "Expressive brand-depth hero",
8853
- blockKinds: ["block.hero"],
8854
- constraints: { layoutFamilies: ["centered", "compact"] },
8855
- design: {
8856
- sectionSurface: "brand-depth-band",
8857
- contentFrame: plainFrame,
8858
- itemSurface: "none",
8859
- heroComposition: "center",
8860
- heroTypographyScale: "editorial",
8861
- eyebrowTreatment: "accent-pill-bounce"
8862
- }
8863
- }),
8864
- defineBlockAppearancePreset({
8865
- kind: "block-design",
8866
- id: "hero-contained-intro",
8867
- target: "hero",
8868
- label: "Contained intro hero",
8869
- blockKinds: ["block.hero"],
8870
- design: {
8871
- sectionSurface: "muted-band",
8872
- contentFrame: panelFrame("inset"),
8873
- itemSurface: "none",
8874
- heroComposition: "center",
8875
- heroTypographyScale: "editorial"
8876
- }
8877
- }),
8878
- defineBlockAppearancePreset({
8879
- kind: "block-design",
8880
- id: "hero-split-editorial",
8881
- target: "hero",
8882
- label: "Editorial split hero",
8883
- blockKinds: ["block.hero"],
8884
- constraints: { layoutFamilies: ["split"] },
8885
- design: {
8886
- sectionSurface: "base",
8887
- contentFrame: plainFrame,
8888
- itemSurface: "none",
8889
- heroTypographyScale: "editorial"
8890
- }
8891
- }),
8892
- defineBlockAppearancePreset({
8893
- kind: "block-design",
8894
- id: "hero-split-brand",
8895
- target: "hero",
8896
- label: "Brand split hero",
8897
- blockKinds: ["block.hero"],
8898
- constraints: { layoutFamilies: ["split"] },
8899
- design: {
8900
- sectionSurface: "brand-depth-band",
8901
- contentFrame: plainFrame,
8902
- itemSurface: "none",
8903
- heroTypographyScale: "display",
8904
- eyebrowTreatment: "accent-pill-bounce"
8905
- }
8906
- }),
8907
- defineBlockAppearancePreset({
8908
- kind: "block-design",
8909
- id: "hero-split-soft-panel",
8910
- target: "hero",
8911
- label: "Soft panel split hero",
8912
- blockKinds: ["block.hero"],
8913
- constraints: { layoutFamilies: ["split"] },
8914
- design: {
8915
- sectionSurface: "muted-band",
8916
- contentFrame: panelFrame("raised"),
8917
- itemSurface: "none",
8778
+ intensity: "balanced"
8779
+ } }
8780
+ }]
8781
+ }],
8782
+ layoutPatches: [{
8783
+ constraints: { layoutVariantKeys: ["micro"] },
8784
+ designPatch: {
8785
+ sectionHeight: "banner",
8918
8786
  heroTypographyScale: "editorial"
8919
8787
  }
8920
- }),
8921
- defineBlockAppearancePreset({
8922
- kind: "block-design",
8923
- id: "hero-split-accent",
8924
- target: "hero",
8925
- label: "Accent split hero",
8926
- blockKinds: ["block.hero"],
8927
- constraints: { layoutFamilies: ["split"] },
8928
- design: {
8929
- sectionSurface: "accent-band",
8930
- contentFrame: panelFrame("raised"),
8931
- itemSurface: "none",
8788
+ }],
8789
+ design: {
8790
+ sectionSurface: "hero-image",
8791
+ contentFrame: panelFrame("raised"),
8792
+ itemSurface: "none",
8793
+ sectionHeight: "immersive",
8794
+ heroComposition: "bottom-left",
8795
+ heroTypographyScale: "display",
8796
+ imageSurfaceTreatment: {
8797
+ kind: "neutral-scrim",
8798
+ intensity: "balanced"
8799
+ }
8800
+ }
8801
+ }), defineBlockAppearancePreset({
8802
+ id: "hero-poster-image",
8803
+ target: "hero",
8804
+ label: "Poster image hero",
8805
+ blockKinds: ["block.hero"],
8806
+ constraints: { layoutFamilies: ["centered", "compact"] },
8807
+ layoutPatches: [{
8808
+ constraints: { layoutVariantKeys: ["micro"] },
8809
+ designPatch: {
8810
+ sectionHeight: "banner",
8932
8811
  heroTypographyScale: "display"
8933
8812
  }
8934
- }),
8935
- defineBlockAppearancePreset({
8936
- kind: "block-design",
8937
- id: "intro-editorial-statement",
8938
- target: "intro",
8939
- label: "Editorial intro statement",
8940
- blockKinds: ["block.intro"],
8941
- constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
8942
- design: {
8943
- sectionSurface: "base",
8944
- contentFrame: plainFrame,
8945
- itemSurface: "none",
8946
- composition: {
8947
- kind: "intro",
8948
- treatment: "editorial-statement"
8949
- }
8950
- }
8951
- }),
8952
- defineBlockAppearancePreset({
8953
- kind: "block-design",
8954
- id: "intro-portrait-bio",
8955
- target: "intro",
8956
- label: "Portrait and bio",
8957
- blockKinds: ["block.intro"],
8958
- constraints: { layoutVariantKeys: ["media-copy"] },
8959
- design: {
8960
- sectionSurface: "base",
8961
- contentFrame: plainFrame,
8962
- itemSurface: "none",
8963
- composition: {
8964
- kind: "intro",
8965
- treatment: "portrait-bio"
8966
- }
8967
- }
8968
- }),
8969
- defineBlockAppearancePreset({
8970
- kind: "block-design",
8971
- id: "offerings-preview-default-cards",
8972
- target: "offerings",
8973
- label: "Default offering cards",
8974
- blockKinds: ["block.offerings-preview"],
8975
- design: {
8976
- sectionSurface: "base",
8977
- contentFrame: plainFrame,
8978
- itemSurface: "default"
8979
- }
8980
- }),
8981
- defineBlockAppearancePreset({
8982
- kind: "block-design",
8983
- id: "offerings-preview-secondary-cards",
8984
- target: "offerings",
8985
- label: "Secondary offering cards",
8986
- blockKinds: ["block.offerings-preview"],
8987
- design: {
8988
- sectionSurface: "muted-band",
8989
- contentFrame: plainFrame,
8990
- itemSurface: "inset"
8991
- }
8992
- }),
8993
- defineBlockAppearancePreset({
8994
- kind: "block-design",
8995
- id: "offerings-preview-non-carded",
8996
- target: "offerings",
8997
- label: "Non-carded offerings",
8998
- blockKinds: ["block.offerings-preview"],
8999
- design: {
9000
- sectionSurface: "muted-band",
9001
- contentFrame: plainFrame,
9002
- itemSurface: "editorial"
9003
- }
9004
- }),
9005
- defineBlockAppearancePreset({
9006
- kind: "block-design",
9007
- id: "offerings-preview-paired-feature-cards",
9008
- target: "offerings",
9009
- label: "Paired feature cards",
9010
- blockKinds: ["block.offerings-preview"],
9011
- constraints: { layoutVariantKeys: ["cards"] },
9012
- design: {
9013
- sectionSurface: "base",
9014
- contentFrame: plainFrame,
9015
- itemSurface: "none"
9016
- }
9017
- }),
9018
- defineBlockAppearancePreset({
9019
- kind: "block-design",
9020
- id: "offerings-preview-open-editorial-columns",
9021
- target: "offerings",
9022
- label: "Open editorial columns",
9023
- blockKinds: ["block.offerings-preview"],
9024
- constraints: { layoutVariantKeys: ["cards"] },
9025
- design: {
9026
- sectionSurface: "base",
9027
- contentFrame: plainFrame,
9028
- itemSurface: "none"
9029
- }
9030
- }),
9031
- defineBlockAppearancePreset({
9032
- kind: "block-design",
9033
- id: "offerings-preview-joined-programme-panel",
9034
- target: "offerings",
9035
- label: "Joined programme panel",
9036
- blockKinds: ["block.offerings-preview"],
9037
- constraints: { layoutVariantKeys: ["cards"] },
9038
- design: {
9039
- sectionSurface: "base",
9040
- contentFrame: plainFrame,
9041
- itemSurface: "none"
9042
- }
9043
- }),
9044
- defineBlockAppearancePreset({
9045
- kind: "block-design",
9046
- id: "feature-cards-raised-rule",
9047
- target: "feature-cards",
9048
- label: "Raised cards with rule",
9049
- blockKinds: ["block.feature-cards"],
9050
- design: {
9051
- sectionSurface: "base",
9052
- contentFrame: plainFrame,
9053
- itemSurface: "raised"
9054
- }
9055
- }),
9056
- defineBlockAppearancePreset({
9057
- kind: "block-design",
9058
- id: "feature-cards-bold-colors",
9059
- target: "feature-cards",
9060
- label: "Bold colour-blocked cards",
9061
- blockKinds: ["block.feature-cards"],
9062
- design: {
9063
- sectionSurface: "base",
9064
- contentFrame: plainFrame,
9065
- itemSurface: "color-blocked"
9066
- }
9067
- }),
9068
- defineBlockAppearancePreset({
9069
- kind: "block-design",
9070
- id: "feature-cards-editorial-columns",
9071
- target: "feature-cards",
9072
- label: "Editorial open columns",
9073
- blockKinds: ["block.feature-cards"],
9074
- design: {
9075
- sectionSurface: "base",
9076
- contentFrame: plainFrame,
9077
- itemSurface: "editorial"
9078
- }
9079
- }),
9080
- defineBlockAppearancePreset({
9081
- kind: "block-design",
9082
- id: "feature-cards-asymmetric-emphasis",
9083
- target: "feature-cards",
9084
- label: "Asymmetric emphasis pair",
9085
- blockKinds: ["block.feature-cards"],
9086
- constraints: { layoutFamilies: ["grid"] },
9087
- design: {
9088
- sectionSurface: "base",
9089
- contentFrame: plainFrame,
9090
- itemSurface: "none",
9091
- composition: {
9092
- kind: "feature-cards",
9093
- treatment: "asymmetric-emphasis"
9094
- }
9095
- }
9096
- }),
9097
- defineBlockAppearancePreset({
9098
- kind: "block-design",
9099
- id: "feature-cards-framed-programme",
9100
- target: "feature-cards",
9101
- label: "Framed programme cards",
9102
- blockKinds: ["block.feature-cards"],
9103
- constraints: { layoutFamilies: ["grid"] },
9104
- design: {
9105
- sectionSurface: "brand-depth-band",
9106
- contentFrame: plainFrame,
9107
- itemSurface: "inset",
9108
- composition: {
9109
- kind: "feature-cards",
9110
- treatment: "framed-programme"
9111
- }
9112
- }
9113
- }),
9114
- defineBlockAppearancePreset({
9115
- kind: "block-design",
9116
- id: "feature-cards-soft-panels",
9117
- target: "feature-cards",
9118
- label: "Soft tinted panels",
9119
- blockKinds: ["block.feature-cards"],
9120
- design: {
9121
- sectionSurface: "base",
9122
- contentFrame: plainFrame,
9123
- itemSurface: "inset"
9124
- }
9125
- }),
9126
- defineBlockAppearancePreset({
9127
- kind: "block-design",
9128
- id: "feature-cards-editorial-diptych",
9129
- target: "feature-cards",
9130
- label: "Editorial diptych",
9131
- blockKinds: ["block.feature-cards"],
9132
- constraints: { layoutVariantKeys: ["editorial-diptych"] },
9133
- design: {
9134
- sectionSurface: "base",
9135
- contentFrame: plainFrame,
9136
- itemSurface: "flat"
9137
- }
9138
- }),
9139
- defineBlockAppearancePreset({
9140
- kind: "block-design",
9141
- id: "feature-cards-editorial-pathways",
9142
- target: "feature-cards",
9143
- label: "Editorial pathways",
9144
- blockKinds: ["block.feature-cards"],
9145
- constraints: { layoutVariantKeys: ["editorial-pathways"] },
9146
- design: {
9147
- sectionSurface: "base",
9148
- contentFrame: plainFrame,
9149
- itemSurface: "flat"
9150
- }
9151
- }),
9152
- defineBlockAppearancePreset({
9153
- kind: "block-design",
9154
- id: "feature-cards-photo-tiles",
9155
- target: "feature-cards",
9156
- label: "Photo tiles",
9157
- blockKinds: ["block.feature-cards"],
9158
- design: {
9159
- sectionSurface: "base",
9160
- contentFrame: plainFrame,
9161
- itemSurface: "raised"
9162
- }
9163
- }),
9164
- defineBlockAppearancePreset({
9165
- kind: "block-design",
9166
- id: "events-lined-panel",
9167
- target: "events",
9168
- label: "Raised event panel",
9169
- blockKinds: ["block.event-calendar", "block.event-listing"],
9170
- design: {
9171
- sectionSurface: "base",
9172
- contentFrame: panelFrame("raised"),
9173
- itemSurface: "none"
9174
- }
9175
- }),
9176
- defineBlockAppearancePreset({
9177
- kind: "block-design",
9178
- id: "events-ruled-register",
9179
- target: "events",
9180
- label: "Ruled event register",
9181
- blockKinds: ["block.event-calendar", "block.event-listing"],
9182
- design: {
9183
- sectionSurface: "brand-depth-band",
9184
- contentFrame: plainFrame,
9185
- itemSurface: "none",
9186
- eventListTreatment: "ruled-register"
9187
- }
9188
- }),
9189
- defineBlockAppearancePreset({
9190
- kind: "block-design",
9191
- id: "events-editorial-register",
9192
- target: "events",
9193
- label: "Editorial event register",
9194
- blockKinds: ["block.event-calendar", "block.event-listing"],
9195
- design: {
9196
- sectionSurface: "base",
9197
- contentFrame: plainFrame,
9198
- itemSurface: "none",
9199
- eventListTreatment: "editorial-register"
9200
- }
9201
- }),
9202
- defineBlockAppearancePreset({
9203
- kind: "block-design",
9204
- id: "events-dense-index",
9205
- target: "events",
9206
- label: "Dense event index",
9207
- blockKinds: ["block.event-calendar", "block.event-listing"],
9208
- design: {
9209
- sectionSurface: "accent-band",
9210
- contentFrame: plainFrame,
9211
- itemSurface: "none",
9212
- eventListTreatment: "dense-index"
9213
- }
9214
- }),
9215
- defineBlockAppearancePreset({
9216
- kind: "block-design",
9217
- id: "schedule-details-brand-depth",
9218
- target: "events",
9219
- label: "Brand-depth schedule details",
9220
- blockKinds: ["block.event-details", "block.course-details"],
9221
- design: {
9222
- sectionSurface: "brand-depth-band",
9223
- contentFrame: plainFrame,
9224
- itemSurface: "none",
9225
- tileTreatment: "brand-depth"
9226
- }
9227
- }),
9228
- defineBlockAppearancePreset({
9229
- kind: "block-design",
9230
- id: "media-text-flush-feature",
9231
- target: "media-text",
9232
- label: "Flush media feature",
9233
- blockKinds: ["block.media-text"],
9234
- design: {
9235
- sectionSurface: "muted-band",
9236
- contentFrame: flushPanelFrame({ bleed: "start" }),
9237
- itemSurface: "none"
9238
- }
9239
- }),
9240
- defineBlockAppearancePreset({
9241
- kind: "block-design",
9242
- id: "testimonials-simple-cards",
9243
- target: "testimonials",
9244
- label: "Simple testimonial cards",
9245
- blockKinds: ["block.testimonials"],
9246
- design: {
9247
- sectionSurface: "base",
9248
- contentFrame: plainFrame,
9249
- itemSurface: "default"
9250
- }
9251
- }),
9252
- defineBlockAppearancePreset({
9253
- kind: "block-design",
9254
- id: "testimonials-raised-panel",
9255
- target: "testimonials",
9256
- label: "Raised testimonial panel",
9257
- blockKinds: ["block.testimonials"],
9258
- design: {
9259
- sectionSurface: "muted-band",
9260
- contentFrame: panelFrame("raised"),
9261
- itemSurface: "raised"
9262
- }
9263
- }),
9264
- defineBlockAppearancePreset({
9265
- kind: "block-design",
9266
- id: "testimonials-accent-panel",
9267
- target: "testimonials",
9268
- label: "Accent testimonial panel",
9269
- blockKinds: ["block.testimonials"],
9270
- design: {
9271
- sectionSurface: "accent-band",
9272
- contentFrame: panelFrame("raised"),
9273
- itemSurface: "raised"
9274
- }
9275
- }),
9276
- defineBlockAppearancePreset({
9277
- kind: "block-design",
9278
- id: "testimonials-default-cards",
9279
- target: "testimonials",
9280
- label: "Default cards",
9281
- blockKinds: ["block.testimonials"],
9282
- design: {
9283
- sectionSurface: "base",
9284
- contentFrame: plainFrame,
9285
- itemSurface: "none",
9286
- testimonialCardTreatment: "default"
9287
- }
9288
- }),
9289
- defineBlockAppearancePreset({
9290
- kind: "block-design",
9291
- id: "testimonials-statement-cards",
9292
- target: "testimonials",
9293
- label: "Statement cards",
9294
- blockKinds: ["block.testimonials"],
9295
- design: {
9296
- sectionSurface: "accent-band",
9297
- contentFrame: plainFrame,
9298
- itemSurface: "raised",
9299
- testimonialCardTreatment: "statement"
9300
- }
9301
- }),
9302
- defineBlockAppearancePreset({
9303
- kind: "block-design",
9304
- id: "testimonials-brand-statement-cards",
9305
- target: "testimonials",
9306
- label: "Brand statement cards",
9307
- blockKinds: ["block.testimonials"],
9308
- design: {
9309
- sectionSurface: "brand-depth-band",
9310
- contentFrame: plainFrame,
9311
- itemSurface: "raised",
9312
- testimonialCardTreatment: "statement"
9313
- }
9314
- }),
9315
- defineBlockAppearancePreset({
9316
- kind: "block-design",
9317
- id: "testimonials-non-carded",
9318
- target: "testimonials",
9319
- label: "Non-carded",
9320
- blockKinds: ["block.testimonials"],
9321
- design: {
9322
- sectionSurface: "muted-band",
9323
- contentFrame: plainFrame,
9324
- itemSurface: "none",
9325
- testimonialCardTreatment: "non-carded"
9326
- }
9327
- }),
9328
- defineBlockAppearancePreset({
9329
- kind: "block-design",
9330
- id: "testimonials-evergreen-lead",
9331
- target: "testimonials",
9332
- label: "Evergreen lead",
9333
- blockKinds: ["block.testimonials"],
9334
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9335
- design: {
9336
- sectionSurface: "base",
9337
- contentFrame: plainFrame,
9338
- itemSurface: "none"
9339
- }
9340
- }),
9341
- defineBlockAppearancePreset({
9342
- kind: "block-design",
9343
- id: "testimonials-room-and-response",
9344
- target: "testimonials",
9345
- label: "Room and response",
9346
- blockKinds: ["block.testimonials"],
9347
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9348
- design: {
9349
- sectionSurface: "base",
9350
- contentFrame: plainFrame,
9351
- itemSurface: "none"
9352
- }
9353
- }),
9354
- defineBlockAppearancePreset({
9355
- kind: "block-design",
9356
- id: "testimonials-open-floor",
9357
- target: "testimonials",
9358
- label: "Open floor",
9359
- blockKinds: ["block.testimonials"],
9360
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9361
- design: {
9362
- sectionSurface: "base",
9363
- contentFrame: plainFrame,
9364
- itemSurface: "none"
9365
- }
9366
- }),
9367
- defineBlockAppearancePreset({
9368
- kind: "block-design",
9369
- id: "faq-base-accordion",
9370
- target: "faq",
9371
- label: "Base accordion FAQ",
9372
- blockKinds: ["block.faq"],
9373
- design: {
9374
- sectionSurface: "base",
9375
- contentFrame: plainFrame,
9376
- itemSurface: "default"
9377
- }
9378
- }),
9379
- defineBlockAppearancePreset({
9380
- kind: "block-design",
9381
- id: "faq-contained-help",
9382
- target: "faq",
9383
- label: "Contained help panel",
9384
- blockKinds: ["block.faq"],
9385
- design: {
9386
- sectionSurface: "muted-band",
9387
- contentFrame: panelFrame("inset"),
9388
- itemSurface: "default"
9389
- }
9390
- }),
9391
- defineBlockAppearancePreset({
9392
- kind: "block-design",
9393
- id: "contact-form-panel",
9394
- target: "contact-form",
9395
- label: "Raised form panel",
9396
- blockKinds: ["block.form"],
9397
- design: {
9398
- sectionSurface: "muted-band",
9399
- contentFrame: panelFrame("raised"),
9400
- itemSurface: "none"
9401
- }
9402
- }),
9403
- defineBlockAppearancePreset({
9404
- kind: "block-design",
9405
- id: "cta-accent-band",
9406
- target: "cta",
9407
- label: "Accent CTA band",
9408
- blockKinds: ["block.cta-full"],
9409
- design: {
9410
- sectionSurface: "accent-band",
9411
- contentFrame: plainFrame,
9412
- itemSurface: "none",
9413
- eyebrowTreatment: "accent"
9414
- }
9415
- })
9416
- ]];
8813
+ }],
8814
+ design: {
8815
+ sectionSurface: "hero-image",
8816
+ contentFrame: plainFrame,
8817
+ itemSurface: "none",
8818
+ sectionHeight: "immersive",
8819
+ heroComposition: "center",
8820
+ heroTypographyScale: "poster",
8821
+ imageSurfaceTreatment: {
8822
+ kind: "brand-scrim",
8823
+ token: "primary",
8824
+ intensity: "strong"
8825
+ }
8826
+ }
8827
+ }), defineBlockAppearancePreset({
8828
+ id: "hero-brand-scrim",
8829
+ target: "hero",
8830
+ label: "Brand scrim image hero",
8831
+ blockKinds: ["block.hero"],
8832
+ constraints: { layoutFamilies: ["centered", "compact"] },
8833
+ optionGroups: brandScrimOptionGroups,
8834
+ layoutPatches: microBannerLayoutPatches,
8835
+ design: {
8836
+ sectionSurface: "hero-image",
8837
+ contentFrame: plainFrame,
8838
+ itemSurface: "none",
8839
+ sectionHeight: "immersive",
8840
+ heroComposition: "center",
8841
+ heroTypographyScale: "display",
8842
+ imageSurfaceTreatment: {
8843
+ kind: "brand-scrim",
8844
+ token: "primary"
8845
+ }
8846
+ }
8847
+ }), defineBlockAppearancePreset({
8848
+ id: "hero-brand-scrim-fixed-frame",
8849
+ target: "hero",
8850
+ label: "Fixed-frame brand scrim hero",
8851
+ blockKinds: ["block.hero"],
8852
+ constraints: { layoutFamilies: ["centered", "compact"] },
8853
+ optionGroups: brandScrimOptionGroups,
8854
+ layoutPatches: microBannerLayoutPatches,
8855
+ design: {
8856
+ sectionSurface: "hero-image",
8857
+ contentFrame: plainFrame,
8858
+ itemSurface: "none",
8859
+ sectionHeight: "immersive",
8860
+ heroComposition: "center",
8861
+ heroTypographyScale: "display",
8862
+ imageSurfaceTreatment: {
8863
+ kind: "brand-scrim",
8864
+ token: "primary"
8865
+ },
8866
+ imageSurfaceMotion: "fixed-frame",
8867
+ eyebrowTreatment: "accent-pill-bounce"
8868
+ }
8869
+ }), defineBlockAppearancePreset({
8870
+ id: "hero-brand-depth-expressive",
8871
+ target: "hero",
8872
+ label: "Expressive brand-depth hero",
8873
+ blockKinds: ["block.hero"],
8874
+ constraints: { layoutFamilies: ["centered", "compact"] },
8875
+ design: {
8876
+ sectionSurface: "brand-depth-band",
8877
+ contentFrame: plainFrame,
8878
+ itemSurface: "none",
8879
+ heroComposition: "center",
8880
+ heroTypographyScale: "editorial",
8881
+ eyebrowTreatment: "accent-pill-bounce"
8882
+ }
8883
+ }), defineBlockAppearancePreset({
8884
+ id: "hero-contained-intro",
8885
+ target: "hero",
8886
+ label: "Contained intro hero",
8887
+ blockKinds: ["block.hero"],
8888
+ design: {
8889
+ sectionSurface: "muted-band",
8890
+ contentFrame: panelFrame("inset"),
8891
+ itemSurface: "none",
8892
+ heroComposition: "center",
8893
+ heroTypographyScale: "editorial"
8894
+ }
8895
+ }), defineBlockAppearancePreset({
8896
+ id: "hero-split-editorial",
8897
+ target: "hero",
8898
+ label: "Editorial split hero",
8899
+ blockKinds: ["block.hero"],
8900
+ constraints: { layoutFamilies: ["split"] },
8901
+ design: {
8902
+ sectionSurface: "base",
8903
+ contentFrame: plainFrame,
8904
+ itemSurface: "none",
8905
+ heroTypographyScale: "editorial"
8906
+ }
8907
+ }), defineBlockAppearancePreset({
8908
+ id: "hero-split-brand",
8909
+ target: "hero",
8910
+ label: "Brand split hero",
8911
+ blockKinds: ["block.hero"],
8912
+ constraints: { layoutFamilies: ["split"] },
8913
+ design: {
8914
+ sectionSurface: "brand-depth-band",
8915
+ contentFrame: plainFrame,
8916
+ itemSurface: "none",
8917
+ heroTypographyScale: "display",
8918
+ eyebrowTreatment: "accent-pill-bounce"
8919
+ }
8920
+ }), defineBlockAppearancePreset({
8921
+ id: "hero-split-soft-panel",
8922
+ target: "hero",
8923
+ label: "Soft panel split hero",
8924
+ blockKinds: ["block.hero"],
8925
+ constraints: { layoutFamilies: ["split"] },
8926
+ design: {
8927
+ sectionSurface: "muted-band",
8928
+ contentFrame: panelFrame("raised"),
8929
+ itemSurface: "none",
8930
+ heroTypographyScale: "editorial"
8931
+ }
8932
+ }), defineBlockAppearancePreset({
8933
+ id: "hero-split-accent",
8934
+ target: "hero",
8935
+ label: "Accent split hero",
8936
+ blockKinds: ["block.hero"],
8937
+ constraints: { layoutFamilies: ["split"] },
8938
+ design: {
8939
+ sectionSurface: "accent-band",
8940
+ contentFrame: panelFrame("raised"),
8941
+ itemSurface: "none",
8942
+ heroTypographyScale: "display"
8943
+ }
8944
+ }), defineBlockAppearancePreset({
8945
+ id: "intro-editorial-statement",
8946
+ target: "intro",
8947
+ label: "Editorial intro statement",
8948
+ blockKinds: ["block.intro"],
8949
+ constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
8950
+ design: {
8951
+ sectionSurface: "base",
8952
+ contentFrame: plainFrame,
8953
+ itemSurface: "none",
8954
+ composition: {
8955
+ kind: "intro",
8956
+ treatment: "editorial-statement"
8957
+ }
8958
+ }
8959
+ }), defineBlockAppearancePreset({
8960
+ id: "intro-portrait-bio",
8961
+ target: "intro",
8962
+ label: "Portrait and bio",
8963
+ blockKinds: ["block.intro"],
8964
+ constraints: { layoutVariantKeys: ["media-copy"] },
8965
+ design: {
8966
+ sectionSurface: "base",
8967
+ contentFrame: plainFrame,
8968
+ itemSurface: "none",
8969
+ composition: {
8970
+ kind: "intro",
8971
+ treatment: "portrait-bio"
8972
+ }
8973
+ }
8974
+ }), defineBlockAppearancePreset({
8975
+ id: "offerings-preview-default-cards",
8976
+ target: "offerings",
8977
+ label: "Default offering cards",
8978
+ blockKinds: ["block.offerings-preview"],
8979
+ design: {
8980
+ sectionSurface: "base",
8981
+ contentFrame: plainFrame,
8982
+ itemSurface: "default"
8983
+ }
8984
+ }), defineBlockAppearancePreset({
8985
+ id: "offerings-preview-secondary-cards",
8986
+ target: "offerings",
8987
+ label: "Secondary offering cards",
8988
+ blockKinds: ["block.offerings-preview"],
8989
+ design: {
8990
+ sectionSurface: "muted-band",
8991
+ contentFrame: plainFrame,
8992
+ itemSurface: "inset"
8993
+ }
8994
+ }), defineBlockAppearancePreset({
8995
+ id: "offerings-preview-non-carded",
8996
+ target: "offerings",
8997
+ label: "Non-carded offerings",
8998
+ blockKinds: ["block.offerings-preview"],
8999
+ design: {
9000
+ sectionSurface: "muted-band",
9001
+ contentFrame: plainFrame,
9002
+ itemSurface: "editorial"
9003
+ }
9004
+ }), defineBlockAppearancePreset({
9005
+ id: "offerings-preview-paired-feature-cards",
9006
+ target: "offerings",
9007
+ label: "Paired feature cards",
9008
+ blockKinds: ["block.offerings-preview"],
9009
+ constraints: { layoutVariantKeys: ["cards"] },
9010
+ design: {
9011
+ sectionSurface: "base",
9012
+ contentFrame: plainFrame,
9013
+ itemSurface: "none"
9014
+ }
9015
+ }), defineBlockAppearancePreset({
9016
+ id: "offerings-preview-open-editorial-columns",
9017
+ target: "offerings",
9018
+ label: "Open editorial columns",
9019
+ blockKinds: ["block.offerings-preview"],
9020
+ constraints: { layoutVariantKeys: ["cards"] },
9021
+ design: {
9022
+ sectionSurface: "base",
9023
+ contentFrame: plainFrame,
9024
+ itemSurface: "none"
9025
+ }
9026
+ }), defineBlockAppearancePreset({
9027
+ id: "offerings-preview-joined-programme-panel",
9028
+ target: "offerings",
9029
+ label: "Joined programme panel",
9030
+ blockKinds: ["block.offerings-preview"],
9031
+ constraints: { layoutVariantKeys: ["cards"] },
9032
+ design: {
9033
+ sectionSurface: "base",
9034
+ contentFrame: plainFrame,
9035
+ itemSurface: "none"
9036
+ }
9037
+ }), defineBlockAppearancePreset({
9038
+ id: "feature-cards-raised-rule",
9039
+ target: "feature-cards",
9040
+ label: "Raised cards with rule",
9041
+ blockKinds: ["block.feature-cards"],
9042
+ design: {
9043
+ sectionSurface: "base",
9044
+ contentFrame: plainFrame,
9045
+ itemSurface: "raised"
9046
+ }
9047
+ }), defineBlockAppearancePreset({
9048
+ id: "feature-cards-bold-colors",
9049
+ target: "feature-cards",
9050
+ label: "Bold colour-blocked cards",
9051
+ blockKinds: ["block.feature-cards"],
9052
+ design: {
9053
+ sectionSurface: "base",
9054
+ contentFrame: plainFrame,
9055
+ itemSurface: "color-blocked"
9056
+ }
9057
+ }), defineBlockAppearancePreset({
9058
+ id: "feature-cards-editorial-columns",
9059
+ target: "feature-cards",
9060
+ label: "Editorial open columns",
9061
+ blockKinds: ["block.feature-cards"],
9062
+ design: {
9063
+ sectionSurface: "base",
9064
+ contentFrame: plainFrame,
9065
+ itemSurface: "editorial"
9066
+ }
9067
+ }), defineBlockAppearancePreset({
9068
+ id: "feature-cards-asymmetric-emphasis",
9069
+ target: "feature-cards",
9070
+ label: "Asymmetric emphasis pair",
9071
+ blockKinds: ["block.feature-cards"],
9072
+ constraints: { layoutFamilies: ["grid"] },
9073
+ design: {
9074
+ sectionSurface: "base",
9075
+ contentFrame: plainFrame,
9076
+ itemSurface: "none",
9077
+ composition: {
9078
+ kind: "feature-cards",
9079
+ treatment: "asymmetric-emphasis"
9080
+ }
9081
+ }
9082
+ }), defineBlockAppearancePreset({
9083
+ id: "feature-cards-framed-programme",
9084
+ target: "feature-cards",
9085
+ label: "Framed programme cards",
9086
+ blockKinds: ["block.feature-cards"],
9087
+ constraints: { layoutFamilies: ["grid"] },
9088
+ design: {
9089
+ sectionSurface: "brand-depth-band",
9090
+ contentFrame: plainFrame,
9091
+ itemSurface: "inset",
9092
+ composition: {
9093
+ kind: "feature-cards",
9094
+ treatment: "framed-programme"
9095
+ }
9096
+ }
9097
+ }), defineBlockAppearancePreset({
9098
+ id: "feature-cards-soft-panels",
9099
+ target: "feature-cards",
9100
+ label: "Soft tinted panels",
9101
+ blockKinds: ["block.feature-cards"],
9102
+ design: {
9103
+ sectionSurface: "base",
9104
+ contentFrame: plainFrame,
9105
+ itemSurface: "inset"
9106
+ }
9107
+ }), defineBlockAppearancePreset({
9108
+ id: "feature-cards-editorial-diptych",
9109
+ target: "feature-cards",
9110
+ label: "Editorial diptych",
9111
+ blockKinds: ["block.feature-cards"],
9112
+ constraints: { layoutVariantKeys: ["editorial-diptych"] },
9113
+ design: {
9114
+ sectionSurface: "base",
9115
+ contentFrame: plainFrame,
9116
+ itemSurface: "flat"
9117
+ }
9118
+ }), defineBlockAppearancePreset({
9119
+ id: "feature-cards-editorial-pathways",
9120
+ target: "feature-cards",
9121
+ label: "Editorial pathways",
9122
+ blockKinds: ["block.feature-cards"],
9123
+ constraints: { layoutVariantKeys: ["editorial-pathways"] },
9124
+ design: {
9125
+ sectionSurface: "base",
9126
+ contentFrame: plainFrame,
9127
+ itemSurface: "flat"
9128
+ }
9129
+ }), defineBlockAppearancePreset({
9130
+ id: "feature-cards-photo-tiles",
9131
+ target: "feature-cards",
9132
+ label: "Photo tiles",
9133
+ blockKinds: ["block.feature-cards"],
9134
+ design: {
9135
+ sectionSurface: "base",
9136
+ contentFrame: plainFrame,
9137
+ itemSurface: "raised"
9138
+ }
9139
+ }), defineBlockAppearancePreset({
9140
+ id: "events-lined-panel",
9141
+ target: "events",
9142
+ label: "Raised event panel",
9143
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9144
+ design: {
9145
+ sectionSurface: "base",
9146
+ contentFrame: panelFrame("raised"),
9147
+ itemSurface: "none"
9148
+ }
9149
+ }), defineBlockAppearancePreset({
9150
+ id: "events-ruled-register",
9151
+ target: "events",
9152
+ label: "Ruled event register",
9153
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9154
+ design: {
9155
+ sectionSurface: "brand-depth-band",
9156
+ contentFrame: plainFrame,
9157
+ itemSurface: "none",
9158
+ eventListTreatment: "ruled-register"
9159
+ }
9160
+ }), defineBlockAppearancePreset({
9161
+ id: "events-editorial-register",
9162
+ target: "events",
9163
+ label: "Editorial event register",
9164
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9165
+ design: {
9166
+ sectionSurface: "base",
9167
+ contentFrame: plainFrame,
9168
+ itemSurface: "none",
9169
+ eventListTreatment: "editorial-register"
9170
+ }
9171
+ }), defineBlockAppearancePreset({
9172
+ id: "events-dense-index",
9173
+ target: "events",
9174
+ label: "Dense event index",
9175
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9176
+ design: {
9177
+ sectionSurface: "accent-band",
9178
+ contentFrame: plainFrame,
9179
+ itemSurface: "none",
9180
+ eventListTreatment: "dense-index"
9181
+ }
9182
+ }), defineBlockAppearancePreset({
9183
+ id: "schedule-details-brand-depth",
9184
+ target: "events",
9185
+ label: "Brand-depth schedule details",
9186
+ blockKinds: ["block.event-details", "block.course-details"],
9187
+ design: {
9188
+ sectionSurface: "brand-depth-band",
9189
+ contentFrame: plainFrame,
9190
+ itemSurface: "none",
9191
+ tileTreatment: "brand-depth"
9192
+ }
9193
+ }), defineBlockAppearancePreset({
9194
+ id: "media-text-flush-feature",
9195
+ target: "media-text",
9196
+ label: "Flush media feature",
9197
+ blockKinds: ["block.media-text"],
9198
+ design: {
9199
+ sectionSurface: "muted-band",
9200
+ contentFrame: flushPanelFrame({ bleed: "start" }),
9201
+ itemSurface: "none"
9202
+ }
9203
+ }), defineBlockAppearancePreset({
9204
+ id: "testimonials-simple-cards",
9205
+ target: "testimonials",
9206
+ label: "Simple testimonial cards",
9207
+ blockKinds: ["block.testimonials"],
9208
+ design: {
9209
+ sectionSurface: "base",
9210
+ contentFrame: plainFrame,
9211
+ itemSurface: "default"
9212
+ }
9213
+ }), defineBlockAppearancePreset({
9214
+ id: "testimonials-raised-panel",
9215
+ target: "testimonials",
9216
+ label: "Raised testimonial panel",
9217
+ blockKinds: ["block.testimonials"],
9218
+ design: {
9219
+ sectionSurface: "muted-band",
9220
+ contentFrame: panelFrame("raised"),
9221
+ itemSurface: "raised"
9222
+ }
9223
+ }), defineBlockAppearancePreset({
9224
+ id: "testimonials-accent-panel",
9225
+ target: "testimonials",
9226
+ label: "Accent testimonial panel",
9227
+ blockKinds: ["block.testimonials"],
9228
+ design: {
9229
+ sectionSurface: "accent-band",
9230
+ contentFrame: panelFrame("raised"),
9231
+ itemSurface: "raised"
9232
+ }
9233
+ }), defineBlockAppearancePreset({
9234
+ id: "testimonials-default-cards",
9235
+ target: "testimonials",
9236
+ label: "Default cards",
9237
+ blockKinds: ["block.testimonials"],
9238
+ design: {
9239
+ sectionSurface: "base",
9240
+ contentFrame: plainFrame,
9241
+ itemSurface: "none",
9242
+ testimonialCardTreatment: "default"
9243
+ }
9244
+ }), defineBlockAppearancePreset({
9245
+ id: "testimonials-statement-cards",
9246
+ target: "testimonials",
9247
+ label: "Statement cards",
9248
+ blockKinds: ["block.testimonials"],
9249
+ design: {
9250
+ sectionSurface: "accent-band",
9251
+ contentFrame: plainFrame,
9252
+ itemSurface: "raised",
9253
+ testimonialCardTreatment: "statement"
9254
+ }
9255
+ }), defineBlockAppearancePreset({
9256
+ id: "testimonials-brand-statement-cards",
9257
+ target: "testimonials",
9258
+ label: "Brand statement cards",
9259
+ blockKinds: ["block.testimonials"],
9260
+ design: {
9261
+ sectionSurface: "brand-depth-band",
9262
+ contentFrame: plainFrame,
9263
+ itemSurface: "raised",
9264
+ testimonialCardTreatment: "statement"
9265
+ }
9266
+ }), defineBlockAppearancePreset({
9267
+ id: "testimonials-non-carded",
9268
+ target: "testimonials",
9269
+ label: "Non-carded",
9270
+ blockKinds: ["block.testimonials"],
9271
+ design: {
9272
+ sectionSurface: "muted-band",
9273
+ contentFrame: plainFrame,
9274
+ itemSurface: "none",
9275
+ testimonialCardTreatment: "non-carded"
9276
+ }
9277
+ }), defineBlockAppearancePreset({
9278
+ id: "testimonials-evergreen-lead",
9279
+ target: "testimonials",
9280
+ label: "Evergreen lead",
9281
+ blockKinds: ["block.testimonials"],
9282
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9283
+ design: {
9284
+ sectionSurface: "base",
9285
+ contentFrame: plainFrame,
9286
+ itemSurface: "none"
9287
+ }
9288
+ }), defineBlockAppearancePreset({
9289
+ id: "testimonials-room-and-response",
9290
+ target: "testimonials",
9291
+ label: "Room and response",
9292
+ blockKinds: ["block.testimonials"],
9293
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9294
+ design: {
9295
+ sectionSurface: "base",
9296
+ contentFrame: plainFrame,
9297
+ itemSurface: "none"
9298
+ }
9299
+ }), defineBlockAppearancePreset({
9300
+ id: "testimonials-open-floor",
9301
+ target: "testimonials",
9302
+ label: "Open floor",
9303
+ blockKinds: ["block.testimonials"],
9304
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9305
+ design: {
9306
+ sectionSurface: "base",
9307
+ contentFrame: plainFrame,
9308
+ itemSurface: "none"
9309
+ }
9310
+ }), defineBlockAppearancePreset({
9311
+ id: "faq-base-accordion",
9312
+ target: "faq",
9313
+ label: "Base accordion FAQ",
9314
+ blockKinds: ["block.faq"],
9315
+ design: {
9316
+ sectionSurface: "base",
9317
+ contentFrame: plainFrame,
9318
+ itemSurface: "default"
9319
+ }
9320
+ }), defineBlockAppearancePreset({
9321
+ id: "faq-contained-help",
9322
+ target: "faq",
9323
+ label: "Contained help panel",
9324
+ blockKinds: ["block.faq"],
9325
+ design: {
9326
+ sectionSurface: "muted-band",
9327
+ contentFrame: panelFrame("inset"),
9328
+ itemSurface: "default"
9329
+ }
9330
+ }), defineBlockAppearancePreset({
9331
+ id: "contact-form-panel",
9332
+ target: "contact-form",
9333
+ label: "Raised form panel",
9334
+ blockKinds: ["block.form"],
9335
+ design: {
9336
+ sectionSurface: "muted-band",
9337
+ contentFrame: panelFrame("raised"),
9338
+ itemSurface: "none"
9339
+ }
9340
+ }), defineBlockAppearancePreset({
9341
+ id: "cta-accent-band",
9342
+ target: "cta",
9343
+ label: "Accent CTA band",
9344
+ blockKinds: ["block.cta-full"],
9345
+ design: {
9346
+ sectionSurface: "accent-band",
9347
+ contentFrame: plainFrame,
9348
+ itemSurface: "none",
9349
+ eyebrowTreatment: "accent"
9350
+ }
9351
+ });
9417
9352
  //#endregion
9418
9353
  //#region ../theme-core/src/site-styles/headerCtaVariants.ts
9419
9354
  function hasButtonVariant(theme, variantId) {
@@ -9494,6 +9429,27 @@ function uniqueStrings(values) {
9494
9429
  return Array.from(new Set(values));
9495
9430
  }
9496
9431
  //#endregion
9432
+ //#region ../theme-core/src/site-styles/headerInteractionPalette.ts
9433
+ const clearSplitInteractionPalette = defineLookOptionGroup({
9434
+ id: "interaction-palette",
9435
+ label: "Hover colour",
9436
+ defaultOptionId: "accent",
9437
+ options: [
9438
+ {
9439
+ id: "accent",
9440
+ label: "Accent"
9441
+ },
9442
+ {
9443
+ id: "primary",
9444
+ label: "Primary"
9445
+ },
9446
+ {
9447
+ id: "secondary",
9448
+ label: "Secondary"
9449
+ }
9450
+ ]
9451
+ });
9452
+ //#endregion
9497
9453
  //#region ../theme-core/src/site-styles/headerLooks.ts
9498
9454
  function asHeaderLookId(value) {
9499
9455
  return value;
@@ -9627,7 +9583,7 @@ const overlayLogoAccommodations = [
9627
9583
  * optional nested styling fields that would otherwise leak from another Look.
9628
9584
  */
9629
9585
  function baseHeader(theme) {
9630
- 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;
9586
+ 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;
9631
9587
  return {
9632
9588
  ...header,
9633
9589
  navContainer: {
@@ -9642,7 +9598,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9642
9598
  id: asHeaderLayoutId("classic"),
9643
9599
  label: "Classic",
9644
9600
  description: "Logo and navigation in one practical horizontal row.",
9645
- structure: "inline-classic",
9646
9601
  variant: "classic",
9647
9602
  defaultPositioning: "sticky",
9648
9603
  shrinkOnScroll: false
@@ -9651,7 +9606,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9651
9606
  id: asHeaderLayoutId("centered"),
9652
9607
  label: "Centered",
9653
9608
  description: "Logo centered above a balanced navigation row.",
9654
- structure: "centered-stack",
9655
9609
  variant: "centered",
9656
9610
  defaultPositioning: "static",
9657
9611
  shrinkOnScroll: false,
@@ -9667,7 +9621,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9667
9621
  id: asHeaderLayoutId("floating"),
9668
9622
  label: "Floating",
9669
9623
  description: "Detached header chrome that sits over the opening section.",
9670
- structure: "floating-shell",
9671
9624
  variant: "floating",
9672
9625
  defaultPositioning: "sticky",
9673
9626
  shrinkOnScroll: true,
@@ -9829,10 +9782,13 @@ const headerStyleCatalog = defineExactCatalog()([
9829
9782
  label: "Clear Split",
9830
9783
  description: "Floating logo with transparent navigation and no shared shell.",
9831
9784
  supportedLayoutIds: supportedLayouts(["floating"]),
9832
- navInteraction: "color-change",
9785
+ navInteraction: "pill-background",
9833
9786
  surface: "floating",
9834
- defaultDepth: "none",
9787
+ defaultDepth: "line",
9835
9788
  navTypography: "plain",
9789
+ openingForegroundTarget: "all",
9790
+ scrollTreatment: "contrast-glass",
9791
+ interactionPalette: clearSplitInteractionPalette,
9836
9792
  moods: ["editorial", "calm"]
9837
9793
  },
9838
9794
  {
@@ -9855,6 +9811,7 @@ const headerStyleCatalog = defineExactCatalog()([
9855
9811
  surface: "floating",
9856
9812
  defaultDepth: "shadow",
9857
9813
  navTypography: "quiet-caps",
9814
+ openingForegroundTarget: "brand-only",
9858
9815
  moods: ["expressive"]
9859
9816
  },
9860
9817
  {
@@ -9866,6 +9823,7 @@ const headerStyleCatalog = defineExactCatalog()([
9866
9823
  surface: "floating",
9867
9824
  defaultDepth: "shadow",
9868
9825
  navTypography: "heading",
9826
+ openingForegroundTarget: "brand-only",
9869
9827
  moods: ["calm", "editorial"]
9870
9828
  }
9871
9829
  ]);
@@ -10367,13 +10325,6 @@ const headerLookCatalog = defineExactCatalog()([
10367
10325
  {
10368
10326
  id: asHeaderLookId("clean-base"),
10369
10327
  label: "Clean base",
10370
- visualTreatment: "solid-neutral",
10371
- layoutBehavior: "sticky",
10372
- configuration: {
10373
- structure: "inline-classic",
10374
- treatment: "solid-neutral",
10375
- behavior: "sticky"
10376
- },
10377
10328
  openingRequirement: "none",
10378
10329
  logoAccommodations: inlineClassicLogoAccommodations,
10379
10330
  compile: cleanBaseHeader
@@ -10381,13 +10332,6 @@ const headerLookCatalog = defineExactCatalog()([
10381
10332
  {
10382
10333
  id: asHeaderLookId("classic-centered-nav"),
10383
10334
  label: "Centered nav",
10384
- visualTreatment: "solid-neutral",
10385
- layoutBehavior: "sticky",
10386
- configuration: {
10387
- structure: "inline-classic",
10388
- treatment: "solid-neutral",
10389
- behavior: "sticky"
10390
- },
10391
10335
  openingRequirement: "none",
10392
10336
  maxRecommendedNavItems: 6,
10393
10337
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -10396,13 +10340,6 @@ const headerLookCatalog = defineExactCatalog()([
10396
10340
  {
10397
10341
  id: asHeaderLookId("brand-solid"),
10398
10342
  label: "Brand solid",
10399
- visualTreatment: "solid-brand",
10400
- layoutBehavior: "sticky-shrink",
10401
- configuration: {
10402
- structure: "inline-classic",
10403
- treatment: "solid-brand",
10404
- behavior: "sticky-shrink"
10405
- },
10406
10343
  openingRequirement: "none",
10407
10344
  logoAccommodations: inlineClassicLogoAccommodations,
10408
10345
  compile: solidBrandHeader
@@ -10410,13 +10347,6 @@ const headerLookCatalog = defineExactCatalog()([
10410
10347
  {
10411
10348
  id: asHeaderLookId("serif-line"),
10412
10349
  label: "Serif line",
10413
- visualTreatment: "light-serif",
10414
- layoutBehavior: "sticky",
10415
- configuration: {
10416
- structure: "centered-stack",
10417
- treatment: "light-serif",
10418
- behavior: "sticky"
10419
- },
10420
10350
  openingRequirement: "none",
10421
10351
  maxRecommendedNavItems: 6,
10422
10352
  logoAccommodations: centeredLogoAccommodations,
@@ -10425,13 +10355,6 @@ const headerLookCatalog = defineExactCatalog()([
10425
10355
  {
10426
10356
  id: asHeaderLookId("centered-calm"),
10427
10357
  label: "Centered calm",
10428
- visualTreatment: "light-serif",
10429
- layoutBehavior: "normal-flow",
10430
- configuration: {
10431
- structure: "centered-stack",
10432
- treatment: "light-serif",
10433
- behavior: "normal-flow"
10434
- },
10435
10358
  openingRequirement: "none",
10436
10359
  maxRecommendedNavItems: 5,
10437
10360
  logoAccommodations: centeredLogoAccommodations,
@@ -10440,13 +10363,6 @@ const headerLookCatalog = defineExactCatalog()([
10440
10363
  {
10441
10364
  id: asHeaderLookId("practical-utility"),
10442
10365
  label: "Practical utility",
10443
- visualTreatment: "solid-neutral",
10444
- layoutBehavior: "sticky-shrink",
10445
- configuration: {
10446
- structure: "inline-classic",
10447
- treatment: "solid-neutral",
10448
- behavior: "sticky-shrink"
10449
- },
10450
10366
  openingRequirement: "none",
10451
10367
  requiresProminentCta: true,
10452
10368
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -10455,13 +10371,6 @@ const headerLookCatalog = defineExactCatalog()([
10455
10371
  {
10456
10372
  id: asHeaderLookId("minimal-transparent"),
10457
10373
  label: "Minimal transparent",
10458
- visualTreatment: "minimal-transparent",
10459
- layoutBehavior: "normal-flow",
10460
- configuration: {
10461
- structure: "inline-classic",
10462
- treatment: "minimal-transparent",
10463
- behavior: "normal-flow"
10464
- },
10465
10374
  openingRequirement: "reserved-space-ok",
10466
10375
  logoAccommodations: inlineClassicLogoAccommodations,
10467
10376
  compile: minimalTransparentHeader
@@ -10469,13 +10378,6 @@ const headerLookCatalog = defineExactCatalog()([
10469
10378
  {
10470
10379
  id: asHeaderLookId("transparent-overlay"),
10471
10380
  label: "Transparent overlay",
10472
- visualTreatment: "transparent-overlay",
10473
- layoutBehavior: "fixed-overlay",
10474
- configuration: {
10475
- structure: "inline-classic",
10476
- treatment: "transparent-overlay",
10477
- behavior: "fixed-overlay"
10478
- },
10479
10381
  openingRequirement: "requires-image-hero-with-contrast-overlay",
10480
10382
  maxRecommendedNavItems: 5,
10481
10383
  logoAccommodations: overlayLogoAccommodations,
@@ -10484,24 +10386,13 @@ const headerLookCatalog = defineExactCatalog()([
10484
10386
  {
10485
10387
  id: asHeaderLookId("floating-glass"),
10486
10388
  label: "Floating glass",
10487
- visualTreatment: "floating-glass",
10488
- layoutBehavior: "fixed-floating",
10489
- configuration: {
10490
- structure: "floating-shell",
10491
- treatment: "floating-glass",
10492
- behavior: "fixed-floating"
10493
- },
10494
10389
  openingRequirement: "requires-image-hero-with-contrast-overlay",
10495
10390
  maxRecommendedNavItems: 5,
10496
10391
  logoAccommodations: overlayLogoAccommodations,
10497
10392
  compile: floatingGlassHeader
10498
10393
  }
10499
10394
  ]);
10500
- new Set(headerLookCatalog.map((look) => headerConfigurationKey(look.configuration)));
10501
10395
  new Map(headerLookCatalog.map((look) => [look.id, look]));
10502
- function headerConfigurationKey(configuration) {
10503
- return `${configuration.structure}:${configuration.treatment}:${configuration.behavior}`;
10504
- }
10505
10396
  //#endregion
10506
10397
  //#region ../theme-core/src/site-styles/sectionTransitions.ts
10507
10398
  function boundaryRuntimeMetrics(family, size, heightExpression) {
@@ -14110,28 +14001,6 @@ z$1.object({
14110
14001
  spacing: z$1.enum(themeTokenRecipeOptions.spacing),
14111
14002
  motion: z$1.enum(themeTokenRecipeOptions.motion)
14112
14003
  });
14113
- const BREAKPOINT_LG = 1024;
14114
- const BREAKPOINT_XL = 1280;
14115
- const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
14116
- function mqUp(px) {
14117
- return `(min-width: ${px}px)`;
14118
- }
14119
- function mqDown(px) {
14120
- return `(max-width: ${px}px)`;
14121
- }
14122
- function mqBetween(minPx, maxPx) {
14123
- return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
14124
- }
14125
- mqUp(640);
14126
- mqUp(768);
14127
- mqUp(BREAKPOINT_LG);
14128
- mqUp(BREAKPOINT_XL);
14129
- mqDown(639);
14130
- mqDown(767);
14131
- mqDown(BREAKPOINT_LG_DOWN);
14132
- mqBetween(640, BREAKPOINT_LG_DOWN);
14133
- mqDown(640);
14134
- mqDown(768);
14135
14004
  //#endregion
14136
14005
  //#region ../theme-core/src/siteChromeOverlayClearance.ts
14137
14006
  const SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
@@ -18224,15 +18093,6 @@ const heroLayoutControlsFragment = defineFragment({
18224
18093
  */
18225
18094
  const BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
18226
18095
  const blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
18227
- /**
18228
- * Temporary rollout boundary for persisted content written before issue #1220.
18229
- * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
18230
- * only until the post-deploy role rewrite has been audited in production.
18231
- */
18232
- function canonicalizePersistedBlockButtonRole(value) {
18233
- return value === "link" || value === "tertiary" ? "ghost" : value;
18234
- }
18235
- const persistedBlockButtonRoleSchema = z$1.preprocess((value) => typeof value === "string" ? canonicalizePersistedBlockButtonRole(value) : value, blockButtonRoleSchema);
18236
18096
  const BLOCK_BUTTON_ROLE_LABELS = {
18237
18097
  primary: "Primary",
18238
18098
  secondary: "Secondary",
@@ -25474,6 +25334,12 @@ const mediaBaseSchema = z.object({
25474
25334
  poster: mediaPosterSchema.optional(),
25475
25335
  transform: transformSchema.optional()
25476
25336
  });
25337
+ /**
25338
+ * Canonical identifier carried by media values that are safe to persist.
25339
+ * Parsing trims boundary input so downstream writers cannot retain whitespace-only
25340
+ * identifiers or independently disagree about normalization.
25341
+ */
25342
+ const mediaIdentifierSchema = z.string().trim().min(1).brand();
25477
25343
  const imageMediaSchema = mediaBaseSchema.extend({ type: z.literal("image") });
25478
25344
  const videoMediaSchema = mediaBaseSchema.extend({ type: z.literal("video") });
25479
25345
  const audioMediaSchema = mediaBaseSchema.extend({ type: z.literal("audio") });
@@ -25488,6 +25354,15 @@ const mediaSchema = z.discriminatedUnion("type", [
25488
25354
  spreadsheetMediaSchema,
25489
25355
  archiveMediaSchema
25490
25356
  ]);
25357
+ const persistableMediaBaseSchema = mediaBaseSchema.extend({ identifier: mediaIdentifierSchema });
25358
+ z.discriminatedUnion("type", [
25359
+ persistableMediaBaseSchema.extend({ type: z.literal("image") }),
25360
+ persistableMediaBaseSchema.extend({ type: z.literal("video") }),
25361
+ persistableMediaBaseSchema.extend({ type: z.literal("audio") }),
25362
+ persistableMediaBaseSchema.extend({ type: z.literal("document") }),
25363
+ persistableMediaBaseSchema.extend({ type: z.literal("spreadsheet") }),
25364
+ persistableMediaBaseSchema.extend({ type: z.literal("archive") })
25365
+ ]);
25491
25366
  //#endregion
25492
25367
  //#region ../blocks/src/system/manifest/richTextSchema.ts
25493
25368
  /**
@@ -26601,7 +26476,7 @@ function isEventCalendarListLayout(value) {
26601
26476
  //#region ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
26602
26477
  const previewStageSchema = z$1.enum(["preview", "published"]);
26603
26478
  const registrationButtonVariantSchema = blockButtonRoleSchema;
26604
- const eventButtonVariantSchema = persistedBlockButtonRoleSchema;
26479
+ const eventButtonVariantSchema = blockButtonRoleSchema;
26605
26480
  const eventLayoutSchema = z$1.enum(eventCalendarListLayoutValues);
26606
26481
  const eventCalendarDisplayModeSchema = z$1.enum(eventCalendarDisplayModeValues);
26607
26482
  const eventCalendarDefaultViewSchema = z$1.enum(eventCalendarDefaultViewValues);