@riverbankcms/sdk 0.140.0 → 0.141.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 (112) hide show
  1. package/dist/{PreviewEditorSidebar-CUyTzd5z.mjs → PreviewEditorSidebar-Q-fy9GYw.mjs} +3 -3
  2. package/dist/{PreviewEditorUI-Agkw4v5i.mjs → PreviewEditorUI-LYGzgk85.mjs} +2 -2
  3. package/dist/{SdkPreviewModeRuntime-DdbeAdS8.mjs → SdkPreviewModeRuntime-CoPYI5Jq.mjs} +72 -46
  4. package/dist/{SiteChromeCustomizeContext-CqGOz-Kv.mjs → SiteChromeCustomizeContext-D8LePX8x.mjs} +681 -196
  5. package/dist/_dts/api/src/contentRuntime.d.ts +12 -31
  6. package/dist/_dts/api/src/domainConnection.d.ts +4 -0
  7. package/dist/_dts/api/src/footerCompositionContracts.d.ts +25 -0
  8. package/dist/_dts/api/src/index.d.ts +1 -1
  9. package/dist/_dts/api/src/launchReadiness.d.ts +1 -0
  10. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +2 -1
  11. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -26
  12. package/dist/_dts/api/src/siteOnboarding.d.ts +7 -0
  13. package/dist/_dts/billing/src/site-arrangements.d.ts +12 -3
  14. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -0
  15. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -0
  16. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +2 -0
  17. package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +122 -0
  18. package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +2 -1
  19. package/dist/_dts/blocks/src/system/blocks/events/shared/eventSelection.d.ts +11 -0
  20. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
  21. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -47
  22. package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +5 -0
  23. package/dist/_dts/blocks/src/system/data/utils.d.ts +1 -1
  24. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +27 -1
  25. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +12 -180
  26. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +6 -90
  27. package/dist/_dts/blocks/src/system/runtime/hooks/useEventFilters.d.ts +2 -1
  28. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +5 -1
  29. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +4 -0
  30. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.state.d.ts +5 -0
  31. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.d.ts +3 -0
  32. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.state.d.ts +10 -3
  33. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventCheckoutHandoffRestore.d.ts +9 -0
  34. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +4 -5
  35. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useSettledCommerceView.d.ts +37 -0
  36. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +4 -3
  37. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +3 -0
  38. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +11 -101
  39. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +7 -2
  40. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/listOptions.d.ts +2 -0
  41. package/dist/_dts/blocks/src/system/transforms/registry/eventCalendar.d.ts +12 -0
  42. package/dist/_dts/commerce/src/purchase/bookingInstalmentSchedule.d.ts +4 -0
  43. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +3 -0
  44. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +27 -1
  45. package/dist/_dts/sdk/src/public-api/contracts.d.ts +1 -1
  46. package/dist/_dts/sdk/src/version.d.ts +1 -1
  47. package/dist/_dts/theme-core/src/ThemeFontLoader.d.ts +17 -1
  48. package/dist/_dts/theme-core/src/buttons/affordanceSuppression.d.ts +17 -0
  49. package/dist/_dts/theme-core/src/buttons/buttonColourContract.d.ts +1 -1
  50. package/dist/_dts/theme-core/src/buttons/classNames.d.ts +16 -0
  51. package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +0 -6
  52. package/dist/_dts/theme-core/src/buttons/resolvedButtonCss.d.ts +4 -4
  53. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  54. package/dist/_dts/theme-core/src/hosted-booking-appearance.d.ts +54 -12
  55. package/dist/_dts/theme-core/src/index.d.ts +1 -1
  56. package/dist/client/{BookingConsentAgreement-CuKa82V4.mjs → BookingConsentAgreement-xJeYNdnb.mjs} +2 -2
  57. package/dist/client/{DiscountCodeDisclosure-BbYieKWB.mjs → DiscountCodeDisclosure-DdT6uzl9.mjs} +1 -1
  58. package/dist/client/{EventCombined.client-LTfR1Aby.mjs → EventCombined.client-Cp28uYuM.mjs} +11 -15
  59. package/dist/client/{EventListing.client-DUHpYSuo.mjs → EventListing.client-CD6AJsMr.mjs} +4 -17
  60. package/dist/client/{LeafletStaticMap-CHRupL6m.mjs → LeafletStaticMap-DBsAi9-e.mjs} +1 -1
  61. package/dist/client/{accordion-6HiIFxNL.mjs → accordion-6dwbOKYR.mjs} +1 -1
  62. package/dist/client/{bookingForm-Dlmid43H.mjs → bookingForm-CZE9_qPQ.mjs} +5 -5
  63. package/dist/client/bookings.mjs +175 -93
  64. package/dist/client/{carousel-DmkZRRq_.mjs → carousel-7VHGQARz.mjs} +1 -1
  65. package/dist/client/{cart-CIC24330.mjs → cart-Qg_mvQhh.mjs} +3 -3
  66. package/dist/client/{checkout-D1Zw9imo.mjs → checkout-D84rpgdr.mjs} +3 -3
  67. package/dist/client/client.mjs +602 -139
  68. package/dist/client/{context-Cy1OayHx.mjs → context-Ctp3T0Wr.mjs} +1 -1
  69. package/dist/client/{dates-aDcfoLHr.mjs → dates-DJKFcI_N.mjs} +2 -2
  70. package/dist/client/{eventCalendar-FQxMPAjf.mjs → eventCalendar-CK31z3vs.mjs} +11 -7
  71. package/dist/client/{eventCombined-Dr3ac6Hb.mjs → eventCombined-DiXd-ewn.mjs} +3 -3
  72. package/dist/client/{eventDetails-D-AzUHFQ.mjs → eventDetails-CTRgt2DK.mjs} +4 -4
  73. package/dist/client/{eventListing-B3XxBf3i.mjs → eventListing-Dy9vi_j_.mjs} +3 -3
  74. package/dist/client/{eventRegistration-I6EaokFD.mjs → eventRegistration-CnalYMr2.mjs} +124 -31
  75. package/dist/client/{form-BbWckVWY.mjs → form-eUiMveTT.mjs} +2 -2
  76. package/dist/client/{headerSection-C9qU4Y7x.mjs → headerSection-Dy9kQpB1.mjs} +2 -2
  77. package/dist/client/hooks.mjs +247 -32
  78. package/dist/client/{locationMap-CLCShvlG.mjs → locationMap-DalCmWU0.mjs} +2 -2
  79. package/dist/client/{newsletterForm-Briukxzi.mjs → newsletterForm-SDDPvhS0.mjs} +23 -10
  80. package/dist/client/{pricing-Copadu-2.mjs → pricing-OcMz4SnX.mjs} +1 -1
  81. package/dist/client/{productDetail-oujlRd-r.mjs → productDetail-BQrgHElM.mjs} +3 -3
  82. package/dist/client/{productList-BRiIRUcd.mjs → productList-OnPn_UJj.mjs} +3 -3
  83. package/dist/client/{propsDecoder-CB2KS_ko.mjs → propsDecoder-zBdsnS-N.mjs} +38 -8
  84. package/dist/client/rendering/client.mjs +446 -121
  85. package/dist/client/rendering/islands.mjs +17 -17
  86. package/dist/client/rendering.mjs +601 -138
  87. package/dist/client/{scrollToBlock-B1IS1_ua.mjs → scrollToBlock-BNM4Ob2Y.mjs} +28 -11
  88. package/dist/client/{shop-Vn6yNFED.mjs → shop-Bv1fPTwQ.mjs} +6 -6
  89. package/dist/client/{shop-commerce-BVTqipYp.mjs → shop-commerce-D4KNGaW8.mjs} +5 -5
  90. package/dist/client/{shop-commerce-store-BVnJVy7v.mjs → shop-commerce-store-2N5EV0Rc.mjs} +1 -1
  91. package/dist/client/{shopShared-COIeK77T.mjs → shopShared-DvJGdHTV.mjs} +3 -3
  92. package/dist/client/{useEventFilters-DzIUcS9n.mjs → useEventFilters-BBBvGDHQ.mjs} +17 -11
  93. package/dist/preview-next/client/runtime.mjs +3 -3
  94. package/dist/preview-next/editor-chrome.css +4 -8
  95. package/dist/{sdk-runtime-CnCLvZRv.mjs → sdk-runtime-Defnbfzw.mjs} +1 -1
  96. package/dist/{separator-DKDRJ1oH.mjs → separator-CZXO3Sb0.mjs} +1 -1
  97. package/dist/server/components.mjs +384 -62
  98. package/dist/server/config-validation.mjs +232 -26
  99. package/dist/server/config.mjs +232 -26
  100. package/dist/server/data.mjs +247 -32
  101. package/dist/server/index.mjs +1 -1
  102. package/dist/server/next.mjs +400 -69
  103. package/dist/server/page-converter.mjs +189 -25
  104. package/dist/server/prebuild.mjs +1 -1
  105. package/dist/server/rendering/server.mjs +399 -68
  106. package/dist/server/rendering.mjs +399 -68
  107. package/dist/server/routing.mjs +261 -33
  108. package/dist/server/server.mjs +248 -33
  109. package/dist/server/theme-bridge.mjs +47 -15
  110. package/dist/server/theme.mjs +1 -1
  111. package/dist/styles/index.css +28 -2
  112. package/package.json +1 -1
