@riverbankcms/sdk 0.60.11 → 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 (96) hide show
  1. package/README.md +10 -7
  2. package/dist/_dts/api/src/accessAdmin.d.ts +102 -0
  3. package/dist/_dts/api/src/bookingConfig.d.ts +31 -1
  4. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +38 -1
  5. package/dist/_dts/api/src/bookingOperations.d.ts +3 -0
  6. package/dist/_dts/api/src/bookingRecords.d.ts +45 -0
  7. package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +4 -4
  8. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +1 -5
  9. package/dist/_dts/api/src/common/envelope.d.ts +1 -1
  10. package/dist/_dts/api/src/communications.d.ts +1 -1
  11. package/dist/_dts/api/src/contentRuntime.d.ts +1 -1
  12. package/dist/_dts/api/src/domains.d.ts +14 -13
  13. package/dist/_dts/api/src/endpoints.d.ts +121 -9
  14. package/dist/_dts/api/src/index.d.ts +3 -2
  15. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +1 -0
  16. package/dist/_dts/api/src/seoEndpoints.d.ts +2 -0
  17. package/dist/_dts/api/src/siteAssets.d.ts +0 -10
  18. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +15 -1
  19. package/dist/_dts/api/src/types.d.ts +1 -1
  20. package/dist/_dts/blocks/src/PageRenderer.d.ts +1 -0
  21. package/dist/_dts/blocks/src/index.d.ts +1 -0
  22. package/dist/_dts/blocks/src/portal/types.d.ts +1 -1
  23. package/dist/_dts/blocks/src/server.d.ts +1 -0
  24. package/dist/_dts/blocks/src/subroutes/fold.d.ts +40 -0
  25. package/dist/_dts/blocks/src/subroutes/formatDate.d.ts +12 -0
  26. package/dist/_dts/blocks/src/subroutes/index.d.ts +3 -0
  27. package/dist/_dts/blocks/src/subroutes/kinds.d.ts +32 -0
  28. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +3 -1
  29. package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +2 -0
  30. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/types.d.ts +1 -0
  31. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.interactive.d.ts +1 -0
  32. package/dist/_dts/blocks/src/system/spacing.d.ts +2 -1
  33. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +5 -0
  34. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +5 -1
  35. package/dist/_dts/core/src/booking-refunds.d.ts +8 -0
  36. package/dist/_dts/core/src/participant-identity.d.ts +1 -1
  37. package/dist/_dts/core/src/participants.d.ts +19 -7
  38. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +284 -96
  39. package/dist/_dts/db/src/schemas/forms.d.ts +135 -24
  40. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +3 -3
  41. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +3 -3
  42. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +3 -3
  43. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +3 -3
  44. package/dist/_dts/preview-next/src/client/preview/SubrouteNoticePanel.d.ts +13 -0
  45. package/dist/_dts/preview-next/src/client/preview/subrouteNotice.d.ts +26 -0
  46. package/dist/_dts/sdk/src/contracts/page.d.ts +1 -0
  47. package/dist/_dts/sdk/src/public-api/contracts.d.ts +2 -1
  48. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +1 -0
  49. package/dist/_dts/sdk/src/routing/resolvePageContent.d.ts +4 -5
  50. package/dist/_dts/sdk/src/version.d.ts +1 -1
  51. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
  52. package/dist/_dts/theme-core/src/buttons/personalities/showtime-pill.d.ts +17 -0
  53. package/dist/_dts/theme-core/src/buttons/types.d.ts +1 -1
  54. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  55. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +66 -30
  56. package/dist/_dts/theme-core/src/palette/variants/brand-led.d.ts +16 -0
  57. package/dist/_dts/theme-core/src/palette/variants/index.d.ts +15 -0
  58. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +3 -3
  59. package/dist/_dts/theme-core/src/schema.d.ts +174 -6
  60. package/dist/_dts/theme-core/src/site-styles/appearancePresets.d.ts +328 -15
  61. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +54 -2
  62. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +124 -0
  63. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
  64. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
  65. package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +21 -0
  66. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +2 -1
  67. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
  68. package/dist/_dts/theme-core/src/site-styles/types.d.ts +135 -2
  69. package/dist/_dts/ui/src/badge.d.ts +1 -1
  70. package/dist/_dts/ui/src/button.d.ts +1 -1
  71. package/dist/cli/index.mjs +801 -115
  72. package/dist/client/bookings.mjs +115 -1
  73. package/dist/client/client.mjs +905 -166
  74. package/dist/client/hooks.mjs +794 -111
  75. package/dist/client/rendering/client.mjs +179 -39
  76. package/dist/client/rendering/islands.mjs +179 -38
  77. package/dist/client/rendering.mjs +904 -165
  78. package/dist/preview-next/before-render.mjs +160 -16
  79. package/dist/preview-next/client/runtime.mjs +1674 -260
  80. package/dist/preview-next/middleware.mjs +160 -16
  81. package/dist/server/components.mjs +895 -165
  82. package/dist/server/config-validation.mjs +794 -111
  83. package/dist/server/config.mjs +794 -111
  84. package/dist/server/data.mjs +794 -111
  85. package/dist/server/index.mjs +163 -17
  86. package/dist/server/next.mjs +898 -167
  87. package/dist/server/page-converter.mjs +589 -82
  88. package/dist/server/prebuild.mjs +1 -1
  89. package/dist/server/rendering/server.mjs +895 -165
  90. package/dist/server/rendering.mjs +895 -165
  91. package/dist/server/routing.mjs +828 -117
  92. package/dist/server/server.mjs +795 -112
  93. package/dist/server/theme-bridge.mjs +216 -39
  94. package/dist/server/theme.mjs +139 -37
  95. package/dist/styles/index.css +44 -2
  96. package/package.json +1 -1
