@riverbankcms/sdk 0.145.0 → 0.147.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -0
- package/dist/{PreviewEditorSidebar-O-V6Pl5a.mjs → PreviewEditorSidebar-DtpB3_sS.mjs} +51 -33
- package/dist/{PreviewEditorUI-1UlX_9cw.mjs → PreviewEditorUI-DxTLgaHo.mjs} +3 -3
- package/dist/{PreviewQueryProvider-BxGwdOCV.mjs → PreviewQueryProvider-Dd4dxOiU.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-DYbA_4iv.mjs → SdkPreviewModeRuntime-DMMNCngt.mjs} +311 -186
- package/dist/{SiteChromeCustomizeContext-CNTKQ9nx.mjs → SiteChromeCustomizeContext-DQXZXiqS.mjs} +3808 -2395
- package/dist/_dts/ai/src/contracts/proposals.d.ts +1122 -0
- package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +102 -0
- package/dist/_dts/api/src/accountApi.d.ts +5 -5
- package/dist/_dts/api/src/bookingConfig.d.ts +24 -1
- package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +11 -26
- package/dist/_dts/api/src/bookingManagementEventEndpointTypes.d.ts +45 -1
- package/dist/_dts/api/src/bookingOperations.d.ts +2 -44
- package/dist/_dts/api/src/bookingPeople.d.ts +92 -0
- package/dist/_dts/api/src/bookingPeopleEndpointDefinitions.d.ts +38 -0
- package/dist/_dts/api/src/bookingRecords.d.ts +11 -49
- package/dist/_dts/api/src/bookingSettingsSections.d.ts +1 -1
- package/dist/_dts/api/src/bookings.d.ts +1 -0
- package/dist/_dts/api/src/clientErrorReporting.d.ts +50 -0
- package/dist/_dts/api/src/communications.d.ts +20 -4
- package/dist/_dts/api/src/contentRuntime.d.ts +3 -7
- package/dist/_dts/api/src/endpoints.d.ts +816 -655
- package/dist/_dts/api/src/event-visibility.d.ts +20 -0
- package/dist/_dts/api/src/eventManagementContracts.d.ts +72 -4
- package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +24 -0
- package/dist/_dts/api/src/eventPageWords.d.ts +19 -0
- package/dist/_dts/api/src/eventSeriesRegistrationEndpointDefinitions.d.ts +14 -0
- package/dist/_dts/api/src/index.d.ts +9 -2
- 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 +19 -6
- package/dist/_dts/api/src/launchRequirementPriority.d.ts +3 -0
- package/dist/_dts/api/src/mailingListIntegration.d.ts +6 -0
- package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +1 -1
- package/dist/_dts/api/src/newsletterCampaignCommandEndpoints.d.ts +13 -0
- package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +57 -0
- package/dist/_dts/api/src/occurrenceScheduling.d.ts +29 -0
- package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +44 -0
- package/dist/_dts/api/src/participantMessaging.d.ts +11 -1
- package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +48 -0
- package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +7 -0
- package/dist/_dts/api/src/sdk-event-upsert.d.ts +55 -1
- package/dist/_dts/api/src/sdkContracts.d.ts +3 -42
- package/dist/_dts/api/src/sdkCourseBooking.d.ts +30 -0
- package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +76 -0
- package/dist/_dts/api/src/sdkEventLifecycle.d.ts +37 -0
- package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +18 -0
- package/dist/_dts/api/src/sdkPageDesign.d.ts +388 -0
- package/dist/_dts/api/src/sdkPageDesignEndpointDefinitions.d.ts +22 -0
- package/dist/_dts/api/src/sdkPullEventContracts.d.ts +46 -0
- package/dist/_dts/api/src/siteAddressEndpoints.d.ts +29 -0
- package/dist/_dts/api/src/siteLifecycleEndpoints.d.ts +61 -0
- package/dist/_dts/api/src/siteManagementEndpointDefinitions.d.ts +49 -0
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +6 -49
- package/dist/_dts/api/src/siteOnboarding.d.ts +72 -18
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -1
- package/dist/_dts/api/src/types.d.ts +7 -1
- package/dist/_dts/api/src/wholeSeriesRuns.d.ts +14 -0
- package/dist/_dts/blocks/src/PageRenderer.d.ts +3 -4
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +8 -0
- package/dist/_dts/blocks/src/index.d.ts +2 -0
- package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +29 -1
- package/dist/_dts/blocks/src/pageRendererContracts.d.ts +5 -1
- package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +27 -5
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +14 -1
- package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +4 -1
- package/dist/_dts/blocks/src/system/icons/social.d.ts +1 -1
- package/dist/_dts/blocks/src/system/registry.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +12 -0
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +12 -0
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.completion.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +19 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-choice.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-note.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-state.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.reserved-fields.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.server.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-handler.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-success.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/AttendeeDetailsStep.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SuccessStep.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/sessionStorage.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +20 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/form.fields.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.block-submission.d.ts +34 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.parts.d.ts +46 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +4 -1
- package/dist/_dts/blocks/src/system/runtime/shared/components/BookingMailingListNote.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/CheckboxChoice.d.ts +18 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/shared/mailingListSignupCopy.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/shared/types.d.ts +1 -0
- package/dist/_dts/blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.d.ts +3 -2
- package/dist/_dts/blocks/src/system/transforms/registry/core.d.ts +2 -0
- package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +1 -3
- package/dist/_dts/content-editor/src/index.d.ts +1 -0
- package/dist/_dts/content-editor/src/primitives/previewEditableOutline.d.ts +2 -0
- package/dist/_dts/content-editor/src/ui/editorBlockEquality.d.ts +3 -0
- package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +3 -5
- package/dist/_dts/core/src/block-content-identity.d.ts +5 -0
- package/dist/_dts/core/src/editor-state.d.ts +2 -7
- package/dist/_dts/core/src/index.d.ts +2 -1
- package/dist/_dts/core/src/mailing-list-runtime.d.ts +15 -0
- package/dist/_dts/core/src/mailing-list-setup.d.ts +2 -0
- package/dist/_dts/core/src/mailing-list-submission.d.ts +9 -1
- package/dist/_dts/core/src/navigation-portal-labels.d.ts +9 -0
- package/dist/_dts/core/src/participants.d.ts +0 -38
- package/dist/_dts/core/src/public-event-booking-availability.d.ts +20 -1
- package/dist/_dts/core/src/public-profile.d.ts +3 -1
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +151 -24
- package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +3 -0
- package/dist/_dts/editor-blocks/src/block-editor/EmptyState.d.ts +13 -1
- package/dist/_dts/editor-blocks/src/block-editor/actionPresentation.d.ts +1 -0
- package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +2 -8
- package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +7 -1
- package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +5 -5
- package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -2
- package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +0 -1
- package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +3 -2
- package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +3 -2
- package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +6 -1
- package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +5 -2
- package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +6 -1
- package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +2 -0
- package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +5 -1
- package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +5 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/surfaces/src/index.d.ts +9 -0
- package/dist/_dts/theme-core/src/buttons/effects/types.d.ts +1 -1
- package/dist/_dts/theme-core/src/footer/effectiveNavLinkStyle.d.ts +13 -0
- package/dist/_dts/theme-core/src/footer/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/header/effectiveNavLinkStyle.d.ts +17 -0
- package/dist/_dts/theme-core/src/header/generateHeaderLogoStyles.d.ts +15 -0
- package/dist/_dts/theme-core/src/header/generateHeaderNavLinkStyles.d.ts +4 -0
- package/dist/_dts/theme-core/src/header/index.d.ts +3 -0
- package/dist/_dts/theme-core/src/header/legacyNavLinkStyle.d.ts +1 -1
- package/dist/_dts/theme-core/src/header/openingForegroundProjection.d.ts +7 -0
- package/dist/_dts/theme-core/src/header/rootPaint.d.ts +4 -0
- package/dist/_dts/theme-core/src/inputs/checkable.d.ts +42 -0
- package/dist/_dts/theme-core/src/inputs/inputGroup.d.ts +19 -0
- package/dist/_dts/theme-core/src/navigation/effectPolicy.d.ts +38 -0
- package/dist/_dts/theme-core/src/navigation/generateNavLinkCSS.d.ts +4 -0
- package/dist/_dts/theme-core/src/navigation/types.d.ts +4 -0
- package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +1 -1
- package/dist/_dts/theme-core/src/surfaces/foregroundContract.d.ts +7 -0
- package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +29 -22
- package/dist/_dts/theme-core/src/surfaces/foregroundRoles.d.ts +10 -2
- package/dist/_dts/theme-core/src/surfaces/resolveSurfaceForeground.d.ts +9 -0
- package/dist/_dts/theme-core/src/utils/cssDeclarations.d.ts +2 -0
- package/dist/_dts/ui/src/badge.d.ts +2 -1
- package/dist/_dts/ui/src/button.d.ts +1 -1
- package/dist/_dts/ui/src/combobox-keys.d.ts +23 -0
- package/dist/_dts/ui/src/combobox-rows.d.ts +34 -0
- package/dist/_dts/ui/src/combobox.d.ts +26 -1
- package/dist/_dts/ui/src/date-picker.d.ts +5 -8
- package/dist/_dts/ui/src/editor-item-card.d.ts +1 -0
- package/dist/_dts/ui/src/field-trigger.d.ts +39 -0
- package/dist/_dts/ui/src/fieldControl.d.ts +27 -0
- package/dist/_dts/ui/src/index.d.ts +4 -1
- package/dist/_dts/ui/src/native-select.d.ts +8 -0
- package/dist/_dts/ui/src/navigation-tabs.d.ts +2 -1
- package/dist/_dts/ui/src/popover.d.ts +7 -1
- package/dist/_dts/ui/src/segmented-control.d.ts +4 -0
- package/dist/_dts/ui/src/surface.d.ts +1 -1
- package/dist/client/{BookingConsentAgreement-DlVOmpW4.mjs → BookingMailingListNote-1n4Ch_u_.mjs} +15 -4
- package/dist/client/CheckboxChoice-B33MqoUo.mjs +24 -0
- package/dist/client/{DiscountCodeDisclosure-T9q623PQ.mjs → DiscountCodeDisclosure-CKJtz0mY.mjs} +1 -1
- package/dist/client/{EventCombined.client-DnsUeONl.mjs → EventCombined.client-C0pgma9y.mjs} +7 -7
- package/dist/client/{EventListing.client-CNBFqJS4.mjs → EventListing.client-4fhLOvHP.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-C7higg52.mjs → LeafletStaticMap-DScC4F3w.mjs} +1 -1
- package/dist/client/{scrollToBlock-CWs8EIdo.mjs → TerminalPanel-B5ZUsYhe.mjs} +77 -77
- package/dist/client/{ThemedButton-LAJTNrS8.mjs → ThemedButton-DoVIV1Ao.mjs} +2 -2
- package/dist/client/{accordion-BcNF9TjX.mjs → accordion-CoT5g7zo.mjs} +1 -1
- package/dist/client/{bookingForm-BUaQ3S03.mjs → bookingForm-BWxB46xD.mjs} +251 -150
- package/dist/client/bookings.mjs +415 -234
- package/dist/client/{carousel-CTdF6e0V.mjs → carousel-DtNYWFd3.mjs} +2 -2
- package/dist/client/{carousel.client-jahpU9Vz.mjs → carousel.client-A2lG-9od.mjs} +1 -1
- package/dist/client/{cart-pGtyf_XU.mjs → cart-z4qZih1Y.mjs} +3 -3
- package/dist/client/{checkout-Da9WSn7Y.mjs → checkout-DpL7euFH.mjs} +3 -3
- package/dist/client/{checkoutUrls-CW3-78uu.mjs → checkoutUrls-BEfR7kVu.mjs} +1 -1
- package/dist/client/client.mjs +3721 -2220
- package/dist/client/{colorStyles-CuJBiS-1.mjs → colorStyles-j5U9v5JA.mjs} +5 -1
- package/dist/client/{context-BFeY_Wbm.mjs → context-C8TinPJc.mjs} +1 -1
- package/dist/client/{dates-BhwVSxDg.mjs → dates-vwwxTeB0.mjs} +2 -3
- package/dist/client/{eventCalendar-BAtdnR4s.mjs → eventCalendar-DIbHfJXO.mjs} +10 -10
- package/dist/client/{eventCombined-RksA3tRC.mjs → eventCombined-DoGMJ6cg.mjs} +4 -4
- package/dist/client/{eventDetails-BB9hB4wR.mjs → eventDetails-BjN9v6a1.mjs} +4 -4
- package/dist/client/{eventListing-BpJBkviM.mjs → eventListing-DajjWgOv.mjs} +4 -4
- package/dist/client/{eventRegistration-B18jFq_o.mjs → eventRegistration-DMq9gMA-.mjs} +121 -54
- package/dist/client/{form-Dodt8Y8t.mjs → form-Qf6qTbos.mjs} +136 -105
- package/dist/client/{headerSection-B0qj9ttg.mjs → headerSection-D7qJrqFX.mjs} +3 -3
- package/dist/client/hooks.mjs +1148 -179
- package/dist/client/{locationMap-gn-iMk7a.mjs → locationMap-CCF9-t_0.mjs} +4 -4
- package/dist/client/{FieldValidationMessage-AYanWFb-.mjs → mailingListSignupCopy-DZSHZrm6.mjs} +14 -1
- package/dist/client/{media-BtJ37tzS.mjs → media-CwBGetqC.mjs} +1 -1
- package/dist/client/{newsletterForm-oByLdFkr.mjs → newsletterForm-DzCLSP4S.mjs} +206 -104
- package/dist/client/{pricing-BOU0_Hai.mjs → pricing-Cgxv2KLC.mjs} +1 -1
- package/dist/client/{productDetail-D9v1zH2j.mjs → productDetail-ru9w5GHx.mjs} +3 -3
- package/dist/client/{productList-D-mItx1n.mjs → productList-zaapKSl-.mjs} +3 -3
- package/dist/client/{propsDecoder-C3TP_z4x.mjs → propsDecoder-CwvvNOHx.mjs} +91 -28
- package/dist/client/rendering/client.mjs +1441 -826
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +3652 -2005
- package/dist/client/{routeIslandApiConfig-DzN1W0sq.mjs → routeIslandApiConfig-BwVFo0Y4.mjs} +1 -1
- package/dist/client/{shop-commerce-gklw_hLF.mjs → shop-commerce-De7gEnkA.mjs} +8 -8
- package/dist/client/{shop-commerce-store-Sf1eyTaZ.mjs → shop-commerce-store-B3MCxIBW.mjs} +1 -1
- package/dist/client/{shop-Dufw7N7o.mjs → shop-mktkXvbV.mjs} +7 -7
- package/dist/client/{shopShared-B5nyA41S.mjs → shopShared-TqExh235.mjs} +5 -5
- package/dist/client/{useEventFilters-CLL829vy.mjs → useEventFilters-n_OjkIjX.mjs} +8 -8
- package/dist/preview-next/before-render.mjs +490 -153
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/editor-base.css +64 -2
- package/dist/preview-next/editor-chrome.css +7 -4
- package/dist/preview-next/keepAlive.mjs +450 -153
- package/dist/preview-next/middleware.mjs +451 -153
- package/dist/{previewAuthStore-BxAFlu-j.mjs → previewAuthStore-C_EHQ5XA.mjs} +475 -153
- package/dist/{sdk-runtime-D0uZFev7.mjs → sdk-runtime-BIkJg5y1.mjs} +2 -2
- package/dist/{separator-EvdCAn4V.mjs → separator-C9qDP95Z.mjs} +1 -1
- package/dist/server/components.mjs +4957 -3509
- package/dist/server/config-validation.mjs +1115 -189
- package/dist/server/config.mjs +1115 -189
- package/dist/server/data.mjs +1113 -188
- package/dist/server/index.mjs +492 -154
- package/dist/server/navigation.mjs +13 -2
- package/dist/server/next.mjs +4798 -3462
- package/dist/server/page-converter.mjs +143 -89
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +3862 -2414
- package/dist/server/rendering.mjs +5648 -4154
- package/dist/server/routing.mjs +1223 -329
- package/dist/server/server.mjs +1172 -314
- package/dist/server/theme-bridge.mjs +533 -128
- package/dist/server/theme.mjs +5 -1
- package/dist/styles/index.css +218 -69
- package/package.json +1 -1
- package/dist/_dts/core/src/participant-identity.d.ts +0 -135
|
@@ -18,6 +18,64 @@ function defineEndpointDefinitions(definitions) {
|
|
|
18
18
|
return definitions;
|
|
19
19
|
}
|
|
20
20
|
//#endregion
|
|
21
|
+
//#region ../api/src/apiEndpointTypes.ts
|
|
22
|
+
function allowedDemoMutationPolicy() {
|
|
23
|
+
return {
|
|
24
|
+
classification: "allowed",
|
|
25
|
+
publicMessage: ""
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function blockedDemoMutationPolicy(classification, publicMessage) {
|
|
29
|
+
if (publicMessage.trim() === "") throw new Error(`Demo mutation policy ${classification} requires publicMessage.`);
|
|
30
|
+
return {
|
|
31
|
+
classification,
|
|
32
|
+
publicMessage
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
//#region ../api/src/demoMutationPolicies.ts
|
|
37
|
+
const DEMO_MUTATION_BLOCKED_HIDDEN = blockedDemoMutationPolicy("blocked-hidden", "This action is not available in demo sites.");
|
|
38
|
+
const DEMO_MUTATION_BLOCKED_DISABLED = blockedDemoMutationPolicy("blocked-disabled", "This setting is disabled in demo sites.");
|
|
39
|
+
blockedDemoMutationPolicy("internal-only", "This internal operation is not available in demo sites.");
|
|
40
|
+
const DEMO_MUTATION_ALLOWED = allowedDemoMutationPolicy();
|
|
41
|
+
//#endregion
|
|
42
|
+
//#region ../api/src/siteLifecycleEndpoints.ts
|
|
43
|
+
const SITE_LIFECYCLE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
44
|
+
createSite: {
|
|
45
|
+
path: "/sites/manage",
|
|
46
|
+
method: "POST",
|
|
47
|
+
tags: ["site"],
|
|
48
|
+
auth: "user",
|
|
49
|
+
responseKind: "json",
|
|
50
|
+
errors: []
|
|
51
|
+
},
|
|
52
|
+
createSiteManual: {
|
|
53
|
+
path: "/sites/manual",
|
|
54
|
+
method: "POST",
|
|
55
|
+
tags: ["site"],
|
|
56
|
+
auth: "user",
|
|
57
|
+
responseKind: "json",
|
|
58
|
+
errors: []
|
|
59
|
+
},
|
|
60
|
+
updateSite: {
|
|
61
|
+
path: "/sites/manage",
|
|
62
|
+
method: "PUT",
|
|
63
|
+
tags: ["site"],
|
|
64
|
+
auth: "user",
|
|
65
|
+
responseKind: "json",
|
|
66
|
+
errors: []
|
|
67
|
+
},
|
|
68
|
+
deleteSite: {
|
|
69
|
+
path: "/sites/{siteId}",
|
|
70
|
+
method: "DELETE",
|
|
71
|
+
tags: ["site", "site-{siteId}"],
|
|
72
|
+
auth: "user",
|
|
73
|
+
responseKind: "json",
|
|
74
|
+
errors: [],
|
|
75
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
//#endregion
|
|
21
79
|
//#region ../api/src/publicNewsletterEndpointDefinitions.ts
|
|
22
80
|
const PUBLIC_NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
23
81
|
subscribeNewsletter: {
|
|
@@ -78,27 +136,6 @@ const PUBLIC_NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
78
136
|
}
|
|
79
137
|
});
|
|
80
138
|
//#endregion
|
|
81
|
-
//#region ../api/src/apiEndpointTypes.ts
|
|
82
|
-
function allowedDemoMutationPolicy() {
|
|
83
|
-
return {
|
|
84
|
-
classification: "allowed",
|
|
85
|
-
publicMessage: ""
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
function blockedDemoMutationPolicy(classification, publicMessage) {
|
|
89
|
-
if (publicMessage.trim() === "") throw new Error(`Demo mutation policy ${classification} requires publicMessage.`);
|
|
90
|
-
return {
|
|
91
|
-
classification,
|
|
92
|
-
publicMessage
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
//#endregion
|
|
96
|
-
//#region ../api/src/demoMutationPolicies.ts
|
|
97
|
-
const DEMO_MUTATION_BLOCKED_HIDDEN = blockedDemoMutationPolicy("blocked-hidden", "This action is not available in demo sites.");
|
|
98
|
-
const DEMO_MUTATION_BLOCKED_DISABLED = blockedDemoMutationPolicy("blocked-disabled", "This setting is disabled in demo sites.");
|
|
99
|
-
blockedDemoMutationPolicy("internal-only", "This internal operation is not available in demo sites.");
|
|
100
|
-
const DEMO_MUTATION_ALLOWED = allowedDemoMutationPolicy();
|
|
101
|
-
//#endregion
|
|
102
139
|
//#region ../api/src/cache-tags.ts
|
|
103
140
|
/**
|
|
104
141
|
* Tag templates for endpoint definitions (support `{param}` placeholders).
|
|
@@ -958,6 +995,13 @@ const EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS = defineEndpointDefinitions
|
|
|
958
995
|
errors: [],
|
|
959
996
|
responseKind: "blob"
|
|
960
997
|
},
|
|
998
|
+
exportEventOfferingRegistrationsCsv: {
|
|
999
|
+
path: "/sites/{siteId}/bookings/event-offerings/{eventOfferingId}/registrations/export.csv",
|
|
1000
|
+
method: "GET",
|
|
1001
|
+
auth: "user",
|
|
1002
|
+
errors: [],
|
|
1003
|
+
responseKind: "blob"
|
|
1004
|
+
},
|
|
961
1005
|
updateEventSeriesRegistration: {
|
|
962
1006
|
path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations/{registrationId}",
|
|
963
1007
|
method: "PATCH",
|
|
@@ -968,6 +1012,19 @@ const EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS = defineEndpointDefinitions
|
|
|
968
1012
|
"resource:not_found",
|
|
969
1013
|
"server:internal_error"
|
|
970
1014
|
]
|
|
1015
|
+
},
|
|
1016
|
+
saveEventSeriesRegistrationAnswers: {
|
|
1017
|
+
path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations/{registrationId}/answers",
|
|
1018
|
+
method: "PUT",
|
|
1019
|
+
auth: "user",
|
|
1020
|
+
responseKind: "json",
|
|
1021
|
+
errors: [
|
|
1022
|
+
"validation:invalid_input",
|
|
1023
|
+
"auth:forbidden",
|
|
1024
|
+
"resource:not_found",
|
|
1025
|
+
"resource:conflict",
|
|
1026
|
+
"server:internal_error"
|
|
1027
|
+
]
|
|
971
1028
|
}
|
|
972
1029
|
});
|
|
973
1030
|
//#endregion
|
|
@@ -1105,6 +1162,20 @@ const NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
1105
1162
|
responseKind: "json",
|
|
1106
1163
|
errors: ["auth:forbidden", "server:internal_error"]
|
|
1107
1164
|
},
|
|
1165
|
+
setMailingListBookingOptIn: {
|
|
1166
|
+
path: "/sites/{siteId}/mailing-list/setup/booking-opt-in",
|
|
1167
|
+
method: "PUT",
|
|
1168
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
1169
|
+
auth: "user",
|
|
1170
|
+
responseKind: "json",
|
|
1171
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
1172
|
+
errors: [
|
|
1173
|
+
"auth:forbidden",
|
|
1174
|
+
"validation:invalid_input",
|
|
1175
|
+
"resource:conflict",
|
|
1176
|
+
"server:internal_error"
|
|
1177
|
+
]
|
|
1178
|
+
},
|
|
1108
1179
|
getMailingListAuthoringContext: {
|
|
1109
1180
|
path: "/sites/{siteId}/mailing-list/authoring-context",
|
|
1110
1181
|
method: "GET",
|
|
@@ -1388,6 +1459,30 @@ const NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
1388
1459
|
responseKind: "json",
|
|
1389
1460
|
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
1390
1461
|
},
|
|
1462
|
+
scheduleNewsletterCampaign: {
|
|
1463
|
+
path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/schedule",
|
|
1464
|
+
method: "POST",
|
|
1465
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
1466
|
+
auth: "user",
|
|
1467
|
+
responseKind: "json",
|
|
1468
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
1469
|
+
},
|
|
1470
|
+
unscheduleNewsletterCampaign: {
|
|
1471
|
+
path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/unschedule",
|
|
1472
|
+
method: "POST",
|
|
1473
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
1474
|
+
auth: "user",
|
|
1475
|
+
responseKind: "json",
|
|
1476
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
1477
|
+
},
|
|
1478
|
+
stopNewsletterCampaign: {
|
|
1479
|
+
path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/stop",
|
|
1480
|
+
method: "POST",
|
|
1481
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
1482
|
+
auth: "user",
|
|
1483
|
+
responseKind: "json",
|
|
1484
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
1485
|
+
},
|
|
1391
1486
|
testSendNewsletterCampaign: {
|
|
1392
1487
|
path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/test-send",
|
|
1393
1488
|
method: "POST",
|
|
@@ -1398,6 +1493,154 @@ const NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
1398
1493
|
}
|
|
1399
1494
|
});
|
|
1400
1495
|
//#endregion
|
|
1496
|
+
//#region ../api/src/sdkEventEndpointDefinitions.ts
|
|
1497
|
+
/**
|
|
1498
|
+
* The SDK's Event graph: the Events themselves and the occurrences of one run.
|
|
1499
|
+
* Extracted from `endpoints.ts` so this family can be read, and added to, on
|
|
1500
|
+
* its own. New entries here must declare `errors`; the
|
|
1501
|
+
* require-api-endpoint-errors lint enforces that here as in endpoints.ts.
|
|
1502
|
+
*/
|
|
1503
|
+
const SDK_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
1504
|
+
sdkListEvents: {
|
|
1505
|
+
path: "/sdk/{siteId}/events",
|
|
1506
|
+
method: "GET",
|
|
1507
|
+
auth: "service",
|
|
1508
|
+
responseKind: "json"
|
|
1509
|
+
},
|
|
1510
|
+
sdkUpsertEvent: {
|
|
1511
|
+
path: "/sdk/{siteId}/events",
|
|
1512
|
+
method: "POST",
|
|
1513
|
+
auth: "service",
|
|
1514
|
+
responseKind: "json",
|
|
1515
|
+
errors: [
|
|
1516
|
+
"validation:invalid_input",
|
|
1517
|
+
"resource:not_found",
|
|
1518
|
+
"resource:conflict",
|
|
1519
|
+
"billing:plan_limit_exceeded",
|
|
1520
|
+
"server:internal_error"
|
|
1521
|
+
]
|
|
1522
|
+
},
|
|
1523
|
+
sdkGetEvent: {
|
|
1524
|
+
path: "/sdk/{siteId}/events/{identifier}",
|
|
1525
|
+
method: "GET",
|
|
1526
|
+
auth: "service",
|
|
1527
|
+
responseKind: "json"
|
|
1528
|
+
},
|
|
1529
|
+
sdkDeleteEvent: {
|
|
1530
|
+
path: "/sdk/{siteId}/events/{identifier}",
|
|
1531
|
+
method: "DELETE",
|
|
1532
|
+
auth: "service",
|
|
1533
|
+
responseKind: "json",
|
|
1534
|
+
errors: [
|
|
1535
|
+
"resource:not_found",
|
|
1536
|
+
"resource:conflict",
|
|
1537
|
+
"server:internal_error"
|
|
1538
|
+
]
|
|
1539
|
+
},
|
|
1540
|
+
sdkTakeEventOffline: {
|
|
1541
|
+
path: "/sdk/{siteId}/events/{identifier}/lifecycle",
|
|
1542
|
+
method: "POST",
|
|
1543
|
+
auth: "service",
|
|
1544
|
+
responseKind: "json",
|
|
1545
|
+
errors: [
|
|
1546
|
+
"resource:not_found",
|
|
1547
|
+
"validation:invalid_input",
|
|
1548
|
+
"resource:conflict",
|
|
1549
|
+
"server:internal_error"
|
|
1550
|
+
]
|
|
1551
|
+
},
|
|
1552
|
+
sdkListEventOccurrences: {
|
|
1553
|
+
path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences",
|
|
1554
|
+
method: "GET",
|
|
1555
|
+
auth: "service",
|
|
1556
|
+
responseKind: "json",
|
|
1557
|
+
errors: [
|
|
1558
|
+
"resource:not_found",
|
|
1559
|
+
"validation:invalid_input",
|
|
1560
|
+
"server:internal_error"
|
|
1561
|
+
]
|
|
1562
|
+
},
|
|
1563
|
+
sdkAddEventOccurrence: {
|
|
1564
|
+
path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences",
|
|
1565
|
+
method: "POST",
|
|
1566
|
+
auth: "service",
|
|
1567
|
+
responseKind: "json",
|
|
1568
|
+
errors: [
|
|
1569
|
+
"resource:not_found",
|
|
1570
|
+
"validation:invalid_input",
|
|
1571
|
+
"resource:conflict",
|
|
1572
|
+
"server:internal_error"
|
|
1573
|
+
]
|
|
1574
|
+
},
|
|
1575
|
+
sdkUpdateEventOccurrence: {
|
|
1576
|
+
path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences/{occurrenceId}",
|
|
1577
|
+
method: "PATCH",
|
|
1578
|
+
auth: "service",
|
|
1579
|
+
responseKind: "json",
|
|
1580
|
+
errors: [
|
|
1581
|
+
"resource:not_found",
|
|
1582
|
+
"validation:invalid_input",
|
|
1583
|
+
"resource:conflict",
|
|
1584
|
+
"server:internal_error"
|
|
1585
|
+
]
|
|
1586
|
+
},
|
|
1587
|
+
sdkCancelEventOccurrence: {
|
|
1588
|
+
path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences/{occurrenceId}/cancel",
|
|
1589
|
+
method: "POST",
|
|
1590
|
+
auth: "service",
|
|
1591
|
+
responseKind: "json",
|
|
1592
|
+
errors: [
|
|
1593
|
+
"resource:not_found",
|
|
1594
|
+
"resource:conflict",
|
|
1595
|
+
"server:internal_error"
|
|
1596
|
+
]
|
|
1597
|
+
},
|
|
1598
|
+
sdkDeleteEventOccurrence: {
|
|
1599
|
+
path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences/{occurrenceId}",
|
|
1600
|
+
method: "DELETE",
|
|
1601
|
+
auth: "service",
|
|
1602
|
+
responseKind: "json",
|
|
1603
|
+
errors: [
|
|
1604
|
+
"resource:not_found",
|
|
1605
|
+
"resource:conflict",
|
|
1606
|
+
"server:internal_error"
|
|
1607
|
+
]
|
|
1608
|
+
}
|
|
1609
|
+
});
|
|
1610
|
+
//#endregion
|
|
1611
|
+
//#region ../api/src/sdkPageDesignEndpointDefinitions.ts
|
|
1612
|
+
/**
|
|
1613
|
+
* SDK management endpoints for a page's draft design (issue 1497), spread into
|
|
1614
|
+
* `ENDPOINT_DEFINITIONS` like the other endpoint-definition modules. New
|
|
1615
|
+
* entries here must declare `errors`, which the require-api-endpoint-errors
|
|
1616
|
+
* lint enforces.
|
|
1617
|
+
*/
|
|
1618
|
+
const SDK_PAGE_DESIGN_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
1619
|
+
sdkGetPageDesign: {
|
|
1620
|
+
path: "/sdk/{siteId}/pages/{identifier}/design",
|
|
1621
|
+
method: "GET",
|
|
1622
|
+
auth: "service",
|
|
1623
|
+
responseKind: "json",
|
|
1624
|
+
errors: [
|
|
1625
|
+
"resource:not_found",
|
|
1626
|
+
"validation:invalid_input",
|
|
1627
|
+
"server:internal_error"
|
|
1628
|
+
]
|
|
1629
|
+
},
|
|
1630
|
+
sdkSavePageDesign: {
|
|
1631
|
+
path: "/sdk/{siteId}/pages/{identifier}/design",
|
|
1632
|
+
method: "POST",
|
|
1633
|
+
auth: "service",
|
|
1634
|
+
responseKind: "json",
|
|
1635
|
+
errors: [
|
|
1636
|
+
"resource:not_found",
|
|
1637
|
+
"validation:invalid_input",
|
|
1638
|
+
"resource:conflict",
|
|
1639
|
+
"server:internal_error"
|
|
1640
|
+
]
|
|
1641
|
+
}
|
|
1642
|
+
});
|
|
1643
|
+
//#endregion
|
|
1401
1644
|
//#region ../core/src/result.ts
|
|
1402
1645
|
function ok(value) {
|
|
1403
1646
|
return {
|
|
@@ -2058,17 +2301,35 @@ function parseMailingListRuntimeContext(value) {
|
|
|
2058
2301
|
if (!isRecord$8(value)) return invalidRuntimeContext();
|
|
2059
2302
|
if (value.tag === "not_configured") return ok({ tag: "not_configured" });
|
|
2060
2303
|
if (value.tag !== "configured") return invalidRuntimeContext();
|
|
2304
|
+
return parseConfiguredRuntimeContext(value);
|
|
2305
|
+
}
|
|
2306
|
+
function parseConfiguredRuntimeContext(value) {
|
|
2061
2307
|
const revision = parseMailingListSetupRevision(value.revision);
|
|
2062
2308
|
const form = parseMailingListGlobalForm(value.form);
|
|
2063
2309
|
const provider = parseRuntimeProvider(value.provider);
|
|
2064
|
-
|
|
2310
|
+
const bookingSignup = parseBookingSignupOffer(value.bookingSignup);
|
|
2311
|
+
if (revision === null || !form.ok || provider === null || bookingSignup === null) return invalidRuntimeContext();
|
|
2065
2312
|
return ok({
|
|
2066
2313
|
tag: "configured",
|
|
2067
2314
|
revision,
|
|
2315
|
+
bookingSignup,
|
|
2068
2316
|
form: form.value,
|
|
2069
2317
|
provider
|
|
2070
2318
|
});
|
|
2071
2319
|
}
|
|
2320
|
+
function parseBookingSignupOffer(value) {
|
|
2321
|
+
if (value === void 0) return {
|
|
2322
|
+
tag: "unavailable",
|
|
2323
|
+
reason: "disabled"
|
|
2324
|
+
};
|
|
2325
|
+
if (!isRecord$8(value)) return null;
|
|
2326
|
+
if (value.tag === "offered") return { tag: "offered" };
|
|
2327
|
+
if (value.tag === "unavailable" && (value.reason === "disabled" || value.reason === "fields" || value.reason === "destination")) return {
|
|
2328
|
+
tag: "unavailable",
|
|
2329
|
+
reason: value.reason
|
|
2330
|
+
};
|
|
2331
|
+
return null;
|
|
2332
|
+
}
|
|
2072
2333
|
function parseRuntimeProvider(value) {
|
|
2073
2334
|
if (!isRecord$8(value)) return null;
|
|
2074
2335
|
switch (value.provider) {
|
|
@@ -2295,15 +2556,6 @@ function parseMailingListContentVersionId(value) {
|
|
|
2295
2556
|
const parsed = parseContentVersionId(value);
|
|
2296
2557
|
return parsed.ok ? parsed.value : null;
|
|
2297
2558
|
}
|
|
2298
|
-
function buildMailingListSignupBlockSourceRef(blockId, contentVersionId) {
|
|
2299
|
-
const parsedBlockId = parseMailingListBlockId(blockId);
|
|
2300
|
-
const parsedContentVersionId = parseMailingListContentVersionId(contentVersionId);
|
|
2301
|
-
return parsedBlockId !== null && parsedContentVersionId !== null ? {
|
|
2302
|
-
tag: "block_ref",
|
|
2303
|
-
blockId: parsedBlockId,
|
|
2304
|
-
contentVersionId: parsedContentVersionId
|
|
2305
|
-
} : null;
|
|
2306
|
-
}
|
|
2307
2559
|
//#endregion
|
|
2308
2560
|
//#region ../core/src/secret.ts
|
|
2309
2561
|
/**
|
|
@@ -2952,6 +3204,45 @@ const SITE_API_KEY_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
2952
3204
|
}
|
|
2953
3205
|
});
|
|
2954
3206
|
//#endregion
|
|
3207
|
+
//#region ../api/src/siteManagementEndpointDefinitions.ts
|
|
3208
|
+
const SITE_MANAGEMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
3209
|
+
createSite: {
|
|
3210
|
+
path: "/sites/manage",
|
|
3211
|
+
method: "POST",
|
|
3212
|
+
tags: ["site"],
|
|
3213
|
+
auth: "user",
|
|
3214
|
+
responseKind: "json"
|
|
3215
|
+
},
|
|
3216
|
+
updateSite: {
|
|
3217
|
+
path: "/sites/manage",
|
|
3218
|
+
method: "PUT",
|
|
3219
|
+
tags: ["site"],
|
|
3220
|
+
auth: "user",
|
|
3221
|
+
responseKind: "json"
|
|
3222
|
+
},
|
|
3223
|
+
changeSiteAddress: {
|
|
3224
|
+
path: "/sites/{siteId}/address",
|
|
3225
|
+
method: "PUT",
|
|
3226
|
+
auth: "user",
|
|
3227
|
+
responseKind: "json",
|
|
3228
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED
|
|
3229
|
+
},
|
|
3230
|
+
getSiteAddressAvailability: {
|
|
3231
|
+
path: "/sites/{siteId}/address/availability",
|
|
3232
|
+
method: "GET",
|
|
3233
|
+
auth: "user",
|
|
3234
|
+
responseKind: "json"
|
|
3235
|
+
},
|
|
3236
|
+
deleteSite: {
|
|
3237
|
+
path: "/sites/{siteId}",
|
|
3238
|
+
method: "DELETE",
|
|
3239
|
+
tags: ["site", "site-{siteId}"],
|
|
3240
|
+
auth: "user",
|
|
3241
|
+
responseKind: "json",
|
|
3242
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
3243
|
+
}
|
|
3244
|
+
});
|
|
3245
|
+
//#endregion
|
|
2955
3246
|
//#region ../api/src/eventManagementEndpointDefinitions.ts
|
|
2956
3247
|
const EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
2957
3248
|
listEvents: {
|
|
@@ -2999,6 +3290,28 @@ const EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
2999
3290
|
"server:internal_error"
|
|
3000
3291
|
]
|
|
3001
3292
|
},
|
|
3293
|
+
/**
|
|
3294
|
+
* The web address of an event's own page. A course page belongs to the
|
|
3295
|
+
* event itself, so its address is written here rather than through a run.
|
|
3296
|
+
*/
|
|
3297
|
+
updateEventAddress: {
|
|
3298
|
+
path: "/sites/{siteId}/bookings/events/{eventId}/address",
|
|
3299
|
+
method: "PATCH",
|
|
3300
|
+
tags: [
|
|
3301
|
+
"site-{siteId}",
|
|
3302
|
+
"event-series-{siteId}",
|
|
3303
|
+
TAG_TEMPLATES.siteRoutableContent,
|
|
3304
|
+
TAG_TEMPLATES.siteRedirects
|
|
3305
|
+
],
|
|
3306
|
+
auth: "user",
|
|
3307
|
+
responseKind: "json",
|
|
3308
|
+
errors: [
|
|
3309
|
+
"validation:invalid_input",
|
|
3310
|
+
"resource:not_found",
|
|
3311
|
+
"resource:conflict",
|
|
3312
|
+
"server:internal_error"
|
|
3313
|
+
]
|
|
3314
|
+
},
|
|
3002
3315
|
createWholeSeriesRun: {
|
|
3003
3316
|
path: "/sites/{siteId}/bookings/events/{eventId}/runs",
|
|
3004
3317
|
method: "POST",
|
|
@@ -3025,6 +3338,20 @@ const EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
3025
3338
|
"server:internal_error"
|
|
3026
3339
|
]
|
|
3027
3340
|
},
|
|
3341
|
+
updateCourseBookingSettings: {
|
|
3342
|
+
path: "/sites/{siteId}/bookings/events/{eventId}/booking-settings",
|
|
3343
|
+
method: "PATCH",
|
|
3344
|
+
tags: ["site-{siteId}", "event-series-{siteId}"],
|
|
3345
|
+
auth: "user",
|
|
3346
|
+
responseKind: "json",
|
|
3347
|
+
errors: [
|
|
3348
|
+
"validation:invalid_input",
|
|
3349
|
+
"auth:forbidden",
|
|
3350
|
+
"resource:not_found",
|
|
3351
|
+
"resource:conflict",
|
|
3352
|
+
"server:internal_error"
|
|
3353
|
+
]
|
|
3354
|
+
},
|
|
3028
3355
|
cancelWholeSeriesRun: {
|
|
3029
3356
|
path: "/sites/{siteId}/bookings/events/{eventId}/runs/{runId}/cancellation",
|
|
3030
3357
|
method: "POST",
|
|
@@ -3037,6 +3364,28 @@ const EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
3037
3364
|
"resource:conflict",
|
|
3038
3365
|
"server:internal_error"
|
|
3039
3366
|
]
|
|
3367
|
+
},
|
|
3368
|
+
/**
|
|
3369
|
+
* The Content tab's one write: the short introduction, image and
|
|
3370
|
+
* description of an event's page, published without its layout.
|
|
3371
|
+
*/
|
|
3372
|
+
saveEventPageWords: {
|
|
3373
|
+
path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/words",
|
|
3374
|
+
method: "PUT",
|
|
3375
|
+
tags: [
|
|
3376
|
+
TAG_TEMPLATES.siteCollection,
|
|
3377
|
+
TAG_TEMPLATES.siteRoutableContent,
|
|
3378
|
+
TAG_TEMPLATES.pageSurfaceById
|
|
3379
|
+
],
|
|
3380
|
+
auth: "user",
|
|
3381
|
+
responseKind: "json",
|
|
3382
|
+
errors: [
|
|
3383
|
+
"auth:forbidden",
|
|
3384
|
+
"validation:invalid_input",
|
|
3385
|
+
"resource:not_found",
|
|
3386
|
+
"resource:conflict",
|
|
3387
|
+
"server:internal_error"
|
|
3388
|
+
]
|
|
3040
3389
|
}
|
|
3041
3390
|
});
|
|
3042
3391
|
//#endregion
|
|
@@ -3469,19 +3818,105 @@ const BILLING_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
3469
3818
|
responseKind: "json"
|
|
3470
3819
|
}
|
|
3471
3820
|
});
|
|
3821
|
+
//#endregion
|
|
3822
|
+
//#region ../api/src/bookingPeopleEndpointDefinitions.ts
|
|
3823
|
+
/**
|
|
3824
|
+
* People endpoints (#1356): the People list, its CSV export, and deleting a
|
|
3825
|
+
* person when nothing is attached to them.
|
|
3826
|
+
*/
|
|
3827
|
+
const BOOKING_PEOPLE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
3828
|
+
listPeople: {
|
|
3829
|
+
path: "/sites/{siteId}/bookings/people",
|
|
3830
|
+
method: "GET",
|
|
3831
|
+
tags: ["site-{siteId}", "customers-{siteId}"],
|
|
3832
|
+
auth: "user",
|
|
3833
|
+
responseKind: "json",
|
|
3834
|
+
errors: ["server:internal_error"]
|
|
3835
|
+
},
|
|
3836
|
+
exportPeopleCsv: {
|
|
3837
|
+
path: "/sites/{siteId}/bookings/people/export.csv",
|
|
3838
|
+
method: "GET",
|
|
3839
|
+
tags: ["site-{siteId}", "customers-{siteId}"],
|
|
3840
|
+
auth: "user",
|
|
3841
|
+
errors: [],
|
|
3842
|
+
responseKind: "blob"
|
|
3843
|
+
},
|
|
3844
|
+
checkPersonDeletion: {
|
|
3845
|
+
path: "/sites/{siteId}/bookings/people/{personId}/deletion-check",
|
|
3846
|
+
method: "GET",
|
|
3847
|
+
tags: ["site-{siteId}", "customers-{siteId}"],
|
|
3848
|
+
auth: "user",
|
|
3849
|
+
responseKind: "json",
|
|
3850
|
+
errors: [
|
|
3851
|
+
"auth:forbidden",
|
|
3852
|
+
"resource:not_found",
|
|
3853
|
+
"server:internal_error"
|
|
3854
|
+
]
|
|
3855
|
+
},
|
|
3856
|
+
deletePerson: {
|
|
3857
|
+
path: "/sites/{siteId}/bookings/people/{personId}",
|
|
3858
|
+
method: "DELETE",
|
|
3859
|
+
tags: ["site-{siteId}", "customers-{siteId}"],
|
|
3860
|
+
auth: "user",
|
|
3861
|
+
responseKind: "json",
|
|
3862
|
+
errors: [
|
|
3863
|
+
"auth:forbidden",
|
|
3864
|
+
"resource:not_found",
|
|
3865
|
+
"server:internal_error"
|
|
3866
|
+
]
|
|
3867
|
+
}
|
|
3868
|
+
});
|
|
3869
|
+
//#endregion
|
|
3870
|
+
//#region ../api/src/clientErrorReporting.ts
|
|
3871
|
+
const CLIENT_ERROR_REPORT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({ reportClientError: {
|
|
3872
|
+
path: "/client/error-report",
|
|
3873
|
+
method: "POST",
|
|
3874
|
+
auth: "user",
|
|
3875
|
+
errors: [],
|
|
3876
|
+
responseKind: "json"
|
|
3877
|
+
} });
|
|
3878
|
+
const CLIENT_ERROR_REPORT_LIMITS = {
|
|
3879
|
+
pathname: 1024,
|
|
3880
|
+
name: 120,
|
|
3881
|
+
message: 2e3,
|
|
3882
|
+
stack: 8e3,
|
|
3883
|
+
digest: 128,
|
|
3884
|
+
componentStack: 8e3,
|
|
3885
|
+
sourceLocation: 1024
|
|
3886
|
+
};
|
|
3887
|
+
const clientErrorEventSchema = z.enum([
|
|
3888
|
+
"dashboard:route-error",
|
|
3889
|
+
"dashboard:app-error",
|
|
3890
|
+
"client:error-boundary",
|
|
3891
|
+
"client:window-error",
|
|
3892
|
+
"client:unhandled-rejection"
|
|
3893
|
+
]);
|
|
3894
|
+
z.object({
|
|
3895
|
+
event: clientErrorEventSchema,
|
|
3896
|
+
pathname: z.string().startsWith("/").max(CLIENT_ERROR_REPORT_LIMITS.pathname),
|
|
3897
|
+
name: z.string().max(CLIENT_ERROR_REPORT_LIMITS.name),
|
|
3898
|
+
message: z.string().max(CLIENT_ERROR_REPORT_LIMITS.message),
|
|
3899
|
+
stack: z.string().max(CLIENT_ERROR_REPORT_LIMITS.stack).nullable(),
|
|
3900
|
+
digest: z.string().max(CLIENT_ERROR_REPORT_LIMITS.digest).nullable(),
|
|
3901
|
+
componentStack: z.string().max(CLIENT_ERROR_REPORT_LIMITS.componentStack).nullable(),
|
|
3902
|
+
sourceLocation: z.string().max(CLIENT_ERROR_REPORT_LIMITS.sourceLocation).nullable()
|
|
3903
|
+
}).strict();
|
|
3472
3904
|
({
|
|
3905
|
+
...SITE_LIFECYCLE_ENDPOINT_DEFINITIONS,
|
|
3906
|
+
...CLIENT_ERROR_REPORT_ENDPOINT_DEFINITIONS,
|
|
3473
3907
|
...PUBLIC_NEWSLETTER_ENDPOINT_DEFINITIONS,
|
|
3474
3908
|
...ACCOUNT_ENDPOINT_DEFINITIONS,
|
|
3475
3909
|
...PUBLIC_ONBOARDING_ATTEMPT_ENDPOINT_DEFINITIONS,
|
|
3476
3910
|
...PUBLIC_EVENT_ENDPOINT_DEFINITIONS,
|
|
3477
3911
|
...GIFTING_ENDPOINT_DEFINITIONS,
|
|
3478
3912
|
...PUBLIC_READ_ENDPOINT_DEFINITIONS,
|
|
3479
|
-
...BILLING_ENDPOINT_DEFINITIONS
|
|
3913
|
+
...BILLING_ENDPOINT_DEFINITIONS,
|
|
3914
|
+
...SITE_MANAGEMENT_ENDPOINT_DEFINITIONS
|
|
3480
3915
|
}), 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, {
|
|
3481
3916
|
...NEWSLETTER_ENDPOINT_DEFINITIONS,
|
|
3482
3917
|
...APPOINTMENT_ENDPOINT_DEFINITIONS,
|
|
3483
3918
|
...EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS
|
|
3484
|
-
}, 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 };
|
|
3919
|
+
}, 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 }, { ...BOOKING_PEOPLE_ENDPOINT_DEFINITIONS }, { ...SDK_MEDIA_ENDPOINT_DEFINITIONS }, { ...SDK_ENDPOINT_DEFINITIONS }, { ...SDK_PAGE_DESIGN_ENDPOINT_DEFINITIONS }, { ...SDK_EVENT_ENDPOINT_DEFINITIONS }, { ...SDK_ENTRY_READ_ENDPOINTS };
|
|
3485
3920
|
z.object({ refreshToken: z.string().min(1).max(4096) }).strict();
|
|
3486
3921
|
z.object({
|
|
3487
3922
|
accessToken: z.string().min(1).max(4096),
|
|
@@ -5982,13 +6417,16 @@ const SURFACE_FOREGROUND_CSS_VARS = {
|
|
|
5982
6417
|
text: "--rb-surface-text-color",
|
|
5983
6418
|
heading: "--rb-surface-heading-color",
|
|
5984
6419
|
link: "--rb-surface-link-color",
|
|
6420
|
+
linkHover: "--rb-surface-link-hover-color",
|
|
5985
6421
|
supporting: "--rb-surface-supporting-color"
|
|
5986
6422
|
};
|
|
5987
6423
|
const DEFAULT_SURFACE_TEXT_COLOR = "rgb(var(--tb-text, 17 24 39))";
|
|
6424
|
+
const DEFAULT_SURFACE_LINK_COLOR = "rgb(var(--tb-primary, var(--tb-text, 17 24 39)))";
|
|
5988
6425
|
const DEFAULT_ROLE_FALLBACKS = {
|
|
5989
6426
|
text: DEFAULT_SURFACE_TEXT_COLOR,
|
|
5990
6427
|
heading: DEFAULT_SURFACE_TEXT_COLOR,
|
|
5991
|
-
link:
|
|
6428
|
+
link: DEFAULT_SURFACE_LINK_COLOR,
|
|
6429
|
+
linkHover: DEFAULT_SURFACE_LINK_COLOR,
|
|
5992
6430
|
supporting: "rgb(var(--tb-mutedText, 100 116 139))"
|
|
5993
6431
|
};
|
|
5994
6432
|
function requireSurfaceColorValue(role, value) {
|
|
@@ -5998,10 +6436,12 @@ function requireSurfaceColorValue(role, value) {
|
|
|
5998
6436
|
}
|
|
5999
6437
|
function completeSurfaceForegrounds(input) {
|
|
6000
6438
|
const text = requireSurfaceColorValue("text", input.text);
|
|
6439
|
+
const link = input.link === void 0 ? text : requireSurfaceColorValue("link", input.link);
|
|
6001
6440
|
return {
|
|
6002
6441
|
text,
|
|
6003
6442
|
heading: input.heading === void 0 ? text : requireSurfaceColorValue("heading", input.heading),
|
|
6004
|
-
link
|
|
6443
|
+
link,
|
|
6444
|
+
linkHover: input.linkHover === void 0 ? link : requireSurfaceColorValue("linkHover", input.linkHover),
|
|
6005
6445
|
supporting: input.supporting === void 0 ? text : requireSurfaceColorValue("supporting", input.supporting)
|
|
6006
6446
|
};
|
|
6007
6447
|
}
|
|
@@ -6009,6 +6449,7 @@ function surfaceForegroundValue(role, outsideProviderFallback = DEFAULT_ROLE_FAL
|
|
|
6009
6449
|
const roleVariable = SURFACE_FOREGROUND_CSS_VARS[role];
|
|
6010
6450
|
const fallback = requireSurfaceColorValue("fallback", outsideProviderFallback);
|
|
6011
6451
|
if (role === "text") return `var(${roleVariable}, ${fallback})`;
|
|
6452
|
+
if (role === "linkHover") return `var(${roleVariable}, ${surfaceForegroundValue("link", fallback)})`;
|
|
6012
6453
|
return `var(${roleVariable}, var(${SURFACE_FOREGROUND_CSS_VARS.text}, ${fallback}))`;
|
|
6013
6454
|
}
|
|
6014
6455
|
function surfaceForegroundValueWithOpacity(role, opacityPercent) {
|
|
@@ -6022,9 +6463,25 @@ function surfaceForegroundStyle(input) {
|
|
|
6022
6463
|
[SURFACE_FOREGROUND_CSS_VARS.text]: foregrounds.text,
|
|
6023
6464
|
[SURFACE_FOREGROUND_CSS_VARS.heading]: foregrounds.heading,
|
|
6024
6465
|
[SURFACE_FOREGROUND_CSS_VARS.link]: foregrounds.link,
|
|
6025
|
-
[SURFACE_FOREGROUND_CSS_VARS.
|
|
6466
|
+
[SURFACE_FOREGROUND_CSS_VARS.linkHover]: foregrounds.linkHover,
|
|
6467
|
+
[SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting,
|
|
6468
|
+
"--rb-surface-link-hover-decoration": hoverDecoration(input)
|
|
6026
6469
|
};
|
|
6027
6470
|
}
|
|
6471
|
+
function surfaceForegroundInputFromResolved(foreground, color) {
|
|
6472
|
+
const { roles } = foreground;
|
|
6473
|
+
return {
|
|
6474
|
+
text: color(roles.text),
|
|
6475
|
+
heading: color(roles.heading),
|
|
6476
|
+
link: color(roles.link),
|
|
6477
|
+
linkHover: color(roles.linkHover),
|
|
6478
|
+
supporting: color(roles.supporting),
|
|
6479
|
+
hoverDecoration: foreground.hoverDecoration
|
|
6480
|
+
};
|
|
6481
|
+
}
|
|
6482
|
+
function hoverDecoration(input) {
|
|
6483
|
+
return input.hoverDecoration ?? "underline";
|
|
6484
|
+
}
|
|
6028
6485
|
//#endregion
|
|
6029
6486
|
//#region ../theme-core/src/buttons/constants.ts
|
|
6030
6487
|
/**
|
|
@@ -6779,6 +7236,64 @@ function parseAlpha(source) {
|
|
|
6779
7236
|
function isRgbChannel(value) {
|
|
6780
7237
|
return Number.isFinite(value) && value >= 0 && value <= 255;
|
|
6781
7238
|
}
|
|
7239
|
+
/**
|
|
7240
|
+
* Derive the hover foreground that belongs with a resolved resting foreground.
|
|
7241
|
+
*
|
|
7242
|
+
* A resting foreground is chosen to be legible against a known surface. A hover
|
|
7243
|
+
* state derived from it stays within a bounded distance of that colour, so it
|
|
7244
|
+
* inherits most of the resting colour's contrast margin instead of asserting
|
|
7245
|
+
* an unrelated brand colour that no one checked against the surface.
|
|
7246
|
+
*
|
|
7247
|
+
* That bounded-distance property is what lets this be used on a transparent
|
|
7248
|
+
* overlay header, where the backdrop is only partly knowable: the scrolled
|
|
7249
|
+
* state composites a 60% glass tint over arbitrary page content, so no
|
|
7250
|
+
* compile-time contrast proof is available there. Staying near a colour that
|
|
7251
|
+
* is already trusted in both states is a weaker claim than a contrast proof,
|
|
7252
|
+
* and it is one this function can actually keep.
|
|
7253
|
+
*
|
|
7254
|
+
* Returns `null` when the resting token is not a plain palette token — an
|
|
7255
|
+
* already-faded or raw value has no well-defined softening, and the caller
|
|
7256
|
+
* should leave hover alone rather than guess.
|
|
7257
|
+
*/
|
|
7258
|
+
function deriveForegroundHoverToken(restingToken) {
|
|
7259
|
+
const parts = parseColorTokenParts(restingToken);
|
|
7260
|
+
if (parts.kind !== "token") return null;
|
|
7261
|
+
if (parts.opacityPercent !== null) return null;
|
|
7262
|
+
return parseThemeColorToken(`${parts.token}/85`);
|
|
7263
|
+
}
|
|
7264
|
+
/**
|
|
7265
|
+
* Prefer an authored hover that survives every measured backdrop, then a
|
|
7266
|
+
* checked softening of the resting colour. A null backdrop set represents a
|
|
7267
|
+
* trusted treatment: only an explicit authored hover may change the colour.
|
|
7268
|
+
* When neither option works, retain the resting colour and underline it.
|
|
7269
|
+
*/
|
|
7270
|
+
function planForegroundHover(input) {
|
|
7271
|
+
const { restingToken, candidate, palette, backdrops } = input;
|
|
7272
|
+
if (candidate && candidate !== restingToken) {
|
|
7273
|
+
if (backdrops === null || survivesEveryBackdrop(candidate, palette, backdrops)) return {
|
|
7274
|
+
kind: "candidate",
|
|
7275
|
+
token: candidate,
|
|
7276
|
+
decoration: "initial"
|
|
7277
|
+
};
|
|
7278
|
+
}
|
|
7279
|
+
const softened = deriveForegroundHoverToken(restingToken);
|
|
7280
|
+
if (softened && backdrops && survivesEveryBackdrop(softened, palette, backdrops)) return {
|
|
7281
|
+
kind: "softened",
|
|
7282
|
+
token: softened,
|
|
7283
|
+
decoration: "initial"
|
|
7284
|
+
};
|
|
7285
|
+
return {
|
|
7286
|
+
kind: "resting",
|
|
7287
|
+
token: restingToken,
|
|
7288
|
+
decoration: "underline"
|
|
7289
|
+
};
|
|
7290
|
+
}
|
|
7291
|
+
function survivesEveryBackdrop(token, palette, backdrops) {
|
|
7292
|
+
return backdrops.length > 0 && backdrops.every((backdrop) => {
|
|
7293
|
+
const foreground = resolveOpaqueSurfaceHex(token, palette, backdrop);
|
|
7294
|
+
return foreground !== null && contrastRatio(foreground, backdrop) >= 4.5;
|
|
7295
|
+
});
|
|
7296
|
+
}
|
|
6782
7297
|
//#endregion
|
|
6783
7298
|
//#region ../theme-core/src/surfaces/resolveSurfaceForeground.ts
|
|
6784
7299
|
const FALLBACK_TEXT_TOKENS = [
|
|
@@ -6825,12 +7340,16 @@ function resolveSurfaceForeground(background, palette, candidates = {}, options
|
|
|
6825
7340
|
}
|
|
6826
7341
|
function foregroundCandidates(background, overrides) {
|
|
6827
7342
|
return {
|
|
6828
|
-
text: overrides.text
|
|
6829
|
-
heading: overrides.heading
|
|
6830
|
-
link: overrides.link
|
|
6831
|
-
|
|
7343
|
+
text: candidateOrBackground(overrides.text, background?.textColor),
|
|
7344
|
+
heading: candidateOrBackground(overrides.heading, background?.headingColor),
|
|
7345
|
+
link: candidateOrBackground(overrides.link, background?.linkColor),
|
|
7346
|
+
linkHover: candidateOrBackground(overrides.linkHover),
|
|
7347
|
+
supporting: candidateOrBackground(overrides.supporting, background?.supportingColor)
|
|
6832
7348
|
};
|
|
6833
7349
|
}
|
|
7350
|
+
function candidateOrBackground(candidate, backgroundValue) {
|
|
7351
|
+
return candidate ?? backgroundValue ?? null;
|
|
7352
|
+
}
|
|
6834
7353
|
function resolveDeterministicForeground(backgroundReference, candidates, palette, compositeBase) {
|
|
6835
7354
|
const backgroundHex = resolveOpaqueSurfaceHex(backgroundReference, palette, compositeBase);
|
|
6836
7355
|
if (!backgroundHex) return resolveTrustedTreatmentForeground(candidates, palette);
|
|
@@ -6842,29 +7361,51 @@ function resolveDeterministicForeground(backgroundReference, candidates, palette
|
|
|
6842
7361
|
...FALLBACK_TEXT_TOKENS
|
|
6843
7362
|
], backgroundHex, palette, derivedOnToken ? [derivedOnToken] : []);
|
|
6844
7363
|
if (!text) return { kind: "unknown" };
|
|
6845
|
-
return {
|
|
6846
|
-
|
|
6847
|
-
|
|
6848
|
-
|
|
6849
|
-
|
|
6850
|
-
|
|
6851
|
-
|
|
6852
|
-
|
|
6853
|
-
};
|
|
7364
|
+
return knownForeground({
|
|
7365
|
+
text,
|
|
7366
|
+
heading: safeTokenOr(candidates.heading, text, backgroundHex, palette),
|
|
7367
|
+
link: safeTokenOr(candidates.link, text, backgroundHex, palette),
|
|
7368
|
+
supporting: safeTokenOr(candidates.supporting, text, backgroundHex, palette)
|
|
7369
|
+
}, {
|
|
7370
|
+
kind: "measured",
|
|
7371
|
+
backdropHex: backgroundHex
|
|
7372
|
+
}, candidates.linkHover, palette);
|
|
6854
7373
|
}
|
|
6855
7374
|
function resolveTrustedTreatmentForeground(candidates, palette) {
|
|
6856
7375
|
const text = canonicalToken(candidates.text, palette);
|
|
6857
7376
|
if (!text) return { kind: "unknown" };
|
|
7377
|
+
return knownForeground({
|
|
7378
|
+
text,
|
|
7379
|
+
heading: canonicalToken(candidates.heading, palette) ?? text,
|
|
7380
|
+
link: canonicalToken(candidates.link, palette) ?? text,
|
|
7381
|
+
supporting: canonicalToken(candidates.supporting, palette) ?? text
|
|
7382
|
+
}, { kind: "trusted-treatment" }, candidates.linkHover, palette);
|
|
7383
|
+
}
|
|
7384
|
+
function knownForeground(roles, provenance, hoverCandidate, palette) {
|
|
7385
|
+
const hover = planForegroundHover({
|
|
7386
|
+
restingToken: roles.link,
|
|
7387
|
+
candidate: canonicalHoverToken(hoverCandidate, palette),
|
|
7388
|
+
palette,
|
|
7389
|
+
backdrops: provenance.kind === "measured" ? [provenance.backdropHex] : null
|
|
7390
|
+
});
|
|
6858
7391
|
return {
|
|
6859
7392
|
kind: "known",
|
|
7393
|
+
provenance,
|
|
6860
7394
|
roles: {
|
|
6861
|
-
|
|
6862
|
-
|
|
6863
|
-
|
|
6864
|
-
|
|
6865
|
-
}
|
|
7395
|
+
...roles,
|
|
7396
|
+
linkHover: hover.token
|
|
7397
|
+
},
|
|
7398
|
+
hoverDecoration: hover.decoration
|
|
6866
7399
|
};
|
|
6867
7400
|
}
|
|
7401
|
+
function canonicalHoverToken(reference, palette) {
|
|
7402
|
+
const token = parseThemeColorToken(reference);
|
|
7403
|
+
if (token) {
|
|
7404
|
+
const parts = parseColorTokenParts(token);
|
|
7405
|
+
if (parts.kind === "token" && resolveConcreteColorHex(parts.token, palette)) return token;
|
|
7406
|
+
}
|
|
7407
|
+
return canonicalToken(reference, palette);
|
|
7408
|
+
}
|
|
6868
7409
|
function safeTokenOr(candidate, fallback, backgroundHex, palette) {
|
|
6869
7410
|
return firstSafeToken([candidate], backgroundHex, palette) ?? fallback;
|
|
6870
7411
|
}
|
|
@@ -9804,6 +10345,43 @@ const effectCompositionSchema = z.object({
|
|
|
9804
10345
|
/** Effects applied on focus */
|
|
9805
10346
|
focus: z.array(effectApplicationSchema).optional()
|
|
9806
10347
|
});
|
|
10348
|
+
const policiesById = {
|
|
10349
|
+
"darken-background": "other",
|
|
10350
|
+
"lighten-background": "other",
|
|
10351
|
+
"fade-background": "other",
|
|
10352
|
+
"opacity-reduce": "other",
|
|
10353
|
+
"animated-gradient": "other",
|
|
10354
|
+
"background-on-hover": "paired-hover",
|
|
10355
|
+
"background-on-hover-alpha": "paired-hover",
|
|
10356
|
+
"border-glow": "other",
|
|
10357
|
+
"drop-shadow": "other",
|
|
10358
|
+
"inner-shadow": "other",
|
|
10359
|
+
"neumorphic-shadow": "other",
|
|
10360
|
+
"outer-glow": "other",
|
|
10361
|
+
"retro-3d-shadow": "other",
|
|
10362
|
+
"scale-up": "other",
|
|
10363
|
+
"scale-down": "other",
|
|
10364
|
+
lift: "other",
|
|
10365
|
+
"press-down": "other",
|
|
10366
|
+
pop: "other",
|
|
10367
|
+
"aurora-glow": "other",
|
|
10368
|
+
"cosmic-stardust": "other",
|
|
10369
|
+
"gradient-border-fill": "other",
|
|
10370
|
+
"animated-gradient-border-fill": "other",
|
|
10371
|
+
"border-bottom-grow": "other",
|
|
10372
|
+
"gradient-text": "other",
|
|
10373
|
+
"text-color-change": "text-colour",
|
|
10374
|
+
"border-color-change": "other",
|
|
10375
|
+
"sketchy-border": "other",
|
|
10376
|
+
"pulse-animation": "other",
|
|
10377
|
+
"nav-underline": "underline",
|
|
10378
|
+
"nav-frosted-base": "other",
|
|
10379
|
+
"nav-frosted-hover": "other",
|
|
10380
|
+
"nav-frosted-active": "other"
|
|
10381
|
+
};
|
|
10382
|
+
function navEffectPolicy(effectId) {
|
|
10383
|
+
return policiesById[effectId] ?? null;
|
|
10384
|
+
}
|
|
9807
10385
|
//#endregion
|
|
9808
10386
|
//#region ../theme-core/src/navigation/types.ts
|
|
9809
10387
|
/**
|
|
@@ -9892,6 +10470,16 @@ const navLinkStyleSchema = z.object({
|
|
|
9892
10470
|
/** Composable effects */
|
|
9893
10471
|
effects: effectCompositionSchema.optional()
|
|
9894
10472
|
});
|
|
10473
|
+
function navLinkHoverColorCandidate(style) {
|
|
10474
|
+
const effect = style?.effects?.hover?.find((item) => navEffectPolicy(item.effectId) === "text-colour");
|
|
10475
|
+
return parseThemeColorToken(effect?.options?.hoverColorToken ?? style?.hoverColorToken);
|
|
10476
|
+
}
|
|
10477
|
+
function navLinkOwnsHoverForeground(style) {
|
|
10478
|
+
return style?.effects?.hover?.some((effect) => navEffectPolicy(effect.effectId) === "paired-hover") ?? false;
|
|
10479
|
+
}
|
|
10480
|
+
function navLinkOwnsUnderline(style) {
|
|
10481
|
+
return style?.effects?.hover?.some((effect) => navEffectPolicy(effect.effectId) === "underline") ?? false;
|
|
10482
|
+
}
|
|
9895
10483
|
//#endregion
|
|
9896
10484
|
//#region ../theme-core/src/customCss/validation.ts
|
|
9897
10485
|
/**
|
|
@@ -16080,6 +16668,14 @@ const blockDesignFallback = {
|
|
|
16080
16668
|
};
|
|
16081
16669
|
blockDesignFallback.sectionSurface, blockDesignFallback.contentFrame, blockDesignFallback.sectionHeight, blockDesignFallback.heroLegibility, blockDesignFallback.imageSurfaceTreatment, blockDesignFallback.imageSurfaceMotion, blockDesignFallback.tileTreatment, blockDesignFallback.eventListTreatment, blockDesignFallback.eyebrowTreatment, blockDesignFallback.accordionIconTreatment, blockDesignFallback.composition;
|
|
16082
16670
|
//#endregion
|
|
16671
|
+
//#region ../theme-core/src/header/rootPaint.ts
|
|
16672
|
+
/** The nav container takes precedence when a floating header also has one. */
|
|
16673
|
+
function headerRootPaint(header) {
|
|
16674
|
+
const navContainerType = header?.navContainer?.type ?? "none";
|
|
16675
|
+
if (navContainerType === "glass" || navContainerType === "pill") return "contained-nav";
|
|
16676
|
+
return header?.variant === "floating" ? "overlay" : "own-surface";
|
|
16677
|
+
}
|
|
16678
|
+
//#endregion
|
|
16083
16679
|
//#region ../theme-core/src/site-styles/siteChromeBackgrounds.ts
|
|
16084
16680
|
const siteChromeBackgroundColorTokens = toSiteChromeBackgroundColorTokens(backgroundAppearanceColorTokenNames);
|
|
16085
16681
|
const quickSiteChromeBackgroundColorTokens = toSiteChromeBackgroundColorTokens(backgroundAppearanceQuickColorTokenNames);
|
|
@@ -16259,6 +16855,259 @@ z.object(headerPreferencesShape).omit({
|
|
|
16259
16855
|
structure: true
|
|
16260
16856
|
}).strict();
|
|
16261
16857
|
//#endregion
|
|
16858
|
+
//#region ../theme-core/src/navigation/presets.ts
|
|
16859
|
+
/**
|
|
16860
|
+
* Built-in nav link style presets
|
|
16861
|
+
*
|
|
16862
|
+
* Each preset uses composable effects to achieve its look.
|
|
16863
|
+
*/
|
|
16864
|
+
const NAV_LINK_PRESETS = {
|
|
16865
|
+
/**
|
|
16866
|
+
* Minimal - subtle color change on hover
|
|
16867
|
+
*/
|
|
16868
|
+
minimal: {
|
|
16869
|
+
name: "Minimal",
|
|
16870
|
+
typography: "body",
|
|
16871
|
+
fontWeight: "medium",
|
|
16872
|
+
textTransform: "none",
|
|
16873
|
+
italic: false,
|
|
16874
|
+
colorToken: "text",
|
|
16875
|
+
hoverColorToken: "primary",
|
|
16876
|
+
padding: "none",
|
|
16877
|
+
borderRadius: "none",
|
|
16878
|
+
effects: { hover: [{
|
|
16879
|
+
effectId: "text-color-change",
|
|
16880
|
+
options: { hoverColorToken: "primary" }
|
|
16881
|
+
}] }
|
|
16882
|
+
},
|
|
16883
|
+
/**
|
|
16884
|
+
* Underline - static underline appears on hover
|
|
16885
|
+
*/
|
|
16886
|
+
underline: {
|
|
16887
|
+
name: "Underline",
|
|
16888
|
+
typography: "body",
|
|
16889
|
+
fontWeight: "medium",
|
|
16890
|
+
textTransform: "none",
|
|
16891
|
+
italic: false,
|
|
16892
|
+
colorToken: "text",
|
|
16893
|
+
padding: "none",
|
|
16894
|
+
borderRadius: "none",
|
|
16895
|
+
effects: { hover: [{
|
|
16896
|
+
effectId: "nav-underline",
|
|
16897
|
+
options: { style: "static" }
|
|
16898
|
+
}] }
|
|
16899
|
+
},
|
|
16900
|
+
/**
|
|
16901
|
+
* Underline Grow - animated underline grows from center on hover
|
|
16902
|
+
*/
|
|
16903
|
+
"underline-grow": {
|
|
16904
|
+
name: "Underline Grow",
|
|
16905
|
+
typography: "body",
|
|
16906
|
+
fontWeight: "medium",
|
|
16907
|
+
textTransform: "none",
|
|
16908
|
+
italic: false,
|
|
16909
|
+
colorToken: "text",
|
|
16910
|
+
padding: "none",
|
|
16911
|
+
borderRadius: "none",
|
|
16912
|
+
effects: { hover: [{
|
|
16913
|
+
effectId: "nav-underline",
|
|
16914
|
+
options: { style: "grow" }
|
|
16915
|
+
}] }
|
|
16916
|
+
},
|
|
16917
|
+
/**
|
|
16918
|
+
* Capsule - pill-shaped background on hover
|
|
16919
|
+
*/
|
|
16920
|
+
capsule: {
|
|
16921
|
+
name: "Capsule",
|
|
16922
|
+
typography: "body",
|
|
16923
|
+
fontWeight: "medium",
|
|
16924
|
+
textTransform: "none",
|
|
16925
|
+
italic: false,
|
|
16926
|
+
colorToken: "text",
|
|
16927
|
+
padding: "compact",
|
|
16928
|
+
borderRadius: "full",
|
|
16929
|
+
effects: {
|
|
16930
|
+
hover: [{
|
|
16931
|
+
effectId: "background-on-hover-alpha",
|
|
16932
|
+
options: {
|
|
16933
|
+
colorToken: "primary",
|
|
16934
|
+
opacity: 10
|
|
16935
|
+
}
|
|
16936
|
+
}],
|
|
16937
|
+
active: [{
|
|
16938
|
+
effectId: "background-on-hover-alpha",
|
|
16939
|
+
options: {
|
|
16940
|
+
colorToken: "primary",
|
|
16941
|
+
opacity: 15
|
|
16942
|
+
}
|
|
16943
|
+
}]
|
|
16944
|
+
}
|
|
16945
|
+
},
|
|
16946
|
+
/**
|
|
16947
|
+
* Solid - solid background color on hover
|
|
16948
|
+
*/
|
|
16949
|
+
solid: {
|
|
16950
|
+
name: "Solid",
|
|
16951
|
+
typography: "body",
|
|
16952
|
+
fontWeight: "medium",
|
|
16953
|
+
textTransform: "none",
|
|
16954
|
+
italic: false,
|
|
16955
|
+
colorToken: "text",
|
|
16956
|
+
padding: "compact",
|
|
16957
|
+
borderRadius: "none",
|
|
16958
|
+
effects: {
|
|
16959
|
+
hover: [{
|
|
16960
|
+
effectId: "background-on-hover",
|
|
16961
|
+
options: {
|
|
16962
|
+
colorToken: "primary",
|
|
16963
|
+
textColorToken: "primaryForeground"
|
|
16964
|
+
}
|
|
16965
|
+
}],
|
|
16966
|
+
active: [{
|
|
16967
|
+
effectId: "background-on-hover",
|
|
16968
|
+
options: {
|
|
16969
|
+
colorToken: "primary",
|
|
16970
|
+
textColorToken: "primaryForeground"
|
|
16971
|
+
}
|
|
16972
|
+
}]
|
|
16973
|
+
}
|
|
16974
|
+
},
|
|
16975
|
+
/**
|
|
16976
|
+
* Scale - gentle scale-up on hover
|
|
16977
|
+
*/
|
|
16978
|
+
scale: {
|
|
16979
|
+
name: "Scale",
|
|
16980
|
+
typography: "body",
|
|
16981
|
+
fontWeight: "medium",
|
|
16982
|
+
textTransform: "none",
|
|
16983
|
+
italic: false,
|
|
16984
|
+
colorToken: "text",
|
|
16985
|
+
padding: "none",
|
|
16986
|
+
borderRadius: "none",
|
|
16987
|
+
effects: { hover: [{
|
|
16988
|
+
effectId: "scale-up",
|
|
16989
|
+
options: { scale: 1.05 }
|
|
16990
|
+
}] }
|
|
16991
|
+
},
|
|
16992
|
+
/**
|
|
16993
|
+
* Frosted - semi-transparent glass-like background
|
|
16994
|
+
*/
|
|
16995
|
+
frosted: {
|
|
16996
|
+
name: "Frosted",
|
|
16997
|
+
typography: "body",
|
|
16998
|
+
fontWeight: "medium",
|
|
16999
|
+
textTransform: "none",
|
|
17000
|
+
italic: false,
|
|
17001
|
+
colorToken: "text",
|
|
17002
|
+
padding: "compact",
|
|
17003
|
+
borderRadius: "md",
|
|
17004
|
+
effects: {
|
|
17005
|
+
base: [{ effectId: "nav-frosted-base" }],
|
|
17006
|
+
hover: [{ effectId: "nav-frosted-hover" }],
|
|
17007
|
+
active: [{ effectId: "nav-frosted-active" }]
|
|
17008
|
+
}
|
|
17009
|
+
}
|
|
17010
|
+
};
|
|
17011
|
+
/**
|
|
17012
|
+
* Get a nav link style preset by ID
|
|
17013
|
+
*/
|
|
17014
|
+
function getNavLinkPreset(presetId) {
|
|
17015
|
+
return NAV_LINK_PRESETS[presetId];
|
|
17016
|
+
}
|
|
17017
|
+
Object.keys(NAV_LINK_PRESETS);
|
|
17018
|
+
//#endregion
|
|
17019
|
+
//#region ../theme-core/src/header/legacyNavLinkStyle.ts
|
|
17020
|
+
function buildLegacyHeaderNavLinkStyle(header, contrastTreatment, navTextSize) {
|
|
17021
|
+
const navStyle = header.navStyle ?? "minimal";
|
|
17022
|
+
const basePreset = getNavLinkPreset(navStyle);
|
|
17023
|
+
if (!basePreset) return null;
|
|
17024
|
+
const style = {
|
|
17025
|
+
...basePreset,
|
|
17026
|
+
fontWeight: header.navWeight ?? basePreset.fontWeight,
|
|
17027
|
+
colorToken: (header.navColor ?? header.textColor)?.trim() || basePreset.colorToken,
|
|
17028
|
+
...contrastTreatment ? { contrastTreatment } : {},
|
|
17029
|
+
...navTextSize ? { textSize: navTextSize } : {}
|
|
17030
|
+
};
|
|
17031
|
+
if (header.navWeight === "bold" && navStyle === "solid") style.textTransform = "uppercase";
|
|
17032
|
+
applyLegacyGlassTreatment(style, header, navStyle);
|
|
17033
|
+
return style;
|
|
17034
|
+
}
|
|
17035
|
+
function applyLegacyGlassTreatment(style, header, navStyle) {
|
|
17036
|
+
if (header.navContainer?.type !== "glass" || navStyle !== "minimal") return;
|
|
17037
|
+
style.borderRadius = "full";
|
|
17038
|
+
style.effects = {
|
|
17039
|
+
...style.effects,
|
|
17040
|
+
hover: glassStateEffects(10),
|
|
17041
|
+
active: glassStateEffects(18)
|
|
17042
|
+
};
|
|
17043
|
+
}
|
|
17044
|
+
function glassStateEffects(opacity) {
|
|
17045
|
+
return [{
|
|
17046
|
+
effectId: "background-on-hover-alpha",
|
|
17047
|
+
options: {
|
|
17048
|
+
colorToken: "neutral-50",
|
|
17049
|
+
opacity
|
|
17050
|
+
}
|
|
17051
|
+
}, {
|
|
17052
|
+
effectId: "text-color-change",
|
|
17053
|
+
options: { hoverColorToken: "neutral-50" }
|
|
17054
|
+
}];
|
|
17055
|
+
}
|
|
17056
|
+
//#endregion
|
|
17057
|
+
//#region ../theme-core/src/header/openingForegroundProjection.ts
|
|
17058
|
+
function readOpeningForegroundProjection(header) {
|
|
17059
|
+
return header?.__runtimeOpeningForeground ?? null;
|
|
17060
|
+
}
|
|
17061
|
+
//#endregion
|
|
17062
|
+
//#region ../theme-core/src/header/effectiveNavLinkStyle.ts
|
|
17063
|
+
function effectiveHeaderNavLinkStyle(header, contrastTreatment = null, navTextSize = null) {
|
|
17064
|
+
if (!header) return null;
|
|
17065
|
+
if (!header.navLinkStyle) return buildLegacyHeaderNavLinkStyle(header, contrastTreatment, navTextSize);
|
|
17066
|
+
return {
|
|
17067
|
+
...header.navLinkStyle,
|
|
17068
|
+
...contrastTreatment ? { contrastTreatment } : {},
|
|
17069
|
+
...navTextSize ? { textSize: navTextSize } : {}
|
|
17070
|
+
};
|
|
17071
|
+
}
|
|
17072
|
+
function headerForegroundCandidates(header) {
|
|
17073
|
+
if (!header) return {};
|
|
17074
|
+
const style = effectiveHeaderNavLinkStyle(header);
|
|
17075
|
+
return {
|
|
17076
|
+
text: header.textColor ?? header.background?.textColor,
|
|
17077
|
+
link: style?.colorToken ?? header.navColor ?? header.textColor,
|
|
17078
|
+
linkHover: navLinkHoverColorCandidate(style)
|
|
17079
|
+
};
|
|
17080
|
+
}
|
|
17081
|
+
function headerLeafTextColor(header) {
|
|
17082
|
+
if (!header) return "text";
|
|
17083
|
+
return header.textColor ?? header.navColor ?? header.background?.textColor ?? header.navLinkStyle?.colorToken ?? "text";
|
|
17084
|
+
}
|
|
17085
|
+
/** Transparent chrome must reset the whole contract on its own root. */
|
|
17086
|
+
function transparentHeaderForegroundInput(header, palette) {
|
|
17087
|
+
const projection = readOpeningForegroundProjection(header);
|
|
17088
|
+
if (projection?.kind === "known") return surfaceForegroundInputFromResolved(projection, rgbColorValue);
|
|
17089
|
+
return authoredTransparentHeaderForegroundInput(header, palette);
|
|
17090
|
+
}
|
|
17091
|
+
function authoredTransparentHeaderForegroundInput(header, palette) {
|
|
17092
|
+
const text = headerLeafTextColor(header);
|
|
17093
|
+
const style = effectiveHeaderNavLinkStyle(header);
|
|
17094
|
+
const link = style?.colorToken ?? text;
|
|
17095
|
+
const restingToken = parseThemeColorToken(link) ?? parseThemeColorToken("text");
|
|
17096
|
+
if (!restingToken) throw new Error("Built-in text colour token is invalid");
|
|
17097
|
+
const hover = planForegroundHover({
|
|
17098
|
+
restingToken,
|
|
17099
|
+
candidate: navLinkOwnsHoverForeground(style) ? null : navLinkHoverColorCandidate(style),
|
|
17100
|
+
palette,
|
|
17101
|
+
backdrops: null
|
|
17102
|
+
});
|
|
17103
|
+
return {
|
|
17104
|
+
text: rgbColorValue(text),
|
|
17105
|
+
link: rgbColorValue(link),
|
|
17106
|
+
linkHover: rgbColorValue(hover.token),
|
|
17107
|
+
hoverDecoration: navLinkOwnsUnderline(style) ? "initial" : hover.decoration
|
|
17108
|
+
};
|
|
17109
|
+
}
|
|
17110
|
+
//#endregion
|
|
16262
17111
|
//#region ../theme-core/src/site-styles/pageDesignAuthority.ts
|
|
16263
17112
|
const nonEmptyStringSchema = z.string().min(1);
|
|
16264
17113
|
const blockContentVersionIdSchema = nonEmptyStringSchema.transform(asBlockContentVersionId);
|
|
@@ -16411,6 +17260,28 @@ z.object({
|
|
|
16411
17260
|
motion: z.enum(themeTokenRecipeOptions.motion)
|
|
16412
17261
|
});
|
|
16413
17262
|
//#endregion
|
|
17263
|
+
//#region ../theme-core/src/footer/effectiveNavLinkStyle.ts
|
|
17264
|
+
function effectiveFooterNavLinkStyle(footer) {
|
|
17265
|
+
if (!footer) return null;
|
|
17266
|
+
if (footer.navLinkStyle) return footer.navLinkStyle;
|
|
17267
|
+
const basePreset = getNavLinkPreset(footer.navStyle ?? "minimal");
|
|
17268
|
+
if (!basePreset) return null;
|
|
17269
|
+
return {
|
|
17270
|
+
...basePreset,
|
|
17271
|
+
fontWeight: footer.navWeight ?? basePreset.fontWeight,
|
|
17272
|
+
colorToken: footer.navColor?.trim() || basePreset.colorToken
|
|
17273
|
+
};
|
|
17274
|
+
}
|
|
17275
|
+
function footerForegroundCandidates(footer, proseHoverCandidate) {
|
|
17276
|
+
if (!footer) return {};
|
|
17277
|
+
const style = effectiveFooterNavLinkStyle(footer);
|
|
17278
|
+
return {
|
|
17279
|
+
text: footer.background?.textColor,
|
|
17280
|
+
link: style?.colorToken ?? footer.navColor ?? footer.background?.textColor,
|
|
17281
|
+
linkHover: navLinkOwnsHoverForeground(style) ? proseHoverCandidate : navLinkHoverColorCandidate(style)
|
|
17282
|
+
};
|
|
17283
|
+
}
|
|
17284
|
+
//#endregion
|
|
16414
17285
|
//#region ../theme-core/src/siteChromeOverlayClearance.ts
|
|
16415
17286
|
const SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
|
|
16416
17287
|
//#endregion
|
|
@@ -19384,33 +20255,28 @@ function resolveBackgroundColorValue(value, context) {
|
|
|
19384
20255
|
//#endregion
|
|
19385
20256
|
//#region ../blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.ts
|
|
19386
20257
|
const contextualButtonStylesCache = /* @__PURE__ */ new WeakMap();
|
|
19387
|
-
function resolveHeaderLeafTextColor(header) {
|
|
19388
|
-
return header?.textColor ?? header?.navColor ?? header?.background?.textColor ?? header?.navLinkStyle?.colorToken ?? "text";
|
|
19389
|
-
}
|
|
19390
20258
|
function resolveHeaderRootForeground(header, palette, isTransparent) {
|
|
19391
|
-
if (isTransparent) return { kind: "unknown" };
|
|
20259
|
+
if (isTransparent) return readOpeningForegroundProjection(header) ?? { kind: "unknown" };
|
|
19392
20260
|
const background = header?.background;
|
|
19393
20261
|
return resolveSurfaceForeground(background ?? {
|
|
19394
20262
|
type: "color",
|
|
19395
20263
|
color: "surface"
|
|
19396
|
-
}, palette,
|
|
19397
|
-
|
|
19398
|
-
|
|
19399
|
-
|
|
20264
|
+
}, palette, headerForegroundCandidates(header));
|
|
20265
|
+
}
|
|
20266
|
+
function resolveFooterRootForeground(footer, palette, proseHoverCandidate) {
|
|
20267
|
+
return resolveSurfaceForeground(footer?.background ?? {
|
|
20268
|
+
type: "color",
|
|
20269
|
+
color: "surface"
|
|
20270
|
+
}, palette, footerForegroundCandidates(footer, proseHoverCandidate), { compositeBase: "background" });
|
|
19400
20271
|
}
|
|
19401
20272
|
function resolveSurfaceForegroundStyles(value, context, options) {
|
|
19402
20273
|
const input = parseBackgroundContent(value);
|
|
19403
|
-
const foreground = input ? resolveSurfaceForeground(input, context.theme.palette, {}, { compositeBase: options?.fallbackToken }) : { kind: "unknown" };
|
|
20274
|
+
const foreground = input ? resolveSurfaceForeground(input, context.theme.palette, { linkHover: context.proseHoverCandidate }, { compositeBase: options?.fallbackToken }) : { kind: "unknown" };
|
|
19404
20275
|
const buttonStyles = resolveContextualButtonStyles(input, foreground, context, options);
|
|
19405
20276
|
if (foreground.kind === "unknown") return buttonStyles;
|
|
19406
20277
|
return {
|
|
19407
20278
|
...buttonStyles,
|
|
19408
|
-
...surfaceForegroundStyle(
|
|
19409
|
-
text: resolveBackgroundColorValue(foreground.roles.text, context),
|
|
19410
|
-
heading: resolveBackgroundColorValue(foreground.roles.heading, context),
|
|
19411
|
-
link: resolveBackgroundColorValue(foreground.roles.link, context),
|
|
19412
|
-
supporting: resolveBackgroundColorValue(foreground.roles.supporting, context)
|
|
19413
|
-
})
|
|
20279
|
+
...surfaceForegroundStyle(surfaceForegroundInputFromResolved(foreground, (token) => resolveBackgroundColorValue(token, context)))
|
|
19414
20280
|
};
|
|
19415
20281
|
}
|
|
19416
20282
|
function resolveContextualButtonStyles(background, foreground, context, options) {
|
|
@@ -25226,10 +26092,7 @@ function resolveBackgroundVisualStyles(backgroundColor, defaultToken = "surface"
|
|
|
25226
26092
|
};
|
|
25227
26093
|
}
|
|
25228
26094
|
function resolveHeaderVisualStyles(header) {
|
|
25229
|
-
|
|
25230
|
-
const hasContainedNav = navContainerType === "glass" || navContainerType === "pill";
|
|
25231
|
-
const hasOverlayVariant = header?.variant === "floating";
|
|
25232
|
-
if (hasContainedNav || hasOverlayVariant) return {
|
|
26095
|
+
if (headerRootPaint(header) !== "own-surface") return {
|
|
25233
26096
|
backgroundToken: "transparent",
|
|
25234
26097
|
isTransparent: true
|
|
25235
26098
|
};
|
|
@@ -25240,23 +26103,7 @@ function resolveHeaderVisualStyles(header) {
|
|
|
25240
26103
|
}
|
|
25241
26104
|
function resolvedForegroundStyle(foreground) {
|
|
25242
26105
|
if (foreground.kind === "unknown") return void 0;
|
|
25243
|
-
|
|
25244
|
-
return surfaceForegroundStyle({
|
|
25245
|
-
text: rgbColorValue(roles.text),
|
|
25246
|
-
heading: rgbColorValue(roles.heading),
|
|
25247
|
-
link: rgbColorValue(roles.link),
|
|
25248
|
-
supporting: rgbColorValue(roles.supporting)
|
|
25249
|
-
});
|
|
25250
|
-
}
|
|
25251
|
-
function resolveFooterRootForeground(footer, palette) {
|
|
25252
|
-
const background = footer?.background;
|
|
25253
|
-
return resolveSurfaceForeground(background ?? {
|
|
25254
|
-
type: "color",
|
|
25255
|
-
color: "surface"
|
|
25256
|
-
}, palette, {
|
|
25257
|
-
text: background?.textColor,
|
|
25258
|
-
link: footer?.navLinkStyle?.colorToken ?? footer?.navColor ?? background?.textColor
|
|
25259
|
-
});
|
|
26106
|
+
return surfaceForegroundStyle(surfaceForegroundInputFromResolved(foreground, rgbColorValue));
|
|
25260
26107
|
}
|
|
25261
26108
|
function footerBottomBarBorderWidthStyle(width) {
|
|
25262
26109
|
if (!width) return void 0;
|
|
@@ -25283,8 +26130,7 @@ const headerRootClassTransform = {
|
|
|
25283
26130
|
const placement = planSiteChromePlacement(parseHeaderPositioning(content.positioning));
|
|
25284
26131
|
const header = asPartialObject(value);
|
|
25285
26132
|
const visuals = resolveHeaderVisualStyles(header);
|
|
25286
|
-
const
|
|
25287
|
-
const hasContainedNav = navContainerType === "glass" || navContainerType === "pill";
|
|
26133
|
+
const hasContainedNav = headerRootPaint(header) === "contained-nav";
|
|
25288
26134
|
const backgroundClass = visuals.isTransparent || hasContainedNav ? "rb-bg-transparent" : null;
|
|
25289
26135
|
const classes = [config.base, backgroundClass];
|
|
25290
26136
|
if (!hasContainedNav) {
|
|
@@ -25327,7 +26173,7 @@ const headerRootStyleTransform = {
|
|
|
25327
26173
|
run: (value, _options, context) => {
|
|
25328
26174
|
const header = asPartialObject(value);
|
|
25329
26175
|
const visuals = resolveHeaderVisualStyles(header);
|
|
25330
|
-
return mergeStyles(resolvedForegroundStyle(resolveHeaderRootForeground(header, context.theme.palette, visuals.isTransparent)) ?? { color: rgbColorValue(
|
|
26176
|
+
return mergeStyles(resolvedForegroundStyle(resolveHeaderRootForeground(header, context.theme.palette, visuals.isTransparent)) ?? (visuals.isTransparent ? surfaceForegroundStyle(transparentHeaderForegroundInput(header, context.theme.palette)) : { color: rgbColorValue(headerLeafTextColor(header)) }), borderColorStyle(header?.border?.colorToken ?? "border"));
|
|
25331
26177
|
}
|
|
25332
26178
|
};
|
|
25333
26179
|
const headerSectionBackgroundTransform = {
|
|
@@ -25335,9 +26181,7 @@ const headerSectionBackgroundTransform = {
|
|
|
25335
26181
|
kind: "string",
|
|
25336
26182
|
summary: "Resolve the inner site-header section background token",
|
|
25337
26183
|
run: (value) => {
|
|
25338
|
-
|
|
25339
|
-
const navContainerType = header?.navContainer?.type ?? "none";
|
|
25340
|
-
return header?.variant === "floating" || navContainerType === "glass" || navContainerType === "pill" ? "raw:transparent" : "background";
|
|
26184
|
+
return headerRootPaint(asPartialObject(value)) !== "own-surface" ? "raw:transparent" : "background";
|
|
25341
26185
|
}
|
|
25342
26186
|
};
|
|
25343
26187
|
const footerRootStyleTransform = {
|
|
@@ -25355,7 +26199,7 @@ const footerRootStyleTransform = {
|
|
|
25355
26199
|
styleParts.push(backgroundColorStyle(token));
|
|
25356
26200
|
}
|
|
25357
26201
|
}
|
|
25358
|
-
styleParts.push(resolvedForegroundStyle(resolveFooterRootForeground(footer, context.theme.palette)));
|
|
26202
|
+
styleParts.push(resolvedForegroundStyle(resolveFooterRootForeground(footer, context.theme.palette, context.proseHoverCandidate)));
|
|
25359
26203
|
styleParts.push(borderColorStyle("border"));
|
|
25360
26204
|
return mergeStyles(...styleParts);
|
|
25361
26205
|
}
|
|
@@ -25417,22 +26261,28 @@ const footerBottomBarStyleTransform = {
|
|
|
25417
26261
|
run: (value, _options, context) => {
|
|
25418
26262
|
const footer = asPartialObject(value);
|
|
25419
26263
|
const bottomBar = footer?.bottomBar;
|
|
25420
|
-
|
|
25421
|
-
const background = bottomBar?.background;
|
|
25422
|
-
if (background?.type === "color") styleParts.push(backgroundColorStyle(background.color ?? "surface"));
|
|
25423
|
-
styleParts.push(borderColorStyle(bottomBar?.borderTop?.colorToken ?? "border"), footerBottomBarBorderWidthStyle(bottomBar?.borderTop?.width));
|
|
25424
|
-
const foreground = resolveSurfaceForeground(background?.type === "color" ? background : {
|
|
25425
|
-
type: "color",
|
|
25426
|
-
color: "transparent"
|
|
25427
|
-
}, context.theme.palette, {
|
|
25428
|
-
text: bottomBar?.textColor,
|
|
25429
|
-
link: footer?.bottomTextLinkStyle?.colorToken ?? bottomBar?.textColor
|
|
25430
|
-
});
|
|
25431
|
-
if (background?.type === "color") styleParts.push(resolvedForegroundStyle(foreground));
|
|
25432
|
-
else if (bottomBar?.textColor) styleParts.push(textColorStyle(bottomBar.textColor));
|
|
25433
|
-
return mergeStyles(...styleParts);
|
|
26264
|
+
return mergeStyles(bottomBar?.background?.type === "color" ? backgroundColorStyle(bottomBar.background.color ?? "surface") : void 0, borderColorStyle(bottomBar?.borderTop?.colorToken ?? "border"), footerBottomBarBorderWidthStyle(bottomBar?.borderTop?.width), footerBottomBarForegroundStyle(footer, context.theme.palette));
|
|
25434
26265
|
}
|
|
25435
26266
|
};
|
|
26267
|
+
function footerBottomBarForegroundStyle(footer, palette) {
|
|
26268
|
+
if (!footer?.bottomBar) return void 0;
|
|
26269
|
+
const bar = footer.bottomBar;
|
|
26270
|
+
if (bar.background?.type !== "color") return backgroundlessBottomBarForegroundStyle(footer);
|
|
26271
|
+
return resolvedForegroundStyle(resolveSurfaceForeground(bar.background, palette, {
|
|
26272
|
+
text: bar.textColor,
|
|
26273
|
+
link: footer.bottomTextLinkStyle?.colorToken ?? bar.textColor,
|
|
26274
|
+
linkHover: footer.bottomTextLinkStyle?.hoverColorToken
|
|
26275
|
+
}, { compositeBase: measuredFooterBackdrop(footer, palette) }));
|
|
26276
|
+
}
|
|
26277
|
+
function backgroundlessBottomBarForegroundStyle(footer) {
|
|
26278
|
+
if (footer.background?.contentOwner === "site-chrome-editor") return;
|
|
26279
|
+
const textColor = footer.bottomBar?.textColor;
|
|
26280
|
+
return textColor ? textColorStyle(textColor) : void 0;
|
|
26281
|
+
}
|
|
26282
|
+
function measuredFooterBackdrop(footer, palette) {
|
|
26283
|
+
const foreground = resolveFooterRootForeground(footer, palette);
|
|
26284
|
+
return foreground.kind === "known" && foreground.provenance.kind === "measured" ? foreground.provenance.backdropHex : null;
|
|
26285
|
+
}
|
|
25436
26286
|
const footerSplitMainClassTransform = {
|
|
25437
26287
|
id: "layout.footerSplitMainClass",
|
|
25438
26288
|
kind: "string",
|
|
@@ -25528,7 +26378,7 @@ function chromeSurfaceTextToken(surface, theme, palette) {
|
|
|
25528
26378
|
case "header-root": {
|
|
25529
26379
|
const header = theme.header;
|
|
25530
26380
|
const foreground = resolveHeaderRootForeground(header, palette, resolveHeaderVisualStyles(header).isTransparent);
|
|
25531
|
-
return foreground.kind === "known" ? foreground.roles.text :
|
|
26381
|
+
return foreground.kind === "known" ? foreground.roles.text : headerLeafTextColor(header);
|
|
25532
26382
|
}
|
|
25533
26383
|
case "header-mobile-panel": return theme.header?.dropdownStyle?.textColor ?? "text";
|
|
25534
26384
|
case "footer-root": {
|
|
@@ -26112,13 +26962,13 @@ const hours = stack({
|
|
|
26112
26962
|
as: "p",
|
|
26113
26963
|
className: "rb-caption rb-opacity-70"
|
|
26114
26964
|
}, bind("module.timeZone"), when("module.timeZone"))], when("module.kind", { equals: "opening-hours" }));
|
|
26115
|
-
const socials = inline({ className: "rb-
|
|
26965
|
+
const socials = inline({ className: "rb-footer-socials" }, [link({
|
|
26116
26966
|
href: { $bind: { from: "social.href" } },
|
|
26117
26967
|
target: "_blank",
|
|
26118
26968
|
rel: "noreferrer noopener",
|
|
26119
26969
|
"aria-label": { $bind: { from: "social.label" } },
|
|
26120
|
-
className: "rb-nav-text transition-theme-standard"
|
|
26121
|
-
}, [icon({ className: "rb-
|
|
26970
|
+
className: "rb-footer-social-link rb-nav-text transition-theme-standard"
|
|
26971
|
+
}, [icon({ className: "rb-footer-social-icon" }, bind("social.icon"), when("social.icon")), text({ as: "span" }, bind("social.label"), when("social.icon", { equals: null }))], repeat("module.socialLinks", "social"))], when("module.kind", { equals: "social-links" }));
|
|
26122
26972
|
const authoredCopy = richText({
|
|
26123
26973
|
className: "rb-prose rb-prose-sm rb-max-w-none",
|
|
26124
26974
|
style: textColorStyle("text/80")
|
|
@@ -27615,7 +28465,9 @@ const bookingWizard = bookingForm(withApiBindings({
|
|
|
27615
28465
|
} },
|
|
27616
28466
|
formId: { $bind: { from: "content.formId" } },
|
|
27617
28467
|
form: { $bind: { from: "data.form" } },
|
|
27618
|
-
services: { $bind: { from: "data.services" } }
|
|
28468
|
+
services: { $bind: { from: "data.services" } },
|
|
28469
|
+
mailingList: { $bind: { from: "$root.mailingList" } },
|
|
28470
|
+
siteName: { $bind: { from: "$root.siteName" } }
|
|
27619
28471
|
}));
|
|
27620
28472
|
/** Both variants sit in the same section shell; only the inner layout differs. */
|
|
27621
28473
|
function bookingSection(children) {
|
|
@@ -28203,6 +29055,7 @@ const publicEventLoaderQuerySchemaShape = {
|
|
|
28203
29055
|
seriesSlug: z.string().optional(),
|
|
28204
29056
|
includeOccurrenceId: z.string().optional(),
|
|
28205
29057
|
readIntent: z.string().optional(),
|
|
29058
|
+
detailAdmission: z.string().optional(),
|
|
28206
29059
|
detailLevel: z.string().optional(),
|
|
28207
29060
|
readProfile: z.string().optional()
|
|
28208
29061
|
};
|
|
@@ -28369,11 +29222,11 @@ const publicEventBookingAvailabilitySchema = z.discriminatedUnion("kind", [z.obj
|
|
|
28369
29222
|
"series_archived",
|
|
28370
29223
|
"parent_archived",
|
|
28371
29224
|
"parent_inconsistent",
|
|
28372
|
-
"not_public",
|
|
28373
29225
|
"already_started",
|
|
28374
29226
|
"enrollment_closed"
|
|
28375
29227
|
])
|
|
28376
29228
|
})]);
|
|
29229
|
+
const publicEventBookingClosedDetailSchema = z.discriminatedUnion("kind", [z.object({ kind: z.literal("opensSoon") }), z.object({ kind: z.literal("paused") })]);
|
|
28377
29230
|
const publicRunSessionSchema = z.object({
|
|
28378
29231
|
occurrenceId: z.string(),
|
|
28379
29232
|
startsAt: z.string(),
|
|
@@ -28418,6 +29271,7 @@ const publicEventBaseSchema = z.object({
|
|
|
28418
29271
|
destination: publicEventDestinationSchema,
|
|
28419
29272
|
requiresRegistration: z.boolean(),
|
|
28420
29273
|
bookingAvailability: publicEventBookingAvailabilitySchema,
|
|
29274
|
+
bookingClosedDetail: publicEventBookingClosedDetailSchema.optional(),
|
|
28421
29275
|
deliveryMode: z.enum([
|
|
28422
29276
|
"in_person",
|
|
28423
29277
|
"online",
|
|
@@ -29115,7 +29969,13 @@ const eventRegistrationHydrationSchemaShape = {
|
|
|
29115
29969
|
spamProtectionEnabled: z.boolean().optional(),
|
|
29116
29970
|
supportEmail: z.string().optional(),
|
|
29117
29971
|
sitePasses: publicPassProductCollectionSchema.nullable().optional(),
|
|
29118
|
-
siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
|
|
29972
|
+
siteMemberships: publicMembershipProductCollectionSchema.nullable().optional(),
|
|
29973
|
+
mailingList: z.unknown().transform((value) => {
|
|
29974
|
+
if (value === void 0) return void 0;
|
|
29975
|
+
const parsed = parseMailingListRuntimeContext(value);
|
|
29976
|
+
return parsed.ok ? parsed.value : void 0;
|
|
29977
|
+
}),
|
|
29978
|
+
siteName: z.string().optional()
|
|
29119
29979
|
};
|
|
29120
29980
|
const eventRegistrationEventSourceSchema = z.discriminatedUnion("kind", [z.object({
|
|
29121
29981
|
kind: z.literal("loaded"),
|
|
@@ -29287,7 +30147,9 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
|
|
|
29287
30147
|
spamProtectionEnabled: source.spamProtectionEnabled,
|
|
29288
30148
|
supportEmail: source.supportEmail,
|
|
29289
30149
|
sitePasses: source.sitePasses ?? null,
|
|
29290
|
-
siteMemberships: source.siteMemberships ?? null
|
|
30150
|
+
siteMemberships: source.siteMemberships ?? null,
|
|
30151
|
+
mailingList: source.mailingList,
|
|
30152
|
+
siteName: source.siteName
|
|
29291
30153
|
}
|
|
29292
30154
|
};
|
|
29293
30155
|
}
|
|
@@ -29455,6 +30317,8 @@ const eventRegistrationBlockDefinition = {
|
|
|
29455
30317
|
events: { $bind: { from: "data.events" } },
|
|
29456
30318
|
wholeSeriesRunEvents: { $bind: { from: "data.wholeSeriesRunEvents" } },
|
|
29457
30319
|
loaderFailures: { $bind: { from: "$root.loaderFailures" } },
|
|
30320
|
+
mailingList: { $bind: { from: "$root.mailingList" } },
|
|
30321
|
+
siteName: { $bind: { from: "$root.siteName" } },
|
|
29458
30322
|
sitePasses: { $bind: { from: "data.sitePasses" } },
|
|
29459
30323
|
siteMemberships: { $bind: { from: "data.siteMemberships" } },
|
|
29460
30324
|
stage: { $bind: {
|
|
@@ -36081,6 +36945,11 @@ const mailingListContentVersionIdSchema = z.string().transform((value, ctx) => {
|
|
|
36081
36945
|
});
|
|
36082
36946
|
return z.NEVER;
|
|
36083
36947
|
});
|
|
36948
|
+
const mailingListSignupBlockSourceRefSchema = z.object({
|
|
36949
|
+
tag: z.literal("block_ref"),
|
|
36950
|
+
blockId: mailingListSignupBlockIdSchema,
|
|
36951
|
+
contentVersionId: mailingListContentVersionIdSchema
|
|
36952
|
+
});
|
|
36084
36953
|
const signedMailingListSourceTokenSchema = z.string().trim().min(1).transform(parseRequiredMailingListSignedSourceToken);
|
|
36085
36954
|
const newsletterSourceCommonSchema = z.object({
|
|
36086
36955
|
siteId: z.string().optional(),
|
|
@@ -36095,7 +36964,15 @@ const newsletterSourceSchema = z.discriminatedUnion("source", [
|
|
|
36095
36964
|
newsletterSourceCommonSchema.extend({
|
|
36096
36965
|
source: z.literal("block"),
|
|
36097
36966
|
blockId: z.string().nullable().optional(),
|
|
36098
|
-
|
|
36967
|
+
newsletterBlockSubmission: z.discriminatedUnion("tag", [
|
|
36968
|
+
z.object({
|
|
36969
|
+
tag: z.literal("ready"),
|
|
36970
|
+
sourceRef: mailingListSignupBlockSourceRefSchema
|
|
36971
|
+
}),
|
|
36972
|
+
z.object({ tag: z.literal("unpublished-form") }),
|
|
36973
|
+
z.object({ tag: z.literal("unpublished-settings") }),
|
|
36974
|
+
z.object({ tag: z.literal("unavailable") })
|
|
36975
|
+
])
|
|
36099
36976
|
}),
|
|
36100
36977
|
newsletterSourceCommonSchema.extend({
|
|
36101
36978
|
source: z.literal("signed-footer"),
|
|
@@ -36124,11 +37001,7 @@ const newsletterHydrationSchema = z.object({
|
|
|
36124
37001
|
target: z.discriminatedUnion("tag", [
|
|
36125
37002
|
z.object({
|
|
36126
37003
|
tag: z.literal("block-source"),
|
|
36127
|
-
sourceRef:
|
|
36128
|
-
tag: z.literal("block_ref"),
|
|
36129
|
-
blockId: mailingListSignupBlockIdSchema,
|
|
36130
|
-
contentVersionId: mailingListContentVersionIdSchema
|
|
36131
|
-
}).nullable()
|
|
37004
|
+
sourceRef: mailingListSignupBlockSourceRefSchema.nullable()
|
|
36132
37005
|
}),
|
|
36133
37006
|
z.object({
|
|
36134
37007
|
tag: z.literal("signed-footer-source"),
|
|
@@ -36137,7 +37010,11 @@ const newsletterHydrationSchema = z.object({
|
|
|
36137
37010
|
token: signedMailingListSourceTokenSchema
|
|
36138
37011
|
})
|
|
36139
37012
|
}),
|
|
36140
|
-
z.object({ tag: z.literal("preview") })
|
|
37013
|
+
z.object({ tag: z.literal("preview") }),
|
|
37014
|
+
z.object({
|
|
37015
|
+
tag: z.literal("unpublished-preview"),
|
|
37016
|
+
reason: z.enum(["unpublished-form", "unpublished-settings"])
|
|
37017
|
+
})
|
|
36141
37018
|
]),
|
|
36142
37019
|
setupRevision: z.number().int().positive().nullable(),
|
|
36143
37020
|
choiceProvider: z.enum([
|
|
@@ -36206,16 +37083,21 @@ const newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
|
|
|
36206
37083
|
});
|
|
36207
37084
|
function projectNewsletterFormHydrationTarget(source) {
|
|
36208
37085
|
switch (source.source) {
|
|
36209
|
-
case "block": {
|
|
36210
|
-
|
|
36211
|
-
|
|
37086
|
+
case "block": switch (source.newsletterBlockSubmission.tag) {
|
|
37087
|
+
case "unpublished-form":
|
|
37088
|
+
case "unpublished-settings": return {
|
|
37089
|
+
tag: "unpublished-preview",
|
|
37090
|
+
reason: source.newsletterBlockSubmission.tag
|
|
37091
|
+
};
|
|
37092
|
+
case "ready": return {
|
|
36212
37093
|
tag: "block-source",
|
|
36213
|
-
sourceRef
|
|
37094
|
+
sourceRef: source.newsletterBlockSubmission.sourceRef
|
|
36214
37095
|
};
|
|
36215
|
-
return {
|
|
37096
|
+
case "unavailable": return {
|
|
36216
37097
|
tag: "block-source",
|
|
36217
37098
|
sourceRef: null
|
|
36218
37099
|
};
|
|
37100
|
+
default: return assertNever$2(source.newsletterBlockSubmission);
|
|
36219
37101
|
}
|
|
36220
37102
|
case "signed-footer": return {
|
|
36221
37103
|
tag: "signed-footer-source",
|
|
@@ -36320,65 +37202,67 @@ const editorialSplitLayout = styledSection({
|
|
|
36320
37202
|
spacing: "comfortable",
|
|
36321
37203
|
background: "surface"
|
|
36322
37204
|
});
|
|
36323
|
-
const
|
|
36324
|
-
|
|
36325
|
-
|
|
36326
|
-
|
|
36327
|
-
|
|
36328
|
-
|
|
36329
|
-
|
|
36330
|
-
|
|
36331
|
-
|
|
36332
|
-
|
|
36333
|
-
|
|
36334
|
-
|
|
36335
|
-
|
|
36336
|
-
|
|
36337
|
-
|
|
36338
|
-
|
|
36339
|
-
|
|
36340
|
-
|
|
36341
|
-
|
|
36342
|
-
|
|
36343
|
-
|
|
36344
|
-
|
|
36345
|
-
|
|
36346
|
-
|
|
36347
|
-
|
|
36348
|
-
description: "Vertical layout with fields stacked"
|
|
36349
|
-
},
|
|
36350
|
-
inline: {
|
|
36351
|
-
label: "Inline",
|
|
36352
|
-
description: "Horizontal layout (email + button side by side)"
|
|
36353
|
-
},
|
|
36354
|
-
"editorial-split": {
|
|
36355
|
-
label: "Editorial split",
|
|
36356
|
-
description: "Copy and form in balanced side-by-side columns, stacked on mobile."
|
|
36357
|
-
}
|
|
36358
|
-
},
|
|
36359
|
-
styleTokens: {
|
|
36360
|
-
background: "surface",
|
|
36361
|
-
typography: "body",
|
|
36362
|
-
spacing: "md"
|
|
37205
|
+
const newsletterSignupManifest = createBlockManifest({
|
|
37206
|
+
id: "block.newsletter-signup",
|
|
37207
|
+
title: "Newsletter Signup",
|
|
37208
|
+
titleSource: "title",
|
|
37209
|
+
description: "Newsletter subscription form with configurable field presets.",
|
|
37210
|
+
category: "interactive",
|
|
37211
|
+
contentSource: { kind: "inline" },
|
|
37212
|
+
fragments: [{
|
|
37213
|
+
fragment: newsletterCopyFragment,
|
|
37214
|
+
fieldPriority: 0
|
|
37215
|
+
}, {
|
|
37216
|
+
fragment: newsletterFormFragment,
|
|
37217
|
+
fieldPriority: 1
|
|
37218
|
+
}],
|
|
37219
|
+
layout: stackedLayout,
|
|
37220
|
+
variants: {
|
|
37221
|
+
stacked: stackedLayout,
|
|
37222
|
+
inline: inlineLayout,
|
|
37223
|
+
"editorial-split": editorialSplitLayout
|
|
37224
|
+
},
|
|
37225
|
+
defaultVariant: "stacked",
|
|
37226
|
+
variantOptions: {
|
|
37227
|
+
stacked: {
|
|
37228
|
+
label: "Stacked",
|
|
37229
|
+
description: "Vertical layout with fields stacked"
|
|
36363
37230
|
},
|
|
36364
|
-
|
|
36365
|
-
|
|
36366
|
-
|
|
36367
|
-
animation: false,
|
|
36368
|
-
paletteHidden: false
|
|
37231
|
+
inline: {
|
|
37232
|
+
label: "Inline",
|
|
37233
|
+
description: "Horizontal layout (email + button side by side)"
|
|
36369
37234
|
},
|
|
36370
|
-
|
|
36371
|
-
"
|
|
36372
|
-
"
|
|
36373
|
-
|
|
36374
|
-
|
|
36375
|
-
|
|
36376
|
-
|
|
36377
|
-
|
|
36378
|
-
|
|
36379
|
-
|
|
36380
|
-
|
|
36381
|
-
|
|
37235
|
+
"editorial-split": {
|
|
37236
|
+
label: "Editorial split",
|
|
37237
|
+
description: "Copy and form in balanced side-by-side columns, stacked on mobile."
|
|
37238
|
+
}
|
|
37239
|
+
},
|
|
37240
|
+
styleTokens: {
|
|
37241
|
+
background: "surface",
|
|
37242
|
+
typography: "body",
|
|
37243
|
+
spacing: "md"
|
|
37244
|
+
},
|
|
37245
|
+
behaviours: {
|
|
37246
|
+
supportsThemeSwitching: true,
|
|
37247
|
+
inlineEditing: false,
|
|
37248
|
+
animation: false,
|
|
37249
|
+
paletteHidden: false
|
|
37250
|
+
},
|
|
37251
|
+
tags: [
|
|
37252
|
+
"newsletter",
|
|
37253
|
+
"signup",
|
|
37254
|
+
"email",
|
|
37255
|
+
"subscribe",
|
|
37256
|
+
"subscription",
|
|
37257
|
+
"mailchimp",
|
|
37258
|
+
"marketing",
|
|
37259
|
+
"lead-capture"
|
|
37260
|
+
],
|
|
37261
|
+
icon: "Mail"
|
|
37262
|
+
});
|
|
37263
|
+
[...(newsletterSignupManifest.fields ?? []).map((field) => field.id)];
|
|
37264
|
+
const newsletterSignupBlockDefinition = {
|
|
37265
|
+
manifest: newsletterSignupManifest,
|
|
36382
37266
|
runtime: newsletterFormBlockRuntime
|
|
36383
37267
|
};
|
|
36384
37268
|
//#endregion
|
|
@@ -38420,7 +39304,8 @@ const BOOKING_FORM_DATA_RESERVED_KEYS = /* @__PURE__ */ new Set([
|
|
|
38420
39304
|
"discountCode",
|
|
38421
39305
|
"selectedSlidingAmountInput",
|
|
38422
39306
|
"selectedCollectionOptionKind",
|
|
38423
|
-
"selectedAppointmentPackageId"
|
|
39307
|
+
"selectedAppointmentPackageId",
|
|
39308
|
+
"mailingListOptIn"
|
|
38424
39309
|
]);
|
|
38425
39310
|
function isBookingFormDataReservedKey(value) {
|
|
38426
39311
|
return BOOKING_FORM_DATA_RESERVED_KEYS.has(value);
|
|
@@ -38768,6 +39653,46 @@ z.object({ acceptExtraSiteCharge: z.boolean().optional() });
|
|
|
38768
39653
|
//#region ../surfaces/src/index.ts
|
|
38769
39654
|
const SURFACE_IDS = ["core", "macadamia"];
|
|
38770
39655
|
const DEFAULT_SURFACE_ID = "core";
|
|
39656
|
+
/**
|
|
39657
|
+
* Root hosts for each surface, keyed by deployment tier. The tier-keyed shape
|
|
39658
|
+
* makes it impossible to mis-order entries: callers like
|
|
39659
|
+
* `buildSurfaceAwareDashboardOriginForSurfaceId` look up by tier directly
|
|
39660
|
+
* rather than relying on positional alignment between arrays.
|
|
39661
|
+
*/
|
|
39662
|
+
const SURFACE_ROOT_HOSTS = {
|
|
39663
|
+
core: {
|
|
39664
|
+
local: "localhost",
|
|
39665
|
+
prod: "riverbankcms.com"
|
|
39666
|
+
},
|
|
39667
|
+
macadamia: {
|
|
39668
|
+
local: "macadamia.localhost",
|
|
39669
|
+
prod: "macadamia.studio"
|
|
39670
|
+
}
|
|
39671
|
+
};
|
|
39672
|
+
const SURFACE_SITE_ROOT_HOSTS = {
|
|
39673
|
+
core: {
|
|
39674
|
+
local: "localhost",
|
|
39675
|
+
prod: "riverbanksites.com"
|
|
39676
|
+
},
|
|
39677
|
+
macadamia: {
|
|
39678
|
+
local: "macadamia.localhost",
|
|
39679
|
+
prod: "macadamia.studio"
|
|
39680
|
+
}
|
|
39681
|
+
};
|
|
39682
|
+
const SURFACE_SITE_ROOT_HOST_ALIASES = { core: { prod: ["preview.riverbanksites.com"] } };
|
|
39683
|
+
function surfaceHostTableValues(table) {
|
|
39684
|
+
return Object.values(table).flatMap((byTier) => Object.values(byTier).flat());
|
|
39685
|
+
}
|
|
39686
|
+
function siteSlugLabelUnderRoot(host, siteRootHost) {
|
|
39687
|
+
if (!host.endsWith(`.${siteRootHost}`)) return [];
|
|
39688
|
+
return host.slice(0, host.length - siteRootHost.length - 1).split(".").slice(-1);
|
|
39689
|
+
}
|
|
39690
|
+
function deriveSurfaceOwnedSiteSlugs() {
|
|
39691
|
+
const siteRootHosts = [...surfaceHostTableValues(SURFACE_SITE_ROOT_HOSTS), ...surfaceHostTableValues(SURFACE_SITE_ROOT_HOST_ALIASES)];
|
|
39692
|
+
const labels = [...surfaceHostTableValues(SURFACE_ROOT_HOSTS), ...siteRootHosts].flatMap((host) => siteRootHosts.flatMap((root) => siteSlugLabelUnderRoot(host, root)));
|
|
39693
|
+
return [...new Set(labels)].sort();
|
|
39694
|
+
}
|
|
39695
|
+
deriveSurfaceOwnedSiteSlugs();
|
|
38771
39696
|
[...SURFACE_IDS.filter((surfaceId) => surfaceId !== DEFAULT_SURFACE_ID)];
|
|
38772
39697
|
//#endregion
|
|
38773
39698
|
//#region ../api/src/accountApi.ts
|
|
@@ -39369,6 +40294,7 @@ function collectText(node) {
|
|
|
39369
40294
|
if (node.type === "text") return node.text ?? "";
|
|
39370
40295
|
return (node.content ?? []).map(collectText).join("");
|
|
39371
40296
|
}
|
|
40297
|
+
z.enum(["public", "unlisted"], { error: "visibility must be 'public' or 'unlisted'" });
|
|
39372
40298
|
//#endregion
|
|
39373
40299
|
//#region ../api/src/bookingPaymentTermSchemas.ts
|
|
39374
40300
|
const bookingDepositRefundPolicySchema = z.enum(["refundable", "non_refundable"]);
|