@riverbankcms/sdk 0.140.0 → 0.141.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/dist/{PreviewEditorSidebar-CUyTzd5z.mjs → PreviewEditorSidebar-Q-fy9GYw.mjs} +3 -3
  2. package/dist/{PreviewEditorUI-Agkw4v5i.mjs → PreviewEditorUI-LYGzgk85.mjs} +2 -2
  3. package/dist/{SdkPreviewModeRuntime-DdbeAdS8.mjs → SdkPreviewModeRuntime-CoPYI5Jq.mjs} +72 -46
  4. package/dist/{SiteChromeCustomizeContext-CqGOz-Kv.mjs → SiteChromeCustomizeContext-D8LePX8x.mjs} +681 -196
  5. package/dist/_dts/api/src/contentRuntime.d.ts +12 -31
  6. package/dist/_dts/api/src/domainConnection.d.ts +4 -0
  7. package/dist/_dts/api/src/footerCompositionContracts.d.ts +25 -0
  8. package/dist/_dts/api/src/index.d.ts +1 -1
  9. package/dist/_dts/api/src/launchReadiness.d.ts +1 -0
  10. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +2 -1
  11. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -26
  12. package/dist/_dts/api/src/siteOnboarding.d.ts +7 -0
  13. package/dist/_dts/billing/src/site-arrangements.d.ts +12 -3
  14. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -0
  15. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -0
  16. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +2 -0
  17. package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +122 -0
  18. package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +2 -1
  19. package/dist/_dts/blocks/src/system/blocks/events/shared/eventSelection.d.ts +11 -0
  20. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
  21. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -47
  22. package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +5 -0
  23. package/dist/_dts/blocks/src/system/data/utils.d.ts +1 -1
  24. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +27 -1
  25. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +12 -180
  26. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +6 -90
  27. package/dist/_dts/blocks/src/system/runtime/hooks/useEventFilters.d.ts +2 -1
  28. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +5 -1
  29. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +4 -0
  30. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.state.d.ts +5 -0
  31. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.d.ts +3 -0
  32. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.state.d.ts +10 -3
  33. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventCheckoutHandoffRestore.d.ts +9 -0
  34. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +4 -5
  35. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useSettledCommerceView.d.ts +37 -0
  36. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +4 -3
  37. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +3 -0
  38. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +11 -101
  39. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +7 -2
  40. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/listOptions.d.ts +2 -0
  41. package/dist/_dts/blocks/src/system/transforms/registry/eventCalendar.d.ts +12 -0
  42. package/dist/_dts/commerce/src/purchase/bookingInstalmentSchedule.d.ts +4 -0
  43. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +3 -0
  44. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +27 -1
  45. package/dist/_dts/sdk/src/public-api/contracts.d.ts +1 -1
  46. package/dist/_dts/sdk/src/version.d.ts +1 -1
  47. package/dist/_dts/theme-core/src/ThemeFontLoader.d.ts +17 -1
  48. package/dist/_dts/theme-core/src/buttons/affordanceSuppression.d.ts +17 -0
  49. package/dist/_dts/theme-core/src/buttons/buttonColourContract.d.ts +1 -1
  50. package/dist/_dts/theme-core/src/buttons/classNames.d.ts +16 -0
  51. package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +0 -6
  52. package/dist/_dts/theme-core/src/buttons/resolvedButtonCss.d.ts +4 -4
  53. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  54. package/dist/_dts/theme-core/src/hosted-booking-appearance.d.ts +54 -12
  55. package/dist/_dts/theme-core/src/index.d.ts +1 -1
  56. package/dist/client/{BookingConsentAgreement-CuKa82V4.mjs → BookingConsentAgreement-xJeYNdnb.mjs} +2 -2
  57. package/dist/client/{DiscountCodeDisclosure-BbYieKWB.mjs → DiscountCodeDisclosure-DdT6uzl9.mjs} +1 -1
  58. package/dist/client/{EventCombined.client-LTfR1Aby.mjs → EventCombined.client-Cp28uYuM.mjs} +11 -15
  59. package/dist/client/{EventListing.client-DUHpYSuo.mjs → EventListing.client-CD6AJsMr.mjs} +4 -17
  60. package/dist/client/{LeafletStaticMap-CHRupL6m.mjs → LeafletStaticMap-DBsAi9-e.mjs} +1 -1
  61. package/dist/client/{accordion-6HiIFxNL.mjs → accordion-6dwbOKYR.mjs} +1 -1
  62. package/dist/client/{bookingForm-Dlmid43H.mjs → bookingForm-CZE9_qPQ.mjs} +5 -5
  63. package/dist/client/bookings.mjs +175 -93
  64. package/dist/client/{carousel-DmkZRRq_.mjs → carousel-7VHGQARz.mjs} +1 -1
  65. package/dist/client/{cart-CIC24330.mjs → cart-Qg_mvQhh.mjs} +3 -3
  66. package/dist/client/{checkout-D1Zw9imo.mjs → checkout-D84rpgdr.mjs} +3 -3
  67. package/dist/client/client.mjs +602 -139
  68. package/dist/client/{context-Cy1OayHx.mjs → context-Ctp3T0Wr.mjs} +1 -1
  69. package/dist/client/{dates-aDcfoLHr.mjs → dates-DJKFcI_N.mjs} +2 -2
  70. package/dist/client/{eventCalendar-FQxMPAjf.mjs → eventCalendar-CK31z3vs.mjs} +11 -7
  71. package/dist/client/{eventCombined-Dr3ac6Hb.mjs → eventCombined-DiXd-ewn.mjs} +3 -3
  72. package/dist/client/{eventDetails-D-AzUHFQ.mjs → eventDetails-CTRgt2DK.mjs} +4 -4
  73. package/dist/client/{eventListing-B3XxBf3i.mjs → eventListing-Dy9vi_j_.mjs} +3 -3
  74. package/dist/client/{eventRegistration-I6EaokFD.mjs → eventRegistration-CnalYMr2.mjs} +124 -31
  75. package/dist/client/{form-BbWckVWY.mjs → form-eUiMveTT.mjs} +2 -2
  76. package/dist/client/{headerSection-C9qU4Y7x.mjs → headerSection-Dy9kQpB1.mjs} +2 -2
  77. package/dist/client/hooks.mjs +247 -32
  78. package/dist/client/{locationMap-CLCShvlG.mjs → locationMap-DalCmWU0.mjs} +2 -2
  79. package/dist/client/{newsletterForm-Briukxzi.mjs → newsletterForm-SDDPvhS0.mjs} +23 -10
  80. package/dist/client/{pricing-Copadu-2.mjs → pricing-OcMz4SnX.mjs} +1 -1
  81. package/dist/client/{productDetail-oujlRd-r.mjs → productDetail-BQrgHElM.mjs} +3 -3
  82. package/dist/client/{productList-BRiIRUcd.mjs → productList-OnPn_UJj.mjs} +3 -3
  83. package/dist/client/{propsDecoder-CB2KS_ko.mjs → propsDecoder-zBdsnS-N.mjs} +38 -8
  84. package/dist/client/rendering/client.mjs +446 -121
  85. package/dist/client/rendering/islands.mjs +17 -17
  86. package/dist/client/rendering.mjs +601 -138
  87. package/dist/client/{scrollToBlock-B1IS1_ua.mjs → scrollToBlock-BNM4Ob2Y.mjs} +28 -11
  88. package/dist/client/{shop-Vn6yNFED.mjs → shop-Bv1fPTwQ.mjs} +6 -6
  89. package/dist/client/{shop-commerce-BVTqipYp.mjs → shop-commerce-D4KNGaW8.mjs} +5 -5
  90. package/dist/client/{shop-commerce-store-BVnJVy7v.mjs → shop-commerce-store-2N5EV0Rc.mjs} +1 -1
  91. package/dist/client/{shopShared-COIeK77T.mjs → shopShared-DvJGdHTV.mjs} +3 -3
  92. package/dist/client/{useEventFilters-DzIUcS9n.mjs → useEventFilters-BBBvGDHQ.mjs} +17 -11
  93. package/dist/preview-next/client/runtime.mjs +3 -3
  94. package/dist/preview-next/editor-chrome.css +4 -8
  95. package/dist/{sdk-runtime-CnCLvZRv.mjs → sdk-runtime-Defnbfzw.mjs} +1 -1
  96. package/dist/{separator-DKDRJ1oH.mjs → separator-CZXO3Sb0.mjs} +1 -1
  97. package/dist/server/components.mjs +384 -62
  98. package/dist/server/config-validation.mjs +232 -26
  99. package/dist/server/config.mjs +232 -26
  100. package/dist/server/data.mjs +247 -32
  101. package/dist/server/index.mjs +1 -1
  102. package/dist/server/next.mjs +400 -69
  103. package/dist/server/page-converter.mjs +189 -25
  104. package/dist/server/prebuild.mjs +1 -1
  105. package/dist/server/rendering/server.mjs +399 -68
  106. package/dist/server/rendering.mjs +399 -68
  107. package/dist/server/routing.mjs +261 -33
  108. package/dist/server/server.mjs +248 -33
  109. package/dist/server/theme-bridge.mjs +47 -15
  110. package/dist/server/theme.mjs +1 -1
  111. package/dist/styles/index.css +28 -2
  112. package/package.json +1 -1