@@ -6,13 +6,15 @@
6
6
  * across API routes, type guards, and client-side form submission.
7
7
  */
8
8
  import { z } from 'zod';
9
+ export declare const formPresentationSettingsSchema: z.ZodObject<{
10
+ submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
11
+ templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
12
+ }, z.core.$strict>;
9
13
  /**
10
14
  * Contact form settings
11
15
  * Used for general inquiry forms that send notifications to site owners
12
16
  */
13
17
  export declare const contactFormSettingsSchema: z.ZodObject<{
14
- submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
15
- templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
16
18
  type: z.ZodLiteral<"contact">;
17
19
  successMessage: z.ZodOptional<z.ZodString>;
18
20
  sensitiveCollectionMode: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
@@ -57,8 +59,6 @@ export declare const contactFormSettingsSchema: z.ZodObject<{
57
59
  * XOR validation enforces this constraint.
58
60
  */
59
61
  export declare const bookingFormSettingsSchema: z.ZodObject<{
60
- submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
61
- templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
62
62
  type: z.ZodLiteral<"booking">;
63
63
  serviceId: z.ZodOptional<z.ZodString>;
64
64
  serviceIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -84,8 +84,6 @@ export declare const bookingFormSettingsSchema: z.ZodObject<{
84
84
  * - If not provided: Block must specify series or get from context
85
85
  */
86
86
  export declare const eventRegistrationFormSettingsSchema: z.ZodObject<{
87
- submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
88
- templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
89
87
  type: z.ZodLiteral<"event-registration">;
90
88
  seriesId: z.ZodOptional<z.ZodString>;
91
89
  maxTickets: z.ZodDefault<z.ZodNumber>;
@@ -106,8 +104,6 @@ export declare const eventRegistrationFormSettingsSchema: z.ZodObject<{
106
104
  * Used for reusable short forms / detailed questionnaires attached through booking requirements.
107
105
  */
108
106
  export declare const bookingQuestionsFormSettingsSchema: z.ZodObject<{
109
- submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
110
- templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
111
107
  type: z.ZodLiteral<"booking-questions">;
112
108
  schemaVersion: z.ZodDefault<z.ZodLiteral<2>>;
113
109
  shape: z.ZodDefault<z.ZodEnum<{
@@ -142,8 +138,6 @@ export declare const bookingQuestionsFormSettingsSchema: z.ZodObject<{
142
138
  * Use this schema to validate form settings in API routes
143
139
  */
144
140
  export declare const formSettingsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
145
- submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
146
- templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
147
141
  type: z.ZodLiteral<"contact">;
148
142
  successMessage: z.ZodOptional<z.ZodString>;
149
143
  sensitiveCollectionMode: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
@@ -175,8 +169,6 @@ export declare const formSettingsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
175
169
  emails: z.ZodOptional<z.ZodArray<z.ZodString>>;
176
170
  }, z.core.$strict>>;
177
171
  }, z.core.$strict>, z.ZodObject<{
178
- submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
179
- templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
180
172
  type: z.ZodLiteral<"booking">;
181
173
  serviceId: z.ZodOptional<z.ZodString>;
182
174
  serviceIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -193,8 +185,6 @@ export declare const formSettingsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
193
185
  confirmationVersion: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodNull]>;
194
186
  }, z.core.$strict>>;
195
187
  }, z.core.$strict>, z.ZodObject<{
196
- submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
197
- templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
198
188
  type: z.ZodLiteral<"event-registration">;
199
189
  seriesId: z.ZodOptional<z.ZodString>;
200
190
  maxTickets: z.ZodDefault<z.ZodNumber>;
@@ -210,8 +200,6 @@ export declare const formSettingsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
210
200
  confirmationVersion: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodNull]>;
211
201
  }, z.core.$strict>>;
212
202
  }, z.core.$strict>, z.ZodObject<{
213
- submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
214
- templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
215
203
  type: z.ZodLiteral<"booking-questions">;
216
204
  schemaVersion: z.ZodDefault<z.ZodLiteral<2>>;
217
205
  shape: z.ZodDefault<z.ZodEnum<{
@@ -241,6 +229,111 @@ export declare const formSettingsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
241
229
  sectioned: "sectioned";
242
230
  }>>;
243
231
  }, z.core.$strict>], "type">;
232
+ /**
233
+ * Transitional input schema for API/SDK callers that may still send form-level
234
+ * presentation metadata inside settings. Storage code must split these keys out
235
+ * before persisting canonical behavior settings.
236
+ */
237
+ export declare const formSettingsInputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
238
+ type: z.ZodLiteral<"contact">;
239
+ successMessage: z.ZodOptional<z.ZodString>;
240
+ sensitiveCollectionMode: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
241
+ standard: "standard";
242
+ sensitive: "sensitive";
243
+ }>>>;
244
+ sensitiveCollection: z.ZodOptional<z.ZodObject<{
245
+ enabledAt: z.ZodNullable<z.ZodString>;
246
+ enabledByUserId: z.ZodNullable<z.ZodString>;
247
+ confirmationVersion: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodNull]>;
248
+ }, z.core.$strict>>;
249
+ notifications: z.ZodOptional<z.ZodObject<{
250
+ email: z.ZodOptional<z.ZodObject<{
251
+ enabled: z.ZodBoolean;
252
+ recipients: z.ZodOptional<z.ZodArray<z.ZodString>>;
253
+ }, z.core.$strict>>;
254
+ autoReply: z.ZodOptional<z.ZodObject<{
255
+ enabled: z.ZodBoolean;
256
+ override: z.ZodOptional<z.ZodObject<{
257
+ subjectTemplate: z.ZodString;
258
+ bodyTemplate: z.ZodString;
259
+ }, z.core.$strict>>;
260
+ }, z.core.$strict>>;
261
+ webhook: z.ZodOptional<z.ZodObject<{
262
+ enabled: z.ZodBoolean;
263
+ url: z.ZodOptional<z.ZodString>;
264
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
265
+ }, z.core.$strict>>;
266
+ emails: z.ZodOptional<z.ZodArray<z.ZodString>>;
267
+ }, z.core.$strict>>;
268
+ readonly submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
269
+ readonly templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
270
+ }, z.core.$strict>, z.ZodObject<{
271
+ type: z.ZodLiteral<"booking">;
272
+ serviceId: z.ZodOptional<z.ZodString>;
273
+ serviceIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
274
+ resourceId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
275
+ requiresApproval: z.ZodDefault<z.ZodBoolean>;
276
+ successMessage: z.ZodOptional<z.ZodString>;
277
+ sensitiveCollectionMode: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
278
+ standard: "standard";
279
+ sensitive: "sensitive";
280
+ }>>>;
281
+ sensitiveCollection: z.ZodOptional<z.ZodObject<{
282
+ enabledAt: z.ZodNullable<z.ZodString>;
283
+ enabledByUserId: z.ZodNullable<z.ZodString>;
284
+ confirmationVersion: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodNull]>;
285
+ }, z.core.$strict>>;
286
+ readonly submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
287
+ readonly templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
288
+ }, z.core.$strict>, z.ZodObject<{
289
+ type: z.ZodLiteral<"event-registration">;
290
+ seriesId: z.ZodOptional<z.ZodString>;
291
+ maxTickets: z.ZodDefault<z.ZodNumber>;
292
+ requiresApproval: z.ZodDefault<z.ZodBoolean>;
293
+ successMessage: z.ZodOptional<z.ZodString>;
294
+ sensitiveCollectionMode: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
295
+ standard: "standard";
296
+ sensitive: "sensitive";
297
+ }>>>;
298
+ sensitiveCollection: z.ZodOptional<z.ZodObject<{
299
+ enabledAt: z.ZodNullable<z.ZodString>;
300
+ enabledByUserId: z.ZodNullable<z.ZodString>;
301
+ confirmationVersion: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodNull]>;
302
+ }, z.core.$strict>>;
303
+ readonly submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
304
+ readonly templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
305
+ }, z.core.$strict>, z.ZodObject<{
306
+ type: z.ZodLiteral<"booking-questions">;
307
+ schemaVersion: z.ZodDefault<z.ZodLiteral<2>>;
308
+ shape: z.ZodDefault<z.ZodEnum<{
309
+ "short-form": "short-form";
310
+ "detailed-questionnaire": "detailed-questionnaire";
311
+ }>>;
312
+ sensitiveCollectionMode: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
313
+ standard: "standard";
314
+ sensitive: "sensitive";
315
+ }>>>;
316
+ sensitiveCollection: z.ZodOptional<z.ZodObject<{
317
+ enabledAt: z.ZodNullable<z.ZodString>;
318
+ enabledByUserId: z.ZodNullable<z.ZodString>;
319
+ confirmationVersion: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodNull]>;
320
+ }, z.core.$strict>>;
321
+ audienceHint: z.ZodOptional<z.ZodEnum<{
322
+ appointments: "appointments";
323
+ courses: "courses";
324
+ events: "events";
325
+ mixed: "mixed";
326
+ }>>;
327
+ customerTitle: z.ZodOptional<z.ZodString>;
328
+ introTitle: z.ZodOptional<z.ZodNullable<z.ZodString>>;
329
+ introBody: z.ZodOptional<z.ZodNullable<z.ZodString>>;
330
+ reviewLayout: z.ZodDefault<z.ZodEnum<{
331
+ flat: "flat";
332
+ sectioned: "sectioned";
333
+ }>>;
334
+ readonly submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
335
+ readonly templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
336
+ }, z.core.$strict>], "type">;
244
337
  /**
245
338
  * TypeScript types derived from schemas
246
339
  */
