@riverbankcms/sdk 0.132.0 → 0.135.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 (328) hide show
  1. package/CHANGELOG.md +14 -3
  2. package/README.md +1 -1
  3. package/dist/{PreviewEditorSidebar-DKQ5eFK9.mjs → PreviewEditorSidebar-roNY0GVy.mjs} +4 -4
  4. package/dist/{PreviewEditorUI-CNTcOjCC.mjs → PreviewEditorUI-KboDbEh_.mjs} +3 -3
  5. package/dist/{PreviewQueryProvider-D51gQaG3.mjs → PreviewQueryProvider-DcgaESkm.mjs} +1 -1
  6. package/dist/{SdkPreviewModeRuntime-DJu3qu33.mjs → SdkPreviewModeRuntime-DBrF7Caa.mjs} +48 -17
  7. package/dist/{SiteChromeCustomizeContext-2TzT3vbj.mjs → SiteChromeCustomizeContext-DrIEpJKn.mjs} +4351 -7964
  8. package/dist/_dts/ai/src/contracts/proposals.d.ts +549 -549
  9. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +234 -234
  10. package/dist/_dts/api/src/accountApi.d.ts +5 -5
  11. package/dist/_dts/api/src/appointmentEndpointDefinitions.d.ts +1 -1
  12. package/dist/_dts/api/src/bookingConfig.d.ts +1 -1
  13. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +25 -60
  14. package/dist/_dts/api/src/bookingOperations.d.ts +111 -173
  15. package/dist/_dts/api/src/bookingPaymentTermSchemas.d.ts +123 -0
  16. package/dist/_dts/api/src/bookingRecords.d.ts +13 -13
  17. package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +4 -4
  18. package/dist/_dts/api/src/bookingSessionSummaryTypes.d.ts +34 -0
  19. package/dist/_dts/api/src/bookings.d.ts +7 -11
  20. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +7 -7
  21. package/dist/_dts/api/src/communications.d.ts +1 -1
  22. package/dist/_dts/api/src/contentRuntime.d.ts +1 -1
  23. package/dist/_dts/api/src/endpoints.d.ts +30 -110
  24. package/dist/_dts/api/src/eventManagementContracts.d.ts +1 -1
  25. package/dist/_dts/api/src/eventSeriesRegistrationEndpointDefinitions.d.ts +43 -0
  26. package/dist/_dts/api/src/index.d.ts +3 -4
  27. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  28. package/dist/_dts/api/src/navigation/contracts.d.ts +9 -6
  29. package/dist/_dts/api/src/navigation/linkResolver.d.ts +6 -2
  30. package/dist/_dts/api/src/navigation/types.d.ts +23 -6
  31. package/dist/_dts/api/src/navigation.d.ts +1 -1
  32. package/dist/_dts/api/src/participantMessaging.d.ts +2 -2
  33. package/dist/_dts/api/src/publicBookingService.d.ts +15 -0
  34. package/dist/_dts/api/src/publicEventEndpointDefinitions.d.ts +8 -0
  35. package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +32 -28
  36. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +88 -6
  37. package/dist/_dts/api/src/publicExperience/sharedTypes.d.ts +1 -1
  38. package/dist/_dts/api/src/publicExperience/wholeSeriesEndpoints.d.ts +9 -98
  39. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +7 -6
  40. package/dist/_dts/api/src/publicWholeSeriesEndpointDefinitions.d.ts +0 -32
  41. package/dist/_dts/api/src/sdk-event-payment-terms.d.ts +1 -1
  42. package/dist/_dts/api/src/sdk-event-upsert.d.ts +2 -2
  43. package/dist/_dts/api/src/sdkThemeWire.d.ts +50 -50
  44. package/dist/_dts/api/src/siteBanner.d.ts +4 -2
  45. package/dist/_dts/api/src/siteOperations.d.ts +2 -2
  46. package/dist/_dts/api/src/types.d.ts +2 -2
  47. package/dist/_dts/api/src/webhooks.d.ts +12 -12
  48. package/dist/_dts/api/src/{courses.d.ts → wholeSeriesOfferings.d.ts} +43 -95
  49. package/dist/_dts/blocks/src/client.d.ts +1 -6
  50. package/dist/_dts/blocks/src/contracts/index.d.ts +1 -1
  51. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +33 -166
  52. package/dist/_dts/blocks/src/index.d.ts +3 -2
  53. package/dist/_dts/blocks/src/portal/dateFormatting.d.ts +3 -0
  54. package/dist/_dts/blocks/src/portal/types.d.ts +17 -20
  55. package/dist/_dts/blocks/src/primitives/content/components/RichText.d.ts +2 -2
  56. package/dist/_dts/blocks/src/primitives/content/primitives.d.ts +1 -0
  57. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +147 -42
  58. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +46 -24
  59. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +3 -0
  60. package/dist/_dts/blocks/src/system/blocks/events/whole-series/schemas.d.ts +3 -3
  61. package/dist/_dts/blocks/src/system/blocks/events/whole-series/types.d.ts +6 -0
  62. package/dist/_dts/blocks/src/system/blocks/index.d.ts +0 -2
  63. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +4 -4
  64. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +148 -148
  65. package/dist/_dts/blocks/src/system/blocks/offerings-preview/model.d.ts +5 -4
  66. package/dist/_dts/blocks/src/system/blocks/offerings-preview/scheduleSummary.d.ts +3 -3
  67. package/dist/_dts/blocks/src/system/blocks/shared/bookingConsent.d.ts +36 -0
  68. package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
  69. package/dist/_dts/blocks/src/system/manifest/hydrateLinks.d.ts +9 -2
  70. package/dist/_dts/blocks/src/system/manifest/resolveBlockData.d.ts +8 -0
  71. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +79 -79
  72. package/dist/_dts/blocks/src/system/node/builder.d.ts +0 -1
  73. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +9 -12
  74. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +2 -44
  75. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  76. package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +2 -11
  77. package/dist/_dts/blocks/src/system/runtime/api/types/core.d.ts +1 -1
  78. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +100 -59
  79. package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +1 -1
  80. package/dist/_dts/blocks/src/system/runtime/api/types/shop.d.ts +19 -16
  81. package/dist/_dts/blocks/src/system/runtime/api/types/waitlist-claims.d.ts +7 -0
  82. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +1 -1
  83. package/dist/_dts/blocks/src/system/runtime/components/multi-step/DynamicFormFields.d.ts +3 -19
  84. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +24 -247
  85. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +13 -126
  86. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +0 -1
  87. package/dist/_dts/blocks/src/system/runtime/hooks/usePaymentVerification.d.ts +2 -3
  88. package/dist/_dts/blocks/src/system/runtime/hooks/useSelectedAppointmentConsentForm.d.ts +2 -0
  89. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.consent.d.ts +10 -0
  90. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.field-values.d.ts +4 -0
  91. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.fields.d.ts +21 -0
  92. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +2 -1
  93. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +38 -144
  94. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +5 -19
  95. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +3 -2
  96. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/WholeSeriesPricingDisplay.d.ts +8 -0
  97. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/AttendeeDetailsStep.d.ts +2 -0
  98. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationBookingLayer.d.ts +17 -0
  99. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +24 -0
  100. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PaymentBlockingPanel.d.ts +18 -0
  101. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/TicketSelectionStep.d.ts +5 -0
  102. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/constants.d.ts +1 -0
  103. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +1 -3
  104. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventPaymentOptions.d.ts +7 -4
  105. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventScope.d.ts +0 -1
  106. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +7 -8
  107. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/index.d.ts +1 -1
  108. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationDerivations.d.ts +4 -4
  109. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationEventAdapter.d.ts +3 -0
  110. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationStateMachine.d.ts +5 -0
  111. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationSurface.d.ts +18 -1
  112. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationWizardContext.d.ts +28 -0
  113. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/sessionStorage.d.ts +12 -11
  114. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +53 -45
  115. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +10 -6
  116. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +9 -1
  117. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +24 -9
  118. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useWaitlistClaimRestoration.d.ts +20 -0
  119. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/utils.d.ts +5 -56
  120. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/validation.d.ts +2 -1
  121. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/waitlistClaimRestoration.d.ts +20 -0
  122. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +6 -22
  123. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/DateTimeTile.d.ts +1 -1
  124. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +40 -18
  125. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview.d.ts +2 -2
  126. package/dist/_dts/blocks/src/system/runtime/shared/bookingPaymentOptions.d.ts +6 -1
  127. package/dist/_dts/blocks/src/system/runtime/shared/components/BookingConsentAgreement.d.ts +7 -0
  128. package/dist/_dts/blocks/src/system/runtime/shared/components/DiscountCodeDisclosure.d.ts +1 -13
  129. package/dist/_dts/blocks/src/system/runtime/shared/components/LoggedInAsUser.d.ts +1 -1
  130. package/dist/_dts/blocks/src/system/runtime/shared/components/MembershipHero.d.ts +1 -1
  131. package/dist/_dts/blocks/src/system/runtime/shared/components/StateIcon.d.ts +1 -1
  132. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +1 -1
  133. package/dist/_dts/blocks/src/system/runtime/shared/types.d.ts +2 -1
  134. package/dist/_dts/blocks/src/system/runtime/shared/utils/checkoutUrls.d.ts +2 -2
  135. package/dist/_dts/blocks/src/system/types/link.d.ts +7 -1
  136. package/dist/_dts/commerce/src/index.d.ts +16 -0
  137. package/dist/_dts/commerce/src/money.d.ts +122 -0
  138. package/dist/_dts/commerce/src/moneyContracts.d.ts +178 -0
  139. package/dist/_dts/commerce/src/moneyDateUtils.d.ts +22 -0
  140. package/dist/_dts/commerce/src/moneyPayments.d.ts +59 -0
  141. package/dist/_dts/commerce/src/moneyPlanningTime.d.ts +4 -0
  142. package/dist/_dts/commerce/src/moneyReceiptReadModel.d.ts +68 -0
  143. package/dist/_dts/commerce/src/moneyReport.d.ts +105 -0
  144. package/dist/_dts/commerce/src/moneyReportBreakdowns.d.ts +3 -0
  145. package/dist/_dts/commerce/src/moneyReportKindFilter.d.ts +4 -0
  146. package/dist/_dts/commerce/src/moneyReportPage.d.ts +132 -0
  147. package/dist/_dts/commerce/src/purchase/checkoutCollectionPlan.d.ts +1 -1
  148. package/dist/_dts/commerce/src/purchase/confirmationEmailPayment.d.ts +1 -1
  149. package/dist/_dts/commerce/src/purchase/orderCompletionEmailPlan.d.ts +3 -3
  150. package/dist/_dts/commerce/src/purchase/orderFulfillmentPlan.d.ts +6 -25
  151. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +4 -4
  152. package/dist/_dts/commerce/src/purchase/orderPlanningTypes.d.ts +11 -11
  153. package/dist/_dts/commerce/src/purchase/orderTypes.d.ts +1 -1
  154. package/dist/_dts/commerce/src/purchase/persistedCheckoutLines.d.ts +1 -1
  155. package/dist/_dts/commerce/src/purchase/types.d.ts +12 -8
  156. package/dist/_dts/commerce/src/shop/digitalFulfillment.d.ts +111 -0
  157. package/dist/_dts/commerce/src/shop/fulfillmentStatus.d.ts +10 -0
  158. package/dist/_dts/commerce/src/shop/inventoryRestore.d.ts +13 -0
  159. package/dist/_dts/commerce/src/shop/shippingAddress.d.ts +18 -0
  160. package/dist/_dts/commerce/src/types/json.d.ts +3 -0
  161. package/dist/_dts/commerce/src/utils/isPlainRecord.d.ts +1 -0
  162. package/dist/_dts/commerce/src/waitlists.d.ts +172 -0
  163. package/dist/_dts/content-model/src/content-types/builtin-schemas.d.ts +0 -30
  164. package/dist/_dts/content-model/src/content-types/builtins.d.ts +2 -39
  165. package/dist/_dts/content-model/src/content-types/schema.d.ts +4 -4
  166. package/dist/_dts/content-model/src/metadataConfig.d.ts +0 -1
  167. package/dist/_dts/content-model/src/templates/defaults.d.ts +0 -68
  168. package/dist/_dts/core/src/booking-consent.d.ts +8 -0
  169. package/dist/_dts/core/src/branded.d.ts +3 -3
  170. package/dist/_dts/core/src/event-pricing.d.ts +6 -6
  171. package/dist/_dts/core/src/index.d.ts +1 -0
  172. package/dist/_dts/core/src/participants.d.ts +17 -17
  173. package/dist/_dts/core/src/rectification.d.ts +1 -1
  174. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +899 -2157
  175. package/dist/_dts/db/src/schemas/forms.d.ts +21 -21
  176. package/dist/_dts/db/src/types/jsonb.d.ts +1 -1
  177. package/dist/_dts/editor/src/primitives/rich-text/RichTextEditorSurface.d.ts +2 -1
  178. package/dist/_dts/editor/src/primitives/rich-text/config.d.ts +2 -1
  179. package/dist/_dts/editor/src/primitives/rich-text/toolbar/linkPopoverUtils.d.ts +3 -2
  180. package/dist/_dts/editor/src/primitives/rich-text/useRichTextEditor.d.ts +3 -4
  181. package/dist/_dts/media-core/src/usageScanner.d.ts +1 -1
  182. package/dist/_dts/sdk/src/bookings/index.d.ts +4 -5
  183. package/dist/_dts/sdk/src/bookings/types.d.ts +8 -60
  184. package/dist/_dts/sdk/src/config/validation.d.ts +30 -30
  185. package/dist/_dts/sdk/src/contracts/content.d.ts +10 -36
  186. package/dist/_dts/sdk/src/contracts/rendering.d.ts +1 -1
  187. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +9 -9
  188. package/dist/_dts/sdk/src/public-api/contracts.d.ts +6 -19
  189. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +4 -6
  190. package/dist/_dts/sdk/src/version.d.ts +1 -1
  191. package/dist/_dts/theme-core/src/accordions/types.d.ts +2 -2
  192. package/dist/_dts/theme-core/src/blocks/vars/index.d.ts +0 -2
  193. package/dist/_dts/theme-core/src/buttons/types.d.ts +12 -12
  194. package/dist/_dts/theme-core/src/cards/types.d.ts +5 -5
  195. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  196. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +72 -72
  197. package/dist/_dts/theme-core/src/navigation/types.d.ts +4 -4
  198. package/dist/_dts/theme-core/src/palette/colors.d.ts +1 -1
  199. package/dist/_dts/theme-core/src/palette/curated/types.d.ts +2 -2
  200. package/dist/_dts/theme-core/src/schema.d.ts +82 -82
  201. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +1 -1
  202. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +1 -1
  203. package/dist/_dts/theme-core/src/site-styles/cardRoleVocabulary.d.ts +1 -1
  204. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
  205. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -4
  206. package/dist/_dts/theme-core/src/site-styles/logoBranding.d.ts +4 -4
  207. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +1 -1
  208. package/dist/_dts/ui/src/badge.d.ts +1 -1
  209. package/dist/_dts/ui/src/button.d.ts +1 -1
  210. package/dist/_dts/ui/src/callout.d.ts +1 -1
  211. package/dist/_dts/ui/src/card.d.ts +1 -1
  212. package/dist/client/{usePolling-M5jG675x.mjs → BookingConsentAgreement-BQqwi8Oa.mjs} +180 -4
  213. package/dist/client/{DiscountCodeDisclosure-DO7llLxm.mjs → DiscountCodeDisclosure-B97aMo0V.mjs} +13 -27
  214. package/dist/client/{EventCombined.client-xID7zN__.mjs → EventCombined.client-Bs2Iw9Q6.mjs} +3 -3
  215. package/dist/client/{EventListing.client-CriBslp0.mjs → EventListing.client-C4QUQdmg.mjs} +2 -2
  216. package/dist/client/{LeafletStaticMap-DYmHnM8g.mjs → LeafletStaticMap-CwWRk69M.mjs} +1 -1
  217. package/dist/client/{accordion-CgFbnnnQ.mjs → accordion-BA0j8Mpw.mjs} +1 -1
  218. package/dist/client/{bookingForm-dUyGpbxc.mjs → bookingForm-Br2e41H0.mjs} +72 -47
  219. package/dist/client/bookings.mjs +1987 -2132
  220. package/dist/client/{carousel-BvBwkUzx.mjs → carousel-B4dmwnpD.mjs} +1 -1
  221. package/dist/client/{cart-DiZENT2E.mjs → cart-B_ckGW4b.mjs} +3 -3
  222. package/dist/client/{checkout-Dq13KIgR.mjs → checkout-DAyspHdf.mjs} +3 -3
  223. package/dist/client/checkoutUrls-BuseL0dw.mjs +189 -0
  224. package/dist/client/client.mjs +5627 -9543
  225. package/dist/client/{context-B83PiNzm.mjs → context-DljQn8L5.mjs} +15 -82
  226. package/dist/client/{eventCalendar-BF0Jatfw.mjs → eventCalendar-pJu3FUod.mjs} +5 -5
  227. package/dist/client/{eventCombined-BuoCF8je.mjs → eventCombined-B6Kacm9F.mjs} +3 -3
  228. package/dist/client/{eventDetails-CKwh0S9s.mjs → eventDetails-CaX9z1pv.mjs} +8 -8
  229. package/dist/client/{eventListing-eUxaWFaB.mjs → eventListing-B9aXPO-I.mjs} +3 -3
  230. package/dist/client/{eventRegistration-CfkNOkPb.mjs → eventRegistration-CBSovBkg.mjs} +4550 -3671
  231. package/dist/client/{form-C17H1c_H.mjs → form-Cm0tu_7o.mjs} +2 -2
  232. package/dist/client/{headerSection-DEwUmrtt.mjs → headerSection-OgRtHeKS.mjs} +2 -2
  233. package/dist/client/hooks.mjs +535 -694
  234. package/dist/client/{locationMap-Pf2QwuvW.mjs → locationMap-DmjcYqNM.mjs} +2 -2
  235. package/dist/client/{newsletterForm-BWQAH5Sv.mjs → newsletterForm-D08OZQAC.mjs} +2 -2
  236. package/dist/client/{productDetail-BZi1Fa_G.mjs → productDetail-BqZeu2P4.mjs} +3 -3
  237. package/dist/client/{productList-qq-55DNk.mjs → productList-mNyIF9FG.mjs} +3 -3
  238. package/dist/client/{propsDecoder-BxmqPKdP.mjs → propsDecoder-DwHXRm9X.mjs} +4850 -4502
  239. package/dist/client/rendering/client.mjs +59921 -62298
  240. package/dist/client/rendering/islands.mjs +17 -19
  241. package/dist/client/rendering.mjs +6226 -10236
  242. package/dist/client/{scrollToBlock-B3CcKdtG.mjs → scrollToBlock-DtmdM3v-.mjs} +2 -2
  243. package/dist/client/{shop-DNWJPut5.mjs → shop-CNjZK16F.mjs} +6 -6
  244. package/dist/client/{shop-commerce-BhvQCosS.mjs → shop-commerce-DkNNao1J.mjs} +7 -164
  245. package/dist/client/{shop-commerce-store-B04sCNnW.mjs → shop-commerce-store-9WA--zuW.mjs} +1 -1
  246. package/dist/client/{shopShared-DNNgZlmW.mjs → shopShared-CHCVfccY.mjs} +3 -3
  247. package/dist/client/{useEventFilters-CUmhE24_.mjs → useEventFilters-DvuaB4ZN.mjs} +3 -3
  248. package/dist/preview-next/before-render.mjs +40 -161
  249. package/dist/preview-next/client/runtime.mjs +4 -4
  250. package/dist/preview-next/keepAlive.mjs +40 -161
  251. package/dist/preview-next/middleware.mjs +40 -161
  252. package/dist/{previewAuthStore-BFKd4LrN.mjs → previewAuthStore-C7ksxt5b.mjs} +40 -161
  253. package/dist/{sdk-runtime-BEXb1wqo.mjs → sdk-runtime-3GhW4knb.mjs} +2 -2
  254. package/dist/{separator-DGMuip1D.mjs → separator-D3bCWYYb.mjs} +1 -1
  255. package/dist/server/components.mjs +634 -2969
  256. package/dist/server/config-validation.mjs +535 -694
  257. package/dist/server/config.mjs +535 -694
  258. package/dist/server/data.mjs +535 -694
  259. package/dist/server/index.mjs +41 -162
  260. package/dist/server/next.mjs +644 -2979
  261. package/dist/server/page-converter.mjs +435 -561
  262. package/dist/server/prebuild.mjs +1 -1
  263. package/dist/server/rendering/server.mjs +635 -2874
  264. package/dist/server/rendering.mjs +634 -2969
  265. package/dist/server/routing.mjs +706 -1138
  266. package/dist/server/server.mjs +549 -708
  267. package/dist/server/theme-bridge.mjs +152 -1635
  268. package/dist/styles/index.css +41 -1348
  269. package/package.json +2 -2
  270. package/dist/_dts/api/src/courseEndpointDefinitions.d.ts +0 -99
  271. package/dist/_dts/blocks/src/client/course-registration.d.ts +0 -5
  272. package/dist/_dts/blocks/src/system/blocks/course-details.d.ts +0 -134
  273. package/dist/_dts/blocks/src/system/blocks/course-registration.d.ts +0 -130
  274. package/dist/_dts/blocks/src/system/blocks/courses/shared/index.d.ts +0 -3
  275. package/dist/_dts/blocks/src/system/blocks/courses/shared/pricing.d.ts +0 -2
  276. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +0 -1
  277. package/dist/_dts/blocks/src/system/blocks/courses/shared/types.d.ts +0 -1
  278. package/dist/_dts/blocks/src/system/runtime/api/types/courses.d.ts +0 -133
  279. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessWholeSeriesRegistrationFlow.d.ts +0 -28
  280. package/dist/_dts/blocks/src/system/runtime/nodes/course-details/logic.d.ts +0 -11
  281. package/dist/_dts/blocks/src/system/runtime/nodes/course-details/runs.d.ts +0 -10
  282. package/dist/_dts/blocks/src/system/runtime/nodes/course-details/view.d.ts +0 -15
  283. package/dist/_dts/blocks/src/system/runtime/nodes/course-details.server.d.ts +0 -20
  284. package/dist/_dts/blocks/src/system/runtime/nodes/course-page-surface-scope.d.ts +0 -14
  285. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.client.d.ts +0 -10
  286. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.interactive.d.ts +0 -181
  287. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.server.d.ts +0 -12
  288. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/CoursePricingDisplay.d.ts +0 -8
  289. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/BookingModeStep.d.ts +0 -32
  290. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/CheckIcon.d.ts +0 -4
  291. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/ErrorStep.d.ts +0 -17
  292. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/MembershipHero.d.ts +0 -12
  293. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/PaymentFailedStep.d.ts +0 -17
  294. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/PortalAuthSidebar.d.ts +0 -9
  295. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/StepIndicator.d.ts +0 -6
  296. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/SuccessStep.d.ts +0 -14
  297. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/VerifyingTimeoutStep.d.ts +0 -17
  298. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/WaitlistStep.d.ts +0 -12
  299. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/WholeSeriesRegistrationActiveSteps.d.ts +0 -9
  300. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/WholeSeriesRegistrationErrorBoundary.d.ts +0 -25
  301. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/WholeSeriesRegistrationTerminalContent.d.ts +0 -8
  302. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/WholeSeriesRegistrationWizard.d.ts +0 -8
  303. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/components.d.ts +0 -45
  304. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/index.d.ts +0 -18
  305. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/presentation.d.ts +0 -7
  306. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/pricing.d.ts +0 -14
  307. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/types.d.ts +0 -105
  308. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesEligibility.d.ts +0 -24
  309. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesPaymentVerification.d.ts +0 -10
  310. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesRegistrationActions.d.ts +0 -35
  311. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesRegistrationPortal.d.ts +0 -7
  312. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesRegistrationSelection.d.ts +0 -35
  313. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesRegistrationWizard.d.ts +0 -185
  314. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesWaitlistSelection.d.ts +0 -14
  315. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/utils.d.ts +0 -43
  316. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/whole-series-registration.headless.contract.d.ts +0 -323
  317. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/whole-series-registration.headless.planning.d.ts +0 -27
  318. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/wholeSeriesPageSurfaceScope.d.ts +0 -17
  319. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/wholeSeriesRegistrationViewState.d.ts +0 -21
  320. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/wizardSteps.d.ts +0 -30
  321. package/dist/_dts/sdk/src/rendering/islands/enhancers/courseRegistration.d.ts +0 -3
  322. package/dist/_dts/theme-core/src/blocks/vars/course-details.d.ts +0 -16
  323. package/dist/_dts/theme-core/src/blocks/vars/course-registration.d.ts +0 -21
  324. package/dist/client/StepIndicator-CGixP_LW.mjs +0 -138
  325. package/dist/client/WholeSeriesRegistrationWizard-BEjzSiOA.mjs +0 -2496
  326. package/dist/client/checkoutUrls-Ct8Mxna3.mjs +0 -26
  327. package/dist/client/courseRegistration-CKC5NmyH.mjs +0 -52
  328. package/dist/client/pricing-CVdvbopJ.mjs +0 -195
