@riverbankcms/sdk 0.96.0 → 0.99.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/README.md +20 -1
- package/dist/{PreviewEditorSidebar-46VT4QVU.mjs → PreviewEditorSidebar-TPOKCCKY.mjs} +3 -3
- package/dist/{PreviewEditorUI-JD75GE5F.mjs → PreviewEditorUI-Y347GLC2.mjs} +3 -3
- package/dist/SdkPreviewModeRuntime-OGTXRQ4M.mjs +8 -0
- package/dist/_dts/ai/src/contracts/proposals.d.ts +36 -36
- package/dist/_dts/api/src/billing.d.ts +2 -0
- package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +35 -1
- package/dist/_dts/api/src/bookingOperations.d.ts +246 -0
- package/dist/_dts/api/src/commercePortalEndpoints.d.ts +5 -1
- package/dist/_dts/api/src/contentRuntime.d.ts +109 -40
- package/dist/_dts/api/src/endpoints.d.ts +88 -0
- package/dist/_dts/api/src/index.d.ts +3 -2
- package/dist/_dts/api/src/public/endpoints.d.ts +1 -1
- package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +10 -0
- package/dist/_dts/api/src/sdkContracts.d.ts +2 -0
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +2 -1
- package/dist/_dts/api/src/siteOperations.d.ts +65 -1
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +7 -1
- package/dist/_dts/billing/src/site-arrangements.d.ts +151 -0
- package/dist/_dts/billing/src/subscriptions/store.d.ts +2 -0
- package/dist/_dts/block-form/src/widgets/RepeaterField/utils/resolveThumbnail.d.ts +2 -1
- package/dist/_dts/blocks/src/PageRenderer.d.ts +8 -1
- package/dist/_dts/blocks/src/bindings/types.d.ts +0 -4
- package/dist/_dts/blocks/src/client/site-chrome.d.ts +7 -0
- package/dist/_dts/blocks/src/contracts/index.d.ts +1 -0
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +12 -12
- package/dist/_dts/blocks/src/primitives/content/primitives.d.ts +4 -0
- package/dist/_dts/blocks/src/system/blocks/events/shared/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/blocks/events/shared/layout.d.ts +2 -0
- package/dist/_dts/blocks/src/system/blocks/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/blocks/weekly-slot-availability.d.ts +34 -0
- package/dist/_dts/blocks/src/system/componentFactory.d.ts +1 -0
- package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
- package/dist/_dts/blocks/src/system/customize/facets.d.ts +2 -2
- package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
- package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +4 -1
- package/dist/_dts/blocks/src/system/node/builder.d.ts +2 -0
- package/dist/_dts/blocks/src/system/node/schema.d.ts +13 -0
- package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
- package/dist/_dts/blocks/src/system/registry.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +24 -0
- package/dist/_dts/blocks/src/system/runtime/components/booking/DatePicker.d.ts +6 -2
- package/dist/_dts/blocks/src/system/runtime/components/booking/SuccessMessage.d.ts +3 -1
- package/dist/_dts/blocks/src/system/runtime/components/booking/TimeSlotSelector.d.ts +10 -4
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useAppointmentCheckoutVerification.d.ts +7 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableSlots.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/usePaymentVerification.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +11 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/StepIndicator.d.ts +3 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +14 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +8 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +133 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.client.controller.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.client.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.client.state.d.ts +14 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.server.d.ts +10 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.view.d.ts +11 -0
- package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +31 -1
- package/dist/_dts/blocks/src/system/runtime/shared/components/FeedbackMessage.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/{nodes/event-registration → shared/components}/SelectableOptionCard.d.ts +11 -2
- package/dist/_dts/blocks/src/system/runtime/shared/components/StepIndicator.d.ts +16 -5
- package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.d.ts +5 -0
- package/dist/_dts/blocks/src/utils/date-formatting.d.ts +18 -2
- package/dist/_dts/content-editor/src/primitives/PreviewInlineTextEditor.d.ts +1 -1
- package/dist/_dts/content-editor/src/primitives/PreviewRichTextEditor.d.ts +1 -1
- package/dist/_dts/content-model/src/templates/defaults.d.ts +5 -5
- package/dist/_dts/content-model/src/templates/types.d.ts +2 -6
- package/dist/_dts/core/src/branded.d.ts +8 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +767 -20
- package/dist/_dts/field-primitives/src/bindings/index.d.ts +8 -0
- package/dist/_dts/sdk/src/__mocks__/next-cache.d.ts +1 -1
- package/dist/_dts/sdk/src/cli/commands/push/publishGuidance.d.ts +15 -0
- package/dist/_dts/sdk/src/cli/commands/push/scopes/commandBackedDatedOfferingScope.d.ts +2 -1
- package/dist/_dts/sdk/src/cli/commands/push/scopes/types.d.ts +3 -1
- package/dist/_dts/sdk/src/cli/commands/push/stale-resolution.d.ts +9 -3
- package/dist/_dts/sdk/src/cli/commands/push/workflowPlan.d.ts +34 -0
- package/dist/_dts/sdk/src/cli/commands/push.d.ts +13 -0
- package/dist/_dts/sdk/src/cli/commands/setup.d.ts +2 -0
- package/dist/_dts/sdk/src/cli/config-loader.d.ts +2 -0
- package/dist/_dts/sdk/src/cli/content/metadataStore.d.ts +29 -0
- package/dist/_dts/sdk/src/cli/content/reader.d.ts +16 -14
- package/dist/_dts/sdk/src/cli/content/writer.d.ts +6 -4
- package/dist/_dts/sdk/src/cli/env-scope.d.ts +2 -0
- package/dist/_dts/sdk/src/cli/helpers.d.ts +6 -7
- package/dist/_dts/sdk/src/cli/merge-remote/entryMergePush.d.ts +2 -0
- package/dist/_dts/sdk/src/cli/merge-remote/entryMergeReport.d.ts +6 -18
- package/dist/_dts/sdk/src/cli/merge-remote/entrySnapshots.d.ts +2 -4
- package/dist/_dts/sdk/src/cli/merge-remote/pageMergePush.d.ts +2 -0
- package/dist/_dts/sdk/src/cli/merge-remote/pageMergeReport.d.ts +6 -18
- package/dist/_dts/sdk/src/cli/merge-remote/pageSnapshots.d.ts +2 -4
- package/dist/_dts/sdk/src/cli/merge-remote/sharedBaseSnapshots.d.ts +32 -0
- package/dist/_dts/sdk/src/cli/merge-remote/sharedMergePlan.d.ts +27 -0
- package/dist/_dts/sdk/src/cli/merge-remote/sharedMergeReport.d.ts +63 -0
- package/dist/_dts/sdk/src/cli/push-config.d.ts +13 -2
- package/dist/_dts/sdk/src/cli/setup/setupPlan.d.ts +51 -0
- package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +21 -0
- package/dist/_dts/sdk/src/client/index.d.ts +6 -0
- package/dist/_dts/sdk/src/client/runtimeCachePolicy.d.ts +1 -1
- package/dist/_dts/sdk/src/client/types.d.ts +18 -2
- package/dist/_dts/sdk/src/config/types.d.ts +1 -1
- package/dist/_dts/sdk/src/config/validation.d.ts +3 -0
- package/dist/_dts/sdk/src/contracts/bindings.d.ts +3 -7
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +13 -0
- package/dist/_dts/sdk/src/data/prefetchBlockData.d.ts +6 -1
- package/dist/_dts/sdk/src/next/route-outcome-proxy.d.ts +3 -3
- package/dist/_dts/sdk/src/next/types.d.ts +19 -0
- package/dist/_dts/sdk/src/prebuild/loader.d.ts +8 -1
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +174 -78
- package/dist/_dts/sdk/src/public-api/runtime.d.ts +1 -1
- package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -0
- package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +4 -0
- package/dist/_dts/sdk/src/rendering/helpers/bindings.d.ts +4 -4
- package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +58 -1
- package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +8 -0
- package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +2 -2
- package/dist/_dts/sdk/src/rendering/index.d.ts +7 -7
- package/dist/_dts/sdk/src/rendering/islands/types.d.ts +18 -66
- package/dist/_dts/sdk/src/rendering/overrides.d.ts +2 -0
- package/dist/_dts/sdk/src/routing/resolveRoute.d.ts +18 -0
- package/dist/_dts/sdk/src/test/apiClient.d.ts +17 -0
- package/dist/_dts/sdk/src/test/bunDom.setup.d.ts +1 -0
- package/dist/_dts/sdk/src/test/env.d.ts +4 -0
- package/dist/_dts/sdk/src/types/block-kinds.d.ts +1 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/site-commands/src/commands.d.ts +3 -3
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/interactive/generateBaseCSS.d.ts +6 -0
- package/dist/_dts/theme-core/src/status/contextualColors.d.ts +6 -0
- package/dist/_dts/theme-core/src/status/index.d.ts +1 -0
- package/dist/{chunk-VHIMXQ7Z.mjs → chunk-4HXF2QLH.mjs} +2 -2
- package/dist/{chunk-VTPPVAOL.mjs → chunk-EMJIT3ZJ.mjs} +1 -1
- package/dist/{chunk-4TLTV7OB.mjs → chunk-PM7HGDHM.mjs} +2 -2
- package/dist/{chunk-XMATDBXO.mjs → chunk-XO34WBBP.mjs} +2139 -1348
- package/dist/{chunk-EL55VV6Q.mjs → chunk-YGTTEVUM.mjs} +31 -10
- package/dist/{chunk-7ED5UNHL.mjs → chunk-YWTCCOSF.mjs} +117 -0
- package/dist/cli/index.mjs +2690 -1503
- package/dist/cli/init-docs/content/cli-reference.md +29 -1
- package/dist/cli/init-docs/content/getting-started.md +8 -0
- package/dist/cli/init-docs/content/workflow-agent-safe-sync.md +3 -1
- package/dist/cli/init-docs/content/workflow-preview-mode.md +6 -0
- package/dist/cli/init-docs/content/workflow-remote-setup.md +51 -0
- package/dist/client/{accordion-GUNXIIZR.mjs → accordion-QSUEYL4L.mjs} +2 -2
- package/dist/client/{bookingForm-AOU4VHP5.mjs → bookingForm-QYGAHPDP.mjs} +376 -302
- package/dist/client/bookings.mjs +795 -429
- package/dist/client/{carousel-4QSX2JPC.mjs → carousel-SM2LEWAU.mjs} +3 -3
- package/dist/client/{cart-JKN6C4ZB.mjs → cart-3N3SFKNQ.mjs} +7 -7
- package/dist/client/{checkout-YY6YMITW.mjs → checkout-YFAYPKPZ.mjs} +7 -7
- package/dist/client/{chunk-SY543WZ3.mjs → chunk-5DLGREUB.mjs} +1 -1
- package/dist/client/{chunk-A3YN7M3G.mjs → chunk-CLZ7NBSP.mjs} +147 -75
- package/dist/client/{chunk-GWCRCJLB.mjs → chunk-CYJ3MUFP.mjs} +18 -6
- package/dist/client/{chunk-JNE6UI6U.mjs → chunk-H3H3ODO7.mjs} +1 -1
- package/dist/client/{chunk-CPKMJVBD.mjs → chunk-HPEQ4YWW.mjs} +83 -109
- package/dist/client/{chunk-PCHACQEB.mjs → chunk-IIUIKJ4K.mjs} +15 -7
- package/dist/client/{chunk-TNGL2WJF.mjs → chunk-IOAHWAQG.mjs} +18 -0
- package/dist/client/{chunk-6H27K6AA.mjs → chunk-JTKBF3W2.mjs} +10 -4
- package/dist/client/{chunk-OLAOAZEO.mjs → chunk-K7KTSACR.mjs} +1 -1
- package/dist/client/{chunk-BFCJZODD.mjs → chunk-R32M5HFS.mjs} +6 -6
- package/dist/client/{chunk-VJROUYOQ.mjs → chunk-WEVT46PX.mjs} +3 -3
- package/dist/client/{chunk-H7A6PUGM.mjs → chunk-ZU65LTI3.mjs} +1 -1
- package/dist/client/client.mjs +5052 -4083
- package/dist/client/{courseRegistration-UU2KMPSQ.mjs → courseRegistration-LYBE7VVK.mjs} +7 -7
- package/dist/client/{eventCalendar-WIVNS2TM.mjs → eventCalendar-FMTB75X6.mjs} +9 -9
- package/dist/client/{eventCombined-P3G5MW4J.mjs → eventCombined-E4LUCJXT.mjs} +9 -9
- package/dist/client/{eventDetails-2VHJ2RDG.mjs → eventDetails-GELSRR4Z.mjs} +9 -9
- package/dist/client/{eventListing-TGO6JI3R.mjs → eventListing-TB623B6R.mjs} +9 -9
- package/dist/client/{eventRegistration-B46HEJES.mjs → eventRegistration-NRIKHXTI.mjs} +9 -9
- package/dist/client/{form-VKRTFUNQ.mjs → form-Y4U4IAXE.mjs} +3 -3
- package/dist/client/{headerSection-XUX4ZJLO.mjs → headerSection-QSOVV5P7.mjs} +3 -3
- package/dist/client/hooks.mjs +1776 -1355
- package/dist/client/{locationMap-NQFI5MJO.mjs → locationMap-QYCAHH7H.mjs} +3 -3
- package/dist/client/{newsletterForm-P2GETCQK.mjs → newsletterForm-NWHY5TBY.mjs} +3 -3
- package/dist/client/{productDetail-7NQ7O5IF.mjs → productDetail-FYDMU2CE.mjs} +7 -7
- package/dist/client/{productList-RX6ZJ7BL.mjs → productList-D76CGACQ.mjs} +7 -7
- package/dist/client/rendering/client.mjs +2990 -2470
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +3236 -2236
- package/dist/client/{shop-BHN5AKY6.mjs → shop-SOUACT5N.mjs} +7 -7
- package/dist/preview-next/before-render.mjs +117 -0
- package/dist/preview-next/client/runtime.mjs +5 -5
- package/dist/preview-next/middleware.mjs +117 -0
- package/dist/{sdk-runtime-X2LXQ5IC.mjs → sdk-runtime-XPVE3LBA.mjs} +6 -6
- package/dist/server/components.mjs +3115 -2484
- package/dist/server/config-template-validation.mjs +6 -2
- package/dist/server/config-validation.mjs +1961 -1580
- package/dist/server/config.mjs +1961 -1580
- package/dist/server/data.mjs +1762 -1352
- package/dist/server/index.mjs +266 -33
- package/dist/server/next/middleware.mjs +2 -2
- package/dist/server/next.mjs +3399 -2504
- package/dist/server/page-converter.mjs +1553 -1295
- package/dist/server/prebuild-loader.mjs +42 -23
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +3151 -2489
- package/dist/server/rendering.mjs +3363 -2555
- package/dist/server/routing.mjs +1877 -1388
- package/dist/server/server.mjs +2057 -1402
- package/dist/server/theme-bridge.mjs +597 -505
- package/dist/server/theme.mjs +5 -4
- package/dist/styles/index.css +499 -490
- package/package.json +6 -4
- package/dist/SdkPreviewModeRuntime-MJUSYUFB.mjs +0 -8
|
@@ -50,6 +50,8 @@ type PageRendererDataContext = {
|
|
|
50
50
|
occurrenceContext?: OccurrenceContextData | null;
|
|
51
51
|
entrySubrouteContext?: EntrySubrouteContextData | null;
|
|
52
52
|
contentEntry?: Record<string, unknown> | null;
|
|
53
|
+
pageSurface?: Record<string, unknown> | null;
|
|
54
|
+
subject?: unknown;
|
|
53
55
|
editableRouteMetadataFieldIds?: ReadonlyArray<string> | null;
|
|
54
56
|
supabaseUrl?: string;
|
|
55
57
|
mediaAssets?: readonly MediaAssetIndexItem[];
|
|
@@ -104,6 +106,10 @@ export type BlockOverrideProps<TContent = Record<string, unknown>> = {
|
|
|
104
106
|
entrySubrouteContext?: EntrySubrouteContextData | null;
|
|
105
107
|
/** Content entry context for template-aware block overrides. */
|
|
106
108
|
contentEntry?: Record<string, unknown> | null;
|
|
109
|
+
/** Native page-surface context for template-aware block overrides. */
|
|
110
|
+
pageSurface?: Record<string, unknown> | null;
|
|
111
|
+
/** Subject descriptor for native page-surface block overrides. */
|
|
112
|
+
subject?: unknown;
|
|
107
113
|
/** Supabase project URL (useful for media URL resolution in override components) */
|
|
108
114
|
supabaseUrl?: string;
|
|
109
115
|
/** Full image-resolution context including canonical media sidecars. */
|
|
@@ -172,6 +178,7 @@ interface PageRendererProps {
|
|
|
172
178
|
blockOverrides?: BlockOverrides;
|
|
173
179
|
sdkConfig?: SdkConfigForRenderer | null;
|
|
174
180
|
customBlocks?: SdkCustomBlock[];
|
|
181
|
+
previewAuthoring?: ResolverContext['previewAuthoring'];
|
|
175
182
|
}
|
|
176
|
-
export default function PageRenderer({ theme, page, usePlaceholders, dataContext, wrapBlock, registry, themeTokens: providedThemeTokens, routeMap, blockOverrides, sdkConfig, customBlocks, }: PageRendererProps): React.JSX.Element;
|
|
183
|
+
export default function PageRenderer({ theme, page, usePlaceholders, dataContext, wrapBlock, registry, themeTokens: providedThemeTokens, routeMap, blockOverrides, sdkConfig, customBlocks, previewAuthoring, }: PageRendererProps): React.JSX.Element;
|
|
177
184
|
export {};
|
|
@@ -49,10 +49,6 @@ export type BindingContext<TFields extends Record<string, unknown> = Record<stri
|
|
|
49
49
|
};
|
|
50
50
|
/**
|
|
51
51
|
* Available transform function names.
|
|
52
|
-
*
|
|
53
|
-
* Keep in sync with:
|
|
54
|
-
* - @riverbankcms/sdk `BINDING_TRANSFORMS`
|
|
55
|
-
* - @riverbankcms/content-model `TEMPLATE_BINDING_TRANSFORMS`
|
|
56
52
|
*/
|
|
57
53
|
export declare const TRANSFORMS: {
|
|
58
54
|
readonly RICHTEXT_FIRST_PARAGRAPH: "richtext.firstParagraph";
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
|
+
import { buildThemeRuntime as buildThemeRuntimeImpl } from '../../../theme-core/src/runtime/buildThemeRuntime';
|
|
2
3
|
import type { Theme } from '../../../theme-core/src/schema';
|
|
4
|
+
import { renderBlock as renderBlockImpl } from '../system/componentFactory';
|
|
3
5
|
export type SiteChromeThemeConfigOverride = Readonly<{
|
|
4
6
|
header?: Partial<NonNullable<Theme['header']>>;
|
|
5
7
|
footer?: Partial<NonNullable<Theme['footer']>>;
|
|
@@ -16,6 +18,11 @@ export type SiteChromeRenderModel = Readonly<{
|
|
|
16
18
|
}>;
|
|
17
19
|
export type SiteChromeBlockRenderOptions = Readonly<{
|
|
18
20
|
themeConfigOverrideMode?: 'apply' | 'ignore';
|
|
21
|
+
deps?: SiteChromeBlockRenderDeps;
|
|
22
|
+
}>;
|
|
23
|
+
export type SiteChromeBlockRenderDeps = Readonly<{
|
|
24
|
+
buildThemeRuntime: typeof buildThemeRuntimeImpl;
|
|
25
|
+
renderBlock: typeof renderBlockImpl;
|
|
19
26
|
}>;
|
|
20
27
|
export declare function renderSiteChromeBlock(model: SiteChromeRenderModel, surface: 'header' | 'footer', theme: Theme, options?: SiteChromeBlockRenderOptions): ReactNode;
|
|
21
28
|
export declare function SiteChromeBlockRenderer({ model, surface, theme, }: {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export type { AnyBlockRuntimeDefinition, BlockRenderKind, BlockRuntimeDefinition, ClientOwnedBlockRuntime, Codec, DecodeIssue, DecodeResult, InteractiveBlockRenderKind, InteractiveBlockRuntime, InteractiveRuntimeContracts, ProgressiveBlockRender, ProgressiveBlockRuntime, RuntimeContractsFor, RuntimeDisplay, RuntimeHydration, RuntimeKind, RuntimeRender, RuntimeSource, StaticBlockRuntime, StaticRuntimeContracts, } from './runtime';
|
|
2
2
|
export type { InteractiveIslandProps } from './islands';
|
|
3
|
+
export type { PublicEvent } from '../system/blocks/events/shared/types';
|
|
3
4
|
export type { AccordionIslandProps, CarouselIslandProps, EventDetailsContentEntry, EventDetailsIslandProps, EventDetailsOccurrenceContext, HeaderSectionIslandProps, LocationMapIslandProps, } from './non-block-islands';
|
|
4
5
|
export type { BookingFormConfig, BookingFormDisplay, BookingFormHydration, BookingFormInteractiveIslandProps, BookingFormService, CourseRegistrationDisplay, CourseRegistrationHydration, CourseRegistrationInteractiveIslandProps, CartDisplay, CartHydration, CartInteractiveIslandProps, CartLineDisplay, CheckoutDisplay, CheckoutHydration, CheckoutInteractiveIslandProps, EventCalendarDisplay, EventCalendarHydration, EventCalendarInteractiveIslandProps, EventCombinedDisplay, EventCombinedHydration, EventCombinedInteractiveIslandProps, EventRegistrationDisplay, EventRegistrationHydration, EventRegistrationInteractiveIslandProps, EventListingDisplay, EventListingHydration, EventListingInteractiveIslandProps, FormDisplay, FormHydration, FormInteractiveIslandProps, MembershipCardDisplay, NewsletterFormDisplay, NewsletterFormHydration, NewsletterFormInteractiveIslandProps, PassCardDisplay, PassesMembershipsDisplay, PassesMembershipsHydration, ProductCardDisplay, ProductDetailDisplay, ProductDetailInteractiveIslandProps, ProductDetailHydration, ProductListDisplay, ProductListInteractiveIslandProps, ProductListHydration, ProductVariantOptionDisplay, ShopInteractiveIslandProps, } from './proof-block-islands';
|
|
5
6
|
export { accordionIslandPropsCodec, carouselIslandPropsCodec, eventDetailsIslandPropsCodec, headerSectionIslandPropsCodec, locationMapIslandPropsCodec, } from './non-block-islands';
|
|
@@ -359,7 +359,7 @@ export declare const proofBlockIslandCodecs: {
|
|
|
359
359
|
showMap: boolean;
|
|
360
360
|
showCapacity: boolean;
|
|
361
361
|
orientation: import("..").CardOrientation;
|
|
362
|
-
events: readonly import("
|
|
362
|
+
events: readonly import(".").PublicEvent[];
|
|
363
363
|
}>;
|
|
364
364
|
hydration: Readonly<{
|
|
365
365
|
siteId: string;
|
|
@@ -405,7 +405,7 @@ export declare const proofBlockIslandCodecs: {
|
|
|
405
405
|
showMap: boolean;
|
|
406
406
|
showCapacity: boolean;
|
|
407
407
|
orientation: import("..").CardOrientation;
|
|
408
|
-
events: readonly import("
|
|
408
|
+
events: readonly import(".").PublicEvent[];
|
|
409
409
|
}>;
|
|
410
410
|
hydration: Readonly<{
|
|
411
411
|
siteId: string;
|
|
@@ -442,7 +442,7 @@ export declare const proofBlockIslandCodecs: {
|
|
|
442
442
|
kind: "event-calendar";
|
|
443
443
|
displayMode: import("..").DisplayMode;
|
|
444
444
|
className: string | null;
|
|
445
|
-
events: readonly import("
|
|
445
|
+
events: readonly import(".").PublicEvent[];
|
|
446
446
|
listLayout: import("..").EventLayout;
|
|
447
447
|
listColumns: import("..").ColumnOption;
|
|
448
448
|
eventsPerPage: import("../system/runtime/nodes/events/shared/listOptions").EventPageSize;
|
|
@@ -492,7 +492,7 @@ export declare const proofBlockIslandCodecs: {
|
|
|
492
492
|
kind: "event-calendar";
|
|
493
493
|
displayMode: import("..").DisplayMode;
|
|
494
494
|
className: string | null;
|
|
495
|
-
events: readonly import("
|
|
495
|
+
events: readonly import(".").PublicEvent[];
|
|
496
496
|
listLayout: import("..").EventLayout;
|
|
497
497
|
listColumns: import("..").ColumnOption;
|
|
498
498
|
eventsPerPage: import("../system/runtime/nodes/events/shared/listOptions").EventPageSize;
|
|
@@ -993,7 +993,7 @@ export declare const runtimeIslandCodecs: {
|
|
|
993
993
|
display: Readonly<{
|
|
994
994
|
kind: "event-combined";
|
|
995
995
|
className: string | null;
|
|
996
|
-
events: readonly import("
|
|
996
|
+
events: readonly import(".").PublicEvent[];
|
|
997
997
|
listLayout: import("..").EventLayout;
|
|
998
998
|
listColumns: import("..").ColumnOption;
|
|
999
999
|
eventsPerPage: import("../system/runtime/nodes/events/shared/listOptions").EventPageSize;
|
|
@@ -1042,7 +1042,7 @@ export declare const runtimeIslandCodecs: {
|
|
|
1042
1042
|
display: Readonly<{
|
|
1043
1043
|
kind: "event-combined";
|
|
1044
1044
|
className: string | null;
|
|
1045
|
-
events: readonly import("
|
|
1045
|
+
events: readonly import(".").PublicEvent[];
|
|
1046
1046
|
listLayout: import("..").EventLayout;
|
|
1047
1047
|
listColumns: import("..").ColumnOption;
|
|
1048
1048
|
eventsPerPage: import("../system/runtime/nodes/events/shared/listOptions").EventPageSize;
|
|
@@ -1429,7 +1429,7 @@ export declare const runtimeIslandCodecs: {
|
|
|
1429
1429
|
showMap: boolean;
|
|
1430
1430
|
showCapacity: boolean;
|
|
1431
1431
|
orientation: import("..").CardOrientation;
|
|
1432
|
-
events: readonly import("
|
|
1432
|
+
events: readonly import(".").PublicEvent[];
|
|
1433
1433
|
}>;
|
|
1434
1434
|
hydration: Readonly<{
|
|
1435
1435
|
siteId: string;
|
|
@@ -1475,7 +1475,7 @@ export declare const runtimeIslandCodecs: {
|
|
|
1475
1475
|
showMap: boolean;
|
|
1476
1476
|
showCapacity: boolean;
|
|
1477
1477
|
orientation: import("..").CardOrientation;
|
|
1478
|
-
events: readonly import("
|
|
1478
|
+
events: readonly import(".").PublicEvent[];
|
|
1479
1479
|
}>;
|
|
1480
1480
|
hydration: Readonly<{
|
|
1481
1481
|
siteId: string;
|
|
@@ -1512,7 +1512,7 @@ export declare const runtimeIslandCodecs: {
|
|
|
1512
1512
|
kind: "event-calendar";
|
|
1513
1513
|
displayMode: import("..").DisplayMode;
|
|
1514
1514
|
className: string | null;
|
|
1515
|
-
events: readonly import("
|
|
1515
|
+
events: readonly import(".").PublicEvent[];
|
|
1516
1516
|
listLayout: import("..").EventLayout;
|
|
1517
1517
|
listColumns: import("..").ColumnOption;
|
|
1518
1518
|
eventsPerPage: import("../system/runtime/nodes/events/shared/listOptions").EventPageSize;
|
|
@@ -1562,7 +1562,7 @@ export declare const runtimeIslandCodecs: {
|
|
|
1562
1562
|
kind: "event-calendar";
|
|
1563
1563
|
displayMode: import("..").DisplayMode;
|
|
1564
1564
|
className: string | null;
|
|
1565
|
-
events: readonly import("
|
|
1565
|
+
events: readonly import(".").PublicEvent[];
|
|
1566
1566
|
listLayout: import("..").EventLayout;
|
|
1567
1567
|
listColumns: import("..").ColumnOption;
|
|
1568
1568
|
eventsPerPage: import("../system/runtime/nodes/events/shared/listOptions").EventPageSize;
|
|
@@ -2100,7 +2100,7 @@ export declare const runtimeIslandCodecs: {
|
|
|
2100
2100
|
slug: string;
|
|
2101
2101
|
contentTypeSlug: string;
|
|
2102
2102
|
}> | null;
|
|
2103
|
-
events?: readonly import("
|
|
2103
|
+
events?: readonly import(".").PublicEvent[] | null;
|
|
2104
2104
|
showVenue?: boolean;
|
|
2105
2105
|
showMap?: boolean;
|
|
2106
2106
|
showOtherDates?: boolean;
|
|
@@ -2125,7 +2125,7 @@ export declare const runtimeIslandCodecs: {
|
|
|
2125
2125
|
slug: string;
|
|
2126
2126
|
contentTypeSlug: string;
|
|
2127
2127
|
}> | null;
|
|
2128
|
-
events?: readonly import("
|
|
2128
|
+
events?: readonly import(".").PublicEvent[] | null;
|
|
2129
2129
|
showVenue?: boolean;
|
|
2130
2130
|
showMap?: boolean;
|
|
2131
2131
|
showOtherDates?: boolean;
|
|
@@ -8,6 +8,8 @@ export type TextProps = PrimitiveProps & {
|
|
|
8
8
|
path?: string;
|
|
9
9
|
linkedEntryField?: PreviewLinkedEntryFieldBinding;
|
|
10
10
|
maxLength?: number;
|
|
11
|
+
placeholder?: string;
|
|
12
|
+
ariaLabel?: string;
|
|
11
13
|
blockData?: Record<string, unknown> | null;
|
|
12
14
|
};
|
|
13
15
|
export type RichTextPrimitiveProps = {
|
|
@@ -17,6 +19,8 @@ export type RichTextPrimitiveProps = {
|
|
|
17
19
|
linkedEntryField?: PreviewLinkedEntryFieldBinding;
|
|
18
20
|
doc?: TipTapNode | null;
|
|
19
21
|
variant?: RichTextVariant;
|
|
22
|
+
placeholder?: string;
|
|
23
|
+
ariaLabel?: string;
|
|
20
24
|
blockData?: Record<string, unknown> | null;
|
|
21
25
|
};
|
|
22
26
|
export type RichTextVariant = "full" | "inline" | "limited" | "media" | "notes";
|
|
@@ -36,6 +36,7 @@ export * from "./feature-cards";
|
|
|
36
36
|
export * from "./feature-card-icons";
|
|
37
37
|
export * from "./media-text";
|
|
38
38
|
export * from "./appointment-booking";
|
|
39
|
+
export * from "./weekly-slot-availability";
|
|
39
40
|
export * from "./event-registration";
|
|
40
41
|
export * from "./event-details";
|
|
41
42
|
export * from "./course-registration";
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { SystemBlockDefinition } from "../registry";
|
|
3
|
+
import { type SectionStylesContent } from "../fields/boxStyles";
|
|
4
|
+
import type { BlockManifest } from "../manifest";
|
|
5
|
+
export declare const weeklySlotAvailabilityManifest: BlockManifest;
|
|
6
|
+
export type WeeklySlotAvailabilityContent = {
|
|
7
|
+
serviceId: string;
|
|
8
|
+
resourceId?: string | null;
|
|
9
|
+
horizonWeeks?: string | null;
|
|
10
|
+
timezone?: string | null;
|
|
11
|
+
heading?: string | null;
|
|
12
|
+
description?: unknown;
|
|
13
|
+
emptyMessage?: string | null;
|
|
14
|
+
ctaText?: string | null;
|
|
15
|
+
ctaUrl?: string | null;
|
|
16
|
+
_sectionStyles?: SectionStylesContent;
|
|
17
|
+
};
|
|
18
|
+
export declare const weeklySlotAvailabilityDataSchema: z.ZodObject<{
|
|
19
|
+
slots: z.ZodArray<z.ZodObject<{
|
|
20
|
+
id: z.ZodString;
|
|
21
|
+
resourceId: z.ZodString;
|
|
22
|
+
weekday: z.ZodNumber;
|
|
23
|
+
weekdayLabel: z.ZodString;
|
|
24
|
+
startTime: z.ZodString;
|
|
25
|
+
endTime: z.ZodString;
|
|
26
|
+
nextDate: z.ZodString;
|
|
27
|
+
availableWeeks: z.ZodNumber;
|
|
28
|
+
}, z.core.$strip>>;
|
|
29
|
+
horizonWeeks: z.ZodNumber;
|
|
30
|
+
timezone: z.ZodString;
|
|
31
|
+
startDate: z.ZodString;
|
|
32
|
+
endDate: z.ZodString;
|
|
33
|
+
}, z.core.$strip>;
|
|
34
|
+
export declare const weeklySlotAvailabilityBlockDefinition: SystemBlockDefinition<WeeklySlotAvailabilityContent>;
|
|
@@ -13,6 +13,7 @@ type RenderOptions = {
|
|
|
13
13
|
data?: Record<string, unknown>;
|
|
14
14
|
pathBase?: string;
|
|
15
15
|
imageResolveContext?: Parameters<typeof resolveTree>[1]["imageResolveContext"];
|
|
16
|
+
previewAuthoring?: Parameters<typeof resolveTree>[1]["previewAuthoring"];
|
|
16
17
|
};
|
|
17
18
|
/**
|
|
18
19
|
* Resolves the layout definition for a block based on its manifest and content.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const SYSTEM_BLOCK_KINDS: readonly ["block.hero", "block.intro", "block.columns", "block.collection", "block.feature-cards", "block.media-text", "block.cta-full", "block.single-button", "block.body-text", "block.location-map", "block.faq", "block.testimonials", "block.team-members", "block.embed", "block.blog-post", "block.blog-listing", "block.site-header", "block.site-footer", "block.form", "block.contact-newsletter", "block.appointment-booking", "block.event-registration", "block.event-details", "block.course-registration", "block.course-details", "block.event-spotlight", "block.event-listing", "block.event-calendar", "block.offerings-preview", "block.shop", "block.product-list", "block.product-detail", "block.cart", "block.checkout", "block.gifting", "block.newsletter-signup", "block.image-gallery", "block.video-grid", "block.audio-player", "block.file-download"];
|
|
1
|
+
export declare const SYSTEM_BLOCK_KINDS: readonly ["block.hero", "block.intro", "block.columns", "block.collection", "block.feature-cards", "block.media-text", "block.cta-full", "block.single-button", "block.body-text", "block.location-map", "block.faq", "block.testimonials", "block.team-members", "block.embed", "block.blog-post", "block.blog-listing", "block.site-header", "block.site-footer", "block.form", "block.contact-newsletter", "block.appointment-booking", "block.weekly-slot-availability", "block.event-registration", "block.event-details", "block.course-registration", "block.course-details", "block.event-spotlight", "block.event-listing", "block.event-calendar", "block.offerings-preview", "block.shop", "block.product-list", "block.product-detail", "block.cart", "block.checkout", "block.gifting", "block.newsletter-signup", "block.image-gallery", "block.video-grid", "block.audio-player", "block.file-download"];
|
|
2
2
|
export type SystemBlockKind = (typeof SYSTEM_BLOCK_KINDS)[number];
|
|
3
3
|
export type CustomBlockKind = `custom.${string}`;
|
|
4
4
|
export type BlockKind = SystemBlockKind | CustomBlockKind;
|
|
@@ -27,7 +27,7 @@ export declare const eventCalendarListLayoutFacet: {
|
|
|
27
27
|
readonly label: "List style";
|
|
28
28
|
readonly values: {
|
|
29
29
|
value: "compact" | "grid" | "stack";
|
|
30
|
-
label: "
|
|
30
|
+
label: "Stack" | "Grid" | "Compact";
|
|
31
31
|
}[];
|
|
32
32
|
readonly defaultValue: "stack";
|
|
33
33
|
readonly target: {
|
|
@@ -41,7 +41,7 @@ export declare const systemCustomizeFacetDefinitions: readonly [{
|
|
|
41
41
|
readonly label: "List style";
|
|
42
42
|
readonly values: {
|
|
43
43
|
value: "compact" | "grid" | "stack";
|
|
44
|
-
label: "
|
|
44
|
+
label: "Stack" | "Grid" | "Compact";
|
|
45
45
|
}[];
|
|
46
46
|
readonly defaultValue: "stack";
|
|
47
47
|
readonly target: {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const SUPPORTED_LOADER_ENDPOINTS: readonly ["listPublishedEntries", "getPublishedEntryPreview", "listPublicEvents", "getPublicEventDetails", "listPublicCourses", "listPublicRouteCandidates", "listPublicTeamMembers", "listPublicProducts", "listPublicPasses", "listPublicMemberships", "getPublicFormById", "getPublicBookingServices"];
|
|
1
|
+
export declare const SUPPORTED_LOADER_ENDPOINTS: readonly ["listPublishedEntries", "getPublishedEntryPreview", "listPublicEvents", "getPublicEventDetails", "listPublicCourses", "listPublicRouteCandidates", "listPublicTeamMembers", "listPublicProducts", "listPublicPasses", "listPublicMemberships", "getPublicFormById", "getPublicBookingServices", "getPublicWeeklySlotAvailability"];
|
|
2
2
|
export type SupportedLoaderEndpoint = typeof SUPPORTED_LOADER_ENDPOINTS[number];
|
|
3
3
|
export declare function isSupportedLoaderEndpoint(endpoint: string): endpoint is SupportedLoaderEndpoint;
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
* - Frontend: provide internal API client
|
|
9
9
|
* - SDK: provide SDK client with endpoint mapping
|
|
10
10
|
*/
|
|
11
|
-
import { type BlockDataLoader } from '../registry';
|
|
11
|
+
import { getBlockDefinition as getSystemBlockDefinition, type BlockDataLoader } from '../registry';
|
|
12
|
+
import { resolveParamsBindings as resolveRuntimeParamsBindings } from '../runtime/bindings';
|
|
12
13
|
import type { PageOutline } from '../../structure/schema';
|
|
13
14
|
import type { ApiClient, PrefetchContext, ResolvedBlockData } from './types';
|
|
14
15
|
export type PrefetchBlockDataOptions = {
|
|
@@ -40,6 +41,8 @@ export type PrefetchBlockDataOptions = {
|
|
|
40
41
|
* @returns Record of data loaders, or undefined if not a custom block
|
|
41
42
|
*/
|
|
42
43
|
getCustomBlockLoaders?: (blockKind: string) => Record<string, BlockDataLoader> | undefined;
|
|
44
|
+
getBlockDefinition?: typeof getSystemBlockDefinition;
|
|
45
|
+
resolveParamsBindings?: typeof resolveRuntimeParamsBindings;
|
|
43
46
|
};
|
|
44
47
|
/**
|
|
45
48
|
* Core data prefetching logic (framework-agnostic).
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type Binding, type NodeDefinition } from './schema';
|
|
2
|
+
import type { ConditionalAuthoringPresence } from './schema';
|
|
2
3
|
import { type NodeProps } from './types';
|
|
3
4
|
export type NodeModifier = (node: NodeDefinition) => NodeDefinition;
|
|
4
5
|
export declare function el(type: string, props?: NodeProps | null, children?: Array<NodeDefinition | null | undefined> | null, ...mods: NodeModifier[]): NodeDefinition;
|
|
@@ -46,6 +47,7 @@ export declare function bind(from: string, options?: {
|
|
|
46
47
|
export declare function when(path: string, options?: {
|
|
47
48
|
equals?: unknown;
|
|
48
49
|
not?: boolean;
|
|
50
|
+
authoringPresence?: ConditionalAuthoringPresence;
|
|
49
51
|
}): NodeModifier;
|
|
50
52
|
export declare function scopes(entries: Array<{
|
|
51
53
|
name: string;
|
|
@@ -50,6 +50,13 @@ export declare const repeatSchema: z.ZodObject<{
|
|
|
50
50
|
}, z.core.$strip>>;
|
|
51
51
|
}, z.core.$strip>;
|
|
52
52
|
export type RepeatConfig = z.input<typeof repeatSchema>;
|
|
53
|
+
export declare const conditionalAuthoringPresenceSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
54
|
+
kind: z.ZodLiteral<"visitor-only">;
|
|
55
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
56
|
+
kind: z.ZodLiteral<"recover-empty-when-active">;
|
|
57
|
+
placeholder: z.ZodOptional<z.ZodString>;
|
|
58
|
+
}, z.core.$strip>], "kind">;
|
|
59
|
+
export type ConditionalAuthoringPresence = z.input<typeof conditionalAuthoringPresenceSchema>;
|
|
53
60
|
export declare const conditionSchema: z.ZodObject<{
|
|
54
61
|
when: z.ZodObject<{
|
|
55
62
|
from: z.ZodString;
|
|
@@ -71,6 +78,12 @@ export declare const conditionSchema: z.ZodObject<{
|
|
|
71
78
|
}, z.core.$strip>;
|
|
72
79
|
equals: z.ZodOptional<z.ZodUnknown>;
|
|
73
80
|
not: z.ZodDefault<z.ZodBoolean>;
|
|
81
|
+
authoringPresence: z.ZodDefault<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
82
|
+
kind: z.ZodLiteral<"visitor-only">;
|
|
83
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
84
|
+
kind: z.ZodLiteral<"recover-empty-when-active">;
|
|
85
|
+
placeholder: z.ZodOptional<z.ZodString>;
|
|
86
|
+
}, z.core.$strip>], "kind">>;
|
|
74
87
|
}, z.core.$strip>;
|
|
75
88
|
export type ConditionConfig = z.input<typeof conditionSchema>;
|
|
76
89
|
export declare const dataScopeSchema: z.ZodObject<{
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* SdkCustomBlock.layout definitions. Node types not in this list
|
|
12
12
|
* will be rejected during validation.
|
|
13
13
|
*/
|
|
14
|
-
export declare const ALLOWED_NODE_TYPES: readonly ["div", "figure", "section", "headerSection", "stack", "inline", "grid", "text", "richText", "media", "videoEmbed", "button", "link", "carousel", "accordion", "accordionItem", "form", "booking-form", "event-registration", "event-spotlight", "event-listing", "event-calendar", "offerings-preview", "event-combined", "shop", "product-list", "product-detail", "cart", "checkout", "gifting"];
|
|
14
|
+
export declare const ALLOWED_NODE_TYPES: readonly ["div", "figure", "section", "headerSection", "stack", "inline", "grid", "text", "richText", "media", "videoEmbed", "button", "link", "carousel", "accordion", "accordionItem", "form", "booking-form", "weekly-slot-availability", "event-registration", "event-spotlight", "event-listing", "event-calendar", "offerings-preview", "event-combined", "shop", "product-list", "product-detail", "cart", "checkout", "gifting"];
|
|
15
15
|
export type AllowedNodeType = (typeof ALLOWED_NODE_TYPES)[number];
|
|
16
16
|
/**
|
|
17
17
|
* Valid transform IDs for declarative layouts.
|
|
@@ -30,6 +30,7 @@ export type SystemBlockComponentProps<TContent = Record<string, unknown>> = {
|
|
|
30
30
|
editableRouteMetadataFieldIds?: ResolverContext['editableRouteMetadataFieldIds'];
|
|
31
31
|
fragmentRegistry?: ResolverContext['fragmentRegistry'];
|
|
32
32
|
imageResolveContext?: ResolverContext['imageResolveContext'];
|
|
33
|
+
previewAuthoring?: ResolverContext['previewAuthoring'];
|
|
33
34
|
};
|
|
34
35
|
export type SystemBlockComponent<TContent = Record<string, unknown>> = ComponentType<SystemBlockComponentProps<TContent>>;
|
|
35
36
|
export type BlockDataLoader = {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Factory function for creating a typed API client for block client-side API calls.
|
|
5
5
|
*/
|
|
6
|
-
import type { BlockApiConfig, FormSubmitRequest, FormSubmitResponse, FormConfigResponse, BookingSubmitRequest, BookingPackageSubmitRequest, BookingSubmitResponse, EligibleAppointmentPackagesResponse, AppointmentBookingStatusRequest, AppointmentBookingStatusResponse, AvailableSlotsRequest, AvailableSlotsResponse, AvailableDatesRequest, AvailableDatesResponse, BookingServicesResponse, BookingServiceResponse, BookingResourcesResponse, PublicEventsRequest, PublicEvent, EventFiltersResponse, EventRegisterRequest, EventRegisterResponse, EventCheckoutRequest, EventCheckoutResponse, EligibilityCheckRequest, EligibilityCheckResponse, EventRegistrationStatusRequest, EventRegistrationStatusResponse, CourseEnrollRequest, CourseEnrollResponse, CourseEligibilityCheckRequest, CourseEligibilityCheckResponse, CourseCheckoutRequest, CourseCheckoutResponse, CourseRegistrationStatusRequest, CourseRegistrationStatusResponse, ResolveWaitlistClaimRequest, ResolveWaitlistClaimResponse, DiscountsAvailableRequest, DiscountsAvailableResponse, DiscountApplyRequest, DiscountApplyResponse, PublicProductsResponse, ShopCheckoutRequest, ShopCheckoutResponse, UnifiedCheckoutRequest, UnifiedCheckoutResponse, PublicGiftingOffersResponse, CreateGiftingCheckoutRequest, CreateGiftingCheckoutResponse, ClaimGiftCardRequest, ClaimGiftCardResponse, PortalMeResponse, CustomerProfile, CustomerOrder, PortalMeUpdateRequest, CustomerPass, CustomerMembership, CustomerEventRegistration, PortalEventTicket, CustomerAppointment, BookingQuestionsTaskDetail, CustomerCourseEnrollment, PortalCredit, PortalOrderCheckoutRequest, PortalOrderCheckoutResponse, PortalDigitalProductAccessResponse, PortalDigitalProductDownloadUrlResponse, PortalDigitalProductsResponse, PortalCancelCourseEnrollmentRequest, PortalCancelCourseEnrollmentResult, PortalCancelAppointmentRequest, PortalCancelAppointmentResult, PortalUpdateAppointmentBookingQuestionsRequest, PortalUpdateCourseBookingQuestionsRequest, PortalUpdateEventBookingQuestionsRequest, PortalCancelEventRegistrationRequest, PortalCancelEventRegistrationResult, PortalTransferEventRegistrationRequest, PortalTransferEventRegistrationResult, PortalRescheduleAppointmentRequest, PortalRescheduleAppointmentResponse, PortalCancelMembershipAtPeriodEndResult, MagicLinkRequest, EventGuest, UpdateEventGuestsRequest, NewsletterSubscribeRequest, NewsletterSubscribeResponse } from './types';
|
|
6
|
+
import type { BlockApiConfig, FormSubmitRequest, FormSubmitResponse, FormConfigResponse, BookingSubmitRequest, BookingPackageSubmitRequest, BookingSubmitResponse, EligibleAppointmentPackagesResponse, AppointmentBookingStatusRequest, AppointmentBookingStatusResponse, AvailableSlotsRequest, AvailableSlotsResponse, WeeklySlotAvailabilityRequest, WeeklySlotAvailabilityResponse, AvailableDatesRequest, AvailableDatesResponse, BookingServicesResponse, BookingServiceResponse, BookingResourcesResponse, PublicEventsRequest, PublicEvent, EventFiltersResponse, EventRegisterRequest, EventRegisterResponse, EventCheckoutRequest, EventCheckoutResponse, EligibilityCheckRequest, EligibilityCheckResponse, EventRegistrationStatusRequest, EventRegistrationStatusResponse, CourseEnrollRequest, CourseEnrollResponse, CourseEligibilityCheckRequest, CourseEligibilityCheckResponse, CourseCheckoutRequest, CourseCheckoutResponse, CourseRegistrationStatusRequest, CourseRegistrationStatusResponse, ResolveWaitlistClaimRequest, ResolveWaitlistClaimResponse, DiscountsAvailableRequest, DiscountsAvailableResponse, DiscountApplyRequest, DiscountApplyResponse, PublicProductsResponse, ShopCheckoutRequest, ShopCheckoutResponse, UnifiedCheckoutRequest, UnifiedCheckoutResponse, PublicGiftingOffersResponse, CreateGiftingCheckoutRequest, CreateGiftingCheckoutResponse, ClaimGiftCardRequest, ClaimGiftCardResponse, PortalMeResponse, CustomerProfile, CustomerOrder, PortalMeUpdateRequest, CustomerPass, CustomerMembership, CustomerEventRegistration, PortalEventTicket, CustomerAppointment, BookingQuestionsTaskDetail, CustomerCourseEnrollment, PortalCredit, PortalOrderCheckoutRequest, PortalOrderCheckoutResponse, PortalDigitalProductAccessResponse, PortalDigitalProductDownloadUrlResponse, PortalDigitalProductsResponse, PortalCancelCourseEnrollmentRequest, PortalCancelCourseEnrollmentResult, PortalCancelAppointmentRequest, PortalCancelAppointmentResult, PortalUpdateAppointmentBookingQuestionsRequest, PortalUpdateCourseBookingQuestionsRequest, PortalUpdateEventBookingQuestionsRequest, PortalCancelEventRegistrationRequest, PortalCancelEventRegistrationResult, PortalTransferEventRegistrationRequest, PortalTransferEventRegistrationResult, PortalRescheduleAppointmentRequest, PortalRescheduleAppointmentResponse, PortalCancelMembershipAtPeriodEndResult, MagicLinkRequest, EventGuest, UpdateEventGuestsRequest, NewsletterSubscribeRequest, NewsletterSubscribeResponse } from './types';
|
|
7
7
|
type PublicProductCategorySelector = Readonly<{
|
|
8
8
|
kind: 'category';
|
|
9
9
|
productCategoryId: string;
|
|
@@ -33,6 +33,7 @@ export interface BlockApiClient {
|
|
|
33
33
|
}): Promise<EligibleAppointmentPackagesResponse>;
|
|
34
34
|
getAppointmentBookingStatus(params: Omit<AppointmentBookingStatusRequest, 'siteId'>): Promise<AppointmentBookingStatusResponse>;
|
|
35
35
|
getAvailableSlots(params: Omit<AvailableSlotsRequest, 'siteId'>): Promise<AvailableSlotsResponse>;
|
|
36
|
+
getWeeklySlotAvailability(params: Omit<WeeklySlotAvailabilityRequest, 'siteId'>): Promise<WeeklySlotAvailabilityResponse>;
|
|
36
37
|
getAvailableDates(params: Omit<AvailableDatesRequest, 'siteId'>): Promise<AvailableDatesResponse>;
|
|
37
38
|
getBookingServices(params?: {
|
|
38
39
|
ids?: string[];
|
|
@@ -52,6 +52,10 @@ export declare const BOOKINGS: {
|
|
|
52
52
|
path: string;
|
|
53
53
|
method: "GET";
|
|
54
54
|
};
|
|
55
|
+
getWeeklySlotAvailability: {
|
|
56
|
+
path: string;
|
|
57
|
+
method: "GET";
|
|
58
|
+
};
|
|
55
59
|
getAvailableDates: {
|
|
56
60
|
path: string;
|
|
57
61
|
method: "GET";
|
|
@@ -394,6 +398,10 @@ export declare const ENDPOINTS: {
|
|
|
394
398
|
path: string;
|
|
395
399
|
method: "GET";
|
|
396
400
|
};
|
|
401
|
+
getWeeklySlotAvailability: {
|
|
402
|
+
path: string;
|
|
403
|
+
method: "GET";
|
|
404
|
+
};
|
|
397
405
|
getAvailableDates: {
|
|
398
406
|
path: string;
|
|
399
407
|
method: "GET";
|
|
@@ -192,6 +192,30 @@ export interface TimeSlot {
|
|
|
192
192
|
export interface AvailableSlotsResponse {
|
|
193
193
|
slots: TimeSlot[];
|
|
194
194
|
}
|
|
195
|
+
export interface WeeklySlotAvailabilityRequest {
|
|
196
|
+
siteId: string;
|
|
197
|
+
serviceId: string;
|
|
198
|
+
resourceId?: string;
|
|
199
|
+
horizonWeeks?: number;
|
|
200
|
+
timezone: string;
|
|
201
|
+
}
|
|
202
|
+
export interface WeeklySlotAvailabilityOption {
|
|
203
|
+
id: string;
|
|
204
|
+
resourceId: string;
|
|
205
|
+
weekday: number;
|
|
206
|
+
weekdayLabel: string;
|
|
207
|
+
startTime: string;
|
|
208
|
+
endTime: string;
|
|
209
|
+
nextDate: string;
|
|
210
|
+
availableWeeks: number;
|
|
211
|
+
}
|
|
212
|
+
export interface WeeklySlotAvailabilityResponse {
|
|
213
|
+
slots: WeeklySlotAvailabilityOption[];
|
|
214
|
+
horizonWeeks: number;
|
|
215
|
+
timezone: string;
|
|
216
|
+
startDate: string;
|
|
217
|
+
endDate: string;
|
|
218
|
+
}
|
|
195
219
|
export interface AvailableDatesRequest {
|
|
196
220
|
siteId: string;
|
|
197
221
|
serviceId: string;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* DatePicker Component
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Selectable grid of available appointment dates rendered as pill buttons
|
|
5
|
+
* (weekday / day / month), with loading, empty and progressive-loading
|
|
6
|
+
* states. Selection uses button-toggle semantics: each pill is a button with
|
|
7
|
+
* aria-pressed and a full accessible date name, inside a labelled group.
|
|
6
8
|
*/
|
|
7
9
|
import React from 'react';
|
|
8
10
|
type DatePickerProps = {
|
|
@@ -10,6 +12,8 @@ type DatePickerProps = {
|
|
|
10
12
|
onChange: (date: string) => void;
|
|
11
13
|
dateOptions: string[];
|
|
12
14
|
required?: boolean;
|
|
15
|
+
ariaDescribedBy?: string;
|
|
16
|
+
ariaInvalid?: boolean;
|
|
13
17
|
isLoading?: boolean;
|
|
14
18
|
isEmpty?: boolean;
|
|
15
19
|
hasMore?: boolean;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* SuccessMessage Component
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Terminal success state after a completed appointment booking.
|
|
5
|
+
* Rendered on the shared registration-surface (see booking-form.client),
|
|
6
|
+
* using the shared TerminalPanel + StateIcon primitives.
|
|
5
7
|
*/
|
|
6
8
|
import React from 'react';
|
|
7
9
|
type SuccessMessageProps = {
|
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* TimeSlotSelector Component
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Selectable grid of available time slots for the chosen date, rendered as
|
|
5
|
+
* pill buttons with button-toggle semantics (aria-pressed) inside a labelled
|
|
6
|
+
* group. The timezone is part of each pill's accessible name via the full
|
|
7
|
+
* time format; the visible pill shows the compact time.
|
|
5
8
|
*/
|
|
6
9
|
import React from 'react';
|
|
7
|
-
import type {
|
|
10
|
+
import type { BookingSlotDisplayOption } from '../../hooks/useHeadlessBookingFlow.state';
|
|
8
11
|
type TimeSlotSelectorProps = {
|
|
9
12
|
value: string;
|
|
10
|
-
onChange: (
|
|
11
|
-
slots:
|
|
13
|
+
onChange: (slotKey: string) => void;
|
|
14
|
+
slots: readonly BookingSlotDisplayOption[];
|
|
12
15
|
isLoading: boolean;
|
|
16
|
+
timezone: string;
|
|
13
17
|
required?: boolean;
|
|
18
|
+
ariaDescribedBy?: string;
|
|
19
|
+
ariaInvalid?: boolean;
|
|
14
20
|
};
|
|
15
21
|
export declare const TimeSlotSelector: React.FC<TimeSlotSelectorProps>;
|
|
16
22
|
export {};
|
|
@@ -8,6 +8,7 @@ import { AccordionNode, AccordionItemNode } from '../nodes/accordion';
|
|
|
8
8
|
import HeaderSectionNode from '../nodes/header-section.client';
|
|
9
9
|
import { EventCombinedIslandClient } from '../nodes/events';
|
|
10
10
|
import { MediaNode } from '../nodes/media.client';
|
|
11
|
+
import WeeklySlotAvailabilityClient from '../nodes/weekly-slot-availability.client';
|
|
11
12
|
import { runtimeBackedBlockServerEntries, type RuntimeBackedBlockMode, type RuntimeBackedBlockKind, type RuntimeBackedClientBlockEntry, type RuntimeBackedClientComponentProps } from './runtime-backed-blocks';
|
|
12
13
|
type SourcePropsClientEntry<TProps extends object = object> = Readonly<{
|
|
13
14
|
kind: 'source-props';
|
|
@@ -28,6 +29,7 @@ export type ClientComponentRegistryEntryByKind = Readonly<{
|
|
|
28
29
|
'event-details': ExplicitAdapterClientEntry<React.ComponentProps<typeof EventDetailsIslandClient>>;
|
|
29
30
|
'location-map': ExplicitAdapterClientEntry<React.ComponentProps<typeof LocationMapIslandClient>>;
|
|
30
31
|
'event-combined': ExplicitAdapterClientEntry<React.ComponentProps<typeof EventCombinedIslandClient>>;
|
|
32
|
+
'weekly-slot-availability': SourcePropsClientEntry<React.ComponentProps<typeof WeeklySlotAvailabilityClient>>;
|
|
31
33
|
}>;
|
|
32
34
|
export type ClientComponentRegistryEntry = ClientComponentRegistryEntryByKind[keyof ClientComponentRegistryEntryByKind];
|
|
33
35
|
export declare function defineSourcePropsClientEntry<TProps extends object>(component: React.ComponentType<TProps>): SourcePropsClientEntry<TProps>;
|
|
@@ -2992,6 +2994,10 @@ export declare const clientComponentRegistryEntries: {
|
|
|
2992
2994
|
}>>;
|
|
2993
2995
|
produces: "client-props" | "island-props";
|
|
2994
2996
|
}>;
|
|
2997
|
+
readonly 'weekly-slot-availability': Readonly<{
|
|
2998
|
+
kind: "source-props";
|
|
2999
|
+
component: React.ComponentType<import("../nodes/weekly-slot-availability.client").WeeklySlotAvailabilityClientProps>;
|
|
3000
|
+
}>;
|
|
2995
3001
|
};
|
|
2996
3002
|
export declare const clientComponentRegistry: ComponentRegistry;
|
|
2997
3003
|
export {};
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { useBlockApi } from "../api";
|
|
1
2
|
import { type AppointmentCheckoutVerificationState } from "../nodes/booking-form.state";
|
|
3
|
+
import { usePolling } from "./usePolling";
|
|
2
4
|
export type AppointmentCheckoutVerificationConfig = {
|
|
3
5
|
sessionId: string;
|
|
4
6
|
maxAttempts?: number;
|
|
@@ -8,4 +10,9 @@ export type AppointmentCheckoutVerificationResult = {
|
|
|
8
10
|
state: AppointmentCheckoutVerificationState;
|
|
9
11
|
retry: () => void;
|
|
10
12
|
};
|
|
13
|
+
export type AppointmentCheckoutVerificationDeps = Readonly<{
|
|
14
|
+
useBlockApi: typeof useBlockApi;
|
|
15
|
+
usePolling: typeof usePolling;
|
|
16
|
+
}>;
|
|
11
17
|
export declare function useAppointmentCheckoutVerification(config: AppointmentCheckoutVerificationConfig | null): AppointmentCheckoutVerificationResult;
|
|
18
|
+
export declare function useAppointmentCheckoutVerificationWithDeps(config: AppointmentCheckoutVerificationConfig | null, deps: AppointmentCheckoutVerificationDeps): AppointmentCheckoutVerificationResult;
|
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { type TimeSlot } from "../api";
|
|
8
8
|
export type { TimeSlot };
|
|
9
|
-
type UseAvailableSlotsOptions = {
|
|
9
|
+
export type UseAvailableSlotsOptions = {
|
|
10
10
|
siteId: string;
|
|
11
11
|
serviceId: string | undefined;
|
|
12
12
|
resourceId: string | undefined;
|
|
13
13
|
selectedDate: string;
|
|
14
14
|
timezone: string;
|
|
15
15
|
};
|
|
16
|
-
type UseAvailableSlotsResult = {
|
|
16
|
+
export type UseAvailableSlotsResult = {
|
|
17
17
|
slots: TimeSlot[];
|
|
18
18
|
isLoading: boolean;
|
|
19
19
|
isRefreshing: boolean;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { unsafeAsBookingFieldId, bookingFlowReducer, buildBookingAvailabilityQuery, buildBookingStepPlan, buildBookingSubmitPlan, createBookingBlockApiConfig, createEmptyBookingValidationErrors, createFieldBookingValidationErrors, createFormBookingValidationError, createInitialBookingFlowReducerState, describeUnknownError, deriveBookingFieldViews, deriveBookingFlowSteps, getAppointmentBookingOverrideInput, hasBookingValidationErrors, resolveAppointmentPackagesModel, resolveAvailabilitySelectionInvalidation, resolveHeadlessBookingStatus, resolveHeadlessBookingView, toBookingFormData, toBookingSlotView, toBookingSlotViews, toOptionalAppointmentResourceId, toOptionalAppointmentServiceId, validateBookingField, validateBookingFields, validateBookingStep, } from "../nodes/booking-form.headless.state";
|
|
1
|
+
export { unsafeAsBookingFieldId, bookingFlowReducer, buildBookingAvailabilityQuery, buildBookingStepPlan, buildBookingSubmitPlan, createBookingBlockApiConfig, createEmptyBookingValidationErrors, createFieldBookingValidationErrors, createFormBookingValidationError, createInitialBookingFlowReducerState, deriveBookingSlotDisplayOptions, describeUnknownError, deriveBookingFieldViews, deriveBookingFlowSteps, getAppointmentBookingOverrideInput, hasBookingValidationErrors, resolveAppointmentPackagesModel, resolveAvailabilitySelectionInvalidation, resolveHeadlessBookingStatus, resolveHeadlessBookingView, toBookingFormData, toBookingSlotView, toBookingSlotViews, toOptionalAppointmentResourceId, toOptionalAppointmentServiceId, validateBookingField, validateBookingFields, validateBookingStep, } from "../nodes/booking-form.headless.state";
|
|
2
2
|
export { formatBookingCentsAsCurrencyInput, getBookingServiceSlidingScale, parseBookingCurrencyInputToCents, } from "../nodes/booking-form.state";
|
|
3
|
-
export type { AppointmentBookingOverrideData, AppointmentBookingOverrideInput, AppointmentBookingOverrideInputResult, AppointmentBookingOverridePropsLike, BookingAvailabilityQuery, BookingAppointmentPackagesModel, BookingAppointmentPackagesUnavailableReason, BookingFieldId, BookingFieldValue, BookingFieldView, BookingFlowActionResult, BookingFlowFeedback, BookingFlowStatus, BookingFlowStep, BookingFlowStepId, BookingFlowView, BookingResourceView, BookingSlotSelection, BookingSlotView, BookingSubmitActionResult, BookingSubmitOptions, BookingValidationErrors, DerivedBookingFlowSteps, DeriveBookingFlowStepsInput, LoadState, } from "../nodes/booking-form.headless.state";
|
|
3
|
+
export type { AppointmentBookingOverrideData, AppointmentBookingOverrideInput, AppointmentBookingOverrideInputResult, AppointmentBookingOverridePropsLike, BookingAvailabilityQuery, BookingAppointmentPackagesModel, BookingAppointmentPackagesUnavailableReason, BookingFieldId, BookingFieldValue, BookingFieldView, BookingFlowActionResult, BookingFlowFeedback, BookingFlowStatus, BookingFlowStep, BookingFlowStepId, BookingFlowView, BookingResourceView, BookingSlotDisplayOption, BookingSlotSelection, BookingSlotView, BookingSubmitActionResult, BookingSubmitOptions, BookingValidationErrors, DerivedBookingFlowSteps, DeriveBookingFlowStepsInput, LoadState, } from "../nodes/booking-form.headless.state";
|
|
@@ -27,7 +27,11 @@ export type EventRegistrationController = Readonly<{
|
|
|
27
27
|
export type EventRegistrationWizardController = Readonly<{
|
|
28
28
|
wizard: ReturnType<typeof useEventRegistrationWizard>;
|
|
29
29
|
}>;
|
|
30
|
+
export type EventRegistrationControllerDeps = Readonly<{
|
|
31
|
+
useEventRegistrationWizard: typeof useEventRegistrationWizard;
|
|
32
|
+
}>;
|
|
30
33
|
export declare function HeadlessEventRegistrationProvider({ config, children, }: HeadlessEventRegistrationProviderProps): React.ReactElement;
|
|
31
34
|
export declare function useHeadlessEventRegistrationFlow(options: HeadlessEventRegistrationFlowOptions): HeadlessEventRegistrationFlow;
|
|
32
35
|
export declare function useEventRegistrationController(options: HeadlessEventRegistrationFlowOptions): EventRegistrationController;
|
|
36
|
+
export declare function useEventRegistrationControllerWithDeps(options: HeadlessEventRegistrationFlowOptions, deps: EventRegistrationControllerDeps): EventRegistrationController;
|
|
33
37
|
export declare function useEventRegistrationWizardController(options: HeadlessEventRegistrationFlowOptions): EventRegistrationWizardController;
|