@@ -249,6 +342,20 @@ export type BookingFormSettings = z.infer<typeof bookingFormSettingsSchema>;
249
342
  export type EventRegistrationFormSettings = z.infer<typeof eventRegistrationFormSettingsSchema>;
250
343
  export type BookingQuestionsFormSettings = z.infer<typeof bookingQuestionsFormSettingsSchema>;
251
344
  export type FormSettings = z.infer<typeof formSettingsSchema>;
345
+ export type FormPresentationSettings = z.infer<typeof formPresentationSettingsSchema>;
346
+ export type FormSettingsInput = z.infer<typeof formSettingsInputSchema>;
347
+ type JsonRecord = Record<string, unknown>;
348
+ export declare function stripPresentationKeysFromBehaviorSettings(value: unknown): JsonRecord;
349
+ export declare function extractFormPresentationSettings(input: Readonly<{
350
+ settingsJson?: unknown;
351
+ presentationJson?: unknown;
352
+ }>): FormPresentationSettings;
353
+ export declare function mergeFormPresentationSettings(...parts: readonly unknown[]): FormPresentationSettings;
354
+ export declare function composeFormStoredSettingsForPublicContract(input: Readonly<{
355
+ settingsJson?: unknown;
356
+ presentationJson?: unknown;
357
+ }>): JsonRecord;
358
+ export declare function parseFormBehaviorSettingsFromStoredSettings(value: unknown): FormSettings | null;
252
359
  export declare const formFieldSchema: z.ZodObject<{
253
360
  id: z.ZodString;
254
361
  label: z.ZodString;
@@ -823,8 +930,6 @@ export declare const createFormPayloadSchema: z.ZodObject<{
823
930
  }, z.core.$strict>>;
824
931
  }, z.core.$strict>;
