@riverbankcms/sdk 0.134.0 → 0.135.1

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 (258) hide show
  1. package/CHANGELOG.md +4 -3
  2. package/README.md +1 -1
  3. package/dist/{PreviewEditorSidebar-DfRhJPFQ.mjs → PreviewEditorSidebar-D4p_5TdY.mjs} +4 -4
  4. package/dist/{PreviewEditorUI-Dppxcr_g.mjs → PreviewEditorUI-D0cRoTX1.mjs} +3 -3
  5. package/dist/{PreviewQueryProvider-D51gQaG3.mjs → PreviewQueryProvider-DcgaESkm.mjs} +1 -1
  6. package/dist/{SdkPreviewModeRuntime-8CyGCXir.mjs → SdkPreviewModeRuntime-BKLtM3Nz.mjs} +5 -5
  7. package/dist/{SiteChromeCustomizeContext-DVMTMvqA.mjs → SiteChromeCustomizeContext-61X2m7QV.mjs} +4105 -8035
  8. package/dist/_dts/ai/src/contracts/proposals.d.ts +165 -165
  9. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +15 -15
  10. package/dist/_dts/api/src/bookingConfig.d.ts +1 -1
  11. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +25 -60
  12. package/dist/_dts/api/src/bookingOperations.d.ts +111 -161
  13. package/dist/_dts/api/src/bookingPaymentTermSchemas.d.ts +123 -0
  14. package/dist/_dts/api/src/bookingRecords.d.ts +13 -13
  15. package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +4 -4
  16. package/dist/_dts/api/src/bookingSessionSummaryTypes.d.ts +34 -0
  17. package/dist/_dts/api/src/bookings.d.ts +5 -9
  18. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +7 -7
  19. package/dist/_dts/api/src/communications.d.ts +1 -1
  20. package/dist/_dts/api/src/endpoints.d.ts +29 -109
  21. package/dist/_dts/api/src/eventManagementContracts.d.ts +1 -1
  22. package/dist/_dts/api/src/eventSeriesRegistrationEndpointDefinitions.d.ts +43 -0
  23. package/dist/_dts/api/src/index.d.ts +3 -4
  24. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  25. package/dist/_dts/api/src/participantMessaging.d.ts +2 -2
  26. package/dist/_dts/api/src/publicEventEndpointDefinitions.d.ts +8 -0
  27. package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +32 -28
  28. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +85 -5
  29. package/dist/_dts/api/src/publicExperience/sharedTypes.d.ts +1 -1
  30. package/dist/_dts/api/src/publicExperience/wholeSeriesEndpoints.d.ts +9 -100
  31. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +7 -6
  32. package/dist/_dts/api/src/publicWholeSeriesEndpointDefinitions.d.ts +0 -32
  33. package/dist/_dts/api/src/sdk-event-payment-terms.d.ts +1 -1
  34. package/dist/_dts/api/src/sdk-event-upsert.d.ts +1 -1
  35. package/dist/_dts/api/src/siteOperations.d.ts +2 -2
  36. package/dist/_dts/api/src/types.d.ts +1 -1
  37. package/dist/_dts/api/src/{courses.d.ts → wholeSeriesOfferings.d.ts} +43 -95
  38. package/dist/_dts/blocks/src/client.d.ts +0 -5
  39. package/dist/_dts/blocks/src/contracts/index.d.ts +1 -1
  40. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +5 -94
  41. package/dist/_dts/blocks/src/portal/dateFormatting.d.ts +3 -0
  42. package/dist/_dts/blocks/src/portal/types.d.ts +17 -20
  43. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +147 -42
  44. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +35 -10
  45. package/dist/_dts/blocks/src/system/blocks/events/whole-series/types.d.ts +3 -0
  46. package/dist/_dts/blocks/src/system/blocks/index.d.ts +0 -2
  47. package/dist/_dts/blocks/src/system/blocks/offerings-preview/model.d.ts +3 -3
  48. package/dist/_dts/blocks/src/system/blocks/offerings-preview/scheduleSummary.d.ts +3 -3
  49. package/dist/_dts/blocks/src/system/constants/blockKinds.d.ts +1 -1
  50. package/dist/_dts/blocks/src/system/node/builder.d.ts +0 -1
  51. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +9 -12
  52. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +2 -44
  53. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  54. package/dist/_dts/blocks/src/system/runtime/api/types/core.d.ts +1 -1
  55. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +99 -59
  56. package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +1 -1
  57. package/dist/_dts/blocks/src/system/runtime/api/types/shop.d.ts +19 -16
  58. package/dist/_dts/blocks/src/system/runtime/api/types/waitlist-claims.d.ts +7 -0
  59. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +1 -1
  60. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +24 -247
  61. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +13 -126
  62. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +0 -1
  63. package/dist/_dts/blocks/src/system/runtime/hooks/usePaymentVerification.d.ts +2 -3
  64. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/WholeSeriesPricingDisplay.d.ts +8 -0
  65. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationBookingLayer.d.ts +17 -0
  66. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +24 -0
  67. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PaymentBlockingPanel.d.ts +18 -0
  68. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/TicketSelectionStep.d.ts +5 -0
  69. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/constants.d.ts +1 -0
  70. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +1 -3
  71. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventPaymentOptions.d.ts +7 -4
  72. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventScope.d.ts +0 -1
  73. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +7 -8
  74. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/index.d.ts +1 -1
  75. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationDerivations.d.ts +4 -4
  76. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationEventAdapter.d.ts +3 -0
  77. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationStateMachine.d.ts +5 -0
  78. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationWizardContext.d.ts +28 -0
  79. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/sessionStorage.d.ts +12 -11
  80. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +53 -45
  81. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +10 -6
  82. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +9 -1
  83. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +20 -5
  84. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useWaitlistClaimRestoration.d.ts +20 -0
  85. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/utils.d.ts +5 -56
  86. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/waitlistClaimRestoration.d.ts +20 -0
  87. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +6 -22
  88. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/DateTimeTile.d.ts +1 -1
  89. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +16 -6
  90. package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview.d.ts +2 -2
  91. package/dist/_dts/blocks/src/system/runtime/shared/bookingPaymentOptions.d.ts +6 -1
  92. package/dist/_dts/blocks/src/system/runtime/shared/components/DiscountCodeDisclosure.d.ts +1 -13
  93. package/dist/_dts/blocks/src/system/runtime/shared/components/LoggedInAsUser.d.ts +1 -1
  94. package/dist/_dts/blocks/src/system/runtime/shared/components/MembershipHero.d.ts +1 -1
  95. package/dist/_dts/blocks/src/system/runtime/shared/components/StateIcon.d.ts +1 -1
  96. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +1 -1
  97. package/dist/_dts/blocks/src/system/runtime/shared/types.d.ts +1 -1
  98. package/dist/_dts/blocks/src/system/runtime/shared/utils/checkoutUrls.d.ts +2 -2
  99. package/dist/_dts/commerce/src/index.d.ts +16 -0
  100. package/dist/_dts/commerce/src/money.d.ts +122 -0
  101. package/dist/_dts/commerce/src/moneyContracts.d.ts +178 -0
  102. package/dist/_dts/commerce/src/moneyDateUtils.d.ts +22 -0
  103. package/dist/_dts/commerce/src/moneyPayments.d.ts +59 -0
  104. package/dist/_dts/commerce/src/moneyPlanningTime.d.ts +4 -0
  105. package/dist/_dts/commerce/src/moneyReceiptReadModel.d.ts +68 -0
  106. package/dist/_dts/commerce/src/moneyReport.d.ts +105 -0
  107. package/dist/_dts/commerce/src/moneyReportBreakdowns.d.ts +3 -0
  108. package/dist/_dts/commerce/src/moneyReportKindFilter.d.ts +4 -0
  109. package/dist/_dts/commerce/src/moneyReportPage.d.ts +132 -0
  110. package/dist/_dts/commerce/src/purchase/checkoutCollectionPlan.d.ts +1 -1
  111. package/dist/_dts/commerce/src/purchase/confirmationEmailPayment.d.ts +1 -1
  112. package/dist/_dts/commerce/src/purchase/orderCompletionEmailPlan.d.ts +3 -3
  113. package/dist/_dts/commerce/src/purchase/orderFulfillmentPlan.d.ts +6 -25
  114. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +4 -4
  115. package/dist/_dts/commerce/src/purchase/orderPlanningTypes.d.ts +11 -11
  116. package/dist/_dts/commerce/src/purchase/orderTypes.d.ts +1 -1
  117. package/dist/_dts/commerce/src/purchase/persistedCheckoutLines.d.ts +1 -1
  118. package/dist/_dts/commerce/src/purchase/types.d.ts +12 -8
  119. package/dist/_dts/commerce/src/shop/digitalFulfillment.d.ts +111 -0
  120. package/dist/_dts/commerce/src/shop/fulfillmentStatus.d.ts +10 -0
  121. package/dist/_dts/commerce/src/shop/inventoryRestore.d.ts +13 -0
  122. package/dist/_dts/commerce/src/shop/shippingAddress.d.ts +18 -0
  123. package/dist/_dts/commerce/src/types/json.d.ts +3 -0
  124. package/dist/_dts/commerce/src/utils/isPlainRecord.d.ts +1 -0
  125. package/dist/_dts/commerce/src/waitlists.d.ts +172 -0
  126. package/dist/_dts/content-model/src/content-types/builtin-schemas.d.ts +0 -30
  127. package/dist/_dts/content-model/src/content-types/builtins.d.ts +2 -39
  128. package/dist/_dts/content-model/src/metadataConfig.d.ts +0 -1
  129. package/dist/_dts/content-model/src/templates/defaults.d.ts +0 -68
  130. package/dist/_dts/core/src/branded.d.ts +3 -3
  131. package/dist/_dts/core/src/event-pricing.d.ts +6 -6
  132. package/dist/_dts/core/src/participants.d.ts +17 -17
  133. package/dist/_dts/core/src/rectification.d.ts +1 -1
  134. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +890 -2154
  135. package/dist/_dts/sdk/src/bookings/index.d.ts +4 -5
  136. package/dist/_dts/sdk/src/bookings/types.d.ts +34 -4
  137. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +4 -6
  138. package/dist/_dts/sdk/src/version.d.ts +1 -1
  139. package/dist/_dts/theme-core/src/blocks/vars/index.d.ts +0 -2
  140. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  141. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +1 -1
  142. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +1 -1
  143. package/dist/client/{usePolling-UN4WKnaM.mjs → BookingConsentAgreement-Bz9znbpn.mjs} +180 -4
  144. package/dist/client/{DiscountCodeDisclosure-CfuPOHD0.mjs → DiscountCodeDisclosure-35Ru8yB9.mjs} +13 -27
  145. package/dist/client/{EventCombined.client-DB8Qfzi-.mjs → EventCombined.client-BKB0ZxRR.mjs} +3 -3
  146. package/dist/client/{EventListing.client-DD4X8hp4.mjs → EventListing.client-Dx8I21ok.mjs} +2 -2
  147. package/dist/client/{LeafletStaticMap-QhgIBQbv.mjs → LeafletStaticMap-CEWx-Bhe.mjs} +1 -1
  148. package/dist/client/{accordion-DFXpLvwg.mjs → accordion-KIDsKTwS.mjs} +1 -1
  149. package/dist/client/{bookingForm-sI05d3lk.mjs → bookingForm-D96Rmp-5.mjs} +6 -7
  150. package/dist/client/bookings.mjs +913 -1906
  151. package/dist/client/{carousel-wjyWTZCh.mjs → carousel-YwUgyL66.mjs} +1 -1
  152. package/dist/client/{cart-DCwdpA4i.mjs → cart-BbwuNrUT.mjs} +3 -3
  153. package/dist/client/{checkout-DTDW3l0R.mjs → checkout-hp1ucmEY.mjs} +3 -3
  154. package/dist/client/{checkoutUrls-DQYC_Br-.mjs → checkoutUrls-BuseL0dw.mjs} +4 -2
  155. package/dist/client/client.mjs +5109 -9333
  156. package/dist/client/{context-TSK1CGx8.mjs → context-DljQn8L5.mjs} +15 -69
  157. package/dist/client/{eventCalendar-B0Zg-i_w.mjs → eventCalendar-DU4iNLpo.mjs} +5 -5
  158. package/dist/client/{eventCombined-B8Y2wizd.mjs → eventCombined-CZuupW8m.mjs} +3 -3
  159. package/dist/client/{eventDetails-DPDOwURJ.mjs → eventDetails-DPQWwCIi.mjs} +8 -8
  160. package/dist/client/{eventListing-CjBcmSLn.mjs → eventListing-C7oMidwS.mjs} +3 -3
  161. package/dist/client/{eventRegistration-CK30HsAq.mjs → eventRegistration-zEiunlUs.mjs} +4522 -3690
  162. package/dist/client/{form-CUXfsABE.mjs → form-D2KIyCVJ.mjs} +2 -2
  163. package/dist/client/{headerSection-N-mN3rjr.mjs → headerSection-CK5uChUK.mjs} +2 -2
  164. package/dist/client/hooks.mjs +459 -714
  165. package/dist/client/{locationMap-oiIDQMBt.mjs → locationMap-DLQNH1ln.mjs} +2 -2
  166. package/dist/client/{newsletterForm-CkQ2tTrM.mjs → newsletterForm-ZuhIG7fZ.mjs} +2 -2
  167. package/dist/client/{productDetail-CnidyrsN.mjs → productDetail-7hIcGeae.mjs} +3 -3
  168. package/dist/client/{productList-CttYcS_S.mjs → productList-T4Cii1ot.mjs} +3 -3
  169. package/dist/client/{propsDecoder-CeUMxI9a.mjs → propsDecoder-mB0aC_Fi.mjs} +4702 -4458
  170. package/dist/client/rendering/client.mjs +59617 -62260
  171. package/dist/client/rendering/islands.mjs +17 -19
  172. package/dist/client/rendering.mjs +5389 -9707
  173. package/dist/client/{scrollToBlock-lPr1oqxB.mjs → scrollToBlock-Du5mHgvL.mjs} +2 -2
  174. package/dist/client/{shop-DXQtMo2O.mjs → shop-B5zAcKZn.mjs} +6 -6
  175. package/dist/client/{shop-commerce-quDL411J.mjs → shop-commerce-BKBZB6l5.mjs} +6 -6
  176. package/dist/client/{shop-commerce-store-Dnu-8Iub.mjs → shop-commerce-store-Cq4qlNtQ.mjs} +1 -1
  177. package/dist/client/{shopShared-BWPUURvG.mjs → shopShared-DYGzEs9D.mjs} +3 -3
  178. package/dist/client/{useEventFilters-DRhWp2_5.mjs → useEventFilters-Bphkda8m.mjs} +3 -3
  179. package/dist/preview-next/before-render.mjs +40 -161
  180. package/dist/preview-next/client/runtime.mjs +4 -4
  181. package/dist/preview-next/keepAlive.mjs +40 -161
  182. package/dist/preview-next/middleware.mjs +40 -161
  183. package/dist/{previewAuthStore-BFKd4LrN.mjs → previewAuthStore-C7ksxt5b.mjs} +40 -161
  184. package/dist/{sdk-runtime-Ca5RD78X.mjs → sdk-runtime-BbIC8G4J.mjs} +2 -2
  185. package/dist/{separator-CMhj6BTi.mjs → separator-CadhAtI7.mjs} +1 -1
  186. package/dist/server/components.mjs +558 -2962
  187. package/dist/server/config-validation.mjs +459 -714
  188. package/dist/server/config.mjs +459 -714
  189. package/dist/server/data.mjs +459 -714
  190. package/dist/server/index.mjs +41 -162
  191. package/dist/server/next.mjs +572 -2976
  192. package/dist/server/page-converter.mjs +360 -582
  193. package/dist/server/prebuild.mjs +1 -1
  194. package/dist/server/rendering/server.mjs +569 -2879
  195. package/dist/server/rendering.mjs +558 -2962
  196. package/dist/server/routing.mjs +603 -1087
  197. package/dist/server/server.mjs +473 -728
  198. package/dist/server/theme-bridge.mjs +41 -1524
  199. package/dist/styles/index.css +41 -1348
  200. package/package.json +1 -1
  201. package/dist/_dts/api/src/courseEndpointDefinitions.d.ts +0 -99
  202. package/dist/_dts/blocks/src/client/course-registration.d.ts +0 -5
  203. package/dist/_dts/blocks/src/system/blocks/course-details.d.ts +0 -134
  204. package/dist/_dts/blocks/src/system/blocks/course-registration.d.ts +0 -130
  205. package/dist/_dts/blocks/src/system/blocks/courses/shared/index.d.ts +0 -3
  206. package/dist/_dts/blocks/src/system/blocks/courses/shared/pricing.d.ts +0 -2
  207. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +0 -1
  208. package/dist/_dts/blocks/src/system/blocks/courses/shared/types.d.ts +0 -1
  209. package/dist/_dts/blocks/src/system/runtime/api/types/courses.d.ts +0 -135
  210. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessWholeSeriesRegistrationFlow.d.ts +0 -28
  211. package/dist/_dts/blocks/src/system/runtime/nodes/course-details/logic.d.ts +0 -11
  212. package/dist/_dts/blocks/src/system/runtime/nodes/course-details/runs.d.ts +0 -10
  213. package/dist/_dts/blocks/src/system/runtime/nodes/course-details/view.d.ts +0 -15
  214. package/dist/_dts/blocks/src/system/runtime/nodes/course-details.server.d.ts +0 -20
  215. package/dist/_dts/blocks/src/system/runtime/nodes/course-page-surface-scope.d.ts +0 -14
  216. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.client.d.ts +0 -10
  217. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.interactive.d.ts +0 -181
  218. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.server.d.ts +0 -12
  219. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/CoursePricingDisplay.d.ts +0 -8
  220. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/BookingModeStep.d.ts +0 -32
  221. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/CheckIcon.d.ts +0 -4
  222. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/ErrorStep.d.ts +0 -17
  223. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/MembershipHero.d.ts +0 -12
  224. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/PaymentFailedStep.d.ts +0 -17
  225. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/PortalAuthSidebar.d.ts +0 -9
  226. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/StepIndicator.d.ts +0 -6
  227. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/SuccessStep.d.ts +0 -14
  228. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/VerifyingTimeoutStep.d.ts +0 -17
  229. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/WaitlistStep.d.ts +0 -12
  230. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/WholeSeriesRegistrationActiveSteps.d.ts +0 -9
  231. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/WholeSeriesRegistrationErrorBoundary.d.ts +0 -25
  232. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/WholeSeriesRegistrationTerminalContent.d.ts +0 -8
  233. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/WholeSeriesRegistrationWizard.d.ts +0 -8
  234. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/components.d.ts +0 -46
  235. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/index.d.ts +0 -18
  236. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/presentation.d.ts +0 -7
  237. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/pricing.d.ts +0 -14
  238. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/types.d.ts +0 -105
  239. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesEligibility.d.ts +0 -24
  240. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesPaymentVerification.d.ts +0 -10
  241. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesRegistrationActions.d.ts +0 -35
  242. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesRegistrationPortal.d.ts +0 -7
  243. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesRegistrationSelection.d.ts +0 -35
  244. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesRegistrationWizard.d.ts +0 -185
  245. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesWaitlistSelection.d.ts +0 -14
  246. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/utils.d.ts +0 -43
  247. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/whole-series-registration.headless.contract.d.ts +0 -325
  248. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/whole-series-registration.headless.planning.d.ts +0 -27
  249. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/wholeSeriesPageSurfaceScope.d.ts +0 -17
  250. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/wholeSeriesRegistrationViewState.d.ts +0 -21
  251. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/wizardSteps.d.ts +0 -30
  252. package/dist/_dts/sdk/src/rendering/islands/enhancers/courseRegistration.d.ts +0 -3
  253. package/dist/_dts/theme-core/src/blocks/vars/course-details.d.ts +0 -16
  254. package/dist/_dts/theme-core/src/blocks/vars/course-registration.d.ts +0 -21
  255. package/dist/client/BookingConsentAgreement-BxgpGEFD.mjs +0 -160
  256. package/dist/client/WholeSeriesRegistrationWizard-DwtC7bCs.mjs +0 -2546
  257. package/dist/client/courseRegistration-A-Tg7qw_.mjs +0 -52
  258. package/dist/client/pricing-Caa0QWzh.mjs +0 -195
