@riverbankcms/sdk 0.103.0 → 0.104.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 (149) hide show
  1. package/dist/{PreviewEditorSidebar-DkNpCPja.mjs → PreviewEditorSidebar-ywqcYjTB.mjs} +148 -128
  2. package/dist/{PreviewEditorUI-DeNKtqk3.mjs → PreviewEditorUI-DApUNF6g.mjs} +3 -3
  3. package/dist/{PreviewQueryProvider-ZF6TXq5Q.mjs → PreviewQueryProvider-CStABBUh.mjs} +1 -1
  4. package/dist/{SdkPreviewModeRuntime-5bCsXK2y.mjs → SdkPreviewModeRuntime-DmHCcIMO.mjs} +1199 -563
  5. package/dist/{SiteChromeCustomizeContext-CO1sTK_W.mjs → SiteChromeCustomizeContext-BV9GU-3C.mjs} +3145 -2452
  6. package/dist/_dts/api/src/contentRuntime.d.ts +6 -3
  7. package/dist/_dts/api/src/endpoints.d.ts +10 -3
  8. package/dist/_dts/api/src/index.d.ts +1 -1
  9. package/dist/_dts/api/src/siteIcons.d.ts +39 -43
  10. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -3
  11. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +36 -7
  12. package/dist/_dts/block-form/src/widgets/SliderField/SliderField.d.ts +3 -3
  13. package/dist/_dts/block-form/src/widgets/SliderField/sliderValue.d.ts +36 -0
  14. package/dist/_dts/block-form/src/widgets/utils/readNumericUiConfig.d.ts +3 -0
  15. package/dist/_dts/blocks/src/index.d.ts +1 -1
  16. package/dist/_dts/blocks/src/system/blocks/feature-card-icons.d.ts +29 -29
  17. package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +1 -0
  18. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -0
  19. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +135 -0
  20. package/dist/_dts/blocks/src/system/icons/generatedAssets.d.ts +28 -0
  21. package/dist/_dts/blocks/src/system/icons/index.d.ts +1 -0
  22. package/dist/_dts/blocks/src/system/icons/value.d.ts +3 -6
  23. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +240 -0
  24. package/dist/_dts/blocks/src/system/runtime/nodes/feature-card-icon.d.ts +1 -0
  25. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +2 -0
  26. package/dist/_dts/content-editor/src/ui/stores/generatedIconAssetsStore.d.ts +9 -0
  27. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +208 -0
  28. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +7 -0
  29. package/dist/_dts/editor-blocks/src/BlockForm.d.ts +2 -1
  30. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +4 -4
  31. package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +2 -3
  32. package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +4 -4
  33. package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +4 -4
  34. package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +3 -3
  35. package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +2 -3
  36. package/dist/_dts/editor-blocks/src/block-editor/blockHeaderActionPlan.d.ts +1 -5
  37. package/dist/_dts/editor-blocks/src/block-editor/featureCardIconActions.d.ts +25 -19
  38. package/dist/_dts/editor-blocks/src/block-editor/generatedIconApplyCoordination.d.ts +32 -0
  39. package/dist/_dts/editor-blocks/src/widgets/icon-picker/GeneratedIconLibraryContext.d.ts +28 -0
  40. package/dist/_dts/editor-blocks/src/widgets/icon-picker/index.d.ts +2 -0
  41. package/dist/_dts/editor-blocks/src/widgets/icon-picker/loaders.d.ts +7 -0
  42. package/dist/_dts/preview-next/src/client/preview/CustomizeBackgroundControlRows.d.ts +15 -0
  43. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -1
  44. package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -1
  45. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -1
  46. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +4 -3
  47. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +4 -3
  48. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +4 -3
  49. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +3 -4
  50. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +5 -4
  51. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +44 -18
  52. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +4 -5
  53. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorApplyPayload.d.ts +22 -1
  54. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorSnapshot.d.ts +12 -4
  55. package/dist/_dts/sdk/src/client/management/types.d.ts +3 -0
  56. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +0 -1
  57. package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -2
  58. package/dist/_dts/sdk/src/version.d.ts +1 -1
  59. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  60. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +9 -9
  61. package/dist/_dts/theme-core/src/navigation/types.d.ts +2 -0
  62. package/dist/_dts/theme-core/src/palette/colors.d.ts +84 -0
  63. package/dist/_dts/theme-core/src/palette/{variants → curated}/brand-led.d.ts +12 -24
  64. package/dist/_dts/theme-core/src/palette/{variants → curated}/high-contrast.d.ts +9 -18
  65. package/dist/_dts/theme-core/src/palette/{variants → curated}/index.d.ts +67 -119
  66. package/dist/_dts/theme-core/src/palette/{variants → curated}/soft-natural.d.ts +12 -24
  67. package/dist/_dts/theme-core/src/palette/{variants → curated}/types.d.ts +50 -60
  68. package/dist/_dts/theme-core/src/palette/{variants → curated}/warm-dark.d.ts +6 -12
  69. package/dist/_dts/theme-core/src/palette/{variants → curated}/warm-neutral.d.ts +12 -24
  70. package/dist/_dts/theme-core/src/palette/editorState.d.ts +45 -0
  71. package/dist/_dts/theme-core/src/palette/index.d.ts +25 -14
  72. package/dist/_dts/theme-core/src/palette/legacyRuntimeProjection.d.ts +38 -0
  73. package/dist/_dts/theme-core/src/palette/legacySelection.d.ts +34 -0
  74. package/dist/_dts/theme-core/src/palette/libraryModel.d.ts +58 -0
  75. package/dist/_dts/theme-core/src/palette/paletteCompatibilityTransition.d.ts +241 -0
  76. package/dist/_dts/theme-core/src/palette/persistenceReadSource.d.ts +118 -0
  77. package/dist/_dts/theme-core/src/palette/resolveSelection.d.ts +50 -0
  78. package/dist/_dts/theme-core/src/palette/selection.d.ts +72 -0
  79. package/dist/_dts/theme-core/src/palette/sitePalettePersistence.d.ts +34 -0
  80. package/dist/_dts/theme-core/src/palette/themePaletteCompatibility.d.ts +58 -0
  81. package/dist/_dts/theme-core/src/schema.d.ts +9 -0
  82. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +22 -22
  83. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
  84. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +31 -9
  85. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +22 -16
  86. package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +6 -5
  87. package/dist/_dts/theme-core/src/site-styles/themeParity.d.ts +21 -0
  88. package/dist/_dts/ui/src/palette/PaletteTokenEditor.d.ts +2 -1
  89. package/dist/cli/index.mjs +7798 -7449
  90. package/dist/client/{DiscountCodeDisclosure-ChVZwVtS.mjs → DiscountCodeDisclosure-Dit2aItR.mjs} +1 -1
  91. package/dist/client/{EventCombined.client-PZtXbH6R.mjs → EventCombined.client-BnREyCjf.mjs} +3 -3
  92. package/dist/client/{EventListing.client-C4AMTXec.mjs → EventListing.client-0uHld51x.mjs} +2 -2
  93. package/dist/client/{LeafletStaticMap-B0w8_i0u.mjs → LeafletStaticMap-DJcvSfmj.mjs} +1 -1
  94. package/dist/client/{MagicLinkForm-DF0ZGhIu.mjs → MagicLinkForm-EAsIktfw.mjs} +2 -2
  95. package/dist/client/{StepIndicator-PccQ89Ct.mjs → StepIndicator-CRR17tYI.mjs} +2 -2
  96. package/dist/client/{accordion-CTNWT1lk.mjs → accordion-B47HIuuH.mjs} +1 -1
  97. package/dist/client/{bookingForm-DYixwPqP.mjs → bookingForm-I1E-8F9P.mjs} +6 -6
  98. package/dist/client/{buttons-CySQwlFs.mjs → buttons-BbPn8OKA.mjs} +1 -1
  99. package/dist/client/{carousel-W75iYR0M.mjs → carousel-OlM7SyBs.mjs} +1 -1
  100. package/dist/client/{cart-Ca_DGWQq.mjs → cart-BKpG5jz6.mjs} +3 -3
  101. package/dist/client/{checkout-STgKTsNh.mjs → checkout-Dmmr6qoU.mjs} +3 -3
  102. package/dist/client/client.mjs +8699 -8320
  103. package/dist/client/{courseRegistration-DQI1cu1u.mjs → courseRegistration-CflZiqGk.mjs} +7 -7
  104. package/dist/client/{eventCalendar-BJrHpofg.mjs → eventCalendar-BvoLWcp-.mjs} +5 -5
  105. package/dist/client/{eventCombined-DPtqBHaH.mjs → eventCombined-DsrO8t_t.mjs} +2 -2
  106. package/dist/client/{eventDetails-Brt31CDo.mjs → eventDetails-C3hxgcJm.mjs} +3 -3
  107. package/dist/client/{eventListing-BrClHJOq.mjs → eventListing-C-hb237X.mjs} +2 -2
  108. package/dist/client/{eventRegistration-DxlNlVUC.mjs → eventRegistration-B0gyzDGi.mjs} +7 -7
  109. package/dist/client/{form-Vp5cGzDF.mjs → form-C_RUi6oJ.mjs} +2 -2
  110. package/dist/client/{headerSection-DL2xjRgW.mjs → headerSection-IKQiD2U0.mjs} +3 -3
  111. package/dist/client/hooks.mjs +4837 -4663
  112. package/dist/client/{locationMap-B0EjoXQS.mjs → locationMap-8ZBrMzRJ.mjs} +2 -2
  113. package/dist/client/{newsletterForm-BlV9VRlq.mjs → newsletterForm-CYk3ucwj.mjs} +2 -2
  114. package/dist/client/{pricing-DmRD7Tjx.mjs → pricing-B5GmvfIH.mjs} +1 -1
  115. package/dist/client/{productDetail-BLTQsY2f.mjs → productDetail-BjS2Dqzo.mjs} +3 -3
  116. package/dist/client/{productList-R8lsMpRs.mjs → productList-BOHvC8My.mjs} +3 -3
  117. package/dist/client/{propsDecoder-DgAshF92.mjs → propsDecoder-WS6UEJwZ.mjs} +7 -0
  118. package/dist/client/rendering/client.mjs +3607 -3281
  119. package/dist/client/rendering/islands.mjs +18 -18
  120. package/dist/client/rendering.mjs +8562 -8190
  121. package/dist/client/{shop-DWjyje1s.mjs → shop-CON03-wN.mjs} +6 -6
  122. package/dist/client/{shop-commerce-CSKCR87d.mjs → shop-commerce-DlqrFgH8.mjs} +5 -5
  123. package/dist/client/{shop-commerce-store-DxPnE-iN.mjs → shop-commerce-store-l74-Kne6.mjs} +1 -1
  124. package/dist/client/{shopShared-OOeAkFq7.mjs → shopShared-CQheEXSg.mjs} +2 -2
  125. package/dist/client/{useDiscountCodeUi-Bp6X7XgG.mjs → useDiscountCodeUi-v6OluyWl.mjs} +1 -1
  126. package/dist/client/{useEventFilters-B489x9TO.mjs → useEventFilters-BqSTcNOf.mjs} +3 -3
  127. package/dist/client/{usePolling-BKP66stL.mjs → usePolling-DMfADjIF.mjs} +2 -2
  128. package/dist/preview-next/before-render.mjs +10 -3
  129. package/dist/preview-next/client/runtime.mjs +4 -4
  130. package/dist/preview-next/middleware.mjs +10 -3
  131. package/dist/{previewAuthStore-ByPPZqmp.mjs → previewAuthStore-CfquDtTh.mjs} +10 -3
  132. package/dist/{sdk-runtime-C8whifOy.mjs → sdk-runtime-DWb08Xaz.mjs} +2 -2
  133. package/dist/{separator-CM2C5Axs.mjs → separator--6yjc914.mjs} +1 -1
  134. package/dist/server/components.mjs +9863 -9557
  135. package/dist/server/config-validation.mjs +4861 -4687
  136. package/dist/server/config.mjs +4861 -4687
  137. package/dist/server/data.mjs +4838 -4664
  138. package/dist/server/index.mjs +11 -4
  139. package/dist/server/next.mjs +8657 -8344
  140. package/dist/server/page-converter.mjs +4749 -4575
  141. package/dist/server/prebuild.mjs +1 -1
  142. package/dist/server/rendering/server.mjs +9808 -9586
  143. package/dist/server/rendering.mjs +9872 -9566
  144. package/dist/server/routing.mjs +4967 -4704
  145. package/dist/server/server.mjs +4845 -4664
  146. package/dist/server/theme-bridge.mjs +207 -114
  147. package/dist/server/theme.mjs +92 -91
  148. package/dist/styles/index.css +20 -0
  149. package/package.json +1 -1
