@riverbankcms/sdk 0.126.0 → 0.127.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/dist/{PreviewEditorSidebar-DcYJxTgc.mjs → PreviewEditorSidebar-BXtfF7tp.mjs} +58 -38
  2. package/dist/{PreviewEditorUI-Ctt1yTJr.mjs → PreviewEditorUI-Dou73Q0K.mjs} +2 -2
  3. package/dist/{SdkPreviewModeRuntime-CvW1vdQ4.mjs → SdkPreviewModeRuntime-B0HPXr-l.mjs} +119 -41
  4. package/dist/{SiteChromeCustomizeContext-C87qlKWw.mjs → SiteChromeCustomizeContext-DZiDBAYu.mjs} +9961 -9583
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +198 -0
  6. package/dist/_dts/api/src/contentRuntime.d.ts +1 -5
  7. package/dist/_dts/block-form/src/backend/store-backend.d.ts +2 -1
  8. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +1 -0
  9. package/dist/_dts/blocks/src/index.d.ts +3 -2
  10. package/dist/_dts/blocks/src/lib/media.d.ts +267 -0
  11. package/dist/_dts/blocks/src/system/constants/buttonRoles.d.ts +0 -13
  12. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +4 -4
  13. package/dist/_dts/blocks/src/system/runtime/nodes/mergeResolveImageUrlContexts.d.ts +7 -0
  14. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +2 -2
  15. package/dist/_dts/content-editor/src/ui/blockValidationManifestRegistry.d.ts +17 -0
  16. package/dist/_dts/content-editor/src/ui/blockValidationView.d.ts +1 -1
  17. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +4 -0
  18. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +143 -155
  19. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +4 -0
  20. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockValidationManifests.d.ts +26 -0
  21. package/dist/_dts/editor-blocks/src/widgets/rich-text/imageInsert.d.ts +3 -3
  22. package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -2
  23. package/dist/_dts/media-editor/src/context.d.ts +1 -2
  24. package/dist/_dts/media-editor/src/index.d.ts +3 -1
  25. package/dist/_dts/media-editor/src/mediaSelection.d.ts +32 -0
  26. package/dist/_dts/media-editor/src/types.d.ts +3 -1
  27. package/dist/_dts/media-editor/src/useMediaSelection.d.ts +26 -0
  28. package/dist/_dts/preview-next/src/client/index.d.ts +2 -0
  29. package/dist/_dts/preview-next/src/client/preview/HeaderMenuControls.d.ts +12 -0
  30. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +12 -1
  31. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +7 -1
  32. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -49
  33. package/dist/_dts/preview-next/src/client/preview/headerInteractionPaletteSurfaceState.d.ts +8 -0
  34. package/dist/_dts/preview-next/src/client/preview/previewThemeRoles.d.ts +15 -0
  35. package/dist/_dts/preview-next/src/client/preview/siteChromeCustomizeTypes.d.ts +54 -0
  36. package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +13 -3
  37. package/dist/_dts/preview-next/src/client/preview/siteChromeNavQuickControlHistory.d.ts +3 -0
  38. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +6 -3
  39. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -2
  40. package/dist/_dts/sdk/src/version.d.ts +1 -1
  41. package/dist/_dts/theme-core/src/buttons/effects/presets/background.d.ts +1 -1
  42. package/dist/_dts/theme-core/src/buttons/styles/registry.d.ts +0 -18
  43. package/dist/_dts/theme-core/src/buttons/types.d.ts +1 -3
  44. package/dist/_dts/theme-core/src/header/containerSchema.d.ts +20 -0
  45. package/dist/_dts/theme-core/src/header/generateHeaderCss.d.ts +1 -1
  46. package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +14 -0
  47. package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +3 -0
  48. package/dist/_dts/theme-core/src/header/paintTargets.d.ts +25 -0
  49. package/dist/_dts/theme-core/src/header/scrollTreatment.d.ts +11 -0
  50. package/dist/_dts/theme-core/src/header/surfaceRules.d.ts +9 -0
  51. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +15 -0
  52. package/dist/_dts/theme-core/src/palette/colors.d.ts +1 -1
  53. package/dist/_dts/theme-core/src/schema.d.ts +67 -19
  54. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +3 -51
  55. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +4 -11
  56. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +3 -51
  57. package/dist/_dts/theme-core/src/site-styles/headerInteractionPalette.d.ts +32 -0
  58. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +19 -106
  59. package/dist/_dts/theme-core/src/site-styles/headerOpeningForeground.d.ts +22 -0
  60. package/dist/_dts/theme-core/src/site-styles/headerOpeningSection.d.ts +2 -0
  61. package/dist/_dts/theme-core/src/site-styles/headerStyleParts.d.ts +4 -0
  62. package/dist/_dts/theme-core/src/site-styles/index.d.ts +3 -0
  63. package/dist/_dts/theme-core/src/site-styles/lookOptionGroups.d.ts +24 -0
  64. package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +1 -2
  65. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +4 -22
  66. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorOptions.d.ts +21 -0
  67. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
  68. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +4 -1
  69. package/dist/cli/index.mjs +973 -1081
  70. package/dist/client/{DiscountCodeDisclosure-DS0AuFWW.mjs → DiscountCodeDisclosure-BDFRp8Y7.mjs} +1 -1
  71. package/dist/client/{EventCombined.client-DtMxLr7q.mjs → EventCombined.client-DJgF1_lf.mjs} +2 -2
  72. package/dist/client/{EventListing.client-BdLSRNg1.mjs → EventListing.client-CnWGNjOr.mjs} +2 -2
  73. package/dist/client/{LeafletStaticMap-BrpC6vsT.mjs → LeafletStaticMap-BISs9Bl7.mjs} +1 -1
  74. package/dist/client/{MagicLinkForm-Bt3IuLMy.mjs → MagicLinkForm-b5E_HoG9.mjs} +1 -1
  75. package/dist/client/{StepIndicator-CBYPFVoy.mjs → StepIndicator-D8gVYkK-.mjs} +2 -2
  76. package/dist/client/{accordion-BqqwPJWM.mjs → accordion-DFDajgDz.mjs} +1 -1
  77. package/dist/client/{bookingForm-SneP3yxC.mjs → bookingForm-Bdqj9-52.mjs} +5 -5
  78. package/dist/client/bookings.mjs +126 -23
  79. package/dist/client/{carousel-BTIR9L3I.mjs → carousel-Cvqf-kN8.mjs} +1 -1
  80. package/dist/client/{cart-bqiqd8SX.mjs → cart-CuH2TJXP.mjs} +3 -3
  81. package/dist/client/{checkout-WbTFV5v4.mjs → checkout-CMNPpejZ.mjs} +3 -3
  82. package/dist/client/client.mjs +1227 -1209
  83. package/dist/client/{courseRegistration-BcemLAdN.mjs → courseRegistration-DTEYWL6Z.mjs} +6 -6
  84. package/dist/client/{eventCalendar-CsxIw0V_.mjs → eventCalendar-BW-XoxZ0.mjs} +4 -4
  85. package/dist/client/{eventCombined-B6XMoHfa.mjs → eventCombined-Bpn7s0y9.mjs} +2 -2
  86. package/dist/client/{eventDetails-BJaoPPfo.mjs → eventDetails-D2uUSTMH.mjs} +3 -3
  87. package/dist/client/{eventListing-DgwdYHRT.mjs → eventListing-CVr1c094.mjs} +2 -2
  88. package/dist/client/{eventRegistration-C0O3folu.mjs → eventRegistration-Dv4AvkMw.mjs} +6 -6
  89. package/dist/client/{form-Bk9txGFt.mjs → form-DxdKf9fs.mjs} +1 -1
  90. package/dist/client/{headerSection-yIBt0yTv.mjs → headerSection-BaXI5Sro.mjs} +2 -2
  91. package/dist/client/hooks.mjs +801 -874
  92. package/dist/client/{locationMap-C-3KIpv-.mjs → locationMap-BEtW2fKz.mjs} +2 -2
  93. package/dist/client/{newsletterForm-CzB8g8h2.mjs → newsletterForm-BKKs0S4R.mjs} +1 -1
  94. package/dist/client/{pricing-C1QeDes_.mjs → pricing-ClkqcElA.mjs} +1 -1
  95. package/dist/client/{productDetail-w7SBp5uc.mjs → productDetail-H-ru8dyy.mjs} +3 -3
  96. package/dist/client/{productList-D0tGKHGf.mjs → productList-Buyi5c0C.mjs} +3 -3
  97. package/dist/client/{propsDecoder-Bcin2DB3.mjs → propsDecoder-BF7i6Ijg.mjs} +127 -55
  98. package/dist/client/rendering/client.mjs +928 -916
  99. package/dist/client/rendering/islands.mjs +18 -18
  100. package/dist/client/rendering.mjs +1130 -1114
  101. package/dist/client/{scrollToBlock-h-o_STf_.mjs → scrollToBlock-D_7t8yWb.mjs} +1 -1
  102. package/dist/client/{shop-BGzmL8O_.mjs → shop-CF7SZQNX.mjs} +5 -5
  103. package/dist/client/{shop-commerce-lX8QxjX-.mjs → shop-commerce-DA7_Rq5p.mjs} +4 -4
  104. package/dist/client/{shop-commerce-store-CEurARtu.mjs → shop-commerce-store-BmLqW7Gh.mjs} +1 -1
  105. package/dist/client/{shopShared-DXxH8xxw.mjs → shopShared-WL-E1znM.mjs} +2 -2
  106. package/dist/client/{useEventFilters-B591g9vd.mjs → useEventFilters-rc8VLeLV.mjs} +2 -2
  107. package/dist/client/{usePolling-BvnChV4m.mjs → usePolling-1ncrfd4S.mjs} +2 -2
  108. package/dist/preview-next/client/runtime.mjs +3 -3
  109. package/dist/{sdk-runtime-M__i3Jce.mjs → sdk-runtime-BnrCCFJq.mjs} +1 -1
  110. package/dist/{separator-VSlnI9bc.mjs → separator-CFvBx2yl.mjs} +1 -1
  111. package/dist/server/components.mjs +1302 -1350
  112. package/dist/server/config-validation.mjs +801 -874
  113. package/dist/server/config.mjs +801 -874
  114. package/dist/server/data.mjs +801 -874
  115. package/dist/server/index.mjs +1 -1
  116. package/dist/server/next.mjs +1303 -1351
  117. package/dist/server/page-converter.mjs +801 -874
  118. package/dist/server/prebuild.mjs +1 -1
  119. package/dist/server/rendering/server.mjs +1296 -1344
  120. package/dist/server/rendering.mjs +1302 -1350
  121. package/dist/server/routing.mjs +869 -895
  122. package/dist/server/server.mjs +802 -875
  123. package/dist/server/theme-bridge.mjs +151 -118
  124. package/dist/server/theme.mjs +111 -23
  125. package/package.json +1 -1
  126. package/dist/_dts/editor-blocks/src/widgets/rich-text/ensureRichTextImageAssetIdentifier.d.ts +0 -8