@@ -755,69 +755,8 @@ const ACCOUNT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
755
755
  }
756
756
  });
757
757
  //#endregion
758
- //#region ../api/src/courseEndpointDefinitions.ts
759
- const COURSE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
760
- listCourses: {
761
- path: "/sites/{siteId}/bookings/courses",
762
- method: "GET",
763
- auth: "user",
764
- responseKind: "json"
765
- },
766
- exportCoursesCsv: {
767
- path: "/sites/{siteId}/bookings/courses/export.csv",
768
- method: "GET",
769
- tags: [
770
- "site-{siteId}",
771
- "bookings",
772
- "courses-{siteId}"
773
- ],
774
- errors: [],
775
- auth: "user",
776
- responseKind: "blob"
777
- },
778
- createCourse: {
779
- path: "/sites/{siteId}/bookings/courses",
780
- method: "POST",
781
- auth: "user",
782
- responseKind: "json",
783
- errors: [
784
- "validation:invalid_input",
785
- "resource:not_found",
786
- "resource:already_exists",
787
- "resource:conflict",
788
- "server:internal_error"
789
- ]
790
- },
791
- getCourse: {
792
- path: "/sites/{siteId}/bookings/courses/{courseId}",
793
- method: "GET",
794
- auth: "user",
795
- responseKind: "json"
796
- },
797
- updateCourse: {
798
- path: "/sites/{siteId}/bookings/courses/{courseId}",
799
- method: "PATCH",
800
- auth: "user",
801
- responseKind: "json",
802
- errors: [
803
- "validation:invalid_input",
804
- "resource:not_found",
805
- "resource:conflict",
806
- "server:internal_error"
807
- ]
808
- },
809
- deleteCourse: {
810
- path: "/sites/{siteId}/bookings/courses/{courseId}",
811
- method: "DELETE",
812
- auth: "user",
813
- responseKind: "json",
814
- errors: [
815
- "validation:invalid_input",
816
- "resource:not_found",
817
- "resource:conflict",
818
- "server:internal_error"
819
- ]
820
- },
758
+ //#region ../api/src/eventSeriesRegistrationEndpointDefinitions.ts
759
+ const EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
821
760
  deleteEventOffering: {
822
761
  path: "/sites/{siteId}/bookings/event-offerings/{eventOfferingId}",
823
762
  method: "DELETE",
@@ -830,20 +769,8 @@ const COURSE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
830
769
  "server:internal_error"
831
770
  ]
