@riverbankcms/sdk 0.136.0 → 0.137.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +101 -0
- package/dist/{PreviewEditorSidebar-BU5ZlhQR.mjs → PreviewEditorSidebar-Bn6cONPa.mjs} +8 -8
- package/dist/{PreviewEditorUI-9XkHL-bC.mjs → PreviewEditorUI-LAwXZPSx.mjs} +3 -3
- package/dist/{PreviewQueryProvider-wbEpXryy.mjs → PreviewQueryProvider-ztQUdsNo.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-CnWmj-2B.mjs → SdkPreviewModeRuntime-BbbGsI_v.mjs} +596 -164
- package/dist/{SiteChromeCustomizeContext-B6d5zkog.mjs → SiteChromeCustomizeContext-BbkNSt5a.mjs} +2888 -1404
- package/dist/_dts/ai/src/contracts/proposals.d.ts +12 -298
- package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +21 -14
- package/dist/_dts/ai/src/designer/themePatch.d.ts +5 -10
- package/dist/_dts/api/src/accessAdmin.d.ts +1 -9
- package/dist/_dts/api/src/accountApi.d.ts +49 -2
- package/dist/_dts/api/src/contentRuntime.d.ts +1 -4
- package/dist/_dts/api/src/domainConnection.d.ts +41 -0
- package/dist/_dts/api/src/endpoints.d.ts +194 -181
- package/dist/_dts/api/src/index.d.ts +4 -3
- package/dist/_dts/api/src/media.d.ts +19 -2
- package/dist/_dts/api/src/sdkContracts.d.ts +2 -15
- package/dist/_dts/api/src/sdkMediaContracts.d.ts +40 -0
- package/dist/_dts/api/src/sdkMediaEndpointDefinitions.d.ts +61 -0
- package/dist/_dts/api/src/sdkThemeWire.d.ts +15 -4
- package/dist/_dts/api/src/siteInfrastructure.d.ts +17 -23
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +7 -21
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +27 -3
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +37 -17
- package/dist/_dts/api/src/types.d.ts +1 -1
- package/dist/_dts/blocks/src/PageRenderer.d.ts +2 -2
- package/dist/_dts/blocks/src/index.d.ts +1 -1
- package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +9 -0
- package/dist/_dts/blocks/src/pageRendererBlockSupport.d.ts +75 -0
- package/dist/_dts/blocks/src/pageRendererBoundaries.d.ts +2 -0
- package/dist/_dts/blocks/src/server.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.d.ts +3 -3
- package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +34 -22
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/ErrorStep.d.ts +3 -5
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.planning.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationErrorPresentation.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationErrorRecovery.d.ts +25 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationWizardContext.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +7 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +5 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useWaitlistClaimRestoration.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/capacity.d.ts +164 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/cta.d.ts +29 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +47 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/index.d.ts +14 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/people.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/pricing.d.ts +31 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/OfferingTitle.d.ts +11 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekAgendaView.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekBoardView.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/index.d.ts +3 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/listingLayout.d.ts +23 -0
- package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +57 -0
- package/dist/_dts/commerce/src/purchase/index.d.ts +1 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +8 -40
- package/dist/_dts/db/src/index.d.ts +1 -0
- package/dist/_dts/db/src/utils/postgrestFilter.d.ts +2 -0
- package/dist/_dts/media-core/src/bulkDeletePlanning.d.ts +4 -0
- package/dist/_dts/media-core/src/fileDomain.d.ts +3 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +3 -2
- package/dist/_dts/preview-next/src/client/preview/siteChromeBrandPreferences.d.ts +1 -1
- package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlSaveRequest.d.ts +51 -0
- package/dist/_dts/preview-next/src/client/preview/siteChromeSavePlan.d.ts +24 -2
- package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +23 -1
- package/dist/_dts/preview-next/src/client/preview/usePersistedHeaderPreferences.d.ts +8 -0
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +2 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/gradients/types.d.ts +5 -0
- package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +25 -2
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +3 -3
- package/dist/_dts/theme-core/src/schema.d.ts +12 -11
- package/dist/_dts/theme-core/src/site-styles/compilationPlan.d.ts +43 -3
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +10 -0
- package/dist/_dts/theme-core/src/site-styles/headerBrandPresentation.d.ts +63 -0
- package/dist/_dts/theme-core/src/site-styles/headerBytesComparison.d.ts +30 -0
- package/dist/_dts/theme-core/src/site-styles/headerInteractionPalette.d.ts +50 -1
- package/dist/_dts/theme-core/src/site-styles/headerLayoutCatalog.d.ts +48 -9
- package/dist/_dts/theme-core/src/site-styles/headerPreferences.d.ts +162 -0
- package/dist/_dts/theme-core/src/site-styles/headerPreferencesPersistence.d.ts +73 -0
- package/dist/_dts/theme-core/src/site-styles/headerRecompile.d.ts +118 -0
- package/dist/_dts/theme-core/src/site-styles/headerStyleCompiler.d.ts +10 -1
- package/dist/_dts/theme-core/src/site-styles/headerStyleDefaults.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/headerStyleRecipe.d.ts +7 -0
- package/dist/_dts/theme-core/src/site-styles/index.d.ts +5 -0
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/siteChromeBackgrounds.d.ts +20 -1
- package/dist/_dts/theme-core/src/site-styles/siteChromeNavPreferences.d.ts +43 -2
- package/dist/client/{BookingConsentAgreement-DCch21a6.mjs → BookingConsentAgreement--_fUCZe-.mjs} +2 -2
- package/dist/client/{DiscountCodeDisclosure-DIj1T59K.mjs → DiscountCodeDisclosure-BMipSoDJ.mjs} +1 -1
- package/dist/client/{EventCombined.client-BWVNlXTx.mjs → EventCombined.client-CwJOxn7A.mjs} +154 -178
- package/dist/client/{EventListing.client-DVFCDe3i.mjs → EventListing.client-eVwiylPW.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-BY5mIHw9.mjs → LeafletStaticMap-IKenna5u.mjs} +1 -1
- package/dist/client/{accordion-CK29E8rG.mjs → accordion-MGAO3PuE.mjs} +1 -1
- package/dist/client/{bookingForm-DFvnet-N.mjs → bookingForm-CudlQPUu.mjs} +5 -5
- package/dist/client/bookings.mjs +418 -79
- package/dist/client/capacity-BW00PO7s.mjs +271 -0
- package/dist/client/{carousel-BVU5NQlb.mjs → carousel-BrbGJ2Jl.mjs} +1 -1
- package/dist/client/{cart-BNItcZVa.mjs → cart-Bq5eU0xZ.mjs} +3 -3
- package/dist/client/{checkout-Bu6iCdkP.mjs → checkout-BAFVRdrK.mjs} +3 -3
- package/dist/client/client.mjs +2919 -1918
- package/dist/client/{context-BImarOAq.mjs → context-DCkiHVdD.mjs} +8 -5
- package/dist/client/dates-2RPXHQy4.mjs +264 -0
- package/dist/client/{eventCalendar-DS2h-UXD.mjs → eventCalendar-B0O-hPF7.mjs} +10 -17
- package/dist/client/{eventCombined-Drt4Oq9p.mjs → eventCombined-DCkDaoDI.mjs} +3 -3
- package/dist/client/{eventDetails-Bl2vWgTX.mjs → eventDetails-D8GG2dnD.mjs} +5 -3
- package/dist/client/{eventListing-CS7PHY7v.mjs → eventListing-3ssV_bxz.mjs} +3 -3
- package/dist/client/{eventRegistration-D-j8eNy2.mjs → eventRegistration-bPQo3kVw.mjs} +562 -309
- package/dist/client/{form-RMpoLTyr.mjs → form-qMv8RDkk.mjs} +2 -2
- package/dist/client/{headerSection-BYE3Lb3k.mjs → headerSection-CH0Sc5hX.mjs} +2 -2
- package/dist/client/hooks.mjs +289 -32
- package/dist/client/{locationMap-BxSr7Kkh.mjs → locationMap-0_xlBnNI.mjs} +2 -2
- package/dist/client/{newsletterForm-DerbXwFC.mjs → newsletterForm-NUW7m9RI.mjs} +2 -2
- package/dist/client/{productDetail-4SZCLhAf.mjs → productDetail-FBEOM7jW.mjs} +3 -3
- package/dist/client/{productList-D7AP4GNq.mjs → productList-R0OSGhnn.mjs} +3 -3
- package/dist/client/{propsDecoder-pzBeCh14.mjs → propsDecoder-pYvx_Srl.mjs} +88 -380
- package/dist/client/rendering/client.mjs +2616 -1637
- package/dist/client/rendering/islands.mjs +17 -17
- package/dist/client/rendering.mjs +2710 -1702
- package/dist/client/{scrollToBlock-CduAKf8T.mjs → scrollToBlock-ByQv96M2.mjs} +1 -1
- package/dist/client/{shop-Cp5p_kGe.mjs → shop-RUG9DmRE.mjs} +6 -6
- package/dist/client/{shop-commerce-DicXYaYX.mjs → shop-commerce-B76Jz23B.mjs} +5 -5
- package/dist/client/{shop-commerce-store-CGWnpY4K.mjs → shop-commerce-store-QuQNdDsD.mjs} +1 -1
- package/dist/client/{shopShared-BDf9ljkm.mjs → shopShared-vXU1omwJ.mjs} +3 -3
- package/dist/client/{useEventFilters-DeeyGYuk.mjs → useEventFilters-ByuU6HLA.mjs} +33 -18
- package/dist/preview-next/before-render.mjs +79 -51
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/keepAlive.mjs +79 -51
- package/dist/preview-next/middleware.mjs +79 -51
- package/dist/{previewAuthStore-DbqBol0V.mjs → previewAuthStore-L_cKW8Sb.mjs} +79 -51
- package/dist/{sdk-runtime-19MO27F0.mjs → sdk-runtime-sUMr5d70.mjs} +2 -2
- package/dist/{separator-DaPLtJ1f.mjs → separator-BIHkie5i.mjs} +1 -1
- package/dist/server/components.mjs +2077 -1274
- package/dist/server/config-validation.mjs +289 -32
- package/dist/server/config.mjs +289 -32
- package/dist/server/data.mjs +289 -32
- package/dist/server/index.mjs +80 -52
- package/dist/server/next.mjs +1822 -1111
- package/dist/server/page-converter.mjs +167 -31
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +1988 -1286
- package/dist/server/rendering.mjs +1943 -1182
- package/dist/server/routing.mjs +351 -86
- package/dist/server/server.mjs +293 -128
- package/dist/server/theme-bridge.mjs +52 -8
- package/dist/server/theme.mjs +27 -8
- package/dist/styles/index.css +15 -0
- package/package.json +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCapacity.d.ts +0 -48
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/pricing.d.ts +0 -17
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +0 -100
- /package/dist/_dts/blocks/src/system/runtime/nodes/events/{shared → domain}/destination.d.ts +0 -0
|
@@ -4551,6 +4551,11 @@ const gradientConfigSchema = z.object({
|
|
|
4551
4551
|
position: z.string().optional(),
|
|
4552
4552
|
stops: z.array(gradientStopSchema).min(2)
|
|
4553
4553
|
});
|
|
4554
|
+
const gradientsSchema = z.object({
|
|
4555
|
+
button: z.string().min(1).nullable().optional(),
|
|
4556
|
+
hero: z.string().min(1).nullable().optional(),
|
|
4557
|
+
background: z.string().min(1).nullable().optional()
|
|
4558
|
+
});
|
|
4554
4559
|
//#endregion
|
|
4555
4560
|
//#region ../theme-core/src/interactive/baseSchema.ts
|
|
4556
4561
|
/**
|
|
@@ -5208,11 +5213,30 @@ const headerContainerSchema = z.object({
|
|
|
5208
5213
|
tint: z.string().nullable().optional(),
|
|
5209
5214
|
opacity: z.number().min(0).max(1).default(.12)
|
|
5210
5215
|
}).optional();
|
|
5211
|
-
|
|
5216
|
+
//#endregion
|
|
5217
|
+
//#region ../theme-core/src/header/interactionPalette.ts
|
|
5218
|
+
/**
|
|
5219
|
+
* The palettes that fill the nav link with a colour on hover and focus. Each
|
|
5220
|
+
* one names a background/foreground token pair.
|
|
5221
|
+
*/
|
|
5222
|
+
const headerInteractionPillPaletteValues = [
|
|
5212
5223
|
"primary",
|
|
5213
5224
|
"secondary",
|
|
5214
5225
|
"accent"
|
|
5215
|
-
]
|
|
5226
|
+
];
|
|
5227
|
+
/**
|
|
5228
|
+
* "No pill": the nav link keeps whatever hover treatment its recipe compiled,
|
|
5229
|
+
* and the palette step writes nothing at all (#1318 Phase 4c decision 2).
|
|
5230
|
+
*
|
|
5231
|
+
* It exists because "a colour change on hover, no filled background" was not
|
|
5232
|
+
* expressible in the vocabulary, and it is what
|
|
5233
|
+
* `anna-raven-therapy-and-yoga` and `kirtan-lucy` have rendered since before
|
|
5234
|
+
* the palette existed. Without it those two rows can only be classified as a
|
|
5235
|
+
* conscious visual change.
|
|
5236
|
+
*/
|
|
5237
|
+
const headerInteractionQuietPalette = "quiet";
|
|
5238
|
+
const headerInteractionPaletteValues = [...headerInteractionPillPaletteValues, headerInteractionQuietPalette];
|
|
5239
|
+
const headerInteractionPaletteSchema = z.enum(headerInteractionPaletteValues);
|
|
5216
5240
|
//#endregion
|
|
5217
5241
|
//#region ../theme-core/src/boxBackgroundSchema.ts
|
|
5218
5242
|
const boxBackgroundOverlaySchema = z.preprocess(normalizeAuthoringOpacity, z.discriminatedUnion("type", [
|
|
@@ -5733,7 +5757,7 @@ const headerSchema = z.object({
|
|
|
5733
5757
|
variant: headerVariantWithLegacyAliasSchema,
|
|
5734
5758
|
positioning: headerPositioning,
|
|
5735
5759
|
shrinkOnScroll: z.boolean(),
|
|
5736
|
-
maxWidth: headerMaxWidth,
|
|
5760
|
+
maxWidth: headerMaxWidth.default("container"),
|
|
5737
5761
|
scrollTreatment: headerScrollTreatmentSchema,
|
|
5738
5762
|
background: headerBackgroundSchema.default({
|
|
5739
5763
|
type: "color",
|
|
@@ -5932,11 +5956,6 @@ const bodyTextSchema = z.object({ intro: z.object({
|
|
|
5932
5956
|
paragraphSize: bodyTextIntroTypographySizeSchema.optional(),
|
|
5933
5957
|
headingSize: bodyTextIntroTypographySizeSchema.optional()
|
|
5934
5958
|
}).optional() }).optional();
|
|
5935
|
-
const gradientsSchema = z.object({
|
|
5936
|
-
button: z.string().min(1).nullable().optional(),
|
|
5937
|
-
hero: z.string().min(1).nullable().optional(),
|
|
5938
|
-
background: z.string().min(1).nullable().optional()
|
|
5939
|
-
});
|
|
5940
5959
|
/**
|
|
5941
5960
|
* Testimonial quote-mark treatment, owned by the site style (analogous to the
|
|
5942
5961
|
* accordion icon). `style` is the coarse selector; the optional fields fine-tune
|
|
@@ -6669,193 +6688,7 @@ function normalizeEventStaffMemberId(value) {
|
|
|
6669
6688
|
return trimmed ? trimmed : null;
|
|
6670
6689
|
}
|
|
6671
6690
|
//#endregion
|
|
6672
|
-
//#region ../
|
|
6673
|
-
/**
|
|
6674
|
-
* Timezone boundary helpers — internal.
|
|
6675
|
-
*
|
|
6676
|
-
* Both functions read an ISO instant in a given IANA timezone and project it
|
|
6677
|
-
* onto the wall clock of that zone. They use Intl.DateTimeFormat with
|
|
6678
|
-
* hourCycle: 'h23' to avoid 12/24-hour ambiguity. Used internally by the
|
|
6679
|
-
* timetable model and `groupItemsByDate`; not exported from the package's
|
|
6680
|
-
* public surface.
|
|
6681
|
-
*/
|
|
6682
|
-
const MINUTES_PER_HOUR = 60;
|
|
6683
|
-
/**
|
|
6684
|
-
* Local minute-of-day [0, 24*60) for an ISO instant in the given zone.
|
|
6685
|
-
* Returns NaN if the inputs cannot be parsed (caller should drop the item).
|
|
6686
|
-
*/
|
|
6687
|
-
function getLocalMinuteOfDay(isoTimestamp, timeZone) {
|
|
6688
|
-
const date = new Date(isoTimestamp);
|
|
6689
|
-
if (Number.isNaN(date.getTime())) return NaN;
|
|
6690
|
-
if (!isValidTimeZone(timeZone)) return NaN;
|
|
6691
|
-
const parts = new Intl.DateTimeFormat("en-GB", {
|
|
6692
|
-
timeZone,
|
|
6693
|
-
hour: "2-digit",
|
|
6694
|
-
minute: "2-digit",
|
|
6695
|
-
hourCycle: "h23"
|
|
6696
|
-
}).formatToParts(date);
|
|
6697
|
-
const hourPart = Number(parts.find((part) => part.type === "hour")?.value);
|
|
6698
|
-
const minute = Number(parts.find((part) => part.type === "minute")?.value);
|
|
6699
|
-
const hour = hourPart === 24 ? 0 : hourPart;
|
|
6700
|
-
if (Number.isNaN(hour) || Number.isNaN(minute)) return NaN;
|
|
6701
|
-
return hour * MINUTES_PER_HOUR + minute;
|
|
6702
|
-
}
|
|
6703
|
-
/**
|
|
6704
|
-
* Local YYYY-MM-DD for an ISO instant in the given zone.
|
|
6705
|
-
* Returns null if the inputs cannot be parsed.
|
|
6706
|
-
*/
|
|
6707
|
-
function getLocalDateKey(isoTimestamp, timeZone) {
|
|
6708
|
-
const date = new Date(isoTimestamp);
|
|
6709
|
-
if (Number.isNaN(date.getTime())) return null;
|
|
6710
|
-
if (!isValidTimeZone(timeZone)) return null;
|
|
6711
|
-
const parts = new Intl.DateTimeFormat("en-CA", {
|
|
6712
|
-
timeZone,
|
|
6713
|
-
year: "numeric",
|
|
6714
|
-
month: "2-digit",
|
|
6715
|
-
day: "2-digit"
|
|
6716
|
-
}).formatToParts(date);
|
|
6717
|
-
const year = parts.find((part) => part.type === "year")?.value;
|
|
6718
|
-
const month = parts.find((part) => part.type === "month")?.value;
|
|
6719
|
-
const day = parts.find((part) => part.type === "day")?.value;
|
|
6720
|
-
if (year === void 0 || year.length === 0) return null;
|
|
6721
|
-
if (month === void 0 || month.length === 0) return null;
|
|
6722
|
-
if (day === void 0 || day.length === 0) return null;
|
|
6723
|
-
return `${year}-${month}-${day}`;
|
|
6724
|
-
}
|
|
6725
|
-
const validTimeZoneCache = /* @__PURE__ */ new Map();
|
|
6726
|
-
function isValidTimeZone(timeZone) {
|
|
6727
|
-
if (typeof timeZone !== "string" || timeZone.length === 0) return false;
|
|
6728
|
-
const cached = validTimeZoneCache.get(timeZone);
|
|
6729
|
-
if (cached !== void 0) return cached;
|
|
6730
|
-
try {
|
|
6731
|
-
new Intl.DateTimeFormat("en-US", { timeZone });
|
|
6732
|
-
validTimeZoneCache.set(timeZone, true);
|
|
6733
|
-
return true;
|
|
6734
|
-
} catch {
|
|
6735
|
-
validTimeZoneCache.set(timeZone, false);
|
|
6736
|
-
return false;
|
|
6737
|
-
}
|
|
6738
|
-
}
|
|
6739
|
-
//#endregion
|
|
6740
|
-
//#region ../calendar/src/group.ts
|
|
6741
|
-
/**
|
|
6742
|
-
* Group items by their local date (YYYY-MM-DD in the item's own timezone).
|
|
6743
|
-
*
|
|
6744
|
-
* Generic over `T`. Items with un-parseable startsAt or invalid timezone are
|
|
6745
|
-
* silently dropped — call sites that need diagnostics should validate upstream.
|
|
6746
|
-
*
|
|
6747
|
-
* The output map preserves insertion order of dates (ES2015 spec) and the
|
|
6748
|
-
* relative order of items within each date matches input order.
|
|
6749
|
-
*/
|
|
6750
|
-
function groupItemsByDate(items, accessors) {
|
|
6751
|
-
const grouped = /* @__PURE__ */ new Map();
|
|
6752
|
-
for (const item of items) {
|
|
6753
|
-
const dateKey = getLocalDateKey(accessors.getStartsAt(item), accessors.getTimeZone(item));
|
|
6754
|
-
if (dateKey == null) continue;
|
|
6755
|
-
const existing = grouped.get(dateKey);
|
|
6756
|
-
if (existing !== void 0) existing.push(item);
|
|
6757
|
-
else grouped.set(dateKey, [item]);
|
|
6758
|
-
}
|
|
6759
|
-
return grouped;
|
|
6760
|
-
}
|
|
6761
|
-
/**
|
|
6762
|
-
* Canonical responsive ladder for a user-configured column count: 1 column at
|
|
6763
|
-
* base, 2 from `sm`, 3 from `lg` (when the count allows), and the full count
|
|
6764
|
-
* from `xl`. This matches the events blocks' COLUMN_CLASSES ladder — the two
|
|
6765
|
-
* are derived from this single function.
|
|
6766
|
-
*/
|
|
6767
|
-
function gridUserColumnLadder(count) {
|
|
6768
|
-
const capped = Number.isFinite(count) ? Math.max(1, Math.min(4, Math.floor(count))) : 3;
|
|
6769
|
-
const ladder = { base: 1 };
|
|
6770
|
-
if (capped >= 2) ladder.sm = 2;
|
|
6771
|
-
if (capped >= 3) ladder.lg = 3;
|
|
6772
|
-
if (capped >= 4) ladder.xl = capped;
|
|
6773
|
-
return ladder;
|
|
6774
|
-
}
|
|
6775
|
-
/** The ladder as a space-separated `rb-*` utility class string. */
|
|
6776
|
-
function gridUserColumnClasses(count) {
|
|
6777
|
-
const ladder = gridUserColumnLadder(count);
|
|
6778
|
-
return GRID_BREAKPOINTS.flatMap((bp) => {
|
|
6779
|
-
const value = ladder[bp];
|
|
6780
|
-
return typeof value === "number" ? [COL_COUNT_CLASS[bp](value)] : [];
|
|
6781
|
-
}).join(" ");
|
|
6782
|
-
}
|
|
6783
|
-
/** Utility class for a numeric column COUNT at a given breakpoint. */
|
|
6784
|
-
const COL_COUNT_CLASS = {
|
|
6785
|
-
base: (n) => `rb-grid-cols-${n}`,
|
|
6786
|
-
sm: (n) => `rb-sm-grid-cols-${n}`,
|
|
6787
|
-
md: (n) => `rb-md-grid-cols-${n}`,
|
|
6788
|
-
lg: (n) => `rb-lg-grid-cols-${n}`,
|
|
6789
|
-
xl: (n) => `rb-xl-grid-cols-${n}`
|
|
6790
|
-
};
|
|
6791
|
-
const GRID_BREAKPOINTS = [
|
|
6792
|
-
"base",
|
|
6793
|
-
"sm",
|
|
6794
|
-
"md",
|
|
6795
|
-
"lg",
|
|
6796
|
-
"xl"
|
|
6797
|
-
];
|
|
6798
|
-
//#endregion
|
|
6799
|
-
//#region ../blocks/src/system/runtime/nodes/events/shared/eventCapacity.ts
|
|
6800
|
-
/**
|
|
6801
|
-
* Compute remaining spots for an event from `availableSpots` with a fallback
|
|
6802
|
-
* to `capacity - registeredCount`. Returns `{ available: null, isFull: false }`
|
|
6803
|
-
* for uncapped events so call sites can render no capacity indicator at all.
|
|
6804
|
-
*
|
|
6805
|
-
* The single source of truth for capacity math across event cards, agenda
|
|
6806
|
-
* rows, and timetable cells — keep wording variations in the call sites.
|
|
6807
|
-
*/
|
|
6808
|
-
function getEventAvailability(event) {
|
|
6809
|
-
if (event.capacity == null) return {
|
|
6810
|
-
available: null,
|
|
6811
|
-
isFull: false
|
|
6812
|
-
};
|
|
6813
|
-
const available = event.availableSpots ?? event.capacity - event.registeredCount;
|
|
6814
|
-
if (available <= 0) return {
|
|
6815
|
-
available: 0,
|
|
6816
|
-
isFull: true
|
|
6817
|
-
};
|
|
6818
|
-
return {
|
|
6819
|
-
available,
|
|
6820
|
-
isFull: false
|
|
6821
|
-
};
|
|
6822
|
-
}
|
|
6823
|
-
/**
|
|
6824
|
-
* Derive the three-state availability status (available / filling / waitlist)
|
|
6825
|
-
* plus a short pill label. Builds on {@link getEventAvailability} so the
|
|
6826
|
-
* capacity math (availableSpots with a `capacity - registeredCount` fallback)
|
|
6827
|
-
* stays consistent with the binary helper used elsewhere.
|
|
6828
|
-
*/
|
|
6829
|
-
function getEventAvailabilityStatus(event, options) {
|
|
6830
|
-
const threshold = options?.fillingThreshold ?? 2;
|
|
6831
|
-
const { available, isFull } = getEventAvailability(event);
|
|
6832
|
-
if (available == null) return {
|
|
6833
|
-
status: "available",
|
|
6834
|
-
available: null,
|
|
6835
|
-
isFull: false,
|
|
6836
|
-
label: null
|
|
6837
|
-
};
|
|
6838
|
-
if (isFull) return {
|
|
6839
|
-
status: "waitlist",
|
|
6840
|
-
available: 0,
|
|
6841
|
-
isFull: true,
|
|
6842
|
-
label: event.waitlistEnabled ? "Waitlist" : "Full"
|
|
6843
|
-
};
|
|
6844
|
-
if (available <= threshold) return {
|
|
6845
|
-
status: "filling",
|
|
6846
|
-
available,
|
|
6847
|
-
isFull: false,
|
|
6848
|
-
label: `${available} left`
|
|
6849
|
-
};
|
|
6850
|
-
return {
|
|
6851
|
-
status: "available",
|
|
6852
|
-
available,
|
|
6853
|
-
isFull: false,
|
|
6854
|
-
label: `${available} places`
|
|
6855
|
-
};
|
|
6856
|
-
}
|
|
6857
|
-
//#endregion
|
|
6858
|
-
//#region ../blocks/src/system/runtime/nodes/events/shared/destination.ts
|
|
6691
|
+
//#region ../blocks/src/system/runtime/nodes/events/domain/destination.ts
|
|
6859
6692
|
function isRecord$2(value) {
|
|
6860
6693
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
6861
6694
|
}
|
|
@@ -6873,7 +6706,7 @@ function resolveRuntimeEventDestination(event) {
|
|
|
6873
6706
|
};
|
|
6874
6707
|
}
|
|
6875
6708
|
//#endregion
|
|
6876
|
-
//#region ../blocks/src/system/runtime/nodes/events/
|
|
6709
|
+
//#region ../blocks/src/system/runtime/nodes/events/domain/pricing.ts
|
|
6877
6710
|
const DEFAULT_EVENT_CURRENCY = "USD";
|
|
6878
6711
|
function resolveRuntimeEventPricing(event) {
|
|
6879
6712
|
if (isPublicEventPricing(event.pricing)) return event.pricing;
|
|
@@ -7040,10 +6873,66 @@ function readCoursePriceDisplay(value, currency) {
|
|
|
7040
6873
|
function readAmount(value) {
|
|
7041
6874
|
return typeof value === "number" && Number.isFinite(value) ? value : null;
|
|
7042
6875
|
}
|
|
6876
|
+
/**
|
|
6877
|
+
* Format event price for display.
|
|
6878
|
+
* @returns "Free", "£25", "£12 - £25", "Free / £12 - £25", "Course (From £40)", etc.
|
|
6879
|
+
*
|
|
6880
|
+
* Events render compact amounts (no trailing ".00"); the actual ADT→string
|
|
6881
|
+
* mapping lives in `formatBookingPriceDisplay` in @riverbankcms/core so all
|
|
6882
|
+
* surfaces stay consistent.
|
|
6883
|
+
*/
|
|
6884
|
+
function formatEventPrice(event) {
|
|
6885
|
+
return formatEventPricing(resolveRuntimeEventPricing(event), { decimals: "auto" });
|
|
6886
|
+
}
|
|
6887
|
+
/**
|
|
6888
|
+
* Format an event's price directly from its pricing value (without the full
|
|
6889
|
+
* event). Same output as {@link formatEventPrice}.
|
|
6890
|
+
*/
|
|
6891
|
+
function formatEventPriceDisplay(pricing) {
|
|
6892
|
+
return formatEventPricing(pricing, { decimals: "auto" });
|
|
6893
|
+
}
|
|
6894
|
+
/**
|
|
6895
|
+
* Canonical responsive ladder for a user-configured column count: 1 column at
|
|
6896
|
+
* base, 2 from `sm`, 3 from `lg` (when the count allows), and the full count
|
|
6897
|
+
* from `xl`. This matches the events blocks' COLUMN_CLASSES ladder — the two
|
|
6898
|
+
* are derived from this single function.
|
|
6899
|
+
*/
|
|
6900
|
+
function gridUserColumnLadder(count) {
|
|
6901
|
+
const capped = Number.isFinite(count) ? Math.max(1, Math.min(4, Math.floor(count))) : 3;
|
|
6902
|
+
const ladder = { base: 1 };
|
|
6903
|
+
if (capped >= 2) ladder.sm = 2;
|
|
6904
|
+
if (capped >= 3) ladder.lg = 3;
|
|
6905
|
+
if (capped >= 4) ladder.xl = capped;
|
|
6906
|
+
return ladder;
|
|
6907
|
+
}
|
|
6908
|
+
/** The ladder as a space-separated `rb-*` utility class string. */
|
|
6909
|
+
function gridUserColumnClasses(count) {
|
|
6910
|
+
const ladder = gridUserColumnLadder(count);
|
|
6911
|
+
return GRID_BREAKPOINTS.flatMap((bp) => {
|
|
6912
|
+
const value = ladder[bp];
|
|
6913
|
+
return typeof value === "number" ? [COL_COUNT_CLASS[bp](value)] : [];
|
|
6914
|
+
}).join(" ");
|
|
6915
|
+
}
|
|
6916
|
+
/** Utility class for a numeric column COUNT at a given breakpoint. */
|
|
6917
|
+
const COL_COUNT_CLASS = {
|
|
6918
|
+
base: (n) => `rb-grid-cols-${n}`,
|
|
6919
|
+
sm: (n) => `rb-sm-grid-cols-${n}`,
|
|
6920
|
+
md: (n) => `rb-md-grid-cols-${n}`,
|
|
6921
|
+
lg: (n) => `rb-lg-grid-cols-${n}`,
|
|
6922
|
+
xl: (n) => `rb-xl-grid-cols-${n}`
|
|
6923
|
+
};
|
|
6924
|
+
const GRID_BREAKPOINTS = [
|
|
6925
|
+
"base",
|
|
6926
|
+
"sm",
|
|
6927
|
+
"md",
|
|
6928
|
+
"lg",
|
|
6929
|
+
"xl"
|
|
6930
|
+
];
|
|
7043
6931
|
//#endregion
|
|
7044
|
-
//#region ../blocks/src/system/runtime/nodes/events/shared/
|
|
6932
|
+
//#region ../blocks/src/system/runtime/nodes/events/shared/listingLayout.ts
|
|
7045
6933
|
/**
|
|
7046
|
-
*
|
|
6934
|
+
* Layout classes for event listing containers and cards. Presentation
|
|
6935
|
+
* plumbing rather than event domain logic, so it lives beside the components.
|
|
7047
6936
|
*/
|
|
7048
6937
|
/**
|
|
7049
6938
|
* Column class mappings for grid layouts, derived from the canonical
|
|
@@ -7078,187 +6967,6 @@ function getCardOrientation(layout) {
|
|
|
7078
6967
|
case "compact": return "vertical";
|
|
7079
6968
|
}
|
|
7080
6969
|
}
|
|
7081
|
-
/**
|
|
7082
|
-
* Format date for display.
|
|
7083
|
-
* Returns: "Monday, January 15, 2025"
|
|
7084
|
-
*/
|
|
7085
|
-
function formatDate(isoTimestamp, options) {
|
|
7086
|
-
return formatBookingDate(toScheduledBookingDateTime({
|
|
7087
|
-
startsAt: isoTimestamp,
|
|
7088
|
-
timeZone: toBookingTimeZone(options?.timeZone ?? "UTC"),
|
|
7089
|
-
locale: options?.locale ?? "en-US"
|
|
7090
|
-
}), {
|
|
7091
|
-
weekday: "long",
|
|
7092
|
-
year: "numeric",
|
|
7093
|
-
month: "long",
|
|
7094
|
-
day: "numeric"
|
|
7095
|
-
});
|
|
7096
|
-
}
|
|
7097
|
-
/**
|
|
7098
|
-
* Format time for display.
|
|
7099
|
-
* Returns: "10:00 AM"
|
|
7100
|
-
*/
|
|
7101
|
-
function formatTime(isoTimestamp, options) {
|
|
7102
|
-
return formatBookingTime(toScheduledBookingDateTime({
|
|
7103
|
-
startsAt: isoTimestamp,
|
|
7104
|
-
timeZone: toBookingTimeZone(options?.timeZone ?? "UTC"),
|
|
7105
|
-
locale: options?.locale ?? "en-US"
|
|
7106
|
-
}), {
|
|
7107
|
-
hour: "numeric",
|
|
7108
|
-
minute: "2-digit",
|
|
7109
|
-
hour12: true
|
|
7110
|
-
});
|
|
7111
|
-
}
|
|
7112
|
-
function formatEventDateParts(args) {
|
|
7113
|
-
const scheduledRange = toScheduledBookingDateRange({
|
|
7114
|
-
startsAt: args.startsAt,
|
|
7115
|
-
endsAt: args.endsAt,
|
|
7116
|
-
timeZone: toBookingTimeZone(args.timeZone ?? "UTC"),
|
|
7117
|
-
locale: args.locale ?? "en-US"
|
|
7118
|
-
});
|
|
7119
|
-
const { date, time: start } = formatBookingDateParts(scheduledRange, { dateFormat: {
|
|
7120
|
-
weekday: "long",
|
|
7121
|
-
year: "numeric",
|
|
7122
|
-
month: "long",
|
|
7123
|
-
day: "numeric"
|
|
7124
|
-
} });
|
|
7125
|
-
return {
|
|
7126
|
-
date,
|
|
7127
|
-
timeRange: `${start} – ${formatBookingTime(toScheduledBookingDateTime({
|
|
7128
|
-
startsAt: args.endsAt,
|
|
7129
|
-
timeZone: scheduledRange.timeZone,
|
|
7130
|
-
locale: args.locale ?? "en-US"
|
|
7131
|
-
}))}`
|
|
7132
|
-
};
|
|
7133
|
-
}
|
|
7134
|
-
function formatEventCompactDateRail(isoTimestamp, options) {
|
|
7135
|
-
const dateTime = toScheduledBookingDateTime({
|
|
7136
|
-
startsAt: isoTimestamp,
|
|
7137
|
-
timeZone: toBookingTimeZone(options?.timeZone ?? "UTC"),
|
|
7138
|
-
locale: options?.locale ?? "en-US"
|
|
7139
|
-
});
|
|
7140
|
-
const weekday = formatBookingDate(dateTime, { weekday: "short" }).toLocaleUpperCase(options?.locale ?? "en-US");
|
|
7141
|
-
const month = formatBookingDate(dateTime, { month: "short" }).toLocaleUpperCase(options?.locale ?? "en-US");
|
|
7142
|
-
return {
|
|
7143
|
-
weekday,
|
|
7144
|
-
day: formatBookingDate(dateTime, { day: "numeric" }),
|
|
7145
|
-
month,
|
|
7146
|
-
label: formatBookingDate(dateTime, {
|
|
7147
|
-
weekday: "long",
|
|
7148
|
-
year: "numeric",
|
|
7149
|
-
month: "long",
|
|
7150
|
-
day: "numeric"
|
|
7151
|
-
})
|
|
7152
|
-
};
|
|
7153
|
-
}
|
|
7154
|
-
function formatTeamMemberNames(names) {
|
|
7155
|
-
const normalized = names.map((name) => name.trim()).filter(Boolean);
|
|
7156
|
-
if (normalized.length === 0) return null;
|
|
7157
|
-
const [firstName, secondName] = normalized;
|
|
7158
|
-
if (!firstName) return null;
|
|
7159
|
-
if (normalized.length === 1) return firstName;
|
|
7160
|
-
if (normalized.length === 2 && secondName) return `${firstName} and ${secondName}`;
|
|
7161
|
-
const finalName = normalized[normalized.length - 1] ?? "";
|
|
7162
|
-
return `${normalized.slice(0, -1).join(", ")}, and ${finalName}`;
|
|
7163
|
-
}
|
|
7164
|
-
function formatEventTeacherLine(event) {
|
|
7165
|
-
const names = formatTeamMemberNames((event.teamMembers ?? []).map((teamMember) => teamMember.name));
|
|
7166
|
-
return names ? `with ${names}` : null;
|
|
7167
|
-
}
|
|
7168
|
-
/**
|
|
7169
|
-
* Group events by their local date (YYYY-MM-DD key in each event's own
|
|
7170
|
-
* timezone). Thin domain wrapper over `groupItemsByDate` from the calendar
|
|
7171
|
-
* package; preserves the historical `Map<string, PublicEvent[]>` shape.
|
|
7172
|
-
*/
|
|
7173
|
-
function groupEventsByDate(events, calendarTimeZone) {
|
|
7174
|
-
const grouped = groupItemsByDate(events, {
|
|
7175
|
-
getStartsAt: (event) => event.startsAt,
|
|
7176
|
-
getTimeZone: () => calendarTimeZone
|
|
7177
|
-
});
|
|
7178
|
-
const map = /* @__PURE__ */ new Map();
|
|
7179
|
-
for (const [dateKey, bucket] of grouped) map.set(dateKey, [...bucket]);
|
|
7180
|
-
return map;
|
|
7181
|
-
}
|
|
7182
|
-
/**
|
|
7183
|
-
* Format event price for display.
|
|
7184
|
-
* @returns "Free", "£25", "£12 - £25", "Free / £12 - £25", "Course (From £40)", etc.
|
|
7185
|
-
*
|
|
7186
|
-
* Events render compact amounts (no trailing ".00"); the actual ADT→string
|
|
7187
|
-
* mapping lives in `formatBookingPriceDisplay` in @riverbankcms/core so all
|
|
7188
|
-
* surfaces stay consistent.
|
|
7189
|
-
*/
|
|
7190
|
-
function formatEventPrice(event) {
|
|
7191
|
-
return formatEventPricing(resolveRuntimeEventPricing(event), { decimals: "auto" });
|
|
7192
|
-
}
|
|
7193
|
-
/**
|
|
7194
|
-
* Format an event's price directly from its pricing value (without the full
|
|
7195
|
-
* event). Same output as {@link formatEventPrice}.
|
|
7196
|
-
*/
|
|
7197
|
-
function formatEventPriceDisplay(pricing) {
|
|
7198
|
-
return formatEventPricing(pricing, { decimals: "auto" });
|
|
7199
|
-
}
|
|
7200
|
-
function closedEventBookingLabel(reason) {
|
|
7201
|
-
switch (reason) {
|
|
7202
|
-
case "occurrence_cancelled":
|
|
7203
|
-
case "series_cancelled": return "Cancelled";
|
|
7204
|
-
case "occurrence_completed":
|
|
7205
|
-
case "series_completed": return "Completed";
|
|
7206
|
-
case "series_draft":
|
|
7207
|
-
case "series_archived":
|
|
7208
|
-
case "parent_archived":
|
|
7209
|
-
case "parent_inconsistent":
|
|
7210
|
-
case "not_public":
|
|
7211
|
-
case "already_started":
|
|
7212
|
-
case "enrollment_closed": return "Registration closed";
|
|
7213
|
-
default: return assertNever$2(reason);
|
|
7214
|
-
}
|
|
7215
|
-
}
|
|
7216
|
-
function resolveEventHref(event) {
|
|
7217
|
-
const destination = resolveRuntimeEventDestination(event);
|
|
7218
|
-
return destination.kind === "external" ? destination.url : destination.path;
|
|
7219
|
-
}
|
|
7220
|
-
function resolveEventLinkProps(event) {
|
|
7221
|
-
const href = resolveEventHref(event);
|
|
7222
|
-
return resolveRuntimeEventDestination(event).kind === "external" ? {
|
|
7223
|
-
href,
|
|
7224
|
-
target: "_blank",
|
|
7225
|
-
rel: "noopener noreferrer"
|
|
7226
|
-
} : { href };
|
|
7227
|
-
}
|
|
7228
|
-
/**
|
|
7229
|
-
* Resolve the CTA state for an event.
|
|
7230
|
-
* Shared by EventCard and EventCompactRow to keep sold-out, registration-closed,
|
|
7231
|
-
* and course-specific defaults consistent.
|
|
7232
|
-
*/
|
|
7233
|
-
function resolveEventCta(event, buttonText) {
|
|
7234
|
-
const { isFull: isSoldOut } = getEventAvailability(event);
|
|
7235
|
-
const destination = resolveRuntimeEventDestination(event);
|
|
7236
|
-
const isExternal = destination.kind === "external";
|
|
7237
|
-
const defaultButtonText = isExternal ? destination.label : event.bookingScope === "whole_series" ? "Book course" : "Book";
|
|
7238
|
-
const effectiveButtonText = buttonText ?? defaultButtonText;
|
|
7239
|
-
const href = resolveEventHref(event);
|
|
7240
|
-
if (event.bookingAvailability.kind === "closed") {
|
|
7241
|
-
const linksToClosedWholeSeriesDetails = event.bookingAvailability.reason === "enrollment_closed" && !isExternal;
|
|
7242
|
-
return {
|
|
7243
|
-
label: closedEventBookingLabel(event.bookingAvailability.reason),
|
|
7244
|
-
href,
|
|
7245
|
-
external: isExternal,
|
|
7246
|
-
hidden: !linksToClosedWholeSeriesDetails
|
|
7247
|
-
};
|
|
7248
|
-
}
|
|
7249
|
-
if (!isExternal && isSoldOut) return {
|
|
7250
|
-
label: "Sold out",
|
|
7251
|
-
href,
|
|
7252
|
-
external: false,
|
|
7253
|
-
hidden: true
|
|
7254
|
-
};
|
|
7255
|
-
return {
|
|
7256
|
-
label: effectiveButtonText,
|
|
7257
|
-
href,
|
|
7258
|
-
external: isExternal,
|
|
7259
|
-
hidden: false
|
|
7260
|
-
};
|
|
7261
|
-
}
|
|
7262
6970
|
//#endregion
|
|
7263
6971
|
//#region ../blocks/src/system/constants/events.ts
|
|
7264
6972
|
const eventCalendarDisplayModeValues = [
|
|
@@ -12483,4 +12191,4 @@ function defineIslandPropsDecoder(kind) {
|
|
|
12483
12191
|
};
|
|
12484
12192
|
}
|
|
12485
12193
|
//#endregion
|
|
12486
|
-
export {
|
|
12194
|
+
export { deriveBookingFormViewState as $, isSemanticSpacing as A, formatBookingDateTime as At, formatEventPriceDisplay as B, toScheduledBookingDateTime as Bt, getStepNumber as C, okWith as Ct, staticHeaderChromeRuntime as D, buildBookingUtcDateWindow as Dt, buildEventCalendarListingRender as E, addLocalScheduleDays as Et, normalizeCsvString as F, getLocalScheduleDate as Ft, resolveWholeSeriesPricingState as G, publicEventTicketTypes as Gt, resolveRuntimeEventDestination as H, publicEventPricingMode as Ht, normalizeOptionalId as I, parseBookingLocalDate as It, resolveOnColorForThemeToken as J, boxBackgroundSchema as K, formatCurrencyAmount as Kt, getCardOrientation as L, resolveBookingTimeZoneId as Lt, buildEventRuntimeFilters as M, formatBookingTime as Mt, getEventRuntimeFiltersKey as N, formatLocalScheduleDate as Nt, resolveEventRegistrationScopedEvents as O, formatBookingDate as Ot, normalizeCsvIds as P, getBookingLocalDateKey as Pt, logger as Q, getContainerClass as R, toBookingTimeZone as Rt, WIZARD_STEPS as S, ok as St, planEventRegistrationSurface as T, reportWorkflowSuccess as Tt, formatWholeSeriesPriceAmount as U, publicEventPricingType as Ut, resolveRuntimeEventPricing as V, publicEventPricingCurrency as Vt, formatWholeSeriesPriceDisplay as W, publicEventScalarPrice as Wt, themeButtonClassName as X, resolveTokenOrCssColorValue as Y, normalizeCardRole as Z, findEventByOccurrenceId as _, RichTextDocSchema as _t, buildProductDetailDisplay as a, isBookingServiceSlidingAmountInRange as at, resolveEventRequiresPayment as b, clearWorkflowFeedback as bt, EMPTY_COMMERCE_CART_STATE as c, resolveAppointmentCheckoutVerificationState as ct, deriveCommerceCheckoutState as d, resolveDefaultBookingServiceId as dt, formatBookingCentsAsCurrencyInput as et, parseStoredCommerceCartState as f, toSelectedCollectionOptionKind as ft, toWholeSeriesRegistrationEvents as g, isBookingRequirementConsentFieldId as gt, toRegistrationEvents as h, BOOKING_FORM_DATA_RESERVED_KEYS as ht, buildProductCardDisplay as i, getBookingSuccessMessage as it, resolveSpacing as j, formatBookingInstant as jt, SEMANTIC_SPACING_VALUES as k, formatBookingDateParts as kt, buildPassCartItem as l, resolveBookingPaymentStep as lt, reduceCommerceCart as m, resolveSelectedAppointmentConsent as mt, getShopDisplayForItems as n, getBookingRedirectStateFromLocation as nt, formatCommercePrice as o, parseBookingCurrencyInputToCents as ot, productItemKey as p, projectSelectedAppointmentConsentIntoForm as pt, isCssColorLiteral as q, assertNever$2 as qt, buildCartDisplay as r, getBookingServiceSlidingScale as rt, formatInterval as s, prepareBookingSubmission as st, defineIslandPropsDecoder as t, formatBookingSubmissionPreparationError as tt, buildProductCartItem as u, resolveBookingSiteId as ut, findPreSelectedEvent as v, isRecord$5 as vt, getWizardStepsForContext as w, reportWorkflowError as wt, resolveRegistrationTarget as x, err as xt, resolveDiscountContext as y, assertNever$1 as yt, formatEventPrice as z, toScheduledBookingDateRange as zt };
|