@@ -0,0 +1,28 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { GeneratedIconLibrarySet } from '../../../../api/src/index';
3
+ export type GeneratedIconLibraryLoadState = Readonly<{
4
+ kind: 'loading';
5
+ sets: readonly GeneratedIconLibrarySet[];
6
+ nextCursor: string | null;
7
+ }> | Readonly<{
8
+ kind: 'loading_more';
9
+ sets: readonly GeneratedIconLibrarySet[];
10
+ nextCursor: string;
11
+ }> | Readonly<{
12
+ kind: 'ready';
13
+ sets: readonly GeneratedIconLibrarySet[];
14
+ nextCursor: string | null;
15
+ }> | Readonly<{
16
+ kind: 'failed';
17
+ sets: readonly GeneratedIconLibrarySet[];
18
+ nextCursor: string | null;
19
+ message: string;
20
+ }>;
21
+ export type GeneratedIconLibraryState = GeneratedIconLibraryLoadState & Readonly<{
22
+ loadMore: (() => void) | null;
23
+ }>;
24
+ export declare function GeneratedIconLibraryProvider({ value, children, }: {
25
+ value: GeneratedIconLibraryState;
26
+ children: ReactNode;
27
+ }): import("react").JSX.Element;
28
+ export declare function useGeneratedIconLibrary(): GeneratedIconLibraryState;
@@ -1 +1,3 @@
1
1
  export * from './IconPickerField';
