@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
@@ -3058,7 +3058,7 @@ function canonicalPaletteHashInput(colors, mode) {
3058
3058
  return `${mode}|${paletteColorFingerprint(colors)}`;
3059
3059
  }
3060
3060
  /**
3061
- * The shared TypeScript/SQL protocol. Do not reorder roles: the order comes
3061
+ * Stable curated-catalogue identity. Do not reorder roles: the order comes
3062
3062
  * from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
3063
3063
  */
3064
3064
  function paletteValueKey(colors, mode) {
@@ -4518,8 +4518,6 @@ const VARIANT_ROLES = [
4518
4518
  "secondary",
4519
4519
  "outline",
4520
4520
  "ghost",
4521
- "link",
4522
- "tertiary",
4523
4521
  "accent"
4524
4522
  ];
4525
4523
  /**
@@ -4528,7 +4526,7 @@ const VARIANT_ROLES = [
4528
4526
  * IDs become class selectors, so keep the contract deliberately narrower than
4529
4527
  * an arbitrary string and shared with every authoring/runtime boundary.
4530
4528
  */
4531
- const buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only");
4529
+ 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" });
4532
4530
  function parseOpaqueButtonColourToken(value) {
4533
4531
  const token = parseThemeColorToken(value);
4534
4532
  if (token === null) return null;
@@ -4931,6 +4929,59 @@ function surfaceForegroundStyle(input) {
4931
4929
  [SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting
4932
4930
  };
4933
4931
  }
4932
+ shadeBackgroundEffect({
4933
+ id: "darken-background",
4934
+ name: "Darken on Hover",
4935
+ description: "Darkens the background color on hover",
4936
+ label: "Darken Amount (shade step)",
4937
+ shadeDirection: 1
4938
+ });
4939
+ shadeBackgroundEffect({
4940
+ id: "lighten-background",
4941
+ name: "Lighten on Hover",
4942
+ description: "Lightens the background color on hover",
4943
+ label: "Lighten Amount (shade step)",
4944
+ shadeDirection: -1
4945
+ });
4946
+ function shadeBackgroundEffect(config) {
4947
+ return {
4948
+ id: config.id,
4949
+ name: config.name,
4950
+ description: config.description,
4951
+ category: "background",
4952
+ pseudoElement: "none",
4953
+ applicableTo: ["button"],
4954
+ customizableOption: {
4955
+ name: "amount",
4956
+ type: "select",
4957
+ label: config.label,
4958
+ default: 100,
4959
+ options: [
4960
+ 0,
4961
+ 100,
4962
+ 200,
4963
+ 300,
4964
+ 400,
4965
+ 500,
4966
+ 600,
4967
+ 700,
4968
+ 800,
4969
+ 900
4970
+ ]
4971
+ },
4972
+ isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
4973
+ generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
4974
+ if (buttonConfig.background.type !== "solid") return "";
4975
+ const amount = (options.amount || 100) * config.shadeDirection;
4976
+ const baseToken = buttonConfig.background.colorToken ?? "primary-500";
4977
+ return `
4978
+ :where([data-theme-scope="${themeId}"]) .${variantId}:hover {
4979
+ background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
4980
+ }
4981
+ `;
4982
+ }
4983
+ };
4984
+ }
4934
4985
  buttonSizeNameSchema.options;
4935
4986
  //#endregion
4936
4987
  //#region ../theme-core/src/buttons/styles/domain.ts
@@ -7745,6 +7796,60 @@ function resolveThemeColorReferenceValue(input, context) {
7745
7796
  const reference = parseThemeColorReference(input, context);
7746
7797
  return reference.kind === "literal-css" ? reference.value : rgbColorValue(reference.token);
7747
7798
  }
7799
+ const BREAKPOINT_LG = 1024;
7800
+ const BREAKPOINT_XL = 1280;
7801
+ const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
7802
+ function mqUp(px) {
7803
+ return `(min-width: ${px}px)`;
7804
+ }
7805
+ function mqDown(px) {
7806
+ return `(max-width: ${px}px)`;
7807
+ }
7808
+ function mqBetween(minPx, maxPx) {
7809
+ return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
7810
+ }
7811
+ mqUp(640);
7812
+ mqUp(768);
7813
+ mqUp(BREAKPOINT_LG);
7814
+ mqUp(BREAKPOINT_XL);
7815
+ mqDown(639);
7816
+ mqDown(767);
7817
+ mqDown(BREAKPOINT_LG_DOWN);
7818
+ mqBetween(640, BREAKPOINT_LG_DOWN);
7819
+ mqDown(640);
7820
+ mqDown(768);
7821
+ //#endregion
7822
+ //#region ../theme-core/src/header/scrollTreatment.ts
7823
+ const headerScrollTreatmentSchema = z$1.discriminatedUnion("kind", [z$1.object({
7824
+ kind: z$1.literal("contrast-glass"),
7825
+ backgroundTone: z$1.enum(["light", "dark"])
7826
+ })]).optional();
7827
+ //#endregion
7828
+ //#region ../theme-core/src/header/containerSchema.ts
7829
+ const headerContainerSchema = z$1.object({
7830
+ rounded: z$1.enum([
7831
+ "none",
7832
+ "sm",
7833
+ "md",
7834
+ "lg",
7835
+ "xl",
7836
+ "2xl"
7837
+ ]).default("xl"),
7838
+ border: z$1.boolean().default(true),
7839
+ shadow: z$1.boolean().default(true),
7840
+ padding: z$1.enum([
7841
+ "sm",
7842
+ "md",
7843
+ "lg"
7844
+ ]).default("md"),
7845
+ tint: z$1.string().nullable().optional(),
7846
+ opacity: z$1.number().min(0).max(1).default(.12)
7847
+ }).optional();
7848
+ const headerInteractionPaletteSchema = z$1.enum([
7849
+ "primary",
7850
+ "secondary",
7851
+ "accent"
7852
+ ]);
7748
7853
  //#endregion
7749
7854
  //#region ../theme-core/src/schema.ts
7750
7855
  const axesSchema = z$1.object({
@@ -8154,25 +8259,6 @@ const navFontWeight = z$1.enum([
8154
8259
  ]);
8155
8260
  const headerMaxWidth = z$1.enum(["container", "full"]);
8156
8261
  const headerBarFrame = z$1.enum(["full-bleed", "inset-shell"]);
8157
- const headerContainerSchema = z$1.object({
8158
- rounded: z$1.enum([
8159
- "none",
8160
- "sm",
8161
- "md",
8162
- "lg",
8163
- "xl",
8164
- "2xl"
8165
- ]).default("xl"),
8166
- border: z$1.boolean().default(true),
8167
- shadow: z$1.boolean().default(true),
8168
- padding: z$1.enum([
8169
- "sm",
8170
- "md",
8171
- "lg"
8172
- ]).default("md"),
8173
- tint: z$1.string().nullable().optional(),
8174
- opacity: z$1.number().min(0).max(1).default(.12)
8175
- }).optional();
8176
8262
  const headerBorderSchema = componentBorderSchema.extend({ position: z$1.enum([
8177
8263
  "bottom",
8178
8264
  "top",
@@ -8299,6 +8385,7 @@ const headerSchema = z$1.object({
8299
8385
  shrinkOnScroll: z$1.boolean(),
8300
8386
  maxWidth: headerMaxWidth,
8301
8387
  barFrame: headerBarFrame.optional(),
8388
+ scrollTreatment: headerScrollTreatmentSchema,
8302
8389
  logoOverride: mediaSchema$1.nullable().optional(),
8303
8390
  background: headerBackgroundSchema.default({
8304
8391
  type: "color",
@@ -8311,6 +8398,7 @@ const headerSchema = z$1.object({
8311
8398
  navFontRole: z$1.enum(["body", "heading"]).optional(),
8312
8399
  navTypography: z$1.enum(["body", "heading"]).optional(),
8313
8400
  navTextSize: navLinkStyleSchema.shape.textSize,
8401
+ interactionPalette: headerInteractionPaletteSchema.optional(),
8314
8402
  navPlacement: z$1.enum(["end", "center"]).optional(),
8315
8403
  container: headerContainerSchema,
8316
8404
  border: headerBorderSchema,
@@ -8603,770 +8691,669 @@ z$1.object({
8603
8691
  themes: z$1.array(themeSchema).length(3)
8604
8692
  });
8605
8693
  //#endregion
8694
+ //#region ../theme-core/src/site-styles/lookOptionGroups.ts
8695
+ function defineLookOptionGroup(group) {
8696
+ defaultOption(group);
8697
+ return group;
8698
+ }
8699
+ function defaultOption(group) {
8700
+ const option = group.options.find((candidate) => candidate.id === group.defaultOptionId);
8701
+ if (option) return option;
8702
+ throw new Error(`Look option group "${group.id}" defaults to missing option "${group.defaultOptionId}".`);
8703
+ }
8704
+ //#endregion
8606
8705
  //#region ../theme-core/src/site-styles/appearancePresetResolution.ts
8607
8706
  function assertValidOptionGroups(preset) {
8608
8707
  preset.optionGroups?.forEach((group) => {
8609
- 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}".`);
8708
+ defineLookOptionGroup(group);
8610
8709
  });
8611
8710
  }
8612
8711
  function defineBlockAppearancePreset(preset) {
8613
8712
  assertValidOptionGroups(preset);
8614
8713
  return preset;
8615
8714
  }
8616
- [...[
8617
- defineBlockAppearancePreset({
8618
- kind: "block-design",
8619
- id: "hero-immersive-image",
8620
- target: "hero",
8621
- label: "Immersive image hero",
8622
- blockKinds: ["block.hero"],
8623
- constraints: { layoutFamilies: ["centered", "compact"] },
8624
- layoutPatches: [{
8625
- constraints: { layoutVariantKeys: ["micro"] },
8626
- designPatch: {
8627
- sectionHeight: "banner",
8628
- heroTypographyScale: "display"
8629
- }
8630
- }],
8631
- design: {
8632
- sectionSurface: "hero-image",
8633
- contentFrame: plainFrame,
8634
- itemSurface: "none",
8635
- sectionHeight: "hero",
8636
- heroComposition: "center",
8637
- heroTypographyScale: "display",
8638
- imageSurfaceTreatment: { kind: "neutral-wash" }
8715
+ //#endregion
8716
+ //#region ../theme-core/src/site-styles/blockAppearancePresets.ts
8717
+ const brandScrimOptionGroups = [{
8718
+ id: "image-surface-treatment",
8719
+ label: "Treatment",
8720
+ defaultOptionId: "brand-scrim-primary",
8721
+ options: [{
8722
+ id: "brand-scrim-primary",
8723
+ label: "Brand scrim",
8724
+ designPatch: { imageSurfaceTreatment: {
8725
+ kind: "brand-scrim",
8726
+ token: "primary"
8727
+ } }
8728
+ }, {
8729
+ id: "neutral-scrim",
8730
+ label: "Neutral scrim",
8731
+ designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8732
+ }]
8733
+ }];
8734
+ const microBannerLayoutPatches = [{
8735
+ constraints: { layoutVariantKeys: ["micro"] },
8736
+ designPatch: { sectionHeight: "banner" }
8737
+ }];
8738
+ defineBlockAppearancePreset({
8739
+ id: "hero-immersive-image",
8740
+ target: "hero",
8741
+ label: "Immersive image hero",
8742
+ blockKinds: ["block.hero"],
8743
+ constraints: { layoutFamilies: ["centered", "compact"] },
8744
+ layoutPatches: [{
8745
+ constraints: { layoutVariantKeys: ["micro"] },
8746
+ designPatch: {
8747
+ sectionHeight: "banner",
8748
+ heroTypographyScale: "display"
8639
8749
  }
8640
- }),
8641
- defineBlockAppearancePreset({
8642
- kind: "block-design",
8643
- id: "hero-bottom-left-panel",
8644
- target: "hero",
8645
- label: "Bottom-left panel hero",
8646
- blockKinds: ["block.hero"],
8647
- constraints: { layoutFamilies: ["centered", "compact"] },
8648
- optionGroups: [{
8649
- id: "image-surface-treatment",
8650
- label: "Treatment",
8651
- selectedOptionId: "neutral-scrim",
8652
- options: [{
8653
- id: "neutral-scrim",
8654
- label: "Neutral scrim",
8655
- designPatch: { imageSurfaceTreatment: {
8656
- kind: "neutral-scrim",
8657
- intensity: "balanced"
8658
- } }
8659
- }, {
8660
- id: "brand-scrim-primary",
8661
- label: "Brand scrim",
8662
- designPatch: { imageSurfaceTreatment: {
8663
- kind: "brand-scrim",
8664
- token: "primary",
8665
- intensity: "balanced"
8666
- } }
8667
- }]
8668
- }],
8669
- layoutPatches: [{
8670
- constraints: { layoutVariantKeys: ["micro"] },
8671
- designPatch: {
8672
- sectionHeight: "banner",
8673
- heroTypographyScale: "editorial"
8674
- }
8675
- }],
8676
- design: {
8677
- sectionSurface: "hero-image",
8678
- contentFrame: panelFrame("raised"),
8679
- itemSurface: "none",
8680
- sectionHeight: "immersive",
8681
- heroComposition: "bottom-left",
8682
- heroTypographyScale: "display",
8683
- imageSurfaceTreatment: {
8750
+ }],
8751
+ design: {
8752
+ sectionSurface: "hero-image",
8753
+ contentFrame: plainFrame,
8754
+ itemSurface: "none",
8755
+ sectionHeight: "hero",
8756
+ heroComposition: "center",
8757
+ heroTypographyScale: "display",
8758
+ imageSurfaceTreatment: { kind: "neutral-wash" }
8759
+ }
8760
+ }), defineBlockAppearancePreset({
8761
+ id: "hero-bottom-left-panel",
8762
+ target: "hero",
8763
+ label: "Bottom-left panel hero",
8764
+ blockKinds: ["block.hero"],
8765
+ constraints: { layoutFamilies: ["centered", "compact"] },
8766
+ optionGroups: [{
8767
+ id: "image-surface-treatment",
8768
+ label: "Treatment",
8769
+ defaultOptionId: "neutral-scrim",
8770
+ options: [{
8771
+ id: "neutral-scrim",
8772
+ label: "Neutral scrim",
8773
+ designPatch: { imageSurfaceTreatment: {
8684
8774
  kind: "neutral-scrim",
8685
8775
  intensity: "balanced"
8686
- }
8687
- }
8688
- }),
8689
- defineBlockAppearancePreset({
8690
- kind: "block-design",
8691
- id: "hero-poster-image",
8692
- target: "hero",
8693
- label: "Poster image hero",
8694
- blockKinds: ["block.hero"],
8695
- constraints: { layoutFamilies: ["centered", "compact"] },
8696
- layoutPatches: [{
8697
- constraints: { layoutVariantKeys: ["micro"] },
8698
- designPatch: {
8699
- sectionHeight: "banner",
8700
- heroTypographyScale: "display"
8701
- }
8702
- }],
8703
- design: {
8704
- sectionSurface: "hero-image",
8705
- contentFrame: plainFrame,
8706
- itemSurface: "none",
8707
- sectionHeight: "immersive",
8708
- heroComposition: "center",
8709
- heroTypographyScale: "poster",
8710
- imageSurfaceTreatment: {
8776
+ } }
8777
+ }, {
8778
+ id: "brand-scrim-primary",
8779
+ label: "Brand scrim",
8780
+ designPatch: { imageSurfaceTreatment: {
8711
8781
  kind: "brand-scrim",
8712
8782
  token: "primary",
8713
- intensity: "strong"
8714
- }
8715
- }
8716
- }),
8717
- defineBlockAppearancePreset({
8718
- kind: "block-design",
8719
- id: "hero-brand-scrim",
8720
- target: "hero",
8721
- label: "Brand scrim image hero",
8722
- blockKinds: ["block.hero"],
8723
- constraints: { layoutFamilies: ["centered", "compact"] },
8724
- optionGroups: [{
8725
- id: "image-surface-treatment",
8726
- label: "Treatment",
8727
- selectedOptionId: "brand-scrim-primary",
8728
- options: [{
8729
- id: "brand-scrim-primary",
8730
- label: "Brand scrim",
8731
- designPatch: { imageSurfaceTreatment: {
8732
- kind: "brand-scrim",
8733
- token: "primary"
8734
- } }
8735
- }, {
8736
- id: "neutral-scrim",
8737
- label: "Neutral scrim",
8738
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8739
- }]
8740
- }],
8741
- layoutPatches: [{
8742
- constraints: { layoutVariantKeys: ["micro"] },
8743
- designPatch: { sectionHeight: "banner" }
8744
- }],
8745
- design: {
8746
- sectionSurface: "hero-image",
8747
- contentFrame: plainFrame,
8748
- itemSurface: "none",
8749
- sectionHeight: "immersive",
8750
- heroComposition: "center",
8751
- heroTypographyScale: "display",
8752
- imageSurfaceTreatment: {
8753
- kind: "brand-scrim",
8754
- token: "primary"
8755
- }
8756
- }
8757
- }),
8758
- defineBlockAppearancePreset({
8759
- kind: "block-design",
8760
- id: "hero-brand-scrim-fixed-frame",
8761
- target: "hero",
8762
- label: "Fixed-frame brand scrim hero",
8763
- blockKinds: ["block.hero"],
8764
- constraints: { layoutFamilies: ["centered", "compact"] },
8765
- optionGroups: [{
8766
- id: "image-surface-treatment",
8767
- label: "Treatment",
8768
- selectedOptionId: "brand-scrim-primary",
8769
- options: [{
8770
- id: "brand-scrim-primary",
8771
- label: "Brand scrim",
8772
- designPatch: { imageSurfaceTreatment: {
8773
- kind: "brand-scrim",
8774
- token: "primary"
8775
- } }
8776
- }, {
8777
- id: "neutral-scrim",
8778
- label: "Neutral scrim",
8779
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
8780
- }]
8781
- }],
8782
- layoutPatches: [{
8783
- constraints: { layoutVariantKeys: ["micro"] },
8784
- designPatch: { sectionHeight: "banner" }
8785
- }],
8786
- design: {
8787
- sectionSurface: "hero-image",
8788
- contentFrame: plainFrame,
8789
- itemSurface: "none",
8790
- sectionHeight: "immersive",
8791
- heroComposition: "center",
8792
- heroTypographyScale: "display",
8793
- imageSurfaceTreatment: {
8794
- kind: "brand-scrim",
8795
- token: "primary"
8796
- },
8797
- imageSurfaceMotion: "fixed-frame",
8798
- eyebrowTreatment: "accent-pill-bounce"
8799
- }
8800
- }),
8801
- defineBlockAppearancePreset({
8802
- kind: "block-design",
8803
- id: "hero-brand-depth-expressive",
8804
- target: "hero",
8805
- label: "Expressive brand-depth hero",
8806
- blockKinds: ["block.hero"],
8807
- constraints: { layoutFamilies: ["centered", "compact"] },
8808
- design: {
8809
- sectionSurface: "brand-depth-band",
8810
- contentFrame: plainFrame,
8811
- itemSurface: "none",
8812
- heroComposition: "center",
8813
- heroTypographyScale: "editorial",
8814
- eyebrowTreatment: "accent-pill-bounce"
8815
- }
8816
- }),
8817
- defineBlockAppearancePreset({
8818
- kind: "block-design",
8819
- id: "hero-contained-intro",
8820
- target: "hero",
8821
- label: "Contained intro hero",
8822
- blockKinds: ["block.hero"],
8823
- design: {
8824
- sectionSurface: "muted-band",
8825
- contentFrame: panelFrame("inset"),
8826
- itemSurface: "none",
8827
- heroComposition: "center",
8828
- heroTypographyScale: "editorial"
8829
- }
8830
- }),
8831
- defineBlockAppearancePreset({
8832
- kind: "block-design",
8833
- id: "hero-split-editorial",
8834
- target: "hero",
8835
- label: "Editorial split hero",
8836
- blockKinds: ["block.hero"],
8837
- constraints: { layoutFamilies: ["split"] },
8838
- design: {
8839
- sectionSurface: "base",
8840
- contentFrame: plainFrame,
8841
- itemSurface: "none",
8842
- heroTypographyScale: "editorial"
8843
- }
8844
- }),
8845
- defineBlockAppearancePreset({
8846
- kind: "block-design",
8847
- id: "hero-split-brand",
8848
- target: "hero",
8849
- label: "Brand split hero",
8850
- blockKinds: ["block.hero"],
8851
- constraints: { layoutFamilies: ["split"] },
8852
- design: {
8853
- sectionSurface: "brand-depth-band",
8854
- contentFrame: plainFrame,
8855
- itemSurface: "none",
8856
- heroTypographyScale: "display",
8857
- eyebrowTreatment: "accent-pill-bounce"
8858
- }
8859
- }),
8860
- defineBlockAppearancePreset({
8861
- kind: "block-design",
8862
- id: "hero-split-soft-panel",
8863
- target: "hero",
8864
- label: "Soft panel split hero",
8865
- blockKinds: ["block.hero"],
8866
- constraints: { layoutFamilies: ["split"] },
8867
- design: {
8868
- sectionSurface: "muted-band",
8869
- contentFrame: panelFrame("raised"),
8870
- itemSurface: "none",
8783
+ intensity: "balanced"
8784
+ } }
8785
+ }]
8786
+ }],
8787
+ layoutPatches: [{
8788
+ constraints: { layoutVariantKeys: ["micro"] },
8789
+ designPatch: {
8790
+ sectionHeight: "banner",
8871
8791
  heroTypographyScale: "editorial"
8872
8792
  }
8873
- }),
8874
- defineBlockAppearancePreset({
8875
- kind: "block-design",
8876
- id: "hero-split-accent",
8877
- target: "hero",
8878
- label: "Accent split hero",
8879
- blockKinds: ["block.hero"],
8880
- constraints: { layoutFamilies: ["split"] },
8881
- design: {
8882
- sectionSurface: "accent-band",
8883
- contentFrame: panelFrame("raised"),
8884
- itemSurface: "none",
8793
+ }],
8794
+ design: {
8795
+ sectionSurface: "hero-image",
8796
+ contentFrame: panelFrame("raised"),
8797
+ itemSurface: "none",
8798
+ sectionHeight: "immersive",
8799
+ heroComposition: "bottom-left",
8800
+ heroTypographyScale: "display",
8801
+ imageSurfaceTreatment: {
8802
+ kind: "neutral-scrim",
8803
+ intensity: "balanced"
8804
+ }
8805
+ }
8806
+ }), defineBlockAppearancePreset({
8807
+ id: "hero-poster-image",
8808
+ target: "hero",
8809
+ label: "Poster image hero",
8810
+ blockKinds: ["block.hero"],
8811
+ constraints: { layoutFamilies: ["centered", "compact"] },
8812
+ layoutPatches: [{
8813
+ constraints: { layoutVariantKeys: ["micro"] },
8814
+ designPatch: {
8815
+ sectionHeight: "banner",
8885
8816
  heroTypographyScale: "display"
8886
8817
  }
8887
- }),
8888
- defineBlockAppearancePreset({
8889
- kind: "block-design",
8890
- id: "intro-editorial-statement",
8891
- target: "intro",
8892
- label: "Editorial intro statement",
8893
- blockKinds: ["block.intro"],
8894
- constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
8895
- design: {
8896
- sectionSurface: "base",
8897
- contentFrame: plainFrame,
8898
- itemSurface: "none",
8899
- composition: {
8900
- kind: "intro",
8901
- treatment: "editorial-statement"
8902
- }
8903
- }
8904
- }),
8905
- defineBlockAppearancePreset({
8906
- kind: "block-design",
8907
- id: "intro-portrait-bio",
8908
- target: "intro",
8909
- label: "Portrait and bio",
8910
- blockKinds: ["block.intro"],
8911
- constraints: { layoutVariantKeys: ["media-copy"] },
8912
- design: {
8913
- sectionSurface: "base",
8914
- contentFrame: plainFrame,
8915
- itemSurface: "none",
8916
- composition: {
8917
- kind: "intro",
8918
- treatment: "portrait-bio"
8919
- }
8920
- }
8921
- }),
8922
- defineBlockAppearancePreset({
8923
- kind: "block-design",
8924
- id: "offerings-preview-default-cards",
8925
- target: "offerings",
8926
- label: "Default offering cards",
8927
- blockKinds: ["block.offerings-preview"],
8928
- design: {
8929
- sectionSurface: "base",
8930
- contentFrame: plainFrame,
8931
- itemSurface: "default"
8932
- }
8933
- }),
8934
- defineBlockAppearancePreset({
8935
- kind: "block-design",
8936
- id: "offerings-preview-secondary-cards",
8937
- target: "offerings",
8938
- label: "Secondary offering cards",
8939
- blockKinds: ["block.offerings-preview"],
8940
- design: {
8941
- sectionSurface: "muted-band",
8942
- contentFrame: plainFrame,
8943
- itemSurface: "inset"
8944
- }
8945
- }),
8946
- defineBlockAppearancePreset({
8947
- kind: "block-design",
8948
- id: "offerings-preview-non-carded",
8949
- target: "offerings",
8950
- label: "Non-carded offerings",
8951
- blockKinds: ["block.offerings-preview"],
8952
- design: {
8953
- sectionSurface: "muted-band",
8954
- contentFrame: plainFrame,
8955
- itemSurface: "editorial"
8956
- }
8957
- }),
8958
- defineBlockAppearancePreset({
8959
- kind: "block-design",
8960
- id: "offerings-preview-paired-feature-cards",
8961
- target: "offerings",
8962
- label: "Paired feature cards",
8963
- blockKinds: ["block.offerings-preview"],
8964
- constraints: { layoutVariantKeys: ["cards"] },
8965
- design: {
8966
- sectionSurface: "base",
8967
- contentFrame: plainFrame,
8968
- itemSurface: "none"
8969
- }
8970
- }),
8971
- defineBlockAppearancePreset({
8972
- kind: "block-design",
8973
- id: "offerings-preview-open-editorial-columns",
8974
- target: "offerings",
8975
- label: "Open editorial columns",
8976
- blockKinds: ["block.offerings-preview"],
8977
- constraints: { layoutVariantKeys: ["cards"] },
8978
- design: {
8979
- sectionSurface: "base",
8980
- contentFrame: plainFrame,
8981
- itemSurface: "none"
8982
- }
8983
- }),
8984
- defineBlockAppearancePreset({
8985
- kind: "block-design",
8986
- id: "offerings-preview-joined-programme-panel",
8987
- target: "offerings",
8988
- label: "Joined programme panel",
8989
- blockKinds: ["block.offerings-preview"],
8990
- constraints: { layoutVariantKeys: ["cards"] },
8991
- design: {
8992
- sectionSurface: "base",
8993
- contentFrame: plainFrame,
8994
- itemSurface: "none"
8995
- }
8996
- }),
8997
- defineBlockAppearancePreset({
8998
- kind: "block-design",
8999
- id: "feature-cards-raised-rule",
9000
- target: "feature-cards",
9001
- label: "Raised cards with rule",
9002
- blockKinds: ["block.feature-cards"],
9003
- design: {
9004
- sectionSurface: "base",
9005
- contentFrame: plainFrame,
9006
- itemSurface: "raised"
9007
- }
9008
- }),
9009
- defineBlockAppearancePreset({
9010
- kind: "block-design",
9011
- id: "feature-cards-bold-colors",
9012
- target: "feature-cards",
9013
- label: "Bold colour-blocked cards",
9014
- blockKinds: ["block.feature-cards"],
9015
- design: {
9016
- sectionSurface: "base",
9017
- contentFrame: plainFrame,
9018
- itemSurface: "color-blocked"
9019
- }
9020
- }),
9021
- defineBlockAppearancePreset({
9022
- kind: "block-design",
9023
- id: "feature-cards-editorial-columns",
9024
- target: "feature-cards",
9025
- label: "Editorial open columns",
9026
- blockKinds: ["block.feature-cards"],
9027
- design: {
9028
- sectionSurface: "base",
9029
- contentFrame: plainFrame,
9030
- itemSurface: "editorial"
9031
- }
9032
- }),
9033
- defineBlockAppearancePreset({
9034
- kind: "block-design",
9035
- id: "feature-cards-asymmetric-emphasis",
9036
- target: "feature-cards",
9037
- label: "Asymmetric emphasis pair",
9038
- blockKinds: ["block.feature-cards"],
9039
- constraints: { layoutFamilies: ["grid"] },
9040
- design: {
9041
- sectionSurface: "base",
9042
- contentFrame: plainFrame,
9043
- itemSurface: "none",
9044
- composition: {
9045
- kind: "feature-cards",
9046
- treatment: "asymmetric-emphasis"
9047
- }
9048
- }
9049
- }),
9050
- defineBlockAppearancePreset({
9051
- kind: "block-design",
9052
- id: "feature-cards-framed-programme",
9053
- target: "feature-cards",
9054
- label: "Framed programme cards",
9055
- blockKinds: ["block.feature-cards"],
9056
- constraints: { layoutFamilies: ["grid"] },
9057
- design: {
9058
- sectionSurface: "brand-depth-band",
9059
- contentFrame: plainFrame,
9060
- itemSurface: "inset",
9061
- composition: {
9062
- kind: "feature-cards",
9063
- treatment: "framed-programme"
9064
- }
9065
- }
9066
- }),
9067
- defineBlockAppearancePreset({
9068
- kind: "block-design",
9069
- id: "feature-cards-soft-panels",
9070
- target: "feature-cards",
9071
- label: "Soft tinted panels",
9072
- blockKinds: ["block.feature-cards"],
9073
- design: {
9074
- sectionSurface: "base",
9075
- contentFrame: plainFrame,
9076
- itemSurface: "inset"
9077
- }
9078
- }),
9079
- defineBlockAppearancePreset({
9080
- kind: "block-design",
9081
- id: "feature-cards-editorial-diptych",
9082
- target: "feature-cards",
9083
- label: "Editorial diptych",
9084
- blockKinds: ["block.feature-cards"],
9085
- constraints: { layoutVariantKeys: ["editorial-diptych"] },
9086
- design: {
9087
- sectionSurface: "base",
9088
- contentFrame: plainFrame,
9089
- itemSurface: "flat"
9090
- }
9091
- }),
9092
- defineBlockAppearancePreset({
9093
- kind: "block-design",
9094
- id: "feature-cards-editorial-pathways",
9095
- target: "feature-cards",
9096
- label: "Editorial pathways",
9097
- blockKinds: ["block.feature-cards"],
9098
- constraints: { layoutVariantKeys: ["editorial-pathways"] },
9099
- design: {
9100
- sectionSurface: "base",
9101
- contentFrame: plainFrame,
9102
- itemSurface: "flat"
9103
- }
9104
- }),
9105
- defineBlockAppearancePreset({
9106
- kind: "block-design",
9107
- id: "feature-cards-photo-tiles",
9108
- target: "feature-cards",
9109
- label: "Photo tiles",
9110
- blockKinds: ["block.feature-cards"],
9111
- design: {
9112
- sectionSurface: "base",
9113
- contentFrame: plainFrame,
9114
- itemSurface: "raised"
9115
- }
9116
- }),
9117
- defineBlockAppearancePreset({
9118
- kind: "block-design",
9119
- id: "events-lined-panel",
9120
- target: "events",
9121
- label: "Raised event panel",
9122
- blockKinds: ["block.event-calendar", "block.event-listing"],
9123
- design: {
9124
- sectionSurface: "base",
9125
- contentFrame: panelFrame("raised"),
9126
- itemSurface: "none"
9127
- }
9128
- }),
9129
- defineBlockAppearancePreset({
9130
- kind: "block-design",
9131
- id: "events-ruled-register",
9132
- target: "events",
9133
- label: "Ruled event register",
9134
- blockKinds: ["block.event-calendar", "block.event-listing"],
9135
- design: {
9136
- sectionSurface: "brand-depth-band",
9137
- contentFrame: plainFrame,
9138
- itemSurface: "none",
9139
- eventListTreatment: "ruled-register"
9140
- }
9141
- }),
9142
- defineBlockAppearancePreset({
9143
- kind: "block-design",
9144
- id: "events-editorial-register",
9145
- target: "events",
9146
- label: "Editorial event register",
9147
- blockKinds: ["block.event-calendar", "block.event-listing"],
9148
- design: {
9149
- sectionSurface: "base",
9150
- contentFrame: plainFrame,
9151
- itemSurface: "none",
9152
- eventListTreatment: "editorial-register"
9153
- }
9154
- }),
9155
- defineBlockAppearancePreset({
9156
- kind: "block-design",
9157
- id: "events-dense-index",
9158
- target: "events",
9159
- label: "Dense event index",
9160
- blockKinds: ["block.event-calendar", "block.event-listing"],
9161
- design: {
9162
- sectionSurface: "accent-band",
9163
- contentFrame: plainFrame,
9164
- itemSurface: "none",
9165
- eventListTreatment: "dense-index"
9166
- }
9167
- }),
9168
- defineBlockAppearancePreset({
9169
- kind: "block-design",
9170
- id: "schedule-details-brand-depth",
9171
- target: "events",
9172
- label: "Brand-depth schedule details",
9173
- blockKinds: ["block.event-details", "block.course-details"],
9174
- design: {
9175
- sectionSurface: "brand-depth-band",
9176
- contentFrame: plainFrame,
9177
- itemSurface: "none",
9178
- tileTreatment: "brand-depth"
9179
- }
9180
- }),
9181
- defineBlockAppearancePreset({
9182
- kind: "block-design",
9183
- id: "media-text-flush-feature",
9184
- target: "media-text",
9185
- label: "Flush media feature",
9186
- blockKinds: ["block.media-text"],
9187
- design: {
9188
- sectionSurface: "muted-band",
9189
- contentFrame: flushPanelFrame({ bleed: "start" }),
9190
- itemSurface: "none"
9191
- }
9192
- }),
9193
- defineBlockAppearancePreset({
9194
- kind: "block-design",
9195
- id: "testimonials-simple-cards",
9196
- target: "testimonials",
9197
- label: "Simple testimonial cards",
9198
- blockKinds: ["block.testimonials"],
9199
- design: {
9200
- sectionSurface: "base",
9201
- contentFrame: plainFrame,
9202
- itemSurface: "default"
9203
- }
9204
- }),
9205
- defineBlockAppearancePreset({
9206
- kind: "block-design",
9207
- id: "testimonials-raised-panel",
9208
- target: "testimonials",
9209
- label: "Raised testimonial panel",
9210
- blockKinds: ["block.testimonials"],
9211
- design: {
9212
- sectionSurface: "muted-band",
9213
- contentFrame: panelFrame("raised"),
9214
- itemSurface: "raised"
9215
- }
9216
- }),
9217
- defineBlockAppearancePreset({
9218
- kind: "block-design",
9219
- id: "testimonials-accent-panel",
9220
- target: "testimonials",
9221
- label: "Accent testimonial panel",
9222
- blockKinds: ["block.testimonials"],
9223
- design: {
9224
- sectionSurface: "accent-band",
9225
- contentFrame: panelFrame("raised"),
9226
- itemSurface: "raised"
9227
- }
9228
- }),
9229
- defineBlockAppearancePreset({
9230
- kind: "block-design",
9231
- id: "testimonials-default-cards",
9232
- target: "testimonials",
9233
- label: "Default cards",
9234
- blockKinds: ["block.testimonials"],
9235
- design: {
9236
- sectionSurface: "base",
9237
- contentFrame: plainFrame,
9238
- itemSurface: "none",
9239
- testimonialCardTreatment: "default"
9240
- }
9241
- }),
9242
- defineBlockAppearancePreset({
9243
- kind: "block-design",
9244
- id: "testimonials-statement-cards",
9245
- target: "testimonials",
9246
- label: "Statement cards",
9247
- blockKinds: ["block.testimonials"],
9248
- design: {
9249
- sectionSurface: "accent-band",
9250
- contentFrame: plainFrame,
9251
- itemSurface: "raised",
9252
- testimonialCardTreatment: "statement"
9253
- }
9254
- }),
9255
- defineBlockAppearancePreset({
9256
- kind: "block-design",
9257
- id: "testimonials-brand-statement-cards",
9258
- target: "testimonials",
9259
- label: "Brand statement cards",
9260
- blockKinds: ["block.testimonials"],
9261
- design: {
9262
- sectionSurface: "brand-depth-band",
9263
- contentFrame: plainFrame,
9264
- itemSurface: "raised",
9265
- testimonialCardTreatment: "statement"
9266
- }
9267
- }),
9268
- defineBlockAppearancePreset({
9269
- kind: "block-design",
9270
- id: "testimonials-non-carded",
9271
- target: "testimonials",
9272
- label: "Non-carded",
9273
- blockKinds: ["block.testimonials"],
9274
- design: {
9275
- sectionSurface: "muted-band",
9276
- contentFrame: plainFrame,
9277
- itemSurface: "none",
9278
- testimonialCardTreatment: "non-carded"
9279
- }
9280
- }),
9281
- defineBlockAppearancePreset({
9282
- kind: "block-design",
9283
- id: "testimonials-evergreen-lead",
9284
- target: "testimonials",
9285
- label: "Evergreen lead",
9286
- blockKinds: ["block.testimonials"],
9287
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9288
- design: {
9289
- sectionSurface: "base",
9290
- contentFrame: plainFrame,
9291
- itemSurface: "none"
9292
- }
9293
- }),
9294
- defineBlockAppearancePreset({
9295
- kind: "block-design",
9296
- id: "testimonials-room-and-response",
9297
- target: "testimonials",
9298
- label: "Room and response",
9299
- blockKinds: ["block.testimonials"],
9300
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9301
- design: {
9302
- sectionSurface: "base",
9303
- contentFrame: plainFrame,
9304
- itemSurface: "none"
9305
- }
9306
- }),
9307
- defineBlockAppearancePreset({
9308
- kind: "block-design",
9309
- id: "testimonials-open-floor",
9310
- target: "testimonials",
9311
- label: "Open floor",
9312
- blockKinds: ["block.testimonials"],
9313
- constraints: { layoutVariantKeys: ["featured-editorial"] },
9314
- design: {
9315
- sectionSurface: "base",
9316
- contentFrame: plainFrame,
9317
- itemSurface: "none"
9318
- }
9319
- }),
9320
- defineBlockAppearancePreset({
9321
- kind: "block-design",
9322
- id: "faq-base-accordion",
9323
- target: "faq",
9324
- label: "Base accordion FAQ",
9325
- blockKinds: ["block.faq"],
9326
- design: {
9327
- sectionSurface: "base",
9328
- contentFrame: plainFrame,
9329
- itemSurface: "default"
9330
- }
9331
- }),
9332
- defineBlockAppearancePreset({
9333
- kind: "block-design",
9334
- id: "faq-contained-help",
9335
- target: "faq",
9336
- label: "Contained help panel",
9337
- blockKinds: ["block.faq"],
9338
- design: {
9339
- sectionSurface: "muted-band",
9340
- contentFrame: panelFrame("inset"),
9341
- itemSurface: "default"
9342
- }
9343
- }),
9344
- defineBlockAppearancePreset({
9345
- kind: "block-design",
9346
- id: "contact-form-panel",
9347
- target: "contact-form",
9348
- label: "Raised form panel",
9349
- blockKinds: ["block.form"],
9350
- design: {
9351
- sectionSurface: "muted-band",
9352
- contentFrame: panelFrame("raised"),
9353
- itemSurface: "none"
9354
- }
9355
- }),
9356
- defineBlockAppearancePreset({
9357
- kind: "block-design",
9358
- id: "cta-accent-band",
9359
- target: "cta",
9360
- label: "Accent CTA band",
9361
- blockKinds: ["block.cta-full"],
9362
- design: {
9363
- sectionSurface: "accent-band",
9364
- contentFrame: plainFrame,
9365
- itemSurface: "none",
9366
- eyebrowTreatment: "accent"
9367
- }
9368
- })
9369
- ]];
8818
+ }],
8819
+ design: {
8820
+ sectionSurface: "hero-image",
8821
+ contentFrame: plainFrame,
8822
+ itemSurface: "none",
8823
+ sectionHeight: "immersive",
8824
+ heroComposition: "center",
8825
+ heroTypographyScale: "poster",
8826
+ imageSurfaceTreatment: {
8827
+ kind: "brand-scrim",
8828
+ token: "primary",
8829
+ intensity: "strong"
8830
+ }
8831
+ }
8832
+ }), defineBlockAppearancePreset({
8833
+ id: "hero-brand-scrim",
8834
+ target: "hero",
8835
+ label: "Brand scrim image hero",
8836
+ blockKinds: ["block.hero"],
8837
+ constraints: { layoutFamilies: ["centered", "compact"] },
8838
+ optionGroups: brandScrimOptionGroups,
8839
+ layoutPatches: microBannerLayoutPatches,
8840
+ design: {
8841
+ sectionSurface: "hero-image",
8842
+ contentFrame: plainFrame,
8843
+ itemSurface: "none",
8844
+ sectionHeight: "immersive",
8845
+ heroComposition: "center",
8846
+ heroTypographyScale: "display",
8847
+ imageSurfaceTreatment: {
8848
+ kind: "brand-scrim",
8849
+ token: "primary"
8850
+ }
8851
+ }
8852
+ }), defineBlockAppearancePreset({
8853
+ id: "hero-brand-scrim-fixed-frame",
8854
+ target: "hero",
8855
+ label: "Fixed-frame brand scrim hero",
8856
+ blockKinds: ["block.hero"],
8857
+ constraints: { layoutFamilies: ["centered", "compact"] },
8858
+ optionGroups: brandScrimOptionGroups,
8859
+ layoutPatches: microBannerLayoutPatches,
8860
+ design: {
8861
+ sectionSurface: "hero-image",
8862
+ contentFrame: plainFrame,
8863
+ itemSurface: "none",
8864
+ sectionHeight: "immersive",
8865
+ heroComposition: "center",
8866
+ heroTypographyScale: "display",
8867
+ imageSurfaceTreatment: {
8868
+ kind: "brand-scrim",
8869
+ token: "primary"
8870
+ },
8871
+ imageSurfaceMotion: "fixed-frame",
8872
+ eyebrowTreatment: "accent-pill-bounce"
8873
+ }
8874
+ }), defineBlockAppearancePreset({
8875
+ id: "hero-brand-depth-expressive",
8876
+ target: "hero",
8877
+ label: "Expressive brand-depth hero",
8878
+ blockKinds: ["block.hero"],
8879
+ constraints: { layoutFamilies: ["centered", "compact"] },
8880
+ design: {
8881
+ sectionSurface: "brand-depth-band",
8882
+ contentFrame: plainFrame,
8883
+ itemSurface: "none",
8884
+ heroComposition: "center",
8885
+ heroTypographyScale: "editorial",
8886
+ eyebrowTreatment: "accent-pill-bounce"
8887
+ }
8888
+ }), defineBlockAppearancePreset({
8889
+ id: "hero-contained-intro",
8890
+ target: "hero",
8891
+ label: "Contained intro hero",
8892
+ blockKinds: ["block.hero"],
8893
+ design: {
8894
+ sectionSurface: "muted-band",
8895
+ contentFrame: panelFrame("inset"),
8896
+ itemSurface: "none",
8897
+ heroComposition: "center",
8898
+ heroTypographyScale: "editorial"
8899
+ }
8900
+ }), defineBlockAppearancePreset({
8901
+ id: "hero-split-editorial",
8902
+ target: "hero",
8903
+ label: "Editorial split hero",
8904
+ blockKinds: ["block.hero"],
8905
+ constraints: { layoutFamilies: ["split"] },
8906
+ design: {
8907
+ sectionSurface: "base",
8908
+ contentFrame: plainFrame,
8909
+ itemSurface: "none",
8910
+ heroTypographyScale: "editorial"
8911
+ }
8912
+ }), defineBlockAppearancePreset({
8913
+ id: "hero-split-brand",
8914
+ target: "hero",
8915
+ label: "Brand split hero",
8916
+ blockKinds: ["block.hero"],
8917
+ constraints: { layoutFamilies: ["split"] },
8918
+ design: {
8919
+ sectionSurface: "brand-depth-band",
8920
+ contentFrame: plainFrame,
8921
+ itemSurface: "none",
8922
+ heroTypographyScale: "display",
8923
+ eyebrowTreatment: "accent-pill-bounce"
8924
+ }
8925
+ }), defineBlockAppearancePreset({
8926
+ id: "hero-split-soft-panel",
8927
+ target: "hero",
8928
+ label: "Soft panel split hero",
8929
+ blockKinds: ["block.hero"],
8930
+ constraints: { layoutFamilies: ["split"] },
8931
+ design: {
8932
+ sectionSurface: "muted-band",
8933
+ contentFrame: panelFrame("raised"),
8934
+ itemSurface: "none",
8935
+ heroTypographyScale: "editorial"
8936
+ }
8937
+ }), defineBlockAppearancePreset({
8938
+ id: "hero-split-accent",
8939
+ target: "hero",
8940
+ label: "Accent split hero",
8941
+ blockKinds: ["block.hero"],
8942
+ constraints: { layoutFamilies: ["split"] },
8943
+ design: {
8944
+ sectionSurface: "accent-band",
8945
+ contentFrame: panelFrame("raised"),
8946
+ itemSurface: "none",
8947
+ heroTypographyScale: "display"
8948
+ }
8949
+ }), defineBlockAppearancePreset({
8950
+ id: "intro-editorial-statement",
8951
+ target: "intro",
8952
+ label: "Editorial intro statement",
8953
+ blockKinds: ["block.intro"],
8954
+ constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
8955
+ design: {
8956
+ sectionSurface: "base",
8957
+ contentFrame: plainFrame,
8958
+ itemSurface: "none",
8959
+ composition: {
8960
+ kind: "intro",
8961
+ treatment: "editorial-statement"
8962
+ }
8963
+ }
8964
+ }), defineBlockAppearancePreset({
8965
+ id: "intro-portrait-bio",
8966
+ target: "intro",
8967
+ label: "Portrait and bio",
8968
+ blockKinds: ["block.intro"],
8969
+ constraints: { layoutVariantKeys: ["media-copy"] },
8970
+ design: {
8971
+ sectionSurface: "base",
8972
+ contentFrame: plainFrame,
8973
+ itemSurface: "none",
8974
+ composition: {
8975
+ kind: "intro",
8976
+ treatment: "portrait-bio"
8977
+ }
8978
+ }
8979
+ }), defineBlockAppearancePreset({
8980
+ id: "offerings-preview-default-cards",
8981
+ target: "offerings",
8982
+ label: "Default offering cards",
8983
+ blockKinds: ["block.offerings-preview"],
8984
+ design: {
8985
+ sectionSurface: "base",
8986
+ contentFrame: plainFrame,
8987
+ itemSurface: "default"
8988
+ }
8989
+ }), defineBlockAppearancePreset({
8990
+ id: "offerings-preview-secondary-cards",
8991
+ target: "offerings",
8992
+ label: "Secondary offering cards",
8993
+ blockKinds: ["block.offerings-preview"],
8994
+ design: {
8995
+ sectionSurface: "muted-band",
8996
+ contentFrame: plainFrame,
8997
+ itemSurface: "inset"
8998
+ }
8999
+ }), defineBlockAppearancePreset({
9000
+ id: "offerings-preview-non-carded",
9001
+ target: "offerings",
9002
+ label: "Non-carded offerings",
9003
+ blockKinds: ["block.offerings-preview"],
9004
+ design: {
9005
+ sectionSurface: "muted-band",
9006
+ contentFrame: plainFrame,
9007
+ itemSurface: "editorial"
9008
+ }
9009
+ }), defineBlockAppearancePreset({
9010
+ id: "offerings-preview-paired-feature-cards",
9011
+ target: "offerings",
9012
+ label: "Paired feature cards",
9013
+ blockKinds: ["block.offerings-preview"],
9014
+ constraints: { layoutVariantKeys: ["cards"] },
9015
+ design: {
9016
+ sectionSurface: "base",
9017
+ contentFrame: plainFrame,
9018
+ itemSurface: "none"
9019
+ }
9020
+ }), defineBlockAppearancePreset({
9021
+ id: "offerings-preview-open-editorial-columns",
9022
+ target: "offerings",
9023
+ label: "Open editorial columns",
9024
+ blockKinds: ["block.offerings-preview"],
9025
+ constraints: { layoutVariantKeys: ["cards"] },
9026
+ design: {
9027
+ sectionSurface: "base",
9028
+ contentFrame: plainFrame,
9029
+ itemSurface: "none"
9030
+ }
9031
+ }), defineBlockAppearancePreset({
9032
+ id: "offerings-preview-joined-programme-panel",
9033
+ target: "offerings",
9034
+ label: "Joined programme panel",
9035
+ blockKinds: ["block.offerings-preview"],
9036
+ constraints: { layoutVariantKeys: ["cards"] },
9037
+ design: {
9038
+ sectionSurface: "base",
9039
+ contentFrame: plainFrame,
9040
+ itemSurface: "none"
9041
+ }
9042
+ }), defineBlockAppearancePreset({
9043
+ id: "feature-cards-raised-rule",
9044
+ target: "feature-cards",
9045
+ label: "Raised cards with rule",
9046
+ blockKinds: ["block.feature-cards"],
9047
+ design: {
9048
+ sectionSurface: "base",
9049
+ contentFrame: plainFrame,
9050
+ itemSurface: "raised"
9051
+ }
9052
+ }), defineBlockAppearancePreset({
9053
+ id: "feature-cards-bold-colors",
9054
+ target: "feature-cards",
9055
+ label: "Bold colour-blocked cards",
9056
+ blockKinds: ["block.feature-cards"],
9057
+ design: {
9058
+ sectionSurface: "base",
9059
+ contentFrame: plainFrame,
9060
+ itemSurface: "color-blocked"
9061
+ }
9062
+ }), defineBlockAppearancePreset({
9063
+ id: "feature-cards-editorial-columns",
9064
+ target: "feature-cards",
9065
+ label: "Editorial open columns",
9066
+ blockKinds: ["block.feature-cards"],
9067
+ design: {
9068
+ sectionSurface: "base",
9069
+ contentFrame: plainFrame,
9070
+ itemSurface: "editorial"
9071
+ }
9072
+ }), defineBlockAppearancePreset({
9073
+ id: "feature-cards-asymmetric-emphasis",
9074
+ target: "feature-cards",
9075
+ label: "Asymmetric emphasis pair",
9076
+ blockKinds: ["block.feature-cards"],
9077
+ constraints: { layoutFamilies: ["grid"] },
9078
+ design: {
9079
+ sectionSurface: "base",
9080
+ contentFrame: plainFrame,
9081
+ itemSurface: "none",
9082
+ composition: {
9083
+ kind: "feature-cards",
9084
+ treatment: "asymmetric-emphasis"
9085
+ }
9086
+ }
9087
+ }), defineBlockAppearancePreset({
9088
+ id: "feature-cards-framed-programme",
9089
+ target: "feature-cards",
9090
+ label: "Framed programme cards",
9091
+ blockKinds: ["block.feature-cards"],
9092
+ constraints: { layoutFamilies: ["grid"] },
9093
+ design: {
9094
+ sectionSurface: "brand-depth-band",
9095
+ contentFrame: plainFrame,
9096
+ itemSurface: "inset",
9097
+ composition: {
9098
+ kind: "feature-cards",
9099
+ treatment: "framed-programme"
9100
+ }
9101
+ }
9102
+ }), defineBlockAppearancePreset({
9103
+ id: "feature-cards-soft-panels",
9104
+ target: "feature-cards",
9105
+ label: "Soft tinted panels",
9106
+ blockKinds: ["block.feature-cards"],
9107
+ design: {
9108
+ sectionSurface: "base",
9109
+ contentFrame: plainFrame,
9110
+ itemSurface: "inset"
9111
+ }
9112
+ }), defineBlockAppearancePreset({
9113
+ id: "feature-cards-editorial-diptych",
9114
+ target: "feature-cards",
9115
+ label: "Editorial diptych",
9116
+ blockKinds: ["block.feature-cards"],
9117
+ constraints: { layoutVariantKeys: ["editorial-diptych"] },
9118
+ design: {
9119
+ sectionSurface: "base",
9120
+ contentFrame: plainFrame,
9121
+ itemSurface: "flat"
9122
+ }
9123
+ }), defineBlockAppearancePreset({
9124
+ id: "feature-cards-editorial-pathways",
9125
+ target: "feature-cards",
9126
+ label: "Editorial pathways",
9127
+ blockKinds: ["block.feature-cards"],
9128
+ constraints: { layoutVariantKeys: ["editorial-pathways"] },
9129
+ design: {
9130
+ sectionSurface: "base",
9131
+ contentFrame: plainFrame,
9132
+ itemSurface: "flat"
9133
+ }
9134
+ }), defineBlockAppearancePreset({
9135
+ id: "feature-cards-photo-tiles",
9136
+ target: "feature-cards",
9137
+ label: "Photo tiles",
9138
+ blockKinds: ["block.feature-cards"],
9139
+ design: {
9140
+ sectionSurface: "base",
9141
+ contentFrame: plainFrame,
9142
+ itemSurface: "raised"
9143
+ }
9144
+ }), defineBlockAppearancePreset({
9145
+ id: "events-lined-panel",
9146
+ target: "events",
9147
+ label: "Raised event panel",
9148
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9149
+ design: {
9150
+ sectionSurface: "base",
9151
+ contentFrame: panelFrame("raised"),
9152
+ itemSurface: "none"
9153
+ }
9154
+ }), defineBlockAppearancePreset({
9155
+ id: "events-ruled-register",
9156
+ target: "events",
9157
+ label: "Ruled event register",
9158
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9159
+ design: {
9160
+ sectionSurface: "brand-depth-band",
9161
+ contentFrame: plainFrame,
9162
+ itemSurface: "none",
9163
+ eventListTreatment: "ruled-register"
9164
+ }
9165
+ }), defineBlockAppearancePreset({
9166
+ id: "events-editorial-register",
9167
+ target: "events",
9168
+ label: "Editorial event register",
9169
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9170
+ design: {
9171
+ sectionSurface: "base",
9172
+ contentFrame: plainFrame,
9173
+ itemSurface: "none",
9174
+ eventListTreatment: "editorial-register"
9175
+ }
9176
+ }), defineBlockAppearancePreset({
9177
+ id: "events-dense-index",
9178
+ target: "events",
9179
+ label: "Dense event index",
9180
+ blockKinds: ["block.event-calendar", "block.event-listing"],
9181
+ design: {
9182
+ sectionSurface: "accent-band",
9183
+ contentFrame: plainFrame,
9184
+ itemSurface: "none",
9185
+ eventListTreatment: "dense-index"
9186
+ }
9187
+ }), defineBlockAppearancePreset({
9188
+ id: "schedule-details-brand-depth",
9189
+ target: "events",
9190
+ label: "Brand-depth schedule details",
9191
+ blockKinds: ["block.event-details", "block.course-details"],
9192
+ design: {
9193
+ sectionSurface: "brand-depth-band",
9194
+ contentFrame: plainFrame,
9195
+ itemSurface: "none",
9196
+ tileTreatment: "brand-depth"
9197
+ }
9198
+ }), defineBlockAppearancePreset({
9199
+ id: "media-text-flush-feature",
9200
+ target: "media-text",
9201
+ label: "Flush media feature",
9202
+ blockKinds: ["block.media-text"],
9203
+ design: {
9204
+ sectionSurface: "muted-band",
9205
+ contentFrame: flushPanelFrame({ bleed: "start" }),
9206
+ itemSurface: "none"
9207
+ }
9208
+ }), defineBlockAppearancePreset({
9209
+ id: "testimonials-simple-cards",
9210
+ target: "testimonials",
9211
+ label: "Simple testimonial cards",
9212
+ blockKinds: ["block.testimonials"],
9213
+ design: {
9214
+ sectionSurface: "base",
9215
+ contentFrame: plainFrame,
9216
+ itemSurface: "default"
9217
+ }
9218
+ }), defineBlockAppearancePreset({
9219
+ id: "testimonials-raised-panel",
9220
+ target: "testimonials",
9221
+ label: "Raised testimonial panel",
9222
+ blockKinds: ["block.testimonials"],
9223
+ design: {
9224
+ sectionSurface: "muted-band",
9225
+ contentFrame: panelFrame("raised"),
9226
+ itemSurface: "raised"
9227
+ }
9228
+ }), defineBlockAppearancePreset({
9229
+ id: "testimonials-accent-panel",
9230
+ target: "testimonials",
9231
+ label: "Accent testimonial panel",
9232
+ blockKinds: ["block.testimonials"],
9233
+ design: {
9234
+ sectionSurface: "accent-band",
9235
+ contentFrame: panelFrame("raised"),
9236
+ itemSurface: "raised"
9237
+ }
9238
+ }), defineBlockAppearancePreset({
9239
+ id: "testimonials-default-cards",
9240
+ target: "testimonials",
9241
+ label: "Default cards",
9242
+ blockKinds: ["block.testimonials"],
9243
+ design: {
9244
+ sectionSurface: "base",
9245
+ contentFrame: plainFrame,
9246
+ itemSurface: "none",
9247
+ testimonialCardTreatment: "default"
9248
+ }
9249
+ }), defineBlockAppearancePreset({
9250
+ id: "testimonials-statement-cards",
9251
+ target: "testimonials",
9252
+ label: "Statement cards",
9253
+ blockKinds: ["block.testimonials"],
9254
+ design: {
9255
+ sectionSurface: "accent-band",
9256
+ contentFrame: plainFrame,
9257
+ itemSurface: "raised",
9258
+ testimonialCardTreatment: "statement"
9259
+ }
9260
+ }), defineBlockAppearancePreset({
9261
+ id: "testimonials-brand-statement-cards",
9262
+ target: "testimonials",
9263
+ label: "Brand statement cards",
9264
+ blockKinds: ["block.testimonials"],
9265
+ design: {
9266
+ sectionSurface: "brand-depth-band",
9267
+ contentFrame: plainFrame,
9268
+ itemSurface: "raised",
9269
+ testimonialCardTreatment: "statement"
9270
+ }
9271
+ }), defineBlockAppearancePreset({
9272
+ id: "testimonials-non-carded",
9273
+ target: "testimonials",
9274
+ label: "Non-carded",
9275
+ blockKinds: ["block.testimonials"],
9276
+ design: {
9277
+ sectionSurface: "muted-band",
9278
+ contentFrame: plainFrame,
9279
+ itemSurface: "none",
9280
+ testimonialCardTreatment: "non-carded"
9281
+ }
9282
+ }), defineBlockAppearancePreset({
9283
+ id: "testimonials-evergreen-lead",
9284
+ target: "testimonials",
9285
+ label: "Evergreen lead",
9286
+ blockKinds: ["block.testimonials"],
9287
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9288
+ design: {
9289
+ sectionSurface: "base",
9290
+ contentFrame: plainFrame,
9291
+ itemSurface: "none"
9292
+ }
9293
+ }), defineBlockAppearancePreset({
9294
+ id: "testimonials-room-and-response",
9295
+ target: "testimonials",
9296
+ label: "Room and response",
9297
+ blockKinds: ["block.testimonials"],
9298
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9299
+ design: {
9300
+ sectionSurface: "base",
9301
+ contentFrame: plainFrame,
9302
+ itemSurface: "none"
9303
+ }
9304
+ }), defineBlockAppearancePreset({
9305
+ id: "testimonials-open-floor",
9306
+ target: "testimonials",
9307
+ label: "Open floor",
9308
+ blockKinds: ["block.testimonials"],
9309
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
9310
+ design: {
9311
+ sectionSurface: "base",
9312
+ contentFrame: plainFrame,
9313
+ itemSurface: "none"
9314
+ }
9315
+ }), defineBlockAppearancePreset({
9316
+ id: "faq-base-accordion",
9317
+ target: "faq",
9318
+ label: "Base accordion FAQ",
9319
+ blockKinds: ["block.faq"],
9320
+ design: {
9321
+ sectionSurface: "base",
9322
+ contentFrame: plainFrame,
9323
+ itemSurface: "default"
9324
+ }
9325
+ }), defineBlockAppearancePreset({
9326
+ id: "faq-contained-help",
9327
+ target: "faq",
9328
+ label: "Contained help panel",
9329
+ blockKinds: ["block.faq"],
9330
+ design: {
9331
+ sectionSurface: "muted-band",
9332
+ contentFrame: panelFrame("inset"),
9333
+ itemSurface: "default"
9334
+ }
9335
+ }), defineBlockAppearancePreset({
9336
+ id: "contact-form-panel",
9337
+ target: "contact-form",
9338
+ label: "Raised form panel",
9339
+ blockKinds: ["block.form"],
9340
+ design: {
9341
+ sectionSurface: "muted-band",
9342
+ contentFrame: panelFrame("raised"),
9343
+ itemSurface: "none"
9344
+ }
9345
+ }), defineBlockAppearancePreset({
9346
+ id: "cta-accent-band",
9347
+ target: "cta",
9348
+ label: "Accent CTA band",
9349
+ blockKinds: ["block.cta-full"],
9350
+ design: {
9351
+ sectionSurface: "accent-band",
9352
+ contentFrame: plainFrame,
9353
+ itemSurface: "none",
9354
+ eyebrowTreatment: "accent"
9355
+ }
9356
+ });
9370
9357
  //#endregion
9371
9358
  //#region ../theme-core/src/site-styles/headerCtaVariants.ts
9372
9359
  function hasButtonVariant(theme, variantId) {
@@ -9549,6 +9536,27 @@ function uniqueStrings(values) {
9549
9536
  return Array.from(new Set(values));
9550
9537
  }
9551
9538
  //#endregion
9539
+ //#region ../theme-core/src/site-styles/headerInteractionPalette.ts
9540
+ const clearSplitInteractionPalette = defineLookOptionGroup({
9541
+ id: "interaction-palette",
9542
+ label: "Hover colour",
9543
+ defaultOptionId: "accent",
9544
+ options: [
9545
+ {
9546
+ id: "accent",
9547
+ label: "Accent"
9548
+ },
9549
+ {
9550
+ id: "primary",
9551
+ label: "Primary"
9552
+ },
9553
+ {
9554
+ id: "secondary",
9555
+ label: "Secondary"
9556
+ }
9557
+ ]
9558
+ });
9559
+ //#endregion
9552
9560
  //#region ../theme-core/src/site-styles/headerLooks.ts
9553
9561
  function asHeaderLookId(value) {
9554
9562
  return value;
@@ -9682,7 +9690,7 @@ const overlayLogoAccommodations = [
9682
9690
  * optional nested styling fields that would otherwise leak from another Look.
9683
9691
  */
9684
9692
  function baseHeader(theme) {
9685
- 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;
9693
+ 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;
9686
9694
  return {
9687
9695
  ...header,
9688
9696
  navContainer: {
@@ -9697,7 +9705,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9697
9705
  id: asHeaderLayoutId("classic"),
9698
9706
  label: "Classic",
9699
9707
  description: "Logo and navigation in one practical horizontal row.",
9700
- structure: "inline-classic",
9701
9708
  variant: "classic",
9702
9709
  defaultPositioning: "sticky",
9703
9710
  shrinkOnScroll: false
@@ -9706,7 +9713,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9706
9713
  id: asHeaderLayoutId("centered"),
9707
9714
  label: "Centered",
9708
9715
  description: "Logo centered above a balanced navigation row.",
9709
- structure: "centered-stack",
9710
9716
  variant: "centered",
9711
9717
  defaultPositioning: "static",
9712
9718
  shrinkOnScroll: false,
@@ -9722,7 +9728,6 @@ const headerLayoutCatalog = defineExactCatalog()([
9722
9728
  id: asHeaderLayoutId("floating"),
9723
9729
  label: "Floating",
9724
9730
  description: "Detached header chrome that sits over the opening section.",
9725
- structure: "floating-shell",
9726
9731
  variant: "floating",
9727
9732
  defaultPositioning: "sticky",
9728
9733
  shrinkOnScroll: true,
@@ -9884,10 +9889,13 @@ const headerStyleCatalog = defineExactCatalog()([
9884
9889
  label: "Clear Split",
9885
9890
  description: "Floating logo with transparent navigation and no shared shell.",
9886
9891
  supportedLayoutIds: supportedLayouts(["floating"]),
9887
- navInteraction: "color-change",
9892
+ navInteraction: "pill-background",
9888
9893
  surface: "floating",
9889
- defaultDepth: "none",
9894
+ defaultDepth: "line",
9890
9895
  navTypography: "plain",
9896
+ openingForegroundTarget: "all",
9897
+ scrollTreatment: "contrast-glass",
9898
+ interactionPalette: clearSplitInteractionPalette,
9891
9899
  moods: ["editorial", "calm"]
9892
9900
  },
9893
9901
  {
@@ -9910,6 +9918,7 @@ const headerStyleCatalog = defineExactCatalog()([
9910
9918
  surface: "floating",
9911
9919
  defaultDepth: "shadow",
9912
9920
  navTypography: "quiet-caps",
9921
+ openingForegroundTarget: "brand-only",
9913
9922
  moods: ["expressive"]
9914
9923
  },
9915
9924
  {
@@ -9921,6 +9930,7 @@ const headerStyleCatalog = defineExactCatalog()([
9921
9930
  surface: "floating",
9922
9931
  defaultDepth: "shadow",
9923
9932
  navTypography: "heading",
9933
+ openingForegroundTarget: "brand-only",
9924
9934
  moods: ["calm", "editorial"]
9925
9935
  }
9926
9936
  ]);
@@ -10422,13 +10432,6 @@ const headerLookCatalog = defineExactCatalog()([
10422
10432
  {
10423
10433
  id: asHeaderLookId("clean-base"),
10424
10434
  label: "Clean base",
10425
- visualTreatment: "solid-neutral",
10426
- layoutBehavior: "sticky",
10427
- configuration: {
10428
- structure: "inline-classic",
10429
- treatment: "solid-neutral",
10430
- behavior: "sticky"
10431
- },
10432
10435
  openingRequirement: "none",
10433
10436
  logoAccommodations: inlineClassicLogoAccommodations,
10434
10437
  compile: cleanBaseHeader
@@ -10436,13 +10439,6 @@ const headerLookCatalog = defineExactCatalog()([
10436
10439
  {
10437
10440
  id: asHeaderLookId("classic-centered-nav"),
10438
10441
  label: "Centered nav",
10439
- visualTreatment: "solid-neutral",
10440
- layoutBehavior: "sticky",
10441
- configuration: {
10442
- structure: "inline-classic",
10443
- treatment: "solid-neutral",
10444
- behavior: "sticky"
10445
- },
10446
10442
  openingRequirement: "none",
10447
10443
  maxRecommendedNavItems: 6,
10448
10444
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -10451,13 +10447,6 @@ const headerLookCatalog = defineExactCatalog()([
10451
10447
  {
10452
10448
  id: asHeaderLookId("brand-solid"),
10453
10449
  label: "Brand solid",
10454
- visualTreatment: "solid-brand",
10455
- layoutBehavior: "sticky-shrink",
10456
- configuration: {
10457
- structure: "inline-classic",
10458
- treatment: "solid-brand",
10459
- behavior: "sticky-shrink"
10460
- },
10461
10450
  openingRequirement: "none",
10462
10451
  logoAccommodations: inlineClassicLogoAccommodations,
10463
10452
  compile: solidBrandHeader
@@ -10465,13 +10454,6 @@ const headerLookCatalog = defineExactCatalog()([
10465
10454
  {
10466
10455
  id: asHeaderLookId("serif-line"),
10467
10456
  label: "Serif line",
10468
- visualTreatment: "light-serif",
10469
- layoutBehavior: "sticky",
10470
- configuration: {
10471
- structure: "centered-stack",
10472
- treatment: "light-serif",
10473
- behavior: "sticky"
10474
- },
10475
10457
  openingRequirement: "none",
10476
10458
  maxRecommendedNavItems: 6,
10477
10459
  logoAccommodations: centeredLogoAccommodations,
@@ -10480,13 +10462,6 @@ const headerLookCatalog = defineExactCatalog()([
10480
10462
  {
10481
10463
  id: asHeaderLookId("centered-calm"),
10482
10464
  label: "Centered calm",
10483
- visualTreatment: "light-serif",
10484
- layoutBehavior: "normal-flow",
10485
- configuration: {
10486
- structure: "centered-stack",
10487
- treatment: "light-serif",
10488
- behavior: "normal-flow"
10489
- },
10490
10465
  openingRequirement: "none",
10491
10466
  maxRecommendedNavItems: 5,
10492
10467
  logoAccommodations: centeredLogoAccommodations,
@@ -10495,13 +10470,6 @@ const headerLookCatalog = defineExactCatalog()([
10495
10470
  {
10496
10471
  id: asHeaderLookId("practical-utility"),
10497
10472
  label: "Practical utility",
10498
- visualTreatment: "solid-neutral",
10499
- layoutBehavior: "sticky-shrink",
10500
- configuration: {
10501
- structure: "inline-classic",
10502
- treatment: "solid-neutral",
10503
- behavior: "sticky-shrink"
10504
- },
10505
10473
  openingRequirement: "none",
10506
10474
  requiresProminentCta: true,
10507
10475
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -10510,13 +10478,6 @@ const headerLookCatalog = defineExactCatalog()([
10510
10478
  {
10511
10479
  id: asHeaderLookId("minimal-transparent"),
10512
10480
  label: "Minimal transparent",
10513
- visualTreatment: "minimal-transparent",
10514
- layoutBehavior: "normal-flow",
10515
- configuration: {
10516
- structure: "inline-classic",
10517
- treatment: "minimal-transparent",
10518
- behavior: "normal-flow"
10519
- },
10520
10481
  openingRequirement: "reserved-space-ok",
10521
10482
  logoAccommodations: inlineClassicLogoAccommodations,
10522
10483
  compile: minimalTransparentHeader
@@ -10524,13 +10485,6 @@ const headerLookCatalog = defineExactCatalog()([
10524
10485
  {
10525
10486
  id: asHeaderLookId("transparent-overlay"),
10526
10487
  label: "Transparent overlay",
10527
- visualTreatment: "transparent-overlay",
10528
- layoutBehavior: "fixed-overlay",
10529
- configuration: {
10530
- structure: "inline-classic",
10531
- treatment: "transparent-overlay",
10532
- behavior: "fixed-overlay"
10533
- },
10534
10488
  openingRequirement: "requires-image-hero-with-contrast-overlay",
10535
10489
  maxRecommendedNavItems: 5,
10536
10490
  logoAccommodations: overlayLogoAccommodations,
@@ -10539,24 +10493,13 @@ const headerLookCatalog = defineExactCatalog()([
10539
10493
  {
10540
10494
  id: asHeaderLookId("floating-glass"),
10541
10495
  label: "Floating glass",
10542
- visualTreatment: "floating-glass",
10543
- layoutBehavior: "fixed-floating",
10544
- configuration: {
10545
- structure: "floating-shell",
10546
- treatment: "floating-glass",
10547
- behavior: "fixed-floating"
10548
- },
10549
10496
  openingRequirement: "requires-image-hero-with-contrast-overlay",
10550
10497
  maxRecommendedNavItems: 5,
10551
10498
  logoAccommodations: overlayLogoAccommodations,
10552
10499
  compile: floatingGlassHeader
10553
10500
  }
10554
10501
  ]);
10555
- new Set(headerLookCatalog.map((look) => headerConfigurationKey(look.configuration)));
10556
10502
  new Map(headerLookCatalog.map((look) => [look.id, look]));
10557
- function headerConfigurationKey(configuration) {
10558
- return `${configuration.structure}:${configuration.treatment}:${configuration.behavior}`;
10559
- }
10560
10503
  //#endregion
10561
10504
  //#region ../theme-core/src/site-styles/sectionTransitions.ts
10562
10505
  function boundaryRuntimeMetrics(family, size, heightExpression) {
@@ -14165,28 +14108,6 @@ z$1.object({
14165
14108
  spacing: z$1.enum(themeTokenRecipeOptions.spacing),
14166
14109
  motion: z$1.enum(themeTokenRecipeOptions.motion)
14167
14110
  });
14168
- const BREAKPOINT_LG = 1024;
14169
- const BREAKPOINT_XL = 1280;
14170
- const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
14171
- function mqUp(px) {
14172
- return `(min-width: ${px}px)`;
14173
- }
14174
- function mqDown(px) {
14175
- return `(max-width: ${px}px)`;
14176
- }
14177
- function mqBetween(minPx, maxPx) {
14178
- return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
14179
- }
14180
- mqUp(640);
14181
- mqUp(768);
14182
- mqUp(BREAKPOINT_LG);
14183
- mqUp(BREAKPOINT_XL);
14184
- mqDown(639);
14185
- mqDown(767);
14186
- mqDown(BREAKPOINT_LG_DOWN);
14187
- mqBetween(640, BREAKPOINT_LG_DOWN);
14188
- mqDown(640);
14189
- mqDown(768);
14190
14111
  //#endregion
14191
14112
  //#region ../theme-core/src/siteChromeOverlayClearance.ts
14192
14113
  const SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
@@ -18168,15 +18089,6 @@ const heroLayoutControlsFragment = defineFragment({
18168
18089
  */
18169
18090
  const BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
18170
18091
  const blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
18171
- /**
18172
- * Temporary rollout boundary for persisted content written before issue #1220.
18173
- * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
18174
- * only until the post-deploy role rewrite has been audited in production.
18175
- */
18176
- function canonicalizePersistedBlockButtonRole(value) {
18177
- return value === "link" || value === "tertiary" ? "ghost" : value;
18178
- }
18179
- const persistedBlockButtonRoleSchema = z$1.preprocess((value) => typeof value === "string" ? canonicalizePersistedBlockButtonRole(value) : value, blockButtonRoleSchema);
18180
18092
  const BLOCK_BUTTON_ROLE_LABELS = {
18181
18093
  primary: "Primary",
18182
18094
  secondary: "Secondary",
@@ -25428,6 +25340,12 @@ const mediaBaseSchema = z.object({
25428
25340
  poster: mediaPosterSchema.optional(),
25429
25341
  transform: transformSchema.optional()
25430
25342
  });
25343
+ /**
25344
+ * Canonical identifier carried by media values that are safe to persist.
25345
+ * Parsing trims boundary input so downstream writers cannot retain whitespace-only
25346
+ * identifiers or independently disagree about normalization.
25347
+ */
25348
+ const mediaIdentifierSchema = z.string().trim().min(1).brand();
25431
25349
  const imageMediaSchema = mediaBaseSchema.extend({ type: z.literal("image") });
25432
25350
  const videoMediaSchema = mediaBaseSchema.extend({ type: z.literal("video") });
25433
25351
  const audioMediaSchema = mediaBaseSchema.extend({ type: z.literal("audio") });
@@ -25442,6 +25360,15 @@ const mediaSchema = z.discriminatedUnion("type", [
25442
25360
  spreadsheetMediaSchema,
25443
25361
  archiveMediaSchema
25444
25362
  ]);
25363
+ const persistableMediaBaseSchema = mediaBaseSchema.extend({ identifier: mediaIdentifierSchema });
25364
+ z.discriminatedUnion("type", [
25365
+ persistableMediaBaseSchema.extend({ type: z.literal("image") }),
25366
+ persistableMediaBaseSchema.extend({ type: z.literal("video") }),
25367
+ persistableMediaBaseSchema.extend({ type: z.literal("audio") }),
25368
+ persistableMediaBaseSchema.extend({ type: z.literal("document") }),
25369
+ persistableMediaBaseSchema.extend({ type: z.literal("spreadsheet") }),
25370
+ persistableMediaBaseSchema.extend({ type: z.literal("archive") })
25371
+ ]);
25445
25372
  //#endregion
25446
25373
  //#region ../blocks/src/system/manifest/richTextSchema.ts
25447
25374
  /**
@@ -26555,7 +26482,7 @@ function isEventCalendarListLayout(value) {
26555
26482
  //#region ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
26556
26483
  const previewStageSchema = z$1.enum(["preview", "published"]);
26557
26484
  const registrationButtonVariantSchema = blockButtonRoleSchema;
26558
- const eventButtonVariantSchema = persistedBlockButtonRoleSchema;
26485
+ const eventButtonVariantSchema = blockButtonRoleSchema;
26559
26486
  const eventLayoutSchema = z$1.enum(eventCalendarListLayoutValues);
26560
26487
  const eventCalendarDisplayModeSchema = z$1.enum(eventCalendarDisplayModeValues);
26561
26488
  const eventCalendarDefaultViewSchema = z$1.enum(eventCalendarDefaultViewValues);