@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
@@ -798,69 +798,8 @@ const ACCOUNT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
798
798
  }
799
799
  });
800
800
  //#endregion
801
- //#region ../api/src/courseEndpointDefinitions.ts
802
- const COURSE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
803
- listCourses: {
804
- path: "/sites/{siteId}/bookings/courses",
805
- method: "GET",
806
- auth: "user",
807
- responseKind: "json"
808
- },
809
- exportCoursesCsv: {
810
- path: "/sites/{siteId}/bookings/courses/export.csv",
811
- method: "GET",
812
- tags: [
813
- "site-{siteId}",
814
- "bookings",
815
- "courses-{siteId}"
816
- ],
817
- errors: [],
818
- auth: "user",
819
- responseKind: "blob"
820
- },
821
- createCourse: {
822
- path: "/sites/{siteId}/bookings/courses",
823
- method: "POST",
824
- auth: "user",
825
- responseKind: "json",
826
- errors: [
827
- "validation:invalid_input",
828
- "resource:not_found",
829
- "resource:already_exists",
830
- "resource:conflict",
831
- "server:internal_error"
832
- ]
833
- },
834
- getCourse: {
835
- path: "/sites/{siteId}/bookings/courses/{courseId}",
836
- method: "GET",
837
- auth: "user",
838
- responseKind: "json"
839
- },
840
- updateCourse: {
841
- path: "/sites/{siteId}/bookings/courses/{courseId}",
842
- method: "PATCH",
843
- auth: "user",
844
- responseKind: "json",
845
- errors: [
846
- "validation:invalid_input",
847
- "resource:not_found",
848
- "resource:conflict",
849
- "server:internal_error"
850
- ]
851
- },
852
- deleteCourse: {
853
- path: "/sites/{siteId}/bookings/courses/{courseId}",
854
- method: "DELETE",
855
- auth: "user",
856
- responseKind: "json",
857
- errors: [
858
- "validation:invalid_input",
859
- "resource:not_found",
860
- "resource:conflict",
861
- "server:internal_error"
862
- ]
863
- },
801
+ //#region ../api/src/eventSeriesRegistrationEndpointDefinitions.ts
802
+ const EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
864
803
  deleteEventOffering: {
865
804
  path: "/sites/{siteId}/bookings/event-offerings/{eventOfferingId}",
866
805
  method: "DELETE",
@@ -873,20 +812,8 @@ const COURSE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
873
812
  "server:internal_error"
874
813
  ]
875
814
  },
876
- duplicateCourse: {
877
- path: "/sites/{siteId}/bookings/courses/{courseId}/duplicate",
878
- method: "POST",
879
- auth: "user",
880
- responseKind: "json",
881
- errors: [
882
- "validation:invalid_input",
883
- "resource:not_found",
884
- "resource:already_exists",
885
- "server:internal_error"
886
- ]
887
- },
888
- changeCourseContentOwnership: {
889
- path: "/sites/{siteId}/bookings/courses/{courseId}/content-ownership",
815
+ changeEventSeriesContentOwnership: {
816
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/content-ownership",
890
817
  method: "POST",
891
818
  auth: "user",
892
819
  responseKind: "json",
@@ -897,8 +824,8 @@ const COURSE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
897
824
  "server:internal_error"
898
825
  ]
899
826
  },
900
- addCourseEnrollment: {
901
- path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments",
827
+ addEventSeriesRegistration: {
828
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations",
902
829
  method: "POST",
903
830
  auth: "user",
904
831
  responseKind: "json",
@@ -909,33 +836,21 @@ const COURSE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
909
836
  "server:internal_error"
910
837
  ]
911
838
  },
912
- listCourseEnrollments: {
913
- path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments",
839
+ listEventSeriesRegistrations: {
840
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations",
914
841
  method: "GET",
915
842
  auth: "user",
916
843
  responseKind: "json"
917
844
  },
918
- exportCourseEnrollmentsCsv: {
919
- path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments/export.csv",
845
+ exportEventSeriesRegistrationsCsv: {
846
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations/export.csv",
920
847
  method: "GET",
921
848
  auth: "user",
922
849
  errors: [],
923
850
  responseKind: "blob"
924
851
  },
925
- exportCourseWaitlistCsv: {
926
- path: "/sites/{siteId}/bookings/courses/{courseId}/waitlist/export.csv",
927
- method: "GET",
928
- tags: [
929
- "site-{siteId}",
930
- "bookings",
931
- "courses-{courseId}"
932
- ],
933
- auth: "user",
934
- responseKind: "blob",
935
- errors: []
936
- },
937
- updateCourseEnrollment: {
938
- path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments/{enrollmentId}",
852
+ updateEventSeriesRegistration: {
853
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations/{registrationId}",
939
854
  method: "PATCH",
940
855
  auth: "user",
941
856
  responseKind: "json",
@@ -1323,71 +1238,35 @@ const PUBLIC_WHOLE_SERIES_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1323
1238
  errors: ["resource:not_found", "server:internal_error"],
1324
1239
  auth: "public",
1325
1240
  responseKind: "json"
1326
- },
1327
- registerForWholeSeries: {
1328
- path: "/public/sites/{siteId}/dated-offerings/whole-series/enroll",
1329
- method: "POST",
1330
- tags: [TAG_TEMPLATES.publicWholeSeriesOfferings, "course-enrollment"],
1331
- errors: [
1332
- "auth:unauthenticated",
1333
- "auth:forbidden",
1334
- "validation:invalid_input",
1335
- "resource:not_found",
1336
- "resource:conflict",
1337
- "resource:already_exists",
1338
- "server:internal_error"
1339
- ],
1340
- auth: "public",
1341
- responseKind: "json"
1342
- },
1343
- checkWholeSeriesEligibility: {
1344
- path: "/public/sites/{siteId}/dated-offerings/whole-series/check-eligibility",
1345
- method: "POST",
1346
- tags: [TAG_TEMPLATES.publicWholeSeriesOfferings, "course-enrollment"],
1347
- errors: [
1348
- "auth:unauthenticated",
1349
- "resource:not_found",
1350
- "resource:conflict",
1351
- "server:internal_error"
1352
- ],
1353
- auth: "public",
1354
- responseKind: "json"
1355
- },
1356
- createWholeSeriesCheckout: {
1357
- path: "/public/sites/{siteId}/dated-offerings/whole-series/checkout",
1241
+ }
1242
+ });
1243
+ //#endregion
1244
+ //#region ../api/src/publicEventEndpointDefinitions.ts
1245
+ const PUBLIC_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1246
+ getPublicEventRegistrationOptions: {
1247
+ path: "/public/sites/{siteId}/events/registration-options",
1358
1248
  method: "POST",
1359
- tags: [TAG_TEMPLATES.publicWholeSeriesOfferings, "course-checkout"],
1249
+ tags: [TAG_TEMPLATES.publicEvents, "event-registration-options"],
1360
1250
  auth: "public",
1361
1251
  responseKind: "json",
1362
1252
  errors: [
1363
- "auth:unauthenticated",
1364
1253
  "validation:invalid_input",
1365
1254
  "resource:not_found",
1366
1255
  "resource:conflict",
1367
1256
  "server:internal_error"
1368
1257
  ]
1369
1258
  },
1370
- getWholeSeriesRegistrationStatus: {
1371
- path: "/public/sites/{siteId}/dated-offerings/whole-series/registration-status",
1259
+ resolveEventSubroute: {
1260
+ path: "/public/sites/{siteId}/events/subroutes/resolve",
1372
1261
  method: "GET",
1373
- tags: [TAG_TEMPLATES.publicWholeSeriesOfferings, "course-checkout"],
1374
- errors: ["resource:not_found", "server:internal_error"],
1262
+ revalidate: 60,
1263
+ tags: [TAG_TEMPLATES.publicEvents, "event-subroute"],
1375
1264
  auth: "public",
1376
- responseKind: "json"
1265
+ responseKind: "json",
1266
+ errors: []
1377
1267
  }
1378
1268
  });
1379
1269
  //#endregion
1380
- //#region ../api/src/publicEventEndpointDefinitions.ts
1381
- const PUBLIC_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({ resolveEventSubroute: {
1382
- path: "/public/sites/{siteId}/events/subroutes/resolve",
1383
- method: "GET",
1384
- revalidate: 60,
1385
- tags: [TAG_TEMPLATES.publicEvents, "event-subroute"],
1386
- auth: "public",
1387
- responseKind: "json",
1388
- errors: []
1389
- } });
1390
- //#endregion
1391
1270
  //#region ../api/src/siteApiKeyEndpointDefinitions.ts
1392
1271
  const SITE_API_KEY_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1393