825
932
  settings: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
826
- submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
827
- templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
828
933
  type: z.ZodLiteral<"contact">;
829
934
  successMessage: z.ZodOptional<z.ZodString>;
830
935
  sensitiveCollectionMode: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
@@ -855,9 +960,9 @@ export declare const createFormPayloadSchema: z.ZodObject<{
855
960
  }, z.core.$strict>>;
856
961
  emails: z.ZodOptional<z.ZodArray<z.ZodString>>;
857
962
  }, z.core.$strict>>;
963
+ readonly submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
964
+ readonly templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
858
965
  }, z.core.$strict>, z.ZodObject<{
859
- submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
860
- templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
861
966
  type: z.ZodLiteral<"booking">;
862
967
  serviceId: z.ZodOptional<z.ZodString>;
863
968
  serviceIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -873,9 +978,9 @@ export declare const createFormPayloadSchema: z.ZodObject<{
873
978
  enabledByUserId: z.ZodNullable<z.ZodString>;
874
979
  confirmationVersion: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodNull]>;
875
980
  }, z.core.$strict>>;
981
+ readonly submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
982
+ readonly templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
876
983
  }, z.core.$strict>, z.ZodObject<{
877
- submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
878
- templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
879
984
  type: z.ZodLiteral<"event-registration">;
880
985
  seriesId: z.ZodOptional<z.ZodString>;
881
986
  maxTickets: z.ZodDefault<z.ZodNumber>;
@@ -890,9 +995,9 @@ export declare const createFormPayloadSchema: z.ZodObject<{
890
995
  enabledByUserId: z.ZodNullable<z.ZodString>;
891
996
  confirmationVersion: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodNull]>;
892
997
  }, z.core.$strict>>;