@@ -1,7 +1,7 @@
1
1
  import { i as textColorStyle } from "./colorStyles-BWpj_h4C.mjs";
2
- import { X as themeButtonClassName, t as defineIslandPropsDecoder } from "./propsDecoder-Bcin2DB3.mjs";
2
+ import { X as themeButtonClassName, t as defineIslandPropsDecoder } from "./propsDecoder-BF7i6Ijg.mjs";
3
3
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
4
- import { t as LeafletStaticMap } from "./LeafletStaticMap-BrpC6vsT.mjs";
4
+ import { t as LeafletStaticMap } from "./LeafletStaticMap-BISs9Bl7.mjs";
5
5
  import "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  //#region ../core/src/location.ts
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { t as clsx } from "./clsx-DgIEfj3H.mjs";
3
- import { X as themeButtonClassName, t as defineIslandPropsDecoder, yt as assertNever } from "./propsDecoder-Bcin2DB3.mjs";
3
+ import { X as themeButtonClassName, t as defineIslandPropsDecoder, yt as assertNever } from "./propsDecoder-BF7i6Ijg.mjs";
4
4
  import { n as useBlockApi, t as BlockApiProvider } from "./context-CJz1Vlsz.mjs";
5
5
  import { n as isSpamProtectionEnabled, r as AltchaWidget, t as getChallengeUrl } from "./src-B833rYRr.mjs";
