@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
@@ -3053,7 +3053,7 @@ function canonicalPaletteHashInput(colors, mode) {
3053
3053
  return `${mode}|${paletteColorFingerprint(colors)}`;
3054
3054
  }
3055
3055
  /**
3056
- * The shared TypeScript/SQL protocol. Do not reorder roles: the order comes
3056
+ * Stable curated-catalogue identity. Do not reorder roles: the order comes
3057
3057
  * from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
3058
3058
  */
3059
3059
  function paletteValueKey(colors, mode) {
@@ -4513,8 +4513,6 @@ const VARIANT_ROLES = [
4513
4513
  "secondary",
4514
4514
  "outline",
4515
4515
  "ghost",
4516
- "link",
4517
- "tertiary",
4518
4516
  "accent"
4519
4517
  ];
4520
4518
  /**
@@ -4523,7 +4521,7 @@ const VARIANT_ROLES = [
4523
4521
  * IDs become class selectors, so keep the contract deliberately narrower than
4524
4522
  * an arbitrary string and shared with every authoring/runtime boundary.
4525
4523
  */
4526
- const buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only");
4524
+ const buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only").refine((value) => value !== "link" && value !== "tertiary", { message: "Retired button role IDs are not valid variant IDs" });
4527
4525
  function parseOpaqueButtonColourToken(value) {
4528
4526
  const token = parseThemeColorToken(value);
4529
4527
  if (token === null) return null;
@@ -4926,6 +4924,59 @@ function surfaceForegroundStyle(input) {
4926
4924
  [SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting
4927
4925
  };
4928
4926
  }
4927
+ shadeBackgroundEffect({
4928
+ id: "darken-background",
4929
+ name: "Darken on Hover",
4930
+ description: "Darkens the background color on hover",
4931
+ label: "Darken Amount (shade step)",
4932
+ shadeDirection: 1
4933
+ });
4934
+ shadeBackgroundEffect({
4935
+ id: "lighten-background",
4936
+ name: "Lighten on Hover",
4937
+ description: "Lightens the background color on hover",
4938
+ label: "Lighten Amount (shade step)",
4939
+ shadeDirection: -1
4940
+ });
4941
+ function shadeBackgroundEffect(config) {
4942
+ return {
4943
+ id: config.id,
4944
+ name: config.name,
4945
+ description: config.description,
4946
+ category: "background",
4947
+ pseudoElement: "none",
4948
+ applicableTo: ["button"],
4949
+ customizableOption: {
4950
+ name: "amount",
4951
+ type: "select",
4952
+ label: config.label,
4953
+ default: 100,
4954
+ options: [
4955
+ 0,
4956
+ 100,
4957
+ 200,
4958
+ 300,
4959
+ 400,
4960
+ 500,
4961
+ 600,
4962
+ 700,
4963
+ 800,
4964
+ 900
4965
+ ]
4966
+ },
4967
+ isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
4968
+ generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
4969
+ if (buttonConfig.background.type !== "solid") return "";
4970
+ const amount = (options.amount || 100) * config.shadeDirection;
4971
+ const baseToken = buttonConfig.background.colorToken ?? "primary-500";
4972
+ return `
4973
+ :where([data-theme-scope="${themeId}"]) .${variantId}:hover {
4974
+ background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
4975
+ }
4976
+ `;
4977
+ }
4978
+ };
4979
+ }
4929
4980
  buttonSizeNameSchema.options;
4930
4981
  //#endregion
4931
4982
  //#region ../theme-core/src/buttons/styles/domain.ts
@@ -7740,6 +7791,60 @@ function resolveThemeColorReferenceValue(input, context) {
7740
7791
  const reference = parseThemeColorReference(input, context);
7741
7792
  return reference.kind === "literal-css" ? reference.value : rgbColorValue(reference.token);
7742
7793
  }
7794
+ const BREAKPOINT_LG = 1024;
7795
+ const BREAKPOINT_XL = 1280;
7796
+ const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
7797
+ function mqUp(px) {
7798
+ return `(min-width: ${px}px)`;
7799
+ }
7800
+ function mqDown(px) {
7801
+ return `(max-width: ${px}px)`;
7802
+ }
7803
+ function mqBetween(minPx, maxPx) {
7804
+ return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
7805
+ }
7806
+ mqUp(640);
7807
+ mqUp(768);
7808
+ mqUp(BREAKPOINT_LG);
7809
+ mqUp(BREAKPOINT_XL);
7810
+ mqDown(639);
7811
+ mqDown(767);
7812
+ mqDown(BREAKPOINT_LG_DOWN);
7813
+ mqBetween(640, BREAKPOINT_LG_DOWN);
7814
+ mqDown(640);
7815
+ mqDown(768);
7816
+ //#endregion
7817
+ //#region ../theme-core/src/header/scrollTreatment.ts
7818
+ const headerScrollTreatmentSchema = z$1.discriminatedUnion("kind", [z$1.object({
7819
+ kind: z$1.literal("contrast-glass"),
7820
+ backgroundTone: z$1.enum(["light", "dark"])
7821
+ })]).optional();
7822
+ //#endregion
7823
+ //#region ../theme-core/src/header/containerSchema.ts
7824
+ const headerContainerSchema = z$1.object({
7825
+ rounded: z$1.enum([
7826
+ "none",
7827
+ "sm",
7828
+ "md",
7829
+ "lg",
7830
+ "xl",
7831
+ "2xl"
7832
+ ]).default("xl"),
7833
+ border: z$1.boolean().default(true),
7834
+ shadow: z$1.boolean().default(true),
7835
+ padding: z$1.enum([
7836
+ "sm",
7837
+ "md",
7838
+ "lg"
7839
+ ]).default("md"),
7840
+ tint: z$1.string().nullable().optional(),
7841
+ opacity: z$1.number().min(0).max(1).default(.12)
7842
+ }).optional();
7843
+ const headerInteractionPaletteSchema = z$1.enum([
7844
+ "primary",
7845
+ "secondary",
7846
+ "accent"
7847
+ ]);
7743
7848
  //#endregion
7744
7849
  //#region ../theme-core/src/schema.ts
7745
7850
  const axesSchema = z$1.object({
@@ -8149,25 +8254,6 @@ const navFontWeight = z$1.enum([
8149
8254
  ]);
8150
8255
  const headerMaxWidth = z$1.enum(["container", "full"]);
8151
8256
  const headerBarFrame = z$1.enum(["full-bleed", "inset-shell"]);
8152
- const headerContainerSchema = z$1.object({
8153
- rounded: z$1.enum([
8154
- "none",
8155
- "sm",
8156
- "md",
8157
- "lg",
8158
- "xl",
8159
- "2xl"
8160
- ]).default("xl"),
8161
- border: z$1.boolean().default(true),
8162
- shadow: z$1.boolean().default(true),
8163
- padding: z$1.enum([
8164
- "sm",
8165
- "md",
8166
- "lg"
8167
- ]).default("md"),
8168
- tint: z$1.string().nullable().optional(),
8169
- opacity: z$1.number().min(0).max(1).default(.12)
8170
- }).optional();
8171
8257
  const headerBorderSchema = componentBorderSchema.extend({ position: z$1.enum([
8172
8258
  "bottom",
8173
8259
  "top",
@@ -8294,6 +8380,7 @@ const headerSchema = z$1.object({
8294
8380
  shrinkOnScroll: z$1.boolean(),
8295
8381
  maxWidth: headerMaxWidth,
8296
8382
  barFrame: headerBarFrame.optional(),
8383
+ scrollTreatment: headerScrollTreatmentSchema,
8297
8384
  logoOverride: mediaSchema$1.nullable().optional(),
8298
8385
  background: headerBackgroundSchema.default({
8299
8386
  type: "color",
@@ -8306,6 +8393,7 @@ const headerSchema = z$1.object({
8306
8393
  navFontRole: z$1.enum(["body", "heading"]).optional(),
8307
8394
  navTypography: z$1.enum(["body", "heading"]).optional(),
8308
8395
  navTextSize: navLinkStyleSchema.shape.textSize,
8396
+ interactionPalette: headerInteractionPaletteSchema.optional(),
8309
8397
  navPlacement: z$1.enum(["end", "center"]).optional(),
8310
8398
  container: headerContainerSchema,
8311
8399
  border: headerBorderSchema,
@@ -8598,770 +8686,669 @@ z$1.object({
8598
8686
  themes: z$1.array(themeSchema).length(3)
8599
8687
  });
8600
8688
  //#endregion
8689
+ //#region ../theme-core/src/site-styles/lookOptionGroups.ts
8690
+ function defineLookOptionGroup(group) {
8691
+ defaultOption(group);
8692
+ return group;
8693
+ }
8694
+ function defaultOption(group) {
8695
+ const option = group.options.find((candidate) => candidate.id === group.defaultOptionId);
8696
+ if (option) return option;
8697
+ throw new Error(`Look option group "${group.id}" defaults to missing option "${group.defaultOptionId}".`);
8698
+ }
8699
+ //#endregion
8601
8700
  //#region ../theme-core/src/site-styles/appearancePresetResolution.ts
8602
8701
  function assertValidOptionGroups(preset) {
8603
8702
  preset.optionGroups?.forEach((group) => {
8604
- if (!group.options.find((option) => option.id === group.selectedOptionId)) throw new Error(`Appearance preset "${preset.id}" option group "${group.id}" selects missing option "${group.selectedOptionId}".`);
8703
+ defineLookOptionGroup(group);
8605
8704
  });
8606
8705
  }
8607
8706
  function defineBlockAppearancePreset(preset) {
8608
8707
  assertValidOptionGroups(preset);
8609
8708
  return preset;
8610
8709
  }
8611
- [...[
8612
- defineBlockAppearancePreset({
8613
- kind: "block-design",
8614
- id: "hero-immersive-image",
8615
- target: "hero",
8616
- label: "Immersive image hero",
8617
- blockKinds: ["block.hero"],
8618
- constraints: { layoutFamilies: ["centered", "compact"] },
8619
- layoutPatches: [{
8620
- constraints: { layoutVariantKeys: ["micro"] },
8621
- designPatch: {
8622
- sectionHeight: "banner",
8623
- heroTypographyScale: "display"
8624
- }
8625
- }],
8626
- design: {
8627
- sectionSurface: "hero-image",
8628
- contentFrame: plainFrame,
8629
- itemSurface: "none",
8630
- sectionHeight: "hero",
8631
- heroComposition: "center",
8632
- heroTypographyScale: "display",
8633
- imageSurfaceTreatment: { kind: "neutral-wash" }
8710
+ //#endregion
8711
+ //#region ../theme-core/src/site-styles/blockAppearancePresets.ts
8712
+ const brandScrimOptionGroups = [{
8713
+ id: "image-surface-treatment",
8714
+ label: "Treatment",
8715
+ defaultOptionId: "brand-scrim-primary",
8716
+ options: [{
8717
+ id: "brand-scrim-primary",
8718
+ label: "Brand scrim",
8719
+ designPatch: { imageSurfaceTreatment: {
8720
+ kind: "brand-scrim",
8721
+ token: "primary"
8722
+ } }
8723
+ }, {
8724
+ id: "neutral-scrim",
8725
+ label: "Neutral scrim",
8726
+ designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8727
+ }]
8728
+ }];
8729
+ const microBannerLayoutPatches = [{
8730
+ constraints: { layoutVariantKeys: ["micro"] },
8731
+ designPatch: { sectionHeight: "banner" }
8732
+ }];
8733
+ defineBlockAppearancePreset({
8734
+ id: "hero-immersive-image",
8735
+ target: "hero",
8736
+ label: "Immersive image hero",
8737
+ blockKinds: ["block.hero"],
8738
+ constraints: { layoutFamilies: ["centered", "compact"] },
8739
+ layoutPatches: [{
8740
+ constraints: { layoutVariantKeys: ["micro"] },
8741
+ designPatch: {
8742
+ sectionHeight: "banner",
8743
+ heroTypographyScale: "display"
8634
8744
  }
8635
- }),
8636
- defineBlockAppearancePreset({
8637
- kind: "block-design",
8638
- id: "hero-bottom-left-panel",
8639
- target: "hero",
8640
- label: "Bottom-left panel hero",
8641
- blockKinds: ["block.hero"],
8642
- constraints: { layoutFamilies: ["centered", "compact"] },
8643
- optionGroups: [{
8644
- id: "image-surface-treatment",
8645
- label: "Treatment",
8646
- selectedOptionId: "neutral-scrim",
8647
- options: [{
8648
- id: "neutral-scrim",
8649
- label: "Neutral scrim",
8650
- designPatch: { imageSurfaceTreatment: {
8651
- kind: "neutral-scrim",
8652
- intensity: "balanced"
8653
- } }
8654
- }, {
8655
- id: "brand-scrim-primary",
8656
- label: "Brand scrim",
8657
- designPatch: { imageSurfaceTreatment: {
8658
- kind: "brand-scrim",
8659
- token: "primary",
8660
- intensity: "balanced"
8661
- } }
8662
- }]
8663
- }],
8664
- layoutPatches: [{
8665
- constraints: { layoutVariantKeys: ["micro"] },
8666
- designPatch: {
8667
- sectionHeight: "banner",
8668
- heroTypographyScale: "editorial"
8669
- }
8670
- }],
8671
- design: {
8672
- sectionSurface: "hero-image",
8673
- contentFrame: panelFrame("raised"),
8674
- itemSurface: "none",
8675
- sectionHeight: "immersive",
8676
- heroComposition: "bottom-left",
8677
- heroTypographyScale: "display",
8678
- imageSurfaceTreatment: {
8745
+ }],
8746
+ design: {
8747
+ sectionSurface: "hero-image",
8748
+ contentFrame: plainFrame,
8749
+ itemSurface: "none",
8750
+ sectionHeight: "hero",
8751
+ heroComposition: "center",
8752
+ heroTypographyScale: "display",
8753
+ imageSurfaceTreatment: { kind: "neutral-wash" }
8754
+ }
8755
+ }), defineBlockAppearancePreset({
8756
+ id: "hero-bottom-left-panel",
8757
+ target: "hero",
8758
+ label: "Bottom-left panel hero",
8759
+ blockKinds: ["block.hero"],
8760
+ constraints: { layoutFamilies: ["centered", "compact"] },
8761
+ optionGroups: [{
8762
+ id: "image-surface-treatment",
8763
+ label: "Treatment",
8764
+ defaultOptionId: "neutral-scrim",
8765
+ options: [{
8766
+ id: "neutral-scrim",
8767
+ label: "Neutral scrim",
8768
+ designPatch: { imageSurfaceTreatment: {
8679
8769
  kind: "neutral-scrim",
8680
8770
  intensity: "balanced"
8681
- }
8682
- }
8683
- }),
8684
- defineBlockAppearancePreset({
8685
- kind: "block-design",
8686
- id: "hero-poster-image",
8687
- target: "hero",
8688
- label: "Poster image hero",
8689
- blockKinds: ["block.hero"],
8690
- constraints: { layoutFamilies: ["centered", "compact"] },
8691
- layoutPatches: [{
8692
- constraints: { layoutVariantKeys: ["micro"] },
8693
- designPatch: {
8694
- sectionHeight: "banner",
8695
- heroTypographyScale: "display"
8696
- }
8697
- }],
8698
- design: {
8699
- sectionSurface: "hero-image",
8700
- contentFrame: plainFrame,
8701
- itemSurface: "none",
8702
- sectionHeight: "immersive",
8703
- heroComposition: "center",
8704
- heroTypographyScale: "poster",
8705
- imageSurfaceTreatment: {
8771
+ } }
8772
+ }, {
8773
+ id: "brand-scrim-primary",
8774
+ label: "Brand scrim",
8775
+ designPatch: { imageSurfaceTreatment: {
8706
8776
  kind: "brand-scrim",
8707
8777
  token: "primary",
8708
- intensity: "strong"
8709
- }
8710
- }
8711
- }),
8712
- defineBlockAppearancePreset({
8713
- kind: "block-design",
8714
- id: "hero-brand-scrim",
8715
- target: "hero",
8716
- label: "Brand scrim image hero",
8717
- blockKinds: ["block.hero"],
8718
- constraints: { layoutFamilies: ["centered", "compact"] },
8719
- optionGroups: [{
8720
- id: "image-surface-treatment",
8721
- label: "Treatment",
8722
- selectedOptionId: "brand-scrim-primary",
8723
- options: [{
8724
- id: "brand-scrim-primary",
8725
- label: "Brand scrim",
8726
- designPatch: { imageSurfaceTreatment: {
8727
- kind: "brand-scrim",
8728
- token: "primary"
8729
- } }
8730
- }, {
8731
- id: "neutral-scrim",
8732
- label: "Neutral scrim",
8733
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8734
- }]
8735
- }],
8736
- layoutPatches: [{
8737
- constraints: { layoutVariantKeys: ["micro"] },
8738
- designPatch: { sectionHeight: "banner" }
8739
- }],
8740
- design: {
8741
- sectionSurface: "hero-image",
8742
- contentFrame: plainFrame,
8743
- itemSurface: "none",
8744
- sectionHeight: "immersive",
8745
- heroComposition: "center",
8746
- heroTypographyScale: "display",
8747
- imageSurfaceTreatment: {
8748
- kind: "brand-scrim",
8749
- token: "primary"
8750
- }
8751
- }
8752
- }),
8753
- defineBlockAppearancePreset({
8754
- kind: "block-design",
8755
- id: "hero-brand-scrim-fixed-frame",
8756
- target: "hero",
8757
- label: "Fixed-frame brand scrim hero",
8758
- blockKinds: ["block.hero"],
8759
- constraints: { layoutFamilies: ["centered", "compact"] },
8760
- optionGroups: [{
8761
- id: "image-surface-treatment",
8762
- label: "Treatment",
8763
- selectedOptionId: "brand-scrim-primary",
8764
- options: [{
8765
- id: "brand-scrim-primary",
8766
- label: "Brand scrim",
8767
- designPatch: { imageSurfaceTreatment: {
8768
- kind: "brand-scrim",
8769
- token: "primary"
8770
- } }
8771
- }, {
8772
- id: "neutral-scrim",
8773
- label: "Neutral scrim",
8774
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8775
- }]
8776
- }],
8777
- layoutPatches: [{
8778
- constraints: { layoutVariantKeys: ["micro"] },
8779
- designPatch: { sectionHeight: "banner" }
8780
- }],
8781
- design: {
8782
- sectionSurface: "hero-image",
8783
- contentFrame: plainFrame,
8784
- itemSurface: "none",
8785
- sectionHeight: "immersive",
8786
- heroComposition: "center",
8787
- heroTypographyScale: "display",
8788
- imageSurfaceTreatment: {
8789
- kind: "brand-scrim",
8790
- token: "primary"
8791
- },
8792
- imageSurfaceMotion: "fixed-frame",
8793
- eyebrowTreatment: "accent-pill-bounce"
8794
- }
8795
- }),
8796
- defineBlockAppearancePreset({
8797
- kind: "block-design",
8798
- id: "hero-brand-depth-expressive",
8799
- target: "hero",
8800
- label: "Expressive brand-depth hero",
8801
- blockKinds: ["block.hero"],
8802
- constraints: { layoutFamilies: ["centered", "compact"] },
8803
- design: {
8804
- sectionSurface: "brand-depth-band",
8805
- contentFrame: plainFrame,
8806
- itemSurface: "none",
8807
- heroComposition: "center",
8808
- heroTypographyScale: "editorial",
8809
- eyebrowTreatment: "accent-pill-bounce"
8810
- }
8811
- }),
8812
- defineBlockAppearancePreset({
8813
- kind: "block-design",
8814
- id: "hero-contained-intro",
8815
- target: "hero",
8816
- label: "Contained intro hero",
8817
- blockKinds: ["block.hero"],
8818
- design: {
8819
- sectionSurface: "muted-band",
8820
- contentFrame: panelFrame("inset"),
8821
- itemSurface: "none",
8822
- heroComposition: "center",
8823
- heroTypographyScale: "editorial"
8824
- }
8825
- }),
8826
- defineBlockAppearancePreset({
8827
- kind: "block-design",
8828
- id: "hero-split-editorial",
8829
- target: "hero",
8830
- label: "Editorial split hero",
8831
- blockKinds: ["block.hero"],
8832
- constraints: { layoutFamilies: ["split"] },
8833
- design: {
8834
- sectionSurface: "base",
8835
- contentFrame: plainFrame,
8836
- itemSurface: "none",
8837
- heroTypographyScale: "editorial"
8838
- }
8839
- }),
8840
- defineBlockAppearancePreset({
8841
- kind: "block-design",
8842
- id: "hero-split-brand",
8843
- target: "hero",
8844
- label: "Brand split hero",
8845
- blockKinds: ["block.hero"],
8846
- constraints: { layoutFamilies: ["split"] },
8847
- design: {
8848
- sectionSurface: "brand-depth-band",
8849
- contentFrame: plainFrame,
8850
- itemSurface: "none",
8851
- heroTypographyScale: "display",
8852
- eyebrowTreatment: "accent-pill-bounce"
8853
- }
8854
- }),
8855
- defineBlockAppearancePreset({
8856
- kind: "block-design",
8857
- id: "hero-split-soft-panel",
8858
- target: "hero",
8859
- label: "Soft panel split hero",
8860
- blockKinds: ["block.hero"],
8861
- constraints: { layoutFamilies: ["split"] },
8862
- design: {
8863
- sectionSurface: "muted-band",
8864
- contentFrame: panelFrame("raised"),
8865
- itemSurface: "none",
8778
+ intensity: "balanced"
8779
+ } }
8780
+ }]
8781
+ }],
8782
+ layoutPatches: [{
8783
+ constraints: { layoutVariantKeys: ["micro"] },
8784
+ designPatch: {
8785
+ sectionHeight: "banner",
8866
8786
  heroTypographyScale: "editorial"
8867
8787
  }
8868
- }),
8869
- defineBlockAppearancePreset({
8870
- kind: "block-design",
8871
- id: "hero-split-accent",
8872
- target: "hero",
8873
- label: "Accent split hero",
8874
- blockKinds: ["block.hero"],
8875
- constraints: { layoutFamilies: ["split"] },
8876
- design: {
8877
- sectionSurface: "accent-band",
8878
- contentFrame: panelFrame("raised"),
8879
- itemSurface: "none",
8788
+ }],
8789
+ design: {
8790
+ sectionSurface: "hero-image",
8791
+ contentFrame: panelFrame("raised"),
8792
+ itemSurface: "none",
8793
+ sectionHeight: "immersive",
8794
+ heroComposition: "bottom-left",
8795
+ heroTypographyScale: "display",
8796
+ imageSurfaceTreatment: {
8797
+ kind: "neutral-scrim",
8798
+ intensity: "balanced"
8799
+ }
8800
+ }
8801
+ }), defineBlockAppearancePreset({
8802
+ id: "hero-poster-image",
8803
+ target: "hero",
8804
+ label: "Poster image hero",
8805
+ blockKinds: ["block.hero"],
8806
+ constraints: { layoutFamilies: ["centered", "compact"] },
8807
+ layoutPatches: [{
8808
+ constraints: { layoutVariantKeys: ["micro"] },
8809
+ designPatch: {
8810
+ sectionHeight: "banner",
8880
8811
  heroTypographyScale: "display"
8881
8812
  }
8882
- }),
8883
- defineBlockAppearancePreset({
8884
- kind: "block-design",
8885
- id: "intro-editorial-statement",
8886
- target: "intro",
8887
- label: "Editorial intro statement",
8888
- blockKinds: ["block.intro"],
8889
- constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
8890
- design: {
8891
- sectionSurface: "base",
8892
- contentFrame: plainFrame,
8893
- itemSurface: "none",
8894
- composition: {
8895
- kind: "intro",
8896
- treatment: "editorial-statement"
8897
- }
8898
- }
8899
- }),
8900
- defineBlockAppearancePreset({
8901
- kind: "block-design",
8902
- id: "intro-portrait-bio",
8903
- target: "intro",
8904
- label: "Portrait and bio",
8905
- blockKinds: ["block.intro"],
8906
- constraints: { layoutVariantKeys: ["media-copy"] },
8907
- design: {
8908
- sectionSurface: "base",
8909
- contentFrame: plainFrame,
8910
- itemSurface: "none",
8911
- composition: {
8912
- kind: "intro",
8913
- treatment: "portrait-bio"
8914
- }
8915
- }
8916
- }),
8917
- defineBlockAppearancePreset({
8918
- kind: "block-design",
8919
- id: "offerings-preview-default-cards",
8920
- target: "offerings",
8921
- label: "Default offering cards",
8922
- blockKinds: ["block.offerings-preview"],
8923
- design: {
8924
- sectionSurface: "base",
8925
- contentFrame: plainFrame,
8926
- itemSurface: "default"
8927
- }
8928
- }),
8929
- defineBlockAppearancePreset({
8930
- kind: "block-design",
8931
- id: "offerings-preview-secondary-cards",
8932
- target: "offerings",
8933
- label: "Secondary offering cards",
8934
- blockKinds: ["block.offerings-preview"],
8935
- design: {
8936
- sectionSurface: "muted-band",
8937
- contentFrame: plainFrame,
8938
- itemSurface: "inset"
8939
- }
8940
- }),
8941
- defineBlockAppearancePreset({
8942
- kind: "block-design",
8943
- id: "offerings-preview-non-carded",
8944
- target: "offerings",
8945
- label: "Non-carded offerings",
8946
- blockKinds: ["block.offerings-preview"],
8947
- design: {
8948
- sectionSurface: "muted-band",
8949
- contentFrame: plainFrame,
8950
- itemSurface: "editorial"
8951
- }
8952
- }),
8953
- defineBlockAppearancePreset({
8954
- kind: "block-design",
8955
- id: "offerings-preview-paired-feature-cards",
8956
- target: "offerings",
8957
- label: "Paired feature cards",
8958
- blockKinds: ["block.offerings-preview"],
8959
- constraints: { layoutVariantKeys: ["cards"] },
8960
- design: {
8961
- sectionSurface: "base",
8962
- contentFrame: plainFrame,
8963
- itemSurface: "none"
8964
- }
8965
- }),
8966
- defineBlockAppearancePreset({
8967
- kind: "block-design",
8968
- id: "offerings-preview-open-editorial-columns",
8969
- target: "offerings",
8970
- label: "Open editorial columns",
8971
- blockKinds: ["block.offerings-preview"],
8972
- constraints: { layoutVariantKeys: ["cards"] },
8973
- design: {
8974
- sectionSurface: "base",
8975
- contentFrame: plainFrame,
8976
- itemSurface: "none"
8977
- }
8978
- }),
8979
- defineBlockAppearancePreset({
8980
- kind: "block-design",
8981
- id: "offerings-preview-joined-programme-panel",
8982
- target: "offerings",
8983
- label: "Joined programme panel",
8984
- blockKinds: ["block.offerings-preview"],
8985
- constraints: { layoutVariantKeys: ["cards"] },
8986
- design: {
8987
- sectionSurface: "base",
8988
- contentFrame: plainFrame,
8989
- itemSurface: "none"
8990
- }
8991
- }),
8992
- defineBlockAppearancePreset({
8993
- kind: "block-design",
8994
- id: "feature-cards-raised-rule",
8995
- target: "feature-cards",
8996
- label: "Raised cards with rule",
8997
- blockKinds: ["block.feature-cards"],
8998
- design: {
8999
- sectionSurface: "base",
9000
- contentFrame: plainFrame,
9001
- itemSurface: "raised"
9002
- }
9003
- }),
9004
- defineBlockAppearancePreset({
9005
- kind: "block-design",
9006
- id: "feature-cards-bold-colors",
9007
- target: "feature-cards",
9008
- label: "Bold colour-blocked cards",
9009
- blockKinds: ["block.feature-cards"],
9010
- design: {
9011
- sectionSurface: "base",
9012
- contentFrame: plainFrame,
9013
- itemSurface: "color-blocked"
9014
- }
9015
- }),
9016
- defineBlockAppearancePreset({
9017
- kind: "block-design",
9018
- id: "feature-cards-editorial-columns",
9019
- target: "feature-cards",
9020
- label: "Editorial open columns",
9021
- blockKinds: ["block.feature-cards"],
9022
- design: {
9023
- sectionSurface: "base",
9024
- contentFrame: plainFrame,
9025
- itemSurface: "editorial"
9026
- }
9027
- }),
9028
- defineBlockAppearancePreset({
9029
- kind: "block-design",
9030
- id: "feature-cards-asymmetric-emphasis",
9031
- target: "feature-cards",
9032
- label: "Asymmetric emphasis pair",
9033
- blockKinds: ["block.feature-cards"],
9034
- constraints: { layoutFamilies: ["grid"] },
9035
- design: {
9036
- sectionSurface: "base",
9037
- contentFrame: plainFrame,
9038
- itemSurface: "none",
9039
- composition: {
9040
- kind: "feature-cards",
9041
- treatment: "asymmetric-emphasis"
9042
- }
9043
- }
9044
- }),
9045
- defineBlockAppearancePreset({
9046
- kind: "block-design",
9047
- id: "feature-cards-framed-programme",
9048
- target: "feature-cards",
9049
- label: "Framed programme cards",
9050
- blockKinds: ["block.feature-cards"],
9051
- constraints: { layoutFamilies: ["grid"] },
9052
- design: {
9053
- sectionSurface: "brand-depth-band",
9054
- contentFrame: plainFrame,
9055
- itemSurface: "inset",
9056
- composition: {
9057
- kind: "feature-cards",
9058
- treatment: "framed-programme"
9059
- }
9060
- }
9061
- }),
9062
- defineBlockAppearancePreset({
9063
- kind: "block-design",
9064
- id: "feature-cards-soft-panels",
9065
- target: "feature-cards",
9066
- label: "Soft tinted panels",
9067
- blockKinds: ["block.feature-cards"],
9068
- design: {
9069
- sectionSurface: "base",
9070
- contentFrame: plainFrame,
9071
- itemSurface: "inset"
9072
- }
9073
- }),
9074
- defineBlockAppearancePreset({
9075
- kind: "block-design",
9076
- id: "feature-cards-editorial-diptych",
9077
- target: "feature-cards",
9078
- label: "Editorial diptych",
9079
- blockKinds: ["block.feature-cards"],
9080
- constraints: { layoutVariantKeys: ["editorial-diptych"] },
9081
- design: {
9082
- sectionSurface: "base",
9083
- contentFrame: plainFrame,
9084
- itemSurface: "flat"
9085
- }
9086
- }),
9087
- defineBlockAppearancePreset({
9088
- kind: "block-design",
9089
- id: "feature-cards-editorial-pathways",
9090
- target: "feature-cards",
9091
- label: "Editorial pathways",
9092
- blockKinds: ["block.feature-cards"],
9093
- constraints: { layoutVariantKeys: ["editorial-pathways"] },
9094
- design: {
9095
- sectionSurface: "base",
9096
- contentFrame: plainFrame,
9097
- itemSurface: "flat"
9098
- }
9099
- }),
9100
- defineBlockAppearancePreset({
9101
- kind: "block-design",
9102
- id: "feature-cards-photo-tiles",
9103
- target: "feature-cards",
9104
- label: "Photo tiles",
9105
- blockKinds: ["block.feature-cards"],
9106
- design: {
9107
- sectionSurface: "base",
9108
- contentFrame: plainFrame,
9109
- itemSurface: "raised"
9110
- }
9111
- }),
9112
- defineBlockAppearancePreset({
9113
- kind: "block-design",
9114
- id: "events-lined-panel",
9115
- target: "events",
9116
- label: "Raised event panel",
9117
- blockKinds: ["block.event-calendar", "block.event-listing"],
9118
- design: {
9119
- sectionSurface: "base",
9120
- contentFrame: panelFrame("raised"),
9121
- itemSurface: "none"
9122
- }
9123
- }),
9124
- defineBlockAppearancePreset({
9125
- kind: "block-design",
9126
- id: "events-ruled-register",
9127
- target: "events",
9128
- label: "Ruled event register",
9129
- blockKinds: ["block.event-calendar", "block.event-listing"],
9130
- design: {
9131
- sectionSurface: "brand-depth-band",
9132
- contentFrame: plainFrame,
9133
- itemSurface: "none",
9134
- eventListTreatment: "ruled-register"
9135
- }
9136
- }),
9137
- defineBlockAppearancePreset({
9138
- kind: "block-design",
9139
- id: "events-editorial-register",
9140
- target: "events",
9141
- label: "Editorial event register",
9142
- blockKinds: ["block.event-calendar", "block.event-listing"],
9143
- design: {
9144
- sectionSurface: "base",
9145
- contentFrame: plainFrame,
9146
- itemSurface: "none",
9147
- eventListTreatment: "editorial-register"
9148
- }
9149
- }),
9150
- defineBlockAppearancePreset({
9151
- kind: "block-design",
9152
- id: "events-dense-index",
9153
- target: "events",
9154
- label: "Dense event index",
9155
- blockKinds: ["block.event-calendar", "block.event-listing"],
9156
- design: {
9157
- sectionSurface: "accent-band",
9158
- contentFrame: plainFrame,
9159
- itemSurface: "none",
9160
- eventListTreatment: "dense-index"
9161
- }
9162
- }),
9163
- defineBlockAppearancePreset({
9164
- kind: "block-design",
9165
- id: "schedule-details-brand-depth",
9166
- target: "events",
9167
- label: "Brand-depth schedule details",
9168
- blockKinds: ["block.event-details", "block.course-details"],
9169
- design: {
9170
- sectionSurface: "brand-depth-band",
9171
- contentFrame: plainFrame,
9172
- itemSurface: "none",
9173
- tileTreatment: "brand-depth"
9174
- }
9175
- }),
9176
- defineBlockAppearancePreset({
9177
- kind: "block-design",
9178
- id: "media-text-flush-feature",
9179
- target: "media-text",
9180
- label: "Flush media feature",
9181
- blockKinds: ["block.media-text"],
9182
- design: {
9183
- sectionSurface: "muted-band",
9184
- contentFrame: flushPanelFrame({ bleed: "start" }),
9185
- itemSurface: "none"
9186
- }
9187
- }),
9188
- defineBlockAppearancePreset({
9189
- kind: "block-design",
9190
- id: "testimonials-simple-cards",
9191
- target: "testimonials",
9192
- label: "Simple testimonial cards",
9193
- blockKinds: ["block.testimonials"],
9194
- design: {
9195
- sectionSurface: "base",
9196
- contentFrame: plainFrame,
9197
- itemSurface: "default"
9198
- }
9199
- }),
9200
- defineBlockAppearancePreset({
9201
- kind: "block-design",
9202
- id: "testimonials-raised-panel",
9203
- target: "testimonials",
9204
- label: "Raised testimonial panel",
9205
- blockKinds: ["block.testimonials"],
9206
- design: {
9207
- sectionSurface: "muted-band",
9208
- contentFrame: panelFrame("raised"),
9209
- itemSurface: "raised"
9210
- }
9211
- }),
9212
- defineBlockAppearancePreset({
9213
- kind: "block-design",
9214
- id: "testimonials-accent-panel",
9215
- target: "testimonials",
9216
- label: "Accent testimonial panel",
9217
- blockKinds: ["block.testimonials"],
9218
- design: {
9219
- sectionSurface: "accent-band",
9220
- contentFrame: panelFrame("raised"),
9221
- itemSurface: "raised"
9222
- }
9223
- }),
9224
- defineBlockAppearancePreset({
9225
- kind: "block-design",
9226
- id: "testimonials-default-cards",
9227
- target: "testimonials",
9228
- label: "Default cards",
9229
- blockKinds: ["block.testimonials"],
9230
- design: {
9231
- sectionSurface: "base",
9232
- contentFrame: plainFrame,
9233
- itemSurface: "none",
9234
- testimonialCardTreatment: "default"
9235
- }
9236
- }),
9237
- defineBlockAppearancePreset({
9238
- kind: "block-design",
9239
- id: "testimonials-statement-cards",
9240
- target: "testimonials",
9241
- label: "Statement cards",
9242
- blockKinds: ["block.testimonials"],
9243
- design: {
9244
- sectionSurface: "accent-band",
9245
- contentFrame: plainFrame,
9246
- itemSurface: "raised",
9247
- testimonialCardTreatment: "statement"
9248
- }
9249
- }),
9250
- defineBlockAppearancePreset({
9251
- kind: "block-design",
9252
- id: "testimonials-brand-statement-cards",
9253
- target: "testimonials",
9254
- label: "Brand statement cards",
9255
- blockKinds: ["block.testimonials"],
9256
- design: {
9257
- sectionSurface: "brand-depth-band",
9258
- contentFrame: plainFrame,
9259
- itemSurface: "raised",
9260
- testimonialCardTreatment: "statement"
9261
- }
9262
- }),
9263
- defineBlockAppearancePreset({
9264
- kind: "block-design",
9265
- id: "testimonials-non-carded",
9266
- target: "testimonials",
9267
- label: "Non-carded",
9268
- blockKinds: ["block.testimonials"],
9269
- design: {
9270
- sectionSurface: "muted-band",
9271
- contentFrame: plainFrame,
9272
- itemSurface: "none",
9273
- testimonialCardTreatment: "non-carded"
9274
- }
9275
- }),
9276
- defineBlockAppearancePreset({
9277
- kind: "block-design",
9278
- id: "testimonials-evergreen-lead",
9279
- target: "testimonials",
9280
- label: "Evergreen lead",
9281
- blockKinds: ["block.testimonials"],
9282
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9283
- design: {
9284
- sectionSurface: "base",
9285
- contentFrame: plainFrame,
9286
- itemSurface: "none"
9287
- }
9288
- }),
9289
- defineBlockAppearancePreset({
9290
- kind: "block-design",
9291
- id: "testimonials-room-and-response",
9292
- target: "testimonials",
9293
- label: "Room and response",
9294
- blockKinds: ["block.testimonials"],
9295
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9296
- design: {
9297
- sectionSurface: "base",
9298
- contentFrame: plainFrame,
9299
- itemSurface: "none"
9300
- }
9301
- }),
9302
- defineBlockAppearancePreset({
9303
- kind: "block-design",
9304
- id: "testimonials-open-floor",
9305
- target: "testimonials",
9306
- label: "Open floor",
9307
- blockKinds: ["block.testimonials"],
9308
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9309
- design: {
9310
- sectionSurface: "base",
9311
- contentFrame: plainFrame,
9312
- itemSurface: "none"
9313
- }
9314
- }),
9315
- defineBlockAppearancePreset({
9316
- kind: "block-design",
9317
- id: "faq-base-accordion",
9318
- target: "faq",
9319
- label: "Base accordion FAQ",
9320
- blockKinds: ["block.faq"],
9321
- design: {
9322
- sectionSurface: "base",
9323
- contentFrame: plainFrame,
9324
- itemSurface: "default"
9325
- }
9326
- }),
9327
- defineBlockAppearancePreset({
9328
- kind: "block-design",
9329
- id: "faq-contained-help",
9330
- target: "faq",
9331
- label: "Contained help panel",
9332
- blockKinds: ["block.faq"],
9333
- design: {
9334
- sectionSurface: "muted-band",
9335
- contentFrame: panelFrame("inset"),
9336
- itemSurface: "default"
9337
- }
9338
- }),
9339
- defineBlockAppearancePreset({
9340
- kind: "block-design",
9341
- id: "contact-form-panel",
9342
- target: "contact-form",
9343
- label: "Raised form panel",
9344
- blockKinds: ["block.form"],
9345
- design: {
9346
- sectionSurface: "muted-band",
9347
- contentFrame: panelFrame("raised"),
9348
- itemSurface: "none"
9349
- }
9350
- }),
9351
- defineBlockAppearancePreset({
9352
- kind: "block-design",
9353
- id: "cta-accent-band",
9354
- target: "cta",
9355
- label: "Accent CTA band",
9356
- blockKinds: ["block.cta-full"],
9357
- design: {
9358
- sectionSurface: "accent-band",
9359
- contentFrame: plainFrame,
9360
- itemSurface: "none",
9361
- eyebrowTreatment: "accent"
9362
- }
9363
- })
9364
- ]];
8813
+ }],
8814
+ design: {
8815
+ sectionSurface: "hero-image",
8816
+ contentFrame: plainFrame,
8817
+ itemSurface: "none",
8818
+ sectionHeight: "immersive",
8819
+ heroComposition: "center",
8820
+ heroTypographyScale: "poster",
8821
+ imageSurfaceTreatment: {
8822
+ kind: "brand-scrim",
8823
+ token: "primary",
8824
+ intensity: "strong"
8825
+ }
8826
+ }
8827
+ }), defineBlockAppearancePreset({
8828
+ id: "hero-brand-scrim",
8829
+ target: "hero",
8830
+ label: "Brand scrim image hero",
8831
+ blockKinds: ["block.hero"],
8832
+ constraints: { layoutFamilies: ["centered", "compact"] },
8833
+ optionGroups: brandScrimOptionGroups,
8834
+ layoutPatches: microBannerLayoutPatches,
8835
+ design: {
8836
+ sectionSurface: "hero-image",
8837
+ contentFrame: plainFrame,
8838
+ itemSurface: "none",
8839
+ sectionHeight: "immersive",
8840
+ heroComposition: "center",
8841
+ heroTypographyScale: "display",
8842
+ imageSurfaceTreatment: {
8843
+ kind: "brand-scrim",
8844
+ token: "primary"
8845
+ }
8846
+ }
8847
+ }), defineBlockAppearancePreset({
8848
+ id: "hero-brand-scrim-fixed-frame",
8849
+ target: "hero",
8850
+ label: "Fixed-frame brand scrim hero",
8851
+ blockKinds: ["block.hero"],
8852
+ constraints: { layoutFamilies: ["centered", "compact"] },
8853
+ optionGroups: brandScrimOptionGroups,
8854
+ layoutPatches: microBannerLayoutPatches,
8855
+ design: {
8856
+ sectionSurface: "hero-image",
8857
+ contentFrame: plainFrame,
8858
+ itemSurface: "none",
8859
+ sectionHeight: "immersive",
8860
+ heroComposition: "center",
8861
+ heroTypographyScale: "display",
8862
+ imageSurfaceTreatment: {
8863
+ kind: "brand-scrim",
8864
+ token: "primary"
8865
+ },
8866
+ imageSurfaceMotion: "fixed-frame",
8867
+ eyebrowTreatment: "accent-pill-bounce"
8868
+ }
8869
+ }), defineBlockAppearancePreset({
8870
+ id: "hero-brand-depth-expressive",
8871
+ target: "hero",
8872
+ label: "Expressive brand-depth hero",
8873
+ blockKinds: ["block.hero"],
8874
+ constraints: { layoutFamilies: ["centered", "compact"] },
8875
+ design: {
8876
+ sectionSurface: "brand-depth-band",
8877
+ contentFrame: plainFrame,
8878
+ itemSurface: "none",
8879
+ heroComposition: "center",
8880
+ heroTypographyScale: "editorial",
8881
+ eyebrowTreatment: "accent-pill-bounce"
8882
+ }
8883
+ }), defineBlockAppearancePreset({
8884
+ id: "hero-contained-intro",
8885
+ target: "hero",
8886
+ label: "Contained intro hero",
8887
+ blockKinds: ["block.hero"],
8888
+ design: {
8889
+ sectionSurface: "muted-band",
8890
+ contentFrame: panelFrame("inset"),
8891
+ itemSurface: "none",
8892
+ heroComposition: "center",
8893
+ heroTypographyScale: "editorial"
8894
+ }
8895
+ }), defineBlockAppearancePreset({
8896
+ id: "hero-split-editorial",
8897
+ target: "hero",
8898
+ label: "Editorial split hero",
8899
+ blockKinds: ["block.hero"],
8900
+ constraints: { layoutFamilies: ["split"] },
8901
+ design: {
8902
+ sectionSurface: "base",
8903
+ contentFrame: plainFrame,
8904
+ itemSurface: "none",
8905
+ heroTypographyScale: "editorial"
8906
+ }
8907
+ }), defineBlockAppearancePreset({
8908
+ id: "hero-split-brand",
8909
+ target: "hero",
8910
+ label: "Brand split hero",
8911
+ blockKinds: ["block.hero"],
8912
+ constraints: { layoutFamilies: ["split"] },
8913
+ design: {
8914
+ sectionSurface: "brand-depth-band",
8915
+ contentFrame: plainFrame,
8916
+ itemSurface: "none",
8917
+ heroTypographyScale: "display",
8918
+ eyebrowTreatment: "accent-pill-bounce"
8919
+ }
8920
+ }), defineBlockAppearancePreset({
8921
+ id: "hero-split-soft-panel",
8922
+ target: "hero",
8923
+ label: "Soft panel split hero",
8924
+ blockKinds: ["block.hero"],
8925
+ constraints: { layoutFamilies: ["split"] },
8926
+ design: {
8927
+ sectionSurface: "muted-band",
8928
+ contentFrame: panelFrame("raised"),
8929
+ itemSurface: "none",
8930
+ heroTypographyScale: "editorial"
8931
+ }
8932
+ }), defineBlockAppearancePreset({
8933
+ id: "hero-split-accent",
8934
+ target: "hero",
8935
+ label: "Accent split hero",
8936
+ blockKinds: ["block.hero"],
8937
+ constraints: { layoutFamilies: ["split"] },
8938
+ design: {
8939
+ sectionSurface: "accent-band",
8940
+ contentFrame: panelFrame("raised"),
8941
+ itemSurface: "none",
8942
+ heroTypographyScale: "display"
8943
+ }
8944
+ }), defineBlockAppearancePreset({
8945
+ id: "intro-editorial-statement",
8946
+ target: "intro",
8947
+ label: "Editorial intro statement",
8948
+ blockKinds: ["block.intro"],
8949
+ constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
8950
+ design: {
8951
+ sectionSurface: "base",
8952
+ contentFrame: plainFrame,
8953
+ itemSurface: "none",
8954
+ composition: {
8955
+ kind: "intro",
8956
+ treatment: "editorial-statement"
8957
+ }
8958
+ }
8959
+ }), defineBlockAppearancePreset({
8960
+ id: "intro-portrait-bio",
8961
+ target: "intro",
8962
+ label: "Portrait and bio",
8963
+ blockKinds: ["block.intro"],
8964
+ constraints: { layoutVariantKeys: ["media-copy"] },
8965
+ design: {
8966
+ sectionSurface: "base",
8967
+ contentFrame: plainFrame,
8968
+ itemSurface: "none",
8969
+ composition: {
8970
+ kind: "intro",
8971
+ treatment: "portrait-bio"
8972
+ }
8973
+ }
8974
+ }), defineBlockAppearancePreset({
8975
+ id: "offerings-preview-default-cards",
8976
+ target: "offerings",
8977
+ label: "Default offering cards",
8978
+ blockKinds: ["block.offerings-preview"],
8979
+ design: {
8980
+ sectionSurface: "base",
8981
+ contentFrame: plainFrame,
8982
+ itemSurface: "default"
8983
+ }
8984
+ }), defineBlockAppearancePreset({
8985
+ id: "offerings-preview-secondary-cards",
8986
+ target: "offerings",
8987
+ label: "Secondary offering cards",
8988
+ blockKinds: ["block.offerings-preview"],
8989
+ design: {
8990
+ sectionSurface: "muted-band",
8991
+ contentFrame: plainFrame,
8992
+ itemSurface: "inset"
8993
+ }
8994
+ }), defineBlockAppearancePreset({
8995
+ id: "offerings-preview-non-carded",
8996
+ target: "offerings",
8997
+ label: "Non-carded offerings",
8998
+ blockKinds: ["block.offerings-preview"],
8999
+ design: {
9000
+ sectionSurface: "muted-band",
9001
+ contentFrame: plainFrame,
9002
+ itemSurface: "editorial"
9003
+ }
9004
+ }), defineBlockAppearancePreset({
9005
+ id: "offerings-preview-paired-feature-cards",
9006
+ target: "offerings",
9007
+ label: "Paired feature cards",
9008
+ blockKinds: ["block.offerings-preview"],
9009
+ constraints: { layoutVariantKeys: ["cards"] },
9010
+ design: {
9011
+ sectionSurface: "base",
9012
+ contentFrame: plainFrame,
9013
+ itemSurface: "none"
9014
+ }
9015
+ }), defineBlockAppearancePreset({
9016
+ id: "offerings-preview-open-editorial-columns",
9017
+ target: "offerings",
9018
+ label: "Open editorial columns",
9019
+ blockKinds: ["block.offerings-preview"],
9020
+ constraints: { layoutVariantKeys: ["cards"] },
9021
+ design: {
9022
+ sectionSurface: "base",
9023
+ contentFrame: plainFrame,
9024
+ itemSurface: "none"
9025
+ }
9026
+ }), defineBlockAppearancePreset({
9027
+ id: "offerings-preview-joined-programme-panel",
9028
+ target: "offerings",
9029
+ label: "Joined programme panel",
9030
+ blockKinds: ["block.offerings-preview"],
9031
+ constraints: { layoutVariantKeys: ["cards"] },
9032
+ design: {
9033
+ sectionSurface: "base",
9034
+ contentFrame: plainFrame,
9035
+ itemSurface: "none"
9036
+ }
9037
+ }), defineBlockAppearancePreset({
9038
+ id: "feature-cards-raised-rule",
9039
+ target: "feature-cards",
9040
+ label: "Raised cards with rule",
9041
+ blockKinds: ["block.feature-cards"],
9042
+ design: {
9043
+ sectionSurface: "base",
9044
+ contentFrame: plainFrame,
9045
+ itemSurface: "raised"
9046
+ }
9047
+ }), defineBlockAppearancePreset({
9048
+ id: "feature-cards-bold-colors",
9049
+ target: "feature-cards",
9050
+ label: "Bold colour-blocked cards",
9051
+ blockKinds: ["block.feature-cards"],
9052
+ design: {
9053
+ sectionSurface: "base",
9054
+ contentFrame: plainFrame,
9055
+ itemSurface: "color-blocked"
9056
+ }
9057
+ }), defineBlockAppearancePreset({
9058
+ id: "feature-cards-editorial-columns",
9059
+ target: "feature-cards",
9060
+ label: "Editorial open columns",
9061
+ blockKinds: ["block.feature-cards"],
9062
+ design: {
9063
+ sectionSurface: "base",
9064
+ contentFrame: plainFrame,
9065
+ itemSurface: "editorial"
9066
+ }
9067
+ }), defineBlockAppearancePreset({
9068
+ id: "feature-cards-asymmetric-emphasis",
9069
+ target: "feature-cards",
9070
+ label: "Asymmetric emphasis pair",
9071
+ blockKinds: ["block.feature-cards"],
9072
+ constraints: { layoutFamilies: ["grid"] },
9073
+ design: {
9074
+ sectionSurface: "base",
9075
+ contentFrame: plainFrame,
9076
+ itemSurface: "none",
9077
+ composition: {
9078
+ kind: "feature-cards",
9079
+ treatment: "asymmetric-emphasis"
9080
+ }
9081
+ }
9082
+ }), defineBlockAppearancePreset({
9083
+ id: "feature-cards-framed-programme",
9084
+ target: "feature-cards",
9085
+ label: "Framed programme cards",
9086
+ blockKinds: ["block.feature-cards"],
9087
+ constraints: { layoutFamilies: ["grid"] },
9088
+ design: {
9089
+ sectionSurface: "brand-depth-band",
9090
+ contentFrame: plainFrame,
9091
+ itemSurface: "inset",
9092
+ composition: {
9093
+ kind: "feature-cards",
9094
+ treatment: "framed-programme"
9095
+ }
9096
+ }
9097
+ }), defineBlockAppearancePreset({
9098
+ id: "feature-cards-soft-panels",
9099
+ target: "feature-cards",
9100
+ label: "Soft tinted panels",
9101
+ blockKinds: ["block.feature-cards"],
9102
+ design: {
9103
+ sectionSurface: "base",
9104
+ contentFrame: plainFrame,
9105
+ itemSurface: "inset"
9106
+ }
9107
+ }), defineBlockAppearancePreset({
9108
+ id: "feature-cards-editorial-diptych",
9109
+ target: "feature-cards",
9110
+ label: "Editorial diptych",
9111
+ blockKinds: ["block.feature-cards"],
9112
+ constraints: { layoutVariantKeys: ["editorial-diptych"] },
9113
+ design: {
9114
+ sectionSurface: "base",
9115
+ contentFrame: plainFrame,
9116
+ itemSurface: "flat"
9117
+ }
9118
+ }), defineBlockAppearancePreset({
9119
+ id: "feature-cards-editorial-pathways",
9120
+ target: "feature-cards",
9121
+ label: "Editorial pathways",
9122
+ blockKinds: ["block.feature-cards"],
9123
+ constraints: { layoutVariantKeys: ["editorial-pathways"] },
9124
+ design: {
9125
+ sectionSurface: "base",
9126
+ contentFrame: plainFrame,
9127
+ itemSurface: "flat"
9128
+ }
9129
+ }), defineBlockAppearancePreset({
9130
+ id: "feature-cards-photo-tiles",
9131
+ target: "feature-cards",
9132
+ label: "Photo tiles",
9133
+ blockKinds: ["block.feature-cards"],
9134
+ design: {
9135
+ sectionSurface: "base",
9136
+ contentFrame: plainFrame,
9137
+ itemSurface: "raised"
9138
+ }
9139
+ }), defineBlockAppearancePreset({
9140
+ id: "events-lined-panel",
9141
+ target: "events",
9142
+ label: "Raised event panel",
9143
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9144
+ design: {
9145
+ sectionSurface: "base",
9146
+ contentFrame: panelFrame("raised"),
9147
+ itemSurface: "none"
9148
+ }
9149
+ }), defineBlockAppearancePreset({
9150
+ id: "events-ruled-register",
9151
+ target: "events",
9152
+ label: "Ruled event register",
9153
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9154
+ design: {
9155
+ sectionSurface: "brand-depth-band",
9156
+ contentFrame: plainFrame,
9157
+ itemSurface: "none",
9158
+ eventListTreatment: "ruled-register"
9159
+ }
9160
+ }), defineBlockAppearancePreset({
9161
+ id: "events-editorial-register",
9162
+ target: "events",
9163
+ label: "Editorial event register",
9164
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9165
+ design: {
9166
+ sectionSurface: "base",
9167
+ contentFrame: plainFrame,
9168
+ itemSurface: "none",
9169
+ eventListTreatment: "editorial-register"
9170
+ }
9171
+ }), defineBlockAppearancePreset({
9172
+ id: "events-dense-index",
9173
+ target: "events",
9174
+ label: "Dense event index",
9175
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9176
+ design: {
9177
+ sectionSurface: "accent-band",
9178
+ contentFrame: plainFrame,
9179
+ itemSurface: "none",
9180
+ eventListTreatment: "dense-index"
9181
+ }
9182
+ }), defineBlockAppearancePreset({
9183
+ id: "schedule-details-brand-depth",
9184
+ target: "events",
9185
+ label: "Brand-depth schedule details",
9186
+ blockKinds: ["block.event-details", "block.course-details"],
9187
+ design: {
9188
+ sectionSurface: "brand-depth-band",
9189
+ contentFrame: plainFrame,
9190
+ itemSurface: "none",
9191
+ tileTreatment: "brand-depth"
9192
+ }
9193
+ }), defineBlockAppearancePreset({
9194
+ id: "media-text-flush-feature",
9195
+ target: "media-text",
9196
+ label: "Flush media feature",
9197
+ blockKinds: ["block.media-text"],
9198
+ design: {
9199
+ sectionSurface: "muted-band",
9200
+ contentFrame: flushPanelFrame({ bleed: "start" }),
9201
+ itemSurface: "none"
9202
+ }
9203
+ }), defineBlockAppearancePreset({
9204
+ id: "testimonials-simple-cards",
9205
+ target: "testimonials",
9206
+ label: "Simple testimonial cards",
9207
+ blockKinds: ["block.testimonials"],
9208
+ design: {
9209
+ sectionSurface: "base",
9210
+ contentFrame: plainFrame,
9211
+ itemSurface: "default"
9212
+ }
9213
+ }), defineBlockAppearancePreset({
9214
+ id: "testimonials-raised-panel",
9215
+ target: "testimonials",
9216
+ label: "Raised testimonial panel",
9217
+ blockKinds: ["block.testimonials"],
9218
+ design: {
9219
+ sectionSurface: "muted-band",
9220
+ contentFrame: panelFrame("raised"),
9221
+ itemSurface: "raised"
9222
+ }
9223
+ }), defineBlockAppearancePreset({
9224
+ id: "testimonials-accent-panel",
9225
+ target: "testimonials",
9226
+ label: "Accent testimonial panel",
9227
+ blockKinds: ["block.testimonials"],
9228
+ design: {
9229
+ sectionSurface: "accent-band",
9230
+ contentFrame: panelFrame("raised"),
9231
+ itemSurface: "raised"
9232
+ }
9233
+ }), defineBlockAppearancePreset({
9234
+ id: "testimonials-default-cards",
9235
+ target: "testimonials",
9236
+ label: "Default cards",
9237
+ blockKinds: ["block.testimonials"],
9238
+ design: {
9239
+ sectionSurface: "base",
9240
+ contentFrame: plainFrame,
9241
+ itemSurface: "none",
9242
+ testimonialCardTreatment: "default"
9243
+ }
9244
+ }), defineBlockAppearancePreset({
9245
+ id: "testimonials-statement-cards",
9246
+ target: "testimonials",
9247
+ label: "Statement cards",
9248
+ blockKinds: ["block.testimonials"],
9249
+ design: {
9250
+ sectionSurface: "accent-band",
9251
+ contentFrame: plainFrame,
9252
+ itemSurface: "raised",
9253
+ testimonialCardTreatment: "statement"
9254
+ }
9255
+ }), defineBlockAppearancePreset({
9256
+ id: "testimonials-brand-statement-cards",
9257
+ target: "testimonials",
9258
+ label: "Brand statement cards",
9259
+ blockKinds: ["block.testimonials"],
9260
+ design: {
9261
+ sectionSurface: "brand-depth-band",
9262
+ contentFrame: plainFrame,
9263
+ itemSurface: "raised",
9264
+ testimonialCardTreatment: "statement"
9265
+ }
9266
+ }), defineBlockAppearancePreset({
9267
+ id: "testimonials-non-carded",
9268
+ target: "testimonials",
9269
+ label: "Non-carded",
9270
+ blockKinds: ["block.testimonials"],
9271
+ design: {
9272
+ sectionSurface: "muted-band",
9273
+ contentFrame: plainFrame,
9274
+ itemSurface: "none",
9275
+ testimonialCardTreatment: "non-carded"
9276
+ }
9277
+ }), defineBlockAppearancePreset({
9278
+ id: "testimonials-evergreen-lead",
9279
+ target: "testimonials",
9280
+ label: "Evergreen lead",
9281
+ blockKinds: ["block.testimonials"],
9282
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9283
+ design: {
9284
+ sectionSurface: "base",
9285
+ contentFrame: plainFrame,
9286
+ itemSurface: "none"
9287
+ }
9288
+ }), defineBlockAppearancePreset({
9289
+ id: "testimonials-room-and-response",
9290
+ target: "testimonials",
9291
+ label: "Room and response",
9292
+ blockKinds: ["block.testimonials"],
9293
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9294
+ design: {
9295
+ sectionSurface: "base",
9296
+ contentFrame: plainFrame,
9297
+ itemSurface: "none"
9298
+ }
9299
+ }), defineBlockAppearancePreset({
9300
+ id: "testimonials-open-floor",
9301
+ target: "testimonials",
9302
+ label: "Open floor",
9303
+ blockKinds: ["block.testimonials"],
9304
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9305
+ design: {
9306
+ sectionSurface: "base",
9307
+ contentFrame: plainFrame,
9308
+ itemSurface: "none"
9309
+ }
9310
+ }), defineBlockAppearancePreset({
9311
+ id: "faq-base-accordion",
9312
+ target: "faq",
9313
+ label: "Base accordion FAQ",
9314
+ blockKinds: ["block.faq"],
9315
+ design: {
9316
+ sectionSurface: "base",
9317
+ contentFrame: plainFrame,
9318
+ itemSurface: "default"
9319
+ }
9320
+ }), defineBlockAppearancePreset({
9321
+ id: "faq-contained-help",
9322
+ target: "faq",
9323
+ label: "Contained help panel",
9324
+ blockKinds: ["block.faq"],
9325
+ design: {
9326
+ sectionSurface: "muted-band",
9327
+ contentFrame: panelFrame("inset"),
9328
+ itemSurface: "default"
9329
+ }
9330
+ }), defineBlockAppearancePreset({
9331
+ id: "contact-form-panel",
9332
+ target: "contact-form",
9333
+ label: "Raised form panel",
9334
+ blockKinds: ["block.form"],
9335
+ design: {
9336
+ sectionSurface: "muted-band",
9337
+ contentFrame: panelFrame("raised"),
9338
+ itemSurface: "none"
9339
+ }
9340
+ }), defineBlockAppearancePreset({
9341
+ id: "cta-accent-band",
9342
+ target: "cta",
9343
+ label: "Accent CTA band",
9344
+ blockKinds: ["block.cta-full"],
9345
+ design: {
9346
+ sectionSurface: "accent-band",
9347
+ contentFrame: plainFrame,
9348
+ itemSurface: "none",
9349
+ eyebrowTreatment: "accent"
9350
+ }
9351
+ });
9365
9352
  //#endregion
9366
9353
  //#region ../theme-core/src/site-styles/headerCtaVariants.ts
9367
9354
  function hasButtonVariant(theme, variantId) {
@@ -9442,6 +9429,27 @@ function uniqueStrings(values) {
9442
9429
  return Array.from(new Set(values));
9443
9430
  }
9444
9431
  //#endregion
9432
+ //#region ../theme-core/src/site-styles/headerInteractionPalette.ts
9433
+ const clearSplitInteractionPalette = defineLookOptionGroup({
9434
+ id: "interaction-palette",
9435
+ label: "Hover colour",
9436
+ defaultOptionId: "accent",
9437
+ options: [
9438
+ {
9439
+ id: "accent",
9440
+ label: "Accent"
9441
+ },
9442
+ {
9443
+ id: "primary",
9444
+ label: "Primary"
9445
+ },
9446
+ {
9447
+ id: "secondary",
9448
+ label: "Secondary"
9449
+ }
9450
+ ]
9451
+ });
9452
+ //#endregion
9445
9453
  //#region ../theme-core/src/site-styles/headerLooks.ts
9446
9454
  function asHeaderLookId(value) {
9447
9455
  return value;
@@ -9575,7 +9583,7 @@ const overlayLogoAccommodations = [
9575
9583
  * optional nested styling fields that would otherwise leak from another Look.
9576
9584
  */
9577
9585
  function baseHeader(theme) {
9578
- const { navLinkStyle: _navLinkStyle, navFontRole: _navFontRole, navTypography: _navTypography, navTextSize: _navTextSize, dropdownStyle: _dropdownStyle, ctaVariant: _ctaVariant, navContainer: _navContainer, container: _container, shadow: _shadow, logo: _logo, logoText: _logoText, border: _border, ...header } = theme.header;
9586
+ const { navLinkStyle: _navLinkStyle, navFontRole: _navFontRole, navTypography: _navTypography, navTextSize: _navTextSize, interactionPalette: _interactionPalette, dropdownStyle: _dropdownStyle, ctaVariant: _ctaVariant, navContainer: _navContainer, container: _container, shadow: _shadow, logo: _logo, logoText: _logoText, border: _border, ...header } = theme.header;
9579
9587
  return {
9580
9588
  ...header,
9581
9589
  navContainer: {
@@ -9590,7 +9598,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9590
9598
  id: asHeaderLayoutId("classic"),
9591
9599
  label: "Classic",
9592
9600
  description: "Logo and navigation in one practical horizontal row.",
9593
- structure: "inline-classic",
9594
9601
  variant: "classic",
9595
9602
  defaultPositioning: "sticky",
9596
9603
  shrinkOnScroll: false
@@ -9599,7 +9606,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9599
9606
  id: asHeaderLayoutId("centered"),
9600
9607
  label: "Centered",
9601
9608
  description: "Logo centered above a balanced navigation row.",
9602
- structure: "centered-stack",
9603
9609
  variant: "centered",
9604
9610
  defaultPositioning: "static",
9605
9611
  shrinkOnScroll: false,
@@ -9615,7 +9621,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9615
9621
  id: asHeaderLayoutId("floating"),
9616
9622
  label: "Floating",
9617
9623
  description: "Detached header chrome that sits over the opening section.",
9618
- structure: "floating-shell",
9619
9624
  variant: "floating",
9620
9625
  defaultPositioning: "sticky",
9621
9626
  shrinkOnScroll: true,
@@ -9777,10 +9782,13 @@ const headerStyleCatalog = defineExactCatalog()([
9777
9782
  label: "Clear Split",
9778
9783
  description: "Floating logo with transparent navigation and no shared shell.",
9779
9784
  supportedLayoutIds: supportedLayouts(["floating"]),
9780
- navInteraction: "color-change",
9785
+ navInteraction: "pill-background",
9781
9786
  surface: "floating",
9782
- defaultDepth: "none",
9787
+ defaultDepth: "line",
9783
9788
  navTypography: "plain",
9789
+ openingForegroundTarget: "all",
9790
+ scrollTreatment: "contrast-glass",
9791
+ interactionPalette: clearSplitInteractionPalette,
9784
9792
  moods: ["editorial", "calm"]
9785
9793
  },
9786
9794
  {
@@ -9803,6 +9811,7 @@ const headerStyleCatalog = defineExactCatalog()([
9803
9811
  surface: "floating",
9804
9812
  defaultDepth: "shadow",
9805
9813
  navTypography: "quiet-caps",
9814
+ openingForegroundTarget: "brand-only",
9806
9815
  moods: ["expressive"]
9807
9816
  },
9808
9817
  {
@@ -9814,6 +9823,7 @@ const headerStyleCatalog = defineExactCatalog()([
9814
9823
  surface: "floating",
9815
9824
  defaultDepth: "shadow",
9816
9825
  navTypography: "heading",
9826
+ openingForegroundTarget: "brand-only",
9817
9827
  moods: ["calm", "editorial"]
9818
9828
  }
9819
9829
  ]);
@@ -10315,13 +10325,6 @@ const headerLookCatalog = defineExactCatalog()([
10315
10325
  {
10316
10326
  id: asHeaderLookId("clean-base"),
10317
10327
  label: "Clean base",
10318
- visualTreatment: "solid-neutral",
10319
- layoutBehavior: "sticky",
10320
- configuration: {
10321
- structure: "inline-classic",
10322
- treatment: "solid-neutral",
10323
- behavior: "sticky"
10324
- },
10325
10328
  openingRequirement: "none",
10326
10329
  logoAccommodations: inlineClassicLogoAccommodations,
10327
10330
  compile: cleanBaseHeader
@@ -10329,13 +10332,6 @@ const headerLookCatalog = defineExactCatalog()([
10329
10332
  {
10330
10333
  id: asHeaderLookId("classic-centered-nav"),
10331
10334
  label: "Centered nav",
10332
- visualTreatment: "solid-neutral",
10333
- layoutBehavior: "sticky",
10334
- configuration: {
10335
- structure: "inline-classic",
10336
- treatment: "solid-neutral",
10337
- behavior: "sticky"
10338
- },
10339
10335
  openingRequirement: "none",
10340
10336
  maxRecommendedNavItems: 6,
10341
10337
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -10344,13 +10340,6 @@ const headerLookCatalog = defineExactCatalog()([
10344
10340
  {
10345
10341
  id: asHeaderLookId("brand-solid"),
10346
10342
  label: "Brand solid",
10347
- visualTreatment: "solid-brand",
10348
- layoutBehavior: "sticky-shrink",
10349
- configuration: {
10350
- structure: "inline-classic",
10351
- treatment: "solid-brand",
10352
- behavior: "sticky-shrink"
10353
- },
10354
10343
  openingRequirement: "none",
10355
10344
  logoAccommodations: inlineClassicLogoAccommodations,
10356
10345
  compile: solidBrandHeader
@@ -10358,13 +10347,6 @@ const headerLookCatalog = defineExactCatalog()([
10358
10347
  {
10359
10348
  id: asHeaderLookId("serif-line"),
10360
10349
  label: "Serif line",
10361
- visualTreatment: "light-serif",
10362
- layoutBehavior: "sticky",
10363
- configuration: {
10364
- structure: "centered-stack",
10365
- treatment: "light-serif",
10366
- behavior: "sticky"
10367
- },
10368
10350
  openingRequirement: "none",
10369
10351
  maxRecommendedNavItems: 6,
10370
10352
  logoAccommodations: centeredLogoAccommodations,
@@ -10373,13 +10355,6 @@ const headerLookCatalog = defineExactCatalog()([
10373
10355
  {
10374
10356
  id: asHeaderLookId("centered-calm"),
10375
10357
  label: "Centered calm",
10376
- visualTreatment: "light-serif",
10377
- layoutBehavior: "normal-flow",
10378
- configuration: {
10379
- structure: "centered-stack",
10380
- treatment: "light-serif",
10381
- behavior: "normal-flow"
10382
- },
10383
10358
  openingRequirement: "none",
10384
10359
  maxRecommendedNavItems: 5,
10385
10360
  logoAccommodations: centeredLogoAccommodations,
@@ -10388,13 +10363,6 @@ const headerLookCatalog = defineExactCatalog()([
10388
10363
  {
10389
10364
  id: asHeaderLookId("practical-utility"),
10390
10365
  label: "Practical utility",
10391
- visualTreatment: "solid-neutral",
10392
- layoutBehavior: "sticky-shrink",
10393
- configuration: {
10394
- structure: "inline-classic",
10395
- treatment: "solid-neutral",
10396
- behavior: "sticky-shrink"
10397
- },
10398
10366
  openingRequirement: "none",
10399
10367
  requiresProminentCta: true,
10400
10368
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -10403,13 +10371,6 @@ const headerLookCatalog = defineExactCatalog()([
10403
10371
  {
10404
10372
  id: asHeaderLookId("minimal-transparent"),
10405
10373
  label: "Minimal transparent",
10406
- visualTreatment: "minimal-transparent",
10407
- layoutBehavior: "normal-flow",
10408
- configuration: {
10409
- structure: "inline-classic",
10410
- treatment: "minimal-transparent",
10411
- behavior: "normal-flow"
10412
- },
10413
10374
  openingRequirement: "reserved-space-ok",
10414
10375
  logoAccommodations: inlineClassicLogoAccommodations,
10415
10376
  compile: minimalTransparentHeader
@@ -10417,13 +10378,6 @@ const headerLookCatalog = defineExactCatalog()([
10417
10378
  {
10418
10379
  id: asHeaderLookId("transparent-overlay"),
10419
10380
  label: "Transparent overlay",
10420
- visualTreatment: "transparent-overlay",
10421
- layoutBehavior: "fixed-overlay",
10422
- configuration: {
10423
- structure: "inline-classic",
10424
- treatment: "transparent-overlay",
10425
- behavior: "fixed-overlay"
10426
- },
10427
10381
  openingRequirement: "requires-image-hero-with-contrast-overlay",
10428
10382
  maxRecommendedNavItems: 5,
10429
10383
  logoAccommodations: overlayLogoAccommodations,
@@ -10432,24 +10386,13 @@ const headerLookCatalog = defineExactCatalog()([
10432
10386
  {
10433
10387
  id: asHeaderLookId("floating-glass"),
10434
10388
  label: "Floating glass",
10435
- visualTreatment: "floating-glass",
10436
- layoutBehavior: "fixed-floating",
10437
- configuration: {
10438
- structure: "floating-shell",
10439
- treatment: "floating-glass",
10440
- behavior: "fixed-floating"
10441
- },
10442
10389
  openingRequirement: "requires-image-hero-with-contrast-overlay",
10443
10390
  maxRecommendedNavItems: 5,
10444
10391
  logoAccommodations: overlayLogoAccommodations,
10445
10392
  compile: floatingGlassHeader
10446
10393
  }
10447
10394
  ]);
10448
- new Set(headerLookCatalog.map((look) => headerConfigurationKey(look.configuration)));
10449
10395
  new Map(headerLookCatalog.map((look) => [look.id, look]));
10450
- function headerConfigurationKey(configuration) {
10451
- return `${configuration.structure}:${configuration.treatment}:${configuration.behavior}`;
10452
- }
10453
10396
  //#endregion
10454
10397
  //#region ../theme-core/src/site-styles/sectionTransitions.ts
10455
10398
  function boundaryRuntimeMetrics(family, size, heightExpression) {
@@ -14058,28 +14001,6 @@ z$1.object({
14058
14001
  spacing: z$1.enum(themeTokenRecipeOptions.spacing),
14059
14002
  motion: z$1.enum(themeTokenRecipeOptions.motion)
14060
14003
  });
14061
- const BREAKPOINT_LG = 1024;
14062
- const BREAKPOINT_XL = 1280;
14063
- const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
14064
- function mqUp(px) {
14065
- return `(min-width: ${px}px)`;
14066
- }
14067
- function mqDown(px) {
14068
- return `(max-width: ${px}px)`;
14069
- }
14070
- function mqBetween(minPx, maxPx) {
14071
- return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
14072
- }
14073
- mqUp(640);
14074
- mqUp(768);
14075
- mqUp(BREAKPOINT_LG);
14076
- mqUp(BREAKPOINT_XL);
14077
- mqDown(639);
14078
- mqDown(767);
14079
- mqDown(BREAKPOINT_LG_DOWN);
14080
- mqBetween(640, BREAKPOINT_LG_DOWN);
14081
- mqDown(640);
14082
- mqDown(768);
14083
14004
  //#endregion
14084
14005
  //#region ../theme-core/src/siteChromeOverlayClearance.ts
14085
14006
  const SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
@@ -18172,15 +18093,6 @@ const heroLayoutControlsFragment = defineFragment({
18172
18093
  */
18173
18094
  const BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
18174
18095
  const blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
18175
- /**
18176
- * Temporary rollout boundary for persisted content written before issue #1220.
18177
- * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
18178
- * only until the post-deploy role rewrite has been audited in production.
18179
- */
18180
- function canonicalizePersistedBlockButtonRole(value) {
18181
- return value === "link" || value === "tertiary" ? "ghost" : value;
18182
- }
18183
- const persistedBlockButtonRoleSchema = z$1.preprocess((value) => typeof value === "string" ? canonicalizePersistedBlockButtonRole(value) : value, blockButtonRoleSchema);
18184
18096
  const BLOCK_BUTTON_ROLE_LABELS = {
18185
18097
  primary: "Primary",
18186
18098
  secondary: "Secondary",
@@ -25422,6 +25334,12 @@ const mediaBaseSchema = z.object({
25422
25334
  poster: mediaPosterSchema.optional(),
25423
25335
  transform: transformSchema.optional()
25424
25336
  });
25337
+ /**
25338
+ * Canonical identifier carried by media values that are safe to persist.
25339
+ * Parsing trims boundary input so downstream writers cannot retain whitespace-only
25340
+ * identifiers or independently disagree about normalization.
25341
+ */
25342
+ const mediaIdentifierSchema = z.string().trim().min(1).brand();
25425
25343
  const imageMediaSchema = mediaBaseSchema.extend({ type: z.literal("image") });
25426
25344
  const videoMediaSchema = mediaBaseSchema.extend({ type: z.literal("video") });
25427
25345
  const audioMediaSchema = mediaBaseSchema.extend({ type: z.literal("audio") });
@@ -25436,6 +25354,15 @@ const mediaSchema = z.discriminatedUnion("type", [
25436
25354
  spreadsheetMediaSchema,
25437
25355
  archiveMediaSchema
25438
25356
  ]);
25357
+ const persistableMediaBaseSchema = mediaBaseSchema.extend({ identifier: mediaIdentifierSchema });
25358
+ z.discriminatedUnion("type", [
25359
+ persistableMediaBaseSchema.extend({ type: z.literal("image") }),
25360
+ persistableMediaBaseSchema.extend({ type: z.literal("video") }),
25361
+ persistableMediaBaseSchema.extend({ type: z.literal("audio") }),
25362
+ persistableMediaBaseSchema.extend({ type: z.literal("document") }),
25363
+ persistableMediaBaseSchema.extend({ type: z.literal("spreadsheet") }),
25364
+ persistableMediaBaseSchema.extend({ type: z.literal("archive") })
25365
+ ]);
25439
25366
  //#endregion
25440
25367
  //#region ../blocks/src/system/manifest/richTextSchema.ts
25441
25368
  /**
@@ -26549,7 +26476,7 @@ function isEventCalendarListLayout(value) {
26549
26476
  //#region ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
26550
26477
  const previewStageSchema = z$1.enum(["preview", "published"]);
26551
26478
  const registrationButtonVariantSchema = blockButtonRoleSchema;
26552
- const eventButtonVariantSchema = persistedBlockButtonRoleSchema;
26479
+ const eventButtonVariantSchema = blockButtonRoleSchema;
26553
26480
  const eventLayoutSchema = z$1.enum(eventCalendarListLayoutValues);
26554
26481
  const eventCalendarDisplayModeSchema = z$1.enum(eventCalendarDisplayModeValues);
26555
26482
  const eventCalendarDefaultViewSchema = z$1.enum(eventCalendarDefaultViewValues);