@riverbankcms/sdk 0.64.0 → 0.67.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/_dts/api/src/aiPlayground.d.ts +18 -11
  2. package/dist/_dts/api/src/apiEndpointTypes.d.ts +12 -0
  3. package/dist/_dts/api/src/bookingOperations.d.ts +1 -1
  4. package/dist/_dts/api/src/endpoints.d.ts +25 -0
  5. package/dist/_dts/api/src/sdkConfig/contracts.d.ts +0 -40
  6. package/dist/_dts/api/src/sdkContracts.d.ts +1 -1
  7. package/dist/_dts/api/src/siteMembers.d.ts +1 -1
  8. package/dist/_dts/api/src/siteOperations.d.ts +1 -1
  9. package/dist/_dts/billing/src/plans/types.d.ts +1 -1
  10. package/dist/_dts/blocks/src/bindings/index.d.ts +1 -1
  11. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  12. package/dist/_dts/blocks/src/system/transforms/registry/formatting.d.ts +1 -0
  13. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +2 -1
  14. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +81 -0
  15. package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +7 -3
  16. package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -2
  17. package/dist/_dts/sdk/src/cli/commands/push/execute/footer.d.ts +33 -0
  18. package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +2 -1
  19. package/dist/_dts/sdk/src/cli/env.d.ts +2 -1
  20. package/dist/_dts/sdk/src/cli/merge-remote/entryMergePush.d.ts +2 -1
  21. package/dist/_dts/sdk/src/cli/site-commands/commandKeys.d.ts +13 -0
  22. package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +114 -0
  23. package/dist/_dts/sdk/src/cli/site-commands/entryCommands.d.ts +26 -48
  24. package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +50 -0
  25. package/dist/_dts/sdk/src/cli/site-commands/formCommands.d.ts +57 -0
  26. package/dist/_dts/sdk/src/cli/site-commands/index.d.ts +5 -0
  27. package/dist/_dts/sdk/src/cli/site-commands/navigationCommands.d.ts +57 -0
  28. package/dist/_dts/sdk/src/cli/site-commands/pageCommands.d.ts +83 -0
  29. package/dist/_dts/sdk/src/cli/site-commands/pushExecution.d.ts +67 -14
  30. package/dist/_dts/sdk/src/cli/sync/executor.d.ts +10 -28
  31. package/dist/_dts/sdk/src/cli/sync/index.d.ts +1 -1
  32. package/dist/_dts/sdk/src/config/dashboard-validation.d.ts +0 -48
  33. package/dist/_dts/sdk/src/config/types.d.ts +1 -1
  34. package/dist/_dts/sdk/src/version.d.ts +1 -1
  35. package/dist/_dts/site-commands/src/adapter.d.ts +2 -2
  36. package/dist/_dts/site-commands/src/commands.d.ts +410 -13
  37. package/dist/_dts/site-commands/src/domain.d.ts +3 -3
  38. package/dist/_dts/site-commands/src/exposure.d.ts +41 -0
  39. package/dist/_dts/site-commands/src/index.d.ts +1 -0
  40. package/dist/_dts/site-commands/src/metadata.d.ts +93 -2
  41. package/dist/_dts/site-commands/src/planner.d.ts +13 -6
  42. package/dist/_dts/site-commands/src/refs.d.ts +13 -1
  43. package/dist/_dts/theme-core/src/palette/utils/index.d.ts +1 -0
  44. package/dist/_dts/theme-core/src/palette/utils/onColor.d.ts +2 -0
  45. package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +83 -0
  46. package/dist/_dts/theme-core/src/site-styles/contentTemplateRuntimeCompiler.d.ts +2 -1
  47. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +89 -12
  48. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +8 -2
  49. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
  50. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +3 -2
  51. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +9 -6
  52. package/dist/_dts/ui/src/callout.d.ts +1 -1
  53. package/dist/cli/index.mjs +4290 -2513
  54. package/dist/client/client.mjs +598 -372
  55. package/dist/client/hooks.mjs +311 -123
  56. package/dist/client/rendering/client.mjs +209 -68
  57. package/dist/client/rendering/islands.mjs +281 -150
  58. package/dist/client/rendering.mjs +416 -190
  59. package/dist/preview-next/before-render.mjs +61 -13
  60. package/dist/preview-next/client/runtime.mjs +930 -376
  61. package/dist/preview-next/middleware.mjs +61 -13
  62. package/dist/server/components.mjs +526 -325
  63. package/dist/server/config-validation.mjs +313 -125
  64. package/dist/server/config.mjs +313 -125
  65. package/dist/server/data.mjs +311 -123
  66. package/dist/server/index.mjs +78 -16
  67. package/dist/server/next.mjs +527 -326
  68. package/dist/server/page-converter.mjs +159 -41
  69. package/dist/server/prebuild.mjs +1 -1
  70. package/dist/server/rendering/server.mjs +526 -325
  71. package/dist/server/rendering.mjs +526 -325
  72. package/dist/server/routing.mjs +392 -131
  73. package/dist/server/server.mjs +312 -124
  74. package/dist/server/theme-bridge.mjs +155 -48
  75. package/package.json +1 -1
  76. package/dist/_dts/path-utils/src/index.d.ts +0 -8
  77. package/dist/_dts/path-utils/src/redirectPaths.d.ts +0 -26
  78. package/dist/_dts/path-utils/src/safeAppPath.d.ts +0 -26
@@ -229,29 +229,36 @@ export type ApplyAiDesignerThemePatchResponse = {
229
229
  themeId: string;
230
230
  themeUpdatedAt: string;
231
231
  };