832
771
  },
833
- duplicateCourse: {
834
- path: "/sites/{siteId}/bookings/courses/{courseId}/duplicate",
835
- method: "POST",
836
- auth: "user",
837
- responseKind: "json",
838
- errors: [
839
- "validation:invalid_input",
840
- "resource:not_found",
841
- "resource:already_exists",
842
- "server:internal_error"
843
- ]
844
- },
845
- changeCourseContentOwnership: {
846
- path: "/sites/{siteId}/bookings/courses/{courseId}/content-ownership",
772
+ changeEventSeriesContentOwnership: {
773
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/content-ownership",
847
774
  method: "POST",
848
775
  auth: "user",
849
776
  responseKind: "json",
@@ -854,8 +781,8 @@ const COURSE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
854
781
  "server:internal_error"
855
782
  ]
856
783
  },
857
- addCourseEnrollment: {
858
- path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments",
784
+ addEventSeriesRegistration: {
785
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations",
859
786
  method: "POST",
860
787
  auth: "user",
861
788
  responseKind: "json",
@@ -866,33 +793,21 @@ const COURSE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
866
793
  "server:internal_error"
867
794
  ]
868
795
  },
869
- listCourseEnrollments: {
870
- path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments",
796
+ listEventSeriesRegistrations: {
797
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations",
871
798
  method: "GET",
872
799
  auth: "user",
873
800
  responseKind: "json"
874
801
  },
875
- exportCourseEnrollmentsCsv: {
876
- path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments/export.csv",
802
+ exportEventSeriesRegistrationsCsv: {
803
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations/export.csv",
877
804
  method: "GET",
878
805
  auth: "user",
879
806
  errors: [],
880
807
  responseKind: "blob"
881
808
  },
882
- exportCourseWaitlistCsv: {
883
- path: "/sites/{siteId}/bookings/courses/{courseId}/waitlist/export.csv",
884
- method: "GET",
885
- tags: [
886
- "site-{siteId}",
887
- "bookings",
888
- "courses-{courseId}"
889
- ],
890
- auth: "user",
891
- responseKind: "blob",
892
- errors: []
893
- },
894
- updateCourseEnrollment: {
895
- path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments/{enrollmentId}",
809
+ updateEventSeriesRegistration: {
810
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations/{registrationId}",
896
811
  method: "PATCH",
897
812
  auth: "user",
898
813
  responseKind: "json",
@@ -1280,71 +1195,35 @@ const PUBLIC_WHOLE_SERIES_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1280
1195
  errors: ["resource:not_found", "server:internal_error"],
1281
1196
  auth: "public",
1282
1197
  responseKind: "json"
1283
- },
1284
- registerForWholeSeries: {
1285
- path: "/public/sites/{siteId}/dated-offerings/whole-series/enroll",
1286
- method: "POST",
1287
- tags: [TAG_TEMPLATES.publicWholeSeriesOfferings, "course-enrollment"],
1288
- errors: [
1289
- "auth:unauthenticated",
1290
- "auth:forbidden",
1291
- "validation:invalid_input",
1292
- "resource:not_found",
1293
- "resource:conflict",
1294
- "resource:already_exists",
1295
- "server:internal_error"
1296
- ],
1297
- auth: "public",
1298
- responseKind: "json"
1299
- },
1300
- checkWholeSeriesEligibility: {
1301
- path: "/public/sites/{siteId}/dated-offerings/whole-series/check-eligibility",
1302
- method: "POST",
1303
- tags: [TAG_TEMPLATES.publicWholeSeriesOfferings, "course-enrollment"],
1304
- errors: [
1305
- "auth:unauthenticated",
1306
- "resource:not_found",
1307
- "resource:conflict",
1308
- "server:internal_error"
1309
- ],
1310
- auth: "public",
1311
- responseKind: "json"
1312
- },
1313
- createWholeSeriesCheckout: {
1314
- path: "/public/sites/{siteId}/dated-offerings/whole-series/checkout",
1198
+ }
1199
+ });
1200
+ //#endregion
1201
+ //#region ../api/src/publicEventEndpointDefinitions.ts
1202
+ const PUBLIC_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1203
+ getPublicEventRegistrationOptions: {
1204
+ path: "/public/sites/{siteId}/events/registration-options",
1315
1205
  method: "POST",
1316
- tags: [TAG_TEMPLATES.publicWholeSeriesOfferings, "course-checkout"],
1206
+ tags: [TAG_TEMPLATES.publicEvents, "event-registration-options"],
1317
1207
  auth: "public",
1318
1208
  responseKind: "json",
1319
1209
  errors: [
1320
- "auth:unauthenticated",
1321
1210
  "validation:invalid_input",
1322
1211
  "resource:not_found",
1323
1212
  "resource:conflict",
1324
1213
  "server:internal_error"
1325
1214
  ]
1326
1215
  },
1327
- getWholeSeriesRegistrationStatus: {
1328
- path: "/public/sites/{siteId}/dated-offerings/whole-series/registration-status",
1216
+ resolveEventSubroute: {
1217
+ path: "/public/sites/{siteId}/events/subroutes/resolve",
1329
1218
  method: "GET",
1330
- tags: [TAG_TEMPLATES.publicWholeSeriesOfferings, "course-checkout"],
1331
- errors: ["resource:not_found", "server:internal_error"],
1219
+ revalidate: 60,
1220
+ tags: [TAG_TEMPLATES.publicEvents, "event-subroute"],
1332
1221
  auth: "public",
1333
- responseKind: "json"
1222
+ responseKind: "json",
1223
+ errors: []
1334
1224
  }
1335
1225
  });
1336
1226
  //#endregion
1337
- //#region ../api/src/publicEventEndpointDefinitions.ts
1338
- const PUBLIC_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({ resolveEventSubroute: {
1339
- path: "/public/sites/{siteId}/events/subroutes/resolve",
1340
- method: "GET",
1341
- revalidate: 60,
1342
- tags: [TAG_TEMPLATES.publicEvents, "event-subroute"],
1343
- auth: "public",
1344
- responseKind: "json",
1345
- errors: []
1346
- } });
1347
- //#endregion
1348
1227
  //#region ../api/src/siteApiKeyEndpointDefinitions.ts
1349
1228
  const SITE_API_KEY_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1350
