@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.
- package/dist/{PreviewEditorSidebar-CUyTzd5z.mjs → PreviewEditorSidebar-Dk6Dt11f.mjs} +24 -15
- package/dist/{PreviewEditorUI-Agkw4v5i.mjs → PreviewEditorUI-D6EQTsCA.mjs} +3 -3
- package/dist/{PreviewQueryProvider-CN0ewic5.mjs → PreviewQueryProvider-CC-EPkyQ.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-DdbeAdS8.mjs → SdkPreviewModeRuntime-DH1n4ytY.mjs} +85 -54
- package/dist/{SiteChromeCustomizeContext-CqGOz-Kv.mjs → SiteChromeCustomizeContext-DunIzY0K.mjs} +797 -216
- package/dist/_dts/api/src/billing.d.ts +6 -1
- package/dist/_dts/api/src/bookingConfig.d.ts +1 -1
- package/dist/_dts/api/src/commercePortalEndpoints.d.ts +2 -2
- 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/endpoints.d.ts +0 -27
- package/dist/_dts/api/src/footerCompositionContracts.d.ts +25 -0
- package/dist/_dts/api/src/index.d.ts +2 -2
- 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/publicBookingService.d.ts +1 -0
- package/dist/_dts/api/src/sdkConfig/layout.d.ts +13 -0
- package/dist/_dts/api/src/sdkContracts.d.ts +3 -8
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -26
- package/dist/_dts/api/src/siteOnboarding.d.ts +7 -0
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -31
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +6 -1
- package/dist/_dts/billing/src/site-arrangements.d.ts +18 -5
- 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/events/shared/schemas.d.ts +56 -0
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +8 -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 +63 -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/commerce/src/purchase/stripeCommissionMetadata.d.ts +1 -2
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +3102 -3122
- package/dist/_dts/editor-blocks/src/block-editor/ColourFieldOptionsProvider.d.ts +7 -0
- package/dist/_dts/editor-blocks/src/block-editor/colourFieldVisibility.d.ts +7 -0
- package/dist/_dts/editor-blocks/src/block-editor/preparedManifest.d.ts +2 -0
- package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
- package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +27 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -2
- package/dist/_dts/preview-next/src/client/preview/PreviewFooterEditorPanel.d.ts +3 -6
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +2 -2
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +2 -2
- package/dist/_dts/preview-next/src/client/preview/footerInspection.d.ts +16 -0
- package/dist/_dts/preview-next/src/client/preview/sdkConfig.d.ts +6 -0
- package/dist/_dts/sdk/src/config/types.d.ts +2 -18
- package/dist/_dts/sdk/src/config/validation.d.ts +6 -0
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +4 -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/footer/mode.d.ts +10 -1
- 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/_dts/theme-core/src/schema.d.ts +1 -7
- package/dist/_dts/theme-core/src/site-styles/effectivePageDesign.d.ts +32 -0
- package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
- package/dist/client/{BookingConsentAgreement-CuKa82V4.mjs → BookingConsentAgreement-CnJeq3_r.mjs} +2 -2
- package/dist/client/{DiscountCodeDisclosure-BbYieKWB.mjs → DiscountCodeDisclosure-BINEO6J9.mjs} +1 -1
- package/dist/client/{EventCombined.client-LTfR1Aby.mjs → EventCombined.client-srxNQ6sZ.mjs} +11 -15
- package/dist/client/{EventListing.client-DUHpYSuo.mjs → EventListing.client-DbyVyGkX.mjs} +4 -17
- package/dist/client/{LeafletStaticMap-CHRupL6m.mjs → LeafletStaticMap-B-wpijzL.mjs} +1 -1
- package/dist/client/{accordion-6HiIFxNL.mjs → accordion-B-iUXU7n.mjs} +1 -1
- package/dist/client/{bookingForm-Dlmid43H.mjs → bookingForm-BXYPke5q.mjs} +5 -5
- package/dist/client/bookings.mjs +194 -102
- package/dist/client/{carousel-DmkZRRq_.mjs → carousel-Cr4aj63H.mjs} +1 -1
- package/dist/client/{cart-CIC24330.mjs → cart-DibP9WWa.mjs} +3 -3
- package/dist/client/{checkout-D1Zw9imo.mjs → checkout-CrSBVnL8.mjs} +3 -3
- package/dist/client/client.mjs +643 -192
- package/dist/client/{context-Cy1OayHx.mjs → context-Ces-AgdR.mjs} +1 -1
- package/dist/client/{dates-aDcfoLHr.mjs → dates-BXyNeNhB.mjs} +2 -2
- package/dist/client/{eventCalendar-FQxMPAjf.mjs → eventCalendar-HwpPeqrH.mjs} +11 -7
- package/dist/client/{eventCombined-Dr3ac6Hb.mjs → eventCombined-BpFUkuEI.mjs} +3 -3
- package/dist/client/{eventDetails-D-AzUHFQ.mjs → eventDetails-DK_agiWy.mjs} +4 -4
- package/dist/client/{eventListing-B3XxBf3i.mjs → eventListing-DhzHqP1c.mjs} +3 -3
- package/dist/client/{eventRegistration-I6EaokFD.mjs → eventRegistration-BdQ_Dn2d.mjs} +124 -32
- package/dist/client/{form-BbWckVWY.mjs → form-B1frcuzy.mjs} +2 -2
- package/dist/client/{headerSection-C9qU4Y7x.mjs → headerSection-CT5z460s.mjs} +2 -2
- package/dist/client/hooks.mjs +274 -45
- package/dist/client/{locationMap-CLCShvlG.mjs → locationMap-CIQXB9i2.mjs} +2 -2
- package/dist/client/{newsletterForm-Briukxzi.mjs → newsletterForm-BYNYZSes.mjs} +23 -10
- package/dist/client/{pricing-Copadu-2.mjs → pricing-CbTlAsmt.mjs} +1 -1
- package/dist/client/{productDetail-oujlRd-r.mjs → productDetail-CR7Z3yjS.mjs} +3 -3
- package/dist/client/{productList-BRiIRUcd.mjs → productList-DXj00vzR.mjs} +3 -3
- package/dist/client/{propsDecoder-CB2KS_ko.mjs → propsDecoder-DiLiBdek.mjs} +57 -16
- package/dist/client/rendering/client.mjs +476 -132
- package/dist/client/rendering/islands.mjs +17 -17
- package/dist/client/rendering.mjs +686 -195
- package/dist/client/{scrollToBlock-B1IS1_ua.mjs → scrollToBlock-CrcbBf0h.mjs} +28 -11
- package/dist/client/{shop-Vn6yNFED.mjs → shop-DgqiB_1b.mjs} +6 -6
- package/dist/client/{shop-commerce-BVTqipYp.mjs → shop-commerce-D_J781in.mjs} +5 -5
- package/dist/client/{shop-commerce-store-BVnJVy7v.mjs → shop-commerce-store-PGUbDwqe.mjs} +1 -1
- package/dist/client/{shopShared-COIeK77T.mjs → shopShared-C_Bb2zwG.mjs} +3 -3
- package/dist/client/{useEventFilters-DzIUcS9n.mjs → useEventFilters-CM17Xpr1.mjs} +17 -11
- package/dist/preview-next/before-render.mjs +0 -37
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/editor-chrome.css +4 -8
- package/dist/preview-next/keepAlive.mjs +0 -37
- package/dist/preview-next/middleware.mjs +0 -37
- package/dist/{previewAuthStore-Gjb6r6vz.mjs → previewAuthStore-oVttoRDO.mjs} +0 -37
- package/dist/{sdk-runtime-CnCLvZRv.mjs → sdk-runtime-DhmuRhIX.mjs} +2 -2
- package/dist/{separator-DKDRJ1oH.mjs → separator-C3hlg9LH.mjs} +1 -1
- package/dist/server/components.mjs +452 -111
- package/dist/server/config-validation.mjs +263 -40
- package/dist/server/config.mjs +263 -40
- package/dist/server/data.mjs +274 -45
- package/dist/server/index.mjs +1 -38
- package/dist/server/next.mjs +427 -119
- package/dist/server/page-converter.mjs +208 -33
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +467 -119
- package/dist/server/rendering.mjs +467 -117
- package/dist/server/routing.mjs +301 -50
- package/dist/server/server.mjs +275 -83
- package/dist/server/theme-bridge.mjs +57 -23
- package/dist/server/theme.mjs +11 -9
- package/dist/styles/index.css +28 -2
- package/package.json +1 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { ColourFieldOptions } from './colourFieldVisibility';
|
|
3
|
+
/** Dashboard forms opt in; preview's visual editing controls retain their own policy. */
|
|
4
|
+
export declare function ColourFieldOptionsProvider({ children }: {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
}): import("react").JSX.Element;
|
|
7
|
+
export declare function useColourFieldOptions(): ColourFieldOptions | undefined;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { BlockManifest } from '../../../blocks/src/index';
|
|
2
|
+
export type ColourFieldOptions = Readonly<{
|
|
3
|
+
colour: boolean;
|
|
4
|
+
gradient: boolean;
|
|
5
|
+
}>;
|
|
6
|
+
/** Only changes form presentation; the validation manifest and saved data stay intact. */
|
|
7
|
+
export declare function hideUnavailableColourFields(manifest: BlockManifest, options: ColourFieldOptions): BlockManifest;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ColourFieldOptions } from './colourFieldVisibility';
|
|
1
2
|
import type { BlockManifest, StyleGroups } from '../../../blocks/src/index';
|
|
2
3
|
import type { SdkBlockFieldExtensionsMap, SdkBlockFieldOptionsMap } from '../../../block-form/src/index';
|
|
3
4
|
export type BlockEditorManifestVisibilityPolicy = Readonly<{
|
|
@@ -18,5 +19,6 @@ export declare function prepareBlockEditorManifest(input: Readonly<{
|
|
|
18
19
|
blockFieldOptions?: SdkBlockFieldOptionsMap | null;
|
|
19
20
|
blockFieldExtensions?: SdkBlockFieldExtensionsMap | null;
|
|
20
21
|
visibilityPolicy: BlockEditorManifestVisibilityPolicy;
|
|
22
|
+
colourFieldOptions?: ColourFieldOptions;
|
|
21
23
|
allowedPromotedFieldPaths?: readonly string[];
|
|
22
24
|
}>): PreparedBlockEditorManifest;
|
|
@@ -25,3 +25,4 @@ export { stripTopLevelRoutingUi } from './block-editor/settingsIntent';
|
|
|
25
25
|
export * from './widgets/index';
|
|
26
26
|
export { createBlockFormLogger, setBlockFormLoggerFactory, setBlockFormAppLogger, } from './block-form/debug';
|
|
27
27
|
export type { BlockFormLogger } from './block-form/debug';
|
|
28
|
+
export { ColourFieldOptionsProvider } from './block-editor/ColourFieldOptionsProvider';
|
|
@@ -12,6 +12,12 @@ export type SiteOptionLoadItems = (args: SiteOptionLoadItemsArgs) => Promise<Sit
|
|
|
12
12
|
export type SiteOptionLoadErrorMapper = (error: unknown, args: SiteOptionLoadItemsArgs) => unknown;
|
|
13
13
|
export type SiteOptionManageLinkRenderers = Partial<Readonly<Record<SiteOptionSource, SiteOptionWidgetAdapter['renderManageLink']>>>;
|
|
14
14
|
export declare const siteOptionWidgetLabels: {
|
|
15
|
+
readonly eventSeries: {
|
|
16
|
+
readonly loading: "Loading events...";
|
|
17
|
+
readonly select: "Choose events";
|
|
18
|
+
readonly empty: "No events available. Create an event in Bookings first.";
|
|
19
|
+
readonly emptySelection: "Choose at least one event to show in this block.";
|
|
20
|
+
};
|
|
15
21
|
readonly eventCategories: {
|
|
16
22
|
readonly loading: "Loading categories...";
|
|
17
23
|
readonly select: "Select categories";
|
|
@@ -32,14 +38,34 @@ export declare const siteOptionWidgetLabels: {
|
|
|
32
38
|
};
|
|
33
39
|
};
|
|
34
40
|
export declare const siteOptionLoadFailureMessages: {
|
|
41
|
+
readonly eventSeries: "We couldn't load your events. Please try again.";
|
|
35
42
|
readonly eventCategories: "Failed to load event categories";
|
|
36
43
|
readonly venues: "Failed to load venues";
|
|
37
44
|
readonly staffMembers: "Failed to load staff members";
|
|
38
45
|
};
|
|
39
46
|
export declare function mapEventCategoriesToSiteOptionItems(payload: ListEventCategoriesResponse): SiteOptionWidgetItem[];
|
|
47
|
+
export declare function mapEventsToSiteOptionItems(events: readonly Readonly<{
|
|
48
|
+
title: string;
|
|
49
|
+
slug: string;
|
|
50
|
+
schedules: {
|
|
51
|
+
kind: 'ordinary';
|
|
52
|
+
schedule: {
|
|
53
|
+
id: string;
|
|
54
|
+
};
|
|
55
|
+
} | {
|
|
56
|
+
kind: 'wholeSeries';
|
|
57
|
+
runs: readonly {
|
|
58
|
+
id: string;
|
|
59
|
+
title: string;
|
|
60
|
+
slug: string;
|
|
61
|
+
status?: string;
|
|
62
|
+
visibility?: string;
|
|
63
|
+
}[];
|
|
64
|
+
};
|
|
65
|
+
}>[]): SiteOptionWidgetItem[];
|
|
40
66
|
export declare function mapVenuesToSiteOptionItems(payload: ListVenuesResponse): SiteOptionWidgetItem[];
|
|
41
67
|
export declare function mapStaffMembersToSiteOptionItems(payload: ListAppointmentResourcesResponse): SiteOptionWidgetItem[];
|
|
42
|
-
export declare function loadSiteOptionItemsFromApi({ apiClient, siteId, source
|
|
68
|
+
export declare function loadSiteOptionItemsFromApi({ apiClient, siteId, source }: SiteOptionLoadItemsArgs & Readonly<{
|
|
43
69
|
apiClient: ApiClient;
|
|
44
70
|
}>): Promise<SiteOptionWidgetItem[]>;
|
|
45
71
|
export declare function createSiteOptionApiLoader(apiClient: ApiClient): SiteOptionLoadItems;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { type ReactNode } from 'react';
|
|
2
2
|
import type { ApiClient } from '../../../../api/src/request';
|
|
3
|
-
import type {
|
|
3
|
+
import type { SdkConfigForPreview } from './sdkConfig';
|
|
4
4
|
import type { SurfaceId } from '../../../../surfaces/src/index';
|
|
5
5
|
import type { EntrySubrouteContextData, BookingOfferingPresetSummary, Theme } from '../../../../blocks/src/index';
|
|
6
6
|
import { type ContentTypeSchema } from '../../../../content-model/src/index';
|
|
@@ -44,7 +44,7 @@ export type PreviewEditorSidebarProps = {
|
|
|
44
44
|
bearerToken?: string | null;
|
|
45
45
|
entrySubrouteContext?: EntrySubrouteContextData | null;
|
|
46
46
|
assistantPanel?: ReactNode;
|
|
47
|
-
sdkConfig?:
|
|
47
|
+
sdkConfig?: SdkConfigForPreview | null;
|
|
48
48
|
bookingOfferingPresets?: readonly BookingOfferingPresetSummary[] | null;
|
|
49
49
|
siteStyleAccess?: SiteStyleAccess;
|
|
50
50
|
activeTab: PreviewEditorSidebarTab;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
+
import { type FooterInspection } from './footerInspection';
|
|
1
2
|
import type { ApiClient } from '../../../../api/src/request';
|
|
2
3
|
import type { Theme } from '../../../../blocks/src/index';
|
|
3
|
-
import { type PreviewInspection } from '../../../../content-editor/src/index';
|
|
4
4
|
import type { SiteStyleAccess } from './siteStyleAccess';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}>>;
|
|
8
|
-
export declare function PreviewFooterEditorPanel({ apiClient, siteId, dashboardBaseUrl, theme, selectionId, selectionVersion, siteStyleAccess, inspection, canEdit, onSaved, }: Readonly<{
|
|
5
|
+
export declare function PreviewFooterEditorPanel({ sdkConfig, apiClient, siteId, dashboardBaseUrl, theme, selectionId, selectionVersion, siteStyleAccess, inspection, canEdit, onSaved, }: Readonly<{
|
|
6
|
+
sdkConfig?: unknown;
|
|
9
7
|
apiClient: ApiClient;
|
|
10
8
|
siteId: string;
|
|
11
9
|
dashboardBaseUrl: string | null;
|
|
@@ -17,4 +15,3 @@ export declare function PreviewFooterEditorPanel({ apiClient, siteId, dashboardB
|
|
|
17
15
|
canEdit: boolean;
|
|
18
16
|
onSaved?: () => void;
|
|
19
17
|
}>): import("react").JSX.Element;
|
|
20
|
-
export {};
|
|
@@ -4,7 +4,7 @@ import type { ButtonStyleSelection, ButtonStyleSelectionRepair } from '../../../
|
|
|
4
4
|
import type { FooterLookId, HeaderLayoutStyleSelection, HeaderLogoContext } from '../../../../theme-core/src/site-styles/index';
|
|
5
5
|
import type { EntrySubrouteContextData, BookingOfferingPresetSummary, MediaAssetIndexItem, Theme } from '../../../../blocks/src/index';
|
|
6
6
|
import type { ContentTypeSchema } from '../../../../content-model/src/index';
|
|
7
|
-
import type {
|
|
7
|
+
import type { SdkConfigForPreview } from './sdkConfig';
|
|
8
8
|
import type { SurfaceId } from '../../../../surfaces/src/index';
|
|
9
9
|
import { type PreviewBlock, type PreviewContentEntryData, type PreviewPageMetadata } from './PreviewEntryControllerProvider';
|
|
10
10
|
import { type PreviewRenderingMode, type PreviewThemeRuntime } from './themeRuntime';
|
|
@@ -70,7 +70,7 @@ type PreviewShellCommonProps = {
|
|
|
70
70
|
maintenanceModeEnabled: boolean;
|
|
71
71
|
entrySubrouteContext?: EntrySubrouteContextData | null;
|
|
72
72
|
assistantPanel?: PreviewEditorSidebarProps['assistantPanel'];
|
|
73
|
-
sdkConfig?:
|
|
73
|
+
sdkConfig?: SdkConfigForPreview | null;
|
|
74
74
|
mediaAssets?: readonly MediaAssetIndexItem[];
|
|
75
75
|
bookingOfferingPresets?: readonly BookingOfferingPresetSummary[] | null;
|
|
76
76
|
supabaseUrl?: string;
|
|
@@ -4,7 +4,7 @@ import type { ButtonStyleSelection, ButtonStyleSelectionRepair } from '../../../
|
|
|
4
4
|
import type { HeaderLogoContext, FooterLookId, HeaderLayoutStyleSelection } from '../../../../theme-core/src/site-styles/index';
|
|
5
5
|
import type { ContentTypeSchema } from '../../../../content-model/src/index';
|
|
6
6
|
import type { ApiClient } from '../../../../api/src/request';
|
|
7
|
-
import type {
|
|
7
|
+
import type { SdkConfigForPreview } from './sdkConfig';
|
|
8
8
|
import type { SurfaceId } from '../../../../surfaces/src/index';
|
|
9
9
|
import { type PreviewEntryData, type PreviewTemplateData } from './PreviewEditorSidebar';
|
|
10
10
|
import { type SiteStyleAccess } from './siteStyleAccess';
|
|
@@ -36,7 +36,7 @@ type PreviewShellLayoutCommonProps = {
|
|
|
36
36
|
maintenanceModeEnabled: boolean;
|
|
37
37
|
entrySubrouteContext?: EntrySubrouteContextData | null;
|
|
38
38
|
assistantPanel?: ReactNode;
|
|
39
|
-
sdkConfig?:
|
|
39
|
+
sdkConfig?: SdkConfigForPreview | null;
|
|
40
40
|
bookingOfferingPresets?: readonly BookingOfferingPresetSummary[] | null;
|
|
41
41
|
siteStyleAccess?: SiteStyleAccess;
|
|
42
42
|
onFooterSaved?: () => void;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { PreviewInspection } from '../../../../content-editor/src/index';
|
|
2
|
+
export type FooterInspection = Extract<PreviewInspection, {
|
|
3
|
+
kind: 'footer' | 'footer-module';
|
|
4
|
+
}>;
|
|
5
|
+
/** Shared by sidebar routing and the footer panel's initial editing target. */
|
|
6
|
+
export declare function resolveFooterInspection(inspection: PreviewInspection | null): FooterInspection | null;
|
|
7
|
+
export declare function footerComposerInspectionProps(inspection: FooterInspection | null): {
|
|
8
|
+
initialTarget: {
|
|
9
|
+
kind: "module";
|
|
10
|
+
moduleId: import("../../../../core/src/index").FooterModuleId;
|
|
11
|
+
} | {
|
|
12
|
+
kind: "overview";
|
|
13
|
+
moduleId?: undefined;
|
|
14
|
+
};
|
|
15
|
+
initialTargetRequestId: number | undefined;
|
|
16
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SdkSiteLayoutConfig } from '../../../../api/src/index';
|
|
2
|
+
import type { SdkConfigForBlockPicker } from '../../../../editor-blocks/src/index';
|
|
3
|
+
/** SDK config fields consumed by preview editing, beyond the block picker. */
|
|
4
|
+
export type SdkConfigForPreview = SdkConfigForBlockPicker & {
|
|
5
|
+
layout?: Pick<SdkSiteLayoutConfig, 'footerMode'>;
|
|
6
|
+
};
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* These types define the schema for SDK site configuration that can be
|
|
5
5
|
* declared in code and consumed by tooling.
|
|
6
6
|
*/
|
|
7
|
+
import type { SdkSiteLayoutConfig } from '../../../api/src/index';
|
|
7
8
|
import type { ContentConfig } from './content-types';
|
|
8
9
|
import type { FieldDefinition } from './field-definitions';
|
|
9
10
|
import type { NodeDefinition } from '../contracts';
|
|
@@ -383,24 +384,7 @@ export interface RiverbankSiteConfig {
|
|
|
383
384
|
* These blocks are SDK-managed (source controlled) and synced to the CMS via
|
|
384
385
|
* `riverbankcms push-config`.
|
|
385
386
|
*/
|
|
386
|
-
layout?:
|
|
387
|
-
/**
|
|
388
|
-
* Global footer blocks list (applies to all pages).
|
|
389
|
-
*
|
|
390
|
-
* These are block instances, not persisted CMS page blocks.
|
|
391
|
-
*/
|
|
392
|
-
footerBlocks?: Array<{
|
|
393
|
-
/**
|
|
394
|
-
* Optional stable identifier for list rendering.
|
|
395
|
-
* Not a CMS block UUID.
|
|
396
|
-
*/
|
|
397
|
-
id?: string;
|
|
398
|
-
/** Block kind (system: block.* or custom: custom.*) */
|
|
399
|
-
kind: string;
|
|
400
|
-
/** Static content payload for the block */
|
|
401
|
-
content?: Record<string, unknown>;
|
|
402
|
-
}>;
|
|
403
|
-
};
|
|
387
|
+
layout?: SdkSiteLayoutConfig;
|
|
404
388
|
/**
|
|
405
389
|
* Custom blocks defined by the SDK site.
|
|
406
390
|
* These blocks appear in the block picker and are edited via CMS forms.
|
|
@@ -456,6 +456,12 @@ export declare const themeSourceSchema: z.ZodOptional<z.ZodEnum<{
|
|
|
456
456
|
*/
|
|
457
457
|
export declare const activeThemeSchema: z.ZodOptional<z.ZodString>;
|
|
458
458
|
export declare const layoutConfigSchema: z.ZodObject<{
|
|
459
|
+
footerMode: z.ZodOptional<z.ZodEnum<{
|
|
460
|
+
none: "none";
|
|
461
|
+
default: "default";
|
|
462
|
+
blocks: "blocks";
|
|
463
|
+
"default+blocks": "default+blocks";
|
|
464
|
+
}>>;
|
|
459
465
|
footerBlocks: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
460
466
|
id: z.ZodOptional<z.ZodString>;
|
|
461
467
|
kind: z.ZodString;
|
|
@@ -8,6 +8,9 @@ import type { PublicTeamMemberBlockItem } from './teamMemberContracts';
|
|
|
8
8
|
import type { ResolveEventSubrouteResponse } from './eventSubrouteContracts';
|
|
9
9
|
export type { PublicTeamMemberBlockItem, PublicTeamMemberPhoto, PublicTeamMemberSummary, } from './teamMemberContracts';
|
|
10
10
|
export type RuntimeSiteSdkConfig = {
|
|
11
|
+
layout?: {
|
|
12
|
+
footerMode?: import('../../../theme-core/src/footer/mode').FooterMode;
|
|
13
|
+
};
|
|
11
14
|
theme?: SdkThemeConfig;
|
|
12
15
|
customBlocks?: SdkCustomBlock[];
|
|
13
16
|
};
|
|
@@ -286,7 +289,7 @@ export type SiteRouteRecord = {
|
|
|
286
289
|
publishedAt?: string | null;
|
|
287
290
|
};
|
|
288
291
|
export type SiteBookingOfferingPresetSummary = ApiSiteBookingOfferingPresetSummary;
|
|
289
|
-
type SiteSelectionResponse = Pick<ApiSiteBySlugResponse, 'theme' | 'themeId' | 'bookingAttribution' | Extract<keyof ApiSiteBySlugResponse, `selection${string}`>>;
|
|
292
|
+
type SiteSelectionResponse = Pick<ApiSiteBySlugResponse, 'theme' | 'hostedBookingAppearance' | 'themeId' | 'bookingAttribution' | Extract<keyof ApiSiteBySlugResponse, `selection${string}`>>;
|
|
290
293
|
export type SiteResponse = SiteSelectionResponse & {
|
|
291
294
|
site: ApiSiteBySlugResponse['site'] & {
|
|
292
295
|
id: string;
|
|
@@ -1,8 +1,24 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import type { Theme, Typography } from "./schema";
|
|
3
3
|
import type { SiteFont } from "./fonts/types";
|
|
4
|
+
/**
|
|
5
|
+
* Collect unique font families from typography config
|
|
6
|
+
*/
|
|
7
|
+
type FontLoadingStyle = Readonly<{
|
|
8
|
+
family: string;
|
|
9
|
+
weight?: Typography['body']['weight'] | number;
|
|
10
|
+
}>;
|
|
11
|
+
type FontLoadingWeight = Readonly<{
|
|
12
|
+
weight?: Typography['body']['weight'] | number | null;
|
|
13
|
+
}>;
|
|
14
|
+
type FontLoadingTypography = Readonly<{
|
|
15
|
+
body: FontLoadingStyle;
|
|
16
|
+
headings: Readonly<{
|
|
17
|
+
default: FontLoadingStyle;
|
|
18
|
+
}> & Partial<Record<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6', FontLoadingWeight>>;
|
|
19
|
+
}>;
|
|
4
20
|
type ThemeFontLoaderProps = {
|
|
5
|
-
typography:
|
|
21
|
+
typography: FontLoadingTypography;
|
|
6
22
|
/** Optional button font weight from theme.buttons.global.fontWeight */
|
|
7
23
|
buttonFontWeight?: number;
|
|
8
24
|
/** Optional extra weights to load for the body font (useful for UI labels, etc.) */
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal: the opt-out the generated affordance rule is written against.
|
|
3
|
+
*
|
|
4
|
+
* A button style may declare a trailing `affordance`, which the theme renders as
|
|
5
|
+
* a CSS `::after` on every button of that variant. An authored button that
|
|
6
|
+
* renders its own trailing icon must not also receive the theme's, or it shows
|
|
7
|
+
* two.
|
|
8
|
+
*
|
|
9
|
+
* Deliberately not exported from `./index`. This used to be public, and two
|
|
10
|
+
* block components reached past the theme to draw arrows of their own — one of
|
|
11
|
+
* them doubling up on the styles that declare an affordance, both of them
|
|
12
|
+
* overriding the twelve styles that deliberately declare none. Whether a button
|
|
13
|
+
* carries a trailing affordance is the style's decision; the only caller that
|
|
14
|
+
* legitimately opts out is the authored-button renderer, which reaches it
|
|
15
|
+
* through `themeButtonClassNameWithTrailingIcon`.
|
|
16
|
+
*/
|
|
17
|
+
export declare const AFFORDANCE_SUPPRESS_CLASS = "rb-affordance-off";
|
|
@@ -16,7 +16,7 @@ export declare const BUTTON_CONTRAST_POLICY: {
|
|
|
16
16
|
readonly nonTextMinimumRatio: 3;
|
|
17
17
|
readonly gradientSamplesPerSegment: 20;
|
|
18
18
|
readonly alphaBackgrounds: "reject-without-known-surface";
|
|
19
|
-
readonly disabled: "
|
|
19
|
+
readonly disabled: "validated-colour-pair-with-muted-control-opacity";
|
|
20
20
|
};
|
|
21
21
|
export type ButtonColourContractError = Readonly<{
|
|
22
22
|
tag: 'unknown_palette_token';
|
|
@@ -19,3 +19,19 @@ export declare function themeButtonVariantClassNames(variant: ThemeButtonVariant
|
|
|
19
19
|
export declare function themeButtonSizeClassName(size: ButtonSizeName): ThemeButtonSizeClassName;
|
|
20
20
|
export declare function themeButtonSelector(variant: ThemeButtonVariantId, size?: ButtonSizeName): string;
|
|
21
21
|
export declare function themeButtonClassName(spec: ThemeButtonClassSpec): ThemeButtonClassName;
|
|
22
|
+
/**
|
|
23
|
+
* Button classes for an authored button that renders its own trailing icon.
|
|
24
|
+
*
|
|
25
|
+
* A separate function rather than a flag on `themeButtonClassName`, because
|
|
26
|
+
* there is exactly one caller and it should stay visible in a diff. The name
|
|
27
|
+
* states what the caller knows to be true of its own markup — that it renders a
|
|
28
|
+
* trailing icon — rather than what the theme does about it. The consequence is
|
|
29
|
+
* the theme's to decide and to change; a caller naming the consequence would be
|
|
30
|
+
* asserting a policy it does not own, and would quietly become a lie the moment
|
|
31
|
+
* that policy moved.
|
|
32
|
+
*
|
|
33
|
+
* Do not reach for this to remove an arrow you simply do not want. A trailing
|
|
34
|
+
* affordance is declared by the button style, and a block overriding that is the
|
|
35
|
+
* defect this replaced.
|
|
36
|
+
*/
|
|
37
|
+
export declare function themeButtonClassNameWithTrailingIcon(spec: ThemeButtonClassSpec): ThemeButtonClassName;
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import type { Theme } from '../schema';
|
|
2
2
|
import type { ButtonSystem } from './types';
|
|
3
|
-
/**
|
|
4
|
-
* Class the `button` runtime node adds when it renders its own trailing icon,
|
|
5
|
-
* so a node-level icon suppresses the theme's CSS `::after` affordance.
|
|
6
|
-
* Shared so generator and renderer can't drift.
|
|
7
|
-
*/
|
|
8
|
-
export declare const AFFORDANCE_SUPPRESS_CLASS = "rb-affordance-off";
|
|
9
3
|
export interface GenerateButtonCssOptions {
|
|
10
4
|
themeId: string;
|
|
11
5
|
theme: Theme;
|
|
@@ -11,9 +11,9 @@ export declare function resolvedButtonColourDeclarations(colour: ResolvedButtonC
|
|
|
11
11
|
}>): readonly ButtonCssDeclaration[];
|
|
12
12
|
export declare function resolvedButtonFocusDeclarations(indicator: ResolvedButtonFocusIndicator, role?: string): readonly ButtonCssDeclaration[];
|
|
13
13
|
/**
|
|
14
|
-
* Disabled buttons
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* remain observable.
|
|
14
|
+
* Disabled buttons are deliberately muted as unavailable controls. Native
|
|
15
|
+
* disabled controls are exempt from active-control contrast requirements;
|
|
16
|
+
* opacity distinguishes the state without introducing a focus-like outline.
|
|
17
|
+
* Retaining pointer events lets the not-allowed cursor remain observable.
|
|
18
18
|
*/
|
|
19
19
|
export declare const RESOLVED_BUTTON_DISABLED_DECLARATIONS: readonly ButtonCssDeclaration[];
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const footerModeSchema: z.ZodEnum<{
|
|
3
|
+
none: "none";
|
|
4
|
+
default: "default";
|
|
5
|
+
blocks: "blocks";
|
|
6
|
+
"default+blocks": "default+blocks";
|
|
7
|
+
}>;
|
|
8
|
+
export type FooterMode = z.infer<typeof footerModeSchema>;
|
|
9
|
+
/** Reads only SDK footer intent; unrelated config and theme fields are not authorities. */
|
|
10
|
+
export declare function resolveSdkFooterMode(config: unknown): FooterMode;
|
|
2
11
|
export type FooterBrandVisibility = Readonly<{
|
|
3
12
|
showLogo: boolean;
|
|
4
13
|
showTitle: boolean;
|