@riverbankcms/sdk 0.130.2 → 0.134.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 +13 -3
- package/dist/{PreviewEditorSidebar-BY-1QdE2.mjs → PreviewEditorSidebar-DfRhJPFQ.mjs} +351 -95
- package/dist/{PreviewEditorUI-BS34jI9_.mjs → PreviewEditorUI-Dppxcr_g.mjs} +3 -3
- package/dist/{PreviewQueryProvider-BD0kOjtI.mjs → PreviewQueryProvider-D51gQaG3.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-B1pWnhu-.mjs → SdkPreviewModeRuntime-8CyGCXir.mjs} +91 -21
- package/dist/{SiteChromeCustomizeContext-BhUG_72i.mjs → SiteChromeCustomizeContext-DVMTMvqA.mjs} +6896 -4335
- package/dist/_dts/ai/src/contracts/proposals.d.ts +1105 -533
- package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +363 -276
- package/dist/_dts/api/src/accountApi.d.ts +5 -5
- package/dist/_dts/api/src/appointmentEndpointDefinitions.d.ts +1 -1
- package/dist/_dts/api/src/bookingConfig.d.ts +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/bookingOperations.d.ts +2 -14
- package/dist/_dts/api/src/bookingVerticals.d.ts +1 -140
- package/dist/_dts/api/src/bookings.d.ts +2 -2
- package/dist/_dts/api/src/commercePortalEndpoints.d.ts +45 -12
- package/dist/_dts/api/src/contentRuntime.d.ts +3 -2
- package/dist/_dts/api/src/courseEndpointDefinitions.d.ts +2 -2
- package/dist/_dts/api/src/courses.d.ts +1 -19
- package/dist/_dts/api/src/endpoints.d.ts +469 -349
- 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/contracts.d.ts +9 -6
- package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +3 -4
- package/dist/_dts/api/src/navigation/linkResolver.d.ts +6 -2
- package/dist/_dts/api/src/navigation/types.d.ts +23 -6
- package/dist/_dts/api/src/navigation.d.ts +1 -1
- package/dist/_dts/api/src/publicBookingService.d.ts +15 -0
- package/dist/_dts/api/src/publicEventEndpointDefinitions.d.ts +11 -0
- package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +28 -13
- package/dist/_dts/api/src/publicExperience/sharedTypes.d.ts +2 -0
- package/dist/_dts/api/src/publicExperience/wholeSeriesEndpoints.d.ts +3 -0
- package/dist/_dts/api/src/sdk-event-upsert.d.ts +3 -3
- 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 +64 -54
- package/dist/_dts/api/src/siteBanner.d.ts +4 -2
- 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 +2 -3
- package/dist/_dts/api/src/webhooks.d.ts +12 -12
- package/dist/_dts/blocks/src/PageRenderer.d.ts +2 -13
- package/dist/_dts/blocks/src/client.d.ts +1 -1
- package/dist/_dts/blocks/src/contracts/non-block-islands.d.ts +9 -0
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +54 -116
- package/dist/_dts/blocks/src/index.d.ts +4 -3
- package/dist/_dts/blocks/src/primitives/content/components/RichText.d.ts +2 -2
- package/dist/_dts/blocks/src/primitives/content/primitives.d.ts +1 -0
- package/dist/_dts/blocks/src/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 +42 -20
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +5 -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 +84 -0
- package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +4 -4
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +148 -148
- package/dist/_dts/blocks/src/system/blocks/offerings-preview/model.d.ts +3 -2
- package/dist/_dts/blocks/src/system/blocks/shared/bookingConsent.d.ts +36 -0
- package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +7 -8
- package/dist/_dts/blocks/src/system/manifest/hydrateLinks.d.ts +9 -2
- package/dist/_dts/blocks/src/system/manifest/resolveBlockData.d.ts +8 -0
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +79 -79
- package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +2 -11
- package/dist/_dts/blocks/src/system/runtime/api/types/courses.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/blockComposition.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/components/multi-step/DynamicFormFields.d.ts +3 -19
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +45 -72
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +22 -37
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessWholeSeriesRegistrationFlow.d.ts +6 -6
- package/dist/_dts/blocks/src/system/runtime/hooks/useSelectedAppointmentConsentForm.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.consent.d.ts +10 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.field-values.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.fields.d.ts +21 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +38 -144
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +5 -19
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +3 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/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/AttendeeDetailsStep.d.ts +2 -0
- 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 +21 -4
- 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 +6 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/validation.d.ts +2 -1
- 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 +46 -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 +7 -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 +51 -14
- package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/shared/components/BookingConsentAgreement.d.ts +7 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/DiscountCodeDisclosure.d.ts +12 -12
- package/dist/_dts/blocks/src/system/runtime/shared/types.d.ts +1 -0
- 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/blocks/src/system/types/link.d.ts +7 -1
- 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/content-model/src/content-types/schema.d.ts +4 -4
- package/dist/_dts/core/src/booking-consent.d.ts +8 -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 +4 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +81 -3
- package/dist/_dts/db/src/schemas/forms.d.ts +25 -25
- package/dist/_dts/db/src/types/jsonb.d.ts +1 -1
- package/dist/_dts/editor/src/primitives/rich-text/RichTextEditorSurface.d.ts +2 -1
- package/dist/_dts/editor/src/primitives/rich-text/config.d.ts +2 -1
- package/dist/_dts/editor/src/primitives/rich-text/toolbar/linkPopoverUtils.d.ts +3 -2
- package/dist/_dts/editor/src/primitives/rich-text/useRichTextEditor.d.ts +3 -4
- package/dist/_dts/media-core/src/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-core/src/usageScanner.d.ts +1 -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/bookings/types.d.ts +7 -89
- 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/config/validation.d.ts +30 -30
- package/dist/_dts/sdk/src/contracts/content.d.ts +10 -36
- 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/rendering.d.ts +1 -1
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +4 -16
- package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +9 -9
- 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 +11 -38
- 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/accordions/types.d.ts +2 -2
- 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 +41 -12
- package/dist/_dts/theme-core/src/cards/types.d.ts +7 -29
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +90 -75
- package/dist/_dts/theme-core/src/navigation/types.d.ts +4 -4
- package/dist/_dts/theme-core/src/palette/colors.d.ts +1 -1
- package/dist/_dts/theme-core/src/palette/curated/types.d.ts +2 -2
- package/dist/_dts/theme-core/src/schema.d.ts +98 -110
- 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/cardRoleVocabulary.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/compilationPlan.d.ts +21 -0
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -4
- package/dist/_dts/theme-core/src/site-styles/logoBranding.d.ts +4 -4
- package/dist/_dts/theme-core/src/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/theme-core/src/tokens/themeColorTokens.d.ts +1 -1
- package/dist/_dts/ui/src/badge.d.ts +1 -1
- package/dist/_dts/ui/src/button.d.ts +1 -1
- package/dist/_dts/ui/src/callout.d.ts +1 -1
- package/dist/_dts/ui/src/card.d.ts +1 -1
- package/dist/_dts/ui/src/navigation-tabs.d.ts +2 -0
- package/dist/client/{StepIndicator-CLjQhkDb.mjs → BookingConsentAgreement-BxgpGEFD.mjs} +26 -4
- package/dist/client/{DiscountCodeDisclosure-BPZ-yfGI.mjs → DiscountCodeDisclosure-CfuPOHD0.mjs} +12 -12
- package/dist/client/{EventCombined.client-Cjt3kKYR.mjs → EventCombined.client-DB8Qfzi-.mjs} +37 -49
- package/dist/client/{EventListing.client-DY9dn6Fh.mjs → EventListing.client-DD4X8hp4.mjs} +2 -2
- package/dist/client/{LeafletStaticMap--2c61XYn.mjs → LeafletStaticMap-QhgIBQbv.mjs} +1 -1
- package/dist/client/{CourseRegistrationWizard-DGW9F0SQ.mjs → WholeSeriesRegistrationWizard-DwtC7bCs.mjs} +1460 -1247
- package/dist/client/{accordion-_boYwHHi.mjs → accordion-DFXpLvwg.mjs} +1 -1
- package/dist/client/{bookingForm--AqEfyBX.mjs → bookingForm-sI05d3lk.mjs} +73 -47
- package/dist/client/bookings.mjs +1719 -706
- package/dist/client/{carousel-CVI2dqZr.mjs → carousel-wjyWTZCh.mjs} +1 -1
- package/dist/client/{cart-DR6IiPz9.mjs → cart-DCwdpA4i.mjs} +3 -3
- package/dist/client/{checkout-CsrGAfQt.mjs → checkout-DTDW3l0R.mjs} +3 -3
- package/dist/client/checkoutUrls-DQYC_Br-.mjs +187 -0
- package/dist/client/client.mjs +6830 -3672
- package/dist/client/{context-B83PiNzm.mjs → context-TSK1CGx8.mjs} +1 -14
- package/dist/client/{courseRegistration-aNJVaLa3.mjs → courseRegistration-A-Tg7qw_.mjs} +11 -5
- package/dist/client/{eventCalendar-OZ7h59VN.mjs → eventCalendar-B0Zg-i_w.mjs} +41 -44
- package/dist/client/{eventCombined-BbJ6bFKz.mjs → eventCombined-B8Y2wizd.mjs} +3 -3
- package/dist/client/{eventDetails-BLyUBiCT.mjs → eventDetails-DPDOwURJ.mjs} +276 -94
- package/dist/client/{eventListing-DuP1yhBS.mjs → eventListing-CjBcmSLn.mjs} +3 -3
- package/dist/client/{eventRegistration-BXyECPa-.mjs → eventRegistration-CK30HsAq.mjs} +730 -190
- package/dist/client/{form-BA4t3kKU.mjs → form-CUXfsABE.mjs} +2 -2
- package/dist/client/{headerSection-CpNaJxhW.mjs → headerSection-N-mN3rjr.mjs} +2 -2
- package/dist/client/hooks.mjs +1418 -484
- package/dist/client/{locationMap-3HGMCL7_.mjs → locationMap-oiIDQMBt.mjs} +2 -2
- package/dist/client/{newsletterForm-C2s6Mw67.mjs → newsletterForm-CkQ2tTrM.mjs} +2 -2
- package/dist/client/pricing-Caa0QWzh.mjs +195 -0
- package/dist/client/{productDetail-C9joWhdE.mjs → productDetail-CnidyrsN.mjs} +3 -3
- package/dist/client/{productList-CjzdU3pB.mjs → productList-CttYcS_S.mjs} +3 -3
- package/dist/client/{propsDecoder-CBPGXEYX.mjs → propsDecoder-CeUMxI9a.mjs} +677 -350
- package/dist/client/rendering/client.mjs +6075 -4150
- package/dist/client/rendering/islands.mjs +18 -18
- package/dist/client/rendering.mjs +7589 -4388
- package/dist/client/{scrollToBlock-DZ73aEX6.mjs → scrollToBlock-lPr1oqxB.mjs} +1 -1
- package/dist/client/{shop-CQRai7hj.mjs → shop-DXQtMo2O.mjs} +6 -6
- package/dist/client/{shop-commerce-hP9UboOx.mjs → shop-commerce-quDL411J.mjs} +7 -164
- package/dist/client/{shop-commerce-store-DiD5a32e.mjs → shop-commerce-store-Dnu-8Iub.mjs} +1 -1
- package/dist/client/{shopShared-DP8DXTkF.mjs → shopShared-BWPUURvG.mjs} +3 -3
- package/dist/client/{useEventFilters-pF_OJNQP.mjs → useEventFilters-DRhWp2_5.mjs} +196 -7
- package/dist/client/{usePolling-Cls91SD2.mjs → usePolling-UN4WKnaM.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-Ca5RD78X.mjs} +2 -2
- package/dist/{separator-BXlYN_gr.mjs → separator-CMhj6BTi.mjs} +1 -1
- package/dist/server/components.mjs +3578 -1614
- package/dist/server/config-validation.mjs +1418 -485
- package/dist/server/config.mjs +1418 -485
- package/dist/server/data.mjs +1418 -484
- package/dist/server/index.mjs +289 -81
- package/dist/server/manifest.mjs +0 -1
- package/dist/server/next.mjs +3761 -1794
- package/dist/server/page-converter.mjs +911 -261
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +3580 -1613
- package/dist/server/rendering.mjs +3578 -1614
- package/dist/server/routing.mjs +1687 -689
- package/dist/server/server.mjs +1458 -563
- package/dist/server/theme-bridge.mjs +1996 -935
- package/dist/server/theme.mjs +346 -133
- package/dist/styles/index.css +1602 -796
- package/package.json +2 -2
- 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/checkoutUrls-Ct8Mxna3.mjs +0 -26
- 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);
|
|
@@ -12716,23 +12837,56 @@ function sectionStylesField(options = {}) {
|
|
|
12716
12837
|
required: false,
|
|
12717
12838
|
schema: { fields },
|
|
12718
12839
|
ui: {
|
|
12719
|
-
renderInHeader,
|
|
12720
|
-
intent: "style",
|
|
12840
|
+
renderInHeader,
|
|
12841
|
+
intent: "style",
|
|
12842
|
+
modalConfig: {
|
|
12843
|
+
buttonLabel: label,
|
|
12844
|
+
description: "Configure background and spacing for this section.",
|
|
12845
|
+
buttonVariant: "outline",
|
|
12846
|
+
showCustomizedIndicator: true
|
|
12847
|
+
}
|
|
12848
|
+
}
|
|
12849
|
+
};
|
|
12850
|
+
}
|
|
12851
|
+
function containerStylesField(options = {}) {
|
|
12852
|
+
return createBoxStylesFieldWithDepth("container", options);
|
|
12853
|
+
}
|
|
12854
|
+
function cardStylesField(options = {}) {
|
|
12855
|
+
if (options.controls === "role-only") return createRoleOnlyCardStylesField(options);
|
|
12856
|
+
return createBoxStylesFieldWithDepth("card", options);
|
|
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 } : {},
|
|
12721
12881
|
modalConfig: {
|
|
12722
12882
|
buttonLabel: label,
|
|
12723
|
-
description: "
|
|
12883
|
+
description: "Choose the site-style card role.",
|
|
12724
12884
|
buttonVariant: "outline",
|
|
12725
12885
|
showCustomizedIndicator: true
|
|
12726
12886
|
}
|
|
12727
12887
|
}
|
|
12728
12888
|
};
|
|
12729
12889
|
}
|
|
12730
|
-
function containerStylesField(options = {}) {
|
|
12731
|
-
return createBoxStylesFieldWithDepth("container", options);
|
|
12732
|
-
}
|
|
12733
|
-
function cardStylesField(options = {}) {
|
|
12734
|
-
return createBoxStylesFieldWithDepth("card", options);
|
|
12735
|
-
}
|
|
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,30 @@ 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
|
-
|
|
20610
|
-
|
|
20611
|
-
|
|
21075
|
+
//#region ../blocks/src/system/blocks/shared/bookingConsent.ts
|
|
21076
|
+
const blockBookingConsentSchema = z.object({
|
|
21077
|
+
requirementId: z.string(),
|
|
21078
|
+
title: z.string(),
|
|
21079
|
+
agreement: RichTextDocSchema,
|
|
21080
|
+
checkboxLabel: z.string()
|
|
21081
|
+
});
|
|
21082
|
+
const bookingRequirementConsentFieldSchema = z.object({
|
|
21083
|
+
id: z.string(),
|
|
21084
|
+
label: z.string(),
|
|
21085
|
+
type: z.literal("booking_requirement_consent"),
|
|
21086
|
+
required: z.literal(true),
|
|
21087
|
+
agreement: RichTextDocSchema,
|
|
21088
|
+
checkboxLabel: z.string().min(1)
|
|
21089
|
+
});
|
|
21090
|
+
z.union([blockBookingConsentSchema, bookingRequirementConsentFieldSchema]);
|
|
21091
|
+
//#endregion
|
|
21092
|
+
//#region ../blocks/src/system/blocks/events/whole-series/schemas.ts
|
|
21093
|
+
const wholeSeriesVenueSchema = z.object({
|
|
20612
21094
|
id: z.string(),
|
|
20613
21095
|
name: z.string(),
|
|
20614
21096
|
address: z.string().nullable()
|
|
20615
21097
|
});
|
|
20616
|
-
|
|
20617
|
-
* Zod schema for course session (occurrence) data
|
|
20618
|
-
*/
|
|
20619
|
-
const courseSessionSchema = z.object({
|
|
21098
|
+
const wholeSeriesSessionSchema = z.object({
|
|
20620
21099
|
id: z.string(),
|
|
20621
21100
|
startsAt: z.string(),
|
|
20622
21101
|
endsAt: z.string(),
|
|
@@ -20624,14 +21103,14 @@ const courseSessionSchema = z.object({
|
|
|
20624
21103
|
capacityOverride: z.number().nullable().optional(),
|
|
20625
21104
|
overrides: z.record(z.string(), z.unknown()).nullable().optional()
|
|
20626
21105
|
});
|
|
20627
|
-
const
|
|
21106
|
+
const wholeSeriesTeamMemberSummarySchema = z.object({
|
|
20628
21107
|
id: z.string(),
|
|
20629
21108
|
name: z.string(),
|
|
20630
21109
|
roleLabel: z.string().nullable(),
|
|
20631
21110
|
summary: z.string().nullable(),
|
|
20632
21111
|
profilePath: z.string().nullable()
|
|
20633
21112
|
});
|
|
20634
|
-
const
|
|
21113
|
+
const wholeSeriesPricingOptionSchema = z.object({
|
|
20635
21114
|
id: z.string(),
|
|
20636
21115
|
name: z.string(),
|
|
20637
21116
|
description: z.string().nullable(),
|
|
@@ -20647,7 +21126,7 @@ const coursePricingOptionSchema = z.object({
|
|
|
20647
21126
|
"both"
|
|
20648
21127
|
]).nullable().optional()
|
|
20649
21128
|
});
|
|
20650
|
-
const
|
|
21129
|
+
const wholeSeriesPricingSchema = z.object({
|
|
20651
21130
|
bookingRequirement: z.enum(["none", "required"]),
|
|
20652
21131
|
pricingStrategy: z.enum([
|
|
20653
21132
|
"free",
|
|
@@ -20661,22 +21140,20 @@ const coursePricingSchema = z.object({
|
|
|
20661
21140
|
slidingMaxAmount: z.number().nullable().optional(),
|
|
20662
21141
|
slidingSuggestedAmount: z.number().nullable().optional(),
|
|
20663
21142
|
paymentTerms: blockBookingPaymentTermsSchema,
|
|
20664
|
-
options: z.array(
|
|
21143
|
+
options: z.array(wholeSeriesPricingOptionSchema)
|
|
20665
21144
|
});
|
|
20666
|
-
/**
|
|
20667
|
-
* Zod schema for public course data
|
|
20668
|
-
*/
|
|
20669
21145
|
const publicWholeSeriesOfferingSchema = z.object({
|
|
20670
21146
|
eventSeriesId: z.string(),
|
|
20671
21147
|
eventOfferingId: z.string(),
|
|
20672
21148
|
title: z.string(),
|
|
20673
21149
|
slug: z.string(),
|
|
20674
21150
|
description: z.unknown().nullable(),
|
|
20675
|
-
teamMembers: z.array(
|
|
21151
|
+
teamMembers: z.array(wholeSeriesTeamMemberSummarySchema).optional(),
|
|
20676
21152
|
enrollmentOpen: z.boolean(),
|
|
20677
|
-
pricing:
|
|
21153
|
+
pricing: wholeSeriesPricingSchema,
|
|
20678
21154
|
currency: z.string(),
|
|
20679
21155
|
paymentTerms: blockBookingPaymentTermsSchema,
|
|
21156
|
+
consent: blockBookingConsentSchema.nullable(),
|
|
20680
21157
|
enrollmentCapacity: z.number().nullable(),
|
|
20681
21158
|
acceptsMemberships: z.boolean(),
|
|
20682
21159
|
status: z.enum([
|
|
@@ -20687,12 +21164,10 @@ const publicWholeSeriesOfferingSchema = z.object({
|
|
|
20687
21164
|
sessionsCount: z.number(),
|
|
20688
21165
|
enrolledCount: z.number(),
|
|
20689
21166
|
availableSpots: z.number().nullable(),
|
|
20690
|
-
sessions: z.array(
|
|
20691
|
-
venue:
|
|
21167
|
+
sessions: z.array(wholeSeriesSessionSchema),
|
|
21168
|
+
venue: wholeSeriesVenueSchema.nullable()
|
|
20692
21169
|
});
|
|
20693
|
-
|
|
20694
|
-
const publicCourseSchema = publicWholeSeriesOfferingSchema;
|
|
20695
|
-
const publicCoursesArraySchema = z.array(publicWholeSeriesOfferingSchema);
|
|
21170
|
+
const publicWholeSeriesOfferingsArraySchema = z.array(publicWholeSeriesOfferingSchema);
|
|
20696
21171
|
//#endregion
|
|
20697
21172
|
//#region ../blocks/src/system/blocks/events/shared/schemas.ts
|
|
20698
21173
|
const eventPresetSchema = z.enum([
|
|
@@ -20996,6 +21471,7 @@ const publicEventSchema = z.object({
|
|
|
20996
21471
|
timeZone: z.string(),
|
|
20997
21472
|
pricing: publicEventPricingSchema,
|
|
20998
21473
|
paymentTerms: blockBookingPaymentTermsSchema,
|
|
21474
|
+
consent: blockBookingConsentSchema.nullable(),
|
|
20999
21475
|
accessRestriction: accessRestrictionSchema,
|
|
21000
21476
|
allowedCategoryIds: z.array(z.string()),
|
|
21001
21477
|
requireGuestDetails: z.boolean().optional(),
|
|
@@ -21003,7 +21479,7 @@ const publicEventSchema = z.object({
|
|
|
21003
21479
|
acceptsMemberships: z.boolean().optional(),
|
|
21004
21480
|
wholeSeries: z.object({
|
|
21005
21481
|
eventSeriesId: z.string(),
|
|
21006
|
-
pricing:
|
|
21482
|
+
pricing: wholeSeriesPricingSchema,
|
|
21007
21483
|
currency: z.string(),
|
|
21008
21484
|
enrollmentOpen: z.boolean()
|
|
21009
21485
|
}).nullable().optional()
|
|
@@ -21012,24 +21488,19 @@ const publicEventSchema = z.object({
|
|
|
21012
21488
|
* Schema for an array of public events
|
|
21013
21489
|
*/
|
|
21014
21490
|
const publicEventsArraySchema = z.array(publicEventSchema);
|
|
21491
|
+
//#endregion
|
|
21492
|
+
//#region ../blocks/src/system/blocks/events/shared/fields.ts
|
|
21015
21493
|
/**
|
|
21016
21494
|
* Shared card styling fields for event blocks
|
|
21017
21495
|
*/
|
|
21018
21496
|
const cardStylingFields = [
|
|
21019
|
-
{
|
|
21020
|
-
id: "
|
|
21021
|
-
type: "select",
|
|
21497
|
+
cardStylesField({
|
|
21498
|
+
id: "_cardStyles",
|
|
21022
21499
|
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
|
-
},
|
|
21500
|
+
controls: "role-only",
|
|
21501
|
+
renderInHeader: false,
|
|
21502
|
+
intent: "style"
|
|
21503
|
+
}),
|
|
21033
21504
|
createButtonVariantField({ description: "Choose a button style from your theme" }),
|
|
21034
21505
|
{
|
|
21035
21506
|
id: "buttonText",
|
|
@@ -21168,14 +21639,7 @@ function normalizeIdList(parts) {
|
|
|
21168
21639
|
}
|
|
21169
21640
|
//#endregion
|
|
21170
21641
|
//#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
|
-
];
|
|
21642
|
+
const eventSurfacePresetValues = SURFACE_EVENT_PRESET_VALUES;
|
|
21179
21643
|
const eventSurfaceScopeValues = [
|
|
21180
21644
|
"all",
|
|
21181
21645
|
"regularClassSchedule",
|
|
@@ -21356,6 +21820,25 @@ function resolveEventRegistrationScopedEvents(events, context) {
|
|
|
21356
21820
|
return applyEventRegistrationScope(events, resolveEventRegistrationScope(context));
|
|
21357
21821
|
}
|
|
21358
21822
|
//#endregion
|
|
21823
|
+
//#region ../blocks/src/system/runtime/nodes/event-registration/registrationSurface.ts
|
|
21824
|
+
function planEventRegistrationScope(input) {
|
|
21825
|
+
const subject = input.subject;
|
|
21826
|
+
const selectedRunOffering = input.wholeSeriesOffering;
|
|
21827
|
+
if (subject?.kind !== "eventOffering" || !selectedRunOffering) return {
|
|
21828
|
+
kind: "context",
|
|
21829
|
+
events: resolveEventRegistrationScopedEvents(input.events, {
|
|
21830
|
+
occurrenceContext: input.occurrenceContext,
|
|
21831
|
+
subject
|
|
21832
|
+
})
|
|
21833
|
+
};
|
|
21834
|
+
if (!(selectedRunOffering.eventOfferingId === subject.eventOfferingId && subject.availableEventSeriesIds.some((seriesId) => seriesId === selectedRunOffering.eventSeriesId))) return { kind: "invalidSelectedRun" };
|
|
21835
|
+
return {
|
|
21836
|
+
kind: "selectedRun",
|
|
21837
|
+
events: input.events.filter((event) => event.seriesId === selectedRunOffering.eventSeriesId),
|
|
21838
|
+
offering: selectedRunOffering
|
|
21839
|
+
};
|
|
21840
|
+
}
|
|
21841
|
+
//#endregion
|
|
21359
21842
|
//#region ../blocks/src/system/runtime/nodes/events/shared/destination.ts
|
|
21360
21843
|
function isRecord$5(value) {
|
|
21361
21844
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -21676,8 +22159,8 @@ const eventRegistrationHydrationSchemaShape = {
|
|
|
21676
22159
|
occurrenceContext: occurrenceContextSchema.optional(),
|
|
21677
22160
|
subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
|
|
21678
22161
|
events: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
|
|
21679
|
-
wholeSeriesOfferings:
|
|
21680
|
-
wholeSeriesOffering:
|
|
22162
|
+
wholeSeriesOfferings: publicWholeSeriesOfferingsArraySchema.nullable().optional(),
|
|
22163
|
+
wholeSeriesOffering: publicWholeSeriesOfferingSchema.nullable().optional(),
|
|
21681
22164
|
maxTickets: z.string().optional(),
|
|
21682
22165
|
showVenue: z.boolean().optional(),
|
|
21683
22166
|
showCapacity: z.boolean().optional(),
|
|
@@ -21699,12 +22182,13 @@ const eventRegistrationSourceSchema = z.object({
|
|
|
21699
22182
|
portalToken: z.string().nullable().optional(),
|
|
21700
22183
|
previewToken: z.string().nullable().optional(),
|
|
21701
22184
|
...eventRegistrationHydrationSchemaShape,
|
|
22185
|
+
subjectWholeSeriesOffering: publicWholeSeriesOfferingSchema.nullable().optional(),
|
|
21702
22186
|
className: z.string().nullable().optional(),
|
|
21703
22187
|
buttonText: z.string().nullable().optional(),
|
|
21704
22188
|
maxTickets: z.string().nullable().optional(),
|
|
21705
22189
|
stage: previewStageSchema.optional()
|
|
21706
22190
|
});
|
|
21707
|
-
const eventRegistrationDisplaySchema = z.object({
|
|
22191
|
+
const eventRegistrationDisplaySchema = z.discriminatedUnion("state", [z.object({
|
|
21708
22192
|
kind: z.literal("event-registration"),
|
|
21709
22193
|
state: z.literal("generic-shell"),
|
|
21710
22194
|
className: z.string().nullable(),
|
|
@@ -21712,7 +22196,13 @@ const eventRegistrationDisplaySchema = z.object({
|
|
|
21712
22196
|
bodyText: z.string(),
|
|
21713
22197
|
stepLabels: z.array(z.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
|
|
21714
22198
|
summaryButtonText: z.string()
|
|
21715
|
-
})
|
|
22199
|
+
}), z.object({
|
|
22200
|
+
kind: z.literal("event-registration"),
|
|
22201
|
+
state: z.literal("registration-closed"),
|
|
22202
|
+
className: z.string().nullable(),
|
|
22203
|
+
titleText: z.string(),
|
|
22204
|
+
bodyText: z.string()
|
|
22205
|
+
})]);
|
|
21716
22206
|
const eventRegistrationHydrationSchema = z.object(eventRegistrationHydrationSchemaShape);
|
|
21717
22207
|
const eventRegistrationRenderSchema = z.object({
|
|
21718
22208
|
display: eventRegistrationDisplaySchema,
|
|
@@ -21726,6 +22216,13 @@ z.object({
|
|
|
21726
22216
|
stage: previewStageSchema.optional()
|
|
21727
22217
|
});
|
|
21728
22218
|
function buildEventRegistrationDisplay(source) {
|
|
22219
|
+
if (resolveWholeSeriesOffering(source)?.enrollmentOpen === false) return {
|
|
22220
|
+
kind: "event-registration",
|
|
22221
|
+
state: "registration-closed",
|
|
22222
|
+
className: source.className ?? null,
|
|
22223
|
+
titleText: "Registration closed",
|
|
22224
|
+
bodyText: "This run is no longer open for bookings."
|
|
22225
|
+
};
|
|
21729
22226
|
const stepLabels = buildEventRegistrationShellStepLabels(source);
|
|
21730
22227
|
return {
|
|
21731
22228
|
kind: "event-registration",
|
|
@@ -21737,6 +22234,9 @@ function buildEventRegistrationDisplay(source) {
|
|
|
21737
22234
|
summaryButtonText: source.buttonText?.trim() || "Register"
|
|
21738
22235
|
};
|
|
21739
22236
|
}
|
|
22237
|
+
function resolveWholeSeriesOffering(source) {
|
|
22238
|
+
return source.wholeSeriesOffering ?? source.subjectWholeSeriesOffering ?? null;
|
|
22239
|
+
}
|
|
21740
22240
|
function buildEventRegistrationShellStepLabels(source) {
|
|
21741
22241
|
const scopedEvents = scopeEventRegistrationEvents(source);
|
|
21742
22242
|
if (scopedEvents.length === 0) return EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
|
|
@@ -21752,10 +22252,13 @@ function buildEventRegistrationShellStepLabels(source) {
|
|
|
21752
22252
|
}) : false).map((step) => shellLabelForRegistrationStep(step, scopedEvents));
|
|
21753
22253
|
}
|
|
21754
22254
|
function scopeEventRegistrationEvents(source) {
|
|
21755
|
-
|
|
22255
|
+
const scope = planEventRegistrationScope({
|
|
22256
|
+
events: toRegistrationEvents(source.events ?? []),
|
|
22257
|
+
wholeSeriesOffering: source.wholeSeriesOffering,
|
|
21756
22258
|
occurrenceContext: source.occurrenceContext,
|
|
21757
22259
|
subject: source.subject
|
|
21758
22260
|
});
|
|
22261
|
+
return scope.kind === "invalidSelectedRun" ? [] : scope.events;
|
|
21759
22262
|
}
|
|
21760
22263
|
function shellLabelForRegistrationStep(step, events) {
|
|
21761
22264
|
switch (step) {
|
|
@@ -21794,7 +22297,7 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
|
|
|
21794
22297
|
subject: source.subject ?? null,
|
|
21795
22298
|
events: source.events ?? null,
|
|
21796
22299
|
wholeSeriesOfferings: source.wholeSeriesOfferings ?? null,
|
|
21797
|
-
wholeSeriesOffering: source
|
|
22300
|
+
wholeSeriesOffering: resolveWholeSeriesOffering(source),
|
|
21798
22301
|
maxTickets: source.maxTickets ?? void 0,
|
|
21799
22302
|
showVenue: source.showVenue,
|
|
21800
22303
|
showCapacity: source.showCapacity,
|
|
@@ -22015,7 +22518,9 @@ const eventRegistrationBlockDefinition = {
|
|
|
22015
22518
|
fallback: false
|
|
22016
22519
|
} },
|
|
22017
22520
|
events: { $bind: { from: "data.events" } },
|
|
22018
|
-
wholeSeriesOffering: { $bind: { from: "data.
|
|
22521
|
+
wholeSeriesOffering: { $bind: { from: "data.selectedRunOffering.offering" } },
|
|
22522
|
+
subjectWholeSeriesOffering: { $bind: { from: "data.subjectWholeSeriesOffering.offering" } },
|
|
22523
|
+
wholeSeriesOfferings: { $bind: { from: "data.wholeSeriesOfferings" } },
|
|
22019
22524
|
sitePasses: { $bind: { from: "data.sitePasses" } },
|
|
22020
22525
|
siteMemberships: { $bind: { from: "data.siteMemberships" } },
|
|
22021
22526
|
stage: { $bind: {
|
|
@@ -22029,7 +22534,9 @@ const eventRegistrationBlockDefinition = {
|
|
|
22029
22534
|
runtime: eventRegistrationBlockRuntime,
|
|
22030
22535
|
dataSchemas: {
|
|
22031
22536
|
events: publicEventsArraySchema.optional(),
|
|
22032
|
-
|
|
22537
|
+
selectedRunOffering: z.object({ offering: publicWholeSeriesOfferingSchema }).optional(),
|
|
22538
|
+
subjectWholeSeriesOffering: z.object({ offering: publicWholeSeriesOfferingSchema }).optional(),
|
|
22539
|
+
wholeSeriesOfferings: z.array(publicWholeSeriesOfferingSchema).optional(),
|
|
22033
22540
|
sitePasses: publicPassProductCollectionSchema.optional(),
|
|
22034
22541
|
siteMemberships: publicMembershipProductCollectionSchema.optional(),
|
|
22035
22542
|
occurrenceContext: occurrenceContextSchema.optional()
|
|
@@ -22046,11 +22553,29 @@ const eventRegistrationBlockDefinition = {
|
|
|
22046
22553
|
} },
|
|
22047
22554
|
readProfile: "registration",
|
|
22048
22555
|
seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
|
|
22556
|
+
seriesIds: { $bind: {
|
|
22557
|
+
from: "$root.subject.availableEventSeriesIds",
|
|
22558
|
+
transforms: [{ id: "value.csv" }]
|
|
22559
|
+
} },
|
|
22560
|
+
runSeriesId: { $bind: { from: "$root.entrySubrouteContext.run.seriesId" } },
|
|
22049
22561
|
includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
|
|
22050
22562
|
},
|
|
22051
22563
|
mode: "server"
|
|
22052
22564
|
},
|
|
22053
|
-
|
|
22565
|
+
selectedRunOffering: {
|
|
22566
|
+
endpoint: "getPublicWholeSeriesOffering",
|
|
22567
|
+
params: {
|
|
22568
|
+
siteId: { $bind: { from: "$root.siteId" } },
|
|
22569
|
+
eventSeriesId: { $bind: { from: "$root.entrySubrouteContext.run.seriesId" } },
|
|
22570
|
+
stage: { $bind: {
|
|
22571
|
+
from: "$root.previewStage",
|
|
22572
|
+
fallback: "published"
|
|
22573
|
+
} }
|
|
22574
|
+
},
|
|
22575
|
+
requiredParams: ["eventSeriesId"],
|
|
22576
|
+
mode: "server"
|
|
22577
|
+
},
|
|
22578
|
+
subjectWholeSeriesOffering: {
|
|
22054
22579
|
endpoint: "getPublicWholeSeriesOffering",
|
|
22055
22580
|
when: { $bind: {
|
|
22056
22581
|
from: "$root.subject.isWholeSeriesBooking",
|
|
@@ -22067,6 +22592,22 @@ const eventRegistrationBlockDefinition = {
|
|
|
22067
22592
|
requiredParams: ["eventSeriesId"],
|
|
22068
22593
|
mode: "server"
|
|
22069
22594
|
},
|
|
22595
|
+
wholeSeriesOfferings: {
|
|
22596
|
+
endpoint: "listPublicWholeSeriesOfferings",
|
|
22597
|
+
params: {
|
|
22598
|
+
siteId: { $bind: { from: "$root.siteId" } },
|
|
22599
|
+
eventSeriesIds: { $bind: {
|
|
22600
|
+
from: "$root.subject.availableEventSeriesIds",
|
|
22601
|
+
transforms: [{ id: "value.csv" }]
|
|
22602
|
+
} },
|
|
22603
|
+
stage: { $bind: {
|
|
22604
|
+
from: "$root.previewStage",
|
|
22605
|
+
fallback: "published"
|
|
22606
|
+
} }
|
|
22607
|
+
},
|
|
22608
|
+
requiredParams: ["eventSeriesIds"],
|
|
22609
|
+
mode: "server"
|
|
22610
|
+
},
|
|
22070
22611
|
sitePasses: {
|
|
22071
22612
|
endpoint: "listPublicPasses",
|
|
22072
22613
|
params: { siteId: { $bind: { from: "$root.siteId" } } },
|
|
@@ -22081,13 +22622,9 @@ const eventRegistrationBlockDefinition = {
|
|
|
22081
22622
|
};
|
|
22082
22623
|
//#endregion
|
|
22083
22624
|
//#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(),
|
|
22625
|
+
const courseRegistrationHydrationSchemaShape = {
|
|
22088
22626
|
subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
|
|
22089
|
-
courses: z.array(
|
|
22090
|
-
className: z.string().nullable().optional(),
|
|
22627
|
+
courses: z.array(publicWholeSeriesOfferingSchema).nullable().optional(),
|
|
22091
22628
|
showSessions: z.boolean().optional(),
|
|
22092
22629
|
showPrice: z.boolean().optional(),
|
|
22093
22630
|
showCapacity: z.boolean().optional(),
|
|
@@ -22095,8 +22632,15 @@ const courseRegistrationSourceSchema = z.object({
|
|
|
22095
22632
|
successMessage: z.string().optional(),
|
|
22096
22633
|
waitlistMessage: z.string().optional(),
|
|
22097
22634
|
membershipMessage: z.string().optional(),
|
|
22635
|
+
buttonVariant: registrationButtonVariantSchema.optional()
|
|
22636
|
+
};
|
|
22637
|
+
const courseRegistrationSourceSchema = z.object({
|
|
22638
|
+
siteId: z.string().optional(),
|
|
22639
|
+
apiBaseUrl: z.string().optional(),
|
|
22640
|
+
portalToken: z.string().nullable().optional(),
|
|
22641
|
+
...courseRegistrationHydrationSchemaShape,
|
|
22642
|
+
className: z.string().nullable().optional(),
|
|
22098
22643
|
buttonText: z.string().nullable().optional(),
|
|
22099
|
-
buttonVariant: registrationButtonVariantSchema.optional(),
|
|
22100
22644
|
stage: previewStageSchema.optional()
|
|
22101
22645
|
});
|
|
22102
22646
|
const courseRegistrationDisplaySchema = z.object({
|
|
@@ -22105,18 +22649,7 @@ const courseRegistrationDisplaySchema = z.object({
|
|
|
22105
22649
|
className: z.string().nullable(),
|
|
22106
22650
|
summaryButtonText: z.string()
|
|
22107
22651
|
});
|
|
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
|
-
});
|
|
22652
|
+
const courseRegistrationHydrationSchema = z.object(courseRegistrationHydrationSchemaShape);
|
|
22120
22653
|
const courseRegistrationRenderSchema = z.object({
|
|
22121
22654
|
display: courseRegistrationDisplaySchema,
|
|
22122
22655
|
hydration: courseRegistrationHydrationSchema
|
|
@@ -22321,7 +22854,7 @@ const courseRegistrationBlockDefinition = {
|
|
|
22321
22854
|
})]
|
|
22322
22855
|
}),
|
|
22323
22856
|
runtime: courseRegistrationBlockRuntime,
|
|
22324
|
-
dataSchemas: { courses:
|
|
22857
|
+
dataSchemas: { courses: publicWholeSeriesOfferingsArraySchema.optional() },
|
|
22325
22858
|
dataLoaders: { courses: {
|
|
22326
22859
|
endpoint: "listPublicWholeSeriesOfferings",
|
|
22327
22860
|
params: {
|
|
@@ -22392,6 +22925,22 @@ const eventDetailsManifest = createBlockManifest({
|
|
|
22392
22925
|
defaultValue: true,
|
|
22393
22926
|
ui: { intent: "display" }
|
|
22394
22927
|
},
|
|
22928
|
+
{
|
|
22929
|
+
id: "showTitle",
|
|
22930
|
+
type: "boolean",
|
|
22931
|
+
label: "Show event title",
|
|
22932
|
+
required: false,
|
|
22933
|
+
defaultValue: false,
|
|
22934
|
+
ui: { intent: "display" }
|
|
22935
|
+
},
|
|
22936
|
+
{
|
|
22937
|
+
id: "showDescription",
|
|
22938
|
+
type: "boolean",
|
|
22939
|
+
label: "Show event description",
|
|
22940
|
+
required: false,
|
|
22941
|
+
defaultValue: false,
|
|
22942
|
+
ui: { intent: "display" }
|
|
22943
|
+
},
|
|
22395
22944
|
{
|
|
22396
22945
|
id: "showMap",
|
|
22397
22946
|
type: "boolean",
|
|
@@ -22428,10 +22977,22 @@ const eventDetailsManifest = createBlockManifest({
|
|
|
22428
22977
|
{
|
|
22429
22978
|
value: "10",
|
|
22430
22979
|
label: "10 dates"
|
|
22980
|
+
},
|
|
22981
|
+
{
|
|
22982
|
+
value: "all",
|
|
22983
|
+
label: "All dates"
|
|
22431
22984
|
}
|
|
22432
22985
|
],
|
|
22433
22986
|
ui: { intent: "display" }
|
|
22434
22987
|
},
|
|
22988
|
+
{
|
|
22989
|
+
id: "showCapacity",
|
|
22990
|
+
type: "boolean",
|
|
22991
|
+
label: "Show capacity",
|
|
22992
|
+
required: false,
|
|
22993
|
+
defaultValue: false,
|
|
22994
|
+
ui: { intent: "display" }
|
|
22995
|
+
},
|
|
22435
22996
|
{
|
|
22436
22997
|
id: "showCost",
|
|
22437
22998
|
type: "boolean",
|
|
@@ -22474,6 +23035,8 @@ const eventDetailsManifest = createBlockManifest({
|
|
|
22474
23035
|
} },
|
|
22475
23036
|
events: { $bind: { from: "data.eventDetailsData.events" } },
|
|
22476
23037
|
showVenue: { $bind: { from: "content.showVenue" } },
|
|
23038
|
+
showTitle: { $bind: { from: "content.showTitle" } },
|
|
23039
|
+
showDescription: { $bind: { from: "content.showDescription" } },
|
|
22477
23040
|
showMap: { $bind: { from: "content.showMap" } },
|
|
22478
23041
|
showOtherDates: { $bind: { from: "content.showOtherDates" } },
|
|
22479
23042
|
otherDatesLimit: { $bind: {
|
|
@@ -22484,6 +23047,10 @@ const eventDetailsManifest = createBlockManifest({
|
|
|
22484
23047
|
from: "content.showCost",
|
|
22485
23048
|
fallback: true
|
|
22486
23049
|
} },
|
|
23050
|
+
showCapacity: { $bind: {
|
|
23051
|
+
from: "content.showCapacity",
|
|
23052
|
+
fallback: false
|
|
23053
|
+
} },
|
|
22487
23054
|
showAcceptedPasses: { $bind: {
|
|
22488
23055
|
from: "content.showAcceptedPasses",
|
|
22489
23056
|
fallback: true
|
|
@@ -22538,6 +23105,11 @@ const eventDetailsBlockDefinition = {
|
|
|
22538
23105
|
limit: "100",
|
|
22539
23106
|
readProfile: "details",
|
|
22540
23107
|
seriesId: { $bind: { from: "$root.subject.eventSeriesId" } },
|
|
23108
|
+
seriesIds: { $bind: {
|
|
23109
|
+
from: "$root.subject.availableEventSeriesIds",
|
|
23110
|
+
transforms: [{ id: "value.csv" }]
|
|
23111
|
+
} },
|
|
23112
|
+
runSeriesId: { $bind: { from: "$root.entrySubrouteContext.run.seriesId" } },
|
|
22541
23113
|
includeOccurrenceId: { $bind: { from: "$root.occurrenceContext.id" } }
|
|
22542
23114
|
},
|
|
22543
23115
|
mode: "server"
|
|
@@ -22723,7 +23295,7 @@ const courseDetailsBlockDefinition = {
|
|
|
22723
23295
|
})], { gap: "lg" })
|
|
22724
23296
|
})]
|
|
22725
23297
|
}),
|
|
22726
|
-
dataSchemas: { courses:
|
|
23298
|
+
dataSchemas: { courses: publicWholeSeriesOfferingsArraySchema.optional() },
|
|
22727
23299
|
dataLoaders: { courses: {
|
|
22728
23300
|
endpoint: "listPublicWholeSeriesOfferings",
|
|
22729
23301
|
params: {
|
|
@@ -22842,8 +23414,8 @@ const eventSpotlightBlockDefinition = {
|
|
|
22842
23414
|
from: "content.columns",
|
|
22843
23415
|
fallback: "3"
|
|
22844
23416
|
} },
|
|
22845
|
-
|
|
22846
|
-
from: "content.
|
|
23417
|
+
cardRole: { $bind: {
|
|
23418
|
+
from: "content._cardStyles.role",
|
|
22847
23419
|
fallback: "default"
|
|
22848
23420
|
} },
|
|
22849
23421
|
buttonVariant: { $bind: {
|
|
@@ -23005,6 +23577,7 @@ const eventCollectionSourceSchemaShape = {
|
|
|
23005
23577
|
showVenue: z.boolean().nullable().optional(),
|
|
23006
23578
|
showMap: z.boolean().nullable().optional(),
|
|
23007
23579
|
showCapacity: z.boolean().nullable().optional(),
|
|
23580
|
+
cardRole: cardRoleSchema.optional(),
|
|
23008
23581
|
buttonVariant: eventButtonVariantSchema.optional(),
|
|
23009
23582
|
buttonText: z.string().optional(),
|
|
23010
23583
|
emptyMessage: z.string().optional(),
|
|
@@ -23032,6 +23605,7 @@ const eventCollectionDisplaySchemaShape = {
|
|
|
23032
23605
|
showVenue: z.boolean(),
|
|
23033
23606
|
showMap: z.boolean(),
|
|
23034
23607
|
showCapacity: z.boolean(),
|
|
23608
|
+
cardRole: cardRoleSchema,
|
|
23035
23609
|
buttonVariant: eventButtonVariantSchema,
|
|
23036
23610
|
buttonText: z.string(),
|
|
23037
23611
|
emptyMessage: z.string()
|
|
@@ -23081,6 +23655,7 @@ function buildEventCollectionPresentationDisplay(source) {
|
|
|
23081
23655
|
showVenue: source.showVenue ?? true,
|
|
23082
23656
|
showMap: source.showMap ?? true,
|
|
23083
23657
|
showCapacity: source.showCapacity ?? true,
|
|
23658
|
+
cardRole: source.cardRole ?? "default",
|
|
23084
23659
|
buttonVariant: source.buttonVariant ?? "primary",
|
|
23085
23660
|
buttonText: source.buttonText ?? "Book",
|
|
23086
23661
|
emptyMessage: source.emptyMessage ?? "No upcoming events scheduled."
|
|
@@ -23098,8 +23673,6 @@ function buildEventCollectionHydration(source) {
|
|
|
23098
23673
|
}
|
|
23099
23674
|
//#endregion
|
|
23100
23675
|
//#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
23676
|
const cardOrientationSchema = z.enum(["vertical", "horizontal"]);
|
|
23104
23677
|
const eventSurfaceScopeSchema = z.enum(eventSurfaceScopeValues);
|
|
23105
23678
|
const eventScheduleScopeSchema = z.enum(eventScheduleScopeValues);
|
|
@@ -23114,7 +23687,7 @@ const eventListingSourceSchema = z.object({
|
|
|
23114
23687
|
paginationMode: z.enum(["loadMore", "seeAllLink"]).optional(),
|
|
23115
23688
|
seeAllUrl: z.string().optional(),
|
|
23116
23689
|
loadMoreText: z.string().optional(),
|
|
23117
|
-
|
|
23690
|
+
cardRole: cardRoleSchema.optional(),
|
|
23118
23691
|
buttonVariant: eventButtonVariantSchema.optional(),
|
|
23119
23692
|
buttonText: z.string().optional(),
|
|
23120
23693
|
showVenue: z.boolean().optional(),
|
|
@@ -23136,7 +23709,7 @@ const eventListingDisplaySchema = z.object({
|
|
|
23136
23709
|
emptyMessage: z.string(),
|
|
23137
23710
|
loadingMessage: z.string(),
|
|
23138
23711
|
containerClass: z.string(),
|
|
23139
|
-
|
|
23712
|
+
cardRole: cardRoleSchema,
|
|
23140
23713
|
buttonVariant: eventButtonVariantSchema,
|
|
23141
23714
|
buttonText: z.string(),
|
|
23142
23715
|
showVenue: z.boolean(),
|
|
@@ -23192,7 +23765,7 @@ const eventListingBlockRuntime = defineProgressiveBlockRuntime({
|
|
|
23192
23765
|
emptyMessage: source.emptyMessage ?? "No upcoming events scheduled.",
|
|
23193
23766
|
loadingMessage: "Loading events…",
|
|
23194
23767
|
containerClass: getContainerClass(layout, source.columns ?? "3"),
|
|
23195
|
-
|
|
23768
|
+
cardRole: source.cardRole ?? "default",
|
|
23196
23769
|
buttonVariant: source.buttonVariant ?? "primary",
|
|
23197
23770
|
buttonText: source.buttonText ?? "Book",
|
|
23198
23771
|
showVenue: source.showVenue ?? true,
|
|
@@ -23514,8 +24087,8 @@ const eventListingBlockDefinition = {
|
|
|
23514
24087
|
from: "content.loadMoreText",
|
|
23515
24088
|
fallback: "Load more events"
|
|
23516
24089
|
} },
|
|
23517
|
-
|
|
23518
|
-
from: "content.
|
|
24090
|
+
cardRole: { $bind: {
|
|
24091
|
+
from: "content._cardStyles.role",
|
|
23519
24092
|
fallback: "default"
|
|
23520
24093
|
} },
|
|
23521
24094
|
buttonVariant: { $bind: {
|
|
@@ -23785,6 +24358,10 @@ const eventCalendarLayout = [styledSection({
|
|
|
23785
24358
|
filterCategoryIds: { $bind: { from: "content.filterCategoryIds" } },
|
|
23786
24359
|
filterStaffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
|
|
23787
24360
|
filterVenueId: { $bind: { from: "content.filterVenueId" } },
|
|
24361
|
+
cardRole: { $bind: {
|
|
24362
|
+
from: "content._cardStyles.role",
|
|
24363
|
+
fallback: "default"
|
|
24364
|
+
} },
|
|
23788
24365
|
buttonVariant: { $bind: {
|
|
23789
24366
|
from: "content.buttonVariant",
|
|
23790
24367
|
fallback: "primary"
|
|
@@ -24417,11 +24994,11 @@ const eventCalendarAdditionalFields = [
|
|
|
24417
24994
|
searchThreshold: 8
|
|
24418
24995
|
}
|
|
24419
24996
|
}),
|
|
24420
|
-
...cardStylingFields.
|
|
24997
|
+
...cardStylingFields.map((field) => ({
|
|
24421
24998
|
...field,
|
|
24422
24999
|
ui: {
|
|
24423
25000
|
...field.ui ?? {},
|
|
24424
|
-
intent: field.id === "buttonVariant" ? "style" : "content"
|
|
25001
|
+
intent: field.id === "_cardStyles" || field.id === "buttonVariant" ? "style" : "content"
|
|
24425
25002
|
}
|
|
24426
25003
|
})),
|
|
24427
25004
|
{
|
|
@@ -24805,6 +25382,68 @@ const recurringScheduleBlockDefinition = {
|
|
|
24805
25382
|
} }
|
|
24806
25383
|
};
|
|
24807
25384
|
//#endregion
|
|
25385
|
+
//#region ../blocks/src/system/types/link.ts
|
|
25386
|
+
const nullableString = z.union([z.string().min(1), z.null()]);
|
|
25387
|
+
const RESOLVED_INTERNAL_LINK_ENTITY_TYPES = [
|
|
25388
|
+
"page",
|
|
25389
|
+
"content",
|
|
25390
|
+
"pageSurface"
|
|
25391
|
+
];
|
|
25392
|
+
const resolvedInternalLinkKeys = [
|
|
25393
|
+
"entityId",
|
|
25394
|
+
"entityType",
|
|
25395
|
+
"href",
|
|
25396
|
+
"title",
|
|
25397
|
+
"typeLabel"
|
|
25398
|
+
];
|
|
25399
|
+
const internalRouteOnlyLinkSchema = z.object({
|
|
25400
|
+
kind: z.literal("internal"),
|
|
25401
|
+
routeId: z.string().min(1)
|
|
25402
|
+
}).passthrough().superRefine((value, ctx) => {
|
|
25403
|
+
if (!resolvedInternalLinkKeys.some((key) => value[key] != null)) return;
|
|
25404
|
+
ctx.addIssue({
|
|
25405
|
+
code: "custom",
|
|
25406
|
+
message: "Internal links with resolved metadata must include entityId, entityType, href, title, and typeLabel"
|
|
25407
|
+
});
|
|
25408
|
+
});
|
|
25409
|
+
const internalResolvedLinkSchema = z.object({
|
|
25410
|
+
kind: z.literal("internal"),
|
|
25411
|
+
routeId: z.string().min(1),
|
|
25412
|
+
entityId: z.string().min(1),
|
|
25413
|
+
entityType: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
|
|
25414
|
+
href: z.string().min(1),
|
|
25415
|
+
title: z.string().min(1),
|
|
25416
|
+
typeLabel: z.string().min(1),
|
|
25417
|
+
contentTypeKey: nullableString.optional(),
|
|
25418
|
+
contentTypeName: nullableString.optional(),
|
|
25419
|
+
updatedAt: nullableString.optional()
|
|
25420
|
+
}).passthrough();
|
|
25421
|
+
const internalLinkSchema = z.union([internalResolvedLinkSchema, internalRouteOnlyLinkSchema]);
|
|
25422
|
+
const externalLinkSchema = z.object({
|
|
25423
|
+
kind: z.literal("external"),
|
|
25424
|
+
href: z.string().min(1)
|
|
25425
|
+
}).passthrough();
|
|
25426
|
+
const customLinkSchema = z.object({
|
|
25427
|
+
kind: z.literal("url"),
|
|
25428
|
+
href: z.string().min(1)
|
|
25429
|
+
}).passthrough();
|
|
25430
|
+
const pageLinkSchema = z.object({
|
|
25431
|
+
kind: z.literal("page"),
|
|
25432
|
+
identifier: z.string().min(1)
|
|
25433
|
+
}).passthrough();
|
|
25434
|
+
const entryLinkSchema = z.object({
|
|
25435
|
+
kind: z.literal("entry"),
|
|
25436
|
+
contentType: z.string().min(1),
|
|
25437
|
+
identifier: z.string().min(1)
|
|
25438
|
+
}).passthrough();
|
|
25439
|
+
z.union([
|
|
25440
|
+
internalLinkSchema,
|
|
25441
|
+
externalLinkSchema,
|
|
25442
|
+
customLinkSchema,
|
|
25443
|
+
pageLinkSchema,
|
|
25444
|
+
entryLinkSchema
|
|
25445
|
+
]);
|
|
25446
|
+
//#endregion
|
|
24808
25447
|
//#region ../blocks/src/system/blocks/offerings-preview/model.ts
|
|
24809
25448
|
const OFFERINGS_PREVIEW_DEFAULT_BUTTON_TEXT = "Book";
|
|
24810
25449
|
const OFFERINGS_PREVIEW_DEFAULT_EMPTY_MESSAGE = "Nothing scheduled just yet.";
|
|
@@ -24894,7 +25533,7 @@ const publicRouteCandidatesSchema = z.object({ routes: z.array(z.object({
|
|
|
24894
25533
|
entityId: z.string(),
|
|
24895
25534
|
path: z.string(),
|
|
24896
25535
|
title: z.string(),
|
|
24897
|
-
kind: z.enum(
|
|
25536
|
+
kind: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
|
|
24898
25537
|
contentTypeKey: z.string().nullable().optional()
|
|
24899
25538
|
})) });
|
|
24900
25539
|
const groupOverrideFields = [
|
|
@@ -25188,7 +25827,7 @@ const offeringsPreviewBlockDefinition = {
|
|
|
25188
25827
|
dataSchemas: {
|
|
25189
25828
|
...offeringsPreviewEventDataSchemas,
|
|
25190
25829
|
routeCandidates: publicRouteCandidatesSchema.optional(),
|
|
25191
|
-
courses:
|
|
25830
|
+
courses: publicWholeSeriesOfferingsArraySchema.optional()
|
|
25192
25831
|
},
|
|
25193
25832
|
dataLoaders: {
|
|
25194
25833
|
...offeringsPreviewEventDataLoaders,
|
|
@@ -26660,7 +27299,7 @@ const audioPlayerBlockDefinition = { manifest: createBlockManifest({
|
|
|
26660
27299
|
}
|
|
26661
27300
|
],
|
|
26662
27301
|
layout: styledSection({
|
|
26663
|
-
children: stack({ className: "rb-container rb-mx-auto rb-max-w-3xl" }, [el("div", { className: "
|
|
27302
|
+
children: stack({ className: "rb-container rb-mx-auto rb-max-w-3xl" }, [el("div", { className: boxStyleClassNames({ role: "default" }, {}) }, [media({
|
|
26664
27303
|
className: "card-media rb-aspect-video rb-w-full rb-object-cover",
|
|
26665
27304
|
size: {
|
|
26666
27305
|
width: 960,
|
|
@@ -29712,16 +30351,27 @@ function eventListCapable() {
|
|
|
29712
30351
|
looks: "supported",
|
|
29713
30352
|
sectionSurfaces: "supported",
|
|
29714
30353
|
contentFrames: ["plain", "panel"],
|
|
29715
|
-
cardRoles: "
|
|
30354
|
+
cardRoles: "supported",
|
|
29716
30355
|
eventListTreatments
|
|
29717
30356
|
});
|
|
29718
30357
|
}
|
|
30358
|
+
function eventSpotlightCapable() {
|
|
30359
|
+
return declareBlockDesignCapability({
|
|
30360
|
+
sectionSurfaces: "supported",
|
|
30361
|
+
contentFrames: ["plain"],
|
|
30362
|
+
cardRoles: "supported"
|
|
30363
|
+
});
|
|
30364
|
+
}
|
|
29719
30365
|
function offeringsPreviewCapable() {
|
|
29720
30366
|
return declareBlockDesignCapability({
|
|
29721
30367
|
looks: "supported",
|
|
29722
30368
|
sectionSurfaces: "supported",
|
|
29723
30369
|
contentFrames: ["plain"],
|
|
29724
|
-
cardRoles: "supported"
|
|
30370
|
+
cardRoles: "supported",
|
|
30371
|
+
compositions: {
|
|
30372
|
+
kind: "offerings-preview",
|
|
30373
|
+
treatments: offeringsPreviewCompositionTreatmentValues
|
|
30374
|
+
}
|
|
29725
30375
|
});
|
|
29726
30376
|
}
|
|
29727
30377
|
function defaultBoundaryBias(visualWeight) {
|
|
@@ -30014,7 +30664,7 @@ const systemBlockDefinitions = [
|
|
|
30014
30664
|
cardRoles: "supported",
|
|
30015
30665
|
compositions: {
|
|
30016
30666
|
kind: "testimonials",
|
|
30017
|
-
treatments:
|
|
30667
|
+
treatments: testimonialsCompositionTreatmentValues
|
|
30018
30668
|
},
|
|
30019
30669
|
headingDecorationCapability: {
|
|
30020
30670
|
kind: "supported",
|
|
@@ -30169,7 +30819,7 @@ const systemBlockDefinitions = [
|
|
|
30169
30819
|
weight: "standard"
|
|
30170
30820
|
})]
|
|
30171
30821
|
})),
|
|
30172
|
-
withDesignCapability("block.event-spotlight", eventSpotlightBlockDefinition,
|
|
30822
|
+
withDesignCapability("block.event-spotlight", eventSpotlightBlockDefinition, eventSpotlightCapable(), defineBlockDesignMetadata({
|
|
30173
30823
|
flow: offeringsFlow,
|
|
30174
30824
|
layoutProfiles: [layoutProfile({
|
|
30175
30825
|
variantKey: "default",
|