@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
|
@@ -1984,6 +1984,16 @@ function isRecord$11(value) {
|
|
|
1984
1984
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1985
1985
|
}
|
|
1986
1986
|
//#endregion
|
|
1987
|
+
//#region ../core/src/booking-payment-options.ts
|
|
1988
|
+
/** Automatic instalments and a flexible balance cannot share one booking offer. */
|
|
1989
|
+
function validateBookingPaymentOptionKinds(kinds) {
|
|
1990
|
+
if (kinds.length === 0) return err("no_options");
|
|
1991
|
+
const uniqueKinds = new Set(kinds);
|
|
1992
|
+
if (uniqueKinds.size !== kinds.length) return err("duplicate_kind");
|
|
1993
|
+
if (uniqueKinds.has("instalment_plan") && uniqueKinds.has("flexible_balance")) return err("incompatible_collection_options");
|
|
1994
|
+
return ok(void 0);
|
|
1995
|
+
}
|
|
1996
|
+
//#endregion
|
|
1987
1997
|
//#region ../core/src/booking-time-zone.ts
|
|
1988
1998
|
const TIME_ZONE_VALIDITY_CACHE_LIMIT = 100;
|
|
1989
1999
|
const timeZoneValidityCache = /* @__PURE__ */ new Map();
|
|
@@ -4041,7 +4051,8 @@ const CLIENT_ERROR_REPORT_LIMITS = {
|
|
|
4041
4051
|
stack: 8e3,
|
|
4042
4052
|
digest: 128,
|
|
4043
4053
|
componentStack: 8e3,
|
|
4044
|
-
sourceLocation: 1024
|
|
4054
|
+
sourceLocation: 1024,
|
|
4055
|
+
navigationAgeMs: 6e4
|
|
4045
4056
|
};
|
|
4046
4057
|
const clientErrorEventSchema = z.enum([
|
|
4047
4058
|
"dashboard:route-error",
|
|
@@ -4058,7 +4069,17 @@ z.object({
|
|
|
4058
4069
|
stack: z.string().max(CLIENT_ERROR_REPORT_LIMITS.stack).nullable(),
|
|
4059
4070
|
digest: z.string().max(CLIENT_ERROR_REPORT_LIMITS.digest).nullable(),
|
|
4060
4071
|
componentStack: z.string().max(CLIENT_ERROR_REPORT_LIMITS.componentStack).nullable(),
|
|
4061
|
-
sourceLocation: z.string().max(CLIENT_ERROR_REPORT_LIMITS.sourceLocation).nullable()
|
|
4072
|
+
sourceLocation: z.string().max(CLIENT_ERROR_REPORT_LIMITS.sourceLocation).nullable(),
|
|
4073
|
+
navigation: z.object({
|
|
4074
|
+
fromPathname: z.string().regex(/^\/[^?#]*$/).max(CLIENT_ERROR_REPORT_LIMITS.pathname),
|
|
4075
|
+
toPathname: z.string().regex(/^\/[^?#]*$/).max(CLIENT_ERROR_REPORT_LIMITS.pathname),
|
|
4076
|
+
type: z.enum([
|
|
4077
|
+
"push",
|
|
4078
|
+
"replace",
|
|
4079
|
+
"traverse"
|
|
4080
|
+
]),
|
|
4081
|
+
ageMs: z.number().int().min(0).max(CLIENT_ERROR_REPORT_LIMITS.navigationAgeMs)
|
|
4082
|
+
}).strict().nullable().optional()
|
|
4062
4083
|
}).strict();
|
|
4063
4084
|
({
|
|
4064
4085
|
...SITE_LIFECYCLE_ENDPOINT_DEFINITIONS,
|
|
@@ -4727,6 +4748,68 @@ const paletteValueKeySchema = z.string().transform((value, ctx) => {
|
|
|
4727
4748
|
return z.NEVER;
|
|
4728
4749
|
});
|
|
4729
4750
|
//#endregion
|
|
4751
|
+
//#region ../theme-core/src/palette/utils/opaqueSurfaceColor.ts
|
|
4752
|
+
/** Resolve an opaque colour, compositing alpha against an explicit underlay. */
|
|
4753
|
+
function resolveOpaqueSurfaceHex(reference, palette, underlayReference) {
|
|
4754
|
+
const opaque = resolveConcreteColorHex(reference, palette);
|
|
4755
|
+
if (opaque) return opaque;
|
|
4756
|
+
if (!underlayReference) return null;
|
|
4757
|
+
const underlayHex = resolveConcreteColorHex(underlayReference, palette);
|
|
4758
|
+
if (!underlayHex) return null;
|
|
4759
|
+
const parts = parseColorTokenParts(reference);
|
|
4760
|
+
if (parts.kind === "token" && parts.opacityPercent !== null) {
|
|
4761
|
+
const foregroundHex = normalizePaletteHex(palette[parts.token] ?? "");
|
|
4762
|
+
return foregroundHex ? compositeHex(foregroundHex, underlayHex, parts.opacityPercent / 100) : null;
|
|
4763
|
+
}
|
|
4764
|
+
const rgba = parseRgba(parts.kind === "raw" ? parts.value : reference);
|
|
4765
|
+
return rgba ? compositeHex(rgbToHex(rgba.r, rgba.g, rgba.b), underlayHex, rgba.alpha) : null;
|
|
4766
|
+
}
|
|
4767
|
+
/** Resolve a colour reference only when it is already fully opaque. */
|
|
4768
|
+
function resolveConcreteColorHex(reference, palette) {
|
|
4769
|
+
const literalHex = normalizePaletteHex(reference);
|
|
4770
|
+
if (literalHex) return literalHex;
|
|
4771
|
+
const parts = parseColorTokenParts(reference);
|
|
4772
|
+
if (parts.kind === "token") {
|
|
4773
|
+
if (parts.opacityPercent !== null) return null;
|
|
4774
|
+
return normalizePaletteHex(palette[parts.token] ?? "");
|
|
4775
|
+
}
|
|
4776
|
+
const literal = parts.kind === "raw" ? parts.value : reference;
|
|
4777
|
+
if (literal.toLowerCase() === "black") return "#000000";
|
|
4778
|
+
if (literal.toLowerCase() === "white") return "#ffffff";
|
|
4779
|
+
return normalizePaletteHex(literal);
|
|
4780
|
+
}
|
|
4781
|
+
function compositeHex(foregroundHex, underlayHex, alpha) {
|
|
4782
|
+
const foreground = hexToRgb(foregroundHex);
|
|
4783
|
+
const underlay = hexToRgb(underlayHex);
|
|
4784
|
+
const channel = (foregroundValue, underlayValue) => Math.round(foregroundValue * alpha + underlayValue * (1 - alpha));
|
|
4785
|
+
return rgbToHex(channel(foreground.r, underlay.r), channel(foreground.g, underlay.g), channel(foreground.b, underlay.b));
|
|
4786
|
+
}
|
|
4787
|
+
function parseRgba(value) {
|
|
4788
|
+
const match = value.trim().match(/^rgba?\(\s*([\d.]+)(?:\s*,\s*|\s+)([\d.]+)(?:\s*,\s*|\s+)([\d.]+)(?:\s*(?:,|\/)\s*([\d.]+%?))?\s*\)$/i);
|
|
4789
|
+
if (!match) return null;
|
|
4790
|
+
const [, rSource, gSource, bSource] = match;
|
|
4791
|
+
if (!rSource || !gSource || !bSource) return null;
|
|
4792
|
+
const r = Number(rSource);
|
|
4793
|
+
const g = Number(gSource);
|
|
4794
|
+
const b = Number(bSource);
|
|
4795
|
+
const alpha = parseAlpha(match[4]);
|
|
4796
|
+
if (alpha === null || !isRgbChannel(r) || !isRgbChannel(g) || !isRgbChannel(b)) return null;
|
|
4797
|
+
return {
|
|
4798
|
+
r,
|
|
4799
|
+
g,
|
|
4800
|
+
b,
|
|
4801
|
+
alpha
|
|
4802
|
+
};
|
|
4803
|
+
}
|
|
4804
|
+
function parseAlpha(source) {
|
|
4805
|
+
if (!source) return 1;
|
|
4806
|
+
const value = source.endsWith("%") ? Number(source.slice(0, -1)) / 100 : Number(source);
|
|
4807
|
+
return Number.isFinite(value) && value >= 0 && value <= 1 ? value : null;
|
|
4808
|
+
}
|
|
4809
|
+
function isRgbChannel(value) {
|
|
4810
|
+
return Number.isFinite(value) && value >= 0 && value <= 255;
|
|
4811
|
+
}
|
|
4812
|
+
//#endregion
|
|
4730
4813
|
//#region ../theme-core/src/site-styles/styleTags.ts
|
|
4731
4814
|
/**
|
|
4732
4815
|
* Descriptive style-axis metadata for button personalities and palette
|
|
@@ -7335,68 +7418,6 @@ function interpolateHex(startHex, endHex, position) {
|
|
|
7335
7418
|
const channel = (from, to) => Math.round(from + (to - from) * position).toString(16).padStart(2, "0");
|
|
7336
7419
|
return `#${channel(start.r, end.r)}${channel(start.g, end.g)}${channel(start.b, end.b)}`;
|
|
7337
7420
|
}
|
|
7338
|
-
//#endregion
|
|
7339
|
-
//#region ../theme-core/src/palette/utils/opaqueSurfaceColor.ts
|
|
7340
|
-
/** Resolve an opaque colour, compositing alpha against an explicit underlay. */
|
|
7341
|
-
function resolveOpaqueSurfaceHex(reference, palette, underlayReference) {
|
|
7342
|
-
const opaque = resolveConcreteColorHex(reference, palette);
|
|
7343
|
-
if (opaque) return opaque;
|
|
7344
|
-
if (!underlayReference) return null;
|
|
7345
|
-
const underlayHex = resolveConcreteColorHex(underlayReference, palette);
|
|
7346
|
-
if (!underlayHex) return null;
|
|
7347
|
-
const parts = parseColorTokenParts(reference);
|
|
7348
|
-
if (parts.kind === "token" && parts.opacityPercent !== null) {
|
|
7349
|
-
const foregroundHex = normalizePaletteHex(palette[parts.token] ?? "");
|
|
7350
|
-
return foregroundHex ? compositeHex(foregroundHex, underlayHex, parts.opacityPercent / 100) : null;
|
|
7351
|
-
}
|
|
7352
|
-
const rgba = parseRgba(parts.kind === "raw" ? parts.value : reference);
|
|
7353
|
-
return rgba ? compositeHex(rgbToHex(rgba.r, rgba.g, rgba.b), underlayHex, rgba.alpha) : null;
|
|
7354
|
-
}
|
|
7355
|
-
/** Resolve a colour reference only when it is already fully opaque. */
|
|
7356
|
-
function resolveConcreteColorHex(reference, palette) {
|
|
7357
|
-
const literalHex = normalizePaletteHex(reference);
|
|
7358
|
-
if (literalHex) return literalHex;
|
|
7359
|
-
const parts = parseColorTokenParts(reference);
|
|
7360
|
-
if (parts.kind === "token") {
|
|
7361
|
-
if (parts.opacityPercent !== null) return null;
|
|
7362
|
-
return normalizePaletteHex(palette[parts.token] ?? "");
|
|
7363
|
-
}
|
|
7364
|
-
const literal = parts.kind === "raw" ? parts.value : reference;
|
|
7365
|
-
if (literal.toLowerCase() === "black") return "#000000";
|
|
7366
|
-
if (literal.toLowerCase() === "white") return "#ffffff";
|
|
7367
|
-
return normalizePaletteHex(literal);
|
|
7368
|
-
}
|
|
7369
|
-
function compositeHex(foregroundHex, underlayHex, alpha) {
|
|
7370
|
-
const foreground = hexToRgb(foregroundHex);
|
|
7371
|
-
const underlay = hexToRgb(underlayHex);
|
|
7372
|
-
const channel = (foregroundValue, underlayValue) => Math.round(foregroundValue * alpha + underlayValue * (1 - alpha));
|
|
7373
|
-
return rgbToHex(channel(foreground.r, underlay.r), channel(foreground.g, underlay.g), channel(foreground.b, underlay.b));
|
|
7374
|
-
}
|
|
7375
|
-
function parseRgba(value) {
|
|
7376
|
-
const match = value.trim().match(/^rgba?\(\s*([\d.]+)(?:\s*,\s*|\s+)([\d.]+)(?:\s*,\s*|\s+)([\d.]+)(?:\s*(?:,|\/)\s*([\d.]+%?))?\s*\)$/i);
|
|
7377
|
-
if (!match) return null;
|
|
7378
|
-
const [, rSource, gSource, bSource] = match;
|
|
7379
|
-
if (!rSource || !gSource || !bSource) return null;
|
|
7380
|
-
const r = Number(rSource);
|
|
7381
|
-
const g = Number(gSource);
|
|
7382
|
-
const b = Number(bSource);
|
|
7383
|
-
const alpha = parseAlpha(match[4]);
|
|
7384
|
-
if (alpha === null || !isRgbChannel(r) || !isRgbChannel(g) || !isRgbChannel(b)) return null;
|
|
7385
|
-
return {
|
|
7386
|
-
r,
|
|
7387
|
-
g,
|
|
7388
|
-
b,
|
|
7389
|
-
alpha
|
|
7390
|
-
};
|
|
7391
|
-
}
|
|
7392
|
-
function parseAlpha(source) {
|
|
7393
|
-
if (!source) return 1;
|
|
7394
|
-
const value = source.endsWith("%") ? Number(source.slice(0, -1)) / 100 : Number(source);
|
|
7395
|
-
return Number.isFinite(value) && value >= 0 && value <= 1 ? value : null;
|
|
7396
|
-
}
|
|
7397
|
-
function isRgbChannel(value) {
|
|
7398
|
-
return Number.isFinite(value) && value >= 0 && value <= 255;
|
|
7399
|
-
}
|
|
7400
7421
|
/**
|
|
7401
7422
|
* Derive the hover foreground that belongs with a resolved resting foreground.
|
|
7402
7423
|
*
|
|
@@ -7962,6 +7983,15 @@ function fallbackBackground(fallbackToken, palette) {
|
|
|
7962
7983
|
reason: "unresolvable-colour"
|
|
7963
7984
|
};
|
|
7964
7985
|
}
|
|
7986
|
+
/** Every role's contextual styles against one proven solid surface. */
|
|
7987
|
+
function knownSurfaceButtonContextStyles(input) {
|
|
7988
|
+
return Object.fromEntries(VARIANT_ROLES.flatMap((role) => Object.entries(contextualButtonSurfaceStyles(resolveContextualButtonRole({
|
|
7989
|
+
role,
|
|
7990
|
+
buttonSystem: input.buttonSystem,
|
|
7991
|
+
palette: input.palette,
|
|
7992
|
+
surface: input.surface
|
|
7993
|
+
})))));
|
|
7994
|
+
}
|
|
7965
7995
|
function resolveContextualButtonRole(input) {
|
|
7966
7996
|
const requested = findVariant(input.buttonSystem, input.role);
|
|
7967
7997
|
if (!requested) return {
|
|
@@ -10961,6 +10991,18 @@ function brandNonEmptyString(value, label) {
|
|
|
10961
10991
|
if (value.length === 0) throw new Error(`${label} must be a non-empty string.`);
|
|
10962
10992
|
return value;
|
|
10963
10993
|
}
|
|
10994
|
+
/**
|
|
10995
|
+
* What a block's own section background field admits, read from its manifest.
|
|
10996
|
+
* A site style's surface rule may paint a gradient or a photo; a block whose
|
|
10997
|
+
* `_sectionStyles.background` refuses that paint would be dropped at render
|
|
10998
|
+
* admission, so the runtime compiler paints the surface's colour equivalent
|
|
10999
|
+
* instead (see `compileSectionBackground`).
|
|
11000
|
+
*/
|
|
11001
|
+
const sectionBackgroundPaintValues = [
|
|
11002
|
+
"color",
|
|
11003
|
+
"gradient",
|
|
11004
|
+
"image"
|
|
11005
|
+
];
|
|
10964
11006
|
const plainFrame = { kind: "plain" };
|
|
10965
11007
|
function panelFrame(treatment) {
|
|
10966
11008
|
return {
|
|
@@ -11045,6 +11087,7 @@ function defineBlockDesignCapability(capability) {
|
|
|
11045
11087
|
...capability,
|
|
11046
11088
|
kind: "designed",
|
|
11047
11089
|
looks: capability.looks ?? "not-applicable",
|
|
11090
|
+
sectionBackgroundPaints: admittedSectionBackgroundPaints(capability.sectionBackgroundPaints),
|
|
11048
11091
|
sectionHeights: capability.sectionHeights ?? ["default"],
|
|
11049
11092
|
imageSurfaceTreatments: capability.imageSurfaceTreatments ?? ["none"],
|
|
11050
11093
|
imageSurfaceMotions: capability.imageSurfaceMotions ?? ["static"],
|
|
@@ -11057,6 +11100,10 @@ function defineBlockDesignCapability(capability) {
|
|
|
11057
11100
|
...capability.accordionIconSets ? { accordionIconSets: capability.accordionIconSets } : {}
|
|
11058
11101
|
};
|
|
11059
11102
|
}
|
|
11103
|
+
/** Absent means the block admits every section background paint. */
|
|
11104
|
+
function admittedSectionBackgroundPaints(paints) {
|
|
11105
|
+
return paints ?? sectionBackgroundPaintValues;
|
|
11106
|
+
}
|
|
11060
11107
|
//#endregion
|
|
11061
11108
|
//#region ../theme-core/src/site-styles/logoBranding.ts
|
|
11062
11109
|
const logoTextConfidenceValues = [
|
|
@@ -11335,12 +11382,22 @@ const mediaPresentationSchema = commonSchema.extend({
|
|
|
11335
11382
|
const boxBackgroundSchema = z.discriminatedUnion("type", [
|
|
11336
11383
|
commonSchema.extend({
|
|
11337
11384
|
type: z.literal("color"),
|
|
11338
|
-
color: tokenOrCssColorValueSchema.nullable().optional()
|
|
11385
|
+
color: tokenOrCssColorValueSchema.nullable().optional(),
|
|
11386
|
+
/**
|
|
11387
|
+
* Compiler-owned. The scrim a site-style colour surface lays over media
|
|
11388
|
+
* that replaces it (a Look's band meeting an authored photo), sized so the
|
|
11389
|
+
* surface's foreground stays legible over any pixel. A colour background
|
|
11390
|
+
* never draws it itself; `resolveSectionBackground` moves it onto the
|
|
11391
|
+
* merged media background as its overlay.
|
|
11392
|
+
*/
|
|
11393
|
+
mediaScrim: boxBackgroundOverlaySchema.nullable().optional()
|
|
11339
11394
|
}),
|
|
11340
11395
|
commonSchema.extend({
|
|
11341
11396
|
type: z.literal("gradient"),
|
|
11342
11397
|
gradient: z.string().nullable().optional(),
|
|
11343
|
-
gradientPresetId: z.string().min(1).nullable().optional()
|
|
11398
|
+
gradientPresetId: z.string().min(1).nullable().optional(),
|
|
11399
|
+
/** Compiler-owned; see the colour branch. */
|
|
11400
|
+
mediaScrim: boxBackgroundOverlaySchema.nullable().optional()
|
|
11344
11401
|
}),
|
|
11345
11402
|
mediaPresentationSchema.extend({
|
|
11346
11403
|
type: z.literal("image"),
|
|
@@ -12138,6 +12195,17 @@ function defineBlockAppearancePreset(preset) {
|
|
|
12138
12195
|
* (`defineBlockAppearancePreset` defaults it to `none`) — the block's own
|
|
12139
12196
|
* composition still governs how its items look. The per-Look rationale for the card-bearing ones lives
|
|
12140
12197
|
* in `.project/plans/1297-card-role-contract-site-styles-own-card-surfaces/mapping-table.md`.
|
|
12198
|
+
*
|
|
12199
|
+
* A Look asking for the `alternative` or `open` role is offered only where the
|
|
12200
|
+
* site style defines that role (`siteStyleSupportsLookDesign`), so two Looks
|
|
12201
|
+
* that differ only in role are distinct wherever both are offered.
|
|
12202
|
+
*
|
|
12203
|
+
* Retiring a Look is removing its entry. A stored pin to a retired id reads as
|
|
12204
|
+
* an unsupported pin in the page design editor model and renders the block's
|
|
12205
|
+
* auto Look, the same path an unavailable Look takes. Duplicates retired in
|
|
12206
|
+
* the 2026-09 Look audit: `feature-cards-soft-panels`,
|
|
12207
|
+
* `feature-cards-photo-tiles`, `feature-cards-editorial-pathways`,
|
|
12208
|
+
* `testimonials-default-cards`.
|
|
12141
12209
|
*/
|
|
12142
12210
|
const brandScrimOptionGroups = [{
|
|
12143
12211
|
id: "image-surface-treatment",
|
|
@@ -12522,16 +12590,6 @@ defineBlockAppearancePreset({
|
|
|
12522
12590
|
treatment: "framed-programme"
|
|
12523
12591
|
}
|
|
12524
12592
|
}
|
|
12525
|
-
}), defineBlockAppearancePreset({
|
|
12526
|
-
id: "feature-cards-soft-panels",
|
|
12527
|
-
target: "feature-cards",
|
|
12528
|
-
label: "Soft tinted panels",
|
|
12529
|
-
blockKinds: ["block.feature-cards"],
|
|
12530
|
-
design: {
|
|
12531
|
-
sectionSurface: "base",
|
|
12532
|
-
contentFrame: plainFrame,
|
|
12533
|
-
cardRole: "alternative"
|
|
12534
|
-
}
|
|
12535
12593
|
}), defineBlockAppearancePreset({
|
|
12536
12594
|
id: "feature-cards-editorial-diptych",
|
|
12537
12595
|
target: "feature-cards",
|
|
@@ -12543,27 +12601,6 @@ defineBlockAppearancePreset({
|
|
|
12543
12601
|
contentFrame: plainFrame,
|
|
12544
12602
|
cardRole: "default"
|
|
12545
12603
|
}
|
|
12546
|
-
}), defineBlockAppearancePreset({
|
|
12547
|
-
id: "feature-cards-editorial-pathways",
|
|
12548
|
-
target: "feature-cards",
|
|
12549
|
-
label: "Editorial pathways",
|
|
12550
|
-
blockKinds: ["block.feature-cards"],
|
|
12551
|
-
constraints: { layoutVariantKeys: ["editorial-pathways"] },
|
|
12552
|
-
design: {
|
|
12553
|
-
sectionSurface: "base",
|
|
12554
|
-
contentFrame: plainFrame,
|
|
12555
|
-
cardRole: "default"
|
|
12556
|
-
}
|
|
12557
|
-
}), defineBlockAppearancePreset({
|
|
12558
|
-
id: "feature-cards-photo-tiles",
|
|
12559
|
-
target: "feature-cards",
|
|
12560
|
-
label: "Photo tiles",
|
|
12561
|
-
blockKinds: ["block.feature-cards"],
|
|
12562
|
-
design: {
|
|
12563
|
-
sectionSurface: "base",
|
|
12564
|
-
contentFrame: plainFrame,
|
|
12565
|
-
cardRole: "default"
|
|
12566
|
-
}
|
|
12567
12604
|
}), defineBlockAppearancePreset({
|
|
12568
12605
|
id: "events-lined-panel",
|
|
12569
12606
|
target: "events",
|
|
@@ -12652,16 +12689,6 @@ defineBlockAppearancePreset({
|
|
|
12652
12689
|
contentFrame: panelFrame("raised"),
|
|
12653
12690
|
cardRole: "default"
|
|
12654
12691
|
}
|
|
12655
|
-
}), defineBlockAppearancePreset({
|
|
12656
|
-
id: "testimonials-default-cards",
|
|
12657
|
-
target: "testimonials",
|
|
12658
|
-
label: "Default cards",
|
|
12659
|
-
blockKinds: ["block.testimonials"],
|
|
12660
|
-
design: {
|
|
12661
|
-
sectionSurface: "base",
|
|
12662
|
-
contentFrame: plainFrame,
|
|
12663
|
-
cardRole: "default"
|
|
12664
|
-
}
|
|
12665
12692
|
}), defineBlockAppearancePreset({
|
|
12666
12693
|
id: "testimonials-statement-cards",
|
|
12667
12694
|
target: "testimonials",
|
|
@@ -16143,9 +16170,7 @@ const curatedSiteStyles = [
|
|
|
16143
16170
|
recommendedAppearancePresetIds: [
|
|
16144
16171
|
"hero-split-editorial",
|
|
16145
16172
|
"intro-portrait-bio",
|
|
16146
|
-
"feature-cards-
|
|
16147
|
-
"feature-cards-editorial-columns",
|
|
16148
|
-
"feature-cards-photo-tiles",
|
|
16173
|
+
"feature-cards-bold-colors",
|
|
16149
16174
|
"testimonials-non-carded",
|
|
16150
16175
|
"faq-contained-help",
|
|
16151
16176
|
"contact-form-panel"
|
|
@@ -16789,8 +16814,7 @@ const curatedSiteStyles = [
|
|
|
16789
16814
|
"intro-portrait-bio",
|
|
16790
16815
|
"feature-cards-editorial-columns",
|
|
16791
16816
|
"feature-cards-editorial-diptych",
|
|
16792
|
-
"feature-cards-
|
|
16793
|
-
"feature-cards-soft-panels",
|
|
16817
|
+
"feature-cards-bold-colors",
|
|
16794
16818
|
"events-lined-panel",
|
|
16795
16819
|
"testimonials-non-carded",
|
|
16796
16820
|
"faq-base-accordion",
|
|
@@ -18596,6 +18620,34 @@ function withLookCapability(declaration) {
|
|
|
18596
18620
|
}
|
|
18597
18621
|
};
|
|
18598
18622
|
}
|
|
18623
|
+
/**
|
|
18624
|
+
* The section background paints a block's own `_sectionStyles.background`
|
|
18625
|
+
* field admits, read from its manifest so the design capability cannot drift
|
|
18626
|
+
* from what render admission accepts. A block without the field admits none.
|
|
18627
|
+
*/
|
|
18628
|
+
function sectionBackgroundPaintsOfFields(fields) {
|
|
18629
|
+
const sectionStyles = fields.find((field) => field.id === "_sectionStyles");
|
|
18630
|
+
if (!sectionStyles || sectionStyles.type !== "modal") return [];
|
|
18631
|
+
const background = sectionStyles.schema.fields.find((field) => field.id === "background");
|
|
18632
|
+
if (!background || background.type !== "tabGroup") return [];
|
|
18633
|
+
const tabIds = new Set(background.tabs.map((tab) => tab.id));
|
|
18634
|
+
return [
|
|
18635
|
+
"color",
|
|
18636
|
+
"gradient",
|
|
18637
|
+
"image"
|
|
18638
|
+
].filter((paint) => tabIds.has(paint));
|
|
18639
|
+
}
|
|
18640
|
+
/** Pins a designed capability's section background paints to the block's manifest. */
|
|
18641
|
+
function withManifestSectionBackgroundPaints(declaration, fields) {
|
|
18642
|
+
if (declaration.kind !== "capability") return declaration;
|
|
18643
|
+
return {
|
|
18644
|
+
kind: "capability",
|
|
18645
|
+
capability: {
|
|
18646
|
+
...declaration.capability,
|
|
18647
|
+
sectionBackgroundPaints: sectionBackgroundPaintsOfFields(fields)
|
|
18648
|
+
}
|
|
18649
|
+
};
|
|
18650
|
+
}
|
|
18599
18651
|
function declareNoBlockDesignCapability(reason) {
|
|
18600
18652
|
return {
|
|
18601
18653
|
kind: "none",
|
|
@@ -20458,15 +20510,11 @@ function resolveContextualButtonStyles(background, foreground, context, options)
|
|
|
20458
20510
|
if (!paletteCache.has(palette)) paletteCache.set(palette, surfaceCache);
|
|
20459
20511
|
const cached = surfaceCache.get(cacheKey);
|
|
20460
20512
|
if (cached) return cached;
|
|
20461
|
-
const styles =
|
|
20462
|
-
|
|
20463
|
-
|
|
20464
|
-
|
|
20465
|
-
|
|
20466
|
-
surface: surface.surface
|
|
20467
|
-
});
|
|
20468
|
-
return Object.entries(contextualButtonSurfaceStyles(resolution));
|
|
20469
|
-
}));
|
|
20513
|
+
const styles = knownSurfaceButtonContextStyles({
|
|
20514
|
+
surface: surface.surface,
|
|
20515
|
+
palette,
|
|
20516
|
+
buttonSystem
|
|
20517
|
+
});
|
|
20470
20518
|
surfaceCache.set(cacheKey, styles);
|
|
20471
20519
|
return styles;
|
|
20472
20520
|
}
|
|
@@ -27154,6 +27202,20 @@ const footerEngagement = stack({
|
|
|
27154
27202
|
...footerSpamProtectionBinding
|
|
27155
27203
|
}), [], when("module.engagement.kind", { equals: "mailing-list" }))
|
|
27156
27204
|
], when("module.kind", { equals: "engagement" }));
|
|
27205
|
+
const platformAttribution = el("div", {
|
|
27206
|
+
className: "rb-caption",
|
|
27207
|
+
"data-site-attribution": "macadamia"
|
|
27208
|
+
}, [
|
|
27209
|
+
text({ as: "span" }, bind("module.lead")),
|
|
27210
|
+
text({
|
|
27211
|
+
as: "span",
|
|
27212
|
+
value: " "
|
|
27213
|
+
}),
|
|
27214
|
+
link({
|
|
27215
|
+
href: { $bind: { from: "module.link.href" } },
|
|
27216
|
+
className: "footer-nav-link rb-caption transition-theme-standard"
|
|
27217
|
+
}, [text({ as: "span" }, bind("module.link.label"))])
|
|
27218
|
+
], when("module.kind", { equals: "attribution" }));
|
|
27157
27219
|
const footerGroup = stack({
|
|
27158
27220
|
gap: "md",
|
|
27159
27221
|
align: "stretch",
|
|
@@ -27183,6 +27245,7 @@ const footerGroup = stack({
|
|
|
27183
27245
|
hours,
|
|
27184
27246
|
socials,
|
|
27185
27247
|
footerEngagement,
|
|
27248
|
+
platformAttribution,
|
|
27186
27249
|
stack({ className: "rb-w-full" }, [authoredCopy], when("module.kind", { equals: "supporting-text" })),
|
|
27187
27250
|
stack({ className: "rb-w-full rb-lg-col-span-3" }, [authoredCopy], when("module.kind", { equals: "legal" }))
|
|
27188
27251
|
], repeat("group.modules", "module"))], repeat("region.groups", "group"));
|
|
@@ -29121,68 +29184,115 @@ const RichTextDocSchema = z.object({
|
|
|
29121
29184
|
content: z.array(TipTapNodeSchema)
|
|
29122
29185
|
}).strict();
|
|
29123
29186
|
//#endregion
|
|
29124
|
-
//#region ../
|
|
29125
|
-
const
|
|
29126
|
-
const
|
|
29127
|
-
|
|
29128
|
-
|
|
29129
|
-
|
|
29130
|
-
|
|
29131
|
-
|
|
29132
|
-
intervalUnit: z.enum([
|
|
29133
|
-
"day",
|
|
29134
|
-
"week",
|
|
29135
|
-
"month"
|
|
29136
|
-
])
|
|
29137
|
-
}),
|
|
29138
|
-
z.object({
|
|
29139
|
-
kind: z.literal("deposit_plus_scheduled_instalments"),
|
|
29140
|
-
depositAmountCents: z.number().int().min(0),
|
|
29141
|
-
depositRefundability: bookingDepositRefundPolicySchema$1,
|
|
29142
|
-
instalmentCount: z.number().int().positive(),
|
|
29143
|
-
intervalCount: z.number().int().positive(),
|
|
29144
|
-
intervalUnit: z.enum([
|
|
29145
|
-
"day",
|
|
29146
|
-
"week",
|
|
29147
|
-
"month"
|
|
29148
|
-
])
|
|
29149
|
-
}),
|
|
29150
|
-
z.object({
|
|
29151
|
-
kind: z.literal("equal_scheduled_instalments"),
|
|
29152
|
-
instalmentCount: z.number().int().positive(),
|
|
29153
|
-
intervalCount: z.number().int().positive(),
|
|
29154
|
-
intervalUnit: z.enum([
|
|
29155
|
-
"day",
|
|
29156
|
-
"week",
|
|
29157
|
-
"month"
|
|
29158
|
-
])
|
|
29159
|
-
})
|
|
29187
|
+
//#region ../core/src/booking-payment-schemas.ts
|
|
29188
|
+
const stripObject = (shape) => z.object(shape);
|
|
29189
|
+
const strictObject = (shape) => z.strictObject(shape);
|
|
29190
|
+
const depositRefundPolicySchema = z.enum(["refundable", "non_refundable"]);
|
|
29191
|
+
const intervalUnitSchema = z.enum([
|
|
29192
|
+
"day",
|
|
29193
|
+
"week",
|
|
29194
|
+
"month"
|
|
29160
29195
|
]);
|
|
29161
|
-
const
|
|
29162
|
-
|
|
29163
|
-
|
|
29164
|
-
|
|
29165
|
-
|
|
29166
|
-
|
|
29167
|
-
|
|
29168
|
-
|
|
29169
|
-
|
|
29170
|
-
|
|
29171
|
-
|
|
29172
|
-
|
|
29173
|
-
|
|
29174
|
-
|
|
29175
|
-
|
|
29176
|
-
|
|
29177
|
-
|
|
29178
|
-
|
|
29179
|
-
|
|
29180
|
-
|
|
29181
|
-
|
|
29182
|
-
|
|
29183
|
-
|
|
29184
|
-
|
|
29185
|
-
|
|
29196
|
+
const nonNegativeIntegerSchema = z.number().int().nonnegative();
|
|
29197
|
+
const positiveIntegerSchema = z.number().int().positive();
|
|
29198
|
+
function createInstalmentPlanSchema(object) {
|
|
29199
|
+
return z.discriminatedUnion("kind", [
|
|
29200
|
+
object({
|
|
29201
|
+
kind: z.literal("deposit_plus_one_remainder"),
|
|
29202
|
+
depositAmountCents: nonNegativeIntegerSchema,
|
|
29203
|
+
depositRefundability: depositRefundPolicySchema,
|
|
29204
|
+
remainderDueCount: positiveIntegerSchema,
|
|
29205
|
+
intervalUnit: intervalUnitSchema
|
|
29206
|
+
}),
|
|
29207
|
+
object({
|
|
29208
|
+
kind: z.literal("deposit_plus_scheduled_instalments"),
|
|
29209
|
+
depositAmountCents: nonNegativeIntegerSchema,
|
|
29210
|
+
depositRefundability: depositRefundPolicySchema,
|
|
29211
|
+
instalmentCount: positiveIntegerSchema,
|
|
29212
|
+
intervalCount: positiveIntegerSchema,
|
|
29213
|
+
intervalUnit: intervalUnitSchema
|
|
29214
|
+
}),
|
|
29215
|
+
object({
|
|
29216
|
+
kind: z.literal("equal_scheduled_instalments"),
|
|
29217
|
+
instalmentCount: positiveIntegerSchema,
|
|
29218
|
+
intervalCount: positiveIntegerSchema,
|
|
29219
|
+
intervalUnit: intervalUnitSchema
|
|
29220
|
+
})
|
|
29221
|
+
]);
|
|
29222
|
+
}
|
|
29223
|
+
function createFlexibleBalanceSchemas(object) {
|
|
29224
|
+
const dueDateRule = z.discriminatedUnion("kind", [object({
|
|
29225
|
+
kind: z.literal("relative_to_start_date"),
|
|
29226
|
+
daysBeforeStart: positiveIntegerSchema
|
|
29227
|
+
}), object({
|
|
29228
|
+
kind: z.literal("fixed_calendar_date"),
|
|
29229
|
+
dueAt: z.string().datetime()
|
|
29230
|
+
})]);
|
|
29231
|
+
return {
|
|
29232
|
+
dueDateRule,
|
|
29233
|
+
config: object({
|
|
29234
|
+
upfrontAmountCents: nonNegativeIntegerSchema,
|
|
29235
|
+
dueDateRule,
|
|
29236
|
+
depositRefundability: depositRefundPolicySchema
|
|
29237
|
+
})
|
|
29238
|
+
};
|
|
29239
|
+
}
|
|
29240
|
+
const paymentOptionKindsMessages = {
|
|
29241
|
+
no_options: "Choose at least one way for customers to pay.",
|
|
29242
|
+
duplicate_kind: "Choose each payment option only once.",
|
|
29243
|
+
incompatible_collection_options: "Offer instalments or a deposit with the rest paid later, but not both."
|
|
29244
|
+
};
|
|
29245
|
+
function buildBookingPaymentOptionSchemas(object) {
|
|
29246
|
+
const instalmentPlan = createInstalmentPlanSchema(object);
|
|
29247
|
+
const flexibleBalance = createFlexibleBalanceSchemas(object);
|
|
29248
|
+
const paymentCollectionOption = z.discriminatedUnion("kind", [
|
|
29249
|
+
object({ kind: z.literal("upfront") }),
|
|
29250
|
+
object({ kind: z.literal("deferred_manual") }),
|
|
29251
|
+
object({
|
|
29252
|
+
kind: z.literal("instalment_plan"),
|
|
29253
|
+
plan: instalmentPlan
|
|
29254
|
+
}),
|
|
29255
|
+
object({
|
|
29256
|
+
kind: z.literal("flexible_balance"),
|
|
29257
|
+
config: flexibleBalance.config
|
|
29258
|
+
})
|
|
29259
|
+
]);
|
|
29260
|
+
const paymentTerms = object({ allowedOptions: z.array(paymentCollectionOption) }).superRefine(({ allowedOptions }, ctx) => {
|
|
29261
|
+
const result = validateBookingPaymentOptionKinds(allowedOptions.map(({ kind }) => kind));
|
|
29262
|
+
if (!result.ok) ctx.addIssue({
|
|
29263
|
+
code: "custom",
|
|
29264
|
+
path: ["allowedOptions"],
|
|
29265
|
+
message: paymentOptionKindsMessages[result.error]
|
|
29266
|
+
});
|
|
29267
|
+
});
|
|
29268
|
+
const paymentOptionsChoice = z.discriminatedUnion("source", [z.strictObject({ source: z.literal("default") }), z.strictObject({
|
|
29269
|
+
source: z.literal("custom"),
|
|
29270
|
+
paymentTerms
|
|
29271
|
+
})]);
|
|
29272
|
+
return {
|
|
29273
|
+
depositRefundPolicy: depositRefundPolicySchema,
|
|
29274
|
+
instalmentPlan,
|
|
29275
|
+
flexibleBalanceDueDateRule: flexibleBalance.dueDateRule,
|
|
29276
|
+
flexibleBalanceConfig: flexibleBalance.config,
|
|
29277
|
+
paymentCollectionOption,
|
|
29278
|
+
paymentTerms,
|
|
29279
|
+
paymentOptionsChoice
|
|
29280
|
+
};
|
|
29281
|
+
}
|
|
29282
|
+
function createBookingPaymentOptionSchemas(mode) {
|
|
29283
|
+
return mode === "strict" ? buildBookingPaymentOptionSchemas(strictObject) : buildBookingPaymentOptionSchemas(stripObject);
|
|
29284
|
+
}
|
|
29285
|
+
const bookingPaymentOptionSchemas = createBookingPaymentOptionSchemas("strip");
|
|
29286
|
+
bookingPaymentOptionSchemas.depositRefundPolicy;
|
|
29287
|
+
bookingPaymentOptionSchemas.instalmentPlan;
|
|
29288
|
+
bookingPaymentOptionSchemas.flexibleBalanceDueDateRule;
|
|
29289
|
+
bookingPaymentOptionSchemas.flexibleBalanceConfig;
|
|
29290
|
+
bookingPaymentOptionSchemas.paymentCollectionOption;
|
|
29291
|
+
const bookingPaymentTermsSchema = bookingPaymentOptionSchemas.paymentTerms;
|
|
29292
|
+
bookingPaymentOptionSchemas.paymentOptionsChoice;
|
|
29293
|
+
//#endregion
|
|
29294
|
+
//#region ../blocks/src/system/blocks/shared/bookingPaymentTerms.ts
|
|
29295
|
+
const blockBookingPaymentTermsSchema = bookingPaymentTermsSchema;
|
|
29186
29296
|
//#endregion
|
|
29187
29297
|
//#region ../blocks/src/system/blocks/shared/bookingConsent.ts
|
|
29188
29298
|
const blockBookingConsentSchema = z.object({
|
|
@@ -29784,7 +29894,7 @@ const publicPassProductCollectionSchema = z.object({ passes: z.array(publicPassP
|
|
|
29784
29894
|
/**
|
|
29785
29895
|
* Public membership product for shop display
|
|
29786
29896
|
*/
|
|
29787
|
-
const
|
|
29897
|
+
const publicMembershipProductFields = {
|
|
29788
29898
|
id: z.string(),
|
|
29789
29899
|
name: z.string(),
|
|
29790
29900
|
description: z.string().nullable(),
|
|
@@ -29793,7 +29903,16 @@ const publicMembershipProductSchema = z.object({
|
|
|
29793
29903
|
billingInterval: z.enum(["month", "year"]),
|
|
29794
29904
|
eligibleCategoryIds: z.array(z.string()),
|
|
29795
29905
|
eligibleCategoryNames: z.array(z.string())
|
|
29906
|
+
};
|
|
29907
|
+
const purchasablePublicMembershipProductSchema = z.object({
|
|
29908
|
+
...publicMembershipProductFields,
|
|
29909
|
+
purchaseAvailability: z.literal("purchasable")
|
|
29796
29910
|
});
|
|
29911
|
+
const publicMembershipProductSchema = z.discriminatedUnion("purchaseAvailability", [purchasablePublicMembershipProductSchema, z.object({
|
|
29912
|
+
...publicMembershipProductFields,
|
|
29913
|
+
purchaseAvailability: z.literal("display_only"),
|
|
29914
|
+
unavailabilityReason: z.literal("online_payments_unavailable")
|
|
29915
|
+
})]);
|
|
29797
29916
|
const publicMembershipProductCollectionSchema = z.object({ memberships: z.array(publicMembershipProductSchema) });
|
|
29798
29917
|
//#endregion
|
|
29799
29918
|
//#region ../blocks/src/system/blocks/event-registration.shared.ts
|
|
@@ -29993,14 +30112,18 @@ const calendarTabViewsSchema = z.enum([
|
|
|
29993
30112
|
* @param needsPaymentStep - Whether user must complete payment method selection
|
|
29994
30113
|
* @returns Array of wizard steps to display
|
|
29995
30114
|
*/
|
|
29996
|
-
function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep) {
|
|
30115
|
+
function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep, paymentActive = false) {
|
|
29997
30116
|
const baseSteps = hasPreSelectedContext ? ["select-tickets", "enter-details"] : [
|
|
29998
30117
|
"select-event",
|
|
29999
30118
|
"select-tickets",
|
|
30000
30119
|
"enter-details"
|
|
30001
30120
|
];
|
|
30002
30121
|
if (!needsPaymentStep) return baseSteps;
|
|
30003
|
-
return [
|
|
30122
|
+
return paymentActive ? [
|
|
30123
|
+
...baseSteps,
|
|
30124
|
+
"select-payment",
|
|
30125
|
+
"payment"
|
|
30126
|
+
] : [...baseSteps, "select-payment"];
|
|
30004
30127
|
}
|
|
30005
30128
|
//#endregion
|
|
30006
30129
|
//#region ../blocks/src/system/runtime/nodes/event-registration/registrationDerivations.ts
|
|
@@ -30119,6 +30242,7 @@ const EVENT_REGISTRATION_SHELL_STEP_LABELS = [
|
|
|
30119
30242
|
"Date",
|
|
30120
30243
|
"Tickets",
|
|
30121
30244
|
"Details",
|
|
30245
|
+
"Payment options",
|
|
30122
30246
|
"Payment"
|
|
30123
30247
|
];
|
|
30124
30248
|
const eventRegistrationPublicEventSchema = z.preprocess(normalizeEventRegistrationEventInput, publicEventSchema);
|
|
@@ -30261,12 +30385,13 @@ function shellLabelForRegistrationStep(step, events) {
|
|
|
30261
30385
|
switch (step) {
|
|
30262
30386
|
case "select-event": return isDateSelection(events) ? "Date" : "Event";
|
|
30263
30387
|
case "select-tickets": return "Tickets";
|
|
30388
|
+
case "fully-booked":
|
|
30264
30389
|
case "enter-details": return "Details";
|
|
30265
|
-
case "select-payment": return "Payment";
|
|
30390
|
+
case "select-payment": return "Payment options";
|
|
30391
|
+
case "payment": return "Payment";
|
|
30266
30392
|
case "error":
|
|
30267
30393
|
case "success":
|
|
30268
30394
|
case "submitting":
|
|
30269
|
-
case "redirecting":
|
|
30270
30395
|
case "verifying-payment":
|
|
30271
30396
|
case "verifying-timeout":
|
|
30272
30397
|
case "payment-status":
|
|
@@ -30278,7 +30403,7 @@ function isDateSelection(events) {
|
|
|
30278
30403
|
return Boolean(events.length > 1 && firstSeriesId && events.every((event) => event.seriesId === firstSeriesId));
|
|
30279
30404
|
}
|
|
30280
30405
|
function buildEventRegistrationShellBodyText(stepLabels) {
|
|
30281
|
-
if (stepLabels.includes("Payment")) return "Preparing tickets, details, and payment options.";
|
|
30406
|
+
if (stepLabels.includes("Payment options")) return "Preparing tickets, details, and payment options.";
|
|
30282
30407
|
if (stepLabels[0] === "Tickets") return "Preparing tickets and booking details.";
|
|
30283
30408
|
return "Preparing dates, tickets, and booking details.";
|
|
30284
30409
|
}
|
|
@@ -32253,7 +32378,8 @@ const eventCalendarLayout = [styledSection({
|
|
|
32253
32378
|
fallback: false
|
|
32254
32379
|
} },
|
|
32255
32380
|
banded: { $bind: {
|
|
32256
|
-
from: "content
|
|
32381
|
+
from: "content",
|
|
32382
|
+
transforms: [{ id: "events.calendarBanded" }],
|
|
32257
32383
|
fallback: false
|
|
32258
32384
|
} }
|
|
32259
32385
|
}))]
|
|
@@ -35526,7 +35652,7 @@ function buildPassesMembershipsDisplay(options) {
|
|
|
35526
35652
|
product: pass
|
|
35527
35653
|
} : {
|
|
35528
35654
|
kind: "unavailable",
|
|
35529
|
-
label: "Online purchasing
|
|
35655
|
+
label: "Online purchasing is unavailable."
|
|
35530
35656
|
}
|
|
35531
35657
|
};
|
|
35532
35658
|
});
|
|
@@ -35536,7 +35662,14 @@ function buildPassesMembershipsDisplay(options) {
|
|
|
35536
35662
|
description: options.showDescriptions ? membership.description : null,
|
|
35537
35663
|
priceLabel: formatCommercePrice(membership.price, membership.currency),
|
|
35538
35664
|
intervalLabel: formatInterval(membership.billingInterval),
|
|
35539
|
-
|
|
35665
|
+
action: membership.purchaseAvailability === "purchasable" ? {
|
|
35666
|
+
kind: "purchase",
|
|
35667
|
+
label: options.membershipActionLabel,
|
|
35668
|
+
product: membership
|
|
35669
|
+
} : {
|
|
35670
|
+
kind: "unavailable",
|
|
35671
|
+
label: "Online purchasing is unavailable."
|
|
35672
|
+
}
|
|
35540
35673
|
}));
|
|
35541
35674
|
return {
|
|
35542
35675
|
kind: "passes-memberships",
|
|
@@ -35756,7 +35889,14 @@ const membershipCardDisplaySchema = z.object({
|
|
|
35756
35889
|
description: z.string().nullable(),
|
|
35757
35890
|
priceLabel: z.string(),
|
|
35758
35891
|
intervalLabel: z.string(),
|
|
35759
|
-
|
|
35892
|
+
action: z.discriminatedUnion("kind", [z.object({
|
|
35893
|
+
kind: z.literal("purchase"),
|
|
35894
|
+
label: z.string(),
|
|
35895
|
+
product: purchasablePublicMembershipProductSchema
|
|
35896
|
+
}), z.object({
|
|
35897
|
+
kind: z.literal("unavailable"),
|
|
35898
|
+
label: z.string()
|
|
35899
|
+
})])
|
|
35760
35900
|
});
|
|
35761
35901
|
const passesMembershipsDisplaySchema = z.object({
|
|
35762
35902
|
kind: z.literal("passes-memberships"),
|
|
@@ -38394,7 +38534,7 @@ function withDesignCapability(blockKind, definition, designCapability, designMet
|
|
|
38394
38534
|
if (definition.manifest.name !== blockKind) throw new Error(`System block kind mismatch: expected ${blockKind}, received ${definition.manifest.name}.`);
|
|
38395
38535
|
return {
|
|
38396
38536
|
...definition,
|
|
38397
|
-
designCapability,
|
|
38537
|
+
designCapability: withManifestSectionBackgroundPaints(designCapability, definition.manifest.fields),
|
|
38398
38538
|
designMetadata,
|
|
38399
38539
|
manifest: {
|
|
38400
38540
|
...definition.manifest,
|
|
@@ -39447,6 +39587,16 @@ const builtinTransformDefinitions = [
|
|
|
39447
39587
|
return resolveCalendarReadProfile(asPartialObject(value) ?? {});
|
|
39448
39588
|
}
|
|
39449
39589
|
},
|
|
39590
|
+
{
|
|
39591
|
+
id: "events.calendarBanded",
|
|
39592
|
+
kind: "formatter",
|
|
39593
|
+
summary: "Paint the week-board band only on a section with no background of its own",
|
|
39594
|
+
run(value) {
|
|
39595
|
+
const content = asPartialObject(value) ?? {};
|
|
39596
|
+
const sectionStyles = asPartialObject(content._sectionStyles);
|
|
39597
|
+
return content.banded === true && parseBackgroundContent(sectionStyles?.background) === null;
|
|
39598
|
+
}
|
|
39599
|
+
},
|
|
39450
39600
|
...formattingTransforms,
|
|
39451
39601
|
...layoutTransforms,
|
|
39452
39602
|
...chromeLogoTransforms,
|
|
@@ -40103,6 +40253,7 @@ const CANONICAL_REFUND_PLANNER_ERROR_CODES = [
|
|
|
40103
40253
|
"refund_failed"
|
|
40104
40254
|
];
|
|
40105
40255
|
const CANONICAL_ADMIN_REFUND_FAILURE_CODES = [
|
|
40256
|
+
"refund_blocked_by_live_payment_terms",
|
|
40106
40257
|
...CANONICAL_REFUND_PLANNER_ERROR_CODES,
|
|
40107
40258
|
"payment_intent_not_found",
|
|
40108
40259
|
"stripe_error",
|
|
@@ -40118,6 +40269,7 @@ const CANONICAL_ADMIN_REFUND_FAILURE_CODES = [
|
|
|
40118
40269
|
//#endregion
|
|
40119
40270
|
//#region ../api/src/bookingRefundOutcomes.ts
|
|
40120
40271
|
const STANDARD_LINE_ITEM_REFUND_INVALID_CODES = [
|
|
40272
|
+
"refund_blocked_by_live_payment_terms",
|
|
40121
40273
|
"missing_amount",
|
|
40122
40274
|
"invalid_amount",
|
|
40123
40275
|
"amount_exceeds_remaining",
|
|
@@ -40480,68 +40632,6 @@ function collectText(node) {
|
|
|
40480
40632
|
}
|
|
40481
40633
|
z.enum(["public", "unlisted"], { error: "visibility must be 'public' or 'unlisted'" });
|
|
40482
40634
|
//#endregion
|
|
40483
|
-
//#region ../api/src/bookingPaymentTermSchemas.ts
|
|
40484
|
-
const bookingDepositRefundPolicySchema = z.enum(["refundable", "non_refundable"]);
|
|
40485
|
-
const bookingInstalmentPlanSchema = z.discriminatedUnion("kind", [
|
|
40486
|
-
z.object({
|
|
40487
|
-
kind: z.literal("deposit_plus_one_remainder"),
|
|
40488
|
-
depositAmountCents: z.number().int().nonnegative(),
|
|
40489
|
-
depositRefundability: bookingDepositRefundPolicySchema,
|
|
40490
|
-
remainderDueCount: z.number().int().positive(),
|
|
40491
|
-
intervalUnit: z.enum([
|
|
40492
|
-
"day",
|
|
40493
|
-
"week",
|
|
40494
|
-
"month"
|
|
40495
|
-
])
|
|
40496
|
-
}),
|
|
40497
|
-
z.object({
|
|
40498
|
-
kind: z.literal("deposit_plus_scheduled_instalments"),
|
|
40499
|
-
depositAmountCents: z.number().int().nonnegative(),
|
|
40500
|
-
depositRefundability: bookingDepositRefundPolicySchema,
|
|
40501
|
-
instalmentCount: z.number().int().positive(),
|
|
40502
|
-
intervalCount: z.number().int().positive(),
|
|
40503
|
-
intervalUnit: z.enum([
|
|
40504
|
-
"day",
|
|
40505
|
-
"week",
|
|
40506
|
-
"month"
|
|
40507
|
-
])
|
|
40508
|
-
}),
|
|
40509
|
-
z.object({
|
|
40510
|
-
kind: z.literal("equal_scheduled_instalments"),
|
|
40511
|
-
instalmentCount: z.number().int().positive(),
|
|
40512
|
-
intervalCount: z.number().int().positive(),
|
|
40513
|
-
intervalUnit: z.enum([
|
|
40514
|
-
"day",
|
|
40515
|
-
"week",
|
|
40516
|
-
"month"
|
|
40517
|
-
])
|
|
40518
|
-
})
|
|
40519
|
-
]);
|
|
40520
|
-
const bookingFlexibleBalanceDueDateRuleSchema = z.discriminatedUnion("kind", [z.object({
|
|
40521
|
-
kind: z.literal("relative_to_start_date"),
|
|
40522
|
-
daysBeforeStart: z.number().int().positive()
|
|
40523
|
-
}), z.object({
|
|
40524
|
-
kind: z.literal("fixed_calendar_date"),
|
|
40525
|
-
dueAt: z.string().datetime()
|
|
40526
|
-
})]);
|
|
40527
|
-
const bookingFlexibleBalanceConfigSchema = z.object({
|
|
40528
|
-
upfrontAmountCents: z.number().int().nonnegative(),
|
|
40529
|
-
dueDateRule: bookingFlexibleBalanceDueDateRuleSchema,
|
|
40530
|
-
depositRefundability: bookingDepositRefundPolicySchema
|
|
40531
|
-
});
|
|
40532
|
-
z.discriminatedUnion("kind", [
|
|
40533
|
-
z.object({ kind: z.literal("upfront") }),
|
|
40534
|
-
z.object({ kind: z.literal("deferred_manual") }),
|
|
40535
|
-
z.object({
|
|
40536
|
-
kind: z.literal("instalment_plan"),
|
|
40537
|
-
plan: bookingInstalmentPlanSchema
|
|
40538
|
-
}),
|
|
40539
|
-
z.object({
|
|
40540
|
-
kind: z.literal("flexible_balance"),
|
|
40541
|
-
config: bookingFlexibleBalanceConfigSchema
|
|
40542
|
-
})
|
|
40543
|
-
]);
|
|
40544
|
-
//#endregion
|
|
40545
40635
|
//#region ../api/src/navigationMenuValidation.ts
|
|
40546
40636
|
function hasChildren(item) {
|
|
40547
40637
|
return Array.isArray(item.children) && item.children.length > 0;
|