@riverbankcms/sdk 0.126.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 (126) hide show
  1. package/dist/{PreviewEditorSidebar-DcYJxTgc.mjs → PreviewEditorSidebar-BXtfF7tp.mjs} +58 -38
  2. package/dist/{PreviewEditorUI-Ctt1yTJr.mjs → PreviewEditorUI-Dou73Q0K.mjs} +2 -2
  3. package/dist/{SdkPreviewModeRuntime-CvW1vdQ4.mjs → SdkPreviewModeRuntime-B0HPXr-l.mjs} +119 -41
  4. package/dist/{SiteChromeCustomizeContext-C87qlKWw.mjs → SiteChromeCustomizeContext-DZiDBAYu.mjs} +9961 -9583
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +198 -0
  6. package/dist/_dts/api/src/contentRuntime.d.ts +1 -5
  7. package/dist/_dts/block-form/src/backend/store-backend.d.ts +2 -1
  8. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +1 -0
  9. package/dist/_dts/blocks/src/index.d.ts +3 -2
  10. package/dist/_dts/blocks/src/lib/media.d.ts +267 -0
  11. package/dist/_dts/blocks/src/system/constants/buttonRoles.d.ts +0 -13
  12. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +4 -4
  13. package/dist/_dts/blocks/src/system/runtime/nodes/mergeResolveImageUrlContexts.d.ts +7 -0
  14. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +2 -2
  15. package/dist/_dts/content-editor/src/ui/blockValidationManifestRegistry.d.ts +17 -0
  16. package/dist/_dts/content-editor/src/ui/blockValidationView.d.ts +1 -1
  17. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +4 -0
  18. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +143 -155
  19. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +4 -0
  20. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockValidationManifests.d.ts +26 -0
  21. package/dist/_dts/editor-blocks/src/widgets/rich-text/imageInsert.d.ts +3 -3
  22. package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -2
  23. package/dist/_dts/media-editor/src/context.d.ts +1 -2
  24. package/dist/_dts/media-editor/src/index.d.ts +3 -1
  25. package/dist/_dts/media-editor/src/mediaSelection.d.ts +32 -0
  26. package/dist/_dts/media-editor/src/types.d.ts +3 -1
  27. package/dist/_dts/media-editor/src/useMediaSelection.d.ts +26 -0
  28. package/dist/_dts/preview-next/src/client/index.d.ts +2 -0
  29. package/dist/_dts/preview-next/src/client/preview/HeaderMenuControls.d.ts +12 -0
  30. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +12 -1
  31. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +7 -1
  32. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -49
  33. package/dist/_dts/preview-next/src/client/preview/headerInteractionPaletteSurfaceState.d.ts +8 -0
  34. package/dist/_dts/preview-next/src/client/preview/previewThemeRoles.d.ts +15 -0
  35. package/dist/_dts/preview-next/src/client/preview/siteChromeCustomizeTypes.d.ts +54 -0
  36. package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +13 -3
  37. package/dist/_dts/preview-next/src/client/preview/siteChromeNavQuickControlHistory.d.ts +3 -0
  38. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +6 -3
  39. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -2
  40. package/dist/_dts/sdk/src/version.d.ts +1 -1
  41. package/dist/_dts/theme-core/src/buttons/effects/presets/background.d.ts +1 -1
  42. package/dist/_dts/theme-core/src/buttons/styles/registry.d.ts +0 -18
  43. package/dist/_dts/theme-core/src/buttons/types.d.ts +1 -3
  44. package/dist/_dts/theme-core/src/header/containerSchema.d.ts +20 -0
  45. package/dist/_dts/theme-core/src/header/generateHeaderCss.d.ts +1 -1
  46. package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +14 -0
  47. package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +3 -0
  48. package/dist/_dts/theme-core/src/header/paintTargets.d.ts +25 -0
  49. package/dist/_dts/theme-core/src/header/scrollTreatment.d.ts +11 -0
  50. package/dist/_dts/theme-core/src/header/surfaceRules.d.ts +9 -0
  51. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +15 -0
  52. package/dist/_dts/theme-core/src/palette/colors.d.ts +1 -1
  53. package/dist/_dts/theme-core/src/schema.d.ts +67 -19
  54. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +3 -51
  55. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +4 -11
  56. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +3 -51
  57. package/dist/_dts/theme-core/src/site-styles/headerInteractionPalette.d.ts +32 -0
  58. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +19 -106
  59. package/dist/_dts/theme-core/src/site-styles/headerOpeningForeground.d.ts +22 -0
  60. package/dist/_dts/theme-core/src/site-styles/headerOpeningSection.d.ts +2 -0
  61. package/dist/_dts/theme-core/src/site-styles/headerStyleParts.d.ts +4 -0
  62. package/dist/_dts/theme-core/src/site-styles/index.d.ts +3 -0
  63. package/dist/_dts/theme-core/src/site-styles/lookOptionGroups.d.ts +24 -0
  64. package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +1 -2
  65. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +4 -22
  66. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorOptions.d.ts +21 -0
  67. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
  68. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +4 -1
  69. package/dist/cli/index.mjs +973 -1081
  70. package/dist/client/{DiscountCodeDisclosure-DS0AuFWW.mjs → DiscountCodeDisclosure-BDFRp8Y7.mjs} +1 -1
  71. package/dist/client/{EventCombined.client-DtMxLr7q.mjs → EventCombined.client-DJgF1_lf.mjs} +2 -2
  72. package/dist/client/{EventListing.client-BdLSRNg1.mjs → EventListing.client-CnWGNjOr.mjs} +2 -2
  73. package/dist/client/{LeafletStaticMap-BrpC6vsT.mjs → LeafletStaticMap-BISs9Bl7.mjs} +1 -1
  74. package/dist/client/{MagicLinkForm-Bt3IuLMy.mjs → MagicLinkForm-b5E_HoG9.mjs} +1 -1
  75. package/dist/client/{StepIndicator-CBYPFVoy.mjs → StepIndicator-D8gVYkK-.mjs} +2 -2
  76. package/dist/client/{accordion-BqqwPJWM.mjs → accordion-DFDajgDz.mjs} +1 -1
  77. package/dist/client/{bookingForm-SneP3yxC.mjs → bookingForm-Bdqj9-52.mjs} +5 -5
  78. package/dist/client/bookings.mjs +126 -23
  79. package/dist/client/{carousel-BTIR9L3I.mjs → carousel-Cvqf-kN8.mjs} +1 -1
  80. package/dist/client/{cart-bqiqd8SX.mjs → cart-CuH2TJXP.mjs} +3 -3
  81. package/dist/client/{checkout-WbTFV5v4.mjs → checkout-CMNPpejZ.mjs} +3 -3
  82. package/dist/client/client.mjs +1227 -1209
  83. package/dist/client/{courseRegistration-BcemLAdN.mjs → courseRegistration-DTEYWL6Z.mjs} +6 -6
  84. package/dist/client/{eventCalendar-CsxIw0V_.mjs → eventCalendar-BW-XoxZ0.mjs} +4 -4
  85. package/dist/client/{eventCombined-B6XMoHfa.mjs → eventCombined-Bpn7s0y9.mjs} +2 -2
  86. package/dist/client/{eventDetails-BJaoPPfo.mjs → eventDetails-D2uUSTMH.mjs} +3 -3
  87. package/dist/client/{eventListing-DgwdYHRT.mjs → eventListing-CVr1c094.mjs} +2 -2
  88. package/dist/client/{eventRegistration-C0O3folu.mjs → eventRegistration-Dv4AvkMw.mjs} +6 -6
  89. package/dist/client/{form-Bk9txGFt.mjs → form-DxdKf9fs.mjs} +1 -1
  90. package/dist/client/{headerSection-yIBt0yTv.mjs → headerSection-BaXI5Sro.mjs} +2 -2
  91. package/dist/client/hooks.mjs +801 -874
  92. package/dist/client/{locationMap-C-3KIpv-.mjs → locationMap-BEtW2fKz.mjs} +2 -2
  93. package/dist/client/{newsletterForm-CzB8g8h2.mjs → newsletterForm-BKKs0S4R.mjs} +1 -1
  94. package/dist/client/{pricing-C1QeDes_.mjs → pricing-ClkqcElA.mjs} +1 -1
  95. package/dist/client/{productDetail-w7SBp5uc.mjs → productDetail-H-ru8dyy.mjs} +3 -3
  96. package/dist/client/{productList-D0tGKHGf.mjs → productList-Buyi5c0C.mjs} +3 -3
  97. package/dist/client/{propsDecoder-Bcin2DB3.mjs → propsDecoder-BF7i6Ijg.mjs} +127 -55
  98. package/dist/client/rendering/client.mjs +928 -916
  99. package/dist/client/rendering/islands.mjs +18 -18
  100. package/dist/client/rendering.mjs +1130 -1114
  101. package/dist/client/{scrollToBlock-h-o_STf_.mjs → scrollToBlock-D_7t8yWb.mjs} +1 -1
  102. package/dist/client/{shop-BGzmL8O_.mjs → shop-CF7SZQNX.mjs} +5 -5
  103. package/dist/client/{shop-commerce-lX8QxjX-.mjs → shop-commerce-DA7_Rq5p.mjs} +4 -4
  104. package/dist/client/{shop-commerce-store-CEurARtu.mjs → shop-commerce-store-BmLqW7Gh.mjs} +1 -1
  105. package/dist/client/{shopShared-DXxH8xxw.mjs → shopShared-WL-E1znM.mjs} +2 -2
  106. package/dist/client/{useEventFilters-B591g9vd.mjs → useEventFilters-rc8VLeLV.mjs} +2 -2
  107. package/dist/client/{usePolling-BvnChV4m.mjs → usePolling-1ncrfd4S.mjs} +2 -2
  108. package/dist/preview-next/client/runtime.mjs +3 -3
  109. package/dist/{sdk-runtime-M__i3Jce.mjs → sdk-runtime-BnrCCFJq.mjs} +1 -1
  110. package/dist/{separator-VSlnI9bc.mjs → separator-CFvBx2yl.mjs} +1 -1
  111. package/dist/server/components.mjs +1302 -1350
  112. package/dist/server/config-validation.mjs +801 -874
  113. package/dist/server/config.mjs +801 -874
  114. package/dist/server/data.mjs +801 -874
  115. package/dist/server/index.mjs +1 -1
  116. package/dist/server/next.mjs +1303 -1351
  117. package/dist/server/page-converter.mjs +801 -874
  118. package/dist/server/prebuild.mjs +1 -1
  119. package/dist/server/rendering/server.mjs +1296 -1344
  120. package/dist/server/rendering.mjs +1302 -1350
  121. package/dist/server/routing.mjs +869 -895
  122. package/dist/server/server.mjs +802 -875
  123. package/dist/server/theme-bridge.mjs +151 -118
  124. package/dist/server/theme.mjs +111 -23
  125. package/package.json +1 -1
  126. package/dist/_dts/editor-blocks/src/widgets/rich-text/ensureRichTextImageAssetIdentifier.d.ts +0 -8
