@riverbankcms/sdk 0.139.0 → 0.140.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 (196) hide show
  1. package/README.md +1 -1
  2. package/dist/{PreviewEditorSidebar-BDeenhi3.mjs → PreviewEditorSidebar-CUyTzd5z.mjs} +4 -4
  3. package/dist/{PreviewEditorUI-DSRhgjF5.mjs → PreviewEditorUI-Agkw4v5i.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-D2K8GLUG.mjs → PreviewQueryProvider-CN0ewic5.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-CL7wSnYu.mjs → SdkPreviewModeRuntime-DdbeAdS8.mjs} +22 -8
  6. package/dist/{SiteChromeCustomizeContext-BhDn-5ir.mjs → SiteChromeCustomizeContext-CqGOz-Kv.mjs} +2053 -1110
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +165 -165
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +212 -212
  9. package/dist/_dts/api/src/accessAdmin.d.ts +74 -104
  10. package/dist/_dts/api/src/aiEndpoints.d.ts +5 -1
  11. package/dist/_dts/api/src/authSubmission.d.ts +46 -0
  12. package/dist/_dts/api/src/billing.d.ts +8 -4
  13. package/dist/_dts/api/src/billingEndpointDefinitions.d.ts +23 -0
  14. package/dist/_dts/api/src/billingEndpointTypes.d.ts +26 -0
  15. package/dist/_dts/api/src/blocks.d.ts +2 -0
  16. package/dist/_dts/api/src/bookingRecords.d.ts +1 -2
  17. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +8 -1
  18. package/dist/_dts/api/src/communications.d.ts +0 -1
  19. package/dist/_dts/api/src/contentRuntime.d.ts +8 -3
  20. package/dist/_dts/api/src/endpoints.d.ts +93 -64
  21. package/dist/_dts/api/src/event-destination-policy.d.ts +2 -1
  22. package/dist/_dts/api/src/footerSettings.d.ts +9 -6
  23. package/dist/_dts/api/src/index.d.ts +5 -6
  24. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  25. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  26. package/dist/_dts/api/src/mailingListIntegration.d.ts +8 -2
  27. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +1 -1
  28. package/dist/_dts/api/src/navigation/types.d.ts +1 -1
  29. package/dist/_dts/api/src/onboarding/confirmationResend.d.ts +25 -0
  30. package/dist/_dts/api/src/onboarding/surfaceData.d.ts +32 -32
  31. package/dist/_dts/api/src/publicBookingAvailabilityEndpointDefinitions.d.ts +8 -0
  32. package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +1 -0
  33. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +11 -3
  34. package/dist/_dts/api/src/publicExperience/sharedTypes.d.ts +3 -29
  35. package/dist/_dts/api/src/publicOnboardingAttemptEndpointDefinitions.d.ts +65 -0
  36. package/dist/_dts/api/src/saveOutcome.d.ts +20 -0
  37. package/dist/_dts/api/src/sdkContracts.d.ts +3 -22
  38. package/dist/_dts/api/src/sdkPushContracts.d.ts +18 -0
  39. package/dist/_dts/api/src/sdkThemeWire.d.ts +44 -44
  40. package/dist/_dts/api/src/settings/permissions.d.ts +12 -0
  41. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +9 -5
  42. package/dist/_dts/api/src/siteOnboarding.d.ts +2 -9
  43. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +2 -4
  44. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +3 -1
  45. package/dist/_dts/api/src/siteSettings.d.ts +20 -7
  46. package/dist/_dts/api/src/types.d.ts +77 -77
  47. package/dist/_dts/api/src/wholeSeriesRuns.d.ts +2 -37
  48. package/dist/_dts/billing/src/membership/index.d.ts +3 -0
  49. package/dist/_dts/billing/src/plans/types.d.ts +3 -0
  50. package/dist/_dts/billing/src/site-arrangements.d.ts +14 -3
  51. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +16 -4
  52. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +2 -0
  53. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +5 -0
  54. package/dist/_dts/blocks/src/portal/types.d.ts +2 -4
  55. package/dist/_dts/blocks/src/portal/waitlist-types.d.ts +35 -0
  56. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +2 -0
  57. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +42 -0
  58. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -0
  59. package/dist/_dts/blocks/src/system/data/index.d.ts +2 -2
  60. package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +2 -1
  61. package/dist/_dts/blocks/src/system/data/types.d.ts +9 -0
  62. package/dist/_dts/blocks/src/system/registry.d.ts +1 -0
  63. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +0 -28
  64. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  65. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +7 -3
  66. package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +1 -1
  67. package/dist/_dts/blocks/src/system/runtime/api/types/waitlist-claims.d.ts +7 -2
  68. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +30 -6
  69. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +15 -3
  70. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +43 -0
  71. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +1 -2
  72. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/TicketSelectionStep.d.ts +2 -0
  73. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/checkoutRecovery.d.ts +14 -0
  74. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +56 -0
  75. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +6 -8
  76. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useCheckoutRecovery.d.ts +8 -0
  77. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +8 -7
  78. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +10 -2
  79. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventSourceRecovery.d.ts +18 -0
  80. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.client.d.ts +1 -1
  81. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +24 -6
  82. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.server.d.ts +4 -2
  83. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -0
  84. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +1 -0
  85. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +1 -0
  86. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -6
  87. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  88. package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.d.ts +2 -0
  89. package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +4 -0
  90. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +27 -4
  91. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +2 -1
  92. package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +3 -1
  93. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +3 -0
  94. package/dist/_dts/core/src/branded.d.ts +0 -8
  95. package/dist/_dts/core/src/index.d.ts +1 -0
  96. package/dist/_dts/core/src/mailing-list-setup-parser.d.ts +1 -1
  97. package/dist/_dts/core/src/mailing-list-setup.d.ts +14 -1
  98. package/dist/_dts/core/src/mailing-list-submission.d.ts +7 -27
  99. package/dist/_dts/core/src/participants.d.ts +2 -29
  100. package/dist/_dts/core/src/public-experience.d.ts +4 -0
  101. package/dist/_dts/core/src/public-profile.d.ts +27 -1
  102. package/dist/_dts/core/src/site-route-target.d.ts +9 -2
  103. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +293 -606
  104. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListGlobalSettingsSummary.d.ts +10 -0
  105. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListTargetingField.d.ts +3 -2
  106. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/context.d.ts +3 -2
  107. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +3 -2
  108. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/targetingState.d.ts +19 -0
  109. package/dist/_dts/sdk/src/public-api/contracts.d.ts +14 -20
  110. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -0
  111. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +2 -0
  112. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +7 -1
  113. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +1 -0
  114. package/dist/_dts/sdk/src/version.d.ts +1 -1
  115. package/dist/_dts/theme-core/src/accordions/types.d.ts +3 -3
  116. package/dist/_dts/theme-core/src/cards/types.d.ts +21 -21
  117. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  118. package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +8 -2
  119. package/dist/_dts/theme-core/src/header/legacyHeaderVariant.d.ts +2 -2
  120. package/dist/_dts/theme-core/src/inputs/types.d.ts +2 -2
  121. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +54 -54
  122. package/dist/_dts/theme-core/src/runtime/buildThemeRuntimeFromBridge.d.ts +1 -4
  123. package/dist/_dts/theme-core/src/schema.d.ts +84 -84
  124. package/dist/_dts/theme-core/src/shared/componentStyles.d.ts +1 -1
  125. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  126. package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +77 -0
  127. package/dist/_dts/theme-core/src/surfaces/index.d.ts +1 -0
  128. package/dist/_dts/theme-core/src/typography/generateTypographyCss.d.ts +2 -2
  129. package/dist/_dts/ui/src/lib/use-delayed-flag.d.ts +9 -0
  130. package/dist/_dts/ui/src/pending-button.d.ts +10 -0
  131. package/dist/client/{BookingConsentAgreement-CZvTDtsK.mjs → BookingConsentAgreement-CuKa82V4.mjs} +4 -4
  132. package/dist/client/{DiscountCodeDisclosure-D-DsLCMU.mjs → DiscountCodeDisclosure-BbYieKWB.mjs} +1 -1
  133. package/dist/client/{EventCombined.client-dWqgd5ZO.mjs → EventCombined.client-LTfR1Aby.mjs} +6 -6
  134. package/dist/client/{EventListing.client-BMRa9IYp.mjs → EventListing.client-DUHpYSuo.mjs} +2 -2
  135. package/dist/client/{LeafletStaticMap-D21W9kBZ.mjs → LeafletStaticMap-CHRupL6m.mjs} +1 -1
  136. package/dist/client/{accordion-FxF_ta47.mjs → accordion-6HiIFxNL.mjs} +1 -1
  137. package/dist/client/{bookingForm-YnwW4TGw.mjs → bookingForm-Dlmid43H.mjs} +7 -7
  138. package/dist/client/bookings.mjs +325 -140
  139. package/dist/client/{carousel-vng7fFT5.mjs → carousel-DmkZRRq_.mjs} +2 -2
  140. package/dist/client/{carousel.client-59G_WMr4.mjs → carousel.client-DQTjCVQT.mjs} +1 -1
  141. package/dist/client/{cart-DEPDsjNk.mjs → cart-CIC24330.mjs} +3 -3
  142. package/dist/client/{checkout-CZRWu9rW.mjs → checkout-D1Zw9imo.mjs} +3 -3
  143. package/dist/client/{checkoutUrls-BuseL0dw.mjs → checkoutUrls-FL6lRkrt.mjs} +1 -1
  144. package/dist/client/client.mjs +1717 -882
  145. package/dist/client/{colorStyles-CrxJrPjJ.mjs → colorStyles-3013aRAY.mjs} +3 -1
  146. package/dist/client/{context-DvU_WUmd.mjs → context-Cy1OayHx.mjs} +6 -19
  147. package/dist/client/{dates-wnPMiRl5.mjs → dates-aDcfoLHr.mjs} +2 -2
  148. package/dist/client/{eventCalendar-BA3Q5L15.mjs → eventCalendar-FQxMPAjf.mjs} +8 -8
  149. package/dist/client/{eventCombined-51wgR-1R.mjs → eventCombined-Dr3ac6Hb.mjs} +3 -3
  150. package/dist/client/{eventDetails-modaetpm.mjs → eventDetails-D-AzUHFQ.mjs} +4 -4
  151. package/dist/client/{eventListing-D8t2J3Kv.mjs → eventListing-B3XxBf3i.mjs} +3 -3
  152. package/dist/client/{eventRegistration-CYqtkCE_.mjs → eventRegistration-I6EaokFD.mjs} +500 -152
  153. package/dist/client/{form-CBKXN5In.mjs → form-BbWckVWY.mjs} +3 -3
  154. package/dist/client/{headerSection-DylDqNrs.mjs → headerSection-C9qU4Y7x.mjs} +2 -2
  155. package/dist/client/hooks.mjs +445 -180
  156. package/dist/client/{locationMap-CvWrG0vZ.mjs → locationMap-CLCShvlG.mjs} +3 -3
  157. package/dist/client/{media-BOHuueS5.mjs → media-DHpfFwd3.mjs} +1 -1
  158. package/dist/client/{newsletterForm-Btwk70zw.mjs → newsletterForm-Briukxzi.mjs} +130 -87
  159. package/dist/client/{pricing-Uzw-GQ6Y.mjs → pricing-Copadu-2.mjs} +1 -1
  160. package/dist/client/{productDetail-JLcUYKnd.mjs → productDetail-oujlRd-r.mjs} +3 -3
  161. package/dist/client/{productList-FM0cbUzj.mjs → productList-BRiIRUcd.mjs} +3 -3
  162. package/dist/client/{propsDecoder-DYzafZb2.mjs → propsDecoder-CB2KS_ko.mjs} +130 -24
  163. package/dist/client/rendering/client.mjs +911 -400
  164. package/dist/client/rendering/islands.mjs +19 -19
  165. package/dist/client/rendering.mjs +1696 -818
  166. package/dist/client/{scrollToBlock-CvXszexS.mjs → scrollToBlock-B1IS1_ua.mjs} +1 -1
  167. package/dist/client/{shop-BIcjvy5a.mjs → shop-Vn6yNFED.mjs} +6 -6
  168. package/dist/client/{shop-commerce-BZQsy7xw.mjs → shop-commerce-BVTqipYp.mjs} +7 -7
  169. package/dist/client/{shop-commerce-store-D5V7XAb5.mjs → shop-commerce-store-BVnJVy7v.mjs} +1 -1
  170. package/dist/client/{shopShared-DowkXevB.mjs → shopShared-COIeK77T.mjs} +4 -4
  171. package/dist/client/{useEventFilters-oMoTw_JE.mjs → useEventFilters-DzIUcS9n.mjs} +7 -7
  172. package/dist/preview-next/before-render.mjs +119 -64
  173. package/dist/preview-next/client/runtime.mjs +4 -4
  174. package/dist/preview-next/keepAlive.mjs +119 -64
  175. package/dist/preview-next/middleware.mjs +119 -64
  176. package/dist/{previewAuthStore-COUyAKaX.mjs → previewAuthStore-Gjb6r6vz.mjs} +119 -64
  177. package/dist/{sdk-runtime-D4k2LSGF.mjs → sdk-runtime-CnCLvZRv.mjs} +2 -2
  178. package/dist/{separator-UGtpag4Z.mjs → separator-DKDRJ1oH.mjs} +1 -1
  179. package/dist/server/components.mjs +787 -323
  180. package/dist/server/config-validation.mjs +328 -79
  181. package/dist/server/config.mjs +332 -83
  182. package/dist/server/data.mjs +441 -180
  183. package/dist/server/index.mjs +126 -66
  184. package/dist/server/next.mjs +1031 -595
  185. package/dist/server/page-converter.mjs +183 -74
  186. package/dist/server/prebuild.mjs +1 -1
  187. package/dist/server/rendering/server.mjs +1068 -592
  188. package/dist/server/rendering.mjs +802 -324
  189. package/dist/server/routing.mjs +506 -214
  190. package/dist/server/server.mjs +468 -244
  191. package/dist/server/theme-bridge.mjs +433 -100
  192. package/dist/server/theme.mjs +8 -2
  193. package/dist/styles/index.css +237 -43
  194. package/package.json +1 -1
  195. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionCompactRow.d.ts +0 -29
  196. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionList.d.ts +0 -13
