@riverbankcms/sdk 0.140.0 → 0.141.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/dist/{PreviewEditorSidebar-CUyTzd5z.mjs → PreviewEditorSidebar-Q-fy9GYw.mjs} +3 -3
- package/dist/{PreviewEditorUI-Agkw4v5i.mjs → PreviewEditorUI-LYGzgk85.mjs} +2 -2
- package/dist/{SdkPreviewModeRuntime-DdbeAdS8.mjs → SdkPreviewModeRuntime-CoPYI5Jq.mjs} +72 -46
- package/dist/{SiteChromeCustomizeContext-CqGOz-Kv.mjs → SiteChromeCustomizeContext-D8LePX8x.mjs} +681 -196
- package/dist/_dts/api/src/contentRuntime.d.ts +12 -31
- package/dist/_dts/api/src/domainConnection.d.ts +4 -0
- package/dist/_dts/api/src/footerCompositionContracts.d.ts +25 -0
- package/dist/_dts/api/src/index.d.ts +1 -1
- package/dist/_dts/api/src/launchReadiness.d.ts +1 -0
- package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +2 -1
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -26
- package/dist/_dts/api/src/siteOnboarding.d.ts +7 -0
- package/dist/_dts/billing/src/site-arrangements.d.ts +12 -3
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -0
- package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -0
- package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +2 -0
- package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +122 -0
- package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +2 -1
- package/dist/_dts/blocks/src/system/blocks/events/shared/eventSelection.d.ts +11 -0
- package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -47
- package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +5 -0
- package/dist/_dts/blocks/src/system/data/utils.d.ts +1 -1
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +27 -1
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +12 -180
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +6 -90
- package/dist/_dts/blocks/src/system/runtime/hooks/useEventFilters.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +5 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.state.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.state.d.ts +10 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventCheckoutHandoffRestore.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +4 -5
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useSettledCommerceView.d.ts +37 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +4 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +11 -101
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +7 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/listOptions.d.ts +2 -0
- package/dist/_dts/blocks/src/system/transforms/registry/eventCalendar.d.ts +12 -0
- package/dist/_dts/commerce/src/purchase/bookingInstalmentSchedule.d.ts +4 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +3 -0
- package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +27 -1
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +1 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/ThemeFontLoader.d.ts +17 -1
- package/dist/_dts/theme-core/src/buttons/affordanceSuppression.d.ts +17 -0
- package/dist/_dts/theme-core/src/buttons/buttonColourContract.d.ts +1 -1
- package/dist/_dts/theme-core/src/buttons/classNames.d.ts +16 -0
- package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +0 -6
- package/dist/_dts/theme-core/src/buttons/resolvedButtonCss.d.ts +4 -4
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/hosted-booking-appearance.d.ts +54 -12
- package/dist/_dts/theme-core/src/index.d.ts +1 -1
- package/dist/client/{BookingConsentAgreement-CuKa82V4.mjs → BookingConsentAgreement-xJeYNdnb.mjs} +2 -2
- package/dist/client/{DiscountCodeDisclosure-BbYieKWB.mjs → DiscountCodeDisclosure-DdT6uzl9.mjs} +1 -1
- package/dist/client/{EventCombined.client-LTfR1Aby.mjs → EventCombined.client-Cp28uYuM.mjs} +11 -15
- package/dist/client/{EventListing.client-DUHpYSuo.mjs → EventListing.client-CD6AJsMr.mjs} +4 -17
- package/dist/client/{LeafletStaticMap-CHRupL6m.mjs → LeafletStaticMap-DBsAi9-e.mjs} +1 -1
- package/dist/client/{accordion-6HiIFxNL.mjs → accordion-6dwbOKYR.mjs} +1 -1
- package/dist/client/{bookingForm-Dlmid43H.mjs → bookingForm-CZE9_qPQ.mjs} +5 -5
- package/dist/client/bookings.mjs +175 -93
- package/dist/client/{carousel-DmkZRRq_.mjs → carousel-7VHGQARz.mjs} +1 -1
- package/dist/client/{cart-CIC24330.mjs → cart-Qg_mvQhh.mjs} +3 -3
- package/dist/client/{checkout-D1Zw9imo.mjs → checkout-D84rpgdr.mjs} +3 -3
- package/dist/client/client.mjs +602 -139
- package/dist/client/{context-Cy1OayHx.mjs → context-Ctp3T0Wr.mjs} +1 -1
- package/dist/client/{dates-aDcfoLHr.mjs → dates-DJKFcI_N.mjs} +2 -2
- package/dist/client/{eventCalendar-FQxMPAjf.mjs → eventCalendar-CK31z3vs.mjs} +11 -7
- package/dist/client/{eventCombined-Dr3ac6Hb.mjs → eventCombined-DiXd-ewn.mjs} +3 -3
- package/dist/client/{eventDetails-D-AzUHFQ.mjs → eventDetails-CTRgt2DK.mjs} +4 -4
- package/dist/client/{eventListing-B3XxBf3i.mjs → eventListing-Dy9vi_j_.mjs} +3 -3
- package/dist/client/{eventRegistration-I6EaokFD.mjs → eventRegistration-CnalYMr2.mjs} +124 -31
- package/dist/client/{form-BbWckVWY.mjs → form-eUiMveTT.mjs} +2 -2
- package/dist/client/{headerSection-C9qU4Y7x.mjs → headerSection-Dy9kQpB1.mjs} +2 -2
- package/dist/client/hooks.mjs +247 -32
- package/dist/client/{locationMap-CLCShvlG.mjs → locationMap-DalCmWU0.mjs} +2 -2
- package/dist/client/{newsletterForm-Briukxzi.mjs → newsletterForm-SDDPvhS0.mjs} +23 -10
- package/dist/client/{pricing-Copadu-2.mjs → pricing-OcMz4SnX.mjs} +1 -1
- package/dist/client/{productDetail-oujlRd-r.mjs → productDetail-BQrgHElM.mjs} +3 -3
- package/dist/client/{productList-BRiIRUcd.mjs → productList-OnPn_UJj.mjs} +3 -3
- package/dist/client/{propsDecoder-CB2KS_ko.mjs → propsDecoder-zBdsnS-N.mjs} +38 -8
- package/dist/client/rendering/client.mjs +446 -121
- package/dist/client/rendering/islands.mjs +17 -17
- package/dist/client/rendering.mjs +601 -138
- package/dist/client/{scrollToBlock-B1IS1_ua.mjs → scrollToBlock-BNM4Ob2Y.mjs} +28 -11
- package/dist/client/{shop-Vn6yNFED.mjs → shop-Bv1fPTwQ.mjs} +6 -6
- package/dist/client/{shop-commerce-BVTqipYp.mjs → shop-commerce-D4KNGaW8.mjs} +5 -5
- package/dist/client/{shop-commerce-store-BVnJVy7v.mjs → shop-commerce-store-2N5EV0Rc.mjs} +1 -1
- package/dist/client/{shopShared-COIeK77T.mjs → shopShared-DvJGdHTV.mjs} +3 -3
- package/dist/client/{useEventFilters-DzIUcS9n.mjs → useEventFilters-BBBvGDHQ.mjs} +17 -11
- package/dist/preview-next/client/runtime.mjs +3 -3
- package/dist/preview-next/editor-chrome.css +4 -8
- package/dist/{sdk-runtime-CnCLvZRv.mjs → sdk-runtime-Defnbfzw.mjs} +1 -1
- package/dist/{separator-DKDRJ1oH.mjs → separator-CZXO3Sb0.mjs} +1 -1
- package/dist/server/components.mjs +384 -62
- package/dist/server/config-validation.mjs +232 -26
- package/dist/server/config.mjs +232 -26
- package/dist/server/data.mjs +247 -32
- package/dist/server/index.mjs +1 -1
- package/dist/server/next.mjs +400 -69
- package/dist/server/page-converter.mjs +189 -25
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +399 -68
- package/dist/server/rendering.mjs +399 -68
- package/dist/server/routing.mjs +261 -33
- package/dist/server/server.mjs +248 -33
- package/dist/server/theme-bridge.mjs +47 -15
- package/dist/server/theme.mjs +1 -1
- package/dist/styles/index.css +28 -2
- package/package.json +1 -1
package/dist/{SiteChromeCustomizeContext-CqGOz-Kv.mjs → SiteChromeCustomizeContext-D8LePX8x.mjs}
RENAMED
|
@@ -1513,30 +1513,30 @@ function parseMailingListPlacementTargeting(value) {
|
|
|
1513
1513
|
}
|
|
1514
1514
|
}
|
|
1515
1515
|
function parseMailingListVisitorSelection(value) {
|
|
1516
|
-
if (!isRecord$26(value)) return visitorSelectionError("shape");
|
|
1516
|
+
if (!isRecord$26(value)) return visitorSelectionError$1("shape");
|
|
1517
1517
|
switch (value.provider) {
|
|
1518
1518
|
case "native": {
|
|
1519
1519
|
const topicIds = parseVisitorIds(value.topicIds, parseNewsletterListId);
|
|
1520
|
-
return topicIds === null ? visitorSelectionError("targets") : ok$2({
|
|
1520
|
+
return topicIds === null ? visitorSelectionError$1("targets") : ok$2({
|
|
1521
1521
|
provider: "native",
|
|
1522
1522
|
topicIds
|
|
1523
1523
|
});
|
|
1524
1524
|
}
|
|
1525
1525
|
case "brevo": {
|
|
1526
1526
|
const listIds = parseVisitorIds(value.listIds, parseBrevoListId);
|
|
1527
|
-
return listIds === null ? visitorSelectionError("targets") : ok$2({
|
|
1527
|
+
return listIds === null ? visitorSelectionError$1("targets") : ok$2({
|
|
1528
1528
|
provider: "brevo",
|
|
1529
1529
|
listIds
|
|
1530
1530
|
});
|
|
1531
1531
|
}
|
|
1532
1532
|
case "mailchimp": {
|
|
1533
1533
|
const interestIds = parseVisitorIds(value.interestIds, parseMailchimpInterestId);
|
|
1534
|
-
return interestIds === null ? visitorSelectionError("targets") : ok$2({
|
|
1534
|
+
return interestIds === null ? visitorSelectionError$1("targets") : ok$2({
|
|
1535
1535
|
provider: "mailchimp",
|
|
1536
1536
|
interestIds
|
|
1537
1537
|
});
|
|
1538
1538
|
}
|
|
1539
|
-
default: return visitorSelectionError("provider");
|
|
1539
|
+
default: return visitorSelectionError$1("provider");
|
|
1540
1540
|
}
|
|
1541
1541
|
}
|
|
1542
1542
|
function parseNativeTargeting(selection) {
|
|
@@ -1655,7 +1655,7 @@ function targetingError(field) {
|
|
|
1655
1655
|
field
|
|
1656
1656
|
});
|
|
1657
1657
|
}
|
|
1658
|
-
function visitorSelectionError(field) {
|
|
1658
|
+
function visitorSelectionError$1(field) {
|
|
1659
1659
|
return err$1({
|
|
1660
1660
|
tag: "invalid_mailing_list_visitor_selection",
|
|
1661
1661
|
field
|
|
@@ -64664,13 +64664,9 @@ function matchesQuery(item, query) {
|
|
|
64664
64664
|
}
|
|
64665
64665
|
function CommandMultiSelect({ items, values, onValuesChange, placeholder, "aria-describedby": ariaDescribedBy, disabled, emptyLabel, isLoading, loadingLabel = "Loading…", error, emptySelectionLabel, selectedSummary, showBadges = true, helpText, className, triggerClassName, popoverContentClassName, showSearch = true, searchPlaceholder = "Search...", searchInputAriaLabel = "Search options" }) {
|
|
64666
64666
|
const [open, setOpen] = useState(false);
|
|
64667
|
-
const
|
|
64667
|
+
const triggerRef = useRef(null);
|
|
64668
|
+
const [portalContainer, setPortalContainer] = useState(null);
|
|
64668
64669
|
const selectedItems = useMemo(() => items.filter((item) => values.includes(item.id)), [items, values]);
|
|
64669
|
-
const filteredItems = useMemo(() => showSearch ? items.filter((item) => matchesQuery(item, query)) : items, [
|
|
64670
|
-
items,
|
|
64671
|
-
query,
|
|
64672
|
-
showSearch
|
|
64673
|
-
]);
|
|
64674
64670
|
const toggle = (id) => {
|
|
64675
64671
|
onValuesChange(values.includes(id) ? values.filter((value) => value !== id) : [...values, id]);
|
|
64676
64672
|
};
|
|
@@ -64689,8 +64685,8 @@ function CommandMultiSelect({ items, values, onValuesChange, placeholder, "aria-
|
|
|
64689
64685
|
const isDisabled = Boolean(disabled || isLoading || error);
|
|
64690
64686
|
const handleOpenChange = (nextOpen) => {
|
|
64691
64687
|
if (isDisabled) return;
|
|
64688
|
+
if (nextOpen) setPortalContainer(triggerRef.current?.closest("[role=\"dialog\"]") ?? null);
|
|
64692
64689
|
setOpen(nextOpen);
|
|
64693
|
-
if (!nextOpen && query) setQuery("");
|
|
64694
64690
|
};
|
|
64695
64691
|
return /* @__PURE__ */ jsxs("div", {
|
|
64696
64692
|
className: cn$2("max-w-xl space-y-2", className),
|
|
@@ -64707,6 +64703,7 @@ function CommandMultiSelect({ items, values, onValuesChange, placeholder, "aria-
|
|
|
64707
64703
|
children: [/* @__PURE__ */ jsx(PopoverTrigger, {
|
|
64708
64704
|
asChild: true,
|
|
64709
64705
|
children: /* @__PURE__ */ jsx(Button$1, {
|
|
64706
|
+
ref: triggerRef,
|
|
64710
64707
|
variant: "outline",
|
|
64711
64708
|
role: "combobox",
|
|
64712
64709
|
"aria-expanded": open,
|
|
@@ -64721,43 +64718,19 @@ function CommandMultiSelect({ items, values, onValuesChange, placeholder, "aria-
|
|
|
64721
64718
|
children: buttonLabel
|
|
64722
64719
|
})
|
|
64723
64720
|
})
|
|
64724
|
-
}), /* @__PURE__ */
|
|
64721
|
+
}), /* @__PURE__ */ jsx(PopoverContent, {
|
|
64722
|
+
container: portalContainer,
|
|
64725
64723
|
className: cn$2("w-[--radix-popover-trigger-width] max-w-[min(90vw,36rem)] p-0", popoverContentClassName),
|
|
64726
64724
|
align: "start",
|
|
64727
|
-
children:
|
|
64728
|
-
|
|
64729
|
-
|
|
64730
|
-
|
|
64731
|
-
|
|
64732
|
-
|
|
64733
|
-
|
|
64734
|
-
|
|
64735
|
-
|
|
64736
|
-
}) : null, /* @__PURE__ */ jsx("div", {
|
|
64737
|
-
role: "listbox",
|
|
64738
|
-
"aria-multiselectable": "true",
|
|
64739
|
-
className: "max-h-64 overflow-auto py-1",
|
|
64740
|
-
children: filteredItems.length > 0 ? filteredItems.map((item) => {
|
|
64741
|
-
const isSelected = values.includes(item.id);
|
|
64742
|
-
return /* @__PURE__ */ jsxs("button", {
|
|
64743
|
-
type: "button",
|
|
64744
|
-
role: "option",
|
|
64745
|
-
"aria-selected": isSelected,
|
|
64746
|
-
className: "group flex w-full items-center gap-2 px-3 py-2 text-left text-sm hover:bg-muted",
|
|
64747
|
-
onClick: () => toggle(item.id),
|
|
64748
|
-
children: [/* @__PURE__ */ jsx(Check, { className: cn$2("h-4 w-4 shrink-0", isSelected ? "opacity-100" : "opacity-0") }), /* @__PURE__ */ jsxs("div", {
|
|
64749
|
-
className: "flex min-w-0 flex-col",
|
|
64750
|
-
children: [/* @__PURE__ */ jsx("span", { children: item.label }), item.subtitle ? /* @__PURE__ */ jsx("span", {
|
|
64751
|
-
className: "text-xs text-muted-foreground",
|
|
64752
|
-
children: item.subtitle
|
|
64753
|
-
}) : null]
|
|
64754
|
-
})]
|
|
64755
|
-
}, item.id);
|
|
64756
|
-
}) : /* @__PURE__ */ jsx("p", {
|
|
64757
|
-
className: "px-3 py-6 text-sm text-muted-foreground",
|
|
64758
|
-
children: emptyLabel ?? "No results."
|
|
64759
|
-
})
|
|
64760
|
-
})]
|
|
64725
|
+
children: /* @__PURE__ */ jsx(MultiSelectOptions, {
|
|
64726
|
+
items,
|
|
64727
|
+
values,
|
|
64728
|
+
onToggle: toggle,
|
|
64729
|
+
showSearch,
|
|
64730
|
+
searchPlaceholder,
|
|
64731
|
+
searchInputAriaLabel,
|
|
64732
|
+
emptyLabel
|
|
64733
|
+
})
|
|
64761
64734
|
})]
|
|
64762
64735
|
}),
|
|
64763
64736
|
showBadges && selectedItems.length > 0 ? /* @__PURE__ */ jsx("div", {
|
|
@@ -64782,6 +64755,44 @@ function CommandMultiSelect({ items, values, onValuesChange, placeholder, "aria-
|
|
|
64782
64755
|
]
|
|
64783
64756
|
});
|
|
64784
64757
|
}
|
|
64758
|
+
function MultiSelectOptions({ items, values, onToggle, showSearch, searchPlaceholder, searchInputAriaLabel, emptyLabel }) {
|
|
64759
|
+
const [query, setQuery] = useState("");
|
|
64760
|
+
const filteredItems = showSearch ? items.filter((item) => matchesQuery(item, query)) : items;
|
|
64761
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [showSearch ? /* @__PURE__ */ jsx("div", {
|
|
64762
|
+
className: "sticky top-0 z-10 bg-popover p-2",
|
|
64763
|
+
children: /* @__PURE__ */ jsx(Input, {
|
|
64764
|
+
autoFocus: true,
|
|
64765
|
+
"aria-label": searchInputAriaLabel,
|
|
64766
|
+
placeholder: searchPlaceholder,
|
|
64767
|
+
value: query,
|
|
64768
|
+
onChange: (event) => setQuery(event.target.value)
|
|
64769
|
+
})
|
|
64770
|
+
}) : null, /* @__PURE__ */ jsx("div", {
|
|
64771
|
+
role: "listbox",
|
|
64772
|
+
"aria-multiselectable": "true",
|
|
64773
|
+
className: "max-h-64 overflow-auto overscroll-contain py-1",
|
|
64774
|
+
children: filteredItems.length > 0 ? filteredItems.map((item) => {
|
|
64775
|
+
const isSelected = values.includes(item.id);
|
|
64776
|
+
return /* @__PURE__ */ jsxs("button", {
|
|
64777
|
+
type: "button",
|
|
64778
|
+
role: "option",
|
|
64779
|
+
"aria-selected": isSelected,
|
|
64780
|
+
className: "group flex w-full items-center gap-2 px-3 py-2 text-left text-sm hover:bg-muted",
|
|
64781
|
+
onClick: () => onToggle(item.id),
|
|
64782
|
+
children: [/* @__PURE__ */ jsx(Check, { className: cn$2("h-4 w-4 shrink-0", isSelected ? "opacity-100" : "opacity-0") }), /* @__PURE__ */ jsxs("div", {
|
|
64783
|
+
className: "flex min-w-0 flex-col",
|
|
64784
|
+
children: [/* @__PURE__ */ jsx("span", { children: item.label }), item.subtitle ? /* @__PURE__ */ jsx("span", {
|
|
64785
|
+
className: "text-xs text-muted-foreground",
|
|
64786
|
+
children: item.subtitle
|
|
64787
|
+
}) : null]
|
|
64788
|
+
})]
|
|
64789
|
+
}, item.id);
|
|
64790
|
+
}) : /* @__PURE__ */ jsx("p", {
|
|
64791
|
+
className: "px-3 py-6 text-sm text-muted-foreground",
|
|
64792
|
+
children: emptyLabel ?? "No results."
|
|
64793
|
+
})
|
|
64794
|
+
})] });
|
|
64795
|
+
}
|
|
64785
64796
|
//#endregion
|
|
64786
64797
|
//#region ../../node_modules/.pnpm/@radix-ui+react-label@2.1.10_@types+react-dom@19.2.3_@types+react@19.2.17__@types+react_007bc5785938acc144f10abac23fbe91/node_modules/@radix-ui/react-label/dist/index.mjs
|
|
64787
64798
|
var NAME$1 = "Label";
|
|
@@ -80669,7 +80680,7 @@ const BUTTON_CONTRAST_POLICY = {
|
|
|
80669
80680
|
nonTextMinimumRatio: 3,
|
|
80670
80681
|
gradientSamplesPerSegment: 20,
|
|
80671
80682
|
alphaBackgrounds: "reject-without-known-surface",
|
|
80672
|
-
disabled: "
|
|
80683
|
+
disabled: "validated-colour-pair-with-muted-control-opacity"
|
|
80673
80684
|
};
|
|
80674
80685
|
function formatButtonColourContractError(error) {
|
|
80675
80686
|
switch (error.tag) {
|
|
@@ -81257,6 +81268,25 @@ function parseThemeForPersistence(value) {
|
|
|
81257
81268
|
};
|
|
81258
81269
|
}
|
|
81259
81270
|
//#endregion
|
|
81271
|
+
//#region ../theme-core/src/buttons/affordanceSuppression.ts
|
|
81272
|
+
/**
|
|
81273
|
+
* Internal: the opt-out the generated affordance rule is written against.
|
|
81274
|
+
*
|
|
81275
|
+
* A button style may declare a trailing `affordance`, which the theme renders as
|
|
81276
|
+
* a CSS `::after` on every button of that variant. An authored button that
|
|
81277
|
+
* renders its own trailing icon must not also receive the theme's, or it shows
|
|
81278
|
+
* two.
|
|
81279
|
+
*
|
|
81280
|
+
* Deliberately not exported from `./index`. This used to be public, and two
|
|
81281
|
+
* block components reached past the theme to draw arrows of their own — one of
|
|
81282
|
+
* them doubling up on the styles that declare an affordance, both of them
|
|
81283
|
+
* overriding the twelve styles that deliberately declare none. Whether a button
|
|
81284
|
+
* carries a trailing affordance is the style's decision; the only caller that
|
|
81285
|
+
* legitimately opts out is the authored-button renderer, which reaches it
|
|
81286
|
+
* through `themeButtonClassNameWithTrailingIcon`.
|
|
81287
|
+
*/
|
|
81288
|
+
const AFFORDANCE_SUPPRESS_CLASS = "rb-affordance-off";
|
|
81289
|
+
//#endregion
|
|
81260
81290
|
//#region ../theme-core/src/buttons/classNames.ts
|
|
81261
81291
|
/**
|
|
81262
81292
|
* Parse content/runtime variant identifiers into the closed theme-button class
|
|
@@ -81289,6 +81319,27 @@ function themeButtonClassName(spec) {
|
|
|
81289
81319
|
spec.extraClassName
|
|
81290
81320
|
].filter(Boolean).join(" ");
|
|
81291
81321
|
}
|
|
81322
|
+
/**
|
|
81323
|
+
* Button classes for an authored button that renders its own trailing icon.
|
|
81324
|
+
*
|
|
81325
|
+
* A separate function rather than a flag on `themeButtonClassName`, because
|
|
81326
|
+
* there is exactly one caller and it should stay visible in a diff. The name
|
|
81327
|
+
* states what the caller knows to be true of its own markup — that it renders a
|
|
81328
|
+
* trailing icon — rather than what the theme does about it. The consequence is
|
|
81329
|
+
* the theme's to decide and to change; a caller naming the consequence would be
|
|
81330
|
+
* asserting a policy it does not own, and would quietly become a lie the moment
|
|
81331
|
+
* that policy moved.
|
|
81332
|
+
*
|
|
81333
|
+
* Do not reach for this to remove an arrow you simply do not want. A trailing
|
|
81334
|
+
* affordance is declared by the button style, and a block overriding that is the
|
|
81335
|
+
* defect this replaced.
|
|
81336
|
+
*/
|
|
81337
|
+
function themeButtonClassNameWithTrailingIcon(spec) {
|
|
81338
|
+
return themeButtonClassName({
|
|
81339
|
+
...spec,
|
|
81340
|
+
extraClassName: [spec.extraClassName, AFFORDANCE_SUPPRESS_CLASS].filter(Boolean).join(" ")
|
|
81341
|
+
});
|
|
81342
|
+
}
|
|
81292
81343
|
//#endregion
|
|
81293
81344
|
//#region ../theme-core/src/tokens/tokens.ts
|
|
81294
81345
|
const defaultThemeTokens = {
|
|
@@ -83708,26 +83759,19 @@ function resolvedButtonFocusDeclarations(indicator, role) {
|
|
|
83708
83759
|
] : [["outline", value("outline", `3px solid ${indicator.colorCss}`)], ["outline-offset", value("outline-offset", "3px")]];
|
|
83709
83760
|
}
|
|
83710
83761
|
/**
|
|
83711
|
-
* Disabled buttons
|
|
83712
|
-
*
|
|
83713
|
-
*
|
|
83714
|
-
* remain observable.
|
|
83762
|
+
* Disabled buttons are deliberately muted as unavailable controls. Native
|
|
83763
|
+
* disabled controls are exempt from active-control contrast requirements;
|
|
83764
|
+
* opacity distinguishes the state without introducing a focus-like outline.
|
|
83765
|
+
* Retaining pointer events lets the not-allowed cursor remain observable.
|
|
83715
83766
|
*/
|
|
83716
83767
|
const RESOLVED_BUTTON_DISABLED_DECLARATIONS = [
|
|
83717
83768
|
["cursor", "not-allowed"],
|
|
83718
83769
|
["transform", "none"],
|
|
83719
83770
|
["box-shadow", "none"],
|
|
83720
|
-
["
|
|
83721
|
-
["outline-offset", "-4px"]
|
|
83771
|
+
["opacity", "0.55"]
|
|
83722
83772
|
];
|
|
83723
83773
|
//#endregion
|
|
83724
83774
|
//#region ../theme-core/src/buttons/generateButtonCss.ts
|
|
83725
|
-
/**
|
|
83726
|
-
* Class the `button` runtime node adds when it renders its own trailing icon,
|
|
83727
|
-
* so a node-level icon suppresses the theme's CSS `::after` affordance.
|
|
83728
|
-
* Shared so generator and renderer can't drift.
|
|
83729
|
-
*/
|
|
83730
|
-
const AFFORDANCE_SUPPRESS_CLASS = "rb-affordance-off";
|
|
83731
83775
|
const BUTTON_SIZE_NAMES = buttonSizeNameSchema.options;
|
|
83732
83776
|
/**
|
|
83733
83777
|
* Letter spacing token → CSS value.
|
|
@@ -86579,14 +86623,12 @@ function generateVariantCSS(variant, themeId, cardClasses, tokens, theme) {
|
|
|
86579
86623
|
const shadowValue = generateShadowValue(shadow);
|
|
86580
86624
|
rules.push(`box-shadow: ${shadowValue}`);
|
|
86581
86625
|
}
|
|
86582
|
-
|
|
86583
|
-
rules.push(`flex-direction: column`);
|
|
86584
|
-
rules.push(`position: relative`);
|
|
86585
|
-
rules.push(`overflow: visible`);
|
|
86626
|
+
const structureSelector = cardClasses.map((cardClass) => `:where([data-theme-scope="${themeId}"]) :where(.${cardClass})`).join(",\n");
|
|
86586
86627
|
const mediaRadius = MEDIA_CORNER_MAP[corners];
|
|
86587
86628
|
const mediaRules = [`border-top-left-radius: ${mediaRadius}`, `border-top-right-radius: ${mediaRadius}`];
|
|
86588
86629
|
const contentRules = [`padding: ${resolveContentPadding(variant)}`];
|
|
86589
86630
|
return [
|
|
86631
|
+
`${structureSelector} {\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: visible;\n}`,
|
|
86590
86632
|
`${containerSelector} {\n ${rules.join(";\n ")};\n}`,
|
|
86591
86633
|
...cardDecorationPseudoRules(containerSelectors, variant.decorations, resolveColor),
|
|
86592
86634
|
`${fallbackBackgroundSelector} {\n background: transparent;\n}`,
|
|
@@ -89614,6 +89656,7 @@ const calendarWindowQuerySchema = z.object({
|
|
|
89614
89656
|
eventSurface: z.enum(eventSurfaceScopeValues).optional(),
|
|
89615
89657
|
eventPresets: z.string().optional(),
|
|
89616
89658
|
scheduleScope: z.enum(eventScheduleScopeValues).optional(),
|
|
89659
|
+
seriesIds: z.string().optional(),
|
|
89617
89660
|
categoryIds: z.string().optional(),
|
|
89618
89661
|
venueId: z.string().transform(normalizeCalendarFilterId).optional(),
|
|
89619
89662
|
staffMemberId: z.string().transform(normalizeCalendarFilterId).optional()
|
|
@@ -89646,6 +89689,7 @@ function calendarQueryKey(siteId, stage, filters) {
|
|
|
89646
89689
|
filters.eventSurface ?? "all",
|
|
89647
89690
|
normalizedCsv(filters.eventPresets),
|
|
89648
89691
|
filters.scheduleScope ?? "any",
|
|
89692
|
+
...filters.seriesIds === void 0 ? [] : [normalizedCsv(filters.seriesIds)],
|
|
89649
89693
|
normalizedCsv(filters.categoryIds),
|
|
89650
89694
|
normalizeCalendarFilterId(filters.venueId) ?? "",
|
|
89651
89695
|
normalizeCalendarFilterId(filters.staffMemberId) ?? "",
|
|
@@ -93845,17 +93889,16 @@ const ButtonNode = ({ value, children, href, variantId = "primary", size = "md",
|
|
|
93845
93889
|
console.warn("[ButtonNode] Missing href for link-required button");
|
|
93846
93890
|
return null;
|
|
93847
93891
|
}
|
|
93848
|
-
const extraClassName = affordanceIcon ? [className, AFFORDANCE_SUPPRESS_CLASS].filter(Boolean).join(" ") : className;
|
|
93849
93892
|
const resolvedVariantId = parseThemeButtonVariantId(variantId);
|
|
93850
93893
|
if (variantId && !resolvedVariantId) {
|
|
93851
93894
|
console.error("[ButtonNode] Invalid button variant", { variantId });
|
|
93852
93895
|
return null;
|
|
93853
93896
|
}
|
|
93854
|
-
const combinedClassName = resolvedVariantId ? themeButtonClassName({
|
|
93897
|
+
const combinedClassName = resolvedVariantId ? (affordanceIcon ? themeButtonClassNameWithTrailingIcon : themeButtonClassName)({
|
|
93855
93898
|
variant: resolvedVariantId,
|
|
93856
93899
|
size,
|
|
93857
|
-
extraClassName
|
|
93858
|
-
}) :
|
|
93900
|
+
extraClassName: className
|
|
93901
|
+
}) : className;
|
|
93859
93902
|
if (resolvedHref) return /* @__PURE__ */ jsxs("a", {
|
|
93860
93903
|
href: resolvedHref,
|
|
93861
93904
|
target,
|
|
@@ -95633,6 +95676,7 @@ const publicPricingSchema = z.object({
|
|
|
95633
95676
|
});
|
|
95634
95677
|
const publicAppointmentServiceSchema = z.object({
|
|
95635
95678
|
id: z.string().min(1),
|
|
95679
|
+
slug: z.string().min(1).optional(),
|
|
95636
95680
|
title: z.string(),
|
|
95637
95681
|
description: z.string().nullable().optional(),
|
|
95638
95682
|
durationMinutes: z.number().int().positive(),
|
|
@@ -95709,7 +95753,7 @@ function formatAmountOrFree(amount, currency) {
|
|
|
95709
95753
|
currency
|
|
95710
95754
|
}, { decimals: "auto" });
|
|
95711
95755
|
}
|
|
95712
|
-
function buildRows(services, pathname) {
|
|
95756
|
+
function buildRows(services, pathname, servicePathPrefix) {
|
|
95713
95757
|
return services.map((service) => ({
|
|
95714
95758
|
id: service.id,
|
|
95715
95759
|
title: service.title,
|
|
@@ -95720,7 +95764,8 @@ function buildRows(services, pathname) {
|
|
|
95720
95764
|
href: resolveDedicatedBookingHref(pathname, {
|
|
95721
95765
|
kind: "appointment_service",
|
|
95722
95766
|
serviceId: service.id
|
|
95723
|
-
})
|
|
95767
|
+
}),
|
|
95768
|
+
detailsHref: servicePathPrefix && service.slug ? `${servicePathPrefix.replace(/\/$/, "")}/${encodeURIComponent(service.slug)}` : null
|
|
95724
95769
|
}));
|
|
95725
95770
|
}
|
|
95726
95771
|
function buildAppointmentServicesView(input) {
|
|
@@ -95739,13 +95784,14 @@ function buildAppointmentServicesView(input) {
|
|
|
95739
95784
|
};
|
|
95740
95785
|
return {
|
|
95741
95786
|
kind: "items",
|
|
95742
|
-
rows: buildRows(parsed.services, input.pathname)
|
|
95787
|
+
rows: buildRows(parsed.services, input.pathname, input.servicePathPrefix ?? null)
|
|
95743
95788
|
};
|
|
95744
95789
|
}
|
|
95745
|
-
function AppointmentServicesNode({ sectionHeading, services, pathname, className }) {
|
|
95790
|
+
function AppointmentServicesNode({ sectionHeading, services, pathname, servicePathPrefix, className }) {
|
|
95746
95791
|
const view = buildAppointmentServicesView({
|
|
95747
95792
|
services,
|
|
95748
|
-
pathname: typeof pathname === "string" ? pathname : void 0
|
|
95793
|
+
pathname: typeof pathname === "string" ? pathname : void 0,
|
|
95794
|
+
servicePathPrefix: typeof servicePathPrefix === "string" ? servicePathPrefix : null
|
|
95749
95795
|
});
|
|
95750
95796
|
const rootClassName = `appointment-services ${className ?? ""}`.trim();
|
|
95751
95797
|
const RowTitle = sectionHeading ? "h3" : "h2";
|
|
@@ -95776,7 +95822,10 @@ function AppointmentServicesNode({ sectionHeading, services, pathname, className
|
|
|
95776
95822
|
children: [
|
|
95777
95823
|
/* @__PURE__ */ jsx(RowTitle, {
|
|
95778
95824
|
className: "appointment-services-row-title rb-text-lg rb-font-medium rb-leading-tight",
|
|
95779
|
-
children: row.
|
|
95825
|
+
children: row.detailsHref ? /* @__PURE__ */ jsx("a", {
|
|
95826
|
+
href: row.detailsHref,
|
|
95827
|
+
children: row.title
|
|
95828
|
+
}) : row.title
|
|
95780
95829
|
}),
|
|
95781
95830
|
row.description ? /* @__PURE__ */ jsx("p", {
|
|
95782
95831
|
className: "appointment-services-row-description rb-text-sm rb-leading-6 status-muted",
|
|
@@ -98687,12 +98736,12 @@ const EventCompactRow = ({ event, buttonVariant = "primary", buttonText }) => {
|
|
|
98687
98736
|
}), cta.hidden ? /* @__PURE__ */ jsx("span", {
|
|
98688
98737
|
className: "event-compact-row-status",
|
|
98689
98738
|
children: cta.label
|
|
98690
|
-
}) : /* @__PURE__ */
|
|
98739
|
+
}) : /* @__PURE__ */ jsx("a", {
|
|
98691
98740
|
href: cta.href,
|
|
98692
98741
|
target: cta.external ? "_blank" : void 0,
|
|
98693
98742
|
rel: cta.external ? "noopener noreferrer" : void 0,
|
|
98694
98743
|
className: `${buttonClass} event-compact-row-cta`,
|
|
98695
|
-
children:
|
|
98744
|
+
children: /* @__PURE__ */ jsx("span", { children: cta.label })
|
|
98696
98745
|
})]
|
|
98697
98746
|
})]
|
|
98698
98747
|
})]
|
|
@@ -98891,6 +98940,35 @@ const calendarTabViewsSchema = z.enum([
|
|
|
98891
98940
|
"week"
|
|
98892
98941
|
]);
|
|
98893
98942
|
//#endregion
|
|
98943
|
+
//#region ../blocks/src/system/blocks/events/shared/eventSelection.ts
|
|
98944
|
+
/** Invalid saved selections fail closed rather than widening discovery. */
|
|
98945
|
+
function resolveEventSelection(mode, value) {
|
|
98946
|
+
if (mode !== "selected") return { kind: "matching" };
|
|
98947
|
+
const candidates = Array.isArray(value) ? value : typeof value === "string" ? value.split(",").filter(Boolean) : [];
|
|
98948
|
+
const ids = [];
|
|
98949
|
+
for (const candidate of candidates) {
|
|
98950
|
+
if (typeof candidate !== "string") return {
|
|
98951
|
+
kind: "selected",
|
|
98952
|
+
seriesIds: []
|
|
98953
|
+
};
|
|
98954
|
+
const parsed = parseEventSeriesId(candidate.trim());
|
|
98955
|
+
if (!parsed.ok) return {
|
|
98956
|
+
kind: "selected",
|
|
98957
|
+
seriesIds: []
|
|
98958
|
+
};
|
|
98959
|
+
ids.push(parsed.value);
|
|
98960
|
+
}
|
|
98961
|
+
return {
|
|
98962
|
+
kind: "selected",
|
|
98963
|
+
seriesIds: [...new Set(ids)].sort()
|
|
98964
|
+
};
|
|
98965
|
+
}
|
|
98966
|
+
/** Undefined means discovery; an empty string is an explicitly empty selection. */
|
|
98967
|
+
function eventSeriesScopeCsv(value) {
|
|
98968
|
+
if (value == null) return void 0;
|
|
98969
|
+
return typeof value === "string" ? value : value.join(",");
|
|
98970
|
+
}
|
|
98971
|
+
//#endregion
|
|
98894
98972
|
//#region ../blocks/src/system/blocks/events/shared/runGrouping.ts
|
|
98895
98973
|
function isWholeSeriesPublicEvent(event) {
|
|
98896
98974
|
return event.bookingScope === "whole_series";
|
|
@@ -100251,6 +100329,7 @@ function normalizeFilterId(value) {
|
|
|
100251
100329
|
return id === "all" ? void 0 : id;
|
|
100252
100330
|
}
|
|
100253
100331
|
function buildEventRuntimeFilters(input) {
|
|
100332
|
+
if (input.seriesIds != null) return { seriesIds: input.seriesIds };
|
|
100254
100333
|
const params = {};
|
|
100255
100334
|
if (input.eventSurface && input.eventSurface !== "all") params.eventSurface = input.eventSurface;
|
|
100256
100335
|
const eventPresets = normalizeCsvString(input.filterEventPresets);
|
|
@@ -100266,6 +100345,7 @@ function buildEventRuntimeFilters(input) {
|
|
|
100266
100345
|
}
|
|
100267
100346
|
function getEventRuntimeFiltersKey(filters) {
|
|
100268
100347
|
return JSON.stringify({
|
|
100348
|
+
seriesIds: filters?.seriesIds == null ? null : [...new Set(filters.seriesIds.split(",").filter(Boolean))].sort().join(","),
|
|
100269
100349
|
categoryIds: normalizeCsvString(filters?.categoryIds),
|
|
100270
100350
|
staffMemberId: normalizeOptionalId(filters?.staffMemberId),
|
|
100271
100351
|
venueId: normalizeOptionalId(filters?.venueId),
|
|
@@ -100286,6 +100366,7 @@ const eventCollectionFilterSourceSchemaShape = {
|
|
|
100286
100366
|
eventSurface: eventSurfaceScopeSchema$1.nullable().optional(),
|
|
100287
100367
|
filterEventPresets: z.union([z.string(), z.array(z.string())]).nullable().optional(),
|
|
100288
100368
|
scheduleScope: eventScheduleScopeSchema$1.nullable().optional(),
|
|
100369
|
+
seriesIds: z.union([z.string(), z.array(z.string())]).nullable().optional(),
|
|
100289
100370
|
filterCategoryIds: z.union([z.string(), z.array(z.string())]).nullable().optional(),
|
|
100290
100371
|
filterStaffMemberId: z.string().nullable().optional(),
|
|
100291
100372
|
filterVenueId: z.string().nullable().optional()
|
|
@@ -100332,6 +100413,7 @@ const eventCollectionDisplaySchemaShape = {
|
|
|
100332
100413
|
eventSurface: eventSurfaceScopeSchema$1,
|
|
100333
100414
|
filterEventPresets: z.string().nullable(),
|
|
100334
100415
|
scheduleScope: eventScheduleScopeSchema$1,
|
|
100416
|
+
seriesIds: z.string().nullable().optional(),
|
|
100335
100417
|
filterCategoryIds: z.string().nullable(),
|
|
100336
100418
|
filterStaffMemberId: z.string().nullable(),
|
|
100337
100419
|
filterVenueId: z.string().nullable(),
|
|
@@ -100379,11 +100461,15 @@ function buildEventCollectionDisplay(source) {
|
|
|
100379
100461
|
};
|
|
100380
100462
|
}
|
|
100381
100463
|
function buildEventCollectionFilterDisplay(source) {
|
|
100382
|
-
|
|
100383
|
-
|
|
100384
|
-
|
|
100385
|
-
|
|
100386
|
-
|
|
100464
|
+
const selected = source.seriesIds != null;
|
|
100465
|
+
const matchingFilters = selected ? {
|
|
100466
|
+
eventSurface: "all",
|
|
100467
|
+
filterEventPresets: null,
|
|
100468
|
+
scheduleScope: "any",
|
|
100469
|
+
filterCategoryIds: null,
|
|
100470
|
+
filterStaffMemberId: null,
|
|
100471
|
+
filterVenueId: null
|
|
100472
|
+
} : {
|
|
100387
100473
|
eventSurface: normalizeEventSurfaceScope(source.eventSurface),
|
|
100388
100474
|
filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
100389
100475
|
scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
|
|
@@ -100391,6 +100477,14 @@ function buildEventCollectionFilterDisplay(source) {
|
|
|
100391
100477
|
filterStaffMemberId: normalizeEventStaffMemberId(source.filterStaffMemberId),
|
|
100392
100478
|
filterVenueId: normalizeEventVenueId(source.filterVenueId)
|
|
100393
100479
|
};
|
|
100480
|
+
return {
|
|
100481
|
+
seriesIds: eventSeriesScopeCsv(source.seriesIds),
|
|
100482
|
+
showFilters: selected ? false : source.showFilters ?? true,
|
|
100483
|
+
showCategoryFilter: source.showCategoryFilter ?? "auto",
|
|
100484
|
+
showVenueFilter: source.showVenueFilter ?? false,
|
|
100485
|
+
showStaffFilter: source.showStaffFilter ?? true,
|
|
100486
|
+
...matchingFilters
|
|
100487
|
+
};
|
|
100394
100488
|
}
|
|
100395
100489
|
function buildEventCollectionPresentationDisplay(source) {
|
|
100396
100490
|
return {
|
|
@@ -100405,14 +100499,15 @@ function buildEventCollectionPresentationDisplay(source) {
|
|
|
100405
100499
|
}
|
|
100406
100500
|
function buildEventCollectionHydration(source, now = /* @__PURE__ */ new Date()) {
|
|
100407
100501
|
const timeZone = source.calendarWindow?.scope.timeZone ?? toBookingTimeZone(source.bookingTimeZone);
|
|
100502
|
+
const selected = source.seriesIds != null;
|
|
100408
100503
|
return {
|
|
100409
100504
|
calendarWindow: source.calendarWindow ?? void 0,
|
|
100410
100505
|
siteId: source.siteId,
|
|
100411
100506
|
stage: source.stage,
|
|
100412
100507
|
prefetchedEvents: source.events != null,
|
|
100413
|
-
eventSurface: normalizeEventSurfaceScope(source.eventSurface),
|
|
100414
|
-
filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
100415
|
-
scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
|
|
100508
|
+
eventSurface: selected ? "all" : normalizeEventSurfaceScope(source.eventSurface),
|
|
100509
|
+
filterEventPresets: selected ? null : normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
100510
|
+
scheduleScope: selected ? "any" : normalizeEventScheduleScope(source.scheduleScope),
|
|
100416
100511
|
calendarContext: {
|
|
100417
100512
|
timeZone,
|
|
100418
100513
|
initialToday: source.calendarWindow?.initialToday ?? getLocalScheduleDate(now, timeZone)
|
|
@@ -100982,13 +101077,10 @@ function OfferingsPreviewContent(props) {
|
|
|
100982
101077
|
}),
|
|
100983
101078
|
groupCta ? /* @__PURE__ */ jsx("footer", {
|
|
100984
101079
|
className: "offerings-preview-card-footer rb-mt-auto rb-flex",
|
|
100985
|
-
children: /* @__PURE__ */
|
|
101080
|
+
children: /* @__PURE__ */ jsx("a", {
|
|
100986
101081
|
className: groupLinkClass,
|
|
100987
101082
|
href: groupCta.href,
|
|
100988
|
-
children:
|
|
100989
|
-
"aria-hidden": "true",
|
|
100990
|
-
className: "offerings-preview-link-icon rb-h-4 rb-w-4"
|
|
100991
|
-
})]
|
|
101083
|
+
children: /* @__PURE__ */ jsx("span", { children: groupCta.label })
|
|
100992
101084
|
})
|
|
100993
101085
|
}) : null
|
|
100994
101086
|
]
|
|
@@ -114276,6 +114368,7 @@ function isDisplayMediaKind(kind) {
|
|
|
114276
114368
|
}
|
|
114277
114369
|
const siteOptionSources = [
|
|
114278
114370
|
"eventCategories",
|
|
114371
|
+
"eventSeries",
|
|
114279
114372
|
"venues",
|
|
114280
114373
|
"staffMembers"
|
|
114281
114374
|
];
|
|
@@ -119653,6 +119746,65 @@ const formBlockDefinition = {
|
|
|
119653
119746
|
runtime: formBlockRuntime
|
|
119654
119747
|
};
|
|
119655
119748
|
//#endregion
|
|
119749
|
+
//#region ../blocks/src/system/blocks/events/eventSelectionFields.ts
|
|
119750
|
+
const eventSelectionFields = [{
|
|
119751
|
+
id: "eventSelection",
|
|
119752
|
+
type: "select",
|
|
119753
|
+
label: "Events to show",
|
|
119754
|
+
required: false,
|
|
119755
|
+
multiple: false,
|
|
119756
|
+
defaultValue: "matching",
|
|
119757
|
+
options: [{
|
|
119758
|
+
value: "matching",
|
|
119759
|
+
label: "All matching events"
|
|
119760
|
+
}, {
|
|
119761
|
+
value: "selected",
|
|
119762
|
+
label: "Selected events"
|
|
119763
|
+
}],
|
|
119764
|
+
ui: { intent: "behavior" }
|
|
119765
|
+
}, createSiteOptionSelectField({
|
|
119766
|
+
id: "selectedEventSeriesIds",
|
|
119767
|
+
label: "Selected events",
|
|
119768
|
+
description: "Show upcoming dates for these events. Other event filters do not apply.",
|
|
119769
|
+
required: false,
|
|
119770
|
+
multiple: true,
|
|
119771
|
+
defaultValue: [],
|
|
119772
|
+
optionSource: "eventSeries",
|
|
119773
|
+
ui: {
|
|
119774
|
+
intent: "behavior",
|
|
119775
|
+
searchThreshold: 1,
|
|
119776
|
+
visibleWhen: {
|
|
119777
|
+
field: "eventSelection",
|
|
119778
|
+
equals: "selected"
|
|
119779
|
+
}
|
|
119780
|
+
}
|
|
119781
|
+
})];
|
|
119782
|
+
function withEventSelectionVisibility(field) {
|
|
119783
|
+
if (![
|
|
119784
|
+
"eventSurface",
|
|
119785
|
+
"filterEventPresets",
|
|
119786
|
+
"scheduleScope",
|
|
119787
|
+
"filterCategoryIds",
|
|
119788
|
+
"filterStaffMemberId",
|
|
119789
|
+
"filterVenueId",
|
|
119790
|
+
"showFilters",
|
|
119791
|
+
"showCategoryFilter",
|
|
119792
|
+
"showVenueFilter",
|
|
119793
|
+
"showStaffFilter"
|
|
119794
|
+
].includes(field.id)) return field;
|
|
119795
|
+
const visibleWhen = field.ui?.visibleWhen;
|
|
119796
|
+
return {
|
|
119797
|
+
...field,
|
|
119798
|
+
ui: {
|
|
119799
|
+
...field.ui,
|
|
119800
|
+
visibleWhen: { allOf: [{
|
|
119801
|
+
field: "eventSelection",
|
|
119802
|
+
notEquals: "selected"
|
|
119803
|
+
}, ...visibleWhen ? [visibleWhen] : []] }
|
|
119804
|
+
}
|
|
119805
|
+
};
|
|
119806
|
+
}
|
|
119807
|
+
//#endregion
|
|
119656
119808
|
//#region ../blocks/src/system/runtime/nodes/events/EventCalendar.interactive.ts
|
|
119657
119809
|
const eventCalendarSourceSchema = z.object({
|
|
119658
119810
|
...eventCollectionSourceSchemaShape,
|
|
@@ -119737,6 +119889,7 @@ function buildEventCalendarListingRender(render, className = render.display.clas
|
|
|
119737
119889
|
eventSurface: display.eventSurface,
|
|
119738
119890
|
filterEventPresets: display.filterEventPresets,
|
|
119739
119891
|
scheduleScope: display.scheduleScope,
|
|
119892
|
+
seriesIds: display.seriesIds,
|
|
119740
119893
|
filterCategoryIds: display.filterCategoryIds,
|
|
119741
119894
|
filterStaffMemberId: display.filterStaffMemberId,
|
|
119742
119895
|
filterVenueId: display.filterVenueId,
|
|
@@ -119774,19 +119927,59 @@ function buildEventCalendarInteractiveIslandProps(props) {
|
|
|
119774
119927
|
//#region ../blocks/src/system/blocks/events/eventCalendarDataLoaders.ts
|
|
119775
119928
|
const scopeParams = {
|
|
119776
119929
|
siteId: { $bind: { from: "$root.siteId" } },
|
|
119930
|
+
seriesIds: { $bind: {
|
|
119931
|
+
from: "content",
|
|
119932
|
+
transforms: [{
|
|
119933
|
+
id: "events.calendarSelectionParam",
|
|
119934
|
+
options: { key: "seriesIds" }
|
|
119935
|
+
}]
|
|
119936
|
+
} },
|
|
119777
119937
|
stage: { $bind: {
|
|
119778
119938
|
from: "$root.previewStage",
|
|
119779
119939
|
fallback: "published"
|
|
119780
119940
|
} },
|
|
119781
|
-
eventSurface: { $bind: {
|
|
119941
|
+
eventSurface: { $bind: {
|
|
119942
|
+
from: "content",
|
|
119943
|
+
transforms: [{
|
|
119944
|
+
id: "events.calendarSelectionParam",
|
|
119945
|
+
options: { key: "eventSurface" }
|
|
119946
|
+
}, { id: "value.csv" }]
|
|
119947
|
+
} },
|
|
119782
119948
|
eventPresets: { $bind: {
|
|
119783
|
-
from: "content
|
|
119784
|
-
transforms: [{
|
|
119949
|
+
from: "content",
|
|
119950
|
+
transforms: [{
|
|
119951
|
+
id: "events.calendarSelectionParam",
|
|
119952
|
+
options: { key: "filterEventPresets" }
|
|
119953
|
+
}, { id: "value.csv" }]
|
|
119954
|
+
} },
|
|
119955
|
+
scheduleScope: { $bind: {
|
|
119956
|
+
from: "content",
|
|
119957
|
+
transforms: [{
|
|
119958
|
+
id: "events.calendarSelectionParam",
|
|
119959
|
+
options: { key: "scheduleScope" }
|
|
119960
|
+
}, { id: "value.csv" }]
|
|
119785
119961
|
} },
|
|
119786
|
-
|
|
119787
|
-
|
|
119788
|
-
|
|
119789
|
-
|
|
119962
|
+
categoryIds: { $bind: {
|
|
119963
|
+
from: "content",
|
|
119964
|
+
transforms: [{
|
|
119965
|
+
id: "events.calendarSelectionParam",
|
|
119966
|
+
options: { key: "filterCategoryIds" }
|
|
119967
|
+
}, { id: "value.csv" }]
|
|
119968
|
+
} },
|
|
119969
|
+
staffMemberId: { $bind: {
|
|
119970
|
+
from: "content",
|
|
119971
|
+
transforms: [{
|
|
119972
|
+
id: "events.calendarSelectionParam",
|
|
119973
|
+
options: { key: "filterStaffMemberId" }
|
|
119974
|
+
}, { id: "value.csv" }]
|
|
119975
|
+
} },
|
|
119976
|
+
venueId: { $bind: {
|
|
119977
|
+
from: "content",
|
|
119978
|
+
transforms: [{
|
|
119979
|
+
id: "events.calendarSelectionParam",
|
|
119980
|
+
options: { key: "filterVenueId" }
|
|
119981
|
+
}, { id: "value.csv" }]
|
|
119982
|
+
} }
|
|
119790
119983
|
};
|
|
119791
119984
|
/** Combined renders two jobs; calendar-only variants never pay for the list seed. */
|
|
119792
119985
|
const eventCalendarDataLoaders = {
|
|
@@ -119916,6 +120109,13 @@ const eventCalendarLayout = [styledSection({
|
|
|
119916
120109
|
from: "content.defaultCalendarView",
|
|
119917
120110
|
fallback: "month"
|
|
119918
120111
|
} },
|
|
120112
|
+
seriesIds: { $bind: {
|
|
120113
|
+
from: "content",
|
|
120114
|
+
transforms: [{
|
|
120115
|
+
id: "events.calendarSelectionParam",
|
|
120116
|
+
options: { key: "seriesIds" }
|
|
120117
|
+
}]
|
|
120118
|
+
} },
|
|
119919
120119
|
showFilters: { $bind: {
|
|
119920
120120
|
from: "content.showFilters",
|
|
119921
120121
|
fallback: true
|
|
@@ -119937,17 +120137,47 @@ const eventCalendarLayout = [styledSection({
|
|
|
119937
120137
|
fallback: true
|
|
119938
120138
|
} },
|
|
119939
120139
|
eventSurface: { $bind: {
|
|
119940
|
-
from: "content
|
|
119941
|
-
|
|
120140
|
+
from: "content",
|
|
120141
|
+
transforms: [{
|
|
120142
|
+
id: "events.calendarSelectionParam",
|
|
120143
|
+
options: { key: "eventSurface" }
|
|
120144
|
+
}]
|
|
120145
|
+
} },
|
|
120146
|
+
filterEventPresets: { $bind: {
|
|
120147
|
+
from: "content",
|
|
120148
|
+
transforms: [{
|
|
120149
|
+
id: "events.calendarSelectionParam",
|
|
120150
|
+
options: { key: "filterEventPresets" }
|
|
120151
|
+
}]
|
|
119942
120152
|
} },
|
|
119943
|
-
filterEventPresets: { $bind: { from: "content.filterEventPresets" } },
|
|
119944
120153
|
scheduleScope: { $bind: {
|
|
119945
|
-
from: "content
|
|
119946
|
-
|
|
120154
|
+
from: "content",
|
|
120155
|
+
transforms: [{
|
|
120156
|
+
id: "events.calendarSelectionParam",
|
|
120157
|
+
options: { key: "scheduleScope" }
|
|
120158
|
+
}]
|
|
120159
|
+
} },
|
|
120160
|
+
filterCategoryIds: { $bind: {
|
|
120161
|
+
from: "content",
|
|
120162
|
+
transforms: [{
|
|
120163
|
+
id: "events.calendarSelectionParam",
|
|
120164
|
+
options: { key: "filterCategoryIds" }
|
|
120165
|
+
}]
|
|
120166
|
+
} },
|
|
120167
|
+
filterStaffMemberId: { $bind: {
|
|
120168
|
+
from: "content",
|
|
120169
|
+
transforms: [{
|
|
120170
|
+
id: "events.calendarSelectionParam",
|
|
120171
|
+
options: { key: "filterStaffMemberId" }
|
|
120172
|
+
}]
|
|
120173
|
+
} },
|
|
120174
|
+
filterVenueId: { $bind: {
|
|
120175
|
+
from: "content",
|
|
120176
|
+
transforms: [{
|
|
120177
|
+
id: "events.calendarSelectionParam",
|
|
120178
|
+
options: { key: "filterVenueId" }
|
|
120179
|
+
}]
|
|
119947
120180
|
} },
|
|
119948
|
-
filterCategoryIds: { $bind: { from: "content.filterCategoryIds" } },
|
|
119949
|
-
filterStaffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
|
|
119950
|
-
filterVenueId: { $bind: { from: "content.filterVenueId" } },
|
|
119951
120181
|
cardRole: { $bind: {
|
|
119952
120182
|
from: "content._cardStyles.role",
|
|
119953
120183
|
fallback: "default"
|
|
@@ -120451,6 +120681,7 @@ const eventCalendarAdditionalFields = [
|
|
|
120451
120681
|
}
|
|
120452
120682
|
}
|
|
120453
120683
|
},
|
|
120684
|
+
...eventSelectionFields,
|
|
120454
120685
|
{
|
|
120455
120686
|
id: "eventSurface",
|
|
120456
120687
|
type: "select",
|
|
@@ -120660,7 +120891,7 @@ const eventCalendarBlockDefinition = {
|
|
|
120660
120891
|
titleSource: "heading",
|
|
120661
120892
|
description: "Display events with calendar, list, or combined views with filtering",
|
|
120662
120893
|
skipSectionStyles: true,
|
|
120663
|
-
additionalFields: eventCalendarAdditionalFields,
|
|
120894
|
+
additionalFields: eventCalendarAdditionalFields.map(withEventSelectionVisibility),
|
|
120664
120895
|
styleTokens: {
|
|
120665
120896
|
background: "surface",
|
|
120666
120897
|
typography: "body",
|
|
@@ -120769,6 +121000,7 @@ const eventListingHydrationSchema = z.object({
|
|
|
120769
121000
|
eventSurface: eventSurfaceScopeSchema,
|
|
120770
121001
|
filterEventPresets: z.string().nullable(),
|
|
120771
121002
|
scheduleScope: eventScheduleScopeSchema,
|
|
121003
|
+
seriesIds: z.string().nullable().optional(),
|
|
120772
121004
|
filterCategoryIds: z.string().nullable().optional(),
|
|
120773
121005
|
filterStaffMemberId: z.string().nullable().optional(),
|
|
120774
121006
|
filterVenueId: z.string().nullable().optional(),
|
|
@@ -120829,6 +121061,7 @@ const eventListingBlockRuntime = defineProgressiveBlockRuntime({
|
|
|
120829
121061
|
eventSurface: normalizeEventSurfaceScope(source.eventSurface),
|
|
120830
121062
|
filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
120831
121063
|
scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
|
|
121064
|
+
seriesIds: eventSeriesScopeCsv(source.seriesIds),
|
|
120832
121065
|
filterCategoryIds: normalizeEventCategoryIdsCsv(source.filterCategoryIds),
|
|
120833
121066
|
filterStaffMemberId: normalizeEventStaffMemberId(source.filterStaffMemberId),
|
|
120834
121067
|
filterVenueId: normalizeEventVenueId(source.filterVenueId),
|
|
@@ -125325,10 +125558,14 @@ function buildDiscountAvailabilityRequestPlan(options) {
|
|
|
125325
125558
|
}
|
|
125326
125559
|
};
|
|
125327
125560
|
}
|
|
125328
|
-
function discountAvailabilityStateFromResponse(response) {
|
|
125329
|
-
if (!discountAvailabilityHasDiscounts(response)) return {
|
|
125561
|
+
function discountAvailabilityStateFromResponse(requestKey, response) {
|
|
125562
|
+
if (!discountAvailabilityHasDiscounts(response)) return {
|
|
125563
|
+
tag: "unavailable",
|
|
125564
|
+
requestKey
|
|
125565
|
+
};
|
|
125330
125566
|
return {
|
|
125331
125567
|
tag: "available",
|
|
125568
|
+
requestKey,
|
|
125332
125569
|
manualCodeEntryAllowed: discountAvailabilityAllowsManualEntry(response),
|
|
125333
125570
|
autoAppliedDiscount: getAutoAppliedDiscountPreview(response)
|
|
125334
125571
|
};
|
|
@@ -125338,10 +125575,13 @@ function discountCodeUiReducer(state, event) {
|
|
|
125338
125575
|
case "availability-disabled": return initialDiscountCodeUiState;
|
|
125339
125576
|
case "availability-loading": return {
|
|
125340
125577
|
...state,
|
|
125341
|
-
availability: {
|
|
125578
|
+
availability: {
|
|
125579
|
+
tag: "loading",
|
|
125580
|
+
previous: state.availability.tag === "available" || state.availability.tag === "unavailable" ? state.availability : state.availability.tag === "loading" ? state.availability.previous : null
|
|
125581
|
+
}
|
|
125342
125582
|
};
|
|
125343
125583
|
case "availability-loaded": {
|
|
125344
|
-
const availability = discountAvailabilityStateFromResponse(event.response);
|
|
125584
|
+
const availability = discountAvailabilityStateFromResponse(event.requestKey, event.response);
|
|
125345
125585
|
if (availability.tag !== "available" || !availability.manualCodeEntryAllowed) return {
|
|
125346
125586
|
...state,
|
|
125347
125587
|
discountUiOpen: false,
|
|
@@ -125357,7 +125597,10 @@ function discountCodeUiReducer(state, event) {
|
|
|
125357
125597
|
...state,
|
|
125358
125598
|
discountUiOpen: false,
|
|
125359
125599
|
discountCode: "",
|
|
125360
|
-
availability: {
|
|
125600
|
+
availability: {
|
|
125601
|
+
tag: "error",
|
|
125602
|
+
requestKey: event.requestKey
|
|
125603
|
+
}
|
|
125361
125604
|
};
|
|
125362
125605
|
case "discount-code-changed": return {
|
|
125363
125606
|
...state,
|
|
@@ -125393,11 +125636,15 @@ function useDiscountCodeUi(options) {
|
|
|
125393
125636
|
if (cancelled) return;
|
|
125394
125637
|
dispatch({
|
|
125395
125638
|
type: "availability-loaded",
|
|
125639
|
+
requestKey: requestPlan.key,
|
|
125396
125640
|
response: res
|
|
125397
125641
|
});
|
|
125398
125642
|
} catch {
|
|
125399
125643
|
if (cancelled) return;
|
|
125400
|
-
dispatch({
|
|
125644
|
+
dispatch({
|
|
125645
|
+
type: "availability-failed",
|
|
125646
|
+
requestKey: requestPlan.key
|
|
125647
|
+
});
|
|
125401
125648
|
}
|
|
125402
125649
|
}
|
|
125403
125650
|
checkDiscountAvailability();
|
|
@@ -125406,8 +125653,9 @@ function useDiscountCodeUi(options) {
|
|
|
125406
125653
|
};
|
|
125407
125654
|
}, [options.api, requestPlan]);
|
|
125408
125655
|
const availability = state.availability;
|
|
125409
|
-
const
|
|
125410
|
-
const
|
|
125656
|
+
const settledAvailability = availability.tag === "loading" ? availability.previous : availability.tag === "available" || availability.tag === "unavailable" ? availability : null;
|
|
125657
|
+
const isAvailable = settledAvailability?.tag === "available";
|
|
125658
|
+
const manualCodeEntryAllowed = isAvailable ? settledAvailability.manualCodeEntryAllowed : false;
|
|
125411
125659
|
return {
|
|
125412
125660
|
discountUiOpen: state.discountUiOpen,
|
|
125413
125661
|
setDiscountUiOpen: (isOpen) => dispatch({
|
|
@@ -125421,8 +125669,10 @@ function useDiscountCodeUi(options) {
|
|
|
125421
125669
|
}),
|
|
125422
125670
|
discountsAvailable: isAvailable,
|
|
125423
125671
|
manualCodeEntryAllowed,
|
|
125424
|
-
autoAppliedDiscount: isAvailable ?
|
|
125425
|
-
discountsAvailableLoading: availability.tag === "loading"
|
|
125672
|
+
autoAppliedDiscount: isAvailable ? settledAvailability.autoAppliedDiscount : null,
|
|
125673
|
+
discountsAvailableLoading: availability.tag === "loading",
|
|
125674
|
+
discountAvailabilityRequestKey: requestPlan.key,
|
|
125675
|
+
settledDiscountAvailabilityRequestKey: availability.tag === "error" ? availability.requestKey : settledAvailability?.requestKey ?? null
|
|
125426
125676
|
};
|
|
125427
125677
|
}
|
|
125428
125678
|
//#endregion
|
|
@@ -129611,6 +129861,7 @@ function getTicketTypeLineMax(input) {
|
|
|
129611
129861
|
const initialEligibilityLookupState = {
|
|
129612
129862
|
tag: "idle",
|
|
129613
129863
|
eligibility: null,
|
|
129864
|
+
settledRequestKey: null,
|
|
129614
129865
|
error: null
|
|
129615
129866
|
};
|
|
129616
129867
|
function eligibilityLookupReducer(state, action) {
|
|
@@ -129619,16 +129870,19 @@ function eligibilityLookupReducer(state, action) {
|
|
|
129619
129870
|
case "loading-started": return {
|
|
129620
129871
|
tag: "loading",
|
|
129621
129872
|
eligibility: state.eligibility,
|
|
129873
|
+
settledRequestKey: state.settledRequestKey,
|
|
129622
129874
|
error: null
|
|
129623
129875
|
};
|
|
129624
129876
|
case "resolved": return {
|
|
129625
129877
|
tag: "resolved",
|
|
129626
129878
|
eligibility: action.eligibility,
|
|
129879
|
+
settledRequestKey: action.requestKey,
|
|
129627
129880
|
error: null
|
|
129628
129881
|
};
|
|
129629
129882
|
case "failed": return {
|
|
129630
129883
|
tag: "failed",
|
|
129631
129884
|
eligibility: null,
|
|
129885
|
+
settledRequestKey: null,
|
|
129632
129886
|
error: action.message
|
|
129633
129887
|
};
|
|
129634
129888
|
default: return assertNever$5(action);
|
|
@@ -129734,9 +129988,23 @@ function toRegistrationOptionsSubject(subject, attendanceMode) {
|
|
|
129734
129988
|
function useEligibility(params) {
|
|
129735
129989
|
return useEligibilityWithDeps(params, eventRegistrationHooksDeps);
|
|
129736
129990
|
}
|
|
129991
|
+
function eligibilityRequestKey(params) {
|
|
129992
|
+
return JSON.stringify({
|
|
129993
|
+
enabled: params.enabled,
|
|
129994
|
+
refreshKey: params.refreshKey ?? 0,
|
|
129995
|
+
subject: params.subject,
|
|
129996
|
+
attendanceMode: params.attendanceMode ?? null,
|
|
129997
|
+
ticketSelections: params.ticketSelectionsKey,
|
|
129998
|
+
selectedSlidingAmount: params.selectedSlidingAmount ?? null
|
|
129999
|
+
});
|
|
130000
|
+
}
|
|
129737
130001
|
function useEligibilityWithDeps(params, deps) {
|
|
129738
130002
|
const api = deps.useBlockApi();
|
|
129739
130003
|
const ticketSelectionsKey = JSON.stringify(normalizeTicketSelectionLines(params.ticketSelections));
|
|
130004
|
+
const requestKey = eligibilityRequestKey({
|
|
130005
|
+
...params,
|
|
130006
|
+
ticketSelectionsKey
|
|
130007
|
+
});
|
|
129740
130008
|
const [state, dispatch] = useReducer(eligibilityLookupReducer, initialEligibilityLookupState);
|
|
129741
130009
|
const requestIdRef = useRef(0);
|
|
129742
130010
|
useEffect(() => {
|
|
@@ -129769,7 +130037,8 @@ function useEligibilityWithDeps(params, deps) {
|
|
|
129769
130037
|
if (cancelled || requestIdRef.current !== requestId) return;
|
|
129770
130038
|
dispatch({
|
|
129771
130039
|
type: "resolved",
|
|
129772
|
-
eligibility: transformRegistrationOptionsResponse(result)
|
|
130040
|
+
eligibility: transformRegistrationOptionsResponse(result),
|
|
130041
|
+
requestKey
|
|
129773
130042
|
});
|
|
129774
130043
|
} catch {
|
|
129775
130044
|
if (cancelled || requestIdRef.current !== requestId) return;
|
|
@@ -129798,6 +130067,8 @@ function useEligibilityWithDeps(params, deps) {
|
|
|
129798
130067
|
return {
|
|
129799
130068
|
state,
|
|
129800
130069
|
eligibility: state.eligibility,
|
|
130070
|
+
settledRequestKey: state.settledRequestKey,
|
|
130071
|
+
requestKey,
|
|
129801
130072
|
isLoading: state.tag === "loading",
|
|
129802
130073
|
error: state.error,
|
|
129803
130074
|
creditState
|
|
@@ -131057,6 +131328,68 @@ function buildOccurrenceRegistrationRequest(options, prepared, method, passId, m
|
|
|
131057
131328
|
};
|
|
131058
131329
|
}
|
|
131059
131330
|
//#endregion
|
|
131331
|
+
//#region ../blocks/src/system/runtime/nodes/event-registration/useSettledCommerceView.ts
|
|
131332
|
+
function buildCandidate(input) {
|
|
131333
|
+
if (!input.eligibilityIsSettled || !input.eligibility || !input.currentEvent) return null;
|
|
131334
|
+
return {
|
|
131335
|
+
eventSelectionId: input.currentEvent.selectionId,
|
|
131336
|
+
discountContext: resolveDiscountContext({
|
|
131337
|
+
paymentSelection: input.paymentSelection,
|
|
131338
|
+
event: input.currentEvent,
|
|
131339
|
+
eventRequiresPayment: input.eventRequiresPayment,
|
|
131340
|
+
ticketsCount: input.ticketsCount
|
|
131341
|
+
}),
|
|
131342
|
+
subtotalCents: input.eligibility.price,
|
|
131343
|
+
summaryLines: input.eligibility.ticketLines.map((line) => ({
|
|
131344
|
+
pricingOptionId: line.pricingOptionId,
|
|
131345
|
+
label: line.label,
|
|
131346
|
+
quantity: line.quantity,
|
|
131347
|
+
unitPriceCents: line.unitPriceCents,
|
|
131348
|
+
subtotalCents: line.subtotalCents
|
|
131349
|
+
}))
|
|
131350
|
+
};
|
|
131351
|
+
}
|
|
131352
|
+
function eligibilityIsSettled(result) {
|
|
131353
|
+
return result.settledRequestKey === result.requestKey;
|
|
131354
|
+
}
|
|
131355
|
+
function viewIsStale(view, currentEvent, eligibilityState) {
|
|
131356
|
+
return view.eventSelectionId !== currentEvent?.selectionId || eligibilityState?.tag === "failed" || eligibilityState?.tag === "idle";
|
|
131357
|
+
}
|
|
131358
|
+
function requestIsSettled(discountUi) {
|
|
131359
|
+
return discountUi.discountAvailabilityRequestKey === "disabled" || discountUi.settledDiscountAvailabilityRequestKey === discountUi.discountAvailabilityRequestKey;
|
|
131360
|
+
}
|
|
131361
|
+
function discountRequest(view) {
|
|
131362
|
+
const discountContext = view?.discountContext ?? null;
|
|
131363
|
+
return {
|
|
131364
|
+
discountContext,
|
|
131365
|
+
subtotalCents: discountContext?.type === "event" && view?.subtotalCents !== null ? view?.subtotalCents : void 0
|
|
131366
|
+
};
|
|
131367
|
+
}
|
|
131368
|
+
function useSettledCommerceView(input) {
|
|
131369
|
+
const candidate = buildCandidate({
|
|
131370
|
+
eligibilityIsSettled: eligibilityIsSettled(input.eligibilityResult),
|
|
131371
|
+
eligibility: input.eligibility,
|
|
131372
|
+
currentEvent: input.currentEvent,
|
|
131373
|
+
paymentSelection: input.paymentSelection,
|
|
131374
|
+
eventRequiresPayment: input.eventRequiresPayment,
|
|
131375
|
+
ticketsCount: input.ticketsCount
|
|
131376
|
+
});
|
|
131377
|
+
const settledRef = useRef(candidate);
|
|
131378
|
+
if (settledRef.current && viewIsStale(settledRef.current, input.currentEvent, input.eligibilityResult.state)) settledRef.current = null;
|
|
131379
|
+
const requestView = candidate ?? settledRef.current;
|
|
131380
|
+
const discountUi = input.useDiscountCodeUi({
|
|
131381
|
+
api: input.api,
|
|
131382
|
+
...discountRequest(requestView)
|
|
131383
|
+
});
|
|
131384
|
+
if (candidate && requestIsSettled(discountUi)) settledRef.current = candidate;
|
|
131385
|
+
return {
|
|
131386
|
+
discountUi,
|
|
131387
|
+
discountContext: settledRef.current?.discountContext ?? null,
|
|
131388
|
+
ticketSelectionSubtotalCents: settledRef.current?.subtotalCents ?? null,
|
|
131389
|
+
ticketSelectionSummaryLines: settledRef.current?.summaryLines ?? []
|
|
131390
|
+
};
|
|
131391
|
+
}
|
|
131392
|
+
//#endregion
|
|
131060
131393
|
//#region ../blocks/src/system/runtime/nodes/event-registration/registrationWizardContext.ts
|
|
131061
131394
|
function getEventSelectionDefaults(event) {
|
|
131062
131395
|
const suggestedAmount = getSlidingScaleForEvent(event)?.suggestedAmount;
|
|
@@ -131210,10 +131543,6 @@ function isSoldOutWithoutWaitlist(input) {
|
|
|
131210
131543
|
}
|
|
131211
131544
|
//#endregion
|
|
131212
131545
|
//#region ../blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.ts
|
|
131213
|
-
function resolveDiscountSubtotalCents(context, subtotalCents) {
|
|
131214
|
-
if (context?.type !== "event" || subtotalCents === null) return void 0;
|
|
131215
|
-
return subtotalCents;
|
|
131216
|
-
}
|
|
131217
131546
|
function usesTieredPricing(event) {
|
|
131218
131547
|
return event !== null && event !== void 0 ? publicEventPricingStrategy(event.pricing) === "tiered" : false;
|
|
131219
131548
|
}
|
|
@@ -131665,30 +131994,15 @@ function useEventRegistrationWizardWithDeps(options, deps) {
|
|
|
131665
131994
|
}
|
|
131666
131995
|
setStep("select-tickets");
|
|
131667
131996
|
};
|
|
131668
|
-
const discountContext
|
|
131669
|
-
|
|
131670
|
-
|
|
131671
|
-
|
|
131672
|
-
|
|
131673
|
-
}), [
|
|
131997
|
+
const { discountUi, discountContext, ticketSelectionSubtotalCents, ticketSelectionSummaryLines } = useSettledCommerceView({
|
|
131998
|
+
api,
|
|
131999
|
+
useDiscountCodeUi: deps.useDiscountCodeUi,
|
|
132000
|
+
eligibilityResult,
|
|
132001
|
+
eligibility,
|
|
131674
132002
|
currentEvent,
|
|
131675
132003
|
eventRequiresPayment,
|
|
131676
132004
|
paymentSelection,
|
|
131677
132005
|
ticketsCount
|
|
131678
|
-
]);
|
|
131679
|
-
const ticketSelectionSubtotalCents = eligibility?.price ?? null;
|
|
131680
|
-
const ticketSelectionSummaryLines = useMemo(() => eligibility?.ticketLines.map((line) => ({
|
|
131681
|
-
pricingOptionId: line.pricingOptionId,
|
|
131682
|
-
label: line.label,
|
|
131683
|
-
quantity: line.quantity,
|
|
131684
|
-
unitPriceCents: line.unitPriceCents,
|
|
131685
|
-
subtotalCents: line.subtotalCents
|
|
131686
|
-
})) ?? [], [eligibility]);
|
|
131687
|
-
const discountSubtotalCents = resolveDiscountSubtotalCents(discountContext, ticketSelectionSubtotalCents);
|
|
131688
|
-
const discountUi = deps.useDiscountCodeUi({
|
|
131689
|
-
api,
|
|
131690
|
-
discountContext,
|
|
131691
|
-
subtotalCents: discountSubtotalCents
|
|
131692
132006
|
});
|
|
131693
132007
|
const selectionMethod = paymentSelection.method;
|
|
131694
132008
|
const shouldShowDiscountToggle = discountContext !== null && discountUi.manualCodeEntryAllowed && (selectionMethod === "stripe" || selectionMethod === "pass_bundle" || selectionMethod === "membership_bundle");
|
|
@@ -131853,6 +132167,34 @@ function useEventRegistrationWizardWithDeps(options, deps) {
|
|
|
131853
132167
|
};
|
|
131854
132168
|
}
|
|
131855
132169
|
//#endregion
|
|
132170
|
+
//#region ../blocks/src/system/runtime/nodes/event-registration/useEventCheckoutHandoffRestore.ts
|
|
132171
|
+
function eventRegistrationReloadTarget(location) {
|
|
132172
|
+
return `${location.pathname}${location.search}#${EVENT_REGISTRATION_ANCHOR_ID}`;
|
|
132173
|
+
}
|
|
132174
|
+
function reloadAtEventRegistration() {
|
|
132175
|
+
const target = eventRegistrationReloadTarget(window.location);
|
|
132176
|
+
window.history.replaceState(window.history.state, "", target);
|
|
132177
|
+
window.location.reload();
|
|
132178
|
+
}
|
|
132179
|
+
const browserCheckoutHandoffRestoreDeps = {
|
|
132180
|
+
addPageShowListener: (listener) => window.addEventListener("pageshow", listener),
|
|
132181
|
+
removePageShowListener: (listener) => window.removeEventListener("pageshow", listener),
|
|
132182
|
+
reloadAtRegistration: reloadAtEventRegistration
|
|
132183
|
+
};
|
|
132184
|
+
function useEventCheckoutHandoffRestore(active) {
|
|
132185
|
+
useEventCheckoutHandoffRestoreWithDeps(active, browserCheckoutHandoffRestoreDeps);
|
|
132186
|
+
}
|
|
132187
|
+
function useEventCheckoutHandoffRestoreWithDeps(active, deps) {
|
|
132188
|
+
useEffect(() => {
|
|
132189
|
+
if (!active) return;
|
|
132190
|
+
const handlePageShow = (event) => {
|
|
132191
|
+
if (event.persisted) deps.reloadAtRegistration();
|
|
132192
|
+
};
|
|
132193
|
+
deps.addPageShowListener(handlePageShow);
|
|
132194
|
+
return () => deps.removePageShowListener(handlePageShow);
|
|
132195
|
+
}, [active, deps]);
|
|
132196
|
+
}
|
|
132197
|
+
//#endregion
|
|
131856
132198
|
//#region ../blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.ts
|
|
131857
132199
|
const initialMagicLinkSubmissionState = Object.freeze({ tag: "idle" });
|
|
131858
132200
|
function magicLinkSubmissionReducer(state, action) {
|
|
@@ -134568,6 +134910,7 @@ function EventRegistrationWizard(props) {
|
|
|
134568
134910
|
events: events ?? [],
|
|
134569
134911
|
maxTicketsNum
|
|
134570
134912
|
});
|
|
134913
|
+
useEventCheckoutHandoffRestore(wizard.step === "redirecting");
|
|
134571
134914
|
const [bookingOverlayOpen, setBookingOverlayOpen] = useState(false);
|
|
134572
134915
|
const [floatingPortalRoot, setFloatingPortalRoot] = useState(null);
|
|
134573
134916
|
useEffect(() => {
|
|
@@ -140327,6 +140670,7 @@ function useEventPagination({ siteId: _siteId, initialEvents = [], fetchInitialO
|
|
|
140327
140670
|
const eventSurface = filters?.eventSurface;
|
|
140328
140671
|
const eventPresets = normalizeCsvString(filters?.eventPresets);
|
|
140329
140672
|
const scheduleScope = filters?.scheduleScope;
|
|
140673
|
+
const seriesIds = filters?.seriesIds;
|
|
140330
140674
|
const eventsRef = useRef(events);
|
|
140331
140675
|
const loadingRef = useRef(loading);
|
|
140332
140676
|
const hasMoreRef = useRef(hasMore);
|
|
@@ -140354,6 +140698,7 @@ function useEventPagination({ siteId: _siteId, initialEvents = [], fetchInitialO
|
|
|
140354
140698
|
const currentEvents = eventsRef.current;
|
|
140355
140699
|
const lastEvent = options.reset ? void 0 : currentEvents[currentEvents.length - 1];
|
|
140356
140700
|
const newEvents = await getPublicEvents({
|
|
140701
|
+
seriesIds,
|
|
140357
140702
|
afterStartsAt: lastEvent ? lastEvent.startsAt : void 0,
|
|
140358
140703
|
afterId: lastEvent ? lastEvent.occurrenceId : void 0,
|
|
140359
140704
|
limit: pageSize,
|
|
@@ -140392,6 +140737,7 @@ function useEventPagination({ siteId: _siteId, initialEvents = [], fetchInitialO
|
|
|
140392
140737
|
eventSurface,
|
|
140393
140738
|
eventPresets,
|
|
140394
140739
|
scheduleScope,
|
|
140740
|
+
seriesIds,
|
|
140395
140741
|
normalizedCategoryIds,
|
|
140396
140742
|
normalizedStaffMemberId,
|
|
140397
140743
|
normalizedVenueId
|
|
@@ -140401,7 +140747,7 @@ function useEventPagination({ siteId: _siteId, initialEvents = [], fetchInitialO
|
|
|
140401
140747
|
}, [fetchPage]);
|
|
140402
140748
|
const initialFetchAttemptKeyRef = useRef(null);
|
|
140403
140749
|
useEffect(() => {
|
|
140404
|
-
if (!fetchInitialOnMount) return;
|
|
140750
|
+
if (!fetchInitialOnMount || seriesIds === "") return;
|
|
140405
140751
|
if (!filtersMatchInitial) return;
|
|
140406
140752
|
if (initialEventsRef.current.length > 0) return;
|
|
140407
140753
|
if (eventsRef.current.length > 0) return;
|
|
@@ -140415,7 +140761,8 @@ function useEventPagination({ siteId: _siteId, initialEvents = [], fetchInitialO
|
|
|
140415
140761
|
fetchPage,
|
|
140416
140762
|
filtersKey,
|
|
140417
140763
|
filtersMatchInitial,
|
|
140418
|
-
stage
|
|
140764
|
+
stage,
|
|
140765
|
+
seriesIds
|
|
140419
140766
|
]);
|
|
140420
140767
|
const prevFiltersMatchInitialRef = useRef(filtersMatchInitial);
|
|
140421
140768
|
const prevInitialEventsKeyRef = useRef(initialEventsKey);
|
|
@@ -140539,7 +140886,7 @@ function getEventFiltersError(state) {
|
|
|
140539
140886
|
* const events = await api.getPublicEvents(params);
|
|
140540
140887
|
* ```
|
|
140541
140888
|
*/
|
|
140542
|
-
function useEventFilters({ showCategoryFilter = "auto", showVenueFilter = false, showStaffFilter = false, preFilterCategoryIds, preFilterStaffMemberId, preFilterVenueId, preFilterEventSurface, preFilterEventPresets, preFilterScheduleScope } = {}) {
|
|
140889
|
+
function useEventFilters({ showCategoryFilter = "auto", showVenueFilter = false, showStaffFilter = false, preFilterSeriesIds, preFilterCategoryIds, preFilterStaffMemberId, preFilterVenueId, preFilterEventSurface, preFilterEventPresets, preFilterScheduleScope } = {}) {
|
|
140543
140890
|
const api = useBlockApi();
|
|
140544
140891
|
const [loadState, dispatchLoadState] = useReducer(eventFiltersLoadReducer, void 0, createInitialEventFiltersLoadState);
|
|
140545
140892
|
const filters = getEventFiltersData(loadState);
|
|
@@ -140688,6 +141035,7 @@ function useEventFilters({ showCategoryFilter = "auto", showVenueFilter = false,
|
|
|
140688
141035
|
setSelectedVenueId("all");
|
|
140689
141036
|
}, []),
|
|
140690
141037
|
getFilterParams: useCallback(() => {
|
|
141038
|
+
if (preFilterSeriesIds != null) return { seriesIds: preFilterSeriesIds };
|
|
140691
141039
|
const params = {};
|
|
140692
141040
|
if (fixedEventSurface) params.eventSurface = fixedEventSurface;
|
|
140693
141041
|
if (fixedEventPresets) params.eventPresets = fixedEventPresets;
|
|
@@ -140701,6 +141049,7 @@ function useEventFilters({ showCategoryFilter = "auto", showVenueFilter = false,
|
|
|
140701
141049
|
params.staffMemberId = fixedStaffMemberId ?? (selectedStaffMemberId !== "all" ? selectedStaffMemberId : void 0);
|
|
140702
141050
|
return params;
|
|
140703
141051
|
}, [
|
|
141052
|
+
preFilterSeriesIds,
|
|
140704
141053
|
allowedCategoryIds,
|
|
140705
141054
|
allowedCategorySet,
|
|
140706
141055
|
fixedEventPresets,
|
|
@@ -140724,25 +141073,12 @@ const EventListingController = ({ render }) => {
|
|
|
140724
141073
|
const hydration = render.hydration;
|
|
140725
141074
|
const filtersIdBase = useId();
|
|
140726
141075
|
const initialListEvents = useMemo(() => [...display.events], [display.events]);
|
|
140727
|
-
const initialListFilters =
|
|
140728
|
-
eventSurface: hydration.eventSurface,
|
|
140729
|
-
filterEventPresets: hydration.filterEventPresets,
|
|
140730
|
-
scheduleScope: hydration.scheduleScope,
|
|
140731
|
-
filterCategoryIds: hydration.filterCategoryIds,
|
|
140732
|
-
filterStaffMemberId: hydration.filterStaffMemberId,
|
|
140733
|
-
filterVenueId: hydration.filterVenueId
|
|
140734
|
-
}), [
|
|
140735
|
-
hydration.eventSurface,
|
|
140736
|
-
hydration.filterEventPresets,
|
|
140737
|
-
hydration.scheduleScope,
|
|
140738
|
-
hydration.filterCategoryIds,
|
|
140739
|
-
hydration.filterStaffMemberId,
|
|
140740
|
-
hydration.filterVenueId
|
|
140741
|
-
]);
|
|
141076
|
+
const initialListFilters = buildEventRuntimeFilters(hydration);
|
|
140742
141077
|
const { categories, venues, staffMembers, selectedCategoryId, selectedStaffMemberId, selectedVenueId, loading: filtersLoading, shouldShowCategoryFilter, shouldShowVenueFilter, shouldShowStaffFilter, hasActiveFilters, setSelectedCategoryId, setSelectedStaffMemberId, setSelectedVenueId, resetFilters, getFilterParams } = useEventFilters({
|
|
140743
141078
|
showCategoryFilter: hydration.showFilters ? hydration.showCategoryFilter : "never",
|
|
140744
141079
|
showVenueFilter: hydration.showFilters ? hydration.showVenueFilter : false,
|
|
140745
141080
|
showStaffFilter: hydration.showFilters ? hydration.showStaffFilter : false,
|
|
141081
|
+
preFilterSeriesIds: hydration.seriesIds,
|
|
140746
141082
|
preFilterCategoryIds: hydration.filterCategoryIds ?? void 0,
|
|
140747
141083
|
preFilterStaffMemberId: hydration.filterStaffMemberId ?? void 0,
|
|
140748
141084
|
preFilterVenueId: hydration.filterVenueId ?? void 0,
|
|
@@ -141577,6 +141913,7 @@ function toEventCombinedControllerProps(props) {
|
|
|
141577
141913
|
eventSurface: props.render.display.eventSurface,
|
|
141578
141914
|
filterEventPresets: props.render.display.filterEventPresets,
|
|
141579
141915
|
scheduleScope: props.render.display.scheduleScope,
|
|
141916
|
+
seriesIds: props.render.display.seriesIds,
|
|
141580
141917
|
filterCategoryIds: props.render.display.filterCategoryIds,
|
|
141581
141918
|
filterStaffMemberId: props.render.display.filterStaffMemberId,
|
|
141582
141919
|
filterVenueId: props.render.display.filterVenueId,
|
|
@@ -141698,7 +142035,7 @@ const EventCombinedCalendarTab = ({ calendarTabViews, calendarView, calendarView
|
|
|
141698
142035
|
const EventCombinedClient = ({ events: initialEvents, siteId, stage, listLayout = "stack", listColumns = "3", eventsPerPage = 12, paginationAction = {
|
|
141699
142036
|
kind: "loadMore",
|
|
141700
142037
|
label: "Load more events"
|
|
141701
|
-
}, startOfWeek = "monday", calendarTabViews = "both", defaultCalendarView, showFilters, showCategoryFilter = "auto", showVenueFilter, showStaffFilter, eventSurface, filterEventPresets, scheduleScope, filterCategoryIds, filterStaffMemberId, filterVenueId, showVenue, showMap, showCapacity, cardRole, buttonVariant = "primary", buttonText = "Book", emptyMessage = "No upcoming events scheduled.", className, calendarContext, calendarWindow }) => {
|
|
142038
|
+
}, startOfWeek = "monday", calendarTabViews = "both", defaultCalendarView, showFilters, showCategoryFilter = "auto", showVenueFilter, showStaffFilter, eventSurface, filterEventPresets, scheduleScope, seriesIds, filterCategoryIds, filterStaffMemberId, filterVenueId, showVenue, showMap, showCapacity, cardRole, buttonVariant = "primary", buttonText = "Book", emptyMessage = "No upcoming events scheduled.", className, calendarContext, calendarWindow }) => {
|
|
141702
142039
|
const hydrationReady = useHydrationReady();
|
|
141703
142040
|
const fetchInitialEventsOnMount = initialEvents == null;
|
|
141704
142041
|
const resolvedShowFilters = showFilters ?? true;
|
|
@@ -141724,6 +142061,7 @@ const EventCombinedClient = ({ events: initialEvents, siteId, stage, listLayout
|
|
|
141724
142061
|
showCategoryFilter: resolvedShowFilters ? showCategoryFilter : "never",
|
|
141725
142062
|
showVenueFilter: resolvedShowFilters ? resolvedShowVenueFilter : false,
|
|
141726
142063
|
showStaffFilter: resolvedShowFilters ? resolvedShowStaffFilter : false,
|
|
142064
|
+
preFilterSeriesIds: seriesIds,
|
|
141727
142065
|
preFilterCategoryIds: filterCategoryIds,
|
|
141728
142066
|
preFilterStaffMemberId: filterStaffMemberId,
|
|
141729
142067
|
preFilterVenueId: filterVenueId,
|
|
@@ -141731,21 +142069,15 @@ const EventCombinedClient = ({ events: initialEvents, siteId, stage, listLayout
|
|
|
141731
142069
|
preFilterEventPresets: filterEventPresets,
|
|
141732
142070
|
preFilterScheduleScope: resolvedScheduleScope
|
|
141733
142071
|
});
|
|
141734
|
-
const initialListFilters =
|
|
142072
|
+
const initialListFilters = buildEventRuntimeFilters({
|
|
141735
142073
|
eventSurface: resolvedEventSurface,
|
|
141736
142074
|
filterEventPresets,
|
|
141737
142075
|
scheduleScope: resolvedScheduleScope,
|
|
142076
|
+
seriesIds,
|
|
141738
142077
|
filterCategoryIds,
|
|
141739
142078
|
filterStaffMemberId,
|
|
141740
142079
|
filterVenueId
|
|
141741
|
-
})
|
|
141742
|
-
resolvedEventSurface,
|
|
141743
|
-
filterCategoryIds,
|
|
141744
|
-
filterEventPresets,
|
|
141745
|
-
filterStaffMemberId,
|
|
141746
|
-
filterVenueId,
|
|
141747
|
-
resolvedScheduleScope
|
|
141748
|
-
]);
|
|
142080
|
+
});
|
|
141749
142081
|
const listFilters = useMemo(() => getFilterParams(), [getFilterParams]);
|
|
141750
142082
|
const pageSize = eventsPerPage;
|
|
141751
142083
|
const { events: paginatedEvents, loading: eventsLoading, error: eventsError, hasMore, loadMore } = useEventPagination({
|
|
@@ -142022,6 +142354,7 @@ const EventCalendarClient = ({ render }) => {
|
|
|
142022
142354
|
eventSurface: display.eventSurface,
|
|
142023
142355
|
filterEventPresets: display.filterEventPresets,
|
|
142024
142356
|
scheduleScope: display.scheduleScope,
|
|
142357
|
+
seriesIds: display.seriesIds,
|
|
142025
142358
|
filterCategoryIds: display.filterCategoryIds,
|
|
142026
142359
|
filterStaffMemberId: display.filterStaffMemberId,
|
|
142027
142360
|
filterVenueId: display.filterVenueId,
|
|
@@ -142045,6 +142378,7 @@ const EventCalendarWeekBoardClient = ({ render }) => {
|
|
|
142045
142378
|
const { display, hydration } = render;
|
|
142046
142379
|
const filters = useMemo(() => buildDisplayFilterParams(display), [
|
|
142047
142380
|
display.eventSurface,
|
|
142381
|
+
display.seriesIds,
|
|
142048
142382
|
display.filterCategoryIds,
|
|
142049
142383
|
display.filterEventPresets,
|
|
142050
142384
|
display.filterStaffMemberId,
|
|
@@ -142206,6 +142540,7 @@ function useEventCalendarFilterState(display) {
|
|
|
142206
142540
|
showCategoryFilter: display.showFilters ? display.showCategoryFilter : "never",
|
|
142207
142541
|
showVenueFilter: display.showFilters ? display.showVenueFilter : false,
|
|
142208
142542
|
showStaffFilter: display.showFilters ? display.showStaffFilter : false,
|
|
142543
|
+
preFilterSeriesIds: display.seriesIds,
|
|
142209
142544
|
preFilterCategoryIds: display.filterCategoryIds,
|
|
142210
142545
|
preFilterStaffMemberId: display.filterStaffMemberId,
|
|
142211
142546
|
preFilterVenueId: display.filterVenueId,
|
|
@@ -142239,6 +142574,7 @@ function buildDisplayFilterParams(display) {
|
|
|
142239
142574
|
eventSurface: display.eventSurface,
|
|
142240
142575
|
filterEventPresets: display.filterEventPresets,
|
|
142241
142576
|
scheduleScope: display.scheduleScope,
|
|
142577
|
+
seriesIds: display.seriesIds,
|
|
142242
142578
|
filterCategoryIds: display.filterCategoryIds,
|
|
142243
142579
|
filterStaffMemberId: display.filterStaffMemberId,
|
|
142244
142580
|
filterVenueId: display.filterVenueId
|
|
@@ -142838,7 +143174,7 @@ function NewsletterFormClient({ render }) {
|
|
|
142838
143174
|
if (submitTarget.tag === "unavailable") {
|
|
142839
143175
|
dispatchSubmission({
|
|
142840
143176
|
type: "failed",
|
|
142841
|
-
error: newsletterFormError(
|
|
143177
|
+
error: newsletterFormError(SIGNUPS_PAUSED_MESSAGE)
|
|
142842
143178
|
});
|
|
142843
143179
|
return;
|
|
142844
143180
|
}
|
|
@@ -142849,14 +143185,16 @@ function NewsletterFormClient({ render }) {
|
|
|
142849
143185
|
});
|
|
142850
143186
|
return;
|
|
142851
143187
|
}
|
|
142852
|
-
const
|
|
142853
|
-
|
|
143188
|
+
const selection = readVisitorSelection(formData, render.hydration);
|
|
143189
|
+
const selectionError = visitorSelectionError(selection);
|
|
143190
|
+
if (selectionError) {
|
|
142854
143191
|
dispatchSubmission({
|
|
142855
143192
|
type: "failed",
|
|
142856
|
-
error:
|
|
143193
|
+
error: selectionError
|
|
142857
143194
|
});
|
|
142858
143195
|
return;
|
|
142859
143196
|
}
|
|
143197
|
+
const visitorSelection = selection.tag === "chosen" ? selection.value : void 0;
|
|
142860
143198
|
dispatchSubmission({ type: "submitted" });
|
|
142861
143199
|
try {
|
|
142862
143200
|
const result = await api.subscribeNewsletter({
|
|
@@ -143056,10 +143394,18 @@ function transportFailureMessage(err) {
|
|
|
143056
143394
|
}
|
|
143057
143395
|
return RETRY_SHORTLY_MESSAGE;
|
|
143058
143396
|
}
|
|
143397
|
+
function visitorSelectionError(selection) {
|
|
143398
|
+
switch (selection.tag) {
|
|
143399
|
+
case "nothing_chosen": return newsletterFieldError(TOPIC_CHOICE_FIELD_ID, "Choose at least one email topic.");
|
|
143400
|
+
case "unusable": return newsletterFormError(SIGNUPS_PAUSED_MESSAGE);
|
|
143401
|
+
case "not_offered":
|
|
143402
|
+
case "chosen": return null;
|
|
143403
|
+
}
|
|
143404
|
+
}
|
|
143059
143405
|
function readVisitorSelection(formData, hydration) {
|
|
143060
|
-
if (hydration.choicePresentation !== "visitor_choice") return
|
|
143406
|
+
if (hydration.choicePresentation !== "visitor_choice") return { tag: "not_offered" };
|
|
143061
143407
|
const ids = formData.getAll(TOPIC_CHOICE_FIELD_ID).flatMap((value) => typeof value === "string" ? [value] : []);
|
|
143062
|
-
if (ids.length === 0) return
|
|
143408
|
+
if (ids.length === 0) return { tag: "nothing_chosen" };
|
|
143063
143409
|
const raw = hydration.choiceProvider === "native" ? {
|
|
143064
143410
|
provider: "native",
|
|
143065
143411
|
topicIds: ids
|
|
@@ -143070,9 +143416,12 @@ function readVisitorSelection(formData, hydration) {
|
|
|
143070
143416
|
provider: "mailchimp",
|
|
143071
143417
|
interestIds: ids
|
|
143072
143418
|
} : null;
|
|
143073
|
-
if (raw === null) return
|
|
143419
|
+
if (raw === null) return { tag: "unusable" };
|
|
143074
143420
|
const parsed = parseMailingListVisitorSelection(raw);
|
|
143075
|
-
return parsed.ok ?
|
|
143421
|
+
return parsed.ok ? {
|
|
143422
|
+
tag: "chosen",
|
|
143423
|
+
value: parsed.value
|
|
143424
|
+
} : { tag: "unusable" };
|
|
143076
143425
|
}
|
|
143077
143426
|
function publicSignupError(outcome) {
|
|
143078
143427
|
switch (outcome.tag) {
|
|
@@ -146493,6 +146842,26 @@ const headerRuntimeTransforms = [{
|
|
|
146493
146842
|
run: resolveHeaderChromeRuntimeContract
|
|
146494
146843
|
}];
|
|
146495
146844
|
const defaultTransforms = createTransformRegistry([
|
|
146845
|
+
{
|
|
146846
|
+
id: "events.calendarSelectionParam",
|
|
146847
|
+
kind: "formatter",
|
|
146848
|
+
summary: "Resolve selected events instead of discovery filters",
|
|
146849
|
+
schema: z.object({ key: z.enum([
|
|
146850
|
+
"seriesIds",
|
|
146851
|
+
"eventSurface",
|
|
146852
|
+
"filterEventPresets",
|
|
146853
|
+
"scheduleScope",
|
|
146854
|
+
"filterCategoryIds",
|
|
146855
|
+
"filterStaffMemberId",
|
|
146856
|
+
"filterVenueId"
|
|
146857
|
+
]) }),
|
|
146858
|
+
run(value, { key }) {
|
|
146859
|
+
const content = asPartialObject(value) ?? {};
|
|
146860
|
+
const selection = resolveEventSelection(content.eventSelection, content.selectedEventSeriesIds);
|
|
146861
|
+
if (selection.kind === "selected") return key === "seriesIds" ? selection.seriesIds : void 0;
|
|
146862
|
+
return key === "seriesIds" ? void 0 : content[key];
|
|
146863
|
+
}
|
|
146864
|
+
},
|
|
146496
146865
|
{
|
|
146497
146866
|
id: "events.calendarReadEnabled",
|
|
146498
146867
|
kind: "formatter",
|
|
@@ -148242,9 +148611,56 @@ function generateNavLinkCSS(options) {
|
|
|
148242
148611
|
if (baseRules.length > 0) cssChunks.unshift(`\n${selector} {\n ${baseRules.join("\n ")}\n}\n`);
|
|
148243
148612
|
if (hoverRules.length > 0) cssChunks.push(`\n${hoverSelector} {\n ${hoverRules.join("\n ")}\n}\n`);
|
|
148244
148613
|
if (activeRules.length > 0) cssChunks.push(`\n${activeSelector} {\n ${activeRules.join("\n ")}\n}\n`);
|
|
148614
|
+
cssChunks.push(navLinkFocusVisibleCss(selector, style, theme, tokens));
|
|
148245
148615
|
cssChunks.push(generateInteractiveChildInheritanceCSS(selector));
|
|
148246
148616
|
return cssChunks.join("");
|
|
148247
148617
|
}
|
|
148618
|
+
/**
|
|
148619
|
+
* Keyboard focus indicator for nav links, in the header, the footer and header
|
|
148620
|
+
* dropdown menus — the three surfaces `generateNavLinkCSS` serves.
|
|
148621
|
+
*
|
|
148622
|
+
* Emitted unconditionally rather than as an effect, because focus visibility is
|
|
148623
|
+
* a floor rather than a style choice. Only the interaction-palette pill ever
|
|
148624
|
+
* wrote an `effects.focus` group, so every other nav — every `quiet` palette,
|
|
148625
|
+
* every footer, every dropdown — previously fell back to whatever outline the
|
|
148626
|
+
* browser drew.
|
|
148627
|
+
*
|
|
148628
|
+
* The outline takes the link's own resolved colour, so on a header that adapts
|
|
148629
|
+
* to the section it floats over it moves with the adaptation instead of
|
|
148630
|
+
* asserting a brand colour against an unknown backdrop.
|
|
148631
|
+
*
|
|
148632
|
+
* Where the style asks for `soft-glow`, the same halo goes on the outline. That
|
|
148633
|
+
* treatment exists because the theme has already conceded the resolved colour
|
|
148634
|
+
* alone is not reliable over an unpredictable backdrop — a hero photograph with
|
|
148635
|
+
* mixed luminance. Without it the text would stay legible by its halo while the
|
|
148636
|
+
* focus ring, which is the part with a contrast requirement of its own, would
|
|
148637
|
+
* not.
|
|
148638
|
+
*
|
|
148639
|
+
* A style that also paints a focus pill keeps it: this adds an outline around
|
|
148640
|
+
* that pill rather than replacing it.
|
|
148641
|
+
*/
|
|
148642
|
+
function navLinkFocusVisibleCss(selector, style, theme, tokens) {
|
|
148643
|
+
const color = tokens.getColor(style.colorToken);
|
|
148644
|
+
const halo = buildTextContrastShadow({
|
|
148645
|
+
theme,
|
|
148646
|
+
colorToken: style.colorToken,
|
|
148647
|
+
treatment: style.contrastTreatment
|
|
148648
|
+
});
|
|
148649
|
+
return `
|
|
148650
|
+
${selector}:focus-visible {
|
|
148651
|
+
outline: 2px solid ${color};
|
|
148652
|
+
outline-offset: ${focusOutlineOffset(selector)};${halo ? `\n box-shadow: ${halo};` : ""}
|
|
148653
|
+
}
|
|
148654
|
+
`;
|
|
148655
|
+
}
|
|
148656
|
+
/**
|
|
148657
|
+
* Dropdown items are full-width inside a panel with no horizontal padding, so
|
|
148658
|
+
* an outset outline would paint over and past the panel's own border. Keeping
|
|
148659
|
+
* it flush is the only way it reads as belonging to the item.
|
|
148660
|
+
*/
|
|
148661
|
+
function focusOutlineOffset(selector) {
|
|
148662
|
+
return selector.includes("nav-dropdown-link") ? "-2px" : "3px";
|
|
148663
|
+
}
|
|
148248
148664
|
function buildTextContrastShadow(input) {
|
|
148249
148665
|
if (input.treatment !== "soft-glow") return null;
|
|
148250
148666
|
return isLikelyLightColorToken(input.theme, input.colorToken) ? "0 1px 3px rgb(0 0 0 / 0.55), 0 0 18px rgb(0 0 0 / 0.38)" : "0 1px 3px rgb(255 255 255 / 0.72), 0 0 18px rgb(255 255 255 / 0.5)";
|
|
@@ -154982,7 +155398,8 @@ const appointmentServicesBlockDefinition = {
|
|
|
154982
155398
|
el("appointment-services", {
|
|
154983
155399
|
sectionHeading: { $bind: { from: "content.heading" } },
|
|
154984
155400
|
services: { $bind: { from: "data.services" } },
|
|
154985
|
-
pathname: { $bind: { from: "$root.pathname" } }
|
|
155401
|
+
pathname: { $bind: { from: "$root.pathname" } },
|
|
155402
|
+
servicePathPrefix: { $bind: { from: "$root.appointmentServicePathPrefix" } }
|
|
154986
155403
|
})
|
|
154987
155404
|
], { gap: "lg" })
|
|
154988
155405
|
})]
|
|
@@ -161649,10 +162066,19 @@ const containerResponsiveThemeCss = `/*
|
|
|
161649
162066
|
padding-top: 2.5rem;
|
|
161650
162067
|
padding-bottom: 2.5rem;
|
|
161651
162068
|
}
|
|
162069
|
+
/* Clearance for a surface that is not an authored block page.
|
|
162070
|
+
An authored page gets this through its opening block's container (see the
|
|
162071
|
+
overlay-clearance rule in styles.css). A reserved surface or a system
|
|
162072
|
+
destination page has no such block, so it consumes the same variable here.
|
|
162073
|
+
Marked with one class rather than per-surface selectors, because the last
|
|
162074
|
+
two additions to this family were both missed and shipped overlapping. */
|
|
161652
162075
|
:where(.theme-scope)
|
|
161653
162076
|
[data-site-document-layout-mode="header-overlay"]
|
|
161654
|
-
|
|
161655
|
-
padding-top: calc(
|
|
162077
|
+
.rb-overlay-clearance-surface {
|
|
162078
|
+
padding-top: calc(
|
|
162079
|
+
var(--site-overlay-header-clearance, 5.5rem) +
|
|
162080
|
+
var(--site-overlay-opening-content-extra-pad, clamp(1rem, 2vw, 1.75rem))
|
|
162081
|
+
);
|
|
161656
162082
|
}
|
|
161657
162083
|
.rb-preview-editor-offset {
|
|
161658
162084
|
padding-bottom: calc(
|
|
@@ -172009,6 +172435,23 @@ const containerResponsiveThemeCss = `/*
|
|
|
172009
172435
|
gap: 0.5rem;
|
|
172010
172436
|
}
|
|
172011
172437
|
|
|
172438
|
+
/* Error panel and field notes. The form block scopes these to its own
|
|
172439
|
+
data-block, so the newsletter form (which also renders in the footer)
|
|
172440
|
+
needs its own copy of the treatment. */
|
|
172441
|
+
:where(.theme-scope) .newsletter-form .fb-error:not([data-field-validation-message]) {
|
|
172442
|
+
background-color: var(--fb-error-bg);
|
|
172443
|
+
color: var(--fb-error-text);
|
|
172444
|
+
border: 1px solid var(--fb-error-border);
|
|
172445
|
+
border-radius: var(--rb-block-radius);
|
|
172446
|
+
padding: 1rem;
|
|
172447
|
+
font-size: 0.875rem;
|
|
172448
|
+
}
|
|
172449
|
+
|
|
172450
|
+
:where(.theme-scope) .newsletter-form [data-field-validation-message] {
|
|
172451
|
+
font-size: 0.875rem;
|
|
172452
|
+
color: var(--fb-error-text);
|
|
172453
|
+
}
|
|
172454
|
+
|
|
172012
172455
|
/* Required indicator */
|
|
172013
172456
|
:where(.theme-scope) .newsletter-required {
|
|
172014
172457
|
color: rgb(var(--tb-primary));
|
|
@@ -186224,6 +186667,30 @@ function buildGoLiveDecision(requirements) {
|
|
|
186224
186667
|
function findLaunchOverride(overrides, requirementId) {
|
|
186225
186668
|
return overrides.find((override) => override.requirementId === requirementId) ?? null;
|
|
186226
186669
|
}
|
|
186670
|
+
function deriveLaunchDomainRequirement(siteId, domainState) {
|
|
186671
|
+
const [title, description] = {
|
|
186672
|
+
connected: ["Domain connected", "A domain is already connected."],
|
|
186673
|
+
pending_setup: ["Connect a domain", "You can connect a domain later when you are ready to launch."],
|
|
186674
|
+
pending_verification: ["Domain added — connection pending", "Your domain has been added. Open Domains to check its connection and any remaining DNS steps."],
|
|
186675
|
+
partially_connected: ["Partially connected", "One or both addresses still need attention. Open Domains to see the DNS and secure connection checks."],
|
|
186676
|
+
check_unavailable: ["Domain connection check unavailable", "We couldn’t check your domain connection. Open Domains to check again."]
|
|
186677
|
+
}[domainState.kind];
|
|
186678
|
+
const state = domainState.kind === "connected" ? "complete" : "pending";
|
|
186679
|
+
return requirement({
|
|
186680
|
+
id: "connect_custom_domain",
|
|
186681
|
+
packId: "domain",
|
|
186682
|
+
priority: "optional",
|
|
186683
|
+
owner: "admin",
|
|
186684
|
+
state,
|
|
186685
|
+
title,
|
|
186686
|
+
description,
|
|
186687
|
+
action: domainState.kind === "pending_setup" ? openDashboardPathAction(siteId, "/settings/domains?setup=domain", "Set up domain") : openDashboardPathAction(siteId, "/settings/domains", domainState.kind === "connected" ? "Manage domains" : "Check domain connection"),
|
|
186688
|
+
evidence: domainState.kind !== "pending_setup" && domainState.domainIds.length > 0 ? {
|
|
186689
|
+
kind: "domain_connection",
|
|
186690
|
+
domainIds: domainState.domainIds
|
|
186691
|
+
} : evidenceFromDerivedState(state)
|
|
186692
|
+
});
|
|
186693
|
+
}
|
|
186227
186694
|
function deriveLaunchReadiness(input) {
|
|
186228
186695
|
const siteId = input.siteId ?? null;
|
|
186229
186696
|
const overrides = input.overrides ?? [];
|
|
@@ -186327,17 +186794,7 @@ function deriveLaunchReadiness(input) {
|
|
|
186327
186794
|
action: openDashboardPathAction(siteId, "/money/settings", "Connect payments"),
|
|
186328
186795
|
evidence: evidenceFromDerivedState(input.payments.kind === "ready" ? "complete" : "pending")
|
|
186329
186796
|
}));
|
|
186330
|
-
requirements.push(
|
|
186331
|
-
id: "connect_custom_domain",
|
|
186332
|
-
packId: "domain",
|
|
186333
|
-
priority: "optional",
|
|
186334
|
-
state: input.customDomain.kind === "connected" ? "complete" : "pending",
|
|
186335
|
-
owner: "admin",
|
|
186336
|
-
title: "Connect a domain",
|
|
186337
|
-
description: input.customDomain.kind === "connected" ? "A domain is already connected." : "You can connect a domain later when you are ready to launch.",
|
|
186338
|
-
action: openDashboardPathAction(siteId, "/settings/domains?setup=domain", "Set up domain"),
|
|
186339
|
-
evidence: evidenceFromDerivedState(input.customDomain.kind === "connected" ? "complete" : "pending")
|
|
186340
|
-
}));
|
|
186797
|
+
requirements.push(deriveLaunchDomainRequirement(siteId, input.customDomain));
|
|
186341
186798
|
const goLiveDecision = buildGoLiveDecision(requirements);
|
|
186342
186799
|
return {
|
|
186343
186800
|
requirements,
|
|
@@ -198324,8 +198781,10 @@ function useBlockFormFocus({ enabled, focusSignal, formRootRef, onFocusHandled }
|
|
|
198324
198781
|
block: "center"
|
|
198325
198782
|
});
|
|
198326
198783
|
} catch {}
|
|
198327
|
-
|
|
198328
|
-
|
|
198784
|
+
if (path) {
|
|
198785
|
+
target.setAttribute("data-editor-field-highlight", "true");
|
|
198786
|
+
window.setTimeout(() => target.removeAttribute("data-editor-field-highlight"), 1500);
|
|
198787
|
+
}
|
|
198329
198788
|
onFocusHandled?.(focusSignal.requestId);
|
|
198330
198789
|
}, 0);
|
|
198331
198790
|
return () => window.clearTimeout(timer);
|
|
@@ -199829,7 +200288,7 @@ function menuActionLabel(action) {
|
|
|
199829
200288
|
function BlockCard({ interactionReady, siteId, block, manifest, isFirst, isLast, isMoving, onMove, onDuplicate, onDelete, dragListeners, canReorder, collapsed, onCollapsedChange, highlighted, hasRecoveryConflict, focusSignal, onFocusHandled, onBlockSave, theme, widgetOverrides, uiStore, hideThemeV2RawStyleFields = false, pageDesignBlock = null, reorderControlMode = DEFAULT_REORDER_CONTROL_MODE, actionPresentation = DEFAULT_BLOCK_ACTION_PRESENTATION, currentStyleGuideVersionId, iconStyleGuideSummary, iconStyleGuideEditHref, onGenerateIconSet }) {
|
|
199830
200289
|
const contentId = block.id ? `builder-block-content-${block.id}` : void 0;
|
|
199831
200290
|
return /* @__PURE__ */ jsx(Card, {
|
|
199832
|
-
className:
|
|
200291
|
+
className: "builder-editor-block-card w-full p-0 transition-colors",
|
|
199833
200292
|
"data-block-id": block.id ?? void 0,
|
|
199834
200293
|
"data-editor-block-highlight": highlighted ? "true" : void 0,
|
|
199835
200294
|
children: /* @__PURE__ */ jsxs(Collapsible, {
|
|
@@ -224661,7 +225120,7 @@ function SiteOptionPickerField({ path, backend, config }) {
|
|
|
224661
225120
|
label: config.label,
|
|
224662
225121
|
description: config.description,
|
|
224663
225122
|
error: error?.message,
|
|
224664
|
-
hint: helperText
|
|
225123
|
+
hint: helperText,
|
|
224665
225124
|
children: () => /* @__PURE__ */ jsxs("div", {
|
|
224666
225125
|
className: "space-y-2",
|
|
224667
225126
|
children: [/* @__PURE__ */ jsx(CommandMultiSelect, {
|
|
@@ -224725,6 +225184,12 @@ function SiteOptionPickerField({ path, backend, config }) {
|
|
|
224725
225184
|
//#endregion
|
|
224726
225185
|
//#region ../editor-blocks/src/widgets/site-option-picker/loaders.ts
|
|
224727
225186
|
const siteOptionWidgetLabels = {
|
|
225187
|
+
eventSeries: {
|
|
225188
|
+
loading: "Loading events...",
|
|
225189
|
+
select: "Choose events",
|
|
225190
|
+
empty: "No events available. Create an event in Bookings first.",
|
|
225191
|
+
emptySelection: "Choose at least one event to show in this block."
|
|
225192
|
+
},
|
|
224728
225193
|
eventCategories: {
|
|
224729
225194
|
loading: "Loading categories...",
|
|
224730
225195
|
select: "Select categories",
|
|
@@ -224751,6 +225216,17 @@ function mapEventCategoriesToSiteOptionItems(payload) {
|
|
|
224751
225216
|
subtitle: category.identifier
|
|
224752
225217
|
}));
|
|
224753
225218
|
}
|
|
225219
|
+
function mapEventsToSiteOptionItems(events) {
|
|
225220
|
+
return events.flatMap((event) => event.schedules.kind === "ordinary" ? [{
|
|
225221
|
+
value: event.schedules.schedule.id,
|
|
225222
|
+
label: event.title,
|
|
225223
|
+
subtitle: event.slug
|
|
225224
|
+
}] : event.schedules.runs.filter((run) => (run.status === void 0 || run.status === "active") && (run.visibility === void 0 || run.visibility === "public")).map((run) => ({
|
|
225225
|
+
value: run.id,
|
|
225226
|
+
label: `${event.title} — ${run.title}`,
|
|
225227
|
+
subtitle: run.slug
|
|
225228
|
+
})));
|
|
225229
|
+
}
|
|
224754
225230
|
function mapVenuesToSiteOptionItems(payload) {
|
|
224755
225231
|
return payload.map((venue) => ({
|
|
224756
225232
|
value: venue.id,
|
|
@@ -224766,6 +225242,14 @@ function mapStaffMembersToSiteOptionItems(payload) {
|
|
|
224766
225242
|
}
|
|
224767
225243
|
async function loadSiteOptionItemsFromApi({ apiClient, siteId, source }) {
|
|
224768
225244
|
switch (source) {
|
|
225245
|
+
case "eventSeries": return mapEventsToSiteOptionItems(unwrapResponse(await apiClient({
|
|
225246
|
+
endpoint: "listEvents",
|
|
225247
|
+
params: {
|
|
225248
|
+
siteId,
|
|
225249
|
+
status: "active",
|
|
225250
|
+
visibility: "public"
|
|
225251
|
+
}
|
|
225252
|
+
})));
|
|
224769
225253
|
case "eventCategories": return mapEventCategoriesToSiteOptionItems(unwrapResponse(await apiClient({
|
|
224770
225254
|
endpoint: "listEventCategories",
|
|
224771
225255
|
params: { siteId }
|
|
@@ -224789,6 +225273,7 @@ function createSiteOptionApiLoader(apiClient) {
|
|
|
224789
225273
|
}
|
|
224790
225274
|
function createSiteOptionWidgetAdapters({ loadItems, mapLoadError, renderManageLink }) {
|
|
224791
225275
|
return {
|
|
225276
|
+
eventSeries: createSiteOptionWidgetAdapter("eventSeries", loadItems, mapLoadError, renderManageLink),
|
|
224792
225277
|
eventCategories: createSiteOptionWidgetAdapter("eventCategories", loadItems, mapLoadError, renderManageLink),
|
|
224793
225278
|
venues: createSiteOptionWidgetAdapter("venues", loadItems, mapLoadError, renderManageLink),
|
|
224794
225279
|
staffMembers: createSiteOptionWidgetAdapter("staffMembers", loadItems, mapLoadError, renderManageLink)
|
|
@@ -231307,4 +231792,4 @@ function useSiteChromeCustomizeOptional() {
|
|
|
231307
231792
|
return useContext(SiteChromeCustomizeContext);
|
|
231308
231793
|
}
|
|
231309
231794
|
//#endregion
|
|
231310
|
-
export { FooterComposerPanel as $,
|
|
231795
|
+
export { FooterComposerPanel as $, PenLine as $a, mapOptionValueForSelect as $i, coerceLinkedContentEntriesPayload as $n, runTransforms as $r, useMultiAutosave as $t, markApplySaving as A, CollapsibleTrigger as Aa, buttonStyleHoverPreferenceValue as Ai, containerResponsiveThemeCss as An, compileTransitionRuntime as Ar, RichTextField as At, setPaletteColors as B, cva as Ba, parseThemeForPersistence as Bi, compileManifestContentContract as Bn, curatedPalettes as Br, getBlockManifestFromSdkConfig as Bt, cancelPreview as C, DialogContent as Ca, isRecord$17 as Ci, deriveLaunchReadiness as Cn, retargetCompiledRuntimeFieldsForContentAdjacency as Cr, ButtonVariantField as Ct, isPreviewingChange as D, DialogTitle as Da, asDesignBlockId as Di, useApiMediaUploader as Dn, curatedSiteStyles as Dr, ReferenceField as Dt, dismissWarnings as E, DialogHeader as Ea, pageDesignEditorBackgroundOverrideOwner as Ei, useMediaEditorOptional as En, componentRuntimeRulesForTheme as Er, MediaField as Et, previewFooterLook as F, DropdownMenuLabel as Fa, updateButtonStyleSelectionChoice as Fi, SITE_CHROME_VISIBLE_HEADER_SELECTOR as Fn, gradientToCss as Fr, LinkWidgetProvider as Ft, confirmAutosaveBatch as G, TriangleAlert as Ga, paletteModeSchema as Gi, escapeStyleContent as Gn, backgroundAppearanceColorTokenNames as Gr, canRedoHistory as Gt, syncStyleConfiguratorState as H, X as Ha, VARIANT_ROLES as Hi, buildThemeRuntime as Hn, sectionTransitionFamilies as Hr, useEditorUiStore as Ht, previewHeaderLayout as I, DropdownMenuSeparator as Ia, buttonStyleSelectionKey as Ii, SITE_OVERLAY_HEADER_CLEARANCE_CSS_VAR as In, GRADIENT_PRESETS as Ir, BlockEditor as It, idleEditorTransactionQueueState as J, Smartphone as Ja, isHeaderField as Ji, defaultTransforms as Jn, ctaButton as Jr, pushHistoryEntry as Jt, deriveTransactionCapabilities as K, Tablet as Ka, attachRenderableMediaAssetFields as Ki, readBlockComposition as Kn, backgroundAppearanceQuickColorTokenNames as Kr, canUndoHistory as Kt, previewHeaderStyle as L, DropdownMenuTrigger as La, textColorStyle as Li, planSiteOverlayHeaderClearance as Ln, GRADIENT_PRESET_IDS as Lr, hideThemeV2RawStyleFields as Lt, palettePreviewProjection as M, DropdownMenu as Ma, findButtonStyleRecipe as Mi, makeDefaultBlockComponent as Mn, findFooterLook as Mr, EditorProvider as Mt, previewButtonStyle as N, DropdownMenuContent as Na, resolveButtonStyleSelection as Ni, getBlockDefinition as Nn, getHeaderLayout as Nr, useEditor$1 as Nt, markApplyFailed as O, Collapsible as Oa, assertNever$7 as Oi, isSupportedLoaderEndpoint as On, designRuntimeRulesForTheme as Or, ReferenceWidgetProvider as Ot, previewCuratedPalette as P, DropdownMenuItem as Pa, updateButtonStyleHoverPreference as Pi, projectRecurringSchedule as Pn, getHeaderStyle as Pr, LinkField as Pt, resolvePreviewSidebarTab as Q, Pencil as Qa, mapCurrentValueForSelect as Qi, LINKED_CONTENT_ENTRY_META_KEY as Qn, parseBackgroundContent as Qr, recordsEqual as Qt, previewSiteStyle as R, Primitive as Ra, defaultThemeTokens as Ri, visibleHeaderClearancePx as Rn, getGradientPreset as Rr, prepareBlockEditorManifest as Rt, applyTypographyDraftPatch as S, Dialog as Sa, isObjectRecord$1 as Si, DEFAULT_LAUNCH_READINESS_INPUT as Sn, retargetCompiledBoundaryRuntimeForContentAdjacency as Sr, EntryPickerWidgetProvider as St, deriveStyleConfiguratorCapabilities as T, DialogFooter as Ta, isThemeV2NormalEditorRawStyleFieldName as Ti, MediaEditorContextProvider as Tn, planPageDesignLayoutLookCompatibility as Tr, FileField as Tt, toggleRow as U, Upload as Ua, paletteColorEntries as Ui, DEFAULT_THEME_RESPONSIVE_MODE as Un, sectionTransitionFamilyForBoundaryOptionId as Ur, useEditorUiStoreInstance as Ut, styleConfiguratorHistoryEntryForPersistedSelection as V, cn$2 as Va, ORDINARY_TEXT_MIN_CONTRAST_RATIO as Vi, validateManifestDraft as Vn, defaultSectionTransitionVariantForFamily as Vr, classifyHistoryShortcut as Vt, beginAutosaveBatch as W, Undo2 as Wa, paletteColorsSchema as Wi, getResponsiveScopeSpec as Wn, sectionTransitionVariantForBoundaryOptionId as Wr, useOptionalEditorUiStoreInstance as Wt, resolveStyleConfiguratorInitialSnapshot as X, RotateCcw as Xa, useSdkConfig as Xi, resolvePageRouteTarget as Xn, EDITABLE_SURFACE_FORWARDING_PROP as Xr, undoHistory as Xt, rejectAutosaveBatch as Y, SlidersHorizontal as Ya, SdkConfigProvider as Yi, resolveEntryRouteTarget as Yn, bindingSchema as Yr, redoHistory as Yt, createOptimisticActionRunner as Z, Redo2 as Za, hasEmptyOption as Zi, resolveRouteTarget as Zn, planSiteChromePlacement as Zr, unsafeAsLinkedContentEntryId as Zt, reportPreviewDesignError as _, Input as _a, BlockApiProvider as _i, MediaEditor as _n, parseMediaAssetId as _o, heroCopyFragment as _r, loadMailingListAuthoringContext as _t, previewDesignHistoryDomainForCommand as a, TooltipTrigger as aa, coerceInlineTextWithFallback as ai, parseReferenceKind as an, GripVertical as ao, cardFragment as ar, useUISelector as at, planSiteChromeSelection as b, TabsList as ba, eventCalendarListLayoutOptions as bi, listEntryPageContentSlots as bn, applyCompiledRuntimeFieldsToContent as br, IconPickerField as bt, selectionSnapshotFromApplySiteStyleSelectionResponse as c, SelectItem as ca, Text$2 as ci, resolveContentTitle as cn, ChevronRight as co, blogFeaturedPostFragment as cr, useEntryController as ct, PreviewDesignCoordinatorProvider as d, Callout as da, getCurrentResolveImageUrlContext as di, ManifestForm as dn, Check as do, formCopyFragment as dr, createSiteOptionWidgetAdapters as dt, unmapValueFromSelect as ea, parseBlockIconValue as ei, useDebouncedLatestSave as en, Palette as eo, getLinkedContentEntryMeta as er, renderSiteChromeBlock as et, usePreviewDesignCoordinator as f, CalloutDescription as fa, resolveImageUrlWithContext as fi, createManifestFormAdapter as fn, parseFooterModuleId as fo, testimonialsCarouselFragment as fr, SiteOptionPickerField as ft, PREVIEW_DESIGN_SAVE_ERROR_MESSAGE as g, PopoverTrigger as ga, siblingPath$1 as gi, createStoreBackend as gn, expectParsedBrandedId as go, ctaRowFragment as gr, MailingListTargetingField as gt, PREVIEW_DESIGN_LOAD_ERROR_MESSAGE as h, PopoverContent as ha, getAtPath as hi, evaluateVisibility as hn, assertNever$10 as ho, heroCtaRowFragment as hr, OfferingsPreviewWidgetProvider as ht, usePreviewDesignHistoryOrder as i, TooltipContent as ia, logger$1 as ii, isAdapterReferenceKind as in, Image as io, headingFragment as ir, ContentFieldsForm as it, openRow as j, Surface as ja, buttonStyleSelectionParameterValue as ji, createCustomBlockRegistry as jn, surfaceResolutionContextFromTheme as jr, RichTextWidgetProvider as jt, markApplySaved as k, CollapsibleContent as ka, makeBoundaryId as ki, ThemeScope as kn, getCuratedSiteStyle as kr, useRichTextImagePicker as kt, deriveSiteStylePreviewUpdate as l, SelectTrigger as la, RichText as li, PaletteProvider as ln, ChevronLeft as lo, singleButtonFragment as lr, useEntryEditorController as lt, usePreviewThemeOverlay as m, Popover as ma, SECTION_BACKGROUND_MIN_SOURCE_WIDTH as mi, FormRenderer as mn, unsafeAsEditorBlockValues as mo, ctaCopyFragment as mr, OfferingsPreviewGroupOrderField as mt, useSiteChromeCustomizeOptional as n, useField as na, parseGeneratedIconSetId as ni, createSnapshotFromPageRecord as nn, Maximize2 as no, ImageResolveContextProvider as nr, PreviewInlineTextEditor as nt, selectPreviewDesignHistoryDomain as o, Select$1 as oa, inlineTextToPlainText as oi, deriveRouteMetadataPresentation as on, Eye as oo, faqAccordionFragment as or, EditableBlockProvider as ot, PreviewThemeOverlayProvider as p, SearchInput as pa, setContextResolveImageUrlContext as pi, createManifestValidation as pn, unsafeAsEditorBlockId as po, testimonialsHeadingFragment as pr, SiteOptionWidgetProvider as pt, enqueueTransaction as q, Sparkles as qa, getFieldIntent as qi, getDefaultComponentRegistry as qn, parseBackgroundAppearanceColorToken as qr, createHistoryState as qt, PreviewDesignHistoryOrderProvider as r, Tooltip as ra, renderInlineText as ri, BUILT_IN_REFERENCE_KINDS as rn, LoaderCircle as ro, richTextFragment as rr, PreviewTextEditor as rt, buildApplySiteStyleSelectionBody as s, SelectContent as sa, isInlineTextEmpty as si, resolvePageRouteSlug as sn, EllipsisVertical as so, faqHeadingFragment as sr, EntryControllerProvider as st, SiteChromeCustomizeProvider as t, FieldFrame as ta, parseGeneratedIconAssetId as ti, createRoutingHelpers as tn, Monitor as to, clientComponentRegistry as tr, PreviewRichTextEditor as tt, planConfiguratorPreview as u, SelectValue as ua, buildResolveImageUrlContext as ui, usePalette as un, ChevronDown as uo, formEmbedFragment as ur, createSiteOptionApiLoader as ut, buildSiteChromeSelectionModels as v, Tabs as va, calendarWindowQuerySchema as vi, applyPageDesignEditorAction as vn, parseSiteId as vo, bodyCopyFragment as vr, MailingListTargetingProvider as vt, createStyleConfiguratorState as w, DialogDescription as wa, corners as wi, AMBIENT_BACKGROUND_ROLES as wn, formatSiteChromeBackgroundTokenLabel as wr, ButtonWidgetProvider as wt, applyResolvedSelections as x, TabsTrigger as xa, bookingConsentCarrierSchema as xi, decodePublicProductCategorySelectorQuery as xn, compileEditorModelRuntime as xr, EntryPickerField as xt, cycleSiteChromeSelectionId as y, TabsContent as ya, eventCalendarListLayoutCompatibleDisplayModeValues as yi, getPageDesignEditorState as yn, __exportAll as yo, defineFragment as yr, InlineTextField as yt, resetTypographyToSaved as z, Button$1 as za, themeButtonClassName as zi, resolveVariantKey as zn, parseGradientPresetId as zr, stripTopLevelRoutingUi as zt };
|