@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.
- package/dist/{PreviewEditorSidebar-CUyTzd5z.mjs → PreviewEditorSidebar-Q-fy9GYw.mjs} +3 -3
- package/dist/{PreviewEditorUI-Agkw4v5i.mjs → PreviewEditorUI-LYGzgk85.mjs} +2 -2
- package/dist/{SdkPreviewModeRuntime-DdbeAdS8.mjs → SdkPreviewModeRuntime-CoPYI5Jq.mjs} +72 -46
- package/dist/{SiteChromeCustomizeContext-CqGOz-Kv.mjs → SiteChromeCustomizeContext-D8LePX8x.mjs} +681 -196
- package/dist/_dts/api/src/contentRuntime.d.ts +12 -31
- package/dist/_dts/api/src/domainConnection.d.ts +4 -0
- package/dist/_dts/api/src/footerCompositionContracts.d.ts +25 -0
- package/dist/_dts/api/src/index.d.ts +1 -1
- package/dist/_dts/api/src/launchReadiness.d.ts +1 -0
- package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +2 -1
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -26
- package/dist/_dts/api/src/siteOnboarding.d.ts +7 -0
- package/dist/_dts/billing/src/site-arrangements.d.ts +12 -3
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -0
- package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -0
- package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +2 -0
- package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +122 -0
- package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +2 -1
- package/dist/_dts/blocks/src/system/blocks/events/shared/eventSelection.d.ts +11 -0
- package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -47
- package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +5 -0
- package/dist/_dts/blocks/src/system/data/utils.d.ts +1 -1
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +27 -1
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +12 -180
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +6 -90
- package/dist/_dts/blocks/src/system/runtime/hooks/useEventFilters.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +5 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.state.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.state.d.ts +10 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventCheckoutHandoffRestore.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +4 -5
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useSettledCommerceView.d.ts +37 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +4 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +11 -101
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +7 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/listOptions.d.ts +2 -0
- package/dist/_dts/blocks/src/system/transforms/registry/eventCalendar.d.ts +12 -0
- package/dist/_dts/commerce/src/purchase/bookingInstalmentSchedule.d.ts +4 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +3 -0
- package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +27 -1
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +1 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/ThemeFontLoader.d.ts +17 -1
- package/dist/_dts/theme-core/src/buttons/affordanceSuppression.d.ts +17 -0
- package/dist/_dts/theme-core/src/buttons/buttonColourContract.d.ts +1 -1
- package/dist/_dts/theme-core/src/buttons/classNames.d.ts +16 -0
- package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +0 -6
- package/dist/_dts/theme-core/src/buttons/resolvedButtonCss.d.ts +4 -4
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/hosted-booking-appearance.d.ts +54 -12
- package/dist/_dts/theme-core/src/index.d.ts +1 -1
- package/dist/client/{BookingConsentAgreement-CuKa82V4.mjs → BookingConsentAgreement-xJeYNdnb.mjs} +2 -2
- package/dist/client/{DiscountCodeDisclosure-BbYieKWB.mjs → DiscountCodeDisclosure-DdT6uzl9.mjs} +1 -1
- package/dist/client/{EventCombined.client-LTfR1Aby.mjs → EventCombined.client-Cp28uYuM.mjs} +11 -15
- package/dist/client/{EventListing.client-DUHpYSuo.mjs → EventListing.client-CD6AJsMr.mjs} +4 -17
- package/dist/client/{LeafletStaticMap-CHRupL6m.mjs → LeafletStaticMap-DBsAi9-e.mjs} +1 -1
- package/dist/client/{accordion-6HiIFxNL.mjs → accordion-6dwbOKYR.mjs} +1 -1
- package/dist/client/{bookingForm-Dlmid43H.mjs → bookingForm-CZE9_qPQ.mjs} +5 -5
- package/dist/client/bookings.mjs +175 -93
- package/dist/client/{carousel-DmkZRRq_.mjs → carousel-7VHGQARz.mjs} +1 -1
- package/dist/client/{cart-CIC24330.mjs → cart-Qg_mvQhh.mjs} +3 -3
- package/dist/client/{checkout-D1Zw9imo.mjs → checkout-D84rpgdr.mjs} +3 -3
- package/dist/client/client.mjs +602 -139
- package/dist/client/{context-Cy1OayHx.mjs → context-Ctp3T0Wr.mjs} +1 -1
- package/dist/client/{dates-aDcfoLHr.mjs → dates-DJKFcI_N.mjs} +2 -2
- package/dist/client/{eventCalendar-FQxMPAjf.mjs → eventCalendar-CK31z3vs.mjs} +11 -7
- package/dist/client/{eventCombined-Dr3ac6Hb.mjs → eventCombined-DiXd-ewn.mjs} +3 -3
- package/dist/client/{eventDetails-D-AzUHFQ.mjs → eventDetails-CTRgt2DK.mjs} +4 -4
- package/dist/client/{eventListing-B3XxBf3i.mjs → eventListing-Dy9vi_j_.mjs} +3 -3
- package/dist/client/{eventRegistration-I6EaokFD.mjs → eventRegistration-CnalYMr2.mjs} +124 -31
- package/dist/client/{form-BbWckVWY.mjs → form-eUiMveTT.mjs} +2 -2
- package/dist/client/{headerSection-C9qU4Y7x.mjs → headerSection-Dy9kQpB1.mjs} +2 -2
- package/dist/client/hooks.mjs +247 -32
- package/dist/client/{locationMap-CLCShvlG.mjs → locationMap-DalCmWU0.mjs} +2 -2
- package/dist/client/{newsletterForm-Briukxzi.mjs → newsletterForm-SDDPvhS0.mjs} +23 -10
- package/dist/client/{pricing-Copadu-2.mjs → pricing-OcMz4SnX.mjs} +1 -1
- package/dist/client/{productDetail-oujlRd-r.mjs → productDetail-BQrgHElM.mjs} +3 -3
- package/dist/client/{productList-BRiIRUcd.mjs → productList-OnPn_UJj.mjs} +3 -3
- package/dist/client/{propsDecoder-CB2KS_ko.mjs → propsDecoder-zBdsnS-N.mjs} +38 -8
- package/dist/client/rendering/client.mjs +446 -121
- package/dist/client/rendering/islands.mjs +17 -17
- package/dist/client/rendering.mjs +601 -138
- package/dist/client/{scrollToBlock-B1IS1_ua.mjs → scrollToBlock-BNM4Ob2Y.mjs} +28 -11
- package/dist/client/{shop-Vn6yNFED.mjs → shop-Bv1fPTwQ.mjs} +6 -6
- package/dist/client/{shop-commerce-BVTqipYp.mjs → shop-commerce-D4KNGaW8.mjs} +5 -5
- package/dist/client/{shop-commerce-store-BVnJVy7v.mjs → shop-commerce-store-2N5EV0Rc.mjs} +1 -1
- package/dist/client/{shopShared-COIeK77T.mjs → shopShared-DvJGdHTV.mjs} +3 -3
- package/dist/client/{useEventFilters-DzIUcS9n.mjs → useEventFilters-BBBvGDHQ.mjs} +17 -11
- package/dist/preview-next/client/runtime.mjs +3 -3
- package/dist/preview-next/editor-chrome.css +4 -8
- package/dist/{sdk-runtime-CnCLvZRv.mjs → sdk-runtime-Defnbfzw.mjs} +1 -1
- package/dist/{separator-DKDRJ1oH.mjs → separator-CZXO3Sb0.mjs} +1 -1
- package/dist/server/components.mjs +384 -62
- package/dist/server/config-validation.mjs +232 -26
- package/dist/server/config.mjs +232 -26
- package/dist/server/data.mjs +247 -32
- package/dist/server/index.mjs +1 -1
- package/dist/server/next.mjs +400 -69
- package/dist/server/page-converter.mjs +189 -25
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +399 -68
- package/dist/server/rendering.mjs +399 -68
- package/dist/server/routing.mjs +261 -33
- package/dist/server/server.mjs +248 -33
- package/dist/server/theme-bridge.mjs +47 -15
- package/dist/server/theme.mjs +1 -1
- package/dist/styles/index.css +28 -2
- 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
|
-
|
|
533
|
+
type SdkRuntimeBlockContent<TScope, TContentVersionId extends string | null> = TScope & {
|
|
532
534
|
id: string;
|
|
533
535
|
blockId: string;
|
|
534
|
-
contentVersionId:
|
|
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
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 {
|
|
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;
|