232
+ export type AiDesignerCommandBackedPageProposal = {
233
+ proposalId: string;
234
+ surface: "page";
235
+ baseFingerprint: string;
236
+ commandBatch: {
237
+ recipeVersion: string;
238
+ batchRef: string;
239
+ target: {
240
+ siteRef: string;
241
+ };
242
+ commands: readonly unknown[];
243
+ };
244
+ preview: unknown;
245
+ dryRunSummary?: string;
246
+ };
232
247
  export type ApplyAiDesignerPageOpsRequest = {
233
248
  kind: "reorder_blocks";
234
249
  pageId: string;
235
250
  baseBlockIds: string[];
236
- orderedBlockIds: string[];
237
- } | {
238
- kind: "move_block";
239
- pageId: string;
240
- baseBlockIds: string[];
241
- blockId: string;
242
- afterBlockId: string | null;
251
+ commandBacked: AiDesignerCommandBackedPageProposal;
243
252
  } | {
244
253
  kind: "move_block";
245
254
  pageId: string;
246
255
  baseBlockIds: string[];
247
- blockId: string;
248
- beforeBlockId: string | null;
256
+ commandBacked: AiDesignerCommandBackedPageProposal;
249
257
  } | {
250
258
  kind: "swap_blocks";
251
259
  pageId: string;
252
260
  baseBlockIds: string[];
253
- blockIdA: string;
254
- blockIdB: string;
261
+ commandBacked: AiDesignerCommandBackedPageProposal;
255
262
  } | {
256
263
  kind: "delete_block";
257
264
  pageId: string;
@@ -21,4 +21,16 @@ export type APIEndpoint<TBody = unknown, TQuery = unknown, TResponse = unknown>
21
21
  tags?: string[];
22
22
  responseKind?: ApiResponseKind;
23
23
  auth?: ApiAuthRequirement;
24
+ demoMutation?: ApiDemoMutationPolicy;
24
25
  };
