@riverbankcms/sdk 0.96.0 → 0.98.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/README.md +20 -1
  2. package/dist/{PreviewEditorSidebar-46VT4QVU.mjs → PreviewEditorSidebar-CG3SSJND.mjs} +3 -3
  3. package/dist/{PreviewEditorUI-JD75GE5F.mjs → PreviewEditorUI-RHNGKAAU.mjs} +3 -3
  4. package/dist/SdkPreviewModeRuntime-OV5PNJBB.mjs +8 -0
  5. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +35 -1
  6. package/dist/_dts/api/src/bookingOperations.d.ts +246 -0
  7. package/dist/_dts/api/src/contentRuntime.d.ts +109 -40
  8. package/dist/_dts/api/src/endpoints.d.ts +80 -0
  9. package/dist/_dts/api/src/index.d.ts +3 -2
  10. package/dist/_dts/api/src/public/endpoints.d.ts +1 -1
  11. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +10 -0
  12. package/dist/_dts/api/src/sdkContracts.d.ts +2 -0
  13. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +2 -1
  14. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +7 -1
  15. package/dist/_dts/blocks/src/PageRenderer.d.ts +2 -1
  16. package/dist/_dts/blocks/src/bindings/types.d.ts +0 -4
  17. package/dist/_dts/blocks/src/client/site-chrome.d.ts +7 -0
  18. package/dist/_dts/blocks/src/contracts/index.d.ts +1 -0
  19. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +12 -12
  20. package/dist/_dts/blocks/src/primitives/content/primitives.d.ts +4 -0
  21. package/dist/_dts/blocks/src/system/blocks/events/shared/index.d.ts +1 -0
  22. package/dist/_dts/blocks/src/system/blocks/events/shared/layout.d.ts +2 -0
  23. package/dist/_dts/blocks/src/system/blocks/index.d.ts +1 -0
  24. package/dist/_dts/blocks/src/system/blocks/weekly-slot-availability.d.ts +34 -0
  25. package/dist/_dts/blocks/src/system/componentFactory.d.ts +1 -0
  26. package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
  27. package/dist/_dts/blocks/src/system/customize/facets.d.ts +2 -2
  28. package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
  29. package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +4 -1
  30. package/dist/_dts/blocks/src/system/node/builder.d.ts +2 -0
  31. package/dist/_dts/blocks/src/system/node/schema.d.ts +13 -0
  32. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  33. package/dist/_dts/blocks/src/system/registry.d.ts +1 -0
  34. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -1
  35. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
  36. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +24 -0
  37. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +6 -0
  38. package/dist/_dts/blocks/src/system/runtime/hooks/useAppointmentCheckoutVerification.d.ts +7 -0
  39. package/dist/_dts/blocks/src/system/runtime/hooks/useAvailableSlots.d.ts +2 -2
  40. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +4 -0
  41. package/dist/_dts/blocks/src/system/runtime/hooks/usePaymentVerification.d.ts +5 -0
  42. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +14 -0
  43. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +8 -2
  44. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +133 -2
  45. package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.client.controller.d.ts +3 -0
  46. package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.client.d.ts +9 -0
  47. package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.client.state.d.ts +14 -0
  48. package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.server.d.ts +10 -0
  49. package/dist/_dts/blocks/src/system/runtime/nodes/weekly-slot-availability.view.d.ts +11 -0
  50. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +31 -1
  51. package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.d.ts +5 -0
  52. package/dist/_dts/blocks/src/utils/date-formatting.d.ts +1 -1
  53. package/dist/_dts/content-editor/src/primitives/PreviewInlineTextEditor.d.ts +1 -1
  54. package/dist/_dts/content-editor/src/primitives/PreviewRichTextEditor.d.ts +1 -1
  55. package/dist/_dts/content-model/src/templates/defaults.d.ts +5 -5
  56. package/dist/_dts/content-model/src/templates/types.d.ts +2 -6
  57. package/dist/_dts/core/src/branded.d.ts +8 -0
  58. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +505 -2
  59. package/dist/_dts/field-primitives/src/bindings/index.d.ts +8 -0
  60. package/dist/_dts/sdk/src/cli/commands/push/publishGuidance.d.ts +15 -0
  61. package/dist/_dts/sdk/src/cli/commands/push/scopes/commandBackedDatedOfferingScope.d.ts +2 -1
  62. package/dist/_dts/sdk/src/cli/commands/push/scopes/types.d.ts +3 -1
  63. package/dist/_dts/sdk/src/cli/commands/push/stale-resolution.d.ts +9 -3
  64. package/dist/_dts/sdk/src/cli/commands/push/workflowPlan.d.ts +34 -0
  65. package/dist/_dts/sdk/src/cli/commands/setup.d.ts +2 -0
  66. package/dist/_dts/sdk/src/cli/config-loader.d.ts +2 -0
  67. package/dist/_dts/sdk/src/cli/content/metadataStore.d.ts +29 -0
  68. package/dist/_dts/sdk/src/cli/content/reader.d.ts +16 -14
  69. package/dist/_dts/sdk/src/cli/content/writer.d.ts +6 -4
  70. package/dist/_dts/sdk/src/cli/env-scope.d.ts +2 -0
  71. package/dist/_dts/sdk/src/cli/helpers.d.ts +6 -7
  72. package/dist/_dts/sdk/src/cli/merge-remote/entryMergePush.d.ts +2 -0
  73. package/dist/_dts/sdk/src/cli/merge-remote/pageMergePush.d.ts +2 -0
  74. package/dist/_dts/sdk/src/cli/push-config.d.ts +13 -2
  75. package/dist/_dts/sdk/src/cli/setup/setupPlan.d.ts +51 -0
  76. package/dist/_dts/sdk/src/cli/site-commands/commandRuntime.d.ts +21 -0
  77. package/dist/_dts/sdk/src/client/runtimeCachePolicy.d.ts +1 -1
  78. package/dist/_dts/sdk/src/client/types.d.ts +18 -2
  79. package/dist/_dts/sdk/src/config/types.d.ts +1 -1
  80. package/dist/_dts/sdk/src/config/validation.d.ts +3 -0
  81. package/dist/_dts/sdk/src/contracts/bindings.d.ts +3 -7
  82. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +13 -0
  83. package/dist/_dts/sdk/src/next/route-outcome-proxy.d.ts +3 -3
  84. package/dist/_dts/sdk/src/public-api/contracts.d.ts +174 -78
  85. package/dist/_dts/sdk/src/public-api/runtime.d.ts +1 -1
  86. package/dist/_dts/sdk/src/rendering/helpers/bindings.d.ts +4 -4
  87. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +52 -1
  88. package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +2 -2
  89. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +18 -66
  90. package/dist/_dts/sdk/src/types/block-kinds.d.ts +1 -1
  91. package/dist/_dts/sdk/src/version.d.ts +1 -1
  92. package/dist/{chunk-EL55VV6Q.mjs → chunk-6WDBXCPX.mjs} +31 -10
  93. package/dist/{chunk-XMATDBXO.mjs → chunk-DBRI3PQF.mjs} +731 -180
  94. package/dist/{chunk-VHIMXQ7Z.mjs → chunk-H24OU7WG.mjs} +2 -2
  95. package/dist/{chunk-4TLTV7OB.mjs → chunk-PKDPQHB5.mjs} +2 -2
  96. package/dist/{chunk-VTPPVAOL.mjs → chunk-QPXE2OUZ.mjs} +1 -1
  97. package/dist/{chunk-7ED5UNHL.mjs → chunk-V2BYFSPW.mjs} +109 -0
  98. package/dist/cli/index.mjs +2131 -1033
  99. package/dist/cli/init-docs/content/cli-reference.md +29 -1
  100. package/dist/cli/init-docs/content/getting-started.md +8 -0
  101. package/dist/cli/init-docs/content/workflow-agent-safe-sync.md +3 -1
  102. package/dist/cli/init-docs/content/workflow-preview-mode.md +6 -0
  103. package/dist/cli/init-docs/content/workflow-remote-setup.md +51 -0
  104. package/dist/client/{accordion-GUNXIIZR.mjs → accordion-Q2BDNL53.mjs} +1 -1
  105. package/dist/client/{bookingForm-AOU4VHP5.mjs → bookingForm-ZMP4P7EK.mjs} +16 -6
  106. package/dist/client/bookings.mjs +98 -18
  107. package/dist/client/{carousel-4QSX2JPC.mjs → carousel-LW3UXPWO.mjs} +1 -1
  108. package/dist/client/{cart-JKN6C4ZB.mjs → cart-Z6D3KS6K.mjs} +5 -5
  109. package/dist/client/{checkout-YY6YMITW.mjs → checkout-YMT2QJQM.mjs} +5 -5
  110. package/dist/client/{chunk-6H27K6AA.mjs → chunk-26ZBRXFR.mjs} +9 -3
  111. package/dist/client/{chunk-VJROUYOQ.mjs → chunk-DRRQ7QSL.mjs} +2 -2
  112. package/dist/client/{chunk-BFCJZODD.mjs → chunk-ET2MDQQT.mjs} +4 -4
  113. package/dist/client/{chunk-H7A6PUGM.mjs → chunk-HBQEAOG4.mjs} +1 -1
  114. package/dist/client/{chunk-CPKMJVBD.mjs → chunk-IEOECM7U.mjs} +62 -43
  115. package/dist/client/{chunk-TNGL2WJF.mjs → chunk-KDP7ZRZV.mjs} +16 -0
  116. package/dist/client/{chunk-GWCRCJLB.mjs → chunk-R4XK3CKR.mjs} +12 -1
  117. package/dist/client/{chunk-A3YN7M3G.mjs → chunk-SK2BMD22.mjs} +2 -2
  118. package/dist/client/{chunk-SY543WZ3.mjs → chunk-XNTHVZ25.mjs} +1 -1
  119. package/dist/client/client.mjs +3729 -3054
  120. package/dist/client/{courseRegistration-UU2KMPSQ.mjs → courseRegistration-DGKCMC77.mjs} +4 -4
  121. package/dist/client/{eventCalendar-WIVNS2TM.mjs → eventCalendar-74Z2NNFM.mjs} +7 -7
  122. package/dist/client/{eventCombined-P3G5MW4J.mjs → eventCombined-GK2ODOX2.mjs} +7 -7
  123. package/dist/client/{eventDetails-2VHJ2RDG.mjs → eventDetails-MONAGT3N.mjs} +7 -7
  124. package/dist/client/{eventListing-TGO6JI3R.mjs → eventListing-SKGAO6PS.mjs} +7 -7
  125. package/dist/client/{eventRegistration-B46HEJES.mjs → eventRegistration-6KISGXRD.mjs} +7 -7
  126. package/dist/client/{form-VKRTFUNQ.mjs → form-FXPRTXHI.mjs} +2 -2
  127. package/dist/client/{headerSection-XUX4ZJLO.mjs → headerSection-7NAN5WNB.mjs} +2 -2
  128. package/dist/client/hooks.mjs +1661 -1334
  129. package/dist/client/{locationMap-NQFI5MJO.mjs → locationMap-UERN74U4.mjs} +2 -2
  130. package/dist/client/{newsletterForm-P2GETCQK.mjs → newsletterForm-SGWXMJ7U.mjs} +2 -2
  131. package/dist/client/{productDetail-7NQ7O5IF.mjs → productDetail-HN3HWZQZ.mjs} +5 -5
  132. package/dist/client/{productList-RX6ZJ7BL.mjs → productList-YT22Z5UR.mjs} +5 -5
  133. package/dist/client/rendering/client.mjs +2208 -1922
  134. package/dist/client/rendering/islands.mjs +18 -18
  135. package/dist/client/rendering.mjs +1497 -811
  136. package/dist/client/{shop-BHN5AKY6.mjs → shop-TKEDNWUS.mjs} +5 -5
  137. package/dist/preview-next/before-render.mjs +109 -0
  138. package/dist/preview-next/client/runtime.mjs +5 -5
  139. package/dist/preview-next/middleware.mjs +109 -0
  140. package/dist/{sdk-runtime-X2LXQ5IC.mjs → sdk-runtime-LWNYCQF2.mjs} +6 -6
  141. package/dist/server/components.mjs +2351 -1872
  142. package/dist/server/config-template-validation.mjs +6 -2
  143. package/dist/server/config-validation.mjs +1861 -1561
  144. package/dist/server/config.mjs +1861 -1561
  145. package/dist/server/data.mjs +1647 -1331
  146. package/dist/server/index.mjs +208 -9
  147. package/dist/server/next/middleware.mjs +2 -2
  148. package/dist/server/next.mjs +2572 -1878
  149. package/dist/server/page-converter.mjs +1461 -1276
  150. package/dist/server/prebuild.mjs +1 -1
  151. package/dist/server/rendering/server.mjs +2372 -1875
  152. package/dist/server/rendering.mjs +2557 -1941
  153. package/dist/server/routing.mjs +1716 -1353
  154. package/dist/server/server.mjs +1911 -1380
  155. package/package.json +1 -1
  156. package/dist/SdkPreviewModeRuntime-MJUSYUFB.mjs +0 -8
