@riverbankcms/sdk 0.140.0 → 0.142.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 (145) hide show
  1. package/dist/{PreviewEditorSidebar-CUyTzd5z.mjs → PreviewEditorSidebar-Dk6Dt11f.mjs} +24 -15
  2. package/dist/{PreviewEditorUI-Agkw4v5i.mjs → PreviewEditorUI-D6EQTsCA.mjs} +3 -3
  3. package/dist/{PreviewQueryProvider-CN0ewic5.mjs → PreviewQueryProvider-CC-EPkyQ.mjs} +1 -1
  4. package/dist/{SdkPreviewModeRuntime-DdbeAdS8.mjs → SdkPreviewModeRuntime-DH1n4ytY.mjs} +85 -54
  5. package/dist/{SiteChromeCustomizeContext-CqGOz-Kv.mjs → SiteChromeCustomizeContext-DunIzY0K.mjs} +797 -216
  6. package/dist/_dts/api/src/billing.d.ts +6 -1
  7. package/dist/_dts/api/src/bookingConfig.d.ts +1 -1
  8. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +2 -2
  9. package/dist/_dts/api/src/contentRuntime.d.ts +12 -31
  10. package/dist/_dts/api/src/domainConnection.d.ts +4 -0
  11. package/dist/_dts/api/src/endpoints.d.ts +0 -27
  12. package/dist/_dts/api/src/footerCompositionContracts.d.ts +25 -0
  13. package/dist/_dts/api/src/index.d.ts +2 -2
  14. package/dist/_dts/api/src/launchReadiness.d.ts +1 -0
  15. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +2 -1
  16. package/dist/_dts/api/src/publicBookingService.d.ts +1 -0
  17. package/dist/_dts/api/src/sdkConfig/layout.d.ts +13 -0
  18. package/dist/_dts/api/src/sdkContracts.d.ts +3 -8
  19. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -26
  20. package/dist/_dts/api/src/siteOnboarding.d.ts +7 -0
  21. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -31
  22. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +6 -1
  23. package/dist/_dts/billing/src/site-arrangements.d.ts +18 -5
  24. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -0
  25. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -0
  26. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +2 -0
  27. package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +122 -0
  28. package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +2 -1
  29. package/dist/_dts/blocks/src/system/blocks/events/shared/eventSelection.d.ts +11 -0
  30. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +56 -0
  31. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +8 -0
  32. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
  33. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -47
  34. package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +5 -0
  35. package/dist/_dts/blocks/src/system/data/utils.d.ts +1 -1
  36. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +27 -1
  37. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +12 -180
  38. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +6 -90
  39. package/dist/_dts/blocks/src/system/runtime/hooks/useEventFilters.d.ts +2 -1
  40. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +5 -1
  41. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +4 -0
  42. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.state.d.ts +5 -0
  43. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.d.ts +3 -0
  44. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.state.d.ts +10 -3
  45. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventCheckoutHandoffRestore.d.ts +9 -0
  46. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +4 -5
  47. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useSettledCommerceView.d.ts +37 -0
  48. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +4 -3
  49. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +3 -0
  50. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +11 -101
  51. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +63 -2
  52. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/listOptions.d.ts +2 -0
  53. package/dist/_dts/blocks/src/system/transforms/registry/eventCalendar.d.ts +12 -0
  54. package/dist/_dts/commerce/src/purchase/bookingInstalmentSchedule.d.ts +4 -0
  55. package/dist/_dts/commerce/src/purchase/stripeCommissionMetadata.d.ts +1 -2
  56. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +3102 -3122
  57. package/dist/_dts/editor-blocks/src/block-editor/ColourFieldOptionsProvider.d.ts +7 -0
  58. package/dist/_dts/editor-blocks/src/block-editor/colourFieldVisibility.d.ts +7 -0
  59. package/dist/_dts/editor-blocks/src/block-editor/preparedManifest.d.ts +2 -0
  60. package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
  61. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +27 -1
  62. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -2
  63. package/dist/_dts/preview-next/src/client/preview/PreviewFooterEditorPanel.d.ts +3 -6
  64. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +2 -2
  65. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +2 -2
  66. package/dist/_dts/preview-next/src/client/preview/footerInspection.d.ts +16 -0
  67. package/dist/_dts/preview-next/src/client/preview/sdkConfig.d.ts +6 -0
  68. package/dist/_dts/sdk/src/config/types.d.ts +2 -18
  69. package/dist/_dts/sdk/src/config/validation.d.ts +6 -0
  70. package/dist/_dts/sdk/src/public-api/contracts.d.ts +4 -1
  71. package/dist/_dts/sdk/src/version.d.ts +1 -1
  72. package/dist/_dts/theme-core/src/ThemeFontLoader.d.ts +17 -1
  73. package/dist/_dts/theme-core/src/buttons/affordanceSuppression.d.ts +17 -0
  74. package/dist/_dts/theme-core/src/buttons/buttonColourContract.d.ts +1 -1
  75. package/dist/_dts/theme-core/src/buttons/classNames.d.ts +16 -0
  76. package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +0 -6
  77. package/dist/_dts/theme-core/src/buttons/resolvedButtonCss.d.ts +4 -4
  78. package/dist/_dts/theme-core/src/footer/mode.d.ts +10 -1
  79. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  80. package/dist/_dts/theme-core/src/hosted-booking-appearance.d.ts +54 -12
  81. package/dist/_dts/theme-core/src/index.d.ts +1 -1
  82. package/dist/_dts/theme-core/src/schema.d.ts +1 -7
  83. package/dist/_dts/theme-core/src/site-styles/effectivePageDesign.d.ts +32 -0
  84. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
  85. package/dist/client/{BookingConsentAgreement-CuKa82V4.mjs → BookingConsentAgreement-CnJeq3_r.mjs} +2 -2
  86. package/dist/client/{DiscountCodeDisclosure-BbYieKWB.mjs → DiscountCodeDisclosure-BINEO6J9.mjs} +1 -1
  87. package/dist/client/{EventCombined.client-LTfR1Aby.mjs → EventCombined.client-srxNQ6sZ.mjs} +11 -15
  88. package/dist/client/{EventListing.client-DUHpYSuo.mjs → EventListing.client-DbyVyGkX.mjs} +4 -17
  89. package/dist/client/{LeafletStaticMap-CHRupL6m.mjs → LeafletStaticMap-B-wpijzL.mjs} +1 -1
  90. package/dist/client/{accordion-6HiIFxNL.mjs → accordion-B-iUXU7n.mjs} +1 -1
  91. package/dist/client/{bookingForm-Dlmid43H.mjs → bookingForm-BXYPke5q.mjs} +5 -5
  92. package/dist/client/bookings.mjs +194 -102
  93. package/dist/client/{carousel-DmkZRRq_.mjs → carousel-Cr4aj63H.mjs} +1 -1
  94. package/dist/client/{cart-CIC24330.mjs → cart-DibP9WWa.mjs} +3 -3
  95. package/dist/client/{checkout-D1Zw9imo.mjs → checkout-CrSBVnL8.mjs} +3 -3
  96. package/dist/client/client.mjs +643 -192
  97. package/dist/client/{context-Cy1OayHx.mjs → context-Ces-AgdR.mjs} +1 -1
  98. package/dist/client/{dates-aDcfoLHr.mjs → dates-BXyNeNhB.mjs} +2 -2
  99. package/dist/client/{eventCalendar-FQxMPAjf.mjs → eventCalendar-HwpPeqrH.mjs} +11 -7
  100. package/dist/client/{eventCombined-Dr3ac6Hb.mjs → eventCombined-BpFUkuEI.mjs} +3 -3
  101. package/dist/client/{eventDetails-D-AzUHFQ.mjs → eventDetails-DK_agiWy.mjs} +4 -4
  102. package/dist/client/{eventListing-B3XxBf3i.mjs → eventListing-DhzHqP1c.mjs} +3 -3
  103. package/dist/client/{eventRegistration-I6EaokFD.mjs → eventRegistration-BdQ_Dn2d.mjs} +124 -32
  104. package/dist/client/{form-BbWckVWY.mjs → form-B1frcuzy.mjs} +2 -2
  105. package/dist/client/{headerSection-C9qU4Y7x.mjs → headerSection-CT5z460s.mjs} +2 -2
  106. package/dist/client/hooks.mjs +274 -45
  107. package/dist/client/{locationMap-CLCShvlG.mjs → locationMap-CIQXB9i2.mjs} +2 -2
  108. package/dist/client/{newsletterForm-Briukxzi.mjs → newsletterForm-BYNYZSes.mjs} +23 -10
  109. package/dist/client/{pricing-Copadu-2.mjs → pricing-CbTlAsmt.mjs} +1 -1
  110. package/dist/client/{productDetail-oujlRd-r.mjs → productDetail-CR7Z3yjS.mjs} +3 -3
  111. package/dist/client/{productList-BRiIRUcd.mjs → productList-DXj00vzR.mjs} +3 -3
  112. package/dist/client/{propsDecoder-CB2KS_ko.mjs → propsDecoder-DiLiBdek.mjs} +57 -16
  113. package/dist/client/rendering/client.mjs +476 -132
  114. package/dist/client/rendering/islands.mjs +17 -17
  115. package/dist/client/rendering.mjs +686 -195
  116. package/dist/client/{scrollToBlock-B1IS1_ua.mjs → scrollToBlock-CrcbBf0h.mjs} +28 -11
  117. package/dist/client/{shop-Vn6yNFED.mjs → shop-DgqiB_1b.mjs} +6 -6
  118. package/dist/client/{shop-commerce-BVTqipYp.mjs → shop-commerce-D_J781in.mjs} +5 -5
  119. package/dist/client/{shop-commerce-store-BVnJVy7v.mjs → shop-commerce-store-PGUbDwqe.mjs} +1 -1
  120. package/dist/client/{shopShared-COIeK77T.mjs → shopShared-C_Bb2zwG.mjs} +3 -3
  121. package/dist/client/{useEventFilters-DzIUcS9n.mjs → useEventFilters-CM17Xpr1.mjs} +17 -11
  122. package/dist/preview-next/before-render.mjs +0 -37
  123. package/dist/preview-next/client/runtime.mjs +4 -4
  124. package/dist/preview-next/editor-chrome.css +4 -8
  125. package/dist/preview-next/keepAlive.mjs +0 -37
  126. package/dist/preview-next/middleware.mjs +0 -37
  127. package/dist/{previewAuthStore-Gjb6r6vz.mjs → previewAuthStore-oVttoRDO.mjs} +0 -37
  128. package/dist/{sdk-runtime-CnCLvZRv.mjs → sdk-runtime-DhmuRhIX.mjs} +2 -2
  129. package/dist/{separator-DKDRJ1oH.mjs → separator-C3hlg9LH.mjs} +1 -1
  130. package/dist/server/components.mjs +452 -111
  131. package/dist/server/config-validation.mjs +263 -40
  132. package/dist/server/config.mjs +263 -40
  133. package/dist/server/data.mjs +274 -45
  134. package/dist/server/index.mjs +1 -38
  135. package/dist/server/next.mjs +427 -119
  136. package/dist/server/page-converter.mjs +208 -33
  137. package/dist/server/prebuild.mjs +1 -1
  138. package/dist/server/rendering/server.mjs +467 -119
  139. package/dist/server/rendering.mjs +467 -117
  140. package/dist/server/routing.mjs +301 -50
  141. package/dist/server/server.mjs +275 -83
  142. package/dist/server/theme-bridge.mjs +57 -23
  143. package/dist/server/theme.mjs +11 -9
  144. package/dist/styles/index.css +28 -2
  145. package/package.json +1 -1
