@riverbankcms/sdk 0.148.0 → 0.150.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/EventEmbeddedCheckoutStep-D00Kc8Zj.mjs +285 -0
- package/dist/{PreviewEditorSidebar-DvEPG3Z2.mjs → PreviewEditorSidebar-7ZhmmnBB.mjs} +103 -66
- package/dist/{PreviewEditorUI-D6eb6fkx.mjs → PreviewEditorUI-BIJucTRd.mjs} +3 -6
- package/dist/{PreviewQueryProvider-5znTyJuz.mjs → PreviewQueryProvider-C0mndwHB.mjs} +3 -3
- package/dist/{SdkPreviewModeRuntime-DJ6utQ_R.mjs → SdkPreviewModeRuntime-tj45gmCX.mjs} +96 -67
- package/dist/{SiteChromeCustomizeContext-CFJYh6vo.mjs → SiteChromeCustomizeContext-BFOt0ss-.mjs} +4804 -4161
- package/dist/_dts/ai/src/contracts/proposals.d.ts +660 -0
- package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +510 -0
- package/dist/_dts/api/src/billing.d.ts +2 -2
- package/dist/_dts/api/src/bookingConfig.d.ts +33 -48
- package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +2 -6
- package/dist/_dts/api/src/bookingOperations.d.ts +5 -7
- package/dist/_dts/api/src/bookingRecords.d.ts +15 -11
- package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +5 -5
- package/dist/_dts/api/src/clientErrorReporting.d.ts +11 -0
- package/dist/_dts/api/src/commercePortalEndpoints.d.ts +0 -2
- package/dist/_dts/api/src/common/cancellation.d.ts +23 -0
- package/dist/_dts/api/src/contentRuntime.d.ts +5 -1
- package/dist/_dts/api/src/customerMembershipOutcomes.d.ts +1 -1
- package/dist/_dts/api/src/endpoints.d.ts +2 -10
- package/dist/_dts/api/src/eventManagementContracts.d.ts +4 -7
- package/dist/_dts/api/src/footerCompositionContracts.d.ts +9 -0
- package/dist/_dts/api/src/footerSettings.d.ts +3 -3
- package/dist/_dts/api/src/index.d.ts +4 -4
- package/dist/_dts/api/src/navigation/bookingPortalLink.d.ts +13 -0
- package/dist/_dts/api/src/navigation.d.ts +1 -0
- package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +2 -2
- package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +2 -29
- package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +9 -173
- package/dist/_dts/api/src/request.d.ts +1 -1
- package/dist/_dts/api/src/sdk-event-upsert.d.ts +1 -1
- package/dist/_dts/api/src/sdkPullEventContracts.d.ts +1 -1
- package/dist/_dts/api/src/sdkThemeWire.d.ts +12 -0
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -3
- package/dist/_dts/api/src/siteOperations.d.ts +6 -2
- package/dist/_dts/api/src/siteSettings.d.ts +2 -0
- package/dist/_dts/blocks/src/client/site-chrome.d.ts +1 -1
- package/dist/_dts/blocks/src/client.d.ts +2 -1
- package/dist/_dts/blocks/src/contracts/index.d.ts +1 -1
- package/dist/_dts/blocks/src/contracts/non-block-islands.d.ts +2 -2
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +38 -10
- package/dist/_dts/blocks/src/portal/types.d.ts +9 -6
- package/dist/_dts/blocks/src/rendering/server.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +24 -24
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/shared/bookingPaymentTerms.d.ts +84 -160
- package/dist/_dts/blocks/src/system/blocks/shop.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/shop.shared.d.ts +31 -4
- package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +30 -3
- package/dist/_dts/blocks/src/system/designCapabilities.d.ts +10 -1
- package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/api/types/core.d.ts +3 -1
- package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +38 -18
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +48 -6
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +24 -3
- package/dist/_dts/blocks/src/system/runtime/hooks/useBookingNowIso.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.server.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/commerce/shared/display.d.ts +9 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-details/presentation.d.ts +14 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventEmbeddedCheckoutStep.d.ts +13 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationPayment.d.ts +15 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizardActions.d.ts +0 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/FullyBookedStep.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PaymentBlockingPanel.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PaymentSelectionStep.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +15 -5
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.planning.d.ts +4 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventPaymentOptions.d.ts +3 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/paymentLocation.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/paymentResponse.d.ts +72 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationCompletion.d.ts +66 -5
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationErrorRecovery.d.ts +1 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationStateMachine.d.ts +13 -5
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/sessionStorage.d.ts +11 -52
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +19 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +7 -42
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +7 -8
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +94 -24
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useGuestRegistrationRecovery.d.ts +30 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/usePaymentStatusRecovery.d.ts +24 -12
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useRegistrationAdmission.d.ts +18 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/wizardSteps.d.ts +6 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +24 -24
- package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +41 -6
- package/dist/_dts/blocks/src/system/runtime/shared/bookingPaymentOptions.d.ts +7 -2
- package/dist/_dts/blocks/src/system/runtime/shared/stripe/browserStripe.d.ts +8 -0
- package/dist/_dts/blocks/src/system/transforms/registry/eventCalendar.d.ts +8 -0
- package/dist/_dts/commerce/src/purchase/bookingPaymentSelection.d.ts +54 -0
- package/dist/_dts/commerce/src/purchase/checkoutCommitPlan.d.ts +58 -13
- package/dist/_dts/commerce/src/purchase/checkoutCopy.d.ts +10 -0
- package/dist/_dts/commerce/src/purchase/checkoutErrorCodes.d.ts +1 -1
- package/dist/_dts/commerce/src/purchase/checkoutPaymentPlanPlanning.d.ts +16 -21
- package/dist/_dts/commerce/src/purchase/checkoutPaymentTerms.d.ts +23 -40
- package/dist/_dts/commerce/src/purchase/checkoutPresentation.d.ts +49 -0
- package/dist/_dts/commerce/src/purchase/checkoutSessionMetadata.d.ts +6 -6
- package/dist/_dts/commerce/src/purchase/checkoutStripeFinalizationPlanning.d.ts +5 -1
- package/dist/_dts/commerce/src/purchase/checkoutStripeSessionPlanning.d.ts +5 -4
- package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +9 -0
- package/dist/_dts/commerce/src/purchase/index.d.ts +3 -3
- package/dist/_dts/commerce/src/purchase/membershipOrderItemMetadata.d.ts +4 -0
- package/dist/_dts/commerce/src/purchase/oneTimeCheckoutPlanning.d.ts +9 -4
- package/dist/_dts/commerce/src/purchase/orderInstalmentClosure.d.ts +13 -1
- package/dist/_dts/commerce/src/purchase/orderInstalmentLifecycle.d.ts +5 -0
- package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +4 -1
- package/dist/_dts/commerce/src/purchase/orderTypes.d.ts +7 -1
- package/dist/_dts/commerce/src/purchase/refundRailSplit.d.ts +1 -1
- package/dist/_dts/commerce/src/purchase/stateTransitions.d.ts +2 -2
- package/dist/_dts/commerce/src/purchase/stripeCheckoutReturnUrl.d.ts +9 -2
- package/dist/_dts/commerce/src/purchase/stripeMinimumCharge.d.ts +6 -0
- package/dist/_dts/commerce/src/purchase/types.d.ts +7 -7
- package/dist/_dts/content-editor/src/FooterComposerOverview.d.ts +3 -2
- package/dist/_dts/content-editor/src/controller/editLeaseHandover.d.ts +30 -0
- package/dist/_dts/content-editor/src/footerPreviewRuntime.d.ts +6 -1
- package/dist/_dts/content-editor/src/lib/browserStorage.d.ts +5 -0
- package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +7 -0
- package/dist/_dts/core/src/booking-flexible-balance.d.ts +2 -2
- package/dist/_dts/core/src/booking-instalment-deposit.d.ts +20 -0
- package/dist/_dts/core/src/booking-live-payment-terms.d.ts +72 -0
- package/dist/_dts/core/src/booking-payment-options.d.ts +24 -0
- package/dist/_dts/core/src/booking-payment-schemas.d.ts +522 -0
- package/dist/_dts/core/src/branded.d.ts +3 -0
- package/dist/_dts/core/src/edit-lease.d.ts +5 -0
- package/dist/_dts/core/src/index.d.ts +4 -0
- package/dist/_dts/core/src/patch/index.d.ts +30 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +326 -36
- package/dist/_dts/media-editor/src/MediaPickerDialog.d.ts +3 -1
- package/dist/_dts/media-editor/src/MediaPickerMiniDialog.d.ts +10 -0
- package/dist/_dts/media-editor/src/index.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +0 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +1 -1
- package/dist/_dts/preview-next/src/client/previewAuthStore.d.ts +7 -0
- package/dist/_dts/preview-next/src/constants.d.ts +4 -0
- package/dist/_dts/preview-next/src/keepAlive.d.ts +1 -0
- package/dist/_dts/sdk/src/bookings/index.d.ts +2 -1
- package/dist/_dts/sdk/src/bookings/types.d.ts +1 -1
- package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -12
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/blocks/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/blocks/opaquePanels.d.ts +147 -0
- package/dist/_dts/theme-core/src/boxBackgroundSchema.d.ts +22 -0
- package/dist/_dts/theme-core/src/buttons/buttonSurfaceContext.d.ts +22 -0
- package/dist/_dts/theme-core/src/cards/roles.d.ts +12 -0
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +198 -0
- package/dist/_dts/theme-core/src/palette/utils/index.d.ts +2 -0
- package/dist/_dts/theme-core/src/palette/utils/scrimContrast.d.ts +22 -0
- package/dist/_dts/theme-core/src/runtime/bridgeColourTokens.d.ts +10 -0
- package/dist/_dts/theme-core/src/schema.d.ts +330 -0
- package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +0 -51
- package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +0 -51
- package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +11 -0
- package/dist/_dts/theme-core/src/site-styles/pageDesignEditorCapabilities.d.ts +7 -1
- package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +7 -1
- package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +0 -5
- package/dist/_dts/theme-core/src/site-styles/previewRuntimeCapabilities.d.ts +12 -6
- package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +7 -4
- package/dist/_dts/theme-core/src/site-styles/sectionSurfaceBackgrounds.d.ts +65 -0
- package/dist/_dts/theme-core/src/site-styles/types.d.ts +17 -0
- package/dist/_dts/theme-core/src/surfaces/opaqueSurface.d.ts +43 -0
- package/dist/_dts/ui/src/color-picker.d.ts +1 -1
- package/dist/_dts/ui/src/palette/useHexDraft.d.ts +7 -0
- package/dist/client/{BookingMailingListNote-CzRt2dF_.mjs → BookingMailingListNote-CYHOufsI.mjs} +33 -124
- package/dist/client/{CheckboxChoice-B33MqoUo.mjs → CheckboxChoice-M-3HycLw.mjs} +1 -1
- package/dist/client/{DemoBookingPortalAccess-mxqwap3f.mjs → DemoBookingPortalAccess-Cvr9O_ca.mjs} +2 -2
- package/dist/client/{EventCombined.client-CDb11igO.mjs → EventCombined.client-m5UZIobP.mjs} +7 -7
- package/dist/client/EventEmbeddedCheckoutStep-DL6zFAkA.mjs +289 -0
- package/dist/client/{EventListing.client-EgYhzKPa.mjs → EventListing.client-DeMfCM04.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-gtmtaA2b.mjs → LeafletStaticMap-CvZ3gOdD.mjs} +1 -1
- package/dist/client/{checkoutUrls-CXhko2Rv.mjs → RichText-BtfNvQV6.mjs} +2 -29
- package/dist/client/{TerminalPanel-DvNUP5ot.mjs → TerminalPanel-CUCNEwlH.mjs} +2 -18
- package/dist/client/{ThemedButton-C7CeUJjW.mjs → ThemedButton-C7WhXuRl.mjs} +2 -2
- package/dist/client/{accordion-kjvt49rA.mjs → accordion-cQm5mjqs.mjs} +1 -1
- package/dist/client/{bookingForm-pbRZordh.mjs → bookingForm-BVPJE5RQ.mjs} +15 -11
- package/dist/client/bookings.mjs +2860 -1222
- package/dist/client/{carousel-f4Zbmicv.mjs → carousel-3vgnY7LC.mjs} +2 -2
- package/dist/client/{carousel.client-A2lG-9od.mjs → carousel.client-CISsdZvg.mjs} +1 -1
- package/dist/client/{cart-DO20An50.mjs → cart-BGK4oOjm.mjs} +3 -3
- package/dist/client/{checkout-Du5amDR_.mjs → checkout-GsBLUNJD.mjs} +3 -3
- package/dist/client/checkoutUrls-ChxwaNtO.mjs +28 -0
- package/dist/client/client.mjs +3324 -2053
- package/dist/client/{colorStyles-j5U9v5JA.mjs → colorStyles-D-32xHZh.mjs} +2 -30
- package/dist/client/{context-eW97E945.mjs → context-D_8s12Fp.mjs} +1 -1
- package/dist/client/{dates-jPCirRea.mjs → dates-DeJQbQ9T.mjs} +2 -2
- package/dist/client/{eventCalendar-C2M-iE4j.mjs → eventCalendar-cmucD4NR.mjs} +10 -10
- package/dist/client/{eventCombined-W6ns3LHg.mjs → eventCombined-ku3E9FTl.mjs} +4 -4
- package/dist/client/{eventDetails-CR-GT0f0.mjs → eventDetails-CyKZ61sF.mjs} +5 -5
- package/dist/client/{eventListing-BK8AfYZz.mjs → eventListing-B7yxGIhX.mjs} +4 -4
- package/dist/client/{eventRegistration-BJSd4KUu.mjs → eventRegistration-BoXfSFgZ.mjs} +1455 -1184
- package/dist/client/{form-BvpfbQaT.mjs → form-CNQOWhJo.mjs} +5 -5
- package/dist/client/{headerSection-I5sUQ8x-.mjs → headerSection-DahaBJGQ.mjs} +3 -3
- package/dist/client/hooks.mjs +283 -193
- package/dist/client/{locationMap-BLvwf9_f.mjs → locationMap-BoDjqYlW.mjs} +4 -4
- package/dist/client/{media-Cl38iOMI.mjs → media-BFY0y2rb.mjs} +2 -1
- package/dist/client/{newsletterForm-DrQ2weE8.mjs → newsletterForm-DtzXDklw.mjs} +4 -4
- package/dist/client/{pricing-BES87mrR.mjs → pricing-DXEh2Lhh.mjs} +1 -1
- package/dist/client/{productDetail-Url9jcc5.mjs → productDetail-D7cPa-00.mjs} +3 -3
- package/dist/client/{productList-DE7ngEZJ.mjs → productList-D1XMap66.mjs} +3 -3
- package/dist/client/{propsDecoder-D1OtGXDV.mjs → propsDecoder-DiIeBopB.mjs} +913 -322
- package/dist/client/rendering/client.mjs +3913 -2260
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +3302 -2013
- package/dist/client/result-DRW7JWXz.mjs +30 -0
- package/dist/client/{routeIslandApiConfig-BG9Y-SHg.mjs → routeIslandApiConfig-wzR4lKAY.mjs} +1 -1
- package/dist/client/scrollToBlock-C86BYkyV.mjs +17 -0
- package/dist/client/{shop-CJkuySJ3.mjs → shop-CYT5P-S5.mjs} +13 -14
- package/dist/client/{shop-commerce-store-Bxm75Pg6.mjs → shop-commerce-store-wKhsJQxI.mjs} +1 -1
- package/dist/client/{shop-commerce-4rKj5n9h.mjs → shop-commerce-ypBu_dx4.mjs} +9 -9
- package/dist/client/{shopShared-DpoQDWfz.mjs → shopShared-DFGhYrf2.mjs} +52 -6
- package/dist/client/{useEventFilters-D8HliSqR.mjs → useEventFilters-blSbN5o7.mjs} +8 -8
- package/dist/preview-next/before-render.mjs +15 -22
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/constants.mjs +5 -1
- package/dist/preview-next/index.mjs +5 -1
- package/dist/preview-next/keepAlive.mjs +149 -82
- package/dist/preview-next/middleware.mjs +15 -22
- package/dist/{previewAuthStore-BXXF3hhW.mjs → previewAuthStore-BBmV7UsW.mjs} +49 -29
- package/dist/{sdk-runtime-C2a05WjL.mjs → sdk-runtime-2p8uQk1V.mjs} +2 -2
- package/dist/{separator-CuNhBAhS.mjs → separator-Cvvzk0Oo.mjs} +1 -1
- package/dist/server/components.mjs +4041 -3704
- package/dist/server/config-validation.mjs +345 -255
- package/dist/server/config.mjs +345 -255
- package/dist/server/data.mjs +283 -193
- package/dist/server/index.mjs +20 -27
- package/dist/server/next.mjs +788 -469
- package/dist/server/page-converter.mjs +245 -121
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +4018 -3690
- package/dist/server/rendering.mjs +4044 -3707
- package/dist/server/routing.mjs +314 -190
- package/dist/server/server.mjs +290 -218
- package/dist/server/theme-bridge.mjs +1122 -310
- package/dist/server/theme.mjs +126 -116
- package/dist/spinner-CDo6AkDz.mjs +658 -0
- package/dist/styles/index.css +75 -212
- package/package.json +1 -1
- package/dist/_dts/api/src/bookingPaymentTermSchemas.d.ts +0 -123
- package/dist/_dts/billing/src/checkout/platform.d.ts +0 -77
- package/dist/_dts/billing/src/config/env.d.ts +0 -29
- package/dist/_dts/billing/src/stripe/client.d.ts +0 -29
- package/dist/_dts/blocks/src/system/runtime/hooks/usePaymentVerification.d.ts +0 -63
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventCheckoutHandoffRestore.d.ts +0 -9
- package/dist/_dts/commerce/src/purchase/checkoutPaymentTermPlanning.d.ts +0 -10
- package/dist/_dts/commerce/src/purchase/checkoutValidatedItemPlanning.d.ts +0 -55
- package/dist/_dts/commerce/src/purchase/orderInstalmentPayoff.d.ts +0 -24
- package/dist/client/urlParams-D71VXFGx.mjs +0 -47
package/dist/server/config.mjs
CHANGED
|
@@ -2029,6 +2029,16 @@ function isRecord$12(value) {
|
|
|
2029
2029
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
2030
2030
|
}
|
|
2031
2031
|
//#endregion
|
|
2032
|
+
//#region ../core/src/booking-payment-options.ts
|
|
2033
|
+
/** Automatic instalments and a flexible balance cannot share one booking offer. */
|
|
2034
|
+
function validateBookingPaymentOptionKinds(kinds) {
|
|
2035
|
+
if (kinds.length === 0) return err("no_options");
|
|
2036
|
+
const uniqueKinds = new Set(kinds);
|
|
2037
|
+
if (uniqueKinds.size !== kinds.length) return err("duplicate_kind");
|
|
2038
|
+
if (uniqueKinds.has("instalment_plan") && uniqueKinds.has("flexible_balance")) return err("incompatible_collection_options");
|
|
2039
|
+
return ok(void 0);
|
|
2040
|
+
}
|
|
2041
|
+
//#endregion
|
|
2032
2042
|
//#region ../core/src/booking-time-zone.ts
|
|
2033
2043
|
const TIME_ZONE_VALIDITY_CACHE_LIMIT = 100;
|
|
2034
2044
|
const timeZoneValidityCache = /* @__PURE__ */ new Map();
|
|
@@ -4118,7 +4128,8 @@ const CLIENT_ERROR_REPORT_LIMITS = {
|
|
|
4118
4128
|
stack: 8e3,
|
|
4119
4129
|
digest: 128,
|
|
4120
4130
|
componentStack: 8e3,
|
|
4121
|
-
sourceLocation: 1024
|
|
4131
|
+
sourceLocation: 1024,
|
|
4132
|
+
navigationAgeMs: 6e4
|
|
4122
4133
|
};
|
|
4123
4134
|
const clientErrorEventSchema = z.enum([
|
|
4124
4135
|
"dashboard:route-error",
|
|
@@ -4135,7 +4146,17 @@ z.object({
|
|
|
4135
4146
|
stack: z.string().max(CLIENT_ERROR_REPORT_LIMITS.stack).nullable(),
|
|
4136
4147
|
digest: z.string().max(CLIENT_ERROR_REPORT_LIMITS.digest).nullable(),
|
|
4137
4148
|
componentStack: z.string().max(CLIENT_ERROR_REPORT_LIMITS.componentStack).nullable(),
|
|
4138
|
-
sourceLocation: z.string().max(CLIENT_ERROR_REPORT_LIMITS.sourceLocation).nullable()
|
|
4149
|
+
sourceLocation: z.string().max(CLIENT_ERROR_REPORT_LIMITS.sourceLocation).nullable(),
|
|
4150
|
+
navigation: z.object({
|
|
4151
|
+
fromPathname: z.string().regex(/^\/[^?#]*$/).max(CLIENT_ERROR_REPORT_LIMITS.pathname),
|
|
4152
|
+
toPathname: z.string().regex(/^\/[^?#]*$/).max(CLIENT_ERROR_REPORT_LIMITS.pathname),
|
|
4153
|
+
type: z.enum([
|
|
4154
|
+
"push",
|
|
4155
|
+
"replace",
|
|
4156
|
+
"traverse"
|
|
4157
|
+
]),
|
|
4158
|
+
ageMs: z.number().int().min(0).max(CLIENT_ERROR_REPORT_LIMITS.navigationAgeMs)
|
|
4159
|
+
}).strict().nullable().optional()
|
|
4139
4160
|
}).strict();
|
|
4140
4161
|
({
|
|
4141
4162
|
...SITE_LIFECYCLE_ENDPOINT_DEFINITIONS,
|
|
@@ -4804,6 +4825,68 @@ const paletteValueKeySchema = z.string().transform((value, ctx) => {
|
|
|
4804
4825
|
return z.NEVER;
|
|
4805
4826
|
});
|
|
4806
4827
|
//#endregion
|
|
4828
|
+
//#region ../theme-core/src/palette/utils/opaqueSurfaceColor.ts
|
|
4829
|
+
/** Resolve an opaque colour, compositing alpha against an explicit underlay. */
|
|
4830
|
+
function resolveOpaqueSurfaceHex(reference, palette, underlayReference) {
|
|
4831
|
+
const opaque = resolveConcreteColorHex(reference, palette);
|
|
4832
|
+
if (opaque) return opaque;
|
|
4833
|
+
if (!underlayReference) return null;
|
|
4834
|
+
const underlayHex = resolveConcreteColorHex(underlayReference, palette);
|
|
4835
|
+
if (!underlayHex) return null;
|
|
4836
|
+
const parts = parseColorTokenParts(reference);
|
|
4837
|
+
if (parts.kind === "token" && parts.opacityPercent !== null) {
|
|
4838
|
+
const foregroundHex = normalizePaletteHex(palette[parts.token] ?? "");
|
|
4839
|
+
return foregroundHex ? compositeHex(foregroundHex, underlayHex, parts.opacityPercent / 100) : null;
|
|
4840
|
+
}
|
|
4841
|
+
const rgba = parseRgba(parts.kind === "raw" ? parts.value : reference);
|
|
4842
|
+
return rgba ? compositeHex(rgbToHex(rgba.r, rgba.g, rgba.b), underlayHex, rgba.alpha) : null;
|
|
4843
|
+
}
|
|
4844
|
+
/** Resolve a colour reference only when it is already fully opaque. */
|
|
4845
|
+
function resolveConcreteColorHex(reference, palette) {
|
|
4846
|
+
const literalHex = normalizePaletteHex(reference);
|
|
4847
|
+
if (literalHex) return literalHex;
|
|
4848
|
+
const parts = parseColorTokenParts(reference);
|
|
4849
|
+
if (parts.kind === "token") {
|
|
4850
|
+
if (parts.opacityPercent !== null) return null;
|
|
4851
|
+
return normalizePaletteHex(palette[parts.token] ?? "");
|
|
4852
|
+
}
|
|
4853
|
+
const literal = parts.kind === "raw" ? parts.value : reference;
|
|
4854
|
+
if (literal.toLowerCase() === "black") return "#000000";
|
|
4855
|
+
if (literal.toLowerCase() === "white") return "#ffffff";
|
|
4856
|
+
return normalizePaletteHex(literal);
|
|
4857
|
+
}
|
|
4858
|
+
function compositeHex(foregroundHex, underlayHex, alpha) {
|
|
4859
|
+
const foreground = hexToRgb(foregroundHex);
|
|
4860
|
+
const underlay = hexToRgb(underlayHex);
|
|
4861
|
+
const channel = (foregroundValue, underlayValue) => Math.round(foregroundValue * alpha + underlayValue * (1 - alpha));
|
|
4862
|
+
return rgbToHex(channel(foreground.r, underlay.r), channel(foreground.g, underlay.g), channel(foreground.b, underlay.b));
|
|
4863
|
+
}
|
|
4864
|
+
function parseRgba(value) {
|
|
4865
|
+
const match = value.trim().match(/^rgba?\(\s*([\d.]+)(?:\s*,\s*|\s+)([\d.]+)(?:\s*,\s*|\s+)([\d.]+)(?:\s*(?:,|\/)\s*([\d.]+%?))?\s*\)$/i);
|
|
4866
|
+
if (!match) return null;
|
|
4867
|
+
const [, rSource, gSource, bSource] = match;
|
|
4868
|
+
if (!rSource || !gSource || !bSource) return null;
|
|
4869
|
+
const r = Number(rSource);
|
|
4870
|
+
const g = Number(gSource);
|
|
4871
|
+
const b = Number(bSource);
|
|
4872
|
+
const alpha = parseAlpha(match[4]);
|
|
4873
|
+
if (alpha === null || !isRgbChannel(r) || !isRgbChannel(g) || !isRgbChannel(b)) return null;
|
|
4874
|
+
return {
|
|
4875
|
+
r,
|
|
4876
|
+
g,
|
|
4877
|
+
b,
|
|
4878
|
+
alpha
|
|
4879
|
+
};
|
|
4880
|
+
}
|
|
4881
|
+
function parseAlpha(source) {
|
|
4882
|
+
if (!source) return 1;
|
|
4883
|
+
const value = source.endsWith("%") ? Number(source.slice(0, -1)) / 100 : Number(source);
|
|
4884
|
+
return Number.isFinite(value) && value >= 0 && value <= 1 ? value : null;
|
|
4885
|
+
}
|
|
4886
|
+
function isRgbChannel(value) {
|
|
4887
|
+
return Number.isFinite(value) && value >= 0 && value <= 255;
|
|
4888
|
+
}
|
|
4889
|
+
//#endregion
|
|
4807
4890
|
//#region ../theme-core/src/site-styles/styleTags.ts
|
|
4808
4891
|
/**
|
|
4809
4892
|
* Descriptive style-axis metadata for button personalities and palette
|
|
@@ -7412,68 +7495,6 @@ function interpolateHex(startHex, endHex, position) {
|
|
|
7412
7495
|
const channel = (from, to) => Math.round(from + (to - from) * position).toString(16).padStart(2, "0");
|
|
7413
7496
|
return `#${channel(start.r, end.r)}${channel(start.g, end.g)}${channel(start.b, end.b)}`;
|
|
7414
7497
|
}
|
|
7415
|
-
//#endregion
|
|
7416
|
-
//#region ../theme-core/src/palette/utils/opaqueSurfaceColor.ts
|
|
7417
|
-
/** Resolve an opaque colour, compositing alpha against an explicit underlay. */
|
|
7418
|
-
function resolveOpaqueSurfaceHex(reference, palette, underlayReference) {
|
|
7419
|
-
const opaque = resolveConcreteColorHex(reference, palette);
|
|
7420
|
-
if (opaque) return opaque;
|
|
7421
|
-
if (!underlayReference) return null;
|
|
7422
|
-
const underlayHex = resolveConcreteColorHex(underlayReference, palette);
|
|
7423
|
-
if (!underlayHex) return null;
|
|
7424
|
-
const parts = parseColorTokenParts(reference);
|
|
7425
|
-
if (parts.kind === "token" && parts.opacityPercent !== null) {
|
|
7426
|
-
const foregroundHex = normalizePaletteHex(palette[parts.token] ?? "");
|
|
7427
|
-
return foregroundHex ? compositeHex(foregroundHex, underlayHex, parts.opacityPercent / 100) : null;
|
|
7428
|
-
}
|
|
7429
|
-
const rgba = parseRgba(parts.kind === "raw" ? parts.value : reference);
|
|
7430
|
-
return rgba ? compositeHex(rgbToHex(rgba.r, rgba.g, rgba.b), underlayHex, rgba.alpha) : null;
|
|
7431
|
-
}
|
|
7432
|
-
/** Resolve a colour reference only when it is already fully opaque. */
|
|
7433
|
-
function resolveConcreteColorHex(reference, palette) {
|
|
7434
|
-
const literalHex = normalizePaletteHex(reference);
|
|
7435
|
-
if (literalHex) return literalHex;
|
|
7436
|
-
const parts = parseColorTokenParts(reference);
|
|
7437
|
-
if (parts.kind === "token") {
|
|
7438
|
-
if (parts.opacityPercent !== null) return null;
|
|
7439
|
-
return normalizePaletteHex(palette[parts.token] ?? "");
|
|
7440
|
-
}
|
|
7441
|
-
const literal = parts.kind === "raw" ? parts.value : reference;
|
|
7442
|
-
if (literal.toLowerCase() === "black") return "#000000";
|
|
7443
|
-
if (literal.toLowerCase() === "white") return "#ffffff";
|
|
7444
|
-
return normalizePaletteHex(literal);
|
|
7445
|
-
}
|
|
7446
|
-
function compositeHex(foregroundHex, underlayHex, alpha) {
|
|
7447
|
-
const foreground = hexToRgb(foregroundHex);
|
|
7448
|
-
const underlay = hexToRgb(underlayHex);
|
|
7449
|
-
const channel = (foregroundValue, underlayValue) => Math.round(foregroundValue * alpha + underlayValue * (1 - alpha));
|
|
7450
|
-
return rgbToHex(channel(foreground.r, underlay.r), channel(foreground.g, underlay.g), channel(foreground.b, underlay.b));
|
|
7451
|
-
}
|
|
7452
|
-
function parseRgba(value) {
|
|
7453
|
-
const match = value.trim().match(/^rgba?\(\s*([\d.]+)(?:\s*,\s*|\s+)([\d.]+)(?:\s*,\s*|\s+)([\d.]+)(?:\s*(?:,|\/)\s*([\d.]+%?))?\s*\)$/i);
|
|
7454
|
-
if (!match) return null;
|
|
7455
|
-
const [, rSource, gSource, bSource] = match;
|
|
7456
|
-
if (!rSource || !gSource || !bSource) return null;
|
|
7457
|
-
const r = Number(rSource);
|
|
7458
|
-
const g = Number(gSource);
|
|
7459
|
-
const b = Number(bSource);
|
|
7460
|
-
const alpha = parseAlpha(match[4]);
|
|
7461
|
-
if (alpha === null || !isRgbChannel(r) || !isRgbChannel(g) || !isRgbChannel(b)) return null;
|
|
7462
|
-
return {
|
|
7463
|
-
r,
|
|
7464
|
-
g,
|
|
7465
|
-
b,
|
|
7466
|
-
alpha
|
|
7467
|
-
};
|
|
7468
|
-
}
|
|
7469
|
-
function parseAlpha(source) {
|
|
7470
|
-
if (!source) return 1;
|
|
7471
|
-
const value = source.endsWith("%") ? Number(source.slice(0, -1)) / 100 : Number(source);
|
|
7472
|
-
return Number.isFinite(value) && value >= 0 && value <= 1 ? value : null;
|
|
7473
|
-
}
|
|
7474
|
-
function isRgbChannel(value) {
|
|
7475
|
-
return Number.isFinite(value) && value >= 0 && value <= 255;
|
|
7476
|
-
}
|
|
7477
7498
|
/**
|
|
7478
7499
|
* Derive the hover foreground that belongs with a resolved resting foreground.
|
|
7479
7500
|
*
|
|
@@ -8039,6 +8060,15 @@ function fallbackBackground(fallbackToken, palette) {
|
|
|
8039
8060
|
reason: "unresolvable-colour"
|
|
8040
8061
|
};
|
|
8041
8062
|
}
|
|
8063
|
+
/** Every role's contextual styles against one proven solid surface. */
|
|
8064
|
+
function knownSurfaceButtonContextStyles(input) {
|
|
8065
|
+
return Object.fromEntries(VARIANT_ROLES.flatMap((role) => Object.entries(contextualButtonSurfaceStyles(resolveContextualButtonRole({
|
|
8066
|
+
role,
|
|
8067
|
+
buttonSystem: input.buttonSystem,
|
|
8068
|
+
palette: input.palette,
|
|
8069
|
+
surface: input.surface
|
|
8070
|
+
})))));
|
|
8071
|
+
}
|
|
8042
8072
|
function resolveContextualButtonRole(input) {
|
|
8043
8073
|
const requested = findVariant(input.buttonSystem, input.role);
|
|
8044
8074
|
if (!requested) return {
|
|
@@ -11038,6 +11068,18 @@ function brandNonEmptyString(value, label) {
|
|
|
11038
11068
|
if (value.length === 0) throw new Error(`${label} must be a non-empty string.`);
|
|
11039
11069
|
return value;
|
|
11040
11070
|
}
|
|
11071
|
+
/**
|
|
11072
|
+
* What a block's own section background field admits, read from its manifest.
|
|
11073
|
+
* A site style's surface rule may paint a gradient or a photo; a block whose
|
|
11074
|
+
* `_sectionStyles.background` refuses that paint would be dropped at render
|
|
11075
|
+
* admission, so the runtime compiler paints the surface's colour equivalent
|
|
11076
|
+
* instead (see `compileSectionBackground`).
|
|
11077
|
+
*/
|
|
11078
|
+
const sectionBackgroundPaintValues = [
|
|
11079
|
+
"color",
|
|
11080
|
+
"gradient",
|
|
11081
|
+
"image"
|
|
11082
|
+
];
|
|
11041
11083
|
const plainFrame = { kind: "plain" };
|
|
11042
11084
|
function panelFrame(treatment) {
|
|
11043
11085
|
return {
|
|
@@ -11122,6 +11164,7 @@ function defineBlockDesignCapability(capability) {
|
|
|
11122
11164
|
...capability,
|
|
11123
11165
|
kind: "designed",
|
|
11124
11166
|
looks: capability.looks ?? "not-applicable",
|
|
11167
|
+
sectionBackgroundPaints: admittedSectionBackgroundPaints(capability.sectionBackgroundPaints),
|
|
11125
11168
|
sectionHeights: capability.sectionHeights ?? ["default"],
|
|
11126
11169
|
imageSurfaceTreatments: capability.imageSurfaceTreatments ?? ["none"],
|
|
11127
11170
|
imageSurfaceMotions: capability.imageSurfaceMotions ?? ["static"],
|
|
@@ -11134,6 +11177,10 @@ function defineBlockDesignCapability(capability) {
|
|
|
11134
11177
|
...capability.accordionIconSets ? { accordionIconSets: capability.accordionIconSets } : {}
|
|
11135
11178
|
};
|
|
11136
11179
|
}
|
|
11180
|
+
/** Absent means the block admits every section background paint. */
|
|
11181
|
+
function admittedSectionBackgroundPaints(paints) {
|
|
11182
|
+
return paints ?? sectionBackgroundPaintValues;
|
|
11183
|
+
}
|
|
11137
11184
|
//#endregion
|
|
11138
11185
|
//#region ../theme-core/src/site-styles/logoBranding.ts
|
|
11139
11186
|
const logoTextConfidenceValues = [
|
|
@@ -11412,12 +11459,22 @@ const mediaPresentationSchema = commonSchema.extend({
|
|
|
11412
11459
|
const boxBackgroundSchema = z.discriminatedUnion("type", [
|
|
11413
11460
|
commonSchema.extend({
|
|
11414
11461
|
type: z.literal("color"),
|
|
11415
|
-
color: tokenOrCssColorValueSchema.nullable().optional()
|
|
11462
|
+
color: tokenOrCssColorValueSchema.nullable().optional(),
|
|
11463
|
+
/**
|
|
11464
|
+
* Compiler-owned. The scrim a site-style colour surface lays over media
|
|
11465
|
+
* that replaces it (a Look's band meeting an authored photo), sized so the
|
|
11466
|
+
* surface's foreground stays legible over any pixel. A colour background
|
|
11467
|
+
* never draws it itself; `resolveSectionBackground` moves it onto the
|
|
11468
|
+
* merged media background as its overlay.
|
|
11469
|
+
*/
|
|
11470
|
+
mediaScrim: boxBackgroundOverlaySchema.nullable().optional()
|
|
11416
11471
|
}),
|
|
11417
11472
|
commonSchema.extend({
|
|
11418
11473
|
type: z.literal("gradient"),
|
|
11419
11474
|
gradient: z.string().nullable().optional(),
|
|
11420
|
-
gradientPresetId: z.string().min(1).nullable().optional()
|
|
11475
|
+
gradientPresetId: z.string().min(1).nullable().optional(),
|
|
11476
|
+
/** Compiler-owned; see the colour branch. */
|
|
11477
|
+
mediaScrim: boxBackgroundOverlaySchema.nullable().optional()
|
|
11421
11478
|
}),
|
|
11422
11479
|
mediaPresentationSchema.extend({
|
|
11423
11480
|
type: z.literal("image"),
|
|
@@ -12215,6 +12272,17 @@ function defineBlockAppearancePreset(preset) {
|
|
|
12215
12272
|
* (`defineBlockAppearancePreset` defaults it to `none`) — the block's own
|
|
12216
12273
|
* composition still governs how its items look. The per-Look rationale for the card-bearing ones lives
|
|
12217
12274
|
* in `.project/plans/1297-card-role-contract-site-styles-own-card-surfaces/mapping-table.md`.
|
|
12275
|
+
*
|
|
12276
|
+
* A Look asking for the `alternative` or `open` role is offered only where the
|
|
12277
|
+
* site style defines that role (`siteStyleSupportsLookDesign`), so two Looks
|
|
12278
|
+
* that differ only in role are distinct wherever both are offered.
|
|
12279
|
+
*
|
|
12280
|
+
* Retiring a Look is removing its entry. A stored pin to a retired id reads as
|
|
12281
|
+
* an unsupported pin in the page design editor model and renders the block's
|
|
12282
|
+
* auto Look, the same path an unavailable Look takes. Duplicates retired in
|
|
12283
|
+
* the 2026-09 Look audit: `feature-cards-soft-panels`,
|
|
12284
|
+
* `feature-cards-photo-tiles`, `feature-cards-editorial-pathways`,
|
|
12285
|
+
* `testimonials-default-cards`.
|
|
12218
12286
|
*/
|
|
12219
12287
|
const brandScrimOptionGroups = [{
|
|
12220
12288
|
id: "image-surface-treatment",
|
|
@@ -12599,16 +12667,6 @@ defineBlockAppearancePreset({
|
|
|
12599
12667
|
treatment: "framed-programme"
|
|
12600
12668
|
}
|
|
12601
12669
|
}
|
|
12602
|
-
}), defineBlockAppearancePreset({
|
|
12603
|
-
id: "feature-cards-soft-panels",
|
|
12604
|
-
target: "feature-cards",
|
|
12605
|
-
label: "Soft tinted panels",
|
|
12606
|
-
blockKinds: ["block.feature-cards"],
|
|
12607
|
-
design: {
|
|
12608
|
-
sectionSurface: "base",
|
|
12609
|
-
contentFrame: plainFrame,
|
|
12610
|
-
cardRole: "alternative"
|
|
12611
|
-
}
|
|
12612
12670
|
}), defineBlockAppearancePreset({
|
|
12613
12671
|
id: "feature-cards-editorial-diptych",
|
|
12614
12672
|
target: "feature-cards",
|
|
@@ -12620,27 +12678,6 @@ defineBlockAppearancePreset({
|
|
|
12620
12678
|
contentFrame: plainFrame,
|
|
12621
12679
|
cardRole: "default"
|
|
12622
12680
|
}
|
|
12623
|
-
}), defineBlockAppearancePreset({
|
|
12624
|
-
id: "feature-cards-editorial-pathways",
|
|
12625
|
-
target: "feature-cards",
|
|
12626
|
-
label: "Editorial pathways",
|
|
12627
|
-
blockKinds: ["block.feature-cards"],
|
|
12628
|
-
constraints: { layoutVariantKeys: ["editorial-pathways"] },
|
|
12629
|
-
design: {
|
|
12630
|
-
sectionSurface: "base",
|
|
12631
|
-
contentFrame: plainFrame,
|
|
12632
|
-
cardRole: "default"
|
|
12633
|
-
}
|
|
12634
|
-
}), defineBlockAppearancePreset({
|
|
12635
|
-
id: "feature-cards-photo-tiles",
|
|
12636
|
-
target: "feature-cards",
|
|
12637
|
-
label: "Photo tiles",
|
|
12638
|
-
blockKinds: ["block.feature-cards"],
|
|
12639
|
-
design: {
|
|
12640
|
-
sectionSurface: "base",
|
|
12641
|
-
contentFrame: plainFrame,
|
|
12642
|
-
cardRole: "default"
|
|
12643
|
-
}
|
|
12644
12681
|
}), defineBlockAppearancePreset({
|
|
12645
12682
|
id: "events-lined-panel",
|
|
12646
12683
|
target: "events",
|
|
@@ -12729,16 +12766,6 @@ defineBlockAppearancePreset({
|
|
|
12729
12766
|
contentFrame: panelFrame("raised"),
|
|
12730
12767
|
cardRole: "default"
|
|
12731
12768
|
}
|
|
12732
|
-
}), defineBlockAppearancePreset({
|
|
12733
|
-
id: "testimonials-default-cards",
|
|
12734
|
-
target: "testimonials",
|
|
12735
|
-
label: "Default cards",
|
|
12736
|
-
blockKinds: ["block.testimonials"],
|
|
12737
|
-
design: {
|
|
12738
|
-
sectionSurface: "base",
|
|
12739
|
-
contentFrame: plainFrame,
|
|
12740
|
-
cardRole: "default"
|
|
12741
|
-
}
|
|
12742
12769
|
}), defineBlockAppearancePreset({
|
|
12743
12770
|
id: "testimonials-statement-cards",
|
|
12744
12771
|
target: "testimonials",
|
|
@@ -16220,9 +16247,7 @@ const curatedSiteStyles = [
|
|
|
16220
16247
|
recommendedAppearancePresetIds: [
|
|
16221
16248
|
"hero-split-editorial",
|
|
16222
16249
|
"intro-portrait-bio",
|
|
16223
|
-
"feature-cards-
|
|
16224
|
-
"feature-cards-editorial-columns",
|
|
16225
|
-
"feature-cards-photo-tiles",
|
|
16250
|
+
"feature-cards-bold-colors",
|
|
16226
16251
|
"testimonials-non-carded",
|
|
16227
16252
|
"faq-contained-help",
|
|
16228
16253
|
"contact-form-panel"
|
|
@@ -16866,8 +16891,7 @@ const curatedSiteStyles = [
|
|
|
16866
16891
|
"intro-portrait-bio",
|
|
16867
16892
|
"feature-cards-editorial-columns",
|
|
16868
16893
|
"feature-cards-editorial-diptych",
|
|
16869
|
-
"feature-cards-
|
|
16870
|
-
"feature-cards-soft-panels",
|
|
16894
|
+
"feature-cards-bold-colors",
|
|
16871
16895
|
"events-lined-panel",
|
|
16872
16896
|
"testimonials-non-carded",
|
|
16873
16897
|
"faq-base-accordion",
|
|
@@ -18673,6 +18697,34 @@ function withLookCapability(declaration) {
|
|
|
18673
18697
|
}
|
|
18674
18698
|
};
|
|
18675
18699
|
}
|
|
18700
|
+
/**
|
|
18701
|
+
* The section background paints a block's own `_sectionStyles.background`
|
|
18702
|
+
* field admits, read from its manifest so the design capability cannot drift
|
|
18703
|
+
* from what render admission accepts. A block without the field admits none.
|
|
18704
|
+
*/
|
|
18705
|
+
function sectionBackgroundPaintsOfFields(fields) {
|
|
18706
|
+
const sectionStyles = fields.find((field) => field.id === "_sectionStyles");
|
|
18707
|
+
if (!sectionStyles || sectionStyles.type !== "modal") return [];
|
|
18708
|
+
const background = sectionStyles.schema.fields.find((field) => field.id === "background");
|
|
18709
|
+
if (!background || background.type !== "tabGroup") return [];
|
|
18710
|
+
const tabIds = new Set(background.tabs.map((tab) => tab.id));
|
|
18711
|
+
return [
|
|
18712
|
+
"color",
|
|
18713
|
+
"gradient",
|
|
18714
|
+
"image"
|
|
18715
|
+
].filter((paint) => tabIds.has(paint));
|
|
18716
|
+
}
|
|
18717
|
+
/** Pins a designed capability's section background paints to the block's manifest. */
|
|
18718
|
+
function withManifestSectionBackgroundPaints(declaration, fields) {
|
|
18719
|
+
if (declaration.kind !== "capability") return declaration;
|
|
18720
|
+
return {
|
|
18721
|
+
kind: "capability",
|
|
18722
|
+
capability: {
|
|
18723
|
+
...declaration.capability,
|
|
18724
|
+
sectionBackgroundPaints: sectionBackgroundPaintsOfFields(fields)
|
|
18725
|
+
}
|
|
18726
|
+
};
|
|
18727
|
+
}
|
|
18676
18728
|
function declareNoBlockDesignCapability(reason) {
|
|
18677
18729
|
return {
|
|
18678
18730
|
kind: "none",
|
|
@@ -20535,15 +20587,11 @@ function resolveContextualButtonStyles(background, foreground, context, options)
|
|
|
20535
20587
|
if (!paletteCache.has(palette)) paletteCache.set(palette, surfaceCache);
|
|
20536
20588
|
const cached = surfaceCache.get(cacheKey);
|
|
20537
20589
|
if (cached) return cached;
|
|
20538
|
-
const styles =
|
|
20539
|
-
|
|
20540
|
-
|
|
20541
|
-
|
|
20542
|
-
|
|
20543
|
-
surface: surface.surface
|
|
20544
|
-
});
|
|
20545
|
-
return Object.entries(contextualButtonSurfaceStyles(resolution));
|
|
20546
|
-
}));
|
|
20590
|
+
const styles = knownSurfaceButtonContextStyles({
|
|
20591
|
+
surface: surface.surface,
|
|
20592
|
+
palette,
|
|
20593
|
+
buttonSystem
|
|
20594
|
+
});
|
|
20547
20595
|
surfaceCache.set(cacheKey, styles);
|
|
20548
20596
|
return styles;
|
|
20549
20597
|
}
|
|
@@ -27231,6 +27279,20 @@ const footerEngagement = stack({
|
|
|
27231
27279
|
...footerSpamProtectionBinding
|
|
27232
27280
|
}), [], when("module.engagement.kind", { equals: "mailing-list" }))
|
|
27233
27281
|
], when("module.kind", { equals: "engagement" }));
|
|
27282
|
+
const platformAttribution = el("div", {
|
|
27283
|
+
className: "rb-caption",
|
|
27284
|
+
"data-site-attribution": "macadamia"
|
|
27285
|
+
}, [
|
|
27286
|
+
text({ as: "span" }, bind("module.lead")),
|
|
27287
|
+
text({
|
|
27288
|
+
as: "span",
|
|
27289
|
+
value: " "
|
|
27290
|
+
}),
|
|
27291
|
+
link({
|
|
27292
|
+
href: { $bind: { from: "module.link.href" } },
|
|
27293
|
+
className: "footer-nav-link rb-caption transition-theme-standard"
|
|
27294
|
+
}, [text({ as: "span" }, bind("module.link.label"))])
|
|
27295
|
+
], when("module.kind", { equals: "attribution" }));
|
|
27234
27296
|
const footerGroup = stack({
|
|
27235
27297
|
gap: "md",
|
|
27236
27298
|
align: "stretch",
|
|
@@ -27260,6 +27322,7 @@ const footerGroup = stack({
|
|
|
27260
27322
|
hours,
|
|
27261
27323
|
socials,
|
|
27262
27324
|
footerEngagement,
|
|
27325
|
+
platformAttribution,
|
|
27263
27326
|
stack({ className: "rb-w-full" }, [authoredCopy], when("module.kind", { equals: "supporting-text" })),
|
|
27264
27327
|
stack({ className: "rb-w-full rb-lg-col-span-3" }, [authoredCopy], when("module.kind", { equals: "legal" }))
|
|
27265
27328
|
], repeat("group.modules", "module"))], repeat("region.groups", "group"));
|
|
@@ -29198,68 +29261,115 @@ const RichTextDocSchema = z.object({
|
|
|
29198
29261
|
content: z.array(TipTapNodeSchema)
|
|
29199
29262
|
}).strict();
|
|
29200
29263
|
//#endregion
|
|
29201
|
-
//#region ../
|
|
29202
|
-
const
|
|
29203
|
-
const
|
|
29204
|
-
|
|
29205
|
-
|
|
29206
|
-
|
|
29207
|
-
|
|
29208
|
-
|
|
29209
|
-
intervalUnit: z.enum([
|
|
29210
|
-
"day",
|
|
29211
|
-
"week",
|
|
29212
|
-
"month"
|
|
29213
|
-
])
|
|
29214
|
-
}),
|
|
29215
|
-
z.object({
|
|
29216
|
-
kind: z.literal("deposit_plus_scheduled_instalments"),
|
|
29217
|
-
depositAmountCents: z.number().int().min(0),
|
|
29218
|
-
depositRefundability: bookingDepositRefundPolicySchema$1,
|
|
29219
|
-
instalmentCount: z.number().int().positive(),
|
|
29220
|
-
intervalCount: z.number().int().positive(),
|
|
29221
|
-
intervalUnit: z.enum([
|
|
29222
|
-
"day",
|
|
29223
|
-
"week",
|
|
29224
|
-
"month"
|
|
29225
|
-
])
|
|
29226
|
-
}),
|
|
29227
|
-
z.object({
|
|
29228
|
-
kind: z.literal("equal_scheduled_instalments"),
|
|
29229
|
-
instalmentCount: z.number().int().positive(),
|
|
29230
|
-
intervalCount: z.number().int().positive(),
|
|
29231
|
-
intervalUnit: z.enum([
|
|
29232
|
-
"day",
|
|
29233
|
-
"week",
|
|
29234
|
-
"month"
|
|
29235
|
-
])
|
|
29236
|
-
})
|
|
29264
|
+
//#region ../core/src/booking-payment-schemas.ts
|
|
29265
|
+
const stripObject = (shape) => z.object(shape);
|
|
29266
|
+
const strictObject = (shape) => z.strictObject(shape);
|
|
29267
|
+
const depositRefundPolicySchema = z.enum(["refundable", "non_refundable"]);
|
|
29268
|
+
const intervalUnitSchema = z.enum([
|
|
29269
|
+
"day",
|
|
29270
|
+
"week",
|
|
29271
|
+
"month"
|
|
29237
29272
|
]);
|
|
29238
|
-
const
|
|
29239
|
-
|
|
29240
|
-
|
|
29241
|
-
|
|
29242
|
-
|
|
29243
|
-
|
|
29244
|
-
|
|
29245
|
-
|
|
29246
|
-
|
|
29247
|
-
|
|
29248
|
-
|
|
29249
|
-
|
|
29250
|
-
|
|
29251
|
-
|
|
29252
|
-
|
|
29253
|
-
|
|
29254
|
-
|
|
29255
|
-
|
|
29256
|
-
|
|
29257
|
-
|
|
29258
|
-
|
|
29259
|
-
|
|
29260
|
-
|
|
29261
|
-
|
|
29262
|
-
|
|
29273
|
+
const nonNegativeIntegerSchema = z.number().int().nonnegative();
|
|
29274
|
+
const positiveIntegerSchema = z.number().int().positive();
|
|
29275
|
+
function createInstalmentPlanSchema(object) {
|
|
29276
|
+
return z.discriminatedUnion("kind", [
|
|
29277
|
+
object({
|
|
29278
|
+
kind: z.literal("deposit_plus_one_remainder"),
|
|
29279
|
+
depositAmountCents: nonNegativeIntegerSchema,
|
|
29280
|
+
depositRefundability: depositRefundPolicySchema,
|
|
29281
|
+
remainderDueCount: positiveIntegerSchema,
|
|
29282
|
+
intervalUnit: intervalUnitSchema
|
|
29283
|
+
}),
|
|
29284
|
+
object({
|
|
29285
|
+
kind: z.literal("deposit_plus_scheduled_instalments"),
|
|
29286
|
+
depositAmountCents: nonNegativeIntegerSchema,
|
|
29287
|
+
depositRefundability: depositRefundPolicySchema,
|
|
29288
|
+
instalmentCount: positiveIntegerSchema,
|
|
29289
|
+
intervalCount: positiveIntegerSchema,
|
|
29290
|
+
intervalUnit: intervalUnitSchema
|
|
29291
|
+
}),
|
|
29292
|
+
object({
|
|
29293
|
+
kind: z.literal("equal_scheduled_instalments"),
|
|
29294
|
+
instalmentCount: positiveIntegerSchema,
|
|
29295
|
+
intervalCount: positiveIntegerSchema,
|
|
29296
|
+
intervalUnit: intervalUnitSchema
|
|
29297
|
+
})
|
|
29298
|
+
]);
|
|
29299
|
+
}
|
|
29300
|
+
function createFlexibleBalanceSchemas(object) {
|
|
29301
|
+
const dueDateRule = z.discriminatedUnion("kind", [object({
|
|
29302
|
+
kind: z.literal("relative_to_start_date"),
|
|
29303
|
+
daysBeforeStart: positiveIntegerSchema
|
|
29304
|
+
}), object({
|
|
29305
|
+
kind: z.literal("fixed_calendar_date"),
|
|
29306
|
+
dueAt: z.string().datetime()
|
|
29307
|
+
})]);
|
|
29308
|
+
return {
|
|
29309
|
+
dueDateRule,
|
|
29310
|
+
config: object({
|
|
29311
|
+
upfrontAmountCents: nonNegativeIntegerSchema,
|
|
29312
|
+
dueDateRule,
|
|
29313
|
+
depositRefundability: depositRefundPolicySchema
|
|
29314
|
+
})
|
|
29315
|
+
};
|
|
29316
|
+
}
|
|
29317
|
+
const paymentOptionKindsMessages = {
|
|
29318
|
+
no_options: "Choose at least one way for customers to pay.",
|
|
29319
|
+
duplicate_kind: "Choose each payment option only once.",
|
|
29320
|
+
incompatible_collection_options: "Offer instalments or a deposit with the rest paid later, but not both."
|
|
29321
|
+
};
|
|
29322
|
+
function buildBookingPaymentOptionSchemas(object) {
|
|
29323
|
+
const instalmentPlan = createInstalmentPlanSchema(object);
|
|
29324
|
+
const flexibleBalance = createFlexibleBalanceSchemas(object);
|
|
29325
|
+
const paymentCollectionOption = z.discriminatedUnion("kind", [
|
|
29326
|
+
object({ kind: z.literal("upfront") }),
|
|
29327
|
+
object({ kind: z.literal("deferred_manual") }),
|
|
29328
|
+
object({
|
|
29329
|
+
kind: z.literal("instalment_plan"),
|
|
29330
|
+
plan: instalmentPlan
|
|
29331
|
+
}),
|
|
29332
|
+
object({
|
|
29333
|
+
kind: z.literal("flexible_balance"),
|
|
29334
|
+
config: flexibleBalance.config
|
|
29335
|
+
})
|
|
29336
|
+
]);
|
|
29337
|
+
const paymentTerms = object({ allowedOptions: z.array(paymentCollectionOption) }).superRefine(({ allowedOptions }, ctx) => {
|
|
29338
|
+
const result = validateBookingPaymentOptionKinds(allowedOptions.map(({ kind }) => kind));
|
|
29339
|
+
if (!result.ok) ctx.addIssue({
|
|
29340
|
+
code: "custom",
|
|
29341
|
+
path: ["allowedOptions"],
|
|
29342
|
+
message: paymentOptionKindsMessages[result.error]
|
|
29343
|
+
});
|
|
29344
|
+
});
|
|
29345
|
+
const paymentOptionsChoice = z.discriminatedUnion("source", [z.strictObject({ source: z.literal("default") }), z.strictObject({
|
|
29346
|
+
source: z.literal("custom"),
|
|
29347
|
+
paymentTerms
|
|
29348
|
+
})]);
|
|
29349
|
+
return {
|
|
29350
|
+
depositRefundPolicy: depositRefundPolicySchema,
|
|
29351
|
+
instalmentPlan,
|
|
29352
|
+
flexibleBalanceDueDateRule: flexibleBalance.dueDateRule,
|
|
29353
|
+
flexibleBalanceConfig: flexibleBalance.config,
|
|
29354
|
+
paymentCollectionOption,
|
|
29355
|
+
paymentTerms,
|
|
29356
|
+
paymentOptionsChoice
|
|
29357
|
+
};
|
|
29358
|
+
}
|
|
29359
|
+
function createBookingPaymentOptionSchemas(mode) {
|
|
29360
|
+
return mode === "strict" ? buildBookingPaymentOptionSchemas(strictObject) : buildBookingPaymentOptionSchemas(stripObject);
|
|
29361
|
+
}
|
|
29362
|
+
const bookingPaymentOptionSchemas = createBookingPaymentOptionSchemas("strip");
|
|
29363
|
+
bookingPaymentOptionSchemas.depositRefundPolicy;
|
|
29364
|
+
bookingPaymentOptionSchemas.instalmentPlan;
|
|
29365
|
+
bookingPaymentOptionSchemas.flexibleBalanceDueDateRule;
|
|
29366
|
+
bookingPaymentOptionSchemas.flexibleBalanceConfig;
|
|
29367
|
+
bookingPaymentOptionSchemas.paymentCollectionOption;
|
|
29368
|
+
const bookingPaymentTermsSchema = bookingPaymentOptionSchemas.paymentTerms;
|
|
29369
|
+
bookingPaymentOptionSchemas.paymentOptionsChoice;
|
|
29370
|
+
//#endregion
|
|
29371
|
+
//#region ../blocks/src/system/blocks/shared/bookingPaymentTerms.ts
|
|
29372
|
+
const blockBookingPaymentTermsSchema = bookingPaymentTermsSchema;
|
|
29263
29373
|
//#endregion
|
|
29264
29374
|
//#region ../blocks/src/system/blocks/shared/bookingConsent.ts
|
|
29265
29375
|
const blockBookingConsentSchema = z.object({
|
|
@@ -29861,7 +29971,7 @@ const publicPassProductCollectionSchema = z.object({ passes: z.array(publicPassP
|
|
|
29861
29971
|
/**
|
|
29862
29972
|
* Public membership product for shop display
|
|
29863
29973
|
*/
|
|
29864
|
-
const
|
|
29974
|
+
const publicMembershipProductFields = {
|
|
29865
29975
|
id: z.string(),
|
|
29866
29976
|
name: z.string(),
|
|
29867
29977
|
description: z.string().nullable(),
|
|
@@ -29870,7 +29980,16 @@ const publicMembershipProductSchema = z.object({
|
|
|
29870
29980
|
billingInterval: z.enum(["month", "year"]),
|
|
29871
29981
|
eligibleCategoryIds: z.array(z.string()),
|
|
29872
29982
|
eligibleCategoryNames: z.array(z.string())
|
|
29983
|
+
};
|
|
29984
|
+
const purchasablePublicMembershipProductSchema = z.object({
|
|
29985
|
+
...publicMembershipProductFields,
|
|
29986
|
+
purchaseAvailability: z.literal("purchasable")
|
|
29873
29987
|
});
|
|
29988
|
+
const publicMembershipProductSchema = z.discriminatedUnion("purchaseAvailability", [purchasablePublicMembershipProductSchema, z.object({
|
|
29989
|
+
...publicMembershipProductFields,
|
|
29990
|
+
purchaseAvailability: z.literal("display_only"),
|
|
29991
|
+
unavailabilityReason: z.literal("online_payments_unavailable")
|
|
29992
|
+
})]);
|
|
29874
29993
|
const publicMembershipProductCollectionSchema = z.object({ memberships: z.array(publicMembershipProductSchema) });
|
|
29875
29994
|
//#endregion
|
|
29876
29995
|
//#region ../blocks/src/system/blocks/event-registration.shared.ts
|
|
@@ -30070,14 +30189,18 @@ const calendarTabViewsSchema = z.enum([
|
|
|
30070
30189
|
* @param needsPaymentStep - Whether user must complete payment method selection
|
|
30071
30190
|
* @returns Array of wizard steps to display
|
|
30072
30191
|
*/
|
|
30073
|
-
function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep) {
|
|
30192
|
+
function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep, paymentActive = false) {
|
|
30074
30193
|
const baseSteps = hasPreSelectedContext ? ["select-tickets", "enter-details"] : [
|
|
30075
30194
|
"select-event",
|
|
30076
30195
|
"select-tickets",
|
|
30077
30196
|
"enter-details"
|
|
30078
30197
|
];
|
|
30079
30198
|
if (!needsPaymentStep) return baseSteps;
|
|
30080
|
-
return [
|
|
30199
|
+
return paymentActive ? [
|
|
30200
|
+
...baseSteps,
|
|
30201
|
+
"select-payment",
|
|
30202
|
+
"payment"
|
|
30203
|
+
] : [...baseSteps, "select-payment"];
|
|
30081
30204
|
}
|
|
30082
30205
|
//#endregion
|
|
30083
30206
|
//#region ../blocks/src/system/runtime/nodes/event-registration/registrationDerivations.ts
|
|
@@ -30196,6 +30319,7 @@ const EVENT_REGISTRATION_SHELL_STEP_LABELS = [
|
|
|
30196
30319
|
"Date",
|
|
30197
30320
|
"Tickets",
|
|
30198
30321
|
"Details",
|
|
30322
|
+
"Payment options",
|
|
30199
30323
|
"Payment"
|
|
30200
30324
|
];
|
|
30201
30325
|
const eventRegistrationPublicEventSchema = z.preprocess(normalizeEventRegistrationEventInput, publicEventSchema);
|
|
@@ -30338,12 +30462,13 @@ function shellLabelForRegistrationStep(step, events) {
|
|
|
30338
30462
|
switch (step) {
|
|
30339
30463
|
case "select-event": return isDateSelection(events) ? "Date" : "Event";
|
|
30340
30464
|
case "select-tickets": return "Tickets";
|
|
30465
|
+
case "fully-booked":
|
|
30341
30466
|
case "enter-details": return "Details";
|
|
30342
|
-
case "select-payment": return "Payment";
|
|
30467
|
+
case "select-payment": return "Payment options";
|
|
30468
|
+
case "payment": return "Payment";
|
|
30343
30469
|
case "error":
|
|
30344
30470
|
case "success":
|
|
30345
30471
|
case "submitting":
|
|
30346
|
-
case "redirecting":
|
|
30347
30472
|
case "verifying-payment":
|
|
30348
30473
|
case "verifying-timeout":
|
|
30349
30474
|
case "payment-status":
|
|
@@ -30355,7 +30480,7 @@ function isDateSelection(events) {
|
|
|
30355
30480
|
return Boolean(events.length > 1 && firstSeriesId && events.every((event) => event.seriesId === firstSeriesId));
|
|
30356
30481
|
}
|
|
30357
30482
|
function buildEventRegistrationShellBodyText(stepLabels) {
|
|
30358
|
-
if (stepLabels.includes("Payment")) return "Preparing tickets, details, and payment options.";
|
|
30483
|
+
if (stepLabels.includes("Payment options")) return "Preparing tickets, details, and payment options.";
|
|
30359
30484
|
if (stepLabels[0] === "Tickets") return "Preparing tickets and booking details.";
|
|
30360
30485
|
return "Preparing dates, tickets, and booking details.";
|
|
30361
30486
|
}
|
|
@@ -32330,7 +32455,8 @@ const eventCalendarLayout = [styledSection({
|
|
|
32330
32455
|
fallback: false
|
|
32331
32456
|
} },
|
|
32332
32457
|
banded: { $bind: {
|
|
32333
|
-
from: "content
|
|
32458
|
+
from: "content",
|
|
32459
|
+
transforms: [{ id: "events.calendarBanded" }],
|
|
32334
32460
|
fallback: false
|
|
32335
32461
|
} }
|
|
32336
32462
|
}))]
|
|
@@ -35603,7 +35729,7 @@ function buildPassesMembershipsDisplay(options) {
|
|
|
35603
35729
|
product: pass
|
|
35604
35730
|
} : {
|
|
35605
35731
|
kind: "unavailable",
|
|
35606
|
-
label: "Online purchasing
|
|
35732
|
+
label: "Online purchasing is unavailable."
|
|
35607
35733
|
}
|
|
35608
35734
|
};
|
|
35609
35735
|
});
|
|
@@ -35613,7 +35739,14 @@ function buildPassesMembershipsDisplay(options) {
|
|
|
35613
35739
|
description: options.showDescriptions ? membership.description : null,
|
|
35614
35740
|
priceLabel: formatCommercePrice(membership.price, membership.currency),
|
|
35615
35741
|
intervalLabel: formatInterval(membership.billingInterval),
|
|
35616
|
-
|
|
35742
|
+
action: membership.purchaseAvailability === "purchasable" ? {
|
|
35743
|
+
kind: "purchase",
|
|
35744
|
+
label: options.membershipActionLabel,
|
|
35745
|
+
product: membership
|
|
35746
|
+
} : {
|
|
35747
|
+
kind: "unavailable",
|
|
35748
|
+
label: "Online purchasing is unavailable."
|
|
35749
|
+
}
|
|
35617
35750
|
}));
|
|
35618
35751
|
return {
|
|
35619
35752
|
kind: "passes-memberships",
|
|
@@ -35833,7 +35966,14 @@ const membershipCardDisplaySchema = z.object({
|
|
|
35833
35966
|
description: z.string().nullable(),
|
|
35834
35967
|
priceLabel: z.string(),
|
|
35835
35968
|
intervalLabel: z.string(),
|
|
35836
|
-
|
|
35969
|
+
action: z.discriminatedUnion("kind", [z.object({
|
|
35970
|
+
kind: z.literal("purchase"),
|
|
35971
|
+
label: z.string(),
|
|
35972
|
+
product: purchasablePublicMembershipProductSchema
|
|
35973
|
+
}), z.object({
|
|
35974
|
+
kind: z.literal("unavailable"),
|
|
35975
|
+
label: z.string()
|
|
35976
|
+
})])
|
|
35837
35977
|
});
|
|
35838
35978
|
const passesMembershipsDisplaySchema = z.object({
|
|
35839
35979
|
kind: z.literal("passes-memberships"),
|
|
@@ -38471,7 +38611,7 @@ function withDesignCapability(blockKind, definition, designCapability, designMet
|
|
|
38471
38611
|
if (definition.manifest.name !== blockKind) throw new Error(`System block kind mismatch: expected ${blockKind}, received ${definition.manifest.name}.`);
|
|
38472
38612
|
return {
|
|
38473
38613
|
...definition,
|
|
38474
|
-
designCapability,
|
|
38614
|
+
designCapability: withManifestSectionBackgroundPaints(designCapability, definition.manifest.fields),
|
|
38475
38615
|
designMetadata,
|
|
38476
38616
|
manifest: {
|
|
38477
38617
|
...definition.manifest,
|
|
@@ -39524,6 +39664,16 @@ const builtinTransformDefinitions = [
|
|
|
39524
39664
|
return resolveCalendarReadProfile(asPartialObject(value) ?? {});
|
|
39525
39665
|
}
|
|
39526
39666
|
},
|
|
39667
|
+
{
|
|
39668
|
+
id: "events.calendarBanded",
|
|
39669
|
+
kind: "formatter",
|
|
39670
|
+
summary: "Paint the week-board band only on a section with no background of its own",
|
|
39671
|
+
run(value) {
|
|
39672
|
+
const content = asPartialObject(value) ?? {};
|
|
39673
|
+
const sectionStyles = asPartialObject(content._sectionStyles);
|
|
39674
|
+
return content.banded === true && parseBackgroundContent(sectionStyles?.background) === null;
|
|
39675
|
+
}
|
|
39676
|
+
},
|
|
39527
39677
|
...formattingTransforms,
|
|
39528
39678
|
...layoutTransforms,
|
|
39529
39679
|
...chromeLogoTransforms,
|
|
@@ -40180,6 +40330,7 @@ const CANONICAL_REFUND_PLANNER_ERROR_CODES = [
|
|
|
40180
40330
|
"refund_failed"
|
|
40181
40331
|
];
|
|
40182
40332
|
const CANONICAL_ADMIN_REFUND_FAILURE_CODES = [
|
|
40333
|
+
"refund_blocked_by_live_payment_terms",
|
|
40183
40334
|
...CANONICAL_REFUND_PLANNER_ERROR_CODES,
|
|
40184
40335
|
"payment_intent_not_found",
|
|
40185
40336
|
"stripe_error",
|
|
@@ -40195,6 +40346,7 @@ const CANONICAL_ADMIN_REFUND_FAILURE_CODES = [
|
|
|
40195
40346
|
//#endregion
|
|
40196
40347
|
//#region ../api/src/bookingRefundOutcomes.ts
|
|
40197
40348
|
const STANDARD_LINE_ITEM_REFUND_INVALID_CODES = [
|
|
40349
|
+
"refund_blocked_by_live_payment_terms",
|
|
40198
40350
|
"missing_amount",
|
|
40199
40351
|
"invalid_amount",
|
|
40200
40352
|
"amount_exceeds_remaining",
|
|
@@ -40557,68 +40709,6 @@ function collectText(node) {
|
|
|
40557
40709
|
}
|
|
40558
40710
|
z.enum(["public", "unlisted"], { error: "visibility must be 'public' or 'unlisted'" });
|
|
40559
40711
|
//#endregion
|
|
40560
|
-
//#region ../api/src/bookingPaymentTermSchemas.ts
|
|
40561
|
-
const bookingDepositRefundPolicySchema = z.enum(["refundable", "non_refundable"]);
|
|
40562
|
-
const bookingInstalmentPlanSchema = z.discriminatedUnion("kind", [
|
|
40563
|
-
z.object({
|
|
40564
|
-
kind: z.literal("deposit_plus_one_remainder"),
|
|
40565
|
-
depositAmountCents: z.number().int().nonnegative(),
|
|
40566
|
-
depositRefundability: bookingDepositRefundPolicySchema,
|
|
40567
|
-
remainderDueCount: z.number().int().positive(),
|
|
40568
|
-
intervalUnit: z.enum([
|
|
40569
|
-
"day",
|
|
40570
|
-
"week",
|
|
40571
|
-
"month"
|
|
40572
|
-
])
|
|
40573
|
-
}),
|
|
40574
|
-
z.object({
|
|
40575
|
-
kind: z.literal("deposit_plus_scheduled_instalments"),
|
|
40576
|
-
depositAmountCents: z.number().int().nonnegative(),
|
|
40577
|
-
depositRefundability: bookingDepositRefundPolicySchema,
|
|
40578
|
-
instalmentCount: z.number().int().positive(),
|
|
40579
|
-
intervalCount: z.number().int().positive(),
|
|
40580
|
-
intervalUnit: z.enum([
|
|
40581
|
-
"day",
|
|
40582
|
-
"week",
|
|
40583
|
-
"month"
|
|
40584
|
-
])
|
|
40585
|
-
}),
|
|
40586
|
-
z.object({
|
|
40587
|
-
kind: z.literal("equal_scheduled_instalments"),
|
|
40588
|
-
instalmentCount: z.number().int().positive(),
|
|
40589
|
-
intervalCount: z.number().int().positive(),
|
|
40590
|
-
intervalUnit: z.enum([
|
|
40591
|
-
"day",
|
|
40592
|
-
"week",
|
|
40593
|
-
"month"
|
|
40594
|
-
])
|
|
40595
|
-
})
|
|
40596
|
-
]);
|
|
40597
|
-
const bookingFlexibleBalanceDueDateRuleSchema = z.discriminatedUnion("kind", [z.object({
|
|
40598
|
-
kind: z.literal("relative_to_start_date"),
|
|
40599
|
-
daysBeforeStart: z.number().int().positive()
|
|
40600
|
-
}), z.object({
|
|
40601
|
-
kind: z.literal("fixed_calendar_date"),
|
|
40602
|
-
dueAt: z.string().datetime()
|
|
40603
|
-
})]);
|
|
40604
|
-
const bookingFlexibleBalanceConfigSchema = z.object({
|
|
40605
|
-
upfrontAmountCents: z.number().int().nonnegative(),
|
|
40606
|
-
dueDateRule: bookingFlexibleBalanceDueDateRuleSchema,
|
|
40607
|
-
depositRefundability: bookingDepositRefundPolicySchema
|
|
40608
|
-
});
|
|
40609
|
-
z.discriminatedUnion("kind", [
|
|
40610
|
-
z.object({ kind: z.literal("upfront") }),
|
|
40611
|
-
z.object({ kind: z.literal("deferred_manual") }),
|
|
40612
|
-
z.object({
|
|
40613
|
-
kind: z.literal("instalment_plan"),
|
|
40614
|
-
plan: bookingInstalmentPlanSchema
|
|
40615
|
-
}),
|
|
40616
|
-
z.object({
|
|
40617
|
-
kind: z.literal("flexible_balance"),
|
|
40618
|
-
config: bookingFlexibleBalanceConfigSchema
|
|
40619
|
-
})
|
|
40620
|
-
]);
|
|
40621
|
-
//#endregion
|
|
40622
40712
|
//#region ../api/src/navigationMenuValidation.ts
|
|
40623
40713
|
function hasChildren(item) {
|
|
40624
40714
|
return Array.isArray(item.children) && item.children.length > 0;
|