@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
@@ -11,7 +11,13 @@ import { type SiteStyleAccess } from "./siteStyleAccess";
11
11
  import { type PreviewThemeRuntime } from "./themeRuntime";
12
12
  export type PreviewShellLayoutProps = {
13
13
  children: ReactNode;
14
+ /** Canonical site theme — persistence/configurator base, never page-adapted. */
14
15
  theme: Theme;
16
+ /**
17
+ * Page-adapted theme for rendering the preview document. Render-only;
18
+ * falls back to the canonical theme when absent.
19
+ */
20
+ renderTheme?: Theme | null;
15
21
  surfaceId: SurfaceId;
16
22
  siteId: string;
17
23
  dashboardBaseUrl?: string | null;
@@ -45,4 +51,4 @@ export type PreviewShellLayoutProps = {
45
51
  siteStyleAccess?: SiteStyleAccess;
46
52
  onFooterSaved?: () => void;
47
53
  };
48
- export declare function PreviewShellLayout({ children, theme, surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, apiClient, bearerToken, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonStyleSelection, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, supabaseUrl, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, themeRuntime, siteStyleAccess, onFooterSaved, }: PreviewShellLayoutProps): React.JSX.Element;
54
+ export declare function PreviewShellLayout({ children, theme, renderTheme, surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, apiClient, bearerToken, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonStyleSelection, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, supabaseUrl, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, themeRuntime, siteStyleAccess, onFooterSaved, }: PreviewShellLayoutProps): React.JSX.Element;
@@ -1,14 +1,13 @@
1
1
  import React, { type ReactNode } from 'react';
2
2
  import { type ApiClient } from '../../../../api/src/request';
3
3
  import type { Theme } from '../../../../blocks/src/index';
4
- import type { BrandDisplayMode, FooterLookId, HeaderNavFontSizePreference, HeaderNavTypographyPreference, HeaderLayoutId, HeaderSelectionContext, HeaderStyleId, LogoSizePolicy, SiteChromeBackgroundColorToken, SiteChromeBackgroundOverride } from '../../../../theme-core/src/site-styles/index';
5
- import { headerNavFontSizeOptions, headerNavTypographyOptions } from '../../../../theme-core/src/site-styles/index';
4
+ import type { BrandDisplayMode, HeaderNavFontSizePreference, HeaderNavTypographyPreference, HeaderInteractionPalettePreference, HeaderSelectionContext, LogoSizePolicy, SiteChromeBackgroundOverride } from '../../../../theme-core/src/site-styles/index';
6
5
  import { type StyleConfiguratorHistoryEntry } from './StyleConfigurator.state';
7
6
  import type { SiteStyleAccess } from './siteStyleAccess';
8
- import { type SiteChromeLookOption } from './siteChromeLookRows';
9
7
  import { type StyleConfiguratorInitialSelections } from './styleConfiguratorSnapshot';
10
8
  import type { SiteChromeEditableSurfaceKind } from './SiteChromeEditableSurface';
11
- import { type HeaderBrandDisplayOption, type HeaderLogoSizeOption } from './siteChromeBrandPreferences';
9
+ import type { SiteChromeCustomizeSurfaceState } from './siteChromeCustomizeTypes';
10
+ export type { SiteChromeBackgroundControlState, SiteChromeCustomizeSurfaceState, } from './siteChromeCustomizeTypes';
12
11
  import { type SiteStyleHistoryFailure, type SiteStyleHistorySkipReason } from './siteStyleHistoryState';
13
12
  import { type SiteChromeQuickControlHistoryFailure, type SiteChromeQuickControlHistorySkipReason } from './siteChromeQuickControlHistoryState';
14
13
  type SiteStyleHistoryController = Readonly<{
@@ -44,50 +43,6 @@ type SiteChromeQuickControlApplyOutcome = Readonly<{
44
43
  kind: 'skipped';
45
44
  reason: SiteChromeQuickControlHistorySkipReason | 'superseded';
46
45
  }> | SiteChromeQuickControlHistoryFailure;
47
- export type SiteChromeBackgroundControlState = Readonly<{
48
- available: boolean;
49
- current: SiteChromeBackgroundOverride;
50
- currentLabel: string;
51
- quickTokens: readonly SiteChromeBackgroundColorToken[];
52
- advancedTokens: readonly SiteChromeBackgroundColorToken[];
53
- }>;
54
- export type SiteChromeCustomizeSurfaceState = Readonly<{
55
- kind: 'unavailable';
56
- }> | Readonly<{
57
- kind: 'available';
58
- surface: 'header';
59
- label: string;
60
- currentLayoutId: HeaderLayoutId;
61
- currentLayoutLabel: string;
62
- layoutOptions: readonly SiteChromeLookOption<HeaderLayoutId>[];
63
- currentId: HeaderStyleId;
64
- currentLabel: string;
65
- options: readonly SiteChromeLookOption<HeaderStyleId>[];
66
- brandDisplay: BrandDisplayMode;
67
- brandDisplayOptions: readonly HeaderBrandDisplayOption[];
68
- brandSizeLabel: string;
69
- logoSize: LogoSizePolicy;
70
- logoSizeOptions: readonly HeaderLogoSizeOption[];
71
- menuFont: HeaderNavTypographyPreference;
72
- menuFontOptions: typeof headerNavTypographyOptions;
73
- menuFontSize: HeaderNavFontSizePreference;
74
- menuFontSizeOptions: typeof headerNavFontSizeOptions;
75
- diagnostics: readonly string[];
76
- background: SiteChromeBackgroundControlState;
77
- failure: string | null;
78
- applyAllowed: boolean;
79
- }> | Readonly<{
80
- kind: 'available';
81
- surface: 'footer';
82
- label: string;
83
- currentId: FooterLookId | null;
84
- currentLabel: string;
85
- options: readonly SiteChromeLookOption<FooterLookId | null>[];
86
- diagnostics: readonly string[];
87
- background: SiteChromeBackgroundControlState;
88
- failure: string | null;
89
- applyAllowed: boolean;
90
- }>;
91
46
  type SiteChromeCustomizeContextValue = Readonly<{
92
47
  canOpenDesignEditor: boolean;
93
48
  getSurfaceState: (surface: SiteChromeEditableSurfaceKind) => SiteChromeCustomizeSurfaceState;
@@ -97,6 +52,7 @@ type SiteChromeCustomizeContextValue = Readonly<{
97
52
  setHeaderLogoSize: (value: LogoSizePolicy) => void;
98
53
  setHeaderMenuFont: (value: HeaderNavTypographyPreference) => void;
99
54
  setHeaderMenuFontSize: (value: HeaderNavFontSizePreference) => void;
55
+ setHeaderInteractionPalette: (value: HeaderInteractionPalettePreference) => void;
100
56
  cycleSurfaceBackground: (surface: SiteChromeEditableSurfaceKind, direction: 'prev' | 'next') => void;
101
57
  chooseSurfaceBackground: (surface: SiteChromeEditableSurfaceKind, override: SiteChromeBackgroundOverride) => void;
102
58
  siteStyleHistory: SiteStyleHistoryController;
@@ -118,4 +74,3 @@ export type SiteChromeCustomizeProviderProps = Readonly<{
118
74
  }>;
119
75
  export declare function SiteChromeCustomizeProvider({ children, siteId, apiClient, theme, themeId, selectionId, selectionVersion, selectionUpdatedAt, initialSelections, headerSelectionContext, siteStyleAccess, canOpenDesignEditor, }: SiteChromeCustomizeProviderProps): React.JSX.Element;
120
76
  export declare function useSiteChromeCustomizeOptional(): SiteChromeCustomizeContextValue | null;
121
- export {};
@@ -0,0 +1,8 @@
1
+ import type { HeaderInteractionPalettePreference, HeaderStyleId } from '../../../../theme-core/src/site-styles/index';
2
+ import { resolveHeaderInteractionPaletteControl } from '../../../../theme-core/src/site-styles/index';
3
+ type HeaderInteractionPaletteSurfaceState = Readonly<{
4
+ interactionPalette: ReturnType<typeof resolveHeaderInteractionPaletteControl>;
5
+ diagnostics: readonly string[];
6
+ }>;
7
+ export declare function headerInteractionPaletteSurfaceState(styleId: HeaderStyleId, preference: HeaderInteractionPalettePreference): HeaderInteractionPaletteSurfaceState;
8
+ export {};
@@ -0,0 +1,15 @@
1
+ import type { Theme } from "../../../../theme-core/src/index";
2
+ export type PreviewThemeRoles = Readonly<{
3
+ /** Base theme for site-style saves and configurator state. */
4
+ persistenceTheme: Theme;
5
+ /** Theme the preview document renders with (may be page-adapted). */
6
+ documentTheme: Theme;
7
+ }>;
8
+ /**
9
+ * Splits the preview theme inputs into their two distinct roles so the
10
+ * page-adapted render theme can never reach the persistence path.
11
+ */
12
+ export declare function resolvePreviewThemeRoles(input: {
13
+ theme: Theme;
14
+ renderTheme?: Theme | null;
15
+ }): PreviewThemeRoles;
@@ -0,0 +1,54 @@
1
+ import type { BrandDisplayMode, FooterLookId, HeaderInteractionPaletteControlState, HeaderLayoutId, HeaderNavFontSizePreference, HeaderNavTypographyPreference, HeaderStyleId, LogoSizePolicy, SiteChromeBackgroundColorToken, SiteChromeBackgroundOverride } from '../../../../theme-core/src/site-styles/index';
2
+ import type { HeaderBrandDisplayOption, HeaderLogoSizeOption } from './siteChromeBrandPreferences';
3
+ import type { SiteChromeLookOption } from './siteChromeLookRows';
4
+ export type SiteChromeBackgroundControlState = Readonly<{
5
+ available: boolean;
6
+ current: SiteChromeBackgroundOverride;
7
+ currentLabel: string;
8
+ quickTokens: readonly SiteChromeBackgroundColorToken[];
9
+ advancedTokens: readonly SiteChromeBackgroundColorToken[];
10
+ }>;
11
+ export type SiteChromeCustomizeSurfaceState = Readonly<{
12
+ kind: 'unavailable';
13
+ }> | Readonly<{
14
+ kind: 'available';
15
+ surface: 'header';
16
+ label: string;
17
+ currentLayoutId: HeaderLayoutId;
18
+ currentLayoutLabel: string;
19
+ layoutOptions: readonly SiteChromeLookOption<HeaderLayoutId>[];
20
+ currentId: HeaderStyleId;
21
+ currentLabel: string;
22
+ options: readonly SiteChromeLookOption<HeaderStyleId>[];
23
+ brandDisplay: BrandDisplayMode;
24
+ brandDisplayOptions: readonly HeaderBrandDisplayOption[];
25
+ brandSizeLabel: string;
26
+ logoSize: LogoSizePolicy;
27
+ logoSizeOptions: readonly HeaderLogoSizeOption[];
28
+ menuFont: HeaderNavTypographyPreference;
29
+ menuFontOptions: readonly Readonly<{
30
+ value: HeaderNavTypographyPreference;
31
+ label: string;
32
+ }>[];
33
+ menuFontSize: HeaderNavFontSizePreference;
34
+ menuFontSizeOptions: readonly Readonly<{
35
+ value: HeaderNavFontSizePreference;
36
+ label: string;
37
+ }>[];
38
+ interactionPalette: HeaderInteractionPaletteControlState;
39
+ diagnostics: readonly string[];
40
+ background: SiteChromeBackgroundControlState;
41
+ failure: string | null;
42
+ applyAllowed: boolean;
43
+ }> | Readonly<{
44
+ kind: 'available';
45
+ surface: 'footer';
46
+ label: string;
47
+ currentId: FooterLookId | null;
48
+ currentLabel: string;
49
+ options: readonly SiteChromeLookOption<FooterLookId | null>[];
50
+ diagnostics: readonly string[];
51
+ background: SiteChromeBackgroundControlState;
52
+ failure: string | null;
53
+ applyAllowed: boolean;
54
+ }>;
@@ -1,12 +1,21 @@
1
1
  import { type CuratedSiteStyle } from '../../../../theme-core/src/site-styles/previewCompiler';
2
- import { type FooterLookId, type HeaderLayoutId, type HeaderLookId, type HeaderSelectionContext, type HeaderStyleId, type LookCustomizationWritePlan } from '../../../../theme-core/src/site-styles/index';
2
+ import { type FooterLookId, type HeaderLayoutId, type HeaderLookId, type HeaderSelectionContext, type HeaderStyleAvailability, type HeaderStyleId, type LookCustomizationWritePlan } from '../../../../theme-core/src/site-styles/index';
3
3
  import type { SelectionSnapshot, StyleConfiguratorState } from './StyleConfigurator.state';
4
- export type SiteChromeLookOption<TId extends string | null> = Readonly<{
4
+ export type SiteChromeLookUnavailableReason = Extract<HeaderStyleAvailability, {
5
+ kind: 'unavailable';
6
+ }>['reason'] | 'unknown-header-style';
7
+ type SiteChromeLookOptionBase<TId extends string | null> = Readonly<{
5
8
  id: TId;
6
9
  label: string;
7
10
  description?: string;
8
- available: boolean;
9
11
  }>;
12
+ export type SiteChromeLookOption<TId extends string | null> = SiteChromeLookOptionBase<TId> & (Readonly<{
13
+ available: true;
14
+ unavailableReason?: never;
15
+ }> | Readonly<{
16
+ available: false;
17
+ unavailableReason: SiteChromeLookUnavailableReason;
18
+ }>);
10
19
  export type SiteChromeLookCatalogOption<TId extends string> = Readonly<{
11
20
  id: TId;
12
21
  label: string;
@@ -33,6 +42,7 @@ type SiteChromeLookModelInput = Readonly<{
33
42
  headerSelectionContext?: Partial<HeaderSelectionContext>;
34
43
  }>;
35
44
  export declare function buildSiteChromeLookModels(input: SiteChromeLookModelInput): SiteChromeLookModels;
45
+ export declare function siteChromeLookUnavailableReasonLabel(reason: SiteChromeLookUnavailableReason): string;
36
46
  export declare function cycleSiteChromeLookId<TId extends string>(options: readonly SiteChromeLookOption<TId | null>[], currentId: TId | null, direction: 'prev' | 'next'): TId | null | undefined;
37
47
  export declare function cycleableSiteChromeOptions<TId extends string>(options: readonly SiteChromeLookOption<TId | null>[]): readonly SiteChromeLookOption<TId | null>[];
38
48
  export type SiteChromeLookSelectionCommand = Readonly<{
@@ -0,0 +1,3 @@
1
+ import { type HeaderNavPreferences } from '../../../../theme-core/src/site-styles/index';
2
+ import type { SiteChromeQuickControlHistoryEntry, SiteChromeQuickControlNavTarget } from './siteChromeQuickControlHistoryState';
3
+ export declare function quickControlHistoryEntryFromNavPreferenceChange(previous: HeaderNavPreferences, next: HeaderNavPreferences, target: SiteChromeQuickControlNavTarget): SiteChromeQuickControlHistoryEntry | null;
@@ -1,5 +1,5 @@
1
1
  import { type HistoryState } from '../../../../content-editor/src/index';
2
- import { type BrandDisplayMode, type FooterLookId, type HeaderNavFontSizePreference, type HeaderNavPreferences, type HeaderNavTypographyPreference, type LogoSizePolicy, type SiteChromeBackgroundOverride, type SiteChromeBackgroundPreferences } from '../../../../theme-core/src/site-styles/index';
2
+ import { type BrandDisplayMode, type FooterLookId, type HeaderNavFontSizePreference, type HeaderNavPreferences, type HeaderNavTypographyPreference, type HeaderInteractionPalettePreference, type LogoSizePolicy, type SiteChromeBackgroundOverride, type SiteChromeBackgroundPreferences } from '../../../../theme-core/src/site-styles/index';
3
3
  import type { SelectionSnapshot } from './StyleConfigurator.state';
4
4
  import type { HeaderBrandPreferences } from './siteChromeBrandPreferences';
5
5
  type HeaderLayoutSelection = Pick<SelectionSnapshot, 'headerLayoutId' | 'headerStyleId' | 'headerLookId'>;
@@ -40,6 +40,10 @@ export type SiteChromeQuickControlHistoryEntry = Readonly<{
40
40
  kind: 'header-menu-font-size';
41
41
  previous: HeaderNavFontSizePreference;
42
42
  next: HeaderNavFontSizePreference;
43
+ }> | Readonly<{
44
+ kind: 'header-interaction-palette';
45
+ previous: HeaderInteractionPalettePreference;
46
+ next: HeaderInteractionPalettePreference;
43
47
  }>;
44
48
  export type SiteChromeQuickControlHistoryPresent = Readonly<{
45
49
  selection: SelectionSnapshot;
@@ -108,7 +112,7 @@ export type SiteChromeQuickControlHistoryFailure = Readonly<{
108
112
  }>;
109
113
  export type SiteChromeQuickControlSelectionTarget = 'header-layout' | 'header-style' | 'footer-look';
110
114
  export type SiteChromeQuickControlBrandTarget = 'header-brand-display' | 'header-logo-size';
111
- export type SiteChromeQuickControlNavTarget = 'header-menu-font' | 'header-menu-font-size';
115
+ export type SiteChromeQuickControlNavTarget = 'header-menu-font' | 'header-menu-font-size' | 'header-interaction-palette';
112
116
  export type SiteChromeQuickControlBackgroundTarget = 'header-background' | 'footer-background';
113
117
  export declare function createSiteChromeQuickControlHistoryState(present: SiteChromeQuickControlHistoryPresentInput): SiteChromeQuickControlHistoryState;
114
118
  export declare function recordSiteChromeQuickControlHistoryEntry(state: SiteChromeQuickControlHistoryState, input: Readonly<{
@@ -119,7 +123,6 @@ export declare function recordSiteChromeQuickControlHistoryEntry(state: SiteChro
119
123
  export declare function quickControlHistoryEntryFromSelectionChange(previous: SelectionSnapshot, next: SelectionSnapshot, target: SiteChromeQuickControlSelectionTarget): SiteChromeQuickControlHistoryEntry | null;
120
124
  export declare function quickControlHistoryEntryFromBrandPreferenceChange(previous: HeaderBrandPreferences, next: HeaderBrandPreferences, target: SiteChromeQuickControlBrandTarget): SiteChromeQuickControlHistoryEntry | null;
121
125
  export declare function quickControlHistoryEntryFromBackgroundPreferenceChange(previous: SiteChromeBackgroundPreferences, next: SiteChromeBackgroundPreferences, target: SiteChromeQuickControlBackgroundTarget): SiteChromeQuickControlHistoryEntry | null;
122
- export declare function quickControlHistoryEntryFromNavPreferenceChange(previous: HeaderNavPreferences, next: HeaderNavPreferences, target: SiteChromeQuickControlNavTarget): SiteChromeQuickControlHistoryEntry | null;
123
126
  export declare function beginSiteChromeQuickControlHistoryUndo(state: SiteChromeQuickControlHistoryState): SiteChromeQuickControlHistoryBeginResult;
124
127
  export declare function beginSiteChromeQuickControlHistoryRedo(state: SiteChromeQuickControlHistoryState): SiteChromeQuickControlHistoryBeginResult;
125
128
  export declare function confirmSiteChromeQuickControlHistoryMutation(state: SiteChromeQuickControlHistoryState, persisted: SiteChromeQuickControlHistoryPresentInput): SiteChromeQuickControlHistoryState;
@@ -1,4 +1,4 @@
1
- import type { EventScheduleScope as SystemEventScheduleScope, EventSurfacePreset as SystemEventSurfacePreset, RichTextDoc as SystemRichTextDoc } from '../../contracts/system-block-content';
1
+ import type { ButtonVariant as SystemButtonVariant, EventScheduleScope as SystemEventScheduleScope, EventSurfacePreset as SystemEventSurfacePreset, RichTextDoc as SystemRichTextDoc } from '../../contracts/system-block-content';
2
2
  import type { PublicTeamMemberSummary } from '../../../../api/src/index';
3
3
  import type { BookingFlexibleBalanceConfig, BookingInstalmentPlanConfig, LocationCoordinates, PublicCoursePriceDisplay, PublicEventPriceDisplay, PublicEventPricing, PublicEventPricingType } from '../../../../core/src/index';
4
4
  import type { AccordionIslandProps as BlocksAccordionIslandProps, BookingFormConfig as BlocksBookingFormConfig, BookingFormInteractiveIslandProps as BlocksBookingFormIslandProps, BookingFormService as BlocksBookingFormService, CarouselIslandProps as BlocksCarouselIslandProps, CourseRegistrationInteractiveIslandProps as BlocksCourseRegistrationIslandProps, CartDisplay as BlocksCartDisplay, CartInteractiveIslandProps as BlocksCartIslandProps, CartLineDisplay as BlocksCartLineDisplay, CheckoutDisplay as BlocksCheckoutDisplay, CheckoutInteractiveIslandProps as BlocksCheckoutIslandProps, EventCalendarInteractiveIslandProps as BlocksEventCalendarIslandProps, EventCombinedInteractiveIslandProps as BlocksEventCombinedIslandProps, EventDetailsIslandProps as BlocksEventDetailsIslandProps, EventDetailsOccurrenceContext as BlocksEventDetailsOccurrenceContext, LocationMapIslandProps as BlocksLocationMapIslandProps, EventRegistrationInteractiveIslandProps as BlocksEventRegistrationIslandProps, EventListingDisplay as BlocksEventListingDisplay, EventListingHydration as BlocksEventListingHydration, EventListingInteractiveIslandProps as BlocksEventListingIslandProps, PublicEvent as BlocksPublicEvent, FormInteractiveIslandProps as BlocksFormIslandProps, HeaderSectionIslandProps as BlocksHeaderSectionIslandProps, MembershipCardDisplay as BlocksMembershipCardDisplay, NewsletterFormInteractiveIslandProps as BlocksNewsletterFormIslandProps, PassCardDisplay as BlocksPassCardDisplay, PassesMembershipsDisplay as BlocksPassesMembershipsDisplay, ProductCardDisplay as BlocksProductCardDisplay, ProductDetailDisplay as BlocksProductDetailDisplay, ProductDetailInteractiveIslandProps as BlocksProductDetailIslandProps, ProductListDisplay as BlocksProductListDisplay, ProductListInteractiveIslandProps as BlocksProductListIslandProps, ProductVariantOptionDisplay as BlocksProductVariantOptionDisplay, ShopInteractiveIslandProps as BlocksShopIslandProps } from '../../../../blocks/src/contracts/index';
@@ -240,7 +240,7 @@ export type BookingFormService = BlocksBookingFormService;
240
240
  export type BookingFormConfig = BlocksBookingFormConfig;
241
241
  export type BookingFormIslandProps = BlocksBookingFormIslandProps;
242
242
  export type CardVariant = 'default' | 'variant1' | 'variant2';
243
- export type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'link';
243
+ export type ButtonVariant = SystemButtonVariant;
244
244
  export type EventListingLayout = EventLayout;
245
245
  export type CardOrientation = 'vertical' | 'horizontal';
246
246
  export type EventListingDisplay = BlocksEventListingDisplay;
@@ -8,4 +8,4 @@
8
8
  * 1. This constant
9
9
  * 2. The "version" field in package.json
10
10
  */
11
- export declare const SDK_VERSION = "0.126.0";
11
+ export declare const SDK_VERSION = "0.127.0";
@@ -1,4 +1,4 @@
1
- import type { EffectPreset } from "../types";
1
+ import type { EffectPreset } from '../types';
2
2
  /**
3
3
  * Darken background on hover
4
4
  *
@@ -720,24 +720,6 @@ export type ResolveButtonStyleSelectionResult = Readonly<{
720
720
  }>;
721
721
  export declare function resolveButtonStyleSelection(selection: ButtonStyleSelection): ResolveButtonStyleSelectionResult;
722
722
  export declare function defaultButtonStyleSelectionFor<TStyleId extends ButtonStyleId>(styleId: TStyleId): ButtonStyleSelectionFor<TStyleId>;
723
- export type PersistedButtonStyleWarning = Readonly<{
724
- kind: 'missing-style-id';
725
- }> | Readonly<{
726
- kind: 'unknown-style-id';
727
- raw: string;
728
- }> | Readonly<{
729
- kind: 'invalid-parameters';
730
- styleId: ButtonStyleId;
731
- issues: readonly string[];
732
- }>;
733
- export type PersistedButtonStyleSelectionResult = Readonly<{
734
- selection: ButtonStyleSelection;
735
- warning: PersistedButtonStyleWarning | null;
736
- }>;
737
- export declare function parsePersistedButtonStyleSelection(input: Readonly<{
738
- styleId: string | null | undefined;
739
- parameters: unknown;
740
- }>, fallback?: ButtonStyleSelection): PersistedButtonStyleSelectionResult;
741
723
  export declare function buttonStyleSelectionParameterValue(selection: ButtonStyleSelection, parameter: string): string | null;
742
724
  export type UpdateButtonStyleSelectionChoiceResult = Readonly<{
743
725
  kind: 'updated';
@@ -41,7 +41,7 @@ export type ButtonSizes = Record<ButtonSizeName, ButtonSizeConfig>;
41
41
  * Block content references variants by role; the active theme determines
42
42
  * what each role looks like.
43
43
  */
44
- export declare const VARIANT_ROLES: readonly ["primary", "secondary", "outline", "ghost", "link", "tertiary", "accent"];
44
+ export declare const VARIANT_ROLES: readonly ["primary", "secondary", "outline", "ghost", "accent"];
45
45
  export type VariantRole = (typeof VARIANT_ROLES)[number];
46
46
  export declare function isVariantRole(value: string): value is VariantRole;
47
47
  declare const SpecialVariantIdBrand: unique symbol;
@@ -307,13 +307,11 @@ export declare const gradientSharpnessSchema: z.ZodEnum<{
307
307
  }>;
308
308
  export declare const prioritySchema: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>]>;
309
309
  export declare const variantRoleSchema: z.ZodEnum<{
310
- link: "link";
311
310
  outline: "outline";
312
311
  accent: "accent";
313
312
  primary: "primary";
314
313
  secondary: "secondary";
315
314
  ghost: "ghost";
316
- tertiary: "tertiary";
317
315
  }>;
318
316
  export declare const buttonSizeNameSchema: z.ZodEnum<{
319
317
  sm: "sm";
@@ -0,0 +1,20 @@
1
+ import { z } from 'zod';
2
+ export declare const headerContainerSchema: z.ZodOptional<z.ZodObject<{
3
+ rounded: z.ZodDefault<z.ZodEnum<{
4
+ none: "none";
5
+ sm: "sm";
6
+ md: "md";
7
+ lg: "lg";
8
+ xl: "xl";
9
+ "2xl": "2xl";
10
+ }>>;
11
+ border: z.ZodDefault<z.ZodBoolean>;
12
+ shadow: z.ZodDefault<z.ZodBoolean>;
13
+ padding: z.ZodDefault<z.ZodEnum<{
14
+ sm: "sm";
15
+ md: "md";
16
+ lg: "lg";
17
+ }>>;
18
+ tint: z.ZodOptional<z.ZodNullable<z.ZodString>>;
19
+ opacity: z.ZodDefault<z.ZodNumber>;
20
+ }, z.core.$strip>>;
@@ -16,5 +16,5 @@ export declare const _testExports: {
16
16
  /**
17
17
  * Generate root header container styles
18
18
  */
19
- declare function generateHeaderRootStyles(header: ThemeHeader, themeId: string, tokens: TokenResolver, _theme: Theme): string;
19
+ declare function generateHeaderRootStyles(header: ThemeHeader, themeId: string, tokens: TokenResolver): string;
20
20
  export {};
@@ -0,0 +1,14 @@
1
+ import { z } from 'zod';
2
+ export declare const headerInteractionPaletteValues: readonly ["primary", "secondary", "accent"];
3
+ export declare const headerInteractionPaletteSchema: z.ZodEnum<{
4
+ accent: "accent";
5
+ primary: "primary";
6
+ secondary: "secondary";
7
+ }>;
8
+ export type HeaderInteractionPalette = z.infer<typeof headerInteractionPaletteSchema>;
9
+ export type HeaderInteractionPalettePreference = 'recommended' | HeaderInteractionPalette;
10
+ export type HeaderInteractionPalettePair = Readonly<{
11
+ backgroundToken: 'primary' | 'secondary' | 'accent';
12
+ foregroundToken: 'onPrimary' | 'onSecondary' | 'onAccent';
13
+ }>;
14
+ export declare function headerInteractionPalettePair(palette: HeaderInteractionPalette): HeaderInteractionPalettePair;
@@ -0,0 +1,3 @@
1
+ import type { NavLinkContrastTreatment, NavLinkStyle } from '../navigation/types';
2
+ import type { ThemeHeader } from '../schema';
3
+ export declare function buildLegacyHeaderNavLinkStyle(header: ThemeHeader, contrastTreatment: NavLinkContrastTreatment | null, navTextSize: NavLinkStyle['textSize'] | null): NavLinkStyle | null;
@@ -0,0 +1,25 @@
1
+ type HeaderLayoutVariant = 'classic' | 'centered' | 'transparent' | 'floating';
2
+ type ElementBoxPaintTarget = Readonly<{
3
+ kind: 'element-box';
4
+ selector: string;
5
+ mediaQuery?: string;
6
+ pseudoElement?: 'inset';
7
+ }>;
8
+ type ViewportBandPaintTarget = Readonly<{
9
+ kind: 'viewport-band';
10
+ clipSelector: string;
11
+ ownerSelector: string;
12
+ selector: string;
13
+ mediaQuery: string;
14
+ topExtension: Readonly<{
15
+ customProperty: '--rb-header-floating-top-gap';
16
+ value: '1rem' | '0.75rem';
17
+ ownerProperty: 'top' | 'margin-top';
18
+ }>;
19
+ ownerNeedsPositioning: boolean;
20
+ }>;
21
+ export type HeaderPaintTarget = ElementBoxPaintTarget | ViewportBandPaintTarget;
22
+ /** Resolve the element that owns the visible header surface for each layout. */
23
+ export declare function getHeaderPaintTargets(variant: HeaderLayoutVariant, themeId: string, state?: 'base' | 'scrolled'): readonly HeaderPaintTarget[];
24
+ export declare function renderHeaderPaintTargetRules(targets: readonly HeaderPaintTarget[], rules: readonly string[]): string;
25
+ export {};
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+ export declare const headerScrollTreatmentSchema: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
3
+ kind: z.ZodLiteral<"contrast-glass">;
4
+ backgroundTone: z.ZodEnum<{
5
+ light: "light";
6
+ dark: "dark";
7
+ }>;
8
+ }, z.core.$strip>], "kind">>;
9
+ export type HeaderScrollTreatment = z.infer<typeof headerScrollTreatmentSchema>;
10
+ export declare function generateMobileOverlayBackdropFilterFix(themeId: string, variant: 'classic' | 'centered' | 'transparent' | 'floating'): string;
11
+ export declare function generateHeaderScrollTreatmentStyles(treatment: HeaderScrollTreatment, themeId: string, variant: 'classic' | 'centered' | 'transparent' | 'floating', surfaceRules?: readonly string[]): string;
@@ -0,0 +1,9 @@
1
+ import type { ThemeHeader } from '../schema';
2
+ import type { TokenResolver } from '../tokens/resolver';
3
+ export type HeaderSurfaceRules = Readonly<{
4
+ base: readonly string[];
5
+ scrolled: readonly string[];
6
+ border: readonly string[];
7
+ }>;
8
+ /** Compile the visual surface declarations independently of paint geometry. */
9
+ export declare function buildHeaderSurfaceRules(header: ThemeHeader, tokens: TokenResolver, blur: string): HeaderSurfaceRules;
@@ -187,6 +187,10 @@ export declare const mockThemes: {
187
187
  tint?: string | null | undefined;
188
188
  };
189
189
  barFrame?: "full-bleed" | "inset-shell" | undefined;
190
+ scrollTreatment?: {
191
+ kind: "contrast-glass";
192
+ backgroundTone: "light" | "dark";
193
+ } | undefined;
190
194
  logoOverride?: {
191
195
  type: "image" | "video" | "audio" | "document" | "spreadsheet" | "archive";
192
196
  purpose?: string | undefined;
@@ -226,6 +230,7 @@ export declare const mockThemes: {
226
230
  navFontRole?: "heading" | "body" | undefined;
227
231
  navTypography?: "heading" | "body" | undefined;
228
232
  navTextSize?: "base" | "sm" | "lg" | "xl" | "xs" | undefined;
233
+ interactionPalette?: "accent" | "primary" | "secondary" | undefined;
229
234
  navPlacement?: "center" | "end" | undefined;
230
235
  container?: {
231
236
  rounded: "none" | "sm" | "md" | "lg" | "xl" | "2xl";
@@ -1540,6 +1545,10 @@ export declare const mockThemes: {
1540
1545
  tint?: string | null | undefined;
1541
1546
  };
1542
1547
  barFrame?: "full-bleed" | "inset-shell" | undefined;
1548
+ scrollTreatment?: {
1549
+ kind: "contrast-glass";
1550
+ backgroundTone: "light" | "dark";
1551
+ } | undefined;
1543
1552
  logoOverride?: {
1544
1553
  type: "image" | "video" | "audio" | "document" | "spreadsheet" | "archive";
1545
1554
  purpose?: string | undefined;
@@ -1579,6 +1588,7 @@ export declare const mockThemes: {
1579
1588
  navFontRole?: "heading" | "body" | undefined;
1580
1589
  navTypography?: "heading" | "body" | undefined;
1581
1590
  navTextSize?: "base" | "sm" | "lg" | "xl" | "xs" | undefined;
1591
+ interactionPalette?: "accent" | "primary" | "secondary" | undefined;
1582
1592
  navPlacement?: "center" | "end" | undefined;
1583
1593
  container?: {
1584
1594
  rounded: "none" | "sm" | "md" | "lg" | "xl" | "2xl";
@@ -2893,6 +2903,10 @@ export declare const mockThemes: {
2893
2903
  tint?: string | null | undefined;
2894
2904
  };
2895
2905
  barFrame?: "full-bleed" | "inset-shell" | undefined;
2906
+ scrollTreatment?: {
2907
+ kind: "contrast-glass";
2908
+ backgroundTone: "light" | "dark";
2909
+ } | undefined;
2896
2910
  logoOverride?: {
2897
2911
  type: "image" | "video" | "audio" | "document" | "spreadsheet" | "archive";
2898
2912
  purpose?: string | undefined;
@@ -2932,6 +2946,7 @@ export declare const mockThemes: {
2932
2946
  navFontRole?: "heading" | "body" | undefined;
2933
2947
  navTypography?: "heading" | "body" | undefined;
2934
2948
  navTextSize?: "base" | "sm" | "lg" | "xl" | "xs" | undefined;
2949
+ interactionPalette?: "accent" | "primary" | "secondary" | undefined;
2935
2950
  navPlacement?: "center" | "end" | undefined;
2936
2951
  container?: {
2937
2952
  rounded: "none" | "sm" | "md" | "lg" | "xl" | "2xl";
@@ -87,7 +87,7 @@ export declare function paletteColorsEqual(left: PaletteColors, right: PaletteCo
87
87
  export declare function paletteColorFingerprint(colors: PaletteColors): string;
88
88
  export declare function canonicalPaletteHashInput(colors: PaletteColors, mode: PaletteMode): string;
89
89
  /**
90
- * The shared TypeScript/SQL protocol. Do not reorder roles: the order comes
90
+ * Stable curated-catalogue identity. Do not reorder roles: the order comes
91
91
  * from PALETTE_TOKEN_NAMES through canonicalPaletteHashInput.
92
92
  */
93
93
  export declare function paletteValueKey(colors: PaletteColors, mode: PaletteMode): PaletteValueKey;