@riverbankcms/sdk 0.151.0 → 0.153.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 (316) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/dist/{EventEmbeddedCheckoutStep-BBHbM22D.mjs → EventEmbeddedCheckoutStep-veN-QiAE.mjs} +10 -9
  3. package/dist/{PreviewEditorSidebar-BHplI9HE.mjs → PreviewEditorSidebar-jI_4DTZY.mjs} +4 -3
  4. package/dist/{PreviewEditorUI-DuyN8nsD.mjs → PreviewEditorUI-ORkVZhfu.mjs} +5 -4
  5. package/dist/{SdkPreviewModeRuntime-CR5ypwxJ.mjs → SdkPreviewModeRuntime-DaNqevI1.mjs} +341 -164
  6. package/dist/{SiteChromeCustomizeContext-D5t6joF_.mjs → SiteChromeCustomizeContext-CgNuBHC0.mjs} +27124 -39230
  7. package/dist/ThemedButton-X2UxhW6F.mjs +16525 -0
  8. package/dist/_dts/ai/src/contracts/proposals.d.ts +52 -52
  9. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +2357 -7859
  10. package/dist/_dts/api/src/bookingOperations.d.ts +5 -3
  11. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +4 -0
  12. package/dist/_dts/api/src/communications.d.ts +19 -5
  13. package/dist/_dts/api/src/endpoints.d.ts +7 -0
  14. package/dist/_dts/api/src/index.d.ts +1 -1
  15. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  16. package/dist/_dts/api/src/navigation/types.d.ts +7 -0
  17. package/dist/_dts/api/src/navigation.d.ts +1 -1
  18. package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +10 -1
  19. package/dist/_dts/api/src/sdkThemeWire.d.ts +186 -1434
  20. package/dist/_dts/api/src/shared-contracts.d.ts +10 -0
  21. package/dist/_dts/api/src/siteAssets.d.ts +1 -0
  22. package/dist/_dts/api/src/siteInfrastructure.d.ts +2 -1
  23. package/dist/_dts/api/src/teamMembers.d.ts +2 -27
  24. package/dist/_dts/block-form/src/widgets/RepeaterField/components/layoutGridDomain.d.ts +3 -13
  25. package/dist/_dts/blocks/src/contracts/index.d.ts +1 -0
  26. package/dist/_dts/blocks/src/definitions.d.ts +1 -1
  27. package/dist/_dts/blocks/src/index.d.ts +2 -0
  28. package/dist/_dts/blocks/src/lib/media.d.ts +1 -0
  29. package/dist/_dts/blocks/src/lib/picsum.d.ts +2 -2
  30. package/dist/_dts/blocks/src/pageRenderPreparation.d.ts +1 -0
  31. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -1
  32. package/dist/_dts/blocks/src/primitives/content/utils/sanitizeHref.d.ts +1 -1
  33. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +4 -4
  34. package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +1 -1
  35. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +212 -804
  36. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +7 -2
  37. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +1 -1
  38. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +45 -45
  39. package/dist/_dts/blocks/src/system/blocks/offerings-preview/model.d.ts +2 -0
  40. package/dist/_dts/blocks/src/system/blocks/shared/teamMembers.d.ts +4 -7
  41. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +2 -2
  42. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +6 -6
  43. package/dist/_dts/blocks/src/system/fields/backgroundContent.d.ts +377 -1
  44. package/dist/_dts/blocks/src/system/helpers/backgroundMedia.d.ts +6 -2
  45. package/dist/_dts/blocks/src/system/helpers/normalizeMailingListBlockContent.d.ts +2 -0
  46. package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +3 -3
  47. package/dist/_dts/blocks/src/system/layout/repeaterGrid.d.ts +12 -5
  48. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +3 -3
  49. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +24 -24
  50. package/dist/_dts/blocks/src/system/manifest/validation.d.ts +2 -0
  51. package/dist/_dts/blocks/src/system/node/fragments/lookSlot.d.ts +1 -1
  52. package/dist/_dts/blocks/src/system/registry.d.ts +14 -2
  53. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +0 -5
  54. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +2 -0
  55. package/dist/_dts/blocks/src/system/runtime/api/schemas/events.d.ts +971 -0
  56. package/dist/_dts/blocks/src/system/runtime/api/schemas/waitlist-claims.d.ts +42 -0
  57. package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +10 -2
  58. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +10 -136
  59. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +48 -6
  60. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +24 -3
  61. package/dist/_dts/blocks/src/system/runtime/hooks/useBookingFlowController.d.ts +1 -1
  62. package/dist/_dts/blocks/src/system/runtime/hooks/useBookingSubmission.state.d.ts +2 -0
  63. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +5 -1
  64. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +1 -1
  65. package/dist/_dts/blocks/src/system/runtime/lookSurfaces.d.ts +2 -2
  66. package/dist/_dts/blocks/src/system/runtime/nodes/ImageResolveContext.d.ts +1 -1
  67. package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +50 -202
  68. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +51 -1
  69. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +6 -2
  70. package/dist/_dts/blocks/src/system/runtime/nodes/carousel.client.hooks.d.ts +6 -0
  71. package/dist/_dts/blocks/src/system/runtime/nodes/carousel.client.state.d.ts +7 -0
  72. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/lookPresentation.d.ts +2 -2
  73. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/presentation.d.ts +1 -1
  74. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/BookingEntryViews.d.ts +42 -0
  75. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventEmbeddedCheckoutStep.d.ts +4 -1
  76. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationBookingLayer.d.ts +19 -9
  77. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationPayment.d.ts +4 -2
  78. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +24 -9
  79. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizardContent.d.ts +4 -2
  80. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventSelectionStep.d.ts +5 -4
  81. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/GuestDetailsSection.d.ts +1 -1
  82. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PaymentStatusStep.d.ts +2 -0
  83. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SingleTicketEntitlementNote.d.ts +11 -0
  84. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SuccessStep.d.ts +4 -0
  85. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/TicketSelectionStep.d.ts +5 -0
  86. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/VerifyingTimeoutStep.d.ts +2 -0
  87. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/bookingCardDisplay.d.ts +31 -0
  88. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/bookingEntry.d.ts +154 -0
  89. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/bookingFocus.d.ts +12 -0
  90. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +2 -2
  91. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.planning.d.ts +2 -2
  92. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +9 -0
  93. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/finishedBooking.d.ts +77 -0
  94. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/index.d.ts +0 -1
  95. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/offeringNoun.d.ts +12 -0
  96. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/paymentResponse.d.ts +2 -1
  97. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationCompletion.d.ts +33 -1
  98. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationDerivations.d.ts +11 -0
  99. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationDisplay.d.ts +31 -0
  100. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationDraft.state.d.ts +60 -0
  101. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationErrorRecovery.d.ts +1 -1
  102. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationEventAdapter.d.ts +3 -0
  103. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationStateMachine.d.ts +58 -10
  104. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationSurface.d.ts +17 -0
  105. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +23 -7
  106. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useBookingBarFacts.d.ts +12 -0
  107. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationRecoveryRequest.d.ts +3 -0
  108. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +4 -0
  109. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +4 -11
  110. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +1563 -31
  111. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventSourceRecovery.d.ts +2 -12
  112. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/usePaymentStatusRecovery.d.ts +147 -4
  113. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/utils.d.ts +50 -2
  114. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/waitlistClaimRestoration.d.ts +6 -5
  115. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/wizardSteps.d.ts +85 -15
  116. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +53 -8
  117. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CardListItem.d.ts +1 -1
  118. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/MonthLookView.d.ts +10 -3
  119. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +290 -882
  120. package/dist/_dts/blocks/src/system/runtime/nodes/file-download.d.ts +3 -2
  121. package/dist/_dts/blocks/src/system/runtime/nodes/media.d.ts +22 -90
  122. package/dist/_dts/blocks/src/system/runtime/nodes/mediaContext.d.ts +69 -0
  123. package/dist/_dts/blocks/src/system/runtime/shared/bookingPaymentOptionCopy.d.ts +5 -1
  124. package/dist/_dts/blocks/src/system/runtime/shared/bookingPaymentOptions.d.ts +37 -1
  125. package/dist/_dts/blocks/src/system/runtime/shared/components/ModalShell.d.ts +9 -2
  126. package/dist/_dts/blocks/src/system/runtime/shared/components/PaymentChoiceRows.d.ts +28 -0
  127. package/dist/_dts/blocks/src/system/runtime/shared/components/StepIndicator.d.ts +6 -8
  128. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -2
  129. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  130. package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.d.ts +9 -12
  131. package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.state.d.ts +15 -0
  132. package/dist/_dts/blocks/src/system/runtime/shared/utils/themePortalRoot.d.ts +10 -15
  133. package/dist/_dts/blocks/src/system/transforms/registry/index.d.ts +2 -0
  134. package/dist/_dts/blocks/src/system/transforms/registry/links.d.ts +2 -0
  135. package/dist/_dts/commerce/src/purchase/bookingInstalmentSchedule.d.ts +2 -0
  136. package/dist/_dts/commerce/src/purchase/bookingPaymentSelection.d.ts +6 -0
  137. package/dist/_dts/commerce/src/purchase/confirmationEmailPayment.d.ts +14 -14
  138. package/dist/_dts/commerce/src/purchase/confirmationPayment.d.ts +65 -0
  139. package/dist/_dts/commerce/src/purchase/confirmationPaymentSchema.d.ts +66 -0
  140. package/dist/_dts/commerce/src/purchase/index.d.ts +2 -0
  141. package/dist/_dts/commerce/src/purchase/orderPaymentState.d.ts +8 -0
  142. package/dist/_dts/content-model/src/content-types/schema.d.ts +3 -3
  143. package/dist/_dts/content-model/src/templates/defaults.d.ts +2 -2
  144. package/dist/_dts/core/src/appointment-booking-terms.d.ts +20 -0
  145. package/dist/_dts/core/src/booking-payment-schemas.d.ts +70 -0
  146. package/dist/_dts/core/src/branded.d.ts +0 -2
  147. package/dist/_dts/core/src/demo-claim-access.d.ts +1 -1
  148. package/dist/_dts/core/src/demo-claim-readiness.d.ts +18 -0
  149. package/dist/_dts/core/src/demo-lifecycle-status.d.ts +1 -1
  150. package/dist/_dts/core/src/demo-warm-pool-target.d.ts +1 -1
  151. package/dist/_dts/core/src/index.d.ts +4 -0
  152. package/dist/_dts/core/src/mailing-list-runtime.d.ts +2 -2
  153. package/dist/_dts/core/src/mailing-list-setup-parser.d.ts +9 -1
  154. package/dist/_dts/core/src/mailing-list-setup.d.ts +9 -1
  155. package/dist/_dts/core/src/mailing-list-submission.d.ts +1 -1
  156. package/dist/_dts/core/src/mailing-list-targeting-availability.d.ts +68 -0
  157. package/dist/_dts/core/src/mailing-list-targeting.d.ts +11 -1
  158. package/dist/_dts/core/src/ticket-quantity.d.ts +13 -0
  159. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +106 -36
  160. package/dist/_dts/editor/src/chrome/chromeLayers.d.ts +7 -0
  161. package/dist/_dts/editor/src/index.d.ts +1 -0
  162. package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
  163. package/dist/_dts/editor-blocks/src/media/MediaField.d.ts +2 -2
  164. package/dist/_dts/editor-blocks/src/media/admitEditorMediaField.d.ts +4 -0
  165. package/dist/_dts/editor-blocks/src/widgets/link/LinkAddressInput.d.ts +8 -0
  166. package/dist/_dts/editor-blocks/src/widgets/link/LinkContentList.d.ts +12 -0
  167. package/dist/_dts/editor-blocks/src/widgets/link/LinkPicker.d.ts +5 -1
  168. package/dist/_dts/editor-blocks/src/widgets/link/LinkPickerDialog.d.ts +3 -3
  169. package/dist/_dts/editor-blocks/src/widgets/link/LinkSummary.d.ts +8 -2
  170. package/dist/_dts/editor-blocks/src/widgets/link/LinkWidget.d.ts +4 -3
  171. package/dist/_dts/editor-blocks/src/widgets/link/LinkWidgetContext.d.ts +2 -1
  172. package/dist/_dts/editor-blocks/src/widgets/link/draft.d.ts +44 -0
  173. package/dist/_dts/editor-blocks/src/widgets/link/presentation.d.ts +13 -0
  174. package/dist/_dts/editor-blocks/src/widgets/link/types.d.ts +14 -0
  175. package/dist/_dts/editor-blocks/src/widgets/link/useRoutableContent.d.ts +2 -0
  176. package/dist/_dts/editor-blocks/src/widgets/link/utils.d.ts +5 -4
  177. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListTargetingField.d.ts +1 -1
  178. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/targetingState.d.ts +13 -8
  179. package/dist/_dts/media-core/src/assetsInUseSummary.d.ts +6 -0
  180. package/dist/_dts/media-core/src/contentMediaAudit.d.ts +3 -2
  181. package/dist/_dts/media-core/src/fileStorage.d.ts +4 -3
  182. package/dist/_dts/media-core/src/index.d.ts +5 -0
  183. package/dist/_dts/media-core/src/media.d.ts +406 -0
  184. package/dist/_dts/media-core/src/mediaIdentifierSchema.d.ts +3 -0
  185. package/dist/_dts/media-core/src/mediaKinds.d.ts +2 -0
  186. package/dist/_dts/media-core/src/mediaUsageProjection.d.ts +13 -1
  187. package/dist/_dts/media-core/src/mediaWriteNormalizer.d.ts +2 -6
  188. package/dist/_dts/media-core/src/portableMediaReferences.d.ts +8 -21
  189. package/dist/_dts/media-core/src/renderableMediaAsset.d.ts +28 -14
  190. package/dist/_dts/media-core/src/renderableMediaAssetAdmission.d.ts +15 -0
  191. package/dist/_dts/media-core/src/storageObjectKey.d.ts +12 -0
  192. package/dist/_dts/media-editor/src/CropDialog.d.ts +6 -3
  193. package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -1
  194. package/dist/_dts/media-editor/src/MediaPreview.d.ts +3 -3
  195. package/dist/_dts/media-editor/src/cropEditorSource.d.ts +5 -7
  196. package/dist/_dts/media-editor/src/editorMediaState.d.ts +29 -0
  197. package/dist/_dts/media-editor/src/mediaSelection.d.ts +1 -2
  198. package/dist/_dts/media-editor/src/runtimeMediaAssetState.d.ts +4 -5
  199. package/dist/_dts/media-editor/src/types.d.ts +1 -1
  200. package/dist/_dts/media-editor/src/utils.d.ts +0 -1
  201. package/dist/_dts/media-react/src/components/cropChangePolicy.d.ts +4 -1
  202. package/dist/_dts/media-react/src/components/cropGeometry.d.ts +1 -0
  203. package/dist/_dts/media-react/src/components/useImageCropperController.d.ts +1 -0
  204. package/dist/_dts/media-react/src/hooks/useSupabaseMediaUploader.d.ts +1 -1
  205. package/dist/_dts/media-react/src/internal/supabaseResumableUpload.d.ts +13 -0
  206. package/dist/_dts/preview-next/src/client/blocks/BlockBackgroundChooser.d.ts +2 -1
  207. package/dist/_dts/preview-next/src/client/blocks/previewCustomizeSelectedMedia.d.ts +11 -12
  208. package/dist/_dts/preview-next/src/client/preview/previewModeRootAttribute.d.ts +11 -0
  209. package/dist/_dts/sdk/src/contracts/content.d.ts +2 -45
  210. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  211. package/dist/_dts/sdk/src/contracts/rendering.d.ts +3 -3
  212. package/dist/_dts/sdk/src/index.d.ts +1 -0
  213. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +0 -1
  214. package/dist/_dts/sdk/src/rendering/image.d.ts +14 -4
  215. package/dist/_dts/sdk/src/rendering/index.d.ts +5 -2
  216. package/dist/_dts/sdk/src/rendering/link.d.ts +5 -0
  217. package/dist/_dts/sdk/src/rendering/mediaAssets.d.ts +2 -4
  218. package/dist/_dts/sdk/src/rendering/overrides.d.ts +1 -0
  219. package/dist/_dts/sdk/src/version.d.ts +1 -1
  220. package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -1
  221. package/dist/_dts/theme-core/src/blocks/opaquePanels.d.ts +3 -3
  222. package/dist/_dts/theme-core/src/boxBackgroundSchema.d.ts +397 -26
  223. package/dist/_dts/theme-core/src/buttons/types.d.ts +21 -21
  224. package/dist/_dts/theme-core/src/cards/types.d.ts +34 -34
  225. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  226. package/dist/_dts/theme-core/src/inputs/types.d.ts +3 -3
  227. package/dist/_dts/theme-core/src/lib/media.d.ts +2 -616
  228. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +261 -2619
  229. package/dist/_dts/theme-core/src/palette/curated/types.d.ts +1 -1
  230. package/dist/_dts/theme-core/src/schema.d.ts +548 -3187
  231. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  232. package/dist/_dts/theme-core/src/site-styles/runtimeBackgroundResolution.d.ts +9 -9
  233. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +1 -1
  234. package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +1 -1
  235. package/dist/_dts/theme-core/src/styles/skinTokens.d.ts +2 -2
  236. package/dist/_dts/theme-core/src/typography/schema.d.ts +2 -2
  237. package/dist/client/BookingMailingListNote-DrchYW1m.mjs +386 -0
  238. package/dist/client/{CardListItem-ZDLYh6dL.mjs → CardListItem-CC_GVmF6.mjs} +5 -5
  239. package/dist/client/CheckIcon-CpyXr-Kg.mjs +35 -0
  240. package/dist/client/{CheckboxChoice-M-3HycLw.mjs → CheckboxChoice-Dq30m3DO.mjs} +1 -1
  241. package/dist/client/{DemoBookingPortalAccess-BMtvPTWE.mjs → DemoBookingPortalAccess-ojwbVUmx.mjs} +85 -85
  242. package/dist/client/{EventCombined.client-DUm_DOxW.mjs → EventCombined.client-DyN0v0Xk.mjs} +7 -9
  243. package/dist/client/{EventEmbeddedCheckoutStep-DsNNzgRm.mjs → EventEmbeddedCheckoutStep-CgfpKc3n.mjs} +11 -10
  244. package/dist/client/{EventListing.client-DjNYGUVm.mjs → EventListing.client-CuOuvYMz.mjs} +2 -2
  245. package/dist/client/{LeafletStaticMap-DuFiOHq_.mjs → LeafletStaticMap-B0WhRr3j.mjs} +1 -1
  246. package/dist/client/{ModalShell-CqkBvBIC.mjs → ModalShell-BXzucfR6.mjs} +83 -12
  247. package/dist/client/{RichText-LjPCUGGi.mjs → RichText-C1fIXBzA.mjs} +50 -34
  248. package/dist/client/{ThemedButton-DZKjtaDD.mjs → ThemedButton-B7HFqFBg.mjs} +1 -2
  249. package/dist/client/{accordion-Qe--SILD.mjs → accordion-DCDVWSye.mjs} +1 -1
  250. package/dist/client/{bookingForm-3BCl4g_f.mjs → bookingForm-BJ3C4GlM.mjs} +321 -154
  251. package/dist/client/bookings.mjs +118607 -22429
  252. package/dist/client/{carousel-h2YjKOS2.mjs → carousel-BSCBhfHY.mjs} +2 -2
  253. package/dist/client/{carousel.client-BLrd4hmY.mjs → carousel.client-GEtOGsxo.mjs} +46 -41
  254. package/dist/client/{cart-5NeiigVd.mjs → cart-Yv-aAtck.mjs} +3 -3
  255. package/dist/client/{checkout-G4UWjOEw.mjs → checkout-B9xDkl30.mjs} +3 -3
  256. package/dist/client/client.mjs +37511 -33793
  257. package/dist/client/{context-GK4-AVAh.mjs → context-BOGe3rIA.mjs} +275 -10
  258. package/dist/client/{eventCalendar-Prw3Yo_L.mjs → eventCalendar-D6M0T9hs.mjs} +18 -17
  259. package/dist/client/{eventCombined-BUugi6__.mjs → eventCombined-NM4UFBq8.mjs} +4 -4
  260. package/dist/client/{eventDetails-CBHUda-R.mjs → eventDetails-f_FhV4O8.mjs} +3 -4
  261. package/dist/client/{eventListing-CQeG45Dg.mjs → eventListing-WLkfAROh.mjs} +4 -4
  262. package/dist/client/{eventRegistration-Dif3p3oJ.mjs → eventRegistration-D3ejfLvW.mjs} +2209 -2144
  263. package/dist/client/{form-Cf0WMtfG.mjs → form-D5Or2Jyu.mjs} +5 -6
  264. package/dist/client/{headerSection-Bqdr3JWp.mjs → headerSection-hWgnv27V.mjs} +9 -9
  265. package/dist/client/hooks.mjs +17278 -16106
  266. package/dist/client/{locationMap-BVvPou4O.mjs → locationMap-Di1K0O2S.mjs} +3 -4
  267. package/dist/client/{media-47fcnhzD.mjs → media-D29-F1u_.mjs} +183 -362
  268. package/dist/client/mediaContext-CwbbimYB.mjs +135 -0
  269. package/dist/client/{newsletterForm-Cx-1dnic.mjs → newsletterForm-CwxcwTNO.mjs} +5 -5
  270. package/dist/client/{productDetail-DaUMaJYk.mjs → productDetail-BLSnhPdA.mjs} +3 -3
  271. package/dist/client/{productList-BKQlWEKE.mjs → productList-oGytONOX.mjs} +3 -3
  272. package/dist/client/{propsDecoder-DO5iXphQ.mjs → propsDecoder-lf_dTeZS.mjs} +18659 -14473
  273. package/dist/client/renderableMediaAssetAdmission-CHkXYDC_.mjs +143 -0
  274. package/dist/client/rendering/client.mjs +58971 -55722
  275. package/dist/client/rendering/islands.mjs +20 -23
  276. package/dist/client/rendering.mjs +41610 -37917
  277. package/dist/client/{routeIslandApiConfig-BNm0Z3-g.mjs → routeIslandApiConfig-Bc_WVPS8.mjs} +1 -1
  278. package/dist/client/{shop-D7ytcFBC.mjs → shop-BQ3bR7fA.mjs} +16 -14
  279. package/dist/client/{shop-commerce-D68-hHy2.mjs → shop-commerce-DDPll6ZC.mjs} +9 -9
  280. package/dist/client/{shop-commerce-store-Cu7X2lyu.mjs → shop-commerce-store-DO-e1pTe.mjs} +1 -1
  281. package/dist/client/{shopShared-D12rxE69.mjs → shopShared-BylM9jh1.mjs} +5 -5
  282. package/dist/client/themePortalRoot-DS92SRVZ.mjs +47 -0
  283. package/dist/client/{TerminalPanel-DOTSUCO0.mjs → useDiscountCodeUi-B1Puub2v.mjs} +60 -77
  284. package/dist/client/{useEventPagination-jgKa67KV.mjs → useEventPagination-BBhkmQaT.mjs} +6 -8
  285. package/dist/preview-next/before-render.mjs +96 -4
  286. package/dist/preview-next/client/runtime.mjs +3 -3
  287. package/dist/preview-next/keepAlive.mjs +7 -0
  288. package/dist/preview-next/middleware.mjs +7 -0
  289. package/dist/{sdk-runtime-4cCWO_3i.mjs → sdk-runtime-DWCvhJGu.mjs} +1 -1
  290. package/dist/server/components.mjs +21820 -19902
  291. package/dist/server/config-validation.mjs +1786 -642
  292. package/dist/server/config.mjs +1786 -642
  293. package/dist/server/data.mjs +17220 -16076
  294. package/dist/server/index.mjs +234 -2
  295. package/dist/server/next.mjs +22505 -20528
  296. package/dist/server/page-converter.mjs +7587 -6572
  297. package/dist/server/prebuild.mjs +1 -1
  298. package/dist/server/rendering/server.mjs +20487 -19044
  299. package/dist/server/rendering.mjs +21844 -19901
  300. package/dist/server/routing.mjs +19186 -17961
  301. package/dist/server/server.mjs +1874 -695
  302. package/dist/server/theme-bridge.mjs +1371 -914
  303. package/dist/server/theme.mjs +154 -37
  304. package/dist/{spinner-tSdG9YvG.mjs → spinner-BYM-Y81w.mjs} +1 -1
  305. package/dist/styles/index.css +1088 -721
  306. package/package.json +1 -1
  307. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/OrderSummary.d.ts +0 -15
  308. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useWaitlistClaimRestoration.d.ts +0 -22
  309. package/dist/_dts/blocks/src/system/runtime/shared/components/SelectableOptionCard.d.ts +0 -30
  310. package/dist/client/BookingMailingListNote-DlDSs5Vm.mjs +0 -567
  311. package/dist/client/colorStyles-DTunOThj.mjs +0 -1316
  312. package/dist/client/pricing-CMD0kADd.mjs +0 -314
  313. package/dist/client/result-DRW7JWXz.mjs +0 -30
  314. package/dist/client/scrollToBlock-C86BYkyV.mjs +0 -17
  315. package/dist/client/themePortalRoot-AGs4cE7t.mjs +0 -30
  316. package/dist/spinner-BL3kW9Uh.mjs +0 -803
