@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
@@ -1177,6 +1177,21 @@ const themeColorTokenSchema = z$1.string().min(1).refine((value) => Boolean(isTh
1177
1177
  //#region ../theme-core/src/palette/colors.ts
1178
1178
  const HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
1179
1179
  const NORMALIZABLE_HEX_REGEX = /^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i;
1180
+ const THEME_PALETTE_COLOR_ORDER = [
1181
+ "primary",
1182
+ "secondary",
1183
+ "accent",
1184
+ "success",
1185
+ "warning",
1186
+ "destructive",
1187
+ "background",
1188
+ "surface",
1189
+ "surfaceAlt",
1190
+ "muted",
1191
+ "text",
1192
+ "primaryForeground",
1193
+ "border"
1194
+ ];
1180
1195
  const hexColorSchema = z$1.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
1181
1196
  const paletteModeSchema = z$1.enum(["light", "dark"]);
1182
1197
  const PALETTE_VALUE_KEY_PREFIX = "palette-value:v1|";
@@ -1254,6 +1269,12 @@ function requirePaletteColorsFromEntries(entries) {
1254
1269
  if (result.ok) return result.colors;
1255
1270
  throw new Error(`Invalid complete palette: ${result.error.kind}`);
1256
1271
  }
1272
+ function paletteColorEntries(colors) {
1273
+ return THEME_PALETTE_COLOR_ORDER.map((name) => ({
1274
+ name,
1275
+ hex: colors[name]
1276
+ }));
1277
+ }
1257
1278
  function paletteColorFingerprint(colors) {
1258
1279
  return PALETTE_TOKEN_NAMES.map((name) => `${name}:${colors[name]}`).join("|");
1259
1280
  }
@@ -1261,7 +1282,7 @@ function canonicalPaletteHashInput(colors, mode) {
1261
1282
  return `${mode}|${paletteColorFingerprint(colors)}`;
1262
1283
  }
1263
1284
  /**
1264
- * The shared TypeScript/SQL protocol. Do not reorder roles: the order comes
1285
+ * Stable curated-catalogue identity. Do not reorder roles: the order comes
1265
1286
  * from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
1266
1287
  */
1267
1288
  function paletteValueKey(colors, mode) {
@@ -2587,13 +2608,6 @@ const warmDarkKirtanGold = defineCuratedPalette({
2587
2608
  });
2588
2609
  //#endregion
2589
2610
  //#region ../theme-core/src/palette/curated/index.ts
2590
- /**
2591
- * Curated palette library.
2592
- *
2593
- * Authoring keys are readable source aliases. Value keys are derived from the
2594
- * complete mode and semantic colours and are the only curated identity used at
2595
- * persistence and runtime boundaries.
2596
- */
2597
2611
  function admitCuratedPaletteDefinition(definition) {
2598
2612
  return {
2599
2613
  ...definition,
@@ -2620,11 +2634,8 @@ const curatedPalettes = [
2620
2634
  admitCuratedPaletteDefinition(warmDarkEmber),
2621
2635
  admitCuratedPaletteDefinition(warmDarkKirtanGold)
2622
2636
  ];
2623
- const curatedPalettesByValueKey = new Map(curatedPalettes.map((palette) => [palette.valueKey, palette]));
2637
+ new Map(curatedPalettes.map((palette) => [palette.valueKey, palette]));
2624
2638
  const curatedPalettesByAuthoringKey = new Map(curatedPalettes.map((palette) => [palette.authoringKey, palette]));
2625
- function findCuratedPalette(valueKey) {
2626
- return curatedPalettesByValueKey.get(valueKey);
2627
- }
2628
2639
  function findCuratedPaletteByAuthoringKey(authoringKey) {
2629
2640
  return curatedPalettesByAuthoringKey.get(authoringKey);
2630
2641
  }
@@ -2633,87 +2644,6 @@ function requireCuratedPaletteValueKey(authoringKey) {
2633
2644
  if (!palette) throw new Error(`Unknown curated palette authoring key "${authoringKey}"`);
2634
2645
  return palette.valueKey;
2635
2646
  }
2636
- /** Parses a raw persisted key into catalogue-proven curated membership. */
2637
- const knownCuratedPaletteValueKeySchema = z$1.string().transform((value, ctx) => {
2638
- const valueKey = parsePaletteValueKey(value);
2639
- if (!valueKey) {
2640
- ctx.addIssue({
2641
- code: "custom",
2642
- message: "Invalid canonical palette value key"
2643
- });
2644
- return z$1.NEVER;
2645
- }
2646
- const palette = findCuratedPalette(valueKey);
2647
- if (!palette) {
2648
- ctx.addIssue({
2649
- code: "custom",
2650
- message: "Unknown curated palette value key"
2651
- });
2652
- return z$1.NEVER;
2653
- }
2654
- return palette.valueKey;
2655
- });
2656
- //#endregion
2657
- //#region ../theme-core/src/palette/selection.ts
2658
- const sitePaletteIdSchema = z$1.string().uuid().transform((value) => value);
2659
- const sitePaletteVersionSchema = z$1.number().int().nonnegative().transform((value) => value);
2660
- const paletteSelectionSchema = z$1.discriminatedUnion("kind", [z$1.object({
2661
- kind: z$1.literal("curated"),
2662
- valueKey: knownCuratedPaletteValueKeySchema
2663
- }), z$1.object({
2664
- kind: z$1.literal("site"),
2665
- paletteId: sitePaletteIdSchema
2666
- })]);
2667
- const onboardingPaletteOriginSchema = z$1.object({
2668
- kind: z$1.literal("onboarding"),
2669
- sourceKey: z$1.string().min(1).nullable()
2670
- });
2671
- const curatedForkPaletteOriginSchema = z$1.object({
2672
- kind: z$1.literal("curated-fork"),
2673
- sourceValueKey: paletteValueKeySchema
2674
- });
2675
- const manualPaletteOriginSchema = z$1.object({ kind: z$1.literal("manual") });
2676
- const legacyCustomizedPaletteOriginSchema = z$1.object({
2677
- kind: z$1.literal("legacy-customized"),
2678
- sourceKey: z$1.string().min(1).nullable()
2679
- });
2680
- const sitePaletteOriginSchema = z$1.discriminatedUnion("kind", [
2681
- onboardingPaletteOriginSchema,
2682
- curatedForkPaletteOriginSchema,
2683
- manualPaletteOriginSchema,
2684
- legacyCustomizedPaletteOriginSchema
2685
- ]);
2686
- const editorSitePaletteOriginSchema = z$1.discriminatedUnion("kind", [z$1.object({
2687
- kind: z$1.literal("curated-fork"),
2688
- sourceValueKey: knownCuratedPaletteValueKeySchema
2689
- }), manualPaletteOriginSchema]);
2690
- z$1.object({
2691
- id: sitePaletteIdSchema,
2692
- colors: paletteColorsSchema,
2693
- mode: paletteModeSchema,
2694
- origin: sitePaletteOriginSchema,
2695
- version: sitePaletteVersionSchema
2696
- });
2697
- z$1.discriminatedUnion("kind", [
2698
- z$1.object({ kind: z$1.literal("preserve") }),
2699
- z$1.object({
2700
- kind: z$1.literal("select"),
2701
- selection: paletteSelectionSchema
2702
- }),
2703
- z$1.object({
2704
- kind: z$1.literal("create-site"),
2705
- colors: paletteColorsSchema,
2706
- mode: paletteModeSchema,
2707
- origin: editorSitePaletteOriginSchema
2708
- }),
2709
- z$1.object({
2710
- kind: z$1.literal("update-site"),
2711
- paletteId: sitePaletteIdSchema,
2712
- expectedVersion: sitePaletteVersionSchema,
2713
- colors: paletteColorsSchema,
2714
- mode: paletteModeSchema
2715
- })
2716
- ]);
2717
2647
  //#endregion
2718
2648
  //#region ../theme-core/src/lib/media.ts
2719
2649
  const hotspotSchema$1 = z.object({
@@ -2772,6 +2702,34 @@ const mediaSchema$1 = z.object({
2772
2702
  transform: transformSchema$1.optional()
2773
2703
  });
2774
2704
  //#endregion
2705
+ //#region ../theme-core/src/palette/schema.ts
2706
+ const colourHexString = z$1.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
2707
+ const paletteColorSchema = z$1.object({
2708
+ name: z$1.string().min(1),
2709
+ hex: colourHexString
2710
+ });
2711
+ const paletteMetaSchema = z$1.object({ mode: z$1.enum(["light", "dark"]) });
2712
+ const paletteSchema = z$1.object({
2713
+ colors: z$1.array(paletteColorSchema),
2714
+ meta: paletteMetaSchema
2715
+ }).transform((palette, ctx) => {
2716
+ const colors = paletteColorsFromEntries(palette.colors);
2717
+ if (!colors.ok) {
2718
+ ctx.addIssue({
2719
+ code: "custom",
2720
+ message: `Invalid complete palette: ${colors.error.kind}`
2721
+ });
2722
+ return z$1.NEVER;
2723
+ }
2724
+ return {
2725
+ colors: paletteColorEntries(colors.colors).map(({ name, hex }) => ({
2726
+ name: String(name),
2727
+ hex: String(hex)
2728
+ })),
2729
+ meta: palette.meta
2730
+ };
2731
+ });
2732
+ //#endregion
2775
2733
  //#region ../theme-core/src/buttons/types.ts
2776
2734
  /**
2777
2735
  * Standard semantic variant roles a theme exposes.
@@ -2784,8 +2742,6 @@ const VARIANT_ROLES = [
2784
2742
  "secondary",
2785
2743
  "outline",
2786
2744
  "ghost",
2787
- "link",
2788
- "tertiary",
2789
2745
  "accent"
2790
2746
  ];
2791
2747
  /**
@@ -2794,7 +2750,7 @@ const VARIANT_ROLES = [
2794
2750
  * IDs become class selectors, so keep the contract deliberately narrower than
2795
2751
  * an arbitrary string and shared with every authoring/runtime boundary.
2796
2752
  */
2797
- const buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only");
2753
+ 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" });
2798
2754
  function parseOpaqueButtonColourToken(value) {
2799
2755
  const token = parseThemeColorToken(value);
2800
2756
  if (token === null) return null;
@@ -3197,6 +3153,59 @@ function surfaceForegroundStyle(input) {
3197
3153
  [SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting
3198
3154
  };
3199
3155
  }
3156
+ shadeBackgroundEffect({
3157
+ id: "darken-background",
3158
+ name: "Darken on Hover",
3159
+ description: "Darkens the background color on hover",
3160
+ label: "Darken Amount (shade step)",
3161
+ shadeDirection: 1
3162
+ });
3163
+ shadeBackgroundEffect({
3164
+ id: "lighten-background",
3165
+ name: "Lighten on Hover",
3166
+ description: "Lightens the background color on hover",
3167
+ label: "Lighten Amount (shade step)",
3168
+ shadeDirection: -1
3169
+ });
3170
+ function shadeBackgroundEffect(config) {
3171
+ return {
3172
+ id: config.id,
3173
+ name: config.name,
3174
+ description: config.description,
3175
+ category: "background",
3176
+ pseudoElement: "none",
3177
+ applicableTo: ["button"],
3178
+ customizableOption: {
3179
+ name: "amount",
3180
+ type: "select",
3181
+ label: config.label,
3182
+ default: 100,
3183
+ options: [
3184
+ 0,
3185
+ 100,
3186
+ 200,
3187
+ 300,
3188
+ 400,
3189
+ 500,
3190
+ 600,
3191
+ 700,
3192
+ 800,
3193
+ 900
3194
+ ]
3195
+ },
3196
+ isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
3197
+ generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
3198
+ if (buttonConfig.background.type !== "solid") return "";
3199
+ const amount = (options.amount || 100) * config.shadeDirection;
3200
+ const baseToken = buttonConfig.background.colorToken ?? "primary-500";
3201
+ return `
3202
+ :where([data-theme-scope="${themeId}"]) .${variantId}:hover {
3203
+ background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
3204
+ }
3205
+ `;
3206
+ }
3207
+ };
3208
+ }
3200
3209
  buttonSizeNameSchema.options;
3201
3210
  //#endregion
3202
3211
  //#region ../theme-core/src/buttons/styles/domain.ts
@@ -5936,6 +5945,60 @@ function mergeStyles(...styles) {
5936
5945
  * palette context and happens in `parseThemeColorReference`.
5937
5946
  */
5938
5947
  const tokenOrCssColorValueSchema = z$1.string();
5948
+ const BREAKPOINT_LG = 1024;
5949
+ const BREAKPOINT_XL = 1280;
5950
+ const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
5951
+ function mqUp(px) {
5952
+ return `(min-width: ${px}px)`;
5953
+ }
5954
+ function mqDown(px) {
5955
+ return `(max-width: ${px}px)`;
5956
+ }
5957
+ function mqBetween(minPx, maxPx) {
5958
+ return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
5959
+ }
5960
+ mqUp(640);
5961
+ mqUp(768);
5962
+ mqUp(BREAKPOINT_LG);
5963
+ mqUp(BREAKPOINT_XL);
5964
+ mqDown(639);
5965
+ mqDown(767);
5966
+ mqDown(BREAKPOINT_LG_DOWN);
5967
+ mqBetween(640, BREAKPOINT_LG_DOWN);
5968
+ mqDown(640);
5969
+ mqDown(768);
5970
+ //#endregion
5971
+ //#region ../theme-core/src/header/scrollTreatment.ts
5972
+ const headerScrollTreatmentSchema = z$1.discriminatedUnion("kind", [z$1.object({
5973
+ kind: z$1.literal("contrast-glass"),
5974
+ backgroundTone: z$1.enum(["light", "dark"])
5975
+ })]).optional();
5976
+ //#endregion
5977
+ //#region ../theme-core/src/header/containerSchema.ts
5978
+ const headerContainerSchema = z$1.object({
5979
+ rounded: z$1.enum([
5980
+ "none",
5981
+ "sm",
5982
+ "md",
5983
+ "lg",
5984
+ "xl",
5985
+ "2xl"
5986
+ ]).default("xl"),
5987
+ border: z$1.boolean().default(true),
5988
+ shadow: z$1.boolean().default(true),
5989
+ padding: z$1.enum([
5990
+ "sm",
5991
+ "md",
5992
+ "lg"
5993
+ ]).default("md"),
5994
+ tint: z$1.string().nullable().optional(),
5995
+ opacity: z$1.number().min(0).max(1).default(.12)
5996
+ }).optional();
5997
+ const headerInteractionPaletteSchema = z$1.enum([
5998
+ "primary",
5999
+ "secondary",
6000
+ "accent"
6001
+ ]);
5939
6002
  //#endregion
5940
6003
  //#region ../theme-core/src/schema.ts
5941
6004
  const axesSchema = z$1.object({
@@ -5966,16 +6029,6 @@ const axesSchema = z$1.object({
5966
6029
  "expressive"
5967
6030
  ])
5968
6031
  });
5969
- const colourHexString = z$1.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
5970
- const paletteColorSchema = z$1.object({
5971
- name: z$1.string().min(1),
5972
- hex: colourHexString
5973
- });
5974
- const paletteMetaSchema = z$1.object({ mode: z$1.enum(["light", "dark"]) });
5975
- const paletteSchema = z$1.object({
5976
- colors: z$1.array(paletteColorSchema),
5977
- meta: paletteMetaSchema
5978
- });
5979
6032
  const typographyStyleSchema = z$1.object({
5980
6033
  family: z$1.string().min(1),
5981
6034
  weight: z$1.enum([
@@ -6355,25 +6408,6 @@ const navFontWeight = z$1.enum([
6355
6408
  ]);
6356
6409
  const headerMaxWidth = z$1.enum(["container", "full"]);
6357
6410
  const headerBarFrame = z$1.enum(["full-bleed", "inset-shell"]);
6358
- const headerContainerSchema = z$1.object({
6359
- rounded: z$1.enum([
6360
- "none",
6361
- "sm",
6362
- "md",
6363
- "lg",
6364
- "xl",
6365
- "2xl"
6366
- ]).default("xl"),
6367
- border: z$1.boolean().default(true),
6368
- shadow: z$1.boolean().default(true),
6369
- padding: z$1.enum([
6370
- "sm",
6371
- "md",
6372
- "lg"
6373
- ]).default("md"),
6374
- tint: z$1.string().nullable().optional(),
6375
- opacity: z$1.number().min(0).max(1).default(.12)
6376
- }).optional();
6377
6411
  const headerBorderSchema = componentBorderSchema.extend({ position: z$1.enum([
6378
6412
  "bottom",
6379
6413
  "top",
@@ -6500,6 +6534,7 @@ const headerSchema = z$1.object({
6500
6534
  shrinkOnScroll: z$1.boolean(),
6501
6535
  maxWidth: headerMaxWidth,
6502
6536
  barFrame: headerBarFrame.optional(),
6537
+ scrollTreatment: headerScrollTreatmentSchema,
6503
6538
  logoOverride: mediaSchema$1.nullable().optional(),
6504
6539
  background: headerBackgroundSchema.default({
6505
6540
  type: "color",
@@ -6512,6 +6547,7 @@ const headerSchema = z$1.object({
6512
6547
  navFontRole: z$1.enum(["body", "heading"]).optional(),
6513
6548
  navTypography: z$1.enum(["body", "heading"]).optional(),
6514
6549
  navTextSize: navLinkStyleSchema.shape.textSize,
6550
+ interactionPalette: headerInteractionPaletteSchema.optional(),
6515
6551
  navPlacement: z$1.enum(["end", "center"]).optional(),
6516
6552
  container: headerContainerSchema,
6517
6553
  border: headerBorderSchema,
@@ -6804,770 +6840,669 @@ z$1.object({
6804
6840
  themes: z$1.array(themeSchema).length(3)
6805
6841
  });
6806
6842
  //#endregion
6843
+ //#region ../theme-core/src/site-styles/lookOptionGroups.ts
6844
+ function defineLookOptionGroup(group) {
6845
+ defaultOption(group);
6846
+ return group;
6847
+ }
6848
+ function defaultOption(group) {
6849
+ const option = group.options.find((candidate) => candidate.id === group.defaultOptionId);
6850
+ if (option) return option;
6851
+ throw new Error(`Look option group "${group.id}" defaults to missing option "${group.defaultOptionId}".`);
6852
+ }
6853
+ //#endregion
6807
6854
  //#region ../theme-core/src/site-styles/appearancePresetResolution.ts
6808
6855
  function assertValidOptionGroups(preset) {
6809
6856
  preset.optionGroups?.forEach((group) => {
6810
- 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}".`);
6857
+ defineLookOptionGroup(group);
6811
6858
  });
6812
6859
  }
6813
6860
  function defineBlockAppearancePreset(preset) {
6814
6861
  assertValidOptionGroups(preset);
6815
6862
  return preset;
6816
6863
  }
6817
- [...[
6818
- defineBlockAppearancePreset({
6819
- kind: "block-design",
6820
- id: "hero-immersive-image",
6821
- target: "hero",
6822
- label: "Immersive image hero",
6823
- blockKinds: ["block.hero"],
6824
- constraints: { layoutFamilies: ["centered", "compact"] },
6825
- layoutPatches: [{
6826
- constraints: { layoutVariantKeys: ["micro"] },
6827
- designPatch: {
6828
- sectionHeight: "banner",
6829
- heroTypographyScale: "display"
6830
- }
6831
- }],
6832
- design: {
6833
- sectionSurface: "hero-image",
6834
- contentFrame: plainFrame,
6835
- itemSurface: "none",
6836
- sectionHeight: "hero",
6837
- heroComposition: "center",
6838
- heroTypographyScale: "display",
6839
- imageSurfaceTreatment: { kind: "neutral-wash" }
6864
+ //#endregion
6865
+ //#region ../theme-core/src/site-styles/blockAppearancePresets.ts
6866
+ const brandScrimOptionGroups = [{
6867
+ id: "image-surface-treatment",
6868
+ label: "Treatment",
6869
+ defaultOptionId: "brand-scrim-primary",
6870
+ options: [{
6871
+ id: "brand-scrim-primary",
6872
+ label: "Brand scrim",
6873
+ designPatch: { imageSurfaceTreatment: {
6874
+ kind: "brand-scrim",
6875
+ token: "primary"
6876
+ } }
6877
+ }, {
6878
+ id: "neutral-scrim",
6879
+ label: "Neutral scrim",
6880
+ designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
6881
+ }]
6882
+ }];
6883
+ const microBannerLayoutPatches = [{
6884
+ constraints: { layoutVariantKeys: ["micro"] },
6885
+ designPatch: { sectionHeight: "banner" }
6886
+ }];
6887
+ defineBlockAppearancePreset({
6888
+ id: "hero-immersive-image",
6889
+ target: "hero",
6890
+ label: "Immersive image hero",
6891
+ blockKinds: ["block.hero"],
6892
+ constraints: { layoutFamilies: ["centered", "compact"] },
6893
+ layoutPatches: [{
6894
+ constraints: { layoutVariantKeys: ["micro"] },
6895
+ designPatch: {
6896
+ sectionHeight: "banner",
6897
+ heroTypographyScale: "display"
6840
6898
  }
6841
- }),
6842
- defineBlockAppearancePreset({
6843
- kind: "block-design",
6844
- id: "hero-bottom-left-panel",
6845
- target: "hero",
6846
- label: "Bottom-left panel hero",
6847
- blockKinds: ["block.hero"],
6848
- constraints: { layoutFamilies: ["centered", "compact"] },
6849
- optionGroups: [{
6850
- id: "image-surface-treatment",
6851
- label: "Treatment",
6852
- selectedOptionId: "neutral-scrim",
6853
- options: [{
6854
- id: "neutral-scrim",
6855
- label: "Neutral scrim",
6856
- designPatch: { imageSurfaceTreatment: {
6857
- kind: "neutral-scrim",
6858
- intensity: "balanced"
6859
- } }
6860
- }, {
6861
- id: "brand-scrim-primary",
6862
- label: "Brand scrim",
6863
- designPatch: { imageSurfaceTreatment: {
6864
- kind: "brand-scrim",
6865
- token: "primary",
6866
- intensity: "balanced"
6867
- } }
6868
- }]
6869
- }],
6870
- layoutPatches: [{
6871
- constraints: { layoutVariantKeys: ["micro"] },
6872
- designPatch: {
6873
- sectionHeight: "banner",
6874
- heroTypographyScale: "editorial"
6875
- }
6876
- }],
6877
- design: {
6878
- sectionSurface: "hero-image",
6879
- contentFrame: panelFrame("raised"),
6880
- itemSurface: "none",
6881
- sectionHeight: "immersive",
6882
- heroComposition: "bottom-left",
6883
- heroTypographyScale: "display",
6884
- imageSurfaceTreatment: {
6899
+ }],
6900
+ design: {
6901
+ sectionSurface: "hero-image",
6902
+ contentFrame: plainFrame,
6903
+ itemSurface: "none",
6904
+ sectionHeight: "hero",
6905
+ heroComposition: "center",
6906
+ heroTypographyScale: "display",
6907
+ imageSurfaceTreatment: { kind: "neutral-wash" }
6908
+ }
6909
+ }), defineBlockAppearancePreset({
6910
+ id: "hero-bottom-left-panel",
6911
+ target: "hero",
6912
+ label: "Bottom-left panel hero",
6913
+ blockKinds: ["block.hero"],
6914
+ constraints: { layoutFamilies: ["centered", "compact"] },
6915
+ optionGroups: [{
6916
+ id: "image-surface-treatment",
6917
+ label: "Treatment",
6918
+ defaultOptionId: "neutral-scrim",
6919
+ options: [{
6920
+ id: "neutral-scrim",
6921
+ label: "Neutral scrim",
6922
+ designPatch: { imageSurfaceTreatment: {
6885
6923
  kind: "neutral-scrim",
6886
6924
  intensity: "balanced"
6887
- }
6888
- }
6889
- }),
6890
- defineBlockAppearancePreset({
6891
- kind: "block-design",
6892
- id: "hero-poster-image",
6893
- target: "hero",
6894
- label: "Poster image hero",
6895
- blockKinds: ["block.hero"],
6896
- constraints: { layoutFamilies: ["centered", "compact"] },
6897
- layoutPatches: [{
6898
- constraints: { layoutVariantKeys: ["micro"] },
6899
- designPatch: {
6900
- sectionHeight: "banner",
6901
- heroTypographyScale: "display"
6902
- }
6903
- }],
6904
- design: {
6905
- sectionSurface: "hero-image",
6906
- contentFrame: plainFrame,
6907
- itemSurface: "none",
6908
- sectionHeight: "immersive",
6909
- heroComposition: "center",
6910
- heroTypographyScale: "poster",
6911
- imageSurfaceTreatment: {
6925
+ } }
6926
+ }, {
6927
+ id: "brand-scrim-primary",
6928
+ label: "Brand scrim",
6929
+ designPatch: { imageSurfaceTreatment: {
6912
6930
  kind: "brand-scrim",
6913
6931
  token: "primary",
6914
- intensity: "strong"
6915
- }
6916
- }
6917
- }),
6918
- defineBlockAppearancePreset({
6919
- kind: "block-design",
6920
- id: "hero-brand-scrim",
6921
- target: "hero",
6922
- label: "Brand scrim image hero",
6923
- blockKinds: ["block.hero"],
6924
- constraints: { layoutFamilies: ["centered", "compact"] },
6925
- optionGroups: [{
6926
- id: "image-surface-treatment",
6927
- label: "Treatment",
6928
- selectedOptionId: "brand-scrim-primary",
6929
- options: [{
6930
- id: "brand-scrim-primary",
6931
- label: "Brand scrim",
6932
- designPatch: { imageSurfaceTreatment: {
6933
- kind: "brand-scrim",
6934
- token: "primary"
6935
- } }
6936
- }, {
6937
- id: "neutral-scrim",
6938
- label: "Neutral scrim",
6939
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
6940
- }]
6941
- }],
6942
- layoutPatches: [{
6943
- constraints: { layoutVariantKeys: ["micro"] },
6944
- designPatch: { sectionHeight: "banner" }
6945
- }],
6946
- design: {
6947
- sectionSurface: "hero-image",
6948
- contentFrame: plainFrame,
6949
- itemSurface: "none",
6950
- sectionHeight: "immersive",
6951
- heroComposition: "center",
6952
- heroTypographyScale: "display",
6953
- imageSurfaceTreatment: {
6954
- kind: "brand-scrim",
6955
- token: "primary"
6956
- }
6957
- }
6958
- }),
6959
- defineBlockAppearancePreset({
6960
- kind: "block-design",
6961
- id: "hero-brand-scrim-fixed-frame",
6962
- target: "hero",
6963
- label: "Fixed-frame brand scrim hero",
6964
- blockKinds: ["block.hero"],
6965
- constraints: { layoutFamilies: ["centered", "compact"] },
6966
- optionGroups: [{
6967
- id: "image-surface-treatment",
6968
- label: "Treatment",
6969
- selectedOptionId: "brand-scrim-primary",
6970
- options: [{
6971
- id: "brand-scrim-primary",
6972
- label: "Brand scrim",
6973
- designPatch: { imageSurfaceTreatment: {
6974
- kind: "brand-scrim",
6975
- token: "primary"
6976
- } }
6977
- }, {
6978
- id: "neutral-scrim",
6979
- label: "Neutral scrim",
6980
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
6981
- }]
6982
- }],
6983
- layoutPatches: [{
6984
- constraints: { layoutVariantKeys: ["micro"] },
6985
- designPatch: { sectionHeight: "banner" }
6986
- }],
6987
- design: {
6988
- sectionSurface: "hero-image",
6989
- contentFrame: plainFrame,
6990
- itemSurface: "none",
6991
- sectionHeight: "immersive",
6992
- heroComposition: "center",
6993
- heroTypographyScale: "display",
6994
- imageSurfaceTreatment: {
6995
- kind: "brand-scrim",
6996
- token: "primary"
6997
- },
6998
- imageSurfaceMotion: "fixed-frame",
6999
- eyebrowTreatment: "accent-pill-bounce"
7000
- }
7001
- }),
7002
- defineBlockAppearancePreset({
7003
- kind: "block-design",
7004
- id: "hero-brand-depth-expressive",
7005
- target: "hero",
7006
- label: "Expressive brand-depth hero",
7007
- blockKinds: ["block.hero"],
7008
- constraints: { layoutFamilies: ["centered", "compact"] },
7009
- design: {
7010
- sectionSurface: "brand-depth-band",
7011
- contentFrame: plainFrame,
7012
- itemSurface: "none",
7013
- heroComposition: "center",
7014
- heroTypographyScale: "editorial",
7015
- eyebrowTreatment: "accent-pill-bounce"
7016
- }
7017
- }),
7018
- defineBlockAppearancePreset({
7019
- kind: "block-design",
7020
- id: "hero-contained-intro",
7021
- target: "hero",
7022
- label: "Contained intro hero",
7023
- blockKinds: ["block.hero"],
7024
- design: {
7025
- sectionSurface: "muted-band",
7026
- contentFrame: panelFrame("inset"),
7027
- itemSurface: "none",
7028
- heroComposition: "center",
7029
- heroTypographyScale: "editorial"
7030
- }
7031
- }),
7032
- defineBlockAppearancePreset({
7033
- kind: "block-design",
7034
- id: "hero-split-editorial",
7035
- target: "hero",
7036
- label: "Editorial split hero",
7037
- blockKinds: ["block.hero"],
7038
- constraints: { layoutFamilies: ["split"] },
7039
- design: {
7040
- sectionSurface: "base",
7041
- contentFrame: plainFrame,
7042
- itemSurface: "none",
7043
- heroTypographyScale: "editorial"
7044
- }
7045
- }),
7046
- defineBlockAppearancePreset({
7047
- kind: "block-design",
7048
- id: "hero-split-brand",
7049
- target: "hero",
7050
- label: "Brand split hero",
7051
- blockKinds: ["block.hero"],
7052
- constraints: { layoutFamilies: ["split"] },
7053
- design: {
7054
- sectionSurface: "brand-depth-band",
7055
- contentFrame: plainFrame,
7056
- itemSurface: "none",
7057
- heroTypographyScale: "display",
7058
- eyebrowTreatment: "accent-pill-bounce"
7059
- }
7060
- }),
7061
- defineBlockAppearancePreset({
7062
- kind: "block-design",
7063
- id: "hero-split-soft-panel",
7064
- target: "hero",
7065
- label: "Soft panel split hero",
7066
- blockKinds: ["block.hero"],
7067
- constraints: { layoutFamilies: ["split"] },
7068
- design: {
7069
- sectionSurface: "muted-band",
7070
- contentFrame: panelFrame("raised"),
7071
- itemSurface: "none",
6932
+ intensity: "balanced"
6933
+ } }
6934
+ }]
6935
+ }],
6936
+ layoutPatches: [{
6937
+ constraints: { layoutVariantKeys: ["micro"] },
6938
+ designPatch: {
6939
+ sectionHeight: "banner",
7072
6940
  heroTypographyScale: "editorial"
7073
6941
  }
7074
- }),
7075
- defineBlockAppearancePreset({
7076
- kind: "block-design",
7077
- id: "hero-split-accent",
7078
- target: "hero",
7079
- label: "Accent split hero",
7080
- blockKinds: ["block.hero"],
7081
- constraints: { layoutFamilies: ["split"] },
7082
- design: {
7083
- sectionSurface: "accent-band",
7084
- contentFrame: panelFrame("raised"),
7085
- itemSurface: "none",
6942
+ }],
6943
+ design: {
6944
+ sectionSurface: "hero-image",
6945
+ contentFrame: panelFrame("raised"),
6946
+ itemSurface: "none",
6947
+ sectionHeight: "immersive",
6948
+ heroComposition: "bottom-left",
6949
+ heroTypographyScale: "display",
6950
+ imageSurfaceTreatment: {
6951
+ kind: "neutral-scrim",
6952
+ intensity: "balanced"
6953
+ }
6954
+ }
6955
+ }), defineBlockAppearancePreset({
6956
+ id: "hero-poster-image",
6957
+ target: "hero",
6958
+ label: "Poster image hero",
6959
+ blockKinds: ["block.hero"],
6960
+ constraints: { layoutFamilies: ["centered", "compact"] },
6961
+ layoutPatches: [{
6962
+ constraints: { layoutVariantKeys: ["micro"] },
6963
+ designPatch: {
6964
+ sectionHeight: "banner",
7086
6965
  heroTypographyScale: "display"
7087
6966
  }
7088
- }),
7089
- defineBlockAppearancePreset({
7090
- kind: "block-design",
7091
- id: "intro-editorial-statement",
7092
- target: "intro",
7093
- label: "Editorial intro statement",
7094
- blockKinds: ["block.intro"],
7095
- constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
7096
- design: {
7097
- sectionSurface: "base",
7098
- contentFrame: plainFrame,
7099
- itemSurface: "none",
7100
- composition: {
7101
- kind: "intro",
7102
- treatment: "editorial-statement"
7103
- }
7104
- }
7105
- }),
7106
- defineBlockAppearancePreset({
7107
- kind: "block-design",
7108
- id: "intro-portrait-bio",
7109
- target: "intro",
7110
- label: "Portrait and bio",
7111
- blockKinds: ["block.intro"],
7112
- constraints: { layoutVariantKeys: ["media-copy"] },
7113
- design: {
7114
- sectionSurface: "base",
7115
- contentFrame: plainFrame,
7116
- itemSurface: "none",
7117
- composition: {
7118
- kind: "intro",
7119
- treatment: "portrait-bio"
7120
- }
7121
- }
7122
- }),
7123
- defineBlockAppearancePreset({
7124
- kind: "block-design",
7125
- id: "offerings-preview-default-cards",
7126
- target: "offerings",
7127
- label: "Default offering cards",
7128
- blockKinds: ["block.offerings-preview"],
7129
- design: {
7130
- sectionSurface: "base",
7131
- contentFrame: plainFrame,
7132
- itemSurface: "default"
7133
- }
7134
- }),
7135
- defineBlockAppearancePreset({
7136
- kind: "block-design",
7137
- id: "offerings-preview-secondary-cards",
7138
- target: "offerings",
7139
- label: "Secondary offering cards",
7140
- blockKinds: ["block.offerings-preview"],
7141
- design: {
7142
- sectionSurface: "muted-band",
7143
- contentFrame: plainFrame,
7144
- itemSurface: "inset"
7145
- }
7146
- }),
7147
- defineBlockAppearancePreset({
7148
- kind: "block-design",
7149
- id: "offerings-preview-non-carded",
7150
- target: "offerings",
7151
- label: "Non-carded offerings",
7152
- blockKinds: ["block.offerings-preview"],
7153
- design: {
7154
- sectionSurface: "muted-band",
7155
- contentFrame: plainFrame,
7156
- itemSurface: "editorial"
7157
- }
7158
- }),
7159
- defineBlockAppearancePreset({
7160
- kind: "block-design",
7161
- id: "offerings-preview-paired-feature-cards",
7162
- target: "offerings",
7163
- label: "Paired feature cards",
7164
- blockKinds: ["block.offerings-preview"],
7165
- constraints: { layoutVariantKeys: ["cards"] },
7166
- design: {
7167
- sectionSurface: "base",
7168
- contentFrame: plainFrame,
7169
- itemSurface: "none"
7170
- }
7171
- }),
7172
- defineBlockAppearancePreset({
7173
- kind: "block-design",
7174
- id: "offerings-preview-open-editorial-columns",
7175
- target: "offerings",
7176
- label: "Open editorial columns",
7177
- blockKinds: ["block.offerings-preview"],
7178
- constraints: { layoutVariantKeys: ["cards"] },
7179
- design: {
7180
- sectionSurface: "base",
7181
- contentFrame: plainFrame,
7182
- itemSurface: "none"
7183
- }
7184
- }),
7185
- defineBlockAppearancePreset({
7186
- kind: "block-design",
7187
- id: "offerings-preview-joined-programme-panel",
7188
- target: "offerings",
7189
- label: "Joined programme panel",
7190
- blockKinds: ["block.offerings-preview"],
7191
- constraints: { layoutVariantKeys: ["cards"] },
7192
- design: {
7193
- sectionSurface: "base",
7194
- contentFrame: plainFrame,
7195
- itemSurface: "none"
7196
- }
7197
- }),
7198
- defineBlockAppearancePreset({
7199
- kind: "block-design",
7200
- id: "feature-cards-raised-rule",
7201
- target: "feature-cards",
7202
- label: "Raised cards with rule",
7203
- blockKinds: ["block.feature-cards"],
7204
- design: {
7205
- sectionSurface: "base",
7206
- contentFrame: plainFrame,
7207
- itemSurface: "raised"
7208
- }
7209
- }),
7210
- defineBlockAppearancePreset({
7211
- kind: "block-design",
7212
- id: "feature-cards-bold-colors",
7213
- target: "feature-cards",
7214
- label: "Bold colour-blocked cards",
7215
- blockKinds: ["block.feature-cards"],
7216
- design: {
7217
- sectionSurface: "base",
7218
- contentFrame: plainFrame,
7219
- itemSurface: "color-blocked"
7220
- }
7221
- }),
7222
- defineBlockAppearancePreset({
7223
- kind: "block-design",
7224
- id: "feature-cards-editorial-columns",
7225
- target: "feature-cards",
7226
- label: "Editorial open columns",
7227
- blockKinds: ["block.feature-cards"],
7228
- design: {
7229
- sectionSurface: "base",
7230
- contentFrame: plainFrame,
7231
- itemSurface: "editorial"
7232
- }
7233
- }),
7234
- defineBlockAppearancePreset({
7235
- kind: "block-design",
7236
- id: "feature-cards-asymmetric-emphasis",
7237
- target: "feature-cards",
7238
- label: "Asymmetric emphasis pair",
7239
- blockKinds: ["block.feature-cards"],
7240
- constraints: { layoutFamilies: ["grid"] },
7241
- design: {
7242
- sectionSurface: "base",
7243
- contentFrame: plainFrame,
7244
- itemSurface: "none",
7245
- composition: {
7246
- kind: "feature-cards",
7247
- treatment: "asymmetric-emphasis"
7248
- }
7249
- }
7250
- }),
7251
- defineBlockAppearancePreset({
7252
- kind: "block-design",
7253
- id: "feature-cards-framed-programme",
7254
- target: "feature-cards",
7255
- label: "Framed programme cards",
7256
- blockKinds: ["block.feature-cards"],
7257
- constraints: { layoutFamilies: ["grid"] },
7258
- design: {
7259
- sectionSurface: "brand-depth-band",
7260
- contentFrame: plainFrame,
7261
- itemSurface: "inset",
7262
- composition: {
7263
- kind: "feature-cards",
7264
- treatment: "framed-programme"
7265
- }
7266
- }
7267
- }),
7268
- defineBlockAppearancePreset({
7269
- kind: "block-design",
7270
- id: "feature-cards-soft-panels",
7271
- target: "feature-cards",
7272
- label: "Soft tinted panels",
7273
- blockKinds: ["block.feature-cards"],
7274
- design: {
7275
- sectionSurface: "base",
7276
- contentFrame: plainFrame,
7277
- itemSurface: "inset"
7278
- }
7279
- }),
7280
- defineBlockAppearancePreset({
7281
- kind: "block-design",
7282
- id: "feature-cards-editorial-diptych",
7283
- target: "feature-cards",
7284
- label: "Editorial diptych",
7285
- blockKinds: ["block.feature-cards"],
7286
- constraints: { layoutVariantKeys: ["editorial-diptych"] },
7287
- design: {
7288
- sectionSurface: "base",
7289
- contentFrame: plainFrame,
7290
- itemSurface: "flat"
7291
- }
7292
- }),
7293
- defineBlockAppearancePreset({
7294
- kind: "block-design",
7295
- id: "feature-cards-editorial-pathways",
7296
- target: "feature-cards",
7297
- label: "Editorial pathways",
7298
- blockKinds: ["block.feature-cards"],
7299
- constraints: { layoutVariantKeys: ["editorial-pathways"] },
7300
- design: {
7301
- sectionSurface: "base",
7302
- contentFrame: plainFrame,
7303
- itemSurface: "flat"
7304
- }
7305
- }),
7306
- defineBlockAppearancePreset({
7307
- kind: "block-design",
7308
- id: "feature-cards-photo-tiles",
7309
- target: "feature-cards",
7310
- label: "Photo tiles",
7311
- blockKinds: ["block.feature-cards"],
7312
- design: {
7313
- sectionSurface: "base",
7314
- contentFrame: plainFrame,
7315
- itemSurface: "raised"
7316
- }
7317
- }),
7318
- defineBlockAppearancePreset({
7319
- kind: "block-design",
7320
- id: "events-lined-panel",
7321
- target: "events",
7322
- label: "Raised event panel",
7323
- blockKinds: ["block.event-calendar", "block.event-listing"],
7324
- design: {
7325
- sectionSurface: "base",
7326
- contentFrame: panelFrame("raised"),
7327
- itemSurface: "none"
7328
- }
7329
- }),
7330
- defineBlockAppearancePreset({
7331
- kind: "block-design",
7332
- id: "events-ruled-register",
7333
- target: "events",
7334
- label: "Ruled event register",
7335
- blockKinds: ["block.event-calendar", "block.event-listing"],
7336
- design: {
7337
- sectionSurface: "brand-depth-band",
7338
- contentFrame: plainFrame,
7339
- itemSurface: "none",
7340
- eventListTreatment: "ruled-register"
7341
- }
7342
- }),
7343
- defineBlockAppearancePreset({
7344
- kind: "block-design",
7345
- id: "events-editorial-register",
7346
- target: "events",
7347
- label: "Editorial event register",
7348
- blockKinds: ["block.event-calendar", "block.event-listing"],
7349
- design: {
7350
- sectionSurface: "base",
7351
- contentFrame: plainFrame,
7352
- itemSurface: "none",
7353
- eventListTreatment: "editorial-register"
7354
- }
7355
- }),
7356
- defineBlockAppearancePreset({
7357
- kind: "block-design",
7358
- id: "events-dense-index",
7359
- target: "events",
7360
- label: "Dense event index",
7361
- blockKinds: ["block.event-calendar", "block.event-listing"],
7362
- design: {
7363
- sectionSurface: "accent-band",
7364
- contentFrame: plainFrame,
7365
- itemSurface: "none",
7366
- eventListTreatment: "dense-index"
7367
- }
7368
- }),
7369
- defineBlockAppearancePreset({
7370
- kind: "block-design",
7371
- id: "schedule-details-brand-depth",
7372
- target: "events",
7373
- label: "Brand-depth schedule details",
7374
- blockKinds: ["block.event-details", "block.course-details"],
7375
- design: {
7376
- sectionSurface: "brand-depth-band",
7377
- contentFrame: plainFrame,
7378
- itemSurface: "none",
7379
- tileTreatment: "brand-depth"
7380
- }
7381
- }),
7382
- defineBlockAppearancePreset({
7383
- kind: "block-design",
7384
- id: "media-text-flush-feature",
7385
- target: "media-text",
7386
- label: "Flush media feature",
7387
- blockKinds: ["block.media-text"],
7388
- design: {
7389
- sectionSurface: "muted-band",
7390
- contentFrame: flushPanelFrame({ bleed: "start" }),
7391
- itemSurface: "none"
7392
- }
7393
- }),
7394
- defineBlockAppearancePreset({
7395
- kind: "block-design",
7396
- id: "testimonials-simple-cards",
7397
- target: "testimonials",
7398
- label: "Simple testimonial cards",
7399
- blockKinds: ["block.testimonials"],
7400
- design: {
7401
- sectionSurface: "base",
7402
- contentFrame: plainFrame,
7403
- itemSurface: "default"
7404
- }
7405
- }),
7406
- defineBlockAppearancePreset({
7407
- kind: "block-design",
7408
- id: "testimonials-raised-panel",
7409
- target: "testimonials",
7410
- label: "Raised testimonial panel",
7411
- blockKinds: ["block.testimonials"],
7412
- design: {
7413
- sectionSurface: "muted-band",
7414
- contentFrame: panelFrame("raised"),
7415
- itemSurface: "raised"
7416
- }
7417
- }),
7418
- defineBlockAppearancePreset({
7419
- kind: "block-design",
7420
- id: "testimonials-accent-panel",
7421
- target: "testimonials",
7422
- label: "Accent testimonial panel",
7423
- blockKinds: ["block.testimonials"],
7424
- design: {
7425
- sectionSurface: "accent-band",
7426
- contentFrame: panelFrame("raised"),
7427
- itemSurface: "raised"
7428
- }
7429
- }),
7430
- defineBlockAppearancePreset({
7431
- kind: "block-design",
7432
- id: "testimonials-default-cards",
7433
- target: "testimonials",
7434
- label: "Default cards",
7435
- blockKinds: ["block.testimonials"],
7436
- design: {
7437
- sectionSurface: "base",
7438
- contentFrame: plainFrame,
7439
- itemSurface: "none",
7440
- testimonialCardTreatment: "default"
7441
- }
7442
- }),
7443
- defineBlockAppearancePreset({
7444
- kind: "block-design",
7445
- id: "testimonials-statement-cards",
7446
- target: "testimonials",
7447
- label: "Statement cards",
7448
- blockKinds: ["block.testimonials"],
7449
- design: {
7450
- sectionSurface: "accent-band",
7451
- contentFrame: plainFrame,
7452
- itemSurface: "raised",
7453
- testimonialCardTreatment: "statement"
7454
- }
7455
- }),
7456
- defineBlockAppearancePreset({
7457
- kind: "block-design",
7458
- id: "testimonials-brand-statement-cards",
7459
- target: "testimonials",
7460
- label: "Brand statement cards",
7461
- blockKinds: ["block.testimonials"],
7462
- design: {
7463
- sectionSurface: "brand-depth-band",
7464
- contentFrame: plainFrame,
7465
- itemSurface: "raised",
7466
- testimonialCardTreatment: "statement"
7467
- }
7468
- }),
7469
- defineBlockAppearancePreset({
7470
- kind: "block-design",
7471
- id: "testimonials-non-carded",
7472
- target: "testimonials",
7473
- label: "Non-carded",
7474
- blockKinds: ["block.testimonials"],
7475
- design: {
7476
- sectionSurface: "muted-band",
7477
- contentFrame: plainFrame,
7478
- itemSurface: "none",
7479
- testimonialCardTreatment: "non-carded"
7480
- }
7481
- }),
7482
- defineBlockAppearancePreset({
7483
- kind: "block-design",
7484
- id: "testimonials-evergreen-lead",
7485
- target: "testimonials",
7486
- label: "Evergreen lead",
7487
- blockKinds: ["block.testimonials"],
7488
- constraints: { layoutVariantKeys: ["featured-editorial"] },
7489
- design: {
7490
- sectionSurface: "base",
7491
- contentFrame: plainFrame,
7492
- itemSurface: "none"
7493
- }
7494
- }),
7495
- defineBlockAppearancePreset({
7496
- kind: "block-design",
7497
- id: "testimonials-room-and-response",
7498
- target: "testimonials",
7499
- label: "Room and response",
7500
- blockKinds: ["block.testimonials"],
7501
- constraints: { layoutVariantKeys: ["featured-editorial"] },
7502
- design: {
7503
- sectionSurface: "base",
7504
- contentFrame: plainFrame,
7505
- itemSurface: "none"
7506
- }
7507
- }),
7508
- defineBlockAppearancePreset({
7509
- kind: "block-design",
7510
- id: "testimonials-open-floor",
7511
- target: "testimonials",
7512
- label: "Open floor",
7513
- blockKinds: ["block.testimonials"],
7514
- constraints: { layoutVariantKeys: ["featured-editorial"] },
7515
- design: {
7516
- sectionSurface: "base",
7517
- contentFrame: plainFrame,
7518
- itemSurface: "none"
7519
- }
7520
- }),
7521
- defineBlockAppearancePreset({
7522
- kind: "block-design",
7523
- id: "faq-base-accordion",
7524
- target: "faq",
7525
- label: "Base accordion FAQ",
7526
- blockKinds: ["block.faq"],
7527
- design: {
7528
- sectionSurface: "base",
7529
- contentFrame: plainFrame,
7530
- itemSurface: "default"
7531
- }
7532
- }),
7533
- defineBlockAppearancePreset({
7534
- kind: "block-design",
7535
- id: "faq-contained-help",
7536
- target: "faq",
7537
- label: "Contained help panel",
7538
- blockKinds: ["block.faq"],
7539
- design: {
7540
- sectionSurface: "muted-band",
7541
- contentFrame: panelFrame("inset"),
7542
- itemSurface: "default"
7543
- }
7544
- }),
7545
- defineBlockAppearancePreset({
7546
- kind: "block-design",
7547
- id: "contact-form-panel",
7548
- target: "contact-form",
7549
- label: "Raised form panel",
7550
- blockKinds: ["block.form"],
7551
- design: {
7552
- sectionSurface: "muted-band",
7553
- contentFrame: panelFrame("raised"),
7554
- itemSurface: "none"
7555
- }
7556
- }),
7557
- defineBlockAppearancePreset({
7558
- kind: "block-design",
7559
- id: "cta-accent-band",
7560
- target: "cta",
7561
- label: "Accent CTA band",
7562
- blockKinds: ["block.cta-full"],
7563
- design: {
7564
- sectionSurface: "accent-band",
7565
- contentFrame: plainFrame,
7566
- itemSurface: "none",
7567
- eyebrowTreatment: "accent"
7568
- }
7569
- })
7570
- ]];
6967
+ }],
6968
+ design: {
6969
+ sectionSurface: "hero-image",
6970
+ contentFrame: plainFrame,
6971
+ itemSurface: "none",
6972
+ sectionHeight: "immersive",
6973
+ heroComposition: "center",
6974
+ heroTypographyScale: "poster",
6975
+ imageSurfaceTreatment: {
6976
+ kind: "brand-scrim",
6977
+ token: "primary",
6978
+ intensity: "strong"
6979
+ }
6980
+ }
6981
+ }), defineBlockAppearancePreset({
6982
+ id: "hero-brand-scrim",
6983
+ target: "hero",
6984
+ label: "Brand scrim image hero",
6985
+ blockKinds: ["block.hero"],
6986
+ constraints: { layoutFamilies: ["centered", "compact"] },
6987
+ optionGroups: brandScrimOptionGroups,
6988
+ layoutPatches: microBannerLayoutPatches,
6989
+ design: {
6990
+ sectionSurface: "hero-image",
6991
+ contentFrame: plainFrame,
6992
+ itemSurface: "none",
6993
+ sectionHeight: "immersive",
6994
+ heroComposition: "center",
6995
+ heroTypographyScale: "display",
6996
+ imageSurfaceTreatment: {
6997
+ kind: "brand-scrim",
6998
+ token: "primary"
6999
+ }
7000
+ }
7001
+ }), defineBlockAppearancePreset({
7002
+ id: "hero-brand-scrim-fixed-frame",
7003
+ target: "hero",
7004
+ label: "Fixed-frame brand scrim hero",
7005
+ blockKinds: ["block.hero"],
7006
+ constraints: { layoutFamilies: ["centered", "compact"] },
7007
+ optionGroups: brandScrimOptionGroups,
7008
+ layoutPatches: microBannerLayoutPatches,
7009
+ design: {
7010
+ sectionSurface: "hero-image",
7011
+ contentFrame: plainFrame,
7012
+ itemSurface: "none",
7013
+ sectionHeight: "immersive",
7014
+ heroComposition: "center",
7015
+ heroTypographyScale: "display",
7016
+ imageSurfaceTreatment: {
7017
+ kind: "brand-scrim",
7018
+ token: "primary"
7019
+ },
7020
+ imageSurfaceMotion: "fixed-frame",
7021
+ eyebrowTreatment: "accent-pill-bounce"
7022
+ }
7023
+ }), defineBlockAppearancePreset({
7024
+ id: "hero-brand-depth-expressive",
7025
+ target: "hero",
7026
+ label: "Expressive brand-depth hero",
7027
+ blockKinds: ["block.hero"],
7028
+ constraints: { layoutFamilies: ["centered", "compact"] },
7029
+ design: {
7030
+ sectionSurface: "brand-depth-band",
7031
+ contentFrame: plainFrame,
7032
+ itemSurface: "none",
7033
+ heroComposition: "center",
7034
+ heroTypographyScale: "editorial",
7035
+ eyebrowTreatment: "accent-pill-bounce"
7036
+ }
7037
+ }), defineBlockAppearancePreset({
7038
+ id: "hero-contained-intro",
7039
+ target: "hero",
7040
+ label: "Contained intro hero",
7041
+ blockKinds: ["block.hero"],
7042
+ design: {
7043
+ sectionSurface: "muted-band",
7044
+ contentFrame: panelFrame("inset"),
7045
+ itemSurface: "none",
7046
+ heroComposition: "center",
7047
+ heroTypographyScale: "editorial"
7048
+ }
7049
+ }), defineBlockAppearancePreset({
7050
+ id: "hero-split-editorial",
7051
+ target: "hero",
7052
+ label: "Editorial split hero",
7053
+ blockKinds: ["block.hero"],
7054
+ constraints: { layoutFamilies: ["split"] },
7055
+ design: {
7056
+ sectionSurface: "base",
7057
+ contentFrame: plainFrame,
7058
+ itemSurface: "none",
7059
+ heroTypographyScale: "editorial"
7060
+ }
7061
+ }), defineBlockAppearancePreset({
7062
+ id: "hero-split-brand",
7063
+ target: "hero",
7064
+ label: "Brand split hero",
7065
+ blockKinds: ["block.hero"],
7066
+ constraints: { layoutFamilies: ["split"] },
7067
+ design: {
7068
+ sectionSurface: "brand-depth-band",
7069
+ contentFrame: plainFrame,
7070
+ itemSurface: "none",
7071
+ heroTypographyScale: "display",
7072
+ eyebrowTreatment: "accent-pill-bounce"
7073
+ }
7074
+ }), defineBlockAppearancePreset({
7075
+ id: "hero-split-soft-panel",
7076
+ target: "hero",
7077
+ label: "Soft panel split hero",
7078
+ blockKinds: ["block.hero"],
7079
+ constraints: { layoutFamilies: ["split"] },
7080
+ design: {
7081
+ sectionSurface: "muted-band",
7082
+ contentFrame: panelFrame("raised"),
7083
+ itemSurface: "none",
7084
+ heroTypographyScale: "editorial"
7085
+ }
7086
+ }), defineBlockAppearancePreset({
7087
+ id: "hero-split-accent",
7088
+ target: "hero",
7089
+ label: "Accent split hero",
7090
+ blockKinds: ["block.hero"],
7091
+ constraints: { layoutFamilies: ["split"] },
7092
+ design: {
7093
+ sectionSurface: "accent-band",
7094
+ contentFrame: panelFrame("raised"),
7095
+ itemSurface: "none",
7096
+ heroTypographyScale: "display"
7097
+ }
7098
+ }), defineBlockAppearancePreset({
7099
+ id: "intro-editorial-statement",
7100
+ target: "intro",
7101
+ label: "Editorial intro statement",
7102
+ blockKinds: ["block.intro"],
7103
+ constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
7104
+ design: {
7105
+ sectionSurface: "base",
7106
+ contentFrame: plainFrame,
7107
+ itemSurface: "none",
7108
+ composition: {
7109
+ kind: "intro",
7110
+ treatment: "editorial-statement"
7111
+ }
7112
+ }
7113
+ }), defineBlockAppearancePreset({
7114
+ id: "intro-portrait-bio",
7115
+ target: "intro",
7116
+ label: "Portrait and bio",
7117
+ blockKinds: ["block.intro"],
7118
+ constraints: { layoutVariantKeys: ["media-copy"] },
7119
+ design: {
7120
+ sectionSurface: "base",
7121
+ contentFrame: plainFrame,
7122
+ itemSurface: "none",
7123
+ composition: {
7124
+ kind: "intro",
7125
+ treatment: "portrait-bio"
7126
+ }
7127
+ }
7128
+ }), defineBlockAppearancePreset({
7129
+ id: "offerings-preview-default-cards",
7130
+ target: "offerings",
7131
+ label: "Default offering cards",
7132
+ blockKinds: ["block.offerings-preview"],
7133
+ design: {
7134
+ sectionSurface: "base",
7135
+ contentFrame: plainFrame,
7136
+ itemSurface: "default"
7137
+ }
7138
+ }), defineBlockAppearancePreset({
7139
+ id: "offerings-preview-secondary-cards",
7140
+ target: "offerings",
7141
+ label: "Secondary offering cards",
7142
+ blockKinds: ["block.offerings-preview"],
7143
+ design: {
7144
+ sectionSurface: "muted-band",
7145
+ contentFrame: plainFrame,
7146
+ itemSurface: "inset"
7147
+ }
7148
+ }), defineBlockAppearancePreset({
7149
+ id: "offerings-preview-non-carded",
7150
+ target: "offerings",
7151
+ label: "Non-carded offerings",
7152
+ blockKinds: ["block.offerings-preview"],
7153
+ design: {
7154
+ sectionSurface: "muted-band",
7155
+ contentFrame: plainFrame,
7156
+ itemSurface: "editorial"
7157
+ }
7158
+ }), defineBlockAppearancePreset({
7159
+ id: "offerings-preview-paired-feature-cards",
7160
+ target: "offerings",
7161
+ label: "Paired feature cards",
7162
+ blockKinds: ["block.offerings-preview"],
7163
+ constraints: { layoutVariantKeys: ["cards"] },
7164
+ design: {
7165
+ sectionSurface: "base",
7166
+ contentFrame: plainFrame,
7167
+ itemSurface: "none"
7168
+ }
7169
+ }), defineBlockAppearancePreset({
7170
+ id: "offerings-preview-open-editorial-columns",
7171
+ target: "offerings",
7172
+ label: "Open editorial columns",
7173
+ blockKinds: ["block.offerings-preview"],
7174
+ constraints: { layoutVariantKeys: ["cards"] },
7175
+ design: {
7176
+ sectionSurface: "base",
7177
+ contentFrame: plainFrame,
7178
+ itemSurface: "none"
7179
+ }
7180
+ }), defineBlockAppearancePreset({
7181
+ id: "offerings-preview-joined-programme-panel",
7182
+ target: "offerings",
7183
+ label: "Joined programme panel",
7184
+ blockKinds: ["block.offerings-preview"],
7185
+ constraints: { layoutVariantKeys: ["cards"] },
7186
+ design: {
7187
+ sectionSurface: "base",
7188
+ contentFrame: plainFrame,
7189
+ itemSurface: "none"
7190
+ }
7191
+ }), defineBlockAppearancePreset({
7192
+ id: "feature-cards-raised-rule",
7193
+ target: "feature-cards",
7194
+ label: "Raised cards with rule",
7195
+ blockKinds: ["block.feature-cards"],
7196
+ design: {
7197
+ sectionSurface: "base",
7198
+ contentFrame: plainFrame,
7199
+ itemSurface: "raised"
7200
+ }
7201
+ }), defineBlockAppearancePreset({
7202
+ id: "feature-cards-bold-colors",
7203
+ target: "feature-cards",
7204
+ label: "Bold colour-blocked cards",
7205
+ blockKinds: ["block.feature-cards"],
7206
+ design: {
7207
+ sectionSurface: "base",
7208
+ contentFrame: plainFrame,
7209
+ itemSurface: "color-blocked"
7210
+ }
7211
+ }), defineBlockAppearancePreset({
7212
+ id: "feature-cards-editorial-columns",
7213
+ target: "feature-cards",
7214
+ label: "Editorial open columns",
7215
+ blockKinds: ["block.feature-cards"],
7216
+ design: {
7217
+ sectionSurface: "base",
7218
+ contentFrame: plainFrame,
7219
+ itemSurface: "editorial"
7220
+ }
7221
+ }), defineBlockAppearancePreset({
7222
+ id: "feature-cards-asymmetric-emphasis",
7223
+ target: "feature-cards",
7224
+ label: "Asymmetric emphasis pair",
7225
+ blockKinds: ["block.feature-cards"],
7226
+ constraints: { layoutFamilies: ["grid"] },
7227
+ design: {
7228
+ sectionSurface: "base",
7229
+ contentFrame: plainFrame,
7230
+ itemSurface: "none",
7231
+ composition: {
7232
+ kind: "feature-cards",
7233
+ treatment: "asymmetric-emphasis"
7234
+ }
7235
+ }
7236
+ }), defineBlockAppearancePreset({
7237
+ id: "feature-cards-framed-programme",
7238
+ target: "feature-cards",
7239
+ label: "Framed programme cards",
7240
+ blockKinds: ["block.feature-cards"],
7241
+ constraints: { layoutFamilies: ["grid"] },
7242
+ design: {
7243
+ sectionSurface: "brand-depth-band",
7244
+ contentFrame: plainFrame,
7245
+ itemSurface: "inset",
7246
+ composition: {
7247
+ kind: "feature-cards",
7248
+ treatment: "framed-programme"
7249
+ }
7250
+ }
7251
+ }), defineBlockAppearancePreset({
7252
+ id: "feature-cards-soft-panels",
7253
+ target: "feature-cards",
7254
+ label: "Soft tinted panels",
7255
+ blockKinds: ["block.feature-cards"],
7256
+ design: {
7257
+ sectionSurface: "base",
7258
+ contentFrame: plainFrame,
7259
+ itemSurface: "inset"
7260
+ }
7261
+ }), defineBlockAppearancePreset({
7262
+ id: "feature-cards-editorial-diptych",
7263
+ target: "feature-cards",
7264
+ label: "Editorial diptych",
7265
+ blockKinds: ["block.feature-cards"],
7266
+ constraints: { layoutVariantKeys: ["editorial-diptych"] },
7267
+ design: {
7268
+ sectionSurface: "base",
7269
+ contentFrame: plainFrame,
7270
+ itemSurface: "flat"
7271
+ }
7272
+ }), defineBlockAppearancePreset({
7273
+ id: "feature-cards-editorial-pathways",
7274
+ target: "feature-cards",
7275
+ label: "Editorial pathways",
7276
+ blockKinds: ["block.feature-cards"],
7277
+ constraints: { layoutVariantKeys: ["editorial-pathways"] },
7278
+ design: {
7279
+ sectionSurface: "base",
7280
+ contentFrame: plainFrame,
7281
+ itemSurface: "flat"
7282
+ }
7283
+ }), defineBlockAppearancePreset({
7284
+ id: "feature-cards-photo-tiles",
7285
+ target: "feature-cards",
7286
+ label: "Photo tiles",
7287
+ blockKinds: ["block.feature-cards"],
7288
+ design: {
7289
+ sectionSurface: "base",
7290
+ contentFrame: plainFrame,
7291
+ itemSurface: "raised"
7292
+ }
7293
+ }), defineBlockAppearancePreset({
7294
+ id: "events-lined-panel",
7295
+ target: "events",
7296
+ label: "Raised event panel",
7297
+ blockKinds: ["block.event-calendar", "block.event-listing"],
7298
+ design: {
7299
+ sectionSurface: "base",
7300
+ contentFrame: panelFrame("raised"),
7301
+ itemSurface: "none"
7302
+ }
7303
+ }), defineBlockAppearancePreset({
7304
+ id: "events-ruled-register",
7305
+ target: "events",
7306
+ label: "Ruled event register",
7307
+ blockKinds: ["block.event-calendar", "block.event-listing"],
7308
+ design: {
7309
+ sectionSurface: "brand-depth-band",
7310
+ contentFrame: plainFrame,
7311
+ itemSurface: "none",
7312
+ eventListTreatment: "ruled-register"
7313
+ }
7314
+ }), defineBlockAppearancePreset({
7315
+ id: "events-editorial-register",
7316
+ target: "events",
7317
+ label: "Editorial event register",
7318
+ blockKinds: ["block.event-calendar", "block.event-listing"],
7319
+ design: {
7320
+ sectionSurface: "base",
7321
+ contentFrame: plainFrame,
7322
+ itemSurface: "none",
7323
+ eventListTreatment: "editorial-register"
7324
+ }
7325
+ }), defineBlockAppearancePreset({
7326
+ id: "events-dense-index",
7327
+ target: "events",
7328
+ label: "Dense event index",
7329
+ blockKinds: ["block.event-calendar", "block.event-listing"],
7330
+ design: {
7331
+ sectionSurface: "accent-band",
7332
+ contentFrame: plainFrame,
7333
+ itemSurface: "none",
7334
+ eventListTreatment: "dense-index"
7335
+ }
7336
+ }), defineBlockAppearancePreset({
7337
+ id: "schedule-details-brand-depth",
7338
+ target: "events",
7339
+ label: "Brand-depth schedule details",
7340
+ blockKinds: ["block.event-details", "block.course-details"],
7341
+ design: {
7342
+ sectionSurface: "brand-depth-band",
7343
+ contentFrame: plainFrame,
7344
+ itemSurface: "none",
7345
+ tileTreatment: "brand-depth"
7346
+ }
7347
+ }), defineBlockAppearancePreset({
7348
+ id: "media-text-flush-feature",
7349
+ target: "media-text",
7350
+ label: "Flush media feature",
7351
+ blockKinds: ["block.media-text"],
7352
+ design: {
7353
+ sectionSurface: "muted-band",
7354
+ contentFrame: flushPanelFrame({ bleed: "start" }),
7355
+ itemSurface: "none"
7356
+ }
7357
+ }), defineBlockAppearancePreset({
7358
+ id: "testimonials-simple-cards",
7359
+ target: "testimonials",
7360
+ label: "Simple testimonial cards",
7361
+ blockKinds: ["block.testimonials"],
7362
+ design: {
7363
+ sectionSurface: "base",
7364
+ contentFrame: plainFrame,
7365
+ itemSurface: "default"
7366
+ }
7367
+ }), defineBlockAppearancePreset({
7368
+ id: "testimonials-raised-panel",
7369
+ target: "testimonials",
7370
+ label: "Raised testimonial panel",
7371
+ blockKinds: ["block.testimonials"],
7372
+ design: {
7373
+ sectionSurface: "muted-band",
7374
+ contentFrame: panelFrame("raised"),
7375
+ itemSurface: "raised"
7376
+ }
7377
+ }), defineBlockAppearancePreset({
7378
+ id: "testimonials-accent-panel",
7379
+ target: "testimonials",
7380
+ label: "Accent testimonial panel",
7381
+ blockKinds: ["block.testimonials"],
7382
+ design: {
7383
+ sectionSurface: "accent-band",
7384
+ contentFrame: panelFrame("raised"),
7385
+ itemSurface: "raised"
7386
+ }
7387
+ }), defineBlockAppearancePreset({
7388
+ id: "testimonials-default-cards",
7389
+ target: "testimonials",
7390
+ label: "Default cards",
7391
+ blockKinds: ["block.testimonials"],
7392
+ design: {
7393
+ sectionSurface: "base",
7394
+ contentFrame: plainFrame,
7395
+ itemSurface: "none",
7396
+ testimonialCardTreatment: "default"
7397
+ }
7398
+ }), defineBlockAppearancePreset({
7399
+ id: "testimonials-statement-cards",
7400
+ target: "testimonials",
7401
+ label: "Statement cards",
7402
+ blockKinds: ["block.testimonials"],
7403
+ design: {
7404
+ sectionSurface: "accent-band",
7405
+ contentFrame: plainFrame,
7406
+ itemSurface: "raised",
7407
+ testimonialCardTreatment: "statement"
7408
+ }
7409
+ }), defineBlockAppearancePreset({
7410
+ id: "testimonials-brand-statement-cards",
7411
+ target: "testimonials",
7412
+ label: "Brand statement cards",
7413
+ blockKinds: ["block.testimonials"],
7414
+ design: {
7415
+ sectionSurface: "brand-depth-band",
7416
+ contentFrame: plainFrame,
7417
+ itemSurface: "raised",
7418
+ testimonialCardTreatment: "statement"
7419
+ }
7420
+ }), defineBlockAppearancePreset({
7421
+ id: "testimonials-non-carded",
7422
+ target: "testimonials",
7423
+ label: "Non-carded",
7424
+ blockKinds: ["block.testimonials"],
7425
+ design: {
7426
+ sectionSurface: "muted-band",
7427
+ contentFrame: plainFrame,
7428
+ itemSurface: "none",
7429
+ testimonialCardTreatment: "non-carded"
7430
+ }
7431
+ }), defineBlockAppearancePreset({
7432
+ id: "testimonials-evergreen-lead",
7433
+ target: "testimonials",
7434
+ label: "Evergreen lead",
7435
+ blockKinds: ["block.testimonials"],
7436
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
7437
+ design: {
7438
+ sectionSurface: "base",
7439
+ contentFrame: plainFrame,
7440
+ itemSurface: "none"
7441
+ }
7442
+ }), defineBlockAppearancePreset({
7443
+ id: "testimonials-room-and-response",
7444
+ target: "testimonials",
7445
+ label: "Room and response",
7446
+ blockKinds: ["block.testimonials"],
7447
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
7448
+ design: {
7449
+ sectionSurface: "base",
7450
+ contentFrame: plainFrame,
7451
+ itemSurface: "none"
7452
+ }
7453
+ }), defineBlockAppearancePreset({
7454
+ id: "testimonials-open-floor",
7455
+ target: "testimonials",
7456
+ label: "Open floor",
7457
+ blockKinds: ["block.testimonials"],
7458
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
7459
+ design: {
7460
+ sectionSurface: "base",
7461
+ contentFrame: plainFrame,
7462
+ itemSurface: "none"
7463
+ }
7464
+ }), defineBlockAppearancePreset({
7465
+ id: "faq-base-accordion",
7466
+ target: "faq",
7467
+ label: "Base accordion FAQ",
7468
+ blockKinds: ["block.faq"],
7469
+ design: {
7470
+ sectionSurface: "base",
7471
+ contentFrame: plainFrame,
7472
+ itemSurface: "default"
7473
+ }
7474
+ }), defineBlockAppearancePreset({
7475
+ id: "faq-contained-help",
7476
+ target: "faq",
7477
+ label: "Contained help panel",
7478
+ blockKinds: ["block.faq"],
7479
+ design: {
7480
+ sectionSurface: "muted-band",
7481
+ contentFrame: panelFrame("inset"),
7482
+ itemSurface: "default"
7483
+ }
7484
+ }), defineBlockAppearancePreset({
7485
+ id: "contact-form-panel",
7486
+ target: "contact-form",
7487
+ label: "Raised form panel",
7488
+ blockKinds: ["block.form"],
7489
+ design: {
7490
+ sectionSurface: "muted-band",
7491
+ contentFrame: panelFrame("raised"),
7492
+ itemSurface: "none"
7493
+ }
7494
+ }), defineBlockAppearancePreset({
7495
+ id: "cta-accent-band",
7496
+ target: "cta",
7497
+ label: "Accent CTA band",
7498
+ blockKinds: ["block.cta-full"],
7499
+ design: {
7500
+ sectionSurface: "accent-band",
7501
+ contentFrame: plainFrame,
7502
+ itemSurface: "none",
7503
+ eyebrowTreatment: "accent"
7504
+ }
7505
+ });
7571
7506
  //#endregion
7572
7507
  //#region ../theme-core/src/site-styles/headerCtaVariants.ts
7573
7508
  function hasButtonVariant(theme, variantId) {
@@ -7648,6 +7583,27 @@ function uniqueStrings(values) {
7648
7583
  return Array.from(new Set(values));
7649
7584
  }
7650
7585
  //#endregion
7586
+ //#region ../theme-core/src/site-styles/headerInteractionPalette.ts
7587
+ const clearSplitInteractionPalette = defineLookOptionGroup({
7588
+ id: "interaction-palette",
7589
+ label: "Hover colour",
7590
+ defaultOptionId: "accent",
7591
+ options: [
7592
+ {
7593
+ id: "accent",
7594
+ label: "Accent"
7595
+ },
7596
+ {
7597
+ id: "primary",
7598
+ label: "Primary"
7599
+ },
7600
+ {
7601
+ id: "secondary",
7602
+ label: "Secondary"
7603
+ }
7604
+ ]
7605
+ });
7606
+ //#endregion
7651
7607
  //#region ../theme-core/src/site-styles/headerLooks.ts
7652
7608
  function asHeaderLookId(value) {
7653
7609
  return value;
@@ -7781,7 +7737,7 @@ const overlayLogoAccommodations = [
7781
7737
  * optional nested styling fields that would otherwise leak from another Look.
7782
7738
  */
7783
7739
  function baseHeader(theme) {
7784
- 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;
7740
+ 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;
7785
7741
  return {
7786
7742
  ...header,
7787
7743
  navContainer: {
@@ -7796,7 +7752,6 @@ const headerLayoutCatalog = defineExactCatalog()([
7796
7752
  id: asHeaderLayoutId("classic"),
7797
7753
  label: "Classic",
7798
7754
  description: "Logo and navigation in one practical horizontal row.",
7799
- structure: "inline-classic",
7800
7755
  variant: "classic",
7801
7756
  defaultPositioning: "sticky",
7802
7757
  shrinkOnScroll: false
@@ -7805,7 +7760,6 @@ const headerLayoutCatalog = defineExactCatalog()([
7805
7760
  id: asHeaderLayoutId("centered"),
7806
7761
  label: "Centered",
7807
7762
  description: "Logo centered above a balanced navigation row.",
7808
- structure: "centered-stack",
7809
7763
  variant: "centered",
7810
7764
  defaultPositioning: "static",
7811
7765
  shrinkOnScroll: false,
@@ -7821,7 +7775,6 @@ const headerLayoutCatalog = defineExactCatalog()([
7821
7775
  id: asHeaderLayoutId("floating"),
7822
7776
  label: "Floating",
7823
7777
  description: "Detached header chrome that sits over the opening section.",
7824
- structure: "floating-shell",
7825
7778
  variant: "floating",
7826
7779
  defaultPositioning: "sticky",
7827
7780
  shrinkOnScroll: true,
@@ -7983,10 +7936,13 @@ const headerStyleCatalog = defineExactCatalog()([
7983
7936
  label: "Clear Split",
7984
7937
  description: "Floating logo with transparent navigation and no shared shell.",
7985
7938
  supportedLayoutIds: supportedLayouts(["floating"]),
7986
- navInteraction: "color-change",
7939
+ navInteraction: "pill-background",
7987
7940
  surface: "floating",
7988
- defaultDepth: "none",
7941
+ defaultDepth: "line",
7989
7942
  navTypography: "plain",
7943
+ openingForegroundTarget: "all",
7944
+ scrollTreatment: "contrast-glass",
7945
+ interactionPalette: clearSplitInteractionPalette,
7990
7946
  moods: ["editorial", "calm"]
7991
7947
  },
7992
7948
  {
@@ -8009,6 +7965,7 @@ const headerStyleCatalog = defineExactCatalog()([
8009
7965
  surface: "floating",
8010
7966
  defaultDepth: "shadow",
8011
7967
  navTypography: "quiet-caps",
7968
+ openingForegroundTarget: "brand-only",
8012
7969
  moods: ["expressive"]
8013
7970
  },
8014
7971
  {
@@ -8020,6 +7977,7 @@ const headerStyleCatalog = defineExactCatalog()([
8020
7977
  surface: "floating",
8021
7978
  defaultDepth: "shadow",
8022
7979
  navTypography: "heading",
7980
+ openingForegroundTarget: "brand-only",
8023
7981
  moods: ["calm", "editorial"]
8024
7982
  }
8025
7983
  ]);
@@ -8521,13 +8479,6 @@ const headerLookCatalog = defineExactCatalog()([
8521
8479
  {
8522
8480
  id: asHeaderLookId("clean-base"),
8523
8481
  label: "Clean base",
8524
- visualTreatment: "solid-neutral",
8525
- layoutBehavior: "sticky",
8526
- configuration: {
8527
- structure: "inline-classic",
8528
- treatment: "solid-neutral",
8529
- behavior: "sticky"
8530
- },
8531
8482
  openingRequirement: "none",
8532
8483
  logoAccommodations: inlineClassicLogoAccommodations,
8533
8484
  compile: cleanBaseHeader
@@ -8535,13 +8486,6 @@ const headerLookCatalog = defineExactCatalog()([
8535
8486
  {
8536
8487
  id: asHeaderLookId("classic-centered-nav"),
8537
8488
  label: "Centered nav",
8538
- visualTreatment: "solid-neutral",
8539
- layoutBehavior: "sticky",
8540
- configuration: {
8541
- structure: "inline-classic",
8542
- treatment: "solid-neutral",
8543
- behavior: "sticky"
8544
- },
8545
8489
  openingRequirement: "none",
8546
8490
  maxRecommendedNavItems: 6,
8547
8491
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -8550,13 +8494,6 @@ const headerLookCatalog = defineExactCatalog()([
8550
8494
  {
8551
8495
  id: asHeaderLookId("brand-solid"),
8552
8496
  label: "Brand solid",
8553
- visualTreatment: "solid-brand",
8554
- layoutBehavior: "sticky-shrink",
8555
- configuration: {
8556
- structure: "inline-classic",
8557
- treatment: "solid-brand",
8558
- behavior: "sticky-shrink"
8559
- },
8560
8497
  openingRequirement: "none",
8561
8498
  logoAccommodations: inlineClassicLogoAccommodations,
8562
8499
  compile: solidBrandHeader
@@ -8564,13 +8501,6 @@ const headerLookCatalog = defineExactCatalog()([
8564
8501
  {
8565
8502
  id: asHeaderLookId("serif-line"),
8566
8503
  label: "Serif line",
8567
- visualTreatment: "light-serif",
8568
- layoutBehavior: "sticky",
8569
- configuration: {
8570
- structure: "centered-stack",
8571
- treatment: "light-serif",
8572
- behavior: "sticky"
8573
- },
8574
8504
  openingRequirement: "none",
8575
8505
  maxRecommendedNavItems: 6,
8576
8506
  logoAccommodations: centeredLogoAccommodations,
@@ -8579,13 +8509,6 @@ const headerLookCatalog = defineExactCatalog()([
8579
8509
  {
8580
8510
  id: asHeaderLookId("centered-calm"),
8581
8511
  label: "Centered calm",
8582
- visualTreatment: "light-serif",
8583
- layoutBehavior: "normal-flow",
8584
- configuration: {
8585
- structure: "centered-stack",
8586
- treatment: "light-serif",
8587
- behavior: "normal-flow"
8588
- },
8589
8512
  openingRequirement: "none",
8590
8513
  maxRecommendedNavItems: 5,
8591
8514
  logoAccommodations: centeredLogoAccommodations,
@@ -8594,13 +8517,6 @@ const headerLookCatalog = defineExactCatalog()([
8594
8517
  {
8595
8518
  id: asHeaderLookId("practical-utility"),
8596
8519
  label: "Practical utility",
8597
- visualTreatment: "solid-neutral",
8598
- layoutBehavior: "sticky-shrink",
8599
- configuration: {
8600
- structure: "inline-classic",
8601
- treatment: "solid-neutral",
8602
- behavior: "sticky-shrink"
8603
- },
8604
8520
  openingRequirement: "none",
8605
8521
  requiresProminentCta: true,
8606
8522
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -8609,13 +8525,6 @@ const headerLookCatalog = defineExactCatalog()([
8609
8525
  {
8610
8526
  id: asHeaderLookId("minimal-transparent"),
8611
8527
  label: "Minimal transparent",
8612
- visualTreatment: "minimal-transparent",
8613
- layoutBehavior: "normal-flow",
8614
- configuration: {
8615
- structure: "inline-classic",
8616
- treatment: "minimal-transparent",
8617
- behavior: "normal-flow"
8618
- },
8619
8528
  openingRequirement: "reserved-space-ok",
8620
8529
  logoAccommodations: inlineClassicLogoAccommodations,
8621
8530
  compile: minimalTransparentHeader
@@ -8623,13 +8532,6 @@ const headerLookCatalog = defineExactCatalog()([
8623
8532
  {
8624
8533
  id: asHeaderLookId("transparent-overlay"),
8625
8534
  label: "Transparent overlay",
8626
- visualTreatment: "transparent-overlay",
8627
- layoutBehavior: "fixed-overlay",
8628
- configuration: {
8629
- structure: "inline-classic",
8630
- treatment: "transparent-overlay",
8631
- behavior: "fixed-overlay"
8632
- },
8633
8535
  openingRequirement: "requires-image-hero-with-contrast-overlay",
8634
8536
  maxRecommendedNavItems: 5,
8635
8537
  logoAccommodations: overlayLogoAccommodations,
@@ -8638,24 +8540,13 @@ const headerLookCatalog = defineExactCatalog()([
8638
8540
  {
8639
8541
  id: asHeaderLookId("floating-glass"),
8640
8542
  label: "Floating glass",
8641
- visualTreatment: "floating-glass",
8642
- layoutBehavior: "fixed-floating",
8643
- configuration: {
8644
- structure: "floating-shell",
8645
- treatment: "floating-glass",
8646
- behavior: "fixed-floating"
8647
- },
8648
8543
  openingRequirement: "requires-image-hero-with-contrast-overlay",
8649
8544
  maxRecommendedNavItems: 5,
8650
8545
  logoAccommodations: overlayLogoAccommodations,
8651
8546
  compile: floatingGlassHeader
8652
8547
  }
8653
8548
  ]);
8654
- new Set(headerLookCatalog.map((look) => headerConfigurationKey(look.configuration)));
8655
8549
  new Map(headerLookCatalog.map((look) => [look.id, look]));
8656
- function headerConfigurationKey(configuration) {
8657
- return `${configuration.structure}:${configuration.treatment}:${configuration.behavior}`;
8658
- }
8659
8550
  //#endregion
8660
8551
  //#region ../theme-core/src/site-styles/sectionTransitions.ts
8661
8552
  function boundaryRuntimeMetrics(family, size, heightExpression) {
@@ -12237,28 +12128,6 @@ z$1.object({
12237
12128
  spacing: z$1.enum(themeTokenRecipeOptions.spacing),
12238
12129
  motion: z$1.enum(themeTokenRecipeOptions.motion)
12239
12130
  });
12240
- const BREAKPOINT_LG = 1024;
12241
- const BREAKPOINT_XL = 1280;
12242
- const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
12243
- function mqUp(px) {
12244
- return `(min-width: ${px}px)`;
12245
- }
12246
- function mqDown(px) {
12247
- return `(max-width: ${px}px)`;
12248
- }
12249
- function mqBetween(minPx, maxPx) {
12250
- return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
12251
- }
12252
- mqUp(640);
12253
- mqUp(768);
12254
- mqUp(BREAKPOINT_LG);
12255
- mqUp(BREAKPOINT_XL);
12256
- mqDown(639);
12257
- mqDown(767);
12258
- mqDown(BREAKPOINT_LG_DOWN);
12259
- mqBetween(640, BREAKPOINT_LG_DOWN);
12260
- mqDown(640);
12261
- mqDown(768);
12262
12131
  //#endregion
12263
12132
  //#region ../theme-core/src/siteChromeOverlayClearance.ts
12264
12133
  const SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
@@ -15947,15 +15816,6 @@ const heroLayoutControlsFragment = defineFragment({
15947
15816
  */
15948
15817
  const BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
15949
15818
  const blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
15950
- /**
15951
- * Temporary rollout boundary for persisted content written before issue #1220.
15952
- * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
15953
- * only until the post-deploy role rewrite has been audited in production.
15954
- */
15955
- function canonicalizePersistedBlockButtonRole(value) {
15956
- return value === "link" || value === "tertiary" ? "ghost" : value;
15957
- }
15958
- const persistedBlockButtonRoleSchema = z$1.preprocess((value) => typeof value === "string" ? canonicalizePersistedBlockButtonRole(value) : value, blockButtonRoleSchema);
15959
15819
  const BLOCK_BUTTON_ROLE_LABELS = {
15960
15820
  primary: "Primary",
15961
15821
  secondary: "Secondary",
@@ -21910,6 +21770,12 @@ const mediaBaseSchema = z.object({
21910
21770
  poster: mediaPosterSchema.optional(),
21911
21771
  transform: transformSchema.optional()
21912
21772
  });
21773
+ /**
21774
+ * Canonical identifier carried by media values that are safe to persist.
21775
+ * Parsing trims boundary input so downstream writers cannot retain whitespace-only
21776
+ * identifiers or independently disagree about normalization.
21777
+ */
21778
+ const mediaIdentifierSchema = z.string().trim().min(1).brand();
21913
21779
  const imageMediaSchema = mediaBaseSchema.extend({ type: z.literal("image") });
21914
21780
  const videoMediaSchema = mediaBaseSchema.extend({ type: z.literal("video") });
21915
21781
  const audioMediaSchema = mediaBaseSchema.extend({ type: z.literal("audio") });
@@ -21924,6 +21790,15 @@ const mediaSchema = z.discriminatedUnion("type", [
21924
21790
  spreadsheetMediaSchema,
21925
21791
  archiveMediaSchema
21926
21792
  ]);
21793
+ const persistableMediaBaseSchema = mediaBaseSchema.extend({ identifier: mediaIdentifierSchema });
21794
+ z.discriminatedUnion("type", [
21795
+ persistableMediaBaseSchema.extend({ type: z.literal("image") }),
21796
+ persistableMediaBaseSchema.extend({ type: z.literal("video") }),
21797
+ persistableMediaBaseSchema.extend({ type: z.literal("audio") }),
21798
+ persistableMediaBaseSchema.extend({ type: z.literal("document") }),
21799
+ persistableMediaBaseSchema.extend({ type: z.literal("spreadsheet") }),
21800
+ persistableMediaBaseSchema.extend({ type: z.literal("archive") })
21801
+ ]);
21927
21802
  //#endregion
21928
21803
  //#region ../blocks/src/system/manifest/richTextSchema.ts
21929
21804
  /**
@@ -23107,7 +22982,7 @@ function isEventCalendarListLayout(value) {
23107
22982
  //#region ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
23108
22983
  const previewStageSchema = z$1.enum(["preview", "published"]);
23109
22984
  const registrationButtonVariantSchema = blockButtonRoleSchema;
23110
- const eventButtonVariantSchema = persistedBlockButtonRoleSchema;
22985
+ const eventButtonVariantSchema = blockButtonRoleSchema;
23111
22986
  const eventLayoutSchema = z$1.enum(eventCalendarListLayoutValues);
23112
22987
  const eventCalendarDisplayModeSchema = z$1.enum(eventCalendarDisplayModeValues);
23113
22988
  const eventCalendarDefaultViewSchema = z$1.enum(eventCalendarDefaultViewValues);