@@ -804,69 +804,8 @@ const ACCOUNT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
804
804
  }
805
805
  });
806
806
  //#endregion
807
- //#region ../api/src/courseEndpointDefinitions.ts
808
- const COURSE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
809
- listCourses: {
810
- path: "/sites/{siteId}/bookings/courses",
811
- method: "GET",
812
- auth: "user",
813
- responseKind: "json"
814
- },
815
- exportCoursesCsv: {
816
- path: "/sites/{siteId}/bookings/courses/export.csv",
817
- method: "GET",
818
- tags: [
819
- "site-{siteId}",
820
- "bookings",
821
- "courses-{siteId}"
822
- ],
823
- errors: [],
824
- auth: "user",
825
- responseKind: "blob"
826
- },
827
- createCourse: {
828
- path: "/sites/{siteId}/bookings/courses",
829
- method: "POST",
830
- auth: "user",
831
- responseKind: "json",
832
- errors: [
833
- "validation:invalid_input",
834
- "resource:not_found",
835
- "resource:already_exists",
836
- "resource:conflict",
837
- "server:internal_error"
838
- ]
839
- },
840
- getCourse: {
841
- path: "/sites/{siteId}/bookings/courses/{courseId}",
842
- method: "GET",
843
- auth: "user",
844
- responseKind: "json"
845
- },
846
- updateCourse: {
847
- path: "/sites/{siteId}/bookings/courses/{courseId}",
848
- method: "PATCH",
849
- auth: "user",
850
- responseKind: "json",
851
- errors: [
852
- "validation:invalid_input",
853
- "resource:not_found",
854
- "resource:conflict",
855
- "server:internal_error"
856
- ]
857
- },
858
- deleteCourse: {
859
- path: "/sites/{siteId}/bookings/courses/{courseId}",
860
- method: "DELETE",
861
- auth: "user",
862
- responseKind: "json",
863
- errors: [
864
- "validation:invalid_input",
865
- "resource:not_found",
866
- "resource:conflict",
867
- "server:internal_error"
868
- ]
869
- },
807
+ //#region ../api/src/eventSeriesRegistrationEndpointDefinitions.ts
808
+ const EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
870
809
  deleteEventOffering: {
871
810
  path: "/sites/{siteId}/bookings/event-offerings/{eventOfferingId}",
872
811
  method: "DELETE",
@@ -879,20 +818,8 @@ const COURSE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
879
818
  "server:internal_error"
880
819
  ]
