@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
@@ -754,69 +754,8 @@ const ACCOUNT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
754
754
  }
755
755
  });
756
756
  //#endregion
757
- //#region ../api/src/courseEndpointDefinitions.ts
758
- const COURSE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
759
- listCourses: {
760
- path: "/sites/{siteId}/bookings/courses",
761
- method: "GET",
762
- auth: "user",
763
- responseKind: "json"
764
- },
765
- exportCoursesCsv: {
766
- path: "/sites/{siteId}/bookings/courses/export.csv",
767
- method: "GET",
768
- tags: [
769
- "site-{siteId}",
770
- "bookings",
771
- "courses-{siteId}"
772
- ],
773
- errors: [],
774
- auth: "user",
775
- responseKind: "blob"
776
- },
777
- createCourse: {
778
- path: "/sites/{siteId}/bookings/courses",
779
- method: "POST",
780
- auth: "user",
781
- responseKind: "json",
782
- errors: [
783
- "validation:invalid_input",
784
- "resource:not_found",
785
- "resource:already_exists",
786
- "resource:conflict",
787
- "server:internal_error"
788
- ]
789
- },
790
- getCourse: {
791
- path: "/sites/{siteId}/bookings/courses/{courseId}",
792
- method: "GET",
793
- auth: "user",
794
- responseKind: "json"
795
- },
796
- updateCourse: {
797
- path: "/sites/{siteId}/bookings/courses/{courseId}",
798
- method: "PATCH",
799
- auth: "user",
800
- responseKind: "json",
801
- errors: [
802
- "validation:invalid_input",
803
- "resource:not_found",
804
- "resource:conflict",
805
- "server:internal_error"
806
- ]
807
- },
808
- deleteCourse: {
809
- path: "/sites/{siteId}/bookings/courses/{courseId}",
810
- method: "DELETE",
811
- auth: "user",
812
- responseKind: "json",
813
- errors: [
814
- "validation:invalid_input",
815
- "resource:not_found",
816
- "resource:conflict",
817
- "server:internal_error"
818
- ]
819
- },
757
+ //#region ../api/src/eventSeriesRegistrationEndpointDefinitions.ts
758
+ const EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
820
759
  deleteEventOffering: {
821
760
  path: "/sites/{siteId}/bookings/event-offerings/{eventOfferingId}",
822
761
  method: "DELETE",
@@ -829,20 +768,8 @@ const COURSE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
829
768
  "server:internal_error"
830
769
  ]
831
770
  },
832
- duplicateCourse: {
833
- path: "/sites/{siteId}/bookings/courses/{courseId}/duplicate",
834
- method: "POST",
835
- auth: "user",
836
- responseKind: "json",
837
- errors: [
838
- "validation:invalid_input",
839
- "resource:not_found",
840
- "resource:already_exists",
841
- "server:internal_error"
842
- ]
843
- },
844
- changeCourseContentOwnership: {
845
- path: "/sites/{siteId}/bookings/courses/{courseId}/content-ownership",
771
+ changeEventSeriesContentOwnership: {
772
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/content-ownership",
846
773
  method: "POST",
847
774
  auth: "user",
848
775
  responseKind: "json",
@@ -853,8 +780,8 @@ const COURSE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
853
780
  "server:internal_error"
854
781
  ]
855
782
  },
856
- addCourseEnrollment: {
857
- path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments",
783
+ addEventSeriesRegistration: {
784
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations",
858
785
  method: "POST",
859
786
  auth: "user",
860
787
  responseKind: "json",
@@ -865,33 +792,21 @@ const COURSE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
865
792
  "server:internal_error"
866
793
  ]
867
794
  },
868
- listCourseEnrollments: {
869
- path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments",
795
+ listEventSeriesRegistrations: {
796
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations",
870
797
  method: "GET",
871
798
  auth: "user",
872
799
  responseKind: "json"
873
800
  },
874
- exportCourseEnrollmentsCsv: {
875
- path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments/export.csv",
801
+ exportEventSeriesRegistrationsCsv: {
802
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations/export.csv",
876
803
  method: "GET",
877
804
  auth: "user",
878
805
  errors: [],
879
806
  responseKind: "blob"
880
807
  },
881
- exportCourseWaitlistCsv: {
882
- path: "/sites/{siteId}/bookings/courses/{courseId}/waitlist/export.csv",
883
- method: "GET",
884
- tags: [
885
- "site-{siteId}",
886
- "bookings",
887
- "courses-{courseId}"
888
- ],
889
- auth: "user",
890
- responseKind: "blob",
891
- errors: []
892
- },
893
- updateCourseEnrollment: {
894
- path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments/{enrollmentId}",
808
+ updateEventSeriesRegistration: {
809
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations/{registrationId}",
895
810
  method: "PATCH",
896
811
  auth: "user",
897
812
  responseKind: "json",
@@ -1279,71 +1194,35 @@ const PUBLIC_WHOLE_SERIES_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1279
1194
  errors: ["resource:not_found", "server:internal_error"],
1280
1195
  auth: "public",
1281
1196
  responseKind: "json"
1282
- },
1283
- registerForWholeSeries: {
1284
- path: "/public/sites/{siteId}/dated-offerings/whole-series/enroll",
1285
- method: "POST",
1286
- tags: [TAG_TEMPLATES.publicWholeSeriesOfferings, "course-enrollment"],
1287
- errors: [
1288
- "auth:unauthenticated",
1289
- "auth:forbidden",
1290
- "validation:invalid_input",
1291
- "resource:not_found",
1292
- "resource:conflict",
1293
- "resource:already_exists",
1294
- "server:internal_error"
1295
- ],
1296
- auth: "public",
1297
- responseKind: "json"
1298
- },
1299
- checkWholeSeriesEligibility: {
1300
- path: "/public/sites/{siteId}/dated-offerings/whole-series/check-eligibility",
1301
- method: "POST",
1302
- tags: [TAG_TEMPLATES.publicWholeSeriesOfferings, "course-enrollment"],
1303
- errors: [
1304
- "auth:unauthenticated",
1305
- "resource:not_found",
1306
- "resource:conflict",
1307
- "server:internal_error"
1308
- ],
1309
- auth: "public",
1310
- responseKind: "json"
1311
- },
1312
- createWholeSeriesCheckout: {
1313
- path: "/public/sites/{siteId}/dated-offerings/whole-series/checkout",
1197
+ }
1198
+ });
1199
+ //#endregion
1200
+ //#region ../api/src/publicEventEndpointDefinitions.ts
1201
+ const PUBLIC_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1202
+ getPublicEventRegistrationOptions: {
1203
+ path: "/public/sites/{siteId}/events/registration-options",
1314
1204
  method: "POST",
1315
- tags: [TAG_TEMPLATES.publicWholeSeriesOfferings, "course-checkout"],
1205
+ tags: [TAG_TEMPLATES.publicEvents, "event-registration-options"],
1316
1206
  auth: "public",
1317
1207
  responseKind: "json",
1318
1208
  errors: [
1319
- "auth:unauthenticated",
1320
1209
  "validation:invalid_input",
1321
1210
  "resource:not_found",
1322
1211
  "resource:conflict",
1323
1212
  "server:internal_error"
1324
1213
  ]
1325
1214
  },
1326
- getWholeSeriesRegistrationStatus: {
1327
- path: "/public/sites/{siteId}/dated-offerings/whole-series/registration-status",
1215
+ resolveEventSubroute: {
1216
+ path: "/public/sites/{siteId}/events/subroutes/resolve",
1328
1217
  method: "GET",
1329
- tags: [TAG_TEMPLATES.publicWholeSeriesOfferings, "course-checkout"],
1330
- errors: ["resource:not_found", "server:internal_error"],
1218
+ revalidate: 60,
1219
+ tags: [TAG_TEMPLATES.publicEvents, "event-subroute"],
1331
1220
  auth: "public",
1332
- responseKind: "json"
1221
+ responseKind: "json",
1222
+ errors: []
1333
1223
  }
1334
1224
  });
1335
1225
  //#endregion
1336
- //#region ../api/src/publicEventEndpointDefinitions.ts
1337
- const PUBLIC_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({ resolveEventSubroute: {
1338
- path: "/public/sites/{siteId}/events/subroutes/resolve",
1339
- method: "GET",
1340
- revalidate: 60,
1341
- tags: [TAG_TEMPLATES.publicEvents, "event-subroute"],
1342
- auth: "public",
1343
- responseKind: "json",
1344
- errors: []
1345
- } });
1346
- //#endregion
1347
1226
  //#region ../api/src/siteApiKeyEndpointDefinitions.ts
1348
1227
  const SITE_API_KEY_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1349