@@ -31,6 +31,8 @@ export type BillingCheckoutContinuation = {
31
31
  siteId: string;
32
32
  };
33
33
  export type BillingCheckoutRequest = {
34
+ /** Stable for one customer click so transport retries cannot create another session. */
35
+ attemptId: string;
34
36
  /** Plan ID (e.g., 'solo') */
35
37
  planId: BillingPlanId;
36
38
  /** Billing interval */
@@ -43,6 +45,9 @@ export type BillingCheckoutResponse = {
43
45
  checkoutUrl: string;
44
46
  };
45
47
  export type SiteBillingCheckoutResponse = BillingCheckoutResponse;
48
+ export type SiteBillingCheckoutRequest = Readonly<{
49
+ attemptId: string;
50
+ }>;
46
51
  export type BillingSummaryResponse = {
47
52
  status: string;
48
53
  plan: {
@@ -108,6 +113,6 @@ export declare function changePlan(apiClient: ApiClient, { attemptId, planId, in
108
113
  options?: RequestInit;
109
114
  }): Promise<ChangePlanResponse>;
110
115
  export declare function createBillingPortalSession(apiClient: ApiClient, options?: RequestInit): Promise<BillingPortalSessionResponse>;
111
- export declare function billingCheckout(apiClient: ApiClient, { planId, interval, continuation, options, }: BillingCheckoutRequest & {
116
+ export declare function billingCheckout(apiClient: ApiClient, { attemptId, planId, interval, continuation, options, }: BillingCheckoutRequest & {
112
117
  options?: RequestInit;
113
118
  }): Promise<BillingCheckoutResponse>;
@@ -342,7 +342,7 @@ export type BookingSettings = {
342
342
  currency: string;
343
343
  defaultVenueId: string | null;
344
344
  calendarDisplay: 'list' | 'calendar';
345
- /** If enabled, refunds issue site credit rather than cash/Stripe refunds. */
345
+ /** If enabled, operators may issue refunds as site credit. */
346
346
  refundsIssueCredit: boolean;
347
347
  remindersEnabled: boolean;
348
348
  appointmentReminderHours: number;
@@ -2,7 +2,7 @@ import type { AppointmentBookingQuestionsTaskDetail, CustomerEventSeriesRegistra
2
2
  import type { APIEndpoint } from './apiEndpointTypes';
3
3
  import type { DeleteAccountRequest, DeleteAccountResponse } from './accessAdmin';
4
4
  import type { AiPlaygroundApplyRequest, AiPlaygroundApplyResponse } from './aiPlayground';
5
- import type { BillingCheckoutRequest, BillingCheckoutResponse, BillingStatusResponse, BillingSummaryResponse, SiteBillingCheckoutResponse, SiteBillingCostResponse } from './billing';
5
+ import type { BillingCheckoutRequest, BillingCheckoutResponse, BillingStatusResponse, BillingSummaryResponse, SiteBillingCheckoutResponse, SiteBillingCheckoutRequest, SiteBillingCostResponse } from './billing';
6
6
  import type { CreateSiteFontUploadUrlRequest, CreateSiteFontUploadUrlResponse, DeleteSiteFontFileRequest, DeleteSiteFontFileResponse, ExportBackupRequest, FontRecord, GetSiteFontResponse, ListPublicSiteFontsResponse, ListSiteFontsResponse, UpdateSiteFontRequest, UpdateSiteFontResponse, UploadSiteFontRequest, UploadSiteFontResponse } from './siteAssets';
7
7
  import type { AdminSiteBillingArrangementResponse, AdminResolveSiteBillingManualReviewRequest, AdminResolveSiteBillingManualReviewResponse, AdminScheduleBillingComponentEndRequest, AdminScheduleBillingComponentEndResponse, AdminUpdateSiteBillingArrangementRequest, AdminUpdateSiteBillingArrangementResponse, CancelFlexibleBalanceBookingDueToNonPaymentRequest, CancelShopOrderItemRequest, CancelShopOrderItemResponse, CancelShopOrderRequest, CancelShopOrderResponse, CreateShopOrderPaymentLinkResponse, CreateOrderShipmentRequest, CreateOrderShipmentResponse, EditShopOrderAddressRequest, FlexibleBalanceAdminActionResponse, PortalAppointmentWithDetails, RefundShopOrderResponse, ReopenFlexibleBalanceBookingAfterNonPaymentCancellationRequest, SendShopOrderPaymentReminderResponse, SettleShopOrderPaymentRequest, SettleShopOrderPaymentResponse, ShopOrderDigitalFulfillmentRequest, ShopOrderDigitalFulfillmentResponse } from './siteOperations';
8
8
  import type { PreviewRefreshRequest, PreviewRefreshResponse } from './preview-auth';
@@ -22,7 +22,7 @@ export type CommercePortalAPIEndpoints = {
22
22
  siteBillingCost: APIEndpoint<never, {
23
23
  siteId: string;
24
24
  }, SiteBillingCostResponse>;
25
- siteBillingCheckout: APIEndpoint<never, {
25
+ siteBillingCheckout: APIEndpoint<SiteBillingCheckoutRequest, {
26
26
  siteId: string;
27
27
  }, SiteBillingCheckoutResponse>;
28
28
  deleteAccount: APIEndpoint<DeleteAccountRequest, never, DeleteAccountResponse>;
@@ -339,6 +339,8 @@ export type SiteBySlugResponse = {
339
339
  mimeType: string;
340
340
  } | null;
341
341
  theme: Theme | null;
342
+ /** Hosted-only; website payload bytes stay unchanged. */
343
+ hostedBookingAppearance?: import('../../theme-core/src/index').HostedBookingAppearance;
342
344
  themeId?: string | null;
343
345
  selectionId?: string | null;
344
346
  selectionVersion?: number | null;
@@ -528,11 +530,10 @@ export type ListPublishedEntriesResponse<TContent = Record<string, unknown>> = {
528
530
  * Note: draft/published content can contain hydrated structures; treat as `unknown` at the API layer
529
531
  * unless/until we formalize the hydrated content schema.
530
532
  */
531
- export type SdkBlockContent = {
533
+ type SdkRuntimeBlockContent<TScope, TContentVersionId extends string | null> = TScope & {
532
534
  id: string;
533
535
  blockId: string;
534
- contentVersionId: string | null;
535
- pageId: string;
536
+ contentVersionId: TContentVersionId;
536
537
  kind: string;
537
538
  purpose: string;
538
539
  orderIndex: number;
@@ -543,43 +544,22 @@ export type SdkBlockContent = {
543
544
  publishedContentId: string | null;
544
545
  admission?: SdkBlockContentAdmission;
545
546
  };
546
- export type SdkEntrySlotBlockContent = {
547
- id: string;
548
- blockId: string;
549
- contentVersionId: string;
547
+ export type SdkBlockContent = SdkRuntimeBlockContent<{
548
+ pageId: string;
549
+ }, string | null>;
550
+ export type SdkEntrySlotBlockContent = SdkRuntimeBlockContent<{
550
551
  entrySlotId: string;
551
552
  identifier: string | null;
552
- kind: string;
553
- purpose: string;
554
- orderIndex: number;
555
- content: Record<string, unknown>;
556
- draftContent: unknown;
557
- publishedContent: unknown;
558
- draftContentId: string | null;
559
- publishedContentId: string | null;
560
- admission?: SdkBlockContentAdmission;
561
- };
553
+ }, string>;
562
554
  export type SdkEntrySlotContent = {
563
555
  entrySlotId: string;
564
556
  slotKey: string;
565
557
  blocks: SdkEntrySlotBlockContent[];
566
558
  };
567
- export type SdkSurfaceSlotBlockContent = {
568
- id: string;
569
- blockId: string;
570
- contentVersionId: string;
559
+ export type SdkSurfaceSlotBlockContent = SdkRuntimeBlockContent<{
571
560
  surfaceSlotId: string;
572
561
  identifier: string | null;
573
- kind: string;
574
- purpose: string;
575
- orderIndex: number;
576
- content: Record<string, unknown>;
577
- draftContent: unknown;
578
- publishedContent: unknown;
579
- draftContentId: string | null;
580
- publishedContentId: string | null;
581
- admission?: SdkBlockContentAdmission;
582
- };
562
+ }, string>;
583
563
  export type SdkSurfaceSlotContent = {
584
564
  surfaceSlotId: string;
585
565
  pageSurfaceId: string;
@@ -787,3 +767,4 @@ export type ContentDataResponse = {
787
767
  }>;
788
768
  }>;
789
769
  };
770
+ export {};
@@ -18,6 +18,10 @@ export type CustomDomainConnectionState = Readonly<{
18
18
  }> | Readonly<{
19
19
  status: 'dns_needs_attention';
20
20
  records: readonly DomainDnsInstruction[];
21
+ }> | Readonly<{
22
+ status: 'pending_https';
23
+ }> | Readonly<{
24
+ status: 'https_check_unavailable';
21
25
  }> | Readonly<{
22
26
  status: 'connected';
23
27
  }> | Readonly<{
@@ -471,20 +471,6 @@ export declare const API_ENDPOINTS: {
471
471
  readonly auth: "service";
472
472
  readonly responseKind: "json";
473
473
  };
474
- readonly sdkUpsertTheme: {
475
- readonly path: "/sdk/{siteId}/theme";
476
- readonly method: "POST";
477
- readonly auth: "service";
478
- readonly responseKind: "json";
479
- readonly errors: readonly ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"];
480
- };
481
- readonly sdkApplySiteStyleSelection: {
482
- readonly path: "/sdk/{siteId}/theme/style-selection/apply";
483
- readonly method: "POST";
484
- readonly auth: "service";
485
- readonly responseKind: "json";
486
- readonly errors: readonly ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"];
487
- };
488
474
  readonly sdkUpsertFooter: {
489
475
  readonly path: "/sdk/{siteId}/footer";
490
476
  readonly method: "POST";
@@ -673,13 +659,6 @@ export declare const API_ENDPOINTS: {
673
659
  readonly auth: "service";
674
660
  readonly responseKind: "json";
675
661
  };
676
- readonly sdkCatalogTheme: {
677
- readonly path: "/sdk/{siteId}/catalog/theme";
678
- readonly method: "GET";
679
- readonly errors: readonly ["server:internal_error"];
680
- readonly auth: "service";
681
- readonly responseKind: "json";
682
- };
683
662
  readonly sdkCatalogBlocks: {
684
663
  readonly path: "/sdk/{siteId}/catalog/blocks";
685
664
  readonly method: "GET";
@@ -740,12 +719,6 @@ export declare const API_ENDPOINTS: {
740
719
  readonly auth: "service";
741
720
  readonly responseKind: "json";
742
721
  };
743
- readonly sdkPullTheme: {
744
- readonly path: "/sdk/{siteId}/pull/theme";
745
- readonly method: "GET";
746
- readonly auth: "service";
747
- readonly responseKind: "json";
748
- };
749
722
  readonly sdkPullFooter: {
750
723
  readonly path: "/sdk/{siteId}/pull/footer";
751
724
  readonly method: "GET";
@@ -0,0 +1,25 @@
1
+ import type { FooterCompositionV1, MailingListProviderScope } from '../../core/src/index';
2
+ export type FooterCompositionSnapshot = Readonly<{
3
+ kind: 'ready';
4
+ composition: FooterCompositionV1;
5
+ revision: number;
6
+ }> | Readonly<{
7
+ kind: 'missing';
8
+ }> | Readonly<{
9
+ kind: 'invalid';
10
+ message: string;
11
+ }>;
12
+ export type FooterCompositionUpdateRequest = Readonly<{
13
+ composition: FooterCompositionV1;
14
+ baseRevision: number;
15
+ expectedMailingListProviderScope?: MailingListProviderScope;
16
+ }>;
17
+ export type FooterCompositionUpdateResponse = Readonly<{
18
+ kind: 'updated';
19
+ snapshot: Extract<FooterCompositionSnapshot, {
20
+ kind: 'ready';
21
+ }>;
22
+ }> | Readonly<{
23
+ kind: 'conflict';
24
+ authoritative: FooterCompositionSnapshot;
25
+ }>;
@@ -12,7 +12,7 @@ export { dashboardNavigationLinkSchema, sdkNavigationLinkInputSchema, externalLi
12
12
  export { isNavigationDropdownSentinel, normalizeNavigationAuthoringLinkForCommand, normalizeNavigationConfigItemForCommand, navigationApiItemToSdkLocalItem, navigationCommandItemToManagementInput, } from './navigation/boundaries';
13
13
  export type { NavigationAuthoringItemInput, NavigationAuthoringLinkInput, NavigationBoundaryPortalLinkPayload, NavigationCommandBoundaryItemInput, NavigationConfigItemInput, NavigationDropdownSentinel, NavigationLocalItemInput, NavigationReadItemInput, } from './navigation/boundaries';
14
14
  export { pushSdkConfigBodySchema, loaderFallbackScalarSchema, riverbankSiteConfigInputSchema, sdkCustomBlockInputSchema, sdkWorkflowConfigSchema, sdkWorkflowTriggerSchema, sdkWorkflowConfirmationSchema, sdkWorkflowsSchema, SDK_WORKFLOW_CONFIRMATION_BODY_MAX_LENGTH, SDK_WORKFLOW_CONFIRMATION_TITLE_MAX_LENGTH, SDK_WORKFLOW_CONTENT_TYPE_MAX_LENGTH, SDK_WORKFLOW_DESCRIPTION_MAX_LENGTH, SDK_WORKFLOW_ENDPOINT_MAX_LENGTH, SDK_WORKFLOW_ENDPOINT_PATTERN, SDK_WORKFLOW_ID_MAX_LENGTH, SDK_WORKFLOW_ID_PATTERN, SDK_WORKFLOW_MAX_COUNT, SDK_WORKFLOW_TITLE_MAX_LENGTH, SDK_WORKFLOW_TRIGGER_CONDITION_MAX_COUNT, SDK_WORKFLOW_TRIGGER_FIELD_MAX_LENGTH, SDK_WORKFLOW_TRIGGER_MAX_COUNT, fieldDefinitionInputSchema, } from './sdkConfig/contracts';
15
- export { formatIgnoredDocumentSyncSectionWarning } from './sdkContracts';
15
+ export { formatIgnoredDocumentSyncSectionWarning, type SdkSiteLayoutConfig } from './sdkContracts';
16
16
  export { normalizeSdkThemeWire, sdkThemeWireSchema, type SdkCanonicalTheme, type SdkThemeWire, type SdkThemeWireWithoutHeader, } from './sdkThemeWire';
17
17
  export { createIncrementalJsonAccumulator } from './incrementalJson';
18
18
  export type { ApplySiteStyleSelectionBody, SiteStyleHeaderSelectionChange, SiteStyleSelectionChange, SaveSiteChromeSelectionBody, SaveSiteChromeSelectionResponse, SiteThemeSelectionsPayload, ThemeWithoutHeader, } from './siteRuntimeEndpoints';
@@ -20,7 +20,7 @@ export { PUBLIC_EVENT_TICKET_SELECTION_CONTRACT_VERSION, type DiscountsAvailable
20
20
  export { parseMailchimpAudienceId, parseMailchimpConnectionId, type ListMailchimpAudiencesResponse, type MailchimpAudienceId, type MailchimpAudienceCompatibilityIssue, type MailchimpAudienceReferenceItem, type MailchimpConnectionId, type MailchimpIntegrationConnectionStatus, type MailchimpIntegrationReauthReason, type MailchimpOAuthReturnIntent, type StartMailchimpOAuthRequest, type StartMailchimpOAuthResponse, } from './mailchimpIntegration';
21
21
  export type { BrevoConnectionStatus, ConnectBrevoRequest, MailingListAuthoringContext, MailingListProviderCatalog, MailingListProviderHealth, MailingListSetupApplyResponse, MailingListSetupChangeRequest, MailingListSetupPreviewResponse, } from './mailingListIntegration';
22
22
  export type { GeneratedIconSetCardRequest, GeneratedIconSetGenerateRequest, GeneratedIconSetGenerateResponse, GeneratedIconSetListRequest, GeneratedIconSetListResponse, GeneratedIconLibraryAsset, GeneratedIconLibrarySet, GeneratedIconRenderAsset, GeneratedIconRenderAssetRef, GeneratedIconRenderAssetsRequest, GeneratedIconRenderAssetsResponse, SiteIconStyleGuidePayload, SiteIconStyleGuideResponse, SiteIconStyleStrokeRule, SiteIconStyleGuideUpdateRequest, } from './siteIcons';
23
- export { DEFAULT_LAUNCH_READINESS_INPUT, deriveLaunchReadiness, } from './launchReadiness';
23
+ export { DEFAULT_LAUNCH_READINESS_INPUT, deriveLaunchReadiness, deriveLaunchDomainRequirement, } from './launchReadiness';
24
24
  export { getDashboardBaseUrl, getDashboardUrl, getAbsoluteDashboardUrl, getCmsApiUrl, resolveApiBaseUrl, normalizeDashboardOrigin, deriveCmsApiUrlFromDashboardUrl, } from './url';
25
25
  export { API_ERROR_CODES, ApiEnvelopeError, extractApiEnvelopeErrorDetails, isApiErrorCode, unwrapResponse, } from './common/envelope';
26
26
  export { createAuthenticatedApiClient, createInternalAPIClient, createServerAPIClient, createBearerAPIClient, ApiRequestError, } from './request';
@@ -37,4 +37,5 @@ export declare const DEFAULT_LAUNCH_READINESS_INPUT: {
37
37
  };
38
38
  overrides: never[];
39
39
  };
40
+ export declare function deriveLaunchDomainRequirement(siteId: string | null | undefined, domainState: ApiTypes.LaunchCustomDomainPackState): ApiTypes.LaunchRequirement;
40
41
  export declare function deriveLaunchReadiness(input: DeriveLaunchReadinessInput): ApiTypes.LaunchReadiness;
@@ -5,7 +5,7 @@ export type DashboardDemoUiMode = (typeof dashboardDemoUiModeValues)[number];
5
5
  export declare function isDemoDashboardUiRestricted(mode: DashboardDemoUiMode): boolean;
6
6
  export type DashboardSiteNavSurfaceId = 'site.overview' | 'site.content' | 'site.footerBlocks' | 'site.navigation' | 'site.media' | 'site.bookings' | 'site.shop' | 'site.money' | 'site.newsletter' | 'site.performance' | 'site.settings';
7
7
  export type DashboardSiteNavGroupId = 'site.website';
8
- export type SiteNavFeatureFlag = 'analyticsVisible' | 'bookingsVisible' | 'footerBlocksVisible' | 'isSdkSite' | 'moneyVisible' | 'newsletterVisible' | 'shopVisible';
8
+ export type SiteNavFeatureFlag = 'analyticsVisible' | 'bookingsVisible' | 'footerBlocksVisible' | 'isSdkSite' | 'moneyVisible' | 'newsletterVisible' | 'shopVisible' | 'websiteEditingVisible';
9
9
  export type DashboardSiteNavDescriptor = Readonly<{
10
10
  id: DashboardSiteNavSurfaceId;
11
11
  label: string;
@@ -35,6 +35,7 @@ export type DashboardSiteNavPlanContext = Readonly<{
35
35
  moneyVisible?: boolean;
36
36
  newsletterVisible?: boolean;
37
37
  shopVisible?: boolean;
38
+ websiteEditingVisible?: boolean;
38
39
  demoUiMode?: DashboardDemoUiMode;
39
40
  }>;
40
41
  export declare const DASHBOARD_SITE_NAV_DESCRIPTORS: readonly DashboardSiteNavDescriptor[];
@@ -58,6 +58,7 @@ export type PublicBookingRefundPolicy = Readonly<{
58
58
  mode: EventBookingPolicyMode;
59
59
  /** Hours before the start that refunds close. Only meaningful when `mode` is `cutoff`. */
60
60
  cutoffHours: number;
61
+ method: "original_payment_method" | "site_credit";
61
62
  }>;
62
63
  export type PublicBookingCancellationPolicy = Readonly<{
63
64
  refunds: PublicBookingRefundPolicy;
@@ -0,0 +1,13 @@
1
+ import type { FooterMode } from '../../../theme-core/src/footer/mode';
2
+ /** SDK-owned footer implementation and source-controlled content seed. */
3
+ export interface SdkSiteLayoutConfig {
4
+ /** Riverbank footer surfaces used by the site; custom callbacks keep precedence. */
5
+ footerMode?: FooterMode;
6
+ /** Global footer blocks synced by push-config, with dashboard content editing. */
7
+ footerBlocks?: Array<{
8
+ /** Stable source identifier, not a CMS block UUID. */
9
+ id?: string;
10
+ kind: string;
11
+ content?: Record<string, unknown>;
12
+ }>;
13
+ }
@@ -1,3 +1,5 @@
1
+ import type { SdkSiteLayoutConfig } from './sdkConfig/layout';
2
+ export type { SdkSiteLayoutConfig } from './sdkConfig/layout';
1
3
  import type { BlockContentSource, BlockContentSourceKind, FieldDefinition, FieldDefinitionInput, SdkCustomBlock, SdkCustomBlockInput, Theme } from '../../blocks/src/index';
2
4
  import type { ContentTypeSchema } from '../../content-model/src/index';
3
5
  import type { EventPreset, FooterCompositionV1, RichTextDoc } from '../../core/src/index';
@@ -81,13 +83,6 @@ export interface SdkBlockFieldConfig {
81
83
  * Note: This mirrors BlockFieldOptionsMap from @riverbankcms/sdk/config for use in API responses.
82
84
  */
83
85
  export type SdkBlockFieldOptionsMap = Record<string, Record<string, SdkBlockFieldConfig>>;
84
- export interface SdkSiteLayoutConfig {
85
- footerBlocks?: Array<{
86
- id?: string;
87
- kind: string;
88
- content?: Record<string, unknown>;
89
- }>;
90
- }
91
86
  export interface SdkContentTypeTemplateConfig {
92
87
  blocks: unknown[];
93
88
  }
@@ -228,6 +223,7 @@ export declare function formatIgnoredDocumentSyncSectionWarning(section: Ignored
228
223
  export type SyncFooterBlocksResult = {
229
224
  updated: boolean;
230
225
  skipped: boolean;
226
+ reason?: 'unchanged' | 'preserved-dashboard-edit' | 'mode-only';
231
227
  };
232
228
  export type SdkConfigSyncResult = {
233
229
  success: boolean;
@@ -694,7 +690,6 @@ export interface SdkCapabilityCatalogLink {
694
690
  export interface SdkCapabilitiesResponse {
695
691
  apiVersion: string;
696
692
  catalogs: {
697
- theme: SdkCapabilityCatalogLink;
698
693
  blocks: SdkCapabilityCatalogLink;
699
694
  contentTypes: SdkCapabilityCatalogLink;
700
695
  };
@@ -1,4 +1,4 @@
1
- import type { FooterCompositionV1, MailingListProviderScope, PublicProfile, RectificationHistoryPropagationPlan, RectificationIdentityBoundary, RectificationIssueUrl, RectificationSurface } from '../../core/src/index';
1
+ import type { PublicProfile, RectificationHistoryPropagationPlan, RectificationIdentityBoundary, RectificationIssueUrl, RectificationSurface } from '../../core/src/index';
2
2
  import type { CamelizeKeys, DbRow, DbJson } from '../../db/src/index';
3
3
  import type { APIEndpoint } from './apiEndpointTypes';
4
4
  import type { BillingAPIEndpoints } from './billingEndpointTypes';
@@ -22,36 +22,14 @@ import type { GeneratedIconSetGenerateRequest, GeneratedIconSetGenerateResponse,
22
22
  import type { AiBrandGuidelinesGenerateRequest, AiBrandGuidelinesGenerateResponse, AiBrandGuidelinesGenerationContextResponse, SiteAiBrandGuidelinesPayload, SiteAiBrandGuidelinesResponse, SiteAiProfilePayload, SiteAiProfileResponse, SiteGenerationIntakePayload, SiteGenerationIntakeResponse } from './siteOnboarding';
23
23
  import type { SitePrivacySettingsPayload, SitePrivacySettingsResponse } from './privacyPolicy';
24
24
  import type { MaintenanceSettingsPayload, MaintenanceSettingsResponse, SiteBusinessAddressPayload, SiteBusinessAddressResponse, SiteFooterBlocksEditorResponse, SiteGeneralSettingsPayload, SiteGeneralSettingsResponse, SiteLayoutSettingsPayload, SiteLayoutSettingsResponse, UpdateSiteDeploymentModePayload, UpdateSiteDeploymentModeResponse, UpdateSiteFooterBlocksPayload, UpdateSiteFooterBlocksResponse } from './siteSettings';
25
+ import type { FooterCompositionSnapshot, FooterCompositionUpdateRequest, FooterCompositionUpdateResponse } from './footerCompositionContracts';
26
+ export type { FooterCompositionSnapshot, FooterCompositionUpdateRequest, FooterCompositionUpdateResponse, } from './footerCompositionContracts';
25
27
  /**
26
28
  * Site-management endpoints collect dashboard/admin/auth/content-management API shapes
27
29
  * that still belong to the aggregate contract layer but no longer need to live inline in
28
30
  * `types.ts`.
29
31
  */
30
32
  type Site = CamelizeKeys<DbRow<'sites'>>;
31
- export type FooterCompositionSnapshot = Readonly<{
32
- kind: 'ready';
33
- composition: FooterCompositionV1;
34
- revision: number;
35
- }> | Readonly<{
36
- kind: 'missing';
37
- }> | Readonly<{
38
- kind: 'invalid';
39
- message: string;
40
- }>;
41
- export type FooterCompositionUpdateRequest = Readonly<{
42
- composition: FooterCompositionV1;
43
- baseRevision: number;
44
- expectedMailingListProviderScope?: MailingListProviderScope;
45
- }>;
46
- export type FooterCompositionUpdateResponse = Readonly<{
47
- kind: 'updated';
48
- snapshot: Extract<FooterCompositionSnapshot, {
49
- kind: 'ready';
50
- }>;
51
- }> | Readonly<{
52
- kind: 'conflict';
53
- authoritative: FooterCompositionSnapshot;
54
- }>;
55
33
  export type PublicProfileSnapshot = Readonly<{
56
34
  kind: 'ready';
57
35
  profile: PublicProfile;
@@ -1072,4 +1050,3 @@ export type SiteManagementAPIEndpoints = BillingAPIEndpoints & {
1072
1050
  activeOnly?: string;
1073
1051
  }, BookingSessionListPassesResponse>;
1074
1052
  };
1075
- export {};
@@ -129,6 +129,9 @@ export type LaunchRequirementAction = {
129
129
  label: string;
130
130
  };
131
131
  export type LaunchRequirementEvidence = {
132
+ kind: 'domain_connection';
133
+ domainIds: readonly string[];
134
+ } | {
132
135
  kind: 'derived';
133
136
  } | {
134
137
  kind: 'acknowledged';
@@ -186,6 +189,10 @@ export type LaunchCoursesPackState = {
186
189
  };
187
190
  export type LaunchCustomDomainPackState = {
188
191
  kind: 'connected';
192
+ domainIds: readonly string[];
193
+ } | {
194
+ kind: 'pending_verification' | 'partially_connected' | 'check_unavailable';
195
+ domainIds: readonly string[];
189
196
  } | {
190
197
  kind: 'pending_setup';
191
198
  };
@@ -1,4 +1,3 @@
1
- import type { SiteCommandOf } from '@riverbankcms/site-commands';
2
1
  import type { AppearancePresetId } from '../../theme-core/src/site-styles/index';
3
2
  import type { APIEndpoint } from './apiEndpointTypes';
4
3
  import type { AdminCreateSiteRequest, AdminCreateSiteResponse, AdminDeletePriceOverrideRequest, AdminDeletePriceOverrideResponse, AdminDeleteSiteResponse, AdminGetPriceOverrideQuery, AdminGetPriceOverrideResponse, AdminUpsertPriceOverrideRequest, AdminUpsertPriceOverrideResponse } from './accessAdmin';
@@ -8,9 +7,7 @@ import type { CheckRedirectQuery, CheckRedirectResponse, CreateRedirectRuleReque
8
7
  import type { CreateManagementKeyRequest, CreateManagementKeyResponse, CreateSiteApiKeyRequest, CreateSiteApiKeyResponse, CreateSitePreviewKeyRequest, CreateSitePreviewKeyResponse, CreateWebhookRequest, CreateWebhookResponse, DeleteBackupUploadRequest, DeleteBackupUploadResponse, DeleteWebhookResponse, GetSiteApiKeyAccessLogsResponse, ListSitePreviewKeysResponse, GetWebhookResponse, ImportBackupAsNewSiteRequest, ImportBackupAsNewSiteResponse, ImportSiteBackupRequest, ListManagementKeysResponse, ListSiteApiKeysResponse, ListWebhooksResponse, RevokeManagementKeyRequest, RevokeManagementKeyResponse, RevokeSiteApiKeyResponse, SdkDeploymentHealthResponse, SetupSdkDeploymentRevalidationWebhookRequest, SetupSdkDeploymentRevalidationWebhookResponse, SetupSdkRevalidationWebhookRequest, SetupSdkRevalidationWebhookResponse, UpdateWebhookRequest, UpdateWebhookResponse, BackupImportResponse, BackupPreviewRequest, BackupPreviewResponse, CreateBackupUploadUrlRequest, CreateBackupUploadUrlResponse } from './siteInfrastructure';
9
8
  import type { GetSiteInspirationAnalysisResponse, ListSiteInspirationAnalysesResponse } from './siteGeneration';
10
9
  import type { ListGscPropertiesAdminResponse, AuthStatusResponse, CronAppointmentRemindersResponse, CronBillingStatusResponse, CronEventFeedbackEmailsResponse, CronEventOccurrencesResponse, CronEventRemindersResponse, CronMediaJobsQuery, CronMediaJobsResponse, CronNewsletterSendResponse, CronPaymentReconciliationResponse, CronSeoIngestResponse, CronWaitlistExpiryResponse } from './siteOperations';
11
- import type { ApplySiteStyleSelectionBody, ApplySiteStyleSelectionResponse } from './siteRuntimeEndpoints';
12
- import type { ManagementMediaAsset, MediaResolveResponse, PushSdkConfigRequest, PushSdkConfigResponse, SdkAddEventOccurrenceRequest, SdkBackfillIdentifiersResult, SdkEventOccurrenceResponse, SdkGetEntryResponse, SdkGetEventCategoryResponse, SdkGetEventResponse, SdkGetFormResponse, SdkGetPageBlockResponse, SdkPatchPageBlockBody, SdkPatchPageBlockResponse, SdkGetVenueResponse, SdkListEntriesResponse, SdkListEventCategoriesResponse, SdkListEventOccurrencesResponse, SdkListEventsResponse, SdkListFormsResponse, SdkListVenuesResponse, SdkMediaFinalizeUploadResponse, SdkMediaDeleteApplyResponse, SdkMediaDeletePreviewResponse, SdkMediaDownloadResponse, SdkMediaListResponse, SdkMediaUploadUrlResponse, SdkPageResponse, SdkEntryUpsertSlotBlock, SdkPublishOrUnpublishEntryResponse, SdkPullContentTypesResponse, SdkCatalogThemeResponse, SdkCatalogBlocksResponse, SdkCatalogContentTypesResponse, SdkCapabilitiesResponse, SdkCommandApplicationResult, SdkConfigureBookingVerticalRequest, SdkConfigureBookingVerticalResponse, SdkDemoContentResponse, SdkDeleteResponse, SdkPullEntriesAllResponse, SdkPullEntriesByTypeResponse, SdkPullEntriesResponse, SdkPullEventCategoriesResponse, SdkPullEventsResponse, SdkPullFooterResponse, SdkPullFormSchema, SdkPullFormsResponse, SdkPullFormSettings, SdkPullDraftsResponse, SdkPullNavigationResponse, SdkPullPagesResponse, SdkPullSettings, SdkPullSettingsResponse, SdkPullSiteInfoResponse, SdkPullThemeResponse, SdkPullVenue, SdkPullVenuesResponse, SdkUpdateSettingsResponse, SdkUpdateEventOccurrenceRequest, SdkUpsertBlockResponse, SdkUpsertEntryResponse, SdkUpsertPageResponse, SdkUpsertEventCategoryResponse, SdkUpsertEventResponse, SdkUpsertFooterResponse, SdkUpsertFormResponse, SdkUpsertNavigationMenuResponse, SdkUpsertThemeResponse, SdkUpsertVenueResponse } from './sdkContracts';
13
- import type { SdkThemeWireWithoutHeader } from './sdkThemeWire';
10
+ import type { ManagementMediaAsset, MediaResolveResponse, PushSdkConfigRequest, PushSdkConfigResponse, SdkAddEventOccurrenceRequest, SdkBackfillIdentifiersResult, SdkEventOccurrenceResponse, SdkGetEntryResponse, SdkGetEventCategoryResponse, SdkGetEventResponse, SdkGetFormResponse, SdkGetPageBlockResponse, SdkPatchPageBlockBody, SdkPatchPageBlockResponse, SdkGetVenueResponse, SdkListEntriesResponse, SdkListEventCategoriesResponse, SdkListEventOccurrencesResponse, SdkListEventsResponse, SdkListFormsResponse, SdkListVenuesResponse, SdkMediaFinalizeUploadResponse, SdkMediaDeleteApplyResponse, SdkMediaDeletePreviewResponse, SdkMediaDownloadResponse, SdkMediaListResponse, SdkMediaUploadUrlResponse, SdkPageResponse, SdkEntryUpsertSlotBlock, SdkPublishOrUnpublishEntryResponse, SdkPullContentTypesResponse, SdkCatalogBlocksResponse, SdkCatalogContentTypesResponse, SdkCapabilitiesResponse, SdkConfigureBookingVerticalRequest, SdkConfigureBookingVerticalResponse, SdkDemoContentResponse, SdkDeleteResponse, SdkPullEntriesAllResponse, SdkPullEntriesByTypeResponse, SdkPullEntriesResponse, SdkPullEventCategoriesResponse, SdkPullEventsResponse, SdkPullFooterResponse, SdkPullFormSchema, SdkPullFormsResponse, SdkPullFormSettings, SdkPullDraftsResponse, SdkPullNavigationResponse, SdkPullPagesResponse, SdkPullSettings, SdkPullSettingsResponse, SdkPullSiteInfoResponse, SdkPullVenue, SdkPullVenuesResponse, SdkUpdateSettingsResponse, SdkUpdateEventOccurrenceRequest, SdkUpsertBlockResponse, SdkUpsertEntryResponse, SdkUpsertPageResponse, SdkUpsertEventCategoryResponse, SdkUpsertEventResponse, SdkUpsertFooterResponse, SdkUpsertFormResponse, SdkUpsertNavigationMenuResponse, SdkUpsertVenueResponse } from './sdkContracts';
14
11
  import type { FooterCompositionUpdateRequest } from './siteManagementEndpoints';
15
12
  import type { SdkEventUpsertBody } from './sdk-event-upsert';
16
13
  import type { SdkEntryPaginationQueryInput } from './schemas/sdk-entries';
@@ -196,9 +193,6 @@ export type SitePlatformAPIEndpoints = {
196
193
  sdkPullContentTypes: APIEndpoint<never, {
197
194
  siteId: string;
198
195
  }, SdkPullContentTypesResponse>;
199
- sdkCatalogTheme: APIEndpoint<never, {
200
- siteId: string;
201
- }, SdkCatalogThemeResponse>;
202
196
  sdkCatalogBlocks: APIEndpoint<never, {
203
197
  siteId: string;
204
198
  }, SdkCatalogBlocksResponse>;
@@ -226,9 +220,6 @@ export type SitePlatformAPIEndpoints = {
226
220
  sdkPullForms: APIEndpoint<never, {
227
221
  siteId: string;
228
222
  }, SdkPullFormsResponse>;
229
- sdkPullTheme: APIEndpoint<never, {
230
- siteId: string;
231
- }, SdkPullThemeResponse>;
232
223
  sdkPullFooter: APIEndpoint<never, {
233
224
  siteId: string;
234
225
  }, SdkPullFooterResponse>;
@@ -326,27 +317,6 @@ export type SitePlatformAPIEndpoints = {
326
317
  }, {
327
318
  siteId: string;
328
319
  }, SdkUpsertNavigationMenuResponse>;
329
- sdkUpsertTheme: APIEndpoint<Readonly<{
330
- kind: 'update';
331
- /**
332
- * The theme minus its header (#1318 Phase 4d, D17). The server compiles
333
- * `theme.header` from the site's stored selection and header
334
- * preferences and is its only author; a body carrying header bytes is
335
- * rejected rather than silently stripped.
336
- */
337
- theme: SdkThemeWireWithoutHeader;
338
- themeId?: string;
339
- selectionId?: string;
340
- }> | Readonly<{
341
- /** The first theme is compiled authoritatively from this command. */
342
- kind: 'initialize';
343
- command: SiteCommandOf<'applySiteStyleSelection'>;
344
- }>, {
345
- siteId: string;
346
- }, SdkUpsertThemeResponse>;
347
- sdkApplySiteStyleSelection: APIEndpoint<ApplySiteStyleSelectionBody, {
348
- siteId: string;
349
- }, SdkCommandApplicationResult<ApplySiteStyleSelectionResponse>>;
350
320
  sdkUpsertFooter: APIEndpoint<FooterCompositionUpdateRequest, {
351
321
  siteId: string;
352
322
  }, SdkUpsertFooterResponse>;
@@ -175,7 +175,12 @@ export type PageDesignEditorStateResponse = {
175
175
  message: string;
176
176
  } | {
177
177
  kind: 'loaded';
178
- source: 'draft' | 'published-fallback';
178
+ /**
179
+ * `'default'` means no design record was persisted for the page and the
180
+ * site style's defaults were resolved. Clients treat every loaded state
181
+ * the same way; the source is diagnostic only.
182
+ */
183
+ source: 'draft' | 'published-fallback' | 'default';
179
184
  revision: PageDesignRevisionToken;
180
185
  editorModel: PageDesignEditorReadModel;
181
186
  };
@@ -58,12 +58,12 @@ export type SiteBillingSubscriptionSnapshot = Readonly<{
58
58
  origin: BillingSubscriptionOrigin | null;
59
59
  status: string;
60
60
  }> | null;
61
- export type SiteBillingManualReviewReason = 'ambiguous_subscription_origin' | 'active_site_linked_add_on' | 'admin_requested_manual_review' | 'missing_admin_subscription_choice' | 'practitioner_limit_exceeded' | 'live_site_allowance_exceeded' | 'subscription_action_failed';
62
- export declare const SITE_BILLING_MANUAL_REVIEW_REASONS: readonly ["ambiguous_subscription_origin", "active_site_linked_add_on", "admin_requested_manual_review", "missing_admin_subscription_choice", "practitioner_limit_exceeded", "live_site_allowance_exceeded", "subscription_action_failed"];
61
+ export type SiteBillingManualReviewReason = 'ambiguous_subscription_origin' | 'active_site_linked_add_on' | 'admin_requested_manual_review' | 'missing_admin_subscription_choice' | 'practitioner_limit_exceeded' | 'live_site_allowance_exceeded' | 'subscription_action_failed' | 'multiple_platform_subscriptions' | 'platform_subscription_recovery_failed' | 'commission_reconciliation_exhausted';
62
+ export declare const SITE_BILLING_MANUAL_REVIEW_REASONS: readonly ["ambiguous_subscription_origin", "active_site_linked_add_on", "admin_requested_manual_review", "missing_admin_subscription_choice", "practitioner_limit_exceeded", "live_site_allowance_exceeded", "subscription_action_failed", "multiple_platform_subscriptions", "platform_subscription_recovery_failed", "commission_reconciliation_exhausted"];
63
63
  export type SiteBillingManualReviewStatus = 'open' | 'resolved';
64
64
  export declare const SITE_BILLING_MANUAL_REVIEW_STATUSES: readonly ["open", "resolved"];
65
- export type SiteBillingManualReviewResolutionAction = 'external_action_completed' | 'no_action_needed' | 'duplicate' | 'superseded_by_arrangement_change' | 'accepted_risk';
66
- export declare const SITE_BILLING_MANUAL_REVIEW_RESOLUTION_ACTIONS: readonly ["external_action_completed", "no_action_needed", "duplicate", "superseded_by_arrangement_change", "accepted_risk"];
65
+ export type SiteBillingManualReviewResolutionAction = 'external_action_completed' | 'no_action_needed' | 'duplicate' | 'superseded_by_arrangement_change' | 'accepted_risk' | 'automatic_reconciliation_succeeded';
66
+ export declare const SITE_BILLING_MANUAL_REVIEW_RESOLUTION_ACTIONS: readonly ["external_action_completed", "no_action_needed", "duplicate", "superseded_by_arrangement_change", "accepted_risk", "automatic_reconciliation_succeeded"];
67
67
  export type SiteBillingManualReviewFailureAction = 'cancel_immediately' | 'cancel_at_period_end' | 'sync_existing_subscription' | 'post_stripe_arrangement_update_failed';
68
68
  export type SiteBillingManualReviewDetailsByReason = Readonly<{
69
69
  ambiguous_subscription_origin: Readonly<{
@@ -96,6 +96,19 @@ export type SiteBillingManualReviewDetailsByReason = Readonly<{
96
96
  externalActionCompleted?: boolean;
97
97
  transitionAttemptId?: string | null;
98
98
  }>;
99
+ multiple_platform_subscriptions: Readonly<{
100
+ subscriptionIds: readonly string[];
101
+ }>;
102
+ platform_subscription_recovery_failed: Readonly<{
103
+ subscriptionId: string;
104
+ error: string;
105
+ }>;
106
+ commission_reconciliation_exhausted: Readonly<{
107
+ targetKind: 'customer_membership' | 'order_payment_plan';
108
+ targetId: string;
109
+ attempts: number;
110
+ error: string;
111
+ }>;
99
112
  }>;
100
113
  export type SiteBillingManualReviewPayload = {
101
114
  [TReason in SiteBillingManualReviewReason]: Readonly<{
@@ -103,7 +116,7 @@ export type SiteBillingManualReviewPayload = {
103
116
  details: SiteBillingManualReviewDetailsByReason[TReason];
104
117
  }>;
105
118
  }[SiteBillingManualReviewReason];
106
- export type SiteBillingArrangementPlanManualReviewReason = Exclude<SiteBillingManualReviewReason, 'subscription_action_failed' | 'practitioner_limit_exceeded' | 'live_site_allowance_exceeded'>;
119
+ export type SiteBillingArrangementPlanManualReviewReason = Exclude<SiteBillingManualReviewReason, 'subscription_action_failed' | 'practitioner_limit_exceeded' | 'live_site_allowance_exceeded' | 'multiple_platform_subscriptions' | 'platform_subscription_recovery_failed' | 'commission_reconciliation_exhausted'>;
107
120
  export type SiteBillingArrangementSubscriptionAction = 'not_applicable' | 'sync_attempted' | 'cancelled_immediately' | 'scheduled_cancel_at_period_end' | 'manual_review_required' | 'failed';
108
121
  export declare const SITE_BILLING_ARRANGEMENT_SUBSCRIPTION_ACTIONS: readonly ["not_applicable", "sync_attempted", "cancelled_immediately", "scheduled_cancel_at_period_end", "manual_review_required", "failed"];
109
122
  export declare const SITE_BILLING_ARRANGEMENT_CHANGE_ORIGINS: readonly ["native_arrangement_change", "imported_legacy_cost_history"];
@@ -298,6 +298,7 @@ export declare const proofBlockIslandCodecs: {
298
298
  eventSurface: import("..").EventSurfaceScope;
299
299
  filterEventPresets: string | null;
300
300
  scheduleScope: import("..").EventScheduleScope;
301
+ seriesIds?: string | null;
301
302
  filterCategoryIds?: string | null;
302
303
  filterStaffMemberId?: string | null;
303
304
  filterVenueId?: string | null;
@@ -343,6 +344,7 @@ export declare const proofBlockIslandCodecs: {
343
344
  eventSurface: import("..").EventSurfaceScope;
344
345
  filterEventPresets: string | null;
345
346
  scheduleScope: import("..").EventScheduleScope;
347
+ seriesIds?: string | null;
346
348
  filterCategoryIds?: string | null;
347
349
  filterStaffMemberId?: string | null;
348
350
  filterVenueId?: string | null;
@@ -1234,6 +1236,7 @@ export declare const runtimeIslandCodecs: {
1234
1236
  eventSurface: import("..").EventSurfaceScope;
1235
1237
  filterEventPresets: string | null;
1236
1238
  scheduleScope: import("..").EventScheduleScope;
1239
+ seriesIds?: string | null;
1237
1240
  filterCategoryIds?: string | null;
1238
1241
  filterStaffMemberId?: string | null;
1239
1242
  filterVenueId?: string | null;
@@ -1279,6 +1282,7 @@ export declare const runtimeIslandCodecs: {
1279
1282
  eventSurface: import("..").EventSurfaceScope;
1280
1283
  filterEventPresets: string | null;
1281
1284
  scheduleScope: import("..").EventScheduleScope;
1285
+ seriesIds?: string | null;
1282
1286
  filterCategoryIds?: string | null;
1283
1287
  filterStaffMemberId?: string | null;
1284
1288
  filterVenueId?: string | null;
@@ -156,6 +156,8 @@ export type PageRendererDataContext = {
156
156
  apiBaseUrl?: string;
157
157
  portalToken?: string | null;
158
158
  bookingOfferingPresets?: readonly BookingOfferingPresetSummary[];
159
+ /** Optional canonical service-detail route prefix for catalogue links. */
160
+ appointmentServicePathPrefix?: string;
159
161
  mailingList?: import('../../core/src/index').MailingListRuntimeContext;
160
162
  bookingTimeZone?: string;
161
163
  eventRegistrationOverlayEnabled?: boolean;
@@ -57,6 +57,8 @@ export type EventCalendarFilterContent = {
57
57
  eventSurface?: EventSurfaceScope | null;
58
58
  filterEventPresets?: readonly EventSurfacePreset[] | null;
59
59
  scheduleScope?: EventScheduleScope | null;
60
+ eventSelection?: 'matching' | 'selected' | null;
61
+ selectedEventSeriesIds?: readonly string[] | null;
60
62
  filterCategoryIds?: readonly EventCategoryId[] | null;
61
63
  filterStaffMemberId?: string | null;
62
64
  filterVenueId?: VenueId | null;