881
820
  },
882
- duplicateCourse: {
883
- path: "/sites/{siteId}/bookings/courses/{courseId}/duplicate",
884
- method: "POST",
885
- auth: "user",
886
- responseKind: "json",
887
- errors: [
888
- "validation:invalid_input",
889
- "resource:not_found",
890
- "resource:already_exists",
891
- "server:internal_error"
892
- ]
893
- },
894
- changeCourseContentOwnership: {
895
- path: "/sites/{siteId}/bookings/courses/{courseId}/content-ownership",
821
+ changeEventSeriesContentOwnership: {
822
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/content-ownership",
896
823
  method: "POST",
897
824
  auth: "user",
898
825
  responseKind: "json",
@@ -903,8 +830,8 @@ const COURSE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
903
830
  "server:internal_error"
904
831
  ]
905
832
  },
906
- addCourseEnrollment: {
907
- path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments",
833
+ addEventSeriesRegistration: {
834
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations",
908
835
  method: "POST",
909
836
  auth: "user",
910
837
  responseKind: "json",
@@ -915,33 +842,21 @@ const COURSE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
915
842
  "server:internal_error"
916
843
  ]
917
844
  },
918
- listCourseEnrollments: {
919
- path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments",
845
+ listEventSeriesRegistrations: {
846
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations",
920
847
  method: "GET",
921
848
  auth: "user",
922
849
  responseKind: "json"
923
850
  },
924
- exportCourseEnrollmentsCsv: {
925
- path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments/export.csv",
851
+ exportEventSeriesRegistrationsCsv: {
852
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations/export.csv",
926
853
  method: "GET",
927
854
  auth: "user",
928
855
  errors: [],
929
856
  responseKind: "blob"
930
857
  },
931
- exportCourseWaitlistCsv: {
932
- path: "/sites/{siteId}/bookings/courses/{courseId}/waitlist/export.csv",
933
- method: "GET",
934
- tags: [
935
- "site-{siteId}",
936
- "bookings",
937
- "courses-{courseId}"
938
- ],
939
- auth: "user",
940
- responseKind: "blob",
941
- errors: []
942
- },
943
- updateCourseEnrollment: {
944
- path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments/{enrollmentId}",
858
+ updateEventSeriesRegistration: {
859
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations/{registrationId}",
945
860
  method: "PATCH",
946
861
  auth: "user",
947
862
  responseKind: "json",
@@ -1329,71 +1244,35 @@ const PUBLIC_WHOLE_SERIES_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1329
1244
  errors: ["resource:not_found", "server:internal_error"],
1330
1245
  auth: "public",
1331
1246
  responseKind: "json"
1332
- },
1333
- registerForWholeSeries: {
1334
- path: "/public/sites/{siteId}/dated-offerings/whole-series/enroll",
1335
- method: "POST",
1336
- tags: [TAG_TEMPLATES.publicWholeSeriesOfferings, "course-enrollment"],
1337
- errors: [
1338
- "auth:unauthenticated",
1339
- "auth:forbidden",
1340
- "validation:invalid_input",
1341
- "resource:not_found",
1342
- "resource:conflict",
1343
- "resource:already_exists",
1344
- "server:internal_error"
1345
- ],
1346
- auth: "public",
1347
- responseKind: "json"
1348
- },
1349
- checkWholeSeriesEligibility: {
1350
- path: "/public/sites/{siteId}/dated-offerings/whole-series/check-eligibility",
1351
- method: "POST",
1352
- tags: [TAG_TEMPLATES.publicWholeSeriesOfferings, "course-enrollment"],
1353
- errors: [
1354
- "auth:unauthenticated",
1355
- "resource:not_found",
1356
- "resource:conflict",
1357
- "server:internal_error"
1358
- ],
1359
- auth: "public",
1360
- responseKind: "json"
1361
- },
1362
- createWholeSeriesCheckout: {
1363
- path: "/public/sites/{siteId}/dated-offerings/whole-series/checkout",
1247
+ }
1248
+ });
1249
+ //#endregion
1250
+ //#region ../api/src/publicEventEndpointDefinitions.ts
1251
+ const PUBLIC_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1252
+ getPublicEventRegistrationOptions: {
1253
+ path: "/public/sites/{siteId}/events/registration-options",
1364
1254
  method: "POST",
1365
- tags: [TAG_TEMPLATES.publicWholeSeriesOfferings, "course-checkout"],
1255
+ tags: [TAG_TEMPLATES.publicEvents, "event-registration-options"],
1366
1256
  auth: "public",
1367
1257
  responseKind: "json",
1368
1258
  errors: [
1369
- "auth:unauthenticated",
1370
1259
  "validation:invalid_input",
1371
1260
  "resource:not_found",
1372
1261
  "resource:conflict",
1373
1262
  "server:internal_error"
1374
1263
  ]
1375
1264
  },
1376
- getWholeSeriesRegistrationStatus: {
1377
- path: "/public/sites/{siteId}/dated-offerings/whole-series/registration-status",
1265
+ resolveEventSubroute: {
1266
+ path: "/public/sites/{siteId}/events/subroutes/resolve",
1378
1267
  method: "GET",
1379
- tags: [TAG_TEMPLATES.publicWholeSeriesOfferings, "course-checkout"],
1380
- errors: ["resource:not_found", "server:internal_error"],
1268
+ revalidate: 60,
1269
+ tags: [TAG_TEMPLATES.publicEvents, "event-subroute"],
1381
1270
  auth: "public",
1382
- responseKind: "json"
1271
+ responseKind: "json",
1272
+ errors: []
1383
1273
  }
1384
1274
  });
1385
1275
  //#endregion
1386
- //#region ../api/src/publicEventEndpointDefinitions.ts
1387
- const PUBLIC_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({ resolveEventSubroute: {
1388
- path: "/public/sites/{siteId}/events/subroutes/resolve",
1389
- method: "GET",
1390
- revalidate: 60,
1391
- tags: [TAG_TEMPLATES.publicEvents, "event-subroute"],
1392
- auth: "public",
1393
- responseKind: "json",
1394
- errors: []
1395
- } });
1396
- //#endregion
1397
1276
  //#region ../api/src/siteApiKeyEndpointDefinitions.ts
1398
1277
  const SITE_API_KEY_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1399
