@riverbankcms/sdk 0.125.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 (177) hide show
  1. package/README.md +3 -1
  2. package/dist/{PreviewEditorSidebar-BezDOtQ7.mjs → PreviewEditorSidebar-BXtfF7tp.mjs} +122 -301
  3. package/dist/{PreviewEditorUI-CgSqmfo2.mjs → PreviewEditorUI-Dou73Q0K.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BH-3-jSj.mjs → PreviewQueryProvider-DgFDIwvK.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-Co3AHfj0.mjs → SdkPreviewModeRuntime-B0HPXr-l.mjs} +141 -63
  6. package/dist/{SiteChromeCustomizeContext-BHF-KANn.mjs → SiteChromeCustomizeContext-DZiDBAYu.mjs} +5330 -5841
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +1552 -202
  8. package/dist/_dts/api/src/common/envelope.d.ts +1 -1
  9. package/dist/_dts/api/src/contentRuntime.d.ts +1 -7
  10. package/dist/_dts/api/src/endpoints.d.ts +0 -7
  11. package/dist/_dts/api/src/sdk-event-upsert.d.ts +42 -0
  12. package/dist/_dts/api/src/sdkContracts.d.ts +11 -9
  13. package/dist/_dts/api/src/siteOperations.d.ts +18 -1
  14. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +1 -14
  15. package/dist/_dts/block-form/src/backend/store-backend.d.ts +2 -1
  16. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +1 -0
  17. package/dist/_dts/blocks/src/index.d.ts +3 -2
  18. package/dist/_dts/blocks/src/lib/media.d.ts +267 -0
  19. package/dist/_dts/blocks/src/system/constants/buttonRoles.d.ts +0 -13
  20. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +15 -2
  21. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +4 -4
  22. package/dist/_dts/blocks/src/system/runtime/nodes/mergeResolveImageUrlContexts.d.ts +7 -0
  23. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +2 -2
  24. package/dist/_dts/content-editor/src/ui/blockValidationManifestRegistry.d.ts +17 -0
  25. package/dist/_dts/content-editor/src/ui/blockValidationView.d.ts +1 -1
  26. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +4 -0
  27. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +322 -171
  28. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +4 -0
  29. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockValidationManifests.d.ts +26 -0
  30. package/dist/_dts/editor-blocks/src/widgets/rich-text/imageInsert.d.ts +3 -3
  31. package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -2
  32. package/dist/_dts/media-editor/src/context.d.ts +1 -2
  33. package/dist/_dts/media-editor/src/index.d.ts +3 -1
  34. package/dist/_dts/media-editor/src/mediaSelection.d.ts +32 -0
  35. package/dist/_dts/media-editor/src/types.d.ts +3 -1
  36. package/dist/_dts/media-editor/src/useMediaSelection.d.ts +26 -0
  37. package/dist/_dts/preview-next/src/client/index.d.ts +2 -0
  38. package/dist/_dts/preview-next/src/client/preview/HeaderMenuControls.d.ts +12 -0
  39. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +1 -2
  40. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +13 -3
  41. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +7 -2
  42. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +6 -60
  43. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +3 -13
  44. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +8 -100
  45. package/dist/_dts/preview-next/src/client/preview/headerInteractionPaletteSurfaceState.d.ts +8 -0
  46. package/dist/_dts/preview-next/src/client/preview/previewThemeRoles.d.ts +15 -0
  47. package/dist/_dts/preview-next/src/client/preview/siteChromeCustomizeTypes.d.ts +54 -0
  48. package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +13 -3
  49. package/dist/_dts/preview-next/src/client/preview/siteChromeNavQuickControlHistory.d.ts +3 -0
  50. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +6 -3
  51. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +1 -4
  52. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorApplyPayload.d.ts +1 -15
  53. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorSnapshot.d.ts +11 -21
  54. package/dist/_dts/sdk/src/cli/commands/event.d.ts +2 -2
  55. package/dist/_dts/sdk/src/cli/commands/eventOccurrenceSchedule.d.ts +12 -0
  56. package/dist/_dts/sdk/src/cli/commands/push/pushAllExtras.d.ts +6 -0
  57. package/dist/_dts/sdk/src/cli/commands/style.d.ts +1 -1
  58. package/dist/_dts/sdk/src/cli/content/legacyEventScheduleShapeError.d.ts +5 -0
  59. package/dist/_dts/sdk/src/cli/content/localEventSchedule.d.ts +17 -0
  60. package/dist/_dts/sdk/src/cli/content/reader.d.ts +5 -10
  61. package/dist/_dts/sdk/src/cli/migrations/events.d.ts +1 -1
  62. package/dist/_dts/sdk/src/cli/site-commands/eventScheduleCompiler.d.ts +24 -0
  63. package/dist/_dts/sdk/src/client/management/http.d.ts +1 -1
  64. package/dist/_dts/sdk/src/client/management/types.d.ts +3 -28
  65. package/dist/_dts/sdk/src/config/index.d.ts +1 -1
  66. package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -20
  67. package/dist/_dts/sdk/src/rendering/index.d.ts +1 -1
  68. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -2
  69. package/dist/_dts/sdk/src/version.d.ts +1 -1
  70. package/dist/_dts/site-commands/src/commandContract.d.ts +33 -5
  71. package/dist/_dts/site-commands/src/commandDomain.d.ts +2 -2
  72. package/dist/_dts/site-commands/src/commands.d.ts +38 -9
  73. package/dist/_dts/site-commands/src/siteStyleCommandSchema.d.ts +28 -1
  74. package/dist/_dts/site-commands/src/siteStyleSelectionSchemaBuilder.d.ts +4 -4
  75. package/dist/_dts/theme-core/src/buttons/effects/presets/background.d.ts +1 -1
  76. package/dist/_dts/theme-core/src/buttons/styles/registry.d.ts +0 -18
  77. package/dist/_dts/theme-core/src/buttons/types.d.ts +1 -3
  78. package/dist/_dts/theme-core/src/header/containerSchema.d.ts +20 -0
  79. package/dist/_dts/theme-core/src/header/generateHeaderCss.d.ts +1 -1
  80. package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +14 -0
  81. package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +3 -0
  82. package/dist/_dts/theme-core/src/header/paintTargets.d.ts +25 -0
  83. package/dist/_dts/theme-core/src/header/scrollTreatment.d.ts +11 -0
  84. package/dist/_dts/theme-core/src/header/surfaceRules.d.ts +9 -0
  85. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +15 -0
  86. package/dist/_dts/theme-core/src/palette/colors.d.ts +1 -1
  87. package/dist/_dts/theme-core/src/palette/concretePalette.d.ts +20 -0
  88. package/dist/_dts/theme-core/src/palette/curated/index.d.ts +2 -17
  89. package/dist/_dts/theme-core/src/palette/index.d.ts +1 -6
  90. package/dist/_dts/theme-core/src/palette/schema.d.ts +39 -0
  91. package/dist/_dts/theme-core/src/schema.d.ts +105 -45
  92. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +3 -51
  93. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +4 -11
  94. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +3 -51
  95. package/dist/_dts/theme-core/src/site-styles/headerInteractionPalette.d.ts +32 -0
  96. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +19 -106
  97. package/dist/_dts/theme-core/src/site-styles/headerOpeningForeground.d.ts +22 -0
  98. package/dist/_dts/theme-core/src/site-styles/headerOpeningSection.d.ts +2 -0
  99. package/dist/_dts/theme-core/src/site-styles/headerStyleParts.d.ts +4 -0
  100. package/dist/_dts/theme-core/src/site-styles/index.d.ts +3 -0
  101. package/dist/_dts/theme-core/src/site-styles/lookOptionGroups.d.ts +24 -0
  102. package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +1 -2
  103. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +4 -22
  104. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorOptions.d.ts +21 -0
  105. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +5 -7
  106. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +5 -6
  107. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +4 -1
  108. package/dist/cli/index.mjs +1583 -1601
  109. package/dist/cli/init-docs/content/cli-reference.md +6 -3
  110. package/dist/cli/init-docs/content/content-management.md +24 -13
  111. package/dist/client/{DiscountCodeDisclosure-CyPpekBp.mjs → DiscountCodeDisclosure-BDFRp8Y7.mjs} +1 -1
  112. package/dist/client/{EventCombined.client-zywit-60.mjs → EventCombined.client-DJgF1_lf.mjs} +2 -2
  113. package/dist/client/{EventListing.client-J2nLhkKT.mjs → EventListing.client-CnWGNjOr.mjs} +2 -2
  114. package/dist/client/{LeafletStaticMap-CSubXWt6.mjs → LeafletStaticMap-BISs9Bl7.mjs} +1 -1
  115. package/dist/client/{MagicLinkForm-DDLIfiq9.mjs → MagicLinkForm-b5E_HoG9.mjs} +1 -1
  116. package/dist/client/{StepIndicator-DE8EvHIp.mjs → StepIndicator-D8gVYkK-.mjs} +2 -2
  117. package/dist/client/{accordion-Ct5T5NiA.mjs → accordion-DFDajgDz.mjs} +1 -1
  118. package/dist/client/{bookingForm-DMxtLPxw.mjs → bookingForm-Bdqj9-52.mjs} +5 -6
  119. package/dist/client/bookings.mjs +315 -46
  120. package/dist/client/{carousel--FMqgvob.mjs → carousel-Cvqf-kN8.mjs} +1 -1
  121. package/dist/client/{cart-BKX1bWiU.mjs → cart-CuH2TJXP.mjs} +3 -3
  122. package/dist/client/{checkout-B_jxi4WW.mjs → checkout-CMNPpejZ.mjs} +3 -3
  123. package/dist/client/client.mjs +1381 -1427
  124. package/dist/client/{courseRegistration-DH4MlkRD.mjs → courseRegistration-DTEYWL6Z.mjs} +6 -7
  125. package/dist/client/{eventCalendar-BQILwAcL.mjs → eventCalendar-BW-XoxZ0.mjs} +4 -4
  126. package/dist/client/{eventCombined-DFFW_Vmo.mjs → eventCombined-Bpn7s0y9.mjs} +2 -2
  127. package/dist/client/{eventDetails-B045CTSJ.mjs → eventDetails-D2uUSTMH.mjs} +3 -3
  128. package/dist/client/{eventListing-BDMYNVzS.mjs → eventListing-CVr1c094.mjs} +2 -2
  129. package/dist/client/{eventRegistration-CQ2-BSnB.mjs → eventRegistration-Dv4AvkMw.mjs} +30 -22
  130. package/dist/client/{form-DJKuyZgN.mjs → form-DxdKf9fs.mjs} +1 -1
  131. package/dist/client/{headerSection-DeTjfiDo.mjs → headerSection-BaXI5Sro.mjs} +2 -2
  132. package/dist/client/hooks.mjs +851 -976
  133. package/dist/client/{locationMap-i2wDA8gB.mjs → locationMap-BEtW2fKz.mjs} +2 -2
  134. package/dist/client/{newsletterForm-DKiueauk.mjs → newsletterForm-BKKs0S4R.mjs} +1 -1
  135. package/dist/client/{pricing-C01J3Epx.mjs → pricing-ClkqcElA.mjs} +1 -1
  136. package/dist/client/{productDetail-Dfc1sZaX.mjs → productDetail-H-ru8dyy.mjs} +3 -3
  137. package/dist/client/{productList-BXbvXWTF.mjs → productList-Buyi5c0C.mjs} +3 -3
  138. package/dist/client/{propsDecoder-CIR5DQ1l.mjs → propsDecoder-BF7i6Ijg.mjs} +293 -65
  139. package/dist/client/rendering/client.mjs +1145 -1190
  140. package/dist/client/rendering/islands.mjs +18 -18
  141. package/dist/client/rendering.mjs +1257 -1298
  142. package/dist/client/{useDiscountCodeUi-Bcyh4508.mjs → scrollToBlock-D_7t8yWb.mjs} +18 -2
  143. package/dist/client/{shop-BbNwPKM-.mjs → shop-CF7SZQNX.mjs} +5 -6
  144. package/dist/client/{shop-commerce-XO-XMFEt.mjs → shop-commerce-DA7_Rq5p.mjs} +4 -4
  145. package/dist/client/{shop-commerce-store-Byh6OUGK.mjs → shop-commerce-store-BmLqW7Gh.mjs} +1 -1
  146. package/dist/client/{shopShared-Bbq39mwr.mjs → shopShared-WL-E1znM.mjs} +2 -2
  147. package/dist/client/{useEventFilters-C8OOJ3el.mjs → useEventFilters-rc8VLeLV.mjs} +2 -2
  148. package/dist/client/{usePolling-CyJVo9kF.mjs → usePolling-1ncrfd4S.mjs} +2 -2
  149. package/dist/preview-next/before-render.mjs +0 -7
  150. package/dist/preview-next/client/runtime.mjs +4 -4
  151. package/dist/preview-next/middleware.mjs +0 -7
  152. package/dist/{previewAuthStore-CJX21dGi.mjs → previewAuthStore-Dev9CdG9.mjs} +0 -7
  153. package/dist/{sdk-runtime-BGhyuE-E.mjs → sdk-runtime-BnrCCFJq.mjs} +2 -2
  154. package/dist/{separator-BFs-Kmv5.mjs → separator-CFvBx2yl.mjs} +1 -1
  155. package/dist/server/components.mjs +1389 -1489
  156. package/dist/server/config-validation.mjs +851 -976
  157. package/dist/server/config.mjs +851 -976
  158. package/dist/server/data.mjs +851 -976
  159. package/dist/server/index.mjs +1 -8
  160. package/dist/server/next.mjs +1393 -1500
  161. package/dist/server/page-converter.mjs +851 -976
  162. package/dist/server/prebuild.mjs +1 -1
  163. package/dist/server/rendering/server.mjs +1346 -1446
  164. package/dist/server/rendering.mjs +1390 -1490
  165. package/dist/server/routing.mjs +939 -1041
  166. package/dist/server/server.mjs +852 -984
  167. package/dist/server/theme-bridge.mjs +322 -279
  168. package/dist/server/theme.mjs +277 -33
  169. package/package.json +1 -1
  170. package/dist/_dts/editor-blocks/src/widgets/rich-text/ensureRichTextImageAssetIdentifier.d.ts +0 -8
  171. package/dist/_dts/theme-core/src/palette/editorState.d.ts +0 -75
  172. package/dist/_dts/theme-core/src/palette/libraryModel.d.ts +0 -64
  173. package/dist/_dts/theme-core/src/palette/persistenceReadSource.d.ts +0 -81
  174. package/dist/_dts/theme-core/src/palette/resolveSelection.d.ts +0 -75
  175. package/dist/_dts/theme-core/src/palette/selection.d.ts +0 -74
  176. package/dist/_dts/theme-core/src/palette/sitePalettePersistence.d.ts +0 -34
  177. package/dist/client/scrollToBlock-C86BYkyV.mjs +0 -17