26
+ export type ApiDemoMutationClassification = "allowed" | "blocked-hidden" | "blocked-disabled" | "internal-only";
27
+ export type ApiDemoMutationBlockingClassification = Exclude<ApiDemoMutationClassification, "allowed">;
28
+ export type ApiDemoMutationPolicy = Readonly<{
29
+ classification: "allowed";
30
+ publicMessage: "";
31
+ }> | Readonly<{
32
+ classification: ApiDemoMutationBlockingClassification;
33
+ publicMessage: string;
34
+ }>;
35
+ export declare function allowedDemoMutationPolicy(): ApiDemoMutationPolicy;
36
+ export declare function blockedDemoMutationPolicy(classification: ApiDemoMutationBlockingClassification, publicMessage: string): ApiDemoMutationPolicy;
@@ -4,7 +4,7 @@ import type { CourseEnrollmentRefundFailedCode, EventAttendeeRefundFailedCode }
4
4
  /**
5
5
  * Booking Operations Contracts
6
6
  *
7
- * These types cover event-host ops workflows, appointment resource/service
7
+ * These types cover staff event-ops workflows, appointment resource/service
8
8
  * management, and public booking-session payloads.
9
9
  *
10
10
  * Note: Do NOT use these API types as validation schemas. They document wire
@@ -115,6 +115,7 @@ export declare const API_ENDPOINTS: {
115
115
  readonly method: "POST";
116
116
  readonly auth: "user";
117
117
  readonly responseKind: "json";
118
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
118
119
  };
119
120
  readonly getOnboardingPreviewStatus: {
120
121
  readonly path: "/public/sites/{siteId}/onboarding/preview-status";
@@ -136,6 +137,7 @@ export declare const API_ENDPOINTS: {
136
137
  readonly auth: "user";
137
138
  readonly errors: readonly [];
138
139
  readonly responseKind: "json";
140
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
139
141
  };
140
142
  readonly goLiveSite: {
141
143
  readonly path: "/sites/{siteId}/launch/go-live";
@@ -205,12 +207,14 @@ export declare const API_ENDPOINTS: {
205
207
  readonly method: "POST";
206
208
  readonly auth: "user";
207
209
  readonly responseKind: "json";
210
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
208
211
  };
209
212
  readonly aiSiteWizardIntakeTriage: {
210
213
  readonly path: "/sites/{siteId}/ai/site-wizard/intake-triage";
211
214
  readonly method: "POST";
212
215
  readonly auth: "user";
213
216
  readonly responseKind: "json";
217
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
214
218
  };
215
219
  readonly aiSiteWizardTelemetry: {
216
220
  readonly path: "/sites/{siteId}/ai/site-wizard/telemetry";
@@ -218,6 +222,7 @@ export declare const API_ENDPOINTS: {
218
222
  readonly auth: "user";
219
223
  readonly errors: readonly [];
220
224
  readonly responseKind: "json";
225
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
221
226
  };
222
227
  readonly listGscPropertiesAdmin: {
223
228
  readonly path: "/admin/seo/gsc/properties";
@@ -432,6 +437,7 @@ export declare const API_ENDPOINTS: {
432
437
  readonly method: "POST";
433
438
  readonly auth: "user";
434
439
  readonly responseKind: "json";
440
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
435
441
  readonly errors: readonly ["validation:invalid_input", "auth:forbidden", "resource:not_found", "server:internal_error"];
436
442
  };
437
443
  readonly opsUpdateEventAttendeeCheckin: {
@@ -439,6 +445,7 @@ export declare const API_ENDPOINTS: {
439
445
  readonly method: "POST";
440
446
  readonly auth: "user";
441
447
  readonly responseKind: "json";
448
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
442
449
  readonly errors: readonly ["validation:invalid_input", "auth:forbidden", "resource:not_found", "server:internal_error"];
443
450
  };
444
451
  readonly opsGetEventAttendeeDetails: {
@@ -452,6 +459,7 @@ export declare const API_ENDPOINTS: {
452
459
  readonly method: "POST";
453
460
  readonly auth: "user";
454
461
  readonly responseKind: "json";
462
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
455
463
  readonly errors: readonly ["validation:invalid_input", "auth:forbidden", "resource:not_found", "resource:conflict", "server:internal_error"];
456
464
  };
457
465
  readonly getEventAttendeeDetails: {
@@ -473,6 +481,7 @@ export declare const API_ENDPOINTS: {
473
481
  readonly method: "POST";
474
482
  readonly auth: "user";
475
483
  readonly responseKind: "json";
484
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
476
485
  readonly errors: readonly ["validation:invalid_input", "auth:forbidden", "resource:not_found", "resource:conflict", "server:internal_error"];
477
486
  };
478
487
  readonly getEmailSettings: {
@@ -495,6 +504,7 @@ export declare const API_ENDPOINTS: {
495
504
  readonly tags: ["riverbank:site:{siteId}", "riverbank:site:{siteId}:email-settings"];
496
505
  readonly auth: "user";
497
506
  readonly responseKind: "json";
507
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
498
508
  };
499
509
  readonly previewEmailTemplate: {
500
510
  readonly path: "/sites/{siteId}/settings/emails/preview";
@@ -545,6 +555,7 @@ export declare const API_ENDPOINTS: {
545
555
  readonly tags: ["riverbank:site:{siteId}", "riverbank:site:{siteId}:newsletter"];
546
556
  readonly auth: "user";
547
557
  readonly responseKind: "json";
558
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
548
559
  };
549
560
  readonly createNewsletterSubscribersImportUploadUrl: {
550
561
  readonly path: "/sites/{siteId}/newsletter/subscribers/import-url";
@@ -552,6 +563,7 @@ export declare const API_ENDPOINTS: {
552
563
  readonly tags: ["riverbank:site:{siteId}", "riverbank:site:{siteId}:newsletter"];
553
564
  readonly auth: "user";
554
565
  readonly responseKind: "json";
566
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
555
567
  };
556
568
  readonly exportNewsletterSubscribersCsv: {
557
569
  readonly path: "/sites/{siteId}/newsletter/subscribers/export.csv";
@@ -742,6 +754,7 @@ export declare const API_ENDPOINTS: {
742
754
  readonly tags: ["riverbank:site:{siteId}", "riverbank:site:{siteId}:newsletter"];
743
755
  readonly auth: "user";
744
756
  readonly responseKind: "json";
757
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
745
758
  };
746
759
  readonly testSendNewsletterCampaign: {
747
760
  readonly path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/test-send";
@@ -749,6 +762,7 @@ export declare const API_ENDPOINTS: {
749
762
  readonly tags: ["riverbank:site:{siteId}", "riverbank:site:{siteId}:newsletter"];
750
763
  readonly auth: "user";
751
764
  readonly responseKind: "json";
765
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
752
766
  };
753
767
  readonly listNewsletterSendJobs: {
754
768
  readonly path: "/sites/{siteId}/newsletter/jobs";
@@ -1278,6 +1292,7 @@ export declare const API_ENDPOINTS: {
1278
1292
  readonly tags: ["site", "site-{siteId}"];
1279
1293
  readonly auth: "user";
1280
1294
  readonly responseKind: "json";
1295
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
1281
1296
  };
1282
1297
  readonly listSiteMembers: {
1283
1298
  readonly path: "/sites/{siteId}/members";
@@ -1622,6 +1637,7 @@ export declare const API_ENDPOINTS: {
1622
1637
  readonly tags: ["site-{siteId}", "content-{siteId}-{type}"];
1623
1638
  readonly auth: "user";
1624
1639
  readonly responseKind: "json";
1640
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
1625
1641
  };
1626
1642
  readonly updateSiteGeneralSettings: {
1627
1643
  readonly path: "/sites/{siteId}/settings/general";
@@ -3639,6 +3655,7 @@ export declare const API_ENDPOINTS: {
3639
3655
  readonly method: "POST";
3640
3656
  readonly tags: ["site-{siteId}"];
3641
3657
  readonly auth: "user";
3658
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
3642
3659
  readonly errors: readonly ["validation:invalid_input", "auth:forbidden", "resource:not_found", "resource:conflict", "server:internal_error"];
3643
3660
  readonly responseKind: "json";
3644
3661
  };
@@ -3647,6 +3664,7 @@ export declare const API_ENDPOINTS: {
3647
3664
  readonly method: "POST";
3648
3665
  readonly tags: ["site-{siteId}"];
3649
3666
  readonly auth: "user";
3667
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
3650
3668
  readonly errors: readonly ["validation:invalid_input", "auth:forbidden", "resource:not_found", "resource:conflict", "server:internal_error"];
3651
3669
  readonly responseKind: "json";
3652
3670
  };
@@ -3863,6 +3881,7 @@ export declare const API_ENDPOINTS: {
3863
3881
  readonly tags: ["site-{siteId}", "passes-{siteId}"];
3864
3882
  readonly auth: "user";
3865
3883
  readonly responseKind: "json";
3884
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
3866
3885
  readonly errors: readonly ["validation:invalid_input", "server:internal_error"];
3867
3886
  };
3868
3887
  readonly getBookingPass: {
@@ -3878,6 +3897,7 @@ export declare const API_ENDPOINTS: {
3878
3897
  readonly tags: ["site-{siteId}", "passes-{siteId}"];
3879
3898
  readonly auth: "user";
3880
3899
  readonly responseKind: "json";
3900
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
3881
3901
  readonly errors: readonly ["validation:invalid_input", "resource:not_found", "server:internal_error"];
3882
3902
  };
3883
3903
  readonly deleteBookingPass: {
@@ -3886,6 +3906,7 @@ export declare const API_ENDPOINTS: {
3886
3906
  readonly tags: ["site-{siteId}", "passes-{siteId}"];
3887
3907
  readonly auth: "user";
3888
3908
  readonly responseKind: "json";
3909
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
3889
3910
  readonly errors: readonly ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"];
3890
3911
  };
3891
3912
  readonly syncBookingPassWithStripe: {
@@ -3924,6 +3945,7 @@ export declare const API_ENDPOINTS: {
3924
3945
  readonly tags: ["site-{siteId}", "memberships-{siteId}"];
3925
3946
  readonly auth: "user";
3926
3947
  readonly responseKind: "json";
3948
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
3927
3949
  readonly errors: readonly ["validation:invalid_input", "server:internal_error"];
3928
3950
  };
3929
3951
  readonly getBookingMembership: {
@@ -3939,6 +3961,7 @@ export declare const API_ENDPOINTS: {
3939
3961
  readonly tags: ["site-{siteId}", "memberships-{siteId}"];
3940
3962
  readonly auth: "user";
3941
3963
  readonly responseKind: "json";
3964
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
3942
3965
  readonly errors: readonly ["validation:invalid_input", "resource:not_found", "server:internal_error"];
3943
3966
  };
3944
3967
  readonly deleteBookingMembership: {
@@ -3947,6 +3970,7 @@ export declare const API_ENDPOINTS: {
3947
3970
  readonly tags: ["site-{siteId}", "memberships-{siteId}"];
3948
3971
  readonly auth: "user";
3949
3972
  readonly responseKind: "json";
3973
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
3950
3974
  readonly errors: readonly ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"];
3951
3975
  };
3952
3976
  readonly listCustomerMembershipPayments: {
@@ -4102,6 +4126,7 @@ export declare const API_ENDPOINTS: {
4102
4126
  readonly tags: ["site-{siteId}", "customers-{siteId}"];
4103
4127
  readonly auth: "user";
4104
4128
  readonly responseKind: "json";
4129
+ readonly demoMutation: import("./apiEndpointTypes").ApiDemoMutationPolicy;
4105
4130
  readonly errors: readonly ["validation:invalid_input", "auth:forbidden", "resource:not_found", "resource:already_exists", "resource:conflict", "server:internal_error"];
4106
4131
  };
4107
4132
  readonly listCustomerPasses: {
@@ -43,14 +43,6 @@ export declare const dashboardNavVisibilitySchema: z.ZodObject<{
43
43
  allowIds: z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
44
44
  denyIds: z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
45
45
  }, z.core.$strip>>;
46
- event_host: z.ZodOptional<z.ZodObject<{
47
- mode: z.ZodOptional<z.ZodEnum<{
48
- augment: "augment";
49
- restrict: "restrict";
50
- }>>;
51
- allowIds: z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
52
- denyIds: z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
53
- }, z.core.$strip>>;
54
46
  }, z.core.$strip>>;
55
47
  }, z.core.$strip>;
56
48
  export declare const dashboardNavigationConfigSchema: z.ZodObject<{
@@ -86,14 +78,6 @@ export declare const dashboardNavigationConfigSchema: z.ZodObject<{
86
78
  allowIds: z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
87
79
  denyIds: z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
88
80
  }, z.core.$strip>>;
89
- event_host: z.ZodOptional<z.ZodObject<{
90
- mode: z.ZodOptional<z.ZodEnum<{
91
- augment: "augment";
92
- restrict: "restrict";
93
- }>>;
94
- allowIds: z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
95
- denyIds: z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
96
- }, z.core.$strip>>;
97
81
  }, z.core.$strip>>;
98
82
  }, z.core.$strip>>;
99
83
  settingsNav: z.ZodOptional<z.ZodObject<{
@@ -128,14 +112,6 @@ export declare const dashboardNavigationConfigSchema: z.ZodObject<{
128
112
  allowIds: z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
129
113
  denyIds: z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
130
114
  }, z.core.$strip>>;
131
- event_host: z.ZodOptional<z.ZodObject<{
132
- mode: z.ZodOptional<z.ZodEnum<{
133
- augment: "augment";
134
- restrict: "restrict";
135
- }>>;
136
- allowIds: z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
137
- denyIds: z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
138
- }, z.core.$strip>>;
139
115
  }, z.core.$strip>>;
140
116
  }, z.core.$strip>>;
141
117
  }, z.core.$strip>;
@@ -174,14 +150,6 @@ export declare const dashboardConfigSchema: z.ZodObject<{
174
150
  allowIds: z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
175
151
  denyIds: z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
176
152
  }, z.core.$strip>>;
177
- event_host: z.ZodOptional<z.ZodObject<{
178
- mode: z.ZodOptional<z.ZodEnum<{
179
- augment: "augment";
180
- restrict: "restrict";
181
- }>>;
182
- allowIds: z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
183
- denyIds: z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
184
- }, z.core.$strip>>;
185
153
  }, z.core.$strip>>;
186
154
  }, z.core.$strip>>;
187
155
  settingsNav: z.ZodOptional<z.ZodObject<{
@@ -216,14 +184,6 @@ export declare const dashboardConfigSchema: z.ZodObject<{
216
184
  allowIds: z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
217
185
  denyIds: z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
218
186
  }, z.core.$strip>>;
219
- event_host: z.ZodOptional<z.ZodObject<{
220
- mode: z.ZodOptional<z.ZodEnum<{
221
- augment: "augment";
222
- restrict: "restrict";
223
- }>>;
224
- allowIds: z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
225
- denyIds: z.ZodPipe<z.ZodTransform<any[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
226
- }, z.core.$strip>>;
227
187
  }, z.core.$strip>>;
228
188
  }, z.core.$strip>>;
229
189
  }, z.core.$strip>>;
@@ -112,7 +112,7 @@ export interface SdkWorkflowConfig {
112
112
  triggers: SdkWorkflowTrigger[];
113
113
  confirmation?: SdkWorkflowConfirmation;
114
114
  }
115
- export type DashboardSiteRole = "administrator" | "editor" | "event_host" | "team_member";
115
+ export type DashboardSiteRole = "administrator" | "editor" | "team_member";
116
116
  export interface DashboardNavVisibilityConfig {
117
117
  mode?: "augment" | "restrict";
118
118
  allowIds?: string[];
@@ -1,6 +1,6 @@
1
1
  import type { ListSiteMembersResponse, InviteSiteMemberRequest, InviteSiteMemberResponse, UpdateSiteMemberRoleRequest, UpdateSiteMemberRoleResponse, LinkCurrentUserPractitionerRequest, CurrentUserPractitionerLinkResponse, RemoveSiteMemberResponse, RevokeSiteInvitationResponse, TransferSiteOwnershipRequest, TransferSiteOwnershipResponse, AcceptSiteInvitationRequest, AcceptSiteInvitationResponse } from './types';
2
2
  import type { ApiClient } from './request';
3
- export type SiteRole = "owner" | "administrator" | "editor" | "event_host" | "team_member";
3
+ export type SiteRole = "owner" | "administrator" | "editor" | "team_member";
4
4
  /**
5
5
  * Higher number means more permissions.
6
6
  */
