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