@@ -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<{
@@ -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
+ }>;
@@ -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[];
@@ -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
  };
@@ -58,8 +58,8 @@ 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' | '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", "commission_reconciliation_exhausted"];
63
63
  export type SiteBillingManualReviewStatus = 'open' | 'resolved';
64
64
  export declare const SITE_BILLING_MANUAL_REVIEW_STATUSES: readonly ["open", "resolved"];
65
65
  export type SiteBillingManualReviewResolutionAction = 'external_action_completed' | 'no_action_needed' | 'duplicate' | 'superseded_by_arrangement_change' | 'accepted_risk';
@@ -96,6 +96,15 @@ 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
+ commission_reconciliation_exhausted: Readonly<{
103
+ targetKind: 'customer_membership' | 'order_payment_plan';
104
+ targetId: string;
105
+ attempts: number;
106
+ error: string;
107
+ }>;
99
108
  }>;
100
109
  export type SiteBillingManualReviewPayload = {
101
110
  [TReason in SiteBillingManualReviewReason]: Readonly<{
@@ -103,7 +112,7 @@ export type SiteBillingManualReviewPayload = {
103
112
  details: SiteBillingManualReviewDetailsByReason[TReason];
104
113
  }>;
105
114
  }[SiteBillingManualReviewReason];
106
- export type SiteBillingArrangementPlanManualReviewReason = Exclude<SiteBillingManualReviewReason, 'subscription_action_failed' | 'practitioner_limit_exceeded' | 'live_site_allowance_exceeded'>;
115
+ export type SiteBillingArrangementPlanManualReviewReason = Exclude<SiteBillingManualReviewReason, 'subscription_action_failed' | 'practitioner_limit_exceeded' | 'live_site_allowance_exceeded' | 'multiple_platform_subscriptions' | 'commission_reconciliation_exhausted'>;
107
116
  export type SiteBillingArrangementSubscriptionAction = 'not_applicable' | 'sync_attempted' | 'cancelled_immediately' | 'scheduled_cancel_at_period_end' | 'manual_review_required' | 'failed';
108
117
  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
118
  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;
@@ -0,0 +1,122 @@
1
+ import { type FieldDefinition } from '../../manifest/schema';
2
+ export declare const eventSelectionFields: {
3
+ id: string;
4
+ label: string;
5
+ required: boolean;
6
+ type: "select";
7
+ options: {
8
+ value: string;
9
+ label: string;
10
+ description?: string | undefined;
11
+ icon?: string | undefined;
12
+ }[];
13
+ multiple: boolean;
14
+ description?: string | undefined;
15
+ visibleRoles?: ("admin" | "designer" | "author")[] | undefined;
16
+ defaultValue?: any;
17
+ ui?: {
18
+ widget?: string | undefined;
19
+ preset?: "disclosure" | undefined;
20
+ flattenInRepeater?: boolean | undefined;
21
+ hidden?: boolean | undefined;
22
+ hideLabel?: boolean | undefined;
23
+ hideDescription?: boolean | undefined;
24
+ showCharCount?: number | {
25
+ max: number;
26
+ } | undefined;
27
+ showSlugPreview?: boolean | undefined;
28
+ variant?: "full" | "inline" | "media" | "limited" | "notes" | undefined;
29
+ richTextVariant?: "full" | "inline" | "media" | "limited" | "notes" | undefined;
30
+ cropEditorMode?: "inline" | "dialog" | undefined;
31
+ cropEditorAutoOpen?: boolean | undefined;
32
+ mediaPickerAutoOpen?: boolean | undefined;
33
+ showMediaPreview?: boolean | undefined;
34
+ showMediaOverlayActions?: boolean | undefined;
35
+ mediaPreviewMaxWidth?: "none" | "sm" | "md" | "xs" | undefined;
36
+ preventMediaPreviewUpscale?: boolean | undefined;
37
+ mediaDelivery?: {
38
+ sizes?: string | undefined;
39
+ widthCandidates?: number[] | undefined;
40
+ maxCssWidth?: number | undefined;
41
+ maxCssHeight?: number | undefined;
42
+ strategy?: "default" | "columnsAuto" | "imageGalleryVariant" | undefined;
43
+ strategyOptions?: Record<string, unknown> | undefined;
44
+ } | undefined;
45
+ mediaDeliveryByVariant?: Record<string, {
46
+ sizes?: string | undefined;
47
+ widthCandidates?: number[] | undefined;
48
+ maxCssWidth?: number | undefined;
49
+ maxCssHeight?: number | undefined;
50
+ strategy?: "default" | "columnsAuto" | "imageGalleryVariant" | undefined;
51
+ strategyOptions?: Record<string, unknown> | undefined;
52
+ }> | undefined;
53
+ inputType?: "number" | "text" | "email" | "tel" | undefined;
54
+ min?: number | undefined;
55
+ max?: number | undefined;
56
+ step?: number | undefined;
57
+ showValue?: boolean | undefined;
58
+ valueUnit?: "percent" | "pixels" | "unitless" | undefined;
59
+ unsetValue?: "max" | "field-default" | undefined;
60
+ allowDirectInput?: boolean | undefined;
61
+ pattern?: string | undefined;
62
+ placeholder?: string | undefined;
63
+ visibleWhen?: import("../..").FieldVisibleWhen | undefined;
64
+ modalConfig?: {
65
+ buttonLabel?: string | undefined;
66
+ description?: string | undefined;
67
+ buttonVariant?: "default" | "outline" | undefined;
68
+ showCustomizedIndicator?: boolean | undefined;
69
+ maxWidth?: string | undefined;
70
+ } | undefined;
71
+ allowedTypes?: ("image" | "gradient" | "color")[] | undefined;
72
+ fullWidth?: boolean | undefined;
73
+ row?: string | undefined;
74
+ colSpan?: number | undefined;
75
+ layout?: "stack" | "grid" | undefined;
76
+ columns?: number | undefined;
77
+ gridColsPreset?: "simple2" | "simple3" | "simple4" | "buttonCtaRow" | undefined;
78
+ gridColumns?: {
79
+ base?: number | undefined;
80
+ sm?: number | undefined;
81
+ md?: number | undefined;
82
+ lg?: number | undefined;
83
+ xl?: number | undefined;
84
+ } | undefined;
85
+ gridColsClassName?: string | undefined;
86
+ repeaterPreset?: "thumbnailGrid" | "layoutGrid" | undefined;
87
+ thumbnailField?: string | undefined;
88
+ thumbnailAltField?: string | undefined;
89
+ thumbnailLabelField?: string | undefined;
90
+ thumbnailAspectRatio?: string | undefined;
91
+ thumbnailCardDensity?: "compact" | "comfortable" | undefined;
92
+ layoutGridColumnsFields?: {
93
+ lg: string;
94
+ base?: string | undefined;
95
+ sm?: string | undefined;
96
+ md?: string | undefined;
97
+ xl?: string | undefined;
98
+ } | undefined;
99
+ layoutGridSpanField?: string | undefined;
100
+ layoutGridRowField?: string | undefined;
101
+ layoutGridColumnField?: string | undefined;
102
+ layoutGridMaxRows?: number | undefined;
103
+ iconPickerPreset?: "feature" | "cta" | undefined;
104
+ contentTypeField?: string | undefined;
105
+ fixedContentType?: string | undefined;
106
+ valueFrom?: "id" | "identifier" | "slug" | undefined;
107
+ siteOptionSource?: "eventSeries" | "eventCategories" | "venues" | "staffMembers" | undefined;
108
+ searchThreshold?: number | undefined;
109
+ renderInHeader?: boolean | undefined;
110
+ intent?: "display" | "style" | "content" | "behavior" | undefined;
111
+ valueContract?: "boxBackground" | undefined;
112
+ } | undefined;
113
+ source?: {
114
+ kind: "static";
115
+ } | {
116
+ kind: "site";
117
+ optionSource: "eventSeries" | "eventCategories" | "venues" | "staffMembers";
118
+ } | {
119
+ kind: "sdk";
120
+ } | undefined;
121
+ }[];
122
+ export declare function withEventSelectionVisibility(field: FieldDefinition): FieldDefinition;
@@ -45,13 +45,14 @@ export declare const calendarWindowQuerySchema: z.ZodObject<{
45
45
  recurring: "recurring";
46
46
  oneOff: "oneOff";
47
47
  }>>;
48
+ seriesIds: z.ZodOptional<z.ZodString>;
48
49
  categoryIds: z.ZodOptional<z.ZodString>;
49
50
  venueId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string | undefined, string>>>;
50
51
  staffMemberId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string | undefined, string>>>;
51
52
  }, z.core.$strip>;
