@riverbankcms/sdk 0.139.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 (232) hide show
  1. package/README.md +1 -1
  2. package/dist/{PreviewEditorSidebar-BDeenhi3.mjs → PreviewEditorSidebar-Q-fy9GYw.mjs} +4 -4
  3. package/dist/{PreviewEditorUI-DSRhgjF5.mjs → PreviewEditorUI-LYGzgk85.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-D2K8GLUG.mjs → PreviewQueryProvider-CN0ewic5.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-CL7wSnYu.mjs → SdkPreviewModeRuntime-CoPYI5Jq.mjs} +90 -50
  6. package/dist/{SiteChromeCustomizeContext-BhDn-5ir.mjs → SiteChromeCustomizeContext-D8LePX8x.mjs} +2731 -1303
  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 +17 -31
  20. package/dist/_dts/api/src/domainConnection.d.ts +4 -0
  21. package/dist/_dts/api/src/endpoints.d.ts +93 -64
  22. package/dist/_dts/api/src/event-destination-policy.d.ts +2 -1
  23. package/dist/_dts/api/src/footerCompositionContracts.d.ts +25 -0
  24. package/dist/_dts/api/src/footerSettings.d.ts +9 -6
  25. package/dist/_dts/api/src/index.d.ts +6 -7
  26. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  27. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  28. package/dist/_dts/api/src/launchReadiness.d.ts +1 -0
  29. package/dist/_dts/api/src/mailingListIntegration.d.ts +8 -2
  30. package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +1 -1
  31. package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +2 -1
  32. package/dist/_dts/api/src/navigation/types.d.ts +1 -1
  33. package/dist/_dts/api/src/onboarding/confirmationResend.d.ts +25 -0
  34. package/dist/_dts/api/src/onboarding/surfaceData.d.ts +32 -32
  35. package/dist/_dts/api/src/publicBookingAvailabilityEndpointDefinitions.d.ts +8 -0
  36. package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +1 -0
  37. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +11 -3
  38. package/dist/_dts/api/src/publicExperience/sharedTypes.d.ts +3 -29
  39. package/dist/_dts/api/src/publicOnboardingAttemptEndpointDefinitions.d.ts +65 -0
  40. package/dist/_dts/api/src/saveOutcome.d.ts +20 -0
  41. package/dist/_dts/api/src/sdkContracts.d.ts +3 -22
  42. package/dist/_dts/api/src/sdkPushContracts.d.ts +18 -0
  43. package/dist/_dts/api/src/sdkThemeWire.d.ts +44 -44
  44. package/dist/_dts/api/src/settings/permissions.d.ts +12 -0
  45. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +10 -29
  46. package/dist/_dts/api/src/siteOnboarding.d.ts +9 -9
  47. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +2 -4
  48. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +3 -1
  49. package/dist/_dts/api/src/siteSettings.d.ts +20 -7
  50. package/dist/_dts/api/src/types.d.ts +77 -77
  51. package/dist/_dts/api/src/wholeSeriesRuns.d.ts +2 -37
  52. package/dist/_dts/billing/src/membership/index.d.ts +3 -0
  53. package/dist/_dts/billing/src/plans/types.d.ts +3 -0
  54. package/dist/_dts/billing/src/site-arrangements.d.ts +23 -3
  55. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +20 -4
  56. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +2 -0
  57. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +7 -0
  58. package/dist/_dts/blocks/src/portal/types.d.ts +2 -4
  59. package/dist/_dts/blocks/src/portal/waitlist-types.d.ts +35 -0
  60. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +2 -0
  61. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +2 -0
  62. package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +122 -0
  63. package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +2 -1
  64. package/dist/_dts/blocks/src/system/blocks/events/shared/eventSelection.d.ts +11 -0
  65. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +42 -0
  66. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -0
  67. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
  68. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -47
  69. package/dist/_dts/blocks/src/system/data/index.d.ts +2 -2
  70. package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +7 -1
  71. package/dist/_dts/blocks/src/system/data/types.d.ts +9 -0
  72. package/dist/_dts/blocks/src/system/data/utils.d.ts +1 -1
  73. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +27 -1
  74. package/dist/_dts/blocks/src/system/registry.d.ts +1 -0
  75. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +0 -28
  76. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  77. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +7 -3
  78. package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +1 -1
  79. package/dist/_dts/blocks/src/system/runtime/api/types/waitlist-claims.d.ts +7 -2
  80. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +42 -186
  81. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +21 -93
  82. package/dist/_dts/blocks/src/system/runtime/hooks/useEventFilters.d.ts +2 -1
  83. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +48 -1
  84. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +1 -2
  85. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/TicketSelectionStep.d.ts +2 -0
  86. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/checkoutRecovery.d.ts +14 -0
  87. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +56 -0
  88. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +4 -0
  89. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.state.d.ts +5 -0
  90. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +6 -8
  91. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useCheckoutRecovery.d.ts +8 -0
  92. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.d.ts +3 -0
  93. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.state.d.ts +10 -3
  94. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventCheckoutHandoffRestore.d.ts +9 -0
  95. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +8 -7
  96. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +14 -7
  97. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventSourceRecovery.d.ts +18 -0
  98. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useSettledCommerceView.d.ts +37 -0
  99. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.client.d.ts +1 -1
  100. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +24 -6
  101. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.server.d.ts +4 -2
  102. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +4 -3
  103. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +3 -0
  104. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +11 -101
  105. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +7 -2
  106. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/listOptions.d.ts +2 -0
  107. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -0
  108. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +1 -0
  109. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +1 -0
  110. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -6
  111. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  112. package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.d.ts +2 -0
  113. package/dist/_dts/blocks/src/system/transforms/registry/eventCalendar.d.ts +12 -0
  114. package/dist/_dts/commerce/src/purchase/bookingInstalmentSchedule.d.ts +4 -0
  115. package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +4 -0
  116. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +27 -4
  117. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +2 -1
  118. package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +3 -1
  119. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +3 -0
  120. package/dist/_dts/core/src/branded.d.ts +0 -8
  121. package/dist/_dts/core/src/index.d.ts +1 -0
  122. package/dist/_dts/core/src/mailing-list-setup-parser.d.ts +1 -1
  123. package/dist/_dts/core/src/mailing-list-setup.d.ts +14 -1
  124. package/dist/_dts/core/src/mailing-list-submission.d.ts +7 -27
  125. package/dist/_dts/core/src/participants.d.ts +2 -29
  126. package/dist/_dts/core/src/public-experience.d.ts +4 -0
  127. package/dist/_dts/core/src/public-profile.d.ts +27 -1
  128. package/dist/_dts/core/src/site-route-target.d.ts +9 -2
  129. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +296 -606
  130. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListGlobalSettingsSummary.d.ts +10 -0
  131. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListTargetingField.d.ts +3 -2
  132. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/context.d.ts +3 -2
  133. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +3 -2
  134. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/targetingState.d.ts +19 -0
  135. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +27 -1
  136. package/dist/_dts/sdk/src/public-api/contracts.d.ts +14 -20
  137. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -0
  138. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +2 -0
  139. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +7 -1
  140. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +1 -0
  141. package/dist/_dts/sdk/src/version.d.ts +1 -1
  142. package/dist/_dts/theme-core/src/ThemeFontLoader.d.ts +17 -1
  143. package/dist/_dts/theme-core/src/accordions/types.d.ts +3 -3
  144. package/dist/_dts/theme-core/src/buttons/affordanceSuppression.d.ts +17 -0
  145. package/dist/_dts/theme-core/src/buttons/buttonColourContract.d.ts +1 -1
  146. package/dist/_dts/theme-core/src/buttons/classNames.d.ts +16 -0
  147. package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +0 -6
  148. package/dist/_dts/theme-core/src/buttons/resolvedButtonCss.d.ts +4 -4
  149. package/dist/_dts/theme-core/src/cards/types.d.ts +21 -21
  150. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  151. package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +8 -2
  152. package/dist/_dts/theme-core/src/header/legacyHeaderVariant.d.ts +2 -2
  153. package/dist/_dts/theme-core/src/hosted-booking-appearance.d.ts +54 -12
  154. package/dist/_dts/theme-core/src/index.d.ts +1 -1
  155. package/dist/_dts/theme-core/src/inputs/types.d.ts +2 -2
  156. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +54 -54
  157. package/dist/_dts/theme-core/src/runtime/buildThemeRuntimeFromBridge.d.ts +1 -4
  158. package/dist/_dts/theme-core/src/schema.d.ts +84 -84
  159. package/dist/_dts/theme-core/src/shared/componentStyles.d.ts +1 -1
  160. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  161. package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +77 -0
  162. package/dist/_dts/theme-core/src/surfaces/index.d.ts +1 -0
  163. package/dist/_dts/theme-core/src/typography/generateTypographyCss.d.ts +2 -2
  164. package/dist/_dts/ui/src/lib/use-delayed-flag.d.ts +9 -0
  165. package/dist/_dts/ui/src/pending-button.d.ts +10 -0
  166. package/dist/client/{BookingConsentAgreement-CZvTDtsK.mjs → BookingConsentAgreement-xJeYNdnb.mjs} +4 -4
  167. package/dist/client/{DiscountCodeDisclosure-D-DsLCMU.mjs → DiscountCodeDisclosure-DdT6uzl9.mjs} +1 -1
  168. package/dist/client/{EventCombined.client-dWqgd5ZO.mjs → EventCombined.client-Cp28uYuM.mjs} +12 -16
  169. package/dist/client/{EventListing.client-BMRa9IYp.mjs → EventListing.client-CD6AJsMr.mjs} +4 -17
  170. package/dist/client/{LeafletStaticMap-D21W9kBZ.mjs → LeafletStaticMap-DBsAi9-e.mjs} +1 -1
  171. package/dist/client/{accordion-FxF_ta47.mjs → accordion-6dwbOKYR.mjs} +1 -1
  172. package/dist/client/{bookingForm-YnwW4TGw.mjs → bookingForm-CZE9_qPQ.mjs} +7 -7
  173. package/dist/client/bookings.mjs +500 -233
  174. package/dist/client/{carousel-vng7fFT5.mjs → carousel-7VHGQARz.mjs} +2 -2
  175. package/dist/client/{carousel.client-59G_WMr4.mjs → carousel.client-DQTjCVQT.mjs} +1 -1
  176. package/dist/client/{cart-DEPDsjNk.mjs → cart-Qg_mvQhh.mjs} +3 -3
  177. package/dist/client/{checkout-CZRWu9rW.mjs → checkout-D84rpgdr.mjs} +3 -3
  178. package/dist/client/{checkoutUrls-BuseL0dw.mjs → checkoutUrls-FL6lRkrt.mjs} +1 -1
  179. package/dist/client/client.mjs +2315 -1017
  180. package/dist/client/{colorStyles-CrxJrPjJ.mjs → colorStyles-3013aRAY.mjs} +3 -1
  181. package/dist/client/{context-DvU_WUmd.mjs → context-Ctp3T0Wr.mjs} +6 -19
  182. package/dist/client/{dates-wnPMiRl5.mjs → dates-DJKFcI_N.mjs} +2 -2
  183. package/dist/client/{eventCalendar-BA3Q5L15.mjs → eventCalendar-CK31z3vs.mjs} +12 -8
  184. package/dist/client/{eventCombined-51wgR-1R.mjs → eventCombined-DiXd-ewn.mjs} +3 -3
  185. package/dist/client/{eventDetails-modaetpm.mjs → eventDetails-CTRgt2DK.mjs} +4 -4
  186. package/dist/client/{eventListing-D8t2J3Kv.mjs → eventListing-Dy9vi_j_.mjs} +3 -3
  187. package/dist/client/{eventRegistration-CYqtkCE_.mjs → eventRegistration-CnalYMr2.mjs} +618 -177
  188. package/dist/client/{form-CBKXN5In.mjs → form-eUiMveTT.mjs} +3 -3
  189. package/dist/client/{headerSection-DylDqNrs.mjs → headerSection-Dy9kQpB1.mjs} +2 -2
  190. package/dist/client/hooks.mjs +692 -212
  191. package/dist/client/{locationMap-CvWrG0vZ.mjs → locationMap-DalCmWU0.mjs} +3 -3
  192. package/dist/client/{media-BOHuueS5.mjs → media-DHpfFwd3.mjs} +1 -1
  193. package/dist/client/{newsletterForm-Btwk70zw.mjs → newsletterForm-SDDPvhS0.mjs} +150 -94
  194. package/dist/client/{pricing-Uzw-GQ6Y.mjs → pricing-OcMz4SnX.mjs} +1 -1
  195. package/dist/client/{productDetail-JLcUYKnd.mjs → productDetail-BQrgHElM.mjs} +3 -3
  196. package/dist/client/{productList-FM0cbUzj.mjs → productList-OnPn_UJj.mjs} +3 -3
  197. package/dist/client/{propsDecoder-DYzafZb2.mjs → propsDecoder-zBdsnS-N.mjs} +168 -32
  198. package/dist/client/rendering/client.mjs +1355 -519
  199. package/dist/client/rendering/islands.mjs +19 -19
  200. package/dist/client/rendering.mjs +2294 -953
  201. package/dist/client/{scrollToBlock-CvXszexS.mjs → scrollToBlock-BNM4Ob2Y.mjs} +28 -11
  202. package/dist/client/{shop-BIcjvy5a.mjs → shop-Bv1fPTwQ.mjs} +6 -6
  203. package/dist/client/{shop-commerce-BZQsy7xw.mjs → shop-commerce-D4KNGaW8.mjs} +7 -7
  204. package/dist/client/{shop-commerce-store-D5V7XAb5.mjs → shop-commerce-store-2N5EV0Rc.mjs} +1 -1
  205. package/dist/client/{shopShared-DowkXevB.mjs → shopShared-DvJGdHTV.mjs} +4 -4
  206. package/dist/client/{useEventFilters-oMoTw_JE.mjs → useEventFilters-BBBvGDHQ.mjs} +19 -13
  207. package/dist/preview-next/before-render.mjs +119 -64
  208. package/dist/preview-next/client/runtime.mjs +4 -4
  209. package/dist/preview-next/editor-chrome.css +4 -8
  210. package/dist/preview-next/keepAlive.mjs +119 -64
  211. package/dist/preview-next/middleware.mjs +119 -64
  212. package/dist/{previewAuthStore-COUyAKaX.mjs → previewAuthStore-Gjb6r6vz.mjs} +119 -64
  213. package/dist/{sdk-runtime-D4k2LSGF.mjs → sdk-runtime-Defnbfzw.mjs} +2 -2
  214. package/dist/{separator-UGtpag4Z.mjs → separator-CZXO3Sb0.mjs} +1 -1
  215. package/dist/server/components.mjs +1170 -384
  216. package/dist/server/config-validation.mjs +560 -105
  217. package/dist/server/config.mjs +564 -109
  218. package/dist/server/data.mjs +688 -212
  219. package/dist/server/index.mjs +126 -66
  220. package/dist/server/next.mjs +1429 -662
  221. package/dist/server/page-converter.mjs +372 -99
  222. package/dist/server/prebuild.mjs +1 -1
  223. package/dist/server/rendering/server.mjs +1624 -817
  224. package/dist/server/rendering.mjs +1200 -391
  225. package/dist/server/routing.mjs +767 -247
  226. package/dist/server/server.mjs +715 -276
  227. package/dist/server/theme-bridge.mjs +475 -110
  228. package/dist/server/theme.mjs +9 -3
  229. package/dist/styles/index.css +265 -45
  230. package/package.json +1 -1
  231. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionCompactRow.d.ts +0 -29
  232. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionList.d.ts +0 -13
