@riverbankcms/sdk 0.132.0 → 0.134.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 +10 -0
- package/dist/{PreviewEditorSidebar-DKQ5eFK9.mjs → PreviewEditorSidebar-DfRhJPFQ.mjs} +3 -3
- package/dist/{PreviewEditorUI-CNTcOjCC.mjs → PreviewEditorUI-Dppxcr_g.mjs} +2 -2
- package/dist/{SdkPreviewModeRuntime-DJu3qu33.mjs → SdkPreviewModeRuntime-8CyGCXir.mjs} +46 -15
- package/dist/{SiteChromeCustomizeContext-2TzT3vbj.mjs → SiteChromeCustomizeContext-DVMTMvqA.mjs} +497 -169
- package/dist/_dts/ai/src/contracts/proposals.d.ts +384 -384
- package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +219 -219
- package/dist/_dts/api/src/accountApi.d.ts +5 -5
- package/dist/_dts/api/src/appointmentEndpointDefinitions.d.ts +1 -1
- package/dist/_dts/api/src/bookingOperations.d.ts +2 -14
- package/dist/_dts/api/src/bookings.d.ts +2 -2
- package/dist/_dts/api/src/contentRuntime.d.ts +1 -1
- package/dist/_dts/api/src/courseEndpointDefinitions.d.ts +2 -2
- package/dist/_dts/api/src/endpoints.d.ts +3 -3
- package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
- package/dist/_dts/api/src/navigation/contracts.d.ts +9 -6
- package/dist/_dts/api/src/navigation/linkResolver.d.ts +6 -2
- package/dist/_dts/api/src/navigation/types.d.ts +23 -6
- package/dist/_dts/api/src/navigation.d.ts +1 -1
- package/dist/_dts/api/src/publicBookingService.d.ts +15 -0
- package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +3 -1
- package/dist/_dts/api/src/publicExperience/wholeSeriesEndpoints.d.ts +2 -0
- package/dist/_dts/api/src/sdk-event-upsert.d.ts +1 -1
- package/dist/_dts/api/src/sdkThemeWire.d.ts +50 -50
- package/dist/_dts/api/src/siteBanner.d.ts +4 -2
- package/dist/_dts/api/src/types.d.ts +1 -1
- package/dist/_dts/api/src/webhooks.d.ts +12 -12
- package/dist/_dts/blocks/src/client.d.ts +1 -1
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +28 -72
- package/dist/_dts/blocks/src/index.d.ts +3 -2
- package/dist/_dts/blocks/src/primitives/content/components/RichText.d.ts +2 -2
- package/dist/_dts/blocks/src/primitives/content/primitives.d.ts +1 -0
- package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +36 -14
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/events/whole-series/schemas.d.ts +3 -3
- package/dist/_dts/blocks/src/system/blocks/events/whole-series/types.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +4 -4
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +148 -148
- package/dist/_dts/blocks/src/system/blocks/offerings-preview/model.d.ts +2 -1
- package/dist/_dts/blocks/src/system/blocks/shared/bookingConsent.d.ts +36 -0
- package/dist/_dts/blocks/src/system/manifest/hydrateLinks.d.ts +9 -2
- package/dist/_dts/blocks/src/system/manifest/resolveBlockData.d.ts +8 -0
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +79 -79
- package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +2 -11
- package/dist/_dts/blocks/src/system/runtime/api/types/courses.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/components/multi-step/DynamicFormFields.d.ts +3 -19
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/hooks/useSelectedAppointmentConsentForm.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.consent.d.ts +10 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.field-values.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.fields.d.ts +21 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +38 -144
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +5 -19
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +3 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/AttendeeDetailsStep.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationSurface.d.ts +18 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +4 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/validation.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/components.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/whole-series/whole-series-registration.headless.contract.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +34 -12
- package/dist/_dts/blocks/src/system/runtime/shared/components/BookingConsentAgreement.d.ts +7 -0
- package/dist/_dts/blocks/src/system/runtime/shared/types.d.ts +1 -0
- package/dist/_dts/blocks/src/system/types/link.d.ts +7 -1
- package/dist/_dts/content-model/src/content-types/schema.d.ts +4 -4
- package/dist/_dts/core/src/booking-consent.d.ts +8 -0
- package/dist/_dts/core/src/index.d.ts +1 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +9 -3
- package/dist/_dts/db/src/schemas/forms.d.ts +21 -21
- package/dist/_dts/db/src/types/jsonb.d.ts +1 -1
- package/dist/_dts/editor/src/primitives/rich-text/RichTextEditorSurface.d.ts +2 -1
- package/dist/_dts/editor/src/primitives/rich-text/config.d.ts +2 -1
- package/dist/_dts/editor/src/primitives/rich-text/toolbar/linkPopoverUtils.d.ts +3 -2
- package/dist/_dts/editor/src/primitives/rich-text/useRichTextEditor.d.ts +3 -4
- package/dist/_dts/media-core/src/usageScanner.d.ts +1 -1
- package/dist/_dts/sdk/src/bookings/types.d.ts +7 -89
- package/dist/_dts/sdk/src/config/validation.d.ts +30 -30
- package/dist/_dts/sdk/src/contracts/content.d.ts +10 -36
- package/dist/_dts/sdk/src/contracts/rendering.d.ts +1 -1
- package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +9 -9
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +6 -19
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/accordions/types.d.ts +2 -2
- package/dist/_dts/theme-core/src/buttons/types.d.ts +12 -12
- package/dist/_dts/theme-core/src/cards/types.d.ts +5 -5
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +72 -72
- package/dist/_dts/theme-core/src/navigation/types.d.ts +4 -4
- package/dist/_dts/theme-core/src/palette/colors.d.ts +1 -1
- package/dist/_dts/theme-core/src/palette/curated/types.d.ts +2 -2
- package/dist/_dts/theme-core/src/schema.d.ts +82 -82
- package/dist/_dts/theme-core/src/site-styles/cardRoleVocabulary.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -4
- package/dist/_dts/theme-core/src/site-styles/logoBranding.d.ts +4 -4
- package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +1 -1
- package/dist/_dts/ui/src/badge.d.ts +1 -1
- package/dist/_dts/ui/src/button.d.ts +1 -1
- package/dist/_dts/ui/src/callout.d.ts +1 -1
- package/dist/_dts/ui/src/card.d.ts +1 -1
- package/dist/client/{StepIndicator-CGixP_LW.mjs → BookingConsentAgreement-BxgpGEFD.mjs} +26 -4
- package/dist/client/{DiscountCodeDisclosure-DO7llLxm.mjs → DiscountCodeDisclosure-CfuPOHD0.mjs} +1 -1
- package/dist/client/{EventCombined.client-xID7zN__.mjs → EventCombined.client-DB8Qfzi-.mjs} +3 -3
- package/dist/client/{EventListing.client-CriBslp0.mjs → EventListing.client-DD4X8hp4.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-DYmHnM8g.mjs → LeafletStaticMap-QhgIBQbv.mjs} +1 -1
- package/dist/client/{WholeSeriesRegistrationWizard-BEjzSiOA.mjs → WholeSeriesRegistrationWizard-DwtC7bCs.mjs} +72 -22
- package/dist/client/{accordion-CgFbnnnQ.mjs → accordion-DFXpLvwg.mjs} +1 -1
- package/dist/client/{bookingForm-dUyGpbxc.mjs → bookingForm-sI05d3lk.mjs} +73 -47
- package/dist/client/bookings.mjs +989 -140
- package/dist/client/{carousel-BvBwkUzx.mjs → carousel-wjyWTZCh.mjs} +1 -1
- package/dist/client/{cart-DiZENT2E.mjs → cart-DCwdpA4i.mjs} +3 -3
- package/dist/client/{checkout-Dq13KIgR.mjs → checkout-DTDW3l0R.mjs} +3 -3
- package/dist/client/checkoutUrls-DQYC_Br-.mjs +187 -0
- package/dist/client/client.mjs +556 -237
- package/dist/client/{context-B83PiNzm.mjs → context-TSK1CGx8.mjs} +1 -14
- package/dist/client/{courseRegistration-CKC5NmyH.mjs → courseRegistration-A-Tg7qw_.mjs} +3 -3
- package/dist/client/{eventCalendar-BF0Jatfw.mjs → eventCalendar-B0Zg-i_w.mjs} +5 -5
- package/dist/client/{eventCombined-BuoCF8je.mjs → eventCombined-B8Y2wizd.mjs} +3 -3
- package/dist/client/{eventDetails-CKwh0S9s.mjs → eventDetails-DPDOwURJ.mjs} +3 -3
- package/dist/client/{eventListing-eUxaWFaB.mjs → eventListing-CjBcmSLn.mjs} +3 -3
- package/dist/client/{eventRegistration-CfkNOkPb.mjs → eventRegistration-CK30HsAq.mjs} +111 -64
- package/dist/client/{form-C17H1c_H.mjs → form-CUXfsABE.mjs} +2 -2
- package/dist/client/{headerSection-DEwUmrtt.mjs → headerSection-N-mN3rjr.mjs} +2 -2
- package/dist/client/hooks.mjs +106 -3
- package/dist/client/{locationMap-Pf2QwuvW.mjs → locationMap-oiIDQMBt.mjs} +2 -2
- package/dist/client/{newsletterForm-BWQAH5Sv.mjs → newsletterForm-CkQ2tTrM.mjs} +2 -2
- package/dist/client/{pricing-CVdvbopJ.mjs → pricing-Caa0QWzh.mjs} +1 -1
- package/dist/client/{productDetail-BZi1Fa_G.mjs → productDetail-CnidyrsN.mjs} +3 -3
- package/dist/client/{productList-qq-55DNk.mjs → productList-CttYcS_S.mjs} +3 -3
- package/dist/client/{propsDecoder-BxmqPKdP.mjs → propsDecoder-CeUMxI9a.mjs} +211 -100
- package/dist/client/rendering/client.mjs +428 -151
- package/dist/client/rendering/islands.mjs +18 -18
- package/dist/client/rendering.mjs +643 -324
- package/dist/client/{scrollToBlock-B3CcKdtG.mjs → scrollToBlock-lPr1oqxB.mjs} +1 -1
- package/dist/client/{shop-DNWJPut5.mjs → shop-DXQtMo2O.mjs} +6 -6
- package/dist/client/{shop-commerce-BhvQCosS.mjs → shop-commerce-quDL411J.mjs} +7 -164
- package/dist/client/{shop-commerce-store-B04sCNnW.mjs → shop-commerce-store-Dnu-8Iub.mjs} +1 -1
- package/dist/client/{shopShared-DNNgZlmW.mjs → shopShared-BWPUURvG.mjs} +3 -3
- package/dist/client/{useEventFilters-CUmhE24_.mjs → useEventFilters-DRhWp2_5.mjs} +3 -3
- package/dist/client/{usePolling-M5jG675x.mjs → usePolling-UN4WKnaM.mjs} +2 -2
- package/dist/preview-next/client/runtime.mjs +3 -3
- package/dist/{sdk-runtime-BEXb1wqo.mjs → sdk-runtime-Ca5RD78X.mjs} +1 -1
- package/dist/{separator-DGMuip1D.mjs → separator-CMhj6BTi.mjs} +1 -1
- package/dist/server/components.mjs +117 -37
- package/dist/server/config-validation.mjs +106 -3
- package/dist/server/config.mjs +106 -3
- package/dist/server/data.mjs +106 -3
- package/dist/server/index.mjs +1 -1
- package/dist/server/next.mjs +186 -106
- package/dist/server/page-converter.mjs +105 -2
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +119 -37
- package/dist/server/rendering.mjs +117 -37
- package/dist/server/routing.mjs +132 -73
- package/dist/server/server.mjs +107 -4
- package/dist/server/theme-bridge.mjs +4 -4
- package/package.json +2 -2
- package/dist/client/checkoutUrls-Ct8Mxna3.mjs +0 -26
package/dist/{SiteChromeCustomizeContext-2TzT3vbj.mjs → SiteChromeCustomizeContext-DVMTMvqA.mjs}
RENAMED
|
@@ -77974,20 +77974,7 @@ function createBlockApi(config) {
|
|
|
77974
77974
|
const path = buildPath(WHOLE_SERIES.checkout.path, { siteId: sid });
|
|
77975
77975
|
return request(WHOLE_SERIES.checkout, {
|
|
77976
77976
|
path,
|
|
77977
|
-
body:
|
|
77978
|
-
eventSeriesId: data.eventSeriesId,
|
|
77979
|
-
...data.pricingOptionId ? { pricingOptionId: data.pricingOptionId } : {},
|
|
77980
|
-
...data.selectedSlidingAmount !== void 0 ? { selectedSlidingAmount: data.selectedSlidingAmount } : {},
|
|
77981
|
-
email: data.email,
|
|
77982
|
-
name: data.name,
|
|
77983
|
-
phone: data.phone,
|
|
77984
|
-
formData: data.formData,
|
|
77985
|
-
altchaSolution: data.altchaSolution,
|
|
77986
|
-
discountCode: data.discountCode,
|
|
77987
|
-
successUrl: data.successUrl,
|
|
77988
|
-
cancelUrl: data.cancelUrl,
|
|
77989
|
-
claimToken: data.claimToken
|
|
77990
|
-
}
|
|
77977
|
+
body: data
|
|
77991
77978
|
});
|
|
77992
77979
|
},
|
|
77993
77980
|
async getWholeSeriesRegistrationStatus(params) {
|
|
@@ -90031,7 +90018,7 @@ function normalizeRel(target, rel) {
|
|
|
90031
90018
|
tokens.add("noreferrer");
|
|
90032
90019
|
return Array.from(tokens).join(" ");
|
|
90033
90020
|
}
|
|
90034
|
-
function renderMarks(text, marks, key) {
|
|
90021
|
+
function renderMarks(text, marks, key, linkTarget) {
|
|
90035
90022
|
if (!marks || marks.length === 0) return text;
|
|
90036
90023
|
return marks.reduce((acc, mark) => {
|
|
90037
90024
|
switch (mark.type) {
|
|
@@ -90044,7 +90031,8 @@ function renderMarks(text, marks, key) {
|
|
|
90044
90031
|
const attrs = mark.attrs ?? {};
|
|
90045
90032
|
const href = sanitizeHref(attrs.href);
|
|
90046
90033
|
if (!href) return acc;
|
|
90047
|
-
const
|
|
90034
|
+
const storedTarget = typeof attrs.target === "string" && attrs.target.trim().length > 0 ? attrs.target.trim() : void 0;
|
|
90035
|
+
const target = linkTarget === "new-tab" ? "_blank" : storedTarget;
|
|
90048
90036
|
return /* @__PURE__ */ jsx("a", {
|
|
90049
90037
|
href,
|
|
90050
90038
|
target,
|
|
@@ -90056,14 +90044,14 @@ function renderMarks(text, marks, key) {
|
|
|
90056
90044
|
}
|
|
90057
90045
|
}, text);
|
|
90058
90046
|
}
|
|
90059
|
-
function renderDoc(node, key, imageResolveContext) {
|
|
90047
|
+
function renderDoc(node, key, imageResolveContext, linkTarget) {
|
|
90060
90048
|
if (!node || !node.type) return null;
|
|
90061
|
-
const children = node.content?.map((child, index) => renderDoc(child, `${key}-${index}`, imageResolveContext));
|
|
90049
|
+
const children = node.content?.map((child, index) => renderDoc(child, `${key}-${index}`, imageResolveContext, linkTarget));
|
|
90062
90050
|
switch (node.type) {
|
|
90063
90051
|
case "doc": return /* @__PURE__ */ jsx(Fragment$1, { children });
|
|
90064
90052
|
case "paragraph":
|
|
90065
90053
|
if (!children && !node.text) return /* @__PURE__ */ jsx("p", {}, key);
|
|
90066
|
-
return /* @__PURE__ */ jsx("p", { children: children ?? renderMarks(node.text ?? "", node.marks, key) }, key);
|
|
90054
|
+
return /* @__PURE__ */ jsx("p", { children: children ?? renderMarks(node.text ?? "", node.marks, key, linkTarget) }, key);
|
|
90067
90055
|
case "heading": {
|
|
90068
90056
|
const headingTag = `h${Math.min(Math.max(node.attrs?.level ?? 2, 1), 6)}`;
|
|
90069
90057
|
return React.createElement(headingTag, { key }, children);
|
|
@@ -90105,14 +90093,14 @@ function renderDoc(node, key, imageResolveContext) {
|
|
|
90105
90093
|
decoding: "async"
|
|
90106
90094
|
}, key);
|
|
90107
90095
|
}
|
|
90108
|
-
case "text": return renderMarks(node.text ?? "", node.marks, key);
|
|
90096
|
+
case "text": return renderMarks(node.text ?? "", node.marks, key, linkTarget);
|
|
90109
90097
|
default: return null;
|
|
90110
90098
|
}
|
|
90111
90099
|
}
|
|
90112
90100
|
const DEFAULT_RICH_TEXT_CLASS = "rb-prose rb-max-w-none";
|
|
90113
|
-
function RichText({ as: Comp = "div", className, doc, path }) {
|
|
90101
|
+
function RichText({ as: Comp = "div", className, doc, path, linkTarget = "stored" }) {
|
|
90114
90102
|
const imageResolveContext = getCurrentResolveImageUrlContext() ?? null;
|
|
90115
|
-
const content = doc ? renderDoc(doc, "doc", imageResolveContext) : null;
|
|
90103
|
+
const content = doc ? renderDoc(doc, "doc", imageResolveContext, linkTarget) : null;
|
|
90116
90104
|
const dataAttributes = path ? { "data-builder-richtext": path } : void 0;
|
|
90117
90105
|
return /* @__PURE__ */ jsx(Comp, {
|
|
90118
90106
|
className: className?.trim() || DEFAULT_RICH_TEXT_CLASS,
|
|
@@ -93549,6 +93537,41 @@ function err(error) {
|
|
|
93549
93537
|
function assertNever$5(value, message) {
|
|
93550
93538
|
throw new Error(message ?? `Unexpected value: ${String(value)}`);
|
|
93551
93539
|
}
|
|
93540
|
+
//#endregion
|
|
93541
|
+
//#region ../blocks/src/system/blocks/shared/bookingConsent.ts
|
|
93542
|
+
const BOOKING_REQUIREMENT_CONSENT_FIELD_PREFIX = "booking_requirement_consent_";
|
|
93543
|
+
function toBookingRequirementConsentFieldId(requirementId) {
|
|
93544
|
+
return `${BOOKING_REQUIREMENT_CONSENT_FIELD_PREFIX}${requirementId}`;
|
|
93545
|
+
}
|
|
93546
|
+
function isBookingRequirementConsentFieldId(value) {
|
|
93547
|
+
return value.startsWith(BOOKING_REQUIREMENT_CONSENT_FIELD_PREFIX);
|
|
93548
|
+
}
|
|
93549
|
+
function toBookingRequirementConsentField(consent) {
|
|
93550
|
+
return {
|
|
93551
|
+
id: toBookingRequirementConsentFieldId(consent.requirementId),
|
|
93552
|
+
label: consent.title,
|
|
93553
|
+
type: "booking_requirement_consent",
|
|
93554
|
+
required: true,
|
|
93555
|
+
agreement: consent.agreement,
|
|
93556
|
+
checkboxLabel: consent.checkboxLabel
|
|
93557
|
+
};
|
|
93558
|
+
}
|
|
93559
|
+
const blockBookingConsentSchema = z.object({
|
|
93560
|
+
requirementId: z.string(),
|
|
93561
|
+
title: z.string(),
|
|
93562
|
+
agreement: RichTextDocSchema,
|
|
93563
|
+
checkboxLabel: z.string()
|
|
93564
|
+
});
|
|
93565
|
+
const bookingRequirementConsentFieldSchema = z.object({
|
|
93566
|
+
id: z.string(),
|
|
93567
|
+
label: z.string(),
|
|
93568
|
+
type: z.literal("booking_requirement_consent"),
|
|
93569
|
+
required: z.literal(true),
|
|
93570
|
+
agreement: RichTextDocSchema,
|
|
93571
|
+
checkboxLabel: z.string().min(1)
|
|
93572
|
+
});
|
|
93573
|
+
/** The two live public carriers for consent copy: Event data and appointment fields. */
|
|
93574
|
+
const bookingConsentCarrierSchema = z.union([blockBookingConsentSchema, bookingRequirementConsentFieldSchema]);
|
|
93552
93575
|
const BOOKING_FORM_DATA_RESERVED_KEYS = /* @__PURE__ */ new Set([
|
|
93553
93576
|
"serviceId",
|
|
93554
93577
|
"resourceId",
|
|
@@ -93560,6 +93583,28 @@ const BOOKING_FORM_DATA_RESERVED_KEYS = /* @__PURE__ */ new Set([
|
|
|
93560
93583
|
"selectedAppointmentPackageId"
|
|
93561
93584
|
]);
|
|
93562
93585
|
//#endregion
|
|
93586
|
+
//#region ../blocks/src/system/runtime/nodes/booking-form.consent.ts
|
|
93587
|
+
function resolveSelectedAppointmentConsent(service) {
|
|
93588
|
+
return service?.consent ? {
|
|
93589
|
+
kind: "required-for-selected-service",
|
|
93590
|
+
field: toBookingRequirementConsentField(service.consent)
|
|
93591
|
+
} : { kind: "not-applicable" };
|
|
93592
|
+
}
|
|
93593
|
+
function projectSelectedAppointmentConsentIntoForm(form, selectedConsent) {
|
|
93594
|
+
if (!form) return null;
|
|
93595
|
+
const sourceFields = form.schema?.fields ?? [];
|
|
93596
|
+
const baseFields = sourceFields.filter((field) => field.type !== "booking_requirement_consent");
|
|
93597
|
+
const fields = selectedConsent.kind === "required-for-selected-service" ? [...baseFields, selectedConsent.field] : baseFields;
|
|
93598
|
+
if (selectedConsent.kind === "not-applicable" && baseFields.length === sourceFields.length) return form;
|
|
93599
|
+
return {
|
|
93600
|
+
...form,
|
|
93601
|
+
schema: {
|
|
93602
|
+
...form.schema,
|
|
93603
|
+
fields
|
|
93604
|
+
}
|
|
93605
|
+
};
|
|
93606
|
+
}
|
|
93607
|
+
//#endregion
|
|
93563
93608
|
//#region ../blocks/src/system/runtime/nodes/booking-form.state.ts
|
|
93564
93609
|
function toTrimmedString(value) {
|
|
93565
93610
|
const trimmed = value?.trim();
|
|
@@ -93742,7 +93787,6 @@ function readBookingFieldType(value) {
|
|
|
93742
93787
|
case "select":
|
|
93743
93788
|
case "radio":
|
|
93744
93789
|
case "checkbox":
|
|
93745
|
-
case "booking_requirement_consent":
|
|
93746
93790
|
case "tel":
|
|
93747
93791
|
case "url":
|
|
93748
93792
|
case "number":
|
|
@@ -93777,7 +93821,7 @@ function normalizeBookingSettings(value) {
|
|
|
93777
93821
|
};
|
|
93778
93822
|
}
|
|
93779
93823
|
function isBookingFormService(value) {
|
|
93780
|
-
return isRecord$13(value) && typeof value.id === "string" && typeof value.siteId === "string" && typeof value.title === "string";
|
|
93824
|
+
return isRecord$13(value) && typeof value.id === "string" && typeof value.siteId === "string" && typeof value.title === "string" && (value.consent === void 0 || blockBookingConsentSchema.safeParse(value.consent).success);
|
|
93781
93825
|
}
|
|
93782
93826
|
function collectBookingCustomFields(data) {
|
|
93783
93827
|
const customFields = {};
|
|
@@ -94026,6 +94070,15 @@ const bookingFieldOptionSchema = z.object({
|
|
|
94026
94070
|
value: z.string(),
|
|
94027
94071
|
label: z.string()
|
|
94028
94072
|
});
|
|
94073
|
+
const standardBookingFieldRules = {
|
|
94074
|
+
options: z.array(bookingFieldOptionSchema).optional(),
|
|
94075
|
+
multiple: z.boolean().optional(),
|
|
94076
|
+
minLength: z.number().optional(),
|
|
94077
|
+
maxLength: z.number().optional(),
|
|
94078
|
+
pattern: z.string().optional(),
|
|
94079
|
+
min: z.number().optional(),
|
|
94080
|
+
max: z.number().optional()
|
|
94081
|
+
};
|
|
94029
94082
|
const bookingFieldSchema = z.object({
|
|
94030
94083
|
id: z.string(),
|
|
94031
94084
|
label: z.string(),
|
|
@@ -94036,7 +94089,6 @@ const bookingFieldSchema = z.object({
|
|
|
94036
94089
|
"select",
|
|
94037
94090
|
"radio",
|
|
94038
94091
|
"checkbox",
|
|
94039
|
-
"booking_requirement_consent",
|
|
94040
94092
|
"tel",
|
|
94041
94093
|
"url",
|
|
94042
94094
|
"number",
|
|
@@ -94046,13 +94098,7 @@ const bookingFieldSchema = z.object({
|
|
|
94046
94098
|
required: z.boolean().optional(),
|
|
94047
94099
|
placeholder: z.string().optional(),
|
|
94048
94100
|
helpText: z.string().optional(),
|
|
94049
|
-
|
|
94050
|
-
multiple: z.boolean().optional(),
|
|
94051
|
-
minLength: z.number().optional(),
|
|
94052
|
-
maxLength: z.number().optional(),
|
|
94053
|
-
pattern: z.string().optional(),
|
|
94054
|
-
min: z.number().optional(),
|
|
94055
|
-
max: z.number().optional()
|
|
94101
|
+
...standardBookingFieldRules
|
|
94056
94102
|
});
|
|
94057
94103
|
const bookingSettingsSchema = z.object({
|
|
94058
94104
|
type: z.literal("booking"),
|
|
@@ -94158,7 +94204,8 @@ const bookingServiceSchema = z.object({
|
|
|
94158
94204
|
priceAmount: z.number().nullable().optional(),
|
|
94159
94205
|
priceCurrency: z.string().nullable().optional(),
|
|
94160
94206
|
paymentTerms: blockBookingPaymentTermsSchema.optional(),
|
|
94161
|
-
paymentTermsAvailability: blockBookingPaymentTermsAvailabilitySchema.optional()
|
|
94207
|
+
paymentTermsAvailability: blockBookingPaymentTermsAvailabilitySchema.optional(),
|
|
94208
|
+
consent: blockBookingConsentSchema.optional()
|
|
94162
94209
|
});
|
|
94163
94210
|
const bookingServicesSourceSchema = z.union([
|
|
94164
94211
|
z.array(bookingServiceSchema),
|
|
@@ -94729,6 +94776,7 @@ const publicWholeSeriesOfferingSchema = z.object({
|
|
|
94729
94776
|
pricing: wholeSeriesPricingSchema,
|
|
94730
94777
|
currency: z.string(),
|
|
94731
94778
|
paymentTerms: blockBookingPaymentTermsSchema,
|
|
94779
|
+
consent: blockBookingConsentSchema.nullable(),
|
|
94732
94780
|
enrollmentCapacity: z.number().nullable(),
|
|
94733
94781
|
acceptsMemberships: z.boolean(),
|
|
94734
94782
|
status: z.enum([
|
|
@@ -97677,6 +97725,7 @@ const publicEventSchema = z.object({
|
|
|
97677
97725
|
timeZone: z.string(),
|
|
97678
97726
|
pricing: publicEventPricingSchema,
|
|
97679
97727
|
paymentTerms: blockBookingPaymentTermsSchema,
|
|
97728
|
+
consent: blockBookingConsentSchema.nullable(),
|
|
97680
97729
|
accessRestriction: accessRestrictionSchema,
|
|
97681
97730
|
allowedCategoryIds: z.array(z.string()),
|
|
97682
97731
|
requireGuestDetails: z.boolean().optional(),
|
|
@@ -99626,6 +99675,7 @@ function normalizeGroupPresentation(value) {
|
|
|
99626
99675
|
function resolveAutoCtaPath(source, routes) {
|
|
99627
99676
|
const routeByNormalizedPath = /* @__PURE__ */ new Map();
|
|
99628
99677
|
for (const route of routes ?? []) {
|
|
99678
|
+
if (route.kind === "pageSurface") continue;
|
|
99629
99679
|
const normalized = normalizeRoutePath(route.path);
|
|
99630
99680
|
if (normalized && !routeByNormalizedPath.has(normalized)) routeByNormalizedPath.set(normalized, route.path);
|
|
99631
99681
|
}
|
|
@@ -116841,6 +116891,54 @@ const occurrenceContextSchema = z.object({
|
|
|
116841
116891
|
overrides: z.record(z.string(), z.unknown()).nullable().optional()
|
|
116842
116892
|
}).nullable();
|
|
116843
116893
|
//#endregion
|
|
116894
|
+
//#region ../blocks/src/system/runtime/nodes/event-registration/registrationSurface.ts
|
|
116895
|
+
function planEventRegistrationScope(input) {
|
|
116896
|
+
const subject = input.subject;
|
|
116897
|
+
const selectedRunOffering = input.wholeSeriesOffering;
|
|
116898
|
+
if (subject?.kind !== "eventOffering" || !selectedRunOffering) return {
|
|
116899
|
+
kind: "context",
|
|
116900
|
+
events: resolveEventRegistrationScopedEvents(input.events, {
|
|
116901
|
+
occurrenceContext: input.occurrenceContext,
|
|
116902
|
+
subject
|
|
116903
|
+
})
|
|
116904
|
+
};
|
|
116905
|
+
if (!(selectedRunOffering.eventOfferingId === subject.eventOfferingId && subject.availableEventSeriesIds.some((seriesId) => seriesId === selectedRunOffering.eventSeriesId))) return { kind: "invalidSelectedRun" };
|
|
116906
|
+
return {
|
|
116907
|
+
kind: "selectedRun",
|
|
116908
|
+
events: input.events.filter((event) => event.seriesId === selectedRunOffering.eventSeriesId),
|
|
116909
|
+
offering: selectedRunOffering
|
|
116910
|
+
};
|
|
116911
|
+
}
|
|
116912
|
+
function planEventRegistrationSurface(input) {
|
|
116913
|
+
const scope = planEventRegistrationScope(input);
|
|
116914
|
+
if (scope.kind === "invalidSelectedRun") return { kind: "unavailableWholeSeries" };
|
|
116915
|
+
const scopedEvents = scope.events;
|
|
116916
|
+
const bookingScopes = new Set(scopedEvents.map((event) => event.bookingScope));
|
|
116917
|
+
if (scope.kind === "selectedRun") {
|
|
116918
|
+
if (bookingScopes.size !== 1 || !bookingScopes.has("whole_series")) return { kind: "unavailableWholeSeries" };
|
|
116919
|
+
return {
|
|
116920
|
+
kind: "wholeSeries",
|
|
116921
|
+
offerings: [scope.offering]
|
|
116922
|
+
};
|
|
116923
|
+
}
|
|
116924
|
+
if (!input.occurrenceContext && !input.subject && bookingScopes.has("single_occurrence")) return {
|
|
116925
|
+
kind: "occurrence",
|
|
116926
|
+
events: scopedEvents.filter((event) => event.bookingScope === "single_occurrence")
|
|
116927
|
+
};
|
|
116928
|
+
if (bookingScopes.size === 0 || bookingScopes.has("single_occurrence")) return bookingScopes.has("whole_series") ? { kind: "mixedBookingScopes" } : {
|
|
116929
|
+
kind: "occurrence",
|
|
116930
|
+
events: scopedEvents
|
|
116931
|
+
};
|
|
116932
|
+
const requiredSeriesIds = new Set(scopedEvents.map((event) => event.seriesId));
|
|
116933
|
+
const wholeSeriesOffering = input.wholeSeriesOffering;
|
|
116934
|
+
const offerings = (wholeSeriesOffering ? [wholeSeriesOffering, ...input.wholeSeriesOfferings.filter((offering) => offering.eventSeriesId !== wholeSeriesOffering.eventSeriesId)] : input.wholeSeriesOfferings).filter((offering) => requiredSeriesIds.has(offering.eventSeriesId));
|
|
116935
|
+
const loadedSeriesIds = new Set(offerings.map((offering) => offering.eventSeriesId));
|
|
116936
|
+
return [...requiredSeriesIds].every((seriesId) => loadedSeriesIds.has(seriesId)) && offerings.length > 0 ? {
|
|
116937
|
+
kind: "wholeSeries",
|
|
116938
|
+
offerings
|
|
116939
|
+
} : { kind: "unavailableWholeSeries" };
|
|
116940
|
+
}
|
|
116941
|
+
//#endregion
|
|
116844
116942
|
//#region ../blocks/src/system/runtime/nodes/event-registration/wizardSteps.ts
|
|
116845
116943
|
/**
|
|
116846
116944
|
* Steps that are part of the main wizard and should show the step indicator
|
|
@@ -117054,10 +117152,13 @@ function buildEventRegistrationShellStepLabels(source) {
|
|
|
117054
117152
|
}) : false).map((step) => shellLabelForRegistrationStep(step, scopedEvents));
|
|
117055
117153
|
}
|
|
117056
117154
|
function scopeEventRegistrationEvents(source) {
|
|
117057
|
-
|
|
117155
|
+
const scope = planEventRegistrationScope({
|
|
117156
|
+
events: toRegistrationEvents(source.events ?? []),
|
|
117157
|
+
wholeSeriesOffering: source.wholeSeriesOffering,
|
|
117058
117158
|
occurrenceContext: source.occurrenceContext,
|
|
117059
117159
|
subject: source.subject
|
|
117060
117160
|
});
|
|
117161
|
+
return scope.kind === "invalidSelectedRun" ? [] : scope.events;
|
|
117061
117162
|
}
|
|
117062
117163
|
function shellLabelForRegistrationStep(step, events) {
|
|
117063
117164
|
switch (step) {
|
|
@@ -122408,6 +122509,11 @@ function getChallengeUrl() {
|
|
|
122408
122509
|
return `${getCmsApiUrl()}/public/challenge`;
|
|
122409
122510
|
}
|
|
122410
122511
|
//#endregion
|
|
122512
|
+
//#region ../blocks/src/system/runtime/hooks/useSelectedAppointmentConsentForm.ts
|
|
122513
|
+
function useSelectedAppointmentConsentForm(form, selectedService) {
|
|
122514
|
+
return useMemo(() => projectSelectedAppointmentConsentIntoForm(form, resolveSelectedAppointmentConsent(selectedService)), [form, selectedService]);
|
|
122515
|
+
}
|
|
122516
|
+
//#endregion
|
|
122411
122517
|
//#region ../blocks/src/utils/date-formatting.ts
|
|
122412
122518
|
/**
|
|
122413
122519
|
* Resolve the browser/runtime timezone for booking surfaces.
|
|
@@ -123472,6 +123578,19 @@ function clearBookingFieldError(errors, fieldId) {
|
|
|
123472
123578
|
};
|
|
123473
123579
|
}
|
|
123474
123580
|
//#endregion
|
|
123581
|
+
//#region ../blocks/src/system/runtime/nodes/booking-form.field-values.ts
|
|
123582
|
+
function collectInitialBookingFieldValues(initialData) {
|
|
123583
|
+
const values = {};
|
|
123584
|
+
for (const [key, value] of Object.entries(initialData)) if (!BOOKING_FORM_DATA_RESERVED_KEYS.has(key) && !isBookingRequirementConsentFieldId(key) && isBookingFieldValue(value)) values[key] = value;
|
|
123585
|
+
return values;
|
|
123586
|
+
}
|
|
123587
|
+
function omitBookingConsentEntries(record) {
|
|
123588
|
+
return Object.fromEntries(Object.entries(record).filter(([key]) => !isBookingRequirementConsentFieldId(key)));
|
|
123589
|
+
}
|
|
123590
|
+
function isBookingFieldValue(value) {
|
|
123591
|
+
return value === null || typeof value === "string" || typeof value === "number" || typeof value === "boolean" || Array.isArray(value) && value.every((item) => typeof item === "string");
|
|
123592
|
+
}
|
|
123593
|
+
//#endregion
|
|
123475
123594
|
//#region ../blocks/src/system/runtime/nodes/booking-form.headless.state.ts
|
|
123476
123595
|
const unsafeAsBookingFieldId = (id) => id;
|
|
123477
123596
|
function createInitialBookingFlowReducerState(input) {
|
|
@@ -123483,7 +123602,7 @@ function createInitialBookingFlowReducerState(input) {
|
|
|
123483
123602
|
selectedResourceId: toOptionalAppointmentResourceId(toOptionalString(initialData.resourceId) ?? input.defaultResourceId),
|
|
123484
123603
|
selectedDate: toOptionalString(initialData.selectedDate),
|
|
123485
123604
|
selectedSlot: null,
|
|
123486
|
-
fieldValues:
|
|
123605
|
+
fieldValues: collectInitialBookingFieldValues(initialData),
|
|
123487
123606
|
touchedFields: {},
|
|
123488
123607
|
attemptedStepIds: {},
|
|
123489
123608
|
discountCode: toOptionalString(initialData.discountCode) ?? "",
|
|
@@ -123495,14 +123614,6 @@ function createInitialBookingFlowReducerState(input) {
|
|
|
123495
123614
|
feedback: { kind: "none" }
|
|
123496
123615
|
};
|
|
123497
123616
|
}
|
|
123498
|
-
function collectInitialFieldValues(initialData) {
|
|
123499
|
-
const values = {};
|
|
123500
|
-
for (const [key, value] of Object.entries(initialData)) {
|
|
123501
|
-
if (BOOKING_FORM_DATA_RESERVED_KEYS.has(key) || !isBookingFieldValue(value)) continue;
|
|
123502
|
-
values[key] = value;
|
|
123503
|
-
}
|
|
123504
|
-
return values;
|
|
123505
|
-
}
|
|
123506
123617
|
function toOptionalString(value) {
|
|
123507
123618
|
if (typeof value !== "string") return void 0;
|
|
123508
123619
|
const trimmed = value.trim();
|
|
@@ -123521,9 +123632,6 @@ function toOptionalAppointmentResourceId(value) {
|
|
|
123521
123632
|
function toOptionalCustomerPassId(value) {
|
|
123522
123633
|
return toOptionalBrandedId(value, unsafeAsCustomerPassId);
|
|
123523
123634
|
}
|
|
123524
|
-
function isBookingFieldValue(value) {
|
|
123525
|
-
return value === null || typeof value === "string" || typeof value === "number" || typeof value === "boolean" || Array.isArray(value) && value.every((item) => typeof item === "string");
|
|
123526
|
-
}
|
|
123527
123635
|
/**
|
|
123528
123636
|
* Send the flow back to the date step when the slot it was holding went away,
|
|
123529
123637
|
* leaving a scoped feedback message. A completed booking is left alone.
|
|
@@ -123545,17 +123653,7 @@ function applyAvailabilitySelectionInvalidation(state, invalidation) {
|
|
|
123545
123653
|
}
|
|
123546
123654
|
function bookingFlowReducer(state, event) {
|
|
123547
123655
|
switch (event.type) {
|
|
123548
|
-
case "service-selected": return
|
|
123549
|
-
...state,
|
|
123550
|
-
selectedServiceId: event.serviceId,
|
|
123551
|
-
selectedResourceId: void 0,
|
|
123552
|
-
selectedDate: void 0,
|
|
123553
|
-
selectedSlot: null,
|
|
123554
|
-
selectedAppointmentPackageId: void 0,
|
|
123555
|
-
selectedSlidingAmountInput: "",
|
|
123556
|
-
selectedCollectionOptionKind: void 0,
|
|
123557
|
-
validationErrors: clearBookingFormError(state.validationErrors)
|
|
123558
|
-
};
|
|
123656
|
+
case "service-selected": return applyBookingServiceSelection(state, event.serviceId);
|
|
123559
123657
|
case "resource-selected": return {
|
|
123560
123658
|
...state,
|
|
123561
123659
|
selectedResourceId: event.resourceId ?? void 0,
|
|
@@ -123662,6 +123760,24 @@ function bookingFlowReducer(state, event) {
|
|
|
123662
123760
|
default: return assertNever$5(event);
|
|
123663
123761
|
}
|
|
123664
123762
|
}
|
|
123763
|
+
function applyBookingServiceSelection(state, serviceId) {
|
|
123764
|
+
return {
|
|
123765
|
+
...state,
|
|
123766
|
+
selectedServiceId: serviceId,
|
|
123767
|
+
selectedResourceId: void 0,
|
|
123768
|
+
selectedDate: void 0,
|
|
123769
|
+
selectedSlot: null,
|
|
123770
|
+
selectedAppointmentPackageId: void 0,
|
|
123771
|
+
selectedSlidingAmountInput: "",
|
|
123772
|
+
selectedCollectionOptionKind: void 0,
|
|
123773
|
+
fieldValues: omitBookingConsentEntries(state.fieldValues),
|
|
123774
|
+
touchedFields: omitBookingConsentEntries(state.touchedFields),
|
|
123775
|
+
validationErrors: {
|
|
123776
|
+
...clearBookingFormError(state.validationErrors),
|
|
123777
|
+
fieldErrors: omitBookingConsentEntries(state.validationErrors.fieldErrors)
|
|
123778
|
+
}
|
|
123779
|
+
};
|
|
123780
|
+
}
|
|
123665
123781
|
function clearAvailabilityFeedback(feedback) {
|
|
123666
123782
|
return feedback.kind === "error" && feedback.scope === "availability" ? { kind: "none" } : feedback;
|
|
123667
123783
|
}
|
|
@@ -123822,7 +123938,8 @@ function validateBookingFields(input) {
|
|
|
123822
123938
|
return errors;
|
|
123823
123939
|
}
|
|
123824
123940
|
function validateBookingField(field, value) {
|
|
123825
|
-
|
|
123941
|
+
const requiredError = validateRequiredBookingField(field, value);
|
|
123942
|
+
if (requiredError) return requiredError;
|
|
123826
123943
|
if (isBlankFieldValue(value)) return null;
|
|
123827
123944
|
const strValue = typeof value === "string" ? value : String(value);
|
|
123828
123945
|
if (field.type === "email") return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(strValue) ? null : "Please enter a valid email address";
|
|
@@ -123851,6 +123968,10 @@ function validateBookingField(field, value) {
|
|
|
123851
123968
|
}
|
|
123852
123969
|
return null;
|
|
123853
123970
|
}
|
|
123971
|
+
function validateRequiredBookingField(field, value) {
|
|
123972
|
+
if (field.type === "booking_requirement_consent") return value === true ? null : `${field.label} is required`;
|
|
123973
|
+
return field.required && isBlankFieldValue(value) ? `${field.label} is required` : null;
|
|
123974
|
+
}
|
|
123854
123975
|
function deriveBookingFlowSteps(input) {
|
|
123855
123976
|
const stepResolution = buildBookingStepResolution({
|
|
123856
123977
|
form: input.form,
|
|
@@ -123922,7 +124043,8 @@ function deriveBookingFieldViews(input) {
|
|
|
123922
124043
|
return (input.form?.schema?.fields ?? []).map((field) => {
|
|
123923
124044
|
const fieldId = unsafeAsBookingFieldId(field.id);
|
|
123924
124045
|
const inputId = `${input.idPrefix}-${fieldId}`;
|
|
123925
|
-
const
|
|
124046
|
+
const helpText = field.type === "booking_requirement_consent" ? null : field.helpText ?? null;
|
|
124047
|
+
const helpTextId = helpText ? `${inputId}-help` : null;
|
|
123926
124048
|
const fieldValue = input.values[field.id] ?? null;
|
|
123927
124049
|
const localError = input.touched?.[field.id] ? validateBookingField(field, fieldValue) : null;
|
|
123928
124050
|
const error = input.errors[field.id] ?? localError;
|
|
@@ -123932,17 +124054,17 @@ function deriveBookingFieldViews(input) {
|
|
|
123932
124054
|
field,
|
|
123933
124055
|
id: fieldId,
|
|
123934
124056
|
label: field.label,
|
|
123935
|
-
type: field.type,
|
|
123936
124057
|
value: fieldValue,
|
|
123937
124058
|
required: Boolean(field.required),
|
|
123938
124059
|
error,
|
|
123939
|
-
helpText
|
|
124060
|
+
helpText,
|
|
123940
124061
|
inputId,
|
|
123941
124062
|
labelId: `${inputId}-label`,
|
|
123942
124063
|
helpTextId,
|
|
123943
124064
|
errorId,
|
|
123944
124065
|
describedBy,
|
|
123945
|
-
ariaInvalid: Boolean(error)
|
|
124066
|
+
ariaInvalid: Boolean(error),
|
|
124067
|
+
type: field.type
|
|
123946
124068
|
};
|
|
123947
124069
|
});
|
|
123948
124070
|
}
|
|
@@ -124136,6 +124258,7 @@ function useHeadlessBookingFlow(options) {
|
|
|
124136
124258
|
const selectedServiceId = state.selectedServiceId ?? defaultServiceId;
|
|
124137
124259
|
const selectedResourceId = state.selectedResourceId ?? defaultResourceId;
|
|
124138
124260
|
const selectedService = options.services.find((service) => service.id === selectedServiceId) ?? null;
|
|
124261
|
+
const runtimeForm = useSelectedAppointmentConsentForm(options.form, selectedService);
|
|
124139
124262
|
const lastSlidingServiceIdRef = useRef(null);
|
|
124140
124263
|
useEffect(() => {
|
|
124141
124264
|
const selectedId = selectedService?.id ?? null;
|
|
@@ -124176,7 +124299,7 @@ function useHeadlessBookingFlow(options) {
|
|
|
124176
124299
|
viewerTimeZone
|
|
124177
124300
|
]);
|
|
124178
124301
|
const stepState = useMemo(() => deriveBookingFlowSteps({
|
|
124179
|
-
form:
|
|
124302
|
+
form: runtimeForm,
|
|
124180
124303
|
services: options.services,
|
|
124181
124304
|
data,
|
|
124182
124305
|
defaultServiceId,
|
|
@@ -124192,7 +124315,7 @@ function useHeadlessBookingFlow(options) {
|
|
|
124192
124315
|
defaultServiceId,
|
|
124193
124316
|
defaultResourceId,
|
|
124194
124317
|
options.enableAppointmentPackages,
|
|
124195
|
-
|
|
124318
|
+
runtimeForm,
|
|
124196
124319
|
options.requiresResourceSelection,
|
|
124197
124320
|
options.requiresServiceSelection,
|
|
124198
124321
|
options.services,
|
|
@@ -124246,13 +124369,13 @@ function useHeadlessBookingFlow(options) {
|
|
|
124246
124369
|
state.selectedSlot
|
|
124247
124370
|
]);
|
|
124248
124371
|
const fields = useMemo(() => deriveBookingFieldViews({
|
|
124249
|
-
form:
|
|
124372
|
+
form: runtimeForm,
|
|
124250
124373
|
values: state.fieldValues,
|
|
124251
124374
|
errors: state.validationErrors.fieldErrors,
|
|
124252
124375
|
touched: state.touchedFields,
|
|
124253
124376
|
idPrefix: `booking-${options.formId}`
|
|
124254
124377
|
}), [
|
|
124255
|
-
|
|
124378
|
+
runtimeForm,
|
|
124256
124379
|
options.formId,
|
|
124257
124380
|
state.fieldValues,
|
|
124258
124381
|
state.touchedFields,
|
|
@@ -124372,7 +124495,7 @@ function useHeadlessBookingFlow(options) {
|
|
|
124372
124495
|
const latestRef = useLatestRef({
|
|
124373
124496
|
state,
|
|
124374
124497
|
data,
|
|
124375
|
-
form:
|
|
124498
|
+
form: runtimeForm,
|
|
124376
124499
|
formId: formKey,
|
|
124377
124500
|
services: options.services,
|
|
124378
124501
|
defaultServiceId,
|
|
@@ -124624,7 +124747,7 @@ function useHeadlessBookingFlow(options) {
|
|
|
124624
124747
|
phase: state.phase
|
|
124625
124748
|
});
|
|
124626
124749
|
const view = resolveHeadlessBookingView({
|
|
124627
|
-
form:
|
|
124750
|
+
form: runtimeForm,
|
|
124628
124751
|
feedback: state.feedback
|
|
124629
124752
|
});
|
|
124630
124753
|
const appointmentPackagesModel = resolveAppointmentPackagesModel({
|
|
@@ -125388,6 +125511,27 @@ function FieldValidationMessage({ id, children, className, live = "assertive" })
|
|
|
125388
125511
|
});
|
|
125389
125512
|
}
|
|
125390
125513
|
//#endregion
|
|
125514
|
+
//#region ../blocks/src/system/runtime/shared/components/BookingConsentAgreement.tsx
|
|
125515
|
+
function BookingConsentAgreement({ agreement, showTitle = true, title, titleId }) {
|
|
125516
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [showTitle ? /* @__PURE__ */ jsxs("div", {
|
|
125517
|
+
id: titleId,
|
|
125518
|
+
className: "form-label",
|
|
125519
|
+
children: [title, /* @__PURE__ */ jsx("span", {
|
|
125520
|
+
className: "required-marker",
|
|
125521
|
+
children: "*"
|
|
125522
|
+
})]
|
|
125523
|
+
}) : null, /* @__PURE__ */ jsx("div", {
|
|
125524
|
+
role: "group",
|
|
125525
|
+
"aria-label": showTitle ? void 0 : title,
|
|
125526
|
+
"aria-labelledby": showTitle ? titleId : void 0,
|
|
125527
|
+
children: /* @__PURE__ */ jsx(RichText, {
|
|
125528
|
+
doc: agreement,
|
|
125529
|
+
linkTarget: "new-tab",
|
|
125530
|
+
className: "rb-prose rb-max-w-none"
|
|
125531
|
+
})
|
|
125532
|
+
})] });
|
|
125533
|
+
}
|
|
125534
|
+
//#endregion
|
|
125391
125535
|
//#region ../blocks/src/system/runtime/nodes/booking-form.default-ui.tsx
|
|
125392
125536
|
function optionCardClassName(isSelected) {
|
|
125393
125537
|
return `rb-option-card${isSelected ? " rb-option-card--selected" : ""}`;
|
|
@@ -125836,7 +125980,11 @@ function DefaultDynamicField({ booking, field }) {
|
|
|
125836
125980
|
return /* @__PURE__ */ jsxs("div", {
|
|
125837
125981
|
className: "rb-space-y-2",
|
|
125838
125982
|
children: [
|
|
125839
|
-
/* @__PURE__ */
|
|
125983
|
+
field.field.type === "booking_requirement_consent" ? /* @__PURE__ */ jsx(BookingConsentAgreement, {
|
|
125984
|
+
agreement: field.field.agreement,
|
|
125985
|
+
title: field.label,
|
|
125986
|
+
titleId: field.labelId
|
|
125987
|
+
}) : /* @__PURE__ */ jsxs("label", {
|
|
125840
125988
|
id: field.labelId,
|
|
125841
125989
|
htmlFor: field.inputId,
|
|
125842
125990
|
className: "form-label",
|
|
@@ -125881,7 +126029,7 @@ function DefaultFieldInput({ describedBy, error, errorId, field, onBlur, onChang
|
|
|
125881
126029
|
required: field.required,
|
|
125882
126030
|
...validationProps
|
|
125883
126031
|
};
|
|
125884
|
-
switch (field.type) {
|
|
126032
|
+
switch (field.field.type) {
|
|
125885
126033
|
case "textarea": return /* @__PURE__ */ jsx("textarea", {
|
|
125886
126034
|
...commonProps,
|
|
125887
126035
|
value: strValue,
|
|
@@ -125995,7 +126143,7 @@ function DefaultFieldInput({ describedBy, error, errorId, field, onBlur, onChang
|
|
|
125995
126143
|
className: "form-checkbox rb-mt-0.5"
|
|
125996
126144
|
}), /* @__PURE__ */ jsx("span", {
|
|
125997
126145
|
className: "rb-caption",
|
|
125998
|
-
children: field.field.
|
|
126146
|
+
children: field.field.checkboxLabel
|
|
125999
126147
|
})]
|
|
126000
126148
|
});
|
|
126001
126149
|
case "number": return /* @__PURE__ */ jsx("input", {
|
|
@@ -126064,10 +126212,10 @@ function DefaultBookingDiscount({ booking }) {
|
|
|
126064
126212
|
children: /* @__PURE__ */ jsxs("p", {
|
|
126065
126213
|
className: "ab-text",
|
|
126066
126214
|
children: [
|
|
126067
|
-
"Discount available:
|
|
126068
|
-
booking.discount.autoAppliedDiscount.publicLabel,
|
|
126215
|
+
"Discount available:",
|
|
126069
126216
|
" ",
|
|
126070
|
-
|
|
126217
|
+
booking.discount.autoAppliedDiscount.publicLabel,
|
|
126218
|
+
" will apply automatically at checkout."
|
|
126071
126219
|
]
|
|
126072
126220
|
})
|
|
126073
126221
|
}) : null]
|
|
@@ -127812,13 +127960,72 @@ function LoggedInAsUser({ email, onLogout, classPrefix }) {
|
|
|
127812
127960
|
}
|
|
127813
127961
|
//#endregion
|
|
127814
127962
|
//#region ../blocks/src/system/runtime/nodes/event-registration/AttendeeDetailsStep.tsx
|
|
127963
|
+
function EventConsentField({ consent, error, formData, idBase, onChange }) {
|
|
127964
|
+
const errorId = `${idBase}-consent-error`;
|
|
127965
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
127966
|
+
className: "er-field",
|
|
127967
|
+
children: [
|
|
127968
|
+
/* @__PURE__ */ jsx(BookingConsentAgreement, {
|
|
127969
|
+
agreement: consent.agreement,
|
|
127970
|
+
title: consent.title,
|
|
127971
|
+
titleId: `${idBase}-consent-title`
|
|
127972
|
+
}),
|
|
127973
|
+
/* @__PURE__ */ jsxs("label", {
|
|
127974
|
+
className: "er-label rb-flex rb-items-start rb-gap-2 rb-cursor-pointer",
|
|
127975
|
+
children: [
|
|
127976
|
+
/* @__PURE__ */ jsx("input", {
|
|
127977
|
+
"aria-describedby": error ? errorId : void 0,
|
|
127978
|
+
className: "form-checkbox rb-mt-0.5",
|
|
127979
|
+
checked: formData.consentAccepted === true,
|
|
127980
|
+
onChange: (event) => onChange({
|
|
127981
|
+
...formData,
|
|
127982
|
+
consentAccepted: event.target.checked
|
|
127983
|
+
}),
|
|
127984
|
+
type: "checkbox"
|
|
127985
|
+
}),
|
|
127986
|
+
consent.checkboxLabel,
|
|
127987
|
+
" ",
|
|
127988
|
+
/* @__PURE__ */ jsx("span", {
|
|
127989
|
+
className: "er-required",
|
|
127990
|
+
children: "*"
|
|
127991
|
+
})
|
|
127992
|
+
]
|
|
127993
|
+
}),
|
|
127994
|
+
error ? /* @__PURE__ */ jsx(FieldValidationMessage, {
|
|
127995
|
+
id: errorId,
|
|
127996
|
+
className: "er-error",
|
|
127997
|
+
children: error
|
|
127998
|
+
}) : null
|
|
127999
|
+
]
|
|
128000
|
+
});
|
|
128001
|
+
}
|
|
128002
|
+
function resolveGuestDetailsChangeHandler(requireGuestDetails, ticketsCount, onGuestsChange) {
|
|
128003
|
+
return requireGuestDetails && ticketsCount > 1 && onGuestsChange ? onGuestsChange : null;
|
|
128004
|
+
}
|
|
128005
|
+
function NotesField({ id, onChange, value }) {
|
|
128006
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
128007
|
+
className: "er-field",
|
|
128008
|
+
children: [/* @__PURE__ */ jsx("label", {
|
|
128009
|
+
className: "er-label",
|
|
128010
|
+
htmlFor: id,
|
|
128011
|
+
children: "Notes"
|
|
128012
|
+
}), /* @__PURE__ */ jsx("textarea", {
|
|
128013
|
+
id,
|
|
128014
|
+
value,
|
|
128015
|
+
onChange: (event) => onChange(event.target.value),
|
|
128016
|
+
className: "er-input",
|
|
128017
|
+
placeholder: "Any special requirements or notes (optional)",
|
|
128018
|
+
rows: 3
|
|
128019
|
+
})]
|
|
128020
|
+
});
|
|
128021
|
+
}
|
|
127815
128022
|
/**
|
|
127816
128023
|
* Attendee Details Step
|
|
127817
128024
|
*
|
|
127818
128025
|
* Collects attendee information: name, email, phone, and notes.
|
|
127819
128026
|
* Validates required fields and displays errors.
|
|
127820
128027
|
*/
|
|
127821
|
-
const AttendeeDetailsStep = ({ formData, onChange, errors, emailLocked = false, onLogout, ticketsCount = 1, requireGuestDetails = false, guests = [], onGuestsChange, guestErrors = {}, guestSectionShake = false, onGuestShakeEnd }) => {
|
|
128028
|
+
const AttendeeDetailsStep = ({ formData, onChange, errors, emailLocked = false, onLogout, ticketsCount = 1, requireGuestDetails = false, guests = [], onGuestsChange, guestErrors = {}, guestSectionShake = false, onGuestShakeEnd, consent }) => {
|
|
127822
128029
|
const idBase = useId();
|
|
127823
128030
|
const nameId = `${idBase}-name`;
|
|
127824
128031
|
const emailId = `${idBase}-email`;
|
|
@@ -127834,7 +128041,7 @@ const AttendeeDetailsStep = ({ formData, onChange, errors, emailLocked = false,
|
|
|
127834
128041
|
message: errors.email,
|
|
127835
128042
|
messageId: emailErrorId
|
|
127836
128043
|
});
|
|
127837
|
-
const
|
|
128044
|
+
const guestDetailsChangeHandler = resolveGuestDetailsChangeHandler(requireGuestDetails, ticketsCount, onGuestsChange);
|
|
127838
128045
|
return /* @__PURE__ */ jsxs("div", {
|
|
127839
128046
|
className: "rb-reg-stack er-stack",
|
|
127840
128047
|
children: [
|
|
@@ -127927,29 +128134,26 @@ const AttendeeDetailsStep = ({ formData, onChange, errors, emailLocked = false,
|
|
|
127927
128134
|
placeholder: "(optional)"
|
|
127928
128135
|
})]
|
|
127929
128136
|
}),
|
|
127930
|
-
/* @__PURE__ */
|
|
127931
|
-
|
|
127932
|
-
|
|
127933
|
-
|
|
127934
|
-
|
|
127935
|
-
|
|
127936
|
-
})
|
|
127937
|
-
|
|
127938
|
-
|
|
127939
|
-
|
|
127940
|
-
|
|
127941
|
-
|
|
127942
|
-
|
|
127943
|
-
|
|
127944
|
-
|
|
127945
|
-
rows: 3
|
|
127946
|
-
})]
|
|
127947
|
-
})
|
|
128137
|
+
/* @__PURE__ */ jsx(NotesField, {
|
|
128138
|
+
id: notesId,
|
|
128139
|
+
value: formData.notes,
|
|
128140
|
+
onChange: (notes) => onChange({
|
|
128141
|
+
...formData,
|
|
128142
|
+
notes
|
|
128143
|
+
})
|
|
128144
|
+
}),
|
|
128145
|
+
consent ? /* @__PURE__ */ jsx(EventConsentField, {
|
|
128146
|
+
consent,
|
|
128147
|
+
error: errors.consentAccepted,
|
|
128148
|
+
formData,
|
|
128149
|
+
idBase,
|
|
128150
|
+
onChange
|
|
128151
|
+
}) : null
|
|
127948
128152
|
] }),
|
|
127949
|
-
|
|
128153
|
+
guestDetailsChangeHandler && /* @__PURE__ */ jsx(GuestDetailsSection, {
|
|
127950
128154
|
guests,
|
|
127951
128155
|
errors: guestErrors,
|
|
127952
|
-
onChange:
|
|
128156
|
+
onChange: guestDetailsChangeHandler,
|
|
127953
128157
|
shake: guestSectionShake,
|
|
127954
128158
|
onShakeEnd: onGuestShakeEnd
|
|
127955
128159
|
})
|
|
@@ -128721,6 +128925,9 @@ const VerifyingTimeoutStep$1 = ({ onCheckAgain, supportEmail }) => {
|
|
|
128721
128925
|
};
|
|
128722
128926
|
//#endregion
|
|
128723
128927
|
//#region ../blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizardContent.tsx
|
|
128928
|
+
function getWizardConsent(wizard) {
|
|
128929
|
+
return (wizard.selectedEvent ?? wizard.preSelectedEvent)?.consent ?? null;
|
|
128930
|
+
}
|
|
128724
128931
|
function EventRegistrationWizardContent(props) {
|
|
128725
128932
|
const { wizard } = props;
|
|
128726
128933
|
const showSpamProtection = props.showSpamProtection ?? isSpamProtectionEnabled();
|
|
@@ -128800,7 +129007,8 @@ function EventRegistrationWizardContent(props) {
|
|
|
128800
129007
|
onGuestsChange: wizard.setGuests,
|
|
128801
129008
|
guestErrors: wizard.guestErrors,
|
|
128802
129009
|
guestSectionShake: wizard.guestSectionShake,
|
|
128803
|
-
onGuestShakeEnd: wizard.handleGuestShakeEnd
|
|
129010
|
+
onGuestShakeEnd: wizard.handleGuestShakeEnd,
|
|
129011
|
+
consent: getWizardConsent(wizard)
|
|
128804
129012
|
}),
|
|
128805
129013
|
showSpamProtection && /* @__PURE__ */ jsx("div", {
|
|
128806
129014
|
className: "er-altcha",
|
|
@@ -129168,11 +129376,21 @@ function EventRegistrationSummaryBar(props) {
|
|
|
129168
129376
|
}
|
|
129169
129377
|
//#endregion
|
|
129170
129378
|
//#region ../blocks/src/system/runtime/nodes/event-registration/validation.ts
|
|
129171
|
-
function
|
|
129379
|
+
function createInitialRegistrationFormData() {
|
|
129380
|
+
return {
|
|
129381
|
+
name: "",
|
|
129382
|
+
email: "",
|
|
129383
|
+
phone: "",
|
|
129384
|
+
notes: "",
|
|
129385
|
+
consentAccepted: false
|
|
129386
|
+
};
|
|
129387
|
+
}
|
|
129388
|
+
function validateFormData(formData, requiresConsent = false) {
|
|
129172
129389
|
const errors = {};
|
|
129173
129390
|
if (!formData.name.trim()) errors.name = "Name is required";
|
|
129174
129391
|
if (!formData.email.trim()) errors.email = "Email is required";
|
|
129175
129392
|
else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(formData.email)) errors.email = "Invalid email address";
|
|
129393
|
+
if (requiresConsent && formData.consentAccepted !== true) errors.consentAccepted = "Please read and accept the agreement before continuing.";
|
|
129176
129394
|
return errors;
|
|
129177
129395
|
}
|
|
129178
129396
|
//#endregion
|
|
@@ -129991,6 +130209,7 @@ function useEventRegistrationSubmitWithDeps(options, deps) {
|
|
|
129991
130209
|
name: options.formData.name.trim(),
|
|
129992
130210
|
phone: options.formData.phone.trim() || void 0,
|
|
129993
130211
|
notes: options.formData.notes.trim() || void 0,
|
|
130212
|
+
consentAccepted: options.formData.consentAccepted,
|
|
129994
130213
|
altchaSolution: options.altchaSolution,
|
|
129995
130214
|
paymentMethod: method,
|
|
129996
130215
|
customerPassId: method === "pass" ? passId : void 0,
|
|
@@ -130127,12 +130346,7 @@ function useEventRegistrationWizardWithDeps(options, deps) {
|
|
|
130127
130346
|
const step = flowState.step;
|
|
130128
130347
|
const paymentSelection = flowState.paymentSelection;
|
|
130129
130348
|
const [selectedEvent, setSelectedEvent] = useState(preSelectedEvent ?? null);
|
|
130130
|
-
const [formData, setFormData] = useState(
|
|
130131
|
-
name: "",
|
|
130132
|
-
email: "",
|
|
130133
|
-
phone: "",
|
|
130134
|
-
notes: ""
|
|
130135
|
-
});
|
|
130349
|
+
const [formData, setFormData] = useState(createInitialRegistrationFormData);
|
|
130136
130350
|
const [errors, setErrors] = useState({});
|
|
130137
130351
|
const [guests, setGuests] = useState([]);
|
|
130138
130352
|
const [guestErrors, setGuestErrors] = useState({});
|
|
@@ -130430,7 +130644,7 @@ function useEventRegistrationWizardWithDeps(options, deps) {
|
|
|
130430
130644
|
guests
|
|
130431
130645
|
]);
|
|
130432
130646
|
const validateForm = () => {
|
|
130433
|
-
const newErrors = validateFormData(formData);
|
|
130647
|
+
const newErrors = validateFormData(formData, Boolean(currentEvent?.consent));
|
|
130434
130648
|
setErrors(newErrors);
|
|
130435
130649
|
const newGuestErrors = {};
|
|
130436
130650
|
if (requireGuestDetails && guests.length > 0) {
|
|
@@ -130619,6 +130833,10 @@ function useEventRegistrationWizardWithDeps(options, deps) {
|
|
|
130619
130833
|
});
|
|
130620
130834
|
const handleEventSelect = (event) => {
|
|
130621
130835
|
setSelectedEvent(event);
|
|
130836
|
+
setFormData((current) => ({
|
|
130837
|
+
...current,
|
|
130838
|
+
consentAccepted: false
|
|
130839
|
+
}));
|
|
130622
130840
|
const slidingScale = getSlidingScaleForEvent(event);
|
|
130623
130841
|
setSelectedSlidingAmountInput(slidingScale?.suggestedAmount !== null && slidingScale?.suggestedAmount !== void 0 ? formatCentsAsCurrencyInput$1(slidingScale.suggestedAmount) : "");
|
|
130624
130842
|
setSelectedAttendanceMode((event.deliveryMode ?? "in_person") === "hybrid" ? null : (event.deliveryMode ?? "in_person") === "online" ? "online" : "in_person");
|
|
@@ -131882,6 +132100,7 @@ function validateSubmission(state, setters) {
|
|
|
131882
132100
|
message: "Choose an available set of dates to continue."
|
|
131883
132101
|
};
|
|
131884
132102
|
const errors = validateFormData$1(state.formData);
|
|
132103
|
+
if (state.selectedRun.consent && state.formData.consentAccepted !== true) errors.consentAccepted = "Please read and accept the agreement before continuing.";
|
|
131885
132104
|
setters.setErrors(errors);
|
|
131886
132105
|
if (Object.keys(errors).length > 0) return { kind: "validation-failed" };
|
|
131887
132106
|
const pricingMessage = getMissingWholeSeriesPricingSelectionMessage(state.pricing);
|
|
@@ -131905,6 +132124,7 @@ function registrantPayload(state) {
|
|
|
131905
132124
|
name: state.formData.name.trim(),
|
|
131906
132125
|
phone: state.formData.phone.trim() || void 0,
|
|
131907
132126
|
formData: { notes: state.formData.notes.trim() || void 0 },
|
|
132127
|
+
consentAccepted: state.formData.consentAccepted,
|
|
131908
132128
|
altchaSolution: state.altchaSolution,
|
|
131909
132129
|
claimToken: state.claimToken ?? void 0
|
|
131910
132130
|
};
|
|
@@ -132028,7 +132248,8 @@ const EMPTY_FORM$1 = {
|
|
|
132028
132248
|
name: "",
|
|
132029
132249
|
email: "",
|
|
132030
132250
|
phone: "",
|
|
132031
|
-
notes: ""
|
|
132251
|
+
notes: "",
|
|
132252
|
+
consentAccepted: false
|
|
132032
132253
|
};
|
|
132033
132254
|
function useWholeSeriesRegistrationPortal(api) {
|
|
132034
132255
|
const [formData, setFormData] = useState(EMPTY_FORM$1);
|
|
@@ -132566,19 +132787,65 @@ function WholeSeriesSlidingScaleInput({ pricing, value, onChange }) {
|
|
|
132566
132787
|
]
|
|
132567
132788
|
});
|
|
132568
132789
|
}
|
|
132569
|
-
function
|
|
132570
|
-
|
|
132571
|
-
|
|
132572
|
-
|
|
132573
|
-
|
|
132574
|
-
|
|
132575
|
-
|
|
132576
|
-
|
|
132577
|
-
|
|
132578
|
-
|
|
132579
|
-
|
|
132580
|
-
|
|
132581
|
-
|
|
132790
|
+
function WholeSeriesConsentField({ consent, error, formData, isLoading, onChange }) {
|
|
132791
|
+
const errorId = "er-whole-series-consent-error";
|
|
132792
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
132793
|
+
className: "er-whole-series-form__field",
|
|
132794
|
+
children: [
|
|
132795
|
+
/* @__PURE__ */ jsx(BookingConsentAgreement, {
|
|
132796
|
+
agreement: consent.agreement,
|
|
132797
|
+
title: consent.title,
|
|
132798
|
+
titleId: "er-whole-series-consent-title"
|
|
132799
|
+
}),
|
|
132800
|
+
/* @__PURE__ */ jsxs("label", {
|
|
132801
|
+
className: "er-whole-series-form__label rb-flex rb-items-start rb-gap-2 rb-cursor-pointer",
|
|
132802
|
+
children: [
|
|
132803
|
+
/* @__PURE__ */ jsx("input", {
|
|
132804
|
+
type: "checkbox",
|
|
132805
|
+
className: "form-checkbox rb-mt-0.5",
|
|
132806
|
+
checked: formData.consentAccepted === true,
|
|
132807
|
+
disabled: isLoading,
|
|
132808
|
+
"aria-describedby": error ? errorId : void 0,
|
|
132809
|
+
onChange: (event) => onChange({
|
|
132810
|
+
...formData,
|
|
132811
|
+
consentAccepted: event.target.checked
|
|
132812
|
+
})
|
|
132813
|
+
}),
|
|
132814
|
+
consent.checkboxLabel,
|
|
132815
|
+
" *"
|
|
132816
|
+
]
|
|
132817
|
+
}),
|
|
132818
|
+
error ? /* @__PURE__ */ jsx(FieldValidationMessage, {
|
|
132819
|
+
id: errorId,
|
|
132820
|
+
className: "er-whole-series-form__error",
|
|
132821
|
+
children: error
|
|
132822
|
+
}) : null
|
|
132823
|
+
]
|
|
132824
|
+
});
|
|
132825
|
+
}
|
|
132826
|
+
function EnrollmentForm({ formData, errors, onChange, isEmailLocked, isLoading, onLogout, consent }) {
|
|
132827
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
132828
|
+
/* @__PURE__ */ jsx(EnrollmentIdentityFields, {
|
|
132829
|
+
formData,
|
|
132830
|
+
errors,
|
|
132831
|
+
onChange,
|
|
132832
|
+
isEmailLocked,
|
|
132833
|
+
isLoading,
|
|
132834
|
+
onLogout
|
|
132835
|
+
}),
|
|
132836
|
+
/* @__PURE__ */ jsx(EnrollmentOptionalFields, {
|
|
132837
|
+
formData,
|
|
132838
|
+
onChange,
|
|
132839
|
+
isLoading
|
|
132840
|
+
}),
|
|
132841
|
+
consent ? /* @__PURE__ */ jsx(WholeSeriesConsentField, {
|
|
132842
|
+
consent,
|
|
132843
|
+
error: errors.consentAccepted,
|
|
132844
|
+
formData,
|
|
132845
|
+
isLoading,
|
|
132846
|
+
onChange
|
|
132847
|
+
}) : null
|
|
132848
|
+
] });
|
|
132582
132849
|
}
|
|
132583
132850
|
function EnrollmentIdentityFields({ formData, errors, onChange, isEmailLocked, isLoading, onLogout }) {
|
|
132584
132851
|
const nameErrorId = "er-whole-series-name-error";
|
|
@@ -132773,7 +133040,8 @@ function RegistrationDetailsForm({ wizard, display }) {
|
|
|
132773
133040
|
onChange: wizard.updateFormData,
|
|
132774
133041
|
isEmailLocked: wizard.portalAuthState === "authenticated" || wizard.waitlistClaim.claim !== null,
|
|
132775
133042
|
isLoading: wizard.portalAuthState === "checking" || wizard.waitlistClaim.isLoading,
|
|
132776
|
-
onLogout: wizard.handleLogout
|
|
133043
|
+
onLogout: wizard.handleLogout,
|
|
133044
|
+
consent: wizard.selectedRun?.consent ?? null
|
|
132777
133045
|
}),
|
|
132778
133046
|
/* @__PURE__ */ jsx(PricingFields, { wizard }),
|
|
132779
133047
|
wizard.showSpamProtection ? /* @__PURE__ */ jsx("div", {
|
|
@@ -133349,30 +133617,6 @@ function resolveEmptyMessage(props, wizard) {
|
|
|
133349
133617
|
return wizard.scopedRuns.some((run) => !run.status || allowedStatuses.includes(run.status)) ? null : "Booking is not currently available for this run.";
|
|
133350
133618
|
}
|
|
133351
133619
|
//#endregion
|
|
133352
|
-
//#region ../blocks/src/system/runtime/nodes/event-registration/registrationSurface.ts
|
|
133353
|
-
function planEventRegistrationSurface(input) {
|
|
133354
|
-
const scopedEvents = resolveEventRegistrationScopedEvents(input.events, {
|
|
133355
|
-
occurrenceContext: input.occurrenceContext,
|
|
133356
|
-
subject: input.subject
|
|
133357
|
-
});
|
|
133358
|
-
const bookingScopes = new Set(scopedEvents.map((event) => event.bookingScope));
|
|
133359
|
-
if (!input.occurrenceContext && !input.subject && bookingScopes.has("single_occurrence")) return {
|
|
133360
|
-
kind: "occurrence",
|
|
133361
|
-
events: scopedEvents.filter((event) => event.bookingScope === "single_occurrence")
|
|
133362
|
-
};
|
|
133363
|
-
if (bookingScopes.size === 0 || bookingScopes.has("single_occurrence")) return bookingScopes.has("whole_series") ? { kind: "mixedBookingScopes" } : {
|
|
133364
|
-
kind: "occurrence",
|
|
133365
|
-
events: scopedEvents
|
|
133366
|
-
};
|
|
133367
|
-
const requiredSeriesIds = new Set(scopedEvents.map((event) => event.seriesId));
|
|
133368
|
-
const offerings = input.wholeSeriesOfferings.filter((offering) => requiredSeriesIds.has(offering.eventSeriesId));
|
|
133369
|
-
const loadedSeriesIds = new Set(offerings.map((offering) => offering.eventSeriesId));
|
|
133370
|
-
return [...requiredSeriesIds].every((seriesId) => loadedSeriesIds.has(seriesId)) && offerings.length > 0 ? {
|
|
133371
|
-
kind: "wholeSeries",
|
|
133372
|
-
offerings
|
|
133373
|
-
} : { kind: "unavailableWholeSeries" };
|
|
133374
|
-
}
|
|
133375
|
-
//#endregion
|
|
133376
133620
|
//#region ../blocks/src/system/runtime/nodes/event-registration/PastOccurrenceNotice.tsx
|
|
133377
133621
|
function isPastOccurrence(startsAt) {
|
|
133378
133622
|
if (!startsAt) return false;
|
|
@@ -133426,7 +133670,8 @@ function toEventRegistrationClientProps(props, display) {
|
|
|
133426
133670
|
const EventRegistrationClient = (clientProps) => {
|
|
133427
133671
|
const surface = planEventRegistrationSurface({
|
|
133428
133672
|
events: clientProps.events ?? [],
|
|
133429
|
-
wholeSeriesOfferings: clientProps.
|
|
133673
|
+
wholeSeriesOfferings: clientProps.wholeSeriesOfferings ?? [],
|
|
133674
|
+
wholeSeriesOffering: clientProps.wholeSeriesOffering,
|
|
133430
133675
|
occurrenceContext: clientProps.occurrenceContext,
|
|
133431
133676
|
subject: clientProps.subject
|
|
133432
133677
|
});
|
|
@@ -141502,6 +141747,14 @@ const clientComponentRegistry = buildClientRegistryFromEntries(serverComponentRe
|
|
|
141502
141747
|
//#endregion
|
|
141503
141748
|
//#region ../blocks/src/system/types/link.ts
|
|
141504
141749
|
const nullableString = z.union([z.string().min(1), z.null()]);
|
|
141750
|
+
const RESOLVED_INTERNAL_LINK_ENTITY_TYPES = [
|
|
141751
|
+
"page",
|
|
141752
|
+
"content",
|
|
141753
|
+
"pageSurface"
|
|
141754
|
+
];
|
|
141755
|
+
function isResolvedInternalLinkEntityType(value) {
|
|
141756
|
+
return typeof value === "string" && RESOLVED_INTERNAL_LINK_ENTITY_TYPES.includes(value);
|
|
141757
|
+
}
|
|
141505
141758
|
const resolvedInternalLinkKeys = [
|
|
141506
141759
|
"entityId",
|
|
141507
141760
|
"entityType",
|
|
@@ -141523,7 +141776,7 @@ const internalResolvedLinkSchema = z.object({
|
|
|
141523
141776
|
kind: z.literal("internal"),
|
|
141524
141777
|
routeId: z.string().min(1),
|
|
141525
141778
|
entityId: z.string().min(1),
|
|
141526
|
-
entityType: z.enum(
|
|
141779
|
+
entityType: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
|
|
141527
141780
|
href: z.string().min(1),
|
|
141528
141781
|
title: z.string().min(1),
|
|
141529
141782
|
typeLabel: z.string().min(1),
|
|
@@ -141557,7 +141810,7 @@ const linkSchema = z.union([
|
|
|
141557
141810
|
entryLinkSchema$1
|
|
141558
141811
|
]);
|
|
141559
141812
|
function isInternalResolvedLinkValue(value) {
|
|
141560
|
-
return value?.kind === "internal" && "entityId" in value && "entityType" in value && "href" in value && "title" in value && "typeLabel" in value && typeof value.entityId === "string" &&
|
|
141813
|
+
return value?.kind === "internal" && "entityId" in value && "entityType" in value && "href" in value && "title" in value && "typeLabel" in value && typeof value.entityId === "string" && isResolvedInternalLinkEntityType(value.entityType) && typeof value.href === "string" && typeof value.title === "string" && typeof value.typeLabel === "string";
|
|
141561
141814
|
}
|
|
141562
141815
|
//#endregion
|
|
141563
141816
|
//#region ../blocks/src/system/manifest/fieldValidation/writeCanonicalization.ts
|
|
@@ -148835,7 +149088,7 @@ const publicRouteCandidatesSchema = z.object({ routes: z.array(z.object({
|
|
|
148835
149088
|
entityId: z.string(),
|
|
148836
149089
|
path: z.string(),
|
|
148837
149090
|
title: z.string(),
|
|
148838
|
-
kind: z.enum(
|
|
149091
|
+
kind: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
|
|
148839
149092
|
contentTypeKey: z.string().nullable().optional()
|
|
148840
149093
|
})) });
|
|
148841
149094
|
const groupOverrideFields = [
|
|
@@ -154781,8 +155034,8 @@ function generateInputCss({ themeId, theme, inputSystem }) {
|
|
|
154781
155034
|
const radioSelector = `${rootSelector} .form-radio`;
|
|
154782
155035
|
const checkableRules = [];
|
|
154783
155036
|
checkableRules.push("appearance: none");
|
|
154784
|
-
checkableRules.push("width:
|
|
154785
|
-
checkableRules.push("height:
|
|
155037
|
+
checkableRules.push("width: 1.125rem");
|
|
155038
|
+
checkableRules.push("height: 1.125rem");
|
|
154786
155039
|
checkableRules.push("flex-shrink: 0");
|
|
154787
155040
|
checkableRules.push(`border: ${borderPx} solid ${rgbColorValue(inputSystem.base.border.colorToken)}`);
|
|
154788
155041
|
if (inputSystem.base.background.type === "transparent") checkableRules.push("background-color: transparent");
|
|
@@ -184546,7 +184799,7 @@ const internalLinkPayloadSchema = z.object({
|
|
|
184546
184799
|
kind: z.literal("internal"),
|
|
184547
184800
|
routeId: z.string().uuid(),
|
|
184548
184801
|
entityId: z.string().uuid(),
|
|
184549
|
-
entityType: z.enum(
|
|
184802
|
+
entityType: z.enum(RESOLVED_INTERNAL_LINK_ENTITY_TYPES),
|
|
184550
184803
|
href: z.string().min(1),
|
|
184551
184804
|
title: z.string().min(1),
|
|
184552
184805
|
typeLabel: z.string().min(1),
|
|
@@ -186039,17 +186292,25 @@ async function updateRouteMetadata(apiClient, { siteId, routeId, body, options }
|
|
|
186039
186292
|
* Falls back to an internal route payload for legacy rows or incomplete data.
|
|
186040
186293
|
*/
|
|
186041
186294
|
function toRoutableLinkPayload(item) {
|
|
186042
|
-
|
|
186043
|
-
|
|
186044
|
-
|
|
186045
|
-
|
|
186046
|
-
|
|
186047
|
-
|
|
186048
|
-
|
|
186049
|
-
|
|
186050
|
-
identifier
|
|
186051
|
-
|
|
186295
|
+
switch (item.entityType) {
|
|
186296
|
+
case "page":
|
|
186297
|
+
if (item.identifier) return {
|
|
186298
|
+
kind: "page",
|
|
186299
|
+
identifier: item.identifier
|
|
186300
|
+
};
|
|
186301
|
+
return toResolvedInternalPayload(item);
|
|
186302
|
+
case "content":
|
|
186303
|
+
if (item.identifier && item.contentTypeKey) return {
|
|
186304
|
+
kind: "entry",
|
|
186305
|
+
contentType: item.contentTypeKey,
|
|
186306
|
+
identifier: item.identifier
|
|
186307
|
+
};
|
|
186308
|
+
return toResolvedInternalPayload(item);
|
|
186309
|
+
case "pageSurface": return toResolvedInternalPayload(item);
|
|
186310
|
+
default: return assertNever$10(item);
|
|
186052
186311
|
}
|
|
186312
|
+
}
|
|
186313
|
+
function toResolvedInternalPayload(item) {
|
|
186053
186314
|
return {
|
|
186054
186315
|
kind: "internal",
|
|
186055
186316
|
routeId: item.routeId,
|
|
@@ -198843,7 +199104,7 @@ function LinkPicker(props) {
|
|
|
198843
199104
|
children: [
|
|
198844
199105
|
/* @__PURE__ */ jsx("p", {
|
|
198845
199106
|
className: "text-sm text-muted-foreground",
|
|
198846
|
-
children: "Select any published or draft page, post, or routed entry for this site."
|
|
199107
|
+
children: "Select any published or draft page, event, post, or routed entry for this site."
|
|
198847
199108
|
}),
|
|
198848
199109
|
/* @__PURE__ */ jsx(Input, {
|
|
198849
199110
|
className: "min-w-0",
|
|
@@ -198864,6 +199125,7 @@ function LinkPicker(props) {
|
|
|
198864
199125
|
className: cn$2("flex min-w-0 w-full items-center gap-2 px-3 py-2 text-left text-sm transition-colors hover:bg-muted", isSelected && "bg-muted"),
|
|
198865
199126
|
onClick: () => handleInternalSelect(item),
|
|
198866
199127
|
disabled,
|
|
199128
|
+
"aria-pressed": isSelected,
|
|
198867
199129
|
children: [
|
|
198868
199130
|
/* @__PURE__ */ jsxs("div", {
|
|
198869
199131
|
className: "min-w-0 flex-1 overflow-hidden",
|
|
@@ -215937,6 +216199,7 @@ function normalizeCustomPath(value) {
|
|
|
215937
216199
|
return `/${trimmed}`;
|
|
215938
216200
|
}
|
|
215939
216201
|
function toInternalLinkAttrs(item) {
|
|
216202
|
+
if (item.entityType === "pageSurface") return toPageSurfaceLinkAttrs(item);
|
|
215940
216203
|
if (item.identifier) {
|
|
215941
216204
|
if (item.entityType === "page") return {
|
|
215942
216205
|
kind: "page",
|
|
@@ -215966,6 +216229,20 @@ function toInternalLinkAttrs(item) {
|
|
|
215966
216229
|
}
|
|
215967
216230
|
return null;
|
|
215968
216231
|
}
|
|
216232
|
+
function toPageSurfaceLinkAttrs(item) {
|
|
216233
|
+
return {
|
|
216234
|
+
kind: "internal",
|
|
216235
|
+
routeId: item.routeId,
|
|
216236
|
+
entityId: item.entityId,
|
|
216237
|
+
entityType: "pageSurface",
|
|
216238
|
+
title: item.title || item.draftTitle || "Untitled",
|
|
216239
|
+
typeLabel: item.typeLabel,
|
|
216240
|
+
href: item.path || "/",
|
|
216241
|
+
contentTypeKey: null,
|
|
216242
|
+
contentTypeName: null,
|
|
216243
|
+
updatedAt: item.updatedAt
|
|
216244
|
+
};
|
|
216245
|
+
}
|
|
215969
216246
|
function getDisplayTitle(item) {
|
|
215970
216247
|
return item.title || item.draftTitle || "Untitled";
|
|
215971
216248
|
}
|
|
@@ -216162,6 +216439,12 @@ function LinkPopover({ editor, tone = "dark", initialItems, loadItems }) {
|
|
|
216162
216439
|
setExternalUrlValue(href);
|
|
216163
216440
|
setCustomPathValue("");
|
|
216164
216441
|
}
|
|
216442
|
+
setSelectedRouteId(null);
|
|
216443
|
+
}, [editor, open]);
|
|
216444
|
+
useEffect(() => {
|
|
216445
|
+
if (!open || selectableItems.length === 0) return;
|
|
216446
|
+
const attrs = editor.getAttributes("link") ?? {};
|
|
216447
|
+
if (normalizeTab(attrs) !== "internal") return;
|
|
216165
216448
|
setSelectedRouteId(findSelectedRouteId(attrs, selectableItems));
|
|
216166
216449
|
}, [
|
|
216167
216450
|
editor,
|
|
@@ -216442,12 +216725,18 @@ function shouldShowToolbar(visibility, state) {
|
|
|
216442
216725
|
}
|
|
216443
216726
|
//#endregion
|
|
216444
216727
|
//#region ../editor/src/primitives/rich-text/RichTextEditorSurface.tsx
|
|
216728
|
+
const BASE_EDITOR_LINK_STYLES = `
|
|
216729
|
+
:where([data-rb-rich-text-editor-content]) a {
|
|
216730
|
+
text-decoration-line: underline;
|
|
216731
|
+
text-underline-offset: 0.14em;
|
|
216732
|
+
}
|
|
216733
|
+
`;
|
|
216445
216734
|
function shouldHandleRichTextActivationKey(container, target) {
|
|
216446
216735
|
if (!(target instanceof HTMLElement)) return true;
|
|
216447
216736
|
if (target === container) return true;
|
|
216448
216737
|
return !target.closest("[contenteditable=\"true\"], .ProseMirror, input, textarea, select, button, a[href]");
|
|
216449
216738
|
}
|
|
216450
|
-
function RichTextEditorSurface({ editor, config, isEmpty, className, contentClassName, placeholderClassName, placeholderText, ariaLabel, linkItems, onRequestLinkItems, onPickImage, toolbarLayout, onClick, renderContent }) {
|
|
216739
|
+
function RichTextEditorSurface({ editor, config, isEmpty, className, contentClassName, placeholderClassName, placeholderText, ariaLabel, ariaDescribedBy, linkItems, onRequestLinkItems, onPickImage, toolbarLayout, onClick, renderContent }) {
|
|
216451
216740
|
const editableAriaLabel = ariaLabel ?? placeholderText ?? config.placeholder;
|
|
216452
216741
|
useEffect(() => {
|
|
216453
216742
|
if (!editor) return;
|
|
@@ -216455,10 +216744,16 @@ function RichTextEditorSurface({ editor, config, isEmpty, className, contentClas
|
|
|
216455
216744
|
editableElement.setAttribute("role", "textbox");
|
|
216456
216745
|
editableElement.setAttribute("aria-multiline", "true");
|
|
216457
216746
|
editableElement.setAttribute("aria-label", editableAriaLabel);
|
|
216747
|
+
if (ariaDescribedBy) editableElement.setAttribute("aria-describedby", ariaDescribedBy);
|
|
216458
216748
|
return () => {
|
|
216459
216749
|
if (editableElement.getAttribute("aria-label") === editableAriaLabel) editableElement.removeAttribute("aria-label");
|
|
216750
|
+
if (editableElement.getAttribute("aria-describedby") === ariaDescribedBy) editableElement.removeAttribute("aria-describedby");
|
|
216460
216751
|
};
|
|
216461
|
-
}, [
|
|
216752
|
+
}, [
|
|
216753
|
+
ariaDescribedBy,
|
|
216754
|
+
editableAriaLabel,
|
|
216755
|
+
editor
|
|
216756
|
+
]);
|
|
216462
216757
|
const interactiveContentProps = onClick ? {
|
|
216463
216758
|
role: "button",
|
|
216464
216759
|
tabIndex: 0,
|
|
@@ -216471,16 +216766,17 @@ function RichTextEditorSurface({ editor, config, isEmpty, className, contentClas
|
|
|
216471
216766
|
"aria-label": editableAriaLabel
|
|
216472
216767
|
} : void 0;
|
|
216473
216768
|
const content = /* @__PURE__ */ jsxs("div", {
|
|
216474
|
-
|
|
216769
|
+
"data-rb-rich-text-editor-content": true,
|
|
216770
|
+
className: cn("relative grid", contentClassName),
|
|
216475
216771
|
onClick,
|
|
216476
216772
|
...interactiveContentProps,
|
|
216477
216773
|
children: [isEmpty ? /* @__PURE__ */ jsx("span", {
|
|
216478
|
-
className: cn("
|
|
216774
|
+
className: cn("pointer-events-none col-start-1 row-start-1 self-start text-sm italic text-muted-foreground", placeholderClassName),
|
|
216479
216775
|
"aria-hidden": "true",
|
|
216480
216776
|
children: placeholderText ?? config.placeholder
|
|
216481
216777
|
}) : null, /* @__PURE__ */ jsx(EditorContent, {
|
|
216482
216778
|
editor,
|
|
216483
|
-
className: "
|
|
216779
|
+
className: "col-start-1 row-start-1 min-w-0 w-full outline-none"
|
|
216484
216780
|
})]
|
|
216485
216781
|
});
|
|
216486
216782
|
const toolbar = toolbarLayout.kind === "hidden" ? null : /* @__PURE__ */ jsx(RichTextToolbar, {
|
|
@@ -216495,7 +216791,11 @@ function RichTextEditorSurface({ editor, config, isEmpty, className, contentClas
|
|
|
216495
216791
|
});
|
|
216496
216792
|
return /* @__PURE__ */ jsxs("div", {
|
|
216497
216793
|
className,
|
|
216498
|
-
children: [
|
|
216794
|
+
children: [
|
|
216795
|
+
/* @__PURE__ */ jsx("style", { children: BASE_EDITOR_LINK_STYLES }),
|
|
216796
|
+
toolbarLayout.kind === "external" ? toolbarLayout.renderHost(toolbar) : toolbar,
|
|
216797
|
+
renderContent ? renderContent(content) : content
|
|
216798
|
+
]
|
|
216499
216799
|
});
|
|
216500
216800
|
}
|
|
216501
216801
|
//#endregion
|
|
@@ -220254,6 +220554,24 @@ const limitedExtensions = [
|
|
|
220254
220554
|
}),
|
|
220255
220555
|
Placeholder.configure({ placeholder: "Click to start writing…" })
|
|
220256
220556
|
];
|
|
220557
|
+
const consentExtensions = [
|
|
220558
|
+
StarterKit.configure({
|
|
220559
|
+
heading: false,
|
|
220560
|
+
blockquote: false,
|
|
220561
|
+
bulletList: false,
|
|
220562
|
+
orderedList: false,
|
|
220563
|
+
listItem: false,
|
|
220564
|
+
code: false,
|
|
220565
|
+
codeBlock: false,
|
|
220566
|
+
strike: false,
|
|
220567
|
+
horizontalRule: false
|
|
220568
|
+
}),
|
|
220569
|
+
RichTextLink.configure({
|
|
220570
|
+
openOnClick: false,
|
|
220571
|
+
HTMLAttributes: { rel: "noreferrer noopener" }
|
|
220572
|
+
}),
|
|
220573
|
+
Placeholder.configure({ placeholder: "Click to start writing…" })
|
|
220574
|
+
];
|
|
220257
220575
|
const notesExtensions = [
|
|
220258
220576
|
StarterKit.configure({
|
|
220259
220577
|
heading: false,
|
|
@@ -220306,6 +220624,16 @@ const richTextConfigs = {
|
|
|
220306
220624
|
placeholder: "Click to start writing…",
|
|
220307
220625
|
pastePolicy: semanticTextOnlyPaste
|
|
220308
220626
|
},
|
|
220627
|
+
consent: {
|
|
220628
|
+
extensions: consentExtensions,
|
|
220629
|
+
toolbar: [
|
|
220630
|
+
{ type: "bold" },
|
|
220631
|
+
{ type: "italic" },
|
|
220632
|
+
{ type: "link" }
|
|
220633
|
+
],
|
|
220634
|
+
placeholder: "Click to start writing…",
|
|
220635
|
+
pastePolicy: semanticTextOnlyPaste
|
|
220636
|
+
},
|
|
220309
220637
|
notes: {
|
|
220310
220638
|
extensions: notesExtensions,
|
|
220311
220639
|
toolbar: [
|
|
@@ -228845,4 +229173,4 @@ function useSiteChromeCustomizeOptional() {
|
|
|
228845
229173
|
return useContext(SiteChromeCustomizeContext);
|
|
228846
229174
|
}
|
|
228847
229175
|
//#endregion
|
|
228848
|
-
export { FooterComposerPanel as $,
|
|
229176
|
+
export { FooterComposerPanel as $, Maximize2 as $a, SelectTrigger as $i, richTextFragment as $n, parseBlockIconValue as $r, createSnapshotFromPageRecord as $t, markApplySaved as A, cva as Aa, assertNever$7 as Ai, getResponsiveScopeSpec as An, gradientToCss as Ar, useEditor$1 as At, resetTypographyToSaved as B, Upload as Ba, useSdkConfig as Bi, resolveEntryRouteTarget as Bn, backgroundAppearanceColorTokenNames as Br, useEditorUiStoreInstance as Bt, applyTypographyDraftPatch as C, DropdownMenuContent as Ca, updateButtonStyleSelectionChoice as Ci, useMediaEditorOptional as Cn, curatedSiteStyles as Cr, MediaField as Ct, dismissWarnings as D, DropdownMenuTrigger as Da, isThemeV2NormalEditorRawStyleFieldName as Di, containerResponsiveThemeCss as Dn, findFooterLook as Dr, RichTextField as Dt, deriveStyleConfiguratorCapabilities as E, DropdownMenuSeparator as Ea, parseThemeForPersistence as Ei, ThemeScope as En, surfaceResolutionContextFromTheme as Er, useRichTextImagePicker as Et, previewCuratedPalette as F, assertNever$10 as Fa, ORDINARY_TEXT_MIN_CONTRAST_RATIO as Fi, getDefaultComponentRegistry as Fn, curatedPalettes as Fr, prepareBlockEditorManifest as Ft, beginAutosaveBatch as G, Smartphone as Ga, FieldFrame as Gi, SITE_CHROME_VISIBLE_HEADER_SELECTOR as Gn, bindingSchema as Gr, pushHistoryEntry as Gt, styleConfiguratorHistoryEntryForPersistedSelection as H, TriangleAlert as Ha, mapCurrentValueForSelect as Hi, resolveRouteTarget as Hn, parseBackgroundAppearanceColorToken as Hr, canRedoHistory as Ht, previewFooterLook as I, expectParsedBrandedId as Ia, BlockApiProvider as Ii, LINKED_CONTENT_ENTRY_META_KEY as In, defaultSectionTransitionVariantForFamily as Ir, stripTopLevelRoutingUi as It, enqueueTransaction as J, Redo2 as Ja, TooltipContent as Ji, visibleHeaderClearancePx as Jn, bookingConsentCarrierSchema as Jr, unsafeAsLinkedContentEntryId as Jt, confirmAutosaveBatch as K, SlidersHorizontal as Ka, useField as Ki, SITE_OVERLAY_HEADER_CLEARANCE_CSS_VAR as Kn, eventCalendarListLayoutCompatibleDisplayModeValues as Kr, redoHistory as Kt, previewHeaderLayout as L, parseMediaAssetId as La, getFieldIntent as Li, coerceLinkedContentEntriesPayload as Ln, sectionTransitionFamilies as Lr, getBlockManifestFromSdkConfig as Lt, openRow as M, parseFooterModuleId as Ma, textColorStyle as Mi, createCustomBlockRegistry as Mn, GRADIENT_PRESET_IDS as Mr, LinkWidgetProvider as Mt, palettePreviewProjection as N, unsafeAsEditorBlockId as Na, paletteColorEntries as Ni, makeDefaultBlockComponent as Nn, getGradientPreset as Nr, BlockEditor as Nt, isPreviewingChange as O, Primitive as Oa, pageDesignEditorBackgroundOverrideOwner as Oi, buildThemeRuntime as On, getHeaderLayout as Or, RichTextWidgetProvider as Ot, previewButtonStyle as P, unsafeAsEditorBlockValues as Pa, paletteColorsSchema as Pi, readBlockComposition as Pn, parseGradientPresetId as Pr, hideThemeV2RawStyleFields as Pt, resolvePreviewSidebarTab as Q, Monitor as Qa, SelectItem as Qi, ImageResolveContextProvider as Qn, runTransforms as Qr, createRoutingHelpers as Qt, previewHeaderStyle as R, parseSiteId as Ra, isHeaderField as Ri, getLinkedContentEntryMeta as Rn, sectionTransitionFamilyForBoundaryOptionId as Rr, classifyHistoryShortcut as Rt, applyResolvedSelections as S, DropdownMenu as Sa, updateButtonStyleHoverPreference as Si, MediaEditorContextProvider as Sn, componentRuntimeRulesForTheme as Sr, FileField as St, createStyleConfiguratorState as T, DropdownMenuLabel as Ta, themeButtonClassName as Ti, isSupportedLoaderEndpoint as Tn, getCuratedSiteStyle as Tr, ReferenceWidgetProvider as Tt, syncStyleConfiguratorState as U, Tablet as Ua, mapOptionValueForSelect as Ui, getBlockDefinition as Un, defaultThemeTokens as Ur, canUndoHistory as Ut, setPaletteColors as V, Undo2 as Va, hasEmptyOption as Vi, resolvePageRouteTarget as Vn, backgroundAppearanceQuickColorTokenNames as Vr, useOptionalEditorUiStoreInstance as Vt, toggleRow as W, Sparkles as Wa, unmapValueFromSelect as Wi, projectRecurringSchedule as Wn, ctaButton as Wr, createHistoryState as Wt, rejectAutosaveBatch as X, PenLine as Xa, Select$1 as Xi, createManifestValidator as Xn, planSiteChromePlacement as Xr, useMultiAutosave as Xt, idleEditorTransactionQueueState as Y, Pencil as Ya, TooltipTrigger as Yi, resolveVariantKey as Yn, EDITABLE_SURFACE_FORWARDING_PROP as Yr, recordsEqual as Yt, createOptimisticActionRunner as Z, Palette as Za, SelectContent as Zi, clientComponentRegistry as Zn, parseBackgroundContent as Zr, useDebouncedLatestSave as Zt, PREVIEW_DESIGN_SAVE_ERROR_MESSAGE as _, DialogTitle as _a, siblingPath$1 as _i, listEntryPageContentSlots as _n, applyCompiledRuntimeFieldsToContent as _r, IconPickerField as _t, previewDesignHistoryDomainForCommand as a, PopoverContent as aa, coerceInlineTextWithFallback as ai, resolveContentTitle as an, ChevronRight as ao, singleButtonFragment as ar, useUISelector as at, cycleSiteChromeSelectionId as b, CollapsibleTrigger as ba, findButtonStyleRecipe as bi, deriveLaunchReadiness as bn, retargetCompiledRuntimeFieldsForContentAdjacency as br, ButtonVariantField as bt, selectionSnapshotFromApplySiteStyleSelectionResponse as c, Tabs as ca, Text$2 as ci, ManifestForm as cn, Check as co, testimonialsCarouselFragment as cr, useEntryController as ct, resolveStyleConfiguratorInitialSnapshot as d, TabsTrigger as da, getCurrentResolveImageUrlContext as di, FormRenderer as dn, heroCtaRowFragment as dr, createSiteOptionWidgetAdapters as dt, SelectValue as ea, parseGeneratedIconAssetId as ei, BUILT_IN_REFERENCE_KINDS as en, LoaderCircle as eo, headingFragment as er, renderSiteChromeBlock as et, PreviewDesignCoordinatorProvider as f, Dialog as fa, resolveImageUrlWithContext as fi, evaluateVisibility as fn, ctaRowFragment as fr, SiteOptionPickerField as ft, PREVIEW_DESIGN_LOAD_ERROR_MESSAGE as g, DialogHeader as ga, getAtPath as gi, getPageDesignEditorState as gn, formatSiteChromeBackgroundTokenLabel as gr, InlineTextField as gt, usePreviewThemeOverlay as h, DialogFooter as ha, attachRenderableMediaAssetFields as hi, applyPageDesignEditorAction as hn, defineFragment as hr, OfferingsPreviewWidgetProvider as ht, usePreviewDesignHistoryOrder as i, Popover as ia, isRecord$16 as ii, resolvePageRouteSlug as in, EllipsisVertical as io, blogFeaturedPostFragment as ir, ContentFieldsForm as it, markApplySaving as j, cn$2 as ja, VARIANT_ROLES as ji, escapeStyleContent as jn, GRADIENT_PRESETS as jr, LinkField as jt, markApplyFailed as k, Button$1 as ka, asDesignBlockId as ki, DEFAULT_THEME_RESPONSIVE_MODE as kn, getHeaderStyle as kr, EditorProvider as kt, deriveSiteStylePreviewUpdate as l, TabsContent as la, RichText as li, createManifestFormAdapter as ln, __exportAll as lo, testimonialsHeadingFragment as lr, useEntryEditorController as lt, PreviewThemeOverlayProvider as m, DialogDescription as ma, SECTION_BACKGROUND_MIN_SOURCE_WIDTH as mi, MediaEditor as mn, bodyCopyFragment as mr, OfferingsPreviewGroupOrderField as mt, useSiteChromeCustomizeOptional as n, CalloutDescription as na, renderInlineText as ni, parseReferenceKind as nn, GripVertical as no, faqAccordionFragment as nr, PreviewInlineTextEditor as nt, selectPreviewDesignHistoryDomain as o, PopoverTrigger as oa, inlineTextToPlainText as oi, PaletteProvider as on, ChevronLeft as oo, formEmbedFragment as or, EditableBlockProvider as ot, usePreviewDesignCoordinator as p, DialogContent as pa, setContextResolveImageUrlContext as pi, createStoreBackend as pn, heroCopyFragment as pr, SiteOptionWidgetProvider as pt, deriveTransactionCapabilities as q, RotateCcw as qa, Tooltip as qi, planSiteOverlayHeaderClearance as qn, eventCalendarListLayoutOptions as qr, undoHistory as qt, PreviewDesignHistoryOrderProvider as r, SearchInput as ra, isObjectRecord$1 as ri, deriveRouteMetadataPresentation as rn, Eye as ro, faqHeadingFragment as rr, PreviewTextEditor as rt, buildApplySiteStyleSelectionBody as s, Input as sa, isInlineTextEmpty as si, usePalette as sn, ChevronDown as so, formCopyFragment as sr, EntryControllerProvider as st, SiteChromeCustomizeProvider as t, Callout as ta, parseGeneratedIconSetId as ti, isAdapterReferenceKind as tn, Image as to, cardFragment as tr, PreviewRichTextEditor as tt, planSiteStylePreviewChange as u, TabsList as ua, buildResolveImageUrlContext as ui, createManifestValidation as un, ctaCopyFragment as ur, createSiteOptionApiLoader as ut, reportPreviewDesignError as v, Collapsible as va, buttonStyleHoverPreferenceValue as vi, decodePublicProductCategorySelectorQuery as vn, compileEditorModelRuntime as vr, EntryPickerField as vt, cancelPreview as w, DropdownMenuItem as wa, buttonStyleSelectionKey as wi, useApiMediaUploader as wn, designRuntimeRulesForTheme as wr, ReferenceField as wt, planSiteChromeSelection as x, Surface as xa, resolveButtonStyleSelection as xi, AMBIENT_BACKGROUND_ROLES as xn, planPageDesignLayoutLookCompatibility as xr, ButtonWidgetProvider as xt, buildSiteChromeSelectionModels as y, CollapsibleContent as ya, buttonStyleSelectionParameterValue as yi, DEFAULT_LAUNCH_READINESS_INPUT as yn, retargetCompiledBoundaryRuntimeForContentAdjacency as yr, EntryPickerWidgetProvider as yt, previewSiteStyle as z, X as za, SdkConfigProvider as zi, defaultTransforms as zn, sectionTransitionVariantForBoundaryOptionId as zr, useEditorUiStore as zt };
|