@@ -52,6 +52,8 @@ export declare function useEventRegistrationWizard(options: UseEventRegistration
52
52
  scopedEvents: RegistrationEvent[];
53
53
  preSelectedEvent: RegistrationEvent | null;
54
54
  hasPreSelectedContext: boolean;
55
+ checkoutRecovery: boolean;
56
+ startCheckoutRecovery: () => void;
55
57
  step: RegistrationStep;
56
58
  setStep: (nextStep: RegistrationStep) => void;
57
59
  selectedEvent: RegistrationEvent | null;
@@ -127,6 +129,8 @@ export declare function useEventRegistrationWizard(options: UseEventRegistration
127
129
  kind: "none";
128
130
  }> | Readonly<{
129
131
  kind: "booked";
132
+ }> | Readonly<{
133
+ kind: "pending_payment";
130
134
  }> | Readonly<{
131
135
  kind: "waitlisted";
132
136
  }>;
@@ -148,7 +152,7 @@ export declare function useEventRegistrationWizard(options: UseEventRegistration
148
152
  handlePaymentSelect: () => Promise<void>;
149
153
  handleUseCardInsteadOfPass: () => void;
150
154
  handleBookForSomeoneElse: () => void;
151
- handleSubmit: (method: import("./PaymentSelectionStep").PaymentMethod, passId?: string, membershipId?: string, selection?: PaymentSelection, submitOptions?: import("./useEventRegistrationSubmit").EventRegistrationSubmitOptions) => Promise<import("./useEventRegistrationSubmit").EventRegistrationSubmitResult>;
155
+ handleSubmit: import("./useEventRegistrationSubmit").EventRegistrationSubmit;
152
156
  handleEventSelect: (event: RegistrationEvent) => void;
153
157
  handleRetry: () => void;
154
158
  };
@@ -174,6 +178,8 @@ export declare function useEventRegistrationWizardWithDeps(options: UseEventRegi
174
178
  scopedEvents: RegistrationEvent[];
175
179
  preSelectedEvent: RegistrationEvent | null;
176
180
  hasPreSelectedContext: boolean;
181
+ checkoutRecovery: boolean;
182
+ startCheckoutRecovery: () => void;
177
183
  step: RegistrationStep;
178
184
  setStep: (nextStep: RegistrationStep) => void;
179
185
  selectedEvent: RegistrationEvent | null;
@@ -249,6 +255,8 @@ export declare function useEventRegistrationWizardWithDeps(options: UseEventRegi
249
255
  kind: "none";
250
256
  }> | Readonly<{
251
257
  kind: "booked";
258
+ }> | Readonly<{
259
+ kind: "pending_payment";
252
260
  }> | Readonly<{
253
261
  kind: "waitlisted";
254
262
  }>;
@@ -270,7 +278,7 @@ export declare function useEventRegistrationWizardWithDeps(options: UseEventRegi
270
278
  handlePaymentSelect: () => Promise<void>;
271
279
  handleUseCardInsteadOfPass: () => void;
272
280
  handleBookForSomeoneElse: () => void;
273
- handleSubmit: (method: import("./PaymentSelectionStep").PaymentMethod, passId?: string, membershipId?: string, selection?: PaymentSelection, submitOptions?: import("./useEventRegistrationSubmit").EventRegistrationSubmitOptions) => Promise<import("./useEventRegistrationSubmit").EventRegistrationSubmitResult>;
281
+ handleSubmit: import("./useEventRegistrationSubmit").EventRegistrationSubmit;
274
282
  handleEventSelect: (event: RegistrationEvent) => void;
275
283
  handleRetry: () => void;
276
284
  };
@@ -0,0 +1,18 @@
1
+ import { useBlockApi } from '../../api';
2
+ import type { PublicEvent } from '../../../blocks/events/shared/types';
3
+ import type { EventRegistrationEventSource } from './eventSourceRecovery';
4
+ export type EventSourceRecovery = Readonly<{
5
+ kind: 'ready';
6
+ events: PublicEvent[];
7
+ }> | Readonly<{
8
+ kind: 'loading';
9
+ }> | Readonly<{
10
+ kind: 'exhausted';
11
+ retry: () => void;
12
+ }>;
13
+ type RecoveryDeps = Readonly<{
14
+ useApi: typeof useBlockApi;
15
+ wait: (milliseconds: number, signal: AbortSignal) => Promise<void>;
16
+ }>;
17
+ export declare function useEventSourceRecovery(source: EventRegistrationEventSource, deps?: RecoveryDeps): EventSourceRecovery;
18
+ export {};
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { EventRegistrationClientProps as InternalEventRegistrationClientProps } from './event-registration/types';
3
- import type { EventRegistrationInteractiveIslandProps } from './event-registration.interactive';
3
+ import { type EventRegistrationInteractiveIslandProps } from './event-registration.interactive';
4
4
  export type { PublicEvent, OccurrenceContext } from './event-registration/types';
5
5
  export type EventRegistrationClientProps = InternalEventRegistrationClientProps;
6
6
  export type EventRegistrationIslandClientProps = EventRegistrationInteractiveIslandProps;
@@ -5,6 +5,7 @@ import type { OccurrenceContext } from '../../blocks/event-registration.shared';
5
5
  import type { EventRegistrationClientProps as InternalEventRegistrationClientProps } from './event-registration/types';
6
6
  import { type EventRegistrationPageSurfaceSubject } from './event-registration/eventScope';
7
7
  import { type InteractiveIslandProps } from '../../../contracts/islands';
8
+ import { type EventRegistrationEventSource } from './event-registration/eventSourceRecovery';
8
9
  export declare const EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS: readonly ["Date", "Tickets", "Details"];
9
10
  declare const EVENT_REGISTRATION_SHELL_STEP_LABELS: readonly ["Event", "Date", "Tickets", "Details", "Payment"];
10
11
  export type EventRegistrationGenericShellStepLabels = typeof EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
@@ -19,6 +20,7 @@ export type EventRegistrationSourceProps = Readonly<{
19
20
  events?: PublicEvent[] | null;
20
21
  /** Runs for a whole-series page, loaded independently of the date page. */
21
22
  wholeSeriesRunEvents?: PublicEvent[] | null;
23
+ eventLoaderFailures?: Readonly<Record<string, unknown>> | null;
22
24
  className?: string | null;
23
25
  buttonText?: string | null;
24
26
  maxTickets?: string | null;
@@ -48,7 +50,9 @@ export type EventRegistrationDisplay = Readonly<{
48
50
  titleText: string;
49
51
  bodyText: string;
50
52
  }>;
51
- export type EventRegistrationHydration = Readonly<Omit<InternalEventRegistrationClientProps, 'siteId' | 'stage' | 'buttonText' | 'className'>>;
53
+ export type EventRegistrationHydration = Readonly<Omit<InternalEventRegistrationClientProps, 'siteId' | 'stage' | 'buttonText' | 'className' | 'events'> & {
54
+ eventSource: EventRegistrationEventSource;
55
+ }>;
52
56
  type EventRegistrationIslandMeta = Readonly<{
53
57
  siteId?: string;
54
58
  apiBaseUrl?: string;
@@ -56,6 +60,7 @@ type EventRegistrationIslandMeta = Readonly<{
56
60
  previewToken?: string | null;
57
61
  stage?: 'preview' | 'published';
58
62
  }>;
63
+ export declare function buildEventRegistrationDisplayFromScopedEvents(source: EventRegistrationSourceProps, scopedSourceEvents: readonly PublicEvent[]): EventRegistrationDisplay;
59
64
  export type EventRegistrationInteractiveIslandProps = InteractiveIslandProps<EventRegistrationIslandMeta, 'event-registration', typeof eventRegistrationBlockRuntime>;
60
65
  export declare const eventRegistrationBlockRuntime: Readonly<{
61
66
  kind: "client-owned";
@@ -69,6 +74,7 @@ export declare const eventRegistrationBlockRuntime: Readonly<{
69
74
  events?: PublicEvent[] | null;
70
75
  /** Runs for a whole-series page, loaded independently of the date page. */
71
76
  wholeSeriesRunEvents?: PublicEvent[] | null;
77
+ eventLoaderFailures?: Readonly<Record<string, unknown>> | null;
72
78
  className?: string | null;
73
79
  buttonText?: string | null;
74
80
  maxTickets?: string | null;
@@ -88,7 +94,9 @@ export declare const eventRegistrationBlockRuntime: Readonly<{
88
94
  }> | null;
89
95
  }>) => Readonly<{
90
96
  display: EventRegistrationDisplay;
91
- hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText">>;
97
+ hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "events" | "buttonText"> & {
98
+ eventSource: EventRegistrationEventSource;
99
+ }>;
92
100
  }>;
93
101
  contracts: Readonly<{
94
102
  source: Readonly<{
@@ -102,6 +110,7 @@ export declare const eventRegistrationBlockRuntime: Readonly<{
102
110
  events?: PublicEvent[] | null;
103
111
  /** Runs for a whole-series page, loaded independently of the date page. */
104
112
  wholeSeriesRunEvents?: PublicEvent[] | null;
113
+ eventLoaderFailures?: Readonly<Record<string, unknown>> | null;
105
114
  className?: string | null;
106
115
  buttonText?: string | null;
107
116
  maxTickets?: string | null;
@@ -130,6 +139,7 @@ export declare const eventRegistrationBlockRuntime: Readonly<{
130
139
  events?: PublicEvent[] | null;
131
140
  /** Runs for a whole-series page, loaded independently of the date page. */
132
141
  wholeSeriesRunEvents?: PublicEvent[] | null;
142
+ eventLoaderFailures?: Readonly<Record<string, unknown>> | null;
133
143
  className?: string | null;
134
144
  buttonText?: string | null;
135
145
  maxTickets?: string | null;
@@ -152,11 +162,15 @@ export declare const eventRegistrationBlockRuntime: Readonly<{
152
162
  render: Readonly<{
153
163
  encode: (value: Readonly<{
154
164
  display: EventRegistrationDisplay;
155
- hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText">>;
165
+ hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "events" | "buttonText"> & {
166
+ eventSource: EventRegistrationEventSource;
167
+ }>;
156
168
  }>) => unknown;
157
169
  decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<{
158
170
  display: EventRegistrationDisplay;
159
- hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText">>;
171
+ hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "events" | "buttonText"> & {
172
+ eventSource: EventRegistrationEventSource;
173
+ }>;
160
174
  }>>;
161
175
  }>;
162
176
  }>;
@@ -174,7 +188,9 @@ export declare const eventRegistrationInteractiveIslandPropsCodec: Readonly<{
174
188
  mode: "event-registration";
175
189
  } & Readonly<{
176
190
  display: EventRegistrationDisplay;
177
- hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText">>;
191
+ hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "events" | "buttonText"> & {
192
+ eventSource: EventRegistrationEventSource;
193
+ }>;
178
194
  }>>;
179
195
  }>) => unknown;
180
196
  decode: (input: unknown) => import("../../../contracts").DecodeResult<Readonly<Readonly<{
@@ -189,7 +205,9 @@ export declare const eventRegistrationInteractiveIslandPropsCodec: Readonly<{
189
205
  mode: "event-registration";
190
206
  } & Readonly<{
191
207
  display: EventRegistrationDisplay;
192
- hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "buttonText">>;
208
+ hydration: Readonly<Omit<InternalEventRegistrationClientProps, "siteId" | "stage" | "className" | "events" | "buttonText"> & {
209
+ eventSource: EventRegistrationEventSource;
210
+ }>;
193
211
  }>>;
194
212
  }>>;
195
213
  }>;
@@ -1,13 +1,15 @@
1
1
  import React from 'react';
2
2
  import { type EventRegistrationSourceProps } from './event-registration.interactive';
3
- type EventRegistrationProps = Omit<EventRegistrationSourceProps, 'subject'> & Readonly<{
3
+ import type { BlockLoaderFailures } from '../../data/types';
4
+ type EventRegistrationProps = Omit<EventRegistrationSourceProps, 'subject' | 'eventLoaderFailures'> & Readonly<{
4
5
  blockId?: string | null;
5
6
  children?: React.ReactNode;
6
7
  subject?: unknown;
8
+ loaderFailures?: BlockLoaderFailures | null;
7
9
  }>;
8
10
  /**
9
11
  * Server-safe placeholder for event registration.
10
12
  * Provides a static container for island hydration without importing client hooks.
11
13
  */
12
- export declare function EventRegistrationSSR({ blockId, subject, children, ...sourceProps }: EventRegistrationProps): React.JSX.Element;
14
+ export declare function EventRegistrationSSR({ blockId, subject, loaderFailures, children, ...sourceProps }: EventRegistrationProps): React.JSX.Element;
13
15
  export default EventRegistrationSSR;
@@ -7,6 +7,7 @@ export type NewsletterFormDisplay = Readonly<{
7
7
  availability: 'ready' | 'unavailable';
8
8
  className: string | null;
9
9
  buttonLabel: string;
10
+ successMessage: string;
10
11
  buttonVariant: NewsletterButtonVariant;
11
12
  privacyNote: string | null;
12
13
  fields: readonly NewsletterFieldDef[];
@@ -51,6 +52,7 @@ export declare const newsletterFormBlockRuntime: Readonly<{
51
52
  availability: "ready" | "unavailable";
52
53
  className: string | null;
53
54
  buttonLabel: string;
55
+ successMessage: string;
54
56
  buttonVariant: NewsletterButtonVariant;
55
57
  privacyNote: string | null;
56
58
  fields: readonly NewsletterFieldDef[];
@@ -79,6 +81,7 @@ export declare const newsletterFormBlockRuntime: Readonly<{
79
81
  availability: "ready" | "unavailable";
80
82
  className: string | null;
81
83
  buttonLabel: string;
84
+ successMessage: string;
82
85
  buttonVariant: NewsletterButtonVariant;
83
86
  privacyNote: string | null;
84
87
  fields: readonly NewsletterFieldDef[];
@@ -101,6 +104,7 @@ export declare const newsletterFormBlockRuntime: Readonly<{
101
104
  availability: "ready" | "unavailable";
102
105
  className: string | null;
103
106
  buttonLabel: string;
107
+ successMessage: string;
104
108
  buttonVariant: NewsletterButtonVariant;
105
109
  privacyNote: string | null;
106
110
  fields: readonly NewsletterFieldDef[];
@@ -135,6 +139,7 @@ export declare const newsletterFormInteractiveIslandPropsCodec: Readonly<{
135
139
  availability: "ready" | "unavailable";
136
140
  className: string | null;
137
141
  buttonLabel: string;
142
+ successMessage: string;
138
143
  buttonVariant: NewsletterButtonVariant;
139
144
  privacyNote: string | null;
140
145
  fields: readonly NewsletterFieldDef[];
@@ -165,6 +170,7 @@ export declare const newsletterFormInteractiveIslandPropsCodec: Readonly<{
165
170
  availability: "ready" | "unavailable";
166
171
  className: string | null;
167
172
  buttonLabel: string;
173
+ successMessage: string;
168
174
  buttonVariant: NewsletterButtonVariant;
169
175
  privacyNote: string | null;
170
176
  fields: readonly NewsletterFieldDef[];
@@ -33,6 +33,7 @@ type NewsletterFormCommonProps = {
33
33
  type BlockNewsletterFormSource = Readonly<{
34
34
  source: 'block';
35
35
  blockId?: string | null;
36
+ contentVersionId?: string | null;
36
37
  }>;
37
38
  type SignedFooterNewsletterFormSource = Readonly<{
38
39
  source: 'signed-footer';
@@ -30,6 +30,7 @@ export type ResolverContext = {
30
30
  entriesByIdentifier?: EntryIdentifierMap;
31
31
  pathBase?: string;
32
32
  blockId?: string | null;
33
+ contentVersionId?: string | null;
33
34
  blockKind?: string;
34
35
  blockContent?: unknown;
35
36
  blockBindings?: Record<string, unknown>;
@@ -8,10 +8,6 @@ export { BLOCK_DISCOUNT_CODE_DISCLOSURE_CLASSES, DiscountCodeDisclosure, } from
8
8
  export type { DiscountCodeDisclosureProps, DiscountCodeDisclosureSurface, } from './DiscountCodeDisclosure';
9
9
  export { ActionRow } from './ActionRow';
10
10
  export type { ActionRowProps } from './ActionRow';
11
- export { BookingOptionCompactRow } from './BookingOptionCompactRow';
12
- export type { BookingOptionCompactRowAction, BookingOptionCompactRowProps, BookingOptionCompactRowViewModel, BookingOptionMetaItem, } from './BookingOptionCompactRow';
13
- export { BookingOptionList } from './BookingOptionList';
14
- export type { BookingOptionGroupViewModel, BookingOptionListProps, } from './BookingOptionList';
15
11
  export { FieldValidationMessage, getFieldValidationControlProps, } from './FieldValidationMessage';
16
12
  export type { FieldValidationControlInput, FieldValidationControlProps, FieldValidationMessageProps, } from './FieldValidationMessage';
17
13
  export { FeedbackMessage } from './FeedbackMessage';
@@ -24,8 +20,8 @@ export { ModalShell } from './ModalShell';
24
20
  export type { ModalShellProps } from './ModalShell';
25
21
  export { TabBarFragment } from './TabBarFragment';
26
22
  export { TerminalPanel } from './TerminalPanel';
27
- export type { TerminalPanelProps, TerminalPanelTitleElement } from './TerminalPanel';
23
+ export type { TerminalPanelProps, TerminalPanelTitleElement, } from './TerminalPanel';
28
24
  export { StepIndicator } from './StepIndicator';
29
- export type { StepIndicatorBaseProps, StepIndicatorProps } from './StepIndicator';
25
+ export type { StepIndicatorBaseProps, StepIndicatorProps, } from './StepIndicator';
30
26
  export { RB_OPTION_CARD_CLASSES, SelectableOptionCard, } from './SelectableOptionCard';
31
27
  export type { SelectableOptionCardProps } from './SelectableOptionCard';
@@ -8,5 +8,5 @@ export { DEFAULT_CURRENCY } from './types';
8
8
  export { BOOK_TARGET_PARAMS, buildCheckoutReturnUrls, resolveDedicatedBookingHref, resolveDedicatedBookingPath, resolveDedicatedBookingTarget, formatPrice, scrollToBlock, consumeSearchParam, consumeSearchParams, validateFormData, getStepNumber, } from './utils';
9
9
  export type { DedicatedBookingTarget, UniversalBookingRouteTarget, } from './utils';
10
10
  export { createBodyThemePortalRoot } from './utils';
11
- export { ActionRow, BookingOptionCompactRow, BookingOptionList, CheckIcon, ClockIcon, CrossIcon, BLOCK_DISCOUNT_CODE_DISCLOSURE_CLASSES, DiscountCodeDisclosure, FieldValidationMessage, FeedbackMessage, getFieldValidationControlProps, MembershipHero, ModalShell, RB_OPTION_CARD_CLASSES, SelectableOptionCard, StateIcon, StepIndicator, TerminalPanel, } from './components';
12
- export type { ActionRowProps, SelectableOptionCardProps, BookingOptionCompactRowAction, BookingOptionCompactRowProps, BookingOptionCompactRowViewModel, BookingOptionGroupViewModel, BookingOptionListProps, BookingOptionMetaItem, DiscountCodeDisclosureProps, DiscountCodeDisclosureSurface, FieldValidationControlInput, FieldValidationControlProps, FieldValidationMessageProps, FeedbackLiveMode, FeedbackMessageProps, FeedbackTone, ModalShellProps, StepIndicatorBaseProps, StepIndicatorProps, TerminalPanelProps, TerminalPanelTitleElement, } from './components';
11
+ export { ActionRow, CheckIcon, ClockIcon, CrossIcon, BLOCK_DISCOUNT_CODE_DISCLOSURE_CLASSES, DiscountCodeDisclosure, FieldValidationMessage, FeedbackMessage, getFieldValidationControlProps, MembershipHero, ModalShell, RB_OPTION_CARD_CLASSES, SelectableOptionCard, StateIcon, StepIndicator, TerminalPanel, } from './components';
12
+ export type { ActionRowProps, SelectableOptionCardProps, DiscountCodeDisclosureProps, DiscountCodeDisclosureSurface, FieldValidationControlInput, FieldValidationControlProps, FieldValidationMessageProps, FeedbackLiveMode, FeedbackMessageProps, FeedbackTone, ModalShellProps, StepIndicatorBaseProps, StepIndicatorProps, TerminalPanelProps, TerminalPanelTitleElement, } from './components';
@@ -1,8 +1,10 @@
1
1
  import { useBlockApi } from "../api";
2
2
  import type { ResolveWaitlistClaimResponse } from "../api/types";
3
3
  export declare function getWaitlistClaimTokenFromUrl(): string | null;
4
+ export declare function getWaitlistClaimEntryIdFromUrl(): string | null;
4
5
  export type UseWaitlistClaimResult = {
5
6
  token: string | null;
7
+ entryId: string | null;
6
8
  claim: ResolveWaitlistClaimResponse | null;
7
9
  error: string | null;
8
10
  loginMessage: string | null;
@@ -8,6 +8,10 @@ export declare const eventRegistrationErrors: {
8
8
  readonly message: "We’re checking your booking and payment. Please don’t try to book again yet. If you’ve already paid, you don’t need to pay again.";
9
9
  readonly action: "payment-status";
10
10
  };
11
+ readonly paymentProviderUnavailable: {
12
+ readonly message: "We couldn’t reach the payment provider. Please try again in a minute.";
13
+ readonly action: "retry";
14
+ };
11
15
  readonly paymentPageUnavailable: {
12
16
  readonly message: "We couldn’t open the payment page. Please refresh this page and try again. If this keeps happening, contact the organiser for help.";
13
17
  readonly action: "retry";
@@ -26,8 +26,17 @@ export declare const DATED_OFFERING_ORDER_ITEM_ENGINE_METADATA_KEYS: {
26
26
  readonly courseId: "courseId";
27
27
  readonly customerId: "customerId";
28
28
  readonly eventSeriesId: "eventSeriesId";
29
- readonly nonCashProjectionIdempotencyKey: "datedOfferingNonCashProjectionIdempotencyKey";
29
+ readonly settlementKind: "datedOfferingEngineSettlementKind";
30
30
  };
31
+ /**
32
+ * How a shared whole-series registration order item was settled.
33
+ *
34
+ * A checkout item is the one that consumed a capacity hold and carries its
35
+ * ids; a non-cash item names its settlement outright, because there is no hold
36
+ * to identify it by. The registration itself is `event_series_registration_id`
37
+ * on the row.
38
+ */
39
+ export type DatedOfferingOrderItemSettlementKind = 'non_cash_registration';
31
40
  export type DatedOfferingOrderItemEngineMetadata = Readonly<{
32
41
  datedOfferingEngineContractVersion: 'shared_v1';
33
42
  datedOfferingEngineRouteKind: 'shared_whole_series_registration';
@@ -39,10 +48,24 @@ export type DatedOfferingOrderItemEngineMetadata = Readonly<{
39
48
  export type DatedOfferingNonCashOrderItemEngineMetadata = Readonly<{
40
49
  datedOfferingEngineContractVersion: 'shared_v1';
41
50
  datedOfferingEngineRouteKind: 'shared_whole_series_registration';
42
- datedOfferingNonCashProjectionIdempotencyKey: string;
51
+ datedOfferingEngineSettlementKind: DatedOfferingOrderItemSettlementKind;
43
52
  customerId: CustomerId;
44
53
  eventSeriesId: EventSeriesId;
45
54
  }>;
55
+ /**
56
+ * What each arm forbids the other from carrying.
57
+ *
58
+ * Both arms share the same version and route literals, so without these a
59
+ * hybrid carrying hold identity *and* a settlement kind satisfies the union —
60
+ * exactly the object both parsers below reject.
61
+ */
62
+ type NoDatedOfferingSettlementKind = Readonly<{
63
+ datedOfferingEngineSettlementKind?: never;
64
+ }>;
65
+ type NoDatedOfferingCapacityHold = Readonly<{
66
+ datedOfferingCapacityHoldId?: never;
67
+ datedOfferingCapacityHoldAuditRef?: never;
68
+ }>;
46
69
  export type DatedOfferingOrderItemEngineMetadataParseError = Readonly<{
47
70
  kind: 'invalid_engine_contract';
48
71
  }> | Readonly<{
@@ -66,11 +89,11 @@ export type DatedOfferingMetadataRefParseError = Readonly<{
66
89
  kind: 'invalid_uuid';
67
90
  }>;
68
91
  type LegacyDatedOfferingOrderItemEngineMetadata = Readonly<{
69
- [TKey in keyof DatedOfferingOrderItemEngineMetadata]?: never;
92
+ [TKey in keyof DatedOfferingOrderItemEngineMetadata | keyof DatedOfferingNonCashOrderItemEngineMetadata]?: never;
70
93
  }>;
71
94
  export type EventSeriesRegistrationEngineMetadata = (LegacyDatedOfferingOrderItemEngineMetadata & Readonly<{
72
95
  courseId: RetiredCourseId;
73
- }>) | DatedOfferingOrderItemEngineMetadata | DatedOfferingNonCashOrderItemEngineMetadata;
96
+ }>) | (DatedOfferingOrderItemEngineMetadata & NoDatedOfferingSettlementKind) | (DatedOfferingNonCashOrderItemEngineMetadata & NoDatedOfferingCapacityHold);
74
97
  export type EventTicketOrderItemMetadata = CheckoutLineMetadata & StripeBookingCommissionOrderItemMetadata & BookableOrderItemPricingMetadata & Readonly<{
75
98
  eventSeriesId: string;
76
99
  occurrenceId: OccurrenceId;
@@ -1,5 +1,5 @@
1
1
  import { type ContentEntrySnapshot, type ContentTypeSchema, type ToolbarState } from '../../../content-model/src/index';
2
- import type { EditorBlockId } from '../../../core/src/index';
2
+ import type { EditorBlockId, MailingListProviderScope } from '../../../core/src/index';
3
3
  import type { BlockItem } from '../../../editor-blocks/src/block-editor/types';
4
4
  import { type ReactNode } from 'react';
5
5
  import { type PublishOptions } from '../hooks/useEntryActions';
@@ -90,6 +90,7 @@ type BaseInternalProps = {
90
90
  onEntryUpdated?: (response: unknown) => void;
91
91
  historyShortcutsEnabled?: boolean;
92
92
  resolveBlockManifest?: ResolveBlockManifest;
93
+ getExpectedMailingListProviderScope?: () => MailingListProviderScope | null;
93
94
  };
94
95
  type EditorOwnerServiceProps = Readonly<{
95
96
  owner: {
@@ -1,3 +1,4 @@
1
+ import { type MailingListProviderScope } from '../../../core/src/index';
1
2
  import type { ApiClient } from '../services';
2
3
  import type { EditorUiStoreInstance } from '../ui/editorUiStore';
3
4
  export type BlockAutosaveOptions = {
@@ -10,6 +11,7 @@ export type BlockAutosaveOptions = {
10
11
  /** Whether this entry has a route (pages have blocks, content entries don't) */
11
12
  hasRoute: boolean;
12
13
  owner: BlockAutosaveOwner;
14
+ getExpectedMailingListProviderScope?: () => MailingListProviderScope | null;
13
15
  };
14
16
  export type BlockAutosaveOwner = Readonly<{
15
17
  kind: 'contentEntry';
@@ -32,4 +34,4 @@ export declare function planBlockSaveRevisionForOwner(owner: BlockAutosaveOwner,
32
34
  *
33
35
  * Only enabled for pages (hasRoute=true), as content entries don't have blocks.
34
36
  */
35
- export declare function useBlockAutosave({ uiStore, apiClient, siteId, hasRoute, owner, }: BlockAutosaveOptions): import("./useSimpleAutosave").AutosaveHandle;
37
+ export declare function useBlockAutosave({ uiStore, apiClient, siteId, hasRoute, owner, getExpectedMailingListProviderScope, }: BlockAutosaveOptions): import("./useSimpleAutosave").AutosaveHandle;
@@ -33,6 +33,9 @@ export declare function useFooterComposerState({ apiClient, canEdit, initialTarg
33
33
  engagementOptions: Readonly<{
34
34
  forms: readonly import("../../api/src/footerSettings").FooterFormSummary[];
35
35
  mailingList: import("../../core/src/index").MailingListRuntimeContext;
36
+ expectedMailingListProviderScope: import("../../core/src/index").MailingListProviderScope | null;
37
+ confirmation: import("../../core/src/index").ConfiguredMailingListProvider["confirmation"] | null;
38
+ canManageMailingListSetup: boolean;
36
39
  }> | null;
37
40
  load: () => Promise<void>;
38
41
  loadError: string | null;
@@ -60,7 +60,6 @@ export type BookingSessionId = Brand<string, 'BookingSessionId'>;
60
60
  export type DatedOfferingCapacityHoldId = Brand<string, 'DatedOfferingCapacityHoldId'>;
61
61
  export type DatedOfferingCapacityHoldAuditRef = Brand<string, 'DatedOfferingCapacityHoldAuditRef'>;
62
62
  export type DatedOfferingRevocationAuditEventId = Brand<string, 'DatedOfferingRevocationAuditEventId'>;
63
- export type DatedOfferingNonCashProjectionClaimToken = Brand<string, 'DatedOfferingNonCashProjectionClaimToken'>;
64
63
  export type DatedOfferingWaitlistCapacityEffectId = Brand<string, 'DatedOfferingWaitlistCapacityEffectId'>;
65
64
  export type DatedOfferingWaitlistCapacityEffectClaimToken = Brand<string, 'DatedOfferingWaitlistCapacityEffectClaimToken'>;
66
65
  export type DatedOfferingRunCancellationOperationId = Brand<string, 'DatedOfferingRunCancellationOperationId'>;
@@ -99,7 +98,6 @@ export type EventRegistrationCommandId = Brand<string, 'EventRegistrationCommand
99
98
  * is meant.
100
99
  */
101
100
  export type EventRegistrationCommandRowId = Brand<string, 'EventRegistrationCommandRowId'>;
102
- export type EventRegistrationProjectionClaimToken = Brand<string, 'EventRegistrationProjectionClaimToken'>;
103
101
  export type CustomerPassId = Brand<string, 'CustomerPassId'>;
104
102
  export type CustomerMembershipId = Brand<string, 'CustomerMembershipId'>;
105
103
  export type AppointmentId = Brand<string, 'AppointmentId'>;
@@ -146,7 +144,6 @@ export type ParticipantId = Brand<string, 'ParticipantId'>;
146
144
  export type ParticipantParticipationId = Brand<string, 'ParticipantParticipationId'>;
147
145
  export type ParticipantRosterAssertionJobId = Brand<string, 'ParticipantRosterAssertionJobId'>;
148
146
  export type ParticipantBookingQuestionsTaskId = Brand<string, 'ParticipantBookingQuestionsTaskId'>;
149
- export type EventAttendeeGuestId = Brand<string, 'EventAttendeeGuestId'>;
150
147
  export type PersonRecordId = Brand<string, 'PersonRecordId'>;
151
148
  export type EncounterRecordId = Brand<string, 'EncounterRecordId'>;
152
149
  export type RecordEntryId = Brand<string, 'RecordEntryId'>;
@@ -212,7 +209,6 @@ export declare const unsafeAsBookingSessionId: (id: string) => BookingSessionId;
212
209
  export declare const unsafeAsDatedOfferingCapacityHoldId: (value: string) => DatedOfferingCapacityHoldId;
213
210
  export declare const unsafeAsDatedOfferingCapacityHoldAuditRef: (value: string) => DatedOfferingCapacityHoldAuditRef;
214
211
  export declare const unsafeAsDatedOfferingRevocationAuditEventId: (value: string) => DatedOfferingRevocationAuditEventId;
215
- export declare const unsafeAsDatedOfferingNonCashProjectionClaimToken: (value: string) => DatedOfferingNonCashProjectionClaimToken;
216
212
  export declare const unsafeAsDatedOfferingWaitlistCapacityEffectId: (value: string) => DatedOfferingWaitlistCapacityEffectId;
217
213
  export declare const unsafeAsDatedOfferingWaitlistCapacityEffectClaimToken: (value: string) => DatedOfferingWaitlistCapacityEffectClaimToken;
218
214
  export declare const unsafeAsDatedOfferingRunCancellationOperationId: (value: string) => DatedOfferingRunCancellationOperationId;
@@ -236,7 +232,6 @@ export declare const unsafeAsCheckoutLineId: (id: string) => CheckoutLineId;
236
232
  export declare const unsafeAsAttendeeId: (id: string) => AttendeeId;
237
233
  export declare const unsafeAsEventRegistrationCommandId: (id: string) => EventRegistrationCommandId;
238
234
  export declare const unsafeAsEventRegistrationCommandRowId: (id: string) => EventRegistrationCommandRowId;
239
- export declare const unsafeAsEventRegistrationProjectionClaimToken: (id: string) => EventRegistrationProjectionClaimToken;
240
235
  export declare const unsafeAsCustomerPassId: (id: string) => CustomerPassId;
241
236
  export declare const unsafeAsCustomerMembershipId: (id: string) => CustomerMembershipId;
242
237
  export declare const unsafeAsAppointmentId: (id: string) => AppointmentId;
@@ -282,7 +277,6 @@ export declare const unsafeAsParticipantId: (id: string) => ParticipantId;
282
277
  export declare const unsafeAsParticipantParticipationId: (id: string) => ParticipantParticipationId;
283
278
  export declare const unsafeAsParticipantRosterAssertionJobId: (id: string) => ParticipantRosterAssertionJobId;
284
279
  export declare const unsafeAsParticipantBookingQuestionsTaskId: (id: string) => ParticipantBookingQuestionsTaskId;
285
- export declare const unsafeAsEventAttendeeGuestId: (id: string) => EventAttendeeGuestId;
286
280
  export declare const unsafeAsPersonRecordId: (id: string) => PersonRecordId;
287
281
  export declare const unsafeAsEncounterRecordId: (id: string) => EncounterRecordId;
288
282
  export declare const unsafeAsRecordEntryId: (id: string) => RecordEntryId;
@@ -318,11 +312,9 @@ export declare const parseAppointmentReservationRunId: (value: unknown) => Resul
318
312
  export declare const parseAttendeeId: (value: unknown) => Result<AttendeeId, BrandedIdParseError>;
319
313
  export declare const parseEventRegistrationCommandId: (value: unknown) => Result<EventRegistrationCommandId, BrandedIdParseError>;
320
314
  export declare const parseEventRegistrationCommandRowId: (value: unknown) => Result<EventRegistrationCommandRowId, BrandedIdParseError>;
321
- export declare const parseEventRegistrationProjectionClaimToken: (value: unknown) => Result<EventRegistrationProjectionClaimToken, BrandedIdParseError>;
322
315
  export declare const parseDatedOfferingCapacityHoldId: (value: unknown) => Result<DatedOfferingCapacityHoldId, BrandedIdParseError>;
323
316
  export declare const parseDatedOfferingCapacityHoldAuditRef: (value: unknown) => Result<DatedOfferingCapacityHoldAuditRef, BrandedIdParseError>;
324
317
  export declare const parseDatedOfferingRevocationAuditEventId: (value: unknown) => Result<DatedOfferingRevocationAuditEventId, BrandedIdParseError>;
325
- export declare const parseDatedOfferingNonCashProjectionClaimToken: (value: unknown) => Result<DatedOfferingNonCashProjectionClaimToken, BrandedIdParseError>;
326
318
  export declare const parseDatedOfferingWaitlistCapacityEffectId: (value: unknown) => Result<DatedOfferingWaitlistCapacityEffectId, BrandedIdParseError>;
327
319
  export declare const parseDatedOfferingWaitlistCapacityEffectClaimToken: (value: unknown) => Result<DatedOfferingWaitlistCapacityEffectClaimToken, BrandedIdParseError>;
328
320
  export declare const parseDatedOfferingRunCancellationOperationId: (value: unknown) => Result<DatedOfferingRunCancellationOperationId, BrandedIdParseError>;
@@ -35,6 +35,7 @@ export * from './participants';
35
35
  export * from './participant-identity';
36
36
  export * from './public-url-validation';
37
37
  export * from './public-profile';
38
+ export * from './public-experience';
38
39
  export * from './rich-text';
39
40
  export * from './footer-composition';
40
41
  export * from './footer-navigation-layout';
@@ -6,7 +6,7 @@ export type MailingListSetupParseError = Readonly<{
6
6
  }>;
7
7
  export type MailingListGlobalFormParseError = Readonly<{
8
8
  tag: 'invalid_mailing_list_global_form';
9
- field: 'shape' | 'fields' | 'includeOptionalPhone' | 'buttonLabel' | 'privacyNote';
9
+ field: 'shape' | 'fields' | 'includeOptionalPhone' | 'buttonLabel' | 'successMessage' | 'privacyNote';
10
10
  }>;
11
11
  export declare function parseMailingListGlobalForm(value: unknown): Result<MailingListGlobalForm, MailingListGlobalFormParseError>;
12
12
  export declare function parseMailingListSiteSetup(value: unknown): Result<MailingListSiteSetup, MailingListSetupParseError>;
@@ -1,6 +1,9 @@
1
1
  import type { Brand, SiteId } from './branded';
2
- import type { BrevoAccountId, BrevoConfirmationTemplateId, BrevoConnectionId, BrevoListId, MailchimpAccountId, MailchimpAudienceId, MailchimpConnectionId, NewsletterListId } from './mailing-list-identifiers';
2
+ import { type BrevoAccountId, type BrevoConfirmationTemplateId, type BrevoConnectionId, type BrevoListId, type MailchimpAccountId, type MailchimpAudienceId, type MailchimpConnectionId, type NewsletterListId } from './mailing-list-identifiers';
3
+ import { type Result } from './result';
3
4
  export type MailingListProvider = 'native' | 'mailchimp' | 'brevo';
5
+ /** The name shown to people for each provider; the native one is the product brand. */
6
+ export declare function mailingListProviderName(provider: MailingListProvider): string;
4
7
  export type NativeMailingListTopicId = NewsletterListId;
5
8
  export type MailingListSetupRevision = Brand<number, 'MailingListSetupRevision'>;
6
9
  export type MailingListProfileField = 'name' | 'first_name' | 'last_name' | 'company' | 'phone';
@@ -22,8 +25,15 @@ export type MailingListGlobalForm = Readonly<{
22
25
  fields: MailingListGlobalFields;
23
26
  includeOptionalPhone: boolean;
24
27
  buttonLabel: string;
28
+ successMessage: string;
25
29
  privacyNote: string | null;
26
30
  }>;
31
+ export declare const DEFAULT_MAILING_LIST_SUCCESS_MESSAGE = "Thanks \u2014 you're on the list.";
32
+ /**
33
+ * Seeded into a new setup so every signup form carries a preferences/unsubscribe
34
+ * reassurance out of the box. Administrators can edit or clear it.
35
+ */
36
+ export declare const DEFAULT_MAILING_LIST_PRIVACY_NOTE = "Change your preferences or unsubscribe at any time.";
27
37
  export type ToggleConfirmation = Readonly<{
28
38
  tag: 'off';
29
39
  }> | Readonly<{
@@ -126,4 +136,7 @@ export type MailingListProviderScope = Readonly<{
126
136
  provider: 'brevo';
127
137
  accountId: BrevoAccountId;
128
138
  }>;
139
+ export declare function mailingListProviderScopeFromConfigured(provider: ConfiguredMailingListProvider): MailingListProviderScope;
140
+ export declare function parseMailingListProviderScope(value: unknown): Result<MailingListProviderScope, 'invalid_mailing_list_provider_scope'>;
141
+ export declare function sameMailingListProviderScope(previous: MailingListProviderScope, next: MailingListProviderScope): boolean;
129
142
  export declare function countDefaultMailingListPlacements(placementModes: readonly ('default' | 'custom')[]): number;
@@ -34,23 +34,22 @@ export type MailingListSignupSource = Readonly<{
34
34
  export type MailingListSignupSourceRef = Readonly<{
35
35
  tag: 'block_ref';
36
36
  blockId: MailingListBlockId;
37
+ contentVersionId: ContentVersionId;
37
38
  }> | Readonly<{
38
39
  tag: 'signed_source_ref';
39
40
  token: MailingListSignedSourceToken;
40
41
  }>;
41
42
  /** Source identity signed into managed-footer and SDK-footer form tokens. */
42
43
  export type MailingListSignupTokenSource = Readonly<{
43
- kind: 'block';
44
- blockId: MailingListBlockId;
45
- }> | Readonly<{
46
44
  kind: 'footer-composition';
47
45
  sectionId: FooterModuleId;
46
+ revision: MailingListFooterRevision;
48
47
  }> | Readonly<{
49
48
  kind: 'sdk-footer-block';
50
49
  blockId: MailingListSdkFooterBlockId;
51
50
  contentHash: MailingListSdkContentHash;
52
51
  }>;
53
- export declare function buildMailingListSignupBlockSourceRef(blockId: unknown): MailingListSignupSourceRef | null;
52
+ export declare function buildMailingListSignupBlockSourceRef(blockId: unknown, contentVersionId: unknown): MailingListSignupSourceRef | null;
54
53
  type MailingListSignupProfileBase = Readonly<{
55
54
  email: NormalizedSubscriberEmail;
56
55
  phone: Readonly<{
@@ -108,27 +107,6 @@ type ResolvedMailingListSignupIntentBase = Readonly<{
108
107
  source: MailingListSignupSource;
109
108
  consentedAt: string;
110
109
  }>;
111
- type ResolvedMailingListFormProfile = Readonly<{
112
- formPreset: 'emailOnly';
113
- profile: Extract<MailingListSignupProfile, {
114
- preset: 'emailOnly';
115
- }>;
116
- }> | Readonly<{
117
- formPreset: 'emailName';
118
- profile: Extract<MailingListSignupProfile, {
119
- preset: 'emailName';
120
- }>;
121
- }> | Readonly<{
122
- formPreset: 'emailFirstLast';
123
- profile: Extract<MailingListSignupProfile, {
124
- preset: 'emailFirstLast';
125
- }>;
126
- }> | Readonly<{
127
- formPreset: 'emailNameCompany';
128
- profile: Extract<MailingListSignupProfile, {
129
- preset: 'emailNameCompany';
130
- }>;
131
- }>;
132
110
  type ResolvedMailingListProviderIntent = Readonly<{
133
111
  provider: 'native';
134
112
  target: Extract<ResolvedMailingListTarget, {
@@ -150,7 +128,9 @@ type ResolvedMailingListProviderIntent = Readonly<{
150
128
  }>;
151
129
  confirmation: BrevoConfirmation;
152
130
  }>;
153
- export type ResolvedMailingListSignupIntent = ResolvedMailingListSignupIntentBase & ResolvedMailingListFormProfile & ResolvedMailingListProviderIntent;
131
+ export type ResolvedMailingListSignupIntent = ResolvedMailingListSignupIntentBase & Readonly<{
132
+ profile: MailingListSignupProfile;
133
+ }> & ResolvedMailingListProviderIntent;
154
134
  export type MailingListProviderAcknowledgement = Readonly<{
155
135
  tag: 'subscribed';
156
136
  }> | Readonly<{
@@ -199,7 +179,7 @@ export type MailingListPublicSignupResponse = Readonly<{
199
179
  reason: 'profile_rejected';
200
180
  }> | Readonly<{
201
181
  tag: 'unavailable';
202
- reason: 'configuration_unavailable' | 'stale_configuration' | 'authentication_failed' | 'target_unavailable' | 'subscriber_suppressed' | 'rate_limited' | 'temporarily_unavailable';
182
+ reason: 'configuration_unavailable' | 'stale_configuration' | 'authentication_failed' | 'target_unavailable' | 'rate_limited' | 'temporarily_unavailable';
203
183
  }> | Readonly<{
204
184
  tag: 'uncertain';
205
185
  reason: 'deadline_exceeded' | 'network_interrupted';