@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
|
@@ -36,10 +36,12 @@ const unsafeAsStorageBucketName = (value) => value;
|
|
|
36
36
|
const unsafeAsStoragePath = (value) => value;
|
|
37
37
|
const unsafeAsPositiveByteCount = (value) => value;
|
|
38
38
|
const unsafeAsUserId = (id) => id;
|
|
39
|
+
const unsafeAsContentVersionId = (id) => id;
|
|
39
40
|
const parseSiteId = (value) => parseUuidBrand$1(value, unsafeAsSiteId);
|
|
40
41
|
const parseApiKeyId = (value) => parseUuidBrand$1(value, unsafeAsApiKeyId);
|
|
41
42
|
const parseEventOfferingId = (value) => parseUuidBrand$1(value, unsafeAsEventOfferingId);
|
|
42
43
|
const parseUserId = (value) => parseUuidBrand$1(value, unsafeAsUserId);
|
|
44
|
+
const parseContentVersionId = (value) => parseUuidBrand$1(value, unsafeAsContentVersionId);
|
|
43
45
|
const parseEventSeriesId = (value) => parseUuidBrand$1(value, unsafeAsEventSeriesId);
|
|
44
46
|
//#endregion
|
|
45
47
|
//#region ../core/src/assert-never.ts
|
|
@@ -312,7 +314,7 @@ function parseEventPageSurfaceDestinationMode(value) {
|
|
|
312
314
|
return value === "cms-managed" || value === "system-managed" ? value : void 0;
|
|
313
315
|
}
|
|
314
316
|
function parseEventPageSurfaceSubject(value) {
|
|
315
|
-
if (!isRecord$
|
|
317
|
+
if (!isRecord$40(value)) return err$3({ kind: "notObject" });
|
|
316
318
|
switch (value.kind) {
|
|
317
319
|
case "eventSeries": {
|
|
318
320
|
const eventSeriesId = parseEventSeriesId(value.eventSeriesId);
|
|
@@ -367,7 +369,7 @@ function parseEventSeriesIdList(values) {
|
|
|
367
369
|
}
|
|
368
370
|
return ok$3(parsed);
|
|
369
371
|
}
|
|
370
|
-
function isRecord$
|
|
372
|
+
function isRecord$40(value) {
|
|
371
373
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
372
374
|
}
|
|
373
375
|
//#endregion
|
|
@@ -611,7 +613,7 @@ function toLocationCoordinates(value) {
|
|
|
611
613
|
}
|
|
612
614
|
//#endregion
|
|
613
615
|
//#region ../core/src/rich-text.ts
|
|
614
|
-
function isRecord$
|
|
616
|
+
function isRecord$38(value) {
|
|
615
617
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
616
618
|
}
|
|
617
619
|
function hasOnlyKeys(value, allowed) {
|
|
@@ -630,10 +632,10 @@ function isDenseArrayOf(value, predicate) {
|
|
|
630
632
|
return true;
|
|
631
633
|
}
|
|
632
634
|
function isTipTapMark(value) {
|
|
633
|
-
return isRecord$
|
|
635
|
+
return isRecord$38(value) && hasOnlyKeys(value, markKeys) && typeof value.type === "string" && value.type.length > 0 && (value.attrs === void 0 || isRecord$38(value.attrs));
|
|
634
636
|
}
|
|
635
637
|
function isTipTapNode(value) {
|
|
636
|
-
if (!isRecord$
|
|
638
|
+
if (!isRecord$38(value) || !hasOnlyKeys(value, nodeKeys) || typeof value.type !== "string" || value.type.length === 0 || value.type === "doc" || value.attrs !== void 0 && !isRecord$38(value.attrs) || value.marks !== void 0 && (!Array.isArray(value.marks) || !isDenseArrayOf(value.marks, isTipTapMark)) || value.content !== void 0 && (!Array.isArray(value.content) || !isDenseArrayOf(value.content, isTipTapNode))) return false;
|
|
637
639
|
if (value.type === "text") return typeof value.text === "string" && value.text.length > 0 && value.content === void 0;
|
|
638
640
|
return value.text === void 0;
|
|
639
641
|
}
|
|
@@ -652,22 +654,28 @@ function parsePositiveInteger(value) {
|
|
|
652
654
|
function parseNewsletterListId(value) {
|
|
653
655
|
return parseTrimmedMatchingString(value, UUID_PATTERN$2);
|
|
654
656
|
}
|
|
657
|
+
function parseMailchimpAccountId(value) {
|
|
658
|
+
return parseTrimmedMatchingString(value, OPAQUE_ID_PATTERN);
|
|
659
|
+
}
|
|
655
660
|
function parseMailchimpAudienceId$1(value) {
|
|
656
661
|
return parseTrimmedMatchingString(value, OPAQUE_ID_PATTERN);
|
|
657
662
|
}
|
|
658
663
|
function parseMailchimpInterestId(value) {
|
|
659
664
|
return parseTrimmedMatchingString(value, OPAQUE_ID_PATTERN);
|
|
660
665
|
}
|
|
666
|
+
function parseBrevoAccountId(value) {
|
|
667
|
+
return parseTrimmedMatchingString(value, OPAQUE_ID_PATTERN);
|
|
668
|
+
}
|
|
661
669
|
function parseBrevoListId(value) {
|
|
662
670
|
return parsePositiveInteger(value);
|
|
663
671
|
}
|
|
664
672
|
//#endregion
|
|
665
673
|
//#region ../core/src/mailing-list-targeting-parser.ts
|
|
666
674
|
function parseMailingListPlacementTargeting(value) {
|
|
667
|
-
if (!isRecord$
|
|
675
|
+
if (!isRecord$37(value)) return targetingError("shape");
|
|
668
676
|
if (value.mode === "default") return ok$3({ mode: "default" });
|
|
669
677
|
if (value.mode !== "custom") return targetingError("mode");
|
|
670
|
-
if (!isRecord$
|
|
678
|
+
if (!isRecord$37(value.selection)) return targetingError("selection");
|
|
671
679
|
switch (value.provider) {
|
|
672
680
|
case "native": return parseNativeTargeting(value.selection);
|
|
673
681
|
case "brevo": return parseBrevoTargeting(value.selection);
|
|
@@ -771,7 +779,7 @@ function parseUniqueIds(value, parseId) {
|
|
|
771
779
|
}
|
|
772
780
|
return ok$3(parsed);
|
|
773
781
|
}
|
|
774
|
-
function isRecord$
|
|
782
|
+
function isRecord$37(value) {
|
|
775
783
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
776
784
|
}
|
|
777
785
|
function targetingError(field) {
|
|
@@ -793,6 +801,31 @@ new Map([
|
|
|
793
801
|
"legal"
|
|
794
802
|
].map((kind, index) => [kind, index]));
|
|
795
803
|
//#endregion
|
|
804
|
+
//#region ../core/src/mailing-list-setup.ts
|
|
805
|
+
function isRecord$34(value) {
|
|
806
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
807
|
+
}
|
|
808
|
+
const DEFAULT_MAILING_LIST_SUCCESS_MESSAGE = "Thanks — you're on the list.";
|
|
809
|
+
function parseMailingListProviderScope(value) {
|
|
810
|
+
if (!isRecord$34(value)) return err$3("invalid_mailing_list_provider_scope");
|
|
811
|
+
if (value.provider === "native") return ok$3({ provider: "native" });
|
|
812
|
+
if (value.provider === "brevo") {
|
|
813
|
+
const accountId = parseBrevoAccountId(value.accountId);
|
|
814
|
+
return accountId !== null ? ok$3({
|
|
815
|
+
provider: "brevo",
|
|
816
|
+
accountId
|
|
817
|
+
}) : err$3("invalid_mailing_list_provider_scope");
|
|
818
|
+
}
|
|
819
|
+
if (value.provider === "mailchimp") {
|
|
820
|
+
const accountId = parseMailchimpAccountId(value.accountId);
|
|
821
|
+
return accountId !== null ? ok$3({
|
|
822
|
+
provider: "mailchimp",
|
|
823
|
+
accountId
|
|
824
|
+
}) : err$3("invalid_mailing_list_provider_scope");
|
|
825
|
+
}
|
|
826
|
+
return err$3("invalid_mailing_list_provider_scope");
|
|
827
|
+
}
|
|
828
|
+
//#endregion
|
|
796
829
|
//#region ../core/src/mailing-list-setup-parser.ts
|
|
797
830
|
function parseMailingListGlobalForm(value) {
|
|
798
831
|
if (!isRecord$33(value)) return formError("shape");
|
|
@@ -801,12 +834,15 @@ function parseMailingListGlobalForm(value) {
|
|
|
801
834
|
if (typeof value.includeOptionalPhone !== "boolean") return formError("includeOptionalPhone");
|
|
802
835
|
const buttonLabel = parseRequiredString(value.buttonLabel);
|
|
803
836
|
if (buttonLabel === null) return formError("buttonLabel");
|
|
837
|
+
const successMessage = parseRequiredString(value.successMessage);
|
|
838
|
+
if (successMessage === null) return formError("successMessage");
|
|
804
839
|
const privacyNote = parseOptionalString(value.privacyNote);
|
|
805
840
|
if (privacyNote === void 0) return formError("privacyNote");
|
|
806
841
|
return ok$3({
|
|
807
842
|
fields,
|
|
808
843
|
includeOptionalPhone: value.includeOptionalPhone,
|
|
809
844
|
buttonLabel,
|
|
845
|
+
successMessage,
|
|
810
846
|
privacyNote
|
|
811
847
|
});
|
|
812
848
|
}
|
|
@@ -1013,11 +1049,17 @@ function parseMailingListSignedSourceToken(value) {
|
|
|
1013
1049
|
const parsed = typeof value === "string" ? value.trim() : "";
|
|
1014
1050
|
return /^[A-Za-z0-9._~-]{16,1000}$/u.test(parsed) ? parsed : null;
|
|
1015
1051
|
}
|
|
1016
|
-
function
|
|
1017
|
-
const parsed =
|
|
1018
|
-
return parsed
|
|
1052
|
+
function parseMailingListContentVersionId(value) {
|
|
1053
|
+
const parsed = parseContentVersionId(value);
|
|
1054
|
+
return parsed.ok ? parsed.value : null;
|
|
1055
|
+
}
|
|
1056
|
+
function buildMailingListSignupBlockSourceRef(blockId, contentVersionId) {
|
|
1057
|
+
const parsedBlockId = parseMailingListBlockId(blockId);
|
|
1058
|
+
const parsedContentVersionId = parseMailingListContentVersionId(contentVersionId);
|
|
1059
|
+
return parsedBlockId !== null && parsedContentVersionId !== null ? {
|
|
1019
1060
|
tag: "block_ref",
|
|
1020
|
-
blockId:
|
|
1061
|
+
blockId: parsedBlockId,
|
|
1062
|
+
contentVersionId: parsedContentVersionId
|
|
1021
1063
|
} : null;
|
|
1022
1064
|
}
|
|
1023
1065
|
function sortStableJsonValue(value) {
|
|
@@ -2419,6 +2461,7 @@ function isDisplayMediaKind$2(kind) {
|
|
|
2419
2461
|
}
|
|
2420
2462
|
const siteOptionSources = [
|
|
2421
2463
|
"eventCategories",
|
|
2464
|
+
"eventSeries",
|
|
2422
2465
|
"venues",
|
|
2423
2466
|
"staffMembers"
|
|
2424
2467
|
];
|
|
@@ -4309,29 +4352,6 @@ function contrastRatio(hex1, hex2) {
|
|
|
4309
4352
|
return (hi + .05) / (lo + .05);
|
|
4310
4353
|
}
|
|
4311
4354
|
//#endregion
|
|
4312
|
-
//#region ../theme-core/src/palette/utils/onColor.ts
|
|
4313
|
-
const BACKGROUND_ROLE_NAMES = /* @__PURE__ */ new Set([
|
|
4314
|
-
"primary",
|
|
4315
|
-
"secondary",
|
|
4316
|
-
"accent",
|
|
4317
|
-
"success",
|
|
4318
|
-
"warning",
|
|
4319
|
-
"destructive",
|
|
4320
|
-
"info",
|
|
4321
|
-
"background",
|
|
4322
|
-
"surface",
|
|
4323
|
-
"surfaceAlt",
|
|
4324
|
-
"muted",
|
|
4325
|
-
"neutral"
|
|
4326
|
-
]);
|
|
4327
|
-
function onColorTokenName(backgroundToken) {
|
|
4328
|
-
return `on${backgroundToken.split("-").filter((part) => part.length > 0).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join("")}`;
|
|
4329
|
-
}
|
|
4330
|
-
function isOnColorBackgroundCandidateToken(token) {
|
|
4331
|
-
const role = token.match(/^(.*?)(?:-\d{2,3})?$/)?.[1] ?? token;
|
|
4332
|
-
return BACKGROUND_ROLE_NAMES.has(role);
|
|
4333
|
-
}
|
|
4334
|
-
//#endregion
|
|
4335
4355
|
//#region ../theme-core/src/tokens/colorTokenParts.ts
|
|
4336
4356
|
function parseOpacityPercent(source) {
|
|
4337
4357
|
const trimmed = source.trim();
|
|
@@ -4369,6 +4389,141 @@ function parseColorTokenParts(source) {
|
|
|
4369
4389
|
opacityPercent
|
|
4370
4390
|
};
|
|
4371
4391
|
}
|
|
4392
|
+
const defaultThemeTokens = {
|
|
4393
|
+
color: {
|
|
4394
|
+
"background/base": "#ffffff",
|
|
4395
|
+
"background/elevated": "#f5f5f5",
|
|
4396
|
+
"surface/base": "#ffffff",
|
|
4397
|
+
"surface/subtle": "#f9f9fb",
|
|
4398
|
+
"surface/inverted": "#111111",
|
|
4399
|
+
"content/primary": "#111111",
|
|
4400
|
+
"content/secondary": "#3f3f46",
|
|
4401
|
+
"accent/primary": "#2563eb",
|
|
4402
|
+
"accent/secondary": "#1d4ed8",
|
|
4403
|
+
"border/base": "#e5e7eb"
|
|
4404
|
+
},
|
|
4405
|
+
typography: {
|
|
4406
|
+
"display/hero": {
|
|
4407
|
+
fontSize: "clamp(48px, 8vw, 96px)",
|
|
4408
|
+
lineHeight: "1.05",
|
|
4409
|
+
fontWeight: "700"
|
|
4410
|
+
},
|
|
4411
|
+
"display/section": {
|
|
4412
|
+
fontSize: "clamp(40px, 6vw, 72px)",
|
|
4413
|
+
lineHeight: "1.1",
|
|
4414
|
+
fontWeight: "700"
|
|
4415
|
+
},
|
|
4416
|
+
"heading/large": {
|
|
4417
|
+
fontSize: "clamp(32px, 4vw, 48px)",
|
|
4418
|
+
lineHeight: "1.2",
|
|
4419
|
+
fontWeight: "600"
|
|
4420
|
+
},
|
|
4421
|
+
"heading/medium": {
|
|
4422
|
+
fontSize: "clamp(24px, 3vw, 32px)",
|
|
4423
|
+
lineHeight: "1.25",
|
|
4424
|
+
fontWeight: "600"
|
|
4425
|
+
},
|
|
4426
|
+
"heading/small": {
|
|
4427
|
+
fontSize: "20px",
|
|
4428
|
+
lineHeight: "1.3",
|
|
4429
|
+
fontWeight: "600"
|
|
4430
|
+
},
|
|
4431
|
+
"body/normal": {
|
|
4432
|
+
fontSize: "16px",
|
|
4433
|
+
lineHeight: "1.6",
|
|
4434
|
+
fontWeight: "400"
|
|
4435
|
+
},
|
|
4436
|
+
"body/small": {
|
|
4437
|
+
fontSize: "14px",
|
|
4438
|
+
lineHeight: "1.5",
|
|
4439
|
+
fontWeight: "400"
|
|
4440
|
+
},
|
|
4441
|
+
caption: {
|
|
4442
|
+
fontSize: "12px",
|
|
4443
|
+
lineHeight: "1.4",
|
|
4444
|
+
fontWeight: "500"
|
|
4445
|
+
}
|
|
4446
|
+
},
|
|
4447
|
+
spacing: {
|
|
4448
|
+
none: "0px",
|
|
4449
|
+
"3xs": "4px",
|
|
4450
|
+
"2xs": "8px",
|
|
4451
|
+
xs: "12px",
|
|
4452
|
+
sm: "16px",
|
|
4453
|
+
md: "24px",
|
|
4454
|
+
lg: "32px",
|
|
4455
|
+
xl: "40px",
|
|
4456
|
+
"2xl": "56px",
|
|
4457
|
+
"3xl": "72px"
|
|
4458
|
+
},
|
|
4459
|
+
radius: {
|
|
4460
|
+
none: "0px",
|
|
4461
|
+
xs: "2px",
|
|
4462
|
+
sm: "4px",
|
|
4463
|
+
md: "8px",
|
|
4464
|
+
lg: "12px",
|
|
4465
|
+
pill: "999px",
|
|
4466
|
+
full: "9999px"
|
|
4467
|
+
},
|
|
4468
|
+
shadow: {
|
|
4469
|
+
none: "none",
|
|
4470
|
+
soft: "0px 2px 8px rgba(15, 23, 42, 0.08)",
|
|
4471
|
+
medium: "0px 6px 18px rgba(15, 23, 42, 0.12)",
|
|
4472
|
+
strong: "0px 12px 36px rgba(15, 23, 42, 0.16)"
|
|
4473
|
+
},
|
|
4474
|
+
palette: {
|
|
4475
|
+
surface: "#ffffff",
|
|
4476
|
+
"neutral-50": "#f9fafb",
|
|
4477
|
+
"neutral-900": "#111827",
|
|
4478
|
+
primary: "#2563eb",
|
|
4479
|
+
"primary-50": "#eff6ff",
|
|
4480
|
+
"primary-500": "#2563eb",
|
|
4481
|
+
"primary-900": "#1d4ed8",
|
|
4482
|
+
secondary: "#9333ea",
|
|
4483
|
+
"secondary-50": "#f3e8ff",
|
|
4484
|
+
"secondary-500": "#9333ea",
|
|
4485
|
+
"secondary-900": "#4c1d95",
|
|
4486
|
+
accent: "#f97316",
|
|
4487
|
+
"accent-50": "#fff7ed",
|
|
4488
|
+
"accent-500": "#f97316",
|
|
4489
|
+
"accent-900": "#7c2d12"
|
|
4490
|
+
}
|
|
4491
|
+
};
|
|
4492
|
+
/**
|
|
4493
|
+
* Project the expanded semantic palette into the token buckets consumed by
|
|
4494
|
+
* runtime transforms. Keep this mapping shared by full themes and the
|
|
4495
|
+
* tokens-only hosted-booking runtime so the two paths cannot drift.
|
|
4496
|
+
*/
|
|
4497
|
+
function buildThemeTokens(palette) {
|
|
4498
|
+
const tokens = cloneThemeTokens(defaultThemeTokens);
|
|
4499
|
+
const paletteStrings = {};
|
|
4500
|
+
for (const [key, value] of Object.entries(palette)) if (typeof value === "string" && value.trim().length > 0) paletteStrings[key] = value;
|
|
4501
|
+
tokens.palette = paletteStrings;
|
|
4502
|
+
const resolveColor = (...keys) => {
|
|
4503
|
+
for (const key of keys) {
|
|
4504
|
+
const value = paletteStrings[key];
|
|
4505
|
+
if (value) return value;
|
|
4506
|
+
}
|
|
4507
|
+
};
|
|
4508
|
+
const assignColor = (token, ...keys) => {
|
|
4509
|
+
const value = resolveColor(...keys);
|
|
4510
|
+
if (value) tokens.color[token] = value;
|
|
4511
|
+
};
|
|
4512
|
+
assignColor("background/base", "background", "surface", "primary-50");
|
|
4513
|
+
assignColor("background/elevated", "surface", "background");
|
|
4514
|
+
assignColor("surface/base", "surface", "background");
|
|
4515
|
+
assignColor("surface/subtle", "neutral-100", "surface", "background");
|
|
4516
|
+
assignColor("surface/inverted", "neutral-900", "text", "primary-900");
|
|
4517
|
+
assignColor("content/primary", "text", "body", "neutral-900");
|
|
4518
|
+
assignColor("content/secondary", "mutedText", "secondary", "neutral-600");
|
|
4519
|
+
assignColor("accent/primary", "primary", "accent");
|
|
4520
|
+
assignColor("accent/secondary", "accent", "secondary", "primary-400");
|
|
4521
|
+
assignColor("border/base", "border", "neutral-300");
|
|
4522
|
+
return tokens;
|
|
4523
|
+
}
|
|
4524
|
+
function cloneThemeTokens(source) {
|
|
4525
|
+
return JSON.parse(JSON.stringify(source));
|
|
4526
|
+
}
|
|
4372
4527
|
//#endregion
|
|
4373
4528
|
//#region ../theme-core/src/tokens/blockColorTokens.ts
|
|
4374
4529
|
const blockColorTokenNames = [
|
|
@@ -4479,6 +4634,101 @@ function parseThemeColorToken(value) {
|
|
|
4479
4634
|
}
|
|
4480
4635
|
const themeColorTokenSchema = z$1.string().min(1).refine((value) => Boolean(isThemeColorToken(value)), "Expected a known Theme V2 color token");
|
|
4481
4636
|
//#endregion
|
|
4637
|
+
//#region ../theme-core/src/tokens/resolver.ts
|
|
4638
|
+
/**
|
|
4639
|
+
* Resolves theme tokens to CSS variables
|
|
4640
|
+
*
|
|
4641
|
+
* This resolver ensures all button styles use theme tokens (not hardcoded colors)
|
|
4642
|
+
* so that changing the palette automatically updates all buttons.
|
|
4643
|
+
*/
|
|
4644
|
+
var TokenResolver = class {
|
|
4645
|
+
constructor(theme) {
|
|
4646
|
+
this.theme = theme;
|
|
4647
|
+
}
|
|
4648
|
+
/**
|
|
4649
|
+
* Resolve a color token to a CSS variable reference wrapped in rgb()
|
|
4650
|
+
*
|
|
4651
|
+
* @param token - Token name (e.g., 'primary-500', 'white', 'text-900')
|
|
4652
|
+
* @returns CSS rgb() function with var reference (e.g., 'rgb(var(--tb-primary-500))')
|
|
4653
|
+
*
|
|
4654
|
+
* Note: CSS variables are stored as RGB channels (e.g., "37 99 235") following Tailwind convention,
|
|
4655
|
+
* so we must wrap them with rgb() to create a valid color value.
|
|
4656
|
+
*
|
|
4657
|
+
* @example
|
|
4658
|
+
* resolver.getColor('primary-500') // => 'rgb(var(--tb-primary-500))'
|
|
4659
|
+
* resolver.getColor('white') // => 'rgb(var(--tb-white))'
|
|
4660
|
+
*/
|
|
4661
|
+
getColor(token) {
|
|
4662
|
+
if (!this.tokenExists(token)) console.warn(`[TokenResolver] Color token "${token}" not found in theme palette. Button may render incorrectly.`);
|
|
4663
|
+
return rgbColorValue(token);
|
|
4664
|
+
}
|
|
4665
|
+
/**
|
|
4666
|
+
* Adjust a color token's shade by a given amount
|
|
4667
|
+
*
|
|
4668
|
+
* @param token - Base token (e.g., 'primary-500')
|
|
4669
|
+
* @param amount - Shade adjustment (+100 = darker, -100 = lighter)
|
|
4670
|
+
* @returns Adjusted token name (e.g., 'primary-600')
|
|
4671
|
+
*
|
|
4672
|
+
* @example
|
|
4673
|
+
* resolver.adjustShade('primary-500', 100) // => 'primary-600' (darker)
|
|
4674
|
+
* resolver.adjustShade('primary-500', -100) // => 'primary-400' (lighter)
|
|
4675
|
+
*/
|
|
4676
|
+
adjustShade(token, amount) {
|
|
4677
|
+
const parts = token.split("-");
|
|
4678
|
+
if (parts.length < 2) return `${token}-${Math.max(100, Math.min(900, 500 + amount))}`;
|
|
4679
|
+
const base = parts.slice(0, -1).join("-");
|
|
4680
|
+
const shade = parseInt(parts[parts.length - 1] ?? "", 10);
|
|
4681
|
+
if (isNaN(shade)) {
|
|
4682
|
+
console.warn(`[TokenResolver] Cannot adjust shade for non-shade token "${token}". Returning original token.`);
|
|
4683
|
+
return token;
|
|
4684
|
+
}
|
|
4685
|
+
return `${base}-${Math.max(100, Math.min(900, shade + amount))}`;
|
|
4686
|
+
}
|
|
4687
|
+
/**
|
|
4688
|
+
* Check if a token exists in the theme palette
|
|
4689
|
+
*
|
|
4690
|
+
* @param token - Token name to check
|
|
4691
|
+
* @returns True if token exists in theme
|
|
4692
|
+
*/
|
|
4693
|
+
tokenExists(token) {
|
|
4694
|
+
if ([
|
|
4695
|
+
"white",
|
|
4696
|
+
"black",
|
|
4697
|
+
"transparent"
|
|
4698
|
+
].includes(token)) return true;
|
|
4699
|
+
const parts = token.split("-");
|
|
4700
|
+
if (parts.length >= 2) {
|
|
4701
|
+
const lastPart = parts[parts.length - 1] ?? "";
|
|
4702
|
+
const shade = parseInt(lastPart, 10);
|
|
4703
|
+
if (!isNaN(shade) && shade >= 100 && shade <= 900 && shade % 100 === 0) return true;
|
|
4704
|
+
}
|
|
4705
|
+
return true;
|
|
4706
|
+
}
|
|
4707
|
+
};
|
|
4708
|
+
//#endregion
|
|
4709
|
+
//#region ../theme-core/src/palette/utils/onColor.ts
|
|
4710
|
+
const BACKGROUND_ROLE_NAMES = /* @__PURE__ */ new Set([
|
|
4711
|
+
"primary",
|
|
4712
|
+
"secondary",
|
|
4713
|
+
"accent",
|
|
4714
|
+
"success",
|
|
4715
|
+
"warning",
|
|
4716
|
+
"destructive",
|
|
4717
|
+
"info",
|
|
4718
|
+
"background",
|
|
4719
|
+
"surface",
|
|
4720
|
+
"surfaceAlt",
|
|
4721
|
+
"muted",
|
|
4722
|
+
"neutral"
|
|
4723
|
+
]);
|
|
4724
|
+
function onColorTokenName(backgroundToken) {
|
|
4725
|
+
return `on${backgroundToken.split("-").filter((part) => part.length > 0).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join("")}`;
|
|
4726
|
+
}
|
|
4727
|
+
function isOnColorBackgroundCandidateToken(token) {
|
|
4728
|
+
const role = token.match(/^(.*?)(?:-\d{2,3})?$/)?.[1] ?? token;
|
|
4729
|
+
return BACKGROUND_ROLE_NAMES.has(role);
|
|
4730
|
+
}
|
|
4731
|
+
//#endregion
|
|
4482
4732
|
//#region ../theme-core/src/palette/colors.ts
|
|
4483
4733
|
const HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
|
|
4484
4734
|
const NORMALIZABLE_HEX_REGEX = /^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i;
|
|
@@ -6152,213 +6402,6 @@ function assertUniqueLayoutProfileKeys(profiles) {
|
|
|
6152
6402
|
});
|
|
6153
6403
|
if (duplicates.length > 0) throw new Error(`Duplicate block layout design profiles: ${duplicates.join(", ")}`);
|
|
6154
6404
|
}
|
|
6155
|
-
const defaultThemeTokens = {
|
|
6156
|
-
color: {
|
|
6157
|
-
"background/base": "#ffffff",
|
|
6158
|
-
"background/elevated": "#f5f5f5",
|
|
6159
|
-
"surface/base": "#ffffff",
|
|
6160
|
-
"surface/subtle": "#f9f9fb",
|
|
6161
|
-
"surface/inverted": "#111111",
|
|
6162
|
-
"content/primary": "#111111",
|
|
6163
|
-
"content/secondary": "#3f3f46",
|
|
6164
|
-
"accent/primary": "#2563eb",
|
|
6165
|
-
"accent/secondary": "#1d4ed8",
|
|
6166
|
-
"border/base": "#e5e7eb"
|
|
6167
|
-
},
|
|
6168
|
-
typography: {
|
|
6169
|
-
"display/hero": {
|
|
6170
|
-
fontSize: "clamp(48px, 8vw, 96px)",
|
|
6171
|
-
lineHeight: "1.05",
|
|
6172
|
-
fontWeight: "700"
|
|
6173
|
-
},
|
|
6174
|
-
"display/section": {
|
|
6175
|
-
fontSize: "clamp(40px, 6vw, 72px)",
|
|
6176
|
-
lineHeight: "1.1",
|
|
6177
|
-
fontWeight: "700"
|
|
6178
|
-
},
|
|
6179
|
-
"heading/large": {
|
|
6180
|
-
fontSize: "clamp(32px, 4vw, 48px)",
|
|
6181
|
-
lineHeight: "1.2",
|
|
6182
|
-
fontWeight: "600"
|
|
6183
|
-
},
|
|
6184
|
-
"heading/medium": {
|
|
6185
|
-
fontSize: "clamp(24px, 3vw, 32px)",
|
|
6186
|
-
lineHeight: "1.25",
|
|
6187
|
-
fontWeight: "600"
|
|
6188
|
-
},
|
|
6189
|
-
"heading/small": {
|
|
6190
|
-
fontSize: "20px",
|
|
6191
|
-
lineHeight: "1.3",
|
|
6192
|
-
fontWeight: "600"
|
|
6193
|
-
},
|
|
6194
|
-
"body/normal": {
|
|
6195
|
-
fontSize: "16px",
|
|
6196
|
-
lineHeight: "1.6",
|
|
6197
|
-
fontWeight: "400"
|
|
6198
|
-
},
|
|
6199
|
-
"body/small": {
|
|
6200
|
-
fontSize: "14px",
|
|
6201
|
-
lineHeight: "1.5",
|
|
6202
|
-
fontWeight: "400"
|
|
6203
|
-
},
|
|
6204
|
-
caption: {
|
|
6205
|
-
fontSize: "12px",
|
|
6206
|
-
lineHeight: "1.4",
|
|
6207
|
-
fontWeight: "500"
|
|
6208
|
-
}
|
|
6209
|
-
},
|
|
6210
|
-
spacing: {
|
|
6211
|
-
none: "0px",
|
|
6212
|
-
"3xs": "4px",
|
|
6213
|
-
"2xs": "8px",
|
|
6214
|
-
xs: "12px",
|
|
6215
|
-
sm: "16px",
|
|
6216
|
-
md: "24px",
|
|
6217
|
-
lg: "32px",
|
|
6218
|
-
xl: "40px",
|
|
6219
|
-
"2xl": "56px",
|
|
6220
|
-
"3xl": "72px"
|
|
6221
|
-
},
|
|
6222
|
-
radius: {
|
|
6223
|
-
none: "0px",
|
|
6224
|
-
xs: "2px",
|
|
6225
|
-
sm: "4px",
|
|
6226
|
-
md: "8px",
|
|
6227
|
-
lg: "12px",
|
|
6228
|
-
pill: "999px",
|
|
6229
|
-
full: "9999px"
|
|
6230
|
-
},
|
|
6231
|
-
shadow: {
|
|
6232
|
-
none: "none",
|
|
6233
|
-
soft: "0px 2px 8px rgba(15, 23, 42, 0.08)",
|
|
6234
|
-
medium: "0px 6px 18px rgba(15, 23, 42, 0.12)",
|
|
6235
|
-
strong: "0px 12px 36px rgba(15, 23, 42, 0.16)"
|
|
6236
|
-
},
|
|
6237
|
-
palette: {
|
|
6238
|
-
surface: "#ffffff",
|
|
6239
|
-
"neutral-50": "#f9fafb",
|
|
6240
|
-
"neutral-900": "#111827",
|
|
6241
|
-
primary: "#2563eb",
|
|
6242
|
-
"primary-50": "#eff6ff",
|
|
6243
|
-
"primary-500": "#2563eb",
|
|
6244
|
-
"primary-900": "#1d4ed8",
|
|
6245
|
-
secondary: "#9333ea",
|
|
6246
|
-
"secondary-50": "#f3e8ff",
|
|
6247
|
-
"secondary-500": "#9333ea",
|
|
6248
|
-
"secondary-900": "#4c1d95",
|
|
6249
|
-
accent: "#f97316",
|
|
6250
|
-
"accent-50": "#fff7ed",
|
|
6251
|
-
"accent-500": "#f97316",
|
|
6252
|
-
"accent-900": "#7c2d12"
|
|
6253
|
-
}
|
|
6254
|
-
};
|
|
6255
|
-
/**
|
|
6256
|
-
* Project the expanded semantic palette into the token buckets consumed by
|
|
6257
|
-
* runtime transforms. Keep this mapping shared by full themes and the
|
|
6258
|
-
* tokens-only hosted-booking runtime so the two paths cannot drift.
|
|
6259
|
-
*/
|
|
6260
|
-
function buildThemeTokens(palette) {
|
|
6261
|
-
const tokens = cloneThemeTokens(defaultThemeTokens);
|
|
6262
|
-
const paletteStrings = {};
|
|
6263
|
-
for (const [key, value] of Object.entries(palette)) if (typeof value === "string" && value.trim().length > 0) paletteStrings[key] = value;
|
|
6264
|
-
tokens.palette = paletteStrings;
|
|
6265
|
-
const resolveColor = (...keys) => {
|
|
6266
|
-
for (const key of keys) {
|
|
6267
|
-
const value = paletteStrings[key];
|
|
6268
|
-
if (value) return value;
|
|
6269
|
-
}
|
|
6270
|
-
};
|
|
6271
|
-
const assignColor = (token, ...keys) => {
|
|
6272
|
-
const value = resolveColor(...keys);
|
|
6273
|
-
if (value) tokens.color[token] = value;
|
|
6274
|
-
};
|
|
6275
|
-
assignColor("background/base", "background", "surface", "primary-50");
|
|
6276
|
-
assignColor("background/elevated", "surface", "background");
|
|
6277
|
-
assignColor("surface/base", "surface", "background");
|
|
6278
|
-
assignColor("surface/subtle", "neutral-100", "surface", "background");
|
|
6279
|
-
assignColor("surface/inverted", "neutral-900", "text", "primary-900");
|
|
6280
|
-
assignColor("content/primary", "text", "body", "neutral-900");
|
|
6281
|
-
assignColor("content/secondary", "mutedText", "secondary", "neutral-600");
|
|
6282
|
-
assignColor("accent/primary", "primary", "accent");
|
|
6283
|
-
assignColor("accent/secondary", "accent", "secondary", "primary-400");
|
|
6284
|
-
assignColor("border/base", "border", "neutral-300");
|
|
6285
|
-
return tokens;
|
|
6286
|
-
}
|
|
6287
|
-
function cloneThemeTokens(source) {
|
|
6288
|
-
return JSON.parse(JSON.stringify(source));
|
|
6289
|
-
}
|
|
6290
|
-
//#endregion
|
|
6291
|
-
//#region ../theme-core/src/tokens/resolver.ts
|
|
6292
|
-
/**
|
|
6293
|
-
* Resolves theme tokens to CSS variables
|
|
6294
|
-
*
|
|
6295
|
-
* This resolver ensures all button styles use theme tokens (not hardcoded colors)
|
|
6296
|
-
* so that changing the palette automatically updates all buttons.
|
|
6297
|
-
*/
|
|
6298
|
-
var TokenResolver = class {
|
|
6299
|
-
constructor(theme) {
|
|
6300
|
-
this.theme = theme;
|
|
6301
|
-
}
|
|
6302
|
-
/**
|
|
6303
|
-
* Resolve a color token to a CSS variable reference wrapped in rgb()
|
|
6304
|
-
*
|
|
6305
|
-
* @param token - Token name (e.g., 'primary-500', 'white', 'text-900')
|
|
6306
|
-
* @returns CSS rgb() function with var reference (e.g., 'rgb(var(--tb-primary-500))')
|
|
6307
|
-
*
|
|
6308
|
-
* Note: CSS variables are stored as RGB channels (e.g., "37 99 235") following Tailwind convention,
|
|
6309
|
-
* so we must wrap them with rgb() to create a valid color value.
|
|
6310
|
-
*
|
|
6311
|
-
* @example
|
|
6312
|
-
* resolver.getColor('primary-500') // => 'rgb(var(--tb-primary-500))'
|
|
6313
|
-
* resolver.getColor('white') // => 'rgb(var(--tb-white))'
|
|
6314
|
-
*/
|
|
6315
|
-
getColor(token) {
|
|
6316
|
-
if (!this.tokenExists(token)) console.warn(`[TokenResolver] Color token "${token}" not found in theme palette. Button may render incorrectly.`);
|
|
6317
|
-
return `rgb(var(--tb-${token}))`;
|
|
6318
|
-
}
|
|
6319
|
-
/**
|
|
6320
|
-
* Adjust a color token's shade by a given amount
|
|
6321
|
-
*
|
|
6322
|
-
* @param token - Base token (e.g., 'primary-500')
|
|
6323
|
-
* @param amount - Shade adjustment (+100 = darker, -100 = lighter)
|
|
6324
|
-
* @returns Adjusted token name (e.g., 'primary-600')
|
|
6325
|
-
*
|
|
6326
|
-
* @example
|
|
6327
|
-
* resolver.adjustShade('primary-500', 100) // => 'primary-600' (darker)
|
|
6328
|
-
* resolver.adjustShade('primary-500', -100) // => 'primary-400' (lighter)
|
|
6329
|
-
*/
|
|
6330
|
-
adjustShade(token, amount) {
|
|
6331
|
-
const parts = token.split("-");
|
|
6332
|
-
if (parts.length < 2) return `${token}-${Math.max(100, Math.min(900, 500 + amount))}`;
|
|
6333
|
-
const base = parts.slice(0, -1).join("-");
|
|
6334
|
-
const shade = parseInt(parts[parts.length - 1] ?? "", 10);
|
|
6335
|
-
if (isNaN(shade)) {
|
|
6336
|
-
console.warn(`[TokenResolver] Cannot adjust shade for non-shade token "${token}". Returning original token.`);
|
|
6337
|
-
return token;
|
|
6338
|
-
}
|
|
6339
|
-
return `${base}-${Math.max(100, Math.min(900, shade + amount))}`;
|
|
6340
|
-
}
|
|
6341
|
-
/**
|
|
6342
|
-
* Check if a token exists in the theme palette
|
|
6343
|
-
*
|
|
6344
|
-
* @param token - Token name to check
|
|
6345
|
-
* @returns True if token exists in theme
|
|
6346
|
-
*/
|
|
6347
|
-
tokenExists(token) {
|
|
6348
|
-
if ([
|
|
6349
|
-
"white",
|
|
6350
|
-
"black",
|
|
6351
|
-
"transparent"
|
|
6352
|
-
].includes(token)) return true;
|
|
6353
|
-
const parts = token.split("-");
|
|
6354
|
-
if (parts.length >= 2) {
|
|
6355
|
-
const lastPart = parts[parts.length - 1] ?? "";
|
|
6356
|
-
const shade = parseInt(lastPart, 10);
|
|
6357
|
-
if (!isNaN(shade) && shade >= 100 && shade <= 900 && shade % 100 === 0) return true;
|
|
6358
|
-
}
|
|
6359
|
-
return true;
|
|
6360
|
-
}
|
|
6361
|
-
};
|
|
6362
6405
|
//#endregion
|
|
6363
6406
|
//#region ../theme-core/src/site-styles/backgroundAppearance.ts
|
|
6364
6407
|
const backgroundAppearanceQuickColorTokenNames = [
|
|
@@ -7144,14 +7187,12 @@ function generateVariantCSS(variant, themeId, cardClasses, tokens, theme) {
|
|
|
7144
7187
|
const shadowValue = generateShadowValue$1(shadow);
|
|
7145
7188
|
rules.push(`box-shadow: ${shadowValue}`);
|
|
7146
7189
|
}
|
|
7147
|
-
|
|
7148
|
-
rules.push(`flex-direction: column`);
|
|
7149
|
-
rules.push(`position: relative`);
|
|
7150
|
-
rules.push(`overflow: visible`);
|
|
7190
|
+
const structureSelector = cardClasses.map((cardClass) => `:where([data-theme-scope="${themeId}"]) :where(.${cardClass})`).join(",\n");
|
|
7151
7191
|
const mediaRadius = MEDIA_CORNER_MAP[corners];
|
|
7152
7192
|
const mediaRules = [`border-top-left-radius: ${mediaRadius}`, `border-top-right-radius: ${mediaRadius}`];
|
|
7153
7193
|
const contentRules = [`padding: ${resolveContentPadding(variant)}`];
|
|
7154
7194
|
return [
|
|
7195
|
+
`${structureSelector} {\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: visible;\n}`,
|
|
7155
7196
|
`${containerSelector} {\n ${rules.join(";\n ")};\n}`,
|
|
7156
7197
|
...cardDecorationPseudoRules(containerSelectors, variant.decorations, resolveColor),
|
|
7157
7198
|
`${fallbackBackgroundSelector} {\n background: transparent;\n}`,
|
|
@@ -11980,8 +12021,14 @@ const headerInteractionPillPaletteValues = [
|
|
|
11980
12021
|
"accent"
|
|
11981
12022
|
];
|
|
11982
12023
|
/**
|
|
11983
|
-
* "No pill":
|
|
11984
|
-
*
|
|
12024
|
+
* "No pill": a colour change on hover rather than a filled background.
|
|
12025
|
+
*
|
|
12026
|
+
* The palette step writes nothing (#1318 Phase 4c decision 2), but on a
|
|
12027
|
+
* foreground-adaptive style that is not the end of the story: the hover colour
|
|
12028
|
+
* is derived from the resolved opening foreground at render time, paired with
|
|
12029
|
+
* the resting colour, so `quiet` resolves to a definite colour rather than to
|
|
12030
|
+
* whatever brand token the recipe happened to name. See
|
|
12031
|
+
* `applyOpeningForeground`.
|
|
11985
12032
|
*
|
|
11986
12033
|
* It exists because "a colour change on hover, no filled background" was not
|
|
11987
12034
|
* expressible in the vocabulary, and it is what
|
|
@@ -13176,7 +13223,7 @@ const BUTTON_CONTRAST_POLICY = {
|
|
|
13176
13223
|
nonTextMinimumRatio: 3,
|
|
13177
13224
|
gradientSamplesPerSegment: 20,
|
|
13178
13225
|
alphaBackgrounds: "reject-without-known-surface",
|
|
13179
|
-
disabled: "
|
|
13226
|
+
disabled: "validated-colour-pair-with-muted-control-opacity"
|
|
13180
13227
|
};
|
|
13181
13228
|
function formatButtonColourContractError(error) {
|
|
13182
13229
|
switch (error.tag) {
|
|
@@ -13764,6 +13811,25 @@ function parseThemeForPersistence(value) {
|
|
|
13764
13811
|
};
|
|
13765
13812
|
}
|
|
13766
13813
|
//#endregion
|
|
13814
|
+
//#region ../theme-core/src/buttons/affordanceSuppression.ts
|
|
13815
|
+
/**
|
|
13816
|
+
* Internal: the opt-out the generated affordance rule is written against.
|
|
13817
|
+
*
|
|
13818
|
+
* A button style may declare a trailing `affordance`, which the theme renders as
|
|
13819
|
+
* a CSS `::after` on every button of that variant. An authored button that
|
|
13820
|
+
* renders its own trailing icon must not also receive the theme's, or it shows
|
|
13821
|
+
* two.
|
|
13822
|
+
*
|
|
13823
|
+
* Deliberately not exported from `./index`. This used to be public, and two
|
|
13824
|
+
* block components reached past the theme to draw arrows of their own — one of
|
|
13825
|
+
* them doubling up on the styles that declare an affordance, both of them
|
|
13826
|
+
* overriding the twelve styles that deliberately declare none. Whether a button
|
|
13827
|
+
* carries a trailing affordance is the style's decision; the only caller that
|
|
13828
|
+
* legitimately opts out is the authored-button renderer, which reaches it
|
|
13829
|
+
* through `themeButtonClassNameWithTrailingIcon`.
|
|
13830
|
+
*/
|
|
13831
|
+
const AFFORDANCE_SUPPRESS_CLASS = "rb-affordance-off";
|
|
13832
|
+
//#endregion
|
|
13767
13833
|
//#region ../theme-core/src/buttons/classNames.ts
|
|
13768
13834
|
/**
|
|
13769
13835
|
* Parse content/runtime variant identifiers into the closed theme-button class
|
|
@@ -13796,6 +13862,27 @@ function themeButtonClassName(spec) {
|
|
|
13796
13862
|
spec.extraClassName
|
|
13797
13863
|
].filter(Boolean).join(" ");
|
|
13798
13864
|
}
|
|
13865
|
+
/**
|
|
13866
|
+
* Button classes for an authored button that renders its own trailing icon.
|
|
13867
|
+
*
|
|
13868
|
+
* A separate function rather than a flag on `themeButtonClassName`, because
|
|
13869
|
+
* there is exactly one caller and it should stay visible in a diff. The name
|
|
13870
|
+
* states what the caller knows to be true of its own markup — that it renders a
|
|
13871
|
+
* trailing icon — rather than what the theme does about it. The consequence is
|
|
13872
|
+
* the theme's to decide and to change; a caller naming the consequence would be
|
|
13873
|
+
* asserting a policy it does not own, and would quietly become a lie the moment
|
|
13874
|
+
* that policy moved.
|
|
13875
|
+
*
|
|
13876
|
+
* Do not reach for this to remove an arrow you simply do not want. A trailing
|
|
13877
|
+
* affordance is declared by the button style, and a block overriding that is the
|
|
13878
|
+
* defect this replaced.
|
|
13879
|
+
*/
|
|
13880
|
+
function themeButtonClassNameWithTrailingIcon(spec) {
|
|
13881
|
+
return themeButtonClassName({
|
|
13882
|
+
...spec,
|
|
13883
|
+
extraClassName: [spec.extraClassName, AFFORDANCE_SUPPRESS_CLASS].filter(Boolean).join(" ")
|
|
13884
|
+
});
|
|
13885
|
+
}
|
|
13799
13886
|
//#endregion
|
|
13800
13887
|
//#region ../theme-core/src/interactive/generateBaseCSS.ts
|
|
13801
13888
|
/**
|
|
@@ -15708,26 +15795,19 @@ function resolvedButtonFocusDeclarations(indicator, role) {
|
|
|
15708
15795
|
] : [["outline", value("outline", `3px solid ${indicator.colorCss}`)], ["outline-offset", value("outline-offset", "3px")]];
|
|
15709
15796
|
}
|
|
15710
15797
|
/**
|
|
15711
|
-
* Disabled buttons
|
|
15712
|
-
*
|
|
15713
|
-
*
|
|
15714
|
-
* remain observable.
|
|
15798
|
+
* Disabled buttons are deliberately muted as unavailable controls. Native
|
|
15799
|
+
* disabled controls are exempt from active-control contrast requirements;
|
|
15800
|
+
* opacity distinguishes the state without introducing a focus-like outline.
|
|
15801
|
+
* Retaining pointer events lets the not-allowed cursor remain observable.
|
|
15715
15802
|
*/
|
|
15716
15803
|
const RESOLVED_BUTTON_DISABLED_DECLARATIONS = [
|
|
15717
15804
|
["cursor", "not-allowed"],
|
|
15718
15805
|
["transform", "none"],
|
|
15719
15806
|
["box-shadow", "none"],
|
|
15720
|
-
["
|
|
15721
|
-
["outline-offset", "-4px"]
|
|
15807
|
+
["opacity", "0.55"]
|
|
15722
15808
|
];
|
|
15723
15809
|
//#endregion
|
|
15724
15810
|
//#region ../theme-core/src/buttons/generateButtonCss.ts
|
|
15725
|
-
/**
|
|
15726
|
-
* Class the `button` runtime node adds when it renders its own trailing icon,
|
|
15727
|
-
* so a node-level icon suppresses the theme's CSS `::after` affordance.
|
|
15728
|
-
* Shared so generator and renderer can't drift.
|
|
15729
|
-
*/
|
|
15730
|
-
const AFFORDANCE_SUPPRESS_CLASS = "rb-affordance-off";
|
|
15731
15811
|
const BUTTON_SIZE_NAMES = buttonSizeNameSchema.options;
|
|
15732
15812
|
/**
|
|
15733
15813
|
* Letter spacing token → CSS value.
|
|
@@ -27635,6 +27715,28 @@ const bookingRequirementConsentFieldSchema = z$1.object({
|
|
|
27635
27715
|
const bookingConsentCarrierSchema = z$1.union([blockBookingConsentSchema, bookingRequirementConsentFieldSchema]);
|
|
27636
27716
|
//#endregion
|
|
27637
27717
|
//#region ../blocks/src/system/blocks/events/shared/schemas.ts
|
|
27718
|
+
const publicEventLoaderQuerySchemaShape = {
|
|
27719
|
+
limit: z$1.string().optional(),
|
|
27720
|
+
from: z$1.string().optional(),
|
|
27721
|
+
to: z$1.string().optional(),
|
|
27722
|
+
afterStartsAt: z$1.string().optional(),
|
|
27723
|
+
afterId: z$1.string().optional(),
|
|
27724
|
+
categoryIds: z$1.string().optional(),
|
|
27725
|
+
venueId: z$1.string().optional(),
|
|
27726
|
+
staffMemberId: z$1.string().optional(),
|
|
27727
|
+
eventSurface: z$1.string().optional(),
|
|
27728
|
+
eventPresets: z$1.string().optional(),
|
|
27729
|
+
scheduleScope: z$1.string().optional(),
|
|
27730
|
+
seriesId: z$1.string().optional(),
|
|
27731
|
+
seriesIds: z$1.string().optional(),
|
|
27732
|
+
runSeriesId: z$1.string().optional(),
|
|
27733
|
+
seriesSlug: z$1.string().optional(),
|
|
27734
|
+
includeOccurrenceId: z$1.string().optional(),
|
|
27735
|
+
readIntent: z$1.string().optional(),
|
|
27736
|
+
detailLevel: z$1.string().optional(),
|
|
27737
|
+
readProfile: z$1.string().optional()
|
|
27738
|
+
};
|
|
27739
|
+
z$1.object(publicEventLoaderQuerySchemaShape);
|
|
27638
27740
|
const eventPresetSchema = z$1.enum([
|
|
27639
27741
|
"event",
|
|
27640
27742
|
"class",
|
|
@@ -28001,6 +28103,7 @@ z$1.object({
|
|
|
28001
28103
|
eventSurface: z$1.enum(eventSurfaceScopeValues).optional(),
|
|
28002
28104
|
eventPresets: z$1.string().optional(),
|
|
28003
28105
|
scheduleScope: z$1.enum(eventScheduleScopeValues).optional(),
|
|
28106
|
+
seriesIds: z$1.string().optional(),
|
|
28004
28107
|
categoryIds: z$1.string().optional(),
|
|
28005
28108
|
venueId: z$1.string().transform(normalizeCalendarFilterId).optional(),
|
|
28006
28109
|
staffMemberId: z$1.string().transform(normalizeCalendarFilterId).optional()
|
|
@@ -28051,7 +28154,56 @@ const calendarWindowPageSchema = z$1.discriminatedUnion("kind", [z$1.object({
|
|
|
28051
28154
|
kind: z$1.literal("partial"),
|
|
28052
28155
|
nextCursor: calendarSourceCursorSchema
|
|
28053
28156
|
})]);
|
|
28157
|
+
//#endregion
|
|
28158
|
+
//#region ../blocks/src/system/blocks/events/shared/eventSelection.ts
|
|
28159
|
+
/** Invalid saved selections fail closed rather than widening discovery. */
|
|
28160
|
+
function resolveEventSelection(mode, value) {
|
|
28161
|
+
if (mode !== "selected") return { kind: "matching" };
|
|
28162
|
+
const candidates = Array.isArray(value) ? value : typeof value === "string" ? value.split(",").filter(Boolean) : [];
|
|
28163
|
+
const ids = [];
|
|
28164
|
+
for (const candidate of candidates) {
|
|
28165
|
+
if (typeof candidate !== "string") return {
|
|
28166
|
+
kind: "selected",
|
|
28167
|
+
seriesIds: []
|
|
28168
|
+
};
|
|
28169
|
+
const parsed = parseEventSeriesId(candidate.trim());
|
|
28170
|
+
if (!parsed.ok) return {
|
|
28171
|
+
kind: "selected",
|
|
28172
|
+
seriesIds: []
|
|
28173
|
+
};
|
|
28174
|
+
ids.push(parsed.value);
|
|
28175
|
+
}
|
|
28176
|
+
return {
|
|
28177
|
+
kind: "selected",
|
|
28178
|
+
seriesIds: [...new Set(ids)].sort()
|
|
28179
|
+
};
|
|
28180
|
+
}
|
|
28181
|
+
/** Undefined means discovery; an empty string is an explicitly empty selection. */
|
|
28182
|
+
function eventSeriesScopeCsv(value) {
|
|
28183
|
+
if (value == null) return void 0;
|
|
28184
|
+
return typeof value === "string" ? value : value.join(",");
|
|
28185
|
+
}
|
|
28054
28186
|
const defaultTransforms = createTransformRegistry([
|
|
28187
|
+
{
|
|
28188
|
+
id: "events.calendarSelectionParam",
|
|
28189
|
+
kind: "formatter",
|
|
28190
|
+
summary: "Resolve selected events instead of discovery filters",
|
|
28191
|
+
schema: z$1.object({ key: z$1.enum([
|
|
28192
|
+
"seriesIds",
|
|
28193
|
+
"eventSurface",
|
|
28194
|
+
"filterEventPresets",
|
|
28195
|
+
"scheduleScope",
|
|
28196
|
+
"filterCategoryIds",
|
|
28197
|
+
"filterStaffMemberId",
|
|
28198
|
+
"filterVenueId"
|
|
28199
|
+
]) }),
|
|
28200
|
+
run(value, { key }) {
|
|
28201
|
+
const content = asPartialObject(value) ?? {};
|
|
28202
|
+
const selection = resolveEventSelection(content.eventSelection, content.selectedEventSeriesIds);
|
|
28203
|
+
if (selection.kind === "selected") return key === "seriesIds" ? selection.seriesIds : void 0;
|
|
28204
|
+
return key === "seriesIds" ? void 0 : content[key];
|
|
28205
|
+
}
|
|
28206
|
+
},
|
|
28055
28207
|
{
|
|
28056
28208
|
id: "events.calendarReadEnabled",
|
|
28057
28209
|
kind: "formatter",
|
|
@@ -29805,17 +29957,16 @@ const ButtonNode = ({ value, children, href, variantId = "primary", size = "md",
|
|
|
29805
29957
|
if (process.env.NODE_ENV === "development") console.warn("[ButtonNode] Missing href for link-required button");
|
|
29806
29958
|
return null;
|
|
29807
29959
|
}
|
|
29808
|
-
const extraClassName = affordanceIcon ? [className, AFFORDANCE_SUPPRESS_CLASS].filter(Boolean).join(" ") : className;
|
|
29809
29960
|
const resolvedVariantId = parseThemeButtonVariantId(variantId);
|
|
29810
29961
|
if (variantId && !resolvedVariantId) {
|
|
29811
29962
|
console.error("[ButtonNode] Invalid button variant", { variantId });
|
|
29812
29963
|
return null;
|
|
29813
29964
|
}
|
|
29814
|
-
const combinedClassName = resolvedVariantId ? themeButtonClassName({
|
|
29965
|
+
const combinedClassName = resolvedVariantId ? (affordanceIcon ? themeButtonClassNameWithTrailingIcon : themeButtonClassName)({
|
|
29815
29966
|
variant: resolvedVariantId,
|
|
29816
29967
|
size,
|
|
29817
|
-
extraClassName
|
|
29818
|
-
}) :
|
|
29968
|
+
extraClassName: className
|
|
29969
|
+
}) : className;
|
|
29819
29970
|
if (resolvedHref) return /* @__PURE__ */ jsxs("a", {
|
|
29820
29971
|
href: resolvedHref,
|
|
29821
29972
|
target,
|
|
@@ -31083,10 +31234,11 @@ const publicPricingSchema = z$1.object({
|
|
|
31083
31234
|
singlePriceAmount: z$1.number().nullable(),
|
|
31084
31235
|
slidingMinAmount: z$1.number().nullable(),
|
|
31085
31236
|
slidingMaxAmount: z$1.number().nullable(),
|
|
31086
|
-
options: z$1.array(publicPricingOptionSchema)
|
|
31237
|
+
options: z$1.array(publicPricingOptionSchema).readonly()
|
|
31087
31238
|
});
|
|
31088
31239
|
const publicAppointmentServiceSchema = z$1.object({
|
|
31089
31240
|
id: z$1.string().min(1),
|
|
31241
|
+
slug: z$1.string().min(1).optional(),
|
|
31090
31242
|
title: z$1.string(),
|
|
31091
31243
|
description: z$1.string().nullable().optional(),
|
|
31092
31244
|
durationMinutes: z$1.number().int().positive(),
|
|
@@ -31163,7 +31315,7 @@ function formatAmountOrFree(amount, currency) {
|
|
|
31163
31315
|
currency
|
|
31164
31316
|
}, { decimals: "auto" });
|
|
31165
31317
|
}
|
|
31166
|
-
function buildRows(services, pathname) {
|
|
31318
|
+
function buildRows(services, pathname, servicePathPrefix) {
|
|
31167
31319
|
return services.map((service) => ({
|
|
31168
31320
|
id: service.id,
|
|
31169
31321
|
title: service.title,
|
|
@@ -31174,7 +31326,8 @@ function buildRows(services, pathname) {
|
|
|
31174
31326
|
href: resolveDedicatedBookingHref(pathname, {
|
|
31175
31327
|
kind: "appointment_service",
|
|
31176
31328
|
serviceId: service.id
|
|
31177
|
-
})
|
|
31329
|
+
}),
|
|
31330
|
+
detailsHref: servicePathPrefix && service.slug ? `${servicePathPrefix.replace(/\/$/, "")}/${encodeURIComponent(service.slug)}` : null
|
|
31178
31331
|
}));
|
|
31179
31332
|
}
|
|
31180
31333
|
function buildAppointmentServicesView(input) {
|
|
@@ -31193,13 +31346,14 @@ function buildAppointmentServicesView(input) {
|
|
|
31193
31346
|
};
|
|
31194
31347
|
return {
|
|
31195
31348
|
kind: "items",
|
|
31196
|
-
rows: buildRows(parsed.services, input.pathname)
|
|
31349
|
+
rows: buildRows(parsed.services, input.pathname, input.servicePathPrefix ?? null)
|
|
31197
31350
|
};
|
|
31198
31351
|
}
|
|
31199
|
-
function AppointmentServicesNode({ sectionHeading, services, pathname, className }) {
|
|
31352
|
+
function AppointmentServicesNode({ sectionHeading, services, pathname, servicePathPrefix, className }) {
|
|
31200
31353
|
const view = buildAppointmentServicesView({
|
|
31201
31354
|
services,
|
|
31202
|
-
pathname: typeof pathname === "string" ? pathname : void 0
|
|
31355
|
+
pathname: typeof pathname === "string" ? pathname : void 0,
|
|
31356
|
+
servicePathPrefix: typeof servicePathPrefix === "string" ? servicePathPrefix : null
|
|
31203
31357
|
});
|
|
31204
31358
|
const rootClassName = `appointment-services ${className ?? ""}`.trim();
|
|
31205
31359
|
const RowTitle = sectionHeading ? "h3" : "h2";
|
|
@@ -31230,7 +31384,10 @@ function AppointmentServicesNode({ sectionHeading, services, pathname, className
|
|
|
31230
31384
|
children: [
|
|
31231
31385
|
/* @__PURE__ */ jsx(RowTitle, {
|
|
31232
31386
|
className: "appointment-services-row-title rb-text-lg rb-font-medium rb-leading-tight",
|
|
31233
|
-
children: row.
|
|
31387
|
+
children: row.detailsHref ? /* @__PURE__ */ jsx("a", {
|
|
31388
|
+
href: row.detailsHref,
|
|
31389
|
+
children: row.title
|
|
31390
|
+
}) : row.title
|
|
31234
31391
|
}),
|
|
31235
31392
|
row.description ? /* @__PURE__ */ jsx("p", {
|
|
31236
31393
|
className: "appointment-services-row-description rb-text-sm rb-leading-6 status-muted",
|
|
@@ -33737,12 +33894,12 @@ const EventCompactRow = ({ event, buttonVariant = "primary", buttonText }) => {
|
|
|
33737
33894
|
}), cta.hidden ? /* @__PURE__ */ jsx("span", {
|
|
33738
33895
|
className: "event-compact-row-status",
|
|
33739
33896
|
children: cta.label
|
|
33740
|
-
}) : /* @__PURE__ */
|
|
33897
|
+
}) : /* @__PURE__ */ jsx("a", {
|
|
33741
33898
|
href: cta.href,
|
|
33742
33899
|
target: cta.external ? "_blank" : void 0,
|
|
33743
33900
|
rel: cta.external ? "noopener noreferrer" : void 0,
|
|
33744
33901
|
className: `${buttonClass} event-compact-row-cta`,
|
|
33745
|
-
children:
|
|
33902
|
+
children: /* @__PURE__ */ jsx("span", { children: cta.label })
|
|
33746
33903
|
})]
|
|
33747
33904
|
})]
|
|
33748
33905
|
})]
|
|
@@ -34835,6 +34992,7 @@ const eventCollectionFilterSourceSchemaShape = {
|
|
|
34835
34992
|
eventSurface: eventSurfaceScopeSchema$1.nullable().optional(),
|
|
34836
34993
|
filterEventPresets: z$1.union([z$1.string(), z$1.array(z$1.string())]).nullable().optional(),
|
|
34837
34994
|
scheduleScope: eventScheduleScopeSchema$1.nullable().optional(),
|
|
34995
|
+
seriesIds: z$1.union([z$1.string(), z$1.array(z$1.string())]).nullable().optional(),
|
|
34838
34996
|
filterCategoryIds: z$1.union([z$1.string(), z$1.array(z$1.string())]).nullable().optional(),
|
|
34839
34997
|
filterStaffMemberId: z$1.string().nullable().optional(),
|
|
34840
34998
|
filterVenueId: z$1.string().nullable().optional()
|
|
@@ -34881,6 +35039,7 @@ const eventCollectionDisplaySchemaShape = {
|
|
|
34881
35039
|
eventSurface: eventSurfaceScopeSchema$1,
|
|
34882
35040
|
filterEventPresets: z$1.string().nullable(),
|
|
34883
35041
|
scheduleScope: eventScheduleScopeSchema$1,
|
|
35042
|
+
seriesIds: z$1.string().nullable().optional(),
|
|
34884
35043
|
filterCategoryIds: z$1.string().nullable(),
|
|
34885
35044
|
filterStaffMemberId: z$1.string().nullable(),
|
|
34886
35045
|
filterVenueId: z$1.string().nullable(),
|
|
@@ -34928,11 +35087,15 @@ function buildEventCollectionDisplay(source) {
|
|
|
34928
35087
|
};
|
|
34929
35088
|
}
|
|
34930
35089
|
function buildEventCollectionFilterDisplay(source) {
|
|
34931
|
-
|
|
34932
|
-
|
|
34933
|
-
|
|
34934
|
-
|
|
34935
|
-
|
|
35090
|
+
const selected = source.seriesIds != null;
|
|
35091
|
+
const matchingFilters = selected ? {
|
|
35092
|
+
eventSurface: "all",
|
|
35093
|
+
filterEventPresets: null,
|
|
35094
|
+
scheduleScope: "any",
|
|
35095
|
+
filterCategoryIds: null,
|
|
35096
|
+
filterStaffMemberId: null,
|
|
35097
|
+
filterVenueId: null
|
|
35098
|
+
} : {
|
|
34936
35099
|
eventSurface: normalizeEventSurfaceScope(source.eventSurface),
|
|
34937
35100
|
filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
34938
35101
|
scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
|
|
@@ -34940,6 +35103,14 @@ function buildEventCollectionFilterDisplay(source) {
|
|
|
34940
35103
|
filterStaffMemberId: normalizeEventStaffMemberId(source.filterStaffMemberId),
|
|
34941
35104
|
filterVenueId: normalizeEventVenueId(source.filterVenueId)
|
|
34942
35105
|
};
|
|
35106
|
+
return {
|
|
35107
|
+
seriesIds: eventSeriesScopeCsv(source.seriesIds),
|
|
35108
|
+
showFilters: selected ? false : source.showFilters ?? true,
|
|
35109
|
+
showCategoryFilter: source.showCategoryFilter ?? "auto",
|
|
35110
|
+
showVenueFilter: source.showVenueFilter ?? false,
|
|
35111
|
+
showStaffFilter: source.showStaffFilter ?? true,
|
|
35112
|
+
...matchingFilters
|
|
35113
|
+
};
|
|
34943
35114
|
}
|
|
34944
35115
|
function buildEventCollectionPresentationDisplay(source) {
|
|
34945
35116
|
return {
|
|
@@ -34954,14 +35125,15 @@ function buildEventCollectionPresentationDisplay(source) {
|
|
|
34954
35125
|
}
|
|
34955
35126
|
function buildEventCollectionHydration(source, now = /* @__PURE__ */ new Date()) {
|
|
34956
35127
|
const timeZone = source.calendarWindow?.scope.timeZone ?? toBookingTimeZone(source.bookingTimeZone);
|
|
35128
|
+
const selected = source.seriesIds != null;
|
|
34957
35129
|
return {
|
|
34958
35130
|
calendarWindow: source.calendarWindow ?? void 0,
|
|
34959
35131
|
siteId: source.siteId,
|
|
34960
35132
|
stage: source.stage,
|
|
34961
35133
|
prefetchedEvents: source.events != null,
|
|
34962
|
-
eventSurface: normalizeEventSurfaceScope(source.eventSurface),
|
|
34963
|
-
filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
34964
|
-
scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
|
|
35134
|
+
eventSurface: selected ? "all" : normalizeEventSurfaceScope(source.eventSurface),
|
|
35135
|
+
filterEventPresets: selected ? null : normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
35136
|
+
scheduleScope: selected ? "any" : normalizeEventScheduleScope(source.scheduleScope),
|
|
34965
35137
|
calendarContext: {
|
|
34966
35138
|
timeZone,
|
|
34967
35139
|
initialToday: source.calendarWindow?.initialToday ?? getLocalScheduleDate(now, timeZone)
|
|
@@ -35531,13 +35703,10 @@ function OfferingsPreviewContent(props) {
|
|
|
35531
35703
|
}),
|
|
35532
35704
|
groupCta ? /* @__PURE__ */ jsx("footer", {
|
|
35533
35705
|
className: "offerings-preview-card-footer rb-mt-auto rb-flex",
|
|
35534
|
-
children: /* @__PURE__ */
|
|
35706
|
+
children: /* @__PURE__ */ jsx("a", {
|
|
35535
35707
|
className: groupLinkClass,
|
|
35536
35708
|
href: groupCta.href,
|
|
35537
|
-
children:
|
|
35538
|
-
"aria-hidden": "true",
|
|
35539
|
-
className: "offerings-preview-link-icon rb-h-4 rb-w-4"
|
|
35540
|
-
})]
|
|
35709
|
+
children: /* @__PURE__ */ jsx("span", { children: groupCta.label })
|
|
35541
35710
|
})
|
|
35542
35711
|
}) : null
|
|
35543
35712
|
]
|
|
@@ -37742,6 +37911,44 @@ function toWholeSeriesRegistrationEvents(events) {
|
|
|
37742
37911
|
return groupPublicEventsByRun(events).map(toWholeSeriesRegistrationEvent).filter((event) => event !== null);
|
|
37743
37912
|
}
|
|
37744
37913
|
//#endregion
|
|
37914
|
+
//#region ../blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.ts
|
|
37915
|
+
const { limit: _rawLimit, eventSurface: _rawEventSurface, scheduleScope: _rawScheduleScope, detailLevel: _rawDetailLevel, ...stringEventQueryShape } = publicEventLoaderQuerySchemaShape;
|
|
37916
|
+
const eventRecoveryRequestSchema = z$1.object({
|
|
37917
|
+
...stringEventQueryShape,
|
|
37918
|
+
limit: z$1.coerce.number().int().positive().optional(),
|
|
37919
|
+
eventSurface: z$1.enum(eventSurfaceScopeValues).optional(),
|
|
37920
|
+
scheduleScope: z$1.enum(eventScheduleScopeValues).optional(),
|
|
37921
|
+
detailLevel: z$1.enum(["full", "listing"]).optional(),
|
|
37922
|
+
stage: z$1.enum(["preview", "published"]).optional()
|
|
37923
|
+
});
|
|
37924
|
+
function resolveEventRegistrationEventSource(input) {
|
|
37925
|
+
if (input.wholeSeriesRunEvents != null) return {
|
|
37926
|
+
kind: "loaded",
|
|
37927
|
+
events: input.wholeSeriesRunEvents
|
|
37928
|
+
};
|
|
37929
|
+
if (input.events != null) return {
|
|
37930
|
+
kind: "loaded",
|
|
37931
|
+
events: input.events
|
|
37932
|
+
};
|
|
37933
|
+
return {
|
|
37934
|
+
kind: "unresolved",
|
|
37935
|
+
request: parseEventLoaderRecoveryRequest(input.failures?.wholeSeriesRunEvents ?? input.failures?.events)
|
|
37936
|
+
};
|
|
37937
|
+
}
|
|
37938
|
+
const eventLoaderFailureSchema = z$1.object({
|
|
37939
|
+
endpoint: z$1.literal("listPublicEvents"),
|
|
37940
|
+
params: eventRecoveryRequestSchema.extend({ siteId: z$1.string().optional() })
|
|
37941
|
+
});
|
|
37942
|
+
function parseEventLoaderRecoveryRequest(value) {
|
|
37943
|
+
const parsed = eventLoaderFailureSchema.safeParse(value);
|
|
37944
|
+
if (!parsed.success) return null;
|
|
37945
|
+
const { siteId: _siteId, stage, ...params } = parsed.data.params;
|
|
37946
|
+
return {
|
|
37947
|
+
...params,
|
|
37948
|
+
stage: stage ?? "published"
|
|
37949
|
+
};
|
|
37950
|
+
}
|
|
37951
|
+
//#endregion
|
|
37745
37952
|
//#region ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
|
|
37746
37953
|
const EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS = [
|
|
37747
37954
|
"Date",
|
|
@@ -37759,8 +37966,6 @@ const eventRegistrationPublicEventSchema = z$1.preprocess(normalizeEventRegistra
|
|
|
37759
37966
|
const eventRegistrationHydrationSchemaShape = {
|
|
37760
37967
|
occurrenceContext: occurrenceContextSchema.optional(),
|
|
37761
37968
|
subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
|
|
37762
|
-
events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
|
|
37763
|
-
wholeSeriesRunEvents: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
|
|
37764
37969
|
maxTickets: z$1.string().optional(),
|
|
37765
37970
|
showVenue: z$1.boolean().optional(),
|
|
37766
37971
|
showCapacity: z$1.boolean().optional(),
|
|
@@ -37772,12 +37977,22 @@ const eventRegistrationHydrationSchemaShape = {
|
|
|
37772
37977
|
sitePasses: publicPassProductCollectionSchema.nullable().optional(),
|
|
37773
37978
|
siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
|
|
37774
37979
|
};
|
|
37980
|
+
const eventRegistrationEventSourceSchema = z$1.discriminatedUnion("kind", [z$1.object({
|
|
37981
|
+
kind: z$1.literal("loaded"),
|
|
37982
|
+
events: z$1.array(eventRegistrationPublicEventSchema)
|
|
37983
|
+
}), z$1.object({
|
|
37984
|
+
kind: z$1.literal("unresolved"),
|
|
37985
|
+
request: eventRecoveryRequestSchema.nullable()
|
|
37986
|
+
})]);
|
|
37775
37987
|
const eventRegistrationSourceSchema = z$1.object({
|
|
37776
37988
|
siteId: z$1.string().optional(),
|
|
37777
37989
|
apiBaseUrl: z$1.string().optional(),
|
|
37778
37990
|
portalToken: z$1.string().nullable().optional(),
|
|
37779
37991
|
previewToken: z$1.string().nullable().optional(),
|
|
37780
37992
|
...eventRegistrationHydrationSchemaShape,
|
|
37993
|
+
events: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
|
|
37994
|
+
wholeSeriesRunEvents: z$1.array(eventRegistrationPublicEventSchema).nullable().optional(),
|
|
37995
|
+
eventLoaderFailures: z$1.record(z$1.string(), z$1.unknown()).nullable().optional(),
|
|
37781
37996
|
className: z$1.string().nullable().optional(),
|
|
37782
37997
|
buttonText: z$1.string().nullable().optional(),
|
|
37783
37998
|
maxTickets: z$1.string().nullable().optional(),
|
|
@@ -37798,7 +38013,10 @@ const eventRegistrationDisplaySchema = z$1.discriminatedUnion("state", [z$1.obje
|
|
|
37798
38013
|
titleText: z$1.string(),
|
|
37799
38014
|
bodyText: z$1.string()
|
|
37800
38015
|
})]);
|
|
37801
|
-
const eventRegistrationHydrationSchema = z$1.object(
|
|
38016
|
+
const eventRegistrationHydrationSchema = z$1.object({
|
|
38017
|
+
...eventRegistrationHydrationSchemaShape,
|
|
38018
|
+
eventSource: eventRegistrationEventSourceSchema
|
|
38019
|
+
});
|
|
37802
38020
|
const eventRegistrationRenderSchema = z$1.object({
|
|
37803
38021
|
display: eventRegistrationDisplaySchema,
|
|
37804
38022
|
hydration: eventRegistrationHydrationSchema
|
|
@@ -37857,16 +38075,12 @@ function buildEventRegistrationShellStepLabels(source, scopedSourceEvents) {
|
|
|
37857
38075
|
function toScopedEventRegistrationEvents(scopedSourceEvents) {
|
|
37858
38076
|
return [...toRegistrationEvents(scopedSourceEvents), ...toWholeSeriesRegistrationEvents(scopedSourceEvents)];
|
|
37859
38077
|
}
|
|
37860
|
-
function scopeEventRegistrationSourceEvents(source) {
|
|
37861
|
-
return resolveEventRegistrationScopedEvents(
|
|
38078
|
+
function scopeEventRegistrationSourceEvents(source, eventSource) {
|
|
38079
|
+
return resolveEventRegistrationScopedEvents(eventSource.kind === "loaded" ? eventSource.events : [], {
|
|
37862
38080
|
occurrenceContext: source.occurrenceContext,
|
|
37863
38081
|
subject: source.subject
|
|
37864
38082
|
});
|
|
37865
38083
|
}
|
|
37866
|
-
function resolveLoadedEventRegistrationSourceEvents(source, scopedSourceEvents) {
|
|
37867
|
-
if (source.events == null && source.wholeSeriesRunEvents == null) return null;
|
|
37868
|
-
return [...scopedSourceEvents];
|
|
37869
|
-
}
|
|
37870
38084
|
/**
|
|
37871
38085
|
* The one run this surface is registering for, when the scoped events describe
|
|
37872
38086
|
* exactly one. More than one run means the visitor still has to choose.
|
|
@@ -37906,14 +38120,21 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
|
|
|
37906
38120
|
render: createZodCodec(eventRegistrationRenderSchema)
|
|
37907
38121
|
},
|
|
37908
38122
|
buildRender: (source) => {
|
|
37909
|
-
const
|
|
37910
|
-
|
|
38123
|
+
const eventSource = resolveEventRegistrationEventSource({
|
|
38124
|
+
events: source.events,
|
|
38125
|
+
wholeSeriesRunEvents: source.wholeSeriesRunEvents,
|
|
38126
|
+
failures: source.eventLoaderFailures
|
|
38127
|
+
});
|
|
38128
|
+
const scopedSourceEvents = scopeEventRegistrationSourceEvents(source, eventSource);
|
|
37911
38129
|
return {
|
|
37912
38130
|
display: buildEventRegistrationDisplayFromScopedEvents(source, scopedSourceEvents),
|
|
37913
38131
|
hydration: {
|
|
37914
38132
|
occurrenceContext: source.occurrenceContext ?? null,
|
|
37915
38133
|
subject: source.subject ?? null,
|
|
37916
|
-
|
|
38134
|
+
eventSource: eventSource.kind === "loaded" ? {
|
|
38135
|
+
...eventSource,
|
|
38136
|
+
events: [...scopedSourceEvents]
|
|
38137
|
+
} : eventSource,
|
|
37917
38138
|
maxTickets: source.maxTickets ?? void 0,
|
|
37918
38139
|
showVenue: source.showVenue,
|
|
37919
38140
|
showCapacity: source.showCapacity,
|
|
@@ -38103,6 +38324,7 @@ const eventRegistrationBlockDefinition = {
|
|
|
38103
38324
|
} },
|
|
38104
38325
|
events: { $bind: { from: "data.events" } },
|
|
38105
38326
|
wholeSeriesRunEvents: { $bind: { from: "data.wholeSeriesRunEvents" } },
|
|
38327
|
+
loaderFailures: { $bind: { from: "$root.loaderFailures" } },
|
|
38106
38328
|
sitePasses: { $bind: { from: "data.sitePasses" } },
|
|
38107
38329
|
siteMemberships: { $bind: { from: "data.siteMemberships" } },
|
|
38108
38330
|
stage: { $bind: {
|
|
@@ -38429,6 +38651,65 @@ const formBlockDefinition = {
|
|
|
38429
38651
|
runtime: formBlockRuntime
|
|
38430
38652
|
};
|
|
38431
38653
|
//#endregion
|
|
38654
|
+
//#region ../blocks/src/system/blocks/events/eventSelectionFields.ts
|
|
38655
|
+
const eventSelectionFields = [{
|
|
38656
|
+
id: "eventSelection",
|
|
38657
|
+
type: "select",
|
|
38658
|
+
label: "Events to show",
|
|
38659
|
+
required: false,
|
|
38660
|
+
multiple: false,
|
|
38661
|
+
defaultValue: "matching",
|
|
38662
|
+
options: [{
|
|
38663
|
+
value: "matching",
|
|
38664
|
+
label: "All matching events"
|
|
38665
|
+
}, {
|
|
38666
|
+
value: "selected",
|
|
38667
|
+
label: "Selected events"
|
|
38668
|
+
}],
|
|
38669
|
+
ui: { intent: "behavior" }
|
|
38670
|
+
}, createSiteOptionSelectField({
|
|
38671
|
+
id: "selectedEventSeriesIds",
|
|
38672
|
+
label: "Selected events",
|
|
38673
|
+
description: "Show upcoming dates for these events. Other event filters do not apply.",
|
|
38674
|
+
required: false,
|
|
38675
|
+
multiple: true,
|
|
38676
|
+
defaultValue: [],
|
|
38677
|
+
optionSource: "eventSeries",
|
|
38678
|
+
ui: {
|
|
38679
|
+
intent: "behavior",
|
|
38680
|
+
searchThreshold: 1,
|
|
38681
|
+
visibleWhen: {
|
|
38682
|
+
field: "eventSelection",
|
|
38683
|
+
equals: "selected"
|
|
38684
|
+
}
|
|
38685
|
+
}
|
|
38686
|
+
})];
|
|
38687
|
+
function withEventSelectionVisibility(field) {
|
|
38688
|
+
if (![
|
|
38689
|
+
"eventSurface",
|
|
38690
|
+
"filterEventPresets",
|
|
38691
|
+
"scheduleScope",
|
|
38692
|
+
"filterCategoryIds",
|
|
38693
|
+
"filterStaffMemberId",
|
|
38694
|
+
"filterVenueId",
|
|
38695
|
+
"showFilters",
|
|
38696
|
+
"showCategoryFilter",
|
|
38697
|
+
"showVenueFilter",
|
|
38698
|
+
"showStaffFilter"
|
|
38699
|
+
].includes(field.id)) return field;
|
|
38700
|
+
const visibleWhen = field.ui?.visibleWhen;
|
|
38701
|
+
return {
|
|
38702
|
+
...field,
|
|
38703
|
+
ui: {
|
|
38704
|
+
...field.ui,
|
|
38705
|
+
visibleWhen: { allOf: [{
|
|
38706
|
+
field: "eventSelection",
|
|
38707
|
+
notEquals: "selected"
|
|
38708
|
+
}, ...visibleWhen ? [visibleWhen] : []] }
|
|
38709
|
+
}
|
|
38710
|
+
};
|
|
38711
|
+
}
|
|
38712
|
+
//#endregion
|
|
38432
38713
|
//#region ../blocks/src/system/runtime/nodes/events/EventCalendar.interactive.ts
|
|
38433
38714
|
const eventCalendarSourceSchema = z$1.object({
|
|
38434
38715
|
...eventCollectionSourceSchemaShape,
|
|
@@ -38526,19 +38807,59 @@ function buildEventCalendarInteractiveIslandProps(props) {
|
|
|
38526
38807
|
//#region ../blocks/src/system/blocks/events/eventCalendarDataLoaders.ts
|
|
38527
38808
|
const scopeParams = {
|
|
38528
38809
|
siteId: { $bind: { from: "$root.siteId" } },
|
|
38810
|
+
seriesIds: { $bind: {
|
|
38811
|
+
from: "content",
|
|
38812
|
+
transforms: [{
|
|
38813
|
+
id: "events.calendarSelectionParam",
|
|
38814
|
+
options: { key: "seriesIds" }
|
|
38815
|
+
}]
|
|
38816
|
+
} },
|
|
38529
38817
|
stage: { $bind: {
|
|
38530
38818
|
from: "$root.previewStage",
|
|
38531
38819
|
fallback: "published"
|
|
38532
38820
|
} },
|
|
38533
|
-
eventSurface: { $bind: {
|
|
38821
|
+
eventSurface: { $bind: {
|
|
38822
|
+
from: "content",
|
|
38823
|
+
transforms: [{
|
|
38824
|
+
id: "events.calendarSelectionParam",
|
|
38825
|
+
options: { key: "eventSurface" }
|
|
38826
|
+
}, { id: "value.csv" }]
|
|
38827
|
+
} },
|
|
38534
38828
|
eventPresets: { $bind: {
|
|
38535
|
-
from: "content
|
|
38536
|
-
transforms: [{
|
|
38829
|
+
from: "content",
|
|
38830
|
+
transforms: [{
|
|
38831
|
+
id: "events.calendarSelectionParam",
|
|
38832
|
+
options: { key: "filterEventPresets" }
|
|
38833
|
+
}, { id: "value.csv" }]
|
|
38834
|
+
} },
|
|
38835
|
+
scheduleScope: { $bind: {
|
|
38836
|
+
from: "content",
|
|
38837
|
+
transforms: [{
|
|
38838
|
+
id: "events.calendarSelectionParam",
|
|
38839
|
+
options: { key: "scheduleScope" }
|
|
38840
|
+
}, { id: "value.csv" }]
|
|
38841
|
+
} },
|
|
38842
|
+
categoryIds: { $bind: {
|
|
38843
|
+
from: "content",
|
|
38844
|
+
transforms: [{
|
|
38845
|
+
id: "events.calendarSelectionParam",
|
|
38846
|
+
options: { key: "filterCategoryIds" }
|
|
38847
|
+
}, { id: "value.csv" }]
|
|
38848
|
+
} },
|
|
38849
|
+
staffMemberId: { $bind: {
|
|
38850
|
+
from: "content",
|
|
38851
|
+
transforms: [{
|
|
38852
|
+
id: "events.calendarSelectionParam",
|
|
38853
|
+
options: { key: "filterStaffMemberId" }
|
|
38854
|
+
}, { id: "value.csv" }]
|
|
38537
38855
|
} },
|
|
38538
|
-
|
|
38539
|
-
|
|
38540
|
-
|
|
38541
|
-
|
|
38856
|
+
venueId: { $bind: {
|
|
38857
|
+
from: "content",
|
|
38858
|
+
transforms: [{
|
|
38859
|
+
id: "events.calendarSelectionParam",
|
|
38860
|
+
options: { key: "filterVenueId" }
|
|
38861
|
+
}, { id: "value.csv" }]
|
|
38862
|
+
} }
|
|
38542
38863
|
};
|
|
38543
38864
|
/** Combined renders two jobs; calendar-only variants never pay for the list seed. */
|
|
38544
38865
|
const eventCalendarDataLoaders = {
|
|
@@ -38668,6 +38989,13 @@ const eventCalendarLayout = [styledSection({
|
|
|
38668
38989
|
from: "content.defaultCalendarView",
|
|
38669
38990
|
fallback: "month"
|
|
38670
38991
|
} },
|
|
38992
|
+
seriesIds: { $bind: {
|
|
38993
|
+
from: "content",
|
|
38994
|
+
transforms: [{
|
|
38995
|
+
id: "events.calendarSelectionParam",
|
|
38996
|
+
options: { key: "seriesIds" }
|
|
38997
|
+
}]
|
|
38998
|
+
} },
|
|
38671
38999
|
showFilters: { $bind: {
|
|
38672
39000
|
from: "content.showFilters",
|
|
38673
39001
|
fallback: true
|
|
@@ -38689,17 +39017,47 @@ const eventCalendarLayout = [styledSection({
|
|
|
38689
39017
|
fallback: true
|
|
38690
39018
|
} },
|
|
38691
39019
|
eventSurface: { $bind: {
|
|
38692
|
-
from: "content
|
|
38693
|
-
|
|
39020
|
+
from: "content",
|
|
39021
|
+
transforms: [{
|
|
39022
|
+
id: "events.calendarSelectionParam",
|
|
39023
|
+
options: { key: "eventSurface" }
|
|
39024
|
+
}]
|
|
39025
|
+
} },
|
|
39026
|
+
filterEventPresets: { $bind: {
|
|
39027
|
+
from: "content",
|
|
39028
|
+
transforms: [{
|
|
39029
|
+
id: "events.calendarSelectionParam",
|
|
39030
|
+
options: { key: "filterEventPresets" }
|
|
39031
|
+
}]
|
|
38694
39032
|
} },
|
|
38695
|
-
filterEventPresets: { $bind: { from: "content.filterEventPresets" } },
|
|
38696
39033
|
scheduleScope: { $bind: {
|
|
38697
|
-
from: "content
|
|
38698
|
-
|
|
39034
|
+
from: "content",
|
|
39035
|
+
transforms: [{
|
|
39036
|
+
id: "events.calendarSelectionParam",
|
|
39037
|
+
options: { key: "scheduleScope" }
|
|
39038
|
+
}]
|
|
39039
|
+
} },
|
|
39040
|
+
filterCategoryIds: { $bind: {
|
|
39041
|
+
from: "content",
|
|
39042
|
+
transforms: [{
|
|
39043
|
+
id: "events.calendarSelectionParam",
|
|
39044
|
+
options: { key: "filterCategoryIds" }
|
|
39045
|
+
}]
|
|
39046
|
+
} },
|
|
39047
|
+
filterStaffMemberId: { $bind: {
|
|
39048
|
+
from: "content",
|
|
39049
|
+
transforms: [{
|
|
39050
|
+
id: "events.calendarSelectionParam",
|
|
39051
|
+
options: { key: "filterStaffMemberId" }
|
|
39052
|
+
}]
|
|
39053
|
+
} },
|
|
39054
|
+
filterVenueId: { $bind: {
|
|
39055
|
+
from: "content",
|
|
39056
|
+
transforms: [{
|
|
39057
|
+
id: "events.calendarSelectionParam",
|
|
39058
|
+
options: { key: "filterVenueId" }
|
|
39059
|
+
}]
|
|
38699
39060
|
} },
|
|
38700
|
-
filterCategoryIds: { $bind: { from: "content.filterCategoryIds" } },
|
|
38701
|
-
filterStaffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
|
|
38702
|
-
filterVenueId: { $bind: { from: "content.filterVenueId" } },
|
|
38703
39061
|
cardRole: { $bind: {
|
|
38704
39062
|
from: "content._cardStyles.role",
|
|
38705
39063
|
fallback: "default"
|
|
@@ -39203,6 +39561,7 @@ const eventCalendarAdditionalFields = [
|
|
|
39203
39561
|
}
|
|
39204
39562
|
}
|
|
39205
39563
|
},
|
|
39564
|
+
...eventSelectionFields,
|
|
39206
39565
|
{
|
|
39207
39566
|
id: "eventSurface",
|
|
39208
39567
|
type: "select",
|
|
@@ -39412,7 +39771,7 @@ const eventCalendarBlockDefinition = {
|
|
|
39412
39771
|
titleSource: "heading",
|
|
39413
39772
|
description: "Display events with calendar, list, or combined views with filtering",
|
|
39414
39773
|
skipSectionStyles: true,
|
|
39415
|
-
additionalFields: eventCalendarAdditionalFields,
|
|
39774
|
+
additionalFields: eventCalendarAdditionalFields.map(withEventSelectionVisibility),
|
|
39416
39775
|
styleTokens: {
|
|
39417
39776
|
background: "surface",
|
|
39418
39777
|
typography: "body",
|
|
@@ -39521,6 +39880,7 @@ const eventListingHydrationSchema = z$1.object({
|
|
|
39521
39880
|
eventSurface: eventSurfaceScopeSchema,
|
|
39522
39881
|
filterEventPresets: z$1.string().nullable(),
|
|
39523
39882
|
scheduleScope: eventScheduleScopeSchema,
|
|
39883
|
+
seriesIds: z$1.string().nullable().optional(),
|
|
39524
39884
|
filterCategoryIds: z$1.string().nullable().optional(),
|
|
39525
39885
|
filterStaffMemberId: z$1.string().nullable().optional(),
|
|
39526
39886
|
filterVenueId: z$1.string().nullable().optional(),
|
|
@@ -39581,6 +39941,7 @@ const eventListingBlockRuntime = defineProgressiveBlockRuntime({
|
|
|
39581
39941
|
eventSurface: normalizeEventSurfaceScope(source.eventSurface),
|
|
39582
39942
|
filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
39583
39943
|
scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
|
|
39944
|
+
seriesIds: eventSeriesScopeCsv(source.seriesIds),
|
|
39584
39945
|
filterCategoryIds: normalizeEventCategoryIdsCsv(source.filterCategoryIds),
|
|
39585
39946
|
filterStaffMemberId: normalizeEventStaffMemberId(source.filterStaffMemberId),
|
|
39586
39947
|
filterVenueId: normalizeEventVenueId(source.filterVenueId),
|
|
@@ -40085,6 +40446,15 @@ const newsletterFieldSchema = z$1.object({
|
|
|
40085
40446
|
placeholder: z$1.string().optional()
|
|
40086
40447
|
});
|
|
40087
40448
|
const mailingListSignupBlockIdSchema = z$1.string().trim().min(1).transform(parseRequiredMailingListSignupBlockId);
|
|
40449
|
+
const mailingListContentVersionIdSchema = z$1.string().transform((value, ctx) => {
|
|
40450
|
+
const parsed = parseMailingListContentVersionId(value);
|
|
40451
|
+
if (parsed) return parsed;
|
|
40452
|
+
ctx.addIssue({
|
|
40453
|
+
code: z$1.ZodIssueCode.custom,
|
|
40454
|
+
message: "Invalid mailing-list content version ID"
|
|
40455
|
+
});
|
|
40456
|
+
return z$1.NEVER;
|
|
40457
|
+
});
|
|
40088
40458
|
const signedMailingListSourceTokenSchema = z$1.string().trim().min(1).transform(parseRequiredMailingListSignedSourceToken);
|
|
40089
40459
|
const newsletterSourceCommonSchema = z$1.object({
|
|
40090
40460
|
siteId: z$1.string().optional(),
|
|
@@ -40098,7 +40468,8 @@ const newsletterSourceCommonSchema = z$1.object({
|
|
|
40098
40468
|
const newsletterSourceSchema = z$1.discriminatedUnion("source", [
|
|
40099
40469
|
newsletterSourceCommonSchema.extend({
|
|
40100
40470
|
source: z$1.literal("block"),
|
|
40101
|
-
blockId: z$1.string().nullable().optional()
|
|
40471
|
+
blockId: z$1.string().nullable().optional(),
|
|
40472
|
+
contentVersionId: z$1.string().nullable().optional()
|
|
40102
40473
|
}),
|
|
40103
40474
|
newsletterSourceCommonSchema.extend({
|
|
40104
40475
|
source: z$1.literal("signed-footer"),
|
|
@@ -40114,6 +40485,7 @@ const newsletterDisplaySchema = z$1.object({
|
|
|
40114
40485
|
availability: z$1.enum(["ready", "unavailable"]),
|
|
40115
40486
|
className: z$1.string().nullable(),
|
|
40116
40487
|
buttonLabel: z$1.string(),
|
|
40488
|
+
successMessage: z$1.string(),
|
|
40117
40489
|
buttonVariant: newsletterButtonVariantSchema,
|
|
40118
40490
|
privacyNote: z$1.string().nullable(),
|
|
40119
40491
|
fields: z$1.array(newsletterFieldSchema),
|
|
@@ -40128,7 +40500,8 @@ const newsletterHydrationSchema = z$1.object({
|
|
|
40128
40500
|
tag: z$1.literal("block-source"),
|
|
40129
40501
|
sourceRef: z$1.object({
|
|
40130
40502
|
tag: z$1.literal("block_ref"),
|
|
40131
|
-
blockId: mailingListSignupBlockIdSchema
|
|
40503
|
+
blockId: mailingListSignupBlockIdSchema,
|
|
40504
|
+
contentVersionId: mailingListContentVersionIdSchema
|
|
40132
40505
|
}).nullable()
|
|
40133
40506
|
}),
|
|
40134
40507
|
z$1.object({
|
|
@@ -40167,6 +40540,7 @@ function buildNewsletterDisplay(source) {
|
|
|
40167
40540
|
fields: { preset: "emailOnly" },
|
|
40168
40541
|
includeOptionalPhone: false,
|
|
40169
40542
|
buttonLabel: "Subscribe",
|
|
40543
|
+
successMessage: DEFAULT_MAILING_LIST_SUCCESS_MESSAGE,
|
|
40170
40544
|
privacyNote: null
|
|
40171
40545
|
};
|
|
40172
40546
|
const targeting = source.targeting ?? { mode: "default" };
|
|
@@ -40176,6 +40550,7 @@ function buildNewsletterDisplay(source) {
|
|
|
40176
40550
|
availability: runtimeTargetingIsAvailable(context, targeting, choices) ? "ready" : "unavailable",
|
|
40177
40551
|
className: source.className ?? null,
|
|
40178
40552
|
buttonLabel: form.buttonLabel,
|
|
40553
|
+
successMessage: form.successMessage,
|
|
40179
40554
|
buttonVariant: source.buttonVariant ?? "primary",
|
|
40180
40555
|
privacyNote: form.privacyNote,
|
|
40181
40556
|
fields: getGlobalFormFields(form),
|
|
@@ -40206,7 +40581,7 @@ const newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
|
|
|
40206
40581
|
function projectNewsletterFormHydrationTarget(source) {
|
|
40207
40582
|
switch (source.source) {
|
|
40208
40583
|
case "block": {
|
|
40209
|
-
const sourceRef = buildMailingListSignupBlockSourceRef(source.blockId);
|
|
40584
|
+
const sourceRef = buildMailingListSignupBlockSourceRef(source.blockId, source.contentVersionId);
|
|
40210
40585
|
if (sourceRef?.tag === "block_ref") return {
|
|
40211
40586
|
tag: "block-source",
|
|
40212
40587
|
sourceRef
|
|
@@ -42620,9 +42995,10 @@ function cx(...classes) {
|
|
|
42620
42995
|
* Server-safe placeholder for event registration.
|
|
42621
42996
|
* Provides a static container for island hydration without importing client hooks.
|
|
42622
42997
|
*/
|
|
42623
|
-
function EventRegistrationSSR({ blockId, subject, children, ...sourceProps }) {
|
|
42998
|
+
function EventRegistrationSSR({ blockId, subject, loaderFailures, children, ...sourceProps }) {
|
|
42624
42999
|
const islandProps = buildEventRegistrationInteractiveIslandProps({
|
|
42625
43000
|
...sourceProps,
|
|
43001
|
+
eventLoaderFailures: blockId ? loaderFailures?.[blockId] : void 0,
|
|
42626
43002
|
subject: normalizeEventRegistrationPageSurfaceSubject(subject)
|
|
42627
43003
|
});
|
|
42628
43004
|
const display = islandProps.render.display;
|
|
@@ -42955,7 +43331,7 @@ function NewsletterFormSSR(props) {
|
|
|
42955
43331
|
className: clsx("newsletter-form-ssr", className),
|
|
42956
43332
|
children: /* @__PURE__ */ jsx("p", {
|
|
42957
43333
|
role: "status",
|
|
42958
|
-
children: "
|
|
43334
|
+
children: "We can’t accept signups right now. Please try again later."
|
|
42959
43335
|
})
|
|
42960
43336
|
});
|
|
42961
43337
|
const renderField = (field) => {
|
|
@@ -43001,14 +43377,18 @@ function NewsletterFormSSR(props) {
|
|
|
43001
43377
|
children: [
|
|
43002
43378
|
fields.map(renderField),
|
|
43003
43379
|
islandProps.render.hydration.choicePresentation === "visitor_choice" ? /* @__PURE__ */ jsxs("fieldset", {
|
|
43004
|
-
className: "newsletter-topics",
|
|
43005
|
-
children: [/* @__PURE__ */ jsx("legend", {
|
|
43006
|
-
className: "
|
|
43380
|
+
className: "fb-fieldset newsletter-topics",
|
|
43381
|
+
children: [/* @__PURE__ */ jsx("legend", {
|
|
43382
|
+
className: "form-label",
|
|
43383
|
+
children: "What would you like to hear about?"
|
|
43384
|
+
}), display.choices.map((choice) => /* @__PURE__ */ jsxs("label", {
|
|
43385
|
+
className: "fb-inline form-label newsletter-topic-choice",
|
|
43007
43386
|
children: [/* @__PURE__ */ jsx("input", {
|
|
43008
43387
|
type: "checkbox",
|
|
43009
43388
|
name: "mailingListChoice",
|
|
43010
|
-
value: choice.id
|
|
43011
|
-
|
|
43389
|
+
value: choice.id,
|
|
43390
|
+
className: "form-checkbox"
|
|
43391
|
+
}), /* @__PURE__ */ jsx("span", { children: choice.label })]
|
|
43012
43392
|
}, choice.id))]
|
|
43013
43393
|
}) : null,
|
|
43014
43394
|
/* @__PURE__ */ jsx("div", {
|
|
@@ -43997,6 +44377,18 @@ function resolveChildren(nodes, context) {
|
|
|
43997
44377
|
function isReactNode(value) {
|
|
43998
44378
|
return value !== null && value !== void 0;
|
|
43999
44379
|
}
|
|
44380
|
+
function resolveNodeMetadata(nodeType, context) {
|
|
44381
|
+
return {
|
|
44382
|
+
pathBase: context.pathBase,
|
|
44383
|
+
blockId: context.blockId,
|
|
44384
|
+
blockKind: context.blockKind,
|
|
44385
|
+
blockContent: context.blockContent,
|
|
44386
|
+
fragmentRegistry: context.fragmentRegistry,
|
|
44387
|
+
previewAuthoring: context.previewAuthoring,
|
|
44388
|
+
...nodeType.toLowerCase() === "newsletter-form" ? { contentVersionId: context.contentVersionId } : {},
|
|
44389
|
+
...nodeType === "media" && context.imageResolveContext ? { imageResolveContext: context.imageResolveContext } : {}
|
|
44390
|
+
};
|
|
44391
|
+
}
|
|
44000
44392
|
/**
|
|
44001
44393
|
* Resolves a node definition into a React element.
|
|
44002
44394
|
* Handles conditionals ($when), scopes ($scopes), repeaters ($repeat), bindings ($bind), and children.
|
|
@@ -44032,13 +44424,7 @@ function resolveNode(node, context, indexFallback) {
|
|
|
44032
44424
|
const elementProps = {
|
|
44033
44425
|
...props,
|
|
44034
44426
|
key: node.key ?? indexFallback,
|
|
44035
|
-
|
|
44036
|
-
blockId: context.blockId,
|
|
44037
|
-
blockKind: context.blockKind,
|
|
44038
|
-
blockContent: context.blockContent,
|
|
44039
|
-
...node.type === "media" && context.imageResolveContext ? { imageResolveContext: context.imageResolveContext } : {},
|
|
44040
|
-
fragmentRegistry: context.fragmentRegistry,
|
|
44041
|
-
previewAuthoring: context.previewAuthoring
|
|
44427
|
+
...resolveNodeMetadata(node.type, context)
|
|
44042
44428
|
};
|
|
44043
44429
|
const element = React.createElement(component, elementProps, ...children);
|
|
44044
44430
|
if (headingDecorationPlan.kind === "skip") return element;
|
|
@@ -44913,9 +45299,56 @@ function generateNavLinkCSS(options) {
|
|
|
44913
45299
|
if (baseRules.length > 0) cssChunks.unshift(`\n${selector} {\n ${baseRules.join("\n ")}\n}\n`);
|
|
44914
45300
|
if (hoverRules.length > 0) cssChunks.push(`\n${hoverSelector} {\n ${hoverRules.join("\n ")}\n}\n`);
|
|
44915
45301
|
if (activeRules.length > 0) cssChunks.push(`\n${activeSelector} {\n ${activeRules.join("\n ")}\n}\n`);
|
|
45302
|
+
cssChunks.push(navLinkFocusVisibleCss(selector, style, theme, tokens));
|
|
44916
45303
|
cssChunks.push(generateInteractiveChildInheritanceCSS(selector));
|
|
44917
45304
|
return cssChunks.join("");
|
|
44918
45305
|
}
|
|
45306
|
+
/**
|
|
45307
|
+
* Keyboard focus indicator for nav links, in the header, the footer and header
|
|
45308
|
+
* dropdown menus — the three surfaces `generateNavLinkCSS` serves.
|
|
45309
|
+
*
|
|
45310
|
+
* Emitted unconditionally rather than as an effect, because focus visibility is
|
|
45311
|
+
* a floor rather than a style choice. Only the interaction-palette pill ever
|
|
45312
|
+
* wrote an `effects.focus` group, so every other nav — every `quiet` palette,
|
|
45313
|
+
* every footer, every dropdown — previously fell back to whatever outline the
|
|
45314
|
+
* browser drew.
|
|
45315
|
+
*
|
|
45316
|
+
* The outline takes the link's own resolved colour, so on a header that adapts
|
|
45317
|
+
* to the section it floats over it moves with the adaptation instead of
|
|
45318
|
+
* asserting a brand colour against an unknown backdrop.
|
|
45319
|
+
*
|
|
45320
|
+
* Where the style asks for `soft-glow`, the same halo goes on the outline. That
|
|
45321
|
+
* treatment exists because the theme has already conceded the resolved colour
|
|
45322
|
+
* alone is not reliable over an unpredictable backdrop — a hero photograph with
|
|
45323
|
+
* mixed luminance. Without it the text would stay legible by its halo while the
|
|
45324
|
+
* focus ring, which is the part with a contrast requirement of its own, would
|
|
45325
|
+
* not.
|
|
45326
|
+
*
|
|
45327
|
+
* A style that also paints a focus pill keeps it: this adds an outline around
|
|
45328
|
+
* that pill rather than replacing it.
|
|
45329
|
+
*/
|
|
45330
|
+
function navLinkFocusVisibleCss(selector, style, theme, tokens) {
|
|
45331
|
+
const color = tokens.getColor(style.colorToken);
|
|
45332
|
+
const halo = buildTextContrastShadow({
|
|
45333
|
+
theme,
|
|
45334
|
+
colorToken: style.colorToken,
|
|
45335
|
+
treatment: style.contrastTreatment
|
|
45336
|
+
});
|
|
45337
|
+
return `
|
|
45338
|
+
${selector}:focus-visible {
|
|
45339
|
+
outline: 2px solid ${color};
|
|
45340
|
+
outline-offset: ${focusOutlineOffset(selector)};${halo ? `\n box-shadow: ${halo};` : ""}
|
|
45341
|
+
}
|
|
45342
|
+
`;
|
|
45343
|
+
}
|
|
45344
|
+
/**
|
|
45345
|
+
* Dropdown items are full-width inside a panel with no horizontal padding, so
|
|
45346
|
+
* an outset outline would paint over and past the panel's own border. Keeping
|
|
45347
|
+
* it flush is the only way it reads as belonging to the item.
|
|
45348
|
+
*/
|
|
45349
|
+
function focusOutlineOffset(selector) {
|
|
45350
|
+
return selector.includes("nav-dropdown-link") ? "-2px" : "3px";
|
|
45351
|
+
}
|
|
44919
45352
|
function buildTextContrastShadow(input) {
|
|
44920
45353
|
if (input.treatment !== "soft-glow") return null;
|
|
44921
45354
|
return isLikelyLightColorToken(input.theme, input.colorToken) ? "0 1px 3px rgb(0 0 0 / 0.55), 0 0 18px rgb(0 0 0 / 0.38)" : "0 1px 3px rgb(255 255 255 / 0.72), 0 0 18px rgb(255 255 255 / 0.5)";
|
|
@@ -48048,7 +48481,7 @@ function pageBlockPosition(index, blockCount) {
|
|
|
48048
48481
|
//#endregion
|
|
48049
48482
|
//#region ../blocks/src/pageRendererContracts.ts
|
|
48050
48483
|
function buildPageRendererRootRuntime(dataContext) {
|
|
48051
|
-
const { siteId = null, pageId = null, pathname = null, bookingTimeZone, previewStage = "published", apiBaseUrl = null, portalToken = null, bookingOfferingPresets = [], mailingList = { tag: "not_configured" }, eventRegistrationOverlayEnabled = false } = dataContext ?? {};
|
|
48484
|
+
const { siteId = null, pageId = null, pathname = null, bookingTimeZone, previewStage = "published", apiBaseUrl = null, portalToken = null, bookingOfferingPresets = [], appointmentServicePathPrefix = null, mailingList = { tag: "not_configured" }, eventRegistrationOverlayEnabled = false, loaderFailures = {} } = dataContext ?? {};
|
|
48052
48485
|
return {
|
|
48053
48486
|
siteId,
|
|
48054
48487
|
pageId,
|
|
@@ -48058,8 +48491,10 @@ function buildPageRendererRootRuntime(dataContext) {
|
|
|
48058
48491
|
apiBaseUrl,
|
|
48059
48492
|
portalToken,
|
|
48060
48493
|
bookingOfferingPresets,
|
|
48494
|
+
appointmentServicePathPrefix,
|
|
48061
48495
|
mailingList,
|
|
48062
|
-
eventRegistrationOverlayEnabled
|
|
48496
|
+
eventRegistrationOverlayEnabled,
|
|
48497
|
+
loaderFailures
|
|
48063
48498
|
};
|
|
48064
48499
|
}
|
|
48065
48500
|
//#endregion
|
|
@@ -52799,7 +53234,8 @@ const appointmentServicesBlockDefinition = {
|
|
|
52799
53234
|
el("appointment-services", {
|
|
52800
53235
|
sectionHeading: { $bind: { from: "content.heading" } },
|
|
52801
53236
|
services: { $bind: { from: "data.services" } },
|
|
52802
|
-
pathname: { $bind: { from: "$root.pathname" } }
|
|
53237
|
+
pathname: { $bind: { from: "$root.pathname" } },
|
|
53238
|
+
servicePathPrefix: { $bind: { from: "$root.appointmentServicePathPrefix" } }
|
|
52803
53239
|
})
|
|
52804
53240
|
], { gap: "lg" })
|
|
52805
53241
|
})]
|
|
@@ -57106,7 +57542,7 @@ function collectNestedPreviewFieldConstraintEntries(field, path) {
|
|
|
57106
57542
|
}
|
|
57107
57543
|
function makeDefaultBlockComponent(args) {
|
|
57108
57544
|
const { manifest } = args;
|
|
57109
|
-
return function DefaultBlockComponent({ content, data, registry, theme, themeConfig, transforms, viewModelOverrides, pathBase, blockId, blockKind, blockBindings, editableRouteMetadataFieldIds, fragmentRegistry, imageResolveContext, previewAuthoring }) {
|
|
57545
|
+
return function DefaultBlockComponent({ content, data, registry, theme, themeConfig, transforms, viewModelOverrides, pathBase, blockId, contentVersionId, blockKind, blockBindings, editableRouteMetadataFieldIds, fragmentRegistry, imageResolveContext, previewAuthoring }) {
|
|
57110
57546
|
const perf = beginBlockRenderMeasurement();
|
|
57111
57547
|
if (!theme) throw new Error("Block rendering requires theme tokens; none were provided to makeDefaultBlockComponent");
|
|
57112
57548
|
if (!registry) throw new Error("Block rendering requires a component registry; none was provided");
|
|
@@ -57126,6 +57562,7 @@ function makeDefaultBlockComponent(args) {
|
|
|
57126
57562
|
theme: withButtonSystem(theme, themeConfig),
|
|
57127
57563
|
pathBase,
|
|
57128
57564
|
blockId,
|
|
57565
|
+
contentVersionId,
|
|
57129
57566
|
blockKind,
|
|
57130
57567
|
blockContent: mergedContent,
|
|
57131
57568
|
blockBindings,
|
|
@@ -57919,6 +58356,7 @@ function buildBlockOverrideProps(input) {
|
|
|
57919
58356
|
...blockSubjectProps(dataContext),
|
|
57920
58357
|
imageResolveContext: input.imageResolveContext,
|
|
57921
58358
|
blockId: block.id ?? null,
|
|
58359
|
+
contentVersionId: block.contentVersionId ?? null,
|
|
57922
58360
|
blockKind: block.kind
|
|
57923
58361
|
};
|
|
57924
58362
|
}
|
|
@@ -58019,6 +58457,7 @@ function toPresentationPage(page) {
|
|
|
58019
58457
|
id: block.id,
|
|
58020
58458
|
kind: block.kind,
|
|
58021
58459
|
purpose: block.purpose,
|
|
58460
|
+
...block.contentVersionId ? { contentVersionId: block.contentVersionId } : {},
|
|
58022
58461
|
...block.bindings ? { bindings: block.bindings } : {}
|
|
58023
58462
|
};
|
|
58024
58463
|
return block.admission.kind === "renderable" ? {
|
|
@@ -59249,10 +59688,19 @@ const containerResponsiveThemeCss = `/*
|
|
|
59249
59688
|
padding-top: 2.5rem;
|
|
59250
59689
|
padding-bottom: 2.5rem;
|
|
59251
59690
|
}
|
|
59691
|
+
/* Clearance for a surface that is not an authored block page.
|
|
59692
|
+
An authored page gets this through its opening block's container (see the
|
|
59693
|
+
overlay-clearance rule in styles.css). A reserved surface or a system
|
|
59694
|
+
destination page has no such block, so it consumes the same variable here.
|
|
59695
|
+
Marked with one class rather than per-surface selectors, because the last
|
|
59696
|
+
two additions to this family were both missed and shipped overlapping. */
|
|
59252
59697
|
:where(.theme-scope)
|
|
59253
59698
|
[data-site-document-layout-mode="header-overlay"]
|
|
59254
|
-
|
|
59255
|
-
padding-top: calc(
|
|
59699
|
+
.rb-overlay-clearance-surface {
|
|
59700
|
+
padding-top: calc(
|
|
59701
|
+
var(--site-overlay-header-clearance, 5.5rem) +
|
|
59702
|
+
var(--site-overlay-opening-content-extra-pad, clamp(1rem, 2vw, 1.75rem))
|
|
59703
|
+
);
|
|
59256
59704
|
}
|
|
59257
59705
|
.rb-preview-editor-offset {
|
|
59258
59706
|
padding-bottom: calc(
|
|
@@ -68254,7 +68702,9 @@ const containerResponsiveThemeCss = `/*
|
|
|
68254
68702
|
text-align: left;
|
|
68255
68703
|
}
|
|
68256
68704
|
|
|
68257
|
-
:where(.theme-scope)
|
|
68705
|
+
:where(.theme-scope)
|
|
68706
|
+
:where([data-block="customer-portal"])
|
|
68707
|
+
.cp-login__subtitle {
|
|
68258
68708
|
color: var(--cp-muted);
|
|
68259
68709
|
font-size: 0.9375rem;
|
|
68260
68710
|
text-align: left;
|
|
@@ -68281,7 +68731,9 @@ const containerResponsiveThemeCss = `/*
|
|
|
68281
68731
|
text-align: left;
|
|
68282
68732
|
}
|
|
68283
68733
|
|
|
68284
|
-
:where(.theme-scope)
|
|
68734
|
+
:where(.theme-scope)
|
|
68735
|
+
:where([data-block="customer-portal"])
|
|
68736
|
+
.cp-login__reset-link {
|
|
68285
68737
|
appearance: none;
|
|
68286
68738
|
background: none;
|
|
68287
68739
|
border: 0;
|
|
@@ -68295,11 +68747,15 @@ const containerResponsiveThemeCss = `/*
|
|
|
68295
68747
|
text-underline-offset: 0.15em;
|
|
68296
68748
|
}
|
|
68297
68749
|
|
|
68298
|
-
:where(.theme-scope)
|
|
68750
|
+
:where(.theme-scope)
|
|
68751
|
+
:where([data-block="customer-portal"])
|
|
68752
|
+
.cp-login__reset-link:hover {
|
|
68299
68753
|
color: var(--cp-text);
|
|
68300
68754
|
}
|
|
68301
68755
|
|
|
68302
|
-
:where(.theme-scope)
|
|
68756
|
+
:where(.theme-scope)
|
|
68757
|
+
:where([data-block="customer-portal"])
|
|
68758
|
+
.cp-login__reset-link:focus-visible {
|
|
68303
68759
|
outline: 2px solid currentColor;
|
|
68304
68760
|
outline-offset: 3px;
|
|
68305
68761
|
}
|
|
@@ -68344,7 +68800,9 @@ const containerResponsiveThemeCss = `/*
|
|
|
68344
68800
|
border-bottom: none;
|
|
68345
68801
|
}
|
|
68346
68802
|
|
|
68347
|
-
:where(.theme-scope)
|
|
68803
|
+
:where(.theme-scope)
|
|
68804
|
+
:where([data-block="customer-portal"])
|
|
68805
|
+
.cp-header__welcome {
|
|
68348
68806
|
font-size: 1.125rem;
|
|
68349
68807
|
font-weight: 500;
|
|
68350
68808
|
}
|
|
@@ -68360,8 +68818,14 @@ const containerResponsiveThemeCss = `/*
|
|
|
68360
68818
|
}
|
|
68361
68819
|
|
|
68362
68820
|
@keyframes cp-fade-in {
|
|
68363
|
-
from {
|
|
68364
|
-
|
|
68821
|
+
from {
|
|
68822
|
+
opacity: 0;
|
|
68823
|
+
transform: translateY(4px);
|
|
68824
|
+
}
|
|
68825
|
+
to {
|
|
68826
|
+
opacity: 1;
|
|
68827
|
+
transform: translateY(0);
|
|
68828
|
+
}
|
|
68365
68829
|
}
|
|
68366
68830
|
|
|
68367
68831
|
/* Empty state */
|
|
@@ -68450,6 +68914,77 @@ const containerResponsiveThemeCss = `/*
|
|
|
68450
68914
|
margin-top: 1rem;
|
|
68451
68915
|
}
|
|
68452
68916
|
|
|
68917
|
+
/* Event waitlists */
|
|
68918
|
+
:where(.theme-scope) :where([data-block="customer-portal"]) .cp-waitlist-list {
|
|
68919
|
+
display: grid;
|
|
68920
|
+
gap: 1rem;
|
|
68921
|
+
}
|
|
68922
|
+
|
|
68923
|
+
:where(.theme-scope)
|
|
68924
|
+
:where([data-block="customer-portal"])
|
|
68925
|
+
.cp-waitlists
|
|
68926
|
+
> .cp-alert {
|
|
68927
|
+
margin-bottom: 1rem;
|
|
68928
|
+
}
|
|
68929
|
+
|
|
68930
|
+
:where(.theme-scope) :where([data-block="customer-portal"]) .cp-waitlist-card {
|
|
68931
|
+
transition:
|
|
68932
|
+
border-color 180ms ease,
|
|
68933
|
+
box-shadow 180ms ease;
|
|
68934
|
+
}
|
|
68935
|
+
|
|
68936
|
+
:where(.theme-scope)
|
|
68937
|
+
:where([data-block="customer-portal"])
|
|
68938
|
+
.cp-waitlist-card--focused {
|
|
68939
|
+
border-color: var(--cp-primary);
|
|
68940
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, var(--cp-primary) 22%, transparent);
|
|
68941
|
+
}
|
|
68942
|
+
|
|
68943
|
+
:where(.theme-scope)
|
|
68944
|
+
:where([data-block="customer-portal"])
|
|
68945
|
+
.cp-waitlist-card__summary,
|
|
68946
|
+
:where(.theme-scope)
|
|
68947
|
+
:where([data-block="customer-portal"])
|
|
68948
|
+
.cp-waitlist-card__position {
|
|
68949
|
+
font-weight: 600;
|
|
68950
|
+
}
|
|
68951
|
+
|
|
68952
|
+
:where(.theme-scope)
|
|
68953
|
+
:where([data-block="customer-portal"])
|
|
68954
|
+
.cp-waitlist-card
|
|
68955
|
+
.cp-card-body
|
|
68956
|
+
p {
|
|
68957
|
+
margin: 0.4rem 0;
|
|
68958
|
+
}
|
|
68959
|
+
|
|
68960
|
+
@container rb-site (max-width: 640px) {
|
|
68961
|
+
@scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
|
|
68962
|
+
:where(.theme-scope)
|
|
68963
|
+
:where([data-block="customer-portal"])
|
|
68964
|
+
.cp-waitlist-card
|
|
68965
|
+
.cp-card-header {
|
|
68966
|
+
flex-direction: column-reverse;
|
|
68967
|
+
}
|
|
68968
|
+
|
|
68969
|
+
:where(.theme-scope)
|
|
68970
|
+
:where([data-block="customer-portal"])
|
|
68971
|
+
.cp-waitlist-card
|
|
68972
|
+
.cp-card-actions {
|
|
68973
|
+
align-items: stretch;
|
|
68974
|
+
flex-direction: column;
|
|
68975
|
+
}
|
|
68976
|
+
|
|
68977
|
+
:where(.theme-scope)
|
|
68978
|
+
:where([data-block="customer-portal"])
|
|
68979
|
+
.cp-waitlist-card
|
|
68980
|
+
.cp-card-actions
|
|
68981
|
+
> * {
|
|
68982
|
+
justify-content: center;
|
|
68983
|
+
text-align: center;
|
|
68984
|
+
}
|
|
68985
|
+
}
|
|
68986
|
+
}
|
|
68987
|
+
|
|
68453
68988
|
/* Badge */
|
|
68454
68989
|
:where(.theme-scope) :where([data-block="customer-portal"]) .cp-badge {
|
|
68455
68990
|
display: inline-flex;
|
|
@@ -68586,11 +69121,18 @@ const containerResponsiveThemeCss = `/*
|
|
|
68586
69121
|
background: rgba(var(--tb-border), 0.2);
|
|
68587
69122
|
}
|
|
68588
69123
|
|
|
68589
|
-
:where(.theme-scope)
|
|
69124
|
+
:where(.theme-scope)
|
|
69125
|
+
:where([data-block="customer-portal"])
|
|
69126
|
+
.cp-table
|
|
69127
|
+
tbody
|
|
69128
|
+
tr:last-child
|
|
69129
|
+
td {
|
|
68590
69130
|
border-bottom: none;
|
|
68591
69131
|
}
|
|
68592
69132
|
|
|
68593
|
-
:where(.theme-scope)
|
|
69133
|
+
:where(.theme-scope)
|
|
69134
|
+
:where([data-block="customer-portal"])
|
|
69135
|
+
:is(.cp-row--past, .cp-row--muted) {
|
|
68594
69136
|
opacity: 0.65;
|
|
68595
69137
|
}
|
|
68596
69138
|
|
|
@@ -68603,7 +69145,9 @@ const containerResponsiveThemeCss = `/*
|
|
|
68603
69145
|
line-height: 1.2;
|
|
68604
69146
|
}
|
|
68605
69147
|
|
|
68606
|
-
:where(.theme-scope)
|
|
69148
|
+
:where(.theme-scope)
|
|
69149
|
+
:where([data-block="customer-portal"])
|
|
69150
|
+
.cp-row-title__badges {
|
|
68607
69151
|
margin-left: auto;
|
|
68608
69152
|
display: flex;
|
|
68609
69153
|
flex-wrap: wrap;
|
|
@@ -68611,7 +69155,9 @@ const containerResponsiveThemeCss = `/*
|
|
|
68611
69155
|
gap: 0.375rem;
|
|
68612
69156
|
}
|
|
68613
69157
|
|
|
68614
|
-
:where(.theme-scope)
|
|
69158
|
+
:where(.theme-scope)
|
|
69159
|
+
:where([data-block="customer-portal"])
|
|
69160
|
+
.cp-row-title__text {
|
|
68615
69161
|
min-width: 0;
|
|
68616
69162
|
}
|
|
68617
69163
|
|
|
@@ -68631,12 +69177,16 @@ const containerResponsiveThemeCss = `/*
|
|
|
68631
69177
|
line-height: 1.35;
|
|
68632
69178
|
}
|
|
68633
69179
|
|
|
68634
|
-
:where(.theme-scope)
|
|
69180
|
+
:where(.theme-scope)
|
|
69181
|
+
:where([data-block="customer-portal"])
|
|
69182
|
+
.cp-row-note--success {
|
|
68635
69183
|
border-left-color: rgb(var(--tb-success));
|
|
68636
69184
|
color: rgb(var(--tb-success));
|
|
68637
69185
|
}
|
|
68638
69186
|
|
|
68639
|
-
:where(.theme-scope)
|
|
69187
|
+
:where(.theme-scope)
|
|
69188
|
+
:where([data-block="customer-portal"])
|
|
69189
|
+
.cp-row-note--error {
|
|
68640
69190
|
border-left-color: rgb(var(--tb-destructive));
|
|
68641
69191
|
color: rgb(var(--tb-destructive));
|
|
68642
69192
|
}
|
|
@@ -68655,16 +69205,23 @@ const containerResponsiveThemeCss = `/*
|
|
|
68655
69205
|
white-space: nowrap;
|
|
68656
69206
|
}
|
|
68657
69207
|
|
|
68658
|
-
:where(.theme-scope)
|
|
69208
|
+
:where(.theme-scope)
|
|
69209
|
+
:where([data-block="customer-portal"])
|
|
69210
|
+
.cp-col-actions
|
|
69211
|
+
.btn-sm {
|
|
68659
69212
|
white-space: nowrap;
|
|
68660
69213
|
}
|
|
68661
69214
|
|
|
68662
|
-
:where(.theme-scope)
|
|
69215
|
+
:where(.theme-scope)
|
|
69216
|
+
:where([data-block="customer-portal"])
|
|
69217
|
+
.cp-row-title__link {
|
|
68663
69218
|
color: inherit;
|
|
68664
69219
|
text-decoration: none;
|
|
68665
69220
|
}
|
|
68666
69221
|
|
|
68667
|
-
:where(.theme-scope)
|
|
69222
|
+
:where(.theme-scope)
|
|
69223
|
+
:where([data-block="customer-portal"])
|
|
69224
|
+
.cp-row-title__link:hover {
|
|
68668
69225
|
text-decoration: underline;
|
|
68669
69226
|
text-decoration-thickness: 2px;
|
|
68670
69227
|
text-underline-offset: 2px;
|
|
@@ -68686,7 +69243,9 @@ const containerResponsiveThemeCss = `/*
|
|
|
68686
69243
|
}
|
|
68687
69244
|
|
|
68688
69245
|
/* Profile actions */
|
|
68689
|
-
:where(.theme-scope)
|
|
69246
|
+
:where(.theme-scope)
|
|
69247
|
+
:where([data-block="customer-portal"])
|
|
69248
|
+
.cp-profile__actions {
|
|
68690
69249
|
display: flex;
|
|
68691
69250
|
gap: 0.75rem;
|
|
68692
69251
|
margin-top: 1rem;
|
|
@@ -68753,28 +69312,39 @@ const containerResponsiveThemeCss = `/*
|
|
|
68753
69312
|
gap: 0.375rem;
|
|
68754
69313
|
}
|
|
68755
69314
|
|
|
68756
|
-
:where(.theme-scope)
|
|
69315
|
+
:where(.theme-scope)
|
|
69316
|
+
:where([data-block="customer-portal"])
|
|
69317
|
+
.cp-guest-edit-row__index {
|
|
68757
69318
|
font-size: 0.75rem;
|
|
68758
69319
|
font-weight: 500;
|
|
68759
69320
|
color: var(--cp-muted);
|
|
68760
69321
|
}
|
|
68761
69322
|
|
|
68762
|
-
:where(.theme-scope)
|
|
69323
|
+
:where(.theme-scope)
|
|
69324
|
+
:where([data-block="customer-portal"])
|
|
69325
|
+
.cp-guest-edit-row__fields {
|
|
68763
69326
|
display: flex;
|
|
68764
69327
|
gap: 0.5rem;
|
|
68765
69328
|
}
|
|
68766
69329
|
|
|
68767
|
-
:where(.theme-scope)
|
|
69330
|
+
:where(.theme-scope)
|
|
69331
|
+
:where([data-block="customer-portal"])
|
|
69332
|
+
.cp-guest-edit-row__fields
|
|
69333
|
+
input {
|
|
68768
69334
|
flex: 1;
|
|
68769
69335
|
min-width: 0;
|
|
68770
69336
|
}
|
|
68771
69337
|
|
|
68772
|
-
:where(.theme-scope)
|
|
69338
|
+
:where(.theme-scope)
|
|
69339
|
+
:where([data-block="customer-portal"])
|
|
69340
|
+
.cp-guest-edit-row__error {
|
|
68773
69341
|
font-size: 0.75rem;
|
|
68774
69342
|
color: var(--cp-error);
|
|
68775
69343
|
}
|
|
68776
69344
|
|
|
68777
|
-
:where(.theme-scope)
|
|
69345
|
+
:where(.theme-scope)
|
|
69346
|
+
:where([data-block="customer-portal"])
|
|
69347
|
+
.cp-guests__actions {
|
|
68778
69348
|
display: flex;
|
|
68779
69349
|
gap: 0.5rem;
|
|
68780
69350
|
margin-top: 0.5rem;
|
|
@@ -68788,13 +69358,18 @@ const containerResponsiveThemeCss = `/*
|
|
|
68788
69358
|
}
|
|
68789
69359
|
|
|
68790
69360
|
/* In the actions modal, tiles sit on a surface modal, so use "background" for contrast. */
|
|
68791
|
-
:where(.theme-scope)
|
|
69361
|
+
:where(.theme-scope)
|
|
69362
|
+
:where([data-block="customer-portal"])
|
|
69363
|
+
.cp-actions-list
|
|
69364
|
+
:where(.rb-tile) {
|
|
68792
69365
|
--rb-event-tile-bg: rgb(var(--tb-background));
|
|
68793
69366
|
--rb-event-tile-border: rgb(var(--tb-border));
|
|
68794
69367
|
}
|
|
68795
69368
|
|
|
68796
69369
|
/* Actions trigger: icon-only kebab button */
|
|
68797
|
-
:where(.theme-scope)
|
|
69370
|
+
:where(.theme-scope)
|
|
69371
|
+
:where([data-block="customer-portal"])
|
|
69372
|
+
.cp-actions-trigger.btn-sm {
|
|
68798
69373
|
padding: 0.35rem !important;
|
|
68799
69374
|
line-height: 1 !important;
|
|
68800
69375
|
min-width: 32px;
|
|
@@ -68818,17 +69393,24 @@ const containerResponsiveThemeCss = `/*
|
|
|
68818
69393
|
gap: 0.25rem;
|
|
68819
69394
|
}
|
|
68820
69395
|
|
|
68821
|
-
:where(.theme-scope)
|
|
69396
|
+
:where(.theme-scope)
|
|
69397
|
+
:where([data-block="customer-portal"])
|
|
69398
|
+
.cp-action-tile__title {
|
|
68822
69399
|
font-weight: 600;
|
|
68823
69400
|
font-size: 0.9375rem;
|
|
68824
69401
|
}
|
|
68825
69402
|
|
|
68826
|
-
:where(.theme-scope)
|
|
69403
|
+
:where(.theme-scope)
|
|
69404
|
+
:where([data-block="customer-portal"])
|
|
69405
|
+
.cp-action-tile__desc {
|
|
68827
69406
|
font-size: 0.875rem;
|
|
68828
69407
|
line-height: 1.35;
|
|
68829
69408
|
}
|
|
68830
69409
|
|
|
68831
|
-
:where(.theme-scope)
|
|
69410
|
+
:where(.theme-scope)
|
|
69411
|
+
:where([data-block="customer-portal"])
|
|
69412
|
+
.cp-action-tile--danger
|
|
69413
|
+
.cp-action-tile__title {
|
|
68832
69414
|
color: rgb(var(--tb-destructive));
|
|
68833
69415
|
}
|
|
68834
69416
|
|
|
@@ -68850,7 +69432,9 @@ const containerResponsiveThemeCss = `/*
|
|
|
68850
69432
|
text-decoration: underline;
|
|
68851
69433
|
}
|
|
68852
69434
|
|
|
68853
|
-
:where(.theme-scope)
|
|
69435
|
+
:where(.theme-scope)
|
|
69436
|
+
:where([data-block="customer-portal"])
|
|
69437
|
+
.cp-btn--link:hover {
|
|
68854
69438
|
color: var(--cp-primary-hover);
|
|
68855
69439
|
}
|
|
68856
69440
|
|
|
@@ -68889,34 +69473,48 @@ const containerResponsiveThemeCss = `/*
|
|
|
68889
69473
|
margin-top: 0.75rem;
|
|
68890
69474
|
}
|
|
68891
69475
|
|
|
68892
|
-
:where(.theme-scope)
|
|
69476
|
+
:where(.theme-scope)
|
|
69477
|
+
:where([data-block="customer-portal"])
|
|
69478
|
+
.cp-cancel-confirm__title {
|
|
68893
69479
|
font-weight: 600;
|
|
68894
69480
|
margin-bottom: 0.5rem;
|
|
68895
69481
|
}
|
|
68896
69482
|
|
|
68897
|
-
:where(.theme-scope)
|
|
69483
|
+
:where(.theme-scope)
|
|
69484
|
+
:where([data-block="customer-portal"])
|
|
69485
|
+
.cp-cancel-confirm__message {
|
|
68898
69486
|
margin-bottom: 0.25rem;
|
|
68899
69487
|
}
|
|
68900
69488
|
|
|
68901
|
-
:where(.theme-scope)
|
|
69489
|
+
:where(.theme-scope)
|
|
69490
|
+
:where([data-block="customer-portal"])
|
|
69491
|
+
.cp-cancel-confirm__warning {
|
|
68902
69492
|
margin-bottom: 0.75rem;
|
|
68903
69493
|
}
|
|
68904
69494
|
|
|
68905
|
-
:where(.theme-scope)
|
|
69495
|
+
:where(.theme-scope)
|
|
69496
|
+
:where([data-block="customer-portal"])
|
|
69497
|
+
.cp-cancel-confirm__actions {
|
|
68906
69498
|
display: flex;
|
|
68907
69499
|
gap: 0.75rem;
|
|
68908
69500
|
}
|
|
68909
69501
|
|
|
68910
69502
|
/* Membership actions */
|
|
68911
|
-
:where(.theme-scope)
|
|
69503
|
+
:where(.theme-scope)
|
|
69504
|
+
:where([data-block="customer-portal"])
|
|
69505
|
+
.cp-membership-actions {
|
|
68912
69506
|
margin-top: 0.75rem;
|
|
68913
69507
|
}
|
|
68914
69508
|
|
|
68915
|
-
:where(.theme-scope)
|
|
69509
|
+
:where(.theme-scope)
|
|
69510
|
+
:where([data-block="customer-portal"])
|
|
69511
|
+
.cp-section-actions {
|
|
68916
69512
|
margin-top: 1rem;
|
|
68917
69513
|
}
|
|
68918
69514
|
|
|
68919
|
-
:where(.theme-scope)
|
|
69515
|
+
:where(.theme-scope)
|
|
69516
|
+
:where([data-block="customer-portal"])
|
|
69517
|
+
.cp-card-subtitle--spaced {
|
|
68920
69518
|
margin-top: 0.75rem;
|
|
68921
69519
|
}
|
|
68922
69520
|
|
|
@@ -68940,9 +69538,18 @@ const containerResponsiveThemeCss = `/*
|
|
|
68940
69538
|
display: none;
|
|
68941
69539
|
}
|
|
68942
69540
|
|
|
68943
|
-
:where(.theme-scope)
|
|
68944
|
-
|
|
68945
|
-
|
|
69541
|
+
:where(.theme-scope)
|
|
69542
|
+
:where([data-block="customer-portal"])
|
|
69543
|
+
.cp-table
|
|
69544
|
+
:is(th, td).cp-col-guests,
|
|
69545
|
+
:where(.theme-scope)
|
|
69546
|
+
:where([data-block="customer-portal"])
|
|
69547
|
+
.cp-table
|
|
69548
|
+
:is(th, td).cp-col-tickets,
|
|
69549
|
+
:where(.theme-scope)
|
|
69550
|
+
:where([data-block="customer-portal"])
|
|
69551
|
+
.cp-table
|
|
69552
|
+
:is(th, td).cp-col-actions {
|
|
68946
69553
|
display: none;
|
|
68947
69554
|
}
|
|
68948
69555
|
|
|
@@ -68951,24 +69558,34 @@ const containerResponsiveThemeCss = `/*
|
|
|
68951
69558
|
}
|
|
68952
69559
|
|
|
68953
69560
|
/* Make the cell a positioning context for the kebab */
|
|
68954
|
-
:where(.theme-scope)
|
|
69561
|
+
:where(.theme-scope)
|
|
69562
|
+
:where([data-block="customer-portal"])
|
|
69563
|
+
.cp-row
|
|
69564
|
+
> td:first-child {
|
|
68955
69565
|
position: relative;
|
|
68956
69566
|
padding-right: 2.5rem;
|
|
68957
69567
|
}
|
|
68958
69568
|
|
|
68959
69569
|
/* Position kebab in top-right of the cell */
|
|
68960
|
-
:where(.theme-scope)
|
|
69570
|
+
:where(.theme-scope)
|
|
69571
|
+
:where([data-block="customer-portal"])
|
|
69572
|
+
.cp-row-mobile-actions {
|
|
68961
69573
|
position: absolute;
|
|
68962
69574
|
top: 0.5rem;
|
|
68963
69575
|
right: 0.5rem;
|
|
68964
69576
|
margin-top: 0;
|
|
68965
69577
|
}
|
|
68966
69578
|
|
|
68967
|
-
:where(.theme-scope)
|
|
69579
|
+
:where(.theme-scope)
|
|
69580
|
+
:where([data-block="customer-portal"])
|
|
69581
|
+
.cp-row-mobile-actions
|
|
69582
|
+
.btn-sm {
|
|
68968
69583
|
width: auto;
|
|
68969
69584
|
}
|
|
68970
69585
|
|
|
68971
|
-
:where(.theme-scope)
|
|
69586
|
+
:where(.theme-scope)
|
|
69587
|
+
:where([data-block="customer-portal"])
|
|
69588
|
+
.cp-profile__edit {
|
|
68972
69589
|
align-self: stretch;
|
|
68973
69590
|
}
|
|
68974
69591
|
}
|
|
@@ -69416,6 +70033,47 @@ const containerResponsiveThemeCss = `/*
|
|
|
69416
70033
|
gap: 0.25rem;
|
|
69417
70034
|
}
|
|
69418
70035
|
|
|
70036
|
+
/* Topic choices (visitor picks what to hear about). Same treatment as the
|
|
70037
|
+
form block's .fb-fieldset / .fb-inline, defined here because the newsletter
|
|
70038
|
+
form also renders inside contact-newsletter and the site footer. */
|
|
70039
|
+
:where(.theme-scope) .newsletter-topics {
|
|
70040
|
+
display: flex;
|
|
70041
|
+
flex-direction: column;
|
|
70042
|
+
gap: 0.5rem;
|
|
70043
|
+
border: none;
|
|
70044
|
+
padding: 0;
|
|
70045
|
+
margin: 0;
|
|
70046
|
+
min-width: 0;
|
|
70047
|
+
}
|
|
70048
|
+
|
|
70049
|
+
:where(.theme-scope) .newsletter-topics > legend {
|
|
70050
|
+
padding: 0;
|
|
70051
|
+
margin-bottom: 0.25rem;
|
|
70052
|
+
}
|
|
70053
|
+
|
|
70054
|
+
:where(.theme-scope) .newsletter-topic-choice {
|
|
70055
|
+
display: flex;
|
|
70056
|
+
align-items: center;
|
|
70057
|
+
gap: 0.5rem;
|
|
70058
|
+
}
|
|
70059
|
+
|
|
70060
|
+
/* Error panel and field notes. The form block scopes these to its own
|
|
70061
|
+
data-block, so the newsletter form (which also renders in the footer)
|
|
70062
|
+
needs its own copy of the treatment. */
|
|
70063
|
+
:where(.theme-scope) .newsletter-form .fb-error:not([data-field-validation-message]) {
|
|
70064
|
+
background-color: var(--fb-error-bg);
|
|
70065
|
+
color: var(--fb-error-text);
|
|
70066
|
+
border: 1px solid var(--fb-error-border);
|
|
70067
|
+
border-radius: var(--rb-block-radius);
|
|
70068
|
+
padding: 1rem;
|
|
70069
|
+
font-size: 0.875rem;
|
|
70070
|
+
}
|
|
70071
|
+
|
|
70072
|
+
:where(.theme-scope) .newsletter-form [data-field-validation-message] {
|
|
70073
|
+
font-size: 0.875rem;
|
|
70074
|
+
color: var(--fb-error-text);
|
|
70075
|
+
}
|
|
70076
|
+
|
|
69419
70077
|
/* Required indicator */
|
|
69420
70078
|
:where(.theme-scope) .newsletter-required {
|
|
69421
70079
|
color: rgb(var(--tb-primary));
|
|
@@ -69465,6 +70123,10 @@ const containerResponsiveThemeCss = `/*
|
|
|
69465
70123
|
flex-shrink: 0;
|
|
69466
70124
|
}
|
|
69467
70125
|
|
|
70126
|
+
:where(.theme-scope) .newsletter-inline .newsletter-topics {
|
|
70127
|
+
flex-basis: 100%;
|
|
70128
|
+
}
|
|
70129
|
+
|
|
69468
70130
|
/* Mobile fallback for inline variant */
|
|
69469
70131
|
@container rb-site (max-width: 640px) {
|
|
69470
70132
|
@scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
|
|
@@ -71780,6 +72442,15 @@ z$1.object({
|
|
|
71780
72442
|
}).optional(),
|
|
71781
72443
|
overrides: z$1.record(z$1.string(), z$1.string()).optional()
|
|
71782
72444
|
}).passthrough();
|
|
72445
|
+
z$1.object({
|
|
72446
|
+
palette: paletteColorsSchema,
|
|
72447
|
+
paletteMode: paletteModeSchema,
|
|
72448
|
+
typography: z$1.object({
|
|
72449
|
+
headingFamily: z$1.string().trim().min(1),
|
|
72450
|
+
bodyFamily: z$1.string().trim().min(1)
|
|
72451
|
+
}).strict(),
|
|
72452
|
+
corners
|
|
72453
|
+
}).strict();
|
|
71783
72454
|
//#endregion
|
|
71784
72455
|
//#region src/rendering/blocks-theme-runtime.ts
|
|
71785
72456
|
function parseBlocksTheme(theme) {
|
|
@@ -71962,7 +72633,7 @@ function PageContent(props) {
|
|
|
71962
72633
|
previewToken,
|
|
71963
72634
|
resolvedData,
|
|
71964
72635
|
bookingOfferingPresets: bookingOfferingPresets ?? [],
|
|
71965
|
-
mailingList,
|
|
72636
|
+
mailingList: mailingList ?? dataContext?.mailingList,
|
|
71966
72637
|
bookingTimeZone: resolveSdkBookingTimeZone(bookingTimeZone),
|
|
71967
72638
|
routes: routeMap,
|
|
71968
72639
|
pagesByIdentifier,
|
|
@@ -73813,9 +74484,11 @@ function convertPageResponseBlock(block) {
|
|
|
73813
74484
|
if (typeof block.id !== "string" && block.id !== null) throw new Error(`Invalid block id in page: expected string or null, got ${typeof block.id}`);
|
|
73814
74485
|
if (typeof block.kind !== "string") throw new Error(`Invalid block kind in page: expected string, got ${typeof block.kind}`);
|
|
73815
74486
|
if (typeof block.purpose !== "string") throw new Error(`Invalid block purpose in page: expected string, got ${typeof block.purpose}`);
|
|
74487
|
+
if (block.contentVersionId !== void 0 && block.contentVersionId !== null && typeof block.contentVersionId !== "string") throw new Error(`Invalid content version id in page: expected string or null, got ${typeof block.contentVersionId}`);
|
|
73816
74488
|
const admission = readInvalidBlockAdmission(block.admission);
|
|
73817
74489
|
return {
|
|
73818
74490
|
id: block.id,
|
|
74491
|
+
...block.contentVersionId !== void 0 ? { contentVersionId: block.contentVersionId } : {},
|
|
73819
74492
|
kind: block.kind,
|
|
73820
74493
|
purpose: block.purpose,
|
|
73821
74494
|
content: sanitizeSdkRuntimeBlockContent(block.kind, readContentRecord(block.content) ?? {}),
|
|
@@ -73846,6 +74519,7 @@ function buildRenderablePageOutline(input) {
|
|
|
73846
74519
|
function admitSdkRuntimePageBlock(block, customBlocks) {
|
|
73847
74520
|
const base = {
|
|
73848
74521
|
id: block.id,
|
|
74522
|
+
...block.contentVersionId !== void 0 ? { contentVersionId: block.contentVersionId } : {},
|
|
73849
74523
|
kind: block.kind,
|
|
73850
74524
|
purpose: block.purpose,
|
|
73851
74525
|
...block.bindings ? { bindings: block.bindings } : {}
|
|
@@ -75591,6 +76265,14 @@ const PUBLIC_BOOKING_AVAILABILITY_ENDPOINT_DEFINITIONS = defineEndpointDefinitio
|
|
|
75591
76265
|
auth: "public",
|
|
75592
76266
|
responseKind: "json"
|
|
75593
76267
|
},
|
|
76268
|
+
getPublicBookingServiceBySlug: {
|
|
76269
|
+
path: "/public/bookings/services/by-slug/{slug}",
|
|
76270
|
+
method: "GET",
|
|
76271
|
+
revalidate: publicReadFreshnessSeconds("getPublicBookingService"),
|
|
76272
|
+
tags: [TAG_TEMPLATES.publicBookingServices],
|
|
76273
|
+
auth: "public",
|
|
76274
|
+
responseKind: "json"
|
|
76275
|
+
},
|
|
75594
76276
|
getPublicBookingResourcesReference: {
|
|
75595
76277
|
path: "/public/bookings/resources/reference",
|
|
75596
76278
|
method: "GET",
|
|
@@ -76143,16 +76825,110 @@ const PUBLIC_READ_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
76143
76825
|
responseKind: "json"
|
|
76144
76826
|
}
|
|
76145
76827
|
});
|
|
76828
|
+
//#endregion
|
|
76829
|
+
//#region ../api/src/publicOnboardingAttemptEndpointDefinitions.ts
|
|
76830
|
+
/**
|
|
76831
|
+
* The anonymous onboarding attempt, addressed by its opaque resume token.
|
|
76832
|
+
*
|
|
76833
|
+
* Every route here is reached before there is an account, so none of them can
|
|
76834
|
+
* be scoped to a site or a user: the token is the whole credential. They are
|
|
76835
|
+
* kept together so that stays obvious.
|
|
76836
|
+
*/
|
|
76837
|
+
const PUBLIC_ONBOARDING_ATTEMPT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
76838
|
+
createPublicOnboardingAttempt: {
|
|
76839
|
+
path: "/public/onboarding/attempts",
|
|
76840
|
+
method: "POST",
|
|
76841
|
+
auth: "public",
|
|
76842
|
+
errors: [],
|
|
76843
|
+
responseKind: "json"
|
|
76844
|
+
},
|
|
76845
|
+
createPublicOnboardingLogoUploadUrl: {
|
|
76846
|
+
path: "/public/onboarding/attempts/{attemptToken}/logo-upload-url",
|
|
76847
|
+
method: "POST",
|
|
76848
|
+
auth: "public",
|
|
76849
|
+
errors: [],
|
|
76850
|
+
responseKind: "json"
|
|
76851
|
+
},
|
|
76852
|
+
uploadPublicOnboardingLogo: {
|
|
76853
|
+
path: "/public/onboarding/attempts/{attemptToken}/logo",
|
|
76854
|
+
method: "POST",
|
|
76855
|
+
auth: "public",
|
|
76856
|
+
errors: [],
|
|
76857
|
+
responseKind: "json"
|
|
76858
|
+
},
|
|
76859
|
+
getPublicOnboardingAttempt: {
|
|
76860
|
+
path: "/public/onboarding/attempts/{attemptToken}",
|
|
76861
|
+
method: "GET",
|
|
76862
|
+
auth: "public",
|
|
76863
|
+
errors: [],
|
|
76864
|
+
responseKind: "json"
|
|
76865
|
+
},
|
|
76866
|
+
getPublicOnboardingAttemptProgress: {
|
|
76867
|
+
path: "/public/onboarding/attempts/{attemptToken}/status",
|
|
76868
|
+
method: "GET",
|
|
76869
|
+
auth: "public",
|
|
76870
|
+
errors: [],
|
|
76871
|
+
responseKind: "json"
|
|
76872
|
+
},
|
|
76873
|
+
updatePublicOnboardingAttempt: {
|
|
76874
|
+
path: "/public/onboarding/attempts/{attemptToken}",
|
|
76875
|
+
method: "PATCH",
|
|
76876
|
+
auth: "public",
|
|
76877
|
+
errors: [],
|
|
76878
|
+
responseKind: "json"
|
|
76879
|
+
},
|
|
76880
|
+
runPublicOnboardingAttempt: {
|
|
76881
|
+
path: "/public/onboarding/attempts/{attemptToken}/run",
|
|
76882
|
+
method: "POST",
|
|
76883
|
+
auth: "public",
|
|
76884
|
+
errors: [],
|
|
76885
|
+
responseKind: "json"
|
|
76886
|
+
},
|
|
76887
|
+
resendPublicOnboardingAttemptConfirmation: {
|
|
76888
|
+
path: "/public/onboarding/attempts/{attemptToken}/resend-confirmation",
|
|
76889
|
+
method: "POST",
|
|
76890
|
+
auth: "public",
|
|
76891
|
+
errors: [],
|
|
76892
|
+
responseKind: "json"
|
|
76893
|
+
}
|
|
76894
|
+
});
|
|
76895
|
+
//#endregion
|
|
76896
|
+
//#region ../api/src/billingEndpointDefinitions.ts
|
|
76897
|
+
const BILLING_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
76898
|
+
adminChangePlan: {
|
|
76899
|
+
path: "/admin/billing/plan",
|
|
76900
|
+
method: "POST",
|
|
76901
|
+
tags: ["admin", "billing"],
|
|
76902
|
+
auth: "admin",
|
|
76903
|
+
responseKind: "json"
|
|
76904
|
+
},
|
|
76905
|
+
changePlan: {
|
|
76906
|
+
path: "/billing/plan/change",
|
|
76907
|
+
method: "POST",
|
|
76908
|
+
tags: ["billing"],
|
|
76909
|
+
auth: "user",
|
|
76910
|
+
responseKind: "json"
|
|
76911
|
+
},
|
|
76912
|
+
createBillingPortalSession: {
|
|
76913
|
+
path: "/billing/portal/session",
|
|
76914
|
+
method: "POST",
|
|
76915
|
+
tags: ["billing"],
|
|
76916
|
+
auth: "user",
|
|
76917
|
+
responseKind: "json"
|
|
76918
|
+
}
|
|
76919
|
+
});
|
|
76146
76920
|
({
|
|
76147
76921
|
...ACCOUNT_ENDPOINT_DEFINITIONS,
|
|
76922
|
+
...PUBLIC_ONBOARDING_ATTEMPT_ENDPOINT_DEFINITIONS,
|
|
76148
76923
|
...PUBLIC_EVENT_ENDPOINT_DEFINITIONS,
|
|
76149
76924
|
...GIFTING_ENDPOINT_DEFINITIONS,
|
|
76150
|
-
...PUBLIC_READ_ENDPOINT_DEFINITIONS
|
|
76925
|
+
...PUBLIC_READ_ENDPOINT_DEFINITIONS,
|
|
76926
|
+
...BILLING_ENDPOINT_DEFINITIONS
|
|
76151
76927
|
}), 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, {
|
|
76152
76928
|
...NEWSLETTER_ENDPOINT_DEFINITIONS,
|
|
76153
76929
|
...APPOINTMENT_ENDPOINT_DEFINITIONS,
|
|
76154
76930
|
...EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS
|
|
76155
|
-
}, 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 };
|
|
76931
|
+
}, 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 };
|
|
76156
76932
|
z$1.object({ refreshToken: z$1.string().min(1).max(4096) }).strict();
|
|
76157
76933
|
z$1.object({
|
|
76158
76934
|
accessToken: z$1.string().min(1).max(4096),
|
|
@@ -76709,7 +77485,17 @@ const riverbankSiteConfigInputSchema = z$1.object({
|
|
|
76709
77485
|
z$1.object({
|
|
76710
77486
|
config: riverbankSiteConfigInputSchema,
|
|
76711
77487
|
forceContentTypes: z$1.boolean().optional(),
|
|
76712
|
-
mode: z$1.enum(["apply", "preview"]).optional()
|
|
77488
|
+
mode: z$1.enum(["apply", "preview"]).optional(),
|
|
77489
|
+
expectedMailingListProviderScope: z$1.unknown().transform((value, ctx) => {
|
|
77490
|
+
if (value === void 0) return void 0;
|
|
77491
|
+
const parsed = parseMailingListProviderScope(value);
|
|
77492
|
+
if (parsed.ok) return parsed.value;
|
|
77493
|
+
ctx.addIssue({
|
|
77494
|
+
code: "custom",
|
|
77495
|
+
message: "Invalid mailing-list provider scope"
|
|
77496
|
+
});
|
|
77497
|
+
return z$1.NEVER;
|
|
77498
|
+
}).optional()
|
|
76713
77499
|
}).strict();
|
|
76714
77500
|
//#endregion
|
|
76715
77501
|
//#region ../api/src/sdkThemeWire.ts
|