@@ -153,7 +153,7 @@ export type DevToolsSeedResponse = {
153
153
  blocksCreated: number;
154
154
  };
155
155
  };
156
- export type DowngradeRole = Extract<SiteRole, "administrator" | "editor" | "event_host">;
156
+ export type DowngradeRole = Extract<SiteRole, "administrator" | "editor">;
157
157
  export type RoleDowngradeActualRole = Extract<SiteRole, "owner" | "administrator"> | null;
158
158
  export type SiteRoleDowngradeState = {
159
159
  kind: "off";
@@ -40,7 +40,7 @@ export declare const BRANDING_TIERS: readonly ["macadamia_visible", "light_custo
40
40
  export type BrandingTier = (typeof BRANDING_TIERS)[number];
41
41
  export declare const TEAM_TIERS: readonly ["owner_only", "multi_practitioner"];
42
42
  export type TeamTier = (typeof TEAM_TIERS)[number];
43
- export declare const SITE_ROLE_ENTITLEMENTS: readonly ["administrator", "editor", "event_host", "team_member"];
43
+ export declare const SITE_ROLE_ENTITLEMENTS: readonly ["administrator", "editor", "team_member"];
44
44
  export type SiteRoleEntitlement = (typeof SITE_ROLE_ENTITLEMENTS)[number];
45
45
  export declare const PLAN_BOOLEAN_FEATURE_KEYS: readonly ["customDomain", "customContentTypes", "analytics", "passes", "memberships", "discountCodes", "advancedPaymentSchemes", "internalNotes", "multipleTeamLogins", "multiplePractitioners"];
46
46
  export type PlanBooleanFeatureKey = (typeof PLAN_BOOLEAN_FEATURE_KEYS)[number];
@@ -6,7 +6,7 @@
6
6
  */
7
7
  export type { BindingSource, BindingDescriptor, BindingInput, BindingMap, BindingContext, BindingPath, BindingTransformName, KnownBindingTransformName, FieldBindingDescriptor, MetaBindingDescriptor, LiteralBindingDescriptor, TransformBindingDescriptor, FallbackBindingDescriptor, } from './types';
8
8
  export { TRANSFORMS, BINDING_SOURCES } from './types';
9
- export { asDesignBlockId, asContentTemplateDesignBlockId, asLayoutVariantKey, buildPageDesignEditorReadModel, compileContentTemplateRuntimeFields, parsePageDesignIntent, type DesignBlockId, parseContentTemplateDesignIntent, type CompiledBlockRuntimeFields, type LayoutVariantKey, type PageDesignEditorBlockInput, type PageDesignIntent, applyBlockContentVariantPolicy, deriveSiteStyleBlockPolicy, } from '@riverbankcms/theme-core/site-styles';
9
+ export { asDesignBlockId, asContentTemplateDesignBlockId, asLayoutVariantKey, buildPageDesignEditorReadModel, compileContentTemplateRuntimeFields, parsePageDesignIntent, surfaceResolutionContextFromTheme, type DesignBlockId, parseContentTemplateDesignIntent, type CompiledBlockRuntimeFields, type LayoutVariantKey, type PageDesignEditorBlockInput, type PageDesignIntent, type SurfaceResolutionContext, applyBlockContentVariantPolicy, deriveSiteStyleBlockPolicy, } from '@riverbankcms/theme-core/site-styles';
10
10
  export { applyCompiledRuntimeFieldsToContent, buildEditorModelRuntimeFieldsByBlockId, } from '@riverbankcms/theme-core/site-styles/previewCompiler';
11
11
  export { blockDesignMetadataMapFromDefinitions } from '../system/designCapabilities';
12
12
  export { systemBlockDefinitions } from '../system/blocks';
@@ -20,7 +20,7 @@ export type AllowedNodeType = (typeof ALLOWED_NODE_TYPES)[number];
20
20
  * $bind.transforms within custom block layouts. Transform IDs
21
21
  * not in this list will be rejected during validation.
22
22
  */
23
- export declare const ALLOWED_TRANSFORM_IDS: readonly ["string.uppercase", "value.fallback", "date.formatShort", "array.length", "value.jsonArray", "array.marqueeLoop", "layout.maxWidthClass", "layout.headerRootClass", "layout.footerRootClass", "layout.headerRootStyle", "layout.footerRootStyle", "ui.headerNavLinkClass", "ui.headingClassFromAlignment", "ui.bodyClassFromAlignment", "ui.stackAlignFromAlignment", "ui.sectionStateTone", "ui.heroContentWrapperClass", "ui.heroCtaJustify", "ui.heroStackJustifyFromVerticalAlignment", "ui.heroGridClassFromVerticalAlignment", "ui.conditionalClass", "ui.twoColumnContainerClass", "ui.twoColumnFlexBasis", "ui.imageGalleryFilterClass", "ui.imageGalleryTileClass", "ui.imageGalleryTileStyle", "ui.imageGalleryMarqueeTileStyle", "ui.imageGalleryMarqueeDuration", "ui.imageGalleryMarqueeDirection", "ui.imageFragmentClass", "ui.imageFragmentSize", "media.fromUrl", "background.resolveStyle", "background.resolveColorsStyle", "background.resolveAllowOverflow", "background.resolveImageStyle", "background.resolveImageClassName", "background.resolveOverlayStyle", "links.resolve", "links.label", "content.interpolateRichTextTokens", "boxStyles.spacing", "boxStyles.resolveRootClass", "boxStyles.resolveRootStyle", "boxStyles.semanticGap", "boxStyles.semanticGapValue", "containerStyles.resolveBoxClassName"];
23
+ export declare const ALLOWED_TRANSFORM_IDS: readonly ["string.uppercase", "value.fallback", "date.formatShort", "array.length", "value.jsonArray", "value.csv", "array.marqueeLoop", "layout.maxWidthClass", "layout.headerRootClass", "layout.footerRootClass", "layout.headerRootStyle", "layout.footerRootStyle", "ui.headerNavLinkClass", "ui.headingClassFromAlignment", "ui.bodyClassFromAlignment", "ui.stackAlignFromAlignment", "ui.sectionStateTone", "ui.heroContentWrapperClass", "ui.heroCtaJustify", "ui.heroStackJustifyFromVerticalAlignment", "ui.heroGridClassFromVerticalAlignment", "ui.conditionalClass", "ui.twoColumnContainerClass", "ui.twoColumnFlexBasis", "ui.imageGalleryFilterClass", "ui.imageGalleryTileClass", "ui.imageGalleryTileStyle", "ui.imageGalleryMarqueeTileStyle", "ui.imageGalleryMarqueeDuration", "ui.imageGalleryMarqueeDirection", "ui.imageFragmentClass", "ui.imageFragmentSize", "media.fromUrl", "background.resolveStyle", "background.resolveColorsStyle", "background.resolveAllowOverflow", "background.resolveImageStyle", "background.resolveImageClassName", "background.resolveOverlayStyle", "links.resolve", "links.label", "content.interpolateRichTextTokens", "boxStyles.spacing", "boxStyles.resolveRootClass", "boxStyles.resolveRootStyle", "boxStyles.semanticGap", "boxStyles.semanticGapValue", "containerStyles.resolveBoxClassName"];
24
24
  export type AllowedTransformId = (typeof ALLOWED_TRANSFORM_IDS)[number];
25
25
  /**
26
26
  * Set for O(1) lookup of allowed node types.
@@ -7,6 +7,7 @@ export declare const fallbackTransform: TransformDefinition<{
7
7
  export declare const dateFormatShort: TransformDefinition;
8
8
  export declare const arrayLengthTransform: TransformDefinition;
9
9
  export declare const jsonArrayTransform: TransformDefinition;
10
+ export declare const csvTransform: TransformDefinition;
10
11
  declare const marqueeLoopOptionsSchema: z.ZodObject<{
11
12
  minItems: z.ZodDefault<z.ZodNumber>;
12
13
  }, z.core.$strip>;
@@ -84,6 +84,7 @@ export declare const transformDefinitions: {
84
84
  readonly "content.interpolateRichTextTokens": TransformDefinition<{
85
85
  tokens: ("year" | "site_name")[];
86
86
  }>;
87
+ readonly "value.csv": TransformDefinition;
87
88
  readonly "boxStyles.semanticGap": TransformDefinition<{
88
89
  fallback?: import("../spacing").SemanticSpacing;
89
90
  }>;
@@ -110,7 +111,7 @@ export declare function bindProp(from: string, opts?: {
110
111
  readonly $bind: {
111
112
  readonly pick?: "value" | "context" | "collection" | undefined;
112
113
  readonly fallback?: {} | null | undefined;
113
- readonly transforms?: TransformStep<"string.uppercase" | "value.fallback" | "date.formatShort" | "layout.maxWidthClass" | "layout.headerRootClass" | "layout.footerRootClass" | "layout.headerRootStyle" | "layout.footerRootStyle" | "ui.headerNavLinkClass" | "ui.headingClassFromAlignment" | "ui.bodyClassFromAlignment" | "ui.stackAlignFromAlignment" | "ui.sectionStateTone" | "ui.heroContentWrapperClass" | "ui.heroCtaJustify" | "ui.heroStackJustifyFromVerticalAlignment" | "ui.heroGridClassFromVerticalAlignment" | "ui.conditionalClass" | "ui.twoColumnContainerClass" | "ui.twoColumnFlexBasis" | "media.fromUrl" | "content.interpolateRichTextTokens" | "boxStyles.semanticGap" | "boxStyles.semanticGapValue" | "layout.footerBottomBarClass" | "layout.footerBottomBarContainerClass" | "layout.footerBottomBarStyle" | "layout.footerSplitNavSingleClass" | "layout.footerSplitMainClass" | "layout.footerLogoClass" | "layout.footerLogoMediaClass" | "layout.footerLogoTextVisible">[] | undefined;
114
+ readonly transforms?: TransformStep<"string.uppercase" | "value.fallback" | "date.formatShort" | "value.csv" | "layout.maxWidthClass" | "layout.headerRootClass" | "layout.footerRootClass" | "layout.headerRootStyle" | "layout.footerRootStyle" | "ui.headerNavLinkClass" | "ui.headingClassFromAlignment" | "ui.bodyClassFromAlignment" | "ui.stackAlignFromAlignment" | "ui.sectionStateTone" | "ui.heroContentWrapperClass" | "ui.heroCtaJustify" | "ui.heroStackJustifyFromVerticalAlignment" | "ui.heroGridClassFromVerticalAlignment" | "ui.conditionalClass" | "ui.twoColumnContainerClass" | "ui.twoColumnFlexBasis" | "media.fromUrl" | "content.interpolateRichTextTokens" | "boxStyles.semanticGap" | "boxStyles.semanticGapValue" | "layout.footerBottomBarClass" | "layout.footerBottomBarContainerClass" | "layout.footerBottomBarStyle" | "layout.footerSplitNavSingleClass" | "layout.footerSplitMainClass" | "layout.footerLogoClass" | "layout.footerLogoMediaClass" | "layout.footerLogoTextVisible">[] | undefined;
114
115
  readonly from: string;
115
116
  };
116
117
  };
@@ -5249,6 +5249,74 @@ export type Database = {
5249
5249
  };
5250
5250
  Relationships: [];
5251
5251
  };
5252
+ demo_media_uploads: {
5253
+ Row: {
5254
+ bytes: number;
5255
+ claim_id: string | null;
5256
+ created_at: string;
5257
+ id: string;
5258
+ instance_id: string;
5259
+ media_asset_id: string;
5260
+ site_id: string;
5261
+ source: string;
5262
+ updated_at: string;
5263
+ uploaded_by_user_id: string | null;
5264
+ };
5265
+ Insert: {
5266
+ bytes?: number;
5267
+ claim_id?: string | null;
5268
+ created_at?: string;
5269
+ id?: string;
5270
+ instance_id: string;
5271
+ media_asset_id: string;
5272
+ site_id: string;
5273
+ source?: string;
5274
+ updated_at?: string;
5275
+ uploaded_by_user_id?: string | null;
5276
+ };
5277
+ Update: {
5278
+ bytes?: number;
5279
+ claim_id?: string | null;
5280
+ created_at?: string;
5281
+ id?: string;
5282
+ instance_id?: string;
5283
+ media_asset_id?: string;
5284
+ site_id?: string;
5285
+ source?: string;
5286
+ updated_at?: string;
5287
+ uploaded_by_user_id?: string | null;
5288
+ };
5289
+ Relationships: [
5290
+ {
5291
+ foreignKeyName: "demo_media_uploads_claim_id_fkey";
5292
+ columns: ["claim_id"];
5293
+ isOneToOne: false;
5294
+ referencedRelation: "demo_claims";
5295
+ referencedColumns: ["id"];
5296
+ },
5297
+ {
5298
+ foreignKeyName: "demo_media_uploads_instance_id_fkey";
5299
+ columns: ["instance_id"];
5300
+ isOneToOne: false;
5301
+ referencedRelation: "demo_instances";
5302
+ referencedColumns: ["id"];
5303
+ },
5304
+ {
5305
+ foreignKeyName: "demo_media_uploads_media_asset_id_fkey";
5306
+ columns: ["media_asset_id"];
5307
+ isOneToOne: true;
5308
+ referencedRelation: "media_assets";
5309
+ referencedColumns: ["id"];
5310
+ },
5311
+ {
5312
+ foreignKeyName: "demo_media_uploads_site_id_fkey";
5313
+ columns: ["site_id"];
5314
+ isOneToOne: false;
5315
+ referencedRelation: "sites";
5316
+ referencedColumns: ["id"];
5317
+ }
5318
+ ];
5319
+ };
5252
5320
  digital_product_entitlement_grants: {
5253
5321
  Row: {
5254
5322
  created_at: string;
@@ -15401,6 +15469,19 @@ export type Database = {
15401
15469
  ticket_type_id: string;
15402
15470
  }[];
15403
15471
  };
15472
+ get_form_submission_stats: {
15473
+ Args: {
15474
+ p_form_ids: string[];
15475
+ p_recent_since: string;
15476
+ p_site_id: string;
15477
+ };
15478
+ Returns: {
15479
+ form_id: string;
15480
+ latest_submission_at: string;
15481
+ recent_count: number;
15482
+ total_count: number;
15483
+ }[];
15484
+ };
15404
15485
  get_public_event_attendee_counts: {
15405
15486
  Args: {
15406
15487
  instance_ids: string[];
@@ -1,5 +1,5 @@
1
1
  import type { BlockItem } from '@riverbankcms/editor-blocks';
2
- import type { PageDesignEditorReadModel } from '@riverbankcms/theme-core/site-styles/previewCompiler';
2
+ import type { PageDesignEditorReadModel, SurfaceResolutionContext } from '@riverbankcms/theme-core/site-styles/previewCompiler';
3
3
  import type { PreviewPageDesignEditorState } from '../preview/PageDesignEditorStateContext';
4
4
  import { type RuntimeContentDecorationProjection } from './previewProjection';
5
5
  export type RuntimePreviewSource = Readonly<{
@@ -7,9 +7,13 @@ export type RuntimePreviewSource = Readonly<{
7
7
  }> | Readonly<{
8
8
  kind: 'apply-editor-model';
9
9
  editorModel: PageDesignEditorReadModel;
10
+ surfaceResolutionContext: SurfaceResolutionContext;
10
11
  }>;
11
12
  export declare function applyPageDesignRuntimeFieldsToBlockItems(blockItems: readonly BlockItem[], source: RuntimePreviewSource): BlockItem[];
12
13
  export declare function applyPageDesignRuntimeFieldsToBlockContent(block: BlockItem, content: Record<string, unknown> | null, source: RuntimePreviewSource): Record<string, unknown> | null;
13
- export declare function buildPageDesignRuntimeFieldsByBlockId(editorModel: PageDesignEditorReadModel): RuntimeContentDecorationProjection['fieldsByBlockId'];
14
+ export declare function buildPageDesignRuntimeFieldsByBlockId(editorModel: PageDesignEditorReadModel, surfaceResolutionContext: SurfaceResolutionContext): RuntimeContentDecorationProjection['fieldsByBlockId'];
14
15
  export declare function pageDesignRuntimeProjectionFromSource(source: RuntimePreviewSource): RuntimeContentDecorationProjection | null;
15
- export declare function resolveRuntimePreviewSource(pageDesignState: PreviewPageDesignEditorState): RuntimePreviewSource;
16
+ export declare function resolveRuntimePreviewSource(input: Readonly<{
17
+ pageDesignState: PreviewPageDesignEditorState;
18
+ surfaceResolutionContext: SurfaceResolutionContext | null;
19
+ }>): RuntimePreviewSource;
@@ -1,5 +1,5 @@
1
1
  import type { BlockItem } from '@riverbankcms/editor-blocks';
2
- import { type PageDesignEditorReadModel } from '@riverbankcms/theme-core/site-styles/previewCompiler';
2
+ import { type PageDesignEditorReadModel, type SurfaceResolutionContext } from '@riverbankcms/theme-core/site-styles/previewCompiler';
3
3
  import type { CanonicalBlockContent, PreviewRenderContent, RuntimeContentDecorationProjection } from './types';
4
- export declare function runtimeContentDecorationProjectionFromEditorModel(editorModel: PageDesignEditorReadModel): RuntimeContentDecorationProjection;
4
+ export declare function runtimeContentDecorationProjectionFromEditorModel(editorModel: PageDesignEditorReadModel, surfaceResolutionContext: SurfaceResolutionContext): RuntimeContentDecorationProjection;
5
5
  export declare function applyRuntimeContentDecorationProjection(block: BlockItem, content: CanonicalBlockContent | PreviewRenderContent | null, projection: RuntimeContentDecorationProjection): PreviewRenderContent;
@@ -0,0 +1,33 @@
1
+ import type { EnvTarget } from '../../../helpers';
2
+ import type { OutputContext } from '../../../output';
3
+ import { type FooterDiff } from '../../../sync/diff';
4
+ import type { PushOptions } from '../options';
5
+ export type FooterPushExecutionResult = Readonly<{
6
+ success: boolean;
7
+ }>;
8
+ type FooterPushDecision = Readonly<{
9
+ kind: 'unchanged';
10
+ }> | Readonly<{
11
+ kind: 'dry-run';
12
+ diff: FooterDiff;
13
+ }> | Readonly<{
14
+ kind: 'apply';
15
+ diff: FooterDiff;
16
+ }>;
17
+ export declare function footerPushDecision(diff: FooterDiff | null, dryRun: boolean): FooterPushDecision;
18
+ export declare function footerDryRunPayload(diff: FooterDiff): Readonly<{
19
+ kind: 'push';
20
+ scope: 'footer';
21
+ dryRun: true;
22
+ changes: readonly string[];
23
+ }>;
24
+ export declare function executeFooterPush(input: Readonly<{
25
+ output: OutputContext;
26
+ target: EnvTarget;
27
+ options: PushOptions & {
28
+ dryRun: boolean;
29
+ };
30
+ jsonOutput: boolean;
31
+ skipMeta: boolean;
32
+ }>): Promise<FooterPushExecutionResult>;
33
+ export {};
@@ -2,12 +2,13 @@ import { type EnvTarget } from '../helpers';
2
2
  import type { OutputContext } from '../output';
3
3
  import { type JsonDiffMode } from '../sync';
4
4
  import type { PushOptions } from './push/options';
5
+ import { type PushScope } from './push/consts';
5
6
  export interface PushExecutionResult {
6
7
  success: boolean;
7
8
  }
8
9
  type MergeRemoteValidationInput = Readonly<{
9
10
  target: EnvTarget;
10
- pushScope: string;
11
+ pushScope: PushScope;
11
12
  contentType?: string;
12
13
  identifier?: string;
13
14
  force: boolean;
@@ -3,12 +3,13 @@
3
3
  *
4
4
  * Loads and validates environment variables for SDK CLI commands.
5
5
  */
6
+ import { type SiteId } from '@riverbankcms/core';
6
7
  /**
7
8
  * SDK environment configuration
8
9
  */
9
10
  export interface SdkEnvironment {
10
11
  /** Site ID to operate on */
11
- siteId: string;
12
+ siteId: SiteId;
12
13
  /** Dashboard URL (e.g., http://localhost:4000) */
13
14
  dashboardUrl: string;
14
15
  /** Management API key (bld_mgmt_sk_...) */