@riverbankcms/sdk 0.147.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 +16 -0
- package/dist/{PreviewEditorSidebar-DtpB3_sS.mjs → PreviewEditorSidebar-DvEPG3Z2.mjs} +202 -143
- package/dist/{PreviewEditorUI-DxTLgaHo.mjs → PreviewEditorUI-D6eb6fkx.mjs} +68 -60
- package/dist/{PreviewQueryProvider-Dd4dxOiU.mjs → PreviewQueryProvider-5znTyJuz.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-DMMNCngt.mjs → SdkPreviewModeRuntime-DJ6utQ_R.mjs} +1191 -513
- package/dist/{SiteChromeCustomizeContext-DQXZXiqS.mjs → SiteChromeCustomizeContext-CFJYh6vo.mjs} +201798 -197304
- package/dist/_dts/ai/src/contracts/proposals.d.ts +0 -33
- package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +0 -3
- package/dist/_dts/api/src/accessAdmin.d.ts +0 -4
- package/dist/_dts/api/src/accountApi.d.ts +1 -1
- 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 +0 -2
- package/dist/_dts/api/src/bookingOperations.d.ts +4 -4
- package/dist/_dts/api/src/bookingRecords.d.ts +1 -0
- package/dist/_dts/api/src/bookings.d.ts +7 -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 +133 -41
- package/dist/_dts/api/src/eventEmailTemplates.d.ts +2 -2
- package/dist/_dts/api/src/eventManagementContracts.d.ts +25 -0
- package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +0 -8
- 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 +6 -5
- package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -0
- package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
- package/dist/_dts/api/src/navigation.d.ts +5 -5
- 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 +2 -0
- package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +4 -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 +0 -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/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/siteManagementEndpoints.d.ts +15 -8
- package/dist/_dts/api/src/siteMembers.d.ts +10 -10
- package/dist/_dts/api/src/siteOnboarding.d.ts +14 -0
- 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/client/events.d.ts +3 -0
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +16 -4
- package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +4 -13
- package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -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/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 +2 -0
- package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +6 -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 +24 -6
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +12 -3
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +3 -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 +3 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.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.state.d.ts +15 -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 +1 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +1 -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/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 +4 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +2 -5
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +9 -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/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/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/utils/demoBookingPassStorage.d.ts +10 -0
- package/dist/_dts/blocks/src/system/runtime/shared/utils/demoPortalMagicLink.d.ts +29 -0
- 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 +4 -0
- package/dist/_dts/core/src/uuid.d.ts +7 -5
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +159 -153
- 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/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/composer/mergeDrafts.d.ts +8 -3
- package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +6 -3
- 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 +1 -0
- package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +1 -0
- package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +2 -0
- 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/site-styles/designState.d.ts +2 -2
- package/dist/client/{BookingMailingListNote-1n4Ch_u_.mjs → BookingMailingListNote-CzRt2dF_.mjs} +98 -96
- package/dist/client/DemoBookingPortalAccess-mxqwap3f.mjs +344 -0
- package/dist/client/{EventCombined.client-C0pgma9y.mjs → EventCombined.client-CDb11igO.mjs} +6 -6
- package/dist/client/{EventListing.client-4fhLOvHP.mjs → EventListing.client-EgYhzKPa.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-DScC4F3w.mjs → LeafletStaticMap-gtmtaA2b.mjs} +1 -1
- package/dist/client/{TerminalPanel-B5ZUsYhe.mjs → TerminalPanel-DvNUP5ot.mjs} +1 -1
- package/dist/client/{ThemedButton-DoVIV1Ao.mjs → ThemedButton-C7CeUJjW.mjs} +1 -1
- package/dist/client/{accordion-CoT5g7zo.mjs → accordion-kjvt49rA.mjs} +1 -1
- package/dist/client/{bookingForm-BWxB46xD.mjs → bookingForm-pbRZordh.mjs} +212 -62
- package/dist/client/bookings.mjs +616 -225
- package/dist/client/{carousel-DtNYWFd3.mjs → carousel-f4Zbmicv.mjs} +1 -1
- package/dist/client/{cart-z4qZih1Y.mjs → cart-DO20An50.mjs} +3 -3
- package/dist/client/{checkout-DpL7euFH.mjs → checkout-Du5amDR_.mjs} +3 -3
- package/dist/client/{checkoutUrls-BEfR7kVu.mjs → checkoutUrls-CXhko2Rv.mjs} +1 -1
- package/dist/client/client.mjs +1753 -823
- package/dist/client/{context-C8TinPJc.mjs → context-eW97E945.mjs} +4 -3
- package/dist/client/{dates-vwwxTeB0.mjs → dates-jPCirRea.mjs} +56 -11
- package/dist/client/{eventCalendar-DIbHfJXO.mjs → eventCalendar-C2M-iE4j.mjs} +9 -9
- package/dist/client/{eventCombined-DoGMJ6cg.mjs → eventCombined-W6ns3LHg.mjs} +4 -4
- package/dist/client/{eventDetails-BjN9v6a1.mjs → eventDetails-CR-GT0f0.mjs} +4 -4
- package/dist/client/{eventListing-DajjWgOv.mjs → eventListing-BK8AfYZz.mjs} +4 -4
- package/dist/client/{eventRegistration-DMq9gMA-.mjs → eventRegistration-BJSd4KUu.mjs} +369 -242
- package/dist/client/{form-Qf6qTbos.mjs → form-BvpfbQaT.mjs} +3 -3
- package/dist/client/{headerSection-D7qJrqFX.mjs → headerSection-I5sUQ8x-.mjs} +3 -3
- package/dist/client/hooks.mjs +254 -53
- package/dist/client/{locationMap-CCF9-t_0.mjs → locationMap-BLvwf9_f.mjs} +3 -3
- package/dist/client/{media-CwBGetqC.mjs → media-Cl38iOMI.mjs} +10 -3
- package/dist/client/{newsletterForm-DzCLSP4S.mjs → newsletterForm-DrQ2weE8.mjs} +3 -3
- package/dist/client/{pricing-Cgxv2KLC.mjs → pricing-BES87mrR.mjs} +1 -1
- package/dist/client/{productDetail-ru9w5GHx.mjs → productDetail-Url9jcc5.mjs} +3 -3
- package/dist/client/{productList-zaapKSl-.mjs → productList-DE7ngEZJ.mjs} +3 -3
- package/dist/client/{propsDecoder-CwvvNOHx.mjs → propsDecoder-D1OtGXDV.mjs} +89 -17
- package/dist/client/rendering/client.mjs +1445 -658
- package/dist/client/rendering/islands.mjs +18 -18
- package/dist/client/rendering.mjs +2478 -1515
- package/dist/client/{routeIslandApiConfig-BwVFo0Y4.mjs → routeIslandApiConfig-BG9Y-SHg.mjs} +1 -1
- package/dist/client/{shop-mktkXvbV.mjs → shop-CJkuySJ3.mjs} +126 -79
- package/dist/client/{shop-commerce-De7gEnkA.mjs → shop-commerce-4rKj5n9h.mjs} +25 -13
- package/dist/client/{shop-commerce-store-B3MCxIBW.mjs → shop-commerce-store-Bxm75Pg6.mjs} +1 -1
- package/dist/client/{shopShared-TqExh235.mjs → shopShared-DpoQDWfz.mjs} +4 -4
- package/dist/client/{useEventFilters-n_OjkIjX.mjs → useEventFilters-D8HliSqR.mjs} +32 -17
- package/dist/preview-next/before-render.mjs +192 -83
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/keepAlive.mjs +192 -83
- package/dist/preview-next/middleware.mjs +192 -83
- package/dist/{previewAuthStore-C_EHQ5XA.mjs → previewAuthStore-BXXF3hhW.mjs} +194 -83
- package/dist/{sdk-runtime-BIkJg5y1.mjs → sdk-runtime-C2a05WjL.mjs} +2 -2
- package/dist/{separator-C9qDP95Z.mjs → separator-CuNhBAhS.mjs} +1 -1
- package/dist/server/components.mjs +1720 -1392
- package/dist/server/config-validation.mjs +221 -37
- package/dist/server/config.mjs +221 -37
- package/dist/server/data.mjs +221 -37
- package/dist/server/index.mjs +195 -84
- package/dist/server/next.mjs +490 -196
- package/dist/server/page-converter.mjs +53 -14
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +1427 -1098
- package/dist/server/rendering.mjs +2693 -2365
- package/dist/server/routing.mjs +291 -55
- package/dist/server/server.mjs +281 -114
- package/package.json +1 -1
- package/dist/_dts/billing/src/plans/display.d.ts +0 -15
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-note.d.ts +0 -3
- 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/client/DiscountCodeDisclosure-CKJtz0mY.mjs +0 -137
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
"use client";
|
|
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-
|
|
3
|
-
import {
|
|
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 {
|
|
8
|
-
import { a as useDiscountCodeUi, i as CheckIcon, n as StateIcon, r as scrollToBlock, t as TerminalPanel } from "./TerminalPanel-
|
|
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
11
|
import { i as getFieldValidationControlProps, r as FieldValidationMessage } from "./mailingListSignupCopy-DZSHZrm6.mjs";
|
|
12
|
-
import { t as buildCheckoutReturnUrls } from "./checkoutUrls-
|
|
12
|
+
import { t as buildCheckoutReturnUrls } from "./checkoutUrls-CXhko2Rv.mjs";
|
|
13
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);
|
|
@@ -1414,6 +1424,10 @@ const eventRegistrationErrors = {
|
|
|
1414
1424
|
message: "The payment options for this event have changed. Please check the latest options before continuing.",
|
|
1415
1425
|
action: "payment-options"
|
|
1416
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
|
+
},
|
|
1417
1431
|
idempotencyConflict: {
|
|
1418
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.",
|
|
1419
1433
|
action: "portal"
|
|
@@ -1601,11 +1615,50 @@ function useResolvedWaitlistClaim(deps, credential) {
|
|
|
1601
1615
|
* ```
|
|
1602
1616
|
*/
|
|
1603
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
|
+
}
|
|
1604
1656
|
/**
|
|
1605
1657
|
* Hook for polling payment status after Stripe redirects.
|
|
1606
1658
|
*
|
|
1607
1659
|
* Pass config to start polling, or null to stop/idle.
|
|
1608
|
-
* 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.
|
|
1609
1662
|
*
|
|
1610
1663
|
* @param config - Configuration for polling, or null to stop
|
|
1611
1664
|
* @returns Verification result with status, data, and retry function
|
|
@@ -1614,30 +1667,7 @@ function usePaymentVerification(config) {
|
|
|
1614
1667
|
return usePaymentVerificationWithDeps(config, paymentVerificationDeps);
|
|
1615
1668
|
}
|
|
1616
1669
|
function usePaymentVerificationWithDeps(config, deps) {
|
|
1617
|
-
|
|
1618
|
-
const polling = usePolling(useMemo(() => {
|
|
1619
|
-
if (!config) return null;
|
|
1620
|
-
return {
|
|
1621
|
-
pollFn: () => api.getEventRegistrationStatus(config.reference),
|
|
1622
|
-
isComplete: (result) => result.paymentStatus === "completed" || result.paymentStatus === "not_required",
|
|
1623
|
-
isFailed: (result) => result.paymentStatus === "failed" || result.paymentStatus === "refunded",
|
|
1624
|
-
maxAttempts: config.maxAttempts,
|
|
1625
|
-
interval: config.pollInterval
|
|
1626
|
-
};
|
|
1627
|
-
}, [api, config]));
|
|
1628
|
-
const paymentStatus = polling.result?.paymentStatus ?? null;
|
|
1629
|
-
let errorMessage = null;
|
|
1630
|
-
if (polling.status === "timeout") errorMessage = "Could not verify payment. If you were charged, please contact support.";
|
|
1631
|
-
else if (polling.status === "failed" && paymentStatus) errorMessage = paymentStatus === "refunded" ? "Payment was refunded. Please contact support." : "Payment was declined. Please try again.";
|
|
1632
|
-
else if (polling.error) errorMessage = polling.error.message;
|
|
1633
|
-
return {
|
|
1634
|
-
status: polling.status,
|
|
1635
|
-
paymentStatus,
|
|
1636
|
-
attendeeStatus: polling.result?.attendeeStatus ?? null,
|
|
1637
|
-
waitlistPosition: polling.result?.waitlistPosition ?? null,
|
|
1638
|
-
error: errorMessage,
|
|
1639
|
-
retry: polling.retry
|
|
1640
|
-
};
|
|
1670
|
+
return mapPaymentVerificationResult(usePolling(createPaymentPollingConfig(deps.useBlockApi(), config)));
|
|
1641
1671
|
}
|
|
1642
1672
|
//#endregion
|
|
1643
1673
|
//#region ../blocks/src/system/runtime/nodes/event-registration/constants.ts
|
|
@@ -2010,20 +2040,9 @@ function registrationErrorPresentation(error) {
|
|
|
2010
2040
|
function wantsMailingListSignup(options) {
|
|
2011
2041
|
return options.mailingListSignup !== null && options.formData.mailingListOptIn === true;
|
|
2012
2042
|
}
|
|
2013
|
-
function createClientCommandId(cryptoSource = {
|
|
2014
|
-
randomUUID: globalThis.crypto.randomUUID?.bind(globalThis.crypto),
|
|
2015
|
-
getRandomValues: (bytes) => globalThis.crypto.getRandomValues(bytes)
|
|
2016
|
-
}) {
|
|
2017
|
-
if (cryptoSource.randomUUID) return cryptoSource.randomUUID();
|
|
2018
|
-
const bytes = cryptoSource.getRandomValues(/* @__PURE__ */ new Uint8Array(16));
|
|
2019
|
-
bytes[6] = (bytes[6] ?? 0) & 15 | 64;
|
|
2020
|
-
bytes[8] = (bytes[8] ?? 0) & 63 | 128;
|
|
2021
|
-
const hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0"));
|
|
2022
|
-
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("")}`;
|
|
2023
|
-
}
|
|
2024
2043
|
const eventRegistrationSubmitDeps = {
|
|
2025
2044
|
savePendingRegistration,
|
|
2026
|
-
createClientCommandId
|
|
2045
|
+
createClientCommandId: generateUuidV4
|
|
2027
2046
|
};
|
|
2028
2047
|
function useEventRegistrationSubmit(options) {
|
|
2029
2048
|
return useEventRegistrationSubmitWithDeps(options, eventRegistrationSubmitDeps);
|
|
@@ -2103,6 +2122,7 @@ function useEventRegistrationSubmitWithDeps(options, deps) {
|
|
|
2103
2122
|
};
|
|
2104
2123
|
}
|
|
2105
2124
|
async function completeRegistrationSubmission(options, deps, prepared, result, submitOptions) {
|
|
2125
|
+
if (result.demoBookingPass) storeDemoBookingPass(options.formData.email, result.demoBookingPass);
|
|
2106
2126
|
switch (result.kind) {
|
|
2107
2127
|
case "paymentStatusRequired":
|
|
2108
2128
|
options.setPaymentStatusRecovery({
|
|
@@ -2125,6 +2145,7 @@ async function completeRegistrationSubmission(options, deps, prepared, result, s
|
|
|
2125
2145
|
status: "waitlist",
|
|
2126
2146
|
title: "Added to waitlist",
|
|
2127
2147
|
message: result.waitlist.message,
|
|
2148
|
+
emailFollowupMessage: result.waitlist.emailFollowupMessage,
|
|
2128
2149
|
mailingListSignupNote: result.mailingListSignupNote
|
|
2129
2150
|
});
|
|
2130
2151
|
break;
|
|
@@ -3250,6 +3271,118 @@ function useEventCheckoutHandoffRestoreWithDeps(active, deps) {
|
|
|
3250
3271
|
}, [active, deps]);
|
|
3251
3272
|
}
|
|
3252
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
|
|
3253
3386
|
//#region ../blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.ts
|
|
3254
3387
|
const initialMagicLinkSubmissionState = Object.freeze({ tag: "idle" });
|
|
3255
3388
|
function magicLinkSubmissionReducer(state, action) {
|
|
@@ -3260,6 +3393,14 @@ function magicLinkSubmissionReducer(state, action) {
|
|
|
3260
3393
|
case "submit-succeeded":
|
|
3261
3394
|
if (state.tag !== "submitting") return state;
|
|
3262
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;
|
|
3263
3404
|
case "submit-failed":
|
|
3264
3405
|
if (state.tag !== "submitting") return state;
|
|
3265
3406
|
return {
|
|
@@ -3278,110 +3419,168 @@ function getMagicLinkError(state) {
|
|
|
3278
3419
|
}
|
|
3279
3420
|
//#endregion
|
|
3280
3421
|
//#region ../blocks/src/system/runtime/nodes/shared/MagicLinkForm.tsx
|
|
3281
|
-
function
|
|
3282
|
-
return props.themed ? /* @__PURE__ */ jsx(ThemedButton, {
|
|
3283
|
-
type: props.type,
|
|
3284
|
-
variant: props.variant,
|
|
3285
|
-
size: "md",
|
|
3286
|
-
label: props.label,
|
|
3287
|
-
disabled: props.disabled,
|
|
3288
|
-
onClick: props.onClick
|
|
3289
|
-
}) : /* @__PURE__ */ jsx("button", {
|
|
3290
|
-
type: props.type,
|
|
3291
|
-
className: props.className,
|
|
3292
|
-
disabled: props.disabled,
|
|
3293
|
-
onClick: props.onClick,
|
|
3294
|
-
children: props.label
|
|
3295
|
-
});
|
|
3296
|
-
}
|
|
3297
|
-
/**
|
|
3298
|
-
* Reusable magic link login form.
|
|
3299
|
-
* Used by Customer Portal and Event Registration blocks.
|
|
3300
|
-
*/
|
|
3301
|
-
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) {
|
|
3302
3423
|
const api = useBlockApi();
|
|
3303
|
-
const [email, setEmail] = useState(initialEmail);
|
|
3304
|
-
const [
|
|
3305
|
-
const loading = isMagicLinkSubmitting(
|
|
3306
|
-
const
|
|
3307
|
-
|
|
3308
|
-
|
|
3309
|
-
|
|
3310
|
-
|
|
3311
|
-
|
|
3312
|
-
|
|
3313
|
-
|
|
3314
|
-
|
|
3315
|
-
email: normalizedEmail,
|
|
3316
|
-
redirectUrl: `${window.location.origin}/api/portal/callback?redirect_to=${encodeURIComponent(redirectTo)}`
|
|
3317
|
-
});
|
|
3318
|
-
dispatchSubmission({ type: "submit-succeeded" });
|
|
3319
|
-
onSuccess?.();
|
|
3320
|
-
} catch (err) {
|
|
3321
|
-
console.error("Magic link error:", err);
|
|
3322
|
-
dispatchSubmission({
|
|
3323
|
-
type: "submit-failed",
|
|
3324
|
-
message: getMagicLinkErrorMessage(err)
|
|
3325
|
-
});
|
|
3326
|
-
}
|
|
3327
|
-
};
|
|
3328
|
-
const handleReset = () => {
|
|
3329
|
-
setEmail("");
|
|
3330
|
-
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
|
+
});
|
|
3331
3436
|
};
|
|
3332
|
-
if (
|
|
3333
|
-
|
|
3334
|
-
|
|
3335
|
-
|
|
3336
|
-
|
|
3337
|
-
|
|
3338
|
-
|
|
3339
|
-
type: "
|
|
3340
|
-
|
|
3341
|
-
className: `${classPrefix}-modal-btn ${classPrefix}-modal-btn--secondary`,
|
|
3342
|
-
label: "Try a different email",
|
|
3343
|
-
onClick: handleReset
|
|
3344
|
-
})]
|
|
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
|
+
}
|
|
3345
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
|
|
3459
|
+
});
|
|
3460
|
+
}
|
|
3461
|
+
function MagicLinkFormView(props) {
|
|
3462
|
+
const classPrefix = props.classPrefix;
|
|
3346
3463
|
return /* @__PURE__ */ jsxs("form", {
|
|
3347
|
-
onSubmit:
|
|
3464
|
+
onSubmit: props.onSubmit,
|
|
3348
3465
|
className: `${classPrefix}-magic-link-form`,
|
|
3349
3466
|
children: [
|
|
3350
|
-
title
|
|
3467
|
+
props.title ? /* @__PURE__ */ jsx("h3", {
|
|
3351
3468
|
className: `${classPrefix}-magic-link-title`,
|
|
3352
|
-
children: title
|
|
3353
|
-
}),
|
|
3354
|
-
subtitle
|
|
3469
|
+
children: props.title
|
|
3470
|
+
}) : null,
|
|
3471
|
+
props.subtitle ? /* @__PURE__ */ jsx("p", {
|
|
3355
3472
|
className: `${classPrefix}-portal-auth-text`,
|
|
3356
|
-
children: subtitle
|
|
3357
|
-
}),
|
|
3473
|
+
children: props.subtitle
|
|
3474
|
+
}) : null,
|
|
3358
3475
|
/* @__PURE__ */ jsx("input", {
|
|
3359
3476
|
type: "email",
|
|
3360
3477
|
className: classPrefix === "cp" ? "cp-input" : `${classPrefix}-form__input`,
|
|
3361
3478
|
placeholder: "your@email.com",
|
|
3362
|
-
value: email,
|
|
3363
|
-
onChange: (
|
|
3364
|
-
autoFocus: !compact,
|
|
3479
|
+
value: props.email,
|
|
3480
|
+
onChange: (event) => props.onEmailChange(event.target.value),
|
|
3481
|
+
autoFocus: !props.compact,
|
|
3365
3482
|
required: true,
|
|
3366
|
-
disabled: loading
|
|
3483
|
+
disabled: props.loading
|
|
3367
3484
|
}),
|
|
3368
|
-
|
|
3369
|
-
|
|
3370
|
-
|
|
3485
|
+
/* @__PURE__ */ jsx(MagicLinkFormFeedback, {
|
|
3486
|
+
classPrefix,
|
|
3487
|
+
error: props.error,
|
|
3488
|
+
state: props.state
|
|
3371
3489
|
}),
|
|
3372
3490
|
/* @__PURE__ */ jsx(MagicLinkButton, {
|
|
3373
3491
|
themed: classPrefix === "cp",
|
|
3374
3492
|
type: "submit",
|
|
3375
3493
|
variant: "primary",
|
|
3376
3494
|
className: `${classPrefix}-modal-btn`,
|
|
3377
|
-
label: loading ? "Sending..." : buttonText,
|
|
3378
|
-
disabled: !email.trim() || loading
|
|
3495
|
+
label: props.loading ? "Sending..." : props.buttonText,
|
|
3496
|
+
disabled: !props.email.trim() || props.loading
|
|
3379
3497
|
})
|
|
3380
3498
|
]
|
|
3381
3499
|
});
|
|
3382
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
|
+
}
|
|
3383
3582
|
function getMagicLinkErrorMessage(error) {
|
|
3384
|
-
return error instanceof
|
|
3583
|
+
return error instanceof BlockApiError ? error.message : "We couldn’t send the sign-in link. Please try again.";
|
|
3385
3584
|
}
|
|
3386
3585
|
//#endregion
|
|
3387
3586
|
//#region ../blocks/src/system/runtime/nodes/event-registration/ErrorStep.tsx
|
|
@@ -3690,19 +3889,19 @@ function isExistingRegistrationBlocking$1(wizard) {
|
|
|
3690
3889
|
}
|
|
3691
3890
|
function resolveTicketSelectionContinueLabel(input) {
|
|
3692
3891
|
if (input.isCheckingExistingRegistration) return "Checking registration...";
|
|
3892
|
+
if (input.ticketTypeSelectionBlocked) return "Choose a ticket";
|
|
3693
3893
|
if (input.registrationOptionsPending) return "Checking availability...";
|
|
3694
3894
|
if (input.registrationOptionsFailed) return "Availability unavailable";
|
|
3695
3895
|
if (input.hasExistingRegistration) return resolveExistingRegistrationLabel(input.wizard);
|
|
3696
|
-
if (input.ticketTypeSelectionBlocked) return "Choose a ticket";
|
|
3697
3896
|
return "Continue";
|
|
3698
3897
|
}
|
|
3699
3898
|
function SelectTicketsActions(props) {
|
|
3700
3899
|
const { wizard } = props;
|
|
3701
|
-
const
|
|
3900
|
+
const ticketTypeSelectionBlocked = wizard.ticketTypeSelectionRequired && !wizard.hasValidTicketSelection;
|
|
3901
|
+
const registrationOptionsPending = !ticketTypeSelectionBlocked && ["idle", "loading"].includes(wizard.registrationOptionsState.tag);
|
|
3702
3902
|
const registrationOptionsFailed = wizard.registrationOptionsState.tag === "failed";
|
|
3703
3903
|
const isCheckingExistingRegistration = wizard.portalAuthState === "authenticated" && wizard.existingRegistrationLoading;
|
|
3704
3904
|
const hasExistingRegistration = isExistingRegistrationBlocking$1(wizard);
|
|
3705
|
-
const ticketTypeSelectionBlocked = wizard.ticketTypeSelectionRequired && !wizard.hasValidTicketSelection;
|
|
3706
3905
|
const isContinueDisabled = registrationOptionsPending || registrationOptionsFailed || isCheckingExistingRegistration || hasExistingRegistration || ticketTypeSelectionBlocked;
|
|
3707
3906
|
const continueLabel = resolveTicketSelectionContinueLabel({
|
|
3708
3907
|
wizard,
|
|
@@ -5490,8 +5689,8 @@ function StepIndicator(props) {
|
|
|
5490
5689
|
*
|
|
5491
5690
|
* Displays registration confirmation with a success icon and message.
|
|
5492
5691
|
*/
|
|
5493
|
-
const SuccessStep = ({ title,
|
|
5494
|
-
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, {
|
|
5495
5694
|
tone: variant === "info" ? "info" : "success",
|
|
5496
5695
|
className: "er-center",
|
|
5497
5696
|
iconClassName: "er-icon",
|
|
@@ -5531,12 +5730,18 @@ const SuccessStep = ({ title, message, variant = "success", mailingListSignupNot
|
|
|
5531
5730
|
})
|
|
5532
5731
|
}),
|
|
5533
5732
|
title: title ?? (variant === "info" ? "Already Registered" : "Registration Confirmed!"),
|
|
5534
|
-
body:
|
|
5733
|
+
body: /* @__PURE__ */ jsx(BookingConfirmation, {
|
|
5734
|
+
demoEmailSuppressed,
|
|
5735
|
+
email: customerEmail,
|
|
5736
|
+
copy,
|
|
5737
|
+
messagePresentation: { kind: "plain" },
|
|
5738
|
+
noteClassName: "er-text--muted"
|
|
5739
|
+
}),
|
|
5535
5740
|
secondaryBody: mailingListSignupNote ? /* @__PURE__ */ jsx(BookingMailingListNote, {
|
|
5536
5741
|
note: mailingListSignupNote,
|
|
5537
5742
|
context
|
|
5538
5743
|
}) : void 0
|
|
5539
|
-
});
|
|
5744
|
+
}) });
|
|
5540
5745
|
};
|
|
5541
5746
|
//#endregion
|
|
5542
5747
|
//#region ../blocks/src/system/runtime/nodes/event-registration/VerifyingPaymentStep.tsx
|
|
@@ -5708,7 +5913,8 @@ function EventRegistrationTerminalState(props) {
|
|
|
5708
5913
|
}) : null;
|
|
5709
5914
|
case "success": return /* @__PURE__ */ jsx(EventRegistrationSuccess, {
|
|
5710
5915
|
wizard,
|
|
5711
|
-
fallbackMessage: props.successMessage
|
|
5916
|
+
fallbackMessage: props.successMessage,
|
|
5917
|
+
demoEmailSuppressed: props.demoEmailSuppressed
|
|
5712
5918
|
});
|
|
5713
5919
|
case "error": return /* @__PURE__ */ jsx(ErrorStep, {
|
|
5714
5920
|
message: wizard.errorMessage,
|
|
@@ -5725,12 +5931,15 @@ function EventRegistrationTerminalState(props) {
|
|
|
5725
5931
|
function EventRegistrationSuccess(props) {
|
|
5726
5932
|
const result = props.wizard.registrationResult;
|
|
5727
5933
|
if (!result) return null;
|
|
5934
|
+
const copy = getRegistrationSuccessCopy(result, props.fallbackMessage);
|
|
5728
5935
|
return /* @__PURE__ */ jsx(SuccessStep, {
|
|
5729
5936
|
title: result.title,
|
|
5730
5937
|
variant: result.variant,
|
|
5731
|
-
|
|
5938
|
+
copy,
|
|
5732
5939
|
mailingListSignupNote: result.mailingListSignupNote,
|
|
5733
|
-
context: result.status === "waitlist" ? "waitlist" : "booking"
|
|
5940
|
+
context: result.status === "waitlist" ? "waitlist" : "booking",
|
|
5941
|
+
demoEmailSuppressed: props.demoEmailSuppressed,
|
|
5942
|
+
customerEmail: props.wizard.formData.email
|
|
5734
5943
|
});
|
|
5735
5944
|
}
|
|
5736
5945
|
function EventRegistrationSurface(props) {
|
|
@@ -5778,109 +5987,12 @@ function EventRegistrationSurface(props) {
|
|
|
5778
5987
|
}), /* @__PURE__ */ jsx(EventRegistrationTerminalState, {
|
|
5779
5988
|
wizard,
|
|
5780
5989
|
supportEmail: props.supportEmail,
|
|
5781
|
-
successMessage: props.successMessage
|
|
5990
|
+
successMessage: props.successMessage,
|
|
5991
|
+
demoEmailSuppressed: props.demoEmailSuppressed
|
|
5782
5992
|
})]
|
|
5783
5993
|
});
|
|
5784
5994
|
}
|
|
5785
5995
|
//#endregion
|
|
5786
|
-
//#region ../blocks/src/system/runtime/nodes/event-registration/EventRegistrationBookingLayer.tsx
|
|
5787
|
-
function BookingEntry(props) {
|
|
5788
|
-
const base = props.variant === "teaser" ? "er-booking-teaser" : "er-booking-bar";
|
|
5789
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("div", {
|
|
5790
|
-
className: `${base}__info`,
|
|
5791
|
-
children: [
|
|
5792
|
-
/* @__PURE__ */ jsx("span", {
|
|
5793
|
-
className: `${base}__title`,
|
|
5794
|
-
children: "Book this event"
|
|
5795
|
-
}),
|
|
5796
|
-
props.summary && /* @__PURE__ */ jsx("span", {
|
|
5797
|
-
className: `${base}__meta`,
|
|
5798
|
-
children: props.summary
|
|
5799
|
-
}),
|
|
5800
|
-
props.variant === "teaser" && props.ticketCurrency && props.ticketTypes.length > 0 ? /* @__PURE__ */ jsx("div", {
|
|
5801
|
-
className: "er-booking-teaser__tickets",
|
|
5802
|
-
children: props.ticketTypes.map((ticketType) => /* @__PURE__ */ jsxs("div", {
|
|
5803
|
-
className: "er-booking-teaser__ticket",
|
|
5804
|
-
children: [/* @__PURE__ */ jsx("span", {
|
|
5805
|
-
className: "er-booking-teaser__ticket-name",
|
|
5806
|
-
children: ticketType.name
|
|
5807
|
-
}), /* @__PURE__ */ jsx("strong", { children: props.formatTicketPrice(ticketType) })]
|
|
5808
|
-
}, ticketType.pricingOptionId))
|
|
5809
|
-
}) : null
|
|
5810
|
-
]
|
|
5811
|
-
}), /* @__PURE__ */ jsx(ThemedButton, {
|
|
5812
|
-
type: "button",
|
|
5813
|
-
variant: props.buttonVariant,
|
|
5814
|
-
size: "md",
|
|
5815
|
-
extraClassName: `${base}__cta`,
|
|
5816
|
-
label: "Book now",
|
|
5817
|
-
onClick: props.onOpen
|
|
5818
|
-
})] });
|
|
5819
|
-
}
|
|
5820
|
-
function EventRegistrationBookingLayer(props) {
|
|
5821
|
-
const entryProps = {
|
|
5822
|
-
summary: [props.priceLabel, props.availabilityLabel].filter(Boolean).join(" · "),
|
|
5823
|
-
ticketTypes: props.ticketTypes,
|
|
5824
|
-
ticketCurrency: props.ticketCurrency,
|
|
5825
|
-
buttonVariant: props.buttonVariant,
|
|
5826
|
-
formatTicketPrice: props.formatTicketPrice,
|
|
5827
|
-
onOpen: props.onOpen
|
|
5828
|
-
};
|
|
5829
|
-
const floatingBar = !props.overlayOpen && props.isWizardStep ? /* @__PURE__ */ jsx("div", {
|
|
5830
|
-
className: "er-booking-bar",
|
|
5831
|
-
children: /* @__PURE__ */ jsx("div", {
|
|
5832
|
-
className: "er-booking-bar__inner",
|
|
5833
|
-
children: /* @__PURE__ */ jsx(BookingEntry, {
|
|
5834
|
-
...entryProps,
|
|
5835
|
-
variant: "bar"
|
|
5836
|
-
})
|
|
5837
|
-
})
|
|
5838
|
-
}) : null;
|
|
5839
|
-
const floatingLayer = props.portalRoot ? createPortal(/* @__PURE__ */ jsx("div", {
|
|
5840
|
-
className: props.registrationRootClassName,
|
|
5841
|
-
"data-block": "event-registration",
|
|
5842
|
-
children: floatingBar
|
|
5843
|
-
}), props.portalRoot) : floatingBar;
|
|
5844
|
-
const overlayLayer = props.overlayOpen ? /* @__PURE__ */ jsx(ModalShell, {
|
|
5845
|
-
title: "Book this event",
|
|
5846
|
-
titleId: "event-registration-booking-title",
|
|
5847
|
-
onClose: props.onClose,
|
|
5848
|
-
portal: props.portalRoot != null,
|
|
5849
|
-
portalRoot: props.portalRoot,
|
|
5850
|
-
portalWrapperClassName: props.registrationRootClassName,
|
|
5851
|
-
portalWrapperProps: { "data-block": "event-registration" },
|
|
5852
|
-
overlayClassName: "er-booking-overlay",
|
|
5853
|
-
modalClassName: "er-booking-overlay__panel",
|
|
5854
|
-
renderHeader: ({ closeButtonRef, onClose, title, titleId }) => /* @__PURE__ */ jsxs("div", {
|
|
5855
|
-
className: "er-booking-overlay__header",
|
|
5856
|
-
children: [/* @__PURE__ */ jsx("h2", {
|
|
5857
|
-
className: "er-booking-overlay__title",
|
|
5858
|
-
id: titleId,
|
|
5859
|
-
children: title
|
|
5860
|
-
}), /* @__PURE__ */ jsx("button", {
|
|
5861
|
-
ref: closeButtonRef,
|
|
5862
|
-
type: "button",
|
|
5863
|
-
className: "er-booking-overlay__close",
|
|
5864
|
-
onClick: onClose,
|
|
5865
|
-
"aria-label": "Close booking",
|
|
5866
|
-
children: "×"
|
|
5867
|
-
})]
|
|
5868
|
-
}),
|
|
5869
|
-
children: props.overlaySurface
|
|
5870
|
-
}) : null;
|
|
5871
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5872
|
-
props.isWizardStep && /* @__PURE__ */ jsx("div", {
|
|
5873
|
-
className: "er-booking-teaser",
|
|
5874
|
-
children: /* @__PURE__ */ jsx(BookingEntry, {
|
|
5875
|
-
...entryProps,
|
|
5876
|
-
variant: "teaser"
|
|
5877
|
-
})
|
|
5878
|
-
}),
|
|
5879
|
-
floatingLayer,
|
|
5880
|
-
overlayLayer
|
|
5881
|
-
] });
|
|
5882
|
-
}
|
|
5883
|
-
//#endregion
|
|
5884
5996
|
//#region ../blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizard.tsx
|
|
5885
5997
|
const EVENT_PORTAL_AUTH_COPY = {
|
|
5886
5998
|
membership: {
|
|
@@ -5893,6 +6005,16 @@ const EVENT_PORTAL_AUTH_COPY = {
|
|
|
5893
6005
|
buttonText: "Email me a login link to continue →"
|
|
5894
6006
|
}
|
|
5895
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
|
+
}
|
|
5896
6018
|
function getActiveTicketTypes(event) {
|
|
5897
6019
|
return event?.pricing.kind === "tiered" ? event.pricing.options.filter((ticketType) => ticketType.isActive).sort((left, right) => left.sortOrder - right.sortOrder).map(({ id, ...ticketType }) => ({
|
|
5898
6020
|
...ticketType,
|
|
@@ -5940,11 +6062,18 @@ function useConfiguredEventRegistrationWizard(props) {
|
|
|
5940
6062
|
});
|
|
5941
6063
|
}
|
|
5942
6064
|
function EventRegistrationWizard(props) {
|
|
5943
|
-
const
|
|
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;
|
|
5944
6074
|
const showSpamProtection = spamProtectionEnabled ?? isSpamProtectionEnabled();
|
|
5945
6075
|
const registrationRootClassName = `event-registration ${className || ""}`;
|
|
5946
6076
|
const registrationRootRef = React.useRef(null);
|
|
5947
|
-
const wizard = useConfiguredEventRegistrationWizard(props);
|
|
5948
6077
|
useEventCheckoutHandoffRestore(wizard.step === "redirecting");
|
|
5949
6078
|
const [bookingOverlayOpen, setBookingOverlayOpen] = useState(false);
|
|
5950
6079
|
const [floatingPortalRoot, setFloatingPortalRoot] = useState(null);
|
|
@@ -6010,10 +6139,7 @@ function EventRegistrationWizard(props) {
|
|
|
6010
6139
|
const summaryPriceLabel = summaryEvent ? formatEventPriceDisplay(summaryEvent.pricing) : null;
|
|
6011
6140
|
const summaryAvailabilityLabel = getAvailabilityLabel(summaryEvent, wizard.selectedAttendanceMode);
|
|
6012
6141
|
const waitlistClaimRequiresPortalLogin = wizard.waitlistClaim.requiresPortalLogin && wizard.portalAuthState !== "authenticated" && wizard.portalAuthState !== "checking";
|
|
6013
|
-
const portalAuthCopy = waitlistClaimRequiresPortalLogin
|
|
6014
|
-
...EVENT_PORTAL_AUTH_COPY["waitlist-claim"],
|
|
6015
|
-
description: wizard.waitlistClaim.loginMessage ?? "Log in to continue with your waitlist claim."
|
|
6016
|
-
} : EVENT_PORTAL_AUTH_COPY.membership;
|
|
6142
|
+
const portalAuthCopy = getPortalAuthCopy(waitlistClaimRequiresPortalLogin, wizard.waitlistClaim.loginMessage, props.demoEmailSuppressed);
|
|
6017
6143
|
const showPortalAuthPrompt = waitlistClaimRequiresPortalLogin || wizard.step === "select-tickets" && wizard.portalAuthState !== "authenticated" && wizard.portalAuthState !== "checking" && summaryEventPricingType !== "free";
|
|
6018
6144
|
const renderRegistrationSurface = (variant) => /* @__PURE__ */ jsx(EventRegistrationSurface, {
|
|
6019
6145
|
variant,
|
|
@@ -6030,7 +6156,8 @@ function EventRegistrationWizard(props) {
|
|
|
6030
6156
|
buttonText,
|
|
6031
6157
|
buttonVariant,
|
|
6032
6158
|
supportEmail,
|
|
6033
|
-
successMessage
|
|
6159
|
+
successMessage,
|
|
6160
|
+
demoEmailSuppressed: props.demoEmailSuppressed
|
|
6034
6161
|
});
|
|
6035
6162
|
const isEmbedded = (className ?? "").includes("event-registration--embedded");
|
|
6036
6163
|
const overlayEnabled = props.overlayEnabled === true;
|