@riverbankcms/sdk 0.60.1 → 0.60.6

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 (97) hide show
  1. package/dist/_dts/api/src/bookingRecords.d.ts +7 -0
  2. package/dist/_dts/api/src/bookingVerticals.d.ts +1 -0
  3. package/dist/_dts/api/src/communications.d.ts +1 -0
  4. package/dist/_dts/api/src/contentRuntime.d.ts +8 -0
  5. package/dist/_dts/api/src/endpoints.d.ts +17 -0
  6. package/dist/_dts/api/src/index.d.ts +1 -1
  7. package/dist/_dts/api/src/media.d.ts +1 -1
  8. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +10 -2
  9. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +26 -1
  10. package/dist/_dts/api/src/siteSettings.d.ts +7 -0
  11. package/dist/_dts/api/src/types.d.ts +1 -1
  12. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -0
  13. package/dist/_dts/blocks/src/system/blocks/site-footer.d.ts +1 -0
  14. package/dist/_dts/blocks/src/system/node/fragments/ctaButton.d.ts +2 -0
  15. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.server.d.ts +4 -0
  16. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.shared.d.ts +38 -0
  17. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.view.d.ts +2 -1
  18. package/dist/_dts/blocks/src/system/runtime/shared/themedButtonClass.d.ts +11 -0
  19. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +10 -2
  20. package/dist/_dts/core/src/business-address.d.ts +38 -0
  21. package/dist/_dts/core/src/index.d.ts +1 -0
  22. package/dist/_dts/core/src/participants.d.ts +32 -1
  23. package/dist/_dts/core/src/rectification.d.ts +79 -0
  24. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +28 -6
  25. package/dist/_dts/preview-next/src/client/blocks/runOptimisticCustomizeAction.d.ts +44 -0
  26. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +7 -1
  27. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +12 -1
  28. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +6 -1
  29. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +20 -0
  30. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +101 -0
  31. package/dist/_dts/sdk/src/client/types.d.ts +1 -0
  32. package/dist/_dts/sdk/src/public-api/contracts.d.ts +11 -1
  33. package/dist/_dts/sdk/src/version.d.ts +1 -1
  34. package/dist/_dts/theme-core/src/buttons/constants.d.ts +9 -1
  35. package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +16 -11
  36. package/dist/_dts/theme-core/src/buttons/generateDefaultButtonSystem.d.ts +9 -16
  37. package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
  38. package/dist/_dts/theme-core/src/buttons/personalities/brushed-wash.d.ts +16 -0
  39. package/dist/_dts/theme-core/src/buttons/personalities/confident-chip.d.ts +16 -0
  40. package/dist/_dts/theme-core/src/buttons/personalities/editorial-link.d.ts +16 -0
  41. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +95 -0
  42. package/dist/_dts/theme-core/src/buttons/personalities/ink-stamp.d.ts +16 -0
  43. package/dist/_dts/theme-core/src/buttons/personalities/pebble.d.ts +16 -0
  44. package/dist/_dts/theme-core/src/buttons/personalities/soft-pill.d.ts +16 -0
  45. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +268 -0
  46. package/dist/_dts/theme-core/src/buttons/types.d.ts +253 -72
  47. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +69 -15
  48. package/dist/_dts/theme-core/src/palette/index.d.ts +1 -0
  49. package/dist/_dts/theme-core/src/palette/variants/brand-led.d.ts +52 -0
  50. package/dist/_dts/theme-core/src/palette/variants/high-contrast.d.ts +52 -0
  51. package/dist/_dts/theme-core/src/palette/variants/index.d.ts +213 -0
  52. package/dist/_dts/theme-core/src/palette/variants/soft-natural.d.ts +52 -0
  53. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +154 -0
  54. package/dist/_dts/theme-core/src/palette/variants/warm-neutral.d.ts +52 -0
  55. package/dist/_dts/theme-core/src/schema.d.ts +122 -10
  56. package/dist/_dts/theme-core/src/site-styles/curatedChoices.d.ts +27 -0
  57. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +48 -1
  58. package/dist/_dts/theme-core/src/site-styles/index.d.ts +2 -0
  59. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +4 -0
  60. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +42 -3
  61. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +23 -1
  62. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +46 -0
  63. package/dist/_dts/ui/src/badge.d.ts +1 -1
  64. package/dist/_dts/ui/src/callout.d.ts +1 -1
  65. package/dist/_dts/ui/src/palette/ColorChooserDialog.d.ts +47 -0
  66. package/dist/_dts/ui/src/palette/ColorSlotButton.d.ts +15 -0
  67. package/dist/_dts/ui/src/palette/ColorSwatchButton.d.ts +15 -0
  68. package/dist/_dts/ui/src/palette/PaletteTokenEditor.d.ts +50 -0
  69. package/dist/_dts/ui/src/palette/hex.d.ts +23 -0
  70. package/dist/_dts/ui/src/palette/index.d.ts +14 -0
  71. package/dist/cli/index.mjs +2255 -947
  72. package/dist/client/bookings.mjs +294 -144
  73. package/dist/client/client.mjs +4053 -2600
  74. package/dist/client/hooks.mjs +3248 -2076
  75. package/dist/client/rendering/client.mjs +3377 -2165
  76. package/dist/client/rendering/islands.mjs +1911 -736
  77. package/dist/client/rendering.mjs +41897 -40445
  78. package/dist/preview-next/before-render.mjs +17 -0
  79. package/dist/preview-next/client/runtime.mjs +13511 -11313
  80. package/dist/preview-next/middleware.mjs +17 -0
  81. package/dist/server/components.mjs +4434 -3172
  82. package/dist/server/config-validation.mjs +3479 -2307
  83. package/dist/server/config.mjs +3479 -2307
  84. package/dist/server/data.mjs +3248 -2076
  85. package/dist/server/index.mjs +21 -3
  86. package/dist/server/next.mjs +3989 -2726
  87. package/dist/server/page-converter.mjs +3393 -2238
  88. package/dist/server/prebuild.mjs +1 -1
  89. package/dist/server/rendering/server.mjs +4434 -3172
  90. package/dist/server/rendering.mjs +4434 -3172
  91. package/dist/server/routing.mjs +3582 -2274
  92. package/dist/server/server.mjs +3252 -2079
  93. package/dist/server/theme-bridge.mjs +1454 -496
  94. package/dist/server/theme.mjs +1102 -505
  95. package/package.json +1 -1
  96. package/dist/_dts/preview-next/src/client/preview/PreviewSiteStyleSwitcher.d.ts +0 -11
  97. package/dist/_dts/preview-next/src/client/preview/PreviewSiteStyleSwitcher.state.d.ts +0 -43
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Brand-led family — confident, modern, contemporary brand voices. Pairs
3
+ * with Clear Professional, Bright Community, Practical Services site styles.
4
+ */
5
+ export declare const brandLedCool: Readonly<{
6
+ id: import("@riverbankcms/blocks").PaletteVariantId<"brand-led-cool">;
7
+ name: string;
8
+ description: string;
9
+ tags: Readonly<Partial<Readonly<{
10
+ tone: import("../../site-styles").StyleTone;
11
+ energy: import("../../site-styles").StyleEnergy;
12
+ motion: import("../../site-styles").StyleMotion;
13
+ era: import("../../site-styles").StyleEra;
14
+ }>>>;
15
+ mode: "light" | "dark";
16
+ colors: readonly Readonly<{
17
+ name: import("@riverbankcms/blocks").PaletteTokenName;
18
+ hex: string;
19
+ }>[];
20
+ }>;
21
+ export declare const brandLedWarm: Readonly<{
22
+ id: import("@riverbankcms/blocks").PaletteVariantId<"brand-led-warm">;
23
+ name: string;
24
+ description: string;
25
+ tags: Readonly<Partial<Readonly<{
26
+ tone: import("../../site-styles").StyleTone;
27
+ energy: import("../../site-styles").StyleEnergy;
28
+ motion: import("../../site-styles").StyleMotion;
29
+ era: import("../../site-styles").StyleEra;
30
+ }>>>;
31
+ mode: "light" | "dark";
32
+ colors: readonly Readonly<{
33
+ name: import("@riverbankcms/blocks").PaletteTokenName;
34
+ hex: string;
35
+ }>[];
36
+ }>;
37
+ export declare const brandLedJewel: Readonly<{
38
+ id: import("@riverbankcms/blocks").PaletteVariantId<"brand-led-jewel">;
39
+ name: string;
40
+ description: string;
41
+ tags: Readonly<Partial<Readonly<{
42
+ tone: import("../../site-styles").StyleTone;
43
+ energy: import("../../site-styles").StyleEnergy;
44
+ motion: import("../../site-styles").StyleMotion;
45
+ era: import("../../site-styles").StyleEra;
46
+ }>>>;
47
+ mode: "light" | "dark";
48
+ colors: readonly Readonly<{
49
+ name: import("@riverbankcms/blocks").PaletteTokenName;
50
+ hex: string;
51
+ }>[];
52
+ }>;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * High-contrast family — editorial and minimal voices with high legibility.
3
+ * Pairs with Quiet Luxury, Bold Launch, Practical Services site styles.
4
+ */
5
+ export declare const highContrastInk: Readonly<{
6
+ id: import("@riverbankcms/blocks").PaletteVariantId<"high-contrast-ink">;
7
+ name: string;
8
+ description: string;
9
+ tags: Readonly<Partial<Readonly<{
10
+ tone: import("../../site-styles").StyleTone;
11
+ energy: import("../../site-styles").StyleEnergy;
12
+ motion: import("../../site-styles").StyleMotion;
13
+ era: import("../../site-styles").StyleEra;
14
+ }>>>;
15
+ mode: "light" | "dark";
16
+ colors: readonly Readonly<{
17
+ name: import("@riverbankcms/blocks").PaletteTokenName;
18
+ hex: string;
19
+ }>[];
20
+ }>;
21
+ export declare const highContrastCharcoal: Readonly<{
22
+ id: import("@riverbankcms/blocks").PaletteVariantId<"high-contrast-charcoal">;
23
+ name: string;
24
+ description: string;
25
+ tags: Readonly<Partial<Readonly<{
26
+ tone: import("../../site-styles").StyleTone;
27
+ energy: import("../../site-styles").StyleEnergy;
28
+ motion: import("../../site-styles").StyleMotion;
29
+ era: import("../../site-styles").StyleEra;
30
+ }>>>;
31
+ mode: "light" | "dark";
32
+ colors: readonly Readonly<{
33
+ name: import("@riverbankcms/blocks").PaletteTokenName;
34
+ hex: string;
35
+ }>[];
36
+ }>;
37
+ export declare const highContrastMonochrome: Readonly<{
38
+ id: import("@riverbankcms/blocks").PaletteVariantId<"high-contrast-monochrome">;
39
+ name: string;
40
+ description: string;
41
+ tags: Readonly<Partial<Readonly<{
42
+ tone: import("../../site-styles").StyleTone;
43
+ energy: import("../../site-styles").StyleEnergy;
44
+ motion: import("../../site-styles").StyleMotion;
45
+ era: import("../../site-styles").StyleEra;
46
+ }>>>;
47
+ mode: "light" | "dark";
48
+ colors: readonly Readonly<{
49
+ name: import("@riverbankcms/blocks").PaletteTokenName;
50
+ hex: string;
51
+ }>[];
52
+ }>;
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Palette variant library.
3
+ *
4
+ * Each variant is a complete colour palette tagged on the four style axes
5
+ * (tone / energy / motion / era — motion is rarely used for palettes).
6
+ * Curated site styles declare ordered palette choices for the picker. Tags
7
+ * stay available as authoring/audit metadata; they no longer drive the Style
8
+ * configurator's option shape.
9
+ *
10
+ * `paletteOverrides` carries per-token hex edits applied on top of the
11
+ * chosen variant; see the merge semantics in `compileSiteThemeFromSelections`.
12
+ */
13
+ import type { PaletteVariant, PaletteVariantId } from './types';
14
+ export type { HexColor, PaletteColor, PaletteOverrides, PaletteTokenName, PaletteVariant, PaletteVariantId } from './types';
15
+ export { PALETTE_TOKEN_NAMES, asPaletteVariantId, definePaletteVariant, hexColorSchema, paletteOverridesSchema, paletteTokenNameSchema, paletteVariantIdSchema, paletteVariantSchema, } from './types';
16
+ export declare const paletteVariants: readonly [Readonly<{
17
+ id: PaletteVariantId<"brand-led-cool">;
18
+ name: string;
19
+ description: string;
20
+ tags: Readonly<Partial<Readonly<{
21
+ tone: import("../../site-styles").StyleTone;
22
+ energy: import("../../site-styles").StyleEnergy;
23
+ motion: import("../../site-styles").StyleMotion;
24
+ era: import("../../site-styles").StyleEra;
25
+ }>>>;
26
+ mode: "light" | "dark";
27
+ colors: readonly Readonly<{
28
+ name: import("@riverbankcms/blocks").PaletteTokenName;
29
+ hex: string;
30
+ }>[];
31
+ }>, Readonly<{
32
+ id: PaletteVariantId<"brand-led-warm">;
33
+ name: string;
34
+ description: string;
35
+ tags: Readonly<Partial<Readonly<{
36
+ tone: import("../../site-styles").StyleTone;
37
+ energy: import("../../site-styles").StyleEnergy;
38
+ motion: import("../../site-styles").StyleMotion;
39
+ era: import("../../site-styles").StyleEra;
40
+ }>>>;
41
+ mode: "light" | "dark";
42
+ colors: readonly Readonly<{
43
+ name: import("@riverbankcms/blocks").PaletteTokenName;
44
+ hex: string;
45
+ }>[];
46
+ }>, Readonly<{
47
+ id: PaletteVariantId<"brand-led-jewel">;
48
+ name: string;
49
+ description: string;
50
+ tags: Readonly<Partial<Readonly<{
51
+ tone: import("../../site-styles").StyleTone;
52
+ energy: import("../../site-styles").StyleEnergy;
53
+ motion: import("../../site-styles").StyleMotion;
54
+ era: import("../../site-styles").StyleEra;
55
+ }>>>;
56
+ mode: "light" | "dark";
57
+ colors: readonly Readonly<{
58
+ name: import("@riverbankcms/blocks").PaletteTokenName;
59
+ hex: string;
60
+ }>[];
61
+ }>, Readonly<{
62
+ id: PaletteVariantId<"warm-neutral-clay">;
63
+ name: string;
64
+ description: string;
65
+ tags: Readonly<Partial<Readonly<{
66
+ tone: import("../../site-styles").StyleTone;
67
+ energy: import("../../site-styles").StyleEnergy;
68
+ motion: import("../../site-styles").StyleMotion;
69
+ era: import("../../site-styles").StyleEra;
70
+ }>>>;
71
+ mode: "light" | "dark";
72
+ colors: readonly Readonly<{
73
+ name: import("@riverbankcms/blocks").PaletteTokenName;
74
+ hex: string;
75
+ }>[];
76
+ }>, Readonly<{
77
+ id: PaletteVariantId<"warm-neutral-cream">;
78
+ name: string;
79
+ description: string;
80
+ tags: Readonly<Partial<Readonly<{
81
+ tone: import("../../site-styles").StyleTone;
82
+ energy: import("../../site-styles").StyleEnergy;
83
+ motion: import("../../site-styles").StyleMotion;
84
+ era: import("../../site-styles").StyleEra;
85
+ }>>>;
86
+ mode: "light" | "dark";
87
+ colors: readonly Readonly<{
88
+ name: import("@riverbankcms/blocks").PaletteTokenName;
89
+ hex: string;
90
+ }>[];
91
+ }>, Readonly<{
92
+ id: PaletteVariantId<"warm-neutral-forest">;
93
+ name: string;
94
+ description: string;
95
+ tags: Readonly<Partial<Readonly<{
96
+ tone: import("../../site-styles").StyleTone;
97
+ energy: import("../../site-styles").StyleEnergy;
98
+ motion: import("../../site-styles").StyleMotion;
99
+ era: import("../../site-styles").StyleEra;
100
+ }>>>;
101
+ mode: "light" | "dark";
102
+ colors: readonly Readonly<{
103
+ name: import("@riverbankcms/blocks").PaletteTokenName;
104
+ hex: string;
105
+ }>[];
106
+ }>, Readonly<{
107
+ id: PaletteVariantId<"high-contrast-ink">;
108
+ name: string;
109
+ description: string;
110
+ tags: Readonly<Partial<Readonly<{
111
+ tone: import("../../site-styles").StyleTone;
112
+ energy: import("../../site-styles").StyleEnergy;
113
+ motion: import("../../site-styles").StyleMotion;
114
+ era: import("../../site-styles").StyleEra;
115
+ }>>>;
116
+ mode: "light" | "dark";
117
+ colors: readonly Readonly<{
118
+ name: import("@riverbankcms/blocks").PaletteTokenName;
119
+ hex: string;
120
+ }>[];
121
+ }>, Readonly<{
122
+ id: PaletteVariantId<"high-contrast-charcoal">;
123
+ name: string;
124
+ description: string;
125
+ tags: Readonly<Partial<Readonly<{
126
+ tone: import("../../site-styles").StyleTone;
127
+ energy: import("../../site-styles").StyleEnergy;
128
+ motion: import("../../site-styles").StyleMotion;
129
+ era: import("../../site-styles").StyleEra;
130
+ }>>>;
131
+ mode: "light" | "dark";
132
+ colors: readonly Readonly<{
133
+ name: import("@riverbankcms/blocks").PaletteTokenName;
134
+ hex: string;
135
+ }>[];
136
+ }>, Readonly<{
137
+ id: PaletteVariantId<"high-contrast-monochrome">;
138
+ name: string;
139
+ description: string;
140
+ tags: Readonly<Partial<Readonly<{
141
+ tone: import("../../site-styles").StyleTone;
142
+ energy: import("../../site-styles").StyleEnergy;
143
+ motion: import("../../site-styles").StyleMotion;
144
+ era: import("../../site-styles").StyleEra;
145
+ }>>>;
146
+ mode: "light" | "dark";
147
+ colors: readonly Readonly<{
148
+ name: import("@riverbankcms/blocks").PaletteTokenName;
149
+ hex: string;
150
+ }>[];
151
+ }>, Readonly<{
152
+ id: PaletteVariantId<"soft-natural-sage">;
153
+ name: string;
154
+ description: string;
155
+ tags: Readonly<Partial<Readonly<{
156
+ tone: import("../../site-styles").StyleTone;
157
+ energy: import("../../site-styles").StyleEnergy;
158
+ motion: import("../../site-styles").StyleMotion;
159
+ era: import("../../site-styles").StyleEra;
160
+ }>>>;
161
+ mode: "light" | "dark";
162
+ colors: readonly Readonly<{
163
+ name: import("@riverbankcms/blocks").PaletteTokenName;
164
+ hex: string;
165
+ }>[];
166
+ }>, Readonly<{
167
+ id: PaletteVariantId<"soft-natural-stone">;
168
+ name: string;
169
+ description: string;
170
+ tags: Readonly<Partial<Readonly<{
171
+ tone: import("../../site-styles").StyleTone;
172
+ energy: import("../../site-styles").StyleEnergy;
173
+ motion: import("../../site-styles").StyleMotion;
174
+ era: import("../../site-styles").StyleEra;
175
+ }>>>;
176
+ mode: "light" | "dark";
177
+ colors: readonly Readonly<{
178
+ name: import("@riverbankcms/blocks").PaletteTokenName;
179
+ hex: string;
180
+ }>[];
181
+ }>, Readonly<{
182
+ id: PaletteVariantId<"soft-natural-watercolor">;
183
+ name: string;
184
+ description: string;
185
+ tags: Readonly<Partial<Readonly<{
186
+ tone: import("../../site-styles").StyleTone;
187
+ energy: import("../../site-styles").StyleEnergy;
188
+ motion: import("../../site-styles").StyleMotion;
189
+ era: import("../../site-styles").StyleEra;
190
+ }>>>;
191
+ mode: "light" | "dark";
192
+ colors: readonly Readonly<{
193
+ name: import("@riverbankcms/blocks").PaletteTokenName;
194
+ hex: string;
195
+ }>[];
196
+ }>];
197
+ type UnbrandedPaletteVariantId<TValue> = TValue extends infer TRaw & {
198
+ readonly __brand: 'PaletteVariantId';
199
+ } ? TRaw extends string ? TRaw : never : never;
200
+ export type KnownPaletteVariantId = (typeof paletteVariants)[number]['id'];
201
+ export type KnownPaletteVariantIdValue = UnbrandedPaletteVariantId<KnownPaletteVariantId>;
202
+ export declare function findPaletteVariant(id: PaletteVariantId): PaletteVariant | undefined;
203
+ export declare function isKnownPaletteVariantId(value: string): value is KnownPaletteVariantId;
204
+ export type PersistedPaletteVariantIdParseResult = Readonly<{
205
+ kind: 'known';
206
+ id: KnownPaletteVariantId;
207
+ }> | Readonly<{
208
+ kind: 'unknown';
209
+ raw: string;
210
+ }> | Readonly<{
211
+ kind: 'empty';
212
+ }>;
213
+ export declare function parsePersistedPaletteVariantId(value: string | null | undefined): PersistedPaletteVariantIdParseResult;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Soft-natural family — calm, organic, plant-led voices. Pairs with Calm
3
+ * Studio, Modern Wellness, Warm Editorial site styles.
4
+ */
5
+ export declare const softNaturalSage: Readonly<{
6
+ id: import("@riverbankcms/blocks").PaletteVariantId<"soft-natural-sage">;
7
+ name: string;
8
+ description: string;
9
+ tags: Readonly<Partial<Readonly<{
10
+ tone: import("../../site-styles").StyleTone;
11
+ energy: import("../../site-styles").StyleEnergy;
12
+ motion: import("../../site-styles").StyleMotion;
13
+ era: import("../../site-styles").StyleEra;
14
+ }>>>;
15
+ mode: "light" | "dark";
16
+ colors: readonly Readonly<{
17
+ name: import("@riverbankcms/blocks").PaletteTokenName;
18
+ hex: string;
19
+ }>[];
20
+ }>;
21
+ export declare const softNaturalStone: Readonly<{
22
+ id: import("@riverbankcms/blocks").PaletteVariantId<"soft-natural-stone">;
23
+ name: string;
24
+ description: string;
25
+ tags: Readonly<Partial<Readonly<{
26
+ tone: import("../../site-styles").StyleTone;
27
+ energy: import("../../site-styles").StyleEnergy;
28
+ motion: import("../../site-styles").StyleMotion;
29
+ era: import("../../site-styles").StyleEra;
30
+ }>>>;
31
+ mode: "light" | "dark";
32
+ colors: readonly Readonly<{
33
+ name: import("@riverbankcms/blocks").PaletteTokenName;
34
+ hex: string;
35
+ }>[];
36
+ }>;
37
+ export declare const softNaturalWatercolor: Readonly<{
38
+ id: import("@riverbankcms/blocks").PaletteVariantId<"soft-natural-watercolor">;
39
+ name: string;
40
+ description: string;
41
+ tags: Readonly<Partial<Readonly<{
42
+ tone: import("../../site-styles").StyleTone;
43
+ energy: import("../../site-styles").StyleEnergy;
44
+ motion: import("../../site-styles").StyleMotion;
45
+ era: import("../../site-styles").StyleEra;
46
+ }>>>;
47
+ mode: "light" | "dark";
48
+ colors: readonly Readonly<{
49
+ name: import("@riverbankcms/blocks").PaletteTokenName;
50
+ hex: string;
51
+ }>[];
52
+ }>;
@@ -0,0 +1,154 @@
1
+ import { z } from 'zod';
2
+ import { type StyleTags } from '../../site-styles/styleTags';
3
+ /**
4
+ * Branded ID for a palette variant in the curated library. Shape matches the
5
+ * `Brand<T, TBrand>` convention in `site-styles/types.ts`. Use the helper at
6
+ * the parse/construction boundary.
7
+ */
8
+ export type PaletteVariantId<T extends string = string> = T & {
9
+ readonly __brand: 'PaletteVariantId';
10
+ };
11
+ export declare function asPaletteVariantId<const T extends string>(value: T): PaletteVariantId<T>;
12
+ export declare const paletteVariantIdSchema: z.ZodPipe<z.ZodString, z.ZodTransform<PaletteVariantId<string>, string>>;
13
+ /**
14
+ * Known palette role token names. Closed union so unknown tokens can't be
15
+ * persisted via `paletteOverrides`. Add a new role here intentionally.
16
+ */
17
+ export declare const PALETTE_TOKEN_NAMES: readonly ["primary", "primaryForeground", "secondary", "accent", "success", "warning", "destructive", "background", "surface", "surfaceAlt", "muted", "text", "border"];
18
+ export type PaletteTokenName = (typeof PALETTE_TOKEN_NAMES)[number];
19
+ export declare const paletteTokenNameSchema: z.ZodEnum<{
20
+ success: "success";
21
+ text: "text";
22
+ primary: "primary";
23
+ secondary: "secondary";
24
+ background: "background";
25
+ surface: "surface";
26
+ accent: "accent";
27
+ muted: "muted";
28
+ border: "border";
29
+ warning: "warning";
30
+ destructive: "destructive";
31
+ primaryForeground: "primaryForeground";
32
+ surfaceAlt: "surfaceAlt";
33
+ }>;
34
+ export type HexColor = string & {
35
+ readonly __brand: 'HexColor';
36
+ };
37
+ export declare const hexColorSchema: z.ZodPipe<z.ZodString, z.ZodTransform<HexColor, string>>;
38
+ /**
39
+ * One slot in a palette variant. `name` is restricted to the closed
40
+ * `PaletteTokenName` union so authoring typos (`'priamry'`) are caught at
41
+ * compile time; the value side stays as raw `string` (validated by
42
+ * `paletteColorSchema`'s less-strict regex for back-compat with existing data).
43
+ */
44
+ export type PaletteColor = Readonly<{
45
+ name: PaletteTokenName;
46
+ hex: string;
47
+ }>;
48
+ export type PaletteVariant<TId extends PaletteVariantId = PaletteVariantId> = Readonly<{
49
+ id: TId;
50
+ name: string;
51
+ description: string;
52
+ tags: StyleTags;
53
+ mode: 'light' | 'dark';
54
+ colors: ReadonlyArray<PaletteColor>;
55
+ }>;
56
+ export declare const paletteVariantSchema: z.ZodObject<{
57
+ id: z.ZodPipe<z.ZodString, z.ZodTransform<PaletteVariantId<string>, string>>;
58
+ name: z.ZodString;
59
+ description: z.ZodString;
60
+ tags: z.ZodObject<{
61
+ tone: z.ZodOptional<z.ZodEnum<{
62
+ classic: "classic";
63
+ bold: "bold";
64
+ minimal: "minimal";
65
+ }>>;
66
+ energy: z.ZodOptional<z.ZodEnum<{
67
+ calm: "calm";
68
+ vibrant: "vibrant";
69
+ }>>;
70
+ motion: z.ZodOptional<z.ZodEnum<{
71
+ standard: "standard";
72
+ subtle: "subtle";
73
+ expressive: "expressive";
74
+ }>>;
75
+ era: z.ZodOptional<z.ZodEnum<{
76
+ editorial: "editorial";
77
+ modern: "modern";
78
+ retro: "retro";
79
+ technical: "technical";
80
+ organic: "organic";
81
+ }>>;
82
+ }, z.core.$strip>;
83
+ mode: z.ZodEnum<{
84
+ dark: "dark";
85
+ light: "light";
86
+ }>;
87
+ colors: z.ZodArray<z.ZodObject<{
88
+ hex: z.ZodString;
89
+ name: z.ZodEnum<{
90
+ success: "success";
91
+ text: "text";
92
+ primary: "primary";
93
+ secondary: "secondary";
94
+ background: "background";
95
+ surface: "surface";
96
+ accent: "accent";
97
+ muted: "muted";
98
+ border: "border";
99
+ warning: "warning";
100
+ destructive: "destructive";
101
+ primaryForeground: "primaryForeground";
102
+ surfaceAlt: "surfaceAlt";
103
+ }>;
104
+ }, z.core.$strip>>;
105
+ }, z.core.$strip>;
106
+ export declare function definePaletteVariant<const TId extends string>(input: {
107
+ id: TId;
108
+ name: string;
109
+ description: string;
110
+ tags: StyleTags;
111
+ mode: 'light' | 'dark';
112
+ colors: ReadonlyArray<PaletteColor>;
113
+ }): PaletteVariant<PaletteVariantId<TId>>;
114
+ /**
115
+ * Sparse per-token override map. Loaded from / persisted to
116
+ * `site_theme_selections.palette_overrides`. Empty / null means "no overrides
117
+ * applied; the palette variant's own colours render unchanged."
118
+ */
119
+ export type PaletteOverrides = Readonly<Partial<Record<PaletteTokenName, HexColor>>>;
120
+ /**
121
+ * Sparse object of known token names → hex colours. Unknown keys are
122
+ * rejected at parse time; missing keys mean "no override for that token".
123
+ * Built as an explicit partial-object schema (rather than `z.record(enum, …)`)
124
+ * for unambiguous closure under Zod 4.
125
+ */
126
+ export declare const paletteOverridesSchema: z.ZodPipe<z.ZodObject<{
127
+ primary: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<HexColor, string>>>;
128
+ primaryForeground: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<HexColor, string>>>;
129
+ secondary: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<HexColor, string>>>;
130
+ accent: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<HexColor, string>>>;
131
+ success: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<HexColor, string>>>;
132
+ warning: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<HexColor, string>>>;
133
+ destructive: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<HexColor, string>>>;
134
+ background: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<HexColor, string>>>;
135
+ surface: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<HexColor, string>>>;
136
+ surfaceAlt: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<HexColor, string>>>;
137
+ muted: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<HexColor, string>>>;
138
+ text: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<HexColor, string>>>;
139
+ border: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<HexColor, string>>>;
140
+ }, z.core.$strict>, z.ZodTransform<Readonly<Partial<Record<"success" | "text" | "primary" | "secondary" | "background" | "surface" | "accent" | "muted" | "border" | "warning" | "destructive" | "primaryForeground" | "surfaceAlt", HexColor>>>, {
141
+ primary?: HexColor | undefined;
142
+ primaryForeground?: HexColor | undefined;
143
+ secondary?: HexColor | undefined;
144
+ accent?: HexColor | undefined;
145
+ success?: HexColor | undefined;
146
+ warning?: HexColor | undefined;
147
+ destructive?: HexColor | undefined;
148
+ background?: HexColor | undefined;
149
+ surface?: HexColor | undefined;
150
+ surfaceAlt?: HexColor | undefined;
151
+ muted?: HexColor | undefined;
152
+ text?: HexColor | undefined;
153
+ border?: HexColor | undefined;
154
+ }>>;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Warm-neutral family — earthy, organic, hand-made brand voices. Pairs with
3
+ * Warm Editorial, Modern Wellness, Calm Studio site styles.
4
+ */
5
+ export declare const warmNeutralClay: Readonly<{
6
+ id: import("@riverbankcms/blocks").PaletteVariantId<"warm-neutral-clay">;
7
+ name: string;
8
+ description: string;
9
+ tags: Readonly<Partial<Readonly<{
10
+ tone: import("../../site-styles").StyleTone;
11
+ energy: import("../../site-styles").StyleEnergy;
12
+ motion: import("../../site-styles").StyleMotion;
13
+ era: import("../../site-styles").StyleEra;
14
+ }>>>;
15
+ mode: "light" | "dark";
16
+ colors: readonly Readonly<{
17
+ name: import("@riverbankcms/blocks").PaletteTokenName;
18
+ hex: string;
19
+ }>[];
20
+ }>;
21
+ export declare const warmNeutralCream: Readonly<{
22
+ id: import("@riverbankcms/blocks").PaletteVariantId<"warm-neutral-cream">;
23
+ name: string;
24
+ description: string;
25
+ tags: Readonly<Partial<Readonly<{
26
+ tone: import("../../site-styles").StyleTone;
27
+ energy: import("../../site-styles").StyleEnergy;
28
+ motion: import("../../site-styles").StyleMotion;
29
+ era: import("../../site-styles").StyleEra;
30
+ }>>>;
31
+ mode: "light" | "dark";
32
+ colors: readonly Readonly<{
33
+ name: import("@riverbankcms/blocks").PaletteTokenName;
34
+ hex: string;
35
+ }>[];
36
+ }>;
37
+ export declare const warmNeutralForest: Readonly<{
38
+ id: import("@riverbankcms/blocks").PaletteVariantId<"warm-neutral-forest">;
39
+ name: string;
40
+ description: string;
41
+ tags: Readonly<Partial<Readonly<{
42
+ tone: import("../../site-styles").StyleTone;
43
+ energy: import("../../site-styles").StyleEnergy;
44
+ motion: import("../../site-styles").StyleMotion;
45
+ era: import("../../site-styles").StyleEra;
46
+ }>>>;
47
+ mode: "light" | "dark";
48
+ colors: readonly Readonly<{
49
+ name: import("@riverbankcms/blocks").PaletteTokenName;
50
+ hex: string;
51
+ }>[];
52
+ }>;