@@ -1,25 +1,40 @@
1
+ import type { RegistrationDisplay } from './registrationDisplay';
2
+ import type { ResolvedRegistrationPresentation } from './finishedBooking';
1
3
  import type { UseEventRegistrationWizardResult } from './useEventRegistrationWizard';
2
4
  import type { ThemeButtonVariantId } from '../../../../../../theme-core/src/buttons/index';
5
+ import { type RegistrationProgress, type RegistrationStepLabelContext } from './wizardSteps';
3
6
  export type EventPortalAuthCopy = Readonly<{
4
7
  title: string;
5
- description: string;
8
+ description?: string;
6
9
  buttonText: string;
10
+ /** Words after the link, so it reads as one sentence. */
11
+ afterButton?: string;
12
+ /** Before the step's content when it blocks the booking; after it when it's an option. */
13
+ placement: 'before' | 'after';
7
14
  }>;
8
- export declare function EventRegistrationSurface(props: Readonly<{
9
- variant: 'inline' | 'overlay';
15
+ type EventRegistrationSurfaceProps = Readonly<{
16
+ variant: 'inPlace' | 'overlay';
10
17
  wizard: UseEventRegistrationWizardResult;
11
- isWizardStep: boolean;
12
- currentStepNumber: number;
13
- totalSteps: number;
14
- stepLabels: string[];
18
+ /** The wizard's presentation with any finished booking resolved. */
19
+ presentation: ResolvedRegistrationPresentation;
20
+ stepLabelContext: RegistrationStepLabelContext;
15
21
  showPortalAuthPrompt: boolean;
16
22
  portalAuthCopy: EventPortalAuthCopy;
17
- showVenue: boolean;
18
- showCapacity: boolean;
23
+ display: RegistrationDisplay;
19
24
  showSpamProtection: boolean;
20
25
  buttonText: string;
21
26
  buttonVariant: ThemeButtonVariantId;
22
27
  supportEmail?: string;
23
28
  successMessage?: string;
24
29
  demoEmailSuppressed?: boolean;
30
+ /** The panel's Done: closes it. Absent where the surface has nothing to close. */
31
+ onDone?: () => void;
32
+ }>;
33
+ /** The compact progress: in the step column in place, in the panel's pinned header on overlays. */
34
+ export declare function EventRegistrationProgress(props: Readonly<{
35
+ progress: RegistrationProgress;
36
+ stepLabelContext: RegistrationStepLabelContext;
25
37
  }>): import("react").JSX.Element;
38
+ /** Renders either the step layout or one whole-panel screen, never both. */
39
+ export declare function EventRegistrationSurface(props: EventRegistrationSurfaceProps): import("react").JSX.Element;
40
+ export {};
@@ -1,8 +1,10 @@
1
+ import type { RegistrationDisplay } from './registrationDisplay';
1
2
  import React from 'react';
3
+ import type { ThemeButtonVariantId } from '../../../../../../theme-core/src/buttons/index';
2
4
  import type { UseEventRegistrationWizardResult } from './useEventRegistrationWizard';
3
5
  export declare function EventRegistrationWizardContent(props: {
4
6
  wizard: UseEventRegistrationWizardResult;
5
- showVenue: boolean;
6
- showCapacity: boolean;
7
+ display: RegistrationDisplay;
7
8
  showSpamProtection?: boolean;
9
+ buttonVariant: ThemeButtonVariantId;
8
10
  }): React.JSX.Element | null;
@@ -1,14 +1,15 @@
1
+ import type { RegistrationDisplay } from './registrationDisplay';
1
2
  import React from 'react';
2
3
  import type { RegistrationEvent } from './types';
3
4
  type EventSelectionStepProps = {
4
5
  events: RegistrationEvent[];
5
6
  selectedEvent: RegistrationEvent | null;
7
+ /** Chooses an event and moves on (unrelated events). */
6
8
  onSelect: (event: RegistrationEvent) => void;
7
- showVenue?: boolean;
8
- showCapacity?: boolean;
9
+ /** Marks a date as chosen without moving on; Continue moves on (dates). */
10
+ onChoose: (event: RegistrationEvent) => void;
11
+ display: RegistrationDisplay;
9
12
  };
10
- type EventSelectionMode = 'event' | 'date';
11
- export declare function getEventSelectionMode(events: readonly RegistrationEvent[]): EventSelectionMode;
12
13
  /**
13
14
  * Event Selection Step
14
15
  *
@@ -15,7 +15,7 @@ type GuestDetailsSectionProps = {
15
15
  * Guest Details Section
16
16
  *
17
17
  * Card-based layout for collecting additional attendee details.
18
- * Uses the same visual patterns as the main form (er-input, er-field, er-label, er-error).
18
+ * Uses the same fields as the main form: the theme's form-label and form-input.
19
19
  */
20
20
  export declare const GuestDetailsSection: React.FC<GuestDetailsSectionProps>;
21
21
  export {};
@@ -1,3 +1,4 @@
1
+ import type { ThemeButtonVariantId } from '../../../../../../theme-core/src/buttons/index';
1
2
  import type { PaymentStatusRecoveryState } from './types';
2
3
  type PaymentStatusStepProps = Readonly<{
3
4
  state: PaymentStatusRecoveryState;
@@ -5,6 +6,7 @@ type PaymentStatusStepProps = Readonly<{
5
6
  onContinuePayment: () => void;
6
7
  onReturnToPayment: () => void;
7
8
  onReturnToBooking: () => void;
9
+ buttonVariant: ThemeButtonVariantId;
8
10
  }>;
9
11
  export declare function PaymentStatusStep(props: PaymentStatusStepProps): import("react").JSX.Element;
10
12
  export {};
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import type { EligibilityData } from './types';
3
+ /**
4
+ * Passes and memberships cover one person, so with more than one place they
5
+ * are greyed out; this says why, in the open rather than in a hover tooltip.
6
+ */
7
+ export declare function SingleTicketEntitlementNote(props: Readonly<{
8
+ ticketsCount: number;
9
+ eligibility: EligibilityData | null;
10
+ onBookOnePlace: () => void;
11
+ }>): React.JSX.Element | null;
@@ -1,6 +1,7 @@
1
1
  import type { BookingMailingListNote as BookingSignupNote } from '../../../../../../core/src/index';
2
2
  import React from 'react';
3
3
  import type { BookingSuccessCopy } from '../booking-form.state';
4
+ import { type ConfirmationPaymentPresentation, type ConfirmationSummaryRow } from './finishedBooking';
4
5
  type SuccessStepProps = {
5
6
  title?: string;
6
7
  copy: BookingSuccessCopy;
@@ -9,6 +10,9 @@ type SuccessStepProps = {
9
10
  context?: 'booking' | 'waitlist';
10
11
  demoEmailSuppressed?: boolean;
11
12
  customerEmail: string | null;
13
+ /** When, where, places and payment: only facts from the booking outcome. */
14
+ summary?: readonly ConfirmationSummaryRow[];
15
+ payment: ConfirmationPaymentPresentation;
12
16
  };
13
17
  /**
14
18
  * Success Step
@@ -1,3 +1,4 @@
1
+ import { type RegistrationDisplay } from './registrationDisplay';
1
2
  import React from 'react';
2
3
  import type { EventTicketSelectionLine, OccurrenceContext, RegistrationAttendanceMode, RegistrationEvent } from './types';
3
4
  import { getVisibleTicketTypes } from './utils';
@@ -6,12 +7,16 @@ export type TicketSelectionBookingUnit = Readonly<{
6
7
  includedSessionCount?: number;
7
8
  }>;
8
9
  type TicketSelectionStepProps = {
10
+ display: RegistrationDisplay;
9
11
  event: RegistrationEvent | null;
10
12
  occurrenceContext?: OccurrenceContext | null;
11
13
  selectedAttendanceMode?: RegistrationAttendanceMode | null;
12
14
  onAttendanceModeChange?: (attendanceMode: RegistrationAttendanceMode) => void;
13
15
  ticketsCount: number;
14
16
  maxTickets: number;
17
+ /** The most places a single-price booking can ask for: `maxTickets`
18
+ * narrowed by settled availability (`placeCountCeiling`). Defaults to it. */
19
+ placesCeiling?: number;
15
20
  visibleTicketTypes?: ReturnType<typeof getVisibleTicketTypes>;
16
21
  ticketSelections?: readonly EventTicketSelectionLine[];
17
22
  onTicketSelectionsChange?: (lines: readonly EventTicketSelectionLine[]) => void;
@@ -1,9 +1,11 @@
1
1
  import React from 'react';
2
+ import type { ThemeButtonVariantId } from '../../../../../../theme-core/src/buttons/index';
2
3
  type VerifyingTimeoutStepProps = {
3
4
  onCheckAgain?: () => void;
4
5
  supportEmail?: string;
5
6
  title?: string;
6
7
  message?: string;
8
+ buttonVariant?: ThemeButtonVariantId;
7
9
  };
8
10
  /**
9
11
  * Verifying Timeout Step
@@ -0,0 +1,31 @@
1
+ import type { RegistrationDisplay } from './registrationDisplay';
2
+ /**
3
+ * The booking card the server renders on CMS pages (issue 1581), and the
4
+ * offering noun it resolves for the wizard. Kept beside the island contract
5
+ * so the server and the client agree on one card.
6
+ */
7
+ import { z } from 'zod';
8
+ import type { PublicEvent } from '../../../blocks/events/shared/types';
9
+ import type { EventRegistrationDisplay, EventRegistrationSourceProps } from '../event-registration.interactive';
10
+ import { type IdleBookingEntry } from './bookingEntry';
11
+ import { type OfferingNoun } from './offeringNoun';
12
+ /**
13
+ * Where the booking panel lives. Pages built around booking (the system
14
+ * event page's sticky column, the hosted booking page) show it in place;
15
+ * a block an editor placed on a page shows the card, the bar and the
16
+ * overlay panel.
17
+ */
18
+ export type BookingHost = 'overlay' | 'inPlace';
19
+ export declare const bookingHostSchema: z.ZodEnum<{
20
+ overlay: "overlay";
21
+ inPlace: "inPlace";
22
+ }>;
23
+ export type { IdleBookingEntry };
24
+ export declare const idleBookingEntrySchema: z.ZodType<IdleBookingEntry>;
25
+ export declare function toScopedEventRegistrationEvents(scopedSourceEvents: readonly PublicEvent[]): import("./types").RegistrationEvent[];
26
+ /** What the site calls the offering this block books, from its preset rows. */
27
+ export declare function resolveOfferingNoun(source: EventRegistrationSourceProps, scopedSourceEvents: readonly PublicEvent[]): OfferingNoun;
28
+ /** The server's card on CMS pages, or null where the shell still applies. */
29
+ export declare function bookingCardDisplay(source: EventRegistrationSourceProps, scopedSourceEvents: readonly PublicEvent[], display: RegistrationDisplay): Extract<EventRegistrationDisplay, {
30
+ state: 'booking-card';
31
+ }> | null;
@@ -0,0 +1,154 @@
1
+ /**
2
+ * What the in-page booking card and the fixed booking bar say (issue 1581).
3
+ *
4
+ * One pure decision for both, so they never disagree. It is computed on the
5
+ * server from the public events (idle states only) and on the client from the
6
+ * wizard, and it never reads scroll or viewport facts: those decide only
7
+ * whether the bar is visible ({@link bookingBarVisible}).
8
+ */
9
+ import type { PublicEventAttendanceMode } from '../../../blocks/events/shared/types';
10
+ import { type RegistrationDisplay } from './registrationDisplay';
11
+ import type { OfferingNoun } from './offeringNoun';
12
+ import type { FinishedBooking, FinishedBookingEntry, ResolvedRegistrationPresentation } from './finishedBooking';
13
+ import type { RegistrationEvent, RegistrationStep } from './types';
14
+ import { type RegistrationRouteStep } from './wizardSteps';
15
+ /** How many dates the card and bar show before "+ N more". */
16
+ export declare const BOOKING_ENTRY_DATE_LIMIT = 4;
17
+ export type BookingEntryDateTile = Readonly<{
18
+ month: string;
19
+ day: string;
20
+ }>;
21
+ export type BookingEntryDate = Readonly<{
22
+ selectionId: string;
23
+ label: string;
24
+ /** "3 left" or "Full"; null when capacity is hidden or plentiful. */
25
+ places: string | null;
26
+ full: boolean;
27
+ }>;
28
+ export type BookingEntryProgress = Readonly<{
29
+ label: string;
30
+ current: number;
31
+ total: number;
32
+ }>;
33
+ export type BookingEntry = Readonly<{
34
+ kind: 'single';
35
+ title: string;
36
+ /** Long form for the card and panel header: "Mon 5 Oct · 7:00pm – 8:15pm". */
37
+ when: string | null;
38
+ /** Short form for the bar: "Mon 5 Oct, 7:00pm". */
39
+ shortWhen: string | null;
40
+ venue: string | null;
41
+ price: string | null;
42
+ places: string | null;
43
+ tile: BookingEntryDateTile | null;
44
+ action: string;
45
+ }> | Readonly<{
46
+ kind: 'chooseDate';
47
+ title: string;
48
+ schedule: string;
49
+ venue: string | null;
50
+ price: string | null;
51
+ nextDate: string | null;
52
+ dateCount: number;
53
+ dates: readonly BookingEntryDate[];
54
+ moreCount: number;
55
+ action: string;
56
+ }> | Readonly<{
57
+ kind: 'chooseEvent';
58
+ title: string;
59
+ count: number;
60
+ noun: string;
61
+ action: string;
62
+ }> | Readonly<{
63
+ kind: 'inProgress';
64
+ title: string;
65
+ progress: BookingEntryProgress | null;
66
+ action: string;
67
+ }> | FinishedBookingEntry & Readonly<{
68
+ action: string;
69
+ }>;
70
+ /** The card's idle content: what can be said before a booking starts. */
71
+ export type IdleBookingEntry = Extract<BookingEntry, {
72
+ kind: 'single' | 'chooseDate' | 'chooseEvent';
73
+ }>;
74
+ export type BookingEntryInput = Readonly<{
75
+ /** The events this block books, already scoped and adapted. */
76
+ events: readonly RegistrationEvent[];
77
+ /** The event the page or the visitor has chosen, if any. */
78
+ event: RegistrationEvent | null;
79
+ display: RegistrationDisplay;
80
+ /** The block's button text; falls back to "Book your place". */
81
+ buttonText: string | null | undefined;
82
+ noun: OfferingNoun;
83
+ attendanceMode: PublicEventAttendanceMode | null;
84
+ /** True once the visitor has moved past the first step, until it finishes. */
85
+ underway: boolean;
86
+ /** Where they are, when the panel is on a numbered step. */
87
+ progress: BookingEntryProgress | null;
88
+ /** Present once the booking finished, resolved once by resolveFinishedPresentation. */
89
+ finished: FinishedBooking | null;
90
+ }>;
91
+ export declare const DEFAULT_BOOKING_BUTTON_TEXT = "Book your place";
92
+ /** Browse the page's dates on close while keeping the draft's resume action. */
93
+ export declare function bookingCardEntry(input: BookingEntryInput & Readonly<{
94
+ pageEvent: RegistrationEvent | null;
95
+ panelOpen: boolean;
96
+ step: RegistrationStep;
97
+ }>): BookingEntry;
98
+ /** "Mon 5 Oct": the compact date the chips and the bar share. */
99
+ export declare function formatBookingShortDate(event: RegistrationEvent): string;
100
+ export type IdleBookingEntryInput = Pick<BookingEntryInput, 'events' | 'event' | 'display' | 'buttonText' | 'noun' | 'attendanceMode'>;
101
+ /** The card before a booking starts; the server renders this too. */
102
+ export declare function idleBookingEntry(input: IdleBookingEntryInput): IdleBookingEntry;
103
+ /** The card and bar's content for the visitor's current position. */
104
+ export declare function bookingEntry(input: BookingEntryInput): BookingEntry;
105
+ /**
106
+ * Where the booking has got to, for the card and bar: underway once the
107
+ * visitor is past the first step or the panel shows a recovery screen, and
108
+ * finished once it is confirmed or waitlisted.
109
+ */
110
+ export declare function bookingEntryProgress(input: Readonly<{
111
+ presentation: ResolvedRegistrationPresentation;
112
+ stepLabel: (step: RegistrationRouteStep) => string;
113
+ }>): Pick<BookingEntryInput, 'underway' | 'progress' | 'finished'>;
114
+ export type BookingPanelHeading = Readonly<{
115
+ title: string;
116
+ subtitle: string | null;
117
+ }>;
118
+ /** The panel header: the event's name, and when and where in one line. */
119
+ export declare function bookingPanelHeading(entry: BookingEntry, display: RegistrationDisplay): BookingPanelHeading;
120
+ export type BookingBarFacts = Readonly<{
121
+ panelOpen: boolean;
122
+ /** The card's edges relative to the viewport; null while it is known to be off screen. */
123
+ card: Readonly<{
124
+ top: number;
125
+ bottom: number;
126
+ }> | null;
127
+ viewportHeight: number;
128
+ barHeight: number;
129
+ /** With reduced motion the bar fades out as soon as the card arrives, without the push. */
130
+ reducedMotion: boolean;
131
+ }>;
132
+ export type BookingBarPlacement = Readonly<{
133
+ state: 'shown' | 'hidden';
134
+ /** How far the card has pushed the bar down, in px (0 when it isn't pushing). */
135
+ push: number;
136
+ }>;
137
+ /**
138
+ * How far a card rising from the bottom of the viewport has pushed the bar
139
+ * off: none until its top edge reaches the bottom, then in step with it,
140
+ * until the bar has gone entirely.
141
+ */
142
+ export declare function barPush(input: Readonly<{
143
+ cardTop: number;
144
+ viewportHeight: number;
145
+ barHeight: number;
146
+ }>): number;
147
+ /**
148
+ * Where the bar sits (issue 1581). It shows whenever the card is off screen,
149
+ * from the first screen on, and stays out of the way while the panel is open.
150
+ * As the card comes up from the bottom of the screen it pushes the bar down
151
+ * in step, as if handing over to it, and the bar stays away while the card is
152
+ * on screen.
153
+ */
154
+ export declare function bookingBarPlacement(facts: BookingBarFacts): BookingBarPlacement;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Keyboard focus for the booking card, bar and panel (issue 1581). The bar
3
+ * turns inert while it is out of the way, so focus that would land on it, or
4
+ * is on it when it goes, needs somewhere reachable to go instead.
5
+ */
6
+ /** Whether focus can land on the element now: in the page, outside any inert or hidden subtree. */
7
+ export declare function isReachable(element: HTMLElement | null): element is HTMLElement;
8
+ /**
9
+ * Focuses the preferred destination once it is reachable, waiting a few frames
10
+ * for it; if it never becomes reachable, the fallback takes focus instead.
11
+ */
12
+ export declare function focusWhenReachable(preferred: () => HTMLElement | null, fallback: () => HTMLElement | null, frame?: number): void;
@@ -6,7 +6,7 @@ import type { EligibilityData, EventTicketSelectionLine, FormData, Guest, GuestE
6
6
  import type { SelectableEventTicketType } from './utils';
7
7
  import type { BlockButtonRole } from '../../../constants/buttonRoles';
8
8
  import type { PortalAuthState, PortalProfile } from './hooks';
9
- import type { UseWaitlistClaimResult } from '../../shared/useWaitlistClaim';
9
+ import type { WaitlistInvitation } from './registrationDraft.state';
10
10
  import type { UseEventRegistrationWizardResult } from './useEventRegistrationWizard';
11
11
  import type { EventRegistrationSubmitResult } from './useEventRegistrationSubmit';
12
12
  export declare const DEFAULT_EVENT_REGISTRATION_MAX_TICKETS = 5;
@@ -247,7 +247,7 @@ export type HeadlessEventRegistrationFlow = Readonly<{
247
247
  state: EventRegistrationLoadState<UseEventRegistrationWizardResult['existingRegistration']>;
248
248
  registration: UseEventRegistrationWizardResult['existingRegistration'];
249
249
  }>;
250
- waitlistClaim: UseWaitlistClaimResult;
250
+ waitlistClaim: WaitlistInvitation;
251
251
  spamProtection: EventRegistrationSpamProtectionModel;
252
252
  terminal: EventRegistrationTerminalModel;
253
253
  actions: EventRegistrationFlowActions;
@@ -10,8 +10,8 @@ export declare function resolveEventRegistrationSubmitPlan(input: Readonly<{
10
10
  eventRequiresPayment: boolean;
11
11
  canJoinWaitlist?: boolean | null;
12
12
  }>): EventRegistrationSubmitPlan;
13
- export declare function resolveHeadlessEventRegistrationStatus(wizard: Pick<UseEventRegistrationWizardResult, 'step' | 'registrationResult' | 'errorMessage'> & Partial<Pick<UseEventRegistrationWizardResult, 'errorAction' | 'paymentStatusRecovery'>>): EventRegistrationFlowStatus;
14
- type RegistrationViewInput = Readonly<Pick<UseEventRegistrationWizardResult, 'step' | 'scopedEvents' | 'occurrenceContext' | 'registrationResult' | 'errorMessage' | 'paymentStatusRecovery'> & {
13
+ export declare function resolveHeadlessEventRegistrationStatus(wizard: Pick<UseEventRegistrationWizardResult, 'flow' | 'errorMessage'> & Partial<Pick<UseEventRegistrationWizardResult, 'errorAction' | 'paymentStatusRecovery'>>): EventRegistrationFlowStatus;
14
+ type RegistrationViewInput = Readonly<Pick<UseEventRegistrationWizardResult, 'flow' | 'scopedEvents' | 'occurrenceContext' | 'errorMessage' | 'paymentStatusRecovery'> & {
15
15
  api: Pick<UseEventRegistrationWizardResult['api'], 'config'>;
16
16
  }>;
17
17
  export declare function resolveHeadlessEventRegistrationView(wizard: RegistrationViewInput): EventRegistrationFlowView;
@@ -40,6 +40,15 @@ export declare const eventRecoveryRequestSchema: z.ZodObject<{
40
40
  readProfile: z.ZodOptional<z.ZodString>;
41
41
  }, z.core.$strip>;
42
42
  export type EventRecoveryRequest = Omit<PublicEventsRequest, 'siteId'>;
43
+ export type EventSourceRecovery<Event = PublicEvent> = Readonly<{
44
+ kind: 'ready';
45
+ events: readonly Event[];
46
+ }> | Readonly<{
47
+ kind: 'loading';
48
+ }> | Readonly<{
49
+ kind: 'exhausted';
50
+ retry: () => void;
51
+ }>;
43
52
  export type EventRegistrationEventSource = Readonly<{
44
53
  kind: 'loaded';
45
54
  events: PublicEvent[];
@@ -0,0 +1,77 @@
1
+ import type { ConfirmationPayment } from '../../../../../../commerce/src/purchase/index';
2
+ import { type RegistrationDisplay } from './registrationDisplay';
3
+ import type { OccurrenceContext, RegistrationEvent, RegistrationResult } from './types';
4
+ import type { RegistrationPresentation } from './wizardSteps';
5
+ export type ConfirmationSummaryRow = Readonly<{
6
+ label: string;
7
+ value: string;
8
+ }>;
9
+ export type ConfirmationPaymentPresentation = Readonly<{
10
+ kind: 'none';
11
+ }> | Readonly<{
12
+ kind: 'settled';
13
+ rows: readonly ConfirmationSummaryRow[];
14
+ }> | Readonly<{
15
+ kind: 'due';
16
+ paidRows: readonly ConfirmationSummaryRow[];
17
+ amountDueRow: ConfirmationSummaryRow;
18
+ instructions: string | null;
19
+ }>;
20
+ export declare function confirmationPaymentRows(payment: ConfirmationPaymentPresentation): readonly ConfirmationSummaryRow[];
21
+ /** The finished card and bar's facts. */
22
+ export type FinishedBookingEntry = Readonly<{
23
+ title: string;
24
+ /** Long form for the card and panel header. */
25
+ when: string | null;
26
+ /** Short form for the bar: "Mon 5 Oct, 7:00pm". */
27
+ shortWhen: string | null;
28
+ }> & (
29
+ /** `places` is null when the booking's details could not be loaded. */
30
+ Readonly<{
31
+ kind: 'booked';
32
+ places: string | null;
33
+ }> | Readonly<{
34
+ kind: 'waitlisted';
35
+ }>);
36
+ export type FinishedBooking = Readonly<{
37
+ entry: FinishedBookingEntry;
38
+ /** The confirmation's rows. */
39
+ summary: readonly ConfirmationSummaryRow[];
40
+ payment: ConfirmationPaymentPresentation;
41
+ }>;
42
+ export type FinishedBookingContext = Readonly<{
43
+ /** The events this block books, already scoped and adapted. */
44
+ events: readonly RegistrationEvent[];
45
+ /** The draft's event. Only a waitlist place, which has no outcome, uses it. */
46
+ draftEvent: RegistrationEvent | null;
47
+ occurrenceContext: OccurrenceContext | null | undefined;
48
+ display: RegistrationDisplay;
49
+ }>;
50
+ type ConfirmedResult = Extract<RegistrationResult, {
51
+ status: 'confirmed';
52
+ }>;
53
+ type WaitlistResult = Extract<RegistrationResult, {
54
+ status: 'waitlist';
55
+ }>;
56
+ /** The panel's presentation with any finished booking already resolved. */
57
+ export type ResolvedRegistrationPresentation = Exclude<RegistrationPresentation, {
58
+ screen: 'confirmed' | 'waitlisted';
59
+ }> | Readonly<{
60
+ layout: 'whole';
61
+ screen: 'confirmed';
62
+ result: ConfirmedResult;
63
+ finished: FinishedBooking;
64
+ }> | Readonly<{
65
+ layout: 'whole';
66
+ screen: 'waitlisted';
67
+ result: WaitlistResult;
68
+ finished: FinishedBooking;
69
+ }>;
70
+ /** Every evidenced debt carries its required amount row, independently of success prose. */
71
+ export declare function presentConfirmationPayment(payment: ConfirmationPayment): ConfirmationPaymentPresentation;
72
+ /**
73
+ * The one place a finished booking is resolved: the confirmation, the
74
+ * finished card and the bar all take this, never the raw result and events.
75
+ */
76
+ export declare function resolveFinishedPresentation(presentation: RegistrationPresentation, context: FinishedBookingContext): ResolvedRegistrationPresentation;
77
+ export {};
@@ -16,5 +16,4 @@ export { VerifyingPaymentStep } from './VerifyingPaymentStep';
16
16
  export { PaymentFailedStep } from './PaymentFailedStep';
17
17
  export { VerifyingTimeoutStep } from './VerifyingTimeoutStep';
18
18
  export { StepIndicator } from './StepIndicator';
19
- export { OrderSummary } from './OrderSummary';
20
19
  export { CheckIcon } from './CheckIcon';
@@ -0,0 +1,12 @@
1
+ import { type BookingOfferingPresetSummary } from '../../../blocks/offerings-preview/model';
2
+ import type { RegistrationEvent } from './types';
3
+ export type OfferingNoun = Readonly<{
4
+ label: string;
5
+ pluralLabel: string;
6
+ }>;
7
+ /**
8
+ * What the site calls this kind of offering, in lower case for use mid-sentence
9
+ * ("Book the course", "3 workshops"). Site preset labels win; the canonical
10
+ * name stands in when the site has none.
11
+ */
12
+ export declare function offeringNounForEvent(event: Pick<RegistrationEvent, 'eventPreset' | 'registrationSubject'> | null, presets: readonly BookingOfferingPresetSummary[] | null | undefined): OfferingNoun;
@@ -1,8 +1,9 @@
1
- import type { EventCheckoutReturnResponse, EventEmbeddedCheckout, EventRegistrationPaymentSubject } from '../../api/types';
1
+ import type { EventBookingOutcome, EventCheckoutReturnResponse, EventEmbeddedCheckout, EventRegistrationPaymentSubject } from '../../api/types';
2
2
  import type { PaymentStatusRecoveryState } from './types';
3
3
  type PaymentResponseIntent = 'resume' | 'check' | 'abandon';
4
4
  export type PaymentResponseTransition = {
5
5
  kind: 'confirmed';
6
+ outcome: EventBookingOutcome;
6
7
  } | {
7
8
  kind: 'restartBooking';
8
9
  } | {
@@ -12,9 +12,11 @@ export type RegistrationAdmission = Readonly<{
12
12
  kind: 'waitlist';
13
13
  detailsCheck: 'byEmail' | 'none';
14
14
  }>
15
- /** Always blocked: a sold-out event offers no way forward. */
15
+ /** Always blocked at this size. `placesLeft` > 0 means fewer places than asked
16
+ * for are left: choosing that many is the way forward (issue 1581). */
16
17
  | Readonly<{
17
18
  kind: 'fullyBooked';
19
+ placesLeft: number;
18
20
  }> | Readonly<{
19
21
  kind: 'closed';
20
22
  reason: 'unavailable' | 'optionsUnavailable' | 'alreadyWaitlisted';
@@ -36,6 +38,28 @@ export declare function resolveRegistrationAdmission(input: Readonly<{
36
38
  eligibilityLoading: boolean;
37
39
  isAuthenticated: boolean;
38
40
  }>): RegistrationAdmission;
41
+ /** "Sold out", or "Only 1 place left" when fewer places are left than asked for. */
42
+ export declare function fullyBookedLabel(admission: Extract<RegistrationAdmission, {
43
+ kind: 'fullyBooked';
44
+ }>): string;
45
+ /** Why a fully booked admission blocks, and how to move on when it can. */
46
+ export declare function fullyBookedMessage(admission: Extract<RegistrationAdmission, {
47
+ kind: 'fullyBooked';
48
+ }>): string;
49
+ /**
50
+ * The most places the counter offers (issue 1581): the block's limit, narrowed
51
+ * only by availability the server has settled for this selection. A visitor
52
+ * resuming a held place keeps the block's limit (the server counts the held
53
+ * places back in), and the page's cached snapshot never narrows it.
54
+ */
55
+ export declare function placeCountCeiling(input: Readonly<{
56
+ maxAllowed: number;
57
+ admission: RegistrationAdmission;
58
+ /** Places left in the settled registration options, when they say. */
59
+ settledRemaining: number | null;
60
+ }>): number;
61
+ /** Places left in settled registration options, when they name a count. */
62
+ export declare function settledRemainingPlaces(eligibility: Pick<EligibilityData, 'availability'> | null): number | null;
39
63
  export type RegistrationAvailabilityBlocker = Readonly<{
40
64
  kind: 'pending';
41
65
  message: string;
@@ -43,6 +67,14 @@ export type RegistrationAvailabilityBlocker = Readonly<{
43
67
  kind: 'unavailable';
44
68
  reason: 'soldOut' | 'alreadyWaitlisted' | 'closed';
45
69
  message: string;
70
+ }>
71
+ /** Places remain, just fewer than asked for: choosing fewer moves on (issue 1581). */
72
+ | Readonly<{
73
+ kind: 'unavailable';
74
+ reason: 'fewerPlacesLeft';
75
+ placesLeft: number;
76
+ heading: string;
77
+ message: string;
46
78
  }>;
47
79
  export declare function resolveRegistrationAvailabilityBlocker(admission: RegistrationAdmission): RegistrationAvailabilityBlocker | null;
48
80
  export declare function resolvePricingSelectionBlocker(input: Readonly<{
@@ -31,6 +31,17 @@ export declare function resolveEventRequiresPayment(input: Readonly<{
31
31
  selectedTicketType: Pick<PublicEventPricingOption, 'priceAmount'> | null;
32
32
  event: Pick<RegistrationEvent, 'pricing'> | null;
33
33
  }>): boolean;
34
+ /**
35
+ * Whether the route counts the payment steps. Once an event is chosen that
36
+ * event decides; before then (a series' date step) the dates on offer do, so
37
+ * the count is fixed from the first step and doesn't grow on choosing a date
38
+ * (D2, issue 1581).
39
+ */
40
+ export declare function resolveRouteRequiresPayment(input: Readonly<{
41
+ event: Pick<RegistrationEvent, 'pricing'> | null;
42
+ eventRequiresPayment: boolean;
43
+ events: readonly Pick<RegistrationEvent, 'pricing'>[];
44
+ }>): boolean;
34
45
  export declare function resolveDiscountContext(input: Readonly<{
35
46
  paymentSelection: PaymentSelection;
36
47
  event: Pick<RegistrationEvent, 'seriesId' | 'eventCategory'> | null;
@@ -0,0 +1,31 @@
1
+ import { z } from 'zod';
2
+ import type { HybridEventCapacitySource, RemainingPlacesWording } from '../events/domain/capacity';
3
+ import type { RegistrationEvent } from './types';
4
+ export type RegistrationDisplay = Readonly<{
5
+ venue: 'shown' | 'hidden';
6
+ placesLeft: 'shown' | 'hidden';
7
+ }>;
8
+ export declare const registrationDisplaySchema: z.ZodObject<{
9
+ venue: z.ZodEnum<{
10
+ shown: "shown";
11
+ hidden: "hidden";
12
+ }>;
13
+ placesLeft: z.ZodEnum<{
14
+ shown: "shown";
15
+ hidden: "hidden";
16
+ }>;
17
+ }, z.core.$strip>;
18
+ export declare function resolveRegistrationDisplay(source: Readonly<{
19
+ showVenue?: boolean;
20
+ showCapacity?: boolean;
21
+ }>): RegistrationDisplay;
22
+ /** Venue stays in domain data; views receive only the permitted presentation. */
23
+ export declare function shownVenue(event: RegistrationEvent, display: RegistrationDisplay): string | null;
24
+ /** Full/waitlist explanations remain visible even when optional counts are hidden. */
25
+ export declare function placesLeftLabel(source: HybridEventCapacitySource | Readonly<{
26
+ kind: 'ticketType';
27
+ remaining: number | null;
28
+ }>, display: RegistrationDisplay, wording?: RemainingPlacesWording & Readonly<{
29
+ unlimited?: string;
30
+ open?: string;
31
+ }>): string | null;