@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/client/client.mjs
CHANGED
|
@@ -1578,30 +1578,30 @@ function parseMailingListPlacementTargeting(value) {
|
|
|
1578
1578
|
}
|
|
1579
1579
|
}
|
|
1580
1580
|
function parseMailingListVisitorSelection(value) {
|
|
1581
|
-
if (!isRecord$37(value)) return visitorSelectionError("shape");
|
|
1581
|
+
if (!isRecord$37(value)) return visitorSelectionError$1("shape");
|
|
1582
1582
|
switch (value.provider) {
|
|
1583
1583
|
case "native": {
|
|
1584
1584
|
const topicIds = parseVisitorIds(value.topicIds, parseNewsletterListId);
|
|
1585
|
-
return topicIds === null ? visitorSelectionError("targets") : ok$2({
|
|
1585
|
+
return topicIds === null ? visitorSelectionError$1("targets") : ok$2({
|
|
1586
1586
|
provider: "native",
|
|
1587
1587
|
topicIds
|
|
1588
1588
|
});
|
|
1589
1589
|
}
|
|
1590
1590
|
case "brevo": {
|
|
1591
1591
|
const listIds = parseVisitorIds(value.listIds, parseBrevoListId);
|
|
1592
|
-
return listIds === null ? visitorSelectionError("targets") : ok$2({
|
|
1592
|
+
return listIds === null ? visitorSelectionError$1("targets") : ok$2({
|
|
1593
1593
|
provider: "brevo",
|
|
1594
1594
|
listIds
|
|
1595
1595
|
});
|
|
1596
1596
|
}
|
|
1597
1597
|
case "mailchimp": {
|
|
1598
1598
|
const interestIds = parseVisitorIds(value.interestIds, parseMailchimpInterestId);
|
|
1599
|
-
return interestIds === null ? visitorSelectionError("targets") : ok$2({
|
|
1599
|
+
return interestIds === null ? visitorSelectionError$1("targets") : ok$2({
|
|
1600
1600
|
provider: "mailchimp",
|
|
1601
1601
|
interestIds
|
|
1602
1602
|
});
|
|
1603
1603
|
}
|
|
1604
|
-
default: return visitorSelectionError("provider");
|
|
1604
|
+
default: return visitorSelectionError$1("provider");
|
|
1605
1605
|
}
|
|
1606
1606
|
}
|
|
1607
1607
|
function parseNativeTargeting(selection) {
|
|
@@ -1720,7 +1720,7 @@ function targetingError(field) {
|
|
|
1720
1720
|
field
|
|
1721
1721
|
});
|
|
1722
1722
|
}
|
|
1723
|
-
function visitorSelectionError(field) {
|
|
1723
|
+
function visitorSelectionError$1(field) {
|
|
1724
1724
|
return err$2({
|
|
1725
1725
|
tag: "invalid_mailing_list_visitor_selection",
|
|
1726
1726
|
field
|
|
@@ -3503,7 +3503,10 @@ var init_contentMediaSnapshotAudit = __esmMin((() => {
|
|
|
3503
3503
|
init_contentMediaAudit();
|
|
3504
3504
|
init_contentMediaAuditFieldAdapter();
|
|
3505
3505
|
init_identifiers();
|
|
3506
|
-
}))
|
|
3506
|
+
}));
|
|
3507
|
+
//#endregion
|
|
3508
|
+
//#region ../media-core/src/index.ts
|
|
3509
|
+
var init_src$1 = __esmMin((() => {
|
|
3507
3510
|
init_types$15();
|
|
3508
3511
|
init_fileDomain();
|
|
3509
3512
|
init_fileStorage();
|
|
@@ -3554,6 +3557,14 @@ var init_contentMediaSnapshotAudit = __esmMin((() => {
|
|
|
3554
3557
|
init_contentMediaAudit();
|
|
3555
3558
|
init_contentMediaAuditFieldAdapter();
|
|
3556
3559
|
init_contentMediaSnapshotAudit();
|
|
3560
|
+
}));
|
|
3561
|
+
var footerModeSchema, init_mode = __esmMin((() => {
|
|
3562
|
+
footerModeSchema = z$1.enum([
|
|
3563
|
+
"default",
|
|
3564
|
+
"blocks",
|
|
3565
|
+
"default+blocks",
|
|
3566
|
+
"none"
|
|
3567
|
+
]);
|
|
3557
3568
|
})), hotspotSchema, rotationSchema, rectSchema, aspectCropSchema, transformSchema, mediaPosterSchema, mediaBaseSchema, mediaIdentifierSchema, imageMediaSchema, videoMediaSchema, audioMediaSchema, documentMediaSchema, spreadsheetMediaSchema, archiveMediaSchema, mediaSchema, persistableMediaBaseSchema;
|
|
3558
3569
|
var init_media$2 = __esmMin((() => {
|
|
3559
3570
|
hotspotSchema = z$1.object({
|
|
@@ -5078,7 +5089,7 @@ var init_buttonColourContract = __esmMin((() => {
|
|
|
5078
5089
|
nonTextMinimumRatio: 3,
|
|
5079
5090
|
gradientSamplesPerSegment: 20,
|
|
5080
5091
|
alphaBackgrounds: "reject-without-known-surface",
|
|
5081
|
-
disabled: "
|
|
5092
|
+
disabled: "validated-colour-pair-with-muted-control-opacity"
|
|
5082
5093
|
};
|
|
5083
5094
|
}));
|
|
5084
5095
|
//#endregion
|
|
@@ -5650,6 +5661,12 @@ var init_parseThemeForPersistence = __esmMin((() => {
|
|
|
5650
5661
|
init_types$14();
|
|
5651
5662
|
}));
|
|
5652
5663
|
//#endregion
|
|
5664
|
+
//#region ../theme-core/src/buttons/affordanceSuppression.ts
|
|
5665
|
+
var AFFORDANCE_SUPPRESS_CLASS;
|
|
5666
|
+
var init_affordanceSuppression = __esmMin((() => {
|
|
5667
|
+
AFFORDANCE_SUPPRESS_CLASS = "rb-affordance-off";
|
|
5668
|
+
}));
|
|
5669
|
+
//#endregion
|
|
5653
5670
|
//#region ../theme-core/src/buttons/classNames.ts
|
|
5654
5671
|
/**
|
|
5655
5672
|
* Parse content/runtime variant identifiers into the closed theme-button class
|
|
@@ -5682,7 +5699,29 @@ function themeButtonClassName(spec) {
|
|
|
5682
5699
|
spec.extraClassName
|
|
5683
5700
|
].filter(Boolean).join(" ");
|
|
5684
5701
|
}
|
|
5702
|
+
/**
|
|
5703
|
+
* Button classes for an authored button that renders its own trailing icon.
|
|
5704
|
+
*
|
|
5705
|
+
* A separate function rather than a flag on `themeButtonClassName`, because
|
|
5706
|
+
* there is exactly one caller and it should stay visible in a diff. The name
|
|
5707
|
+
* states what the caller knows to be true of its own markup — that it renders a
|
|
5708
|
+
* trailing icon — rather than what the theme does about it. The consequence is
|
|
5709
|
+
* the theme's to decide and to change; a caller naming the consequence would be
|
|
5710
|
+
* asserting a policy it does not own, and would quietly become a lie the moment
|
|
5711
|
+
* that policy moved.
|
|
5712
|
+
*
|
|
5713
|
+
* Do not reach for this to remove an arrow you simply do not want. A trailing
|
|
5714
|
+
* affordance is declared by the button style, and a block overriding that is the
|
|
5715
|
+
* defect this replaced.
|
|
5716
|
+
*/
|
|
5717
|
+
function themeButtonClassNameWithTrailingIcon(spec) {
|
|
5718
|
+
return themeButtonClassName({
|
|
5719
|
+
...spec,
|
|
5720
|
+
extraClassName: [spec.extraClassName, AFFORDANCE_SUPPRESS_CLASS].filter(Boolean).join(" ")
|
|
5721
|
+
});
|
|
5722
|
+
}
|
|
5685
5723
|
var init_classNames = __esmMin((() => {
|
|
5724
|
+
init_affordanceSuppression();
|
|
5686
5725
|
init_types$14();
|
|
5687
5726
|
}));
|
|
5688
5727
|
//#endregion
|
|
@@ -8222,8 +8261,7 @@ var init_resolvedButtonCss = __esmMin((() => {
|
|
|
8222
8261
|
["cursor", "not-allowed"],
|
|
8223
8262
|
["transform", "none"],
|
|
8224
8263
|
["box-shadow", "none"],
|
|
8225
|
-
["
|
|
8226
|
-
["outline-offset", "-4px"]
|
|
8264
|
+
["opacity", "0.55"]
|
|
8227
8265
|
];
|
|
8228
8266
|
}));
|
|
8229
8267
|
//#endregion
|
|
@@ -8561,7 +8599,7 @@ function resolveBoxShadow(variant, global, theme, tokens) {
|
|
|
8561
8599
|
const color = shadowConfig.colorToken ? tokens.getColor(shadowConfig.colorToken) : void 0;
|
|
8562
8600
|
return generateShadowValue$1(shadowConfig.elevation, shadowConfig.softness, shadowConfig.position ?? "bottom", color);
|
|
8563
8601
|
}
|
|
8564
|
-
var
|
|
8602
|
+
var BUTTON_SIZE_NAMES, LETTER_SPACING_MAP, STRUCTURAL_DECLARATIONS;
|
|
8565
8603
|
var init_generateButtonCss = __esmMin((() => {
|
|
8566
8604
|
init_types$14();
|
|
8567
8605
|
init_classNames();
|
|
@@ -8576,7 +8614,7 @@ var init_generateButtonCss = __esmMin((() => {
|
|
|
8576
8614
|
init_resolveButtonColourStates();
|
|
8577
8615
|
init_resolvedButtonCss();
|
|
8578
8616
|
init_buttonSurfaceContext();
|
|
8579
|
-
|
|
8617
|
+
init_affordanceSuppression();
|
|
8580
8618
|
BUTTON_SIZE_NAMES = buttonSizeNameSchema.options;
|
|
8581
8619
|
LETTER_SPACING_MAP = {
|
|
8582
8620
|
tight: "-0.025em",
|
|
@@ -11043,14 +11081,12 @@ function generateVariantCSS(variant, themeId, cardClasses, tokens, theme) {
|
|
|
11043
11081
|
const shadowValue = generateShadowValue(shadow);
|
|
11044
11082
|
rules.push(`box-shadow: ${shadowValue}`);
|
|
11045
11083
|
}
|
|
11046
|
-
|
|
11047
|
-
rules.push(`flex-direction: column`);
|
|
11048
|
-
rules.push(`position: relative`);
|
|
11049
|
-
rules.push(`overflow: visible`);
|
|
11084
|
+
const structureSelector = cardClasses.map((cardClass) => `:where([data-theme-scope="${themeId}"]) :where(.${cardClass})`).join(",\n");
|
|
11050
11085
|
const mediaRadius = MEDIA_CORNER_MAP[corners];
|
|
11051
11086
|
const mediaRules = [`border-top-left-radius: ${mediaRadius}`, `border-top-right-radius: ${mediaRadius}`];
|
|
11052
11087
|
const contentRules = [`padding: ${resolveContentPadding(variant)}`];
|
|
11053
11088
|
return [
|
|
11089
|
+
`${structureSelector} {\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: visible;\n}`,
|
|
11054
11090
|
`${containerSelector} {\n ${rules.join(";\n ")};\n}`,
|
|
11055
11091
|
...cardDecorationPseudoRules(containerSelectors, variant.decorations, resolveColor),
|
|
11056
11092
|
`${fallbackBackgroundSelector} {\n background: transparent;\n}`,
|
|
@@ -12394,8 +12430,9 @@ var init_boxBackgroundSchema = __esmMin((() => {
|
|
|
12394
12430
|
showVideoOnMobile: z$1.boolean().nullable().optional()
|
|
12395
12431
|
})
|
|
12396
12432
|
]);
|
|
12397
|
-
})), axesSchema, typographyStyleSchema, bodyTypographyStyleSchema, headingSizeSchema, headingTypographyOverridesSchema, headingTypographyStyleSchema, proseLinkUnderlineStyleSchema, proseLinkUnderlineThicknessSchema, proseLinkUnderlineOffsetSchema, proseLinkStyleSchema, semanticSpacingSchema, boxRoundedSchema, noHeadingDecorationSchema, visibleHeadingDecorationSchema, headingDecorationSchema, headingDecorationOverrideSchema, accordionIconTreatmentSchema, sectionStylesOverrideSchema, containerStylesOverrideSchema, cardBorderOverrideSchema, cardStylesOverrideSchema, blockStyleOverridesSchema, blockThemeOverrideSchema, typographyScaleSchema, eyebrowTypographyStyleSchema, typographySchema, spaceSchema, corners, shadow, border, motion, inputStyle, headerPositioningValues, headerPositioning, headerNavStyle, navFontWeight, headerMaxWidth, headerBorderSchema, logoStyleSchema, headerLogoTextSchema, dropdownStyleSchema, headerCtaGapSchema, headerCtaTreatmentSchema, navContainerSchema, headerBackgroundSchema, headerSchema, footerVariant, footerMaxWidth,
|
|
12433
|
+
})), axesSchema, typographyStyleSchema, bodyTypographyStyleSchema, headingSizeSchema, headingTypographyOverridesSchema, headingTypographyStyleSchema, proseLinkUnderlineStyleSchema, proseLinkUnderlineThicknessSchema, proseLinkUnderlineOffsetSchema, proseLinkStyleSchema, semanticSpacingSchema, boxRoundedSchema, noHeadingDecorationSchema, visibleHeadingDecorationSchema, headingDecorationSchema, headingDecorationOverrideSchema, accordionIconTreatmentSchema, sectionStylesOverrideSchema, containerStylesOverrideSchema, cardBorderOverrideSchema, cardStylesOverrideSchema, blockStyleOverridesSchema, blockThemeOverrideSchema, typographyScaleSchema, eyebrowTypographyStyleSchema, typographySchema, spaceSchema, corners, shadow, border, motion, inputStyle, headerPositioningValues, headerPositioning, headerNavStyle, navFontWeight, headerMaxWidth, headerBorderSchema, logoStyleSchema, headerLogoTextSchema, dropdownStyleSchema, headerCtaGapSchema, headerCtaTreatmentSchema, navContainerSchema, headerBackgroundSchema, headerSchema, footerVariant, footerMaxWidth, footerNavLayoutMode, footerNavLayoutAlign, footerSpacing, footerLogoPlacement, footerLogoSize, footerLogoMaxHeight, footerBottomTextLinkStyleSchema, footerBottomBarSchema, footerNavLayoutSchema, footerLogoSchema, footerSchema, containerPaddingPresetSchema, layoutSchema, heroTypographySizeSchema, heroTypographyLineHeightSchema, heroResponsiveTypographySchema, heroTypographySchema, heroSchema, bodyTextIntroTypographySizeSchema, bodyTextSchema, testimonialQuoteTreatmentSchema, themeSchema;
|
|
12398
12434
|
var init_schema$2 = __esmMin((() => {
|
|
12435
|
+
init_mode();
|
|
12399
12436
|
init_media$2();
|
|
12400
12437
|
init_schema$3();
|
|
12401
12438
|
init_buttons();
|
|
@@ -12894,12 +12931,6 @@ var init_schema$2 = __esmMin((() => {
|
|
|
12894
12931
|
"split"
|
|
12895
12932
|
]);
|
|
12896
12933
|
footerMaxWidth = z$1.enum(["container", "full"]);
|
|
12897
|
-
footerMode = z$1.enum([
|
|
12898
|
-
"default",
|
|
12899
|
-
"blocks",
|
|
12900
|
-
"default+blocks",
|
|
12901
|
-
"none"
|
|
12902
|
-
]);
|
|
12903
12934
|
footerNavLayoutMode = z$1.enum([
|
|
12904
12935
|
"stack",
|
|
12905
12936
|
"inline",
|
|
@@ -12988,9 +13019,9 @@ var init_schema$2 = __esmMin((() => {
|
|
|
12988
13019
|
/**
|
|
12989
13020
|
* SDK-only footer rendering mode.
|
|
12990
13021
|
*
|
|
12991
|
-
*
|
|
13022
|
+
* Historical persisted field; SDK rendering mode now lives in layout.footerMode.
|
|
12992
13023
|
*/
|
|
12993
|
-
mode:
|
|
13024
|
+
mode: footerModeSchema.optional(),
|
|
12994
13025
|
variant: footerVariant,
|
|
12995
13026
|
maxWidth: footerMaxWidth,
|
|
12996
13027
|
showLogoText: z$1.boolean().optional(),
|
|
@@ -13580,6 +13611,15 @@ var init_schemas = __esmMin((() => {
|
|
|
13580
13611
|
timeZone: z$1.string(),
|
|
13581
13612
|
pricing: publicEventPricingSchema,
|
|
13582
13613
|
paymentTerms: blockBookingPaymentTermsSchema,
|
|
13614
|
+
cancellationPolicy: z$1.object({ refunds: z$1.object({
|
|
13615
|
+
mode: z$1.enum([
|
|
13616
|
+
"never",
|
|
13617
|
+
"always",
|
|
13618
|
+
"cutoff"
|
|
13619
|
+
]),
|
|
13620
|
+
cutoffHours: z$1.number(),
|
|
13621
|
+
method: z$1.enum(["original_payment_method", "site_credit"])
|
|
13622
|
+
}) }),
|
|
13583
13623
|
consent: blockBookingConsentSchema.nullable(),
|
|
13584
13624
|
accessRestriction: accessRestrictionSchema,
|
|
13585
13625
|
allowedCategoryIds: z$1.array(z$1.string()),
|
|
@@ -13745,6 +13785,7 @@ function calendarQueryKey(siteId, stage, filters) {
|
|
|
13745
13785
|
filters.eventSurface ?? "all",
|
|
13746
13786
|
normalizedCsv(filters.eventPresets),
|
|
13747
13787
|
filters.scheduleScope ?? "any",
|
|
13788
|
+
...filters.seriesIds === void 0 ? [] : [normalizedCsv(filters.seriesIds)],
|
|
13748
13789
|
normalizedCsv(filters.categoryIds),
|
|
13749
13790
|
normalizeCalendarFilterId(filters.venueId) ?? "",
|
|
13750
13791
|
normalizeCalendarFilterId(filters.staffMemberId) ?? "",
|
|
@@ -13822,6 +13863,7 @@ var init_calendarWindow = __esmMin((() => {
|
|
|
13822
13863
|
eventSurface: z$1.enum(eventSurfaceScopeValues).optional(),
|
|
13823
13864
|
eventPresets: z$1.string().optional(),
|
|
13824
13865
|
scheduleScope: z$1.enum(eventScheduleScopeValues).optional(),
|
|
13866
|
+
seriesIds: z$1.string().optional(),
|
|
13825
13867
|
categoryIds: z$1.string().optional(),
|
|
13826
13868
|
venueId: z$1.string().transform(normalizeCalendarFilterId).optional(),
|
|
13827
13869
|
staffMemberId: z$1.string().transform(normalizeCalendarFilterId).optional()
|
|
@@ -21362,6 +21404,10 @@ var init_headerOpeningForeground = __esmMin((() => {
|
|
|
21362
21404
|
init_colorTokenParts();
|
|
21363
21405
|
init_types$8();
|
|
21364
21406
|
}));
|
|
21407
|
+
var init_effectivePageDesign = __esmMin((() => {
|
|
21408
|
+
init_pageDesignIntent();
|
|
21409
|
+
init_siteStyleBlockPolicies();
|
|
21410
|
+
}));
|
|
21365
21411
|
function validateBlockSequence(snapshots, ctx) {
|
|
21366
21412
|
for (const issue of collectBlockSequenceIssues(snapshots)) ctx.addIssue(issue);
|
|
21367
21413
|
}
|
|
@@ -21638,6 +21684,7 @@ var init_site_styles = __esmMin((() => {
|
|
|
21638
21684
|
init_lookResolution();
|
|
21639
21685
|
init_lookOptionGroups();
|
|
21640
21686
|
init_logoBranding();
|
|
21687
|
+
init_effectivePageDesign();
|
|
21641
21688
|
init_pageDesignAuthority();
|
|
21642
21689
|
init_pageDesignEditorErrors();
|
|
21643
21690
|
init_pageDesignEditorCapabilities();
|
|
@@ -23936,6 +23983,7 @@ var init_schema = __esmMin((() => {
|
|
|
23936
23983
|
];
|
|
23937
23984
|
siteOptionSources = [
|
|
23938
23985
|
"eventCategories",
|
|
23986
|
+
"eventSeries",
|
|
23939
23987
|
"venues",
|
|
23940
23988
|
"staffMembers"
|
|
23941
23989
|
];
|
|
@@ -28883,6 +28931,38 @@ var init_booking_form_interactive = __esmMin((() => {
|
|
|
28883
28931
|
});
|
|
28884
28932
|
}));
|
|
28885
28933
|
//#endregion
|
|
28934
|
+
//#region ../blocks/src/system/blocks/events/shared/eventSelection.ts
|
|
28935
|
+
/** Invalid saved selections fail closed rather than widening discovery. */
|
|
28936
|
+
function resolveEventSelection(mode, value) {
|
|
28937
|
+
if (mode !== "selected") return { kind: "matching" };
|
|
28938
|
+
const candidates = Array.isArray(value) ? value : typeof value === "string" ? value.split(",").filter(Boolean) : [];
|
|
28939
|
+
const ids = [];
|
|
28940
|
+
for (const candidate of candidates) {
|
|
28941
|
+
if (typeof candidate !== "string") return {
|
|
28942
|
+
kind: "selected",
|
|
28943
|
+
seriesIds: []
|
|
28944
|
+
};
|
|
28945
|
+
const parsed = parseEventSeriesId(candidate.trim());
|
|
28946
|
+
if (!parsed.ok) return {
|
|
28947
|
+
kind: "selected",
|
|
28948
|
+
seriesIds: []
|
|
28949
|
+
};
|
|
28950
|
+
ids.push(parsed.value);
|
|
28951
|
+
}
|
|
28952
|
+
return {
|
|
28953
|
+
kind: "selected",
|
|
28954
|
+
seriesIds: [...new Set(ids)].sort()
|
|
28955
|
+
};
|
|
28956
|
+
}
|
|
28957
|
+
/** Undefined means discovery; an empty string is an explicitly empty selection. */
|
|
28958
|
+
function eventSeriesScopeCsv(value) {
|
|
28959
|
+
if (value == null) return void 0;
|
|
28960
|
+
return typeof value === "string" ? value : value.join(",");
|
|
28961
|
+
}
|
|
28962
|
+
var init_eventSelection = __esmMin((() => {
|
|
28963
|
+
init_src$2();
|
|
28964
|
+
}));
|
|
28965
|
+
//#endregion
|
|
28886
28966
|
//#region ../blocks/src/system/runtime/nodes/events/domain/capacity.ts
|
|
28887
28967
|
/**
|
|
28888
28968
|
* Compute remaining spots for an event from `availableSpots` with a fallback
|
|
@@ -31542,12 +31622,12 @@ var init_EventCompactRow = __esmMin((() => {
|
|
|
31542
31622
|
}), cta.hidden ? /* @__PURE__ */ jsx("span", {
|
|
31543
31623
|
className: "event-compact-row-status",
|
|
31544
31624
|
children: cta.label
|
|
31545
|
-
}) : /* @__PURE__ */
|
|
31625
|
+
}) : /* @__PURE__ */ jsx("a", {
|
|
31546
31626
|
href: cta.href,
|
|
31547
31627
|
target: cta.external ? "_blank" : void 0,
|
|
31548
31628
|
rel: cta.external ? "noopener noreferrer" : void 0,
|
|
31549
31629
|
className: `${buttonClass} event-compact-row-cta`,
|
|
31550
|
-
children:
|
|
31630
|
+
children: /* @__PURE__ */ jsx("span", { children: cta.label })
|
|
31551
31631
|
})]
|
|
31552
31632
|
})]
|
|
31553
31633
|
})]
|
|
@@ -31852,6 +31932,7 @@ function normalizeFilterId(value) {
|
|
|
31852
31932
|
return id === "all" ? void 0 : id;
|
|
31853
31933
|
}
|
|
31854
31934
|
function buildEventRuntimeFilters(input) {
|
|
31935
|
+
if (input.seriesIds != null) return { seriesIds: input.seriesIds };
|
|
31855
31936
|
const params = {};
|
|
31856
31937
|
if (input.eventSurface && input.eventSurface !== "all") params.eventSurface = input.eventSurface;
|
|
31857
31938
|
const eventPresets = normalizeCsvString(input.filterEventPresets);
|
|
@@ -31867,6 +31948,7 @@ function buildEventRuntimeFilters(input) {
|
|
|
31867
31948
|
}
|
|
31868
31949
|
function getEventRuntimeFiltersKey(filters) {
|
|
31869
31950
|
return JSON.stringify({
|
|
31951
|
+
seriesIds: filters?.seriesIds == null ? null : [...new Set(filters.seriesIds.split(",").filter(Boolean))].sort().join(","),
|
|
31870
31952
|
categoryIds: normalizeCsvString(filters?.categoryIds),
|
|
31871
31953
|
staffMemberId: normalizeOptionalId(filters?.staffMemberId),
|
|
31872
31954
|
venueId: normalizeOptionalId(filters?.venueId),
|
|
@@ -31927,11 +32009,15 @@ function buildEventCollectionDisplay(source) {
|
|
|
31927
32009
|
};
|
|
31928
32010
|
}
|
|
31929
32011
|
function buildEventCollectionFilterDisplay(source) {
|
|
31930
|
-
|
|
31931
|
-
|
|
31932
|
-
|
|
31933
|
-
|
|
31934
|
-
|
|
32012
|
+
const selected = source.seriesIds != null;
|
|
32013
|
+
const matchingFilters = selected ? {
|
|
32014
|
+
eventSurface: "all",
|
|
32015
|
+
filterEventPresets: null,
|
|
32016
|
+
scheduleScope: "any",
|
|
32017
|
+
filterCategoryIds: null,
|
|
32018
|
+
filterStaffMemberId: null,
|
|
32019
|
+
filterVenueId: null
|
|
32020
|
+
} : {
|
|
31935
32021
|
eventSurface: normalizeEventSurfaceScope(source.eventSurface),
|
|
31936
32022
|
filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
31937
32023
|
scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
|
|
@@ -31939,6 +32025,14 @@ function buildEventCollectionFilterDisplay(source) {
|
|
|
31939
32025
|
filterStaffMemberId: normalizeEventStaffMemberId(source.filterStaffMemberId),
|
|
31940
32026
|
filterVenueId: normalizeEventVenueId(source.filterVenueId)
|
|
31941
32027
|
};
|
|
32028
|
+
return {
|
|
32029
|
+
seriesIds: eventSeriesScopeCsv(source.seriesIds),
|
|
32030
|
+
showFilters: selected ? false : source.showFilters ?? true,
|
|
32031
|
+
showCategoryFilter: source.showCategoryFilter ?? "auto",
|
|
32032
|
+
showVenueFilter: source.showVenueFilter ?? false,
|
|
32033
|
+
showStaffFilter: source.showStaffFilter ?? true,
|
|
32034
|
+
...matchingFilters
|
|
32035
|
+
};
|
|
31942
32036
|
}
|
|
31943
32037
|
function buildEventCollectionPresentationDisplay(source) {
|
|
31944
32038
|
return {
|
|
@@ -31953,14 +32047,15 @@ function buildEventCollectionPresentationDisplay(source) {
|
|
|
31953
32047
|
}
|
|
31954
32048
|
function buildEventCollectionHydration(source, now = /* @__PURE__ */ new Date()) {
|
|
31955
32049
|
const timeZone = source.calendarWindow?.scope.timeZone ?? toBookingTimeZone(source.bookingTimeZone);
|
|
32050
|
+
const selected = source.seriesIds != null;
|
|
31956
32051
|
return {
|
|
31957
32052
|
calendarWindow: source.calendarWindow ?? void 0,
|
|
31958
32053
|
siteId: source.siteId,
|
|
31959
32054
|
stage: source.stage,
|
|
31960
32055
|
prefetchedEvents: source.events != null,
|
|
31961
|
-
eventSurface: normalizeEventSurfaceScope(source.eventSurface),
|
|
31962
|
-
filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
31963
|
-
scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
|
|
32056
|
+
eventSurface: selected ? "all" : normalizeEventSurfaceScope(source.eventSurface),
|
|
32057
|
+
filterEventPresets: selected ? null : normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
32058
|
+
scheduleScope: selected ? "any" : normalizeEventScheduleScope(source.scheduleScope),
|
|
31964
32059
|
calendarContext: {
|
|
31965
32060
|
timeZone,
|
|
31966
32061
|
initialToday: source.calendarWindow?.initialToday ?? getLocalScheduleDate(now, timeZone)
|
|
@@ -31989,6 +32084,7 @@ function buildEventCollectionListingDisplay(display, prefetchedEvents, className
|
|
|
31989
32084
|
}
|
|
31990
32085
|
var eventSurfaceScopeSchema$1, eventScheduleScopeSchema$1, eventCollectionFilterSourceSchemaShape, eventCollectionSourceSchemaShape, eventCollectionDisplaySchemaShape, eventCollectionHydrationSchema;
|
|
31991
32086
|
var init_eventCollectionContract = __esmMin((() => {
|
|
32087
|
+
init_eventSelection();
|
|
31992
32088
|
init_calendarWindow();
|
|
31993
32089
|
init_cards();
|
|
31994
32090
|
init_src$2();
|
|
@@ -32007,6 +32103,7 @@ var init_eventCollectionContract = __esmMin((() => {
|
|
|
32007
32103
|
eventSurface: eventSurfaceScopeSchema$1.nullable().optional(),
|
|
32008
32104
|
filterEventPresets: z$1.union([z$1.string(), z$1.array(z$1.string())]).nullable().optional(),
|
|
32009
32105
|
scheduleScope: eventScheduleScopeSchema$1.nullable().optional(),
|
|
32106
|
+
seriesIds: z$1.union([z$1.string(), z$1.array(z$1.string())]).nullable().optional(),
|
|
32010
32107
|
filterCategoryIds: z$1.union([z$1.string(), z$1.array(z$1.string())]).nullable().optional(),
|
|
32011
32108
|
filterStaffMemberId: z$1.string().nullable().optional(),
|
|
32012
32109
|
filterVenueId: z$1.string().nullable().optional()
|
|
@@ -32053,6 +32150,7 @@ var init_eventCollectionContract = __esmMin((() => {
|
|
|
32053
32150
|
eventSurface: eventSurfaceScopeSchema$1,
|
|
32054
32151
|
filterEventPresets: z$1.string().nullable(),
|
|
32055
32152
|
scheduleScope: eventScheduleScopeSchema$1,
|
|
32153
|
+
seriesIds: z$1.string().nullable().optional(),
|
|
32056
32154
|
filterCategoryIds: z$1.string().nullable(),
|
|
32057
32155
|
filterStaffMemberId: z$1.string().nullable(),
|
|
32058
32156
|
filterVenueId: z$1.string().nullable(),
|
|
@@ -32098,6 +32196,7 @@ function buildEventListingInteractiveIslandProps(props) {
|
|
|
32098
32196
|
}
|
|
32099
32197
|
var cardOrientationSchema, eventSurfaceScopeSchema, eventScheduleScopeSchema, eventListingSourceSchema, eventListingDisplaySchema, eventListingHydrationSchema, eventListingRenderSchema, eventListingIslandMetaCodec, eventListingBlockRuntime, eventListingIslandMetaKeys, eventListingInteractiveIslandPropsCodec;
|
|
32100
32198
|
var init_EventListing_interactive = __esmMin((() => {
|
|
32199
|
+
init_eventSelection();
|
|
32101
32200
|
init_cards();
|
|
32102
32201
|
init_schemas();
|
|
32103
32202
|
init_shared$3();
|
|
@@ -32164,6 +32263,7 @@ var init_EventListing_interactive = __esmMin((() => {
|
|
|
32164
32263
|
eventSurface: eventSurfaceScopeSchema,
|
|
32165
32264
|
filterEventPresets: z$1.string().nullable(),
|
|
32166
32265
|
scheduleScope: eventScheduleScopeSchema,
|
|
32266
|
+
seriesIds: z$1.string().nullable().optional(),
|
|
32167
32267
|
filterCategoryIds: z$1.string().nullable().optional(),
|
|
32168
32268
|
filterStaffMemberId: z$1.string().nullable().optional(),
|
|
32169
32269
|
filterVenueId: z$1.string().nullable().optional(),
|
|
@@ -32224,6 +32324,7 @@ var init_EventListing_interactive = __esmMin((() => {
|
|
|
32224
32324
|
eventSurface: normalizeEventSurfaceScope(source.eventSurface),
|
|
32225
32325
|
filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
32226
32326
|
scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
|
|
32327
|
+
seriesIds: eventSeriesScopeCsv(source.seriesIds),
|
|
32227
32328
|
filterCategoryIds: normalizeEventCategoryIdsCsv(source.filterCategoryIds),
|
|
32228
32329
|
filterStaffMemberId: normalizeEventStaffMemberId(source.filterStaffMemberId),
|
|
32229
32330
|
filterVenueId: normalizeEventVenueId(source.filterVenueId),
|
|
@@ -32297,6 +32398,7 @@ function buildEventCalendarListingRender(render, className = render.display.clas
|
|
|
32297
32398
|
eventSurface: display.eventSurface,
|
|
32298
32399
|
filterEventPresets: display.filterEventPresets,
|
|
32299
32400
|
scheduleScope: display.scheduleScope,
|
|
32401
|
+
seriesIds: display.seriesIds,
|
|
32300
32402
|
filterCategoryIds: display.filterCategoryIds,
|
|
32301
32403
|
filterStaffMemberId: display.filterStaffMemberId,
|
|
32302
32404
|
filterVenueId: display.filterVenueId,
|
|
@@ -41302,13 +41404,6 @@ const API_ENDPOINTS$1 = {
|
|
|
41302
41404
|
auth: "service",
|
|
41303
41405
|
responseKind: "json"
|
|
41304
41406
|
},
|
|
41305
|
-
sdkCatalogTheme: {
|
|
41306
|
-
path: "/sdk/{siteId}/catalog/theme",
|
|
41307
|
-
method: "GET",
|
|
41308
|
-
errors: ["server:internal_error"],
|
|
41309
|
-
auth: "service",
|
|
41310
|
-
responseKind: "json"
|
|
41311
|
-
},
|
|
41312
41407
|
sdkCatalogBlocks: {
|
|
41313
41408
|
path: "/sdk/{siteId}/catalog/blocks",
|
|
41314
41409
|
method: "GET",
|
|
@@ -41369,12 +41464,6 @@ const API_ENDPOINTS$1 = {
|
|
|
41369
41464
|
auth: "service",
|
|
41370
41465
|
responseKind: "json"
|
|
41371
41466
|
},
|
|
41372
|
-
sdkPullTheme: {
|
|
41373
|
-
path: "/sdk/{siteId}/pull/theme",
|
|
41374
|
-
method: "GET",
|
|
41375
|
-
auth: "service",
|
|
41376
|
-
responseKind: "json"
|
|
41377
|
-
},
|
|
41378
41467
|
sdkPullFooter: {
|
|
41379
41468
|
path: "/sdk/{siteId}/pull/footer",
|
|
41380
41469
|
method: "GET",
|
|
@@ -41481,30 +41570,6 @@ const API_ENDPOINTS$1 = {
|
|
|
41481
41570
|
auth: "service",
|
|
41482
41571
|
responseKind: "json"
|
|
41483
41572
|
},
|
|
41484
|
-
sdkUpsertTheme: {
|
|
41485
|
-
path: "/sdk/{siteId}/theme",
|
|
41486
|
-
method: "POST",
|
|
41487
|
-
auth: "service",
|
|
41488
|
-
responseKind: "json",
|
|
41489
|
-
errors: [
|
|
41490
|
-
"validation:invalid_input",
|
|
41491
|
-
"resource:not_found",
|
|
41492
|
-
"resource:conflict",
|
|
41493
|
-
"server:internal_error"
|
|
41494
|
-
]
|
|
41495
|
-
},
|
|
41496
|
-
sdkApplySiteStyleSelection: {
|
|
41497
|
-
path: "/sdk/{siteId}/theme/style-selection/apply",
|
|
41498
|
-
method: "POST",
|
|
41499
|
-
auth: "service",
|
|
41500
|
-
responseKind: "json",
|
|
41501
|
-
errors: [
|
|
41502
|
-
"validation:invalid_input",
|
|
41503
|
-
"resource:not_found",
|
|
41504
|
-
"resource:conflict",
|
|
41505
|
-
"server:internal_error"
|
|
41506
|
-
]
|
|
41507
|
-
},
|
|
41508
41573
|
sdkUpsertFooter: {
|
|
41509
41574
|
path: "/sdk/{siteId}/footer",
|
|
41510
41575
|
method: "POST",
|
|
@@ -44583,6 +44648,27 @@ const headerRuntimeTransforms = [{
|
|
|
44583
44648
|
init_events$2();
|
|
44584
44649
|
init_core$1();
|
|
44585
44650
|
init_calendarWindow();
|
|
44651
|
+
init_eventSelection();
|
|
44652
|
+
const eventCalendarSelectionParam = {
|
|
44653
|
+
id: "events.calendarSelectionParam",
|
|
44654
|
+
kind: "formatter",
|
|
44655
|
+
summary: "Resolve selected events instead of discovery filters",
|
|
44656
|
+
schema: z$1.object({ key: z$1.enum([
|
|
44657
|
+
"seriesIds",
|
|
44658
|
+
"eventSurface",
|
|
44659
|
+
"filterEventPresets",
|
|
44660
|
+
"scheduleScope",
|
|
44661
|
+
"filterCategoryIds",
|
|
44662
|
+
"filterStaffMemberId",
|
|
44663
|
+
"filterVenueId"
|
|
44664
|
+
]) }),
|
|
44665
|
+
run(value, { key }) {
|
|
44666
|
+
const content = asPartialObject(value) ?? {};
|
|
44667
|
+
const selection = resolveEventSelection(content.eventSelection, content.selectedEventSeriesIds);
|
|
44668
|
+
if (selection.kind === "selected") return key === "seriesIds" ? selection.seriesIds : void 0;
|
|
44669
|
+
return key === "seriesIds" ? void 0 : content[key];
|
|
44670
|
+
}
|
|
44671
|
+
};
|
|
44586
44672
|
const readJobSchema = z$1.object({ job: z$1.enum(["list", "calendar"]) });
|
|
44587
44673
|
const eventCalendarReadProfile = {
|
|
44588
44674
|
id: "events.calendarReadProfile",
|
|
@@ -44608,6 +44694,7 @@ init_core$1();
|
|
|
44608
44694
|
init_boxStyles$1();
|
|
44609
44695
|
init_boxStyleClassNames();
|
|
44610
44696
|
const defaultTransforms = createTransformRegistry([
|
|
44697
|
+
eventCalendarSelectionParam,
|
|
44611
44698
|
eventCalendarReadEnabled,
|
|
44612
44699
|
eventCalendarReadProfile,
|
|
44613
44700
|
...formattingTransforms,
|
|
@@ -45868,17 +45955,16 @@ const ButtonNode = ({ value, children, href, variantId = "primary", size = "md",
|
|
|
45868
45955
|
console.warn("[ButtonNode] Missing href for link-required button");
|
|
45869
45956
|
return null;
|
|
45870
45957
|
}
|
|
45871
|
-
const extraClassName = affordanceIcon ? [className, AFFORDANCE_SUPPRESS_CLASS].filter(Boolean).join(" ") : className;
|
|
45872
45958
|
const resolvedVariantId = parseThemeButtonVariantId(variantId);
|
|
45873
45959
|
if (variantId && !resolvedVariantId) {
|
|
45874
45960
|
console.error("[ButtonNode] Invalid button variant", { variantId });
|
|
45875
45961
|
return null;
|
|
45876
45962
|
}
|
|
45877
|
-
const combinedClassName = resolvedVariantId ? themeButtonClassName({
|
|
45963
|
+
const combinedClassName = resolvedVariantId ? (affordanceIcon ? themeButtonClassNameWithTrailingIcon : themeButtonClassName)({
|
|
45878
45964
|
variant: resolvedVariantId,
|
|
45879
45965
|
size,
|
|
45880
|
-
extraClassName
|
|
45881
|
-
}) :
|
|
45966
|
+
extraClassName: className
|
|
45967
|
+
}) : className;
|
|
45882
45968
|
if (resolvedHref) return /* @__PURE__ */ jsxs("a", {
|
|
45883
45969
|
href: resolvedHref,
|
|
45884
45970
|
target,
|
|
@@ -47100,6 +47186,7 @@ const publicPricingSchema = z$1.object({
|
|
|
47100
47186
|
});
|
|
47101
47187
|
const publicAppointmentServiceSchema = z$1.object({
|
|
47102
47188
|
id: z$1.string().min(1),
|
|
47189
|
+
slug: z$1.string().min(1).optional(),
|
|
47103
47190
|
title: z$1.string(),
|
|
47104
47191
|
description: z$1.string().nullable().optional(),
|
|
47105
47192
|
durationMinutes: z$1.number().int().positive(),
|
|
@@ -47176,7 +47263,7 @@ function formatAmountOrFree(amount, currency) {
|
|
|
47176
47263
|
currency
|
|
47177
47264
|
}, { decimals: "auto" });
|
|
47178
47265
|
}
|
|
47179
|
-
function buildRows(services, pathname) {
|
|
47266
|
+
function buildRows(services, pathname, servicePathPrefix) {
|
|
47180
47267
|
return services.map((service) => ({
|
|
47181
47268
|
id: service.id,
|
|
47182
47269
|
title: service.title,
|
|
@@ -47187,7 +47274,8 @@ function buildRows(services, pathname) {
|
|
|
47187
47274
|
href: resolveDedicatedBookingHref(pathname, {
|
|
47188
47275
|
kind: "appointment_service",
|
|
47189
47276
|
serviceId: service.id
|
|
47190
|
-
})
|
|
47277
|
+
}),
|
|
47278
|
+
detailsHref: servicePathPrefix && service.slug ? `${servicePathPrefix.replace(/\/$/, "")}/${encodeURIComponent(service.slug)}` : null
|
|
47191
47279
|
}));
|
|
47192
47280
|
}
|
|
47193
47281
|
function buildAppointmentServicesView(input) {
|
|
@@ -47206,13 +47294,14 @@ function buildAppointmentServicesView(input) {
|
|
|
47206
47294
|
};
|
|
47207
47295
|
return {
|
|
47208
47296
|
kind: "items",
|
|
47209
|
-
rows: buildRows(parsed.services, input.pathname)
|
|
47297
|
+
rows: buildRows(parsed.services, input.pathname, input.servicePathPrefix ?? null)
|
|
47210
47298
|
};
|
|
47211
47299
|
}
|
|
47212
|
-
function AppointmentServicesNode({ sectionHeading, services, pathname, className }) {
|
|
47300
|
+
function AppointmentServicesNode({ sectionHeading, services, pathname, servicePathPrefix, className }) {
|
|
47213
47301
|
const view = buildAppointmentServicesView({
|
|
47214
47302
|
services,
|
|
47215
|
-
pathname: typeof pathname === "string" ? pathname : void 0
|
|
47303
|
+
pathname: typeof pathname === "string" ? pathname : void 0,
|
|
47304
|
+
servicePathPrefix: typeof servicePathPrefix === "string" ? servicePathPrefix : null
|
|
47216
47305
|
});
|
|
47217
47306
|
const rootClassName = `appointment-services ${className ?? ""}`.trim();
|
|
47218
47307
|
const RowTitle = sectionHeading ? "h3" : "h2";
|
|
@@ -47243,7 +47332,10 @@ function AppointmentServicesNode({ sectionHeading, services, pathname, className
|
|
|
47243
47332
|
children: [
|
|
47244
47333
|
/* @__PURE__ */ jsx(RowTitle, {
|
|
47245
47334
|
className: "appointment-services-row-title rb-text-lg rb-font-medium rb-leading-tight",
|
|
47246
|
-
children: row.
|
|
47335
|
+
children: row.detailsHref ? /* @__PURE__ */ jsx("a", {
|
|
47336
|
+
href: row.detailsHref,
|
|
47337
|
+
children: row.title
|
|
47338
|
+
}) : row.title
|
|
47247
47339
|
}),
|
|
47248
47340
|
row.description ? /* @__PURE__ */ jsx("p", {
|
|
47249
47341
|
className: "appointment-services-row-description rb-text-sm rb-leading-6 status-muted",
|
|
@@ -48776,7 +48868,6 @@ function OfferingsCatalogue(props) {
|
|
|
48776
48868
|
//#endregion
|
|
48777
48869
|
//#region ../blocks/src/system/runtime/nodes/offerings-preview-content.tsx
|
|
48778
48870
|
init_buttons();
|
|
48779
|
-
init_svg();
|
|
48780
48871
|
init_shared$2();
|
|
48781
48872
|
function OfferingsPreviewContent(props) {
|
|
48782
48873
|
const groupLinkClass = themeButtonClassName({
|
|
@@ -48823,13 +48914,10 @@ function OfferingsPreviewContent(props) {
|
|
|
48823
48914
|
}),
|
|
48824
48915
|
groupCta ? /* @__PURE__ */ jsx("footer", {
|
|
48825
48916
|
className: "offerings-preview-card-footer rb-mt-auto rb-flex",
|
|
48826
|
-
children: /* @__PURE__ */
|
|
48917
|
+
children: /* @__PURE__ */ jsx("a", {
|
|
48827
48918
|
className: groupLinkClass,
|
|
48828
48919
|
href: groupCta.href,
|
|
48829
|
-
children:
|
|
48830
|
-
"aria-hidden": "true",
|
|
48831
|
-
className: "offerings-preview-link-icon rb-h-4 rb-w-4"
|
|
48832
|
-
})]
|
|
48920
|
+
children: /* @__PURE__ */ jsx("span", { children: groupCta.label })
|
|
48833
48921
|
})
|
|
48834
48922
|
}) : null
|
|
48835
48923
|
]
|
|
@@ -50246,23 +50334,123 @@ const formBlockDefinition = {
|
|
|
50246
50334
|
runtime: formBlockRuntime
|
|
50247
50335
|
};
|
|
50248
50336
|
//#endregion
|
|
50337
|
+
//#region ../blocks/src/system/blocks/events/eventSelectionFields.ts
|
|
50338
|
+
init_schema();
|
|
50339
|
+
const eventSelectionFields = [{
|
|
50340
|
+
id: "eventSelection",
|
|
50341
|
+
type: "select",
|
|
50342
|
+
label: "Events to show",
|
|
50343
|
+
required: false,
|
|
50344
|
+
multiple: false,
|
|
50345
|
+
defaultValue: "matching",
|
|
50346
|
+
options: [{
|
|
50347
|
+
value: "matching",
|
|
50348
|
+
label: "All matching events"
|
|
50349
|
+
}, {
|
|
50350
|
+
value: "selected",
|
|
50351
|
+
label: "Selected events"
|
|
50352
|
+
}],
|
|
50353
|
+
ui: { intent: "behavior" }
|
|
50354
|
+
}, createSiteOptionSelectField({
|
|
50355
|
+
id: "selectedEventSeriesIds",
|
|
50356
|
+
label: "Selected events",
|
|
50357
|
+
description: "Show upcoming dates for these events. Other event filters do not apply.",
|
|
50358
|
+
required: false,
|
|
50359
|
+
multiple: true,
|
|
50360
|
+
defaultValue: [],
|
|
50361
|
+
optionSource: "eventSeries",
|
|
50362
|
+
ui: {
|
|
50363
|
+
intent: "behavior",
|
|
50364
|
+
searchThreshold: 1,
|
|
50365
|
+
visibleWhen: {
|
|
50366
|
+
field: "eventSelection",
|
|
50367
|
+
equals: "selected"
|
|
50368
|
+
}
|
|
50369
|
+
}
|
|
50370
|
+
})];
|
|
50371
|
+
function withEventSelectionVisibility(field) {
|
|
50372
|
+
if (![
|
|
50373
|
+
"eventSurface",
|
|
50374
|
+
"filterEventPresets",
|
|
50375
|
+
"scheduleScope",
|
|
50376
|
+
"filterCategoryIds",
|
|
50377
|
+
"filterStaffMemberId",
|
|
50378
|
+
"filterVenueId",
|
|
50379
|
+
"showFilters",
|
|
50380
|
+
"showCategoryFilter",
|
|
50381
|
+
"showVenueFilter",
|
|
50382
|
+
"showStaffFilter"
|
|
50383
|
+
].includes(field.id)) return field;
|
|
50384
|
+
const visibleWhen = field.ui?.visibleWhen;
|
|
50385
|
+
return {
|
|
50386
|
+
...field,
|
|
50387
|
+
ui: {
|
|
50388
|
+
...field.ui,
|
|
50389
|
+
visibleWhen: { allOf: [{
|
|
50390
|
+
field: "eventSelection",
|
|
50391
|
+
notEquals: "selected"
|
|
50392
|
+
}, ...visibleWhen ? [visibleWhen] : []] }
|
|
50393
|
+
}
|
|
50394
|
+
};
|
|
50395
|
+
}
|
|
50396
|
+
//#endregion
|
|
50249
50397
|
//#region ../blocks/src/system/blocks/events/eventCalendarDataLoaders.ts
|
|
50250
50398
|
init_calendarWindow();
|
|
50251
50399
|
const scopeParams = {
|
|
50252
50400
|
siteId: { $bind: { from: "$root.siteId" } },
|
|
50401
|
+
seriesIds: { $bind: {
|
|
50402
|
+
from: "content",
|
|
50403
|
+
transforms: [{
|
|
50404
|
+
id: "events.calendarSelectionParam",
|
|
50405
|
+
options: { key: "seriesIds" }
|
|
50406
|
+
}]
|
|
50407
|
+
} },
|
|
50253
50408
|
stage: { $bind: {
|
|
50254
50409
|
from: "$root.previewStage",
|
|
50255
50410
|
fallback: "published"
|
|
50256
50411
|
} },
|
|
50257
|
-
eventSurface: { $bind: {
|
|
50412
|
+
eventSurface: { $bind: {
|
|
50413
|
+
from: "content",
|
|
50414
|
+
transforms: [{
|
|
50415
|
+
id: "events.calendarSelectionParam",
|
|
50416
|
+
options: { key: "eventSurface" }
|
|
50417
|
+
}, { id: "value.csv" }]
|
|
50418
|
+
} },
|
|
50258
50419
|
eventPresets: { $bind: {
|
|
50259
|
-
from: "content
|
|
50260
|
-
transforms: [{
|
|
50420
|
+
from: "content",
|
|
50421
|
+
transforms: [{
|
|
50422
|
+
id: "events.calendarSelectionParam",
|
|
50423
|
+
options: { key: "filterEventPresets" }
|
|
50424
|
+
}, { id: "value.csv" }]
|
|
50261
50425
|
} },
|
|
50262
|
-
scheduleScope: { $bind: {
|
|
50263
|
-
|
|
50264
|
-
|
|
50265
|
-
|
|
50426
|
+
scheduleScope: { $bind: {
|
|
50427
|
+
from: "content",
|
|
50428
|
+
transforms: [{
|
|
50429
|
+
id: "events.calendarSelectionParam",
|
|
50430
|
+
options: { key: "scheduleScope" }
|
|
50431
|
+
}, { id: "value.csv" }]
|
|
50432
|
+
} },
|
|
50433
|
+
categoryIds: { $bind: {
|
|
50434
|
+
from: "content",
|
|
50435
|
+
transforms: [{
|
|
50436
|
+
id: "events.calendarSelectionParam",
|
|
50437
|
+
options: { key: "filterCategoryIds" }
|
|
50438
|
+
}, { id: "value.csv" }]
|
|
50439
|
+
} },
|
|
50440
|
+
staffMemberId: { $bind: {
|
|
50441
|
+
from: "content",
|
|
50442
|
+
transforms: [{
|
|
50443
|
+
id: "events.calendarSelectionParam",
|
|
50444
|
+
options: { key: "filterStaffMemberId" }
|
|
50445
|
+
}, { id: "value.csv" }]
|
|
50446
|
+
} },
|
|
50447
|
+
venueId: { $bind: {
|
|
50448
|
+
from: "content",
|
|
50449
|
+
transforms: [{
|
|
50450
|
+
id: "events.calendarSelectionParam",
|
|
50451
|
+
options: { key: "filterVenueId" }
|
|
50452
|
+
}, { id: "value.csv" }]
|
|
50453
|
+
} }
|
|
50266
50454
|
};
|
|
50267
50455
|
/** Combined renders two jobs; calendar-only variants never pay for the list seed. */
|
|
50268
50456
|
const eventCalendarDataLoaders = {
|
|
@@ -50403,6 +50591,13 @@ const eventCalendarLayout = [styledSection({
|
|
|
50403
50591
|
from: "content.defaultCalendarView",
|
|
50404
50592
|
fallback: "month"
|
|
50405
50593
|
} },
|
|
50594
|
+
seriesIds: { $bind: {
|
|
50595
|
+
from: "content",
|
|
50596
|
+
transforms: [{
|
|
50597
|
+
id: "events.calendarSelectionParam",
|
|
50598
|
+
options: { key: "seriesIds" }
|
|
50599
|
+
}]
|
|
50600
|
+
} },
|
|
50406
50601
|
showFilters: { $bind: {
|
|
50407
50602
|
from: "content.showFilters",
|
|
50408
50603
|
fallback: true
|
|
@@ -50424,17 +50619,47 @@ const eventCalendarLayout = [styledSection({
|
|
|
50424
50619
|
fallback: true
|
|
50425
50620
|
} },
|
|
50426
50621
|
eventSurface: { $bind: {
|
|
50427
|
-
from: "content
|
|
50428
|
-
|
|
50622
|
+
from: "content",
|
|
50623
|
+
transforms: [{
|
|
50624
|
+
id: "events.calendarSelectionParam",
|
|
50625
|
+
options: { key: "eventSurface" }
|
|
50626
|
+
}]
|
|
50627
|
+
} },
|
|
50628
|
+
filterEventPresets: { $bind: {
|
|
50629
|
+
from: "content",
|
|
50630
|
+
transforms: [{
|
|
50631
|
+
id: "events.calendarSelectionParam",
|
|
50632
|
+
options: { key: "filterEventPresets" }
|
|
50633
|
+
}]
|
|
50429
50634
|
} },
|
|
50430
|
-
filterEventPresets: { $bind: { from: "content.filterEventPresets" } },
|
|
50431
50635
|
scheduleScope: { $bind: {
|
|
50432
|
-
from: "content
|
|
50433
|
-
|
|
50636
|
+
from: "content",
|
|
50637
|
+
transforms: [{
|
|
50638
|
+
id: "events.calendarSelectionParam",
|
|
50639
|
+
options: { key: "scheduleScope" }
|
|
50640
|
+
}]
|
|
50641
|
+
} },
|
|
50642
|
+
filterCategoryIds: { $bind: {
|
|
50643
|
+
from: "content",
|
|
50644
|
+
transforms: [{
|
|
50645
|
+
id: "events.calendarSelectionParam",
|
|
50646
|
+
options: { key: "filterCategoryIds" }
|
|
50647
|
+
}]
|
|
50648
|
+
} },
|
|
50649
|
+
filterStaffMemberId: { $bind: {
|
|
50650
|
+
from: "content",
|
|
50651
|
+
transforms: [{
|
|
50652
|
+
id: "events.calendarSelectionParam",
|
|
50653
|
+
options: { key: "filterStaffMemberId" }
|
|
50654
|
+
}]
|
|
50655
|
+
} },
|
|
50656
|
+
filterVenueId: { $bind: {
|
|
50657
|
+
from: "content",
|
|
50658
|
+
transforms: [{
|
|
50659
|
+
id: "events.calendarSelectionParam",
|
|
50660
|
+
options: { key: "filterVenueId" }
|
|
50661
|
+
}]
|
|
50434
50662
|
} },
|
|
50435
|
-
filterCategoryIds: { $bind: { from: "content.filterCategoryIds" } },
|
|
50436
|
-
filterStaffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
|
|
50437
|
-
filterVenueId: { $bind: { from: "content.filterVenueId" } },
|
|
50438
50663
|
cardRole: { $bind: {
|
|
50439
50664
|
from: "content._cardStyles.role",
|
|
50440
50665
|
fallback: "default"
|
|
@@ -50938,6 +51163,7 @@ const eventCalendarAdditionalFields = [
|
|
|
50938
51163
|
}
|
|
50939
51164
|
}
|
|
50940
51165
|
},
|
|
51166
|
+
...eventSelectionFields,
|
|
50941
51167
|
{
|
|
50942
51168
|
id: "eventSurface",
|
|
50943
51169
|
type: "select",
|
|
@@ -51147,7 +51373,7 @@ const eventCalendarBlockDefinition = {
|
|
|
51147
51373
|
titleSource: "heading",
|
|
51148
51374
|
description: "Display events with calendar, list, or combined views with filtering",
|
|
51149
51375
|
skipSectionStyles: true,
|
|
51150
|
-
additionalFields: eventCalendarAdditionalFields,
|
|
51376
|
+
additionalFields: eventCalendarAdditionalFields.map(withEventSelectionVisibility),
|
|
51151
51377
|
styleTokens: {
|
|
51152
51378
|
background: "surface",
|
|
51153
51379
|
typography: "body",
|
|
@@ -56291,9 +56517,56 @@ function generateNavLinkCSS(options) {
|
|
|
56291
56517
|
if (baseRules.length > 0) cssChunks.unshift(`\n${selector} {\n ${baseRules.join("\n ")}\n}\n`);
|
|
56292
56518
|
if (hoverRules.length > 0) cssChunks.push(`\n${hoverSelector} {\n ${hoverRules.join("\n ")}\n}\n`);
|
|
56293
56519
|
if (activeRules.length > 0) cssChunks.push(`\n${activeSelector} {\n ${activeRules.join("\n ")}\n}\n`);
|
|
56520
|
+
cssChunks.push(navLinkFocusVisibleCss(selector, style, theme, tokens));
|
|
56294
56521
|
cssChunks.push(generateInteractiveChildInheritanceCSS(selector));
|
|
56295
56522
|
return cssChunks.join("");
|
|
56296
56523
|
}
|
|
56524
|
+
/**
|
|
56525
|
+
* Keyboard focus indicator for nav links, in the header, the footer and header
|
|
56526
|
+
* dropdown menus — the three surfaces `generateNavLinkCSS` serves.
|
|
56527
|
+
*
|
|
56528
|
+
* Emitted unconditionally rather than as an effect, because focus visibility is
|
|
56529
|
+
* a floor rather than a style choice. Only the interaction-palette pill ever
|
|
56530
|
+
* wrote an `effects.focus` group, so every other nav — every `quiet` palette,
|
|
56531
|
+
* every footer, every dropdown — previously fell back to whatever outline the
|
|
56532
|
+
* browser drew.
|
|
56533
|
+
*
|
|
56534
|
+
* The outline takes the link's own resolved colour, so on a header that adapts
|
|
56535
|
+
* to the section it floats over it moves with the adaptation instead of
|
|
56536
|
+
* asserting a brand colour against an unknown backdrop.
|
|
56537
|
+
*
|
|
56538
|
+
* Where the style asks for `soft-glow`, the same halo goes on the outline. That
|
|
56539
|
+
* treatment exists because the theme has already conceded the resolved colour
|
|
56540
|
+
* alone is not reliable over an unpredictable backdrop — a hero photograph with
|
|
56541
|
+
* mixed luminance. Without it the text would stay legible by its halo while the
|
|
56542
|
+
* focus ring, which is the part with a contrast requirement of its own, would
|
|
56543
|
+
* not.
|
|
56544
|
+
*
|
|
56545
|
+
* A style that also paints a focus pill keeps it: this adds an outline around
|
|
56546
|
+
* that pill rather than replacing it.
|
|
56547
|
+
*/
|
|
56548
|
+
function navLinkFocusVisibleCss(selector, style, theme, tokens) {
|
|
56549
|
+
const color = tokens.getColor(style.colorToken);
|
|
56550
|
+
const halo = buildTextContrastShadow({
|
|
56551
|
+
theme,
|
|
56552
|
+
colorToken: style.colorToken,
|
|
56553
|
+
treatment: style.contrastTreatment
|
|
56554
|
+
});
|
|
56555
|
+
return `
|
|
56556
|
+
${selector}:focus-visible {
|
|
56557
|
+
outline: 2px solid ${color};
|
|
56558
|
+
outline-offset: ${focusOutlineOffset(selector)};${halo ? `\n box-shadow: ${halo};` : ""}
|
|
56559
|
+
}
|
|
56560
|
+
`;
|
|
56561
|
+
}
|
|
56562
|
+
/**
|
|
56563
|
+
* Dropdown items are full-width inside a panel with no horizontal padding, so
|
|
56564
|
+
* an outset outline would paint over and past the panel's own border. Keeping
|
|
56565
|
+
* it flush is the only way it reads as belonging to the item.
|
|
56566
|
+
*/
|
|
56567
|
+
function focusOutlineOffset(selector) {
|
|
56568
|
+
return selector.includes("nav-dropdown-link") ? "-2px" : "3px";
|
|
56569
|
+
}
|
|
56297
56570
|
function buildTextContrastShadow(input) {
|
|
56298
56571
|
if (input.treatment !== "soft-glow") return null;
|
|
56299
56572
|
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)";
|
|
@@ -59459,7 +59732,7 @@ function pageBlockPosition(index, blockCount) {
|
|
|
59459
59732
|
//#endregion
|
|
59460
59733
|
//#region ../blocks/src/pageRendererContracts.ts
|
|
59461
59734
|
function buildPageRendererRootRuntime(dataContext) {
|
|
59462
|
-
const { siteId = null, pageId = null, pathname = null, bookingTimeZone, previewStage = "published", apiBaseUrl = null, portalToken = null, bookingOfferingPresets = [], mailingList = { tag: "not_configured" }, eventRegistrationOverlayEnabled = false, loaderFailures = {} } = dataContext ?? {};
|
|
59735
|
+
const { siteId = null, pageId = null, pathname = null, bookingTimeZone, previewStage = "published", apiBaseUrl = null, portalToken = null, bookingOfferingPresets = [], appointmentServicePathPrefix = null, mailingList = { tag: "not_configured" }, eventRegistrationOverlayEnabled = false, loaderFailures = {} } = dataContext ?? {};
|
|
59463
59736
|
return {
|
|
59464
59737
|
siteId,
|
|
59465
59738
|
pageId,
|
|
@@ -59469,6 +59742,7 @@ function buildPageRendererRootRuntime(dataContext) {
|
|
|
59469
59742
|
apiBaseUrl,
|
|
59470
59743
|
portalToken,
|
|
59471
59744
|
bookingOfferingPresets,
|
|
59745
|
+
appointmentServicePathPrefix,
|
|
59472
59746
|
mailingList,
|
|
59473
59747
|
eventRegistrationOverlayEnabled,
|
|
59474
59748
|
loaderFailures
|
|
@@ -64280,7 +64554,8 @@ const appointmentServicesBlockDefinition = {
|
|
|
64280
64554
|
el("appointment-services", {
|
|
64281
64555
|
sectionHeading: { $bind: { from: "content.heading" } },
|
|
64282
64556
|
services: { $bind: { from: "data.services" } },
|
|
64283
|
-
pathname: { $bind: { from: "$root.pathname" } }
|
|
64557
|
+
pathname: { $bind: { from: "$root.pathname" } },
|
|
64558
|
+
servicePathPrefix: { $bind: { from: "$root.appointmentServicePathPrefix" } }
|
|
64284
64559
|
})
|
|
64285
64560
|
], { gap: "lg" })
|
|
64286
64561
|
})]
|
|
@@ -71904,10 +72179,19 @@ const containerResponsiveThemeCss = `/*
|
|
|
71904
72179
|
padding-top: 2.5rem;
|
|
71905
72180
|
padding-bottom: 2.5rem;
|
|
71906
72181
|
}
|
|
72182
|
+
/* Clearance for a surface that is not an authored block page.
|
|
72183
|
+
An authored page gets this through its opening block's container (see the
|
|
72184
|
+
overlay-clearance rule in styles.css). A reserved surface or a system
|
|
72185
|
+
destination page has no such block, so it consumes the same variable here.
|
|
72186
|
+
Marked with one class rather than per-surface selectors, because the last
|
|
72187
|
+
two additions to this family were both missed and shipped overlapping. */
|
|
71907
72188
|
:where(.theme-scope)
|
|
71908
72189
|
[data-site-document-layout-mode="header-overlay"]
|
|
71909
|
-
|
|
71910
|
-
padding-top: calc(
|
|
72190
|
+
.rb-overlay-clearance-surface {
|
|
72191
|
+
padding-top: calc(
|
|
72192
|
+
var(--site-overlay-header-clearance, 5.5rem) +
|
|
72193
|
+
var(--site-overlay-opening-content-extra-pad, clamp(1rem, 2vw, 1.75rem))
|
|
72194
|
+
);
|
|
71911
72195
|
}
|
|
71912
72196
|
.rb-preview-editor-offset {
|
|
71913
72197
|
padding-bottom: calc(
|
|
@@ -82264,6 +82548,23 @@ const containerResponsiveThemeCss = `/*
|
|
|
82264
82548
|
gap: 0.5rem;
|
|
82265
82549
|
}
|
|
82266
82550
|
|
|
82551
|
+
/* Error panel and field notes. The form block scopes these to its own
|
|
82552
|
+
data-block, so the newsletter form (which also renders in the footer)
|
|
82553
|
+
needs its own copy of the treatment. */
|
|
82554
|
+
:where(.theme-scope) .newsletter-form .fb-error:not([data-field-validation-message]) {
|
|
82555
|
+
background-color: var(--fb-error-bg);
|
|
82556
|
+
color: var(--fb-error-text);
|
|
82557
|
+
border: 1px solid var(--fb-error-border);
|
|
82558
|
+
border-radius: var(--rb-block-radius);
|
|
82559
|
+
padding: 1rem;
|
|
82560
|
+
font-size: 0.875rem;
|
|
82561
|
+
}
|
|
82562
|
+
|
|
82563
|
+
:where(.theme-scope) .newsletter-form [data-field-validation-message] {
|
|
82564
|
+
font-size: 0.875rem;
|
|
82565
|
+
color: var(--fb-error-text);
|
|
82566
|
+
}
|
|
82567
|
+
|
|
82267
82568
|
/* Required indicator */
|
|
82268
82569
|
:where(.theme-scope) .newsletter-required {
|
|
82269
82570
|
color: rgb(var(--tb-primary));
|
|
@@ -84761,12 +85062,12 @@ function normalizeContent(block) {
|
|
|
84761
85062
|
}
|
|
84762
85063
|
/**
|
|
84763
85064
|
* Normalize params for API calls.
|
|
84764
|
-
* Converts
|
|
85065
|
+
* Converts supplied values to strings, preserving absent versus explicitly empty params.
|
|
84765
85066
|
*/
|
|
84766
85067
|
function normalizeParams(input) {
|
|
84767
85068
|
if (!input || typeof input !== "object") return {};
|
|
84768
85069
|
const output = {};
|
|
84769
|
-
for (const [key, value] of Object.entries(input)) output[key] = coerceToString(value);
|
|
85070
|
+
for (const [key, value] of Object.entries(input)) if (value !== void 0 && value !== null) output[key] = coerceToString(value);
|
|
84770
85071
|
return output;
|
|
84771
85072
|
}
|
|
84772
85073
|
function isNonArrayObject(value) {
|
|
@@ -84830,6 +85131,14 @@ function coercePayload(payload) {
|
|
|
84830
85131
|
* - Frontend: provide internal API client
|
|
84831
85132
|
* - SDK: provide SDK client with endpoint mapping
|
|
84832
85133
|
*/
|
|
85134
|
+
function projectDataLoaders(loaders, shouldLoad, blockId, blockKind) {
|
|
85135
|
+
if (!shouldLoad) return [...loaders];
|
|
85136
|
+
return loaders.filter(({ key }) => shouldLoad({
|
|
85137
|
+
blockId,
|
|
85138
|
+
blockKind,
|
|
85139
|
+
loaderKey: key
|
|
85140
|
+
}));
|
|
85141
|
+
}
|
|
84833
85142
|
function shouldSkipResolvedLoader(input) {
|
|
84834
85143
|
if (input.loader.requiredParams?.some((param) => !input.params[param]?.trim())) return true;
|
|
84835
85144
|
return Boolean(input.isValidEndpoint && !input.isValidEndpoint(input.endpoint));
|
|
@@ -84858,7 +85167,7 @@ async function prefetchBlockData$1(page, context, options) {
|
|
|
84858
85167
|
return (await prefetchBlockDataWithFailures(page, context, options)).resolvedData;
|
|
84859
85168
|
}
|
|
84860
85169
|
async function prefetchBlockDataWithFailures(page, context, options) {
|
|
84861
|
-
const { apiClient, isValidEndpoint, onError, getCustomBlockLoaders, getBlockDefinition: getBlockDefinition$1 = getBlockDefinition, resolveParamsBindings: resolveParamsBindings$1 = resolveParamsBindings } = options;
|
|
85170
|
+
const { apiClient, isValidEndpoint, onError, getCustomBlockLoaders, getBlockDefinition: getBlockDefinition$1 = getBlockDefinition, resolveParamsBindings: resolveParamsBindings$1 = resolveParamsBindings, shouldLoad } = options;
|
|
84862
85171
|
const results = {};
|
|
84863
85172
|
const loaderFailures = {};
|
|
84864
85173
|
const tasks = [];
|
|
@@ -84875,6 +85184,7 @@ async function prefetchBlockDataWithFailures(page, context, options) {
|
|
|
84875
85184
|
loader
|
|
84876
85185
|
})) : [];
|
|
84877
85186
|
} else loaders = [];
|
|
85187
|
+
loaders = projectDataLoaders(loaders, shouldLoad, blockId, block.kind);
|
|
84878
85188
|
if (loaders.length === 0) continue;
|
|
84879
85189
|
const root = {
|
|
84880
85190
|
...context.root ?? {},
|
|
@@ -84979,8 +85289,8 @@ function toStringParams(value) {
|
|
|
84979
85289
|
for (const [k, v] of Object.entries(value)) if (typeof v === "string") out[k] = v;
|
|
84980
85290
|
return out;
|
|
84981
85291
|
}
|
|
84982
|
-
function stripEmptyStringValues(params) {
|
|
84983
|
-
for (const [key, value] of Object.entries(params)) if (value === "") delete params[key];
|
|
85292
|
+
function stripEmptyStringValues(params, endpoint) {
|
|
85293
|
+
for (const [key, value] of Object.entries(params)) if (value === "" && !(key === "seriesIds" && (endpoint === "listPublicEvents" || endpoint === "listPublicEventCalendarWindow"))) delete params[key];
|
|
84984
85294
|
}
|
|
84985
85295
|
function ensureSiteId(params, context) {
|
|
84986
85296
|
if (!params.siteId && typeof context.siteId === "string" && context.siteId) params.siteId = context.siteId;
|
|
@@ -84993,7 +85303,7 @@ function ensureSiteId(params, context) {
|
|
|
84993
85303
|
*/
|
|
84994
85304
|
function normalizeLoaderParams(endpoint, params, context) {
|
|
84995
85305
|
const out = toStringParams(params);
|
|
84996
|
-
stripEmptyStringValues(out);
|
|
85306
|
+
stripEmptyStringValues(out, endpoint);
|
|
84997
85307
|
if (endpoint === "getPublicFormById") {
|
|
84998
85308
|
ensureSiteId(out, context);
|
|
84999
85309
|
if (!out.formId && out.formSlug) {
|
|
@@ -85121,6 +85431,7 @@ init_buttons();
|
|
|
85121
85431
|
init_cards();
|
|
85122
85432
|
init_tokens();
|
|
85123
85433
|
init_gradients();
|
|
85434
|
+
init_mode();
|
|
85124
85435
|
init_richTextSchema();
|
|
85125
85436
|
init_media();
|
|
85126
85437
|
init_media$1();
|
|
@@ -85133,6 +85444,7 @@ init_events$2();
|
|
|
85133
85444
|
init_colorStyles();
|
|
85134
85445
|
//#endregion
|
|
85135
85446
|
//#region ../api/src/sdkConfig/contracts.ts
|
|
85447
|
+
init_mode();
|
|
85136
85448
|
init_src$2();
|
|
85137
85449
|
/**
|
|
85138
85450
|
* Canonical SDK config Zod contracts.
|
|
@@ -85305,11 +85617,14 @@ const sdkSiteStyleConfigSchema = z$1.object({
|
|
|
85305
85617
|
sectionOptions: sdkSectionOptionsConfigSchema.optional(),
|
|
85306
85618
|
containerOptions: sdkContainerOptionsConfigSchema.optional()
|
|
85307
85619
|
});
|
|
85308
|
-
const sdkSiteLayoutConfigSchema = z$1.object({
|
|
85309
|
-
|
|
85310
|
-
|
|
85311
|
-
|
|
85312
|
-
|
|
85620
|
+
const sdkSiteLayoutConfigSchema = z$1.object({
|
|
85621
|
+
footerMode: footerModeSchema.optional(),
|
|
85622
|
+
footerBlocks: z$1.array(z$1.object({
|
|
85623
|
+
id: z$1.string().min(1).optional(),
|
|
85624
|
+
kind: z$1.string().min(1),
|
|
85625
|
+
content: z$1.record(z$1.string(), z$1.unknown()).optional()
|
|
85626
|
+
})).optional()
|
|
85627
|
+
});
|
|
85313
85628
|
const sdkFieldSelectOptionSchema = z$1.object({
|
|
85314
85629
|
value: z$1.string(),
|
|
85315
85630
|
label: z$1.string()
|
|
@@ -87099,6 +87414,7 @@ init_src$2();
|
|
|
87099
87414
|
//#endregion
|
|
87100
87415
|
//#region ../blocks/src/rendering/server.ts
|
|
87101
87416
|
init_schema();
|
|
87417
|
+
init_mode();
|
|
87102
87418
|
//#endregion
|
|
87103
87419
|
//#region src/rendering/helpers/siteCustomBlocks.ts
|
|
87104
87420
|
/**
|
|
@@ -149820,10 +150136,14 @@ function buildDiscountAvailabilityRequestPlan(options) {
|
|
|
149820
150136
|
}
|
|
149821
150137
|
};
|
|
149822
150138
|
}
|
|
149823
|
-
function discountAvailabilityStateFromResponse(response) {
|
|
149824
|
-
if (!discountAvailabilityHasDiscounts(response)) return {
|
|
150139
|
+
function discountAvailabilityStateFromResponse(requestKey, response) {
|
|
150140
|
+
if (!discountAvailabilityHasDiscounts(response)) return {
|
|
150141
|
+
tag: "unavailable",
|
|
150142
|
+
requestKey
|
|
150143
|
+
};
|
|
149825
150144
|
return {
|
|
149826
150145
|
tag: "available",
|
|
150146
|
+
requestKey,
|
|
149827
150147
|
manualCodeEntryAllowed: discountAvailabilityAllowsManualEntry(response),
|
|
149828
150148
|
autoAppliedDiscount: getAutoAppliedDiscountPreview(response)
|
|
149829
150149
|
};
|
|
@@ -149833,10 +150153,13 @@ function discountCodeUiReducer(state, event) {
|
|
|
149833
150153
|
case "availability-disabled": return initialDiscountCodeUiState;
|
|
149834
150154
|
case "availability-loading": return {
|
|
149835
150155
|
...state,
|
|
149836
|
-
availability: {
|
|
150156
|
+
availability: {
|
|
150157
|
+
tag: "loading",
|
|
150158
|
+
previous: state.availability.tag === "available" || state.availability.tag === "unavailable" ? state.availability : state.availability.tag === "loading" ? state.availability.previous : null
|
|
150159
|
+
}
|
|
149837
150160
|
};
|
|
149838
150161
|
case "availability-loaded": {
|
|
149839
|
-
const availability = discountAvailabilityStateFromResponse(event.response);
|
|
150162
|
+
const availability = discountAvailabilityStateFromResponse(event.requestKey, event.response);
|
|
149840
150163
|
if (availability.tag !== "available" || !availability.manualCodeEntryAllowed) return {
|
|
149841
150164
|
...state,
|
|
149842
150165
|
discountUiOpen: false,
|
|
@@ -149852,7 +150175,10 @@ function discountCodeUiReducer(state, event) {
|
|
|
149852
150175
|
...state,
|
|
149853
150176
|
discountUiOpen: false,
|
|
149854
150177
|
discountCode: "",
|
|
149855
|
-
availability: {
|
|
150178
|
+
availability: {
|
|
150179
|
+
tag: "error",
|
|
150180
|
+
requestKey: event.requestKey
|
|
150181
|
+
}
|
|
149856
150182
|
};
|
|
149857
150183
|
case "discount-code-changed": return {
|
|
149858
150184
|
...state,
|
|
@@ -149897,11 +150223,15 @@ function useDiscountCodeUi(options) {
|
|
|
149897
150223
|
if (cancelled) return;
|
|
149898
150224
|
dispatch({
|
|
149899
150225
|
type: "availability-loaded",
|
|
150226
|
+
requestKey: requestPlan.key,
|
|
149900
150227
|
response: res
|
|
149901
150228
|
});
|
|
149902
150229
|
} catch {
|
|
149903
150230
|
if (cancelled) return;
|
|
149904
|
-
dispatch({
|
|
150231
|
+
dispatch({
|
|
150232
|
+
type: "availability-failed",
|
|
150233
|
+
requestKey: requestPlan.key
|
|
150234
|
+
});
|
|
149905
150235
|
}
|
|
149906
150236
|
}
|
|
149907
150237
|
checkDiscountAvailability();
|
|
@@ -149910,8 +150240,9 @@ function useDiscountCodeUi(options) {
|
|
|
149910
150240
|
};
|
|
149911
150241
|
}, [options.api, requestPlan]);
|
|
149912
150242
|
const availability = state.availability;
|
|
149913
|
-
const
|
|
149914
|
-
const
|
|
150243
|
+
const settledAvailability = availability.tag === "loading" ? availability.previous : availability.tag === "available" || availability.tag === "unavailable" ? availability : null;
|
|
150244
|
+
const isAvailable = settledAvailability?.tag === "available";
|
|
150245
|
+
const manualCodeEntryAllowed = isAvailable ? settledAvailability.manualCodeEntryAllowed : false;
|
|
149915
150246
|
return {
|
|
149916
150247
|
discountUiOpen: state.discountUiOpen,
|
|
149917
150248
|
setDiscountUiOpen: (isOpen) => dispatch({
|
|
@@ -149925,8 +150256,10 @@ function useDiscountCodeUi(options) {
|
|
|
149925
150256
|
}),
|
|
149926
150257
|
discountsAvailable: isAvailable,
|
|
149927
150258
|
manualCodeEntryAllowed,
|
|
149928
|
-
autoAppliedDiscount: isAvailable ?
|
|
149929
|
-
discountsAvailableLoading: availability.tag === "loading"
|
|
150259
|
+
autoAppliedDiscount: isAvailable ? settledAvailability.autoAppliedDiscount : null,
|
|
150260
|
+
discountsAvailableLoading: availability.tag === "loading",
|
|
150261
|
+
discountAvailabilityRequestKey: requestPlan.key,
|
|
150262
|
+
settledDiscountAvailabilityRequestKey: availability.tag === "error" ? availability.requestKey : settledAvailability?.requestKey ?? null
|
|
149930
150263
|
};
|
|
149931
150264
|
}
|
|
149932
150265
|
var init_useDiscountCodeUi = __esmMin((() => {
|
|
@@ -154451,16 +154784,19 @@ function eligibilityLookupReducer(state, action) {
|
|
|
154451
154784
|
case "loading-started": return {
|
|
154452
154785
|
tag: "loading",
|
|
154453
154786
|
eligibility: state.eligibility,
|
|
154787
|
+
settledRequestKey: state.settledRequestKey,
|
|
154454
154788
|
error: null
|
|
154455
154789
|
};
|
|
154456
154790
|
case "resolved": return {
|
|
154457
154791
|
tag: "resolved",
|
|
154458
154792
|
eligibility: action.eligibility,
|
|
154793
|
+
settledRequestKey: action.requestKey,
|
|
154459
154794
|
error: null
|
|
154460
154795
|
};
|
|
154461
154796
|
case "failed": return {
|
|
154462
154797
|
tag: "failed",
|
|
154463
154798
|
eligibility: null,
|
|
154799
|
+
settledRequestKey: null,
|
|
154464
154800
|
error: action.message
|
|
154465
154801
|
};
|
|
154466
154802
|
default: return assertNever$11(action);
|
|
@@ -154486,6 +154822,7 @@ var init_hooks_state = __esmMin((() => {
|
|
|
154486
154822
|
initialEligibilityLookupState = {
|
|
154487
154823
|
tag: "idle",
|
|
154488
154824
|
eligibility: null,
|
|
154825
|
+
settledRequestKey: null,
|
|
154489
154826
|
error: null
|
|
154490
154827
|
};
|
|
154491
154828
|
initialExistingRegistrationLookupState = {
|
|
@@ -154565,9 +154902,23 @@ function toRegistrationOptionsSubject(subject, attendanceMode) {
|
|
|
154565
154902
|
function useEligibility(params) {
|
|
154566
154903
|
return useEligibilityWithDeps(params, eventRegistrationHooksDeps);
|
|
154567
154904
|
}
|
|
154905
|
+
function eligibilityRequestKey(params) {
|
|
154906
|
+
return JSON.stringify({
|
|
154907
|
+
enabled: params.enabled,
|
|
154908
|
+
refreshKey: params.refreshKey ?? 0,
|
|
154909
|
+
subject: params.subject,
|
|
154910
|
+
attendanceMode: params.attendanceMode ?? null,
|
|
154911
|
+
ticketSelections: params.ticketSelectionsKey,
|
|
154912
|
+
selectedSlidingAmount: params.selectedSlidingAmount ?? null
|
|
154913
|
+
});
|
|
154914
|
+
}
|
|
154568
154915
|
function useEligibilityWithDeps(params, deps) {
|
|
154569
154916
|
const api = deps.useBlockApi();
|
|
154570
154917
|
const ticketSelectionsKey = JSON.stringify(normalizeTicketSelectionLines(params.ticketSelections));
|
|
154918
|
+
const requestKey = eligibilityRequestKey({
|
|
154919
|
+
...params,
|
|
154920
|
+
ticketSelectionsKey
|
|
154921
|
+
});
|
|
154571
154922
|
const [state, dispatch] = useReducer(eligibilityLookupReducer, initialEligibilityLookupState);
|
|
154572
154923
|
const requestIdRef = useRef(0);
|
|
154573
154924
|
useEffect(() => {
|
|
@@ -154600,7 +154951,8 @@ function useEligibilityWithDeps(params, deps) {
|
|
|
154600
154951
|
if (cancelled || requestIdRef.current !== requestId) return;
|
|
154601
154952
|
dispatch({
|
|
154602
154953
|
type: "resolved",
|
|
154603
|
-
eligibility: transformRegistrationOptionsResponse(result)
|
|
154954
|
+
eligibility: transformRegistrationOptionsResponse(result),
|
|
154955
|
+
requestKey
|
|
154604
154956
|
});
|
|
154605
154957
|
} catch {
|
|
154606
154958
|
if (cancelled || requestIdRef.current !== requestId) return;
|
|
@@ -154629,6 +154981,8 @@ function useEligibilityWithDeps(params, deps) {
|
|
|
154629
154981
|
return {
|
|
154630
154982
|
state,
|
|
154631
154983
|
eligibility: state.eligibility,
|
|
154984
|
+
settledRequestKey: state.settledRequestKey,
|
|
154985
|
+
requestKey,
|
|
154632
154986
|
isLoading: state.tag === "loading",
|
|
154633
154987
|
error: state.error,
|
|
154634
154988
|
creditState
|
|
@@ -155050,7 +155404,6 @@ var init_stripeCommissionMetadata = __esmMin((() => {
|
|
|
155050
155404
|
"no_commission_plan",
|
|
155051
155405
|
"billing_evidence_invalid",
|
|
155052
155406
|
"fee_rounds_to_zero",
|
|
155053
|
-
"non_commissionable_scope",
|
|
155054
155407
|
"payment_not_stripe"
|
|
155055
155408
|
];
|
|
155056
155409
|
historicalContext = {
|
|
@@ -156223,6 +156576,71 @@ var init_useEventRegistrationSubmit = __esmMin((() => {
|
|
|
156223
156576
|
};
|
|
156224
156577
|
}));
|
|
156225
156578
|
//#endregion
|
|
156579
|
+
//#region ../blocks/src/system/runtime/nodes/event-registration/useSettledCommerceView.ts
|
|
156580
|
+
function buildCandidate(input) {
|
|
156581
|
+
if (!input.eligibilityIsSettled || !input.eligibility || !input.currentEvent) return null;
|
|
156582
|
+
return {
|
|
156583
|
+
eventSelectionId: input.currentEvent.selectionId,
|
|
156584
|
+
discountContext: resolveDiscountContext({
|
|
156585
|
+
paymentSelection: input.paymentSelection,
|
|
156586
|
+
event: input.currentEvent,
|
|
156587
|
+
eventRequiresPayment: input.eventRequiresPayment,
|
|
156588
|
+
ticketsCount: input.ticketsCount
|
|
156589
|
+
}),
|
|
156590
|
+
subtotalCents: input.eligibility.price,
|
|
156591
|
+
summaryLines: input.eligibility.ticketLines.map((line) => ({
|
|
156592
|
+
pricingOptionId: line.pricingOptionId,
|
|
156593
|
+
label: line.label,
|
|
156594
|
+
quantity: line.quantity,
|
|
156595
|
+
unitPriceCents: line.unitPriceCents,
|
|
156596
|
+
subtotalCents: line.subtotalCents
|
|
156597
|
+
}))
|
|
156598
|
+
};
|
|
156599
|
+
}
|
|
156600
|
+
function eligibilityIsSettled(result) {
|
|
156601
|
+
return result.settledRequestKey === result.requestKey;
|
|
156602
|
+
}
|
|
156603
|
+
function viewIsStale(view, currentEvent, eligibilityState) {
|
|
156604
|
+
return view.eventSelectionId !== currentEvent?.selectionId || eligibilityState?.tag === "failed" || eligibilityState?.tag === "idle";
|
|
156605
|
+
}
|
|
156606
|
+
function requestIsSettled(discountUi) {
|
|
156607
|
+
return discountUi.discountAvailabilityRequestKey === "disabled" || discountUi.settledDiscountAvailabilityRequestKey === discountUi.discountAvailabilityRequestKey;
|
|
156608
|
+
}
|
|
156609
|
+
function discountRequest(view) {
|
|
156610
|
+
const discountContext = view?.discountContext ?? null;
|
|
156611
|
+
return {
|
|
156612
|
+
discountContext,
|
|
156613
|
+
subtotalCents: discountContext?.type === "event" && view?.subtotalCents !== null ? view?.subtotalCents : void 0
|
|
156614
|
+
};
|
|
156615
|
+
}
|
|
156616
|
+
function useSettledCommerceView(input) {
|
|
156617
|
+
const candidate = buildCandidate({
|
|
156618
|
+
eligibilityIsSettled: eligibilityIsSettled(input.eligibilityResult),
|
|
156619
|
+
eligibility: input.eligibility,
|
|
156620
|
+
currentEvent: input.currentEvent,
|
|
156621
|
+
paymentSelection: input.paymentSelection,
|
|
156622
|
+
eventRequiresPayment: input.eventRequiresPayment,
|
|
156623
|
+
ticketsCount: input.ticketsCount
|
|
156624
|
+
});
|
|
156625
|
+
const settledRef = useRef(candidate);
|
|
156626
|
+
if (settledRef.current && viewIsStale(settledRef.current, input.currentEvent, input.eligibilityResult.state)) settledRef.current = null;
|
|
156627
|
+
const requestView = candidate ?? settledRef.current;
|
|
156628
|
+
const discountUi = input.useDiscountCodeUi({
|
|
156629
|
+
api: input.api,
|
|
156630
|
+
...discountRequest(requestView)
|
|
156631
|
+
});
|
|
156632
|
+
if (candidate && requestIsSettled(discountUi)) settledRef.current = candidate;
|
|
156633
|
+
return {
|
|
156634
|
+
discountUi,
|
|
156635
|
+
discountContext: settledRef.current?.discountContext ?? null,
|
|
156636
|
+
ticketSelectionSubtotalCents: settledRef.current?.subtotalCents ?? null,
|
|
156637
|
+
ticketSelectionSummaryLines: settledRef.current?.summaryLines ?? []
|
|
156638
|
+
};
|
|
156639
|
+
}
|
|
156640
|
+
var init_useSettledCommerceView = __esmMin((() => {
|
|
156641
|
+
init_registrationDerivations();
|
|
156642
|
+
}));
|
|
156643
|
+
//#endregion
|
|
156226
156644
|
//#region ../blocks/src/system/runtime/nodes/event-registration/registrationWizardContext.ts
|
|
156227
156645
|
function getEventSelectionDefaults(event) {
|
|
156228
156646
|
const suggestedAmount = getSlidingScaleForEvent(event)?.suggestedAmount;
|
|
@@ -156385,10 +156803,6 @@ function isSoldOutWithoutWaitlist(input) {
|
|
|
156385
156803
|
var init_registrationCompletion = __esmMin((() => {}));
|
|
156386
156804
|
//#endregion
|
|
156387
156805
|
//#region ../blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.ts
|
|
156388
|
-
function resolveDiscountSubtotalCents(context, subtotalCents) {
|
|
156389
|
-
if (context?.type !== "event" || subtotalCents === null) return void 0;
|
|
156390
|
-
return subtotalCents;
|
|
156391
|
-
}
|
|
156392
156806
|
function usesTieredPricing(event) {
|
|
156393
156807
|
return event !== null && event !== void 0 ? publicEventPricingStrategy(event.pricing) === "tiered" : false;
|
|
156394
156808
|
}
|
|
@@ -156831,30 +157245,15 @@ function useEventRegistrationWizardWithDeps(options, deps) {
|
|
|
156831
157245
|
}
|
|
156832
157246
|
setStep("select-tickets");
|
|
156833
157247
|
};
|
|
156834
|
-
const discountContext
|
|
156835
|
-
|
|
156836
|
-
|
|
156837
|
-
|
|
156838
|
-
|
|
156839
|
-
}), [
|
|
157248
|
+
const { discountUi, discountContext, ticketSelectionSubtotalCents, ticketSelectionSummaryLines } = useSettledCommerceView({
|
|
157249
|
+
api,
|
|
157250
|
+
useDiscountCodeUi: deps.useDiscountCodeUi,
|
|
157251
|
+
eligibilityResult,
|
|
157252
|
+
eligibility,
|
|
156840
157253
|
currentEvent,
|
|
156841
157254
|
eventRequiresPayment,
|
|
156842
157255
|
paymentSelection,
|
|
156843
157256
|
ticketsCount
|
|
156844
|
-
]);
|
|
156845
|
-
const ticketSelectionSubtotalCents = eligibility?.price ?? null;
|
|
156846
|
-
const ticketSelectionSummaryLines = useMemo(() => eligibility?.ticketLines.map((line) => ({
|
|
156847
|
-
pricingOptionId: line.pricingOptionId,
|
|
156848
|
-
label: line.label,
|
|
156849
|
-
quantity: line.quantity,
|
|
156850
|
-
unitPriceCents: line.unitPriceCents,
|
|
156851
|
-
subtotalCents: line.subtotalCents
|
|
156852
|
-
})) ?? [], [eligibility]);
|
|
156853
|
-
const discountSubtotalCents = resolveDiscountSubtotalCents(discountContext, ticketSelectionSubtotalCents);
|
|
156854
|
-
const discountUi = deps.useDiscountCodeUi({
|
|
156855
|
-
api,
|
|
156856
|
-
discountContext,
|
|
156857
|
-
subtotalCents: discountSubtotalCents
|
|
156858
157257
|
});
|
|
156859
157258
|
const selectionMethod = paymentSelection.method;
|
|
156860
157259
|
const shouldShowDiscountToggle = discountContext !== null && discountUi.manualCodeEntryAllowed && (selectionMethod === "stripe" || selectionMethod === "pass_bundle" || selectionMethod === "membership_bundle");
|
|
@@ -157033,6 +157432,7 @@ var init_useEventRegistrationWizard = __esmMin((() => {
|
|
|
157033
157432
|
init_useEventRegistrationStripeReturn();
|
|
157034
157433
|
init_useEventRegistrationSubmit();
|
|
157035
157434
|
init_useDiscountCodeUi();
|
|
157435
|
+
init_useSettledCommerceView();
|
|
157036
157436
|
init_utils();
|
|
157037
157437
|
init_ticketSelectionLines();
|
|
157038
157438
|
init_registrationStateMachine();
|
|
@@ -157055,6 +157455,38 @@ var init_useEventRegistrationWizard = __esmMin((() => {
|
|
|
157055
157455
|
};
|
|
157056
157456
|
}));
|
|
157057
157457
|
//#endregion
|
|
157458
|
+
//#region ../blocks/src/system/runtime/nodes/event-registration/useEventCheckoutHandoffRestore.ts
|
|
157459
|
+
function eventRegistrationReloadTarget(location) {
|
|
157460
|
+
return `${location.pathname}${location.search}#${EVENT_REGISTRATION_ANCHOR_ID}`;
|
|
157461
|
+
}
|
|
157462
|
+
function reloadAtEventRegistration() {
|
|
157463
|
+
const target = eventRegistrationReloadTarget(window.location);
|
|
157464
|
+
window.history.replaceState(window.history.state, "", target);
|
|
157465
|
+
window.location.reload();
|
|
157466
|
+
}
|
|
157467
|
+
function useEventCheckoutHandoffRestore(active) {
|
|
157468
|
+
useEventCheckoutHandoffRestoreWithDeps(active, browserCheckoutHandoffRestoreDeps);
|
|
157469
|
+
}
|
|
157470
|
+
function useEventCheckoutHandoffRestoreWithDeps(active, deps) {
|
|
157471
|
+
useEffect(() => {
|
|
157472
|
+
if (!active) return;
|
|
157473
|
+
const handlePageShow = (event) => {
|
|
157474
|
+
if (event.persisted) deps.reloadAtRegistration();
|
|
157475
|
+
};
|
|
157476
|
+
deps.addPageShowListener(handlePageShow);
|
|
157477
|
+
return () => deps.removePageShowListener(handlePageShow);
|
|
157478
|
+
}, [active, deps]);
|
|
157479
|
+
}
|
|
157480
|
+
var browserCheckoutHandoffRestoreDeps;
|
|
157481
|
+
var init_useEventCheckoutHandoffRestore = __esmMin((() => {
|
|
157482
|
+
init_constants();
|
|
157483
|
+
browserCheckoutHandoffRestoreDeps = {
|
|
157484
|
+
addPageShowListener: (listener) => window.addEventListener("pageshow", listener),
|
|
157485
|
+
removePageShowListener: (listener) => window.removeEventListener("pageshow", listener),
|
|
157486
|
+
reloadAtRegistration: reloadAtEventRegistration
|
|
157487
|
+
};
|
|
157488
|
+
}));
|
|
157489
|
+
//#endregion
|
|
157058
157490
|
//#region ../blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.ts
|
|
157059
157491
|
function magicLinkSubmissionReducer(state, action) {
|
|
157060
157492
|
switch (action.type) {
|
|
@@ -159715,6 +160147,7 @@ function EventRegistrationWizard(props) {
|
|
|
159715
160147
|
events: events ?? [],
|
|
159716
160148
|
maxTicketsNum
|
|
159717
160149
|
});
|
|
160150
|
+
useEventCheckoutHandoffRestore(wizard.step === "redirecting");
|
|
159718
160151
|
const [bookingOverlayOpen, setBookingOverlayOpen] = useState(false);
|
|
159719
160152
|
const [floatingPortalRoot, setFloatingPortalRoot] = useState(null);
|
|
159720
160153
|
useEffect(() => {
|
|
@@ -159847,6 +160280,7 @@ var init_EventRegistrationWizard = __esmMin((() => {
|
|
|
159847
160280
|
init_themePortalRoot();
|
|
159848
160281
|
init_buttons();
|
|
159849
160282
|
init_constants();
|
|
160283
|
+
init_useEventCheckoutHandoffRestore();
|
|
159850
160284
|
init_EventRegistrationSurface();
|
|
159851
160285
|
init_EventRegistrationBookingLayer();
|
|
159852
160286
|
EVENT_PORTAL_AUTH_COPY = {
|
|
@@ -160653,6 +161087,7 @@ function useEventPagination({ siteId: _siteId, initialEvents = [], fetchInitialO
|
|
|
160653
161087
|
const eventSurface = filters?.eventSurface;
|
|
160654
161088
|
const eventPresets = normalizeCsvString(filters?.eventPresets);
|
|
160655
161089
|
const scheduleScope = filters?.scheduleScope;
|
|
161090
|
+
const seriesIds = filters?.seriesIds;
|
|
160656
161091
|
const eventsRef = useRef(events);
|
|
160657
161092
|
const loadingRef = useRef(loading);
|
|
160658
161093
|
const hasMoreRef = useRef(hasMore);
|
|
@@ -160680,6 +161115,7 @@ function useEventPagination({ siteId: _siteId, initialEvents = [], fetchInitialO
|
|
|
160680
161115
|
const currentEvents = eventsRef.current;
|
|
160681
161116
|
const lastEvent = options.reset ? void 0 : currentEvents[currentEvents.length - 1];
|
|
160682
161117
|
const newEvents = await getPublicEvents({
|
|
161118
|
+
seriesIds,
|
|
160683
161119
|
afterStartsAt: lastEvent ? lastEvent.startsAt : void 0,
|
|
160684
161120
|
afterId: lastEvent ? lastEvent.occurrenceId : void 0,
|
|
160685
161121
|
limit: pageSize,
|
|
@@ -160718,6 +161154,7 @@ function useEventPagination({ siteId: _siteId, initialEvents = [], fetchInitialO
|
|
|
160718
161154
|
eventSurface,
|
|
160719
161155
|
eventPresets,
|
|
160720
161156
|
scheduleScope,
|
|
161157
|
+
seriesIds,
|
|
160721
161158
|
normalizedCategoryIds,
|
|
160722
161159
|
normalizedStaffMemberId,
|
|
160723
161160
|
normalizedVenueId
|
|
@@ -160727,7 +161164,7 @@ function useEventPagination({ siteId: _siteId, initialEvents = [], fetchInitialO
|
|
|
160727
161164
|
}, [fetchPage]);
|
|
160728
161165
|
const initialFetchAttemptKeyRef = useRef(null);
|
|
160729
161166
|
useEffect(() => {
|
|
160730
|
-
if (!fetchInitialOnMount) return;
|
|
161167
|
+
if (!fetchInitialOnMount || seriesIds === "") return;
|
|
160731
161168
|
if (!filtersMatchInitial) return;
|
|
160732
161169
|
if (initialEventsRef.current.length > 0) return;
|
|
160733
161170
|
if (eventsRef.current.length > 0) return;
|
|
@@ -160741,7 +161178,8 @@ function useEventPagination({ siteId: _siteId, initialEvents = [], fetchInitialO
|
|
|
160741
161178
|
fetchPage,
|
|
160742
161179
|
filtersKey,
|
|
160743
161180
|
filtersMatchInitial,
|
|
160744
|
-
stage
|
|
161181
|
+
stage,
|
|
161182
|
+
seriesIds
|
|
160745
161183
|
]);
|
|
160746
161184
|
const prevFiltersMatchInitialRef = useRef(filtersMatchInitial);
|
|
160747
161185
|
const prevInitialEventsKeyRef = useRef(initialEventsKey);
|
|
@@ -160876,7 +161314,7 @@ var init_useEventFilters_state = __esmMin((() => {
|
|
|
160876
161314
|
* const events = await api.getPublicEvents(params);
|
|
160877
161315
|
* ```
|
|
160878
161316
|
*/
|
|
160879
|
-
function useEventFilters({ showCategoryFilter = "auto", showVenueFilter = false, showStaffFilter = false, preFilterCategoryIds, preFilterStaffMemberId, preFilterVenueId, preFilterEventSurface, preFilterEventPresets, preFilterScheduleScope } = {}) {
|
|
161317
|
+
function useEventFilters({ showCategoryFilter = "auto", showVenueFilter = false, showStaffFilter = false, preFilterSeriesIds, preFilterCategoryIds, preFilterStaffMemberId, preFilterVenueId, preFilterEventSurface, preFilterEventPresets, preFilterScheduleScope } = {}) {
|
|
160880
161318
|
const api = useBlockApi();
|
|
160881
161319
|
const [loadState, dispatchLoadState] = useReducer(eventFiltersLoadReducer, void 0, createInitialEventFiltersLoadState);
|
|
160882
161320
|
const filters = getEventFiltersData(loadState);
|
|
@@ -161025,6 +161463,7 @@ function useEventFilters({ showCategoryFilter = "auto", showVenueFilter = false,
|
|
|
161025
161463
|
setSelectedVenueId("all");
|
|
161026
161464
|
}, []),
|
|
161027
161465
|
getFilterParams: useCallback(() => {
|
|
161466
|
+
if (preFilterSeriesIds != null) return { seriesIds: preFilterSeriesIds };
|
|
161028
161467
|
const params = {};
|
|
161029
161468
|
if (fixedEventSurface) params.eventSurface = fixedEventSurface;
|
|
161030
161469
|
if (fixedEventPresets) params.eventPresets = fixedEventPresets;
|
|
@@ -161038,6 +161477,7 @@ function useEventFilters({ showCategoryFilter = "auto", showVenueFilter = false,
|
|
|
161038
161477
|
params.staffMemberId = fixedStaffMemberId ?? (selectedStaffMemberId !== "all" ? selectedStaffMemberId : void 0);
|
|
161039
161478
|
return params;
|
|
161040
161479
|
}, [
|
|
161480
|
+
preFilterSeriesIds,
|
|
161041
161481
|
allowedCategoryIds,
|
|
161042
161482
|
allowedCategorySet,
|
|
161043
161483
|
fixedEventPresets,
|
|
@@ -161073,25 +161513,12 @@ var init_EventListing_client = __esmMin((() => {
|
|
|
161073
161513
|
const hydration = render.hydration;
|
|
161074
161514
|
const filtersIdBase = useId();
|
|
161075
161515
|
const initialListEvents = useMemo(() => [...display.events], [display.events]);
|
|
161076
|
-
const initialListFilters =
|
|
161077
|
-
eventSurface: hydration.eventSurface,
|
|
161078
|
-
filterEventPresets: hydration.filterEventPresets,
|
|
161079
|
-
scheduleScope: hydration.scheduleScope,
|
|
161080
|
-
filterCategoryIds: hydration.filterCategoryIds,
|
|
161081
|
-
filterStaffMemberId: hydration.filterStaffMemberId,
|
|
161082
|
-
filterVenueId: hydration.filterVenueId
|
|
161083
|
-
}), [
|
|
161084
|
-
hydration.eventSurface,
|
|
161085
|
-
hydration.filterEventPresets,
|
|
161086
|
-
hydration.scheduleScope,
|
|
161087
|
-
hydration.filterCategoryIds,
|
|
161088
|
-
hydration.filterStaffMemberId,
|
|
161089
|
-
hydration.filterVenueId
|
|
161090
|
-
]);
|
|
161516
|
+
const initialListFilters = buildEventRuntimeFilters(hydration);
|
|
161091
161517
|
const { categories, venues, staffMembers, selectedCategoryId, selectedStaffMemberId, selectedVenueId, loading: filtersLoading, shouldShowCategoryFilter, shouldShowVenueFilter, shouldShowStaffFilter, hasActiveFilters, setSelectedCategoryId, setSelectedStaffMemberId, setSelectedVenueId, resetFilters, getFilterParams } = useEventFilters({
|
|
161092
161518
|
showCategoryFilter: hydration.showFilters ? hydration.showCategoryFilter : "never",
|
|
161093
161519
|
showVenueFilter: hydration.showFilters ? hydration.showVenueFilter : false,
|
|
161094
161520
|
showStaffFilter: hydration.showFilters ? hydration.showStaffFilter : false,
|
|
161521
|
+
preFilterSeriesIds: hydration.seriesIds,
|
|
161095
161522
|
preFilterCategoryIds: hydration.filterCategoryIds ?? void 0,
|
|
161096
161523
|
preFilterStaffMemberId: hydration.filterStaffMemberId ?? void 0,
|
|
161097
161524
|
preFilterVenueId: hydration.filterVenueId ?? void 0,
|
|
@@ -161908,6 +162335,7 @@ function toEventCombinedControllerProps(props) {
|
|
|
161908
162335
|
eventSurface: props.render.display.eventSurface,
|
|
161909
162336
|
filterEventPresets: props.render.display.filterEventPresets,
|
|
161910
162337
|
scheduleScope: props.render.display.scheduleScope,
|
|
162338
|
+
seriesIds: props.render.display.seriesIds,
|
|
161911
162339
|
filterCategoryIds: props.render.display.filterCategoryIds,
|
|
161912
162340
|
filterStaffMemberId: props.render.display.filterStaffMemberId,
|
|
161913
162341
|
filterVenueId: props.render.display.filterVenueId,
|
|
@@ -162043,7 +162471,7 @@ var init_EventCombined_client = __esmMin((() => {
|
|
|
162043
162471
|
EventCombinedClient = ({ events: initialEvents, siteId, stage, listLayout = "stack", listColumns = "3", eventsPerPage = 12, paginationAction = {
|
|
162044
162472
|
kind: "loadMore",
|
|
162045
162473
|
label: "Load more events"
|
|
162046
|
-
}, 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 }) => {
|
|
162474
|
+
}, 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 }) => {
|
|
162047
162475
|
const hydrationReady = useHydrationReady();
|
|
162048
162476
|
const fetchInitialEventsOnMount = initialEvents == null;
|
|
162049
162477
|
const resolvedShowFilters = showFilters ?? true;
|
|
@@ -162069,6 +162497,7 @@ var init_EventCombined_client = __esmMin((() => {
|
|
|
162069
162497
|
showCategoryFilter: resolvedShowFilters ? showCategoryFilter : "never",
|
|
162070
162498
|
showVenueFilter: resolvedShowFilters ? resolvedShowVenueFilter : false,
|
|
162071
162499
|
showStaffFilter: resolvedShowFilters ? resolvedShowStaffFilter : false,
|
|
162500
|
+
preFilterSeriesIds: seriesIds,
|
|
162072
162501
|
preFilterCategoryIds: filterCategoryIds,
|
|
162073
162502
|
preFilterStaffMemberId: filterStaffMemberId,
|
|
162074
162503
|
preFilterVenueId: filterVenueId,
|
|
@@ -162076,21 +162505,15 @@ var init_EventCombined_client = __esmMin((() => {
|
|
|
162076
162505
|
preFilterEventPresets: filterEventPresets,
|
|
162077
162506
|
preFilterScheduleScope: resolvedScheduleScope
|
|
162078
162507
|
});
|
|
162079
|
-
const initialListFilters =
|
|
162508
|
+
const initialListFilters = buildEventRuntimeFilters({
|
|
162080
162509
|
eventSurface: resolvedEventSurface,
|
|
162081
162510
|
filterEventPresets,
|
|
162082
162511
|
scheduleScope: resolvedScheduleScope,
|
|
162512
|
+
seriesIds,
|
|
162083
162513
|
filterCategoryIds,
|
|
162084
162514
|
filterStaffMemberId,
|
|
162085
162515
|
filterVenueId
|
|
162086
|
-
})
|
|
162087
|
-
resolvedEventSurface,
|
|
162088
|
-
filterCategoryIds,
|
|
162089
|
-
filterEventPresets,
|
|
162090
|
-
filterStaffMemberId,
|
|
162091
|
-
filterVenueId,
|
|
162092
|
-
resolvedScheduleScope
|
|
162093
|
-
]);
|
|
162516
|
+
});
|
|
162094
162517
|
const listFilters = useMemo(() => getFilterParams(), [getFilterParams]);
|
|
162095
162518
|
const pageSize = eventsPerPage;
|
|
162096
162519
|
const { events: paginatedEvents, loading: eventsLoading, error: eventsError, hasMore, loadMore } = useEventPagination({
|
|
@@ -162359,6 +162782,7 @@ function useEventCalendarFilterState(display) {
|
|
|
162359
162782
|
showCategoryFilter: display.showFilters ? display.showCategoryFilter : "never",
|
|
162360
162783
|
showVenueFilter: display.showFilters ? display.showVenueFilter : false,
|
|
162361
162784
|
showStaffFilter: display.showFilters ? display.showStaffFilter : false,
|
|
162785
|
+
preFilterSeriesIds: display.seriesIds,
|
|
162362
162786
|
preFilterCategoryIds: display.filterCategoryIds,
|
|
162363
162787
|
preFilterStaffMemberId: display.filterStaffMemberId,
|
|
162364
162788
|
preFilterVenueId: display.filterVenueId,
|
|
@@ -162392,6 +162816,7 @@ function buildDisplayFilterParams(display) {
|
|
|
162392
162816
|
eventSurface: display.eventSurface,
|
|
162393
162817
|
filterEventPresets: display.filterEventPresets,
|
|
162394
162818
|
scheduleScope: display.scheduleScope,
|
|
162819
|
+
seriesIds: display.seriesIds,
|
|
162395
162820
|
filterCategoryIds: display.filterCategoryIds,
|
|
162396
162821
|
filterStaffMemberId: display.filterStaffMemberId,
|
|
162397
162822
|
filterVenueId: display.filterVenueId
|
|
@@ -162438,6 +162863,7 @@ var init_EventCalendar_client = __esmMin((() => {
|
|
|
162438
162863
|
eventSurface: display.eventSurface,
|
|
162439
162864
|
filterEventPresets: display.filterEventPresets,
|
|
162440
162865
|
scheduleScope: display.scheduleScope,
|
|
162866
|
+
seriesIds: display.seriesIds,
|
|
162441
162867
|
filterCategoryIds: display.filterCategoryIds,
|
|
162442
162868
|
filterStaffMemberId: display.filterStaffMemberId,
|
|
162443
162869
|
filterVenueId: display.filterVenueId,
|
|
@@ -162461,6 +162887,7 @@ var init_EventCalendar_client = __esmMin((() => {
|
|
|
162461
162887
|
const { display, hydration } = render;
|
|
162462
162888
|
const filters = useMemo(() => buildDisplayFilterParams(display), [
|
|
162463
162889
|
display.eventSurface,
|
|
162890
|
+
display.seriesIds,
|
|
162464
162891
|
display.filterCategoryIds,
|
|
162465
162892
|
display.filterEventPresets,
|
|
162466
162893
|
display.filterStaffMemberId,
|
|
@@ -164537,7 +164964,7 @@ function NewsletterFormClient({ render }) {
|
|
|
164537
164964
|
if (submitTarget.tag === "unavailable") {
|
|
164538
164965
|
dispatchSubmission({
|
|
164539
164966
|
type: "failed",
|
|
164540
|
-
error: newsletterFormError(
|
|
164967
|
+
error: newsletterFormError(SIGNUPS_PAUSED_MESSAGE)
|
|
164541
164968
|
});
|
|
164542
164969
|
return;
|
|
164543
164970
|
}
|
|
@@ -164548,14 +164975,16 @@ function NewsletterFormClient({ render }) {
|
|
|
164548
164975
|
});
|
|
164549
164976
|
return;
|
|
164550
164977
|
}
|
|
164551
|
-
const
|
|
164552
|
-
|
|
164978
|
+
const selection = readVisitorSelection(formData, render.hydration);
|
|
164979
|
+
const selectionError = visitorSelectionError(selection);
|
|
164980
|
+
if (selectionError) {
|
|
164553
164981
|
dispatchSubmission({
|
|
164554
164982
|
type: "failed",
|
|
164555
|
-
error:
|
|
164983
|
+
error: selectionError
|
|
164556
164984
|
});
|
|
164557
164985
|
return;
|
|
164558
164986
|
}
|
|
164987
|
+
const visitorSelection = selection.tag === "chosen" ? selection.value : void 0;
|
|
164559
164988
|
dispatchSubmission({ type: "submitted" });
|
|
164560
164989
|
try {
|
|
164561
164990
|
const result = await api.subscribeNewsletter({
|
|
@@ -164749,10 +165178,18 @@ function transportFailureMessage(err) {
|
|
|
164749
165178
|
}
|
|
164750
165179
|
return RETRY_SHORTLY_MESSAGE;
|
|
164751
165180
|
}
|
|
165181
|
+
function visitorSelectionError(selection) {
|
|
165182
|
+
switch (selection.tag) {
|
|
165183
|
+
case "nothing_chosen": return newsletterFieldError(TOPIC_CHOICE_FIELD_ID, "Choose at least one email topic.");
|
|
165184
|
+
case "unusable": return newsletterFormError(SIGNUPS_PAUSED_MESSAGE);
|
|
165185
|
+
case "not_offered":
|
|
165186
|
+
case "chosen": return null;
|
|
165187
|
+
}
|
|
165188
|
+
}
|
|
164752
165189
|
function readVisitorSelection(formData, hydration) {
|
|
164753
|
-
if (hydration.choicePresentation !== "visitor_choice") return
|
|
165190
|
+
if (hydration.choicePresentation !== "visitor_choice") return { tag: "not_offered" };
|
|
164754
165191
|
const ids = formData.getAll(TOPIC_CHOICE_FIELD_ID).flatMap((value) => typeof value === "string" ? [value] : []);
|
|
164755
|
-
if (ids.length === 0) return
|
|
165192
|
+
if (ids.length === 0) return { tag: "nothing_chosen" };
|
|
164756
165193
|
const raw = hydration.choiceProvider === "native" ? {
|
|
164757
165194
|
provider: "native",
|
|
164758
165195
|
topicIds: ids
|
|
@@ -164763,9 +165200,12 @@ function readVisitorSelection(formData, hydration) {
|
|
|
164763
165200
|
provider: "mailchimp",
|
|
164764
165201
|
interestIds: ids
|
|
164765
165202
|
} : null;
|
|
164766
|
-
if (raw === null) return
|
|
165203
|
+
if (raw === null) return { tag: "unusable" };
|
|
164767
165204
|
const parsed = parseMailingListVisitorSelection(raw);
|
|
164768
|
-
return parsed.ok ?
|
|
165205
|
+
return parsed.ok ? {
|
|
165206
|
+
tag: "chosen",
|
|
165207
|
+
value: parsed.value
|
|
165208
|
+
} : { tag: "unusable" };
|
|
164769
165209
|
}
|
|
164770
165210
|
function publicSignupError(outcome) {
|
|
164771
165211
|
switch (outcome.tag) {
|
|
@@ -165091,9 +165531,20 @@ function BlocksIslandsHydrator(props = {}) {
|
|
|
165091
165531
|
}
|
|
165092
165532
|
//#endregion
|
|
165093
165533
|
//#region ../theme-core/src/hosted-booking-appearance.ts
|
|
165534
|
+
init_schema$2();
|
|
165094
165535
|
init_colors();
|
|
165095
165536
|
init_expandPalette();
|
|
165096
165537
|
init_tokens();
|
|
165538
|
+
init_modern_minimal();
|
|
165539
|
+
z$1.object({
|
|
165540
|
+
palette: paletteColorsSchema,
|
|
165541
|
+
paletteMode: paletteModeSchema,
|
|
165542
|
+
typography: z$1.object({
|
|
165543
|
+
headingFamily: z$1.string().trim().min(1),
|
|
165544
|
+
bodyFamily: z$1.string().trim().min(1)
|
|
165545
|
+
}).strict(),
|
|
165546
|
+
corners
|
|
165547
|
+
}).strict();
|
|
165097
165548
|
//#endregion
|
|
165098
165549
|
//#region ../theme-core/src/index.ts
|
|
165099
165550
|
init_schema$2();
|
|
@@ -165459,7 +165910,7 @@ var SimpleCache = class {
|
|
|
165459
165910
|
* 1. This constant
|
|
165460
165911
|
* 2. The "version" field in package.json
|
|
165461
165912
|
*/
|
|
165462
|
-
const SDK_VERSION = "0.
|
|
165913
|
+
const SDK_VERSION = "0.142.0";
|
|
165463
165914
|
//#endregion
|
|
165464
165915
|
//#region src/client/error.ts
|
|
165465
165916
|
let _Symbol$for;
|