2
+ export * from './GeneratedIconLibraryContext';
3
+ export * from './loaders';
@@ -0,0 +1,7 @@
1
+ import type { ApiClient } from '../../../../api/src/request';
2
+ import type { GeneratedIconSetListResponse } from '../../../../api/src/index';
3
+ export declare function loadGeneratedIconLibraryPage(apiClient: ApiClient, input: Readonly<{
4
+ siteId: string;
5
+ cursor?: string;
6
+ limit?: number;
7
+ }>): Promise<GeneratedIconSetListResponse>;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ export type CustomizeBackgroundCycleDirection = 'prev' | 'next';
3
+ export declare function CustomizeBackgroundControlRows({ modeLabel, valueLabel, valueAriaLabel, swatch, chooserOpen, chooser, canCycleMode, canCycleValue, onCycleMode, onCycleValue, onToggleChooser, }: Readonly<{
4
+ modeLabel: string;
5
+ valueLabel: string;
6
+ valueAriaLabel: string;
7
+ swatch: React.ReactNode;
8
+ chooserOpen: boolean;
9
+ chooser?: React.ReactNode;
10
+ canCycleMode: boolean;
11
+ canCycleValue: boolean;
12
+ onCycleMode: (direction: CustomizeBackgroundCycleDirection, event: React.MouseEvent) => void;
13
+ onCycleValue: (direction: CustomizeBackgroundCycleDirection, event: React.MouseEvent) => void;
14
+ onToggleChooser: (event: React.MouseEvent) => void;
15
+ }>): React.JSX.Element;
@@ -10,6 +10,7 @@ import type { PreviewEditorSidebarProps, PreviewTemplateData } from './PreviewEd
10
10
  import { type PreviewLinkedEntrySidebarSection } from './PreviewSidebarSection';
