@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
@@ -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-CIR5DQ1l.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-CSubXWt6.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-CIR5DQ1l.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-CIR5DQ1l.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-CIR5DQ1l.mjs";
2
- import { r as ProductDetailController } from "./shop-commerce-XO-XMFEt.mjs";
3
- import { t as mountShopBlockIsland } from "./shopShared-Bbq39mwr.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-CIR5DQ1l.mjs";
2
- import { i as ProductListController } from "./shop-commerce-XO-XMFEt.mjs";
3
- import { t as mountShopBlockIsland } from "./shopShared-Bbq39mwr.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
@@ -1517,7 +1517,7 @@ const PALETTE_TOKEN_NAMES = [
1517
1517
  "text",
1518
1518
  "border"
1519
1519
  ];
1520
- z$1.enum(PALETTE_TOKEN_NAMES);
1520
+ const paletteTokenNameSchema = z$1.enum(PALETTE_TOKEN_NAMES);
1521
1521
  const themeColorBaseTokenNames = [
1522
1522
  ...PALETTE_TOKEN_NAMES,
1523
1523
  ...blockColorTokenNames,
@@ -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;
@@ -1998,6 +1996,172 @@ const mediaSchema$1 = z.object({
1998
1996
  transform: transformSchema$1.optional()
1999
1997
  });
2000
1998
  //#endregion
1999
+ //#region ../theme-core/src/palette/colors.ts
2000
+ const HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
2001
+ const NORMALIZABLE_HEX_REGEX = /^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i;
2002
+ const THEME_PALETTE_COLOR_ORDER = [
2003
+ "primary",
2004
+ "secondary",
2005
+ "accent",
2006
+ "success",
2007
+ "warning",
2008
+ "destructive",
2009
+ "background",
2010
+ "surface",
2011
+ "surfaceAlt",
2012
+ "muted",
2013
+ "text",
2014
+ "primaryForeground",
2015
+ "border"
2016
+ ];
2017
+ const hexColorSchema = z$1.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
2018
+ const paletteModeSchema = z$1.enum(["light", "dark"]);
2019
+ const PALETTE_VALUE_KEY_PREFIX = "palette-value:v1|";
2020
+ z$1.string().regex(/^[0-9a-f]{64}$/, "Palette hash must be a lowercase SHA-256 value").transform((value) => value);
2021
+ const paletteColorsSchema = z$1.object({
2022
+ primary: hexColorSchema,
2023
+ primaryForeground: hexColorSchema,
2024
+ secondary: hexColorSchema,
2025
+ accent: hexColorSchema,
2026
+ success: hexColorSchema,
2027
+ warning: hexColorSchema,
2028
+ destructive: hexColorSchema,
2029
+ background: hexColorSchema,
2030
+ surface: hexColorSchema,
2031
+ surfaceAlt: hexColorSchema,
2032
+ muted: hexColorSchema,
2033
+ text: hexColorSchema,
2034
+ border: hexColorSchema
2035
+ }).strict().transform((value) => value);
2036
+ function normalizePaletteHex(value) {
2037
+ if (!NORMALIZABLE_HEX_REGEX.test(value)) return null;
2038
+ const normalized = value.toLowerCase();
2039
+ if (normalized.length === 7) return normalized;
2040
+ const triplet = normalized.slice(1);
2041
+ const red = triplet.charAt(0);
2042
+ const green = triplet.charAt(1);
2043
+ const blue = triplet.charAt(2);
2044
+ return `#${red}${red}${green}${green}${blue}${blue}`;
2045
+ }
2046
+ function paletteColorsFromEntries(entries) {
2047
+ const values = {};
2048
+ for (const entry of entries) {
2049
+ const parsedRole = paletteTokenNameSchema.safeParse(entry.name);
2050
+ if (!parsedRole.success) return {
2051
+ ok: false,
2052
+ error: {
2053
+ kind: "unknown-role",
2054
+ role: entry.name
2055
+ }
2056
+ };
2057
+ const role = parsedRole.data;
2058
+ if (values[role] !== void 0) return {
2059
+ ok: false,
2060
+ error: {
2061
+ kind: "duplicate-role",
2062
+ role
2063
+ }
2064
+ };
2065
+ const hex = normalizePaletteHex(entry.hex);
2066
+ if (!hex) return {
2067
+ ok: false,
2068
+ error: {
2069
+ kind: "invalid-color",
2070
+ role,
2071
+ value: entry.hex
2072
+ }
2073
+ };
2074
+ values[role] = hex;
2075
+ }
2076
+ const missing = PALETTE_TOKEN_NAMES.filter((role) => values[role] === void 0);
2077
+ if (missing.length > 0) return {
2078
+ ok: false,
2079
+ error: {
2080
+ kind: "missing-roles",
2081
+ roles: missing
2082
+ }
2083
+ };
2084
+ return {
2085
+ ok: true,
2086
+ colors: paletteColorsSchema.parse(values)
2087
+ };
2088
+ }
2089
+ function paletteColorEntries(colors) {
2090
+ return THEME_PALETTE_COLOR_ORDER.map((name) => ({
2091
+ name,
2092
+ hex: colors[name]
2093
+ }));
2094
+ }
2095
+ function paletteColorFingerprint(colors) {
2096
+ return PALETTE_TOKEN_NAMES.map((name) => `${name}:${colors[name]}`).join("|");
2097
+ }
2098
+ function canonicalPaletteHashInput(colors, mode) {
2099
+ return `${mode}|${paletteColorFingerprint(colors)}`;
2100
+ }
2101
+ /**
2102
+ * Stable curated-catalogue identity. Do not reorder roles: the order comes
2103
+ * from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
2104
+ */
2105
+ function paletteValueKey(colors, mode) {
2106
+ return `${PALETTE_VALUE_KEY_PREFIX}${canonicalPaletteHashInput(colors, mode)}`;
2107
+ }
2108
+ /** Parses only the exact v1 canonical form emitted by paletteValueKey. */
2109
+ function parsePaletteValueKey(value) {
2110
+ if (typeof value !== "string" || !value.startsWith(PALETTE_VALUE_KEY_PREFIX)) return null;
2111
+ const [rawMode, ...rawRoles] = value.slice(17).split("|");
2112
+ const mode = paletteModeSchema.safeParse(rawMode);
2113
+ if (!mode.success || rawRoles.length !== PALETTE_TOKEN_NAMES.length) return null;
2114
+ const colors = paletteColorsFromEntries(rawRoles.map((roleValue) => {
2115
+ const separator = roleValue.indexOf(":");
2116
+ return separator === -1 ? {
2117
+ name: "",
2118
+ hex: ""
2119
+ } : {
2120
+ name: roleValue.slice(0, separator),
2121
+ hex: roleValue.slice(separator + 1)
2122
+ };
2123
+ }));
2124
+ if (!colors.ok || paletteValueKey(colors.colors, mode.data) !== value) return null;
2125
+ return value;
2126
+ }
2127
+ z$1.string().transform((value, ctx) => {
2128
+ const parsed = parsePaletteValueKey(value);
2129
+ if (parsed) return parsed;
2130
+ ctx.addIssue({
2131
+ code: "custom",
2132
+ message: "Invalid canonical palette value key"
2133
+ });
2134
+ return z$1.NEVER;
2135
+ });
2136
+ //#endregion
2137
+ //#region ../theme-core/src/palette/schema.ts
2138
+ const colourHexString = z$1.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
2139
+ const paletteColorSchema = z$1.object({
2140
+ name: z$1.string().min(1),
2141
+ hex: colourHexString
2142
+ });
2143
+ const paletteMetaSchema = z$1.object({ mode: z$1.enum(["light", "dark"]) });
2144
+ const paletteSchema = z$1.object({
2145
+ colors: z$1.array(paletteColorSchema),
2146
+ meta: paletteMetaSchema
2147
+ }).transform((palette, ctx) => {
2148
+ const colors = paletteColorsFromEntries(palette.colors);
2149
+ if (!colors.ok) {
2150
+ ctx.addIssue({
2151
+ code: "custom",
2152
+ message: `Invalid complete palette: ${colors.error.kind}`
2153
+ });
2154
+ return z$1.NEVER;
2155
+ }
2156
+ return {
2157
+ colors: paletteColorEntries(colors.colors).map(({ name, hex }) => ({
2158
+ name: String(name),
2159
+ hex: String(hex)
2160
+ })),
2161
+ meta: palette.meta
2162
+ };
2163
+ });
2164
+ //#endregion
2001
2165
  //#region ../theme-core/src/cards/types.ts
2002
2166
  const cardVariantRoleValues = ["default", "alternative"];
2003
2167
  const boxlessCardVariantValue = "none";
@@ -3037,6 +3201,60 @@ function resolveOnColorForThemeToken(token) {
3037
3201
  if (!shade) return rgbColorValue(`on${normalizedRole.charAt(0).toUpperCase() + normalizedRole.slice(1)}`);
3038
3202
  return shade <= 400 ? "#000000" : "#FFFFFF";
3039
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
+ ]);
3040
3258
  //#endregion