52
53
  export type CalendarWindowQuery = z.infer<typeof calendarWindowQuerySchema>;
53
54
  export type CalendarWindowRequest = Omit<CalendarWindowQuery, 'limit' | 'stage'> & Partial<Pick<CalendarWindowQuery, 'limit' | 'stage'>>;
54
- export type CalendarFilterInput = Pick<CalendarWindowQuery, 'eventSurface' | 'eventPresets' | 'scheduleScope' | 'categoryIds' | 'venueId' | 'staffMemberId' | 'readProfile'>;
55
+ export type CalendarFilterInput = Pick<CalendarWindowQuery, 'eventSurface' | 'eventPresets' | 'scheduleScope' | 'seriesIds' | 'categoryIds' | 'venueId' | 'staffMemberId' | 'readProfile'>;
55
56
  /** Pagination and window bounds deliberately do not change the query's identity. */
56
57
  export declare function calendarQueryKey(siteId: string, stage: string | undefined, filters: CalendarFilterInput): string;
57
58
  export declare function calendarWindowMonths(window: CalendarMonthWindow): string[];
@@ -0,0 +1,11 @@
1
+ import { type EventSeriesId } from '../../../../../../core/src/index';
2
+ export type EventSelection = Readonly<{
3
+ kind: 'matching';
4
+ }> | Readonly<{
5
+ kind: 'selected';
6
+ seriesIds: readonly EventSeriesId[];
7
+ }>;
8
+ /** Invalid saved selections fail closed rather than widening discovery. */
9
+ export declare function resolveEventSelection(mode: unknown, value: unknown): EventSelection;
10
+ /** Undefined means discovery; an empty string is an explicitly empty selection. */
11
+ export declare function eventSeriesScopeCsv(value: readonly string[] | string | null | undefined): string | undefined;
@@ -125,7 +125,7 @@ export declare const locationMapManifest: import("..").DefinedBlockManifest<{
125
125
  contentTypeField?: string | undefined;
126
126
  fixedContentType?: string | undefined;
127
127
  valueFrom?: "id" | "identifier" | "slug" | undefined;
128
- siteOptionSource?: "eventCategories" | "venues" | "staffMembers" | undefined;
128
+ siteOptionSource?: "eventSeries" | "eventCategories" | "venues" | "staffMembers" | undefined;
129
129
  searchThreshold?: number | undefined;
130
130
  renderInHeader?: boolean | undefined;
131
131
  intent?: "display" | "style" | "content" | "behavior" | undefined;
@@ -135,7 +135,7 @@ export declare const locationMapManifest: import("..").DefinedBlockManifest<{
135
135
  kind: "static";
136
136
  } | {
137
137
  kind: "site";
138
- optionSource: "eventCategories" | "venues" | "staffMembers";
138
+ optionSource: "eventSeries" | "eventCategories" | "venues" | "staffMembers";
139
139
  } | {
140
140
  kind: "sdk";
141
141
  } | undefined;