998
+ readonly submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
999
+ readonly templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
893
1000
  }, z.core.$strict>, z.ZodObject<{
894
- submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
895
- templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
896
1001
  type: z.ZodLiteral<"booking-questions">;
897
1002
  schemaVersion: z.ZodDefault<z.ZodLiteral<2>>;
898
1003
  shape: z.ZodDefault<z.ZodEnum<{
@@ -921,7 +1026,13 @@ export declare const createFormPayloadSchema: z.ZodObject<{
921
1026
  flat: "flat";
922
1027
  sectioned: "sectioned";
923
1028
  }>>;
1029
+ readonly submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1030
+ readonly templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
924
1031
  }, z.core.$strict>], "type">>;
1032
+ presentation: z.ZodOptional<z.ZodObject<{
1033
+ submitLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1034
+ templateKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1035
+ }, z.core.$strict>>;
925
1036
  }, z.core.$strict>;
926
1037
  export type CreateFormPayload = z.infer<typeof createFormPayloadSchema>;
927
1038
  export {};
@@ -2,7 +2,7 @@ import { type ReactNode } from 'react';
2
2
  import type { ApiClient } from '@riverbankcms/api/request';
3
3
  import { type ContentTypeSchema } from '@riverbankcms/content-model';
4
4
  import { type ZoomLevel } from '@riverbankcms/content-editor';
5
- import type { MediaAssetIndexItem, OccurrenceContextData, Theme } from '@riverbankcms/blocks';
5
+ import type { EntrySubrouteContextData, MediaAssetIndexItem, Theme } from '@riverbankcms/blocks';
6
6
  import type { FieldWidgetComponent } from '@riverbankcms/block-form/client';
7
7
  import { type ViewportMode, type ViewportWidth } from './PreviewViewportControls';
8
8
  import type { PreviewEditorSidebarProps, PreviewTemplateData } from './PreviewEditorSidebar';
