@riverbankcms/sdk 0.60.12 → 0.60.14

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 (91) hide show
  1. package/README.md +10 -7
  2. package/dist/_dts/api/src/bookingConfig.d.ts +31 -1
  3. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +38 -1
  4. package/dist/_dts/api/src/bookingOperations.d.ts +3 -0
  5. package/dist/_dts/api/src/bookingRecords.d.ts +45 -0
  6. package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +4 -4
  7. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +1 -5
  8. package/dist/_dts/api/src/communications.d.ts +1 -1
  9. package/dist/_dts/api/src/contentRuntime.d.ts +1 -1
  10. package/dist/_dts/api/src/endpoints.d.ts +89 -9
  11. package/dist/_dts/api/src/index.d.ts +2 -1
  12. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +1 -0
  13. package/dist/_dts/api/src/seoEndpoints.d.ts +2 -0
  14. package/dist/_dts/api/src/siteAssets.d.ts +0 -10
  15. package/dist/_dts/api/src/types.d.ts +1 -1
  16. package/dist/_dts/blocks/src/PageRenderer.d.ts +1 -0
  17. package/dist/_dts/blocks/src/index.d.ts +1 -0
  18. package/dist/_dts/blocks/src/portal/types.d.ts +1 -1
  19. package/dist/_dts/blocks/src/server.d.ts +1 -0
  20. package/dist/_dts/blocks/src/subroutes/fold.d.ts +40 -0
  21. package/dist/_dts/blocks/src/subroutes/formatDate.d.ts +12 -0
  22. package/dist/_dts/blocks/src/subroutes/index.d.ts +3 -0
  23. package/dist/_dts/blocks/src/subroutes/kinds.d.ts +32 -0
  24. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +3 -1
  25. package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +2 -0
  26. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/types.d.ts +1 -0
  27. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.interactive.d.ts +1 -0
  28. package/dist/_dts/blocks/src/system/spacing.d.ts +2 -1
  29. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +5 -0
  30. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +5 -1
  31. package/dist/_dts/core/src/booking-refunds.d.ts +8 -0
  32. package/dist/_dts/core/src/participant-identity.d.ts +1 -73
  33. package/dist/_dts/core/src/participants.d.ts +19 -7
  34. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +188 -36
  35. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +3 -3
  36. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +3 -3
  37. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +3 -3
  38. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +3 -3
  39. package/dist/_dts/preview-next/src/client/preview/SubrouteNoticePanel.d.ts +13 -0
  40. package/dist/_dts/preview-next/src/client/preview/subrouteNotice.d.ts +26 -0
  41. package/dist/_dts/sdk/src/contracts/page.d.ts +1 -0
  42. package/dist/_dts/sdk/src/public-api/contracts.d.ts +1 -0
  43. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +1 -0
  44. package/dist/_dts/sdk/src/routing/resolvePageContent.d.ts +4 -5
  45. package/dist/_dts/sdk/src/version.d.ts +1 -1
  46. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
  47. package/dist/_dts/theme-core/src/buttons/personalities/showtime-pill.d.ts +17 -0
  48. package/dist/_dts/theme-core/src/buttons/types.d.ts +1 -1
  49. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  50. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +66 -30
  51. package/dist/_dts/theme-core/src/palette/variants/brand-led.d.ts +16 -0
  52. package/dist/_dts/theme-core/src/palette/variants/index.d.ts +15 -0
  53. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +3 -3
  54. package/dist/_dts/theme-core/src/schema.d.ts +174 -6
  55. package/dist/_dts/theme-core/src/site-styles/appearancePresets.d.ts +328 -15
  56. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +54 -2
  57. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +124 -0
  58. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
  59. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
  60. package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +21 -0
  61. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +2 -1
  62. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
  63. package/dist/_dts/theme-core/src/site-styles/types.d.ts +135 -2
  64. package/dist/_dts/ui/src/badge.d.ts +1 -1
  65. package/dist/_dts/ui/src/button.d.ts +1 -1
  66. package/dist/cli/index.mjs +744 -176
  67. package/dist/client/bookings.mjs +115 -63
  68. package/dist/client/client.mjs +848 -227
  69. package/dist/client/hooks.mjs +737 -173
  70. package/dist/client/rendering/client.mjs +179 -100
  71. package/dist/client/rendering/islands.mjs +179 -99
  72. package/dist/client/rendering.mjs +847 -226
  73. package/dist/preview-next/before-render.mjs +103 -16
  74. package/dist/preview-next/client/runtime.mjs +1615 -319
  75. package/dist/preview-next/middleware.mjs +103 -16
  76. package/dist/server/components.mjs +838 -227
  77. package/dist/server/config-validation.mjs +737 -173
  78. package/dist/server/config.mjs +737 -173
  79. package/dist/server/data.mjs +737 -173
  80. package/dist/server/index.mjs +106 -79
  81. package/dist/server/next.mjs +841 -229
  82. package/dist/server/page-converter.mjs +589 -144
  83. package/dist/server/prebuild.mjs +1 -1
  84. package/dist/server/rendering/server.mjs +838 -227
  85. package/dist/server/rendering.mjs +838 -227
  86. package/dist/server/routing.mjs +771 -178
  87. package/dist/server/server.mjs +738 -174
  88. package/dist/server/theme-bridge.mjs +216 -39
  89. package/dist/server/theme.mjs +139 -37
  90. package/dist/styles/index.css +44 -2
  91. package/package.json +1 -1
