riverbankcms 0.8.0 → 0.9.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/acceptance/matrix.mjs +3 -3
- package/dist/cli/index.mjs +817 -576
- package/dist/cli/init-docs/content/cli-reference.md +2 -0
- package/dist/cli/init-docs/content/content-management.md +3 -1
- package/dist/{eventUpsertInputSchema-BE3nSNsn.mjs → eventUpsertInputSchema-CqHIJp9H.mjs} +2 -2
- package/dist/load-config-CKBdp8M0.mjs +4 -0
- package/dist/{load-config-De0cFlPg.mjs → load-config-Cf5uPEAn.mjs} +2 -2
- package/dist/{local-sync-EcUwLrRx.mjs → local-sync-DF-2DL_D.mjs} +12 -3
- package/dist/{plan-DtQEnwCM.mjs → plan-By0bjnd3.mjs} +1 -1
- package/dist/scaffold/index.mjs +2 -2
- package/dist/{sdk-event-upsert-Bf6wAl4s.mjs → sdk-event-upsert-BNxbxaA0.mjs} +57 -28
- package/dist/{src-B8fOSKJ6.mjs → src-DbmhanBI.mjs} +76 -1
- package/dist/testing.mjs +3 -3
- package/package.json +1 -1
- package/dist/load-config-Ca13nCpT.mjs +0 -4
package/dist/cli/index.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { $ as generateBaseInteractiveCSS, $n as
|
|
3
|
-
import { $ as formatEventPricing, A as parseFooterCompositionV1, B as formatBookingTime, C as parseMailingListContentVersionId, D as DEFAULT_MAILING_LIST_SUCCESS_MESSAGE, E as planMailingListChoicePresentation, Et as unsafeAsMediaAssetId, F as normalizeLocationAddressText, G as getLocalScheduleTime, H as formatLocalScheduleTime, Ht as ok, I as toLocationCoordinates, It as unsafeAsStaffMemberId, J as toScheduledBookingDateRange, L as buildBookingUtcDateWindow, N as assertAllowedPublicUrl, O as parseMailingListProviderScope, Q as formatBookingPriceDisplay, R as formatBookingDate, S as parseMailingListBlockId, T as parseMailingListRuntimeContext, U as getBookingLocalDateKey, V as formatLocalScheduleDate, Vt as err, W as getLocalScheduleDate, Y as toScheduledBookingDateTime, Z as parseEventPageSurfaceSubject, _ as createSecret, at as resolvePricingOptionsPriceDisplay, bt as unsafeAsDemoCapability, c as DEFAULT_EVENT_TYPE_PRESETS, ct as formatCurrencyAmount, d as SURFACE_EVENT_PRESET_VALUES, dt as parseEventSeriesId, et as isPublicEventPricingOptionDisplayable, f as WHOLE_SERIES_EVENT_PRESET_VALUES, ft as parseMediaAssetId, g as resolveWholeSeriesBookingPhase, gt as unsafeAsAppointmentResourceId, h as orderedLiveRunSessions, ht as parseUserId,
|
|
4
|
-
import { $ as sdkUpsertEventResponseSchema, A as resolveMediaTransformForAspect, B as asRecord$1, C as walkAndCollectImageAttrs, D as normalizeWidthCandidates, E as rotateNormalizedPoint, F as buildMediaIdentifierFromFilename, G as parseSafeDownloadFilename, H as FILE_SIZE_LIMITS, I as parseMediaIdentifier, J as createHttpClient, K as ManagementApiError, L as deriveVideoSlotPolicy, M as getDirectImageUrlForSiteScopedPath, N as getImageUrl, O as isExplicitRectCrop, P as isSiteScopedDirectImageStoragePath, Q as sdkListEventsResponseSchema, R as resolveVideoSelectionIntentForMediaField, S as buildRenderableMediaAssetIndex, T as looksLikeUuid$1, U as classifyKnownMimeType, V as parseRelativeStoragePath, W as managementMediaLibraryUploadLimitForMimeType, X as sdkConfigureBookingVerticalResponseSchema, Y as is404Error, Z as sdkGetEventResponseSchema, _ as buildSettingsUpdateInput, _t as sdkConfiguredBookingVerticalConfigSchema, a as prepareLocalMediaForPush, at as externalLinkSchema$1, b as isMediaValue, c as writeBinaryFileAtomic, ct as internalRouteOnlyLinkSchema, d as normalizeMediaValueToIdentifierOnly, dt as linkSchema, et as sdkSettingsUpdateSchema, f as walkLocalContentMedia, ft as pageLinkSchema$1, g as SETTINGS_FILE_FIELDS, gt as sdkReorderResponseSchema, h as extractMediaIdentifiers, ht as sdkListEventOccurrencesResponseSchema, i as applyLocalMediaPush, it as entryLinkSchema$1, j as getDirectImageUrlForRelativePath, k as parseAspectRatioValue, l as sha256, lt as isInternalResolvedLinkValue, m as downloadMedia, mt as sdkEventOccurrenceResponseSchema, nt as RESOLVED_INTERNAL_LINK_ENTITY_TYPES, o as admitBinaryWriteDestination, ot as internalLinkSchema, p as buildStorageUrl, pt as sdkDeleteEventOccurrenceResponseSchema, q as buildRequestInfo, r as syncLocalMediaForPull, rt as customLinkSchema$1, s as readStableBinaryFile, st as internalResolvedLinkSchema, t as revalidateLocalMediaPushPlan, tt as linkPayloadSchema, u as normalizeMediaIdentifierInput, ut as isResolvedInternalLinkEntityType, v as hasOwnSettingsField, w as deleteEnvSpecificKeys, x as attachRenderableMediaAssetFields, y as writeMediaManifest, z as getMimeType } from "../local-sync-
|
|
5
|
-
import { n as CliSdkPeerError, r as CLI_VERSION, t as loadConfigFile } from "../load-config-
|
|
6
|
-
import { a as RichTextDocSchema, c as isRecord$17, i as findUnfilledSentinels, n as buildEntryScaffold, o as isRichTextDoc, r as validateEntryInstance, s as isObjectRecord, t as eventUpsertInputSchema } from "../eventUpsertInputSchema-
|
|
7
|
-
import { a as prepareScaffoldExecution, c as LOCAL_PACKAGE_VENDOR_DIR, d as loadGeneratedPackageRanges, i as preflightScaffoldTargets, n as createScaffoldCompletion, s as deriveScaffoldLocalManifest, t as deriveScaffoldPlan } from "../plan-
|
|
2
|
+
import { $ as generateBaseInteractiveCSS, $n as parseBlockColorToken, $t as NAV_LINK_BORDER_RADIUS_MAP, A as getGradientPreset, An as buildThemeTokens, At as resolveThemeColorReferenceValue, B as generateCssVars, Bn as surfaceForegroundValue, Bt as eyebrowTreatmentValues, C as retargetCompiledBoundaryRuntimeForContentAdjacency, Cn as textColorStyle, Ct as MQ_MD_DOWN, D as compileTransitionRuntime, Dn as resolveSurfaceForeground, Dt as headerVariantValues, E as getCuratedSiteStyle, En as surfaceToneFromForegroundToken, Et as MQ_TABLET_ONLY, F as parseBackgroundAppearanceColorToken, Fn as hexToRgb, Ft as assertNever$4, G as resolvedButtonColourDeclarations, Gn as mediaIdentifierSchema, Gt as offeringsPreviewCompositionTreatmentValues, H as PUBLIC_BUTTON_ROLES, Hn as cardRoleSchema, Ht as headingDecorationColorTokenValues, I as defineBlockDesignMetadata, In as oklchToHexGamut, It as defineBlockDesignCapability, J as contextualButtonSurfaceStyles, Jn as persistableMediaSchema, Jt as visibleHeadingDecorationFamilyValues, K as resolvedButtonFocusDeclarations, Kn as mediaSchema, Kt as testimonialsCompositionTreatmentValues, L as require_jsx_runtime, Ln as DEFAULT_SURFACE_TEXT_COLOR, Lt as defineFrameCapability, M as boundaryRuntimeMetricsForTransition, Mn as ORDINARY_TEXT_MIN_CONTRAST_RATIO, Mt as pageDesignEditorBackgroundOverrideOwner, N as backgroundAppearanceColorTokenNames, Nn as contrastRatio, O as gradientToCss, On as isOnColorBackgroundCandidateToken, Ot as isCssColorLiteral, P as backgroundAppearanceQuickColorTokenNames, Pn as featuresFromHex, Pt as asDesignBlockId, Q as generateEffectsCSS, Qn as unsafeAsOpaqueButtonColourToken, Qt as parseCustomCssRules, R as require_react, Rn as surfaceForegroundDeclarations, Rt as defineNoBlockDesignCapability, Sn as rgbColorValue, St as MQ_LG_UP, T as readHeaderNavFontSizePreference, Tn as selectLogoVariant, Tt as MQ_SM_UP, U as generateButtonCss, Un as cardVariantRoleValues, Ut as introCompositionTreatmentValues, Vn as generateShadowValue$1, Vt as featureCardCompositionTreatmentValues, W as RESOLVED_BUTTON_DISABLED_DECLARATIONS, Wn as normalizeCardRole, Wt as makeBoundaryId, X as resolveContextualButtonRole, Xn as VARIANT_ROLES, Xt as getComponentShadowVar, Y as deriveButtonSurfaceContext, Yn as footerModeSchema, Yt as getComponentBorderWidthPx, Z as generateDefaultButtonSystem, Zn as buttonVariantIdSchema, Zt as parseBlockCustomCssRules, _ as entryIdentifierForCommand, _n as TokenResolver, _t as renderHeaderPaintTargetRules, a as classifySdkEventBookingOffer, an as INPUT_FONT_SIZE_MAP, ar as createEventSeriesRef, at as parseThemeForPersistence, b as pagePathForCommand, bn as cssVarValue, bt as BREAKPOINT_SM, c as stableStringify, cn as ACCORDION_OPEN_ACCENT_THICKNESS, cr as createNavigationRef, ct as generateShadowValue, d as mapEventCommandContent, dn as ACCORDION_TRIGGER_LETTER_SPACING, dr as createVenueRef, dt as themeSchema, en as NAV_LINK_LETTER_SPACING_MAP, er as createBlockRef, et as generateInteractiveChildInheritanceCSS, f as evaluateSiteCommandBatchExposure, fn as ICON_CONFIG, fr as refSlug, ft as boxBackgroundOverlaySchema, g as blockOrderIdentifiersForCommand, gn as generateCardCss, gt as getHeaderPaintTargets, h as blockIdentifierForCommand, hn as getDefaultCardVariants, ht as generateMobileOverlayBackdropFilterFix, in as FONT_WEIGHT_MAP, ir as createEventCategoryRef, it as themeButtonVariantClassNames, j as parseGradientPresetId, jn as defaultThemeTokens, jt as resolveTokenOrCssColorValue, k as GRADIENT_PRESET_IDS, kn as onColorTokenName, kt as resolveOnColorForThemeToken, l as createDryRunReport, ln as ACCORDION_SPACING_MAP, lr as createPageRef, lt as expandPalette, m as getSiteCommandMetadata, mn as generateCardCoreCss, mr as __toESM, mt as generateHeaderScrollTreatmentStyles, nn as NAV_LINK_PADDING_X_MAP, nr as createCommandRef, nt as themeButtonExtraClassesWithTrailingIcon, o as venueManagementFields, on as INPUT_SPACING_MAP, or as createFooterRef, ot as compileButtonColourStates, p as evaluateSiteCommandExposure, pn as ICON_SIZE_PX, pr as slugPart, pt as boxBackgroundSchema, q as contextualButtonSurfaceResetStyles, qn as mediaTypeDiscriminants, qt as tileTreatmentValues, rn as NAV_LINK_TEXT_SIZE_MAP, rr as createContentEntryRef, rt as themeButtonSizeClassName, s as sortRecord, sn as LABEL_FONT_SIZE_MAP, sr as createFormRef, st as formatButtonColourContractError, t as classifySdkEventTiming, tn as NAV_LINK_PADDING_MAP, tr as createBlocksRef, tt as parseThemeButtonVariantId, u as parseAndPlanCommandBatchForTypes, un as ACCORDION_TRIGGER_FONT_SCALE, ur as createSiteCommandSiteRef, ut as getTextColorForBackground, v as pageIdentifierForBlockCommand, vn as backgroundColorStyle, vt as BREAKPOINT_LG, w as mergeHeaderNavTypographyPreference, wn as textColorValue, wt as MQ_SM_DOWN, x as hasConfiguredBookingVertical, xn as mergeStyles, xt as BREAKPOINT_XL, y as pageIdentifierForCommand, yn as borderColorStyle, yt as BREAKPOINT_MD, z as pickShadeTowardBackground, zn as surfaceForegroundStyle, zt as eventListTreatmentValues } from "../sdk-event-upsert-BNxbxaA0.mjs";
|
|
3
|
+
import { $ as formatEventPricing, A as parseFooterCompositionV1, B as formatBookingTime, C as parseMailingListContentVersionId, D as DEFAULT_MAILING_LIST_SUCCESS_MESSAGE, E as planMailingListChoicePresentation, Et as unsafeAsMediaAssetId, F as normalizeLocationAddressText, G as getLocalScheduleTime, H as formatLocalScheduleTime, Ht as ok, I as toLocationCoordinates, It as unsafeAsStaffMemberId, J as toScheduledBookingDateRange, L as buildBookingUtcDateWindow, N as assertAllowedPublicUrl, O as parseMailingListProviderScope, Q as formatBookingPriceDisplay, R as formatBookingDate, S as parseMailingListBlockId, T as parseMailingListRuntimeContext, U as getBookingLocalDateKey, V as formatLocalScheduleDate, Vt as err, W as getLocalScheduleDate, Y as toScheduledBookingDateTime, Z as parseEventPageSurfaceSubject, _ as createSecret, at as resolvePricingOptionsPriceDisplay, bt as unsafeAsDemoCapability, c as DEFAULT_EVENT_TYPE_PRESETS, ct as formatCurrencyAmount, d as SURFACE_EVENT_PRESET_VALUES, dt as parseEventSeriesId, et as isPublicEventPricingOptionDisplayable, f as WHOLE_SERIES_EVENT_PRESET_VALUES, ft as parseMediaAssetId, g as resolveWholeSeriesBookingPhase, gt as unsafeAsAppointmentResourceId, h as orderedLiveRunSessions, ht as parseUserId, it as resolveExactOrFreePriceDisplay, j as parseMailingListPlacementTargeting, kt as unsafeAsPositiveByteCount, l as EVENT_PRESET_VALUES, lt as assertNever, m as CANCELLED_SESSION_STATUS, mt as parseSiteId, n as NAVIGATION_LOCATIONS, nt as publicEventPricingDisplay, p as publicReadFreshnessSeconds, pt as parsePageId, q as toBookingTimeZone, r as areConfiguredBookingVerticalConfigsEqual, rt as publicEventPricingType, s as resolveSiteVerticalBookingConfig, t as resolveEventCatalogue, tt as publicEventPricingCurrency, ut as parseApiKeyId, v as exposeSecret, w as parseMailingListSignedSourceToken, x as buildMailingListSignupBlockSourceRef, y as parseManagementKey, z as formatBookingDateParts } from "../src-DbmhanBI.mjs";
|
|
4
|
+
import { $ as sdkUpsertEventResponseSchema, A as resolveMediaTransformForAspect, B as asRecord$1, C as walkAndCollectImageAttrs, D as normalizeWidthCandidates, E as rotateNormalizedPoint, F as buildMediaIdentifierFromFilename, G as parseSafeDownloadFilename, H as FILE_SIZE_LIMITS, I as parseMediaIdentifier, J as createHttpClient, K as ManagementApiError, L as deriveVideoSlotPolicy, M as getDirectImageUrlForSiteScopedPath, N as getImageUrl, O as isExplicitRectCrop, P as isSiteScopedDirectImageStoragePath, Q as sdkListEventsResponseSchema, R as resolveVideoSelectionIntentForMediaField, S as buildRenderableMediaAssetIndex, T as looksLikeUuid$1, U as classifyKnownMimeType, V as parseRelativeStoragePath, W as managementMediaLibraryUploadLimitForMimeType, X as sdkConfigureBookingVerticalResponseSchema, Y as is404Error, Z as sdkGetEventResponseSchema, _ as buildSettingsUpdateInput, _t as sdkConfiguredBookingVerticalConfigSchema, a as prepareLocalMediaForPush, at as externalLinkSchema$1, b as isMediaValue, c as writeBinaryFileAtomic, ct as internalRouteOnlyLinkSchema, d as normalizeMediaValueToIdentifierOnly, dt as linkSchema, et as sdkSettingsUpdateSchema, f as walkLocalContentMedia, ft as pageLinkSchema$1, g as SETTINGS_FILE_FIELDS, gt as sdkReorderResponseSchema, h as extractMediaIdentifiers, ht as sdkListEventOccurrencesResponseSchema, i as applyLocalMediaPush, it as entryLinkSchema$1, j as getDirectImageUrlForRelativePath, k as parseAspectRatioValue, l as sha256, lt as isInternalResolvedLinkValue, m as downloadMedia, mt as sdkEventOccurrenceResponseSchema, nt as RESOLVED_INTERNAL_LINK_ENTITY_TYPES, o as admitBinaryWriteDestination, ot as internalLinkSchema, p as buildStorageUrl, pt as sdkDeleteEventOccurrenceResponseSchema, q as buildRequestInfo, r as syncLocalMediaForPull, rt as customLinkSchema$1, s as readStableBinaryFile, st as internalResolvedLinkSchema, t as revalidateLocalMediaPushPlan, tt as linkPayloadSchema, u as normalizeMediaIdentifierInput, ut as isResolvedInternalLinkEntityType, v as hasOwnSettingsField, w as deleteEnvSpecificKeys, x as attachRenderableMediaAssetFields, y as writeMediaManifest, z as getMimeType } from "../local-sync-DF-2DL_D.mjs";
|
|
5
|
+
import { n as CliSdkPeerError, r as CLI_VERSION, t as loadConfigFile } from "../load-config-Cf5uPEAn.mjs";
|
|
6
|
+
import { a as RichTextDocSchema, c as isRecord$17, i as findUnfilledSentinels, n as buildEntryScaffold, o as isRichTextDoc, r as validateEntryInstance, s as isObjectRecord, t as eventUpsertInputSchema } from "../eventUpsertInputSchema-CqHIJp9H.mjs";
|
|
7
|
+
import { a as prepareScaffoldExecution, c as LOCAL_PACKAGE_VENDOR_DIR, d as loadGeneratedPackageRanges, i as preflightScaffoldTargets, n as createScaffoldCompletion, s as deriveScaffoldLocalManifest, t as deriveScaffoldPlan } from "../plan-By0bjnd3.mjs";
|
|
8
8
|
import { config } from "dotenv";
|
|
9
9
|
import { Command, CommanderError } from "commander";
|
|
10
10
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
@@ -3984,6 +3984,17 @@ const NEWSLETTER_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
3984
3984
|
//#endregion
|
|
3985
3985
|
//#region ../api/src/publicEventEndpointDefinitions.ts
|
|
3986
3986
|
const PUBLIC_EVENT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
3987
|
+
checkPublicEventRegistrationNextStep: {
|
|
3988
|
+
path: "/public/sites/{siteId}/events/registration-next-step",
|
|
3989
|
+
method: "POST",
|
|
3990
|
+
auth: "public",
|
|
3991
|
+
responseKind: "json",
|
|
3992
|
+
errors: [
|
|
3993
|
+
"validation:invalid_input",
|
|
3994
|
+
"auth:forbidden",
|
|
3995
|
+
"server:internal_error"
|
|
3996
|
+
]
|
|
3997
|
+
},
|
|
3987
3998
|
listPublicEventCalendarWindow: {
|
|
3988
3999
|
path: "/public/sites/{siteId}/events/calendar-window",
|
|
3989
4000
|
method: "GET",
|
|
@@ -13570,7 +13581,7 @@ function resolveDashboardBookingsNavPolicy(modules, ctx) {
|
|
|
13570
13581
|
appointments: role === "owner" ? { kind: "owner_setup" } : { kind: "hidden" }
|
|
13571
13582
|
};
|
|
13572
13583
|
}
|
|
13573
|
-
function buildDashboardBookingsNavPlan(modules, ctx,
|
|
13584
|
+
function buildDashboardBookingsNavPlan(modules, ctx, catalogue) {
|
|
13574
13585
|
const policy = resolveDashboardBookingsNavPolicy(modules, ctx);
|
|
13575
13586
|
if (policy.kind === "staff_scoped") {
|
|
13576
13587
|
return buildStaffScopedBookingsNavPlan(policy);
|
|
@@ -13591,7 +13602,7 @@ function buildDashboardBookingsNavPlan(modules, ctx, verticalConfig) {
|
|
|
13591
13602
|
groups.push({
|
|
13592
13603
|
label: "Events",
|
|
13593
13604
|
items: modules.events ? [
|
|
13594
|
-
...buildEventNavItems(
|
|
13605
|
+
...buildEventNavItems(catalogue),
|
|
13595
13606
|
{
|
|
13596
13607
|
label: "Venues",
|
|
13597
13608
|
destination: { kind: "venues" },
|
|
@@ -13848,59 +13859,49 @@ const bookingProductsItem = {
|
|
|
13848
13859
|
"unlimited"
|
|
13849
13860
|
]
|
|
13850
13861
|
};
|
|
13851
|
-
function buildEventNavItems(
|
|
13852
|
-
const
|
|
13853
|
-
|
|
13854
|
-
|
|
13855
|
-
label: "Events",
|
|
13862
|
+
function buildEventNavItems(catalogue) {
|
|
13863
|
+
const entries = catalogue.source === "generic" ? catalogue.entries.filter(({ preset }) => preset === "course") : catalogue.entries;
|
|
13864
|
+
return [
|
|
13865
|
+
{
|
|
13866
|
+
label: catalogue.source === "generic" ? "Events" : "All events",
|
|
13856
13867
|
destination: { kind: "events_all" },
|
|
13857
13868
|
keywords: [
|
|
13858
|
-
"
|
|
13859
|
-
"
|
|
13869
|
+
"events",
|
|
13870
|
+
"all events",
|
|
13860
13871
|
"sessions",
|
|
13861
13872
|
"recurring",
|
|
13862
13873
|
"shows",
|
|
13863
|
-
|
|
13874
|
+
...catalogue.entries.flatMap(({ label, pluralLabel }) => [label, pluralLabel])
|
|
13864
13875
|
]
|
|
13865
|
-
},
|
|
13866
|
-
|
|
13867
|
-
|
|
13876
|
+
},
|
|
13877
|
+
...entries.map(buildEventSeriesPresetNavItem),
|
|
13878
|
+
...catalogue.source === "business_profile" ? [{
|
|
13879
|
+
label: "Other events",
|
|
13880
|
+
destination: { kind: "events_other" },
|
|
13868
13881
|
keywords: [
|
|
13869
|
-
"
|
|
13870
|
-
"
|
|
13871
|
-
"
|
|
13872
|
-
"
|
|
13873
|
-
"
|
|
13874
|
-
"
|
|
13882
|
+
"other",
|
|
13883
|
+
"one-off",
|
|
13884
|
+
"fundraiser",
|
|
13885
|
+
"open day",
|
|
13886
|
+
"jumble sale",
|
|
13887
|
+
"party",
|
|
13888
|
+
"uncategorised"
|
|
13875
13889
|
]
|
|
13876
|
-
}]
|
|
13877
|
-
|
|
13878
|
-
const eventSeriesItems = resolved.selectedPresets.filter(isEventSeriesVerticalPresetDefinition).map(buildEventSeriesPresetNavItem);
|
|
13879
|
-
return [{
|
|
13880
|
-
label: "All events",
|
|
13881
|
-
destination: { kind: "events_all" },
|
|
13882
|
-
keywords: [
|
|
13883
|
-
"events",
|
|
13884
|
-
"all events",
|
|
13885
|
-
...resolved.selectedPresets.flatMap((preset) => [
|
|
13886
|
-
preset.label,
|
|
13887
|
-
preset.pluralLabel,
|
|
13888
|
-
preset.canonicalBehaviour
|
|
13889
|
-
])
|
|
13890
|
-
]
|
|
13891
|
-
}, ...eventSeriesItems];
|
|
13890
|
+
}] : []
|
|
13891
|
+
];
|
|
13892
13892
|
}
|
|
13893
|
-
function buildEventSeriesPresetNavItem(
|
|
13893
|
+
function buildEventSeriesPresetNavItem(entry) {
|
|
13894
13894
|
return {
|
|
13895
|
-
label:
|
|
13895
|
+
label: entry.pluralLabel,
|
|
13896
13896
|
destination: {
|
|
13897
13897
|
kind: "events_preset",
|
|
13898
|
-
preset: preset
|
|
13898
|
+
preset: entry.preset
|
|
13899
13899
|
},
|
|
13900
13900
|
keywords: [
|
|
13901
|
-
|
|
13902
|
-
|
|
13903
|
-
preset
|
|
13901
|
+
entry.label,
|
|
13902
|
+
entry.pluralLabel,
|
|
13903
|
+
entry.preset,
|
|
13904
|
+
...entry.preset === "term" ? ["course", "courses"] : []
|
|
13904
13905
|
]
|
|
13905
13906
|
};
|
|
13906
13907
|
}
|
|
@@ -16626,9 +16627,7 @@ function navRow(opts) {
|
|
|
16626
16627
|
rel: { $bind: { from: `${childItemName}.rel` } },
|
|
16627
16628
|
"data-active": { $bind: { from: `${childItemName}.active` } }
|
|
16628
16629
|
}, [text({ as: "span" }, bind(`${childItemName}.label`))], repeat(`${itemName}.children`, childItemName));
|
|
16629
|
-
const dropdown = el("div", { className: "nav-dropdown rb-relative" }, [
|
|
16630
|
-
type: "button",
|
|
16631
|
-
variantId: "",
|
|
16630
|
+
const dropdown = el("div", { className: "nav-dropdown rb-relative" }, [el("headerControl", {
|
|
16632
16631
|
className: prependClassName("nav-dropdown-trigger", linkClassName),
|
|
16633
16632
|
"aria-haspopup": "menu",
|
|
16634
16633
|
"aria-expanded": "false",
|
|
@@ -16696,9 +16695,7 @@ function navColumn(opts) {
|
|
|
16696
16695
|
const dropdown = el("div", {
|
|
16697
16696
|
className: "nav-mobile-dropdown",
|
|
16698
16697
|
"data-nav-mobile-dropdown": "true"
|
|
16699
|
-
}, [
|
|
16700
|
-
type: "button",
|
|
16701
|
-
variantId: "",
|
|
16698
|
+
}, [el("headerControl", {
|
|
16702
16699
|
className: triggerClassName,
|
|
16703
16700
|
"aria-expanded": "false",
|
|
16704
16701
|
"aria-controls": childrenId,
|
|
@@ -21732,6 +21729,58 @@ const layoutTransforms = [
|
|
|
21732
21729
|
footerLogoTextVisibleTransform
|
|
21733
21730
|
];
|
|
21734
21731
|
|
|
21732
|
+
//#endregion
|
|
21733
|
+
//#region ../blocks/src/system/transforms/registry/chromeLogo.ts
|
|
21734
|
+
const chromeLogoSurfaceValues = [
|
|
21735
|
+
"header-root",
|
|
21736
|
+
"header-mobile-panel",
|
|
21737
|
+
"footer-root"
|
|
21738
|
+
];
|
|
21739
|
+
const chromeLogoSchema = z.object({ surface: z.enum(chromeLogoSurfaceValues) });
|
|
21740
|
+
/** The brand foreground shares the logo's surface; navigation may own a separate capsule. */
|
|
21741
|
+
function chromeSurfaceTextToken(surface, theme, palette) {
|
|
21742
|
+
switch (surface) {
|
|
21743
|
+
case "header-root": {
|
|
21744
|
+
const header = theme.header;
|
|
21745
|
+
const foreground = resolveHeaderRootForeground(header, palette, resolveHeaderVisualStyles(header).isTransparent);
|
|
21746
|
+
return foreground.kind === "known" ? foreground.roles.text : resolveHeaderLeafTextColor(header);
|
|
21747
|
+
}
|
|
21748
|
+
case "header-mobile-panel": return theme.header?.dropdownStyle?.textColor ?? "text";
|
|
21749
|
+
case "footer-root": {
|
|
21750
|
+
const foreground = resolveFooterRootForeground(theme.footer, palette);
|
|
21751
|
+
return foreground.kind === "known" ? foreground.roles.text : undefined;
|
|
21752
|
+
}
|
|
21753
|
+
}
|
|
21754
|
+
}
|
|
21755
|
+
function readChromeTheme(viewModel) {
|
|
21756
|
+
const root = asPartialObject(viewModel?.["$root"]);
|
|
21757
|
+
return asPartialObject(root?.theme) ?? {};
|
|
21758
|
+
}
|
|
21759
|
+
function resolveChromeSurfaceTone(surface, context) {
|
|
21760
|
+
return surfaceToneFromForegroundToken(context.theme.palette, chromeSurfaceTextToken(surface, readChromeTheme(context.viewModel), context.theme.palette));
|
|
21761
|
+
}
|
|
21762
|
+
/**
|
|
21763
|
+
* Picks the site logo for the surface it is drawn on. Bound from block
|
|
21764
|
+
* `content`: `logoVariants` when the renderer supplies both logos, otherwise
|
|
21765
|
+
* the single `logo` older callers pass.
|
|
21766
|
+
*/
|
|
21767
|
+
const chromeLogoTransform = {
|
|
21768
|
+
id: "layout.chromeLogo",
|
|
21769
|
+
kind: "formatter",
|
|
21770
|
+
summary: "Select the light- or dark-background site logo for a header or footer surface",
|
|
21771
|
+
schema: chromeLogoSchema,
|
|
21772
|
+
run: (value, options, context) => {
|
|
21773
|
+
const content = asPartialObject(value);
|
|
21774
|
+
const variants = asPartialObject(content?.logoVariants);
|
|
21775
|
+
if (!variants) return content?.logo ?? null;
|
|
21776
|
+
return selectLogoVariant(resolveChromeSurfaceTone(options.surface, context), {
|
|
21777
|
+
forLightBackgrounds: variants.forLightBackgrounds ?? null,
|
|
21778
|
+
forDarkBackgrounds: variants.forDarkBackgrounds ?? null
|
|
21779
|
+
});
|
|
21780
|
+
}
|
|
21781
|
+
};
|
|
21782
|
+
const chromeLogoTransforms = [chromeLogoTransform];
|
|
21783
|
+
|
|
21735
21784
|
//#endregion
|
|
21736
21785
|
//#region ../blocks/src/system/transforms/registry/ui.ts
|
|
21737
21786
|
const joinClasses$2 = (parts) => parts.filter((part) => typeof part === "string" && part.trim().length > 0).join(" ").replace(/\s+/g, " ").trim();
|
|
@@ -24514,6 +24563,33 @@ function normalizeEventCalendarDisplayMode(input) {
|
|
|
24514
24563
|
if (isEventCalendarDisplayMode(input.variant)) return input.variant;
|
|
24515
24564
|
return isEventCalendarDisplayMode(input.displayMode) ? input.displayMode : undefined;
|
|
24516
24565
|
}
|
|
24566
|
+
/** One closed authority for the projections required by each rendered mode. */
|
|
24567
|
+
function resolveEventCalendarReadPlan(input) {
|
|
24568
|
+
const mode = normalizeEventCalendarDisplayMode(input) ?? "combined";
|
|
24569
|
+
switch (mode) {
|
|
24570
|
+
case "combined": return {
|
|
24571
|
+
mode,
|
|
24572
|
+
jobs: "both",
|
|
24573
|
+
readProfile: "listing-card"
|
|
24574
|
+
};
|
|
24575
|
+
case "list": return {
|
|
24576
|
+
mode,
|
|
24577
|
+
jobs: "list",
|
|
24578
|
+
readProfile: "listing-card"
|
|
24579
|
+
};
|
|
24580
|
+
case "calendar": return {
|
|
24581
|
+
mode,
|
|
24582
|
+
jobs: "calendar",
|
|
24583
|
+
readProfile: "listing-card"
|
|
24584
|
+
};
|
|
24585
|
+
case "timetable":
|
|
24586
|
+
case "week-board": return {
|
|
24587
|
+
mode,
|
|
24588
|
+
jobs: "calendar",
|
|
24589
|
+
readProfile: "timetable"
|
|
24590
|
+
};
|
|
24591
|
+
}
|
|
24592
|
+
}
|
|
24517
24593
|
function isEventCalendarDefaultView(value) {
|
|
24518
24594
|
return typeof value === "string" && eventCalendarDefaultViewValues.includes(value);
|
|
24519
24595
|
}
|
|
@@ -25649,8 +25725,7 @@ function normalizeEventStaffMemberId(value) {
|
|
|
25649
25725
|
//#endregion
|
|
25650
25726
|
//#region ../blocks/src/system/blocks/events/shared/calendarWindow.ts
|
|
25651
25727
|
function resolveCalendarReadProfile(content) {
|
|
25652
|
-
|
|
25653
|
-
return mode === "timetable" || mode === "week-board" ? "timetable" : "listing-card";
|
|
25728
|
+
return resolveEventCalendarReadPlan(content).readProfile;
|
|
25654
25729
|
}
|
|
25655
25730
|
/** Runtime picker sentinels and bound loader IDs must describe the same query. */
|
|
25656
25731
|
function normalizeCalendarFilterId(value) {
|
|
@@ -25879,8 +25954,8 @@ const eventCalendarReadEnabled = {
|
|
|
25879
25954
|
schema: readJobSchema,
|
|
25880
25955
|
run(value, options) {
|
|
25881
25956
|
const content = asPartialObject(value) ?? {};
|
|
25882
|
-
const
|
|
25883
|
-
return
|
|
25957
|
+
const plan = resolveEventCalendarReadPlan(content);
|
|
25958
|
+
return plan.jobs === "both" || plan.jobs === options.job;
|
|
25884
25959
|
}
|
|
25885
25960
|
};
|
|
25886
25961
|
|
|
@@ -25892,6 +25967,7 @@ const builtinTransformDefinitions = [
|
|
|
25892
25967
|
eventCalendarReadProfile,
|
|
25893
25968
|
...formattingTransforms,
|
|
25894
25969
|
...layoutTransforms,
|
|
25970
|
+
...chromeLogoTransforms,
|
|
25895
25971
|
...uiTransforms,
|
|
25896
25972
|
...mediaTransforms,
|
|
25897
25973
|
...backgroundTransforms,
|
|
@@ -26062,12 +26138,12 @@ function Grid({ as: Comp = "div", cols, userColumns, gap = "md", className, styl
|
|
|
26062
26138
|
|
|
26063
26139
|
//#endregion
|
|
26064
26140
|
//#region ../blocks/src/system/runtime/nodes/layout.tsx
|
|
26065
|
-
const SectionNode = (
|
|
26066
|
-
const StackNode = (
|
|
26067
|
-
const InlineNode = (
|
|
26068
|
-
const GridNode = (
|
|
26069
|
-
const DivNode = (
|
|
26070
|
-
const FigureNode = (
|
|
26141
|
+
const SectionNode = (props$1) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Section_default, { ...props$1 });
|
|
26142
|
+
const StackNode = (props$1) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Stack, { ...props$1 });
|
|
26143
|
+
const InlineNode = (props$1) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Inline, { ...props$1 });
|
|
26144
|
+
const GridNode = (props$1) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Grid, { ...props$1 });
|
|
26145
|
+
const DivNode = (props$1) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { ...props$1 });
|
|
26146
|
+
const FigureNode = (props$1) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("figure", { ...props$1 });
|
|
26071
26147
|
|
|
26072
26148
|
//#endregion
|
|
26073
26149
|
//#region ../path-utils/dist/redirectPaths.js
|
|
@@ -26557,6 +26633,139 @@ function Text$1({ as: Comp = "span", children, className = "", path: path$3, max
|
|
|
26557
26633
|
});
|
|
26558
26634
|
}
|
|
26559
26635
|
|
|
26636
|
+
//#endregion
|
|
26637
|
+
//#region ../logger/src/noop.ts
|
|
26638
|
+
const noop = () => {};
|
|
26639
|
+
const logger = {
|
|
26640
|
+
debug: noop,
|
|
26641
|
+
info: noop,
|
|
26642
|
+
warn: noop,
|
|
26643
|
+
error: noop,
|
|
26644
|
+
withFields: (_) => logger
|
|
26645
|
+
};
|
|
26646
|
+
|
|
26647
|
+
//#endregion
|
|
26648
|
+
//#region ../blocks/src/system/runtime/nodes/richText-coerce.ts
|
|
26649
|
+
function parseRichTextDoc(value) {
|
|
26650
|
+
const parsed = RichTextDocSchema.safeParse(value);
|
|
26651
|
+
if (parsed.success) {
|
|
26652
|
+
return {
|
|
26653
|
+
kind: "valid",
|
|
26654
|
+
doc: parsed.data
|
|
26655
|
+
};
|
|
26656
|
+
}
|
|
26657
|
+
return {
|
|
26658
|
+
kind: "invalid",
|
|
26659
|
+
issues: parsed.error.issues.map((issue$1) => ({
|
|
26660
|
+
path: issue$1.path.map((segment) => String(segment)),
|
|
26661
|
+
message: issue$1.message
|
|
26662
|
+
}))
|
|
26663
|
+
};
|
|
26664
|
+
}
|
|
26665
|
+
function coerceRichTextDoc(value, source) {
|
|
26666
|
+
const parsed = parseRichTextDoc(value);
|
|
26667
|
+
if (parsed.kind === "valid") return parsed.doc;
|
|
26668
|
+
if (value !== null && value !== undefined) {
|
|
26669
|
+
logger.warn("blocks:rich-text:invalid-document", {
|
|
26670
|
+
source,
|
|
26671
|
+
issues: parsed.issues.slice(0, 3)
|
|
26672
|
+
});
|
|
26673
|
+
}
|
|
26674
|
+
return null;
|
|
26675
|
+
}
|
|
26676
|
+
|
|
26677
|
+
//#endregion
|
|
26678
|
+
//#region ../blocks/src/system/runtime/nodes/renderInlineText.tsx
|
|
26679
|
+
function renderInlineText(value) {
|
|
26680
|
+
return value.map((run, index) => renderRun(run, index));
|
|
26681
|
+
}
|
|
26682
|
+
function renderRun(run, key) {
|
|
26683
|
+
return (run.marks ?? []).reduceRight((child, mark, index) => renderMark(mark, `${String(key)}-${index}`, child), run.text);
|
|
26684
|
+
}
|
|
26685
|
+
function renderMark(mark, key, child) {
|
|
26686
|
+
switch (mark.kind) {
|
|
26687
|
+
case "strong": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("strong", { children: child }, key);
|
|
26688
|
+
case "emphasis": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("em", { children: child }, key);
|
|
26689
|
+
case "accent": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
26690
|
+
className: `rb-inline-text-accent rb-inline-text-accent-${mark.tone}`,
|
|
26691
|
+
children: child
|
|
26692
|
+
}, key);
|
|
26693
|
+
case "highlight": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
26694
|
+
className: `rb-inline-text-highlight rb-inline-text-highlight-${mark.tone}`,
|
|
26695
|
+
children: child
|
|
26696
|
+
}, key);
|
|
26697
|
+
}
|
|
26698
|
+
}
|
|
26699
|
+
|
|
26700
|
+
//#endregion
|
|
26701
|
+
//#region ../blocks/src/system/runtime/nodes/spinner.tsx
|
|
26702
|
+
function resolveColorStyle(color) {
|
|
26703
|
+
switch (color) {
|
|
26704
|
+
case undefined: return undefined;
|
|
26705
|
+
case "inherit": return { color: "inherit" };
|
|
26706
|
+
case "foreground": return { color: "rgb(var(--tb-foreground))" };
|
|
26707
|
+
case "text": return { color: "rgb(var(--tb-text))" };
|
|
26708
|
+
case "primary":
|
|
26709
|
+
default: return undefined;
|
|
26710
|
+
}
|
|
26711
|
+
}
|
|
26712
|
+
function SpinnerNode({ className, size = "md", color, strokeWidth = 3, srLabel, style, ...rest }) {
|
|
26713
|
+
const hasExplicitAriaLabel = typeof rest["aria-label"] === "string" && rest["aria-label"].trim().length > 0;
|
|
26714
|
+
const accessibilityProps = srLabel ? {
|
|
26715
|
+
role: "status",
|
|
26716
|
+
"aria-live": "polite"
|
|
26717
|
+
} : hasExplicitAriaLabel ? {} : { "aria-hidden": true };
|
|
26718
|
+
const trackStroke = color === "inherit" ? "currentColor" : "var(--rb-spinner-track-color)";
|
|
26719
|
+
const trackOpacity = color === "inherit" ? .25 : 1;
|
|
26720
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
26721
|
+
...accessibilityProps,
|
|
26722
|
+
className: clsx_default("rb-spinner", size ? `rb-spinner--${size}` : null, color === "inherit" ? "rb-spinner--inherit" : null, className),
|
|
26723
|
+
style: {
|
|
26724
|
+
...resolveColorStyle(color),
|
|
26725
|
+
...style ?? {}
|
|
26726
|
+
},
|
|
26727
|
+
...rest,
|
|
26728
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
26729
|
+
viewBox: "0 0 24 24",
|
|
26730
|
+
fill: "none",
|
|
26731
|
+
"aria-hidden": "true",
|
|
26732
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", {
|
|
26733
|
+
cx: "12",
|
|
26734
|
+
cy: "12",
|
|
26735
|
+
r: "10",
|
|
26736
|
+
stroke: trackStroke,
|
|
26737
|
+
strokeWidth,
|
|
26738
|
+
opacity: trackOpacity
|
|
26739
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
|
|
26740
|
+
d: "M12 2a10 10 0 0 1 10 10",
|
|
26741
|
+
stroke: "currentColor",
|
|
26742
|
+
strokeWidth,
|
|
26743
|
+
strokeLinecap: "round"
|
|
26744
|
+
})]
|
|
26745
|
+
}), srLabel ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
26746
|
+
className: "rb-sr-only",
|
|
26747
|
+
children: srLabel
|
|
26748
|
+
}) : null]
|
|
26749
|
+
});
|
|
26750
|
+
}
|
|
26751
|
+
|
|
26752
|
+
//#endregion
|
|
26753
|
+
//#region ../blocks/src/system/runtime/nodes/buttonAffordance.ts
|
|
26754
|
+
function normalize$3(value) {
|
|
26755
|
+
const trimmed = typeof value === "string" ? value.trim() : "";
|
|
26756
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
26757
|
+
}
|
|
26758
|
+
/**
|
|
26759
|
+
* Resolve the node-authored trailing affordance, or `null` when no icon exists.
|
|
26760
|
+
*/
|
|
26761
|
+
function resolveButtonAffordance(input) {
|
|
26762
|
+
const nodeIcon = normalize$3(input.trailingIcon);
|
|
26763
|
+
if (nodeIcon) {
|
|
26764
|
+
return { iconId: nodeIcon };
|
|
26765
|
+
}
|
|
26766
|
+
return null;
|
|
26767
|
+
}
|
|
26768
|
+
|
|
26560
26769
|
//#endregion
|
|
26561
26770
|
//#region ../blocks/src/system/icons/svg.tsx
|
|
26562
26771
|
function createIcon(displayName, children) {
|
|
@@ -27700,89 +27909,146 @@ function getIconComponent(name) {
|
|
|
27700
27909
|
}
|
|
27701
27910
|
|
|
27702
27911
|
//#endregion
|
|
27703
|
-
//#region ../blocks/src/system/runtime/
|
|
27704
|
-
function
|
|
27705
|
-
|
|
27706
|
-
|
|
27912
|
+
//#region ../blocks/src/system/runtime/shared/components/ThemedButton.tsx
|
|
27913
|
+
function themedButtonClasses(variant, size, extraClassName) {
|
|
27914
|
+
return [
|
|
27915
|
+
...themeButtonVariantClassNames(variant),
|
|
27916
|
+
themeButtonSizeClassName(size),
|
|
27917
|
+
extraClassName
|
|
27918
|
+
].filter(Boolean).join(" ");
|
|
27707
27919
|
}
|
|
27708
|
-
|
|
27709
|
-
|
|
27710
|
-
*/
|
|
27711
|
-
|
|
27712
|
-
|
|
27713
|
-
|
|
27714
|
-
|
|
27715
|
-
|
|
27716
|
-
|
|
27920
|
+
function ThemedButtonLabel(props$1) {
|
|
27921
|
+
const content = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
27922
|
+
props$1.pending ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SpinnerNode, {
|
|
27923
|
+
size: props$1.pending.spinnerSize ?? "sm",
|
|
27924
|
+
color: "inherit",
|
|
27925
|
+
className: props$1.pending.spinnerClassName ?? "rb-mr-2",
|
|
27926
|
+
srLabel: props$1.pending.srLabel
|
|
27927
|
+
}) : null,
|
|
27928
|
+
props$1.labelClassName ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
27929
|
+
className: props$1.labelClassName,
|
|
27930
|
+
children: props$1.pending?.label ?? props$1.label
|
|
27931
|
+
}) : props$1.pending?.label ?? props$1.label,
|
|
27932
|
+
props$1.screenReaderSuffix ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
27933
|
+
className: "rb-sr-only",
|
|
27934
|
+
children: props$1.screenReaderSuffix
|
|
27935
|
+
}) : null
|
|
27936
|
+
] });
|
|
27937
|
+
return props$1.pending?.contentClassName ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
27938
|
+
className: props$1.pending.contentClassName,
|
|
27939
|
+
children: content
|
|
27940
|
+
}) : content;
|
|
27717
27941
|
}
|
|
27718
|
-
|
|
27719
|
-
|
|
27720
|
-
|
|
27721
|
-
|
|
27722
|
-
|
|
27723
|
-
|
|
27724
|
-
|
|
27725
|
-
|
|
27726
|
-
|
|
27727
|
-
|
|
27728
|
-
};
|
|
27729
|
-
|
|
27730
|
-
//#endregion
|
|
27731
|
-
//#region ../blocks/src/system/runtime/nodes/richText-coerce.ts
|
|
27732
|
-
function parseRichTextDoc(value) {
|
|
27733
|
-
const parsed = RichTextDocSchema.safeParse(value);
|
|
27734
|
-
if (parsed.success) {
|
|
27735
|
-
return {
|
|
27736
|
-
kind: "valid",
|
|
27737
|
-
doc: parsed.data
|
|
27738
|
-
};
|
|
27739
|
-
}
|
|
27740
|
-
return {
|
|
27741
|
-
kind: "invalid",
|
|
27742
|
-
issues: parsed.error.issues.map((issue$1) => ({
|
|
27743
|
-
path: issue$1.path.map((segment) => String(segment)),
|
|
27744
|
-
message: issue$1.message
|
|
27745
|
-
}))
|
|
27746
|
-
};
|
|
27942
|
+
function ThemedButton({ variant, size, extraClassName, screenReaderSuffix, labelClassName, pending, label, ...buttonProps }) {
|
|
27943
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
|
|
27944
|
+
...buttonProps,
|
|
27945
|
+
className: themedButtonClasses(variant, size, extraClassName),
|
|
27946
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButtonLabel, {
|
|
27947
|
+
label,
|
|
27948
|
+
pending,
|
|
27949
|
+
screenReaderSuffix,
|
|
27950
|
+
labelClassName
|
|
27951
|
+
})
|
|
27952
|
+
});
|
|
27747
27953
|
}
|
|
27748
|
-
function
|
|
27749
|
-
|
|
27750
|
-
|
|
27751
|
-
|
|
27752
|
-
|
|
27753
|
-
|
|
27754
|
-
|
|
27755
|
-
|
|
27756
|
-
|
|
27757
|
-
|
|
27954
|
+
function ThemedButtonLink({ variant, size, extraClassName, screenReaderSuffix, labelClassName, label, ...anchorProps }) {
|
|
27955
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", {
|
|
27956
|
+
...anchorProps,
|
|
27957
|
+
className: themedButtonClasses(variant, size, extraClassName),
|
|
27958
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButtonLabel, {
|
|
27959
|
+
label,
|
|
27960
|
+
screenReaderSuffix,
|
|
27961
|
+
labelClassName
|
|
27962
|
+
})
|
|
27963
|
+
});
|
|
27758
27964
|
}
|
|
27759
|
-
|
|
27760
|
-
|
|
27761
|
-
|
|
27762
|
-
|
|
27763
|
-
|
|
27965
|
+
/** Noninteractive button-style preview with no caller-owned markup. */
|
|
27966
|
+
function ThemedButtonSpecimen({ variant, size, label, extraClassName, forceHover = false }) {
|
|
27967
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
27968
|
+
"data-force-hover": forceHover ? "true" : undefined,
|
|
27969
|
+
className: themedButtonClasses(variant, size, extraClassName),
|
|
27970
|
+
children: label
|
|
27971
|
+
});
|
|
27972
|
+
}
|
|
27973
|
+
/** Fixed icon-only actions control; callers cannot supply icon children. */
|
|
27974
|
+
function ThemedActionsButton({ variant, size, extraClassName, ...buttonProps }) {
|
|
27975
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
|
|
27976
|
+
...buttonProps,
|
|
27977
|
+
"aria-label": "Actions",
|
|
27978
|
+
className: themedButtonClasses(variant, size, extraClassName),
|
|
27979
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
27980
|
+
width: "16",
|
|
27981
|
+
height: "16",
|
|
27982
|
+
viewBox: "0 0 16 16",
|
|
27983
|
+
fill: "currentColor",
|
|
27984
|
+
"aria-hidden": "true",
|
|
27985
|
+
children: [
|
|
27986
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", {
|
|
27987
|
+
cx: "8",
|
|
27988
|
+
cy: "3",
|
|
27989
|
+
r: "1.5"
|
|
27990
|
+
}),
|
|
27991
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", {
|
|
27992
|
+
cx: "8",
|
|
27993
|
+
cy: "8",
|
|
27994
|
+
r: "1.5"
|
|
27995
|
+
}),
|
|
27996
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", {
|
|
27997
|
+
cx: "8",
|
|
27998
|
+
cy: "13",
|
|
27999
|
+
r: "1.5"
|
|
28000
|
+
})
|
|
28001
|
+
]
|
|
28002
|
+
})
|
|
28003
|
+
});
|
|
27764
28004
|
}
|
|
27765
|
-
|
|
27766
|
-
|
|
28005
|
+
/** Fixed semantic download affordance; callers cannot supply arbitrary icon children. */
|
|
28006
|
+
function ThemedDownloadLink({ variant, size, extraClassName, label, screenReaderSuffix, labelClassName, ...anchorProps }) {
|
|
28007
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("a", {
|
|
28008
|
+
...anchorProps,
|
|
28009
|
+
className: themedButtonClasses(variant, size, extraClassName),
|
|
28010
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(DownloadIcon, {
|
|
28011
|
+
"aria-hidden": "true",
|
|
28012
|
+
size: 24
|
|
28013
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButtonLabel, {
|
|
28014
|
+
label,
|
|
28015
|
+
screenReaderSuffix,
|
|
28016
|
+
labelClassName
|
|
28017
|
+
})]
|
|
28018
|
+
});
|
|
27767
28019
|
}
|
|
27768
|
-
|
|
27769
|
-
|
|
27770
|
-
|
|
27771
|
-
|
|
27772
|
-
|
|
27773
|
-
|
|
27774
|
-
|
|
27775
|
-
|
|
27776
|
-
|
|
27777
|
-
|
|
27778
|
-
|
|
27779
|
-
|
|
27780
|
-
|
|
28020
|
+
/** Boundary for authored button nodes and their registry-backed trailing icon. */
|
|
28021
|
+
function ThemedAuthoredButton({ label, href, variant, size, extraClassName, disabled, type = "button", target, rel, ariaLabel, dataTestId, trailingIcon, onClick }) {
|
|
28022
|
+
const affordance = resolveButtonAffordance({ trailingIcon });
|
|
28023
|
+
const Icon = affordance ? getIconComponent(affordance.iconId) : null;
|
|
28024
|
+
const className = variant ? themedButtonClasses(variant, size, Icon ? [extraClassName, themeButtonExtraClassesWithTrailingIcon()].filter(Boolean).join(" ") : extraClassName) : extraClassName ?? undefined;
|
|
28025
|
+
const content = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [label, Icon ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, {
|
|
28026
|
+
"aria-hidden": true,
|
|
28027
|
+
className: "rb-ml-2 rb-h-4 rb-w-4 rb-inline-block"
|
|
28028
|
+
}) : null] });
|
|
28029
|
+
return href ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", {
|
|
28030
|
+
href,
|
|
28031
|
+
target,
|
|
28032
|
+
rel,
|
|
28033
|
+
"aria-label": ariaLabel,
|
|
28034
|
+
"data-testid": dataTestId,
|
|
28035
|
+
className,
|
|
28036
|
+
onClick,
|
|
28037
|
+
children: content
|
|
28038
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
|
|
28039
|
+
type,
|
|
28040
|
+
disabled,
|
|
28041
|
+
"aria-label": ariaLabel,
|
|
28042
|
+
"data-testid": dataTestId,
|
|
28043
|
+
className,
|
|
28044
|
+
onClick,
|
|
28045
|
+
children: content
|
|
28046
|
+
});
|
|
27781
28047
|
}
|
|
27782
28048
|
|
|
27783
28049
|
//#endregion
|
|
27784
28050
|
//#region ../blocks/src/system/runtime/nodes/basic.tsx
|
|
27785
|
-
const TextNode = ({ value, children,
|
|
28051
|
+
const TextNode = ({ value, children, blockContent, inlineTextFallbackPath, ...rest }) => {
|
|
27786
28052
|
const inlineText = parseInlineTextFromUnknown(value);
|
|
27787
28053
|
if (inlineText.ok && !isInlineTextEmpty(inlineText.value)) {
|
|
27788
28054
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text$1, {
|
|
@@ -27805,37 +28071,23 @@ function readStringPath(source, path$3) {
|
|
|
27805
28071
|
const value = getAtPath(source, path$3);
|
|
27806
28072
|
return typeof value === "string" ? value : null;
|
|
27807
28073
|
}
|
|
27808
|
-
const RichTextNode = ({ value,
|
|
27809
|
-
const source = `block-runtime:${
|
|
28074
|
+
const RichTextNode = ({ value, blockKind, ...rest }) => {
|
|
28075
|
+
const source = `block-runtime:${blockKind ?? "unknown"}:${rest.path ?? "richText"}`;
|
|
27810
28076
|
const doc = coerceRichTextDoc(value, source);
|
|
27811
28077
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RichText$1, {
|
|
27812
28078
|
doc: doc ?? undefined,
|
|
27813
28079
|
...rest
|
|
27814
28080
|
});
|
|
27815
28081
|
};
|
|
27816
|
-
/**
|
|
27817
|
-
* Render the resolved trailing affordance icon using the button's foreground.
|
|
27818
|
-
*/
|
|
27819
|
-
function renderTrailingAffordanceIcon(affordance) {
|
|
27820
|
-
if (!affordance) return null;
|
|
27821
|
-
const Icon = getIconComponent(affordance.iconId);
|
|
27822
|
-
if (!Icon) return null;
|
|
27823
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, {
|
|
27824
|
-
"aria-hidden": true,
|
|
27825
|
-
className: "rb-ml-2 rb-h-4 rb-w-4 rb-inline-block"
|
|
27826
|
-
});
|
|
27827
|
-
}
|
|
27828
28082
|
function isMissingRequiredLink(linkRequired, resolvedHref) {
|
|
27829
28083
|
return linkRequired && resolvedHref.length === 0;
|
|
27830
28084
|
}
|
|
27831
|
-
const ButtonNode = ({ value, children, href, variantId = "primary", size = "md", disabled, type = "button", target, rel, linkRequired = false, trailingIcon,
|
|
28085
|
+
const ButtonNode = ({ value, children, href, variantId = "primary", size = "md", disabled, type = "button", target, rel, linkRequired = false, trailingIcon, onClick, className, ...rest }) => {
|
|
27832
28086
|
const content = value ?? children;
|
|
27833
28087
|
if (!content) {
|
|
27834
28088
|
console.warn("[ButtonNode] No content to render - value and children are both empty");
|
|
27835
28089
|
return null;
|
|
27836
28090
|
}
|
|
27837
|
-
const affordance = resolveButtonAffordance({ trailingIcon });
|
|
27838
|
-
const affordanceIcon = renderTrailingAffordanceIcon(affordance);
|
|
27839
28091
|
const resolvedHref = typeof href === "string" ? href.trim() : "";
|
|
27840
28092
|
if (isMissingRequiredLink(linkRequired, resolvedHref)) {
|
|
27841
28093
|
if (process.env.NODE_ENV === "development") {
|
|
@@ -27848,31 +28100,23 @@ const ButtonNode = ({ value, children, href, variantId = "primary", size = "md",
|
|
|
27848
28100
|
console.error("[ButtonNode] Invalid button variant", { variantId });
|
|
27849
28101
|
return null;
|
|
27850
28102
|
}
|
|
27851
|
-
|
|
27852
|
-
|
|
27853
|
-
|
|
28103
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedAuthoredButton, {
|
|
28104
|
+
label: content,
|
|
28105
|
+
href: resolvedHref || undefined,
|
|
28106
|
+
target,
|
|
28107
|
+
rel,
|
|
28108
|
+
variant: resolvedVariantId ?? null,
|
|
27854
28109
|
size,
|
|
27855
|
-
extraClassName: className
|
|
27856
|
-
}) : className;
|
|
27857
|
-
if (resolvedHref) {
|
|
27858
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("a", {
|
|
27859
|
-
href: resolvedHref,
|
|
27860
|
-
target,
|
|
27861
|
-
rel,
|
|
27862
|
-
className: combinedClassName,
|
|
27863
|
-
...rest,
|
|
27864
|
-
children: [content, affordanceIcon]
|
|
27865
|
-
});
|
|
27866
|
-
}
|
|
27867
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("button", {
|
|
27868
|
-
type,
|
|
27869
28110
|
disabled,
|
|
27870
|
-
|
|
27871
|
-
|
|
27872
|
-
|
|
28111
|
+
type,
|
|
28112
|
+
trailingIcon,
|
|
28113
|
+
onClick,
|
|
28114
|
+
extraClassName: className,
|
|
28115
|
+
ariaLabel: rest["aria-label"],
|
|
28116
|
+
dataTestId: rest["data-testid"]
|
|
27873
28117
|
});
|
|
27874
28118
|
};
|
|
27875
|
-
const LinkNode = ({ href, children, className, target, rel, linkRequired = false,
|
|
28119
|
+
const LinkNode = ({ href, children, className, target, rel, linkRequired = false, ...rest }) => {
|
|
27876
28120
|
if (!children) return null;
|
|
27877
28121
|
const resolvedHref = typeof href === "string" ? href.trim() : "";
|
|
27878
28122
|
if (resolvedHref.length === 0) {
|
|
@@ -28496,18 +28740,13 @@ function FileDownloadNode({ value, title, description, buttonLabel, buttonVarian
|
|
|
28496
28740
|
})
|
|
28497
28741
|
]
|
|
28498
28742
|
})]
|
|
28499
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.
|
|
28743
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedDownloadLink, {
|
|
28500
28744
|
href,
|
|
28501
28745
|
download: filename,
|
|
28502
|
-
|
|
28503
|
-
|
|
28504
|
-
|
|
28505
|
-
|
|
28506
|
-
}),
|
|
28507
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(DownloadIcon, {
|
|
28508
|
-
"aria-hidden": "true",
|
|
28509
|
-
size: 24
|
|
28510
|
-
}), label]
|
|
28746
|
+
variant,
|
|
28747
|
+
size: "md",
|
|
28748
|
+
extraClassName: "rb-inline-flex rb-shrink-0 rb-items-center rb-justify-center rb-gap-2",
|
|
28749
|
+
label
|
|
28511
28750
|
})]
|
|
28512
28751
|
})
|
|
28513
28752
|
})
|
|
@@ -29171,54 +29410,19 @@ const HeaderSectionNode = ({ blockId, children, className, runtime, "data-previe
|
|
|
29171
29410
|
var header_section_server_default = markEditableSurfaceForwarding(HeaderSectionNode);
|
|
29172
29411
|
|
|
29173
29412
|
//#endregion
|
|
29174
|
-
//#region ../blocks/src/system/runtime/nodes/
|
|
29175
|
-
|
|
29176
|
-
|
|
29177
|
-
|
|
29178
|
-
|
|
29179
|
-
|
|
29180
|
-
|
|
29181
|
-
|
|
29182
|
-
|
|
29183
|
-
|
|
29184
|
-
|
|
29185
|
-
|
|
29186
|
-
|
|
29187
|
-
const accessibilityProps = srLabel ? {
|
|
29188
|
-
role: "status",
|
|
29189
|
-
"aria-live": "polite"
|
|
29190
|
-
} : hasExplicitAriaLabel ? {} : { "aria-hidden": true };
|
|
29191
|
-
const trackStroke = color === "inherit" ? "currentColor" : "var(--rb-spinner-track-color)";
|
|
29192
|
-
const trackOpacity = color === "inherit" ? .25 : 1;
|
|
29193
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
29194
|
-
...accessibilityProps,
|
|
29195
|
-
className: clsx_default("rb-spinner", size ? `rb-spinner--${size}` : null, color === "inherit" ? "rb-spinner--inherit" : null, className),
|
|
29196
|
-
style: {
|
|
29197
|
-
...resolveColorStyle(color),
|
|
29198
|
-
...style ?? {}
|
|
29199
|
-
},
|
|
29200
|
-
...rest,
|
|
29201
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
|
|
29202
|
-
viewBox: "0 0 24 24",
|
|
29203
|
-
fill: "none",
|
|
29204
|
-
"aria-hidden": "true",
|
|
29205
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", {
|
|
29206
|
-
cx: "12",
|
|
29207
|
-
cy: "12",
|
|
29208
|
-
r: "10",
|
|
29209
|
-
stroke: trackStroke,
|
|
29210
|
-
strokeWidth,
|
|
29211
|
-
opacity: trackOpacity
|
|
29212
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
|
|
29213
|
-
d: "M12 2a10 10 0 0 1 10 10",
|
|
29214
|
-
stroke: "currentColor",
|
|
29215
|
-
strokeWidth,
|
|
29216
|
-
strokeLinecap: "round"
|
|
29217
|
-
})]
|
|
29218
|
-
}), srLabel ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
29219
|
-
className: "rb-sr-only",
|
|
29220
|
-
children: srLabel
|
|
29221
|
-
}) : null]
|
|
29413
|
+
//#region ../blocks/src/system/runtime/nodes/header-control.tsx
|
|
29414
|
+
/** System navigation controls retain their runtime hooks independently of authored CTAs. */
|
|
29415
|
+
function HeaderControlNode({ className, children, "aria-label": label, "aria-expanded": expanded, "aria-controls": controls, "aria-haspopup": hasPopup, "data-nav-mobile-toggle": mobileToggle, "data-nav-mobile-trigger": mobileTrigger }) {
|
|
29416
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
|
|
29417
|
+
type: "button",
|
|
29418
|
+
className,
|
|
29419
|
+
"aria-label": label,
|
|
29420
|
+
"aria-expanded": expanded,
|
|
29421
|
+
"aria-controls": controls,
|
|
29422
|
+
"aria-haspopup": hasPopup,
|
|
29423
|
+
"data-nav-mobile-toggle": mobileToggle,
|
|
29424
|
+
"data-nav-mobile-trigger": mobileTrigger,
|
|
29425
|
+
children
|
|
29222
29426
|
});
|
|
29223
29427
|
}
|
|
29224
29428
|
|
|
@@ -29548,11 +29752,6 @@ function AppointmentServicesNode({ sectionHeading, services, pathname, servicePa
|
|
|
29548
29752
|
})
|
|
29549
29753
|
});
|
|
29550
29754
|
}
|
|
29551
|
-
const actionClassName = themeButtonClassName({
|
|
29552
|
-
variant: "secondary",
|
|
29553
|
-
size: "sm",
|
|
29554
|
-
extraClassName: "appointment-services-row-action"
|
|
29555
|
-
});
|
|
29556
29755
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
29557
29756
|
className: `${rootClassName} rb-flex rb-flex-col`,
|
|
29558
29757
|
"data-appointment-services-state": "populated",
|
|
@@ -29585,13 +29784,13 @@ function AppointmentServicesNode({ sectionHeading, services, pathname, servicePa
|
|
|
29585
29784
|
className: "appointment-services-row-price rb-text-lg",
|
|
29586
29785
|
children: row.priceLabel
|
|
29587
29786
|
}) : null,
|
|
29588
|
-
/* @__PURE__ */ (0, import_jsx_runtime.
|
|
29589
|
-
|
|
29787
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButtonLink, {
|
|
29788
|
+
variant: "secondary",
|
|
29789
|
+
size: "sm",
|
|
29790
|
+
extraClassName: "appointment-services-row-action",
|
|
29590
29791
|
href: row.href,
|
|
29591
|
-
|
|
29592
|
-
|
|
29593
|
-
children: [" for ", row.title]
|
|
29594
|
-
})]
|
|
29792
|
+
label: "Check times",
|
|
29793
|
+
screenReaderSuffix: ` for ${row.title}`
|
|
29595
29794
|
})
|
|
29596
29795
|
]
|
|
29597
29796
|
}, row.id))
|
|
@@ -32644,6 +32843,7 @@ function buildEventRegistrationSourceProps(input) {
|
|
|
32644
32843
|
apiBaseUrl: input.apiBaseUrl,
|
|
32645
32844
|
portalToken: input.portalToken,
|
|
32646
32845
|
previewToken: input.previewToken,
|
|
32846
|
+
readAuthority: input.readAuthority,
|
|
32647
32847
|
occurrenceContext: input.occurrenceContext,
|
|
32648
32848
|
events: input.events ? [...input.events] : null,
|
|
32649
32849
|
stage: input.stage,
|
|
@@ -34557,16 +34757,14 @@ function LocationMapView({ addressText, location: location$1, zoom, heightPx, sh
|
|
|
34557
34757
|
style: textColorStyle("mutedText"),
|
|
34558
34758
|
children: addressText
|
|
34559
34759
|
}) : null,
|
|
34560
|
-
showDirections && directionsUrl ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
34760
|
+
showDirections && directionsUrl ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButtonLink, {
|
|
34561
34761
|
href: directionsUrl,
|
|
34562
34762
|
target: "_blank",
|
|
34563
34763
|
rel: "noreferrer",
|
|
34564
|
-
|
|
34565
|
-
|
|
34566
|
-
|
|
34567
|
-
|
|
34568
|
-
}),
|
|
34569
|
-
children: directionsLabel
|
|
34764
|
+
variant: "ghost",
|
|
34765
|
+
size: "sm",
|
|
34766
|
+
extraClassName: "rb-w-fit",
|
|
34767
|
+
label: directionsLabel
|
|
34570
34768
|
}) : null
|
|
34571
34769
|
]
|
|
34572
34770
|
});
|
|
@@ -34724,10 +34922,6 @@ const EventCard = ({ event, cardRole = "default", buttonVariant = "primary", but
|
|
|
34724
34922
|
const formattedTime = `${formatTime(event.startsAt, { timeZone })} - ${formatTime(event.endsAt, { timeZone })}`;
|
|
34725
34923
|
const cta = resolveEventCta(event, buttonText);
|
|
34726
34924
|
const cardClass = boxStyleClassNames({ role: cardRole }, { baseClass: "event-card" });
|
|
34727
|
-
const buttonClass = themeButtonClassName({
|
|
34728
|
-
variant: buttonVariant,
|
|
34729
|
-
size: "md"
|
|
34730
|
-
});
|
|
34731
34925
|
const title = event.title;
|
|
34732
34926
|
const summary = event.presentation?.summary ?? event.description;
|
|
34733
34927
|
const image = event.presentation?.image ?? null;
|
|
@@ -34758,7 +34952,7 @@ const EventCard = ({ event, cardRole = "default", buttonVariant = "primary", but
|
|
|
34758
34952
|
image
|
|
34759
34953
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EventCardContent, {
|
|
34760
34954
|
allowMap,
|
|
34761
|
-
|
|
34955
|
+
buttonVariant,
|
|
34762
34956
|
capacityText,
|
|
34763
34957
|
categoryBadge,
|
|
34764
34958
|
categoryId: category?.id,
|
|
@@ -34862,7 +35056,7 @@ function EventCardContent(props$1) {
|
|
|
34862
35056
|
children: props$1.summary
|
|
34863
35057
|
}),
|
|
34864
35058
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(EventCardFooter, {
|
|
34865
|
-
|
|
35059
|
+
buttonVariant: props$1.buttonVariant,
|
|
34866
35060
|
capacityText: props$1.capacityText,
|
|
34867
35061
|
cta: props$1.cta,
|
|
34868
35062
|
priceText: props$1.priceText
|
|
@@ -34900,12 +35094,14 @@ function EventCardFooter(props$1) {
|
|
|
34900
35094
|
className: "event-card-status rb-caption status-muted rb-text-center",
|
|
34901
35095
|
children: props$1.cta.label
|
|
34902
35096
|
}),
|
|
34903
|
-
!props$1.cta.hidden && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
35097
|
+
!props$1.cta.hidden && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButtonLink, {
|
|
34904
35098
|
href: props$1.cta.href,
|
|
34905
35099
|
target: props$1.cta.external ? "_blank" : undefined,
|
|
34906
35100
|
rel: props$1.cta.external ? "noopener noreferrer" : undefined,
|
|
34907
|
-
|
|
34908
|
-
|
|
35101
|
+
variant: props$1.buttonVariant,
|
|
35102
|
+
size: "md",
|
|
35103
|
+
extraClassName: "event-card-cta",
|
|
35104
|
+
label: props$1.cta.label
|
|
34909
35105
|
})
|
|
34910
35106
|
]
|
|
34911
35107
|
});
|
|
@@ -34977,10 +35173,6 @@ const EventCompactRow = ({ event, buttonVariant = "primary", buttonText }) => {
|
|
|
34977
35173
|
const price = formatEventPrice(event);
|
|
34978
35174
|
const teacherLine = formatEventTeacherLine(event);
|
|
34979
35175
|
const cta = resolveEventCta(event, buttonText);
|
|
34980
|
-
const buttonClass = themeButtonClassName({
|
|
34981
|
-
variant: buttonVariant,
|
|
34982
|
-
size: "sm"
|
|
34983
|
-
});
|
|
34984
35176
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("article", {
|
|
34985
35177
|
className: "event-compact-row",
|
|
34986
35178
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("time", {
|
|
@@ -35044,12 +35236,15 @@ const EventCompactRow = ({ event, buttonVariant = "primary", buttonText }) => {
|
|
|
35044
35236
|
}), cta.hidden ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
35045
35237
|
className: "event-compact-row-status",
|
|
35046
35238
|
children: cta.label
|
|
35047
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
35239
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButtonLink, {
|
|
35048
35240
|
href: cta.href,
|
|
35049
35241
|
target: cta.external ? "_blank" : undefined,
|
|
35050
35242
|
rel: cta.external ? "noopener noreferrer" : undefined,
|
|
35051
|
-
|
|
35052
|
-
|
|
35243
|
+
variant: buttonVariant,
|
|
35244
|
+
size: "sm",
|
|
35245
|
+
extraClassName: "event-compact-row-cta",
|
|
35246
|
+
labelClassName: "event-compact-row-cta-label",
|
|
35247
|
+
label: cta.label
|
|
35053
35248
|
})]
|
|
35054
35249
|
})]
|
|
35055
35250
|
})]
|
|
@@ -35093,10 +35288,6 @@ function EventQuickDateCard(props$1) {
|
|
|
35093
35288
|
kind: "event_occurrence",
|
|
35094
35289
|
occurrenceId: event.occurrenceId
|
|
35095
35290
|
});
|
|
35096
|
-
const buttonClass = themeButtonClassName({
|
|
35097
|
-
variant: props$1.buttonVariant,
|
|
35098
|
-
size: "sm"
|
|
35099
|
-
});
|
|
35100
35291
|
const quickDateLabel = `${event.title}, ${date.label}`;
|
|
35101
35292
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("article", {
|
|
35102
35293
|
className: "event-quick-date rb-flex rb-min-w-12rem rb-shrink-0 rb-flex-col rb-gap-3 rb-rounded-lg rb-border rb-bg-surface rb-p-4",
|
|
@@ -35128,13 +35319,15 @@ function EventQuickDateCard(props$1) {
|
|
|
35128
35319
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
35129
35320
|
className: "event-quick-date-price",
|
|
35130
35321
|
children: formatEventPrice(event)
|
|
35131
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
35132
|
-
|
|
35322
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButtonLink, {
|
|
35323
|
+
variant: props$1.buttonVariant,
|
|
35324
|
+
size: "sm",
|
|
35325
|
+
extraClassName: "event-quick-date-cta",
|
|
35133
35326
|
href: ctaHref,
|
|
35134
35327
|
target: cta.external ? "_blank" : undefined,
|
|
35135
35328
|
rel: cta.external ? "noopener noreferrer" : undefined,
|
|
35136
35329
|
"aria-label": `${cta.label} ${quickDateLabel}`,
|
|
35137
|
-
|
|
35330
|
+
label: cta.label
|
|
35138
35331
|
})]
|
|
35139
35332
|
})
|
|
35140
35333
|
]
|
|
@@ -35214,10 +35407,6 @@ const EventSpotlight = ({ events, layout = "grid", columns = "3", cardRole = "de
|
|
|
35214
35407
|
}
|
|
35215
35408
|
const containerClass = getContainerClass(layout, columns);
|
|
35216
35409
|
const cardOrientation = getCardOrientation(layout);
|
|
35217
|
-
const buttonClass = themeButtonClassName({
|
|
35218
|
-
variant: buttonVariant,
|
|
35219
|
-
size: "md"
|
|
35220
|
-
});
|
|
35221
35410
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
35222
35411
|
className: `event-spotlight-section ${className || ""}`,
|
|
35223
35412
|
"data-block": "event-spotlight",
|
|
@@ -35235,16 +35424,45 @@ const EventSpotlight = ({ events, layout = "grid", columns = "3", cardRole = "de
|
|
|
35235
35424
|
}, event.occurrenceId || event.id))
|
|
35236
35425
|
}), ctaLabel && ctaUrl ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
35237
35426
|
className: "rb-mt-8 rb-text-center",
|
|
35238
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
35427
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButtonLink, {
|
|
35239
35428
|
href: ctaUrl,
|
|
35240
|
-
|
|
35241
|
-
|
|
35429
|
+
variant: buttonVariant,
|
|
35430
|
+
size: "md",
|
|
35431
|
+
label: ctaLabel
|
|
35242
35432
|
})
|
|
35243
35433
|
}) : null]
|
|
35244
35434
|
});
|
|
35245
35435
|
};
|
|
35246
35436
|
var EventSpotlight_default = EventSpotlight;
|
|
35247
35437
|
|
|
35438
|
+
//#endregion
|
|
35439
|
+
//#region ../blocks/src/system/runtime/api/readAuthority.ts
|
|
35440
|
+
const browserReadAuthoritySchema = z.discriminatedUnion("kind", [z.object({ kind: z.literal("published") }).strict(), z.object({
|
|
35441
|
+
kind: z.literal("preview"),
|
|
35442
|
+
token: z.string().min(1)
|
|
35443
|
+
}).strict()]);
|
|
35444
|
+
/** Generic SDK/editor configuration is projected here; hosted callers supply the closed union. */
|
|
35445
|
+
function getBlockApiReadStage(config$1) {
|
|
35446
|
+
return config$1.readAuthority?.kind ?? (config$1.isPreview && config$1.auth.type !== "none" ? "preview" : "published");
|
|
35447
|
+
}
|
|
35448
|
+
function createHostedBlockApiConfig(input) {
|
|
35449
|
+
const { baseUrl, siteId, readAuthority, portalToken } = input;
|
|
35450
|
+
return {
|
|
35451
|
+
baseUrl,
|
|
35452
|
+
siteId,
|
|
35453
|
+
readAuthority,
|
|
35454
|
+
auth: readAuthority.kind === "preview" ? {
|
|
35455
|
+
type: "bearer",
|
|
35456
|
+
token: readAuthority.token
|
|
35457
|
+
} : { type: "none" },
|
|
35458
|
+
isPreview: readAuthority.kind === "preview",
|
|
35459
|
+
authOverrides: { portal: portalToken ? {
|
|
35460
|
+
type: "bearer",
|
|
35461
|
+
token: portalToken
|
|
35462
|
+
} : { type: "none" } }
|
|
35463
|
+
};
|
|
35464
|
+
}
|
|
35465
|
+
|
|
35248
35466
|
//#endregion
|
|
35249
35467
|
//#region ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
|
|
35250
35468
|
const previewStageSchema = z.enum(["preview", "published"]);
|
|
@@ -36249,6 +36467,7 @@ const eventCollectionSourceSchemaShape = {
|
|
|
36249
36467
|
events: z.array(publicEventSchema).nullable().optional(),
|
|
36250
36468
|
siteId: z.string(),
|
|
36251
36469
|
apiBaseUrl: z.string().optional(),
|
|
36470
|
+
readAuthority: browserReadAuthoritySchema.optional(),
|
|
36252
36471
|
stage: previewStageSchema.optional(),
|
|
36253
36472
|
listLayout: eventLayoutSchema.optional(),
|
|
36254
36473
|
listColumns: columnOptionSchema.optional(),
|
|
@@ -36301,7 +36520,6 @@ const eventCollectionDisplaySchemaShape = {
|
|
|
36301
36520
|
const eventCollectionHydrationSchema = z.object({
|
|
36302
36521
|
siteId: z.string(),
|
|
36303
36522
|
calendarWindow: calendarWindowPageSchema.optional(),
|
|
36304
|
-
stage: previewStageSchema.optional(),
|
|
36305
36523
|
prefetchedEvents: z.boolean(),
|
|
36306
36524
|
eventSurface: eventSurfaceScopeSchema$1,
|
|
36307
36525
|
filterEventPresets: z.string().nullable(),
|
|
@@ -36376,7 +36594,6 @@ function buildEventCollectionHydration(source, now = new Date()) {
|
|
|
36376
36594
|
return {
|
|
36377
36595
|
calendarWindow: source.calendarWindow ?? undefined,
|
|
36378
36596
|
siteId: source.siteId,
|
|
36379
|
-
stage: source.stage,
|
|
36380
36597
|
prefetchedEvents: source.events != null,
|
|
36381
36598
|
eventSurface: selected ? "all" : normalizeEventSurfaceScope(source.eventSurface),
|
|
36382
36599
|
filterEventPresets: selected ? null : normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
@@ -36424,9 +36641,10 @@ const eventCombinedRenderSchema = z.object({
|
|
|
36424
36641
|
const eventCombinedIslandMetaCodec = createZodCodec(z.object({
|
|
36425
36642
|
siteId: z.string(),
|
|
36426
36643
|
apiBaseUrl: z.string().optional(),
|
|
36644
|
+
readAuthority: browserReadAuthoritySchema.optional(),
|
|
36427
36645
|
stage: previewStageSchema.optional()
|
|
36428
36646
|
}));
|
|
36429
|
-
const eventCombinedIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl", "stage");
|
|
36647
|
+
const eventCombinedIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl", "readAuthority", "stage");
|
|
36430
36648
|
function buildEventCombinedDisplay(source) {
|
|
36431
36649
|
return {
|
|
36432
36650
|
...buildEventCollectionDisplay(source),
|
|
@@ -36456,6 +36674,7 @@ const eventCombinedInteractiveIslandPropsCodec = createInteractiveIslandCodec({
|
|
|
36456
36674
|
selectMeta: (value) => ({
|
|
36457
36675
|
siteId: value.siteId,
|
|
36458
36676
|
apiBaseUrl: value.apiBaseUrl,
|
|
36677
|
+
readAuthority: value.readAuthority,
|
|
36459
36678
|
stage: value.stage
|
|
36460
36679
|
})
|
|
36461
36680
|
});
|
|
@@ -36466,6 +36685,7 @@ function buildEventCombinedInteractiveIslandProps(props$1) {
|
|
|
36466
36685
|
meta: {
|
|
36467
36686
|
siteId: props$1.siteId,
|
|
36468
36687
|
apiBaseUrl: props$1.apiBaseUrl,
|
|
36688
|
+
readAuthority: props$1.readAuthority,
|
|
36469
36689
|
stage: props$1.stage
|
|
36470
36690
|
},
|
|
36471
36691
|
source: props$1
|
|
@@ -36960,11 +37180,6 @@ function OfferingsCatalogue(props$1) {
|
|
|
36960
37180
|
//#endregion
|
|
36961
37181
|
//#region ../blocks/src/system/runtime/nodes/offerings-preview-content.tsx
|
|
36962
37182
|
function OfferingsPreviewContent(props$1) {
|
|
36963
|
-
const groupLinkClass = themeButtonClassName({
|
|
36964
|
-
variant: props$1.buttonVariant,
|
|
36965
|
-
size: "md",
|
|
36966
|
-
extraClassName: "offerings-preview-card-link rb-inline-flex rb-items-center rb-gap-2"
|
|
36967
|
-
});
|
|
36968
37183
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
36969
37184
|
className: "offerings-preview rb-flex rb-flex-col rb-gap-6",
|
|
36970
37185
|
"data-block": "offerings-preview",
|
|
@@ -37004,10 +37219,12 @@ function OfferingsPreviewContent(props$1) {
|
|
|
37004
37219
|
}),
|
|
37005
37220
|
groupCta ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("footer", {
|
|
37006
37221
|
className: "offerings-preview-card-footer rb-mt-auto rb-flex",
|
|
37007
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
37008
|
-
|
|
37222
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButtonLink, {
|
|
37223
|
+
variant: props$1.buttonVariant,
|
|
37224
|
+
size: "md",
|
|
37225
|
+
extraClassName: "offerings-preview-card-link rb-inline-flex rb-items-center rb-gap-2",
|
|
37009
37226
|
href: groupCta.href,
|
|
37010
|
-
|
|
37227
|
+
label: groupCta.label
|
|
37011
37228
|
})
|
|
37012
37229
|
}) : null
|
|
37013
37230
|
]
|
|
@@ -37343,10 +37560,6 @@ function WholeSeriesRunCompactRow({ group, path: path$3, now }) {
|
|
|
37343
37560
|
const timeRange = `${formatTime(firstSession.startsAt, { timeZone })} - ${formatTime(firstSession.endsAt, { timeZone })}`;
|
|
37344
37561
|
const price = formatEventPriceDisplay(group.representative.pricing);
|
|
37345
37562
|
const statusLabel = resolveWholeSeriesBookingPhase(group.run, now).kind === "open" ? null : "Registration closed";
|
|
37346
|
-
const ctaClass = themeButtonClassName({
|
|
37347
|
-
variant: "primary",
|
|
37348
|
-
size: "sm"
|
|
37349
|
-
});
|
|
37350
37563
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("article", {
|
|
37351
37564
|
className: "event-compact-row offerings-preview-whole-series-row",
|
|
37352
37565
|
children: [
|
|
@@ -37405,10 +37618,13 @@ function WholeSeriesRunCompactRow({ group, path: path$3, now }) {
|
|
|
37405
37618
|
}), statusLabel || !path$3 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
37406
37619
|
className: "event-compact-row-status",
|
|
37407
37620
|
children: statusLabel ?? "Details coming soon"
|
|
37408
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
37621
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButtonLink, {
|
|
37409
37622
|
href: path$3,
|
|
37410
|
-
|
|
37411
|
-
|
|
37623
|
+
variant: "primary",
|
|
37624
|
+
size: "sm",
|
|
37625
|
+
extraClassName: "event-compact-row-cta",
|
|
37626
|
+
labelClassName: "event-compact-row-cta-label",
|
|
37627
|
+
label: "Book now"
|
|
37412
37628
|
})]
|
|
37413
37629
|
})
|
|
37414
37630
|
]
|
|
@@ -37425,10 +37641,6 @@ function WholeSeriesRunFeatureCard({ group, now, path: path$3, buttonVariant, bu
|
|
|
37425
37641
|
const formattedDate = formatEventCompactDateRail(firstSession.startsAt, { timeZone }).label;
|
|
37426
37642
|
const timeRange = `${formatTime(firstSession.startsAt, { timeZone })} - ${formatTime(firstSession.endsAt, { timeZone })}`;
|
|
37427
37643
|
const price = formatEventPriceDisplay(group.representative.pricing);
|
|
37428
|
-
const ctaClass = themeButtonClassName({
|
|
37429
|
-
variant: buttonVariant,
|
|
37430
|
-
size: "md"
|
|
37431
|
-
});
|
|
37432
37644
|
const statusLabel = resolveWholeSeriesBookingPhase(group.run, now).kind === "open" ? null : "Registration closed";
|
|
37433
37645
|
const description = group.representative.description;
|
|
37434
37646
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("article", {
|
|
@@ -37461,10 +37673,12 @@ function WholeSeriesRunFeatureCard({ group, now, path: path$3, buttonVariant, bu
|
|
|
37461
37673
|
}), statusLabel || !path$3 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
37462
37674
|
className: "event-compact-row-status",
|
|
37463
37675
|
children: statusLabel ?? "Details coming soon"
|
|
37464
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
37676
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButtonLink, {
|
|
37465
37677
|
href: path$3,
|
|
37466
|
-
|
|
37467
|
-
|
|
37678
|
+
variant: buttonVariant,
|
|
37679
|
+
size: "md",
|
|
37680
|
+
extraClassName: "event-card-cta",
|
|
37681
|
+
label: buttonText || "Book now"
|
|
37468
37682
|
})]
|
|
37469
37683
|
})
|
|
37470
37684
|
]
|
|
@@ -37627,15 +37841,13 @@ function WeeklySlotAvailabilityView({ availability, loading = false, error: erro
|
|
|
37627
37841
|
"."
|
|
37628
37842
|
]
|
|
37629
37843
|
}),
|
|
37630
|
-
resolvedCtaUrl ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
37631
|
-
|
|
37632
|
-
|
|
37633
|
-
|
|
37634
|
-
extraClassName: "weekly-slot-availability__cta"
|
|
37635
|
-
}),
|
|
37844
|
+
resolvedCtaUrl ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButtonLink, {
|
|
37845
|
+
variant: "ghost",
|
|
37846
|
+
size: "sm",
|
|
37847
|
+
extraClassName: "weekly-slot-availability__cta",
|
|
37636
37848
|
href: buildSlotCtaUrl(resolvedCtaUrl, slot),
|
|
37637
37849
|
"aria-label": buildSlotCtaLabel(resolvedCtaText, slot),
|
|
37638
|
-
|
|
37850
|
+
label: resolvedCtaText
|
|
37639
37851
|
}) : null
|
|
37640
37852
|
]
|
|
37641
37853
|
}, slot.id))
|
|
@@ -38590,6 +38802,7 @@ const shopSourceSchema = z.object({
|
|
|
38590
38802
|
products: z.array(publicProductSchema).nullable().optional(),
|
|
38591
38803
|
siteId: z.string().optional(),
|
|
38592
38804
|
apiBaseUrl: z.string().optional(),
|
|
38805
|
+
readAuthority: browserReadAuthoritySchema.optional(),
|
|
38593
38806
|
stage: previewStageSchema.optional()
|
|
38594
38807
|
});
|
|
38595
38808
|
const productVariantOptionDisplaySchema = z.object({
|
|
@@ -38757,13 +38970,15 @@ function resolveShowPricePerCredit(source) {
|
|
|
38757
38970
|
const shopIslandMetaCodec = createZodCodec(z.object({
|
|
38758
38971
|
siteId: z.string().optional(),
|
|
38759
38972
|
apiBaseUrl: z.string().optional(),
|
|
38973
|
+
readAuthority: browserReadAuthoritySchema.optional(),
|
|
38760
38974
|
stage: previewStageSchema.optional()
|
|
38761
38975
|
}));
|
|
38762
|
-
const shopIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl", "stage");
|
|
38976
|
+
const shopIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl", "readAuthority", "stage");
|
|
38763
38977
|
function selectShopIslandMeta(value) {
|
|
38764
38978
|
return {
|
|
38765
38979
|
siteId: value.siteId,
|
|
38766
38980
|
apiBaseUrl: value.apiBaseUrl,
|
|
38981
|
+
readAuthority: value.readAuthority,
|
|
38767
38982
|
stage: value.stage
|
|
38768
38983
|
};
|
|
38769
38984
|
}
|
|
@@ -38934,6 +39149,7 @@ function buildShopInteractiveIslandProps(props$1) {
|
|
|
38934
39149
|
meta: {
|
|
38935
39150
|
siteId: props$1.siteId,
|
|
38936
39151
|
apiBaseUrl: props$1.apiBaseUrl,
|
|
39152
|
+
readAuthority: props$1.readAuthority,
|
|
38937
39153
|
stage: props$1.stage
|
|
38938
39154
|
},
|
|
38939
39155
|
source: {
|
|
@@ -38949,6 +39165,7 @@ function buildProductListInteractiveIslandProps(props$1) {
|
|
|
38949
39165
|
meta: {
|
|
38950
39166
|
siteId: props$1.siteId,
|
|
38951
39167
|
apiBaseUrl: props$1.apiBaseUrl,
|
|
39168
|
+
readAuthority: props$1.readAuthority,
|
|
38952
39169
|
stage: props$1.stage
|
|
38953
39170
|
},
|
|
38954
39171
|
source: {
|
|
@@ -38964,6 +39181,7 @@ function buildProductDetailInteractiveIslandProps(props$1) {
|
|
|
38964
39181
|
meta: {
|
|
38965
39182
|
siteId: props$1.siteId,
|
|
38966
39183
|
apiBaseUrl: props$1.apiBaseUrl,
|
|
39184
|
+
readAuthority: props$1.readAuthority,
|
|
38967
39185
|
stage: props$1.stage
|
|
38968
39186
|
},
|
|
38969
39187
|
source: {
|
|
@@ -38979,6 +39197,7 @@ function buildCartInteractiveIslandProps(props$1) {
|
|
|
38979
39197
|
meta: {
|
|
38980
39198
|
siteId: props$1.siteId,
|
|
38981
39199
|
apiBaseUrl: props$1.apiBaseUrl,
|
|
39200
|
+
readAuthority: props$1.readAuthority,
|
|
38982
39201
|
stage: props$1.stage
|
|
38983
39202
|
},
|
|
38984
39203
|
source: {
|
|
@@ -38994,6 +39213,7 @@ function buildCheckoutInteractiveIslandProps(props$1) {
|
|
|
38994
39213
|
meta: {
|
|
38995
39214
|
siteId: props$1.siteId,
|
|
38996
39215
|
apiBaseUrl: props$1.apiBaseUrl,
|
|
39216
|
+
readAuthority: props$1.readAuthority,
|
|
38997
39217
|
stage: props$1.stage
|
|
38998
39218
|
},
|
|
38999
39219
|
source: {
|
|
@@ -39096,6 +39316,7 @@ const cartManifest = createBlockManifest({
|
|
|
39096
39316
|
baseClass: "",
|
|
39097
39317
|
spacing: "spacious",
|
|
39098
39318
|
children: sectionContainer([cart(withApiBindings({
|
|
39319
|
+
readAuthority: { $bind: { from: "$root.readAuthority" } },
|
|
39099
39320
|
mode: "cart",
|
|
39100
39321
|
heading: { $bind: {
|
|
39101
39322
|
from: "content.heading",
|
|
@@ -39183,6 +39404,7 @@ const checkoutManifest = createBlockManifest({
|
|
|
39183
39404
|
baseClass: "",
|
|
39184
39405
|
spacing: "spacious",
|
|
39185
39406
|
children: sectionContainer([checkout(withApiBindings({
|
|
39407
|
+
readAuthority: { $bind: { from: "$root.readAuthority" } },
|
|
39186
39408
|
mode: "checkout",
|
|
39187
39409
|
heading: { $bind: {
|
|
39188
39410
|
from: "content.heading",
|
|
@@ -39514,6 +39736,18 @@ function getStepNumber(step, wizardSteps) {
|
|
|
39514
39736
|
|
|
39515
39737
|
//#endregion
|
|
39516
39738
|
//#region ../blocks/src/system/runtime/nodes/event-registration/registrationDerivations.ts
|
|
39739
|
+
/** Public requests share subject identity without copying the run's display sessions. */
|
|
39740
|
+
function toRegistrationRequestSubject(subject, attendanceMode) {
|
|
39741
|
+
return subject.kind === "occurrence" ? {
|
|
39742
|
+
kind: "occurrence",
|
|
39743
|
+
occurrenceId: subject.occurrenceId,
|
|
39744
|
+
attendanceMode: attendanceMode ?? undefined
|
|
39745
|
+
} : {
|
|
39746
|
+
kind: "wholeSeries",
|
|
39747
|
+
eventSeriesId: subject.eventSeriesId,
|
|
39748
|
+
attendanceMode: attendanceMode ?? undefined
|
|
39749
|
+
};
|
|
39750
|
+
}
|
|
39517
39751
|
function eventMatchesOccurrenceId(event, occurrenceId) {
|
|
39518
39752
|
return event.registrationSubject.kind === "occurrence" && (event.registrationSubject.occurrenceId === occurrenceId || event.selectionId === occurrenceId);
|
|
39519
39753
|
}
|
|
@@ -39724,6 +39958,7 @@ const eventRegistrationSourceSchema = z.object({
|
|
|
39724
39958
|
apiBaseUrl: z.string().optional(),
|
|
39725
39959
|
portalToken: z.string().nullable().optional(),
|
|
39726
39960
|
previewToken: z.string().nullable().optional(),
|
|
39961
|
+
readAuthority: browserReadAuthoritySchema.optional(),
|
|
39727
39962
|
...eventRegistrationHydrationSchemaShape,
|
|
39728
39963
|
events: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
|
|
39729
39964
|
wholeSeriesRunEvents: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
|
|
@@ -39761,9 +39996,10 @@ const eventRegistrationIslandMetaCodec = createZodCodec(z.object({
|
|
|
39761
39996
|
apiBaseUrl: z.string().optional(),
|
|
39762
39997
|
portalToken: z.string().nullable().optional(),
|
|
39763
39998
|
previewToken: z.string().nullable().optional(),
|
|
39999
|
+
readAuthority: browserReadAuthoritySchema.optional(),
|
|
39764
40000
|
stage: previewStageSchema.optional()
|
|
39765
40001
|
}));
|
|
39766
|
-
const eventRegistrationIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl", "portalToken", "previewToken", "stage");
|
|
40002
|
+
const eventRegistrationIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl", "portalToken", "previewToken", "readAuthority", "stage");
|
|
39767
40003
|
function buildEventRegistrationDisplayFromScopedEvents(source, scopedSourceEvents) {
|
|
39768
40004
|
const selectedRun = resolveSelectedWholeSeriesRun(scopedSourceEvents);
|
|
39769
40005
|
if (selectedRun && (!selectedRun.run.enrollmentOpen || toWholeSeriesRegistrationEvent(selectedRun) === null)) {
|
|
@@ -39844,6 +40080,7 @@ function shellLabelForRegistrationStep(step, events) {
|
|
|
39844
40080
|
case "redirecting":
|
|
39845
40081
|
case "verifying-payment":
|
|
39846
40082
|
case "verifying-timeout":
|
|
40083
|
+
case "payment-status":
|
|
39847
40084
|
case "payment-failed": return "Details";
|
|
39848
40085
|
}
|
|
39849
40086
|
}
|
|
@@ -39918,6 +40155,7 @@ const eventRegistrationInteractiveIslandPropsCodec = createInteractiveIslandCode
|
|
|
39918
40155
|
apiBaseUrl: value.apiBaseUrl,
|
|
39919
40156
|
portalToken: value.portalToken,
|
|
39920
40157
|
previewToken: value.previewToken,
|
|
40158
|
+
readAuthority: value.readAuthority,
|
|
39921
40159
|
stage: value.stage
|
|
39922
40160
|
})
|
|
39923
40161
|
});
|
|
@@ -39930,6 +40168,7 @@ function buildEventRegistrationInteractiveIslandProps(props$1) {
|
|
|
39930
40168
|
apiBaseUrl: props$1.apiBaseUrl,
|
|
39931
40169
|
portalToken: props$1.portalToken,
|
|
39932
40170
|
previewToken: props$1.previewToken,
|
|
40171
|
+
readAuthority: props$1.readAuthority,
|
|
39933
40172
|
stage: props$1.stage
|
|
39934
40173
|
},
|
|
39935
40174
|
source: props$1
|
|
@@ -40079,6 +40318,7 @@ const eventRegistrationManifest = createBlockManifest({
|
|
|
40079
40318
|
text({ as: "h2" }, bind("content.heading"), when("content.heading")),
|
|
40080
40319
|
richText({ className: "rb-prose rb-max-w-none" }, bind("content.description"), when("content.description")),
|
|
40081
40320
|
eventRegistration(withApiBindings({
|
|
40321
|
+
readAuthority: { $bind: { from: "$root.readAuthority" } },
|
|
40082
40322
|
occurrenceContext: { $bind: { from: "$root.occurrenceContext" } },
|
|
40083
40323
|
subject: { $bind: { from: "$root.subject" } },
|
|
40084
40324
|
portalToken: { $bind: {
|
|
@@ -40540,9 +40780,10 @@ const eventCalendarRenderSchema = z.object({
|
|
|
40540
40780
|
const eventCalendarIslandMetaCodec = createZodCodec(z.object({
|
|
40541
40781
|
siteId: z.string(),
|
|
40542
40782
|
apiBaseUrl: z.string().optional(),
|
|
40783
|
+
readAuthority: browserReadAuthoritySchema.optional(),
|
|
40543
40784
|
stage: previewStageSchema.optional()
|
|
40544
40785
|
}));
|
|
40545
|
-
const eventCalendarIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl", "stage");
|
|
40786
|
+
const eventCalendarIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl", "readAuthority", "stage");
|
|
40546
40787
|
/**
|
|
40547
40788
|
* Collapse an optional/blank string to `undefined` so downstream week-board
|
|
40548
40789
|
* copy (title, footer note) and the CTA href stay hidden unless a site opts in
|
|
@@ -40562,7 +40803,7 @@ function buildEventCalendarDisplay(source) {
|
|
|
40562
40803
|
listColumns: source.listColumns ?? source.columns
|
|
40563
40804
|
}),
|
|
40564
40805
|
kind: "event-calendar",
|
|
40565
|
-
displayMode:
|
|
40806
|
+
displayMode: resolveEventCalendarReadPlan(source).mode,
|
|
40566
40807
|
className: source.className ?? null,
|
|
40567
40808
|
events: (source.events ?? []).slice().sort((left, right) => new Date(left.startsAt).getTime() - new Date(right.startsAt).getTime()),
|
|
40568
40809
|
boardTitle: normalizeOptionalText(source.boardTitle),
|
|
@@ -40583,7 +40824,6 @@ function buildEventCalendarListingRender(render, className = render.display.clas
|
|
|
40583
40824
|
display: buildEventCalendarListingDisplay(display, hydration.prefetchedEvents, className),
|
|
40584
40825
|
hydration: {
|
|
40585
40826
|
siteId: hydration.siteId,
|
|
40586
|
-
stage: hydration.stage,
|
|
40587
40827
|
eventsPerPage: display.eventsPerPage,
|
|
40588
40828
|
paginationAction: display.paginationAction,
|
|
40589
40829
|
showFilters: display.showFilters,
|
|
@@ -40607,13 +40847,17 @@ const eventCalendarBlockRuntime = defineProgressiveBlockRuntime({
|
|
|
40607
40847
|
source: createZodCodec(eventCalendarSourceSchema),
|
|
40608
40848
|
render: createZodCodec(eventCalendarRenderSchema)
|
|
40609
40849
|
},
|
|
40610
|
-
buildRender: (source) =>
|
|
40611
|
-
|
|
40850
|
+
buildRender: (source) => {
|
|
40851
|
+
const plan = resolveEventCalendarReadPlan(source);
|
|
40852
|
+
const displaySource = source.calendarWindow && plan.jobs === "calendar" ? {
|
|
40612
40853
|
...source,
|
|
40613
40854
|
events: source.calendarWindow.events
|
|
40614
|
-
} : source
|
|
40615
|
-
|
|
40616
|
-
|
|
40855
|
+
} : source;
|
|
40856
|
+
return {
|
|
40857
|
+
display: buildEventCalendarDisplay(displaySource),
|
|
40858
|
+
hydration: buildEventCollectionHydration(source)
|
|
40859
|
+
};
|
|
40860
|
+
}
|
|
40617
40861
|
});
|
|
40618
40862
|
const eventCalendarInteractiveIslandPropsCodec = createInteractiveIslandCodec({
|
|
40619
40863
|
runtime: eventCalendarBlockRuntime,
|
|
@@ -40623,6 +40867,7 @@ const eventCalendarInteractiveIslandPropsCodec = createInteractiveIslandCodec({
|
|
|
40623
40867
|
selectMeta: (value) => ({
|
|
40624
40868
|
siteId: value.siteId,
|
|
40625
40869
|
apiBaseUrl: value.apiBaseUrl,
|
|
40870
|
+
readAuthority: value.readAuthority,
|
|
40626
40871
|
stage: value.stage
|
|
40627
40872
|
})
|
|
40628
40873
|
});
|
|
@@ -40633,6 +40878,7 @@ function buildEventCalendarInteractiveIslandProps(props$1) {
|
|
|
40633
40878
|
meta: {
|
|
40634
40879
|
siteId: props$1.siteId,
|
|
40635
40880
|
apiBaseUrl: props$1.apiBaseUrl,
|
|
40881
|
+
readAuthority: props$1.readAuthority,
|
|
40636
40882
|
stage: props$1.stage
|
|
40637
40883
|
},
|
|
40638
40884
|
source: props$1
|
|
@@ -40788,6 +41034,7 @@ const eventCalendarLayout = [styledSection({
|
|
|
40788
41034
|
rootType: "stack",
|
|
40789
41035
|
rootProps: { gap: "lg" },
|
|
40790
41036
|
children: [...eventSectionHeaderLayoutNodes({ splitClassName: "event-section-head event-section-head--split" }), el("event-calendar", withApiBindings({
|
|
41037
|
+
readAuthority: { $bind: { from: "$root.readAuthority" } },
|
|
40791
41038
|
events: { $bind: { from: "data.events" } },
|
|
40792
41039
|
calendarWindow: { $bind: { from: "data.calendarWindow" } },
|
|
40793
41040
|
stage: { $bind: {
|
|
@@ -41671,6 +41918,7 @@ const eventListingSourceSchema = z.object({
|
|
|
41671
41918
|
events: z.array(publicEventSchema).nullable().optional(),
|
|
41672
41919
|
siteId: z.string(),
|
|
41673
41920
|
apiBaseUrl: z.string().optional(),
|
|
41921
|
+
readAuthority: browserReadAuthoritySchema.optional(),
|
|
41674
41922
|
stage: previewStageSchema.optional(),
|
|
41675
41923
|
layout: eventLayoutSchema.optional(),
|
|
41676
41924
|
columns: columnOptionSchema.optional(),
|
|
@@ -41711,7 +41959,6 @@ const eventListingDisplaySchema = z.object({
|
|
|
41711
41959
|
});
|
|
41712
41960
|
const eventListingHydrationSchema = z.object({
|
|
41713
41961
|
siteId: z.string(),
|
|
41714
|
-
stage: previewStageSchema.optional(),
|
|
41715
41962
|
eventsPerPage: eventPageSizeSchema,
|
|
41716
41963
|
paginationAction: eventListPaginationActionSchema,
|
|
41717
41964
|
showFilters: z.boolean(),
|
|
@@ -41734,6 +41981,7 @@ const eventListingRenderSchema = z.object({
|
|
|
41734
41981
|
const eventListingIslandMetaCodec = createZodCodec(z.object({
|
|
41735
41982
|
siteId: z.string(),
|
|
41736
41983
|
apiBaseUrl: z.string().optional(),
|
|
41984
|
+
readAuthority: browserReadAuthoritySchema.optional(),
|
|
41737
41985
|
stage: previewStageSchema.optional()
|
|
41738
41986
|
}));
|
|
41739
41987
|
const eventListingBlockRuntime = defineProgressiveBlockRuntime({
|
|
@@ -41768,7 +42016,6 @@ const eventListingBlockRuntime = defineProgressiveBlockRuntime({
|
|
|
41768
42016
|
},
|
|
41769
42017
|
hydration: {
|
|
41770
42018
|
siteId: source.siteId,
|
|
41771
|
-
stage: source.stage,
|
|
41772
42019
|
eventsPerPage: pageSize,
|
|
41773
42020
|
paginationAction: resolveEventListPaginationAction({
|
|
41774
42021
|
paginationMode: source.paginationMode,
|
|
@@ -41791,7 +42038,7 @@ const eventListingBlockRuntime = defineProgressiveBlockRuntime({
|
|
|
41791
42038
|
};
|
|
41792
42039
|
}
|
|
41793
42040
|
});
|
|
41794
|
-
const eventListingIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl", "stage");
|
|
42041
|
+
const eventListingIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl", "readAuthority", "stage");
|
|
41795
42042
|
const eventListingInteractiveIslandPropsCodec = createInteractiveIslandCodec({
|
|
41796
42043
|
runtime: eventListingBlockRuntime,
|
|
41797
42044
|
mode: "event-listing",
|
|
@@ -41800,6 +42047,7 @@ const eventListingInteractiveIslandPropsCodec = createInteractiveIslandCodec({
|
|
|
41800
42047
|
selectMeta: (value) => ({
|
|
41801
42048
|
siteId: value.siteId,
|
|
41802
42049
|
apiBaseUrl: value.apiBaseUrl,
|
|
42050
|
+
readAuthority: value.readAuthority,
|
|
41803
42051
|
stage: value.stage
|
|
41804
42052
|
})
|
|
41805
42053
|
});
|
|
@@ -41810,6 +42058,7 @@ function buildEventListingInteractiveIslandProps(props$1) {
|
|
|
41810
42058
|
meta: {
|
|
41811
42059
|
siteId: props$1.siteId,
|
|
41812
42060
|
apiBaseUrl: props$1.apiBaseUrl,
|
|
42061
|
+
readAuthority: props$1.readAuthority,
|
|
41813
42062
|
stage: props$1.stage
|
|
41814
42063
|
},
|
|
41815
42064
|
source: props$1
|
|
@@ -42055,6 +42304,7 @@ const eventListingLayout = [styledSection({
|
|
|
42055
42304
|
rootType: "stack",
|
|
42056
42305
|
rootProps: { gap: "lg" },
|
|
42057
42306
|
children: [...eventSectionHeaderLayoutNodes(), el("event-listing", withApiBindings({
|
|
42307
|
+
readAuthority: { $bind: { from: "$root.readAuthority" } },
|
|
42058
42308
|
events: { $bind: { from: "data.events" } },
|
|
42059
42309
|
stage: { $bind: {
|
|
42060
42310
|
from: "$root.previewStage",
|
|
@@ -42777,6 +43027,7 @@ const productDetailManifest = createBlockManifest({
|
|
|
42777
43027
|
baseClass: "",
|
|
42778
43028
|
spacing: "spacious",
|
|
42779
43029
|
children: sectionContainer([productDetail(withApiBindings({
|
|
43030
|
+
readAuthority: { $bind: { from: "$root.readAuthority" } },
|
|
42780
43031
|
mode: "product-detail",
|
|
42781
43032
|
heading: { $bind: {
|
|
42782
43033
|
from: "content.heading",
|
|
@@ -42949,6 +43200,7 @@ const productListManifest = createBlockManifest({
|
|
|
42949
43200
|
baseClass: "",
|
|
42950
43201
|
spacing: "spacious",
|
|
42951
43202
|
children: sectionContainer([productList(withApiBindings({
|
|
43203
|
+
readAuthority: { $bind: { from: "$root.readAuthority" } },
|
|
42952
43204
|
mode: "product-list",
|
|
42953
43205
|
heading: { $bind: {
|
|
42954
43206
|
from: "content.heading",
|
|
@@ -43233,6 +43485,7 @@ const shopManifest = createBlockManifest({
|
|
|
43233
43485
|
baseClass: "",
|
|
43234
43486
|
spacing: "spacious",
|
|
43235
43487
|
children: sectionContainer([shop(withApiBindings({
|
|
43488
|
+
readAuthority: { $bind: { from: "$root.readAuthority" } },
|
|
43236
43489
|
mode: "passes-memberships",
|
|
43237
43490
|
showPasses: { $bind: {
|
|
43238
43491
|
from: "content.showPasses",
|
|
@@ -43643,15 +43896,13 @@ function CheckoutShellView(props$1) {
|
|
|
43643
43896
|
//#endregion
|
|
43644
43897
|
//#region ../blocks/src/system/runtime/nodes/shop-commerce.server.tsx
|
|
43645
43898
|
function renderServerPendingAction(label, soldOut) {
|
|
43646
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
43899
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButton, {
|
|
43647
43900
|
type: "button",
|
|
43648
|
-
|
|
43649
|
-
|
|
43650
|
-
|
|
43651
|
-
}),
|
|
43901
|
+
variant: "default",
|
|
43902
|
+
size: "md",
|
|
43903
|
+
label: soldOut ? "Sold out" : label,
|
|
43652
43904
|
disabled: true,
|
|
43653
|
-
"aria-disabled": "true"
|
|
43654
|
-
children: soldOut ? "Sold out" : label
|
|
43905
|
+
"aria-disabled": "true"
|
|
43655
43906
|
}), !soldOut ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
|
|
43656
43907
|
className: "rb-caption status-muted",
|
|
43657
43908
|
children: "Cart actions become interactive after page load."
|
|
@@ -43668,13 +43919,11 @@ function ProductListServerContent(props$1) {
|
|
|
43668
43919
|
selectedVariantId: card.selectedVariantId,
|
|
43669
43920
|
disabled: true
|
|
43670
43921
|
}),
|
|
43671
|
-
actions: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [renderServerPendingAction(card.actionLabel, card.soldOut), card.path ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
43922
|
+
actions: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [renderServerPendingAction(card.actionLabel, card.soldOut), card.path ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButtonLink, {
|
|
43672
43923
|
href: card.path,
|
|
43673
|
-
|
|
43674
|
-
|
|
43675
|
-
|
|
43676
|
-
}),
|
|
43677
|
-
children: "View details"
|
|
43924
|
+
variant: "secondary",
|
|
43925
|
+
size: "sm",
|
|
43926
|
+
label: "View details"
|
|
43678
43927
|
}) : null] })
|
|
43679
43928
|
}, card.productId))
|
|
43680
43929
|
});
|
|
@@ -43978,10 +44227,6 @@ function AgendaLinkCard({ event, showCapacity, showVenue, buttonVariant, buttonT
|
|
|
43978
44227
|
const price = formatEventPrice(event);
|
|
43979
44228
|
const capacity = showCapacity ? formatEventRemainingPlaces(event) : null;
|
|
43980
44229
|
const cta = resolveEventCta(event, buttonText);
|
|
43981
|
-
const buttonClass = themeButtonClassName({
|
|
43982
|
-
variant: buttonVariant,
|
|
43983
|
-
size: "sm"
|
|
43984
|
-
});
|
|
43985
44230
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("article", {
|
|
43986
44231
|
className: "event-agenda-card event-agenda-card--agenda",
|
|
43987
44232
|
children: [
|
|
@@ -44033,12 +44278,14 @@ function AgendaLinkCard({ event, showCapacity, showVenue, buttonVariant, buttonT
|
|
|
44033
44278
|
}), cta.hidden ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
44034
44279
|
className: "event-agenda-card-status status-muted",
|
|
44035
44280
|
children: cta.label
|
|
44036
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
44281
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButtonLink, {
|
|
44037
44282
|
href: cta.href,
|
|
44038
44283
|
target: cta.external ? "_blank" : undefined,
|
|
44039
44284
|
rel: cta.external ? "noopener noreferrer" : undefined,
|
|
44040
|
-
|
|
44041
|
-
|
|
44285
|
+
variant: buttonVariant,
|
|
44286
|
+
size: "sm",
|
|
44287
|
+
extraClassName: "event-agenda-card-cta",
|
|
44288
|
+
label: cta.label
|
|
44042
44289
|
})]
|
|
44043
44290
|
})
|
|
44044
44291
|
]
|
|
@@ -44244,7 +44491,7 @@ const WeekBoardCard = ({ event, showCapacity, calendarTimeZone }) => {
|
|
|
44244
44491
|
]
|
|
44245
44492
|
});
|
|
44246
44493
|
};
|
|
44247
|
-
const WeekBoardNavigationControls = ({ navigation: navigation$1,
|
|
44494
|
+
const WeekBoardNavigationControls = ({ navigation: navigation$1, buttonVariant }) => {
|
|
44248
44495
|
const handlers = navigation$1.kind === "interactive" ? navigation$1 : {
|
|
44249
44496
|
onPrevious: undefined,
|
|
44250
44497
|
onNext: undefined,
|
|
@@ -44277,12 +44524,13 @@ const WeekBoardNavigationControls = ({ navigation: navigation$1, todayClassName
|
|
|
44277
44524
|
onClick: handlers.onNext,
|
|
44278
44525
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CalendarNavigationChevron, { direction: "next" })
|
|
44279
44526
|
}),
|
|
44280
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
44527
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButton, {
|
|
44281
44528
|
type: "button",
|
|
44282
|
-
|
|
44529
|
+
variant: buttonVariant,
|
|
44530
|
+
size: "sm",
|
|
44531
|
+
label: "Today",
|
|
44283
44532
|
disabled: navigation$1.isCurrentWeek,
|
|
44284
|
-
onClick: handlers.onToday
|
|
44285
|
-
children: "Today"
|
|
44533
|
+
onClick: handlers.onToday
|
|
44286
44534
|
})
|
|
44287
44535
|
]
|
|
44288
44536
|
});
|
|
@@ -44298,18 +44546,19 @@ const WeekBoardLegend = () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div",
|
|
|
44298
44546
|
}), item.label]
|
|
44299
44547
|
}, item.status))
|
|
44300
44548
|
});
|
|
44301
|
-
const WeekBoardLoadError = ({ navigation: navigation$1,
|
|
44549
|
+
const WeekBoardLoadError = ({ navigation: navigation$1, buttonVariant }) => {
|
|
44302
44550
|
if (navigation$1.kind !== "interactive" || navigation$1.loadState.kind !== "error") {
|
|
44303
44551
|
return null;
|
|
44304
44552
|
}
|
|
44305
44553
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
44306
44554
|
className: "event-week-board-error",
|
|
44307
44555
|
role: "status",
|
|
44308
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { children: "Failed to load events" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
44556
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { children: "Failed to load events" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButton, {
|
|
44309
44557
|
type: "button",
|
|
44310
|
-
|
|
44311
|
-
|
|
44312
|
-
|
|
44558
|
+
variant: buttonVariant,
|
|
44559
|
+
size: "sm",
|
|
44560
|
+
label: "Try again",
|
|
44561
|
+
onClick: navigation$1.loadState.onRetry
|
|
44313
44562
|
})]
|
|
44314
44563
|
});
|
|
44315
44564
|
};
|
|
@@ -44341,17 +44590,18 @@ const WeekBoardGrid = ({ days, eventsByDate, showCapacity, calendarTimeZone, tod
|
|
|
44341
44590
|
}, dateKey);
|
|
44342
44591
|
})
|
|
44343
44592
|
});
|
|
44344
|
-
const WeekBoardFooter = ({ note, ctaHref, ctaLabel,
|
|
44593
|
+
const WeekBoardFooter = ({ note, ctaHref, ctaLabel, buttonVariant }) => {
|
|
44345
44594
|
if (note === null && ctaHref === null) return null;
|
|
44346
44595
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
44347
44596
|
className: "event-week-board-foot",
|
|
44348
44597
|
children: [note === null ? null : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
|
|
44349
44598
|
className: "event-week-board-foot-note",
|
|
44350
44599
|
children: note
|
|
44351
|
-
}), ctaHref === null ? null : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
44352
|
-
|
|
44600
|
+
}), ctaHref === null ? null : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButtonLink, {
|
|
44601
|
+
variant: buttonVariant,
|
|
44602
|
+
size: "sm",
|
|
44353
44603
|
href: ctaHref,
|
|
44354
|
-
|
|
44604
|
+
label: ctaLabel
|
|
44355
44605
|
})]
|
|
44356
44606
|
});
|
|
44357
44607
|
};
|
|
@@ -44366,14 +44616,6 @@ const WeekBoardFooter = ({ note, ctaHref, ctaLabel, ctaClassName }) => {
|
|
|
44366
44616
|
const WeekBoardView = ({ days, events, navigation: navigation$1, showCapacity, emptyMessage = "No classes scheduled this week", title, footerNote, ctaLabel = "Reserve a place", ctaHref = null, buttonVariant = "outline", elevated = false, banded = false, calendarTimeZone, today }) => {
|
|
44367
44617
|
const eventsByDate = groupEventsByDate(events, calendarTimeZone);
|
|
44368
44618
|
const hasAnyEvents = days.some((date) => (eventsByDate.get(formatDateKey(date)) ?? []).length > 0);
|
|
44369
|
-
const ctaClassName = themeButtonClassName({
|
|
44370
|
-
variant: buttonVariant,
|
|
44371
|
-
size: "sm"
|
|
44372
|
-
});
|
|
44373
|
-
const todayClassName = themeButtonClassName({
|
|
44374
|
-
variant: buttonVariant,
|
|
44375
|
-
size: "sm"
|
|
44376
|
-
});
|
|
44377
44619
|
const hasTitle = typeof title === "string" && title.length > 0;
|
|
44378
44620
|
const hasFooterNote = typeof footerNote === "string" && footerNote.length > 0;
|
|
44379
44621
|
const footerNoteText = hasAnyEvents ? hasFooterNote ? footerNote : null : emptyMessage;
|
|
@@ -44396,14 +44638,14 @@ const WeekBoardView = ({ days, events, navigation: navigation$1, showCapacity, e
|
|
|
44396
44638
|
}) : null,
|
|
44397
44639
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(WeekBoardNavigationControls, {
|
|
44398
44640
|
navigation: navigation$1,
|
|
44399
|
-
|
|
44641
|
+
buttonVariant
|
|
44400
44642
|
}),
|
|
44401
44643
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(WeekBoardLegend, {})
|
|
44402
44644
|
]
|
|
44403
44645
|
}),
|
|
44404
44646
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(WeekBoardLoadError, {
|
|
44405
44647
|
navigation: navigation$1,
|
|
44406
|
-
|
|
44648
|
+
buttonVariant
|
|
44407
44649
|
}),
|
|
44408
44650
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(WeekBoardGrid, {
|
|
44409
44651
|
days,
|
|
@@ -44416,7 +44658,7 @@ const WeekBoardView = ({ days, events, navigation: navigation$1, showCapacity, e
|
|
|
44416
44658
|
note: footerNoteText,
|
|
44417
44659
|
ctaHref: resolvedCtaHref,
|
|
44418
44660
|
ctaLabel,
|
|
44419
|
-
|
|
44661
|
+
buttonVariant
|
|
44420
44662
|
})
|
|
44421
44663
|
]
|
|
44422
44664
|
})
|
|
@@ -44521,6 +44763,54 @@ function assertNeverDisplayMode(value) {
|
|
|
44521
44763
|
function renderEventCard(event, display) {
|
|
44522
44764
|
return renderEventListItem(event, display);
|
|
44523
44765
|
}
|
|
44766
|
+
function CalendarSsrHeader(props$1) {
|
|
44767
|
+
const periodLabel = props$1.period === "week" ? "week" : "month";
|
|
44768
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
44769
|
+
className: "event-calendar-header",
|
|
44770
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
44771
|
+
className: "event-calendar-nav",
|
|
44772
|
+
children: [
|
|
44773
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
|
|
44774
|
+
type: "button",
|
|
44775
|
+
className: "event-calendar-nav-btn",
|
|
44776
|
+
"aria-label": `Previous ${periodLabel}`,
|
|
44777
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CalendarSsrChevron, { direction: "previous" })
|
|
44778
|
+
}),
|
|
44779
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", {
|
|
44780
|
+
className: "event-calendar-title",
|
|
44781
|
+
children: props$1.title
|
|
44782
|
+
}),
|
|
44783
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
|
|
44784
|
+
type: "button",
|
|
44785
|
+
className: "event-calendar-nav-btn",
|
|
44786
|
+
"aria-label": `Next ${periodLabel}`,
|
|
44787
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CalendarSsrChevron, { direction: "next" })
|
|
44788
|
+
})
|
|
44789
|
+
]
|
|
44790
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButton, {
|
|
44791
|
+
type: "button",
|
|
44792
|
+
variant: props$1.buttonVariant,
|
|
44793
|
+
size: "sm",
|
|
44794
|
+
label: "Today"
|
|
44795
|
+
})]
|
|
44796
|
+
});
|
|
44797
|
+
}
|
|
44798
|
+
function CalendarSsrChevron(props$1) {
|
|
44799
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", {
|
|
44800
|
+
width: "20",
|
|
44801
|
+
height: "20",
|
|
44802
|
+
fill: "none",
|
|
44803
|
+
stroke: "currentColor",
|
|
44804
|
+
strokeWidth: 2,
|
|
44805
|
+
viewBox: "0 0 24 24",
|
|
44806
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
|
|
44807
|
+
strokeLinecap: "round",
|
|
44808
|
+
strokeLinejoin: "round",
|
|
44809
|
+
strokeWidth: 2,
|
|
44810
|
+
d: props$1.direction === "previous" ? "M15 19l-7-7 7-7" : "M9 5l7 7-7 7"
|
|
44811
|
+
})
|
|
44812
|
+
});
|
|
44813
|
+
}
|
|
44524
44814
|
function renderCombinedSsr(display, prefetchedEvents) {
|
|
44525
44815
|
const listDisplay = buildEventCalendarListingDisplay(display, prefetchedEvents, "event-combined-content");
|
|
44526
44816
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -44568,62 +44858,10 @@ function renderCalendarSsr(display, hydration) {
|
|
|
44568
44858
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
44569
44859
|
className: clsx_default("event-calendar", display.className ?? undefined),
|
|
44570
44860
|
"data-block": "event-calendar",
|
|
44571
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.
|
|
44572
|
-
|
|
44573
|
-
|
|
44574
|
-
|
|
44575
|
-
children: [
|
|
44576
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
|
|
44577
|
-
type: "button",
|
|
44578
|
-
className: "event-calendar-nav-btn",
|
|
44579
|
-
"aria-label": calendarView === "week" ? "Previous week" : "Previous month",
|
|
44580
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", {
|
|
44581
|
-
width: "20",
|
|
44582
|
-
height: "20",
|
|
44583
|
-
fill: "none",
|
|
44584
|
-
stroke: "currentColor",
|
|
44585
|
-
strokeWidth: 2,
|
|
44586
|
-
viewBox: "0 0 24 24",
|
|
44587
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
|
|
44588
|
-
strokeLinecap: "round",
|
|
44589
|
-
strokeLinejoin: "round",
|
|
44590
|
-
strokeWidth: 2,
|
|
44591
|
-
d: "M15 19l-7-7 7-7"
|
|
44592
|
-
})
|
|
44593
|
-
})
|
|
44594
|
-
}),
|
|
44595
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", {
|
|
44596
|
-
className: "event-calendar-title",
|
|
44597
|
-
children: viewport.title
|
|
44598
|
-
}),
|
|
44599
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
|
|
44600
|
-
type: "button",
|
|
44601
|
-
className: "event-calendar-nav-btn",
|
|
44602
|
-
"aria-label": calendarView === "week" ? "Next week" : "Next month",
|
|
44603
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", {
|
|
44604
|
-
width: "20",
|
|
44605
|
-
height: "20",
|
|
44606
|
-
fill: "none",
|
|
44607
|
-
stroke: "currentColor",
|
|
44608
|
-
strokeWidth: 2,
|
|
44609
|
-
viewBox: "0 0 24 24",
|
|
44610
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
|
|
44611
|
-
strokeLinecap: "round",
|
|
44612
|
-
strokeLinejoin: "round",
|
|
44613
|
-
strokeWidth: 2,
|
|
44614
|
-
d: "M9 5l7 7-7 7"
|
|
44615
|
-
})
|
|
44616
|
-
})
|
|
44617
|
-
})
|
|
44618
|
-
]
|
|
44619
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
|
|
44620
|
-
type: "button",
|
|
44621
|
-
className: themeButtonClassName({
|
|
44622
|
-
variant: display.buttonVariant,
|
|
44623
|
-
size: "sm"
|
|
44624
|
-
}),
|
|
44625
|
-
children: "Today"
|
|
44626
|
-
})]
|
|
44861
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CalendarSsrHeader, {
|
|
44862
|
+
title: viewport.title,
|
|
44863
|
+
period: calendarView,
|
|
44864
|
+
buttonVariant: display.buttonVariant
|
|
44627
44865
|
}), viewport.kind === "week" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(WeekAgendaView, {
|
|
44628
44866
|
days: viewport.days,
|
|
44629
44867
|
events: [...display.events],
|
|
@@ -44700,62 +44938,10 @@ function renderTimetableSsr(display, hydration) {
|
|
|
44700
44938
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
44701
44939
|
className: clsx_default("event-calendar", "event-calendar--timetable", display.className ?? undefined),
|
|
44702
44940
|
"data-block": "event-calendar",
|
|
44703
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.
|
|
44704
|
-
|
|
44705
|
-
|
|
44706
|
-
|
|
44707
|
-
children: [
|
|
44708
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
|
|
44709
|
-
type: "button",
|
|
44710
|
-
className: "event-calendar-nav-btn",
|
|
44711
|
-
"aria-label": "Previous week",
|
|
44712
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", {
|
|
44713
|
-
width: "20",
|
|
44714
|
-
height: "20",
|
|
44715
|
-
fill: "none",
|
|
44716
|
-
stroke: "currentColor",
|
|
44717
|
-
strokeWidth: 2,
|
|
44718
|
-
viewBox: "0 0 24 24",
|
|
44719
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
|
|
44720
|
-
strokeLinecap: "round",
|
|
44721
|
-
strokeLinejoin: "round",
|
|
44722
|
-
strokeWidth: 2,
|
|
44723
|
-
d: "M15 19l-7-7 7-7"
|
|
44724
|
-
})
|
|
44725
|
-
})
|
|
44726
|
-
}),
|
|
44727
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", {
|
|
44728
|
-
className: "event-calendar-title",
|
|
44729
|
-
children: viewport.title
|
|
44730
|
-
}),
|
|
44731
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
|
|
44732
|
-
type: "button",
|
|
44733
|
-
className: "event-calendar-nav-btn",
|
|
44734
|
-
"aria-label": "Next week",
|
|
44735
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", {
|
|
44736
|
-
width: "20",
|
|
44737
|
-
height: "20",
|
|
44738
|
-
fill: "none",
|
|
44739
|
-
stroke: "currentColor",
|
|
44740
|
-
strokeWidth: 2,
|
|
44741
|
-
viewBox: "0 0 24 24",
|
|
44742
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
|
|
44743
|
-
strokeLinecap: "round",
|
|
44744
|
-
strokeLinejoin: "round",
|
|
44745
|
-
strokeWidth: 2,
|
|
44746
|
-
d: "M9 5l7 7-7 7"
|
|
44747
|
-
})
|
|
44748
|
-
})
|
|
44749
|
-
})
|
|
44750
|
-
]
|
|
44751
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
|
|
44752
|
-
type: "button",
|
|
44753
|
-
className: themeButtonClassName({
|
|
44754
|
-
variant: display.buttonVariant,
|
|
44755
|
-
size: "sm"
|
|
44756
|
-
}),
|
|
44757
|
-
children: "Today"
|
|
44758
|
-
})]
|
|
44941
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CalendarSsrHeader, {
|
|
44942
|
+
title: viewport.title,
|
|
44943
|
+
period: "week",
|
|
44944
|
+
buttonVariant: display.buttonVariant
|
|
44759
44945
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
44760
44946
|
className: "event-timetable",
|
|
44761
44947
|
children: [
|
|
@@ -45271,14 +45457,12 @@ const FormNodeSSR = ({ blockId, value, submitLabel, successMessage, className, o
|
|
|
45271
45457
|
className: "fb-actions",
|
|
45272
45458
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
45273
45459
|
className: "fb-actions-inner",
|
|
45274
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
45460
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButton, {
|
|
45275
45461
|
type: "submit",
|
|
45276
|
-
|
|
45277
|
-
|
|
45278
|
-
|
|
45279
|
-
|
|
45280
|
-
}),
|
|
45281
|
-
children: display.submitLabel
|
|
45462
|
+
variant: "primary",
|
|
45463
|
+
size: "md",
|
|
45464
|
+
extraClassName: "rb-w-full rb-sm-w-auto",
|
|
45465
|
+
label: display.submitLabel
|
|
45282
45466
|
})
|
|
45283
45467
|
})
|
|
45284
45468
|
})
|
|
@@ -45376,13 +45560,11 @@ function NewsletterFormSSR(props$1) {
|
|
|
45376
45560
|
}) : null,
|
|
45377
45561
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
45378
45562
|
className: "newsletter-submit",
|
|
45379
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
45563
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButton, {
|
|
45380
45564
|
type: "submit",
|
|
45381
|
-
|
|
45382
|
-
|
|
45383
|
-
|
|
45384
|
-
}),
|
|
45385
|
-
children: display.buttonLabel
|
|
45565
|
+
variant: display.buttonVariant,
|
|
45566
|
+
size: "md",
|
|
45567
|
+
label: display.buttonLabel
|
|
45386
45568
|
})
|
|
45387
45569
|
})
|
|
45388
45570
|
]
|
|
@@ -45470,28 +45652,24 @@ function ShopSSR({ blockId, siteId, apiBaseUrl, stage, children, checkoutEndpoin
|
|
|
45470
45652
|
display: render.display,
|
|
45471
45653
|
passCards: render.display.passes.map((pass) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PassCardView, {
|
|
45472
45654
|
display: pass,
|
|
45473
|
-
action: pass.action.kind === "unavailable" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PassPurchaseUnavailable, { label: pass.action.label }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
45655
|
+
action: pass.action.kind === "unavailable" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PassPurchaseUnavailable, { label: pass.action.label }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButton, {
|
|
45474
45656
|
type: "button",
|
|
45475
|
-
|
|
45476
|
-
|
|
45477
|
-
|
|
45478
|
-
}),
|
|
45657
|
+
variant: render.hydration.buttonVariant,
|
|
45658
|
+
size: "md",
|
|
45659
|
+
label: pass.action.label,
|
|
45479
45660
|
disabled: true,
|
|
45480
|
-
"aria-disabled": "true"
|
|
45481
|
-
children: pass.action.label
|
|
45661
|
+
"aria-disabled": "true"
|
|
45482
45662
|
})
|
|
45483
45663
|
}, pass.id)),
|
|
45484
45664
|
membershipCards: render.display.memberships.map((membership) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MembershipCardView, {
|
|
45485
45665
|
display: membership,
|
|
45486
|
-
action: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
45666
|
+
action: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButton, {
|
|
45487
45667
|
type: "button",
|
|
45488
|
-
|
|
45489
|
-
|
|
45490
|
-
|
|
45491
|
-
}),
|
|
45668
|
+
variant: render.hydration.buttonVariant,
|
|
45669
|
+
size: "md",
|
|
45670
|
+
label: membership.actionLabel,
|
|
45492
45671
|
disabled: true,
|
|
45493
|
-
"aria-disabled": "true"
|
|
45494
|
-
children: membership.actionLabel
|
|
45672
|
+
"aria-disabled": "true"
|
|
45495
45673
|
})
|
|
45496
45674
|
}, membership.id))
|
|
45497
45675
|
}),
|
|
@@ -45559,6 +45737,7 @@ const serverComponentRegistry = {
|
|
|
45559
45737
|
svg: SvgNode,
|
|
45560
45738
|
section: SectionNode,
|
|
45561
45739
|
headerSection: header_section_server_default,
|
|
45740
|
+
headerControl: HeaderControlNode,
|
|
45562
45741
|
stack: StackNode,
|
|
45563
45742
|
inline: InlineNode,
|
|
45564
45743
|
grid: GridNode,
|
|
@@ -46501,16 +46680,73 @@ function resolveChildren(nodes, context) {
|
|
|
46501
46680
|
function isReactNode(value) {
|
|
46502
46681
|
return value !== null && value !== undefined;
|
|
46503
46682
|
}
|
|
46683
|
+
const RENDERER_METADATA_PROP_KEYS = new Set([
|
|
46684
|
+
"pathBase",
|
|
46685
|
+
"blockId",
|
|
46686
|
+
"blockKind",
|
|
46687
|
+
"blockContent",
|
|
46688
|
+
"fragmentRegistry",
|
|
46689
|
+
"previewAuthoring",
|
|
46690
|
+
"contentVersionId",
|
|
46691
|
+
"imageResolveContext"
|
|
46692
|
+
]);
|
|
46693
|
+
function omitRendererMetadataProps(props$1) {
|
|
46694
|
+
const presentationProps = {};
|
|
46695
|
+
for (const [key, value] of Object.entries(props$1)) {
|
|
46696
|
+
if (!RENDERER_METADATA_PROP_KEYS.has(key)) presentationProps[key] = value;
|
|
46697
|
+
}
|
|
46698
|
+
return presentationProps;
|
|
46699
|
+
}
|
|
46700
|
+
const BLOCK_ID_METADATA_CONSUMERS = new Set([
|
|
46701
|
+
"accordion",
|
|
46702
|
+
"appointment-services",
|
|
46703
|
+
"booking-form",
|
|
46704
|
+
"carousel",
|
|
46705
|
+
"cart",
|
|
46706
|
+
"checkout",
|
|
46707
|
+
"event-calendar",
|
|
46708
|
+
"event-combined",
|
|
46709
|
+
"event-details",
|
|
46710
|
+
"event-listing",
|
|
46711
|
+
"event-registration",
|
|
46712
|
+
"form",
|
|
46713
|
+
"gifting",
|
|
46714
|
+
"headersection",
|
|
46715
|
+
"location-map",
|
|
46716
|
+
"newsletter-form",
|
|
46717
|
+
"product-detail",
|
|
46718
|
+
"product-list",
|
|
46719
|
+
"shop",
|
|
46720
|
+
"weekly-slot-availability"
|
|
46721
|
+
]);
|
|
46722
|
+
const BLOCK_CONTENT_METADATA_CONSUMERS = new Set([
|
|
46723
|
+
"feature-card-icon",
|
|
46724
|
+
"headersection",
|
|
46725
|
+
"media",
|
|
46726
|
+
"text"
|
|
46727
|
+
]);
|
|
46728
|
+
const BLOCK_KIND_METADATA_CONSUMERS = new Set([
|
|
46729
|
+
"headersection",
|
|
46730
|
+
"media",
|
|
46731
|
+
"richtext"
|
|
46732
|
+
]);
|
|
46733
|
+
/**
|
|
46734
|
+
* Projects resolver context only to node kinds with an explicit metadata
|
|
46735
|
+
* contract. Presentation props and renderer metadata never share a universal
|
|
46736
|
+
* spread boundary, so adding metadata cannot leak it into DOM-backed nodes.
|
|
46737
|
+
*/
|
|
46504
46738
|
function resolveNodeMetadata(nodeType, context) {
|
|
46505
|
-
|
|
46506
|
-
|
|
46507
|
-
blockId: context.blockId,
|
|
46508
|
-
blockKind: context.blockKind,
|
|
46509
|
-
blockContent: context.blockContent,
|
|
46510
|
-
|
|
46511
|
-
|
|
46512
|
-
|
|
46513
|
-
|
|
46739
|
+
const normalizedType = nodeType.toLowerCase();
|
|
46740
|
+
return {
|
|
46741
|
+
...BLOCK_ID_METADATA_CONSUMERS.has(normalizedType) ? { blockId: context.blockId } : {},
|
|
46742
|
+
...BLOCK_KIND_METADATA_CONSUMERS.has(normalizedType) ? { blockKind: context.blockKind } : {},
|
|
46743
|
+
...BLOCK_CONTENT_METADATA_CONSUMERS.has(normalizedType) ? { blockContent: context.blockContent } : {},
|
|
46744
|
+
...normalizedType === "headersection" ? {
|
|
46745
|
+
pathBase: context.pathBase,
|
|
46746
|
+
fragmentRegistry: context.fragmentRegistry
|
|
46747
|
+
} : {},
|
|
46748
|
+
...normalizedType === "newsletter-form" ? { contentVersionId: context.contentVersionId } : {},
|
|
46749
|
+
...normalizedType === "media" && context.imageResolveContext ? { imageResolveContext: context.imageResolveContext } : {}
|
|
46514
46750
|
};
|
|
46515
46751
|
}
|
|
46516
46752
|
/**
|
|
@@ -46553,7 +46789,7 @@ function resolveNode(node, context, indexFallback) {
|
|
|
46553
46789
|
props$1 = omitHeadingDecorationProps(props$1);
|
|
46554
46790
|
const children = resolveChildren(node.children, scopeContext);
|
|
46555
46791
|
const elementProps = {
|
|
46556
|
-
...props$1,
|
|
46792
|
+
...omitRendererMetadataProps(props$1),
|
|
46557
46793
|
key: node.key ?? indexFallback,
|
|
46558
46794
|
...resolveNodeMetadata(node.type, context)
|
|
46559
46795
|
};
|
|
@@ -47276,7 +47512,7 @@ function generateInputCss({ themeId, theme, inputSystem }) {
|
|
|
47276
47512
|
baseInputRules.push("transition: border-color 0.2s ease, box-shadow 0.2s ease");
|
|
47277
47513
|
const labelSelector = `${rootSelector} .form-label`;
|
|
47278
47514
|
const labelRules = [];
|
|
47279
|
-
labelRules.push(`color: ${
|
|
47515
|
+
labelRules.push(`color: ${textColorValue(inputSystem.label.textColorToken)}`);
|
|
47280
47516
|
labelRules.push(`font-weight: ${FONT_WEIGHT_MAP[inputSystem.label.fontWeight]}`);
|
|
47281
47517
|
labelRules.push(`font-size: ${LABEL_FONT_SIZE_MAP[inputSystem.label.fontSize]}`);
|
|
47282
47518
|
if (inputSystem.label.textTransform && inputSystem.label.textTransform !== "none") {
|
|
@@ -50394,15 +50630,6 @@ function indent(str, spaces) {
|
|
|
50394
50630
|
//#endregion
|
|
50395
50631
|
//#region ../theme-core/src/customCss/patch.ts
|
|
50396
50632
|
/**
|
|
50397
|
-
* Generate a unique ID for a new CSS rule.
|
|
50398
|
-
* Uses timestamp + random suffix for uniqueness.
|
|
50399
|
-
*/
|
|
50400
|
-
function generateCssRuleId() {
|
|
50401
|
-
const timestamp = Date.now().toString(36);
|
|
50402
|
-
const random = Math.random().toString(36).slice(2, 6);
|
|
50403
|
-
return `css-${timestamp}-${random}`;
|
|
50404
|
-
}
|
|
50405
|
-
/**
|
|
50406
50633
|
* Apply a single patch operation to a rules array.
|
|
50407
50634
|
*
|
|
50408
50635
|
* @param rules - Current rules array
|
|
@@ -51173,7 +51400,7 @@ function pageBlockPosition(index, blockCount) {
|
|
|
51173
51400
|
//#endregion
|
|
51174
51401
|
//#region ../blocks/src/pageRendererContracts.ts
|
|
51175
51402
|
function buildPageRendererRootRuntime(dataContext) {
|
|
51176
|
-
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 ?? {};
|
|
51403
|
+
const { siteId = null, pageId = null, pathname = null, bookingTimeZone, previewStage = "published", apiBaseUrl = null, portalToken = null, readAuthority, bookingOfferingPresets = [], appointmentServicePathPrefix = null, mailingList = { tag: "not_configured" }, eventRegistrationOverlayEnabled = false, loaderFailures = {} } = dataContext ?? {};
|
|
51177
51404
|
return {
|
|
51178
51405
|
siteId,
|
|
51179
51406
|
pageId,
|
|
@@ -51182,6 +51409,7 @@ function buildPageRendererRootRuntime(dataContext) {
|
|
|
51182
51409
|
previewStage,
|
|
51183
51410
|
apiBaseUrl,
|
|
51184
51411
|
portalToken,
|
|
51412
|
+
readAuthority,
|
|
51185
51413
|
bookingOfferingPresets,
|
|
51186
51414
|
appointmentServicePathPrefix,
|
|
51187
51415
|
mailingList,
|
|
@@ -54322,6 +54550,7 @@ const transformDefinitions = {
|
|
|
54322
54550
|
"layout.headerRuntimeContract": headerRuntimeContractTransform,
|
|
54323
54551
|
"layout.headerLogoClass": headerLogoClassTransform,
|
|
54324
54552
|
"layout.headerLogoMediaClass": headerLogoMediaClassTransform,
|
|
54553
|
+
"layout.chromeLogo": chromeLogoTransform,
|
|
54325
54554
|
"layout.headerLogoTextVisible": headerLogoTextVisibleTransform,
|
|
54326
54555
|
"layout.footerRootClass": footerRootClassTransform,
|
|
54327
54556
|
"layout.headerRootStyle": headerRootStyleTransform,
|
|
@@ -54401,46 +54630,42 @@ const whenTransformed = (from, transformId, equals = true) => (node) => ({
|
|
|
54401
54630
|
equals
|
|
54402
54631
|
}
|
|
54403
54632
|
});
|
|
54404
|
-
|
|
54633
|
+
/** Draw whichever site logo suits the surface this row sits on. */
|
|
54634
|
+
const bindChromeLogo = (surface) => bind("content", { transforms: [{
|
|
54635
|
+
id: "layout.chromeLogo",
|
|
54636
|
+
options: { surface }
|
|
54637
|
+
}] });
|
|
54638
|
+
/**
|
|
54639
|
+
* The brand link. The logo is chosen per surface because the open mobile menu
|
|
54640
|
+
* paints its own background, which may be the opposite tone to the header.
|
|
54641
|
+
*/
|
|
54642
|
+
const createLogoRow = (surface) => link$1({
|
|
54405
54643
|
href: "/",
|
|
54406
54644
|
className: bindProp("$root.theme.header.logo", {
|
|
54407
54645
|
transforms: pipe(tx("layout.headerLogoClass")),
|
|
54408
54646
|
fallback: "header-logo rb-flex rb-min-w-0 rb-items-center rb-gap-3 rb-no-underline rb-transition-opacity rb-hover-opacity-80"
|
|
54409
54647
|
})
|
|
54410
|
-
}, [
|
|
54411
|
-
|
|
54412
|
-
|
|
54413
|
-
|
|
54414
|
-
|
|
54415
|
-
|
|
54416
|
-
|
|
54417
|
-
|
|
54418
|
-
}) }, when("site.logo"), bind("site.logo"))], when("content.logo", { not: true })),
|
|
54419
|
-
text({
|
|
54420
|
-
as: "strong",
|
|
54421
|
-
className: "header-logo-text rb-truncate"
|
|
54422
|
-
}, whenTransformed("$root.theme.header.logo", "layout.headerLogoTextVisible"), bind("site.title", { fallback: "Your Site" }))
|
|
54423
|
-
]);
|
|
54648
|
+
}, [media({ className: bindProp("$root.theme.header.logo", {
|
|
54649
|
+
transforms: pipe(tx("layout.headerLogoMediaClass", { base: "rb-header-logo-sm rb-w-auto rb-transition-all rb-duration-300" })),
|
|
54650
|
+
fallback: "rb-header-logo-sm rb-w-auto rb-transition-all rb-duration-300"
|
|
54651
|
+
}) }, when("content.logo"), bindChromeLogo(surface)), text({
|
|
54652
|
+
as: "strong",
|
|
54653
|
+
className: "header-logo-text rb-truncate"
|
|
54654
|
+
}, whenTransformed("$root.theme.header.logo", "layout.headerLogoTextVisible"), bind("site.title", { fallback: "Your Site" }))]);
|
|
54655
|
+
const logoRow = createLogoRow("header-root");
|
|
54424
54656
|
const centeredLogoRow = link$1({
|
|
54425
54657
|
href: "/",
|
|
54426
54658
|
className: bindProp("$root.theme.header.logo", {
|
|
54427
54659
|
transforms: pipe(tx("layout.headerLogoClass", { base: "header-logo rb-flex rb-items-center rb-justify-center rb-gap-3 rb-text-center rb-no-underline rb-transition-opacity rb-hover-opacity-80" })),
|
|
54428
54660
|
fallback: "header-logo rb-flex rb-items-center rb-justify-center rb-gap-3 rb-text-center rb-no-underline rb-transition-opacity rb-hover-opacity-80"
|
|
54429
54661
|
})
|
|
54430
|
-
}, [
|
|
54431
|
-
|
|
54432
|
-
|
|
54433
|
-
|
|
54434
|
-
|
|
54435
|
-
|
|
54436
|
-
|
|
54437
|
-
fallback: "rb-header-logo-lg rb-w-auto rb-transition-all rb-duration-300"
|
|
54438
|
-
}) }, when("site.logo"), bind("site.logo"))], when("content.logo", { not: true })),
|
|
54439
|
-
text({
|
|
54440
|
-
as: "strong",
|
|
54441
|
-
className: "header-logo-text"
|
|
54442
|
-
}, whenTransformed("$root.theme.header.logo", "layout.headerLogoTextVisible"), bind("site.title", { fallback: "Your Site" }))
|
|
54443
|
-
]);
|
|
54662
|
+
}, [media({ className: bindProp("$root.theme.header.logo", {
|
|
54663
|
+
transforms: pipe(tx("layout.headerLogoMediaClass", { base: "rb-header-logo-lg rb-w-auto rb-transition-all rb-duration-300" })),
|
|
54664
|
+
fallback: "rb-header-logo-lg rb-w-auto rb-transition-all rb-duration-300"
|
|
54665
|
+
}) }, when("content.logo"), bindChromeLogo("header-root")), text({
|
|
54666
|
+
as: "strong",
|
|
54667
|
+
className: "header-logo-text"
|
|
54668
|
+
}, whenTransformed("$root.theme.header.logo", "layout.headerLogoTextVisible"), bind("site.title", { fallback: "Your Site" }))]);
|
|
54444
54669
|
const createNavRow = (className, align = "end") => navRow({
|
|
54445
54670
|
className: `${className} header-nav-row`,
|
|
54446
54671
|
align,
|
|
@@ -54480,10 +54705,8 @@ const mobileToggleIcon = stack({
|
|
|
54480
54705
|
}
|
|
54481
54706
|
]);
|
|
54482
54707
|
const mobileToggleButton = {
|
|
54483
|
-
type: "
|
|
54708
|
+
type: "headerControl",
|
|
54484
54709
|
props: {
|
|
54485
|
-
type: "button",
|
|
54486
|
-
variantId: "",
|
|
54487
54710
|
className: `nav-mobile-toggle ${mobileOnlyDisplay("inline-flex")} rb-h-10 rb-w-10 rb-items-center rb-justify-center rb-rounded-md transition-theme-standard`,
|
|
54488
54711
|
"aria-label": "Open menu",
|
|
54489
54712
|
"aria-expanded": "false",
|
|
@@ -54493,10 +54716,8 @@ const mobileToggleButton = {
|
|
|
54493
54716
|
children: [mobileToggleIcon]
|
|
54494
54717
|
};
|
|
54495
54718
|
const mobileOverlayToggleButton = {
|
|
54496
|
-
type: "
|
|
54719
|
+
type: "headerControl",
|
|
54497
54720
|
props: {
|
|
54498
|
-
type: "button",
|
|
54499
|
-
variantId: "",
|
|
54500
54721
|
className: "nav-mobile-toggle rb-inline-flex rb-h-10 rb-w-10 rb-items-center rb-justify-center rb-rounded-md transition-theme-standard",
|
|
54501
54722
|
"aria-label": "Open menu",
|
|
54502
54723
|
"aria-expanded": "false",
|
|
@@ -54520,7 +54741,7 @@ const mobileOverlayHeader = inline({
|
|
|
54520
54741
|
align: "center",
|
|
54521
54742
|
justify: "between",
|
|
54522
54743
|
style: borderColorStyle("border")
|
|
54523
|
-
}, [
|
|
54744
|
+
}, [createLogoRow("header-mobile-panel"), mobileOverlayToggleButton]);
|
|
54524
54745
|
const mobileOverlayBody = stack({
|
|
54525
54746
|
className: "rb-flex-1 rb-px-6 rb-py-6",
|
|
54526
54747
|
gap: "md",
|
|
@@ -54712,7 +54933,10 @@ const brandLogo = link$1({
|
|
|
54712
54933
|
options: { base: "rb-h-10 rb-w-auto" }
|
|
54713
54934
|
}],
|
|
54714
54935
|
fallback: "rb-h-10 rb-w-auto"
|
|
54715
|
-
} } }, when("module.showLogo", { equals: true }), when("content.logo"), bind("content
|
|
54936
|
+
} } }, when("module.showLogo", { equals: true }), when("content.logo"), bind("content", { transforms: [{
|
|
54937
|
+
id: "layout.chromeLogo",
|
|
54938
|
+
options: { surface: "footer-root" }
|
|
54939
|
+
}] })), text({
|
|
54716
54940
|
as: "strong",
|
|
54717
54941
|
className: "footer-logo-text rb-nav-text"
|
|
54718
54942
|
}, when("module.showTitle", { equals: true }), bind("site.title", { fallback: "Your Site" }))], when("module.kind", { equals: "brand" }));
|
|
@@ -62641,6 +62865,7 @@ function blockSessionProps(dataContext) {
|
|
|
62641
62865
|
supabaseUrl: dataContext?.supabaseUrl,
|
|
62642
62866
|
portalToken: dataContext?.portalToken ?? null,
|
|
62643
62867
|
previewToken: dataContext?.previewToken ?? null,
|
|
62868
|
+
readAuthority: dataContext?.readAuthority,
|
|
62644
62869
|
stage: dataContext?.previewStage
|
|
62645
62870
|
};
|
|
62646
62871
|
}
|
|
@@ -65770,6 +65995,12 @@ function generateRecommendedThemes(input, opts) {
|
|
|
65770
65995
|
|
|
65771
65996
|
//#endregion
|
|
65772
65997
|
//#region ../theme-core/src/inputs/core.ts
|
|
65998
|
+
/**
|
|
65999
|
+
* Core Input CSS Generator
|
|
66000
|
+
*
|
|
66001
|
+
* Pure functions for generating form input CSS without requiring the full Theme type.
|
|
66002
|
+
* Used by both the full CMS theme system and the SDK theme bridge.
|
|
66003
|
+
*/
|
|
65773
66004
|
const CORNER_RADIUS_MAP$1 = {
|
|
65774
66005
|
square: "0",
|
|
65775
66006
|
soft: "0.25rem",
|
|
@@ -65804,7 +66035,7 @@ function generateInputCoreCss(scopeId, settings) {
|
|
|
65804
66035
|
const borderRadius = CORNER_RADIUS_MAP$1[settings.corners];
|
|
65805
66036
|
const cssBlocks = [];
|
|
65806
66037
|
cssBlocks.push(`${root} .form-label {
|
|
65807
|
-
color:
|
|
66038
|
+
color: ${textColorValue(settings.labelToken)};
|
|
65808
66039
|
font-weight: 600;
|
|
65809
66040
|
font-size: 0.875rem;
|
|
65810
66041
|
display: block;
|
|
@@ -68063,6 +68294,12 @@ const containerResponsiveThemeCss = `/*
|
|
|
68063
68294
|
:where(.theme-scope) .rb-prose p {
|
|
68064
68295
|
margin: var(--rt-space-y) 0;
|
|
68065
68296
|
}
|
|
68297
|
+
:where(.theme-scope) .rb-prose li > p:first-child {
|
|
68298
|
+
margin-top: 0;
|
|
68299
|
+
}
|
|
68300
|
+
:where(.theme-scope) .rb-prose li > p:last-child {
|
|
68301
|
+
margin-bottom: 0;
|
|
68302
|
+
}
|
|
68066
68303
|
:where(.theme-scope) .rb-prose img {
|
|
68067
68304
|
display: block;
|
|
68068
68305
|
max-width: 100%;
|
|
@@ -95790,6 +96027,7 @@ function emptyPulledContent(overrides) {
|
|
|
95790
96027
|
homepageId: null,
|
|
95791
96028
|
seoDefaults: null,
|
|
95792
96029
|
logoIdentifier: null,
|
|
96030
|
+
logoDarkBackgroundIdentifier: null,
|
|
95793
96031
|
faviconIdentifier: null
|
|
95794
96032
|
},
|
|
95795
96033
|
forms: [],
|
|
@@ -101567,7 +101805,7 @@ async function loadConfig(configPath, output) {
|
|
|
101567
101805
|
return { errorMessage: "No config path provided." };
|
|
101568
101806
|
}
|
|
101569
101807
|
try {
|
|
101570
|
-
const { loadConfigFile: loadConfigFile$1 } = await import("../load-config-
|
|
101808
|
+
const { loadConfigFile: loadConfigFile$1 } = await import("../load-config-CKBdp8M0.mjs");
|
|
101571
101809
|
const rawConfig = await loadConfigFile$1(configPath);
|
|
101572
101810
|
const parsed = riverbankSiteConfigSchema.safeParse(rawConfig);
|
|
101573
101811
|
if (!parsed.success) {
|
|
@@ -116027,6 +116265,13 @@ function applyBookingSettingsSectionUpdate(settings, update) {
|
|
|
116027
116265
|
function applyBookingSettingsSectionUpdates(settings, updates) {
|
|
116028
116266
|
return updates.reduce(applyBookingSettingsSectionUpdate, settings);
|
|
116029
116267
|
}
|
|
116268
|
+
/** Normalize optional wire defaults once before projecting operational Event policy. */
|
|
116269
|
+
function resolveBookingSettingsEventCatalogue(settings) {
|
|
116270
|
+
return resolveEventCatalogue({
|
|
116271
|
+
verticalConfig: settings.verticalConfig,
|
|
116272
|
+
eventTypePresets: settings.eventTypePresets ?? DEFAULT_EVENT_TYPE_PRESETS
|
|
116273
|
+
});
|
|
116274
|
+
}
|
|
116030
116275
|
|
|
116031
116276
|
//#endregion
|
|
116032
116277
|
//#region ../api/src/bookingPaymentTermSchemas.ts
|
|
@@ -116652,16 +116897,12 @@ async function deleteRedirectRule(apiClient, { siteId, ruleId, options }) {
|
|
|
116652
116897
|
|
|
116653
116898
|
//#endregion
|
|
116654
116899
|
//#region ../api/src/billing.ts
|
|
116655
|
-
async function changePlan(apiClient,
|
|
116900
|
+
async function changePlan(apiClient, request) {
|
|
116901
|
+
const { options, ...body } = request;
|
|
116656
116902
|
try {
|
|
116657
116903
|
return unwrapResponse(await apiClient({
|
|
116658
116904
|
endpoint: "changePlan",
|
|
116659
|
-
body
|
|
116660
|
-
attemptId,
|
|
116661
|
-
planId,
|
|
116662
|
-
interval,
|
|
116663
|
-
prorationBehavior
|
|
116664
|
-
},
|
|
116905
|
+
body,
|
|
116665
116906
|
options
|
|
116666
116907
|
}));
|
|
116667
116908
|
} catch (error$1) {
|