@@ -16,6 +16,49 @@ declare const publicLocationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
16
16
  }, z.core.$strip>>;
17
17
  }, z.core.$strip>], "mode">;
18
18
  type PublicAppointmentLocation = z.infer<typeof publicLocationSchema>;
19
+ declare const publicAppointmentServiceSchema: z.ZodObject<{
20
+ id: z.ZodString;
21
+ slug: z.ZodOptional<z.ZodString>;
22
+ title: z.ZodString;
23
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
24
+ durationMinutes: z.ZodNumber;
25
+ pricing: z.ZodOptional<z.ZodObject<{
26
+ pricingStrategy: z.ZodEnum<{
27
+ free: "free";
28
+ single: "single";
29
+ tiered: "tiered";
30
+ sliding_scale: "sliding_scale";
31
+ }>;
32
+ currency: z.ZodString;
33
+ singlePriceAmount: z.ZodNullable<z.ZodNumber>;
34
+ slidingMinAmount: z.ZodNullable<z.ZodNumber>;
35
+ slidingMaxAmount: z.ZodNullable<z.ZodNumber>;
36
+ options: z.ZodReadonly<z.ZodArray<z.ZodObject<{
37
+ priceAmount: z.ZodNumber;
38
+ isActive: z.ZodBoolean;
39
+ saleStartsAt: z.ZodNullable<z.ZodString>;
40
+ saleEndsAt: z.ZodNullable<z.ZodString>;
41
+ }, z.core.$strip>>>;
42
+ }, z.core.$strip>>;
43
+ priceAmount: z.ZodNullable<z.ZodNumber>;
44
+ priceCurrency: z.ZodNullable<z.ZodString>;
45
+ location: z.ZodDiscriminatedUnion<[z.ZodObject<{
46
+ mode: z.ZodLiteral<"online">;
47
+ }, z.core.$strip>, z.ZodObject<{
48
+ mode: z.ZodLiteral<"in_person">;
49
+ venue: z.ZodNullable<z.ZodObject<{
50
+ name: z.ZodString;
51
+ area: z.ZodNullable<z.ZodString>;
52
+ }, z.core.$strip>>;
53
+ }, z.core.$strip>, z.ZodObject<{
54
+ mode: z.ZodLiteral<"either">;
55
+ venue: z.ZodNullable<z.ZodObject<{
56
+ name: z.ZodString;
57
+ area: z.ZodNullable<z.ZodString>;
58
+ }, z.core.$strip>>;
59
+ }, z.core.$strip>], "mode">;
60
+ }, z.core.$strip>;
61
+ type PublicAppointmentService = z.infer<typeof publicAppointmentServiceSchema>;
19
62
  export type AppointmentServiceRow = Readonly<{
20
63
  id: string;
21
64
  title: string;
@@ -24,6 +67,7 @@ export type AppointmentServiceRow = Readonly<{
24
67
  locationLabel: string | null;
25
68
  priceLabel: string | null;
26
69
  href: string;
70
+ detailsHref: string | null;
27
71
  }>;
28
72
  export type AppointmentServicesView = Readonly<{
29
73
  kind: 'items';
@@ -39,13 +83,16 @@ export type AppointmentServicesNodeProps = Readonly<{
39
83
  sectionHeading?: unknown;
40
84
  services?: unknown;
41
85
  pathname?: unknown;
86
+ servicePathPrefix?: unknown;
42
87
  className?: string | null;
43
88
  }>;
44
89
  export declare function formatAppointmentDuration(durationMinutes: number): string;
45
90
  export declare function formatAppointmentLocation(location: PublicAppointmentLocation): string | null;
91
+ export declare function formatAppointmentPrice(service: PublicAppointmentService): string | null;
46
92
  export declare function buildAppointmentServicesView(input: Readonly<{
47
93
  services: unknown;
48
94
  pathname: string | undefined;
95
+ servicePathPrefix?: string | null;
49
96
  }>): AppointmentServicesView;
50
- export declare function AppointmentServicesNode({ sectionHeading, services, pathname, className, }: AppointmentServicesNodeProps): React.ReactElement;
97
+ export declare function AppointmentServicesNode({ sectionHeading, services, pathname, servicePathPrefix, className, }: AppointmentServicesNodeProps): React.ReactElement;
51
98
  export default AppointmentServicesNode;
@@ -1,4 +1,3 @@
1
- import React from 'react';
2
1
  import type { UseEventRegistrationWizardResult } from './useEventRegistrationWizard';
3
2
  export type EventPortalAuthCopy = Readonly<{
4
3
  title: string;
@@ -21,4 +20,4 @@ export declare function EventRegistrationSurface(props: Readonly<{
21
20
  buttonClass: string;
22
21
  supportEmail?: string;
23
22
  successMessage: string;
24
- }>): React.JSX.Element;
23
+ }>): import("react").JSX.Element;
@@ -10,6 +10,8 @@ type TicketSelectionStepProps = {
10
10
  occurrenceContext?: OccurrenceContext | null;
11
11
  selectedAttendanceMode?: RegistrationAttendanceMode | null;
12
12
  onAttendanceModeChange?: (attendanceMode: RegistrationAttendanceMode) => void;
13
+ checkoutRecovery?: boolean;
14
+ onCheckoutRecovery?: () => void;
13
15
  ticketsCount: number;
14
16
  maxTickets: number;
15
17
  visibleTicketTypes?: ReturnType<typeof getVisibleTicketTypes>;
@@ -0,0 +1,14 @@
1
+ import type { PublicEventPricingOptionAvailability } from '../../../../../../core/src/index';
2
+ import type { EligibilityData, RegistrationEvent } from './types';
3
+ /** Recovery may select held places; checkout still owns admission and payment validation. */
4
+ export declare function checkoutRecoveryOptionAvailability(availability: PublicEventPricingOptionAvailability): PublicEventPricingOptionAvailability;
5
+ /**
6
+ * A form-only projection for the explicit existing-checkout path. It permits
7
+ * collecting the original selection without claiming a new place is available.
8
+ * The public checkout service identifies the customer and remains the admission
9
+ * authority; no reservation/customer data is exposed through this projection.
10
+ */
11
+ export declare function getCheckoutRecoveryFormEligibility(eligibility: EligibilityData | null): EligibilityData | null;
12
+ export declare function isSoldOutEventSelectable(event: RegistrationEvent, waitlistAvailable: boolean): boolean;
13
+ export declare function canJoinWaitlistOutsideRecovery(event: RegistrationEvent | null, attendanceMode: 'in_person' | 'online' | null, checkoutRecovery: boolean): boolean;
14
+ export declare function canRecoverEventCheckout(event: RegistrationEvent | null): boolean;
@@ -0,0 +1,56 @@
1
+ import { z } from 'zod';
2
+ import type { PublicEvent } from '../../../blocks/events/shared/types';
3
+ import type { PublicEventsRequest } from '../../api/types/events';
4
+ export declare const eventRecoveryRequestSchema: z.ZodObject<{
5
+ limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
6
+ eventSurface: z.ZodOptional<z.ZodEnum<{
7
+ custom: "custom";
8
+ all: "all";
9
+ regularClassSchedule: "regularClassSchedule";
10
+ specialDatedEvents: "specialDatedEvents";
11
+ }>>;
12
+ scheduleScope: z.ZodOptional<z.ZodEnum<{
13
+ any: "any";
14
+ recurring: "recurring";
15
+ oneOff: "oneOff";
16
+ }>>;
17
+ detailLevel: z.ZodOptional<z.ZodEnum<{
18
+ full: "full";
19
+ listing: "listing";
20
+ }>>;
21
+ stage: z.ZodOptional<z.ZodEnum<{
22
+ published: "published";
23
+ preview: "preview";
24
+ }>>;
25
+ from: z.ZodOptional<z.ZodString>;
26
+ to: z.ZodOptional<z.ZodString>;
27
+ afterStartsAt: z.ZodOptional<z.ZodString>;
28
+ afterId: z.ZodOptional<z.ZodString>;
29
+ categoryIds: z.ZodOptional<z.ZodString>;
30
+ venueId: z.ZodOptional<z.ZodString>;
31
+ staffMemberId: z.ZodOptional<z.ZodString>;
32
+ eventPresets: z.ZodOptional<z.ZodString>;
33
+ seriesId: z.ZodOptional<z.ZodString>;
34
+ seriesIds: z.ZodOptional<z.ZodString>;
35
+ runSeriesId: z.ZodOptional<z.ZodString>;
36
+ seriesSlug: z.ZodOptional<z.ZodString>;
37
+ includeOccurrenceId: z.ZodOptional<z.ZodString>;
38
+ readIntent: z.ZodOptional<z.ZodString>;
39
+ readProfile: z.ZodOptional<z.ZodString>;
40
+ }, z.core.$strip>;
41
+ export type EventRecoveryRequest = Omit<PublicEventsRequest, 'siteId'>;
42
+ export type EventRegistrationEventSource = Readonly<{
43
+ kind: 'loaded';
44
+ events: PublicEvent[];
45
+ }> | Readonly<{
46
+ kind: 'unresolved';
47
+ request: EventRecoveryRequest | null;
48
+ }>;
49
+ type EventSourceInput = Readonly<{
50
+ events?: PublicEvent[] | null;
51
+ wholeSeriesRunEvents?: PublicEvent[] | null;
52
+ failures?: Readonly<Record<string, unknown>> | null;
53
+ }>;
54
+ export declare function resolveEventRegistrationEventSource(input: EventSourceInput): EventRegistrationEventSource;
55
+ export declare function parseEventLoaderRecoveryRequest(value: unknown): EventRecoveryRequest | null;
56
+ export {};
@@ -54,6 +54,10 @@ export declare function usePortalAuthWithDeps(deps: EventRegistrationHooksDeps):
54
54
  export type UseEligibilityResult = {
55
55
  state: EligibilityLookupState;
56
56
  eligibility: EligibilityLookupState['eligibility'];
57
+ /** Identity of the inputs that produced `eligibility`, retained while refreshing. */
58
+ settledRequestKey: string | null;
59
+ /** Identity of the inputs currently requested by the wizard. */
60
+ requestKey: string;
57
61
  isLoading: boolean;
58
62
  error: EligibilityLookupState['error'];
59
63
  creditState: PortalCreditState;
@@ -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;
@@ -1,15 +1,13 @@
1
1
  import type { PublicEventPricing } from '../../../../../../core/src/index';
2
- import type { EventRegistrationPricingOption } from '../../../blocks/event-registration';
3
- import type { PublicEvent, PublicEventPricingOption, PublicEventPricingOptionAvailability } from '../../../blocks/events/shared/types';
2
+ import type { EventRegistrationAvailablePaymentOption, EventRegistrationOptionsResponse, EventRegistrationPricingOption } from '../../../blocks/event-registration';
4
3
  import type { OccurrenceContext } from '../../../blocks/event-registration.shared';
5
- import type { PublicMembershipProductCollection, PublicPassProductCollection } from '../../../blocks/shop.shared';
6
- import type { PublicRunSession } from '../../../blocks/events/shared/types';
7
- import type { AvailablePass, AvailableMembership, DirectCheckoutCollectionOptionKind, EventTicketLineSummary } from '../../api/types';
4
+ import type { PublicEvent, PublicEventPricingOption, PublicEventPricingOptionAvailability, PublicRunSession } from '../../../blocks/events/shared/types';
8
5
  import type { BlockBookingPaymentTerms } from '../../../blocks/shared/bookingPaymentTerms';
9
- import type { EventRegistrationPageSurfaceSubject } from './eventScope';
6
+ import type { PublicMembershipProductCollection, PublicPassProductCollection } from '../../../blocks/shop.shared';
10
7
  import type { BlockButtonRole } from '../../../constants/buttonRoles';
11
- import type { EventRegistrationAvailablePaymentOption, EventRegistrationOptionsResponse } from '../../../blocks/event-registration';
12
- export type { PublicEvent, OccurrenceContext };
8
+ import type { AvailableMembership, AvailablePass, DirectCheckoutCollectionOptionKind, EventTicketLineSummary } from '../../api/types';
9
+ import type { EventRegistrationPageSurfaceSubject } from './eventScope';
10
+ export type { OccurrenceContext, PublicEvent };
13
11
  export type { FormData } from '../../shared';
14
12
  /**
15
13
  * Guest details for additional attendees (when "collect all attendee details" is enabled)
@@ -0,0 +1,8 @@
1
+ import type { EligibilityData, RegistrationEvent, RegistrationStep } from './types';
2
+ /** Recovery belongs to the selected booking subject; changing events resets its scope. */
3
+ export declare function useCheckoutRecovery(event: RegistrationEvent | null, setStep: (step: RegistrationStep) => void): {
4
+ checkoutRecovery: boolean;
5
+ startCheckoutRecovery: () => void;
6
+ };
7
+ /** Authenticated pending bookings enter the same form-only recovery path as guests. */
8
+ export declare function useCheckoutRecoveryEligibility(eligibility: EligibilityData | null, step: RegistrationStep, checkoutRecovery: boolean, startCheckoutRecovery: () => void): EligibilityData | null;
@@ -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,10 +1,9 @@
1
- import type { BlockApiClient } from '../../api';
2
1
  import type { EventRegistrationErrorAction } from '../../../../../../commerce/src/purchase/index';
3
- import { savePendingRegistration } from './sessionStorage';
4
- import type { EventTicketSelectionLine, FormData, Guest, RegistrationResult, RegistrationStep, PaymentSelection } from './types';
5
- import type { PaymentMethod } from '../../api/types';
6
- import type { EventRegistrationStatusReference } from '../../api/types';
2
+ import type { BlockApiClient } from '../../api';
3
+ import type { EventRegistrationStatusReference, PaymentMethod } from '../../api/types';
7
4
  import type { RegistrationTarget } from './registrationDerivations';
5
+ import { savePendingRegistration } from './sessionStorage';
6
+ import type { EventTicketSelectionLine, FormData, Guest, PaymentSelection, RegistrationResult, RegistrationStep } from './types';
8
7
  export type EventRegistrationSubmitOptions = Readonly<{
9
8
  redirect?: 'auto' | 'manual';
10
9
  }>;
@@ -24,6 +23,7 @@ export type EventRegistrationSubmitResult = Readonly<{
24
23
  reason: 'blocked' | 'missing-target' | 'submission-failed';
25
24
  message: string;
26
25
  }>;
26
+ export type EventRegistrationSubmit = (method: PaymentMethod, passId?: string, membershipId?: string, selection?: PaymentSelection, submitOptions?: EventRegistrationSubmitOptions) => Promise<EventRegistrationSubmitResult>;
27
27
  export type UseEventRegistrationSubmitInput = {
28
28
  api: BlockApiClient;
29
29
  registrationTarget: RegistrationTarget | null;
@@ -36,6 +36,7 @@ export type UseEventRegistrationSubmitInput = {
36
36
  guests: Guest[];
37
37
  discountCode: string;
38
38
  claimToken: string | null;
39
+ waitlistEntryId?: string | null;
39
40
  setPendingRegistrationReference: (reference: EventRegistrationStatusReference) => void;
40
41
  setStep: (step: RegistrationStep) => void;
41
42
  setErrorAction?: (action: EventRegistrationErrorAction) => void;
@@ -55,6 +56,6 @@ type ClientCommandIdCryptoSource = Readonly<{
55
56
  getRandomValues: (bytes: Uint8Array<ArrayBuffer>) => Uint8Array<ArrayBuffer>;
56
57
  }>;
57
58
  export declare function createClientCommandId(cryptoSource?: ClientCommandIdCryptoSource): string;
58
- export declare function useEventRegistrationSubmit(options: UseEventRegistrationSubmitInput): (method: PaymentMethod, passId?: string, membershipId?: string, selection?: PaymentSelection, submitOptions?: EventRegistrationSubmitOptions) => Promise<EventRegistrationSubmitResult>;
59
- export declare function useEventRegistrationSubmitWithDeps(options: UseEventRegistrationSubmitInput, deps: EventRegistrationSubmitDeps): (method: PaymentMethod, passId?: string, membershipId?: string, selection?: PaymentSelection, submitOptions?: EventRegistrationSubmitOptions) => Promise<EventRegistrationSubmitResult>;
59
+ export declare function useEventRegistrationSubmit(options: UseEventRegistrationSubmitInput): EventRegistrationSubmit;
60
+ export declare function useEventRegistrationSubmitWithDeps(options: UseEventRegistrationSubmitInput, deps: EventRegistrationSubmitDeps): EventRegistrationSubmit;
60
61
  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';
@@ -52,6 +51,8 @@ export declare function useEventRegistrationWizard(options: UseEventRegistration
52
51
  scopedEvents: RegistrationEvent[];
53
52
  preSelectedEvent: RegistrationEvent | null;
54
53
  hasPreSelectedContext: boolean;
54
+ checkoutRecovery: boolean;
55
+ startCheckoutRecovery: () => void;
55
56
  step: RegistrationStep;
56
57
  setStep: (nextStep: RegistrationStep) => void;
57
58
  selectedEvent: RegistrationEvent | null;
@@ -79,7 +80,7 @@ export declare function useEventRegistrationWizard(options: UseEventRegistration
79
80
  }> | null;
80
81
  slidingScaleSelectionMessage: string | null;
81
82
  selectedTicketType: import("../../..").EventRegistrationPricingOption | null;
82
- ticketSelectionSummaryLines: {
83
+ ticketSelectionSummaryLines: readonly {
83
84
  pricingOptionId: string | null;
84
85
  label: string;
85
86
  quantity: number;
@@ -127,6 +128,8 @@ export declare function useEventRegistrationWizard(options: UseEventRegistration
127
128
  kind: "none";
128
129
  }> | Readonly<{
129
130
  kind: "booked";
131
+ }> | Readonly<{
132
+ kind: "pending_payment";
130
133
  }> | Readonly<{
131
134
  kind: "waitlisted";
132
135
  }>;
@@ -141,14 +144,14 @@ export declare function useEventRegistrationWizard(options: UseEventRegistration
141
144
  manualCodeEntryAllowed: boolean;
142
145
  autoAppliedDiscount: import("../../api/types").AutoAppliedDiscountPreview | null;
143
146
  discountsAvailableLoading: boolean;
144
- discountContext: DiscountContext | null;
147
+ discountContext: import("../../api").DiscountContext | null;
145
148
  shouldShowDiscountToggle: boolean;
146
149
  verification: import("./useEventRegistrationStripeReturn").EventRegistrationStripeReturnResult;
147
150
  handleDetailsComplete: () => Promise<EventRegistrationDetailsCompleteResult>;
148
151
  handlePaymentSelect: () => Promise<void>;
149
152
  handleUseCardInsteadOfPass: () => void;
150
153
  handleBookForSomeoneElse: () => void;
151
- handleSubmit: (method: import("./PaymentSelectionStep").PaymentMethod, passId?: string, membershipId?: string, selection?: PaymentSelection, submitOptions?: import("./useEventRegistrationSubmit").EventRegistrationSubmitOptions) => Promise<import("./useEventRegistrationSubmit").EventRegistrationSubmitResult>;
154
+ handleSubmit: import("./useEventRegistrationSubmit").EventRegistrationSubmit;
152
155
  handleEventSelect: (event: RegistrationEvent) => void;
153
156
  handleRetry: () => void;
154
157
  };
@@ -174,6 +177,8 @@ export declare function useEventRegistrationWizardWithDeps(options: UseEventRegi
174
177
  scopedEvents: RegistrationEvent[];
175
178
  preSelectedEvent: RegistrationEvent | null;
176
179
  hasPreSelectedContext: boolean;
180
+ checkoutRecovery: boolean;
181
+ startCheckoutRecovery: () => void;
177
182
  step: RegistrationStep;
178
183
  setStep: (nextStep: RegistrationStep) => void;
179
184
  selectedEvent: RegistrationEvent | null;
@@ -201,7 +206,7 @@ export declare function useEventRegistrationWizardWithDeps(options: UseEventRegi
201
206
  }> | null;
202
207
  slidingScaleSelectionMessage: string | null;
203
208
  selectedTicketType: import("../../..").EventRegistrationPricingOption | null;
204
- ticketSelectionSummaryLines: {
209
+ ticketSelectionSummaryLines: readonly {
205
210
  pricingOptionId: string | null;
206
211
  label: string;
207
212
  quantity: number;
@@ -249,6 +254,8 @@ export declare function useEventRegistrationWizardWithDeps(options: UseEventRegi
249
254
  kind: "none";
250
255
  }> | Readonly<{
251
256
  kind: "booked";
257
+ }> | Readonly<{
258
+ kind: "pending_payment";
252
259
  }> | Readonly<{
253
260
  kind: "waitlisted";
254
261
  }>;
@@ -263,14 +270,14 @@ export declare function useEventRegistrationWizardWithDeps(options: UseEventRegi
263
270
  manualCodeEntryAllowed: boolean;
264
271
  autoAppliedDiscount: import("../../api/types").AutoAppliedDiscountPreview | null;
265
272
  discountsAvailableLoading: boolean;
266
- discountContext: DiscountContext | null;
273
+ discountContext: import("../../api").DiscountContext | null;
267
274
  shouldShowDiscountToggle: boolean;
268
275
  verification: import("./useEventRegistrationStripeReturn").EventRegistrationStripeReturnResult;
269
276
  handleDetailsComplete: () => Promise<EventRegistrationDetailsCompleteResult>;
270
277
  handlePaymentSelect: () => Promise<void>;
271
278
  handleUseCardInsteadOfPass: () => void;
272
279
  handleBookForSomeoneElse: () => void;
273
- handleSubmit: (method: import("./PaymentSelectionStep").PaymentMethod, passId?: string, membershipId?: string, selection?: PaymentSelection, submitOptions?: import("./useEventRegistrationSubmit").EventRegistrationSubmitOptions) => Promise<import("./useEventRegistrationSubmit").EventRegistrationSubmitResult>;
280
+ handleSubmit: import("./useEventRegistrationSubmit").EventRegistrationSubmit;
274
281
  handleEventSelect: (event: RegistrationEvent) => void;
275
282
  handleRetry: () => void;
276
283
  };
@@ -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 {};
@@ -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
+ };
@@ -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;