@@ -1,12 +1,39 @@
1
- import { type BlockDesignPlan, type ContentFrameIntent, type HeroLegibilityStrategy, type SiteStyleEmphasis, type SiteStyleItemSurfaceIntent, type SiteStyleSectionTransitionIntent, type SiteStyleSurfaceIntent } from './types';
2
- export type AppearancePresetTarget = 'hero' | 'offerings' | 'events' | 'media-text' | 'testimonials' | 'faq' | 'contact-form' | 'cta' | 'site-header' | 'site-footer';
1
+ import { type BlockDesignPlan, type ContentFrameIntent, type HeroLegibilityStrategy, type ImageSurfaceMotion, type ImageSurfaceTreatment, type NonEmptyReadonlyArray, type SectionHeightIntent, type SiteStyleEmphasis, type SiteStyleItemSurfaceIntent, type SiteStyleSectionTransitionIntent, type SiteStyleSurfaceIntent, type TestimonialCardTreatment } from './types';
2
+ import type { BlockLayoutDesignProfile, BlockLayoutFamily } from './blockFlow';
3
+ import type { Theme } from '../schema';
4
+ export type AppearancePresetTarget = 'hero' | 'body-text' | 'offerings' | 'events' | 'media-text' | 'testimonials' | 'faq' | 'contact-form' | 'cta' | 'site-header' | 'site-footer';
3
5
  export type BlockAppearanceDesign = Readonly<{
4
6
  sectionSurface: SiteStyleSurfaceIntent;
5
7
  contentFrame: ContentFrameIntent;
6
8
  itemSurface: SiteStyleItemSurfaceIntent;
7
9
  transitionAfter: SiteStyleSectionTransitionIntent;
8
10
  emphasis: SiteStyleEmphasis;
11
+ sectionHeight?: SectionHeightIntent;
9
12
  heroLegibility?: HeroLegibilityStrategy;
13
+ imageSurfaceTreatment?: ImageSurfaceTreatment;
14
+ imageSurfaceMotion?: ImageSurfaceMotion;
15
+ testimonialCardTreatment?: TestimonialCardTreatment;
16
+ }>;
17
+ export type BlockAppearancePresetConstraints = Readonly<{
18
+ layoutFamilies?: readonly BlockLayoutFamily[];
19
+ layoutVariantKeys?: readonly string[];
20
+ }>;
21
+ export type BlockAppearanceOptionDesignPatch = Readonly<Partial<Pick<BlockAppearanceDesign, 'heroLegibility' | 'imageSurfaceTreatment' | 'imageSurfaceMotion' | 'sectionHeight' | 'testimonialCardTreatment'>>>;
22
+ export type BlockAppearanceLayoutDesignPatch = BlockAppearanceOptionDesignPatch;
23
+ export type BlockAppearanceOption = Readonly<{
24
+ id: string;
25
+ label: string;
26
+ designPatch: BlockAppearanceOptionDesignPatch;
27
+ }>;
28
+ export type BlockAppearanceOptionGroup = Readonly<{
29
+ id: string;
30
+ label: string;
31
+ options: NonEmptyReadonlyArray<BlockAppearanceOption>;
32
+ selectedOptionId: string;
33
+ }>;
34
+ export type BlockAppearanceLayoutPatch = Readonly<{
35
+ constraints: BlockAppearancePresetConstraints;
36
+ designPatch: BlockAppearanceLayoutDesignPatch;
10
37
  }>;
