@riverbankcms/sdk 0.140.0 → 0.142.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-Dk6Dt11f.mjs} +24 -15
- package/dist/{PreviewEditorUI-Agkw4v5i.mjs → PreviewEditorUI-D6EQTsCA.mjs} +3 -3
- package/dist/{PreviewQueryProvider-CN0ewic5.mjs → PreviewQueryProvider-CC-EPkyQ.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-DdbeAdS8.mjs → SdkPreviewModeRuntime-DH1n4ytY.mjs} +85 -54
- package/dist/{SiteChromeCustomizeContext-CqGOz-Kv.mjs → SiteChromeCustomizeContext-DunIzY0K.mjs} +797 -216
- package/dist/_dts/api/src/billing.d.ts +6 -1
- package/dist/_dts/api/src/bookingConfig.d.ts +1 -1
- package/dist/_dts/api/src/commercePortalEndpoints.d.ts +2 -2
- 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/endpoints.d.ts +0 -27
- package/dist/_dts/api/src/footerCompositionContracts.d.ts +25 -0
- package/dist/_dts/api/src/index.d.ts +2 -2
- 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/publicBookingService.d.ts +1 -0
- package/dist/_dts/api/src/sdkConfig/layout.d.ts +13 -0
- package/dist/_dts/api/src/sdkContracts.d.ts +3 -8
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -26
- package/dist/_dts/api/src/siteOnboarding.d.ts +7 -0
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -31
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +6 -1
- package/dist/_dts/billing/src/site-arrangements.d.ts +18 -5
- 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/events/shared/schemas.d.ts +56 -0
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +8 -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 +63 -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/commerce/src/purchase/stripeCommissionMetadata.d.ts +1 -2
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +3102 -3122
- package/dist/_dts/editor-blocks/src/block-editor/ColourFieldOptionsProvider.d.ts +7 -0
- package/dist/_dts/editor-blocks/src/block-editor/colourFieldVisibility.d.ts +7 -0
- package/dist/_dts/editor-blocks/src/block-editor/preparedManifest.d.ts +2 -0
- package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
- package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +27 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -2
- package/dist/_dts/preview-next/src/client/preview/PreviewFooterEditorPanel.d.ts +3 -6
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +2 -2
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +2 -2
- package/dist/_dts/preview-next/src/client/preview/footerInspection.d.ts +16 -0
- package/dist/_dts/preview-next/src/client/preview/sdkConfig.d.ts +6 -0
- package/dist/_dts/sdk/src/config/types.d.ts +2 -18
- package/dist/_dts/sdk/src/config/validation.d.ts +6 -0
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +4 -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/footer/mode.d.ts +10 -1
- 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/_dts/theme-core/src/schema.d.ts +1 -7
- package/dist/_dts/theme-core/src/site-styles/effectivePageDesign.d.ts +32 -0
- package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
- package/dist/client/{BookingConsentAgreement-CuKa82V4.mjs → BookingConsentAgreement-CnJeq3_r.mjs} +2 -2
- package/dist/client/{DiscountCodeDisclosure-BbYieKWB.mjs → DiscountCodeDisclosure-BINEO6J9.mjs} +1 -1
- package/dist/client/{EventCombined.client-LTfR1Aby.mjs → EventCombined.client-srxNQ6sZ.mjs} +11 -15
- package/dist/client/{EventListing.client-DUHpYSuo.mjs → EventListing.client-DbyVyGkX.mjs} +4 -17
- package/dist/client/{LeafletStaticMap-CHRupL6m.mjs → LeafletStaticMap-B-wpijzL.mjs} +1 -1
- package/dist/client/{accordion-6HiIFxNL.mjs → accordion-B-iUXU7n.mjs} +1 -1
- package/dist/client/{bookingForm-Dlmid43H.mjs → bookingForm-BXYPke5q.mjs} +5 -5
- package/dist/client/bookings.mjs +194 -102
- package/dist/client/{carousel-DmkZRRq_.mjs → carousel-Cr4aj63H.mjs} +1 -1
- package/dist/client/{cart-CIC24330.mjs → cart-DibP9WWa.mjs} +3 -3
- package/dist/client/{checkout-D1Zw9imo.mjs → checkout-CrSBVnL8.mjs} +3 -3
- package/dist/client/client.mjs +643 -192
- package/dist/client/{context-Cy1OayHx.mjs → context-Ces-AgdR.mjs} +1 -1
- package/dist/client/{dates-aDcfoLHr.mjs → dates-BXyNeNhB.mjs} +2 -2
- package/dist/client/{eventCalendar-FQxMPAjf.mjs → eventCalendar-HwpPeqrH.mjs} +11 -7
- package/dist/client/{eventCombined-Dr3ac6Hb.mjs → eventCombined-BpFUkuEI.mjs} +3 -3
- package/dist/client/{eventDetails-D-AzUHFQ.mjs → eventDetails-DK_agiWy.mjs} +4 -4
- package/dist/client/{eventListing-B3XxBf3i.mjs → eventListing-DhzHqP1c.mjs} +3 -3
- package/dist/client/{eventRegistration-I6EaokFD.mjs → eventRegistration-BdQ_Dn2d.mjs} +124 -32
- package/dist/client/{form-BbWckVWY.mjs → form-B1frcuzy.mjs} +2 -2
- package/dist/client/{headerSection-C9qU4Y7x.mjs → headerSection-CT5z460s.mjs} +2 -2
- package/dist/client/hooks.mjs +274 -45
- package/dist/client/{locationMap-CLCShvlG.mjs → locationMap-CIQXB9i2.mjs} +2 -2
- package/dist/client/{newsletterForm-Briukxzi.mjs → newsletterForm-BYNYZSes.mjs} +23 -10
- package/dist/client/{pricing-Copadu-2.mjs → pricing-CbTlAsmt.mjs} +1 -1
- package/dist/client/{productDetail-oujlRd-r.mjs → productDetail-CR7Z3yjS.mjs} +3 -3
- package/dist/client/{productList-BRiIRUcd.mjs → productList-DXj00vzR.mjs} +3 -3
- package/dist/client/{propsDecoder-CB2KS_ko.mjs → propsDecoder-DiLiBdek.mjs} +57 -16
- package/dist/client/rendering/client.mjs +476 -132
- package/dist/client/rendering/islands.mjs +17 -17
- package/dist/client/rendering.mjs +686 -195
- package/dist/client/{scrollToBlock-B1IS1_ua.mjs → scrollToBlock-CrcbBf0h.mjs} +28 -11
- package/dist/client/{shop-Vn6yNFED.mjs → shop-DgqiB_1b.mjs} +6 -6
- package/dist/client/{shop-commerce-BVTqipYp.mjs → shop-commerce-D_J781in.mjs} +5 -5
- package/dist/client/{shop-commerce-store-BVnJVy7v.mjs → shop-commerce-store-PGUbDwqe.mjs} +1 -1
- package/dist/client/{shopShared-COIeK77T.mjs → shopShared-C_Bb2zwG.mjs} +3 -3
- package/dist/client/{useEventFilters-DzIUcS9n.mjs → useEventFilters-CM17Xpr1.mjs} +17 -11
- package/dist/preview-next/before-render.mjs +0 -37
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/editor-chrome.css +4 -8
- package/dist/preview-next/keepAlive.mjs +0 -37
- package/dist/preview-next/middleware.mjs +0 -37
- package/dist/{previewAuthStore-Gjb6r6vz.mjs → previewAuthStore-oVttoRDO.mjs} +0 -37
- package/dist/{sdk-runtime-CnCLvZRv.mjs → sdk-runtime-DhmuRhIX.mjs} +2 -2
- package/dist/{separator-DKDRJ1oH.mjs → separator-C3hlg9LH.mjs} +1 -1
- package/dist/server/components.mjs +452 -111
- package/dist/server/config-validation.mjs +263 -40
- package/dist/server/config.mjs +263 -40
- package/dist/server/data.mjs +274 -45
- package/dist/server/index.mjs +1 -38
- package/dist/server/next.mjs +427 -119
- package/dist/server/page-converter.mjs +208 -33
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +467 -119
- package/dist/server/rendering.mjs +467 -117
- package/dist/server/routing.mjs +301 -50
- package/dist/server/server.mjs +275 -83
- package/dist/server/theme-bridge.mjs +57 -23
- package/dist/server/theme.mjs +11 -9
- package/dist/styles/index.css +28 -2
- package/package.json +1 -1
package/dist/{SiteChromeCustomizeContext-CqGOz-Kv.mjs → SiteChromeCustomizeContext-DunIzY0K.mjs}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { d as unwrapResponse, l as ApiEnvelopeError, s as ApiRequestError, u as extractApiEnvelopeErrorDetails } from "./previewAuthStore-
|
|
2
|
+
import { d as unwrapResponse, l as ApiEnvelopeError, s as ApiRequestError, u as extractApiEnvelopeErrorDetails } from "./previewAuthStore-oVttoRDO.mjs";
|
|
3
3
|
import * as React$1 from "react";
|
|
4
4
|
import React, { Component, Fragment, cloneElement, createContext, createElement, createRef, forwardRef, isValidElement, memo, startTransition, useCallback, useContext, useDebugValue, useEffect, useId, useImperativeHandle, useLayoutEffect, useMemo, useReducer, useRef, useState, useSyncExternalStore } from "react";
|
|
5
5
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -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";
|
|
@@ -79161,6 +79172,19 @@ function mediaIdentifierOrFallback(current, fallback) {
|
|
|
79161
79172
|
return fallback ?? (typeof current === "string" ? current : void 0);
|
|
79162
79173
|
}
|
|
79163
79174
|
//#endregion
|
|
79175
|
+
//#region ../theme-core/src/footer/mode.ts
|
|
79176
|
+
const footerModeSchema = z.enum([
|
|
79177
|
+
"default",
|
|
79178
|
+
"blocks",
|
|
79179
|
+
"default+blocks",
|
|
79180
|
+
"none"
|
|
79181
|
+
]);
|
|
79182
|
+
/** Reads only SDK footer intent; unrelated config and theme fields are not authorities. */
|
|
79183
|
+
function resolveSdkFooterMode(config) {
|
|
79184
|
+
const parsed = z.object({ layout: z.object({ footerMode: footerModeSchema.optional() }).optional() }).safeParse(config);
|
|
79185
|
+
return parsed.success ? parsed.data.layout?.footerMode ?? "default" : "default";
|
|
79186
|
+
}
|
|
79187
|
+
//#endregion
|
|
79164
79188
|
//#region ../theme-core/src/lib/media.ts
|
|
79165
79189
|
const hotspotSchema = z.object({
|
|
79166
79190
|
x: z.number().min(0).max(1),
|
|
@@ -80669,7 +80693,7 @@ const BUTTON_CONTRAST_POLICY = {
|
|
|
80669
80693
|
nonTextMinimumRatio: 3,
|
|
80670
80694
|
gradientSamplesPerSegment: 20,
|
|
80671
80695
|
alphaBackgrounds: "reject-without-known-surface",
|
|
80672
|
-
disabled: "
|
|
80696
|
+
disabled: "validated-colour-pair-with-muted-control-opacity"
|
|
80673
80697
|
};
|
|
80674
80698
|
function formatButtonColourContractError(error) {
|
|
80675
80699
|
switch (error.tag) {
|
|
@@ -81257,6 +81281,25 @@ function parseThemeForPersistence(value) {
|
|
|
81257
81281
|
};
|
|
81258
81282
|
}
|
|
81259
81283
|
//#endregion
|
|
81284
|
+
//#region ../theme-core/src/buttons/affordanceSuppression.ts
|
|
81285
|
+
/**
|
|
81286
|
+
* Internal: the opt-out the generated affordance rule is written against.
|
|
81287
|
+
*
|
|
81288
|
+
* A button style may declare a trailing `affordance`, which the theme renders as
|
|
81289
|
+
* a CSS `::after` on every button of that variant. An authored button that
|
|
81290
|
+
* renders its own trailing icon must not also receive the theme's, or it shows
|
|
81291
|
+
* two.
|
|
81292
|
+
*
|
|
81293
|
+
* Deliberately not exported from `./index`. This used to be public, and two
|
|
81294
|
+
* block components reached past the theme to draw arrows of their own — one of
|
|
81295
|
+
* them doubling up on the styles that declare an affordance, both of them
|
|
81296
|
+
* overriding the twelve styles that deliberately declare none. Whether a button
|
|
81297
|
+
* carries a trailing affordance is the style's decision; the only caller that
|
|
81298
|
+
* legitimately opts out is the authored-button renderer, which reaches it
|
|
81299
|
+
* through `themeButtonClassNameWithTrailingIcon`.
|
|
81300
|
+
*/
|
|
81301
|
+
const AFFORDANCE_SUPPRESS_CLASS = "rb-affordance-off";
|
|
81302
|
+
//#endregion
|
|
81260
81303
|
//#region ../theme-core/src/buttons/classNames.ts
|
|
81261
81304
|
/**
|
|
81262
81305
|
* Parse content/runtime variant identifiers into the closed theme-button class
|
|
@@ -81289,6 +81332,27 @@ function themeButtonClassName(spec) {
|
|
|
81289
81332
|
spec.extraClassName
|
|
81290
81333
|
].filter(Boolean).join(" ");
|
|
81291
81334
|
}
|
|
81335
|
+
/**
|
|
81336
|
+
* Button classes for an authored button that renders its own trailing icon.
|
|
81337
|
+
*
|
|
81338
|
+
* A separate function rather than a flag on `themeButtonClassName`, because
|
|
81339
|
+
* there is exactly one caller and it should stay visible in a diff. The name
|
|
81340
|
+
* states what the caller knows to be true of its own markup — that it renders a
|
|
81341
|
+
* trailing icon — rather than what the theme does about it. The consequence is
|
|
81342
|
+
* the theme's to decide and to change; a caller naming the consequence would be
|
|
81343
|
+
* asserting a policy it does not own, and would quietly become a lie the moment
|
|
81344
|
+
* that policy moved.
|
|
81345
|
+
*
|
|
81346
|
+
* Do not reach for this to remove an arrow you simply do not want. A trailing
|
|
81347
|
+
* affordance is declared by the button style, and a block overriding that is the
|
|
81348
|
+
* defect this replaced.
|
|
81349
|
+
*/
|
|
81350
|
+
function themeButtonClassNameWithTrailingIcon(spec) {
|
|
81351
|
+
return themeButtonClassName({
|
|
81352
|
+
...spec,
|
|
81353
|
+
extraClassName: [spec.extraClassName, AFFORDANCE_SUPPRESS_CLASS].filter(Boolean).join(" ")
|
|
81354
|
+
});
|
|
81355
|
+
}
|
|
81292
81356
|
//#endregion
|
|
81293
81357
|
//#region ../theme-core/src/tokens/tokens.ts
|
|
81294
81358
|
const defaultThemeTokens = {
|
|
@@ -83708,26 +83772,19 @@ function resolvedButtonFocusDeclarations(indicator, role) {
|
|
|
83708
83772
|
] : [["outline", value("outline", `3px solid ${indicator.colorCss}`)], ["outline-offset", value("outline-offset", "3px")]];
|
|
83709
83773
|
}
|
|
83710
83774
|
/**
|
|
83711
|
-
* Disabled buttons
|
|
83712
|
-
*
|
|
83713
|
-
*
|
|
83714
|
-
* remain observable.
|
|
83775
|
+
* Disabled buttons are deliberately muted as unavailable controls. Native
|
|
83776
|
+
* disabled controls are exempt from active-control contrast requirements;
|
|
83777
|
+
* opacity distinguishes the state without introducing a focus-like outline.
|
|
83778
|
+
* Retaining pointer events lets the not-allowed cursor remain observable.
|
|
83715
83779
|
*/
|
|
83716
83780
|
const RESOLVED_BUTTON_DISABLED_DECLARATIONS = [
|
|
83717
83781
|
["cursor", "not-allowed"],
|
|
83718
83782
|
["transform", "none"],
|
|
83719
83783
|
["box-shadow", "none"],
|
|
83720
|
-
["
|
|
83721
|
-
["outline-offset", "-4px"]
|
|
83784
|
+
["opacity", "0.55"]
|
|
83722
83785
|
];
|
|
83723
83786
|
//#endregion
|
|
83724
83787
|
//#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
83788
|
const BUTTON_SIZE_NAMES = buttonSizeNameSchema.options;
|
|
83732
83789
|
/**
|
|
83733
83790
|
* Letter spacing token → CSS value.
|
|
@@ -86579,14 +86636,12 @@ function generateVariantCSS(variant, themeId, cardClasses, tokens, theme) {
|
|
|
86579
86636
|
const shadowValue = generateShadowValue(shadow);
|
|
86580
86637
|
rules.push(`box-shadow: ${shadowValue}`);
|
|
86581
86638
|
}
|
|
86582
|
-
|
|
86583
|
-
rules.push(`flex-direction: column`);
|
|
86584
|
-
rules.push(`position: relative`);
|
|
86585
|
-
rules.push(`overflow: visible`);
|
|
86639
|
+
const structureSelector = cardClasses.map((cardClass) => `:where([data-theme-scope="${themeId}"]) :where(.${cardClass})`).join(",\n");
|
|
86586
86640
|
const mediaRadius = MEDIA_CORNER_MAP[corners];
|
|
86587
86641
|
const mediaRules = [`border-top-left-radius: ${mediaRadius}`, `border-top-right-radius: ${mediaRadius}`];
|
|
86588
86642
|
const contentRules = [`padding: ${resolveContentPadding(variant)}`];
|
|
86589
86643
|
return [
|
|
86644
|
+
`${structureSelector} {\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: visible;\n}`,
|
|
86590
86645
|
`${containerSelector} {\n ${rules.join(";\n ")};\n}`,
|
|
86591
86646
|
...cardDecorationPseudoRules(containerSelectors, variant.decorations, resolveColor),
|
|
86592
86647
|
`${fallbackBackgroundSelector} {\n background: transparent;\n}`,
|
|
@@ -88684,12 +88739,6 @@ const footerVariant = z.enum([
|
|
|
88684
88739
|
"split"
|
|
88685
88740
|
]);
|
|
88686
88741
|
const footerMaxWidth = z.enum(["container", "full"]);
|
|
88687
|
-
const footerMode = z.enum([
|
|
88688
|
-
"default",
|
|
88689
|
-
"blocks",
|
|
88690
|
-
"default+blocks",
|
|
88691
|
-
"none"
|
|
88692
|
-
]);
|
|
88693
88742
|
const footerNavLayoutMode = z.enum([
|
|
88694
88743
|
"stack",
|
|
88695
88744
|
"inline",
|
|
@@ -88778,9 +88827,9 @@ const footerSchema = z.object({
|
|
|
88778
88827
|
/**
|
|
88779
88828
|
* SDK-only footer rendering mode.
|
|
88780
88829
|
*
|
|
88781
|
-
*
|
|
88830
|
+
* Historical persisted field; SDK rendering mode now lives in layout.footerMode.
|
|
88782
88831
|
*/
|
|
88783
|
-
mode:
|
|
88832
|
+
mode: footerModeSchema.optional(),
|
|
88784
88833
|
variant: footerVariant,
|
|
88785
88834
|
maxWidth: footerMaxWidth,
|
|
88786
88835
|
showLogoText: z.boolean().optional(),
|
|
@@ -89438,6 +89487,15 @@ const publicEventBaseSchema = z.object({
|
|
|
89438
89487
|
timeZone: z.string(),
|
|
89439
89488
|
pricing: publicEventPricingSchema,
|
|
89440
89489
|
paymentTerms: blockBookingPaymentTermsSchema,
|
|
89490
|
+
cancellationPolicy: z.object({ refunds: z.object({
|
|
89491
|
+
mode: z.enum([
|
|
89492
|
+
"never",
|
|
89493
|
+
"always",
|
|
89494
|
+
"cutoff"
|
|
89495
|
+
]),
|
|
89496
|
+
cutoffHours: z.number(),
|
|
89497
|
+
method: z.enum(["original_payment_method", "site_credit"])
|
|
89498
|
+
}) }),
|
|
89441
89499
|
consent: blockBookingConsentSchema.nullable(),
|
|
89442
89500
|
accessRestriction: accessRestrictionSchema,
|
|
89443
89501
|
allowedCategoryIds: z.array(z.string()),
|
|
@@ -89614,6 +89672,7 @@ const calendarWindowQuerySchema = z.object({
|
|
|
89614
89672
|
eventSurface: z.enum(eventSurfaceScopeValues).optional(),
|
|
89615
89673
|
eventPresets: z.string().optional(),
|
|
89616
89674
|
scheduleScope: z.enum(eventScheduleScopeValues).optional(),
|
|
89675
|
+
seriesIds: z.string().optional(),
|
|
89617
89676
|
categoryIds: z.string().optional(),
|
|
89618
89677
|
venueId: z.string().transform(normalizeCalendarFilterId).optional(),
|
|
89619
89678
|
staffMemberId: z.string().transform(normalizeCalendarFilterId).optional()
|
|
@@ -89646,6 +89705,7 @@ function calendarQueryKey(siteId, stage, filters) {
|
|
|
89646
89705
|
filters.eventSurface ?? "all",
|
|
89647
89706
|
normalizedCsv(filters.eventPresets),
|
|
89648
89707
|
filters.scheduleScope ?? "any",
|
|
89708
|
+
...filters.seriesIds === void 0 ? [] : [normalizedCsv(filters.seriesIds)],
|
|
89649
89709
|
normalizedCsv(filters.categoryIds),
|
|
89650
89710
|
normalizeCalendarFilterId(filters.venueId) ?? "",
|
|
89651
89711
|
normalizeCalendarFilterId(filters.staffMemberId) ?? "",
|
|
@@ -93845,17 +93905,16 @@ const ButtonNode = ({ value, children, href, variantId = "primary", size = "md",
|
|
|
93845
93905
|
console.warn("[ButtonNode] Missing href for link-required button");
|
|
93846
93906
|
return null;
|
|
93847
93907
|
}
|
|
93848
|
-
const extraClassName = affordanceIcon ? [className, AFFORDANCE_SUPPRESS_CLASS].filter(Boolean).join(" ") : className;
|
|
93849
93908
|
const resolvedVariantId = parseThemeButtonVariantId(variantId);
|
|
93850
93909
|
if (variantId && !resolvedVariantId) {
|
|
93851
93910
|
console.error("[ButtonNode] Invalid button variant", { variantId });
|
|
93852
93911
|
return null;
|
|
93853
93912
|
}
|
|
93854
|
-
const combinedClassName = resolvedVariantId ? themeButtonClassName({
|
|
93913
|
+
const combinedClassName = resolvedVariantId ? (affordanceIcon ? themeButtonClassNameWithTrailingIcon : themeButtonClassName)({
|
|
93855
93914
|
variant: resolvedVariantId,
|
|
93856
93915
|
size,
|
|
93857
|
-
extraClassName
|
|
93858
|
-
}) :
|
|
93916
|
+
extraClassName: className
|
|
93917
|
+
}) : className;
|
|
93859
93918
|
if (resolvedHref) return /* @__PURE__ */ jsxs("a", {
|
|
93860
93919
|
href: resolvedHref,
|
|
93861
93920
|
target,
|
|
@@ -95633,6 +95692,7 @@ const publicPricingSchema = z.object({
|
|
|
95633
95692
|
});
|
|
95634
95693
|
const publicAppointmentServiceSchema = z.object({
|
|
95635
95694
|
id: z.string().min(1),
|
|
95695
|
+
slug: z.string().min(1).optional(),
|
|
95636
95696
|
title: z.string(),
|
|
95637
95697
|
description: z.string().nullable().optional(),
|
|
95638
95698
|
durationMinutes: z.number().int().positive(),
|
|
@@ -95709,7 +95769,7 @@ function formatAmountOrFree(amount, currency) {
|
|
|
95709
95769
|
currency
|
|
95710
95770
|
}, { decimals: "auto" });
|
|
95711
95771
|
}
|
|
95712
|
-
function buildRows(services, pathname) {
|
|
95772
|
+
function buildRows(services, pathname, servicePathPrefix) {
|
|
95713
95773
|
return services.map((service) => ({
|
|
95714
95774
|
id: service.id,
|
|
95715
95775
|
title: service.title,
|
|
@@ -95720,7 +95780,8 @@ function buildRows(services, pathname) {
|
|
|
95720
95780
|
href: resolveDedicatedBookingHref(pathname, {
|
|
95721
95781
|
kind: "appointment_service",
|
|
95722
95782
|
serviceId: service.id
|
|
95723
|
-
})
|
|
95783
|
+
}),
|
|
95784
|
+
detailsHref: servicePathPrefix && service.slug ? `${servicePathPrefix.replace(/\/$/, "")}/${encodeURIComponent(service.slug)}` : null
|
|
95724
95785
|
}));
|
|
95725
95786
|
}
|
|
95726
95787
|
function buildAppointmentServicesView(input) {
|
|
@@ -95739,13 +95800,14 @@ function buildAppointmentServicesView(input) {
|
|
|
95739
95800
|
};
|
|
95740
95801
|
return {
|
|
95741
95802
|
kind: "items",
|
|
95742
|
-
rows: buildRows(parsed.services, input.pathname)
|
|
95803
|
+
rows: buildRows(parsed.services, input.pathname, input.servicePathPrefix ?? null)
|
|
95743
95804
|
};
|
|
95744
95805
|
}
|
|
95745
|
-
function AppointmentServicesNode({ sectionHeading, services, pathname, className }) {
|
|
95806
|
+
function AppointmentServicesNode({ sectionHeading, services, pathname, servicePathPrefix, className }) {
|
|
95746
95807
|
const view = buildAppointmentServicesView({
|
|
95747
95808
|
services,
|
|
95748
|
-
pathname: typeof pathname === "string" ? pathname : void 0
|
|
95809
|
+
pathname: typeof pathname === "string" ? pathname : void 0,
|
|
95810
|
+
servicePathPrefix: typeof servicePathPrefix === "string" ? servicePathPrefix : null
|
|
95749
95811
|
});
|
|
95750
95812
|
const rootClassName = `appointment-services ${className ?? ""}`.trim();
|
|
95751
95813
|
const RowTitle = sectionHeading ? "h3" : "h2";
|
|
@@ -95776,7 +95838,10 @@ function AppointmentServicesNode({ sectionHeading, services, pathname, className
|
|
|
95776
95838
|
children: [
|
|
95777
95839
|
/* @__PURE__ */ jsx(RowTitle, {
|
|
95778
95840
|
className: "appointment-services-row-title rb-text-lg rb-font-medium rb-leading-tight",
|
|
95779
|
-
children: row.
|
|
95841
|
+
children: row.detailsHref ? /* @__PURE__ */ jsx("a", {
|
|
95842
|
+
href: row.detailsHref,
|
|
95843
|
+
children: row.title
|
|
95844
|
+
}) : row.title
|
|
95780
95845
|
}),
|
|
95781
95846
|
row.description ? /* @__PURE__ */ jsx("p", {
|
|
95782
95847
|
className: "appointment-services-row-description rb-text-sm rb-leading-6 status-muted",
|
|
@@ -98687,12 +98752,12 @@ const EventCompactRow = ({ event, buttonVariant = "primary", buttonText }) => {
|
|
|
98687
98752
|
}), cta.hidden ? /* @__PURE__ */ jsx("span", {
|
|
98688
98753
|
className: "event-compact-row-status",
|
|
98689
98754
|
children: cta.label
|
|
98690
|
-
}) : /* @__PURE__ */
|
|
98755
|
+
}) : /* @__PURE__ */ jsx("a", {
|
|
98691
98756
|
href: cta.href,
|
|
98692
98757
|
target: cta.external ? "_blank" : void 0,
|
|
98693
98758
|
rel: cta.external ? "noopener noreferrer" : void 0,
|
|
98694
98759
|
className: `${buttonClass} event-compact-row-cta`,
|
|
98695
|
-
children:
|
|
98760
|
+
children: /* @__PURE__ */ jsx("span", { children: cta.label })
|
|
98696
98761
|
})]
|
|
98697
98762
|
})]
|
|
98698
98763
|
})]
|
|
@@ -98891,6 +98956,35 @@ const calendarTabViewsSchema = z.enum([
|
|
|
98891
98956
|
"week"
|
|
98892
98957
|
]);
|
|
98893
98958
|
//#endregion
|
|
98959
|
+
//#region ../blocks/src/system/blocks/events/shared/eventSelection.ts
|
|
98960
|
+
/** Invalid saved selections fail closed rather than widening discovery. */
|
|
98961
|
+
function resolveEventSelection(mode, value) {
|
|
98962
|
+
if (mode !== "selected") return { kind: "matching" };
|
|
98963
|
+
const candidates = Array.isArray(value) ? value : typeof value === "string" ? value.split(",").filter(Boolean) : [];
|
|
98964
|
+
const ids = [];
|
|
98965
|
+
for (const candidate of candidates) {
|
|
98966
|
+
if (typeof candidate !== "string") return {
|
|
98967
|
+
kind: "selected",
|
|
98968
|
+
seriesIds: []
|
|
98969
|
+
};
|
|
98970
|
+
const parsed = parseEventSeriesId(candidate.trim());
|
|
98971
|
+
if (!parsed.ok) return {
|
|
98972
|
+
kind: "selected",
|
|
98973
|
+
seriesIds: []
|
|
98974
|
+
};
|
|
98975
|
+
ids.push(parsed.value);
|
|
98976
|
+
}
|
|
98977
|
+
return {
|
|
98978
|
+
kind: "selected",
|
|
98979
|
+
seriesIds: [...new Set(ids)].sort()
|
|
98980
|
+
};
|
|
98981
|
+
}
|
|
98982
|
+
/** Undefined means discovery; an empty string is an explicitly empty selection. */
|
|
98983
|
+
function eventSeriesScopeCsv(value) {
|
|
98984
|
+
if (value == null) return void 0;
|
|
98985
|
+
return typeof value === "string" ? value : value.join(",");
|
|
98986
|
+
}
|
|
98987
|
+
//#endregion
|
|
98894
98988
|
//#region ../blocks/src/system/blocks/events/shared/runGrouping.ts
|
|
98895
98989
|
function isWholeSeriesPublicEvent(event) {
|
|
98896
98990
|
return event.bookingScope === "whole_series";
|
|
@@ -100251,6 +100345,7 @@ function normalizeFilterId(value) {
|
|
|
100251
100345
|
return id === "all" ? void 0 : id;
|
|
100252
100346
|
}
|
|
100253
100347
|
function buildEventRuntimeFilters(input) {
|
|
100348
|
+
if (input.seriesIds != null) return { seriesIds: input.seriesIds };
|
|
100254
100349
|
const params = {};
|
|
100255
100350
|
if (input.eventSurface && input.eventSurface !== "all") params.eventSurface = input.eventSurface;
|
|
100256
100351
|
const eventPresets = normalizeCsvString(input.filterEventPresets);
|
|
@@ -100266,6 +100361,7 @@ function buildEventRuntimeFilters(input) {
|
|
|
100266
100361
|
}
|
|
100267
100362
|
function getEventRuntimeFiltersKey(filters) {
|
|
100268
100363
|
return JSON.stringify({
|
|
100364
|
+
seriesIds: filters?.seriesIds == null ? null : [...new Set(filters.seriesIds.split(",").filter(Boolean))].sort().join(","),
|
|
100269
100365
|
categoryIds: normalizeCsvString(filters?.categoryIds),
|
|
100270
100366
|
staffMemberId: normalizeOptionalId(filters?.staffMemberId),
|
|
100271
100367
|
venueId: normalizeOptionalId(filters?.venueId),
|
|
@@ -100286,6 +100382,7 @@ const eventCollectionFilterSourceSchemaShape = {
|
|
|
100286
100382
|
eventSurface: eventSurfaceScopeSchema$1.nullable().optional(),
|
|
100287
100383
|
filterEventPresets: z.union([z.string(), z.array(z.string())]).nullable().optional(),
|
|
100288
100384
|
scheduleScope: eventScheduleScopeSchema$1.nullable().optional(),
|
|
100385
|
+
seriesIds: z.union([z.string(), z.array(z.string())]).nullable().optional(),
|
|
100289
100386
|
filterCategoryIds: z.union([z.string(), z.array(z.string())]).nullable().optional(),
|
|
100290
100387
|
filterStaffMemberId: z.string().nullable().optional(),
|
|
100291
100388
|
filterVenueId: z.string().nullable().optional()
|
|
@@ -100332,6 +100429,7 @@ const eventCollectionDisplaySchemaShape = {
|
|
|
100332
100429
|
eventSurface: eventSurfaceScopeSchema$1,
|
|
100333
100430
|
filterEventPresets: z.string().nullable(),
|
|
100334
100431
|
scheduleScope: eventScheduleScopeSchema$1,
|
|
100432
|
+
seriesIds: z.string().nullable().optional(),
|
|
100335
100433
|
filterCategoryIds: z.string().nullable(),
|
|
100336
100434
|
filterStaffMemberId: z.string().nullable(),
|
|
100337
100435
|
filterVenueId: z.string().nullable(),
|
|
@@ -100379,11 +100477,15 @@ function buildEventCollectionDisplay(source) {
|
|
|
100379
100477
|
};
|
|
100380
100478
|
}
|
|
100381
100479
|
function buildEventCollectionFilterDisplay(source) {
|
|
100382
|
-
|
|
100383
|
-
|
|
100384
|
-
|
|
100385
|
-
|
|
100386
|
-
|
|
100480
|
+
const selected = source.seriesIds != null;
|
|
100481
|
+
const matchingFilters = selected ? {
|
|
100482
|
+
eventSurface: "all",
|
|
100483
|
+
filterEventPresets: null,
|
|
100484
|
+
scheduleScope: "any",
|
|
100485
|
+
filterCategoryIds: null,
|
|
100486
|
+
filterStaffMemberId: null,
|
|
100487
|
+
filterVenueId: null
|
|
100488
|
+
} : {
|
|
100387
100489
|
eventSurface: normalizeEventSurfaceScope(source.eventSurface),
|
|
100388
100490
|
filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
100389
100491
|
scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
|
|
@@ -100391,6 +100493,14 @@ function buildEventCollectionFilterDisplay(source) {
|
|
|
100391
100493
|
filterStaffMemberId: normalizeEventStaffMemberId(source.filterStaffMemberId),
|
|
100392
100494
|
filterVenueId: normalizeEventVenueId(source.filterVenueId)
|
|
100393
100495
|
};
|
|
100496
|
+
return {
|
|
100497
|
+
seriesIds: eventSeriesScopeCsv(source.seriesIds),
|
|
100498
|
+
showFilters: selected ? false : source.showFilters ?? true,
|
|
100499
|
+
showCategoryFilter: source.showCategoryFilter ?? "auto",
|
|
100500
|
+
showVenueFilter: source.showVenueFilter ?? false,
|
|
100501
|
+
showStaffFilter: source.showStaffFilter ?? true,
|
|
100502
|
+
...matchingFilters
|
|
100503
|
+
};
|
|
100394
100504
|
}
|
|
100395
100505
|
function buildEventCollectionPresentationDisplay(source) {
|
|
100396
100506
|
return {
|
|
@@ -100405,14 +100515,15 @@ function buildEventCollectionPresentationDisplay(source) {
|
|
|
100405
100515
|
}
|
|
100406
100516
|
function buildEventCollectionHydration(source, now = /* @__PURE__ */ new Date()) {
|
|
100407
100517
|
const timeZone = source.calendarWindow?.scope.timeZone ?? toBookingTimeZone(source.bookingTimeZone);
|
|
100518
|
+
const selected = source.seriesIds != null;
|
|
100408
100519
|
return {
|
|
100409
100520
|
calendarWindow: source.calendarWindow ?? void 0,
|
|
100410
100521
|
siteId: source.siteId,
|
|
100411
100522
|
stage: source.stage,
|
|
100412
100523
|
prefetchedEvents: source.events != null,
|
|
100413
|
-
eventSurface: normalizeEventSurfaceScope(source.eventSurface),
|
|
100414
|
-
filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
100415
|
-
scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
|
|
100524
|
+
eventSurface: selected ? "all" : normalizeEventSurfaceScope(source.eventSurface),
|
|
100525
|
+
filterEventPresets: selected ? null : normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
100526
|
+
scheduleScope: selected ? "any" : normalizeEventScheduleScope(source.scheduleScope),
|
|
100416
100527
|
calendarContext: {
|
|
100417
100528
|
timeZone,
|
|
100418
100529
|
initialToday: source.calendarWindow?.initialToday ?? getLocalScheduleDate(now, timeZone)
|
|
@@ -100982,13 +101093,10 @@ function OfferingsPreviewContent(props) {
|
|
|
100982
101093
|
}),
|
|
100983
101094
|
groupCta ? /* @__PURE__ */ jsx("footer", {
|
|
100984
101095
|
className: "offerings-preview-card-footer rb-mt-auto rb-flex",
|
|
100985
|
-
children: /* @__PURE__ */
|
|
101096
|
+
children: /* @__PURE__ */ jsx("a", {
|
|
100986
101097
|
className: groupLinkClass,
|
|
100987
101098
|
href: groupCta.href,
|
|
100988
|
-
children:
|
|
100989
|
-
"aria-hidden": "true",
|
|
100990
|
-
className: "offerings-preview-link-icon rb-h-4 rb-w-4"
|
|
100991
|
-
})]
|
|
101099
|
+
children: /* @__PURE__ */ jsx("span", { children: groupCta.label })
|
|
100992
101100
|
})
|
|
100993
101101
|
}) : null
|
|
100994
101102
|
]
|
|
@@ -114276,6 +114384,7 @@ function isDisplayMediaKind(kind) {
|
|
|
114276
114384
|
}
|
|
114277
114385
|
const siteOptionSources = [
|
|
114278
114386
|
"eventCategories",
|
|
114387
|
+
"eventSeries",
|
|
114279
114388
|
"venues",
|
|
114280
114389
|
"staffMembers"
|
|
114281
114390
|
];
|
|
@@ -119653,6 +119762,65 @@ const formBlockDefinition = {
|
|
|
119653
119762
|
runtime: formBlockRuntime
|
|
119654
119763
|
};
|
|
119655
119764
|
//#endregion
|
|
119765
|
+
//#region ../blocks/src/system/blocks/events/eventSelectionFields.ts
|
|
119766
|
+
const eventSelectionFields = [{
|
|
119767
|
+
id: "eventSelection",
|
|
119768
|
+
type: "select",
|
|
119769
|
+
label: "Events to show",
|
|
119770
|
+
required: false,
|
|
119771
|
+
multiple: false,
|
|
119772
|
+
defaultValue: "matching",
|
|
119773
|
+
options: [{
|
|
119774
|
+
value: "matching",
|
|
119775
|
+
label: "All matching events"
|
|
119776
|
+
}, {
|
|
119777
|
+
value: "selected",
|
|
119778
|
+
label: "Selected events"
|
|
119779
|
+
}],
|
|
119780
|
+
ui: { intent: "behavior" }
|
|
119781
|
+
}, createSiteOptionSelectField({
|
|
119782
|
+
id: "selectedEventSeriesIds",
|
|
119783
|
+
label: "Selected events",
|
|
119784
|
+
description: "Show upcoming dates for these events. Other event filters do not apply.",
|
|
119785
|
+
required: false,
|
|
119786
|
+
multiple: true,
|
|
119787
|
+
defaultValue: [],
|
|
119788
|
+
optionSource: "eventSeries",
|
|
119789
|
+
ui: {
|
|
119790
|
+
intent: "behavior",
|
|
119791
|
+
searchThreshold: 1,
|
|
119792
|
+
visibleWhen: {
|
|
119793
|
+
field: "eventSelection",
|
|
119794
|
+
equals: "selected"
|
|
119795
|
+
}
|
|
119796
|
+
}
|
|
119797
|
+
})];
|
|
119798
|
+
function withEventSelectionVisibility(field) {
|
|
119799
|
+
if (![
|
|
119800
|
+
"eventSurface",
|
|
119801
|
+
"filterEventPresets",
|
|
119802
|
+
"scheduleScope",
|
|
119803
|
+
"filterCategoryIds",
|
|
119804
|
+
"filterStaffMemberId",
|
|
119805
|
+
"filterVenueId",
|
|
119806
|
+
"showFilters",
|
|
119807
|
+
"showCategoryFilter",
|
|
119808
|
+
"showVenueFilter",
|
|
119809
|
+
"showStaffFilter"
|
|
119810
|
+
].includes(field.id)) return field;
|
|
119811
|
+
const visibleWhen = field.ui?.visibleWhen;
|
|
119812
|
+
return {
|
|
119813
|
+
...field,
|
|
119814
|
+
ui: {
|
|
119815
|
+
...field.ui,
|
|
119816
|
+
visibleWhen: { allOf: [{
|
|
119817
|
+
field: "eventSelection",
|
|
119818
|
+
notEquals: "selected"
|
|
119819
|
+
}, ...visibleWhen ? [visibleWhen] : []] }
|
|
119820
|
+
}
|
|
119821
|
+
};
|
|
119822
|
+
}
|
|
119823
|
+
//#endregion
|
|
119656
119824
|
//#region ../blocks/src/system/runtime/nodes/events/EventCalendar.interactive.ts
|
|
119657
119825
|
const eventCalendarSourceSchema = z.object({
|
|
119658
119826
|
...eventCollectionSourceSchemaShape,
|
|
@@ -119737,6 +119905,7 @@ function buildEventCalendarListingRender(render, className = render.display.clas
|
|
|
119737
119905
|
eventSurface: display.eventSurface,
|
|
119738
119906
|
filterEventPresets: display.filterEventPresets,
|
|
119739
119907
|
scheduleScope: display.scheduleScope,
|
|
119908
|
+
seriesIds: display.seriesIds,
|
|
119740
119909
|
filterCategoryIds: display.filterCategoryIds,
|
|
119741
119910
|
filterStaffMemberId: display.filterStaffMemberId,
|
|
119742
119911
|
filterVenueId: display.filterVenueId,
|
|
@@ -119774,19 +119943,59 @@ function buildEventCalendarInteractiveIslandProps(props) {
|
|
|
119774
119943
|
//#region ../blocks/src/system/blocks/events/eventCalendarDataLoaders.ts
|
|
119775
119944
|
const scopeParams = {
|
|
119776
119945
|
siteId: { $bind: { from: "$root.siteId" } },
|
|
119946
|
+
seriesIds: { $bind: {
|
|
119947
|
+
from: "content",
|
|
119948
|
+
transforms: [{
|
|
119949
|
+
id: "events.calendarSelectionParam",
|
|
119950
|
+
options: { key: "seriesIds" }
|
|
119951
|
+
}]
|
|
119952
|
+
} },
|
|
119777
119953
|
stage: { $bind: {
|
|
119778
119954
|
from: "$root.previewStage",
|
|
119779
119955
|
fallback: "published"
|
|
119780
119956
|
} },
|
|
119781
|
-
eventSurface: { $bind: {
|
|
119957
|
+
eventSurface: { $bind: {
|
|
119958
|
+
from: "content",
|
|
119959
|
+
transforms: [{
|
|
119960
|
+
id: "events.calendarSelectionParam",
|
|
119961
|
+
options: { key: "eventSurface" }
|
|
119962
|
+
}, { id: "value.csv" }]
|
|
119963
|
+
} },
|
|
119782
119964
|
eventPresets: { $bind: {
|
|
119783
|
-
from: "content
|
|
119784
|
-
transforms: [{
|
|
119965
|
+
from: "content",
|
|
119966
|
+
transforms: [{
|
|
119967
|
+
id: "events.calendarSelectionParam",
|
|
119968
|
+
options: { key: "filterEventPresets" }
|
|
119969
|
+
}, { id: "value.csv" }]
|
|
119970
|
+
} },
|
|
119971
|
+
scheduleScope: { $bind: {
|
|
119972
|
+
from: "content",
|
|
119973
|
+
transforms: [{
|
|
119974
|
+
id: "events.calendarSelectionParam",
|
|
119975
|
+
options: { key: "scheduleScope" }
|
|
119976
|
+
}, { id: "value.csv" }]
|
|
119977
|
+
} },
|
|
119978
|
+
categoryIds: { $bind: {
|
|
119979
|
+
from: "content",
|
|
119980
|
+
transforms: [{
|
|
119981
|
+
id: "events.calendarSelectionParam",
|
|
119982
|
+
options: { key: "filterCategoryIds" }
|
|
119983
|
+
}, { id: "value.csv" }]
|
|
119785
119984
|
} },
|
|
119786
|
-
|
|
119787
|
-
|
|
119788
|
-
|
|
119789
|
-
|
|
119985
|
+
staffMemberId: { $bind: {
|
|
119986
|
+
from: "content",
|
|
119987
|
+
transforms: [{
|
|
119988
|
+
id: "events.calendarSelectionParam",
|
|
119989
|
+
options: { key: "filterStaffMemberId" }
|
|
119990
|
+
}, { id: "value.csv" }]
|
|
119991
|
+
} },
|
|
119992
|
+
venueId: { $bind: {
|
|
119993
|
+
from: "content",
|
|
119994
|
+
transforms: [{
|
|
119995
|
+
id: "events.calendarSelectionParam",
|
|
119996
|
+
options: { key: "filterVenueId" }
|
|
119997
|
+
}, { id: "value.csv" }]
|
|
119998
|
+
} }
|
|
119790
119999
|
};
|
|
119791
120000
|
/** Combined renders two jobs; calendar-only variants never pay for the list seed. */
|
|
119792
120001
|
const eventCalendarDataLoaders = {
|
|
@@ -119916,6 +120125,13 @@ const eventCalendarLayout = [styledSection({
|
|
|
119916
120125
|
from: "content.defaultCalendarView",
|
|
119917
120126
|
fallback: "month"
|
|
119918
120127
|
} },
|
|
120128
|
+
seriesIds: { $bind: {
|
|
120129
|
+
from: "content",
|
|
120130
|
+
transforms: [{
|
|
120131
|
+
id: "events.calendarSelectionParam",
|
|
120132
|
+
options: { key: "seriesIds" }
|
|
120133
|
+
}]
|
|
120134
|
+
} },
|
|
119919
120135
|
showFilters: { $bind: {
|
|
119920
120136
|
from: "content.showFilters",
|
|
119921
120137
|
fallback: true
|
|
@@ -119937,17 +120153,47 @@ const eventCalendarLayout = [styledSection({
|
|
|
119937
120153
|
fallback: true
|
|
119938
120154
|
} },
|
|
119939
120155
|
eventSurface: { $bind: {
|
|
119940
|
-
from: "content
|
|
119941
|
-
|
|
120156
|
+
from: "content",
|
|
120157
|
+
transforms: [{
|
|
120158
|
+
id: "events.calendarSelectionParam",
|
|
120159
|
+
options: { key: "eventSurface" }
|
|
120160
|
+
}]
|
|
120161
|
+
} },
|
|
120162
|
+
filterEventPresets: { $bind: {
|
|
120163
|
+
from: "content",
|
|
120164
|
+
transforms: [{
|
|
120165
|
+
id: "events.calendarSelectionParam",
|
|
120166
|
+
options: { key: "filterEventPresets" }
|
|
120167
|
+
}]
|
|
119942
120168
|
} },
|
|
119943
|
-
filterEventPresets: { $bind: { from: "content.filterEventPresets" } },
|
|
119944
120169
|
scheduleScope: { $bind: {
|
|
119945
|
-
from: "content
|
|
119946
|
-
|
|
120170
|
+
from: "content",
|
|
120171
|
+
transforms: [{
|
|
120172
|
+
id: "events.calendarSelectionParam",
|
|
120173
|
+
options: { key: "scheduleScope" }
|
|
120174
|
+
}]
|
|
120175
|
+
} },
|
|
120176
|
+
filterCategoryIds: { $bind: {
|
|
120177
|
+
from: "content",
|
|
120178
|
+
transforms: [{
|
|
120179
|
+
id: "events.calendarSelectionParam",
|
|
120180
|
+
options: { key: "filterCategoryIds" }
|
|
120181
|
+
}]
|
|
120182
|
+
} },
|
|
120183
|
+
filterStaffMemberId: { $bind: {
|
|
120184
|
+
from: "content",
|
|
120185
|
+
transforms: [{
|
|
120186
|
+
id: "events.calendarSelectionParam",
|
|
120187
|
+
options: { key: "filterStaffMemberId" }
|
|
120188
|
+
}]
|
|
120189
|
+
} },
|
|
120190
|
+
filterVenueId: { $bind: {
|
|
120191
|
+
from: "content",
|
|
120192
|
+
transforms: [{
|
|
120193
|
+
id: "events.calendarSelectionParam",
|
|
120194
|
+
options: { key: "filterVenueId" }
|
|
120195
|
+
}]
|
|
119947
120196
|
} },
|
|
119948
|
-
filterCategoryIds: { $bind: { from: "content.filterCategoryIds" } },
|
|
119949
|
-
filterStaffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
|
|
119950
|
-
filterVenueId: { $bind: { from: "content.filterVenueId" } },
|
|
119951
120197
|
cardRole: { $bind: {
|
|
119952
120198
|
from: "content._cardStyles.role",
|
|
119953
120199
|
fallback: "default"
|
|
@@ -120451,6 +120697,7 @@ const eventCalendarAdditionalFields = [
|
|
|
120451
120697
|
}
|
|
120452
120698
|
}
|
|
120453
120699
|
},
|
|
120700
|
+
...eventSelectionFields,
|
|
120454
120701
|
{
|
|
120455
120702
|
id: "eventSurface",
|
|
120456
120703
|
type: "select",
|
|
@@ -120660,7 +120907,7 @@ const eventCalendarBlockDefinition = {
|
|
|
120660
120907
|
titleSource: "heading",
|
|
120661
120908
|
description: "Display events with calendar, list, or combined views with filtering",
|
|
120662
120909
|
skipSectionStyles: true,
|
|
120663
|
-
additionalFields: eventCalendarAdditionalFields,
|
|
120910
|
+
additionalFields: eventCalendarAdditionalFields.map(withEventSelectionVisibility),
|
|
120664
120911
|
styleTokens: {
|
|
120665
120912
|
background: "surface",
|
|
120666
120913
|
typography: "body",
|
|
@@ -120769,6 +121016,7 @@ const eventListingHydrationSchema = z.object({
|
|
|
120769
121016
|
eventSurface: eventSurfaceScopeSchema,
|
|
120770
121017
|
filterEventPresets: z.string().nullable(),
|
|
120771
121018
|
scheduleScope: eventScheduleScopeSchema,
|
|
121019
|
+
seriesIds: z.string().nullable().optional(),
|
|
120772
121020
|
filterCategoryIds: z.string().nullable().optional(),
|
|
120773
121021
|
filterStaffMemberId: z.string().nullable().optional(),
|
|
120774
121022
|
filterVenueId: z.string().nullable().optional(),
|
|
@@ -120829,6 +121077,7 @@ const eventListingBlockRuntime = defineProgressiveBlockRuntime({
|
|
|
120829
121077
|
eventSurface: normalizeEventSurfaceScope(source.eventSurface),
|
|
120830
121078
|
filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
120831
121079
|
scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
|
|
121080
|
+
seriesIds: eventSeriesScopeCsv(source.seriesIds),
|
|
120832
121081
|
filterCategoryIds: normalizeEventCategoryIdsCsv(source.filterCategoryIds),
|
|
120833
121082
|
filterStaffMemberId: normalizeEventStaffMemberId(source.filterStaffMemberId),
|
|
120834
121083
|
filterVenueId: normalizeEventVenueId(source.filterVenueId),
|
|
@@ -125325,10 +125574,14 @@ function buildDiscountAvailabilityRequestPlan(options) {
|
|
|
125325
125574
|
}
|
|
125326
125575
|
};
|
|
125327
125576
|
}
|
|
125328
|
-
function discountAvailabilityStateFromResponse(response) {
|
|
125329
|
-
if (!discountAvailabilityHasDiscounts(response)) return {
|
|
125577
|
+
function discountAvailabilityStateFromResponse(requestKey, response) {
|
|
125578
|
+
if (!discountAvailabilityHasDiscounts(response)) return {
|
|
125579
|
+
tag: "unavailable",
|
|
125580
|
+
requestKey
|
|
125581
|
+
};
|
|
125330
125582
|
return {
|
|
125331
125583
|
tag: "available",
|
|
125584
|
+
requestKey,
|
|
125332
125585
|
manualCodeEntryAllowed: discountAvailabilityAllowsManualEntry(response),
|
|
125333
125586
|
autoAppliedDiscount: getAutoAppliedDiscountPreview(response)
|
|
125334
125587
|
};
|
|
@@ -125338,10 +125591,13 @@ function discountCodeUiReducer(state, event) {
|
|
|
125338
125591
|
case "availability-disabled": return initialDiscountCodeUiState;
|
|
125339
125592
|
case "availability-loading": return {
|
|
125340
125593
|
...state,
|
|
125341
|
-
availability: {
|
|
125594
|
+
availability: {
|
|
125595
|
+
tag: "loading",
|
|
125596
|
+
previous: state.availability.tag === "available" || state.availability.tag === "unavailable" ? state.availability : state.availability.tag === "loading" ? state.availability.previous : null
|
|
125597
|
+
}
|
|
125342
125598
|
};
|
|
125343
125599
|
case "availability-loaded": {
|
|
125344
|
-
const availability = discountAvailabilityStateFromResponse(event.response);
|
|
125600
|
+
const availability = discountAvailabilityStateFromResponse(event.requestKey, event.response);
|
|
125345
125601
|
if (availability.tag !== "available" || !availability.manualCodeEntryAllowed) return {
|
|
125346
125602
|
...state,
|
|
125347
125603
|
discountUiOpen: false,
|
|
@@ -125357,7 +125613,10 @@ function discountCodeUiReducer(state, event) {
|
|
|
125357
125613
|
...state,
|
|
125358
125614
|
discountUiOpen: false,
|
|
125359
125615
|
discountCode: "",
|
|
125360
|
-
availability: {
|
|
125616
|
+
availability: {
|
|
125617
|
+
tag: "error",
|
|
125618
|
+
requestKey: event.requestKey
|
|
125619
|
+
}
|
|
125361
125620
|
};
|
|
125362
125621
|
case "discount-code-changed": return {
|
|
125363
125622
|
...state,
|
|
@@ -125393,11 +125652,15 @@ function useDiscountCodeUi(options) {
|
|
|
125393
125652
|
if (cancelled) return;
|
|
125394
125653
|
dispatch({
|
|
125395
125654
|
type: "availability-loaded",
|
|
125655
|
+
requestKey: requestPlan.key,
|
|
125396
125656
|
response: res
|
|
125397
125657
|
});
|
|
125398
125658
|
} catch {
|
|
125399
125659
|
if (cancelled) return;
|
|
125400
|
-
dispatch({
|
|
125660
|
+
dispatch({
|
|
125661
|
+
type: "availability-failed",
|
|
125662
|
+
requestKey: requestPlan.key
|
|
125663
|
+
});
|
|
125401
125664
|
}
|
|
125402
125665
|
}
|
|
125403
125666
|
checkDiscountAvailability();
|
|
@@ -125406,8 +125669,9 @@ function useDiscountCodeUi(options) {
|
|
|
125406
125669
|
};
|
|
125407
125670
|
}, [options.api, requestPlan]);
|
|
125408
125671
|
const availability = state.availability;
|
|
125409
|
-
const
|
|
125410
|
-
const
|
|
125672
|
+
const settledAvailability = availability.tag === "loading" ? availability.previous : availability.tag === "available" || availability.tag === "unavailable" ? availability : null;
|
|
125673
|
+
const isAvailable = settledAvailability?.tag === "available";
|
|
125674
|
+
const manualCodeEntryAllowed = isAvailable ? settledAvailability.manualCodeEntryAllowed : false;
|
|
125411
125675
|
return {
|
|
125412
125676
|
discountUiOpen: state.discountUiOpen,
|
|
125413
125677
|
setDiscountUiOpen: (isOpen) => dispatch({
|
|
@@ -125421,8 +125685,10 @@ function useDiscountCodeUi(options) {
|
|
|
125421
125685
|
}),
|
|
125422
125686
|
discountsAvailable: isAvailable,
|
|
125423
125687
|
manualCodeEntryAllowed,
|
|
125424
|
-
autoAppliedDiscount: isAvailable ?
|
|
125425
|
-
discountsAvailableLoading: availability.tag === "loading"
|
|
125688
|
+
autoAppliedDiscount: isAvailable ? settledAvailability.autoAppliedDiscount : null,
|
|
125689
|
+
discountsAvailableLoading: availability.tag === "loading",
|
|
125690
|
+
discountAvailabilityRequestKey: requestPlan.key,
|
|
125691
|
+
settledDiscountAvailabilityRequestKey: availability.tag === "error" ? availability.requestKey : settledAvailability?.requestKey ?? null
|
|
125426
125692
|
};
|
|
125427
125693
|
}
|
|
125428
125694
|
//#endregion
|
|
@@ -129611,6 +129877,7 @@ function getTicketTypeLineMax(input) {
|
|
|
129611
129877
|
const initialEligibilityLookupState = {
|
|
129612
129878
|
tag: "idle",
|
|
129613
129879
|
eligibility: null,
|
|
129880
|
+
settledRequestKey: null,
|
|
129614
129881
|
error: null
|
|
129615
129882
|
};
|
|
129616
129883
|
function eligibilityLookupReducer(state, action) {
|
|
@@ -129619,16 +129886,19 @@ function eligibilityLookupReducer(state, action) {
|
|
|
129619
129886
|
case "loading-started": return {
|
|
129620
129887
|
tag: "loading",
|
|
129621
129888
|
eligibility: state.eligibility,
|
|
129889
|
+
settledRequestKey: state.settledRequestKey,
|
|
129622
129890
|
error: null
|
|
129623
129891
|
};
|
|
129624
129892
|
case "resolved": return {
|
|
129625
129893
|
tag: "resolved",
|
|
129626
129894
|
eligibility: action.eligibility,
|
|
129895
|
+
settledRequestKey: action.requestKey,
|
|
129627
129896
|
error: null
|
|
129628
129897
|
};
|
|
129629
129898
|
case "failed": return {
|
|
129630
129899
|
tag: "failed",
|
|
129631
129900
|
eligibility: null,
|
|
129901
|
+
settledRequestKey: null,
|
|
129632
129902
|
error: action.message
|
|
129633
129903
|
};
|
|
129634
129904
|
default: return assertNever$5(action);
|
|
@@ -129734,9 +130004,23 @@ function toRegistrationOptionsSubject(subject, attendanceMode) {
|
|
|
129734
130004
|
function useEligibility(params) {
|
|
129735
130005
|
return useEligibilityWithDeps(params, eventRegistrationHooksDeps);
|
|
129736
130006
|
}
|
|
130007
|
+
function eligibilityRequestKey(params) {
|
|
130008
|
+
return JSON.stringify({
|
|
130009
|
+
enabled: params.enabled,
|
|
130010
|
+
refreshKey: params.refreshKey ?? 0,
|
|
130011
|
+
subject: params.subject,
|
|
130012
|
+
attendanceMode: params.attendanceMode ?? null,
|
|
130013
|
+
ticketSelections: params.ticketSelectionsKey,
|
|
130014
|
+
selectedSlidingAmount: params.selectedSlidingAmount ?? null
|
|
130015
|
+
});
|
|
130016
|
+
}
|
|
129737
130017
|
function useEligibilityWithDeps(params, deps) {
|
|
129738
130018
|
const api = deps.useBlockApi();
|
|
129739
130019
|
const ticketSelectionsKey = JSON.stringify(normalizeTicketSelectionLines(params.ticketSelections));
|
|
130020
|
+
const requestKey = eligibilityRequestKey({
|
|
130021
|
+
...params,
|
|
130022
|
+
ticketSelectionsKey
|
|
130023
|
+
});
|
|
129740
130024
|
const [state, dispatch] = useReducer(eligibilityLookupReducer, initialEligibilityLookupState);
|
|
129741
130025
|
const requestIdRef = useRef(0);
|
|
129742
130026
|
useEffect(() => {
|
|
@@ -129769,7 +130053,8 @@ function useEligibilityWithDeps(params, deps) {
|
|
|
129769
130053
|
if (cancelled || requestIdRef.current !== requestId) return;
|
|
129770
130054
|
dispatch({
|
|
129771
130055
|
type: "resolved",
|
|
129772
|
-
eligibility: transformRegistrationOptionsResponse(result)
|
|
130056
|
+
eligibility: transformRegistrationOptionsResponse(result),
|
|
130057
|
+
requestKey
|
|
129773
130058
|
});
|
|
129774
130059
|
} catch {
|
|
129775
130060
|
if (cancelled || requestIdRef.current !== requestId) return;
|
|
@@ -129798,6 +130083,8 @@ function useEligibilityWithDeps(params, deps) {
|
|
|
129798
130083
|
return {
|
|
129799
130084
|
state,
|
|
129800
130085
|
eligibility: state.eligibility,
|
|
130086
|
+
settledRequestKey: state.settledRequestKey,
|
|
130087
|
+
requestKey,
|
|
129801
130088
|
isLoading: state.tag === "loading",
|
|
129802
130089
|
error: state.error,
|
|
129803
130090
|
creditState
|
|
@@ -130044,7 +130331,6 @@ const STRIPE_COMMISSION_FREE_REASONS = [
|
|
|
130044
130331
|
"no_commission_plan",
|
|
130045
130332
|
"billing_evidence_invalid",
|
|
130046
130333
|
"fee_rounds_to_zero",
|
|
130047
|
-
"non_commissionable_scope",
|
|
130048
130334
|
"payment_not_stripe"
|
|
130049
130335
|
];
|
|
130050
130336
|
const historicalContext = {
|
|
@@ -131057,6 +131343,68 @@ function buildOccurrenceRegistrationRequest(options, prepared, method, passId, m
|
|
|
131057
131343
|
};
|
|
131058
131344
|
}
|
|
131059
131345
|
//#endregion
|
|
131346
|
+
//#region ../blocks/src/system/runtime/nodes/event-registration/useSettledCommerceView.ts
|
|
131347
|
+
function buildCandidate(input) {
|
|
131348
|
+
if (!input.eligibilityIsSettled || !input.eligibility || !input.currentEvent) return null;
|
|
131349
|
+
return {
|
|
131350
|
+
eventSelectionId: input.currentEvent.selectionId,
|
|
131351
|
+
discountContext: resolveDiscountContext({
|
|
131352
|
+
paymentSelection: input.paymentSelection,
|
|
131353
|
+
event: input.currentEvent,
|
|
131354
|
+
eventRequiresPayment: input.eventRequiresPayment,
|
|
131355
|
+
ticketsCount: input.ticketsCount
|
|
131356
|
+
}),
|
|
131357
|
+
subtotalCents: input.eligibility.price,
|
|
131358
|
+
summaryLines: input.eligibility.ticketLines.map((line) => ({
|
|
131359
|
+
pricingOptionId: line.pricingOptionId,
|
|
131360
|
+
label: line.label,
|
|
131361
|
+
quantity: line.quantity,
|
|
131362
|
+
unitPriceCents: line.unitPriceCents,
|
|
131363
|
+
subtotalCents: line.subtotalCents
|
|
131364
|
+
}))
|
|
131365
|
+
};
|
|
131366
|
+
}
|
|
131367
|
+
function eligibilityIsSettled(result) {
|
|
131368
|
+
return result.settledRequestKey === result.requestKey;
|
|
131369
|
+
}
|
|
131370
|
+
function viewIsStale(view, currentEvent, eligibilityState) {
|
|
131371
|
+
return view.eventSelectionId !== currentEvent?.selectionId || eligibilityState?.tag === "failed" || eligibilityState?.tag === "idle";
|
|
131372
|
+
}
|
|
131373
|
+
function requestIsSettled(discountUi) {
|
|
131374
|
+
return discountUi.discountAvailabilityRequestKey === "disabled" || discountUi.settledDiscountAvailabilityRequestKey === discountUi.discountAvailabilityRequestKey;
|
|
131375
|
+
}
|
|
131376
|
+
function discountRequest(view) {
|
|
131377
|
+
const discountContext = view?.discountContext ?? null;
|
|
131378
|
+
return {
|
|
131379
|
+
discountContext,
|
|
131380
|
+
subtotalCents: discountContext?.type === "event" && view?.subtotalCents !== null ? view?.subtotalCents : void 0
|
|
131381
|
+
};
|
|
131382
|
+
}
|
|
131383
|
+
function useSettledCommerceView(input) {
|
|
131384
|
+
const candidate = buildCandidate({
|
|
131385
|
+
eligibilityIsSettled: eligibilityIsSettled(input.eligibilityResult),
|
|
131386
|
+
eligibility: input.eligibility,
|
|
131387
|
+
currentEvent: input.currentEvent,
|
|
131388
|
+
paymentSelection: input.paymentSelection,
|
|
131389
|
+
eventRequiresPayment: input.eventRequiresPayment,
|
|
131390
|
+
ticketsCount: input.ticketsCount
|
|
131391
|
+
});
|
|
131392
|
+
const settledRef = useRef(candidate);
|
|
131393
|
+
if (settledRef.current && viewIsStale(settledRef.current, input.currentEvent, input.eligibilityResult.state)) settledRef.current = null;
|
|
131394
|
+
const requestView = candidate ?? settledRef.current;
|
|
131395
|
+
const discountUi = input.useDiscountCodeUi({
|
|
131396
|
+
api: input.api,
|
|
131397
|
+
...discountRequest(requestView)
|
|
131398
|
+
});
|
|
131399
|
+
if (candidate && requestIsSettled(discountUi)) settledRef.current = candidate;
|
|
131400
|
+
return {
|
|
131401
|
+
discountUi,
|
|
131402
|
+
discountContext: settledRef.current?.discountContext ?? null,
|
|
131403
|
+
ticketSelectionSubtotalCents: settledRef.current?.subtotalCents ?? null,
|
|
131404
|
+
ticketSelectionSummaryLines: settledRef.current?.summaryLines ?? []
|
|
131405
|
+
};
|
|
131406
|
+
}
|
|
131407
|
+
//#endregion
|
|
131060
131408
|
//#region ../blocks/src/system/runtime/nodes/event-registration/registrationWizardContext.ts
|
|
131061
131409
|
function getEventSelectionDefaults(event) {
|
|
131062
131410
|
const suggestedAmount = getSlidingScaleForEvent(event)?.suggestedAmount;
|
|
@@ -131210,10 +131558,6 @@ function isSoldOutWithoutWaitlist(input) {
|
|
|
131210
131558
|
}
|
|
131211
131559
|
//#endregion
|
|
131212
131560
|
//#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
131561
|
function usesTieredPricing(event) {
|
|
131218
131562
|
return event !== null && event !== void 0 ? publicEventPricingStrategy(event.pricing) === "tiered" : false;
|
|
131219
131563
|
}
|
|
@@ -131665,30 +132009,15 @@ function useEventRegistrationWizardWithDeps(options, deps) {
|
|
|
131665
132009
|
}
|
|
131666
132010
|
setStep("select-tickets");
|
|
131667
132011
|
};
|
|
131668
|
-
const discountContext
|
|
131669
|
-
|
|
131670
|
-
|
|
131671
|
-
|
|
131672
|
-
|
|
131673
|
-
}), [
|
|
132012
|
+
const { discountUi, discountContext, ticketSelectionSubtotalCents, ticketSelectionSummaryLines } = useSettledCommerceView({
|
|
132013
|
+
api,
|
|
132014
|
+
useDiscountCodeUi: deps.useDiscountCodeUi,
|
|
132015
|
+
eligibilityResult,
|
|
132016
|
+
eligibility,
|
|
131674
132017
|
currentEvent,
|
|
131675
132018
|
eventRequiresPayment,
|
|
131676
132019
|
paymentSelection,
|
|
131677
132020
|
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
132021
|
});
|
|
131693
132022
|
const selectionMethod = paymentSelection.method;
|
|
131694
132023
|
const shouldShowDiscountToggle = discountContext !== null && discountUi.manualCodeEntryAllowed && (selectionMethod === "stripe" || selectionMethod === "pass_bundle" || selectionMethod === "membership_bundle");
|
|
@@ -131853,6 +132182,34 @@ function useEventRegistrationWizardWithDeps(options, deps) {
|
|
|
131853
132182
|
};
|
|
131854
132183
|
}
|
|
131855
132184
|
//#endregion
|
|
132185
|
+
//#region ../blocks/src/system/runtime/nodes/event-registration/useEventCheckoutHandoffRestore.ts
|
|
132186
|
+
function eventRegistrationReloadTarget(location) {
|
|
132187
|
+
return `${location.pathname}${location.search}#${EVENT_REGISTRATION_ANCHOR_ID}`;
|
|
132188
|
+
}
|
|
132189
|
+
function reloadAtEventRegistration() {
|
|
132190
|
+
const target = eventRegistrationReloadTarget(window.location);
|
|
132191
|
+
window.history.replaceState(window.history.state, "", target);
|
|
132192
|
+
window.location.reload();
|
|
132193
|
+
}
|
|
132194
|
+
const browserCheckoutHandoffRestoreDeps = {
|
|
132195
|
+
addPageShowListener: (listener) => window.addEventListener("pageshow", listener),
|
|
132196
|
+
removePageShowListener: (listener) => window.removeEventListener("pageshow", listener),
|
|
132197
|
+
reloadAtRegistration: reloadAtEventRegistration
|
|
132198
|
+
};
|
|
132199
|
+
function useEventCheckoutHandoffRestore(active) {
|
|
132200
|
+
useEventCheckoutHandoffRestoreWithDeps(active, browserCheckoutHandoffRestoreDeps);
|
|
132201
|
+
}
|
|
132202
|
+
function useEventCheckoutHandoffRestoreWithDeps(active, deps) {
|
|
132203
|
+
useEffect(() => {
|
|
132204
|
+
if (!active) return;
|
|
132205
|
+
const handlePageShow = (event) => {
|
|
132206
|
+
if (event.persisted) deps.reloadAtRegistration();
|
|
132207
|
+
};
|
|
132208
|
+
deps.addPageShowListener(handlePageShow);
|
|
132209
|
+
return () => deps.removePageShowListener(handlePageShow);
|
|
132210
|
+
}, [active, deps]);
|
|
132211
|
+
}
|
|
132212
|
+
//#endregion
|
|
131856
132213
|
//#region ../blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.ts
|
|
131857
132214
|
const initialMagicLinkSubmissionState = Object.freeze({ tag: "idle" });
|
|
131858
132215
|
function magicLinkSubmissionReducer(state, action) {
|
|
@@ -134568,6 +134925,7 @@ function EventRegistrationWizard(props) {
|
|
|
134568
134925
|
events: events ?? [],
|
|
134569
134926
|
maxTicketsNum
|
|
134570
134927
|
});
|
|
134928
|
+
useEventCheckoutHandoffRestore(wizard.step === "redirecting");
|
|
134571
134929
|
const [bookingOverlayOpen, setBookingOverlayOpen] = useState(false);
|
|
134572
134930
|
const [floatingPortalRoot, setFloatingPortalRoot] = useState(null);
|
|
134573
134931
|
useEffect(() => {
|
|
@@ -140327,6 +140685,7 @@ function useEventPagination({ siteId: _siteId, initialEvents = [], fetchInitialO
|
|
|
140327
140685
|
const eventSurface = filters?.eventSurface;
|
|
140328
140686
|
const eventPresets = normalizeCsvString(filters?.eventPresets);
|
|
140329
140687
|
const scheduleScope = filters?.scheduleScope;
|
|
140688
|
+
const seriesIds = filters?.seriesIds;
|
|
140330
140689
|
const eventsRef = useRef(events);
|
|
140331
140690
|
const loadingRef = useRef(loading);
|
|
140332
140691
|
const hasMoreRef = useRef(hasMore);
|
|
@@ -140354,6 +140713,7 @@ function useEventPagination({ siteId: _siteId, initialEvents = [], fetchInitialO
|
|
|
140354
140713
|
const currentEvents = eventsRef.current;
|
|
140355
140714
|
const lastEvent = options.reset ? void 0 : currentEvents[currentEvents.length - 1];
|
|
140356
140715
|
const newEvents = await getPublicEvents({
|
|
140716
|
+
seriesIds,
|
|
140357
140717
|
afterStartsAt: lastEvent ? lastEvent.startsAt : void 0,
|
|
140358
140718
|
afterId: lastEvent ? lastEvent.occurrenceId : void 0,
|
|
140359
140719
|
limit: pageSize,
|
|
@@ -140392,6 +140752,7 @@ function useEventPagination({ siteId: _siteId, initialEvents = [], fetchInitialO
|
|
|
140392
140752
|
eventSurface,
|
|
140393
140753
|
eventPresets,
|
|
140394
140754
|
scheduleScope,
|
|
140755
|
+
seriesIds,
|
|
140395
140756
|
normalizedCategoryIds,
|
|
140396
140757
|
normalizedStaffMemberId,
|
|
140397
140758
|
normalizedVenueId
|
|
@@ -140401,7 +140762,7 @@ function useEventPagination({ siteId: _siteId, initialEvents = [], fetchInitialO
|
|
|
140401
140762
|
}, [fetchPage]);
|
|
140402
140763
|
const initialFetchAttemptKeyRef = useRef(null);
|
|
140403
140764
|
useEffect(() => {
|
|
140404
|
-
if (!fetchInitialOnMount) return;
|
|
140765
|
+
if (!fetchInitialOnMount || seriesIds === "") return;
|
|
140405
140766
|
if (!filtersMatchInitial) return;
|
|
140406
140767
|
if (initialEventsRef.current.length > 0) return;
|
|
140407
140768
|
if (eventsRef.current.length > 0) return;
|
|
@@ -140415,7 +140776,8 @@ function useEventPagination({ siteId: _siteId, initialEvents = [], fetchInitialO
|
|
|
140415
140776
|
fetchPage,
|
|
140416
140777
|
filtersKey,
|
|
140417
140778
|
filtersMatchInitial,
|
|
140418
|
-
stage
|
|
140779
|
+
stage,
|
|
140780
|
+
seriesIds
|
|
140419
140781
|
]);
|
|
140420
140782
|
const prevFiltersMatchInitialRef = useRef(filtersMatchInitial);
|
|
140421
140783
|
const prevInitialEventsKeyRef = useRef(initialEventsKey);
|
|
@@ -140539,7 +140901,7 @@ function getEventFiltersError(state) {
|
|
|
140539
140901
|
* const events = await api.getPublicEvents(params);
|
|
140540
140902
|
* ```
|
|
140541
140903
|
*/
|
|
140542
|
-
function useEventFilters({ showCategoryFilter = "auto", showVenueFilter = false, showStaffFilter = false, preFilterCategoryIds, preFilterStaffMemberId, preFilterVenueId, preFilterEventSurface, preFilterEventPresets, preFilterScheduleScope } = {}) {
|
|
140904
|
+
function useEventFilters({ showCategoryFilter = "auto", showVenueFilter = false, showStaffFilter = false, preFilterSeriesIds, preFilterCategoryIds, preFilterStaffMemberId, preFilterVenueId, preFilterEventSurface, preFilterEventPresets, preFilterScheduleScope } = {}) {
|
|
140543
140905
|
const api = useBlockApi();
|
|
140544
140906
|
const [loadState, dispatchLoadState] = useReducer(eventFiltersLoadReducer, void 0, createInitialEventFiltersLoadState);
|
|
140545
140907
|
const filters = getEventFiltersData(loadState);
|
|
@@ -140688,6 +141050,7 @@ function useEventFilters({ showCategoryFilter = "auto", showVenueFilter = false,
|
|
|
140688
141050
|
setSelectedVenueId("all");
|
|
140689
141051
|
}, []),
|
|
140690
141052
|
getFilterParams: useCallback(() => {
|
|
141053
|
+
if (preFilterSeriesIds != null) return { seriesIds: preFilterSeriesIds };
|
|
140691
141054
|
const params = {};
|
|
140692
141055
|
if (fixedEventSurface) params.eventSurface = fixedEventSurface;
|
|
140693
141056
|
if (fixedEventPresets) params.eventPresets = fixedEventPresets;
|
|
@@ -140701,6 +141064,7 @@ function useEventFilters({ showCategoryFilter = "auto", showVenueFilter = false,
|
|
|
140701
141064
|
params.staffMemberId = fixedStaffMemberId ?? (selectedStaffMemberId !== "all" ? selectedStaffMemberId : void 0);
|
|
140702
141065
|
return params;
|
|
140703
141066
|
}, [
|
|
141067
|
+
preFilterSeriesIds,
|
|
140704
141068
|
allowedCategoryIds,
|
|
140705
141069
|
allowedCategorySet,
|
|
140706
141070
|
fixedEventPresets,
|
|
@@ -140724,25 +141088,12 @@ const EventListingController = ({ render }) => {
|
|
|
140724
141088
|
const hydration = render.hydration;
|
|
140725
141089
|
const filtersIdBase = useId();
|
|
140726
141090
|
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
|
-
]);
|
|
141091
|
+
const initialListFilters = buildEventRuntimeFilters(hydration);
|
|
140742
141092
|
const { categories, venues, staffMembers, selectedCategoryId, selectedStaffMemberId, selectedVenueId, loading: filtersLoading, shouldShowCategoryFilter, shouldShowVenueFilter, shouldShowStaffFilter, hasActiveFilters, setSelectedCategoryId, setSelectedStaffMemberId, setSelectedVenueId, resetFilters, getFilterParams } = useEventFilters({
|
|
140743
141093
|
showCategoryFilter: hydration.showFilters ? hydration.showCategoryFilter : "never",
|
|
140744
141094
|
showVenueFilter: hydration.showFilters ? hydration.showVenueFilter : false,
|
|
140745
141095
|
showStaffFilter: hydration.showFilters ? hydration.showStaffFilter : false,
|
|
141096
|
+
preFilterSeriesIds: hydration.seriesIds,
|
|
140746
141097
|
preFilterCategoryIds: hydration.filterCategoryIds ?? void 0,
|
|
140747
141098
|
preFilterStaffMemberId: hydration.filterStaffMemberId ?? void 0,
|
|
140748
141099
|
preFilterVenueId: hydration.filterVenueId ?? void 0,
|
|
@@ -141577,6 +141928,7 @@ function toEventCombinedControllerProps(props) {
|
|
|
141577
141928
|
eventSurface: props.render.display.eventSurface,
|
|
141578
141929
|
filterEventPresets: props.render.display.filterEventPresets,
|
|
141579
141930
|
scheduleScope: props.render.display.scheduleScope,
|
|
141931
|
+
seriesIds: props.render.display.seriesIds,
|
|
141580
141932
|
filterCategoryIds: props.render.display.filterCategoryIds,
|
|
141581
141933
|
filterStaffMemberId: props.render.display.filterStaffMemberId,
|
|
141582
141934
|
filterVenueId: props.render.display.filterVenueId,
|
|
@@ -141698,7 +142050,7 @@ const EventCombinedCalendarTab = ({ calendarTabViews, calendarView, calendarView
|
|
|
141698
142050
|
const EventCombinedClient = ({ events: initialEvents, siteId, stage, listLayout = "stack", listColumns = "3", eventsPerPage = 12, paginationAction = {
|
|
141699
142051
|
kind: "loadMore",
|
|
141700
142052
|
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 }) => {
|
|
142053
|
+
}, 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
142054
|
const hydrationReady = useHydrationReady();
|
|
141703
142055
|
const fetchInitialEventsOnMount = initialEvents == null;
|
|
141704
142056
|
const resolvedShowFilters = showFilters ?? true;
|
|
@@ -141724,6 +142076,7 @@ const EventCombinedClient = ({ events: initialEvents, siteId, stage, listLayout
|
|
|
141724
142076
|
showCategoryFilter: resolvedShowFilters ? showCategoryFilter : "never",
|
|
141725
142077
|
showVenueFilter: resolvedShowFilters ? resolvedShowVenueFilter : false,
|
|
141726
142078
|
showStaffFilter: resolvedShowFilters ? resolvedShowStaffFilter : false,
|
|
142079
|
+
preFilterSeriesIds: seriesIds,
|
|
141727
142080
|
preFilterCategoryIds: filterCategoryIds,
|
|
141728
142081
|
preFilterStaffMemberId: filterStaffMemberId,
|
|
141729
142082
|
preFilterVenueId: filterVenueId,
|
|
@@ -141731,21 +142084,15 @@ const EventCombinedClient = ({ events: initialEvents, siteId, stage, listLayout
|
|
|
141731
142084
|
preFilterEventPresets: filterEventPresets,
|
|
141732
142085
|
preFilterScheduleScope: resolvedScheduleScope
|
|
141733
142086
|
});
|
|
141734
|
-
const initialListFilters =
|
|
142087
|
+
const initialListFilters = buildEventRuntimeFilters({
|
|
141735
142088
|
eventSurface: resolvedEventSurface,
|
|
141736
142089
|
filterEventPresets,
|
|
141737
142090
|
scheduleScope: resolvedScheduleScope,
|
|
142091
|
+
seriesIds,
|
|
141738
142092
|
filterCategoryIds,
|
|
141739
142093
|
filterStaffMemberId,
|
|
141740
142094
|
filterVenueId
|
|
141741
|
-
})
|
|
141742
|
-
resolvedEventSurface,
|
|
141743
|
-
filterCategoryIds,
|
|
141744
|
-
filterEventPresets,
|
|
141745
|
-
filterStaffMemberId,
|
|
141746
|
-
filterVenueId,
|
|
141747
|
-
resolvedScheduleScope
|
|
141748
|
-
]);
|
|
142095
|
+
});
|
|
141749
142096
|
const listFilters = useMemo(() => getFilterParams(), [getFilterParams]);
|
|
141750
142097
|
const pageSize = eventsPerPage;
|
|
141751
142098
|
const { events: paginatedEvents, loading: eventsLoading, error: eventsError, hasMore, loadMore } = useEventPagination({
|
|
@@ -142022,6 +142369,7 @@ const EventCalendarClient = ({ render }) => {
|
|
|
142022
142369
|
eventSurface: display.eventSurface,
|
|
142023
142370
|
filterEventPresets: display.filterEventPresets,
|
|
142024
142371
|
scheduleScope: display.scheduleScope,
|
|
142372
|
+
seriesIds: display.seriesIds,
|
|
142025
142373
|
filterCategoryIds: display.filterCategoryIds,
|
|
142026
142374
|
filterStaffMemberId: display.filterStaffMemberId,
|
|
142027
142375
|
filterVenueId: display.filterVenueId,
|
|
@@ -142045,6 +142393,7 @@ const EventCalendarWeekBoardClient = ({ render }) => {
|
|
|
142045
142393
|
const { display, hydration } = render;
|
|
142046
142394
|
const filters = useMemo(() => buildDisplayFilterParams(display), [
|
|
142047
142395
|
display.eventSurface,
|
|
142396
|
+
display.seriesIds,
|
|
142048
142397
|
display.filterCategoryIds,
|
|
142049
142398
|
display.filterEventPresets,
|
|
142050
142399
|
display.filterStaffMemberId,
|
|
@@ -142206,6 +142555,7 @@ function useEventCalendarFilterState(display) {
|
|
|
142206
142555
|
showCategoryFilter: display.showFilters ? display.showCategoryFilter : "never",
|
|
142207
142556
|
showVenueFilter: display.showFilters ? display.showVenueFilter : false,
|
|
142208
142557
|
showStaffFilter: display.showFilters ? display.showStaffFilter : false,
|
|
142558
|
+
preFilterSeriesIds: display.seriesIds,
|
|
142209
142559
|
preFilterCategoryIds: display.filterCategoryIds,
|
|
142210
142560
|
preFilterStaffMemberId: display.filterStaffMemberId,
|
|
142211
142561
|
preFilterVenueId: display.filterVenueId,
|
|
@@ -142239,6 +142589,7 @@ function buildDisplayFilterParams(display) {
|
|
|
142239
142589
|
eventSurface: display.eventSurface,
|
|
142240
142590
|
filterEventPresets: display.filterEventPresets,
|
|
142241
142591
|
scheduleScope: display.scheduleScope,
|
|
142592
|
+
seriesIds: display.seriesIds,
|
|
142242
142593
|
filterCategoryIds: display.filterCategoryIds,
|
|
142243
142594
|
filterStaffMemberId: display.filterStaffMemberId,
|
|
142244
142595
|
filterVenueId: display.filterVenueId
|
|
@@ -142838,7 +143189,7 @@ function NewsletterFormClient({ render }) {
|
|
|
142838
143189
|
if (submitTarget.tag === "unavailable") {
|
|
142839
143190
|
dispatchSubmission({
|
|
142840
143191
|
type: "failed",
|
|
142841
|
-
error: newsletterFormError(
|
|
143192
|
+
error: newsletterFormError(SIGNUPS_PAUSED_MESSAGE)
|
|
142842
143193
|
});
|
|
142843
143194
|
return;
|
|
142844
143195
|
}
|
|
@@ -142849,14 +143200,16 @@ function NewsletterFormClient({ render }) {
|
|
|
142849
143200
|
});
|
|
142850
143201
|
return;
|
|
142851
143202
|
}
|
|
142852
|
-
const
|
|
142853
|
-
|
|
143203
|
+
const selection = readVisitorSelection(formData, render.hydration);
|
|
143204
|
+
const selectionError = visitorSelectionError(selection);
|
|
143205
|
+
if (selectionError) {
|
|
142854
143206
|
dispatchSubmission({
|
|
142855
143207
|
type: "failed",
|
|
142856
|
-
error:
|
|
143208
|
+
error: selectionError
|
|
142857
143209
|
});
|
|
142858
143210
|
return;
|
|
142859
143211
|
}
|
|
143212
|
+
const visitorSelection = selection.tag === "chosen" ? selection.value : void 0;
|
|
142860
143213
|
dispatchSubmission({ type: "submitted" });
|
|
142861
143214
|
try {
|
|
142862
143215
|
const result = await api.subscribeNewsletter({
|
|
@@ -143056,10 +143409,18 @@ function transportFailureMessage(err) {
|
|
|
143056
143409
|
}
|
|
143057
143410
|
return RETRY_SHORTLY_MESSAGE;
|
|
143058
143411
|
}
|
|
143412
|
+
function visitorSelectionError(selection) {
|
|
143413
|
+
switch (selection.tag) {
|
|
143414
|
+
case "nothing_chosen": return newsletterFieldError(TOPIC_CHOICE_FIELD_ID, "Choose at least one email topic.");
|
|
143415
|
+
case "unusable": return newsletterFormError(SIGNUPS_PAUSED_MESSAGE);
|
|
143416
|
+
case "not_offered":
|
|
143417
|
+
case "chosen": return null;
|
|
143418
|
+
}
|
|
143419
|
+
}
|
|
143059
143420
|
function readVisitorSelection(formData, hydration) {
|
|
143060
|
-
if (hydration.choicePresentation !== "visitor_choice") return
|
|
143421
|
+
if (hydration.choicePresentation !== "visitor_choice") return { tag: "not_offered" };
|
|
143061
143422
|
const ids = formData.getAll(TOPIC_CHOICE_FIELD_ID).flatMap((value) => typeof value === "string" ? [value] : []);
|
|
143062
|
-
if (ids.length === 0) return
|
|
143423
|
+
if (ids.length === 0) return { tag: "nothing_chosen" };
|
|
143063
143424
|
const raw = hydration.choiceProvider === "native" ? {
|
|
143064
143425
|
provider: "native",
|
|
143065
143426
|
topicIds: ids
|
|
@@ -143070,9 +143431,12 @@ function readVisitorSelection(formData, hydration) {
|
|
|
143070
143431
|
provider: "mailchimp",
|
|
143071
143432
|
interestIds: ids
|
|
143072
143433
|
} : null;
|
|
143073
|
-
if (raw === null) return
|
|
143434
|
+
if (raw === null) return { tag: "unusable" };
|
|
143074
143435
|
const parsed = parseMailingListVisitorSelection(raw);
|
|
143075
|
-
return parsed.ok ?
|
|
143436
|
+
return parsed.ok ? {
|
|
143437
|
+
tag: "chosen",
|
|
143438
|
+
value: parsed.value
|
|
143439
|
+
} : { tag: "unusable" };
|
|
143076
143440
|
}
|
|
143077
143441
|
function publicSignupError(outcome) {
|
|
143078
143442
|
switch (outcome.tag) {
|
|
@@ -146493,6 +146857,26 @@ const headerRuntimeTransforms = [{
|
|
|
146493
146857
|
run: resolveHeaderChromeRuntimeContract
|
|
146494
146858
|
}];
|
|
146495
146859
|
const defaultTransforms = createTransformRegistry([
|
|
146860
|
+
{
|
|
146861
|
+
id: "events.calendarSelectionParam",
|
|
146862
|
+
kind: "formatter",
|
|
146863
|
+
summary: "Resolve selected events instead of discovery filters",
|
|
146864
|
+
schema: z.object({ key: z.enum([
|
|
146865
|
+
"seriesIds",
|
|
146866
|
+
"eventSurface",
|
|
146867
|
+
"filterEventPresets",
|
|
146868
|
+
"scheduleScope",
|
|
146869
|
+
"filterCategoryIds",
|
|
146870
|
+
"filterStaffMemberId",
|
|
146871
|
+
"filterVenueId"
|
|
146872
|
+
]) }),
|
|
146873
|
+
run(value, { key }) {
|
|
146874
|
+
const content = asPartialObject(value) ?? {};
|
|
146875
|
+
const selection = resolveEventSelection(content.eventSelection, content.selectedEventSeriesIds);
|
|
146876
|
+
if (selection.kind === "selected") return key === "seriesIds" ? selection.seriesIds : void 0;
|
|
146877
|
+
return key === "seriesIds" ? void 0 : content[key];
|
|
146878
|
+
}
|
|
146879
|
+
},
|
|
146496
146880
|
{
|
|
146497
146881
|
id: "events.calendarReadEnabled",
|
|
146498
146882
|
kind: "formatter",
|
|
@@ -148242,9 +148626,56 @@ function generateNavLinkCSS(options) {
|
|
|
148242
148626
|
if (baseRules.length > 0) cssChunks.unshift(`\n${selector} {\n ${baseRules.join("\n ")}\n}\n`);
|
|
148243
148627
|
if (hoverRules.length > 0) cssChunks.push(`\n${hoverSelector} {\n ${hoverRules.join("\n ")}\n}\n`);
|
|
148244
148628
|
if (activeRules.length > 0) cssChunks.push(`\n${activeSelector} {\n ${activeRules.join("\n ")}\n}\n`);
|
|
148629
|
+
cssChunks.push(navLinkFocusVisibleCss(selector, style, theme, tokens));
|
|
148245
148630
|
cssChunks.push(generateInteractiveChildInheritanceCSS(selector));
|
|
148246
148631
|
return cssChunks.join("");
|
|
148247
148632
|
}
|
|
148633
|
+
/**
|
|
148634
|
+
* Keyboard focus indicator for nav links, in the header, the footer and header
|
|
148635
|
+
* dropdown menus — the three surfaces `generateNavLinkCSS` serves.
|
|
148636
|
+
*
|
|
148637
|
+
* Emitted unconditionally rather than as an effect, because focus visibility is
|
|
148638
|
+
* a floor rather than a style choice. Only the interaction-palette pill ever
|
|
148639
|
+
* wrote an `effects.focus` group, so every other nav — every `quiet` palette,
|
|
148640
|
+
* every footer, every dropdown — previously fell back to whatever outline the
|
|
148641
|
+
* browser drew.
|
|
148642
|
+
*
|
|
148643
|
+
* The outline takes the link's own resolved colour, so on a header that adapts
|
|
148644
|
+
* to the section it floats over it moves with the adaptation instead of
|
|
148645
|
+
* asserting a brand colour against an unknown backdrop.
|
|
148646
|
+
*
|
|
148647
|
+
* Where the style asks for `soft-glow`, the same halo goes on the outline. That
|
|
148648
|
+
* treatment exists because the theme has already conceded the resolved colour
|
|
148649
|
+
* alone is not reliable over an unpredictable backdrop — a hero photograph with
|
|
148650
|
+
* mixed luminance. Without it the text would stay legible by its halo while the
|
|
148651
|
+
* focus ring, which is the part with a contrast requirement of its own, would
|
|
148652
|
+
* not.
|
|
148653
|
+
*
|
|
148654
|
+
* A style that also paints a focus pill keeps it: this adds an outline around
|
|
148655
|
+
* that pill rather than replacing it.
|
|
148656
|
+
*/
|
|
148657
|
+
function navLinkFocusVisibleCss(selector, style, theme, tokens) {
|
|
148658
|
+
const color = tokens.getColor(style.colorToken);
|
|
148659
|
+
const halo = buildTextContrastShadow({
|
|
148660
|
+
theme,
|
|
148661
|
+
colorToken: style.colorToken,
|
|
148662
|
+
treatment: style.contrastTreatment
|
|
148663
|
+
});
|
|
148664
|
+
return `
|
|
148665
|
+
${selector}:focus-visible {
|
|
148666
|
+
outline: 2px solid ${color};
|
|
148667
|
+
outline-offset: ${focusOutlineOffset(selector)};${halo ? `\n box-shadow: ${halo};` : ""}
|
|
148668
|
+
}
|
|
148669
|
+
`;
|
|
148670
|
+
}
|
|
148671
|
+
/**
|
|
148672
|
+
* Dropdown items are full-width inside a panel with no horizontal padding, so
|
|
148673
|
+
* an outset outline would paint over and past the panel's own border. Keeping
|
|
148674
|
+
* it flush is the only way it reads as belonging to the item.
|
|
148675
|
+
*/
|
|
148676
|
+
function focusOutlineOffset(selector) {
|
|
148677
|
+
return selector.includes("nav-dropdown-link") ? "-2px" : "3px";
|
|
148678
|
+
}
|
|
148248
148679
|
function buildTextContrastShadow(input) {
|
|
148249
148680
|
if (input.treatment !== "soft-glow") return null;
|
|
148250
148681
|
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 +155413,8 @@ const appointmentServicesBlockDefinition = {
|
|
|
154982
155413
|
el("appointment-services", {
|
|
154983
155414
|
sectionHeading: { $bind: { from: "content.heading" } },
|
|
154984
155415
|
services: { $bind: { from: "data.services" } },
|
|
154985
|
-
pathname: { $bind: { from: "$root.pathname" } }
|
|
155416
|
+
pathname: { $bind: { from: "$root.pathname" } },
|
|
155417
|
+
servicePathPrefix: { $bind: { from: "$root.appointmentServicePathPrefix" } }
|
|
154986
155418
|
})
|
|
154987
155419
|
], { gap: "lg" })
|
|
154988
155420
|
})]
|
|
@@ -161649,10 +162081,19 @@ const containerResponsiveThemeCss = `/*
|
|
|
161649
162081
|
padding-top: 2.5rem;
|
|
161650
162082
|
padding-bottom: 2.5rem;
|
|
161651
162083
|
}
|
|
162084
|
+
/* Clearance for a surface that is not an authored block page.
|
|
162085
|
+
An authored page gets this through its opening block's container (see the
|
|
162086
|
+
overlay-clearance rule in styles.css). A reserved surface or a system
|
|
162087
|
+
destination page has no such block, so it consumes the same variable here.
|
|
162088
|
+
Marked with one class rather than per-surface selectors, because the last
|
|
162089
|
+
two additions to this family were both missed and shipped overlapping. */
|
|
161652
162090
|
:where(.theme-scope)
|
|
161653
162091
|
[data-site-document-layout-mode="header-overlay"]
|
|
161654
|
-
|
|
161655
|
-
padding-top: calc(
|
|
162092
|
+
.rb-overlay-clearance-surface {
|
|
162093
|
+
padding-top: calc(
|
|
162094
|
+
var(--site-overlay-header-clearance, 5.5rem) +
|
|
162095
|
+
var(--site-overlay-opening-content-extra-pad, clamp(1rem, 2vw, 1.75rem))
|
|
162096
|
+
);
|
|
161656
162097
|
}
|
|
161657
162098
|
.rb-preview-editor-offset {
|
|
161658
162099
|
padding-bottom: calc(
|
|
@@ -172009,6 +172450,23 @@ const containerResponsiveThemeCss = `/*
|
|
|
172009
172450
|
gap: 0.5rem;
|
|
172010
172451
|
}
|
|
172011
172452
|
|
|
172453
|
+
/* Error panel and field notes. The form block scopes these to its own
|
|
172454
|
+
data-block, so the newsletter form (which also renders in the footer)
|
|
172455
|
+
needs its own copy of the treatment. */
|
|
172456
|
+
:where(.theme-scope) .newsletter-form .fb-error:not([data-field-validation-message]) {
|
|
172457
|
+
background-color: var(--fb-error-bg);
|
|
172458
|
+
color: var(--fb-error-text);
|
|
172459
|
+
border: 1px solid var(--fb-error-border);
|
|
172460
|
+
border-radius: var(--rb-block-radius);
|
|
172461
|
+
padding: 1rem;
|
|
172462
|
+
font-size: 0.875rem;
|
|
172463
|
+
}
|
|
172464
|
+
|
|
172465
|
+
:where(.theme-scope) .newsletter-form [data-field-validation-message] {
|
|
172466
|
+
font-size: 0.875rem;
|
|
172467
|
+
color: var(--fb-error-text);
|
|
172468
|
+
}
|
|
172469
|
+
|
|
172012
172470
|
/* Required indicator */
|
|
172013
172471
|
:where(.theme-scope) .newsletter-required {
|
|
172014
172472
|
color: rgb(var(--tb-primary));
|
|
@@ -186028,11 +186486,14 @@ const sdkSiteStyleConfigSchema = z.object({
|
|
|
186028
186486
|
sectionOptions: sdkSectionOptionsConfigSchema.optional(),
|
|
186029
186487
|
containerOptions: sdkContainerOptionsConfigSchema.optional()
|
|
186030
186488
|
});
|
|
186031
|
-
const sdkSiteLayoutConfigSchema = z.object({
|
|
186032
|
-
|
|
186033
|
-
|
|
186034
|
-
|
|
186035
|
-
|
|
186489
|
+
const sdkSiteLayoutConfigSchema = z.object({
|
|
186490
|
+
footerMode: footerModeSchema.optional(),
|
|
186491
|
+
footerBlocks: z.array(z.object({
|
|
186492
|
+
id: z.string().min(1).optional(),
|
|
186493
|
+
kind: z.string().min(1),
|
|
186494
|
+
content: z.record(z.string(), z.unknown()).optional()
|
|
186495
|
+
})).optional()
|
|
186496
|
+
});
|
|
186036
186497
|
const sdkFieldSelectOptionSchema = z.object({
|
|
186037
186498
|
value: z.string(),
|
|
186038
186499
|
label: z.string()
|
|
@@ -186224,6 +186685,30 @@ function buildGoLiveDecision(requirements) {
|
|
|
186224
186685
|
function findLaunchOverride(overrides, requirementId) {
|
|
186225
186686
|
return overrides.find((override) => override.requirementId === requirementId) ?? null;
|
|
186226
186687
|
}
|
|
186688
|
+
function deriveLaunchDomainRequirement(siteId, domainState) {
|
|
186689
|
+
const [title, description] = {
|
|
186690
|
+
connected: ["Domain connected", "A domain is already connected."],
|
|
186691
|
+
pending_setup: ["Connect a domain", "You can connect a domain later when you are ready to launch."],
|
|
186692
|
+
pending_verification: ["Domain added — connection pending", "Your domain has been added. Open Domains to check its connection and any remaining DNS steps."],
|
|
186693
|
+
partially_connected: ["Partially connected", "One or both addresses still need attention. Open Domains to see the DNS and secure connection checks."],
|
|
186694
|
+
check_unavailable: ["Domain connection check unavailable", "We couldn’t check your domain connection. Open Domains to check again."]
|
|
186695
|
+
}[domainState.kind];
|
|
186696
|
+
const state = domainState.kind === "connected" ? "complete" : "pending";
|
|
186697
|
+
return requirement({
|
|
186698
|
+
id: "connect_custom_domain",
|
|
186699
|
+
packId: "domain",
|
|
186700
|
+
priority: "optional",
|
|
186701
|
+
owner: "admin",
|
|
186702
|
+
state,
|
|
186703
|
+
title,
|
|
186704
|
+
description,
|
|
186705
|
+
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"),
|
|
186706
|
+
evidence: domainState.kind !== "pending_setup" && domainState.domainIds.length > 0 ? {
|
|
186707
|
+
kind: "domain_connection",
|
|
186708
|
+
domainIds: domainState.domainIds
|
|
186709
|
+
} : evidenceFromDerivedState(state)
|
|
186710
|
+
});
|
|
186711
|
+
}
|
|
186227
186712
|
function deriveLaunchReadiness(input) {
|
|
186228
186713
|
const siteId = input.siteId ?? null;
|
|
186229
186714
|
const overrides = input.overrides ?? [];
|
|
@@ -186327,17 +186812,7 @@ function deriveLaunchReadiness(input) {
|
|
|
186327
186812
|
action: openDashboardPathAction(siteId, "/money/settings", "Connect payments"),
|
|
186328
186813
|
evidence: evidenceFromDerivedState(input.payments.kind === "ready" ? "complete" : "pending")
|
|
186329
186814
|
}));
|
|
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
|
-
}));
|
|
186815
|
+
requirements.push(deriveLaunchDomainRequirement(siteId, input.customDomain));
|
|
186341
186816
|
const goLiveDecision = buildGoLiveDecision(requirements);
|
|
186342
186817
|
return {
|
|
186343
186818
|
requirements,
|
|
@@ -198032,6 +198507,71 @@ function useBlockReorder({ allowReordering, apiClient, siteId, owner, blockList,
|
|
|
198032
198507
|
};
|
|
198033
198508
|
}
|
|
198034
198509
|
//#endregion
|
|
198510
|
+
//#region ../editor-blocks/src/block-editor/colourFieldVisibility.ts
|
|
198511
|
+
/** Only changes form presentation; the validation manifest and saved data stay intact. */
|
|
198512
|
+
function hideUnavailableColourFields(manifest, options) {
|
|
198513
|
+
if (options.colour && options.gradient) return manifest;
|
|
198514
|
+
const hiddenPaths = [];
|
|
198515
|
+
const visit = (fields, parent) => fields.flatMap((field) => {
|
|
198516
|
+
const path = parent ? `${parent}.${field.id}` : field.id;
|
|
198517
|
+
const widget = field.ui?.widget;
|
|
198518
|
+
if (widget === "backgroundColor" && !options.colour || widget === "backgroundGradient" && !options.gradient) {
|
|
198519
|
+
hiddenPaths.push(path);
|
|
198520
|
+
return [];
|
|
198521
|
+
}
|
|
198522
|
+
if (field.type === "group" || field.type === "modal") {
|
|
198523
|
+
const children = visit(field.schema.fields, path);
|
|
198524
|
+
if (!children.length) {
|
|
198525
|
+
hiddenPaths.push(path);
|
|
198526
|
+
return [];
|
|
198527
|
+
}
|
|
198528
|
+
return [{
|
|
198529
|
+
...field,
|
|
198530
|
+
schema: {
|
|
198531
|
+
...field.schema,
|
|
198532
|
+
fields: children
|
|
198533
|
+
}
|
|
198534
|
+
}];
|
|
198535
|
+
}
|
|
198536
|
+
if (field.type === "repeater") return [{
|
|
198537
|
+
...field,
|
|
198538
|
+
...field.schema ? { schema: {
|
|
198539
|
+
...field.schema,
|
|
198540
|
+
fields: visit(field.schema.fields, path)
|
|
198541
|
+
} } : {},
|
|
198542
|
+
...field.itemTypes ? { itemTypes: Object.fromEntries(Object.entries(field.itemTypes).map(([id, item]) => [id, {
|
|
198543
|
+
...item,
|
|
198544
|
+
fields: visit(item.fields, path)
|
|
198545
|
+
}])) } : {}
|
|
198546
|
+
}];
|
|
198547
|
+
if (field.type === "tabGroup") {
|
|
198548
|
+
const tabs = field.tabs.flatMap((tab) => {
|
|
198549
|
+
const children = visit(tab.fields, path);
|
|
198550
|
+
const unavailableTab = tab.sdkSectionOption === "backgroundColor" && !options.colour || tab.sdkSectionOption === "backgroundGradient" && !options.gradient;
|
|
198551
|
+
return children.length && !unavailableTab ? [{
|
|
198552
|
+
...tab,
|
|
198553
|
+
fields: children
|
|
198554
|
+
}] : [];
|
|
198555
|
+
});
|
|
198556
|
+
if (!tabs.length) {
|
|
198557
|
+
hiddenPaths.push(path);
|
|
198558
|
+
return [];
|
|
198559
|
+
}
|
|
198560
|
+
return [{
|
|
198561
|
+
...field,
|
|
198562
|
+
tabs
|
|
198563
|
+
}];
|
|
198564
|
+
}
|
|
198565
|
+
return [field];
|
|
198566
|
+
});
|
|
198567
|
+
const fields = visit(manifest.fields, "");
|
|
198568
|
+
return {
|
|
198569
|
+
...manifest,
|
|
198570
|
+
fields,
|
|
198571
|
+
promotedFields: manifest.promotedFields?.filter((path) => !hiddenPaths.some((hidden) => path === hidden || path.startsWith(`${hidden}.`)))
|
|
198572
|
+
};
|
|
198573
|
+
}
|
|
198574
|
+
//#endregion
|
|
198035
198575
|
//#region ../editor-blocks/src/block-editor/settingsIntent.ts
|
|
198036
198576
|
function isSectionStylesField(field) {
|
|
198037
198577
|
return field.type === "modal" && field.id === "_sectionStyles";
|
|
@@ -198123,13 +198663,14 @@ function prepareBlockEditorManifest(input) {
|
|
|
198123
198663
|
const mergedManifest = mergeManifestWithSdkOptions(input.manifest, input.blockKind, input.blockFieldOptions, input.blockFieldExtensions);
|
|
198124
198664
|
const validationManifest = augmentManifestWithStyleGroups(mergedManifest, input.styleGroups, input.blockKind);
|
|
198125
198665
|
const renderManifestBase = input.visibilityPolicy.kind === "hide-theme-v2-raw-style-fields" ? mergedManifest : validationManifest;
|
|
198666
|
+
const renderManifest = input.visibilityPolicy.kind === "hide-theme-v2-raw-style-fields" ? {
|
|
198667
|
+
...renderManifestBase,
|
|
198668
|
+
fields: renderManifestBase.fields ? hideThemeV2NormalEditorRawStyleFieldsInRenderFields(renderManifestBase.fields) : renderManifestBase.fields,
|
|
198669
|
+
promotedFields: filterThemeV2NormalEditorRawPromotedFields(renderManifestBase.promotedFields, input.allowedPromotedFieldPaths)
|
|
198670
|
+
} : validationManifest;
|
|
198126
198671
|
return {
|
|
198127
198672
|
validationManifest,
|
|
198128
|
-
renderManifest: hideEditorOwnedFields(input.
|
|
198129
|
-
...renderManifestBase,
|
|
198130
|
-
fields: renderManifestBase.fields ? hideThemeV2NormalEditorRawStyleFieldsInRenderFields(renderManifestBase.fields) : renderManifestBase.fields,
|
|
198131
|
-
promotedFields: filterThemeV2NormalEditorRawPromotedFields(renderManifestBase.promotedFields, input.allowedPromotedFieldPaths)
|
|
198132
|
-
} : validationManifest, input.blockKind)
|
|
198673
|
+
renderManifest: hideEditorOwnedFields(input.colourFieldOptions ? hideUnavailableColourFields(renderManifest, input.colourFieldOptions) : renderManifest, input.blockKind)
|
|
198133
198674
|
};
|
|
198134
198675
|
}
|
|
198135
198676
|
//#endregion
|
|
@@ -198176,6 +198717,12 @@ function shouldShowMoveButtons(mode) {
|
|
|
198176
198717
|
return mode === "full";
|
|
198177
198718
|
}
|
|
198178
198719
|
//#endregion
|
|
198720
|
+
//#region ../editor-blocks/src/block-editor/ColourFieldOptionsProvider.tsx
|
|
198721
|
+
const ColourFieldOptionsContext = createContext(void 0);
|
|
198722
|
+
function useColourFieldOptions() {
|
|
198723
|
+
return useContext(ColourFieldOptionsContext);
|
|
198724
|
+
}
|
|
198725
|
+
//#endregion
|
|
198179
198726
|
//#region ../editor-blocks/src/BlockForm.tsx
|
|
198180
198727
|
function focusPathForSignal(signal) {
|
|
198181
198728
|
return signal && signal.kind !== "block" ? normalizeFocusPath(signal.fieldPath) : null;
|
|
@@ -198200,10 +198747,12 @@ function BlockForm({ siteId: _siteId, block, manifest, uiStore, hasRecoveryConfl
|
|
|
198200
198747
|
manifest.promotedFields,
|
|
198201
198748
|
pageDesignBlock
|
|
198202
198749
|
]);
|
|
198750
|
+
const colourFieldOptions = useColourFieldOptions();
|
|
198203
198751
|
const preparedManifest = useMemo(() => prepareBlockEditorManifest({
|
|
198204
198752
|
manifest,
|
|
198205
198753
|
blockKind: block.kind,
|
|
198206
198754
|
styleGroups: theme?.styleGroups,
|
|
198755
|
+
colourFieldOptions,
|
|
198207
198756
|
blockFieldOptions,
|
|
198208
198757
|
blockFieldExtensions,
|
|
198209
198758
|
visibilityPolicy: hideThemeV2RawStyleFields$2 ? hideThemeV2RawStyleFields : showRawStyleFields,
|
|
@@ -198213,6 +198762,7 @@ function BlockForm({ siteId: _siteId, block, manifest, uiStore, hasRecoveryConfl
|
|
|
198213
198762
|
manifest,
|
|
198214
198763
|
block.kind,
|
|
198215
198764
|
theme?.styleGroups,
|
|
198765
|
+
colourFieldOptions,
|
|
198216
198766
|
blockFieldOptions,
|
|
198217
198767
|
blockFieldExtensions,
|
|
198218
198768
|
hideThemeV2RawStyleFields$2
|
|
@@ -198324,8 +198874,10 @@ function useBlockFormFocus({ enabled, focusSignal, formRootRef, onFocusHandled }
|
|
|
198324
198874
|
block: "center"
|
|
198325
198875
|
});
|
|
198326
198876
|
} catch {}
|
|
198327
|
-
|
|
198328
|
-
|
|
198877
|
+
if (path) {
|
|
198878
|
+
target.setAttribute("data-editor-field-highlight", "true");
|
|
198879
|
+
window.setTimeout(() => target.removeAttribute("data-editor-field-highlight"), 1500);
|
|
198880
|
+
}
|
|
198329
198881
|
onFocusHandled?.(focusSignal.requestId);
|
|
198330
198882
|
}, 0);
|
|
198331
198883
|
return () => window.clearTimeout(timer);
|
|
@@ -199318,10 +199870,12 @@ function BlockSettingsModal({ block, manifest, uiStore, widgetOverrides, theme,
|
|
|
199318
199870
|
const focusPath = settingsFocusPath(focusSignal, blockId);
|
|
199319
199871
|
const hasDraftSnapshot = useStoreSelector(uiStore, (state) => blockId ? state.drafts.getBlockSnapshot(blockId) !== null : false);
|
|
199320
199872
|
const { blockFieldOptions, blockFieldExtensions } = useSdkConfig();
|
|
199873
|
+
const colourFieldOptions = useColourFieldOptions();
|
|
199321
199874
|
const preparedManifest = useMemo(() => prepareBlockEditorManifest({
|
|
199322
199875
|
manifest,
|
|
199323
199876
|
blockKind: block.kind,
|
|
199324
199877
|
styleGroups: theme?.styleGroups,
|
|
199878
|
+
colourFieldOptions,
|
|
199325
199879
|
blockFieldOptions,
|
|
199326
199880
|
blockFieldExtensions,
|
|
199327
199881
|
visibilityPolicy: hideThemeV2RawStyleFields$1 ? hideThemeV2RawStyleFields : showRawStyleFields
|
|
@@ -199329,6 +199883,7 @@ function BlockSettingsModal({ block, manifest, uiStore, widgetOverrides, theme,
|
|
|
199329
199883
|
manifest,
|
|
199330
199884
|
block.kind,
|
|
199331
199885
|
theme?.styleGroups,
|
|
199886
|
+
colourFieldOptions,
|
|
199332
199887
|
blockFieldOptions,
|
|
199333
199888
|
blockFieldExtensions,
|
|
199334
199889
|
hideThemeV2RawStyleFields$1
|
|
@@ -199829,7 +200384,7 @@ function menuActionLabel(action) {
|
|
|
199829
200384
|
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
200385
|
const contentId = block.id ? `builder-block-content-${block.id}` : void 0;
|
|
199831
200386
|
return /* @__PURE__ */ jsx(Card, {
|
|
199832
|
-
className:
|
|
200387
|
+
className: "builder-editor-block-card w-full p-0 transition-colors",
|
|
199833
200388
|
"data-block-id": block.id ?? void 0,
|
|
199834
200389
|
"data-editor-block-highlight": highlighted ? "true" : void 0,
|
|
199835
200390
|
children: /* @__PURE__ */ jsxs(Collapsible, {
|
|
@@ -224661,7 +225216,7 @@ function SiteOptionPickerField({ path, backend, config }) {
|
|
|
224661
225216
|
label: config.label,
|
|
224662
225217
|
description: config.description,
|
|
224663
225218
|
error: error?.message,
|
|
224664
|
-
hint: helperText
|
|
225219
|
+
hint: helperText,
|
|
224665
225220
|
children: () => /* @__PURE__ */ jsxs("div", {
|
|
224666
225221
|
className: "space-y-2",
|
|
224667
225222
|
children: [/* @__PURE__ */ jsx(CommandMultiSelect, {
|
|
@@ -224725,6 +225280,12 @@ function SiteOptionPickerField({ path, backend, config }) {
|
|
|
224725
225280
|
//#endregion
|
|
224726
225281
|
//#region ../editor-blocks/src/widgets/site-option-picker/loaders.ts
|
|
224727
225282
|
const siteOptionWidgetLabels = {
|
|
225283
|
+
eventSeries: {
|
|
225284
|
+
loading: "Loading events...",
|
|
225285
|
+
select: "Choose events",
|
|
225286
|
+
empty: "No events available. Create an event in Bookings first.",
|
|
225287
|
+
emptySelection: "Choose at least one event to show in this block."
|
|
225288
|
+
},
|
|
224728
225289
|
eventCategories: {
|
|
224729
225290
|
loading: "Loading categories...",
|
|
224730
225291
|
select: "Select categories",
|
|
@@ -224751,6 +225312,17 @@ function mapEventCategoriesToSiteOptionItems(payload) {
|
|
|
224751
225312
|
subtitle: category.identifier
|
|
224752
225313
|
}));
|
|
224753
225314
|
}
|
|
225315
|
+
function mapEventsToSiteOptionItems(events) {
|
|
225316
|
+
return events.flatMap((event) => event.schedules.kind === "ordinary" ? [{
|
|
225317
|
+
value: event.schedules.schedule.id,
|
|
225318
|
+
label: event.title,
|
|
225319
|
+
subtitle: event.slug
|
|
225320
|
+
}] : event.schedules.runs.filter((run) => (run.status === void 0 || run.status === "active") && (run.visibility === void 0 || run.visibility === "public")).map((run) => ({
|
|
225321
|
+
value: run.id,
|
|
225322
|
+
label: `${event.title} — ${run.title}`,
|
|
225323
|
+
subtitle: run.slug
|
|
225324
|
+
})));
|
|
225325
|
+
}
|
|
224754
225326
|
function mapVenuesToSiteOptionItems(payload) {
|
|
224755
225327
|
return payload.map((venue) => ({
|
|
224756
225328
|
value: venue.id,
|
|
@@ -224766,6 +225338,14 @@ function mapStaffMembersToSiteOptionItems(payload) {
|
|
|
224766
225338
|
}
|
|
224767
225339
|
async function loadSiteOptionItemsFromApi({ apiClient, siteId, source }) {
|
|
224768
225340
|
switch (source) {
|
|
225341
|
+
case "eventSeries": return mapEventsToSiteOptionItems(unwrapResponse(await apiClient({
|
|
225342
|
+
endpoint: "listEvents",
|
|
225343
|
+
params: {
|
|
225344
|
+
siteId,
|
|
225345
|
+
status: "active",
|
|
225346
|
+
visibility: "public"
|
|
225347
|
+
}
|
|
225348
|
+
})));
|
|
224769
225349
|
case "eventCategories": return mapEventCategoriesToSiteOptionItems(unwrapResponse(await apiClient({
|
|
224770
225350
|
endpoint: "listEventCategories",
|
|
224771
225351
|
params: { siteId }
|
|
@@ -224789,6 +225369,7 @@ function createSiteOptionApiLoader(apiClient) {
|
|
|
224789
225369
|
}
|
|
224790
225370
|
function createSiteOptionWidgetAdapters({ loadItems, mapLoadError, renderManageLink }) {
|
|
224791
225371
|
return {
|
|
225372
|
+
eventSeries: createSiteOptionWidgetAdapter("eventSeries", loadItems, mapLoadError, renderManageLink),
|
|
224792
225373
|
eventCategories: createSiteOptionWidgetAdapter("eventCategories", loadItems, mapLoadError, renderManageLink),
|
|
224793
225374
|
venues: createSiteOptionWidgetAdapter("venues", loadItems, mapLoadError, renderManageLink),
|
|
224794
225375
|
staffMembers: createSiteOptionWidgetAdapter("staffMembers", loadItems, mapLoadError, renderManageLink)
|
|
@@ -231307,4 +231888,4 @@ function useSiteChromeCustomizeOptional() {
|
|
|
231307
231888
|
return useContext(SiteChromeCustomizeContext);
|
|
231308
231889
|
}
|
|
231309
231890
|
//#endregion
|
|
231310
|
-
export { FooterComposerPanel as $,
|
|
231891
|
+
export { FooterComposerPanel as $, Pencil as $a, mapCurrentValueForSelect as $i, coerceLinkedContentEntriesPayload as $n, runTransforms as $r, useMultiAutosave as $t, markApplySaving as A, CollapsibleContent as Aa, buttonStyleHoverPreferenceValue as Ai, containerResponsiveThemeCss as An, compileTransitionRuntime as Ar, RichTextField as At, setPaletteColors as B, Button$1 as Ba, parseThemeForPersistence as Bi, compileManifestContentContract as Bn, curatedPalettes as Br, getBlockManifestFromSdkConfig as Bt, cancelPreview as C, Dialog as Ca, isRecord$17 as Ci, deriveLaunchReadiness as Cn, retargetCompiledRuntimeFieldsForContentAdjacency as Cr, ButtonVariantField as Ct, isPreviewingChange as D, DialogHeader as Da, asDesignBlockId as Di, useApiMediaUploader as Dn, curatedSiteStyles as Dr, ReferenceField as Dt, dismissWarnings as E, DialogFooter as Ea, pageDesignEditorBackgroundOverrideOwner as Ei, useMediaEditorOptional as En, componentRuntimeRulesForTheme as Er, MediaField as Et, previewFooterLook as F, DropdownMenuItem as Fa, updateButtonStyleSelectionChoice as Fi, SITE_CHROME_VISIBLE_HEADER_SELECTOR as Fn, gradientToCss as Fr, LinkWidgetProvider as Ft, confirmAutosaveBatch as G, Undo2 as Ga, paletteModeSchema as Gi, escapeStyleContent as Gn, backgroundAppearanceColorTokenNames as Gr, canRedoHistory as Gt, syncStyleConfiguratorState as H, cn$2 as Ha, VARIANT_ROLES as Hi, buildThemeRuntime as Hn, sectionTransitionFamilies as Hr, useEditorUiStore as Ht, previewHeaderLayout as I, DropdownMenuLabel as Ia, buttonStyleSelectionKey as Ii, SITE_OVERLAY_HEADER_CLEARANCE_CSS_VAR as In, GRADIENT_PRESETS as Ir, BlockEditor as It, idleEditorTransactionQueueState as J, Sparkles as Ja, getFieldIntent as Ji, defaultTransforms as Jn, ctaButton as Jr, pushHistoryEntry as Jt, deriveTransactionCapabilities as K, TriangleAlert as Ka, resolveSdkFooterMode as Ki, readBlockComposition as Kn, backgroundAppearanceQuickColorTokenNames as Kr, canUndoHistory as Kt, previewHeaderStyle as L, DropdownMenuSeparator as La, textColorStyle as Li, planSiteOverlayHeaderClearance as Ln, GRADIENT_PRESET_IDS as Lr, hideThemeV2RawStyleFields as Lt, palettePreviewProjection as M, Surface as Ma, findButtonStyleRecipe as Mi, makeDefaultBlockComponent as Mn, findFooterLook as Mr, EditorProvider as Mt, previewButtonStyle as N, DropdownMenu as Na, resolveButtonStyleSelection as Ni, getBlockDefinition as Nn, getHeaderLayout as Nr, useEditor$1 as Nt, markApplyFailed as O, DialogTitle as Oa, assertNever$7 as Oi, isSupportedLoaderEndpoint as On, designRuntimeRulesForTheme as Or, ReferenceWidgetProvider as Ot, previewCuratedPalette as P, DropdownMenuContent as Pa, updateButtonStyleHoverPreference as Pi, projectRecurringSchedule as Pn, getHeaderStyle as Pr, LinkField as Pt, resolvePreviewSidebarTab as Q, Redo2 as Qa, hasEmptyOption as Qi, LINKED_CONTENT_ENTRY_META_KEY as Qn, parseBackgroundContent as Qr, recordsEqual as Qt, previewSiteStyle as R, DropdownMenuTrigger as Ra, defaultThemeTokens as Ri, visibleHeaderClearancePx as Rn, getGradientPreset as Rr, prepareBlockEditorManifest as Rt, applyTypographyDraftPatch as S, TabsTrigger as Sa, isObjectRecord$1 as Si, DEFAULT_LAUNCH_READINESS_INPUT as Sn, retargetCompiledBoundaryRuntimeForContentAdjacency as Sr, EntryPickerWidgetProvider as St, deriveStyleConfiguratorCapabilities as T, DialogDescription as Ta, isThemeV2NormalEditorRawStyleFieldName as Ti, MediaEditorContextProvider as Tn, planPageDesignLayoutLookCompatibility as Tr, FileField as Tt, toggleRow as U, X as Ua, paletteColorEntries as Ui, DEFAULT_THEME_RESPONSIVE_MODE as Un, sectionTransitionFamilyForBoundaryOptionId as Ur, useEditorUiStoreInstance as Ut, styleConfiguratorHistoryEntryForPersistedSelection as V, cva as Va, ORDINARY_TEXT_MIN_CONTRAST_RATIO as Vi, validateManifestDraft as Vn, defaultSectionTransitionVariantForFamily as Vr, classifyHistoryShortcut as Vt, beginAutosaveBatch as W, Upload as Wa, paletteColorsSchema as Wi, getResponsiveScopeSpec as Wn, sectionTransitionVariantForBoundaryOptionId as Wr, useOptionalEditorUiStoreInstance as Wt, resolveStyleConfiguratorInitialSnapshot as X, SlidersHorizontal as Xa, SdkConfigProvider as Xi, resolvePageRouteTarget as Xn, EDITABLE_SURFACE_FORWARDING_PROP as Xr, undoHistory as Xt, rejectAutosaveBatch as Y, Smartphone as Ya, isHeaderField as Yi, resolveEntryRouteTarget as Yn, bindingSchema as Yr, redoHistory as Yt, createOptimisticActionRunner as Z, RotateCcw as Za, useSdkConfig as Zi, resolveRouteTarget as Zn, planSiteChromePlacement as Zr, unsafeAsLinkedContentEntryId as Zt, reportPreviewDesignError as _, PopoverTrigger as _a, BlockApiProvider as _i, MediaEditor as _n, expectParsedBrandedId as _o, heroCopyFragment as _r, loadMailingListAuthoringContext as _t, previewDesignHistoryDomainForCommand as a, TooltipContent as aa, coerceInlineTextWithFallback as ai, parseReferenceKind as an, Image as ao, cardFragment as ar, useUISelector as at, planSiteChromeSelection as b, TabsContent as ba, eventCalendarListLayoutOptions as bi, listEntryPageContentSlots as bn, __exportAll as bo, applyCompiledRuntimeFieldsToContent as br, IconPickerField as bt, selectionSnapshotFromApplySiteStyleSelectionResponse as c, SelectContent as ca, Text$2 as ci, resolveContentTitle as cn, EllipsisVertical as co, blogFeaturedPostFragment as cr, useEntryController as ct, PreviewDesignCoordinatorProvider as d, SelectValue as da, getCurrentResolveImageUrlContext as di, ManifestForm as dn, ChevronDown as do, formCopyFragment as dr, createSiteOptionWidgetAdapters as dt, mapOptionValueForSelect as ea, parseBlockIconValue as ei, useDebouncedLatestSave as en, PenLine as eo, getLinkedContentEntryMeta as er, renderSiteChromeBlock as et, usePreviewDesignCoordinator as f, Callout as fa, resolveImageUrlWithContext as fi, createManifestFormAdapter as fn, Check as fo, testimonialsCarouselFragment as fr, SiteOptionPickerField as ft, PREVIEW_DESIGN_SAVE_ERROR_MESSAGE as g, PopoverContent as ga, siblingPath$1 as gi, createStoreBackend as gn, assertNever$10 as go, ctaRowFragment as gr, MailingListTargetingField as gt, PREVIEW_DESIGN_LOAD_ERROR_MESSAGE as h, Popover as ha, getAtPath as hi, evaluateVisibility as hn, unsafeAsEditorBlockValues as ho, heroCtaRowFragment as hr, OfferingsPreviewWidgetProvider as ht, usePreviewDesignHistoryOrder as i, Tooltip as ia, logger$1 as ii, isAdapterReferenceKind as in, LoaderCircle as io, headingFragment as ir, ContentFieldsForm as it, openRow as j, CollapsibleTrigger as ja, buttonStyleSelectionParameterValue as ji, createCustomBlockRegistry as jn, surfaceResolutionContextFromTheme as jr, RichTextWidgetProvider as jt, markApplySaved as k, Collapsible as ka, makeBoundaryId as ki, ThemeScope as kn, getCuratedSiteStyle as kr, useRichTextImagePicker as kt, deriveSiteStylePreviewUpdate as l, SelectItem as la, RichText as li, PaletteProvider as ln, ChevronRight as lo, singleButtonFragment as lr, useEntryEditorController as lt, usePreviewThemeOverlay as m, SearchInput as ma, SECTION_BACKGROUND_MIN_SOURCE_WIDTH as mi, FormRenderer as mn, unsafeAsEditorBlockId as mo, ctaCopyFragment as mr, OfferingsPreviewGroupOrderField as mt, useSiteChromeCustomizeOptional as n, FieldFrame as na, parseGeneratedIconSetId as ni, createSnapshotFromPageRecord as nn, Monitor as no, ImageResolveContextProvider as nr, PreviewInlineTextEditor as nt, selectPreviewDesignHistoryDomain as o, TooltipTrigger as oa, inlineTextToPlainText as oi, deriveRouteMetadataPresentation as on, GripVertical as oo, faqAccordionFragment as or, EditableBlockProvider as ot, PreviewThemeOverlayProvider as p, CalloutDescription as pa, setContextResolveImageUrlContext as pi, createManifestValidation as pn, parseFooterModuleId as po, testimonialsHeadingFragment as pr, SiteOptionWidgetProvider as pt, enqueueTransaction as q, Tablet as qa, attachRenderableMediaAssetFields as qi, getDefaultComponentRegistry as qn, parseBackgroundAppearanceColorToken as qr, createHistoryState as qt, PreviewDesignHistoryOrderProvider as r, useField as ra, renderInlineText as ri, BUILT_IN_REFERENCE_KINDS as rn, Maximize2 as ro, richTextFragment as rr, PreviewTextEditor as rt, buildApplySiteStyleSelectionBody as s, Select$1 as sa, isInlineTextEmpty as si, resolvePageRouteSlug as sn, Eye as so, faqHeadingFragment as sr, EntryControllerProvider as st, SiteChromeCustomizeProvider as t, unmapValueFromSelect as ta, parseGeneratedIconAssetId as ti, createRoutingHelpers as tn, Palette as to, clientComponentRegistry as tr, PreviewRichTextEditor as tt, planConfiguratorPreview as u, SelectTrigger as ua, buildResolveImageUrlContext as ui, usePalette as un, ChevronLeft as uo, formEmbedFragment as ur, createSiteOptionApiLoader as ut, buildSiteChromeSelectionModels as v, Input as va, calendarWindowQuerySchema as vi, applyPageDesignEditorAction as vn, parseMediaAssetId as vo, bodyCopyFragment as vr, MailingListTargetingProvider as vt, createStyleConfiguratorState as w, DialogContent as wa, corners as wi, AMBIENT_BACKGROUND_ROLES as wn, formatSiteChromeBackgroundTokenLabel as wr, ButtonWidgetProvider as wt, applyResolvedSelections as x, TabsList as xa, bookingConsentCarrierSchema as xi, decodePublicProductCategorySelectorQuery as xn, compileEditorModelRuntime as xr, EntryPickerField as xt, cycleSiteChromeSelectionId as y, Tabs as ya, eventCalendarListLayoutCompatibleDisplayModeValues as yi, getPageDesignEditorState as yn, parseSiteId as yo, defineFragment as yr, InlineTextField as yt, resetTypographyToSaved as z, Primitive as za, themeButtonClassName as zi, resolveVariantKey as zn, parseGradientPresetId as zr, stripTopLevelRoutingUi as zt };
|