@riverbankcms/sdk 0.144.0 → 0.146.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 +17 -0
- package/dist/{PreviewEditorSidebar-CQZNnFiM.mjs → PreviewEditorSidebar-kg2r2Fyi.mjs} +4 -4
- package/dist/{PreviewEditorUI-DCNxnmI0.mjs → PreviewEditorUI-sWMLp5dT.mjs} +3 -3
- package/dist/{PreviewQueryProvider-BCYICImX.mjs → PreviewQueryProvider-Cg51xq1w.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-BJolUbr1.mjs → SdkPreviewModeRuntime-h2ti3Hch.mjs} +688 -519
- package/dist/{SiteChromeCustomizeContext-CKgEpoxi.mjs → SiteChromeCustomizeContext-DEACFH9m.mjs} +3381 -2017
- package/dist/_dts/ai/src/contracts/proposals.d.ts +5643 -66
- package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +513 -6
- package/dist/_dts/api/src/appointmentEndpointDefinitions.d.ts +49 -0
- package/dist/_dts/api/src/appointmentServiceCategoryEndpoints.d.ts +75 -0
- package/dist/_dts/api/src/appointmentServiceContracts.d.ts +80 -0
- package/dist/_dts/api/src/appointmentSetup.d.ts +8 -1
- package/dist/_dts/api/src/bookingConfig.d.ts +8 -1
- package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +10 -26
- package/dist/_dts/api/src/bookingManagementEventEndpointTypes.d.ts +45 -1
- package/dist/_dts/api/src/clientErrorReporting.d.ts +50 -0
- package/dist/_dts/api/src/communications.d.ts +32 -24
- package/dist/_dts/api/src/contentRuntime.d.ts +3 -5
- package/dist/_dts/api/src/endpoints.d.ts +316 -134
- package/dist/_dts/api/src/event-visibility.d.ts +20 -0
- package/dist/_dts/api/src/eventManagementContracts.d.ts +56 -3
- 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 +7 -1
- 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 +22 -2
- package/dist/_dts/api/src/launchRequirementPriority.d.ts +3 -0
- package/dist/_dts/api/src/newsletterCampaignCommandEndpoints.d.ts +13 -0
- package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +30 -11
- package/dist/_dts/api/src/occurrenceScheduling.d.ts +10 -0
- package/dist/_dts/api/src/onboarding/confirmationResend.d.ts +3 -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/publicBookingService.d.ts +35 -1
- package/dist/_dts/api/src/publicExperience/newsletterEndpoints.d.ts +13 -0
- package/dist/_dts/api/src/publicNewsletterEndpointDefinitions.d.ts +58 -0
- package/dist/_dts/api/src/schemas/admin-observability-logs.d.ts +3 -3
- package/dist/_dts/api/src/sdk-event-upsert.d.ts +40 -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/siteManagementEndpointDefinitions.d.ts +49 -0
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +4 -38
- package/dist/_dts/api/src/siteOnboarding.d.ts +75 -9
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -1
- package/dist/_dts/api/src/types.d.ts +8 -1
- package/dist/_dts/api/src/wholeSeriesRuns.d.ts +14 -0
- package/dist/_dts/blocks/src/PageRenderer.d.ts +4 -4
- package/dist/_dts/blocks/src/bindings/index.d.ts +2 -2
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +24 -0
- package/dist/_dts/blocks/src/index.d.ts +3 -1
- package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +10 -0
- package/dist/_dts/blocks/src/pageRenderJoins.d.ts +68 -0
- package/dist/_dts/blocks/src/pageRenderPlan.d.ts +8 -27
- package/dist/_dts/blocks/src/pageRenderPreparation.d.ts +7 -4
- package/dist/_dts/blocks/src/pageRendererBoundaries.d.ts +40 -23
- package/dist/_dts/blocks/src/pageRendererContracts.d.ts +3 -1
- package/dist/_dts/blocks/src/server.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/appointment-services.d.ts +2 -0
- package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +1 -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/location-map.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -47
- package/dist/_dts/blocks/src/system/icons/social.d.ts +1 -1
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +29 -3
- package/dist/_dts/blocks/src/system/registry.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +8 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +22 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +3 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +57 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.service-categories.d.ts +29 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.service-choices.d.ts +13 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +3 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +13 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +23 -7
- 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 +36 -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.submission.d.ts +20 -1
- 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 +2 -1
- 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/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 -3
- package/dist/_dts/content-model/src/content-types/schema.d.ts +1 -1
- package/dist/_dts/core/src/appointment-service-categories.d.ts +108 -0
- package/dist/_dts/core/src/block-content-identity.d.ts +5 -0
- package/dist/_dts/core/src/editor-state.d.ts +2 -1
- package/dist/_dts/core/src/index.d.ts +2 -0
- package/dist/_dts/core/src/mailing-list-submission.d.ts +3 -1
- package/dist/_dts/core/src/public-event-booking-availability.d.ts +20 -1
- package/dist/_dts/core/src/public-profile.d.ts +12 -1
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +711 -242
- 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/types.d.ts +2 -2
- package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
- package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +16 -1
- package/dist/_dts/editor-blocks/src/widgets/site-option-picker/types.d.ts +13 -0
- package/dist/_dts/editor-blocks/src/widgets/site-option-picker/utils.d.ts +29 -0
- package/dist/_dts/preview-next/src/client/blocks/BoundaryControl.d.ts +7 -2
- package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +1 -1
- package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +3 -3
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/applyPreviewProjections.d.ts +1 -3
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -2
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +2 -2
- package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -1
- package/dist/_dts/sdk/src/client/runtimeCacheKeys.d.ts +8 -0
- package/dist/_dts/sdk/src/client/types.d.ts +1 -1
- package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
- package/dist/_dts/sdk/src/contracts/page.d.ts +7 -2
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +5 -0
- package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +2 -2
- package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +0 -1
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +6 -8
- package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +4 -4
- package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +4 -4
- package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +7 -2
- 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 +6 -2
- 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 +10 -0
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- 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/layout/boundaryCss.d.ts +3 -0
- package/dist/_dts/theme-core/src/site-styles/compositionBudget.d.ts +8 -0
- package/dist/_dts/theme-core/src/site-styles/contentTemplateRuntimeCompiler.d.ts +3 -2
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +1 -3
- package/dist/_dts/theme-core/src/site-styles/generatedDesignPipeline.d.ts +3 -0
- package/dist/_dts/theme-core/src/site-styles/index.d.ts +3 -0
- package/dist/_dts/theme-core/src/site-styles/joinTreatment.d.ts +132 -0
- package/dist/_dts/theme-core/src/site-styles/pageDesignEditorBoundaries.d.ts +31 -0
- package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +33 -29
- package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +4 -4
- package/dist/_dts/theme-core/src/site-styles/pageFlowPresets.d.ts +36 -0
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +4 -10
- package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +17 -4
- package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +20 -74
- package/dist/_dts/theme-core/src/site-styles/sectionBoundaryComposition.d.ts +95 -0
- package/dist/_dts/theme-core/src/site-styles/sectionTransitions.d.ts +80 -518
- package/dist/_dts/theme-core/src/site-styles/siteStyleBlockPolicies.d.ts +9 -4
- package/dist/_dts/theme-core/src/site-styles/transitionCatalogue.d.ts +320 -0
- package/dist/_dts/theme-core/src/site-styles/types.d.ts +3 -18
- package/dist/_dts/ui/src/navigation-tabs.d.ts +2 -1
- package/dist/client/{BookingConsentAgreement-DoAILrkN.mjs → BookingConsentAgreement-BQKL045f.mjs} +2 -2
- package/dist/client/CheckboxChoice--W2n6yKs.mjs +24 -0
- package/dist/client/{DiscountCodeDisclosure-X528hUTf.mjs → DiscountCodeDisclosure-CsOtjFY7.mjs} +1 -1
- package/dist/client/{EventCombined.client-DSBVwq5m.mjs → EventCombined.client-BdRjVbhH.mjs} +6 -6
- package/dist/client/{EventListing.client-DmFAX7Vb.mjs → EventListing.client-DBxC6xOU.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-BAqXdfhq.mjs → LeafletStaticMap-mHEJKrTs.mjs} +1 -1
- package/dist/client/{ThemedButton-BwNFVwi4.mjs → ThemedButton-CE5KYT6z.mjs} +1 -1
- package/dist/client/{accordion-DRhMdkbd.mjs → accordion-BEQNSptH.mjs} +1 -1
- package/dist/client/{bookingForm-iJ_nCsNF.mjs → bookingForm-AMr-s5vw.mjs} +168 -95
- package/dist/client/bookings.mjs +239 -110
- package/dist/client/{carousel-D8zuffZr.mjs → carousel-Bbt_QgJy.mjs} +1 -1
- package/dist/client/{cart-DeMGJViN.mjs → cart-CnWi30zJ.mjs} +3 -3
- package/dist/client/{checkout-DXc06Km2.mjs → checkout-f3nkWgd4.mjs} +3 -3
- package/dist/client/client.mjs +3222 -1612
- package/dist/client/{context-CDLCfDep.mjs → context-Bc8T6pCe.mjs} +1 -1
- package/dist/client/{dates-ClFx7Epy.mjs → dates-DUsCEzLb.mjs} +2 -3
- package/dist/client/{eventCalendar-BaGpnOGN.mjs → eventCalendar-CKwgXui5.mjs} +9 -9
- package/dist/client/{eventCombined-ywONOx2m.mjs → eventCombined-CBAOSTGR.mjs} +4 -4
- package/dist/client/{eventDetails-B2LlOTYY.mjs → eventDetails-Dh-_WiBD.mjs} +4 -4
- package/dist/client/{eventListing-CMgxWpqP.mjs → eventListing-CA3frIH5.mjs} +4 -4
- package/dist/client/{eventRegistration-BarLDNHR.mjs → eventRegistration-BHtsgdcg.mjs} +21 -22
- package/dist/client/{form-BjqKaBJ7.mjs → form-C2h3YAcg.mjs} +135 -104
- package/dist/client/{headerSection-CP4XDwz1.mjs → headerSection-lwMuMTH9.mjs} +3 -3
- package/dist/client/hooks.mjs +1023 -148
- package/dist/client/{locationMap-C5gW-d-w.mjs → locationMap-DJ2bLODV.mjs} +3 -3
- package/dist/client/{newsletterForm-afXlVSA0.mjs → newsletterForm-8Pu5K32g.mjs} +225 -102
- package/dist/client/{pricing-Bl1CAl28.mjs → pricing-HHx3IgBz.mjs} +1 -1
- package/dist/client/{productDetail-CvQ3jWQe.mjs → productDetail-C_1odnAf.mjs} +3 -3
- package/dist/client/{productList-U874PGO7.mjs → productList-CtCv-Nmx.mjs} +3 -3
- package/dist/client/{propsDecoder-DPXtCZWP.mjs → propsDecoder-Dcgsncxb.mjs} +111 -55
- package/dist/client/rendering/client.mjs +1389 -722
- package/dist/client/rendering/islands.mjs +17 -17
- package/dist/client/rendering.mjs +3136 -1400
- package/dist/client/{routeIslandApiConfig-NGYiUWXu.mjs → routeIslandApiConfig-CWLP7wu3.mjs} +1 -1
- package/dist/client/{scrollToBlock-0-C3DVhK.mjs → scrollToBlock-BNgaEUpo.mjs} +1 -1
- package/dist/client/{shop-BXjXhM9P.mjs → shop-DQXrQ8kJ.mjs} +7 -7
- package/dist/client/{shop-commerce-BZ6UlWJ7.mjs → shop-commerce-B88zmWWo.mjs} +6 -6
- package/dist/client/{shop-commerce-store-DlSBXb3D.mjs → shop-commerce-store-DtSfkKuX.mjs} +1 -1
- package/dist/client/{shopShared-kkEOiLPA.mjs → shopShared-cuaONpkJ.mjs} +4 -4
- package/dist/client/{useEventFilters-zvnnE1ro.mjs → useEventFilters-Bukew6Gb.mjs} +6 -6
- package/dist/preview-next/before-render.mjs +500 -165
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/editor-base.css +11 -0
- package/dist/preview-next/keepAlive.mjs +460 -165
- package/dist/preview-next/middleware.mjs +461 -165
- package/dist/{previewAuthStore-JA6-I_sL.mjs → previewAuthStore-h5IgbSp4.mjs} +485 -165
- package/dist/{sdk-runtime-DFJlQt3q.mjs → sdk-runtime-DTc1uIXn.mjs} +2 -2
- package/dist/{separator-o8GHb1xh.mjs → separator-BpHS1KZK.mjs} +1 -1
- package/dist/server/components.mjs +3088 -1307
- package/dist/server/config-validation.mjs +927 -109
- package/dist/server/config.mjs +927 -109
- package/dist/server/data.mjs +939 -110
- package/dist/server/index.mjs +513 -169
- package/dist/server/next.mjs +2874 -1195
- package/dist/server/page-converter.mjs +420 -79
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +3071 -1289
- package/dist/server/rendering.mjs +3169 -1350
- package/dist/server/routing.mjs +1085 -159
- package/dist/server/server.mjs +1042 -291
- package/dist/server/theme-bridge.mjs +1658 -137
- package/dist/server/theme.mjs +6 -4
- package/dist/styles/index.css +186 -65
- package/package.json +2 -1
package/dist/server/server.mjs
CHANGED
|
@@ -43,6 +43,75 @@ function parsePublicProductCategorySelector(value) {
|
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
45
|
//#endregion
|
|
46
|
+
//#region ../api/src/defineEndpointDefinitions.ts
|
|
47
|
+
/**
|
|
48
|
+
* Validates extracted endpoint descriptors while preserving each literal path,
|
|
49
|
+
* method, and parameter contract for the typed URL builders.
|
|
50
|
+
*/
|
|
51
|
+
function defineEndpointDefinitions(definitions) {
|
|
52
|
+
return definitions;
|
|
53
|
+
}
|
|
54
|
+
//#endregion
|
|
55
|
+
//#region ../api/src/publicNewsletterEndpointDefinitions.ts
|
|
56
|
+
const PUBLIC_NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
57
|
+
subscribeNewsletter: {
|
|
58
|
+
path: "/public/sites/{siteId}/newsletter/subscribe",
|
|
59
|
+
method: "POST",
|
|
60
|
+
tags: ["public-newsletter-{siteId}"],
|
|
61
|
+
auth: "public",
|
|
62
|
+
responseKind: "json"
|
|
63
|
+
},
|
|
64
|
+
confirmNewsletter: {
|
|
65
|
+
path: "/public/sites/{siteId}/newsletter/confirm/{token}",
|
|
66
|
+
method: "GET",
|
|
67
|
+
tags: ["public-newsletter-{siteId}"],
|
|
68
|
+
auth: "public",
|
|
69
|
+
responseKind: "text"
|
|
70
|
+
},
|
|
71
|
+
unsubscribeNewsletter: {
|
|
72
|
+
path: "/public/sites/{siteId}/newsletter/unsubscribe/{token}",
|
|
73
|
+
method: "GET",
|
|
74
|
+
tags: ["public-newsletter-{siteId}"],
|
|
75
|
+
auth: "public",
|
|
76
|
+
responseKind: "text"
|
|
77
|
+
},
|
|
78
|
+
unsubscribeNewsletterPost: {
|
|
79
|
+
path: "/public/sites/{siteId}/newsletter/unsubscribe/{token}",
|
|
80
|
+
method: "POST",
|
|
81
|
+
tags: ["public-newsletter-{siteId}"],
|
|
82
|
+
auth: "public",
|
|
83
|
+
responseKind: "text"
|
|
84
|
+
},
|
|
85
|
+
confirmNewsletterPost: {
|
|
86
|
+
path: "/public/sites/{siteId}/newsletter/confirm/{token}",
|
|
87
|
+
method: "POST",
|
|
88
|
+
tags: ["public-newsletter-{siteId}"],
|
|
89
|
+
auth: "public",
|
|
90
|
+
responseKind: "text"
|
|
91
|
+
},
|
|
92
|
+
getNewsletterPreferences: {
|
|
93
|
+
path: "/public/sites/{siteId}/newsletter/preferences/{token}",
|
|
94
|
+
method: "GET",
|
|
95
|
+
tags: ["public-newsletter-{siteId}"],
|
|
96
|
+
auth: "public",
|
|
97
|
+
responseKind: "text"
|
|
98
|
+
},
|
|
99
|
+
saveNewsletterPreferences: {
|
|
100
|
+
path: "/public/sites/{siteId}/newsletter/preferences/{token}",
|
|
101
|
+
method: "POST",
|
|
102
|
+
tags: ["public-newsletter-{siteId}"],
|
|
103
|
+
auth: "public",
|
|
104
|
+
responseKind: "text"
|
|
105
|
+
},
|
|
106
|
+
getNewsletterArchive: {
|
|
107
|
+
path: "/public/sites/{siteId}/newsletter/archive/{token}",
|
|
108
|
+
method: "GET",
|
|
109
|
+
tags: ["public-newsletter-{siteId}"],
|
|
110
|
+
auth: "public",
|
|
111
|
+
responseKind: "text"
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
//#endregion
|
|
46
115
|
//#region ../api/src/apiEndpointTypes.ts
|
|
47
116
|
function allowedDemoMutationPolicy() {
|
|
48
117
|
return {
|
|
@@ -134,17 +203,85 @@ const SDK_ENTRY_READ_ENDPOINTS = {
|
|
|
134
203
|
}
|
|
135
204
|
};
|
|
136
205
|
//#endregion
|
|
137
|
-
//#region ../api/src/defineEndpointDefinitions.ts
|
|
138
|
-
/**
|
|
139
|
-
* Validates extracted endpoint descriptors while preserving each literal path,
|
|
140
|
-
* method, and parameter contract for the typed URL builders.
|
|
141
|
-
*/
|
|
142
|
-
function defineEndpointDefinitions(definitions) {
|
|
143
|
-
return definitions;
|
|
144
|
-
}
|
|
145
|
-
//#endregion
|
|
146
206
|
//#region ../api/src/appointmentEndpointDefinitions.ts
|
|
147
207
|
const APPOINTMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
208
|
+
...defineEndpointDefinitions({
|
|
209
|
+
listGroupedAppointmentServices: {
|
|
210
|
+
path: "/sites/{siteId}/bookings/services/grouped",
|
|
211
|
+
method: "GET",
|
|
212
|
+
auth: "user",
|
|
213
|
+
responseKind: "json",
|
|
214
|
+
errors: ["server:internal_error"]
|
|
215
|
+
},
|
|
216
|
+
reorderAppointmentServices: {
|
|
217
|
+
path: "/sites/{siteId}/bookings/services/order",
|
|
218
|
+
method: "PUT",
|
|
219
|
+
auth: "user",
|
|
220
|
+
responseKind: "json",
|
|
221
|
+
errors: [
|
|
222
|
+
"validation:invalid_input",
|
|
223
|
+
"auth:forbidden",
|
|
224
|
+
"resource:not_found",
|
|
225
|
+
"resource:conflict",
|
|
226
|
+
"server:internal_error"
|
|
227
|
+
]
|
|
228
|
+
},
|
|
229
|
+
listAppointmentServiceCategories: {
|
|
230
|
+
path: "/sites/{siteId}/bookings/service-categories",
|
|
231
|
+
method: "GET",
|
|
232
|
+
auth: "user",
|
|
233
|
+
responseKind: "json",
|
|
234
|
+
errors: ["server:internal_error"]
|
|
235
|
+
},
|
|
236
|
+
createAppointmentServiceCategory: {
|
|
237
|
+
path: "/sites/{siteId}/bookings/service-categories",
|
|
238
|
+
method: "POST",
|
|
239
|
+
auth: "user",
|
|
240
|
+
responseKind: "json",
|
|
241
|
+
errors: [
|
|
242
|
+
"validation:invalid_input",
|
|
243
|
+
"auth:forbidden",
|
|
244
|
+
"resource:conflict",
|
|
245
|
+
"server:internal_error"
|
|
246
|
+
]
|
|
247
|
+
},
|
|
248
|
+
updateAppointmentServiceCategory: {
|
|
249
|
+
path: "/sites/{siteId}/bookings/service-categories/{categoryId}",
|
|
250
|
+
method: "PUT",
|
|
251
|
+
auth: "user",
|
|
252
|
+
responseKind: "json",
|
|
253
|
+
errors: [
|
|
254
|
+
"validation:invalid_input",
|
|
255
|
+
"auth:forbidden",
|
|
256
|
+
"resource:not_found",
|
|
257
|
+
"resource:conflict",
|
|
258
|
+
"server:internal_error"
|
|
259
|
+
]
|
|
260
|
+
},
|
|
261
|
+
deleteAppointmentServiceCategory: {
|
|
262
|
+
path: "/sites/{siteId}/bookings/service-categories/{categoryId}",
|
|
263
|
+
method: "DELETE",
|
|
264
|
+
auth: "user",
|
|
265
|
+
responseKind: "json",
|
|
266
|
+
errors: [
|
|
267
|
+
"auth:forbidden",
|
|
268
|
+
"resource:not_found",
|
|
269
|
+
"server:internal_error"
|
|
270
|
+
]
|
|
271
|
+
},
|
|
272
|
+
reorderAppointmentServiceCategories: {
|
|
273
|
+
path: "/sites/{siteId}/bookings/service-categories/order",
|
|
274
|
+
method: "PUT",
|
|
275
|
+
auth: "user",
|
|
276
|
+
responseKind: "json",
|
|
277
|
+
errors: [
|
|
278
|
+
"validation:invalid_input",
|
|
279
|
+
"auth:forbidden",
|
|
280
|
+
"resource:conflict",
|
|
281
|
+
"server:internal_error"
|
|
282
|
+
]
|
|
283
|
+
}
|
|
284
|
+
}),
|
|
148
285
|
listAppointmentResources: {
|
|
149
286
|
path: "/sites/{siteId}/bookings/resources",
|
|
150
287
|
method: "GET",
|
|
@@ -855,6 +992,13 @@ const EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS = defineEndpointDefinitions
|
|
|
855
992
|
errors: [],
|
|
856
993
|
responseKind: "blob"
|
|
857
994
|
},
|
|
995
|
+
exportEventOfferingRegistrationsCsv: {
|
|
996
|
+
path: "/sites/{siteId}/bookings/event-offerings/{eventOfferingId}/registrations/export.csv",
|
|
997
|
+
method: "GET",
|
|
998
|
+
auth: "user",
|
|
999
|
+
errors: [],
|
|
1000
|
+
responseKind: "blob"
|
|
1001
|
+
},
|
|
858
1002
|
updateEventSeriesRegistration: {
|
|
859
1003
|
path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations/{registrationId}",
|
|
860
1004
|
method: "PATCH",
|
|
@@ -865,6 +1009,19 @@ const EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS = defineEndpointDefinitions
|
|
|
865
1009
|
"resource:not_found",
|
|
866
1010
|
"server:internal_error"
|
|
867
1011
|
]
|
|
1012
|
+
},
|
|
1013
|
+
saveEventSeriesRegistrationAnswers: {
|
|
1014
|
+
path: "/sites/{siteId}/bookings/event-series/{seriesId}/registrations/{registrationId}/answers",
|
|
1015
|
+
method: "PUT",
|
|
1016
|
+
auth: "user",
|
|
1017
|
+
responseKind: "json",
|
|
1018
|
+
errors: [
|
|
1019
|
+
"validation:invalid_input",
|
|
1020
|
+
"auth:forbidden",
|
|
1021
|
+
"resource:not_found",
|
|
1022
|
+
"resource:conflict",
|
|
1023
|
+
"server:internal_error"
|
|
1024
|
+
]
|
|
868
1025
|
}
|
|
869
1026
|
});
|
|
870
1027
|
//#endregion
|
|
@@ -1285,46 +1442,185 @@ const NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
1285
1442
|
responseKind: "json",
|
|
1286
1443
|
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
1287
1444
|
},
|
|
1288
|
-
|
|
1289
|
-
path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/
|
|
1445
|
+
scheduleNewsletterCampaign: {
|
|
1446
|
+
path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/schedule",
|
|
1290
1447
|
method: "POST",
|
|
1291
1448
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
1292
1449
|
auth: "user",
|
|
1293
1450
|
responseKind: "json",
|
|
1294
1451
|
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
1295
1452
|
},
|
|
1296
|
-
|
|
1297
|
-
path: "/sites/{siteId}/newsletter/
|
|
1298
|
-
method: "
|
|
1453
|
+
unscheduleNewsletterCampaign: {
|
|
1454
|
+
path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/unschedule",
|
|
1455
|
+
method: "POST",
|
|
1299
1456
|
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
1300
1457
|
auth: "user",
|
|
1458
|
+
responseKind: "json",
|
|
1459
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
1460
|
+
},
|
|
1461
|
+
stopNewsletterCampaign: {
|
|
1462
|
+
path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/stop",
|
|
1463
|
+
method: "POST",
|
|
1464
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
1465
|
+
auth: "user",
|
|
1466
|
+
responseKind: "json",
|
|
1467
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
1468
|
+
},
|
|
1469
|
+
testSendNewsletterCampaign: {
|
|
1470
|
+
path: "/sites/{siteId}/newsletter/campaigns/{campaignId}/test-send",
|
|
1471
|
+
method: "POST",
|
|
1472
|
+
tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
|
|
1473
|
+
auth: "user",
|
|
1474
|
+
responseKind: "json",
|
|
1475
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
1476
|
+
}
|
|
1477
|
+
});
|
|
1478
|
+
//#endregion
|
|
1479
|
+
//#region ../api/src/sdkEventEndpointDefinitions.ts
|
|
1480
|
+
/**
|
|
1481
|
+
* The SDK's Event graph: the Events themselves and the occurrences of one run.
|
|
1482
|
+
* Extracted from `endpoints.ts` so this family can be read, and added to, on
|
|
1483
|
+
* its own. New entries here must declare `errors`; the
|
|
1484
|
+
* require-api-endpoint-errors lint enforces that here as in endpoints.ts.
|
|
1485
|
+
*/
|
|
1486
|
+
const SDK_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
1487
|
+
sdkListEvents: {
|
|
1488
|
+
path: "/sdk/{siteId}/events",
|
|
1489
|
+
method: "GET",
|
|
1490
|
+
auth: "service",
|
|
1301
1491
|
responseKind: "json"
|
|
1302
1492
|
},
|
|
1303
|
-
|
|
1304
|
-
path: "/
|
|
1493
|
+
sdkUpsertEvent: {
|
|
1494
|
+
path: "/sdk/{siteId}/events",
|
|
1305
1495
|
method: "POST",
|
|
1496
|
+
auth: "service",
|
|
1497
|
+
responseKind: "json",
|
|
1306
1498
|
errors: [
|
|
1307
1499
|
"validation:invalid_input",
|
|
1308
1500
|
"resource:not_found",
|
|
1309
|
-
"
|
|
1501
|
+
"resource:conflict",
|
|
1502
|
+
"billing:plan_limit_exceeded",
|
|
1310
1503
|
"server:internal_error"
|
|
1311
|
-
]
|
|
1312
|
-
|
|
1313
|
-
|
|
1504
|
+
]
|
|
1505
|
+
},
|
|
1506
|
+
sdkGetEvent: {
|
|
1507
|
+
path: "/sdk/{siteId}/events/{identifier}",
|
|
1508
|
+
method: "GET",
|
|
1509
|
+
auth: "service",
|
|
1314
1510
|
responseKind: "json"
|
|
1315
1511
|
},
|
|
1316
|
-
|
|
1317
|
-
path: "/
|
|
1512
|
+
sdkDeleteEvent: {
|
|
1513
|
+
path: "/sdk/{siteId}/events/{identifier}",
|
|
1514
|
+
method: "DELETE",
|
|
1515
|
+
auth: "service",
|
|
1516
|
+
responseKind: "json",
|
|
1517
|
+
errors: [
|
|
1518
|
+
"resource:not_found",
|
|
1519
|
+
"resource:conflict",
|
|
1520
|
+
"server:internal_error"
|
|
1521
|
+
]
|
|
1522
|
+
},
|
|
1523
|
+
sdkTakeEventOffline: {
|
|
1524
|
+
path: "/sdk/{siteId}/events/{identifier}/lifecycle",
|
|
1318
1525
|
method: "POST",
|
|
1526
|
+
auth: "service",
|
|
1527
|
+
responseKind: "json",
|
|
1319
1528
|
errors: [
|
|
1529
|
+
"resource:not_found",
|
|
1320
1530
|
"validation:invalid_input",
|
|
1531
|
+
"resource:conflict",
|
|
1532
|
+
"server:internal_error"
|
|
1533
|
+
]
|
|
1534
|
+
},
|
|
1535
|
+
sdkListEventOccurrences: {
|
|
1536
|
+
path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences",
|
|
1537
|
+
method: "GET",
|
|
1538
|
+
auth: "service",
|
|
1539
|
+
responseKind: "json",
|
|
1540
|
+
errors: [
|
|
1321
1541
|
"resource:not_found",
|
|
1322
|
-
"
|
|
1542
|
+
"validation:invalid_input",
|
|
1323
1543
|
"server:internal_error"
|
|
1324
|
-
]
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1544
|
+
]
|
|
1545
|
+
},
|
|
1546
|
+
sdkAddEventOccurrence: {
|
|
1547
|
+
path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences",
|
|
1548
|
+
method: "POST",
|
|
1549
|
+
auth: "service",
|
|
1550
|
+
responseKind: "json",
|
|
1551
|
+
errors: [
|
|
1552
|
+
"resource:not_found",
|
|
1553
|
+
"validation:invalid_input",
|
|
1554
|
+
"resource:conflict",
|
|
1555
|
+
"server:internal_error"
|
|
1556
|
+
]
|
|
1557
|
+
},
|
|
1558
|
+
sdkUpdateEventOccurrence: {
|
|
1559
|
+
path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences/{occurrenceId}",
|
|
1560
|
+
method: "PATCH",
|
|
1561
|
+
auth: "service",
|
|
1562
|
+
responseKind: "json",
|
|
1563
|
+
errors: [
|
|
1564
|
+
"resource:not_found",
|
|
1565
|
+
"validation:invalid_input",
|
|
1566
|
+
"resource:conflict",
|
|
1567
|
+
"server:internal_error"
|
|
1568
|
+
]
|
|
1569
|
+
},
|
|
1570
|
+
sdkCancelEventOccurrence: {
|
|
1571
|
+
path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences/{occurrenceId}/cancel",
|
|
1572
|
+
method: "POST",
|
|
1573
|
+
auth: "service",
|
|
1574
|
+
responseKind: "json",
|
|
1575
|
+
errors: [
|
|
1576
|
+
"resource:not_found",
|
|
1577
|
+
"resource:conflict",
|
|
1578
|
+
"server:internal_error"
|
|
1579
|
+
]
|
|
1580
|
+
},
|
|
1581
|
+
sdkDeleteEventOccurrence: {
|
|
1582
|
+
path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences/{occurrenceId}",
|
|
1583
|
+
method: "DELETE",
|
|
1584
|
+
auth: "service",
|
|
1585
|
+
responseKind: "json",
|
|
1586
|
+
errors: [
|
|
1587
|
+
"resource:not_found",
|
|
1588
|
+
"resource:conflict",
|
|
1589
|
+
"server:internal_error"
|
|
1590
|
+
]
|
|
1591
|
+
}
|
|
1592
|
+
});
|
|
1593
|
+
//#endregion
|
|
1594
|
+
//#region ../api/src/sdkPageDesignEndpointDefinitions.ts
|
|
1595
|
+
/**
|
|
1596
|
+
* SDK management endpoints for a page's draft design (issue 1497), spread into
|
|
1597
|
+
* `ENDPOINT_DEFINITIONS` like the other endpoint-definition modules. New
|
|
1598
|
+
* entries here must declare `errors`, which the require-api-endpoint-errors
|
|
1599
|
+
* lint enforces.
|
|
1600
|
+
*/
|
|
1601
|
+
const SDK_PAGE_DESIGN_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
1602
|
+
sdkGetPageDesign: {
|
|
1603
|
+
path: "/sdk/{siteId}/pages/{identifier}/design",
|
|
1604
|
+
method: "GET",
|
|
1605
|
+
auth: "service",
|
|
1606
|
+
responseKind: "json",
|
|
1607
|
+
errors: [
|
|
1608
|
+
"resource:not_found",
|
|
1609
|
+
"validation:invalid_input",
|
|
1610
|
+
"server:internal_error"
|
|
1611
|
+
]
|
|
1612
|
+
},
|
|
1613
|
+
sdkSavePageDesign: {
|
|
1614
|
+
path: "/sdk/{siteId}/pages/{identifier}/design",
|
|
1615
|
+
method: "POST",
|
|
1616
|
+
auth: "service",
|
|
1617
|
+
responseKind: "json",
|
|
1618
|
+
errors: [
|
|
1619
|
+
"resource:not_found",
|
|
1620
|
+
"validation:invalid_input",
|
|
1621
|
+
"resource:conflict",
|
|
1622
|
+
"server:internal_error"
|
|
1623
|
+
]
|
|
1328
1624
|
}
|
|
1329
1625
|
});
|
|
1330
1626
|
//#endregion
|
|
@@ -2225,15 +2521,6 @@ function parseMailingListContentVersionId(value) {
|
|
|
2225
2521
|
const parsed = parseContentVersionId(value);
|
|
2226
2522
|
return parsed.ok ? parsed.value : null;
|
|
2227
2523
|
}
|
|
2228
|
-
function buildMailingListSignupBlockSourceRef(blockId, contentVersionId) {
|
|
2229
|
-
const parsedBlockId = parseMailingListBlockId(blockId);
|
|
2230
|
-
const parsedContentVersionId = parseMailingListContentVersionId(contentVersionId);
|
|
2231
|
-
return parsedBlockId !== null && parsedContentVersionId !== null ? {
|
|
2232
|
-
tag: "block_ref",
|
|
2233
|
-
blockId: parsedBlockId,
|
|
2234
|
-
contentVersionId: parsedContentVersionId
|
|
2235
|
-
} : null;
|
|
2236
|
-
}
|
|
2237
2524
|
//#endregion
|
|
2238
2525
|
//#region ../core/src/secret.ts
|
|
2239
2526
|
/**
|
|
@@ -2885,6 +3172,45 @@ const SITE_API_KEY_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
2885
3172
|
}
|
|
2886
3173
|
});
|
|
2887
3174
|
//#endregion
|
|
3175
|
+
//#region ../api/src/siteManagementEndpointDefinitions.ts
|
|
3176
|
+
const SITE_MANAGEMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
3177
|
+
createSite: {
|
|
3178
|
+
path: "/sites/manage",
|
|
3179
|
+
method: "POST",
|
|
3180
|
+
tags: ["site"],
|
|
3181
|
+
auth: "user",
|
|
3182
|
+
responseKind: "json"
|
|
3183
|
+
},
|
|
3184
|
+
updateSite: {
|
|
3185
|
+
path: "/sites/manage",
|
|
3186
|
+
method: "PUT",
|
|
3187
|
+
tags: ["site"],
|
|
3188
|
+
auth: "user",
|
|
3189
|
+
responseKind: "json"
|
|
3190
|
+
},
|
|
3191
|
+
changeSiteAddress: {
|
|
3192
|
+
path: "/sites/{siteId}/address",
|
|
3193
|
+
method: "PUT",
|
|
3194
|
+
auth: "user",
|
|
3195
|
+
responseKind: "json",
|
|
3196
|
+
demoMutation: DEMO_MUTATION_BLOCKED_DISABLED
|
|
3197
|
+
},
|
|
3198
|
+
getSiteAddressAvailability: {
|
|
3199
|
+
path: "/sites/{siteId}/address/availability",
|
|
3200
|
+
method: "GET",
|
|
3201
|
+
auth: "user",
|
|
3202
|
+
responseKind: "json"
|
|
3203
|
+
},
|
|
3204
|
+
deleteSite: {
|
|
3205
|
+
path: "/sites/{siteId}",
|
|
3206
|
+
method: "DELETE",
|
|
3207
|
+
tags: ["site", "site-{siteId}"],
|
|
3208
|
+
auth: "user",
|
|
3209
|
+
responseKind: "json",
|
|
3210
|
+
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
3211
|
+
}
|
|
3212
|
+
});
|
|
3213
|
+
//#endregion
|
|
2888
3214
|
//#region ../api/src/eventManagementEndpointDefinitions.ts
|
|
2889
3215
|
const EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
2890
3216
|
listEvents: {
|
|
@@ -2932,6 +3258,28 @@ const EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
2932
3258
|
"server:internal_error"
|
|
2933
3259
|
]
|
|
2934
3260
|
},
|
|
3261
|
+
/**
|
|
3262
|
+
* The web address of an event's own page. A course page belongs to the
|
|
3263
|
+
* event itself, so its address is written here rather than through a run.
|
|
3264
|
+
*/
|
|
3265
|
+
updateEventAddress: {
|
|
3266
|
+
path: "/sites/{siteId}/bookings/events/{eventId}/address",
|
|
3267
|
+
method: "PATCH",
|
|
3268
|
+
tags: [
|
|
3269
|
+
"site-{siteId}",
|
|
3270
|
+
"event-series-{siteId}",
|
|
3271
|
+
TAG_TEMPLATES.siteRoutableContent,
|
|
3272
|
+
TAG_TEMPLATES.siteRedirects
|
|
3273
|
+
],
|
|
3274
|
+
auth: "user",
|
|
3275
|
+
responseKind: "json",
|
|
3276
|
+
errors: [
|
|
3277
|
+
"validation:invalid_input",
|
|
3278
|
+
"resource:not_found",
|
|
3279
|
+
"resource:conflict",
|
|
3280
|
+
"server:internal_error"
|
|
3281
|
+
]
|
|
3282
|
+
},
|
|
2935
3283
|
createWholeSeriesRun: {
|
|
2936
3284
|
path: "/sites/{siteId}/bookings/events/{eventId}/runs",
|
|
2937
3285
|
method: "POST",
|
|
@@ -2958,6 +3306,20 @@ const EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
2958
3306
|
"server:internal_error"
|
|
2959
3307
|
]
|
|
2960
3308
|
},
|
|
3309
|
+
updateCourseBookingSettings: {
|
|
3310
|
+
path: "/sites/{siteId}/bookings/events/{eventId}/booking-settings",
|
|
3311
|
+
method: "PATCH",
|
|
3312
|
+
tags: ["site-{siteId}", "event-series-{siteId}"],
|
|
3313
|
+
auth: "user",
|
|
3314
|
+
responseKind: "json",
|
|
3315
|
+
errors: [
|
|
3316
|
+
"validation:invalid_input",
|
|
3317
|
+
"auth:forbidden",
|
|
3318
|
+
"resource:not_found",
|
|
3319
|
+
"resource:conflict",
|
|
3320
|
+
"server:internal_error"
|
|
3321
|
+
]
|
|
3322
|
+
},
|
|
2961
3323
|
cancelWholeSeriesRun: {
|
|
2962
3324
|
path: "/sites/{siteId}/bookings/events/{eventId}/runs/{runId}/cancellation",
|
|
2963
3325
|
method: "POST",
|
|
@@ -2970,6 +3332,28 @@ const EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
2970
3332
|
"resource:conflict",
|
|
2971
3333
|
"server:internal_error"
|
|
2972
3334
|
]
|
|
3335
|
+
},
|
|
3336
|
+
/**
|
|
3337
|
+
* The Content tab's one write: the short introduction, image and
|
|
3338
|
+
* description of an event's page, published without its layout.
|
|
3339
|
+
*/
|
|
3340
|
+
saveEventPageWords: {
|
|
3341
|
+
path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/words",
|
|
3342
|
+
method: "PUT",
|
|
3343
|
+
tags: [
|
|
3344
|
+
TAG_TEMPLATES.siteCollection,
|
|
3345
|
+
TAG_TEMPLATES.siteRoutableContent,
|
|
3346
|
+
TAG_TEMPLATES.pageSurfaceById
|
|
3347
|
+
],
|
|
3348
|
+
auth: "user",
|
|
3349
|
+
responseKind: "json",
|
|
3350
|
+
errors: [
|
|
3351
|
+
"auth:forbidden",
|
|
3352
|
+
"validation:invalid_input",
|
|
3353
|
+
"resource:not_found",
|
|
3354
|
+
"resource:conflict",
|
|
3355
|
+
"server:internal_error"
|
|
3356
|
+
]
|
|
2973
3357
|
}
|
|
2974
3358
|
});
|
|
2975
3359
|
//#endregion
|
|
@@ -3402,13 +3786,51 @@ const BILLING_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
3402
3786
|
responseKind: "json"
|
|
3403
3787
|
}
|
|
3404
3788
|
});
|
|
3789
|
+
//#endregion
|
|
3790
|
+
//#region ../api/src/clientErrorReporting.ts
|
|
3791
|
+
const CLIENT_ERROR_REPORT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({ reportClientError: {
|
|
3792
|
+
path: "/client/error-report",
|
|
3793
|
+
method: "POST",
|
|
3794
|
+
auth: "user",
|
|
3795
|
+
errors: [],
|
|
3796
|
+
responseKind: "json"
|
|
3797
|
+
} });
|
|
3798
|
+
const CLIENT_ERROR_REPORT_LIMITS = {
|
|
3799
|
+
pathname: 1024,
|
|
3800
|
+
name: 120,
|
|
3801
|
+
message: 2e3,
|
|
3802
|
+
stack: 8e3,
|
|
3803
|
+
digest: 128,
|
|
3804
|
+
componentStack: 8e3,
|
|
3805
|
+
sourceLocation: 1024
|
|
3806
|
+
};
|
|
3807
|
+
const clientErrorEventSchema = z.enum([
|
|
3808
|
+
"dashboard:route-error",
|
|
3809
|
+
"dashboard:app-error",
|
|
3810
|
+
"client:error-boundary",
|
|
3811
|
+
"client:window-error",
|
|
3812
|
+
"client:unhandled-rejection"
|
|
3813
|
+
]);
|
|
3814
|
+
z.object({
|
|
3815
|
+
event: clientErrorEventSchema,
|
|
3816
|
+
pathname: z.string().startsWith("/").max(CLIENT_ERROR_REPORT_LIMITS.pathname),
|
|
3817
|
+
name: z.string().max(CLIENT_ERROR_REPORT_LIMITS.name),
|
|
3818
|
+
message: z.string().max(CLIENT_ERROR_REPORT_LIMITS.message),
|
|
3819
|
+
stack: z.string().max(CLIENT_ERROR_REPORT_LIMITS.stack).nullable(),
|
|
3820
|
+
digest: z.string().max(CLIENT_ERROR_REPORT_LIMITS.digest).nullable(),
|
|
3821
|
+
componentStack: z.string().max(CLIENT_ERROR_REPORT_LIMITS.componentStack).nullable(),
|
|
3822
|
+
sourceLocation: z.string().max(CLIENT_ERROR_REPORT_LIMITS.sourceLocation).nullable()
|
|
3823
|
+
}).strict();
|
|
3405
3824
|
const API_ENDPOINTS$1 = {
|
|
3825
|
+
...CLIENT_ERROR_REPORT_ENDPOINT_DEFINITIONS,
|
|
3826
|
+
...PUBLIC_NEWSLETTER_ENDPOINT_DEFINITIONS,
|
|
3406
3827
|
...ACCOUNT_ENDPOINT_DEFINITIONS,
|
|
3407
3828
|
...PUBLIC_ONBOARDING_ATTEMPT_ENDPOINT_DEFINITIONS,
|
|
3408
3829
|
...PUBLIC_EVENT_ENDPOINT_DEFINITIONS,
|
|
3409
3830
|
...GIFTING_ENDPOINT_DEFINITIONS,
|
|
3410
3831
|
...PUBLIC_READ_ENDPOINT_DEFINITIONS,
|
|
3411
3832
|
...BILLING_ENDPOINT_DEFINITIONS,
|
|
3833
|
+
...SITE_MANAGEMENT_ENDPOINT_DEFINITIONS,
|
|
3412
3834
|
aiContentUpdateChat: {
|
|
3413
3835
|
path: "/ai/content-update-chat",
|
|
3414
3836
|
method: "POST",
|
|
@@ -3935,13 +4357,6 @@ const API_ENDPOINTS$1 = {
|
|
|
3935
4357
|
auth: "user",
|
|
3936
4358
|
responseKind: "json"
|
|
3937
4359
|
},
|
|
3938
|
-
createSite: {
|
|
3939
|
-
path: "/sites/manage",
|
|
3940
|
-
method: "POST",
|
|
3941
|
-
tags: ["site"],
|
|
3942
|
-
auth: "user",
|
|
3943
|
-
responseKind: "json"
|
|
3944
|
-
},
|
|
3945
4360
|
createSiteManual: {
|
|
3946
4361
|
path: "/sites/manual",
|
|
3947
4362
|
method: "POST",
|
|
@@ -3949,21 +4364,6 @@ const API_ENDPOINTS$1 = {
|
|
|
3949
4364
|
auth: "user",
|
|
3950
4365
|
responseKind: "json"
|
|
3951
4366
|
},
|
|
3952
|
-
updateSite: {
|
|
3953
|
-
path: "/sites/manage",
|
|
3954
|
-
method: "PUT",
|
|
3955
|
-
tags: ["site"],
|
|
3956
|
-
auth: "user",
|
|
3957
|
-
responseKind: "json"
|
|
3958
|
-
},
|
|
3959
|
-
deleteSite: {
|
|
3960
|
-
path: "/sites/{siteId}",
|
|
3961
|
-
method: "DELETE",
|
|
3962
|
-
tags: ["site", "site-{siteId}"],
|
|
3963
|
-
auth: "user",
|
|
3964
|
-
responseKind: "json",
|
|
3965
|
-
demoMutation: DEMO_MUTATION_BLOCKED_HIDDEN
|
|
3966
|
-
},
|
|
3967
4367
|
listSiteMembers: {
|
|
3968
4368
|
path: "/sites/{siteId}/members",
|
|
3969
4369
|
method: "GET",
|
|
@@ -6537,41 +6937,6 @@ const API_ENDPOINTS$1 = {
|
|
|
6537
6937
|
"server:internal_error"
|
|
6538
6938
|
]
|
|
6539
6939
|
},
|
|
6540
|
-
subscribeNewsletter: {
|
|
6541
|
-
path: "/public/sites/{siteId}/newsletter/subscribe",
|
|
6542
|
-
method: "POST",
|
|
6543
|
-
tags: ["public-newsletter-{siteId}"],
|
|
6544
|
-
auth: "public",
|
|
6545
|
-
responseKind: "json"
|
|
6546
|
-
},
|
|
6547
|
-
confirmNewsletter: {
|
|
6548
|
-
path: "/public/sites/{siteId}/newsletter/confirm/{token}",
|
|
6549
|
-
method: "GET",
|
|
6550
|
-
tags: ["public-newsletter-{siteId}"],
|
|
6551
|
-
auth: "public",
|
|
6552
|
-
responseKind: "text"
|
|
6553
|
-
},
|
|
6554
|
-
unsubscribeNewsletter: {
|
|
6555
|
-
path: "/public/sites/{siteId}/newsletter/unsubscribe/{token}",
|
|
6556
|
-
method: "GET",
|
|
6557
|
-
tags: ["public-newsletter-{siteId}"],
|
|
6558
|
-
auth: "public",
|
|
6559
|
-
responseKind: "text"
|
|
6560
|
-
},
|
|
6561
|
-
unsubscribeNewsletterPost: {
|
|
6562
|
-
path: "/public/sites/{siteId}/newsletter/unsubscribe/{token}",
|
|
6563
|
-
method: "POST",
|
|
6564
|
-
tags: ["public-newsletter-{siteId}"],
|
|
6565
|
-
auth: "public",
|
|
6566
|
-
responseKind: "text"
|
|
6567
|
-
},
|
|
6568
|
-
getNewsletterArchive: {
|
|
6569
|
-
path: "/public/sites/{siteId}/newsletter/archive/{token}",
|
|
6570
|
-
method: "GET",
|
|
6571
|
-
tags: ["public-newsletter-{siteId}"],
|
|
6572
|
-
auth: "public",
|
|
6573
|
-
responseKind: "text"
|
|
6574
|
-
},
|
|
6575
6940
|
listSiteContentTypes: {
|
|
6576
6941
|
path: "/sites/{siteId}/content-types",
|
|
6577
6942
|
method: "GET",
|
|
@@ -8231,6 +8596,7 @@ const API_ENDPOINTS$1 = {
|
|
|
8231
8596
|
auth: "service",
|
|
8232
8597
|
responseKind: "json"
|
|
8233
8598
|
},
|
|
8599
|
+
...SDK_PAGE_DESIGN_ENDPOINT_DEFINITIONS,
|
|
8234
8600
|
sdkUpsertPageBlock: {
|
|
8235
8601
|
path: "/sdk/{siteId}/pages/{identifier}/blocks",
|
|
8236
8602
|
method: "POST",
|
|
@@ -8353,87 +8719,7 @@ const API_ENDPOINTS$1 = {
|
|
|
8353
8719
|
auth: "service",
|
|
8354
8720
|
responseKind: "json"
|
|
8355
8721
|
},
|
|
8356
|
-
|
|
8357
|
-
path: "/sdk/{siteId}/events",
|
|
8358
|
-
method: "GET",
|
|
8359
|
-
auth: "service",
|
|
8360
|
-
responseKind: "json"
|
|
8361
|
-
},
|
|
8362
|
-
sdkUpsertEvent: {
|
|
8363
|
-
path: "/sdk/{siteId}/events",
|
|
8364
|
-
method: "POST",
|
|
8365
|
-
auth: "service",
|
|
8366
|
-
responseKind: "json"
|
|
8367
|
-
},
|
|
8368
|
-
sdkGetEvent: {
|
|
8369
|
-
path: "/sdk/{siteId}/events/{identifier}",
|
|
8370
|
-
method: "GET",
|
|
8371
|
-
auth: "service",
|
|
8372
|
-
responseKind: "json"
|
|
8373
|
-
},
|
|
8374
|
-
sdkDeleteEvent: {
|
|
8375
|
-
path: "/sdk/{siteId}/events/{identifier}",
|
|
8376
|
-
method: "DELETE",
|
|
8377
|
-
auth: "service",
|
|
8378
|
-
responseKind: "json"
|
|
8379
|
-
},
|
|
8380
|
-
sdkListEventOccurrences: {
|
|
8381
|
-
path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences",
|
|
8382
|
-
method: "GET",
|
|
8383
|
-
auth: "service",
|
|
8384
|
-
responseKind: "json",
|
|
8385
|
-
errors: [
|
|
8386
|
-
"resource:not_found",
|
|
8387
|
-
"validation:invalid_input",
|
|
8388
|
-
"server:internal_error"
|
|
8389
|
-
]
|
|
8390
|
-
},
|
|
8391
|
-
sdkAddEventOccurrence: {
|
|
8392
|
-
path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences",
|
|
8393
|
-
method: "POST",
|
|
8394
|
-
auth: "service",
|
|
8395
|
-
responseKind: "json",
|
|
8396
|
-
errors: [
|
|
8397
|
-
"resource:not_found",
|
|
8398
|
-
"validation:invalid_input",
|
|
8399
|
-
"resource:conflict",
|
|
8400
|
-
"server:internal_error"
|
|
8401
|
-
]
|
|
8402
|
-
},
|
|
8403
|
-
sdkUpdateEventOccurrence: {
|
|
8404
|
-
path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences/{occurrenceId}",
|
|
8405
|
-
method: "PATCH",
|
|
8406
|
-
auth: "service",
|
|
8407
|
-
responseKind: "json",
|
|
8408
|
-
errors: [
|
|
8409
|
-
"resource:not_found",
|
|
8410
|
-
"validation:invalid_input",
|
|
8411
|
-
"resource:conflict",
|
|
8412
|
-
"server:internal_error"
|
|
8413
|
-
]
|
|
8414
|
-
},
|
|
8415
|
-
sdkCancelEventOccurrence: {
|
|
8416
|
-
path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences/{occurrenceId}/cancel",
|
|
8417
|
-
method: "POST",
|
|
8418
|
-
auth: "service",
|
|
8419
|
-
responseKind: "json",
|
|
8420
|
-
errors: [
|
|
8421
|
-
"resource:not_found",
|
|
8422
|
-
"resource:conflict",
|
|
8423
|
-
"server:internal_error"
|
|
8424
|
-
]
|
|
8425
|
-
},
|
|
8426
|
-
sdkDeleteEventOccurrence: {
|
|
8427
|
-
path: "/sdk/{siteId}/events/{identifier}/runs/{runIdentifier}/occurrences/{occurrenceId}",
|
|
8428
|
-
method: "DELETE",
|
|
8429
|
-
auth: "service",
|
|
8430
|
-
responseKind: "json",
|
|
8431
|
-
errors: [
|
|
8432
|
-
"resource:not_found",
|
|
8433
|
-
"resource:conflict",
|
|
8434
|
-
"server:internal_error"
|
|
8435
|
-
]
|
|
8436
|
-
},
|
|
8722
|
+
...SDK_EVENT_ENDPOINT_DEFINITIONS,
|
|
8437
8723
|
sdkUpsertEntry: {
|
|
8438
8724
|
path: "/sdk/{siteId}/entries",
|
|
8439
8725
|
method: "POST",
|
|
@@ -8927,6 +9213,46 @@ const API_ENDPOINTS$1 = {
|
|
|
8927
9213
|
//#region ../surfaces/src/index.ts
|
|
8928
9214
|
const SURFACE_IDS = ["core", "macadamia"];
|
|
8929
9215
|
const DEFAULT_SURFACE_ID = "core";
|
|
9216
|
+
/**
|
|
9217
|
+
* Root hosts for each surface, keyed by deployment tier. The tier-keyed shape
|
|
9218
|
+
* makes it impossible to mis-order entries: callers like
|
|
9219
|
+
* `buildSurfaceAwareDashboardOriginForSurfaceId` look up by tier directly
|
|
9220
|
+
* rather than relying on positional alignment between arrays.
|
|
9221
|
+
*/
|
|
9222
|
+
const SURFACE_ROOT_HOSTS = {
|
|
9223
|
+
core: {
|
|
9224
|
+
local: "localhost",
|
|
9225
|
+
prod: "riverbankcms.com"
|
|
9226
|
+
},
|
|
9227
|
+
macadamia: {
|
|
9228
|
+
local: "macadamia.localhost",
|
|
9229
|
+
prod: "macadamia.studio"
|
|
9230
|
+
}
|
|
9231
|
+
};
|
|
9232
|
+
const SURFACE_SITE_ROOT_HOSTS = {
|
|
9233
|
+
core: {
|
|
9234
|
+
local: "localhost",
|
|
9235
|
+
prod: "riverbanksites.com"
|
|
9236
|
+
},
|
|
9237
|
+
macadamia: {
|
|
9238
|
+
local: "macadamia.localhost",
|
|
9239
|
+
prod: "macadamia.studio"
|
|
9240
|
+
}
|
|
9241
|
+
};
|
|
9242
|
+
const SURFACE_SITE_ROOT_HOST_ALIASES = { core: { prod: ["preview.riverbanksites.com"] } };
|
|
9243
|
+
function surfaceHostTableValues(table) {
|
|
9244
|
+
return Object.values(table).flatMap((byTier) => Object.values(byTier).flat());
|
|
9245
|
+
}
|
|
9246
|
+
function siteSlugLabelUnderRoot(host, siteRootHost) {
|
|
9247
|
+
if (!host.endsWith(`.${siteRootHost}`)) return [];
|
|
9248
|
+
return host.slice(0, host.length - siteRootHost.length - 1).split(".").slice(-1);
|
|
9249
|
+
}
|
|
9250
|
+
function deriveSurfaceOwnedSiteSlugs() {
|
|
9251
|
+
const siteRootHosts = [...surfaceHostTableValues(SURFACE_SITE_ROOT_HOSTS), ...surfaceHostTableValues(SURFACE_SITE_ROOT_HOST_ALIASES)];
|
|
9252
|
+
const labels = [...surfaceHostTableValues(SURFACE_ROOT_HOSTS), ...siteRootHosts].flatMap((host) => siteRootHosts.flatMap((root) => siteSlugLabelUnderRoot(host, root)));
|
|
9253
|
+
return [...new Set(labels)].sort();
|
|
9254
|
+
}
|
|
9255
|
+
deriveSurfaceOwnedSiteSlugs();
|
|
8930
9256
|
[...SURFACE_IDS.filter((surfaceId) => surfaceId !== DEFAULT_SURFACE_ID)];
|
|
8931
9257
|
//#endregion
|
|
8932
9258
|
//#region ../api/src/url.ts
|
|
@@ -9539,7 +9865,7 @@ var SimpleCache = class {
|
|
|
9539
9865
|
* 1. This constant
|
|
9540
9866
|
* 2. The "version" field in package.json
|
|
9541
9867
|
*/
|
|
9542
|
-
const SDK_VERSION = "0.
|
|
9868
|
+
const SDK_VERSION = "0.146.0";
|
|
9543
9869
|
//#endregion
|
|
9544
9870
|
//#region src/client/error.ts
|
|
9545
9871
|
let _Symbol$for;
|
|
@@ -15055,6 +15381,15 @@ function asSiteStyleId(value) {
|
|
|
15055
15381
|
function asDesignSystemTemplateId(value) {
|
|
15056
15382
|
return brandNonEmptyString(value, "DesignSystemTemplateId");
|
|
15057
15383
|
}
|
|
15384
|
+
function toNonEmptyReadonlyArray(values) {
|
|
15385
|
+
const [first, ...rest] = values;
|
|
15386
|
+
return first === void 0 ? null : [first, ...rest];
|
|
15387
|
+
}
|
|
15388
|
+
function requireNonEmptyReadonlyArray(values, message = "Expected a non-empty array.") {
|
|
15389
|
+
const result = toNonEmptyReadonlyArray(values);
|
|
15390
|
+
if (!result) throw new Error(message);
|
|
15391
|
+
return result;
|
|
15392
|
+
}
|
|
15058
15393
|
function makeBoundaryId(previousBlockId, nextBlockId) {
|
|
15059
15394
|
return asDesignBoundaryId(`boundary:${encodeURIComponent(previousBlockId)}:${encodeURIComponent(nextBlockId)}`);
|
|
15060
15395
|
}
|
|
@@ -15257,16 +15592,18 @@ const themeV2RuntimeStyleFieldNames = [
|
|
|
15257
15592
|
"_frameStyles",
|
|
15258
15593
|
"_sectionStyles",
|
|
15259
15594
|
"_containerStyles",
|
|
15260
|
-
"_cardStyles"
|
|
15261
|
-
"_transitionStyles",
|
|
15262
|
-
"styleGroup"
|
|
15595
|
+
"_cardStyles"
|
|
15263
15596
|
];
|
|
15264
15597
|
const themeV2BlockSpecificRawStyleFieldNames = [
|
|
15265
15598
|
"_contentCardStyles",
|
|
15266
15599
|
"_heroLayoutStyles",
|
|
15267
15600
|
"_textCardStyles"
|
|
15268
15601
|
];
|
|
15269
|
-
const themeV2NormalEditorRawStyleFieldNames = [
|
|
15602
|
+
const themeV2NormalEditorRawStyleFieldNames = [
|
|
15603
|
+
...themeV2RuntimeStyleFieldNames,
|
|
15604
|
+
...themeV2BlockSpecificRawStyleFieldNames,
|
|
15605
|
+
"styleGroup"
|
|
15606
|
+
];
|
|
15270
15607
|
new Set(themeV2NormalEditorRawStyleFieldNames);
|
|
15271
15608
|
[...themeV2RuntimeStyleFieldNames, ...themeV2BlockSpecificRawStyleFieldNames];
|
|
15272
15609
|
const pageDesignEditorBackgroundOverrideOwner = "page-design-editor";
|
|
@@ -16547,7 +16884,8 @@ const siteOptionSources = [
|
|
|
16547
16884
|
"eventCategories",
|
|
16548
16885
|
"eventSeries",
|
|
16549
16886
|
"venues",
|
|
16550
|
-
"staffMembers"
|
|
16887
|
+
"staffMembers",
|
|
16888
|
+
"appointmentServiceCategories"
|
|
16551
16889
|
];
|
|
16552
16890
|
const mediaDeliverySchema = z.object({
|
|
16553
16891
|
sizes: z.string().optional(),
|
|
@@ -19922,11 +20260,260 @@ function cardRoleFromLegacyVocabulary(value) {
|
|
|
19922
20260
|
*/
|
|
19923
20261
|
const cardRoleWithLegacyAliasSchema = z.preprocess((value) => cardRoleFromLegacyVocabulary(value) ?? value, cardRoleSchema);
|
|
19924
20262
|
//#endregion
|
|
19925
|
-
//#region ../theme-core/src/site-styles/
|
|
19926
|
-
|
|
19927
|
-
|
|
19928
|
-
|
|
19929
|
-
|
|
20263
|
+
//#region ../theme-core/src/site-styles/transitionCatalogue.ts
|
|
20264
|
+
/**
|
|
20265
|
+
* Family order for pickers. Entries below are listed family by family in this
|
|
20266
|
+
* same order, so the flat option list and the grouped families agree.
|
|
20267
|
+
*/
|
|
20268
|
+
const transitionCatalogueFamilies = [
|
|
20269
|
+
{
|
|
20270
|
+
id: "gradient",
|
|
20271
|
+
label: "Gradient"
|
|
20272
|
+
},
|
|
20273
|
+
{
|
|
20274
|
+
id: "wave",
|
|
20275
|
+
label: "Wave"
|
|
20276
|
+
},
|
|
20277
|
+
{
|
|
20278
|
+
id: "angle",
|
|
20279
|
+
label: "Angle"
|
|
20280
|
+
}
|
|
20281
|
+
];
|
|
20282
|
+
const mediumHeight = "6rem + 2px";
|
|
20283
|
+
const compactHeight = "4.5rem + 2px";
|
|
20284
|
+
const largeHeight = "7rem + 2px";
|
|
20285
|
+
/**
|
|
20286
|
+
* The single source of transition vocabulary. Order is significant: it is the
|
|
20287
|
+
* order of `boundaryOptions` (after `none`) and of each family's variants,
|
|
20288
|
+
* which persisted pins, page-flow presets and the editor picker all rely on.
|
|
20289
|
+
*
|
|
20290
|
+
* Shapes match what `generateLayoutCss` draws today. Structured
|
|
20291
|
+
* amplitude/frequency treatments (issue 826) extend this list later.
|
|
20292
|
+
*/
|
|
20293
|
+
const transitionCatalogueEntries = defineExactCatalog()([
|
|
20294
|
+
{
|
|
20295
|
+
intent: "soft-fade-short",
|
|
20296
|
+
optionId: asBoundaryOptionId("break:soft"),
|
|
20297
|
+
family: "gradient",
|
|
20298
|
+
variantId: "soft",
|
|
20299
|
+
label: "Soft",
|
|
20300
|
+
variantLabel: "Soft",
|
|
20301
|
+
treatment: {
|
|
20302
|
+
kind: "soft-fade",
|
|
20303
|
+
height: "medium",
|
|
20304
|
+
curve: "soft"
|
|
20305
|
+
},
|
|
20306
|
+
size: "medium",
|
|
20307
|
+
heightExpression: mediumHeight,
|
|
20308
|
+
shape: { kind: "fade" }
|
|
20309
|
+
},
|
|
20310
|
+
{
|
|
20311
|
+
intent: "soft-fade-long",
|
|
20312
|
+
optionId: asBoundaryOptionId("break:spacious"),
|
|
20313
|
+
family: "gradient",
|
|
20314
|
+
variantId: "spacious",
|
|
20315
|
+
label: "Spacious",
|
|
20316
|
+
variantLabel: "Spacious",
|
|
20317
|
+
treatment: {
|
|
20318
|
+
kind: "soft-fade",
|
|
20319
|
+
height: "large",
|
|
20320
|
+
curve: "spacious"
|
|
20321
|
+
},
|
|
20322
|
+
size: "spacious",
|
|
20323
|
+
heightExpression: "10rem",
|
|
20324
|
+
shape: { kind: "fade" }
|
|
20325
|
+
},
|
|
20326
|
+
{
|
|
20327
|
+
intent: "soft-fade-expansive",
|
|
20328
|
+
optionId: asBoundaryOptionId("break:expansive"),
|
|
20329
|
+
family: "gradient",
|
|
20330
|
+
variantId: "expansive",
|
|
20331
|
+
label: "Expansive",
|
|
20332
|
+
variantLabel: "Expansive",
|
|
20333
|
+
treatment: {
|
|
20334
|
+
kind: "soft-fade",
|
|
20335
|
+
height: "expansive",
|
|
20336
|
+
curve: "expansive"
|
|
20337
|
+
},
|
|
20338
|
+
size: "expansive",
|
|
20339
|
+
heightExpression: "14rem",
|
|
20340
|
+
shape: { kind: "fade" }
|
|
20341
|
+
},
|
|
20342
|
+
{
|
|
20343
|
+
intent: "wave-edge-balanced",
|
|
20344
|
+
optionId: asBoundaryOptionId("break:wave-balanced"),
|
|
20345
|
+
family: "wave",
|
|
20346
|
+
variantId: "balanced",
|
|
20347
|
+
label: "Balanced wave",
|
|
20348
|
+
variantLabel: "Balanced",
|
|
20349
|
+
treatment: {
|
|
20350
|
+
kind: "wave-edge",
|
|
20351
|
+
height: "medium",
|
|
20352
|
+
amplitude: "balanced",
|
|
20353
|
+
rhythm: "double",
|
|
20354
|
+
symmetry: "symmetrical"
|
|
20355
|
+
},
|
|
20356
|
+
size: "medium",
|
|
20357
|
+
heightExpression: mediumHeight,
|
|
20358
|
+
shape: {
|
|
20359
|
+
kind: "wave",
|
|
20360
|
+
mask: "balanced"
|
|
20361
|
+
}
|
|
20362
|
+
},
|
|
20363
|
+
{
|
|
20364
|
+
intent: "wave-edge",
|
|
20365
|
+
optionId: asBoundaryOptionId("break:wave"),
|
|
20366
|
+
family: "wave",
|
|
20367
|
+
variantId: "classic",
|
|
20368
|
+
label: "Classic wave",
|
|
20369
|
+
variantLabel: "Classic",
|
|
20370
|
+
treatment: {
|
|
20371
|
+
kind: "wave-edge",
|
|
20372
|
+
height: "medium",
|
|
20373
|
+
amplitude: "balanced",
|
|
20374
|
+
rhythm: "double",
|
|
20375
|
+
symmetry: "asymmetrical"
|
|
20376
|
+
},
|
|
20377
|
+
size: "medium",
|
|
20378
|
+
heightExpression: mediumHeight,
|
|
20379
|
+
shape: {
|
|
20380
|
+
kind: "wave",
|
|
20381
|
+
mask: "classic"
|
|
20382
|
+
}
|
|
20383
|
+
},
|
|
20384
|
+
{
|
|
20385
|
+
intent: "wave-edge-gentle",
|
|
20386
|
+
optionId: asBoundaryOptionId("break:wave-gentle"),
|
|
20387
|
+
family: "wave",
|
|
20388
|
+
variantId: "gentle",
|
|
20389
|
+
label: "Gentle wave",
|
|
20390
|
+
variantLabel: "Gentle",
|
|
20391
|
+
treatment: {
|
|
20392
|
+
kind: "wave-edge",
|
|
20393
|
+
height: "compact",
|
|
20394
|
+
amplitude: "subtle",
|
|
20395
|
+
rhythm: "single",
|
|
20396
|
+
symmetry: "symmetrical"
|
|
20397
|
+
},
|
|
20398
|
+
size: "compact",
|
|
20399
|
+
heightExpression: compactHeight,
|
|
20400
|
+
shape: {
|
|
20401
|
+
kind: "wave",
|
|
20402
|
+
mask: "gentle"
|
|
20403
|
+
}
|
|
20404
|
+
},
|
|
20405
|
+
{
|
|
20406
|
+
intent: "wave-edge-bold",
|
|
20407
|
+
optionId: asBoundaryOptionId("break:wave-bold"),
|
|
20408
|
+
family: "wave",
|
|
20409
|
+
variantId: "bold",
|
|
20410
|
+
label: "Bold wave",
|
|
20411
|
+
variantLabel: "Bold",
|
|
20412
|
+
treatment: {
|
|
20413
|
+
kind: "wave-edge",
|
|
20414
|
+
height: "large",
|
|
20415
|
+
amplitude: "bold",
|
|
20416
|
+
rhythm: "double",
|
|
20417
|
+
symmetry: "symmetrical"
|
|
20418
|
+
},
|
|
20419
|
+
size: "large",
|
|
20420
|
+
heightExpression: largeHeight,
|
|
20421
|
+
shape: {
|
|
20422
|
+
kind: "wave",
|
|
20423
|
+
mask: "bold"
|
|
20424
|
+
}
|
|
20425
|
+
},
|
|
20426
|
+
{
|
|
20427
|
+
intent: "wave-edge-drift",
|
|
20428
|
+
optionId: asBoundaryOptionId("break:wave-drift"),
|
|
20429
|
+
family: "wave",
|
|
20430
|
+
variantId: "drift",
|
|
20431
|
+
label: "Drift wave",
|
|
20432
|
+
variantLabel: "Drift",
|
|
20433
|
+
treatment: {
|
|
20434
|
+
kind: "wave-edge",
|
|
20435
|
+
height: "medium",
|
|
20436
|
+
amplitude: "balanced",
|
|
20437
|
+
rhythm: "double",
|
|
20438
|
+
symmetry: "drift"
|
|
20439
|
+
},
|
|
20440
|
+
size: "medium",
|
|
20441
|
+
heightExpression: mediumHeight,
|
|
20442
|
+
shape: {
|
|
20443
|
+
kind: "wave",
|
|
20444
|
+
mask: "drift"
|
|
20445
|
+
}
|
|
20446
|
+
},
|
|
20447
|
+
{
|
|
20448
|
+
intent: "angle-edge-subtle",
|
|
20449
|
+
optionId: asBoundaryOptionId("break:angle-subtle"),
|
|
20450
|
+
family: "angle",
|
|
20451
|
+
variantId: "subtle",
|
|
20452
|
+
label: "Subtle angle",
|
|
20453
|
+
variantLabel: "Subtle",
|
|
20454
|
+
treatment: {
|
|
20455
|
+
kind: "angle-edge",
|
|
20456
|
+
height: "compact",
|
|
20457
|
+
slope: "subtle",
|
|
20458
|
+
direction: "forward"
|
|
20459
|
+
},
|
|
20460
|
+
size: "compact",
|
|
20461
|
+
heightExpression: compactHeight,
|
|
20462
|
+
shape: {
|
|
20463
|
+
kind: "angle",
|
|
20464
|
+
polygon: {
|
|
20465
|
+
startTopPercent: 34,
|
|
20466
|
+
endTopPercent: 18
|
|
20467
|
+
}
|
|
20468
|
+
}
|
|
20469
|
+
},
|
|
20470
|
+
{
|
|
20471
|
+
intent: "angle-edge",
|
|
20472
|
+
optionId: asBoundaryOptionId("break:angle-balanced"),
|
|
20473
|
+
family: "angle",
|
|
20474
|
+
variantId: "balanced",
|
|
20475
|
+
label: "Balanced angle",
|
|
20476
|
+
variantLabel: "Balanced",
|
|
20477
|
+
treatment: {
|
|
20478
|
+
kind: "angle-edge",
|
|
20479
|
+
height: "medium",
|
|
20480
|
+
slope: "balanced",
|
|
20481
|
+
direction: "forward"
|
|
20482
|
+
},
|
|
20483
|
+
size: "medium",
|
|
20484
|
+
heightExpression: mediumHeight,
|
|
20485
|
+
shape: {
|
|
20486
|
+
kind: "angle",
|
|
20487
|
+
polygon: {
|
|
20488
|
+
startTopPercent: 42,
|
|
20489
|
+
endTopPercent: 8
|
|
20490
|
+
}
|
|
20491
|
+
}
|
|
20492
|
+
},
|
|
20493
|
+
{
|
|
20494
|
+
intent: "angle-edge-steep",
|
|
20495
|
+
optionId: asBoundaryOptionId("break:angle-steep"),
|
|
20496
|
+
family: "angle",
|
|
20497
|
+
variantId: "steep",
|
|
20498
|
+
label: "Steep angle",
|
|
20499
|
+
variantLabel: "Steep",
|
|
20500
|
+
treatment: {
|
|
20501
|
+
kind: "angle-edge",
|
|
20502
|
+
height: "large",
|
|
20503
|
+
slope: "steep",
|
|
20504
|
+
direction: "forward"
|
|
20505
|
+
},
|
|
20506
|
+
size: "large",
|
|
20507
|
+
heightExpression: largeHeight,
|
|
20508
|
+
shape: {
|
|
20509
|
+
kind: "angle",
|
|
20510
|
+
polygon: {
|
|
20511
|
+
startTopPercent: 54,
|
|
20512
|
+
endTopPercent: 0
|
|
20513
|
+
}
|
|
20514
|
+
}
|
|
20515
|
+
}
|
|
20516
|
+
]);
|
|
19930
20517
|
//#endregion
|
|
19931
20518
|
//#region ../theme-core/src/site-styles/sectionTransitions.ts
|
|
19932
20519
|
function boundaryRuntimeMetrics(family, size, heightExpression) {
|
|
@@ -19937,42 +20524,106 @@ function boundaryRuntimeMetrics(family, size, heightExpression) {
|
|
|
19937
20524
|
reserveCss: `calc((${heightExpression}) / 2)`
|
|
19938
20525
|
};
|
|
19939
20526
|
}
|
|
19940
|
-
|
|
20527
|
+
new Map(transitionCatalogueEntries.map((entry) => [entry.intent, entry]));
|
|
20528
|
+
new Map(transitionCatalogueEntries.map((entry) => [entry.intent, boundaryRuntimeMetrics(entry.family, entry.size, entry.heightExpression)]));
|
|
20529
|
+
/**
|
|
20530
|
+
* The catalogue's compile-time coverage check guarantees an entry per
|
|
20531
|
+
* decorative intent, so a miss here is a broken invariant, not bad input.
|
|
20532
|
+
*/
|
|
20533
|
+
function requireCatalogueValue(values, intent) {
|
|
20534
|
+
const value = values.get(intent);
|
|
20535
|
+
if (value === void 0) throw new Error(`Transition catalogue has no entry for ${intent}`);
|
|
20536
|
+
return value;
|
|
20537
|
+
}
|
|
19941
20538
|
const noneBoundaryOption = {
|
|
19942
20539
|
id: asBoundaryOptionId("break:none"),
|
|
19943
20540
|
label: "None",
|
|
19944
20541
|
transitionAfter: "none",
|
|
19945
20542
|
treatment: { kind: "none" }
|
|
19946
20543
|
};
|
|
19947
|
-
const
|
|
19948
|
-
id:
|
|
19949
|
-
label:
|
|
19950
|
-
transitionAfter:
|
|
19951
|
-
treatment:
|
|
19952
|
-
|
|
19953
|
-
|
|
19954
|
-
|
|
19955
|
-
|
|
20544
|
+
const boundaryOptionByIntent = new Map(transitionCatalogueEntries.map((entry) => [entry.intent, {
|
|
20545
|
+
id: entry.optionId,
|
|
20546
|
+
label: entry.label,
|
|
20547
|
+
transitionAfter: entry.intent,
|
|
20548
|
+
treatment: entry.treatment
|
|
20549
|
+
}]));
|
|
20550
|
+
function boundaryOptionForTransitionIntent(intent) {
|
|
20551
|
+
return requireCatalogueValue(boundaryOptionByIntent, intent);
|
|
20552
|
+
}
|
|
20553
|
+
const softBoundaryOption = boundaryOptionForTransitionIntent("soft-fade-short");
|
|
20554
|
+
const spaciousBoundaryOption = boundaryOptionForTransitionIntent("soft-fade-long");
|
|
20555
|
+
boundaryOptionForTransitionIntent("soft-fade-expansive");
|
|
20556
|
+
boundaryOptionForTransitionIntent("wave-edge");
|
|
20557
|
+
boundaryOptionForTransitionIntent("wave-edge-balanced");
|
|
20558
|
+
boundaryOptionForTransitionIntent("wave-edge-gentle");
|
|
20559
|
+
boundaryOptionForTransitionIntent("wave-edge-bold");
|
|
20560
|
+
boundaryOptionForTransitionIntent("wave-edge-drift");
|
|
20561
|
+
boundaryOptionForTransitionIntent("angle-edge-subtle");
|
|
20562
|
+
boundaryOptionForTransitionIntent("angle-edge");
|
|
20563
|
+
boundaryOptionForTransitionIntent("angle-edge-steep");
|
|
20564
|
+
/**
|
|
20565
|
+
* Must remain non-empty; downstream code indexes `[0]` as the documented default.
|
|
20566
|
+
*/
|
|
20567
|
+
const boundaryOptions = [noneBoundaryOption, ...transitionCatalogueEntries.map((entry) => boundaryOptionForTransitionIntent(entry.intent))];
|
|
20568
|
+
const noneTransitionVariant = {
|
|
20569
|
+
familyId: "none",
|
|
20570
|
+
variantId: "none",
|
|
20571
|
+
label: "None",
|
|
20572
|
+
boundaryOption: noneBoundaryOption
|
|
19956
20573
|
};
|
|
19957
|
-
|
|
19958
|
-
|
|
19959
|
-
|
|
19960
|
-
|
|
19961
|
-
|
|
19962
|
-
|
|
19963
|
-
|
|
19964
|
-
|
|
19965
|
-
|
|
20574
|
+
function transitionVariantForEntry(entry) {
|
|
20575
|
+
return {
|
|
20576
|
+
familyId: entry.family,
|
|
20577
|
+
variantId: entry.variantId,
|
|
20578
|
+
label: entry.variantLabel,
|
|
20579
|
+
boundaryOption: boundaryOptionForTransitionIntent(entry.intent)
|
|
20580
|
+
};
|
|
20581
|
+
}
|
|
20582
|
+
const sectionTransitionFamilies = [{
|
|
20583
|
+
id: "none",
|
|
20584
|
+
label: "None",
|
|
20585
|
+
variants: [noneTransitionVariant]
|
|
20586
|
+
}, ...transitionCatalogueFamilies.map((family) => ({
|
|
20587
|
+
id: family.id,
|
|
20588
|
+
label: family.label,
|
|
20589
|
+
variants: requireNonEmptyReadonlyArray(transitionCatalogueEntries.filter((entry) => entry.family === family.id).map(transitionVariantForEntry), `Transition family ${family.id} has no catalogue entries.`)
|
|
20590
|
+
}))];
|
|
20591
|
+
new Map(boundaryOptions.map((option) => [option.id, option]));
|
|
20592
|
+
new Map(boundaryOptions.map((option) => [stableTreatmentKey(option.treatment), option]));
|
|
20593
|
+
new Map(sectionTransitionFamilies.flatMap((family) => family.variants.map((variant) => [variant.boundaryOption.id, variant])));
|
|
20594
|
+
new Map(sectionTransitionFamilies.map((family) => [family.id, family]));
|
|
20595
|
+
function stableTreatmentKey(treatment) {
|
|
20596
|
+
switch (treatment.kind) {
|
|
20597
|
+
case "none": return "none";
|
|
20598
|
+
case "soft-fade": return `${treatment.kind}:${treatment.height}:${treatment.curve}`;
|
|
20599
|
+
case "wave-edge": return [
|
|
20600
|
+
treatment.kind,
|
|
20601
|
+
treatment.height,
|
|
20602
|
+
treatment.amplitude,
|
|
20603
|
+
treatment.rhythm,
|
|
20604
|
+
treatment.symmetry
|
|
20605
|
+
].join(":");
|
|
20606
|
+
case "angle-edge": return [
|
|
20607
|
+
treatment.kind,
|
|
20608
|
+
treatment.height,
|
|
20609
|
+
treatment.slope,
|
|
20610
|
+
treatment.direction
|
|
20611
|
+
].join(":");
|
|
20612
|
+
case "legacy-unsupported": return `${treatment.kind}:${treatment.boundaryOptionId}`;
|
|
20613
|
+
}
|
|
20614
|
+
}
|
|
20615
|
+
requireThemeColorToken$1("background");
|
|
20616
|
+
function requireThemeColorToken$1(value) {
|
|
20617
|
+
const token = parseThemeColorToken(value);
|
|
20618
|
+
if (!token) throw new Error(`Expected a theme color token. Received: ${value}`);
|
|
20619
|
+
return token;
|
|
20620
|
+
}
|
|
20621
|
+
//#endregion
|
|
20622
|
+
//#region ../theme-core/src/site-styles/compilationPlan.ts
|
|
20623
|
+
const defaultHeaderBrandPreferences = {
|
|
20624
|
+
brandDisplay: "auto",
|
|
20625
|
+
logoSize: "auto"
|
|
19966
20626
|
};
|
|
19967
|
-
asBoundaryOptionId("break:expansive");
|
|
19968
|
-
asBoundaryOptionId("break:wave");
|
|
19969
|
-
asBoundaryOptionId("break:wave-balanced");
|
|
19970
|
-
asBoundaryOptionId("break:wave-gentle");
|
|
19971
|
-
asBoundaryOptionId("break:wave-bold");
|
|
19972
|
-
asBoundaryOptionId("break:wave-drift");
|
|
19973
|
-
asBoundaryOptionId("break:angle-subtle");
|
|
19974
|
-
asBoundaryOptionId("break:angle-balanced");
|
|
19975
|
-
asBoundaryOptionId("break:angle-steep");
|
|
19976
20627
|
asBoundaryOptionId("break:unknown");
|
|
19977
20628
|
const pageDesignUserPinnedAppearanceChoiceSchema = z.object({
|
|
19978
20629
|
kind: z.literal("user-pinned"),
|
|
@@ -20099,14 +20750,11 @@ function validateUniquePageDesignPins(intent, ctx) {
|
|
|
20099
20750
|
label: "block Look pin"
|
|
20100
20751
|
});
|
|
20101
20752
|
addDuplicateStringIssues(ctx, {
|
|
20102
|
-
values: intent.boundaryPins.map((pin) =>
|
|
20753
|
+
values: intent.boundaryPins.map((pin) => makeBoundaryId(pin.previousBlockId, pin.nextBlockId)),
|
|
20103
20754
|
path: ["boundaryPins"],
|
|
20104
20755
|
label: "boundary pin"
|
|
20105
20756
|
});
|
|
20106
20757
|
}
|
|
20107
|
-
function boundaryKey(previousBlockId, nextBlockId) {
|
|
20108
|
-
return makeBoundaryId(previousBlockId, nextBlockId);
|
|
20109
|
-
}
|
|
20110
20758
|
//#endregion
|
|
20111
20759
|
//#region ../theme-core/src/site-styles/styleTags.ts
|
|
20112
20760
|
/**
|
|
@@ -23062,6 +23710,13 @@ z.object({
|
|
|
23062
23710
|
fields: nonEmptyRuntimeStyleFieldNamesSchema,
|
|
23063
23711
|
authority: styleAuthoritySchema
|
|
23064
23712
|
}).strict();
|
|
23713
|
+
asPageFlowPresetId("flow:quiet"), noneBoundaryOption.id, asPageFlowPresetId("flow:balanced"), softBoundaryOption.id, asPageFlowPresetId("flow:expressive"), spaciousBoundaryOption.id;
|
|
23714
|
+
asPageFlowPresetId("generated-default");
|
|
23715
|
+
asSiteStyleId("site-style:south-west-twerk-school");
|
|
23716
|
+
asAppearancePresetId("hero-brand-scrim-fixed-frame");
|
|
23717
|
+
asLayoutVariantKey("classic");
|
|
23718
|
+
asLayoutVariantKey("micro");
|
|
23719
|
+
asBoundaryOptionId("break:wave");
|
|
23065
23720
|
//#endregion
|
|
23066
23721
|
//#region ../theme-core/src/site-styles/runtimeCompiler.ts
|
|
23067
23722
|
function defineSectionForegroundRuntimeTokens(input) {
|
|
@@ -23085,7 +23740,7 @@ function defineComponentRuntimeRules(rules) {
|
|
|
23085
23740
|
}
|
|
23086
23741
|
/**
|
|
23087
23742
|
* Default design rules translate semantic page-level choices into the current
|
|
23088
|
-
* runtime's section background
|
|
23743
|
+
* runtime's section background vocabulary.
|
|
23089
23744
|
*/
|
|
23090
23745
|
const defaultDesignRuntimeRules = defineDesignRuntimeRules({
|
|
23091
23746
|
sectionSurfaces: {
|
|
@@ -23120,8 +23775,7 @@ const defaultDesignRuntimeRules = defineDesignRuntimeRules({
|
|
|
23120
23775
|
color: "surface",
|
|
23121
23776
|
opacity: .88
|
|
23122
23777
|
}
|
|
23123
|
-
}
|
|
23124
|
-
transitionClassName: (transition, fromSurface, toSurface) => transition === "none" ? null : `site-style-transition-${transition}-from-${fromSurface}-to-${toSurface}`
|
|
23778
|
+
}
|
|
23125
23779
|
});
|
|
23126
23780
|
/**
|
|
23127
23781
|
* Default component rules translate frame and item-surface semantics into the
|
|
@@ -24856,19 +25510,11 @@ const curatedSiteStyles = [
|
|
|
24856
25510
|
})
|
|
24857
25511
|
];
|
|
24858
25512
|
new Map(curatedSiteStyles.map((style) => [style.id, style]));
|
|
24859
|
-
asPageFlowPresetId("generated-default");
|
|
24860
|
-
asSiteStyleId("site-style:south-west-twerk-school");
|
|
24861
|
-
asAppearancePresetId("hero-brand-scrim-fixed-frame");
|
|
24862
|
-
asLayoutVariantKey("classic");
|
|
24863
|
-
asLayoutVariantKey("micro");
|
|
24864
|
-
asBoundaryOptionId("break:wave");
|
|
24865
|
-
asPageFlowPresetId("flow:quiet"), noneBoundaryOption.id, asPageFlowPresetId("flow:balanced"), softBoundaryOption.id, asPageFlowPresetId("flow:expressive"), spaciousBoundaryOption.id;
|
|
24866
25513
|
//#endregion
|
|
24867
25514
|
//#region ../theme-core/src/site-styles/resolver.ts
|
|
24868
25515
|
const blockDesignFallback = {
|
|
24869
25516
|
sectionSurface: "base",
|
|
24870
25517
|
contentFrame: plainFrame,
|
|
24871
|
-
transitionAfter: "none",
|
|
24872
25518
|
sectionHeight: "default",
|
|
24873
25519
|
heroLegibility: "none",
|
|
24874
25520
|
imageSurfaceTreatment: { kind: "none" },
|
|
@@ -24879,7 +25525,7 @@ const blockDesignFallback = {
|
|
|
24879
25525
|
accordionIconTreatment: null,
|
|
24880
25526
|
composition: null
|
|
24881
25527
|
};
|
|
24882
|
-
blockDesignFallback.sectionSurface, blockDesignFallback.contentFrame, blockDesignFallback.
|
|
25528
|
+
blockDesignFallback.sectionSurface, blockDesignFallback.contentFrame, blockDesignFallback.sectionHeight, blockDesignFallback.heroLegibility, blockDesignFallback.imageSurfaceTreatment, blockDesignFallback.imageSurfaceMotion, blockDesignFallback.tileTreatment, blockDesignFallback.eventListTreatment, blockDesignFallback.eyebrowTreatment, blockDesignFallback.accordionIconTreatment, blockDesignFallback.composition;
|
|
24883
25529
|
//#endregion
|
|
24884
25530
|
//#region ../theme-core/src/site-styles/siteChromeBackgrounds.ts
|
|
24885
25531
|
const siteChromeBackgroundColorTokens = toSiteChromeBackgroundColorTokens(backgroundAppearanceColorTokenNames);
|
|
@@ -33824,13 +34470,13 @@ const hours = stack({
|
|
|
33824
34470
|
as: "p",
|
|
33825
34471
|
className: "rb-caption rb-opacity-70"
|
|
33826
34472
|
}, bind("module.timeZone"), when("module.timeZone"))], when("module.kind", { equals: "opening-hours" }));
|
|
33827
|
-
const socials = inline({ className: "rb-
|
|
34473
|
+
const socials = inline({ className: "rb-footer-socials" }, [link({
|
|
33828
34474
|
href: { $bind: { from: "social.href" } },
|
|
33829
34475
|
target: "_blank",
|
|
33830
34476
|
rel: "noreferrer noopener",
|
|
33831
34477
|
"aria-label": { $bind: { from: "social.label" } },
|
|
33832
|
-
className: "rb-nav-text transition-theme-standard"
|
|
33833
|
-
}, [icon({ className: "rb-
|
|
34478
|
+
className: "rb-footer-social-link rb-nav-text transition-theme-standard"
|
|
34479
|
+
}, [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" }));
|
|
33834
34480
|
const authoredCopy = richText({
|
|
33835
34481
|
className: "rb-prose rb-prose-sm rb-max-w-none",
|
|
33836
34482
|
style: textColorStyle("text/80")
|
|
@@ -35471,6 +36117,15 @@ const appointmentServicesBlockDefinition = {
|
|
|
35471
36117
|
required: false,
|
|
35472
36118
|
ui: { intent: "content" }
|
|
35473
36119
|
},
|
|
36120
|
+
createSiteOptionSelectField({
|
|
36121
|
+
id: "categoryId",
|
|
36122
|
+
label: "Category",
|
|
36123
|
+
description: "Show one category (with its heading and intro), or leave it on All categories to show everything grouped.",
|
|
36124
|
+
required: false,
|
|
36125
|
+
multiple: false,
|
|
36126
|
+
optionSource: "appointmentServiceCategories",
|
|
36127
|
+
ui: { intent: "content" }
|
|
36128
|
+
}),
|
|
35474
36129
|
sectionStylesField({
|
|
35475
36130
|
id: "_sectionStyles",
|
|
35476
36131
|
label: "Section styles",
|
|
@@ -35505,6 +36160,7 @@ const appointmentServicesBlockDefinition = {
|
|
|
35505
36160
|
richText({ className: "rb-prose rb-max-w-none" }, bind("content.description"), when("content.description")),
|
|
35506
36161
|
el("appointment-services", {
|
|
35507
36162
|
sectionHeading: { $bind: { from: "content.heading" } },
|
|
36163
|
+
categoryId: { $bind: { from: "content.categoryId" } },
|
|
35508
36164
|
services: { $bind: { from: "data.services" } },
|
|
35509
36165
|
pathname: { $bind: { from: "$root.pathname" } },
|
|
35510
36166
|
servicePathPrefix: { $bind: { from: "$root.appointmentServicePathPrefix" } }
|
|
@@ -35828,6 +36484,7 @@ const publicEventLoaderQuerySchemaShape = {
|
|
|
35828
36484
|
seriesSlug: z.string().optional(),
|
|
35829
36485
|
includeOccurrenceId: z.string().optional(),
|
|
35830
36486
|
readIntent: z.string().optional(),
|
|
36487
|
+
detailAdmission: z.string().optional(),
|
|
35831
36488
|
detailLevel: z.string().optional(),
|
|
35832
36489
|
readProfile: z.string().optional()
|
|
35833
36490
|
};
|
|
@@ -35994,11 +36651,11 @@ const publicEventBookingAvailabilitySchema = z.discriminatedUnion("kind", [z.obj
|
|
|
35994
36651
|
"series_archived",
|
|
35995
36652
|
"parent_archived",
|
|
35996
36653
|
"parent_inconsistent",
|
|
35997
|
-
"not_public",
|
|
35998
36654
|
"already_started",
|
|
35999
36655
|
"enrollment_closed"
|
|
36000
36656
|
])
|
|
36001
36657
|
})]);
|
|
36658
|
+
const publicEventBookingClosedDetailSchema = z.discriminatedUnion("kind", [z.object({ kind: z.literal("opensSoon") }), z.object({ kind: z.literal("paused") })]);
|
|
36002
36659
|
const publicRunSessionSchema = z.object({
|
|
36003
36660
|
occurrenceId: z.string(),
|
|
36004
36661
|
startsAt: z.string(),
|
|
@@ -36043,6 +36700,7 @@ const publicEventBaseSchema = z.object({
|
|
|
36043
36700
|
destination: publicEventDestinationSchema,
|
|
36044
36701
|
requiresRegistration: z.boolean(),
|
|
36045
36702
|
bookingAvailability: publicEventBookingAvailabilitySchema,
|
|
36703
|
+
bookingClosedDetail: publicEventBookingClosedDetailSchema.optional(),
|
|
36046
36704
|
deliveryMode: z.enum([
|
|
36047
36705
|
"in_person",
|
|
36048
36706
|
"online",
|
|
@@ -43930,6 +44588,11 @@ const mailingListContentVersionIdSchema = z.string().transform((value, ctx) => {
|
|
|
43930
44588
|
});
|
|
43931
44589
|
return z.NEVER;
|
|
43932
44590
|
});
|
|
44591
|
+
const mailingListSignupBlockSourceRefSchema = z.object({
|
|
44592
|
+
tag: z.literal("block_ref"),
|
|
44593
|
+
blockId: mailingListSignupBlockIdSchema,
|
|
44594
|
+
contentVersionId: mailingListContentVersionIdSchema
|
|
44595
|
+
});
|
|
43933
44596
|
const signedMailingListSourceTokenSchema = z.string().trim().min(1).transform(parseRequiredMailingListSignedSourceToken);
|
|
43934
44597
|
const newsletterSourceCommonSchema = z.object({
|
|
43935
44598
|
siteId: z.string().optional(),
|
|
@@ -43944,7 +44607,15 @@ const newsletterSourceSchema = z.discriminatedUnion("source", [
|
|
|
43944
44607
|
newsletterSourceCommonSchema.extend({
|
|
43945
44608
|
source: z.literal("block"),
|
|
43946
44609
|
blockId: z.string().nullable().optional(),
|
|
43947
|
-
|
|
44610
|
+
newsletterBlockSubmission: z.discriminatedUnion("tag", [
|
|
44611
|
+
z.object({
|
|
44612
|
+
tag: z.literal("ready"),
|
|
44613
|
+
sourceRef: mailingListSignupBlockSourceRefSchema
|
|
44614
|
+
}),
|
|
44615
|
+
z.object({ tag: z.literal("unpublished-form") }),
|
|
44616
|
+
z.object({ tag: z.literal("unpublished-settings") }),
|
|
44617
|
+
z.object({ tag: z.literal("unavailable") })
|
|
44618
|
+
])
|
|
43948
44619
|
}),
|
|
43949
44620
|
newsletterSourceCommonSchema.extend({
|
|
43950
44621
|
source: z.literal("signed-footer"),
|
|
@@ -43973,11 +44644,7 @@ const newsletterHydrationSchema = z.object({
|
|
|
43973
44644
|
target: z.discriminatedUnion("tag", [
|
|
43974
44645
|
z.object({
|
|
43975
44646
|
tag: z.literal("block-source"),
|
|
43976
|
-
sourceRef:
|
|
43977
|
-
tag: z.literal("block_ref"),
|
|
43978
|
-
blockId: mailingListSignupBlockIdSchema,
|
|
43979
|
-
contentVersionId: mailingListContentVersionIdSchema
|
|
43980
|
-
}).nullable()
|
|
44647
|
+
sourceRef: mailingListSignupBlockSourceRefSchema.nullable()
|
|
43981
44648
|
}),
|
|
43982
44649
|
z.object({
|
|
43983
44650
|
tag: z.literal("signed-footer-source"),
|
|
@@ -43986,7 +44653,11 @@ const newsletterHydrationSchema = z.object({
|
|
|
43986
44653
|
token: signedMailingListSourceTokenSchema
|
|
43987
44654
|
})
|
|
43988
44655
|
}),
|
|
43989
|
-
z.object({ tag: z.literal("preview") })
|
|
44656
|
+
z.object({ tag: z.literal("preview") }),
|
|
44657
|
+
z.object({
|
|
44658
|
+
tag: z.literal("unpublished-preview"),
|
|
44659
|
+
reason: z.enum(["unpublished-form", "unpublished-settings"])
|
|
44660
|
+
})
|
|
43990
44661
|
]),
|
|
43991
44662
|
setupRevision: z.number().int().positive().nullable(),
|
|
43992
44663
|
choiceProvider: z.enum([
|
|
@@ -44055,16 +44726,21 @@ const newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
|
|
|
44055
44726
|
});
|
|
44056
44727
|
function projectNewsletterFormHydrationTarget(source) {
|
|
44057
44728
|
switch (source.source) {
|
|
44058
|
-
case "block": {
|
|
44059
|
-
|
|
44060
|
-
|
|
44729
|
+
case "block": switch (source.newsletterBlockSubmission.tag) {
|
|
44730
|
+
case "unpublished-form":
|
|
44731
|
+
case "unpublished-settings": return {
|
|
44732
|
+
tag: "unpublished-preview",
|
|
44733
|
+
reason: source.newsletterBlockSubmission.tag
|
|
44734
|
+
};
|
|
44735
|
+
case "ready": return {
|
|
44061
44736
|
tag: "block-source",
|
|
44062
|
-
sourceRef
|
|
44737
|
+
sourceRef: source.newsletterBlockSubmission.sourceRef
|
|
44063
44738
|
};
|
|
44064
|
-
return {
|
|
44739
|
+
case "unavailable": return {
|
|
44065
44740
|
tag: "block-source",
|
|
44066
44741
|
sourceRef: null
|
|
44067
44742
|
};
|
|
44743
|
+
default: return assertNever$6(source.newsletterBlockSubmission);
|
|
44068
44744
|
}
|
|
44069
44745
|
case "signed-footer": return {
|
|
44070
44746
|
tag: "signed-footer-source",
|
|
@@ -46575,6 +47251,17 @@ function coerceToString(value) {
|
|
|
46575
47251
|
return "";
|
|
46576
47252
|
}
|
|
46577
47253
|
/**
|
|
47254
|
+
* The appointment-services catalogue (issue 1403) pairs the services with the
|
|
47255
|
+
* site's ordered categories. Both are needed to group them, so that response
|
|
47256
|
+
* is passed through whole; any other `{ services }` wrapper is unwrapped.
|
|
47257
|
+
*/
|
|
47258
|
+
function coerceServicesPayload(record) {
|
|
47259
|
+
return Array.isArray(record.services) && Array.isArray(record.categories) ? {
|
|
47260
|
+
services: record.services,
|
|
47261
|
+
categories: record.categories
|
|
47262
|
+
} : record.services;
|
|
47263
|
+
}
|
|
47264
|
+
/**
|
|
46578
47265
|
* Extract data from API response.
|
|
46579
47266
|
* Unwraps common response wrappers: { data }, { form }, { entries }, { services }, { teamMembers }
|
|
46580
47267
|
*
|
|
@@ -46589,7 +47276,7 @@ function coercePayload(payload) {
|
|
|
46589
47276
|
if ("data" in record && typeof record.data !== "function") return record.data;
|
|
46590
47277
|
if ("form" in record && typeof record.form !== "function") return record.form;
|
|
46591
47278
|
if ("entries" in record && typeof record.entries !== "function") return record.entries;
|
|
46592
|
-
if ("services" in record && typeof record.services !== "function") return record
|
|
47279
|
+
if ("services" in record && typeof record.services !== "function") return coerceServicesPayload(record);
|
|
46593
47280
|
if ("teamMembers" in record && typeof record.teamMembers !== "function") return record.teamMembers;
|
|
46594
47281
|
}
|
|
46595
47282
|
return payload;
|
|
@@ -48123,7 +48810,7 @@ function createRiverbankClientWithDeps(deps, config) {
|
|
|
48123
48810
|
const result = await reader({
|
|
48124
48811
|
cacheKey: plan.cacheKey,
|
|
48125
48812
|
endpoint: plan.endpoint,
|
|
48126
|
-
payloadSchemaVersion:
|
|
48813
|
+
payloadSchemaVersion: 2
|
|
48127
48814
|
});
|
|
48128
48815
|
if (result.kind === "miss") return {
|
|
48129
48816
|
kind: "miss",
|
|
@@ -48172,7 +48859,7 @@ function createRiverbankClientWithDeps(deps, config) {
|
|
|
48172
48859
|
siteId: plan.siteId ?? getRuntimePayloadSiteId(payload),
|
|
48173
48860
|
freshTtlSec: plan.freshTtlSec,
|
|
48174
48861
|
staleTtlSec: plan.staleTtlSec,
|
|
48175
|
-
payloadSchemaVersion:
|
|
48862
|
+
payloadSchemaVersion: 2,
|
|
48176
48863
|
writeReason: "live_success"
|
|
48177
48864
|
});
|
|
48178
48865
|
} catch {}
|
|
@@ -49238,6 +49925,17 @@ const navigationLinkInputSchemaOptions = [
|
|
|
49238
49925
|
];
|
|
49239
49926
|
z.discriminatedUnion("kind", navigationLinkInputSchemaOptions);
|
|
49240
49927
|
//#endregion
|
|
49928
|
+
//#region ../blocks/src/pageRenderAdmission.ts
|
|
49929
|
+
/** Pair a published version with the content it authorises at the render boundary. */
|
|
49930
|
+
function readPublishedBlockPlacement(id, content) {
|
|
49931
|
+
if (id == null && content == null) return null;
|
|
49932
|
+
if (id == null || content == null) throw new Error("Published block placement requires both an ID and content");
|
|
49933
|
+
return {
|
|
49934
|
+
id,
|
|
49935
|
+
content
|
|
49936
|
+
};
|
|
49937
|
+
}
|
|
49938
|
+
//#endregion
|
|
49241
49939
|
//#region ../api/src/sdkConfig/contracts.ts
|
|
49242
49940
|
/**
|
|
49243
49941
|
* Canonical SDK config Zod contracts.
|
|
@@ -49927,7 +50625,12 @@ const appointmentSetupServiceDraftSchema = z.object({
|
|
|
49927
50625
|
venue: appointmentSetupVenueChoiceSchema,
|
|
49928
50626
|
timezone: z.string().trim().min(1).nullable(),
|
|
49929
50627
|
payment: appointmentSetupPaymentDraftSchema,
|
|
49930
|
-
assignment: appointmentSetupServiceAssignmentDraftSchema
|
|
50628
|
+
assignment: appointmentSetupServiceAssignmentDraftSchema,
|
|
50629
|
+
/**
|
|
50630
|
+
* The service's category, or null for "Other" (issue 1403). Omitted leaves
|
|
50631
|
+
* an existing service's category alone and puts a new one in "Other".
|
|
50632
|
+
*/
|
|
50633
|
+
categoryId: z.string().uuid().nullable().optional()
|
|
49931
50634
|
}).superRefine((service, ctx) => {
|
|
49932
50635
|
if (service.payment.kind !== "free" && (service.priceAmount === null || service.priceAmount <= 0)) ctx.addIssue({
|
|
49933
50636
|
code: "custom",
|
|
@@ -50141,6 +50844,7 @@ function collectText(node) {
|
|
|
50141
50844
|
if (node.type === "text") return node.text ?? "";
|
|
50142
50845
|
return (node.content ?? []).map(collectText).join("");
|
|
50143
50846
|
}
|
|
50847
|
+
z.enum(["public", "unlisted"], { error: "visibility must be 'public' or 'unlisted'" });
|
|
50144
50848
|
//#endregion
|
|
50145
50849
|
//#region ../api/src/bookingPaymentTermSchemas.ts
|
|
50146
50850
|
const bookingDepositRefundPolicySchema = z.enum(["refundable", "non_refundable"]);
|
|
@@ -50689,21 +51393,39 @@ function buildSiteRenderSupport(site, mediaAssets) {
|
|
|
50689
51393
|
function collectMediaAssetSidecar(mediaAssets) {
|
|
50690
51394
|
return Array.isArray(mediaAssets) && mediaAssets.length > 0 ? mediaAssets : void 0;
|
|
50691
51395
|
}
|
|
50692
|
-
function
|
|
51396
|
+
function readBlockContentId(value, name) {
|
|
51397
|
+
if (value === null || value === void 0) return null;
|
|
51398
|
+
if (typeof value === "string") return value;
|
|
51399
|
+
throw new Error(`Invalid ${name} in page: expected string or null`);
|
|
51400
|
+
}
|
|
51401
|
+
function readTransportedBlockIdentity(block, kind, stage) {
|
|
51402
|
+
return {
|
|
51403
|
+
draftContentId: readBlockContentId(block.draftContentId, "draft content id"),
|
|
51404
|
+
publishedPlacement: stage === "preview" ? readPublishedBlockPlacement(readBlockContentId(block.publishedContentId, "published content id"), sanitizeNullableSdkRuntimeBlockContent(kind, readNestedContentRecord(block.publishedContent))) : null
|
|
51405
|
+
};
|
|
51406
|
+
}
|
|
51407
|
+
function convertPageResponseBlock(block, stage) {
|
|
50693
51408
|
if (!isRecord$1(block)) throw new Error("Invalid block format in page API response");
|
|
51409
|
+
const header = readTransportedBlockHeader(block);
|
|
51410
|
+
const admission = readInvalidBlockAdmission(block.admission);
|
|
51411
|
+
return {
|
|
51412
|
+
...header,
|
|
51413
|
+
...readTransportedBlockIdentity(block, header.kind, stage),
|
|
51414
|
+
content: sanitizeSdkRuntimeBlockContent(header.kind, readContentRecord(block.content) ?? {}),
|
|
51415
|
+
draftContent: sanitizeNullableSdkRuntimeBlockContent(header.kind, readNestedContentRecord(block.draftContent)),
|
|
51416
|
+
...admission ? { admission } : {}
|
|
51417
|
+
};
|
|
51418
|
+
}
|
|
51419
|
+
function readTransportedBlockHeader(block) {
|
|
50694
51420
|
if (typeof block.id !== "string" && block.id !== null) throw new Error(`Invalid block id in page: expected string or null, got ${typeof block.id}`);
|
|
50695
51421
|
if (typeof block.kind !== "string") throw new Error(`Invalid block kind in page: expected string, got ${typeof block.kind}`);
|
|
50696
51422
|
if (typeof block.purpose !== "string") throw new Error(`Invalid block purpose in page: expected string, got ${typeof block.purpose}`);
|
|
50697
51423
|
if (block.contentVersionId !== void 0 && block.contentVersionId !== null && typeof block.contentVersionId !== "string") throw new Error(`Invalid content version id in page: expected string or null, got ${typeof block.contentVersionId}`);
|
|
50698
|
-
const admission = readInvalidBlockAdmission(block.admission);
|
|
50699
51424
|
return {
|
|
50700
51425
|
id: block.id,
|
|
50701
51426
|
...block.contentVersionId !== void 0 ? { contentVersionId: block.contentVersionId } : {},
|
|
50702
51427
|
kind: block.kind,
|
|
50703
|
-
purpose: block.purpose
|
|
50704
|
-
content: sanitizeSdkRuntimeBlockContent(block.kind, readContentRecord(block.content) ?? {}),
|
|
50705
|
-
draftContent: sanitizeNullableSdkRuntimeBlockContent(block.kind, readNestedContentRecord(block.draftContent)),
|
|
50706
|
-
...admission ? { admission } : {}
|
|
51428
|
+
purpose: block.purpose
|
|
50707
51429
|
};
|
|
50708
51430
|
}
|
|
50709
51431
|
function readInvalidBlockAdmission(value) {
|
|
@@ -50716,7 +51438,7 @@ function buildPageOutline(input) {
|
|
|
50716
51438
|
name: input.name,
|
|
50717
51439
|
path: input.path ?? input.fallbackPath,
|
|
50718
51440
|
purpose: input.purpose,
|
|
50719
|
-
blocks: input.blocks.map(convertPageResponseBlock)
|
|
51441
|
+
blocks: input.blocks.map((block) => convertPageResponseBlock(block, input.previewStage))
|
|
50720
51442
|
};
|
|
50721
51443
|
}
|
|
50722
51444
|
function buildRenderablePageOutline(input) {
|
|
@@ -50742,6 +51464,8 @@ function projectRenderablePageOutline(page) {
|
|
|
50742
51464
|
function admitSdkRuntimePageBlock(block, customBlocks) {
|
|
50743
51465
|
const base = {
|
|
50744
51466
|
id: block.id,
|
|
51467
|
+
draftContentId: block.draftContentId,
|
|
51468
|
+
publishedPlacement: block.publishedPlacement,
|
|
50745
51469
|
...block.contentVersionId !== void 0 ? { contentVersionId: block.contentVersionId } : {},
|
|
50746
51470
|
kind: block.kind,
|
|
50747
51471
|
purpose: block.purpose,
|
|
@@ -50889,23 +51613,23 @@ async function loadPageWithDeps(deps, params) {
|
|
|
50889
51613
|
if ("pageSurface" in pageResponse) throw new Error("This path resolves to a page surface, not a page. Use loadContent() instead, which handles pages, entries, and page surfaces.");
|
|
50890
51614
|
const { page: pageData } = pageResponse;
|
|
50891
51615
|
const support = buildSiteRenderSupport(site, collectMediaAssetSidecar(pageResponse.mediaAssets));
|
|
51616
|
+
const previewStage = preview ? "preview" : "published";
|
|
50892
51617
|
const pageOutline = buildRenderablePageOutline({
|
|
50893
51618
|
name: pageData.name,
|
|
50894
51619
|
path: pageData.path,
|
|
50895
51620
|
fallbackPath: path,
|
|
50896
51621
|
purpose: pageData.purpose,
|
|
50897
51622
|
blocks: pageData.blocks,
|
|
51623
|
+
previewStage,
|
|
50898
51624
|
customBlocks: support.customBlocks
|
|
50899
51625
|
});
|
|
50900
|
-
const previewStage = preview ? "preview" : "published";
|
|
50901
|
-
const renderTarget = {
|
|
50902
|
-
kind: "page",
|
|
50903
|
-
pageId: pageId ?? pageData.id
|
|
50904
|
-
};
|
|
50905
51626
|
const resolvedData = await resolveBlockDataWithDeps(deps, {
|
|
50906
51627
|
page: projectRenderablePageOutline(pageOutline),
|
|
50907
51628
|
siteId,
|
|
50908
|
-
renderTarget
|
|
51629
|
+
renderTarget: {
|
|
51630
|
+
kind: "page",
|
|
51631
|
+
pageId: pageId ?? pageData.id
|
|
51632
|
+
},
|
|
50909
51633
|
previewStage,
|
|
50910
51634
|
policy: createBlockDataLoadPolicy(dataLoaderOverrides, normalizeDataLoaderSearchParams(searchParams)),
|
|
50911
51635
|
client,
|
|
@@ -50913,11 +51637,12 @@ async function loadPageWithDeps(deps, params) {
|
|
|
50913
51637
|
});
|
|
50914
51638
|
return {
|
|
50915
51639
|
page: pageOutline,
|
|
50916
|
-
|
|
51640
|
+
runtimeJoins: pageData.runtimeJoins,
|
|
50917
51641
|
theme: requireSdkTheme(support.theme, siteId),
|
|
50918
51642
|
sdkConfig: support.sdkConfig,
|
|
50919
51643
|
siteId,
|
|
50920
51644
|
resolvedData,
|
|
51645
|
+
dataContext: { previewStage },
|
|
50921
51646
|
bookingOfferingPresets: support.bookingOfferingPresets,
|
|
50922
51647
|
mailingList: support.mailingList,
|
|
50923
51648
|
bookingTimeZone: support.bookingTimeZone,
|
|
@@ -51311,7 +52036,8 @@ async function processTemplatePage(input) {
|
|
|
51311
52036
|
block,
|
|
51312
52037
|
bindingContext: input.bindingContext,
|
|
51313
52038
|
slotContent: input.slotContent,
|
|
51314
|
-
customBlocks: input.customBlocks
|
|
52039
|
+
customBlocks: input.customBlocks,
|
|
52040
|
+
previewStage: input.previewStage
|
|
51315
52041
|
}));
|
|
51316
52042
|
if (blocks.length === 0) return {
|
|
51317
52043
|
templatePage: null,
|
|
@@ -51342,7 +52068,7 @@ function resolveTemplateBlockSequence(input) {
|
|
|
51342
52068
|
if (slotKey) return selectBlocksForDeclaredEntrySlot({
|
|
51343
52069
|
declaredSlotKey: slotKey,
|
|
51344
52070
|
entrySlots: input.slotContent ?? []
|
|
51345
|
-
}).map((slotBlock) => admitEntrySlotBlock(slotBlock, input.customBlocks));
|
|
52071
|
+
}).map((slotBlock) => admitEntrySlotBlock(slotBlock, input.customBlocks, input.previewStage));
|
|
51346
52072
|
if (block.blockKind === "system.entry-slot") return [];
|
|
51347
52073
|
return [resolveTemplateBlock(block, input.bindingContext, input.customBlocks)];
|
|
51348
52074
|
}
|
|
@@ -51376,10 +52102,11 @@ function readEntrySlotKey(block) {
|
|
|
51376
52102
|
const parsed = parseSlotKey(block.content?.slotKey);
|
|
51377
52103
|
return parsed.ok ? parsed.value : null;
|
|
51378
52104
|
}
|
|
51379
|
-
function admitEntrySlotBlock(block, customBlocks) {
|
|
52105
|
+
function admitEntrySlotBlock(block, customBlocks, previewStage) {
|
|
51380
52106
|
const base = {
|
|
51381
52107
|
id: block.id ?? block.blockId ?? null,
|
|
51382
52108
|
contentVersionId: block.contentVersionId,
|
|
52109
|
+
...entrySlotBlockIdentity(block, previewStage),
|
|
51383
52110
|
kind: block.kind,
|
|
51384
52111
|
purpose: block.purpose,
|
|
51385
52112
|
...isRecord(block.bindings) ? { bindings: block.bindings } : {}
|
|
@@ -51400,6 +52127,12 @@ function admitEntrySlotBlock(block, customBlocks) {
|
|
|
51400
52127
|
error: renderable.error
|
|
51401
52128
|
});
|
|
51402
52129
|
}
|
|
52130
|
+
function entrySlotBlockIdentity(block, previewStage) {
|
|
52131
|
+
return {
|
|
52132
|
+
draftContentId: block.draftContentId ?? null,
|
|
52133
|
+
publishedPlacement: previewStage === "preview" ? readPublishedBlockPlacement(block.publishedContentId, isRecord(block.publishedContent) && isRecord(block.publishedContent.data) ? block.publishedContent.data : null) : null
|
|
52134
|
+
};
|
|
52135
|
+
}
|
|
51403
52136
|
//#endregion
|
|
51404
52137
|
//#region src/rendering/helpers/loadContent.ts
|
|
51405
52138
|
/**
|
|
@@ -51571,15 +52304,18 @@ async function loadContentFromContentResponseWithDeps(deps, params) {
|
|
|
51571
52304
|
entry,
|
|
51572
52305
|
templatePage,
|
|
51573
52306
|
resolvedData,
|
|
51574
|
-
dataContext: {
|
|
51575
|
-
|
|
51576
|
-
|
|
51577
|
-
|
|
51578
|
-
|
|
51579
|
-
|
|
51580
|
-
|
|
51581
|
-
|
|
51582
|
-
|
|
52307
|
+
dataContext: {
|
|
52308
|
+
previewStage,
|
|
52309
|
+
contentEntry: {
|
|
52310
|
+
...entry.content ?? {},
|
|
52311
|
+
id: entry.id,
|
|
52312
|
+
slug: entry.slug,
|
|
52313
|
+
contentTypeSlug: entry.type,
|
|
52314
|
+
_entryId: entry.id,
|
|
52315
|
+
_entrySlug: entry.slug,
|
|
52316
|
+
_contentTypeSlug: entry.type
|
|
52317
|
+
}
|
|
52318
|
+
},
|
|
51583
52319
|
...templateContentSupport
|
|
51584
52320
|
};
|
|
51585
52321
|
}
|
|
@@ -51640,6 +52376,7 @@ async function loadContentFromContentResponseWithDeps(deps, params) {
|
|
|
51640
52376
|
templatePage,
|
|
51641
52377
|
resolvedData,
|
|
51642
52378
|
dataContext: {
|
|
52379
|
+
previewStage,
|
|
51643
52380
|
pageSurface: {
|
|
51644
52381
|
...pageSurface.content ?? {},
|
|
51645
52382
|
id: pageSurface.id,
|
|
@@ -51656,13 +52393,13 @@ async function loadContentFromContentResponseWithDeps(deps, params) {
|
|
|
51656
52393
|
const { page: pageData } = contentResponse;
|
|
51657
52394
|
const pageRecord = pageData;
|
|
51658
52395
|
const canonicalPagePath = pageData.path ?? pageRecord.path ?? "/";
|
|
51659
|
-
const draftPagePath = pageRecord.draftPath ?? pageRecord.path ?? canonicalPagePath;
|
|
51660
52396
|
const pageOutline = buildRenderablePageOutline({
|
|
51661
52397
|
name: pageData.name,
|
|
51662
52398
|
path: canonicalPagePath,
|
|
51663
52399
|
fallbackPath: "/",
|
|
51664
52400
|
purpose: pageData.purpose,
|
|
51665
52401
|
blocks: pageData.blocks,
|
|
52402
|
+
previewStage,
|
|
51666
52403
|
customBlocks: support.customBlocks
|
|
51667
52404
|
});
|
|
51668
52405
|
const resolvedData = await resolveBlockDataWithDeps(deps, {
|
|
@@ -51681,26 +52418,14 @@ async function loadContentFromContentResponseWithDeps(deps, params) {
|
|
|
51681
52418
|
type: "page",
|
|
51682
52419
|
pageId: pageRecord.id,
|
|
51683
52420
|
routeId: pageRecord.routeId ?? null,
|
|
51684
|
-
pageMetadata:
|
|
51685
|
-
draftTitle: pageRecord.draftTitle ?? pageRecord.name ?? pageData.name,
|
|
51686
|
-
draftPath: draftPagePath,
|
|
51687
|
-
draftStatus: pageRecord.draftStatus ?? pageRecord.status ?? "draft",
|
|
51688
|
-
title: pageRecord.name ?? pageData.name,
|
|
51689
|
-
path: canonicalPagePath,
|
|
51690
|
-
status: pageRecord.status ?? pageRecord.draftStatus ?? "draft",
|
|
51691
|
-
publishedAt: pageRecord.publishedAt ?? null,
|
|
51692
|
-
draftMetaTitle: pageRecord.draftMetaTitle ?? null,
|
|
51693
|
-
draftMetaDescription: pageRecord.draftMetaDescription ?? null,
|
|
51694
|
-
publishedMetaTitle: pageRecord.publishedMetaTitle ?? null,
|
|
51695
|
-
publishedMetaDescription: pageRecord.publishedMetaDescription ?? null,
|
|
51696
|
-
ogImageId: pageRecord.ogImageId ?? null
|
|
51697
|
-
},
|
|
52421
|
+
pageMetadata: projectPagePreviewMetadata(pageRecord, pageData.name, canonicalPagePath),
|
|
51698
52422
|
page: pageOutline,
|
|
51699
|
-
|
|
52423
|
+
runtimeJoins: pageData.runtimeJoins,
|
|
51700
52424
|
theme: support.theme,
|
|
51701
52425
|
siteId,
|
|
51702
52426
|
...support.customBlocks ? { customBlocks: support.customBlocks } : {},
|
|
51703
52427
|
resolvedData,
|
|
52428
|
+
dataContext: { previewStage },
|
|
51704
52429
|
bookingOfferingPresets: support.bookingOfferingPresets,
|
|
51705
52430
|
mailingList: support.mailingList,
|
|
51706
52431
|
bookingTimeZone: support.bookingTimeZone,
|
|
@@ -51713,6 +52438,32 @@ async function loadContentFromContentResponseWithDeps(deps, params) {
|
|
|
51713
52438
|
...support.mediaAssets ? { mediaAssets: support.mediaAssets } : {}
|
|
51714
52439
|
};
|
|
51715
52440
|
}
|
|
52441
|
+
function projectPagePreviewMetadata(page, pageName, canonicalPath) {
|
|
52442
|
+
return {
|
|
52443
|
+
...projectDraftPageMetadata(page, pageName, canonicalPath),
|
|
52444
|
+
...projectPublishedPageMetadata(page, pageName, canonicalPath)
|
|
52445
|
+
};
|
|
52446
|
+
}
|
|
52447
|
+
function projectDraftPageMetadata(page, pageName, canonicalPath) {
|
|
52448
|
+
return {
|
|
52449
|
+
draftTitle: page.draftTitle ?? page.name ?? pageName,
|
|
52450
|
+
draftPath: page.draftPath ?? page.path ?? canonicalPath,
|
|
52451
|
+
draftStatus: page.draftStatus ?? page.status ?? "draft",
|
|
52452
|
+
draftMetaTitle: page.draftMetaTitle ?? null,
|
|
52453
|
+
draftMetaDescription: page.draftMetaDescription ?? null
|
|
52454
|
+
};
|
|
52455
|
+
}
|
|
52456
|
+
function projectPublishedPageMetadata(page, pageName, canonicalPath) {
|
|
52457
|
+
return {
|
|
52458
|
+
title: page.name ?? pageName,
|
|
52459
|
+
path: canonicalPath,
|
|
52460
|
+
status: page.status ?? page.draftStatus ?? "draft",
|
|
52461
|
+
publishedAt: page.publishedAt ?? null,
|
|
52462
|
+
publishedMetaTitle: page.publishedMetaTitle ?? null,
|
|
52463
|
+
publishedMetaDescription: page.publishedMetaDescription ?? null,
|
|
52464
|
+
ogImageId: page.ogImageId ?? null
|
|
52465
|
+
};
|
|
52466
|
+
}
|
|
51716
52467
|
/**
|
|
51717
52468
|
* Type guard to check if API response is an entry
|
|
51718
52469
|
*/
|