@riverbankcms/sdk 0.130.2 → 0.132.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 +3 -3
- package/dist/{PreviewEditorSidebar-BY-1QdE2.mjs → PreviewEditorSidebar-DKQ5eFK9.mjs} +351 -95
- package/dist/{PreviewEditorUI-BS34jI9_.mjs → PreviewEditorUI-CNTcOjCC.mjs} +3 -3
- package/dist/{PreviewQueryProvider-BD0kOjtI.mjs → PreviewQueryProvider-D51gQaG3.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-B1pWnhu-.mjs → SdkPreviewModeRuntime-DJu3qu33.mjs} +48 -9
- package/dist/{SiteChromeCustomizeContext-BhUG_72i.mjs → SiteChromeCustomizeContext-2TzT3vbj.mjs} +6417 -4184
- package/dist/_dts/ai/src/contracts/proposals.d.ts +723 -151
- package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +151 -64
- package/dist/_dts/api/src/bookingConfig.d.ts +13 -9
- package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +8 -19
- package/dist/_dts/api/src/bookingManagementEventEndpointTypes.d.ts +31 -2
- package/dist/_dts/api/src/bookingVerticals.d.ts +1 -140
- package/dist/_dts/api/src/commercePortalEndpoints.d.ts +45 -12
- package/dist/_dts/api/src/contentRuntime.d.ts +2 -1
- package/dist/_dts/api/src/courses.d.ts +1 -19
- package/dist/_dts/api/src/endpoints.d.ts +466 -346
- package/dist/_dts/api/src/event-destination-policy.d.ts +1 -1
- package/dist/_dts/api/src/eventManagementContracts.d.ts +91 -1
- package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +32 -0
- package/dist/_dts/api/src/giftingDashboard.d.ts +117 -0
- package/dist/_dts/api/src/giftingEndpointDefinitions.d.ts +124 -0
- package/dist/_dts/api/src/index.d.ts +4 -4
- 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 +1 -0
- package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +3 -4
- package/dist/_dts/api/src/publicEventEndpointDefinitions.d.ts +11 -0
- package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +25 -12
- package/dist/_dts/api/src/publicExperience/sharedTypes.d.ts +2 -0
- package/dist/_dts/api/src/publicExperience/wholeSeriesEndpoints.d.ts +1 -0
- package/dist/_dts/api/src/sdk-event-upsert.d.ts +2 -2
- package/dist/_dts/api/src/sdkBookingVerticalContracts.d.ts +29 -0
- package/dist/_dts/api/src/sdkContracts.d.ts +9 -32
- package/dist/_dts/api/src/sdkEndpointDefinitions.d.ts +23 -0
- package/dist/_dts/api/src/sdkSettingsContracts.d.ts +25 -0
- package/dist/_dts/api/src/sdkThemeCatalogContracts.d.ts +20 -0
- package/dist/_dts/api/src/sdkThemeWire.d.ts +16 -6
- package/dist/_dts/api/src/siteOnboarding.d.ts +3 -3
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +4 -10
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +0 -3
- package/dist/_dts/api/src/types.d.ts +1 -2
- package/dist/_dts/blocks/src/PageRenderer.d.ts +2 -13
- package/dist/_dts/blocks/src/contracts/non-block-islands.d.ts +9 -0
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +26 -44
- package/dist/_dts/blocks/src/index.d.ts +1 -1
- package/dist/_dts/blocks/src/subroutes/fold.d.ts +2 -1
- package/dist/_dts/blocks/src/system/blocks/courses/shared/index.d.ts +0 -3
- package/dist/_dts/blocks/src/system/blocks/courses/shared/pricing.d.ts +2 -50
- package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +1 -929
- package/dist/_dts/blocks/src/system/blocks/courses/shared/types.d.ts +1 -97
- package/dist/_dts/blocks/src/system/blocks/event-details.d.ts +39 -6
- package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +2 -1
- package/dist/_dts/blocks/src/system/blocks/events/event-listing.d.ts +3 -3
- package/dist/_dts/blocks/src/system/blocks/events/event-spotlight.d.ts +2 -3
- package/dist/_dts/blocks/src/system/blocks/events/shared/filtering.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +6 -6
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +2 -9
- package/dist/_dts/blocks/src/system/blocks/events/whole-series/index.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/events/whole-series/pricing.d.ts +50 -0
- package/dist/_dts/blocks/src/system/blocks/events/whole-series/schemas.d.ts +135 -0
- package/dist/_dts/blocks/src/system/blocks/events/whole-series/types.d.ts +81 -0
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +9 -9
- package/dist/_dts/blocks/src/system/blocks/offerings-preview/model.d.ts +1 -1
- package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +7 -8
- package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/blockComposition.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +45 -72
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +21 -36
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessWholeSeriesRegistrationFlow.d.ts +6 -6
- package/dist/_dts/blocks/src/system/runtime/nodes/course-page-surface-scope.d.ts +2 -5
- package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.client.d.ts +4 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.interactive.d.ts +19 -7
- package/dist/_dts/blocks/src/system/runtime/nodes/event-details/logic.d.ts +25 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/event-details/presentation.d.ts +75 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-details/view.d.ts +4 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-details.client.d.ts +5 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-details.server.d.ts +5 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PaymentSelectionStep.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/RegistrationClosedState.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SiteCreditPreviewPanel.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventPaymentOptions.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +17 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationSurface.d.ts +3 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/siteCreditPreview.d.ts +51 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +3 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/BookingModeStep.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/CheckIcon.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/ErrorStep.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/MembershipHero.d.ts +3 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/PaymentFailedStep.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/StepIndicator.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/VerifyingTimeoutStep.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/WholeSeriesRegistrationActiveSteps.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration/CourseRegistrationErrorBoundary.d.ts → event-registration/whole-series/WholeSeriesRegistrationErrorBoundary.d.ts} +5 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/WholeSeriesRegistrationTerminalContent.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/WholeSeriesRegistrationWizard.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/components.d.ts +45 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/index.d.ts +4 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/presentation.d.ts +7 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/pricing.d.ts +14 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/types.d.ts +18 -16
- package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration/useCourseEligibility.d.ts → event-registration/whole-series/useWholeSeriesEligibility.d.ts} +6 -6
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesPaymentVerification.d.ts +10 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesRegistrationActions.d.ts +35 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration/useCourseRegistrationPortal.d.ts → event-registration/whole-series/useWholeSeriesRegistrationPortal.d.ts} +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesRegistrationSelection.d.ts +35 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/useWholeSeriesRegistrationWizard.d.ts +185 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration/useCourseWaitlistSelection.d.ts → event-registration/whole-series/useWholeSeriesWaitlistSelection.d.ts} +5 -5
- package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/utils.d.ts +4 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/whole-series-registration.headless.contract.d.ts +5 -7
- package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/whole-series-registration.headless.planning.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/wholeSeriesPageSurfaceScope.d.ts +17 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration/courseRegistrationViewState.d.ts → event-registration/whole-series/wholeSeriesRegistrationViewState.d.ts} +7 -7
- package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/wizardSteps.d.ts +4 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +24 -54
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +12 -11
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.server.d.ts +3 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventSpotlight.d.ts +3 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +3 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventDetailModal.d.ts +4 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModalCloseButton.d.ts +7 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModals.d.ts +4 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekBoardView.d.ts +14 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +19 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/shared/components/DiscountCodeDisclosure.d.ts +12 -12
- package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.d.ts +1 -0
- package/dist/_dts/blocks/src/system/transforms/registry/_utils/boxStyleClassNames.d.ts +30 -11
- package/dist/_dts/blocks/src/system/transforms/registry/boxStyles.d.ts +15 -4
- package/dist/_dts/blocks/src/system/transforms/registry/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -4
- package/dist/_dts/commerce/src/purchase/bookingInstalmentSchedule.d.ts +13 -0
- package/dist/_dts/commerce/src/purchase/cancellationPolicy.d.ts +7 -0
- package/dist/_dts/commerce/src/purchase/canonicalRefundPlanner.d.ts +48 -0
- package/dist/_dts/commerce/src/purchase/checkoutCollectionPlan.d.ts +39 -0
- package/dist/_dts/commerce/src/purchase/checkoutCommitPlan.d.ts +40 -0
- package/dist/_dts/commerce/src/purchase/checkoutDiscountContextPlanning.d.ts +80 -0
- package/dist/_dts/commerce/src/purchase/checkoutErrorCodes.d.ts +1 -0
- package/dist/_dts/commerce/src/purchase/checkoutOrderItemProjection.d.ts +22 -0
- package/dist/_dts/commerce/src/purchase/checkoutPaymentFlow.d.ts +50 -0
- package/dist/_dts/commerce/src/purchase/checkoutPaymentPlanPlanning.d.ts +30 -0
- package/dist/_dts/commerce/src/purchase/checkoutPaymentTermPlanning.d.ts +10 -0
- package/dist/_dts/commerce/src/purchase/checkoutPaymentTerms.d.ts +53 -0
- package/dist/_dts/commerce/src/purchase/checkoutQuantity.d.ts +8 -0
- package/dist/_dts/commerce/src/purchase/checkoutSessionMetadata.d.ts +76 -0
- package/dist/_dts/commerce/src/purchase/checkoutSettlement.d.ts +46 -0
- package/dist/_dts/commerce/src/purchase/checkoutStripeFinalizationPlanning.d.ts +12 -0
- package/dist/_dts/commerce/src/purchase/checkoutStripeSessionPlanning.d.ts +125 -0
- package/dist/_dts/commerce/src/purchase/checkoutValidatedItemPlanning.d.ts +55 -0
- package/dist/_dts/commerce/src/purchase/confirmationEmailPayment.d.ts +91 -0
- package/dist/_dts/commerce/src/purchase/discountApplication.d.ts +74 -0
- package/dist/_dts/commerce/src/purchase/index.d.ts +55 -0
- package/dist/_dts/commerce/src/purchase/oneTimeCheckoutPlanning.d.ts +86 -0
- package/dist/_dts/commerce/src/purchase/order-number.d.ts +33 -0
- package/dist/_dts/commerce/src/purchase/orderCancellationPlan.d.ts +19 -0
- package/dist/_dts/commerce/src/purchase/orderCompletionEmailPlan.d.ts +71 -0
- package/dist/_dts/commerce/src/purchase/orderConfirmationPlanning.d.ts +120 -0
- package/dist/_dts/commerce/src/purchase/orderFulfillmentPlan.d.ts +81 -0
- package/dist/_dts/commerce/src/purchase/orderFulfillmentResult.d.ts +8 -0
- package/dist/_dts/commerce/src/purchase/orderHistoryLedgerFilters.d.ts +1 -0
- package/dist/_dts/commerce/src/purchase/orderHistorySource.d.ts +11 -0
- package/dist/_dts/commerce/src/purchase/orderInstalmentAdminSettlement.d.ts +43 -0
- package/dist/_dts/commerce/src/purchase/orderInstalmentClosure.d.ts +29 -0
- package/dist/_dts/commerce/src/purchase/orderInstalmentLifecycle.d.ts +44 -0
- package/dist/_dts/commerce/src/purchase/orderInstalmentPayoff.d.ts +24 -0
- package/dist/_dts/commerce/src/purchase/orderInstalmentPlan.d.ts +40 -0
- package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +151 -0
- package/dist/_dts/commerce/src/purchase/orderItemSupport.d.ts +14 -0
- package/dist/_dts/commerce/src/purchase/orderListFilters.d.ts +3 -0
- package/dist/_dts/commerce/src/purchase/orderPaymentLinkPlanning.d.ts +60 -0
- package/dist/_dts/commerce/src/purchase/orderPaymentReceipt.d.ts +184 -0
- package/dist/_dts/commerce/src/purchase/orderPaymentState.d.ts +135 -0
- package/dist/_dts/commerce/src/purchase/orderPlanningTypes.d.ts +102 -0
- package/dist/_dts/commerce/src/purchase/orderRefundPlanning.d.ts +50 -0
- package/dist/_dts/commerce/src/purchase/orderRefundPolicy.d.ts +36 -0
- package/dist/_dts/commerce/src/purchase/orderTotals.d.ts +23 -0
- package/dist/_dts/commerce/src/purchase/orderTypes.d.ts +39 -0
- package/dist/_dts/commerce/src/purchase/pendingCheckoutSessionClaim.d.ts +1 -0
- package/dist/_dts/commerce/src/purchase/persistedCheckoutLines.d.ts +27 -0
- package/dist/_dts/commerce/src/purchase/protectedDepositRefundPolicy.d.ts +86 -0
- package/dist/_dts/commerce/src/purchase/refundPolicy.d.ts +8 -0
- package/dist/_dts/commerce/src/purchase/refundRailSplit.d.ts +40 -0
- package/dist/_dts/commerce/src/purchase/result.d.ts +2 -0
- package/dist/_dts/commerce/src/purchase/settlement.d.ts +97 -0
- package/dist/_dts/commerce/src/purchase/shopRefundPlanning.d.ts +43 -0
- package/dist/_dts/commerce/src/purchase/stateTransitions.d.ts +31 -0
- package/dist/_dts/commerce/src/purchase/stripeMinimumCharge.d.ts +10 -0
- package/dist/_dts/commerce/src/purchase/types.d.ts +168 -0
- package/dist/_dts/commerce/src/shop/shipmentEligibility.d.ts +14 -0
- package/dist/_dts/commerce/src/utils/assertNever.d.ts +1 -0
- package/dist/_dts/content-model/src/content-types/builtin-schemas.d.ts +4 -0
- package/dist/_dts/content-model/src/content-types/builtins.d.ts +4 -0
- package/dist/_dts/core/src/booking-vertical-catalog.d.ts +741 -0
- package/dist/_dts/core/src/booking-vertical-config.d.ts +66 -0
- package/dist/_dts/core/src/booking-vertical-definitions.d.ts +68 -0
- package/dist/_dts/{api/src/bookingVerticalPreset.d.ts → core/src/booking-vertical-preset.d.ts} +1 -1
- package/dist/_dts/core/src/booking-verticals.d.ts +98 -0
- package/dist/_dts/core/src/event-page-selection.d.ts +22 -0
- package/dist/_dts/core/src/event-pricing.d.ts +5 -0
- package/dist/_dts/core/src/event-series-behaviour.d.ts +16 -0
- package/dist/_dts/core/src/index.d.ts +3 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +72 -0
- package/dist/_dts/db/src/schemas/forms.d.ts +4 -4
- package/dist/_dts/media-core/src/fileUploadCompletion.d.ts +3 -0
- package/dist/_dts/media-core/src/fileUploadDurableFinalization.d.ts +2 -0
- package/dist/_dts/media-core/src/identifiers.d.ts +10 -0
- package/dist/_dts/media-core/src/mediaWriteNormalizer.d.ts +2 -6
- package/dist/_dts/media-core/src/types.d.ts +2 -1
- package/dist/_dts/media-editor/src/index.d.ts +2 -2
- package/dist/_dts/media-editor/src/mediaSelection.d.ts +1 -22
- package/dist/_dts/media-editor/src/useMediaSelection.d.ts +0 -9
- package/dist/_dts/preview-next/src/client/preview/ButtonHoverRoleControls.d.ts +10 -0
- package/dist/_dts/preview-next/src/client/preview/ButtonStylePicker.d.ts +3 -2
- package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +3 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +3 -1
- package/dist/_dts/preview-next/src/client/preview/StyleConfiguratorWarningNotice.d.ts +7 -0
- package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +1 -1
- package/dist/_dts/sdk/src/client/eventSubrouteReadOperations.d.ts +11 -0
- package/dist/_dts/sdk/src/client/types.d.ts +12 -5
- package/dist/_dts/sdk/src/components.d.ts +1 -1
- package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
- package/dist/_dts/sdk/src/contracts/page.d.ts +2 -13
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +4 -16
- package/dist/_dts/sdk/src/next/pageMetadataProjection.d.ts +7 -0
- package/dist/_dts/sdk/src/next/resolveEventPageSubroute.d.ts +12 -0
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -19
- package/dist/_dts/sdk/src/public-api/eventSubrouteContracts.d.ts +12 -0
- package/dist/_dts/sdk/src/public-api/runtime.d.ts +1 -1
- package/dist/_dts/sdk/src/rendering/client.d.ts +44 -0
- package/dist/_dts/sdk/src/rendering/index.d.ts +1 -1
- package/dist/_dts/sdk/src/routing/entrySubroutes.d.ts +1 -1
- package/dist/_dts/sdk/src/routing/resolveOccurrence.d.ts +4 -3
- package/dist/_dts/sdk/src/routing/resolvePageContent.d.ts +7 -3
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/buttons/buttonSurfaceContext.d.ts +1 -1
- package/dist/_dts/theme-core/src/buttons/contextualHover.d.ts +41 -0
- package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/buttons/resolveButtonColourStates.d.ts +3 -0
- package/dist/_dts/theme-core/src/buttons/resolveButtonHoverTreatment.d.ts +14 -0
- package/dist/_dts/theme-core/src/buttons/styles/domain.d.ts +21 -4
- package/dist/_dts/theme-core/src/buttons/styles/recipes/flatInk.d.ts +92 -0
- package/dist/_dts/theme-core/src/buttons/styles/recipes/staticRecipes.d.ts +10 -150
- package/dist/_dts/theme-core/src/buttons/styles/registry.d.ts +57 -102
- package/dist/_dts/theme-core/src/buttons/styles/selection.d.ts +50 -2
- package/dist/_dts/theme-core/src/buttons/types.d.ts +29 -0
- package/dist/_dts/theme-core/src/cards/types.d.ts +3 -25
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +21 -6
- package/dist/_dts/theme-core/src/schema.d.ts +21 -33
- package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +27 -0
- package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +27 -0
- package/dist/_dts/theme-core/src/site-styles/buttonSelectionCompiler.d.ts +18 -0
- package/dist/_dts/theme-core/src/site-styles/compilationPlan.d.ts +21 -0
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +2 -11
- package/dist/_dts/theme-core/src/site-styles/selectionFallbackWarning.d.ts +15 -0
- package/dist/_dts/theme-core/src/site-styles/types.d.ts +13 -1
- package/dist/_dts/ui/src/navigation-tabs.d.ts +2 -0
- package/dist/client/{DiscountCodeDisclosure-BPZ-yfGI.mjs → DiscountCodeDisclosure-DO7llLxm.mjs} +12 -12
- package/dist/client/{EventCombined.client-Cjt3kKYR.mjs → EventCombined.client-xID7zN__.mjs} +36 -48
- package/dist/client/{EventListing.client-DY9dn6Fh.mjs → EventListing.client-CriBslp0.mjs} +2 -2
- package/dist/client/{LeafletStaticMap--2c61XYn.mjs → LeafletStaticMap-DYmHnM8g.mjs} +1 -1
- package/dist/client/{StepIndicator-CLjQhkDb.mjs → StepIndicator-CGixP_LW.mjs} +2 -2
- package/dist/client/{CourseRegistrationWizard-DGW9F0SQ.mjs → WholeSeriesRegistrationWizard-BEjzSiOA.mjs} +1408 -1245
- package/dist/client/{accordion-_boYwHHi.mjs → accordion-CgFbnnnQ.mjs} +1 -1
- package/dist/client/{bookingForm--AqEfyBX.mjs → bookingForm-dUyGpbxc.mjs} +5 -5
- package/dist/client/bookings.mjs +635 -471
- package/dist/client/{carousel-CVI2dqZr.mjs → carousel-BvBwkUzx.mjs} +1 -1
- package/dist/client/{cart-DR6IiPz9.mjs → cart-DiZENT2E.mjs} +3 -3
- package/dist/client/{checkout-CsrGAfQt.mjs → checkout-Dq13KIgR.mjs} +3 -3
- package/dist/client/client.mjs +6291 -3452
- package/dist/client/{courseRegistration-aNJVaLa3.mjs → courseRegistration-CKC5NmyH.mjs} +10 -4
- package/dist/client/{eventCalendar-OZ7h59VN.mjs → eventCalendar-BF0Jatfw.mjs} +40 -43
- package/dist/client/{eventCombined-BbJ6bFKz.mjs → eventCombined-BuoCF8je.mjs} +2 -2
- package/dist/client/{eventDetails-BLyUBiCT.mjs → eventDetails-CKwh0S9s.mjs} +276 -94
- package/dist/client/{eventListing-DuP1yhBS.mjs → eventListing-eUxaWFaB.mjs} +2 -2
- package/dist/client/{eventRegistration-BXyECPa-.mjs → eventRegistration-CfkNOkPb.mjs} +625 -132
- package/dist/client/{form-BA4t3kKU.mjs → form-C17H1c_H.mjs} +1 -1
- package/dist/client/{headerSection-CpNaJxhW.mjs → headerSection-DEwUmrtt.mjs} +2 -2
- package/dist/client/hooks.mjs +1312 -481
- package/dist/client/{locationMap-3HGMCL7_.mjs → locationMap-Pf2QwuvW.mjs} +2 -2
- package/dist/client/{newsletterForm-C2s6Mw67.mjs → newsletterForm-BWQAH5Sv.mjs} +1 -1
- package/dist/client/pricing-CVdvbopJ.mjs +195 -0
- package/dist/client/{productDetail-C9joWhdE.mjs → productDetail-BZi1Fa_G.mjs} +3 -3
- package/dist/client/{productList-CjzdU3pB.mjs → productList-qq-55DNk.mjs} +3 -3
- package/dist/client/{propsDecoder-CBPGXEYX.mjs → propsDecoder-BxmqPKdP.mjs} +412 -196
- package/dist/client/rendering/client.mjs +5685 -4037
- package/dist/client/rendering/islands.mjs +18 -18
- package/dist/client/rendering.mjs +7006 -4124
- package/dist/client/{scrollToBlock-DZ73aEX6.mjs → scrollToBlock-B3CcKdtG.mjs} +1 -1
- package/dist/client/{shop-CQRai7hj.mjs → shop-DNWJPut5.mjs} +5 -5
- package/dist/client/{shop-commerce-hP9UboOx.mjs → shop-commerce-BhvQCosS.mjs} +4 -4
- package/dist/client/{shop-commerce-store-DiD5a32e.mjs → shop-commerce-store-B04sCNnW.mjs} +1 -1
- package/dist/client/{shopShared-DP8DXTkF.mjs → shopShared-DNNgZlmW.mjs} +2 -2
- package/dist/client/{useEventFilters-pF_OJNQP.mjs → useEventFilters-CUmhE24_.mjs} +195 -6
- package/dist/client/{usePolling-Cls91SD2.mjs → usePolling-M5jG675x.mjs} +3 -3
- package/dist/preview-next/before-render.mjs +247 -60
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/keepAlive.mjs +247 -60
- package/dist/preview-next/middleware.mjs +247 -60
- package/dist/{previewAuthStore-CX1C_KJ4.mjs → previewAuthStore-BFKd4LrN.mjs} +247 -60
- package/dist/{sdk-runtime-5CcPAI14.mjs → sdk-runtime-BEXb1wqo.mjs} +2 -2
- package/dist/{separator-BXlYN_gr.mjs → separator-DGMuip1D.mjs} +1 -1
- package/dist/server/components.mjs +3461 -1577
- package/dist/server/config-validation.mjs +1312 -482
- package/dist/server/config.mjs +1312 -482
- package/dist/server/data.mjs +1312 -481
- package/dist/server/index.mjs +289 -81
- package/dist/server/manifest.mjs +0 -1
- package/dist/server/next.mjs +3576 -1689
- package/dist/server/page-converter.mjs +797 -250
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +3461 -1576
- package/dist/server/rendering.mjs +3461 -1577
- package/dist/server/routing.mjs +1555 -616
- package/dist/server/server.mjs +1352 -560
- package/dist/server/theme-bridge.mjs +1992 -931
- package/dist/server/theme.mjs +346 -133
- package/dist/styles/index.css +1602 -796
- package/package.json +1 -1
- package/dist/_dts/api/src/bookingVerticalCatalog.d.ts +0 -746
- package/dist/_dts/api/src/eventSeriesPresentationPreset.d.ts +0 -12
- package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/CourseRegistrationWizard.d.ts +0 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/StepIndicator.d.ts +0 -6
- package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/components.d.ts +0 -45
- package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/pricing.d.ts +0 -14
- package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/useCoursePaymentVerification.d.ts +0 -9
- package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/useCourseRegistrationActions.d.ts +0 -35
- package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/useCourseRegistrationSelection.d.ts +0 -31
- package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/useCourseRegistrationWizard.d.ts +0 -102
- package/dist/client/eventProductEligibility-AVxyCB1u.mjs +0 -50
- package/dist/client/pricing-BiqIMgZk.mjs +0 -174
- /package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/PortalAuthSidebar.d.ts +0 -0
- /package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/SuccessStep.d.ts +0 -0
- /package/dist/_dts/blocks/src/system/runtime/nodes/{course-registration → event-registration/whole-series}/WaitlistStep.d.ts +0 -0
|
@@ -1759,6 +1759,12 @@ const opaqueButtonColourTokenSchema = themeColorTokenSchema.refine((value) => pa
|
|
|
1759
1759
|
if (token === null) throw new Error("Invariant: opaque button token passed its schema");
|
|
1760
1760
|
return token;
|
|
1761
1761
|
});
|
|
1762
|
+
const contextualButtonHoverSchema = z.strictObject({
|
|
1763
|
+
kind: z.literal("shade-shift"),
|
|
1764
|
+
seedToken: opaqueButtonColourTokenSchema,
|
|
1765
|
+
fallbackDirection: z.enum(["lighter", "darker"]),
|
|
1766
|
+
preferredToken: opaqueButtonColourTokenSchema.optional()
|
|
1767
|
+
});
|
|
1762
1768
|
const buttonShadeAmountSchema = z.number().finite().min(0).max(900).multipleOf(100);
|
|
1763
1769
|
const buttonShadowIntensitySchema = z.enum([
|
|
1764
1770
|
"subtle",
|
|
@@ -2098,6 +2104,7 @@ const buttonVariantSchema = z.strictObject({
|
|
|
2098
2104
|
shadow: variantShadowSchema.optional(),
|
|
2099
2105
|
border: buttonBorderSchema.optional(),
|
|
2100
2106
|
hoverBackgroundToken: opaqueButtonColourTokenSchema.optional(),
|
|
2107
|
+
contextualHover: contextualButtonHoverSchema.optional(),
|
|
2101
2108
|
effects: variantEffectsSchema.optional(),
|
|
2102
2109
|
sizes: variantSizeOverridesSchema.optional(),
|
|
2103
2110
|
affordance: buttonVariantAffordanceSchema.optional()
|
|
@@ -2331,13 +2338,7 @@ const tokenOrCssColorValueSchema = z.string();
|
|
|
2331
2338
|
buttonSizeNameSchema.options;
|
|
2332
2339
|
//#endregion
|
|
2333
2340
|
//#region ../theme-core/src/buttons/styles/domain.ts
|
|
2334
|
-
const PUBLIC_BUTTON_ROLES =
|
|
2335
|
-
"primary",
|
|
2336
|
-
"secondary",
|
|
2337
|
-
"outline",
|
|
2338
|
-
"ghost",
|
|
2339
|
-
"accent"
|
|
2340
|
-
];
|
|
2341
|
+
const PUBLIC_BUTTON_ROLES = VARIANT_ROLES;
|
|
2341
2342
|
function defineButtonStyleRecipe(recipe) {
|
|
2342
2343
|
return recipe;
|
|
2343
2344
|
}
|
|
@@ -2433,6 +2434,14 @@ const BUTTON_STYLE_IDS = [
|
|
|
2433
2434
|
"quiet-arrow"
|
|
2434
2435
|
];
|
|
2435
2436
|
const quietArrowParametersSchema = z.object({ secondaryTreatment: z.enum(["outlined", "solid-accent"]) }).strict();
|
|
2437
|
+
const flatInkHoverTreatmentSchema = z.enum([
|
|
2438
|
+
"contextual",
|
|
2439
|
+
"secondary",
|
|
2440
|
+
"accent"
|
|
2441
|
+
]);
|
|
2442
|
+
const flatInkHoverPreferencesShape = Object.fromEntries(VARIANT_ROLES.map((role) => [role, flatInkHoverTreatmentSchema.optional()]));
|
|
2443
|
+
const flatInkHoverPreferencesSchema = z.strictObject(flatInkHoverPreferencesShape);
|
|
2444
|
+
const flatInkParametersSchema = z.strictObject({ hoverPreferences: flatInkHoverPreferencesSchema.optional() });
|
|
2436
2445
|
const emptyParametersSchema$1 = z.object({}).strict();
|
|
2437
2446
|
function selectionBranch(styleId, parameters) {
|
|
2438
2447
|
return z.object({
|
|
@@ -2447,7 +2456,7 @@ const buttonStyleSelectionSchema = z.discriminatedUnion("styleId", [
|
|
|
2447
2456
|
selectionBranch("editorial-link", emptyParametersSchema$1),
|
|
2448
2457
|
selectionBranch("pebble", emptyParametersSchema$1),
|
|
2449
2458
|
selectionBranch("ink-stamp", emptyParametersSchema$1),
|
|
2450
|
-
selectionBranch("flat-ink",
|
|
2459
|
+
selectionBranch("flat-ink", flatInkParametersSchema),
|
|
2451
2460
|
selectionBranch("brushed-wash", emptyParametersSchema$1),
|
|
2452
2461
|
selectionBranch("showtime-pill", emptyParametersSchema$1),
|
|
2453
2462
|
selectionBranch("joy-stamp", emptyParametersSchema$1),
|
|
@@ -2584,6 +2593,189 @@ const quietArrowRecipe = defineButtonStyleRecipe({
|
|
|
2584
2593
|
})
|
|
2585
2594
|
});
|
|
2586
2595
|
//#endregion
|
|
2596
|
+
//#region ../theme-core/src/buttons/styles/recipes/flatInk.ts
|
|
2597
|
+
const contextualRoleConfig = {
|
|
2598
|
+
primary: {
|
|
2599
|
+
contextualSeedToken: unsafeAsOpaqueButtonColourToken("primary"),
|
|
2600
|
+
fallbackDirection: "darker"
|
|
2601
|
+
},
|
|
2602
|
+
secondary: {
|
|
2603
|
+
contextualSeedToken: unsafeAsOpaqueButtonColourToken("surfaceAlt"),
|
|
2604
|
+
fallbackDirection: "darker"
|
|
2605
|
+
},
|
|
2606
|
+
outline: {
|
|
2607
|
+
contextualSeedToken: unsafeAsOpaqueButtonColourToken("surfaceAlt"),
|
|
2608
|
+
fallbackDirection: "darker"
|
|
2609
|
+
},
|
|
2610
|
+
ghost: {
|
|
2611
|
+
contextualSeedToken: unsafeAsOpaqueButtonColourToken("surfaceAlt"),
|
|
2612
|
+
fallbackDirection: "darker"
|
|
2613
|
+
},
|
|
2614
|
+
accent: {
|
|
2615
|
+
contextualSeedToken: unsafeAsOpaqueButtonColourToken("accent"),
|
|
2616
|
+
fallbackDirection: "darker"
|
|
2617
|
+
}
|
|
2618
|
+
};
|
|
2619
|
+
const hoverControl = {
|
|
2620
|
+
kind: "button-hover-by-role",
|
|
2621
|
+
parameter: "hoverPreferences",
|
|
2622
|
+
label: "Button hover",
|
|
2623
|
+
roles: contextualRoleConfig,
|
|
2624
|
+
options: [
|
|
2625
|
+
{
|
|
2626
|
+
value: "contextual",
|
|
2627
|
+
label: "Contextual shade shift"
|
|
2628
|
+
},
|
|
2629
|
+
{
|
|
2630
|
+
value: "secondary",
|
|
2631
|
+
label: "Secondary button colour"
|
|
2632
|
+
},
|
|
2633
|
+
{
|
|
2634
|
+
value: "accent",
|
|
2635
|
+
label: "Accent button colour"
|
|
2636
|
+
}
|
|
2637
|
+
]
|
|
2638
|
+
};
|
|
2639
|
+
const lift = { effectId: "lift" };
|
|
2640
|
+
const flatInkRecipe = defineButtonStyleRecipe({
|
|
2641
|
+
id: "flat-ink",
|
|
2642
|
+
accessibilityLabel: "Flat rounded buttons with arrow affordances",
|
|
2643
|
+
tags: {
|
|
2644
|
+
tone: "classic",
|
|
2645
|
+
energy: "calm",
|
|
2646
|
+
motion: "subtle",
|
|
2647
|
+
era: "editorial"
|
|
2648
|
+
},
|
|
2649
|
+
parameterSchema: flatInkParametersSchema,
|
|
2650
|
+
defaultParameters: {},
|
|
2651
|
+
controls: [hoverControl],
|
|
2652
|
+
defineSystem: (parameters) => ({
|
|
2653
|
+
global: {
|
|
2654
|
+
cornerStyle: "rounded",
|
|
2655
|
+
textTransform: "none",
|
|
2656
|
+
fontWeight: 600,
|
|
2657
|
+
typography: "body",
|
|
2658
|
+
letterSpacing: "tight",
|
|
2659
|
+
paddingPreset: "default",
|
|
2660
|
+
hoverTransform: "lift",
|
|
2661
|
+
hoverColor: "none"
|
|
2662
|
+
},
|
|
2663
|
+
sizes: {
|
|
2664
|
+
sm: {
|
|
2665
|
+
padding: "0.625rem 1.125rem",
|
|
2666
|
+
fontSize: "text-sm"
|
|
2667
|
+
},
|
|
2668
|
+
md: { padding: "0.8125rem 1.375rem" },
|
|
2669
|
+
lg: {
|
|
2670
|
+
padding: "0.9375rem 1.625rem",
|
|
2671
|
+
fontSize: "text-lg"
|
|
2672
|
+
},
|
|
2673
|
+
xl: {
|
|
2674
|
+
padding: "1.0625rem 2rem",
|
|
2675
|
+
fontSize: "text-xl"
|
|
2676
|
+
}
|
|
2677
|
+
},
|
|
2678
|
+
roles: {
|
|
2679
|
+
primary: {
|
|
2680
|
+
kind: "complete",
|
|
2681
|
+
appearance: {
|
|
2682
|
+
background: {
|
|
2683
|
+
type: "solid",
|
|
2684
|
+
colorToken: unsafeAsOpaqueButtonColourToken("primary")
|
|
2685
|
+
},
|
|
2686
|
+
borderRadius: "rounded-lg",
|
|
2687
|
+
affordance: { iconId: "ArrowRight" },
|
|
2688
|
+
...hoverAppearance("primary", parameters, [lift, {
|
|
2689
|
+
effectId: "background-on-hover",
|
|
2690
|
+
options: { colorToken: unsafeAsOpaqueButtonColourToken("secondary") }
|
|
2691
|
+
}])
|
|
2692
|
+
}
|
|
2693
|
+
},
|
|
2694
|
+
secondary: {
|
|
2695
|
+
kind: "complete",
|
|
2696
|
+
appearance: {
|
|
2697
|
+
background: {
|
|
2698
|
+
type: "surface",
|
|
2699
|
+
role: "link"
|
|
2700
|
+
},
|
|
2701
|
+
borderRadius: "rounded-lg",
|
|
2702
|
+
border: { widthClass: "border" },
|
|
2703
|
+
...hoverAppearance("secondary", parameters, [lift, {
|
|
2704
|
+
effectId: "background-on-hover",
|
|
2705
|
+
options: { colorToken: unsafeAsOpaqueButtonColourToken("surfaceAlt") }
|
|
2706
|
+
}])
|
|
2707
|
+
}
|
|
2708
|
+
},
|
|
2709
|
+
outline: {
|
|
2710
|
+
kind: "complete",
|
|
2711
|
+
appearance: {
|
|
2712
|
+
background: {
|
|
2713
|
+
type: "surface",
|
|
2714
|
+
role: "link"
|
|
2715
|
+
},
|
|
2716
|
+
borderRadius: "rounded-lg",
|
|
2717
|
+
border: { widthClass: "border" },
|
|
2718
|
+
...hoverAppearance("outline", parameters, [lift, {
|
|
2719
|
+
effectId: "background-on-hover",
|
|
2720
|
+
options: { colorToken: unsafeAsOpaqueButtonColourToken("surfaceAlt") }
|
|
2721
|
+
}])
|
|
2722
|
+
}
|
|
2723
|
+
},
|
|
2724
|
+
ghost: {
|
|
2725
|
+
kind: "complete",
|
|
2726
|
+
appearance: {
|
|
2727
|
+
background: {
|
|
2728
|
+
type: "surface",
|
|
2729
|
+
role: "link"
|
|
2730
|
+
},
|
|
2731
|
+
borderRadius: "rounded-lg",
|
|
2732
|
+
...hoverAppearance("ghost", parameters, [lift])
|
|
2733
|
+
}
|
|
2734
|
+
},
|
|
2735
|
+
accent: {
|
|
2736
|
+
kind: "complete",
|
|
2737
|
+
appearance: {
|
|
2738
|
+
background: {
|
|
2739
|
+
type: "solid",
|
|
2740
|
+
colorToken: unsafeAsOpaqueButtonColourToken("accent")
|
|
2741
|
+
},
|
|
2742
|
+
borderRadius: "rounded-lg",
|
|
2743
|
+
affordance: { iconId: "ArrowRight" },
|
|
2744
|
+
...hoverAppearance("accent", parameters, [lift])
|
|
2745
|
+
}
|
|
2746
|
+
}
|
|
2747
|
+
}
|
|
2748
|
+
})
|
|
2749
|
+
});
|
|
2750
|
+
function hoverAppearance(role, parameters, recommended) {
|
|
2751
|
+
const preference = parameters.hoverPreferences?.[role];
|
|
2752
|
+
if (preference === void 0) return { effects: { hover: [...recommended] } };
|
|
2753
|
+
if (preference === "contextual") {
|
|
2754
|
+
const config = contextualRoleConfig[role];
|
|
2755
|
+
return {
|
|
2756
|
+
effects: { hover: [lift] },
|
|
2757
|
+
contextualHover: {
|
|
2758
|
+
kind: "shade-shift",
|
|
2759
|
+
seedToken: config.contextualSeedToken,
|
|
2760
|
+
fallbackDirection: config.fallbackDirection
|
|
2761
|
+
}
|
|
2762
|
+
};
|
|
2763
|
+
}
|
|
2764
|
+
const config = contextualRoleConfig[role];
|
|
2765
|
+
return {
|
|
2766
|
+
effects: { hover: [lift] },
|
|
2767
|
+
contextualHover: {
|
|
2768
|
+
kind: "shade-shift",
|
|
2769
|
+
seedToken: config.contextualSeedToken,
|
|
2770
|
+
fallbackDirection: config.fallbackDirection,
|
|
2771
|
+
preferredToken: unsafeAsOpaqueButtonColourToken(paletteRole(preference))
|
|
2772
|
+
}
|
|
2773
|
+
};
|
|
2774
|
+
}
|
|
2775
|
+
function paletteRole(preference) {
|
|
2776
|
+
return preference;
|
|
2777
|
+
}
|
|
2778
|
+
//#endregion
|
|
2587
2779
|
//#region ../theme-core/src/buttons/styles/recipes/defineStaticButtonStyleRecipe.ts
|
|
2588
2780
|
const emptyParametersSchema = z.object({}).strict();
|
|
2589
2781
|
function defineStaticButtonStyleRecipe(input) {
|
|
@@ -3430,113 +3622,6 @@ const inkStampRecipe = defineStaticButtonStyleRecipe({
|
|
|
3430
3622
|
}
|
|
3431
3623
|
}
|
|
3432
3624
|
});
|
|
3433
|
-
const flatInkRecipe = defineStaticButtonStyleRecipe({
|
|
3434
|
-
id: "flat-ink",
|
|
3435
|
-
accessibilityLabel: "Flat rounded buttons with arrow affordances",
|
|
3436
|
-
tags: {
|
|
3437
|
-
tone: "classic",
|
|
3438
|
-
energy: "calm",
|
|
3439
|
-
motion: "subtle",
|
|
3440
|
-
era: "editorial"
|
|
3441
|
-
},
|
|
3442
|
-
system: {
|
|
3443
|
-
global: {
|
|
3444
|
-
cornerStyle: "rounded",
|
|
3445
|
-
textTransform: "none",
|
|
3446
|
-
fontWeight: 600,
|
|
3447
|
-
typography: "body",
|
|
3448
|
-
letterSpacing: "tight",
|
|
3449
|
-
paddingPreset: "default",
|
|
3450
|
-
hoverTransform: "lift",
|
|
3451
|
-
hoverColor: "none"
|
|
3452
|
-
},
|
|
3453
|
-
sizes: {
|
|
3454
|
-
sm: {
|
|
3455
|
-
padding: "0.625rem 1.125rem",
|
|
3456
|
-
fontSize: "text-sm"
|
|
3457
|
-
},
|
|
3458
|
-
md: { padding: "0.8125rem 1.375rem" },
|
|
3459
|
-
lg: {
|
|
3460
|
-
padding: "0.9375rem 1.625rem",
|
|
3461
|
-
fontSize: "text-lg"
|
|
3462
|
-
},
|
|
3463
|
-
xl: {
|
|
3464
|
-
padding: "1.0625rem 2rem",
|
|
3465
|
-
fontSize: "text-xl"
|
|
3466
|
-
}
|
|
3467
|
-
},
|
|
3468
|
-
roles: {
|
|
3469
|
-
primary: {
|
|
3470
|
-
kind: "complete",
|
|
3471
|
-
appearance: {
|
|
3472
|
-
background: {
|
|
3473
|
-
type: "solid",
|
|
3474
|
-
colorToken: "primary"
|
|
3475
|
-
},
|
|
3476
|
-
borderRadius: "rounded-lg",
|
|
3477
|
-
affordance: { iconId: "ArrowRight" },
|
|
3478
|
-
effects: { hover: [{ effectId: "lift" }, {
|
|
3479
|
-
effectId: "background-on-hover",
|
|
3480
|
-
options: { colorToken: unsafeAsOpaqueButtonColourToken("secondary") }
|
|
3481
|
-
}] }
|
|
3482
|
-
}
|
|
3483
|
-
},
|
|
3484
|
-
secondary: {
|
|
3485
|
-
kind: "complete",
|
|
3486
|
-
appearance: {
|
|
3487
|
-
background: {
|
|
3488
|
-
type: "surface",
|
|
3489
|
-
role: "link"
|
|
3490
|
-
},
|
|
3491
|
-
borderRadius: "rounded-lg",
|
|
3492
|
-
border: { widthClass: "border" },
|
|
3493
|
-
effects: { hover: [{ effectId: "lift" }, {
|
|
3494
|
-
effectId: "background-on-hover",
|
|
3495
|
-
options: { colorToken: unsafeAsOpaqueButtonColourToken("surfaceAlt") }
|
|
3496
|
-
}] }
|
|
3497
|
-
}
|
|
3498
|
-
},
|
|
3499
|
-
outline: {
|
|
3500
|
-
kind: "complete",
|
|
3501
|
-
appearance: {
|
|
3502
|
-
background: {
|
|
3503
|
-
type: "surface",
|
|
3504
|
-
role: "link"
|
|
3505
|
-
},
|
|
3506
|
-
borderRadius: "rounded-lg",
|
|
3507
|
-
border: { widthClass: "border" },
|
|
3508
|
-
effects: { hover: [{ effectId: "lift" }, {
|
|
3509
|
-
effectId: "background-on-hover",
|
|
3510
|
-
options: { colorToken: unsafeAsOpaqueButtonColourToken("surfaceAlt") }
|
|
3511
|
-
}] }
|
|
3512
|
-
}
|
|
3513
|
-
},
|
|
3514
|
-
ghost: {
|
|
3515
|
-
kind: "complete",
|
|
3516
|
-
appearance: {
|
|
3517
|
-
background: {
|
|
3518
|
-
type: "surface",
|
|
3519
|
-
role: "link"
|
|
3520
|
-
},
|
|
3521
|
-
borderRadius: "rounded-lg",
|
|
3522
|
-
effects: { hover: [{ effectId: "lift" }] }
|
|
3523
|
-
}
|
|
3524
|
-
},
|
|
3525
|
-
accent: {
|
|
3526
|
-
kind: "complete",
|
|
3527
|
-
appearance: {
|
|
3528
|
-
background: {
|
|
3529
|
-
type: "solid",
|
|
3530
|
-
colorToken: "accent"
|
|
3531
|
-
},
|
|
3532
|
-
borderRadius: "rounded-lg",
|
|
3533
|
-
affordance: { iconId: "ArrowRight" },
|
|
3534
|
-
effects: { hover: [{ effectId: "lift" }] }
|
|
3535
|
-
}
|
|
3536
|
-
}
|
|
3537
|
-
}
|
|
3538
|
-
}
|
|
3539
|
-
});
|
|
3540
3625
|
const showtimePillRecipe = defineStaticButtonStyleRecipe({
|
|
3541
3626
|
id: "showtime-pill",
|
|
3542
3627
|
accessibilityLabel: "Bold uppercase pill buttons with playful movement",
|
|
@@ -3958,8 +4043,8 @@ const openCardRoleValue = "open";
|
|
|
3958
4043
|
*/
|
|
3959
4044
|
const surfaceCardRoleValues = [...cardVariantRoleValues, openCardRoleValue];
|
|
3960
4045
|
/**
|
|
3961
|
-
* The closed
|
|
3962
|
-
*
|
|
4046
|
+
* The closed role vocabulary Looks and blocks use for surfaced and boxless
|
|
4047
|
+
* card choices.
|
|
3963
4048
|
*
|
|
3964
4049
|
* - `none` — no site-style card surface; the block's own composition and
|
|
3965
4050
|
* the author's own card fields govern the item. This is *not*
|
|
@@ -3971,11 +4056,6 @@ const surfaceCardRoleValues = [...cardVariantRoleValues, openCardRoleValue];
|
|
|
3971
4056
|
* - `alternative` — the statement card carrying the site's personality
|
|
3972
4057
|
*/
|
|
3973
4058
|
const cardRoleValues = [...surfaceCardRoleValues, boxlessCardVariantValue];
|
|
3974
|
-
const legacyCardVariantRoleAliases = {
|
|
3975
|
-
variant1: "alternative",
|
|
3976
|
-
variant2: "alternative",
|
|
3977
|
-
statement: "alternative"
|
|
3978
|
-
};
|
|
3979
4059
|
const cardSpacingSchema = z.enum([
|
|
3980
4060
|
"none",
|
|
3981
4061
|
"compact",
|
|
@@ -4005,26 +4085,16 @@ const gradientDirectionSchema = z.enum([
|
|
|
4005
4085
|
"to-br",
|
|
4006
4086
|
"to-bl"
|
|
4007
4087
|
]);
|
|
4008
|
-
|
|
4088
|
+
z.enum(cardVariantRoleValues);
|
|
4009
4089
|
const surfaceCardRoleSchema = z.enum(surfaceCardRoleValues);
|
|
4010
4090
|
const cardRoleSchema = z.enum(cardRoleValues);
|
|
4011
|
-
/**
|
|
4012
|
-
* Historical name for the role vocabulary as it reaches box styles. Widened to
|
|
4013
|
-
* the full `CardRole` set — old values keep parsing, `open` now parses too.
|
|
4014
|
-
*/
|
|
4015
|
-
const boxStylesCardVariantSchema = cardRoleSchema;
|
|
4016
4091
|
function isCardVariantRole(value) {
|
|
4017
4092
|
return typeof value === "string" && cardVariantRoleValues.includes(value);
|
|
4018
4093
|
}
|
|
4019
4094
|
function normalizeCardVariantRole(value) {
|
|
4020
|
-
|
|
4021
|
-
if (typeof value !== "string") return null;
|
|
4022
|
-
return legacyCardVariantRoleAliases[value] ?? null;
|
|
4095
|
+
return isCardVariantRole(value) ? value : null;
|
|
4023
4096
|
}
|
|
4024
|
-
/**
|
|
4025
|
-
* The one untrusted-input boundary for the role vocabulary. Legacy alias values
|
|
4026
|
-
* (`variant1`, `variant2`, `statement`) normalize here and nowhere else.
|
|
4027
|
-
*/
|
|
4097
|
+
/** The one untrusted-input boundary for the closed role vocabulary. */
|
|
4028
4098
|
function normalizeCardRole(value) {
|
|
4029
4099
|
if (value === "none") return boxlessCardVariantValue;
|
|
4030
4100
|
if (value === "open") return openCardRoleValue;
|
|
@@ -4971,6 +5041,21 @@ const eventListTreatmentValues = [
|
|
|
4971
5041
|
"editorial-register",
|
|
4972
5042
|
"dense-index"
|
|
4973
5043
|
];
|
|
5044
|
+
const testimonialsCompositionTreatmentValues = [
|
|
5045
|
+
"open-editorial",
|
|
5046
|
+
"evergreen-lead",
|
|
5047
|
+
"room-and-response",
|
|
5048
|
+
"open-floor"
|
|
5049
|
+
];
|
|
5050
|
+
/**
|
|
5051
|
+
* How an offerings preview arranges its groups. Structure only — the group
|
|
5052
|
+
* card surface is the Look's `cardRole` and the site style's card system.
|
|
5053
|
+
*/
|
|
5054
|
+
const offeringsPreviewCompositionTreatmentValues = [
|
|
5055
|
+
"paired-feature-cards",
|
|
5056
|
+
"open-editorial-columns",
|
|
5057
|
+
"joined-programme-panel"
|
|
5058
|
+
];
|
|
4974
5059
|
const eyebrowTreatmentValues = [
|
|
4975
5060
|
"plain",
|
|
4976
5061
|
"accent",
|
|
@@ -5504,8 +5589,7 @@ const cardStylesOverrideSchema = z.object({
|
|
|
5504
5589
|
spacing: semanticSpacingSchema.nullable().optional(),
|
|
5505
5590
|
raised: z.boolean().nullable().optional(),
|
|
5506
5591
|
rounded: boxRoundedSchema.nullable().optional(),
|
|
5507
|
-
role: cardRoleSchema.nullable().optional()
|
|
5508
|
-
cardVariant: boxStylesCardVariantSchema.nullable().optional()
|
|
5592
|
+
role: cardRoleSchema.nullable().optional()
|
|
5509
5593
|
});
|
|
5510
5594
|
const blockStyleOverridesSchema = z.object({
|
|
5511
5595
|
sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
|
|
@@ -6394,7 +6478,12 @@ defineBlockAppearancePreset({
|
|
|
6394
6478
|
constraints: { layoutVariantKeys: ["cards"] },
|
|
6395
6479
|
design: {
|
|
6396
6480
|
sectionSurface: "base",
|
|
6397
|
-
contentFrame: plainFrame
|
|
6481
|
+
contentFrame: plainFrame,
|
|
6482
|
+
cardRole: "alternative",
|
|
6483
|
+
composition: {
|
|
6484
|
+
kind: "offerings-preview",
|
|
6485
|
+
treatment: "paired-feature-cards"
|
|
6486
|
+
}
|
|
6398
6487
|
}
|
|
6399
6488
|
}), defineBlockAppearancePreset({
|
|
6400
6489
|
id: "offerings-preview-open-editorial-columns",
|
|
@@ -6404,7 +6493,12 @@ defineBlockAppearancePreset({
|
|
|
6404
6493
|
constraints: { layoutVariantKeys: ["cards"] },
|
|
6405
6494
|
design: {
|
|
6406
6495
|
sectionSurface: "base",
|
|
6407
|
-
contentFrame: plainFrame
|
|
6496
|
+
contentFrame: plainFrame,
|
|
6497
|
+
cardRole: "open",
|
|
6498
|
+
composition: {
|
|
6499
|
+
kind: "offerings-preview",
|
|
6500
|
+
treatment: "open-editorial-columns"
|
|
6501
|
+
}
|
|
6408
6502
|
}
|
|
6409
6503
|
}), defineBlockAppearancePreset({
|
|
6410
6504
|
id: "offerings-preview-joined-programme-panel",
|
|
@@ -6414,7 +6508,12 @@ defineBlockAppearancePreset({
|
|
|
6414
6508
|
constraints: { layoutVariantKeys: ["cards"] },
|
|
6415
6509
|
design: {
|
|
6416
6510
|
sectionSurface: "base",
|
|
6417
|
-
contentFrame: plainFrame
|
|
6511
|
+
contentFrame: plainFrame,
|
|
6512
|
+
cardRole: "default",
|
|
6513
|
+
composition: {
|
|
6514
|
+
kind: "offerings-preview",
|
|
6515
|
+
treatment: "joined-programme-panel"
|
|
6516
|
+
}
|
|
6418
6517
|
}
|
|
6419
6518
|
}), defineBlockAppearancePreset({
|
|
6420
6519
|
id: "feature-cards-raised-rule",
|
|
@@ -6656,7 +6755,11 @@ defineBlockAppearancePreset({
|
|
|
6656
6755
|
constraints: { layoutVariantKeys: ["featured-editorial"] },
|
|
6657
6756
|
design: {
|
|
6658
6757
|
sectionSurface: "base",
|
|
6659
|
-
contentFrame: plainFrame
|
|
6758
|
+
contentFrame: plainFrame,
|
|
6759
|
+
composition: {
|
|
6760
|
+
kind: "testimonials",
|
|
6761
|
+
treatment: "evergreen-lead"
|
|
6762
|
+
}
|
|
6660
6763
|
}
|
|
6661
6764
|
}), defineBlockAppearancePreset({
|
|
6662
6765
|
id: "testimonials-room-and-response",
|
|
@@ -6666,7 +6769,11 @@ defineBlockAppearancePreset({
|
|
|
6666
6769
|
constraints: { layoutVariantKeys: ["featured-editorial"] },
|
|
6667
6770
|
design: {
|
|
6668
6771
|
sectionSurface: "base",
|
|
6669
|
-
contentFrame: plainFrame
|
|
6772
|
+
contentFrame: plainFrame,
|
|
6773
|
+
composition: {
|
|
6774
|
+
kind: "testimonials",
|
|
6775
|
+
treatment: "room-and-response"
|
|
6776
|
+
}
|
|
6670
6777
|
}
|
|
6671
6778
|
}), defineBlockAppearancePreset({
|
|
6672
6779
|
id: "testimonials-open-floor",
|
|
@@ -6676,7 +6783,11 @@ defineBlockAppearancePreset({
|
|
|
6676
6783
|
constraints: { layoutVariantKeys: ["featured-editorial"] },
|
|
6677
6784
|
design: {
|
|
6678
6785
|
sectionSurface: "base",
|
|
6679
|
-
contentFrame: plainFrame
|
|
6786
|
+
contentFrame: plainFrame,
|
|
6787
|
+
composition: {
|
|
6788
|
+
kind: "testimonials",
|
|
6789
|
+
treatment: "open-floor"
|
|
6790
|
+
}
|
|
6680
6791
|
}
|
|
6681
6792
|
}), defineBlockAppearancePreset({
|
|
6682
6793
|
id: "faq-base-accordion",
|
|
@@ -9574,7 +9685,8 @@ const curatedSiteStyles = [
|
|
|
9574
9685
|
buttonStyleChoices: [
|
|
9575
9686
|
buttonChoice("soft-pill"),
|
|
9576
9687
|
buttonChoice("pebble"),
|
|
9577
|
-
buttonChoice("confident-chip")
|
|
9688
|
+
buttonChoice("confident-chip"),
|
|
9689
|
+
buttonChoice("flat-ink")
|
|
9578
9690
|
],
|
|
9579
9691
|
paletteRecommendations: [
|
|
9580
9692
|
paletteRecommendation("soft-natural-sage"),
|
|
@@ -11086,6 +11198,16 @@ function parseNewsletterSignupDestinationProvider(value) {
|
|
|
11086
11198
|
return value === "riverbank" || value === "mailchimp" ? value : null;
|
|
11087
11199
|
}
|
|
11088
11200
|
//#endregion
|
|
11201
|
+
//#region ../core/src/event-series-behaviour.ts
|
|
11202
|
+
const SURFACE_EVENT_PRESET_VALUES = [
|
|
11203
|
+
"class",
|
|
11204
|
+
"course",
|
|
11205
|
+
"term",
|
|
11206
|
+
"workshop",
|
|
11207
|
+
"retreat",
|
|
11208
|
+
"performance"
|
|
11209
|
+
];
|
|
11210
|
+
//#endregion
|
|
11089
11211
|
//#region ../media-core/src/aspectTransforms.ts
|
|
11090
11212
|
function parseAspectRatioValue(value) {
|
|
11091
11213
|
if (typeof value === "number") return Number.isFinite(value) && value > 0 ? value : void 0;
|
|
@@ -11320,7 +11442,6 @@ const ALLOWED_TRANSFORM_IDS = [
|
|
|
11320
11442
|
"boxStyles.resolveRootStyle",
|
|
11321
11443
|
"boxStyles.semanticGap",
|
|
11322
11444
|
"boxStyles.semanticGapValue",
|
|
11323
|
-
"boxStyles.cardVariantClass",
|
|
11324
11445
|
"containerStyles.resolveBoxClassName"
|
|
11325
11446
|
];
|
|
11326
11447
|
new Set(ALLOWED_NODE_TYPES);
|
|
@@ -12731,8 +12852,41 @@ function containerStylesField(options = {}) {
|
|
|
12731
12852
|
return createBoxStylesFieldWithDepth("container", options);
|
|
12732
12853
|
}
|
|
12733
12854
|
function cardStylesField(options = {}) {
|
|
12855
|
+
if (options.controls === "role-only") return createRoleOnlyCardStylesField(options);
|
|
12734
12856
|
return createBoxStylesFieldWithDepth("card", options);
|
|
12735
12857
|
}
|
|
12858
|
+
function createRoleOnlyCardStylesField(options) {
|
|
12859
|
+
const { id = "_cardStyles", label = "Card styles", renderInHeader, intent } = options;
|
|
12860
|
+
return {
|
|
12861
|
+
id,
|
|
12862
|
+
type: "modal",
|
|
12863
|
+
label,
|
|
12864
|
+
required: false,
|
|
12865
|
+
schema: { fields: [{
|
|
12866
|
+
id: "role",
|
|
12867
|
+
type: "select",
|
|
12868
|
+
label: "Card style",
|
|
12869
|
+
description: "Choose a semantic card style from the active site style.",
|
|
12870
|
+
required: false,
|
|
12871
|
+
multiple: false,
|
|
12872
|
+
defaultValue: "default",
|
|
12873
|
+
options: cardVariantRoleValues.map((value) => ({
|
|
12874
|
+
value,
|
|
12875
|
+
label: value === "default" ? "Default" : "Alternative"
|
|
12876
|
+
}))
|
|
12877
|
+
}] },
|
|
12878
|
+
ui: {
|
|
12879
|
+
...typeof renderInHeader === "boolean" ? { renderInHeader } : {},
|
|
12880
|
+
...intent ? { intent } : {},
|
|
12881
|
+
modalConfig: {
|
|
12882
|
+
buttonLabel: label,
|
|
12883
|
+
description: "Choose the site-style card role.",
|
|
12884
|
+
buttonVariant: "outline",
|
|
12885
|
+
showCustomizedIndicator: true
|
|
12886
|
+
}
|
|
12887
|
+
}
|
|
12888
|
+
};
|
|
12889
|
+
}
|
|
12736
12890
|
//#endregion
|
|
12737
12891
|
//#region ../blocks/src/system/fields/imageShape.ts
|
|
12738
12892
|
const standardImageShapeOptions = [
|
|
@@ -13268,6 +13422,73 @@ const SEMANTIC_SPACING_VALUES = [
|
|
|
13268
13422
|
"spacious"
|
|
13269
13423
|
];
|
|
13270
13424
|
/**
|
|
13425
|
+
* Runtime type guard for validating spacing values.
|
|
13426
|
+
* Use this at system boundaries where data enters from external sources.
|
|
13427
|
+
*
|
|
13428
|
+
* @param value - Unknown value to validate
|
|
13429
|
+
* @returns true if value is a valid SemanticSpacing, with type narrowing
|
|
13430
|
+
*
|
|
13431
|
+
* @example
|
|
13432
|
+
* const userInput = 'medium';
|
|
13433
|
+
* if (isSemanticSpacing(userInput)) {
|
|
13434
|
+
* // TypeScript knows userInput is SemanticSpacing here
|
|
13435
|
+
* const classes = resolveSpacing(userInput, 'y');
|
|
13436
|
+
* }
|
|
13437
|
+
*/
|
|
13438
|
+
function isSemanticSpacing(value) {
|
|
13439
|
+
return typeof value === "string" && SEMANTIC_SPACING_VALUES.includes(value);
|
|
13440
|
+
}
|
|
13441
|
+
/**
|
|
13442
|
+
* Type-safe mapping from semantic spacing to CSS classes for sections (y-axis).
|
|
13443
|
+
*
|
|
13444
|
+
* Sections use vertical padding only to control spacing between blocks.
|
|
13445
|
+
* Horizontal padding (px-6) is handled separately via baseClass.
|
|
13446
|
+
*
|
|
13447
|
+
* The `satisfies` operator ensures all SemanticSpacing values are present at compile time.
|
|
13448
|
+
* TypeScript will error if any spacing value is missing or if extra keys exist.
|
|
13449
|
+
*/
|
|
13450
|
+
const SECTION_SPACING_MAP = {
|
|
13451
|
+
none: "rb-section-pad-none",
|
|
13452
|
+
compact: "rb-section-pad-compact",
|
|
13453
|
+
cozy: "rb-section-pad-cozy",
|
|
13454
|
+
medium: "rb-section-pad-medium",
|
|
13455
|
+
comfortable: "rb-section-pad-comfortable",
|
|
13456
|
+
spacious: "rb-section-pad-spacious"
|
|
13457
|
+
};
|
|
13458
|
+
/**
|
|
13459
|
+
* Type-safe mapping from semantic spacing to CSS classes for containers (all sides).
|
|
13460
|
+
*
|
|
13461
|
+
* Containers use padding on all sides for internal content spacing.
|
|
13462
|
+
*
|
|
13463
|
+
* The `satisfies` operator ensures all SemanticSpacing values are present at compile time.
|
|
13464
|
+
*/
|
|
13465
|
+
const CONTAINER_SPACING_MAP = {
|
|
13466
|
+
none: "rb-container-pad-none",
|
|
13467
|
+
compact: "rb-container-pad-compact",
|
|
13468
|
+
cozy: "rb-container-pad-cozy",
|
|
13469
|
+
medium: "rb-container-pad-medium",
|
|
13470
|
+
comfortable: "rb-container-pad-comfortable",
|
|
13471
|
+
spacious: "rb-container-pad-spacious"
|
|
13472
|
+
};
|
|
13473
|
+
/**
|
|
13474
|
+
* Resolve semantic spacing to CSS classes based on axis.
|
|
13475
|
+
*
|
|
13476
|
+
* This function guarantees that valid SemanticSpacing values always return a result.
|
|
13477
|
+
* Since spacing is typed, there's no need for fallback logic.
|
|
13478
|
+
*
|
|
13479
|
+
* @param spacing - Semantic spacing value (validated at compile time)
|
|
13480
|
+
* @param axis - Which axis to apply padding ('y' for sections, 'all' for containers)
|
|
13481
|
+
* @returns CSS class token string
|
|
13482
|
+
*
|
|
13483
|
+
* @example
|
|
13484
|
+
* resolveSpacing('medium', 'y') // => 'rb-section-pad-medium'
|
|
13485
|
+
* resolveSpacing('medium', 'all') // => 'rb-container-pad-medium'
|
|
13486
|
+
* resolveSpacing('compact') // => 'rb-section-pad-compact' (defaults to 'y' axis)
|
|
13487
|
+
*/
|
|
13488
|
+
function resolveSpacing(spacing, axis = "y") {
|
|
13489
|
+
return (axis === "y" ? SECTION_SPACING_MAP : CONTAINER_SPACING_MAP)[spacing];
|
|
13490
|
+
}
|
|
13491
|
+
/**
|
|
13271
13492
|
* Default spacing value for sections when not explicitly configured.
|
|
13272
13493
|
*/
|
|
13273
13494
|
const DEFAULT_SECTION_SPACING = "medium";
|
|
@@ -13692,11 +13913,194 @@ function footerNav(opts) {
|
|
|
13692
13913
|
return buildFooterNavAll(common);
|
|
13693
13914
|
}
|
|
13694
13915
|
//#endregion
|
|
13916
|
+
//#region ../blocks/src/system/transforms/registry/core.ts
|
|
13917
|
+
/**
|
|
13918
|
+
* Safely narrows unknown values to partial object shapes used by transforms.
|
|
13919
|
+
* Arrays are intentionally excluded.
|
|
13920
|
+
*/
|
|
13921
|
+
function asPartialObject(value) {
|
|
13922
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) return;
|
|
13923
|
+
return value;
|
|
13924
|
+
}
|
|
13925
|
+
//#endregion
|
|
13695
13926
|
//#region ../blocks/src/system/fields/backgroundContent.ts
|
|
13696
13927
|
function parseBackgroundContent(value) {
|
|
13697
13928
|
const result = boxBackgroundSchema.safeParse(value);
|
|
13698
13929
|
return result.success ? result.data : null;
|
|
13699
13930
|
}
|
|
13931
|
+
//#endregion
|
|
13932
|
+
//#region ../blocks/src/system/transforms/registry/_utils/boxStyleClassNames.ts
|
|
13933
|
+
/**
|
|
13934
|
+
* @file The one place box-style content becomes CSS classes.
|
|
13935
|
+
*
|
|
13936
|
+
* `boxStyles.all` runs this for the binding pipeline, and the React nodes that
|
|
13937
|
+
* render a card outside that pipeline (offerings-preview) call it directly, so
|
|
13938
|
+
* there is a single card-class emission path rather than copies that drift.
|
|
13939
|
+
*/
|
|
13940
|
+
/** The elevation class an elevated box gets when the theme defines a shadow. */
|
|
13941
|
+
const RAISED_SHADOW_CLASS = "rb-shadow-md";
|
|
13942
|
+
/** Radius values to their `rb-*` classes (defined in `rb-utilities.css`). */
|
|
13943
|
+
const ROUNDED_CLASSES = {
|
|
13944
|
+
sm: "rb-rounded-sm",
|
|
13945
|
+
md: "rb-rounded-md",
|
|
13946
|
+
lg: "rb-rounded-lg",
|
|
13947
|
+
xl: "rb-rounded-xl",
|
|
13948
|
+
"2xl": "rb-rounded-2xl",
|
|
13949
|
+
full: "rb-rounded-full"
|
|
13950
|
+
};
|
|
13951
|
+
function hasFixedFrameBackgroundMotion(value) {
|
|
13952
|
+
const background = parseBackgroundContent(asPartialObject(value)?.background);
|
|
13953
|
+
return (background?.type === "image" || background?.type === "video") && background.motion === "fixed-frame";
|
|
13954
|
+
}
|
|
13955
|
+
/**
|
|
13956
|
+
* The stable per-theme class for a card role. Generated card CSS emits these
|
|
13957
|
+
* aliases alongside each `.card-{id}` rule, so content addresses "this site
|
|
13958
|
+
* style's open card" without knowing which variant implements it.
|
|
13959
|
+
*/
|
|
13960
|
+
function cardRoleClass(role) {
|
|
13961
|
+
return `card-role-${role}`;
|
|
13962
|
+
}
|
|
13963
|
+
/**
|
|
13964
|
+
* The role class for a card slot the *block* owns structurally, where a Look
|
|
13965
|
+
* may still name the surface.
|
|
13966
|
+
*
|
|
13967
|
+
* Some layouts have more than one card slot and decide themselves which one is
|
|
13968
|
+
* the statement — the featured-editorial testimonials field is a lead voice
|
|
13969
|
+
* beside its supporting voices, and that is structure, not composition. Those
|
|
13970
|
+
* slots still have to honour a Look that picks a surface, or a role-picking
|
|
13971
|
+
* Look would silently no-op under the layout. So the slot carries a default
|
|
13972
|
+
* role and the Look's compiled role wins over it when there is one.
|
|
13973
|
+
*
|
|
13974
|
+
* An explicit `none` is honoured as boxlessness and emits no class, matching
|
|
13975
|
+
* how the composite emitter reads it.
|
|
13976
|
+
*/
|
|
13977
|
+
/**
|
|
13978
|
+
* The role a card renders with, and the one place a set of card styles becomes
|
|
13979
|
+
* a role.
|
|
13980
|
+
*
|
|
13981
|
+
* Precedence: a per-item override, then the `role` a Look or semantic field
|
|
13982
|
+
* compiled onto the block's card styles. Persisted inputs are normalized at
|
|
13983
|
+
* this boundary because raw block records do not pass through the theme schema.
|
|
13984
|
+
*/
|
|
13985
|
+
function resolveCardRoleForBoxStyles(input, override) {
|
|
13986
|
+
return override ?? normalizeCardRole(input.role);
|
|
13987
|
+
}
|
|
13988
|
+
/**
|
|
13989
|
+
* The card surface for a set of box styles: one role, one class vocabulary, so
|
|
13990
|
+
* a site-style swap re-skins the card whichever field named it.
|
|
13991
|
+
*/
|
|
13992
|
+
function cardSurface(input, override, fallback) {
|
|
13993
|
+
const role = resolveCardRoleForBoxStyles(input, override) ?? fallback ?? null;
|
|
13994
|
+
if (!role) return {
|
|
13995
|
+
role: null,
|
|
13996
|
+
classes: []
|
|
13997
|
+
};
|
|
13998
|
+
return {
|
|
13999
|
+
role,
|
|
14000
|
+
classes: role === "none" ? [] : [cardRoleClass(role)]
|
|
14001
|
+
};
|
|
14002
|
+
}
|
|
14003
|
+
const BOX_BORDER_WIDTHS = [
|
|
14004
|
+
"none",
|
|
14005
|
+
"1",
|
|
14006
|
+
"2",
|
|
14007
|
+
"3"
|
|
14008
|
+
];
|
|
14009
|
+
function parseBoxBorderWidth(value) {
|
|
14010
|
+
return BOX_BORDER_WIDTHS.find((width) => width === value);
|
|
14011
|
+
}
|
|
14012
|
+
/**
|
|
14013
|
+
* A box's border record with `{ width: 'none' }`-without-`enabled` resolved.
|
|
14014
|
+
*
|
|
14015
|
+
* That shape used to mean two different things to two different readers: the
|
|
14016
|
+
* old private offerings emitter read it as border-off, while the shared
|
|
14017
|
+
* emitter read it as "no opinion" and left the caller's base `rb-border` in
|
|
14018
|
+
* place. Same persisted bytes, opposite answers. A width of `none` says there
|
|
14019
|
+
* is no border, so it is read as `enabled: false` here — once, at the one
|
|
14020
|
+
* place box-style content is interpreted — and every reader downstream now
|
|
14021
|
+
* agrees.
|
|
14022
|
+
*
|
|
14023
|
+
* Nothing persisted carries the shape (the #1297 usage audit found zero rows;
|
|
14024
|
+
* the authoring UI cannot produce it, since the width control is gated on
|
|
14025
|
+
* `enabled === true`), so this is boundary hygiene rather than a migration.
|
|
14026
|
+
*/
|
|
14027
|
+
function normalizeBoxStylesBorder(value) {
|
|
14028
|
+
const border = asPartialObject(value);
|
|
14029
|
+
if (!border) return null;
|
|
14030
|
+
const width = parseBoxBorderWidth(border.width);
|
|
14031
|
+
return {
|
|
14032
|
+
enabled: border.enabled === true ? true : border.enabled === false || width === "none" ? false : null,
|
|
14033
|
+
width,
|
|
14034
|
+
colorToken: typeof border.colorToken === "string" && border.colorToken.trim() ? border.colorToken.trim() : void 0
|
|
14035
|
+
};
|
|
14036
|
+
}
|
|
14037
|
+
/** The border class a box's own border override asks for, if it has one. */
|
|
14038
|
+
function borderOverrideClass(input) {
|
|
14039
|
+
const border = normalizeBoxStylesBorder(input.border);
|
|
14040
|
+
if (!border) return null;
|
|
14041
|
+
if (border.enabled === false) return "rb-border-0";
|
|
14042
|
+
if (border.enabled !== true) return null;
|
|
14043
|
+
switch (border.width) {
|
|
14044
|
+
case "2": return "rb-border-2";
|
|
14045
|
+
case "3": return "rb-border-3";
|
|
14046
|
+
case "none": return "rb-border-0";
|
|
14047
|
+
case "1":
|
|
14048
|
+
case void 0: return "rb-border";
|
|
14049
|
+
}
|
|
14050
|
+
}
|
|
14051
|
+
/** The base class with any border utilities stripped, so an override can win. */
|
|
14052
|
+
function withoutBorderClasses(baseClass) {
|
|
14053
|
+
return baseClass.split(/\s+/).filter((token) => token && !/^rb-border(?:-(?:0|2|3))?$/.test(token)).join(" ");
|
|
14054
|
+
}
|
|
14055
|
+
/**
|
|
14056
|
+
* The padding class a box's spacing asks for, if it names a known value.
|
|
14057
|
+
*
|
|
14058
|
+
* An unknown value is dropped rather than guessed, and says so in development —
|
|
14059
|
+
* persisted content is the untrusted input here, and a silently missing padding
|
|
14060
|
+
* is much harder to trace back than a warning.
|
|
14061
|
+
*/
|
|
14062
|
+
function boxSpacingClass(input, axis) {
|
|
14063
|
+
const spacing = typeof input.spacing === "string" ? input.spacing.trim() : "";
|
|
14064
|
+
if (!spacing) return null;
|
|
14065
|
+
if (!isSemanticSpacing(spacing)) {
|
|
14066
|
+
if (process.env.NODE_ENV !== "production") console.warn(`[boxStyles] Invalid spacing value: "${spacing}". Expected one of: ${SEMANTIC_SPACING_VALUES.join(", ")}.`);
|
|
14067
|
+
return null;
|
|
14068
|
+
}
|
|
14069
|
+
return resolveSpacing(spacing, axis);
|
|
14070
|
+
}
|
|
14071
|
+
/** The radius class a box's corners ask for, if it names a known value. */
|
|
14072
|
+
function boxRoundedClass(input) {
|
|
14073
|
+
const rounded = typeof input.rounded === "string" ? input.rounded.trim() : "";
|
|
14074
|
+
if (!rounded || rounded === "none") return null;
|
|
14075
|
+
return ROUNDED_CLASSES[rounded] ?? null;
|
|
14076
|
+
}
|
|
14077
|
+
/** The elevation class to use, honouring an explicit `null` opt-out. */
|
|
14078
|
+
function raisedClassFor(options) {
|
|
14079
|
+
return options.raisedClass === void 0 ? RAISED_SHADOW_CLASS : options.raisedClass;
|
|
14080
|
+
}
|
|
14081
|
+
/**
|
|
14082
|
+
* The class list for a set of box styles: the caller's base class, the border /
|
|
14083
|
+
* spacing / elevation / radius overrides the box carries, and its card surface.
|
|
14084
|
+
*
|
|
14085
|
+
* Pure, so the React nodes that render a card outside the binding pipeline
|
|
14086
|
+
* (offerings-preview) share this one emission path with `boxStyles.all` instead
|
|
14087
|
+
* of keeping a copy that drifts.
|
|
14088
|
+
*/
|
|
14089
|
+
function boxStyleClassNames(value, options) {
|
|
14090
|
+
const input = value && typeof value === "object" ? value : {};
|
|
14091
|
+
const borderOverride = borderOverrideClass(input);
|
|
14092
|
+
const surface = cardSurface(input, options.cardRoleOverride, options.cardRoleFallback);
|
|
14093
|
+
const cardOwnsBorder = surface.role !== null && surface.role !== "none";
|
|
14094
|
+
return [
|
|
14095
|
+
borderOverride || cardOwnsBorder ? withoutBorderClasses(options.baseClass ?? "") : options.baseClass ?? "",
|
|
14096
|
+
borderOverride,
|
|
14097
|
+
options.includeSpacing === false ? null : boxSpacingClass(input, options.axis ?? "all"),
|
|
14098
|
+
input.raised === true ? raisedClassFor(options) : null,
|
|
14099
|
+
boxRoundedClass(input),
|
|
14100
|
+
...surface.classes,
|
|
14101
|
+
hasFixedFrameBackgroundMotion(input) ? "rb-bg-motion-fixed-frame-scope" : null
|
|
14102
|
+
].filter((token) => Boolean(token)).join(" ").trim() || "";
|
|
14103
|
+
}
|
|
13700
14104
|
new Set(tileTreatmentValues);
|
|
13701
14105
|
new Set(eventListTreatmentValues);
|
|
13702
14106
|
/**
|
|
@@ -13795,10 +14199,16 @@ function styledCard(children, opts, ...mods) {
|
|
|
13795
14199
|
const style = {
|
|
13796
14200
|
...opts.style ?? {},
|
|
13797
14201
|
borderColor: { $bind: {
|
|
13798
|
-
from: opts.stylesFrom,
|
|
14202
|
+
from: opts.itemRole?.from ?? opts.stylesFrom,
|
|
13799
14203
|
transforms: [{
|
|
13800
14204
|
id: "boxStyles.borderColor",
|
|
13801
|
-
options: {
|
|
14205
|
+
options: {
|
|
14206
|
+
returnEmptyForDefault: true,
|
|
14207
|
+
...opts.itemRole ? {
|
|
14208
|
+
stylesPath: opts.stylesFrom,
|
|
14209
|
+
...opts.itemRole.aliases ? { itemRoleAliases: opts.itemRole.aliases } : {}
|
|
14210
|
+
} : {}
|
|
14211
|
+
}
|
|
13802
14212
|
}]
|
|
13803
14213
|
} }
|
|
13804
14214
|
};
|
|
@@ -14917,18 +15327,73 @@ function buildGridCardsLayout(className) {
|
|
|
14917
15327
|
return el("div", { className }, buildResponsiveGridCards());
|
|
14918
15328
|
}
|
|
14919
15329
|
/**
|
|
15330
|
+
* The card slots the featured-editorial layout has, and the role each one
|
|
15331
|
+
* defaults to.
|
|
15332
|
+
*
|
|
15333
|
+
* Which slot is the statement is *structure*, so the layout decides it: this
|
|
15334
|
+
* variant exists to put one lead voice beside its supporting voices. But a Look
|
|
15335
|
+
* that picks a surface has to keep meaning something here, so the lead slot's
|
|
15336
|
+
* role is a default the Look's compiled `cardRole` wins over — see
|
|
15337
|
+
* `cardSlotRoleClass`. Supporting voices stay the quiet everyday card.
|
|
15338
|
+
*/
|
|
15339
|
+
const FEATURED_EDITORIAL_SLOTS = {
|
|
15340
|
+
lead: {
|
|
15341
|
+
/** Composition CSS addresses the lead card's geometry through this. */
|
|
15342
|
+
variantClass: "rb-testimonials-fe-card--feature",
|
|
15343
|
+
slotDefault: "alternative",
|
|
15344
|
+
followsLook: true
|
|
15345
|
+
},
|
|
15346
|
+
support: {
|
|
15347
|
+
variantClass: null,
|
|
15348
|
+
slotDefault: "default",
|
|
15349
|
+
followsLook: false
|
|
15350
|
+
}
|
|
15351
|
+
};
|
|
15352
|
+
/** Where the testimonials block's compiled card styles live. */
|
|
15353
|
+
const TESTIMONIALS_CARD_STYLES_PATH = "content._cardStyles";
|
|
15354
|
+
/**
|
|
15355
|
+
* The class list for one featured-editorial card slot.
|
|
15356
|
+
*
|
|
15357
|
+
* A slot that follows the Look has to resolve at render time, so it binds
|
|
15358
|
+
* through the shared card-class emitter rather than naming a role class here;
|
|
15359
|
+
* a slot that does not is a plain string built by the same composite emitter.
|
|
15360
|
+
*/
|
|
15361
|
+
function featuredEditorialCardClassName(slot) {
|
|
15362
|
+
const { variantClass, slotDefault, followsLook } = FEATURED_EDITORIAL_SLOTS[slot];
|
|
15363
|
+
const baseClass = ["rb-testimonials-fe-card", variantClass].filter(Boolean).join(" ");
|
|
15364
|
+
if (!followsLook) return boxStyleClassNames({}, {
|
|
15365
|
+
baseClass,
|
|
15366
|
+
cardRoleFallback: slotDefault,
|
|
15367
|
+
includeSpacing: false
|
|
15368
|
+
});
|
|
15369
|
+
return { $bind: {
|
|
15370
|
+
from: TESTIMONIALS_CARD_STYLES_PATH,
|
|
15371
|
+
transforms: [{
|
|
15372
|
+
id: "boxStyles.cardSlotRole",
|
|
15373
|
+
options: {
|
|
15374
|
+
baseClass,
|
|
15375
|
+
slotDefault
|
|
15376
|
+
}
|
|
15377
|
+
}],
|
|
15378
|
+
fallback: boxStyleClassNames({}, {
|
|
15379
|
+
baseClass,
|
|
15380
|
+
cardRoleFallback: slotDefault,
|
|
15381
|
+
includeSpacing: false
|
|
15382
|
+
})
|
|
15383
|
+
} };
|
|
15384
|
+
}
|
|
15385
|
+
/**
|
|
14920
15386
|
* Build a single "featured editorial" testimonial card.
|
|
14921
15387
|
*
|
|
14922
|
-
* This card type deliberately renders NO avatar/headshot:
|
|
14923
|
-
*
|
|
14924
|
-
*
|
|
14925
|
-
*
|
|
14926
|
-
* - `rb-testimonials-fe-card--plain` → white surface card
|
|
15388
|
+
* This card type deliberately renders NO avatar/headshot: a quote mark, the
|
|
15389
|
+
* quote body, then the author name and a context line. The card surface comes
|
|
15390
|
+
* from the slot's card role — the site style owns the fill, border, corners and
|
|
15391
|
+
* padding.
|
|
14927
15392
|
*
|
|
14928
15393
|
* Extra modifiers (`repeat`, `when`) are forwarded to the card node so the
|
|
14929
15394
|
* caller can drive first-vs-rest branching.
|
|
14930
15395
|
*/
|
|
14931
|
-
function buildFeaturedEditorialCard(
|
|
15396
|
+
function buildFeaturedEditorialCard(slot, ...mods) {
|
|
14932
15397
|
const quoteMark = text({
|
|
14933
15398
|
as: "span",
|
|
14934
15399
|
className: "rb-testimonials-fe-qmark",
|
|
@@ -14942,11 +15407,11 @@ function buildFeaturedEditorialCard(variantClass, ...mods) {
|
|
|
14942
15407
|
as: "span",
|
|
14943
15408
|
className: "rb-testimonials-fe-context"
|
|
14944
15409
|
}, when("testimonial.content.jobTitle"), bind("testimonial.content.jobTitle"))]);
|
|
14945
|
-
return el("div", { className:
|
|
15410
|
+
return el("div", { className: featuredEditorialCardClassName(slot) }, [el("div", { className: "card-content rb-testimonials-fe-card-body" }, [
|
|
14946
15411
|
quoteMark,
|
|
14947
15412
|
quote,
|
|
14948
15413
|
meta
|
|
14949
|
-
], ...mods);
|
|
15414
|
+
])], ...mods);
|
|
14950
15415
|
}
|
|
14951
15416
|
/**
|
|
14952
15417
|
* Build the "featured editorial" layout: an asymmetric two-column arrangement
|
|
@@ -14960,7 +15425,7 @@ function buildFeaturedEditorialCard(variantClass, ...mods) {
|
|
|
14960
15425
|
* index scope in context, so entry 0 produces no node in the rest column.
|
|
14961
15426
|
*/
|
|
14962
15427
|
function buildFeaturedEditorialLayout() {
|
|
14963
|
-
return el("div", { className: "rb-testimonials-fe-grid" }, [buildFeaturedEditorialCard("
|
|
15428
|
+
return el("div", { className: "rb-testimonials-fe-grid" }, [buildFeaturedEditorialCard("lead", repeat("data.entries", "testimonial", { limit: 1 })), el("div", { className: "rb-testimonials-fe-col" }, [buildFeaturedEditorialCard("support", repeat("data.entries", "testimonial", { indexName: "tIndex" }), when("tIndex", {
|
|
14964
15429
|
equals: 0,
|
|
14965
15430
|
not: true
|
|
14966
15431
|
}))])]);
|
|
@@ -15687,7 +16152,7 @@ const newsletterFormFragment = defineFragment({
|
|
|
15687
16152
|
});
|
|
15688
16153
|
//#endregion
|
|
15689
16154
|
//#region ../blocks/src/system/fragments/library/card.ts
|
|
15690
|
-
const cardVariantOptions
|
|
16155
|
+
const cardVariantOptions = cardVariantRoleValues.map((value) => ({
|
|
15691
16156
|
value,
|
|
15692
16157
|
label: value === "default" ? "Default" : "Alternative"
|
|
15693
16158
|
}));
|
|
@@ -15785,7 +16250,7 @@ const cardFragment = defineFragment({
|
|
|
15785
16250
|
description: "Choose a card style from your theme",
|
|
15786
16251
|
required: false,
|
|
15787
16252
|
defaultValue: "default",
|
|
15788
|
-
options: cardVariantOptions
|
|
16253
|
+
options: cardVariantOptions,
|
|
15789
16254
|
ui: { intent: "style" }
|
|
15790
16255
|
}
|
|
15791
16256
|
],
|
|
@@ -15794,7 +16259,10 @@ const cardFragment = defineFragment({
|
|
|
15794
16259
|
className: { $bind: {
|
|
15795
16260
|
from: "variant",
|
|
15796
16261
|
fallback: "default",
|
|
15797
|
-
transforms: [{
|
|
16262
|
+
transforms: [{
|
|
16263
|
+
id: "boxStyles.cardRoleClass",
|
|
16264
|
+
options: { baseClass: "" }
|
|
16265
|
+
}]
|
|
15798
16266
|
} }
|
|
15799
16267
|
}, [media({
|
|
15800
16268
|
className: "card-media rb-w-full rb-h-auto rb-object-cover",
|
|
@@ -20604,19 +21072,13 @@ const blockBookingPaymentCollectionOptionSchema = z.union([
|
|
|
20604
21072
|
]);
|
|
20605
21073
|
const blockBookingPaymentTermsSchema = z.object({ allowedOptions: z.array(blockBookingPaymentCollectionOptionSchema).min(1) });
|
|
20606
21074
|
//#endregion
|
|
20607
|
-
//#region ../blocks/src/system/blocks/
|
|
20608
|
-
|
|
20609
|
-
* Zod schema for course venue data
|
|
20610
|
-
*/
|
|
20611
|
-
const courseVenueSchema = z.object({
|
|
21075
|
+
//#region ../blocks/src/system/blocks/events/whole-series/schemas.ts
|
|
21076
|
+
const wholeSeriesVenueSchema = z.object({
|
|
20612
21077
|
id: z.string(),
|
|
20613
21078
|
name: z.string(),
|
|
20614
21079
|
address: z.string().nullable()
|
|
20615
21080
|
});
|
|
20616
|
-
|
|
20617
|
-
* Zod schema for course session (occurrence) data
|
|
20618
|
-
*/
|
|
20619
|
-
const courseSessionSchema = z.object({
|
|
21081
|
+
const wholeSeriesSessionSchema = z.object({
|
|
20620
21082
|
id: z.string(),
|
|
20621
21083
|
startsAt: z.string(),
|
|
20622
21084
|
endsAt: z.string(),
|
|
@@ -20624,14 +21086,14 @@ const courseSessionSchema = z.object({
|
|
|
20624
21086
|
capacityOverride: z.number().nullable().optional(),
|
|
20625
21087
|
overrides: z.record(z.string(), z.unknown()).nullable().optional()
|
|
20626
21088
|
});
|
|
20627
|
-
const
|
|
21089
|
+
const wholeSeriesTeamMemberSummarySchema = z.object({
|
|
20628
21090
|
id: z.string(),
|
|
20629
21091
|
name: z.string(),
|
|
20630
21092
|
roleLabel: z.string().nullable(),
|
|
20631
21093
|
summary: z.string().nullable(),
|
|
20632
21094
|
profilePath: z.string().nullable()
|
|
20633
21095
|
});
|
|
20634
|
-
const
|
|
21096
|
+
const wholeSeriesPricingOptionSchema = z.object({
|
|
20635
21097
|
id: z.string(),
|
|
20636
21098
|
name: z.string(),
|
|
20637
21099
|
description: z.string().nullable(),
|
|
@@ -20647,7 +21109,7 @@ const coursePricingOptionSchema = z.object({
|
|
|
20647
21109
|
"both"
|
|
20648
21110
|
]).nullable().optional()
|
|
20649
21111
|
});
|
|
20650
|
-
const
|
|
21112
|
+
const wholeSeriesPricingSchema = z.object({
|
|
20651
21113
|
bookingRequirement: z.enum(["none", "required"]),
|
|
20652
21114
|
pricingStrategy: z.enum([
|
|
20653
21115
|
"free",
|
|
@@ -20661,20 +21123,17 @@ const coursePricingSchema = z.object({
|
|
|
20661
21123
|
slidingMaxAmount: z.number().nullable().optional(),
|
|
20662
21124
|
slidingSuggestedAmount: z.number().nullable().optional(),
|
|
20663
21125
|
paymentTerms: blockBookingPaymentTermsSchema,
|
|
20664
|
-
options: z.array(
|
|
21126
|
+
options: z.array(wholeSeriesPricingOptionSchema)
|
|
20665
21127
|
});
|
|
20666
|
-
/**
|
|
20667
|
-
* Zod schema for public course data
|
|
20668
|
-
*/
|
|
20669
21128
|
const publicWholeSeriesOfferingSchema = z.object({
|
|
20670
21129
|
eventSeriesId: z.string(),
|
|
20671
21130
|
eventOfferingId: z.string(),
|
|
20672
21131
|
title: z.string(),
|
|
20673
21132
|
slug: z.string(),
|
|
20674
21133
|
description: z.unknown().nullable(),
|
|
20675
|
-
teamMembers: z.array(
|
|
21134
|
+
teamMembers: z.array(wholeSeriesTeamMemberSummarySchema).optional(),
|
|
20676
21135
|
enrollmentOpen: z.boolean(),
|
|
20677
|
-
pricing:
|
|
21136
|
+
pricing: wholeSeriesPricingSchema,
|
|
20678
21137
|
currency: z.string(),
|
|
20679
21138
|
paymentTerms: blockBookingPaymentTermsSchema,
|
|
20680
21139
|
enrollmentCapacity: z.number().nullable(),
|
|
@@ -20687,12 +21146,10 @@ const publicWholeSeriesOfferingSchema = z.object({
|
|
|
20687
21146
|
sessionsCount: z.number(),
|
|
20688
21147
|
enrolledCount: z.number(),
|
|
20689
21148
|
availableSpots: z.number().nullable(),
|
|
20690
|
-
sessions: z.array(
|
|
20691
|
-
venue:
|
|
21149
|
+
sessions: z.array(wholeSeriesSessionSchema),
|
|
21150
|
+
venue: wholeSeriesVenueSchema.nullable()
|
|
20692
21151
|
});
|
|
20693
|
-
|
|
20694
|
-
const publicCourseSchema = publicWholeSeriesOfferingSchema;
|
|
20695
|
-
const publicCoursesArraySchema = z.array(publicWholeSeriesOfferingSchema);
|
|
21152
|
+
const publicWholeSeriesOfferingsArraySchema = z.array(publicWholeSeriesOfferingSchema);
|
|
20696
21153
|
//#endregion
|
|
20697
21154
|
//#region ../blocks/src/system/blocks/events/shared/schemas.ts
|
|
20698
21155
|
const eventPresetSchema = z.enum([
|
|
@@ -21003,7 +21460,7 @@ const publicEventSchema = z.object({
|
|
|
21003
21460
|
acceptsMemberships: z.boolean().optional(),
|
|
21004
21461
|
wholeSeries: z.object({
|
|
21005
21462
|
eventSeriesId: z.string(),
|
|
21006
|
-
pricing:
|
|
21463
|
+
pricing: wholeSeriesPricingSchema,
|
|
21007
21464
|
currency: z.string(),
|
|
21008
21465
|
enrollmentOpen: z.boolean()
|
|
21009
21466
|
}).nullable().optional()
|
|
@@ -21012,24 +21469,19 @@ const publicEventSchema = z.object({
|
|
|
21012
21469
|
* Schema for an array of public events
|
|
21013
21470
|
*/
|
|
21014
21471
|
const publicEventsArraySchema = z.array(publicEventSchema);
|
|
21472
|
+
//#endregion
|
|
21473
|
+
//#region ../blocks/src/system/blocks/events/shared/fields.ts
|
|
21015
21474
|
/**
|
|
21016
21475
|
* Shared card styling fields for event blocks
|
|
21017
21476
|
*/
|
|
21018
21477
|
const cardStylingFields = [
|
|
21019
|
-
{
|
|
21020
|
-
id: "
|
|
21021
|
-
type: "select",
|
|
21478
|
+
cardStylesField({
|
|
21479
|
+
id: "_cardStyles",
|
|
21022
21480
|
label: "Card style",
|
|
21023
|
-
|
|
21024
|
-
|
|
21025
|
-
|
|
21026
|
-
|
|
21027
|
-
options: cardVariantRoleValues.map((value) => ({
|
|
21028
|
-
value,
|
|
21029
|
-
label: value === "default" ? "Default" : "Alternative"
|
|
21030
|
-
})),
|
|
21031
|
-
ui: { intent: "style" }
|
|
21032
|
-
},
|
|
21481
|
+
controls: "role-only",
|
|
21482
|
+
renderInHeader: false,
|
|
21483
|
+
intent: "style"
|
|
21484
|
+
}),
|
|
21033
21485
|
createButtonVariantField({ description: "Choose a button style from your theme" }),
|
|
21034
21486
|
{
|
|
21035
21487
|
id: "buttonText",
|
|
@@ -21168,14 +21620,7 @@ function normalizeIdList(parts) {
|
|
|
21168
21620
|
}
|
|
21169
21621
|
//#endregion
|
|
21170
21622
|
//#region ../blocks/src/system/blocks/events/shared/filtering.ts
|
|
21171
|
-
const eventSurfacePresetValues =
|
|
21172
|
-
"course",
|
|
21173
|
-
"term",
|
|
21174
|
-
"class",
|
|
21175
|
-
"workshop",
|
|
21176
|
-
"retreat",
|
|
21177
|
-
"performance"
|
|
21178
|
-
];
|
|
21623
|
+
const eventSurfacePresetValues = SURFACE_EVENT_PRESET_VALUES;
|
|
21179
21624
|
const eventSurfaceScopeValues = [
|
|
21180
21625
|
"all",
|
|
21181
21626
|
"regularClassSchedule",
|
|
@@ -21676,8 +22121,8 @@ const eventRegistrationHydrationSchemaShape = {
|
|
|
21676
22121
|
occurrenceContext: occurrenceContextSchema.optional(),
|
|
21677
22122
|
subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
|
|
21678
22123
|
events: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
|
|
21679
|
-
wholeSeriesOfferings:
|
|
21680
|
-
wholeSeriesOffering:
|
|
22124
|
+
wholeSeriesOfferings: publicWholeSeriesOfferingsArraySchema.nullable().optional(),
|
|
22125
|
+
wholeSeriesOffering: publicWholeSeriesOfferingSchema.nullable().optional(),
|
|
21681
22126
|
maxTickets: z.string().optional(),
|
|
21682
22127
|
showVenue: z.boolean().optional(),
|
|
21683
22128
|
showCapacity: z.boolean().optional(),
|
|
@@ -21699,12 +22144,13 @@ const eventRegistrationSourceSchema = z.object({
|
|
|
21699
22144
|
portalToken: z.string().nullable().optional(),
|
|
21700
22145
|
previewToken: z.string().nullable().optional(),
|
|
21701
22146
|
...eventRegistrationHydrationSchemaShape,
|
|
22147
|
+
subjectWholeSeriesOffering: publicWholeSeriesOfferingSchema.nullable().optional(),
|
|
21702
22148
|
className: z.string().nullable().optional(),
|
|
21703
22149
|
buttonText: z.string().nullable().optional(),
|
|
21704
22150
|
maxTickets: z.string().nullable().optional(),
|
|
21705
22151
|
stage: previewStageSchema.optional()
|
|
21706
22152
|
});
|
|
21707
|
-
const eventRegistrationDisplaySchema = z.object({
|
|
22153
|
+
const eventRegistrationDisplaySchema = z.discriminatedUnion("state", [z.object({
|
|
21708
22154
|
kind: z.literal("event-registration"),
|
|
21709
22155
|
state: z.literal("generic-shell"),
|
|
21710
22156
|
className: z.string().nullable(),
|
|
@@ -21712,7 +22158,13 @@ const eventRegistrationDisplaySchema = z.object({
|
|
|
21712
22158
|
bodyText: z.string(),
|
|
21713
22159
|
stepLabels: z.array(z.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
|
|
21714
22160
|
summaryButtonText: z.string()
|
|
21715
|
-
})
|
|
22161
|
+
}), z.object({
|
|
22162
|
+
kind: z.literal("event-registration"),
|
|
22163
|
+
state: z.literal("registration-closed"),
|
|
22164
|
+
className: z.string().nullable(),
|
|
22165
|
+
titleText: z.string(),
|
|
22166
|
+
bodyText: z.string()
|
|
22167
|
+
})]);
|
|
21716
22168
|
const eventRegistrationHydrationSchema = z.object(eventRegistrationHydrationSchemaShape);
|
|
21717
22169
|
const eventRegistrationRenderSchema = z.object({
|
|
21718
22170
|
display: eventRegistrationDisplaySchema,
|
|
@@ -21726,6 +22178,13 @@ z.object({
|
|
|
21726
22178
|
stage: previewStageSchema.optional()
|
|
21727
22179
|
});
|
|
21728
22180
|
function buildEventRegistrationDisplay(source) {
|
|
22181
|
+
if (resolveWholeSeriesOffering(source)?.enrollmentOpen === false) return {
|
|
22182
|
+
kind: "event-registration",
|
|
22183
|
+
state: "registration-closed",
|
|
22184
|
+
className: source.className ?? null,
|
|
22185
|
+
titleText: "Registration closed",
|
|
22186
|
+
bodyText: "This run is no longer open for bookings."
|
|
22187
|
+
};
|
|
21729
22188
|
const stepLabels = buildEventRegistrationShellStepLabels(source);
|
|
21730
22189
|
return {
|
|
21731
22190
|
kind: "event-registration",
|
|
@@ -21737,6 +22196,9 @@ function buildEventRegistrationDisplay(source) {
|
|
|
21737
22196
|
summaryButtonText: source.buttonText?.trim() || "Register"
|
|
21738
22197
|
};
|
|
21739
22198
|
}
|
|
22199
|
+
function resolveWholeSeriesOffering(source) {
|
|
22200
|
+
return source.wholeSeriesOffering ?? source.subjectWholeSeriesOffering ?? null;
|
|
22201
|
+
}
|
|
21740
22202
|
function buildEventRegistrationShellStepLabels(source) {
|
|
21741
22203
|
const scopedEvents = scopeEventRegistrationEvents(source);
|
|
21742
22204
|
if (scopedEvents.length === 0) return EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
|
|
@@ -21794,7 +22256,7 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
|
|
|
21794
22256
|
subject: source.subject ?? null,
|
|
21795
22257
|
events: source.events ?? null,
|
|
21796
22258
|
wholeSeriesOfferings: source.wholeSeriesOfferings ?? null,
|
|
21797
|
-
wholeSeriesOffering: source
|
|
22259
|
+
wholeSeriesOffering: resolveWholeSeriesOffering(source),
|
|
21798
22260
|
maxTickets: source.maxTickets ?? void 0,
|
|
21799
22261
|
showVenue: source.showVenue,
|
|
21800
22262
|
showCapacity: source.showCapacity,
|
|
@@ -22015,7 +22477,9 @@ const eventRegistrationBlockDefinition = {
|
|
|
22015
22477
|
fallback: false
|
|
22016
22478
|
} },
|
|
22017
22479
|
events: { $bind: { from: "data.events" } },
|
|
22018
|
-
wholeSeriesOffering: { $bind: { from: "data.
|
|
22480
|
+
wholeSeriesOffering: { $bind: { from: "data.selectedRunOffering.offering" } },
|
|
22481
|
+
subjectWholeSeriesOffering: { $bind: { from: "data.subjectWholeSeriesOffering.offering" } },
|
|
22482
|
+
wholeSeriesOfferings: { $bind: { from: "data.wholeSeriesOfferings" } },
|
|
22019
22483
|
sitePasses: { $bind: { from: "data.sitePasses" } },
|
|
22020
22484
|
siteMemberships: { $bind: { from: "data.siteMemberships" } },
|
|
22021
22485
|
stage: { $bind: {
|
|
@@ -22029,7 +22493,9 @@ const eventRegistrationBlockDefinition = {
|
|
|
22029
22493
|
runtime: eventRegistrationBlockRuntime,
|
|
22030
22494
|
dataSchemas: {
|
|
22031
22495
|
events: publicEventsArraySchema.optional(),
|
|
22032
|
-
|
|
22496
|
+
selectedRunOffering: z.object({ offering: publicWholeSeriesOfferingSchema }).optional(),
|
|
22497
|
+
subjectWholeSeriesOffering: z.object({ offering: publicWholeSeriesOfferingSchema }).optional(),
|
|
22498
|
+
wholeSeriesOfferings: z.array(publicWholeSeriesOfferingSchema).optional(),
|
|
22033
22499
|
sitePasses: publicPassProductCollectionSchema.optional(),
|
|
22034
22500
|
siteMemberships: publicMembershipProductCollectionSchema.optional(),
|
|
22035
22501
|
occurrenceContext: occurrenceContextSchema.optional()
|
|
@@ -22046,11 +22512,29 @@ const eventRegistrationBlockDefinition = {
|
|
|
22046
22512
|
} },
|
|
22047
22513
|
readProfile: "registration",
|
|
22048
22514
|
seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
|
|
22515
|
+
seriesIds: { $bind: {
|
|
22516
|
+
from: "$root.subject.availableEventSeriesIds",
|
|
22517
|
+
transforms: [{ id: "value.csv" }]
|
|
22518
|
+
} },
|
|
22519
|
+
runSeriesId: { $bind: { from: "$root.entrySubrouteContext.run.seriesId" } },
|
|
22049
22520
|
includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
|
|
22050
22521
|
},
|
|
22051
22522
|
mode: "server"
|
|
22052
22523
|
},
|
|
22053
|
-
|
|
22524
|
+
selectedRunOffering: {
|
|
22525
|
+
endpoint: "getPublicWholeSeriesOffering",
|
|
22526
|
+
params: {
|
|
22527
|
+
siteId: { $bind: { from: "$root.siteId" } },
|
|
22528
|
+
eventSeriesId: { $bind: { from: "$root.entrySubrouteContext.run.seriesId" } },
|
|
22529
|
+
stage: { $bind: {
|
|
22530
|
+
from: "$root.previewStage",
|
|
22531
|
+
fallback: "published"
|
|
22532
|
+
} }
|
|
22533
|
+
},
|
|
22534
|
+
requiredParams: ["eventSeriesId"],
|
|
22535
|
+
mode: "server"
|
|
22536
|
+
},
|
|
22537
|
+
subjectWholeSeriesOffering: {
|
|
22054
22538
|
endpoint: "getPublicWholeSeriesOffering",
|
|
22055
22539
|
when: { $bind: {
|
|
22056
22540
|
from: "$root.subject.isWholeSeriesBooking",
|
|
@@ -22067,6 +22551,22 @@ const eventRegistrationBlockDefinition = {
|
|
|
22067
22551
|
requiredParams: ["eventSeriesId"],
|
|
22068
22552
|
mode: "server"
|
|
22069
22553
|
},
|
|
22554
|
+
wholeSeriesOfferings: {
|
|
22555
|
+
endpoint: "listPublicWholeSeriesOfferings",
|
|
22556
|
+
params: {
|
|
22557
|
+
siteId: { $bind: { from: "$root.siteId" } },
|
|
22558
|
+
eventSeriesIds: { $bind: {
|
|
22559
|
+
from: "$root.subject.availableEventSeriesIds",
|
|
22560
|
+
transforms: [{ id: "value.csv" }]
|
|
22561
|
+
} },
|
|
22562
|
+
stage: { $bind: {
|
|
22563
|
+
from: "$root.previewStage",
|
|
22564
|
+
fallback: "published"
|
|
22565
|
+
} }
|
|
22566
|
+
},
|
|
22567
|
+
requiredParams: ["eventSeriesIds"],
|
|
22568
|
+
mode: "server"
|
|
22569
|
+
},
|
|
22070
22570
|
sitePasses: {
|
|
22071
22571
|
endpoint: "listPublicPasses",
|
|
22072
22572
|
params: { siteId: { $bind: { from: "$root.siteId" } } },
|
|
@@ -22081,13 +22581,9 @@ const eventRegistrationBlockDefinition = {
|
|
|
22081
22581
|
};
|
|
22082
22582
|
//#endregion
|
|
22083
22583
|
//#region ../blocks/src/system/runtime/nodes/course-registration.interactive.ts
|
|
22084
|
-
const
|
|
22085
|
-
siteId: z.string().optional(),
|
|
22086
|
-
apiBaseUrl: z.string().optional(),
|
|
22087
|
-
portalToken: z.string().nullable().optional(),
|
|
22584
|
+
const courseRegistrationHydrationSchemaShape = {
|
|
22088
22585
|
subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
|
|
22089
|
-
courses: z.array(
|
|
22090
|
-
className: z.string().nullable().optional(),
|
|
22586
|
+
courses: z.array(publicWholeSeriesOfferingSchema).nullable().optional(),
|
|
22091
22587
|
showSessions: z.boolean().optional(),
|
|
22092
22588
|
showPrice: z.boolean().optional(),
|
|
22093
22589
|
showCapacity: z.boolean().optional(),
|
|
@@ -22095,8 +22591,15 @@ const courseRegistrationSourceSchema = z.object({
|
|
|
22095
22591
|
successMessage: z.string().optional(),
|
|
22096
22592
|
waitlistMessage: z.string().optional(),
|
|
22097
22593
|
membershipMessage: z.string().optional(),
|
|
22594
|
+
buttonVariant: registrationButtonVariantSchema.optional()
|
|
22595
|
+
};
|
|
22596
|
+
const courseRegistrationSourceSchema = z.object({
|
|
22597
|
+
siteId: z.string().optional(),
|
|
22598
|
+
apiBaseUrl: z.string().optional(),
|
|
22599
|
+
portalToken: z.string().nullable().optional(),
|
|
22600
|
+
...courseRegistrationHydrationSchemaShape,
|
|
22601
|
+
className: z.string().nullable().optional(),
|
|
22098
22602
|
buttonText: z.string().nullable().optional(),
|
|
22099
|
-
buttonVariant: registrationButtonVariantSchema.optional(),
|
|
22100
22603
|
stage: previewStageSchema.optional()
|
|
22101
22604
|
});
|
|
22102
22605
|
const courseRegistrationDisplaySchema = z.object({
|
|
@@ -22105,18 +22608,7 @@ const courseRegistrationDisplaySchema = z.object({
|
|
|
22105
22608
|
className: z.string().nullable(),
|
|
22106
22609
|
summaryButtonText: z.string()
|
|
22107
22610
|
});
|
|
22108
|
-
const courseRegistrationHydrationSchema = z.object(
|
|
22109
|
-
subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
|
|
22110
|
-
courses: z.array(publicCourseSchema).nullable().optional(),
|
|
22111
|
-
showSessions: z.boolean().optional(),
|
|
22112
|
-
showPrice: z.boolean().optional(),
|
|
22113
|
-
showCapacity: z.boolean().optional(),
|
|
22114
|
-
showVenue: z.boolean().optional(),
|
|
22115
|
-
successMessage: z.string().optional(),
|
|
22116
|
-
waitlistMessage: z.string().optional(),
|
|
22117
|
-
membershipMessage: z.string().optional(),
|
|
22118
|
-
buttonVariant: registrationButtonVariantSchema.optional()
|
|
22119
|
-
});
|
|
22611
|
+
const courseRegistrationHydrationSchema = z.object(courseRegistrationHydrationSchemaShape);
|
|
22120
22612
|
const courseRegistrationRenderSchema = z.object({
|
|
22121
22613
|
display: courseRegistrationDisplaySchema,
|
|
22122
22614
|
hydration: courseRegistrationHydrationSchema
|
|
@@ -22321,7 +22813,7 @@ const courseRegistrationBlockDefinition = {
|
|
|
22321
22813
|
})]
|
|
22322
22814
|
}),
|
|
22323
22815
|
runtime: courseRegistrationBlockRuntime,
|
|
22324
|
-
dataSchemas: { courses:
|
|
22816
|
+
dataSchemas: { courses: publicWholeSeriesOfferingsArraySchema.optional() },
|
|
22325
22817
|
dataLoaders: { courses: {
|
|
22326
22818
|
endpoint: "listPublicWholeSeriesOfferings",
|
|
22327
22819
|
params: {
|
|
@@ -22392,6 +22884,22 @@ const eventDetailsManifest = createBlockManifest({
|
|
|
22392
22884
|
defaultValue: true,
|
|
22393
22885
|
ui: { intent: "display" }
|
|
22394
22886
|
},
|
|
22887
|
+
{
|
|
22888
|
+
id: "showTitle",
|
|
22889
|
+
type: "boolean",
|
|
22890
|
+
label: "Show event title",
|
|
22891
|
+
required: false,
|
|
22892
|
+
defaultValue: false,
|
|
22893
|
+
ui: { intent: "display" }
|
|
22894
|
+
},
|
|
22895
|
+
{
|
|
22896
|
+
id: "showDescription",
|
|
22897
|
+
type: "boolean",
|
|
22898
|
+
label: "Show event description",
|
|
22899
|
+
required: false,
|
|
22900
|
+
defaultValue: false,
|
|
22901
|
+
ui: { intent: "display" }
|
|
22902
|
+
},
|
|
22395
22903
|
{
|
|
22396
22904
|
id: "showMap",
|
|
22397
22905
|
type: "boolean",
|
|
@@ -22428,10 +22936,22 @@ const eventDetailsManifest = createBlockManifest({
|
|
|
22428
22936
|
{
|
|
22429
22937
|
value: "10",
|
|
22430
22938
|
label: "10 dates"
|
|
22939
|
+
},
|
|
22940
|
+
{
|
|
22941
|
+
value: "all",
|
|
22942
|
+
label: "All dates"
|
|
22431
22943
|
}
|
|
22432
22944
|
],
|
|
22433
22945
|
ui: { intent: "display" }
|
|
22434
22946
|
},
|
|
22947
|
+
{
|
|
22948
|
+
id: "showCapacity",
|
|
22949
|
+
type: "boolean",
|
|
22950
|
+
label: "Show capacity",
|
|
22951
|
+
required: false,
|
|
22952
|
+
defaultValue: false,
|
|
22953
|
+
ui: { intent: "display" }
|
|
22954
|
+
},
|
|
22435
22955
|
{
|
|
22436
22956
|
id: "showCost",
|
|
22437
22957
|
type: "boolean",
|
|
@@ -22474,6 +22994,8 @@ const eventDetailsManifest = createBlockManifest({
|
|
|
22474
22994
|
} },
|
|
22475
22995
|
events: { $bind: { from: "data.eventDetailsData.events" } },
|
|
22476
22996
|
showVenue: { $bind: { from: "content.showVenue" } },
|
|
22997
|
+
showTitle: { $bind: { from: "content.showTitle" } },
|
|
22998
|
+
showDescription: { $bind: { from: "content.showDescription" } },
|
|
22477
22999
|
showMap: { $bind: { from: "content.showMap" } },
|
|
22478
23000
|
showOtherDates: { $bind: { from: "content.showOtherDates" } },
|
|
22479
23001
|
otherDatesLimit: { $bind: {
|
|
@@ -22484,6 +23006,10 @@ const eventDetailsManifest = createBlockManifest({
|
|
|
22484
23006
|
from: "content.showCost",
|
|
22485
23007
|
fallback: true
|
|
22486
23008
|
} },
|
|
23009
|
+
showCapacity: { $bind: {
|
|
23010
|
+
from: "content.showCapacity",
|
|
23011
|
+
fallback: false
|
|
23012
|
+
} },
|
|
22487
23013
|
showAcceptedPasses: { $bind: {
|
|
22488
23014
|
from: "content.showAcceptedPasses",
|
|
22489
23015
|
fallback: true
|
|
@@ -22538,6 +23064,11 @@ const eventDetailsBlockDefinition = {
|
|
|
22538
23064
|
limit: "100",
|
|
22539
23065
|
readProfile: "details",
|
|
22540
23066
|
seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
|
|
23067
|
+
seriesIds: { $bind: {
|
|
23068
|
+
from: "$root.subject.availableEventSeriesIds",
|
|
23069
|
+
transforms: [{ id: "value.csv" }]
|
|
23070
|
+
} },
|
|
23071
|
+
runSeriesId: { $bind: { from: "$root.entrySubrouteContext.run.seriesId" } },
|
|
22541
23072
|
includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
|
|
22542
23073
|
},
|
|
22543
23074
|
mode: "server"
|
|
@@ -22723,7 +23254,7 @@ const courseDetailsBlockDefinition = {
|
|
|
22723
23254
|
})], { gap: "lg" })
|
|
22724
23255
|
})]
|
|
22725
23256
|
}),
|
|
22726
|
-
dataSchemas: { courses:
|
|
23257
|
+
dataSchemas: { courses: publicWholeSeriesOfferingsArraySchema.optional() },
|
|
22727
23258
|
dataLoaders: { courses: {
|
|
22728
23259
|
endpoint: "listPublicWholeSeriesOfferings",
|
|
22729
23260
|
params: {
|
|
@@ -22842,8 +23373,8 @@ const eventSpotlightBlockDefinition = {
|
|
|
22842
23373
|
from: "content.columns",
|
|
22843
23374
|
fallback: "3"
|
|
22844
23375
|
} },
|
|
22845
|
-
|
|
22846
|
-
from: "content.
|
|
23376
|
+
cardRole: { $bind: {
|
|
23377
|
+
from: "content._cardStyles.role",
|
|
22847
23378
|
fallback: "default"
|
|
22848
23379
|
} },
|
|
22849
23380
|
buttonVariant: { $bind: {
|
|
@@ -23005,6 +23536,7 @@ const eventCollectionSourceSchemaShape = {
|
|
|
23005
23536
|
showVenue: z.boolean().nullable().optional(),
|
|
23006
23537
|
showMap: z.boolean().nullable().optional(),
|
|
23007
23538
|
showCapacity: z.boolean().nullable().optional(),
|
|
23539
|
+
cardRole: cardRoleSchema.optional(),
|
|
23008
23540
|
buttonVariant: eventButtonVariantSchema.optional(),
|
|
23009
23541
|
buttonText: z.string().optional(),
|
|
23010
23542
|
emptyMessage: z.string().optional(),
|
|
@@ -23032,6 +23564,7 @@ const eventCollectionDisplaySchemaShape = {
|
|
|
23032
23564
|
showVenue: z.boolean(),
|
|
23033
23565
|
showMap: z.boolean(),
|
|
23034
23566
|
showCapacity: z.boolean(),
|
|
23567
|
+
cardRole: cardRoleSchema,
|
|
23035
23568
|
buttonVariant: eventButtonVariantSchema,
|
|
23036
23569
|
buttonText: z.string(),
|
|
23037
23570
|
emptyMessage: z.string()
|
|
@@ -23081,6 +23614,7 @@ function buildEventCollectionPresentationDisplay(source) {
|
|
|
23081
23614
|
showVenue: source.showVenue ?? true,
|
|
23082
23615
|
showMap: source.showMap ?? true,
|
|
23083
23616
|
showCapacity: source.showCapacity ?? true,
|
|
23617
|
+
cardRole: source.cardRole ?? "default",
|
|
23084
23618
|
buttonVariant: source.buttonVariant ?? "primary",
|
|
23085
23619
|
buttonText: source.buttonText ?? "Book",
|
|
23086
23620
|
emptyMessage: source.emptyMessage ?? "No upcoming events scheduled."
|
|
@@ -23098,8 +23632,6 @@ function buildEventCollectionHydration(source) {
|
|
|
23098
23632
|
}
|
|
23099
23633
|
//#endregion
|
|
23100
23634
|
//#region ../blocks/src/system/runtime/nodes/events/EventListing.interactive.ts
|
|
23101
|
-
const legacyEventCardVariantSchema = z.enum(["variant1", "variant2"]);
|
|
23102
|
-
const eventCardVariantInputSchema = z.union([cardVariantRoleSchema, legacyEventCardVariantSchema]);
|
|
23103
23635
|
const cardOrientationSchema = z.enum(["vertical", "horizontal"]);
|
|
23104
23636
|
const eventSurfaceScopeSchema = z.enum(eventSurfaceScopeValues);
|
|
23105
23637
|
const eventScheduleScopeSchema = z.enum(eventScheduleScopeValues);
|
|
@@ -23114,7 +23646,7 @@ const eventListingSourceSchema = z.object({
|
|
|
23114
23646
|
paginationMode: z.enum(["loadMore", "seeAllLink"]).optional(),
|
|
23115
23647
|
seeAllUrl: z.string().optional(),
|
|
23116
23648
|
loadMoreText: z.string().optional(),
|
|
23117
|
-
|
|
23649
|
+
cardRole: cardRoleSchema.optional(),
|
|
23118
23650
|
buttonVariant: eventButtonVariantSchema.optional(),
|
|
23119
23651
|
buttonText: z.string().optional(),
|
|
23120
23652
|
showVenue: z.boolean().optional(),
|
|
@@ -23136,7 +23668,7 @@ const eventListingDisplaySchema = z.object({
|
|
|
23136
23668
|
emptyMessage: z.string(),
|
|
23137
23669
|
loadingMessage: z.string(),
|
|
23138
23670
|
containerClass: z.string(),
|
|
23139
|
-
|
|
23671
|
+
cardRole: cardRoleSchema,
|
|
23140
23672
|
buttonVariant: eventButtonVariantSchema,
|
|
23141
23673
|
buttonText: z.string(),
|
|
23142
23674
|
showVenue: z.boolean(),
|
|
@@ -23192,7 +23724,7 @@ const eventListingBlockRuntime = defineProgressiveBlockRuntime({
|
|
|
23192
23724
|
emptyMessage: source.emptyMessage ?? "No upcoming events scheduled.",
|
|
23193
23725
|
loadingMessage: "Loading events…",
|
|
23194
23726
|
containerClass: getContainerClass(layout, source.columns ?? "3"),
|
|
23195
|
-
|
|
23727
|
+
cardRole: source.cardRole ?? "default",
|
|
23196
23728
|
buttonVariant: source.buttonVariant ?? "primary",
|
|
23197
23729
|
buttonText: source.buttonText ?? "Book",
|
|
23198
23730
|
showVenue: source.showVenue ?? true,
|
|
@@ -23514,8 +24046,8 @@ const eventListingBlockDefinition = {
|
|
|
23514
24046
|
from: "content.loadMoreText",
|
|
23515
24047
|
fallback: "Load more events"
|
|
23516
24048
|
} },
|
|
23517
|
-
|
|
23518
|
-
from: "content.
|
|
24049
|
+
cardRole: { $bind: {
|
|
24050
|
+
from: "content._cardStyles.role",
|
|
23519
24051
|
fallback: "default"
|
|
23520
24052
|
} },
|
|
23521
24053
|
buttonVariant: { $bind: {
|
|
@@ -23785,6 +24317,10 @@ const eventCalendarLayout = [styledSection({
|
|
|
23785
24317
|
filterCategoryIds: { $bind: { from: "content.filterCategoryIds" } },
|
|
23786
24318
|
filterStaffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
|
|
23787
24319
|
filterVenueId: { $bind: { from: "content.filterVenueId" } },
|
|
24320
|
+
cardRole: { $bind: {
|
|
24321
|
+
from: "content._cardStyles.role",
|
|
24322
|
+
fallback: "default"
|
|
24323
|
+
} },
|
|
23788
24324
|
buttonVariant: { $bind: {
|
|
23789
24325
|
from: "content.buttonVariant",
|
|
23790
24326
|
fallback: "primary"
|
|
@@ -24417,11 +24953,11 @@ const eventCalendarAdditionalFields = [
|
|
|
24417
24953
|
searchThreshold: 8
|
|
24418
24954
|
}
|
|
24419
24955
|
}),
|
|
24420
|
-
...cardStylingFields.
|
|
24956
|
+
...cardStylingFields.map((field) => ({
|
|
24421
24957
|
...field,
|
|
24422
24958
|
ui: {
|
|
24423
24959
|
...field.ui ?? {},
|
|
24424
|
-
intent: field.id === "buttonVariant" ? "style" : "content"
|
|
24960
|
+
intent: field.id === "_cardStyles" || field.id === "buttonVariant" ? "style" : "content"
|
|
24425
24961
|
}
|
|
24426
24962
|
})),
|
|
24427
24963
|
{
|
|
@@ -25188,7 +25724,7 @@ const offeringsPreviewBlockDefinition = {
|
|
|
25188
25724
|
dataSchemas: {
|
|
25189
25725
|
...offeringsPreviewEventDataSchemas,
|
|
25190
25726
|
routeCandidates: publicRouteCandidatesSchema.optional(),
|
|
25191
|
-
courses:
|
|
25727
|
+
courses: publicWholeSeriesOfferingsArraySchema.optional()
|
|
25192
25728
|
},
|
|
25193
25729
|
dataLoaders: {
|
|
25194
25730
|
...offeringsPreviewEventDataLoaders,
|
|
@@ -26660,7 +27196,7 @@ const audioPlayerBlockDefinition = { manifest: createBlockManifest({
|
|
|
26660
27196
|
}
|
|
26661
27197
|
],
|
|
26662
27198
|
layout: styledSection({
|
|
26663
|
-
children: stack({ className: "rb-container rb-mx-auto rb-max-w-3xl" }, [el("div", { className: "
|
|
27199
|
+
children: stack({ className: "rb-container rb-mx-auto rb-max-w-3xl" }, [el("div", { className: boxStyleClassNames({ role: "default" }, {}) }, [media({
|
|
26664
27200
|
className: "card-media rb-aspect-video rb-w-full rb-object-cover",
|
|
26665
27201
|
size: {
|
|
26666
27202
|
width: 960,
|
|
@@ -29712,16 +30248,27 @@ function eventListCapable() {
|
|
|
29712
30248
|
looks: "supported",
|
|
29713
30249
|
sectionSurfaces: "supported",
|
|
29714
30250
|
contentFrames: ["plain", "panel"],
|
|
29715
|
-
cardRoles: "
|
|
30251
|
+
cardRoles: "supported",
|
|
29716
30252
|
eventListTreatments
|
|
29717
30253
|
});
|
|
29718
30254
|
}
|
|
30255
|
+
function eventSpotlightCapable() {
|
|
30256
|
+
return declareBlockDesignCapability({
|
|
30257
|
+
sectionSurfaces: "supported",
|
|
30258
|
+
contentFrames: ["plain"],
|
|
30259
|
+
cardRoles: "supported"
|
|
30260
|
+
});
|
|
30261
|
+
}
|
|
29719
30262
|
function offeringsPreviewCapable() {
|
|
29720
30263
|
return declareBlockDesignCapability({
|
|
29721
30264
|
looks: "supported",
|
|
29722
30265
|
sectionSurfaces: "supported",
|
|
29723
30266
|
contentFrames: ["plain"],
|
|
29724
|
-
cardRoles: "supported"
|
|
30267
|
+
cardRoles: "supported",
|
|
30268
|
+
compositions: {
|
|
30269
|
+
kind: "offerings-preview",
|
|
30270
|
+
treatments: offeringsPreviewCompositionTreatmentValues
|
|
30271
|
+
}
|
|
29725
30272
|
});
|
|
29726
30273
|
}
|
|
29727
30274
|
function defaultBoundaryBias(visualWeight) {
|
|
@@ -30014,7 +30561,7 @@ const systemBlockDefinitions = [
|
|
|
30014
30561
|
cardRoles: "supported",
|
|
30015
30562
|
compositions: {
|
|
30016
30563
|
kind: "testimonials",
|
|
30017
|
-
treatments:
|
|
30564
|
+
treatments: testimonialsCompositionTreatmentValues
|
|
30018
30565
|
},
|
|
30019
30566
|
headingDecorationCapability: {
|
|
30020
30567
|
kind: "supported",
|
|
@@ -30169,7 +30716,7 @@ const systemBlockDefinitions = [
|
|
|
30169
30716
|
weight: "standard"
|
|
30170
30717
|
})]
|
|
30171
30718
|
})),
|
|
30172
|
-
withDesignCapability("block.event-spotlight", eventSpotlightBlockDefinition,
|
|
30719
|
+
withDesignCapability("block.event-spotlight", eventSpotlightBlockDefinition, eventSpotlightCapable(), defineBlockDesignMetadata({
|
|
30173
30720
|
flow: offeringsFlow,
|
|
30174
30721
|
layoutProfiles: [layoutProfile({
|
|
30175
30722
|
variantKey: "default",
|