@riverbankcms/sdk 0.139.0 → 0.141.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/README.md +1 -1
- package/dist/{PreviewEditorSidebar-BDeenhi3.mjs → PreviewEditorSidebar-Q-fy9GYw.mjs} +4 -4
- package/dist/{PreviewEditorUI-DSRhgjF5.mjs → PreviewEditorUI-LYGzgk85.mjs} +3 -3
- package/dist/{PreviewQueryProvider-D2K8GLUG.mjs → PreviewQueryProvider-CN0ewic5.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-CL7wSnYu.mjs → SdkPreviewModeRuntime-CoPYI5Jq.mjs} +90 -50
- package/dist/{SiteChromeCustomizeContext-BhDn-5ir.mjs → SiteChromeCustomizeContext-D8LePX8x.mjs} +2731 -1303
- package/dist/_dts/ai/src/contracts/proposals.d.ts +165 -165
- package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +212 -212
- package/dist/_dts/api/src/accessAdmin.d.ts +74 -104
- package/dist/_dts/api/src/aiEndpoints.d.ts +5 -1
- package/dist/_dts/api/src/authSubmission.d.ts +46 -0
- package/dist/_dts/api/src/billing.d.ts +8 -4
- package/dist/_dts/api/src/billingEndpointDefinitions.d.ts +23 -0
- package/dist/_dts/api/src/billingEndpointTypes.d.ts +26 -0
- package/dist/_dts/api/src/blocks.d.ts +2 -0
- package/dist/_dts/api/src/bookingRecords.d.ts +1 -2
- package/dist/_dts/api/src/commercePortalEndpoints.d.ts +8 -1
- package/dist/_dts/api/src/communications.d.ts +0 -1
- package/dist/_dts/api/src/contentRuntime.d.ts +17 -31
- package/dist/_dts/api/src/domainConnection.d.ts +4 -0
- package/dist/_dts/api/src/endpoints.d.ts +93 -64
- package/dist/_dts/api/src/event-destination-policy.d.ts +2 -1
- package/dist/_dts/api/src/footerCompositionContracts.d.ts +25 -0
- package/dist/_dts/api/src/footerSettings.d.ts +9 -6
- package/dist/_dts/api/src/index.d.ts +6 -7
- 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/launchReadiness.d.ts +1 -0
- package/dist/_dts/api/src/mailingListIntegration.d.ts +8 -2
- package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +1 -1
- package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +2 -1
- package/dist/_dts/api/src/navigation/types.d.ts +1 -1
- package/dist/_dts/api/src/onboarding/confirmationResend.d.ts +25 -0
- package/dist/_dts/api/src/onboarding/surfaceData.d.ts +32 -32
- package/dist/_dts/api/src/publicBookingAvailabilityEndpointDefinitions.d.ts +8 -0
- package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +1 -0
- package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +11 -3
- package/dist/_dts/api/src/publicExperience/sharedTypes.d.ts +3 -29
- package/dist/_dts/api/src/publicOnboardingAttemptEndpointDefinitions.d.ts +65 -0
- package/dist/_dts/api/src/saveOutcome.d.ts +20 -0
- package/dist/_dts/api/src/sdkContracts.d.ts +3 -22
- package/dist/_dts/api/src/sdkPushContracts.d.ts +18 -0
- package/dist/_dts/api/src/sdkThemeWire.d.ts +44 -44
- package/dist/_dts/api/src/settings/permissions.d.ts +12 -0
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +10 -29
- package/dist/_dts/api/src/siteOnboarding.d.ts +9 -9
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +2 -4
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +3 -1
- package/dist/_dts/api/src/siteSettings.d.ts +20 -7
- package/dist/_dts/api/src/types.d.ts +77 -77
- package/dist/_dts/api/src/wholeSeriesRuns.d.ts +2 -37
- package/dist/_dts/billing/src/membership/index.d.ts +3 -0
- package/dist/_dts/billing/src/plans/types.d.ts +3 -0
- package/dist/_dts/billing/src/site-arrangements.d.ts +23 -3
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +20 -4
- package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +2 -0
- package/dist/_dts/blocks/src/pageRendererContracts.d.ts +7 -0
- package/dist/_dts/blocks/src/portal/types.d.ts +2 -4
- package/dist/_dts/blocks/src/portal/waitlist-types.d.ts +35 -0
- package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +2 -0
- package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +2 -0
- package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +122 -0
- package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +2 -1
- package/dist/_dts/blocks/src/system/blocks/events/shared/eventSelection.d.ts +11 -0
- package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +42 -0
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -0
- package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -47
- package/dist/_dts/blocks/src/system/data/index.d.ts +2 -2
- package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +7 -1
- package/dist/_dts/blocks/src/system/data/types.d.ts +9 -0
- package/dist/_dts/blocks/src/system/data/utils.d.ts +1 -1
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +27 -1
- package/dist/_dts/blocks/src/system/registry.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +0 -28
- package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +7 -3
- package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/api/types/waitlist-claims.d.ts +7 -2
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +42 -186
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +21 -93
- package/dist/_dts/blocks/src/system/runtime/hooks/useEventFilters.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +48 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +1 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/TicketSelectionStep.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/checkoutRecovery.d.ts +14 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +56 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.state.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +6 -8
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useCheckoutRecovery.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.state.d.ts +10 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventCheckoutHandoffRestore.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +8 -7
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +14 -7
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventSourceRecovery.d.ts +18 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useSettledCommerceView.d.ts +37 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.client.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +24 -6
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.server.d.ts +4 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +4 -3
- 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 +11 -101
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +7 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/listOptions.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -6
- package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.d.ts +2 -0
- package/dist/_dts/blocks/src/system/transforms/registry/eventCalendar.d.ts +12 -0
- package/dist/_dts/commerce/src/purchase/bookingInstalmentSchedule.d.ts +4 -0
- package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +4 -0
- package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +27 -4
- package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +2 -1
- package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +3 -1
- package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +3 -0
- package/dist/_dts/core/src/branded.d.ts +0 -8
- package/dist/_dts/core/src/index.d.ts +1 -0
- package/dist/_dts/core/src/mailing-list-setup-parser.d.ts +1 -1
- package/dist/_dts/core/src/mailing-list-setup.d.ts +14 -1
- package/dist/_dts/core/src/mailing-list-submission.d.ts +7 -27
- package/dist/_dts/core/src/participants.d.ts +2 -29
- package/dist/_dts/core/src/public-experience.d.ts +4 -0
- package/dist/_dts/core/src/public-profile.d.ts +27 -1
- package/dist/_dts/core/src/site-route-target.d.ts +9 -2
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +296 -606
- package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListGlobalSettingsSummary.d.ts +10 -0
- package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListTargetingField.d.ts +3 -2
- package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/context.d.ts +3 -2
- package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +3 -2
- package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/targetingState.d.ts +19 -0
- package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +27 -1
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +14 -20
- package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -0
- package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +2 -0
- package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +7 -1
- package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +1 -0
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/ThemeFontLoader.d.ts +17 -1
- package/dist/_dts/theme-core/src/accordions/types.d.ts +3 -3
- package/dist/_dts/theme-core/src/buttons/affordanceSuppression.d.ts +17 -0
- package/dist/_dts/theme-core/src/buttons/buttonColourContract.d.ts +1 -1
- package/dist/_dts/theme-core/src/buttons/classNames.d.ts +16 -0
- package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +0 -6
- package/dist/_dts/theme-core/src/buttons/resolvedButtonCss.d.ts +4 -4
- package/dist/_dts/theme-core/src/cards/types.d.ts +21 -21
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +8 -2
- package/dist/_dts/theme-core/src/header/legacyHeaderVariant.d.ts +2 -2
- package/dist/_dts/theme-core/src/hosted-booking-appearance.d.ts +54 -12
- package/dist/_dts/theme-core/src/index.d.ts +1 -1
- package/dist/_dts/theme-core/src/inputs/types.d.ts +2 -2
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +54 -54
- package/dist/_dts/theme-core/src/runtime/buildThemeRuntimeFromBridge.d.ts +1 -4
- package/dist/_dts/theme-core/src/schema.d.ts +84 -84
- package/dist/_dts/theme-core/src/shared/componentStyles.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
- package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +77 -0
- package/dist/_dts/theme-core/src/surfaces/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/typography/generateTypographyCss.d.ts +2 -2
- package/dist/_dts/ui/src/lib/use-delayed-flag.d.ts +9 -0
- package/dist/_dts/ui/src/pending-button.d.ts +10 -0
- package/dist/client/{BookingConsentAgreement-CZvTDtsK.mjs → BookingConsentAgreement-xJeYNdnb.mjs} +4 -4
- package/dist/client/{DiscountCodeDisclosure-D-DsLCMU.mjs → DiscountCodeDisclosure-DdT6uzl9.mjs} +1 -1
- package/dist/client/{EventCombined.client-dWqgd5ZO.mjs → EventCombined.client-Cp28uYuM.mjs} +12 -16
- package/dist/client/{EventListing.client-BMRa9IYp.mjs → EventListing.client-CD6AJsMr.mjs} +4 -17
- package/dist/client/{LeafletStaticMap-D21W9kBZ.mjs → LeafletStaticMap-DBsAi9-e.mjs} +1 -1
- package/dist/client/{accordion-FxF_ta47.mjs → accordion-6dwbOKYR.mjs} +1 -1
- package/dist/client/{bookingForm-YnwW4TGw.mjs → bookingForm-CZE9_qPQ.mjs} +7 -7
- package/dist/client/bookings.mjs +500 -233
- package/dist/client/{carousel-vng7fFT5.mjs → carousel-7VHGQARz.mjs} +2 -2
- package/dist/client/{carousel.client-59G_WMr4.mjs → carousel.client-DQTjCVQT.mjs} +1 -1
- package/dist/client/{cart-DEPDsjNk.mjs → cart-Qg_mvQhh.mjs} +3 -3
- package/dist/client/{checkout-CZRWu9rW.mjs → checkout-D84rpgdr.mjs} +3 -3
- package/dist/client/{checkoutUrls-BuseL0dw.mjs → checkoutUrls-FL6lRkrt.mjs} +1 -1
- package/dist/client/client.mjs +2315 -1017
- package/dist/client/{colorStyles-CrxJrPjJ.mjs → colorStyles-3013aRAY.mjs} +3 -1
- package/dist/client/{context-DvU_WUmd.mjs → context-Ctp3T0Wr.mjs} +6 -19
- package/dist/client/{dates-wnPMiRl5.mjs → dates-DJKFcI_N.mjs} +2 -2
- package/dist/client/{eventCalendar-BA3Q5L15.mjs → eventCalendar-CK31z3vs.mjs} +12 -8
- package/dist/client/{eventCombined-51wgR-1R.mjs → eventCombined-DiXd-ewn.mjs} +3 -3
- package/dist/client/{eventDetails-modaetpm.mjs → eventDetails-CTRgt2DK.mjs} +4 -4
- package/dist/client/{eventListing-D8t2J3Kv.mjs → eventListing-Dy9vi_j_.mjs} +3 -3
- package/dist/client/{eventRegistration-CYqtkCE_.mjs → eventRegistration-CnalYMr2.mjs} +618 -177
- package/dist/client/{form-CBKXN5In.mjs → form-eUiMveTT.mjs} +3 -3
- package/dist/client/{headerSection-DylDqNrs.mjs → headerSection-Dy9kQpB1.mjs} +2 -2
- package/dist/client/hooks.mjs +692 -212
- package/dist/client/{locationMap-CvWrG0vZ.mjs → locationMap-DalCmWU0.mjs} +3 -3
- package/dist/client/{media-BOHuueS5.mjs → media-DHpfFwd3.mjs} +1 -1
- package/dist/client/{newsletterForm-Btwk70zw.mjs → newsletterForm-SDDPvhS0.mjs} +150 -94
- package/dist/client/{pricing-Uzw-GQ6Y.mjs → pricing-OcMz4SnX.mjs} +1 -1
- package/dist/client/{productDetail-JLcUYKnd.mjs → productDetail-BQrgHElM.mjs} +3 -3
- package/dist/client/{productList-FM0cbUzj.mjs → productList-OnPn_UJj.mjs} +3 -3
- package/dist/client/{propsDecoder-DYzafZb2.mjs → propsDecoder-zBdsnS-N.mjs} +168 -32
- package/dist/client/rendering/client.mjs +1355 -519
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +2294 -953
- package/dist/client/{scrollToBlock-CvXszexS.mjs → scrollToBlock-BNM4Ob2Y.mjs} +28 -11
- package/dist/client/{shop-BIcjvy5a.mjs → shop-Bv1fPTwQ.mjs} +6 -6
- package/dist/client/{shop-commerce-BZQsy7xw.mjs → shop-commerce-D4KNGaW8.mjs} +7 -7
- package/dist/client/{shop-commerce-store-D5V7XAb5.mjs → shop-commerce-store-2N5EV0Rc.mjs} +1 -1
- package/dist/client/{shopShared-DowkXevB.mjs → shopShared-DvJGdHTV.mjs} +4 -4
- package/dist/client/{useEventFilters-oMoTw_JE.mjs → useEventFilters-BBBvGDHQ.mjs} +19 -13
- package/dist/preview-next/before-render.mjs +119 -64
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/editor-chrome.css +4 -8
- package/dist/preview-next/keepAlive.mjs +119 -64
- package/dist/preview-next/middleware.mjs +119 -64
- package/dist/{previewAuthStore-COUyAKaX.mjs → previewAuthStore-Gjb6r6vz.mjs} +119 -64
- package/dist/{sdk-runtime-D4k2LSGF.mjs → sdk-runtime-Defnbfzw.mjs} +2 -2
- package/dist/{separator-UGtpag4Z.mjs → separator-CZXO3Sb0.mjs} +1 -1
- package/dist/server/components.mjs +1170 -384
- package/dist/server/config-validation.mjs +560 -105
- package/dist/server/config.mjs +564 -109
- package/dist/server/data.mjs +688 -212
- package/dist/server/index.mjs +126 -66
- package/dist/server/next.mjs +1429 -662
- package/dist/server/page-converter.mjs +372 -99
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +1624 -817
- package/dist/server/rendering.mjs +1200 -391
- package/dist/server/routing.mjs +767 -247
- package/dist/server/server.mjs +715 -276
- package/dist/server/theme-bridge.mjs +475 -110
- package/dist/server/theme.mjs +9 -3
- package/dist/styles/index.css +265 -45
- package/package.json +1 -1
- package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionCompactRow.d.ts +0 -29
- package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionList.d.ts +0 -13
|
@@ -1314,10 +1314,12 @@ const unsafeAsApiKeyId = (id) => id;
|
|
|
1314
1314
|
const unsafeAsEventOfferingId = (id) => id;
|
|
1315
1315
|
const unsafeAsEventSeriesId = (id) => id;
|
|
1316
1316
|
const unsafeAsUserId = (id) => id;
|
|
1317
|
+
const unsafeAsContentVersionId = (id) => id;
|
|
1317
1318
|
const parseSiteId = (value) => parseUuidBrand(value, unsafeAsSiteId);
|
|
1318
1319
|
const parseApiKeyId = (value) => parseUuidBrand(value, unsafeAsApiKeyId);
|
|
1319
1320
|
const parseEventOfferingId = (value) => parseUuidBrand(value, unsafeAsEventOfferingId);
|
|
1320
1321
|
const parseUserId = (value) => parseUuidBrand(value, unsafeAsUserId);
|
|
1322
|
+
const parseContentVersionId = (value) => parseUuidBrand(value, unsafeAsContentVersionId);
|
|
1321
1323
|
const parseEventSeriesId = (value) => parseUuidBrand(value, unsafeAsEventSeriesId);
|
|
1322
1324
|
//#endregion
|
|
1323
1325
|
//#region ../core/src/assert-never.ts
|
|
@@ -1551,7 +1553,7 @@ function parseEventPageSurfaceDestinationMode(value) {
|
|
|
1551
1553
|
return value === "cms-managed" || value === "system-managed" ? value : void 0;
|
|
1552
1554
|
}
|
|
1553
1555
|
function parseEventPageSurfaceSubject(value) {
|
|
1554
|
-
if (!isRecord$
|
|
1556
|
+
if (!isRecord$11(value)) return err({ kind: "notObject" });
|
|
1555
1557
|
switch (value.kind) {
|
|
1556
1558
|
case "eventSeries": {
|
|
1557
1559
|
const eventSeriesId = parseEventSeriesId(value.eventSeriesId);
|
|
@@ -1606,7 +1608,7 @@ function parseEventSeriesIdList(values) {
|
|
|
1606
1608
|
}
|
|
1607
1609
|
return ok(parsed);
|
|
1608
1610
|
}
|
|
1609
|
-
function isRecord$
|
|
1611
|
+
function isRecord$11(value) {
|
|
1610
1612
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1611
1613
|
}
|
|
1612
1614
|
//#endregion
|
|
@@ -1790,16 +1792,47 @@ function parsePositiveInteger(value) {
|
|
|
1790
1792
|
function parseNewsletterListId(value) {
|
|
1791
1793
|
return parseTrimmedMatchingString(value, UUID_PATTERN);
|
|
1792
1794
|
}
|
|
1795
|
+
function parseMailchimpAccountId(value) {
|
|
1796
|
+
return parseTrimmedMatchingString(value, OPAQUE_ID_PATTERN);
|
|
1797
|
+
}
|
|
1793
1798
|
function parseMailchimpAudienceId(value) {
|
|
1794
1799
|
return parseTrimmedMatchingString(value, OPAQUE_ID_PATTERN);
|
|
1795
1800
|
}
|
|
1796
1801
|
function parseMailchimpInterestId(value) {
|
|
1797
1802
|
return parseTrimmedMatchingString(value, OPAQUE_ID_PATTERN);
|
|
1798
1803
|
}
|
|
1804
|
+
function parseBrevoAccountId(value) {
|
|
1805
|
+
return parseTrimmedMatchingString(value, OPAQUE_ID_PATTERN);
|
|
1806
|
+
}
|
|
1799
1807
|
function parseBrevoListId(value) {
|
|
1800
1808
|
return parsePositiveInteger(value);
|
|
1801
1809
|
}
|
|
1802
1810
|
//#endregion
|
|
1811
|
+
//#region ../core/src/mailing-list-setup.ts
|
|
1812
|
+
function isRecord$10(value) {
|
|
1813
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1814
|
+
}
|
|
1815
|
+
const DEFAULT_MAILING_LIST_SUCCESS_MESSAGE = "Thanks — you're on the list.";
|
|
1816
|
+
function parseMailingListProviderScope(value) {
|
|
1817
|
+
if (!isRecord$10(value)) return err("invalid_mailing_list_provider_scope");
|
|
1818
|
+
if (value.provider === "native") return ok({ provider: "native" });
|
|
1819
|
+
if (value.provider === "brevo") {
|
|
1820
|
+
const accountId = parseBrevoAccountId(value.accountId);
|
|
1821
|
+
return accountId !== null ? ok({
|
|
1822
|
+
provider: "brevo",
|
|
1823
|
+
accountId
|
|
1824
|
+
}) : err("invalid_mailing_list_provider_scope");
|
|
1825
|
+
}
|
|
1826
|
+
if (value.provider === "mailchimp") {
|
|
1827
|
+
const accountId = parseMailchimpAccountId(value.accountId);
|
|
1828
|
+
return accountId !== null ? ok({
|
|
1829
|
+
provider: "mailchimp",
|
|
1830
|
+
accountId
|
|
1831
|
+
}) : err("invalid_mailing_list_provider_scope");
|
|
1832
|
+
}
|
|
1833
|
+
return err("invalid_mailing_list_provider_scope");
|
|
1834
|
+
}
|
|
1835
|
+
//#endregion
|
|
1803
1836
|
//#region ../core/src/mailing-list-setup-parser.ts
|
|
1804
1837
|
function parseMailingListGlobalForm(value) {
|
|
1805
1838
|
if (!isRecord$9(value)) return formError("shape");
|
|
@@ -1808,12 +1841,15 @@ function parseMailingListGlobalForm(value) {
|
|
|
1808
1841
|
if (typeof value.includeOptionalPhone !== "boolean") return formError("includeOptionalPhone");
|
|
1809
1842
|
const buttonLabel = parseRequiredString(value.buttonLabel);
|
|
1810
1843
|
if (buttonLabel === null) return formError("buttonLabel");
|
|
1844
|
+
const successMessage = parseRequiredString(value.successMessage);
|
|
1845
|
+
if (successMessage === null) return formError("successMessage");
|
|
1811
1846
|
const privacyNote = parseOptionalString(value.privacyNote);
|
|
1812
1847
|
if (privacyNote === void 0) return formError("privacyNote");
|
|
1813
1848
|
return ok({
|
|
1814
1849
|
fields,
|
|
1815
1850
|
includeOptionalPhone: value.includeOptionalPhone,
|
|
1816
1851
|
buttonLabel,
|
|
1852
|
+
successMessage,
|
|
1817
1853
|
privacyNote
|
|
1818
1854
|
});
|
|
1819
1855
|
}
|
|
@@ -2143,11 +2179,17 @@ function parseMailingListSignedSourceToken(value) {
|
|
|
2143
2179
|
const parsed = typeof value === "string" ? value.trim() : "";
|
|
2144
2180
|
return /^[A-Za-z0-9._~-]{16,1000}$/u.test(parsed) ? parsed : null;
|
|
2145
2181
|
}
|
|
2146
|
-
function
|
|
2147
|
-
const parsed =
|
|
2148
|
-
return parsed
|
|
2182
|
+
function parseMailingListContentVersionId(value) {
|
|
2183
|
+
const parsed = parseContentVersionId(value);
|
|
2184
|
+
return parsed.ok ? parsed.value : null;
|
|
2185
|
+
}
|
|
2186
|
+
function buildMailingListSignupBlockSourceRef(blockId, contentVersionId) {
|
|
2187
|
+
const parsedBlockId = parseMailingListBlockId(blockId);
|
|
2188
|
+
const parsedContentVersionId = parseMailingListContentVersionId(contentVersionId);
|
|
2189
|
+
return parsedBlockId !== null && parsedContentVersionId !== null ? {
|
|
2149
2190
|
tag: "block_ref",
|
|
2150
|
-
blockId:
|
|
2191
|
+
blockId: parsedBlockId,
|
|
2192
|
+
contentVersionId: parsedContentVersionId
|
|
2151
2193
|
} : null;
|
|
2152
2194
|
}
|
|
2153
2195
|
//#endregion
|
|
@@ -2652,6 +2694,14 @@ const PUBLIC_BOOKING_AVAILABILITY_ENDPOINT_DEFINITIONS = defineEndpointDefinitio
|
|
|
2652
2694
|
auth: "public",
|
|
2653
2695
|
responseKind: "json"
|
|
2654
2696
|
},
|
|
2697
|
+
getPublicBookingServiceBySlug: {
|
|
2698
|
+
path: "/public/bookings/services/by-slug/{slug}",
|
|
2699
|
+
method: "GET",
|
|
2700
|
+
revalidate: publicReadFreshnessSeconds("getPublicBookingService"),
|
|
2701
|
+
tags: [TAG_TEMPLATES.publicBookingServices],
|
|
2702
|
+
auth: "public",
|
|
2703
|
+
responseKind: "json"
|
|
2704
|
+
},
|
|
2655
2705
|
getPublicBookingResourcesReference: {
|
|
2656
2706
|
path: "/public/bookings/resources/reference",
|
|
2657
2707
|
method: "GET",
|
|
@@ -3204,16 +3254,110 @@ const PUBLIC_READ_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
3204
3254
|
responseKind: "json"
|
|
3205
3255
|
}
|
|
3206
3256
|
});
|
|
3257
|
+
//#endregion
|
|
3258
|
+
//#region ../api/src/publicOnboardingAttemptEndpointDefinitions.ts
|
|
3259
|
+
/**
|
|
3260
|
+
* The anonymous onboarding attempt, addressed by its opaque resume token.
|
|
3261
|
+
*
|
|
3262
|
+
* Every route here is reached before there is an account, so none of them can
|
|
3263
|
+
* be scoped to a site or a user: the token is the whole credential. They are
|
|
3264
|
+
* kept together so that stays obvious.
|
|
3265
|
+
*/
|
|
3266
|
+
const PUBLIC_ONBOARDING_ATTEMPT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
3267
|
+
createPublicOnboardingAttempt: {
|
|
3268
|
+
path: "/public/onboarding/attempts",
|
|
3269
|
+
method: "POST",
|
|
3270
|
+
auth: "public",
|
|
3271
|
+
errors: [],
|
|
3272
|
+
responseKind: "json"
|
|
3273
|
+
},
|
|
3274
|
+
createPublicOnboardingLogoUploadUrl: {
|
|
3275
|
+
path: "/public/onboarding/attempts/{attemptToken}/logo-upload-url",
|
|
3276
|
+
method: "POST",
|
|
3277
|
+
auth: "public",
|
|
3278
|
+
errors: [],
|
|
3279
|
+
responseKind: "json"
|
|
3280
|
+
},
|
|
3281
|
+
uploadPublicOnboardingLogo: {
|
|
3282
|
+
path: "/public/onboarding/attempts/{attemptToken}/logo",
|
|
3283
|
+
method: "POST",
|
|
3284
|
+
auth: "public",
|
|
3285
|
+
errors: [],
|
|
3286
|
+
responseKind: "json"
|
|
3287
|
+
},
|
|
3288
|
+
getPublicOnboardingAttempt: {
|
|
3289
|
+
path: "/public/onboarding/attempts/{attemptToken}",
|
|
3290
|
+
method: "GET",
|
|
3291
|
+
auth: "public",
|
|
3292
|
+
errors: [],
|
|
3293
|
+
responseKind: "json"
|
|
3294
|
+
},
|
|
3295
|
+
getPublicOnboardingAttemptProgress: {
|
|
3296
|
+
path: "/public/onboarding/attempts/{attemptToken}/status",
|
|
3297
|
+
method: "GET",
|
|
3298
|
+
auth: "public",
|
|
3299
|
+
errors: [],
|
|
3300
|
+
responseKind: "json"
|
|
3301
|
+
},
|
|
3302
|
+
updatePublicOnboardingAttempt: {
|
|
3303
|
+
path: "/public/onboarding/attempts/{attemptToken}",
|
|
3304
|
+
method: "PATCH",
|
|
3305
|
+
auth: "public",
|
|
3306
|
+
errors: [],
|
|
3307
|
+
responseKind: "json"
|
|
3308
|
+
},
|
|
3309
|
+
runPublicOnboardingAttempt: {
|
|
3310
|
+
path: "/public/onboarding/attempts/{attemptToken}/run",
|
|
3311
|
+
method: "POST",
|
|
3312
|
+
auth: "public",
|
|
3313
|
+
errors: [],
|
|
3314
|
+
responseKind: "json"
|
|
3315
|
+
},
|
|
3316
|
+
resendPublicOnboardingAttemptConfirmation: {
|
|
3317
|
+
path: "/public/onboarding/attempts/{attemptToken}/resend-confirmation",
|
|
3318
|
+
method: "POST",
|
|
3319
|
+
auth: "public",
|
|
3320
|
+
errors: [],
|
|
3321
|
+
responseKind: "json"
|
|
3322
|
+
}
|
|
3323
|
+
});
|
|
3324
|
+
//#endregion
|
|
3325
|
+
//#region ../api/src/billingEndpointDefinitions.ts
|
|
3326
|
+
const BILLING_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
3327
|
+
adminChangePlan: {
|
|
3328
|
+
path: "/admin/billing/plan",
|
|
3329
|
+
method: "POST",
|
|
3330
|
+
tags: ["admin", "billing"],
|
|
3331
|
+
auth: "admin",
|
|
3332
|
+
responseKind: "json"
|
|
3333
|
+
},
|
|
3334
|
+
changePlan: {
|
|
3335
|
+
path: "/billing/plan/change",
|
|
3336
|
+
method: "POST",
|
|
3337
|
+
tags: ["billing"],
|
|
3338
|
+
auth: "user",
|
|
3339
|
+
responseKind: "json"
|
|
3340
|
+
},
|
|
3341
|
+
createBillingPortalSession: {
|
|
3342
|
+
path: "/billing/portal/session",
|
|
3343
|
+
method: "POST",
|
|
3344
|
+
tags: ["billing"],
|
|
3345
|
+
auth: "user",
|
|
3346
|
+
responseKind: "json"
|
|
3347
|
+
}
|
|
3348
|
+
});
|
|
3207
3349
|
({
|
|
3208
3350
|
...ACCOUNT_ENDPOINT_DEFINITIONS,
|
|
3351
|
+
...PUBLIC_ONBOARDING_ATTEMPT_ENDPOINT_DEFINITIONS,
|
|
3209
3352
|
...PUBLIC_EVENT_ENDPOINT_DEFINITIONS,
|
|
3210
3353
|
...GIFTING_ENDPOINT_DEFINITIONS,
|
|
3211
|
-
...PUBLIC_READ_ENDPOINT_DEFINITIONS
|
|
3354
|
+
...PUBLIC_READ_ENDPOINT_DEFINITIONS,
|
|
3355
|
+
...BILLING_ENDPOINT_DEFINITIONS
|
|
3212
3356
|
}), TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, { ...SITE_API_KEY_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.site, TAG_TEMPLATES.siteBookingSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteBookingSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, {
|
|
3213
3357
|
...NEWSLETTER_ENDPOINT_DEFINITIONS,
|
|
3214
3358
|
...APPOINTMENT_ENDPOINT_DEFINITIONS,
|
|
3215
3359
|
...EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS
|
|
3216
|
-
}, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.workflowRunById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.routeById, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, { ...PUBLIC_BOOKING_AVAILABILITY_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicEventFilters, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicShop, TAG_TEMPLATES.publicCheckout, TAG_TEMPLATES.siteRoutableContent, { ...PUBLIC_EVENT_CHECKOUT_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, { ...EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS }, { ...SDK_MEDIA_ENDPOINT_DEFINITIONS }, { ...SDK_ENDPOINT_DEFINITIONS }, { ...SDK_ENTRY_READ_ENDPOINTS };
|
|
3360
|
+
}, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.workflowRunById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.routeById, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicBookingServices, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, { ...PUBLIC_BOOKING_AVAILABILITY_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicEventFilters, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicShop, TAG_TEMPLATES.publicCheckout, TAG_TEMPLATES.siteRoutableContent, { ...PUBLIC_EVENT_CHECKOUT_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, { ...EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS }, { ...SDK_MEDIA_ENDPOINT_DEFINITIONS }, { ...SDK_ENDPOINT_DEFINITIONS }, { ...SDK_ENTRY_READ_ENDPOINTS };
|
|
3217
3361
|
z.object({ refreshToken: z.string().min(1).max(4096) }).strict();
|
|
3218
3362
|
z.object({
|
|
3219
3363
|
accessToken: z.string().min(1).max(4096),
|
|
@@ -5853,7 +5997,7 @@ const BUTTON_CONTRAST_POLICY = {
|
|
|
5853
5997
|
nonTextMinimumRatio: 3,
|
|
5854
5998
|
gradientSamplesPerSegment: 20,
|
|
5855
5999
|
alphaBackgrounds: "reject-without-known-surface",
|
|
5856
|
-
disabled: "
|
|
6000
|
+
disabled: "validated-colour-pair-with-muted-control-opacity"
|
|
5857
6001
|
};
|
|
5858
6002
|
function validateButtonSurfaceContrast(input) {
|
|
5859
6003
|
const ratio = contrastRatio(input.buttonPaint, input.surfaceHex);
|
|
@@ -6379,59 +6523,6 @@ function interpolateHex(startHex, endHex, position) {
|
|
|
6379
6523
|
const channel = (from, to) => Math.round(from + (to - from) * position).toString(16).padStart(2, "0");
|
|
6380
6524
|
return `#${channel(start.r, end.r)}${channel(start.g, end.g)}${channel(start.b, end.b)}`;
|
|
6381
6525
|
}
|
|
6382
|
-
shadeBackgroundEffect({
|
|
6383
|
-
id: "darken-background",
|
|
6384
|
-
name: "Darken on Hover",
|
|
6385
|
-
description: "Darkens the background color on hover",
|
|
6386
|
-
label: "Darken Amount (shade step)",
|
|
6387
|
-
shadeDirection: 1
|
|
6388
|
-
});
|
|
6389
|
-
shadeBackgroundEffect({
|
|
6390
|
-
id: "lighten-background",
|
|
6391
|
-
name: "Lighten on Hover",
|
|
6392
|
-
description: "Lightens the background color on hover",
|
|
6393
|
-
label: "Lighten Amount (shade step)",
|
|
6394
|
-
shadeDirection: -1
|
|
6395
|
-
});
|
|
6396
|
-
function shadeBackgroundEffect(config) {
|
|
6397
|
-
return {
|
|
6398
|
-
id: config.id,
|
|
6399
|
-
name: config.name,
|
|
6400
|
-
description: config.description,
|
|
6401
|
-
category: "background",
|
|
6402
|
-
pseudoElement: "none",
|
|
6403
|
-
applicableTo: ["button"],
|
|
6404
|
-
customizableOption: {
|
|
6405
|
-
name: "amount",
|
|
6406
|
-
type: "select",
|
|
6407
|
-
label: config.label,
|
|
6408
|
-
default: 100,
|
|
6409
|
-
options: [
|
|
6410
|
-
0,
|
|
6411
|
-
100,
|
|
6412
|
-
200,
|
|
6413
|
-
300,
|
|
6414
|
-
400,
|
|
6415
|
-
500,
|
|
6416
|
-
600,
|
|
6417
|
-
700,
|
|
6418
|
-
800,
|
|
6419
|
-
900
|
|
6420
|
-
]
|
|
6421
|
-
},
|
|
6422
|
-
isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
|
|
6423
|
-
generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
|
|
6424
|
-
if (buttonConfig.background.type !== "solid") return "";
|
|
6425
|
-
const amount = (options.amount || 100) * config.shadeDirection;
|
|
6426
|
-
const baseToken = buttonConfig.background.colorToken ?? "primary-500";
|
|
6427
|
-
return `
|
|
6428
|
-
:where([data-theme-scope="${themeId}"]) .${variantId}:hover {
|
|
6429
|
-
background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
|
|
6430
|
-
}
|
|
6431
|
-
`;
|
|
6432
|
-
}
|
|
6433
|
-
};
|
|
6434
|
-
}
|
|
6435
6526
|
//#endregion
|
|
6436
6527
|
//#region ../theme-core/src/palette/utils/opaqueSurfaceColor.ts
|
|
6437
6528
|
/** Resolve an opaque colour, compositing alpha against an explicit underlay. */
|
|
@@ -6716,6 +6807,59 @@ function mergeStyles(...styles) {
|
|
|
6716
6807
|
}
|
|
6717
6808
|
return Object.keys(merged).length ? merged : void 0;
|
|
6718
6809
|
}
|
|
6810
|
+
shadeBackgroundEffect({
|
|
6811
|
+
id: "darken-background",
|
|
6812
|
+
name: "Darken on Hover",
|
|
6813
|
+
description: "Darkens the background color on hover",
|
|
6814
|
+
label: "Darken Amount (shade step)",
|
|
6815
|
+
shadeDirection: 1
|
|
6816
|
+
});
|
|
6817
|
+
shadeBackgroundEffect({
|
|
6818
|
+
id: "lighten-background",
|
|
6819
|
+
name: "Lighten on Hover",
|
|
6820
|
+
description: "Lightens the background color on hover",
|
|
6821
|
+
label: "Lighten Amount (shade step)",
|
|
6822
|
+
shadeDirection: -1
|
|
6823
|
+
});
|
|
6824
|
+
function shadeBackgroundEffect(config) {
|
|
6825
|
+
return {
|
|
6826
|
+
id: config.id,
|
|
6827
|
+
name: config.name,
|
|
6828
|
+
description: config.description,
|
|
6829
|
+
category: "background",
|
|
6830
|
+
pseudoElement: "none",
|
|
6831
|
+
applicableTo: ["button"],
|
|
6832
|
+
customizableOption: {
|
|
6833
|
+
name: "amount",
|
|
6834
|
+
type: "select",
|
|
6835
|
+
label: config.label,
|
|
6836
|
+
default: 100,
|
|
6837
|
+
options: [
|
|
6838
|
+
0,
|
|
6839
|
+
100,
|
|
6840
|
+
200,
|
|
6841
|
+
300,
|
|
6842
|
+
400,
|
|
6843
|
+
500,
|
|
6844
|
+
600,
|
|
6845
|
+
700,
|
|
6846
|
+
800,
|
|
6847
|
+
900
|
|
6848
|
+
]
|
|
6849
|
+
},
|
|
6850
|
+
isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
|
|
6851
|
+
generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
|
|
6852
|
+
if (buttonConfig.background.type !== "solid") return "";
|
|
6853
|
+
const amount = (options.amount || 100) * config.shadeDirection;
|
|
6854
|
+
const baseToken = buttonConfig.background.colorToken ?? "primary-500";
|
|
6855
|
+
return `
|
|
6856
|
+
:where([data-theme-scope="${themeId}"]) .${variantId}:hover {
|
|
6857
|
+
background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
|
|
6858
|
+
}
|
|
6859
|
+
`;
|
|
6860
|
+
}
|
|
6861
|
+
};
|
|
6862
|
+
}
|
|
6719
6863
|
//#endregion
|
|
6720
6864
|
//#region ../theme-core/src/utils/tokenOrColor.ts
|
|
6721
6865
|
/**
|
|
@@ -10138,8 +10282,14 @@ const headerInteractionPillPaletteValues = [
|
|
|
10138
10282
|
"accent"
|
|
10139
10283
|
];
|
|
10140
10284
|
/**
|
|
10141
|
-
* "No pill":
|
|
10142
|
-
*
|
|
10285
|
+
* "No pill": a colour change on hover rather than a filled background.
|
|
10286
|
+
*
|
|
10287
|
+
* The palette step writes nothing (#1318 Phase 4c decision 2), but on a
|
|
10288
|
+
* foreground-adaptive style that is not the end of the story: the hover colour
|
|
10289
|
+
* is derived from the resolved opening foreground at render time, paired with
|
|
10290
|
+
* the resting colour, so `quiet` resolves to a definite colour rather than to
|
|
10291
|
+
* whatever brand token the recipe happened to name. See
|
|
10292
|
+
* `applyOpeningForeground`.
|
|
10143
10293
|
*
|
|
10144
10294
|
* It exists because "a colour change on hover, no filled background" was not
|
|
10145
10295
|
* expressible in the vocabulary, and it is what
|
|
@@ -16189,6 +16339,7 @@ function isDisplayMediaKind(kind) {
|
|
|
16189
16339
|
}
|
|
16190
16340
|
const siteOptionSources = [
|
|
16191
16341
|
"eventCategories",
|
|
16342
|
+
"eventSeries",
|
|
16192
16343
|
"venues",
|
|
16193
16344
|
"staffMembers"
|
|
16194
16345
|
];
|
|
@@ -27059,7 +27210,8 @@ const appointmentServicesBlockDefinition = {
|
|
|
27059
27210
|
el("appointment-services", {
|
|
27060
27211
|
sectionHeading: { $bind: { from: "content.heading" } },
|
|
27061
27212
|
services: { $bind: { from: "data.services" } },
|
|
27062
|
-
pathname: { $bind: { from: "$root.pathname" } }
|
|
27213
|
+
pathname: { $bind: { from: "$root.pathname" } },
|
|
27214
|
+
servicePathPrefix: { $bind: { from: "$root.appointmentServicePathPrefix" } }
|
|
27063
27215
|
})
|
|
27064
27216
|
], { gap: "lg" })
|
|
27065
27217
|
})]
|
|
@@ -27439,6 +27591,28 @@ const bookingRequirementConsentFieldSchema = z.object({
|
|
|
27439
27591
|
z.union([blockBookingConsentSchema, bookingRequirementConsentFieldSchema]);
|
|
27440
27592
|
//#endregion
|
|
27441
27593
|
//#region ../blocks/src/system/blocks/events/shared/schemas.ts
|
|
27594
|
+
const publicEventLoaderQuerySchemaShape = {
|
|
27595
|
+
limit: z.string().optional(),
|
|
27596
|
+
from: z.string().optional(),
|
|
27597
|
+
to: z.string().optional(),
|
|
27598
|
+
afterStartsAt: z.string().optional(),
|
|
27599
|
+
afterId: z.string().optional(),
|
|
27600
|
+
categoryIds: z.string().optional(),
|
|
27601
|
+
venueId: z.string().optional(),
|
|
27602
|
+
staffMemberId: z.string().optional(),
|
|
27603
|
+
eventSurface: z.string().optional(),
|
|
27604
|
+
eventPresets: z.string().optional(),
|
|
27605
|
+
scheduleScope: z.string().optional(),
|
|
27606
|
+
seriesId: z.string().optional(),
|
|
27607
|
+
seriesIds: z.string().optional(),
|
|
27608
|
+
runSeriesId: z.string().optional(),
|
|
27609
|
+
seriesSlug: z.string().optional(),
|
|
27610
|
+
includeOccurrenceId: z.string().optional(),
|
|
27611
|
+
readIntent: z.string().optional(),
|
|
27612
|
+
detailLevel: z.string().optional(),
|
|
27613
|
+
readProfile: z.string().optional()
|
|
27614
|
+
};
|
|
27615
|
+
z.object(publicEventLoaderQuerySchemaShape);
|
|
27442
27616
|
const eventPresetSchema = z.enum([
|
|
27443
27617
|
"event",
|
|
27444
27618
|
"class",
|
|
@@ -28241,6 +28415,44 @@ function toWholeSeriesRegistrationEvents(events) {
|
|
|
28241
28415
|
return groupPublicEventsByRun(events).map(toWholeSeriesRegistrationEvent).filter((event) => event !== null);
|
|
28242
28416
|
}
|
|
28243
28417
|
//#endregion
|
|
28418
|
+
//#region ../blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.ts
|
|
28419
|
+
const { limit: _rawLimit, eventSurface: _rawEventSurface, scheduleScope: _rawScheduleScope, detailLevel: _rawDetailLevel, ...stringEventQueryShape } = publicEventLoaderQuerySchemaShape;
|
|
28420
|
+
const eventRecoveryRequestSchema = z.object({
|
|
28421
|
+
...stringEventQueryShape,
|
|
28422
|
+
limit: z.coerce.number().int().positive().optional(),
|
|
28423
|
+
eventSurface: z.enum(eventSurfaceScopeValues).optional(),
|
|
28424
|
+
scheduleScope: z.enum(eventScheduleScopeValues).optional(),
|
|
28425
|
+
detailLevel: z.enum(["full", "listing"]).optional(),
|
|
28426
|
+
stage: z.enum(["preview", "published"]).optional()
|
|
28427
|
+
});
|
|
28428
|
+
function resolveEventRegistrationEventSource(input) {
|
|
28429
|
+
if (input.wholeSeriesRunEvents != null) return {
|
|
28430
|
+
kind: "loaded",
|
|
28431
|
+
events: input.wholeSeriesRunEvents
|
|
28432
|
+
};
|
|
28433
|
+
if (input.events != null) return {
|
|
28434
|
+
kind: "loaded",
|
|
28435
|
+
events: input.events
|
|
28436
|
+
};
|
|
28437
|
+
return {
|
|
28438
|
+
kind: "unresolved",
|
|
28439
|
+
request: parseEventLoaderRecoveryRequest(input.failures?.wholeSeriesRunEvents ?? input.failures?.events)
|
|
28440
|
+
};
|
|
28441
|
+
}
|
|
28442
|
+
const eventLoaderFailureSchema = z.object({
|
|
28443
|
+
endpoint: z.literal("listPublicEvents"),
|
|
28444
|
+
params: eventRecoveryRequestSchema.extend({ siteId: z.string().optional() })
|
|
28445
|
+
});
|
|
28446
|
+
function parseEventLoaderRecoveryRequest(value) {
|
|
28447
|
+
const parsed = eventLoaderFailureSchema.safeParse(value);
|
|
28448
|
+
if (!parsed.success) return null;
|
|
28449
|
+
const { siteId: _siteId, stage, ...params } = parsed.data.params;
|
|
28450
|
+
return {
|
|
28451
|
+
...params,
|
|
28452
|
+
stage: stage ?? "published"
|
|
28453
|
+
};
|
|
28454
|
+
}
|
|
28455
|
+
//#endregion
|
|
28244
28456
|
//#region ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
|
|
28245
28457
|
const EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS = [
|
|
28246
28458
|
"Date",
|
|
@@ -28258,8 +28470,6 @@ const eventRegistrationPublicEventSchema = z.preprocess(normalizeEventRegistrati
|
|
|
28258
28470
|
const eventRegistrationHydrationSchemaShape = {
|
|
28259
28471
|
occurrenceContext: occurrenceContextSchema.optional(),
|
|
28260
28472
|
subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
|
|
28261
|
-
events: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
|
|
28262
|
-
wholeSeriesRunEvents: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
|
|
28263
28473
|
maxTickets: z.string().optional(),
|
|
28264
28474
|
showVenue: z.boolean().optional(),
|
|
28265
28475
|
showCapacity: z.boolean().optional(),
|
|
@@ -28271,12 +28481,22 @@ const eventRegistrationHydrationSchemaShape = {
|
|
|
28271
28481
|
sitePasses: publicPassProductCollectionSchema.nullable().optional(),
|
|
28272
28482
|
siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
|
|
28273
28483
|
};
|
|
28484
|
+
const eventRegistrationEventSourceSchema = z.discriminatedUnion("kind", [z.object({
|
|
28485
|
+
kind: z.literal("loaded"),
|
|
28486
|
+
events: z.array(eventRegistrationPublicEventSchema)
|
|
28487
|
+
}), z.object({
|
|
28488
|
+
kind: z.literal("unresolved"),
|
|
28489
|
+
request: eventRecoveryRequestSchema.nullable()
|
|
28490
|
+
})]);
|
|
28274
28491
|
const eventRegistrationSourceSchema = z.object({
|
|
28275
28492
|
siteId: z.string().optional(),
|
|
28276
28493
|
apiBaseUrl: z.string().optional(),
|
|
28277
28494
|
portalToken: z.string().nullable().optional(),
|
|
28278
28495
|
previewToken: z.string().nullable().optional(),
|
|
28279
28496
|
...eventRegistrationHydrationSchemaShape,
|
|
28497
|
+
events: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
|
|
28498
|
+
wholeSeriesRunEvents: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
|
|
28499
|
+
eventLoaderFailures: z.record(z.string(), z.unknown()).nullable().optional(),
|
|
28280
28500
|
className: z.string().nullable().optional(),
|
|
28281
28501
|
buttonText: z.string().nullable().optional(),
|
|
28282
28502
|
maxTickets: z.string().nullable().optional(),
|
|
@@ -28297,7 +28517,10 @@ const eventRegistrationDisplaySchema = z.discriminatedUnion("state", [z.object({
|
|
|
28297
28517
|
titleText: z.string(),
|
|
28298
28518
|
bodyText: z.string()
|
|
28299
28519
|
})]);
|
|
28300
|
-
const eventRegistrationHydrationSchema = z.object(
|
|
28520
|
+
const eventRegistrationHydrationSchema = z.object({
|
|
28521
|
+
...eventRegistrationHydrationSchemaShape,
|
|
28522
|
+
eventSource: eventRegistrationEventSourceSchema
|
|
28523
|
+
});
|
|
28301
28524
|
const eventRegistrationRenderSchema = z.object({
|
|
28302
28525
|
display: eventRegistrationDisplaySchema,
|
|
28303
28526
|
hydration: eventRegistrationHydrationSchema
|
|
@@ -28356,16 +28579,12 @@ function buildEventRegistrationShellStepLabels(source, scopedSourceEvents) {
|
|
|
28356
28579
|
function toScopedEventRegistrationEvents(scopedSourceEvents) {
|
|
28357
28580
|
return [...toRegistrationEvents(scopedSourceEvents), ...toWholeSeriesRegistrationEvents(scopedSourceEvents)];
|
|
28358
28581
|
}
|
|
28359
|
-
function scopeEventRegistrationSourceEvents(source) {
|
|
28360
|
-
return resolveEventRegistrationScopedEvents(
|
|
28582
|
+
function scopeEventRegistrationSourceEvents(source, eventSource) {
|
|
28583
|
+
return resolveEventRegistrationScopedEvents(eventSource.kind === "loaded" ? eventSource.events : [], {
|
|
28361
28584
|
occurrenceContext: source.occurrenceContext,
|
|
28362
28585
|
subject: source.subject
|
|
28363
28586
|
});
|
|
28364
28587
|
}
|
|
28365
|
-
function resolveLoadedEventRegistrationSourceEvents(source, scopedSourceEvents) {
|
|
28366
|
-
if (source.events == null && source.wholeSeriesRunEvents == null) return null;
|
|
28367
|
-
return [...scopedSourceEvents];
|
|
28368
|
-
}
|
|
28369
28588
|
/**
|
|
28370
28589
|
* The one run this surface is registering for, when the scoped events describe
|
|
28371
28590
|
* exactly one. More than one run means the visitor still has to choose.
|
|
@@ -28405,14 +28624,21 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
|
|
|
28405
28624
|
render: createZodCodec(eventRegistrationRenderSchema)
|
|
28406
28625
|
},
|
|
28407
28626
|
buildRender: (source) => {
|
|
28408
|
-
const
|
|
28409
|
-
|
|
28627
|
+
const eventSource = resolveEventRegistrationEventSource({
|
|
28628
|
+
events: source.events,
|
|
28629
|
+
wholeSeriesRunEvents: source.wholeSeriesRunEvents,
|
|
28630
|
+
failures: source.eventLoaderFailures
|
|
28631
|
+
});
|
|
28632
|
+
const scopedSourceEvents = scopeEventRegistrationSourceEvents(source, eventSource);
|
|
28410
28633
|
return {
|
|
28411
28634
|
display: buildEventRegistrationDisplayFromScopedEvents(source, scopedSourceEvents),
|
|
28412
28635
|
hydration: {
|
|
28413
28636
|
occurrenceContext: source.occurrenceContext ?? null,
|
|
28414
28637
|
subject: source.subject ?? null,
|
|
28415
|
-
|
|
28638
|
+
eventSource: eventSource.kind === "loaded" ? {
|
|
28639
|
+
...eventSource,
|
|
28640
|
+
events: [...scopedSourceEvents]
|
|
28641
|
+
} : eventSource,
|
|
28416
28642
|
maxTickets: source.maxTickets ?? void 0,
|
|
28417
28643
|
showVenue: source.showVenue,
|
|
28418
28644
|
showCapacity: source.showCapacity,
|
|
@@ -28588,6 +28814,7 @@ const eventRegistrationBlockDefinition = {
|
|
|
28588
28814
|
} },
|
|
28589
28815
|
events: { $bind: { from: "data.events" } },
|
|
28590
28816
|
wholeSeriesRunEvents: { $bind: { from: "data.wholeSeriesRunEvents" } },
|
|
28817
|
+
loaderFailures: { $bind: { from: "$root.loaderFailures" } },
|
|
28591
28818
|
sitePasses: { $bind: { from: "data.sitePasses" } },
|
|
28592
28819
|
siteMemberships: { $bind: { from: "data.siteMemberships" } },
|
|
28593
28820
|
stage: { $bind: {
|
|
@@ -29073,6 +29300,35 @@ const eventSpotlightBlockDefinition = {
|
|
|
29073
29300
|
} }
|
|
29074
29301
|
};
|
|
29075
29302
|
//#endregion
|
|
29303
|
+
//#region ../blocks/src/system/blocks/events/shared/eventSelection.ts
|
|
29304
|
+
/** Invalid saved selections fail closed rather than widening discovery. */
|
|
29305
|
+
function resolveEventSelection(mode, value) {
|
|
29306
|
+
if (mode !== "selected") return { kind: "matching" };
|
|
29307
|
+
const candidates = Array.isArray(value) ? value : typeof value === "string" ? value.split(",").filter(Boolean) : [];
|
|
29308
|
+
const ids = [];
|
|
29309
|
+
for (const candidate of candidates) {
|
|
29310
|
+
if (typeof candidate !== "string") return {
|
|
29311
|
+
kind: "selected",
|
|
29312
|
+
seriesIds: []
|
|
29313
|
+
};
|
|
29314
|
+
const parsed = parseEventSeriesId(candidate.trim());
|
|
29315
|
+
if (!parsed.ok) return {
|
|
29316
|
+
kind: "selected",
|
|
29317
|
+
seriesIds: []
|
|
29318
|
+
};
|
|
29319
|
+
ids.push(parsed.value);
|
|
29320
|
+
}
|
|
29321
|
+
return {
|
|
29322
|
+
kind: "selected",
|
|
29323
|
+
seriesIds: [...new Set(ids)].sort()
|
|
29324
|
+
};
|
|
29325
|
+
}
|
|
29326
|
+
/** Undefined means discovery; an empty string is an explicitly empty selection. */
|
|
29327
|
+
function eventSeriesScopeCsv(value) {
|
|
29328
|
+
if (value == null) return void 0;
|
|
29329
|
+
return typeof value === "string" ? value : value.join(",");
|
|
29330
|
+
}
|
|
29331
|
+
//#endregion
|
|
29076
29332
|
//#region ../blocks/src/system/runtime/nodes/events/shared/listingLayout.ts
|
|
29077
29333
|
/**
|
|
29078
29334
|
* Layout classes for event listing containers and cards. Presentation
|
|
@@ -29201,6 +29457,7 @@ z.object({
|
|
|
29201
29457
|
eventSurface: z.enum(eventSurfaceScopeValues).optional(),
|
|
29202
29458
|
eventPresets: z.string().optional(),
|
|
29203
29459
|
scheduleScope: z.enum(eventScheduleScopeValues).optional(),
|
|
29460
|
+
seriesIds: z.string().optional(),
|
|
29204
29461
|
categoryIds: z.string().optional(),
|
|
29205
29462
|
venueId: z.string().transform(normalizeCalendarFilterId).optional(),
|
|
29206
29463
|
staffMemberId: z.string().transform(normalizeCalendarFilterId).optional()
|
|
@@ -29263,6 +29520,7 @@ const eventCollectionFilterSourceSchemaShape = {
|
|
|
29263
29520
|
eventSurface: eventSurfaceScopeSchema$1.nullable().optional(),
|
|
29264
29521
|
filterEventPresets: z.union([z.string(), z.array(z.string())]).nullable().optional(),
|
|
29265
29522
|
scheduleScope: eventScheduleScopeSchema$1.nullable().optional(),
|
|
29523
|
+
seriesIds: z.union([z.string(), z.array(z.string())]).nullable().optional(),
|
|
29266
29524
|
filterCategoryIds: z.union([z.string(), z.array(z.string())]).nullable().optional(),
|
|
29267
29525
|
filterStaffMemberId: z.string().nullable().optional(),
|
|
29268
29526
|
filterVenueId: z.string().nullable().optional()
|
|
@@ -29309,6 +29567,7 @@ const eventCollectionDisplaySchemaShape = {
|
|
|
29309
29567
|
eventSurface: eventSurfaceScopeSchema$1,
|
|
29310
29568
|
filterEventPresets: z.string().nullable(),
|
|
29311
29569
|
scheduleScope: eventScheduleScopeSchema$1,
|
|
29570
|
+
seriesIds: z.string().nullable().optional(),
|
|
29312
29571
|
filterCategoryIds: z.string().nullable(),
|
|
29313
29572
|
filterStaffMemberId: z.string().nullable(),
|
|
29314
29573
|
filterVenueId: z.string().nullable(),
|
|
@@ -29356,11 +29615,15 @@ function buildEventCollectionDisplay(source) {
|
|
|
29356
29615
|
};
|
|
29357
29616
|
}
|
|
29358
29617
|
function buildEventCollectionFilterDisplay(source) {
|
|
29359
|
-
|
|
29360
|
-
|
|
29361
|
-
|
|
29362
|
-
|
|
29363
|
-
|
|
29618
|
+
const selected = source.seriesIds != null;
|
|
29619
|
+
const matchingFilters = selected ? {
|
|
29620
|
+
eventSurface: "all",
|
|
29621
|
+
filterEventPresets: null,
|
|
29622
|
+
scheduleScope: "any",
|
|
29623
|
+
filterCategoryIds: null,
|
|
29624
|
+
filterStaffMemberId: null,
|
|
29625
|
+
filterVenueId: null
|
|
29626
|
+
} : {
|
|
29364
29627
|
eventSurface: normalizeEventSurfaceScope(source.eventSurface),
|
|
29365
29628
|
filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
29366
29629
|
scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
|
|
@@ -29368,6 +29631,14 @@ function buildEventCollectionFilterDisplay(source) {
|
|
|
29368
29631
|
filterStaffMemberId: normalizeEventStaffMemberId(source.filterStaffMemberId),
|
|
29369
29632
|
filterVenueId: normalizeEventVenueId(source.filterVenueId)
|
|
29370
29633
|
};
|
|
29634
|
+
return {
|
|
29635
|
+
seriesIds: eventSeriesScopeCsv(source.seriesIds),
|
|
29636
|
+
showFilters: selected ? false : source.showFilters ?? true,
|
|
29637
|
+
showCategoryFilter: source.showCategoryFilter ?? "auto",
|
|
29638
|
+
showVenueFilter: source.showVenueFilter ?? false,
|
|
29639
|
+
showStaffFilter: source.showStaffFilter ?? true,
|
|
29640
|
+
...matchingFilters
|
|
29641
|
+
};
|
|
29371
29642
|
}
|
|
29372
29643
|
function buildEventCollectionPresentationDisplay(source) {
|
|
29373
29644
|
return {
|
|
@@ -29382,14 +29653,15 @@ function buildEventCollectionPresentationDisplay(source) {
|
|
|
29382
29653
|
}
|
|
29383
29654
|
function buildEventCollectionHydration(source, now = /* @__PURE__ */ new Date()) {
|
|
29384
29655
|
const timeZone = source.calendarWindow?.scope.timeZone ?? toBookingTimeZone(source.bookingTimeZone);
|
|
29656
|
+
const selected = source.seriesIds != null;
|
|
29385
29657
|
return {
|
|
29386
29658
|
calendarWindow: source.calendarWindow ?? void 0,
|
|
29387
29659
|
siteId: source.siteId,
|
|
29388
29660
|
stage: source.stage,
|
|
29389
29661
|
prefetchedEvents: source.events != null,
|
|
29390
|
-
eventSurface: normalizeEventSurfaceScope(source.eventSurface),
|
|
29391
|
-
filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
29392
|
-
scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
|
|
29662
|
+
eventSurface: selected ? "all" : normalizeEventSurfaceScope(source.eventSurface),
|
|
29663
|
+
filterEventPresets: selected ? null : normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
29664
|
+
scheduleScope: selected ? "any" : normalizeEventScheduleScope(source.scheduleScope),
|
|
29393
29665
|
calendarContext: {
|
|
29394
29666
|
timeZone,
|
|
29395
29667
|
initialToday: source.calendarWindow?.initialToday ?? getLocalScheduleDate(now, timeZone)
|
|
@@ -29455,6 +29727,7 @@ const eventListingHydrationSchema = z.object({
|
|
|
29455
29727
|
eventSurface: eventSurfaceScopeSchema,
|
|
29456
29728
|
filterEventPresets: z.string().nullable(),
|
|
29457
29729
|
scheduleScope: eventScheduleScopeSchema,
|
|
29730
|
+
seriesIds: z.string().nullable().optional(),
|
|
29458
29731
|
filterCategoryIds: z.string().nullable().optional(),
|
|
29459
29732
|
filterStaffMemberId: z.string().nullable().optional(),
|
|
29460
29733
|
filterVenueId: z.string().nullable().optional(),
|
|
@@ -29515,6 +29788,7 @@ const eventListingBlockRuntime = defineProgressiveBlockRuntime({
|
|
|
29515
29788
|
eventSurface: normalizeEventSurfaceScope(source.eventSurface),
|
|
29516
29789
|
filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
29517
29790
|
scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
|
|
29791
|
+
seriesIds: eventSeriesScopeCsv(source.seriesIds),
|
|
29518
29792
|
filterCategoryIds: normalizeEventCategoryIdsCsv(source.filterCategoryIds),
|
|
29519
29793
|
filterStaffMemberId: normalizeEventStaffMemberId(source.filterStaffMemberId),
|
|
29520
29794
|
filterVenueId: normalizeEventVenueId(source.filterVenueId),
|
|
@@ -29888,6 +30162,65 @@ const eventListingBlockDefinition = {
|
|
|
29888
30162
|
} }
|
|
29889
30163
|
};
|
|
29890
30164
|
//#endregion
|
|
30165
|
+
//#region ../blocks/src/system/blocks/events/eventSelectionFields.ts
|
|
30166
|
+
const eventSelectionFields = [{
|
|
30167
|
+
id: "eventSelection",
|
|
30168
|
+
type: "select",
|
|
30169
|
+
label: "Events to show",
|
|
30170
|
+
required: false,
|
|
30171
|
+
multiple: false,
|
|
30172
|
+
defaultValue: "matching",
|
|
30173
|
+
options: [{
|
|
30174
|
+
value: "matching",
|
|
30175
|
+
label: "All matching events"
|
|
30176
|
+
}, {
|
|
30177
|
+
value: "selected",
|
|
30178
|
+
label: "Selected events"
|
|
30179
|
+
}],
|
|
30180
|
+
ui: { intent: "behavior" }
|
|
30181
|
+
}, createSiteOptionSelectField({
|
|
30182
|
+
id: "selectedEventSeriesIds",
|
|
30183
|
+
label: "Selected events",
|
|
30184
|
+
description: "Show upcoming dates for these events. Other event filters do not apply.",
|
|
30185
|
+
required: false,
|
|
30186
|
+
multiple: true,
|
|
30187
|
+
defaultValue: [],
|
|
30188
|
+
optionSource: "eventSeries",
|
|
30189
|
+
ui: {
|
|
30190
|
+
intent: "behavior",
|
|
30191
|
+
searchThreshold: 1,
|
|
30192
|
+
visibleWhen: {
|
|
30193
|
+
field: "eventSelection",
|
|
30194
|
+
equals: "selected"
|
|
30195
|
+
}
|
|
30196
|
+
}
|
|
30197
|
+
})];
|
|
30198
|
+
function withEventSelectionVisibility(field) {
|
|
30199
|
+
if (![
|
|
30200
|
+
"eventSurface",
|
|
30201
|
+
"filterEventPresets",
|
|
30202
|
+
"scheduleScope",
|
|
30203
|
+
"filterCategoryIds",
|
|
30204
|
+
"filterStaffMemberId",
|
|
30205
|
+
"filterVenueId",
|
|
30206
|
+
"showFilters",
|
|
30207
|
+
"showCategoryFilter",
|
|
30208
|
+
"showVenueFilter",
|
|
30209
|
+
"showStaffFilter"
|
|
30210
|
+
].includes(field.id)) return field;
|
|
30211
|
+
const visibleWhen = field.ui?.visibleWhen;
|
|
30212
|
+
return {
|
|
30213
|
+
...field,
|
|
30214
|
+
ui: {
|
|
30215
|
+
...field.ui,
|
|
30216
|
+
visibleWhen: { allOf: [{
|
|
30217
|
+
field: "eventSelection",
|
|
30218
|
+
notEquals: "selected"
|
|
30219
|
+
}, ...visibleWhen ? [visibleWhen] : []] }
|
|
30220
|
+
}
|
|
30221
|
+
};
|
|
30222
|
+
}
|
|
30223
|
+
//#endregion
|
|
29891
30224
|
//#region ../blocks/src/system/runtime/nodes/events/EventCalendar.interactive.ts
|
|
29892
30225
|
const eventCalendarSourceSchema = z.object({
|
|
29893
30226
|
...eventCollectionSourceSchemaShape,
|
|
@@ -29970,19 +30303,59 @@ const eventCalendarBlockRuntime = defineProgressiveBlockRuntime({
|
|
|
29970
30303
|
//#region ../blocks/src/system/blocks/events/eventCalendarDataLoaders.ts
|
|
29971
30304
|
const scopeParams = {
|
|
29972
30305
|
siteId: { $bind: { from: "$root.siteId" } },
|
|
30306
|
+
seriesIds: { $bind: {
|
|
30307
|
+
from: "content",
|
|
30308
|
+
transforms: [{
|
|
30309
|
+
id: "events.calendarSelectionParam",
|
|
30310
|
+
options: { key: "seriesIds" }
|
|
30311
|
+
}]
|
|
30312
|
+
} },
|
|
29973
30313
|
stage: { $bind: {
|
|
29974
30314
|
from: "$root.previewStage",
|
|
29975
30315
|
fallback: "published"
|
|
29976
30316
|
} },
|
|
29977
|
-
eventSurface: { $bind: {
|
|
30317
|
+
eventSurface: { $bind: {
|
|
30318
|
+
from: "content",
|
|
30319
|
+
transforms: [{
|
|
30320
|
+
id: "events.calendarSelectionParam",
|
|
30321
|
+
options: { key: "eventSurface" }
|
|
30322
|
+
}, { id: "value.csv" }]
|
|
30323
|
+
} },
|
|
29978
30324
|
eventPresets: { $bind: {
|
|
29979
|
-
from: "content
|
|
29980
|
-
transforms: [{
|
|
30325
|
+
from: "content",
|
|
30326
|
+
transforms: [{
|
|
30327
|
+
id: "events.calendarSelectionParam",
|
|
30328
|
+
options: { key: "filterEventPresets" }
|
|
30329
|
+
}, { id: "value.csv" }]
|
|
30330
|
+
} },
|
|
30331
|
+
scheduleScope: { $bind: {
|
|
30332
|
+
from: "content",
|
|
30333
|
+
transforms: [{
|
|
30334
|
+
id: "events.calendarSelectionParam",
|
|
30335
|
+
options: { key: "scheduleScope" }
|
|
30336
|
+
}, { id: "value.csv" }]
|
|
30337
|
+
} },
|
|
30338
|
+
categoryIds: { $bind: {
|
|
30339
|
+
from: "content",
|
|
30340
|
+
transforms: [{
|
|
30341
|
+
id: "events.calendarSelectionParam",
|
|
30342
|
+
options: { key: "filterCategoryIds" }
|
|
30343
|
+
}, { id: "value.csv" }]
|
|
29981
30344
|
} },
|
|
29982
|
-
|
|
29983
|
-
|
|
29984
|
-
|
|
29985
|
-
|
|
30345
|
+
staffMemberId: { $bind: {
|
|
30346
|
+
from: "content",
|
|
30347
|
+
transforms: [{
|
|
30348
|
+
id: "events.calendarSelectionParam",
|
|
30349
|
+
options: { key: "filterStaffMemberId" }
|
|
30350
|
+
}, { id: "value.csv" }]
|
|
30351
|
+
} },
|
|
30352
|
+
venueId: { $bind: {
|
|
30353
|
+
from: "content",
|
|
30354
|
+
transforms: [{
|
|
30355
|
+
id: "events.calendarSelectionParam",
|
|
30356
|
+
options: { key: "filterVenueId" }
|
|
30357
|
+
}, { id: "value.csv" }]
|
|
30358
|
+
} }
|
|
29986
30359
|
};
|
|
29987
30360
|
/** Combined renders two jobs; calendar-only variants never pay for the list seed. */
|
|
29988
30361
|
const eventCalendarDataLoaders = {
|
|
@@ -30112,6 +30485,13 @@ const eventCalendarLayout = [styledSection({
|
|
|
30112
30485
|
from: "content.defaultCalendarView",
|
|
30113
30486
|
fallback: "month"
|
|
30114
30487
|
} },
|
|
30488
|
+
seriesIds: { $bind: {
|
|
30489
|
+
from: "content",
|
|
30490
|
+
transforms: [{
|
|
30491
|
+
id: "events.calendarSelectionParam",
|
|
30492
|
+
options: { key: "seriesIds" }
|
|
30493
|
+
}]
|
|
30494
|
+
} },
|
|
30115
30495
|
showFilters: { $bind: {
|
|
30116
30496
|
from: "content.showFilters",
|
|
30117
30497
|
fallback: true
|
|
@@ -30133,17 +30513,47 @@ const eventCalendarLayout = [styledSection({
|
|
|
30133
30513
|
fallback: true
|
|
30134
30514
|
} },
|
|
30135
30515
|
eventSurface: { $bind: {
|
|
30136
|
-
from: "content
|
|
30137
|
-
|
|
30516
|
+
from: "content",
|
|
30517
|
+
transforms: [{
|
|
30518
|
+
id: "events.calendarSelectionParam",
|
|
30519
|
+
options: { key: "eventSurface" }
|
|
30520
|
+
}]
|
|
30521
|
+
} },
|
|
30522
|
+
filterEventPresets: { $bind: {
|
|
30523
|
+
from: "content",
|
|
30524
|
+
transforms: [{
|
|
30525
|
+
id: "events.calendarSelectionParam",
|
|
30526
|
+
options: { key: "filterEventPresets" }
|
|
30527
|
+
}]
|
|
30138
30528
|
} },
|
|
30139
|
-
filterEventPresets: { $bind: { from: "content.filterEventPresets" } },
|
|
30140
30529
|
scheduleScope: { $bind: {
|
|
30141
|
-
from: "content
|
|
30142
|
-
|
|
30530
|
+
from: "content",
|
|
30531
|
+
transforms: [{
|
|
30532
|
+
id: "events.calendarSelectionParam",
|
|
30533
|
+
options: { key: "scheduleScope" }
|
|
30534
|
+
}]
|
|
30535
|
+
} },
|
|
30536
|
+
filterCategoryIds: { $bind: {
|
|
30537
|
+
from: "content",
|
|
30538
|
+
transforms: [{
|
|
30539
|
+
id: "events.calendarSelectionParam",
|
|
30540
|
+
options: { key: "filterCategoryIds" }
|
|
30541
|
+
}]
|
|
30542
|
+
} },
|
|
30543
|
+
filterStaffMemberId: { $bind: {
|
|
30544
|
+
from: "content",
|
|
30545
|
+
transforms: [{
|
|
30546
|
+
id: "events.calendarSelectionParam",
|
|
30547
|
+
options: { key: "filterStaffMemberId" }
|
|
30548
|
+
}]
|
|
30549
|
+
} },
|
|
30550
|
+
filterVenueId: { $bind: {
|
|
30551
|
+
from: "content",
|
|
30552
|
+
transforms: [{
|
|
30553
|
+
id: "events.calendarSelectionParam",
|
|
30554
|
+
options: { key: "filterVenueId" }
|
|
30555
|
+
}]
|
|
30143
30556
|
} },
|
|
30144
|
-
filterCategoryIds: { $bind: { from: "content.filterCategoryIds" } },
|
|
30145
|
-
filterStaffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
|
|
30146
|
-
filterVenueId: { $bind: { from: "content.filterVenueId" } },
|
|
30147
30557
|
cardRole: { $bind: {
|
|
30148
30558
|
from: "content._cardStyles.role",
|
|
30149
30559
|
fallback: "default"
|
|
@@ -30647,6 +31057,7 @@ const eventCalendarAdditionalFields = [
|
|
|
30647
31057
|
}
|
|
30648
31058
|
}
|
|
30649
31059
|
},
|
|
31060
|
+
...eventSelectionFields,
|
|
30650
31061
|
{
|
|
30651
31062
|
id: "eventSurface",
|
|
30652
31063
|
type: "select",
|
|
@@ -30856,7 +31267,7 @@ const eventCalendarBlockDefinition = {
|
|
|
30856
31267
|
titleSource: "heading",
|
|
30857
31268
|
description: "Display events with calendar, list, or combined views with filtering",
|
|
30858
31269
|
skipSectionStyles: true,
|
|
30859
|
-
additionalFields: eventCalendarAdditionalFields,
|
|
31270
|
+
additionalFields: eventCalendarAdditionalFields.map(withEventSelectionVisibility),
|
|
30860
31271
|
styleTokens: {
|
|
30861
31272
|
background: "surface",
|
|
30862
31273
|
typography: "body",
|
|
@@ -35010,6 +35421,15 @@ const newsletterFieldSchema = z.object({
|
|
|
35010
35421
|
placeholder: z.string().optional()
|
|
35011
35422
|
});
|
|
35012
35423
|
const mailingListSignupBlockIdSchema = z.string().trim().min(1).transform(parseRequiredMailingListSignupBlockId);
|
|
35424
|
+
const mailingListContentVersionIdSchema = z.string().transform((value, ctx) => {
|
|
35425
|
+
const parsed = parseMailingListContentVersionId(value);
|
|
35426
|
+
if (parsed) return parsed;
|
|
35427
|
+
ctx.addIssue({
|
|
35428
|
+
code: z.ZodIssueCode.custom,
|
|
35429
|
+
message: "Invalid mailing-list content version ID"
|
|
35430
|
+
});
|
|
35431
|
+
return z.NEVER;
|
|
35432
|
+
});
|
|
35013
35433
|
const signedMailingListSourceTokenSchema = z.string().trim().min(1).transform(parseRequiredMailingListSignedSourceToken);
|
|
35014
35434
|
const newsletterSourceCommonSchema = z.object({
|
|
35015
35435
|
siteId: z.string().optional(),
|
|
@@ -35023,7 +35443,8 @@ const newsletterSourceCommonSchema = z.object({
|
|
|
35023
35443
|
const newsletterSourceSchema = z.discriminatedUnion("source", [
|
|
35024
35444
|
newsletterSourceCommonSchema.extend({
|
|
35025
35445
|
source: z.literal("block"),
|
|
35026
|
-
blockId: z.string().nullable().optional()
|
|
35446
|
+
blockId: z.string().nullable().optional(),
|
|
35447
|
+
contentVersionId: z.string().nullable().optional()
|
|
35027
35448
|
}),
|
|
35028
35449
|
newsletterSourceCommonSchema.extend({
|
|
35029
35450
|
source: z.literal("signed-footer"),
|
|
@@ -35039,6 +35460,7 @@ const newsletterDisplaySchema = z.object({
|
|
|
35039
35460
|
availability: z.enum(["ready", "unavailable"]),
|
|
35040
35461
|
className: z.string().nullable(),
|
|
35041
35462
|
buttonLabel: z.string(),
|
|
35463
|
+
successMessage: z.string(),
|
|
35042
35464
|
buttonVariant: newsletterButtonVariantSchema,
|
|
35043
35465
|
privacyNote: z.string().nullable(),
|
|
35044
35466
|
fields: z.array(newsletterFieldSchema),
|
|
@@ -35053,7 +35475,8 @@ const newsletterHydrationSchema = z.object({
|
|
|
35053
35475
|
tag: z.literal("block-source"),
|
|
35054
35476
|
sourceRef: z.object({
|
|
35055
35477
|
tag: z.literal("block_ref"),
|
|
35056
|
-
blockId: mailingListSignupBlockIdSchema
|
|
35478
|
+
blockId: mailingListSignupBlockIdSchema,
|
|
35479
|
+
contentVersionId: mailingListContentVersionIdSchema
|
|
35057
35480
|
}).nullable()
|
|
35058
35481
|
}),
|
|
35059
35482
|
z.object({
|
|
@@ -35092,6 +35515,7 @@ function buildNewsletterDisplay(source) {
|
|
|
35092
35515
|
fields: { preset: "emailOnly" },
|
|
35093
35516
|
includeOptionalPhone: false,
|
|
35094
35517
|
buttonLabel: "Subscribe",
|
|
35518
|
+
successMessage: DEFAULT_MAILING_LIST_SUCCESS_MESSAGE,
|
|
35095
35519
|
privacyNote: null
|
|
35096
35520
|
};
|
|
35097
35521
|
const targeting = source.targeting ?? { mode: "default" };
|
|
@@ -35101,6 +35525,7 @@ function buildNewsletterDisplay(source) {
|
|
|
35101
35525
|
availability: runtimeTargetingIsAvailable(context, targeting, choices) ? "ready" : "unavailable",
|
|
35102
35526
|
className: source.className ?? null,
|
|
35103
35527
|
buttonLabel: form.buttonLabel,
|
|
35528
|
+
successMessage: form.successMessage,
|
|
35104
35529
|
buttonVariant: source.buttonVariant ?? "primary",
|
|
35105
35530
|
privacyNote: form.privacyNote,
|
|
35106
35531
|
fields: getGlobalFormFields(form),
|
|
@@ -35131,7 +35556,7 @@ const newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
|
|
|
35131
35556
|
function projectNewsletterFormHydrationTarget(source) {
|
|
35132
35557
|
switch (source.source) {
|
|
35133
35558
|
case "block": {
|
|
35134
|
-
const sourceRef = buildMailingListSignupBlockSourceRef(source.blockId);
|
|
35559
|
+
const sourceRef = buildMailingListSignupBlockSourceRef(source.blockId, source.contentVersionId);
|
|
35135
35560
|
if (sourceRef?.tag === "block_ref") return {
|
|
35136
35561
|
tag: "block-source",
|
|
35137
35562
|
sourceRef
|
|
@@ -37265,6 +37690,26 @@ const linksTransforms = [{
|
|
|
37265
37690
|
//#endregion
|
|
37266
37691
|
//#region ../blocks/src/system/transforms/registry/index.ts
|
|
37267
37692
|
const builtinTransformDefinitions = [
|
|
37693
|
+
{
|
|
37694
|
+
id: "events.calendarSelectionParam",
|
|
37695
|
+
kind: "formatter",
|
|
37696
|
+
summary: "Resolve selected events instead of discovery filters",
|
|
37697
|
+
schema: z.object({ key: z.enum([
|
|
37698
|
+
"seriesIds",
|
|
37699
|
+
"eventSurface",
|
|
37700
|
+
"filterEventPresets",
|
|
37701
|
+
"scheduleScope",
|
|
37702
|
+
"filterCategoryIds",
|
|
37703
|
+
"filterStaffMemberId",
|
|
37704
|
+
"filterVenueId"
|
|
37705
|
+
]) }),
|
|
37706
|
+
run(value, { key }) {
|
|
37707
|
+
const content = asPartialObject(value) ?? {};
|
|
37708
|
+
const selection = resolveEventSelection(content.eventSelection, content.selectedEventSeriesIds);
|
|
37709
|
+
if (selection.kind === "selected") return key === "seriesIds" ? selection.seriesIds : void 0;
|
|
37710
|
+
return key === "seriesIds" ? void 0 : content[key];
|
|
37711
|
+
}
|
|
37712
|
+
},
|
|
37268
37713
|
{
|
|
37269
37714
|
id: "events.calendarReadEnabled",
|
|
37270
37715
|
kind: "formatter",
|
|
@@ -37622,7 +38067,17 @@ const riverbankSiteConfigInputSchema = z.object({
|
|
|
37622
38067
|
z.object({
|
|
37623
38068
|
config: riverbankSiteConfigInputSchema,
|
|
37624
38069
|
forceContentTypes: z.boolean().optional(),
|
|
37625
|
-
mode: z.enum(["apply", "preview"]).optional()
|
|
38070
|
+
mode: z.enum(["apply", "preview"]).optional(),
|
|
38071
|
+
expectedMailingListProviderScope: z.unknown().transform((value, ctx) => {
|
|
38072
|
+
if (value === void 0) return void 0;
|
|
38073
|
+
const parsed = parseMailingListProviderScope(value);
|
|
38074
|
+
if (parsed.ok) return parsed.value;
|
|
38075
|
+
ctx.addIssue({
|
|
38076
|
+
code: "custom",
|
|
38077
|
+
message: "Invalid mailing-list provider scope"
|
|
38078
|
+
});
|
|
38079
|
+
return z.NEVER;
|
|
38080
|
+
}).optional()
|
|
37626
38081
|
}).strict();
|
|
37627
38082
|
//#endregion
|
|
37628
38083
|
//#region ../api/src/sdkThemeWire.ts
|