1228
  listSiteApiKeys: {
@@ -1711,7 +1590,7 @@ const SDK_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1711
1590
  }), 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, {
1712
1591
  ...NEWSLETTER_ENDPOINT_DEFINITIONS,
1713
1592
  ...APPOINTMENT_ENDPOINT_DEFINITIONS,
1714
- ...COURSE_ENDPOINT_DEFINITIONS
1593
+ ...EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS
1715
1594
  }, 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 };
1716
1595
  z.object({ refreshToken: z.string().min(1).max(4096) }).strict();
1717
1596
  z.object({
@@ -1887,14 +1766,14 @@ function publicEventPricingType(pricing) {
1887
1766
  case "single_paid":
1888
1767
  case "ticket_types":
1889
1768
  case "sliding_scale":
1890
- case "course": return isFreePublicEventPriceDisplay(pricing.display) ? "free" : "paid";
1769
+ case "whole_series": return isFreePublicEventPriceDisplay(pricing.display) ? "free" : "paid";
1891
1770
  case "external": return "external";
1892
1771
  }
1893
1772
  }
1894
1773
  function isFreePublicEventPriceDisplay(display) {
1895
1774
  switch (display.kind) {
1896
1775
  case "free": return true;
1897
- case "course": return display.display.kind === "free";
1776
+ case "whole_series": return display.display.kind === "free";
1898
1777
  case "exact":
1899
1778
  case "from":
1900
1779
  case "range":
@@ -2183,6 +2062,25 @@ function parseManagementKey(raw) {
2183
2062
  return ok(createSecretInternal("management-key", raw));
2184
2063
  }
2185
2064
  //#endregion
2065
+ //#region ../core/src/planner.ts
2066
+ /** Default clock for production callers that do not inject time explicitly. */
2067
+ const systemPlanningClock = { now: () => Date.now() };
2068
+ /** Resolve current time as a Date from an explicit Date, injected clock, or system clock. */
2069
+ function resolvePlanningNowDate(input = {}) {
2070
+ if (input.now !== void 0) return input.now;
2071
+ return new Date((input.clock ?? systemPlanningClock).now());
2072
+ }
2073
+ /**
2074
+ * Resolve a Date-compatible planner input.
2075
+ *
2076
+ * Precedence: bare Date, `{ now }`, `{ clock }`, then `systemPlanningClock`.
2077
+ * Explicit Date inputs are returned by reference, not cloned.
2078
+ */
2079
+ function resolvePlanningDateInput(input = {}) {
2080
+ if (input instanceof Date) return input;
2081
+ return resolvePlanningNowDate(input);
2082
+ }
2083
+ //#endregion
2186
2084
  //#region ../core/src/event-series-behaviour.ts
2187
2085
  const SURFACE_EVENT_PRESET_VALUES = [
2188
2086
  "class",
@@ -2485,6 +2383,68 @@ z.object({
2485
2383
  monthlyCurrency: z.literal("gbp")
2486
2384
  });
2487
2385
  //#endregion
2386
+ //#region ../blocks/src/system/types/link.ts
2387
+ const nullableString = z.union([z.string().min(1), z.null()]);
2388
+ const RESOLVED_INTERNAL_LINK_ENTITY_TYPES = [
2389
+ "page",
2390
+ "content",
2391
+ "pageSurface"
2392
+ ];
2393
+ const resolvedInternalLinkKeys = [
2394
+ "entityId",
2395
+ "entityType",
2396
+ "href",
2397
+ "title",
2398
+ "typeLabel"
2399
+ ];
2400
+ const internalRouteOnlyLinkSchema = z.object({
2401
+ kind: z.literal("internal"),
2402
+ routeId: z.string().min(1)
2403
+ }).passthrough().superRefine((value, ctx) => {
2404
+ if (!resolvedInternalLinkKeys.some((key) => value[key] != null)) return;
2405
+ ctx.addIssue({
2406
+ code: "custom",
2407
+ message: "Internal links with resolved metadata must include entityId, entityType, href, title, and typeLabel"
2408
+ });
2409
+ });
2410
+ const internalResolvedLinkSchema = z.object({
2411
+ kind: z.literal("internal"),
2412
+ routeId: z.string().min(1),
2413
+ entityId: z.string().min(1),
2414
+ entityType: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
2415
+ href: z.string().min(1),
2416
+ title: z.string().min(1),
2417
+ typeLabel: z.string().min(1),
2418
+ contentTypeKey: nullableString.optional(),
2419
+ contentTypeName: nullableString.optional(),
2420
+ updatedAt: nullableString.optional()
2421
+ }).passthrough();
2422
+ const internalLinkSchema = z.union([internalResolvedLinkSchema, internalRouteOnlyLinkSchema]);
2423
+ const externalLinkSchema$1 = z.object({
2424
+ kind: z.literal("external"),
2425
+ href: z.string().min(1)
2426
+ }).passthrough();
2427
+ const customLinkSchema$1 = z.object({
2428
+ kind: z.literal("url"),
2429
+ href: z.string().min(1)
2430
+ }).passthrough();
2431
+ const pageLinkSchema$1 = z.object({
2432
+ kind: z.literal("page"),
2433
+ identifier: z.string().min(1)
2434
+ }).passthrough();
2435
+ const entryLinkSchema$1 = z.object({
2436
+ kind: z.literal("entry"),
2437
+ contentType: z.string().min(1),
2438
+ identifier: z.string().min(1)
2439
+ }).passthrough();
2440
+ z.union([
2441
+ internalLinkSchema,
2442
+ externalLinkSchema$1,
2443
+ customLinkSchema$1,
2444
+ pageLinkSchema$1,
2445
+ entryLinkSchema$1
2446
+ ]);
2447
+ //#endregion
2488
2448
  //#region ../api/src/navigation/contracts.ts
2489
2449
  /**
2490
2450
  * Canonical navigation/link Zod contracts.
@@ -2514,7 +2474,7 @@ const internalLinkPayloadSchema = z.object({
2514
2474
  kind: z.literal("internal"),
2515
2475
  routeId: z.string().uuid(),
2516
2476
  entityId: z.string().uuid(),
2517
- entityType: z.enum(["page", "content"]),
2477
+ entityType: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
2518
2478
  href: z.string().min(1),
2519
2479
  title: z.string().min(1),
2520
2480
  typeLabel: z.string().min(1),
@@ -10580,7 +10540,7 @@ defineBlockAppearancePreset({
10580
10540
  id: "schedule-details-brand-depth",
10581
10541
  target: "events",
10582
10542
  label: "Brand-depth schedule details",
10583
- blockKinds: ["block.event-details", "block.course-details"],
10543
+ blockKinds: ["block.event-details"],
10584
10544
  design: {
10585
10545
  sectionSurface: "brand-depth-band",
10586
10546
  contentFrame: plainFrame,
@@ -16779,7 +16739,6 @@ const productDetail = (props, children, ...mods) => el("product-detail", props,
16779
16739
  const cart = (props, children, ...mods) => el("cart", props, children, ...mods);
16780
16740
  const checkout = (props, children, ...mods) => el("checkout", props, children, ...mods);
16781
16741
  const gifting = (props, children, ...mods) => el("gifting", props, children, ...mods);
16782
- const courseRegistration = (props, children, ...mods) => el("course-registration", props, children, ...mods);
16783
16742
  function bind(from, options) {
16784
16743
  return (node) => ({
16785
16744
  ...node,
@@ -26420,12 +26379,12 @@ const RichTextDocSchema = z.object({
26420
26379
  }).strict();
26421
26380
  //#endregion
26422
26381
  //#region ../blocks/src/system/blocks/shared/bookingPaymentTerms.ts
26423
- const bookingDepositRefundPolicySchema = z.enum(["refundable", "non_refundable"]);
26424
- const bookingInstalmentPlanSchema = z.union([
26382
+ const bookingDepositRefundPolicySchema$1 = z.enum(["refundable", "non_refundable"]);
26383
+ const bookingInstalmentPlanSchema$1 = z.union([
26425
26384
  z.object({
26426
26385
  kind: z.literal("deposit_plus_one_remainder"),
26427
26386
  depositAmountCents: z.number().int().min(0),
26428
- depositRefundability: bookingDepositRefundPolicySchema,
26387
+ depositRefundability: bookingDepositRefundPolicySchema$1,
26429
26388
  remainderDueCount: z.number().int().positive(),
26430
26389
  intervalUnit: z.enum([
26431
26390
  "day",
@@ -26436,7 +26395,7 @@ const bookingInstalmentPlanSchema = z.union([
26436
26395
  z.object({
26437
26396
  kind: z.literal("deposit_plus_scheduled_instalments"),
26438
26397
  depositAmountCents: z.number().int().min(0),
26439
- depositRefundability: bookingDepositRefundPolicySchema,
26398
+ depositRefundability: bookingDepositRefundPolicySchema$1,
26440
26399
  instalmentCount: z.number().int().positive(),
26441
26400
  intervalCount: z.number().int().positive(),
26442
26401
  intervalUnit: z.enum([
@@ -26456,32 +26415,207 @@ const bookingInstalmentPlanSchema = z.union([
26456
26415
  ])
26457
26416
  })
26458
26417
  ]);
26459
- const bookingFlexibleBalanceDueDateRuleSchema = z.union([z.object({
26418
+ const bookingFlexibleBalanceDueDateRuleSchema$1 = z.union([z.object({
26460
26419
  kind: z.literal("relative_to_start_date"),
26461
26420
  daysBeforeStart: z.number().int().positive()
26462
26421
  }), z.object({
26463
26422
  kind: z.literal("fixed_calendar_date"),
26464
26423
  dueAt: z.string().datetime()
26465
26424
  })]);
26466
- const bookingFlexibleBalanceConfigSchema = z.object({
26425
+ const bookingFlexibleBalanceConfigSchema$1 = z.object({
26467
26426
  upfrontAmountCents: z.number().int().min(0),
26468
- dueDateRule: bookingFlexibleBalanceDueDateRuleSchema,
26469
- depositRefundability: bookingDepositRefundPolicySchema
26427
+ dueDateRule: bookingFlexibleBalanceDueDateRuleSchema$1,
26428
+ depositRefundability: bookingDepositRefundPolicySchema$1
26470
26429
  });
26471
26430
  const blockBookingPaymentCollectionOptionSchema = z.union([
26472
26431
  z.object({ kind: z.literal("upfront") }),
26473
26432
  z.object({ kind: z.literal("deferred_manual") }),
26474
26433
  z.object({
26475
26434
  kind: z.literal("instalment_plan"),
26476
- plan: bookingInstalmentPlanSchema
26435
+ plan: bookingInstalmentPlanSchema$1
26477
26436
  }),
26478
26437
  z.object({
26479
26438
  kind: z.literal("flexible_balance"),
26480
- config: bookingFlexibleBalanceConfigSchema
26439
+ config: bookingFlexibleBalanceConfigSchema$1
26481
26440
  })
26482
26441
  ]);
26483
26442
  const blockBookingPaymentTermsSchema = z.object({ allowedOptions: z.array(blockBookingPaymentCollectionOptionSchema).min(1) });
26484
26443
  //#endregion
26444
+ //#region ../blocks/src/system/blocks/shared/bookingConsent.ts
26445
+ const blockBookingConsentSchema = z.object({
26446
+ requirementId: z.string(),
26447
+ title: z.string(),
26448
+ agreement: RichTextDocSchema,
26449
+ checkboxLabel: z.string()
26450
+ });
26451
+ const bookingRequirementConsentFieldSchema = z.object({
26452
+ id: z.string(),
26453
+ label: z.string(),
26454
+ type: z.literal("booking_requirement_consent"),
26455
+ required: z.literal(true),
26456
+ agreement: RichTextDocSchema,
26457
+ checkboxLabel: z.string().min(1)
26458
+ });
26459
+ z.union([blockBookingConsentSchema, bookingRequirementConsentFieldSchema]);
26460
+ //#endregion
26461
+ //#region ../blocks/src/system/blocks/events/whole-series/pricing.ts
26462
+ function isSaleWindowOpen(option, now) {
26463
+ if (!option.isActive) return false;
26464
+ if (option.saleStartsAt && new Date(option.saleStartsAt) > now) return false;
26465
+ if (option.saleEndsAt && new Date(option.saleEndsAt) < now) return false;
26466
+ return true;
26467
+ }
26468
+ function toExactOrFreeDisplay(amount, currency) {
26469
+ if (amount <= 0) return {
26470
+ kind: "free",
26471
+ currency
26472
+ };
26473
+ return {
26474
+ kind: "exact",
26475
+ amount,
26476
+ currency
26477
+ };
26478
+ }
26479
+ function getSelectableWholeSeriesPricingOptionsForNow(offering, now) {
26480
+ if (offering.pricing.pricingStrategy !== "tiered") return [];
26481
+ return [...offering.pricing.options].filter((option) => isSaleWindowOpen(option, now)).sort((left, right) => {
26482
+ if (left.sortOrder !== right.sortOrder) return left.sortOrder - right.sortOrder;
26483
+ if (left.priceAmount !== right.priceAmount) return left.priceAmount - right.priceAmount;
26484
+ return left.name.localeCompare(right.name);
26485
+ });
26486
+ }
26487
+ function resolveWholeSeriesPricingState(offering, selectedPricingOptionId, selectedSlidingAmountOrNowInput, nowInput = {}) {
26488
+ const selection = normalizePricingSelectionInput(selectedSlidingAmountOrNowInput, nowInput);
26489
+ const currency = offering.pricing.currency;
26490
+ switch (offering.pricing.pricingStrategy) {
26491
+ case "free": return resolveFreePricing(currency);
26492
+ case "single": return resolveSinglePricing(offering.pricing.singlePriceAmount ?? 0, currency);
26493
+ case "tiered": return resolveTieredPricing(offering, selectedPricingOptionId, selection.nowInput);
26494
+ case "sliding_scale": return resolveSlidingScalePricing(offering, selection.selectedSlidingAmount);
26495
+ }
26496
+ }
26497
+ function normalizePricingSelectionInput(selectedSlidingAmountOrNowInput, nowInput) {
26498
+ return typeof selectedSlidingAmountOrNowInput === "object" && selectedSlidingAmountOrNowInput !== null ? {
26499
+ selectedSlidingAmount: null,
26500
+ nowInput: selectedSlidingAmountOrNowInput
26501
+ } : {
26502
+ selectedSlidingAmount: typeof selectedSlidingAmountOrNowInput === "number" || selectedSlidingAmountOrNowInput === null ? selectedSlidingAmountOrNowInput : null,
26503
+ nowInput
26504
+ };
26505
+ }
26506
+ function resolveFreePricing(currency) {
26507
+ return {
26508
+ currency,
26509
+ display: {
26510
+ kind: "free",
26511
+ currency
26512
+ },
26513
+ selectableOptions: [],
26514
+ requiresSelection: false,
26515
+ selectedOption: null,
26516
+ slidingScale: null,
26517
+ selectedSlidingAmount: null,
26518
+ selectedPriceAmount: 0,
26519
+ selectedRequiresPayment: false,
26520
+ hasPaidSelection: false,
26521
+ hasFreeSelection: true
26522
+ };
26523
+ }
26524
+ function resolveSinglePricing(amount, currency) {
26525
+ return {
26526
+ currency,
26527
+ display: toExactOrFreeDisplay(amount, currency),
26528
+ selectableOptions: [],
26529
+ requiresSelection: false,
26530
+ selectedOption: null,
26531
+ slidingScale: null,
26532
+ selectedSlidingAmount: null,
26533
+ selectedPriceAmount: amount,
26534
+ selectedRequiresPayment: amount > 0,
26535
+ hasPaidSelection: amount > 0,
26536
+ hasFreeSelection: amount <= 0
26537
+ };
26538
+ }
26539
+ function resolveTieredPricing(offering, selectedPricingOptionId, nowInput) {
26540
+ const currency = offering.pricing.currency;
26541
+ const selectableOptions = getSelectableWholeSeriesPricingOptionsForNow(offering, resolvePlanningDateInput(nowInput));
26542
+ const selectedOption = resolveSelectedTier(selectableOptions, selectedPricingOptionId);
26543
+ return {
26544
+ currency,
26545
+ display: resolveTieredDisplay(selectableOptions.reduce((lowest, option) => lowest === null || option.priceAmount < lowest ? option.priceAmount : lowest, null), selectableOptions.length, currency),
26546
+ selectableOptions,
26547
+ requiresSelection: selectableOptions.length > 1,
26548
+ selectedOption,
26549
+ slidingScale: null,
26550
+ selectedSlidingAmount: null,
26551
+ selectedPriceAmount: selectedOption?.priceAmount ?? null,
26552
+ selectedRequiresPayment: (selectedOption?.priceAmount ?? 0) > 0,
26553
+ hasPaidSelection: selectableOptions.some((option) => option.priceAmount > 0),
26554
+ hasFreeSelection: selectableOptions.some((option) => option.priceAmount === 0)
26555
+ };
26556
+ }
26557
+ function resolveSelectedTier(options, selectedId) {
26558
+ return (selectedId ? options.find((option) => option.id === selectedId) : null) ?? (options.length === 1 ? options[0] ?? null : null);
26559
+ }
26560
+ function resolveTieredDisplay(lowestAmount, optionCount, currency) {
26561
+ if (lowestAmount === null) return {
26562
+ kind: "unavailable",
26563
+ currency
26564
+ };
26565
+ return optionCount > 1 && lowestAmount > 0 ? {
26566
+ kind: "from",
26567
+ amount: lowestAmount,
26568
+ currency
26569
+ } : toExactOrFreeDisplay(lowestAmount, currency);
26570
+ }
26571
+ function resolveSlidingScalePricing(offering, selectedSlidingAmount) {
26572
+ const currency = offering.pricing.currency;
26573
+ const minAmount = offering.pricing.slidingMinAmount ?? null;
26574
+ const maxAmount = offering.pricing.slidingMaxAmount ?? null;
26575
+ if (minAmount === null || maxAmount === null || minAmount < 0 || maxAmount < minAmount) return unavailableSlidingScale(currency);
26576
+ const selectedAmount = Number.isFinite(selectedSlidingAmount) ? selectedSlidingAmount : null;
26577
+ return {
26578
+ currency,
26579
+ display: {
26580
+ kind: "range",
26581
+ minAmount,
26582
+ maxAmount,
26583
+ currency
26584
+ },
26585
+ selectableOptions: [],
26586
+ requiresSelection: selectedAmount === null,
26587
+ selectedOption: null,
26588
+ slidingScale: {
26589
+ minAmount,
26590
+ maxAmount,
26591
+ suggestedAmount: offering.pricing.slidingSuggestedAmount ?? null
26592
+ },
26593
+ selectedSlidingAmount: selectedAmount,
26594
+ selectedPriceAmount: selectedAmount,
26595
+ selectedRequiresPayment: (selectedAmount ?? 0) > 0,
26596
+ hasPaidSelection: maxAmount > 0,
26597
+ hasFreeSelection: minAmount === 0
26598
+ };
26599
+ }
26600
+ function unavailableSlidingScale(currency) {
26601
+ return {
26602
+ currency,
26603
+ display: {
26604
+ kind: "unavailable",
26605
+ currency
26606
+ },
26607
+ selectableOptions: [],
26608
+ requiresSelection: true,
26609
+ selectedOption: null,
26610
+ slidingScale: null,
26611
+ selectedSlidingAmount: null,
26612
+ selectedPriceAmount: null,
26613
+ selectedRequiresPayment: false,
26614
+ hasPaidSelection: false,
26615
+ hasFreeSelection: false
26616
+ };
26617
+ }
26618
+ //#endregion
26485
26619
  //#region ../blocks/src/system/blocks/events/whole-series/schemas.ts
26486
26620
  const wholeSeriesVenueSchema = z.object({
26487
26621
  id: z.string(),
@@ -26541,11 +26675,19 @@ const publicWholeSeriesOfferingSchema = z.object({
26541
26675
  title: z.string(),
26542
26676
  slug: z.string(),
26543
26677
  description: z.unknown().nullable(),
26678
+ deliveryMode: z.enum([
26679
+ "in_person",
26680
+ "online",
26681
+ "hybrid"
26682
+ ]),
26683
+ waitlistEnabled: z.boolean(),
26684
+ requireGuestDetails: z.boolean(),
26544
26685
  teamMembers: z.array(wholeSeriesTeamMemberSummarySchema).optional(),
26545
26686
  enrollmentOpen: z.boolean(),
26546
26687
  pricing: wholeSeriesPricingSchema,
26547
26688
  currency: z.string(),
26548
26689
  paymentTerms: blockBookingPaymentTermsSchema,
26690
+ consent: blockBookingConsentSchema.nullable(),
26549
26691
  enrollmentCapacity: z.number().nullable(),
26550
26692
  acceptsMemberships: z.boolean(),
26551
26693
  status: z.enum([
@@ -26655,7 +26797,7 @@ const mixedPriceDisplaySchema = z.object({
26655
26797
  paidToAmount: z.number(),
26656
26798
  currency: z.string()
26657
26799
  });
26658
- const publicCoursePriceDisplaySchema = z.discriminatedUnion("kind", [
26800
+ const publicWholeSeriesPriceDisplaySchema = z.discriminatedUnion("kind", [
26659
26801
  freePriceDisplaySchema,
26660
26802
  exactPriceDisplaySchema,
26661
26803
  fromPriceDisplaySchema,
@@ -26673,8 +26815,8 @@ z.discriminatedUnion("kind", [
26673
26815
  label: z.string()
26674
26816
  }),
26675
26817
  z.object({
26676
- kind: z.literal("course"),
26677
- display: publicCoursePriceDisplaySchema
26818
+ kind: z.literal("whole_series"),
26819
+ display: publicWholeSeriesPriceDisplaySchema
26678
26820
  })
26679
26821
  ]);
26680
26822
  const publicEventTicketTypePriceDisplaySchema = z.union([
@@ -26776,10 +26918,10 @@ const publicEventPricingSchema = z.discriminatedUnion("kind", [
26776
26918
  })
26777
26919
  }),
26778
26920
  z.object({
26779
- kind: z.literal("course"),
26921
+ kind: z.literal("whole_series"),
26780
26922
  display: z.object({
26781
- kind: z.literal("course"),
26782
- display: publicCoursePriceDisplaySchema
26923
+ kind: z.literal("whole_series"),
26924
+ display: publicWholeSeriesPriceDisplaySchema
26783
26925
  })
26784
26926
  }),
26785
26927
  z.object({
@@ -26863,6 +27005,7 @@ const publicEventSchema = z.object({
26863
27005
  timeZone: z.string(),
26864
27006
  pricing: publicEventPricingSchema,
26865
27007
  paymentTerms: blockBookingPaymentTermsSchema,
27008
+ consent: blockBookingConsentSchema.nullable(),
26866
27009
  accessRestriction: accessRestrictionSchema,
26867
27010
  allowedCategoryIds: z.array(z.string()),
26868
27011
  requireGuestDetails: z.boolean().optional(),
@@ -27195,7 +27338,8 @@ function resolveEventRegistrationScope(context) {
27195
27338
  };
27196
27339
  return { kind: "unscoped" };
27197
27340
  }
27198
- function applyEventRegistrationScope(events, scope) {
27341
+ function resolveEventRegistrationScopedEvents(events, context) {
27342
+ const scope = resolveEventRegistrationScope(context);
27199
27343
  switch (scope.kind) {
27200
27344
  case "occurrenceSeries":
27201
27345
  case "pageSurfaceSeries": return events.filter((event) => event.seriesId === scope.seriesId);
@@ -27207,8 +27351,24 @@ function applyEventRegistrationScope(events, scope) {
27207
27351
  case "unscoped": return [...events];
27208
27352
  }
27209
27353
  }
27210
- function resolveEventRegistrationScopedEvents(events, context) {
27211
- return applyEventRegistrationScope(events, resolveEventRegistrationScope(context));
27354
+ //#endregion
27355
+ //#region ../blocks/src/system/runtime/nodes/event-registration/registrationSurface.ts
27356
+ function planEventRegistrationScope(input) {
27357
+ const subject = input.subject;
27358
+ const selectedRunOffering = input.wholeSeriesOffering;
27359
+ if (subject?.kind !== "eventOffering" || !selectedRunOffering) return {
27360
+ kind: "context",
27361
+ events: resolveEventRegistrationScopedEvents(input.events, {
27362
+ occurrenceContext: input.occurrenceContext,
27363
+ subject
27364
+ })
27365
+ };
27366
+ if (!(selectedRunOffering.eventOfferingId === subject.eventOfferingId && subject.availableEventSeriesIds.some((seriesId) => seriesId === selectedRunOffering.eventSeriesId))) return { kind: "invalidSelectedRun" };
27367
+ return {
27368
+ kind: "selectedRun",
27369
+ events: input.events.filter((event) => event.seriesId === selectedRunOffering.eventSeriesId),
27370
+ offering: selectedRunOffering
27371
+ };
27212
27372
  }
27213
27373
  //#endregion
27214
27374
  //#region ../blocks/src/system/runtime/nodes/events/shared/destination.ts
@@ -27284,14 +27444,14 @@ function isRecord$4(value) {
27284
27444
  }
27285
27445
  function isPublicEventPricing(value) {
27286
27446
  if (!isRecord$4(value) || typeof value.kind !== "string") return false;
27287
- 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";
27447
+ 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";
27288
27448
  }
27289
27449
  function isPublicEventTicketType(value) {
27290
27450
  return isRecord$4(value) && typeof value.id === "string";
27291
27451
  }
27292
27452
  function readTicketTypePriceDisplay(value, currency) {
27293
27453
  const display = readLegacyPriceDisplay(value, currency);
27294
- return display.kind === "course" || display.kind === "external" ? {
27454
+ return display.kind === "whole_series" || display.kind === "external" ? {
27295
27455
  kind: "unavailable",
27296
27456
  currency
27297
27457
  } : display;
@@ -27349,11 +27509,11 @@ function readLegacyPriceDisplay(value, currency) {
27349
27509
  kind: "unavailable",
27350
27510
  currency: displayCurrency
27351
27511
  };
27352
- case "course": return isRecord$4(value.display) ? {
27353
- kind: "course",
27512
+ case "whole_series": return isRecord$4(value.display) ? {
27513
+ kind: "whole_series",
27354
27514
  display: readCoursePriceDisplay(value.display, displayCurrency)
27355
27515
  } : {
27356
- kind: "course",
27516
+ kind: "whole_series",
27357
27517
  display: {
27358
27518
  kind: "unavailable",
27359
27519
  currency: displayCurrency
@@ -27479,7 +27639,7 @@ function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep) {
27479
27639
  //#endregion
27480
27640
  //#region ../blocks/src/system/runtime/nodes/event-registration/registrationDerivations.ts
27481
27641
  function eventMatchesOccurrenceId(event, occurrenceId) {
27482
- return event.registrationOccurrenceId === occurrenceId || event.publicEventId === occurrenceId;
27642
+ return event.registrationSubject.kind === "occurrence" && (event.registrationSubject.occurrenceId === occurrenceId || event.selectionId === occurrenceId);
27483
27643
  }
27484
27644
  function findPreSelectedEvent(input) {
27485
27645
  const occurrenceContext = input.occurrenceContext;
@@ -27505,12 +27665,127 @@ function toRegistrationEvent(event) {
27505
27665
  return {
27506
27666
  ...event,
27507
27667
  pricing: resolveRuntimeEventPricing(event),
27508
- publicEventId: event.id,
27509
- registrationOccurrenceId: event.occurrenceId
27668
+ selectionId: event.id,
27669
+ registrationSubject: {
27670
+ kind: "occurrence",
27671
+ occurrenceId: event.occurrenceId
27672
+ }
27510
27673
  };
27511
27674
  }
27512
27675
  function toRegistrationEvents(events) {
27513
- return events.map(toRegistrationEvent);
27676
+ return events.filter((event) => event.bookingScope === "single_occurrence").map(toRegistrationEvent);
27677
+ }
27678
+ function toWholeSeriesTicketType(option) {
27679
+ return {
27680
+ ...option,
27681
+ capacityMode: option.capacityLimit === null ? "unlimited" : "limited",
27682
+ attendanceScope: option.attendanceScope ?? void 0,
27683
+ availability: {
27684
+ kind: "available",
27685
+ remainingCapacity: option.capacityLimit
27686
+ }
27687
+ };
27688
+ }
27689
+ function toWholeSeriesPricing(offering) {
27690
+ const resolved = resolveWholeSeriesPricingState(offering);
27691
+ switch (offering.pricing.pricingStrategy) {
27692
+ case "free": return {
27693
+ kind: "free_registration",
27694
+ currency: offering.currency,
27695
+ display: {
27696
+ kind: "free",
27697
+ currency: offering.currency
27698
+ }
27699
+ };
27700
+ case "single": {
27701
+ const amount = offering.pricing.singlePriceAmount ?? 0;
27702
+ return amount === 0 ? {
27703
+ kind: "free_registration",
27704
+ currency: offering.currency,
27705
+ display: {
27706
+ kind: "free",
27707
+ currency: offering.currency
27708
+ }
27709
+ } : {
27710
+ kind: "single_paid",
27711
+ amount,
27712
+ currency: offering.currency,
27713
+ display: {
27714
+ kind: "exact",
27715
+ amount,
27716
+ currency: offering.currency
27717
+ }
27718
+ };
27719
+ }
27720
+ case "tiered": return {
27721
+ kind: "ticket_types",
27722
+ currency: offering.currency,
27723
+ ticketTypes: resolved.selectableOptions.map((option) => toWholeSeriesTicketType(option)),
27724
+ display: resolved.display
27725
+ };
27726
+ case "sliding_scale": return {
27727
+ kind: "sliding_scale",
27728
+ minAmount: offering.pricing.slidingMinAmount ?? 0,
27729
+ maxAmount: offering.pricing.slidingMaxAmount ?? 0,
27730
+ suggestedAmount: offering.pricing.slidingSuggestedAmount ?? null,
27731
+ currency: offering.currency,
27732
+ display: {
27733
+ kind: "range",
27734
+ minAmount: offering.pricing.slidingMinAmount ?? 0,
27735
+ maxAmount: offering.pricing.slidingMaxAmount ?? 0,
27736
+ currency: offering.currency
27737
+ }
27738
+ };
27739
+ }
27740
+ }
27741
+ function toAttendanceModes(offering) {
27742
+ return (offering.deliveryMode === "hybrid" ? ["in_person", "online"] : [offering.deliveryMode]).map((mode) => ({
27743
+ mode,
27744
+ capacity: offering.enrollmentCapacity,
27745
+ registeredCount: offering.enrolledCount,
27746
+ availableSpots: offering.availableSpots,
27747
+ waitlistEnabled: offering.waitlistEnabled
27748
+ }));
27749
+ }
27750
+ function toWholeSeriesRegistrationEvent(offering) {
27751
+ const firstSession = offering.sessions[0];
27752
+ const lastSession = offering.sessions[offering.sessions.length - 1];
27753
+ return {
27754
+ selectionId: offering.eventSeriesId,
27755
+ registrationSubject: {
27756
+ kind: "wholeSeries",
27757
+ eventSeriesId: offering.eventSeriesId,
27758
+ sessions: offering.sessions
27759
+ },
27760
+ seriesId: offering.eventSeriesId,
27761
+ title: offering.title,
27762
+ startsAt: firstSession?.startsAt ?? "",
27763
+ endsAt: lastSession?.endsAt ?? firstSession?.endsAt ?? "",
27764
+ bookingAvailability: offering.enrollmentOpen ? { kind: "open" } : {
27765
+ kind: "closed",
27766
+ reason: "enrollment_closed"
27767
+ },
27768
+ deliveryMode: offering.deliveryMode,
27769
+ attendanceModes: toAttendanceModes(offering),
27770
+ capacity: offering.enrollmentCapacity,
27771
+ registeredCount: offering.enrolledCount,
27772
+ availableSpots: offering.availableSpots,
27773
+ waitlistEnabled: offering.waitlistEnabled,
27774
+ venue: offering.venue ? {
27775
+ ...offering.venue,
27776
+ location: null
27777
+ } : null,
27778
+ eventCategory: null,
27779
+ teamMembers: offering.teamMembers,
27780
+ status: offering.status,
27781
+ timeZone: firstSession?.timeZone ?? "UTC",
27782
+ pricing: toWholeSeriesPricing(offering),
27783
+ paymentTerms: offering.paymentTerms,
27784
+ consent: offering.consent,
27785
+ requireGuestDetails: offering.requireGuestDetails,
27786
+ acceptsPasses: false,
27787
+ acceptsMemberships: offering.acceptsMemberships
27788
+ };
27514
27789
  }
27515
27790
  //#endregion
27516
27791
  //#region ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
@@ -27536,11 +27811,7 @@ const eventRegistrationHydrationSchemaShape = {
27536
27811
  maxTickets: z.string().optional(),
27537
27812
  showVenue: z.boolean().optional(),
27538
27813
  showCapacity: z.boolean().optional(),
27539
- showSessions: z.boolean().optional(),
27540
- showPrice: z.boolean().optional(),
27541
27814
  successMessage: z.string().optional(),
27542
- waitlistMessage: z.string().optional(),
27543
- membershipMessage: z.string().optional(),
27544
27815
  buttonVariant: registrationButtonVariantSchema.optional(),
27545
27816
  overlayEnabled: z.boolean().optional(),
27546
27817
  spamProtectionEnabled: z.boolean().optional(),
@@ -27610,6 +27881,15 @@ function resolveWholeSeriesOffering(source) {
27610
27881
  return source.wholeSeriesOffering ?? source.subjectWholeSeriesOffering ?? null;
27611
27882
  }
27612
27883
  function buildEventRegistrationShellStepLabels(source) {
27884
+ const selectedOffering = resolveWholeSeriesOffering(source);
27885
+ if (selectedOffering) {
27886
+ const selectedEvent = toWholeSeriesRegistrationEvent(selectedOffering);
27887
+ return getWizardStepsForContext(true, resolveEventRequiresPayment({
27888
+ eligibility: null,
27889
+ selectedTicketType: null,
27890
+ event: selectedEvent
27891
+ })).map((step) => shellLabelForRegistrationStep(step, [selectedEvent]));
27892
+ }
27613
27893
  const scopedEvents = scopeEventRegistrationEvents(source);
27614
27894
  if (scopedEvents.length === 0) return EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
27615
27895
  const preSelectedEvent = findPreSelectedEvent({
@@ -27624,10 +27904,13 @@ function buildEventRegistrationShellStepLabels(source) {
27624
27904
  }) : false).map((step) => shellLabelForRegistrationStep(step, scopedEvents));
27625
27905
  }
27626
27906
  function scopeEventRegistrationEvents(source) {
27627
- return resolveEventRegistrationScopedEvents(toRegistrationEvents(source.events ?? []), {
27907
+ const scope = planEventRegistrationScope({
27908
+ events: toRegistrationEvents(source.events ?? []),
27909
+ wholeSeriesOffering: source.wholeSeriesOffering,
27628
27910
  occurrenceContext: source.occurrenceContext,
27629
27911
  subject: source.subject
27630
27912
  });
27913
+ return scope.kind === "invalidSelectedRun" ? [] : scope.events;
27631
27914
  }
27632
27915
  function shellLabelForRegistrationStep(step, events) {
27633
27916
  switch (step) {
@@ -27670,11 +27953,7 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
27670
27953
  maxTickets: source.maxTickets ?? void 0,
27671
27954
  showVenue: source.showVenue,
27672
27955
  showCapacity: source.showCapacity,
27673
- showSessions: source.showSessions,
27674
- showPrice: source.showPrice,
27675
27956
  successMessage: source.successMessage,
27676
- waitlistMessage: source.waitlistMessage,
27677
- membershipMessage: source.membershipMessage,
27678
27957
  buttonVariant: source.buttonVariant,
27679
27958
  overlayEnabled: source.overlayEnabled,
27680
27959
  spamProtectionEnabled: source.spamProtectionEnabled,
@@ -27790,24 +28069,6 @@ const eventRegistrationBlockDefinition = {
27790
28069
  defaultValue: true,
27791
28070
  ui: { intent: "display" }
27792
28071
  },
27793
- {
27794
- id: "showSessions",
27795
- type: "boolean",
27796
- label: "Show complete schedule",
27797
- description: "Display every session for whole-series registrations",
27798
- required: false,
27799
- defaultValue: true,
27800
- ui: { intent: "display" }
27801
- },
27802
- {
27803
- id: "showPrice",
27804
- type: "boolean",
27805
- label: "Show price",
27806
- description: "Display the whole-series price",
27807
- required: false,
27808
- defaultValue: true,
27809
- ui: { intent: "display" }
27810
- },
27811
28072
  {
27812
28073
  id: "successMessage",
27813
28074
  type: "text",
@@ -27818,26 +28079,6 @@ const eventRegistrationBlockDefinition = {
27818
28079
  defaultValue: "Thank you for registering! Check your email for confirmation details.",
27819
28080
  maxLength: 500
27820
28081
  },
27821
- {
27822
- id: "waitlistMessage",
27823
- type: "text",
27824
- label: "Waitlist message",
27825
- description: "Message shown after joining a whole-series waitlist",
27826
- required: false,
27827
- multiline: true,
27828
- defaultValue: "You've been added to the waitlist. We'll email you if a place becomes available.",
27829
- maxLength: 500
27830
- },
27831
- {
27832
- id: "membershipMessage",
27833
- type: "text",
27834
- label: "Membership registration message",
27835
- description: "Message shown when a whole-series place is covered by membership",
27836
- required: false,
27837
- multiline: true,
27838
- defaultValue: "Registered using your membership. Check your email for session details.",
27839
- maxLength: 500
27840
- },
27841
28082
  {
27842
28083
  id: "buttonText",
27843
28084
  type: "text",
@@ -27869,11 +28110,7 @@ const eventRegistrationBlockDefinition = {
27869
28110
  } },
27870
28111
  showVenue: { $bind: { from: "content.showVenue" } },
27871
28112
  showCapacity: { $bind: { from: "content.showCapacity" } },
27872
- showSessions: { $bind: { from: "content.showSessions" } },
27873
- showPrice: { $bind: { from: "content.showPrice" } },
27874
28113
  successMessage: { $bind: { from: "content.successMessage" } },
27875
- waitlistMessage: { $bind: { from: "content.waitlistMessage" } },
27876
- membershipMessage: { $bind: { from: "content.membershipMessage" } },
27877
28114
  buttonText: { $bind: {
27878
28115
  from: "content.buttonText",
27879
28116
  fallback: "Complete Registration"
@@ -27990,254 +28227,6 @@ const eventRegistrationBlockDefinition = {
27990
28227
  }
27991
28228
  };
27992
28229
  //#endregion
27993
- //#region ../blocks/src/system/runtime/nodes/course-registration.interactive.ts
27994
- const courseRegistrationHydrationSchemaShape = {
27995
- subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
27996
- courses: z.array(publicWholeSeriesOfferingSchema).nullable().optional(),
27997
- showSessions: z.boolean().optional(),
27998
- showPrice: z.boolean().optional(),
27999
- showCapacity: z.boolean().optional(),
28000
- showVenue: z.boolean().optional(),
28001
- successMessage: z.string().optional(),
28002
- waitlistMessage: z.string().optional(),
28003
- membershipMessage: z.string().optional(),
28004
- buttonVariant: registrationButtonVariantSchema.optional()
28005
- };
28006
- const courseRegistrationSourceSchema = z.object({
28007
- siteId: z.string().optional(),
28008
- apiBaseUrl: z.string().optional(),
28009
- portalToken: z.string().nullable().optional(),
28010
- ...courseRegistrationHydrationSchemaShape,
28011
- className: z.string().nullable().optional(),
28012
- buttonText: z.string().nullable().optional(),
28013
- stage: previewStageSchema.optional()
28014
- });
28015
- const courseRegistrationDisplaySchema = z.object({
28016
- kind: z.literal("course-registration"),
28017
- state: z.literal("shell"),
28018
- className: z.string().nullable(),
28019
- summaryButtonText: z.string()
28020
- });
28021
- const courseRegistrationHydrationSchema = z.object(courseRegistrationHydrationSchemaShape);
28022
- const courseRegistrationRenderSchema = z.object({
28023
- display: courseRegistrationDisplaySchema,
28024
- hydration: courseRegistrationHydrationSchema
28025
- });
28026
- z.object({
28027
- siteId: z.string().optional(),
28028
- apiBaseUrl: z.string().optional(),
28029
- portalToken: z.string().nullable().optional(),
28030
- stage: previewStageSchema.optional()
28031
- });
28032
- function buildCourseRegistrationDisplay(source) {
28033
- return {
28034
- kind: "course-registration",
28035
- state: "shell",
28036
- className: source.className ?? null,
28037
- summaryButtonText: source.buttonText?.trim() || "Sign up"
28038
- };
28039
- }
28040
- const courseRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
28041
- kind: "client-owned",
28042
- contracts: {
28043
- source: createZodCodec(courseRegistrationSourceSchema),
28044
- render: createZodCodec(courseRegistrationRenderSchema)
28045
- },
28046
- buildRender: (source) => ({
28047
- display: buildCourseRegistrationDisplay(source),
28048
- hydration: {
28049
- subject: source.subject ?? null,
28050
- courses: source.courses ?? null,
28051
- showSessions: source.showSessions,
28052
- showPrice: source.showPrice,
28053
- showCapacity: source.showCapacity,
28054
- showVenue: source.showVenue,
28055
- successMessage: source.successMessage,
28056
- waitlistMessage: source.waitlistMessage,
28057
- membershipMessage: source.membershipMessage,
28058
- buttonVariant: source.buttonVariant
28059
- }
28060
- })
28061
- });
28062
- const courseRegistrationBlockDefinition = {
28063
- manifest: createBlockManifest({
28064
- id: "block.course-registration",
28065
- version: "1.0.0",
28066
- title: "Course Registration",
28067
- titleSource: "heading",
28068
- description: "Enrollment form for multi-session courses",
28069
- category: "interactive",
28070
- contentSource: { kind: "inline" },
28071
- tags: [
28072
- "courses",
28073
- "enrollment",
28074
- "booking",
28075
- "form",
28076
- "signup",
28077
- "education"
28078
- ],
28079
- icon: "GraduationCap",
28080
- styleTokens: {
28081
- background: "surface",
28082
- typography: "body",
28083
- spacing: "md"
28084
- },
28085
- behaviours: {
28086
- supportsThemeSwitching: true,
28087
- inlineEditing: false,
28088
- animation: false,
28089
- paletteHidden: false
28090
- },
28091
- additionalFields: [
28092
- {
28093
- id: "heading",
28094
- type: "text",
28095
- label: "Heading",
28096
- description: "Main heading for the registration form",
28097
- required: false,
28098
- multiline: false,
28099
- defaultValue: "Sign up"
28100
- },
28101
- {
28102
- id: "description",
28103
- type: "richText",
28104
- label: "Description",
28105
- description: "Optional introductory text",
28106
- required: false
28107
- },
28108
- {
28109
- id: "showSessions",
28110
- type: "boolean",
28111
- label: "Show sessions",
28112
- description: "Display the list of course sessions",
28113
- required: false,
28114
- defaultValue: true,
28115
- ui: { intent: "display" }
28116
- },
28117
- {
28118
- id: "showPrice",
28119
- type: "boolean",
28120
- label: "Show price",
28121
- description: "Display the course price",
28122
- required: false,
28123
- defaultValue: true,
28124
- ui: { intent: "display" }
28125
- },
28126
- {
28127
- id: "showCapacity",
28128
- type: "boolean",
28129
- label: "Show available spots",
28130
- description: "Display remaining enrollment capacity",
28131
- required: false,
28132
- defaultValue: true,
28133
- ui: { intent: "display" }
28134
- },
28135
- {
28136
- id: "showVenue",
28137
- type: "boolean",
28138
- label: "Show venue",
28139
- description: "Display venue information",
28140
- required: false,
28141
- defaultValue: true,
28142
- ui: { intent: "display" }
28143
- },
28144
- {
28145
- id: "successMessage",
28146
- type: "text",
28147
- label: "Success message",
28148
- description: "Message shown after successful enrollment",
28149
- required: false,
28150
- multiline: true,
28151
- defaultValue: "You're enrolled! Check your email for confirmation and session details.",
28152
- maxLength: 500
28153
- },
28154
- {
28155
- id: "waitlistMessage",
28156
- type: "text",
28157
- label: "Waitlist message",
28158
- description: "Message when added to waitlist",
28159
- required: false,
28160
- multiline: true,
28161
- defaultValue: "You've been added to the waitlist. We'll email you a claim link if a spot opens up.",
28162
- maxLength: 500
28163
- },
28164
- {
28165
- id: "membershipMessage",
28166
- type: "text",
28167
- label: "Membership enrollment message",
28168
- description: "Message when enrolled using a membership",
28169
- required: false,
28170
- multiline: true,
28171
- defaultValue: "Enrolled using your membership! Check your email for session details.",
28172
- maxLength: 500
28173
- },
28174
- {
28175
- id: "buttonText",
28176
- type: "text",
28177
- label: "Submit button text",
28178
- description: "Text for the enrollment submit button",
28179
- required: false,
28180
- multiline: false,
28181
- defaultValue: "Sign up",
28182
- maxLength: 40
28183
- },
28184
- createButtonVariantField()
28185
- ],
28186
- layout: [styledSection({
28187
- baseClass: "",
28188
- spacing: "spacious",
28189
- children: sectionContainer([
28190
- text({ as: "h2" }, bind("content.heading"), when("content.heading")),
28191
- richText({ className: "rb-prose rb-max-w-none" }, bind("content.description"), when("content.description")),
28192
- courseRegistration(withApiBindings({
28193
- subject: { $bind: {
28194
- from: "$root.subject",
28195
- fallback: null
28196
- } },
28197
- portalToken: { $bind: {
28198
- from: "$root.portalToken",
28199
- fallback: null
28200
- } },
28201
- showSessions: { $bind: { from: "content.showSessions" } },
28202
- showPrice: { $bind: { from: "content.showPrice" } },
28203
- showCapacity: { $bind: { from: "content.showCapacity" } },
28204
- showVenue: { $bind: { from: "content.showVenue" } },
28205
- successMessage: { $bind: { from: "content.successMessage" } },
28206
- waitlistMessage: { $bind: { from: "content.waitlistMessage" } },
28207
- membershipMessage: { $bind: { from: "content.membershipMessage" } },
28208
- buttonText: { $bind: {
28209
- from: "content.buttonText",
28210
- fallback: "Sign up"
28211
- } },
28212
- buttonVariant: { $bind: {
28213
- from: "content.buttonVariant",
28214
- fallback: "primary"
28215
- } },
28216
- courses: { $bind: { from: "data.courses" } },
28217
- stage: { $bind: {
28218
- from: "$root.previewStage",
28219
- fallback: "published"
28220
- } }
28221
- }))
28222
- ], { gap: "lg" })
28223
- })]
28224
- }),
28225
- runtime: courseRegistrationBlockRuntime,
28226
- dataSchemas: { courses: publicWholeSeriesOfferingsArraySchema.optional() },
28227
- dataLoaders: { courses: {
28228
- endpoint: "listPublicWholeSeriesOfferings",
28229
- params: {
28230
- siteId: { $bind: { from: "$root.siteId" } },
28231
- limit: "50",
28232
- stage: { $bind: {
28233
- from: "$root.previewStage",
28234
- fallback: "published"
28235
- } }
28236
- },
28237
- mode: "server"
28238
- } }
28239
- };
28240
- //#endregion
28241
28230
  //#region ../blocks/src/system/blocks/event-details.ts
28242
28231
  /**
28243
28232
  * Event Details Block
@@ -28484,200 +28473,6 @@ const eventDetailsBlockDefinition = {
28484
28473
  mode: "server"
28485
28474
  } }
28486
28475
  };
28487
- const courseDetailsBlockDefinition = {
28488
- manifest: createBlockManifest({
28489
- id: "block.course-details",
28490
- version: "1.0.0",
28491
- title: "Course Details",
28492
- titleSource: "heading",
28493
- description: "Schedule, venue, price, and enrollment status for a course",
28494
- category: "content",
28495
- contentSource: { kind: "entries" },
28496
- tags: [
28497
- "courses",
28498
- "schedule",
28499
- "sessions",
28500
- "venue",
28501
- "pricing"
28502
- ],
28503
- icon: "GraduationCap",
28504
- styleTokens: {
28505
- background: "surface",
28506
- typography: "body",
28507
- spacing: "md"
28508
- },
28509
- behaviours: {
28510
- supportsThemeSwitching: true,
28511
- inlineEditing: false,
28512
- animation: false,
28513
- paletteHidden: false
28514
- },
28515
- additionalFields: [
28516
- {
28517
- id: "heading",
28518
- type: "text",
28519
- label: "Heading",
28520
- description: "Optional heading shown above course details",
28521
- required: false,
28522
- multiline: false,
28523
- defaultValue: "Course details"
28524
- },
28525
- {
28526
- id: "showTitle",
28527
- type: "boolean",
28528
- label: "Show course title",
28529
- required: false,
28530
- defaultValue: false,
28531
- ui: { intent: "display" }
28532
- },
28533
- {
28534
- id: "showDescription",
28535
- type: "boolean",
28536
- label: "Show course description",
28537
- description: "Render the course description from the bookings course record",
28538
- required: false,
28539
- defaultValue: false,
28540
- ui: { intent: "display" }
28541
- },
28542
- {
28543
- id: "showSessions",
28544
- type: "boolean",
28545
- label: "Show sessions",
28546
- required: false,
28547
- defaultValue: true,
28548
- ui: { intent: "display" }
28549
- },
28550
- {
28551
- id: "sessionsLimit",
28552
- type: "select",
28553
- label: "Sessions limit",
28554
- required: false,
28555
- multiple: false,
28556
- defaultValue: "10",
28557
- options: [
28558
- {
28559
- value: "3",
28560
- label: "3 sessions"
28561
- },
28562
- {
28563
- value: "5",
28564
- label: "5 sessions"
28565
- },
28566
- {
28567
- value: "10",
28568
- label: "10 sessions"
28569
- },
28570
- {
28571
- value: "all",
28572
- label: "All sessions"
28573
- }
28574
- ],
28575
- ui: { intent: "display" }
28576
- },
28577
- {
28578
- id: "showVenue",
28579
- type: "boolean",
28580
- label: "Show venue",
28581
- required: false,
28582
- defaultValue: true,
28583
- ui: { intent: "display" }
28584
- },
28585
- {
28586
- id: "showPrice",
28587
- type: "boolean",
28588
- label: "Show price",
28589
- required: false,
28590
- defaultValue: true,
28591
- ui: { intent: "display" }
28592
- },
28593
- {
28594
- id: "showCapacity",
28595
- type: "boolean",
28596
- label: "Show capacity",
28597
- required: false,
28598
- defaultValue: true,
28599
- ui: { intent: "display" }
28600
- },
28601
- {
28602
- id: "showEnrollmentStatus",
28603
- type: "boolean",
28604
- label: "Show enrollment status",
28605
- required: false,
28606
- defaultValue: true,
28607
- ui: { intent: "display" }
28608
- },
28609
- {
28610
- id: "showMembershipNote",
28611
- type: "boolean",
28612
- label: "Show membership note",
28613
- description: "Indicate when memberships can be used for free enrollment",
28614
- required: false,
28615
- defaultValue: true,
28616
- ui: { intent: "display" }
28617
- }
28618
- ],
28619
- layout: [styledSection({
28620
- baseClass: "",
28621
- spacing: "spacious",
28622
- children: sectionContainer([text({ as: "h2" }, bind("content.heading"), when("content.heading")), el("course-details", {
28623
- subject: { $bind: {
28624
- from: "$root.subject",
28625
- fallback: null
28626
- } },
28627
- courses: { $bind: { from: "data.courses" } },
28628
- showTitle: { $bind: {
28629
- from: "content.showTitle",
28630
- fallback: false
28631
- } },
28632
- showDescription: { $bind: {
28633
- from: "content.showDescription",
28634
- fallback: false
28635
- } },
28636
- showSessions: { $bind: {
28637
- from: "content.showSessions",
28638
- fallback: true
28639
- } },
28640
- sessionsLimit: { $bind: {
28641
- from: "content.sessionsLimit",
28642
- fallback: "10"
28643
- } },
28644
- showVenue: { $bind: {
28645
- from: "content.showVenue",
28646
- fallback: true
28647
- } },
28648
- showPrice: { $bind: {
28649
- from: "content.showPrice",
28650
- fallback: true
28651
- } },
28652
- showCapacity: { $bind: {
28653
- from: "content.showCapacity",
28654
- fallback: true
28655
- } },
28656
- showEnrollmentStatus: { $bind: {
28657
- from: "content.showEnrollmentStatus",
28658
- fallback: true
28659
- } },
28660
- showMembershipNote: { $bind: {
28661
- from: "content.showMembershipNote",
28662
- fallback: true
28663
- } }
28664
- })], { gap: "lg" })
28665
- })]
28666
- }),
28667
- dataSchemas: { courses: publicWholeSeriesOfferingsArraySchema.optional() },
28668
- dataLoaders: { courses: {
28669
- endpoint: "listPublicWholeSeriesOfferings",
28670
- params: {
28671
- siteId: { $bind: { from: "$root.siteId" } },
28672
- limit: "50",
28673
- stage: { $bind: {
28674
- from: "$root.previewStage",
28675
- fallback: "published"
28676
- } }
28677
- },
28678
- mode: "server"
28679
- } }
28680
- };
28681
28476
  const eventSpotlightBlockDefinition = {
28682
28477
  manifest: createBlockManifest({
28683
28478
  id: "block.event-spotlight",
@@ -30840,7 +30635,7 @@ const publicRouteCandidatesSchema = z.object({ routes: z.array(z.object({
30840
30635
  entityId: z.string(),
30841
30636
  path: z.string(),
30842
30637
  title: z.string(),
30843
- kind: z.enum(["page", "content"]),
30638
+ kind: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
30844
30639
  contentTypeKey: z.string().nullable().optional()
30845
30640
  })) });
30846
30641
  const groupOverrideFields = [
@@ -31117,7 +30912,7 @@ const offeringsPreviewManifest = createBlockManifest({
31117
30912
  fallback: "published"
31118
30913
  } },
31119
30914
  routeCandidates: { $bind: { from: "data.routeCandidates" } },
31120
- courses: { $bind: { from: "data.courses" } },
30915
+ wholeSeriesOfferings: { $bind: { from: "data.wholeSeriesOfferings" } },
31121
30916
  ...offeringsPreviewEventDataBindings
31122
30917
  })
31123
30918
  ], { gap: "lg" }),
@@ -31134,7 +30929,7 @@ const offeringsPreviewBlockDefinition = {
31134
30929
  dataSchemas: {
31135
30930
  ...offeringsPreviewEventDataSchemas,
31136
30931
  routeCandidates: publicRouteCandidatesSchema.optional(),
31137
- courses: publicWholeSeriesOfferingsArraySchema.optional()
30932
+ wholeSeriesOfferings: publicWholeSeriesOfferingsArraySchema.optional()
31138
30933
  },
31139
30934
  dataLoaders: {
31140
30935
  ...offeringsPreviewEventDataLoaders,
@@ -31143,7 +30938,7 @@ const offeringsPreviewBlockDefinition = {
31143
30938
  params: {},
31144
30939
  mode: "server"
31145
30940
  },
31146
- courses: {
30941
+ wholeSeriesOfferings: {
31147
30942
  endpoint: "listPublicWholeSeriesOfferings",
31148
30943
  params: {
31149
30944
  siteId: { $bind: { from: "$root.siteId" } },
@@ -36110,22 +35905,6 @@ const systemBlockDefinitions = [
36110
35905
  weight: "standard"
36111
35906
  })]
36112
35907
  })),
36113
- withDesignCapability("block.course-registration", courseRegistrationBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
36114
- flow: conversionFlow,
36115
- layoutProfiles: [layoutProfile({
36116
- variantKey: "default",
36117
- family: "form",
36118
- weight: "standard"
36119
- })]
36120
- })),
36121
- withDesignCapability("block.course-details", courseDetailsBlockDefinition, scheduleDetailsCapable(), defineBlockDesignMetadata({
36122
- flow: offeringsFlow,
36123
- layoutProfiles: [layoutProfile({
36124
- variantKey: "default",
36125
- family: "stack",
36126
- weight: "standard"
36127
- })]
36128
- })),
36129
35908
  withDesignCapability("block.event-spotlight", eventSpotlightBlockDefinition, eventSpotlightCapable(), defineBlockDesignMetadata({
36130
35909
  flow: offeringsFlow,
36131
35910
  layoutProfiles: [layoutProfile({
@@ -37700,6 +37479,68 @@ function collectText(node) {
37700
37479
  return (node.content ?? []).map(collectText).join("");
37701
37480
  }
37702
37481
  //#endregion
37482
+ //#region ../api/src/bookingPaymentTermSchemas.ts
37483
+ const bookingDepositRefundPolicySchema = z.enum(["refundable", "non_refundable"]);
37484
+ const bookingInstalmentPlanSchema = z.discriminatedUnion("kind", [
37485
+ z.object({
37486
+ kind: z.literal("deposit_plus_one_remainder"),
37487
+ depositAmountCents: z.number().int().nonnegative(),
37488
+ depositRefundability: bookingDepositRefundPolicySchema,
37489
+ remainderDueCount: z.number().int().positive(),
37490
+ intervalUnit: z.enum([
37491
+ "day",
37492
+ "week",
37493
+ "month"
37494
+ ])
37495
+ }),
37496
+ z.object({
37497
+ kind: z.literal("deposit_plus_scheduled_instalments"),
37498
+ depositAmountCents: z.number().int().nonnegative(),
37499
+ depositRefundability: bookingDepositRefundPolicySchema,
37500
+ instalmentCount: z.number().int().positive(),
37501
+ intervalCount: z.number().int().positive(),
37502
+ intervalUnit: z.enum([
37503
+ "day",
37504
+ "week",
37505
+ "month"
37506
+ ])
37507
+ }),
37508
+ z.object({
37509
+ kind: z.literal("equal_scheduled_instalments"),
37510
+ instalmentCount: z.number().int().positive(),
37511
+ intervalCount: z.number().int().positive(),
37512
+ intervalUnit: z.enum([
37513
+ "day",
37514
+ "week",
37515
+ "month"
37516
+ ])
37517
+ })
37518
+ ]);
37519
+ const bookingFlexibleBalanceDueDateRuleSchema = z.discriminatedUnion("kind", [z.object({
37520
+ kind: z.literal("relative_to_start_date"),
37521
+ daysBeforeStart: z.number().int().positive()
37522
+ }), z.object({
37523
+ kind: z.literal("fixed_calendar_date"),
37524
+ dueAt: z.string().datetime()
37525
+ })]);
37526
+ const bookingFlexibleBalanceConfigSchema = z.object({
37527
+ upfrontAmountCents: z.number().int().nonnegative(),
37528
+ dueDateRule: bookingFlexibleBalanceDueDateRuleSchema,
37529
+ depositRefundability: bookingDepositRefundPolicySchema
37530
+ });
37531
+ z.discriminatedUnion("kind", [
37532
+ z.object({ kind: z.literal("upfront") }),
37533
+ z.object({ kind: z.literal("deferred_manual") }),
37534
+ z.object({
37535
+ kind: z.literal("instalment_plan"),
37536
+ plan: bookingInstalmentPlanSchema
37537
+ }),
37538
+ z.object({
37539
+ kind: z.literal("flexible_balance"),
37540
+ config: bookingFlexibleBalanceConfigSchema
37541
+ })
37542
+ ]);
37543
+ //#endregion
37703
37544
  //#region ../api/src/navigationMenuValidation.ts
37704
37545
  function hasChildren(item) {
37705
37546
  return Array.isArray(item.children) && item.children.length > 0;