11
38
  export type BlockAppearancePreset = Readonly<{
12
39
  kind: 'block-design';
@@ -14,28 +41,95 @@ export type BlockAppearancePreset = Readonly<{
14
41
  target: Exclude<AppearancePresetTarget, 'site-header' | 'site-footer'>;
15
42
  label: string;
16
43
  blockKinds: readonly string[];
44
+ constraints?: BlockAppearancePresetConstraints;
45
+ /**
46
+ * Author-time curated defaults. Page design intent pins only the preset today;
47
+ * option-level user pinning needs a separate persistence model before these
48
+ * become editable controls.
49
+ */
50
+ optionGroups?: readonly BlockAppearanceOptionGroup[];
51
+ /**
52
+ * Layout-aware defaults keep a Look's visual recipe stable while preventing
53
+ * contradictions such as compact/micro layouts inheriting immersive height.
54
+ */
55
+ layoutPatches?: readonly BlockAppearanceLayoutPatch[];
17
56
  design: BlockAppearanceDesign;
18
57
  }>;
19
- export type SiteChromeAppearancePreset = Readonly<{
58
+ export type HeaderSurfaceToken = 'primary' | 'secondary' | 'accent';
59
+ export type HeaderTextColorToken = 'primaryForeground' | 'background' | 'surface' | 'text';
60
+ export type HeaderNavTreatment = 'minimal' | 'uppercase-underline';
61
+ export type HeaderDropdownTreatment = 'surface' | 'matched-solid';
62
+ export type HeaderCtaTreatment = 'default' | 'primary' | 'secondary' | 'inverted' | 'outline' | 'ghost';
63
+ export type HeaderBehavior = 'default' | 'sticky-shrink';
64
+ export type FooterSurfaceToken = 'primary' | 'secondary' | 'accent';
65
+ export type FooterBrandShade = 'base' | '800' | '900';
66
+ export type FooterTextColorToken = 'primaryForeground' | 'secondaryForeground' | 'accentForeground' | 'background' | 'surface' | 'text';
67
+ export type SiteHeaderAppearance = Readonly<{
68
+ surface: Readonly<{
69
+ kind: 'brand-solid';
70
+ token: HeaderSurfaceToken;
71
+ textColorToken: HeaderTextColorToken;
72
+ }> | Readonly<{
73
+ kind: 'neutral-solid';
74
+ token: 'surface' | 'background';
75
+ textColorToken: 'text';
76
+ }>;
77
+ navTreatment: HeaderNavTreatment;
78
+ dropdownTreatment: HeaderDropdownTreatment;
79
+ ctaTreatment: HeaderCtaTreatment;
80
+ behavior: HeaderBehavior;
81
+ }>;
82
+ export type SiteFooterAppearance = Readonly<{
83
+ kind: 'grounding';
84
+ surface: Extract<SiteStyleSurfaceIntent, 'base' | 'muted-band' | 'accent-band'>;
85
+ emphasis: SiteStyleEmphasis;
86
+ }> | Readonly<{
87
+ kind: 'brand-two-band';
88
+ surface: Readonly<{
89
+ token: FooterSurfaceToken;
90
+ shade: FooterBrandShade;
91
+ textColorToken: FooterTextColorToken;
92
+ }>;
93
+ bottomBand: Readonly<{
94
+ token: FooterSurfaceToken;
95
+ shade: FooterBrandShade;
96
+ textColorToken: FooterTextColorToken;
97
+ }>;
98
+ emphasis: SiteStyleEmphasis;
99
+ }>;
100
+ export type SiteHeaderAppearancePreset = Readonly<{
20
101
  kind: 'site-chrome';
21
102
  id: string;
22
- target: Extract<AppearancePresetTarget, 'site-header' | 'site-footer'>;
103
+ target: 'site-header';
23
104
  label: string;
24
- chrome: Readonly<{
25
- surface: Extract<SiteStyleSurfaceIntent, 'base' | 'muted-band' | 'accent-band'>;
26
- emphasis: SiteStyleEmphasis;
27
- }>;
105
+ header: SiteHeaderAppearance;
28
106
  }>;
107
+ export type SiteFooterAppearancePreset = Readonly<{
108
+ kind: 'site-chrome';
109
+ id: string;
110
+ target: 'site-footer';
111
+ label: string;
112
+ footer: SiteFooterAppearance;
113
+ }>;
114
+ export type SiteChromeAppearancePreset = SiteHeaderAppearancePreset | SiteFooterAppearancePreset;
29
115
  export type AppearancePreset = BlockAppearancePreset | SiteChromeAppearancePreset;
30
116
  export type SiteChromeAppearancePresetTarget = SiteChromeAppearancePreset['target'];
31
117
  export type BlockAppearancePresetTarget = BlockAppearancePreset['target'];
32
- export declare const appearancePresetTargets: readonly ["hero", "offerings", "events", "media-text", "testimonials", "faq", "contact-form", "cta", "site-header", "site-footer"];
118
+ export declare const appearancePresetTargets: readonly ["hero", "body-text", "offerings", "events", "media-text", "testimonials", "faq", "contact-form", "cta", "site-header", "site-footer"];
119
+ export declare function layoutProfileSupportsConstraints(profile: BlockLayoutDesignProfile, constraints: BlockAppearancePresetConstraints): boolean;
120
+ export declare function resolveBlockAppearancePresetDesign(preset: BlockAppearancePreset, layoutProfile?: BlockLayoutDesignProfile | null): BlockAppearanceDesign;
121
+ export declare function resolveHeaderCtaVariant(theme: Theme, treatment: HeaderCtaTreatment): string | undefined;
122
+ export declare function compileSiteHeaderAppearancePreset(preset: SiteHeaderAppearancePreset, theme: Theme): Theme['header'];
123
+ export declare function compileSiteFooterAppearancePreset(preset: SiteFooterAppearancePreset, theme: Theme): Theme['footer'];
33
124
  export declare const appearancePresets: readonly [{
34
125
  readonly kind: "block-design";
35
126
  readonly id: "hero-immersive-image";
36
127
  readonly target: "hero";
37
128
  readonly label: "Immersive image hero";
38
129
  readonly blockKinds: readonly ["block.hero"];
130
+ readonly constraints: {
131
+ readonly layoutFamilies: readonly ["centered", "compact"];
132
+ };
39
133
  readonly design: {
40
134
  readonly sectionSurface: "hero-image";
41
135
  readonly contentFrame: {
@@ -44,7 +138,119 @@ export declare const appearancePresets: readonly [{
44
138
  readonly itemSurface: "none";
45
139
  readonly transitionAfter: "soft-fade-short";
46
140
  readonly emphasis: "high";
47
- readonly heroLegibility: "scrim-gradient";
141
+ readonly sectionHeight: "hero";
142
+ readonly imageSurfaceTreatment: {
143
+ readonly kind: "neutral-wash";
144
+ };
145
+ };
146
+ }, {
147
+ readonly kind: "block-design";
148
+ readonly id: "hero-brand-scrim";
149
+ readonly target: "hero";
150
+ readonly label: "Brand scrim image hero";
151
+ readonly blockKinds: readonly ["block.hero"];
152
+ readonly constraints: {
153
+ readonly layoutFamilies: readonly ["centered", "compact"];
154
+ };
155
+ readonly optionGroups: readonly [{
156
+ readonly id: "image-surface-treatment";
157
+ readonly label: "Treatment";
158
+ readonly selectedOptionId: "brand-scrim-primary";
159
+ readonly options: readonly [{
160
+ readonly id: "brand-scrim-primary";
161
+ readonly label: "Brand scrim";
162
+ readonly designPatch: {
163
+ readonly imageSurfaceTreatment: {
164
+ readonly kind: "brand-scrim";
165
+ readonly token: "primary";
166
+ };
167
+ };
168
+ }, {
169
+ readonly id: "neutral-scrim";
170
+ readonly label: "Neutral scrim";
171
+ readonly designPatch: {
172
+ readonly imageSurfaceTreatment: {
173
+ readonly kind: "neutral-scrim";
174
+ };
175
+ };
176
+ }];
177
+ }];
178
+ readonly layoutPatches: readonly [{
179
+ readonly constraints: {
180
+ readonly layoutVariantKeys: readonly ["micro"];
181
+ };
182
+ readonly designPatch: {
183
+ readonly sectionHeight: "banner";
184
+ };
185
+ }];
186
+ readonly design: {
187
+ readonly sectionSurface: "hero-image";
188
+ readonly contentFrame: {
189
+ readonly kind: "plain";
190
+ };
191
+ readonly itemSurface: "none";
192
+ readonly transitionAfter: "soft-fade-short";
193
+ readonly emphasis: "high";
194
+ readonly sectionHeight: "immersive";
195
+ readonly imageSurfaceTreatment: {
196
+ readonly kind: "brand-scrim";
197
+ readonly token: "primary";
198
+ };
199
+ };
200
+ }, {
201
+ readonly kind: "block-design";
202
+ readonly id: "hero-brand-scrim-fixed-frame";
203
+ readonly target: "hero";
204
+ readonly label: "Fixed-frame brand scrim hero";
205
+ readonly blockKinds: readonly ["block.hero"];
206
+ readonly constraints: {
207
+ readonly layoutFamilies: readonly ["centered", "compact"];
208
+ };
209
+ readonly optionGroups: readonly [{
210
+ readonly id: "image-surface-treatment";
211
+ readonly label: "Treatment";
212
+ readonly selectedOptionId: "brand-scrim-primary";
213
+ readonly options: readonly [{
214
+ readonly id: "brand-scrim-primary";
215
+ readonly label: "Brand scrim";
216
+ readonly designPatch: {
217
+ readonly imageSurfaceTreatment: {
218
+ readonly kind: "brand-scrim";
219
+ readonly token: "primary";
220
+ };
221
+ };
222
+ }, {
223
+ readonly id: "neutral-scrim";
224
+ readonly label: "Neutral scrim";
225
+ readonly designPatch: {
226
+ readonly imageSurfaceTreatment: {
227
+ readonly kind: "neutral-scrim";
228
+ };
229
+ };
230
+ }];
231
+ }];
232
+ readonly layoutPatches: readonly [{
233
+ readonly constraints: {
234
+ readonly layoutVariantKeys: readonly ["micro"];
235
+ };
236
+ readonly designPatch: {
237
+ readonly sectionHeight: "banner";
238
+ };
239
+ }];
240
+ readonly design: {
241
+ readonly sectionSurface: "hero-image";
242
+ readonly contentFrame: {
243
+ readonly kind: "plain";
244
+ };
245
+ readonly itemSurface: "none";
246
+ readonly transitionAfter: "soft-fade-short";
247
+ readonly emphasis: "high";
248
+ readonly sectionHeight: "immersive";
249
+ readonly imageSurfaceTreatment: {
250
+ readonly kind: "brand-scrim";
251
+ readonly token: "primary";
252
+ };
253
+ readonly imageSurfaceMotion: "fixed-frame";
48
254
  };
49
255
  }, {
50
256
  readonly kind: "block-design";
@@ -62,6 +268,21 @@ export declare const appearancePresets: readonly [{
62
268
  readonly transitionAfter: "none";
63
269
  readonly emphasis: "high";
64
270
  };
271
+ }, {
272
+ readonly kind: "block-design";
273
+ readonly id: "body-text-editorial-intro";
274
+ readonly target: "body-text";
275
+ readonly label: "Editorial intro copy";
276
+ readonly blockKinds: readonly ["block.body-text"];
277
+ readonly design: {
278
+ readonly sectionSurface: "base";
279
+ readonly contentFrame: {
280
+ readonly kind: "plain";
281
+ };
282
+ readonly itemSurface: "none";
283
+ readonly transitionAfter: "soft-fade-short";
284
+ readonly emphasis: "high";
285
+ };
65
286
  }, {
66
287
  readonly kind: "block-design";
67
288
  readonly id: "offerings-calm-list";
@@ -155,6 +376,38 @@ export declare const appearancePresets: readonly [{
155
376
  readonly transitionAfter: "soft-fade-short";
156
377
  readonly emphasis: "high";
157
378
  };
379
+ }, {
380
+ readonly kind: "block-design";
381
+ readonly id: "testimonials-dark-proof";
382
+ readonly target: "testimonials";
383
+ readonly label: "Dark proof panel";
384
+ readonly blockKinds: readonly ["block.testimonials"];
385
+ readonly design: {
386
+ readonly sectionSurface: "accent-band";
387
+ readonly contentFrame: Readonly<{
388
+ kind: "panel";
389
+ treatment: "raised";
390
+ }>;
391
+ readonly itemSurface: "raised";
392
+ readonly transitionAfter: "soft-fade-short";
393
+ readonly emphasis: "high";
394
+ };
395
+ }, {
396
+ readonly kind: "block-design";
397
+ readonly id: "testimonials-accent-quote-proof";
398
+ readonly target: "testimonials";
399
+ readonly label: "Accent quote proof";
400
+ readonly blockKinds: readonly ["block.testimonials"];
401
+ readonly design: {
402
+ readonly sectionSurface: "accent-band";
403
+ readonly contentFrame: {
404
+ readonly kind: "plain";
405
+ };
406
+ readonly itemSurface: "raised";
407
+ readonly transitionAfter: "soft-fade-short";
408
+ readonly emphasis: "high";
409
+ readonly testimonialCardTreatment: "accent-quote";
410
+ };
158
411
  }, {
159
412
  readonly kind: "block-design";
160
413
  readonly id: "faq-contained-help";
@@ -187,6 +440,22 @@ export declare const appearancePresets: readonly [{
187
440
  readonly transitionAfter: "soft-fade-short";
188
441
  readonly emphasis: "medium";
189
442
  };
443
+ }, {
444
+ readonly kind: "block-design";
445
+ readonly id: "contact-form-dark-card";
446
+ readonly target: "contact-form";
447
+ readonly label: "Dark form card";
448
+ readonly blockKinds: readonly ["block.form"];
449
+ readonly design: {
450
+ readonly sectionSurface: "accent-band";
451
+ readonly contentFrame: Readonly<{
452
+ kind: "panel";
453
+ treatment: "raised";
454
+ }>;
455
+ readonly itemSurface: "none";
456
+ readonly transitionAfter: "soft-fade-short";
457
+ readonly emphasis: "high";
458
+ };
190
459
  }, {
191
460
  readonly kind: "block-design";
192
461
  readonly id: "cta-accent-band";
@@ -207,21 +476,64 @@ export declare const appearancePresets: readonly [{
207
476
  readonly id: "header-clean-base";
208
477
  readonly target: "site-header";
209
478
  readonly label: "Clean base header";
210
- readonly chrome: {
211
- readonly surface: "base";
212
- readonly emphasis: "medium";
479
+ readonly header: {
480
+ readonly surface: {
481
+ readonly kind: "neutral-solid";
482
+ readonly token: "surface";
483
+ readonly textColorToken: "text";
484
+ };
485
+ readonly navTreatment: "minimal";
486
+ readonly dropdownTreatment: "surface";
487
+ readonly ctaTreatment: "default";
488
+ readonly behavior: "default";
489
+ };
490
+ }, {
491
+ readonly kind: "site-chrome";
492
+ readonly id: "site-header-brand-solid-inverted-cta";
493
+ readonly target: "site-header";
494
+ readonly label: "Brand solid header with inverted CTA";
495
+ readonly header: {
496
+ readonly surface: {
497
+ readonly kind: "brand-solid";
498
+ readonly token: "primary";
499
+ readonly textColorToken: "primaryForeground";
500
+ };
501
+ readonly navTreatment: "uppercase-underline";
502
+ readonly dropdownTreatment: "matched-solid";
503
+ readonly ctaTreatment: "inverted";
504
+ readonly behavior: "sticky-shrink";
213
505
  };
214
506
  }, {
215
507
  readonly kind: "site-chrome";
216
508
  readonly id: "footer-muted-grounding";
217
509
  readonly target: "site-footer";
218
510
  readonly label: "Muted grounding footer";
219
- readonly chrome: {
511
+ readonly footer: {
512
+ readonly kind: "grounding";
220
513
  readonly surface: "muted-band";
221
514
  readonly emphasis: "low";
222
515
  };
516
+ }, {
517
+ readonly kind: "site-chrome";
518
+ readonly id: "site-footer-brand-two-band";
519
+ readonly target: "site-footer";
520
+ readonly label: "Two-band brand footer";
521
+ readonly footer: {
522
+ readonly kind: "brand-two-band";
523
+ readonly surface: {
524
+ readonly token: "primary";
525
+ readonly shade: "800";
526
+ readonly textColorToken: "primaryForeground";
527
+ };
528
+ readonly bottomBand: {
529
+ readonly token: "primary";
530
+ readonly shade: "900";
531
+ readonly textColorToken: "primaryForeground";
532
+ };
533
+ readonly emphasis: "high";
534
+ };
223
535
  }];
224
- export type BlockAppearancePresetBlockKind = Extract<typeof appearancePresets[number], {
536
+ export type BlockAppearancePresetBlockKind = Extract<(typeof appearancePresets)[number], {
225
537
  kind: 'block-design';
226
538
  }>['blockKinds'][number];
227
539
  export declare function getAppearancePresetsForTarget(target: SiteChromeAppearancePresetTarget): readonly SiteChromeAppearancePreset[];
@@ -230,4 +542,5 @@ export declare function blockDesignPlanFromAppearancePreset<TBlockId extends str
230
542
  blockId: TBlockId;
231
543
  blockKind: string;
232
544
  purpose: TPurpose;
545
+ layoutProfile?: BlockLayoutDesignProfile | null;
233
546
  }>): BlockDesignPlan<TBlockId, TPurpose>;
@@ -1,9 +1,27 @@
1
1
  import { type ButtonPersonalityId, type KnownButtonPersonalityId } from '../buttons/personalities';
2
2
  import { type KnownPaletteVariantId, type PaletteVariantId } from '../palette/variants';
3
+ import type { Theme } from '../schema';
3
4
  import { type CuratedChoice } from './curatedChoices';
4
- import { type DesignSystemTemplate, type NonEmptyReadonlyArray, type SiteStyleId } from './types';
5
- export declare const curatedSiteStyleIdValues: readonly ["site-style:calm-studio", "site-style:clear-professional", "site-style:warm-editorial", "site-style:bright-community", "site-style:quiet-luxury", "site-style:practical-services", "site-style:modern-wellness", "site-style:bold-launch"];
5
+ import { type AppearancePresetId, type DesignSystemTemplate, type NonEmptyReadonlyArray, type SiteStyleId } from './types';
6
+ export declare const curatedSiteStyleIdValues: readonly ["site-style:calm-studio", "site-style:clear-professional", "site-style:warm-editorial", "site-style:bright-community", "site-style:quiet-luxury", "site-style:practical-services", "site-style:modern-wellness", "site-style:bold-launch", "site-style:south-west-twerk-school"];
6
7
  export type CuratedSiteStyleIdValue = typeof curatedSiteStyleIdValues[number];
8
+ type CuratedSiteStyleHeroOverrides = Readonly<{
9
+ typography?: NonNullable<NonNullable<Theme['hero']>['typography']>;
10
+ }>;
11
+ type CuratedSiteStyleBodyTextOverrides = Readonly<{
12
+ intro?: NonNullable<NonNullable<Theme['bodyText']>['intro']>;
13
+ }>;
14
+ /**
15
+ * Site-style-specific Theme overrides are applied after token recipes,
16
+ * button personality, and palette variant selection have compiled the base
17
+ * Theme. Values here intentionally win; palette and button selections remain
18
+ * independent Style configurator choices.
19
+ */
20
+ export type CuratedSiteStyleThemeOverrides = Readonly<{
21
+ typography?: Theme['typography'];
22
+ hero?: CuratedSiteStyleHeroOverrides;
23
+ bodyText?: CuratedSiteStyleBodyTextOverrides;
24
+ }>;
7
25
  export type ButtonPersonalityChoice = CuratedChoice<KnownButtonPersonalityId>;
8
26
  export type PaletteVariantChoice = CuratedChoice<KnownPaletteVariantId>;
9
27
  export type CuratedSiteStyle = Readonly<{
@@ -13,6 +31,8 @@ export type CuratedSiteStyle = Readonly<{
13
31
  generationBrief: string;
14
32
  selectionKeywords: readonly string[];
15
33
  template: DesignSystemTemplate;
34
+ themeOverrides?: CuratedSiteStyleThemeOverrides;
35
+ recommendedAppearancePresetIds: readonly AppearancePresetId[];
16
36
  /** Authored picker choices. First item is the default/fallback. */
17
37
  buttonPersonalityChoices: NonEmptyReadonlyArray<ButtonPersonalityChoice>;
18
38
  /** Authored picker choices. First item is the default/fallback. */
@@ -32,6 +52,21 @@ export declare const curatedSiteStyles: readonly [Readonly<{
32
52
  generationBrief: string;
33
53
  selectionKeywords: readonly string[];
34
54
  template: DesignSystemTemplate;
55
+ themeOverrides?: CuratedSiteStyleThemeOverrides;
56
+ recommendedAppearancePresetIds: readonly AppearancePresetId[];
57
+ /** Authored picker choices. First item is the default/fallback. */
58
+ buttonPersonalityChoices: NonEmptyReadonlyArray<ButtonPersonalityChoice>;
59
+ /** Authored picker choices. First item is the default/fallback. */
60
+ paletteVariantChoices: NonEmptyReadonlyArray<PaletteVariantChoice>;
61
+ }>, Readonly<{
62
+ id: SiteStyleId;
63
+ name: string;
64
+ description: string;
65
+ generationBrief: string;
66
+ selectionKeywords: readonly string[];
67
+ template: DesignSystemTemplate;
68
+ themeOverrides?: CuratedSiteStyleThemeOverrides;
69
+ recommendedAppearancePresetIds: readonly AppearancePresetId[];
35
70
  /** Authored picker choices. First item is the default/fallback. */
36
71
  buttonPersonalityChoices: NonEmptyReadonlyArray<ButtonPersonalityChoice>;
37
72
  /** Authored picker choices. First item is the default/fallback. */
@@ -43,6 +78,8 @@ export declare const curatedSiteStyles: readonly [Readonly<{
43
78
  generationBrief: string;
44
79
  selectionKeywords: readonly string[];
45
80
  template: DesignSystemTemplate;
81
+ themeOverrides?: CuratedSiteStyleThemeOverrides;
82
+ recommendedAppearancePresetIds: readonly AppearancePresetId[];
46
83
  /** Authored picker choices. First item is the default/fallback. */
47
84
  buttonPersonalityChoices: NonEmptyReadonlyArray<ButtonPersonalityChoice>;
48
85
  /** Authored picker choices. First item is the default/fallback. */
@@ -54,6 +91,8 @@ export declare const curatedSiteStyles: readonly [Readonly<{
54
91
  generationBrief: string;
55
92
  selectionKeywords: readonly string[];
56
93
  template: DesignSystemTemplate;
94
+ themeOverrides?: CuratedSiteStyleThemeOverrides;
95
+ recommendedAppearancePresetIds: readonly AppearancePresetId[];
57
96
  /** Authored picker choices. First item is the default/fallback. */
58
97
  buttonPersonalityChoices: NonEmptyReadonlyArray<ButtonPersonalityChoice>;
59
98
  /** Authored picker choices. First item is the default/fallback. */
@@ -65,6 +104,8 @@ export declare const curatedSiteStyles: readonly [Readonly<{
65
104
  generationBrief: string;
66
105
  selectionKeywords: readonly string[];
67
106
  template: DesignSystemTemplate;
107
+ themeOverrides?: CuratedSiteStyleThemeOverrides;
108
+ recommendedAppearancePresetIds: readonly AppearancePresetId[];
68
109
  /** Authored picker choices. First item is the default/fallback. */
69
110
  buttonPersonalityChoices: NonEmptyReadonlyArray<ButtonPersonalityChoice>;
70
111
  /** Authored picker choices. First item is the default/fallback. */
@@ -76,6 +117,8 @@ export declare const curatedSiteStyles: readonly [Readonly<{
76
117
  generationBrief: string;
77
118
  selectionKeywords: readonly string[];
78
119
  template: DesignSystemTemplate;
120
+ themeOverrides?: CuratedSiteStyleThemeOverrides;
121
+ recommendedAppearancePresetIds: readonly AppearancePresetId[];
79
122
  /** Authored picker choices. First item is the default/fallback. */
80
123
  buttonPersonalityChoices: NonEmptyReadonlyArray<ButtonPersonalityChoice>;
81
124
  /** Authored picker choices. First item is the default/fallback. */
@@ -87,6 +130,8 @@ export declare const curatedSiteStyles: readonly [Readonly<{
87
130
  generationBrief: string;
88
131
  selectionKeywords: readonly string[];
89
132
  template: DesignSystemTemplate;
133
+ themeOverrides?: CuratedSiteStyleThemeOverrides;
134
+ recommendedAppearancePresetIds: readonly AppearancePresetId[];
90
135
  /** Authored picker choices. First item is the default/fallback. */
91
136
  buttonPersonalityChoices: NonEmptyReadonlyArray<ButtonPersonalityChoice>;
92
137
  /** Authored picker choices. First item is the default/fallback. */
@@ -98,6 +143,8 @@ export declare const curatedSiteStyles: readonly [Readonly<{
98
143
  generationBrief: string;
99
144
  selectionKeywords: readonly string[];
100
145
  template: DesignSystemTemplate;
146
+ themeOverrides?: CuratedSiteStyleThemeOverrides;
147
+ recommendedAppearancePresetIds: readonly AppearancePresetId[];
101
148
  /** Authored picker choices. First item is the default/fallback. */
102
149
  buttonPersonalityChoices: NonEmptyReadonlyArray<ButtonPersonalityChoice>;
103
150
  /** Authored picker choices. First item is the default/fallback. */
@@ -109,6 +156,8 @@ export declare const curatedSiteStyles: readonly [Readonly<{
109
156
  generationBrief: string;
110
157
  selectionKeywords: readonly string[];
111
158
  template: DesignSystemTemplate;
159
+ themeOverrides?: CuratedSiteStyleThemeOverrides;
160
+ recommendedAppearancePresetIds: readonly AppearancePresetId[];
112
161
  /** Authored picker choices. First item is the default/fallback. */
113
162
  buttonPersonalityChoices: NonEmptyReadonlyArray<ButtonPersonalityChoice>;
114
163
  /** Authored picker choices. First item is the default/fallback. */
@@ -121,9 +170,12 @@ export declare const curatedSiteStylesById: Map<SiteStyleId, Readonly<{
121
170
  generationBrief: string;
122
171
  selectionKeywords: readonly string[];
123
172
  template: DesignSystemTemplate;
173
+ themeOverrides?: CuratedSiteStyleThemeOverrides;
174
+ recommendedAppearancePresetIds: readonly AppearancePresetId[];
124
175
  /** Authored picker choices. First item is the default/fallback. */
125
176
  buttonPersonalityChoices: NonEmptyReadonlyArray<ButtonPersonalityChoice>;
126
177
  /** Authored picker choices. First item is the default/fallback. */
127
178
  paletteVariantChoices: NonEmptyReadonlyArray<PaletteVariantChoice>;
128
179
  }>>;
129
180
  export declare function getCuratedSiteStyle(id: SiteStyleId): CuratedSiteStyle | null;
181
+ export {};