@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
@@ -7942,7 +7942,7 @@ var SimpleCache = class {
7942
7942
  * 1. This constant
7943
7943
  * 2. The "version" field in package.json
7944
7944
  */
7945
- const SDK_VERSION = "0.126.0";
7945
+ const SDK_VERSION = "0.127.0";
7946
7946
  //#endregion
7947
7947
  //#region src/client/error.ts
7948
7948
  let _Symbol$for;
@@ -12089,7 +12089,7 @@ function canonicalPaletteHashInput(colors, mode) {
12089
12089
  return `${mode}|${paletteColorFingerprint(colors)}`;
12090
12090
  }
12091
12091
  /**
12092
- * The shared TypeScript/SQL protocol. Do not reorder roles: the order comes
12092
+ * Stable curated-catalogue identity. Do not reorder roles: the order comes
12093
12093
  * from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
12094
12094
  */
12095
12095
  function paletteValueKey(colors, mode) {
@@ -13549,8 +13549,6 @@ const VARIANT_ROLES = [
13549
13549
  "secondary",
13550
13550
  "outline",
13551
13551
  "ghost",
13552
- "link",
13553
- "tertiary",
13554
13552
  "accent"
13555
13553
  ];
13556
13554
  /**
@@ -13559,7 +13557,7 @@ const VARIANT_ROLES = [
13559
13557
  * IDs become class selectors, so keep the contract deliberately narrower than
13560
13558
  * an arbitrary string and shared with every authoring/runtime boundary.
13561
13559
  */
13562
- const buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only");
13560
+ 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" });
13563
13561
  function parseOpaqueButtonColourToken(value) {
13564
13562
  const token = parseThemeColorToken(value);
13565
13563
  if (token === null) return null;
@@ -13962,6 +13960,59 @@ function surfaceForegroundStyle(input) {
13962
13960
  [SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting
13963
13961
  };
13964
13962
  }
13963
+ shadeBackgroundEffect({
13964
+ id: "darken-background",
13965
+ name: "Darken on Hover",
13966
+ description: "Darkens the background color on hover",
13967
+ label: "Darken Amount (shade step)",
13968
+ shadeDirection: 1
13969
+ });
13970
+ shadeBackgroundEffect({
13971
+ id: "lighten-background",
13972
+ name: "Lighten on Hover",
13973
+ description: "Lightens the background color on hover",
13974
+ label: "Lighten Amount (shade step)",
13975
+ shadeDirection: -1
13976
+ });
13977
+ function shadeBackgroundEffect(config) {
13978
+ return {
13979
+ id: config.id,
13980
+ name: config.name,
13981
+ description: config.description,
13982
+ category: "background",
13983
+ pseudoElement: "none",
13984
+ applicableTo: ["button"],
13985
+ customizableOption: {
13986
+ name: "amount",
13987
+ type: "select",
13988
+ label: config.label,
13989
+ default: 100,
13990
+ options: [
13991
+ 0,
13992
+ 100,
13993
+ 200,
13994
+ 300,
13995
+ 400,
13996
+ 500,
13997
+ 600,
13998
+ 700,
13999
+ 800,
14000
+ 900
14001
+ ]
14002
+ },
14003
+ isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
14004
+ generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
14005
+ if (buttonConfig.background.type !== "solid") return "";
14006
+ const amount = (options.amount || 100) * config.shadeDirection;
14007
+ const baseToken = buttonConfig.background.colorToken ?? "primary-500";
14008
+ return `
14009
+ :where([data-theme-scope="${themeId}"]) .${variantId}:hover {
14010
+ background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
14011
+ }
14012
+ `;
14013
+ }
14014
+ };
14015
+ }
13965
14016
  buttonSizeNameSchema.options;
13966
14017
  //#endregion
13967
14018
  //#region ../theme-core/src/buttons/styles/domain.ts
@@ -16776,6 +16827,60 @@ function resolveThemeColorReferenceValue(input, context) {
16776
16827
  const reference = parseThemeColorReference(input, context);
16777
16828
  return reference.kind === "literal-css" ? reference.value : rgbColorValue(reference.token);
16778
16829
  }
16830
+ const BREAKPOINT_LG = 1024;
16831
+ const BREAKPOINT_XL = 1280;
16832
+ const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
16833
+ function mqUp(px) {
16834
+ return `(min-width: ${px}px)`;
16835
+ }
16836
+ function mqDown(px) {
16837
+ return `(max-width: ${px}px)`;
16838
+ }
16839
+ function mqBetween(minPx, maxPx) {
16840
+ return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
16841
+ }
16842
+ mqUp(640);
16843
+ mqUp(768);
16844
+ mqUp(BREAKPOINT_LG);
16845
+ mqUp(BREAKPOINT_XL);
16846
+ mqDown(639);
16847
+ mqDown(767);
16848
+ mqDown(BREAKPOINT_LG_DOWN);
16849
+ mqBetween(640, BREAKPOINT_LG_DOWN);
16850
+ mqDown(640);
16851
+ mqDown(768);
16852
+ //#endregion
16853
+ //#region ../theme-core/src/header/scrollTreatment.ts
16854
+ const headerScrollTreatmentSchema = z$1.discriminatedUnion("kind", [z$1.object({
16855
+ kind: z$1.literal("contrast-glass"),
16856
+ backgroundTone: z$1.enum(["light", "dark"])
16857
+ })]).optional();
16858
+ //#endregion
16859
+ //#region ../theme-core/src/header/containerSchema.ts
16860
+ const headerContainerSchema = z$1.object({
16861
+ rounded: z$1.enum([
16862
+ "none",
16863
+ "sm",
16864
+ "md",
16865
+ "lg",
16866
+ "xl",
16867
+ "2xl"
16868
+ ]).default("xl"),
16869
+ border: z$1.boolean().default(true),
16870
+ shadow: z$1.boolean().default(true),
16871
+ padding: z$1.enum([
16872
+ "sm",
16873
+ "md",
16874
+ "lg"
16875
+ ]).default("md"),
16876
+ tint: z$1.string().nullable().optional(),
16877
+ opacity: z$1.number().min(0).max(1).default(.12)
16878
+ }).optional();
16879
+ const headerInteractionPaletteSchema = z$1.enum([
16880
+ "primary",
16881
+ "secondary",
16882
+ "accent"
16883
+ ]);
16779
16884
  //#endregion
16780
16885
  //#region ../theme-core/src/schema.ts
16781
16886
  const axesSchema = z$1.object({
@@ -17185,25 +17290,6 @@ const navFontWeight = z$1.enum([
17185
17290
  ]);
17186
17291
  const headerMaxWidth = z$1.enum(["container", "full"]);
17187
17292
  const headerBarFrame = z$1.enum(["full-bleed", "inset-shell"]);
17188
- const headerContainerSchema = z$1.object({
17189
- rounded: z$1.enum([
17190
- "none",
17191
- "sm",
17192
- "md",
17193
- "lg",
17194
- "xl",
17195
- "2xl"
17196
- ]).default("xl"),
17197
- border: z$1.boolean().default(true),
17198
- shadow: z$1.boolean().default(true),
17199
- padding: z$1.enum([
17200
- "sm",
17201
- "md",
17202
- "lg"
17203
- ]).default("md"),
17204
- tint: z$1.string().nullable().optional(),
17205
- opacity: z$1.number().min(0).max(1).default(.12)
17206
- }).optional();
17207
17293
  const headerBorderSchema = componentBorderSchema.extend({ position: z$1.enum([
17208
17294
  "bottom",
17209
17295
  "top",
@@ -17330,6 +17416,7 @@ const headerSchema = z$1.object({
17330
17416
  shrinkOnScroll: z$1.boolean(),
17331
17417
  maxWidth: headerMaxWidth,
17332
17418
  barFrame: headerBarFrame.optional(),
17419
+ scrollTreatment: headerScrollTreatmentSchema,
17333
17420
  logoOverride: mediaSchema$1.nullable().optional(),
17334
17421
  background: headerBackgroundSchema.default({
17335
17422
  type: "color",
@@ -17342,6 +17429,7 @@ const headerSchema = z$1.object({
17342
17429
  navFontRole: z$1.enum(["body", "heading"]).optional(),
17343
17430
  navTypography: z$1.enum(["body", "heading"]).optional(),
17344
17431
  navTextSize: navLinkStyleSchema.shape.textSize,
17432
+ interactionPalette: headerInteractionPaletteSchema.optional(),
17345
17433
  navPlacement: z$1.enum(["end", "center"]).optional(),
17346
17434
  container: headerContainerSchema,
17347
17435
  border: headerBorderSchema,
@@ -17634,770 +17722,669 @@ z$1.object({
17634
17722
  themes: z$1.array(themeSchema).length(3)
17635
17723
  });
17636
17724
  //#endregion
17725
+ //#region ../theme-core/src/site-styles/lookOptionGroups.ts
17726
+ function defineLookOptionGroup(group) {
17727
+ defaultOption(group);
17728
+ return group;
17729
+ }
17730
+ function defaultOption(group) {
17731
+ const option = group.options.find((candidate) => candidate.id === group.defaultOptionId);
17732
+ if (option) return option;
17733
+ throw new Error(`Look option group "${group.id}" defaults to missing option "${group.defaultOptionId}".`);
17734
+ }
17735
+ //#endregion
17637
17736
  //#region ../theme-core/src/site-styles/appearancePresetResolution.ts
17638
17737
  function assertValidOptionGroups(preset) {
17639
17738
  preset.optionGroups?.forEach((group) => {
17640
- 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}".`);
17739
+ defineLookOptionGroup(group);
17641
17740
  });
17642
17741
  }
17643
17742
  function defineBlockAppearancePreset(preset) {
17644
17743
  assertValidOptionGroups(preset);
17645
17744
  return preset;
17646
17745
  }
17647
- [...[
17648
- defineBlockAppearancePreset({
17649
- kind: "block-design",
17650
- id: "hero-immersive-image",
17651
- target: "hero",
17652
- label: "Immersive image hero",
17653
- blockKinds: ["block.hero"],
17654
- constraints: { layoutFamilies: ["centered", "compact"] },
17655
- layoutPatches: [{
17656
- constraints: { layoutVariantKeys: ["micro"] },
17657
- designPatch: {
17658
- sectionHeight: "banner",
17659
- heroTypographyScale: "display"
17660
- }
17661
- }],
17662
- design: {
17663
- sectionSurface: "hero-image",
17664
- contentFrame: plainFrame,
17665
- itemSurface: "none",
17666
- sectionHeight: "hero",
17667
- heroComposition: "center",
17668
- heroTypographyScale: "display",
17669
- imageSurfaceTreatment: { kind: "neutral-wash" }
17746
+ //#endregion
17747
+ //#region ../theme-core/src/site-styles/blockAppearancePresets.ts
17748
+ const brandScrimOptionGroups = [{
17749
+ id: "image-surface-treatment",
17750
+ label: "Treatment",
17751
+ defaultOptionId: "brand-scrim-primary",
17752
+ options: [{
17753
+ id: "brand-scrim-primary",
17754
+ label: "Brand scrim",
17755
+ designPatch: { imageSurfaceTreatment: {
17756
+ kind: "brand-scrim",
17757
+ token: "primary"
17758
+ } }
17759
+ }, {
17760
+ id: "neutral-scrim",
17761
+ label: "Neutral scrim",
17762
+ designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
17763
+ }]
17764
+ }];
17765
+ const microBannerLayoutPatches = [{
17766
+ constraints: { layoutVariantKeys: ["micro"] },
17767
+ designPatch: { sectionHeight: "banner" }
17768
+ }];
17769
+ defineBlockAppearancePreset({
17770
+ id: "hero-immersive-image",
17771
+ target: "hero",
17772
+ label: "Immersive image hero",
17773
+ blockKinds: ["block.hero"],
17774
+ constraints: { layoutFamilies: ["centered", "compact"] },
17775
+ layoutPatches: [{
17776
+ constraints: { layoutVariantKeys: ["micro"] },
17777
+ designPatch: {
17778
+ sectionHeight: "banner",
17779
+ heroTypographyScale: "display"
17670
17780
  }
17671
- }),
17672
- defineBlockAppearancePreset({
17673
- kind: "block-design",
17674
- id: "hero-bottom-left-panel",
17675
- target: "hero",
17676
- label: "Bottom-left panel hero",
17677
- blockKinds: ["block.hero"],
17678
- constraints: { layoutFamilies: ["centered", "compact"] },
17679
- optionGroups: [{
17680
- id: "image-surface-treatment",
17681
- label: "Treatment",
17682
- selectedOptionId: "neutral-scrim",
17683
- options: [{
17684
- id: "neutral-scrim",
17685
- label: "Neutral scrim",
17686
- designPatch: { imageSurfaceTreatment: {
17687
- kind: "neutral-scrim",
17688
- intensity: "balanced"
17689
- } }
17690
- }, {
17691
- id: "brand-scrim-primary",
17692
- label: "Brand scrim",
17693
- designPatch: { imageSurfaceTreatment: {
17694
- kind: "brand-scrim",
17695
- token: "primary",
17696
- intensity: "balanced"
17697
- } }
17698
- }]
17699
- }],
17700
- layoutPatches: [{
17701
- constraints: { layoutVariantKeys: ["micro"] },
17702
- designPatch: {
17703
- sectionHeight: "banner",
17704
- heroTypographyScale: "editorial"
17705
- }
17706
- }],
17707
- design: {
17708
- sectionSurface: "hero-image",
17709
- contentFrame: panelFrame("raised"),
17710
- itemSurface: "none",
17711
- sectionHeight: "immersive",
17712
- heroComposition: "bottom-left",
17713
- heroTypographyScale: "display",
17714
- imageSurfaceTreatment: {
17781
+ }],
17782
+ design: {
17783
+ sectionSurface: "hero-image",
17784
+ contentFrame: plainFrame,
17785
+ itemSurface: "none",
17786
+ sectionHeight: "hero",
17787
+ heroComposition: "center",
17788
+ heroTypographyScale: "display",
17789
+ imageSurfaceTreatment: { kind: "neutral-wash" }
17790
+ }
17791
+ }), defineBlockAppearancePreset({
17792
+ id: "hero-bottom-left-panel",
17793
+ target: "hero",
17794
+ label: "Bottom-left panel hero",
17795
+ blockKinds: ["block.hero"],
17796
+ constraints: { layoutFamilies: ["centered", "compact"] },
17797
+ optionGroups: [{
17798
+ id: "image-surface-treatment",
17799
+ label: "Treatment",
17800
+ defaultOptionId: "neutral-scrim",
17801
+ options: [{
17802
+ id: "neutral-scrim",
17803
+ label: "Neutral scrim",
17804
+ designPatch: { imageSurfaceTreatment: {
17715
17805
  kind: "neutral-scrim",
17716
17806
  intensity: "balanced"
17717
- }
17718
- }
17719
- }),
17720
- defineBlockAppearancePreset({
17721
- kind: "block-design",
17722
- id: "hero-poster-image",
17723
- target: "hero",
17724
- label: "Poster image hero",
17725
- blockKinds: ["block.hero"],
17726
- constraints: { layoutFamilies: ["centered", "compact"] },
17727
- layoutPatches: [{
17728
- constraints: { layoutVariantKeys: ["micro"] },
17729
- designPatch: {
17730
- sectionHeight: "banner",
17731
- heroTypographyScale: "display"
17732
- }
17733
- }],
17734
- design: {
17735
- sectionSurface: "hero-image",
17736
- contentFrame: plainFrame,
17737
- itemSurface: "none",
17738
- sectionHeight: "immersive",
17739
- heroComposition: "center",
17740
- heroTypographyScale: "poster",
17741
- imageSurfaceTreatment: {
17807
+ } }
17808
+ }, {
17809
+ id: "brand-scrim-primary",
17810
+ label: "Brand scrim",
17811
+ designPatch: { imageSurfaceTreatment: {
17742
17812
  kind: "brand-scrim",
17743
17813
  token: "primary",
17744
- intensity: "strong"
17745
- }
17746
- }
17747
- }),
17748
- defineBlockAppearancePreset({
17749
- kind: "block-design",
17750
- id: "hero-brand-scrim",
17751
- target: "hero",
17752
- label: "Brand scrim image hero",
17753
- blockKinds: ["block.hero"],
17754
- constraints: { layoutFamilies: ["centered", "compact"] },
17755
- optionGroups: [{
17756
- id: "image-surface-treatment",
17757
- label: "Treatment",
17758
- selectedOptionId: "brand-scrim-primary",
17759
- options: [{
17760
- id: "brand-scrim-primary",
17761
- label: "Brand scrim",
17762
- designPatch: { imageSurfaceTreatment: {
17763
- kind: "brand-scrim",
17764
- token: "primary"
17765
- } }
17766
- }, {
17767
- id: "neutral-scrim",
17768
- label: "Neutral scrim",
17769
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
17770
- }]
17771
- }],
17772
- layoutPatches: [{
17773
- constraints: { layoutVariantKeys: ["micro"] },
17774
- designPatch: { sectionHeight: "banner" }
17775
- }],
17776
- design: {
17777
- sectionSurface: "hero-image",
17778
- contentFrame: plainFrame,
17779
- itemSurface: "none",
17780
- sectionHeight: "immersive",
17781
- heroComposition: "center",
17782
- heroTypographyScale: "display",
17783
- imageSurfaceTreatment: {
17784
- kind: "brand-scrim",
17785
- token: "primary"
17786
- }
17787
- }
17788
- }),
17789
- defineBlockAppearancePreset({
17790
- kind: "block-design",
17791
- id: "hero-brand-scrim-fixed-frame",
17792
- target: "hero",
17793
- label: "Fixed-frame brand scrim hero",
17794
- blockKinds: ["block.hero"],
17795
- constraints: { layoutFamilies: ["centered", "compact"] },
17796
- optionGroups: [{
17797
- id: "image-surface-treatment",
17798
- label: "Treatment",
17799
- selectedOptionId: "brand-scrim-primary",
17800
- options: [{
17801
- id: "brand-scrim-primary",
17802
- label: "Brand scrim",
17803
- designPatch: { imageSurfaceTreatment: {
17804
- kind: "brand-scrim",
17805
- token: "primary"
17806
- } }
17807
- }, {
17808
- id: "neutral-scrim",
17809
- label: "Neutral scrim",
17810
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
17811
- }]
17812
- }],
17813
- layoutPatches: [{
17814
- constraints: { layoutVariantKeys: ["micro"] },
17815
- designPatch: { sectionHeight: "banner" }
17816
- }],
17817
- design: {
17818
- sectionSurface: "hero-image",
17819
- contentFrame: plainFrame,
17820
- itemSurface: "none",
17821
- sectionHeight: "immersive",
17822
- heroComposition: "center",
17823
- heroTypographyScale: "display",
17824
- imageSurfaceTreatment: {
17825
- kind: "brand-scrim",
17826
- token: "primary"
17827
- },
17828
- imageSurfaceMotion: "fixed-frame",
17829
- eyebrowTreatment: "accent-pill-bounce"
17830
- }
17831
- }),
17832
- defineBlockAppearancePreset({
17833
- kind: "block-design",
17834
- id: "hero-brand-depth-expressive",
17835
- target: "hero",
17836
- label: "Expressive brand-depth hero",
17837
- blockKinds: ["block.hero"],
17838
- constraints: { layoutFamilies: ["centered", "compact"] },
17839
- design: {
17840
- sectionSurface: "brand-depth-band",
17841
- contentFrame: plainFrame,
17842
- itemSurface: "none",
17843
- heroComposition: "center",
17844
- heroTypographyScale: "editorial",
17845
- eyebrowTreatment: "accent-pill-bounce"
17846
- }
17847
- }),
17848
- defineBlockAppearancePreset({
17849
- kind: "block-design",
17850
- id: "hero-contained-intro",
17851
- target: "hero",
17852
- label: "Contained intro hero",
17853
- blockKinds: ["block.hero"],
17854
- design: {
17855
- sectionSurface: "muted-band",
17856
- contentFrame: panelFrame("inset"),
17857
- itemSurface: "none",
17858
- heroComposition: "center",
17859
- heroTypographyScale: "editorial"
17860
- }
17861
- }),
17862
- defineBlockAppearancePreset({
17863
- kind: "block-design",
17864
- id: "hero-split-editorial",
17865
- target: "hero",
17866
- label: "Editorial split hero",
17867
- blockKinds: ["block.hero"],
17868
- constraints: { layoutFamilies: ["split"] },
17869
- design: {
17870
- sectionSurface: "base",
17871
- contentFrame: plainFrame,
17872
- itemSurface: "none",
17873
- heroTypographyScale: "editorial"
17874
- }
17875
- }),
17876
- defineBlockAppearancePreset({
17877
- kind: "block-design",
17878
- id: "hero-split-brand",
17879
- target: "hero",
17880
- label: "Brand split hero",
17881
- blockKinds: ["block.hero"],
17882
- constraints: { layoutFamilies: ["split"] },
17883
- design: {
17884
- sectionSurface: "brand-depth-band",
17885
- contentFrame: plainFrame,
17886
- itemSurface: "none",
17887
- heroTypographyScale: "display",
17888
- eyebrowTreatment: "accent-pill-bounce"
17889
- }
17890
- }),
17891
- defineBlockAppearancePreset({
17892
- kind: "block-design",
17893
- id: "hero-split-soft-panel",
17894
- target: "hero",
17895
- label: "Soft panel split hero",
17896
- blockKinds: ["block.hero"],
17897
- constraints: { layoutFamilies: ["split"] },
17898
- design: {
17899
- sectionSurface: "muted-band",
17900
- contentFrame: panelFrame("raised"),
17901
- itemSurface: "none",
17814
+ intensity: "balanced"
17815
+ } }
17816
+ }]
17817
+ }],
17818
+ layoutPatches: [{
17819
+ constraints: { layoutVariantKeys: ["micro"] },
17820
+ designPatch: {
17821
+ sectionHeight: "banner",
17902
17822
  heroTypographyScale: "editorial"
17903
17823
  }
17904
- }),
17905
- defineBlockAppearancePreset({
17906
- kind: "block-design",
17907
- id: "hero-split-accent",
17908
- target: "hero",
17909
- label: "Accent split hero",
17910
- blockKinds: ["block.hero"],
17911
- constraints: { layoutFamilies: ["split"] },
17912
- design: {
17913
- sectionSurface: "accent-band",
17914
- contentFrame: panelFrame("raised"),
17915
- itemSurface: "none",
17824
+ }],
17825
+ design: {
17826
+ sectionSurface: "hero-image",
17827
+ contentFrame: panelFrame("raised"),
17828
+ itemSurface: "none",
17829
+ sectionHeight: "immersive",
17830
+ heroComposition: "bottom-left",
17831
+ heroTypographyScale: "display",
17832
+ imageSurfaceTreatment: {
17833
+ kind: "neutral-scrim",
17834
+ intensity: "balanced"
17835
+ }
17836
+ }
17837
+ }), defineBlockAppearancePreset({
17838
+ id: "hero-poster-image",
17839
+ target: "hero",
17840
+ label: "Poster image hero",
17841
+ blockKinds: ["block.hero"],
17842
+ constraints: { layoutFamilies: ["centered", "compact"] },
17843
+ layoutPatches: [{
17844
+ constraints: { layoutVariantKeys: ["micro"] },
17845
+ designPatch: {
17846
+ sectionHeight: "banner",
17916
17847
  heroTypographyScale: "display"
17917
17848
  }
17918
- }),
17919
- defineBlockAppearancePreset({
17920
- kind: "block-design",
17921
- id: "intro-editorial-statement",
17922
- target: "intro",
17923
- label: "Editorial intro statement",
17924
- blockKinds: ["block.intro"],
17925
- constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
17926
- design: {
17927
- sectionSurface: "base",
17928
- contentFrame: plainFrame,
17929
- itemSurface: "none",
17930
- composition: {
17931
- kind: "intro",
17932
- treatment: "editorial-statement"
17933
- }
17934
- }
17935
- }),
17936
- defineBlockAppearancePreset({
17937
- kind: "block-design",
17938
- id: "intro-portrait-bio",
17939
- target: "intro",
17940
- label: "Portrait and bio",
17941
- blockKinds: ["block.intro"],
17942
- constraints: { layoutVariantKeys: ["media-copy"] },
17943
- design: {
17944
- sectionSurface: "base",
17945
- contentFrame: plainFrame,
17946
- itemSurface: "none",
17947
- composition: {
17948
- kind: "intro",
17949
- treatment: "portrait-bio"
17950
- }
17951
- }
17952
- }),
17953
- defineBlockAppearancePreset({
17954
- kind: "block-design",
17955
- id: "offerings-preview-default-cards",
17956
- target: "offerings",
17957
- label: "Default offering cards",
17958
- blockKinds: ["block.offerings-preview"],
17959
- design: {
17960
- sectionSurface: "base",
17961
- contentFrame: plainFrame,
17962
- itemSurface: "default"
17963
- }
17964
- }),
17965
- defineBlockAppearancePreset({
17966
- kind: "block-design",
17967
- id: "offerings-preview-secondary-cards",
17968
- target: "offerings",
17969
- label: "Secondary offering cards",
17970
- blockKinds: ["block.offerings-preview"],
17971
- design: {
17972
- sectionSurface: "muted-band",
17973
- contentFrame: plainFrame,
17974
- itemSurface: "inset"
17975
- }
17976
- }),
17977
- defineBlockAppearancePreset({
17978
- kind: "block-design",
17979
- id: "offerings-preview-non-carded",
17980
- target: "offerings",
17981
- label: "Non-carded offerings",
17982
- blockKinds: ["block.offerings-preview"],
17983
- design: {
17984
- sectionSurface: "muted-band",
17985
- contentFrame: plainFrame,
17986
- itemSurface: "editorial"
17987
- }
17988
- }),
17989
- defineBlockAppearancePreset({
17990
- kind: "block-design",
17991
- id: "offerings-preview-paired-feature-cards",
17992
- target: "offerings",
17993
- label: "Paired feature cards",
17994
- blockKinds: ["block.offerings-preview"],
17995
- constraints: { layoutVariantKeys: ["cards"] },
17996
- design: {
17997
- sectionSurface: "base",
17998
- contentFrame: plainFrame,
17999
- itemSurface: "none"
18000
- }
18001
- }),
18002
- defineBlockAppearancePreset({
18003
- kind: "block-design",
18004
- id: "offerings-preview-open-editorial-columns",
18005
- target: "offerings",
18006
- label: "Open editorial columns",
18007
- blockKinds: ["block.offerings-preview"],
18008
- constraints: { layoutVariantKeys: ["cards"] },
18009
- design: {
18010
- sectionSurface: "base",
18011
- contentFrame: plainFrame,
18012
- itemSurface: "none"
18013
- }
18014
- }),
18015
- defineBlockAppearancePreset({
18016
- kind: "block-design",
18017
- id: "offerings-preview-joined-programme-panel",
18018
- target: "offerings",
18019
- label: "Joined programme panel",
18020
- blockKinds: ["block.offerings-preview"],
18021
- constraints: { layoutVariantKeys: ["cards"] },
18022
- design: {
18023
- sectionSurface: "base",
18024
- contentFrame: plainFrame,
18025
- itemSurface: "none"
18026
- }
18027
- }),
18028
- defineBlockAppearancePreset({
18029
- kind: "block-design",
18030
- id: "feature-cards-raised-rule",
18031
- target: "feature-cards",
18032
- label: "Raised cards with rule",
18033
- blockKinds: ["block.feature-cards"],
18034
- design: {
18035
- sectionSurface: "base",
18036
- contentFrame: plainFrame,
18037
- itemSurface: "raised"
18038
- }
18039
- }),
18040
- defineBlockAppearancePreset({
18041
- kind: "block-design",
18042
- id: "feature-cards-bold-colors",
18043
- target: "feature-cards",
18044
- label: "Bold colour-blocked cards",
18045
- blockKinds: ["block.feature-cards"],
18046
- design: {
18047
- sectionSurface: "base",
18048
- contentFrame: plainFrame,
18049
- itemSurface: "color-blocked"
18050
- }
18051
- }),
18052
- defineBlockAppearancePreset({
18053
- kind: "block-design",
18054
- id: "feature-cards-editorial-columns",
18055
- target: "feature-cards",
18056
- label: "Editorial open columns",
18057
- blockKinds: ["block.feature-cards"],
18058
- design: {
18059
- sectionSurface: "base",
18060
- contentFrame: plainFrame,
18061
- itemSurface: "editorial"
18062
- }
18063
- }),
18064
- defineBlockAppearancePreset({
18065
- kind: "block-design",
18066
- id: "feature-cards-asymmetric-emphasis",
18067
- target: "feature-cards",
18068
- label: "Asymmetric emphasis pair",
18069
- blockKinds: ["block.feature-cards"],
18070
- constraints: { layoutFamilies: ["grid"] },
18071
- design: {
18072
- sectionSurface: "base",
18073
- contentFrame: plainFrame,
18074
- itemSurface: "none",
18075
- composition: {
18076
- kind: "feature-cards",
18077
- treatment: "asymmetric-emphasis"
18078
- }
18079
- }
18080
- }),
18081
- defineBlockAppearancePreset({
18082
- kind: "block-design",
18083
- id: "feature-cards-framed-programme",
18084
- target: "feature-cards",
18085
- label: "Framed programme cards",
18086
- blockKinds: ["block.feature-cards"],
18087
- constraints: { layoutFamilies: ["grid"] },
18088
- design: {
18089
- sectionSurface: "brand-depth-band",
18090
- contentFrame: plainFrame,
18091
- itemSurface: "inset",
18092
- composition: {
18093
- kind: "feature-cards",
18094
- treatment: "framed-programme"
18095
- }
18096
- }
18097
- }),
18098
- defineBlockAppearancePreset({
18099
- kind: "block-design",
18100
- id: "feature-cards-soft-panels",
18101
- target: "feature-cards",
18102
- label: "Soft tinted panels",
18103
- blockKinds: ["block.feature-cards"],
18104
- design: {
18105
- sectionSurface: "base",
18106
- contentFrame: plainFrame,
18107
- itemSurface: "inset"
18108
- }
18109
- }),
18110
- defineBlockAppearancePreset({
18111
- kind: "block-design",
18112
- id: "feature-cards-editorial-diptych",
18113
- target: "feature-cards",
18114
- label: "Editorial diptych",
18115
- blockKinds: ["block.feature-cards"],
18116
- constraints: { layoutVariantKeys: ["editorial-diptych"] },
18117
- design: {
18118
- sectionSurface: "base",
18119
- contentFrame: plainFrame,
18120
- itemSurface: "flat"
18121
- }
18122
- }),
18123
- defineBlockAppearancePreset({
18124
- kind: "block-design",
18125
- id: "feature-cards-editorial-pathways",
18126
- target: "feature-cards",
18127
- label: "Editorial pathways",
18128
- blockKinds: ["block.feature-cards"],
18129
- constraints: { layoutVariantKeys: ["editorial-pathways"] },
18130
- design: {
18131
- sectionSurface: "base",
18132
- contentFrame: plainFrame,
18133
- itemSurface: "flat"
18134
- }
18135
- }),
18136
- defineBlockAppearancePreset({
18137
- kind: "block-design",
18138
- id: "feature-cards-photo-tiles",
18139
- target: "feature-cards",
18140
- label: "Photo tiles",
18141
- blockKinds: ["block.feature-cards"],
18142
- design: {
18143
- sectionSurface: "base",
18144
- contentFrame: plainFrame,
18145
- itemSurface: "raised"
18146
- }
18147
- }),
18148
- defineBlockAppearancePreset({
18149
- kind: "block-design",
18150
- id: "events-lined-panel",
18151
- target: "events",
18152
- label: "Raised event panel",
18153
- blockKinds: ["block.event-calendar", "block.event-listing"],
18154
- design: {
18155
- sectionSurface: "base",
18156
- contentFrame: panelFrame("raised"),
18157
- itemSurface: "none"
18158
- }
18159
- }),
18160
- defineBlockAppearancePreset({
18161
- kind: "block-design",
18162
- id: "events-ruled-register",
18163
- target: "events",
18164
- label: "Ruled event register",
18165
- blockKinds: ["block.event-calendar", "block.event-listing"],
18166
- design: {
18167
- sectionSurface: "brand-depth-band",
18168
- contentFrame: plainFrame,
18169
- itemSurface: "none",
18170
- eventListTreatment: "ruled-register"
18171
- }
18172
- }),
18173
- defineBlockAppearancePreset({
18174
- kind: "block-design",
18175
- id: "events-editorial-register",
18176
- target: "events",
18177
- label: "Editorial event register",
18178
- blockKinds: ["block.event-calendar", "block.event-listing"],
18179
- design: {
18180
- sectionSurface: "base",
18181
- contentFrame: plainFrame,
18182
- itemSurface: "none",
18183
- eventListTreatment: "editorial-register"
18184
- }
18185
- }),
18186
- defineBlockAppearancePreset({
18187
- kind: "block-design",
18188
- id: "events-dense-index",
18189
- target: "events",
18190
- label: "Dense event index",
18191
- blockKinds: ["block.event-calendar", "block.event-listing"],
18192
- design: {
18193
- sectionSurface: "accent-band",
18194
- contentFrame: plainFrame,
18195
- itemSurface: "none",
18196
- eventListTreatment: "dense-index"
18197
- }
18198
- }),
18199
- defineBlockAppearancePreset({
18200
- kind: "block-design",
18201
- id: "schedule-details-brand-depth",
18202
- target: "events",
18203
- label: "Brand-depth schedule details",
18204
- blockKinds: ["block.event-details", "block.course-details"],
18205
- design: {
18206
- sectionSurface: "brand-depth-band",
18207
- contentFrame: plainFrame,
18208
- itemSurface: "none",
18209
- tileTreatment: "brand-depth"
18210
- }
18211
- }),
18212
- defineBlockAppearancePreset({
18213
- kind: "block-design",
18214
- id: "media-text-flush-feature",
18215
- target: "media-text",
18216
- label: "Flush media feature",
18217
- blockKinds: ["block.media-text"],
18218
- design: {
18219
- sectionSurface: "muted-band",
18220
- contentFrame: flushPanelFrame({ bleed: "start" }),
18221
- itemSurface: "none"
18222
- }
18223
- }),
18224
- defineBlockAppearancePreset({
18225
- kind: "block-design",
18226
- id: "testimonials-simple-cards",
18227
- target: "testimonials",
18228
- label: "Simple testimonial cards",
18229
- blockKinds: ["block.testimonials"],
18230
- design: {
18231
- sectionSurface: "base",
18232
- contentFrame: plainFrame,
18233
- itemSurface: "default"
18234
- }
18235
- }),
18236
- defineBlockAppearancePreset({
18237
- kind: "block-design",
18238
- id: "testimonials-raised-panel",
18239
- target: "testimonials",
18240
- label: "Raised testimonial panel",
18241
- blockKinds: ["block.testimonials"],
18242
- design: {
18243
- sectionSurface: "muted-band",
18244
- contentFrame: panelFrame("raised"),
18245
- itemSurface: "raised"
18246
- }
18247
- }),
18248
- defineBlockAppearancePreset({
18249
- kind: "block-design",
18250
- id: "testimonials-accent-panel",
18251
- target: "testimonials",
18252
- label: "Accent testimonial panel",
18253
- blockKinds: ["block.testimonials"],
18254
- design: {
18255
- sectionSurface: "accent-band",
18256
- contentFrame: panelFrame("raised"),
18257
- itemSurface: "raised"
18258
- }
18259
- }),
18260
- defineBlockAppearancePreset({
18261
- kind: "block-design",
18262
- id: "testimonials-default-cards",
18263
- target: "testimonials",
18264
- label: "Default cards",
18265
- blockKinds: ["block.testimonials"],
18266
- design: {
18267
- sectionSurface: "base",
18268
- contentFrame: plainFrame,
18269
- itemSurface: "none",
18270
- testimonialCardTreatment: "default"
18271
- }
18272
- }),
18273
- defineBlockAppearancePreset({
18274
- kind: "block-design",
18275
- id: "testimonials-statement-cards",
18276
- target: "testimonials",
18277
- label: "Statement cards",
18278
- blockKinds: ["block.testimonials"],
18279
- design: {
18280
- sectionSurface: "accent-band",
18281
- contentFrame: plainFrame,
18282
- itemSurface: "raised",
18283
- testimonialCardTreatment: "statement"
18284
- }
18285
- }),
18286
- defineBlockAppearancePreset({
18287
- kind: "block-design",
18288
- id: "testimonials-brand-statement-cards",
18289
- target: "testimonials",
18290
- label: "Brand statement cards",
18291
- blockKinds: ["block.testimonials"],
18292
- design: {
18293
- sectionSurface: "brand-depth-band",
18294
- contentFrame: plainFrame,
18295
- itemSurface: "raised",
18296
- testimonialCardTreatment: "statement"
18297
- }
18298
- }),
18299
- defineBlockAppearancePreset({
18300
- kind: "block-design",
18301
- id: "testimonials-non-carded",
18302
- target: "testimonials",
18303
- label: "Non-carded",
18304
- blockKinds: ["block.testimonials"],
18305
- design: {
18306
- sectionSurface: "muted-band",
18307
- contentFrame: plainFrame,
18308
- itemSurface: "none",
18309
- testimonialCardTreatment: "non-carded"
18310
- }
18311
- }),
18312
- defineBlockAppearancePreset({
18313
- kind: "block-design",
18314
- id: "testimonials-evergreen-lead",
18315
- target: "testimonials",
18316
- label: "Evergreen lead",
18317
- blockKinds: ["block.testimonials"],
18318
- constraints: { layoutVariantKeys: ["featured-editorial"] },
18319
- design: {
18320
- sectionSurface: "base",
18321
- contentFrame: plainFrame,
18322
- itemSurface: "none"
18323
- }
18324
- }),
18325
- defineBlockAppearancePreset({
18326
- kind: "block-design",
18327
- id: "testimonials-room-and-response",
18328
- target: "testimonials",
18329
- label: "Room and response",
18330
- blockKinds: ["block.testimonials"],
18331
- constraints: { layoutVariantKeys: ["featured-editorial"] },
18332
- design: {
18333
- sectionSurface: "base",
18334
- contentFrame: plainFrame,
18335
- itemSurface: "none"
18336
- }
18337
- }),
18338
- defineBlockAppearancePreset({
18339
- kind: "block-design",
18340
- id: "testimonials-open-floor",
18341
- target: "testimonials",
18342
- label: "Open floor",
18343
- blockKinds: ["block.testimonials"],
18344
- constraints: { layoutVariantKeys: ["featured-editorial"] },
18345
- design: {
18346
- sectionSurface: "base",
18347
- contentFrame: plainFrame,
18348
- itemSurface: "none"
18349
- }
18350
- }),
18351
- defineBlockAppearancePreset({
18352
- kind: "block-design",
18353
- id: "faq-base-accordion",
18354
- target: "faq",
18355
- label: "Base accordion FAQ",
18356
- blockKinds: ["block.faq"],
18357
- design: {
18358
- sectionSurface: "base",
18359
- contentFrame: plainFrame,
18360
- itemSurface: "default"
18361
- }
18362
- }),
18363
- defineBlockAppearancePreset({
18364
- kind: "block-design",
18365
- id: "faq-contained-help",
18366
- target: "faq",
18367
- label: "Contained help panel",
18368
- blockKinds: ["block.faq"],
18369
- design: {
18370
- sectionSurface: "muted-band",
18371
- contentFrame: panelFrame("inset"),
18372
- itemSurface: "default"
18373
- }
18374
- }),
18375
- defineBlockAppearancePreset({
18376
- kind: "block-design",
18377
- id: "contact-form-panel",
18378
- target: "contact-form",
18379
- label: "Raised form panel",
18380
- blockKinds: ["block.form"],
18381
- design: {
18382
- sectionSurface: "muted-band",
18383
- contentFrame: panelFrame("raised"),
18384
- itemSurface: "none"
18385
- }
18386
- }),
18387
- defineBlockAppearancePreset({
18388
- kind: "block-design",
18389
- id: "cta-accent-band",
18390
- target: "cta",
18391
- label: "Accent CTA band",
18392
- blockKinds: ["block.cta-full"],
18393
- design: {
18394
- sectionSurface: "accent-band",
18395
- contentFrame: plainFrame,
18396
- itemSurface: "none",
18397
- eyebrowTreatment: "accent"
18398
- }
18399
- })
18400
- ]];
17849
+ }],
17850
+ design: {
17851
+ sectionSurface: "hero-image",
17852
+ contentFrame: plainFrame,
17853
+ itemSurface: "none",
17854
+ sectionHeight: "immersive",
17855
+ heroComposition: "center",
17856
+ heroTypographyScale: "poster",
17857
+ imageSurfaceTreatment: {
17858
+ kind: "brand-scrim",
17859
+ token: "primary",
17860
+ intensity: "strong"
17861
+ }
17862
+ }
17863
+ }), defineBlockAppearancePreset({
17864
+ id: "hero-brand-scrim",
17865
+ target: "hero",
17866
+ label: "Brand scrim image hero",
17867
+ blockKinds: ["block.hero"],
17868
+ constraints: { layoutFamilies: ["centered", "compact"] },
17869
+ optionGroups: brandScrimOptionGroups,
17870
+ layoutPatches: microBannerLayoutPatches,
17871
+ design: {
17872
+ sectionSurface: "hero-image",
17873
+ contentFrame: plainFrame,
17874
+ itemSurface: "none",
17875
+ sectionHeight: "immersive",
17876
+ heroComposition: "center",
17877
+ heroTypographyScale: "display",
17878
+ imageSurfaceTreatment: {
17879
+ kind: "brand-scrim",
17880
+ token: "primary"
17881
+ }
17882
+ }
17883
+ }), defineBlockAppearancePreset({
17884
+ id: "hero-brand-scrim-fixed-frame",
17885
+ target: "hero",
17886
+ label: "Fixed-frame brand scrim hero",
17887
+ blockKinds: ["block.hero"],
17888
+ constraints: { layoutFamilies: ["centered", "compact"] },
17889
+ optionGroups: brandScrimOptionGroups,
17890
+ layoutPatches: microBannerLayoutPatches,
17891
+ design: {
17892
+ sectionSurface: "hero-image",
17893
+ contentFrame: plainFrame,
17894
+ itemSurface: "none",
17895
+ sectionHeight: "immersive",
17896
+ heroComposition: "center",
17897
+ heroTypographyScale: "display",
17898
+ imageSurfaceTreatment: {
17899
+ kind: "brand-scrim",
17900
+ token: "primary"
17901
+ },
17902
+ imageSurfaceMotion: "fixed-frame",
17903
+ eyebrowTreatment: "accent-pill-bounce"
17904
+ }
17905
+ }), defineBlockAppearancePreset({
17906
+ id: "hero-brand-depth-expressive",
17907
+ target: "hero",
17908
+ label: "Expressive brand-depth hero",
17909
+ blockKinds: ["block.hero"],
17910
+ constraints: { layoutFamilies: ["centered", "compact"] },
17911
+ design: {
17912
+ sectionSurface: "brand-depth-band",
17913
+ contentFrame: plainFrame,
17914
+ itemSurface: "none",
17915
+ heroComposition: "center",
17916
+ heroTypographyScale: "editorial",
17917
+ eyebrowTreatment: "accent-pill-bounce"
17918
+ }
17919
+ }), defineBlockAppearancePreset({
17920
+ id: "hero-contained-intro",
17921
+ target: "hero",
17922
+ label: "Contained intro hero",
17923
+ blockKinds: ["block.hero"],
17924
+ design: {
17925
+ sectionSurface: "muted-band",
17926
+ contentFrame: panelFrame("inset"),
17927
+ itemSurface: "none",
17928
+ heroComposition: "center",
17929
+ heroTypographyScale: "editorial"
17930
+ }
17931
+ }), defineBlockAppearancePreset({
17932
+ id: "hero-split-editorial",
17933
+ target: "hero",
17934
+ label: "Editorial split hero",
17935
+ blockKinds: ["block.hero"],
17936
+ constraints: { layoutFamilies: ["split"] },
17937
+ design: {
17938
+ sectionSurface: "base",
17939
+ contentFrame: plainFrame,
17940
+ itemSurface: "none",
17941
+ heroTypographyScale: "editorial"
17942
+ }
17943
+ }), defineBlockAppearancePreset({
17944
+ id: "hero-split-brand",
17945
+ target: "hero",
17946
+ label: "Brand split hero",
17947
+ blockKinds: ["block.hero"],
17948
+ constraints: { layoutFamilies: ["split"] },
17949
+ design: {
17950
+ sectionSurface: "brand-depth-band",
17951
+ contentFrame: plainFrame,
17952
+ itemSurface: "none",
17953
+ heroTypographyScale: "display",
17954
+ eyebrowTreatment: "accent-pill-bounce"
17955
+ }
17956
+ }), defineBlockAppearancePreset({
17957
+ id: "hero-split-soft-panel",
17958
+ target: "hero",
17959
+ label: "Soft panel split hero",
17960
+ blockKinds: ["block.hero"],
17961
+ constraints: { layoutFamilies: ["split"] },
17962
+ design: {
17963
+ sectionSurface: "muted-band",
17964
+ contentFrame: panelFrame("raised"),
17965
+ itemSurface: "none",
17966
+ heroTypographyScale: "editorial"
17967
+ }
17968
+ }), defineBlockAppearancePreset({
17969
+ id: "hero-split-accent",
17970
+ target: "hero",
17971
+ label: "Accent split hero",
17972
+ blockKinds: ["block.hero"],
17973
+ constraints: { layoutFamilies: ["split"] },
17974
+ design: {
17975
+ sectionSurface: "accent-band",
17976
+ contentFrame: panelFrame("raised"),
17977
+ itemSurface: "none",
17978
+ heroTypographyScale: "display"
17979
+ }
17980
+ }), defineBlockAppearancePreset({
17981
+ id: "intro-editorial-statement",
17982
+ target: "intro",
17983
+ label: "Editorial intro statement",
17984
+ blockKinds: ["block.intro"],
17985
+ constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
17986
+ design: {
17987
+ sectionSurface: "base",
17988
+ contentFrame: plainFrame,
17989
+ itemSurface: "none",
17990
+ composition: {
17991
+ kind: "intro",
17992
+ treatment: "editorial-statement"
17993
+ }
17994
+ }
17995
+ }), defineBlockAppearancePreset({
17996
+ id: "intro-portrait-bio",
17997
+ target: "intro",
17998
+ label: "Portrait and bio",
17999
+ blockKinds: ["block.intro"],
18000
+ constraints: { layoutVariantKeys: ["media-copy"] },
18001
+ design: {
18002
+ sectionSurface: "base",
18003
+ contentFrame: plainFrame,
18004
+ itemSurface: "none",
18005
+ composition: {
18006
+ kind: "intro",
18007
+ treatment: "portrait-bio"
18008
+ }
18009
+ }
18010
+ }), defineBlockAppearancePreset({
18011
+ id: "offerings-preview-default-cards",
18012
+ target: "offerings",
18013
+ label: "Default offering cards",
18014
+ blockKinds: ["block.offerings-preview"],
18015
+ design: {
18016
+ sectionSurface: "base",
18017
+ contentFrame: plainFrame,
18018
+ itemSurface: "default"
18019
+ }
18020
+ }), defineBlockAppearancePreset({
18021
+ id: "offerings-preview-secondary-cards",
18022
+ target: "offerings",
18023
+ label: "Secondary offering cards",
18024
+ blockKinds: ["block.offerings-preview"],
18025
+ design: {
18026
+ sectionSurface: "muted-band",
18027
+ contentFrame: plainFrame,
18028
+ itemSurface: "inset"
18029
+ }
18030
+ }), defineBlockAppearancePreset({
18031
+ id: "offerings-preview-non-carded",
18032
+ target: "offerings",
18033
+ label: "Non-carded offerings",
18034
+ blockKinds: ["block.offerings-preview"],
18035
+ design: {
18036
+ sectionSurface: "muted-band",
18037
+ contentFrame: plainFrame,
18038
+ itemSurface: "editorial"
18039
+ }
18040
+ }), defineBlockAppearancePreset({
18041
+ id: "offerings-preview-paired-feature-cards",
18042
+ target: "offerings",
18043
+ label: "Paired feature cards",
18044
+ blockKinds: ["block.offerings-preview"],
18045
+ constraints: { layoutVariantKeys: ["cards"] },
18046
+ design: {
18047
+ sectionSurface: "base",
18048
+ contentFrame: plainFrame,
18049
+ itemSurface: "none"
18050
+ }
18051
+ }), defineBlockAppearancePreset({
18052
+ id: "offerings-preview-open-editorial-columns",
18053
+ target: "offerings",
18054
+ label: "Open editorial columns",
18055
+ blockKinds: ["block.offerings-preview"],
18056
+ constraints: { layoutVariantKeys: ["cards"] },
18057
+ design: {
18058
+ sectionSurface: "base",
18059
+ contentFrame: plainFrame,
18060
+ itemSurface: "none"
18061
+ }
18062
+ }), defineBlockAppearancePreset({
18063
+ id: "offerings-preview-joined-programme-panel",
18064
+ target: "offerings",
18065
+ label: "Joined programme panel",
18066
+ blockKinds: ["block.offerings-preview"],
18067
+ constraints: { layoutVariantKeys: ["cards"] },
18068
+ design: {
18069
+ sectionSurface: "base",
18070
+ contentFrame: plainFrame,
18071
+ itemSurface: "none"
18072
+ }
18073
+ }), defineBlockAppearancePreset({
18074
+ id: "feature-cards-raised-rule",
18075
+ target: "feature-cards",
18076
+ label: "Raised cards with rule",
18077
+ blockKinds: ["block.feature-cards"],
18078
+ design: {
18079
+ sectionSurface: "base",
18080
+ contentFrame: plainFrame,
18081
+ itemSurface: "raised"
18082
+ }
18083
+ }), defineBlockAppearancePreset({
18084
+ id: "feature-cards-bold-colors",
18085
+ target: "feature-cards",
18086
+ label: "Bold colour-blocked cards",
18087
+ blockKinds: ["block.feature-cards"],
18088
+ design: {
18089
+ sectionSurface: "base",
18090
+ contentFrame: plainFrame,
18091
+ itemSurface: "color-blocked"
18092
+ }
18093
+ }), defineBlockAppearancePreset({
18094
+ id: "feature-cards-editorial-columns",
18095
+ target: "feature-cards",
18096
+ label: "Editorial open columns",
18097
+ blockKinds: ["block.feature-cards"],
18098
+ design: {
18099
+ sectionSurface: "base",
18100
+ contentFrame: plainFrame,
18101
+ itemSurface: "editorial"
18102
+ }
18103
+ }), defineBlockAppearancePreset({
18104
+ id: "feature-cards-asymmetric-emphasis",
18105
+ target: "feature-cards",
18106
+ label: "Asymmetric emphasis pair",
18107
+ blockKinds: ["block.feature-cards"],
18108
+ constraints: { layoutFamilies: ["grid"] },
18109
+ design: {
18110
+ sectionSurface: "base",
18111
+ contentFrame: plainFrame,
18112
+ itemSurface: "none",
18113
+ composition: {
18114
+ kind: "feature-cards",
18115
+ treatment: "asymmetric-emphasis"
18116
+ }
18117
+ }
18118
+ }), defineBlockAppearancePreset({
18119
+ id: "feature-cards-framed-programme",
18120
+ target: "feature-cards",
18121
+ label: "Framed programme cards",
18122
+ blockKinds: ["block.feature-cards"],
18123
+ constraints: { layoutFamilies: ["grid"] },
18124
+ design: {
18125
+ sectionSurface: "brand-depth-band",
18126
+ contentFrame: plainFrame,
18127
+ itemSurface: "inset",
18128
+ composition: {
18129
+ kind: "feature-cards",
18130
+ treatment: "framed-programme"
18131
+ }
18132
+ }
18133
+ }), defineBlockAppearancePreset({
18134
+ id: "feature-cards-soft-panels",
18135
+ target: "feature-cards",
18136
+ label: "Soft tinted panels",
18137
+ blockKinds: ["block.feature-cards"],
18138
+ design: {
18139
+ sectionSurface: "base",
18140
+ contentFrame: plainFrame,
18141
+ itemSurface: "inset"
18142
+ }
18143
+ }), defineBlockAppearancePreset({
18144
+ id: "feature-cards-editorial-diptych",
18145
+ target: "feature-cards",
18146
+ label: "Editorial diptych",
18147
+ blockKinds: ["block.feature-cards"],
18148
+ constraints: { layoutVariantKeys: ["editorial-diptych"] },
18149
+ design: {
18150
+ sectionSurface: "base",
18151
+ contentFrame: plainFrame,
18152
+ itemSurface: "flat"
18153
+ }
18154
+ }), defineBlockAppearancePreset({
18155
+ id: "feature-cards-editorial-pathways",
18156
+ target: "feature-cards",
18157
+ label: "Editorial pathways",
18158
+ blockKinds: ["block.feature-cards"],
18159
+ constraints: { layoutVariantKeys: ["editorial-pathways"] },
18160
+ design: {
18161
+ sectionSurface: "base",
18162
+ contentFrame: plainFrame,
18163
+ itemSurface: "flat"
18164
+ }
18165
+ }), defineBlockAppearancePreset({
18166
+ id: "feature-cards-photo-tiles",
18167
+ target: "feature-cards",
18168
+ label: "Photo tiles",
18169
+ blockKinds: ["block.feature-cards"],
18170
+ design: {
18171
+ sectionSurface: "base",
18172
+ contentFrame: plainFrame,
18173
+ itemSurface: "raised"
18174
+ }
18175
+ }), defineBlockAppearancePreset({
18176
+ id: "events-lined-panel",
18177
+ target: "events",
18178
+ label: "Raised event panel",
18179
+ blockKinds: ["block.event-calendar", "block.event-listing"],
18180
+ design: {
18181
+ sectionSurface: "base",
18182
+ contentFrame: panelFrame("raised"),
18183
+ itemSurface: "none"
18184
+ }
18185
+ }), defineBlockAppearancePreset({
18186
+ id: "events-ruled-register",
18187
+ target: "events",
18188
+ label: "Ruled event register",
18189
+ blockKinds: ["block.event-calendar", "block.event-listing"],
18190
+ design: {
18191
+ sectionSurface: "brand-depth-band",
18192
+ contentFrame: plainFrame,
18193
+ itemSurface: "none",
18194
+ eventListTreatment: "ruled-register"
18195
+ }
18196
+ }), defineBlockAppearancePreset({
18197
+ id: "events-editorial-register",
18198
+ target: "events",
18199
+ label: "Editorial event register",
18200
+ blockKinds: ["block.event-calendar", "block.event-listing"],
18201
+ design: {
18202
+ sectionSurface: "base",
18203
+ contentFrame: plainFrame,
18204
+ itemSurface: "none",
18205
+ eventListTreatment: "editorial-register"
18206
+ }
18207
+ }), defineBlockAppearancePreset({
18208
+ id: "events-dense-index",
18209
+ target: "events",
18210
+ label: "Dense event index",
18211
+ blockKinds: ["block.event-calendar", "block.event-listing"],
18212
+ design: {
18213
+ sectionSurface: "accent-band",
18214
+ contentFrame: plainFrame,
18215
+ itemSurface: "none",
18216
+ eventListTreatment: "dense-index"
18217
+ }
18218
+ }), defineBlockAppearancePreset({
18219
+ id: "schedule-details-brand-depth",
18220
+ target: "events",
18221
+ label: "Brand-depth schedule details",
18222
+ blockKinds: ["block.event-details", "block.course-details"],
18223
+ design: {
18224
+ sectionSurface: "brand-depth-band",
18225
+ contentFrame: plainFrame,
18226
+ itemSurface: "none",
18227
+ tileTreatment: "brand-depth"
18228
+ }
18229
+ }), defineBlockAppearancePreset({
18230
+ id: "media-text-flush-feature",
18231
+ target: "media-text",
18232
+ label: "Flush media feature",
18233
+ blockKinds: ["block.media-text"],
18234
+ design: {
18235
+ sectionSurface: "muted-band",
18236
+ contentFrame: flushPanelFrame({ bleed: "start" }),
18237
+ itemSurface: "none"
18238
+ }
18239
+ }), defineBlockAppearancePreset({
18240
+ id: "testimonials-simple-cards",
18241
+ target: "testimonials",
18242
+ label: "Simple testimonial cards",
18243
+ blockKinds: ["block.testimonials"],
18244
+ design: {
18245
+ sectionSurface: "base",
18246
+ contentFrame: plainFrame,
18247
+ itemSurface: "default"
18248
+ }
18249
+ }), defineBlockAppearancePreset({
18250
+ id: "testimonials-raised-panel",
18251
+ target: "testimonials",
18252
+ label: "Raised testimonial panel",
18253
+ blockKinds: ["block.testimonials"],
18254
+ design: {
18255
+ sectionSurface: "muted-band",
18256
+ contentFrame: panelFrame("raised"),
18257
+ itemSurface: "raised"
18258
+ }
18259
+ }), defineBlockAppearancePreset({
18260
+ id: "testimonials-accent-panel",
18261
+ target: "testimonials",
18262
+ label: "Accent testimonial panel",
18263
+ blockKinds: ["block.testimonials"],
18264
+ design: {
18265
+ sectionSurface: "accent-band",
18266
+ contentFrame: panelFrame("raised"),
18267
+ itemSurface: "raised"
18268
+ }
18269
+ }), defineBlockAppearancePreset({
18270
+ id: "testimonials-default-cards",
18271
+ target: "testimonials",
18272
+ label: "Default cards",
18273
+ blockKinds: ["block.testimonials"],
18274
+ design: {
18275
+ sectionSurface: "base",
18276
+ contentFrame: plainFrame,
18277
+ itemSurface: "none",
18278
+ testimonialCardTreatment: "default"
18279
+ }
18280
+ }), defineBlockAppearancePreset({
18281
+ id: "testimonials-statement-cards",
18282
+ target: "testimonials",
18283
+ label: "Statement cards",
18284
+ blockKinds: ["block.testimonials"],
18285
+ design: {
18286
+ sectionSurface: "accent-band",
18287
+ contentFrame: plainFrame,
18288
+ itemSurface: "raised",
18289
+ testimonialCardTreatment: "statement"
18290
+ }
18291
+ }), defineBlockAppearancePreset({
18292
+ id: "testimonials-brand-statement-cards",
18293
+ target: "testimonials",
18294
+ label: "Brand statement cards",
18295
+ blockKinds: ["block.testimonials"],
18296
+ design: {
18297
+ sectionSurface: "brand-depth-band",
18298
+ contentFrame: plainFrame,
18299
+ itemSurface: "raised",
18300
+ testimonialCardTreatment: "statement"
18301
+ }
18302
+ }), defineBlockAppearancePreset({
18303
+ id: "testimonials-non-carded",
18304
+ target: "testimonials",
18305
+ label: "Non-carded",
18306
+ blockKinds: ["block.testimonials"],
18307
+ design: {
18308
+ sectionSurface: "muted-band",
18309
+ contentFrame: plainFrame,
18310
+ itemSurface: "none",
18311
+ testimonialCardTreatment: "non-carded"
18312
+ }
18313
+ }), defineBlockAppearancePreset({
18314
+ id: "testimonials-evergreen-lead",
18315
+ target: "testimonials",
18316
+ label: "Evergreen lead",
18317
+ blockKinds: ["block.testimonials"],
18318
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
18319
+ design: {
18320
+ sectionSurface: "base",
18321
+ contentFrame: plainFrame,
18322
+ itemSurface: "none"
18323
+ }
18324
+ }), defineBlockAppearancePreset({
18325
+ id: "testimonials-room-and-response",
18326
+ target: "testimonials",
18327
+ label: "Room and response",
18328
+ blockKinds: ["block.testimonials"],
18329
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
18330
+ design: {
18331
+ sectionSurface: "base",
18332
+ contentFrame: plainFrame,
18333
+ itemSurface: "none"
18334
+ }
18335
+ }), defineBlockAppearancePreset({
18336
+ id: "testimonials-open-floor",
18337
+ target: "testimonials",
18338
+ label: "Open floor",
18339
+ blockKinds: ["block.testimonials"],
18340
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
18341
+ design: {
18342
+ sectionSurface: "base",
18343
+ contentFrame: plainFrame,
18344
+ itemSurface: "none"
18345
+ }
18346
+ }), defineBlockAppearancePreset({
18347
+ id: "faq-base-accordion",
18348
+ target: "faq",
18349
+ label: "Base accordion FAQ",
18350
+ blockKinds: ["block.faq"],
18351
+ design: {
18352
+ sectionSurface: "base",
18353
+ contentFrame: plainFrame,
18354
+ itemSurface: "default"
18355
+ }
18356
+ }), defineBlockAppearancePreset({
18357
+ id: "faq-contained-help",
18358
+ target: "faq",
18359
+ label: "Contained help panel",
18360
+ blockKinds: ["block.faq"],
18361
+ design: {
18362
+ sectionSurface: "muted-band",
18363
+ contentFrame: panelFrame("inset"),
18364
+ itemSurface: "default"
18365
+ }
18366
+ }), defineBlockAppearancePreset({
18367
+ id: "contact-form-panel",
18368
+ target: "contact-form",
18369
+ label: "Raised form panel",
18370
+ blockKinds: ["block.form"],
18371
+ design: {
18372
+ sectionSurface: "muted-band",
18373
+ contentFrame: panelFrame("raised"),
18374
+ itemSurface: "none"
18375
+ }
18376
+ }), defineBlockAppearancePreset({
18377
+ id: "cta-accent-band",
18378
+ target: "cta",
18379
+ label: "Accent CTA band",
18380
+ blockKinds: ["block.cta-full"],
18381
+ design: {
18382
+ sectionSurface: "accent-band",
18383
+ contentFrame: plainFrame,
18384
+ itemSurface: "none",
18385
+ eyebrowTreatment: "accent"
18386
+ }
18387
+ });
18401
18388
  //#endregion
18402
18389
  //#region ../theme-core/src/site-styles/headerCtaVariants.ts
18403
18390
  function hasButtonVariant(theme, variantId) {
@@ -18580,6 +18567,27 @@ function uniqueStrings(values) {
18580
18567
  return Array.from(new Set(values));
18581
18568
  }
18582
18569
  //#endregion
18570
+ //#region ../theme-core/src/site-styles/headerInteractionPalette.ts
18571
+ const clearSplitInteractionPalette = defineLookOptionGroup({
18572
+ id: "interaction-palette",
18573
+ label: "Hover colour",
18574
+ defaultOptionId: "accent",
18575
+ options: [
18576
+ {
18577
+ id: "accent",
18578
+ label: "Accent"
18579
+ },
18580
+ {
18581
+ id: "primary",
18582
+ label: "Primary"
18583
+ },
18584
+ {
18585
+ id: "secondary",
18586
+ label: "Secondary"
18587
+ }
18588
+ ]
18589
+ });
18590
+ //#endregion
18583
18591
  //#region ../theme-core/src/site-styles/headerLooks.ts
18584
18592
  function asHeaderLookId(value) {
18585
18593
  return value;
@@ -18713,7 +18721,7 @@ const overlayLogoAccommodations = [
18713
18721
  * optional nested styling fields that would otherwise leak from another Look.
18714
18722
  */
18715
18723
  function baseHeader(theme) {
18716
- 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;
18724
+ 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;
18717
18725
  return {
18718
18726
  ...header,
18719
18727
  navContainer: {
@@ -18728,7 +18736,6 @@ const headerLayoutCatalog = defineExactCatalog()([
18728
18736
  id: asHeaderLayoutId("classic"),
18729
18737
  label: "Classic",
18730
18738
  description: "Logo and navigation in one practical horizontal row.",
18731
- structure: "inline-classic",
18732
18739
  variant: "classic",
18733
18740
  defaultPositioning: "sticky",
18734
18741
  shrinkOnScroll: false
@@ -18737,7 +18744,6 @@ const headerLayoutCatalog = defineExactCatalog()([
18737
18744
  id: asHeaderLayoutId("centered"),
18738
18745
  label: "Centered",
18739
18746
  description: "Logo centered above a balanced navigation row.",
18740
- structure: "centered-stack",
18741
18747
  variant: "centered",
18742
18748
  defaultPositioning: "static",
18743
18749
  shrinkOnScroll: false,
@@ -18753,7 +18759,6 @@ const headerLayoutCatalog = defineExactCatalog()([
18753
18759
  id: asHeaderLayoutId("floating"),
18754
18760
  label: "Floating",
18755
18761
  description: "Detached header chrome that sits over the opening section.",
18756
- structure: "floating-shell",
18757
18762
  variant: "floating",
18758
18763
  defaultPositioning: "sticky",
18759
18764
  shrinkOnScroll: true,
@@ -18915,10 +18920,13 @@ const headerStyleCatalog = defineExactCatalog()([
18915
18920
  label: "Clear Split",
18916
18921
  description: "Floating logo with transparent navigation and no shared shell.",
18917
18922
  supportedLayoutIds: supportedLayouts(["floating"]),
18918
- navInteraction: "color-change",
18923
+ navInteraction: "pill-background",
18919
18924
  surface: "floating",
18920
- defaultDepth: "none",
18925
+ defaultDepth: "line",
18921
18926
  navTypography: "plain",
18927
+ openingForegroundTarget: "all",
18928
+ scrollTreatment: "contrast-glass",
18929
+ interactionPalette: clearSplitInteractionPalette,
18922
18930
  moods: ["editorial", "calm"]
18923
18931
  },
18924
18932
  {
@@ -18941,6 +18949,7 @@ const headerStyleCatalog = defineExactCatalog()([
18941
18949
  surface: "floating",
18942
18950
  defaultDepth: "shadow",
18943
18951
  navTypography: "quiet-caps",
18952
+ openingForegroundTarget: "brand-only",
18944
18953
  moods: ["expressive"]
18945
18954
  },
18946
18955
  {
@@ -18952,6 +18961,7 @@ const headerStyleCatalog = defineExactCatalog()([
18952
18961
  surface: "floating",
18953
18962
  defaultDepth: "shadow",
18954
18963
  navTypography: "heading",
18964
+ openingForegroundTarget: "brand-only",
18955
18965
  moods: ["calm", "editorial"]
18956
18966
  }
18957
18967
  ]);
@@ -19453,13 +19463,6 @@ const headerLookCatalog = defineExactCatalog()([
19453
19463
  {
19454
19464
  id: asHeaderLookId("clean-base"),
19455
19465
  label: "Clean base",
19456
- visualTreatment: "solid-neutral",
19457
- layoutBehavior: "sticky",
19458
- configuration: {
19459
- structure: "inline-classic",
19460
- treatment: "solid-neutral",
19461
- behavior: "sticky"
19462
- },
19463
19466
  openingRequirement: "none",
19464
19467
  logoAccommodations: inlineClassicLogoAccommodations,
19465
19468
  compile: cleanBaseHeader
@@ -19467,13 +19470,6 @@ const headerLookCatalog = defineExactCatalog()([
19467
19470
  {
19468
19471
  id: asHeaderLookId("classic-centered-nav"),
19469
19472
  label: "Centered nav",
19470
- visualTreatment: "solid-neutral",
19471
- layoutBehavior: "sticky",
19472
- configuration: {
19473
- structure: "inline-classic",
19474
- treatment: "solid-neutral",
19475
- behavior: "sticky"
19476
- },
19477
19473
  openingRequirement: "none",
19478
19474
  maxRecommendedNavItems: 6,
19479
19475
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -19482,13 +19478,6 @@ const headerLookCatalog = defineExactCatalog()([
19482
19478
  {
19483
19479
  id: asHeaderLookId("brand-solid"),
19484
19480
  label: "Brand solid",
19485
- visualTreatment: "solid-brand",
19486
- layoutBehavior: "sticky-shrink",
19487
- configuration: {
19488
- structure: "inline-classic",
19489
- treatment: "solid-brand",
19490
- behavior: "sticky-shrink"
19491
- },
19492
19481
  openingRequirement: "none",
19493
19482
  logoAccommodations: inlineClassicLogoAccommodations,
19494
19483
  compile: solidBrandHeader
@@ -19496,13 +19485,6 @@ const headerLookCatalog = defineExactCatalog()([
19496
19485
  {
19497
19486
  id: asHeaderLookId("serif-line"),
19498
19487
  label: "Serif line",
19499
- visualTreatment: "light-serif",
19500
- layoutBehavior: "sticky",
19501
- configuration: {
19502
- structure: "centered-stack",
19503
- treatment: "light-serif",
19504
- behavior: "sticky"
19505
- },
19506
19488
  openingRequirement: "none",
19507
19489
  maxRecommendedNavItems: 6,
19508
19490
  logoAccommodations: centeredLogoAccommodations,
@@ -19511,13 +19493,6 @@ const headerLookCatalog = defineExactCatalog()([
19511
19493
  {
19512
19494
  id: asHeaderLookId("centered-calm"),
19513
19495
  label: "Centered calm",
19514
- visualTreatment: "light-serif",
19515
- layoutBehavior: "normal-flow",
19516
- configuration: {
19517
- structure: "centered-stack",
19518
- treatment: "light-serif",
19519
- behavior: "normal-flow"
19520
- },
19521
19496
  openingRequirement: "none",
19522
19497
  maxRecommendedNavItems: 5,
19523
19498
  logoAccommodations: centeredLogoAccommodations,
@@ -19526,13 +19501,6 @@ const headerLookCatalog = defineExactCatalog()([
19526
19501
  {
19527
19502
  id: asHeaderLookId("practical-utility"),
19528
19503
  label: "Practical utility",
19529
- visualTreatment: "solid-neutral",
19530
- layoutBehavior: "sticky-shrink",
19531
- configuration: {
19532
- structure: "inline-classic",
19533
- treatment: "solid-neutral",
19534
- behavior: "sticky-shrink"
19535
- },
19536
19504
  openingRequirement: "none",
19537
19505
  requiresProminentCta: true,
19538
19506
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -19541,13 +19509,6 @@ const headerLookCatalog = defineExactCatalog()([
19541
19509
  {
19542
19510
  id: asHeaderLookId("minimal-transparent"),
19543
19511
  label: "Minimal transparent",
19544
- visualTreatment: "minimal-transparent",
19545
- layoutBehavior: "normal-flow",
19546
- configuration: {
19547
- structure: "inline-classic",
19548
- treatment: "minimal-transparent",
19549
- behavior: "normal-flow"
19550
- },
19551
19512
  openingRequirement: "reserved-space-ok",
19552
19513
  logoAccommodations: inlineClassicLogoAccommodations,
19553
19514
  compile: minimalTransparentHeader
@@ -19555,13 +19516,6 @@ const headerLookCatalog = defineExactCatalog()([
19555
19516
  {
19556
19517
  id: asHeaderLookId("transparent-overlay"),
19557
19518
  label: "Transparent overlay",
19558
- visualTreatment: "transparent-overlay",
19559
- layoutBehavior: "fixed-overlay",
19560
- configuration: {
19561
- structure: "inline-classic",
19562
- treatment: "transparent-overlay",
19563
- behavior: "fixed-overlay"
19564
- },
19565
19519
  openingRequirement: "requires-image-hero-with-contrast-overlay",
19566
19520
  maxRecommendedNavItems: 5,
19567
19521
  logoAccommodations: overlayLogoAccommodations,
@@ -19570,24 +19524,13 @@ const headerLookCatalog = defineExactCatalog()([
19570
19524
  {
19571
19525
  id: asHeaderLookId("floating-glass"),
19572
19526
  label: "Floating glass",
19573
- visualTreatment: "floating-glass",
19574
- layoutBehavior: "fixed-floating",
19575
- configuration: {
19576
- structure: "floating-shell",
19577
- treatment: "floating-glass",
19578
- behavior: "fixed-floating"
19579
- },
19580
19527
  openingRequirement: "requires-image-hero-with-contrast-overlay",
19581
19528
  maxRecommendedNavItems: 5,
19582
19529
  logoAccommodations: overlayLogoAccommodations,
19583
19530
  compile: floatingGlassHeader
19584
19531
  }
19585
19532
  ]);
19586
- new Set(headerLookCatalog.map((look) => headerConfigurationKey(look.configuration)));
19587
19533
  new Map(headerLookCatalog.map((look) => [look.id, look]));
19588
- function headerConfigurationKey(configuration) {
19589
- return `${configuration.structure}:${configuration.treatment}:${configuration.behavior}`;
19590
- }
19591
19534
  //#endregion
19592
19535
  //#region ../theme-core/src/site-styles/sectionTransitions.ts
19593
19536
  function boundaryRuntimeMetrics(family, size, heightExpression) {
@@ -23196,28 +23139,6 @@ z$1.object({
23196
23139
  spacing: z$1.enum(themeTokenRecipeOptions.spacing),
23197
23140
  motion: z$1.enum(themeTokenRecipeOptions.motion)
23198
23141
  });
23199
- const BREAKPOINT_LG = 1024;
23200
- const BREAKPOINT_XL = 1280;
23201
- const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
23202
- function mqUp(px) {
23203
- return `(min-width: ${px}px)`;
23204
- }
23205
- function mqDown(px) {
23206
- return `(max-width: ${px}px)`;
23207
- }
23208
- function mqBetween(minPx, maxPx) {
23209
- return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
23210
- }
23211
- mqUp(640);
23212
- mqUp(768);
23213
- mqUp(BREAKPOINT_LG);
23214
- mqUp(BREAKPOINT_XL);
23215
- mqDown(639);
23216
- mqDown(767);
23217
- mqDown(BREAKPOINT_LG_DOWN);
23218
- mqBetween(640, BREAKPOINT_LG_DOWN);
23219
- mqDown(640);
23220
- mqDown(768);
23221
23142
  //#endregion
23222
23143
  //#region ../theme-core/src/siteChromeOverlayClearance.ts
23223
23144
  const SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
@@ -27199,15 +27120,6 @@ const heroLayoutControlsFragment = defineFragment({
27199
27120
  */
27200
27121
  const BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
27201
27122
  const blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
27202
- /**
27203
- * Temporary rollout boundary for persisted content written before issue #1220.
27204
- * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
27205
- * only until the post-deploy role rewrite has been audited in production.
27206
- */
27207
- function canonicalizePersistedBlockButtonRole(value) {
27208
- return value === "link" || value === "tertiary" ? "ghost" : value;
27209
- }
27210
- const persistedBlockButtonRoleSchema = z$1.preprocess((value) => typeof value === "string" ? canonicalizePersistedBlockButtonRole(value) : value, blockButtonRoleSchema);
27211
27123
  const BLOCK_BUTTON_ROLE_LABELS = {
27212
27124
  primary: "Primary",
27213
27125
  secondary: "Secondary",
@@ -34459,6 +34371,12 @@ const mediaBaseSchema = z.object({
34459
34371
  poster: mediaPosterSchema.optional(),
34460
34372
  transform: transformSchema.optional()
34461
34373
  });
34374
+ /**
34375
+ * Canonical identifier carried by media values that are safe to persist.
34376
+ * Parsing trims boundary input so downstream writers cannot retain whitespace-only
34377
+ * identifiers or independently disagree about normalization.
34378
+ */
34379
+ const mediaIdentifierSchema = z.string().trim().min(1).brand();
34462
34380
  const imageMediaSchema = mediaBaseSchema.extend({ type: z.literal("image") });
34463
34381
  const videoMediaSchema = mediaBaseSchema.extend({ type: z.literal("video") });
34464
34382
  const audioMediaSchema = mediaBaseSchema.extend({ type: z.literal("audio") });
@@ -34473,6 +34391,15 @@ const mediaSchema = z.discriminatedUnion("type", [
34473
34391
  spreadsheetMediaSchema,
34474
34392
  archiveMediaSchema
34475
34393
  ]);
34394
+ const persistableMediaBaseSchema = mediaBaseSchema.extend({ identifier: mediaIdentifierSchema });
34395
+ z.discriminatedUnion("type", [
34396
+ persistableMediaBaseSchema.extend({ type: z.literal("image") }),
34397
+ persistableMediaBaseSchema.extend({ type: z.literal("video") }),
34398
+ persistableMediaBaseSchema.extend({ type: z.literal("audio") }),
34399
+ persistableMediaBaseSchema.extend({ type: z.literal("document") }),
34400
+ persistableMediaBaseSchema.extend({ type: z.literal("spreadsheet") }),
34401
+ persistableMediaBaseSchema.extend({ type: z.literal("archive") })
34402
+ ]);
34476
34403
  //#endregion
34477
34404
  //#region ../blocks/src/system/manifest/richTextSchema.ts
34478
34405
  /**
@@ -35596,7 +35523,7 @@ function isEventCalendarListLayout(value) {
35596
35523
  //#region ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
35597
35524
  const previewStageSchema = z$1.enum(["preview", "published"]);
35598
35525
  const registrationButtonVariantSchema = blockButtonRoleSchema;
35599
- const eventButtonVariantSchema = persistedBlockButtonRoleSchema;
35526
+ const eventButtonVariantSchema = blockButtonRoleSchema;
35600
35527
  const eventLayoutSchema = z$1.enum(eventCalendarListLayoutValues);
35601
35528
  const eventCalendarDisplayModeSchema = z$1.enum(eventCalendarDisplayModeValues);
35602
35529
  const eventCalendarDefaultViewSchema = z$1.enum(eventCalendarDefaultViewValues);