@@ -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("..").PublicEvent[];
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("..").PublicEvent[];
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("..").PublicEvent[];
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("..").PublicEvent[];
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("..").PublicEvent[];
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("..").PublicEvent[];
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("..").PublicEvent[];
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("..").PublicEvent[];
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("..").PublicEvent[];
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("..").PublicEvent[];
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("..").PublicEvent[] | null;
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("..").PublicEvent[] | null;
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";
@@ -5,3 +5,4 @@ export * from './types';
5
5
  export * from './schemas';
6
6
  export * from './fields';
7
7
  export * from './filtering';
8
+ export * from './layout';
@@ -0,0 +1,2 @@
1
+ import type { NodeDefinition } from '../../../node';
2
+ export declare function eventSectionHeaderLayoutNodes(): readonly NodeDefinition[];
@@ -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: "Compact" | "Stack" | "Grid";
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: "Compact" | "Stack" | "Grid";
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;
@@ -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;
@@ -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;
@@ -23,6 +23,7 @@
23
23
  * }, [verification.status]);
24
24
  * ```
25
25
  */
26
+ import { useBlockApi } from '../api';
26
27
  import type { PaymentStatus, AttendeeStatus } from '../api/types';
27
28
  export type PaymentVerificationConfig = {
28
29
  /** Unique ID to check (attendeeId, customerPassId, etc.) */
@@ -46,6 +47,9 @@ export type PaymentVerificationResult = {
46
47
  /** Manually trigger a poll (useful for retry after timeout) */
47
48
  retry: () => void;
48
49
  };
50
+ export type PaymentVerificationDeps = Readonly<{
51
+ useBlockApi: typeof useBlockApi;
52
+ }>;
49
53
  /**
50
54
  * Hook for polling payment status after Stripe redirects.
51
55
  *
@@ -56,3 +60,4 @@ export type PaymentVerificationResult = {
56
60
  * @returns Verification result with status, data, and retry function
57
61
  */
58
62
  export declare function usePaymentVerification(config: PaymentVerificationConfig | null): PaymentVerificationResult;
63
+ export declare function usePaymentVerificationWithDeps(config: PaymentVerificationConfig | null, deps: PaymentVerificationDeps): PaymentVerificationResult;
@@ -4,6 +4,7 @@
4
4
  * Custom hooks for portal authentication and eligibility checking.
5
5
  * Extracted from the main EventRegistrationClient for better separation of concerns.
6
6
  */
7
+ import { useBlockApi } from '../../api';
7
8
  import type { EventTicketSelectionLine } from './types';
8
9
  import { type EligibilityLookupState, type ExistingRegistrationLookupState } from './hooks.state';
9
10
  export type PortalAuthState = 'checking' | 'authenticated' | 'unauthenticated';
@@ -24,6 +25,9 @@ export type UsePortalAuthResult = {
24
25
  /** Logout function */
25
26
  logout: () => void;
26
27
  };
28
+ export type EventRegistrationHooksDeps = Readonly<{
29
+ useBlockApi: typeof useBlockApi;
30
+ }>;
27
31
  /**
28
32
  * Hook for managing portal authentication state.
29
33
  *
@@ -31,6 +35,7 @@ export type UsePortalAuthResult = {
31
35
  * fetches the portal profile if so.
32
36
  */
33
37
  export declare function usePortalAuth(): UsePortalAuthResult;
38
+ export declare function usePortalAuthWithDeps(deps: EventRegistrationHooksDeps): UsePortalAuthResult;
34
39
  export type UseEligibilityResult = {
35
40
  state: EligibilityLookupState;
36
41
  eligibility: EligibilityLookupState['eligibility'];
@@ -45,6 +50,14 @@ export declare function useEligibility(params: {
45
50
  selectedSlidingAmount?: number | null;
46
51
  email: string;
47
52
  }): UseEligibilityResult;
53
+ export declare function useEligibilityWithDeps(params: {
54
+ enabled: boolean;
55
+ occurrenceId: string;
56
+ attendanceMode?: 'in_person' | 'online' | null;
57
+ ticketSelections: readonly EventTicketSelectionLine[];
58
+ selectedSlidingAmount?: number | null;
59
+ email: string;
60
+ }, deps: EventRegistrationHooksDeps): UseEligibilityResult;
48
61
  export type UseExistingEventRegistrationResult = {
49
62
  state: ExistingRegistrationLookupState;
50
63
  registration: ExistingRegistrationLookupState['registration'];
@@ -55,4 +68,5 @@ type UseExistingEventRegistrationParams = {
55
68
  occurrenceId: string;
56
69
  };
57
70
  export declare function useExistingEventRegistration({ isAuthenticated, occurrenceId, }: UseExistingEventRegistrationParams): UseExistingEventRegistrationResult;
71
+ export declare function useExistingEventRegistrationWithDeps({ isAuthenticated, occurrenceId, }: UseExistingEventRegistrationParams, deps: EventRegistrationHooksDeps): UseExistingEventRegistrationResult;
58
72
  export {};
@@ -1,4 +1,5 @@
1
1
  import type { BlockApiClient } from '../../api';
2
+ import { savePendingRegistration } from './sessionStorage';
2
3
  import type { EventTicketSelectionLine, FormData, Guest, RegistrationResult, RegistrationStep, PaymentSelection } from './types';
3
4
  import type { PaymentMethod } from '../../api/types';
4
5
  import type { RegistrationTarget } from './registrationDerivations';
@@ -21,7 +22,7 @@ export type EventRegistrationSubmitResult = Readonly<{
21
22
  reason: 'blocked' | 'missing-target' | 'submission-failed';
22
23
  message: string;
23
24
  }>;
24
- export declare function useEventRegistrationSubmit(options: {
25
+ export type UseEventRegistrationSubmitInput = {
25
26
  api: BlockApiClient;
26
27
  registrationTarget: RegistrationTarget | null;
27
28
  selectedAttendanceMode: 'in_person' | 'online' | null;
@@ -37,4 +38,9 @@ export declare function useEventRegistrationSubmit(options: {
37
38
  setStep: (step: RegistrationStep) => void;
38
39
  setRegistrationResult: (result: RegistrationResult) => void;
39
40
  setErrorMessage: (message: string) => void;
40
- }): (method: PaymentMethod, passId?: string, membershipId?: string, selection?: PaymentSelection, submitOptions?: EventRegistrationSubmitOptions) => Promise<EventRegistrationSubmitResult>;
41
+ };
42
+ export type EventRegistrationSubmitDeps = Readonly<{
43
+ savePendingRegistration: typeof savePendingRegistration;
44
+ }>;
45
+ export declare function useEventRegistrationSubmit(options: UseEventRegistrationSubmitInput): (method: PaymentMethod, passId?: string, membershipId?: string, selection?: PaymentSelection, submitOptions?: EventRegistrationSubmitOptions) => Promise<EventRegistrationSubmitResult>;
46
+ export declare function useEventRegistrationSubmitWithDeps(options: UseEventRegistrationSubmitInput, deps: EventRegistrationSubmitDeps): (method: PaymentMethod, passId?: string, membershipId?: string, selection?: PaymentSelection, submitOptions?: EventRegistrationSubmitOptions) => Promise<EventRegistrationSubmitResult>;