@riverbankcms/sdk 0.148.0 → 0.149.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/{PreviewEditorSidebar-DvEPG3Z2.mjs → PreviewEditorSidebar-DBKln68M.mjs} +103 -66
- package/dist/{PreviewEditorUI-D6eb6fkx.mjs → PreviewEditorUI-DpRX4Mum.mjs} +3 -6
- package/dist/{PreviewQueryProvider-5znTyJuz.mjs → PreviewQueryProvider-C0mndwHB.mjs} +3 -3
- package/dist/{SdkPreviewModeRuntime-DJ6utQ_R.mjs → SdkPreviewModeRuntime-DJPmPY-r.mjs} +95 -67
- package/dist/{SiteChromeCustomizeContext-CFJYh6vo.mjs → SiteChromeCustomizeContext-JYA0cJ_Z.mjs} +982 -734
- 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/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/index.d.ts +3 -3
- 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/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/siteOperations.d.ts +6 -2
- 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/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/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/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/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/PaymentSelectionStep.d.ts +2 -0
- 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/useEventRegistrationWizard.d.ts +4 -0
- 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/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/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/checkoutSessionMetadata.d.ts +2 -2
- package/dist/_dts/commerce/src/purchase/checkoutStripeSessionPlanning.d.ts +5 -4
- package/dist/_dts/commerce/src/purchase/index.d.ts +1 -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 +3 -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/stripeMinimumCharge.d.ts +6 -0
- package/dist/_dts/commerce/src/purchase/types.d.ts +2 -1
- package/dist/_dts/content-editor/src/controller/editLeaseHandover.d.ts +30 -0
- package/dist/_dts/content-editor/src/lib/browserStorage.d.ts +5 -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 +3 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +297 -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/rendering/islands/types.d.ts +2 -12
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +0 -5
- 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-Cr3EeTP5.mjs} +408 -69
- package/dist/client/{DemoBookingPortalAccess-mxqwap3f.mjs → DemoBookingPortalAccess-BFGB1Fay.mjs} +2 -2
- package/dist/client/{EventCombined.client-CDb11igO.mjs → EventCombined.client-DKYV0_ft.mjs} +6 -6
- package/dist/client/{EventListing.client-EgYhzKPa.mjs → EventListing.client-B9UIcEYc.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-gtmtaA2b.mjs → LeafletStaticMap-CFLPkP0K.mjs} +1 -1
- package/dist/client/{TerminalPanel-DvNUP5ot.mjs → TerminalPanel-JjmgxEsR.mjs} +1 -1
- package/dist/client/{ThemedButton-C7CeUJjW.mjs → ThemedButton-CKV1Jh2m.mjs} +1 -1
- package/dist/client/{accordion-kjvt49rA.mjs → accordion-DXWIfT3T.mjs} +1 -1
- package/dist/client/{bookingForm-pbRZordh.mjs → bookingForm-CjZgHNvv.mjs} +11 -8
- package/dist/client/bookings.mjs +424 -320
- package/dist/client/{carousel-f4Zbmicv.mjs → carousel-DSLikmvZ.mjs} +1 -1
- package/dist/client/{cart-DO20An50.mjs → cart-HDjWReFt.mjs} +3 -3
- package/dist/client/{checkout-Du5amDR_.mjs → checkout-CUvRZA3W.mjs} +3 -3
- package/dist/client/client.mjs +963 -866
- package/dist/client/{context-eW97E945.mjs → context-DFmaZa-Q.mjs} +1 -1
- package/dist/client/{dates-jPCirRea.mjs → dates-BBep1JnF.mjs} +2 -2
- package/dist/client/{eventCalendar-C2M-iE4j.mjs → eventCalendar-zEobhxo4.mjs} +9 -9
- package/dist/client/{eventCombined-W6ns3LHg.mjs → eventCombined-Dp7bz5k-.mjs} +4 -4
- package/dist/client/{eventDetails-CR-GT0f0.mjs → eventDetails-FE-zqTt7.mjs} +4 -4
- package/dist/client/{eventListing-BK8AfYZz.mjs → eventListing-BMt5snal.mjs} +4 -4
- package/dist/client/{eventRegistration-BJSd4KUu.mjs → eventRegistration-O6ZxHfOb.mjs} +67 -342
- package/dist/client/{form-BvpfbQaT.mjs → form-DFa1D8vt.mjs} +3 -3
- package/dist/client/{headerSection-I5sUQ8x-.mjs → headerSection-CmjHLR-N.mjs} +3 -3
- package/dist/client/hooks.mjs +160 -129
- package/dist/client/{locationMap-BLvwf9_f.mjs → locationMap-BXKP_lGh.mjs} +3 -3
- package/dist/client/{newsletterForm-DrQ2weE8.mjs → newsletterForm-CU-HmxGx.mjs} +3 -3
- package/dist/client/{pricing-BES87mrR.mjs → pricing-KEAEsibq.mjs} +1 -1
- package/dist/client/{productDetail-Url9jcc5.mjs → productDetail-Ckp7MGnt.mjs} +3 -3
- package/dist/client/{productList-DE7ngEZJ.mjs → productList-D91V0sYa.mjs} +3 -3
- package/dist/client/{propsDecoder-D1OtGXDV.mjs → propsDecoder-DZd6RJeA.mjs} +155 -77
- package/dist/client/rendering/client.mjs +3356 -3192
- package/dist/client/rendering/islands.mjs +17 -17
- package/dist/client/rendering.mjs +956 -841
- package/dist/client/{routeIslandApiConfig-BG9Y-SHg.mjs → routeIslandApiConfig-E1EkhhYY.mjs} +1 -1
- package/dist/client/{shop-CJkuySJ3.mjs → shop-4F2jLQPI.mjs} +12 -13
- package/dist/client/{shop-commerce-4rKj5n9h.mjs → shop-commerce-BbfCJjB3.mjs} +6 -6
- package/dist/client/{shop-commerce-store-Bxm75Pg6.mjs → shop-commerce-store-vicweP2K.mjs} +1 -1
- package/dist/client/{shopShared-DpoQDWfz.mjs → shopShared-DlONJt0T.mjs} +4 -4
- package/dist/client/{useEventFilters-D8HliSqR.mjs → useEventFilters-COYyL3m7.mjs} +6 -6
- 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-CwvFFjB-.mjs} +2 -2
- package/dist/{separator-CuNhBAhS.mjs → separator-ByL72zUT.mjs} +1 -1
- package/dist/server/components.mjs +167 -131
- package/dist/server/config-validation.mjs +160 -129
- package/dist/server/config.mjs +160 -129
- package/dist/server/data.mjs +160 -129
- package/dist/server/index.mjs +20 -27
- package/dist/server/next.mjs +174 -156
- package/dist/server/page-converter.mjs +145 -65
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +169 -131
- package/dist/server/rendering.mjs +167 -131
- package/dist/server/routing.mjs +165 -118
- package/dist/server/server.mjs +167 -154
- package/package.json +1 -1
- package/dist/_dts/api/src/bookingPaymentTermSchemas.d.ts +0 -123
- 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
|
@@ -357,6 +357,16 @@ function isRecord$9(value) {
|
|
|
357
357
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
358
358
|
}
|
|
359
359
|
//#endregion
|
|
360
|
+
//#region ../core/src/booking-payment-options.ts
|
|
361
|
+
/** Automatic instalments and a flexible balance cannot share one booking offer. */
|
|
362
|
+
function validateBookingPaymentOptionKinds(kinds) {
|
|
363
|
+
if (kinds.length === 0) return err$1("no_options");
|
|
364
|
+
const uniqueKinds = new Set(kinds);
|
|
365
|
+
if (uniqueKinds.size !== kinds.length) return err$1("duplicate_kind");
|
|
366
|
+
if (uniqueKinds.has("instalment_plan") && uniqueKinds.has("flexible_balance")) return err$1("incompatible_collection_options");
|
|
367
|
+
return ok$1(void 0);
|
|
368
|
+
}
|
|
369
|
+
//#endregion
|
|
360
370
|
//#region ../core/src/booking-time-zone.ts
|
|
361
371
|
const TIME_ZONE_VALIDITY_CACHE_LIMIT = 100;
|
|
362
372
|
const timeZoneValidityCache = /* @__PURE__ */ new Map();
|
|
@@ -1817,19 +1827,17 @@ function getBookingServicePaymentSelectionMode(service) {
|
|
|
1817
1827
|
if (service?.paymentTermsAvailability?.kind === "pending_stripe_setup") return "pending_stripe_setup";
|
|
1818
1828
|
const allowedKinds = service?.paymentTerms?.allowedOptions.map((option) => option.kind) ?? [];
|
|
1819
1829
|
if (allowedKinds.length === 0) return "implicit_upfront";
|
|
1820
|
-
if (allowedKinds.
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
+
if (!validateBookingPaymentOptionKinds(allowedKinds).ok) return "unsupported";
|
|
1831
|
+
if (allowedKinds.length > 1) return "choice_required";
|
|
1832
|
+
const onlyKind = allowedKinds[0];
|
|
1833
|
+
switch (onlyKind) {
|
|
1834
|
+
case "upfront": return "implicit_upfront";
|
|
1835
|
+
case "deferred_manual": return "implicit_deferred_manual";
|
|
1836
|
+
case "instalment_plan": return "implicit_instalment_plan";
|
|
1837
|
+
case "flexible_balance": return "implicit_flexible_balance";
|
|
1838
|
+
case void 0: return "unsupported";
|
|
1839
|
+
default: return assertNever$1(onlyKind);
|
|
1830
1840
|
}
|
|
1831
|
-
if (allowedKinds.length === 2 && allowedKinds.includes("upfront") && (allowedKinds.includes("deferred_manual") || allowedKinds.includes("instalment_plan") || allowedKinds.includes("flexible_balance"))) return "choice_required";
|
|
1832
|
-
return "unsupported";
|
|
1833
1841
|
}
|
|
1834
1842
|
function resolveDefaultBookingServiceId(formConfig, services) {
|
|
1835
1843
|
const configuredServiceId = toTrimmedString(formConfig?.settings?.serviceId);
|
|
@@ -2146,68 +2154,115 @@ const bookingSourceFormSchema = z.object({
|
|
|
2146
2154
|
updatedAt: z.string()
|
|
2147
2155
|
});
|
|
2148
2156
|
//#endregion
|
|
2149
|
-
//#region ../
|
|
2150
|
-
const
|
|
2151
|
-
const
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
intervalUnit: z.enum([
|
|
2158
|
-
"day",
|
|
2159
|
-
"week",
|
|
2160
|
-
"month"
|
|
2161
|
-
])
|
|
2162
|
-
}),
|
|
2163
|
-
z.object({
|
|
2164
|
-
kind: z.literal("deposit_plus_scheduled_instalments"),
|
|
2165
|
-
depositAmountCents: z.number().int().min(0),
|
|
2166
|
-
depositRefundability: bookingDepositRefundPolicySchema,
|
|
2167
|
-
instalmentCount: z.number().int().positive(),
|
|
2168
|
-
intervalCount: z.number().int().positive(),
|
|
2169
|
-
intervalUnit: z.enum([
|
|
2170
|
-
"day",
|
|
2171
|
-
"week",
|
|
2172
|
-
"month"
|
|
2173
|
-
])
|
|
2174
|
-
}),
|
|
2175
|
-
z.object({
|
|
2176
|
-
kind: z.literal("equal_scheduled_instalments"),
|
|
2177
|
-
instalmentCount: z.number().int().positive(),
|
|
2178
|
-
intervalCount: z.number().int().positive(),
|
|
2179
|
-
intervalUnit: z.enum([
|
|
2180
|
-
"day",
|
|
2181
|
-
"week",
|
|
2182
|
-
"month"
|
|
2183
|
-
])
|
|
2184
|
-
})
|
|
2157
|
+
//#region ../core/src/booking-payment-schemas.ts
|
|
2158
|
+
const stripObject = (shape) => z.object(shape);
|
|
2159
|
+
const strictObject = (shape) => z.strictObject(shape);
|
|
2160
|
+
const depositRefundPolicySchema = z.enum(["refundable", "non_refundable"]);
|
|
2161
|
+
const intervalUnitSchema = z.enum([
|
|
2162
|
+
"day",
|
|
2163
|
+
"week",
|
|
2164
|
+
"month"
|
|
2185
2165
|
]);
|
|
2186
|
-
const
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2166
|
+
const nonNegativeIntegerSchema = z.number().int().nonnegative();
|
|
2167
|
+
const positiveIntegerSchema = z.number().int().positive();
|
|
2168
|
+
function createInstalmentPlanSchema(object) {
|
|
2169
|
+
return z.discriminatedUnion("kind", [
|
|
2170
|
+
object({
|
|
2171
|
+
kind: z.literal("deposit_plus_one_remainder"),
|
|
2172
|
+
depositAmountCents: nonNegativeIntegerSchema,
|
|
2173
|
+
depositRefundability: depositRefundPolicySchema,
|
|
2174
|
+
remainderDueCount: positiveIntegerSchema,
|
|
2175
|
+
intervalUnit: intervalUnitSchema
|
|
2176
|
+
}),
|
|
2177
|
+
object({
|
|
2178
|
+
kind: z.literal("deposit_plus_scheduled_instalments"),
|
|
2179
|
+
depositAmountCents: nonNegativeIntegerSchema,
|
|
2180
|
+
depositRefundability: depositRefundPolicySchema,
|
|
2181
|
+
instalmentCount: positiveIntegerSchema,
|
|
2182
|
+
intervalCount: positiveIntegerSchema,
|
|
2183
|
+
intervalUnit: intervalUnitSchema
|
|
2184
|
+
}),
|
|
2185
|
+
object({
|
|
2186
|
+
kind: z.literal("equal_scheduled_instalments"),
|
|
2187
|
+
instalmentCount: positiveIntegerSchema,
|
|
2188
|
+
intervalCount: positiveIntegerSchema,
|
|
2189
|
+
intervalUnit: intervalUnitSchema
|
|
2190
|
+
})
|
|
2191
|
+
]);
|
|
2192
|
+
}
|
|
2193
|
+
function createFlexibleBalanceSchemas(object) {
|
|
2194
|
+
const dueDateRule = z.discriminatedUnion("kind", [object({
|
|
2195
|
+
kind: z.literal("relative_to_start_date"),
|
|
2196
|
+
daysBeforeStart: positiveIntegerSchema
|
|
2197
|
+
}), object({
|
|
2198
|
+
kind: z.literal("fixed_calendar_date"),
|
|
2199
|
+
dueAt: z.string().datetime()
|
|
2200
|
+
})]);
|
|
2201
|
+
return {
|
|
2202
|
+
dueDateRule,
|
|
2203
|
+
config: object({
|
|
2204
|
+
upfrontAmountCents: nonNegativeIntegerSchema,
|
|
2205
|
+
dueDateRule,
|
|
2206
|
+
depositRefundability: depositRefundPolicySchema
|
|
2207
|
+
})
|
|
2208
|
+
};
|
|
2209
|
+
}
|
|
2210
|
+
const paymentOptionKindsMessages = {
|
|
2211
|
+
no_options: "Choose at least one way for customers to pay.",
|
|
2212
|
+
duplicate_kind: "Choose each payment option only once.",
|
|
2213
|
+
incompatible_collection_options: "Offer instalments or a deposit with the rest paid later, but not both."
|
|
2214
|
+
};
|
|
2215
|
+
function buildBookingPaymentOptionSchemas(object) {
|
|
2216
|
+
const instalmentPlan = createInstalmentPlanSchema(object);
|
|
2217
|
+
const flexibleBalance = createFlexibleBalanceSchemas(object);
|
|
2218
|
+
const paymentCollectionOption = z.discriminatedUnion("kind", [
|
|
2219
|
+
object({ kind: z.literal("upfront") }),
|
|
2220
|
+
object({ kind: z.literal("deferred_manual") }),
|
|
2221
|
+
object({
|
|
2222
|
+
kind: z.literal("instalment_plan"),
|
|
2223
|
+
plan: instalmentPlan
|
|
2224
|
+
}),
|
|
2225
|
+
object({
|
|
2226
|
+
kind: z.literal("flexible_balance"),
|
|
2227
|
+
config: flexibleBalance.config
|
|
2228
|
+
})
|
|
2229
|
+
]);
|
|
2230
|
+
const paymentTerms = object({ allowedOptions: z.array(paymentCollectionOption) }).superRefine(({ allowedOptions }, ctx) => {
|
|
2231
|
+
const result = validateBookingPaymentOptionKinds(allowedOptions.map(({ kind }) => kind));
|
|
2232
|
+
if (!result.ok) ctx.addIssue({
|
|
2233
|
+
code: "custom",
|
|
2234
|
+
path: ["allowedOptions"],
|
|
2235
|
+
message: paymentOptionKindsMessages[result.error]
|
|
2236
|
+
});
|
|
2237
|
+
});
|
|
2238
|
+
const paymentOptionsChoice = z.discriminatedUnion("source", [z.strictObject({ source: z.literal("default") }), z.strictObject({
|
|
2239
|
+
source: z.literal("custom"),
|
|
2240
|
+
paymentTerms
|
|
2241
|
+
})]);
|
|
2242
|
+
return {
|
|
2243
|
+
depositRefundPolicy: depositRefundPolicySchema,
|
|
2244
|
+
instalmentPlan,
|
|
2245
|
+
flexibleBalanceDueDateRule: flexibleBalance.dueDateRule,
|
|
2246
|
+
flexibleBalanceConfig: flexibleBalance.config,
|
|
2247
|
+
paymentCollectionOption,
|
|
2248
|
+
paymentTerms,
|
|
2249
|
+
paymentOptionsChoice
|
|
2250
|
+
};
|
|
2251
|
+
}
|
|
2252
|
+
function createBookingPaymentOptionSchemas(mode) {
|
|
2253
|
+
return mode === "strict" ? buildBookingPaymentOptionSchemas(strictObject) : buildBookingPaymentOptionSchemas(stripObject);
|
|
2254
|
+
}
|
|
2255
|
+
const bookingPaymentOptionSchemas = createBookingPaymentOptionSchemas("strip");
|
|
2256
|
+
bookingPaymentOptionSchemas.depositRefundPolicy;
|
|
2257
|
+
bookingPaymentOptionSchemas.instalmentPlan;
|
|
2258
|
+
bookingPaymentOptionSchemas.flexibleBalanceDueDateRule;
|
|
2259
|
+
bookingPaymentOptionSchemas.flexibleBalanceConfig;
|
|
2260
|
+
bookingPaymentOptionSchemas.paymentCollectionOption;
|
|
2261
|
+
const bookingPaymentTermsSchema = bookingPaymentOptionSchemas.paymentTerms;
|
|
2262
|
+
bookingPaymentOptionSchemas.paymentOptionsChoice;
|
|
2263
|
+
//#endregion
|
|
2264
|
+
//#region ../blocks/src/system/blocks/shared/bookingPaymentTerms.ts
|
|
2265
|
+
const blockBookingPaymentTermsSchema = bookingPaymentTermsSchema;
|
|
2211
2266
|
//#endregion
|
|
2212
2267
|
//#region ../blocks/src/system/runtime/nodes/booking-form.interactive.ts
|
|
2213
2268
|
const blockBookingPaymentTermsAvailabilitySchema = z.union([z.object({
|
|
@@ -8127,7 +8182,7 @@ const publicPassProductCollectionSchema = z.object({ passes: z.array(publicPassP
|
|
|
8127
8182
|
/**
|
|
8128
8183
|
* Public membership product for shop display
|
|
8129
8184
|
*/
|
|
8130
|
-
const
|
|
8185
|
+
const publicMembershipProductFields = {
|
|
8131
8186
|
id: z.string(),
|
|
8132
8187
|
name: z.string(),
|
|
8133
8188
|
description: z.string().nullable(),
|
|
@@ -8136,7 +8191,16 @@ const publicMembershipProductSchema = z.object({
|
|
|
8136
8191
|
billingInterval: z.enum(["month", "year"]),
|
|
8137
8192
|
eligibleCategoryIds: z.array(z.string()),
|
|
8138
8193
|
eligibleCategoryNames: z.array(z.string())
|
|
8194
|
+
};
|
|
8195
|
+
const purchasablePublicMembershipProductSchema = z.object({
|
|
8196
|
+
...publicMembershipProductFields,
|
|
8197
|
+
purchaseAvailability: z.literal("purchasable")
|
|
8139
8198
|
});
|
|
8199
|
+
const publicMembershipProductSchema = z.discriminatedUnion("purchaseAvailability", [purchasablePublicMembershipProductSchema, z.object({
|
|
8200
|
+
...publicMembershipProductFields,
|
|
8201
|
+
purchaseAvailability: z.literal("display_only"),
|
|
8202
|
+
unavailabilityReason: z.literal("online_payments_unavailable")
|
|
8203
|
+
})]);
|
|
8140
8204
|
const publicMembershipProductCollectionSchema = z.object({ memberships: z.array(publicMembershipProductSchema) });
|
|
8141
8205
|
//#endregion
|
|
8142
8206
|
//#region ../blocks/src/system/node/schema.ts
|
|
@@ -12340,7 +12404,7 @@ function buildPassesMembershipsDisplay(options) {
|
|
|
12340
12404
|
product: pass
|
|
12341
12405
|
} : {
|
|
12342
12406
|
kind: "unavailable",
|
|
12343
|
-
label: "Online purchasing
|
|
12407
|
+
label: "Online purchasing is unavailable."
|
|
12344
12408
|
}
|
|
12345
12409
|
};
|
|
12346
12410
|
});
|
|
@@ -12350,7 +12414,14 @@ function buildPassesMembershipsDisplay(options) {
|
|
|
12350
12414
|
description: options.showDescriptions ? membership.description : null,
|
|
12351
12415
|
priceLabel: formatCommercePrice(membership.price, membership.currency),
|
|
12352
12416
|
intervalLabel: formatInterval(membership.billingInterval),
|
|
12353
|
-
|
|
12417
|
+
action: membership.purchaseAvailability === "purchasable" ? {
|
|
12418
|
+
kind: "purchase",
|
|
12419
|
+
label: options.membershipActionLabel,
|
|
12420
|
+
product: membership
|
|
12421
|
+
} : {
|
|
12422
|
+
kind: "unavailable",
|
|
12423
|
+
label: "Online purchasing is unavailable."
|
|
12424
|
+
}
|
|
12354
12425
|
}));
|
|
12355
12426
|
return {
|
|
12356
12427
|
kind: "passes-memberships",
|
|
@@ -12570,7 +12641,14 @@ const membershipCardDisplaySchema = z.object({
|
|
|
12570
12641
|
description: z.string().nullable(),
|
|
12571
12642
|
priceLabel: z.string(),
|
|
12572
12643
|
intervalLabel: z.string(),
|
|
12573
|
-
|
|
12644
|
+
action: z.discriminatedUnion("kind", [z.object({
|
|
12645
|
+
kind: z.literal("purchase"),
|
|
12646
|
+
label: z.string(),
|
|
12647
|
+
product: purchasablePublicMembershipProductSchema
|
|
12648
|
+
}), z.object({
|
|
12649
|
+
kind: z.literal("unavailable"),
|
|
12650
|
+
label: z.string()
|
|
12651
|
+
})])
|
|
12574
12652
|
});
|
|
12575
12653
|
const passesMembershipsDisplaySchema = z.object({
|
|
12576
12654
|
kind: z.literal("passes-memberships"),
|