1272
  listSiteApiKeys: {
@@ -1755,7 +1634,7 @@ const SDK_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
1755
1634
  }), 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, {
1756
1635
  ...NEWSLETTER_ENDPOINT_DEFINITIONS,
1757
1636
  ...APPOINTMENT_ENDPOINT_DEFINITIONS,
1758
- ...COURSE_ENDPOINT_DEFINITIONS
1637
+ ...EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS
1759
1638
  }, 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 };
1760
1639
  z.object({ refreshToken: z.string().min(1).max(4096) }).strict();
1761
1640
  z.object({
@@ -1931,14 +1810,14 @@ function publicEventPricingType(pricing) {
1931
1810
  case "single_paid":
1932
1811
  case "ticket_types":
1933
1812
  case "sliding_scale":
1934
- case "course": return isFreePublicEventPriceDisplay(pricing.display) ? "free" : "paid";
1813
+ case "whole_series": return isFreePublicEventPriceDisplay(pricing.display) ? "free" : "paid";
1935
1814
  case "external": return "external";
1936
1815
  }
1937
1816
  }
1938
1817
  function isFreePublicEventPriceDisplay(display) {
1939
1818
  switch (display.kind) {
1940
1819
  case "free": return true;
1941
- case "course": return display.display.kind === "free";
1820
+ case "whole_series": return display.display.kind === "free";
1942
1821
  case "exact":
1943
1822
  case "from":
1944
1823
  case "range":
@@ -2259,6 +2138,25 @@ function parseManagementKey(raw) {
2259
2138
  return ok(createSecretInternal("management-key", raw));
2260
2139
  }
2261
2140
  //#endregion
2141
+ //#region ../core/src/planner.ts
2142
+ /** Default clock for production callers that do not inject time explicitly. */
2143
+ const systemPlanningClock = { now: () => Date.now() };
2144
+ /** Resolve current time as a Date from an explicit Date, injected clock, or system clock. */
2145
+ function resolvePlanningNowDate(input = {}) {
2146
+ if (input.now !== void 0) return input.now;
2147
+ return new Date((input.clock ?? systemPlanningClock).now());
2148
+ }
2149
+ /**
2150
+ * Resolve a Date-compatible planner input.
2151
+ *
2152
+ * Precedence: bare Date, `{ now }`, `{ clock }`, then `systemPlanningClock`.
2153
+ * Explicit Date inputs are returned by reference, not cloned.
2154
+ */
2155
+ function resolvePlanningDateInput(input = {}) {
2156
+ if (input instanceof Date) return input;
2157
+ return resolvePlanningNowDate(input);
2158
+ }
2159
+ //#endregion
2262
2160
  //#region ../core/src/event-series-behaviour.ts
2263
2161
  const SURFACE_EVENT_PRESET_VALUES = [
2264
2162
  "class",
@@ -2561,6 +2459,68 @@ z.object({
2561
2459
  monthlyCurrency: z.literal("gbp")
2562
2460
  });
2563
2461
  //#endregion
2462
+ //#region ../blocks/src/system/types/link.ts
2463
+ const nullableString = z.union([z.string().min(1), z.null()]);
2464
+ const RESOLVED_INTERNAL_LINK_ENTITY_TYPES = [
2465
+ "page",
2466
+ "content",
2467
+ "pageSurface"
2468
+ ];
2469
+ const resolvedInternalLinkKeys = [
2470
+ "entityId",
2471
+ "entityType",
2472
+ "href",
2473
+ "title",
2474
+ "typeLabel"
2475
+ ];
2476
+ const internalRouteOnlyLinkSchema = z.object({
2477
+ kind: z.literal("internal"),
2478
+ routeId: z.string().min(1)
2479
+ }).passthrough().superRefine((value, ctx) => {
2480
+ if (!resolvedInternalLinkKeys.some((key) => value[key] != null)) return;
2481
+ ctx.addIssue({
2482
+ code: "custom",
2483
+ message: "Internal links with resolved metadata must include entityId, entityType, href, title, and typeLabel"
2484
+ });
2485
+ });
2486
+ const internalResolvedLinkSchema = z.object({
2487
+ kind: z.literal("internal"),
2488
+ routeId: z.string().min(1),
2489
+ entityId: z.string().min(1),
2490
+ entityType: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
2491
+ href: z.string().min(1),
2492
+ title: z.string().min(1),
2493
+ typeLabel: z.string().min(1),
2494
+ contentTypeKey: nullableString.optional(),
2495
+ contentTypeName: nullableString.optional(),
2496
+ updatedAt: nullableString.optional()
2497
+ }).passthrough();
2498
+ const internalLinkSchema = z.union([internalResolvedLinkSchema, internalRouteOnlyLinkSchema]);
2499
+ const externalLinkSchema$1 = z.object({
2500
+ kind: z.literal("external"),
2501
+ href: z.string().min(1)
2502
+ }).passthrough();
2503
+ const customLinkSchema$1 = z.object({
2504
+ kind: z.literal("url"),
2505
+ href: z.string().min(1)
2506
+ }).passthrough();
2507
+ const pageLinkSchema$1 = z.object({
2508
+ kind: z.literal("page"),
2509
+ identifier: z.string().min(1)
2510
+ }).passthrough();
2511
+ const entryLinkSchema$1 = z.object({
2512
+ kind: z.literal("entry"),
2513
+ contentType: z.string().min(1),
2514
+ identifier: z.string().min(1)
2515
+ }).passthrough();
2516
+ z.union([
2517
+ internalLinkSchema,
2518
+ externalLinkSchema$1,
2519
+ customLinkSchema$1,
2520
+ pageLinkSchema$1,
2521
+ entryLinkSchema$1
2522
+ ]);
2523
+ //#endregion
2564
2524
  //#region ../api/src/navigation/contracts.ts
2565
2525
  /**
2566
2526
  * Canonical navigation/link Zod contracts.
@@ -2590,7 +2550,7 @@ const internalLinkPayloadSchema = z.object({
2590
2550
  kind: z.literal("internal"),
2591
2551
  routeId: z.string().uuid(),
2592
2552
  entityId: z.string().uuid(),
2593
- entityType: z.enum(["page", "content"]),
2553
+ entityType: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
2594
2554
  href: z.string().min(1),
2595
2555
  title: z.string().min(1),
2596
2556
  typeLabel: z.string().min(1),
@@ -10656,7 +10616,7 @@ defineBlockAppearancePreset({
10656
10616
  id: "schedule-details-brand-depth",
10657
10617
  target: "events",
10658
10618
  label: "Brand-depth schedule details",
10659
- blockKinds: ["block.event-details", "block.course-details"],
10619
+ blockKinds: ["block.event-details"],
10660
10620
  design: {
10661
10621
  sectionSurface: "brand-depth-band",
10662
10622
  contentFrame: plainFrame,
@@ -16855,7 +16815,6 @@ const productDetail = (props, children, ...mods) => el("product-detail", props,
16855
16815
  const cart = (props, children, ...mods) => el("cart", props, children, ...mods);
16856
16816
  const checkout = (props, children, ...mods) => el("checkout", props, children, ...mods);
16857
16817
  const gifting = (props, children, ...mods) => el("gifting", props, children, ...mods);
16858
- const courseRegistration = (props, children, ...mods) => el("course-registration", props, children, ...mods);
16859
16818
  function bind(from, options) {
16860
16819
  return (node) => ({
16861
16820
  ...node,
@@ -26496,12 +26455,12 @@ const RichTextDocSchema = z.object({
26496
26455
  }).strict();
26497
26456
  //#endregion
26498
26457
  //#region ../blocks/src/system/blocks/shared/bookingPaymentTerms.ts
26499
- const bookingDepositRefundPolicySchema = z.enum(["refundable", "non_refundable"]);
26500
- const bookingInstalmentPlanSchema = z.union([
26458
+ const bookingDepositRefundPolicySchema$1 = z.enum(["refundable", "non_refundable"]);
26459
+ const bookingInstalmentPlanSchema$1 = z.union([
26501
26460
  z.object({
26502
26461
  kind: z.literal("deposit_plus_one_remainder"),
26503
26462
  depositAmountCents: z.number().int().min(0),
26504
- depositRefundability: bookingDepositRefundPolicySchema,
26463
+ depositRefundability: bookingDepositRefundPolicySchema$1,
26505
26464
  remainderDueCount: z.number().int().positive(),
26506
26465
  intervalUnit: z.enum([
26507
26466
  "day",
@@ -26512,7 +26471,7 @@ const bookingInstalmentPlanSchema = z.union([
26512
26471
  z.object({
26513
26472
  kind: z.literal("deposit_plus_scheduled_instalments"),
26514
26473
  depositAmountCents: z.number().int().min(0),
26515
- depositRefundability: bookingDepositRefundPolicySchema,
26474
+ depositRefundability: bookingDepositRefundPolicySchema$1,
26516
26475
  instalmentCount: z.number().int().positive(),
26517
26476
  intervalCount: z.number().int().positive(),
26518
26477
  intervalUnit: z.enum([
@@ -26532,32 +26491,207 @@ const bookingInstalmentPlanSchema = z.union([
26532
26491
  ])
26533
26492
  })
26534
26493
  ]);
26535
- const bookingFlexibleBalanceDueDateRuleSchema = z.union([z.object({
26494
+ const bookingFlexibleBalanceDueDateRuleSchema$1 = z.union([z.object({
26536
26495
  kind: z.literal("relative_to_start_date"),
26537
26496
  daysBeforeStart: z.number().int().positive()
26538
26497
  }), z.object({
26539
26498
  kind: z.literal("fixed_calendar_date"),
26540
26499
  dueAt: z.string().datetime()
26541
26500
  })]);
26542
- const bookingFlexibleBalanceConfigSchema = z.object({
26501
+ const bookingFlexibleBalanceConfigSchema$1 = z.object({
26543
26502
  upfrontAmountCents: z.number().int().min(0),
26544
- dueDateRule: bookingFlexibleBalanceDueDateRuleSchema,
26545
- depositRefundability: bookingDepositRefundPolicySchema
26503
+ dueDateRule: bookingFlexibleBalanceDueDateRuleSchema$1,
26504
+ depositRefundability: bookingDepositRefundPolicySchema$1
26546
26505
  });
26547
26506
  const blockBookingPaymentCollectionOptionSchema = z.union([
26548
26507
  z.object({ kind: z.literal("upfront") }),
26549
26508
  z.object({ kind: z.literal("deferred_manual") }),
26550
26509
  z.object({
26551
26510
  kind: z.literal("instalment_plan"),
26552
- plan: bookingInstalmentPlanSchema
26511
+ plan: bookingInstalmentPlanSchema$1
26553
26512
  }),
26554
26513
  z.object({
26555
26514
  kind: z.literal("flexible_balance"),
26556
- config: bookingFlexibleBalanceConfigSchema
26515
+ config: bookingFlexibleBalanceConfigSchema$1
26557
26516
  })
26558
26517
  ]);
26559
26518
  const blockBookingPaymentTermsSchema = z.object({ allowedOptions: z.array(blockBookingPaymentCollectionOptionSchema).min(1) });
26560
26519
  //#endregion
26520
+ //#region ../blocks/src/system/blocks/shared/bookingConsent.ts
26521
+ const blockBookingConsentSchema = z.object({
26522
+ requirementId: z.string(),
26523
+ title: z.string(),
26524
+ agreement: RichTextDocSchema,
26525
+ checkboxLabel: z.string()
26526
+ });
26527
+ const bookingRequirementConsentFieldSchema = z.object({
26528
+ id: z.string(),
26529
+ label: z.string(),
26530
+ type: z.literal("booking_requirement_consent"),
26531
+ required: z.literal(true),
26532
+ agreement: RichTextDocSchema,
26533
+ checkboxLabel: z.string().min(1)
26534
+ });
26535
+ z.union([blockBookingConsentSchema, bookingRequirementConsentFieldSchema]);
26536
+ //#endregion
26537
+ //#region ../blocks/src/system/blocks/events/whole-series/pricing.ts
26538
+ function isSaleWindowOpen(option, now) {
26539
+ if (!option.isActive) return false;
26540
+ if (option.saleStartsAt && new Date(option.saleStartsAt) > now) return false;
26541
+ if (option.saleEndsAt && new Date(option.saleEndsAt) < now) return false;
26542
+ return true;
26543
+ }
26544
+ function toExactOrFreeDisplay(amount, currency) {
26545
+ if (amount <= 0) return {
26546
+ kind: "free",
26547
+ currency
26548
+ };
26549
+ return {
26550
+ kind: "exact",
26551
+ amount,
26552
+ currency
26553
+ };
26554
+ }
26555
+ function getSelectableWholeSeriesPricingOptionsForNow(offering, now) {
26556
+ if (offering.pricing.pricingStrategy !== "tiered") return [];
26557
+ return [...offering.pricing.options].filter((option) => isSaleWindowOpen(option, now)).sort((left, right) => {
26558
+ if (left.sortOrder !== right.sortOrder) return left.sortOrder - right.sortOrder;
26559
+ if (left.priceAmount !== right.priceAmount) return left.priceAmount - right.priceAmount;
26560
+ return left.name.localeCompare(right.name);
26561
+ });
26562
+ }
26563
+ function resolveWholeSeriesPricingState(offering, selectedPricingOptionId, selectedSlidingAmountOrNowInput, nowInput = {}) {
26564
+ const selection = normalizePricingSelectionInput(selectedSlidingAmountOrNowInput, nowInput);
26565
+ const currency = offering.pricing.currency;
26566
+ switch (offering.pricing.pricingStrategy) {
26567
+ case "free": return resolveFreePricing(currency);
26568
+ case "single": return resolveSinglePricing(offering.pricing.singlePriceAmount ?? 0, currency);
26569
+ case "tiered": return resolveTieredPricing(offering, selectedPricingOptionId, selection.nowInput);
26570
+ case "sliding_scale": return resolveSlidingScalePricing(offering, selection.selectedSlidingAmount);
26571
+ }
26572
+ }
26573
+ function normalizePricingSelectionInput(selectedSlidingAmountOrNowInput, nowInput) {
26574
+ return typeof selectedSlidingAmountOrNowInput === "object" && selectedSlidingAmountOrNowInput !== null ? {
26575
+ selectedSlidingAmount: null,
26576
+ nowInput: selectedSlidingAmountOrNowInput
26577
+ } : {
26578
+ selectedSlidingAmount: typeof selectedSlidingAmountOrNowInput === "number" || selectedSlidingAmountOrNowInput === null ? selectedSlidingAmountOrNowInput : null,
26579
+ nowInput
26580
+ };
26581
+ }
26582
+ function resolveFreePricing(currency) {
26583
+ return {
26584
+ currency,
26585
+ display: {
26586
+ kind: "free",
26587
+ currency
26588
+ },
26589
+ selectableOptions: [],
26590
+ requiresSelection: false,
26591
+ selectedOption: null,
26592
+ slidingScale: null,
26593
+ selectedSlidingAmount: null,
26594
+ selectedPriceAmount: 0,
26595
+ selectedRequiresPayment: false,
26596
+ hasPaidSelection: false,
26597
+ hasFreeSelection: true
26598
+ };
26599
+ }
26600
+ function resolveSinglePricing(amount, currency) {
26601
+ return {
26602
+ currency,
26603
+ display: toExactOrFreeDisplay(amount, currency),
26604
+ selectableOptions: [],
26605
+ requiresSelection: false,
26606
+ selectedOption: null,
26607
+ slidingScale: null,
26608
+ selectedSlidingAmount: null,
26609
+ selectedPriceAmount: amount,
26610
+ selectedRequiresPayment: amount > 0,
26611
+ hasPaidSelection: amount > 0,
26612
+ hasFreeSelection: amount <= 0
26613
+ };
26614
+ }
26615
+ function resolveTieredPricing(offering, selectedPricingOptionId, nowInput) {
26616
+ const currency = offering.pricing.currency;
26617
+ const selectableOptions = getSelectableWholeSeriesPricingOptionsForNow(offering, resolvePlanningDateInput(nowInput));
26618
+ const selectedOption = resolveSelectedTier(selectableOptions, selectedPricingOptionId);
26619
+ return {
26620
+ currency,
26621
+ display: resolveTieredDisplay(selectableOptions.reduce((lowest, option) => lowest === null || option.priceAmount < lowest ? option.priceAmount : lowest, null), selectableOptions.length, currency),
26622
+ selectableOptions,
26623
+ requiresSelection: selectableOptions.length > 1,
26624
+ selectedOption,
26625
+ slidingScale: null,
26626
+ selectedSlidingAmount: null,
26627
+ selectedPriceAmount: selectedOption?.priceAmount ?? null,
26628
+ selectedRequiresPayment: (selectedOption?.priceAmount ?? 0) > 0,
26629
+ hasPaidSelection: selectableOptions.some((option) => option.priceAmount > 0),
26630
+ hasFreeSelection: selectableOptions.some((option) => option.priceAmount === 0)
26631
+ };
26632
+ }
26633
+ function resolveSelectedTier(options, selectedId) {
26634
+ return (selectedId ? options.find((option) => option.id === selectedId) : null) ?? (options.length === 1 ? options[0] ?? null : null);
26635
+ }
26636
+ function resolveTieredDisplay(lowestAmount, optionCount, currency) {
26637
+ if (lowestAmount === null) return {
26638
+ kind: "unavailable",
26639
+ currency
26640
+ };
26641
+ return optionCount > 1 && lowestAmount > 0 ? {
26642
+ kind: "from",
26643
+ amount: lowestAmount,
26644
+ currency
26645
+ } : toExactOrFreeDisplay(lowestAmount, currency);
26646
+ }
26647
+ function resolveSlidingScalePricing(offering, selectedSlidingAmount) {
26648
+ const currency = offering.pricing.currency;
26649
+ const minAmount = offering.pricing.slidingMinAmount ?? null;
26650
+ const maxAmount = offering.pricing.slidingMaxAmount ?? null;
26651
+ if (minAmount === null || maxAmount === null || minAmount < 0 || maxAmount < minAmount) return unavailableSlidingScale(currency);
26652
+ const selectedAmount = Number.isFinite(selectedSlidingAmount) ? selectedSlidingAmount : null;
26653
+ return {
26654
+ currency,
26655
+ display: {
26656
+ kind: "range",
26657
+ minAmount,
26658
+ maxAmount,
26659
+ currency
26660
+ },
26661
+ selectableOptions: [],
26662
+ requiresSelection: selectedAmount === null,
26663
+ selectedOption: null,
26664
+ slidingScale: {
26665
+ minAmount,
26666
+ maxAmount,
26667
+ suggestedAmount: offering.pricing.slidingSuggestedAmount ?? null
26668
+ },
26669
+ selectedSlidingAmount: selectedAmount,
26670
+ selectedPriceAmount: selectedAmount,
26671
+ selectedRequiresPayment: (selectedAmount ?? 0) > 0,
26672
+ hasPaidSelection: maxAmount > 0,
26673
+ hasFreeSelection: minAmount === 0
26674
+ };
26675
+ }
26676
+ function unavailableSlidingScale(currency) {
26677
+ return {
26678
+ currency,
26679
+ display: {
26680
+ kind: "unavailable",
26681
+ currency
26682
+ },
26683
+ selectableOptions: [],
26684
+ requiresSelection: true,
26685
+ selectedOption: null,
26686
+ slidingScale: null,
26687
+ selectedSlidingAmount: null,
26688
+ selectedPriceAmount: null,
26689
+ selectedRequiresPayment: false,
26690
+ hasPaidSelection: false,
26691
+ hasFreeSelection: false
26692
+ };
26693
+ }
26694
+ //#endregion
26561
26695
  //#region ../blocks/src/system/blocks/events/whole-series/schemas.ts
26562
26696
  const wholeSeriesVenueSchema = z.object({
26563
26697
  id: z.string(),
@@ -26617,11 +26751,19 @@ const publicWholeSeriesOfferingSchema = z.object({
26617
26751
  title: z.string(),
26618
26752
  slug: z.string(),
26619
26753
  description: z.unknown().nullable(),
26754
+ deliveryMode: z.enum([
26755
+ "in_person",
26756
+ "online",
26757
+ "hybrid"
26758
+ ]),
26759
+ waitlistEnabled: z.boolean(),
26760
+ requireGuestDetails: z.boolean(),
26620
26761
  teamMembers: z.array(wholeSeriesTeamMemberSummarySchema).optional(),
26621
26762
  enrollmentOpen: z.boolean(),
26622
26763
  pricing: wholeSeriesPricingSchema,
26623
26764
  currency: z.string(),
26624
26765
  paymentTerms: blockBookingPaymentTermsSchema,
26766
+ consent: blockBookingConsentSchema.nullable(),
26625
26767
  enrollmentCapacity: z.number().nullable(),
26626
26768
  acceptsMemberships: z.boolean(),
26627
26769
  status: z.enum([
@@ -26731,7 +26873,7 @@ const mixedPriceDisplaySchema = z.object({
26731
26873
  paidToAmount: z.number(),
26732
26874
  currency: z.string()
26733
26875
  });
26734
- const publicCoursePriceDisplaySchema = z.discriminatedUnion("kind", [
26876
+ const publicWholeSeriesPriceDisplaySchema = z.discriminatedUnion("kind", [
26735
26877
  freePriceDisplaySchema,
26736
26878
  exactPriceDisplaySchema,
26737
26879
  fromPriceDisplaySchema,
@@ -26749,8 +26891,8 @@ z.discriminatedUnion("kind", [
26749
26891
  label: z.string()
26750
26892
  }),
26751
26893
  z.object({
26752
- kind: z.literal("course"),
26753
- display: publicCoursePriceDisplaySchema
26894
+ kind: z.literal("whole_series"),
26895
+ display: publicWholeSeriesPriceDisplaySchema
26754
26896
  })
26755
26897
  ]);
26756
26898
  const publicEventTicketTypePriceDisplaySchema = z.union([
@@ -26852,10 +26994,10 @@ const publicEventPricingSchema = z.discriminatedUnion("kind", [
26852
26994
  })
26853
26995
  }),
26854
26996
  z.object({
26855
- kind: z.literal("course"),
26997
+ kind: z.literal("whole_series"),
26856
26998
  display: z.object({
26857
- kind: z.literal("course"),
26858
- display: publicCoursePriceDisplaySchema
26999
+ kind: z.literal("whole_series"),
27000
+ display: publicWholeSeriesPriceDisplaySchema
26859
27001
  })
26860
27002
  }),
26861
27003
  z.object({
@@ -26939,6 +27081,7 @@ const publicEventSchema = z.object({
26939
27081
  timeZone: z.string(),
26940
27082
  pricing: publicEventPricingSchema,
26941
27083
  paymentTerms: blockBookingPaymentTermsSchema,
27084
+ consent: blockBookingConsentSchema.nullable(),
26942
27085
  accessRestriction: accessRestrictionSchema,
26943
27086
  allowedCategoryIds: z.array(z.string()),
26944
27087
  requireGuestDetails: z.boolean().optional(),
@@ -27271,7 +27414,8 @@ function resolveEventRegistrationScope(context) {
27271
27414
  };
27272
27415
  return { kind: "unscoped" };
27273
27416
  }
27274
- function applyEventRegistrationScope(events, scope) {
27417
+ function resolveEventRegistrationScopedEvents(events, context) {
27418
+ const scope = resolveEventRegistrationScope(context);
27275
27419
  switch (scope.kind) {
27276
27420
  case "occurrenceSeries":
27277
27421
  case "pageSurfaceSeries": return events.filter((event) => event.seriesId === scope.seriesId);
@@ -27283,8 +27427,24 @@ function applyEventRegistrationScope(events, scope) {
27283
27427
  case "unscoped": return [...events];
27284
27428
  }
27285
27429
  }
27286
- function resolveEventRegistrationScopedEvents(events, context) {
27287
- return applyEventRegistrationScope(events, resolveEventRegistrationScope(context));
27430
+ //#endregion
27431
+ //#region ../blocks/src/system/runtime/nodes/event-registration/registrationSurface.ts
27432
+ function planEventRegistrationScope(input) {
27433
+ const subject = input.subject;
27434
+ const selectedRunOffering = input.wholeSeriesOffering;
27435
+ if (subject?.kind !== "eventOffering" || !selectedRunOffering) return {
27436
+ kind: "context",
27437
+ events: resolveEventRegistrationScopedEvents(input.events, {
27438
+ occurrenceContext: input.occurrenceContext,
27439
+ subject
27440
+ })
27441
+ };
27442
+ if (!(selectedRunOffering.eventOfferingId === subject.eventOfferingId && subject.availableEventSeriesIds.some((seriesId) => seriesId === selectedRunOffering.eventSeriesId))) return { kind: "invalidSelectedRun" };
27443
+ return {
27444
+ kind: "selectedRun",
27445
+ events: input.events.filter((event) => event.seriesId === selectedRunOffering.eventSeriesId),
27446
+ offering: selectedRunOffering
27447
+ };
27288
27448
  }
27289
27449
  //#endregion
27290
27450
  //#region ../blocks/src/system/runtime/nodes/events/shared/destination.ts
@@ -27360,14 +27520,14 @@ function isRecord$4(value) {
27360
27520
  }
27361
27521
  function isPublicEventPricing(value) {
27362
27522
  if (!isRecord$4(value) || typeof value.kind !== "string") return false;
27363
- 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";
27523
+ 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";
27364
27524
  }
27365
27525
  function isPublicEventTicketType(value) {
27366
27526
  return isRecord$4(value) && typeof value.id === "string";
27367
27527
  }
27368
27528
  function readTicketTypePriceDisplay(value, currency) {
27369
27529
  const display = readLegacyPriceDisplay(value, currency);
27370
- return display.kind === "course" || display.kind === "external" ? {
27530
+ return display.kind === "whole_series" || display.kind === "external" ? {
27371
27531
  kind: "unavailable",
27372
27532
  currency
27373
27533
  } : display;
@@ -27425,11 +27585,11 @@ function readLegacyPriceDisplay(value, currency) {
27425
27585
  kind: "unavailable",
27426
27586
  currency: displayCurrency
27427
27587
  };
27428
- case "course": return isRecord$4(value.display) ? {
27429
- kind: "course",
27588
+ case "whole_series": return isRecord$4(value.display) ? {
27589
+ kind: "whole_series",
27430
27590
  display: readCoursePriceDisplay(value.display, displayCurrency)
27431
27591
  } : {
27432
- kind: "course",
27592
+ kind: "whole_series",
27433
27593
  display: {
27434
27594
  kind: "unavailable",
27435
27595
  currency: displayCurrency
@@ -27555,7 +27715,7 @@ function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep) {
27555
27715
  //#endregion
27556
27716
  //#region ../blocks/src/system/runtime/nodes/event-registration/registrationDerivations.ts
27557
27717
  function eventMatchesOccurrenceId(event, occurrenceId) {
27558
- return event.registrationOccurrenceId === occurrenceId || event.publicEventId === occurrenceId;
27718
+ return event.registrationSubject.kind === "occurrence" && (event.registrationSubject.occurrenceId === occurrenceId || event.selectionId === occurrenceId);
27559
27719
  }
27560
27720
  function findPreSelectedEvent(input) {
27561
27721
  const occurrenceContext = input.occurrenceContext;
@@ -27581,12 +27741,127 @@ function toRegistrationEvent(event) {
27581
27741
  return {
27582
27742
  ...event,
27583
27743
  pricing: resolveRuntimeEventPricing(event),
27584
- publicEventId: event.id,
27585
- registrationOccurrenceId: event.occurrenceId
27744
+ selectionId: event.id,
27745
+ registrationSubject: {
27746
+ kind: "occurrence",
27747
+ occurrenceId: event.occurrenceId
27748
+ }
27586
27749
  };
27587
27750
  }
27588
27751
  function toRegistrationEvents(events) {
27589
- return events.map(toRegistrationEvent);
27752
+ return events.filter((event) => event.bookingScope === "single_occurrence").map(toRegistrationEvent);
27753
+ }
27754
+ function toWholeSeriesTicketType(option) {
27755
+ return {
27756
+ ...option,
27757
+ capacityMode: option.capacityLimit === null ? "unlimited" : "limited",
27758
+ attendanceScope: option.attendanceScope ?? void 0,
27759
+ availability: {
27760
+ kind: "available",
27761
+ remainingCapacity: option.capacityLimit
27762
+ }
27763
+ };
27764
+ }
27765
+ function toWholeSeriesPricing(offering) {
27766
+ const resolved = resolveWholeSeriesPricingState(offering);
27767
+ switch (offering.pricing.pricingStrategy) {
27768
+ case "free": return {
27769
+ kind: "free_registration",
27770
+ currency: offering.currency,
27771
+ display: {
27772
+ kind: "free",
27773
+ currency: offering.currency
27774
+ }
27775
+ };
27776
+ case "single": {
27777
+ const amount = offering.pricing.singlePriceAmount ?? 0;
27778
+ return amount === 0 ? {
27779
+ kind: "free_registration",
27780
+ currency: offering.currency,
27781
+ display: {
27782
+ kind: "free",
27783
+ currency: offering.currency
27784
+ }
27785
+ } : {
27786
+ kind: "single_paid",
27787
+ amount,
27788
+ currency: offering.currency,
27789
+ display: {
27790
+ kind: "exact",
27791
+ amount,
27792
+ currency: offering.currency
27793
+ }
27794
+ };
27795
+ }
27796
+ case "tiered": return {
27797
+ kind: "ticket_types",
27798
+ currency: offering.currency,
27799
+ ticketTypes: resolved.selectableOptions.map((option) => toWholeSeriesTicketType(option)),
27800
+ display: resolved.display
27801
+ };
27802
+ case "sliding_scale": return {
27803
+ kind: "sliding_scale",
27804
+ minAmount: offering.pricing.slidingMinAmount ?? 0,
27805
+ maxAmount: offering.pricing.slidingMaxAmount ?? 0,
27806
+ suggestedAmount: offering.pricing.slidingSuggestedAmount ?? null,
27807
+ currency: offering.currency,
27808
+ display: {
27809
+ kind: "range",
27810
+ minAmount: offering.pricing.slidingMinAmount ?? 0,
27811
+ maxAmount: offering.pricing.slidingMaxAmount ?? 0,
27812
+ currency: offering.currency
27813
+ }
27814
+ };
27815
+ }
27816
+ }
27817
+ function toAttendanceModes(offering) {
27818
+ return (offering.deliveryMode === "hybrid" ? ["in_person", "online"] : [offering.deliveryMode]).map((mode) => ({
27819
+ mode,
27820
+ capacity: offering.enrollmentCapacity,
27821
+ registeredCount: offering.enrolledCount,
27822
+ availableSpots: offering.availableSpots,
27823
+ waitlistEnabled: offering.waitlistEnabled
27824
+ }));
27825
+ }
27826
+ function toWholeSeriesRegistrationEvent(offering) {
27827
+ const firstSession = offering.sessions[0];
27828
+ const lastSession = offering.sessions[offering.sessions.length - 1];
27829
+ return {
27830
+ selectionId: offering.eventSeriesId,
27831
+ registrationSubject: {
27832
+ kind: "wholeSeries",
27833
+ eventSeriesId: offering.eventSeriesId,
27834
+ sessions: offering.sessions
27835
+ },
27836
+ seriesId: offering.eventSeriesId,
27837
+ title: offering.title,
27838
+ startsAt: firstSession?.startsAt ?? "",
27839
+ endsAt: lastSession?.endsAt ?? firstSession?.endsAt ?? "",
27840
+ bookingAvailability: offering.enrollmentOpen ? { kind: "open" } : {
27841
+ kind: "closed",
27842
+ reason: "enrollment_closed"
27843
+ },
27844
+ deliveryMode: offering.deliveryMode,
27845
+ attendanceModes: toAttendanceModes(offering),
27846
+ capacity: offering.enrollmentCapacity,
27847
+ registeredCount: offering.enrolledCount,
27848
+ availableSpots: offering.availableSpots,
27849
+ waitlistEnabled: offering.waitlistEnabled,
27850
+ venue: offering.venue ? {
27851
+ ...offering.venue,
27852
+ location: null
27853
+ } : null,
27854
+ eventCategory: null,
27855
+ teamMembers: offering.teamMembers,
27856
+ status: offering.status,
27857
+ timeZone: firstSession?.timeZone ?? "UTC",
27858
+ pricing: toWholeSeriesPricing(offering),
27859
+ paymentTerms: offering.paymentTerms,
27860
+ consent: offering.consent,
27861
+ requireGuestDetails: offering.requireGuestDetails,
27862
+ acceptsPasses: false,
27863
+ acceptsMemberships: offering.acceptsMemberships
27864
+ };
27590
27865
  }
27591
27866
  //#endregion
27592
27867
  //#region ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
@@ -27612,11 +27887,7 @@ const eventRegistrationHydrationSchemaShape = {
27612
27887
  maxTickets: z.string().optional(),
27613
27888
  showVenue: z.boolean().optional(),
27614
27889
  showCapacity: z.boolean().optional(),
27615
- showSessions: z.boolean().optional(),
27616
- showPrice: z.boolean().optional(),
27617
27890
  successMessage: z.string().optional(),
27618
- waitlistMessage: z.string().optional(),
27619
- membershipMessage: z.string().optional(),
27620
27891
  buttonVariant: registrationButtonVariantSchema.optional(),
27621
27892
  overlayEnabled: z.boolean().optional(),
27622
27893
  spamProtectionEnabled: z.boolean().optional(),
@@ -27686,6 +27957,15 @@ function resolveWholeSeriesOffering(source) {
27686
27957
  return source.wholeSeriesOffering ?? source.subjectWholeSeriesOffering ?? null;
27687
27958
  }
27688
27959
  function buildEventRegistrationShellStepLabels(source) {
27960
+ const selectedOffering = resolveWholeSeriesOffering(source);
27961
+ if (selectedOffering) {
27962
+ const selectedEvent = toWholeSeriesRegistrationEvent(selectedOffering);
27963
+ return getWizardStepsForContext(true, resolveEventRequiresPayment({
27964
+ eligibility: null,
27965
+ selectedTicketType: null,
27966
+ event: selectedEvent
27967
+ })).map((step) => shellLabelForRegistrationStep(step, [selectedEvent]));
27968
+ }
27689
27969
  const scopedEvents = scopeEventRegistrationEvents(source);
27690
27970
  if (scopedEvents.length === 0) return EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
27691
27971
  const preSelectedEvent = findPreSelectedEvent({
@@ -27700,10 +27980,13 @@ function buildEventRegistrationShellStepLabels(source) {
27700
27980
  }) : false).map((step) => shellLabelForRegistrationStep(step, scopedEvents));
27701
27981
  }
27702
27982
  function scopeEventRegistrationEvents(source) {
27703
- return resolveEventRegistrationScopedEvents(toRegistrationEvents(source.events ?? []), {
27983
+ const scope = planEventRegistrationScope({
27984
+ events: toRegistrationEvents(source.events ?? []),
27985
+ wholeSeriesOffering: source.wholeSeriesOffering,
27704
27986
  occurrenceContext: source.occurrenceContext,
27705
27987
  subject: source.subject
27706
27988
  });
27989
+ return scope.kind === "invalidSelectedRun" ? [] : scope.events;
27707
27990
  }
27708
27991
  function shellLabelForRegistrationStep(step, events) {
27709
27992
  switch (step) {
@@ -27746,11 +28029,7 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
27746
28029
  maxTickets: source.maxTickets ?? void 0,
27747
28030
  showVenue: source.showVenue,
27748
28031
  showCapacity: source.showCapacity,
27749
- showSessions: source.showSessions,
27750
- showPrice: source.showPrice,
27751
28032
  successMessage: source.successMessage,
27752
- waitlistMessage: source.waitlistMessage,
27753
- membershipMessage: source.membershipMessage,
27754
28033
  buttonVariant: source.buttonVariant,
27755
28034
  overlayEnabled: source.overlayEnabled,
27756
28035
  spamProtectionEnabled: source.spamProtectionEnabled,
@@ -27866,24 +28145,6 @@ const eventRegistrationBlockDefinition = {
27866
28145
  defaultValue: true,
27867
28146
  ui: { intent: "display" }
27868
28147
  },
27869
- {
27870
- id: "showSessions",
27871
- type: "boolean",
27872
- label: "Show complete schedule",
27873
- description: "Display every session for whole-series registrations",
27874
- required: false,
27875
- defaultValue: true,
27876
- ui: { intent: "display" }
27877
- },
27878
- {
27879
- id: "showPrice",
27880
- type: "boolean",
27881
- label: "Show price",
27882
- description: "Display the whole-series price",
27883
- required: false,
27884
- defaultValue: true,
27885
- ui: { intent: "display" }
27886
- },
27887
28148
  {
27888
28149
  id: "successMessage",
27889
28150
  type: "text",
@@ -27894,26 +28155,6 @@ const eventRegistrationBlockDefinition = {
27894
28155
  defaultValue: "Thank you for registering! Check your email for confirmation details.",
27895
28156
  maxLength: 500
27896
28157
  },
27897
- {
27898
- id: "waitlistMessage",
27899
- type: "text",
27900
- label: "Waitlist message",
27901
- description: "Message shown after joining a whole-series waitlist",
27902
- required: false,
27903
- multiline: true,
27904
- defaultValue: "You've been added to the waitlist. We'll email you if a place becomes available.",
27905
- maxLength: 500
27906
- },
27907
- {
27908
- id: "membershipMessage",
27909
- type: "text",
27910
- label: "Membership registration message",
27911
- description: "Message shown when a whole-series place is covered by membership",
27912
- required: false,
27913
- multiline: true,
27914
- defaultValue: "Registered using your membership. Check your email for session details.",
27915
- maxLength: 500
27916
- },
27917
28158
  {
27918
28159
  id: "buttonText",
27919
28160
  type: "text",
@@ -27945,11 +28186,7 @@ const eventRegistrationBlockDefinition = {
27945
28186
  } },
27946
28187
  showVenue: { $bind: { from: "content.showVenue" } },
27947
28188
  showCapacity: { $bind: { from: "content.showCapacity" } },
27948
- showSessions: { $bind: { from: "content.showSessions" } },
27949
- showPrice: { $bind: { from: "content.showPrice" } },
27950
28189
  successMessage: { $bind: { from: "content.successMessage" } },
27951
- waitlistMessage: { $bind: { from: "content.waitlistMessage" } },
27952
- membershipMessage: { $bind: { from: "content.membershipMessage" } },
27953
28190
  buttonText: { $bind: {
27954
28191
  from: "content.buttonText",
27955
28192
  fallback: "Complete Registration"
@@ -28066,254 +28303,6 @@ const eventRegistrationBlockDefinition = {
28066
28303
  }
28067
28304
  };
28068
28305
  //#endregion
28069
- //#region ../blocks/src/system/runtime/nodes/course-registration.interactive.ts
28070
- const courseRegistrationHydrationSchemaShape = {
28071
- subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
28072
- courses: z.array(publicWholeSeriesOfferingSchema).nullable().optional(),
28073
- showSessions: z.boolean().optional(),
28074
- showPrice: z.boolean().optional(),
28075
- showCapacity: z.boolean().optional(),
28076
- showVenue: z.boolean().optional(),
28077
- successMessage: z.string().optional(),
28078
- waitlistMessage: z.string().optional(),
28079
- membershipMessage: z.string().optional(),
28080
- buttonVariant: registrationButtonVariantSchema.optional()
28081
- };
28082
- const courseRegistrationSourceSchema = z.object({
28083
- siteId: z.string().optional(),
28084
- apiBaseUrl: z.string().optional(),
28085
- portalToken: z.string().nullable().optional(),
28086
- ...courseRegistrationHydrationSchemaShape,
28087
- className: z.string().nullable().optional(),
28088
- buttonText: z.string().nullable().optional(),
28089
- stage: previewStageSchema.optional()
28090
- });
28091
- const courseRegistrationDisplaySchema = z.object({
28092
- kind: z.literal("course-registration"),
28093
- state: z.literal("shell"),
28094
- className: z.string().nullable(),
28095
- summaryButtonText: z.string()
28096
- });
28097
- const courseRegistrationHydrationSchema = z.object(courseRegistrationHydrationSchemaShape);
28098
- const courseRegistrationRenderSchema = z.object({
28099
- display: courseRegistrationDisplaySchema,
28100
- hydration: courseRegistrationHydrationSchema
28101
- });
28102
- z.object({
28103
- siteId: z.string().optional(),
28104
- apiBaseUrl: z.string().optional(),
28105
- portalToken: z.string().nullable().optional(),
28106
- stage: previewStageSchema.optional()
28107
- });
28108
- function buildCourseRegistrationDisplay(source) {
28109
- return {
28110
- kind: "course-registration",
28111
- state: "shell",
28112
- className: source.className ?? null,
28113
- summaryButtonText: source.buttonText?.trim() || "Sign up"
28114
- };
28115
- }
28116
- const courseRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
28117
- kind: "client-owned",
28118
- contracts: {
28119
- source: createZodCodec(courseRegistrationSourceSchema),
28120
- render: createZodCodec(courseRegistrationRenderSchema)
28121
- },
28122
- buildRender: (source) => ({
28123
- display: buildCourseRegistrationDisplay(source),
28124
- hydration: {
28125
- subject: source.subject ?? null,
28126
- courses: source.courses ?? null,
28127
- showSessions: source.showSessions,
28128
- showPrice: source.showPrice,
28129
- showCapacity: source.showCapacity,
28130
- showVenue: source.showVenue,
28131
- successMessage: source.successMessage,
28132
- waitlistMessage: source.waitlistMessage,
28133
- membershipMessage: source.membershipMessage,
28134
- buttonVariant: source.buttonVariant
28135
- }
28136
- })
28137
- });
28138
- const courseRegistrationBlockDefinition = {
28139
- manifest: createBlockManifest({
28140
- id: "block.course-registration",
28141
- version: "1.0.0",
28142
- title: "Course Registration",
28143
- titleSource: "heading",
28144
- description: "Enrollment form for multi-session courses",
28145
- category: "interactive",
28146
- contentSource: { kind: "inline" },
28147
- tags: [
28148
- "courses",
28149
- "enrollment",
28150
- "booking",
28151
- "form",
28152
- "signup",
28153
- "education"
28154
- ],
28155
- icon: "GraduationCap",
28156
- styleTokens: {
28157
- background: "surface",
28158
- typography: "body",
28159
- spacing: "md"
28160
- },
28161
- behaviours: {
28162
- supportsThemeSwitching: true,
28163
- inlineEditing: false,
28164
- animation: false,
28165
- paletteHidden: false
28166
- },
28167
- additionalFields: [
28168
- {
28169
- id: "heading",
28170
- type: "text",
28171
- label: "Heading",
28172
- description: "Main heading for the registration form",
28173
- required: false,
28174
- multiline: false,
28175
- defaultValue: "Sign up"
28176
- },
28177
- {
28178
- id: "description",
28179
- type: "richText",
28180
- label: "Description",
28181
- description: "Optional introductory text",
28182
- required: false
28183
- },
28184
- {
28185
- id: "showSessions",
28186
- type: "boolean",
28187
- label: "Show sessions",
28188
- description: "Display the list of course sessions",
28189
- required: false,
28190
- defaultValue: true,
28191
- ui: { intent: "display" }
28192
- },
28193
- {
28194
- id: "showPrice",
28195
- type: "boolean",
28196
- label: "Show price",
28197
- description: "Display the course price",
28198
- required: false,
28199
- defaultValue: true,
28200
- ui: { intent: "display" }
28201
- },
28202
- {
28203
- id: "showCapacity",
28204
- type: "boolean",
28205
- label: "Show available spots",
28206
- description: "Display remaining enrollment capacity",
28207
- required: false,
28208
- defaultValue: true,
28209
- ui: { intent: "display" }
28210
- },
28211
- {
28212
- id: "showVenue",
28213
- type: "boolean",
28214
- label: "Show venue",
28215
- description: "Display venue information",
28216
- required: false,
28217
- defaultValue: true,
28218
- ui: { intent: "display" }
28219
- },
28220
- {
28221
- id: "successMessage",
28222
- type: "text",
28223
- label: "Success message",
28224
- description: "Message shown after successful enrollment",
28225
- required: false,
28226
- multiline: true,
28227
- defaultValue: "You're enrolled! Check your email for confirmation and session details.",
28228
- maxLength: 500
28229
- },
28230
- {
28231
- id: "waitlistMessage",
28232
- type: "text",
28233
- label: "Waitlist message",
28234
- description: "Message when added to waitlist",
28235
- required: false,
28236
- multiline: true,
28237
- defaultValue: "You've been added to the waitlist. We'll email you a claim link if a spot opens up.",
28238
- maxLength: 500
28239
- },
28240
- {
28241
- id: "membershipMessage",
28242
- type: "text",
28243
- label: "Membership enrollment message",
28244
- description: "Message when enrolled using a membership",
28245
- required: false,
28246
- multiline: true,
28247
- defaultValue: "Enrolled using your membership! Check your email for session details.",
28248
- maxLength: 500
28249
- },
28250
- {
28251
- id: "buttonText",
28252
- type: "text",
28253
- label: "Submit button text",
28254
- description: "Text for the enrollment submit button",
28255
- required: false,
28256
- multiline: false,
28257
- defaultValue: "Sign up",
28258
- maxLength: 40
28259
- },
28260
- createButtonVariantField()
28261
- ],
28262
- layout: [styledSection({
28263
- baseClass: "",
28264
- spacing: "spacious",
28265
- children: sectionContainer([
28266
- text({ as: "h2" }, bind("content.heading"), when("content.heading")),
28267
- richText({ className: "rb-prose rb-max-w-none" }, bind("content.description"), when("content.description")),
28268
- courseRegistration(withApiBindings({
28269
- subject: { $bind: {
28270
- from: "$root.subject",
28271
- fallback: null
28272
- } },
28273
- portalToken: { $bind: {
28274
- from: "$root.portalToken",
28275
- fallback: null
28276
- } },
28277
- showSessions: { $bind: { from: "content.showSessions" } },
28278
- showPrice: { $bind: { from: "content.showPrice" } },
28279
- showCapacity: { $bind: { from: "content.showCapacity" } },
28280
- showVenue: { $bind: { from: "content.showVenue" } },
28281
- successMessage: { $bind: { from: "content.successMessage" } },
28282
- waitlistMessage: { $bind: { from: "content.waitlistMessage" } },
28283
- membershipMessage: { $bind: { from: "content.membershipMessage" } },
28284
- buttonText: { $bind: {
28285
- from: "content.buttonText",
28286
- fallback: "Sign up"
28287
- } },
28288
- buttonVariant: { $bind: {
28289
- from: "content.buttonVariant",
28290
- fallback: "primary"
28291
- } },
28292
- courses: { $bind: { from: "data.courses" } },
28293
- stage: { $bind: {
28294
- from: "$root.previewStage",
28295
- fallback: "published"
28296
- } }
28297
- }))
28298
- ], { gap: "lg" })
28299
- })]
28300
- }),
28301
- runtime: courseRegistrationBlockRuntime,
28302
- dataSchemas: { courses: publicWholeSeriesOfferingsArraySchema.optional() },
28303
- dataLoaders: { courses: {
28304
- endpoint: "listPublicWholeSeriesOfferings",
28305
- params: {
28306
- siteId: { $bind: { from: "$root.siteId" } },
28307
- limit: "50",
28308
- stage: { $bind: {
28309
- from: "$root.previewStage",
28310
- fallback: "published"
28311
- } }
28312
- },
28313
- mode: "server"
28314
- } }
28315
- };
28316
- //#endregion
28317
28306
  //#region ../blocks/src/system/blocks/event-details.ts
28318
28307
  /**
28319
28308
  * Event Details Block
@@ -28560,200 +28549,6 @@ const eventDetailsBlockDefinition = {
28560
28549
  mode: "server"
28561
28550
  } }
28562
28551
  };
28563
- const courseDetailsBlockDefinition = {
28564
- manifest: createBlockManifest({
28565
- id: "block.course-details",
28566
- version: "1.0.0",
28567
- title: "Course Details",
28568
- titleSource: "heading",
28569
- description: "Schedule, venue, price, and enrollment status for a course",
28570
- category: "content",
28571
- contentSource: { kind: "entries" },
28572
- tags: [
28573
- "courses",
28574
- "schedule",
28575
- "sessions",
28576
- "venue",
28577
- "pricing"
28578
- ],
28579
- icon: "GraduationCap",
28580
- styleTokens: {
28581
- background: "surface",
28582
- typography: "body",
28583
- spacing: "md"
28584
- },
28585
- behaviours: {
28586
- supportsThemeSwitching: true,
28587
- inlineEditing: false,
28588
- animation: false,
28589
- paletteHidden: false
28590
- },
28591
- additionalFields: [
28592
- {
28593
- id: "heading",
28594
- type: "text",
28595
- label: "Heading",
28596
- description: "Optional heading shown above course details",
28597
- required: false,
28598
- multiline: false,
28599
- defaultValue: "Course details"
28600
- },
28601
- {
28602
- id: "showTitle",
28603
- type: "boolean",
28604
- label: "Show course title",
28605
- required: false,
28606
- defaultValue: false,
28607
- ui: { intent: "display" }
28608
- },
28609
- {
28610
- id: "showDescription",
28611
- type: "boolean",
28612
- label: "Show course description",
28613
- description: "Render the course description from the bookings course record",
28614
- required: false,
28615
- defaultValue: false,
28616
- ui: { intent: "display" }
28617
- },
28618
- {
28619
- id: "showSessions",
28620
- type: "boolean",
28621
- label: "Show sessions",
28622
- required: false,
28623
- defaultValue: true,
28624
- ui: { intent: "display" }
28625
- },
28626
- {
28627
- id: "sessionsLimit",
28628
- type: "select",
28629
- label: "Sessions limit",
28630
- required: false,
28631
- multiple: false,
28632
- defaultValue: "10",
28633
- options: [
28634
- {
28635
- value: "3",
28636
- label: "3 sessions"
28637
- },
28638
- {
28639
- value: "5",
28640
- label: "5 sessions"
28641
- },
28642
- {
28643
- value: "10",
28644
- label: "10 sessions"
28645
- },
28646
- {
28647
- value: "all",
28648
- label: "All sessions"
28649
- }
28650
- ],
28651
- ui: { intent: "display" }
28652
- },
28653
- {
28654
- id: "showVenue",
28655
- type: "boolean",
28656
- label: "Show venue",
28657
- required: false,
28658
- defaultValue: true,
28659
- ui: { intent: "display" }
28660
- },
28661
- {
28662
- id: "showPrice",
28663
- type: "boolean",
28664
- label: "Show price",
28665
- required: false,
28666
- defaultValue: true,
28667
- ui: { intent: "display" }
28668
- },
28669
- {
28670
- id: "showCapacity",
28671
- type: "boolean",
28672
- label: "Show capacity",
28673
- required: false,
28674
- defaultValue: true,
28675
- ui: { intent: "display" }
28676
- },
28677
- {
28678
- id: "showEnrollmentStatus",
28679
- type: "boolean",
28680
- label: "Show enrollment status",
28681
- required: false,
28682
- defaultValue: true,
28683
- ui: { intent: "display" }
28684
- },
28685
- {
28686
- id: "showMembershipNote",
28687
- type: "boolean",
28688
- label: "Show membership note",
28689
- description: "Indicate when memberships can be used for free enrollment",
28690
- required: false,
28691
- defaultValue: true,
28692
- ui: { intent: "display" }
28693
- }
28694
- ],
28695
- layout: [styledSection({
28696
- baseClass: "",
28697
- spacing: "spacious",
28698
- children: sectionContainer([text({ as: "h2" }, bind("content.heading"), when("content.heading")), el("course-details", {
28699
- subject: { $bind: {
28700
- from: "$root.subject",
28701
- fallback: null
28702
- } },
28703
- courses: { $bind: { from: "data.courses" } },
28704
- showTitle: { $bind: {
28705
- from: "content.showTitle",
28706
- fallback: false
28707
- } },
28708
- showDescription: { $bind: {
28709
- from: "content.showDescription",
28710
- fallback: false
28711
- } },
28712
- showSessions: { $bind: {
28713
- from: "content.showSessions",
28714
- fallback: true
28715
- } },
28716
- sessionsLimit: { $bind: {
28717
- from: "content.sessionsLimit",
28718
- fallback: "10"
28719
- } },
28720
- showVenue: { $bind: {
28721
- from: "content.showVenue",
28722
- fallback: true
28723
- } },
28724
- showPrice: { $bind: {
28725
- from: "content.showPrice",
28726
- fallback: true
28727
- } },
28728
- showCapacity: { $bind: {
28729
- from: "content.showCapacity",
28730
- fallback: true
28731
- } },
28732
- showEnrollmentStatus: { $bind: {
28733
- from: "content.showEnrollmentStatus",
28734
- fallback: true
28735
- } },
28736
- showMembershipNote: { $bind: {
28737
- from: "content.showMembershipNote",
28738
- fallback: true
28739
- } }
28740
- })], { gap: "lg" })
28741
- })]
28742
- }),
28743
- dataSchemas: { courses: publicWholeSeriesOfferingsArraySchema.optional() },
28744
- dataLoaders: { courses: {
28745
- endpoint: "listPublicWholeSeriesOfferings",
28746
- params: {
28747
- siteId: { $bind: { from: "$root.siteId" } },
28748
- limit: "50",
28749
- stage: { $bind: {
28750
- from: "$root.previewStage",
28751
- fallback: "published"
28752
- } }
28753
- },
28754
- mode: "server"
28755
- } }
28756
- };
28757
28552
  const eventSpotlightBlockDefinition = {
28758
28553
  manifest: createBlockManifest({
28759
28554
  id: "block.event-spotlight",
@@ -30916,7 +30711,7 @@ const publicRouteCandidatesSchema = z.object({ routes: z.array(z.object({
30916
30711
  entityId: z.string(),
30917
30712
  path: z.string(),
30918
30713
  title: z.string(),
30919
- kind: z.enum(["page", "content"]),
30714
+ kind: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
30920
30715
  contentTypeKey: z.string().nullable().optional()
30921
30716
  })) });
30922
30717
  const groupOverrideFields = [
@@ -31193,7 +30988,7 @@ const offeringsPreviewManifest = createBlockManifest({
31193
30988
  fallback: "published"
31194
30989
  } },
31195
30990
  routeCandidates: { $bind: { from: "data.routeCandidates" } },
31196
- courses: { $bind: { from: "data.courses" } },
30991
+ wholeSeriesOfferings: { $bind: { from: "data.wholeSeriesOfferings" } },
31197
30992
  ...offeringsPreviewEventDataBindings
31198
30993
  })
31199
30994
  ], { gap: "lg" }),
@@ -31210,7 +31005,7 @@ const offeringsPreviewBlockDefinition = {
31210
31005
  dataSchemas: {
31211
31006
  ...offeringsPreviewEventDataSchemas,
31212
31007
  routeCandidates: publicRouteCandidatesSchema.optional(),
31213
- courses: publicWholeSeriesOfferingsArraySchema.optional()
31008
+ wholeSeriesOfferings: publicWholeSeriesOfferingsArraySchema.optional()
31214
31009
  },
31215
31010
  dataLoaders: {
31216
31011
  ...offeringsPreviewEventDataLoaders,
@@ -31219,7 +31014,7 @@ const offeringsPreviewBlockDefinition = {
31219
31014
  params: {},
31220
31015
  mode: "server"
31221
31016
  },
31222
- courses: {
31017
+ wholeSeriesOfferings: {
31223
31018
  endpoint: "listPublicWholeSeriesOfferings",
31224
31019
  params: {
31225
31020
  siteId: { $bind: { from: "$root.siteId" } },
@@ -36186,22 +35981,6 @@ const systemBlockDefinitions = [
36186
35981
  weight: "standard"
36187
35982
  })]
36188
35983
  })),
36189
- withDesignCapability("block.course-registration", courseRegistrationBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
36190
- flow: conversionFlow,
36191
- layoutProfiles: [layoutProfile({
36192
- variantKey: "default",
36193
- family: "form",
36194
- weight: "standard"
36195
- })]
36196
- })),
36197
- withDesignCapability("block.course-details", courseDetailsBlockDefinition, scheduleDetailsCapable(), defineBlockDesignMetadata({
36198
- flow: offeringsFlow,
36199
- layoutProfiles: [layoutProfile({
36200
- variantKey: "default",
36201
- family: "stack",
36202
- weight: "standard"
36203
- })]
36204
- })),
36205
35984
  withDesignCapability("block.event-spotlight", eventSpotlightBlockDefinition, eventSpotlightCapable(), defineBlockDesignMetadata({
36206
35985
  flow: offeringsFlow,
36207
35986
  layoutProfiles: [layoutProfile({
@@ -37776,6 +37555,68 @@ function collectText(node) {
37776
37555
  return (node.content ?? []).map(collectText).join("");
37777
37556
  }
37778
37557
  //#endregion
37558
+ //#region ../api/src/bookingPaymentTermSchemas.ts
37559
+ const bookingDepositRefundPolicySchema = z.enum(["refundable", "non_refundable"]);
37560
+ const bookingInstalmentPlanSchema = z.discriminatedUnion("kind", [
37561
+ z.object({
37562
+ kind: z.literal("deposit_plus_one_remainder"),
37563
+ depositAmountCents: z.number().int().nonnegative(),
37564
+ depositRefundability: bookingDepositRefundPolicySchema,
37565
+ remainderDueCount: z.number().int().positive(),
37566
+ intervalUnit: z.enum([
37567
+ "day",
37568
+ "week",
37569
+ "month"
37570
+ ])
37571
+ }),
37572
+ z.object({
37573
+ kind: z.literal("deposit_plus_scheduled_instalments"),
37574
+ depositAmountCents: z.number().int().nonnegative(),
37575
+ depositRefundability: bookingDepositRefundPolicySchema,
37576
+ instalmentCount: z.number().int().positive(),
37577
+ intervalCount: z.number().int().positive(),
37578
+ intervalUnit: z.enum([
37579
+ "day",
37580
+ "week",
37581
+ "month"
37582
+ ])
37583
+ }),
37584
+ z.object({
37585
+ kind: z.literal("equal_scheduled_instalments"),
37586
+ instalmentCount: z.number().int().positive(),
37587
+ intervalCount: z.number().int().positive(),
37588
+ intervalUnit: z.enum([
37589
+ "day",
37590
+ "week",
37591
+ "month"
37592
+ ])
37593
+ })
37594
+ ]);
37595
+ const bookingFlexibleBalanceDueDateRuleSchema = z.discriminatedUnion("kind", [z.object({
37596
+ kind: z.literal("relative_to_start_date"),
37597
+ daysBeforeStart: z.number().int().positive()
37598
+ }), z.object({
37599
+ kind: z.literal("fixed_calendar_date"),
37600
+ dueAt: z.string().datetime()
37601
+ })]);
37602
+ const bookingFlexibleBalanceConfigSchema = z.object({
37603
+ upfrontAmountCents: z.number().int().nonnegative(),
37604
+ dueDateRule: bookingFlexibleBalanceDueDateRuleSchema,
37605
+ depositRefundability: bookingDepositRefundPolicySchema
37606
+ });
37607
+ z.discriminatedUnion("kind", [
37608
+ z.object({ kind: z.literal("upfront") }),
37609
+ z.object({ kind: z.literal("deferred_manual") }),
37610
+ z.object({
37611
+ kind: z.literal("instalment_plan"),
37612
+ plan: bookingInstalmentPlanSchema
37613
+ }),
37614
+ z.object({
37615
+ kind: z.literal("flexible_balance"),
37616
+ config: bookingFlexibleBalanceConfigSchema
37617
+ })
37618
+ ]);
37619
+ //#endregion
37779
37620
  //#region ../api/src/navigationMenuValidation.ts
37780
37621
  function hasChildren(item) {
37781
37622
  return Array.isArray(item.children) && item.children.length > 0;