@@ -17,7 +17,7 @@ type EntryEditorPanelProps = {
17
17
  apiClient: ApiClient;
18
18
  bearerToken?: string | null;
19
19
  supabaseUrl?: string;
20
- occurrenceContext?: OccurrenceContextData | null;
20
+ entrySubrouteContext?: EntrySubrouteContextData | null;
21
21
  metadataPanel: ReactNode;
22
22
  mediaAssets?: MediaAssetIndexItem[];
23
23
  widgets: Record<string, FieldWidgetComponent>;
@@ -28,5 +28,5 @@ type EntryEditorPanelProps = {
28
28
  onViewportWidthChange: (width: ViewportWidth) => void;
29
29
  onZoomChange: (zoom: ZoomLevel) => void;
30
30
  };
31
- export declare function EntryEditorPanel({ siteId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, theme, apiClient, bearerToken, supabaseUrl, occurrenceContext, metadataPanel, mediaAssets, widgets, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: EntryEditorPanelProps): import("react/jsx-runtime").JSX.Element;
31
+ export declare function EntryEditorPanel({ siteId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, theme, apiClient, bearerToken, supabaseUrl, entrySubrouteContext, metadataPanel, mediaAssets, widgets, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: EntryEditorPanelProps): import("react/jsx-runtime").JSX.Element;
32
32
  export {};
@@ -2,7 +2,7 @@ import { type ReactNode } from "react";
2
2
  import type { ApiClient } from "@riverbankcms/api/request";
3
3
  import type { SdkConfigForBlockPicker } from "@riverbankcms/editor-blocks";
4
4
  import type { SurfaceId } from "@riverbankcms/surfaces";
5
- import type { MediaAssetIndexItem, OccurrenceContextData, Theme } from "@riverbankcms/blocks";
5
+ import type { EntrySubrouteContextData, MediaAssetIndexItem, Theme } from "@riverbankcms/blocks";
6
6
  import { type ContentTypeSchema } from "@riverbankcms/content-model";
7
7
  import { type ZoomLevel } from "@riverbankcms/content-editor";
8
8
  import type { ButtonPersonalityId } from "@riverbankcms/theme-core/buttons";
@@ -38,7 +38,7 @@ export type PreviewEditorSidebarProps = {
38
38
  apiClient: ApiClient;
39
39
  bearerToken?: string | null;
40
40
  supabaseUrl?: string;
41
- occurrenceContext?: OccurrenceContextData | null;
41
+ entrySubrouteContext?: EntrySubrouteContextData | null;
42
42
  assistantPanel?: ReactNode;
43
43
  sdkConfig?: SdkConfigForBlockPicker | null;
44
44
  mediaAssets?: MediaAssetIndexItem[];
@@ -53,4 +53,4 @@ export type PreviewEditorSidebarProps = {
53
53
  onViewportWidthChange: (width: ViewportWidth) => void;
54
54
  onZoomChange: (zoom: ZoomLevel) => void;
55
55
  };
56
- export declare function PreviewEditorSidebar({ surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, theme, themeId, themeSelectionId, themeSelectionButtonPersonalityId, themeSelectionPaletteVariantId, themeSelectionPaletteOverrides, apiClient, bearerToken, supabaseUrl, occurrenceContext, assistantPanel, sdkConfig, mediaAssets, siteStyleAccess, activeTab, onTabChange, onClose, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: PreviewEditorSidebarProps): import("react/jsx-runtime").JSX.Element;
56
+ export declare function PreviewEditorSidebar({ surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, theme, themeId, themeSelectionId, themeSelectionButtonPersonalityId, themeSelectionPaletteVariantId, themeSelectionPaletteOverrides, apiClient, bearerToken, supabaseUrl, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, siteStyleAccess, activeTab, onTabChange, onClose, viewportMode, viewportWidth, zoom, onViewportModeChange, onViewportWidthChange, onZoomChange, }: PreviewEditorSidebarProps): import("react/jsx-runtime").JSX.Element;
@@ -2,7 +2,7 @@ import { type ComponentProps, type ReactNode } from "react";
2
2
  import { BlockApiProvider } from "@riverbankcms/blocks/client";
3
3
  import type { ButtonPersonalityId } from "@riverbankcms/theme-core/buttons";
4
4
  import type { PaletteOverrides, PaletteVariantId } from "@riverbankcms/theme-core/palette";
5
- import type { MediaAssetIndexItem, OccurrenceContextData, Theme } from "@riverbankcms/blocks";
5
+ import type { EntrySubrouteContextData, MediaAssetIndexItem, Theme } from "@riverbankcms/blocks";
6
6
  import type { ContentTypeSchema } from "@riverbankcms/content-model";
7
7
  import type { SdkConfigForBlockPicker } from "@riverbankcms/editor-blocks";
8
8
  import type { SurfaceId } from "@riverbankcms/surfaces";
@@ -54,7 +54,7 @@ export type PreviewShellProps = {
54
54
  pageMetadata?: PreviewPageMetadata;
55
55
  isSiteLaunched: boolean;
56
56
  maintenanceModeEnabled: boolean;
57
- occurrenceContext?: OccurrenceContextData | null;
57
+ entrySubrouteContext?: EntrySubrouteContextData | null;
58
58
  assistantPanel?: PreviewEditorSidebarProps["assistantPanel"];
59
59
  sdkConfig?: SdkConfigForBlockPicker | null;
60
60
  mediaAssets?: MediaAssetIndexItem[];
@@ -63,7 +63,7 @@ export type PreviewShellProps = {
63
63
  designEditorEligibility?: PreviewDesignEditorEligibility;
64
64
  baseFetch?: BaseFetch;
65
65
  };
66
- export declare function PreviewShell({ children, apiBaseUrl, blockApiConfig, siteId, siteSlug, editableId, previewSession, previewToken, dashboardBaseUrl, surfaceId, theme, themeId, themeSelectionId, themeSelectionButtonPersonalityId, themeSelectionPaletteVariantId, themeSelectionPaletteOverrides, pageId, routeId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, initialStatus, initialBlocks, pageMetadata, isSiteLaunched, maintenanceModeEnabled, occurrenceContext, assistantPanel, sdkConfig, mediaAssets, supabaseUrl, useThemeScope, designEditorEligibility, baseFetch, }: PreviewShellProps): import("react/jsx-runtime").JSX.Element;
66
+ export declare function PreviewShell({ children, apiBaseUrl, blockApiConfig, siteId, siteSlug, editableId, previewSession, previewToken, dashboardBaseUrl, surfaceId, theme, themeId, themeSelectionId, themeSelectionButtonPersonalityId, themeSelectionPaletteVariantId, themeSelectionPaletteOverrides, pageId, routeId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, initialStatus, initialBlocks, pageMetadata, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, supabaseUrl, useThemeScope, designEditorEligibility, baseFetch, }: PreviewShellProps): import("react/jsx-runtime").JSX.Element;
67
67
  export declare function defaultDesignEditorEligibility(input: Readonly<{
68
68
  pageId: string | null;
69
69
  entryData?: PreviewContentEntryData | null;
@@ -1,5 +1,5 @@
1
1
  import { type ReactNode } from "react";
2
- import { type MediaAssetIndexItem, type OccurrenceContextData, type Theme } from "@riverbankcms/blocks";
2
+ import { type EntrySubrouteContextData, type MediaAssetIndexItem, type Theme } from "@riverbankcms/blocks";
3
3
  import type { ButtonPersonalityId } from "@riverbankcms/theme-core/buttons";
4
4
  import type { PaletteOverrides, PaletteVariantId } from "@riverbankcms/theme-core/palette";
5
5
  import type { ContentTypeSchema } from "@riverbankcms/content-model";
@@ -30,11 +30,11 @@ export type PreviewShellLayoutProps = {
30
30
  supabaseUrl?: string;
31
31
  isSiteLaunched: boolean;
32
32
  maintenanceModeEnabled: boolean;
33
- occurrenceContext?: OccurrenceContextData | null;
33
+ entrySubrouteContext?: EntrySubrouteContextData | null;
34
34
  assistantPanel?: ReactNode;
35
35
  sdkConfig?: SdkConfigForBlockPicker | null;
36
36
  mediaAssets?: MediaAssetIndexItem[];
37
37
  useThemeScope?: boolean;
38
38
  siteStyleAccess?: SiteStyleAccess;
39
39
  };
40
- export declare function PreviewShellLayout({ children, theme, surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, apiClient, bearerToken, themeId, themeSelectionId, themeSelectionButtonPersonalityId, themeSelectionPaletteVariantId, themeSelectionPaletteOverrides, supabaseUrl, isSiteLaunched, maintenanceModeEnabled, occurrenceContext, assistantPanel, sdkConfig, mediaAssets, useThemeScope, siteStyleAccess, }: PreviewShellLayoutProps): import("react/jsx-runtime").JSX.Element;
40
+ export declare function PreviewShellLayout({ children, theme, surfaceId, siteId, dashboardBaseUrl, pageId, entryData, contentTypeSchema, referenceContentTypeKeys, draftContent, currentTemplate, apiClient, bearerToken, themeId, themeSelectionId, themeSelectionButtonPersonalityId, themeSelectionPaletteVariantId, themeSelectionPaletteOverrides, supabaseUrl, isSiteLaunched, maintenanceModeEnabled, entrySubrouteContext, assistantPanel, sdkConfig, mediaAssets, useThemeScope, siteStyleAccess, }: PreviewShellLayoutProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,13 @@
1
+ import type { SubrouteNoticeModel } from './subrouteNotice';
2
+ type SubrouteNoticeProps = {
3
+ model: SubrouteNoticeModel;
4
+ };
5
+ /**
6
+ * Presentational notice shown above the sidebar editor when previewing a
7
+ * sub-entry (an event occurrence, a course run, …).
8
+ *
9
+ * Render-only — all wording and the CTA target are produced by
10
+ * {@link resolveSubrouteNotice}.
11
+ */
12
+ export declare function SubrouteNotice({ model }: SubrouteNoticeProps): import("react/jsx-runtime").JSX.Element;
13
+ export {};
@@ -0,0 +1,26 @@
1
+ import { type EntrySubrouteContextData } from '@riverbankcms/blocks';
2
+ /**
3
+ * Render-agnostic model for the "you're previewing a sub-entry" notice.
4
+ *
5
+ * Built generically from a {@link SubrouteKindMeta} so consumers (the sidebar
6
+ * notice today, breadcrumbs/SEO tomorrow) share one source of nouns and copy.
7
+ */
8
+ export type SubrouteNoticeModel = {
9
+ title: string;
10
+ body: string;
11
+ cta: {
12
+ label: string;
13
+ href: string;
14
+ } | null;
15
+ /** Shown when the dashboard URL can't be built (e.g. missing env var). */
16
+ fallbackMessage: string | null;
17
+ };
18
+ /**
19
+ * Resolve the notice model for the current subroute context.
20
+ *
21
+ * Returns null when there's no subroute context, meaning the consumer should
22
+ * render nothing.
23
+ */
24
+ export declare function resolveSubrouteNotice(ctx: EntrySubrouteContextData | null, args: {
25
+ siteId: string;
26
+ }): SubrouteNoticeModel | null;
@@ -44,5 +44,6 @@ export type EntrySubrouteContextData = {
44
44
  courseId: string;
45
45
  seriesId: string;
46
46
  runSlug: string;
47
+ runName: string | null;
47
48
  };
48
49
  };
@@ -26,7 +26,7 @@ export interface ApiResponse<TData> {
26
26
  data: TData;
27
27
  meta: ResponseMeta;
28
28
  }
29
- export type ApiErrorCode = "auth:unauthenticated" | "auth:token_expired" | "auth:token_invalid" | "auth:forbidden" | "auth:mfa_required" | "auth:sudo_required" | "auth:insufficient_permissions" | "auth:impersonation_restricted" | "validation:invalid_input" | "validation:missing_field" | "validation:invalid_format" | "validation:payload_too_large" | "resource:not_found" | "resource:already_exists" | "resource:conflict" | "resource:gone" | "rate_limit:exceeded" | "billing:payment_required" | "billing:plan_limit_exceeded" | "billing:pass_redemption_failed" | "server:internal_error" | "server:unavailable" | "external:service_error" | "network:connection_error" | "network:timeout" | "network:dns_error";
29
+ export type ApiErrorCode = "auth:unauthenticated" | "auth:token_expired" | "auth:token_invalid" | "auth:forbidden" | "auth:mfa_required" | "auth:sudo_required" | "auth:insufficient_permissions" | "auth:impersonation_restricted" | "validation:invalid_input" | "validation:missing_field" | "validation:invalid_format" | "validation:payload_too_large" | "resource:not_found" | "resource:already_exists" | "resource:conflict" | "resource:gone" | "rate_limit:exceeded" | "billing:payment_required" | "billing:plan_limit_exceeded" | "billing:pass_redemption_failed" | "server:internal_error" | "server:unavailable" | "external:service_error" | "external:registrar_orphaned_contact_profile" | "network:connection_error" | "network:timeout" | "network:dns_error";
30
30
  export interface FieldError {
31
31
  field: string;
32
32
  code: string;
@@ -734,6 +734,7 @@ export type ResolveEntrySubrouteResponse = {
734
734
  courseId: string;
735
735
  seriesId: string;
736
736
  runSlug: string;
737
+ runName: string | null;
737
738
  };
738
739
  } | null;
739
740
  };
@@ -342,6 +342,7 @@ export type CourseEntrySubrouteContext = {
342
342
  courseId: string;
343
343
  seriesId: string;
344
344
  runSlug: string;
345
+ runName: string | null;
345
346
  };
346
347
  } | {
347
348
  kind: 'event-occurrence';
@@ -12,16 +12,15 @@ type ResolvedSubroute = NonNullable<ResolveEntrySubrouteResponse['subroute']>;
12
12
  export type OccurrenceData = Extract<ResolvedSubroute, {
13
13
  kind: 'event-occurrence';
14
14
  }>['occurrence'];
15
+ export type CourseRunData = Extract<ResolvedSubroute, {
16
+ kind: 'course-run';
17
+ }>['run'];
15
18
  export type EntrySubrouteData = {
16
19
  kind: 'event-occurrence';
17
20
  occurrence: OccurrenceData;
18
21
  } | {
19
22
  kind: 'course-run';
20
- run: {
21
- courseId: string;
22
- seriesId: string;
23
- runSlug: string;
24
- };
23
+ run: CourseRunData;
25
24
  };
26
25
  /**
27
26
  * Options for resolving page content.
@@ -8,4 +8,4 @@
8
8
  * 1. This constant
9
9
  * 2. The "version" field in package.json
10
10
  */
11
- export declare const SDK_VERSION = "0.60.11";
11
+ export declare const SDK_VERSION = "0.60.14";
@@ -75,6 +75,17 @@ export declare const buttonPersonalities: readonly [Readonly<{
75
75
  era: import("../../site-styles").StyleEra;
76
76
  }>>>;
77
77
  buttonSystem: import("@riverbankcms/blocks").ButtonSystem;
78
+ }>, Readonly<{
79
+ id: ButtonPersonalityId<"showtime-pill">;
80
+ name: string;
81
+ description: string;
82
+ tags: Readonly<Partial<Readonly<{
83
+ tone: import("../../site-styles").StyleTone;
84
+ energy: import("../../site-styles").StyleEnergy;
85
+ motion: import("../../site-styles").StyleMotion;
86
+ era: import("../../site-styles").StyleEra;
87
+ }>>>;
88
+ buttonSystem: import("@riverbankcms/blocks").ButtonSystem;
78
89
  }>];
79
90
  type UnbrandedButtonPersonalityId<TValue> = TValue extends infer TRaw & {
80
91
  readonly __brand: 'ButtonPersonalityId';
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Showtime Pill — bold, spacious, fully rounded buttons with playful pop
3
+ * motion. Suits energetic schools, performers, festivals, and community brands
4
+ * that need calls to action to feel loud without becoming visually chaotic.
5
+ */
6
+ export declare const showtimePill: Readonly<{
7
+ id: import("./types").ButtonPersonalityId<"showtime-pill">;
8
+ name: string;
9
+ description: string;
10
+ tags: Readonly<Partial<Readonly<{
11
+ tone: import("../../site-styles").StyleTone;
12
+ energy: import("../../site-styles").StyleEnergy;
13
+ motion: import("../../site-styles").StyleMotion;
14
+ era: import("../../site-styles").StyleEra;
15
+ }>>>;
16
+ buttonSystem: import("@riverbankcms/blocks").ButtonSystem;
17
+ }>;
@@ -148,9 +148,9 @@ export declare const variantRoleSchema: z.ZodEnum<{
148
148
  link: "link";
149
149
  primary: "primary";
150
150
  secondary: "secondary";
151
- accent: "accent";
152
151
  outline: "outline";
153
152
  ghost: "ghost";
153
+ accent: "accent";
154
154
  tertiary: "tertiary";
155
155
  }>;
156
156
  export declare const buttonSizeNameSchema: z.ZodEnum<{