1278
  listSiteApiKeys: {
@@ -2290,7 +2169,7 @@ const API_ENDPOINTS$1 = {
2290
2169
  },
2291
2170
  ...NEWSLETTER_ENDPOINT_DEFINITIONS,
2292
2171
  ...APPOINTMENT_ENDPOINT_DEFINITIONS,
2293
- ...COURSE_ENDPOINT_DEFINITIONS,
2172
+ ...EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS,
2294
2173
  getSite: {
2295
2174
  path: "/sites",
2296
2175
  method: "GET",
@@ -5604,13 +5483,13 @@ const API_ENDPOINTS$1 = {
5604
5483
  "server:internal_error"
5605
5484
  ]
5606
5485
  },
5607
- refundCourseEnrollment: {
5608
- path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments/{enrollmentId}/refund",
5486
+ refundEventSeriesRegistration: {
5487
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations/{registrationId}/refund",
5609
5488
  method: "POST",
5610
5489
  tags: [
5611
5490
  "site-{siteId}",
5612
- "course-{courseId}",
5613
- "course-enrollment-{enrollmentId}",
5491
+ "event-series-{seriesId}",
5492
+ "event-series-registration-{registrationId}",
5614
5493
  "bookings"
5615
5494
  ],
5616
5495
  auth: "user",
@@ -5633,13 +5512,13 @@ const API_ENDPOINTS$1 = {
5633
5512
  auth: "user",
5634
5513
  responseKind: "json"
5635
5514
  },
5636
- listCourseEnrollmentRefunds: {
5637
- path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments/{enrollmentId}/refunds",
5515
+ listEventSeriesRegistrationRefunds: {
5516
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations/{registrationId}/refunds",
5638
5517
  method: "GET",
5639
5518
  tags: [
5640
5519
  "site-{siteId}",
5641
- "course-{courseId}",
5642
- "course-enrollment-{enrollmentId}",
5520
+ "event-series-{seriesId}",
5521
+ "event-series-registration-{registrationId}",
5643
5522
  "bookings"
5644
5523
  ],
5645
5524
  auth: "user",
@@ -7328,14 +7207,14 @@ const API_ENDPOINTS$1 = {
7328
7207
  errors: ["server:internal_error"]
7329
7208
  },
7330
7209
  portalGetWholeSeriesBookingQuestions: {
7331
- path: "/portal/dated-offerings/whole-series/{enrollmentId}/booking-questions",
7210
+ path: "/portal/dated-offerings/whole-series/{registrationId}/booking-questions",
7332
7211
  method: "GET",
7333
7212
  auth: "public",
7334
7213
  responseKind: "json",
7335
7214
  errors: ["resource:not_found", "server:internal_error"]
7336
7215
  },
7337
7216
  portalUpdateWholeSeriesBookingQuestions: {
7338
- path: "/portal/dated-offerings/whole-series/{enrollmentId}/booking-questions",
7217
+ path: "/portal/dated-offerings/whole-series/{registrationId}/booking-questions",
7339
7218
  method: "PUT",
7340
7219
  auth: "public",
7341
7220
  responseKind: "json",
@@ -7346,7 +7225,7 @@ const API_ENDPOINTS$1 = {
7346
7225
  ]
7347
7226
  },
7348
7227
  portalCreateWholeSeriesBookingQuestionsUploadUrl: {
7349
- path: "/portal/dated-offerings/whole-series/{enrollmentId}/booking-questions/upload-url",
7228
+ path: "/portal/dated-offerings/whole-series/{registrationId}/booking-questions/upload-url",
7350
7229
  method: "POST",
7351
7230
  auth: "public",
7352
7231
  responseKind: "json",
@@ -7357,7 +7236,7 @@ const API_ENDPOINTS$1 = {
7357
7236
  ]
7358
7237
  },
7359
7238
  portalFinalizeWholeSeriesBookingQuestionsUpload: {
7360
- path: "/portal/dated-offerings/whole-series/{enrollmentId}/booking-questions/upload",
7239
+ path: "/portal/dated-offerings/whole-series/{registrationId}/booking-questions/upload",
7361
7240
  method: "POST",
7362
7241
  auth: "public",
7363
7242
  responseKind: "json",
@@ -7368,7 +7247,7 @@ const API_ENDPOINTS$1 = {
7368
7247
  ]
7369
7248
  },
7370
7249
  portalCancelWholeSeriesRegistration: {
7371
- path: "/portal/dated-offerings/whole-series/{enrollmentId}/cancel",
7250
+ path: "/portal/dated-offerings/whole-series/{registrationId}/cancel",
7372
7251
  method: "POST",
7373
7252
  auth: "public",
7374
7253
  responseKind: "json",
@@ -8196,7 +8075,7 @@ var SimpleCache = class {
8196
8075
  * 1. This constant
8197
8076
  * 2. The "version" field in package.json
8198
8077
  */
8199
- const SDK_VERSION = "0.132.0";
8078
+ const SDK_VERSION = "0.135.0";
8200
8079
  //#endregion
8201
8080
  //#region src/client/error.ts
8202
8081
  let _Symbol$for;
@@ -10795,14 +10674,14 @@ function publicEventPricingType(pricing) {
10795
10674
  case "single_paid":
10796
10675
  case "ticket_types":
10797
10676
  case "sliding_scale":
10798
- case "course": return isFreePublicEventPriceDisplay(pricing.display) ? "free" : "paid";
10677
+ case "whole_series": return isFreePublicEventPriceDisplay(pricing.display) ? "free" : "paid";
10799
10678
  case "external": return "external";
10800
10679
  }
10801
10680
  }
10802
10681
  function isFreePublicEventPriceDisplay(display) {
10803
10682
  switch (display.kind) {
10804
10683
  case "free": return true;
10805
- case "course": return display.display.kind === "free";
10684
+ case "whole_series": return display.display.kind === "free";
10806
10685
  case "exact":
10807
10686
  case "from":
10808
10687
  case "range":
@@ -11091,6 +10970,25 @@ function parseManagementKey(raw) {
11091
10970
  return ok$1(createSecretInternal("management-key", raw));
11092
10971
  }
11093
10972
  //#endregion
10973
+ //#region ../core/src/planner.ts
10974
+ /** Default clock for production callers that do not inject time explicitly. */
10975
+ const systemPlanningClock = { now: () => Date.now() };
10976
+ /** Resolve current time as a Date from an explicit Date, injected clock, or system clock. */
10977
+ function resolvePlanningNowDate(input = {}) {
10978
+ if (input.now !== void 0) return input.now;
10979
+ return new Date((input.clock ?? systemPlanningClock).now());
10980
+ }
10981
+ /**
10982
+ * Resolve a Date-compatible planner input.
10983
+ *
10984
+ * Precedence: bare Date, `{ now }`, `{ clock }`, then `systemPlanningClock`.
10985
+ * Explicit Date inputs are returned by reference, not cloned.
10986
+ */
10987
+ function resolvePlanningDateInput(input = {}) {
10988
+ if (input instanceof Date) return input;
10989
+ return resolvePlanningNowDate(input);
10990
+ }
10991
+ //#endregion
11094
10992
  //#region ../core/src/event-series-behaviour.ts
11095
10993
  const SURFACE_EVENT_PRESET_VALUES = [
11096
10994
  "class",
@@ -11393,6 +11291,68 @@ z.object({
11393
11291
  monthlyCurrency: z.literal("gbp")
11394
11292
  });
11395
11293
  //#endregion
11294
+ //#region ../blocks/src/system/types/link.ts
11295
+ const nullableString = z.union([z.string().min(1), z.null()]);
11296
+ const RESOLVED_INTERNAL_LINK_ENTITY_TYPES = [
11297
+ "page",
11298
+ "content",
11299
+ "pageSurface"
11300
+ ];
11301
+ const resolvedInternalLinkKeys = [
11302
+ "entityId",
11303
+ "entityType",
11304
+ "href",
11305
+ "title",
11306
+ "typeLabel"
11307
+ ];
11308
+ const internalRouteOnlyLinkSchema = z.object({
11309
+ kind: z.literal("internal"),
11310
+ routeId: z.string().min(1)
11311
+ }).passthrough().superRefine((value, ctx) => {
11312
+ if (!resolvedInternalLinkKeys.some((key) => value[key] != null)) return;
11313
+ ctx.addIssue({
11314
+ code: "custom",
11315
+ message: "Internal links with resolved metadata must include entityId, entityType, href, title, and typeLabel"
11316
+ });
11317
+ });
11318
+ const internalResolvedLinkSchema = z.object({
11319
+ kind: z.literal("internal"),
11320
+ routeId: z.string().min(1),
11321
+ entityId: z.string().min(1),
11322
+ entityType: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
11323
+ href: z.string().min(1),
11324
+ title: z.string().min(1),
11325
+ typeLabel: z.string().min(1),
11326
+ contentTypeKey: nullableString.optional(),
11327
+ contentTypeName: nullableString.optional(),
11328
+ updatedAt: nullableString.optional()
11329
+ }).passthrough();
11330
+ const internalLinkSchema = z.union([internalResolvedLinkSchema, internalRouteOnlyLinkSchema]);
11331
+ const externalLinkSchema$1 = z.object({
11332
+ kind: z.literal("external"),
11333
+ href: z.string().min(1)
11334
+ }).passthrough();
11335
+ const customLinkSchema$1 = z.object({
11336
+ kind: z.literal("url"),
11337
+ href: z.string().min(1)
11338
+ }).passthrough();
11339
+ const pageLinkSchema$1 = z.object({
11340
+ kind: z.literal("page"),
11341
+ identifier: z.string().min(1)
11342
+ }).passthrough();
11343
+ const entryLinkSchema$1 = z.object({
11344
+ kind: z.literal("entry"),
11345
+ contentType: z.string().min(1),
11346
+ identifier: z.string().min(1)
11347
+ }).passthrough();
11348
+ z.union([
11349
+ internalLinkSchema,
11350
+ externalLinkSchema$1,
11351
+ customLinkSchema$1,
11352
+ pageLinkSchema$1,
11353
+ entryLinkSchema$1
11354
+ ]);
11355
+ //#endregion
11396
11356
  //#region ../api/src/navigation/contracts.ts
11397
11357
  /**
11398
11358
  * Canonical navigation/link Zod contracts.
@@ -11422,7 +11382,7 @@ const internalLinkPayloadSchema = z.object({
11422
11382
  kind: z.literal("internal"),
11423
11383
  routeId: z.string().uuid(),
11424
11384
  entityId: z.string().uuid(),
11425
- entityType: z.enum(["page", "content"]),
11385
+ entityType: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
11426
11386
  href: z.string().min(1),
11427
11387
  title: z.string().min(1),
11428
11388
  typeLabel: z.string().min(1),
@@ -19488,7 +19448,7 @@ defineBlockAppearancePreset({
19488
19448
  id: "schedule-details-brand-depth",
19489
19449
  target: "events",
19490
19450
  label: "Brand-depth schedule details",
19491
- blockKinds: ["block.event-details", "block.course-details"],
19451
+ blockKinds: ["block.event-details"],
19492
19452
  design: {
19493
19453
  sectionSurface: "brand-depth-band",
19494
19454
  contentFrame: plainFrame,
@@ -25670,7 +25630,6 @@ const productDetail = (props, children, ...mods) => el("product-detail", props,
25670
25630
  const cart = (props, children, ...mods) => el("cart", props, children, ...mods);
25671
25631
  const checkout = (props, children, ...mods) => el("checkout", props, children, ...mods);
25672
25632
  const gifting = (props, children, ...mods) => el("gifting", props, children, ...mods);
25673
- const courseRegistration = (props, children, ...mods) => el("course-registration", props, children, ...mods);
25674
25633
  function bind(from, options) {
25675
25634
  return (node) => ({
25676
25635
  ...node,
@@ -35340,12 +35299,12 @@ function isRichTextDoc(value) {
35340
35299
  }
35341
35300
  //#endregion
35342
35301
  //#region ../blocks/src/system/blocks/shared/bookingPaymentTerms.ts
35343
- const bookingDepositRefundPolicySchema = z.enum(["refundable", "non_refundable"]);
35344
- const bookingInstalmentPlanSchema = z.union([
35302
+ const bookingDepositRefundPolicySchema$1 = z.enum(["refundable", "non_refundable"]);
35303
+ const bookingInstalmentPlanSchema$1 = z.union([
35345
35304
  z.object({
35346
35305
  kind: z.literal("deposit_plus_one_remainder"),
35347
35306
  depositAmountCents: z.number().int().min(0),
35348
- depositRefundability: bookingDepositRefundPolicySchema,
35307
+ depositRefundability: bookingDepositRefundPolicySchema$1,
35349
35308
  remainderDueCount: z.number().int().positive(),
35350
35309
  intervalUnit: z.enum([
35351
35310
  "day",
@@ -35356,7 +35315,7 @@ const bookingInstalmentPlanSchema = z.union([
35356
35315
  z.object({
35357
35316
  kind: z.literal("deposit_plus_scheduled_instalments"),
35358
35317
  depositAmountCents: z.number().int().min(0),
35359
- depositRefundability: bookingDepositRefundPolicySchema,
35318
+ depositRefundability: bookingDepositRefundPolicySchema$1,
35360
35319
  instalmentCount: z.number().int().positive(),
35361
35320
  intervalCount: z.number().int().positive(),
35362
35321
  intervalUnit: z.enum([
@@ -35376,32 +35335,207 @@ const bookingInstalmentPlanSchema = z.union([
35376
35335
  ])
35377
35336
  })
35378
35337
  ]);
35379
- const bookingFlexibleBalanceDueDateRuleSchema = z.union([z.object({
35338
+ const bookingFlexibleBalanceDueDateRuleSchema$1 = z.union([z.object({
35380
35339
  kind: z.literal("relative_to_start_date"),
35381
35340
  daysBeforeStart: z.number().int().positive()
35382
35341
  }), z.object({
35383
35342
  kind: z.literal("fixed_calendar_date"),
35384
35343
  dueAt: z.string().datetime()
35385
35344
  })]);
35386
- const bookingFlexibleBalanceConfigSchema = z.object({
35345
+ const bookingFlexibleBalanceConfigSchema$1 = z.object({
35387
35346
  upfrontAmountCents: z.number().int().min(0),
35388
- dueDateRule: bookingFlexibleBalanceDueDateRuleSchema,
35389
- depositRefundability: bookingDepositRefundPolicySchema
35347
+ dueDateRule: bookingFlexibleBalanceDueDateRuleSchema$1,
35348
+ depositRefundability: bookingDepositRefundPolicySchema$1
35390
35349
  });
35391
35350
  const blockBookingPaymentCollectionOptionSchema = z.union([
35392
35351
  z.object({ kind: z.literal("upfront") }),
35393
35352
  z.object({ kind: z.literal("deferred_manual") }),
35394
35353
  z.object({
35395
35354
  kind: z.literal("instalment_plan"),
35396
- plan: bookingInstalmentPlanSchema
35355
+ plan: bookingInstalmentPlanSchema$1
35397
35356
  }),
35398
35357
  z.object({
35399
35358
  kind: z.literal("flexible_balance"),
35400
- config: bookingFlexibleBalanceConfigSchema
35359
+ config: bookingFlexibleBalanceConfigSchema$1
35401
35360
  })
35402
35361
  ]);
35403
35362
  const blockBookingPaymentTermsSchema = z.object({ allowedOptions: z.array(blockBookingPaymentCollectionOptionSchema).min(1) });
35404
35363
  //#endregion
35364
+ //#region ../blocks/src/system/blocks/shared/bookingConsent.ts
35365
+ const blockBookingConsentSchema = z.object({
35366
+ requirementId: z.string(),
35367
+ title: z.string(),
35368
+ agreement: RichTextDocSchema,
35369
+ checkboxLabel: z.string()
35370
+ });
35371
+ const bookingRequirementConsentFieldSchema = z.object({
35372
+ id: z.string(),
35373
+ label: z.string(),
35374
+ type: z.literal("booking_requirement_consent"),
35375
+ required: z.literal(true),
35376
+ agreement: RichTextDocSchema,
35377
+ checkboxLabel: z.string().min(1)
35378
+ });
35379
+ z.union([blockBookingConsentSchema, bookingRequirementConsentFieldSchema]);
35380
+ //#endregion
35381
+ //#region ../blocks/src/system/blocks/events/whole-series/pricing.ts
35382
+ function isSaleWindowOpen(option, now) {
35383
+ if (!option.isActive) return false;
35384
+ if (option.saleStartsAt && new Date(option.saleStartsAt) > now) return false;
35385
+ if (option.saleEndsAt && new Date(option.saleEndsAt) < now) return false;
35386
+ return true;
35387
+ }
35388
+ function toExactOrFreeDisplay(amount, currency) {
35389
+ if (amount <= 0) return {
35390
+ kind: "free",
35391
+ currency
35392
+ };
35393
+ return {
35394
+ kind: "exact",
35395
+ amount,
35396
+ currency
35397
+ };
35398
+ }
35399
+ function getSelectableWholeSeriesPricingOptionsForNow(offering, now) {
35400
+ if (offering.pricing.pricingStrategy !== "tiered") return [];
35401
+ return [...offering.pricing.options].filter((option) => isSaleWindowOpen(option, now)).sort((left, right) => {
35402
+ if (left.sortOrder !== right.sortOrder) return left.sortOrder - right.sortOrder;
35403
+ if (left.priceAmount !== right.priceAmount) return left.priceAmount - right.priceAmount;
35404
+ return left.name.localeCompare(right.name);
35405
+ });
35406
+ }
35407
+ function resolveWholeSeriesPricingState(offering, selectedPricingOptionId, selectedSlidingAmountOrNowInput, nowInput = {}) {
35408
+ const selection = normalizePricingSelectionInput(selectedSlidingAmountOrNowInput, nowInput);
35409
+ const currency = offering.pricing.currency;
35410
+ switch (offering.pricing.pricingStrategy) {
35411
+ case "free": return resolveFreePricing(currency);
35412
+ case "single": return resolveSinglePricing(offering.pricing.singlePriceAmount ?? 0, currency);
35413
+ case "tiered": return resolveTieredPricing(offering, selectedPricingOptionId, selection.nowInput);
35414
+ case "sliding_scale": return resolveSlidingScalePricing(offering, selection.selectedSlidingAmount);
35415
+ }
35416
+ }
35417
+ function normalizePricingSelectionInput(selectedSlidingAmountOrNowInput, nowInput) {
35418
+ return typeof selectedSlidingAmountOrNowInput === "object" && selectedSlidingAmountOrNowInput !== null ? {
35419
+ selectedSlidingAmount: null,
35420
+ nowInput: selectedSlidingAmountOrNowInput
35421
+ } : {
35422
+ selectedSlidingAmount: typeof selectedSlidingAmountOrNowInput === "number" || selectedSlidingAmountOrNowInput === null ? selectedSlidingAmountOrNowInput : null,
35423
+ nowInput
35424
+ };
35425
+ }
35426
+ function resolveFreePricing(currency) {
35427
+ return {
35428
+ currency,
35429
+ display: {
35430
+ kind: "free",
35431
+ currency
35432
+ },
35433
+ selectableOptions: [],
35434
+ requiresSelection: false,
35435
+ selectedOption: null,
35436
+ slidingScale: null,
35437
+ selectedSlidingAmount: null,
35438
+ selectedPriceAmount: 0,
35439
+ selectedRequiresPayment: false,
35440
+ hasPaidSelection: false,
35441
+ hasFreeSelection: true
35442
+ };
35443
+ }
35444
+ function resolveSinglePricing(amount, currency) {
35445
+ return {
35446
+ currency,
35447
+ display: toExactOrFreeDisplay(amount, currency),
35448
+ selectableOptions: [],
35449
+ requiresSelection: false,
35450
+ selectedOption: null,
35451
+ slidingScale: null,
35452
+ selectedSlidingAmount: null,
35453
+ selectedPriceAmount: amount,
35454
+ selectedRequiresPayment: amount > 0,
35455
+ hasPaidSelection: amount > 0,
35456
+ hasFreeSelection: amount <= 0
35457
+ };
35458
+ }
35459
+ function resolveTieredPricing(offering, selectedPricingOptionId, nowInput) {
35460
+ const currency = offering.pricing.currency;
35461
+ const selectableOptions = getSelectableWholeSeriesPricingOptionsForNow(offering, resolvePlanningDateInput(nowInput));
35462
+ const selectedOption = resolveSelectedTier(selectableOptions, selectedPricingOptionId);
35463
+ return {
35464
+ currency,
35465
+ display: resolveTieredDisplay(selectableOptions.reduce((lowest, option) => lowest === null || option.priceAmount < lowest ? option.priceAmount : lowest, null), selectableOptions.length, currency),
35466
+ selectableOptions,
35467
+ requiresSelection: selectableOptions.length > 1,
35468
+ selectedOption,
35469
+ slidingScale: null,
35470
+ selectedSlidingAmount: null,
35471
+ selectedPriceAmount: selectedOption?.priceAmount ?? null,
35472
+ selectedRequiresPayment: (selectedOption?.priceAmount ?? 0) > 0,
35473
+ hasPaidSelection: selectableOptions.some((option) => option.priceAmount > 0),
35474
+ hasFreeSelection: selectableOptions.some((option) => option.priceAmount === 0)
35475
+ };
35476
+ }
35477
+ function resolveSelectedTier(options, selectedId) {
35478
+ return (selectedId ? options.find((option) => option.id === selectedId) : null) ?? (options.length === 1 ? options[0] ?? null : null);
35479
+ }
35480
+ function resolveTieredDisplay(lowestAmount, optionCount, currency) {
35481
+ if (lowestAmount === null) return {
35482
+ kind: "unavailable",
35483
+ currency
35484
+ };
35485
+ return optionCount > 1 && lowestAmount > 0 ? {
35486
+ kind: "from",
35487
+ amount: lowestAmount,
35488
+ currency
35489
+ } : toExactOrFreeDisplay(lowestAmount, currency);
35490
+ }
35491
+ function resolveSlidingScalePricing(offering, selectedSlidingAmount) {
35492
+ const currency = offering.pricing.currency;
35493
+ const minAmount = offering.pricing.slidingMinAmount ?? null;
35494
+ const maxAmount = offering.pricing.slidingMaxAmount ?? null;
35495
+ if (minAmount === null || maxAmount === null || minAmount < 0 || maxAmount < minAmount) return unavailableSlidingScale(currency);
35496
+ const selectedAmount = Number.isFinite(selectedSlidingAmount) ? selectedSlidingAmount : null;
35497
+ return {
35498
+ currency,
35499
+ display: {
35500
+ kind: "range",
35501
+ minAmount,
35502
+ maxAmount,
35503
+ currency
35504
+ },
35505
+ selectableOptions: [],
35506
+ requiresSelection: selectedAmount === null,
35507
+ selectedOption: null,
35508
+ slidingScale: {
35509
+ minAmount,
35510
+ maxAmount,
35511
+ suggestedAmount: offering.pricing.slidingSuggestedAmount ?? null
35512
+ },
35513
+ selectedSlidingAmount: selectedAmount,
35514
+ selectedPriceAmount: selectedAmount,
35515
+ selectedRequiresPayment: (selectedAmount ?? 0) > 0,
35516
+ hasPaidSelection: maxAmount > 0,
35517
+ hasFreeSelection: minAmount === 0
35518
+ };
35519
+ }
35520
+ function unavailableSlidingScale(currency) {
35521
+ return {
35522
+ currency,
35523
+ display: {
35524
+ kind: "unavailable",
35525
+ currency
35526
+ },
35527
+ selectableOptions: [],
35528
+ requiresSelection: true,
35529
+ selectedOption: null,
35530
+ slidingScale: null,
35531
+ selectedSlidingAmount: null,
35532
+ selectedPriceAmount: null,
35533
+ selectedRequiresPayment: false,
35534
+ hasPaidSelection: false,
35535
+ hasFreeSelection: false
35536
+ };
35537
+ }
35538
+ //#endregion
35405
35539
  //#region ../blocks/src/system/blocks/events/whole-series/schemas.ts
35406
35540
  const wholeSeriesVenueSchema = z.object({
35407
35541
  id: z.string(),
@@ -35461,11 +35595,19 @@ const publicWholeSeriesOfferingSchema = z.object({
35461
35595
  title: z.string(),
35462
35596
  slug: z.string(),
35463
35597
  description: z.unknown().nullable(),
35598
+ deliveryMode: z.enum([
35599
+ "in_person",
35600
+ "online",
35601
+ "hybrid"
35602
+ ]),
35603
+ waitlistEnabled: z.boolean(),
35604
+ requireGuestDetails: z.boolean(),
35464
35605
  teamMembers: z.array(wholeSeriesTeamMemberSummarySchema).optional(),
35465
35606
  enrollmentOpen: z.boolean(),
35466
35607
  pricing: wholeSeriesPricingSchema,
35467
35608
  currency: z.string(),
35468
35609
  paymentTerms: blockBookingPaymentTermsSchema,
35610
+ consent: blockBookingConsentSchema.nullable(),
35469
35611
  enrollmentCapacity: z.number().nullable(),
35470
35612
  acceptsMemberships: z.boolean(),
35471
35613
  status: z.enum([
@@ -35575,7 +35717,7 @@ const mixedPriceDisplaySchema = z.object({
35575
35717
  paidToAmount: z.number(),
35576
35718
  currency: z.string()
35577
35719
  });
35578
- const publicCoursePriceDisplaySchema = z.discriminatedUnion("kind", [
35720
+ const publicWholeSeriesPriceDisplaySchema = z.discriminatedUnion("kind", [
35579
35721
  freePriceDisplaySchema,
35580
35722
  exactPriceDisplaySchema,
35581
35723
  fromPriceDisplaySchema,
@@ -35593,8 +35735,8 @@ z.discriminatedUnion("kind", [
35593
35735
  label: z.string()
35594
35736
  }),
35595
35737
  z.object({
35596
- kind: z.literal("course"),
35597
- display: publicCoursePriceDisplaySchema
35738
+ kind: z.literal("whole_series"),
35739
+ display: publicWholeSeriesPriceDisplaySchema
35598
35740
  })
35599
35741
  ]);
35600
35742
  const publicEventTicketTypePriceDisplaySchema = z.union([
@@ -35696,10 +35838,10 @@ const publicEventPricingSchema = z.discriminatedUnion("kind", [
35696
35838
  })
35697
35839
  }),
35698
35840
  z.object({
35699
- kind: z.literal("course"),
35841
+ kind: z.literal("whole_series"),
35700
35842
  display: z.object({
35701
- kind: z.literal("course"),
35702
- display: publicCoursePriceDisplaySchema
35843
+ kind: z.literal("whole_series"),
35844
+ display: publicWholeSeriesPriceDisplaySchema
35703
35845
  })
35704
35846
  }),
35705
35847
  z.object({
@@ -35783,6 +35925,7 @@ const publicEventSchema = z.object({
35783
35925
  timeZone: z.string(),
35784
35926
  pricing: publicEventPricingSchema,
35785
35927
  paymentTerms: blockBookingPaymentTermsSchema,
35928
+ consent: blockBookingConsentSchema.nullable(),
35786
35929
  accessRestriction: accessRestrictionSchema,
35787
35930
  allowedCategoryIds: z.array(z.string()),
35788
35931
  requireGuestDetails: z.boolean().optional(),
@@ -36115,7 +36258,8 @@ function resolveEventRegistrationScope(context) {
36115
36258
  };
36116
36259
  return { kind: "unscoped" };
36117
36260
  }
36118
- function applyEventRegistrationScope(events, scope) {
36261
+ function resolveEventRegistrationScopedEvents(events, context) {
36262
+ const scope = resolveEventRegistrationScope(context);
36119
36263
  switch (scope.kind) {
36120
36264
  case "occurrenceSeries":
36121
36265
  case "pageSurfaceSeries": return events.filter((event) => event.seriesId === scope.seriesId);
@@ -36127,8 +36271,24 @@ function applyEventRegistrationScope(events, scope) {
36127
36271
  case "unscoped": return [...events];
36128
36272
  }
36129
36273
  }
36130
- function resolveEventRegistrationScopedEvents(events, context) {
36131
- return applyEventRegistrationScope(events, resolveEventRegistrationScope(context));
36274
+ //#endregion
36275
+ //#region ../blocks/src/system/runtime/nodes/event-registration/registrationSurface.ts
36276
+ function planEventRegistrationScope(input) {
36277
+ const subject = input.subject;
36278
+ const selectedRunOffering = input.wholeSeriesOffering;
36279
+ if (subject?.kind !== "eventOffering" || !selectedRunOffering) return {
36280
+ kind: "context",
36281
+ events: resolveEventRegistrationScopedEvents(input.events, {
36282
+ occurrenceContext: input.occurrenceContext,
36283
+ subject
36284
+ })
36285
+ };
36286
+ if (!(selectedRunOffering.eventOfferingId === subject.eventOfferingId && subject.availableEventSeriesIds.some((seriesId) => seriesId === selectedRunOffering.eventSeriesId))) return { kind: "invalidSelectedRun" };
36287
+ return {
36288
+ kind: "selectedRun",
36289
+ events: input.events.filter((event) => event.seriesId === selectedRunOffering.eventSeriesId),
36290
+ offering: selectedRunOffering
36291
+ };
36132
36292
  }
36133
36293
  //#endregion
36134
36294
  //#region ../blocks/src/system/runtime/nodes/events/shared/destination.ts
@@ -36204,14 +36364,14 @@ function isRecord$9(value) {
36204
36364
  }
36205
36365
  function isPublicEventPricing(value) {
36206
36366
  if (!isRecord$9(value) || typeof value.kind !== "string") return false;
36207
- return value.kind === "drop_in" || value.kind === "free_registration" || value.kind === "single_paid" || value.kind === "sliding_scale" || value.kind === "ticket_types" || value.kind === "course" || value.kind === "external";
36367
+ return value.kind === "drop_in" || value.kind === "free_registration" || value.kind === "single_paid" || value.kind === "sliding_scale" || value.kind === "ticket_types" || value.kind === "whole_series" || value.kind === "external";
36208
36368
  }
36209
36369
  function isPublicEventTicketType(value) {
36210
36370
  return isRecord$9(value) && typeof value.id === "string";
36211
36371
  }
36212
36372
  function readTicketTypePriceDisplay(value, currency) {
36213
36373
  const display = readLegacyPriceDisplay(value, currency);
36214
- return display.kind === "course" || display.kind === "external" ? {
36374
+ return display.kind === "whole_series" || display.kind === "external" ? {
36215
36375
  kind: "unavailable",
36216
36376
  currency
36217
36377
  } : display;
@@ -36269,11 +36429,11 @@ function readLegacyPriceDisplay(value, currency) {
36269
36429
  kind: "unavailable",
36270
36430
  currency: displayCurrency
36271
36431
  };
36272
- case "course": return isRecord$9(value.display) ? {
36273
- kind: "course",
36432
+ case "whole_series": return isRecord$9(value.display) ? {
36433
+ kind: "whole_series",
36274
36434
  display: readCoursePriceDisplay(value.display, displayCurrency)
36275
36435
  } : {
36276
- kind: "course",
36436
+ kind: "whole_series",
36277
36437
  display: {
36278
36438
  kind: "unavailable",
36279
36439
  currency: displayCurrency
@@ -36399,7 +36559,7 @@ function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep) {
36399
36559
  //#endregion
36400
36560
  //#region ../blocks/src/system/runtime/nodes/event-registration/registrationDerivations.ts
36401
36561
  function eventMatchesOccurrenceId(event, occurrenceId) {
36402
- return event.registrationOccurrenceId === occurrenceId || event.publicEventId === occurrenceId;
36562
+ return event.registrationSubject.kind === "occurrence" && (event.registrationSubject.occurrenceId === occurrenceId || event.selectionId === occurrenceId);
36403
36563
  }
36404
36564
  function findPreSelectedEvent(input) {
36405
36565
  const occurrenceContext = input.occurrenceContext;
@@ -36425,12 +36585,127 @@ function toRegistrationEvent(event) {
36425
36585
  return {
36426
36586
  ...event,
36427
36587
  pricing: resolveRuntimeEventPricing(event),
36428
- publicEventId: event.id,
36429
- registrationOccurrenceId: event.occurrenceId
36588
+ selectionId: event.id,
36589
+ registrationSubject: {
36590
+ kind: "occurrence",
36591
+ occurrenceId: event.occurrenceId
36592
+ }
36430
36593
  };
36431
36594
  }
36432
36595
  function toRegistrationEvents(events) {
36433
- return events.map(toRegistrationEvent);
36596
+ return events.filter((event) => event.bookingScope === "single_occurrence").map(toRegistrationEvent);
36597
+ }
36598
+ function toWholeSeriesTicketType(option) {
36599
+ return {
36600
+ ...option,
36601
+ capacityMode: option.capacityLimit === null ? "unlimited" : "limited",
36602
+ attendanceScope: option.attendanceScope ?? void 0,
36603
+ availability: {
36604
+ kind: "available",
36605
+ remainingCapacity: option.capacityLimit
36606
+ }
36607
+ };
36608
+ }
36609
+ function toWholeSeriesPricing(offering) {
36610
+ const resolved = resolveWholeSeriesPricingState(offering);
36611
+ switch (offering.pricing.pricingStrategy) {
36612
+ case "free": return {
36613
+ kind: "free_registration",
36614
+ currency: offering.currency,
36615
+ display: {
36616
+ kind: "free",
36617
+ currency: offering.currency
36618
+ }
36619
+ };
36620
+ case "single": {
36621
+ const amount = offering.pricing.singlePriceAmount ?? 0;
36622
+ return amount === 0 ? {
36623
+ kind: "free_registration",
36624
+ currency: offering.currency,
36625
+ display: {
36626
+ kind: "free",
36627
+ currency: offering.currency
36628
+ }
36629
+ } : {
36630
+ kind: "single_paid",
36631
+ amount,
36632
+ currency: offering.currency,
36633
+ display: {
36634
+ kind: "exact",
36635
+ amount,
36636
+ currency: offering.currency
36637
+ }
36638
+ };
36639
+ }
36640
+ case "tiered": return {
36641
+ kind: "ticket_types",
36642
+ currency: offering.currency,
36643
+ ticketTypes: resolved.selectableOptions.map((option) => toWholeSeriesTicketType(option)),
36644
+ display: resolved.display
36645
+ };
36646
+ case "sliding_scale": return {
36647
+ kind: "sliding_scale",
36648
+ minAmount: offering.pricing.slidingMinAmount ?? 0,
36649
+ maxAmount: offering.pricing.slidingMaxAmount ?? 0,
36650
+ suggestedAmount: offering.pricing.slidingSuggestedAmount ?? null,
36651
+ currency: offering.currency,
36652
+ display: {
36653
+ kind: "range",
36654
+ minAmount: offering.pricing.slidingMinAmount ?? 0,
36655
+ maxAmount: offering.pricing.slidingMaxAmount ?? 0,
36656
+ currency: offering.currency
36657
+ }
36658
+ };
36659
+ }
36660
+ }
36661
+ function toAttendanceModes(offering) {
36662
+ return (offering.deliveryMode === "hybrid" ? ["in_person", "online"] : [offering.deliveryMode]).map((mode) => ({
36663
+ mode,
36664
+ capacity: offering.enrollmentCapacity,
36665
+ registeredCount: offering.enrolledCount,
36666
+ availableSpots: offering.availableSpots,
36667
+ waitlistEnabled: offering.waitlistEnabled
36668
+ }));
36669
+ }
36670
+ function toWholeSeriesRegistrationEvent(offering) {
36671
+ const firstSession = offering.sessions[0];
36672
+ const lastSession = offering.sessions[offering.sessions.length - 1];
36673
+ return {
36674
+ selectionId: offering.eventSeriesId,
36675
+ registrationSubject: {
36676
+ kind: "wholeSeries",
36677
+ eventSeriesId: offering.eventSeriesId,
36678
+ sessions: offering.sessions
36679
+ },
36680
+ seriesId: offering.eventSeriesId,
36681
+ title: offering.title,
36682
+ startsAt: firstSession?.startsAt ?? "",
36683
+ endsAt: lastSession?.endsAt ?? firstSession?.endsAt ?? "",
36684
+ bookingAvailability: offering.enrollmentOpen ? { kind: "open" } : {
36685
+ kind: "closed",
36686
+ reason: "enrollment_closed"
36687
+ },
36688
+ deliveryMode: offering.deliveryMode,
36689
+ attendanceModes: toAttendanceModes(offering),
36690
+ capacity: offering.enrollmentCapacity,
36691
+ registeredCount: offering.enrolledCount,
36692
+ availableSpots: offering.availableSpots,
36693
+ waitlistEnabled: offering.waitlistEnabled,
36694
+ venue: offering.venue ? {
36695
+ ...offering.venue,
36696
+ location: null
36697
+ } : null,
36698
+ eventCategory: null,
36699
+ teamMembers: offering.teamMembers,
36700
+ status: offering.status,
36701
+ timeZone: firstSession?.timeZone ?? "UTC",
36702
+ pricing: toWholeSeriesPricing(offering),
36703
+ paymentTerms: offering.paymentTerms,
36704
+ consent: offering.consent,
36705
+ requireGuestDetails: offering.requireGuestDetails,
36706
+ acceptsPasses: false,
36707
+ acceptsMemberships: offering.acceptsMemberships
36708
+ };
36434
36709
  }
36435
36710
  //#endregion
36436
36711
  //#region ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
@@ -36456,11 +36731,7 @@ const eventRegistrationHydrationSchemaShape = {
36456
36731
  maxTickets: z.string().optional(),
36457
36732
  showVenue: z.boolean().optional(),
36458
36733
  showCapacity: z.boolean().optional(),
36459
- showSessions: z.boolean().optional(),
36460
- showPrice: z.boolean().optional(),
36461
36734
  successMessage: z.string().optional(),
36462
- waitlistMessage: z.string().optional(),
36463
- membershipMessage: z.string().optional(),
36464
36735
  buttonVariant: registrationButtonVariantSchema.optional(),
36465
36736
  overlayEnabled: z.boolean().optional(),
36466
36737
  spamProtectionEnabled: z.boolean().optional(),
@@ -36530,6 +36801,15 @@ function resolveWholeSeriesOffering(source) {
36530
36801
  return source.wholeSeriesOffering ?? source.subjectWholeSeriesOffering ?? null;
36531
36802
  }
36532
36803
  function buildEventRegistrationShellStepLabels(source) {
36804
+ const selectedOffering = resolveWholeSeriesOffering(source);
36805
+ if (selectedOffering) {
36806
+ const selectedEvent = toWholeSeriesRegistrationEvent(selectedOffering);
36807
+ return getWizardStepsForContext(true, resolveEventRequiresPayment({
36808
+ eligibility: null,
36809
+ selectedTicketType: null,
36810
+ event: selectedEvent
36811
+ })).map((step) => shellLabelForRegistrationStep(step, [selectedEvent]));
36812
+ }
36533
36813
  const scopedEvents = scopeEventRegistrationEvents(source);
36534
36814
  if (scopedEvents.length === 0) return EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
36535
36815
  const preSelectedEvent = findPreSelectedEvent({
@@ -36544,10 +36824,13 @@ function buildEventRegistrationShellStepLabels(source) {
36544
36824
  }) : false).map((step) => shellLabelForRegistrationStep(step, scopedEvents));
36545
36825
  }
36546
36826
  function scopeEventRegistrationEvents(source) {
36547
- return resolveEventRegistrationScopedEvents(toRegistrationEvents(source.events ?? []), {
36827
+ const scope = planEventRegistrationScope({
36828
+ events: toRegistrationEvents(source.events ?? []),
36829
+ wholeSeriesOffering: source.wholeSeriesOffering,
36548
36830
  occurrenceContext: source.occurrenceContext,
36549
36831
  subject: source.subject
36550
36832
  });
36833
+ return scope.kind === "invalidSelectedRun" ? [] : scope.events;
36551
36834
  }
36552
36835
  function shellLabelForRegistrationStep(step, events) {
36553
36836
  switch (step) {
@@ -36590,11 +36873,7 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
36590
36873
  maxTickets: source.maxTickets ?? void 0,
36591
36874
  showVenue: source.showVenue,
36592
36875
  showCapacity: source.showCapacity,
36593
- showSessions: source.showSessions,
36594
- showPrice: source.showPrice,
36595
36876
  successMessage: source.successMessage,
36596
- waitlistMessage: source.waitlistMessage,
36597
- membershipMessage: source.membershipMessage,
36598
36877
  buttonVariant: source.buttonVariant,
36599
36878
  overlayEnabled: source.overlayEnabled,
36600
36879
  spamProtectionEnabled: source.spamProtectionEnabled,
@@ -36710,24 +36989,6 @@ const eventRegistrationBlockDefinition = {
36710
36989
  defaultValue: true,
36711
36990
  ui: { intent: "display" }
36712
36991
  },
36713
- {
36714
- id: "showSessions",
36715
- type: "boolean",
36716
- label: "Show complete schedule",
36717
- description: "Display every session for whole-series registrations",
36718
- required: false,
36719
- defaultValue: true,
36720
- ui: { intent: "display" }
36721
- },
36722
- {
36723
- id: "showPrice",
36724
- type: "boolean",
36725
- label: "Show price",
36726
- description: "Display the whole-series price",
36727
- required: false,
36728
- defaultValue: true,
36729
- ui: { intent: "display" }
36730
- },
36731
36992
  {
36732
36993
  id: "successMessage",
36733
36994
  type: "text",
@@ -36738,26 +36999,6 @@ const eventRegistrationBlockDefinition = {
36738
36999
  defaultValue: "Thank you for registering! Check your email for confirmation details.",
36739
37000
  maxLength: 500
36740
37001
  },
36741
- {
36742
- id: "waitlistMessage",
36743
- type: "text",
36744
- label: "Waitlist message",
36745
- description: "Message shown after joining a whole-series waitlist",
36746
- required: false,
36747
- multiline: true,
36748
- defaultValue: "You've been added to the waitlist. We'll email you if a place becomes available.",
36749
- maxLength: 500
36750
- },
36751
- {
36752
- id: "membershipMessage",
36753
- type: "text",
36754
- label: "Membership registration message",
36755
- description: "Message shown when a whole-series place is covered by membership",
36756
- required: false,
36757
- multiline: true,
36758
- defaultValue: "Registered using your membership. Check your email for session details.",
36759
- maxLength: 500
36760
- },
36761
37002
  {
36762
37003
  id: "buttonText",
36763
37004
  type: "text",
@@ -36789,11 +37030,7 @@ const eventRegistrationBlockDefinition = {
36789
37030
  } },
36790
37031
  showVenue: { $bind: { from: "content.showVenue" } },
36791
37032
  showCapacity: { $bind: { from: "content.showCapacity" } },
36792
- showSessions: { $bind: { from: "content.showSessions" } },
36793
- showPrice: { $bind: { from: "content.showPrice" } },
36794
37033
  successMessage: { $bind: { from: "content.successMessage" } },
36795
- waitlistMessage: { $bind: { from: "content.waitlistMessage" } },
36796
- membershipMessage: { $bind: { from: "content.membershipMessage" } },
36797
37034
  buttonText: { $bind: {
36798
37035
  from: "content.buttonText",
36799
37036
  fallback: "Complete Registration"
@@ -36910,254 +37147,6 @@ const eventRegistrationBlockDefinition = {
36910
37147
  }
36911
37148
  };
36912
37149
  //#endregion
36913
- //#region ../blocks/src/system/runtime/nodes/course-registration.interactive.ts
36914
- const courseRegistrationHydrationSchemaShape = {
36915
- subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
36916
- courses: z.array(publicWholeSeriesOfferingSchema).nullable().optional(),
36917
- showSessions: z.boolean().optional(),
36918
- showPrice: z.boolean().optional(),
36919
- showCapacity: z.boolean().optional(),
36920
- showVenue: z.boolean().optional(),
36921
- successMessage: z.string().optional(),
36922
- waitlistMessage: z.string().optional(),
36923
- membershipMessage: z.string().optional(),
36924
- buttonVariant: registrationButtonVariantSchema.optional()
36925
- };
36926
- const courseRegistrationSourceSchema = z.object({
36927
- siteId: z.string().optional(),
36928
- apiBaseUrl: z.string().optional(),
36929
- portalToken: z.string().nullable().optional(),
36930
- ...courseRegistrationHydrationSchemaShape,
36931
- className: z.string().nullable().optional(),
36932
- buttonText: z.string().nullable().optional(),
36933
- stage: previewStageSchema.optional()
36934
- });
36935
- const courseRegistrationDisplaySchema = z.object({
36936
- kind: z.literal("course-registration"),
36937
- state: z.literal("shell"),
36938
- className: z.string().nullable(),
36939
- summaryButtonText: z.string()
36940
- });
36941
- const courseRegistrationHydrationSchema = z.object(courseRegistrationHydrationSchemaShape);
36942
- const courseRegistrationRenderSchema = z.object({
36943
- display: courseRegistrationDisplaySchema,
36944
- hydration: courseRegistrationHydrationSchema
36945
- });
36946
- z.object({
36947
- siteId: z.string().optional(),
36948
- apiBaseUrl: z.string().optional(),
36949
- portalToken: z.string().nullable().optional(),
36950
- stage: previewStageSchema.optional()
36951
- });
36952
- function buildCourseRegistrationDisplay(source) {
36953
- return {
36954
- kind: "course-registration",
36955
- state: "shell",
36956
- className: source.className ?? null,
36957
- summaryButtonText: source.buttonText?.trim() || "Sign up"
36958
- };
36959
- }
36960
- const courseRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
36961
- kind: "client-owned",
36962
- contracts: {
36963
- source: createZodCodec(courseRegistrationSourceSchema),
36964
- render: createZodCodec(courseRegistrationRenderSchema)
36965
- },
36966
- buildRender: (source) => ({
36967
- display: buildCourseRegistrationDisplay(source),
36968
- hydration: {
36969
- subject: source.subject ?? null,
36970
- courses: source.courses ?? null,
36971
- showSessions: source.showSessions,
36972
- showPrice: source.showPrice,
36973
- showCapacity: source.showCapacity,
36974
- showVenue: source.showVenue,
36975
- successMessage: source.successMessage,
36976
- waitlistMessage: source.waitlistMessage,
36977
- membershipMessage: source.membershipMessage,
36978
- buttonVariant: source.buttonVariant
36979
- }
36980
- })
36981
- });
36982
- const courseRegistrationBlockDefinition = {
36983
- manifest: createBlockManifest({
36984
- id: "block.course-registration",
36985
- version: "1.0.0",
36986
- title: "Course Registration",
36987
- titleSource: "heading",
36988
- description: "Enrollment form for multi-session courses",
36989
- category: "interactive",
36990
- contentSource: { kind: "inline" },
36991
- tags: [
36992
- "courses",
36993
- "enrollment",
36994
- "booking",
36995
- "form",
36996
- "signup",
36997
- "education"
36998
- ],
36999
- icon: "GraduationCap",
37000
- styleTokens: {
37001
- background: "surface",
37002
- typography: "body",
37003
- spacing: "md"
37004
- },
37005
- behaviours: {
37006
- supportsThemeSwitching: true,
37007
- inlineEditing: false,
37008
- animation: false,
37009
- paletteHidden: false
37010
- },
37011
- additionalFields: [
37012
- {
37013
- id: "heading",
37014
- type: "text",
37015
- label: "Heading",
37016
- description: "Main heading for the registration form",
37017
- required: false,
37018
- multiline: false,
37019
- defaultValue: "Sign up"
37020
- },
37021
- {
37022
- id: "description",
37023
- type: "richText",
37024
- label: "Description",
37025
- description: "Optional introductory text",
37026
- required: false
37027
- },
37028
- {
37029
- id: "showSessions",
37030
- type: "boolean",
37031
- label: "Show sessions",
37032
- description: "Display the list of course sessions",
37033
- required: false,
37034
- defaultValue: true,
37035
- ui: { intent: "display" }
37036
- },
37037
- {
37038
- id: "showPrice",
37039
- type: "boolean",
37040
- label: "Show price",
37041
- description: "Display the course price",
37042
- required: false,
37043
- defaultValue: true,
37044
- ui: { intent: "display" }
37045
- },
37046
- {
37047
- id: "showCapacity",
37048
- type: "boolean",
37049
- label: "Show available spots",
37050
- description: "Display remaining enrollment capacity",
37051
- required: false,
37052
- defaultValue: true,
37053
- ui: { intent: "display" }
37054
- },
37055
- {
37056
- id: "showVenue",
37057
- type: "boolean",
37058
- label: "Show venue",
37059
- description: "Display venue information",
37060
- required: false,
37061
- defaultValue: true,
37062
- ui: { intent: "display" }
37063
- },
37064
- {
37065
- id: "successMessage",
37066
- type: "text",
37067
- label: "Success message",
37068
- description: "Message shown after successful enrollment",
37069
- required: false,
37070
- multiline: true,
37071
- defaultValue: "You're enrolled! Check your email for confirmation and session details.",
37072
- maxLength: 500
37073
- },
37074
- {
37075
- id: "waitlistMessage",
37076
- type: "text",
37077
- label: "Waitlist message",
37078
- description: "Message when added to waitlist",
37079
- required: false,
37080
- multiline: true,
37081
- defaultValue: "You've been added to the waitlist. We'll email you a claim link if a spot opens up.",
37082
- maxLength: 500
37083
- },
37084
- {
37085
- id: "membershipMessage",
37086
- type: "text",
37087
- label: "Membership enrollment message",
37088
- description: "Message when enrolled using a membership",
37089
- required: false,
37090
- multiline: true,
37091
- defaultValue: "Enrolled using your membership! Check your email for session details.",
37092
- maxLength: 500
37093
- },
37094
- {
37095
- id: "buttonText",
37096
- type: "text",
37097
- label: "Submit button text",
37098
- description: "Text for the enrollment submit button",
37099
- required: false,
37100
- multiline: false,
37101
- defaultValue: "Sign up",
37102
- maxLength: 40
37103
- },
37104
- createButtonVariantField()
37105
- ],
37106
- layout: [styledSection({
37107
- baseClass: "",
37108
- spacing: "spacious",
37109
- children: sectionContainer([
37110
- text({ as: "h2" }, bind("content.heading"), when("content.heading")),
37111
- richText({ className: "rb-prose rb-max-w-none" }, bind("content.description"), when("content.description")),
37112
- courseRegistration(withApiBindings({
37113
- subject: { $bind: {
37114
- from: "$root.subject",
37115
- fallback: null
37116
- } },
37117
- portalToken: { $bind: {
37118
- from: "$root.portalToken",
37119
- fallback: null
37120
- } },
37121
- showSessions: { $bind: { from: "content.showSessions" } },
37122
- showPrice: { $bind: { from: "content.showPrice" } },
37123
- showCapacity: { $bind: { from: "content.showCapacity" } },
37124
- showVenue: { $bind: { from: "content.showVenue" } },
37125
- successMessage: { $bind: { from: "content.successMessage" } },
37126
- waitlistMessage: { $bind: { from: "content.waitlistMessage" } },
37127
- membershipMessage: { $bind: { from: "content.membershipMessage" } },
37128
- buttonText: { $bind: {
37129
- from: "content.buttonText",
37130
- fallback: "Sign up"
37131
- } },
37132
- buttonVariant: { $bind: {
37133
- from: "content.buttonVariant",
37134
- fallback: "primary"
37135
- } },
37136
- courses: { $bind: { from: "data.courses" } },
37137
- stage: { $bind: {
37138
- from: "$root.previewStage",
37139
- fallback: "published"
37140
- } }
37141
- }))
37142
- ], { gap: "lg" })
37143
- })]
37144
- }),
37145
- runtime: courseRegistrationBlockRuntime,
37146
- dataSchemas: { courses: publicWholeSeriesOfferingsArraySchema.optional() },
37147
- dataLoaders: { courses: {
37148
- endpoint: "listPublicWholeSeriesOfferings",
37149
- params: {
37150
- siteId: { $bind: { from: "$root.siteId" } },
37151
- limit: "50",
37152
- stage: { $bind: {
37153
- from: "$root.previewStage",
37154
- fallback: "published"
37155
- } }
37156
- },
37157
- mode: "server"
37158
- } }
37159
- };
37160
- //#endregion
37161
37150
  //#region ../blocks/src/system/blocks/event-details.ts
37162
37151
  /**
37163
37152
  * Event Details Block
@@ -37404,200 +37393,6 @@ const eventDetailsBlockDefinition = {
37404
37393
  mode: "server"
37405
37394
  } }
37406
37395
  };
37407
- const courseDetailsBlockDefinition = {
37408
- manifest: createBlockManifest({
37409
- id: "block.course-details",
37410
- version: "1.0.0",
37411
- title: "Course Details",
37412
- titleSource: "heading",
37413
- description: "Schedule, venue, price, and enrollment status for a course",
37414
- category: "content",
37415
- contentSource: { kind: "entries" },
37416
- tags: [
37417
- "courses",
37418
- "schedule",
37419
- "sessions",
37420
- "venue",
37421
- "pricing"
37422
- ],
37423
- icon: "GraduationCap",
37424
- styleTokens: {
37425
- background: "surface",
37426
- typography: "body",
37427
- spacing: "md"
37428
- },
37429
- behaviours: {
37430
- supportsThemeSwitching: true,
37431
- inlineEditing: false,
37432
- animation: false,
37433
- paletteHidden: false
37434
- },
37435
- additionalFields: [
37436
- {
37437
- id: "heading",
37438
- type: "text",
37439
- label: "Heading",
37440
- description: "Optional heading shown above course details",
37441
- required: false,
37442
- multiline: false,
37443
- defaultValue: "Course details"
37444
- },
37445
- {
37446
- id: "showTitle",
37447
- type: "boolean",
37448
- label: "Show course title",
37449
- required: false,
37450
- defaultValue: false,
37451
- ui: { intent: "display" }
37452
- },
37453
- {
37454
- id: "showDescription",
37455
- type: "boolean",
37456
- label: "Show course description",
37457
- description: "Render the course description from the bookings course record",
37458
- required: false,
37459
- defaultValue: false,
37460
- ui: { intent: "display" }
37461
- },
37462
- {
37463
- id: "showSessions",
37464
- type: "boolean",
37465
- label: "Show sessions",
37466
- required: false,
37467
- defaultValue: true,
37468
- ui: { intent: "display" }
37469
- },
37470
- {
37471
- id: "sessionsLimit",
37472
- type: "select",
37473
- label: "Sessions limit",
37474
- required: false,
37475
- multiple: false,
37476
- defaultValue: "10",
37477
- options: [
37478
- {
37479
- value: "3",
37480
- label: "3 sessions"
37481
- },
37482
- {
37483
- value: "5",
37484
- label: "5 sessions"
37485
- },
37486
- {
37487
- value: "10",
37488
- label: "10 sessions"
37489
- },
37490
- {
37491
- value: "all",
37492
- label: "All sessions"
37493
- }
37494
- ],
37495
- ui: { intent: "display" }
37496
- },
37497
- {
37498
- id: "showVenue",
37499
- type: "boolean",
37500
- label: "Show venue",
37501
- required: false,
37502
- defaultValue: true,
37503
- ui: { intent: "display" }
37504
- },
37505
- {
37506
- id: "showPrice",
37507
- type: "boolean",
37508
- label: "Show price",
37509
- required: false,
37510
- defaultValue: true,
37511
- ui: { intent: "display" }
37512
- },
37513
- {
37514
- id: "showCapacity",
37515
- type: "boolean",
37516
- label: "Show capacity",
37517
- required: false,
37518
- defaultValue: true,
37519
- ui: { intent: "display" }
37520
- },
37521
- {
37522
- id: "showEnrollmentStatus",
37523
- type: "boolean",
37524
- label: "Show enrollment status",
37525
- required: false,
37526
- defaultValue: true,
37527
- ui: { intent: "display" }
37528
- },
37529
- {
37530
- id: "showMembershipNote",
37531
- type: "boolean",
37532
- label: "Show membership note",
37533
- description: "Indicate when memberships can be used for free enrollment",
37534
- required: false,
37535
- defaultValue: true,
37536
- ui: { intent: "display" }
37537
- }
37538
- ],
37539
- layout: [styledSection({
37540
- baseClass: "",
37541
- spacing: "spacious",
37542
- children: sectionContainer([text({ as: "h2" }, bind("content.heading"), when("content.heading")), el("course-details", {
37543
- subject: { $bind: {
37544
- from: "$root.subject",
37545
- fallback: null
37546
- } },
37547
- courses: { $bind: { from: "data.courses" } },
37548
- showTitle: { $bind: {
37549
- from: "content.showTitle",
37550
- fallback: false
37551
- } },
37552
- showDescription: { $bind: {
37553
- from: "content.showDescription",
37554
- fallback: false
37555
- } },
37556
- showSessions: { $bind: {
37557
- from: "content.showSessions",
37558
- fallback: true
37559
- } },
37560
- sessionsLimit: { $bind: {
37561
- from: "content.sessionsLimit",
37562
- fallback: "10"
37563
- } },
37564
- showVenue: { $bind: {
37565
- from: "content.showVenue",
37566
- fallback: true
37567
- } },
37568
- showPrice: { $bind: {
37569
- from: "content.showPrice",
37570
- fallback: true
37571
- } },
37572
- showCapacity: { $bind: {
37573
- from: "content.showCapacity",
37574
- fallback: true
37575
- } },
37576
- showEnrollmentStatus: { $bind: {
37577
- from: "content.showEnrollmentStatus",
37578
- fallback: true
37579
- } },
37580
- showMembershipNote: { $bind: {
37581
- from: "content.showMembershipNote",
37582
- fallback: true
37583
- } }
37584
- })], { gap: "lg" })
37585
- })]
37586
- }),
37587
- dataSchemas: { courses: publicWholeSeriesOfferingsArraySchema.optional() },
37588
- dataLoaders: { courses: {
37589
- endpoint: "listPublicWholeSeriesOfferings",
37590
- params: {
37591
- siteId: { $bind: { from: "$root.siteId" } },
37592
- limit: "50",
37593
- stage: { $bind: {
37594
- from: "$root.previewStage",
37595
- fallback: "published"
37596
- } }
37597
- },
37598
- mode: "server"
37599
- } }
37600
- };
37601
37396
  const eventSpotlightBlockDefinition = {
37602
37397
  manifest: createBlockManifest({
37603
37398
  id: "block.event-spotlight",
@@ -39984,7 +39779,7 @@ const publicRouteCandidatesSchema = z.object({ routes: z.array(z.object({
39984
39779
  entityId: z.string(),
39985
39780
  path: z.string(),
39986
39781
  title: z.string(),
39987
- kind: z.enum(["page", "content"]),
39782
+ kind: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
39988
39783
  contentTypeKey: z.string().nullable().optional()
39989
39784
  })) });
39990
39785
  const groupOverrideFields = [
@@ -40261,7 +40056,7 @@ const offeringsPreviewManifest = createBlockManifest({
40261
40056
  fallback: "published"
40262
40057
  } },
40263
40058
  routeCandidates: { $bind: { from: "data.routeCandidates" } },
40264
- courses: { $bind: { from: "data.courses" } },
40059
+ wholeSeriesOfferings: { $bind: { from: "data.wholeSeriesOfferings" } },
40265
40060
  ...offeringsPreviewEventDataBindings
40266
40061
  })
40267
40062
  ], { gap: "lg" }),
@@ -40278,7 +40073,7 @@ const offeringsPreviewBlockDefinition = {
40278
40073
  dataSchemas: {
40279
40074
  ...offeringsPreviewEventDataSchemas,
40280
40075
  routeCandidates: publicRouteCandidatesSchema.optional(),
40281
- courses: publicWholeSeriesOfferingsArraySchema.optional()
40076
+ wholeSeriesOfferings: publicWholeSeriesOfferingsArraySchema.optional()
40282
40077
  },
40283
40078
  dataLoaders: {
40284
40079
  ...offeringsPreviewEventDataLoaders,
@@ -40287,7 +40082,7 @@ const offeringsPreviewBlockDefinition = {
40287
40082
  params: {},
40288
40083
  mode: "server"
40289
40084
  },
40290
- courses: {
40085
+ wholeSeriesOfferings: {
40291
40086
  endpoint: "listPublicWholeSeriesOfferings",
40292
40087
  params: {
40293
40088
  siteId: { $bind: { from: "$root.siteId" } },
@@ -45274,22 +45069,6 @@ const systemBlockDefinitions = [
45274
45069
  weight: "standard"
45275
45070
  })]
45276
45071
  })),
45277
- withDesignCapability("block.course-registration", courseRegistrationBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
45278
- flow: conversionFlow,
45279
- layoutProfiles: [layoutProfile({
45280
- variantKey: "default",
45281
- family: "form",
45282
- weight: "standard"
45283
- })]
45284
- })),
45285
- withDesignCapability("block.course-details", courseDetailsBlockDefinition, scheduleDetailsCapable(), defineBlockDesignMetadata({
45286
- flow: offeringsFlow,
45287
- layoutProfiles: [layoutProfile({
45288
- variantKey: "default",
45289
- family: "stack",
45290
- weight: "standard"
45291
- })]
45292
- })),
45293
45072
  withDesignCapability("block.event-spotlight", eventSpotlightBlockDefinition, eventSpotlightCapable(), defineBlockDesignMetadata({
45294
45073
  flow: offeringsFlow,
45295
45074
  layoutProfiles: [layoutProfile({
@@ -47316,6 +47095,68 @@ function collectText(node) {
47316
47095
  return (node.content ?? []).map(collectText).join("");
47317
47096
  }
47318
47097
  //#endregion
47098
+ //#region ../api/src/bookingPaymentTermSchemas.ts
47099
+ const bookingDepositRefundPolicySchema = z.enum(["refundable", "non_refundable"]);
47100
+ const bookingInstalmentPlanSchema = z.discriminatedUnion("kind", [
47101
+ z.object({
47102
+ kind: z.literal("deposit_plus_one_remainder"),
47103
+ depositAmountCents: z.number().int().nonnegative(),
47104
+ depositRefundability: bookingDepositRefundPolicySchema,
47105
+ remainderDueCount: z.number().int().positive(),
47106
+ intervalUnit: z.enum([
47107
+ "day",
47108
+ "week",
47109
+ "month"
47110
+ ])
47111
+ }),
47112
+ z.object({
47113
+ kind: z.literal("deposit_plus_scheduled_instalments"),
47114
+ depositAmountCents: z.number().int().nonnegative(),
47115
+ depositRefundability: bookingDepositRefundPolicySchema,
47116
+ instalmentCount: z.number().int().positive(),
47117
+ intervalCount: z.number().int().positive(),
47118
+ intervalUnit: z.enum([
47119
+ "day",
47120
+ "week",
47121
+ "month"
47122
+ ])
47123
+ }),
47124
+ z.object({
47125
+ kind: z.literal("equal_scheduled_instalments"),
47126
+ instalmentCount: z.number().int().positive(),
47127
+ intervalCount: z.number().int().positive(),
47128
+ intervalUnit: z.enum([
47129
+ "day",
47130
+ "week",
47131
+ "month"
47132
+ ])
47133
+ })
47134
+ ]);
47135
+ const bookingFlexibleBalanceDueDateRuleSchema = z.discriminatedUnion("kind", [z.object({
47136
+ kind: z.literal("relative_to_start_date"),
47137
+ daysBeforeStart: z.number().int().positive()
47138
+ }), z.object({
47139
+ kind: z.literal("fixed_calendar_date"),
47140
+ dueAt: z.string().datetime()
47141
+ })]);
47142
+ const bookingFlexibleBalanceConfigSchema = z.object({
47143
+ upfrontAmountCents: z.number().int().nonnegative(),
47144
+ dueDateRule: bookingFlexibleBalanceDueDateRuleSchema,
47145
+ depositRefundability: bookingDepositRefundPolicySchema
47146
+ });
47147
+ z.discriminatedUnion("kind", [
47148
+ z.object({ kind: z.literal("upfront") }),
47149
+ z.object({ kind: z.literal("deferred_manual") }),
47150
+ z.object({
47151
+ kind: z.literal("instalment_plan"),
47152
+ plan: bookingInstalmentPlanSchema
47153
+ }),
47154
+ z.object({
47155
+ kind: z.literal("flexible_balance"),
47156
+ config: bookingFlexibleBalanceConfigSchema
47157
+ })
47158
+ ]);
47159
+ //#endregion
47319
47160
  //#region ../api/src/aiPlayground.ts
47320
47161
  /**
47321
47162
  * RFC-6902 JSON Patch Operations