1229
  listSiteApiKeys: {
@@ -1712,7 +1591,7 @@ const SDK_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1712
1591
  }), TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, { ...SITE_API_KEY_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.site, TAG_TEMPLATES.siteBookingSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteBookingSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, {
1713
1592
  ...NEWSLETTER_ENDPOINT_DEFINITIONS,
1714
1593
  ...APPOINTMENT_ENDPOINT_DEFINITIONS,
1715
- ...COURSE_ENDPOINT_DEFINITIONS
1594
+ ...EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS
1716
1595
  }, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.workflowRunById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.routeById, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.formById, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEventFilters, { ...PUBLIC_WHOLE_SERIES_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicTeamMembers, TAG_TEMPLATES.publicWholeSeriesOfferings, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicPasses, TAG_TEMPLATES.publicMemberships, TAG_TEMPLATES.publicProducts, TAG_TEMPLATES.publicShop, TAG_TEMPLATES.publicCheckout, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, { ...EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS }, { ...SDK_ENDPOINT_DEFINITIONS }, { ...SDK_ENTRY_READ_ENDPOINTS };
1717
1596
  z.object({ refreshToken: z.string().min(1).max(4096) }).strict();
1718
1597
  z.object({
@@ -1888,14 +1767,14 @@ function publicEventPricingType(pricing) {
1888
1767
  case "single_paid":
1889
1768
  case "ticket_types":
1890
1769
  case "sliding_scale":
1891
- case "course": return isFreePublicEventPriceDisplay(pricing.display) ? "free" : "paid";
1770
+ case "whole_series": return isFreePublicEventPriceDisplay(pricing.display) ? "free" : "paid";
1892
1771
  case "external": return "external";
1893
1772
  }
1894
1773
  }
1895
1774
  function isFreePublicEventPriceDisplay(display) {
1896
1775
  switch (display.kind) {
1897
1776
  case "free": return true;
1898
- case "course": return display.display.kind === "free";
1777
+ case "whole_series": return display.display.kind === "free";
1899
1778
  case "exact":
1900
1779
  case "from":
1901
1780
  case "range":
@@ -2184,6 +2063,25 @@ function parseManagementKey(raw) {
2184
2063
  return ok(createSecretInternal("management-key", raw));
2185
2064
  }
2186
2065
  //#endregion
2066
+ //#region ../core/src/planner.ts
2067
+ /** Default clock for production callers that do not inject time explicitly. */
2068
+ const systemPlanningClock = { now: () => Date.now() };
2069
+ /** Resolve current time as a Date from an explicit Date, injected clock, or system clock. */
2070
+ function resolvePlanningNowDate(input = {}) {
2071
+ if (input.now !== void 0) return input.now;
2072
+ return new Date((input.clock ?? systemPlanningClock).now());
2073
+ }
2074
+ /**
2075
+ * Resolve a Date-compatible planner input.
2076
+ *
2077
+ * Precedence: bare Date, `{ now }`, `{ clock }`, then `systemPlanningClock`.
2078
+ * Explicit Date inputs are returned by reference, not cloned.
2079
+ */
2080
+ function resolvePlanningDateInput(input = {}) {
2081
+ if (input instanceof Date) return input;
2082
+ return resolvePlanningNowDate(input);
2083
+ }
2084
+ //#endregion
2187
2085
  //#region ../core/src/event-series-behaviour.ts
2188
2086
  const SURFACE_EVENT_PRESET_VALUES = [
2189
2087
  "class",
@@ -10642,7 +10540,7 @@ defineBlockAppearancePreset({
10642
10540
  id: "schedule-details-brand-depth",
10643
10541
  target: "events",
10644
10542
  label: "Brand-depth schedule details",
10645
- blockKinds: ["block.event-details", "block.course-details"],
10543
+ blockKinds: ["block.event-details"],
10646
10544
  design: {
10647
10545
  sectionSurface: "brand-depth-band",
10648
10546
  contentFrame: plainFrame,
@@ -16824,7 +16722,6 @@ const productDetail = (props, children, ...mods) => el("product-detail", props,
16824
16722
  const cart = (props, children, ...mods) => el("cart", props, children, ...mods);
16825
16723
  const checkout = (props, children, ...mods) => el("checkout", props, children, ...mods);
16826
16724
  const gifting = (props, children, ...mods) => el("gifting", props, children, ...mods);
16827
- const courseRegistration = (props, children, ...mods) => el("course-registration", props, children, ...mods);
16828
16725
  function bind(from, options) {
16829
16726
  return (node) => ({
16830
16727
  ...node,
@@ -26480,12 +26377,12 @@ const RichTextDocSchema = z.object({
26480
26377
  }).strict();
26481
26378
  //#endregion
26482
26379
  //#region ../blocks/src/system/blocks/shared/bookingPaymentTerms.ts
26483
- const bookingDepositRefundPolicySchema = z.enum(["refundable", "non_refundable"]);
26484
- const bookingInstalmentPlanSchema = z.union([
26380
+ const bookingDepositRefundPolicySchema$1 = z.enum(["refundable", "non_refundable"]);
26381
+ const bookingInstalmentPlanSchema$1 = z.union([
26485
26382
  z.object({
26486
26383
  kind: z.literal("deposit_plus_one_remainder"),
26487
26384
  depositAmountCents: z.number().int().min(0),
26488
- depositRefundability: bookingDepositRefundPolicySchema,
26385
+ depositRefundability: bookingDepositRefundPolicySchema$1,
26489
26386
  remainderDueCount: z.number().int().positive(),
26490
26387
  intervalUnit: z.enum([
26491
26388
  "day",
@@ -26496,7 +26393,7 @@ const bookingInstalmentPlanSchema = z.union([
26496
26393
  z.object({
26497
26394
  kind: z.literal("deposit_plus_scheduled_instalments"),
26498
26395
  depositAmountCents: z.number().int().min(0),
26499
- depositRefundability: bookingDepositRefundPolicySchema,
26396
+ depositRefundability: bookingDepositRefundPolicySchema$1,
26500
26397
  instalmentCount: z.number().int().positive(),
26501
26398
  intervalCount: z.number().int().positive(),
26502
26399
  intervalUnit: z.enum([
@@ -26516,28 +26413,28 @@ const bookingInstalmentPlanSchema = z.union([
26516
26413
  ])
26517
26414
  })
26518
26415
  ]);
26519
- const bookingFlexibleBalanceDueDateRuleSchema = z.union([z.object({
26416
+ const bookingFlexibleBalanceDueDateRuleSchema$1 = z.union([z.object({
26520
26417
  kind: z.literal("relative_to_start_date"),
26521
26418
  daysBeforeStart: z.number().int().positive()
26522
26419
  }), z.object({
26523
26420
  kind: z.literal("fixed_calendar_date"),
26524
26421
  dueAt: z.string().datetime()
26525
26422
  })]);
26526
- const bookingFlexibleBalanceConfigSchema = z.object({
26423
+ const bookingFlexibleBalanceConfigSchema$1 = z.object({
26527
26424
  upfrontAmountCents: z.number().int().min(0),
26528
- dueDateRule: bookingFlexibleBalanceDueDateRuleSchema,
26529
- depositRefundability: bookingDepositRefundPolicySchema
26425
+ dueDateRule: bookingFlexibleBalanceDueDateRuleSchema$1,
26426
+ depositRefundability: bookingDepositRefundPolicySchema$1
26530
26427
  });
26531
26428
  const blockBookingPaymentCollectionOptionSchema = z.union([
26532
26429
  z.object({ kind: z.literal("upfront") }),
26533
26430
  z.object({ kind: z.literal("deferred_manual") }),
26534
26431
  z.object({
26535
26432
  kind: z.literal("instalment_plan"),
26536
- plan: bookingInstalmentPlanSchema
26433
+ plan: bookingInstalmentPlanSchema$1
26537
26434
  }),
26538
26435
  z.object({
26539
26436
  kind: z.literal("flexible_balance"),
26540
- config: bookingFlexibleBalanceConfigSchema
26437
+ config: bookingFlexibleBalanceConfigSchema$1
26541
26438
  })
26542
26439
  ]);
26543
26440
  const blockBookingPaymentTermsSchema = z.object({ allowedOptions: z.array(blockBookingPaymentCollectionOptionSchema).min(1) });
@@ -26559,6 +26456,164 @@ const bookingRequirementConsentFieldSchema = z.object({
26559
26456
  });
26560
26457
  z.union([blockBookingConsentSchema, bookingRequirementConsentFieldSchema]);
26561
26458
  //#endregion
26459
+ //#region ../blocks/src/system/blocks/events/whole-series/pricing.ts
26460
+ function isSaleWindowOpen(option, now) {
26461
+ if (!option.isActive) return false;
26462
+ if (option.saleStartsAt && new Date(option.saleStartsAt) > now) return false;
26463
+ if (option.saleEndsAt && new Date(option.saleEndsAt) < now) return false;
26464
+ return true;
26465
+ }
26466
+ function toExactOrFreeDisplay(amount, currency) {
26467
+ if (amount <= 0) return {
26468
+ kind: "free",
26469
+ currency
26470
+ };
26471
+ return {
26472
+ kind: "exact",
26473
+ amount,
26474
+ currency
26475
+ };
26476
+ }
26477
+ function getSelectableWholeSeriesPricingOptionsForNow(offering, now) {
26478
+ if (offering.pricing.pricingStrategy !== "tiered") return [];
26479
+ return [...offering.pricing.options].filter((option) => isSaleWindowOpen(option, now)).sort((left, right) => {
26480
+ if (left.sortOrder !== right.sortOrder) return left.sortOrder - right.sortOrder;
26481
+ if (left.priceAmount !== right.priceAmount) return left.priceAmount - right.priceAmount;
26482
+ return left.name.localeCompare(right.name);
26483
+ });
26484
+ }
26485
+ function resolveWholeSeriesPricingState(offering, selectedPricingOptionId, selectedSlidingAmountOrNowInput, nowInput = {}) {
26486
+ const selection = normalizePricingSelectionInput(selectedSlidingAmountOrNowInput, nowInput);
26487
+ const currency = offering.pricing.currency;
26488
+ switch (offering.pricing.pricingStrategy) {
26489
+ case "free": return resolveFreePricing(currency);
26490
+ case "single": return resolveSinglePricing(offering.pricing.singlePriceAmount ?? 0, currency);
26491
+ case "tiered": return resolveTieredPricing(offering, selectedPricingOptionId, selection.nowInput);
26492
+ case "sliding_scale": return resolveSlidingScalePricing(offering, selection.selectedSlidingAmount);
26493
+ }
26494
+ }
26495
+ function normalizePricingSelectionInput(selectedSlidingAmountOrNowInput, nowInput) {
26496
+ return typeof selectedSlidingAmountOrNowInput === "object" && selectedSlidingAmountOrNowInput !== null ? {
26497
+ selectedSlidingAmount: null,
26498
+ nowInput: selectedSlidingAmountOrNowInput
26499
+ } : {
26500
+ selectedSlidingAmount: typeof selectedSlidingAmountOrNowInput === "number" || selectedSlidingAmountOrNowInput === null ? selectedSlidingAmountOrNowInput : null,
26501
+ nowInput
26502
+ };
26503
+ }
26504
+ function resolveFreePricing(currency) {
26505
+ return {
26506
+ currency,
26507
+ display: {
26508
+ kind: "free",
26509
+ currency
26510
+ },
26511
+ selectableOptions: [],
26512
+ requiresSelection: false,
26513
+ selectedOption: null,
26514
+ slidingScale: null,
26515
+ selectedSlidingAmount: null,
26516
+ selectedPriceAmount: 0,
26517
+ selectedRequiresPayment: false,
26518
+ hasPaidSelection: false,
26519
+ hasFreeSelection: true
26520
+ };
26521
+ }
26522
+ function resolveSinglePricing(amount, currency) {
26523
+ return {
26524
+ currency,
26525
+ display: toExactOrFreeDisplay(amount, currency),
26526
+ selectableOptions: [],
26527
+ requiresSelection: false,
26528
+ selectedOption: null,
26529
+ slidingScale: null,
26530
+ selectedSlidingAmount: null,
26531
+ selectedPriceAmount: amount,
26532
+ selectedRequiresPayment: amount > 0,
26533
+ hasPaidSelection: amount > 0,
26534
+ hasFreeSelection: amount <= 0
26535
+ };
26536
+ }
26537
+ function resolveTieredPricing(offering, selectedPricingOptionId, nowInput) {
26538
+ const currency = offering.pricing.currency;
26539
+ const selectableOptions = getSelectableWholeSeriesPricingOptionsForNow(offering, resolvePlanningDateInput(nowInput));
26540
+ const selectedOption = resolveSelectedTier(selectableOptions, selectedPricingOptionId);
26541
+ return {
26542
+ currency,
26543
+ display: resolveTieredDisplay(selectableOptions.reduce((lowest, option) => lowest === null || option.priceAmount < lowest ? option.priceAmount : lowest, null), selectableOptions.length, currency),
26544
+ selectableOptions,
26545
+ requiresSelection: selectableOptions.length > 1,
26546
+ selectedOption,
26547
+ slidingScale: null,
26548
+ selectedSlidingAmount: null,
26549
+ selectedPriceAmount: selectedOption?.priceAmount ?? null,
26550
+ selectedRequiresPayment: (selectedOption?.priceAmount ?? 0) > 0,
26551
+ hasPaidSelection: selectableOptions.some((option) => option.priceAmount > 0),
26552
+ hasFreeSelection: selectableOptions.some((option) => option.priceAmount === 0)
26553
+ };
26554
+ }
26555
+ function resolveSelectedTier(options, selectedId) {
26556
+ return (selectedId ? options.find((option) => option.id === selectedId) : null) ?? (options.length === 1 ? options[0] ?? null : null);
26557
+ }
26558
+ function resolveTieredDisplay(lowestAmount, optionCount, currency) {
26559
+ if (lowestAmount === null) return {
26560
+ kind: "unavailable",
26561
+ currency
26562
+ };
26563
+ return optionCount > 1 && lowestAmount > 0 ? {
26564
+ kind: "from",
26565
+ amount: lowestAmount,
26566
+ currency
26567
+ } : toExactOrFreeDisplay(lowestAmount, currency);
26568
+ }
26569
+ function resolveSlidingScalePricing(offering, selectedSlidingAmount) {
26570
+ const currency = offering.pricing.currency;
26571
+ const minAmount = offering.pricing.slidingMinAmount ?? null;
26572
+ const maxAmount = offering.pricing.slidingMaxAmount ?? null;
26573
+ if (minAmount === null || maxAmount === null || minAmount < 0 || maxAmount < minAmount) return unavailableSlidingScale(currency);
26574
+ const selectedAmount = Number.isFinite(selectedSlidingAmount) ? selectedSlidingAmount : null;
26575
+ return {
26576
+ currency,
26577
+ display: {
26578
+ kind: "range",
26579
+ minAmount,
26580
+ maxAmount,
26581
+ currency
26582
+ },
26583
+ selectableOptions: [],
26584
+ requiresSelection: selectedAmount === null,
26585
+ selectedOption: null,
26586
+ slidingScale: {
26587
+ minAmount,
26588
+ maxAmount,
26589
+ suggestedAmount: offering.pricing.slidingSuggestedAmount ?? null
26590
+ },
26591
+ selectedSlidingAmount: selectedAmount,
26592
+ selectedPriceAmount: selectedAmount,
26593
+ selectedRequiresPayment: (selectedAmount ?? 0) > 0,
26594
+ hasPaidSelection: maxAmount > 0,
26595
+ hasFreeSelection: minAmount === 0
26596
+ };
26597
+ }
26598
+ function unavailableSlidingScale(currency) {
26599
+ return {
26600
+ currency,
26601
+ display: {
26602
+ kind: "unavailable",
26603
+ currency
26604
+ },
26605
+ selectableOptions: [],
26606
+ requiresSelection: true,
26607
+ selectedOption: null,
26608
+ slidingScale: null,
26609
+ selectedSlidingAmount: null,
26610
+ selectedPriceAmount: null,
26611
+ selectedRequiresPayment: false,
26612
+ hasPaidSelection: false,
26613
+ hasFreeSelection: false
26614
+ };
26615
+ }
26616
+ //#endregion
26562
26617
  //#region ../blocks/src/system/blocks/events/whole-series/schemas.ts
26563
26618
  const wholeSeriesVenueSchema = z.object({
26564
26619
  id: z.string(),
@@ -26618,6 +26673,13 @@ const publicWholeSeriesOfferingSchema = z.object({
26618
26673
  title: z.string(),
26619
26674
  slug: z.string(),
26620
26675
  description: z.unknown().nullable(),
26676
+ deliveryMode: z.enum([
26677
+ "in_person",
26678
+ "online",
26679
+ "hybrid"
26680
+ ]),
26681
+ waitlistEnabled: z.boolean(),
26682
+ requireGuestDetails: z.boolean(),
26621
26683
  teamMembers: z.array(wholeSeriesTeamMemberSummarySchema).optional(),
26622
26684
  enrollmentOpen: z.boolean(),
26623
26685
  pricing: wholeSeriesPricingSchema,
@@ -26733,10 +26795,11 @@ const mixedPriceDisplaySchema = z.object({
26733
26795
  paidToAmount: z.number(),
26734
26796
  currency: z.string()
26735
26797
  });
26736
- const publicCoursePriceDisplaySchema = z.discriminatedUnion("kind", [
26798
+ const publicWholeSeriesPriceDisplaySchema = z.discriminatedUnion("kind", [
26737
26799
  freePriceDisplaySchema,
26738
26800
  exactPriceDisplaySchema,
26739
26801
  fromPriceDisplaySchema,
26802
+ rangePriceDisplaySchema,
26740
26803
  unavailablePriceDisplaySchema
26741
26804
  ]);
26742
26805
  z.discriminatedUnion("kind", [
@@ -26751,8 +26814,8 @@ z.discriminatedUnion("kind", [
26751
26814
  label: z.string()
26752
26815
  }),
26753
26816
  z.object({
26754
- kind: z.literal("course"),
26755
- display: publicCoursePriceDisplaySchema
26817
+ kind: z.literal("whole_series"),
26818
+ display: publicWholeSeriesPriceDisplaySchema
26756
26819
  })
26757
26820
  ]);
26758
26821
  const publicEventTicketTypePriceDisplaySchema = z.union([
@@ -26854,10 +26917,10 @@ const publicEventPricingSchema = z.discriminatedUnion("kind", [
26854
26917
  })
26855
26918
  }),
26856
26919
  z.object({
26857
- kind: z.literal("course"),
26920
+ kind: z.literal("whole_series"),
26858
26921
  display: z.object({
26859
- kind: z.literal("course"),
26860
- display: publicCoursePriceDisplaySchema
26922
+ kind: z.literal("whole_series"),
26923
+ display: publicWholeSeriesPriceDisplaySchema
26861
26924
  })
26862
26925
  }),
26863
26926
  z.object({
@@ -27274,7 +27337,8 @@ function resolveEventRegistrationScope(context) {
27274
27337
  };
27275
27338
  return { kind: "unscoped" };
27276
27339
  }
27277
- function applyEventRegistrationScope(events, scope) {
27340
+ function resolveEventRegistrationScopedEvents(events, context) {
27341
+ const scope = resolveEventRegistrationScope(context);
27278
27342
  switch (scope.kind) {
27279
27343
  case "occurrenceSeries":
27280
27344
  case "pageSurfaceSeries": return events.filter((event) => event.seriesId === scope.seriesId);
@@ -27286,9 +27350,6 @@ function applyEventRegistrationScope(events, scope) {
27286
27350
  case "unscoped": return [...events];
27287
27351
  }
27288
27352
  }
27289
- function resolveEventRegistrationScopedEvents(events, context) {
27290
- return applyEventRegistrationScope(events, resolveEventRegistrationScope(context));
27291
- }
27292
27353
  //#endregion
27293
27354
  //#region ../blocks/src/system/runtime/nodes/event-registration/registrationSurface.ts
27294
27355
  function planEventRegistrationScope(input) {
@@ -27382,14 +27443,14 @@ function isRecord$6(value) {
27382
27443
  }
27383
27444
  function isPublicEventPricing(value) {
27384
27445
  if (!isRecord$6(value) || typeof value.kind !== "string") return false;
27385
- 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";
27446
+ 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";
27386
27447
  }
27387
27448
  function isPublicEventTicketType(value) {
27388
27449
  return isRecord$6(value) && typeof value.id === "string";
27389
27450
  }
27390
27451
  function readTicketTypePriceDisplay(value, currency) {
27391
27452
  const display = readLegacyPriceDisplay(value, currency);
27392
- return display.kind === "course" || display.kind === "external" ? {
27453
+ return display.kind === "whole_series" || display.kind === "external" ? {
27393
27454
  kind: "unavailable",
27394
27455
  currency
27395
27456
  } : display;
@@ -27447,11 +27508,11 @@ function readLegacyPriceDisplay(value, currency) {
27447
27508
  kind: "unavailable",
27448
27509
  currency: displayCurrency
27449
27510
  };
27450
- case "course": return isRecord$6(value.display) ? {
27451
- kind: "course",
27511
+ case "whole_series": return isRecord$6(value.display) ? {
27512
+ kind: "whole_series",
27452
27513
  display: readCoursePriceDisplay(value.display, displayCurrency)
27453
27514
  } : {
27454
- kind: "course",
27515
+ kind: "whole_series",
27455
27516
  display: {
27456
27517
  kind: "unavailable",
27457
27518
  currency: displayCurrency
@@ -27577,7 +27638,7 @@ function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep) {
27577
27638
  //#endregion
27578
27639
  //#region ../blocks/src/system/runtime/nodes/event-registration/registrationDerivations.ts
27579
27640
  function eventMatchesOccurrenceId(event, occurrenceId) {
27580
- return event.registrationOccurrenceId === occurrenceId || event.publicEventId === occurrenceId;
27641
+ return event.registrationSubject.kind === "occurrence" && (event.registrationSubject.occurrenceId === occurrenceId || event.selectionId === occurrenceId);
27581
27642
  }
27582
27643
  function findPreSelectedEvent(input) {
27583
27644
  const occurrenceContext = input.occurrenceContext;
@@ -27603,12 +27664,127 @@ function toRegistrationEvent(event) {
27603
27664
  return {
27604
27665
  ...event,
27605
27666
  pricing: resolveRuntimeEventPricing(event),
27606
- publicEventId: event.id,
27607
- registrationOccurrenceId: event.occurrenceId
27667
+ selectionId: event.id,
27668
+ registrationSubject: {
27669
+ kind: "occurrence",
27670
+ occurrenceId: event.occurrenceId
27671
+ }
27608
27672
  };
27609
27673
  }
27610
27674
  function toRegistrationEvents(events) {
27611
- return events.map(toRegistrationEvent);
27675
+ return events.filter((event) => event.bookingScope === "single_occurrence").map(toRegistrationEvent);
27676
+ }
27677
+ function toWholeSeriesTicketType(option) {
27678
+ return {
27679
+ ...option,
27680
+ capacityMode: option.capacityLimit === null ? "unlimited" : "limited",
27681
+ attendanceScope: option.attendanceScope ?? void 0,
27682
+ availability: {
27683
+ kind: "available",
27684
+ remainingCapacity: option.capacityLimit
27685
+ }
27686
+ };
27687
+ }
27688
+ function toWholeSeriesPricing(offering) {
27689
+ const resolved = resolveWholeSeriesPricingState(offering);
27690
+ switch (offering.pricing.pricingStrategy) {
27691
+ case "free": return {
27692
+ kind: "free_registration",
27693
+ currency: offering.currency,
27694
+ display: {
27695
+ kind: "free",
27696
+ currency: offering.currency
27697
+ }
27698
+ };
27699
+ case "single": {
27700
+ const amount = offering.pricing.singlePriceAmount ?? 0;
27701
+ return amount === 0 ? {
27702
+ kind: "free_registration",
27703
+ currency: offering.currency,
27704
+ display: {
27705
+ kind: "free",
27706
+ currency: offering.currency
27707
+ }
27708
+ } : {
27709
+ kind: "single_paid",
27710
+ amount,
27711
+ currency: offering.currency,
27712
+ display: {
27713
+ kind: "exact",
27714
+ amount,
27715
+ currency: offering.currency
27716
+ }
27717
+ };
27718
+ }
27719
+ case "tiered": return {
27720
+ kind: "ticket_types",
27721
+ currency: offering.currency,
27722
+ ticketTypes: resolved.selectableOptions.map((option) => toWholeSeriesTicketType(option)),
27723
+ display: resolved.display
27724
+ };
27725
+ case "sliding_scale": return {
27726
+ kind: "sliding_scale",
27727
+ minAmount: offering.pricing.slidingMinAmount ?? 0,
27728
+ maxAmount: offering.pricing.slidingMaxAmount ?? 0,
27729
+ suggestedAmount: offering.pricing.slidingSuggestedAmount ?? null,
27730
+ currency: offering.currency,
27731
+ display: {
27732
+ kind: "range",
27733
+ minAmount: offering.pricing.slidingMinAmount ?? 0,
27734
+ maxAmount: offering.pricing.slidingMaxAmount ?? 0,
27735
+ currency: offering.currency
27736
+ }
27737
+ };
27738
+ }
27739
+ }
27740
+ function toAttendanceModes(offering) {
27741
+ return (offering.deliveryMode === "hybrid" ? ["in_person", "online"] : [offering.deliveryMode]).map((mode) => ({
27742
+ mode,
27743
+ capacity: offering.enrollmentCapacity,
27744
+ registeredCount: offering.enrolledCount,
27745
+ availableSpots: offering.availableSpots,
27746
+ waitlistEnabled: offering.waitlistEnabled
27747
+ }));
27748
+ }
27749
+ function toWholeSeriesRegistrationEvent(offering) {
27750
+ const firstSession = offering.sessions[0];
27751
+ const lastSession = offering.sessions[offering.sessions.length - 1];
27752
+ return {
27753
+ selectionId: offering.eventSeriesId,
27754
+ registrationSubject: {
27755
+ kind: "wholeSeries",
27756
+ eventSeriesId: offering.eventSeriesId,
27757
+ sessions: offering.sessions
27758
+ },
27759
+ seriesId: offering.eventSeriesId,
27760
+ title: offering.title,
27761
+ startsAt: firstSession?.startsAt ?? "",
27762
+ endsAt: lastSession?.endsAt ?? firstSession?.endsAt ?? "",
27763
+ bookingAvailability: offering.enrollmentOpen ? { kind: "open" } : {
27764
+ kind: "closed",
27765
+ reason: "enrollment_closed"
27766
+ },
27767
+ deliveryMode: offering.deliveryMode,
27768
+ attendanceModes: toAttendanceModes(offering),
27769
+ capacity: offering.enrollmentCapacity,
27770
+ registeredCount: offering.enrolledCount,
27771
+ availableSpots: offering.availableSpots,
27772
+ waitlistEnabled: offering.waitlistEnabled,
27773
+ venue: offering.venue ? {
27774
+ ...offering.venue,
27775
+ location: null
27776
+ } : null,
27777
+ eventCategory: null,
27778
+ teamMembers: offering.teamMembers,
27779
+ status: offering.status,
27780
+ timeZone: firstSession?.timeZone ?? "UTC",
27781
+ pricing: toWholeSeriesPricing(offering),
27782
+ paymentTerms: offering.paymentTerms,
27783
+ consent: offering.consent,
27784
+ requireGuestDetails: offering.requireGuestDetails,
27785
+ acceptsPasses: false,
27786
+ acceptsMemberships: offering.acceptsMemberships
27787
+ };
27612
27788
  }
27613
27789
  //#endregion
27614
27790
  //#region ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
@@ -27634,11 +27810,7 @@ const eventRegistrationHydrationSchemaShape = {
27634
27810
  maxTickets: z.string().optional(),
27635
27811
  showVenue: z.boolean().optional(),
27636
27812
  showCapacity: z.boolean().optional(),
27637
- showSessions: z.boolean().optional(),
27638
- showPrice: z.boolean().optional(),
27639
27813
  successMessage: z.string().optional(),
27640
- waitlistMessage: z.string().optional(),
27641
- membershipMessage: z.string().optional(),
27642
27814
  buttonVariant: registrationButtonVariantSchema.optional(),
27643
27815
  overlayEnabled: z.boolean().optional(),
27644
27816
  spamProtectionEnabled: z.boolean().optional(),
@@ -27708,6 +27880,15 @@ function resolveWholeSeriesOffering(source) {
27708
27880
  return source.wholeSeriesOffering ?? source.subjectWholeSeriesOffering ?? null;
27709
27881
  }
27710
27882
  function buildEventRegistrationShellStepLabels(source) {
27883
+ const selectedOffering = resolveWholeSeriesOffering(source);
27884
+ if (selectedOffering) {
27885
+ const selectedEvent = toWholeSeriesRegistrationEvent(selectedOffering);
27886
+ return getWizardStepsForContext(true, resolveEventRequiresPayment({
27887
+ eligibility: null,
27888
+ selectedTicketType: null,
27889
+ event: selectedEvent
27890
+ })).map((step) => shellLabelForRegistrationStep(step, [selectedEvent]));
27891
+ }
27711
27892
  const scopedEvents = scopeEventRegistrationEvents(source);
27712
27893
  if (scopedEvents.length === 0) return EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
27713
27894
  const preSelectedEvent = findPreSelectedEvent({
@@ -27722,13 +27903,16 @@ function buildEventRegistrationShellStepLabels(source) {
27722
27903
  }) : false).map((step) => shellLabelForRegistrationStep(step, scopedEvents));
27723
27904
  }
27724
27905
  function scopeEventRegistrationEvents(source) {
27906
+ return toRegistrationEvents(scopeEventRegistrationSourceEvents(source));
27907
+ }
27908
+ function scopeEventRegistrationSourceEvents(source) {
27725
27909
  const scope = planEventRegistrationScope({
27726
- events: toRegistrationEvents(source.events ?? []),
27910
+ events: source.events ?? [],
27727
27911
  wholeSeriesOffering: source.wholeSeriesOffering,
27728
27912
  occurrenceContext: source.occurrenceContext,
27729
27913
  subject: source.subject
27730
27914
  });
27731
- return scope.kind === "invalidSelectedRun" ? [] : scope.events;
27915
+ return scope.kind === "invalidSelectedRun" ? [] : [...scope.events];
27732
27916
  }
27733
27917
  function shellLabelForRegistrationStep(step, events) {
27734
27918
  switch (step) {
@@ -27760,30 +27944,29 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
27760
27944
  source: createZodCodec(eventRegistrationSourceSchema),
27761
27945
  render: createZodCodec(eventRegistrationRenderSchema)
27762
27946
  },
27763
- buildRender: (source) => ({
27764
- display: buildEventRegistrationDisplay(source),
27765
- hydration: {
27766
- occurrenceContext: source.occurrenceContext ?? null,
27767
- subject: source.subject ?? null,
27768
- events: source.events ?? null,
27769
- wholeSeriesOfferings: source.wholeSeriesOfferings ?? null,
27770
- wholeSeriesOffering: resolveWholeSeriesOffering(source),
27771
- maxTickets: source.maxTickets ?? void 0,
27772
- showVenue: source.showVenue,
27773
- showCapacity: source.showCapacity,
27774
- showSessions: source.showSessions,
27775
- showPrice: source.showPrice,
27776
- successMessage: source.successMessage,
27777
- waitlistMessage: source.waitlistMessage,
27778
- membershipMessage: source.membershipMessage,
27779
- buttonVariant: source.buttonVariant,
27780
- overlayEnabled: source.overlayEnabled,
27781
- spamProtectionEnabled: source.spamProtectionEnabled,
27782
- supportEmail: source.supportEmail,
27783
- sitePasses: source.sitePasses ?? null,
27784
- siteMemberships: source.siteMemberships ?? null
27785
- }
27786
- })
27947
+ buildRender: (source) => {
27948
+ const events = source.events == null ? null : scopeEventRegistrationSourceEvents(source);
27949
+ return {
27950
+ display: buildEventRegistrationDisplay(source),
27951
+ hydration: {
27952
+ occurrenceContext: source.occurrenceContext ?? null,
27953
+ subject: source.subject ?? null,
27954
+ events,
27955
+ wholeSeriesOfferings: source.wholeSeriesOfferings ?? null,
27956
+ wholeSeriesOffering: resolveWholeSeriesOffering(source),
27957
+ maxTickets: source.maxTickets ?? void 0,
27958
+ showVenue: source.showVenue,
27959
+ showCapacity: source.showCapacity,
27960
+ successMessage: source.successMessage,
27961
+ buttonVariant: source.buttonVariant,
27962
+ overlayEnabled: source.overlayEnabled,
27963
+ spamProtectionEnabled: source.spamProtectionEnabled,
27964
+ supportEmail: source.supportEmail,
27965
+ sitePasses: source.sitePasses ?? null,
27966
+ siteMemberships: source.siteMemberships ?? null
27967
+ }
27968
+ };
27969
+ }
27787
27970
  });
27788
27971
  function normalizeEventRegistrationEventInput(value) {
27789
27972
  if (!isRecord$5(value)) return value;
@@ -27891,24 +28074,6 @@ const eventRegistrationBlockDefinition = {
27891
28074
  defaultValue: true,
27892
28075
  ui: { intent: "display" }
27893
28076
  },
27894
- {
27895
- id: "showSessions",
27896
- type: "boolean",
27897
- label: "Show complete schedule",
27898
- description: "Display every session for whole-series registrations",
27899
- required: false,
27900
- defaultValue: true,
27901
- ui: { intent: "display" }
27902
- },
27903
- {
27904
- id: "showPrice",
27905
- type: "boolean",
27906
- label: "Show price",
27907
- description: "Display the whole-series price",
27908
- required: false,
27909
- defaultValue: true,
27910
- ui: { intent: "display" }
27911
- },
27912
28077
  {
27913
28078
  id: "successMessage",
27914
28079
  type: "text",
@@ -27919,26 +28084,6 @@ const eventRegistrationBlockDefinition = {
27919
28084
  defaultValue: "Thank you for registering! Check your email for confirmation details.",
27920
28085
  maxLength: 500
27921
28086
  },
27922
- {
27923
- id: "waitlistMessage",
27924
- type: "text",
27925
- label: "Waitlist message",
27926
- description: "Message shown after joining a whole-series waitlist",
27927
- required: false,
27928
- multiline: true,
27929
- defaultValue: "You've been added to the waitlist. We'll email you if a place becomes available.",
27930
- maxLength: 500
27931
- },
27932
- {
27933
- id: "membershipMessage",
27934
- type: "text",
27935
- label: "Membership registration message",
27936
- description: "Message shown when a whole-series place is covered by membership",
27937
- required: false,
27938
- multiline: true,
27939
- defaultValue: "Registered using your membership. Check your email for session details.",
27940
- maxLength: 500
27941
- },
27942
28087
  {
27943
28088
  id: "buttonText",
27944
28089
  type: "text",
@@ -27970,11 +28115,7 @@ const eventRegistrationBlockDefinition = {
27970
28115
  } },
27971
28116
  showVenue: { $bind: { from: "content.showVenue" } },
27972
28117
  showCapacity: { $bind: { from: "content.showCapacity" } },
27973
- showSessions: { $bind: { from: "content.showSessions" } },
27974
- showPrice: { $bind: { from: "content.showPrice" } },
27975
28118
  successMessage: { $bind: { from: "content.successMessage" } },
27976
- waitlistMessage: { $bind: { from: "content.waitlistMessage" } },
27977
- membershipMessage: { $bind: { from: "content.membershipMessage" } },
27978
28119
  buttonText: { $bind: {
27979
28120
  from: "content.buttonText",
27980
28121
  fallback: "Complete Registration"
@@ -28091,254 +28232,6 @@ const eventRegistrationBlockDefinition = {
28091
28232
  }
28092
28233
  };
28093
28234
  //#endregion
28094
- //#region ../blocks/src/system/runtime/nodes/course-registration.interactive.ts
28095
- const courseRegistrationHydrationSchemaShape = {
28096
- subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
28097
- courses: z.array(publicWholeSeriesOfferingSchema).nullable().optional(),
28098
- showSessions: z.boolean().optional(),
28099
- showPrice: z.boolean().optional(),
28100
- showCapacity: z.boolean().optional(),
28101
- showVenue: z.boolean().optional(),
28102
- successMessage: z.string().optional(),
28103
- waitlistMessage: z.string().optional(),
28104
- membershipMessage: z.string().optional(),
28105
- buttonVariant: registrationButtonVariantSchema.optional()
28106
- };
28107
- const courseRegistrationSourceSchema = z.object({
28108
- siteId: z.string().optional(),
28109
- apiBaseUrl: z.string().optional(),
28110
- portalToken: z.string().nullable().optional(),
28111
- ...courseRegistrationHydrationSchemaShape,
28112
- className: z.string().nullable().optional(),
28113
- buttonText: z.string().nullable().optional(),
28114
- stage: previewStageSchema.optional()
28115
- });
28116
- const courseRegistrationDisplaySchema = z.object({
28117
- kind: z.literal("course-registration"),
28118
- state: z.literal("shell"),
28119
- className: z.string().nullable(),
28120
- summaryButtonText: z.string()
28121
- });
28122
- const courseRegistrationHydrationSchema = z.object(courseRegistrationHydrationSchemaShape);
28123
- const courseRegistrationRenderSchema = z.object({
28124
- display: courseRegistrationDisplaySchema,
28125
- hydration: courseRegistrationHydrationSchema
28126
- });
28127
- z.object({
28128
- siteId: z.string().optional(),
28129
- apiBaseUrl: z.string().optional(),
28130
- portalToken: z.string().nullable().optional(),
28131
- stage: previewStageSchema.optional()
28132
- });
28133
- function buildCourseRegistrationDisplay(source) {
28134
- return {
28135
- kind: "course-registration",
28136
- state: "shell",
28137
- className: source.className ?? null,
28138
- summaryButtonText: source.buttonText?.trim() || "Sign up"
28139
- };
28140
- }
28141
- const courseRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
28142
- kind: "client-owned",
28143
- contracts: {
28144
- source: createZodCodec(courseRegistrationSourceSchema),
28145
- render: createZodCodec(courseRegistrationRenderSchema)
28146
- },
28147
- buildRender: (source) => ({
28148
- display: buildCourseRegistrationDisplay(source),
28149
- hydration: {
28150
- subject: source.subject ?? null,
28151
- courses: source.courses ?? null,
28152
- showSessions: source.showSessions,
28153
- showPrice: source.showPrice,
28154
- showCapacity: source.showCapacity,
28155
- showVenue: source.showVenue,
28156
- successMessage: source.successMessage,
28157
- waitlistMessage: source.waitlistMessage,
28158
- membershipMessage: source.membershipMessage,
28159
- buttonVariant: source.buttonVariant
28160
- }
28161
- })
28162
- });
28163
- const courseRegistrationBlockDefinition = {
28164
- manifest: createBlockManifest({
28165
- id: "block.course-registration",
28166
- version: "1.0.0",
28167
- title: "Course Registration",
28168
- titleSource: "heading",
28169
- description: "Enrollment form for multi-session courses",
28170
- category: "interactive",
28171
- contentSource: { kind: "inline" },
28172
- tags: [
28173
- "courses",
28174
- "enrollment",
28175
- "booking",
28176
- "form",
28177
- "signup",
28178
- "education"
28179
- ],
28180
- icon: "GraduationCap",
28181
- styleTokens: {
28182
- background: "surface",
28183
- typography: "body",
28184
- spacing: "md"
28185
- },
28186
- behaviours: {
28187
- supportsThemeSwitching: true,
28188
- inlineEditing: false,
28189
- animation: false,
28190
- paletteHidden: false
28191
- },
28192
- additionalFields: [
28193
- {
28194
- id: "heading",
28195
- type: "text",
28196
- label: "Heading",
28197
- description: "Main heading for the registration form",
28198
- required: false,
28199
- multiline: false,
28200
- defaultValue: "Sign up"
28201
- },
28202
- {
28203
- id: "description",
28204
- type: "richText",
28205
- label: "Description",
28206
- description: "Optional introductory text",
28207
- required: false
28208
- },
28209
- {
28210
- id: "showSessions",
28211
- type: "boolean",
28212
- label: "Show sessions",
28213
- description: "Display the list of course sessions",
28214
- required: false,
28215
- defaultValue: true,
28216
- ui: { intent: "display" }
28217
- },
28218
- {
28219
- id: "showPrice",
28220
- type: "boolean",
28221
- label: "Show price",
28222
- description: "Display the course price",
28223
- required: false,
28224
- defaultValue: true,
28225
- ui: { intent: "display" }
28226
- },
28227
- {
28228
- id: "showCapacity",
28229
- type: "boolean",
28230
- label: "Show available spots",
28231
- description: "Display remaining enrollment capacity",
28232
- required: false,
28233
- defaultValue: true,
28234
- ui: { intent: "display" }
28235
- },
28236
- {
28237
- id: "showVenue",
28238
- type: "boolean",
28239
- label: "Show venue",
28240
- description: "Display venue information",
28241
- required: false,
28242
- defaultValue: true,
28243
- ui: { intent: "display" }
28244
- },
28245
- {
28246
- id: "successMessage",
28247
- type: "text",
28248
- label: "Success message",
28249
- description: "Message shown after successful enrollment",
28250
- required: false,
28251
- multiline: true,
28252
- defaultValue: "You're enrolled! Check your email for confirmation and session details.",
28253
- maxLength: 500
28254
- },
28255
- {
28256
- id: "waitlistMessage",
28257
- type: "text",
28258
- label: "Waitlist message",
28259
- description: "Message when added to waitlist",
28260
- required: false,
28261
- multiline: true,
28262
- defaultValue: "You've been added to the waitlist. We'll email you a claim link if a spot opens up.",
28263
- maxLength: 500
28264
- },
28265
- {
28266
- id: "membershipMessage",
28267
- type: "text",
28268
- label: "Membership enrollment message",
28269
- description: "Message when enrolled using a membership",
28270
- required: false,
28271
- multiline: true,
28272
- defaultValue: "Enrolled using your membership! Check your email for session details.",
28273
- maxLength: 500
28274
- },
28275
- {
28276
- id: "buttonText",
28277
- type: "text",
28278
- label: "Submit button text",
28279
- description: "Text for the enrollment submit button",
28280
- required: false,
28281
- multiline: false,
28282
- defaultValue: "Sign up",
28283
- maxLength: 40
28284
- },
28285
- createButtonVariantField()
28286
- ],
28287
- layout: [styledSection({
28288
- baseClass: "",
28289
- spacing: "spacious",
28290
- children: sectionContainer([
28291
- text({ as: "h2" }, bind("content.heading"), when("content.heading")),
28292
- richText({ className: "rb-prose rb-max-w-none" }, bind("content.description"), when("content.description")),
28293
- courseRegistration(withApiBindings({
28294
- subject: { $bind: {
28295
- from: "$root.subject",
28296
- fallback: null
28297
- } },
28298
- portalToken: { $bind: {
28299
- from: "$root.portalToken",
28300
- fallback: null
28301
- } },
28302
- showSessions: { $bind: { from: "content.showSessions" } },
28303
- showPrice: { $bind: { from: "content.showPrice" } },
28304
- showCapacity: { $bind: { from: "content.showCapacity" } },
28305
- showVenue: { $bind: { from: "content.showVenue" } },
28306
- successMessage: { $bind: { from: "content.successMessage" } },
28307
- waitlistMessage: { $bind: { from: "content.waitlistMessage" } },
28308
- membershipMessage: { $bind: { from: "content.membershipMessage" } },
28309
- buttonText: { $bind: {
28310
- from: "content.buttonText",
28311
- fallback: "Sign up"
28312
- } },
28313
- buttonVariant: { $bind: {
28314
- from: "content.buttonVariant",
28315
- fallback: "primary"
28316
- } },
28317
- courses: { $bind: { from: "data.courses" } },
28318
- stage: { $bind: {
28319
- from: "$root.previewStage",
28320
- fallback: "published"
28321
- } }
28322
- }))
28323
- ], { gap: "lg" })
28324
- })]
28325
- }),
28326
- runtime: courseRegistrationBlockRuntime,
28327
- dataSchemas: { courses: publicWholeSeriesOfferingsArraySchema.optional() },
28328
- dataLoaders: { courses: {
28329
- endpoint: "listPublicWholeSeriesOfferings",
28330
- params: {
28331
- siteId: { $bind: { from: "$root.siteId" } },
28332
- limit: "50",
28333
- stage: { $bind: {
28334
- from: "$root.previewStage",
28335
- fallback: "published"
28336
- } }
28337
- },
28338
- mode: "server"
28339
- } }
28340
- };
28341
- //#endregion
28342
28235
  //#region ../blocks/src/system/blocks/event-details.ts
28343
28236
  /**
28344
28237
  * Event Details Block
@@ -28585,200 +28478,6 @@ const eventDetailsBlockDefinition = {
28585
28478
  mode: "server"
28586
28479
  } }
28587
28480
  };
28588
- const courseDetailsBlockDefinition = {
28589
- manifest: createBlockManifest({
28590
- id: "block.course-details",
28591
- version: "1.0.0",
28592
- title: "Course Details",
28593
- titleSource: "heading",
28594
- description: "Schedule, venue, price, and enrollment status for a course",
28595
- category: "content",
28596
- contentSource: { kind: "entries" },
28597
- tags: [
28598
- "courses",
28599
- "schedule",
28600
- "sessions",
28601
- "venue",
28602
- "pricing"
28603
- ],
28604
- icon: "GraduationCap",
28605
- styleTokens: {
28606
- background: "surface",
28607
- typography: "body",
28608
- spacing: "md"
28609
- },
28610
- behaviours: {
28611
- supportsThemeSwitching: true,
28612
- inlineEditing: false,
28613
- animation: false,
28614
- paletteHidden: false
28615
- },
28616
- additionalFields: [
28617
- {
28618
- id: "heading",
28619
- type: "text",
28620
- label: "Heading",
28621
- description: "Optional heading shown above course details",
28622
- required: false,
28623
- multiline: false,
28624
- defaultValue: "Course details"
28625
- },
28626
- {
28627
- id: "showTitle",
28628
- type: "boolean",
28629
- label: "Show course title",
28630
- required: false,
28631
- defaultValue: false,
28632
- ui: { intent: "display" }
28633
- },
28634
- {
28635
- id: "showDescription",
28636
- type: "boolean",
28637
- label: "Show course description",
28638
- description: "Render the course description from the bookings course record",
28639
- required: false,
28640
- defaultValue: false,
28641
- ui: { intent: "display" }
28642
- },
28643
- {
28644
- id: "showSessions",
28645
- type: "boolean",
28646
- label: "Show sessions",
28647
- required: false,
28648
- defaultValue: true,
28649
- ui: { intent: "display" }
28650
- },
28651
- {
28652
- id: "sessionsLimit",
28653
- type: "select",
28654
- label: "Sessions limit",
28655
- required: false,
28656
- multiple: false,
28657
- defaultValue: "10",
28658
- options: [
28659
- {
28660
- value: "3",
28661
- label: "3 sessions"
28662
- },
28663
- {
28664
- value: "5",
28665
- label: "5 sessions"
28666
- },
28667
- {
28668
- value: "10",
28669
- label: "10 sessions"
28670
- },
28671
- {
28672
- value: "all",
28673
- label: "All sessions"
28674
- }
28675
- ],
28676
- ui: { intent: "display" }
28677
- },
28678
- {
28679
- id: "showVenue",
28680
- type: "boolean",
28681
- label: "Show venue",
28682
- required: false,
28683
- defaultValue: true,
28684
- ui: { intent: "display" }
28685
- },
28686
- {
28687
- id: "showPrice",
28688
- type: "boolean",
28689
- label: "Show price",
28690
- required: false,
28691
- defaultValue: true,
28692
- ui: { intent: "display" }
28693
- },
28694
- {
28695
- id: "showCapacity",
28696
- type: "boolean",
28697
- label: "Show capacity",
28698
- required: false,
28699
- defaultValue: true,
28700
- ui: { intent: "display" }
28701
- },
28702
- {
28703
- id: "showEnrollmentStatus",
28704
- type: "boolean",
28705
- label: "Show enrollment status",
28706
- required: false,
28707
- defaultValue: true,
28708
- ui: { intent: "display" }
28709
- },
28710
- {
28711
- id: "showMembershipNote",
28712
- type: "boolean",
28713
- label: "Show membership note",
28714
- description: "Indicate when memberships can be used for free enrollment",
28715
- required: false,
28716
- defaultValue: true,
28717
- ui: { intent: "display" }
28718
- }
28719
- ],
28720
- layout: [styledSection({
28721
- baseClass: "",
28722
- spacing: "spacious",
28723
- children: sectionContainer([text({ as: "h2" }, bind("content.heading"), when("content.heading")), el("course-details", {
28724
- subject: { $bind: {
28725
- from: "$root.subject",
28726
- fallback: null
28727
- } },
28728
- courses: { $bind: { from: "data.courses" } },
28729
- showTitle: { $bind: {
28730
- from: "content.showTitle",
28731
- fallback: false
28732
- } },
28733
- showDescription: { $bind: {
28734
- from: "content.showDescription",
28735
- fallback: false
28736
- } },
28737
- showSessions: { $bind: {
28738
- from: "content.showSessions",
28739
- fallback: true
28740
- } },
28741
- sessionsLimit: { $bind: {
28742
- from: "content.sessionsLimit",
28743
- fallback: "10"
28744
- } },
28745
- showVenue: { $bind: {
28746
- from: "content.showVenue",
28747
- fallback: true
28748
- } },
28749
- showPrice: { $bind: {
28750
- from: "content.showPrice",
28751
- fallback: true
28752
- } },
28753
- showCapacity: { $bind: {
28754
- from: "content.showCapacity",
28755
- fallback: true
28756
- } },
28757
- showEnrollmentStatus: { $bind: {
28758
- from: "content.showEnrollmentStatus",
28759
- fallback: true
28760
- } },
28761
- showMembershipNote: { $bind: {
28762
- from: "content.showMembershipNote",
28763
- fallback: true
28764
- } }
28765
- })], { gap: "lg" })
28766
- })]
28767
- }),
28768
- dataSchemas: { courses: publicWholeSeriesOfferingsArraySchema.optional() },
28769
- dataLoaders: { courses: {
28770
- endpoint: "listPublicWholeSeriesOfferings",
28771
- params: {
28772
- siteId: { $bind: { from: "$root.siteId" } },
28773
- limit: "50",
28774
- stage: { $bind: {
28775
- from: "$root.previewStage",
28776
- fallback: "published"
28777
- } }
28778
- },
28779
- mode: "server"
28780
- } }
28781
- };
28782
28481
  const eventSpotlightBlockDefinition = {
28783
28482
  manifest: createBlockManifest({
28784
28483
  id: "block.event-spotlight",
@@ -31442,7 +31141,7 @@ const offeringsPreviewManifest = createBlockManifest({
31442
31141
  fallback: "published"
31443
31142
  } },
31444
31143
  routeCandidates: { $bind: { from: "data.routeCandidates" } },
31445
- courses: { $bind: { from: "data.courses" } },
31144
+ wholeSeriesOfferings: { $bind: { from: "data.wholeSeriesOfferings" } },
31446
31145
  ...offeringsPreviewEventDataBindings
31447
31146
  })
31448
31147
  ], { gap: "lg" }),
@@ -31459,7 +31158,7 @@ const offeringsPreviewBlockDefinition = {
31459
31158
  dataSchemas: {
31460
31159
  ...offeringsPreviewEventDataSchemas,
31461
31160
  routeCandidates: publicRouteCandidatesSchema.optional(),
31462
- courses: publicWholeSeriesOfferingsArraySchema.optional()
31161
+ wholeSeriesOfferings: publicWholeSeriesOfferingsArraySchema.optional()
31463
31162
  },
31464
31163
  dataLoaders: {
31465
31164
  ...offeringsPreviewEventDataLoaders,
@@ -31468,7 +31167,7 @@ const offeringsPreviewBlockDefinition = {
31468
31167
  params: {},
31469
31168
  mode: "server"
31470
31169
  },
31471
- courses: {
31170
+ wholeSeriesOfferings: {
31472
31171
  endpoint: "listPublicWholeSeriesOfferings",
31473
31172
  params: {
31474
31173
  siteId: { $bind: { from: "$root.siteId" } },
@@ -36435,22 +36134,6 @@ const systemBlockDefinitions = [
36435
36134
  weight: "standard"
36436
36135
  })]
36437
36136
  })),
36438
- withDesignCapability("block.course-registration", courseRegistrationBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
36439
- flow: conversionFlow,
36440
- layoutProfiles: [layoutProfile({
36441
- variantKey: "default",
36442
- family: "form",
36443
- weight: "standard"
36444
- })]
36445
- })),
36446
- withDesignCapability("block.course-details", courseDetailsBlockDefinition, scheduleDetailsCapable(), defineBlockDesignMetadata({
36447
- flow: offeringsFlow,
36448
- layoutProfiles: [layoutProfile({
36449
- variantKey: "default",
36450
- family: "stack",
36451
- weight: "standard"
36452
- })]
36453
- })),
36454
36137
  withDesignCapability("block.event-spotlight", eventSpotlightBlockDefinition, eventSpotlightCapable(), defineBlockDesignMetadata({
36455
36138
  flow: offeringsFlow,
36456
36139
  layoutProfiles: [layoutProfile({
@@ -38509,6 +38192,68 @@ function parsePublicProductCategorySelector(value) {
38509
38192
  };
38510
38193
  }
38511
38194
  //#endregion
38195
+ //#region ../api/src/bookingPaymentTermSchemas.ts
38196
+ const bookingDepositRefundPolicySchema = z.enum(["refundable", "non_refundable"]);
38197
+ const bookingInstalmentPlanSchema = z.discriminatedUnion("kind", [
38198
+ z.object({
38199
+ kind: z.literal("deposit_plus_one_remainder"),
38200
+ depositAmountCents: z.number().int().nonnegative(),
38201
+ depositRefundability: bookingDepositRefundPolicySchema,
38202
+ remainderDueCount: z.number().int().positive(),
38203
+ intervalUnit: z.enum([
38204
+ "day",
38205
+ "week",
38206
+ "month"
38207
+ ])
38208
+ }),
38209
+ z.object({
38210
+ kind: z.literal("deposit_plus_scheduled_instalments"),
38211
+ depositAmountCents: z.number().int().nonnegative(),
38212
+ depositRefundability: bookingDepositRefundPolicySchema,
38213
+ instalmentCount: z.number().int().positive(),
38214
+ intervalCount: z.number().int().positive(),
38215
+ intervalUnit: z.enum([
38216
+ "day",
38217
+ "week",
38218
+ "month"
38219
+ ])
38220
+ }),
38221
+ z.object({
38222
+ kind: z.literal("equal_scheduled_instalments"),
38223
+ instalmentCount: z.number().int().positive(),
38224
+ intervalCount: z.number().int().positive(),
38225
+ intervalUnit: z.enum([
38226
+ "day",
38227
+ "week",
38228
+ "month"
38229
+ ])
38230
+ })
38231
+ ]);
38232
+ const bookingFlexibleBalanceDueDateRuleSchema = z.discriminatedUnion("kind", [z.object({
38233
+ kind: z.literal("relative_to_start_date"),
38234
+ daysBeforeStart: z.number().int().positive()
38235
+ }), z.object({
38236
+ kind: z.literal("fixed_calendar_date"),
38237
+ dueAt: z.string().datetime()
38238
+ })]);
38239
+ const bookingFlexibleBalanceConfigSchema = z.object({
38240
+ upfrontAmountCents: z.number().int().nonnegative(),
38241
+ dueDateRule: bookingFlexibleBalanceDueDateRuleSchema,
38242
+ depositRefundability: bookingDepositRefundPolicySchema
38243
+ });
38244
+ z.discriminatedUnion("kind", [
38245
+ z.object({ kind: z.literal("upfront") }),
38246
+ z.object({ kind: z.literal("deferred_manual") }),
38247
+ z.object({
38248
+ kind: z.literal("instalment_plan"),
38249
+ plan: bookingInstalmentPlanSchema
38250
+ }),
38251
+ z.object({
38252
+ kind: z.literal("flexible_balance"),
38253
+ config: bookingFlexibleBalanceConfigSchema
38254
+ })
38255
+ ]);
38256
+ //#endregion
38512
38257
  //#region ../api/src/aiPlayground.ts
38513
38258
  /**
38514
38259
  * RFC-6902 JSON Patch Operations