11
11
  type EntryEditorPanelProps = {
12
12
  siteId: string;
13
+ dashboardBaseUrl?: string | null;
13
14
  entryData: NonNullable<PreviewEditorSidebarProps['entryData']>;
14
15
  contentTypeSchema?: ContentTypeSchema | null;
15
16
  referenceContentTypeKeys: readonly string[];
@@ -32,5 +33,5 @@ type EntryEditorPanelProps = {
32
33
  onViewportWidthChange: (width: ViewportWidth) => void;
33
34
  onZoomChange: (zoom: ZoomLevel) => void;
34
35
  };
35
- export declare function EntryEditorPanel({ siteId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, theme, apiClient, bearerToken, supabaseUrl, entrySubrouteContext, metadataPanel, linkedEntrySection, mediaAssets, widgets, sdkConfig, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: EntryEditorPanelProps): React.JSX.Element;
36
+ export declare function EntryEditorPanel({ siteId, dashboardBaseUrl, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, theme, apiClient, bearerToken, supabaseUrl, entrySubrouteContext, metadataPanel, linkedEntrySection, mediaAssets, widgets, sdkConfig, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: EntryEditorPanelProps): React.JSX.Element;
36
37
  export {};
@@ -5,6 +5,7 @@ import type { FieldWidgetComponent } from "../../../../block-form/src/client/ind
5
5
  import type { SdkConfigForBlockPicker } from "../../../../editor-blocks/src/index";
6
6
  type EntrySlotBlockEditorPanelProps = {
7
7
  siteId: string;
8
+ dashboardBaseUrl?: string | null;
8
9
  typeKey: string;
9
10
  entryId: string;
10
11
  theme?: Theme | null;
@@ -15,5 +16,5 @@ type EntrySlotBlockEditorPanelProps = {
15
16
  mediaAssets?: MediaAssetIndexItem[];
16
17
  widgets: Record<string, FieldWidgetComponent>;
17
18
  };
18
- export declare function EntrySlotBlockEditorPanel({ siteId, typeKey, entryId, theme, apiClient, bearerToken, supabaseUrl, sdkConfig, mediaAssets, widgets, }: EntrySlotBlockEditorPanelProps): React.JSX.Element | null;
19
+ export declare function EntrySlotBlockEditorPanel({ siteId, dashboardBaseUrl, typeKey, entryId, theme, apiClient, bearerToken, supabaseUrl, sdkConfig, mediaAssets, widgets, }: EntrySlotBlockEditorPanelProps): React.JSX.Element | null;
19
20
  export {};
@@ -10,6 +10,7 @@ import { type PreviewLinkedEntrySidebarSection } from './PreviewSidebarSection';
10
10
  type PageBlockEditorPanelProps = {
11
11
  siteId: string;
12
12
  pageId: string;
13
+ dashboardBaseUrl?: string | null;
13
14
  theme?: Theme | null;
14
15
  apiClient: ApiClient;
15
16
  bearerToken?: string | null;
@@ -32,5 +33,5 @@ type PageBlockEditorPanelProps = {
32
33
  onViewportWidthChange: (width: ViewportWidth) => void;
33
34
  onZoomChange: (zoom: ZoomLevel) => void;
34
35
  };
35
- export declare function PageBlockEditorPanel({ siteId, pageId, theme, apiClient, bearerToken, supabaseUrl, blockItems, uiStoreForBlockEditor, blockEditorRef, onBlocksChange, metadataPanel, linkedEntrySection, designPanel, designOpenRequestId, sdkConfig, mediaAssets, bookingOfferingPresets, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: PageBlockEditorPanelProps): React.JSX.Element;
36
+ export declare function PageBlockEditorPanel({ siteId, pageId, dashboardBaseUrl, theme, apiClient, bearerToken, supabaseUrl, blockItems, uiStoreForBlockEditor, blockEditorRef, onBlocksChange, metadataPanel, linkedEntrySection, designPanel, designOpenRequestId, sdkConfig, mediaAssets, bookingOfferingPresets, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: PageBlockEditorPanelProps): React.JSX.Element;
36
37
  export {};
@@ -6,7 +6,7 @@ import type { EntrySubrouteContextData, BookingOfferingPresetSummary, MediaAsset
6
6
  import { type ContentTypeSchema } from "../../../../content-model/src/index";
7
7
  import { type ZoomLevel } from "../../../../content-editor/src/index";
8
8
  import type { ButtonPersonalityId } from "../../../../theme-core/src/buttons/index";
9
- import type { PaletteOverrides, PaletteVariantId } from "../../../../theme-core/src/palette/index";
9
+ import type { CuratedPaletteId, PaletteOverrides, RuntimePaletteState } from "../../../../theme-core/src/palette/index";
10
10
  import type { FooterSelectionContext, FooterLookId, HeaderLayoutId, HeaderSelectionContext, HeaderLookId, HeaderStyleId, TypographyPresetId } from "../../../../theme-core/src/site-styles/index";
11
11
  import type { PreviewDesignRow } from "./sidebarTabPreference";
12
12
  import type { ViewportMode, ViewportWidth } from "./PreviewViewportControls";
@@ -37,7 +37,8 @@ export type PreviewEditorSidebarProps = {
37
37
  themeSelectionUpdatedAt?: string | null;
38
38
  /** Persisted Style configurator selections (Phase C / E). */
39
39
  themeSelectionButtonPersonalityId?: ButtonPersonalityId | null;
40
- themeSelectionPaletteVariantId?: PaletteVariantId | null;
40
+ runtimePaletteState?: RuntimePaletteState | null;
41
+ themeSelectionPaletteVariantId?: CuratedPaletteId | null;
41
42
  themeSelectionPaletteOverrides?: PaletteOverrides | null;
42
43
  themeSelectionHeaderLayoutId?: HeaderLayoutId | null;
43
44
  themeSelectionHeaderStyleId?: HeaderStyleId | null;
@@ -71,4 +72,4 @@ export type PreviewEditorSidebarProps = {
71
72
  onViewportWidthChange: (width: ViewportWidth) => void;
72
73
  onZoomChange: (zoom: ZoomLevel) => void;
73
74
  };
74
- export declare function PreviewEditorSidebar({ surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, theme, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonPersonalityId, themeSelectionPaletteVariantId, themeSelectionPaletteOverrides, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionTypographyPresetId, themeSelectionTypographyBodyFontOverride, themeSelectionTypographyHeadingFontOverride, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, themeSelectionFooterContext, designRowRequest, apiClient, bearerToken, supabaseUrl, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, siteStyleAccess, activeTab, onTabChange, onClose, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: PreviewEditorSidebarProps): React.JSX.Element;
75
+ export declare function PreviewEditorSidebar({ surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, theme, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonPersonalityId, runtimePaletteState, themeSelectionPaletteVariantId, themeSelectionPaletteOverrides, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionTypographyPresetId, themeSelectionTypographyBodyFontOverride, themeSelectionTypographyHeadingFontOverride, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, themeSelectionFooterContext, designRowRequest, apiClient, bearerToken, supabaseUrl, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, siteStyleAccess, activeTab, onTabChange, onClose, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: PreviewEditorSidebarProps): React.JSX.Element;
@@ -1,7 +1,7 @@
1
1
  import React, { type ComponentProps, type ReactNode } from 'react';
2
2
  import { BlockApiProvider } from '../../../../blocks/src/client';
3
3
  import type { ButtonPersonalityId } from '../../../../theme-core/src/buttons/index';
4
- import type { PaletteOverrides, PaletteVariantId } from '../../../../theme-core/src/palette/index';
4
+ import type { CuratedPaletteId, PaletteOverrides } from '../../../../theme-core/src/palette/index';
5
5
  import type { FooterSelectionContext, FooterLookId, HeaderLayoutId, HeaderSelectionContext, HeaderLookId, HeaderStyleId, TypographyPresetId } from '../../../../theme-core/src/site-styles/index';
6
6
  import type { EntrySubrouteContextData, BookingOfferingPresetSummary, MediaAssetIndexItem, Theme } from '../../../../blocks/src/index';
7
7
  import type { ContentTypeSchema } from '../../../../content-model/src/index';
@@ -43,7 +43,8 @@ export type PreviewShellProps = {
43
43
  * and sparse overrides instead of falling back to the site style defaults.
44
44
  */
45
45
  themeSelectionButtonPersonalityId?: ButtonPersonalityId | null;
46
- themeSelectionPaletteVariantId?: PaletteVariantId | null;
46
+ runtimePaletteState?: import('../../../../theme-core/src/palette/index').RuntimePaletteState | null;
47
+ themeSelectionPaletteVariantId?: CuratedPaletteId | null;
47
48
  themeSelectionPaletteOverrides?: PaletteOverrides | null;
48
49
  themeSelectionHeaderLayoutId?: HeaderLayoutId | null;
49
50
  themeSelectionHeaderStyleId?: HeaderStyleId | null;
@@ -76,7 +77,7 @@ export type PreviewShellProps = {
76
77
  designEditorEligibility?: PreviewDesignEditorEligibility;
77
78
  baseFetch?: BaseFetch;
78
79
  };
79
- export declare function PreviewShell({ children, apiBaseUrl, blockApiConfig, siteId, siteSlug, editableId, previewSession, previewToken, dashboardBaseUrl, surfaceId, theme, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonPersonalityId, themeSelectionPaletteVariantId, themeSelectionPaletteOverrides, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionTypographyPresetId, themeSelectionTypographyBodyFontOverride, themeSelectionTypographyHeadingFontOverride, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, themeSelectionFooterContext, pageId, routeId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, initialStatus, initialBlocks, pageMetadata, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, supabaseUrl, themeRuntime, designEditorEligibility, baseFetch, }: PreviewShellProps): React.JSX.Element;
80
+ export declare function PreviewShell({ children, apiBaseUrl, blockApiConfig, siteId, siteSlug, editableId, previewSession, previewToken, dashboardBaseUrl, surfaceId, theme, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonPersonalityId, runtimePaletteState, themeSelectionPaletteVariantId, themeSelectionPaletteOverrides, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionTypographyPresetId, themeSelectionTypographyBodyFontOverride, themeSelectionTypographyHeadingFontOverride, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, themeSelectionFooterContext, pageId, routeId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, initialStatus, initialBlocks, pageMetadata, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, supabaseUrl, themeRuntime, designEditorEligibility, baseFetch, }: PreviewShellProps): React.JSX.Element;
80
81
  export declare function defaultDesignEditorEligibility(input: Readonly<{
81
82
  pageId: string | null;
82
83
  entryData?: PreviewContentEntryData | null;
@@ -1,7 +1,7 @@
1
1
  import React, { type ReactNode } from "react";
2
2
  import { type EntrySubrouteContextData, type BookingOfferingPresetSummary, type MediaAssetIndexItem, type Theme } from "../../../../blocks/src/index";
3
3
  import type { ButtonPersonalityId } from "../../../../theme-core/src/buttons/index";
4
- import type { PaletteOverrides, PaletteVariantId } from "../../../../theme-core/src/palette/index";
4
+ import type { CuratedPaletteId, PaletteOverrides } from "../../../../theme-core/src/palette/index";
5
5
  import type { FooterSelectionContext, HeaderSelectionContext, FooterLookId, HeaderLayoutId, HeaderLookId, HeaderStyleId, TypographyPresetId } from "../../../../theme-core/src/site-styles/index";
6
6
  import type { ContentTypeSchema } from "../../../../content-model/src/index";
7
7
  import type { ApiClient } from "../../../../api/src/request";
@@ -29,7 +29,8 @@ export type PreviewShellLayoutProps = {
29
29
  themeSelectionVersion?: number | null;
30
30
  themeSelectionUpdatedAt?: string | null;
31
31
  themeSelectionButtonPersonalityId?: ButtonPersonalityId | null;
32
- themeSelectionPaletteVariantId?: PaletteVariantId | null;
32
+ runtimePaletteState?: import('../../../../theme-core/src/palette/index').RuntimePaletteState | null;
33
+ themeSelectionPaletteVariantId?: CuratedPaletteId | null;
33
34
  themeSelectionPaletteOverrides?: PaletteOverrides | null;
34
35
  themeSelectionHeaderLayoutId?: HeaderLayoutId | null;
35
36
  themeSelectionHeaderStyleId?: HeaderStyleId | null;
@@ -51,4 +52,4 @@ export type PreviewShellLayoutProps = {
51
52
  themeRuntime?: PreviewThemeRuntime;
52
53
  siteStyleAccess?: SiteStyleAccess;
53
54
  };
54
- export declare function PreviewShellLayout({ children, theme, surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, apiClient, bearerToken, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonPersonalityId, themeSelectionPaletteVariantId, themeSelectionPaletteOverrides, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionTypographyPresetId, themeSelectionTypographyBodyFontOverride, themeSelectionTypographyHeadingFontOverride, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, themeSelectionFooterContext, supabaseUrl, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, themeRuntime, siteStyleAccess, }: PreviewShellLayoutProps): React.JSX.Element;
55
+ export declare function PreviewShellLayout({ children, theme, surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, apiClient, bearerToken, themeId, themeSelectionId, themeSelectionVersion, themeSelectionUpdatedAt, themeSelectionButtonPersonalityId, runtimePaletteState, themeSelectionPaletteVariantId, themeSelectionPaletteOverrides, themeSelectionHeaderLayoutId, themeSelectionHeaderStyleId, themeSelectionTypographyPresetId, themeSelectionTypographyBodyFontOverride, themeSelectionTypographyHeadingFontOverride, themeSelectionHeaderLookId, themeSelectionFooterLookId, themeSelectionHeaderContext, themeSelectionFooterContext, supabaseUrl, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, bookingOfferingPresets, themeRuntime, siteStyleAccess, }: PreviewShellLayoutProps): React.JSX.Element;
@@ -2,7 +2,7 @@ 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
4
  import type { ButtonPersonalityId } from '../../../../theme-core/src/buttons/index';
5
- import type { PaletteOverrides, PaletteVariantId } from '../../../../theme-core/src/palette/index';
5
+ import type { RuntimePaletteState } from '../../../../theme-core/src/palette/index';
6
6
  import type { BrandDisplayMode, FooterLayoutId, FooterLookId, HeaderNavFontSizePreference, HeaderNavTypographyPreference, FooterSelectionContext, HeaderLayoutId, HeaderLookId, HeaderSelectionContext, HeaderStyleId, LogoSizePolicy, SiteChromeBackgroundColorToken, SiteChromeBackgroundOverride, TypographyPresetId } from '../../../../theme-core/src/site-styles/index';
7
7
  import { headerNavFontSizeOptions, headerNavTypographyOptions } from '../../../../theme-core/src/site-styles/index';
8
8
  import { type StyleConfiguratorHistoryEntry } from './StyleConfigurator.state';
@@ -118,8 +118,7 @@ export type SiteChromeCustomizeProviderProps = Readonly<{
118
118
  selectionVersion?: number | null;
119
119
  selectionUpdatedAt?: string | null;
120
120
  buttonPersonalityId: ButtonPersonalityId | null;
121
- paletteVariantId: PaletteVariantId | null;
122
- paletteOverrides: PaletteOverrides | null;
121
+ runtimePaletteState?: RuntimePaletteState | null;
123
122
  headerLayoutId?: HeaderLayoutId | null;
124
123
  headerStyleId?: HeaderStyleId | null;
125
124
  typographyPresetId?: TypographyPresetId | null;
@@ -127,7 +126,7 @@ export type SiteChromeCustomizeProviderProps = Readonly<{
127
126
  typographyHeadingFontOverride?: string | null;
128
127
  headerLookId?: HeaderLookId | null;
129
128
  footerLookId?: FooterLookId | null;
130
- }>;
129
+ }> & Readonly<Record<string, unknown>>;
131
130
  headerSelectionContext?: Partial<HeaderSelectionContext>;
132
131
  footerSelectionContext?: Partial<FooterSelectionContext>;
133
132
  siteStyleAccess?: SiteStyleAccess;
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import type { ApiClient } from '../../../../api/src/request';
3
3
  import type { Theme } from '../../../../blocks/src/index';
4
4
  import { type ButtonPersonalityId } from '../../../../theme-core/src/buttons/index';
5
- import { type PaletteVariantId, type PaletteOverrides } from '../../../../theme-core/src/palette/index';
5
+ import { type CuratedPaletteId, type PaletteOverrides, type RuntimePaletteState } from '../../../../theme-core/src/palette/index';
6
6
  import { type FooterSelectionContext, type FooterLookId, type HeaderLayoutId, type HeaderLookId, type HeaderSelectionContext, type HeaderStyleId, type TypographyPresetId } from '../../../../theme-core/src/site-styles/index';
7
7
  import { type VisibleSiteStyleAccess } from './siteStyleAccess';
8
8
  import type { PreviewDesignRow } from './sidebarTabPreference';
@@ -19,8 +19,9 @@ export type StyleConfiguratorProps = Readonly<{
19
19
  selectionVersion?: number | null;
20
20
  selectionUpdatedAt?: string | null;
21
21
  buttonPersonalityId: ButtonPersonalityId | null;
22
- paletteVariantId: PaletteVariantId | null;
23
- paletteOverrides: PaletteOverrides | null;
22
+ runtimePaletteState?: RuntimePaletteState | null;
23
+ paletteVariantId?: CuratedPaletteId | null;
24
+ paletteOverrides?: PaletteOverrides | null;
24
25
  headerLayoutId?: HeaderLayoutId | null;
25
26
  headerStyleId?: HeaderStyleId | null;
26
27
  typographyPresetId?: TypographyPresetId | null;
@@ -28,7 +29,7 @@ export type StyleConfiguratorProps = Readonly<{
28
29
  typographyHeadingFontOverride?: string | null;
29
30
  headerLookId?: HeaderLookId | null;
30
31
  footerLookId?: FooterLookId | null;
31
- }>;
32
+ }> & Readonly<Record<string, unknown>>;
32
33
  headerSelectionContext?: Partial<HeaderSelectionContext>;
33
34
  footerSelectionContext?: Partial<FooterSelectionContext>;
34
35
  expandedRowRequest?: Readonly<{
@@ -5,14 +5,14 @@
5
5
  * switch.
6
6
  *
7
7
  * The configurator surfaces three site-level decisions (site style, button
8
- * personality, palette variant) plus optional sparse palette overrides. The
8
+ * personality, palette state). The
9
9
  * "base" snapshot is what the server has persisted; "previewed" is what the
10
10
  * preview pane is currently rendering. They diverge while the user is
11
11
  * picking and converge on apply-success.
12
12
  */
13
13
  import type { ButtonPersonalityId } from '../../../../theme-core/src/buttons/index';
14
14
  import type { Theme } from '../../../../blocks/src/index';
15
- import type { PaletteOverrides, PaletteVariantId } from '../../../../theme-core/src/palette/index';
15
+ import type { CuratedPaletteId, PaletteColors, PaletteMode, RuntimePaletteState, SitePaletteId, SitePaletteVersion } from '../../../../theme-core/src/palette/index';
16
16
  import { type FooterLookId, type HeaderLayoutId, type HeaderLookId, type HeaderStyleId, type TypographyPresetId } from '../../../../theme-core/src/site-styles/index';
17
17
  import type { SelectionFallbackWarning, SiteStyleId } from '../../../../theme-core/src/site-styles/previewCompiler';
18
18
  import { type EditorStagedSessionCapabilities, type EditorStagedSessionState } from '../../../../content-editor/src/editorTransactionState';
@@ -33,11 +33,7 @@ export type StyleConfiguratorExpandedRow = 'style' | 'header-layout' | 'header-s
33
33
  * `compileSiteThemeFromSelections`) so the layers stay clean: warnings are
34
34
  * compiler-emitted, notices are UI-level decisions the configurator makes.
35
35
  */
36
- export type StyleConfiguratorNotice = Readonly<{
37
- kind: 'palette-overrides-hidden';
38
- }> | Readonly<{
39
- kind: 'palette-overrides-restored';
40
- }>;
36
+ export type StyleConfiguratorNotice = never;
41
37
  type ThemeTypography = Theme['typography'];
42
38
  type BodyTypography = ThemeTypography['body'];
43
39
  type HeadingTypography = ThemeTypography['headings']['default'];
@@ -65,6 +61,25 @@ export type TypographyDraftPatch = Readonly<{
65
61
  kind: 'scale';
66
62
  scale: ThemeTypography['scale'];
67
63
  }>;
64
+ export type PaletteSelectionSnapshot = Readonly<{
65
+ kind: 'migrated-curated';
66
+ paletteId: CuratedPaletteId;
67
+ colors: PaletteColors;
68
+ mode: PaletteMode;
69
+ }> | Readonly<{
70
+ kind: 'migrated-site';
71
+ paletteId: SitePaletteId;
72
+ colors: PaletteColors;
73
+ mode: PaletteMode;
74
+ version: SitePaletteVersion;
75
+ }> | Readonly<{
76
+ kind: 'legacy-unmigrated';
77
+ colors: PaletteColors;
78
+ mode: PaletteMode;
79
+ }> | Readonly<{
80
+ kind: 'invalid';
81
+ reason: string;
82
+ }>;
68
83
  export type SelectionSnapshot = Readonly<{
69
84
  siteStyleId: SiteStyleId;
70
85
  selectionVersion: number;
@@ -74,11 +89,9 @@ export type SelectionSnapshot = Readonly<{
74
89
  headerLookId: HeaderLookId | null;
75
90
  footerLookId: FooterLookId | null;
76
91
  buttonPersonalityId: ButtonPersonalityId;
77
- paletteVariantId: PaletteVariantId;
78
- paletteOverrides: PaletteOverrides | null;
92
+ palette: PaletteSelectionSnapshot;
79
93
  typographySelection: TypographySelectionSnapshot;
80
94
  }>;
81
- type PaletteOverrideDrafts = Readonly<Partial<Record<PaletteVariantId, PaletteOverrides>>>;
82
95
  type StyleConfiguratorTargetKey = 'design:site-style';
83
96
  export type StyleConfiguratorHistoryEntry = Readonly<{
84
97
  kind: 'site-style-design';
@@ -101,11 +114,22 @@ export type StyleConfiguratorState = Readonly<{
101
114
  saveStatus: StyleConfiguratorSaveStatus;
102
115
  warnings: ReadonlyArray<SelectionFallbackWarning>;
103
116
  notices: ReadonlyArray<StyleConfiguratorNotice>;
104
- paletteOverrideDrafts: PaletteOverrideDrafts;
117
+ paletteDrafts: Readonly<Partial<Record<CuratedPaletteId, Readonly<{
118
+ colors: PaletteColors;
119
+ mode: PaletteMode;
120
+ }>>>>;
105
121
  expandedRow: StyleConfiguratorExpandedRow;
106
122
  stagedSession: StyleConfiguratorStagedSession;
107
123
  }>;
124
+ export type PaletteMutationCapability = Readonly<{
125
+ kind: 'editable';
126
+ }> | Readonly<{
127
+ kind: 'blocked';
128
+ reason: 'invalid-palette';
129
+ message: string;
130
+ }>;
108
131
  export declare function createStyleConfiguratorState(base: SelectionSnapshot): StyleConfiguratorState;
132
+ export declare function paletteMutationCapability(state: StyleConfiguratorState): PaletteMutationCapability;
109
133
  export declare function openRow(state: StyleConfiguratorState, row: Exclude<StyleConfiguratorExpandedRow, null>): StyleConfiguratorState;
110
134
  /**
111
135
  * True iff the user has previewed a change that hasn't been applied yet.
@@ -124,8 +148,12 @@ export declare function previewTypographyPreset(state: StyleConfiguratorState, t
124
148
  export declare function setCustomTypography(state: StyleConfiguratorState, typography: ThemeTypography): StyleConfiguratorState;
125
149
  export declare function applyTypographyDraftPatch(state: StyleConfiguratorState, currentTypography: ThemeTypography, patch: TypographyDraftPatch): StyleConfiguratorState;
126
150
  export declare function resetTypographyToSaved(state: StyleConfiguratorState): StyleConfiguratorState;
127
- export declare function previewPaletteVariant(state: StyleConfiguratorState, paletteVariantId: PaletteVariantId): StyleConfiguratorState;
128
- export declare function setPaletteOverrides(state: StyleConfiguratorState, paletteOverrides: PaletteOverrides | null): StyleConfiguratorState;
151
+ export declare function previewCuratedPalette(state: StyleConfiguratorState, palette: Readonly<{
152
+ paletteId: CuratedPaletteId;
153
+ colors: PaletteColors;
154
+ mode: PaletteMode;
155
+ }>): StyleConfiguratorState;
156
+ export declare function setPaletteColors(state: StyleConfiguratorState, colors: PaletteColors): StyleConfiguratorState;
129
157
  /**
130
158
  * Records the post-compile resolved selection + any fallback warnings.
131
159
  * Used after `compileSiteThemeFromSelections` runs against a new site style:
@@ -133,12 +161,9 @@ export declare function setPaletteOverrides(state: StyleConfiguratorState, palet
133
161
  * previous selection is not offered for the new style, or a different palette
134
162
  * if the persisted palette ID is no longer known.
135
163
  *
136
- * Palette overrides are scoped by palette variant. If the resolver moves the
137
- * preview to a different palette, the current sparse overrides are stashed
138
- * under the previous palette ID and any draft for the new palette is restored.
139
164
  */
140
165
  export declare function applyResolvedSelections(state: StyleConfiguratorState, input: Readonly<{
141
- resolved: Pick<SelectionSnapshot, 'buttonPersonalityId' | 'paletteVariantId' | 'headerLayoutId' | 'headerStyleId' | 'headerLookId'> & TypographySelectionFlatFields;
166
+ resolved: Pick<SelectionSnapshot, 'buttonPersonalityId' | 'headerLayoutId' | 'headerStyleId' | 'headerLookId'> & TypographySelectionFlatFields;
142
167
  typographySelection?: TypographySelectionSnapshot;
143
168
  warnings: ReadonlyArray<SelectionFallbackWarning>;
144
169
  }>): StyleConfiguratorState;
@@ -165,5 +190,6 @@ export declare function typographySelectionSnapshotFromFlat(input: Readonly<{
165
190
  export declare function typographySelectionFlatFields(selection: TypographySelectionSnapshot): TypographySelectionFlatFields;
166
191
  export declare function customTypographyForSelection(selection: TypographySelectionSnapshot): ThemeTypography | null;
167
192
  export declare function typographySelectionsEqual(a: TypographySelectionSnapshot, b: TypographySelectionSnapshot): boolean;
168
- export declare function paletteOverridesEqual(a: PaletteOverrides | null, b: PaletteOverrides | null): boolean;
193
+ export declare function paletteSelectionSnapshotFromRuntime(runtime: RuntimePaletteState | null | undefined): PaletteSelectionSnapshot;
194
+ export declare function paletteSelectionSnapshotsEqual(left: PaletteSelectionSnapshot, right: PaletteSelectionSnapshot): boolean;
169
195
  export {};
@@ -1,14 +1,13 @@
1
1
  import type { Theme } from '../../../../blocks/src/index';
2
2
  import type { ButtonPersonalityId } from '../../../../theme-core/src/buttons/index';
3
- import type { PaletteOverrides, PaletteVariantId } from '../../../../theme-core/src/palette/index';
3
+ import { type CuratedPaletteId } from '../../../../theme-core/src/palette/index';
4
4
  import type { FooterLookId, FooterSelectionContext, HeaderLayoutId, HeaderLookId, HeaderSelectionContext, HeaderStyleId, TypographyPresetId } from '../../../../theme-core/src/site-styles/index';
5
5
  import { type CuratedSiteStyle, type CompiledTypographySelection, type SelectionFallbackWarning, type SiteStyleId } from '../../../../theme-core/src/site-styles/previewCompiler';
6
- import type { TypographySelectionSnapshot } from './StyleConfigurator.state';
6
+ import type { PaletteSelectionSnapshot, TypographySelectionSnapshot } from './StyleConfigurator.state';
7
7
  export type SiteStylePreviewSelection = Readonly<{
8
8
  siteStyleId: SiteStyleId;
9
9
  buttonPersonalityId: ButtonPersonalityId;
10
- paletteVariantId: PaletteVariantId;
11
- paletteOverrides: PaletteOverrides | null;
10
+ palette: PaletteSelectionSnapshot;
12
11
  typographySelection?: TypographySelectionSnapshot;
13
12
  headerLayoutId?: HeaderLayoutId | null;
14
13
  headerStyleId?: HeaderStyleId | null;
@@ -23,7 +22,7 @@ export type SiteStylePreviewPlan = Readonly<{
23
22
  themeOverlay: Theme;
24
23
  resolvedSelections: Readonly<{
25
24
  buttonPersonalityId: ButtonPersonalityId;
26
- paletteVariantId: PaletteVariantId;
25
+ paletteVariantId: CuratedPaletteId;
27
26
  typographySelection: CompiledTypographySelection['resolvedSelection'];
28
27
  typographyPresetId: TypographyPresetId | null;
29
28
  typographyBodyFontOverride: string | null;
@@ -1,9 +1,30 @@
1
1
  import type { APIEndpoints } from '../../../../api/src/index';
2
+ import { type PaletteCommand } from '../../../../theme-core/src/palette/index';
2
3
  import { type SelectionSnapshot } from './StyleConfigurator.state';
3
4
  export type ApplySiteStyleSelectionBody = NonNullable<APIEndpoints['applySiteStyleSelection']['body']>;
5
+ export type PaletteApplyCommandPlan = Readonly<{
6
+ ok: true;
7
+ command: PaletteCommand;
8
+ }> | Readonly<{
9
+ ok: false;
10
+ error: 'invalid-palette-state' | 'curated-palette-missing';
11
+ }>;
12
+ export declare function planPaletteApplyCommand(input: Readonly<{
13
+ base: SelectionSnapshot;
14
+ previewed: SelectionSnapshot;
15
+ }>): PaletteApplyCommandPlan;
16
+ export type ApplySiteStyleSelectionBodyBuildResult = Readonly<{
17
+ ok: true;
18
+ body: ApplySiteStyleSelectionBody;
19
+ }> | Readonly<{
20
+ ok: false;
21
+ error: Extract<PaletteApplyCommandPlan, {
22
+ ok: false;
23
+ }>['error'];
24
+ }>;
4
25
  export declare function buildApplySiteStyleSelectionBody(input: Readonly<{
5
26
  base: SelectionSnapshot;
6
27
  previewed: SelectionSnapshot;
7
28
  selectionId?: string | null;
8
- }>): ApplySiteStyleSelectionBody;
29
+ }>): ApplySiteStyleSelectionBodyBuildResult;
9
30
  export declare function selectionSnapshotFromApplySiteStyleSelectionResponse(saved: NonNullable<APIEndpoints['applySiteStyleSelection']['response']>, fallback: SelectionSnapshot): SelectionSnapshot;
@@ -1,16 +1,17 @@
1
1
  import type { Theme } from '../../../../blocks/src/index';
2
2
  import type { ButtonPersonalityId } from '../../../../theme-core/src/buttons/index';
3
- import type { PaletteOverrides, PaletteVariantId } from '../../../../theme-core/src/palette/index';
3
+ import { type CuratedPaletteId, type PaletteOverrides, type RuntimePaletteState } from '../../../../theme-core/src/palette/index';
4
4
  import type { FooterLookId, FooterSelectionContext, HeaderLayoutId, HeaderLookId, HeaderSelectionContext, HeaderStyleId, TypographyPresetId } from '../../../../theme-core/src/site-styles/index';
5
5
  import type { SelectionSnapshot } from './StyleConfigurator.state';
6
- export declare function resolveStyleConfiguratorInitialSnapshot(input: Readonly<{
6
+ type StyleConfiguratorSnapshotInput = Readonly<{
7
7
  theme?: Theme | null;
8
8
  initialSelections: Readonly<{
9
9
  selectionVersion?: number | null;
10
10
  selectionUpdatedAt?: string | null;
11
11
  buttonPersonalityId: ButtonPersonalityId | null;
12
- paletteVariantId: PaletteVariantId | null;
13
- paletteOverrides: PaletteOverrides | null;
12
+ runtimePaletteState?: RuntimePaletteState | null;
13
+ paletteVariantId?: CuratedPaletteId | null;
14
+ paletteOverrides?: PaletteOverrides | null;
14
15
  headerLayoutId?: HeaderLayoutId | null;
15
16
  headerStyleId?: HeaderStyleId | null;
16
17
  typographyPresetId?: TypographyPresetId | null;
@@ -21,4 +22,11 @@ export declare function resolveStyleConfiguratorInitialSnapshot(input: Readonly<
21
22
  }>;
22
23
  headerSelectionContext?: Partial<HeaderSelectionContext>;
23
24
  footerSelectionContext?: Partial<FooterSelectionContext>;
25
+ }>;
26
+ export declare function resolveStyleConfiguratorInitialSnapshot(input: Readonly<{
27
+ theme?: Theme | null;
28
+ initialSelections: StyleConfiguratorSnapshotInput['initialSelections'];
29
+ headerSelectionContext?: Partial<HeaderSelectionContext>;
30
+ footerSelectionContext?: Partial<FooterSelectionContext>;
24
31
  }>): SelectionSnapshot | null;
32
+ export {};
@@ -9,6 +9,7 @@ import type { SdkEventPricing, SdkEventPricingInput, SdkEventTicketTypeInput } f
9
9
  import type { SdkEventPaymentTerms, SdkEventPaymentTermsInput } from '../../../../api/src/sdk-event-payment-terms';
10
10
  import type { SdkEventUpsertBody } from '../../../../api/src/sdk-event-upsert';
11
11
  import type { SdkManagementEventSeries } from '../../../../api/src/sdkContracts';
12
+ import type { PaletteSelection } from '../../../../theme-core/src/palette/index';
12
13
  import type { Theme } from '../../contracts';
13
14
  export interface ManagementClientConfig {
14
15
  /**
@@ -522,6 +523,8 @@ export interface ThemeStyleSelectionApplyResult {
522
523
  buttonPersonalityId: string;
523
524
  paletteVariantId: string;
524
525
  paletteOverrides: Record<string, string> | null;
526
+ activePaletteSelection: PaletteSelection;
527
+ activeSitePaletteVersion: number | null;
525
528
  headerLookId: string | null;
526
529
  headerLayoutId: string;
527
530
  headerStyleId: string;
@@ -65,7 +65,6 @@ export type BlockIconValue = {
65
65
  kind: 'generated';
66
66
  setId: Brand<string, 'GeneratedIconSetId'>;
67
67
  assetId: Brand<string, 'GeneratedIconAssetId'>;
68
- semanticFallbackIconId: SemanticIconId;
69
68
  styleGuideVersionId: Brand<string, 'SiteIconStyleGuideVersionId'>;
70
69
  };
71
70
  export type FeatureCardIconTreatment = 'plain' | 'soft-badge' | 'utility-badge';
@@ -2,6 +2,7 @@ import type { AddressedLocationValue, BusinessAddress, BookingFlexibleBalanceCon
2
2
  import type { SdkRuntimePageSurfaceSubject as ApiSdkRuntimePageSurfaceSubject } from '../../../api/src/index';
3
3
  import type { Media, MediaAssetIndexItem, SiteFooterContent, SiteHeaderContent, Theme } from '../contracts';
4
4
  import type { CompiledBoundaryRuntime } from '../../../theme-core/src/site-styles/index';
5
+ import type { PaletteOverrides, RuntimePaletteState } from '../../../theme-core/src/palette/index';
5
6
  import type { BlockFieldConfig as SdkBlockFieldConfig, BlockFieldOptionsMap as SdkBlockFieldOptionsMap, ContentConfig as SdkContentConfig, ContainerOptionsConfig as SdkContainerOptionsConfig, FieldSelectOption as SdkFieldSelectOption, SdkCustomBlock, SdkThemeConfig, SdkThemePalette, SectionBackground as SdkSectionBackground, SectionOptionsConfig as SdkSectionOptionsConfig, SiteStyleConfig as SdkSiteStyleConfig } from '../config/types';
6
7
  export type PublicTeamMemberSummary = {
7
8
  id: string;
@@ -314,10 +315,12 @@ export type SiteResponse = {
314
315
  * Persisted design selections. Optional so legacy
315
316
  * payloads without these columns still satisfy the type — consumers fall
316
317
  * back to the site style's defaults when null.
317
- */
318
+ */
318
319
  selectionButtonPersonalityId?: string | null;
320
+ runtimePaletteState?: RuntimePaletteState | null;
321
+ /** Temporary legacy compatibility projection for stale runtime clients. */
319
322
  selectionPaletteVariantId?: string | null;
320
- selectionPaletteOverrides?: Record<string, string> | null;
323
+ selectionPaletteOverrides?: PaletteOverrides | null;
321
324
  selectionHeaderLayoutId?: string | null;
322
325
  selectionHeaderStyleId?: string | null;
323
326
  selectionTypographyPresetId?: string | null;
@@ -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.103.0";
11
+ export declare const SDK_VERSION = "0.104.0";