@riverbankcms/sdk 0.146.0 → 0.148.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 +28 -0
- package/dist/{PreviewEditorSidebar-kg2r2Fyi.mjs → PreviewEditorSidebar-DvEPG3Z2.mjs} +249 -172
- package/dist/{PreviewEditorUI-sWMLp5dT.mjs → PreviewEditorUI-D6eb6fkx.mjs} +68 -60
- package/dist/{PreviewQueryProvider-Cg51xq1w.mjs → PreviewQueryProvider-5znTyJuz.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-h2ti3Hch.mjs → SdkPreviewModeRuntime-DJ6utQ_R.mjs} +1180 -475
- package/dist/{SiteChromeCustomizeContext-DEACFH9m.mjs → SiteChromeCustomizeContext-CFJYh6vo.mjs} +199078 -193767
- package/dist/_dts/ai/src/contracts/proposals.d.ts +198 -33
- package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +18 -3
- package/dist/_dts/api/src/accessAdmin.d.ts +0 -4
- package/dist/_dts/api/src/accountApi.d.ts +6 -6
- package/dist/_dts/api/src/admin.d.ts +22 -22
- package/dist/_dts/api/src/aiPatch.d.ts +2 -2
- package/dist/_dts/api/src/aiPlayground.d.ts +1 -0
- package/dist/_dts/api/src/analytics.d.ts +2 -2
- package/dist/_dts/api/src/apiEndpointTypes.d.ts +2 -0
- package/dist/_dts/api/src/appointmentSetup.d.ts +2 -2
- package/dist/_dts/api/src/auth.d.ts +10 -10
- package/dist/_dts/api/src/availability.d.ts +6 -6
- package/dist/_dts/api/src/billing.d.ts +42 -15
- package/dist/_dts/api/src/billingEndpointDefinitions.d.ts +8 -0
- package/dist/_dts/api/src/billingEndpointTypes.d.ts +15 -6
- package/dist/_dts/api/src/blocks.d.ts +15 -14
- package/dist/_dts/api/src/blocksKeys.d.ts +2 -0
- package/dist/_dts/api/src/bookingConfig.d.ts +16 -2
- package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +4 -13
- package/dist/_dts/api/src/bookingOperations.d.ts +6 -48
- package/dist/_dts/api/src/bookingPeople.d.ts +92 -0
- package/dist/_dts/api/src/bookingPeopleEndpointDefinitions.d.ts +38 -0
- package/dist/_dts/api/src/bookingRecords.d.ts +12 -49
- package/dist/_dts/api/src/bookingSettingsSections.d.ts +1 -1
- package/dist/_dts/api/src/bookings.d.ts +8 -7
- package/dist/_dts/api/src/calendar.d.ts +9 -9
- package/dist/_dts/api/src/commercePortalEndpoints.d.ts +7 -6
- package/dist/_dts/api/src/common/envelope.d.ts +2 -2
- package/dist/_dts/api/src/content-editor.d.ts +2 -2
- package/dist/_dts/api/src/contentEntries.d.ts +17 -48
- package/dist/_dts/api/src/contentRuntime.d.ts +51 -37
- package/dist/_dts/api/src/contentTypes.d.ts +11 -11
- package/dist/_dts/api/src/contentVersionHistoryClient.d.ts +6 -6
- package/dist/_dts/api/src/documentLifecycle.d.ts +67 -0
- package/dist/_dts/api/src/domains.d.ts +16 -16
- package/dist/_dts/api/src/editLeaseEndpoints.d.ts +72 -0
- package/dist/_dts/api/src/emailSettings.d.ts +4 -4
- package/dist/_dts/api/src/endpoints.d.ts +725 -607
- package/dist/_dts/api/src/eventEmailTemplates.d.ts +2 -2
- package/dist/_dts/api/src/eventManagementContracts.d.ts +48 -8
- package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +1 -9
- package/dist/_dts/api/src/eventPageWords.d.ts +7 -12
- package/dist/_dts/api/src/footerSettings.d.ts +6 -6
- package/dist/_dts/api/src/index.d.ts +8 -6
- package/dist/_dts/api/src/indexCoreTypes.d.ts +2 -1
- package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
- package/dist/_dts/api/src/launchReadiness.d.ts +1 -6
- package/dist/_dts/api/src/mailingListIntegration.d.ts +6 -0
- package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +1 -1
- package/dist/_dts/api/src/navigation.d.ts +5 -5
- package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +15 -0
- package/dist/_dts/api/src/occurrenceScheduling.d.ts +19 -0
- package/dist/_dts/api/src/pageSurfaceEditorEndpoints.d.ts +55 -0
- package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +28 -7
- package/dist/_dts/api/src/pages.d.ts +7 -7
- package/dist/_dts/api/src/performance.d.ts +1 -1
- package/dist/_dts/api/src/public/index.d.ts +1 -1
- package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +50 -0
- package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +4 -0
- package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +7 -0
- package/dist/_dts/api/src/redirects.d.ts +3 -3
- package/dist/_dts/api/src/request.d.ts +10 -1
- package/dist/_dts/api/src/resources.d.ts +4 -4
- package/dist/_dts/api/src/routes.d.ts +8 -3
- package/dist/_dts/api/src/sdk-event-upsert.d.ts +15 -1
- package/dist/_dts/api/src/sdkBlockUpsertContracts.d.ts +21 -0
- package/dist/_dts/api/src/sdkContracts.d.ts +5 -28
- package/dist/_dts/api/src/sdkCourseBooking.d.ts +4 -4
- package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +1 -1
- package/dist/_dts/api/src/sdkEventOccurrenceRequestContracts.d.ts +43 -0
- package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +4 -2
- package/dist/_dts/api/src/sdkPullEventContracts.d.ts +8 -1
- package/dist/_dts/api/src/seo.d.ts +4 -4
- package/dist/_dts/api/src/services.d.ts +4 -4
- package/dist/_dts/api/src/siteLifecycleEndpoints.d.ts +61 -0
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +19 -25
- package/dist/_dts/api/src/siteMembers.d.ts +10 -10
- package/dist/_dts/api/src/siteOnboarding.d.ts +16 -14
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +7 -3
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +5 -12
- package/dist/_dts/api/src/siteRuntimeEntry.d.ts +31 -0
- package/dist/_dts/billing/src/checkout/platform.d.ts +77 -0
- package/dist/_dts/billing/src/components/index.d.ts +25 -40
- package/dist/_dts/billing/src/membership/index.d.ts +1 -3
- package/dist/_dts/billing/src/plans/entitlements.d.ts +80 -0
- package/dist/_dts/billing/src/plans/registry.d.ts +16 -16
- package/dist/_dts/billing/src/plans/standing.d.ts +9 -2
- package/dist/_dts/billing/src/plans/types.d.ts +5 -15
- package/dist/_dts/billing/src/site-arrangements.d.ts +2 -2
- package/dist/_dts/billing/src/subscriptions/standingEvidence.d.ts +2 -4
- package/dist/_dts/billing/src/subscriptions/store.d.ts +17 -11
- package/dist/_dts/block-form/src/backend/store-backend.d.ts +6 -7
- package/dist/_dts/block-form/src/backend/types.d.ts +7 -0
- package/dist/_dts/block-form/src/widgets/FieldFrame.d.ts +3 -1
- package/dist/_dts/blocks/src/PageRenderer.d.ts +3 -4
- package/dist/_dts/blocks/src/client/events.d.ts +3 -0
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +24 -4
- package/dist/_dts/blocks/src/index.d.ts +1 -1
- package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +18 -9
- package/dist/_dts/blocks/src/pageRendererContracts.d.ts +4 -0
- package/dist/_dts/blocks/src/portal/types.d.ts +0 -2
- package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +2 -1
- package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +3 -1
- package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +4 -4
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +6 -1
- package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +4 -1
- package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -2
- 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 +6 -0
- package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +18 -0
- package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/api/types/shop.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/components/booking/SuccessMessage.d.ts +4 -1
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +36 -6
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +18 -3
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +11 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/usePaymentVerification.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/hooks/usePolling.d.ts +7 -48
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.checkout-return-context.d.ts +7 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.completion.d.ts +11 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +13 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +28 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-choice.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-state.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.payment-confirmation.d.ts +13 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.reserved-fields.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.server.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +17 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-actions.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-handler.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-success.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/checkout.server.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/AttendeeDetailsStep.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizard.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SuccessStep.d.ts +7 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/sessionStorage.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +5 -5
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +18 -5
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +37 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.client.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +16 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCardPresentations.d.ts +13 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +5 -5
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.block-submission.d.ts +2 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.d.ts +1 -14
- package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.d.ts +12 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +13 -0
- package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/BookingMailingListNote.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/DemoBookingPortalAccess.d.ts +22 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/DemoPortalSignInLink.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/shared/mailingListSignupCopy.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/shared/types.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/shared/utils/demoBookingPassStorage.d.ts +10 -0
- package/dist/_dts/blocks/src/system/runtime/shared/utils/demoPortalMagicLink.d.ts +29 -0
- package/dist/_dts/blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.d.ts +3 -2
- package/dist/_dts/blocks/src/system/transforms/registry/core.d.ts +2 -0
- package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +1 -3
- package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +4 -0
- package/dist/_dts/content-editor/src/components/ContentFieldsForm.d.ts +2 -7
- package/dist/_dts/content-editor/src/controller/EditLeaseController.d.ts +39 -0
- package/dist/_dts/content-editor/src/controller/EditorWriteGate.d.ts +38 -0
- package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +25 -61
- package/dist/_dts/content-editor/src/controller/LinkedEntryLeaseBanner.d.ts +7 -0
- package/dist/_dts/content-editor/src/controller/LinkedEntryLeaseControllers.d.ts +14 -0
- package/dist/_dts/content-editor/src/controller/deriveEditorUnpublishedState.d.ts +6 -0
- package/dist/_dts/content-editor/src/controller/documentValueBaseline.d.ts +25 -0
- package/dist/_dts/content-editor/src/controller/editLeaseLossSignal.d.ts +6 -0
- package/dist/_dts/content-editor/src/controller/editLeaseNotice.d.ts +28 -0
- package/dist/_dts/content-editor/src/controller/editorClientId.d.ts +2 -0
- package/dist/_dts/content-editor/src/controller/editorEditability.d.ts +38 -0
- package/dist/_dts/content-editor/src/controller/editorLeaseParticipation.d.ts +34 -0
- package/dist/_dts/content-editor/src/controller/normalizedMetadataBaseline.d.ts +29 -0
- package/dist/_dts/content-editor/src/controller/pageSurfaceDocumentBaselines.d.ts +14 -0
- package/dist/_dts/content-editor/src/controller/pageSurfaceLifecycle.d.ts +11 -0
- package/dist/_dts/content-editor/src/controller/planDocumentBaselineRefresh.d.ts +19 -0
- package/dist/_dts/content-editor/src/controller/readDocumentLeaseBaselines.d.ts +19 -0
- package/dist/_dts/content-editor/src/controller/refreshDocumentLeaseBaseline.d.ts +12 -0
- package/dist/_dts/content-editor/src/controller/refreshLinkedEntry.d.ts +17 -0
- package/dist/_dts/content-editor/src/controller/replayRestoredEditorEffects.d.ts +2 -3
- package/dist/_dts/content-editor/src/controller/routeWrites.d.ts +26 -0
- package/dist/_dts/content-editor/src/controller/useAutosaveTriggers.d.ts +16 -17
- package/dist/_dts/content-editor/src/controller/useBlockedPublishPlan.d.ts +6 -2
- package/dist/_dts/content-editor/src/controller/useBlocksList.d.ts +3 -3
- package/dist/_dts/content-editor/src/controller/useEntryValueAutosaves.d.ts +21 -0
- package/dist/_dts/content-editor/src/controller/useInitialEditorUiStore.d.ts +24 -0
- package/dist/_dts/content-editor/src/controller/useServerBaselineReconciliation.d.ts +17 -0
- package/dist/_dts/content-editor/src/footerComposerPanelTypes.d.ts +1 -1
- package/dist/_dts/content-editor/src/hooks/applyBlockedPublishPlan.d.ts +5 -1
- package/dist/_dts/content-editor/src/hooks/blockDraftLifecycle.d.ts +8 -47
- package/dist/_dts/content-editor/src/hooks/editLeaseMachine.d.ts +120 -0
- package/dist/_dts/content-editor/src/hooks/publishability.d.ts +6 -10
- package/dist/_dts/content-editor/src/hooks/useAutosaveStatus.d.ts +3 -0
- package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +5 -15
- package/dist/_dts/content-editor/src/hooks/useDebouncedLatestSave.d.ts +7 -5
- package/dist/_dts/content-editor/src/hooks/useEditLease.d.ts +28 -0
- package/dist/_dts/content-editor/src/hooks/useEntryActions.d.ts +25 -39
- package/dist/_dts/content-editor/src/hooks/useEntryMutations.d.ts +17 -19
- package/dist/_dts/content-editor/src/hooks/useLinkedEntryAutosave.d.ts +5 -8
- package/dist/_dts/content-editor/src/hooks/useValueAutosave.d.ts +64 -0
- package/dist/_dts/content-editor/src/hooks/validateBlocksForPublish.d.ts +0 -7
- package/dist/_dts/content-editor/src/index.d.ts +26 -7
- package/dist/_dts/content-editor/src/linkedEntries/domain.d.ts +12 -0
- package/dist/_dts/content-editor/src/linkedEntries/owner.d.ts +9 -0
- package/dist/_dts/content-editor/src/liveDrafts/draftProjection.d.ts +66 -0
- package/dist/_dts/content-editor/src/liveDrafts/linkedSaveHandovers.d.ts +37 -0
- package/dist/_dts/content-editor/src/liveDrafts/remoteDraftOverlay.d.ts +113 -0
- package/dist/_dts/content-editor/src/liveDrafts/useLiveDrafts.d.ts +32 -0
- package/dist/_dts/content-editor/src/liveDrafts/useRetentionTicks.d.ts +7 -0
- package/dist/_dts/content-editor/src/primitives/shared/activePreviewField.d.ts +6 -0
- package/dist/_dts/content-editor/src/primitives/shared/storeBinding.d.ts +1 -0
- package/dist/_dts/content-editor/src/services/contentEntryServices.d.ts +96 -19
- package/dist/_dts/content-editor/src/services/editorApiClient.d.ts +13 -0
- package/dist/_dts/content-editor/src/services/index.d.ts +2 -0
- package/dist/_dts/content-editor/src/services/pageSurfaceEditorServices.d.ts +23 -0
- package/dist/_dts/content-editor/src/sync/flushValues.d.ts +13 -0
- package/dist/_dts/content-editor/src/sync/lifecycleFailure.d.ts +51 -0
- package/dist/_dts/content-editor/src/sync/runLifecycle.d.ts +64 -0
- package/dist/_dts/content-editor/src/sync/schedulerValues.d.ts +27 -0
- package/dist/_dts/content-editor/src/sync/sendPlanning.d.ts +104 -0
- package/dist/_dts/content-editor/src/sync/valueSync.d.ts +114 -0
- package/dist/_dts/content-editor/src/ui/blockCollection.d.ts +8 -0
- package/dist/_dts/content-editor/src/ui/documentLifecycle.d.ts +18 -0
- package/dist/_dts/content-editor/src/ui/editorLeaseUiState.d.ts +7 -0
- package/dist/_dts/content-editor/src/ui/editorRefresh.d.ts +82 -0
- package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +102 -127
- package/dist/_dts/content-editor/src/ui/editorTransactionState.d.ts +1 -1
- package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +126 -72
- package/dist/_dts/content-editor/src/ui/editorValueSnapshot.d.ts +18 -0
- package/dist/_dts/content-editor/src/ui/serverBlockAdmission.d.ts +26 -0
- package/dist/_dts/content-editor/src/ui/stores/autosaveStore.d.ts +16 -27
- package/dist/_dts/content-editor/src/ui/stores/blockVersionsStore.d.ts +24 -0
- package/dist/_dts/content-editor/src/ui/stores/linkedEntryLeaseStore.d.ts +54 -0
- package/dist/_dts/content-editor/src/ui/stores/linkedSaveHandoversStore.d.ts +11 -0
- package/dist/_dts/content-editor/src/ui/stores/remoteDraftsStore.d.ts +10 -0
- package/dist/_dts/content-editor/src/ui/stores/types.d.ts +63 -3
- package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +2 -2
- package/dist/_dts/content-editor/src/useFooterNavigationLayout.d.ts +1 -1
- package/dist/_dts/content-model/src/content-types/builtin-schemas.d.ts +4 -4
- package/dist/_dts/content-model/src/content-types/builtins.d.ts +4 -4
- package/dist/_dts/content-model/src/definitions/shared.d.ts +11 -2
- package/dist/_dts/content-model/src/entry-slots/index.d.ts +1 -0
- package/dist/_dts/content-model/src/entry-slots/serializeAllowedBlocks.d.ts +2 -0
- package/dist/_dts/content-model/src/metadataConfig.d.ts +10 -38
- package/dist/_dts/content-model/src/templates/defaults.d.ts +0 -1
- package/dist/_dts/content-model/src/types.d.ts +0 -1
- package/dist/_dts/core/src/block-content-identity.d.ts +49 -1
- package/dist/_dts/core/src/branded.d.ts +12 -0
- package/dist/_dts/core/src/currency-format.d.ts +8 -2
- package/dist/_dts/core/src/demo-lifecycle-status.d.ts +2 -2
- package/dist/_dts/core/src/demo-warm-pool-target.d.ts +8 -0
- package/dist/_dts/core/src/edit-lease.d.ts +55 -0
- package/dist/_dts/core/src/editor-state.d.ts +38 -13
- package/dist/_dts/core/src/editor-value-sync.d.ts +79 -0
- package/dist/_dts/core/src/html-entities.d.ts +6 -0
- package/dist/_dts/core/src/index.d.ts +5 -1
- package/dist/_dts/core/src/mailing-list-runtime.d.ts +15 -0
- package/dist/_dts/core/src/mailing-list-setup.d.ts +2 -0
- package/dist/_dts/core/src/mailing-list-submission.d.ts +6 -0
- package/dist/_dts/core/src/navigation-portal-labels.d.ts +9 -0
- package/dist/_dts/core/src/participants.d.ts +0 -38
- package/dist/_dts/core/src/uuid.d.ts +7 -5
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +261 -175
- package/dist/_dts/editor/src/EditorProvider.d.ts +5 -0
- package/dist/_dts/editor/src/chrome/EditorChrome.d.ts +14 -0
- package/dist/_dts/editor/src/chrome/EditorStatusBar.d.ts +1 -0
- package/dist/_dts/editor/src/chrome/statusBarPresentation.d.ts +0 -1
- package/dist/_dts/editor/src/index.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +10 -9
- package/dist/_dts/editor-blocks/src/BlockForm.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockCardFrame.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockSettingsModal.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/block-editor/actionPresentation.d.ts +1 -0
- package/dist/_dts/editor-blocks/src/block-editor/applyExtendedFieldDefaults.d.ts +3 -4
- package/dist/_dts/editor-blocks/src/block-editor/blockDraftBaselineSeed.d.ts +4 -8
- package/dist/_dts/editor-blocks/src/block-editor/editorBlockItem.d.ts +23 -0
- package/dist/_dts/editor-blocks/src/block-editor/generatedIconApplyCoordination.d.ts +2 -7
- package/dist/_dts/editor-blocks/src/block-editor/hooks/applyBlockStructureChange.d.ts +4 -0
- package/dist/_dts/editor-blocks/src/block-editor/hooks/buildInsertBlockHistoryCommand.d.ts +14 -5
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockBaselineSync.d.ts +21 -19
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockCreation.d.ts +2 -10
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +8 -16
- package/dist/_dts/editor-blocks/src/block-editor/owner.d.ts +6 -16
- package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +37 -9
- package/dist/_dts/editor-blocks/src/index.d.ts +2 -1
- package/dist/_dts/editor-blocks/src/widgets/entry-picker/loaders.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/widgets/link/loaders.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/widgets/reference/loaders.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +3 -2
- package/dist/_dts/media-core/src/fileStorage.d.ts +4 -0
- package/dist/_dts/media-editor/src/context.d.ts +1 -1
- package/dist/_dts/media-editor/src/createMediaEditorProvider.d.ts +1 -2
- package/dist/_dts/media-editor/src/provider.d.ts +3 -2
- package/dist/_dts/media-react/src/hooks/internal/classification.d.ts +1 -1
- package/dist/_dts/media-react/src/hooks/useApiMediaUploader.d.ts +3 -1
- package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +7 -1
- package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +8 -3
- package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +10 -6
- package/dist/_dts/preview-next/src/client/blocks/linkedEntryRenderOverlay.d.ts +22 -2
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/entryFieldRebinding.d.ts +13 -0
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/index.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +11 -1
- package/dist/_dts/preview-next/src/client/blocks/renderPrecedence.d.ts +17 -0
- package/dist/_dts/preview-next/src/client/blocks/useLinkedSaveHandoverRetention.d.ts +20 -0
- package/dist/_dts/preview-next/src/client/index.d.ts +1 -1
- package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewAccessBanners.d.ts +7 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +24 -14
- package/dist/_dts/preview-next/src/client/preview/PreviewLeaseEditingMode.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +9 -2
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/preview/previewCustomizeAutosave.d.ts +5 -0
- package/dist/_dts/preview-next/src/client/preview/previewCustomizeWorkflowState.d.ts +3 -4
- package/dist/_dts/preview-next/src/client/preview/sdkConfig.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/preview/usePreviewCustomizeWorkflowState.d.ts +4 -0
- package/dist/_dts/realtime/src/client.d.ts +3 -0
- package/dist/_dts/realtime/src/draftChannel.d.ts +91 -0
- package/dist/_dts/realtime/src/drafts.d.ts +210 -0
- package/dist/_dts/realtime/src/index.d.ts +3 -0
- package/dist/_dts/realtime/src/leaseChangeSubscriptions.d.ts +8 -0
- package/dist/_dts/realtime/src/types.d.ts +113 -0
- package/dist/_dts/realtime/src/useDraftChannel.d.ts +34 -0
- package/dist/_dts/realtime/src/useSiteRealtimeReload.d.ts +27 -0
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +6 -55
- package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -0
- package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +2 -0
- package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +1 -1
- package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +4 -2
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/surfaces/src/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/buttons/effects/types.d.ts +1 -1
- package/dist/_dts/theme-core/src/footer/effectiveNavLinkStyle.d.ts +13 -0
- package/dist/_dts/theme-core/src/footer/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/header/effectiveNavLinkStyle.d.ts +17 -0
- package/dist/_dts/theme-core/src/header/generateHeaderLogoStyles.d.ts +15 -0
- package/dist/_dts/theme-core/src/header/generateHeaderNavLinkStyles.d.ts +4 -0
- package/dist/_dts/theme-core/src/header/index.d.ts +3 -0
- package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +1 -1
- package/dist/_dts/theme-core/src/header/openingForegroundProjection.d.ts +7 -0
- package/dist/_dts/theme-core/src/header/rootPaint.d.ts +4 -0
- package/dist/_dts/theme-core/src/navigation/effectPolicy.d.ts +38 -0
- package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +4 -0
- package/dist/_dts/theme-core/src/navigation/types.d.ts +4 -0
- package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
- package/dist/_dts/theme-core/src/surfaces/foregroundContract.d.ts +7 -0
- package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +29 -22
- package/dist/_dts/theme-core/src/surfaces/foregroundRoles.d.ts +10 -2
- package/dist/_dts/theme-core/src/surfaces/resolveSurfaceForeground.d.ts +9 -0
- package/dist/_dts/theme-core/src/utils/cssDeclarations.d.ts +2 -0
- package/dist/_dts/ui/src/badge.d.ts +2 -1
- package/dist/_dts/ui/src/button.d.ts +1 -1
- package/dist/_dts/ui/src/combobox-keys.d.ts +23 -0
- package/dist/_dts/ui/src/combobox-rows.d.ts +34 -0
- package/dist/_dts/ui/src/combobox.d.ts +26 -1
- package/dist/_dts/ui/src/date-picker.d.ts +5 -8
- package/dist/_dts/ui/src/editor-item-card.d.ts +1 -0
- package/dist/_dts/ui/src/field-trigger.d.ts +39 -0
- package/dist/_dts/ui/src/fieldControl.d.ts +27 -0
- package/dist/_dts/ui/src/index.d.ts +4 -1
- package/dist/_dts/ui/src/native-select.d.ts +8 -0
- package/dist/_dts/ui/src/popover.d.ts +7 -1
- package/dist/_dts/ui/src/segmented-control.d.ts +4 -0
- package/dist/_dts/ui/src/surface.d.ts +1 -1
- package/dist/client/{BookingConsentAgreement-BQKL045f.mjs → BookingMailingListNote-CzRt2dF_.mjs} +110 -97
- package/dist/client/{CheckboxChoice--W2n6yKs.mjs → CheckboxChoice-B33MqoUo.mjs} +1 -1
- package/dist/client/DemoBookingPortalAccess-mxqwap3f.mjs +344 -0
- package/dist/client/{EventCombined.client-BdRjVbhH.mjs → EventCombined.client-CDb11igO.mjs} +7 -7
- package/dist/client/{EventListing.client-DBxC6xOU.mjs → EventListing.client-EgYhzKPa.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-mHEJKrTs.mjs → LeafletStaticMap-gtmtaA2b.mjs} +1 -1
- package/dist/client/{scrollToBlock-BNgaEUpo.mjs → TerminalPanel-DvNUP5ot.mjs} +77 -77
- package/dist/client/{ThemedButton-CE5KYT6z.mjs → ThemedButton-C7CeUJjW.mjs} +2 -2
- package/dist/client/{accordion-BEQNSptH.mjs → accordion-kjvt49rA.mjs} +1 -1
- package/dist/client/{bookingForm-AMr-s5vw.mjs → bookingForm-pbRZordh.mjs} +411 -141
- package/dist/client/bookings.mjs +966 -396
- package/dist/client/{carousel-Bbt_QgJy.mjs → carousel-f4Zbmicv.mjs} +2 -2
- package/dist/client/{carousel.client-jahpU9Vz.mjs → carousel.client-A2lG-9od.mjs} +1 -1
- package/dist/client/{cart-CnWi30zJ.mjs → cart-DO20An50.mjs} +3 -3
- package/dist/client/{checkout-f3nkWgd4.mjs → checkout-Du5amDR_.mjs} +3 -3
- package/dist/client/{checkoutUrls-CW3-78uu.mjs → checkoutUrls-CXhko2Rv.mjs} +1 -1
- package/dist/client/client.mjs +3837 -2202
- package/dist/client/{colorStyles-CuJBiS-1.mjs → colorStyles-j5U9v5JA.mjs} +5 -1
- package/dist/client/{context-Bc8T6pCe.mjs → context-eW97E945.mjs} +4 -3
- package/dist/client/{dates-DUsCEzLb.mjs → dates-jPCirRea.mjs} +56 -11
- package/dist/client/{eventCalendar-CKwgXui5.mjs → eventCalendar-C2M-iE4j.mjs} +10 -10
- package/dist/client/{eventCombined-CBAOSTGR.mjs → eventCombined-W6ns3LHg.mjs} +4 -4
- package/dist/client/{eventDetails-Dh-_WiBD.mjs → eventDetails-CR-GT0f0.mjs} +4 -4
- package/dist/client/{eventListing-CA3frIH5.mjs → eventListing-BK8AfYZz.mjs} +4 -4
- package/dist/client/{eventRegistration-BHtsgdcg.mjs → eventRegistration-BJSd4KUu.mjs} +461 -266
- package/dist/client/{form-C2h3YAcg.mjs → form-BvpfbQaT.mjs} +5 -5
- package/dist/client/{headerSection-lwMuMTH9.mjs → headerSection-I5sUQ8x-.mjs} +3 -3
- package/dist/client/hooks.mjs +909 -163
- package/dist/client/{locationMap-DJ2bLODV.mjs → locationMap-BLvwf9_f.mjs} +4 -4
- package/dist/client/{FieldValidationMessage-AYanWFb-.mjs → mailingListSignupCopy-DZSHZrm6.mjs} +14 -1
- package/dist/client/{media-BtJ37tzS.mjs → media-Cl38iOMI.mjs} +11 -4
- package/dist/client/{newsletterForm-8Pu5K32g.mjs → newsletterForm-DrQ2weE8.mjs} +6 -6
- package/dist/client/{pricing-HHx3IgBz.mjs → pricing-BES87mrR.mjs} +1 -1
- package/dist/client/{productDetail-C_1odnAf.mjs → productDetail-Url9jcc5.mjs} +3 -3
- package/dist/client/{productList-CtCv-Nmx.mjs → productList-DE7ngEZJ.mjs} +3 -3
- package/dist/client/{propsDecoder-Dcgsncxb.mjs → propsDecoder-D1OtGXDV.mjs} +140 -22
- package/dist/client/rendering/client.mjs +2366 -997
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +4607 -2884
- package/dist/client/{routeIslandApiConfig-CWLP7wu3.mjs → routeIslandApiConfig-BG9Y-SHg.mjs} +1 -1
- package/dist/client/{shop-DQXrQ8kJ.mjs → shop-CJkuySJ3.mjs} +126 -79
- package/dist/client/{shop-commerce-B88zmWWo.mjs → shop-commerce-4rKj5n9h.mjs} +26 -14
- package/dist/client/{shop-commerce-store-DtSfkKuX.mjs → shop-commerce-store-Bxm75Pg6.mjs} +1 -1
- package/dist/client/{shopShared-cuaONpkJ.mjs → shopShared-DpoQDWfz.mjs} +5 -5
- package/dist/client/{useEventFilters-Bukew6Gb.mjs → useEventFilters-D8HliSqR.mjs} +33 -18
- package/dist/preview-next/before-render.mjs +314 -133
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/editor-base.css +53 -2
- package/dist/preview-next/editor-chrome.css +7 -4
- package/dist/preview-next/keepAlive.mjs +314 -133
- package/dist/preview-next/middleware.mjs +314 -133
- package/dist/{previewAuthStore-h5IgbSp4.mjs → previewAuthStore-BXXF3hhW.mjs} +316 -133
- package/dist/{sdk-runtime-DTc1uIXn.mjs → sdk-runtime-C2a05WjL.mjs} +2 -2
- package/dist/{separator-BpHS1KZK.mjs → separator-CuNhBAhS.mjs} +1 -1
- package/dist/server/components.mjs +6888 -6157
- package/dist/server/config-validation.mjs +931 -199
- package/dist/server/config.mjs +931 -199
- package/dist/server/data.mjs +929 -198
- package/dist/server/index.mjs +317 -134
- package/dist/server/navigation.mjs +13 -2
- package/dist/server/next.mjs +5003 -4340
- package/dist/server/page-converter.mjs +160 -78
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +6421 -5687
- package/dist/server/rendering.mjs +7683 -6933
- package/dist/server/routing.mjs +1035 -338
- package/dist/server/server.mjs +946 -256
- package/dist/server/theme-bridge.mjs +66 -17
- package/dist/server/theme.mjs +5 -1
- package/dist/styles/index.css +32 -4
- package/package.json +1 -1
- package/dist/_dts/billing/src/plans/display.d.ts +0 -15
- package/dist/_dts/content-editor/src/controller/buildBlockPublishedBaselines.d.ts +0 -4
- package/dist/_dts/content-editor/src/controller/buildPublishSuccessTransition.d.ts +0 -16
- package/dist/_dts/content-editor/src/controller/driver.d.ts +0 -14
- package/dist/_dts/content-editor/src/controller/seedDraftBaselinesFromBlocks.d.ts +0 -7
- package/dist/_dts/content-editor/src/controller/useEntrySyncHelpers.d.ts +0 -29
- package/dist/_dts/content-editor/src/hooks/autosaveScopePlanning.d.ts +0 -26
- package/dist/_dts/content-editor/src/hooks/useSimpleAutosave.d.ts +0 -64
- package/dist/_dts/content-editor/src/hooks/useStoreAutosave.d.ts +0 -48
- package/dist/_dts/content-editor/src/types.d.ts +0 -44
- package/dist/_dts/core/src/participant-identity.d.ts +0 -135
- package/dist/client/DiscountCodeDisclosure-CsOtjFY7.mjs +0 -137
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { a as
|
|
3
|
-
import { C as resolveDiscountContext, D as WIZARD_STEPS, E as toRegistrationRequestSubject, M as resolveEventRegistrationScopedEvents, O as getStepNumber,
|
|
4
|
-
import { a as canJoinEventWaitlistOnAnyMode, c as formatTicketTypeRemaining, f as getRemainingPlaces, h as selectMostOpenCapacitySource, i as canJoinEventWaitlist, m as selectEventCapacitySource, o as formatEventRemainingPlaces, p as isEventFull, r as formatEventPriceDisplay, s as formatRemainingPlaces, u as getEventAvailability } from "./pricing-
|
|
5
|
-
import { n as useBlockApi, r as BlockApiError, t as BlockApiProvider } from "./context-
|
|
2
|
+
import { a as buildBookingPaymentSelectionViewModel, i as usePolling, n as BookingConsentAgreement, o as resolveBookingPaymentDueNowCents, r as StepIndicator$1, s as formatPrice, t as BookingMailingListNote } from "./BookingMailingListNote-CzRt2dF_.mjs";
|
|
3
|
+
import { C as resolveDiscountContext, Cn as formatCurrencyAmount, D as WIZARD_STEPS, E as toRegistrationRequestSubject, M as resolveEventRegistrationScopedEvents, O as getStepNumber, Ot as getRegistrationSuccessCopy, S as findPreSelectedEvent, Sn as publicEventPricingType, T as resolveRegistrationTarget, Wt as assertNever, _ as buildEventRegistrationDisplayFromScopedEvents, b as toWholeSeriesRegistrationEvents, bn as publicEventPricingOptions, en as resolveBookingSignupOffer, fn as toBookingTimeZone, ft as groupPublicEventsByRun, in as formatBookingDateTime, k as getWizardStepsForContext, mn as toScheduledBookingDateTime, nn as formatBookingDate, on as formatBookingTime, t as defineIslandPropsDecoder, v as getRegistrationStartAt, vn as publicEventPricingCurrency, w as resolveEventRequiresPayment, wn as parseCurrencyCode, x as findEventByOccurrenceId, xn as publicEventPricingStrategy, y as toRegistrationEvents } from "./propsDecoder-D1OtGXDV.mjs";
|
|
4
|
+
import { a as canJoinEventWaitlistOnAnyMode, c as formatTicketTypeRemaining, f as getRemainingPlaces, h as selectMostOpenCapacitySource, i as canJoinEventWaitlist, m as selectEventCapacitySource, o as formatEventRemainingPlaces, p as isEventFull, r as formatEventPriceDisplay, s as formatRemainingPlaces, u as getEventAvailability } from "./pricing-BES87mrR.mjs";
|
|
5
|
+
import { n as useBlockApi, r as BlockApiError, t as BlockApiProvider } from "./context-eW97E945.mjs";
|
|
6
6
|
import { n as isSpamProtectionEnabled, r as AltchaWidget, t as getChallengeUrl } from "./src-B833rYRr.mjs";
|
|
7
|
-
import { a as
|
|
8
|
-
import { t as
|
|
9
|
-
import { i as SpinnerNode, t as ThemedButton } from "./ThemedButton-
|
|
7
|
+
import { a as requestDemoPortalMagicLink, f as storeDemoBookingPass, i as buildPortalCallbackUrl, o as DiscountCodeDisclosure, r as CUSTOMER_PORTAL_PATH, t as BookingConfirmation } from "./DemoBookingPortalAccess-mxqwap3f.mjs";
|
|
8
|
+
import { a as useDiscountCodeUi, i as CheckIcon, n as StateIcon, r as scrollToBlock, t as TerminalPanel } from "./TerminalPanel-DvNUP5ot.mjs";
|
|
9
|
+
import { i as SpinnerNode, n as ThemedButtonLink, t as ThemedButton } from "./ThemedButton-C7CeUJjW.mjs";
|
|
10
10
|
import { t as FeedbackMessage } from "./FeedbackMessage-CtLvvS_d.mjs";
|
|
11
|
-
import {
|
|
12
|
-
import { t as buildCheckoutReturnUrls } from "./checkoutUrls-
|
|
13
|
-
import { t as CheckboxChoice } from "./CheckboxChoice
|
|
11
|
+
import { i as getFieldValidationControlProps, r as FieldValidationMessage } from "./mailingListSignupCopy-DZSHZrm6.mjs";
|
|
12
|
+
import { t as buildCheckoutReturnUrls } from "./checkoutUrls-CXhko2Rv.mjs";
|
|
13
|
+
import { t as CheckboxChoice } from "./CheckboxChoice-B33MqoUo.mjs";
|
|
14
14
|
import { t as createBodyThemePortalRoot } from "./themePortalRoot-AGs4cE7t.mjs";
|
|
15
15
|
import { n as consumeSearchParams } from "./urlParams-D71VXFGx.mjs";
|
|
16
16
|
import { t as CrossIcon } from "./CrossIcon-Dn1KRKW5.mjs";
|
|
17
17
|
import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
|
|
18
|
-
import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-
|
|
18
|
+
import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-BG9Y-SHg.mjs";
|
|
19
19
|
import { t as createLucideIcon } from "./createLucideIcon-PaLVMov4.mjs";
|
|
20
20
|
import { t as ModalShell } from "./ModalShell-CqkBvBIC.mjs";
|
|
21
21
|
import React, { useCallback, useEffect, useId, useLayoutEffect, useMemo, useReducer, useRef, useState, useSyncExternalStore } from "react";
|
|
@@ -34,6 +34,16 @@ function toNonNegativeCents(value) {
|
|
|
34
34
|
return unsafeAsNonNegativeCents(Math.max(0, Math.trunc(value)));
|
|
35
35
|
}
|
|
36
36
|
//#endregion
|
|
37
|
+
//#region ../core/src/uuid.ts
|
|
38
|
+
function generateUuidV4(cryptoSource = globalThis.crypto) {
|
|
39
|
+
if (typeof cryptoSource.randomUUID === "function") return cryptoSource.randomUUID();
|
|
40
|
+
const bytes = cryptoSource.getRandomValues(/* @__PURE__ */ new Uint8Array(16));
|
|
41
|
+
bytes[6] = (bytes[6] ?? 0) & 15 | 64;
|
|
42
|
+
bytes[8] = (bytes[8] ?? 0) & 63 | 128;
|
|
43
|
+
const hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0"));
|
|
44
|
+
return `${hex.slice(0, 4).join("")}-${hex.slice(4, 6).join("")}-${hex.slice(6, 8).join("")}-${hex.slice(8, 10).join("")}-${hex.slice(10).join("")}`;
|
|
45
|
+
}
|
|
46
|
+
//#endregion
|
|
37
47
|
//#region ../blocks/src/system/runtime/shared/components/ClockIcon.tsx
|
|
38
48
|
function ClockIcon({ className, strokeWidth = 2 }) {
|
|
39
49
|
return /* @__PURE__ */ jsx("svg", {
|
|
@@ -800,7 +810,7 @@ function recoverRegistrationError(action, handlers) {
|
|
|
800
810
|
switch (action) {
|
|
801
811
|
case "none": return;
|
|
802
812
|
case "portal":
|
|
803
|
-
window.location.assign(
|
|
813
|
+
window.location.assign(CUSTOMER_PORTAL_PATH);
|
|
804
814
|
return;
|
|
805
815
|
case "event":
|
|
806
816
|
window.location.assign(window.location.pathname);
|
|
@@ -833,7 +843,8 @@ function createInitialRegistrationFormData() {
|
|
|
833
843
|
email: "",
|
|
834
844
|
phone: "",
|
|
835
845
|
notes: "",
|
|
836
|
-
consentAccepted: false
|
|
846
|
+
consentAccepted: false,
|
|
847
|
+
mailingListOptIn: false
|
|
837
848
|
};
|
|
838
849
|
}
|
|
839
850
|
function validateFormData(formData, requiresConsent = false) {
|
|
@@ -1413,6 +1424,10 @@ const eventRegistrationErrors = {
|
|
|
1413
1424
|
message: "The payment options for this event have changed. Please check the latest options before continuing.",
|
|
1414
1425
|
action: "payment-options"
|
|
1415
1426
|
},
|
|
1427
|
+
verificationFailed: {
|
|
1428
|
+
message: "We couldn’t confirm this request came from a person. Please refresh the page and try again.",
|
|
1429
|
+
action: "none"
|
|
1430
|
+
},
|
|
1416
1431
|
idempotencyConflict: {
|
|
1417
1432
|
message: "You’ve already started booking this event. Please finish in the other tab if it’s still open, or check your booking status before starting again.",
|
|
1418
1433
|
action: "portal"
|
|
@@ -1600,11 +1615,50 @@ function useResolvedWaitlistClaim(deps, credential) {
|
|
|
1600
1615
|
* ```
|
|
1601
1616
|
*/
|
|
1602
1617
|
const paymentVerificationDeps = { useBlockApi };
|
|
1618
|
+
function resolvePaymentPollingTarget(config) {
|
|
1619
|
+
const reference = config.reference;
|
|
1620
|
+
return reference.scope === "occurrence" ? {
|
|
1621
|
+
key: `occurrence:${reference.attendeeId}`,
|
|
1622
|
+
reference
|
|
1623
|
+
} : {
|
|
1624
|
+
key: `wholeSeries:${reference.registrationId}`,
|
|
1625
|
+
reference
|
|
1626
|
+
};
|
|
1627
|
+
}
|
|
1628
|
+
function createPaymentPollingConfig(api, settings) {
|
|
1629
|
+
if (settings === null) return null;
|
|
1630
|
+
const target = resolvePaymentPollingTarget(settings);
|
|
1631
|
+
return {
|
|
1632
|
+
restartKey: target.key,
|
|
1633
|
+
pollFn: () => api.getEventRegistrationStatus(target.reference),
|
|
1634
|
+
isComplete: (result) => result.paymentStatus === "completed" || result.paymentStatus === "not_required",
|
|
1635
|
+
isFailed: (result) => result.paymentStatus === "failed" || result.paymentStatus === "refunded",
|
|
1636
|
+
maxAttempts: settings.maxAttempts,
|
|
1637
|
+
interval: settings.pollInterval
|
|
1638
|
+
};
|
|
1639
|
+
}
|
|
1640
|
+
function getPaymentVerificationError(polling, paymentStatus) {
|
|
1641
|
+
if (polling.status === "timeout") return "Could not verify payment. If you were charged, please contact support.";
|
|
1642
|
+
if (polling.status === "failed" && paymentStatus !== null) return paymentStatus === "refunded" ? "Payment was refunded. Please contact support." : "Payment was declined. Please try again.";
|
|
1643
|
+
return polling.error?.message ?? null;
|
|
1644
|
+
}
|
|
1645
|
+
function mapPaymentVerificationResult(polling) {
|
|
1646
|
+
const paymentStatus = polling.result?.paymentStatus ?? null;
|
|
1647
|
+
return {
|
|
1648
|
+
status: polling.status,
|
|
1649
|
+
paymentStatus,
|
|
1650
|
+
attendeeStatus: polling.result?.attendeeStatus ?? null,
|
|
1651
|
+
waitlistPosition: polling.result?.waitlistPosition ?? null,
|
|
1652
|
+
error: getPaymentVerificationError(polling, paymentStatus),
|
|
1653
|
+
retry: polling.retry
|
|
1654
|
+
};
|
|
1655
|
+
}
|
|
1603
1656
|
/**
|
|
1604
1657
|
* Hook for polling payment status after Stripe redirects.
|
|
1605
1658
|
*
|
|
1606
1659
|
* Pass config to start polling, or null to stop/idle.
|
|
1607
|
-
* The hook handles cleanup on unmount and
|
|
1660
|
+
* The hook handles cleanup on unmount and starts a new cycle when the status
|
|
1661
|
+
* reference changes.
|
|
1608
1662
|
*
|
|
1609
1663
|
* @param config - Configuration for polling, or null to stop
|
|
1610
1664
|
* @returns Verification result with status, data, and retry function
|
|
@@ -1613,30 +1667,7 @@ function usePaymentVerification(config) {
|
|
|
1613
1667
|
return usePaymentVerificationWithDeps(config, paymentVerificationDeps);
|
|
1614
1668
|
}
|
|
1615
1669
|
function usePaymentVerificationWithDeps(config, deps) {
|
|
1616
|
-
|
|
1617
|
-
const polling = usePolling(useMemo(() => {
|
|
1618
|
-
if (!config) return null;
|
|
1619
|
-
return {
|
|
1620
|
-
pollFn: () => api.getEventRegistrationStatus(config.reference),
|
|
1621
|
-
isComplete: (result) => result.paymentStatus === "completed" || result.paymentStatus === "not_required",
|
|
1622
|
-
isFailed: (result) => result.paymentStatus === "failed" || result.paymentStatus === "refunded",
|
|
1623
|
-
maxAttempts: config.maxAttempts,
|
|
1624
|
-
interval: config.pollInterval
|
|
1625
|
-
};
|
|
1626
|
-
}, [api, config]));
|
|
1627
|
-
const paymentStatus = polling.result?.paymentStatus ?? null;
|
|
1628
|
-
let errorMessage = null;
|
|
1629
|
-
if (polling.status === "timeout") errorMessage = "Could not verify payment. If you were charged, please contact support.";
|
|
1630
|
-
else if (polling.status === "failed" && paymentStatus) errorMessage = paymentStatus === "refunded" ? "Payment was refunded. Please contact support." : "Payment was declined. Please try again.";
|
|
1631
|
-
else if (polling.error) errorMessage = polling.error.message;
|
|
1632
|
-
return {
|
|
1633
|
-
status: polling.status,
|
|
1634
|
-
paymentStatus,
|
|
1635
|
-
attendeeStatus: polling.result?.attendeeStatus ?? null,
|
|
1636
|
-
waitlistPosition: polling.result?.waitlistPosition ?? null,
|
|
1637
|
-
error: errorMessage,
|
|
1638
|
-
retry: polling.retry
|
|
1639
|
-
};
|
|
1670
|
+
return mapPaymentVerificationResult(usePolling(createPaymentPollingConfig(deps.useBlockApi(), config)));
|
|
1640
1671
|
}
|
|
1641
1672
|
//#endregion
|
|
1642
1673
|
//#region ../blocks/src/system/runtime/nodes/event-registration/constants.ts
|
|
@@ -1906,7 +1937,10 @@ async function handleCheckoutReturn(options, deps, returnContextRef) {
|
|
|
1906
1937
|
}
|
|
1907
1938
|
const { checkoutAttemptId } = command;
|
|
1908
1939
|
const pending = deps.getPendingRegistration(siteId, checkoutAttemptId);
|
|
1909
|
-
returnContextRef.current = {
|
|
1940
|
+
returnContextRef.current = {
|
|
1941
|
+
checkoutAttemptId,
|
|
1942
|
+
mailingListSignupNote: pending?.mailingListSignupNote
|
|
1943
|
+
};
|
|
1910
1944
|
if (pending) restorePendingPresentation(options, pending);
|
|
1911
1945
|
options.setStep("verifying-payment");
|
|
1912
1946
|
try {
|
|
@@ -1927,7 +1961,10 @@ function completeVerifiedRegistration(options, deps, returnContext) {
|
|
|
1927
1961
|
const siteId = options.api.config.siteId;
|
|
1928
1962
|
const checkoutAttemptId = returnContext?.checkoutAttemptId;
|
|
1929
1963
|
if (siteId && checkoutAttemptId) deps.clearPendingRegistration(siteId, checkoutAttemptId);
|
|
1930
|
-
options.setRegistrationResult({
|
|
1964
|
+
options.setRegistrationResult({
|
|
1965
|
+
status: "confirmed",
|
|
1966
|
+
mailingListSignupNote: returnContext?.mailingListSignupNote
|
|
1967
|
+
});
|
|
1931
1968
|
options.setStep("success");
|
|
1932
1969
|
}
|
|
1933
1970
|
function useEventRegistrationStripeReturnWithDeps(options, deps) {
|
|
@@ -2000,20 +2037,12 @@ function registrationErrorPresentation(error) {
|
|
|
2000
2037
|
}
|
|
2001
2038
|
//#endregion
|
|
2002
2039
|
//#region ../blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.ts
|
|
2003
|
-
function
|
|
2004
|
-
|
|
2005
|
-
getRandomValues: (bytes) => globalThis.crypto.getRandomValues(bytes)
|
|
2006
|
-
}) {
|
|
2007
|
-
if (cryptoSource.randomUUID) return cryptoSource.randomUUID();
|
|
2008
|
-
const bytes = cryptoSource.getRandomValues(/* @__PURE__ */ new Uint8Array(16));
|
|
2009
|
-
bytes[6] = (bytes[6] ?? 0) & 15 | 64;
|
|
2010
|
-
bytes[8] = (bytes[8] ?? 0) & 63 | 128;
|
|
2011
|
-
const hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0"));
|
|
2012
|
-
return `${hex.slice(0, 4).join("")}-${hex.slice(4, 6).join("")}-${hex.slice(6, 8).join("")}-${hex.slice(8, 10).join("")}-${hex.slice(10).join("")}`;
|
|
2040
|
+
function wantsMailingListSignup(options) {
|
|
2041
|
+
return options.mailingListSignup !== null && options.formData.mailingListOptIn === true;
|
|
2013
2042
|
}
|
|
2014
2043
|
const eventRegistrationSubmitDeps = {
|
|
2015
2044
|
savePendingRegistration,
|
|
2016
|
-
createClientCommandId
|
|
2045
|
+
createClientCommandId: generateUuidV4
|
|
2017
2046
|
};
|
|
2018
2047
|
function useEventRegistrationSubmit(options) {
|
|
2019
2048
|
return useEventRegistrationSubmitWithDeps(options, eventRegistrationSubmitDeps);
|
|
@@ -2093,11 +2122,13 @@ function useEventRegistrationSubmitWithDeps(options, deps) {
|
|
|
2093
2122
|
};
|
|
2094
2123
|
}
|
|
2095
2124
|
async function completeRegistrationSubmission(options, deps, prepared, result, submitOptions) {
|
|
2125
|
+
if (result.demoBookingPass) storeDemoBookingPass(options.formData.email, result.demoBookingPass);
|
|
2096
2126
|
switch (result.kind) {
|
|
2097
2127
|
case "paymentStatusRequired":
|
|
2098
2128
|
options.setPaymentStatusRecovery({
|
|
2099
2129
|
kind: "ready",
|
|
2100
|
-
subject: result.subject
|
|
2130
|
+
subject: result.subject,
|
|
2131
|
+
mailingListSignupNote: result.mailingListSignupNote
|
|
2101
2132
|
});
|
|
2102
2133
|
options.setStep("payment-status");
|
|
2103
2134
|
return {
|
|
@@ -2106,14 +2137,16 @@ async function completeRegistrationSubmission(options, deps, prepared, result, s
|
|
|
2106
2137
|
};
|
|
2107
2138
|
case "checkoutRequired":
|
|
2108
2139
|
options.setPendingRegistrationReference(result.reference);
|
|
2109
|
-
savePendingCheckout(options, deps, prepared, result.submissionId, result.reference);
|
|
2140
|
+
savePendingCheckout(options, deps, prepared, result.submissionId, result.reference, result.mailingListSignupNote);
|
|
2110
2141
|
options.setStep("redirecting");
|
|
2111
2142
|
return redirectToCheckout(result.checkoutUrl, submitOptions);
|
|
2112
2143
|
case "waitlisted":
|
|
2113
2144
|
options.setRegistrationResult({
|
|
2114
2145
|
status: "waitlist",
|
|
2115
2146
|
title: "Added to waitlist",
|
|
2116
|
-
message: result.waitlist.message
|
|
2147
|
+
message: result.waitlist.message,
|
|
2148
|
+
emailFollowupMessage: result.waitlist.emailFollowupMessage,
|
|
2149
|
+
mailingListSignupNote: result.mailingListSignupNote
|
|
2117
2150
|
});
|
|
2118
2151
|
break;
|
|
2119
2152
|
case "bookingComplete":
|
|
@@ -2121,7 +2154,8 @@ async function completeRegistrationSubmission(options, deps, prepared, result, s
|
|
|
2121
2154
|
options.setPendingRegistrationReference(result.reference);
|
|
2122
2155
|
options.setRegistrationResult({
|
|
2123
2156
|
status: "confirmed",
|
|
2124
|
-
message: result.summary.paymentMethod === "pass" ? result.summary.message : void 0
|
|
2157
|
+
message: result.summary.paymentMethod === "pass" ? result.summary.message : void 0,
|
|
2158
|
+
mailingListSignupNote: result.mailingListSignupNote
|
|
2125
2159
|
});
|
|
2126
2160
|
break;
|
|
2127
2161
|
}
|
|
@@ -2180,7 +2214,7 @@ function resolveSelectionSnapshot(method, passId, membershipId, bundleProductId,
|
|
|
2180
2214
|
if (method === "free") return { method };
|
|
2181
2215
|
throw new Error("Choose an available payment option.");
|
|
2182
2216
|
}
|
|
2183
|
-
function savePendingCheckout(options, deps, prepared, checkoutAttemptId, reference) {
|
|
2217
|
+
function savePendingCheckout(options, deps, prepared, checkoutAttemptId, reference, mailingListSignupNote) {
|
|
2184
2218
|
const siteId = options.api.config.siteId;
|
|
2185
2219
|
if (!siteId) return;
|
|
2186
2220
|
deps.savePendingRegistration(siteId, checkoutAttemptId, {
|
|
@@ -2189,7 +2223,8 @@ function savePendingCheckout(options, deps, prepared, checkoutAttemptId, referen
|
|
|
2189
2223
|
ticketSelections: prepared.ticketSelections,
|
|
2190
2224
|
selectedEventId: options.registrationTarget?.selectedEventId ?? null,
|
|
2191
2225
|
selectedAttendanceMode: options.selectedAttendanceMode,
|
|
2192
|
-
paymentSelection: prepared.selectionSnapshot
|
|
2226
|
+
paymentSelection: prepared.selectionSnapshot,
|
|
2227
|
+
mailingListSignupNote
|
|
2193
2228
|
});
|
|
2194
2229
|
}
|
|
2195
2230
|
function redirectToCheckout(checkoutUrl, submitOptions) {
|
|
@@ -2203,7 +2238,7 @@ function redirectToCheckout(checkoutUrl, submitOptions) {
|
|
|
2203
2238
|
};
|
|
2204
2239
|
}
|
|
2205
2240
|
function registrationRequestIntentKey(request) {
|
|
2206
|
-
const { registrationCommandId: _command, altchaSolution: _proof, checkout, ...intent } = request;
|
|
2241
|
+
const { registrationCommandId: _command, altchaSolution: _proof, mailingListOptIn: _marketingConsent, checkout, ...intent } = request;
|
|
2207
2242
|
return JSON.stringify({
|
|
2208
2243
|
...intent,
|
|
2209
2244
|
checkout: checkout ? {
|
|
@@ -2228,6 +2263,7 @@ function buildRegistrationRequest(options, prepared, method, passId, membershipI
|
|
|
2228
2263
|
phone: options.formData.phone.trim() || void 0,
|
|
2229
2264
|
notes: options.formData.notes.trim() || void 0,
|
|
2230
2265
|
consentAccepted: options.formData.consentAccepted,
|
|
2266
|
+
mailingListOptIn: wantsMailingListSignup(options),
|
|
2231
2267
|
altchaSolution: options.altchaSolution,
|
|
2232
2268
|
paymentMethod: method,
|
|
2233
2269
|
customerPassId: method === "pass" ? passId : void 0,
|
|
@@ -2462,13 +2498,17 @@ function isCheckableRecovery(state) {
|
|
|
2462
2498
|
function assistanceRequired(recovery) {
|
|
2463
2499
|
return {
|
|
2464
2500
|
kind: "assistanceRequired",
|
|
2465
|
-
subject: recovery.subject
|
|
2501
|
+
subject: recovery.subject,
|
|
2502
|
+
mailingListSignupNote: recovery.mailingListSignupNote
|
|
2466
2503
|
};
|
|
2467
2504
|
}
|
|
2468
2505
|
function applyStatusOutcome(outcome, recovery, setters, setRecovery) {
|
|
2469
2506
|
if (outcome.kind === "resolved") {
|
|
2470
2507
|
setters.setPendingRegistrationReference(outcome.reference);
|
|
2471
|
-
setters.setRegistrationResult({
|
|
2508
|
+
setters.setRegistrationResult({
|
|
2509
|
+
status: "confirmed",
|
|
2510
|
+
mailingListSignupNote: recovery.mailingListSignupNote
|
|
2511
|
+
});
|
|
2472
2512
|
setRecovery(null);
|
|
2473
2513
|
setters.setStep("success");
|
|
2474
2514
|
return;
|
|
@@ -2597,6 +2637,7 @@ function useEventRegistrationWizardWithDeps(options, deps) {
|
|
|
2597
2637
|
const paymentSelection = flowState.paymentSelection;
|
|
2598
2638
|
const [selectedEvent, setSelectedEvent] = useState(preSelectedEvent ?? null);
|
|
2599
2639
|
const [formData, setFormData] = useState(createInitialRegistrationFormData);
|
|
2640
|
+
const mailingListSignup = resolveBookingSignupOffer(options.mailingList, options.siteName);
|
|
2600
2641
|
const [errors, setErrors] = useState({});
|
|
2601
2642
|
const [guests, setGuests] = useState([]);
|
|
2602
2643
|
const [guestErrors, setGuestErrors] = useState({});
|
|
@@ -3043,6 +3084,7 @@ function useEventRegistrationWizardWithDeps(options, deps) {
|
|
|
3043
3084
|
ticketSelections,
|
|
3044
3085
|
selectedSlidingAmount,
|
|
3045
3086
|
formData,
|
|
3087
|
+
mailingListSignup,
|
|
3046
3088
|
altchaSolution,
|
|
3047
3089
|
requireGuestDetails,
|
|
3048
3090
|
guests,
|
|
@@ -3139,6 +3181,7 @@ function useEventRegistrationWizardWithDeps(options, deps) {
|
|
|
3139
3181
|
hasValidTicketSelection,
|
|
3140
3182
|
eventRequiresPayment,
|
|
3141
3183
|
formData,
|
|
3184
|
+
mailingListSignup,
|
|
3142
3185
|
setFormData,
|
|
3143
3186
|
errors,
|
|
3144
3187
|
guests,
|
|
@@ -3228,6 +3271,118 @@ function useEventCheckoutHandoffRestoreWithDeps(active, deps) {
|
|
|
3228
3271
|
}, [active, deps]);
|
|
3229
3272
|
}
|
|
3230
3273
|
//#endregion
|
|
3274
|
+
//#region ../blocks/src/system/runtime/nodes/event-registration/EventRegistrationBookingLayer.tsx
|
|
3275
|
+
function BookingEntry(props) {
|
|
3276
|
+
const base = props.variant === "teaser" ? "er-booking-teaser" : "er-booking-bar";
|
|
3277
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("div", {
|
|
3278
|
+
className: `${base}__info`,
|
|
3279
|
+
children: [
|
|
3280
|
+
/* @__PURE__ */ jsx("span", {
|
|
3281
|
+
className: `${base}__title`,
|
|
3282
|
+
children: "Book this event"
|
|
3283
|
+
}),
|
|
3284
|
+
props.summary && /* @__PURE__ */ jsx("span", {
|
|
3285
|
+
className: `${base}__meta`,
|
|
3286
|
+
children: props.summary
|
|
3287
|
+
}),
|
|
3288
|
+
props.variant === "teaser" && props.ticketCurrency && props.ticketTypes.length > 0 ? /* @__PURE__ */ jsx("div", {
|
|
3289
|
+
className: "er-booking-teaser__tickets",
|
|
3290
|
+
children: props.ticketTypes.map((ticketType) => /* @__PURE__ */ jsxs("div", {
|
|
3291
|
+
className: "er-booking-teaser__ticket",
|
|
3292
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
3293
|
+
className: "er-booking-teaser__ticket-name",
|
|
3294
|
+
children: ticketType.name
|
|
3295
|
+
}), /* @__PURE__ */ jsx("strong", { children: props.formatTicketPrice(ticketType) })]
|
|
3296
|
+
}, ticketType.pricingOptionId))
|
|
3297
|
+
}) : null
|
|
3298
|
+
]
|
|
3299
|
+
}), /* @__PURE__ */ jsx(ThemedButton, {
|
|
3300
|
+
type: "button",
|
|
3301
|
+
variant: props.buttonVariant,
|
|
3302
|
+
size: "md",
|
|
3303
|
+
extraClassName: `${base}__cta`,
|
|
3304
|
+
label: "Book now",
|
|
3305
|
+
onClick: props.onOpen
|
|
3306
|
+
})] });
|
|
3307
|
+
}
|
|
3308
|
+
function EventRegistrationBookingLayer(props) {
|
|
3309
|
+
const entryProps = {
|
|
3310
|
+
summary: [props.priceLabel, props.availabilityLabel].filter(Boolean).join(" · "),
|
|
3311
|
+
ticketTypes: props.ticketTypes,
|
|
3312
|
+
ticketCurrency: props.ticketCurrency,
|
|
3313
|
+
buttonVariant: props.buttonVariant,
|
|
3314
|
+
formatTicketPrice: props.formatTicketPrice,
|
|
3315
|
+
onOpen: props.onOpen
|
|
3316
|
+
};
|
|
3317
|
+
const floatingBar = !props.overlayOpen && props.isWizardStep ? /* @__PURE__ */ jsx("div", {
|
|
3318
|
+
className: "er-booking-bar",
|
|
3319
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
3320
|
+
className: "er-booking-bar__inner",
|
|
3321
|
+
children: /* @__PURE__ */ jsx(BookingEntry, {
|
|
3322
|
+
...entryProps,
|
|
3323
|
+
variant: "bar"
|
|
3324
|
+
})
|
|
3325
|
+
})
|
|
3326
|
+
}) : null;
|
|
3327
|
+
const floatingLayer = props.portalRoot ? createPortal(/* @__PURE__ */ jsx("div", {
|
|
3328
|
+
className: props.registrationRootClassName,
|
|
3329
|
+
"data-block": "event-registration",
|
|
3330
|
+
children: floatingBar
|
|
3331
|
+
}), props.portalRoot) : floatingBar;
|
|
3332
|
+
const overlayLayer = props.overlayOpen ? /* @__PURE__ */ jsx(ModalShell, {
|
|
3333
|
+
title: "Book this event",
|
|
3334
|
+
titleId: "event-registration-booking-title",
|
|
3335
|
+
onClose: props.onClose,
|
|
3336
|
+
portal: props.portalRoot != null,
|
|
3337
|
+
portalRoot: props.portalRoot,
|
|
3338
|
+
portalWrapperClassName: props.registrationRootClassName,
|
|
3339
|
+
portalWrapperProps: { "data-block": "event-registration" },
|
|
3340
|
+
overlayClassName: "er-booking-overlay",
|
|
3341
|
+
modalClassName: "er-booking-overlay__panel",
|
|
3342
|
+
renderHeader: ({ closeButtonRef, onClose, title, titleId }) => /* @__PURE__ */ jsxs("div", {
|
|
3343
|
+
className: "er-booking-overlay__header",
|
|
3344
|
+
children: [/* @__PURE__ */ jsx("h2", {
|
|
3345
|
+
className: "er-booking-overlay__title",
|
|
3346
|
+
id: titleId,
|
|
3347
|
+
children: title
|
|
3348
|
+
}), /* @__PURE__ */ jsx("button", {
|
|
3349
|
+
ref: closeButtonRef,
|
|
3350
|
+
type: "button",
|
|
3351
|
+
className: "er-booking-overlay__close",
|
|
3352
|
+
onClick: onClose,
|
|
3353
|
+
"aria-label": "Close booking",
|
|
3354
|
+
children: "×"
|
|
3355
|
+
})]
|
|
3356
|
+
}),
|
|
3357
|
+
children: props.overlaySurface
|
|
3358
|
+
}) : null;
|
|
3359
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3360
|
+
props.isWizardStep && /* @__PURE__ */ jsx("div", {
|
|
3361
|
+
className: "er-booking-teaser",
|
|
3362
|
+
children: /* @__PURE__ */ jsx(BookingEntry, {
|
|
3363
|
+
...entryProps,
|
|
3364
|
+
variant: "teaser"
|
|
3365
|
+
})
|
|
3366
|
+
}),
|
|
3367
|
+
floatingLayer,
|
|
3368
|
+
overlayLayer
|
|
3369
|
+
] });
|
|
3370
|
+
}
|
|
3371
|
+
//#endregion
|
|
3372
|
+
//#region ../blocks/src/system/runtime/shared/components/DemoPortalSignInLink.tsx
|
|
3373
|
+
function DemoPortalSignInLink(props) {
|
|
3374
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
3375
|
+
/* @__PURE__ */ jsx("h3", { children: "Your sign-in link" }),
|
|
3376
|
+
/* @__PURE__ */ jsx("p", { children: "In the demo we don’t send emails, so here’s the link we’d have sent you." }),
|
|
3377
|
+
/* @__PURE__ */ jsx(ThemedButtonLink, {
|
|
3378
|
+
variant: "default",
|
|
3379
|
+
size: "md",
|
|
3380
|
+
label: "Sign in to the portal",
|
|
3381
|
+
href: props.url
|
|
3382
|
+
})
|
|
3383
|
+
] });
|
|
3384
|
+
}
|
|
3385
|
+
//#endregion
|
|
3231
3386
|
//#region ../blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.ts
|
|
3232
3387
|
const initialMagicLinkSubmissionState = Object.freeze({ tag: "idle" });
|
|
3233
3388
|
function magicLinkSubmissionReducer(state, action) {
|
|
@@ -3238,6 +3393,14 @@ function magicLinkSubmissionReducer(state, action) {
|
|
|
3238
3393
|
case "submit-succeeded":
|
|
3239
3394
|
if (state.tag !== "submitting") return state;
|
|
3240
3395
|
return { tag: "success" };
|
|
3396
|
+
case "submit-demo-link": return state.tag === "submitting" ? {
|
|
3397
|
+
tag: "demo_link",
|
|
3398
|
+
url: action.url
|
|
3399
|
+
} : state;
|
|
3400
|
+
case "submit-demo-refused": return state.tag === "submitting" ? {
|
|
3401
|
+
tag: "demo_refused",
|
|
3402
|
+
message: action.message
|
|
3403
|
+
} : state;
|
|
3241
3404
|
case "submit-failed":
|
|
3242
3405
|
if (state.tag !== "submitting") return state;
|
|
3243
3406
|
return {
|
|
@@ -3256,110 +3419,168 @@ function getMagicLinkError(state) {
|
|
|
3256
3419
|
}
|
|
3257
3420
|
//#endregion
|
|
3258
3421
|
//#region ../blocks/src/system/runtime/nodes/shared/MagicLinkForm.tsx
|
|
3259
|
-
function
|
|
3260
|
-
return props.themed ? /* @__PURE__ */ jsx(ThemedButton, {
|
|
3261
|
-
type: props.type,
|
|
3262
|
-
variant: props.variant,
|
|
3263
|
-
size: "md",
|
|
3264
|
-
label: props.label,
|
|
3265
|
-
disabled: props.disabled,
|
|
3266
|
-
onClick: props.onClick
|
|
3267
|
-
}) : /* @__PURE__ */ jsx("button", {
|
|
3268
|
-
type: props.type,
|
|
3269
|
-
className: props.className,
|
|
3270
|
-
disabled: props.disabled,
|
|
3271
|
-
onClick: props.onClick,
|
|
3272
|
-
children: props.label
|
|
3273
|
-
});
|
|
3274
|
-
}
|
|
3275
|
-
/**
|
|
3276
|
-
* Reusable magic link login form.
|
|
3277
|
-
* Used by Customer Portal and Event Registration blocks.
|
|
3278
|
-
*/
|
|
3279
|
-
function MagicLinkForm({ initialEmail = "", title, subtitle, buttonText = "Send login link", successMessage = "Check your email for a login link to sign in.", onSuccess, classPrefix = "er", compact = false }) {
|
|
3422
|
+
function MagicLinkForm(props) {
|
|
3280
3423
|
const api = useBlockApi();
|
|
3281
|
-
const [email, setEmail] = useState(initialEmail);
|
|
3282
|
-
const [
|
|
3283
|
-
const loading = isMagicLinkSubmitting(
|
|
3284
|
-
const
|
|
3285
|
-
|
|
3286
|
-
|
|
3287
|
-
|
|
3288
|
-
|
|
3289
|
-
|
|
3290
|
-
|
|
3291
|
-
|
|
3292
|
-
|
|
3293
|
-
email: normalizedEmail,
|
|
3294
|
-
redirectUrl: `${window.location.origin}/api/portal/callback?redirect_to=${encodeURIComponent(redirectTo)}`
|
|
3295
|
-
});
|
|
3296
|
-
dispatchSubmission({ type: "submit-succeeded" });
|
|
3297
|
-
onSuccess?.();
|
|
3298
|
-
} catch (err) {
|
|
3299
|
-
console.error("Magic link error:", err);
|
|
3300
|
-
dispatchSubmission({
|
|
3301
|
-
type: "submit-failed",
|
|
3302
|
-
message: getMagicLinkErrorMessage(err)
|
|
3303
|
-
});
|
|
3304
|
-
}
|
|
3305
|
-
};
|
|
3306
|
-
const handleReset = () => {
|
|
3307
|
-
setEmail("");
|
|
3308
|
-
dispatchSubmission({ type: "reset" });
|
|
3424
|
+
const [email, setEmail] = useState(props.initialEmail ?? "");
|
|
3425
|
+
const [state, dispatch] = useReducer(magicLinkSubmissionReducer, initialMagicLinkSubmissionState);
|
|
3426
|
+
const loading = isMagicLinkSubmitting(state);
|
|
3427
|
+
const handleSubmit = (event) => {
|
|
3428
|
+
submitMagicLink({
|
|
3429
|
+
event,
|
|
3430
|
+
email,
|
|
3431
|
+
loading,
|
|
3432
|
+
api,
|
|
3433
|
+
dispatch,
|
|
3434
|
+
onSuccess: props.onSuccess
|
|
3435
|
+
});
|
|
3309
3436
|
};
|
|
3310
|
-
if (
|
|
3311
|
-
|
|
3312
|
-
|
|
3313
|
-
|
|
3314
|
-
|
|
3315
|
-
|
|
3316
|
-
|
|
3317
|
-
type: "
|
|
3318
|
-
|
|
3319
|
-
|
|
3320
|
-
|
|
3321
|
-
|
|
3322
|
-
|
|
3437
|
+
if (state.tag === "success" || state.tag === "demo_link") return /* @__PURE__ */ jsx(MagicLinkSuccess, {
|
|
3438
|
+
state,
|
|
3439
|
+
classPrefix: props.classPrefix ?? "er",
|
|
3440
|
+
compact: props.compact ?? false,
|
|
3441
|
+
successMessage: props.successMessage ?? "Check your email for a login link to sign in.",
|
|
3442
|
+
onReset: () => {
|
|
3443
|
+
setEmail("");
|
|
3444
|
+
dispatch({ type: "reset" });
|
|
3445
|
+
}
|
|
3446
|
+
});
|
|
3447
|
+
return /* @__PURE__ */ jsx(MagicLinkFormView, {
|
|
3448
|
+
classPrefix: props.classPrefix ?? "er",
|
|
3449
|
+
compact: props.compact ?? false,
|
|
3450
|
+
email,
|
|
3451
|
+
error: getMagicLinkError(state),
|
|
3452
|
+
loading,
|
|
3453
|
+
title: props.title,
|
|
3454
|
+
subtitle: props.subtitle,
|
|
3455
|
+
buttonText: props.buttonText ?? "Send login link",
|
|
3456
|
+
state,
|
|
3457
|
+
onEmailChange: setEmail,
|
|
3458
|
+
onSubmit: handleSubmit
|
|
3323
3459
|
});
|
|
3460
|
+
}
|
|
3461
|
+
function MagicLinkFormView(props) {
|
|
3462
|
+
const classPrefix = props.classPrefix;
|
|
3324
3463
|
return /* @__PURE__ */ jsxs("form", {
|
|
3325
|
-
onSubmit:
|
|
3464
|
+
onSubmit: props.onSubmit,
|
|
3326
3465
|
className: `${classPrefix}-magic-link-form`,
|
|
3327
3466
|
children: [
|
|
3328
|
-
title
|
|
3467
|
+
props.title ? /* @__PURE__ */ jsx("h3", {
|
|
3329
3468
|
className: `${classPrefix}-magic-link-title`,
|
|
3330
|
-
children: title
|
|
3331
|
-
}),
|
|
3332
|
-
subtitle
|
|
3469
|
+
children: props.title
|
|
3470
|
+
}) : null,
|
|
3471
|
+
props.subtitle ? /* @__PURE__ */ jsx("p", {
|
|
3333
3472
|
className: `${classPrefix}-portal-auth-text`,
|
|
3334
|
-
children: subtitle
|
|
3335
|
-
}),
|
|
3473
|
+
children: props.subtitle
|
|
3474
|
+
}) : null,
|
|
3336
3475
|
/* @__PURE__ */ jsx("input", {
|
|
3337
3476
|
type: "email",
|
|
3338
3477
|
className: classPrefix === "cp" ? "cp-input" : `${classPrefix}-form__input`,
|
|
3339
3478
|
placeholder: "your@email.com",
|
|
3340
|
-
value: email,
|
|
3341
|
-
onChange: (
|
|
3342
|
-
autoFocus: !compact,
|
|
3479
|
+
value: props.email,
|
|
3480
|
+
onChange: (event) => props.onEmailChange(event.target.value),
|
|
3481
|
+
autoFocus: !props.compact,
|
|
3343
3482
|
required: true,
|
|
3344
|
-
disabled: loading
|
|
3483
|
+
disabled: props.loading
|
|
3345
3484
|
}),
|
|
3346
|
-
|
|
3347
|
-
|
|
3348
|
-
|
|
3485
|
+
/* @__PURE__ */ jsx(MagicLinkFormFeedback, {
|
|
3486
|
+
classPrefix,
|
|
3487
|
+
error: props.error,
|
|
3488
|
+
state: props.state
|
|
3349
3489
|
}),
|
|
3350
3490
|
/* @__PURE__ */ jsx(MagicLinkButton, {
|
|
3351
3491
|
themed: classPrefix === "cp",
|
|
3352
3492
|
type: "submit",
|
|
3353
3493
|
variant: "primary",
|
|
3354
3494
|
className: `${classPrefix}-modal-btn`,
|
|
3355
|
-
label: loading ? "Sending..." : buttonText,
|
|
3356
|
-
disabled: !email.trim() || loading
|
|
3495
|
+
label: props.loading ? "Sending..." : props.buttonText,
|
|
3496
|
+
disabled: !props.email.trim() || props.loading
|
|
3357
3497
|
})
|
|
3358
3498
|
]
|
|
3359
3499
|
});
|
|
3360
3500
|
}
|
|
3501
|
+
function MagicLinkFormFeedback(props) {
|
|
3502
|
+
if (!props.error && props.state.tag !== "demo_refused") return null;
|
|
3503
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [props.error ? /* @__PURE__ */ jsx("p", {
|
|
3504
|
+
className: `${props.classPrefix}-portal-auth-text ${props.classPrefix}-portal-auth-text--error`,
|
|
3505
|
+
children: props.error
|
|
3506
|
+
}) : null, props.state.tag === "demo_refused" ? /* @__PURE__ */ jsx("p", {
|
|
3507
|
+
role: "alert",
|
|
3508
|
+
className: `${props.classPrefix}-portal-auth-text ${props.classPrefix}-portal-auth-text--error`,
|
|
3509
|
+
children: props.state.message
|
|
3510
|
+
}) : null] });
|
|
3511
|
+
}
|
|
3512
|
+
function MagicLinkSuccess(props) {
|
|
3513
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
3514
|
+
className: `${props.classPrefix}-magic-link-success`,
|
|
3515
|
+
children: [props.state.tag === "success" ? /* @__PURE__ */ jsx("p", {
|
|
3516
|
+
className: `${props.classPrefix}-portal-auth-text ${props.classPrefix}-portal-auth-text--success`,
|
|
3517
|
+
children: props.successMessage
|
|
3518
|
+
}) : /* @__PURE__ */ jsx(DemoPortalSignInLink, { url: props.state.url }), !props.compact ? /* @__PURE__ */ jsx(MagicLinkButton, {
|
|
3519
|
+
themed: props.classPrefix === "cp",
|
|
3520
|
+
type: "button",
|
|
3521
|
+
variant: "secondary",
|
|
3522
|
+
className: `${props.classPrefix}-modal-btn ${props.classPrefix}-modal-btn--secondary`,
|
|
3523
|
+
label: "Try a different email",
|
|
3524
|
+
onClick: props.onReset
|
|
3525
|
+
}) : null]
|
|
3526
|
+
});
|
|
3527
|
+
}
|
|
3528
|
+
function MagicLinkButton(props) {
|
|
3529
|
+
return props.themed ? /* @__PURE__ */ jsx(ThemedButton, {
|
|
3530
|
+
type: props.type,
|
|
3531
|
+
variant: props.variant,
|
|
3532
|
+
size: "md",
|
|
3533
|
+
label: props.label,
|
|
3534
|
+
disabled: props.disabled,
|
|
3535
|
+
onClick: props.onClick
|
|
3536
|
+
}) : /* @__PURE__ */ jsx("button", {
|
|
3537
|
+
type: props.type,
|
|
3538
|
+
className: props.className,
|
|
3539
|
+
disabled: props.disabled,
|
|
3540
|
+
onClick: props.onClick,
|
|
3541
|
+
children: props.label
|
|
3542
|
+
});
|
|
3543
|
+
}
|
|
3544
|
+
async function submitMagicLink(input) {
|
|
3545
|
+
input.event.preventDefault();
|
|
3546
|
+
const email = input.email.trim().toLowerCase();
|
|
3547
|
+
if (!email || input.loading) return;
|
|
3548
|
+
input.dispatch({ type: "submit-started" });
|
|
3549
|
+
try {
|
|
3550
|
+
const result = await requestDemoPortalMagicLink({
|
|
3551
|
+
email,
|
|
3552
|
+
redirectUrl: getMagicLinkRedirectUrl(),
|
|
3553
|
+
send: (request) => input.api.sendMagicLink(request)
|
|
3554
|
+
});
|
|
3555
|
+
input.dispatch(magicLinkActionForResult(result));
|
|
3556
|
+
if (result.kind === "email_sent") input.onSuccess?.();
|
|
3557
|
+
} catch (error) {
|
|
3558
|
+
console.error("Magic link error:", error);
|
|
3559
|
+
input.dispatch({
|
|
3560
|
+
type: "submit-failed",
|
|
3561
|
+
message: getMagicLinkErrorMessage(error)
|
|
3562
|
+
});
|
|
3563
|
+
}
|
|
3564
|
+
}
|
|
3565
|
+
function magicLinkActionForResult(result) {
|
|
3566
|
+
switch (result.kind) {
|
|
3567
|
+
case "email_sent": return { type: "submit-succeeded" };
|
|
3568
|
+
case "demo_sign_in": return {
|
|
3569
|
+
type: "submit-demo-link",
|
|
3570
|
+
url: result.url
|
|
3571
|
+
};
|
|
3572
|
+
case "refused": return {
|
|
3573
|
+
type: "submit-demo-refused",
|
|
3574
|
+
message: result.message
|
|
3575
|
+
};
|
|
3576
|
+
}
|
|
3577
|
+
}
|
|
3578
|
+
function getMagicLinkRedirectUrl() {
|
|
3579
|
+
const redirectTo = `${window.location.pathname}${window.location.search}${window.location.hash}`;
|
|
3580
|
+
return buildPortalCallbackUrl(window.location.origin, redirectTo);
|
|
3581
|
+
}
|
|
3361
3582
|
function getMagicLinkErrorMessage(error) {
|
|
3362
|
-
return error instanceof
|
|
3583
|
+
return error instanceof BlockApiError ? error.message : "We couldn’t send the sign-in link. Please try again.";
|
|
3363
3584
|
}
|
|
3364
3585
|
//#endregion
|
|
3365
3586
|
//#region ../blocks/src/system/runtime/nodes/event-registration/ErrorStep.tsx
|
|
@@ -3668,19 +3889,19 @@ function isExistingRegistrationBlocking$1(wizard) {
|
|
|
3668
3889
|
}
|
|
3669
3890
|
function resolveTicketSelectionContinueLabel(input) {
|
|
3670
3891
|
if (input.isCheckingExistingRegistration) return "Checking registration...";
|
|
3892
|
+
if (input.ticketTypeSelectionBlocked) return "Choose a ticket";
|
|
3671
3893
|
if (input.registrationOptionsPending) return "Checking availability...";
|
|
3672
3894
|
if (input.registrationOptionsFailed) return "Availability unavailable";
|
|
3673
3895
|
if (input.hasExistingRegistration) return resolveExistingRegistrationLabel(input.wizard);
|
|
3674
|
-
if (input.ticketTypeSelectionBlocked) return "Choose a ticket";
|
|
3675
3896
|
return "Continue";
|
|
3676
3897
|
}
|
|
3677
3898
|
function SelectTicketsActions(props) {
|
|
3678
3899
|
const { wizard } = props;
|
|
3679
|
-
const
|
|
3900
|
+
const ticketTypeSelectionBlocked = wizard.ticketTypeSelectionRequired && !wizard.hasValidTicketSelection;
|
|
3901
|
+
const registrationOptionsPending = !ticketTypeSelectionBlocked && ["idle", "loading"].includes(wizard.registrationOptionsState.tag);
|
|
3680
3902
|
const registrationOptionsFailed = wizard.registrationOptionsState.tag === "failed";
|
|
3681
3903
|
const isCheckingExistingRegistration = wizard.portalAuthState === "authenticated" && wizard.existingRegistrationLoading;
|
|
3682
3904
|
const hasExistingRegistration = isExistingRegistrationBlocking$1(wizard);
|
|
3683
|
-
const ticketTypeSelectionBlocked = wizard.ticketTypeSelectionRequired && !wizard.hasValidTicketSelection;
|
|
3684
3905
|
const isContinueDisabled = registrationOptionsPending || registrationOptionsFailed || isCheckingExistingRegistration || hasExistingRegistration || ticketTypeSelectionBlocked;
|
|
3685
3906
|
const continueLabel = resolveTicketSelectionContinueLabel({
|
|
3686
3907
|
wizard,
|
|
@@ -4598,13 +4819,31 @@ function NotesField({ id, onChange, value }) {
|
|
|
4598
4819
|
})]
|
|
4599
4820
|
});
|
|
4600
4821
|
}
|
|
4822
|
+
function MailingListOptInField({ signup, formData, onChange }) {
|
|
4823
|
+
if (!signup) return null;
|
|
4824
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
4825
|
+
className: "er-field",
|
|
4826
|
+
children: [/* @__PURE__ */ jsx(CheckboxChoice, {
|
|
4827
|
+
checked: formData.mailingListOptIn === true,
|
|
4828
|
+
onChange: (event) => onChange({
|
|
4829
|
+
...formData,
|
|
4830
|
+
mailingListOptIn: event.target.checked
|
|
4831
|
+
}),
|
|
4832
|
+
label: `Email me news and updates from ${signup.siteName}.`,
|
|
4833
|
+
presentation: "row"
|
|
4834
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
4835
|
+
className: "er-text er-text--muted",
|
|
4836
|
+
children: "Optional. You can unsubscribe at any time."
|
|
4837
|
+
})]
|
|
4838
|
+
});
|
|
4839
|
+
}
|
|
4601
4840
|
/**
|
|
4602
4841
|
* Attendee Details Step
|
|
4603
4842
|
*
|
|
4604
4843
|
* Collects attendee information: name, email, phone, and notes.
|
|
4605
4844
|
* Validates required fields and displays errors.
|
|
4606
4845
|
*/
|
|
4607
|
-
const AttendeeDetailsStep = ({ formData, onChange, errors, emailLocked = false, onLogout, ticketsCount = 1, requireGuestDetails = false, guests = [], onGuestsChange, guestErrors = {}, guestSectionShake = false, onGuestShakeEnd, consent }) => {
|
|
4846
|
+
const AttendeeDetailsStep = ({ formData, onChange, errors, emailLocked = false, onLogout, ticketsCount = 1, requireGuestDetails = false, guests = [], onGuestsChange, guestErrors = {}, guestSectionShake = false, onGuestShakeEnd, consent, mailingListSignup }) => {
|
|
4608
4847
|
const idBase = useId();
|
|
4609
4848
|
const nameId = `${idBase}-name`;
|
|
4610
4849
|
const emailId = `${idBase}-email`;
|
|
@@ -4713,6 +4952,11 @@ const AttendeeDetailsStep = ({ formData, onChange, errors, emailLocked = false,
|
|
|
4713
4952
|
placeholder: "(optional)"
|
|
4714
4953
|
})]
|
|
4715
4954
|
}),
|
|
4955
|
+
/* @__PURE__ */ jsx(MailingListOptInField, {
|
|
4956
|
+
signup: mailingListSignup,
|
|
4957
|
+
formData,
|
|
4958
|
+
onChange
|
|
4959
|
+
}),
|
|
4716
4960
|
/* @__PURE__ */ jsx(NotesField, {
|
|
4717
4961
|
id: notesId,
|
|
4718
4962
|
value: formData.notes,
|
|
@@ -5206,7 +5450,8 @@ function AttendeeDetailsContent(props) {
|
|
|
5206
5450
|
guestErrors: wizard.guestErrors,
|
|
5207
5451
|
guestSectionShake: wizard.guestSectionShake,
|
|
5208
5452
|
onGuestShakeEnd: wizard.handleGuestShakeEnd,
|
|
5209
|
-
consent: (wizard.selectedEvent ?? wizard.preSelectedEvent)?.consent ?? null
|
|
5453
|
+
consent: (wizard.selectedEvent ?? wizard.preSelectedEvent)?.consent ?? null,
|
|
5454
|
+
mailingListSignup: wizard.mailingListSignup
|
|
5210
5455
|
}),
|
|
5211
5456
|
props.showSpamProtection && /* @__PURE__ */ jsx("div", {
|
|
5212
5457
|
className: "er-altcha",
|
|
@@ -5408,6 +5653,10 @@ function PaymentStatusStep(props) {
|
|
|
5408
5653
|
"aria-atomic": "true",
|
|
5409
5654
|
children: props.state.kind === "checking" ? "Checking payment…" : view.title
|
|
5410
5655
|
})] }),
|
|
5656
|
+
secondaryBody: props.state.mailingListSignupNote ? /* @__PURE__ */ jsx(BookingMailingListNote, {
|
|
5657
|
+
note: props.state.mailingListSignupNote,
|
|
5658
|
+
context: "booking"
|
|
5659
|
+
}) : void 0,
|
|
5411
5660
|
actionsClassName: "er-button-group",
|
|
5412
5661
|
actions: view.action ? /* @__PURE__ */ jsx("button", {
|
|
5413
5662
|
type: "button",
|
|
@@ -5440,8 +5689,8 @@ function StepIndicator(props) {
|
|
|
5440
5689
|
*
|
|
5441
5690
|
* Displays registration confirmation with a success icon and message.
|
|
5442
5691
|
*/
|
|
5443
|
-
const SuccessStep = ({ title,
|
|
5444
|
-
return /* @__PURE__ */ jsx(TerminalPanel, {
|
|
5692
|
+
const SuccessStep = ({ title, copy, variant = "success", mailingListSignupNote, context = "booking", demoEmailSuppressed = false, customerEmail }) => {
|
|
5693
|
+
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(TerminalPanel, {
|
|
5445
5694
|
tone: variant === "info" ? "info" : "success",
|
|
5446
5695
|
className: "er-center",
|
|
5447
5696
|
iconClassName: "er-icon",
|
|
@@ -5481,8 +5730,18 @@ const SuccessStep = ({ title, message, variant = "success" }) => {
|
|
|
5481
5730
|
})
|
|
5482
5731
|
}),
|
|
5483
5732
|
title: title ?? (variant === "info" ? "Already Registered" : "Registration Confirmed!"),
|
|
5484
|
-
body:
|
|
5485
|
-
|
|
5733
|
+
body: /* @__PURE__ */ jsx(BookingConfirmation, {
|
|
5734
|
+
demoEmailSuppressed,
|
|
5735
|
+
email: customerEmail,
|
|
5736
|
+
copy,
|
|
5737
|
+
messagePresentation: { kind: "plain" },
|
|
5738
|
+
noteClassName: "er-text--muted"
|
|
5739
|
+
}),
|
|
5740
|
+
secondaryBody: mailingListSignupNote ? /* @__PURE__ */ jsx(BookingMailingListNote, {
|
|
5741
|
+
note: mailingListSignupNote,
|
|
5742
|
+
context
|
|
5743
|
+
}) : void 0
|
|
5744
|
+
}) });
|
|
5486
5745
|
};
|
|
5487
5746
|
//#endregion
|
|
5488
5747
|
//#region ../blocks/src/system/runtime/nodes/event-registration/VerifyingPaymentStep.tsx
|
|
@@ -5652,11 +5911,11 @@ function EventRegistrationTerminalState(props) {
|
|
|
5652
5911
|
onReturnToPayment: wizard.handleReturnToPayment,
|
|
5653
5912
|
onReturnToBooking: wizard.handleReturnToBooking
|
|
5654
5913
|
}) : null;
|
|
5655
|
-
case "success": return
|
|
5656
|
-
|
|
5657
|
-
|
|
5658
|
-
|
|
5659
|
-
})
|
|
5914
|
+
case "success": return /* @__PURE__ */ jsx(EventRegistrationSuccess, {
|
|
5915
|
+
wizard,
|
|
5916
|
+
fallbackMessage: props.successMessage,
|
|
5917
|
+
demoEmailSuppressed: props.demoEmailSuppressed
|
|
5918
|
+
});
|
|
5660
5919
|
case "error": return /* @__PURE__ */ jsx(ErrorStep, {
|
|
5661
5920
|
message: wizard.errorMessage,
|
|
5662
5921
|
action: wizard.errorAction,
|
|
@@ -5669,6 +5928,20 @@ function EventRegistrationTerminalState(props) {
|
|
|
5669
5928
|
case "select-payment": return null;
|
|
5670
5929
|
}
|
|
5671
5930
|
}
|
|
5931
|
+
function EventRegistrationSuccess(props) {
|
|
5932
|
+
const result = props.wizard.registrationResult;
|
|
5933
|
+
if (!result) return null;
|
|
5934
|
+
const copy = getRegistrationSuccessCopy(result, props.fallbackMessage);
|
|
5935
|
+
return /* @__PURE__ */ jsx(SuccessStep, {
|
|
5936
|
+
title: result.title,
|
|
5937
|
+
variant: result.variant,
|
|
5938
|
+
copy,
|
|
5939
|
+
mailingListSignupNote: result.mailingListSignupNote,
|
|
5940
|
+
context: result.status === "waitlist" ? "waitlist" : "booking",
|
|
5941
|
+
demoEmailSuppressed: props.demoEmailSuppressed,
|
|
5942
|
+
customerEmail: props.wizard.formData.email
|
|
5943
|
+
});
|
|
5944
|
+
}
|
|
5672
5945
|
function EventRegistrationSurface(props) {
|
|
5673
5946
|
const { wizard } = props;
|
|
5674
5947
|
const mainRef = useRef(null);
|
|
@@ -5714,109 +5987,12 @@ function EventRegistrationSurface(props) {
|
|
|
5714
5987
|
}), /* @__PURE__ */ jsx(EventRegistrationTerminalState, {
|
|
5715
5988
|
wizard,
|
|
5716
5989
|
supportEmail: props.supportEmail,
|
|
5717
|
-
successMessage: props.successMessage
|
|
5990
|
+
successMessage: props.successMessage,
|
|
5991
|
+
demoEmailSuppressed: props.demoEmailSuppressed
|
|
5718
5992
|
})]
|
|
5719
5993
|
});
|
|
5720
5994
|
}
|
|
5721
5995
|
//#endregion
|
|
5722
|
-
//#region ../blocks/src/system/runtime/nodes/event-registration/EventRegistrationBookingLayer.tsx
|
|
5723
|
-
function BookingEntry(props) {
|
|
5724
|
-
const base = props.variant === "teaser" ? "er-booking-teaser" : "er-booking-bar";
|
|
5725
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("div", {
|
|
5726
|
-
className: `${base}__info`,
|
|
5727
|
-
children: [
|
|
5728
|
-
/* @__PURE__ */ jsx("span", {
|
|
5729
|
-
className: `${base}__title`,
|
|
5730
|
-
children: "Book this event"
|
|
5731
|
-
}),
|
|
5732
|
-
props.summary && /* @__PURE__ */ jsx("span", {
|
|
5733
|
-
className: `${base}__meta`,
|
|
5734
|
-
children: props.summary
|
|
5735
|
-
}),
|
|
5736
|
-
props.variant === "teaser" && props.ticketCurrency && props.ticketTypes.length > 0 ? /* @__PURE__ */ jsx("div", {
|
|
5737
|
-
className: "er-booking-teaser__tickets",
|
|
5738
|
-
children: props.ticketTypes.map((ticketType) => /* @__PURE__ */ jsxs("div", {
|
|
5739
|
-
className: "er-booking-teaser__ticket",
|
|
5740
|
-
children: [/* @__PURE__ */ jsx("span", {
|
|
5741
|
-
className: "er-booking-teaser__ticket-name",
|
|
5742
|
-
children: ticketType.name
|
|
5743
|
-
}), /* @__PURE__ */ jsx("strong", { children: props.formatTicketPrice(ticketType) })]
|
|
5744
|
-
}, ticketType.pricingOptionId))
|
|
5745
|
-
}) : null
|
|
5746
|
-
]
|
|
5747
|
-
}), /* @__PURE__ */ jsx(ThemedButton, {
|
|
5748
|
-
type: "button",
|
|
5749
|
-
variant: props.buttonVariant,
|
|
5750
|
-
size: "md",
|
|
5751
|
-
extraClassName: `${base}__cta`,
|
|
5752
|
-
label: "Book now",
|
|
5753
|
-
onClick: props.onOpen
|
|
5754
|
-
})] });
|
|
5755
|
-
}
|
|
5756
|
-
function EventRegistrationBookingLayer(props) {
|
|
5757
|
-
const entryProps = {
|
|
5758
|
-
summary: [props.priceLabel, props.availabilityLabel].filter(Boolean).join(" · "),
|
|
5759
|
-
ticketTypes: props.ticketTypes,
|
|
5760
|
-
ticketCurrency: props.ticketCurrency,
|
|
5761
|
-
buttonVariant: props.buttonVariant,
|
|
5762
|
-
formatTicketPrice: props.formatTicketPrice,
|
|
5763
|
-
onOpen: props.onOpen
|
|
5764
|
-
};
|
|
5765
|
-
const floatingBar = !props.overlayOpen && props.isWizardStep ? /* @__PURE__ */ jsx("div", {
|
|
5766
|
-
className: "er-booking-bar",
|
|
5767
|
-
children: /* @__PURE__ */ jsx("div", {
|
|
5768
|
-
className: "er-booking-bar__inner",
|
|
5769
|
-
children: /* @__PURE__ */ jsx(BookingEntry, {
|
|
5770
|
-
...entryProps,
|
|
5771
|
-
variant: "bar"
|
|
5772
|
-
})
|
|
5773
|
-
})
|
|
5774
|
-
}) : null;
|
|
5775
|
-
const floatingLayer = props.portalRoot ? createPortal(/* @__PURE__ */ jsx("div", {
|
|
5776
|
-
className: props.registrationRootClassName,
|
|
5777
|
-
"data-block": "event-registration",
|
|
5778
|
-
children: floatingBar
|
|
5779
|
-
}), props.portalRoot) : floatingBar;
|
|
5780
|
-
const overlayLayer = props.overlayOpen ? /* @__PURE__ */ jsx(ModalShell, {
|
|
5781
|
-
title: "Book this event",
|
|
5782
|
-
titleId: "event-registration-booking-title",
|
|
5783
|
-
onClose: props.onClose,
|
|
5784
|
-
portal: props.portalRoot != null,
|
|
5785
|
-
portalRoot: props.portalRoot,
|
|
5786
|
-
portalWrapperClassName: props.registrationRootClassName,
|
|
5787
|
-
portalWrapperProps: { "data-block": "event-registration" },
|
|
5788
|
-
overlayClassName: "er-booking-overlay",
|
|
5789
|
-
modalClassName: "er-booking-overlay__panel",
|
|
5790
|
-
renderHeader: ({ closeButtonRef, onClose, title, titleId }) => /* @__PURE__ */ jsxs("div", {
|
|
5791
|
-
className: "er-booking-overlay__header",
|
|
5792
|
-
children: [/* @__PURE__ */ jsx("h2", {
|
|
5793
|
-
className: "er-booking-overlay__title",
|
|
5794
|
-
id: titleId,
|
|
5795
|
-
children: title
|
|
5796
|
-
}), /* @__PURE__ */ jsx("button", {
|
|
5797
|
-
ref: closeButtonRef,
|
|
5798
|
-
type: "button",
|
|
5799
|
-
className: "er-booking-overlay__close",
|
|
5800
|
-
onClick: onClose,
|
|
5801
|
-
"aria-label": "Close booking",
|
|
5802
|
-
children: "×"
|
|
5803
|
-
})]
|
|
5804
|
-
}),
|
|
5805
|
-
children: props.overlaySurface
|
|
5806
|
-
}) : null;
|
|
5807
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5808
|
-
props.isWizardStep && /* @__PURE__ */ jsx("div", {
|
|
5809
|
-
className: "er-booking-teaser",
|
|
5810
|
-
children: /* @__PURE__ */ jsx(BookingEntry, {
|
|
5811
|
-
...entryProps,
|
|
5812
|
-
variant: "teaser"
|
|
5813
|
-
})
|
|
5814
|
-
}),
|
|
5815
|
-
floatingLayer,
|
|
5816
|
-
overlayLayer
|
|
5817
|
-
] });
|
|
5818
|
-
}
|
|
5819
|
-
//#endregion
|
|
5820
5996
|
//#region ../blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizard.tsx
|
|
5821
5997
|
const EVENT_PORTAL_AUTH_COPY = {
|
|
5822
5998
|
membership: {
|
|
@@ -5829,6 +6005,16 @@ const EVENT_PORTAL_AUTH_COPY = {
|
|
|
5829
6005
|
buttonText: "Email me a login link to continue →"
|
|
5830
6006
|
}
|
|
5831
6007
|
};
|
|
6008
|
+
function getPortalAuthCopy(waitlistClaimRequiresPortalLogin, loginMessage, demoEmailSuppressed) {
|
|
6009
|
+
const defaultCopy = waitlistClaimRequiresPortalLogin ? {
|
|
6010
|
+
...EVENT_PORTAL_AUTH_COPY["waitlist-claim"],
|
|
6011
|
+
description: loginMessage ?? "Log in to continue with your waitlist claim."
|
|
6012
|
+
} : EVENT_PORTAL_AUTH_COPY.membership;
|
|
6013
|
+
return demoEmailSuppressed && !waitlistClaimRequiresPortalLogin ? {
|
|
6014
|
+
...defaultCopy,
|
|
6015
|
+
buttonText: "Get a sign-in link →"
|
|
6016
|
+
} : defaultCopy;
|
|
6017
|
+
}
|
|
5832
6018
|
function getActiveTicketTypes(event) {
|
|
5833
6019
|
return event?.pricing.kind === "tiered" ? event.pricing.options.filter((ticketType) => ticketType.isActive).sort((left, right) => left.sortOrder - right.sortOrder).map(({ id, ...ticketType }) => ({
|
|
5834
6020
|
...ticketType,
|
|
@@ -5864,19 +6050,30 @@ function getWizardStepLabel(input) {
|
|
|
5864
6050
|
case "payment-failed": return "";
|
|
5865
6051
|
}
|
|
5866
6052
|
}
|
|
6053
|
+
function useConfiguredEventRegistrationWizard(props) {
|
|
6054
|
+
return useEventRegistrationWizard({
|
|
6055
|
+
anchorId: EVENT_REGISTRATION_ANCHOR_ID,
|
|
6056
|
+
occurrenceContext: props.occurrenceContext ?? null,
|
|
6057
|
+
subject: props.subject ?? null,
|
|
6058
|
+
events: props.events ?? [],
|
|
6059
|
+
maxTicketsNum: normalizeEventRegistrationMaxTickets(props.maxTickets ?? "5"),
|
|
6060
|
+
mailingList: props.mailingList,
|
|
6061
|
+
siteName: props.siteName
|
|
6062
|
+
});
|
|
6063
|
+
}
|
|
5867
6064
|
function EventRegistrationWizard(props) {
|
|
5868
|
-
const
|
|
5869
|
-
|
|
6065
|
+
const wizard = useConfiguredEventRegistrationWizard(props);
|
|
6066
|
+
return /* @__PURE__ */ jsx(EventRegistrationWizardView, {
|
|
6067
|
+
...props,
|
|
6068
|
+
wizard
|
|
6069
|
+
});
|
|
6070
|
+
}
|
|
6071
|
+
function EventRegistrationWizardView(viewProps) {
|
|
6072
|
+
const { wizard, ...props } = viewProps;
|
|
6073
|
+
const { showVenue = true, showCapacity = true, successMessage, buttonText = "Complete Registration", buttonVariant = "primary", className, spamProtectionEnabled, supportEmail } = props;
|
|
5870
6074
|
const showSpamProtection = spamProtectionEnabled ?? isSpamProtectionEnabled();
|
|
5871
6075
|
const registrationRootClassName = `event-registration ${className || ""}`;
|
|
5872
6076
|
const registrationRootRef = React.useRef(null);
|
|
5873
|
-
const wizard = useEventRegistrationWizard({
|
|
5874
|
-
anchorId: EVENT_REGISTRATION_ANCHOR_ID,
|
|
5875
|
-
occurrenceContext: occurrenceContext ?? null,
|
|
5876
|
-
subject: subject ?? null,
|
|
5877
|
-
events: events ?? [],
|
|
5878
|
-
maxTicketsNum
|
|
5879
|
-
});
|
|
5880
6077
|
useEventCheckoutHandoffRestore(wizard.step === "redirecting");
|
|
5881
6078
|
const [bookingOverlayOpen, setBookingOverlayOpen] = useState(false);
|
|
5882
6079
|
const [floatingPortalRoot, setFloatingPortalRoot] = useState(null);
|
|
@@ -5942,10 +6139,7 @@ function EventRegistrationWizard(props) {
|
|
|
5942
6139
|
const summaryPriceLabel = summaryEvent ? formatEventPriceDisplay(summaryEvent.pricing) : null;
|
|
5943
6140
|
const summaryAvailabilityLabel = getAvailabilityLabel(summaryEvent, wizard.selectedAttendanceMode);
|
|
5944
6141
|
const waitlistClaimRequiresPortalLogin = wizard.waitlistClaim.requiresPortalLogin && wizard.portalAuthState !== "authenticated" && wizard.portalAuthState !== "checking";
|
|
5945
|
-
const portalAuthCopy = waitlistClaimRequiresPortalLogin
|
|
5946
|
-
...EVENT_PORTAL_AUTH_COPY["waitlist-claim"],
|
|
5947
|
-
description: wizard.waitlistClaim.loginMessage ?? "Log in to continue with your waitlist claim."
|
|
5948
|
-
} : EVENT_PORTAL_AUTH_COPY.membership;
|
|
6142
|
+
const portalAuthCopy = getPortalAuthCopy(waitlistClaimRequiresPortalLogin, wizard.waitlistClaim.loginMessage, props.demoEmailSuppressed);
|
|
5949
6143
|
const showPortalAuthPrompt = waitlistClaimRequiresPortalLogin || wizard.step === "select-tickets" && wizard.portalAuthState !== "authenticated" && wizard.portalAuthState !== "checking" && summaryEventPricingType !== "free";
|
|
5950
6144
|
const renderRegistrationSurface = (variant) => /* @__PURE__ */ jsx(EventRegistrationSurface, {
|
|
5951
6145
|
variant,
|
|
@@ -5962,7 +6156,8 @@ function EventRegistrationWizard(props) {
|
|
|
5962
6156
|
buttonText,
|
|
5963
6157
|
buttonVariant,
|
|
5964
6158
|
supportEmail,
|
|
5965
|
-
successMessage
|
|
6159
|
+
successMessage,
|
|
6160
|
+
demoEmailSuppressed: props.demoEmailSuppressed
|
|
5966
6161
|
});
|
|
5967
6162
|
const isEmbedded = (className ?? "").includes("event-registration--embedded");
|
|
5968
6163
|
const overlayEnabled = props.overlayEnabled === true;
|