@riverbankcms/sdk 0.136.0 → 0.138.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 +109 -0
- package/README.md +7 -4
- package/dist/{PreviewEditorSidebar-BU5ZlhQR.mjs → PreviewEditorSidebar-BVPur_CU.mjs} +12 -18
- package/dist/{PreviewEditorUI-9XkHL-bC.mjs → PreviewEditorUI-DLhWX8oh.mjs} +3 -3
- package/dist/{PreviewQueryProvider-wbEpXryy.mjs → PreviewQueryProvider-BguJY1SW.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-CnWmj-2B.mjs → SdkPreviewModeRuntime-Tda6qw4z.mjs} +1375 -495
- package/dist/{SiteChromeCustomizeContext-B6d5zkog.mjs → SiteChromeCustomizeContext-BHFgMjde.mjs} +35665 -33602
- package/dist/_dts/ai/src/contracts/proposals.d.ts +7226 -3057
- package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +1223 -811
- package/dist/_dts/ai/src/designer/themePatch.d.ts +5 -10
- package/dist/_dts/api/src/accessAdmin.d.ts +16 -18
- package/dist/_dts/api/src/accountApi.d.ts +49 -2
- package/dist/_dts/api/src/appointmentServiceContracts.d.ts +83 -0
- package/dist/_dts/api/src/appointmentServiceLocation.d.ts +12 -0
- package/dist/_dts/api/src/appointmentServiceVisibility.d.ts +14 -0
- package/dist/_dts/api/src/appointmentSetup.d.ts +8 -0
- package/dist/_dts/api/src/bookingConfig.d.ts +35 -87
- package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +1 -1
- package/dist/_dts/api/src/bookingOperations.d.ts +2 -69
- package/dist/_dts/api/src/bookingRecords.d.ts +2 -2
- package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +2 -2
- package/dist/_dts/api/src/bookingServicePricing.d.ts +47 -0
- package/dist/_dts/api/src/bookings.d.ts +2 -2
- package/dist/_dts/api/src/cache-tags.d.ts +7 -2
- package/dist/_dts/api/src/common/index.d.ts +1 -0
- package/dist/_dts/api/src/common/zodFieldErrors.d.ts +34 -0
- package/dist/_dts/api/src/communications.d.ts +14 -8
- package/dist/_dts/api/src/contentRuntime.d.ts +3 -6
- package/dist/_dts/api/src/domainConnection.d.ts +41 -0
- package/dist/_dts/api/src/endpoints.d.ts +1636 -1637
- package/dist/_dts/api/src/eventAttendanceLabels.d.ts +2 -2
- package/dist/_dts/api/src/eventManagementContracts.d.ts +10 -14
- package/dist/_dts/api/src/index.d.ts +11 -9
- package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
- package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
- package/dist/_dts/api/src/media.d.ts +19 -2
- package/dist/_dts/api/src/occurrenceScheduling.d.ts +1 -1
- package/dist/_dts/api/src/participantMessaging.d.ts +3 -3
- package/dist/_dts/api/src/public/endpoints.d.ts +1 -1
- package/dist/_dts/api/src/publicBookingAvailabilityEndpointDefinitions.d.ts +62 -0
- package/dist/_dts/api/src/publicBookingService.d.ts +109 -2
- package/dist/_dts/api/src/publicEventCheckoutEndpointDefinitions.d.ts +27 -0
- package/dist/_dts/api/src/publicEventEndpointDefinitions.d.ts +7 -0
- package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +2 -1
- package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +30 -148
- package/dist/_dts/api/src/publicExperience/sharedTypes.d.ts +8 -26
- package/dist/_dts/api/src/publicExperience/siteEndpoints.d.ts +5 -13
- package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +2 -3
- package/dist/_dts/api/src/schemas/admin-allowed-domains.d.ts +76 -0
- package/dist/_dts/api/src/schemas/admin-observability-logs.d.ts +61 -0
- package/dist/_dts/api/src/schemas/admin-users.d.ts +80 -0
- package/dist/_dts/api/src/schemas/newsletter-memberships.d.ts +98 -0
- package/dist/_dts/api/src/schemas/sdk-entries.d.ts +128 -0
- package/dist/_dts/api/src/schemas/site-api-keys.d.ts +112 -0
- package/dist/_dts/api/src/schemas/support.d.ts +35 -0
- package/dist/_dts/api/src/sdk-event-booking-offer.d.ts +14 -0
- package/dist/_dts/api/src/sdk-event-payment-terms.d.ts +4 -16
- package/dist/_dts/api/src/sdk-event-upsert.d.ts +11 -21
- package/dist/_dts/api/src/sdkContracts.d.ts +8 -23
- package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +37 -0
- package/dist/_dts/api/src/sdkMediaContracts.d.ts +40 -0
- package/dist/_dts/api/src/sdkMediaEndpointDefinitions.d.ts +66 -0
- package/dist/_dts/api/src/sdkThemeWire.d.ts +157 -146
- package/dist/_dts/api/src/siteInfrastructure.d.ts +37 -37
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +35 -54
- package/dist/_dts/api/src/siteOnboarding.d.ts +3 -3
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +38 -16
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +37 -17
- package/dist/_dts/api/src/types.d.ts +2 -2
- package/dist/_dts/api/src/{wholeSeriesOfferings.d.ts → wholeSeriesRuns.d.ts} +11 -67
- package/dist/_dts/block-form/src/FormRenderer.d.ts +3 -1
- package/dist/_dts/block-form/src/backend/store-backend.d.ts +2 -1
- package/dist/_dts/block-form/src/backend/types.d.ts +2 -0
- package/dist/_dts/block-form/src/context/FormFocusContext.d.ts +7 -0
- package/dist/_dts/block-form/src/index.d.ts +2 -0
- package/dist/_dts/block-form/src/manifest/ManifestForm.d.ts +2 -1
- package/dist/_dts/block-form/src/utils/promotedFieldBackend.d.ts +8 -0
- package/dist/_dts/block-form/src/utils/promotedFieldPlan.d.ts +18 -0
- package/dist/_dts/block-form/src/utils/resolvePromotedFields.d.ts +8 -1
- package/dist/_dts/blocks/src/BlockErrorBoundary.d.ts +46 -0
- package/dist/_dts/blocks/src/PageRenderer.d.ts +2 -141
- package/dist/_dts/blocks/src/contracts/index.d.ts +2 -0
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +12 -6
- package/dist/_dts/blocks/src/index.d.ts +1 -0
- package/dist/_dts/blocks/src/pageRenderAudience.d.ts +54 -0
- package/dist/_dts/blocks/src/pageRenderDiagnostics.d.ts +26 -0
- package/dist/_dts/blocks/src/pageRenderPlan.d.ts +116 -0
- package/dist/_dts/blocks/src/pageRenderPreparation.d.ts +109 -0
- package/dist/_dts/blocks/src/pageRendererBoundaries.d.ts +1 -0
- package/dist/_dts/blocks/src/pageRendererContracts.d.ts +154 -0
- package/dist/_dts/blocks/src/portal/types.d.ts +1 -1
- package/dist/_dts/blocks/src/server.d.ts +1 -0
- package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +12 -20
- package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/events/eventCalendarDataLoaders.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +95 -0
- package/dist/_dts/blocks/src/system/blocks/events/shared/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/blocks/events/shared/runGrouping.d.ts +37 -0
- package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +1046 -773
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +59 -46
- package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -3
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +161 -161
- package/dist/_dts/blocks/src/system/blocks/offerings-preview/model.d.ts +13 -6
- package/dist/_dts/blocks/src/system/blocks/offerings-preview/scheduleSummary.d.ts +10 -4
- package/dist/_dts/blocks/src/system/constants/buttonRoles.d.ts +2 -2
- package/dist/_dts/blocks/src/system/constants/events.d.ts +4 -0
- package/dist/_dts/blocks/src/system/customize/facets.d.ts +4 -4
- package/dist/_dts/blocks/src/system/data/loaderEndpoints.d.ts +1 -1
- package/dist/_dts/blocks/src/system/data/publicLoaderCachePolicy.d.ts +5 -9
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +83 -83
- package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +12 -3
- package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -8
- package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/api/types/core.d.ts +13 -0
- package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +12 -20
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +32 -37
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +15 -18
- package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.d.ts +11 -8
- package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +38 -22
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +7 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-details/WholeSeriesPricingDisplay.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-details/logic.d.ts +16 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/ErrorStep.d.ts +3 -5
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizardActions.d.ts +4 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PaymentSelectionStep.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +5 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.planning.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventScope.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationCompletion.d.ts +15 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationDerivations.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationErrorPresentation.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationErrorRecovery.d.ts +25 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationEventAdapter.d.ts +14 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationSurface.d.ts +3 -21
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationWizardContext.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/siteCreditPreview.d.ts +0 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/ticketSelectionLines.d.ts +14 -16
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +13 -15
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +7 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +9 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +25 -23
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useWaitlistClaimRestoration.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/utils.d.ts +11 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +8 -13
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +11 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/capacity.d.ts +164 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/cta.d.ts +29 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +47 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/index.d.ts +14 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/people.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/pricing.d.ts +24 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/OfferingTitle.d.ts +11 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekAgendaView.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekBoardView.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +1080 -560
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventProductEligibility.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/index.d.ts +3 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/listingLayout.d.ts +23 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/offerings-preview.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +7 -7
- package/dist/_dts/blocks/src/system/transforms/registry/eventCalendar.d.ts +11 -0
- package/dist/_dts/commerce/src/moneyReport.d.ts +1 -1
- package/dist/_dts/commerce/src/purchase/checkoutErrorCodes.d.ts +1 -1
- package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +57 -0
- package/dist/_dts/commerce/src/purchase/eventOrderOptionSnapshot.d.ts +3 -0
- package/dist/_dts/commerce/src/purchase/index.d.ts +1 -0
- package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +6 -3
- package/dist/_dts/commerce/src/purchase/types.d.ts +3 -2
- package/dist/_dts/commerce/src/waitlists.d.ts +1 -1
- package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +4 -0
- package/dist/_dts/content-editor/src/controller/useBlockedPublishPlan.d.ts +11 -0
- package/dist/_dts/content-editor/src/hooks/applyBlockedPublishPlan.d.ts +1 -1
- package/dist/_dts/content-editor/src/hooks/blockedPublishPlan.d.ts +13 -5
- package/dist/_dts/content-editor/src/hooks/useEntryActions.d.ts +5 -1
- package/dist/_dts/content-editor/src/hooks/validateBlocksForPublish.d.ts +34 -2
- package/dist/_dts/content-editor/src/index.d.ts +2 -1
- package/dist/_dts/content-editor/src/ui/blockValidationManifestRegistry.d.ts +2 -0
- package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +4 -2
- package/dist/_dts/content-editor/src/ui/stores/types.d.ts +27 -5
- package/dist/_dts/content-model/src/content-types/schema.d.ts +3 -3
- package/dist/_dts/content-model/src/templates/defaults.d.ts +11 -0
- package/dist/_dts/core/src/branded.d.ts +28 -9
- package/dist/_dts/core/src/event-booking-offer-parser.d.ts +82 -0
- package/dist/_dts/core/src/event-booking-offer.d.ts +89 -0
- package/dist/_dts/core/src/event-page-surface-subject.d.ts +81 -4
- package/dist/_dts/core/src/event-pricing.d.ts +81 -89
- package/dist/_dts/core/src/index.d.ts +3 -0
- package/dist/_dts/core/src/non-empty-array.d.ts +3 -0
- package/dist/_dts/core/src/whole-series-run-schedule.d.ts +92 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +495 -279
- package/dist/_dts/db/src/index.d.ts +1 -0
- package/dist/_dts/db/src/utils/postgrestFilter.d.ts +2 -0
- package/dist/_dts/editor-blocks/src/BlockForm.d.ts +2 -6
- package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +2 -2
- package/dist/_dts/editor-blocks/src/block-editor/BlockSettingsModal.d.ts +4 -2
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockValidationManifests.d.ts +1 -0
- package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +22 -7
- package/dist/_dts/editor-blocks/src/block-editor/useSettingsFieldFocus.d.ts +18 -0
- package/dist/_dts/media-core/src/bulkDeletePlanning.d.ts +4 -0
- package/dist/_dts/media-core/src/fileDomain.d.ts +3 -0
- package/dist/_dts/preview-next/src/client/blocks/previewBatchLoaderParams.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +3 -2
- package/dist/_dts/preview-next/src/client/preview/siteChromeBrandPreferences.d.ts +1 -1
- package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlSaveRequest.d.ts +51 -0
- package/dist/_dts/preview-next/src/client/preview/siteChromeSavePlan.d.ts +24 -2
- package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +23 -1
- package/dist/_dts/preview-next/src/client/preview/usePersistedHeaderPreferences.d.ts +8 -0
- package/dist/_dts/sdk/src/client/{eventSubrouteReadOperations.d.ts → publicEventReadOperations.d.ts} +4 -3
- package/dist/_dts/sdk/src/client/types.d.ts +6 -10
- package/dist/_dts/sdk/src/config/types.d.ts +1 -1
- package/dist/_dts/sdk/src/config/validation.d.ts +3 -3
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +5 -0
- package/dist/_dts/sdk/src/data/prefetchBlockData.d.ts +2 -3
- package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +8 -8
- package/dist/_dts/sdk/src/next/tags.d.ts +5 -8
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +2 -26
- package/dist/_dts/sdk/src/rendering/helpers/footerPageOutline.d.ts +9 -1
- package/dist/_dts/sdk/src/rendering/index.d.ts +1 -0
- package/dist/_dts/sdk/src/rendering/islands/types.d.ts +6 -53
- package/dist/_dts/sdk/src/rendering/server.d.ts +1 -0
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/accordions/types.d.ts +5 -5
- package/dist/_dts/theme-core/src/buttons/styles/recipes/flatInk.d.ts +25 -25
- package/dist/_dts/theme-core/src/buttons/styles/registry.d.ts +25 -25
- package/dist/_dts/theme-core/src/buttons/styles/selection.d.ts +7 -7
- package/dist/_dts/theme-core/src/buttons/types.d.ts +22 -22
- package/dist/_dts/theme-core/src/cards/types.d.ts +49 -49
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/gradients/types.d.ts +5 -0
- package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +26 -3
- package/dist/_dts/theme-core/src/inputs/types.d.ts +2 -2
- package/dist/_dts/theme-core/src/interactive/baseSchema.d.ts +1 -1
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +195 -195
- package/dist/_dts/theme-core/src/navigation/types.d.ts +3 -3
- package/dist/_dts/theme-core/src/palette/colors.d.ts +1 -1
- package/dist/_dts/theme-core/src/palette/curated/types.d.ts +2 -2
- package/dist/_dts/theme-core/src/schema.d.ts +258 -257
- package/dist/_dts/theme-core/src/shared/componentStyles.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/cardRoleVocabulary.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/compilationPlan.d.ts +43 -3
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +10 -0
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +4 -4
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/headerBrandPresentation.d.ts +63 -0
- package/dist/_dts/theme-core/src/site-styles/headerBytesComparison.d.ts +30 -0
- package/dist/_dts/theme-core/src/site-styles/headerInteractionPalette.d.ts +50 -1
- package/dist/_dts/theme-core/src/site-styles/headerLayoutCatalog.d.ts +48 -9
- package/dist/_dts/theme-core/src/site-styles/headerPreferences.d.ts +162 -0
- package/dist/_dts/theme-core/src/site-styles/headerPreferencesPersistence.d.ts +73 -0
- package/dist/_dts/theme-core/src/site-styles/headerRecompile.d.ts +118 -0
- package/dist/_dts/theme-core/src/site-styles/headerStyleCompiler.d.ts +10 -1
- package/dist/_dts/theme-core/src/site-styles/headerStyleDefaults.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/headerStyleRecipe.d.ts +7 -0
- package/dist/_dts/theme-core/src/site-styles/index.d.ts +5 -0
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/siteChromeBackgrounds.d.ts +20 -1
- package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +43 -2
- package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +1 -1
- package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +3 -3
- package/dist/_dts/ui/src/badge.d.ts +1 -1
- package/dist/_dts/ui/src/button.d.ts +2 -2
- package/dist/client/{BookingConsentAgreement-DCch21a6.mjs → BookingConsentAgreement-DQUik1Mx.mjs} +2 -2
- package/dist/client/{DiscountCodeDisclosure-DIj1T59K.mjs → DiscountCodeDisclosure-CU67Q4vH.mjs} +1 -1
- package/dist/client/{EventCombined.client-BWVNlXTx.mjs → EventCombined.client-a02TXUgg.mjs} +233 -348
- package/dist/client/{EventListing.client-DVFCDe3i.mjs → EventListing.client-99qx7jFl.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-BY5mIHw9.mjs → LeafletStaticMap-CWzcq73L.mjs} +1 -1
- package/dist/client/{accordion-CK29E8rG.mjs → accordion-D1nb3-Oj.mjs} +1 -1
- package/dist/client/{bookingForm-DFvnet-N.mjs → bookingForm-BGrmLhaO.mjs} +5 -5
- package/dist/client/bookings.mjs +10555 -10475
- package/dist/client/{carousel-BVU5NQlb.mjs → carousel-DSmOx3ad.mjs} +1 -1
- package/dist/client/{cart-BNItcZVa.mjs → cart-COWeOIUk.mjs} +3 -3
- package/dist/client/{checkout-Bu6iCdkP.mjs → checkout-CeysaIJK.mjs} +3 -3
- package/dist/client/client.mjs +58968 -57441
- package/dist/client/{context-BImarOAq.mjs → context-DBzX85Xc.mjs} +46 -18
- package/dist/client/dates-DCYhZBlW.mjs +264 -0
- package/dist/client/{eventCalendar-DS2h-UXD.mjs → eventCalendar-BgsN73Ul.mjs} +21 -44
- package/dist/client/{eventCombined-Drt4Oq9p.mjs → eventCombined-DcZQAMQP.mjs} +3 -3
- package/dist/client/{eventDetails-Bl2vWgTX.mjs → eventDetails-BWwGJ54l.mjs} +131 -51
- package/dist/client/{eventListing-CS7PHY7v.mjs → eventListing-DqYqV8vp.mjs} +3 -3
- package/dist/client/{eventRegistration-D-j8eNy2.mjs → eventRegistration-DQGDgu_e.mjs} +1122 -803
- package/dist/client/{form-RMpoLTyr.mjs → form-ClfpasVT.mjs} +2 -2
- package/dist/client/{headerSection-BYE3Lb3k.mjs → headerSection-BuOMe98N.mjs} +2 -2
- package/dist/client/hooks.mjs +9630 -9526
- package/dist/client/{locationMap-BxSr7Kkh.mjs → locationMap-CEqu_sfa.mjs} +2 -2
- package/dist/client/{newsletterForm-DerbXwFC.mjs → newsletterForm-IbrHjMxy.mjs} +2 -2
- package/dist/client/pricing-xj7MPZlK.mjs +314 -0
- package/dist/client/{productDetail-4SZCLhAf.mjs → productDetail-vxqTt5Xj.mjs} +3 -3
- package/dist/client/{productList-D7AP4GNq.mjs → productList-OTdZu8sb.mjs} +3 -3
- package/dist/client/{propsDecoder-pzBeCh14.mjs → propsDecoder-CY9gGEF7.mjs} +786 -1194
- package/dist/client/rendering/client.mjs +11481 -10469
- package/dist/client/rendering/islands.mjs +17 -17
- package/dist/client/rendering.mjs +26871 -25232
- package/dist/client/{scrollToBlock-CduAKf8T.mjs → scrollToBlock--BFV6kl-.mjs} +1 -1
- package/dist/client/{shop-Cp5p_kGe.mjs → shop-CP4YbDL9.mjs} +6 -6
- package/dist/client/{shop-commerce-DicXYaYX.mjs → shop-commerce-APs4XBXE.mjs} +5 -5
- package/dist/client/{shop-commerce-store-CGWnpY4K.mjs → shop-commerce-store-CAVLxLFr.mjs} +1 -1
- package/dist/client/{shopShared-BDf9ljkm.mjs → shopShared-BnSRrwXI.mjs} +3 -3
- package/dist/client/{useEventFilters-DeeyGYuk.mjs → useEventFilters-1a1by4c8.mjs} +33 -18
- package/dist/preview-next/before-render.mjs +186 -148
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/keepAlive.mjs +186 -148
- package/dist/preview-next/middleware.mjs +186 -148
- package/dist/{previewAuthStore-DbqBol0V.mjs → previewAuthStore-BkEgnYPP.mjs} +186 -148
- package/dist/{sdk-runtime-19MO27F0.mjs → sdk-runtime-DwGfsT0S.mjs} +2 -2
- package/dist/{separator-DaPLtJ1f.mjs → separator-BeqDLneQ.mjs} +1 -1
- package/dist/server/components.mjs +53243 -51879
- package/dist/server/config-validation.mjs +1015 -906
- package/dist/server/config.mjs +1019 -910
- package/dist/server/data.mjs +10304 -10200
- package/dist/server/index.mjs +217 -198
- package/dist/server/next/tags.mjs +18 -4
- package/dist/server/next.mjs +62787 -61617
- package/dist/server/page-converter.mjs +797 -917
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +52557 -51365
- package/dist/server/rendering.mjs +54373 -53054
- package/dist/server/routing.mjs +13274 -13142
- package/dist/server/server.mjs +1076 -1154
- package/dist/server/theme-bridge.mjs +69 -9
- package/dist/server/theme.mjs +27 -8
- package/dist/styles/index.css +32 -1
- package/package.json +1 -1
- package/dist/_dts/api/src/publicExperience/wholeSeriesEndpoints.d.ts +0 -65
- package/dist/_dts/api/src/publicWholeSeriesEndpointDefinitions.d.ts +0 -20
- package/dist/_dts/api/src/sdk-event-pricing.d.ts +0 -61
- package/dist/_dts/blocks/src/system/blocks/events/whole-series/index.d.ts +0 -3
- package/dist/_dts/blocks/src/system/blocks/events/whole-series/pricing.d.ts +0 -50
- package/dist/_dts/blocks/src/system/blocks/events/whole-series/schemas.d.ts +0 -135
- package/dist/_dts/blocks/src/system/blocks/events/whole-series/types.d.ts +0 -87
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCapacity.d.ts +0 -48
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/pricing.d.ts +0 -17
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +0 -100
- package/dist/_dts/sdk/src/client/wholeSeriesReadOperations.d.ts +0 -11
- package/dist/_dts/sdk/src/public-api/wholeSeriesContracts.d.ts +0 -2
- /package/dist/_dts/blocks/src/system/runtime/nodes/events/{shared → domain}/destination.d.ts +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import { L as calendarWindowPageSchema } from "./propsDecoder-CY9gGEF7.mjs";
|
|
2
3
|
import { createContext, useContext, useMemo } from "react";
|
|
3
4
|
import { jsx } from "react/jsx-runtime";
|
|
4
5
|
//#region ../blocks/src/system/runtime/api/deduplication.ts
|
|
@@ -157,6 +158,10 @@ const BOOKINGS = {
|
|
|
157
158
|
}
|
|
158
159
|
};
|
|
159
160
|
const EVENTS = {
|
|
161
|
+
calendarWindow: {
|
|
162
|
+
path: "/public/sites/{siteId}/events/calendar-window",
|
|
163
|
+
method: "GET"
|
|
164
|
+
},
|
|
160
165
|
list: {
|
|
161
166
|
path: "/public/sites/{siteId}/events",
|
|
162
167
|
method: "GET"
|
|
@@ -189,17 +194,11 @@ const EVENTS = {
|
|
|
189
194
|
method: "POST"
|
|
190
195
|
}
|
|
191
196
|
};
|
|
192
|
-
const WHOLE_SERIES = {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
waitlistClaimResolve: {
|
|
198
|
-
path: "/public/sites/{siteId}/waitlists/claim/resolve",
|
|
199
|
-
method: "POST",
|
|
200
|
-
authScope: "portal"
|
|
201
|
-
}
|
|
202
|
-
};
|
|
197
|
+
const WHOLE_SERIES = { waitlistClaimResolve: {
|
|
198
|
+
path: "/public/sites/{siteId}/waitlists/claim/resolve",
|
|
199
|
+
method: "POST",
|
|
200
|
+
authScope: "portal"
|
|
201
|
+
} };
|
|
203
202
|
const SHOP = {
|
|
204
203
|
listProducts: {
|
|
205
204
|
path: "/public/sites/{siteId}/products",
|
|
@@ -453,13 +452,20 @@ function encodePublicProductCategorySelector(selector) {
|
|
|
453
452
|
}
|
|
454
453
|
}
|
|
455
454
|
/**
|
|
456
|
-
* Error thrown when an API request fails
|
|
455
|
+
* Error thrown when an API request fails.
|
|
456
|
+
*
|
|
457
|
+
* `fieldErrors` mirrors the envelope's `error.fieldErrors` when the response
|
|
458
|
+
* carried one, so callers can render per-field detail instead of only the
|
|
459
|
+
* top-level message. It is always an array — empty when the response had no
|
|
460
|
+
* field detail, or when what it carried was not a well-formed field error list.
|
|
457
461
|
*/
|
|
458
462
|
var BlockApiError = class extends Error {
|
|
459
|
-
constructor(message, status, code) {
|
|
463
|
+
constructor(message, status, code, tag, fieldErrors = []) {
|
|
460
464
|
super(message);
|
|
461
465
|
this.status = status;
|
|
462
466
|
this.code = code;
|
|
467
|
+
this.tag = tag;
|
|
468
|
+
this.fieldErrors = fieldErrors;
|
|
463
469
|
this.name = "BlockApiError";
|
|
464
470
|
}
|
|
465
471
|
};
|
|
@@ -486,12 +492,24 @@ async function parseJsonBody(response) {
|
|
|
486
492
|
return { kind: "invalid-json" };
|
|
487
493
|
}
|
|
488
494
|
}
|
|
495
|
+
function isFieldError(value) {
|
|
496
|
+
return isRecord(value) && !Array.isArray(value) && typeof value.field === "string" && typeof value.code === "string" && typeof value.message === "string";
|
|
497
|
+
}
|
|
498
|
+
function fieldErrorsFromUnknown(value) {
|
|
499
|
+
if (!Array.isArray(value)) return void 0;
|
|
500
|
+
return value.every(isFieldError) ? value : void 0;
|
|
501
|
+
}
|
|
489
502
|
function getBlockApiErrorDetails(data) {
|
|
490
503
|
if (!isRecord(data)) return {};
|
|
491
504
|
const nestedError = isRecord(data.error) ? data.error : void 0;
|
|
505
|
+
const message = typeof nestedError?.message === "string" ? nestedError.message : typeof data.message === "string" ? data.message : void 0;
|
|
506
|
+
const code = typeof nestedError?.code === "string" ? nestedError.code : typeof data.code === "string" ? data.code : void 0;
|
|
507
|
+
const fieldErrors = fieldErrorsFromUnknown(nestedError?.fieldErrors) ?? fieldErrorsFromUnknown(data.fieldErrors);
|
|
492
508
|
return {
|
|
493
|
-
message
|
|
494
|
-
code
|
|
509
|
+
message,
|
|
510
|
+
code,
|
|
511
|
+
tag: typeof nestedError?.tag === "string" ? nestedError.tag : void 0,
|
|
512
|
+
fieldErrors
|
|
495
513
|
};
|
|
496
514
|
}
|
|
497
515
|
function buildUnexpectedJsonResponseMessage(parseResult) {
|
|
@@ -510,7 +528,9 @@ async function extractErrorDetails(response) {
|
|
|
510
528
|
const details = getBlockApiErrorDetails(parseResult.value);
|
|
511
529
|
return {
|
|
512
530
|
message: details.message ?? fallbackMessage,
|
|
513
|
-
code: details.code
|
|
531
|
+
code: details.code,
|
|
532
|
+
tag: details.tag,
|
|
533
|
+
fieldErrors: details.fieldErrors
|
|
514
534
|
};
|
|
515
535
|
}
|
|
516
536
|
case "invalid-json": return { message: `${fallbackMessage} (received invalid JSON)` };
|
|
@@ -607,7 +627,7 @@ function createBlockApi(config) {
|
|
|
607
627
|
const response = await fetch(url, fetchOptions);
|
|
608
628
|
if (!response.ok) {
|
|
609
629
|
const details = await extractErrorDetails(response);
|
|
610
|
-
throw new BlockApiError(details.message, response.status, details.code);
|
|
630
|
+
throw new BlockApiError(details.message, response.status, details.code, details.tag, details.fieldErrors);
|
|
611
631
|
}
|
|
612
632
|
const json = await parseJsonApiResponse(response);
|
|
613
633
|
if (isApiSuccessResponse(json)) return json.data;
|
|
@@ -711,6 +731,14 @@ function createBlockApi(config) {
|
|
|
711
731
|
serviceId: params.serviceId
|
|
712
732
|
} });
|
|
713
733
|
},
|
|
734
|
+
async getPublicEventCalendarWindow(params = {}) {
|
|
735
|
+
const path = buildPath(EVENTS.calendarWindow.path, { siteId: requireSiteId() });
|
|
736
|
+
const result = await request(EVENTS.calendarWindow, {
|
|
737
|
+
path,
|
|
738
|
+
query: params
|
|
739
|
+
});
|
|
740
|
+
return calendarWindowPageSchema.parse(result);
|
|
741
|
+
},
|
|
714
742
|
async getPublicEvents(params) {
|
|
715
743
|
const sid = requireSiteId();
|
|
716
744
|
const path = buildPath(EVENTS.list.path, { siteId: sid });
|
|
@@ -1114,4 +1142,4 @@ function useBlockApi() {
|
|
|
1114
1142
|
return client;
|
|
1115
1143
|
}
|
|
1116
1144
|
//#endregion
|
|
1117
|
-
export { useBlockApi as n, BlockApiProvider as t };
|
|
1145
|
+
export { useBlockApi as n, BlockApiError as r, BlockApiProvider as t };
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import { $t as toBookingTimeZone, Ut as formatBookingDate, Wt as formatBookingDateParts, dn as assertNever, en as toScheduledBookingDateRange, it as resolveRuntimeEventDestination, qt as formatBookingTime, tn as toScheduledBookingDateTime } from "./propsDecoder-CY9gGEF7.mjs";
|
|
2
|
+
import { a as canJoinEventWaitlistOnAnyMode, p as isEventFull } from "./pricing-xj7MPZlK.mjs";
|
|
3
|
+
//#region ../blocks/src/system/runtime/nodes/events/domain/cta.ts
|
|
4
|
+
/**
|
|
5
|
+
* Booking call-to-action resolution for events: where an event links to and
|
|
6
|
+
* what the button says. Sold-out and waitlist decisions come from capacity.ts
|
|
7
|
+
* so cards, rows and the wizard never disagree.
|
|
8
|
+
*/
|
|
9
|
+
function closedEventBookingLabel(reason) {
|
|
10
|
+
switch (reason) {
|
|
11
|
+
case "occurrence_cancelled":
|
|
12
|
+
case "series_cancelled": return "Cancelled";
|
|
13
|
+
case "occurrence_completed":
|
|
14
|
+
case "series_completed": return "Completed";
|
|
15
|
+
case "series_draft":
|
|
16
|
+
case "series_archived":
|
|
17
|
+
case "parent_archived":
|
|
18
|
+
case "parent_inconsistent":
|
|
19
|
+
case "not_public":
|
|
20
|
+
case "already_started":
|
|
21
|
+
case "enrollment_closed": return "Registration closed";
|
|
22
|
+
default: return assertNever(reason);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function resolveEventHref(event) {
|
|
26
|
+
const destination = resolveRuntimeEventDestination(event);
|
|
27
|
+
return destination.kind === "external" ? destination.url : destination.path;
|
|
28
|
+
}
|
|
29
|
+
function resolveEventLinkProps(event) {
|
|
30
|
+
const href = resolveEventHref(event);
|
|
31
|
+
return resolveRuntimeEventDestination(event).kind === "external" ? {
|
|
32
|
+
href,
|
|
33
|
+
target: "_blank",
|
|
34
|
+
rel: "noopener noreferrer"
|
|
35
|
+
} : { href };
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Resolve the CTA state for an event.
|
|
39
|
+
* Shared by EventCard and EventCompactRow to keep sold-out, registration-closed,
|
|
40
|
+
* and course-specific defaults consistent.
|
|
41
|
+
*/
|
|
42
|
+
function resolveEventCta(event, buttonText) {
|
|
43
|
+
const isSoldOut = isEventFull(event);
|
|
44
|
+
const destination = resolveRuntimeEventDestination(event);
|
|
45
|
+
const isExternal = destination.kind === "external";
|
|
46
|
+
const defaultButtonText = isExternal ? destination.label : event.bookingScope === "whole_series" ? "Book now" : "Book";
|
|
47
|
+
const effectiveButtonText = buttonText ?? defaultButtonText;
|
|
48
|
+
const href = resolveEventHref(event);
|
|
49
|
+
if (event.bookingAvailability.kind === "closed") {
|
|
50
|
+
const linksToClosedWholeSeriesDetails = event.bookingAvailability.reason === "enrollment_closed" && !isExternal;
|
|
51
|
+
return {
|
|
52
|
+
label: closedEventBookingLabel(event.bookingAvailability.reason),
|
|
53
|
+
href,
|
|
54
|
+
external: isExternal,
|
|
55
|
+
hidden: !linksToClosedWholeSeriesDetails
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
if (!isExternal && isSoldOut) {
|
|
59
|
+
if (canJoinEventWaitlistOnAnyMode(event)) return {
|
|
60
|
+
label: "Join waitlist",
|
|
61
|
+
href,
|
|
62
|
+
external: false,
|
|
63
|
+
hidden: false
|
|
64
|
+
};
|
|
65
|
+
return {
|
|
66
|
+
label: "Sold out",
|
|
67
|
+
href,
|
|
68
|
+
external: false,
|
|
69
|
+
hidden: true
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
label: effectiveButtonText,
|
|
74
|
+
href,
|
|
75
|
+
external: isExternal,
|
|
76
|
+
hidden: false
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
//#endregion
|
|
80
|
+
//#region ../calendar/src/timezone.ts
|
|
81
|
+
/**
|
|
82
|
+
* Timezone boundary helpers — internal.
|
|
83
|
+
*
|
|
84
|
+
* Both functions read an ISO instant in a given IANA timezone and project it
|
|
85
|
+
* onto the wall clock of that zone. They use Intl.DateTimeFormat with
|
|
86
|
+
* hourCycle: 'h23' to avoid 12/24-hour ambiguity. Used internally by the
|
|
87
|
+
* timetable model and `groupItemsByDate`; not exported from the package's
|
|
88
|
+
* public surface.
|
|
89
|
+
*/
|
|
90
|
+
const MINUTES_PER_HOUR = 60;
|
|
91
|
+
/**
|
|
92
|
+
* Local minute-of-day [0, 24*60) for an ISO instant in the given zone.
|
|
93
|
+
* Returns NaN if the inputs cannot be parsed (caller should drop the item).
|
|
94
|
+
*/
|
|
95
|
+
function getLocalMinuteOfDay(isoTimestamp, timeZone) {
|
|
96
|
+
const date = new Date(isoTimestamp);
|
|
97
|
+
if (Number.isNaN(date.getTime())) return NaN;
|
|
98
|
+
if (!isValidTimeZone(timeZone)) return NaN;
|
|
99
|
+
const parts = new Intl.DateTimeFormat("en-GB", {
|
|
100
|
+
timeZone,
|
|
101
|
+
hour: "2-digit",
|
|
102
|
+
minute: "2-digit",
|
|
103
|
+
hourCycle: "h23"
|
|
104
|
+
}).formatToParts(date);
|
|
105
|
+
const hourPart = Number(parts.find((part) => part.type === "hour")?.value);
|
|
106
|
+
const minute = Number(parts.find((part) => part.type === "minute")?.value);
|
|
107
|
+
const hour = hourPart === 24 ? 0 : hourPart;
|
|
108
|
+
if (Number.isNaN(hour) || Number.isNaN(minute)) return NaN;
|
|
109
|
+
return hour * MINUTES_PER_HOUR + minute;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Local YYYY-MM-DD for an ISO instant in the given zone.
|
|
113
|
+
* Returns null if the inputs cannot be parsed.
|
|
114
|
+
*/
|
|
115
|
+
function getLocalDateKey(isoTimestamp, timeZone) {
|
|
116
|
+
const date = new Date(isoTimestamp);
|
|
117
|
+
if (Number.isNaN(date.getTime())) return null;
|
|
118
|
+
if (!isValidTimeZone(timeZone)) return null;
|
|
119
|
+
const parts = new Intl.DateTimeFormat("en-CA", {
|
|
120
|
+
timeZone,
|
|
121
|
+
year: "numeric",
|
|
122
|
+
month: "2-digit",
|
|
123
|
+
day: "2-digit"
|
|
124
|
+
}).formatToParts(date);
|
|
125
|
+
const year = parts.find((part) => part.type === "year")?.value;
|
|
126
|
+
const month = parts.find((part) => part.type === "month")?.value;
|
|
127
|
+
const day = parts.find((part) => part.type === "day")?.value;
|
|
128
|
+
if (year === void 0 || year.length === 0) return null;
|
|
129
|
+
if (month === void 0 || month.length === 0) return null;
|
|
130
|
+
if (day === void 0 || day.length === 0) return null;
|
|
131
|
+
return `${year}-${month}-${day}`;
|
|
132
|
+
}
|
|
133
|
+
const validTimeZoneCache = /* @__PURE__ */ new Map();
|
|
134
|
+
function isValidTimeZone(timeZone) {
|
|
135
|
+
if (typeof timeZone !== "string" || timeZone.length === 0) return false;
|
|
136
|
+
const cached = validTimeZoneCache.get(timeZone);
|
|
137
|
+
if (cached !== void 0) return cached;
|
|
138
|
+
try {
|
|
139
|
+
new Intl.DateTimeFormat("en-US", { timeZone });
|
|
140
|
+
validTimeZoneCache.set(timeZone, true);
|
|
141
|
+
return true;
|
|
142
|
+
} catch {
|
|
143
|
+
validTimeZoneCache.set(timeZone, false);
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
//#endregion
|
|
148
|
+
//#region ../calendar/src/group.ts
|
|
149
|
+
/**
|
|
150
|
+
* Group items by their local date (YYYY-MM-DD in the item's own timezone).
|
|
151
|
+
*
|
|
152
|
+
* Generic over `T`. Items with un-parseable startsAt or invalid timezone are
|
|
153
|
+
* silently dropped — call sites that need diagnostics should validate upstream.
|
|
154
|
+
*
|
|
155
|
+
* The output map preserves insertion order of dates (ES2015 spec) and the
|
|
156
|
+
* relative order of items within each date matches input order.
|
|
157
|
+
*/
|
|
158
|
+
function groupItemsByDate(items, accessors) {
|
|
159
|
+
const grouped = /* @__PURE__ */ new Map();
|
|
160
|
+
for (const item of items) {
|
|
161
|
+
const dateKey = getLocalDateKey(accessors.getStartsAt(item), accessors.getTimeZone(item));
|
|
162
|
+
if (dateKey == null) continue;
|
|
163
|
+
const existing = grouped.get(dateKey);
|
|
164
|
+
if (existing !== void 0) existing.push(item);
|
|
165
|
+
else grouped.set(dateKey, [item]);
|
|
166
|
+
}
|
|
167
|
+
return grouped;
|
|
168
|
+
}
|
|
169
|
+
//#endregion
|
|
170
|
+
//#region ../blocks/src/system/runtime/nodes/events/domain/dates.ts
|
|
171
|
+
/**
|
|
172
|
+
* Date and time presentation for events: the single place an event's
|
|
173
|
+
* timestamps become strings or date buckets. Calendar-grid primitives are
|
|
174
|
+
* re-exported from @riverbankcms/calendar so block code has one import.
|
|
175
|
+
*/
|
|
176
|
+
/**
|
|
177
|
+
* Format date for display.
|
|
178
|
+
* Returns: "Monday, January 15, 2025"
|
|
179
|
+
*/
|
|
180
|
+
function formatDate(isoTimestamp, options) {
|
|
181
|
+
return formatBookingDate(toScheduledBookingDateTime({
|
|
182
|
+
startsAt: isoTimestamp,
|
|
183
|
+
timeZone: toBookingTimeZone(options?.timeZone ?? "UTC"),
|
|
184
|
+
locale: options?.locale ?? "en-US"
|
|
185
|
+
}), {
|
|
186
|
+
weekday: "long",
|
|
187
|
+
year: "numeric",
|
|
188
|
+
month: "long",
|
|
189
|
+
day: "numeric"
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Format time for display.
|
|
194
|
+
* Returns: "10:00 AM"
|
|
195
|
+
*/
|
|
196
|
+
function formatTime(isoTimestamp, options) {
|
|
197
|
+
return formatBookingTime(toScheduledBookingDateTime({
|
|
198
|
+
startsAt: isoTimestamp,
|
|
199
|
+
timeZone: toBookingTimeZone(options?.timeZone ?? "UTC"),
|
|
200
|
+
locale: options?.locale ?? "en-US"
|
|
201
|
+
}), {
|
|
202
|
+
hour: "numeric",
|
|
203
|
+
minute: "2-digit",
|
|
204
|
+
hour12: true
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
function formatEventDateParts(args) {
|
|
208
|
+
const scheduledRange = toScheduledBookingDateRange({
|
|
209
|
+
startsAt: args.startsAt,
|
|
210
|
+
endsAt: args.endsAt,
|
|
211
|
+
timeZone: toBookingTimeZone(args.timeZone ?? "UTC"),
|
|
212
|
+
locale: args.locale ?? "en-US"
|
|
213
|
+
});
|
|
214
|
+
const { date, time: start } = formatBookingDateParts(scheduledRange, { dateFormat: {
|
|
215
|
+
weekday: "long",
|
|
216
|
+
year: "numeric",
|
|
217
|
+
month: "long",
|
|
218
|
+
day: "numeric"
|
|
219
|
+
} });
|
|
220
|
+
return {
|
|
221
|
+
date,
|
|
222
|
+
timeRange: `${start} – ${formatBookingTime(toScheduledBookingDateTime({
|
|
223
|
+
startsAt: args.endsAt,
|
|
224
|
+
timeZone: scheduledRange.timeZone,
|
|
225
|
+
locale: args.locale ?? "en-US"
|
|
226
|
+
}))}`
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
function formatEventCompactDateRail(isoTimestamp, options) {
|
|
230
|
+
const dateTime = toScheduledBookingDateTime({
|
|
231
|
+
startsAt: isoTimestamp,
|
|
232
|
+
timeZone: toBookingTimeZone(options?.timeZone ?? "UTC"),
|
|
233
|
+
locale: options?.locale ?? "en-US"
|
|
234
|
+
});
|
|
235
|
+
const weekday = formatBookingDate(dateTime, { weekday: "short" }).toLocaleUpperCase(options?.locale ?? "en-US");
|
|
236
|
+
const month = formatBookingDate(dateTime, { month: "short" }).toLocaleUpperCase(options?.locale ?? "en-US");
|
|
237
|
+
return {
|
|
238
|
+
weekday,
|
|
239
|
+
day: formatBookingDate(dateTime, { day: "numeric" }),
|
|
240
|
+
month,
|
|
241
|
+
label: formatBookingDate(dateTime, {
|
|
242
|
+
weekday: "long",
|
|
243
|
+
year: "numeric",
|
|
244
|
+
month: "long",
|
|
245
|
+
day: "numeric"
|
|
246
|
+
})
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Group events by their local date (YYYY-MM-DD key in each event's own
|
|
251
|
+
* timezone). Thin domain wrapper over `groupItemsByDate` from the calendar
|
|
252
|
+
* package; preserves the historical `Map<string, PublicEvent[]>` shape.
|
|
253
|
+
*/
|
|
254
|
+
function groupEventsByDate(events, calendarTimeZone) {
|
|
255
|
+
const grouped = groupItemsByDate(events, {
|
|
256
|
+
getStartsAt: (event) => event.startsAt,
|
|
257
|
+
getTimeZone: () => calendarTimeZone
|
|
258
|
+
});
|
|
259
|
+
const map = /* @__PURE__ */ new Map();
|
|
260
|
+
for (const [dateKey, bucket] of grouped) map.set(dateKey, [...bucket]);
|
|
261
|
+
return map;
|
|
262
|
+
}
|
|
263
|
+
//#endregion
|
|
264
|
+
export { groupEventsByDate as a, resolveEventCta as c, formatTime as i, resolveEventLinkProps as l, formatEventCompactDateRail as n, getLocalDateKey as o, formatEventDateParts as r, getLocalMinuteOfDay as s, formatDate as t };
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { D as clsx } from "./colorStyles-CrxJrPjJ.mjs";
|
|
3
|
-
import { $ as
|
|
4
|
-
import { o as EventFilters, t as useEventFilters } from "./useEventFilters-
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
3
|
+
import { $ as getOrderedDayNames, B as buildEventRuntimeFilters, E as buildEventCalendarListingRender, J as addDays, Q as getDayOfWeek, Z as formatDateKey, et as getWeekCalendarDays, nt as isToday, q as MONTH_NAMES, t as defineIslandPropsDecoder, tt as isSameCalendarDay, ut as themeButtonClassName, z as resolveCalendarReadProfile } from "./propsDecoder-CY9gGEF7.mjs";
|
|
4
|
+
import { o as EventFilters, s as formatEventTeacherLine, t as useEventFilters } from "./useEventFilters-1a1by4c8.mjs";
|
|
5
|
+
import { d as getEventAvailabilityStatus, o as formatEventRemainingPlaces, p as isEventFull } from "./pricing-xj7MPZlK.mjs";
|
|
6
|
+
import { a as groupEventsByDate, i as formatTime, l as resolveEventLinkProps, o as getLocalDateKey, s as getLocalMinuteOfDay } from "./dates-DCYhZBlW.mjs";
|
|
7
|
+
import { t as BlockApiProvider } from "./context-DBzX85Xc.mjs";
|
|
7
8
|
import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
|
|
8
9
|
import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-UNsfPcYq.mjs";
|
|
9
|
-
import { n as EventListingController } from "./EventListing.client-
|
|
10
|
+
import { n as EventListingController } from "./EventListing.client-99qx7jFl.mjs";
|
|
11
|
+
import { a as CalendarDayCell, c as useCalendarEvents, i as WeekAgendaView, o as EventModalProvider, r as EventModals, s as useEventModal, t as EventCombinedClient } from "./EventCombined.client-a02TXUgg.mjs";
|
|
10
12
|
import { useEffect, useId, useMemo, useState } from "react";
|
|
11
13
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
12
14
|
//#region ../calendar/src/lane-packing.ts
|
|
@@ -630,7 +632,7 @@ function buildTimetableModel(input) {
|
|
|
630
632
|
getEndsAt: (event) => event.endsAt,
|
|
631
633
|
getTimeZone: (event) => event.timeZone ?? "UTC",
|
|
632
634
|
getColor: (event) => event.eventCategory?.color ?? null,
|
|
633
|
-
getOrderKey: (event) => `${event.title}
|
|
635
|
+
getOrderKey: (event) => `${event.title}\u0000${event.id}`
|
|
634
636
|
});
|
|
635
637
|
return {
|
|
636
638
|
hourTicks: [...generic.hourTicks],
|
|
@@ -667,18 +669,9 @@ function toEventCell(cell) {
|
|
|
667
669
|
};
|
|
668
670
|
}
|
|
669
671
|
function formatTimetableCapacity(event) {
|
|
670
|
-
const { available, isFull } = getEventAvailability(event);
|
|
671
|
-
if (available == null) return {
|
|
672
|
-
label: null,
|
|
673
|
-
isFull: false
|
|
674
|
-
};
|
|
675
|
-
if (isFull) return {
|
|
676
|
-
label: "Full",
|
|
677
|
-
isFull: true
|
|
678
|
-
};
|
|
679
672
|
return {
|
|
680
|
-
label:
|
|
681
|
-
isFull:
|
|
673
|
+
label: formatEventRemainingPlaces(event, { compact: true }),
|
|
674
|
+
isFull: isEventFull(event)
|
|
682
675
|
};
|
|
683
676
|
}
|
|
684
677
|
function formatEventTimeRange(event) {
|
|
@@ -863,7 +856,8 @@ const EventCalendarClient = ({ render }) => {
|
|
|
863
856
|
buttonText: display.buttonText,
|
|
864
857
|
emptyMessage: display.emptyMessage,
|
|
865
858
|
className: display.className ?? void 0,
|
|
866
|
-
calendarContext: hydration.calendarContext
|
|
859
|
+
calendarContext: hydration.calendarContext,
|
|
860
|
+
calendarWindow: hydration.calendarWindow
|
|
867
861
|
});
|
|
868
862
|
if (display.displayMode === "list") return /* @__PURE__ */ jsx(EventListingController, { render: buildEventCalendarListingRender(render) });
|
|
869
863
|
if (display.displayMode === "timetable") return /* @__PURE__ */ jsx(EventCalendarTimetableClient, { render });
|
|
@@ -880,16 +874,16 @@ const EventCalendarWeekBoardClient = ({ render }) => {
|
|
|
880
874
|
display.filterVenueId,
|
|
881
875
|
display.scheduleScope
|
|
882
876
|
]);
|
|
883
|
-
const initialEvents = usePrefetchedCalendarEvents(display, filters);
|
|
884
877
|
const { events, viewport, loadState, goToPrevious, goToNext, goToToday, retryCurrentView } = useCalendarEvents({
|
|
878
|
+
readProfile: resolveCalendarReadProfile({ variant: display.displayMode }),
|
|
885
879
|
siteId: hydration.siteId,
|
|
886
|
-
initialEvents,
|
|
887
880
|
view: "week",
|
|
888
881
|
startOfWeek: display.startOfWeek,
|
|
889
882
|
preloadMonths: 1,
|
|
890
883
|
filters,
|
|
891
884
|
stage: hydration.stage,
|
|
892
|
-
calendarContext: hydration.calendarContext
|
|
885
|
+
calendarContext: hydration.calendarContext,
|
|
886
|
+
calendarWindow: hydration.calendarWindow
|
|
893
887
|
});
|
|
894
888
|
const weekBoardLoadState = loadState.kind === "error" ? {
|
|
895
889
|
kind: "error",
|
|
@@ -912,16 +906,16 @@ const EventCalendarWeekBoardClient = ({ render }) => {
|
|
|
912
906
|
const EventCalendarTimetableClient = ({ render }) => {
|
|
913
907
|
const { display, hydration } = render;
|
|
914
908
|
const { filtersNode, listFilters } = useEventCalendarFilterState(display);
|
|
915
|
-
const calendarInitialEvents = usePrefetchedCalendarEvents(display, listFilters);
|
|
916
909
|
const { events, viewDate, viewport, loadState, retryCurrentView, goToPrevious, goToNext, goToToday } = useCalendarEvents({
|
|
910
|
+
readProfile: resolveCalendarReadProfile({ variant: display.displayMode }),
|
|
917
911
|
siteId: hydration.siteId,
|
|
918
|
-
initialEvents: calendarInitialEvents,
|
|
919
912
|
view: "week",
|
|
920
913
|
startOfWeek: display.startOfWeek,
|
|
921
914
|
preloadMonths: 1,
|
|
922
915
|
filters: listFilters,
|
|
923
916
|
stage: hydration.stage,
|
|
924
|
-
calendarContext: hydration.calendarContext
|
|
917
|
+
calendarContext: hydration.calendarContext,
|
|
918
|
+
calendarWindow: hydration.calendarWindow
|
|
925
919
|
});
|
|
926
920
|
return /* @__PURE__ */ jsxs(EventModalProvider, { children: [/* @__PURE__ */ jsx(EventCalendarChrome, {
|
|
927
921
|
display,
|
|
@@ -953,16 +947,16 @@ const EventCalendarGridClient = ({ render }) => {
|
|
|
953
947
|
const { display, hydration } = render;
|
|
954
948
|
const calendarView = display.defaultCalendarView;
|
|
955
949
|
const { filtersNode, listFilters } = useEventCalendarFilterState(display);
|
|
956
|
-
const calendarInitialEvents = usePrefetchedCalendarEvents(display, listFilters);
|
|
957
950
|
const { events, viewDate, viewport, loadState, retryCurrentView, goToPrevious, goToNext, goToToday } = useCalendarEvents({
|
|
951
|
+
readProfile: resolveCalendarReadProfile({ variant: display.displayMode }),
|
|
958
952
|
siteId: hydration.siteId,
|
|
959
|
-
initialEvents: calendarInitialEvents,
|
|
960
953
|
view: calendarView,
|
|
961
954
|
startOfWeek: display.startOfWeek,
|
|
962
955
|
preloadMonths: 1,
|
|
963
956
|
filters: listFilters,
|
|
964
957
|
stage: hydration.stage,
|
|
965
|
-
calendarContext: hydration.calendarContext
|
|
958
|
+
calendarContext: hydration.calendarContext,
|
|
959
|
+
calendarWindow: hydration.calendarWindow
|
|
966
960
|
});
|
|
967
961
|
const eventsByDate = useMemo(() => groupEventsByDate(events, hydration.calendarContext.timeZone), [events, hydration.calendarContext.timeZone]);
|
|
968
962
|
const dayNames = useMemo(() => getOrderedDayNames(display.startOfWeek), [display.startOfWeek]);
|
|
@@ -1048,23 +1042,6 @@ function useEventCalendarFilterState(display) {
|
|
|
1048
1042
|
}) : null
|
|
1049
1043
|
};
|
|
1050
1044
|
}
|
|
1051
|
-
function usePrefetchedCalendarEvents(display, listFilters) {
|
|
1052
|
-
const initialFilters = useMemo(() => buildDisplayFilterParams(display), [
|
|
1053
|
-
display.eventSurface,
|
|
1054
|
-
display.filterCategoryIds,
|
|
1055
|
-
display.filterEventPresets,
|
|
1056
|
-
display.filterStaffMemberId,
|
|
1057
|
-
display.filterVenueId,
|
|
1058
|
-
display.scheduleScope
|
|
1059
|
-
]);
|
|
1060
|
-
return useMemo(() => {
|
|
1061
|
-
return getEventRuntimeFiltersKey(initialFilters) === getEventRuntimeFiltersKey(listFilters) ? [...display.events] : [];
|
|
1062
|
-
}, [
|
|
1063
|
-
display.events,
|
|
1064
|
-
initialFilters,
|
|
1065
|
-
listFilters
|
|
1066
|
-
]);
|
|
1067
|
-
}
|
|
1068
1045
|
function buildDisplayFilterParams(display) {
|
|
1069
1046
|
return buildEventRuntimeFilters({
|
|
1070
1047
|
eventSurface: display.eventSurface,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { t as defineIslandPropsDecoder } from "./propsDecoder-
|
|
2
|
-
import {
|
|
3
|
-
import { t as BlockApiProvider } from "./context-BImarOAq.mjs";
|
|
1
|
+
import { t as defineIslandPropsDecoder } from "./propsDecoder-CY9gGEF7.mjs";
|
|
2
|
+
import { t as BlockApiProvider } from "./context-DBzX85Xc.mjs";
|
|
4
3
|
import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
|
|
5
4
|
import { t as buildRouteIslandApiConfig } from "./routeIslandApiConfig-UNsfPcYq.mjs";
|
|
5
|
+
import { n as EventCombinedIslandClient } from "./EventCombined.client-a02TXUgg.mjs";
|
|
6
6
|
import "react";
|
|
7
7
|
import { jsx } from "react/jsx-runtime";
|
|
8
8
|
//#region src/rendering/islands/enhancers/eventCombined.tsx
|