6
6
  import { t as FeedbackMessage } from "./FeedbackMessage-ByMrs3cr.mjs";
@@ -1,4 +1,4 @@
1
- import { Rt as formatBookingPriceDisplay } from "./propsDecoder-Bcin2DB3.mjs";
1
+ import { Rt as formatBookingPriceDisplay } from "./propsDecoder-BF7i6Ijg.mjs";
2
2
  //#region ../core/src/planner.ts
3
3
  /** Default clock for production callers that do not inject time explicitly. */
4
4
  const systemPlanningClock = { now: () => Date.now() };
@@ -1,6 +1,6 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-Bcin2DB3.mjs";
2
- import { r as ProductDetailController } from "./shop-commerce-lX8QxjX-.mjs";
3
- import { t as mountShopBlockIsland } from "./shopShared-DXxH8xxw.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-BF7i6Ijg.mjs";
2
+ import { r as ProductDetailController } from "./shop-commerce-DA7_Rq5p.mjs";
3
+ import { t as mountShopBlockIsland } from "./shopShared-WL-E1znM.mjs";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region ../blocks/src/system/runtime/nodes/product-detail.client.tsx
@@ -1,6 +1,6 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-Bcin2DB3.mjs";
2
- import { i as ProductListController } from "./shop-commerce-lX8QxjX-.mjs";
3
- import { t as mountShopBlockIsland } from "./shopShared-DXxH8xxw.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-BF7i6Ijg.mjs";
2
+ import { i as ProductListController } from "./shop-commerce-DA7_Rq5p.mjs";
3
+ import { t as mountShopBlockIsland } from "./shopShared-WL-E1znM.mjs";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region ../blocks/src/system/runtime/nodes/product-list.client.tsx
@@ -1576,8 +1576,6 @@ const VARIANT_ROLES = [
1576
1576
  "secondary",
1577
1577
  "outline",
1578
1578
  "ghost",
1579
- "link",
1580
- "tertiary",
1581
1579
  "accent"
1582
1580
  ];
