@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
package/dist/server/config.mjs
CHANGED
|
@@ -63,6 +63,64 @@ function defineEndpointDefinitions(definitions) {
|
|
|
63
63
|
return definitions;
|
|
64
64
|
}
|
|
65
65
|
//#endregion
|
|
66
|
+
//#region ../api/src/apiEndpointTypes.ts
|
|
67
|
+
function allowedDemoMutationPolicy() {
|
|
68
|
+
return {
|
|
69
|
+
classification: "allowed",
|
|
70
|
+
publicMessage: ""
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function blockedDemoMutationPolicy(classification, publicMessage) {
|
|
74
|
+
if (publicMessage.trim() === "") throw new Error(`Demo mutation policy ${classification} requires publicMessage.`);
|
|
75
|
+
return {
|
|
76
|
+
classification,
|
|
77
|
+
publicMessage
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
//#endregion
|
|
81
|
+
//#region ../api/src/demoMutationPolicies.ts
|
|
82
|
+
const DEMO_MUTATION_BLOCKED_HIDDEN = blockedDemoMutationPolicy("blocked-hidden", "This action is not available in demo sites.");
|
|
83
|
+
const DEMO_MUTATION_BLOCKED_DISABLED = blockedDemoMutationPolicy("blocked-disabled", "This setting is disabled in demo sites.");
|
|
84
|
+
blockedDemoMutationPolicy("internal-only", "This internal operation is not available in demo sites.");
|
|
85
|
+
const DEMO_MUTATION_ALLOWED = allowedDemoMutationPolicy();
|
|
86
|
+
//#endregion
|
|
87
|
+
//#region ../api/src/siteLifecycleEndpoints.ts
|
|
88
|
+
const SITE_LIFECYCLE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
89
|
+
createSite: {
|
|
90
|
+
path: "/sites/manage",
|
|
91
|
+
method: "POST",
|
|
92
|
+
tags: ["site"],
|
|
93
|
+
auth: "user",
|
|
94
|
+
responseKind: "json",
|
|
95
|
+
errors: []
|
|
96
|
+
},
|
|
97
|
+
createSiteManual: {
|
|
98
|
+
path: "/sites/manual",
|
|
99
|
+
method: "POST",
|
|
100
|
+
tags: ["site"],
|
|
101
|
+
auth: "user",
|
|
102
|
+
responseKind: "json",
|
|
103
|
+
errors: []
|
|
104
|
+
},
|
|
105
|
+
updateSite: {
|
|
106
|
+
path: "/sites/manage",
|
|
107
|
+
method: "PUT",
|
|
108
|
+
tags: ["site"],
|
|
109
|
+
auth: "user",
|
|
110
|
+
responseKind: "json",
|
|
111
|
+
errors: []
|
|
112
|
+
},
|
|
113
|
+
deleteSite: {
|
|
114
|
+
path: "/sites/{siteId}",
|
|
115
|
+
method: "DELETE",
|
|
116
|
+
tags: ["site", "site-{siteId}"],
|
|
117
|
+
auth: "user",
|
|
118
|
+
responseKind: "json",
|
|
119
|
+
errors: [],
|
|
120
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
//#endregion
|
|
66
124
|
//#region ../api/src/publicNewsletterEndpointDefinitions.ts
|
|
67
125
|
const PUBLIC_NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
68
126
|
subscribeNewsletter: {
|
|
@@ -123,27 +181,6 @@ const PUBLIC_NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
123
181
|
}
|
|
124
182
|
});
|
|
125
183
|
//#endregion
|
|
126
|
-
//#region ../api/src/apiEndpointTypes.ts
|
|
127
|
-
function allowedDemoMutationPolicy() {
|
|
128
|
-
return {
|
|
129
|
-
classification: "allowed",
|
|
130
|
-
publicMessage: ""
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
function blockedDemoMutationPolicy(classification, publicMessage) {
|
|
134
|
-
if (publicMessage.trim() === "") throw new Error(`Demo mutation policy ${classification} requires publicMessage.`);
|
|
135
|
-
return {
|
|
136
|
-
classification,
|
|
137
|
-
publicMessage
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
//#endregion
|
|
141
|
-
//#region ../api/src/demoMutationPolicies.ts
|
|
142
|
-
const DEMO_MUTATION_BLOCKED_HIDDEN = blockedDemoMutationPolicy("blocked-hidden", "This action is not available in demo sites.");
|
|
143
|
-
const DEMO_MUTATION_BLOCKED_DISABLED = blockedDemoMutationPolicy("blocked-disabled", "This setting is disabled in demo sites.");
|
|
144
|
-
blockedDemoMutationPolicy("internal-only", "This internal operation is not available in demo sites.");
|
|
145
|
-
const DEMO_MUTATION_ALLOWED = allowedDemoMutationPolicy();
|
|
146
|
-
//#endregion
|
|
147
184
|
//#region ../api/src/cache-tags.ts
|
|
148
185
|
/**
|
|
149
186
|
* Tag templates for endpoint definitions (support `{param}` placeholders).
|
|
@@ -1003,6 +1040,13 @@ const EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS = defineEndpointDefinitions
|
|
|
1003
1040
|
errors: [],
|
|
1004
1041
|
responseKind: "blob"
|
|
1005
1042
|
},
|
|
1043
|
+
exportEventOfferingRegistrationsCsv: {
|
|
1044
|
+
path: "/sites/{siteId}/bookings/event-offerings/{eventOfferingId}/registrations/export.csv",
|
|
1045
|
+
method: "GET",
|
|
1046
|
+
auth: "user",
|
|
1047
|
+
errors: [],
|
|
1048
|
+
responseKind: "blob"
|
|
1049
|
+
},
|
|
1006
1050
|
updateEventSeriesRegistration: {
|
|
1007
1051
|
path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations/{registrationId}",
|
|
1008
1052
|
method: "PATCH",
|
|
@@ -1013,6 +1057,19 @@ const EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS = defineEndpointDefinitions
|
|
|
1013
1057
|
"resource:not_found",
|
|
1014
1058
|
"server:internal_error"
|
|
1015
1059
|
]
|
|
1060
|
+
},
|
|
1061
|
+
saveEventSeriesRegistrationAnswers: {
|
|
1062
|
+
path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations/{registrationId}/answers",
|
|
1063
|
+
method: "PUT",
|
|
1064
|
+
auth: "user",
|
|
1065
|
+
responseKind: "json",
|
|
1066
|
+
errors: [
|
|
1067
|
+
"validation:invalid_input",
|
|
1068
|
+
"auth:forbidden",
|
|
1069
|
+
"resource:not_found",
|
|
1070
|
+
"resource:conflict",
|
|
1071
|
+
"server:internal_error"
|
|
1072
|
+
]
|
|
1016
1073
|
}
|
|
1017
1074
|
});
|
|
1018
1075
|
//#endregion
|
|
@@ -1150,6 +1207,20 @@ const NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
1150
1207
|
responseKind: "json",
|
|
1151
1208
|
errors: ["auth:forbidden", "server:internal_error"]
|
|
1152
1209
|
},
|
|
1210
|
+
setMailingListBookingOptIn: {
|
|
1211
|
+
path: "/sites/{siteId}/mailing-list/setup/booking-opt-in",
|
|
1212
|
+
method: "PUT",
|
|
1213
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
1214
|
+
auth: "user",
|
|
1215
|
+
responseKind: "json",
|
|
1216
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED,
|
|
1217
|
+
errors: [
|
|
1218
|
+
"auth:forbidden",
|
|
1219
|
+
"validation:invalid_input",
|
|
1220
|
+
"resource:conflict",
|
|
1221
|
+
"server:internal_error"
|
|
1222
|
+
]
|
|
1223
|
+
},
|
|
1153
1224
|
getMailingListAuthoringContext: {
|
|
1154
1225
|
path: "/sites/{siteId}/mailing-list/authoring-context",
|
|
1155
1226
|
method: "GET",
|
|
@@ -1433,6 +1504,30 @@ const NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
1433
1504
|
responseKind: "json",
|
|
1434
1505
|
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
1435
1506
|
},
|
|
1507
|
+
scheduleNewsletterCampaign: {
|
|
1508
|
+
path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/schedule",
|
|
1509
|
+
method: "POST",
|
|
1510
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
1511
|
+
auth: "user",
|
|
1512
|
+
responseKind: "json",
|
|
1513
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
1514
|
+
},
|
|
1515
|
+
unscheduleNewsletterCampaign: {
|
|
1516
|
+
path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/unschedule",
|
|
1517
|
+
method: "POST",
|
|
1518
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
1519
|
+
auth: "user",
|
|
1520
|
+
responseKind: "json",
|
|
1521
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
1522
|
+
},
|
|
1523
|
+
stopNewsletterCampaign: {
|
|
1524
|
+
path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/stop",
|
|
1525
|
+
method: "POST",
|
|
1526
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
1527
|
+
auth: "user",
|
|
1528
|
+
responseKind: "json",
|
|
1529
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
1530
|
+
},
|
|
1436
1531
|
testSendNewsletterCampaign: {
|
|
1437
1532
|
path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/test-send",
|
|
1438
1533
|
method: "POST",
|
|
@@ -1443,6 +1538,154 @@ const NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
1443
1538
|
}
|
|
1444
1539
|
});
|
|
1445
1540
|
//#endregion
|
|
1541
|
+
//#region ../api/src/sdkEventEndpointDefinitions.ts
|
|
1542
|
+
/**
|
|
1543
|
+
* The SDK's Event graph: the Events themselves and the occurrences of one run.
|
|
1544
|
+
* Extracted from `endpoints.ts` so this family can be read, and added to, on
|
|
1545
|
+
* its own. New entries here must declare `errors`; the
|
|
1546
|
+
* require-api-endpoint-errors lint enforces that here as in endpoints.ts.
|
|
1547
|
+
*/
|
|
1548
|
+
const SDK_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
1549
|
+
sdkListEvents: {
|
|
1550
|
+
path: "/sdk/{siteId}/events",
|
|
1551
|
+
method: "GET",
|
|
1552
|
+
auth: "service",
|
|
1553
|
+
responseKind: "json"
|
|
1554
|
+
},
|
|
1555
|
+
sdkUpsertEvent: {
|
|
1556
|
+
path: "/sdk/{siteId}/events",
|
|
1557
|
+
method: "POST",
|
|
1558
|
+
auth: "service",
|
|
1559
|
+
responseKind: "json",
|
|
1560
|
+
errors: [
|
|
1561
|
+
"validation:invalid_input",
|
|
1562
|
+
"resource:not_found",
|
|
1563
|
+
"resource:conflict",
|
|
1564
|
+
"billing:plan_limit_exceeded",
|
|
1565
|
+
"server:internal_error"
|
|
1566
|
+
]
|
|
1567
|
+
},
|
|
1568
|
+
sdkGetEvent: {
|
|
1569
|
+
path: "/sdk/{siteId}/events/{identifier}",
|
|
1570
|
+
method: "GET",
|
|
1571
|
+
auth: "service",
|
|
1572
|
+
responseKind: "json"
|
|
1573
|
+
},
|
|
1574
|
+
sdkDeleteEvent: {
|
|
1575
|
+
path: "/sdk/{siteId}/events/{identifier}",
|
|
1576
|
+
method: "DELETE",
|
|
1577
|
+
auth: "service",
|
|
1578
|
+
responseKind: "json",
|
|
1579
|
+
errors: [
|
|
1580
|
+
"resource:not_found",
|
|
1581
|
+
"resource:conflict",
|
|
1582
|
+
"server:internal_error"
|
|
1583
|
+
]
|
|
1584
|
+
},
|
|
1585
|
+
sdkTakeEventOffline: {
|
|
1586
|
+
path: "/sdk/{siteId}/events/{identifier}/lifecycle",
|
|
1587
|
+
method: "POST",
|
|
1588
|
+
auth: "service",
|
|
1589
|
+
responseKind: "json",
|
|
1590
|
+
errors: [
|
|
1591
|
+
"resource:not_found",
|
|
1592
|
+
"validation:invalid_input",
|
|
1593
|
+
"resource:conflict",
|
|
1594
|
+
"server:internal_error"
|
|
1595
|
+
]
|
|
1596
|
+
},
|
|
1597
|
+
sdkListEventOccurrences: {
|
|
1598
|
+
path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences",
|
|
1599
|
+
method: "GET",
|
|
1600
|
+
auth: "service",
|
|
1601
|
+
responseKind: "json",
|
|
1602
|
+
errors: [
|
|
1603
|
+
"resource:not_found",
|
|
1604
|
+
"validation:invalid_input",
|
|
1605
|
+
"server:internal_error"
|
|
1606
|
+
]
|
|
1607
|
+
},
|
|
1608
|
+
sdkAddEventOccurrence: {
|
|
1609
|
+
path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences",
|
|
1610
|
+
method: "POST",
|
|
1611
|
+
auth: "service",
|
|
1612
|
+
responseKind: "json",
|
|
1613
|
+
errors: [
|
|
1614
|
+
"resource:not_found",
|
|
1615
|
+
"validation:invalid_input",
|
|
1616
|
+
"resource:conflict",
|
|
1617
|
+
"server:internal_error"
|
|
1618
|
+
]
|
|
1619
|
+
},
|
|
1620
|
+
sdkUpdateEventOccurrence: {
|
|
1621
|
+
path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences/{occurrenceId}",
|
|
1622
|
+
method: "PATCH",
|
|
1623
|
+
auth: "service",
|
|
1624
|
+
responseKind: "json",
|
|
1625
|
+
errors: [
|
|
1626
|
+
"resource:not_found",
|
|
1627
|
+
"validation:invalid_input",
|
|
1628
|
+
"resource:conflict",
|
|
1629
|
+
"server:internal_error"
|
|
1630
|
+
]
|
|
1631
|
+
},
|
|
1632
|
+
sdkCancelEventOccurrence: {
|
|
1633
|
+
path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences/{occurrenceId}/cancel",
|
|
1634
|
+
method: "POST",
|
|
1635
|
+
auth: "service",
|
|
1636
|
+
responseKind: "json",
|
|
1637
|
+
errors: [
|
|
1638
|
+
"resource:not_found",
|
|
1639
|
+
"resource:conflict",
|
|
1640
|
+
"server:internal_error"
|
|
1641
|
+
]
|
|
1642
|
+
},
|
|
1643
|
+
sdkDeleteEventOccurrence: {
|
|
1644
|
+
path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences/{occurrenceId}",
|
|
1645
|
+
method: "DELETE",
|
|
1646
|
+
auth: "service",
|
|
1647
|
+
responseKind: "json",
|
|
1648
|
+
errors: [
|
|
1649
|
+
"resource:not_found",
|
|
1650
|
+
"resource:conflict",
|
|
1651
|
+
"server:internal_error"
|
|
1652
|
+
]
|
|
1653
|
+
}
|
|
1654
|
+
});
|
|
1655
|
+
//#endregion
|
|
1656
|
+
//#region ../api/src/sdkPageDesignEndpointDefinitions.ts
|
|
1657
|
+
/**
|
|
1658
|
+
* SDK management endpoints for a page's draft design (issue 1497), spread into
|
|
1659
|
+
* `ENDPOINT_DEFINITIONS` like the other endpoint-definition modules. New
|
|
1660
|
+
* entries here must declare `errors`, which the require-api-endpoint-errors
|
|
1661
|
+
* lint enforces.
|
|
1662
|
+
*/
|
|
1663
|
+
const SDK_PAGE_DESIGN_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
1664
|
+
sdkGetPageDesign: {
|
|
1665
|
+
path: "/sdk/{siteId}/pages/{identifier}/design",
|
|
1666
|
+
method: "GET",
|
|
1667
|
+
auth: "service",
|
|
1668
|
+
responseKind: "json",
|
|
1669
|
+
errors: [
|
|
1670
|
+
"resource:not_found",
|
|
1671
|
+
"validation:invalid_input",
|
|
1672
|
+
"server:internal_error"
|
|
1673
|
+
]
|
|
1674
|
+
},
|
|
1675
|
+
sdkSavePageDesign: {
|
|
1676
|
+
path: "/sdk/{siteId}/pages/{identifier}/design",
|
|
1677
|
+
method: "POST",
|
|
1678
|
+
auth: "service",
|
|
1679
|
+
responseKind: "json",
|
|
1680
|
+
errors: [
|
|
1681
|
+
"resource:not_found",
|
|
1682
|
+
"validation:invalid_input",
|
|
1683
|
+
"resource:conflict",
|
|
1684
|
+
"server:internal_error"
|
|
1685
|
+
]
|
|
1686
|
+
}
|
|
1687
|
+
});
|
|
1688
|
+
//#endregion
|
|
1446
1689
|
//#region ../core/src/result.ts
|
|
1447
1690
|
function ok(value) {
|
|
1448
1691
|
return {
|
|
@@ -2135,17 +2378,35 @@ function parseMailingListRuntimeContext(value) {
|
|
|
2135
2378
|
if (!isRecord$8(value)) return invalidRuntimeContext();
|
|
2136
2379
|
if (value.tag === "not_configured") return ok({ tag: "not_configured" });
|
|
2137
2380
|
if (value.tag !== "configured") return invalidRuntimeContext();
|
|
2381
|
+
return parseConfiguredRuntimeContext(value);
|
|
2382
|
+
}
|
|
2383
|
+
function parseConfiguredRuntimeContext(value) {
|
|
2138
2384
|
const revision = parseMailingListSetupRevision(value.revision);
|
|
2139
2385
|
const form = parseMailingListGlobalForm(value.form);
|
|
2140
2386
|
const provider = parseRuntimeProvider(value.provider);
|
|
2141
|
-
|
|
2387
|
+
const bookingSignup = parseBookingSignupOffer(value.bookingSignup);
|
|
2388
|
+
if (revision === null || !form.ok || provider === null || bookingSignup === null) return invalidRuntimeContext();
|
|
2142
2389
|
return ok({
|
|
2143
2390
|
tag: "configured",
|
|
2144
2391
|
revision,
|
|
2392
|
+
bookingSignup,
|
|
2145
2393
|
form: form.value,
|
|
2146
2394
|
provider
|
|
2147
2395
|
});
|
|
2148
2396
|
}
|
|
2397
|
+
function parseBookingSignupOffer(value) {
|
|
2398
|
+
if (value === void 0) return {
|
|
2399
|
+
tag: "unavailable",
|
|
2400
|
+
reason: "disabled"
|
|
2401
|
+
};
|
|
2402
|
+
if (!isRecord$8(value)) return null;
|
|
2403
|
+
if (value.tag === "offered") return { tag: "offered" };
|
|
2404
|
+
if (value.tag === "unavailable" && (value.reason === "disabled" || value.reason === "fields" || value.reason === "destination")) return {
|
|
2405
|
+
tag: "unavailable",
|
|
2406
|
+
reason: value.reason
|
|
2407
|
+
};
|
|
2408
|
+
return null;
|
|
2409
|
+
}
|
|
2149
2410
|
function parseRuntimeProvider(value) {
|
|
2150
2411
|
if (!isRecord$8(value)) return null;
|
|
2151
2412
|
switch (value.provider) {
|
|
@@ -2372,15 +2633,6 @@ function parseMailingListContentVersionId(value) {
|
|
|
2372
2633
|
const parsed = parseContentVersionId(value);
|
|
2373
2634
|
return parsed.ok ? parsed.value : null;
|
|
2374
2635
|
}
|
|
2375
|
-
function buildMailingListSignupBlockSourceRef(blockId, contentVersionId) {
|
|
2376
|
-
const parsedBlockId = parseMailingListBlockId(blockId);
|
|
2377
|
-
const parsedContentVersionId = parseMailingListContentVersionId(contentVersionId);
|
|
2378
|
-
return parsedBlockId !== null && parsedContentVersionId !== null ? {
|
|
2379
|
-
tag: "block_ref",
|
|
2380
|
-
blockId: parsedBlockId,
|
|
2381
|
-
contentVersionId: parsedContentVersionId
|
|
2382
|
-
} : null;
|
|
2383
|
-
}
|
|
2384
2636
|
//#endregion
|
|
2385
2637
|
//#region ../core/src/secret.ts
|
|
2386
2638
|
/**
|
|
@@ -3029,6 +3281,45 @@ const SITE_API_KEY_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
3029
3281
|
}
|
|
3030
3282
|
});
|
|
3031
3283
|
//#endregion
|
|
3284
|
+
//#region ../api/src/siteManagementEndpointDefinitions.ts
|
|
3285
|
+
const SITE_MANAGEMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
3286
|
+
createSite: {
|
|
3287
|
+
path: "/sites/manage",
|
|
3288
|
+
method: "POST",
|
|
3289
|
+
tags: ["site"],
|
|
3290
|
+
auth: "user",
|
|
3291
|
+
responseKind: "json"
|
|
3292
|
+
},
|
|
3293
|
+
updateSite: {
|
|
3294
|
+
path: "/sites/manage",
|
|
3295
|
+
method: "PUT",
|
|
3296
|
+
tags: ["site"],
|
|
3297
|
+
auth: "user",
|
|
3298
|
+
responseKind: "json"
|
|
3299
|
+
},
|
|
3300
|
+
changeSiteAddress: {
|
|
3301
|
+
path: "/sites/{siteId}/address",
|
|
3302
|
+
method: "PUT",
|
|
3303
|
+
auth: "user",
|
|
3304
|
+
responseKind: "json",
|
|
3305
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED
|
|
3306
|
+
},
|
|
3307
|
+
getSiteAddressAvailability: {
|
|
3308
|
+
path: "/sites/{siteId}/address/availability",
|
|
3309
|
+
method: "GET",
|
|
3310
|
+
auth: "user",
|
|
3311
|
+
responseKind: "json"
|
|
3312
|
+
},
|
|
3313
|
+
deleteSite: {
|
|
3314
|
+
path: "/sites/{siteId}",
|
|
3315
|
+
method: "DELETE",
|
|
3316
|
+
tags: ["site", "site-{siteId}"],
|
|
3317
|
+
auth: "user",
|
|
3318
|
+
responseKind: "json",
|
|
3319
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
3320
|
+
}
|
|
3321
|
+
});
|
|
3322
|
+
//#endregion
|
|
3032
3323
|
//#region ../api/src/eventManagementEndpointDefinitions.ts
|
|
3033
3324
|
const EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
3034
3325
|
listEvents: {
|
|
@@ -3076,6 +3367,28 @@ const EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
3076
3367
|
"server:internal_error"
|
|
3077
3368
|
]
|
|
3078
3369
|
},
|
|
3370
|
+
/**
|
|
3371
|
+
* The web address of an event's own page. A course page belongs to the
|
|
3372
|
+
* event itself, so its address is written here rather than through a run.
|
|
3373
|
+
*/
|
|
3374
|
+
updateEventAddress: {
|
|
3375
|
+
path: "/sites/{siteId}/bookings/events/{eventId}/address",
|
|
3376
|
+
method: "PATCH",
|
|
3377
|
+
tags: [
|
|
3378
|
+
"site-{siteId}",
|
|
3379
|
+
"event-series-{siteId}",
|
|
3380
|
+
TAG_TEMPLATES.siteRoutableContent,
|
|
3381
|
+
TAG_TEMPLATES.siteRedirects
|
|
3382
|
+
],
|
|
3383
|
+
auth: "user",
|
|
3384
|
+
responseKind: "json",
|
|
3385
|
+
errors: [
|
|
3386
|
+
"validation:invalid_input",
|
|
3387
|
+
"resource:not_found",
|
|
3388
|
+
"resource:conflict",
|
|
3389
|
+
"server:internal_error"
|
|
3390
|
+
]
|
|
3391
|
+
},
|
|
3079
3392
|
createWholeSeriesRun: {
|
|
3080
3393
|
path: "/sites/{siteId}/bookings/events/{eventId}/runs",
|
|
3081
3394
|
method: "POST",
|
|
@@ -3102,6 +3415,20 @@ const EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
3102
3415
|
"server:internal_error"
|
|
3103
3416
|
]
|
|
3104
3417
|
},
|
|
3418
|
+
updateCourseBookingSettings: {
|
|
3419
|
+
path: "/sites/{siteId}/bookings/events/{eventId}/booking-settings",
|
|
3420
|
+
method: "PATCH",
|
|
3421
|
+
tags: ["site-{siteId}", "event-series-{siteId}"],
|
|
3422
|
+
auth: "user",
|
|
3423
|
+
responseKind: "json",
|
|
3424
|
+
errors: [
|
|
3425
|
+
"validation:invalid_input",
|
|
3426
|
+
"auth:forbidden",
|
|
3427
|
+
"resource:not_found",
|
|
3428
|
+
"resource:conflict",
|
|
3429
|
+
"server:internal_error"
|
|
3430
|
+
]
|
|
3431
|
+
},
|
|
3105
3432
|
cancelWholeSeriesRun: {
|
|
3106
3433
|
path: "/sites/{siteId}/bookings/events/{eventId}/runs/{runId}/cancellation",
|
|
3107
3434
|
method: "POST",
|
|
@@ -3114,6 +3441,28 @@ const EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
3114
3441
|
"resource:conflict",
|
|
3115
3442
|
"server:internal_error"
|
|
3116
3443
|
]
|
|
3444
|
+
},
|
|
3445
|
+
/**
|
|
3446
|
+
* The Content tab's one write: the short introduction, image and
|
|
3447
|
+
* description of an event's page, published without its layout.
|
|
3448
|
+
*/
|
|
3449
|
+
saveEventPageWords: {
|
|
3450
|
+
path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/words",
|
|
3451
|
+
method: "PUT",
|
|
3452
|
+
tags: [
|
|
3453
|
+
TAG_TEMPLATES.siteCollection,
|
|
3454
|
+
TAG_TEMPLATES.siteRoutableContent,
|
|
3455
|
+
TAG_TEMPLATES.pageSurfaceById
|
|
3456
|
+
],
|
|
3457
|
+
auth: "user",
|
|
3458
|
+
responseKind: "json",
|
|
3459
|
+
errors: [
|
|
3460
|
+
"auth:forbidden",
|
|
3461
|
+
"validation:invalid_input",
|
|
3462
|
+
"resource:not_found",
|
|
3463
|
+
"resource:conflict",
|
|
3464
|
+
"server:internal_error"
|
|
3465
|
+
]
|
|
3117
3466
|
}
|
|
3118
3467
|
});
|
|
3119
3468
|
//#endregion
|
|
@@ -3546,19 +3895,105 @@ const BILLING_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
3546
3895
|
responseKind: "json"
|
|
3547
3896
|
}
|
|
3548
3897
|
});
|
|
3898
|
+
//#endregion
|
|
3899
|
+
//#region ../api/src/bookingPeopleEndpointDefinitions.ts
|
|
3900
|
+
/**
|
|
3901
|
+
* People endpoints (#1356): the People list, its CSV export, and deleting a
|
|
3902
|
+
* person when nothing is attached to them.
|
|
3903
|
+
*/
|
|
3904
|
+
const BOOKING_PEOPLE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
3905
|
+
listPeople: {
|
|
3906
|
+
path: "/sites/{siteId}/bookings/people",
|
|
3907
|
+
method: "GET",
|
|
3908
|
+
tags: ["site-{siteId}", "customers-{siteId}"],
|
|
3909
|
+
auth: "user",
|
|
3910
|
+
responseKind: "json",
|
|
3911
|
+
errors: ["server:internal_error"]
|
|
3912
|
+
},
|
|
3913
|
+
exportPeopleCsv: {
|
|
3914
|
+
path: "/sites/{siteId}/bookings/people/export.csv",
|
|
3915
|
+
method: "GET",
|
|
3916
|
+
tags: ["site-{siteId}", "customers-{siteId}"],
|
|
3917
|
+
auth: "user",
|
|
3918
|
+
errors: [],
|
|
3919
|
+
responseKind: "blob"
|
|
3920
|
+
},
|
|
3921
|
+
checkPersonDeletion: {
|
|
3922
|
+
path: "/sites/{siteId}/bookings/people/{personId}/deletion-check",
|
|
3923
|
+
method: "GET",
|
|
3924
|
+
tags: ["site-{siteId}", "customers-{siteId}"],
|
|
3925
|
+
auth: "user",
|
|
3926
|
+
responseKind: "json",
|
|
3927
|
+
errors: [
|
|
3928
|
+
"auth:forbidden",
|
|
3929
|
+
"resource:not_found",
|
|
3930
|
+
"server:internal_error"
|
|
3931
|
+
]
|
|
3932
|
+
},
|
|
3933
|
+
deletePerson: {
|
|
3934
|
+
path: "/sites/{siteId}/bookings/people/{personId}",
|
|
3935
|
+
method: "DELETE",
|
|
3936
|
+
tags: ["site-{siteId}", "customers-{siteId}"],
|
|
3937
|
+
auth: "user",
|
|
3938
|
+
responseKind: "json",
|
|
3939
|
+
errors: [
|
|
3940
|
+
"auth:forbidden",
|
|
3941
|
+
"resource:not_found",
|
|
3942
|
+
"server:internal_error"
|
|
3943
|
+
]
|
|
3944
|
+
}
|
|
3945
|
+
});
|
|
3946
|
+
//#endregion
|
|
3947
|
+
//#region ../api/src/clientErrorReporting.ts
|
|
3948
|
+
const CLIENT_ERROR_REPORT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({ reportClientError: {
|
|
3949
|
+
path: "/client/error-report",
|
|
3950
|
+
method: "POST",
|
|
3951
|
+
auth: "user",
|
|
3952
|
+
errors: [],
|
|
3953
|
+
responseKind: "json"
|
|
3954
|
+
} });
|
|
3955
|
+
const CLIENT_ERROR_REPORT_LIMITS = {
|
|
3956
|
+
pathname: 1024,
|
|
3957
|
+
name: 120,
|
|
3958
|
+
message: 2e3,
|
|
3959
|
+
stack: 8e3,
|
|
3960
|
+
digest: 128,
|
|
3961
|
+
componentStack: 8e3,
|
|
3962
|
+
sourceLocation: 1024
|
|
3963
|
+
};
|
|
3964
|
+
const clientErrorEventSchema = z.enum([
|
|
3965
|
+
"dashboard:route-error",
|
|
3966
|
+
"dashboard:app-error",
|
|
3967
|
+
"client:error-boundary",
|
|
3968
|
+
"client:window-error",
|
|
3969
|
+
"client:unhandled-rejection"
|
|
3970
|
+
]);
|
|
3971
|
+
z.object({
|
|
3972
|
+
event: clientErrorEventSchema,
|
|
3973
|
+
pathname: z.string().startsWith("/").max(CLIENT_ERROR_REPORT_LIMITS.pathname),
|
|
3974
|
+
name: z.string().max(CLIENT_ERROR_REPORT_LIMITS.name),
|
|
3975
|
+
message: z.string().max(CLIENT_ERROR_REPORT_LIMITS.message),
|
|
3976
|
+
stack: z.string().max(CLIENT_ERROR_REPORT_LIMITS.stack).nullable(),
|
|
3977
|
+
digest: z.string().max(CLIENT_ERROR_REPORT_LIMITS.digest).nullable(),
|
|
3978
|
+
componentStack: z.string().max(CLIENT_ERROR_REPORT_LIMITS.componentStack).nullable(),
|
|
3979
|
+
sourceLocation: z.string().max(CLIENT_ERROR_REPORT_LIMITS.sourceLocation).nullable()
|
|
3980
|
+
}).strict();
|
|
3549
3981
|
({
|
|
3982
|
+
...SITE_LIFECYCLE_ENDPOINT_DEFINITIONS,
|
|
3983
|
+
...CLIENT_ERROR_REPORT_ENDPOINT_DEFINITIONS,
|
|
3550
3984
|
...PUBLIC_NEWSLETTER_ENDPOINT_DEFINITIONS,
|
|
3551
3985
|
...ACCOUNT_ENDPOINT_DEFINITIONS,
|
|
3552
3986
|
...PUBLIC_ONBOARDING_ATTEMPT_ENDPOINT_DEFINITIONS,
|
|
3553
3987
|
...PUBLIC_EVENT_ENDPOINT_DEFINITIONS,
|
|
3554
3988
|
...GIFTING_ENDPOINT_DEFINITIONS,
|
|
3555
3989
|
...PUBLIC_READ_ENDPOINT_DEFINITIONS,
|
|
3556
|
-
...BILLING_ENDPOINT_DEFINITIONS
|
|
3990
|
+
...BILLING_ENDPOINT_DEFINITIONS,
|
|
3991
|
+
...SITE_MANAGEMENT_ENDPOINT_DEFINITIONS
|
|
3557
3992
|
}), 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, {
|
|
3558
3993
|
...NEWSLETTER_ENDPOINT_DEFINITIONS,
|
|
3559
3994
|
...APPOINTMENT_ENDPOINT_DEFINITIONS,
|
|
3560
3995
|
...EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS
|
|
3561
|
-
}, 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 };
|
|
3996
|
+
}, 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 };
|
|
3562
3997
|
z.object({ refreshToken: z.string().min(1).max(4096) }).strict();
|
|
3563
3998
|
z.object({
|
|
3564
3999
|
accessToken: z.string().min(1).max(4096),
|
|
@@ -6059,13 +6494,16 @@ const SURFACE_FOREGROUND_CSS_VARS = {
|
|
|
6059
6494
|
text: "--rb-surface-text-color",
|
|
6060
6495
|
heading: "--rb-surface-heading-color",
|
|
6061
6496
|
link: "--rb-surface-link-color",
|
|
6497
|
+
linkHover: "--rb-surface-link-hover-color",
|
|
6062
6498
|
supporting: "--rb-surface-supporting-color"
|
|
6063
6499
|
};
|
|
6064
6500
|
const DEFAULT_SURFACE_TEXT_COLOR = "rgb(var(--tb-text, 17 24 39))";
|
|
6501
|
+
const DEFAULT_SURFACE_LINK_COLOR = "rgb(var(--tb-primary, var(--tb-text, 17 24 39)))";
|
|
6065
6502
|
const DEFAULT_ROLE_FALLBACKS = {
|
|
6066
6503
|
text: DEFAULT_SURFACE_TEXT_COLOR,
|
|
6067
6504
|
heading: DEFAULT_SURFACE_TEXT_COLOR,
|
|
6068
|
-
link:
|
|
6505
|
+
link: DEFAULT_SURFACE_LINK_COLOR,
|
|
6506
|
+
linkHover: DEFAULT_SURFACE_LINK_COLOR,
|
|
6069
6507
|
supporting: "rgb(var(--tb-mutedText, 100 116 139))"
|
|
6070
6508
|
};
|
|
6071
6509
|
function requireSurfaceColorValue(role, value) {
|
|
@@ -6075,10 +6513,12 @@ function requireSurfaceColorValue(role, value) {
|
|
|
6075
6513
|
}
|
|
6076
6514
|
function completeSurfaceForegrounds(input) {
|
|
6077
6515
|
const text = requireSurfaceColorValue("text", input.text);
|
|
6516
|
+
const link = input.link === void 0 ? text : requireSurfaceColorValue("link", input.link);
|
|
6078
6517
|
return {
|
|
6079
6518
|
text,
|
|
6080
6519
|
heading: input.heading === void 0 ? text : requireSurfaceColorValue("heading", input.heading),
|
|
6081
|
-
link
|
|
6520
|
+
link,
|
|
6521
|
+
linkHover: input.linkHover === void 0 ? link : requireSurfaceColorValue("linkHover", input.linkHover),
|
|
6082
6522
|
supporting: input.supporting === void 0 ? text : requireSurfaceColorValue("supporting", input.supporting)
|
|
6083
6523
|
};
|
|
6084
6524
|
}
|
|
@@ -6086,6 +6526,7 @@ function surfaceForegroundValue(role, outsideProviderFallback = DEFAULT_ROLE_FAL
|
|
|
6086
6526
|
const roleVariable = SURFACE_FOREGROUND_CSS_VARS[role];
|
|
6087
6527
|
const fallback = requireSurfaceColorValue("fallback", outsideProviderFallback);
|
|
6088
6528
|
if (role === "text") return `var(${roleVariable}, ${fallback})`;
|
|
6529
|
+
if (role === "linkHover") return `var(${roleVariable}, ${surfaceForegroundValue("link", fallback)})`;
|
|
6089
6530
|
return `var(${roleVariable}, var(${SURFACE_FOREGROUND_CSS_VARS.text}, ${fallback}))`;
|
|
6090
6531
|
}
|
|
6091
6532
|
function surfaceForegroundValueWithOpacity(role, opacityPercent) {
|
|
@@ -6099,9 +6540,25 @@ function surfaceForegroundStyle(input) {
|
|
|
6099
6540
|
[SURFACE_FOREGROUND_CSS_VARS.text]: foregrounds.text,
|
|
6100
6541
|
[SURFACE_FOREGROUND_CSS_VARS.heading]: foregrounds.heading,
|
|
6101
6542
|
[SURFACE_FOREGROUND_CSS_VARS.link]: foregrounds.link,
|
|
6102
|
-
[SURFACE_FOREGROUND_CSS_VARS.
|
|
6543
|
+
[SURFACE_FOREGROUND_CSS_VARS.linkHover]: foregrounds.linkHover,
|
|
6544
|
+
[SURFACE_FOREGROUND_CSS_VARS.supporting]: foregrounds.supporting,
|
|
6545
|
+
"--rb-surface-link-hover-decoration": hoverDecoration(input)
|
|
6103
6546
|
};
|
|
6104
6547
|
}
|
|
6548
|
+
function surfaceForegroundInputFromResolved(foreground, color) {
|
|
6549
|
+
const { roles } = foreground;
|
|
6550
|
+
return {
|
|
6551
|
+
text: color(roles.text),
|
|
6552
|
+
heading: color(roles.heading),
|
|
6553
|
+
link: color(roles.link),
|
|
6554
|
+
linkHover: color(roles.linkHover),
|
|
6555
|
+
supporting: color(roles.supporting),
|
|
6556
|
+
hoverDecoration: foreground.hoverDecoration
|
|
6557
|
+
};
|
|
6558
|
+
}
|
|
6559
|
+
function hoverDecoration(input) {
|
|
6560
|
+
return input.hoverDecoration ?? "underline";
|
|
6561
|
+
}
|
|
6105
6562
|
//#endregion
|
|
6106
6563
|
//#region ../theme-core/src/buttons/constants.ts
|
|
6107
6564
|
/**
|
|
@@ -6856,6 +7313,64 @@ function parseAlpha(source) {
|
|
|
6856
7313
|
function isRgbChannel(value) {
|
|
6857
7314
|
return Number.isFinite(value) && value >= 0 && value <= 255;
|
|
6858
7315
|
}
|
|
7316
|
+
/**
|
|
7317
|
+
* Derive the hover foreground that belongs with a resolved resting foreground.
|
|
7318
|
+
*
|
|
7319
|
+
* A resting foreground is chosen to be legible against a known surface. A hover
|
|
7320
|
+
* state derived from it stays within a bounded distance of that colour, so it
|
|
7321
|
+
* inherits most of the resting colour's contrast margin instead of asserting
|
|
7322
|
+
* an unrelated brand colour that no one checked against the surface.
|
|
7323
|
+
*
|
|
7324
|
+
* That bounded-distance property is what lets this be used on a transparent
|
|
7325
|
+
* overlay header, where the backdrop is only partly knowable: the scrolled
|
|
7326
|
+
* state composites a 60% glass tint over arbitrary page content, so no
|
|
7327
|
+
* compile-time contrast proof is available there. Staying near a colour that
|
|
7328
|
+
* is already trusted in both states is a weaker claim than a contrast proof,
|
|
7329
|
+
* and it is one this function can actually keep.
|
|
7330
|
+
*
|
|
7331
|
+
* Returns `null` when the resting token is not a plain palette token — an
|
|
7332
|
+
* already-faded or raw value has no well-defined softening, and the caller
|
|
7333
|
+
* should leave hover alone rather than guess.
|
|
7334
|
+
*/
|
|
7335
|
+
function deriveForegroundHoverToken(restingToken) {
|
|
7336
|
+
const parts = parseColorTokenParts(restingToken);
|
|
7337
|
+
if (parts.kind !== "token") return null;
|
|
7338
|
+
if (parts.opacityPercent !== null) return null;
|
|
7339
|
+
return parseThemeColorToken(`${parts.token}/85`);
|
|
7340
|
+
}
|
|
7341
|
+
/**
|
|
7342
|
+
* Prefer an authored hover that survives every measured backdrop, then a
|
|
7343
|
+
* checked softening of the resting colour. A null backdrop set represents a
|
|
7344
|
+
* trusted treatment: only an explicit authored hover may change the colour.
|
|
7345
|
+
* When neither option works, retain the resting colour and underline it.
|
|
7346
|
+
*/
|
|
7347
|
+
function planForegroundHover(input) {
|
|
7348
|
+
const { restingToken, candidate, palette, backdrops } = input;
|
|
7349
|
+
if (candidate && candidate !== restingToken) {
|
|
7350
|
+
if (backdrops === null || survivesEveryBackdrop(candidate, palette, backdrops)) return {
|
|
7351
|
+
kind: "candidate",
|
|
7352
|
+
token: candidate,
|
|
7353
|
+
decoration: "initial"
|
|
7354
|
+
};
|
|
7355
|
+
}
|
|
7356
|
+
const softened = deriveForegroundHoverToken(restingToken);
|
|
7357
|
+
if (softened && backdrops && survivesEveryBackdrop(softened, palette, backdrops)) return {
|
|
7358
|
+
kind: "softened",
|
|
7359
|
+
token: softened,
|
|
7360
|
+
decoration: "initial"
|
|
7361
|
+
};
|
|
7362
|
+
return {
|
|
7363
|
+
kind: "resting",
|
|
7364
|
+
token: restingToken,
|
|
7365
|
+
decoration: "underline"
|
|
7366
|
+
};
|
|
7367
|
+
}
|
|
7368
|
+
function survivesEveryBackdrop(token, palette, backdrops) {
|
|
7369
|
+
return backdrops.length > 0 && backdrops.every((backdrop) => {
|
|
7370
|
+
const foreground = resolveOpaqueSurfaceHex(token, palette, backdrop);
|
|
7371
|
+
return foreground !== null && contrastRatio(foreground, backdrop) >= 4.5;
|
|
7372
|
+
});
|
|
7373
|
+
}
|
|
6859
7374
|
//#endregion
|
|
6860
7375
|
//#region ../theme-core/src/surfaces/resolveSurfaceForeground.ts
|
|
6861
7376
|
const FALLBACK_TEXT_TOKENS = [
|
|
@@ -6902,12 +7417,16 @@ function resolveSurfaceForeground(background, palette, candidates = {}, options
|
|
|
6902
7417
|
}
|
|
6903
7418
|
function foregroundCandidates(background, overrides) {
|
|
6904
7419
|
return {
|
|
6905
|
-
text: overrides.text
|
|
6906
|
-
heading: overrides.heading
|
|
6907
|
-
link: overrides.link
|
|
6908
|
-
|
|
7420
|
+
text: candidateOrBackground(overrides.text, background?.textColor),
|
|
7421
|
+
heading: candidateOrBackground(overrides.heading, background?.headingColor),
|
|
7422
|
+
link: candidateOrBackground(overrides.link, background?.linkColor),
|
|
7423
|
+
linkHover: candidateOrBackground(overrides.linkHover),
|
|
7424
|
+
supporting: candidateOrBackground(overrides.supporting, background?.supportingColor)
|
|
6909
7425
|
};
|
|
6910
7426
|
}
|
|
7427
|
+
function candidateOrBackground(candidate, backgroundValue) {
|
|
7428
|
+
return candidate ?? backgroundValue ?? null;
|
|
7429
|
+
}
|
|
6911
7430
|
function resolveDeterministicForeground(backgroundReference, candidates, palette, compositeBase) {
|
|
6912
7431
|
const backgroundHex = resolveOpaqueSurfaceHex(backgroundReference, palette, compositeBase);
|
|
6913
7432
|
if (!backgroundHex) return resolveTrustedTreatmentForeground(candidates, palette);
|
|
@@ -6919,29 +7438,51 @@ function resolveDeterministicForeground(backgroundReference, candidates, palette
|
|
|
6919
7438
|
...FALLBACK_TEXT_TOKENS
|
|
6920
7439
|
], backgroundHex, palette, derivedOnToken ? [derivedOnToken] : []);
|
|
6921
7440
|
if (!text) return { kind: "unknown" };
|
|
6922
|
-
return {
|
|
6923
|
-
|
|
6924
|
-
|
|
6925
|
-
|
|
6926
|
-
|
|
6927
|
-
|
|
6928
|
-
|
|
6929
|
-
|
|
6930
|
-
};
|
|
7441
|
+
return knownForeground({
|
|
7442
|
+
text,
|
|
7443
|
+
heading: safeTokenOr(candidates.heading, text, backgroundHex, palette),
|
|
7444
|
+
link: safeTokenOr(candidates.link, text, backgroundHex, palette),
|
|
7445
|
+
supporting: safeTokenOr(candidates.supporting, text, backgroundHex, palette)
|
|
7446
|
+
}, {
|
|
7447
|
+
kind: "measured",
|
|
7448
|
+
backdropHex: backgroundHex
|
|
7449
|
+
}, candidates.linkHover, palette);
|
|
6931
7450
|
}
|
|
6932
7451
|
function resolveTrustedTreatmentForeground(candidates, palette) {
|
|
6933
7452
|
const text = canonicalToken(candidates.text, palette);
|
|
6934
7453
|
if (!text) return { kind: "unknown" };
|
|
7454
|
+
return knownForeground({
|
|
7455
|
+
text,
|
|
7456
|
+
heading: canonicalToken(candidates.heading, palette) ?? text,
|
|
7457
|
+
link: canonicalToken(candidates.link, palette) ?? text,
|
|
7458
|
+
supporting: canonicalToken(candidates.supporting, palette) ?? text
|
|
7459
|
+
}, { kind: "trusted-treatment" }, candidates.linkHover, palette);
|
|
7460
|
+
}
|
|
7461
|
+
function knownForeground(roles, provenance, hoverCandidate, palette) {
|
|
7462
|
+
const hover = planForegroundHover({
|
|
7463
|
+
restingToken: roles.link,
|
|
7464
|
+
candidate: canonicalHoverToken(hoverCandidate, palette),
|
|
7465
|
+
palette,
|
|
7466
|
+
backdrops: provenance.kind === "measured" ? [provenance.backdropHex] : null
|
|
7467
|
+
});
|
|
6935
7468
|
return {
|
|
6936
7469
|
kind: "known",
|
|
7470
|
+
provenance,
|
|
6937
7471
|
roles: {
|
|
6938
|
-
|
|
6939
|
-
|
|
6940
|
-
|
|
6941
|
-
|
|
6942
|
-
}
|
|
7472
|
+
...roles,
|
|
7473
|
+
linkHover: hover.token
|
|
7474
|
+
},
|
|
7475
|
+
hoverDecoration: hover.decoration
|
|
6943
7476
|
};
|
|
6944
7477
|
}
|
|
7478
|
+
function canonicalHoverToken(reference, palette) {
|
|
7479
|
+
const token = parseThemeColorToken(reference);
|
|
7480
|
+
if (token) {
|
|
7481
|
+
const parts = parseColorTokenParts(token);
|
|
7482
|
+
if (parts.kind === "token" && resolveConcreteColorHex(parts.token, palette)) return token;
|
|
7483
|
+
}
|
|
7484
|
+
return canonicalToken(reference, palette);
|
|
7485
|
+
}
|
|
6945
7486
|
function safeTokenOr(candidate, fallback, backgroundHex, palette) {
|
|
6946
7487
|
return firstSafeToken([candidate], backgroundHex, palette) ?? fallback;
|
|
6947
7488
|
}
|
|
@@ -9881,6 +10422,43 @@ const effectCompositionSchema = z.object({
|
|
|
9881
10422
|
/** Effects applied on focus */
|
|
9882
10423
|
focus: z.array(effectApplicationSchema).optional()
|
|
9883
10424
|
});
|
|
10425
|
+
const policiesById = {
|
|
10426
|
+
"darken-background": "other",
|
|
10427
|
+
"lighten-background": "other",
|
|
10428
|
+
"fade-background": "other",
|
|
10429
|
+
"opacity-reduce": "other",
|
|
10430
|
+
"animated-gradient": "other",
|
|
10431
|
+
"background-on-hover": "paired-hover",
|
|
10432
|
+
"background-on-hover-alpha": "paired-hover",
|
|
10433
|
+
"border-glow": "other",
|
|
10434
|
+
"drop-shadow": "other",
|
|
10435
|
+
"inner-shadow": "other",
|
|
10436
|
+
"neumorphic-shadow": "other",
|
|
10437
|
+
"outer-glow": "other",
|
|
10438
|
+
"retro-3d-shadow": "other",
|
|
10439
|
+
"scale-up": "other",
|
|
10440
|
+
"scale-down": "other",
|
|
10441
|
+
lift: "other",
|
|
10442
|
+
"press-down": "other",
|
|
10443
|
+
pop: "other",
|
|
10444
|
+
"aurora-glow": "other",
|
|
10445
|
+
"cosmic-stardust": "other",
|
|
10446
|
+
"gradient-border-fill": "other",
|
|
10447
|
+
"animated-gradient-border-fill": "other",
|
|
10448
|
+
"border-bottom-grow": "other",
|
|
10449
|
+
"gradient-text": "other",
|
|
10450
|
+
"text-color-change": "text-colour",
|
|
10451
|
+
"border-color-change": "other",
|
|
10452
|
+
"sketchy-border": "other",
|
|
10453
|
+
"pulse-animation": "other",
|
|
10454
|
+
"nav-underline": "underline",
|
|
10455
|
+
"nav-frosted-base": "other",
|
|
10456
|
+
"nav-frosted-hover": "other",
|
|
10457
|
+
"nav-frosted-active": "other"
|
|
10458
|
+
};
|
|
10459
|
+
function navEffectPolicy(effectId) {
|
|
10460
|
+
return policiesById[effectId] ?? null;
|
|
10461
|
+
}
|
|
9884
10462
|
//#endregion
|
|
9885
10463
|
//#region ../theme-core/src/navigation/types.ts
|
|
9886
10464
|
/**
|
|
@@ -9969,6 +10547,16 @@ const navLinkStyleSchema = z.object({
|
|
|
9969
10547
|
/** Composable effects */
|
|
9970
10548
|
effects: effectCompositionSchema.optional()
|
|
9971
10549
|
});
|
|
10550
|
+
function navLinkHoverColorCandidate(style) {
|
|
10551
|
+
const effect = style?.effects?.hover?.find((item) => navEffectPolicy(item.effectId) === "text-colour");
|
|
10552
|
+
return parseThemeColorToken(effect?.options?.hoverColorToken ?? style?.hoverColorToken);
|
|
10553
|
+
}
|
|
10554
|
+
function navLinkOwnsHoverForeground(style) {
|
|
10555
|
+
return style?.effects?.hover?.some((effect) => navEffectPolicy(effect.effectId) === "paired-hover") ?? false;
|
|
10556
|
+
}
|
|
10557
|
+
function navLinkOwnsUnderline(style) {
|
|
10558
|
+
return style?.effects?.hover?.some((effect) => navEffectPolicy(effect.effectId) === "underline") ?? false;
|
|
10559
|
+
}
|
|
9972
10560
|
//#endregion
|
|
9973
10561
|
//#region ../theme-core/src/customCss/validation.ts
|
|
9974
10562
|
/**
|
|
@@ -16157,6 +16745,14 @@ const blockDesignFallback = {
|
|
|
16157
16745
|
};
|
|
16158
16746
|
blockDesignFallback.sectionSurface, blockDesignFallback.contentFrame, blockDesignFallback.sectionHeight, blockDesignFallback.heroLegibility, blockDesignFallback.imageSurfaceTreatment, blockDesignFallback.imageSurfaceMotion, blockDesignFallback.tileTreatment, blockDesignFallback.eventListTreatment, blockDesignFallback.eyebrowTreatment, blockDesignFallback.accordionIconTreatment, blockDesignFallback.composition;
|
|
16159
16747
|
//#endregion
|
|
16748
|
+
//#region ../theme-core/src/header/rootPaint.ts
|
|
16749
|
+
/** The nav container takes precedence when a floating header also has one. */
|
|
16750
|
+
function headerRootPaint(header) {
|
|
16751
|
+
const navContainerType = header?.navContainer?.type ?? "none";
|
|
16752
|
+
if (navContainerType === "glass" || navContainerType === "pill") return "contained-nav";
|
|
16753
|
+
return header?.variant === "floating" ? "overlay" : "own-surface";
|
|
16754
|
+
}
|
|
16755
|
+
//#endregion
|
|
16160
16756
|
//#region ../theme-core/src/site-styles/siteChromeBackgrounds.ts
|
|
16161
16757
|
const siteChromeBackgroundColorTokens = toSiteChromeBackgroundColorTokens(backgroundAppearanceColorTokenNames);
|
|
16162
16758
|
const quickSiteChromeBackgroundColorTokens = toSiteChromeBackgroundColorTokens(backgroundAppearanceQuickColorTokenNames);
|
|
@@ -16336,6 +16932,259 @@ z.object(headerPreferencesShape).omit({
|
|
|
16336
16932
|
structure: true
|
|
16337
16933
|
}).strict();
|
|
16338
16934
|
//#endregion
|
|
16935
|
+
//#region ../theme-core/src/navigation/presets.ts
|
|
16936
|
+
/**
|
|
16937
|
+
* Built-in nav link style presets
|
|
16938
|
+
*
|
|
16939
|
+
* Each preset uses composable effects to achieve its look.
|
|
16940
|
+
*/
|
|
16941
|
+
const NAV_LINK_PRESETS = {
|
|
16942
|
+
/**
|
|
16943
|
+
* Minimal - subtle color change on hover
|
|
16944
|
+
*/
|
|
16945
|
+
minimal: {
|
|
16946
|
+
name: "Minimal",
|
|
16947
|
+
typography: "body",
|
|
16948
|
+
fontWeight: "medium",
|
|
16949
|
+
textTransform: "none",
|
|
16950
|
+
italic: false,
|
|
16951
|
+
colorToken: "text",
|
|
16952
|
+
hoverColorToken: "primary",
|
|
16953
|
+
padding: "none",
|
|
16954
|
+
borderRadius: "none",
|
|
16955
|
+
effects: { hover: [{
|
|
16956
|
+
effectId: "text-color-change",
|
|
16957
|
+
options: { hoverColorToken: "primary" }
|
|
16958
|
+
}] }
|
|
16959
|
+
},
|
|
16960
|
+
/**
|
|
16961
|
+
* Underline - static underline appears on hover
|
|
16962
|
+
*/
|
|
16963
|
+
underline: {
|
|
16964
|
+
name: "Underline",
|
|
16965
|
+
typography: "body",
|
|
16966
|
+
fontWeight: "medium",
|
|
16967
|
+
textTransform: "none",
|
|
16968
|
+
italic: false,
|
|
16969
|
+
colorToken: "text",
|
|
16970
|
+
padding: "none",
|
|
16971
|
+
borderRadius: "none",
|
|
16972
|
+
effects: { hover: [{
|
|
16973
|
+
effectId: "nav-underline",
|
|
16974
|
+
options: { style: "static" }
|
|
16975
|
+
}] }
|
|
16976
|
+
},
|
|
16977
|
+
/**
|
|
16978
|
+
* Underline Grow - animated underline grows from center on hover
|
|
16979
|
+
*/
|
|
16980
|
+
"underline-grow": {
|
|
16981
|
+
name: "Underline Grow",
|
|
16982
|
+
typography: "body",
|
|
16983
|
+
fontWeight: "medium",
|
|
16984
|
+
textTransform: "none",
|
|
16985
|
+
italic: false,
|
|
16986
|
+
colorToken: "text",
|
|
16987
|
+
padding: "none",
|
|
16988
|
+
borderRadius: "none",
|
|
16989
|
+
effects: { hover: [{
|
|
16990
|
+
effectId: "nav-underline",
|
|
16991
|
+
options: { style: "grow" }
|
|
16992
|
+
}] }
|
|
16993
|
+
},
|
|
16994
|
+
/**
|
|
16995
|
+
* Capsule - pill-shaped background on hover
|
|
16996
|
+
*/
|
|
16997
|
+
capsule: {
|
|
16998
|
+
name: "Capsule",
|
|
16999
|
+
typography: "body",
|
|
17000
|
+
fontWeight: "medium",
|
|
17001
|
+
textTransform: "none",
|
|
17002
|
+
italic: false,
|
|
17003
|
+
colorToken: "text",
|
|
17004
|
+
padding: "compact",
|
|
17005
|
+
borderRadius: "full",
|
|
17006
|
+
effects: {
|
|
17007
|
+
hover: [{
|
|
17008
|
+
effectId: "background-on-hover-alpha",
|
|
17009
|
+
options: {
|
|
17010
|
+
colorToken: "primary",
|
|
17011
|
+
opacity: 10
|
|
17012
|
+
}
|
|
17013
|
+
}],
|
|
17014
|
+
active: [{
|
|
17015
|
+
effectId: "background-on-hover-alpha",
|
|
17016
|
+
options: {
|
|
17017
|
+
colorToken: "primary",
|
|
17018
|
+
opacity: 15
|
|
17019
|
+
}
|
|
17020
|
+
}]
|
|
17021
|
+
}
|
|
17022
|
+
},
|
|
17023
|
+
/**
|
|
17024
|
+
* Solid - solid background color on hover
|
|
17025
|
+
*/
|
|
17026
|
+
solid: {
|
|
17027
|
+
name: "Solid",
|
|
17028
|
+
typography: "body",
|
|
17029
|
+
fontWeight: "medium",
|
|
17030
|
+
textTransform: "none",
|
|
17031
|
+
italic: false,
|
|
17032
|
+
colorToken: "text",
|
|
17033
|
+
padding: "compact",
|
|
17034
|
+
borderRadius: "none",
|
|
17035
|
+
effects: {
|
|
17036
|
+
hover: [{
|
|
17037
|
+
effectId: "background-on-hover",
|
|
17038
|
+
options: {
|
|
17039
|
+
colorToken: "primary",
|
|
17040
|
+
textColorToken: "primaryForeground"
|
|
17041
|
+
}
|
|
17042
|
+
}],
|
|
17043
|
+
active: [{
|
|
17044
|
+
effectId: "background-on-hover",
|
|
17045
|
+
options: {
|
|
17046
|
+
colorToken: "primary",
|
|
17047
|
+
textColorToken: "primaryForeground"
|
|
17048
|
+
}
|
|
17049
|
+
}]
|
|
17050
|
+
}
|
|
17051
|
+
},
|
|
17052
|
+
/**
|
|
17053
|
+
* Scale - gentle scale-up on hover
|
|
17054
|
+
*/
|
|
17055
|
+
scale: {
|
|
17056
|
+
name: "Scale",
|
|
17057
|
+
typography: "body",
|
|
17058
|
+
fontWeight: "medium",
|
|
17059
|
+
textTransform: "none",
|
|
17060
|
+
italic: false,
|
|
17061
|
+
colorToken: "text",
|
|
17062
|
+
padding: "none",
|
|
17063
|
+
borderRadius: "none",
|
|
17064
|
+
effects: { hover: [{
|
|
17065
|
+
effectId: "scale-up",
|
|
17066
|
+
options: { scale: 1.05 }
|
|
17067
|
+
}] }
|
|
17068
|
+
},
|
|
17069
|
+
/**
|
|
17070
|
+
* Frosted - semi-transparent glass-like background
|
|
17071
|
+
*/
|
|
17072
|
+
frosted: {
|
|
17073
|
+
name: "Frosted",
|
|
17074
|
+
typography: "body",
|
|
17075
|
+
fontWeight: "medium",
|
|
17076
|
+
textTransform: "none",
|
|
17077
|
+
italic: false,
|
|
17078
|
+
colorToken: "text",
|
|
17079
|
+
padding: "compact",
|
|
17080
|
+
borderRadius: "md",
|
|
17081
|
+
effects: {
|
|
17082
|
+
base: [{ effectId: "nav-frosted-base" }],
|
|
17083
|
+
hover: [{ effectId: "nav-frosted-hover" }],
|
|
17084
|
+
active: [{ effectId: "nav-frosted-active" }]
|
|
17085
|
+
}
|
|
17086
|
+
}
|
|
17087
|
+
};
|
|
17088
|
+
/**
|
|
17089
|
+
* Get a nav link style preset by ID
|
|
17090
|
+
*/
|
|
17091
|
+
function getNavLinkPreset(presetId) {
|
|
17092
|
+
return NAV_LINK_PRESETS[presetId];
|
|
17093
|
+
}
|
|
17094
|
+
Object.keys(NAV_LINK_PRESETS);
|
|
17095
|
+
//#endregion
|
|
17096
|
+
//#region ../theme-core/src/header/legacyNavLinkStyle.ts
|
|
17097
|
+
function buildLegacyHeaderNavLinkStyle(header, contrastTreatment, navTextSize) {
|
|
17098
|
+
const navStyle = header.navStyle ?? "minimal";
|
|
17099
|
+
const basePreset = getNavLinkPreset(navStyle);
|
|
17100
|
+
if (!basePreset) return null;
|
|
17101
|
+
const style = {
|
|
17102
|
+
...basePreset,
|
|
17103
|
+
fontWeight: header.navWeight ?? basePreset.fontWeight,
|
|
17104
|
+
colorToken: (header.navColor ?? header.textColor)?.trim() || basePreset.colorToken,
|
|
17105
|
+
...contrastTreatment ? { contrastTreatment } : {},
|
|
17106
|
+
...navTextSize ? { textSize: navTextSize } : {}
|
|
17107
|
+
};
|
|
17108
|
+
if (header.navWeight === "bold" && navStyle === "solid") style.textTransform = "uppercase";
|
|
17109
|
+
applyLegacyGlassTreatment(style, header, navStyle);
|
|
17110
|
+
return style;
|
|
17111
|
+
}
|
|
17112
|
+
function applyLegacyGlassTreatment(style, header, navStyle) {
|
|
17113
|
+
if (header.navContainer?.type !== "glass" || navStyle !== "minimal") return;
|
|
17114
|
+
style.borderRadius = "full";
|
|
17115
|
+
style.effects = {
|
|
17116
|
+
...style.effects,
|
|
17117
|
+
hover: glassStateEffects(10),
|
|
17118
|
+
active: glassStateEffects(18)
|
|
17119
|
+
};
|
|
17120
|
+
}
|
|
17121
|
+
function glassStateEffects(opacity) {
|
|
17122
|
+
return [{
|
|
17123
|
+
effectId: "background-on-hover-alpha",
|
|
17124
|
+
options: {
|
|
17125
|
+
colorToken: "neutral-50",
|
|
17126
|
+
opacity
|
|
17127
|
+
}
|
|
17128
|
+
}, {
|
|
17129
|
+
effectId: "text-color-change",
|
|
17130
|
+
options: { hoverColorToken: "neutral-50" }
|
|
17131
|
+
}];
|
|
17132
|
+
}
|
|
17133
|
+
//#endregion
|
|
17134
|
+
//#region ../theme-core/src/header/openingForegroundProjection.ts
|
|
17135
|
+
function readOpeningForegroundProjection(header) {
|
|
17136
|
+
return header?.__runtimeOpeningForeground ?? null;
|
|
17137
|
+
}
|
|
17138
|
+
//#endregion
|
|
17139
|
+
//#region ../theme-core/src/header/effectiveNavLinkStyle.ts
|
|
17140
|
+
function effectiveHeaderNavLinkStyle(header, contrastTreatment = null, navTextSize = null) {
|
|
17141
|
+
if (!header) return null;
|
|
17142
|
+
if (!header.navLinkStyle) return buildLegacyHeaderNavLinkStyle(header, contrastTreatment, navTextSize);
|
|
17143
|
+
return {
|
|
17144
|
+
...header.navLinkStyle,
|
|
17145
|
+
...contrastTreatment ? { contrastTreatment } : {},
|
|
17146
|
+
...navTextSize ? { textSize: navTextSize } : {}
|
|
17147
|
+
};
|
|
17148
|
+
}
|
|
17149
|
+
function headerForegroundCandidates(header) {
|
|
17150
|
+
if (!header) return {};
|
|
17151
|
+
const style = effectiveHeaderNavLinkStyle(header);
|
|
17152
|
+
return {
|
|
17153
|
+
text: header.textColor ?? header.background?.textColor,
|
|
17154
|
+
link: style?.colorToken ?? header.navColor ?? header.textColor,
|
|
17155
|
+
linkHover: navLinkHoverColorCandidate(style)
|
|
17156
|
+
};
|
|
17157
|
+
}
|
|
17158
|
+
function headerLeafTextColor(header) {
|
|
17159
|
+
if (!header) return "text";
|
|
17160
|
+
return header.textColor ?? header.navColor ?? header.background?.textColor ?? header.navLinkStyle?.colorToken ?? "text";
|
|
17161
|
+
}
|
|
17162
|
+
/** Transparent chrome must reset the whole contract on its own root. */
|
|
17163
|
+
function transparentHeaderForegroundInput(header, palette) {
|
|
17164
|
+
const projection = readOpeningForegroundProjection(header);
|
|
17165
|
+
if (projection?.kind === "known") return surfaceForegroundInputFromResolved(projection, rgbColorValue);
|
|
17166
|
+
return authoredTransparentHeaderForegroundInput(header, palette);
|
|
17167
|
+
}
|
|
17168
|
+
function authoredTransparentHeaderForegroundInput(header, palette) {
|
|
17169
|
+
const text = headerLeafTextColor(header);
|
|
17170
|
+
const style = effectiveHeaderNavLinkStyle(header);
|
|
17171
|
+
const link = style?.colorToken ?? text;
|
|
17172
|
+
const restingToken = parseThemeColorToken(link) ?? parseThemeColorToken("text");
|
|
17173
|
+
if (!restingToken) throw new Error("Built-in text colour token is invalid");
|
|
17174
|
+
const hover = planForegroundHover({
|
|
17175
|
+
restingToken,
|
|
17176
|
+
candidate: navLinkOwnsHoverForeground(style) ? null : navLinkHoverColorCandidate(style),
|
|
17177
|
+
palette,
|
|
17178
|
+
backdrops: null
|
|
17179
|
+
});
|
|
17180
|
+
return {
|
|
17181
|
+
text: rgbColorValue(text),
|
|
17182
|
+
link: rgbColorValue(link),
|
|
17183
|
+
linkHover: rgbColorValue(hover.token),
|
|
17184
|
+
hoverDecoration: navLinkOwnsUnderline(style) ? "initial" : hover.decoration
|
|
17185
|
+
};
|
|
17186
|
+
}
|
|
17187
|
+
//#endregion
|
|
16339
17188
|
//#region ../theme-core/src/site-styles/pageDesignAuthority.ts
|
|
16340
17189
|
const nonEmptyStringSchema = z.string().min(1);
|
|
16341
17190
|
const blockContentVersionIdSchema = nonEmptyStringSchema.transform(asBlockContentVersionId);
|
|
@@ -16488,6 +17337,28 @@ z.object({
|
|
|
16488
17337
|
motion: z.enum(themeTokenRecipeOptions.motion)
|
|
16489
17338
|
});
|
|
16490
17339
|
//#endregion
|
|
17340
|
+
//#region ../theme-core/src/footer/effectiveNavLinkStyle.ts
|
|
17341
|
+
function effectiveFooterNavLinkStyle(footer) {
|
|
17342
|
+
if (!footer) return null;
|
|
17343
|
+
if (footer.navLinkStyle) return footer.navLinkStyle;
|
|
17344
|
+
const basePreset = getNavLinkPreset(footer.navStyle ?? "minimal");
|
|
17345
|
+
if (!basePreset) return null;
|
|
17346
|
+
return {
|
|
17347
|
+
...basePreset,
|
|
17348
|
+
fontWeight: footer.navWeight ?? basePreset.fontWeight,
|
|
17349
|
+
colorToken: footer.navColor?.trim() || basePreset.colorToken
|
|
17350
|
+
};
|
|
17351
|
+
}
|
|
17352
|
+
function footerForegroundCandidates(footer, proseHoverCandidate) {
|
|
17353
|
+
if (!footer) return {};
|
|
17354
|
+
const style = effectiveFooterNavLinkStyle(footer);
|
|
17355
|
+
return {
|
|
17356
|
+
text: footer.background?.textColor,
|
|
17357
|
+
link: style?.colorToken ?? footer.navColor ?? footer.background?.textColor,
|
|
17358
|
+
linkHover: navLinkOwnsHoverForeground(style) ? proseHoverCandidate : navLinkHoverColorCandidate(style)
|
|
17359
|
+
};
|
|
17360
|
+
}
|
|
17361
|
+
//#endregion
|
|
16491
17362
|
//#region ../theme-core/src/siteChromeOverlayClearance.ts
|
|
16492
17363
|
const SITE_CHROME_VISIBLE_HEADER_ATTR = "data-site-chrome-visible-header";
|
|
16493
17364
|
//#endregion
|
|
@@ -19461,33 +20332,28 @@ function resolveBackgroundColorValue(value, context) {
|
|
|
19461
20332
|
//#endregion
|
|
19462
20333
|
//#region ../blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.ts
|
|
19463
20334
|
const contextualButtonStylesCache = /* @__PURE__ */ new WeakMap();
|
|
19464
|
-
function resolveHeaderLeafTextColor(header) {
|
|
19465
|
-
return header?.textColor ?? header?.navColor ?? header?.background?.textColor ?? header?.navLinkStyle?.colorToken ?? "text";
|
|
19466
|
-
}
|
|
19467
20335
|
function resolveHeaderRootForeground(header, palette, isTransparent) {
|
|
19468
|
-
if (isTransparent) return { kind: "unknown" };
|
|
20336
|
+
if (isTransparent) return readOpeningForegroundProjection(header) ?? { kind: "unknown" };
|
|
19469
20337
|
const background = header?.background;
|
|
19470
20338
|
return resolveSurfaceForeground(background ?? {
|
|
19471
20339
|
type: "color",
|
|
19472
20340
|
color: "surface"
|
|
19473
|
-
}, palette,
|
|
19474
|
-
|
|
19475
|
-
|
|
19476
|
-
|
|
20341
|
+
}, palette, headerForegroundCandidates(header));
|
|
20342
|
+
}
|
|
20343
|
+
function resolveFooterRootForeground(footer, palette, proseHoverCandidate) {
|
|
20344
|
+
return resolveSurfaceForeground(footer?.background ?? {
|
|
20345
|
+
type: "color",
|
|
20346
|
+
color: "surface"
|
|
20347
|
+
}, palette, footerForegroundCandidates(footer, proseHoverCandidate), { compositeBase: "background" });
|
|
19477
20348
|
}
|
|
19478
20349
|
function resolveSurfaceForegroundStyles(value, context, options) {
|
|
19479
20350
|
const input = parseBackgroundContent(value);
|
|
19480
|
-
const foreground = input ? resolveSurfaceForeground(input, context.theme.palette, {}, { compositeBase: options?.fallbackToken }) : { kind: "unknown" };
|
|
20351
|
+
const foreground = input ? resolveSurfaceForeground(input, context.theme.palette, { linkHover: context.proseHoverCandidate }, { compositeBase: options?.fallbackToken }) : { kind: "unknown" };
|
|
19481
20352
|
const buttonStyles = resolveContextualButtonStyles(input, foreground, context, options);
|
|
19482
20353
|
if (foreground.kind === "unknown") return buttonStyles;
|
|
19483
20354
|
return {
|
|
19484
20355
|
...buttonStyles,
|
|
19485
|
-
...surfaceForegroundStyle(
|
|
19486
|
-
text: resolveBackgroundColorValue(foreground.roles.text, context),
|
|
19487
|
-
heading: resolveBackgroundColorValue(foreground.roles.heading, context),
|
|
19488
|
-
link: resolveBackgroundColorValue(foreground.roles.link, context),
|
|
19489
|
-
supporting: resolveBackgroundColorValue(foreground.roles.supporting, context)
|
|
19490
|
-
})
|
|
20356
|
+
...surfaceForegroundStyle(surfaceForegroundInputFromResolved(foreground, (token) => resolveBackgroundColorValue(token, context)))
|
|
19491
20357
|
};
|
|
19492
20358
|
}
|
|
19493
20359
|
function resolveContextualButtonStyles(background, foreground, context, options) {
|
|
@@ -25303,10 +26169,7 @@ function resolveBackgroundVisualStyles(backgroundColor, defaultToken = "surface"
|
|
|
25303
26169
|
};
|
|
25304
26170
|
}
|
|
25305
26171
|
function resolveHeaderVisualStyles(header) {
|
|
25306
|
-
|
|
25307
|
-
const hasContainedNav = navContainerType === "glass" || navContainerType === "pill";
|
|
25308
|
-
const hasOverlayVariant = header?.variant === "floating";
|
|
25309
|
-
if (hasContainedNav || hasOverlayVariant) return {
|
|
26172
|
+
if (headerRootPaint(header) !== "own-surface") return {
|
|
25310
26173
|
backgroundToken: "transparent",
|
|
25311
26174
|
isTransparent: true
|
|
25312
26175
|
};
|
|
@@ -25317,23 +26180,7 @@ function resolveHeaderVisualStyles(header) {
|
|
|
25317
26180
|
}
|
|
25318
26181
|
function resolvedForegroundStyle(foreground) {
|
|
25319
26182
|
if (foreground.kind === "unknown") return void 0;
|
|
25320
|
-
|
|
25321
|
-
return surfaceForegroundStyle({
|
|
25322
|
-
text: rgbColorValue(roles.text),
|
|
25323
|
-
heading: rgbColorValue(roles.heading),
|
|
25324
|
-
link: rgbColorValue(roles.link),
|
|
25325
|
-
supporting: rgbColorValue(roles.supporting)
|
|
25326
|
-
});
|
|
25327
|
-
}
|
|
25328
|
-
function resolveFooterRootForeground(footer, palette) {
|
|
25329
|
-
const background = footer?.background;
|
|
25330
|
-
return resolveSurfaceForeground(background ?? {
|
|
25331
|
-
type: "color",
|
|
25332
|
-
color: "surface"
|
|
25333
|
-
}, palette, {
|
|
25334
|
-
text: background?.textColor,
|
|
25335
|
-
link: footer?.navLinkStyle?.colorToken ?? footer?.navColor ?? background?.textColor
|
|
25336
|
-
});
|
|
26183
|
+
return surfaceForegroundStyle(surfaceForegroundInputFromResolved(foreground, rgbColorValue));
|
|
25337
26184
|
}
|
|
25338
26185
|
function footerBottomBarBorderWidthStyle(width) {
|
|
25339
26186
|
if (!width) return void 0;
|
|
@@ -25360,8 +26207,7 @@ const headerRootClassTransform = {
|
|
|
25360
26207
|
const placement = planSiteChromePlacement(parseHeaderPositioning(content.positioning));
|
|
25361
26208
|
const header = asPartialObject(value);
|
|
25362
26209
|
const visuals = resolveHeaderVisualStyles(header);
|
|
25363
|
-
const
|
|
25364
|
-
const hasContainedNav = navContainerType === "glass" || navContainerType === "pill";
|
|
26210
|
+
const hasContainedNav = headerRootPaint(header) === "contained-nav";
|
|
25365
26211
|
const backgroundClass = visuals.isTransparent || hasContainedNav ? "rb-bg-transparent" : null;
|
|
25366
26212
|
const classes = [config.base, backgroundClass];
|
|
25367
26213
|
if (!hasContainedNav) {
|
|
@@ -25404,7 +26250,7 @@ const headerRootStyleTransform = {
|
|
|
25404
26250
|
run: (value, _options, context) => {
|
|
25405
26251
|
const header = asPartialObject(value);
|
|
25406
26252
|
const visuals = resolveHeaderVisualStyles(header);
|
|
25407
|
-
return mergeStyles(resolvedForegroundStyle(resolveHeaderRootForeground(header, context.theme.palette, visuals.isTransparent)) ?? { color: rgbColorValue(
|
|
26253
|
+
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"));
|
|
25408
26254
|
}
|
|
25409
26255
|
};
|
|
25410
26256
|
const headerSectionBackgroundTransform = {
|
|
@@ -25412,9 +26258,7 @@ const headerSectionBackgroundTransform = {
|
|
|
25412
26258
|
kind: "string",
|
|
25413
26259
|
summary: "Resolve the inner site-header section background token",
|
|
25414
26260
|
run: (value) => {
|
|
25415
|
-
|
|
25416
|
-
const navContainerType = header?.navContainer?.type ?? "none";
|
|
25417
|
-
return header?.variant === "floating" || navContainerType === "glass" || navContainerType === "pill" ? "raw:transparent" : "background";
|
|
26261
|
+
return headerRootPaint(asPartialObject(value)) !== "own-surface" ? "raw:transparent" : "background";
|
|
25418
26262
|
}
|
|
25419
26263
|
};
|
|
25420
26264
|
const footerRootStyleTransform = {
|
|
@@ -25432,7 +26276,7 @@ const footerRootStyleTransform = {
|
|
|
25432
26276
|
styleParts.push(backgroundColorStyle(token));
|
|
25433
26277
|
}
|
|
25434
26278
|
}
|
|
25435
|
-
styleParts.push(resolvedForegroundStyle(resolveFooterRootForeground(footer, context.theme.palette)));
|
|
26279
|
+
styleParts.push(resolvedForegroundStyle(resolveFooterRootForeground(footer, context.theme.palette, context.proseHoverCandidate)));
|
|
25436
26280
|
styleParts.push(borderColorStyle("border"));
|
|
25437
26281
|
return mergeStyles(...styleParts);
|
|
25438
26282
|
}
|
|
@@ -25494,22 +26338,28 @@ const footerBottomBarStyleTransform = {
|
|
|
25494
26338
|
run: (value, _options, context) => {
|
|
25495
26339
|
const footer = asPartialObject(value);
|
|
25496
26340
|
const bottomBar = footer?.bottomBar;
|
|
25497
|
-
|
|
25498
|
-
const background = bottomBar?.background;
|
|
25499
|
-
if (background?.type === "color") styleParts.push(backgroundColorStyle(background.color ?? "surface"));
|
|
25500
|
-
styleParts.push(borderColorStyle(bottomBar?.borderTop?.colorToken ?? "border"), footerBottomBarBorderWidthStyle(bottomBar?.borderTop?.width));
|
|
25501
|
-
const foreground = resolveSurfaceForeground(background?.type === "color" ? background : {
|
|
25502
|
-
type: "color",
|
|
25503
|
-
color: "transparent"
|
|
25504
|
-
}, context.theme.palette, {
|
|
25505
|
-
text: bottomBar?.textColor,
|
|
25506
|
-
link: footer?.bottomTextLinkStyle?.colorToken ?? bottomBar?.textColor
|
|
25507
|
-
});
|
|
25508
|
-
if (background?.type === "color") styleParts.push(resolvedForegroundStyle(foreground));
|
|
25509
|
-
else if (bottomBar?.textColor) styleParts.push(textColorStyle(bottomBar.textColor));
|
|
25510
|
-
return mergeStyles(...styleParts);
|
|
26341
|
+
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));
|
|
25511
26342
|
}
|
|
25512
26343
|
};
|
|
26344
|
+
function footerBottomBarForegroundStyle(footer, palette) {
|
|
26345
|
+
if (!footer?.bottomBar) return void 0;
|
|
26346
|
+
const bar = footer.bottomBar;
|
|
26347
|
+
if (bar.background?.type !== "color") return backgroundlessBottomBarForegroundStyle(footer);
|
|
26348
|
+
return resolvedForegroundStyle(resolveSurfaceForeground(bar.background, palette, {
|
|
26349
|
+
text: bar.textColor,
|
|
26350
|
+
link: footer.bottomTextLinkStyle?.colorToken ?? bar.textColor,
|
|
26351
|
+
linkHover: footer.bottomTextLinkStyle?.hoverColorToken
|
|
26352
|
+
}, { compositeBase: measuredFooterBackdrop(footer, palette) }));
|
|
26353
|
+
}
|
|
26354
|
+
function backgroundlessBottomBarForegroundStyle(footer) {
|
|
26355
|
+
if (footer.background?.contentOwner === "site-chrome-editor") return;
|
|
26356
|
+
const textColor = footer.bottomBar?.textColor;
|
|
26357
|
+
return textColor ? textColorStyle(textColor) : void 0;
|
|
26358
|
+
}
|
|
26359
|
+
function measuredFooterBackdrop(footer, palette) {
|
|
26360
|
+
const foreground = resolveFooterRootForeground(footer, palette);
|
|
26361
|
+
return foreground.kind === "known" && foreground.provenance.kind === "measured" ? foreground.provenance.backdropHex : null;
|
|
26362
|
+
}
|
|
25513
26363
|
const footerSplitMainClassTransform = {
|
|
25514
26364
|
id: "layout.footerSplitMainClass",
|
|
25515
26365
|
kind: "string",
|
|
@@ -25605,7 +26455,7 @@ function chromeSurfaceTextToken(surface, theme, palette) {
|
|
|
25605
26455
|
case "header-root": {
|
|
25606
26456
|
const header = theme.header;
|
|
25607
26457
|
const foreground = resolveHeaderRootForeground(header, palette, resolveHeaderVisualStyles(header).isTransparent);
|
|
25608
|
-
return foreground.kind === "known" ? foreground.roles.text :
|
|
26458
|
+
return foreground.kind === "known" ? foreground.roles.text : headerLeafTextColor(header);
|
|
25609
26459
|
}
|
|
25610
26460
|
case "header-mobile-panel": return theme.header?.dropdownStyle?.textColor ?? "text";
|
|
25611
26461
|
case "footer-root": {
|
|
@@ -26189,13 +27039,13 @@ const hours = stack({
|
|
|
26189
27039
|
as: "p",
|
|
26190
27040
|
className: "rb-caption rb-opacity-70"
|
|
26191
27041
|
}, bind("module.timeZone"), when("module.timeZone"))], when("module.kind", { equals: "opening-hours" }));
|
|
26192
|
-
const socials = inline({ className: "rb-
|
|
27042
|
+
const socials = inline({ className: "rb-footer-socials" }, [link({
|
|
26193
27043
|
href: { $bind: { from: "social.href" } },
|
|
26194
27044
|
target: "_blank",
|
|
26195
27045
|
rel: "noreferrer noopener",
|
|
26196
27046
|
"aria-label": { $bind: { from: "social.label" } },
|
|
26197
|
-
className: "rb-nav-text transition-theme-standard"
|
|
26198
|
-
}, [icon({ className: "rb-
|
|
27047
|
+
className: "rb-footer-social-link rb-nav-text transition-theme-standard"
|
|
27048
|
+
}, [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" }));
|
|
26199
27049
|
const authoredCopy = richText({
|
|
26200
27050
|
className: "rb-prose rb-prose-sm rb-max-w-none",
|
|
26201
27051
|
style: textColorStyle("text/80")
|
|
@@ -27692,7 +28542,9 @@ const bookingWizard = bookingForm(withApiBindings({
|
|
|
27692
28542
|
} },
|
|
27693
28543
|
formId: { $bind: { from: "content.formId" } },
|
|
27694
28544
|
form: { $bind: { from: "data.form" } },
|
|
27695
|
-
services: { $bind: { from: "data.services" } }
|
|
28545
|
+
services: { $bind: { from: "data.services" } },
|
|
28546
|
+
mailingList: { $bind: { from: "$root.mailingList" } },
|
|
28547
|
+
siteName: { $bind: { from: "$root.siteName" } }
|
|
27696
28548
|
}));
|
|
27697
28549
|
/** Both variants sit in the same section shell; only the inner layout differs. */
|
|
27698
28550
|
function bookingSection(children) {
|
|
@@ -28280,6 +29132,7 @@ const publicEventLoaderQuerySchemaShape = {
|
|
|
28280
29132
|
seriesSlug: z.string().optional(),
|
|
28281
29133
|
includeOccurrenceId: z.string().optional(),
|
|
28282
29134
|
readIntent: z.string().optional(),
|
|
29135
|
+
detailAdmission: z.string().optional(),
|
|
28283
29136
|
detailLevel: z.string().optional(),
|
|
28284
29137
|
readProfile: z.string().optional()
|
|
28285
29138
|
};
|
|
@@ -28446,11 +29299,11 @@ const publicEventBookingAvailabilitySchema = z.discriminatedUnion("kind", [z.obj
|
|
|
28446
29299
|
"series_archived",
|
|
28447
29300
|
"parent_archived",
|
|
28448
29301
|
"parent_inconsistent",
|
|
28449
|
-
"not_public",
|
|
28450
29302
|
"already_started",
|
|
28451
29303
|
"enrollment_closed"
|
|
28452
29304
|
])
|
|
28453
29305
|
})]);
|
|
29306
|
+
const publicEventBookingClosedDetailSchema = z.discriminatedUnion("kind", [z.object({ kind: z.literal("opensSoon") }), z.object({ kind: z.literal("paused") })]);
|
|
28454
29307
|
const publicRunSessionSchema = z.object({
|
|
28455
29308
|
occurrenceId: z.string(),
|
|
28456
29309
|
startsAt: z.string(),
|
|
@@ -28495,6 +29348,7 @@ const publicEventBaseSchema = z.object({
|
|
|
28495
29348
|
destination: publicEventDestinationSchema,
|
|
28496
29349
|
requiresRegistration: z.boolean(),
|
|
28497
29350
|
bookingAvailability: publicEventBookingAvailabilitySchema,
|
|
29351
|
+
bookingClosedDetail: publicEventBookingClosedDetailSchema.optional(),
|
|
28498
29352
|
deliveryMode: z.enum([
|
|
28499
29353
|
"in_person",
|
|
28500
29354
|
"online",
|
|
@@ -29192,7 +30046,13 @@ const eventRegistrationHydrationSchemaShape = {
|
|
|
29192
30046
|
spamProtectionEnabled: z.boolean().optional(),
|
|
29193
30047
|
supportEmail: z.string().optional(),
|
|
29194
30048
|
sitePasses: publicPassProductCollectionSchema.nullable().optional(),
|
|
29195
|
-
siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
|
|
30049
|
+
siteMemberships: publicMembershipProductCollectionSchema.nullable().optional(),
|
|
30050
|
+
mailingList: z.unknown().transform((value) => {
|
|
30051
|
+
if (value === void 0) return void 0;
|
|
30052
|
+
const parsed = parseMailingListRuntimeContext(value);
|
|
30053
|
+
return parsed.ok ? parsed.value : void 0;
|
|
30054
|
+
}),
|
|
30055
|
+
siteName: z.string().optional()
|
|
29196
30056
|
};
|
|
29197
30057
|
const eventRegistrationEventSourceSchema = z.discriminatedUnion("kind", [z.object({
|
|
29198
30058
|
kind: z.literal("loaded"),
|
|
@@ -29364,7 +30224,9 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
|
|
|
29364
30224
|
spamProtectionEnabled: source.spamProtectionEnabled,
|
|
29365
30225
|
supportEmail: source.supportEmail,
|
|
29366
30226
|
sitePasses: source.sitePasses ?? null,
|
|
29367
|
-
siteMemberships: source.siteMemberships ?? null
|
|
30227
|
+
siteMemberships: source.siteMemberships ?? null,
|
|
30228
|
+
mailingList: source.mailingList,
|
|
30229
|
+
siteName: source.siteName
|
|
29368
30230
|
}
|
|
29369
30231
|
};
|
|
29370
30232
|
}
|
|
@@ -29532,6 +30394,8 @@ const eventRegistrationBlockDefinition = {
|
|
|
29532
30394
|
events: { $bind: { from: "data.events" } },
|
|
29533
30395
|
wholeSeriesRunEvents: { $bind: { from: "data.wholeSeriesRunEvents" } },
|
|
29534
30396
|
loaderFailures: { $bind: { from: "$root.loaderFailures" } },
|
|
30397
|
+
mailingList: { $bind: { from: "$root.mailingList" } },
|
|
30398
|
+
siteName: { $bind: { from: "$root.siteName" } },
|
|
29535
30399
|
sitePasses: { $bind: { from: "data.sitePasses" } },
|
|
29536
30400
|
siteMemberships: { $bind: { from: "data.siteMemberships" } },
|
|
29537
30401
|
stage: { $bind: {
|
|
@@ -36158,6 +37022,11 @@ const mailingListContentVersionIdSchema = z.string().transform((value, ctx) => {
|
|
|
36158
37022
|
});
|
|
36159
37023
|
return z.NEVER;
|
|
36160
37024
|
});
|
|
37025
|
+
const mailingListSignupBlockSourceRefSchema = z.object({
|
|
37026
|
+
tag: z.literal("block_ref"),
|
|
37027
|
+
blockId: mailingListSignupBlockIdSchema,
|
|
37028
|
+
contentVersionId: mailingListContentVersionIdSchema
|
|
37029
|
+
});
|
|
36161
37030
|
const signedMailingListSourceTokenSchema = z.string().trim().min(1).transform(parseRequiredMailingListSignedSourceToken);
|
|
36162
37031
|
const newsletterSourceCommonSchema = z.object({
|
|
36163
37032
|
siteId: z.string().optional(),
|
|
@@ -36172,7 +37041,15 @@ const newsletterSourceSchema = z.discriminatedUnion("source", [
|
|
|
36172
37041
|
newsletterSourceCommonSchema.extend({
|
|
36173
37042
|
source: z.literal("block"),
|
|
36174
37043
|
blockId: z.string().nullable().optional(),
|
|
36175
|
-
|
|
37044
|
+
newsletterBlockSubmission: z.discriminatedUnion("tag", [
|
|
37045
|
+
z.object({
|
|
37046
|
+
tag: z.literal("ready"),
|
|
37047
|
+
sourceRef: mailingListSignupBlockSourceRefSchema
|
|
37048
|
+
}),
|
|
37049
|
+
z.object({ tag: z.literal("unpublished-form") }),
|
|
37050
|
+
z.object({ tag: z.literal("unpublished-settings") }),
|
|
37051
|
+
z.object({ tag: z.literal("unavailable") })
|
|
37052
|
+
])
|
|
36176
37053
|
}),
|
|
36177
37054
|
newsletterSourceCommonSchema.extend({
|
|
36178
37055
|
source: z.literal("signed-footer"),
|
|
@@ -36201,11 +37078,7 @@ const newsletterHydrationSchema = z.object({
|
|
|
36201
37078
|
target: z.discriminatedUnion("tag", [
|
|
36202
37079
|
z.object({
|
|
36203
37080
|
tag: z.literal("block-source"),
|
|
36204
|
-
sourceRef:
|
|
36205
|
-
tag: z.literal("block_ref"),
|
|
36206
|
-
blockId: mailingListSignupBlockIdSchema,
|
|
36207
|
-
contentVersionId: mailingListContentVersionIdSchema
|
|
36208
|
-
}).nullable()
|
|
37081
|
+
sourceRef: mailingListSignupBlockSourceRefSchema.nullable()
|
|
36209
37082
|
}),
|
|
36210
37083
|
z.object({
|
|
36211
37084
|
tag: z.literal("signed-footer-source"),
|
|
@@ -36214,7 +37087,11 @@ const newsletterHydrationSchema = z.object({
|
|
|
36214
37087
|
token: signedMailingListSourceTokenSchema
|
|
36215
37088
|
})
|
|
36216
37089
|
}),
|
|
36217
|
-
z.object({ tag: z.literal("preview") })
|
|
37090
|
+
z.object({ tag: z.literal("preview") }),
|
|
37091
|
+
z.object({
|
|
37092
|
+
tag: z.literal("unpublished-preview"),
|
|
37093
|
+
reason: z.enum(["unpublished-form", "unpublished-settings"])
|
|
37094
|
+
})
|
|
36218
37095
|
]),
|
|
36219
37096
|
setupRevision: z.number().int().positive().nullable(),
|
|
36220
37097
|
choiceProvider: z.enum([
|
|
@@ -36283,16 +37160,21 @@ const newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
|
|
|
36283
37160
|
});
|
|
36284
37161
|
function projectNewsletterFormHydrationTarget(source) {
|
|
36285
37162
|
switch (source.source) {
|
|
36286
|
-
case "block": {
|
|
36287
|
-
|
|
36288
|
-
|
|
37163
|
+
case "block": switch (source.newsletterBlockSubmission.tag) {
|
|
37164
|
+
case "unpublished-form":
|
|
37165
|
+
case "unpublished-settings": return {
|
|
37166
|
+
tag: "unpublished-preview",
|
|
37167
|
+
reason: source.newsletterBlockSubmission.tag
|
|
37168
|
+
};
|
|
37169
|
+
case "ready": return {
|
|
36289
37170
|
tag: "block-source",
|
|
36290
|
-
sourceRef
|
|
37171
|
+
sourceRef: source.newsletterBlockSubmission.sourceRef
|
|
36291
37172
|
};
|
|
36292
|
-
return {
|
|
37173
|
+
case "unavailable": return {
|
|
36293
37174
|
tag: "block-source",
|
|
36294
37175
|
sourceRef: null
|
|
36295
37176
|
};
|
|
37177
|
+
default: return assertNever$2(source.newsletterBlockSubmission);
|
|
36296
37178
|
}
|
|
36297
37179
|
case "signed-footer": return {
|
|
36298
37180
|
tag: "signed-footer-source",
|
|
@@ -36397,65 +37279,67 @@ const editorialSplitLayout = styledSection({
|
|
|
36397
37279
|
spacing: "comfortable",
|
|
36398
37280
|
background: "surface"
|
|
36399
37281
|
});
|
|
36400
|
-
const
|
|
36401
|
-
|
|
36402
|
-
|
|
36403
|
-
|
|
36404
|
-
|
|
36405
|
-
|
|
36406
|
-
|
|
36407
|
-
|
|
36408
|
-
|
|
36409
|
-
|
|
36410
|
-
|
|
36411
|
-
|
|
36412
|
-
|
|
36413
|
-
|
|
36414
|
-
|
|
36415
|
-
|
|
36416
|
-
|
|
36417
|
-
|
|
36418
|
-
|
|
36419
|
-
|
|
36420
|
-
|
|
36421
|
-
|
|
36422
|
-
|
|
36423
|
-
|
|
36424
|
-
|
|
36425
|
-
description: "Vertical layout with fields stacked"
|
|
36426
|
-
},
|
|
36427
|
-
inline: {
|
|
36428
|
-
label: "Inline",
|
|
36429
|
-
description: "Horizontal layout (email + button side by side)"
|
|
36430
|
-
},
|
|
36431
|
-
"editorial-split": {
|
|
36432
|
-
label: "Editorial split",
|
|
36433
|
-
description: "Copy and form in balanced side-by-side columns, stacked on mobile."
|
|
36434
|
-
}
|
|
36435
|
-
},
|
|
36436
|
-
styleTokens: {
|
|
36437
|
-
background: "surface",
|
|
36438
|
-
typography: "body",
|
|
36439
|
-
spacing: "md"
|
|
37282
|
+
const newsletterSignupManifest = createBlockManifest({
|
|
37283
|
+
id: "block.newsletter-signup",
|
|
37284
|
+
title: "Newsletter Signup",
|
|
37285
|
+
titleSource: "title",
|
|
37286
|
+
description: "Newsletter subscription form with configurable field presets.",
|
|
37287
|
+
category: "interactive",
|
|
37288
|
+
contentSource: { kind: "inline" },
|
|
37289
|
+
fragments: [{
|
|
37290
|
+
fragment: newsletterCopyFragment,
|
|
37291
|
+
fieldPriority: 0
|
|
37292
|
+
}, {
|
|
37293
|
+
fragment: newsletterFormFragment,
|
|
37294
|
+
fieldPriority: 1
|
|
37295
|
+
}],
|
|
37296
|
+
layout: stackedLayout,
|
|
37297
|
+
variants: {
|
|
37298
|
+
stacked: stackedLayout,
|
|
37299
|
+
inline: inlineLayout,
|
|
37300
|
+
"editorial-split": editorialSplitLayout
|
|
37301
|
+
},
|
|
37302
|
+
defaultVariant: "stacked",
|
|
37303
|
+
variantOptions: {
|
|
37304
|
+
stacked: {
|
|
37305
|
+
label: "Stacked",
|
|
37306
|
+
description: "Vertical layout with fields stacked"
|
|
36440
37307
|
},
|
|
36441
|
-
|
|
36442
|
-
|
|
36443
|
-
|
|
36444
|
-
animation: false,
|
|
36445
|
-
paletteHidden: false
|
|
37308
|
+
inline: {
|
|
37309
|
+
label: "Inline",
|
|
37310
|
+
description: "Horizontal layout (email + button side by side)"
|
|
36446
37311
|
},
|
|
36447
|
-
|
|
36448
|
-
"
|
|
36449
|
-
"
|
|
36450
|
-
|
|
36451
|
-
|
|
36452
|
-
|
|
36453
|
-
|
|
36454
|
-
|
|
36455
|
-
|
|
36456
|
-
|
|
36457
|
-
|
|
36458
|
-
|
|
37312
|
+
"editorial-split": {
|
|
37313
|
+
label: "Editorial split",
|
|
37314
|
+
description: "Copy and form in balanced side-by-side columns, stacked on mobile."
|
|
37315
|
+
}
|
|
37316
|
+
},
|
|
37317
|
+
styleTokens: {
|
|
37318
|
+
background: "surface",
|
|
37319
|
+
typography: "body",
|
|
37320
|
+
spacing: "md"
|
|
37321
|
+
},
|
|
37322
|
+
behaviours: {
|
|
37323
|
+
supportsThemeSwitching: true,
|
|
37324
|
+
inlineEditing: false,
|
|
37325
|
+
animation: false,
|
|
37326
|
+
paletteHidden: false
|
|
37327
|
+
},
|
|
37328
|
+
tags: [
|
|
37329
|
+
"newsletter",
|
|
37330
|
+
"signup",
|
|
37331
|
+
"email",
|
|
37332
|
+
"subscribe",
|
|
37333
|
+
"subscription",
|
|
37334
|
+
"mailchimp",
|
|
37335
|
+
"marketing",
|
|
37336
|
+
"lead-capture"
|
|
37337
|
+
],
|
|
37338
|
+
icon: "Mail"
|
|
37339
|
+
});
|
|
37340
|
+
[...(newsletterSignupManifest.fields ?? []).map((field) => field.id)];
|
|
37341
|
+
const newsletterSignupBlockDefinition = {
|
|
37342
|
+
manifest: newsletterSignupManifest,
|
|
36459
37343
|
runtime: newsletterFormBlockRuntime
|
|
36460
37344
|
};
|
|
36461
37345
|
//#endregion
|
|
@@ -38497,7 +39381,8 @@ const BOOKING_FORM_DATA_RESERVED_KEYS = /* @__PURE__ */ new Set([
|
|
|
38497
39381
|
"discountCode",
|
|
38498
39382
|
"selectedSlidingAmountInput",
|
|
38499
39383
|
"selectedCollectionOptionKind",
|
|
38500
|
-
"selectedAppointmentPackageId"
|
|
39384
|
+
"selectedAppointmentPackageId",
|
|
39385
|
+
"mailingListOptIn"
|
|
38501
39386
|
]);
|
|
38502
39387
|
function isBookingFormDataReservedKey(value) {
|
|
38503
39388
|
return BOOKING_FORM_DATA_RESERVED_KEYS.has(value);
|
|
@@ -38845,6 +39730,46 @@ z.object({ acceptExtraSiteCharge: z.boolean().optional() });
|
|
|
38845
39730
|
//#region ../surfaces/src/index.ts
|
|
38846
39731
|
const SURFACE_IDS = ["core", "macadamia"];
|
|
38847
39732
|
const DEFAULT_SURFACE_ID = "core";
|
|
39733
|
+
/**
|
|
39734
|
+
* Root hosts for each surface, keyed by deployment tier. The tier-keyed shape
|
|
39735
|
+
* makes it impossible to mis-order entries: callers like
|
|
39736
|
+
* `buildSurfaceAwareDashboardOriginForSurfaceId` look up by tier directly
|
|
39737
|
+
* rather than relying on positional alignment between arrays.
|
|
39738
|
+
*/
|
|
39739
|
+
const SURFACE_ROOT_HOSTS = {
|
|
39740
|
+
core: {
|
|
39741
|
+
local: "localhost",
|
|
39742
|
+
prod: "riverbankcms.com"
|
|
39743
|
+
},
|
|
39744
|
+
macadamia: {
|
|
39745
|
+
local: "macadamia.localhost",
|
|
39746
|
+
prod: "macadamia.studio"
|
|
39747
|
+
}
|
|
39748
|
+
};
|
|
39749
|
+
const SURFACE_SITE_ROOT_HOSTS = {
|
|
39750
|
+
core: {
|
|
39751
|
+
local: "localhost",
|
|
39752
|
+
prod: "riverbanksites.com"
|
|
39753
|
+
},
|
|
39754
|
+
macadamia: {
|
|
39755
|
+
local: "macadamia.localhost",
|
|
39756
|
+
prod: "macadamia.studio"
|
|
39757
|
+
}
|
|
39758
|
+
};
|
|
39759
|
+
const SURFACE_SITE_ROOT_HOST_ALIASES = { core: { prod: ["preview.riverbanksites.com"] } };
|
|
39760
|
+
function surfaceHostTableValues(table) {
|
|
39761
|
+
return Object.values(table).flatMap((byTier) => Object.values(byTier).flat());
|
|
39762
|
+
}
|
|
39763
|
+
function siteSlugLabelUnderRoot(host, siteRootHost) {
|
|
39764
|
+
if (!host.endsWith(`.${siteRootHost}`)) return [];
|
|
39765
|
+
return host.slice(0, host.length - siteRootHost.length - 1).split(".").slice(-1);
|
|
39766
|
+
}
|
|
39767
|
+
function deriveSurfaceOwnedSiteSlugs() {
|
|
39768
|
+
const siteRootHosts = [...surfaceHostTableValues(SURFACE_SITE_ROOT_HOSTS), ...surfaceHostTableValues(SURFACE_SITE_ROOT_HOST_ALIASES)];
|
|
39769
|
+
const labels = [...surfaceHostTableValues(SURFACE_ROOT_HOSTS), ...siteRootHosts].flatMap((host) => siteRootHosts.flatMap((root) => siteSlugLabelUnderRoot(host, root)));
|
|
39770
|
+
return [...new Set(labels)].sort();
|
|
39771
|
+
}
|
|
39772
|
+
deriveSurfaceOwnedSiteSlugs();
|
|
38848
39773
|
[...SURFACE_IDS.filter((surfaceId) => surfaceId !== DEFAULT_SURFACE_ID)];
|
|
38849
39774
|
//#endregion
|
|
38850
39775
|
//#region ../api/src/accountApi.ts
|
|
@@ -39446,6 +40371,7 @@ function collectText(node) {
|
|
|
39446
40371
|
if (node.type === "text") return node.text ?? "";
|
|
39447
40372
|
return (node.content ?? []).map(collectText).join("");
|
|
39448
40373
|
}
|
|
40374
|
+
z.enum(["public", "unlisted"], { error: "visibility must be 'public' or 'unlisted'" });
|
|
39449
40375
|
//#endregion
|
|
39450
40376
|
//#region ../api/src/bookingPaymentTermSchemas.ts
|
|
39451
40377
|
const bookingDepositRefundPolicySchema = z.enum(["refundable", "non_refundable"]);
|