@riverbankcms/sdk 0.103.0 → 0.104.1
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.
- package/dist/{PreviewEditorSidebar-DkNpCPja.mjs → PreviewEditorSidebar-CmaPXdKu.mjs} +148 -128
- package/dist/{PreviewEditorUI-DeNKtqk3.mjs → PreviewEditorUI-C5xRTh2b.mjs} +3 -3
- package/dist/{PreviewQueryProvider-ZF6TXq5Q.mjs → PreviewQueryProvider-CStABBUh.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-5bCsXK2y.mjs → SdkPreviewModeRuntime-Eks51NcN.mjs} +1204 -566
- package/dist/{SiteChromeCustomizeContext-CO1sTK_W.mjs → SiteChromeCustomizeContext-Bt8zb3qu.mjs} +5330 -4533
- package/dist/_dts/api/src/bookingVerticals.d.ts +64 -1
- package/dist/_dts/api/src/contentRuntime.d.ts +6 -3
- package/dist/_dts/api/src/endpoints.d.ts +10 -3
- package/dist/_dts/api/src/index.d.ts +1 -1
- package/dist/_dts/api/src/siteIcons.d.ts +39 -43
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -3
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +36 -7
- package/dist/_dts/block-form/src/widgets/SliderField/SliderField.d.ts +3 -3
- package/dist/_dts/block-form/src/widgets/SliderField/sliderValue.d.ts +36 -0
- package/dist/_dts/block-form/src/widgets/utils/readNumericUiConfig.d.ts +3 -0
- package/dist/_dts/blocks/src/index.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/feature-card-icons.d.ts +29 -29
- package/dist/_dts/blocks/src/system/blocks/feature-cards.d.ts +1 -0
- package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +135 -0
- package/dist/_dts/blocks/src/system/icons/generatedAssets.d.ts +28 -0
- package/dist/_dts/blocks/src/system/icons/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/icons/value.d.ts +3 -6
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +240 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/feature-card-icon.d.ts +1 -0
- package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +2 -0
- package/dist/_dts/content-editor/src/ui/stores/generatedIconAssetsStore.d.ts +9 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +208 -0
- package/dist/_dts/editor/src/index.d.ts +3 -1
- package/dist/_dts/editor/src/primitives/rich-text/RichTextEditorSurface.d.ts +14 -6
- package/dist/_dts/editor/src/primitives/rich-text/RichTextToolbar.d.ts +23 -4
- package/dist/_dts/editor/src/primitives/rich-text/config.d.ts +6 -0
- package/dist/_dts/editor/src/primitives/rich-text/extensions/RichTextLink.d.ts +1 -0
- package/dist/_dts/editor/src/primitives/rich-text/paste.d.ts +10 -0
- package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +7 -0
- package/dist/_dts/editor-blocks/src/BlockForm.d.ts +2 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +4 -4
- package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +2 -3
- package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +4 -4
- package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +4 -4
- package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +3 -3
- package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +2 -3
- package/dist/_dts/editor-blocks/src/block-editor/blockHeaderActionPlan.d.ts +1 -5
- package/dist/_dts/editor-blocks/src/block-editor/featureCardIconActions.d.ts +25 -19
- package/dist/_dts/editor-blocks/src/block-editor/generatedIconApplyCoordination.d.ts +32 -0
- package/dist/_dts/editor-blocks/src/widgets/icon-picker/GeneratedIconLibraryContext.d.ts +28 -0
- package/dist/_dts/editor-blocks/src/widgets/icon-picker/index.d.ts +2 -0
- package/dist/_dts/editor-blocks/src/widgets/icon-picker/loaders.d.ts +7 -0
- package/dist/_dts/preview-next/src/client/preview/CustomizeBackgroundControlRows.d.ts +15 -0
- package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +4 -3
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +4 -3
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +4 -3
- package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +3 -4
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +5 -4
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +44 -18
- package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +4 -5
- package/dist/_dts/preview-next/src/client/preview/styleConfiguratorApplyPayload.d.ts +22 -1
- package/dist/_dts/preview-next/src/client/preview/styleConfiguratorSnapshot.d.ts +12 -4
- package/dist/_dts/sdk/src/client/management/types.d.ts +3 -0
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +0 -1
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -2
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +9 -9
- package/dist/_dts/theme-core/src/navigation/types.d.ts +2 -0
- package/dist/_dts/theme-core/src/palette/colors.d.ts +84 -0
- package/dist/_dts/theme-core/src/palette/{variants → curated}/brand-led.d.ts +12 -24
- package/dist/_dts/theme-core/src/palette/{variants → curated}/high-contrast.d.ts +9 -18
- package/dist/_dts/theme-core/src/palette/{variants → curated}/index.d.ts +67 -119
- package/dist/_dts/theme-core/src/palette/{variants → curated}/soft-natural.d.ts +12 -24
- package/dist/_dts/theme-core/src/palette/{variants → curated}/types.d.ts +50 -60
- package/dist/_dts/theme-core/src/palette/{variants → curated}/warm-dark.d.ts +6 -12
- package/dist/_dts/theme-core/src/palette/{variants → curated}/warm-neutral.d.ts +12 -24
- package/dist/_dts/theme-core/src/palette/editorState.d.ts +45 -0
- package/dist/_dts/theme-core/src/palette/index.d.ts +25 -14
- package/dist/_dts/theme-core/src/palette/legacyRuntimeProjection.d.ts +55 -0
- package/dist/_dts/theme-core/src/palette/legacySelection.d.ts +34 -0
- package/dist/_dts/theme-core/src/palette/libraryModel.d.ts +58 -0
- package/dist/_dts/theme-core/src/palette/paletteCompatibilityTransition.d.ts +232 -0
- package/dist/_dts/theme-core/src/palette/persistenceReadSource.d.ts +118 -0
- package/dist/_dts/theme-core/src/palette/resolveSelection.d.ts +50 -0
- package/dist/_dts/theme-core/src/palette/selection.d.ts +72 -0
- package/dist/_dts/theme-core/src/palette/sitePalettePersistence.d.ts +34 -0
- package/dist/_dts/theme-core/src/palette/themePaletteCompatibility.d.ts +58 -0
- package/dist/_dts/theme-core/src/schema.d.ts +9 -0
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +22 -22
- package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +31 -9
- package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +22 -16
- package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +6 -5
- package/dist/_dts/theme-core/src/site-styles/themeParity.d.ts +21 -0
- package/dist/_dts/ui/src/palette/PaletteTokenEditor.d.ts +2 -1
- package/dist/cli/index.mjs +7805 -7449
- package/dist/client/{DiscountCodeDisclosure-ChVZwVtS.mjs → DiscountCodeDisclosure-Dit2aItR.mjs} +1 -1
- package/dist/client/{EventCombined.client-PZtXbH6R.mjs → EventCombined.client-BnREyCjf.mjs} +3 -3
- package/dist/client/{EventListing.client-C4AMTXec.mjs → EventListing.client-0uHld51x.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-B0w8_i0u.mjs → LeafletStaticMap-DJcvSfmj.mjs} +1 -1
- package/dist/client/{MagicLinkForm-DF0ZGhIu.mjs → MagicLinkForm-EAsIktfw.mjs} +2 -2
- package/dist/client/{StepIndicator-PccQ89Ct.mjs → StepIndicator-CRR17tYI.mjs} +2 -2
- package/dist/client/{accordion-CTNWT1lk.mjs → accordion-B47HIuuH.mjs} +1 -1
- package/dist/client/{bookingForm-DYixwPqP.mjs → bookingForm-I1E-8F9P.mjs} +6 -6
- package/dist/client/{buttons-CySQwlFs.mjs → buttons-BbPn8OKA.mjs} +1 -1
- package/dist/client/{carousel-W75iYR0M.mjs → carousel-OlM7SyBs.mjs} +1 -1
- package/dist/client/{cart-Ca_DGWQq.mjs → cart-BKpG5jz6.mjs} +3 -3
- package/dist/client/{checkout-STgKTsNh.mjs → checkout-Dmmr6qoU.mjs} +3 -3
- package/dist/client/client.mjs +8706 -8320
- package/dist/client/{courseRegistration-DQI1cu1u.mjs → courseRegistration-CflZiqGk.mjs} +7 -7
- package/dist/client/{eventCalendar-BJrHpofg.mjs → eventCalendar-BvoLWcp-.mjs} +5 -5
- package/dist/client/{eventCombined-DPtqBHaH.mjs → eventCombined-DsrO8t_t.mjs} +2 -2
- package/dist/client/{eventDetails-Brt31CDo.mjs → eventDetails-C3hxgcJm.mjs} +3 -3
- package/dist/client/{eventListing-BrClHJOq.mjs → eventListing-C-hb237X.mjs} +2 -2
- package/dist/client/{eventRegistration-DxlNlVUC.mjs → eventRegistration-B0gyzDGi.mjs} +7 -7
- package/dist/client/{form-Vp5cGzDF.mjs → form-C_RUi6oJ.mjs} +2 -2
- package/dist/client/{headerSection-DL2xjRgW.mjs → headerSection-IKQiD2U0.mjs} +3 -3
- package/dist/client/hooks.mjs +4845 -4663
- package/dist/client/{locationMap-B0EjoXQS.mjs → locationMap-8ZBrMzRJ.mjs} +2 -2
- package/dist/client/{newsletterForm-BlV9VRlq.mjs → newsletterForm-CYk3ucwj.mjs} +2 -2
- package/dist/client/{pricing-DmRD7Tjx.mjs → pricing-B5GmvfIH.mjs} +1 -1
- package/dist/client/{productDetail-BLTQsY2f.mjs → productDetail-BjS2Dqzo.mjs} +3 -3
- package/dist/client/{productList-R8lsMpRs.mjs → productList-BOHvC8My.mjs} +3 -3
- package/dist/client/{propsDecoder-DgAshF92.mjs → propsDecoder-WS6UEJwZ.mjs} +7 -0
- package/dist/client/rendering/client.mjs +3606 -3281
- package/dist/client/rendering/islands.mjs +18 -18
- package/dist/client/rendering.mjs +8569 -8190
- package/dist/client/{shop-DWjyje1s.mjs → shop-CON03-wN.mjs} +6 -6
- package/dist/client/{shop-commerce-CSKCR87d.mjs → shop-commerce-DlqrFgH8.mjs} +5 -5
- package/dist/client/{shop-commerce-store-DxPnE-iN.mjs → shop-commerce-store-l74-Kne6.mjs} +1 -1
- package/dist/client/{shopShared-OOeAkFq7.mjs → shopShared-CQheEXSg.mjs} +2 -2
- package/dist/client/{useDiscountCodeUi-Bp6X7XgG.mjs → useDiscountCodeUi-v6OluyWl.mjs} +1 -1
- package/dist/client/{useEventFilters-B489x9TO.mjs → useEventFilters-BqSTcNOf.mjs} +3 -3
- package/dist/client/{usePolling-BKP66stL.mjs → usePolling-DMfADjIF.mjs} +2 -2
- package/dist/preview-next/before-render.mjs +10 -3
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/middleware.mjs +10 -3
- package/dist/{previewAuthStore-ByPPZqmp.mjs → previewAuthStore-CfquDtTh.mjs} +10 -3
- package/dist/{sdk-runtime-C8whifOy.mjs → sdk-runtime-BUmJ0DaT.mjs} +2 -2
- package/dist/{separator-CM2C5Axs.mjs → separator-Dd-JYok7.mjs} +1 -1
- package/dist/server/components.mjs +9871 -9557
- package/dist/server/config-validation.mjs +4869 -4687
- package/dist/server/config.mjs +4869 -4687
- package/dist/server/data.mjs +4846 -4664
- package/dist/server/index.mjs +11 -4
- package/dist/server/next.mjs +8665 -8344
- package/dist/server/page-converter.mjs +4749 -4575
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +9816 -9586
- package/dist/server/rendering.mjs +9880 -9566
- package/dist/server/routing.mjs +4975 -4704
- package/dist/server/server.mjs +4819 -4630
- package/dist/server/theme-bridge.mjs +207 -114
- package/dist/server/theme.mjs +92 -91
- package/dist/styles/index.css +20 -0
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Warm Editorial, Modern Wellness, Calm Studio site styles.
|
|
4
4
|
*/
|
|
5
5
|
export declare const warmNeutralClay: Readonly<{
|
|
6
|
-
id: import("../../../../blocks/src/index").
|
|
6
|
+
id: import("../../../../blocks/src/index").CuratedPaletteId<"warm-neutral-clay">;
|
|
7
7
|
name: string;
|
|
8
8
|
description: string;
|
|
9
9
|
tags: Readonly<Partial<Readonly<{
|
|
@@ -12,14 +12,11 @@ export declare const warmNeutralClay: Readonly<{
|
|
|
12
12
|
motion: import("../../../../blocks/src/index").StyleMotion;
|
|
13
13
|
era: import("../../../../blocks/src/index").StyleEra;
|
|
14
14
|
}>>>;
|
|
15
|
-
mode: "
|
|
16
|
-
colors:
|
|
17
|
-
name: import("../../../../blocks/src/index").PaletteTokenName;
|
|
18
|
-
hex: string;
|
|
19
|
-
}>[];
|
|
15
|
+
mode: import("../../../../blocks/src/index").PaletteMode;
|
|
16
|
+
colors: import("../../../../blocks/src/index").PaletteColors;
|
|
20
17
|
}>;
|
|
21
18
|
export declare const warmNeutralCream: Readonly<{
|
|
22
|
-
id: import("../../../../blocks/src/index").
|
|
19
|
+
id: import("../../../../blocks/src/index").CuratedPaletteId<"warm-neutral-cream">;
|
|
23
20
|
name: string;
|
|
24
21
|
description: string;
|
|
25
22
|
tags: Readonly<Partial<Readonly<{
|
|
@@ -28,14 +25,11 @@ export declare const warmNeutralCream: Readonly<{
|
|
|
28
25
|
motion: import("../../../../blocks/src/index").StyleMotion;
|
|
29
26
|
era: import("../../../../blocks/src/index").StyleEra;
|
|
30
27
|
}>>>;
|
|
31
|
-
mode: "
|
|
32
|
-
colors:
|
|
33
|
-
name: import("../../../../blocks/src/index").PaletteTokenName;
|
|
34
|
-
hex: string;
|
|
35
|
-
}>[];
|
|
28
|
+
mode: import("../../../../blocks/src/index").PaletteMode;
|
|
29
|
+
colors: import("../../../../blocks/src/index").PaletteColors;
|
|
36
30
|
}>;
|
|
37
31
|
export declare const warmNeutralSoftEarth: Readonly<{
|
|
38
|
-
id: import("../../../../blocks/src/index").
|
|
32
|
+
id: import("../../../../blocks/src/index").CuratedPaletteId<"warm-neutral-soft-earth">;
|
|
39
33
|
name: string;
|
|
40
34
|
description: string;
|
|
41
35
|
tags: Readonly<Partial<Readonly<{
|
|
@@ -44,14 +38,11 @@ export declare const warmNeutralSoftEarth: Readonly<{
|
|
|
44
38
|
motion: import("../../../../blocks/src/index").StyleMotion;
|
|
45
39
|
era: import("../../../../blocks/src/index").StyleEra;
|
|
46
40
|
}>>>;
|
|
47
|
-
mode: "
|
|
48
|
-
colors:
|
|
49
|
-
name: import("../../../../blocks/src/index").PaletteTokenName;
|
|
50
|
-
hex: string;
|
|
51
|
-
}>[];
|
|
41
|
+
mode: import("../../../../blocks/src/index").PaletteMode;
|
|
42
|
+
colors: import("../../../../blocks/src/index").PaletteColors;
|
|
52
43
|
}>;
|
|
53
44
|
export declare const warmNeutralForest: Readonly<{
|
|
54
|
-
id: import("../../../../blocks/src/index").
|
|
45
|
+
id: import("../../../../blocks/src/index").CuratedPaletteId<"warm-neutral-forest">;
|
|
55
46
|
name: string;
|
|
56
47
|
description: string;
|
|
57
48
|
tags: Readonly<Partial<Readonly<{
|
|
@@ -60,9 +51,6 @@ export declare const warmNeutralForest: Readonly<{
|
|
|
60
51
|
motion: import("../../../../blocks/src/index").StyleMotion;
|
|
61
52
|
era: import("../../../../blocks/src/index").StyleEra;
|
|
62
53
|
}>>>;
|
|
63
|
-
mode: "
|
|
64
|
-
colors:
|
|
65
|
-
name: import("../../../../blocks/src/index").PaletteTokenName;
|
|
66
|
-
hex: string;
|
|
67
|
-
}>[];
|
|
54
|
+
mode: import("../../../../blocks/src/index").PaletteMode;
|
|
55
|
+
colors: import("../../../../blocks/src/index").PaletteColors;
|
|
68
56
|
}>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { PaletteColors, PaletteMode } from './colors';
|
|
2
|
+
import type { CuratedPaletteId } from './curated/types';
|
|
3
|
+
import type { ResolvedPaletteSelection } from './resolveSelection';
|
|
4
|
+
import type { PaletteCommand, SitePaletteId, SitePaletteVersion } from './selection';
|
|
5
|
+
export type PalettePreview = Readonly<{
|
|
6
|
+
kind: 'clean';
|
|
7
|
+
resolved: ResolvedPaletteSelection;
|
|
8
|
+
}> | Readonly<{
|
|
9
|
+
kind: 'selected';
|
|
10
|
+
resolved: ResolvedPaletteSelection;
|
|
11
|
+
}> | Readonly<{
|
|
12
|
+
kind: 'edited-curated';
|
|
13
|
+
sourcePaletteId: CuratedPaletteId;
|
|
14
|
+
colors: PaletteColors;
|
|
15
|
+
mode: PaletteMode;
|
|
16
|
+
}> | Readonly<{
|
|
17
|
+
kind: 'edited-site';
|
|
18
|
+
paletteId: SitePaletteId;
|
|
19
|
+
expectedVersion: SitePaletteVersion;
|
|
20
|
+
colors: PaletteColors;
|
|
21
|
+
mode: PaletteMode;
|
|
22
|
+
}> | Readonly<{
|
|
23
|
+
kind: 'new-site';
|
|
24
|
+
colors: PaletteColors;
|
|
25
|
+
mode: PaletteMode;
|
|
26
|
+
}>;
|
|
27
|
+
export type PaletteEditorState = Readonly<{
|
|
28
|
+
committed: ResolvedPaletteSelection;
|
|
29
|
+
preview: PalettePreview;
|
|
30
|
+
}>;
|
|
31
|
+
export type PaletteEditorAction = Readonly<{
|
|
32
|
+
kind: 'select';
|
|
33
|
+
resolved: ResolvedPaletteSelection;
|
|
34
|
+
}> | Readonly<{
|
|
35
|
+
kind: 'edit';
|
|
36
|
+
colors: PaletteColors;
|
|
37
|
+
mode: PaletteMode;
|
|
38
|
+
}> | Readonly<{
|
|
39
|
+
kind: 'create';
|
|
40
|
+
}> | Readonly<{
|
|
41
|
+
kind: 'cancel';
|
|
42
|
+
}>;
|
|
43
|
+
export declare function createPaletteEditorState(committed: ResolvedPaletteSelection): PaletteEditorState;
|
|
44
|
+
export declare function reducePaletteEditorState(state: PaletteEditorState, action: PaletteEditorAction): PaletteEditorState;
|
|
45
|
+
export declare function planPaletteCommand(state: PaletteEditorState): PaletteCommand;
|
|
@@ -1,14 +1,25 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
6
|
-
export * from
|
|
7
|
-
export * from
|
|
8
|
-
export * from
|
|
9
|
-
export * from
|
|
10
|
-
export * from
|
|
11
|
-
export * from
|
|
12
|
-
export * from
|
|
13
|
-
export * from
|
|
14
|
-
export * from
|
|
1
|
+
export * from '../mock-themes/all';
|
|
2
|
+
export * from './classifyColor';
|
|
3
|
+
export * from './expandPalette';
|
|
4
|
+
export * from './generateCssVars';
|
|
5
|
+
export * from './generateShades';
|
|
6
|
+
export * from './neutralScale';
|
|
7
|
+
export * from './types';
|
|
8
|
+
export * from './utils';
|
|
9
|
+
export * from './utils/paletteAccess';
|
|
10
|
+
export * from './extractPalette';
|
|
11
|
+
export * from './colors';
|
|
12
|
+
export * from './editorState';
|
|
13
|
+
export * from './libraryModel';
|
|
14
|
+
export * from './legacySelection';
|
|
15
|
+
export * from './legacyRuntimeProjection';
|
|
16
|
+
export * from './paletteCompatibilityTransition';
|
|
17
|
+
export * from './persistenceReadSource';
|
|
18
|
+
export * from './resolveSelection';
|
|
19
|
+
export * from './selection';
|
|
20
|
+
export * from './sitePalettePersistence';
|
|
21
|
+
export * from './themePaletteCompatibility';
|
|
22
|
+
export * from './utils/fromVibrant';
|
|
23
|
+
export * from './utils/suggestRecipes';
|
|
24
|
+
export * from './recipes/allRecipes';
|
|
25
|
+
export * from './curated';
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { CuratedPaletteId, PaletteOverrides } from './curated';
|
|
2
|
+
import type { PaletteColors, PaletteMode } from './colors';
|
|
3
|
+
import type { PalettePersistenceReadResult, RuntimePaletteState } from './persistenceReadSource';
|
|
4
|
+
import type { LegacyPaletteRequestBaseline, PaletteCompatibilityState } from './paletteCompatibilityTransition';
|
|
5
|
+
import type { PaletteSelection } from './selection';
|
|
6
|
+
export type LegacyPaletteResponseProjection = Readonly<{
|
|
7
|
+
paletteVariantId: CuratedPaletteId | null;
|
|
8
|
+
paletteOverrides: PaletteOverrides | null;
|
|
9
|
+
}>;
|
|
10
|
+
declare const paletteCompatibilityBaselineBrand: unique symbol;
|
|
11
|
+
/**
|
|
12
|
+
* The complete compatibility representation of a resolved palette. This is
|
|
13
|
+
* deliberately narrower than the nullable legacy response wire shape: every
|
|
14
|
+
* successful authoritative write must persist one of these values.
|
|
15
|
+
*/
|
|
16
|
+
export type PaletteCompatibilityBaseline = Readonly<{
|
|
17
|
+
paletteVariantId: CuratedPaletteId;
|
|
18
|
+
paletteOverrides: PaletteOverrides | null;
|
|
19
|
+
[paletteCompatibilityBaselineBrand]: true;
|
|
20
|
+
}>;
|
|
21
|
+
type ResolvedPaletteForLegacyProjection = Readonly<{
|
|
22
|
+
selection: PaletteSelection;
|
|
23
|
+
colors: PaletteColors;
|
|
24
|
+
mode: PaletteMode;
|
|
25
|
+
}>;
|
|
26
|
+
/**
|
|
27
|
+
* Derives the bounded, lossless compatibility baseline for a resolved
|
|
28
|
+
* authoritative selection. Site palettes retain their complete colours,
|
|
29
|
+
* using a preferred same-mode curated base when possible and a stable
|
|
30
|
+
* same-mode fallback otherwise.
|
|
31
|
+
*/
|
|
32
|
+
export declare function derivePaletteCompatibilityBaseline(input: ResolvedPaletteForLegacyProjection & Readonly<{
|
|
33
|
+
preferredCuratedPaletteId?: CuratedPaletteId | null;
|
|
34
|
+
}>): PaletteCompatibilityBaseline;
|
|
35
|
+
/**
|
|
36
|
+
* One-way egress adapter for stale clients. It accepts canonical compatibility
|
|
37
|
+
* state only; its lossy curated-plus-overrides response is never a transition
|
|
38
|
+
* input.
|
|
39
|
+
*/
|
|
40
|
+
export declare function projectPaletteCompatibilityStateForLegacyResponse(state: PaletteCompatibilityState, preferredCuratedPaletteId?: CuratedPaletteId | null): LegacyPaletteResponseProjection;
|
|
41
|
+
/**
|
|
42
|
+
* Projects runtime state without letting stale legacy columns override an
|
|
43
|
+
* explicit new authority. Unmigrated rows preserve their validated legacy
|
|
44
|
+
* identity so mixed-version clients do not receive an unnecessary rewrite.
|
|
45
|
+
*/
|
|
46
|
+
export declare function projectRuntimePaletteStateForLegacyResponse(input: Readonly<{
|
|
47
|
+
runtimePaletteState: RuntimePaletteState | null;
|
|
48
|
+
persistenceRead: PalettePersistenceReadResult | null;
|
|
49
|
+
/**
|
|
50
|
+
* Parsed independently from active authority. A valid persisted request
|
|
51
|
+
* baseline remains the exact legacy egress value after a migrated reload.
|
|
52
|
+
*/
|
|
53
|
+
legacyRequestBaseline: LegacyPaletteRequestBaseline | null;
|
|
54
|
+
}>): LegacyPaletteResponseProjection;
|
|
55
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Theme } from '../schema';
|
|
2
|
+
import { type PaletteTokenName } from '../tokens/themeColorTokens';
|
|
3
|
+
import { type HexColor, type PaletteColors, type PaletteMode } from './colors';
|
|
4
|
+
import type { CuratedPalette, CuratedPaletteId, PaletteOverrides } from './curated/types';
|
|
5
|
+
import type { SitePaletteOrigin } from './selection';
|
|
6
|
+
export type LegacyPaletteClassification = Readonly<{
|
|
7
|
+
kind: 'curated';
|
|
8
|
+
paletteId: CuratedPaletteId;
|
|
9
|
+
}> | Readonly<{
|
|
10
|
+
kind: 'site';
|
|
11
|
+
colors: PaletteColors;
|
|
12
|
+
mode: PaletteMode;
|
|
13
|
+
origin: Extract<SitePaletteOrigin, {
|
|
14
|
+
kind: 'onboarding' | 'legacy-customized';
|
|
15
|
+
}>;
|
|
16
|
+
}> | Readonly<{
|
|
17
|
+
kind: 'defaulted-curated';
|
|
18
|
+
paletteId: CuratedPaletteId;
|
|
19
|
+
reason: 'no-valid-legacy-palette';
|
|
20
|
+
}> | Readonly<{
|
|
21
|
+
kind: 'unresolved';
|
|
22
|
+
reason: 'missing-palette-sources' | 'invalid-saved-theme-palette' | 'overrides-without-base-palette';
|
|
23
|
+
}>;
|
|
24
|
+
export type LegacyOnboardingPaletteEvidence = Readonly<{
|
|
25
|
+
sourceKey: string | null;
|
|
26
|
+
candidateColors: Readonly<Partial<Record<PaletteTokenName, HexColor>>> | null;
|
|
27
|
+
}>;
|
|
28
|
+
export declare function classifyLegacyPaletteSelection(input: Readonly<{
|
|
29
|
+
basePalette: CuratedPalette | null;
|
|
30
|
+
overrides: PaletteOverrides | null;
|
|
31
|
+
savedThemePalette: Theme['palette'] | null;
|
|
32
|
+
fallbackPaletteId: CuratedPaletteId | null;
|
|
33
|
+
onboardingEvidence: LegacyOnboardingPaletteEvidence;
|
|
34
|
+
}>): LegacyPaletteClassification;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { CuratedPalette, CuratedPaletteId } from './curated/types';
|
|
2
|
+
import type { PaletteColors, PaletteMode } from './colors';
|
|
3
|
+
import type { PaletteSelection, SitePalette, SitePaletteId, SitePaletteOrigin, SitePaletteVersion } from './selection';
|
|
4
|
+
export type PaletteSwatch = readonly [
|
|
5
|
+
PaletteColors['background'],
|
|
6
|
+
PaletteColors['surface'],
|
|
7
|
+
PaletteColors['primary'],
|
|
8
|
+
PaletteColors['secondary'],
|
|
9
|
+
PaletteColors['accent']
|
|
10
|
+
];
|
|
11
|
+
export type CuratedPaletteLibraryItem = Readonly<{
|
|
12
|
+
kind: 'curated';
|
|
13
|
+
paletteId: CuratedPaletteId;
|
|
14
|
+
colors: PaletteColors;
|
|
15
|
+
mode: PaletteMode;
|
|
16
|
+
swatch: PaletteSwatch;
|
|
17
|
+
accessibleLabel: string;
|
|
18
|
+
selected: boolean;
|
|
19
|
+
}>;
|
|
20
|
+
export type SitePaletteLibraryItem = Readonly<{
|
|
21
|
+
kind: 'site';
|
|
22
|
+
paletteId: SitePaletteId;
|
|
23
|
+
colors: PaletteColors;
|
|
24
|
+
mode: PaletteMode;
|
|
25
|
+
origin: SitePaletteOrigin;
|
|
26
|
+
version: SitePaletteVersion;
|
|
27
|
+
swatch: PaletteSwatch;
|
|
28
|
+
accessibleLabel: string;
|
|
29
|
+
selected: boolean;
|
|
30
|
+
}>;
|
|
31
|
+
export type PaletteLibraryItem = CuratedPaletteLibraryItem | SitePaletteLibraryItem;
|
|
32
|
+
export type PaletteLibraryReadModel = Readonly<{
|
|
33
|
+
activeSelection: PaletteSelection;
|
|
34
|
+
yours: readonly SitePaletteLibraryItem[];
|
|
35
|
+
suggested: readonly CuratedPaletteLibraryItem[];
|
|
36
|
+
more: readonly CuratedPaletteLibraryItem[];
|
|
37
|
+
}>;
|
|
38
|
+
export type PaletteLibraryReadModelError = Readonly<{
|
|
39
|
+
kind: 'active-curated-palette-missing';
|
|
40
|
+
paletteId: CuratedPaletteId;
|
|
41
|
+
}> | Readonly<{
|
|
42
|
+
kind: 'active-site-palette-missing';
|
|
43
|
+
paletteId: SitePaletteId;
|
|
44
|
+
}>;
|
|
45
|
+
export type PaletteLibraryReadModelResult = Readonly<{
|
|
46
|
+
ok: true;
|
|
47
|
+
model: PaletteLibraryReadModel;
|
|
48
|
+
}> | Readonly<{
|
|
49
|
+
ok: false;
|
|
50
|
+
error: PaletteLibraryReadModelError;
|
|
51
|
+
}>;
|
|
52
|
+
export declare function buildPaletteLibraryReadModel(input: Readonly<{
|
|
53
|
+
activeSelection: PaletteSelection;
|
|
54
|
+
sitePalettes: readonly SitePalette[];
|
|
55
|
+
curatedPalettes: readonly CuratedPalette[];
|
|
56
|
+
recommendations: readonly CuratedPaletteId[];
|
|
57
|
+
}>): PaletteLibraryReadModelResult;
|
|
58
|
+
export declare function paletteSelectionForItem(item: PaletteLibraryItem): PaletteSelection;
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { type PaletteColors, type PaletteMode } from './colors';
|
|
2
|
+
import { type CuratedPaletteId, type PaletteOverrides } from './curated';
|
|
3
|
+
import type { LegacyPaletteClassification } from './legacySelection';
|
|
4
|
+
import { type ResolvedCuratedPaletteSelection, type ResolvedPaletteSelection, type ResolvedSitePaletteSelection } from './resolveSelection';
|
|
5
|
+
import type { PaletteSelection, SitePalette, SitePaletteOrigin, TrustedPaletteCommand } from './selection';
|
|
6
|
+
import type { CompatibleThemePalette } from './themePaletteCompatibility';
|
|
7
|
+
export type ResolvedCompatibilityPalette = Readonly<{
|
|
8
|
+
colors: PaletteColors;
|
|
9
|
+
mode: PaletteMode;
|
|
10
|
+
}>;
|
|
11
|
+
export type MaterializedSitePaletteTarget = Readonly<{
|
|
12
|
+
kind: 'materialized-site';
|
|
13
|
+
colors: PaletteColors;
|
|
14
|
+
mode: PaletteMode;
|
|
15
|
+
}>;
|
|
16
|
+
/** A legacy PATCH field has an explicit operation; null is only a value at the wire boundary. */
|
|
17
|
+
export type LegacyPaletteFieldPatch<Value> = Readonly<{
|
|
18
|
+
kind: 'preserve';
|
|
19
|
+
}> | Readonly<{
|
|
20
|
+
kind: 'clear';
|
|
21
|
+
}> | Readonly<{
|
|
22
|
+
kind: 'set';
|
|
23
|
+
value: Value;
|
|
24
|
+
}>;
|
|
25
|
+
export type LegacyPaletteSavePatch = Readonly<{
|
|
26
|
+
paletteVariantId: LegacyPaletteFieldPatch<CuratedPaletteId>;
|
|
27
|
+
paletteOverrides: LegacyPaletteFieldPatch<PaletteOverrides>;
|
|
28
|
+
}>;
|
|
29
|
+
declare const persistedLegacyPaletteRequestEvidenceBrand: unique symbol;
|
|
30
|
+
/**
|
|
31
|
+
* Validated evidence read from the persisted legacy columns. This is ingress
|
|
32
|
+
* data only: it deliberately cannot be confused with a legacy response
|
|
33
|
+
* projection or a resolved palette.
|
|
34
|
+
*/
|
|
35
|
+
export type PersistedLegacyPaletteRequestEvidence = Readonly<{
|
|
36
|
+
paletteVariantId: CuratedPaletteId;
|
|
37
|
+
paletteOverrides: PaletteOverrides | null;
|
|
38
|
+
[persistedLegacyPaletteRequestEvidenceBrand]: true;
|
|
39
|
+
}>;
|
|
40
|
+
export type LegacyPaletteRequestBaselineError = Readonly<{
|
|
41
|
+
kind: 'missing-curated-palette';
|
|
42
|
+
}> | Readonly<{
|
|
43
|
+
kind: 'unknown-curated-palette';
|
|
44
|
+
value: string;
|
|
45
|
+
}> | Readonly<{
|
|
46
|
+
kind: 'invalid-palette-overrides';
|
|
47
|
+
}>;
|
|
48
|
+
/**
|
|
49
|
+
* The request baseline is intentionally not inferred from compatibility state.
|
|
50
|
+
* Existing records either carry their persisted legacy evidence or state why it
|
|
51
|
+
* cannot be used. Only a genuinely new record may use the absent variant.
|
|
52
|
+
*/
|
|
53
|
+
export type LegacyPaletteRequestBaseline = Readonly<{
|
|
54
|
+
kind: 'persisted';
|
|
55
|
+
evidence: PersistedLegacyPaletteRequestEvidence;
|
|
56
|
+
}> | Readonly<{
|
|
57
|
+
kind: 'absent';
|
|
58
|
+
}> | Readonly<{
|
|
59
|
+
kind: 'unusable';
|
|
60
|
+
error: LegacyPaletteRequestBaselineError;
|
|
61
|
+
}>;
|
|
62
|
+
/** Parses legacy persistence columns into branded request-side evidence. */
|
|
63
|
+
export declare function parsePersistedLegacyPaletteRequestBaseline(input: Readonly<{
|
|
64
|
+
paletteVariantId: unknown;
|
|
65
|
+
paletteOverrides: unknown;
|
|
66
|
+
}>): LegacyPaletteRequestBaseline;
|
|
67
|
+
/** Marks the one case where request omission may use creation fallback values. */
|
|
68
|
+
export declare function absentLegacyPaletteRequestBaseline(): LegacyPaletteRequestBaseline;
|
|
69
|
+
/** Wraps already validated, branded persistence evidence for PATCH normalization. */
|
|
70
|
+
export declare function legacyPaletteRequestBaselineFromPersistedEvidence(evidence: PersistedLegacyPaletteRequestEvidence): LegacyPaletteRequestBaseline;
|
|
71
|
+
declare const legacyPaletteSaveSelectionBrand: unique symbol;
|
|
72
|
+
/** A complete legacy save request after PATCH fields have been normalized. */
|
|
73
|
+
export type LegacyPaletteSaveSelection = Readonly<{
|
|
74
|
+
paletteVariantId: CuratedPaletteId;
|
|
75
|
+
paletteOverrides: PaletteOverrides | null;
|
|
76
|
+
[legacyPaletteSaveSelectionBrand]: true;
|
|
77
|
+
}>;
|
|
78
|
+
export type LegacyPaletteSaveNormalizationError = Readonly<{
|
|
79
|
+
kind: 'missing-base-palette';
|
|
80
|
+
}>;
|
|
81
|
+
export type LegacyPaletteSaveNormalizationResult = Readonly<{
|
|
82
|
+
ok: true;
|
|
83
|
+
selection: LegacyPaletteSaveSelection;
|
|
84
|
+
}> | Readonly<{
|
|
85
|
+
ok: false;
|
|
86
|
+
error: LegacyPaletteSaveNormalizationError;
|
|
87
|
+
}>;
|
|
88
|
+
export type LegacyResolvedPaletteSelection = Readonly<{
|
|
89
|
+
kind: 'curated';
|
|
90
|
+
selection: Extract<PaletteSelection, {
|
|
91
|
+
kind: 'curated';
|
|
92
|
+
}>;
|
|
93
|
+
colors: PaletteColors;
|
|
94
|
+
mode: PaletteMode;
|
|
95
|
+
}> | Readonly<{
|
|
96
|
+
kind: 'site';
|
|
97
|
+
colors: PaletteColors;
|
|
98
|
+
mode: PaletteMode;
|
|
99
|
+
origin: Extract<SitePaletteOrigin, {
|
|
100
|
+
kind: 'onboarding' | 'legacy-customized';
|
|
101
|
+
}>;
|
|
102
|
+
}>;
|
|
103
|
+
export type PaletteCompatibilityStateError = Readonly<{
|
|
104
|
+
kind: 'invalid-authoritative-selection';
|
|
105
|
+
}> | Readonly<{
|
|
106
|
+
kind: 'invalid-legacy-evidence';
|
|
107
|
+
reason: 'unknown-curated-palette';
|
|
108
|
+
}> | Readonly<{
|
|
109
|
+
kind: 'unresolved-legacy-selection';
|
|
110
|
+
reason: Extract<LegacyPaletteClassification, {
|
|
111
|
+
kind: 'unresolved';
|
|
112
|
+
}>['reason'];
|
|
113
|
+
}> | Readonly<{
|
|
114
|
+
kind: 'defaulted-legacy-selection';
|
|
115
|
+
paletteId: CuratedPaletteId;
|
|
116
|
+
}>;
|
|
117
|
+
export type PaletteCompatibilityState = Readonly<{
|
|
118
|
+
kind: 'authoritative';
|
|
119
|
+
resolved: ResolvedPaletteSelection;
|
|
120
|
+
}> | Readonly<{
|
|
121
|
+
kind: 'legacy-unmigrated';
|
|
122
|
+
resolved: LegacyResolvedPaletteSelection;
|
|
123
|
+
}> | Readonly<{
|
|
124
|
+
kind: 'uninitialized';
|
|
125
|
+
}> | Readonly<{
|
|
126
|
+
kind: 'invalid';
|
|
127
|
+
error: PaletteCompatibilityStateError;
|
|
128
|
+
}>;
|
|
129
|
+
export type PaletteCompatibilityIntent = Readonly<{
|
|
130
|
+
kind: 'preserve';
|
|
131
|
+
}> | Readonly<{
|
|
132
|
+
kind: 'current-command';
|
|
133
|
+
command: TrustedPaletteCommand;
|
|
134
|
+
selectedSitePalette: SitePalette | null;
|
|
135
|
+
}> | Readonly<{
|
|
136
|
+
kind: 'legacy-save';
|
|
137
|
+
selection: LegacyPaletteSaveSelection;
|
|
138
|
+
}> | Readonly<{
|
|
139
|
+
kind: 'theme-palette-save';
|
|
140
|
+
themePalette: CompatibleThemePalette;
|
|
141
|
+
fallbackCuratedPaletteId: CuratedPaletteId | null;
|
|
142
|
+
}>;
|
|
143
|
+
export type PaletteCompatibilityTransitionError = Readonly<{
|
|
144
|
+
kind: 'invalid-state';
|
|
145
|
+
error: PaletteCompatibilityStateError;
|
|
146
|
+
}> | Readonly<{
|
|
147
|
+
kind: 'missing-base-palette';
|
|
148
|
+
}> | Readonly<{
|
|
149
|
+
kind: 'unknown-curated-palette';
|
|
150
|
+
paletteId: CuratedPaletteId;
|
|
151
|
+
}> | Readonly<{
|
|
152
|
+
kind: 'missing-selected-site-palette';
|
|
153
|
+
paletteId: Extract<PaletteSelection, {
|
|
154
|
+
kind: 'site';
|
|
155
|
+
}>['paletteId'];
|
|
156
|
+
}> | Readonly<{
|
|
157
|
+
kind: 'selected-site-palette-mismatch';
|
|
158
|
+
expectedPaletteId: Extract<PaletteSelection, {
|
|
159
|
+
kind: 'site';
|
|
160
|
+
}>['paletteId'];
|
|
161
|
+
receivedPaletteId: SitePalette['id'];
|
|
162
|
+
}> | Readonly<{
|
|
163
|
+
kind: 'site-update-not-authoritative';
|
|
164
|
+
}> | Readonly<{
|
|
165
|
+
kind: 'site-update-palette-mismatch';
|
|
166
|
+
expectedPaletteId: SitePalette['id'];
|
|
167
|
+
receivedPaletteId: SitePalette['id'];
|
|
168
|
+
}> | Readonly<{
|
|
169
|
+
kind: 'stale-site-palette-update';
|
|
170
|
+
paletteId: SitePalette['id'];
|
|
171
|
+
}>;
|
|
172
|
+
/**
|
|
173
|
+
* This is deliberately a correlated ADT rather than a command/target product.
|
|
174
|
+
* Every variant carries only the target evidence that its action can legally use.
|
|
175
|
+
*/
|
|
176
|
+
export type PaletteCompatibilityTransitionPlan = Readonly<{
|
|
177
|
+
kind: 'preserve-curated';
|
|
178
|
+
command: Extract<TrustedPaletteCommand, {
|
|
179
|
+
kind: 'preserve';
|
|
180
|
+
}>;
|
|
181
|
+
target: ResolvedCuratedPaletteSelection;
|
|
182
|
+
}> | Readonly<{
|
|
183
|
+
kind: 'preserve-existing-site';
|
|
184
|
+
command: Extract<TrustedPaletteCommand, {
|
|
185
|
+
kind: 'preserve';
|
|
186
|
+
}>;
|
|
187
|
+
target: ResolvedSitePaletteSelection;
|
|
188
|
+
}> | Readonly<{
|
|
189
|
+
kind: 'select-curated';
|
|
190
|
+
command: Extract<TrustedPaletteCommand, {
|
|
191
|
+
kind: 'select';
|
|
192
|
+
}>;
|
|
193
|
+
target: ResolvedCuratedPaletteSelection;
|
|
194
|
+
}> | Readonly<{
|
|
195
|
+
kind: 'select-existing-site';
|
|
196
|
+
command: Extract<TrustedPaletteCommand, {
|
|
197
|
+
kind: 'select';
|
|
198
|
+
}>;
|
|
199
|
+
target: ResolvedSitePaletteSelection;
|
|
200
|
+
}> | Readonly<{
|
|
201
|
+
kind: 'create-site';
|
|
202
|
+
command: Extract<TrustedPaletteCommand, {
|
|
203
|
+
kind: 'create-site';
|
|
204
|
+
}>;
|
|
205
|
+
target: MaterializedSitePaletteTarget;
|
|
206
|
+
}> | Readonly<{
|
|
207
|
+
kind: 'update-existing-site';
|
|
208
|
+
command: Extract<TrustedPaletteCommand, {
|
|
209
|
+
kind: 'update-site';
|
|
210
|
+
}>;
|
|
211
|
+
target: ResolvedSitePaletteSelection;
|
|
212
|
+
}>;
|
|
213
|
+
export type PaletteCompatibilityTransitionResult = Readonly<{
|
|
214
|
+
ok: true;
|
|
215
|
+
plan: PaletteCompatibilityTransitionPlan;
|
|
216
|
+
}> | Readonly<{
|
|
217
|
+
ok: false;
|
|
218
|
+
error: PaletteCompatibilityTransitionError;
|
|
219
|
+
}>;
|
|
220
|
+
export declare function paletteCompatibilityStateFromLegacyClassification(classification: LegacyPaletteClassification): PaletteCompatibilityState;
|
|
221
|
+
/**
|
|
222
|
+
* Applies independent PATCH operations at the legacy ingress boundary. A
|
|
223
|
+
* fallback supplies omitted fields only for explicitly uninitialized creation;
|
|
224
|
+
* an explicit variant clear always selects the caller-supplied fallback.
|
|
225
|
+
*/
|
|
226
|
+
export declare function normalizeLegacyPaletteSavePatch(input: Readonly<{
|
|
227
|
+
patch: LegacyPaletteSavePatch;
|
|
228
|
+
baseline: LegacyPaletteRequestBaseline;
|
|
229
|
+
fallbackCuratedPaletteId: CuratedPaletteId | null;
|
|
230
|
+
}>): LegacyPaletteSaveNormalizationResult;
|
|
231
|
+
export declare function planPaletteTransition(state: PaletteCompatibilityState, intent: PaletteCompatibilityIntent): PaletteCompatibilityTransitionResult;
|
|
232
|
+
export {};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { type CuratedPaletteId, type PaletteOverrides } from './curated';
|
|
2
|
+
import type { Theme } from '../schema';
|
|
3
|
+
import type { PaletteSelection } from './selection';
|
|
4
|
+
import { type SitePalette } from './selection';
|
|
5
|
+
import { resolvedCuratedPaletteSelection, resolvedSitePaletteSelection, type ResolvedPaletteSelection } from './resolveSelection';
|
|
6
|
+
import type { SitePaletteParseError } from './sitePalettePersistence';
|
|
7
|
+
export type PalettePersistenceReadSource = Readonly<{
|
|
8
|
+
kind: 'new-selection';
|
|
9
|
+
selection: PaletteSelection;
|
|
10
|
+
}> | Readonly<{
|
|
11
|
+
kind: 'legacy-selection';
|
|
12
|
+
paletteVariant: LegacyPaletteVariantEvidence;
|
|
13
|
+
paletteOverrides: PaletteOverrides | null;
|
|
14
|
+
}>;
|
|
15
|
+
/** Legacy catalog IDs are migration evidence, not authoritative references. */
|
|
16
|
+
export type LegacyPaletteVariantEvidence = Readonly<{
|
|
17
|
+
kind: 'known';
|
|
18
|
+
paletteId: CuratedPaletteId;
|
|
19
|
+
}> | Readonly<{
|
|
20
|
+
kind: 'unknown';
|
|
21
|
+
value: string;
|
|
22
|
+
}> | Readonly<{
|
|
23
|
+
kind: 'missing';
|
|
24
|
+
}>;
|
|
25
|
+
export type PalettePersistenceReadError = Readonly<{
|
|
26
|
+
kind: 'dual-active-reference';
|
|
27
|
+
}> | Readonly<{
|
|
28
|
+
kind: 'unknown-active-curated-palette';
|
|
29
|
+
value: string;
|
|
30
|
+
}> | Readonly<{
|
|
31
|
+
kind: 'invalid-active-site-palette-id';
|
|
32
|
+
value: string;
|
|
33
|
+
}> | Readonly<{
|
|
34
|
+
kind: 'invalid-legacy-overrides';
|
|
35
|
+
}>;
|
|
36
|
+
export type PalettePersistenceReadResult = Readonly<{
|
|
37
|
+
ok: true;
|
|
38
|
+
source: PalettePersistenceReadSource;
|
|
39
|
+
}> | Readonly<{
|
|
40
|
+
ok: false;
|
|
41
|
+
error: PalettePersistenceReadError;
|
|
42
|
+
}>;
|
|
43
|
+
/**
|
|
44
|
+
* Transport state remains flat for existing runtime consumers. Its migrated
|
|
45
|
+
* variants are nevertheless correlated: `authority`, selection, and version
|
|
46
|
+
* cannot describe independent sources of truth.
|
|
47
|
+
*/
|
|
48
|
+
export type RuntimePaletteState = Readonly<{
|
|
49
|
+
kind: 'migrated';
|
|
50
|
+
authority: 'curated';
|
|
51
|
+
selection: Extract<PaletteSelection, {
|
|
52
|
+
kind: 'curated';
|
|
53
|
+
}>;
|
|
54
|
+
colors: ReturnType<typeof resolvedCuratedPaletteSelection>['colors'];
|
|
55
|
+
mode: ReturnType<typeof resolvedCuratedPaletteSelection>['mode'];
|
|
56
|
+
sitePaletteVersion: null;
|
|
57
|
+
}> | Readonly<{
|
|
58
|
+
kind: 'migrated';
|
|
59
|
+
authority: 'site';
|
|
60
|
+
selection: Extract<PaletteSelection, {
|
|
61
|
+
kind: 'site';
|
|
62
|
+
}>;
|
|
63
|
+
colors: ReturnType<typeof resolvedSitePaletteSelection>['colors'];
|
|
64
|
+
mode: ReturnType<typeof resolvedSitePaletteSelection>['mode'];
|
|
65
|
+
sitePaletteVersion: ReturnType<typeof resolvedSitePaletteSelection>['version'];
|
|
66
|
+
}> | Readonly<{
|
|
67
|
+
kind: 'legacy-unmigrated';
|
|
68
|
+
colors: ResolvedPaletteSelection['colors'];
|
|
69
|
+
mode: ResolvedPaletteSelection['mode'];
|
|
70
|
+
}> | Readonly<{
|
|
71
|
+
kind: 'invalid';
|
|
72
|
+
reason: PalettePersistenceReadError['kind'] | 'invalid-saved-theme-palette' | 'active-site-palette-missing' | 'invalid-active-site-palette' | 'active-site-palette-mismatch' | 'active-curated-palette-missing';
|
|
73
|
+
}>;
|
|
74
|
+
export type ActiveSitePaletteAuthority = Readonly<{
|
|
75
|
+
kind: 'missing';
|
|
76
|
+
}> | Readonly<{
|
|
77
|
+
kind: 'malformed';
|
|
78
|
+
error: SitePaletteParseError;
|
|
79
|
+
}> | Readonly<{
|
|
80
|
+
kind: 'resolved';
|
|
81
|
+
palette: SitePalette;
|
|
82
|
+
}>;
|
|
83
|
+
export type RuntimePaletteResolutionError = Readonly<{
|
|
84
|
+
kind: 'runtime-curated-palette-missing';
|
|
85
|
+
paletteId: CuratedPaletteId;
|
|
86
|
+
}> | Readonly<{
|
|
87
|
+
kind: 'runtime-curated-palette-mismatch';
|
|
88
|
+
paletteId: CuratedPaletteId;
|
|
89
|
+
}>;
|
|
90
|
+
export type RuntimePaletteResolution = Readonly<{
|
|
91
|
+
ok: true;
|
|
92
|
+
resolved: ResolvedPaletteSelection;
|
|
93
|
+
}> | Readonly<{
|
|
94
|
+
ok: false;
|
|
95
|
+
error: RuntimePaletteResolutionError;
|
|
96
|
+
}>;
|
|
97
|
+
/**
|
|
98
|
+
* Rehydrates a runtime transport payload through the core-owned constructors.
|
|
99
|
+
* It is intentionally checked, and replaces the old unsafe brand cast bridge.
|
|
100
|
+
*/
|
|
101
|
+
export declare function resolveMigratedRuntimePaletteState(state: Extract<RuntimePaletteState, {
|
|
102
|
+
kind: 'migrated';
|
|
103
|
+
}>): RuntimePaletteResolution;
|
|
104
|
+
export declare function runtimePaletteStateFromPersisted(input: Readonly<{
|
|
105
|
+
parsed: PalettePersistenceReadResult;
|
|
106
|
+
savedThemePalette: Theme['palette'];
|
|
107
|
+
activeSitePaletteAuthority: ActiveSitePaletteAuthority;
|
|
108
|
+
}>): RuntimePaletteState;
|
|
109
|
+
/**
|
|
110
|
+
* Bounded rollout adapter. New active references are authoritative whenever
|
|
111
|
+
* present; legacy fields are parsed only while both references are absent.
|
|
112
|
+
*/
|
|
113
|
+
export declare function parsePalettePersistenceReadSource(input: Readonly<{
|
|
114
|
+
activeCuratedPaletteId: string | null;
|
|
115
|
+
activeSitePaletteId: string | null;
|
|
116
|
+
legacyPaletteVariantId: string | null;
|
|
117
|
+
legacyPaletteOverrides: unknown;
|
|
118
|
+
}>): PalettePersistenceReadResult;
|