@riverbankcms/sdk 0.127.0 → 0.129.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 (178) hide show
  1. package/README.md +33 -0
  2. package/dist/{PreviewEditorSidebar-BXtfF7tp.mjs → PreviewEditorSidebar-B43CJ0g_.mjs} +9 -33
  3. package/dist/{PreviewEditorUI-Dou73Q0K.mjs → PreviewEditorUI-DHirVkeM.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-DgFDIwvK.mjs → PreviewQueryProvider-B1kbhaJD.mjs} +1 -1
  5. package/dist/SdkPreviewModeRuntime-BJumZy1B.mjs +11209 -0
  6. package/dist/{SiteChromeCustomizeContext-DZiDBAYu.mjs → SiteChromeCustomizeContext-D9SlpwEj.mjs} +31757 -1621
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +288 -36
  8. package/dist/_dts/api/src/bookingClosures.d.ts +19 -3
  9. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +4 -3
  10. package/dist/_dts/api/src/bookingRecords.d.ts +0 -13
  11. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +2 -2
  12. package/dist/_dts/api/src/communications.d.ts +2 -1
  13. package/dist/_dts/api/src/contactFormSummary.d.ts +15 -0
  14. package/dist/_dts/api/src/contentRuntime.d.ts +2 -5
  15. package/dist/_dts/api/src/endpoints.d.ts +1 -1
  16. package/dist/_dts/api/src/footerSettings.d.ts +11 -0
  17. package/dist/_dts/api/src/index.d.ts +2 -1
  18. package/dist/_dts/api/src/occurrenceScheduling.d.ts +48 -0
  19. package/dist/_dts/api/src/participantMessaging.d.ts +5 -3
  20. package/dist/_dts/api/src/publicExperience/siteEndpoints.d.ts +7 -0
  21. package/dist/_dts/api/src/sdkContracts.d.ts +7 -5
  22. package/dist/_dts/api/src/siteOperations.d.ts +12 -3
  23. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +3 -2
  24. package/dist/_dts/blocks/src/PageRenderer.d.ts +20 -10
  25. package/dist/_dts/blocks/src/client/form.d.ts +1 -0
  26. package/dist/_dts/blocks/src/client/newsletter-form.d.ts +1 -0
  27. package/dist/_dts/blocks/src/client/site-chrome.d.ts +1 -0
  28. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -8
  29. package/dist/_dts/blocks/src/index.d.ts +2 -1
  30. package/dist/_dts/blocks/src/pageRendererBoundaries.d.ts +30 -0
  31. package/dist/_dts/blocks/src/pageRenderingMode.d.ts +37 -0
  32. package/dist/_dts/blocks/src/rendering/server.d.ts +1 -1
  33. package/dist/_dts/blocks/src/server.d.ts +1 -1
  34. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +41 -0
  35. package/dist/_dts/blocks/src/system/blocks/newsletter-signup-destination.d.ts +14 -23
  36. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +1 -1
  37. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +109 -23
  38. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  39. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +42 -108
  40. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +21 -54
  41. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/logic.d.ts +1 -1
  42. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationSurface.d.ts +26 -0
  43. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +8 -0
  44. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +21 -0
  45. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +29 -78
  46. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.server.d.ts +1 -1
  47. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +3 -6
  48. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +27 -8
  49. package/dist/_dts/content-editor/src/FooterComposerOverview.d.ts +21 -0
  50. package/dist/_dts/content-editor/src/FooterComposerPanel.d.ts +3 -1
  51. package/dist/_dts/content-editor/src/FooterEngagementEditorFields.d.ts +31 -0
  52. package/dist/_dts/content-editor/src/FooterEngagementEditorPanel.d.ts +17 -0
  53. package/dist/_dts/content-editor/src/footerComposer.d.ts +3 -0
  54. package/dist/_dts/content-editor/src/footerEngagementDraft.d.ts +57 -0
  55. package/dist/_dts/content-editor/src/footerEngagementEditor.d.ts +11 -0
  56. package/dist/_dts/content-editor/src/footerPreviewRuntime.d.ts +13 -0
  57. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  58. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +35 -0
  59. package/dist/_dts/core/src/footer-arrangement.d.ts +2 -0
  60. package/dist/_dts/core/src/footer-composition-types.d.ts +118 -0
  61. package/dist/_dts/core/src/footer-composition.d.ts +7 -116
  62. package/dist/_dts/core/src/footer-engagement.d.ts +30 -0
  63. package/dist/_dts/core/src/index.d.ts +4 -0
  64. package/dist/_dts/core/src/newsletter-signup-destination.d.ts +38 -0
  65. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +73 -6
  66. package/dist/_dts/db/src/index.d.ts +1 -0
  67. package/dist/_dts/db/src/schemas/forms.d.ts +72 -2
  68. package/dist/_dts/db/src/schemas/standard-contact.d.ts +114 -0
  69. package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +2 -0
  70. package/dist/_dts/preview-next/src/client/blocks/previewBatchLoaderParams.d.ts +6 -0
  71. package/dist/_dts/preview-next/src/client/index.d.ts +47 -47
  72. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -5
  73. package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -5
  74. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -5
  75. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -4
  76. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +19 -7
  77. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +30 -23
  78. package/dist/_dts/preview-next/src/client/preview/PreviewThemedSiteDocument.d.ts +18 -5
  79. package/dist/_dts/preview-next/src/client/preview/themeRuntime.d.ts +9 -0
  80. package/dist/_dts/preview-next/src/client/sdk/SdkPreviewMode.d.ts +21 -6
  81. package/dist/_dts/preview-next/src/client/sdk-runtime.d.ts +8 -8
  82. package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +6 -5
  83. package/dist/_dts/sdk/src/cli/commands/push/execute/footer.d.ts +9 -0
  84. package/dist/_dts/sdk/src/cli/content/footerFile.d.ts +10 -0
  85. package/dist/_dts/sdk/src/cli/content/reader.d.ts +3 -5
  86. package/dist/_dts/sdk/src/cli/site-commands/footerCommands.d.ts +15 -3
  87. package/dist/_dts/sdk/src/client/combineAbortSignals.d.ts +2 -0
  88. package/dist/_dts/sdk/src/client/management/types.d.ts +6 -15
  89. package/dist/_dts/sdk/src/client/types.d.ts +10 -2
  90. package/dist/_dts/sdk/src/client/wholeSeriesReadOperations.d.ts +11 -0
  91. package/dist/_dts/sdk/src/config/types.d.ts +1 -1
  92. package/dist/_dts/sdk/src/config/validation.d.ts +3 -0
  93. package/dist/_dts/sdk/src/contracts/event-registration-content.d.ts +16 -0
  94. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +4 -15
  95. package/dist/_dts/sdk/src/next/catch-all.d.ts +6 -0
  96. package/dist/_dts/sdk/src/next/index.d.ts +2 -1
  97. package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +33 -0
  98. package/dist/_dts/sdk/src/next/types.d.ts +23 -9
  99. package/dist/_dts/sdk/src/preview-next/before-render.d.ts +4 -6
  100. package/dist/_dts/sdk/src/preview-next/client/index.d.ts +3 -3
  101. package/dist/_dts/sdk/src/preview-next/client/runtime.d.ts +1 -1
  102. package/dist/_dts/sdk/src/public-api/contracts.d.ts +4 -18
  103. package/dist/_dts/sdk/src/public-api/teamMemberContracts.d.ts +17 -0
  104. package/dist/_dts/sdk/src/public-api/wholeSeriesContracts.d.ts +2 -0
  105. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +32 -3
  106. package/dist/_dts/sdk/src/rendering/components/Block.shared.d.ts +13 -2
  107. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +31 -18
  108. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +20 -9
  109. package/dist/_dts/sdk/src/rendering/index.d.ts +8 -4
  110. package/dist/_dts/sdk/src/rendering/mediaAssets.d.ts +8 -2
  111. package/dist/_dts/sdk/src/rendering/renderingMode.d.ts +23 -0
  112. package/dist/_dts/sdk/src/rendering/server.d.ts +5 -3
  113. package/dist/_dts/sdk/src/rendering/themeRuntime.d.ts +6 -0
  114. package/dist/_dts/sdk/src/version.d.ts +1 -1
  115. package/dist/_dts/site-commands/src/commandContract.d.ts +8 -1
  116. package/dist/_dts/site-commands/src/commands.d.ts +16 -2
  117. package/dist/_dts/theme-core/src/header/paintTargets.d.ts +10 -4
  118. package/dist/_dts/theme-core/src/header/surfaceRules.d.ts +2 -3
  119. package/dist/cli/index.mjs +5535 -4835
  120. package/dist/cli/init-docs/content/workflow-preview-mode.md +24 -11
  121. package/dist/client/{courseRegistration-DTEYWL6Z.mjs → CourseRegistrationWizard-xRmA7REV.mjs} +329 -49
  122. package/dist/client/{DiscountCodeDisclosure-BDFRp8Y7.mjs → DiscountCodeDisclosure-B9vriL5C.mjs} +1 -1
  123. package/dist/client/{EventCombined.client-DJgF1_lf.mjs → EventCombined.client-BgVnVTlz.mjs} +2 -2
  124. package/dist/client/{EventListing.client-CnWGNjOr.mjs → EventListing.client-CqdsO7jO.mjs} +2 -2
  125. package/dist/client/{LeafletStaticMap-BISs9Bl7.mjs → LeafletStaticMap-CKPxot9M.mjs} +1 -1
  126. package/dist/client/{StepIndicator-D8gVYkK-.mjs → StepIndicator-DGCYuBJ1.mjs} +2 -2
  127. package/dist/client/{accordion-DFDajgDz.mjs → accordion-BfN5Eqd-.mjs} +1 -1
  128. package/dist/client/{bookingForm-Bdqj9-52.mjs → bookingForm-DOvCpBFP.mjs} +5 -5
  129. package/dist/client/{carousel-Cvqf-kN8.mjs → carousel-DPNmiH0f.mjs} +1 -1
  130. package/dist/client/{cart-CuH2TJXP.mjs → cart--egVXlrR.mjs} +3 -3
  131. package/dist/client/{checkout-CMNPpejZ.mjs → checkout-DywWtMcq.mjs} +3 -3
  132. package/dist/client/client.mjs +5324 -4942
  133. package/dist/client/courseRegistration-Dk9qFVwt.mjs +46 -0
  134. package/dist/client/{eventCalendar-BW-XoxZ0.mjs → eventCalendar-Bkz2HjlS.mjs} +4 -4
  135. package/dist/client/{eventCombined-Bpn7s0y9.mjs → eventCombined-D4kipYWg.mjs} +2 -2
  136. package/dist/client/{eventDetails-D2uUSTMH.mjs → eventDetails-Dz_5ix2Q.mjs} +56 -35
  137. package/dist/client/{eventListing-CVr1c094.mjs → eventListing-D0vm-zST.mjs} +2 -2
  138. package/dist/client/{eventRegistration-Dv4AvkMw.mjs → eventRegistration-Cw1E4Q4p.mjs} +58 -6
  139. package/dist/client/{form-DxdKf9fs.mjs → form-C2Zf1n3K.mjs} +1 -1
  140. package/dist/client/{headerSection-BaXI5Sro.mjs → headerSection-CP05gzdc.mjs} +2 -2
  141. package/dist/client/hooks.mjs +212 -61
  142. package/dist/client/{locationMap-BEtW2fKz.mjs → locationMap-Cl3x9PYJ.mjs} +2 -2
  143. package/dist/client/{newsletterForm-BKKs0S4R.mjs → newsletterForm-DyEJoClm.mjs} +26 -20
  144. package/dist/client/{pricing-ClkqcElA.mjs → pricing-DGuNR1W4.mjs} +1 -1
  145. package/dist/client/{productDetail-H-ru8dyy.mjs → productDetail-Cq-HrGew.mjs} +3 -3
  146. package/dist/client/{productList-Buyi5c0C.mjs → productList-DbB3jwqd.mjs} +3 -3
  147. package/dist/client/{propsDecoder-BF7i6Ijg.mjs → propsDecoder-CiTuhUwY.mjs} +130 -87
  148. package/dist/client/rendering/client.mjs +416 -208
  149. package/dist/client/rendering/islands.mjs +18 -18
  150. package/dist/client/rendering.mjs +6026 -5596
  151. package/dist/client/{scrollToBlock-D_7t8yWb.mjs → scrollToBlock-CShkRqab.mjs} +1 -1
  152. package/dist/client/{shop-CF7SZQNX.mjs → shop-Cu4Ib-ZA.mjs} +5 -5
  153. package/dist/client/{shop-commerce-DA7_Rq5p.mjs → shop-commerce-BzpsOdh7.mjs} +4 -4
  154. package/dist/client/{shop-commerce-store-BmLqW7Gh.mjs → shop-commerce-store-DaE7Fhj8.mjs} +1 -1
  155. package/dist/client/{shopShared-WL-E1znM.mjs → shopShared-cF0c20vB.mjs} +2 -2
  156. package/dist/client/{useEventFilters-rc8VLeLV.mjs → useEventFilters-QZ3HMgaJ.mjs} +2 -2
  157. package/dist/client/{usePolling-1ncrfd4S.mjs → usePolling-BKf0GcE-.mjs} +2 -2
  158. package/dist/preview-next/before-render.mjs +11 -4
  159. package/dist/preview-next/client/runtime.mjs +4 -4
  160. package/dist/preview-next/middleware.mjs +1 -1
  161. package/dist/{previewAuthStore-Dev9CdG9.mjs → previewAuthStore-BesgU5Xu.mjs} +1 -1
  162. package/dist/{sdk-runtime-BnrCCFJq.mjs → sdk-runtime-CfZd5pAm.mjs} +2 -2
  163. package/dist/{separator-CFvBx2yl.mjs → separator-DkTe68HE.mjs} +1 -1
  164. package/dist/server/components.mjs +950 -639
  165. package/dist/server/config-validation.mjs +209 -61
  166. package/dist/server/config.mjs +209 -61
  167. package/dist/server/data.mjs +212 -61
  168. package/dist/server/index.mjs +40 -16
  169. package/dist/server/next.mjs +1181 -835
  170. package/dist/server/page-converter.mjs +211 -64
  171. package/dist/server/prebuild.mjs +1 -1
  172. package/dist/server/rendering/server.mjs +974 -637
  173. package/dist/server/rendering.mjs +980 -644
  174. package/dist/server/routing.mjs +254 -80
  175. package/dist/server/server.mjs +252 -77
  176. package/package.json +1 -1
  177. package/dist/SdkPreviewModeRuntime-B0HPXr-l.mjs +0 -39546
  178. package/dist/client/MagicLinkForm-b5E_HoG9.mjs +0 -327