@@ -3,18 +3,22 @@ import type { EligibilityData } from './types';
3
3
  export type EligibilityLookupState = {
4
4
  tag: 'idle';
5
5
  eligibility: null;
6
+ settledRequestKey: null;
6
7
  error: null;
7
8
  } | {
8
9
  tag: 'loading';
9
10
  eligibility: EligibilityData | null;
11
+ settledRequestKey: string | null;
10
12
  error: null;
11
13
  } | {
12
14
  tag: 'resolved';
13
15
  eligibility: EligibilityData;
16
+ settledRequestKey: string;
14
17
  error: null;
15
18
  } | {
16
19
  tag: 'failed';
17
20
  eligibility: null;
21
+ settledRequestKey: null;
18
22
  error: string;
19
23
  };
20
24
  export type EligibilityLookupAction = {
@@ -24,6 +28,7 @@ export type EligibilityLookupAction = {
24
28
  } | {
25
29
  type: 'resolved';
26
30
  eligibility: EligibilityData;
31
+ requestKey: string;
27
32
  } | {
28
33
  type: 'failed';
29
34
  message: string;
@@ -13,4 +13,7 @@ export declare function useDiscountCodeUi(options: {
13
13
  manualCodeEntryAllowed: boolean;
14
14
  autoAppliedDiscount: import("../../api/types").AutoAppliedDiscountPreview | null;
15
15
  discountsAvailableLoading: boolean;
16
+ discountAvailabilityRequestKey: string;
17
+ settledDiscountAvailabilityRequestKey: string | null;
16
18
  };
19
+ export type UseDiscountCodeUiResult = ReturnType<typeof useDiscountCodeUi>;
@@ -11,14 +11,19 @@ type DiscountAvailabilityState = Readonly<{
11
11
  tag: 'disabled';
12
12
  }> | Readonly<{
13
13
  tag: 'loading';
14
- }> | Readonly<{
14
+ previous: SettledDiscountAvailabilityState | null;
15
+ }> | SettledDiscountAvailabilityState | Readonly<{
16
+ tag: 'error';
17
+ requestKey: string;
18
+ }>;
19
+ type SettledDiscountAvailabilityState = Readonly<{
15
20
  tag: 'unavailable';
21
+ requestKey: string;
16
22
  }> | Readonly<{
17
23
  tag: 'available';
24
+ requestKey: string;
18
25
  manualCodeEntryAllowed: boolean;
19
26
  autoAppliedDiscount: AutoAppliedDiscountPreview | null;
20
- }> | Readonly<{
21
- tag: 'error';
22
27
  }>;
23
28
  export type DiscountCodeUiState = Readonly<{
24
29
  discountUiOpen: boolean;
@@ -31,9 +36,11 @@ export type DiscountCodeUiEvent = Readonly<{
31
36
  type: 'availability-loading';
32
37
  }> | Readonly<{
33
38
  type: 'availability-loaded';
39
+ requestKey: string;
34
40
  response: DiscountsAvailableResponse;
35
41
  }> | Readonly<{
36
42
  type: 'availability-failed';
43
+ requestKey: string;
37
44
  }> | Readonly<{
38
45
  type: 'discount-code-changed';
39
46
  code: string;
@@ -0,0 +1,9 @@
1
+ type CheckoutHandoffRestoreDeps = Readonly<{
2
+ addPageShowListener: (listener: (event: PageTransitionEvent) => void) => void;
3
+ removePageShowListener: (listener: (event: PageTransitionEvent) => void) => void;
4
+ reloadAtRegistration: () => void;
5
+ }>;
6
+ export declare function eventRegistrationReloadTarget(location: Pick<Location, 'pathname' | 'search'>): string;
7
+ export declare function useEventCheckoutHandoffRestore(active: boolean): void;
8
+ export declare function useEventCheckoutHandoffRestoreWithDeps(active: boolean, deps: CheckoutHandoffRestoreDeps): void;
9
+ export {};
@@ -1,5 +1,4 @@
1
1
  import type { EventRegistrationErrorAction } from '../../../../../../commerce/src/purchase/index';
2
- import type { DiscountContext } from '../../api/types';
3
2
  import type { EventTicketSelectionLine, EventRegistrationClientProps, EligibilityData, FormData, Guest, GuestErrors, PaymentSelection, PaymentStepState, PublicEvent, RegistrationEvent, RegistrationResult, RegistrationStep } from './types';
4
3
  import { usePortalAuth, useEligibility, useExistingEventRegistration } from './hooks';
5
4
  import { useWaitlistClaim } from '../../shared/useWaitlistClaim';
@@ -81,7 +80,7 @@ export declare function useEventRegistrationWizard(options: UseEventRegistration
81
80
  }> | null;
82
81
  slidingScaleSelectionMessage: string | null;
83
82
  selectedTicketType: import("../../..").EventRegistrationPricingOption | null;
84
- ticketSelectionSummaryLines: {
83
+ ticketSelectionSummaryLines: readonly {
85
84
  pricingOptionId: string | null;
86
85
  label: string;
87
86
  quantity: number;
@@ -145,7 +144,7 @@ export declare function useEventRegistrationWizard(options: UseEventRegistration
145
144
  manualCodeEntryAllowed: boolean;
146
145
  autoAppliedDiscount: import("../../api/types").AutoAppliedDiscountPreview | null;
147
146
  discountsAvailableLoading: boolean;
148
- discountContext: DiscountContext | null;
147
+ discountContext: import("../../api").DiscountContext | null;
149
148
  shouldShowDiscountToggle: boolean;
150
149
  verification: import("./useEventRegistrationStripeReturn").EventRegistrationStripeReturnResult;
151
150
  handleDetailsComplete: () => Promise<EventRegistrationDetailsCompleteResult>;
@@ -207,7 +206,7 @@ export declare function useEventRegistrationWizardWithDeps(options: UseEventRegi
207
206
  }> | null;
208
207
  slidingScaleSelectionMessage: string | null;
209
208
  selectedTicketType: import("../../..").EventRegistrationPricingOption | null;
210
- ticketSelectionSummaryLines: {
209
+ ticketSelectionSummaryLines: readonly {
211
210
  pricingOptionId: string | null;
212
211
  label: string;
213
212
  quantity: number;
@@ -271,7 +270,7 @@ export declare function useEventRegistrationWizardWithDeps(options: UseEventRegi
271
270
  manualCodeEntryAllowed: boolean;
272
271
  autoAppliedDiscount: import("../../api/types").AutoAppliedDiscountPreview | null;
273
272
  discountsAvailableLoading: boolean;
274
- discountContext: DiscountContext | null;
273
+ discountContext: import("../../api").DiscountContext | null;
275
274
  shouldShowDiscountToggle: boolean;
276
275
  verification: import("./useEventRegistrationStripeReturn").EventRegistrationStripeReturnResult;
277
276
  handleDetailsComplete: () => Promise<EventRegistrationDetailsCompleteResult>;
@@ -0,0 +1,37 @@
1
+ import type { BlockApiClient } from '../../api';
2
+ import type { DiscountContext } from '../../api/types';
3
+ import type { UseEligibilityResult } from './hooks';
4
+ import type { EligibilityData, PaymentSelection, RegistrationEvent } from './types';
5
+ import type { useDiscountCodeUi } from './useDiscountCodeUi';
6
+ export declare function useSettledCommerceView(input: Readonly<{
7
+ api: BlockApiClient;
8
+ useDiscountCodeUi: typeof useDiscountCodeUi;
9
+ eligibilityResult: UseEligibilityResult;
10
+ eligibility: EligibilityData | null;
11
+ currentEvent: RegistrationEvent | null;
12
+ paymentSelection: PaymentSelection;
13
+ eventRequiresPayment: boolean;
14
+ ticketsCount: number;
15
+ }>): {
16
+ discountUi: {
17
+ discountUiOpen: boolean;
18
+ setDiscountUiOpen: (isOpen: boolean) => void;
19
+ discountCode: string;
20
+ setDiscountCode: (code: string) => void;
21
+ discountsAvailable: boolean;
22
+ manualCodeEntryAllowed: boolean;
23
+ autoAppliedDiscount: import("../../api/types").AutoAppliedDiscountPreview | null;
24
+ discountsAvailableLoading: boolean;
25
+ discountAvailabilityRequestKey: string;
26
+ settledDiscountAvailabilityRequestKey: string | null;
27
+ };
28
+ discountContext: DiscountContext | null;
29
+ ticketSelectionSubtotalCents: number | null;
30
+ ticketSelectionSummaryLines: readonly {
31
+ pricingOptionId: string | null;
32
+ label: string;
33
+ quantity: number;
34
+ unitPriceCents: number;
35
+ subtotalCents: number;
36
+ }[];
37
+ };
@@ -3,7 +3,7 @@ import type { PublicEvent, ButtonVariant, EventLayout, ColumnOption, WeekStart,
3
3
  import type { CardRole } from "../../../../../../theme-core/src/cards/index";
4
4
  import { type CalendarViewLoadState } from "../../hooks/useCalendarEvents";
5
5
  import type { EventCombinedInteractiveIslandProps } from "./EventCombined.interactive";
6
- import type { EventCollectionHydration } from './shared/eventCollectionContract';
6
+ import type { EventCollectionHydration } from "./shared/eventCollectionContract";
7
7
  import { type CalendarDate, type CalendarViewport } from "./shared";
8
8
  import { type EventListPaginationAction, type EventPageSize } from "./shared/listOptions";
9
9
  import { type CalendarViewToggleOption } from "./shared/calendarViewOptions";
@@ -25,6 +25,7 @@ export type EventCombinedClientProps = Readonly<{
25
25
  eventSurface?: EventSurfaceScope | null;
26
26
  filterEventPresets?: string | null;
27
27
  scheduleScope?: EventScheduleScope | null;
28
+ seriesIds?: string | null;
28
29
  filterCategoryIds?: string | null;
29
30
  filterStaffMemberId?: string | null;
30
31
  filterVenueId?: string | null;
@@ -36,8 +37,8 @@ export type EventCombinedClientProps = Readonly<{
36
37
  buttonText?: string;
37
38
  emptyMessage?: string;
38
39
  className?: string;
39
- calendarContext: EventCollectionHydration['calendarContext'];
40
- calendarWindow?: EventCollectionHydration['calendarWindow'];
40
+ calendarContext: EventCollectionHydration["calendarContext"];
41
+ calendarWindow?: EventCollectionHydration["calendarWindow"];
41
42
  }>;
42
43
  export type EventCombinedIslandClientProps = EventCombinedInteractiveIslandProps;
43
44
  type EventCombinedCalendarTabProps = Readonly<{
@@ -42,6 +42,7 @@ export declare const eventCombinedBlockRuntime: Readonly<{
42
42
  eventSurface?: import("../../..").EventSurfaceScope | null;
43
43
  filterEventPresets?: readonly string[] | string | null;
44
44
  scheduleScope?: import("../../..").EventScheduleScope | null;
45
+ seriesIds?: readonly string[] | string | null;
45
46
  filterCategoryIds?: readonly string[] | string | null;
46
47
  filterStaffMemberId?: string | null;
47
48
  filterVenueId?: string | null;
@@ -98,6 +99,7 @@ export declare const eventCombinedBlockRuntime: Readonly<{
98
99
  eventSurface?: import("../../..").EventSurfaceScope | null;
99
100
  filterEventPresets?: readonly string[] | string | null;
100
101
  scheduleScope?: import("../../..").EventScheduleScope | null;
102
+ seriesIds?: readonly string[] | string | null;
101
103
  filterCategoryIds?: readonly string[] | string | null;
102
104
  filterStaffMemberId?: string | null;
103
105
  filterVenueId?: string | null;
@@ -133,6 +135,7 @@ export declare const eventCombinedBlockRuntime: Readonly<{
133
135
  eventSurface?: import("../../..").EventSurfaceScope | null;
134
136
  filterEventPresets?: readonly string[] | string | null;
135
137
  scheduleScope?: import("../../..").EventScheduleScope | null;
138
+ seriesIds?: readonly string[] | string | null;
136
139
  filterCategoryIds?: readonly string[] | string | null;
137
140
  filterStaffMemberId?: string | null;
138
141
  filterVenueId?: string | null;
@@ -1,8 +1,9 @@
1
+ import type { EventCollectionSourceProps } from "./shared/eventCollectionContract";
1
2
  import { type CardRole } from "../../../../../../theme-core/src/cards/index";
2
3
  import type { ButtonVariant, CardOrientation, ColumnOption, EventLayout, EventScheduleScope, EventSurfaceScope, FilterAutoShow, PublicEvent } from "../../../blocks/events/shared/types";
3
4
  import { type InteractiveIslandProps } from "../../../../contracts/islands";
4
5
  import { type EventListPaginationAction, type EventListPaginationMode, type EventPageSize } from "./shared/listOptions";
5
- export type EventListingSourceProps = Readonly<{
6
+ export type EventListingSourceProps = Pick<EventCollectionSourceProps, "showFilters" | "showCategoryFilter" | "showVenueFilter" | "showStaffFilter" | "eventSurface" | "filterEventPresets" | "scheduleScope" | "seriesIds" | "filterCategoryIds" | "filterStaffMemberId" | "filterVenueId"> & Readonly<{
6
7
  events?: PublicEvent[] | null;
7
8
  siteId: string;
8
9
  apiBaseUrl?: string;
@@ -21,16 +22,6 @@ export type EventListingSourceProps = Readonly<{
21
22
  showCapacity?: boolean;
22
23
  emptyMessage?: string;
23
24
  className?: string;
24
- showFilters?: boolean | null;
25
- showCategoryFilter?: FilterAutoShow;
26
- showVenueFilter?: boolean | null;
27
- showStaffFilter?: boolean | null;
28
- eventSurface?: EventSurfaceScope | null;
29
- filterEventPresets?: readonly string[] | string | null;
30
- scheduleScope?: EventScheduleScope | null;
31
- filterCategoryIds?: readonly string[] | string | null;
32
- filterStaffMemberId?: string | null;
33
- filterVenueId?: string | null;
34
25
  }>;
35
26
  export type EventListingDisplay = Readonly<{
36
27
  kind: "event-listing";
@@ -61,6 +52,7 @@ export type EventListingHydration = Readonly<{
61
52
  eventSurface: EventSurfaceScope;
62
53
  filterEventPresets: string | null;
63
54
  scheduleScope: EventScheduleScope;
55
+ seriesIds?: string | null;
64
56
  filterCategoryIds?: string | null;
65
57
  filterStaffMemberId?: string | null;
66
58
  filterVenueId?: string | null;
@@ -74,36 +66,7 @@ type EventListingIslandMeta = Readonly<{
74
66
  export type EventListingInteractiveIslandProps = InteractiveIslandProps<EventListingIslandMeta, "event-listing", typeof eventListingBlockRuntime>;
75
67
  export declare const eventListingBlockRuntime: Readonly<{
76
68
  kind: "progressive";
77
- buildRender: (source: Readonly<{
78
- events?: PublicEvent[] | null;
79
- siteId: string;
80
- apiBaseUrl?: string;
81
- stage?: "preview" | "published";
82
- layout?: EventLayout;
83
- columns?: ColumnOption;
84
- eventsPerPage?: string;
85
- paginationMode?: EventListPaginationMode;
86
- seeAllUrl?: string;
87
- loadMoreText?: string;
88
- cardRole?: CardRole;
89
- buttonVariant?: ButtonVariant;
90
- buttonText?: string;
91
- showVenue?: boolean;
92
- showMap?: boolean;
93
- showCapacity?: boolean;
94
- emptyMessage?: string;
95
- className?: string;
96
- showFilters?: boolean | null;
97
- showCategoryFilter?: FilterAutoShow;
98
- showVenueFilter?: boolean | null;
99
- showStaffFilter?: boolean | null;
100
- eventSurface?: EventSurfaceScope | null;
101
- filterEventPresets?: readonly string[] | string | null;
102
- scheduleScope?: EventScheduleScope | null;
103
- filterCategoryIds?: readonly string[] | string | null;
104
- filterStaffMemberId?: string | null;
105
- filterVenueId?: string | null;
106
- }>) => Readonly<{
69
+ buildRender: (source: EventListingSourceProps) => Readonly<{
107
70
  display: Readonly<{
108
71
  kind: "event-listing";
109
72
  state: "loading" | "empty" | "ready";
@@ -133,6 +96,7 @@ export declare const eventListingBlockRuntime: Readonly<{
133
96
  eventSurface: EventSurfaceScope;
134
97
  filterEventPresets: string | null;
135
98
  scheduleScope: EventScheduleScope;
99
+ seriesIds?: string | null;
136
100
  filterCategoryIds?: string | null;
137
101
  filterStaffMemberId?: string | null;
138
102
  filterVenueId?: string | null;
@@ -141,66 +105,8 @@ export declare const eventListingBlockRuntime: Readonly<{
141
105
  }>;
142
106
  contracts: Readonly<{
143
107
  source: Readonly<{
144
- encode: (value: Readonly<{
145
- events?: PublicEvent[] | null;
146
- siteId: string;
147
- apiBaseUrl?: string;
148
- stage?: "preview" | "published";
149
- layout?: EventLayout;
150
- columns?: ColumnOption;
151
- eventsPerPage?: string;
152
- paginationMode?: EventListPaginationMode;
153
- seeAllUrl?: string;
154
- loadMoreText?: string;
155
- cardRole?: CardRole;
156
- buttonVariant?: ButtonVariant;
157
- buttonText?: string;
158
- showVenue?: boolean;
159
- showMap?: boolean;
160
- showCapacity?: boolean;
161
- emptyMessage?: string;
162
- className?: string;
163
- showFilters?: boolean | null;
164
- showCategoryFilter?: FilterAutoShow;
165
- showVenueFilter?: boolean | null;
166
- showStaffFilter?: boolean | null;
167
- eventSurface?: EventSurfaceScope | null;
168
- filterEventPresets?: readonly string[] | string | null;
169
- scheduleScope?: EventScheduleScope | null;
170
- filterCategoryIds?: readonly string[] | string | null;
171
- filterStaffMemberId?: string | null;
172
- filterVenueId?: string | null;
173
- }>) => unknown;
174
- decode: (input: unknown) => import("../../../../contracts").DecodeResult<Readonly<{
175
- events?: PublicEvent[] | null;
176
- siteId: string;
177
- apiBaseUrl?: string;
178
- stage?: "preview" | "published";
179
- layout?: EventLayout;
180
- columns?: ColumnOption;
181
- eventsPerPage?: string;
182
- paginationMode?: EventListPaginationMode;
183
- seeAllUrl?: string;
184
- loadMoreText?: string;
185
- cardRole?: CardRole;
186
- buttonVariant?: ButtonVariant;
187
- buttonText?: string;
188
- showVenue?: boolean;
189
- showMap?: boolean;
190
- showCapacity?: boolean;
191
- emptyMessage?: string;
192
- className?: string;
193
- showFilters?: boolean | null;
194
- showCategoryFilter?: FilterAutoShow;
195
- showVenueFilter?: boolean | null;
196
- showStaffFilter?: boolean | null;
197
- eventSurface?: EventSurfaceScope | null;
198
- filterEventPresets?: readonly string[] | string | null;
199
- scheduleScope?: EventScheduleScope | null;
200
- filterCategoryIds?: readonly string[] | string | null;
201
- filterStaffMemberId?: string | null;
202
- filterVenueId?: string | null;
203
- }>>;
108
+ encode: (value: EventListingSourceProps) => unknown;
109
+ decode: (input: unknown) => import("../../../../contracts").DecodeResult<EventListingSourceProps>;
204
110
  }>;
205
111
  render: Readonly<{
206
112
  encode: (value: Readonly<{
@@ -233,6 +139,7 @@ export declare const eventListingBlockRuntime: Readonly<{
233
139
  eventSurface: EventSurfaceScope;
234
140
  filterEventPresets: string | null;
235
141
  scheduleScope: EventScheduleScope;
142
+ seriesIds?: string | null;
236
143
  filterCategoryIds?: string | null;
237
144
  filterStaffMemberId?: string | null;
238
145
  filterVenueId?: string | null;
@@ -269,6 +176,7 @@ export declare const eventListingBlockRuntime: Readonly<{
269
176
  eventSurface: EventSurfaceScope;
270
177
  filterEventPresets: string | null;
271
178
  scheduleScope: EventScheduleScope;
179
+ seriesIds?: string | null;
272
180
  filterCategoryIds?: string | null;
273
181
  filterStaffMemberId?: string | null;
274
182
  filterVenueId?: string | null;
@@ -317,6 +225,7 @@ export declare const eventListingInteractiveIslandPropsCodec: Readonly<{
317
225
  eventSurface: EventSurfaceScope;
318
226
  filterEventPresets: string | null;
319
227
  scheduleScope: EventScheduleScope;
228
+ seriesIds?: string | null;
320
229
  filterCategoryIds?: string | null;
321
230
  filterStaffMemberId?: string | null;
322
231
  filterVenueId?: string | null;
@@ -362,6 +271,7 @@ export declare const eventListingInteractiveIslandPropsCodec: Readonly<{
362
271
  eventSurface: EventSurfaceScope;
363
272
  filterEventPresets: string | null;
364
273
  scheduleScope: EventScheduleScope;
274
+ seriesIds?: string | null;
365
275
  filterCategoryIds?: string | null;
366
276
  filterStaffMemberId?: string | null;
367
277
  filterVenueId?: string | null;
@@ -1,8 +1,8 @@
1
1
  import { z } from "zod";
2
- import { type CalendarWindowPage } from '../../../../blocks/events/shared/calendarWindow';
2
+ import { type CalendarWindowPage } from "../../../../blocks/events/shared/calendarWindow";
3
3
  import { type CardRole } from "../../../../../../../theme-core/src/cards/index";
4
4
  import { type BookingTimeZone } from "../../../../../../../core/src/index";
5
- import type { CalendarDate } from '../../../../../../../calendar/src/index';
5
+ import type { CalendarDate } from "../../../../../../../calendar/src/index";
6
6
  import type { ButtonVariant, CalendarTabViews, CalendarView, ColumnOption, EventLayout, EventScheduleScope, EventSurfaceScope, FilterAutoShow, PublicEvent, WeekStart } from "../../../../blocks/events/shared/types";
7
7
  import { type EventListPaginationAction, type EventListPaginationMode, type EventPageSize } from "./listOptions";
8
8
  import type { EventListingDisplay } from "../EventListing.interactive";
@@ -28,6 +28,7 @@ export type EventCollectionSourceProps = Readonly<{
28
28
  eventSurface?: EventSurfaceScope | null;
29
29
  filterEventPresets?: readonly string[] | string | null;
30
30
  scheduleScope?: EventScheduleScope | null;
31
+ seriesIds?: readonly string[] | string | null;
31
32
  filterCategoryIds?: readonly string[] | string | null;
32
33
  filterStaffMemberId?: string | null;
33
34
  filterVenueId?: string | null;
@@ -57,6 +58,7 @@ export type EventCollectionDisplay = Readonly<{
57
58
  eventSurface: EventSurfaceScope;
58
59
  filterEventPresets: string | null;
59
60
  scheduleScope: EventScheduleScope;
61
+ seriesIds?: string | null;
60
62
  filterCategoryIds: string | null;
61
63
  filterStaffMemberId: string | null;
62
64
  filterVenueId: string | null;
@@ -102,6 +104,7 @@ export declare const eventCollectionFilterSourceSchemaShape: {
102
104
  recurring: "recurring";
103
105
  oneOff: "oneOff";
104
106
  }>>>;
107
+ readonly seriesIds: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>>;
105
108
  readonly filterCategoryIds: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>>;
106
109
  readonly filterStaffMemberId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
107
110
  readonly filterVenueId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -147,6 +150,7 @@ export declare const eventCollectionSourceSchemaShape: {
147
150
  recurring: "recurring";
148
151
  oneOff: "oneOff";
149
152
  }>>>;
153
+ readonly seriesIds: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>>;
150
154
  readonly filterCategoryIds: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>>;
151
155
  readonly filterStaffMemberId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
152
156
  readonly filterVenueId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -2162,6 +2166,7 @@ export declare const eventCollectionDisplaySchemaShape: {
2162
2166
  recurring: "recurring";
2163
2167
  oneOff: "oneOff";
2164
2168
  }>;
2169
+ readonly seriesIds: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2165
2170
  readonly filterCategoryIds: z.ZodNullable<z.ZodString>;
2166
2171
  readonly filterStaffMemberId: z.ZodNullable<z.ZodString>;
2167
2172
  readonly filterVenueId: z.ZodNullable<z.ZodString>;
@@ -27,6 +27,7 @@ export declare function resolveEventListPaginationAction(input: {
27
27
  defaultLabel?: string;
28
28
  }): EventListPaginationAction;
29
29
  export type EventRuntimeFilters = Readonly<{
30
+ seriesIds?: string;
30
31
  categoryIds?: string;
31
32
  staffMemberId?: string;
32
33
  venueId?: string;
@@ -36,6 +37,7 @@ export type EventRuntimeFilters = Readonly<{
36
37
  }>;
37
38
  export type EventRuntimeFiltersDraft = Writable<EventRuntimeFilters>;
38
39
  export type EventRuntimeFilterInput = Readonly<{
40
+ seriesIds?: string | null;
39
41
  eventSurface?: EventSurfaceScope | null;
40
42
  filterEventPresets?: string | null;
41
43
  scheduleScope?: EventScheduleScope | null;
@@ -1,5 +1,17 @@
1
1
  import { z } from 'zod';
2
2
  import { type TransformDefinition } from './core';
3
+ declare const selectionParamSchema: z.ZodObject<{
4
+ key: z.ZodEnum<{
5
+ scheduleScope: "scheduleScope";
6
+ eventSurface: "eventSurface";
7
+ seriesIds: "seriesIds";
8
+ filterEventPresets: "filterEventPresets";
9
+ filterCategoryIds: "filterCategoryIds";
10
+ filterStaffMemberId: "filterStaffMemberId";
11
+ filterVenueId: "filterVenueId";
12
+ }>;
13
+ }, z.core.$strip>;
14
+ export declare const eventCalendarSelectionParam: TransformDefinition<z.infer<typeof selectionParamSchema>>;
3
15
  declare const readJobSchema: z.ZodObject<{
4
16
  job: z.ZodEnum<{
5
17
  calendar: "calendar";
@@ -6,6 +6,10 @@ export type BookingInstalmentScheduleRow = Readonly<{
6
6
  dueAt: string;
7
7
  amountCents: number;
8
8
  }>;
9
+ export declare function resolveBookingInitialInstalmentAmountCents(input: Readonly<{
10
+ totalAmountCents: number;
11
+ plan: BookingInstalmentPlanConfig;
12
+ }>): number;
9
13
  export declare function buildBookingInstalmentSchedule(input: Readonly<{
10
14
  anchorAt: string;
11
15
  totalAmountCents: number;
@@ -15595,6 +15595,7 @@ export type Database = {
15595
15595
  header_variant: string;
15596
15596
  homepage_id: string | null;
15597
15597
  homepage_path: string | null;
15598
+ hosted_booking_appearance: Json | null;
15598
15599
  legal_profile: Json | null;
15599
15600
  logo_asset_id: string | null;
15600
15601
  notification_email: string | null;
@@ -15629,6 +15630,7 @@ export type Database = {
15629
15630
  header_variant?: string;
15630
15631
  homepage_id?: string | null;
15631
15632
  homepage_path?: string | null;
15633
+ hosted_booking_appearance?: Json | null;
15632
15634
  legal_profile?: Json | null;
15633
15635
  logo_asset_id?: string | null;
15634
15636
  notification_email?: string | null;
@@ -15663,6 +15665,7 @@ export type Database = {
15663
15665
  header_variant?: string;
15664
15666
  homepage_id?: string | null;
15665
15667
  homepage_path?: string | null;
15668
+ hosted_booking_appearance?: Json | null;
15666
15669
  legal_profile?: Json | null;
15667
15670
  logo_asset_id?: string | null;
15668
15671
  notification_email?: string | null;
@@ -12,6 +12,12 @@ export type SiteOptionLoadItems = (args: SiteOptionLoadItemsArgs) => Promise<Sit
12
12
  export type SiteOptionLoadErrorMapper = (error: unknown, args: SiteOptionLoadItemsArgs) => unknown;
13
13
  export type SiteOptionManageLinkRenderers = Partial<Readonly<Record<SiteOptionSource, SiteOptionWidgetAdapter['renderManageLink']>>>;
14
14
  export declare const siteOptionWidgetLabels: {
15
+ readonly eventSeries: {
16
+ readonly loading: "Loading events...";
17
+ readonly select: "Choose events";
18
+ readonly empty: "No events available. Create an event in Bookings first.";
19
+ readonly emptySelection: "Choose at least one event to show in this block.";
20
+ };
15
21
  readonly eventCategories: {
16
22
  readonly loading: "Loading categories...";
17
23
  readonly select: "Select categories";
@@ -32,14 +38,34 @@ export declare const siteOptionWidgetLabels: {
32
38
  };
33
39
  };
34
40
  export declare const siteOptionLoadFailureMessages: {
41
+ readonly eventSeries: "We couldn't load your events. Please try again.";
35
42
  readonly eventCategories: "Failed to load event categories";
36
43
  readonly venues: "Failed to load venues";
37
44
  readonly staffMembers: "Failed to load staff members";
38
45
  };
39
46
  export declare function mapEventCategoriesToSiteOptionItems(payload: ListEventCategoriesResponse): SiteOptionWidgetItem[];
47
+ export declare function mapEventsToSiteOptionItems(events: readonly Readonly<{
48
+ title: string;
49
+ slug: string;
50
+ schedules: {
51
+ kind: 'ordinary';
52
+ schedule: {
53
+ id: string;
54
+ };
55
+ } | {
56
+ kind: 'wholeSeries';
57
+ runs: readonly {
58
+ id: string;
59
+ title: string;
60
+ slug: string;
61
+ status?: string;
62
+ visibility?: string;
63
+ }[];
64
+ };
65
+ }>[]): SiteOptionWidgetItem[];
40
66
  export declare function mapVenuesToSiteOptionItems(payload: ListVenuesResponse): SiteOptionWidgetItem[];
41
67
  export declare function mapStaffMembersToSiteOptionItems(payload: ListAppointmentResourcesResponse): SiteOptionWidgetItem[];
42
- export declare function loadSiteOptionItemsFromApi({ apiClient, siteId, source, }: SiteOptionLoadItemsArgs & Readonly<{
68
+ export declare function loadSiteOptionItemsFromApi({ apiClient, siteId, source }: SiteOptionLoadItemsArgs & Readonly<{
43
69
  apiClient: ApiClient;
44
70
  }>): Promise<SiteOptionWidgetItem[]>;
45
71
  export declare function createSiteOptionApiLoader(apiClient: ApiClient): SiteOptionLoadItems;
@@ -286,7 +286,7 @@ export type SiteRouteRecord = {
286
286
  publishedAt?: string | null;
287
287
  };
288
288
  export type SiteBookingOfferingPresetSummary = ApiSiteBookingOfferingPresetSummary;
289
- type SiteSelectionResponse = Pick<ApiSiteBySlugResponse, 'theme' | 'themeId' | 'bookingAttribution' | Extract<keyof ApiSiteBySlugResponse, `selection${string}`>>;
289
+ type SiteSelectionResponse = Pick<ApiSiteBySlugResponse, 'theme' | 'hostedBookingAppearance' | 'themeId' | 'bookingAttribution' | Extract<keyof ApiSiteBySlugResponse, `selection${string}`>>;
290
290
  export type SiteResponse = SiteSelectionResponse & {
291
291
  site: ApiSiteBySlugResponse['site'] & {
292
292
  id: string;
@@ -8,4 +8,4 @@
8
8
  * 1. This constant
9
9
  * 2. The "version" field in package.json
10
10
  */
11
- export declare const SDK_VERSION = "0.140.0";
11
+ export declare const SDK_VERSION = "0.141.0";
@@ -1,8 +1,24 @@
1
1
  import * as React from "react";
2
2
  import type { Theme, Typography } from "./schema";
3
3
  import type { SiteFont } from "./fonts/types";
4
+ /**
5
+ * Collect unique font families from typography config
6
+ */
7
+ type FontLoadingStyle = Readonly<{
8
+ family: string;
9
+ weight?: Typography['body']['weight'] | number;
10
+ }>;
11
+ type FontLoadingWeight = Readonly<{
12
+ weight?: Typography['body']['weight'] | number | null;
13
+ }>;
14
+ type FontLoadingTypography = Readonly<{
15
+ body: FontLoadingStyle;
16
+ headings: Readonly<{
17
+ default: FontLoadingStyle;
18
+ }> & Partial<Record<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6', FontLoadingWeight>>;
19
+ }>;
4
20
  type ThemeFontLoaderProps = {
5
- typography: Typography;
21
+ typography: FontLoadingTypography;
6
22
  /** Optional button font weight from theme.buttons.global.fontWeight */
7
23
  buttonFontWeight?: number;
8
24
  /** Optional extra weights to load for the body font (useful for UI labels, etc.) */
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Internal: the opt-out the generated affordance rule is written against.
3
+ *
4
+ * A button style may declare a trailing `affordance`, which the theme renders as
5
+ * a CSS `::after` on every button of that variant. An authored button that
6
+ * renders its own trailing icon must not also receive the theme's, or it shows
7
+ * two.
8
+ *
9
+ * Deliberately not exported from `./index`. This used to be public, and two
10
+ * block components reached past the theme to draw arrows of their own — one of
11
+ * them doubling up on the styles that declare an affordance, both of them
12
+ * overriding the twelve styles that deliberately declare none. Whether a button
13
+ * carries a trailing affordance is the style's decision; the only caller that
14
+ * legitimately opts out is the authored-button renderer, which reaches it
15
+ * through `themeButtonClassNameWithTrailingIcon`.
16
+ */
17
+ export declare const AFFORDANCE_SUPPRESS_CLASS = "rb-affordance-off";
@@ -16,7 +16,7 @@ export declare const BUTTON_CONTRAST_POLICY: {
16
16
  readonly nonTextMinimumRatio: 3;
17
17
  readonly gradientSamplesPerSegment: 20;
18
18
  readonly alphaBackgrounds: "reject-without-known-surface";
19
- readonly disabled: "retain-full-colour-contract";
19
+ readonly disabled: "validated-colour-pair-with-muted-control-opacity";
20
20
  };
21
21
  export type ButtonColourContractError = Readonly<{
22
22
  tag: 'unknown_palette_token';