@@ -1793,11 +1793,9 @@ var init_types$15 = __esmMin((() => {
1793
1793
  "secondary",
1794
1794
  "outline",
1795
1795
  "ghost",
1796
- "link",
1797
- "tertiary",
1798
1796
  "accent"
1799
1797
  ];
1800
- buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only");
1798
+ 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" });
1801
1799
  DEFAULT_VARIANT_ALIAS_ID = "default";
1802
1800
  opaqueButtonColourTokenSchema = themeColorTokenSchema.refine((value) => parseOpaqueButtonColourToken(value) !== null, "Button colour tokens must be opaque").transform((value) => {
1803
1801
  const token = parseOpaqueButtonColourToken(value);
@@ -2172,6 +2170,185 @@ var init_media$2 = __esmMin((() => {
2172
2170
  });
2173
2171
  }));
2174
2172
  //#endregion
2173
+ //#region ../theme-core/src/palette/colors.ts
2174
+ function normalizePaletteHex(value) {
2175
+ if (!NORMALIZABLE_HEX_REGEX.test(value)) return null;
2176
+ const normalized = value.toLowerCase();
2177
+ if (normalized.length === 7) return normalized;
2178
+ const triplet = normalized.slice(1);
2179
+ const red = triplet.charAt(0);
2180
+ const green = triplet.charAt(1);
2181
+ const blue = triplet.charAt(2);
2182
+ return `#${red}${red}${green}${green}${blue}${blue}`;
2183
+ }
2184
+ function paletteColorsFromEntries(entries) {
2185
+ const values = {};
2186
+ for (const entry of entries) {
2187
+ const parsedRole = paletteTokenNameSchema.safeParse(entry.name);
2188
+ if (!parsedRole.success) return {
2189
+ ok: false,
2190
+ error: {
2191
+ kind: "unknown-role",
2192
+ role: entry.name
2193
+ }
2194
+ };
2195
+ const role = parsedRole.data;
2196
+ if (values[role] !== void 0) return {
2197
+ ok: false,
2198
+ error: {
2199
+ kind: "duplicate-role",
2200
+ role
2201
+ }
2202
+ };
2203
+ const hex = normalizePaletteHex(entry.hex);
2204
+ if (!hex) return {
2205
+ ok: false,
2206
+ error: {
2207
+ kind: "invalid-color",
2208
+ role,
2209
+ value: entry.hex
2210
+ }
2211
+ };
2212
+ values[role] = hex;
2213
+ }
2214
+ const missing = PALETTE_TOKEN_NAMES.filter((role) => values[role] === void 0);
2215
+ if (missing.length > 0) return {
2216
+ ok: false,
2217
+ error: {
2218
+ kind: "missing-roles",
2219
+ roles: missing
2220
+ }
2221
+ };
2222
+ return {
2223
+ ok: true,
2224
+ colors: paletteColorsSchema.parse(values)
2225
+ };
2226
+ }
2227
+ function requirePaletteColorsFromEntries(entries) {
2228
+ const result = paletteColorsFromEntries(entries);
2229
+ if (result.ok) return result.colors;
2230
+ throw new Error(`Invalid complete palette: ${result.error.kind}`);
2231
+ }
2232
+ function paletteColorEntries(colors) {
2233
+ return THEME_PALETTE_COLOR_ORDER.map((name) => ({
2234
+ name,
2235
+ hex: colors[name]
2236
+ }));
2237
+ }
2238
+ function paletteColorFingerprint(colors) {
2239
+ return PALETTE_TOKEN_NAMES.map((name) => `${name}:${colors[name]}`).join("|");
2240
+ }
2241
+ function canonicalPaletteHashInput(colors, mode) {
2242
+ return `${mode}|${paletteColorFingerprint(colors)}`;
2243
+ }
2244
+ /**
2245
+ * Stable curated-catalogue identity. Do not reorder roles: the order comes
2246
+ * from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
2247
+ */
2248
+ function paletteValueKey(colors, mode) {
2249
+ return `${PALETTE_VALUE_KEY_PREFIX}${canonicalPaletteHashInput(colors, mode)}`;
2250
+ }
2251
+ /** Parses only the exact v1 canonical form emitted by paletteValueKey. */
2252
+ function parsePaletteValueKey(value) {
2253
+ if (typeof value !== "string" || !value.startsWith(PALETTE_VALUE_KEY_PREFIX)) return null;
2254
+ const [rawMode, ...rawRoles] = value.slice(PALETTE_VALUE_KEY_PREFIX.length).split("|");
2255
+ const mode = paletteModeSchema.safeParse(rawMode);
2256
+ if (!mode.success || rawRoles.length !== PALETTE_TOKEN_NAMES.length) return null;
2257
+ const colors = paletteColorsFromEntries(rawRoles.map((roleValue) => {
2258
+ const separator = roleValue.indexOf(":");
2259
+ return separator === -1 ? {
2260
+ name: "",
2261
+ hex: ""
2262
+ } : {
2263
+ name: roleValue.slice(0, separator),
2264
+ hex: roleValue.slice(separator + 1)
2265
+ };
2266
+ }));
2267
+ if (!colors.ok || paletteValueKey(colors.colors, mode.data) !== value) return null;
2268
+ return value;
2269
+ }
2270
+ var HEX_COLOR_REGEX, NORMALIZABLE_HEX_REGEX, THEME_PALETTE_COLOR_ORDER, hexColorSchema, paletteModeSchema, PALETTE_VALUE_KEY_PREFIX, paletteColorsSchema, paletteValueKeySchema;
2271
+ var init_colors = __esmMin((() => {
2272
+ init_themeColorTokens();
2273
+ HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
2274
+ NORMALIZABLE_HEX_REGEX = /^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i;
2275
+ THEME_PALETTE_COLOR_ORDER = [
2276
+ "primary",
2277
+ "secondary",
2278
+ "accent",
2279
+ "success",
2280
+ "warning",
2281
+ "destructive",
2282
+ "background",
2283
+ "surface",
2284
+ "surfaceAlt",
2285
+ "muted",
2286
+ "text",
2287
+ "primaryForeground",
2288
+ "border"
2289
+ ];
2290
+ hexColorSchema = z$1.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
2291
+ paletteModeSchema = z$1.enum(["light", "dark"]);
2292
+ PALETTE_VALUE_KEY_PREFIX = "palette-value:v1|";
2293
+ z$1.string().regex(/^[0-9a-f]{64}$/, "Palette hash must be a lowercase SHA-256 value").transform((value) => value);
2294
+ paletteColorsSchema = z$1.object({
2295
+ primary: hexColorSchema,
2296
+ primaryForeground: hexColorSchema,
2297
+ secondary: hexColorSchema,
2298
+ accent: hexColorSchema,
2299
+ success: hexColorSchema,
2300
+ warning: hexColorSchema,
2301
+ destructive: hexColorSchema,
2302
+ background: hexColorSchema,
2303
+ surface: hexColorSchema,
2304
+ surfaceAlt: hexColorSchema,
2305
+ muted: hexColorSchema,
2306
+ text: hexColorSchema,
2307
+ border: hexColorSchema
2308
+ }).strict().transform((value) => value);
2309
+ paletteValueKeySchema = z$1.string().transform((value, ctx) => {
2310
+ const parsed = parsePaletteValueKey(value);
2311
+ if (parsed) return parsed;
2312
+ ctx.addIssue({
2313
+ code: "custom",
2314
+ message: "Invalid canonical palette value key"
2315
+ });
2316
+ return z$1.NEVER;
2317
+ });
2318
+ }));
2319
+ //#endregion
2320
+ //#region ../theme-core/src/palette/schema.ts
2321
+ var colourHexString, paletteColorSchema, paletteMetaSchema, paletteSchema;
2322
+ var init_schema$3 = __esmMin((() => {
2323
+ init_colors();
2324
+ colourHexString = z$1.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
2325
+ paletteColorSchema = z$1.object({
2326
+ name: z$1.string().min(1),
2327
+ hex: colourHexString
2328
+ });
2329
+ paletteMetaSchema = z$1.object({ mode: z$1.enum(["light", "dark"]) });
2330
+ paletteSchema = z$1.object({
2331
+ colors: z$1.array(paletteColorSchema),
2332
+ meta: paletteMetaSchema
2333
+ }).transform((palette, ctx) => {
2334
+ const colors = paletteColorsFromEntries(palette.colors);
2335
+ if (!colors.ok) {
2336
+ ctx.addIssue({
2337
+ code: "custom",
2338
+ message: `Invalid complete palette: ${colors.error.kind}`
2339
+ });
2340
+ return z$1.NEVER;
2341
+ }
2342
+ return {
2343
+ colors: paletteColorEntries(colors.colors).map(({ name, hex }) => ({
2344
+ name: String(name),
2345
+ hex: String(hex)
2346
+ })),
2347
+ meta: palette.meta
2348
+ };
2349
+ });
2350
+ }));
2351
+ //#endregion
2175
2352
  //#region ../theme-core/src/cards/types.ts
2176
2353
  function isCardVariantRole(value) {
2177
2354
  return typeof value === "string" && cardVariantRoleValues.includes(value);
@@ -3206,6 +3383,77 @@ var init_tokenOrColor = __esmMin((() => {
3206
3383
  ]);
3207
3384
  }));
3208
3385
  //#endregion
3386
+ //#region ../theme-core/src/responsive/breakpoints.ts
3387
+ function mqUp(px) {
3388
+ return `(min-width: ${px}px)`;
3389
+ }
3390
+ function mqDown(px) {
3391
+ return `(max-width: ${px}px)`;
3392
+ }
3393
+ function mqBetween(minPx, maxPx) {
3394
+ return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
3395
+ }
3396
+ var BREAKPOINT_LG, BREAKPOINT_XL, BREAKPOINT_LG_DOWN;
3397
+ var init_breakpoints = __esmMin((() => {
3398
+ BREAKPOINT_LG = 1024;
3399
+ BREAKPOINT_XL = 1280;
3400
+ BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
3401
+ mqUp(640);
3402
+ mqUp(768);
3403
+ mqUp(BREAKPOINT_LG);
3404
+ mqUp(BREAKPOINT_XL);
3405
+ mqDown(639);
3406
+ mqDown(767);
3407
+ mqDown(BREAKPOINT_LG_DOWN);
3408
+ mqBetween(640, BREAKPOINT_LG_DOWN);
3409
+ mqDown(640);
3410
+ mqDown(768);
3411
+ }));
3412
+ var init_paintTargets = __esmMin((() => {
3413
+ init_breakpoints();
3414
+ }));
3415
+ var headerScrollTreatmentSchema;
3416
+ var init_scrollTreatment = __esmMin((() => {
3417
+ init_paintTargets();
3418
+ headerScrollTreatmentSchema = z$1.discriminatedUnion("kind", [z$1.object({
3419
+ kind: z$1.literal("contrast-glass"),
3420
+ backgroundTone: z$1.enum(["light", "dark"])
3421
+ })]).optional();
3422
+ }));
3423
+ //#endregion
3424
+ //#region ../theme-core/src/header/containerSchema.ts
3425
+ var headerContainerSchema;
3426
+ var init_containerSchema = __esmMin((() => {
3427
+ headerContainerSchema = z$1.object({
3428
+ rounded: z$1.enum([
3429
+ "none",
3430
+ "sm",
3431
+ "md",
3432
+ "lg",
3433
+ "xl",
3434
+ "2xl"
3435
+ ]).default("xl"),
3436
+ border: z$1.boolean().default(true),
3437
+ shadow: z$1.boolean().default(true),
3438
+ padding: z$1.enum([
3439
+ "sm",
3440
+ "md",
3441
+ "lg"
3442
+ ]).default("md"),
3443
+ tint: z$1.string().nullable().optional(),
3444
+ opacity: z$1.number().min(0).max(1).default(.12)
3445
+ }).optional();
3446
+ }));
3447
+ var headerInteractionPaletteValues, headerInteractionPaletteSchema;
3448
+ var init_interactionPalette = __esmMin((() => {
3449
+ headerInteractionPaletteValues = [
3450
+ "primary",
3451
+ "secondary",
3452
+ "accent"
3453
+ ];
3454
+ headerInteractionPaletteSchema = z$1.enum(headerInteractionPaletteValues);
3455
+ }));
3456
+ //#endregion
3209
3457
  //#region ../theme-core/src/schema.ts
3210
3458
  /**
3211
3459
  * Normalises the legacy `navTypography` font-role alias into the canonical
@@ -3221,9 +3469,10 @@ function normaliseHeaderNavFontRole(header) {
3221
3469
  navFontRole: navTypography
3222
3470
  } : rest;
3223
3471
  }
3224
- var axesSchema, colourHexString, paletteColorSchema, paletteMetaSchema, paletteSchema, typographyStyleSchema, bodyTypographyStyleSchema, headingSizeSchema, headingTypographyOverridesSchema, headingTypographyStyleSchema, proseLinkUnderlineStyleSchema, proseLinkUnderlineThicknessSchema, proseLinkUnderlineOffsetSchema, proseLinkStyleSchema, semanticSpacingSchema, boxRoundedSchema, boxBackgroundOverlaySchema, boxBackgroundSchema, noHeadingDecorationSchema, visibleHeadingDecorationSchema, headingDecorationSchema, headingDecorationOverrideSchema, accordionIconTreatmentSchema, sectionStylesOverrideSchema, containerStylesOverrideSchema, cardBorderOverrideSchema, cardStylesOverrideSchema, blockStyleOverridesSchema, blockThemeOverrideSchema, typographyScaleSchema, eyebrowTypographyStyleSchema, typographySchema, spaceSchema, corners, shadow, border, motion, inputStyle$1, headerVariant, headerPositioning, headerNavStyle, navFontWeight, headerMaxWidth, headerBarFrame, headerContainerSchema, headerBorderSchema, logoStyleSchema, headerLogoTextSchema, navEffectsSchema, dropdownStyleSchema, headerCtaGapSchema, headerCtaTreatmentSchema, navContainerSchema, headerBackgroundSchema, headerSchema, footerVariant, footerMaxWidth, footerMode, footerNavLayoutMode, footerNavLayoutAlign, footerSpacing, footerLogoPlacement, footerLogoSize, footerLogoMaxHeight, footerBottomTextLinkStyleSchema, footerBottomBarSchema, footerNavLayoutSchema, footerLogoSchema, footerSchema, containerPaddingPresetSchema, layoutSchema, heroTypographySizeSchema, heroTypographyLineHeightSchema, heroResponsiveTypographySchema, heroTypographySchema, heroSchema, bodyTextIntroTypographySizeSchema, bodyTextSchema, gradientsSchema, testimonialQuoteTreatmentSchema, themeSchema;
3472
+ var axesSchema, typographyStyleSchema, bodyTypographyStyleSchema, headingSizeSchema, headingTypographyOverridesSchema, headingTypographyStyleSchema, proseLinkUnderlineStyleSchema, proseLinkUnderlineThicknessSchema, proseLinkUnderlineOffsetSchema, proseLinkStyleSchema, semanticSpacingSchema, boxRoundedSchema, boxBackgroundOverlaySchema, boxBackgroundSchema, noHeadingDecorationSchema, visibleHeadingDecorationSchema, headingDecorationSchema, headingDecorationOverrideSchema, accordionIconTreatmentSchema, sectionStylesOverrideSchema, containerStylesOverrideSchema, cardBorderOverrideSchema, cardStylesOverrideSchema, blockStyleOverridesSchema, blockThemeOverrideSchema, typographyScaleSchema, eyebrowTypographyStyleSchema, typographySchema, spaceSchema, corners, shadow, border, motion, inputStyle$1, headerVariant, headerPositioning, headerNavStyle, navFontWeight, headerMaxWidth, headerBarFrame, headerBorderSchema, logoStyleSchema, headerLogoTextSchema, navEffectsSchema, dropdownStyleSchema, headerCtaGapSchema, headerCtaTreatmentSchema, navContainerSchema, headerBackgroundSchema, headerSchema, footerVariant, footerMaxWidth, footerMode, footerNavLayoutMode, footerNavLayoutAlign, footerSpacing, footerLogoPlacement, footerLogoSize, footerLogoMaxHeight, footerBottomTextLinkStyleSchema, footerBottomBarSchema, footerNavLayoutSchema, footerLogoSchema, footerSchema, containerPaddingPresetSchema, layoutSchema, heroTypographySizeSchema, heroTypographyLineHeightSchema, heroResponsiveTypographySchema, heroTypographySchema, heroSchema, bodyTextIntroTypographySizeSchema, bodyTextSchema, gradientsSchema, testimonialQuoteTreatmentSchema, themeSchema;
3225
3473
  var init_schema$2 = __esmMin((() => {
3226
3474
  init_media$2();
3475
+ init_schema$3();
3227
3476
  init_buttons();
3228
3477
  init_cards();
3229
3478
  init_types$13();
@@ -3238,6 +3487,9 @@ var init_schema$2 = __esmMin((() => {
3238
3487
  init_rawStyleFields();
3239
3488
  init_themeColorTokens();
3240
3489
  init_tokenOrColor();
3490
+ init_scrollTreatment();
3491
+ init_containerSchema();
3492
+ init_interactionPalette();
3241
3493
  axesSchema = z$1.object({
3242
3494
  tone: z$1.enum([
3243
3495
  "minimal",
@@ -3266,16 +3518,6 @@ var init_schema$2 = __esmMin((() => {
3266
3518
  "expressive"
3267
3519
  ])
3268
3520
  });
3269
- colourHexString = z$1.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
3270
- paletteColorSchema = z$1.object({
3271
- name: z$1.string().min(1),
3272
- hex: colourHexString
3273
- });
3274
- paletteMetaSchema = z$1.object({ mode: z$1.enum(["light", "dark"]) });
3275
- paletteSchema = z$1.object({
3276
- colors: z$1.array(paletteColorSchema),
3277
- meta: paletteMetaSchema
3278
- });
3279
3521
  typographyStyleSchema = z$1.object({
3280
3522
  family: z$1.string().min(1),
3281
3523
  weight: z$1.enum([
@@ -3655,25 +3897,6 @@ var init_schema$2 = __esmMin((() => {
3655
3897
  ]);
3656
3898
  headerMaxWidth = z$1.enum(["container", "full"]);
3657
3899
  headerBarFrame = z$1.enum(["full-bleed", "inset-shell"]);
3658
- headerContainerSchema = z$1.object({
3659
- rounded: z$1.enum([
3660
- "none",
3661
- "sm",
3662
- "md",
3663
- "lg",
3664
- "xl",
3665
- "2xl"
3666
- ]).default("xl"),
3667
- border: z$1.boolean().default(true),
3668
- shadow: z$1.boolean().default(true),
3669
- padding: z$1.enum([
3670
- "sm",
3671
- "md",
3672
- "lg"
3673
- ]).default("md"),
3674
- tint: z$1.string().nullable().optional(),
3675
- opacity: z$1.number().min(0).max(1).default(.12)
3676
- }).optional();
3677
3900
  headerBorderSchema = componentBorderSchema.extend({ position: z$1.enum([
3678
3901
  "bottom",
3679
3902
  "top",
@@ -3796,6 +4019,7 @@ var init_schema$2 = __esmMin((() => {
3796
4019
  shrinkOnScroll: z$1.boolean(),
3797
4020
  maxWidth: headerMaxWidth,
3798
4021
  barFrame: headerBarFrame.optional(),
4022
+ scrollTreatment: headerScrollTreatmentSchema,
3799
4023
  logoOverride: mediaSchema$1.nullable().optional(),
3800
4024
  background: headerBackgroundSchema.default({
3801
4025
  type: "color",
@@ -3808,6 +4032,7 @@ var init_schema$2 = __esmMin((() => {
3808
4032
  navFontRole: z$1.enum(["body", "heading"]).optional(),
3809
4033
  navTypography: z$1.enum(["body", "heading"]).optional(),
3810
4034
  navTextSize: navLinkStyleSchema.shape.textSize,
4035
+ interactionPalette: headerInteractionPaletteSchema.optional(),
3811
4036
  navPlacement: z$1.enum(["end", "center"]).optional(),
3812
4037
  container: headerContainerSchema,
3813
4038
  border: headerBorderSchema,
@@ -4237,7 +4462,6 @@ var init_classNames = __esmMin((() => {
4237
4462
  init_types$15();
4238
4463
  }));
4239
4464
  var init_generateBaseCSS = __esmMin((() => {}));
4240
- var init_background$2 = __esmMin((() => {}));
4241
4465
  var STATE_SELECTORS;
4242
4466
  var init_cssUtils = __esmMin((() => {
4243
4467
  STATE_SELECTORS = {
@@ -4247,6 +4471,64 @@ var init_cssUtils = __esmMin((() => {
4247
4471
  base: ""
4248
4472
  };
4249
4473
  }));
4474
+ //#endregion
4475
+ //#region ../theme-core/src/buttons/effects/presets/background.ts
4476
+ function shadeBackgroundEffect(config) {
4477
+ return {
4478
+ id: config.id,
4479
+ name: config.name,
4480
+ description: config.description,
4481
+ category: "background",
4482
+ pseudoElement: "none",
4483
+ applicableTo: ["button"],
4484
+ customizableOption: {
4485
+ name: "amount",
4486
+ type: "select",
4487
+ label: config.label,
4488
+ default: 100,
4489
+ options: [
4490
+ 0,
4491
+ 100,
4492
+ 200,
4493
+ 300,
4494
+ 400,
4495
+ 500,
4496
+ 600,
4497
+ 700,
4498
+ 800,
4499
+ 900
4500
+ ]
4501
+ },
4502
+ isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
4503
+ generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
4504
+ if (buttonConfig.background.type !== "solid") return "";
4505
+ const amount = (options.amount || 100) * config.shadeDirection;
4506
+ const baseToken = buttonConfig.background.colorToken ?? "primary-500";
4507
+ return `
4508
+ :where([data-theme-scope="${themeId}"]) .${variantId}:hover {
4509
+ background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
4510
+ }
4511
+ `;
4512
+ }
4513
+ };
4514
+ }
4515
+ var init_background$2 = __esmMin((() => {
4516
+ init_cssUtils();
4517
+ shadeBackgroundEffect({
4518
+ id: "darken-background",
4519
+ name: "Darken on Hover",
4520
+ description: "Darkens the background color on hover",
4521
+ label: "Darken Amount (shade step)",
4522
+ shadeDirection: 1
4523
+ });
4524
+ shadeBackgroundEffect({
4525
+ id: "lighten-background",
4526
+ name: "Lighten on Hover",
4527
+ description: "Lightens the background color on hover",
4528
+ label: "Lighten Amount (shade step)",
4529
+ shadeDirection: -1
4530
+ });
4531
+ }));
4250
4532
  var init_shadow = __esmMin((() => {
4251
4533
  init_cssUtils();
4252
4534
  }));
@@ -4398,7 +4680,7 @@ function selectionBranch(styleId, parameters) {
4398
4680
  }).strict();
4399
4681
  }
4400
4682
  var BUTTON_STYLE_IDS, quietArrowParametersSchema, emptyParametersSchema$1, buttonStyleSelectionWireSchema, buttonStyleSelectionSchema;
4401
- var init_selection$1 = __esmMin((() => {
4683
+ var init_selection = __esmMin((() => {
4402
4684
  BUTTON_STYLE_IDS = [
4403
4685
  "soft-pill",
4404
4686
  "earth-pill",
@@ -4437,7 +4719,7 @@ var quietArrowRecipe;
4437
4719
  var init_quietArrow = __esmMin((() => {
4438
4720
  init_domain();
4439
4721
  init_types$15();
4440
- init_selection$1();
4722
+ init_selection();
4441
4723
  quietArrowRecipe = defineButtonStyleRecipe({
4442
4724
  id: "quiet-arrow",
4443
4725
  accessibilityLabel: "Wide uppercase buttons with trailing arrows",
@@ -5903,7 +6185,7 @@ function defaultButtonStyleSelectionFor(styleId) {
5903
6185
  var buttonStyleRecipes, recipesById, registeredIds;
5904
6186
  var init_registry$1 = __esmMin((() => {
5905
6187
  init_domain();
5906
- init_selection$1();
6188
+ init_selection();
5907
6189
  init_quietArrow();
5908
6190
  init_staticRecipes();
5909
6191
  buttonStyleRecipes = [
@@ -5929,7 +6211,7 @@ var init_registry$1 = __esmMin((() => {
5929
6211
  var init_styles = __esmMin((() => {
5930
6212
  init_domain();
5931
6213
  init_registry$1();
5932
- init_selection$1();
6214
+ init_selection();
5933
6215
  }));
5934
6216
  function presetCategory(recipe) {
5935
6217
  switch (recipe.tags.era) {
@@ -10163,40 +10445,6 @@ function resolveButtonAffordance(input) {
10163
10445
  if (nodeIcon) return { iconId: nodeIcon };
10164
10446
  return null;
10165
10447
  }
10166
- //#endregion
10167
- //#region ../blocks/src/system/constants/buttonRoles.ts
10168
- /**
10169
- * Temporary rollout boundary for persisted content written before issue #1220.
10170
- * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
10171
- * only until the post-deploy role rewrite has been audited in production.
10172
- */
10173
- function canonicalizePersistedBlockButtonRole(value) {
10174
- return value === "link" || value === "tertiary" ? "ghost" : value;
10175
- }
10176
- function isBlockButtonRole(value) {
10177
- return blockButtonRoleSchema.safeParse(value).success;
10178
- }
10179
- var BLOCK_BUTTON_ROLES, blockButtonRoleSchema, persistedBlockButtonRoleSchema, BLOCK_BUTTON_ROLE_LABELS, BLOCK_BUTTON_ROLE_OPTIONS;
10180
- var init_buttonRoles = __esmMin((() => {
10181
- init_buttons();
10182
- BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
10183
- blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
10184
- persistedBlockButtonRoleSchema = z$1.preprocess((value) => typeof value === "string" ? canonicalizePersistedBlockButtonRole(value) : value, blockButtonRoleSchema);
10185
- BLOCK_BUTTON_ROLE_LABELS = {
10186
- primary: "Primary",
10187
- secondary: "Secondary",
10188
- outline: "Outline",
10189
- ghost: "Ghost",
10190
- accent: "Accent"
10191
- };
10192
- BLOCK_BUTTON_ROLE_OPTIONS = BLOCK_BUTTON_ROLES.map((value) => ({
10193
- value,
10194
- label: BLOCK_BUTTON_ROLE_LABELS[value]
10195
- }));
10196
- }));
10197
- //#endregion
10198
- //#region ../blocks/src/system/inlineText.ts
10199
- init_buttonRoles();
10200
10448
  const inlineTextMarkSchema = z$1.discriminatedUnion("kind", [
10201
10449
  z$1.object({ kind: z$1.literal("strong") }),
10202
10450
  z$1.object({ kind: z$1.literal("emphasis") }),
@@ -10483,6 +10731,9 @@ function renderTrailingAffordanceIcon(affordance) {
10483
10731
  className: "rb-ml-2 rb-h-4 rb-w-4 rb-inline-block"
10484
10732
  });
10485
10733
  }
10734
+ function isMissingRequiredLink(linkRequired, resolvedHref) {
10735
+ return linkRequired && resolvedHref.length === 0;
10736
+ }
10486
10737
  const ButtonNode = ({ value, children, href, variantId = "primary", size = "md", disabled, type = "button", target, rel, linkRequired = false, trailingIcon, blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, className, ...rest }) => {
10487
10738
  const content = value ?? children;
10488
10739
  if (!content) {
@@ -10491,12 +10742,16 @@ const ButtonNode = ({ value, children, href, variantId = "primary", size = "md",
10491
10742
  }
10492
10743
  const affordanceIcon = renderTrailingAffordanceIcon(resolveButtonAffordance({ trailingIcon }));
10493
10744
  const resolvedHref = typeof href === "string" ? href.trim() : "";
10494
- if (linkRequired && resolvedHref.length === 0) {
10745
+ if (isMissingRequiredLink(linkRequired, resolvedHref)) {
10495
10746
  console.warn("[ButtonNode] Missing href for link-required button");
10496
10747
  return null;
10497
10748
  }
10498
10749
  const extraClassName = affordanceIcon ? [className, AFFORDANCE_SUPPRESS_CLASS].filter(Boolean).join(" ") : className;
10499
- const resolvedVariantId = parseThemeButtonVariantId(canonicalizePersistedBlockButtonRole(variantId));
10750
+ const resolvedVariantId = parseThemeButtonVariantId(variantId);
10751
+ if (variantId && !resolvedVariantId) {
10752
+ console.error("[ButtonNode] Invalid button variant", { variantId });
10753
+ return null;
10754
+ }
10500
10755
  const combinedClassName = resolvedVariantId ? themeButtonClassName({
10501
10756
  variant: resolvedVariantId,
10502
10757
  size,
@@ -10846,8 +11101,7 @@ const FeatureCardIconNode = ({ value, treatment, generatedIconSizePx, className,
10846
11101
  * in Server Component context. For client-side error handling,
10847
11102
  * use MediaNode from media.client.tsx via the client registry.
10848
11103
  */
10849
- var MediaNodeServer;
10850
- var init_media_server = __esmMin((() => {
11104
+ var MediaNodeServer, init_media_server = __esmMin((() => {
10851
11105
  init_media$1();
10852
11106
  MediaNodeServer = ({ value, className, style, videoPlayback = "inline", loading = "lazy", fetchPriority, size = ImagePresets.full, fieldPath, blockKind, blockContent, imageResolveContext: explicitImageResolveContext }) => {
10853
11107
  const imageResolveContext = explicitImageResolveContext ?? getCurrentResolveImageUrlContext();
@@ -10879,7 +11133,7 @@ var init_media_server = __esmMin((() => {
10879
11133
  decoding: "async"
10880
11134
  });
10881
11135
  };
10882
- })), PUBLIC_DOWNLOAD_MEDIA_TYPES, hotspotSchema, rotationSchema, rectSchema, aspectCropSchema, transformSchema, mediaPosterSchema, mediaBaseSchema, imageMediaSchema, videoMediaSchema, audioMediaSchema, documentMediaSchema, spreadsheetMediaSchema, archiveMediaSchema, mediaSchema;
11136
+ })), PUBLIC_DOWNLOAD_MEDIA_TYPES, hotspotSchema, rotationSchema, rectSchema, aspectCropSchema, transformSchema, mediaPosterSchema, mediaBaseSchema, mediaIdentifierSchema, imageMediaSchema, videoMediaSchema, audioMediaSchema, documentMediaSchema, spreadsheetMediaSchema, archiveMediaSchema, mediaSchema, persistableMediaBaseSchema;
10883
11137
  var init_media = __esmMin((() => {
10884
11138
  init_src$2();
10885
11139
  PUBLIC_DOWNLOAD_MEDIA_TYPES = [
@@ -10946,6 +11200,7 @@ var init_media = __esmMin((() => {
10946
11200
  poster: mediaPosterSchema.optional(),
10947
11201
  transform: transformSchema.optional()
10948
11202
  });
11203
+ mediaIdentifierSchema = z.string().trim().min(1).brand();
10949
11204
  imageMediaSchema = mediaBaseSchema.extend({ type: z.literal("image") });
10950
11205
  videoMediaSchema = mediaBaseSchema.extend({ type: z.literal("video") });
10951
11206
  audioMediaSchema = mediaBaseSchema.extend({ type: z.literal("audio") });
@@ -10960,6 +11215,37 @@ var init_media = __esmMin((() => {
10960
11215
  spreadsheetMediaSchema,
10961
11216
  archiveMediaSchema
10962
11217
  ]);
11218
+ persistableMediaBaseSchema = mediaBaseSchema.extend({ identifier: mediaIdentifierSchema });
11219
+ z.discriminatedUnion("type", [
11220
+ persistableMediaBaseSchema.extend({ type: z.literal("image") }),
11221
+ persistableMediaBaseSchema.extend({ type: z.literal("video") }),
11222
+ persistableMediaBaseSchema.extend({ type: z.literal("audio") }),
11223
+ persistableMediaBaseSchema.extend({ type: z.literal("document") }),
11224
+ persistableMediaBaseSchema.extend({ type: z.literal("spreadsheet") }),
11225
+ persistableMediaBaseSchema.extend({ type: z.literal("archive") })
11226
+ ]);
11227
+ }));
11228
+ //#endregion
11229
+ //#region ../blocks/src/system/constants/buttonRoles.ts
11230
+ function isBlockButtonRole(value) {
11231
+ return blockButtonRoleSchema.safeParse(value).success;
11232
+ }
11233
+ var BLOCK_BUTTON_ROLES, blockButtonRoleSchema, BLOCK_BUTTON_ROLE_LABELS, BLOCK_BUTTON_ROLE_OPTIONS;
11234
+ var init_buttonRoles = __esmMin((() => {
11235
+ init_buttons();
11236
+ BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
11237
+ blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
11238
+ BLOCK_BUTTON_ROLE_LABELS = {
11239
+ primary: "Primary",
11240
+ secondary: "Secondary",
11241
+ outline: "Outline",
11242
+ ghost: "Ghost",
11243
+ accent: "Accent"
11244
+ };
11245
+ BLOCK_BUTTON_ROLE_OPTIONS = BLOCK_BUTTON_ROLES.map((value) => ({
11246
+ value,
11247
+ label: BLOCK_BUTTON_ROLE_LABELS[value]
11248
+ }));
10963
11249
  }));
10964
11250
  //#endregion
10965
11251
  //#region ../blocks/src/system/runtime/nodes/file-download.tsx
@@ -11000,8 +11286,9 @@ function iconForMediaType(type) {
11000
11286
  });
11001
11287
  }
11002
11288
  }
11003
- function normalizeButtonVariant(value) {
11004
- return isBlockButtonRole(value) ? value : "primary";
11289
+ function parseButtonVariant(value) {
11290
+ if (value === null || value === void 0) return "primary";
11291
+ return isBlockButtonRole(value) ? value : null;
11005
11292
  }
11006
11293
  function FileDownloadNode({ value, title, description, buttonLabel, buttonVariant, className }) {
11007
11294
  if (!value || !isDownloadableMediaType(value.type)) return null;
@@ -11011,7 +11298,11 @@ function FileDownloadNode({ value, title, description, buttonLabel, buttonVarian
11011
11298
  const heading = title?.trim() || filename;
11012
11299
  const body = description?.trim();
11013
11300
  const label = buttonLabel?.trim() || "Download";
11014
- const variant = normalizeButtonVariant(buttonVariant);
11301
+ const variant = parseButtonVariant(buttonVariant);
11302
+ if (!variant) {
11303
+ console.error("[FileDownloadNode] Invalid button variant", { buttonVariant });
11304
+ return null;
11305
+ }
11015
11306
  return /* @__PURE__ */ jsx("div", {
11016
11307
  className,
11017
11308
  children: /* @__PURE__ */ jsxs("div", {
@@ -15616,7 +15907,7 @@ var init_contract_schemas = __esmMin((() => {
15616
15907
  init_buttonRoles();
15617
15908
  previewStageSchema = z$1.enum(["preview", "published"]);
15618
15909
  registrationButtonVariantSchema = blockButtonRoleSchema;
15619
- eventButtonVariantSchema = persistedBlockButtonRoleSchema;
15910
+ eventButtonVariantSchema = blockButtonRoleSchema;
15620
15911
  eventLayoutSchema = z$1.enum(eventCalendarListLayoutValues);
15621
15912
  eventCalendarDisplayModeSchema = z$1.enum(eventCalendarDisplayModeValues);
15622
15913
  eventCalendarDefaultViewSchema = z$1.enum(eventCalendarDefaultViewValues);
@@ -18554,10 +18845,22 @@ var init_accessibleSurfaces = __esmMin((() => {
18554
18845
  init_onColor();
18555
18846
  }));
18556
18847
  //#endregion
18848
+ //#region ../theme-core/src/site-styles/lookOptionGroups.ts
18849
+ function defineLookOptionGroup(group) {
18850
+ defaultOption(group);
18851
+ return group;
18852
+ }
18853
+ function defaultOption(group) {
18854
+ const option = group.options.find((candidate) => candidate.id === group.defaultOptionId);
18855
+ if (option) return option;
18856
+ throw new Error(`Look option group "${group.id}" defaults to missing option "${group.defaultOptionId}".`);
18857
+ }
18858
+ var init_lookOptionGroups = __esmMin((() => {}));
18859
+ //#endregion
18557
18860
  //#region ../theme-core/src/site-styles/appearancePresetResolution.ts
18558
18861
  function assertValidOptionGroups(preset) {
18559
18862
  preset.optionGroups?.forEach((group) => {
18560
- 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}".`);
18863
+ defineLookOptionGroup(group);
18561
18864
  });
18562
18865
  }
18563
18866
  function defineBlockAppearancePreset(preset) {
@@ -18565,772 +18868,655 @@ function defineBlockAppearancePreset(preset) {
18565
18868
  return preset;
18566
18869
  }
18567
18870
  var init_appearancePresetResolution = __esmMin((() => {
18871
+ init_lookOptionGroups();
18568
18872
  init_types$9();
18569
- }));
18570
- //#endregion
18571
- //#region ../theme-core/src/site-styles/blockAppearancePresets.ts
18572
- var blockAppearancePresets;
18873
+ })), brandScrimOptionGroups, microBannerLayoutPatches;
18573
18874
  var init_blockAppearancePresets = __esmMin((() => {
18574
18875
  init_appearancePresetResolution();
18575
18876
  init_types$9();
18576
- blockAppearancePresets = [
18577
- defineBlockAppearancePreset({
18578
- kind: "block-design",
18579
- id: "hero-immersive-image",
18580
- target: "hero",
18581
- label: "Immersive image hero",
18582
- blockKinds: ["block.hero"],
18583
- constraints: { layoutFamilies: ["centered", "compact"] },
18584
- layoutPatches: [{
18585
- constraints: { layoutVariantKeys: ["micro"] },
18586
- designPatch: {
18587
- sectionHeight: "banner",
18588
- heroTypographyScale: "display"
18589
- }
18590
- }],
18591
- design: {
18592
- sectionSurface: "hero-image",
18593
- contentFrame: plainFrame,
18594
- itemSurface: "none",
18595
- sectionHeight: "hero",
18596
- heroComposition: "center",
18597
- heroTypographyScale: "display",
18598
- imageSurfaceTreatment: { kind: "neutral-wash" }
18877
+ brandScrimOptionGroups = [{
18878
+ id: "image-surface-treatment",
18879
+ label: "Treatment",
18880
+ defaultOptionId: "brand-scrim-primary",
18881
+ options: [{
18882
+ id: "brand-scrim-primary",
18883
+ label: "Brand scrim",
18884
+ designPatch: { imageSurfaceTreatment: {
18885
+ kind: "brand-scrim",
18886
+ token: "primary"
18887
+ } }
18888
+ }, {
18889
+ id: "neutral-scrim",
18890
+ label: "Neutral scrim",
18891
+ designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
18892
+ }]
18893
+ }];
18894
+ microBannerLayoutPatches = [{
18895
+ constraints: { layoutVariantKeys: ["micro"] },
18896
+ designPatch: { sectionHeight: "banner" }
18897
+ }];
18898
+ defineBlockAppearancePreset({
18899
+ id: "hero-immersive-image",
18900
+ target: "hero",
18901
+ label: "Immersive image hero",
18902
+ blockKinds: ["block.hero"],
18903
+ constraints: { layoutFamilies: ["centered", "compact"] },
18904
+ layoutPatches: [{
18905
+ constraints: { layoutVariantKeys: ["micro"] },
18906
+ designPatch: {
18907
+ sectionHeight: "banner",
18908
+ heroTypographyScale: "display"
18599
18909
  }
18600
- }),
18601
- defineBlockAppearancePreset({
18602
- kind: "block-design",
18603
- id: "hero-bottom-left-panel",
18604
- target: "hero",
18605
- label: "Bottom-left panel hero",
18606
- blockKinds: ["block.hero"],
18607
- constraints: { layoutFamilies: ["centered", "compact"] },
18608
- optionGroups: [{
18609
- id: "image-surface-treatment",
18610
- label: "Treatment",
18611
- selectedOptionId: "neutral-scrim",
18612
- options: [{
18613
- id: "neutral-scrim",
18614
- label: "Neutral scrim",
18615
- designPatch: { imageSurfaceTreatment: {
18616
- kind: "neutral-scrim",
18617
- intensity: "balanced"
18618
- } }
18619
- }, {
18620
- id: "brand-scrim-primary",
18621
- label: "Brand scrim",
18622
- designPatch: { imageSurfaceTreatment: {
18623
- kind: "brand-scrim",
18624
- token: "primary",
18625
- intensity: "balanced"
18626
- } }
18627
- }]
18628
- }],
18629
- layoutPatches: [{
18630
- constraints: { layoutVariantKeys: ["micro"] },
18631
- designPatch: {
18632
- sectionHeight: "banner",
18633
- heroTypographyScale: "editorial"
18634
- }
18635
- }],
18636
- design: {
18637
- sectionSurface: "hero-image",
18638
- contentFrame: panelFrame("raised"),
18639
- itemSurface: "none",
18640
- sectionHeight: "immersive",
18641
- heroComposition: "bottom-left",
18642
- heroTypographyScale: "display",
18643
- imageSurfaceTreatment: {
18910
+ }],
18911
+ design: {
18912
+ sectionSurface: "hero-image",
18913
+ contentFrame: plainFrame,
18914
+ itemSurface: "none",
18915
+ sectionHeight: "hero",
18916
+ heroComposition: "center",
18917
+ heroTypographyScale: "display",
18918
+ imageSurfaceTreatment: { kind: "neutral-wash" }
18919
+ }
18920
+ }), defineBlockAppearancePreset({
18921
+ id: "hero-bottom-left-panel",
18922
+ target: "hero",
18923
+ label: "Bottom-left panel hero",
18924
+ blockKinds: ["block.hero"],
18925
+ constraints: { layoutFamilies: ["centered", "compact"] },
18926
+ optionGroups: [{
18927
+ id: "image-surface-treatment",
18928
+ label: "Treatment",
18929
+ defaultOptionId: "neutral-scrim",
18930
+ options: [{
18931
+ id: "neutral-scrim",
18932
+ label: "Neutral scrim",
18933
+ designPatch: { imageSurfaceTreatment: {
18644
18934
  kind: "neutral-scrim",
18645
18935
  intensity: "balanced"
18646
- }
18647
- }
18648
- }),
18649
- defineBlockAppearancePreset({
18650
- kind: "block-design",
18651
- id: "hero-poster-image",
18652
- target: "hero",
18653
- label: "Poster image hero",
18654
- blockKinds: ["block.hero"],
18655
- constraints: { layoutFamilies: ["centered", "compact"] },
18656
- layoutPatches: [{
18657
- constraints: { layoutVariantKeys: ["micro"] },
18658
- designPatch: {
18659
- sectionHeight: "banner",
18660
- heroTypographyScale: "display"
18661
- }
18662
- }],
18663
- design: {
18664
- sectionSurface: "hero-image",
18665
- contentFrame: plainFrame,
18666
- itemSurface: "none",
18667
- sectionHeight: "immersive",
18668
- heroComposition: "center",
18669
- heroTypographyScale: "poster",
18670
- imageSurfaceTreatment: {
18936
+ } }
18937
+ }, {
18938
+ id: "brand-scrim-primary",
18939
+ label: "Brand scrim",
18940
+ designPatch: { imageSurfaceTreatment: {
18671
18941
  kind: "brand-scrim",
18672
18942
  token: "primary",
18673
- intensity: "strong"
18674
- }
18675
- }
18676
- }),
18677
- defineBlockAppearancePreset({
18678
- kind: "block-design",
18679
- id: "hero-brand-scrim",
18680
- target: "hero",
18681
- label: "Brand scrim image hero",
18682
- blockKinds: ["block.hero"],
18683
- constraints: { layoutFamilies: ["centered", "compact"] },
18684
- optionGroups: [{
18685
- id: "image-surface-treatment",
18686
- label: "Treatment",
18687
- selectedOptionId: "brand-scrim-primary",
18688
- options: [{
18689
- id: "brand-scrim-primary",
18690
- label: "Brand scrim",
18691
- designPatch: { imageSurfaceTreatment: {
18692
- kind: "brand-scrim",
18693
- token: "primary"
18694
- } }
18695
- }, {
18696
- id: "neutral-scrim",
18697
- label: "Neutral scrim",
18698
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
18699
- }]
18700
- }],
18701
- layoutPatches: [{
18702
- constraints: { layoutVariantKeys: ["micro"] },
18703
- designPatch: { sectionHeight: "banner" }
18704
- }],
18705
- design: {
18706
- sectionSurface: "hero-image",
18707
- contentFrame: plainFrame,
18708
- itemSurface: "none",
18709
- sectionHeight: "immersive",
18710
- heroComposition: "center",
18711
- heroTypographyScale: "display",
18712
- imageSurfaceTreatment: {
18713
- kind: "brand-scrim",
18714
- token: "primary"
18715
- }
18716
- }
18717
- }),
18718
- defineBlockAppearancePreset({
18719
- kind: "block-design",
18720
- id: "hero-brand-scrim-fixed-frame",
18721
- target: "hero",
18722
- label: "Fixed-frame brand scrim hero",
18723
- blockKinds: ["block.hero"],
18724
- constraints: { layoutFamilies: ["centered", "compact"] },
18725
- optionGroups: [{
18726
- id: "image-surface-treatment",
18727
- label: "Treatment",
18728
- selectedOptionId: "brand-scrim-primary",
18729
- options: [{
18730
- id: "brand-scrim-primary",
18731
- label: "Brand scrim",
18732
- designPatch: { imageSurfaceTreatment: {
18733
- kind: "brand-scrim",
18734
- token: "primary"
18735
- } }
18736
- }, {
18737
- id: "neutral-scrim",
18738
- label: "Neutral scrim",
18739
- designPatch: { imageSurfaceTreatment: { kind: "neutral-scrim" } }
18740
- }]
18741
- }],
18742
- layoutPatches: [{
18743
- constraints: { layoutVariantKeys: ["micro"] },
18744
- designPatch: { sectionHeight: "banner" }
18745
- }],
18746
- design: {
18747
- sectionSurface: "hero-image",
18748
- contentFrame: plainFrame,
18749
- itemSurface: "none",
18750
- sectionHeight: "immersive",
18751
- heroComposition: "center",
18752
- heroTypographyScale: "display",
18753
- imageSurfaceTreatment: {
18754
- kind: "brand-scrim",
18755
- token: "primary"
18756
- },
18757
- imageSurfaceMotion: "fixed-frame",
18758
- eyebrowTreatment: "accent-pill-bounce"
18759
- }
18760
- }),
18761
- defineBlockAppearancePreset({
18762
- kind: "block-design",
18763
- id: "hero-brand-depth-expressive",
18764
- target: "hero",
18765
- label: "Expressive brand-depth hero",
18766
- blockKinds: ["block.hero"],
18767
- constraints: { layoutFamilies: ["centered", "compact"] },
18768
- design: {
18769
- sectionSurface: "brand-depth-band",
18770
- contentFrame: plainFrame,
18771
- itemSurface: "none",
18772
- heroComposition: "center",
18773
- heroTypographyScale: "editorial",
18774
- eyebrowTreatment: "accent-pill-bounce"
18775
- }
18776
- }),
18777
- defineBlockAppearancePreset({
18778
- kind: "block-design",
18779
- id: "hero-contained-intro",
18780
- target: "hero",
18781
- label: "Contained intro hero",
18782
- blockKinds: ["block.hero"],
18783
- design: {
18784
- sectionSurface: "muted-band",
18785
- contentFrame: panelFrame("inset"),
18786
- itemSurface: "none",
18787
- heroComposition: "center",
18788
- heroTypographyScale: "editorial"
18789
- }
18790
- }),
18791
- defineBlockAppearancePreset({
18792
- kind: "block-design",
18793
- id: "hero-split-editorial",
18794
- target: "hero",
18795
- label: "Editorial split hero",
18796
- blockKinds: ["block.hero"],
18797
- constraints: { layoutFamilies: ["split"] },
18798
- design: {
18799
- sectionSurface: "base",
18800
- contentFrame: plainFrame,
18801
- itemSurface: "none",
18943
+ intensity: "balanced"
18944
+ } }
18945
+ }]
18946
+ }],
18947
+ layoutPatches: [{
18948
+ constraints: { layoutVariantKeys: ["micro"] },
18949
+ designPatch: {
18950
+ sectionHeight: "banner",
18802
18951
  heroTypographyScale: "editorial"
18803
18952
  }
18804
- }),
18805
- defineBlockAppearancePreset({
18806
- kind: "block-design",
18807
- id: "hero-split-brand",
18808
- target: "hero",
18809
- label: "Brand split hero",
18810
- blockKinds: ["block.hero"],
18811
- constraints: { layoutFamilies: ["split"] },
18812
- design: {
18813
- sectionSurface: "brand-depth-band",
18814
- contentFrame: plainFrame,
18815
- itemSurface: "none",
18816
- heroTypographyScale: "display",
18817
- eyebrowTreatment: "accent-pill-bounce"
18818
- }
18819
- }),
18820
- defineBlockAppearancePreset({
18821
- kind: "block-design",
18822
- id: "hero-split-soft-panel",
18823
- target: "hero",
18824
- label: "Soft panel split hero",
18825
- blockKinds: ["block.hero"],
18826
- constraints: { layoutFamilies: ["split"] },
18827
- design: {
18828
- sectionSurface: "muted-band",
18829
- contentFrame: panelFrame("raised"),
18830
- itemSurface: "none",
18831
- heroTypographyScale: "editorial"
18953
+ }],
18954
+ design: {
18955
+ sectionSurface: "hero-image",
18956
+ contentFrame: panelFrame("raised"),
18957
+ itemSurface: "none",
18958
+ sectionHeight: "immersive",
18959
+ heroComposition: "bottom-left",
18960
+ heroTypographyScale: "display",
18961
+ imageSurfaceTreatment: {
18962
+ kind: "neutral-scrim",
18963
+ intensity: "balanced"
18832
18964
  }
18833
- }),
18834
- defineBlockAppearancePreset({
18835
- kind: "block-design",
18836
- id: "hero-split-accent",
18837
- target: "hero",
18838
- label: "Accent split hero",
18839
- blockKinds: ["block.hero"],
18840
- constraints: { layoutFamilies: ["split"] },
18841
- design: {
18842
- sectionSurface: "accent-band",
18843
- contentFrame: panelFrame("raised"),
18844
- itemSurface: "none",
18965
+ }
18966
+ }), defineBlockAppearancePreset({
18967
+ id: "hero-poster-image",
18968
+ target: "hero",
18969
+ label: "Poster image hero",
18970
+ blockKinds: ["block.hero"],
18971
+ constraints: { layoutFamilies: ["centered", "compact"] },
18972
+ layoutPatches: [{
18973
+ constraints: { layoutVariantKeys: ["micro"] },
18974
+ designPatch: {
18975
+ sectionHeight: "banner",
18845
18976
  heroTypographyScale: "display"
18846
18977
  }
18847
- }),
18848
- defineBlockAppearancePreset({
18849
- kind: "block-design",
18850
- id: "intro-editorial-statement",
18851
- target: "intro",
18852
- label: "Editorial intro statement",
18853
- blockKinds: ["block.intro"],
18854
- constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
18855
- design: {
18856
- sectionSurface: "base",
18857
- contentFrame: plainFrame,
18858
- itemSurface: "none",
18859
- composition: {
18860
- kind: "intro",
18861
- treatment: "editorial-statement"
18862
- }
18863
- }
18864
- }),
18865
- defineBlockAppearancePreset({
18866
- kind: "block-design",
18867
- id: "intro-portrait-bio",
18868
- target: "intro",
18869
- label: "Portrait and bio",
18870
- blockKinds: ["block.intro"],
18871
- constraints: { layoutVariantKeys: ["media-copy"] },
18872
- design: {
18873
- sectionSurface: "base",
18874
- contentFrame: plainFrame,
18875
- itemSurface: "none",
18876
- composition: {
18877
- kind: "intro",
18878
- treatment: "portrait-bio"
18879
- }
18880
- }
18881
- }),
18882
- defineBlockAppearancePreset({
18883
- kind: "block-design",
18884
- id: "offerings-preview-default-cards",
18885
- target: "offerings",
18886
- label: "Default offering cards",
18887
- blockKinds: ["block.offerings-preview"],
18888
- design: {
18889
- sectionSurface: "base",
18890
- contentFrame: plainFrame,
18891
- itemSurface: "default"
18892
- }
18893
- }),
18894
- defineBlockAppearancePreset({
18895
- kind: "block-design",
18896
- id: "offerings-preview-secondary-cards",
18897
- target: "offerings",
18898
- label: "Secondary offering cards",
18899
- blockKinds: ["block.offerings-preview"],
18900
- design: {
18901
- sectionSurface: "muted-band",
18902
- contentFrame: plainFrame,
18903
- itemSurface: "inset"
18904
- }
18905
- }),
18906
- defineBlockAppearancePreset({
18907
- kind: "block-design",
18908
- id: "offerings-preview-non-carded",
18909
- target: "offerings",
18910
- label: "Non-carded offerings",
18911
- blockKinds: ["block.offerings-preview"],
18912
- design: {
18913
- sectionSurface: "muted-band",
18914
- contentFrame: plainFrame,
18915
- itemSurface: "editorial"
18916
- }
18917
- }),
18918
- defineBlockAppearancePreset({
18919
- kind: "block-design",
18920
- id: "offerings-preview-paired-feature-cards",
18921
- target: "offerings",
18922
- label: "Paired feature cards",
18923
- blockKinds: ["block.offerings-preview"],
18924
- constraints: { layoutVariantKeys: ["cards"] },
18925
- design: {
18926
- sectionSurface: "base",
18927
- contentFrame: plainFrame,
18928
- itemSurface: "none"
18929
- }
18930
- }),
18931
- defineBlockAppearancePreset({
18932
- kind: "block-design",
18933
- id: "offerings-preview-open-editorial-columns",
18934
- target: "offerings",
18935
- label: "Open editorial columns",
18936
- blockKinds: ["block.offerings-preview"],
18937
- constraints: { layoutVariantKeys: ["cards"] },
18938
- design: {
18939
- sectionSurface: "base",
18940
- contentFrame: plainFrame,
18941
- itemSurface: "none"
18942
- }
18943
- }),
18944
- defineBlockAppearancePreset({
18945
- kind: "block-design",
18946
- id: "offerings-preview-joined-programme-panel",
18947
- target: "offerings",
18948
- label: "Joined programme panel",
18949
- blockKinds: ["block.offerings-preview"],
18950
- constraints: { layoutVariantKeys: ["cards"] },
18951
- design: {
18952
- sectionSurface: "base",
18953
- contentFrame: plainFrame,
18954
- itemSurface: "none"
18955
- }
18956
- }),
18957
- defineBlockAppearancePreset({
18958
- kind: "block-design",
18959
- id: "feature-cards-raised-rule",
18960
- target: "feature-cards",
18961
- label: "Raised cards with rule",
18962
- blockKinds: ["block.feature-cards"],
18963
- design: {
18964
- sectionSurface: "base",
18965
- contentFrame: plainFrame,
18966
- itemSurface: "raised"
18967
- }
18968
- }),
18969
- defineBlockAppearancePreset({
18970
- kind: "block-design",
18971
- id: "feature-cards-bold-colors",
18972
- target: "feature-cards",
18973
- label: "Bold colour-blocked cards",
18974
- blockKinds: ["block.feature-cards"],
18975
- design: {
18976
- sectionSurface: "base",
18977
- contentFrame: plainFrame,
18978
- itemSurface: "color-blocked"
18979
- }
18980
- }),
18981
- defineBlockAppearancePreset({
18982
- kind: "block-design",
18983
- id: "feature-cards-editorial-columns",
18984
- target: "feature-cards",
18985
- label: "Editorial open columns",
18986
- blockKinds: ["block.feature-cards"],
18987
- design: {
18988
- sectionSurface: "base",
18989
- contentFrame: plainFrame,
18990
- itemSurface: "editorial"
18991
- }
18992
- }),
18993
- defineBlockAppearancePreset({
18994
- kind: "block-design",
18995
- id: "feature-cards-asymmetric-emphasis",
18996
- target: "feature-cards",
18997
- label: "Asymmetric emphasis pair",
18998
- blockKinds: ["block.feature-cards"],
18999
- constraints: { layoutFamilies: ["grid"] },
19000
- design: {
19001
- sectionSurface: "base",
19002
- contentFrame: plainFrame,
19003
- itemSurface: "none",
19004
- composition: {
19005
- kind: "feature-cards",
19006
- treatment: "asymmetric-emphasis"
19007
- }
19008
- }
19009
- }),
19010
- defineBlockAppearancePreset({
19011
- kind: "block-design",
19012
- id: "feature-cards-framed-programme",
19013
- target: "feature-cards",
19014
- label: "Framed programme cards",
19015
- blockKinds: ["block.feature-cards"],
19016
- constraints: { layoutFamilies: ["grid"] },
19017
- design: {
19018
- sectionSurface: "brand-depth-band",
19019
- contentFrame: plainFrame,
19020
- itemSurface: "inset",
19021
- composition: {
19022
- kind: "feature-cards",
19023
- treatment: "framed-programme"
19024
- }
19025
- }
19026
- }),
19027
- defineBlockAppearancePreset({
19028
- kind: "block-design",
19029
- id: "feature-cards-soft-panels",
19030
- target: "feature-cards",
19031
- label: "Soft tinted panels",
19032
- blockKinds: ["block.feature-cards"],
19033
- design: {
19034
- sectionSurface: "base",
19035
- contentFrame: plainFrame,
19036
- itemSurface: "inset"
19037
- }
19038
- }),
19039
- defineBlockAppearancePreset({
19040
- kind: "block-design",
19041
- id: "feature-cards-editorial-diptych",
19042
- target: "feature-cards",
19043
- label: "Editorial diptych",
19044
- blockKinds: ["block.feature-cards"],
19045
- constraints: { layoutVariantKeys: ["editorial-diptych"] },
19046
- design: {
19047
- sectionSurface: "base",
19048
- contentFrame: plainFrame,
19049
- itemSurface: "flat"
19050
- }
19051
- }),
19052
- defineBlockAppearancePreset({
19053
- kind: "block-design",
19054
- id: "feature-cards-editorial-pathways",
19055
- target: "feature-cards",
19056
- label: "Editorial pathways",
19057
- blockKinds: ["block.feature-cards"],
19058
- constraints: { layoutVariantKeys: ["editorial-pathways"] },
19059
- design: {
19060
- sectionSurface: "base",
19061
- contentFrame: plainFrame,
19062
- itemSurface: "flat"
19063
- }
19064
- }),
19065
- defineBlockAppearancePreset({
19066
- kind: "block-design",
19067
- id: "feature-cards-photo-tiles",
19068
- target: "feature-cards",
19069
- label: "Photo tiles",
19070
- blockKinds: ["block.feature-cards"],
19071
- design: {
19072
- sectionSurface: "base",
19073
- contentFrame: plainFrame,
19074
- itemSurface: "raised"
19075
- }
19076
- }),
19077
- defineBlockAppearancePreset({
19078
- kind: "block-design",
19079
- id: "events-lined-panel",
19080
- target: "events",
19081
- label: "Raised event panel",
19082
- blockKinds: ["block.event-calendar", "block.event-listing"],
19083
- design: {
19084
- sectionSurface: "base",
19085
- contentFrame: panelFrame("raised"),
19086
- itemSurface: "none"
19087
- }
19088
- }),
19089
- defineBlockAppearancePreset({
19090
- kind: "block-design",
19091
- id: "events-ruled-register",
19092
- target: "events",
19093
- label: "Ruled event register",
19094
- blockKinds: ["block.event-calendar", "block.event-listing"],
19095
- design: {
19096
- sectionSurface: "brand-depth-band",
19097
- contentFrame: plainFrame,
19098
- itemSurface: "none",
19099
- eventListTreatment: "ruled-register"
19100
- }
19101
- }),
19102
- defineBlockAppearancePreset({
19103
- kind: "block-design",
19104
- id: "events-editorial-register",
19105
- target: "events",
19106
- label: "Editorial event register",
19107
- blockKinds: ["block.event-calendar", "block.event-listing"],
19108
- design: {
19109
- sectionSurface: "base",
19110
- contentFrame: plainFrame,
19111
- itemSurface: "none",
19112
- eventListTreatment: "editorial-register"
19113
- }
19114
- }),
19115
- defineBlockAppearancePreset({
19116
- kind: "block-design",
19117
- id: "events-dense-index",
19118
- target: "events",
19119
- label: "Dense event index",
19120
- blockKinds: ["block.event-calendar", "block.event-listing"],
19121
- design: {
19122
- sectionSurface: "accent-band",
19123
- contentFrame: plainFrame,
19124
- itemSurface: "none",
19125
- eventListTreatment: "dense-index"
19126
- }
19127
- }),
19128
- defineBlockAppearancePreset({
19129
- kind: "block-design",
19130
- id: "schedule-details-brand-depth",
19131
- target: "events",
19132
- label: "Brand-depth schedule details",
19133
- blockKinds: ["block.event-details", "block.course-details"],
19134
- design: {
19135
- sectionSurface: "brand-depth-band",
19136
- contentFrame: plainFrame,
19137
- itemSurface: "none",
19138
- tileTreatment: "brand-depth"
19139
- }
19140
- }),
19141
- defineBlockAppearancePreset({
19142
- kind: "block-design",
19143
- id: "media-text-flush-feature",
19144
- target: "media-text",
19145
- label: "Flush media feature",
19146
- blockKinds: ["block.media-text"],
19147
- design: {
19148
- sectionSurface: "muted-band",
19149
- contentFrame: flushPanelFrame({ bleed: "start" }),
19150
- itemSurface: "none"
19151
- }
19152
- }),
19153
- defineBlockAppearancePreset({
19154
- kind: "block-design",
19155
- id: "testimonials-simple-cards",
19156
- target: "testimonials",
19157
- label: "Simple testimonial cards",
19158
- blockKinds: ["block.testimonials"],
19159
- design: {
19160
- sectionSurface: "base",
19161
- contentFrame: plainFrame,
19162
- itemSurface: "default"
19163
- }
19164
- }),
19165
- defineBlockAppearancePreset({
19166
- kind: "block-design",
19167
- id: "testimonials-raised-panel",
19168
- target: "testimonials",
19169
- label: "Raised testimonial panel",
19170
- blockKinds: ["block.testimonials"],
19171
- design: {
19172
- sectionSurface: "muted-band",
19173
- contentFrame: panelFrame("raised"),
19174
- itemSurface: "raised"
19175
- }
19176
- }),
19177
- defineBlockAppearancePreset({
19178
- kind: "block-design",
19179
- id: "testimonials-accent-panel",
19180
- target: "testimonials",
19181
- label: "Accent testimonial panel",
19182
- blockKinds: ["block.testimonials"],
19183
- design: {
19184
- sectionSurface: "accent-band",
19185
- contentFrame: panelFrame("raised"),
19186
- itemSurface: "raised"
19187
- }
19188
- }),
19189
- defineBlockAppearancePreset({
19190
- kind: "block-design",
19191
- id: "testimonials-default-cards",
19192
- target: "testimonials",
19193
- label: "Default cards",
19194
- blockKinds: ["block.testimonials"],
19195
- design: {
19196
- sectionSurface: "base",
19197
- contentFrame: plainFrame,
19198
- itemSurface: "none",
19199
- testimonialCardTreatment: "default"
19200
- }
19201
- }),
19202
- defineBlockAppearancePreset({
19203
- kind: "block-design",
19204
- id: "testimonials-statement-cards",
19205
- target: "testimonials",
19206
- label: "Statement cards",
19207
- blockKinds: ["block.testimonials"],
19208
- design: {
19209
- sectionSurface: "accent-band",
19210
- contentFrame: plainFrame,
19211
- itemSurface: "raised",
19212
- testimonialCardTreatment: "statement"
19213
- }
19214
- }),
19215
- defineBlockAppearancePreset({
19216
- kind: "block-design",
19217
- id: "testimonials-brand-statement-cards",
19218
- target: "testimonials",
19219
- label: "Brand statement cards",
19220
- blockKinds: ["block.testimonials"],
19221
- design: {
19222
- sectionSurface: "brand-depth-band",
19223
- contentFrame: plainFrame,
19224
- itemSurface: "raised",
19225
- testimonialCardTreatment: "statement"
19226
- }
19227
- }),
19228
- defineBlockAppearancePreset({
19229
- kind: "block-design",
19230
- id: "testimonials-non-carded",
19231
- target: "testimonials",
19232
- label: "Non-carded",
19233
- blockKinds: ["block.testimonials"],
19234
- design: {
19235
- sectionSurface: "muted-band",
19236
- contentFrame: plainFrame,
19237
- itemSurface: "none",
19238
- testimonialCardTreatment: "non-carded"
19239
- }
19240
- }),
19241
- defineBlockAppearancePreset({
19242
- kind: "block-design",
19243
- id: "testimonials-evergreen-lead",
19244
- target: "testimonials",
19245
- label: "Evergreen lead",
19246
- blockKinds: ["block.testimonials"],
19247
- constraints: { layoutVariantKeys: ["featured-editorial"] },
19248
- design: {
19249
- sectionSurface: "base",
19250
- contentFrame: plainFrame,
19251
- itemSurface: "none"
19252
- }
19253
- }),
19254
- defineBlockAppearancePreset({
19255
- kind: "block-design",
19256
- id: "testimonials-room-and-response",
19257
- target: "testimonials",
19258
- label: "Room and response",
19259
- blockKinds: ["block.testimonials"],
19260
- constraints: { layoutVariantKeys: ["featured-editorial"] },
19261
- design: {
19262
- sectionSurface: "base",
19263
- contentFrame: plainFrame,
19264
- itemSurface: "none"
18978
+ }],
18979
+ design: {
18980
+ sectionSurface: "hero-image",
18981
+ contentFrame: plainFrame,
18982
+ itemSurface: "none",
18983
+ sectionHeight: "immersive",
18984
+ heroComposition: "center",
18985
+ heroTypographyScale: "poster",
18986
+ imageSurfaceTreatment: {
18987
+ kind: "brand-scrim",
18988
+ token: "primary",
18989
+ intensity: "strong"
19265
18990
  }
19266
- }),
19267
- defineBlockAppearancePreset({
19268
- kind: "block-design",
19269
- id: "testimonials-open-floor",
19270
- target: "testimonials",
19271
- label: "Open floor",
19272
- blockKinds: ["block.testimonials"],
19273
- constraints: { layoutVariantKeys: ["featured-editorial"] },
19274
- design: {
19275
- sectionSurface: "base",
19276
- contentFrame: plainFrame,
19277
- itemSurface: "none"
18991
+ }
18992
+ }), defineBlockAppearancePreset({
18993
+ id: "hero-brand-scrim",
18994
+ target: "hero",
18995
+ label: "Brand scrim image hero",
18996
+ blockKinds: ["block.hero"],
18997
+ constraints: { layoutFamilies: ["centered", "compact"] },
18998
+ optionGroups: brandScrimOptionGroups,
18999
+ layoutPatches: microBannerLayoutPatches,
19000
+ design: {
19001
+ sectionSurface: "hero-image",
19002
+ contentFrame: plainFrame,
19003
+ itemSurface: "none",
19004
+ sectionHeight: "immersive",
19005
+ heroComposition: "center",
19006
+ heroTypographyScale: "display",
19007
+ imageSurfaceTreatment: {
19008
+ kind: "brand-scrim",
19009
+ token: "primary"
19278
19010
  }
19279
- }),
19280
- defineBlockAppearancePreset({
19281
- kind: "block-design",
19282
- id: "faq-base-accordion",
19283
- target: "faq",
19284
- label: "Base accordion FAQ",
19285
- blockKinds: ["block.faq"],
19286
- design: {
19287
- sectionSurface: "base",
19288
- contentFrame: plainFrame,
19289
- itemSurface: "default"
19011
+ }
19012
+ }), defineBlockAppearancePreset({
19013
+ id: "hero-brand-scrim-fixed-frame",
19014
+ target: "hero",
19015
+ label: "Fixed-frame brand scrim hero",
19016
+ blockKinds: ["block.hero"],
19017
+ constraints: { layoutFamilies: ["centered", "compact"] },
19018
+ optionGroups: brandScrimOptionGroups,
19019
+ layoutPatches: microBannerLayoutPatches,
19020
+ design: {
19021
+ sectionSurface: "hero-image",
19022
+ contentFrame: plainFrame,
19023
+ itemSurface: "none",
19024
+ sectionHeight: "immersive",
19025
+ heroComposition: "center",
19026
+ heroTypographyScale: "display",
19027
+ imageSurfaceTreatment: {
19028
+ kind: "brand-scrim",
19029
+ token: "primary"
19030
+ },
19031
+ imageSurfaceMotion: "fixed-frame",
19032
+ eyebrowTreatment: "accent-pill-bounce"
19033
+ }
19034
+ }), defineBlockAppearancePreset({
19035
+ id: "hero-brand-depth-expressive",
19036
+ target: "hero",
19037
+ label: "Expressive brand-depth hero",
19038
+ blockKinds: ["block.hero"],
19039
+ constraints: { layoutFamilies: ["centered", "compact"] },
19040
+ design: {
19041
+ sectionSurface: "brand-depth-band",
19042
+ contentFrame: plainFrame,
19043
+ itemSurface: "none",
19044
+ heroComposition: "center",
19045
+ heroTypographyScale: "editorial",
19046
+ eyebrowTreatment: "accent-pill-bounce"
19047
+ }
19048
+ }), defineBlockAppearancePreset({
19049
+ id: "hero-contained-intro",
19050
+ target: "hero",
19051
+ label: "Contained intro hero",
19052
+ blockKinds: ["block.hero"],
19053
+ design: {
19054
+ sectionSurface: "muted-band",
19055
+ contentFrame: panelFrame("inset"),
19056
+ itemSurface: "none",
19057
+ heroComposition: "center",
19058
+ heroTypographyScale: "editorial"
19059
+ }
19060
+ }), defineBlockAppearancePreset({
19061
+ id: "hero-split-editorial",
19062
+ target: "hero",
19063
+ label: "Editorial split hero",
19064
+ blockKinds: ["block.hero"],
19065
+ constraints: { layoutFamilies: ["split"] },
19066
+ design: {
19067
+ sectionSurface: "base",
19068
+ contentFrame: plainFrame,
19069
+ itemSurface: "none",
19070
+ heroTypographyScale: "editorial"
19071
+ }
19072
+ }), defineBlockAppearancePreset({
19073
+ id: "hero-split-brand",
19074
+ target: "hero",
19075
+ label: "Brand split hero",
19076
+ blockKinds: ["block.hero"],
19077
+ constraints: { layoutFamilies: ["split"] },
19078
+ design: {
19079
+ sectionSurface: "brand-depth-band",
19080
+ contentFrame: plainFrame,
19081
+ itemSurface: "none",
19082
+ heroTypographyScale: "display",
19083
+ eyebrowTreatment: "accent-pill-bounce"
19084
+ }
19085
+ }), defineBlockAppearancePreset({
19086
+ id: "hero-split-soft-panel",
19087
+ target: "hero",
19088
+ label: "Soft panel split hero",
19089
+ blockKinds: ["block.hero"],
19090
+ constraints: { layoutFamilies: ["split"] },
19091
+ design: {
19092
+ sectionSurface: "muted-band",
19093
+ contentFrame: panelFrame("raised"),
19094
+ itemSurface: "none",
19095
+ heroTypographyScale: "editorial"
19096
+ }
19097
+ }), defineBlockAppearancePreset({
19098
+ id: "hero-split-accent",
19099
+ target: "hero",
19100
+ label: "Accent split hero",
19101
+ blockKinds: ["block.hero"],
19102
+ constraints: { layoutFamilies: ["split"] },
19103
+ design: {
19104
+ sectionSurface: "accent-band",
19105
+ contentFrame: panelFrame("raised"),
19106
+ itemSurface: "none",
19107
+ heroTypographyScale: "display"
19108
+ }
19109
+ }), defineBlockAppearancePreset({
19110
+ id: "intro-editorial-statement",
19111
+ target: "intro",
19112
+ label: "Editorial intro statement",
19113
+ blockKinds: ["block.intro"],
19114
+ constraints: { layoutVariantKeys: ["centered-copy", "statement-copy"] },
19115
+ design: {
19116
+ sectionSurface: "base",
19117
+ contentFrame: plainFrame,
19118
+ itemSurface: "none",
19119
+ composition: {
19120
+ kind: "intro",
19121
+ treatment: "editorial-statement"
19290
19122
  }
19291
- }),
19292
- defineBlockAppearancePreset({
19293
- kind: "block-design",
19294
- id: "faq-contained-help",
19295
- target: "faq",
19296
- label: "Contained help panel",
19297
- blockKinds: ["block.faq"],
19298
- design: {
19299
- sectionSurface: "muted-band",
19300
- contentFrame: panelFrame("inset"),
19301
- itemSurface: "default"
19123
+ }
19124
+ }), defineBlockAppearancePreset({
19125
+ id: "intro-portrait-bio",
19126
+ target: "intro",
19127
+ label: "Portrait and bio",
19128
+ blockKinds: ["block.intro"],
19129
+ constraints: { layoutVariantKeys: ["media-copy"] },
19130
+ design: {
19131
+ sectionSurface: "base",
19132
+ contentFrame: plainFrame,
19133
+ itemSurface: "none",
19134
+ composition: {
19135
+ kind: "intro",
19136
+ treatment: "portrait-bio"
19302
19137
  }
19303
- }),
19304
- defineBlockAppearancePreset({
19305
- kind: "block-design",
19306
- id: "contact-form-panel",
19307
- target: "contact-form",
19308
- label: "Raised form panel",
19309
- blockKinds: ["block.form"],
19310
- design: {
19311
- sectionSurface: "muted-band",
19312
- contentFrame: panelFrame("raised"),
19313
- itemSurface: "none"
19138
+ }
19139
+ }), defineBlockAppearancePreset({
19140
+ id: "offerings-preview-default-cards",
19141
+ target: "offerings",
19142
+ label: "Default offering cards",
19143
+ blockKinds: ["block.offerings-preview"],
19144
+ design: {
19145
+ sectionSurface: "base",
19146
+ contentFrame: plainFrame,
19147
+ itemSurface: "default"
19148
+ }
19149
+ }), defineBlockAppearancePreset({
19150
+ id: "offerings-preview-secondary-cards",
19151
+ target: "offerings",
19152
+ label: "Secondary offering cards",
19153
+ blockKinds: ["block.offerings-preview"],
19154
+ design: {
19155
+ sectionSurface: "muted-band",
19156
+ contentFrame: plainFrame,
19157
+ itemSurface: "inset"
19158
+ }
19159
+ }), defineBlockAppearancePreset({
19160
+ id: "offerings-preview-non-carded",
19161
+ target: "offerings",
19162
+ label: "Non-carded offerings",
19163
+ blockKinds: ["block.offerings-preview"],
19164
+ design: {
19165
+ sectionSurface: "muted-band",
19166
+ contentFrame: plainFrame,
19167
+ itemSurface: "editorial"
19168
+ }
19169
+ }), defineBlockAppearancePreset({
19170
+ id: "offerings-preview-paired-feature-cards",
19171
+ target: "offerings",
19172
+ label: "Paired feature cards",
19173
+ blockKinds: ["block.offerings-preview"],
19174
+ constraints: { layoutVariantKeys: ["cards"] },
19175
+ design: {
19176
+ sectionSurface: "base",
19177
+ contentFrame: plainFrame,
19178
+ itemSurface: "none"
19179
+ }
19180
+ }), defineBlockAppearancePreset({
19181
+ id: "offerings-preview-open-editorial-columns",
19182
+ target: "offerings",
19183
+ label: "Open editorial columns",
19184
+ blockKinds: ["block.offerings-preview"],
19185
+ constraints: { layoutVariantKeys: ["cards"] },
19186
+ design: {
19187
+ sectionSurface: "base",
19188
+ contentFrame: plainFrame,
19189
+ itemSurface: "none"
19190
+ }
19191
+ }), defineBlockAppearancePreset({
19192
+ id: "offerings-preview-joined-programme-panel",
19193
+ target: "offerings",
19194
+ label: "Joined programme panel",
19195
+ blockKinds: ["block.offerings-preview"],
19196
+ constraints: { layoutVariantKeys: ["cards"] },
19197
+ design: {
19198
+ sectionSurface: "base",
19199
+ contentFrame: plainFrame,
19200
+ itemSurface: "none"
19201
+ }
19202
+ }), defineBlockAppearancePreset({
19203
+ id: "feature-cards-raised-rule",
19204
+ target: "feature-cards",
19205
+ label: "Raised cards with rule",
19206
+ blockKinds: ["block.feature-cards"],
19207
+ design: {
19208
+ sectionSurface: "base",
19209
+ contentFrame: plainFrame,
19210
+ itemSurface: "raised"
19211
+ }
19212
+ }), defineBlockAppearancePreset({
19213
+ id: "feature-cards-bold-colors",
19214
+ target: "feature-cards",
19215
+ label: "Bold colour-blocked cards",
19216
+ blockKinds: ["block.feature-cards"],
19217
+ design: {
19218
+ sectionSurface: "base",
19219
+ contentFrame: plainFrame,
19220
+ itemSurface: "color-blocked"
19221
+ }
19222
+ }), defineBlockAppearancePreset({
19223
+ id: "feature-cards-editorial-columns",
19224
+ target: "feature-cards",
19225
+ label: "Editorial open columns",
19226
+ blockKinds: ["block.feature-cards"],
19227
+ design: {
19228
+ sectionSurface: "base",
19229
+ contentFrame: plainFrame,
19230
+ itemSurface: "editorial"
19231
+ }
19232
+ }), defineBlockAppearancePreset({
19233
+ id: "feature-cards-asymmetric-emphasis",
19234
+ target: "feature-cards",
19235
+ label: "Asymmetric emphasis pair",
19236
+ blockKinds: ["block.feature-cards"],
19237
+ constraints: { layoutFamilies: ["grid"] },
19238
+ design: {
19239
+ sectionSurface: "base",
19240
+ contentFrame: plainFrame,
19241
+ itemSurface: "none",
19242
+ composition: {
19243
+ kind: "feature-cards",
19244
+ treatment: "asymmetric-emphasis"
19314
19245
  }
19315
- }),
19316
- defineBlockAppearancePreset({
19317
- kind: "block-design",
19318
- id: "cta-accent-band",
19319
- target: "cta",
19320
- label: "Accent CTA band",
19321
- blockKinds: ["block.cta-full"],
19322
- design: {
19323
- sectionSurface: "accent-band",
19324
- contentFrame: plainFrame,
19325
- itemSurface: "none",
19326
- eyebrowTreatment: "accent"
19246
+ }
19247
+ }), defineBlockAppearancePreset({
19248
+ id: "feature-cards-framed-programme",
19249
+ target: "feature-cards",
19250
+ label: "Framed programme cards",
19251
+ blockKinds: ["block.feature-cards"],
19252
+ constraints: { layoutFamilies: ["grid"] },
19253
+ design: {
19254
+ sectionSurface: "brand-depth-band",
19255
+ contentFrame: plainFrame,
19256
+ itemSurface: "inset",
19257
+ composition: {
19258
+ kind: "feature-cards",
19259
+ treatment: "framed-programme"
19327
19260
  }
19328
- })
19329
- ];
19261
+ }
19262
+ }), defineBlockAppearancePreset({
19263
+ id: "feature-cards-soft-panels",
19264
+ target: "feature-cards",
19265
+ label: "Soft tinted panels",
19266
+ blockKinds: ["block.feature-cards"],
19267
+ design: {
19268
+ sectionSurface: "base",
19269
+ contentFrame: plainFrame,
19270
+ itemSurface: "inset"
19271
+ }
19272
+ }), defineBlockAppearancePreset({
19273
+ id: "feature-cards-editorial-diptych",
19274
+ target: "feature-cards",
19275
+ label: "Editorial diptych",
19276
+ blockKinds: ["block.feature-cards"],
19277
+ constraints: { layoutVariantKeys: ["editorial-diptych"] },
19278
+ design: {
19279
+ sectionSurface: "base",
19280
+ contentFrame: plainFrame,
19281
+ itemSurface: "flat"
19282
+ }
19283
+ }), defineBlockAppearancePreset({
19284
+ id: "feature-cards-editorial-pathways",
19285
+ target: "feature-cards",
19286
+ label: "Editorial pathways",
19287
+ blockKinds: ["block.feature-cards"],
19288
+ constraints: { layoutVariantKeys: ["editorial-pathways"] },
19289
+ design: {
19290
+ sectionSurface: "base",
19291
+ contentFrame: plainFrame,
19292
+ itemSurface: "flat"
19293
+ }
19294
+ }), defineBlockAppearancePreset({
19295
+ id: "feature-cards-photo-tiles",
19296
+ target: "feature-cards",
19297
+ label: "Photo tiles",
19298
+ blockKinds: ["block.feature-cards"],
19299
+ design: {
19300
+ sectionSurface: "base",
19301
+ contentFrame: plainFrame,
19302
+ itemSurface: "raised"
19303
+ }
19304
+ }), defineBlockAppearancePreset({
19305
+ id: "events-lined-panel",
19306
+ target: "events",
19307
+ label: "Raised event panel",
19308
+ blockKinds: ["block.event-calendar", "block.event-listing"],
19309
+ design: {
19310
+ sectionSurface: "base",
19311
+ contentFrame: panelFrame("raised"),
19312
+ itemSurface: "none"
19313
+ }
19314
+ }), defineBlockAppearancePreset({
19315
+ id: "events-ruled-register",
19316
+ target: "events",
19317
+ label: "Ruled event register",
19318
+ blockKinds: ["block.event-calendar", "block.event-listing"],
19319
+ design: {
19320
+ sectionSurface: "brand-depth-band",
19321
+ contentFrame: plainFrame,
19322
+ itemSurface: "none",
19323
+ eventListTreatment: "ruled-register"
19324
+ }
19325
+ }), defineBlockAppearancePreset({
19326
+ id: "events-editorial-register",
19327
+ target: "events",
19328
+ label: "Editorial event register",
19329
+ blockKinds: ["block.event-calendar", "block.event-listing"],
19330
+ design: {
19331
+ sectionSurface: "base",
19332
+ contentFrame: plainFrame,
19333
+ itemSurface: "none",
19334
+ eventListTreatment: "editorial-register"
19335
+ }
19336
+ }), defineBlockAppearancePreset({
19337
+ id: "events-dense-index",
19338
+ target: "events",
19339
+ label: "Dense event index",
19340
+ blockKinds: ["block.event-calendar", "block.event-listing"],
19341
+ design: {
19342
+ sectionSurface: "accent-band",
19343
+ contentFrame: plainFrame,
19344
+ itemSurface: "none",
19345
+ eventListTreatment: "dense-index"
19346
+ }
19347
+ }), defineBlockAppearancePreset({
19348
+ id: "schedule-details-brand-depth",
19349
+ target: "events",
19350
+ label: "Brand-depth schedule details",
19351
+ blockKinds: ["block.event-details", "block.course-details"],
19352
+ design: {
19353
+ sectionSurface: "brand-depth-band",
19354
+ contentFrame: plainFrame,
19355
+ itemSurface: "none",
19356
+ tileTreatment: "brand-depth"
19357
+ }
19358
+ }), defineBlockAppearancePreset({
19359
+ id: "media-text-flush-feature",
19360
+ target: "media-text",
19361
+ label: "Flush media feature",
19362
+ blockKinds: ["block.media-text"],
19363
+ design: {
19364
+ sectionSurface: "muted-band",
19365
+ contentFrame: flushPanelFrame({ bleed: "start" }),
19366
+ itemSurface: "none"
19367
+ }
19368
+ }), defineBlockAppearancePreset({
19369
+ id: "testimonials-simple-cards",
19370
+ target: "testimonials",
19371
+ label: "Simple testimonial cards",
19372
+ blockKinds: ["block.testimonials"],
19373
+ design: {
19374
+ sectionSurface: "base",
19375
+ contentFrame: plainFrame,
19376
+ itemSurface: "default"
19377
+ }
19378
+ }), defineBlockAppearancePreset({
19379
+ id: "testimonials-raised-panel",
19380
+ target: "testimonials",
19381
+ label: "Raised testimonial panel",
19382
+ blockKinds: ["block.testimonials"],
19383
+ design: {
19384
+ sectionSurface: "muted-band",
19385
+ contentFrame: panelFrame("raised"),
19386
+ itemSurface: "raised"
19387
+ }
19388
+ }), defineBlockAppearancePreset({
19389
+ id: "testimonials-accent-panel",
19390
+ target: "testimonials",
19391
+ label: "Accent testimonial panel",
19392
+ blockKinds: ["block.testimonials"],
19393
+ design: {
19394
+ sectionSurface: "accent-band",
19395
+ contentFrame: panelFrame("raised"),
19396
+ itemSurface: "raised"
19397
+ }
19398
+ }), defineBlockAppearancePreset({
19399
+ id: "testimonials-default-cards",
19400
+ target: "testimonials",
19401
+ label: "Default cards",
19402
+ blockKinds: ["block.testimonials"],
19403
+ design: {
19404
+ sectionSurface: "base",
19405
+ contentFrame: plainFrame,
19406
+ itemSurface: "none",
19407
+ testimonialCardTreatment: "default"
19408
+ }
19409
+ }), defineBlockAppearancePreset({
19410
+ id: "testimonials-statement-cards",
19411
+ target: "testimonials",
19412
+ label: "Statement cards",
19413
+ blockKinds: ["block.testimonials"],
19414
+ design: {
19415
+ sectionSurface: "accent-band",
19416
+ contentFrame: plainFrame,
19417
+ itemSurface: "raised",
19418
+ testimonialCardTreatment: "statement"
19419
+ }
19420
+ }), defineBlockAppearancePreset({
19421
+ id: "testimonials-brand-statement-cards",
19422
+ target: "testimonials",
19423
+ label: "Brand statement cards",
19424
+ blockKinds: ["block.testimonials"],
19425
+ design: {
19426
+ sectionSurface: "brand-depth-band",
19427
+ contentFrame: plainFrame,
19428
+ itemSurface: "raised",
19429
+ testimonialCardTreatment: "statement"
19430
+ }
19431
+ }), defineBlockAppearancePreset({
19432
+ id: "testimonials-non-carded",
19433
+ target: "testimonials",
19434
+ label: "Non-carded",
19435
+ blockKinds: ["block.testimonials"],
19436
+ design: {
19437
+ sectionSurface: "muted-band",
19438
+ contentFrame: plainFrame,
19439
+ itemSurface: "none",
19440
+ testimonialCardTreatment: "non-carded"
19441
+ }
19442
+ }), defineBlockAppearancePreset({
19443
+ id: "testimonials-evergreen-lead",
19444
+ target: "testimonials",
19445
+ label: "Evergreen lead",
19446
+ blockKinds: ["block.testimonials"],
19447
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
19448
+ design: {
19449
+ sectionSurface: "base",
19450
+ contentFrame: plainFrame,
19451
+ itemSurface: "none"
19452
+ }
19453
+ }), defineBlockAppearancePreset({
19454
+ id: "testimonials-room-and-response",
19455
+ target: "testimonials",
19456
+ label: "Room and response",
19457
+ blockKinds: ["block.testimonials"],
19458
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
19459
+ design: {
19460
+ sectionSurface: "base",
19461
+ contentFrame: plainFrame,
19462
+ itemSurface: "none"
19463
+ }
19464
+ }), defineBlockAppearancePreset({
19465
+ id: "testimonials-open-floor",
19466
+ target: "testimonials",
19467
+ label: "Open floor",
19468
+ blockKinds: ["block.testimonials"],
19469
+ constraints: { layoutVariantKeys: ["featured-editorial"] },
19470
+ design: {
19471
+ sectionSurface: "base",
19472
+ contentFrame: plainFrame,
19473
+ itemSurface: "none"
19474
+ }
19475
+ }), defineBlockAppearancePreset({
19476
+ id: "faq-base-accordion",
19477
+ target: "faq",
19478
+ label: "Base accordion FAQ",
19479
+ blockKinds: ["block.faq"],
19480
+ design: {
19481
+ sectionSurface: "base",
19482
+ contentFrame: plainFrame,
19483
+ itemSurface: "default"
19484
+ }
19485
+ }), defineBlockAppearancePreset({
19486
+ id: "faq-contained-help",
19487
+ target: "faq",
19488
+ label: "Contained help panel",
19489
+ blockKinds: ["block.faq"],
19490
+ design: {
19491
+ sectionSurface: "muted-band",
19492
+ contentFrame: panelFrame("inset"),
19493
+ itemSurface: "default"
19494
+ }
19495
+ }), defineBlockAppearancePreset({
19496
+ id: "contact-form-panel",
19497
+ target: "contact-form",
19498
+ label: "Raised form panel",
19499
+ blockKinds: ["block.form"],
19500
+ design: {
19501
+ sectionSurface: "muted-band",
19502
+ contentFrame: panelFrame("raised"),
19503
+ itemSurface: "none"
19504
+ }
19505
+ }), defineBlockAppearancePreset({
19506
+ id: "cta-accent-band",
19507
+ target: "cta",
19508
+ label: "Accent CTA band",
19509
+ blockKinds: ["block.cta-full"],
19510
+ design: {
19511
+ sectionSurface: "accent-band",
19512
+ contentFrame: plainFrame,
19513
+ itemSurface: "none",
19514
+ eyebrowTreatment: "accent"
19515
+ }
19516
+ });
19330
19517
  }));
19331
19518
  var init_appearancePresetCatalog = __esmMin((() => {
19332
19519
  init_blockAppearancePresets();
19333
- [...blockAppearancePresets];
19334
19520
  }));
19335
19521
  var init_appearancePresetTypes = __esmMin((() => {}));
19336
19522
  //#endregion
@@ -20613,134 +20799,12 @@ var init_browser = __esmMin((() => {
20613
20799
  var init_extractPalette = __esmMin((() => {
20614
20800
  init_browser();
20615
20801
  }));
20616
- //#endregion
20617
- //#region ../theme-core/src/palette/colors.ts
20618
- function normalizePaletteHex(value) {
20619
- if (!NORMALIZABLE_HEX_REGEX.test(value)) return null;
20620
- const normalized = value.toLowerCase();
20621
- if (normalized.length === 7) return normalized;
20622
- const triplet = normalized.slice(1);
20623
- const red = triplet.charAt(0);
20624
- const green = triplet.charAt(1);
20625
- const blue = triplet.charAt(2);
20626
- return `#${red}${red}${green}${green}${blue}${blue}`;
20627
- }
20628
- function paletteColorsFromEntries(entries) {
20629
- const values = {};
20630
- for (const entry of entries) {
20631
- const parsedRole = paletteTokenNameSchema.safeParse(entry.name);
20632
- if (!parsedRole.success) return {
20633
- ok: false,
20634
- error: {
20635
- kind: "unknown-role",
20636
- role: entry.name
20637
- }
20638
- };
20639
- const role = parsedRole.data;
20640
- if (values[role] !== void 0) return {
20641
- ok: false,
20642
- error: {
20643
- kind: "duplicate-role",
20644
- role
20645
- }
20646
- };
20647
- const hex = normalizePaletteHex(entry.hex);
20648
- if (!hex) return {
20649
- ok: false,
20650
- error: {
20651
- kind: "invalid-color",
20652
- role,
20653
- value: entry.hex
20654
- }
20655
- };
20656
- values[role] = hex;
20657
- }
20658
- const missing = PALETTE_TOKEN_NAMES.filter((role) => values[role] === void 0);
20659
- if (missing.length > 0) return {
20660
- ok: false,
20661
- error: {
20662
- kind: "missing-roles",
20663
- roles: missing
20664
- }
20665
- };
20666
- return {
20667
- ok: true,
20668
- colors: paletteColorsSchema.parse(values)
20669
- };
20670
- }
20671
- function requirePaletteColorsFromEntries(entries) {
20672
- const result = paletteColorsFromEntries(entries);
20673
- if (result.ok) return result.colors;
20674
- throw new Error(`Invalid complete palette: ${result.error.kind}`);
20675
- }
20676
- function paletteColorFingerprint(colors) {
20677
- return PALETTE_TOKEN_NAMES.map((name) => `${name}:${colors[name]}`).join("|");
20678
- }
20679
- function canonicalPaletteHashInput(colors, mode) {
20680
- return `${mode}|${paletteColorFingerprint(colors)}`;
20681
- }
20682
- /**
20683
- * The shared TypeScript/SQL protocol. Do not reorder roles: the order comes
20684
- * from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
20685
- */
20686
- function paletteValueKey(colors, mode) {
20687
- return `${PALETTE_VALUE_KEY_PREFIX}${canonicalPaletteHashInput(colors, mode)}`;
20688
- }
20689
- /** Parses only the exact v1 canonical form emitted by paletteValueKey. */
20690
- function parsePaletteValueKey(value) {
20691
- if (typeof value !== "string" || !value.startsWith(PALETTE_VALUE_KEY_PREFIX)) return null;
20692
- const [rawMode, ...rawRoles] = value.slice(PALETTE_VALUE_KEY_PREFIX.length).split("|");
20693
- const mode = paletteModeSchema.safeParse(rawMode);
20694
- if (!mode.success || rawRoles.length !== PALETTE_TOKEN_NAMES.length) return null;
20695
- const colors = paletteColorsFromEntries(rawRoles.map((roleValue) => {
20696
- const separator = roleValue.indexOf(":");
20697
- return separator === -1 ? {
20698
- name: "",
20699
- hex: ""
20700
- } : {
20701
- name: roleValue.slice(0, separator),
20702
- hex: roleValue.slice(separator + 1)
20703
- };
20704
- }));
20705
- if (!colors.ok || paletteValueKey(colors.colors, mode.data) !== value) return null;
20706
- return value;
20707
- }
20708
- var HEX_COLOR_REGEX, NORMALIZABLE_HEX_REGEX, hexColorSchema, paletteModeSchema, PALETTE_VALUE_KEY_PREFIX, paletteColorsSchema, paletteValueKeySchema;
20709
- var init_colors = __esmMin((() => {
20710
- init_themeColorTokens();
20711
- HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
20712
- NORMALIZABLE_HEX_REGEX = /^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i;
20713
- hexColorSchema = z$1.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
20714
- paletteModeSchema = z$1.enum(["light", "dark"]);
20715
- PALETTE_VALUE_KEY_PREFIX = "palette-value:v1|";
20716
- z$1.string().regex(/^[0-9a-f]{64}$/, "Palette hash must be a lowercase SHA-256 value").transform((value) => value);
20717
- paletteColorsSchema = z$1.object({
20718
- primary: hexColorSchema,
20719
- primaryForeground: hexColorSchema,
20720
- secondary: hexColorSchema,
20721
- accent: hexColorSchema,
20722
- success: hexColorSchema,
20723
- warning: hexColorSchema,
20724
- destructive: hexColorSchema,
20725
- background: hexColorSchema,
20726
- surface: hexColorSchema,
20727
- surfaceAlt: hexColorSchema,
20728
- muted: hexColorSchema,
20729
- text: hexColorSchema,
20730
- border: hexColorSchema
20731
- }).strict().transform((value) => value);
20732
- paletteValueKeySchema = z$1.string().transform((value, ctx) => {
20733
- const parsed = parsePaletteValueKey(value);
20734
- if (parsed) return parsed;
20735
- ctx.addIssue({
20736
- code: "custom",
20737
- message: "Invalid canonical palette value key"
20738
- });
20739
- return z$1.NEVER;
20740
- });
20802
+ var init_concretePalette = __esmMin((() => {
20803
+ init_colors();
20804
+ }));
20805
+ var init_fromVibrant = __esmMin((() => {
20806
+ init_utils$5();
20741
20807
  }));
20742
- var init_editorState = __esmMin((() => {}));
20743
- var init_libraryModel = __esmMin((() => {}));
20744
20808
  //#endregion
20745
20809
  //#region ../theme-core/src/site-styles/styleTags.ts
20746
20810
  var STYLE_AXIS_VALUES, styleTagsSchema;
@@ -22030,22 +22094,12 @@ var init_warm_dark = __esmMin((() => {
22030
22094
  }));
22031
22095
  //#endregion
22032
22096
  //#region ../theme-core/src/palette/curated/index.ts
22033
- /**
22034
- * Curated palette library.
22035
- *
22036
- * Authoring keys are readable source aliases. Value keys are derived from the
22037
- * complete mode and semantic colours and are the only curated identity used at
22038
- * persistence and runtime boundaries.
22039
- */
22040
22097
  function admitCuratedPaletteDefinition(definition) {
22041
22098
  return {
22042
22099
  ...definition,
22043
22100
  valueKey: definition.valueKey
22044
22101
  };
22045
22102
  }
22046
- function findCuratedPalette(valueKey) {
22047
- return curatedPalettesByValueKey.get(valueKey);
22048
- }
22049
22103
  function findCuratedPaletteByAuthoringKey(authoringKey) {
22050
22104
  return curatedPalettesByAuthoringKey.get(authoringKey);
22051
22105
  }
@@ -22054,9 +22108,8 @@ function requireCuratedPaletteValueKey(authoringKey) {
22054
22108
  if (!palette) throw new Error(`Unknown curated palette authoring key "${authoringKey}"`);
22055
22109
  return palette.valueKey;
22056
22110
  }
22057
- var curatedPalettes, curatedPalettesByValueKey, curatedPalettesByAuthoringKey, knownCuratedPaletteValueKeySchema;
22111
+ var curatedPalettes, curatedPalettesByAuthoringKey;
22058
22112
  var init_curated = __esmMin((() => {
22059
- init_colors();
22060
22113
  init_brand_led();
22061
22114
  init_high_contrast();
22062
22115
  init_soft_natural();
@@ -22083,107 +22136,8 @@ var init_curated = __esmMin((() => {
22083
22136
  admitCuratedPaletteDefinition(warmDarkEmber),
22084
22137
  admitCuratedPaletteDefinition(warmDarkKirtanGold)
22085
22138
  ];
22086
- curatedPalettesByValueKey = new Map(curatedPalettes.map((palette) => [palette.valueKey, palette]));
22139
+ new Map(curatedPalettes.map((palette) => [palette.valueKey, palette]));
22087
22140
  curatedPalettesByAuthoringKey = new Map(curatedPalettes.map((palette) => [palette.authoringKey, palette]));
22088
- knownCuratedPaletteValueKeySchema = z$1.string().transform((value, ctx) => {
22089
- const valueKey = parsePaletteValueKey(value);
22090
- if (!valueKey) {
22091
- ctx.addIssue({
22092
- code: "custom",
22093
- message: "Invalid canonical palette value key"
22094
- });
22095
- return z$1.NEVER;
22096
- }
22097
- const palette = findCuratedPalette(valueKey);
22098
- if (!palette) {
22099
- ctx.addIssue({
22100
- code: "custom",
22101
- message: "Unknown curated palette value key"
22102
- });
22103
- return z$1.NEVER;
22104
- }
22105
- return palette.valueKey;
22106
- });
22107
- }));
22108
- var init_resolveSelection = __esmMin((() => {
22109
- init_curated();
22110
- })), sitePaletteIdSchema, sitePaletteVersionSchema, paletteSelectionSchema, onboardingPaletteOriginSchema, curatedForkPaletteOriginSchema, manualPaletteOriginSchema, legacyCustomizedPaletteOriginSchema, sitePaletteOriginSchema, editorSitePaletteOriginSchema;
22111
- var init_selection = __esmMin((() => {
22112
- init_colors();
22113
- init_curated();
22114
- sitePaletteIdSchema = z$1.string().uuid().transform((value) => value);
22115
- sitePaletteVersionSchema = z$1.number().int().nonnegative().transform((value) => value);
22116
- paletteSelectionSchema = z$1.discriminatedUnion("kind", [z$1.object({
22117
- kind: z$1.literal("curated"),
22118
- valueKey: knownCuratedPaletteValueKeySchema
22119
- }), z$1.object({
22120
- kind: z$1.literal("site"),
22121
- paletteId: sitePaletteIdSchema
22122
- })]);
22123
- onboardingPaletteOriginSchema = z$1.object({
22124
- kind: z$1.literal("onboarding"),
22125
- sourceKey: z$1.string().min(1).nullable()
22126
- });
22127
- curatedForkPaletteOriginSchema = z$1.object({
22128
- kind: z$1.literal("curated-fork"),
22129
- sourceValueKey: paletteValueKeySchema
22130
- });
22131
- manualPaletteOriginSchema = z$1.object({ kind: z$1.literal("manual") });
22132
- legacyCustomizedPaletteOriginSchema = z$1.object({
22133
- kind: z$1.literal("legacy-customized"),
22134
- sourceKey: z$1.string().min(1).nullable()
22135
- });
22136
- sitePaletteOriginSchema = z$1.discriminatedUnion("kind", [
22137
- onboardingPaletteOriginSchema,
22138
- curatedForkPaletteOriginSchema,
22139
- manualPaletteOriginSchema,
22140
- legacyCustomizedPaletteOriginSchema
22141
- ]);
22142
- editorSitePaletteOriginSchema = z$1.discriminatedUnion("kind", [z$1.object({
22143
- kind: z$1.literal("curated-fork"),
22144
- sourceValueKey: knownCuratedPaletteValueKeySchema
22145
- }), manualPaletteOriginSchema]);
22146
- z$1.object({
22147
- id: sitePaletteIdSchema,
22148
- colors: paletteColorsSchema,
22149
- mode: paletteModeSchema,
22150
- origin: sitePaletteOriginSchema,
22151
- version: sitePaletteVersionSchema
22152
- });
22153
- z$1.discriminatedUnion("kind", [
22154
- z$1.object({ kind: z$1.literal("preserve") }),
22155
- z$1.object({
22156
- kind: z$1.literal("select"),
22157
- selection: paletteSelectionSchema
22158
- }),
22159
- z$1.object({
22160
- kind: z$1.literal("create-site"),
22161
- colors: paletteColorsSchema,
22162
- mode: paletteModeSchema,
22163
- origin: editorSitePaletteOriginSchema
22164
- }),
22165
- z$1.object({
22166
- kind: z$1.literal("update-site"),
22167
- paletteId: sitePaletteIdSchema,
22168
- expectedVersion: sitePaletteVersionSchema,
22169
- colors: paletteColorsSchema,
22170
- mode: paletteModeSchema
22171
- })
22172
- ]);
22173
- }));
22174
- var init_persistenceReadSource = __esmMin((() => {
22175
- init_curated();
22176
- init_colors();
22177
- init_resolveSelection();
22178
- init_selection();
22179
- }));
22180
- var init_sitePalettePersistence = __esmMin((() => {
22181
- init_curated();
22182
- init_colors();
22183
- init_selection();
22184
- }));
22185
- var init_fromVibrant = __esmMin((() => {
22186
- init_utils$5();
22187
22141
  })), init_palette$1 = __esmMin((() => {
22188
22142
  init_all();
22189
22143
  init_classifyColor();
@@ -22196,12 +22150,7 @@ var init_fromVibrant = __esmMin((() => {
22196
22150
  init_paletteAccess();
22197
22151
  init_extractPalette();
22198
22152
  init_colors();
22199
- init_editorState();
22200
- init_libraryModel();
22201
- init_persistenceReadSource();
22202
- init_resolveSelection();
22203
- init_selection();
22204
- init_sitePalettePersistence();
22153
+ init_concretePalette();
22205
22154
  init_fromVibrant();
22206
22155
  init_suggestRecipes();
22207
22156
  init_allRecipes();
@@ -22264,6 +22213,38 @@ var init_backgroundAppearance = __esmMin((() => {
22264
22213
  var init_compositionBudget = __esmMin((() => {
22265
22214
  init_types$9();
22266
22215
  }));
22216
+ var init_headerStyleParts = __esmMin((() => {}));
22217
+ var clearSplitInteractionPalette;
22218
+ var init_headerInteractionPalette = __esmMin((() => {
22219
+ init_interactionPalette();
22220
+ init_lookOptionGroups();
22221
+ clearSplitInteractionPalette = defineLookOptionGroup({
22222
+ id: "interaction-palette",
22223
+ label: "Hover colour",
22224
+ defaultOptionId: "accent",
22225
+ options: [
22226
+ {
22227
+ id: "accent",
22228
+ label: "Accent"
22229
+ },
22230
+ {
22231
+ id: "primary",
22232
+ label: "Primary"
22233
+ },
22234
+ {
22235
+ id: "secondary",
22236
+ label: "Secondary"
22237
+ }
22238
+ ]
22239
+ });
22240
+ }));
22241
+ var init_headerOpeningForeground = __esmMin((() => {
22242
+ init_expandPalette();
22243
+ init_colorConversion();
22244
+ init_tokens();
22245
+ init_colorTokenParts();
22246
+ init_types$9();
22247
+ }));
22267
22248
  var init_customizableSurfaces = __esmMin((() => {
22268
22249
  init_types$9();
22269
22250
  }));
@@ -22283,7 +22264,7 @@ function asHeaderStyleId(value) {
22283
22264
  * optional nested styling fields that would otherwise leak from another Look.
22284
22265
  */
22285
22266
  function baseHeader(theme) {
22286
- 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;
22267
+ 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;
22287
22268
  return {
22288
22269
  ...header,
22289
22270
  navContainer: {
@@ -22642,12 +22623,12 @@ function floatingGlassHeader(theme) {
22642
22623
  }
22643
22624
  };
22644
22625
  }
22645
- function headerConfigurationKey(configuration) {
22646
- return `${configuration.structure}:${configuration.treatment}:${configuration.behavior}`;
22647
- }
22648
22626
  var titleOnlyLogoAccommodation, inlineWordmarkLogoAccommodation, inlineMarkWithTitleLogoAccommodation, logoPlateAccommodation, centeredBadgeAccommodation, popoutBadgeAccommodation, centeredMastheadAccommodation, unbackedOverlayLogoAccommodation, inlineClassicLogoAccommodations, centeredLogoAccommodations, overlayLogoAccommodations, headerLayoutCatalog, headerStyleCatalog, headerStylesById, headerStyleCompatibilityOrder, legacyHeaderLookAliases, legacyHeaderLookAliasesById, headerLookCatalog;
22649
22627
  var init_headerLooks = __esmMin((() => {
22650
22628
  init_headerCtaVariants();
22629
+ init_headerStyleParts();
22630
+ init_headerInteractionPalette();
22631
+ init_headerOpeningForeground();
22651
22632
  init_customizableSurfaces();
22652
22633
  init_logoBranding();
22653
22634
  init_types$9();
@@ -22774,7 +22755,6 @@ var init_headerLooks = __esmMin((() => {
22774
22755
  id: asHeaderLayoutId("classic"),
22775
22756
  label: "Classic",
22776
22757
  description: "Logo and navigation in one practical horizontal row.",
22777
- structure: "inline-classic",
22778
22758
  variant: "classic",
22779
22759
  defaultPositioning: "sticky",
22780
22760
  shrinkOnScroll: false
@@ -22783,7 +22763,6 @@ var init_headerLooks = __esmMin((() => {
22783
22763
  id: asHeaderLayoutId("centered"),
22784
22764
  label: "Centered",
22785
22765
  description: "Logo centered above a balanced navigation row.",
22786
- structure: "centered-stack",
22787
22766
  variant: "centered",
22788
22767
  defaultPositioning: "static",
22789
22768
  shrinkOnScroll: false,
@@ -22799,7 +22778,6 @@ var init_headerLooks = __esmMin((() => {
22799
22778
  id: asHeaderLayoutId("floating"),
22800
22779
  label: "Floating",
22801
22780
  description: "Detached header chrome that sits over the opening section.",
22802
- structure: "floating-shell",
22803
22781
  variant: "floating",
22804
22782
  defaultPositioning: "sticky",
22805
22783
  shrinkOnScroll: true,
@@ -22958,10 +22936,13 @@ var init_headerLooks = __esmMin((() => {
22958
22936
  label: "Clear Split",
22959
22937
  description: "Floating logo with transparent navigation and no shared shell.",
22960
22938
  supportedLayoutIds: supportedLayouts(["floating"]),
22961
- navInteraction: "color-change",
22939
+ navInteraction: "pill-background",
22962
22940
  surface: "floating",
22963
- defaultDepth: "none",
22941
+ defaultDepth: "line",
22964
22942
  navTypography: "plain",
22943
+ openingForegroundTarget: "all",
22944
+ scrollTreatment: "contrast-glass",
22945
+ interactionPalette: clearSplitInteractionPalette,
22965
22946
  moods: ["editorial", "calm"]
22966
22947
  },
22967
22948
  {
@@ -22984,6 +22965,7 @@ var init_headerLooks = __esmMin((() => {
22984
22965
  surface: "floating",
22985
22966
  defaultDepth: "shadow",
22986
22967
  navTypography: "quiet-caps",
22968
+ openingForegroundTarget: "brand-only",
22987
22969
  moods: ["expressive"]
22988
22970
  },
22989
22971
  {
@@ -22995,6 +22977,7 @@ var init_headerLooks = __esmMin((() => {
22995
22977
  surface: "floating",
22996
22978
  defaultDepth: "shadow",
22997
22979
  navTypography: "heading",
22980
+ openingForegroundTarget: "brand-only",
22998
22981
  moods: ["calm", "editorial"]
22999
22982
  }
23000
22983
  ]);
@@ -23150,13 +23133,6 @@ var init_headerLooks = __esmMin((() => {
23150
23133
  {
23151
23134
  id: asHeaderLookId("clean-base"),
23152
23135
  label: "Clean base",
23153
- visualTreatment: "solid-neutral",
23154
- layoutBehavior: "sticky",
23155
- configuration: {
23156
- structure: "inline-classic",
23157
- treatment: "solid-neutral",
23158
- behavior: "sticky"
23159
- },
23160
23136
  openingRequirement: "none",
23161
23137
  logoAccommodations: inlineClassicLogoAccommodations,
23162
23138
  compile: cleanBaseHeader
@@ -23164,13 +23140,6 @@ var init_headerLooks = __esmMin((() => {
23164
23140
  {
23165
23141
  id: asHeaderLookId("classic-centered-nav"),
23166
23142
  label: "Centered nav",
23167
- visualTreatment: "solid-neutral",
23168
- layoutBehavior: "sticky",
23169
- configuration: {
23170
- structure: "inline-classic",
23171
- treatment: "solid-neutral",
23172
- behavior: "sticky"
23173
- },
23174
23143
  openingRequirement: "none",
23175
23144
  maxRecommendedNavItems: 6,
23176
23145
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -23179,13 +23148,6 @@ var init_headerLooks = __esmMin((() => {
23179
23148
  {
23180
23149
  id: asHeaderLookId("brand-solid"),
23181
23150
  label: "Brand solid",
23182
- visualTreatment: "solid-brand",
23183
- layoutBehavior: "sticky-shrink",
23184
- configuration: {
23185
- structure: "inline-classic",
23186
- treatment: "solid-brand",
23187
- behavior: "sticky-shrink"
23188
- },
23189
23151
  openingRequirement: "none",
23190
23152
  logoAccommodations: inlineClassicLogoAccommodations,
23191
23153
  compile: solidBrandHeader
@@ -23193,13 +23155,6 @@ var init_headerLooks = __esmMin((() => {
23193
23155
  {
23194
23156
  id: asHeaderLookId("serif-line"),
23195
23157
  label: "Serif line",
23196
- visualTreatment: "light-serif",
23197
- layoutBehavior: "sticky",
23198
- configuration: {
23199
- structure: "centered-stack",
23200
- treatment: "light-serif",
23201
- behavior: "sticky"
23202
- },
23203
23158
  openingRequirement: "none",
23204
23159
  maxRecommendedNavItems: 6,
23205
23160
  logoAccommodations: centeredLogoAccommodations,
@@ -23208,13 +23163,6 @@ var init_headerLooks = __esmMin((() => {
23208
23163
  {
23209
23164
  id: asHeaderLookId("centered-calm"),
23210
23165
  label: "Centered calm",
23211
- visualTreatment: "light-serif",
23212
- layoutBehavior: "normal-flow",
23213
- configuration: {
23214
- structure: "centered-stack",
23215
- treatment: "light-serif",
23216
- behavior: "normal-flow"
23217
- },
23218
23166
  openingRequirement: "none",
23219
23167
  maxRecommendedNavItems: 5,
23220
23168
  logoAccommodations: centeredLogoAccommodations,
@@ -23223,13 +23171,6 @@ var init_headerLooks = __esmMin((() => {
23223
23171
  {
23224
23172
  id: asHeaderLookId("practical-utility"),
23225
23173
  label: "Practical utility",
23226
- visualTreatment: "solid-neutral",
23227
- layoutBehavior: "sticky-shrink",
23228
- configuration: {
23229
- structure: "inline-classic",
23230
- treatment: "solid-neutral",
23231
- behavior: "sticky-shrink"
23232
- },
23233
23174
  openingRequirement: "none",
23234
23175
  requiresProminentCta: true,
23235
23176
  logoAccommodations: inlineClassicLogoAccommodations,
@@ -23238,13 +23179,6 @@ var init_headerLooks = __esmMin((() => {
23238
23179
  {
23239
23180
  id: asHeaderLookId("minimal-transparent"),
23240
23181
  label: "Minimal transparent",
23241
- visualTreatment: "minimal-transparent",
23242
- layoutBehavior: "normal-flow",
23243
- configuration: {
23244
- structure: "inline-classic",
23245
- treatment: "minimal-transparent",
23246
- behavior: "normal-flow"
23247
- },
23248
23182
  openingRequirement: "reserved-space-ok",
23249
23183
  logoAccommodations: inlineClassicLogoAccommodations,
23250
23184
  compile: minimalTransparentHeader
@@ -23252,13 +23186,6 @@ var init_headerLooks = __esmMin((() => {
23252
23186
  {
23253
23187
  id: asHeaderLookId("transparent-overlay"),
23254
23188
  label: "Transparent overlay",
23255
- visualTreatment: "transparent-overlay",
23256
- layoutBehavior: "fixed-overlay",
23257
- configuration: {
23258
- structure: "inline-classic",
23259
- treatment: "transparent-overlay",
23260
- behavior: "fixed-overlay"
23261
- },
23262
23189
  openingRequirement: "requires-image-hero-with-contrast-overlay",
23263
23190
  maxRecommendedNavItems: 5,
23264
23191
  logoAccommodations: overlayLogoAccommodations,
@@ -23267,20 +23194,12 @@ var init_headerLooks = __esmMin((() => {
23267
23194
  {
23268
23195
  id: asHeaderLookId("floating-glass"),
23269
23196
  label: "Floating glass",
23270
- visualTreatment: "floating-glass",
23271
- layoutBehavior: "fixed-floating",
23272
- configuration: {
23273
- structure: "floating-shell",
23274
- treatment: "floating-glass",
23275
- behavior: "fixed-floating"
23276
- },
23277
23197
  openingRequirement: "requires-image-hero-with-contrast-overlay",
23278
23198
  maxRecommendedNavItems: 5,
23279
23199
  logoAccommodations: overlayLogoAccommodations,
23280
23200
  compile: floatingGlassHeader
23281
23201
  }
23282
23202
  ]);
23283
- new Set(headerLookCatalog.map((look) => headerConfigurationKey(look.configuration)));
23284
23203
  new Map(headerLookCatalog.map((look) => [look.id, look]));
23285
23204
  }));
23286
23205
  var init_compilationPlan = __esmMin((() => {
@@ -24788,7 +24707,6 @@ var init_runtimeCompiler = __esmMin((() => {
24788
24707
  init_modern_minimal();
24789
24708
  init_expandPalette();
24790
24709
  init_styles();
24791
- init_colors();
24792
24710
  init_designState();
24793
24711
  init_types$9();
24794
24712
  init_accessibleSurfaces();
@@ -26651,7 +26569,7 @@ var init_siteStyleThemeCompiler = __esmMin((() => {
26651
26569
  init_curatedSiteStyles();
26652
26570
  init_runtimeCompiler();
26653
26571
  init_curated();
26654
- init_resolveSelection();
26572
+ init_concretePalette();
26655
26573
  }));
26656
26574
  var init_previewCustomization = __esmMin((() => {
26657
26575
  init_types$9();
@@ -26661,7 +26579,7 @@ var init_previewCompiler = __esmMin((() => {
26661
26579
  init_onColor();
26662
26580
  init_tokens();
26663
26581
  init_curated();
26664
- init_resolveSelection();
26582
+ init_concretePalette();
26665
26583
  init_curatedSiteStyles();
26666
26584
  init_resolver();
26667
26585
  init_types$9();
@@ -26760,6 +26678,7 @@ var init_records = __esmMin((() => {}));
26760
26678
  var init_headerOpeningSection = __esmMin((() => {
26761
26679
  init_headerLooks();
26762
26680
  init_records();
26681
+ init_tokens();
26763
26682
  }));
26764
26683
  var init_generatedDesignPipeline = __esmMin((() => {
26765
26684
  init_compositionBudget();
@@ -27055,8 +26974,11 @@ var init_site_styles = __esmMin((() => {
27055
26974
  init_generatedSchemas();
27056
26975
  init_generatedDesignPipeline();
27057
26976
  init_headerLooks();
26977
+ init_headerInteractionPalette();
26978
+ init_headerOpeningForeground();
27058
26979
  init_headerOpeningSection();
27059
26980
  init_lookResolution();
26981
+ init_lookOptionGroups();
27060
26982
  init_logoBranding();
27061
26983
  init_pageDesignAuthority();
27062
26984
  init_pageDesignEditorErrors();
@@ -28077,33 +27999,6 @@ var init_node = __esmMin((() => {
28077
27999
  init_typeBasedLayout();
28078
28000
  init_validation_constants();
28079
28001
  }));
28080
- //#endregion
28081
- //#region ../theme-core/src/responsive/breakpoints.ts
28082
- function mqUp(px) {
28083
- return `(min-width: ${px}px)`;
28084
- }
28085
- function mqDown(px) {
28086
- return `(max-width: ${px}px)`;
28087
- }
28088
- function mqBetween(minPx, maxPx) {
28089
- return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
28090
- }
28091
- var BREAKPOINT_LG, BREAKPOINT_XL, BREAKPOINT_LG_DOWN;
28092
- var init_breakpoints = __esmMin((() => {
28093
- BREAKPOINT_LG = 1024;
28094
- BREAKPOINT_XL = 1280;
28095
- BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
28096
- mqUp(640);
28097
- mqUp(768);
28098
- mqUp(BREAKPOINT_LG);
28099
- mqUp(BREAKPOINT_XL);
28100
- mqDown(639);
28101
- mqDown(767);
28102
- mqDown(BREAKPOINT_LG_DOWN);
28103
- mqBetween(640, BREAKPOINT_LG_DOWN);
28104
- mqDown(640);
28105
- mqDown(768);
28106
- }));
28107
28002
  function asNonEmptyString(value) {
28108
28003
  if (typeof value !== "string") return null;
28109
28004
  const trimmed = value.trim();
@@ -102821,15 +102716,20 @@ var init_usePaymentVerification = __esmMin((() => {
102821
102716
  //#endregion
102822
102717
  //#region ../blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.ts
102823
102718
  function useEventRegistrationStripeReturn(options) {
102719
+ return useEventRegistrationStripeReturnWithDeps(options, eventRegistrationStripeReturnDeps);
102720
+ }
102721
+ function useEventRegistrationStripeReturnWithDeps(options, deps) {
102824
102722
  const { api, events, occurrenceId, pendingAttendeeId, setErrorMessage, setFormData, setPaymentSelection, setPendingAttendeeId, setRegistrationResult, setSelectedEvent, setSelectedAttendanceMode, setTicketSelections, setStep, setTicketsCount, step } = options;
102825
- const verification = usePaymentVerification(useMemo(() => step === "verifying-payment" && pendingAttendeeId ? { transactionId: pendingAttendeeId } : null, [step, pendingAttendeeId]));
102723
+ const verificationConfig = useMemo(() => step === "verifying-payment" && pendingAttendeeId ? { transactionId: pendingAttendeeId } : null, [step, pendingAttendeeId]);
102724
+ const verification = deps.usePaymentVerification(verificationConfig);
102826
102725
  useEffect(() => {
102827
- cleanupStaleRegistrations();
102828
- const registrationStatus = consumeSearchParam("registration");
102829
- if (!registrationStatus) return;
102726
+ deps.cleanupStaleRegistrations();
102727
+ const registrationStatus = deps.consumeSearchParam("registration");
102728
+ if (registrationStatus !== "cancelled" && registrationStatus !== "success") return;
102729
+ deps.scrollToBlock(EVENT_REGISTRATION_ANCHOR_ID);
102830
102730
  const siteId = api.config.siteId;
102831
102731
  if (!siteId) return;
102832
- const pending = getPendingRegistration(siteId, occurrenceId || void 0);
102732
+ const pending = deps.getPendingRegistration(siteId, occurrenceId || void 0);
102833
102733
  if (!pending) return;
102834
102734
  setFormData(pending.formData);
102835
102735
  setTicketSelections(pending.ticketSelections);
@@ -102849,7 +102749,7 @@ function useEventRegistrationStripeReturn(options) {
102849
102749
  useEffect(() => {
102850
102750
  if (verification.status === "completed") {
102851
102751
  const siteId = api.config.siteId;
102852
- if (siteId && occurrenceId) clearPendingRegistration(siteId, occurrenceId);
102752
+ if (siteId && occurrenceId) deps.clearPendingRegistration(siteId, occurrenceId);
102853
102753
  setRegistrationResult({ status: "confirmed" });
102854
102754
  setStep("success");
102855
102755
  } else if (verification.status === "failed") {
@@ -102869,11 +102769,21 @@ function useEventRegistrationStripeReturn(options) {
102869
102769
  ]);
102870
102770
  return verification;
102871
102771
  }
102772
+ var eventRegistrationStripeReturnDeps;
102872
102773
  var init_useEventRegistrationStripeReturn = __esmMin((() => {
102873
102774
  init_usePaymentVerification();
102874
102775
  init_shared();
102776
+ init_constants();
102875
102777
  init_sessionStorage();
102876
102778
  init_ticketSelectionLines();
102779
+ eventRegistrationStripeReturnDeps = {
102780
+ usePaymentVerification,
102781
+ consumeSearchParam,
102782
+ scrollToBlock,
102783
+ cleanupStaleRegistrations,
102784
+ clearPendingRegistration,
102785
+ getPendingRegistration
102786
+ };
102877
102787
  }));
102878
102788
  //#endregion
102879
102789
  //#region ../blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.ts
@@ -102965,13 +102875,7 @@ function useEventRegistrationSubmitWithDeps(options, deps) {
102965
102875
  if (!result.alreadyRegistered && result.status === "confirmed" && result.pendingPayment && (method === "stripe" || method === "pass_bundle" || method === "membership_bundle")) {
102966
102876
  options.setPendingAttendeeId(result.attendeeId);
102967
102877
  options.setStep("redirecting");
102968
- const currentUrl = new URL(window.location.href);
102969
- const successParams = new URLSearchParams(currentUrl.search);
102970
- successParams.set("registration", "success");
102971
- const successUrl = `${currentUrl.origin}${currentUrl.pathname}?${successParams.toString()}${currentUrl.hash}`;
102972
- const cancelParams = new URLSearchParams(currentUrl.search);
102973
- cancelParams.set("registration", "cancelled");
102974
- const cancelUrl = `${currentUrl.origin}${currentUrl.pathname}?${cancelParams.toString()}${currentUrl.hash}`;
102878
+ const { successUrl, cancelUrl } = buildCheckoutReturnUrls("registration", EVENT_REGISTRATION_ANCHOR_ID);
102975
102879
  const checkoutType = method === "pass_bundle" ? "pass_bundle" : method === "membership_bundle" ? "membership_bundle" : "event";
102976
102880
  const checkoutResult = await options.api.createEventCheckout({
102977
102881
  attendeeId: result.attendeeId,
@@ -103036,6 +102940,8 @@ function useEventRegistrationSubmitWithDeps(options, deps) {
103036
102940
  }
103037
102941
  var eventRegistrationSubmitDeps;
103038
102942
  var init_useEventRegistrationSubmit = __esmMin((() => {
102943
+ init_shared();
102944
+ init_constants();
103039
102945
  init_sessionStorage();
103040
102946
  init_ticketSelectionLines();
103041
102947
  eventRegistrationSubmitDeps = { savePendingRegistration };
@@ -114555,6 +114461,44 @@ function useImageResolveContextOptional() {
114555
114461
  return useContext(ImageResolveContext);
114556
114462
  }
114557
114463
  //#endregion
114464
+ //#region ../blocks/src/system/runtime/nodes/mergeResolveImageUrlContexts.ts
114465
+ init_src$2();
114466
+ function normalizedIdentifier(asset) {
114467
+ return (typeof asset.identifier === "string" ? asset.identifier.trim() : "") || void 0;
114468
+ }
114469
+ function indexAssets(index) {
114470
+ if (!index) return [];
114471
+ const assetsById = /* @__PURE__ */ new Map();
114472
+ for (const asset of [...index.byId.values(), ...index.byIdentifier.values()]) assetsById.set(asset.id, asset);
114473
+ return [...assetsById.values()];
114474
+ }
114475
+ function mergeAssetIndexes(baseline, live) {
114476
+ if (!baseline) return live;
114477
+ if (!live) return baseline;
114478
+ let merged = [...indexAssets(baseline)];
114479
+ for (const liveAsset of indexAssets(live)) {
114480
+ const liveIdentifier = normalizedIdentifier(liveAsset);
114481
+ merged = merged.filter((asset) => asset.id !== liveAsset.id && (liveIdentifier === void 0 || normalizedIdentifier(asset) !== liveIdentifier));
114482
+ merged.push(liveAsset);
114483
+ }
114484
+ return buildRenderableMediaAssetIndex(merged);
114485
+ }
114486
+ /**
114487
+ * Combines a render snapshot with client registrations without changing the
114488
+ * persisted media value. Live registrations are authoritative for both asset
114489
+ * IDs and identifiers. Contexts for different known sites never share indexes.
114490
+ */
114491
+ function mergeResolveImageUrlContexts(baseline, live) {
114492
+ if (!baseline) return live ?? void 0;
114493
+ if (!live) return baseline;
114494
+ const sitesConflict = baseline.siteId !== void 0 && live.siteId !== void 0 && baseline.siteId !== live.siteId;
114495
+ return {
114496
+ supabaseUrl: live.supabaseUrl ?? baseline.supabaseUrl,
114497
+ siteId: live.siteId ?? baseline.siteId,
114498
+ mediaAssetIndex: sitesConflict ? live.mediaAssetIndex : mergeAssetIndexes(baseline.mediaAssetIndex, live.mediaAssetIndex)
114499
+ };
114500
+ }
114501
+ //#endregion
114558
114502
  //#region ../blocks/src/system/runtime/nodes/media.client.tsx
114559
114503
  /**
114560
114504
  * Client MediaNode component with error handling.
@@ -114578,11 +114522,16 @@ const FALLBACK_IMAGE_DATA_URL = "data:image/svg+xml;charset=utf-8," + encodeURIC
114578
114522
  </g>
114579
114523
  </svg>`);
114580
114524
  const MediaNode = ({ value, className, style, videoPlayback = "inline", loading = "lazy", fetchPriority, size = ImagePresets.full, fieldPath, blockKind, blockContent, imageResolveContext: explicitImageResolveContext }) => {
114581
- const contextImageResolveContext = useImageResolveContextOptional();
114582
- const imageResolveContext = explicitImageResolveContext ?? contextImageResolveContext;
114525
+ const imageResolveContext = mergeResolveImageUrlContexts(explicitImageResolveContext, useImageResolveContextOptional());
114583
114526
  if (!value) return null;
114584
- if (value.type === "video") return renderVideo(value, className, style, imageResolveContext, { playback: videoPlayback });
114585
- if (value.type === "audio") return renderAudio(value, className, style, imageResolveContext);
114527
+ switch (value.type) {
114528
+ case "video": return renderVideo(value, className, style, imageResolveContext, { playback: videoPlayback });
114529
+ case "audio": return renderAudio(value, className, style, imageResolveContext);
114530
+ case "image":
114531
+ case "archive":
114532
+ case "document":
114533
+ case "spreadsheet": break;
114534
+ }
114586
114535
  const { imageUrl, responsive, transformAspectRatio, resolvedTransform, isProxy } = resolveMediaNodeResponsiveImage(value, size, style, {
114587
114536
  fieldPath,
114588
114537
  blockKind,
@@ -115129,12 +115078,18 @@ init_colorConversion();
115129
115078
  init_generateBaseCSS();
115130
115079
  init_generateEffectsCSS();
115131
115080
  //#endregion
115081
+ //#region ../theme-core/src/header/surfaceRules.ts
115082
+ init_shared$5();
115083
+ init_colorStyles();
115084
+ //#endregion
115132
115085
  //#region ../theme-core/src/header/generateHeaderCss.ts
115133
115086
  init_resolver$1();
115134
115087
  init_siteChromeNavPreferences();
115135
115088
  init_shared$5();
115136
115089
  init_breakpoints();
115137
115090
  init_navDropdownSizing();
115091
+ init_scrollTreatment();
115092
+ init_paintTargets();
115138
115093
  //#endregion
115139
115094
  //#region ../theme-core/src/footer/generateFooterCss.ts
115140
115095
  init_resolver$1();