@@ -1,16 +1,17 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import type { ApiClient } from '../../../../api/src/request';
3
- import { type BookingOfferingPresetSummary, type MediaAssetIndexItem, type Theme } from '../../../../blocks/src/index';
3
+ import { type BookingOfferingPresetSummary, type Theme } from '../../../../blocks/src/index';
4
4
  import type { FieldWidgetComponent } from '../../../../block-form/src/client/index';
5
5
  import type { SdkConfigForBlockPicker } from '../../../../editor-blocks/src/index';
6
6
  import { __testUtils, createPreviewEntryPickerAdapter, createPreviewLinkAdapters, createPreviewReferenceAdapters, createPreviewSiteOptionAdapters } from './widgetAdapters';
7
- export declare function PreviewFormProvider({ siteId: rawSiteId, theme, previewClient, bearerToken, supabaseUrl, mediaAssets, bookingOfferingPresets, sdkConfig, children, }: {
7
+ /**
8
+ * Composes preview form widget providers beneath PreviewShell's media authority.
9
+ * Consumers rendering this directly must provide an ancestor MediaEditorProvider.
10
+ */
11
+ export declare function PreviewFormProvider({ siteId: rawSiteId, theme, previewClient, bookingOfferingPresets, sdkConfig, children, }: {
8
12
  siteId: string;
9
13
  theme?: Theme | null;
10
14
  previewClient: ApiClient;
11
- bearerToken?: string | null;
12
- supabaseUrl?: string;
13
- mediaAssets?: MediaAssetIndexItem[];
14
15
  bookingOfferingPresets?: readonly BookingOfferingPresetSummary[] | null;
15
16
  sdkConfig?: SdkConfigForBlockPicker | null;
16
17
  children: ReactNode;
@@ -1,3 +1,5 @@
1
+ import type { ManagementFooterContent } from '../../../../client/management/types';
2
+ import { writeFooterContentAfterPush } from '../../../content/footerFile';
1
3
  import type { EnvTarget } from '../../../helpers';
2
4
  import type { OutputContext } from '../../../output';
3
5
  import { type FooterDiff } from '../../../sync/diff';
@@ -5,6 +7,12 @@ import type { PushOptions } from '../options';
5
7
  export type FooterPushExecutionResult = Readonly<{
6
8
  success: boolean;
7
9
  }>;
10
+ export type FooterLocalRefreshResult = Readonly<{
11
+ kind: 'refreshed';
12
+ }> | Readonly<{
13
+ kind: 'failed';
14
+ cause: unknown;
15
+ }>;
8
16
  type FooterPushDecision = Readonly<{
9
17
  kind: 'unchanged';
10
18
  }> | Readonly<{
@@ -21,6 +29,7 @@ export declare function footerDryRunPayload(diff: FooterDiff): Readonly<{
21
29
  dryRun: true;
22
30
  changes: readonly string[];
23
31
  }>;
32
+ export declare function refreshLocalFooterAfterPush(contentDir: string, footer: ManagementFooterContent, writeFooter?: typeof writeFooterContentAfterPush): Promise<FooterLocalRefreshResult>;
24
33
  export declare function executeFooterPush(input: Readonly<{
25
34
  output: OutputContext;
26
35
  target: EnvTarget;
@@ -0,0 +1,10 @@
1
+ import { z } from 'zod';
2
+ export type LocalFooterContent = import('../../../../api/src/sdkContracts').SdkFooterContent;
3
+ export declare const localFooterContentSchema: z.ZodObject<{
4
+ composition: z.ZodPipe<z.ZodUnknown, z.ZodTransform<Readonly<{
5
+ schemaVersion: 1;
6
+ sections: readonly import("../../../../core/src/index").FooterSection[];
7
+ }>, unknown>>;
8
+ revision: z.ZodNumber;
9
+ }, z.core.$strict>;
10
+ export declare function writeFooterContentAfterPush(contentDir: string, footer: LocalFooterContent): Promise<string>;
@@ -12,8 +12,9 @@ import { type LocalEventScheduleIdentity } from './localEventSchedule';
12
12
  export type { LocalEventOccurrence, LocalEventScheduleIdentity } from './localEventSchedule';
13
13
  export { InvalidLocalEventScheduleIdentityError } from './localEventSchedule';
14
14
  import { type ValidatedThemeForPersistence } from '../../../../blocks/src/index';
15
+ import type { RichTextDoc } from '../../../../core/src/index';
15
16
  import type { EventPaymentTermsInput } from '../../client/management/types';
16
- import { type RichTextDoc } from '../../../../core/src/index';
17
+ import { type LocalFooterContent } from './footerFile';
17
18
  export interface LocalEntry {
18
19
  identifier: string;
19
20
  data: Record<string, unknown>;
@@ -125,10 +126,7 @@ export interface LocalTheme {
125
126
  *
126
127
  * Footer links are managed via navigation (footer menu), not this file.
127
128
  */
128
- export interface LocalFooterContent {
129
- /** Rich text content in ProseMirror JSON format. Set to null to clear. */
130
- bottomText?: RichTextDoc | null;
131
- }
129
+ export type { LocalFooterContent } from './footerFile';
132
130
  export interface LocalVenueAddress {
133
131
  line1?: string | null;
134
132
  line2?: string | null;
@@ -1,6 +1,6 @@
1
1
  import { type Result, type SiteId } from '../../../../core/src/index';
2
2
  import { type SiteCommandOf } from '../../../../site-commands/src/index';
3
- import type { ManagementClient } from '../../client/management/types';
3
+ import type { ManagementClient, ManagementFooterContent } from '../../client/management/types';
4
4
  import type { LocalFooterContent } from '../content/reader';
5
5
  import type { EnvTarget } from '../helpers';
6
6
  import type { FooterDiff } from '../sync/diff';
@@ -20,7 +20,16 @@ export type FooterSiteCommandType = 'upsertFooterContent';
20
20
  export type FooterSiteCommand = SiteCommandOf<FooterSiteCommandType>;
21
21
  export type FooterSiteCommandPlan = CliFooterCommandCompileSuccess['plan'];
22
22
  export type CliFooterCommandExecutionError = CliCommandExecutionError<FooterSiteCommandType>;
23
- export type CliFooterCommandExecutionResult = CliCommandExecutionResult<FooterSiteCommandType>;
23
+ export type CliFooterCommandApplication = Readonly<{
24
+ kind: 'not-applied';
25
+ }> | Readonly<{
26
+ kind: 'applied';
27
+ authoritativeFooter: ManagementFooterContent | null;
28
+ }>;
29
+ export type CliFooterCommandExecutionResult = Readonly<{
30
+ execution: CliCommandExecutionResult<FooterSiteCommandType>;
31
+ application: CliFooterCommandApplication;
32
+ }>;
24
33
  export declare const footerSiteCommandTypes: readonly ["upsertFooterContent"];
25
34
  export type FooterCommandReportSubject = Readonly<{
26
35
  identifier: 'footer';
@@ -36,7 +45,10 @@ export declare function executeFooterCommandPlanAsSyncResult(input: Readonly<{
36
45
  client: Pick<ManagementClient, 'footer'>;
37
46
  compiledPlan: FooterCommandCompiledPlan;
38
47
  onBeforeExecute?: (commandCount: number) => void;
39
- }>): Promise<SyncResult>;
48
+ }>): Promise<Readonly<{
49
+ syncResult: SyncResult;
50
+ application: CliFooterCommandApplication;
51
+ }>>;
40
52
  export declare function executeFooterCommandPlanAsReport(input: Readonly<{
41
53
  client: Pick<ManagementClient, 'footer'>;
42
54
  compiledPlan: FooterCommandCompiledPlan;
@@ -0,0 +1,2 @@
1
+ /** Combine signals into one that aborts when any input aborts. */
2
+ export declare function combineAbortSignals(...signals: AbortSignal[]): AbortSignal;
@@ -9,7 +9,7 @@ import type { SiteCommandOf } from '../../../../site-commands/src/index';
9
9
  import type { SdkEventPricing, SdkEventPricingInput, SdkEventTicketTypeInput } from '../../../../api/src/sdk-event-pricing';
10
10
  import type { SdkEventPaymentTerms, SdkEventPaymentTermsInput } from '../../../../api/src/sdk-event-payment-terms';
11
11
  import type { SdkEventUpsertBody } from '../../../../api/src/sdk-event-upsert';
12
- import type { SdkAddEventOccurrenceRequest, SdkEventOccurrenceCapacityIntent, SdkEventOccurrenceScheduleInput, SdkManagementEventOccurrence, SdkManagementEventSeries, SdkPullEventSeries } from '../../../../api/src/sdkContracts';
12
+ import type { SdkAddEventOccurrenceRequest, SdkEventOccurrenceCapacityIntent, SdkEventOccurrenceScheduleInput, SdkManagementEventOccurrence, SdkManagementEventSeries, SdkFooterContent, SdkPullEventSeries } from '../../../../api/src/sdkContracts';
13
13
  import type { SdkPullTruncationMeta } from '../../../../api/src/sdkContracts';
14
14
  import type { SdkCapabilitiesResponse, SdkCatalogBlocksResponse, SdkCatalogContentTypesResponse, SdkCatalogThemeResponse, SdkDemoContentResponse } from '../../../../api/src/sdkContracts';
15
15
  import type { SdkEntryPublishErrorCode, SdkPagePublishErrorCode, SdkPublicationOutcome } from '../../../../api/src/sdkContracts';
@@ -542,27 +542,18 @@ export interface ThemeStyleSelectionApplyResult {
542
542
  }
543
543
  /**
544
544
  * Footer content for SDK management operations.
545
- * A narrow legal-text command. The CMS maps this onto the V1 footer composition's
546
- * legal module without exposing or replacing the aggregate.
545
+ * The footer sync boundary carries the complete composition and its optimistic
546
+ * concurrency revision.
547
547
  */
548
- export interface FooterContent {
549
- /** Rich text content in ProseMirror JSON format */
550
- bottomText?: RichTextDoc;
551
- }
548
+ export type FooterContent = ManagementFooterContent;
552
549
  /**
553
550
  * Footer content as returned from CMS.
554
551
  */
555
- export interface ManagementFooterContent {
556
- /** Rich text content in ProseMirror JSON format */
557
- bottomText: RichTextDoc;
558
- }
552
+ export type ManagementFooterContent = SdkFooterContent;
559
553
  /**
560
554
  * Input for upserting footer content.
561
555
  */
562
- export interface FooterContentUpsertInput {
563
- /** Set to null to clear. */
564
- bottomText?: RichTextDoc | null;
565
- }
556
+ export type FooterContentUpsertInput = NonNullable<APIEndpoints['sdkUpsertFooter']['body']>;
566
557
  export interface PulledFooter {
567
558
  footer: ManagementFooterContent | null;
568
559
  meta: {
@@ -1,6 +1,6 @@
1
- import type { CheckRedirectResponse, EntriesResponse, EntryResponse, PageResponse, PublicBookingServicesResponse, PublicWeeklySlotAvailabilityResponse, PublicFormResponse, PublicFormsResponse, PublicProductsResponse, PublicTeamMembersResponse, PublicMembershipsResponse, PublicPassesResponse, PublicEventDetailsResponse, PublicEventsResponse, ResolveEventOccurrenceResponse, RouteDecisionResponse, RouteOutcomeResponse, RoutableContentResponse, SiteResponse, SitemapRoutesResponse, PublicProductCategorySelector } from '../public-api/contracts';
1
+ import type { CheckRedirectResponse, EntriesResponse, EntryResponse, PageResponse, PublicBookingServicesResponse, PublicWeeklySlotAvailabilityResponse, PublicFormResponse, PublicFormsResponse, PublicProductsResponse, PublicTeamMembersResponse, PublicMembershipsResponse, PublicPassesResponse, PublicEventDetailsResponse, PublicEventsResponse, PublicWholeSeriesOfferingResponse, ResolveEventOccurrenceResponse, RouteDecisionResponse, RouteOutcomeResponse, RoutableContentResponse, SiteResponse, SitemapRoutesResponse, PublicProductCategorySelector } from '../public-api/contracts';
2
2
  import type { PublishedRuntimeCacheAdapter, PublishedRuntimeCacheAdapterErrorKind } from './runtimeCachePolicy';
3
- export type { CheckRedirectResponse, EntriesResponse, EntryResponse, PageResponse, PublicBookingServicesResponse, PublicWeeklySlotAvailabilityResponse, PublicEventsResponse, PublicFormResponse, PublicFormsResponse, PublicProductsResponse, PublicTeamMembersResponse, PublicMembershipsResponse, PublicPassesResponse, PublicEventDetailsResponse, ResolveEventOccurrenceResponse, RouteDecisionResponse, RouteOutcomeResponse, RoutableContentResponse, SiteResponse, SitemapRoutesResponse, } from '../public-api/contracts';
3
+ export type { CheckRedirectResponse, EntriesResponse, EntryResponse, PageResponse, PublicBookingServicesResponse, PublicWeeklySlotAvailabilityResponse, PublicEventsResponse, PublicFormResponse, PublicFormsResponse, PublicProductsResponse, PublicTeamMembersResponse, PublicMembershipsResponse, PublicPassesResponse, PublicEventDetailsResponse, PublicWholeSeriesOfferingResponse, ResolveEventOccurrenceResponse, RouteDecisionResponse, RouteOutcomeResponse, RoutableContentResponse, SiteResponse, SitemapRoutesResponse, } from '../public-api/contracts';
4
4
  /**
5
5
  * Pagination metadata returned when `includeMeta: true`
6
6
  */
@@ -512,6 +512,14 @@ export interface RiverbankClient {
512
512
  seriesId?: string;
513
513
  includeOccurrenceId?: string;
514
514
  } & SdkMethodOptions): Promise<PublicEventDetailsResponse>;
515
+ /**
516
+ * Fetch one whole-series offering for a registration surface.
517
+ */
518
+ getPublicWholeSeriesOffering(params: {
519
+ siteId: string;
520
+ eventSeriesId: string;
521
+ stage?: string;
522
+ } & SdkMethodOptions): Promise<PublicWholeSeriesOfferingResponse>;
515
523
  /**
516
524
  * List public team members for a site (for Team Members block)
517
525
  */
@@ -0,0 +1,11 @@
1
+ import type { ApiClient, ApiResult } from '../../../api/src/public/index';
2
+ import type { RiverbankClient } from './types';
3
+ type WholeSeriesReadDeps = Readonly<{
4
+ apiClient: ApiClient;
5
+ resilientFetchData: <T>(cacheKey: string, fetcher: (signal: AbortSignal) => Promise<ApiResult<T>>, options: Readonly<{
6
+ signal?: AbortSignal;
7
+ }>) => Promise<T>;
8
+ }>;
9
+ type WholeSeriesReadOperations = Pick<RiverbankClient, 'getPublicWholeSeriesOffering'>;
10
+ export declare function createWholeSeriesReadOperations(deps: WholeSeriesReadDeps): WholeSeriesReadOperations;
11
+ export {};
@@ -45,7 +45,7 @@ export type BlockCategory = 'marketing' | 'content' | 'blog' | 'media' | 'layout
45
45
  *
46
46
  * Re-exported from `@riverbankcms/blocks` (single source of truth).
47
47
  */
48
- export declare const SUPPORTED_LOADER_ENDPOINTS: readonly ["listPublishedEntries", "getPublishedEntryPreview", "listPublicEvents", "listPublicRecurringSchedule", "getPublicEventDetails", "listPublicWholeSeriesOfferings", "listPublicRouteCandidates", "listPublicTeamMembers", "listPublicProducts", "listPublicPasses", "listPublicMemberships", "getPublicFormById", "getPublicBookingServices", "getPublicWeeklySlotAvailability"];
48
+ export declare const SUPPORTED_LOADER_ENDPOINTS: readonly ["listPublishedEntries", "getPublishedEntryPreview", "listPublicEvents", "listPublicRecurringSchedule", "getPublicEventDetails", "listPublicWholeSeriesOfferings", "getPublicWholeSeriesOffering", "listPublicRouteCandidates", "listPublicTeamMembers", "listPublicProducts", "listPublicPasses", "listPublicMemberships", "getPublicFormById", "getPublicBookingServices", "getPublicWeeklySlotAvailability"];
49
49
  export type SdkLoaderEndpoint = (typeof SUPPORTED_LOADER_ENDPOINTS)[number];
50
50
  export type LoaderParamBinding = {
51
51
  $bind: {
@@ -137,6 +137,7 @@ export declare const sdkLoaderEndpointSchema: z.ZodEnum<{
137
137
  getPublicBookingServices: "getPublicBookingServices";
138
138
  getPublicWeeklySlotAvailability: "getPublicWeeklySlotAvailability";
139
139
  listPublicEvents: "listPublicEvents";
140
+ getPublicWholeSeriesOffering: "getPublicWholeSeriesOffering";
140
141
  listPublicPasses: "listPublicPasses";
141
142
  listPublicMemberships: "listPublicMemberships";
142
143
  listPublicProducts: "listPublicProducts";
@@ -226,6 +227,7 @@ export declare const sdkConfigLoaderSchema: z.ZodObject<{
226
227
  getPublicBookingServices: "getPublicBookingServices";
227
228
  getPublicWeeklySlotAvailability: "getPublicWeeklySlotAvailability";
228
229
  listPublicEvents: "listPublicEvents";
230
+ getPublicWholeSeriesOffering: "getPublicWholeSeriesOffering";
229
231
  listPublicPasses: "listPublicPasses";
230
232
  listPublicMemberships: "listPublicMemberships";
231
233
  listPublicProducts: "listPublicProducts";
@@ -291,6 +293,7 @@ export declare const sdkDataLoadersSchema: z.ZodOptional<z.ZodRecord<z.ZodString
291
293
  getPublicBookingServices: "getPublicBookingServices";
292
294
  getPublicWeeklySlotAvailability: "getPublicWeeklySlotAvailability";
293
295
  listPublicEvents: "listPublicEvents";
296
+ getPublicWholeSeriesOffering: "getPublicWholeSeriesOffering";
294
297
  listPublicPasses: "listPublicPasses";
295
298
  listPublicMemberships: "listPublicMemberships";
296
299
  listPublicProducts: "listPublicProducts";
@@ -0,0 +1,16 @@
1
+ import type { ButtonVariant, SectionStylesContent } from './system-block-content';
2
+ export type EventRegistrationContent = {
3
+ heading?: string | null;
4
+ showSessions?: boolean | null;
5
+ description?: unknown;
6
+ showPrice?: boolean | null;
7
+ maxTickets?: '1' | '2' | '3' | '5' | '10' | null;
8
+ showCapacity?: boolean | null;
9
+ successMessage?: string | null;
10
+ showVenue?: boolean | null;
11
+ membershipMessage?: string | null;
12
+ waitlistMessage?: string | null;
13
+ buttonText?: string | null;
14
+ buttonVariant?: ButtonVariant | null;
15
+ _sectionStyles?: SectionStylesContent;
16
+ };
@@ -5,7 +5,10 @@
5
5
  * require importing internal blocks package types.
6
6
  */
7
7
  import type { InlineText, LinkValue, Media } from './content';
8
+ import type { EventRegistrationContent } from './event-registration-content';
9
+ export type { EventRegistrationContent } from './event-registration-content';
8
10
  import type { Brand, EventCategoryId, RichTextDoc, VenueId } from '../../../core/src/index';
11
+ import type { SiteFooterContent as BlocksSiteFooterContent } from '../../../blocks/src/system/blocks/site-footer';
9
12
  type UnknownRecord = Record<string, unknown>;
10
13
  type ImageMedia = Omit<Media, 'type'> & {
11
14
  type: 'image';
@@ -246,18 +249,6 @@ export type EventListingContent = {
246
249
  emptyMessage?: string | null;
247
250
  _sectionStyles?: SectionStylesContent;
248
251
  };
249
- export type EventRegistrationContent = {
250
- heading?: string | null;
251
- description?: unknown;
252
- maxTickets?: '1' | '2' | '3' | '5' | '10' | null;
253
- showVenue?: boolean | null;
254
- showCapacity?: boolean | null;
255
- successMessage?: string | null;
256
- waitlistMessage?: string | null;
257
- buttonText?: string | null;
258
- buttonVariant?: ButtonVariant | null;
259
- _sectionStyles?: SectionStylesContent;
260
- };
261
252
  export type EventSpotlightContent = {
262
253
  heading?: string | null;
263
254
  description?: unknown;
@@ -505,9 +496,7 @@ export type CheckoutContent = {
505
496
  emptyStateText?: string | null;
506
497
  _sectionStyles?: SectionStylesContent;
507
498
  };
508
- export type SiteFooterContent = Readonly<{
509
- showBusinessAddress?: boolean | null;
510
- }>;
499
+ export type SiteFooterContent = BlocksSiteFooterContent;
511
500
  export type SiteHeaderMode = 'default' | 'hidden';
512
501
  export type SiteHeaderContent = Readonly<{
513
502
  mode?: SiteHeaderMode | null;
@@ -1,3 +1,9 @@
1
1
  import type { CreateCatchAllPageOptions, CreateCatchAllPageResult } from './types';
2
+ type InvalidCatchAllRenderingOption = 'missing_block_overrides' | 'theme_option_in_overrides_only' | 'theme_runtime_in_overrides_only';
3
+ export declare class InvalidCatchAllRenderingOptionsError extends Error {
4
+ readonly code: InvalidCatchAllRenderingOption;
5
+ constructor(code: InvalidCatchAllRenderingOption);
6
+ }
2
7
  /** Build a Next.js catch-all page and metadata generator for Riverbank content. */
3
8
  export declare function createCatchAllPage(options: CreateCatchAllPageOptions): CreateCatchAllPageResult;
9
+ export {};
@@ -37,9 +37,10 @@
37
37
  *
38
38
  * @packageDocumentation
39
39
  */
40
- export { createCatchAllPage } from './catch-all';
40
+ export { createCatchAllPage, InvalidCatchAllRenderingOptionsError, } from './catch-all';
41
41
  export { RiverbankContentLoadError, SdkContentLoadError, classifyContentLoadError, isSdkContentLoadError, toContentLoadFailureLogFields, type CatchAllContentLoadFailureContext, type CatchAllRequestContext, type ClassifiedContentLoadError, type SdkContentLoadFailure, type SdkContentLoadFailureKind, type SdkContentLoadNotFound, } from './content-load-failure';
42
42
  export type { CreateCatchAllPageOptions, CreateCatchAllPageResult, CatchAllPageProps, CatchAllContext, ThemeSwitchConfigV1, ThemeResolverContext, } from './types';
43
+ export type { SdkOverrideOnlyRendering, SdkOverrideOnlyRuntime, SdkRenderingMode, } from '../rendering/renderingMode';
43
44
  export type { BlockLoaderMap, DataLoaderContext, DataLoaderFn, DataLoaderOverrides, DataLoaderPreviewStage, DataLoaderRenderTarget, DataLoaderSearchParams, DataLoaderValue, } from '../data/types';
44
45
  export { createGenerateStaticParams, generateAllStaticParams, normalizeStaticRoutePath, validateStaticParamsEnv, pathToSlugArray, routesToStaticParams, type CreateGenerateStaticParamsOptions, type GenerateAllStaticParamsOptions, type StaticParam, type StaticParamsClient, type StaticParamsEnvResult, type StaticParamsFailureContext, type StaticParamsFailureMode, type StaticParamsRoute, } from './static-params';
45
46
  export { createSitemap, type CreateSitemapOptions, type SitemapGenerator, } from './sitemap';
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ import { type LoadContentResult } from '../rendering/helpers/loadContent';
3
+ import type { BlockOverrideRegistrations } from '../rendering/overrides';
4
+ import type { SdkRenderingMode } from '../rendering/renderingMode';
5
+ import type { SdkThemeRuntime } from '../rendering/themeRuntime';
6
+ import type { Theme } from '../contracts';
7
+ import type { toEntrySubrouteContext } from './catch-all-utils';
8
+ type CommonRenderInput = Readonly<{
9
+ apiBaseUrl: string;
10
+ blockOverrides?: BlockOverrideRegistrations;
11
+ content: LoadContentResult;
12
+ entrySubrouteContext: ReturnType<typeof toEntrySubrouteContext>;
13
+ portalToken: string | null;
14
+ preview: boolean;
15
+ }>;
16
+ export type SdkContentRenderInput = CommonRenderInput & (Readonly<{
17
+ kind: 'themed';
18
+ theme: Theme;
19
+ themeRuntime: SdkThemeRuntime;
20
+ }> | Readonly<{
21
+ kind: 'overrides-only';
22
+ rendering: Extract<SdkRenderingMode, {
23
+ kind: 'overrides-only';
24
+ }>;
25
+ }>);
26
+ export type RenderSdkContentResult = Readonly<{
27
+ kind: 'rendered';
28
+ node: React.ReactNode;
29
+ }> | Readonly<{
30
+ kind: 'not-found';
31
+ }>;
32
+ export declare function renderSdkContent(input: SdkContentRenderInput): Promise<RenderSdkContentResult>;
33
+ export {};
@@ -9,6 +9,7 @@ import type { RiverbankClient } from '../client/types';
9
9
  import type { RiverbankSiteConfig } from '../config/types';
10
10
  import type { Theme } from '../contracts';
11
11
  import type { SdkThemeRuntime } from '../rendering/themeRuntime';
12
+ import type { SdkOverrideOnlyRendering, SdkRenderingMode } from '../rendering/renderingMode';
12
13
  import type { BlockOverrideRegistrations } from '../rendering/overrides';
13
14
  import type { Metadata } from '../metadata/generatePageMetadata';
14
15
  import type { LoadContentResult } from '../rendering/helpers/loadContent';
@@ -30,6 +31,8 @@ export interface CatchAllContext {
30
31
  * visual theme/responsive infrastructure contract.
31
32
  */
32
33
  themeRuntime: SdkThemeRuntime;
34
+ /** Explicit rendering capabilities selected for this request. */
35
+ rendering: SdkRenderingMode;
33
36
  /** Search parameters from the URL (for filtering, pagination, etc.) */
34
37
  searchParams: DataLoaderSearchParams;
35
38
  }
@@ -138,7 +141,7 @@ type CatchAllThemeOptions = {
138
141
  * });
139
142
  * ```
140
143
  */
141
- export type CreateCatchAllPageOptions = {
144
+ type CreateCatchAllPageBaseOptions = {
142
145
  /**
143
146
  * Function that returns the Riverbank client.
144
147
  * Called fresh on each request to support different caching strategies.
@@ -186,7 +189,6 @@ export type CreateCatchAllPageOptions = {
186
189
  * Wrap client-heavy dynamic imports with defineLazyBlockOverride(); raw
187
190
  * promise-returning functions are not lazy override registrations.
188
191
  */
189
- blockOverrides?: BlockOverrideRegistrations;
190
192
  /**
191
193
  * Server-only host data loaders for custom blocks.
192
194
  *
@@ -286,12 +288,6 @@ export type CreateCatchAllPageOptions = {
286
288
  wrapper?: (props: {
287
289
  children: ReactNode;
288
290
  }) => ReactNode | Promise<ReactNode>;
289
- /**
290
- * Controls the runtime wrapper around rendered page content.
291
- *
292
- * @default { kind: 'responsive-only' }
293
- */
294
- themeRuntime?: SdkThemeRuntime;
295
291
  /**
296
292
  * Enable portal authentication for the reserved `/portal` customer route.
297
293
  *
@@ -315,7 +311,25 @@ export type CreateCatchAllPageOptions = {
315
311
  * ```
316
312
  */
317
313
  enablePortal?: boolean;
318
- } & CatchAllThemeOptions;
314
+ };
315
+ type ThemedCatchAllOptions = CatchAllThemeOptions & {
316
+ /** Default theme-backed rendering behavior. */
317
+ rendering?: never;
318
+ blockOverrides?: BlockOverrideRegistrations;
319
+ /** @default { kind: 'responsive-only' } */
320
+ themeRuntime?: SdkThemeRuntime;
321
+ };
322
+ type OverrideOnlyCatchAllOptions = {
323
+ /** Render exclusively through host-provided block overrides. */
324
+ rendering: SdkOverrideOnlyRendering;
325
+ blockOverrides: BlockOverrideRegistrations;
326
+ themeRuntime?: never;
327
+ theme?: never;
328
+ themes?: never;
329
+ themeSwitch?: never;
330
+ getTheme?: never;
331
+ };
332
+ export type CreateCatchAllPageOptions = CreateCatchAllPageBaseOptions & (ThemedCatchAllOptions | OverrideOnlyCatchAllOptions);
319
333
  /**
320
334
  * Next.js page props for catch-all routes.
321
335
  *
@@ -1,14 +1,13 @@
1
- import type { ComponentType, ReactNode } from "react";
2
- import type { CatchAllContext } from "../next/types";
3
- import type { SdkPreviewModeProps } from "./client";
4
- type PreviewModeClientProps = Omit<SdkPreviewModeProps, "blockOverrides">;
1
+ import type { ComponentType, ReactNode } from 'react';
2
+ import type { CatchAllContext } from '../next/types';
3
+ import type { SdkPreviewModePropsWithoutBlockOverrides } from './client';
5
4
  export type CreatePreviewModeBeforeRenderOptions = {
6
5
  getClient: () => {
7
6
  getBaseUrl(): string;
8
7
  };
9
8
  siteId: string;
10
9
  siteSlug: string;
11
- PreviewModeClient: ComponentType<PreviewModeClientProps>;
10
+ PreviewModeClient: ComponentType<SdkPreviewModePropsWithoutBlockOverrides>;
12
11
  /**
13
12
  * When omitted, defaults to `process.env.RIVERBANK_PREVIEW_MODE === 'true'`.
14
13
  * This mirrors the scaffolds and makes it easy to keep preview wiring committed
@@ -34,4 +33,3 @@ export type CreatePreviewModeBeforeRenderOptions = {
34
33
  * (e.g. `SdkPreviewModeClient`) to avoid serializing functions over the RSC boundary.
35
34
  */
36
35
  export declare function createPreviewModeBeforeRender(options: CreatePreviewModeBeforeRenderOptions): (context: CatchAllContext) => Promise<ReactNode | null>;
37
- export {};
@@ -1,6 +1,6 @@
1
- import React, { type ReactNode } from "react";
2
- import type { PreviewShellLayoutProps, PreviewShellProps, SdkPreviewModeProps } from "../../../../preview-next/src/client/index";
3
- export type { SdkPreviewModeContent, SdkPreviewModeProps, PreviewThemeRuntime, PreviewThemeResponsiveMode, PreviewShellProps, PreviewShellLayoutProps, } from '../../../../preview-next/src/client/index';
1
+ import React, { type ReactNode } from 'react';
2
+ import type { PreviewShellLayoutProps, PreviewShellProps, SdkPreviewModeProps } from '../../../../preview-next/src/client/index';
3
+ export type { SdkPreviewModeContent, SdkPreviewModeProps, SdkPreviewModePropsWithoutBlockOverrides, PreviewThemeRuntime, PreviewThemeResponsiveMode, PreviewShellProps, PreviewShellLayoutProps, } from '../../../../preview-next/src/client/index';
4
4
  type PreviewQueryProviderProps = Readonly<{
5
5
  children: ReactNode;
6
6
  }>;
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import type { PreviewShellLayoutProps, PreviewShellProps, SdkPreviewModeProps } from '../../../../preview-next/src/client/sdk-runtime';
3
3
  export { PreviewLayoutProvider, usePreviewLayout, useOptionalPreviewLayout, } from '../../../../preview-next/src/client/layout/PreviewLayoutContext';
4
4
  export { PreviewQueryProvider, createPreviewQueryClient, } from '../../../../preview-next/src/client/preview/PreviewQueryProvider';
5
- export type { PreviewShellProps, PreviewShellLayoutProps, SdkPreviewModeContent, SdkPreviewModeProps, } from '../../../../preview-next/src/client/sdk-runtime';
5
+ export type { PreviewShellProps, PreviewShellLayoutProps, SdkPreviewModeContent, SdkPreviewModeProps, SdkPreviewModePropsWithoutBlockOverrides, } from '../../../../preview-next/src/client/sdk-runtime';
6
6
  export declare function SdkPreviewMode(props: SdkPreviewModeProps): React.JSX.Element;
7
7
  export declare function PreviewShell(props: PreviewShellProps): React.JSX.Element;
8
8
  export declare function PreviewShellLayout(props: PreviewShellLayoutProps): React.JSX.Element;
@@ -1,24 +1,11 @@
1
1
  import type { AddressedLocationValue, BusinessAddress } from '../../../core/src/index';
2
2
  import type { APIEndpoints, SdkRuntimePageSurfaceSubject as ApiSdkRuntimePageSurfaceSubject, SiteBySlugResponse as ApiSiteBySlugResponse, SiteBookingOfferingPresetSummary as ApiSiteBookingOfferingPresetSummary } from '../../../api/src/index';
3
- import type { Media, MediaAssetIndexItem, SiteFooterContent, SiteHeaderContent } from '../contracts';
3
+ import type { MediaAssetIndexItem, SiteFooterContent, SiteHeaderContent } from '../contracts';
4
4
  import type { CompiledBoundaryRuntime } from '../../../theme-core/src/site-styles/index';
5
5
  import type { BlockFieldConfig as SdkBlockFieldConfig, BlockFieldOptionsMap as SdkBlockFieldOptionsMap, ContentConfig as SdkContentConfig, ContainerOptionsConfig as SdkContainerOptionsConfig, FieldSelectOption as SdkFieldSelectOption, SdkCustomBlock, SdkThemeConfig, SdkThemePalette, SectionBackground as SdkSectionBackground, SectionOptionsConfig as SdkSectionOptionsConfig, SiteStyleConfig as SdkSiteStyleConfig } from '../config/types';
6
- export type PublicTeamMemberSummary = {
7
- id: string;
8
- name: string;
9
- roleLabel: string | null;
10
- summary: string | null;
11
- profilePath: string | null;
12
- };
13
- export type PublicTeamMemberPhoto = (Omit<Media, 'type'> & {
14
- type: 'image';
15
- }) | null;
16
- export type PublicTeamMemberBlockItem = PublicTeamMemberSummary & {
17
- _type: 'teamMember';
18
- role: string | null;
19
- bio: string | null;
20
- photo: PublicTeamMemberPhoto;
21
- };
6
+ import type { PublicTeamMemberBlockItem } from './teamMemberContracts';
7
+ export type { PublicTeamMemberBlockItem, PublicTeamMemberPhoto, PublicTeamMemberSummary, } from './teamMemberContracts';
8
+ export type { PublicWholeSeriesOfferingResponse } from './wholeSeriesContracts';
22
9
  export type RuntimeSiteSdkConfig = {
23
10
  theme?: SdkThemeConfig;
24
11
  customBlocks?: SdkCustomBlock[];
@@ -900,4 +887,3 @@ export type PublicSdkContainerOptionsConfig = SdkContainerOptionsConfig;
900
887
  export type PublicSdkBlockFieldConfig = SdkBlockFieldConfig;
901
888
  export type PublicSdkBlockFieldOptionsMap = SdkBlockFieldOptionsMap;
902
889
  export type PublicSdkFieldSelectOption = SdkFieldSelectOption;
903
- export {};
@@ -0,0 +1,17 @@
1
+ import type { Media } from '../contracts';
2
+ export type PublicTeamMemberSummary = {
3
+ id: string;
4
+ name: string;
5
+ roleLabel: string | null;
6
+ summary: string | null;
7
+ profilePath: string | null;
8
+ };
9
+ export type PublicTeamMemberPhoto = (Omit<Media, 'type'> & {
10
+ type: 'image';
11
+ }) | null;
12
+ export type PublicTeamMemberBlockItem = PublicTeamMemberSummary & {
13
+ _type: 'teamMember';
14
+ role: string | null;
15
+ bio: string | null;
16
+ photo: PublicTeamMemberPhoto;
17
+ };
@@ -0,0 +1,2 @@
1
+ import type { APIEndpoints } from '../../../api/src/index';
2
+ export type PublicWholeSeriesOfferingResponse = NonNullable<APIEndpoints['getPublicWholeSeriesOffering']['response']>;
@@ -3,8 +3,18 @@ import type { EntrySubrouteContextData, MediaAssetIndexItem, OccurrenceContextDa
3
3
  import type { SdkCustomBlock } from '../config/types';
4
4
  import type { BlockOverrides } from './overrides';
5
5
  import type { SiteBookingOfferingPresetSummary } from '../public-api/contracts';
6
+ import { type BlocksImageResolveContextInput, type BlocksMediaAssetIndexItem } from './mediaAssets';
6
7
  import type { EventPageSurfaceSubjectWire } from '../../../core/src/index';
7
8
  export type ComponentRegistry = Record<string, React.ElementType>;
9
+ export type MissingBlockOverrideError = Error & Readonly<{
10
+ code: 'missing_block_override';
11
+ blockKind: string;
12
+ }>;
13
+ type MissingBlockOverrideErrorConstructor = Readonly<{
14
+ new (blockKind: string): MissingBlockOverrideError;
15
+ prototype: MissingBlockOverrideError;
16
+ }>;
17
+ export declare const MissingBlockOverrideError: MissingBlockOverrideErrorConstructor;
8
18
  export type PageRendererDataContext = {
9
19
  siteId?: string;
10
20
  pageId?: string;
@@ -26,12 +36,16 @@ export type PageRendererDataContext = {
26
36
  apiBaseUrl?: string;
27
37
  portalToken?: string | null;
28
38
  previewToken?: string | null;
39
+ eventRegistrationOverlayEnabled?: boolean;
40
+ };
41
+ export type BlocksPageRendererDataContext = Omit<PageRendererDataContext, 'mediaAssets' | 'imageResolveContext'> & {
42
+ mediaAssets?: readonly BlocksMediaAssetIndexItem[];
43
+ imageResolveContext?: BlocksImageResolveContextInput;
29
44
  };
30
45
  export type SdkConfigForRenderer = {
31
46
  customBlocks?: SdkCustomBlock[];
32
47
  };
33
- export type PageRendererProps = {
34
- theme: Theme;
48
+ type PageRendererCommonProps = {
35
49
  page: PageOutline | null;
36
50
  runtimeBoundaries?: readonly PageRuntimeBoundary[];
37
51
  usePlaceholders?: boolean;
@@ -39,9 +53,24 @@ export type PageRendererProps = {
39
53
  routeMap?: RouteMap;
40
54
  wrapBlock?: (blockId: string, rendered: React.ReactNode) => React.ReactNode;
41
55
  registry?: ComponentRegistry;
42
- themeTokens?: ThemeTokens;
43
56
  blockOverrides?: BlockOverrides;
44
57
  sdkConfig?: SdkConfigForRenderer | null;
45
58
  customBlocks?: SdkCustomBlock[];
46
59
  };
60
+ type ThemedPageRendererProps = PageRendererCommonProps & {
61
+ rendering?: never;
62
+ theme: Theme;
63
+ themeTokens?: ThemeTokens;
64
+ };
65
+ type OverrideOnlyPageRendererProps = PageRendererCommonProps & {
66
+ rendering: {
67
+ kind: 'overrides-only';
68
+ };
69
+ theme?: never;
70
+ themeTokens?: never;
71
+ blockOverrides: BlockOverrides;
72
+ };
73
+ export type PageRendererProps = ThemedPageRendererProps | OverrideOnlyPageRendererProps;
74
+ export declare function toBlocksPageRendererDataContext(dataContext: PageRendererDataContext): BlocksPageRendererDataContext;
47
75
  export declare function PageRenderer(props: PageRendererProps): React.ReactElement;
76
+ export {};
@@ -11,11 +11,10 @@ import type { RiverbankClient } from '../../client/types';
11
11
  import type { BlockKind } from '../../types';
12
12
  import type { BlockOverrideComponent } from '../overrides';
13
13
  export type { BlockOverrideComponent } from '../overrides';
14
- export type BlockProps = {
14
+ type BlockCommonProps = {
15
15
  blockKind: BlockKind;
16
16
  blockId?: string | null;
17
17
  content: Record<string, unknown>;
18
- theme: Theme;
19
18
  siteId?: string;
20
19
  /**
21
20
  * Supabase storage URL for direct image access in SSR output and client
@@ -63,6 +62,18 @@ export type BlockProps = {
63
62
  */
64
63
  override?: BlockOverrideComponent;
65
64
  };
65
+ type ThemedBlockProps = BlockCommonProps & {
66
+ rendering?: never;
67
+ theme: Theme;
68
+ };
69
+ type OverrideOnlyBlockProps = BlockCommonProps & {
70
+ rendering: {
71
+ kind: 'overrides-only';
72
+ };
73
+ theme?: never;
74
+ override: BlockOverrideComponent;
75
+ };
76
+ export type BlockProps = ThemedBlockProps | OverrideOnlyBlockProps;
66
77
  export type BlockHydrationBootstrapConfig = {
67
78
  siteId?: string;
68
79
  supabaseUrl?: string;