1583
1581
  /**
@@ -1586,7 +1584,7 @@ const VARIANT_ROLES = [
1586
1584
  * IDs become class selectors, so keep the contract deliberately narrower than
1587
1585
  * an arbitrary string and shared with every authoring/runtime boundary.
1588
1586
  */
1589
- const buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only");
1587
+ const buttonVariantIdSchema = z$1.string().min(1).max(50).regex(/^[a-z0-9-]+$/, "Button variant IDs may contain lowercase letters, numbers, and hyphens only").refine((value) => value !== "link" && value !== "tertiary", { message: "Retired button role IDs are not valid variant IDs" });
1590
1588
  function parseOpaqueButtonColourToken(value) {
1591
1589
  const token = parseThemeColorToken(value);
1592
1590
  if (token === null) return null;
@@ -2101,7 +2099,7 @@ function canonicalPaletteHashInput(colors, mode) {
2101
2099
  return `${mode}|${paletteColorFingerprint(colors)}`;
2102
2100
  }
2103
2101
  /**
2104
- * The shared TypeScript/SQL protocol. Do not reorder roles: the order comes
2102
+ * Stable curated-catalogue identity. Do not reorder roles: the order comes
2105
2103
  * from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
2106
2104
  */
2107
2105
  function paletteValueKey(colors, mode) {
@@ -3203,6 +3201,60 @@ function resolveOnColorForThemeToken(token) {
3203
3201
  if (!shade) return rgbColorValue(`on${normalizedRole.charAt(0).toUpperCase() + normalizedRole.slice(1)}`);
3204
3202
  return shade <= 400 ? "#000000" : "#FFFFFF";
3205
3203
  }
3204
+ const BREAKPOINT_LG = 1024;
3205
+ const BREAKPOINT_XL = 1280;
3206
+ const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
3207
+ function mqUp(px) {
3208
+ return `(min-width: ${px}px)`;
3209
+ }
3210
+ function mqDown(px) {
3211
+ return `(max-width: ${px}px)`;
3212
+ }
3213
+ function mqBetween(minPx, maxPx) {
3214
+ return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
3215
+ }
3216
+ mqUp(640);
3217
+ mqUp(768);
3218
+ mqUp(BREAKPOINT_LG);
3219
+ mqUp(BREAKPOINT_XL);
3220
+ mqDown(639);
3221
+ mqDown(767);
3222
+ mqDown(BREAKPOINT_LG_DOWN);
3223
+ mqBetween(640, BREAKPOINT_LG_DOWN);
3224
+ mqDown(640);
3225
+ mqDown(768);
3226
+ //#endregion
3227
+ //#region ../theme-core/src/header/scrollTreatment.ts
3228
+ const headerScrollTreatmentSchema = z$1.discriminatedUnion("kind", [z$1.object({
3229
+ kind: z$1.literal("contrast-glass"),
3230
+ backgroundTone: z$1.enum(["light", "dark"])
3231
+ })]).optional();
3232
+ //#endregion
3233
+ //#region ../theme-core/src/header/containerSchema.ts
3234
+ const headerContainerSchema = z$1.object({
3235
+ rounded: z$1.enum([
3236
+ "none",
3237
+ "sm",
3238
+ "md",
3239
+ "lg",
3240
+ "xl",
3241
+ "2xl"
3242
+ ]).default("xl"),
3243
+ border: z$1.boolean().default(true),
3244
+ shadow: z$1.boolean().default(true),
3245
+ padding: z$1.enum([
3246
+ "sm",
3247
+ "md",
3248
+ "lg"
3249
+ ]).default("md"),
3250
+ tint: z$1.string().nullable().optional(),
3251
+ opacity: z$1.number().min(0).max(1).default(.12)
3252
+ }).optional();
3253
+ const headerInteractionPaletteSchema = z$1.enum([
3254
+ "primary",
3255
+ "secondary",
3256
+ "accent"
3257
+ ]);
3206
3258
  //#endregion
3207
3259
  //#region ../theme-core/src/schema.ts
3208
3260
  const axesSchema = z$1.object({
@@ -3612,25 +3664,6 @@ const navFontWeight = z$1.enum([
3612
3664
  ]);
3613
3665
  const headerMaxWidth = z$1.enum(["container", "full"]);
3614
3666
  const headerBarFrame = z$1.enum(["full-bleed", "inset-shell"]);
3615
- const headerContainerSchema = z$1.object({
3616
- rounded: z$1.enum([
3617
- "none",
3618
- "sm",
3619
- "md",
3620
- "lg",
3621
- "xl",
3622
- "2xl"
3623
- ]).default("xl"),
3624
- border: z$1.boolean().default(true),
3625
- shadow: z$1.boolean().default(true),
3626
- padding: z$1.enum([
3627
- "sm",
3628
- "md",
3629
- "lg"
3630
- ]).default("md"),
3631
- tint: z$1.string().nullable().optional(),
3632
- opacity: z$1.number().min(0).max(1).default(.12)
3633
- }).optional();
3634
3667
  const headerBorderSchema = componentBorderSchema.extend({ position: z$1.enum([
3635
3668
  "bottom",
3636
3669
  "top",
@@ -3757,6 +3790,7 @@ const headerSchema = z$1.object({
3757
3790
  shrinkOnScroll: z$1.boolean(),
3758
3791
  maxWidth: headerMaxWidth,
3759
3792
  barFrame: headerBarFrame.optional(),
3793
+ scrollTreatment: headerScrollTreatmentSchema,
3760
3794
  logoOverride: mediaSchema$1.nullable().optional(),
3761
3795
  background: headerBackgroundSchema.default({
3762
3796
  type: "color",
@@ -3769,6 +3803,7 @@ const headerSchema = z$1.object({
3769
3803
  navFontRole: z$1.enum(["body", "heading"]).optional(),
3770
3804
  navTypography: z$1.enum(["body", "heading"]).optional(),
3771
3805
  navTextSize: navLinkStyleSchema.shape.textSize,
3806
+ interactionPalette: headerInteractionPaletteSchema.optional(),
3772
3807
  navPlacement: z$1.enum(["end", "center"]).optional(),
3773
3808
  container: headerContainerSchema,
3774
3809
  border: headerBorderSchema,
@@ -4099,6 +4134,59 @@ function themeButtonClassName(spec) {
4099
4134
  spec.extraClassName
4100
4135
  ].filter(Boolean).join(" ");
4101
4136
  }
4137
+ shadeBackgroundEffect({
4138
+ id: "darken-background",
4139
+ name: "Darken on Hover",
4140
+ description: "Darkens the background color on hover",
4141
+ label: "Darken Amount (shade step)",
4142
+ shadeDirection: 1
4143
+ });
4144
+ shadeBackgroundEffect({
4145
+ id: "lighten-background",
4146
+ name: "Lighten on Hover",
4147
+ description: "Lightens the background color on hover",
4148
+ label: "Lighten Amount (shade step)",
4149
+ shadeDirection: -1
4150
+ });
4151
+ function shadeBackgroundEffect(config) {
4152
+ return {
4153
+ id: config.id,
4154
+ name: config.name,
4155
+ description: config.description,
4156
+ category: "background",
4157
+ pseudoElement: "none",
4158
+ applicableTo: ["button"],
4159
+ customizableOption: {
4160
+ name: "amount",
4161
+ type: "select",
4162
+ label: config.label,
4163
+ default: 100,
4164
+ options: [
4165
+ 0,
4166
+ 100,
4167
+ 200,
4168
+ 300,
4169
+ 400,
4170
+ 500,
4171
+ 600,
4172
+ 700,
4173
+ 800,
4174
+ 900
4175
+ ]
4176
+ },
4177
+ isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
4178
+ generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
4179
+ if (buttonConfig.background.type !== "solid") return "";
4180
+ const amount = (options.amount || 100) * config.shadeDirection;
4181
+ const baseToken = buttonConfig.background.colorToken ?? "primary-500";
4182
+ return `
4183
+ :where([data-theme-scope="${themeId}"]) .${variantId}:hover {
4184
+ background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
4185
+ }
4186
+ `;
4187
+ }
4188
+ };
4189
+ }
4102
4190
  buttonSizeNameSchema.options;
4103
4191
  //#endregion
4104
4192
  //#region ../theme-core/src/buttons/styles/domain.ts
@@ -5727,15 +5815,6 @@ function presetCategory(recipe) {
5727
5815
  */
5728
5816
  const BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
5729
5817
  const blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
5730
- /**
5731
- * Temporary rollout boundary for persisted content written before issue #1220.
5732
- * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
5733
- * only until the post-deploy role rewrite has been audited in production.
5734
- */
5735
- function canonicalizePersistedBlockButtonRole(value) {
5736
- return value === "link" || value === "tertiary" ? "ghost" : value;
5737
- }
5738
- const persistedBlockButtonRoleSchema = z$1.preprocess((value) => typeof value === "string" ? canonicalizePersistedBlockButtonRole(value) : value, blockButtonRoleSchema);
5739
5818
  const BLOCK_BUTTON_ROLE_LABELS = {
5740
5819
  primary: "Primary",
5741
5820
  secondary: "Secondary",
@@ -5751,7 +5830,7 @@ BLOCK_BUTTON_ROLES.map((value) => ({
5751
5830
  //#region ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
5752
5831
  const previewStageSchema = z$1.enum(["preview", "published"]);
5753
5832
  const registrationButtonVariantSchema = blockButtonRoleSchema;
5754
- const eventButtonVariantSchema = persistedBlockButtonRoleSchema;
5833
+ const eventButtonVariantSchema = blockButtonRoleSchema;
5755
5834
  const eventLayoutSchema = z$1.enum(eventCalendarListLayoutValues);
5756
5835
  const eventCalendarDisplayModeSchema = z$1.enum(eventCalendarDisplayModeValues);
5757
5836
  const eventCalendarDefaultViewSchema = z$1.enum(eventCalendarDefaultViewValues);
@@ -5976,6 +6055,12 @@ const mediaBaseSchema = z.object({
5976
6055
  poster: mediaPosterSchema.optional(),
5977
6056
  transform: transformSchema.optional()
5978
6057
  });
6058
+ /**
6059
+ * Canonical identifier carried by media values that are safe to persist.
6060
+ * Parsing trims boundary input so downstream writers cannot retain whitespace-only
6061
+ * identifiers or independently disagree about normalization.
6062
+ */
6063
+ const mediaIdentifierSchema = z.string().trim().min(1).brand();
5979
6064
  const imageMediaSchema = mediaBaseSchema.extend({ type: z.literal("image") });
5980
6065
  const videoMediaSchema = mediaBaseSchema.extend({ type: z.literal("video") });
5981
6066
  const audioMediaSchema = mediaBaseSchema.extend({ type: z.literal("audio") });
@@ -5990,6 +6075,15 @@ const mediaSchema = z.discriminatedUnion("type", [
5990
6075
  spreadsheetMediaSchema,
5991
6076
  archiveMediaSchema
5992
6077
  ]);
6078
+ const persistableMediaBaseSchema = mediaBaseSchema.extend({ identifier: mediaIdentifierSchema });
6079
+ z.discriminatedUnion("type", [
6080
+ persistableMediaBaseSchema.extend({ type: z.literal("image") }),
6081
+ persistableMediaBaseSchema.extend({ type: z.literal("video") }),
6082
+ persistableMediaBaseSchema.extend({ type: z.literal("audio") }),
6083
+ persistableMediaBaseSchema.extend({ type: z.literal("document") }),
6084
+ persistableMediaBaseSchema.extend({ type: z.literal("spreadsheet") }),
6085
+ persistableMediaBaseSchema.extend({ type: z.literal("archive") })
6086
+ ]);
5993
6087
  //#endregion
5994
6088
  //#region ../blocks/src/lib/typeGuards.ts
5995
6089
  /**
@@ -7870,28 +7964,6 @@ function sectionContainer(children, opts) {
7870
7964
  ...align ? { align } : {}
7871
7965
  }, children);
7872
7966
  }
7873
- const BREAKPOINT_LG = 1024;
7874
- const BREAKPOINT_XL = 1280;
7875
- const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
7876
- function mqUp(px) {
7877
- return `(min-width: ${px}px)`;
7878
- }
7879
- function mqDown(px) {
7880
- return `(max-width: ${px}px)`;
7881
- }
7882
- function mqBetween(minPx, maxPx) {
7883
- return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
7884
- }
7885
- mqUp(640);
7886
- mqUp(768);
7887
- mqUp(BREAKPOINT_LG);
7888
- mqUp(BREAKPOINT_XL);
7889
- mqDown(639);
7890
- mqDown(767);
7891
- mqDown(BREAKPOINT_LG_DOWN);
7892
- mqBetween(640, BREAKPOINT_LG_DOWN);
7893
- mqDown(640);
7894
- mqDown(768);
7895
7967
  //#endregion
7896
7968
  //#region ../blocks/src/system/layout/repeaterGrid.ts
7897
7969
  const DEFAULT_REPEATER_GRID_SPAN_FIELD_ID = "gridSpan";