@@ -1282,7 +1282,7 @@ function canonicalPaletteHashInput(colors, mode) {
1282
1282
  return `${mode}|${paletteColorFingerprint(colors)}`;
1283
1283
  }
1284
1284
  /**
1285
- * The shared TypeScript/SQL protocol. Do not reorder roles: the order comes
1285
+ * Stable curated-catalogue identity. Do not reorder roles: the order comes
1286
1286
  * from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
1287
1287
  */
1288
1288
  function paletteValueKey(colors, mode) {
@@ -2742,8 +2742,6 @@ const VARIANT_ROLES = [
2742
2742
  "secondary",
2743
2743
  "outline",
2744
2744
  "ghost",
2745
- "link",
2746
- "tertiary",
2747
2745
  "accent"
2748
2746
  ];
2749
2747
  /**
@@ -2752,7 +2750,7 @@ const VARIANT_ROLES = [
2752
2750
  * IDs become class selectors, so keep the contract deliberately narrower than
2753
2751
  * an arbitrary string and shared with every authoring/runtime boundary.
2754
2752
  */
2755
- 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" });
2756
2754
  function parseOpaqueButtonColourToken(value) {
2757
2755
  const token = parseThemeColorToken(value);
2758
2756
  if (token === null) return null;
@@ -3155,6 +3153,59 @@ function surfaceForegroundStyle(input) {
3155
3153
  [SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting
3156
3154
  };
3157
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
+ }
3158
3209
  buttonSizeNameSchema.options;
3159
3210
  //#endregion
3160
3211
  //#region ../theme-core/src/buttons/styles/domain.ts
@@ -5894,6 +5945,60 @@ function mergeStyles(...styles) {
5894
5945
  * palette context and happens in `parseThemeColorReference`.
5895
5946
  */
5896
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
+ ]);
5897
6002
  //#endregion
5898
6003
  //#region ../theme-core/src/schema.ts
5899
6004
  const axesSchema = z$1.object({
@@ -6303,25 +6408,6 @@ const navFontWeight = z$1.enum([
6303
6408
  ]);
6304
6409
  const headerMaxWidth = z$1.enum(["container", "full"]);
6305
6410
  const headerBarFrame = z$1.enum(["full-bleed", "inset-shell"]);
6306
- const headerContainerSchema = z$1.object({
6307
- rounded: z$1.enum([
6308
- "none",
6309
- "sm",
6310
- "md",
6311
- "lg",
6312
- "xl",
6313
- "2xl"
6314
- ]).default("xl"),
6315
- border: z$1.boolean().default(true),
6316
- shadow: z$1.boolean().default(true),
6317
- padding: z$1.enum([
6318
- "sm",
6319
- "md",
6320
- "lg"
6321
- ]).default("md"),
6322
- tint: z$1.string().nullable().optional(),
6323
- opacity: z$1.number().min(0).max(1).default(.12)
6324
- }).optional();
6325
6411
  const headerBorderSchema = componentBorderSchema.extend({ position: z$1.enum([
6326
6412
  "bottom",
6327
6413
  "top",
@@ -6448,6 +6534,7 @@ const headerSchema = z$1.object({
6448
6534
  shrinkOnScroll: z$1.boolean(),
6449
6535
  maxWidth: headerMaxWidth,
6450
6536
  barFrame: headerBarFrame.optional(),
6537
+ scrollTreatment: headerScrollTreatmentSchema,
6451
6538
  logoOverride: mediaSchema$1.nullable().optional(),
6452
6539
  background: headerBackgroundSchema.default({
6453
6540
  type: "color",
@@ -6460,6 +6547,7 @@ const headerSchema = z$1.object({
6460
6547
  navFontRole: z$1.enum(["body", "heading"]).optional(),
6461
6548
  navTypography: z$1.enum(["body", "heading"]).optional(),
6462
6549
  navTextSize: navLinkStyleSchema.shape.textSize,
6550
+ interactionPalette: headerInteractionPaletteSchema.optional(),
6463
6551
  navPlacement: z$1.enum(["end", "center"]).optional(),
6464
6552
  container: headerContainerSchema,
6465
6553
  border: headerBorderSchema,
@@ -6752,770 +6840,669 @@ z$1.object({
6752
6840
  themes: z$1.array(themeSchema).length(3)
6753
6841
  });
6754
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
6755
6854
  //#region ../theme-core/src/site-styles/appearancePresetResolution.ts
6756
6855
  function assertValidOptionGroups(preset) {
6757
6856
  preset.optionGroups?.forEach((group) => {
6758
- 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);
6759
6858
  });
6760
6859
  }
6761
6860
  function defineBlockAppearancePreset(preset) {
6762
6861
  assertValidOptionGroups(preset);
6763
6862
  return preset;
6764
6863
  }
6765
- [...[
6766
- defineBlockAppearancePreset({
6767
- kind: "block-design",
6768
- id: "hero-immersive-image",
6769
- target: "hero",
6770
- label: "Immersive image hero",
6771
- blockKinds: ["block.hero"],
6772
- constraints: { layoutFamilies: ["centered", "compact"] },
6773
- layoutPatches: [{
6774
- constraints: { layoutVariantKeys: ["micro"] },
6775
- designPatch: {
6776
- sectionHeight: "banner",
6777
- heroTypographyScale: "display"
6778
- }
6779
- }],
6780
- design: {
6781
- sectionSurface: "hero-image",
6782
- contentFrame: plainFrame,
6783
- itemSurface: "none",
6784
- sectionHeight: "hero",
6785
- heroComposition: "center",
6786
- heroTypographyScale: "display",
6787
- 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"
6788
6898
  }
6789
- }),
6790
- defineBlockAppearancePreset({
6791
- kind: "block-design",
6792
- id: "hero-bottom-left-panel",
6793
- target: "hero",
6794
- label: "Bottom-left panel hero",
6795
- blockKinds: ["block.hero"],
6796
- constraints: { layoutFamilies: ["centered", "compact"] },
6797
- optionGroups: [{
6798
- id: "image-surface-treatment",
6799
- label: "Treatment",
6800
- selectedOptionId: "neutral-scrim",
6801
- options: [{
6802
- id: "neutral-scrim",
6803
- label: "Neutral scrim",
6804
- designPatch: { imageSurfaceTreatment: {
6805
- kind: "neutral-scrim",
6806
- intensity: "balanced"
6807
- } }
6808
- }, {
6809
- id: "brand-scrim-primary",
6810
- label: "Brand scrim",
6811
- designPatch: { imageSurfaceTreatment: {
6812
- kind: "brand-scrim",
6813
- token: "primary",
6814
- intensity: "balanced"
6815
- } }
6816
- }]
6817
- }],
6818
- layoutPatches: [{
6819
- constraints: { layoutVariantKeys: ["micro"] },
6820
- designPatch: {
6821
- sectionHeight: "banner",
6822
- heroTypographyScale: "editorial"
6823
- }
6824
- }],
6825
- design: {
6826
- sectionSurface: "hero-image",
6827
- contentFrame: panelFrame("raised"),
6828
- itemSurface: "none",
6829
- sectionHeight: "immersive",
6830
- heroComposition: "bottom-left",
6831
- heroTypographyScale: "display",
6832
- 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: {
6833
6923
  kind: "neutral-scrim",
6834
6924
  intensity: "balanced"
6835
- }
6836
- }
6837
- }),
6838
- defineBlockAppearancePreset({
6839
- kind: "block-design",
6840
- id: "hero-poster-image",
6841
- target: "hero",
6842
- label: "Poster image hero",
6843
- blockKinds: ["block.hero"],
6844
- constraints: { layoutFamilies: ["centered", "compact"] },
6845
- layoutPatches: [{
6846
- constraints: { layoutVariantKeys: ["micro"] },
6847
- designPatch: {
6848
- sectionHeight: "banner",
6849
- heroTypographyScale: "display"
6850
- }
6851
- }],
6852
- design: {
6853
- sectionSurface: "hero-image",
6854
- contentFrame: plainFrame,
6855
- itemSurface: "none",
6856
- sectionHeight: "immersive",
6857
- heroComposition: "center",
6858
- heroTypographyScale: "poster",
6859
- imageSurfaceTreatment: {
6925
+ } }
6926
+ }, {
6927
+ id: "brand-scrim-primary",
6928
+ label: "Brand scrim",
6929
+ designPatch: { imageSurfaceTreatment: {
6860
6930
  kind: "brand-scrim",
6861
6931
  token: "primary",
6862
- intensity: "strong"
6863
- }
6864
- }
6865
- }),
6866
- defineBlockAppearancePreset({
6867
- kind: "block-design",
6868
- id: "hero-brand-scrim",
6869
- target: "hero",
6870
- label: "Brand scrim image hero",
6871
- blockKinds: ["block.hero"],
6872
- constraints: { layoutFamilies: ["centered", "compact"] },
6873
- optionGroups: [{
6874
- id: "image-surface-treatment",
6875
- label: "Treatment",
6876
- selectedOptionId: "brand-scrim-primary",
6877
- options: [{
6878
- id: "brand-scrim-primary",
6879
- label: "Brand scrim",
6880
- designPatch: { imageSurfaceTreatment: {
6881
- kind: "brand-scrim",
6882
- token: "primary"
6883
- } }
6884
- }, {
6885
- id: "neutral-scrim",
6886
- label: "Neutral scrim",
6887
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
6888
- }]
6889
- }],
6890
- layoutPatches: [{
6891
- constraints: { layoutVariantKeys: ["micro"] },
6892
- designPatch: { sectionHeight: "banner" }
6893
- }],
6894
- design: {
6895
- sectionSurface: "hero-image",
6896
- contentFrame: plainFrame,
6897
- itemSurface: "none",
6898
- sectionHeight: "immersive",
6899
- heroComposition: "center",
6900
- heroTypographyScale: "display",
6901
- imageSurfaceTreatment: {
6902
- kind: "brand-scrim",
6903
- token: "primary"
6904
- }
6905
- }
6906
- }),
6907
- defineBlockAppearancePreset({
6908
- kind: "block-design",
6909
- id: "hero-brand-scrim-fixed-frame",
6910
- target: "hero",
6911
- label: "Fixed-frame brand scrim hero",
6912
- blockKinds: ["block.hero"],
6913
- constraints: { layoutFamilies: ["centered", "compact"] },
6914
- optionGroups: [{
6915
- id: "image-surface-treatment",
6916
- label: "Treatment",
6917
- selectedOptionId: "brand-scrim-primary",
6918
- options: [{
6919
- id: "brand-scrim-primary",
6920
- label: "Brand scrim",
6921
- designPatch: { imageSurfaceTreatment: {
6922
- kind: "brand-scrim",
6923
- token: "primary"
6924
- } }
6925
- }, {
6926
- id: "neutral-scrim",
6927
- label: "Neutral scrim",
6928
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
6929
- }]
6930
- }],
6931
- layoutPatches: [{
6932
- constraints: { layoutVariantKeys: ["micro"] },
6933
- designPatch: { sectionHeight: "banner" }
6934
- }],
6935
- design: {
6936
- sectionSurface: "hero-image",
6937
- contentFrame: plainFrame,
6938
- itemSurface: "none",
6939
- sectionHeight: "immersive",
6940
- heroComposition: "center",
6941
- heroTypographyScale: "display",
6942
- imageSurfaceTreatment: {
6943
- kind: "brand-scrim",
6944
- token: "primary"
6945
- },
6946
- imageSurfaceMotion: "fixed-frame",
6947
- eyebrowTreatment: "accent-pill-bounce"
6948
- }
6949
- }),
6950
- defineBlockAppearancePreset({
6951
- kind: "block-design",
6952
- id: "hero-brand-depth-expressive",
6953
- target: "hero",
6954
- label: "Expressive brand-depth hero",
6955
- blockKinds: ["block.hero"],
6956
- constraints: { layoutFamilies: ["centered", "compact"] },
6957
- design: {
6958
- sectionSurface: "brand-depth-band",
6959
- contentFrame: plainFrame,
6960
- itemSurface: "none",
6961
- heroComposition: "center",
6962
- heroTypographyScale: "editorial",
6963
- eyebrowTreatment: "accent-pill-bounce"
6964
- }
6965
- }),
6966
- defineBlockAppearancePreset({
6967
- kind: "block-design",
6968
- id: "hero-contained-intro",
6969
- target: "hero",
6970
- label: "Contained intro hero",
6971
- blockKinds: ["block.hero"],
6972
- design: {
6973
- sectionSurface: "muted-band",
6974
- contentFrame: panelFrame("inset"),
6975
- itemSurface: "none",
6976
- heroComposition: "center",
6977
- heroTypographyScale: "editorial"
6978
- }
6979
- }),
6980
- defineBlockAppearancePreset({
6981
- kind: "block-design",
6982
- id: "hero-split-editorial",
6983
- target: "hero",
6984
- label: "Editorial split hero",
6985
- blockKinds: ["block.hero"],
6986
- constraints: { layoutFamilies: ["split"] },
6987
- design: {
6988
- sectionSurface: "base",
6989
- contentFrame: plainFrame,
6990
- itemSurface: "none",
6991
- heroTypographyScale: "editorial"
6992
- }
6993
- }),
6994
- defineBlockAppearancePreset({
6995
- kind: "block-design",
6996
- id: "hero-split-brand",
6997
- target: "hero",
6998
- label: "Brand split hero",
6999
- blockKinds: ["block.hero"],
7000
- constraints: { layoutFamilies: ["split"] },
7001
- design: {
7002
- sectionSurface: "brand-depth-band",
7003
- contentFrame: plainFrame,
7004
- itemSurface: "none",
7005
- heroTypographyScale: "display",
7006
- eyebrowTreatment: "accent-pill-bounce"
7007
- }
7008
- }),
7009
- defineBlockAppearancePreset({
7010
- kind: "block-design",
7011
- id: "hero-split-soft-panel",
7012
- target: "hero",
7013
- label: "Soft panel split hero",
7014
- blockKinds: ["block.hero"],
7015
- constraints: { layoutFamilies: ["split"] },
7016
- design: {
7017
- sectionSurface: "muted-band",
7018
- contentFrame: panelFrame("raised"),
7019
- itemSurface: "none",
6932
+ intensity: "balanced"
6933
+ } }
6934
+ }]
6935
+ }],
6936
+ layoutPatches: [{
6937
+ constraints: { layoutVariantKeys: ["micro"] },
6938
+ designPatch: {
6939
+ sectionHeight: "banner",
7020
6940
  heroTypographyScale: "editorial"
7021
6941
  }
7022
- }),
7023
- defineBlockAppearancePreset({
7024
- kind: "block-design",
7025
- id: "hero-split-accent",
7026
- target: "hero",
7027
- label: "Accent split hero",
7028
- blockKinds: ["block.hero"],
7029
- constraints: { layoutFamilies: ["split"] },
7030
- design: {
7031
- sectionSurface: "accent-band",
7032
- contentFrame: panelFrame("raised"),
7033
- 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",
7034
6965
  heroTypographyScale: "display"
7035
6966
  }
7036
- }),
7037
- defineBlockAppearancePreset({
7038
- kind: "block-design",
7039
- id: "intro-editorial-statement",
7040
- target: "intro",
7041
- label: "Editorial intro statement",
7042
- blockKinds: ["block.intro"],
7043
- constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
7044
- design: {
7045
- sectionSurface: "base",
7046
- contentFrame: plainFrame,
7047
- itemSurface: "none",
7048
- composition: {
7049
- kind: "intro",
7050
- treatment: "editorial-statement"
7051
- }
7052
- }
7053
- }),
7054
- defineBlockAppearancePreset({
7055
- kind: "block-design",
7056
- id: "intro-portrait-bio",
7057
- target: "intro",
7058
- label: "Portrait and bio",
7059
- blockKinds: ["block.intro"],
7060
- constraints: { layoutVariantKeys: ["media-copy"] },
7061
- design: {
7062
- sectionSurface: "base",
7063
- contentFrame: plainFrame,
7064
- itemSurface: "none",
7065
- composition: {
7066
- kind: "intro",
7067
- treatment: "portrait-bio"
7068
- }
7069
- }
7070
- }),
7071
- defineBlockAppearancePreset({
7072
- kind: "block-design",
7073
- id: "offerings-preview-default-cards",
7074
- target: "offerings",
7075
- label: "Default offering cards",
7076
- blockKinds: ["block.offerings-preview"],
7077
- design: {
7078
- sectionSurface: "base",
7079
- contentFrame: plainFrame,
7080
- itemSurface: "default"
7081
- }
7082
- }),
7083
- defineBlockAppearancePreset({
7084
- kind: "block-design",
7085
- id: "offerings-preview-secondary-cards",
7086
- target: "offerings",
7087
- label: "Secondary offering cards",
7088
- blockKinds: ["block.offerings-preview"],
7089
- design: {
7090
- sectionSurface: "muted-band",
7091
- contentFrame: plainFrame,
7092
- itemSurface: "inset"
7093
- }
7094
- }),
7095
- defineBlockAppearancePreset({
7096
- kind: "block-design",
7097
- id: "offerings-preview-non-carded",
7098
- target: "offerings",
7099
- label: "Non-carded offerings",
7100
- blockKinds: ["block.offerings-preview"],
7101
- design: {
7102
- sectionSurface: "muted-band",
7103
- contentFrame: plainFrame,
7104
- itemSurface: "editorial"
7105
- }
7106
- }),
7107
- defineBlockAppearancePreset({
7108
- kind: "block-design",
7109
- id: "offerings-preview-paired-feature-cards",
7110
- target: "offerings",
7111
- label: "Paired feature cards",
7112
- blockKinds: ["block.offerings-preview"],
7113
- constraints: { layoutVariantKeys: ["cards"] },
7114
- design: {
7115
- sectionSurface: "base",
7116
- contentFrame: plainFrame,
7117
- itemSurface: "none"
7118
- }
7119
- }),
7120
- defineBlockAppearancePreset({
7121
- kind: "block-design",
7122
- id: "offerings-preview-open-editorial-columns",
7123
- target: "offerings",
7124
- label: "Open editorial columns",
7125
- blockKinds: ["block.offerings-preview"],
7126
- constraints: { layoutVariantKeys: ["cards"] },
7127
- design: {
7128
- sectionSurface: "base",
7129
- contentFrame: plainFrame,
7130
- itemSurface: "none"
7131
- }
7132
- }),
7133
- defineBlockAppearancePreset({
7134
- kind: "block-design",
7135
- id: "offerings-preview-joined-programme-panel",
7136
- target: "offerings",
7137
- label: "Joined programme panel",
7138
- blockKinds: ["block.offerings-preview"],
7139
- constraints: { layoutVariantKeys: ["cards"] },
7140
- design: {
7141
- sectionSurface: "base",
7142
- contentFrame: plainFrame,
7143
- itemSurface: "none"
7144
- }
7145
- }),
7146
- defineBlockAppearancePreset({
7147
- kind: "block-design",
7148
- id: "feature-cards-raised-rule",
7149
- target: "feature-cards",
7150
- label: "Raised cards with rule",
7151
- blockKinds: ["block.feature-cards"],
7152
- design: {
7153
- sectionSurface: "base",
7154
- contentFrame: plainFrame,
7155
- itemSurface: "raised"
7156
- }
7157
- }),
7158
- defineBlockAppearancePreset({
7159
- kind: "block-design",
7160
- id: "feature-cards-bold-colors",
7161
- target: "feature-cards",
7162
- label: "Bold colour-blocked cards",
7163
- blockKinds: ["block.feature-cards"],
7164
- design: {
7165
- sectionSurface: "base",
7166
- contentFrame: plainFrame,
7167
- itemSurface: "color-blocked"
7168
- }
7169
- }),
7170
- defineBlockAppearancePreset({
7171
- kind: "block-design",
7172
- id: "feature-cards-editorial-columns",
7173
- target: "feature-cards",
7174
- label: "Editorial open columns",
7175
- blockKinds: ["block.feature-cards"],
7176
- design: {
7177
- sectionSurface: "base",
7178
- contentFrame: plainFrame,
7179
- itemSurface: "editorial"
7180
- }
7181
- }),
7182
- defineBlockAppearancePreset({
7183
- kind: "block-design",
7184
- id: "feature-cards-asymmetric-emphasis",
7185
- target: "feature-cards",
7186
- label: "Asymmetric emphasis pair",
7187
- blockKinds: ["block.feature-cards"],
7188
- constraints: { layoutFamilies: ["grid"] },
7189
- design: {
7190
- sectionSurface: "base",
7191
- contentFrame: plainFrame,
7192
- itemSurface: "none",
7193
- composition: {
7194
- kind: "feature-cards",
7195
- treatment: "asymmetric-emphasis"
7196
- }
7197
- }
7198
- }),
7199
- defineBlockAppearancePreset({
7200
- kind: "block-design",
7201
- id: "feature-cards-framed-programme",
7202
- target: "feature-cards",
7203
- label: "Framed programme cards",
7204
- blockKinds: ["block.feature-cards"],
7205
- constraints: { layoutFamilies: ["grid"] },
7206
- design: {
7207
- sectionSurface: "brand-depth-band",
7208
- contentFrame: plainFrame,
7209
- itemSurface: "inset",
7210
- composition: {
7211
- kind: "feature-cards",
7212
- treatment: "framed-programme"
7213
- }
7214
- }
7215
- }),
7216
- defineBlockAppearancePreset({
7217
- kind: "block-design",
7218
- id: "feature-cards-soft-panels",
7219
- target: "feature-cards",
7220
- label: "Soft tinted panels",
7221
- blockKinds: ["block.feature-cards"],
7222
- design: {
7223
- sectionSurface: "base",
7224
- contentFrame: plainFrame,
7225
- itemSurface: "inset"
7226
- }
7227
- }),
7228
- defineBlockAppearancePreset({
7229
- kind: "block-design",
7230
- id: "feature-cards-editorial-diptych",
7231
- target: "feature-cards",
7232
- label: "Editorial diptych",
7233
- blockKinds: ["block.feature-cards"],
7234
- constraints: { layoutVariantKeys: ["editorial-diptych"] },
7235
- design: {
7236
- sectionSurface: "base",
7237
- contentFrame: plainFrame,
7238
- itemSurface: "flat"
7239
- }
7240
- }),
7241
- defineBlockAppearancePreset({
7242
- kind: "block-design",
7243
- id: "feature-cards-editorial-pathways",
7244
- target: "feature-cards",
7245
- label: "Editorial pathways",
7246
- blockKinds: ["block.feature-cards"],
7247
- constraints: { layoutVariantKeys: ["editorial-pathways"] },
7248
- design: {
7249
- sectionSurface: "base",
7250
- contentFrame: plainFrame,
7251
- itemSurface: "flat"
7252
- }
7253
- }),
7254
- defineBlockAppearancePreset({
7255
- kind: "block-design",
7256
- id: "feature-cards-photo-tiles",
7257
- target: "feature-cards",
7258
- label: "Photo tiles",
7259
- blockKinds: ["block.feature-cards"],
7260
- design: {
7261
- sectionSurface: "base",
7262
- contentFrame: plainFrame,
7263
- itemSurface: "raised"
7264
- }
7265
- }),
7266
- defineBlockAppearancePreset({
7267
- kind: "block-design",
7268
- id: "events-lined-panel",
7269
- target: "events",
7270
- label: "Raised event panel",
7271
- blockKinds: ["block.event-calendar", "block.event-listing"],
7272
- design: {
7273
- sectionSurface: "base",
7274
- contentFrame: panelFrame("raised"),
7275
- itemSurface: "none"
7276
- }
7277
- }),
7278
- defineBlockAppearancePreset({
7279
- kind: "block-design",
7280
- id: "events-ruled-register",
7281
- target: "events",
7282
- label: "Ruled event register",
7283
- blockKinds: ["block.event-calendar", "block.event-listing"],
7284
- design: {
7285
- sectionSurface: "brand-depth-band",
7286
- contentFrame: plainFrame,
7287
- itemSurface: "none",
7288
- eventListTreatment: "ruled-register"
7289
- }
7290
- }),
7291
- defineBlockAppearancePreset({
7292
- kind: "block-design",
7293
- id: "events-editorial-register",
7294
- target: "events",
7295
- label: "Editorial event register",
7296
- blockKinds: ["block.event-calendar", "block.event-listing"],
7297
- design: {
7298
- sectionSurface: "base",
7299
- contentFrame: plainFrame,
7300
- itemSurface: "none",
7301
- eventListTreatment: "editorial-register"
7302
- }
7303
- }),
7304
- defineBlockAppearancePreset({
7305
- kind: "block-design",
7306
- id: "events-dense-index",
7307
- target: "events",
7308
- label: "Dense event index",
7309
- blockKinds: ["block.event-calendar", "block.event-listing"],
7310
- design: {
7311
- sectionSurface: "accent-band",
7312
- contentFrame: plainFrame,
7313
- itemSurface: "none",
7314
- eventListTreatment: "dense-index"
7315
- }
7316
- }),
7317
- defineBlockAppearancePreset({
7318
- kind: "block-design",
7319
- id: "schedule-details-brand-depth",
7320
- target: "events",
7321
- label: "Brand-depth schedule details",
7322
- blockKinds: ["block.event-details", "block.course-details"],
7323
- design: {
7324
- sectionSurface: "brand-depth-band",
7325
- contentFrame: plainFrame,
7326
- itemSurface: "none",
7327
- tileTreatment: "brand-depth"
7328
- }
7329
- }),
7330
- defineBlockAppearancePreset({
7331
- kind: "block-design",
7332
- id: "media-text-flush-feature",
7333
- target: "media-text",
7334
- label: "Flush media feature",
7335
- blockKinds: ["block.media-text"],
7336
- design: {
7337
- sectionSurface: "muted-band",
7338
- contentFrame: flushPanelFrame({ bleed: "start" }),
7339
- itemSurface: "none"
7340
- }
7341
- }),
7342
- defineBlockAppearancePreset({
7343
- kind: "block-design",
7344
- id: "testimonials-simple-cards",
7345
- target: "testimonials",
7346
- label: "Simple testimonial cards",
7347
- blockKinds: ["block.testimonials"],
7348
- design: {
7349
- sectionSurface: "base",
7350
- contentFrame: plainFrame,
7351
- itemSurface: "default"
7352
- }
7353
- }),
7354
- defineBlockAppearancePreset({
7355
- kind: "block-design",
7356
- id: "testimonials-raised-panel",
7357
- target: "testimonials",
7358
- label: "Raised testimonial panel",
7359
- blockKinds: ["block.testimonials"],
7360
- design: {
7361
- sectionSurface: "muted-band",
7362
- contentFrame: panelFrame("raised"),
7363
- itemSurface: "raised"
7364
- }
7365
- }),
7366
- defineBlockAppearancePreset({
7367
- kind: "block-design",
7368
- id: "testimonials-accent-panel",
7369
- target: "testimonials",
7370
- label: "Accent testimonial panel",
7371
- blockKinds: ["block.testimonials"],
7372
- design: {
7373
- sectionSurface: "accent-band",
7374
- contentFrame: panelFrame("raised"),
7375
- itemSurface: "raised"
7376
- }
7377
- }),
7378
- defineBlockAppearancePreset({
7379
- kind: "block-design",
7380
- id: "testimonials-default-cards",
7381
- target: "testimonials",
7382
- label: "Default cards",
7383
- blockKinds: ["block.testimonials"],
7384
- design: {
7385
- sectionSurface: "base",
7386
- contentFrame: plainFrame,
7387
- itemSurface: "none",
7388
- testimonialCardTreatment: "default"
7389
- }
7390
- }),
7391
- defineBlockAppearancePreset({
7392
- kind: "block-design",
7393
- id: "testimonials-statement-cards",
7394
- target: "testimonials",
7395
- label: "Statement cards",
7396
- blockKinds: ["block.testimonials"],
7397
- design: {
7398
- sectionSurface: "accent-band",
7399
- contentFrame: plainFrame,
7400
- itemSurface: "raised",
7401
- testimonialCardTreatment: "statement"
7402
- }
7403
- }),
7404
- defineBlockAppearancePreset({
7405
- kind: "block-design",
7406
- id: "testimonials-brand-statement-cards",
7407
- target: "testimonials",
7408
- label: "Brand statement cards",
7409
- blockKinds: ["block.testimonials"],
7410
- design: {
7411
- sectionSurface: "brand-depth-band",
7412
- contentFrame: plainFrame,
7413
- itemSurface: "raised",
7414
- testimonialCardTreatment: "statement"
7415
- }
7416
- }),
7417
- defineBlockAppearancePreset({
7418
- kind: "block-design",
7419
- id: "testimonials-non-carded",
7420
- target: "testimonials",
7421
- label: "Non-carded",
7422
- blockKinds: ["block.testimonials"],
7423
- design: {
7424
- sectionSurface: "muted-band",
7425
- contentFrame: plainFrame,
7426
- itemSurface: "none",
7427
- testimonialCardTreatment: "non-carded"
7428
- }
7429
- }),
7430
- defineBlockAppearancePreset({
7431
- kind: "block-design",
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
- }),
7443
- defineBlockAppearancePreset({
7444
- kind: "block-design",
7445
- id: "testimonials-room-and-response",
7446
- target: "testimonials",
7447
- label: "Room and response",
7448
- blockKinds: ["block.testimonials"],
7449
- constraints: { layoutVariantKeys: ["featured-editorial"] },
7450
- design: {
7451
- sectionSurface: "base",
7452
- contentFrame: plainFrame,
7453
- itemSurface: "none"
7454
- }
7455
- }),
7456
- defineBlockAppearancePreset({
7457
- kind: "block-design",
7458
- id: "testimonials-open-floor",
7459
- target: "testimonials",
7460
- label: "Open floor",
7461
- blockKinds: ["block.testimonials"],
7462
- constraints: { layoutVariantKeys: ["featured-editorial"] },
7463
- design: {
7464
- sectionSurface: "base",
7465
- contentFrame: plainFrame,
7466
- itemSurface: "none"
7467
- }
7468
- }),
7469
- defineBlockAppearancePreset({
7470
- kind: "block-design",
7471
- id: "faq-base-accordion",
7472
- target: "faq",
7473
- label: "Base accordion FAQ",
7474
- blockKinds: ["block.faq"],
7475
- design: {
7476
- sectionSurface: "base",
7477
- contentFrame: plainFrame,
7478
- itemSurface: "default"
7479
- }
7480
- }),
7481
- defineBlockAppearancePreset({
7482
- kind: "block-design",
7483
- id: "faq-contained-help",
7484
- target: "faq",
7485
- label: "Contained help panel",
7486
- blockKinds: ["block.faq"],
7487
- design: {
7488
- sectionSurface: "muted-band",
7489
- contentFrame: panelFrame("inset"),
7490
- itemSurface: "default"
7491
- }
7492
- }),
7493
- defineBlockAppearancePreset({
7494
- kind: "block-design",
7495
- id: "contact-form-panel",
7496
- target: "contact-form",
7497
- label: "Raised form panel",
7498
- blockKinds: ["block.form"],
7499
- design: {
7500
- sectionSurface: "muted-band",
7501
- contentFrame: panelFrame("raised"),
7502
- itemSurface: "none"
7503
- }
7504
- }),
7505
- defineBlockAppearancePreset({
7506
- kind: "block-design",
7507
- id: "cta-accent-band",
7508
- target: "cta",
7509
- label: "Accent CTA band",
7510
- blockKinds: ["block.cta-full"],
7511
- design: {
7512
- sectionSurface: "accent-band",
7513
- contentFrame: plainFrame,
7514
- itemSurface: "none",
7515
- eyebrowTreatment: "accent"
7516
- }
7517
- })
7518
- ]];
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
+ });
7519
7506
  //#endregion
7520
7507
  //#region ../theme-core/src/site-styles/headerCtaVariants.ts
7521
7508
  function hasButtonVariant(theme, variantId) {
@@ -7596,6 +7583,27 @@ function uniqueStrings(values) {
7596
7583
  return Array.from(new Set(values));
7597
7584
  }
7598
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
7599
7607
  //#region ../theme-core/src/site-styles/headerLooks.ts
7600
7608
  function asHeaderLookId(value) {
7601
7609
  return value;
@@ -7729,7 +7737,7 @@ const overlayLogoAccommodations = [
7729
7737
  * optional nested styling fields that would otherwise leak from another Look.
7730
7738
  */
7731
7739
  function baseHeader(theme) {
7732
- 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;
7733
7741
  return {
7734
7742
  ...header,
7735
7743
  navContainer: {
@@ -7744,7 +7752,6 @@ const headerLayoutCatalog = defineExactCatalog()([
7744
7752
  id: asHeaderLayoutId("classic"),
7745
7753
  label: "Classic",
7746
7754
  description: "Logo and navigation in one practical horizontal row.",
7747
- structure: "inline-classic",
7748
7755
  variant: "classic",
7749
7756
  defaultPositioning: "sticky",
7750
7757
  shrinkOnScroll: false
@@ -7753,7 +7760,6 @@ const headerLayoutCatalog = defineExactCatalog()([
7753
7760
  id: asHeaderLayoutId("centered"),
7754
7761
  label: "Centered",
7755
7762
  description: "Logo centered above a balanced navigation row.",
7756
- structure: "centered-stack",
7757
7763
  variant: "centered",
7758
7764
  defaultPositioning: "static",
7759
7765
  shrinkOnScroll: false,
@@ -7769,7 +7775,6 @@ const headerLayoutCatalog = defineExactCatalog()([
7769
7775
  id: asHeaderLayoutId("floating"),
7770
7776
  label: "Floating",
7771
7777
  description: "Detached header chrome that sits over the opening section.",
7772
- structure: "floating-shell",
7773
7778
  variant: "floating",
7774
7779
  defaultPositioning: "sticky",
7775
7780
  shrinkOnScroll: true,
@@ -7931,10 +7936,13 @@ const headerStyleCatalog = defineExactCatalog()([
7931
7936
  label: "Clear Split",
7932
7937
  description: "Floating logo with transparent navigation and no shared shell.",
7933
7938
  supportedLayoutIds: supportedLayouts(["floating"]),
7934
- navInteraction: "color-change",
7939
+ navInteraction: "pill-background",
7935
7940
  surface: "floating",
7936
- defaultDepth: "none",
7941
+ defaultDepth: "line",
7937
7942
  navTypography: "plain",
7943
+ openingForegroundTarget: "all",
7944
+ scrollTreatment: "contrast-glass",
7945
+ interactionPalette: clearSplitInteractionPalette,
7938
7946
  moods: ["editorial", "calm"]
7939
7947
  },
7940
7948
  {
@@ -7957,6 +7965,7 @@ const headerStyleCatalog = defineExactCatalog()([
7957
7965
  surface: "floating",
7958
7966
  defaultDepth: "shadow",
7959
7967
  navTypography: "quiet-caps",
7968
+ openingForegroundTarget: "brand-only",
7960
7969
  moods: ["expressive"]
7961
7970
  },
7962
7971
  {
@@ -7968,6 +7977,7 @@ const headerStyleCatalog = defineExactCatalog()([
7968
7977
  surface: "floating",
7969
7978
  defaultDepth: "shadow",
7970
7979
  navTypography: "heading",
7980
+ openingForegroundTarget: "brand-only",
7971
7981
  moods: ["calm", "editorial"]
7972
7982
  }
7973
7983
  ]);
@@ -8469,13 +8479,6 @@ const headerLookCatalog = defineExactCatalog()([
8469
8479
  {
8470
8480
  id: asHeaderLookId("clean-base"),
8471
8481
  label: "Clean base",
8472
- visualTreatment: "solid-neutral",
8473
- layoutBehavior: "sticky",
8474
- configuration: {
8475
- structure: "inline-classic",
8476
- treatment: "solid-neutral",
8477
- behavior: "sticky"
8478
- },
8479
8482
  openingRequirement: "none",
8480
8483
  logoAccommodations: inlineClassicLogoAccommodations,
8481
8484
  compile: cleanBaseHeader
@@ -8483,13 +8486,6 @@ const headerLookCatalog = defineExactCatalog()([
8483
8486
  {
8484
8487
  id: asHeaderLookId("classic-centered-nav"),
8485
8488
  label: "Centered nav",
8486
- visualTreatment: "solid-neutral",
8487
- layoutBehavior: "sticky",
8488
- configuration: {
8489
- structure: "inline-classic",
8490
- treatment: "solid-neutral",
8491
- behavior: "sticky"
8492
- },
8493
8489
  openingRequirement: "none",
8494
8490
  maxRecommendedNavItems: 6,
8495
8491
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -8498,13 +8494,6 @@ const headerLookCatalog = defineExactCatalog()([
8498
8494
  {
8499
8495
  id: asHeaderLookId("brand-solid"),
8500
8496
  label: "Brand solid",
8501
- visualTreatment: "solid-brand",
8502
- layoutBehavior: "sticky-shrink",
8503
- configuration: {
8504
- structure: "inline-classic",
8505
- treatment: "solid-brand",
8506
- behavior: "sticky-shrink"
8507
- },
8508
8497
  openingRequirement: "none",
8509
8498
  logoAccommodations: inlineClassicLogoAccommodations,
8510
8499
  compile: solidBrandHeader
@@ -8512,13 +8501,6 @@ const headerLookCatalog = defineExactCatalog()([
8512
8501
  {
8513
8502
  id: asHeaderLookId("serif-line"),
8514
8503
  label: "Serif line",
8515
- visualTreatment: "light-serif",
8516
- layoutBehavior: "sticky",
8517
- configuration: {
8518
- structure: "centered-stack",
8519
- treatment: "light-serif",
8520
- behavior: "sticky"
8521
- },
8522
8504
  openingRequirement: "none",
8523
8505
  maxRecommendedNavItems: 6,
8524
8506
  logoAccommodations: centeredLogoAccommodations,
@@ -8527,13 +8509,6 @@ const headerLookCatalog = defineExactCatalog()([
8527
8509
  {
8528
8510
  id: asHeaderLookId("centered-calm"),
8529
8511
  label: "Centered calm",
8530
- visualTreatment: "light-serif",
8531
- layoutBehavior: "normal-flow",
8532
- configuration: {
8533
- structure: "centered-stack",
8534
- treatment: "light-serif",
8535
- behavior: "normal-flow"
8536
- },
8537
8512
  openingRequirement: "none",
8538
8513
  maxRecommendedNavItems: 5,
8539
8514
  logoAccommodations: centeredLogoAccommodations,
@@ -8542,13 +8517,6 @@ const headerLookCatalog = defineExactCatalog()([
8542
8517
  {
8543
8518
  id: asHeaderLookId("practical-utility"),
8544
8519
  label: "Practical utility",
8545
- visualTreatment: "solid-neutral",
8546
- layoutBehavior: "sticky-shrink",
8547
- configuration: {
8548
- structure: "inline-classic",
8549
- treatment: "solid-neutral",
8550
- behavior: "sticky-shrink"
8551
- },
8552
8520
  openingRequirement: "none",
8553
8521
  requiresProminentCta: true,
8554
8522
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -8557,13 +8525,6 @@ const headerLookCatalog = defineExactCatalog()([
8557
8525
  {
8558
8526
  id: asHeaderLookId("minimal-transparent"),
8559
8527
  label: "Minimal transparent",
8560
- visualTreatment: "minimal-transparent",
8561
- layoutBehavior: "normal-flow",
8562
- configuration: {
8563
- structure: "inline-classic",
8564
- treatment: "minimal-transparent",
8565
- behavior: "normal-flow"
8566
- },
8567
8528
  openingRequirement: "reserved-space-ok",
8568
8529
  logoAccommodations: inlineClassicLogoAccommodations,
8569
8530
  compile: minimalTransparentHeader
@@ -8571,13 +8532,6 @@ const headerLookCatalog = defineExactCatalog()([
8571
8532
  {
8572
8533
  id: asHeaderLookId("transparent-overlay"),
8573
8534
  label: "Transparent overlay",
8574
- visualTreatment: "transparent-overlay",
8575
- layoutBehavior: "fixed-overlay",
8576
- configuration: {
8577
- structure: "inline-classic",
8578
- treatment: "transparent-overlay",
8579
- behavior: "fixed-overlay"
8580
- },
8581
8535
  openingRequirement: "requires-image-hero-with-contrast-overlay",
8582
8536
  maxRecommendedNavItems: 5,
8583
8537
  logoAccommodations: overlayLogoAccommodations,
@@ -8586,24 +8540,13 @@ const headerLookCatalog = defineExactCatalog()([
8586
8540
  {
8587
8541
  id: asHeaderLookId("floating-glass"),
8588
8542
  label: "Floating glass",
8589
- visualTreatment: "floating-glass",
8590
- layoutBehavior: "fixed-floating",
8591
- configuration: {
8592
- structure: "floating-shell",
8593
- treatment: "floating-glass",
8594
- behavior: "fixed-floating"
8595
- },
8596
8543
  openingRequirement: "requires-image-hero-with-contrast-overlay",
8597
8544
  maxRecommendedNavItems: 5,
8598
8545
  logoAccommodations: overlayLogoAccommodations,
8599
8546
  compile: floatingGlassHeader
8600
8547
  }
8601
8548
  ]);
8602
- new Set(headerLookCatalog.map((look) => headerConfigurationKey(look.configuration)));
8603
8549
  new Map(headerLookCatalog.map((look) => [look.id, look]));
8604
- function headerConfigurationKey(configuration) {
8605
- return `${configuration.structure}:${configuration.treatment}:${configuration.behavior}`;
8606
- }
8607
8550
  //#endregion
8608
8551
  //#region ../theme-core/src/site-styles/sectionTransitions.ts
8609
8552
  function boundaryRuntimeMetrics(family, size, heightExpression) {
@@ -12185,28 +12128,6 @@ z$1.object({
12185
12128
  spacing: z$1.enum(themeTokenRecipeOptions.spacing),
12186
12129
  motion: z$1.enum(themeTokenRecipeOptions.motion)
12187
12130
  });
12188
- const BREAKPOINT_LG = 1024;
12189
- const BREAKPOINT_XL = 1280;
12190
- const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
12191
- function mqUp(px) {
12192
- return `(min-width: ${px}px)`;
12193
- }
12194
- function mqDown(px) {
12195
- return `(max-width: ${px}px)`;
12196
- }
12197
- function mqBetween(minPx, maxPx) {
12198
- return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
12199
- }
12200
- mqUp(640);
12201
- mqUp(768);
12202
- mqUp(BREAKPOINT_LG);
12203
- mqUp(BREAKPOINT_XL);
12204
- mqDown(639);
12205
- mqDown(767);
12206
- mqDown(BREAKPOINT_LG_DOWN);
12207
- mqBetween(640, BREAKPOINT_LG_DOWN);
12208
- mqDown(640);
12209
- mqDown(768);
12210
12131
  //#endregion
12211
12132
  //#region ../theme-core/src/siteChromeOverlayClearance.ts
12212
12133
  const SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
@@ -15895,15 +15816,6 @@ const heroLayoutControlsFragment = defineFragment({
15895
15816
  */
15896
15817
  const BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
15897
15818
  const blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
15898
- /**
15899
- * Temporary rollout boundary for persisted content written before issue #1220.
15900
- * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
15901
- * only until the post-deploy role rewrite has been audited in production.
15902
- */
15903
- function canonicalizePersistedBlockButtonRole(value) {
15904
- return value === "link" || value === "tertiary" ? "ghost" : value;
15905
- }
15906
- const persistedBlockButtonRoleSchema = z$1.preprocess((value) => typeof value === "string" ? canonicalizePersistedBlockButtonRole(value) : value, blockButtonRoleSchema);
15907
15819
  const BLOCK_BUTTON_ROLE_LABELS = {
15908
15820
  primary: "Primary",
15909
15821
  secondary: "Secondary",
@@ -21858,6 +21770,12 @@ const mediaBaseSchema = z.object({
21858
21770
  poster: mediaPosterSchema.optional(),
21859
21771
  transform: transformSchema.optional()
21860
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();
21861
21779
  const imageMediaSchema = mediaBaseSchema.extend({ type: z.literal("image") });
21862
21780
  const videoMediaSchema = mediaBaseSchema.extend({ type: z.literal("video") });
21863
21781
  const audioMediaSchema = mediaBaseSchema.extend({ type: z.literal("audio") });
@@ -21872,6 +21790,15 @@ const mediaSchema = z.discriminatedUnion("type", [
21872
21790
  spreadsheetMediaSchema,
21873
21791
  archiveMediaSchema
21874
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
+ ]);
21875
21802
  //#endregion
21876
21803
  //#region ../blocks/src/system/manifest/richTextSchema.ts
21877
21804
  /**
@@ -23055,7 +22982,7 @@ function isEventCalendarListLayout(value) {
23055
22982
  //#region ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
23056
22983
  const previewStageSchema = z$1.enum(["preview", "published"]);
23057
22984
  const registrationButtonVariantSchema = blockButtonRoleSchema;
23058
- const eventButtonVariantSchema = persistedBlockButtonRoleSchema;
22985
+ const eventButtonVariantSchema = blockButtonRoleSchema;
23059
22986
  const eventLayoutSchema = z$1.enum(eventCalendarListLayoutValues);
23060
22987
  const eventCalendarDisplayModeSchema = z$1.enum(eventCalendarDisplayModeValues);
23061
22988
  const eventCalendarDefaultViewSchema = z$1.enum(eventCalendarDefaultViewValues);