3041
3259
  //#region ../theme-core/src/schema.ts
3042
3260
  const axesSchema = z$1.object({
@@ -3067,16 +3285,6 @@ const axesSchema = z$1.object({
3067
3285
  "expressive"
3068
3286
  ])
3069
3287
  });
3070
- const colourHexString = z$1.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
3071
- const paletteColorSchema = z$1.object({
3072
- name: z$1.string().min(1),
3073
- hex: colourHexString
3074
- });
3075
- const paletteMetaSchema = z$1.object({ mode: z$1.enum(["light", "dark"]) });
3076
- const paletteSchema = z$1.object({
3077
- colors: z$1.array(paletteColorSchema),
3078
- meta: paletteMetaSchema
3079
- });
3080
3288
  const typographyStyleSchema = z$1.object({
3081
3289
  family: z$1.string().min(1),
3082
3290
  weight: z$1.enum([
@@ -3456,25 +3664,6 @@ const navFontWeight = z$1.enum([
3456
3664
  ]);
3457
3665
  const headerMaxWidth = z$1.enum(["container", "full"]);
3458
3666
  const headerBarFrame = z$1.enum(["full-bleed", "inset-shell"]);
3459
- const headerContainerSchema = z$1.object({
3460
- rounded: z$1.enum([
3461
- "none",
3462
- "sm",
3463
- "md",
3464
- "lg",
3465
- "xl",
3466
- "2xl"
3467
- ]).default("xl"),
3468
- border: z$1.boolean().default(true),
3469
- shadow: z$1.boolean().default(true),
3470
- padding: z$1.enum([
3471
- "sm",
3472
- "md",
3473
- "lg"
3474
- ]).default("md"),
3475
- tint: z$1.string().nullable().optional(),
3476
- opacity: z$1.number().min(0).max(1).default(.12)
3477
- }).optional();
3478
3667
  const headerBorderSchema = componentBorderSchema.extend({ position: z$1.enum([
3479
3668
  "bottom",
3480
3669
  "top",
@@ -3601,6 +3790,7 @@ const headerSchema = z$1.object({
3601
3790
  shrinkOnScroll: z$1.boolean(),
3602
3791
  maxWidth: headerMaxWidth,
3603
3792
  barFrame: headerBarFrame.optional(),
3793
+ scrollTreatment: headerScrollTreatmentSchema,
3604
3794
  logoOverride: mediaSchema$1.nullable().optional(),
3605
3795
  background: headerBackgroundSchema.default({
3606
3796
  type: "color",
@@ -3613,6 +3803,7 @@ const headerSchema = z$1.object({
3613
3803
  navFontRole: z$1.enum(["body", "heading"]).optional(),
3614
3804
  navTypography: z$1.enum(["body", "heading"]).optional(),
3615
3805
  navTextSize: navLinkStyleSchema.shape.textSize,
3806
+ interactionPalette: headerInteractionPaletteSchema.optional(),
3616
3807
  navPlacement: z$1.enum(["end", "center"]).optional(),
3617
3808
  container: headerContainerSchema,
3618
3809
  border: headerBorderSchema,
@@ -3943,6 +4134,59 @@ function themeButtonClassName(spec) {
3943
4134
  spec.extraClassName
3944
4135
  ].filter(Boolean).join(" ");
3945
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
+ }
3946
4190
  buttonSizeNameSchema.options;
3947
4191
  //#endregion
3948
4192
  //#region ../theme-core/src/buttons/styles/domain.ts
@@ -5571,15 +5815,6 @@ function presetCategory(recipe) {
5571
5815
  */
5572
5816
  const BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
5573
5817
  const blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
5574
- /**
5575
- * Temporary rollout boundary for persisted content written before issue #1220.
5576
- * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
5577
- * only until the post-deploy role rewrite has been audited in production.
5578
- */
5579
- function canonicalizePersistedBlockButtonRole(value) {
5580
- return value === "link" || value === "tertiary" ? "ghost" : value;
5581
- }
5582
- const persistedBlockButtonRoleSchema = z$1.preprocess((value) => typeof value === "string" ? canonicalizePersistedBlockButtonRole(value) : value, blockButtonRoleSchema);
5583
5818
  const BLOCK_BUTTON_ROLE_LABELS = {
5584
5819
  primary: "Primary",
5585
5820
  secondary: "Secondary",
@@ -5595,7 +5830,7 @@ BLOCK_BUTTON_ROLES.map((value) => ({
5595
5830
  //#region ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
5596
5831
  const previewStageSchema = z$1.enum(["preview", "published"]);
5597
5832
  const registrationButtonVariantSchema = blockButtonRoleSchema;
5598
- const eventButtonVariantSchema = persistedBlockButtonRoleSchema;
5833
+ const eventButtonVariantSchema = blockButtonRoleSchema;
5599
5834
  const eventLayoutSchema = z$1.enum(eventCalendarListLayoutValues);
5600
5835
  const eventCalendarDisplayModeSchema = z$1.enum(eventCalendarDisplayModeValues);
5601
5836
  const eventCalendarDefaultViewSchema = z$1.enum(eventCalendarDefaultViewValues);
@@ -5820,6 +6055,12 @@ const mediaBaseSchema = z.object({
5820
6055
  poster: mediaPosterSchema.optional(),
5821
6056
  transform: transformSchema.optional()
5822
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();
5823
6064
  const imageMediaSchema = mediaBaseSchema.extend({ type: z.literal("image") });
5824
6065
  const videoMediaSchema = mediaBaseSchema.extend({ type: z.literal("video") });
5825
6066
  const audioMediaSchema = mediaBaseSchema.extend({ type: z.literal("audio") });
@@ -5834,6 +6075,15 @@ const mediaSchema = z.discriminatedUnion("type", [
5834
6075
  spreadsheetMediaSchema,
5835
6076
  archiveMediaSchema
5836
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
+ ]);
5837
6087
  //#endregion
5838
6088
  //#region ../blocks/src/lib/typeGuards.ts
5839
6089
  /**
@@ -7714,28 +7964,6 @@ function sectionContainer(children, opts) {
7714
7964
  ...align ? { align } : {}
7715
7965
  }, children);
7716
7966
  }
7717
- const BREAKPOINT_LG = 1024;
7718
- const BREAKPOINT_XL = 1280;
7719
- const BREAKPOINT_LG_DOWN = BREAKPOINT_LG - 1;
7720
- function mqUp(px) {
7721
- return `(min-width: ${px}px)`;
7722
- }
7723
- function mqDown(px) {
7724
- return `(max-width: ${px}px)`;
7725
- }
7726
- function mqBetween(minPx, maxPx) {
7727
- return `${mqUp(minPx)} and ${mqDown(maxPx)}`;
7728
- }
7729
- mqUp(640);
7730
- mqUp(768);
7731
- mqUp(BREAKPOINT_LG);
7732
- mqUp(BREAKPOINT_XL);
7733
- mqDown(639);
7734
- mqDown(767);
7735
- mqDown(BREAKPOINT_LG_DOWN);
7736
- mqBetween(640, BREAKPOINT_LG_DOWN);
7737
- mqDown(640);
7738
- mqDown(768);
7739
7967
  //#endregion
7740
7968
  //#region ../blocks/src/system/layout/repeaterGrid.ts
7741
7969
  const DEFAULT_REPEATER_GRID_SPAN_FIELD_ID = "gridSpan";