@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
@@ -3129,7 +3129,7 @@ function canonicalPaletteHashInput(colors, mode) {
3129
3129
  return `${mode}|${paletteColorFingerprint(colors)}`;
3130
3130
  }
3131
3131
  /**
3132
- * The shared TypeScript/SQL protocol. Do not reorder roles: the order comes
3132
+ * Stable curated-catalogue identity. Do not reorder roles: the order comes
3133
3133
  * from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
3134
3134
  */
3135
3135
  function paletteValueKey(colors, mode) {
@@ -4589,8 +4589,6 @@ const VARIANT_ROLES = [
4589
4589
  "secondary",
4590
4590
  "outline",
4591
4591
  "ghost",
4592
- "link",
4593
- "tertiary",
4594
4592
  "accent"
4595
4593
  ];
4596
4594
  /**
@@ -4599,7 +4597,7 @@ const VARIANT_ROLES = [
4599
4597
  * IDs become class selectors, so keep the contract deliberately narrower than
4600
4598
  * an arbitrary string and shared with every authoring/runtime boundary.
4601
4599
  */
4602
- const buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only");
4600
+ 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" });
4603
4601
  function parseOpaqueButtonColourToken(value) {
4604
4602
  const token = parseThemeColorToken(value);
4605
4603
  if (token === null) return null;
@@ -5002,6 +5000,59 @@ function surfaceForegroundStyle(input) {
5002
5000
  [SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting
5003
5001
  };
5004
5002
  }
5003
+ shadeBackgroundEffect({
5004
+ id: "darken-background",
5005
+ name: "Darken on Hover",
5006
+ description: "Darkens the background color on hover",
5007
+ label: "Darken Amount (shade step)",
5008
+ shadeDirection: 1
5009
+ });
5010
+ shadeBackgroundEffect({
5011
+ id: "lighten-background",
5012
+ name: "Lighten on Hover",
5013
+ description: "Lightens the background color on hover",
5014
+ label: "Lighten Amount (shade step)",
5015
+ shadeDirection: -1
5016
+ });
5017
+ function shadeBackgroundEffect(config) {
5018
+ return {
5019
+ id: config.id,
5020
+ name: config.name,
5021
+ description: config.description,
5022
+ category: "background",
5023
+ pseudoElement: "none",
5024
+ applicableTo: ["button"],
5025
+ customizableOption: {
5026
+ name: "amount",
5027
+ type: "select",
5028
+ label: config.label,
5029
+ default: 100,
5030
+ options: [
5031
+ 0,
5032
+ 100,
5033
+ 200,
5034
+ 300,
5035
+ 400,
5036
+ 500,
5037
+ 600,
5038
+ 700,
5039
+ 800,
5040
+ 900
5041
+ ]
5042
+ },
5043
+ isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
5044
+ generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
5045
+ if (buttonConfig.background.type !== "solid") return "";
5046
+ const amount = (options.amount || 100) * config.shadeDirection;
5047
+ const baseToken = buttonConfig.background.colorToken ?? "primary-500";
5048
+ return `
5049
+ :where([data-theme-scope="${themeId}"]) .${variantId}:hover {
5050
+ background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
5051
+ }
5052
+ `;
5053
+ }
5054
+ };
5055
+ }
5005
5056
  buttonSizeNameSchema.options;
5006
5057
  //#endregion
5007
5058
  //#region ../theme-core/src/buttons/styles/domain.ts
@@ -7816,6 +7867,60 @@ function resolveThemeColorReferenceValue(input, context) {
7816
7867
  const reference = parseThemeColorReference(input, context);
7817
7868
  return reference.kind === "literal-css" ? reference.value : rgbColorValue(reference.token);
7818
7869
  }
7870
+ const BREAKPOINT_LG = 1024;
7871
+ const BREAKPOINT_XL = 1280;
7872
+ const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
7873
+ function mqUp(px) {
7874
+ return `(min-width: ${px}px)`;
7875
+ }
7876
+ function mqDown(px) {
7877
+ return `(max-width: ${px}px)`;
7878
+ }
7879
+ function mqBetween(minPx, maxPx) {
7880
+ return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
7881
+ }
7882
+ mqUp(640);
7883
+ mqUp(768);
7884
+ mqUp(BREAKPOINT_LG);
7885
+ mqUp(BREAKPOINT_XL);
7886
+ mqDown(639);
7887
+ mqDown(767);
7888
+ mqDown(BREAKPOINT_LG_DOWN);
7889
+ mqBetween(640, BREAKPOINT_LG_DOWN);
7890
+ mqDown(640);
7891
+ mqDown(768);
7892
+ //#endregion
7893
+ //#region ../theme-core/src/header/scrollTreatment.ts
7894
+ const headerScrollTreatmentSchema = z$1.discriminatedUnion("kind", [z$1.object({
7895
+ kind: z$1.literal("contrast-glass"),
7896
+ backgroundTone: z$1.enum(["light", "dark"])
7897
+ })]).optional();
7898
+ //#endregion
7899
+ //#region ../theme-core/src/header/containerSchema.ts
7900
+ const headerContainerSchema = z$1.object({
7901
+ rounded: z$1.enum([
7902
+ "none",
7903
+ "sm",
7904
+ "md",
7905
+ "lg",
7906
+ "xl",
7907
+ "2xl"
7908
+ ]).default("xl"),
7909
+ border: z$1.boolean().default(true),
7910
+ shadow: z$1.boolean().default(true),
7911
+ padding: z$1.enum([
7912
+ "sm",
7913
+ "md",
7914
+ "lg"
7915
+ ]).default("md"),
7916
+ tint: z$1.string().nullable().optional(),
7917
+ opacity: z$1.number().min(0).max(1).default(.12)
7918
+ }).optional();
7919
+ const headerInteractionPaletteSchema = z$1.enum([
7920
+ "primary",
7921
+ "secondary",
7922
+ "accent"
7923
+ ]);
7819
7924
  //#endregion
7820
7925
  //#region ../theme-core/src/schema.ts
7821
7926
  const axesSchema = z$1.object({
@@ -8225,25 +8330,6 @@ const navFontWeight = z$1.enum([
8225
8330
  ]);
8226
8331
  const headerMaxWidth = z$1.enum(["container", "full"]);
8227
8332
  const headerBarFrame = z$1.enum(["full-bleed", "inset-shell"]);
8228
- const headerContainerSchema = z$1.object({
8229
- rounded: z$1.enum([
8230
- "none",
8231
- "sm",
8232
- "md",
8233
- "lg",
8234
- "xl",
8235
- "2xl"
8236
- ]).default("xl"),
8237
- border: z$1.boolean().default(true),
8238
- shadow: z$1.boolean().default(true),
8239
- padding: z$1.enum([
8240
- "sm",
8241
- "md",
8242
- "lg"
8243
- ]).default("md"),
8244
- tint: z$1.string().nullable().optional(),
8245
- opacity: z$1.number().min(0).max(1).default(.12)
8246
- }).optional();
8247
8333
  const headerBorderSchema = componentBorderSchema.extend({ position: z$1.enum([
8248
8334
  "bottom",
8249
8335
  "top",
@@ -8370,6 +8456,7 @@ const headerSchema = z$1.object({
8370
8456
  shrinkOnScroll: z$1.boolean(),
8371
8457
  maxWidth: headerMaxWidth,
8372
8458
  barFrame: headerBarFrame.optional(),
8459
+ scrollTreatment: headerScrollTreatmentSchema,
8373
8460
  logoOverride: mediaSchema$1.nullable().optional(),
8374
8461
  background: headerBackgroundSchema.default({
8375
8462
  type: "color",
@@ -8382,6 +8469,7 @@ const headerSchema = z$1.object({
8382
8469
  navFontRole: z$1.enum(["body", "heading"]).optional(),
8383
8470
  navTypography: z$1.enum(["body", "heading"]).optional(),
8384
8471
  navTextSize: navLinkStyleSchema.shape.textSize,
8472
+ interactionPalette: headerInteractionPaletteSchema.optional(),
8385
8473
  navPlacement: z$1.enum(["end", "center"]).optional(),
8386
8474
  container: headerContainerSchema,
8387
8475
  border: headerBorderSchema,
@@ -8674,770 +8762,669 @@ z$1.object({
8674
8762
  themes: z$1.array(themeSchema).length(3)
8675
8763
  });
8676
8764
  //#endregion
8765
+ //#region ../theme-core/src/site-styles/lookOptionGroups.ts
8766
+ function defineLookOptionGroup(group) {
8767
+ defaultOption(group);
8768
+ return group;
8769
+ }
8770
+ function defaultOption(group) {
8771
+ const option = group.options.find((candidate) => candidate.id === group.defaultOptionId);
8772
+ if (option) return option;
8773
+ throw new Error(`Look option group "${group.id}" defaults to missing option "${group.defaultOptionId}".`);
8774
+ }
8775
+ //#endregion
8677
8776
  //#region ../theme-core/src/site-styles/appearancePresetResolution.ts
8678
8777
  function assertValidOptionGroups(preset) {
8679
8778
  preset.optionGroups?.forEach((group) => {
8680
- 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}".`);
8779
+ defineLookOptionGroup(group);
8681
8780
  });
8682
8781
  }
8683
8782
  function defineBlockAppearancePreset(preset) {
8684
8783
  assertValidOptionGroups(preset);
8685
8784
  return preset;
8686
8785
  }
8687
- [...[
8688
- defineBlockAppearancePreset({
8689
- kind: "block-design",
8690
- id: "hero-immersive-image",
8691
- target: "hero",
8692
- label: "Immersive image hero",
8693
- blockKinds: ["block.hero"],
8694
- constraints: { layoutFamilies: ["centered", "compact"] },
8695
- layoutPatches: [{
8696
- constraints: { layoutVariantKeys: ["micro"] },
8697
- designPatch: {
8698
- sectionHeight: "banner",
8699
- heroTypographyScale: "display"
8700
- }
8701
- }],
8702
- design: {
8703
- sectionSurface: "hero-image",
8704
- contentFrame: plainFrame,
8705
- itemSurface: "none",
8706
- sectionHeight: "hero",
8707
- heroComposition: "center",
8708
- heroTypographyScale: "display",
8709
- imageSurfaceTreatment: { kind: "neutral-wash" }
8786
+ //#endregion
8787
+ //#region ../theme-core/src/site-styles/blockAppearancePresets.ts
8788
+ const brandScrimOptionGroups = [{
8789
+ id: "image-surface-treatment",
8790
+ label: "Treatment",
8791
+ defaultOptionId: "brand-scrim-primary",
8792
+ options: [{
8793
+ id: "brand-scrim-primary",
8794
+ label: "Brand scrim",
8795
+ designPatch: { imageSurfaceTreatment: {
8796
+ kind: "brand-scrim",
8797
+ token: "primary"
8798
+ } }
8799
+ }, {
8800
+ id: "neutral-scrim",
8801
+ label: "Neutral scrim",
8802
+ designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8803
+ }]
8804
+ }];
8805
+ const microBannerLayoutPatches = [{
8806
+ constraints: { layoutVariantKeys: ["micro"] },
8807
+ designPatch: { sectionHeight: "banner" }
8808
+ }];
8809
+ defineBlockAppearancePreset({
8810
+ id: "hero-immersive-image",
8811
+ target: "hero",
8812
+ label: "Immersive image hero",
8813
+ blockKinds: ["block.hero"],
8814
+ constraints: { layoutFamilies: ["centered", "compact"] },
8815
+ layoutPatches: [{
8816
+ constraints: { layoutVariantKeys: ["micro"] },
8817
+ designPatch: {
8818
+ sectionHeight: "banner",
8819
+ heroTypographyScale: "display"
8710
8820
  }
8711
- }),
8712
- defineBlockAppearancePreset({
8713
- kind: "block-design",
8714
- id: "hero-bottom-left-panel",
8715
- target: "hero",
8716
- label: "Bottom-left panel hero",
8717
- blockKinds: ["block.hero"],
8718
- constraints: { layoutFamilies: ["centered", "compact"] },
8719
- optionGroups: [{
8720
- id: "image-surface-treatment",
8721
- label: "Treatment",
8722
- selectedOptionId: "neutral-scrim",
8723
- options: [{
8724
- id: "neutral-scrim",
8725
- label: "Neutral scrim",
8726
- designPatch: { imageSurfaceTreatment: {
8727
- kind: "neutral-scrim",
8728
- intensity: "balanced"
8729
- } }
8730
- }, {
8731
- id: "brand-scrim-primary",
8732
- label: "Brand scrim",
8733
- designPatch: { imageSurfaceTreatment: {
8734
- kind: "brand-scrim",
8735
- token: "primary",
8736
- intensity: "balanced"
8737
- } }
8738
- }]
8739
- }],
8740
- layoutPatches: [{
8741
- constraints: { layoutVariantKeys: ["micro"] },
8742
- designPatch: {
8743
- sectionHeight: "banner",
8744
- heroTypographyScale: "editorial"
8745
- }
8746
- }],
8747
- design: {
8748
- sectionSurface: "hero-image",
8749
- contentFrame: panelFrame("raised"),
8750
- itemSurface: "none",
8751
- sectionHeight: "immersive",
8752
- heroComposition: "bottom-left",
8753
- heroTypographyScale: "display",
8754
- imageSurfaceTreatment: {
8821
+ }],
8822
+ design: {
8823
+ sectionSurface: "hero-image",
8824
+ contentFrame: plainFrame,
8825
+ itemSurface: "none",
8826
+ sectionHeight: "hero",
8827
+ heroComposition: "center",
8828
+ heroTypographyScale: "display",
8829
+ imageSurfaceTreatment: { kind: "neutral-wash" }
8830
+ }
8831
+ }), defineBlockAppearancePreset({
8832
+ id: "hero-bottom-left-panel",
8833
+ target: "hero",
8834
+ label: "Bottom-left panel hero",
8835
+ blockKinds: ["block.hero"],
8836
+ constraints: { layoutFamilies: ["centered", "compact"] },
8837
+ optionGroups: [{
8838
+ id: "image-surface-treatment",
8839
+ label: "Treatment",
8840
+ defaultOptionId: "neutral-scrim",
8841
+ options: [{
8842
+ id: "neutral-scrim",
8843
+ label: "Neutral scrim",
8844
+ designPatch: { imageSurfaceTreatment: {
8755
8845
  kind: "neutral-scrim",
8756
8846
  intensity: "balanced"
8757
- }
8758
- }
8759
- }),
8760
- defineBlockAppearancePreset({
8761
- kind: "block-design",
8762
- id: "hero-poster-image",
8763
- target: "hero",
8764
- label: "Poster image hero",
8765
- blockKinds: ["block.hero"],
8766
- constraints: { layoutFamilies: ["centered", "compact"] },
8767
- layoutPatches: [{
8768
- constraints: { layoutVariantKeys: ["micro"] },
8769
- designPatch: {
8770
- sectionHeight: "banner",
8771
- heroTypographyScale: "display"
8772
- }
8773
- }],
8774
- design: {
8775
- sectionSurface: "hero-image",
8776
- contentFrame: plainFrame,
8777
- itemSurface: "none",
8778
- sectionHeight: "immersive",
8779
- heroComposition: "center",
8780
- heroTypographyScale: "poster",
8781
- imageSurfaceTreatment: {
8847
+ } }
8848
+ }, {
8849
+ id: "brand-scrim-primary",
8850
+ label: "Brand scrim",
8851
+ designPatch: { imageSurfaceTreatment: {
8782
8852
  kind: "brand-scrim",
8783
8853
  token: "primary",
8784
- intensity: "strong"
8785
- }
8786
- }
8787
- }),
8788
- defineBlockAppearancePreset({
8789
- kind: "block-design",
8790
- id: "hero-brand-scrim",
8791
- target: "hero",
8792
- label: "Brand scrim image hero",
8793
- blockKinds: ["block.hero"],
8794
- constraints: { layoutFamilies: ["centered", "compact"] },
8795
- optionGroups: [{
8796
- id: "image-surface-treatment",
8797
- label: "Treatment",
8798
- selectedOptionId: "brand-scrim-primary",
8799
- options: [{
8800
- id: "brand-scrim-primary",
8801
- label: "Brand scrim",
8802
- designPatch: { imageSurfaceTreatment: {
8803
- kind: "brand-scrim",
8804
- token: "primary"
8805
- } }
8806
- }, {
8807
- id: "neutral-scrim",
8808
- label: "Neutral scrim",
8809
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8810
- }]
8811
- }],
8812
- layoutPatches: [{
8813
- constraints: { layoutVariantKeys: ["micro"] },
8814
- designPatch: { sectionHeight: "banner" }
8815
- }],
8816
- design: {
8817
- sectionSurface: "hero-image",
8818
- contentFrame: plainFrame,
8819
- itemSurface: "none",
8820
- sectionHeight: "immersive",
8821
- heroComposition: "center",
8822
- heroTypographyScale: "display",
8823
- imageSurfaceTreatment: {
8824
- kind: "brand-scrim",
8825
- token: "primary"
8826
- }
8827
- }
8828
- }),
8829
- defineBlockAppearancePreset({
8830
- kind: "block-design",
8831
- id: "hero-brand-scrim-fixed-frame",
8832
- target: "hero",
8833
- label: "Fixed-frame brand scrim hero",
8834
- blockKinds: ["block.hero"],
8835
- constraints: { layoutFamilies: ["centered", "compact"] },
8836
- optionGroups: [{
8837
- id: "image-surface-treatment",
8838
- label: "Treatment",
8839
- selectedOptionId: "brand-scrim-primary",
8840
- options: [{
8841
- id: "brand-scrim-primary",
8842
- label: "Brand scrim",
8843
- designPatch: { imageSurfaceTreatment: {
8844
- kind: "brand-scrim",
8845
- token: "primary"
8846
- } }
8847
- }, {
8848
- id: "neutral-scrim",
8849
- label: "Neutral scrim",
8850
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8851
- }]
8852
- }],
8853
- layoutPatches: [{
8854
- constraints: { layoutVariantKeys: ["micro"] },
8855
- designPatch: { sectionHeight: "banner" }
8856
- }],
8857
- design: {
8858
- sectionSurface: "hero-image",
8859
- contentFrame: plainFrame,
8860
- itemSurface: "none",
8861
- sectionHeight: "immersive",
8862
- heroComposition: "center",
8863
- heroTypographyScale: "display",
8864
- imageSurfaceTreatment: {
8865
- kind: "brand-scrim",
8866
- token: "primary"
8867
- },
8868
- imageSurfaceMotion: "fixed-frame",
8869
- eyebrowTreatment: "accent-pill-bounce"
8870
- }
8871
- }),
8872
- defineBlockAppearancePreset({
8873
- kind: "block-design",
8874
- id: "hero-brand-depth-expressive",
8875
- target: "hero",
8876
- label: "Expressive brand-depth hero",
8877
- blockKinds: ["block.hero"],
8878
- constraints: { layoutFamilies: ["centered", "compact"] },
8879
- design: {
8880
- sectionSurface: "brand-depth-band",
8881
- contentFrame: plainFrame,
8882
- itemSurface: "none",
8883
- heroComposition: "center",
8884
- heroTypographyScale: "editorial",
8885
- eyebrowTreatment: "accent-pill-bounce"
8886
- }
8887
- }),
8888
- defineBlockAppearancePreset({
8889
- kind: "block-design",
8890
- id: "hero-contained-intro",
8891
- target: "hero",
8892
- label: "Contained intro hero",
8893
- blockKinds: ["block.hero"],
8894
- design: {
8895
- sectionSurface: "muted-band",
8896
- contentFrame: panelFrame("inset"),
8897
- itemSurface: "none",
8898
- heroComposition: "center",
8899
- heroTypographyScale: "editorial"
8900
- }
8901
- }),
8902
- defineBlockAppearancePreset({
8903
- kind: "block-design",
8904
- id: "hero-split-editorial",
8905
- target: "hero",
8906
- label: "Editorial split hero",
8907
- blockKinds: ["block.hero"],
8908
- constraints: { layoutFamilies: ["split"] },
8909
- design: {
8910
- sectionSurface: "base",
8911
- contentFrame: plainFrame,
8912
- itemSurface: "none",
8913
- heroTypographyScale: "editorial"
8914
- }
8915
- }),
8916
- defineBlockAppearancePreset({
8917
- kind: "block-design",
8918
- id: "hero-split-brand",
8919
- target: "hero",
8920
- label: "Brand split hero",
8921
- blockKinds: ["block.hero"],
8922
- constraints: { layoutFamilies: ["split"] },
8923
- design: {
8924
- sectionSurface: "brand-depth-band",
8925
- contentFrame: plainFrame,
8926
- itemSurface: "none",
8927
- heroTypographyScale: "display",
8928
- eyebrowTreatment: "accent-pill-bounce"
8929
- }
8930
- }),
8931
- defineBlockAppearancePreset({
8932
- kind: "block-design",
8933
- id: "hero-split-soft-panel",
8934
- target: "hero",
8935
- label: "Soft panel split hero",
8936
- blockKinds: ["block.hero"],
8937
- constraints: { layoutFamilies: ["split"] },
8938
- design: {
8939
- sectionSurface: "muted-band",
8940
- contentFrame: panelFrame("raised"),
8941
- itemSurface: "none",
8854
+ intensity: "balanced"
8855
+ } }
8856
+ }]
8857
+ }],
8858
+ layoutPatches: [{
8859
+ constraints: { layoutVariantKeys: ["micro"] },
8860
+ designPatch: {
8861
+ sectionHeight: "banner",
8942
8862
  heroTypographyScale: "editorial"
8943
8863
  }
8944
- }),
8945
- defineBlockAppearancePreset({
8946
- kind: "block-design",
8947
- id: "hero-split-accent",
8948
- target: "hero",
8949
- label: "Accent split hero",
8950
- blockKinds: ["block.hero"],
8951
- constraints: { layoutFamilies: ["split"] },
8952
- design: {
8953
- sectionSurface: "accent-band",
8954
- contentFrame: panelFrame("raised"),
8955
- itemSurface: "none",
8864
+ }],
8865
+ design: {
8866
+ sectionSurface: "hero-image",
8867
+ contentFrame: panelFrame("raised"),
8868
+ itemSurface: "none",
8869
+ sectionHeight: "immersive",
8870
+ heroComposition: "bottom-left",
8871
+ heroTypographyScale: "display",
8872
+ imageSurfaceTreatment: {
8873
+ kind: "neutral-scrim",
8874
+ intensity: "balanced"
8875
+ }
8876
+ }
8877
+ }), defineBlockAppearancePreset({
8878
+ id: "hero-poster-image",
8879
+ target: "hero",
8880
+ label: "Poster image hero",
8881
+ blockKinds: ["block.hero"],
8882
+ constraints: { layoutFamilies: ["centered", "compact"] },
8883
+ layoutPatches: [{
8884
+ constraints: { layoutVariantKeys: ["micro"] },
8885
+ designPatch: {
8886
+ sectionHeight: "banner",
8956
8887
  heroTypographyScale: "display"
8957
8888
  }
8958
- }),
8959
- defineBlockAppearancePreset({
8960
- kind: "block-design",
8961
- id: "intro-editorial-statement",
8962
- target: "intro",
8963
- label: "Editorial intro statement",
8964
- blockKinds: ["block.intro"],
8965
- constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
8966
- design: {
8967
- sectionSurface: "base",
8968
- contentFrame: plainFrame,
8969
- itemSurface: "none",
8970
- composition: {
8971
- kind: "intro",
8972
- treatment: "editorial-statement"
8973
- }
8974
- }
8975
- }),
8976
- defineBlockAppearancePreset({
8977
- kind: "block-design",
8978
- id: "intro-portrait-bio",
8979
- target: "intro",
8980
- label: "Portrait and bio",
8981
- blockKinds: ["block.intro"],
8982
- constraints: { layoutVariantKeys: ["media-copy"] },
8983
- design: {
8984
- sectionSurface: "base",
8985
- contentFrame: plainFrame,
8986
- itemSurface: "none",
8987
- composition: {
8988
- kind: "intro",
8989
- treatment: "portrait-bio"
8990
- }
8991
- }
8992
- }),
8993
- defineBlockAppearancePreset({
8994
- kind: "block-design",
8995
- id: "offerings-preview-default-cards",
8996
- target: "offerings",
8997
- label: "Default offering cards",
8998
- blockKinds: ["block.offerings-preview"],
8999
- design: {
9000
- sectionSurface: "base",
9001
- contentFrame: plainFrame,
9002
- itemSurface: "default"
9003
- }
9004
- }),
9005
- defineBlockAppearancePreset({
9006
- kind: "block-design",
9007
- id: "offerings-preview-secondary-cards",
9008
- target: "offerings",
9009
- label: "Secondary offering cards",
9010
- blockKinds: ["block.offerings-preview"],
9011
- design: {
9012
- sectionSurface: "muted-band",
9013
- contentFrame: plainFrame,
9014
- itemSurface: "inset"
9015
- }
9016
- }),
9017
- defineBlockAppearancePreset({
9018
- kind: "block-design",
9019
- id: "offerings-preview-non-carded",
9020
- target: "offerings",
9021
- label: "Non-carded offerings",
9022
- blockKinds: ["block.offerings-preview"],
9023
- design: {
9024
- sectionSurface: "muted-band",
9025
- contentFrame: plainFrame,
9026
- itemSurface: "editorial"
9027
- }
9028
- }),
9029
- defineBlockAppearancePreset({
9030
- kind: "block-design",
9031
- id: "offerings-preview-paired-feature-cards",
9032
- target: "offerings",
9033
- label: "Paired feature cards",
9034
- blockKinds: ["block.offerings-preview"],
9035
- constraints: { layoutVariantKeys: ["cards"] },
9036
- design: {
9037
- sectionSurface: "base",
9038
- contentFrame: plainFrame,
9039
- itemSurface: "none"
9040
- }
9041
- }),
9042
- defineBlockAppearancePreset({
9043
- kind: "block-design",
9044
- id: "offerings-preview-open-editorial-columns",
9045
- target: "offerings",
9046
- label: "Open editorial columns",
9047
- blockKinds: ["block.offerings-preview"],
9048
- constraints: { layoutVariantKeys: ["cards"] },
9049
- design: {
9050
- sectionSurface: "base",
9051
- contentFrame: plainFrame,
9052
- itemSurface: "none"
9053
- }
9054
- }),
9055
- defineBlockAppearancePreset({
9056
- kind: "block-design",
9057
- id: "offerings-preview-joined-programme-panel",
9058
- target: "offerings",
9059
- label: "Joined programme panel",
9060
- blockKinds: ["block.offerings-preview"],
9061
- constraints: { layoutVariantKeys: ["cards"] },
9062
- design: {
9063
- sectionSurface: "base",
9064
- contentFrame: plainFrame,
9065
- itemSurface: "none"
9066
- }
9067
- }),
9068
- defineBlockAppearancePreset({
9069
- kind: "block-design",
9070
- id: "feature-cards-raised-rule",
9071
- target: "feature-cards",
9072
- label: "Raised cards with rule",
9073
- blockKinds: ["block.feature-cards"],
9074
- design: {
9075
- sectionSurface: "base",
9076
- contentFrame: plainFrame,
9077
- itemSurface: "raised"
9078
- }
9079
- }),
9080
- defineBlockAppearancePreset({
9081
- kind: "block-design",
9082
- id: "feature-cards-bold-colors",
9083
- target: "feature-cards",
9084
- label: "Bold colour-blocked cards",
9085
- blockKinds: ["block.feature-cards"],
9086
- design: {
9087
- sectionSurface: "base",
9088
- contentFrame: plainFrame,
9089
- itemSurface: "color-blocked"
9090
- }
9091
- }),
9092
- defineBlockAppearancePreset({
9093
- kind: "block-design",
9094
- id: "feature-cards-editorial-columns",
9095
- target: "feature-cards",
9096
- label: "Editorial open columns",
9097
- blockKinds: ["block.feature-cards"],
9098
- design: {
9099
- sectionSurface: "base",
9100
- contentFrame: plainFrame,
9101
- itemSurface: "editorial"
9102
- }
9103
- }),
9104
- defineBlockAppearancePreset({
9105
- kind: "block-design",
9106
- id: "feature-cards-asymmetric-emphasis",
9107
- target: "feature-cards",
9108
- label: "Asymmetric emphasis pair",
9109
- blockKinds: ["block.feature-cards"],
9110
- constraints: { layoutFamilies: ["grid"] },
9111
- design: {
9112
- sectionSurface: "base",
9113
- contentFrame: plainFrame,
9114
- itemSurface: "none",
9115
- composition: {
9116
- kind: "feature-cards",
9117
- treatment: "asymmetric-emphasis"
9118
- }
9119
- }
9120
- }),
9121
- defineBlockAppearancePreset({
9122
- kind: "block-design",
9123
- id: "feature-cards-framed-programme",
9124
- target: "feature-cards",
9125
- label: "Framed programme cards",
9126
- blockKinds: ["block.feature-cards"],
9127
- constraints: { layoutFamilies: ["grid"] },
9128
- design: {
9129
- sectionSurface: "brand-depth-band",
9130
- contentFrame: plainFrame,
9131
- itemSurface: "inset",
9132
- composition: {
9133
- kind: "feature-cards",
9134
- treatment: "framed-programme"
9135
- }
9136
- }
9137
- }),
9138
- defineBlockAppearancePreset({
9139
- kind: "block-design",
9140
- id: "feature-cards-soft-panels",
9141
- target: "feature-cards",
9142
- label: "Soft tinted panels",
9143
- blockKinds: ["block.feature-cards"],
9144
- design: {
9145
- sectionSurface: "base",
9146
- contentFrame: plainFrame,
9147
- itemSurface: "inset"
9148
- }
9149
- }),
9150
- defineBlockAppearancePreset({
9151
- kind: "block-design",
9152
- id: "feature-cards-editorial-diptych",
9153
- target: "feature-cards",
9154
- label: "Editorial diptych",
9155
- blockKinds: ["block.feature-cards"],
9156
- constraints: { layoutVariantKeys: ["editorial-diptych"] },
9157
- design: {
9158
- sectionSurface: "base",
9159
- contentFrame: plainFrame,
9160
- itemSurface: "flat"
9161
- }
9162
- }),
9163
- defineBlockAppearancePreset({
9164
- kind: "block-design",
9165
- id: "feature-cards-editorial-pathways",
9166
- target: "feature-cards",
9167
- label: "Editorial pathways",
9168
- blockKinds: ["block.feature-cards"],
9169
- constraints: { layoutVariantKeys: ["editorial-pathways"] },
9170
- design: {
9171
- sectionSurface: "base",
9172
- contentFrame: plainFrame,
9173
- itemSurface: "flat"
9174
- }
9175
- }),
9176
- defineBlockAppearancePreset({
9177
- kind: "block-design",
9178
- id: "feature-cards-photo-tiles",
9179
- target: "feature-cards",
9180
- label: "Photo tiles",
9181
- blockKinds: ["block.feature-cards"],
9182
- design: {
9183
- sectionSurface: "base",
9184
- contentFrame: plainFrame,
9185
- itemSurface: "raised"
9186
- }
9187
- }),
9188
- defineBlockAppearancePreset({
9189
- kind: "block-design",
9190
- id: "events-lined-panel",
9191
- target: "events",
9192
- label: "Raised event panel",
9193
- blockKinds: ["block.event-calendar", "block.event-listing"],
9194
- design: {
9195
- sectionSurface: "base",
9196
- contentFrame: panelFrame("raised"),
9197
- itemSurface: "none"
9198
- }
9199
- }),
9200
- defineBlockAppearancePreset({
9201
- kind: "block-design",
9202
- id: "events-ruled-register",
9203
- target: "events",
9204
- label: "Ruled event register",
9205
- blockKinds: ["block.event-calendar", "block.event-listing"],
9206
- design: {
9207
- sectionSurface: "brand-depth-band",
9208
- contentFrame: plainFrame,
9209
- itemSurface: "none",
9210
- eventListTreatment: "ruled-register"
9211
- }
9212
- }),
9213
- defineBlockAppearancePreset({
9214
- kind: "block-design",
9215
- id: "events-editorial-register",
9216
- target: "events",
9217
- label: "Editorial event register",
9218
- blockKinds: ["block.event-calendar", "block.event-listing"],
9219
- design: {
9220
- sectionSurface: "base",
9221
- contentFrame: plainFrame,
9222
- itemSurface: "none",
9223
- eventListTreatment: "editorial-register"
9224
- }
9225
- }),
9226
- defineBlockAppearancePreset({
9227
- kind: "block-design",
9228
- id: "events-dense-index",
9229
- target: "events",
9230
- label: "Dense event index",
9231
- blockKinds: ["block.event-calendar", "block.event-listing"],
9232
- design: {
9233
- sectionSurface: "accent-band",
9234
- contentFrame: plainFrame,
9235
- itemSurface: "none",
9236
- eventListTreatment: "dense-index"
9237
- }
9238
- }),
9239
- defineBlockAppearancePreset({
9240
- kind: "block-design",
9241
- id: "schedule-details-brand-depth",
9242
- target: "events",
9243
- label: "Brand-depth schedule details",
9244
- blockKinds: ["block.event-details", "block.course-details"],
9245
- design: {
9246
- sectionSurface: "brand-depth-band",
9247
- contentFrame: plainFrame,
9248
- itemSurface: "none",
9249
- tileTreatment: "brand-depth"
9250
- }
9251
- }),
9252
- defineBlockAppearancePreset({
9253
- kind: "block-design",
9254
- id: "media-text-flush-feature",
9255
- target: "media-text",
9256
- label: "Flush media feature",
9257
- blockKinds: ["block.media-text"],
9258
- design: {
9259
- sectionSurface: "muted-band",
9260
- contentFrame: flushPanelFrame({ bleed: "start" }),
9261
- itemSurface: "none"
9262
- }
9263
- }),
9264
- defineBlockAppearancePreset({
9265
- kind: "block-design",
9266
- id: "testimonials-simple-cards",
9267
- target: "testimonials",
9268
- label: "Simple testimonial cards",
9269
- blockKinds: ["block.testimonials"],
9270
- design: {
9271
- sectionSurface: "base",
9272
- contentFrame: plainFrame,
9273
- itemSurface: "default"
9274
- }
9275
- }),
9276
- defineBlockAppearancePreset({
9277
- kind: "block-design",
9278
- id: "testimonials-raised-panel",
9279
- target: "testimonials",
9280
- label: "Raised testimonial panel",
9281
- blockKinds: ["block.testimonials"],
9282
- design: {
9283
- sectionSurface: "muted-band",
9284
- contentFrame: panelFrame("raised"),
9285
- itemSurface: "raised"
9286
- }
9287
- }),
9288
- defineBlockAppearancePreset({
9289
- kind: "block-design",
9290
- id: "testimonials-accent-panel",
9291
- target: "testimonials",
9292
- label: "Accent testimonial panel",
9293
- blockKinds: ["block.testimonials"],
9294
- design: {
9295
- sectionSurface: "accent-band",
9296
- contentFrame: panelFrame("raised"),
9297
- itemSurface: "raised"
9298
- }
9299
- }),
9300
- defineBlockAppearancePreset({
9301
- kind: "block-design",
9302
- id: "testimonials-default-cards",
9303
- target: "testimonials",
9304
- label: "Default cards",
9305
- blockKinds: ["block.testimonials"],
9306
- design: {
9307
- sectionSurface: "base",
9308
- contentFrame: plainFrame,
9309
- itemSurface: "none",
9310
- testimonialCardTreatment: "default"
9311
- }
9312
- }),
9313
- defineBlockAppearancePreset({
9314
- kind: "block-design",
9315
- id: "testimonials-statement-cards",
9316
- target: "testimonials",
9317
- label: "Statement cards",
9318
- blockKinds: ["block.testimonials"],
9319
- design: {
9320
- sectionSurface: "accent-band",
9321
- contentFrame: plainFrame,
9322
- itemSurface: "raised",
9323
- testimonialCardTreatment: "statement"
9324
- }
9325
- }),
9326
- defineBlockAppearancePreset({
9327
- kind: "block-design",
9328
- id: "testimonials-brand-statement-cards",
9329
- target: "testimonials",
9330
- label: "Brand statement cards",
9331
- blockKinds: ["block.testimonials"],
9332
- design: {
9333
- sectionSurface: "brand-depth-band",
9334
- contentFrame: plainFrame,
9335
- itemSurface: "raised",
9336
- testimonialCardTreatment: "statement"
9337
- }
9338
- }),
9339
- defineBlockAppearancePreset({
9340
- kind: "block-design",
9341
- id: "testimonials-non-carded",
9342
- target: "testimonials",
9343
- label: "Non-carded",
9344
- blockKinds: ["block.testimonials"],
9345
- design: {
9346
- sectionSurface: "muted-band",
9347
- contentFrame: plainFrame,
9348
- itemSurface: "none",
9349
- testimonialCardTreatment: "non-carded"
9350
- }
9351
- }),
9352
- defineBlockAppearancePreset({
9353
- kind: "block-design",
9354
- id: "testimonials-evergreen-lead",
9355
- target: "testimonials",
9356
- label: "Evergreen lead",
9357
- blockKinds: ["block.testimonials"],
9358
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9359
- design: {
9360
- sectionSurface: "base",
9361
- contentFrame: plainFrame,
9362
- itemSurface: "none"
9363
- }
9364
- }),
9365
- defineBlockAppearancePreset({
9366
- kind: "block-design",
9367
- id: "testimonials-room-and-response",
9368
- target: "testimonials",
9369
- label: "Room and response",
9370
- blockKinds: ["block.testimonials"],
9371
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9372
- design: {
9373
- sectionSurface: "base",
9374
- contentFrame: plainFrame,
9375
- itemSurface: "none"
9376
- }
9377
- }),
9378
- defineBlockAppearancePreset({
9379
- kind: "block-design",
9380
- id: "testimonials-open-floor",
9381
- target: "testimonials",
9382
- label: "Open floor",
9383
- blockKinds: ["block.testimonials"],
9384
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9385
- design: {
9386
- sectionSurface: "base",
9387
- contentFrame: plainFrame,
9388
- itemSurface: "none"
9389
- }
9390
- }),
9391
- defineBlockAppearancePreset({
9392
- kind: "block-design",
9393
- id: "faq-base-accordion",
9394
- target: "faq",
9395
- label: "Base accordion FAQ",
9396
- blockKinds: ["block.faq"],
9397
- design: {
9398
- sectionSurface: "base",
9399
- contentFrame: plainFrame,
9400
- itemSurface: "default"
9401
- }
9402
- }),
9403
- defineBlockAppearancePreset({
9404
- kind: "block-design",
9405
- id: "faq-contained-help",
9406
- target: "faq",
9407
- label: "Contained help panel",
9408
- blockKinds: ["block.faq"],
9409
- design: {
9410
- sectionSurface: "muted-band",
9411
- contentFrame: panelFrame("inset"),
9412
- itemSurface: "default"
9413
- }
9414
- }),
9415
- defineBlockAppearancePreset({
9416
- kind: "block-design",
9417
- id: "contact-form-panel",
9418
- target: "contact-form",
9419
- label: "Raised form panel",
9420
- blockKinds: ["block.form"],
9421
- design: {
9422
- sectionSurface: "muted-band",
9423
- contentFrame: panelFrame("raised"),
9424
- itemSurface: "none"
9425
- }
9426
- }),
9427
- defineBlockAppearancePreset({
9428
- kind: "block-design",
9429
- id: "cta-accent-band",
9430
- target: "cta",
9431
- label: "Accent CTA band",
9432
- blockKinds: ["block.cta-full"],
9433
- design: {
9434
- sectionSurface: "accent-band",
9435
- contentFrame: plainFrame,
9436
- itemSurface: "none",
9437
- eyebrowTreatment: "accent"
9438
- }
9439
- })
9440
- ]];
8889
+ }],
8890
+ design: {
8891
+ sectionSurface: "hero-image",
8892
+ contentFrame: plainFrame,
8893
+ itemSurface: "none",
8894
+ sectionHeight: "immersive",
8895
+ heroComposition: "center",
8896
+ heroTypographyScale: "poster",
8897
+ imageSurfaceTreatment: {
8898
+ kind: "brand-scrim",
8899
+ token: "primary",
8900
+ intensity: "strong"
8901
+ }
8902
+ }
8903
+ }), defineBlockAppearancePreset({
8904
+ id: "hero-brand-scrim",
8905
+ target: "hero",
8906
+ label: "Brand scrim image hero",
8907
+ blockKinds: ["block.hero"],
8908
+ constraints: { layoutFamilies: ["centered", "compact"] },
8909
+ optionGroups: brandScrimOptionGroups,
8910
+ layoutPatches: microBannerLayoutPatches,
8911
+ design: {
8912
+ sectionSurface: "hero-image",
8913
+ contentFrame: plainFrame,
8914
+ itemSurface: "none",
8915
+ sectionHeight: "immersive",
8916
+ heroComposition: "center",
8917
+ heroTypographyScale: "display",
8918
+ imageSurfaceTreatment: {
8919
+ kind: "brand-scrim",
8920
+ token: "primary"
8921
+ }
8922
+ }
8923
+ }), defineBlockAppearancePreset({
8924
+ id: "hero-brand-scrim-fixed-frame",
8925
+ target: "hero",
8926
+ label: "Fixed-frame brand scrim hero",
8927
+ blockKinds: ["block.hero"],
8928
+ constraints: { layoutFamilies: ["centered", "compact"] },
8929
+ optionGroups: brandScrimOptionGroups,
8930
+ layoutPatches: microBannerLayoutPatches,
8931
+ design: {
8932
+ sectionSurface: "hero-image",
8933
+ contentFrame: plainFrame,
8934
+ itemSurface: "none",
8935
+ sectionHeight: "immersive",
8936
+ heroComposition: "center",
8937
+ heroTypographyScale: "display",
8938
+ imageSurfaceTreatment: {
8939
+ kind: "brand-scrim",
8940
+ token: "primary"
8941
+ },
8942
+ imageSurfaceMotion: "fixed-frame",
8943
+ eyebrowTreatment: "accent-pill-bounce"
8944
+ }
8945
+ }), defineBlockAppearancePreset({
8946
+ id: "hero-brand-depth-expressive",
8947
+ target: "hero",
8948
+ label: "Expressive brand-depth hero",
8949
+ blockKinds: ["block.hero"],
8950
+ constraints: { layoutFamilies: ["centered", "compact"] },
8951
+ design: {
8952
+ sectionSurface: "brand-depth-band",
8953
+ contentFrame: plainFrame,
8954
+ itemSurface: "none",
8955
+ heroComposition: "center",
8956
+ heroTypographyScale: "editorial",
8957
+ eyebrowTreatment: "accent-pill-bounce"
8958
+ }
8959
+ }), defineBlockAppearancePreset({
8960
+ id: "hero-contained-intro",
8961
+ target: "hero",
8962
+ label: "Contained intro hero",
8963
+ blockKinds: ["block.hero"],
8964
+ design: {
8965
+ sectionSurface: "muted-band",
8966
+ contentFrame: panelFrame("inset"),
8967
+ itemSurface: "none",
8968
+ heroComposition: "center",
8969
+ heroTypographyScale: "editorial"
8970
+ }
8971
+ }), defineBlockAppearancePreset({
8972
+ id: "hero-split-editorial",
8973
+ target: "hero",
8974
+ label: "Editorial split hero",
8975
+ blockKinds: ["block.hero"],
8976
+ constraints: { layoutFamilies: ["split"] },
8977
+ design: {
8978
+ sectionSurface: "base",
8979
+ contentFrame: plainFrame,
8980
+ itemSurface: "none",
8981
+ heroTypographyScale: "editorial"
8982
+ }
8983
+ }), defineBlockAppearancePreset({
8984
+ id: "hero-split-brand",
8985
+ target: "hero",
8986
+ label: "Brand split hero",
8987
+ blockKinds: ["block.hero"],
8988
+ constraints: { layoutFamilies: ["split"] },
8989
+ design: {
8990
+ sectionSurface: "brand-depth-band",
8991
+ contentFrame: plainFrame,
8992
+ itemSurface: "none",
8993
+ heroTypographyScale: "display",
8994
+ eyebrowTreatment: "accent-pill-bounce"
8995
+ }
8996
+ }), defineBlockAppearancePreset({
8997
+ id: "hero-split-soft-panel",
8998
+ target: "hero",
8999
+ label: "Soft panel split hero",
9000
+ blockKinds: ["block.hero"],
9001
+ constraints: { layoutFamilies: ["split"] },
9002
+ design: {
9003
+ sectionSurface: "muted-band",
9004
+ contentFrame: panelFrame("raised"),
9005
+ itemSurface: "none",
9006
+ heroTypographyScale: "editorial"
9007
+ }
9008
+ }), defineBlockAppearancePreset({
9009
+ id: "hero-split-accent",
9010
+ target: "hero",
9011
+ label: "Accent split hero",
9012
+ blockKinds: ["block.hero"],
9013
+ constraints: { layoutFamilies: ["split"] },
9014
+ design: {
9015
+ sectionSurface: "accent-band",
9016
+ contentFrame: panelFrame("raised"),
9017
+ itemSurface: "none",
9018
+ heroTypographyScale: "display"
9019
+ }
9020
+ }), defineBlockAppearancePreset({
9021
+ id: "intro-editorial-statement",
9022
+ target: "intro",
9023
+ label: "Editorial intro statement",
9024
+ blockKinds: ["block.intro"],
9025
+ constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
9026
+ design: {
9027
+ sectionSurface: "base",
9028
+ contentFrame: plainFrame,
9029
+ itemSurface: "none",
9030
+ composition: {
9031
+ kind: "intro",
9032
+ treatment: "editorial-statement"
9033
+ }
9034
+ }
9035
+ }), defineBlockAppearancePreset({
9036
+ id: "intro-portrait-bio",
9037
+ target: "intro",
9038
+ label: "Portrait and bio",
9039
+ blockKinds: ["block.intro"],
9040
+ constraints: { layoutVariantKeys: ["media-copy"] },
9041
+ design: {
9042
+ sectionSurface: "base",
9043
+ contentFrame: plainFrame,
9044
+ itemSurface: "none",
9045
+ composition: {
9046
+ kind: "intro",
9047
+ treatment: "portrait-bio"
9048
+ }
9049
+ }
9050
+ }), defineBlockAppearancePreset({
9051
+ id: "offerings-preview-default-cards",
9052
+ target: "offerings",
9053
+ label: "Default offering cards",
9054
+ blockKinds: ["block.offerings-preview"],
9055
+ design: {
9056
+ sectionSurface: "base",
9057
+ contentFrame: plainFrame,
9058
+ itemSurface: "default"
9059
+ }
9060
+ }), defineBlockAppearancePreset({
9061
+ id: "offerings-preview-secondary-cards",
9062
+ target: "offerings",
9063
+ label: "Secondary offering cards",
9064
+ blockKinds: ["block.offerings-preview"],
9065
+ design: {
9066
+ sectionSurface: "muted-band",
9067
+ contentFrame: plainFrame,
9068
+ itemSurface: "inset"
9069
+ }
9070
+ }), defineBlockAppearancePreset({
9071
+ id: "offerings-preview-non-carded",
9072
+ target: "offerings",
9073
+ label: "Non-carded offerings",
9074
+ blockKinds: ["block.offerings-preview"],
9075
+ design: {
9076
+ sectionSurface: "muted-band",
9077
+ contentFrame: plainFrame,
9078
+ itemSurface: "editorial"
9079
+ }
9080
+ }), defineBlockAppearancePreset({
9081
+ id: "offerings-preview-paired-feature-cards",
9082
+ target: "offerings",
9083
+ label: "Paired feature cards",
9084
+ blockKinds: ["block.offerings-preview"],
9085
+ constraints: { layoutVariantKeys: ["cards"] },
9086
+ design: {
9087
+ sectionSurface: "base",
9088
+ contentFrame: plainFrame,
9089
+ itemSurface: "none"
9090
+ }
9091
+ }), defineBlockAppearancePreset({
9092
+ id: "offerings-preview-open-editorial-columns",
9093
+ target: "offerings",
9094
+ label: "Open editorial columns",
9095
+ blockKinds: ["block.offerings-preview"],
9096
+ constraints: { layoutVariantKeys: ["cards"] },
9097
+ design: {
9098
+ sectionSurface: "base",
9099
+ contentFrame: plainFrame,
9100
+ itemSurface: "none"
9101
+ }
9102
+ }), defineBlockAppearancePreset({
9103
+ id: "offerings-preview-joined-programme-panel",
9104
+ target: "offerings",
9105
+ label: "Joined programme panel",
9106
+ blockKinds: ["block.offerings-preview"],
9107
+ constraints: { layoutVariantKeys: ["cards"] },
9108
+ design: {
9109
+ sectionSurface: "base",
9110
+ contentFrame: plainFrame,
9111
+ itemSurface: "none"
9112
+ }
9113
+ }), defineBlockAppearancePreset({
9114
+ id: "feature-cards-raised-rule",
9115
+ target: "feature-cards",
9116
+ label: "Raised cards with rule",
9117
+ blockKinds: ["block.feature-cards"],
9118
+ design: {
9119
+ sectionSurface: "base",
9120
+ contentFrame: plainFrame,
9121
+ itemSurface: "raised"
9122
+ }
9123
+ }), defineBlockAppearancePreset({
9124
+ id: "feature-cards-bold-colors",
9125
+ target: "feature-cards",
9126
+ label: "Bold colour-blocked cards",
9127
+ blockKinds: ["block.feature-cards"],
9128
+ design: {
9129
+ sectionSurface: "base",
9130
+ contentFrame: plainFrame,
9131
+ itemSurface: "color-blocked"
9132
+ }
9133
+ }), defineBlockAppearancePreset({
9134
+ id: "feature-cards-editorial-columns",
9135
+ target: "feature-cards",
9136
+ label: "Editorial open columns",
9137
+ blockKinds: ["block.feature-cards"],
9138
+ design: {
9139
+ sectionSurface: "base",
9140
+ contentFrame: plainFrame,
9141
+ itemSurface: "editorial"
9142
+ }
9143
+ }), defineBlockAppearancePreset({
9144
+ id: "feature-cards-asymmetric-emphasis",
9145
+ target: "feature-cards",
9146
+ label: "Asymmetric emphasis pair",
9147
+ blockKinds: ["block.feature-cards"],
9148
+ constraints: { layoutFamilies: ["grid"] },
9149
+ design: {
9150
+ sectionSurface: "base",
9151
+ contentFrame: plainFrame,
9152
+ itemSurface: "none",
9153
+ composition: {
9154
+ kind: "feature-cards",
9155
+ treatment: "asymmetric-emphasis"
9156
+ }
9157
+ }
9158
+ }), defineBlockAppearancePreset({
9159
+ id: "feature-cards-framed-programme",
9160
+ target: "feature-cards",
9161
+ label: "Framed programme cards",
9162
+ blockKinds: ["block.feature-cards"],
9163
+ constraints: { layoutFamilies: ["grid"] },
9164
+ design: {
9165
+ sectionSurface: "brand-depth-band",
9166
+ contentFrame: plainFrame,
9167
+ itemSurface: "inset",
9168
+ composition: {
9169
+ kind: "feature-cards",
9170
+ treatment: "framed-programme"
9171
+ }
9172
+ }
9173
+ }), defineBlockAppearancePreset({
9174
+ id: "feature-cards-soft-panels",
9175
+ target: "feature-cards",
9176
+ label: "Soft tinted panels",
9177
+ blockKinds: ["block.feature-cards"],
9178
+ design: {
9179
+ sectionSurface: "base",
9180
+ contentFrame: plainFrame,
9181
+ itemSurface: "inset"
9182
+ }
9183
+ }), defineBlockAppearancePreset({
9184
+ id: "feature-cards-editorial-diptych",
9185
+ target: "feature-cards",
9186
+ label: "Editorial diptych",
9187
+ blockKinds: ["block.feature-cards"],
9188
+ constraints: { layoutVariantKeys: ["editorial-diptych"] },
9189
+ design: {
9190
+ sectionSurface: "base",
9191
+ contentFrame: plainFrame,
9192
+ itemSurface: "flat"
9193
+ }
9194
+ }), defineBlockAppearancePreset({
9195
+ id: "feature-cards-editorial-pathways",
9196
+ target: "feature-cards",
9197
+ label: "Editorial pathways",
9198
+ blockKinds: ["block.feature-cards"],
9199
+ constraints: { layoutVariantKeys: ["editorial-pathways"] },
9200
+ design: {
9201
+ sectionSurface: "base",
9202
+ contentFrame: plainFrame,
9203
+ itemSurface: "flat"
9204
+ }
9205
+ }), defineBlockAppearancePreset({
9206
+ id: "feature-cards-photo-tiles",
9207
+ target: "feature-cards",
9208
+ label: "Photo tiles",
9209
+ blockKinds: ["block.feature-cards"],
9210
+ design: {
9211
+ sectionSurface: "base",
9212
+ contentFrame: plainFrame,
9213
+ itemSurface: "raised"
9214
+ }
9215
+ }), defineBlockAppearancePreset({
9216
+ id: "events-lined-panel",
9217
+ target: "events",
9218
+ label: "Raised event panel",
9219
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9220
+ design: {
9221
+ sectionSurface: "base",
9222
+ contentFrame: panelFrame("raised"),
9223
+ itemSurface: "none"
9224
+ }
9225
+ }), defineBlockAppearancePreset({
9226
+ id: "events-ruled-register",
9227
+ target: "events",
9228
+ label: "Ruled event register",
9229
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9230
+ design: {
9231
+ sectionSurface: "brand-depth-band",
9232
+ contentFrame: plainFrame,
9233
+ itemSurface: "none",
9234
+ eventListTreatment: "ruled-register"
9235
+ }
9236
+ }), defineBlockAppearancePreset({
9237
+ id: "events-editorial-register",
9238
+ target: "events",
9239
+ label: "Editorial event register",
9240
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9241
+ design: {
9242
+ sectionSurface: "base",
9243
+ contentFrame: plainFrame,
9244
+ itemSurface: "none",
9245
+ eventListTreatment: "editorial-register"
9246
+ }
9247
+ }), defineBlockAppearancePreset({
9248
+ id: "events-dense-index",
9249
+ target: "events",
9250
+ label: "Dense event index",
9251
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9252
+ design: {
9253
+ sectionSurface: "accent-band",
9254
+ contentFrame: plainFrame,
9255
+ itemSurface: "none",
9256
+ eventListTreatment: "dense-index"
9257
+ }
9258
+ }), defineBlockAppearancePreset({
9259
+ id: "schedule-details-brand-depth",
9260
+ target: "events",
9261
+ label: "Brand-depth schedule details",
9262
+ blockKinds: ["block.event-details", "block.course-details"],
9263
+ design: {
9264
+ sectionSurface: "brand-depth-band",
9265
+ contentFrame: plainFrame,
9266
+ itemSurface: "none",
9267
+ tileTreatment: "brand-depth"
9268
+ }
9269
+ }), defineBlockAppearancePreset({
9270
+ id: "media-text-flush-feature",
9271
+ target: "media-text",
9272
+ label: "Flush media feature",
9273
+ blockKinds: ["block.media-text"],
9274
+ design: {
9275
+ sectionSurface: "muted-band",
9276
+ contentFrame: flushPanelFrame({ bleed: "start" }),
9277
+ itemSurface: "none"
9278
+ }
9279
+ }), defineBlockAppearancePreset({
9280
+ id: "testimonials-simple-cards",
9281
+ target: "testimonials",
9282
+ label: "Simple testimonial cards",
9283
+ blockKinds: ["block.testimonials"],
9284
+ design: {
9285
+ sectionSurface: "base",
9286
+ contentFrame: plainFrame,
9287
+ itemSurface: "default"
9288
+ }
9289
+ }), defineBlockAppearancePreset({
9290
+ id: "testimonials-raised-panel",
9291
+ target: "testimonials",
9292
+ label: "Raised testimonial panel",
9293
+ blockKinds: ["block.testimonials"],
9294
+ design: {
9295
+ sectionSurface: "muted-band",
9296
+ contentFrame: panelFrame("raised"),
9297
+ itemSurface: "raised"
9298
+ }
9299
+ }), defineBlockAppearancePreset({
9300
+ id: "testimonials-accent-panel",
9301
+ target: "testimonials",
9302
+ label: "Accent testimonial panel",
9303
+ blockKinds: ["block.testimonials"],
9304
+ design: {
9305
+ sectionSurface: "accent-band",
9306
+ contentFrame: panelFrame("raised"),
9307
+ itemSurface: "raised"
9308
+ }
9309
+ }), defineBlockAppearancePreset({
9310
+ id: "testimonials-default-cards",
9311
+ target: "testimonials",
9312
+ label: "Default cards",
9313
+ blockKinds: ["block.testimonials"],
9314
+ design: {
9315
+ sectionSurface: "base",
9316
+ contentFrame: plainFrame,
9317
+ itemSurface: "none",
9318
+ testimonialCardTreatment: "default"
9319
+ }
9320
+ }), defineBlockAppearancePreset({
9321
+ id: "testimonials-statement-cards",
9322
+ target: "testimonials",
9323
+ label: "Statement cards",
9324
+ blockKinds: ["block.testimonials"],
9325
+ design: {
9326
+ sectionSurface: "accent-band",
9327
+ contentFrame: plainFrame,
9328
+ itemSurface: "raised",
9329
+ testimonialCardTreatment: "statement"
9330
+ }
9331
+ }), defineBlockAppearancePreset({
9332
+ id: "testimonials-brand-statement-cards",
9333
+ target: "testimonials",
9334
+ label: "Brand statement cards",
9335
+ blockKinds: ["block.testimonials"],
9336
+ design: {
9337
+ sectionSurface: "brand-depth-band",
9338
+ contentFrame: plainFrame,
9339
+ itemSurface: "raised",
9340
+ testimonialCardTreatment: "statement"
9341
+ }
9342
+ }), defineBlockAppearancePreset({
9343
+ id: "testimonials-non-carded",
9344
+ target: "testimonials",
9345
+ label: "Non-carded",
9346
+ blockKinds: ["block.testimonials"],
9347
+ design: {
9348
+ sectionSurface: "muted-band",
9349
+ contentFrame: plainFrame,
9350
+ itemSurface: "none",
9351
+ testimonialCardTreatment: "non-carded"
9352
+ }
9353
+ }), defineBlockAppearancePreset({
9354
+ id: "testimonials-evergreen-lead",
9355
+ target: "testimonials",
9356
+ label: "Evergreen lead",
9357
+ blockKinds: ["block.testimonials"],
9358
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9359
+ design: {
9360
+ sectionSurface: "base",
9361
+ contentFrame: plainFrame,
9362
+ itemSurface: "none"
9363
+ }
9364
+ }), defineBlockAppearancePreset({
9365
+ id: "testimonials-room-and-response",
9366
+ target: "testimonials",
9367
+ label: "Room and response",
9368
+ blockKinds: ["block.testimonials"],
9369
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9370
+ design: {
9371
+ sectionSurface: "base",
9372
+ contentFrame: plainFrame,
9373
+ itemSurface: "none"
9374
+ }
9375
+ }), defineBlockAppearancePreset({
9376
+ id: "testimonials-open-floor",
9377
+ target: "testimonials",
9378
+ label: "Open floor",
9379
+ blockKinds: ["block.testimonials"],
9380
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9381
+ design: {
9382
+ sectionSurface: "base",
9383
+ contentFrame: plainFrame,
9384
+ itemSurface: "none"
9385
+ }
9386
+ }), defineBlockAppearancePreset({
9387
+ id: "faq-base-accordion",
9388
+ target: "faq",
9389
+ label: "Base accordion FAQ",
9390
+ blockKinds: ["block.faq"],
9391
+ design: {
9392
+ sectionSurface: "base",
9393
+ contentFrame: plainFrame,
9394
+ itemSurface: "default"
9395
+ }
9396
+ }), defineBlockAppearancePreset({
9397
+ id: "faq-contained-help",
9398
+ target: "faq",
9399
+ label: "Contained help panel",
9400
+ blockKinds: ["block.faq"],
9401
+ design: {
9402
+ sectionSurface: "muted-band",
9403
+ contentFrame: panelFrame("inset"),
9404
+ itemSurface: "default"
9405
+ }
9406
+ }), defineBlockAppearancePreset({
9407
+ id: "contact-form-panel",
9408
+ target: "contact-form",
9409
+ label: "Raised form panel",
9410
+ blockKinds: ["block.form"],
9411
+ design: {
9412
+ sectionSurface: "muted-band",
9413
+ contentFrame: panelFrame("raised"),
9414
+ itemSurface: "none"
9415
+ }
9416
+ }), defineBlockAppearancePreset({
9417
+ id: "cta-accent-band",
9418
+ target: "cta",
9419
+ label: "Accent CTA band",
9420
+ blockKinds: ["block.cta-full"],
9421
+ design: {
9422
+ sectionSurface: "accent-band",
9423
+ contentFrame: plainFrame,
9424
+ itemSurface: "none",
9425
+ eyebrowTreatment: "accent"
9426
+ }
9427
+ });
9441
9428
  //#endregion
9442
9429
  //#region ../theme-core/src/site-styles/headerCtaVariants.ts
9443
9430
  function hasButtonVariant(theme, variantId) {
@@ -9518,6 +9505,27 @@ function uniqueStrings(values) {
9518
9505
  return Array.from(new Set(values));
9519
9506
  }
9520
9507
  //#endregion
9508
+ //#region ../theme-core/src/site-styles/headerInteractionPalette.ts
9509
+ const clearSplitInteractionPalette = defineLookOptionGroup({
9510
+ id: "interaction-palette",
9511
+ label: "Hover colour",
9512
+ defaultOptionId: "accent",
9513
+ options: [
9514
+ {
9515
+ id: "accent",
9516
+ label: "Accent"
9517
+ },
9518
+ {
9519
+ id: "primary",
9520
+ label: "Primary"
9521
+ },
9522
+ {
9523
+ id: "secondary",
9524
+ label: "Secondary"
9525
+ }
9526
+ ]
9527
+ });
9528
+ //#endregion
9521
9529
  //#region ../theme-core/src/site-styles/headerLooks.ts
9522
9530
  function asHeaderLookId(value) {
9523
9531
  return value;
@@ -9651,7 +9659,7 @@ const overlayLogoAccommodations = [
9651
9659
  * optional nested styling fields that would otherwise leak from another Look.
9652
9660
  */
9653
9661
  function baseHeader(theme) {
9654
- 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;
9662
+ 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;
9655
9663
  return {
9656
9664
  ...header,
9657
9665
  navContainer: {
@@ -9666,7 +9674,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9666
9674
  id: asHeaderLayoutId("classic"),
9667
9675
  label: "Classic",
9668
9676
  description: "Logo and navigation in one practical horizontal row.",
9669
- structure: "inline-classic",
9670
9677
  variant: "classic",
9671
9678
  defaultPositioning: "sticky",
9672
9679
  shrinkOnScroll: false
@@ -9675,7 +9682,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9675
9682
  id: asHeaderLayoutId("centered"),
9676
9683
  label: "Centered",
9677
9684
  description: "Logo centered above a balanced navigation row.",
9678
- structure: "centered-stack",
9679
9685
  variant: "centered",
9680
9686
  defaultPositioning: "static",
9681
9687
  shrinkOnScroll: false,
@@ -9691,7 +9697,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9691
9697
  id: asHeaderLayoutId("floating"),
9692
9698
  label: "Floating",
9693
9699
  description: "Detached header chrome that sits over the opening section.",
9694
- structure: "floating-shell",
9695
9700
  variant: "floating",
9696
9701
  defaultPositioning: "sticky",
9697
9702
  shrinkOnScroll: true,
@@ -9853,10 +9858,13 @@ const headerStyleCatalog = defineExactCatalog()([
9853
9858
  label: "Clear Split",
9854
9859
  description: "Floating logo with transparent navigation and no shared shell.",
9855
9860
  supportedLayoutIds: supportedLayouts(["floating"]),
9856
- navInteraction: "color-change",
9861
+ navInteraction: "pill-background",
9857
9862
  surface: "floating",
9858
- defaultDepth: "none",
9863
+ defaultDepth: "line",
9859
9864
  navTypography: "plain",
9865
+ openingForegroundTarget: "all",
9866
+ scrollTreatment: "contrast-glass",
9867
+ interactionPalette: clearSplitInteractionPalette,
9860
9868
  moods: ["editorial", "calm"]
9861
9869
  },
9862
9870
  {
@@ -9879,6 +9887,7 @@ const headerStyleCatalog = defineExactCatalog()([
9879
9887
  surface: "floating",
9880
9888
  defaultDepth: "shadow",
9881
9889
  navTypography: "quiet-caps",
9890
+ openingForegroundTarget: "brand-only",
9882
9891
  moods: ["expressive"]
9883
9892
  },
9884
9893
  {
@@ -9890,6 +9899,7 @@ const headerStyleCatalog = defineExactCatalog()([
9890
9899
  surface: "floating",
9891
9900
  defaultDepth: "shadow",
9892
9901
  navTypography: "heading",
9902
+ openingForegroundTarget: "brand-only",
9893
9903
  moods: ["calm", "editorial"]
9894
9904
  }
9895
9905
  ]);
@@ -10391,13 +10401,6 @@ const headerLookCatalog = defineExactCatalog()([
10391
10401
  {
10392
10402
  id: asHeaderLookId("clean-base"),
10393
10403
  label: "Clean base",
10394
- visualTreatment: "solid-neutral",
10395
- layoutBehavior: "sticky",
10396
- configuration: {
10397
- structure: "inline-classic",
10398
- treatment: "solid-neutral",
10399
- behavior: "sticky"
10400
- },
10401
10404
  openingRequirement: "none",
10402
10405
  logoAccommodations: inlineClassicLogoAccommodations,
10403
10406
  compile: cleanBaseHeader
@@ -10405,13 +10408,6 @@ const headerLookCatalog = defineExactCatalog()([
10405
10408
  {
10406
10409
  id: asHeaderLookId("classic-centered-nav"),
10407
10410
  label: "Centered nav",
10408
- visualTreatment: "solid-neutral",
10409
- layoutBehavior: "sticky",
10410
- configuration: {
10411
- structure: "inline-classic",
10412
- treatment: "solid-neutral",
10413
- behavior: "sticky"
10414
- },
10415
10411
  openingRequirement: "none",
10416
10412
  maxRecommendedNavItems: 6,
10417
10413
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -10420,13 +10416,6 @@ const headerLookCatalog = defineExactCatalog()([
10420
10416
  {
10421
10417
  id: asHeaderLookId("brand-solid"),
10422
10418
  label: "Brand solid",
10423
- visualTreatment: "solid-brand",
10424
- layoutBehavior: "sticky-shrink",
10425
- configuration: {
10426
- structure: "inline-classic",
10427
- treatment: "solid-brand",
10428
- behavior: "sticky-shrink"
10429
- },
10430
10419
  openingRequirement: "none",
10431
10420
  logoAccommodations: inlineClassicLogoAccommodations,
10432
10421
  compile: solidBrandHeader
@@ -10434,13 +10423,6 @@ const headerLookCatalog = defineExactCatalog()([
10434
10423
  {
10435
10424
  id: asHeaderLookId("serif-line"),
10436
10425
  label: "Serif line",
10437
- visualTreatment: "light-serif",
10438
- layoutBehavior: "sticky",
10439
- configuration: {
10440
- structure: "centered-stack",
10441
- treatment: "light-serif",
10442
- behavior: "sticky"
10443
- },
10444
10426
  openingRequirement: "none",
10445
10427
  maxRecommendedNavItems: 6,
10446
10428
  logoAccommodations: centeredLogoAccommodations,
@@ -10449,13 +10431,6 @@ const headerLookCatalog = defineExactCatalog()([
10449
10431
  {
10450
10432
  id: asHeaderLookId("centered-calm"),
10451
10433
  label: "Centered calm",
10452
- visualTreatment: "light-serif",
10453
- layoutBehavior: "normal-flow",
10454
- configuration: {
10455
- structure: "centered-stack",
10456
- treatment: "light-serif",
10457
- behavior: "normal-flow"
10458
- },
10459
10434
  openingRequirement: "none",
10460
10435
  maxRecommendedNavItems: 5,
10461
10436
  logoAccommodations: centeredLogoAccommodations,
@@ -10464,13 +10439,6 @@ const headerLookCatalog = defineExactCatalog()([
10464
10439
  {
10465
10440
  id: asHeaderLookId("practical-utility"),
10466
10441
  label: "Practical utility",
10467
- visualTreatment: "solid-neutral",
10468
- layoutBehavior: "sticky-shrink",
10469
- configuration: {
10470
- structure: "inline-classic",
10471
- treatment: "solid-neutral",
10472
- behavior: "sticky-shrink"
10473
- },
10474
10442
  openingRequirement: "none",
10475
10443
  requiresProminentCta: true,
10476
10444
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -10479,13 +10447,6 @@ const headerLookCatalog = defineExactCatalog()([
10479
10447
  {
10480
10448
  id: asHeaderLookId("minimal-transparent"),
10481
10449
  label: "Minimal transparent",
10482
- visualTreatment: "minimal-transparent",
10483
- layoutBehavior: "normal-flow",
10484
- configuration: {
10485
- structure: "inline-classic",
10486
- treatment: "minimal-transparent",
10487
- behavior: "normal-flow"
10488
- },
10489
10450
  openingRequirement: "reserved-space-ok",
10490
10451
  logoAccommodations: inlineClassicLogoAccommodations,
10491
10452
  compile: minimalTransparentHeader
@@ -10493,13 +10454,6 @@ const headerLookCatalog = defineExactCatalog()([
10493
10454
  {
10494
10455
  id: asHeaderLookId("transparent-overlay"),
10495
10456
  label: "Transparent overlay",
10496
- visualTreatment: "transparent-overlay",
10497
- layoutBehavior: "fixed-overlay",
10498
- configuration: {
10499
- structure: "inline-classic",
10500
- treatment: "transparent-overlay",
10501
- behavior: "fixed-overlay"
10502
- },
10503
10457
  openingRequirement: "requires-image-hero-with-contrast-overlay",
10504
10458
  maxRecommendedNavItems: 5,
10505
10459
  logoAccommodations: overlayLogoAccommodations,
@@ -10508,24 +10462,13 @@ const headerLookCatalog = defineExactCatalog()([
10508
10462
  {
10509
10463
  id: asHeaderLookId("floating-glass"),
10510
10464
  label: "Floating glass",
10511
- visualTreatment: "floating-glass",
10512
- layoutBehavior: "fixed-floating",
10513
- configuration: {
10514
- structure: "floating-shell",
10515
- treatment: "floating-glass",
10516
- behavior: "fixed-floating"
10517
- },
10518
10465
  openingRequirement: "requires-image-hero-with-contrast-overlay",
10519
10466
  maxRecommendedNavItems: 5,
10520
10467
  logoAccommodations: overlayLogoAccommodations,
10521
10468
  compile: floatingGlassHeader
10522
10469
  }
10523
10470
  ]);
10524
- new Set(headerLookCatalog.map((look) => headerConfigurationKey(look.configuration)));
10525
10471
  new Map(headerLookCatalog.map((look) => [look.id, look]));
10526
- function headerConfigurationKey(configuration) {
10527
- return `${configuration.structure}:${configuration.treatment}:${configuration.behavior}`;
10528
- }
10529
10472
  //#endregion
10530
10473
  //#region ../theme-core/src/site-styles/sectionTransitions.ts
10531
10474
  function boundaryRuntimeMetrics(family, size, heightExpression) {
@@ -14134,28 +14077,6 @@ z$1.object({
14134
14077
  spacing: z$1.enum(themeTokenRecipeOptions.spacing),
14135
14078
  motion: z$1.enum(themeTokenRecipeOptions.motion)
14136
14079
  });
14137
- const BREAKPOINT_LG = 1024;
14138
- const BREAKPOINT_XL = 1280;
14139
- const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
14140
- function mqUp(px) {
14141
- return `(min-width: ${px}px)`;
14142
- }
14143
- function mqDown(px) {
14144
- return `(max-width: ${px}px)`;
14145
- }
14146
- function mqBetween(minPx, maxPx) {
14147
- return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
14148
- }
14149
- mqUp(640);
14150
- mqUp(768);
14151
- mqUp(BREAKPOINT_LG);
14152
- mqUp(BREAKPOINT_XL);
14153
- mqDown(639);
14154
- mqDown(767);
14155
- mqDown(BREAKPOINT_LG_DOWN);
14156
- mqBetween(640, BREAKPOINT_LG_DOWN);
14157
- mqDown(640);
14158
- mqDown(768);
14159
14080
  //#endregion
14160
14081
  //#region ../theme-core/src/siteChromeOverlayClearance.ts
14161
14082
  const SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
@@ -18248,15 +18169,6 @@ const heroLayoutControlsFragment = defineFragment({
18248
18169
  */
18249
18170
  const BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
18250
18171
  const blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
18251
- /**
18252
- * Temporary rollout boundary for persisted content written before issue #1220.
18253
- * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
18254
- * only until the post-deploy role rewrite has been audited in production.
18255
- */
18256
- function canonicalizePersistedBlockButtonRole(value) {
18257
- return value === "link" || value === "tertiary" ? "ghost" : value;
18258
- }
18259
- const persistedBlockButtonRoleSchema = z$1.preprocess((value) => typeof value === "string" ? canonicalizePersistedBlockButtonRole(value) : value, blockButtonRoleSchema);
18260
18172
  const BLOCK_BUTTON_ROLE_LABELS = {
18261
18173
  primary: "Primary",
18262
18174
  secondary: "Secondary",
@@ -25498,6 +25410,12 @@ const mediaBaseSchema = z.object({
25498
25410
  poster: mediaPosterSchema.optional(),
25499
25411
  transform: transformSchema.optional()
25500
25412
  });
25413
+ /**
25414
+ * Canonical identifier carried by media values that are safe to persist.
25415
+ * Parsing trims boundary input so downstream writers cannot retain whitespace-only
25416
+ * identifiers or independently disagree about normalization.
25417
+ */
25418
+ const mediaIdentifierSchema = z.string().trim().min(1).brand();
25501
25419
  const imageMediaSchema = mediaBaseSchema.extend({ type: z.literal("image") });
25502
25420
  const videoMediaSchema = mediaBaseSchema.extend({ type: z.literal("video") });
25503
25421
  const audioMediaSchema = mediaBaseSchema.extend({ type: z.literal("audio") });
@@ -25512,6 +25430,15 @@ const mediaSchema = z.discriminatedUnion("type", [
25512
25430
  spreadsheetMediaSchema,
25513
25431
  archiveMediaSchema
25514
25432
  ]);
25433
+ const persistableMediaBaseSchema = mediaBaseSchema.extend({ identifier: mediaIdentifierSchema });
25434
+ z.discriminatedUnion("type", [
25435
+ persistableMediaBaseSchema.extend({ type: z.literal("image") }),
25436
+ persistableMediaBaseSchema.extend({ type: z.literal("video") }),
25437
+ persistableMediaBaseSchema.extend({ type: z.literal("audio") }),
25438
+ persistableMediaBaseSchema.extend({ type: z.literal("document") }),
25439
+ persistableMediaBaseSchema.extend({ type: z.literal("spreadsheet") }),
25440
+ persistableMediaBaseSchema.extend({ type: z.literal("archive") })
25441
+ ]);
25515
25442
  //#endregion
25516
25443
  //#region ../blocks/src/system/manifest/richTextSchema.ts
25517
25444
  /**
@@ -26625,7 +26552,7 @@ function isEventCalendarListLayout(value) {
26625
26552
  //#region ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
26626
26553
  const previewStageSchema = z$1.enum(["preview", "published"]);
26627
26554
  const registrationButtonVariantSchema = blockButtonRoleSchema;
26628
- const eventButtonVariantSchema = persistedBlockButtonRoleSchema;
26555
+ const eventButtonVariantSchema = blockButtonRoleSchema;
26629
26556
  const eventLayoutSchema = z$1.enum(eventCalendarListLayoutValues);
26630
26557
  const eventCalendarDisplayModeSchema = z$1.enum(eventCalendarDisplayModeValues);
26631
26558
  const eventCalendarDefaultViewSchema = z$1.enum(eventCalendarDefaultViewValues);