riverbankcms 0.18.0 → 0.19.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 +1764 -1254
- package/dist/{eventUpsertInputSchema-BNSzkEID.mjs → eventUpsertInputSchema-Bkafrrjw.mjs} +2 -2
- package/dist/{load-config-BXspoah3.mjs → load-config-CErro6mj.mjs} +2 -2
- package/dist/load-config-rPaisrdG.mjs +4 -0
- package/dist/{local-sync-B3naCvSc.mjs → local-sync-CWLEhMZ-.mjs} +4 -3
- package/dist/{plan-DxAHLs05.mjs → plan-DW5O751d.mjs} +1 -1
- package/dist/scaffold/index.mjs +2 -2
- package/dist/{sdk-event-upsert-BamyD2d6.mjs → sdk-event-upsert-BdvfnCyV.mjs} +11946 -11127
- package/dist/{src-BhrSG8A4.mjs → src-yL0DBH7S.mjs} +733 -135
- package/dist/testing.mjs +3 -3
- package/package.json +1 -1
- package/dist/load-config-s-HOXD6E.mjs +0 -4
package/dist/cli/index.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { $ as
|
|
3
|
-
import {
|
|
4
|
-
import { A as sdkUpsertEventResponseSchema, B as isInternalResolvedLinkValue, C as createHttpClient, D as sdkGetEventResponseSchema, E as sdkConfigureBookingVerticalResponseSchema, F as entryLinkSchema$1, G as sdkGetPageDesignResponseSchema, H as linkSchema, I as externalLinkSchema$1, J as sdkEventOccurrenceResponseSchema, K as sdkSavePageDesignResponseSchema, L as internalLinkSchema, M as linkPayloadSchema, N as RESOLVED_INTERNAL_LINK_ENTITY_TYPES, O as sdkListEventsResponseSchema, P as customLinkSchema$1, R as internalResolvedLinkSchema, S as buildRequestInfo, T as managementTransportError, U as pageLinkSchema$1, V as isResolvedInternalLinkEntityType, W as portablePageDesignSchema, X as sdkReorderResponseSchema, Y as sdkListEventOccurrencesResponseSchema, Z as sdkConfiguredBookingVerticalConfigSchema, _ as buildSettingsUpdateInput, a as prepareLocalMediaForPush, b as isMediaValue, c as writeBinaryFileAtomic, d as normalizeMediaValueToIdentifierOnly, f as walkLocalContentMedia, g as SETTINGS_FILE_FIELDS, h as extractMediaIdentifiers, i as applyLocalMediaPush, j as sdkSettingsUpdateSchema, k as sdkTakeEventOfflineResponseSchema, l as sha256, m as downloadMedia, o as admitBinaryWriteDestination, p as buildStorageUrl, q as sdkDeleteEventOccurrenceResponseSchema, r as syncLocalMediaForPull, s as readStableBinaryFile, t as revalidateLocalMediaPushPlan, u as normalizeMediaIdentifierInput, v as hasOwnSettingsField, w as is404Error, x as ManagementApiError, y as writeMediaManifest, z as internalRouteOnlyLinkSchema } 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$16, 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 arrangementManifestFromVariants, $n as parseCanonicalMediaIdentifier, $r as backgroundColorStyle, $t as getFontWidthRange, A as pickShadeTowardBackground, Ai as getTextColorForBackground, An as walkAndCollectImageAttrs, At as INPUT_FONT_SIZE_MAP, B as createNavigationRef, Bi as __toESM, Bn as getImageUrl, Br as eyebrowTreatmentValues, Bt as generateButtonCss, C as pagePathForCommand, Ci as surfaceForegroundDeclarations, Cn as boxBackgroundSchema, Cr as backgroundAppearanceColorTokenNames, Ct as MQ_TABLET_ONLY, D as bookingPaymentTermsSchema, Di as expandPalette, Dn as stripStaleTransitionStyleGroup, Dr as resolveEffectiveKnobs, Dt as parseBlockCustomCssRules, E as bookingPaymentCollectionOptionSchema, Ei as surfaceForegroundValue, En as siteChromeBackgroundOverrideOwner, Er as defineBlockDesignMetadata, Et as getComponentShadowVar, F as createContentEntryRef, Fi as parseColorTokenParts, Fn as isExplicitRectCrop, Fr as assertNever$4, Ft as ACCORDION_TRIGGER_FONT_SCALE, G as slugPart, Gn as persistableMediaSchema, Gr as offeringsPreviewCompositionTreatmentValues, Gt as parseThemeButtonVariantId, H as createSiteCommandSiteRef, Hn as imageMediaSchema, Hr as headingDecorationColorTokenValues, Ht as resolvedButtonColourDeclarations, I as createEventCategoryRef, Ii as featuresFromHex, In as parseAspectRatioValue, Ir as defineBlockDesignCapability, It as ACCORDION_TRIGGER_LETTER_SPACING, J as headerLeafTextColor, Jn as indexRenderableMediaAssets, Jr as visibleHeadingDecorationFamilyValues, Jt as themeButtonVariantClassNames, K as effectiveHeaderNavLinkStyle, Kn as runtimeMediaSchema, Kr as testimonialsCompositionTreatmentValues, Kt as themeButtonExtraClassesWithTrailingIcon, L as createEventSeriesRef, Li as hexToRgb, Ln as resolveMediaTransformForAspect, Lr as defineFrameCapability, Lt as ICON_CONFIG, M as createBlockRef, Mi as contrastRatio, Mn as looksLikeUuid$1, Mr as asLayoutVariantKey, Mt as LABEL_FONT_SIZE_MAP, N as createBlocksRef, Ni as parseThemeColorToken, Nn as rotateNormalizedPoint, Nt as ACCORDION_OPEN_ACCENT_THICKNESS, O as require_jsx_runtime, Oi as isOnColorBackgroundCandidateToken, On as collectPortableMediaReferencesFromContent, Or as cardListFamilyBlocks, Ot as parseCustomCssRules, P as createCommandRef, Pi as parseBlockColorToken, Pn as normalizeWidthCandidates, Pr as asSiteStyleId, Pt as ACCORDION_SPACING_MAP, Q as readHeaderNavFontSizePreference, Qn as buildMediaIdentifierFromFilename, Qr as TokenResolver, Qt as generateFontFaceCss, R as createFooterRef, Ri as oklchToHexGamut, Rn as getDirectImageUrlForRelativePath, Rr as defineNoBlockDesignCapability, Rt as ICON_SIZE_PX, S as pageIdentifierForCommand, Si as DEFAULT_SURFACE_TEXT_COLOR, Sn as boxBackgroundOverlaySchema, Sr as normalizeCardRole, St as MQ_SM_UP, Ti as surfaceForegroundStyle, Tn as pageDesignEditorBackgroundOverrideOwner, Tr as parseBackgroundAppearanceColorToken, Tt as getComponentBorderWidthPx, U as createVenueRef, Un as mediaPosterSchema, Ur as introCompositionTreatmentValues, Ut as resolvedButtonFocusDeclarations, V as createPageRef, Vn as isSiteScopedDirectImageStoragePath, Vr as featureCardCompositionTreatmentValues, Vt as RESOLVED_BUTTON_DISABLED_DECLARATIONS, W as refSlug, Wn as mediaSchema, Wr as makeBoundaryId, Wt as generateDefaultButtonSystem, X as readOpeningForegroundProjection, Xn as mediaTypeDiscriminants, Xr as surfaceDecorationColors, Xt as skinTokenCssVars, Y as transparentHeaderForegroundInput, Yn as resolveManagedMediaReference, Yr as resolveSurface, Yt as parseThemeForPersistence, Z as mergeHeaderNavTypographyPreference, Zn as mediaIdentifierSchema, Zr as resolveSurfaceForeground, Zt as buildGoogleFontFamilyQuery, _ as getSiteCommandMetadata, _i as unsafeAsOpaqueButtonColourToken, _n as anglePolygonCss, _r as generateCardCss, _t as BREAKPOINT_SM, ai as textColorValue, an as arrangementLookHooks, at as gradientToCss, b as entryIdentifierForCommand, bi as buildThemeTokens, bn as parseCanonicalRuntimeBackground, br as cardRoleSchema, bt as MQ_MD_DOWN, c as isEventVisibility, ci as compileButtonColourStates, cn as resolveLookSlotSurfaces, ct as parseGradientPresetId, d as stableStringify, di as resolveOnColorForThemeToken, dt as generateHeaderScrollTreatmentStyles, ei as borderColorStyle, er as parseMediaIdentifier, et as readStoredMode, f as createDryRunReport, fi as resolveThemeColorReferenceValue, fn as headerRootPaint, fr as classifyKnownMimeType, ft as generateMobileOverlayBackdropFilterFix, g as evaluateSiteCommandExposure, gi as buttonVariantIdSchema, gn as boundaryRuntimeMetricsForDecorativeTransition, gr as getDefaultCardVariants, gt as BREAKPOINT_MD, h as evaluateSiteCommandBatchExposure, hi as PUBLIC_BUTTON_ROLES, hn as sectionFactsForContent, hr as generateCardCoreCss, ht as BREAKPOINT_LG, ii as textColorStyle, in as generateNavLinkCSS, ir as resolveVideoSelectionIntentForMediaField, it as requireCuratedSiteStyle, j as generateCssVars, ji as ORDINARY_TEXT_MIN_CONTRAST_RATIO, jn as deleteEnvSpecificKeys, jr as asDesignBlockId, jt as INPUT_SPACING_MAP, k as require_react, ki as onColorTokenName, kn as summarizePortableMediaReferences, kr as cardListKnobBlocks, kt as FONT_WEIGHT_MAP, l as venueManagementFields, li as formatButtonColourContractError, lr as parseRelativeStoragePath, lt as deriveSiteStyleBlockPolicy, m as mapEventCommandContent, mi as generateShadowValue, mn as composeBoundary, mr as parseSafeDownloadFilename, mt as renderHeaderPaintTargetRules, ni as mergeStyles, nn as footerForegroundCandidates, nt as resolveModeArrangement, o as classifySdkEventBookingOffer, oi as opaqueSurfaceContextFromTheme, on as arrangementSlotNames, or as getMimeType, ot as GRADIENT_PRESET_IDS, p as parseAndPlanCommandBatchForTypes, pi as resolveTokenOrCssColorValue, pn as boundaryLayout, pr as managementMediaLibraryUploadLimitForMimeType, pt as getHeaderPaintTargets, q as headerForegroundCandidates, qn as buildRenderableMediaAssetIndex, qr as tileTreatmentValues, qt as themeButtonSizeClassName, ri as rgbColorValue, rn as buildTextContrastShadow, rr as deriveVideoSlotPolicy, rt as resolvePublishedLook, si as opaqueSurfaceDeclarations, sn as resolveItemSurface, sr as asRecord$1, st as getGradientPreset, t as classifySdkEventTiming, ti as cssVarValue, tn as generateFooterCss, tt as resolveEffectiveArrangement, u as sortRecord, ui as isCssColorLiteral, ur as FILE_SIZE_LIMITS, ut as themeSchema, v as blockIdentifierForCommand, vi as selectLogoVariant, vn as transitionCatalogueEntries, vr as renderCssDeclarations, vt as BREAKPOINT_XL, w as hasConfiguredBookingVertical, wi as surfaceForegroundInputFromResolved, wn as runtimeBoxBackgroundSchema, wr as backgroundAppearanceQuickColorTokenNames, wt as headerVariantValues, x as pageIdentifierForBlockCommand, xi as defaultThemeTokens, xn as resolveSectionBackground, xr as cardVariantRoleValues, xt as MQ_SM_DOWN, y as blockOrderIdentifiersForCommand, yi as surfaceToneFromForegroundToken, yn as deriveSectionGround, yr as generateShadowValue$1, yt as MQ_LG_UP, z as createFormRef, zi as __commonJSMin, zn as getDirectImageUrlForSiteScopedPath, zr as eventListTreatmentValues, zt as generateButtonActionLayoutCss } from "../sdk-event-upsert-BdvfnCyV.mjs";
|
|
3
|
+
import { A as parseFooterCompositionV1, At as parseNonNegativeCents, B as normalizeLocationAddressText, Bt as parseApiKeyId, C as parseMailingListBlockId, Ct as publicEventPricingOptions, D as assessMailingListTargeting, Dn as ok, Dt as fromArray, E as parseMailingListRuntimeContext, En as err, Et as resolvePricingOptionsPriceDisplay, F as sameMailingListPlacementTargeting, Ft as unsafeAsPositiveCents, G as formatBookingDate, H as selectCategoryView, Ht as parseDatedOfferingCapacityHoldAuditRef, It as formatCurrencyAmount, J as formatLocalScheduleDate, Jt as parseRetiredCourseId, K as formatBookingDateParts, Kt as parseMembershipId, Lt as parseCurrencyCode, M as parseMailingListPlacementTargeting, Mt as toCents, N as DEFAULT_MAILING_LIST_TARGETING, Nt as toNonNegativeCents, O as DEFAULT_MAILING_LIST_SUCCESS_MESSAGE, P as planMailingListChoicePresentation, Pt as unsafeAsNonNegativeCents, Q as getLocalScheduleTime, R as assertAllowedPublicUrl, Rt as assertNever, S as buildMailingListSignupBlockSourceRef, St as publicEventPricingDisplay, T as parseMailingListSignedSourceToken, Tt as resolveExactOrFreePriceDisplay, U as inferSiteDateLocale, Ut as parseDatedOfferingCapacityHoldId, V as toLocationCoordinates, Vt as parseCustomerId, W as buildBookingUtcDateWindow, Wt as parseEventSeriesId, X as getBookingLocalDateKey, Xt as parseUserId, Y as formatLocalScheduleTime, Yt as parseSiteId, Z as getLocalScheduleDate, Zt as unsafeAsAppointmentResourceId, _ as resolveWholeSeriesBookingPhase, _t as parseEventPageSurfaceSubject, an as unsafeAsEventInstanceId, at as isLiveOrderInstalmentPlanStatus, b as parseManagementKey, bt as isPublicEventPricingOptionDisplayable, c as resolveSiteVerticalBookingConfig, ct as addIntervalPreservingMonthAnchor, dt as getBookingInstalmentPlanIntervalCount, en as unsafeAsCheckoutLineId, et as toBookingTimeZone, f as SURFACE_EVENT_PRESET_VALUES, fn as unsafeAsPassId, ft as getBookingInstalmentProtectedDepositAmountCents, g as orderedLiveRunSessions, gt as resolveFlexibleBalanceInitialPaymentCents, h as CANCELLED_SESSION_STATUS, hn as unsafeAsPricingOptionId, ht as resolveFlexibleBalanceDueAt, i as areConfiguredBookingVerticalConfigsEqual, it as validateBookingPaymentOptionKinds, jt as parsePositiveCents, k as parseMailingListProviderScope, kt as isNonNegativeWholeCents$1, ln as unsafeAsMediaAssetId, lt as clampConfiguredAmount, m as publicReadFreshnessSeconds, mt as splitAmountWithRemainderInFirst, n as EVENT_PRESET_VOCABULARY, nn as unsafeAsDemoCapability, nt as toScheduledBookingDateTime, ot as isSettleableFlexibleBalanceContractStatus, p as WHOLE_SERIES_EVENT_PRESET_VALUES, pn as unsafeAsPositiveByteCount, pt as omitZeroAmountFutureRows, q as formatBookingTime, qt as parsePageId, r as NAVIGATION_LOCATIONS, st as isSettleableOrderInstalmentPlanStatus, tt as toScheduledBookingDateRange, u as EVENT_PRESET_VALUES, un as unsafeAsOccurrenceId, ut as getBookingInstalmentDepositRefundability, v as createSecret, vt as formatBookingPriceDisplay, w as parseMailingListContentVersionId, wt as publicEventPricingType, x as stableJsonStringify, xn as unsafeAsStaffMemberId, xt as publicEventPricingCurrency, y as exposeSecret, yt as formatEventPricing, zt as formatDurationUnitLabel } from "../src-yL0DBH7S.mjs";
|
|
4
|
+
import { A as sdkUpsertEventResponseSchema, B as isInternalResolvedLinkValue, C as createHttpClient, D as sdkGetEventResponseSchema, E as sdkConfigureBookingVerticalResponseSchema, F as entryLinkSchema$1, G as sdkGetPageDesignResponseSchema, H as linkSchema, I as externalLinkSchema$1, J as sdkEventOccurrenceResponseSchema, K as sdkSavePageDesignResponseSchema, L as internalLinkSchema, M as linkPayloadSchema, N as RESOLVED_INTERNAL_LINK_ENTITY_TYPES, O as sdkListEventsResponseSchema, P as customLinkSchema$1, R as internalResolvedLinkSchema, S as buildRequestInfo, T as managementTransportError, U as pageLinkSchema$1, V as isResolvedInternalLinkEntityType, W as portablePageDesignSchema, X as sdkReorderResponseSchema, Y as sdkListEventOccurrencesResponseSchema, Z as sdkConfiguredBookingVerticalConfigSchema, _ as buildSettingsUpdateInput, a as prepareLocalMediaForPush, b as isMediaValue, c as writeBinaryFileAtomic, d as normalizeMediaValueToIdentifierOnly, f as walkLocalContentMedia, g as SETTINGS_FILE_FIELDS, h as extractMediaIdentifiers, i as applyLocalMediaPush, j as sdkSettingsUpdateSchema, k as sdkTakeEventOfflineResponseSchema, l as sha256, m as downloadMedia, o as admitBinaryWriteDestination, p as buildStorageUrl, q as sdkDeleteEventOccurrenceResponseSchema, r as syncLocalMediaForPull, s as readStableBinaryFile, t as revalidateLocalMediaPushPlan, u as normalizeMediaIdentifierInput, v as hasOwnSettingsField, w as is404Error, x as ManagementApiError, y as writeMediaManifest, z as internalRouteOnlyLinkSchema } from "../local-sync-CWLEhMZ-.mjs";
|
|
5
|
+
import { n as CliSdkPeerError, r as CLI_VERSION, t as loadConfigFile } from "../load-config-CErro6mj.mjs";
|
|
6
|
+
import { a as RichTextDocSchema, c as isRecord$16, i as findUnfilledSentinels, n as buildEntryScaffold, o as isRichTextDoc, r as validateEntryInstance, s as isObjectRecord, t as eventUpsertInputSchema } from "../eventUpsertInputSchema-Bkafrrjw.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-DW5O751d.mjs";
|
|
8
8
|
import { config } from "dotenv";
|
|
9
9
|
import { Command, CommanderError } from "commander";
|
|
10
10
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
@@ -5423,6 +5423,129 @@ const BILLING_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
5423
5423
|
tags: ["billing"],
|
|
5424
5424
|
auth: "user",
|
|
5425
5425
|
responseKind: "json"
|
|
5426
|
+
},
|
|
5427
|
+
stripeConnectSetupStart: {
|
|
5428
|
+
path: "/sites/{siteId}/billing/connect/setup",
|
|
5429
|
+
method: "POST",
|
|
5430
|
+
tags: ["site-{siteId}", "stripe-connect"],
|
|
5431
|
+
auth: "user",
|
|
5432
|
+
responseKind: "json",
|
|
5433
|
+
errors: [
|
|
5434
|
+
"validation:invalid_input",
|
|
5435
|
+
"auth:forbidden",
|
|
5436
|
+
"resource:conflict",
|
|
5437
|
+
"server:internal_error"
|
|
5438
|
+
]
|
|
5439
|
+
},
|
|
5440
|
+
stripeConnectSetupDiscard: {
|
|
5441
|
+
path: "/sites/{siteId}/billing/connect/setup",
|
|
5442
|
+
method: "DELETE",
|
|
5443
|
+
tags: ["site-{siteId}", "stripe-connect"],
|
|
5444
|
+
auth: "user",
|
|
5445
|
+
responseKind: "json",
|
|
5446
|
+
errors: [
|
|
5447
|
+
"validation:invalid_input",
|
|
5448
|
+
"auth:forbidden",
|
|
5449
|
+
"resource:conflict",
|
|
5450
|
+
"server:internal_error"
|
|
5451
|
+
]
|
|
5452
|
+
},
|
|
5453
|
+
stripeConnectSetupSave: {
|
|
5454
|
+
path: "/sites/{siteId}/billing/connect/setup/save",
|
|
5455
|
+
method: "POST",
|
|
5456
|
+
tags: ["site-{siteId}", "stripe-connect"],
|
|
5457
|
+
auth: "user",
|
|
5458
|
+
responseKind: "json",
|
|
5459
|
+
errors: [
|
|
5460
|
+
"validation:invalid_input",
|
|
5461
|
+
"auth:forbidden",
|
|
5462
|
+
"resource:conflict",
|
|
5463
|
+
"server:internal_error"
|
|
5464
|
+
]
|
|
5465
|
+
},
|
|
5466
|
+
stripeConnectAccountSession: {
|
|
5467
|
+
path: "/sites/{siteId}/billing/connect/session",
|
|
5468
|
+
method: "POST",
|
|
5469
|
+
tags: ["site-{siteId}", "stripe-connect"],
|
|
5470
|
+
auth: "user",
|
|
5471
|
+
responseKind: "json",
|
|
5472
|
+
errors: [
|
|
5473
|
+
"validation:invalid_input",
|
|
5474
|
+
"auth:forbidden",
|
|
5475
|
+
"resource:conflict",
|
|
5476
|
+
"server:internal_error"
|
|
5477
|
+
]
|
|
5478
|
+
},
|
|
5479
|
+
stripeConnectStart: {
|
|
5480
|
+
path: "/sites/{siteId}/billing/connect/start",
|
|
5481
|
+
method: "POST",
|
|
5482
|
+
tags: ["site-{siteId}", "stripe-connect"],
|
|
5483
|
+
auth: "user",
|
|
5484
|
+
responseKind: "json",
|
|
5485
|
+
errors: [
|
|
5486
|
+
"validation:invalid_input",
|
|
5487
|
+
"auth:forbidden",
|
|
5488
|
+
"resource:conflict",
|
|
5489
|
+
"server:internal_error"
|
|
5490
|
+
]
|
|
5491
|
+
},
|
|
5492
|
+
stripeConnectStatus: {
|
|
5493
|
+
path: "/sites/{siteId}/billing/connect/status",
|
|
5494
|
+
method: "GET",
|
|
5495
|
+
tags: ["site-{siteId}", "stripe-connect"],
|
|
5496
|
+
auth: "user",
|
|
5497
|
+
responseKind: "json",
|
|
5498
|
+
errors: [
|
|
5499
|
+
"validation:invalid_input",
|
|
5500
|
+
"auth:forbidden",
|
|
5501
|
+
"resource:conflict",
|
|
5502
|
+
"server:internal_error"
|
|
5503
|
+
]
|
|
5504
|
+
},
|
|
5505
|
+
stripeAutomaticTaxUpdate: {
|
|
5506
|
+
path: "/sites/{siteId}/billing/automatic-tax",
|
|
5507
|
+
method: "POST",
|
|
5508
|
+
tags: [
|
|
5509
|
+
"site-{siteId}",
|
|
5510
|
+
"billing",
|
|
5511
|
+
"stripe-tax"
|
|
5512
|
+
],
|
|
5513
|
+
auth: "user",
|
|
5514
|
+
responseKind: "json",
|
|
5515
|
+
errors: [
|
|
5516
|
+
"validation:invalid_input",
|
|
5517
|
+
"auth:forbidden",
|
|
5518
|
+
"resource:not_found",
|
|
5519
|
+
"server:unavailable",
|
|
5520
|
+
"server:internal_error"
|
|
5521
|
+
]
|
|
5522
|
+
},
|
|
5523
|
+
stripeConnectDisconnect: {
|
|
5524
|
+
path: "/sites/{siteId}/billing/connect/disconnect",
|
|
5525
|
+
method: "DELETE",
|
|
5526
|
+
tags: ["site-{siteId}", "stripe-connect"],
|
|
5527
|
+
auth: "user",
|
|
5528
|
+
responseKind: "json",
|
|
5529
|
+
errors: [
|
|
5530
|
+
"validation:invalid_input",
|
|
5531
|
+
"auth:forbidden",
|
|
5532
|
+
"resource:conflict",
|
|
5533
|
+
"server:internal_error"
|
|
5534
|
+
]
|
|
5535
|
+
},
|
|
5536
|
+
billingConnectReturn: {
|
|
5537
|
+
path: "/billing/connect/return",
|
|
5538
|
+
method: "GET",
|
|
5539
|
+
auth: "user",
|
|
5540
|
+
responseKind: "void",
|
|
5541
|
+
errors: []
|
|
5542
|
+
},
|
|
5543
|
+
billingConnectRefresh: {
|
|
5544
|
+
path: "/billing/connect/refresh",
|
|
5545
|
+
method: "GET",
|
|
5546
|
+
auth: "user",
|
|
5547
|
+
responseKind: "void",
|
|
5548
|
+
errors: []
|
|
5426
5549
|
}
|
|
5427
5550
|
});
|
|
5428
5551
|
|
|
@@ -5590,6 +5713,14 @@ const PAGE_SURFACE_EDITOR_ENDPOINT_DEFINITIONS = {
|
|
|
5590
5713
|
* person when nothing is attached to them.
|
|
5591
5714
|
*/
|
|
5592
5715
|
const BOOKING_PEOPLE_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
5716
|
+
getBookingPerson: {
|
|
5717
|
+
path: "/sites/{siteId}/bookings/people/{personId}",
|
|
5718
|
+
method: "GET",
|
|
5719
|
+
tags: ["site-{siteId}", "customers-{siteId}"],
|
|
5720
|
+
auth: "user",
|
|
5721
|
+
responseKind: "json",
|
|
5722
|
+
errors: ["resource:not_found", "server:internal_error"]
|
|
5723
|
+
},
|
|
5593
5724
|
listPeople: {
|
|
5594
5725
|
path: "/sites/{siteId}/bookings/people",
|
|
5595
5726
|
method: "GET",
|
|
@@ -8829,57 +8960,6 @@ const ENDPOINT_DEFINITIONS = {
|
|
|
8829
8960
|
errors: [],
|
|
8830
8961
|
responseKind: "json"
|
|
8831
8962
|
},
|
|
8832
|
-
stripeConnectStart: {
|
|
8833
|
-
path: "/sites/{siteId}/billing/connect/start",
|
|
8834
|
-
method: "POST",
|
|
8835
|
-
tags: ["site-{siteId}", "stripe-connect"],
|
|
8836
|
-
auth: "user",
|
|
8837
|
-
responseKind: "json"
|
|
8838
|
-
},
|
|
8839
|
-
stripeConnectStatus: {
|
|
8840
|
-
path: "/sites/{siteId}/billing/connect/status",
|
|
8841
|
-
method: "GET",
|
|
8842
|
-
tags: ["site-{siteId}", "stripe-connect"],
|
|
8843
|
-
auth: "user",
|
|
8844
|
-
responseKind: "json"
|
|
8845
|
-
},
|
|
8846
|
-
stripeAutomaticTaxUpdate: {
|
|
8847
|
-
path: "/sites/{siteId}/billing/automatic-tax",
|
|
8848
|
-
method: "POST",
|
|
8849
|
-
tags: [
|
|
8850
|
-
"site-{siteId}",
|
|
8851
|
-
"billing",
|
|
8852
|
-
"stripe-tax"
|
|
8853
|
-
],
|
|
8854
|
-
auth: "user",
|
|
8855
|
-
responseKind: "json",
|
|
8856
|
-
errors: [
|
|
8857
|
-
"validation:invalid_input",
|
|
8858
|
-
"auth:forbidden",
|
|
8859
|
-
"resource:not_found",
|
|
8860
|
-
"server:unavailable",
|
|
8861
|
-
"server:internal_error"
|
|
8862
|
-
]
|
|
8863
|
-
},
|
|
8864
|
-
stripeConnectDisconnect: {
|
|
8865
|
-
path: "/sites/{siteId}/billing/connect/disconnect",
|
|
8866
|
-
method: "DELETE",
|
|
8867
|
-
tags: ["site-{siteId}", "stripe-connect"],
|
|
8868
|
-
auth: "user",
|
|
8869
|
-
responseKind: "json"
|
|
8870
|
-
},
|
|
8871
|
-
billingConnectReturn: {
|
|
8872
|
-
path: "/billing/connect/return",
|
|
8873
|
-
method: "GET",
|
|
8874
|
-
auth: "user",
|
|
8875
|
-
responseKind: "void"
|
|
8876
|
-
},
|
|
8877
|
-
billingConnectRefresh: {
|
|
8878
|
-
path: "/billing/connect/refresh",
|
|
8879
|
-
method: "GET",
|
|
8880
|
-
auth: "user",
|
|
8881
|
-
responseKind: "void"
|
|
8882
|
-
},
|
|
8883
8963
|
importSiteBackup: {
|
|
8884
8964
|
path: "/sites/{siteId}/backup/import",
|
|
8885
8965
|
method: "POST",
|
|
@@ -9785,6 +9865,7 @@ const ENDPOINT_DEFINITIONS = {
|
|
|
9785
9865
|
errors: [
|
|
9786
9866
|
"validation:invalid_input",
|
|
9787
9867
|
"resource:not_found",
|
|
9868
|
+
"resource:conflict",
|
|
9788
9869
|
"server:internal_error"
|
|
9789
9870
|
]
|
|
9790
9871
|
},
|
|
@@ -9810,6 +9891,7 @@ const ENDPOINT_DEFINITIONS = {
|
|
|
9810
9891
|
errors: [
|
|
9811
9892
|
"validation:invalid_input",
|
|
9812
9893
|
"resource:not_found",
|
|
9894
|
+
"resource:conflict",
|
|
9813
9895
|
"server:internal_error"
|
|
9814
9896
|
]
|
|
9815
9897
|
},
|
|
@@ -15214,15 +15296,15 @@ function createRepeaterGridColumnField(options) {
|
|
|
15214
15296
|
ui: { hidden: true }
|
|
15215
15297
|
};
|
|
15216
15298
|
}
|
|
15217
|
-
function withRepeaterGridSpanField(fields$
|
|
15299
|
+
function withRepeaterGridSpanField(fields$1, options) {
|
|
15218
15300
|
const spanFieldId = resolveRepeaterGridSpanFieldId(options);
|
|
15219
|
-
if (fields$
|
|
15220
|
-
return [...fields$
|
|
15301
|
+
if (fields$1.some((field) => field.id === spanFieldId)) {
|
|
15302
|
+
return [...fields$1];
|
|
15221
15303
|
}
|
|
15222
|
-
return [createRepeaterGridSpanField(options), ...fields$
|
|
15304
|
+
return [createRepeaterGridSpanField(options), ...fields$1];
|
|
15223
15305
|
}
|
|
15224
|
-
function withRepeaterGridPositionFields(fields$
|
|
15225
|
-
let nextFields = [...fields$
|
|
15306
|
+
function withRepeaterGridPositionFields(fields$1, options) {
|
|
15307
|
+
let nextFields = [...fields$1];
|
|
15226
15308
|
const rowFieldId = resolveRepeaterGridRowFieldId(options?.row);
|
|
15227
15309
|
if (!nextFields.some((field) => field.id === rowFieldId)) {
|
|
15228
15310
|
nextFields = [createRepeaterGridRowField(options?.row), ...nextFields];
|
|
@@ -16267,11 +16349,11 @@ var FragmentConfigError = class extends Error {
|
|
|
16267
16349
|
};
|
|
16268
16350
|
function defineFragment(config$1) {
|
|
16269
16351
|
const parsed = fragmentConfigSchema.parse(config$1);
|
|
16270
|
-
const fields$
|
|
16271
|
-
validateFieldDefinitions(fields$
|
|
16352
|
+
const fields$1 = parseFieldDefinitions(parsed.fields);
|
|
16353
|
+
validateFieldDefinitions(fields$1, parsed.id);
|
|
16272
16354
|
return {
|
|
16273
16355
|
...parsed,
|
|
16274
|
-
fields: fields$
|
|
16356
|
+
fields: fields$1.map((field) => cloneFieldDefinition$1(field)),
|
|
16275
16357
|
layout: parsed.layout.map((node) => ({ ...node }))
|
|
16276
16358
|
};
|
|
16277
16359
|
}
|
|
@@ -16286,9 +16368,9 @@ function scopeFragmentLayout(fragment, scope) {
|
|
|
16286
16368
|
const normalizedScope = scope.trim();
|
|
16287
16369
|
return fragment.layout.map((node) => cloneAndScopeNode(node, normalizedScope));
|
|
16288
16370
|
}
|
|
16289
|
-
function validateFieldDefinitions(fields$
|
|
16371
|
+
function validateFieldDefinitions(fields$1, fragmentId) {
|
|
16290
16372
|
const seen = new Set();
|
|
16291
|
-
for (const field of fields$
|
|
16373
|
+
for (const field of fields$1) {
|
|
16292
16374
|
if (field.id.includes(".")) {
|
|
16293
16375
|
throw new FragmentConfigError(`Field "${field.id}" in fragment "${fragmentId}" should not include dot notation; the builder scopes fields automatically.`);
|
|
16294
16376
|
}
|
|
@@ -16457,7 +16539,7 @@ var FragmentCompositionError = class extends Error {
|
|
|
16457
16539
|
const DOT_SCOPE_REGEX = /^[A-Za-z0-9_.-]*$/;
|
|
16458
16540
|
function materializeFragment(config$1) {
|
|
16459
16541
|
const scope = normalizeScope(config$1.scope);
|
|
16460
|
-
const fields$
|
|
16542
|
+
const fields$1 = scopeFragmentFields(config$1.fragment, scope);
|
|
16461
16543
|
const layout = scopeFragmentLayout(config$1.fragment, scope);
|
|
16462
16544
|
const fieldPriority = config$1.fieldPriority ?? 0;
|
|
16463
16545
|
let data;
|
|
@@ -16474,7 +16556,7 @@ function materializeFragment(config$1) {
|
|
|
16474
16556
|
return {
|
|
16475
16557
|
fragment: config$1.fragment,
|
|
16476
16558
|
scope,
|
|
16477
|
-
fields: fields$
|
|
16559
|
+
fields: fields$1,
|
|
16478
16560
|
layout,
|
|
16479
16561
|
data,
|
|
16480
16562
|
fieldPriority
|
|
@@ -16560,6 +16642,71 @@ function buildFragmentDataLoaders(composition$1) {
|
|
|
16560
16642
|
return loaders;
|
|
16561
16643
|
}
|
|
16562
16644
|
|
|
16645
|
+
//#endregion
|
|
16646
|
+
//#region ../blocks/src/system/transforms/registry/core.ts
|
|
16647
|
+
/**
|
|
16648
|
+
* Safely narrows unknown values to partial object shapes used by transforms.
|
|
16649
|
+
* Arrays are intentionally excluded.
|
|
16650
|
+
*/
|
|
16651
|
+
function asPartialObject(value) {
|
|
16652
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
16653
|
+
return undefined;
|
|
16654
|
+
}
|
|
16655
|
+
return value;
|
|
16656
|
+
}
|
|
16657
|
+
function runTransforms(value, transforms, context, registry) {
|
|
16658
|
+
if (!transforms?.length) return value;
|
|
16659
|
+
return transforms.reduce((acc, step) => {
|
|
16660
|
+
const transform = registry.get(step.id);
|
|
16661
|
+
if (!transform) {
|
|
16662
|
+
throw new Error(`Unknown transform: ${step.id}`);
|
|
16663
|
+
}
|
|
16664
|
+
const options = transform.schema ? transform.schema.parse(step.options ?? {}) : step.options ?? {};
|
|
16665
|
+
return transform.run(acc, options, context);
|
|
16666
|
+
}, value);
|
|
16667
|
+
}
|
|
16668
|
+
function createTransformRegistry(definitions$1) {
|
|
16669
|
+
const registry = new Map();
|
|
16670
|
+
for (const definition$1 of definitions$1) {
|
|
16671
|
+
if (registry.has(definition$1.id)) continue;
|
|
16672
|
+
registry.set(definition$1.id, definition$1);
|
|
16673
|
+
}
|
|
16674
|
+
return registry;
|
|
16675
|
+
}
|
|
16676
|
+
function mergeTransformRegistries(...registries) {
|
|
16677
|
+
const merged = new Map();
|
|
16678
|
+
for (const registry of registries) {
|
|
16679
|
+
for (const [id, definition$1] of registry.entries()) {
|
|
16680
|
+
if (merged.has(id)) continue;
|
|
16681
|
+
merged.set(id, definition$1);
|
|
16682
|
+
}
|
|
16683
|
+
}
|
|
16684
|
+
return merged;
|
|
16685
|
+
}
|
|
16686
|
+
|
|
16687
|
+
//#endregion
|
|
16688
|
+
//#region ../blocks/src/system/customize/testimonialCount.ts
|
|
16689
|
+
/** The loader consumes the content-stage plan; it never selects a Look. */
|
|
16690
|
+
function testimonialLoaderLimit(content) {
|
|
16691
|
+
if (typeof content._quoteLoaderLimit === "string") return content._quoteLoaderLimit;
|
|
16692
|
+
return typeof content.maxEntries === "string" || typeof content.maxEntries === "number" ? String(content.maxEntries) : "6";
|
|
16693
|
+
}
|
|
16694
|
+
|
|
16695
|
+
//#endregion
|
|
16696
|
+
//#region ../blocks/src/system/node/fragments/lookSlot.ts
|
|
16697
|
+
/** Compiler-owned slots are absent for legacy Looks, preserving their HTML. */
|
|
16698
|
+
const lookSlot = (name) => ({ "data-slot": { $bind: { from: `content._lookSlots.${name}` } } });
|
|
16699
|
+
const lookLeadSlotTransform = {
|
|
16700
|
+
id: "look.leadSlot",
|
|
16701
|
+
kind: "string",
|
|
16702
|
+
run: (value, _options, context) => asPartialObject(context.viewModel?.content)?._lookSlots === undefined ? undefined : value === 0 ? "lead" : "item"
|
|
16703
|
+
};
|
|
16704
|
+
const lookQuoteLimitTransform = {
|
|
16705
|
+
id: "look.quoteLimit",
|
|
16706
|
+
kind: "string",
|
|
16707
|
+
run: (value) => testimonialLoaderLimit(asPartialObject(value) ?? {})
|
|
16708
|
+
};
|
|
16709
|
+
|
|
16563
16710
|
//#endregion
|
|
16564
16711
|
//#region ../blocks/src/utils/env.ts
|
|
16565
16712
|
/**
|
|
@@ -16809,6 +16956,7 @@ const bodyCopyFragment = defineFragment({
|
|
|
16809
16956
|
],
|
|
16810
16957
|
layout: stack({
|
|
16811
16958
|
gap: "md",
|
|
16959
|
+
...lookSlot("copy"),
|
|
16812
16960
|
className: "body-copy-container",
|
|
16813
16961
|
align: { $bind: {
|
|
16814
16962
|
from: "content.alignment",
|
|
@@ -16817,6 +16965,7 @@ const bodyCopyFragment = defineFragment({
|
|
|
16817
16965
|
} }
|
|
16818
16966
|
}, [text({
|
|
16819
16967
|
as: "h2",
|
|
16968
|
+
...lookSlot("heading"),
|
|
16820
16969
|
className: { $bind: {
|
|
16821
16970
|
from: "content.alignment",
|
|
16822
16971
|
transforms: [{
|
|
@@ -16825,81 +16974,24 @@ const bodyCopyFragment = defineFragment({
|
|
|
16825
16974
|
}],
|
|
16826
16975
|
fallback: "body-copy-heading"
|
|
16827
16976
|
} }
|
|
16828
|
-
}, when("content.heading"
|
|
16829
|
-
|
|
16830
|
-
|
|
16831
|
-
|
|
16832
|
-
|
|
16833
|
-
}
|
|
16834
|
-
|
|
16835
|
-
|
|
16977
|
+
}, when("content.heading", { authoringPresence: {
|
|
16978
|
+
kind: "recover-empty-when-active",
|
|
16979
|
+
placeholder: "Add heading"
|
|
16980
|
+
} }), bind("content.heading")), richText({
|
|
16981
|
+
...lookSlot("item-body"),
|
|
16982
|
+
leadParagraphSlot: { $bind: { from: "content._lookSlots.lede" } },
|
|
16983
|
+
lookSlots: { $bind: { from: "content._lookSlots" } },
|
|
16984
|
+
className: { $bind: {
|
|
16985
|
+
from: "content.alignment",
|
|
16986
|
+
transforms: [{
|
|
16987
|
+
id: "ui.bodyClassFromAlignment",
|
|
16988
|
+
options: { base: "body-copy-body rb-prose rb-max-w-none" }
|
|
16989
|
+
}],
|
|
16990
|
+
fallback: "body-copy-body rb-prose rb-max-w-none"
|
|
16991
|
+
} }
|
|
16992
|
+
}, bind("content.body"))])
|
|
16836
16993
|
});
|
|
16837
16994
|
|
|
16838
|
-
//#endregion
|
|
16839
|
-
//#region ../blocks/src/system/transforms/registry/core.ts
|
|
16840
|
-
/**
|
|
16841
|
-
* Safely narrows unknown values to partial object shapes used by transforms.
|
|
16842
|
-
* Arrays are intentionally excluded.
|
|
16843
|
-
*/
|
|
16844
|
-
function asPartialObject(value) {
|
|
16845
|
-
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
16846
|
-
return undefined;
|
|
16847
|
-
}
|
|
16848
|
-
return value;
|
|
16849
|
-
}
|
|
16850
|
-
function runTransforms(value, transforms, context, registry) {
|
|
16851
|
-
if (!transforms?.length) return value;
|
|
16852
|
-
return transforms.reduce((acc, step) => {
|
|
16853
|
-
const transform = registry.get(step.id);
|
|
16854
|
-
if (!transform) {
|
|
16855
|
-
throw new Error(`Unknown transform: ${step.id}`);
|
|
16856
|
-
}
|
|
16857
|
-
const options = transform.schema ? transform.schema.parse(step.options ?? {}) : step.options ?? {};
|
|
16858
|
-
return transform.run(acc, options, context);
|
|
16859
|
-
}, value);
|
|
16860
|
-
}
|
|
16861
|
-
function createTransformRegistry(definitions$1) {
|
|
16862
|
-
const registry = new Map();
|
|
16863
|
-
for (const definition$1 of definitions$1) {
|
|
16864
|
-
if (registry.has(definition$1.id)) continue;
|
|
16865
|
-
registry.set(definition$1.id, definition$1);
|
|
16866
|
-
}
|
|
16867
|
-
return registry;
|
|
16868
|
-
}
|
|
16869
|
-
function mergeTransformRegistries(...registries) {
|
|
16870
|
-
const merged = new Map();
|
|
16871
|
-
for (const registry of registries) {
|
|
16872
|
-
for (const [id, definition$1] of registry.entries()) {
|
|
16873
|
-
if (merged.has(id)) continue;
|
|
16874
|
-
merged.set(id, definition$1);
|
|
16875
|
-
}
|
|
16876
|
-
}
|
|
16877
|
-
return merged;
|
|
16878
|
-
}
|
|
16879
|
-
|
|
16880
|
-
//#endregion
|
|
16881
|
-
//#region ../blocks/src/system/customize/testimonialCount.ts
|
|
16882
|
-
/** The loader consumes the content-stage plan; it never selects a Look. */
|
|
16883
|
-
function testimonialLoaderLimit(content) {
|
|
16884
|
-
if (typeof content._quoteLoaderLimit === "string") return content._quoteLoaderLimit;
|
|
16885
|
-
return typeof content.maxEntries === "string" || typeof content.maxEntries === "number" ? String(content.maxEntries) : "6";
|
|
16886
|
-
}
|
|
16887
|
-
|
|
16888
|
-
//#endregion
|
|
16889
|
-
//#region ../blocks/src/system/node/fragments/lookSlot.ts
|
|
16890
|
-
/** Compiler-owned slots are absent for legacy Looks, preserving their HTML. */
|
|
16891
|
-
const lookSlot = (name) => ({ "data-slot": { $bind: { from: `content._lookSlots.${name}` } } });
|
|
16892
|
-
const lookLeadSlotTransform = {
|
|
16893
|
-
id: "look.leadSlot",
|
|
16894
|
-
kind: "string",
|
|
16895
|
-
run: (value, _options, context) => asPartialObject(context.viewModel?.content)?._lookSlots === undefined ? undefined : value === 0 ? "lead" : "item"
|
|
16896
|
-
};
|
|
16897
|
-
const lookQuoteLimitTransform = {
|
|
16898
|
-
id: "look.quoteLimit",
|
|
16899
|
-
kind: "string",
|
|
16900
|
-
run: (value) => testimonialLoaderLimit(asPartialObject(value) ?? {})
|
|
16901
|
-
};
|
|
16902
|
-
|
|
16903
16995
|
//#endregion
|
|
16904
16996
|
//#region ../blocks/src/system/node/fragments/backgroundLayer.ts
|
|
16905
16997
|
const BACKGROUND_FRAME_BASE_CLASS = "rb-background-frame rb-absolute rb-inset-0 rb-z-neg-10 rb-h-full rb-w-full rb-isolate rb-pointer-events-none";
|
|
@@ -17825,160 +17917,6 @@ function footerNav(opts) {
|
|
|
17825
17917
|
return buildFooterNavAll(common);
|
|
17826
17918
|
}
|
|
17827
17919
|
|
|
17828
|
-
//#endregion
|
|
17829
|
-
//#region ../theme-core/src/navigation/generateNavLinkCSS.ts
|
|
17830
|
-
/**
|
|
17831
|
-
* Generate complete CSS for nav links from a NavLinkStyle configuration
|
|
17832
|
-
*/
|
|
17833
|
-
function generateNavLinkCSS(options) {
|
|
17834
|
-
const { themeId, tokens, theme, style, className } = options;
|
|
17835
|
-
const surfaceDependent = options.surfaceDependent === true && !navLinkOwnsHoverForeground(style);
|
|
17836
|
-
const overriddenSurface = options.surfaceDependent === true && options.surfaceRestingColor === true;
|
|
17837
|
-
const surfaceRestingColor = surfaceDependent || overriddenSurface;
|
|
17838
|
-
const selector = `:where([data-theme-scope="${themeId}"]) .${className}`;
|
|
17839
|
-
const activeSelector = `${selector}:active, ${selector}[data-active="true"]`;
|
|
17840
|
-
const baseRules = navBaseRules(style, tokens, theme, surfaceRestingColor, overriddenSurface);
|
|
17841
|
-
const hoverRules = navHoverRules(style, tokens, surfaceDependent);
|
|
17842
|
-
const activeRules = surfaceDependent ? [`color: ${surfaceForegroundValue("linkHover", tokens.getColor(style.colorToken))};`] : [];
|
|
17843
|
-
const authoredColor = tokens.getColor(style.colorToken);
|
|
17844
|
-
const effectsCss = style.effects ? generateEffectsCSS({
|
|
17845
|
-
themeId,
|
|
17846
|
-
variantId: className,
|
|
17847
|
-
effects: surfaceDependent ? withoutSurfaceTextColorEffects(style.effects) : style.effects,
|
|
17848
|
-
elementConfig: {
|
|
17849
|
-
background: { type: "transparent" },
|
|
17850
|
-
textColorToken: style.colorToken || "text"
|
|
17851
|
-
},
|
|
17852
|
-
tokens,
|
|
17853
|
-
theme
|
|
17854
|
-
}) : "";
|
|
17855
|
-
const underlineColorCss = surfaceDependent && navLinkOwnsUnderline(style) ? `\n${selector}::after {\n background: ${surfaceForegroundValue("link", authoredColor)};\n}\n` : "";
|
|
17856
|
-
return [
|
|
17857
|
-
cssRule(selector, baseRules),
|
|
17858
|
-
effectsCss,
|
|
17859
|
-
cssRule(`${selector}:hover`, hoverRules),
|
|
17860
|
-
cssRule(activeSelector, activeRules),
|
|
17861
|
-
underlineColorCss,
|
|
17862
|
-
navLinkFocusVisibleCss(selector, style, theme, tokens, surfaceRestingColor, overriddenSurface),
|
|
17863
|
-
generateInteractiveChildInheritanceCSS(selector)
|
|
17864
|
-
].join("");
|
|
17865
|
-
}
|
|
17866
|
-
function navBaseRules(style, tokens, theme, surfaceRestingColor, overriddenSurface) {
|
|
17867
|
-
const typographyRules = generateBaseInteractiveCSS({
|
|
17868
|
-
typography: {
|
|
17869
|
-
typography: style.typography,
|
|
17870
|
-
fontWeight: style.fontWeight,
|
|
17871
|
-
textTransform: style.textTransform,
|
|
17872
|
-
italic: style.italic
|
|
17873
|
-
},
|
|
17874
|
-
padding: style.padding ? NAV_LINK_PADDING_MAP[style.padding] : undefined,
|
|
17875
|
-
borderRadius: style.borderRadius ? NAV_LINK_BORDER_RADIUS_MAP[style.borderRadius] : undefined,
|
|
17876
|
-
includeTransition: true,
|
|
17877
|
-
includeFlexCenter: false
|
|
17878
|
-
});
|
|
17879
|
-
const contrastShadow = navContrastShadow(style, theme, overriddenSurface);
|
|
17880
|
-
return [
|
|
17881
|
-
...typographyRules,
|
|
17882
|
-
...style.paddingX ? [`padding-left: ${NAV_LINK_PADDING_X_MAP[style.paddingX]};`, `padding-right: ${NAV_LINK_PADDING_X_MAP[style.paddingX]};`] : [],
|
|
17883
|
-
...style.textSize ? [`font-size: ${NAV_LINK_TEXT_SIZE_MAP[style.textSize]};`] : [],
|
|
17884
|
-
...style.letterSpacing && style.letterSpacing !== "normal" ? [`letter-spacing: ${NAV_LINK_LETTER_SPACING_MAP[style.letterSpacing]};`] : [],
|
|
17885
|
-
...surfaceRestingColor ? [`color: ${surfaceForegroundValue("link", tokens.getColor(style.colorToken))};`] : style.colorToken ? [`color: ${tokens.getColor(style.colorToken)};`] : [],
|
|
17886
|
-
...contrastShadow ? [`text-shadow: ${contrastShadow};`] : []
|
|
17887
|
-
];
|
|
17888
|
-
}
|
|
17889
|
-
function navHoverRules(style, tokens, surfaceDependent) {
|
|
17890
|
-
if (surfaceDependent) return [`color: ${surfaceForegroundValue("linkHover", tokens.getColor(style.colorToken))};`, ...navLinkOwnsUnderline(style) ? [] : ["text-decoration-line: var(--rb-surface-link-hover-decoration, none);"]];
|
|
17891
|
-
return style.hoverColorToken && !style.effects?.hover?.length ? [`color: ${tokens.getColor(style.hoverColorToken)};`] : [];
|
|
17892
|
-
}
|
|
17893
|
-
function cssRule(selector, rules) {
|
|
17894
|
-
return rules.length > 0 ? `\n${selector} {\n ${rules.join("\n ")}\n}\n` : "";
|
|
17895
|
-
}
|
|
17896
|
-
function navContrastShadow(style, theme, overriddenSurface) {
|
|
17897
|
-
return overriddenSurface ? null : buildTextContrastShadow({
|
|
17898
|
-
theme,
|
|
17899
|
-
colorToken: style.colorToken,
|
|
17900
|
-
treatment: style.contrastTreatment
|
|
17901
|
-
});
|
|
17902
|
-
}
|
|
17903
|
-
function withoutSurfaceTextColorEffects(effects) {
|
|
17904
|
-
const withoutColor = (items) => items?.filter((effect) => navEffectPolicy(effect.effectId) !== "text-colour");
|
|
17905
|
-
return {
|
|
17906
|
-
base: withoutColor(effects.base),
|
|
17907
|
-
hover: withoutColor(effects.hover),
|
|
17908
|
-
active: withoutColor(effects.active),
|
|
17909
|
-
focus: withoutColor(effects.focus)
|
|
17910
|
-
};
|
|
17911
|
-
}
|
|
17912
|
-
/**
|
|
17913
|
-
* Keyboard focus indicator for nav links, in the header, the footer and header
|
|
17914
|
-
* dropdown menus — the three surfaces `generateNavLinkCSS` serves.
|
|
17915
|
-
*
|
|
17916
|
-
* Emitted unconditionally rather than as an effect, because focus visibility is
|
|
17917
|
-
* a floor rather than a style choice. Only the interaction-palette pill ever
|
|
17918
|
-
* wrote an `effects.focus` group, so every other nav — every `quiet` palette,
|
|
17919
|
-
* every footer, every dropdown — previously fell back to whatever outline the
|
|
17920
|
-
* browser drew.
|
|
17921
|
-
*
|
|
17922
|
-
* The outline takes the link's own resolved colour, so on a header that adapts
|
|
17923
|
-
* to the section it floats over it moves with the adaptation instead of
|
|
17924
|
-
* asserting a brand colour against an unknown backdrop.
|
|
17925
|
-
*
|
|
17926
|
-
* Where the style asks for `soft-glow`, the same halo goes on the outline. That
|
|
17927
|
-
* treatment exists because the theme has already conceded the resolved colour
|
|
17928
|
-
* alone is not reliable over an unpredictable backdrop — a hero photograph with
|
|
17929
|
-
* mixed luminance. Without it the text would stay legible by its halo while the
|
|
17930
|
-
* focus ring, which is the part with a contrast requirement of its own, would
|
|
17931
|
-
* not.
|
|
17932
|
-
*
|
|
17933
|
-
* A style that also paints a focus pill keeps it: this adds an outline around
|
|
17934
|
-
* that pill rather than replacing it.
|
|
17935
|
-
*/
|
|
17936
|
-
function navLinkFocusVisibleCss(selector, style, theme, tokens, surfaceRestingColor, overriddenSurface) {
|
|
17937
|
-
const color = surfaceRestingColor ? surfaceForegroundValue("link", tokens.getColor(style.colorToken)) : tokens.getColor(style.colorToken);
|
|
17938
|
-
const halo = navContrastShadow(style, theme, overriddenSurface);
|
|
17939
|
-
return `
|
|
17940
|
-
${selector}:focus-visible {
|
|
17941
|
-
outline: 2px solid ${color};
|
|
17942
|
-
outline-offset: ${focusOutlineOffset(selector)};${halo ? `\n box-shadow: ${halo};` : ""}
|
|
17943
|
-
}
|
|
17944
|
-
`;
|
|
17945
|
-
}
|
|
17946
|
-
/**
|
|
17947
|
-
* Dropdown items are full-width inside a panel with no horizontal padding, so
|
|
17948
|
-
* an outset outline would paint over and past the panel's own border. Keeping
|
|
17949
|
-
* it flush is the only way it reads as belonging to the item.
|
|
17950
|
-
*/
|
|
17951
|
-
function focusOutlineOffset(selector) {
|
|
17952
|
-
return selector.includes("nav-dropdown-link") ? "-2px" : "3px";
|
|
17953
|
-
}
|
|
17954
|
-
function buildTextContrastShadow(input) {
|
|
17955
|
-
if (input.treatment !== "soft-glow") return null;
|
|
17956
|
-
return isLikelyLightColorToken(input.theme, input.colorToken) ? "0 1px 3px rgb(0 0 0 / 0.55), 0 0 18px rgb(0 0 0 / 0.38)" : "0 1px 3px rgb(255 255 255 / 0.72), 0 0 18px rgb(255 255 255 / 0.5)";
|
|
17957
|
-
}
|
|
17958
|
-
function isLikelyLightColorToken(theme, colorToken) {
|
|
17959
|
-
const hex = resolveColorTokenHex(theme, colorToken);
|
|
17960
|
-
if (hex) {
|
|
17961
|
-
try {
|
|
17962
|
-
return featuresFromHex(hex).Y >= .5;
|
|
17963
|
-
} catch {}
|
|
17964
|
-
}
|
|
17965
|
-
const normalizedToken = colorToken?.toLowerCase() ?? "";
|
|
17966
|
-
if (normalizedToken.includes("foreground") || normalizedToken.startsWith("on") || normalizedToken.includes("white") || normalizedToken.endsWith("-50") || normalizedToken.endsWith("-100")) {
|
|
17967
|
-
return true;
|
|
17968
|
-
}
|
|
17969
|
-
if (normalizedToken.includes("black") || normalizedToken.endsWith("-800") || normalizedToken.endsWith("-900") || normalizedToken.endsWith("-950")) {
|
|
17970
|
-
return false;
|
|
17971
|
-
}
|
|
17972
|
-
return theme.palette.meta.mode === "dark";
|
|
17973
|
-
}
|
|
17974
|
-
function resolveColorTokenHex(theme, colorToken) {
|
|
17975
|
-
if (!colorToken) return null;
|
|
17976
|
-
if (colorToken === "white") return "#ffffff";
|
|
17977
|
-
if (colorToken === "black") return "#000000";
|
|
17978
|
-
if (colorToken === "transparent") return null;
|
|
17979
|
-
return expandPalette(theme.palette)[colorToken] ?? null;
|
|
17980
|
-
}
|
|
17981
|
-
|
|
17982
17920
|
//#endregion
|
|
17983
17921
|
//#region ../theme-core/src/header/navDropdownSizing.ts
|
|
17984
17922
|
const NAV_DROPDOWN_MIN_WIDTH_REM = 12;
|
|
@@ -18574,129 +18512,6 @@ function applyAlpha(color, opacity) {
|
|
|
18574
18512
|
return color;
|
|
18575
18513
|
}
|
|
18576
18514
|
|
|
18577
|
-
//#endregion
|
|
18578
|
-
//#region ../theme-core/src/footer/effectiveNavLinkStyle.ts
|
|
18579
|
-
function effectiveFooterNavLinkStyle(footer) {
|
|
18580
|
-
if (!footer) return null;
|
|
18581
|
-
if (footer.navLinkStyle) return footer.navLinkStyle;
|
|
18582
|
-
const basePreset = getNavLinkPreset(footer.navStyle ?? "minimal");
|
|
18583
|
-
if (!basePreset) return null;
|
|
18584
|
-
return {
|
|
18585
|
-
...basePreset,
|
|
18586
|
-
fontWeight: footer.navWeight ?? basePreset.fontWeight,
|
|
18587
|
-
colorToken: footer.navColor?.trim() || basePreset.colorToken
|
|
18588
|
-
};
|
|
18589
|
-
}
|
|
18590
|
-
function footerForegroundCandidates(footer, proseHoverCandidate) {
|
|
18591
|
-
if (!footer) return {};
|
|
18592
|
-
const style = effectiveFooterNavLinkStyle(footer);
|
|
18593
|
-
return {
|
|
18594
|
-
text: footer.background?.textColor,
|
|
18595
|
-
link: style?.colorToken ?? footer.navColor ?? footer.background?.textColor,
|
|
18596
|
-
linkHover: navLinkOwnsHoverForeground(style) ? proseHoverCandidate : navLinkHoverColorCandidate(style)
|
|
18597
|
-
};
|
|
18598
|
-
}
|
|
18599
|
-
|
|
18600
|
-
//#endregion
|
|
18601
|
-
//#region ../theme-core/src/footer/generateFooterCss.ts
|
|
18602
|
-
/**
|
|
18603
|
-
* Generate CSS for footer navigation styling
|
|
18604
|
-
*
|
|
18605
|
-
* Similar to header nav but with independent configuration and no advanced effects
|
|
18606
|
-
*/
|
|
18607
|
-
function generateFooterCss(options) {
|
|
18608
|
-
const { themeId, theme } = options;
|
|
18609
|
-
const tokens = new TokenResolver(theme);
|
|
18610
|
-
const footer = theme.footer;
|
|
18611
|
-
const cssChunks = [];
|
|
18612
|
-
cssChunks.push(generateFooterNavLinkStyles(footer, themeId, tokens, theme));
|
|
18613
|
-
cssChunks.push(generateFooterLogoStyles(theme, themeId));
|
|
18614
|
-
cssChunks.push(generateFooterBottomTextLinkStyles(footer, themeId, tokens));
|
|
18615
|
-
return cssChunks.filter(Boolean).join("\n\n");
|
|
18616
|
-
}
|
|
18617
|
-
function generateFooterLogoStyles(theme, themeId) {
|
|
18618
|
-
const size = resolveFooterLogoSize(theme.footer, theme.header.logo);
|
|
18619
|
-
const height = footerLogoHeight(size);
|
|
18620
|
-
const scope = `:where([data-theme-scope="${themeId}"])`;
|
|
18621
|
-
return `
|
|
18622
|
-
${scope} .footer-logo img {
|
|
18623
|
-
width: auto;
|
|
18624
|
-
height: ${height};
|
|
18625
|
-
}
|
|
18626
|
-
`;
|
|
18627
|
-
}
|
|
18628
|
-
function resolveFooterLogoSize(footer, headerLogo) {
|
|
18629
|
-
const brandDrivenSize = footerLogoSizeFromHeaderLogo(headerLogo);
|
|
18630
|
-
return footer.logo?.maxHeight ?? brandDrivenSize ?? footer.logo?.size ?? "md";
|
|
18631
|
-
}
|
|
18632
|
-
function footerLogoSizeFromHeaderLogo(headerLogo) {
|
|
18633
|
-
const size = headerLogo?.size;
|
|
18634
|
-
switch (size) {
|
|
18635
|
-
case "compact": return "sm";
|
|
18636
|
-
case "standard": return "md";
|
|
18637
|
-
case "generous": return "lg";
|
|
18638
|
-
case "display": return "xl";
|
|
18639
|
-
case "auto":
|
|
18640
|
-
case undefined: return null;
|
|
18641
|
-
default: {
|
|
18642
|
-
const _exhaustive = size;
|
|
18643
|
-
return _exhaustive;
|
|
18644
|
-
}
|
|
18645
|
-
}
|
|
18646
|
-
}
|
|
18647
|
-
function footerLogoHeight(size) {
|
|
18648
|
-
switch (size) {
|
|
18649
|
-
case "sm": return "2.5rem";
|
|
18650
|
-
case "md": return "4rem";
|
|
18651
|
-
case "lg": return "5rem";
|
|
18652
|
-
case "xl": return "6rem";
|
|
18653
|
-
default: {
|
|
18654
|
-
const _exhaustive = size;
|
|
18655
|
-
return _exhaustive;
|
|
18656
|
-
}
|
|
18657
|
-
}
|
|
18658
|
-
}
|
|
18659
|
-
/**
|
|
18660
|
-
* Generate navigation link styles for footer
|
|
18661
|
-
*
|
|
18662
|
-
* Uses the composable NavLinkStyle system with backward compatibility for
|
|
18663
|
-
* legacy navStyle, navWeight, and navColor settings.
|
|
18664
|
-
*/
|
|
18665
|
-
function generateFooterNavLinkStyles(footer, themeId, tokens, theme) {
|
|
18666
|
-
const style = effectiveFooterNavLinkStyle(footer);
|
|
18667
|
-
if (!style) return "";
|
|
18668
|
-
return generateNavLinkCSS({
|
|
18669
|
-
themeId,
|
|
18670
|
-
tokens,
|
|
18671
|
-
theme,
|
|
18672
|
-
style,
|
|
18673
|
-
className: "footer-nav-link",
|
|
18674
|
-
surfaceDependent: true,
|
|
18675
|
-
surfaceRestingColor: footer.background?.contentOwner === siteChromeBackgroundOverrideOwner
|
|
18676
|
-
});
|
|
18677
|
-
}
|
|
18678
|
-
function generateFooterBottomTextLinkStyles(footer, themeId, tokens) {
|
|
18679
|
-
const style = footer.bottomTextLinkStyle;
|
|
18680
|
-
if (!style) return "";
|
|
18681
|
-
const scope = `:where([data-theme-scope="${themeId}"])`;
|
|
18682
|
-
const selectors = [`${scope} .block-site-footer [data-footer-region="bottom"] .rb-prose a`, `${scope} .block-siteFooter [data-footer-region="bottom"] .rb-prose a`];
|
|
18683
|
-
const baseRules = [];
|
|
18684
|
-
const decorationColorToken = style.decorationColorToken?.trim();
|
|
18685
|
-
if (decorationColorToken) {
|
|
18686
|
-
baseRules.push(`text-decoration-color: ${tokens.getColor(decorationColorToken)};`);
|
|
18687
|
-
}
|
|
18688
|
-
if (style.underline === true) {
|
|
18689
|
-
baseRules.push("text-decoration: underline;");
|
|
18690
|
-
} else if (style.underline === false) {
|
|
18691
|
-
baseRules.push("text-decoration: none;");
|
|
18692
|
-
}
|
|
18693
|
-
const cssChunks = [];
|
|
18694
|
-
if (baseRules.length > 0) {
|
|
18695
|
-
cssChunks.push(`\n${selectors.join(",\n")} {\n ${baseRules.join("\n ")}\n}\n`);
|
|
18696
|
-
}
|
|
18697
|
-
return cssChunks.join("\n");
|
|
18698
|
-
}
|
|
18699
|
-
|
|
18700
18515
|
//#endregion
|
|
18701
18516
|
//#region ../blocks/src/system/fields/backgroundContent.ts
|
|
18702
18517
|
/**
|
|
@@ -18817,7 +18632,12 @@ function resolveRuntimeSectionSurface(value, context, options) {
|
|
|
18817
18632
|
}
|
|
18818
18633
|
function arrangementSurfaceInk(foreground, context) {
|
|
18819
18634
|
if (context.data?._lookSlots === undefined) return {};
|
|
18820
|
-
|
|
18635
|
+
return surfaceInkStyles(foreground, context.theme.palette);
|
|
18636
|
+
}
|
|
18637
|
+
/** Decoration roles already resolved by the surface owner, shared with footer arrangements. */
|
|
18638
|
+
function surfaceInkStyles(foreground, palette) {
|
|
18639
|
+
if (foreground.kind === "unknown") return {};
|
|
18640
|
+
const decorations = surfaceDecorationColors(foreground, palette);
|
|
18821
18641
|
return {
|
|
18822
18642
|
"--rb-surface-muted-color": foreground.roles.muted ?? foreground.roles.text,
|
|
18823
18643
|
...decorations ? {
|
|
@@ -19517,51 +19337,50 @@ const boxStylesTransforms = [
|
|
|
19517
19337
|
|
|
19518
19338
|
//#endregion
|
|
19519
19339
|
//#region ../blocks/src/system/node/fragments/responsiveTwoColumn.ts
|
|
19520
|
-
|
|
19521
|
-
|
|
19522
|
-
|
|
19523
|
-
|
|
19524
|
-
|
|
19525
|
-
|
|
19526
|
-
|
|
19527
|
-
|
|
19528
|
-
|
|
19529
|
-
|
|
19530
|
-
|
|
19531
|
-
}],
|
|
19532
|
-
fallback: baseClass
|
|
19533
|
-
} } };
|
|
19534
|
-
if (gapFrom) {
|
|
19535
|
-
props$1.style = { gap: { $bind: {
|
|
19536
|
-
from: gapFrom,
|
|
19340
|
+
/** The shared two-column shell keeps Look hooks opt-in and absent for legacy content. */
|
|
19341
|
+
function responsiveTwoColumn(config$1) {
|
|
19342
|
+
return el("div", twoColumnProps(config$1), [twoColumnWrapper(config$1, "image", config$1.image), twoColumnWrapper(config$1, "text", config$1.text)]);
|
|
19343
|
+
}
|
|
19344
|
+
function twoColumnProps(config$1) {
|
|
19345
|
+
const base = `${config$1.containerClassName ?? "rb-flex rb-flex-col rb-md-flex-row"} ${config$1.gapFrom ? "" : config$1.gapClassName ?? "rb-gap-6"}`.trim();
|
|
19346
|
+
const fallback = config$1.gapFallback ?? "comfortable";
|
|
19347
|
+
return {
|
|
19348
|
+
...config$1.lookSlots ? lookSlot("frame") : {},
|
|
19349
|
+
className: { $bind: {
|
|
19350
|
+
from: config$1.imagePositionFrom,
|
|
19537
19351
|
transforms: [{
|
|
19538
|
-
id: "
|
|
19539
|
-
options: {
|
|
19352
|
+
id: "ui.twoColumnContainerClass",
|
|
19353
|
+
options: {
|
|
19354
|
+
base,
|
|
19355
|
+
reverseClass: "rb-md-flex-row-reverse"
|
|
19356
|
+
}
|
|
19540
19357
|
}],
|
|
19541
|
-
fallback:
|
|
19542
|
-
} }
|
|
19543
|
-
|
|
19544
|
-
|
|
19545
|
-
className: imageWrapperClassName,
|
|
19546
|
-
style: { flexBasis: { $bind: {
|
|
19547
|
-
from: ratioFrom,
|
|
19358
|
+
fallback: base
|
|
19359
|
+
} },
|
|
19360
|
+
...config$1.gapFrom ? { style: { gap: { $bind: {
|
|
19361
|
+
from: config$1.gapFrom,
|
|
19548
19362
|
transforms: [{
|
|
19549
|
-
id: "
|
|
19550
|
-
options: {
|
|
19363
|
+
id: "boxStyles.semanticGapValue",
|
|
19364
|
+
options: { fallback }
|
|
19551
19365
|
}],
|
|
19552
|
-
fallback:
|
|
19553
|
-
} } }
|
|
19554
|
-
}
|
|
19555
|
-
|
|
19366
|
+
fallback: GAP_VALUE_MAP[fallback]
|
|
19367
|
+
} } } } : {}
|
|
19368
|
+
};
|
|
19369
|
+
}
|
|
19370
|
+
function twoColumnWrapper(config$1, side, child) {
|
|
19371
|
+
const className = side === "image" ? config$1.imageWrapperClassName ?? "rb-w-full rb-shrink-0" : config$1.textWrapperClassName ?? "rb-w-full rb-min-w-0 rb-flex-1";
|
|
19372
|
+
return el("div", {
|
|
19373
|
+
...config$1.lookSlots ? lookSlot(side === "image" ? "media" : "copy") : {},
|
|
19374
|
+
className,
|
|
19556
19375
|
style: { flexBasis: { $bind: {
|
|
19557
|
-
from: ratioFrom,
|
|
19376
|
+
from: config$1.ratioFrom,
|
|
19558
19377
|
transforms: [{
|
|
19559
19378
|
id: "ui.twoColumnFlexBasis",
|
|
19560
|
-
options: { side
|
|
19379
|
+
options: { side }
|
|
19561
19380
|
}],
|
|
19562
19381
|
fallback: "50%"
|
|
19563
19382
|
} } }
|
|
19564
|
-
}, [
|
|
19383
|
+
}, [child]);
|
|
19565
19384
|
}
|
|
19566
19385
|
|
|
19567
19386
|
//#endregion
|
|
@@ -19800,6 +19619,50 @@ function headingDecoration({ bindFrom = defaultBindFrom, className } = {}) {
|
|
|
19800
19619
|
} } })], when(`${bindFrom}.family`));
|
|
19801
19620
|
}
|
|
19802
19621
|
|
|
19622
|
+
//#endregion
|
|
19623
|
+
//#region ../blocks/src/system/node/fragments/sectionHead.ts
|
|
19624
|
+
const recoverEmptyHeadingWhenActive = {
|
|
19625
|
+
kind: "recover-empty-when-active",
|
|
19626
|
+
placeholder: "Add heading"
|
|
19627
|
+
};
|
|
19628
|
+
const recoverEmptyDescriptionWhenActive = {
|
|
19629
|
+
kind: "recover-empty-when-active",
|
|
19630
|
+
placeholder: "Add description"
|
|
19631
|
+
};
|
|
19632
|
+
function sectionHeaderLayoutNodes(options = {}) {
|
|
19633
|
+
const headingNode$1 = text({
|
|
19634
|
+
as: "h2",
|
|
19635
|
+
...lookSlot("heading")
|
|
19636
|
+
}, bind("content.heading"), when("content.heading", { authoringPresence: recoverEmptyHeadingWhenActive }));
|
|
19637
|
+
const descriptionNode = richText({
|
|
19638
|
+
className: "rb-prose rb-max-w-none",
|
|
19639
|
+
...lookSlot("intro")
|
|
19640
|
+
}, bind("content.description"), when("content.description", { authoringPresence: recoverEmptyDescriptionWhenActive }));
|
|
19641
|
+
if (options.splitClassName) {
|
|
19642
|
+
return [el("div", {
|
|
19643
|
+
className: options.splitClassName,
|
|
19644
|
+
...lookSlot("head")
|
|
19645
|
+
}, [headingNode$1, descriptionNode])];
|
|
19646
|
+
}
|
|
19647
|
+
return [headingNode$1, descriptionNode];
|
|
19648
|
+
}
|
|
19649
|
+
/** Shared optional section copy. Existing consumers keep their description ID. */
|
|
19650
|
+
const sectionHeaderFields = (defaultHeading, introLabel = "Description") => [{
|
|
19651
|
+
id: "heading",
|
|
19652
|
+
type: "text",
|
|
19653
|
+
label: "Heading",
|
|
19654
|
+
description: "Main heading for the section",
|
|
19655
|
+
required: false,
|
|
19656
|
+
multiline: false,
|
|
19657
|
+
...defaultHeading === undefined ? {} : { defaultValue: defaultHeading }
|
|
19658
|
+
}, {
|
|
19659
|
+
id: "description",
|
|
19660
|
+
type: "richText",
|
|
19661
|
+
label: introLabel,
|
|
19662
|
+
description: "Optional introductory text",
|
|
19663
|
+
required: false
|
|
19664
|
+
}];
|
|
19665
|
+
|
|
19803
19666
|
//#endregion
|
|
19804
19667
|
//#region ../blocks/src/system/fragments/library/heroCopy.ts
|
|
19805
19668
|
const heroCopyFragment = defineFragment({
|
|
@@ -20720,8 +20583,19 @@ const formCopyFragment = defineFragment({
|
|
|
20720
20583
|
}],
|
|
20721
20584
|
layout: [text({
|
|
20722
20585
|
as: "h2",
|
|
20586
|
+
...lookSlot("heading"),
|
|
20723
20587
|
className: "form-copy-title"
|
|
20724
|
-
}, when("content.title"
|
|
20588
|
+
}, when("content.title", { authoringPresence: {
|
|
20589
|
+
kind: "recover-empty-when-active",
|
|
20590
|
+
placeholder: "Add heading"
|
|
20591
|
+
} }), bind("content.title")), richText({
|
|
20592
|
+
className: "form-copy-intro rb-prose rb-max-w-none",
|
|
20593
|
+
...lookSlot("intro"),
|
|
20594
|
+
leadParagraphSlot: { $bind: { from: "content._lookSlots.lede" } }
|
|
20595
|
+
}, when("content.intro", { authoringPresence: {
|
|
20596
|
+
kind: "recover-empty-when-active",
|
|
20597
|
+
placeholder: "Add introduction"
|
|
20598
|
+
} }), bind("content.intro"))]
|
|
20725
20599
|
});
|
|
20726
20600
|
|
|
20727
20601
|
//#endregion
|
|
@@ -20774,6 +20648,7 @@ const formEmbedFragment = defineFragment({
|
|
|
20774
20648
|
}
|
|
20775
20649
|
],
|
|
20776
20650
|
layout: [form(withApiBindings({
|
|
20651
|
+
lookSlots: { $bind: { from: "content._lookSlots" } },
|
|
20777
20652
|
spamProtectionEnabled: { $bind: { from: "$root.spamProtectionEnabled" } },
|
|
20778
20653
|
submitLabel: { $bind: { from: "submitLabel" } },
|
|
20779
20654
|
successMessage: { $bind: { from: "successMessage" } }
|
|
@@ -22176,8 +22051,18 @@ const newsletterCopyFragment = defineFragment({
|
|
|
22176
22051
|
}],
|
|
22177
22052
|
layout: [text({
|
|
22178
22053
|
as: "h2",
|
|
22179
|
-
className: "newsletter-copy-title"
|
|
22180
|
-
|
|
22054
|
+
className: "newsletter-copy-title",
|
|
22055
|
+
...lookSlot("heading")
|
|
22056
|
+
}, when("content.title", { authoringPresence: {
|
|
22057
|
+
kind: "recover-empty-when-active",
|
|
22058
|
+
placeholder: "Add heading"
|
|
22059
|
+
} }), bind("content.title")), richText({
|
|
22060
|
+
className: "newsletter-copy-subtitle rb-prose rb-max-w-none",
|
|
22061
|
+
...lookSlot("intro")
|
|
22062
|
+
}, when("content.subtitle", { authoringPresence: {
|
|
22063
|
+
kind: "recover-empty-when-active",
|
|
22064
|
+
placeholder: "Add introduction"
|
|
22065
|
+
} }), bind("content.subtitle"))]
|
|
22181
22066
|
});
|
|
22182
22067
|
|
|
22183
22068
|
//#endregion
|
|
@@ -22246,6 +22131,7 @@ const newsletterFormFragment = defineFragment({
|
|
|
22246
22131
|
}
|
|
22247
22132
|
],
|
|
22248
22133
|
layout: [el("newsletter-form", withApiBindings({
|
|
22134
|
+
lookSlots: { $bind: { from: "content._lookSlots" } },
|
|
22249
22135
|
source: { $bind: {
|
|
22250
22136
|
from: "mailingListSource",
|
|
22251
22137
|
fallback: "block"
|
|
@@ -22424,6 +22310,10 @@ function listLookSlot(presentation, slot) {
|
|
|
22424
22310
|
...surface === undefined ? { "data-surface": "section" } : resolvedItemSurfaceProps(surface, slot)
|
|
22425
22311
|
};
|
|
22426
22312
|
}
|
|
22313
|
+
/** Control kind is semantic; legacy markup receives no extra attributes. */
|
|
22314
|
+
function listLookControl(presentation, kind) {
|
|
22315
|
+
return presentation.lookSlots === undefined ? {} : { "data-control": kind };
|
|
22316
|
+
}
|
|
22427
22317
|
function resolvedSurfaceBackground(surface, token) {
|
|
22428
22318
|
const color = token.startsWith("#") ? token : `rgb(var(--tb-${token}))`;
|
|
22429
22319
|
const base = surface.kind === "owned" ? surface.tintBase : undefined;
|
|
@@ -24560,6 +24450,26 @@ const formattingTransforms = [
|
|
|
24560
24450
|
mapTokenTransform
|
|
24561
24451
|
];
|
|
24562
24452
|
|
|
24453
|
+
//#endregion
|
|
24454
|
+
//#region ../blocks/src/system/transforms/registry/footerArrangement.ts
|
|
24455
|
+
const footerBrandArrangementTransform = {
|
|
24456
|
+
id: "layout.footerBrandArrangement",
|
|
24457
|
+
kind: "string",
|
|
24458
|
+
run: (value) => {
|
|
24459
|
+
const module$1 = asPartialObject(value);
|
|
24460
|
+
return module$1?.kind === "brand" ? module$1.slots ? "centred" : "row" : undefined;
|
|
24461
|
+
}
|
|
24462
|
+
};
|
|
24463
|
+
const footerModuleInkStyleTransform = {
|
|
24464
|
+
id: "layout.footerModuleInkStyle",
|
|
24465
|
+
kind: "formatter",
|
|
24466
|
+
run: (value, options) => value === "centred" ? undefined : textColorStyle(asPartialObject(options)?.opacity === 70 ? "text/70" : "text/80")
|
|
24467
|
+
};
|
|
24468
|
+
/** A centred base without authored bar paint inherits its measured surface line. */
|
|
24469
|
+
function footerBottomBarBorderColorStyle(footer) {
|
|
24470
|
+
return footer?.variant === "centred" && !footer.bottomBar ? { borderColor: "var(--rb-surface-line-color)" } : borderColorStyle(footer?.bottomBar?.borderTop?.colorToken ?? "border");
|
|
24471
|
+
}
|
|
24472
|
+
|
|
24563
24473
|
//#endregion
|
|
24564
24474
|
//#region ../theme-core/src/siteChromePlacement.ts
|
|
24565
24475
|
const SITE_CHROME_PLACEMENT_CLASSES = [
|
|
@@ -24903,6 +24813,9 @@ const footerRootStyleTransform = {
|
|
|
24903
24813
|
}
|
|
24904
24814
|
}
|
|
24905
24815
|
styleParts.push(resolvedForegroundStyle(resolveFooterRootForeground(footer, context.theme.palette, context.proseHoverCandidate)));
|
|
24816
|
+
if (footer?.variant === "centred") {
|
|
24817
|
+
styleParts.push(surfaceInkStyles(resolveFooterRootForeground(footer, context.theme.palette, context.proseHoverCandidate), context.theme.palette));
|
|
24818
|
+
}
|
|
24906
24819
|
styleParts.push(borderColorStyle("border"));
|
|
24907
24820
|
return mergeStyles(...styleParts);
|
|
24908
24821
|
}
|
|
@@ -24967,7 +24880,7 @@ const footerBottomBarStyleTransform = {
|
|
|
24967
24880
|
run: (value, _options, context) => {
|
|
24968
24881
|
const footer = asPartialObject(value);
|
|
24969
24882
|
const bottomBar = footer?.bottomBar;
|
|
24970
|
-
return mergeStyles(bottomBar?.background?.type === "color" ? backgroundColorStyle(bottomBar.background.color ?? "surface") : undefined,
|
|
24883
|
+
return mergeStyles(bottomBar?.background?.type === "color" ? backgroundColorStyle(bottomBar.background.color ?? "surface") : undefined, footerBottomBarBorderColorStyle(footer), footerBottomBarBorderWidthStyle(bottomBar?.borderTop?.width), footerBottomBarForegroundStyle(footer, context.theme.palette));
|
|
24971
24884
|
}
|
|
24972
24885
|
};
|
|
24973
24886
|
function footerBottomBarForegroundStyle(footer, palette) {
|
|
@@ -24994,27 +24907,7 @@ function measuredFooterBackdrop(footer, palette) {
|
|
|
24994
24907
|
const foreground = resolveFooterRootForeground(footer, palette);
|
|
24995
24908
|
return foreground.kind === "known" && foreground.provenance.kind === "measured" ? foreground.provenance.backdropHex : null;
|
|
24996
24909
|
}
|
|
24997
|
-
const
|
|
24998
|
-
base: z.string().optional(),
|
|
24999
|
-
reverseClass: z.string().optional()
|
|
25000
|
-
});
|
|
25001
|
-
const footerSplitMainClassTransform = {
|
|
25002
|
-
id: "layout.footerSplitMainClass",
|
|
25003
|
-
kind: "string",
|
|
25004
|
-
summary: "Compose split-footer main row classes from footer logo placement",
|
|
25005
|
-
schema: footerSplitMainClassSchema,
|
|
25006
|
-
run: (value, options) => {
|
|
25007
|
-
const logo = asPartialObject(value);
|
|
25008
|
-
const placement = logo?.placement ?? "right";
|
|
25009
|
-
const shouldPlaceLogoFirst = placement === "left" || placement === "above";
|
|
25010
|
-
const baseClass = shouldPlaceLogoFirst ? "rb-flex rb-w-full rb-flex-col rb-items-start rb-justify-end rb-gap-8 rb-md-flex-row rb-md-items-end" : "rb-flex rb-w-full rb-flex-col rb-items-start rb-justify-between rb-gap-8 rb-md-flex-row rb-md-items-end";
|
|
25011
|
-
return joinClasses$5([options.base ?? baseClass, shouldPlaceLogoFirst ? options.reverseClass ?? "rb-md-flex-row-reverse" : null]);
|
|
25012
|
-
}
|
|
25013
|
-
};
|
|
25014
|
-
const footerLogoClassSchema = z.object({
|
|
25015
|
-
base: z.string().optional(),
|
|
25016
|
-
requireExplicitShow: z.boolean().optional()
|
|
25017
|
-
});
|
|
24910
|
+
const footerLogoClassSchema = z.object({ base: z.string().optional() });
|
|
25018
24911
|
const footerLogoClassTransform = {
|
|
25019
24912
|
id: "layout.footerLogoClass",
|
|
25020
24913
|
kind: "string",
|
|
@@ -25023,38 +24916,8 @@ const footerLogoClassTransform = {
|
|
|
25023
24916
|
run: (value, options) => {
|
|
25024
24917
|
const logo = asPartialObject(value);
|
|
25025
24918
|
const align = logo?.align ?? "end";
|
|
25026
|
-
const hiddenClass = options.requireExplicitShow ? logo?.showLogo === true ? null : "rb-hidden" : logo?.showLogo === false ? "rb-hidden" : null;
|
|
25027
24919
|
const selfAlignClass = align === "start" ? "rb-self-start rb-text-left" : align === "center" ? "rb-self-center rb-text-center" : "rb-self-end rb-text-right";
|
|
25028
|
-
return joinClasses$5([
|
|
25029
|
-
options.base ?? "footer-logo rb-inline-flex rb-items-center rb-justify-end rb-gap-3 rb-no-underline rb-transition-opacity rb-hover-opacity-80",
|
|
25030
|
-
selfAlignClass,
|
|
25031
|
-
hiddenClass
|
|
25032
|
-
]);
|
|
25033
|
-
}
|
|
25034
|
-
};
|
|
25035
|
-
const footerLogoMediaClassSchema = z.object({ base: z.string().optional() });
|
|
25036
|
-
const footerLogoMediaClassTransform = {
|
|
25037
|
-
id: "layout.footerLogoMediaClass",
|
|
25038
|
-
kind: "string",
|
|
25039
|
-
summary: "Compose footer logo image classes from size controls",
|
|
25040
|
-
schema: footerLogoMediaClassSchema,
|
|
25041
|
-
run: (_value, options) => {
|
|
25042
|
-
return joinClasses$5([options.base ?? "rb-w-auto"]);
|
|
25043
|
-
}
|
|
25044
|
-
};
|
|
25045
|
-
function shouldShowFooterLogoText(footer) {
|
|
25046
|
-
if (!footer) return false;
|
|
25047
|
-
const explicit = footer.logo?.showLogoText;
|
|
25048
|
-
const legacy = footer.showLogoText === true;
|
|
25049
|
-
return explicit === true || explicit === undefined && legacy;
|
|
25050
|
-
}
|
|
25051
|
-
const footerLogoTextVisibleTransform = {
|
|
25052
|
-
id: "layout.footerLogoTextVisible",
|
|
25053
|
-
kind: "formatter",
|
|
25054
|
-
summary: "Return whether footer logo text should render",
|
|
25055
|
-
run: (value) => {
|
|
25056
|
-
const footer = asPartialObject(value);
|
|
25057
|
-
return shouldShowFooterLogoText(footer);
|
|
24920
|
+
return joinClasses$5([options.base ?? "footer-logo rb-inline-flex rb-items-center rb-justify-end rb-gap-3 rb-no-underline rb-transition-opacity rb-hover-opacity-80", selfAlignClass]);
|
|
25058
24921
|
}
|
|
25059
24922
|
};
|
|
25060
24923
|
function extractBackgroundColorToken(background, fallback) {
|
|
@@ -25079,13 +24942,12 @@ const layoutTransforms = [
|
|
|
25079
24942
|
headerRootStyleTransform,
|
|
25080
24943
|
headerSectionBackgroundTransform,
|
|
25081
24944
|
footerRootStyleTransform,
|
|
24945
|
+
footerModuleInkStyleTransform,
|
|
24946
|
+
footerBrandArrangementTransform,
|
|
25082
24947
|
footerBottomBarClassTransform,
|
|
25083
24948
|
footerBottomBarContainerClassTransform,
|
|
25084
24949
|
footerBottomBarStyleTransform,
|
|
25085
|
-
|
|
25086
|
-
footerLogoClassTransform,
|
|
25087
|
-
footerLogoMediaClassTransform,
|
|
25088
|
-
footerLogoTextVisibleTransform
|
|
24950
|
+
footerLogoClassTransform
|
|
25089
24951
|
];
|
|
25090
24952
|
|
|
25091
24953
|
//#endregion
|
|
@@ -26153,7 +26015,7 @@ function extractRouteHref(candidate, stageInput = "published") {
|
|
|
26153
26015
|
return trimmed.length > 0 ? trimmed : null;
|
|
26154
26016
|
}
|
|
26155
26017
|
if (!isRouteRecord(candidate)) return null;
|
|
26156
|
-
const fields$
|
|
26018
|
+
const fields$1 = normalizeRenderStage(stageInput) === "preview" ? [
|
|
26157
26019
|
"draftPath",
|
|
26158
26020
|
"path",
|
|
26159
26021
|
"href",
|
|
@@ -26163,7 +26025,7 @@ function extractRouteHref(candidate, stageInput = "published") {
|
|
|
26163
26025
|
"href",
|
|
26164
26026
|
"url"
|
|
26165
26027
|
];
|
|
26166
|
-
for (const field of fields$
|
|
26028
|
+
for (const field of fields$1) {
|
|
26167
26029
|
const value = candidate[field];
|
|
26168
26030
|
if (typeof value === "string" && value.trim().length > 0) return value.trim();
|
|
26169
26031
|
}
|
|
@@ -27031,21 +26893,14 @@ function groupItemsByDate(items, accessors) {
|
|
|
27031
26893
|
*
|
|
27032
26894
|
* Sites don't store a locale, and every public word around a date is English,
|
|
27033
26895
|
* so the only open question is which English conventions to follow: day or
|
|
27034
|
-
* month first
|
|
26896
|
+
* month first. The site's time zone is the one
|
|
27035
26897
|
* fact every site carries about where it is. It is the site's, never an
|
|
27036
26898
|
* event's: a venue left at UTC must not turn a UK site's dates American.
|
|
27037
26899
|
* Anywhere this can't place (UTC, the Americas, Asia) keeps US English, which
|
|
27038
26900
|
* is what these helpers wrote before sites were placed at all.
|
|
27039
26901
|
*/
|
|
27040
26902
|
function eventDateLocale(siteTimeZone) {
|
|
27041
|
-
|
|
27042
|
-
if (siteTimeZone === "Europe/Dublin") return "en-IE";
|
|
27043
|
-
if (siteTimeZone.startsWith("Europe/")) return "en-GB";
|
|
27044
|
-
if (siteTimeZone.startsWith("Australia/")) return "en-AU";
|
|
27045
|
-
if (siteTimeZone === "Pacific/Auckland" || siteTimeZone === "Pacific/Chatham") {
|
|
27046
|
-
return "en-NZ";
|
|
27047
|
-
}
|
|
27048
|
-
return "en-US";
|
|
26903
|
+
return inferSiteDateLocale(siteTimeZone);
|
|
27049
26904
|
}
|
|
27050
26905
|
/**
|
|
27051
26906
|
* Formatting options for an event's dates: the times in the event's own zone,
|
|
@@ -28142,7 +27997,7 @@ const defaultTransforms = createTransformRegistry(builtinTransformDefinitions);
|
|
|
28142
27997
|
|
|
28143
27998
|
//#endregion
|
|
28144
27999
|
//#region ../blocks/src/primitives/layout/Section.tsx
|
|
28145
|
-
const Section = (0, import_react.forwardRef)(function Section$1({ as: Comp = "section", children, background, className = "", style, "data-slot": dataSlot, "data-surface": dataSurface }, ref) {
|
|
28000
|
+
const Section = (0, import_react.forwardRef)(function Section$1({ as: Comp = "section", children, background, className = "", style, "data-slot": dataSlot, "data-arrangement": dataArrangement, "data-surface": dataSurface }, ref) {
|
|
28146
28001
|
const alwaysClass = clsx_default("rb-relative rb-isolate rb-overflow-visible", className);
|
|
28147
28002
|
const backgroundStyle = typeof background === "string" && background.trim().length > 0 ? backgroundColorStyle(background.trim()) : undefined;
|
|
28148
28003
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Comp, {
|
|
@@ -28151,6 +28006,7 @@ const Section = (0, import_react.forwardRef)(function Section$1({ as: Comp = "se
|
|
|
28151
28006
|
style: mergeStyles(backgroundStyle, style),
|
|
28152
28007
|
"data-slot": dataSlot ?? "section",
|
|
28153
28008
|
"data-surface": dataSurface,
|
|
28009
|
+
"data-arrangement": dataArrangement,
|
|
28154
28010
|
children
|
|
28155
28011
|
});
|
|
28156
28012
|
});
|
|
@@ -28697,7 +28553,7 @@ function normalizeRel(target, rel) {
|
|
|
28697
28553
|
tokens.add("noreferrer");
|
|
28698
28554
|
return Array.from(tokens).join(" ");
|
|
28699
28555
|
}
|
|
28700
|
-
function renderMarks(text$1, marks, key,
|
|
28556
|
+
function renderMarks(text$1, marks, key, context) {
|
|
28701
28557
|
if (!marks || marks.length === 0) return text$1;
|
|
28702
28558
|
return marks.reduce((acc, mark) => {
|
|
28703
28559
|
switch (mark.type) {
|
|
@@ -28705,25 +28561,66 @@ function renderMarks(text$1, marks, key, linkTarget) {
|
|
|
28705
28561
|
case "strong": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("strong", { children: acc }, `${key}-b`);
|
|
28706
28562
|
case "italic":
|
|
28707
28563
|
case "em": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("em", { children: acc }, `${key}-i`);
|
|
28708
|
-
case "link":
|
|
28709
|
-
if (typeof acc === "string" && acc.length === 0) return acc;
|
|
28710
|
-
const attrs = mark.attrs ?? {};
|
|
28711
|
-
const href = sanitizeHref(attrs.href);
|
|
28712
|
-
if (!href) return acc;
|
|
28713
|
-
const storedTarget = typeof attrs.target === "string" && attrs.target.trim().length > 0 ? attrs.target.trim() : undefined;
|
|
28714
|
-
const target = linkTarget === "new-tab" ? "_blank" : storedTarget;
|
|
28715
|
-
const rel = typeof attrs.rel === "string" ? attrs.rel : undefined;
|
|
28716
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", {
|
|
28717
|
-
href,
|
|
28718
|
-
target,
|
|
28719
|
-
rel: normalizeRel(target, rel),
|
|
28720
|
-
children: acc
|
|
28721
|
-
}, `${key}-l`);
|
|
28722
|
-
}
|
|
28564
|
+
case "link": return renderLinkMark(mark, acc, key, context);
|
|
28723
28565
|
default: return acc;
|
|
28724
28566
|
}
|
|
28725
28567
|
}, text$1);
|
|
28726
28568
|
}
|
|
28569
|
+
function richTextLinkAttributes(mark, mode) {
|
|
28570
|
+
const attrs = mark.attrs ?? {};
|
|
28571
|
+
const href = sanitizeHref(attrs.href);
|
|
28572
|
+
if (!href) return null;
|
|
28573
|
+
const storedTarget = typeof attrs.target === "string" && attrs.target.trim().length > 0 ? attrs.target.trim() : undefined;
|
|
28574
|
+
const target = mode === "new-tab" ? "_blank" : storedTarget;
|
|
28575
|
+
const rel = typeof attrs.rel === "string" ? attrs.rel : undefined;
|
|
28576
|
+
return {
|
|
28577
|
+
href,
|
|
28578
|
+
target,
|
|
28579
|
+
rel: normalizeRel(target, rel)
|
|
28580
|
+
};
|
|
28581
|
+
}
|
|
28582
|
+
function renderLinkMark(mark, text$1, key, context) {
|
|
28583
|
+
if (typeof text$1 === "string" && text$1.length === 0) return text$1;
|
|
28584
|
+
const attributes = richTextLinkAttributes(mark, context.linkTarget);
|
|
28585
|
+
return attributes ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", {
|
|
28586
|
+
...attributes,
|
|
28587
|
+
...listLookControl(context, "link"),
|
|
28588
|
+
children: text$1
|
|
28589
|
+
}, `${key}-l`) : text$1;
|
|
28590
|
+
}
|
|
28591
|
+
function renderDoc(node, key, context) {
|
|
28592
|
+
if (!node || !node.type) return null;
|
|
28593
|
+
const children = node.content?.map((child, index) => renderDoc(child, `${key}-${index}`, context));
|
|
28594
|
+
switch (node.type) {
|
|
28595
|
+
case "doc": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children });
|
|
28596
|
+
case "paragraph": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { children: children ?? renderMarks(node.text ?? "", node.marks, key, context) }, key);
|
|
28597
|
+
case "heading": return renderHeading(node, key, children, context);
|
|
28598
|
+
case "blockquote": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("blockquote", {
|
|
28599
|
+
...listLookSlot(context, "quote"),
|
|
28600
|
+
children
|
|
28601
|
+
}, key);
|
|
28602
|
+
case "image": return renderRichTextImage(node, key, context);
|
|
28603
|
+
default: return renderSimpleNode(node, key, children, context);
|
|
28604
|
+
}
|
|
28605
|
+
}
|
|
28606
|
+
function renderHeading(node, key, children, context) {
|
|
28607
|
+
const level = Math.min(Math.max(Number(node.attrs?.level ?? 2), 1), 6);
|
|
28608
|
+
return import_react.createElement(`h${level}`, {
|
|
28609
|
+
key,
|
|
28610
|
+
...level === 2 ? listLookSlot(context, "heading") : {}
|
|
28611
|
+
}, children);
|
|
28612
|
+
}
|
|
28613
|
+
function renderSimpleNode(node, key, children, context) {
|
|
28614
|
+
switch (node.type) {
|
|
28615
|
+
case "bulletList": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", { children }, key);
|
|
28616
|
+
case "orderedList": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ol", { children }, key);
|
|
28617
|
+
case "listItem": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children }, key);
|
|
28618
|
+
case "horizontalRule": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("hr", {}, key);
|
|
28619
|
+
case "hardBreak": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("br", {}, key);
|
|
28620
|
+
case "text": return renderMarks(node.text ?? "", node.marks, key, context);
|
|
28621
|
+
default: return null;
|
|
28622
|
+
}
|
|
28623
|
+
}
|
|
28727
28624
|
function richTextImageOptions(width, height) {
|
|
28728
28625
|
if (width) return {
|
|
28729
28626
|
width,
|
|
@@ -28755,7 +28652,7 @@ function renderRichTextImage(node, key, context) {
|
|
|
28755
28652
|
const attrs = node.attrs ?? {};
|
|
28756
28653
|
const width = parseDimension(attrs.width);
|
|
28757
28654
|
const height = parseDimension(attrs.height);
|
|
28758
|
-
const src = resolveRichTextImageSource(attrs, width, height, context);
|
|
28655
|
+
const src = resolveRichTextImageSource(attrs, width, height, context.imageResolveContext);
|
|
28759
28656
|
if (!src) return null;
|
|
28760
28657
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
28761
28658
|
src,
|
|
@@ -28764,37 +28661,27 @@ function renderRichTextImage(node, key, context) {
|
|
|
28764
28661
|
width,
|
|
28765
28662
|
height,
|
|
28766
28663
|
loading: "lazy",
|
|
28767
|
-
decoding: "async"
|
|
28664
|
+
decoding: "async",
|
|
28665
|
+
...listLookSlot(context, "photo")
|
|
28768
28666
|
}, key);
|
|
28769
28667
|
}
|
|
28770
|
-
|
|
28771
|
-
|
|
28772
|
-
|
|
28773
|
-
|
|
28774
|
-
|
|
28775
|
-
|
|
28776
|
-
|
|
28777
|
-
|
|
28778
|
-
case "heading": {
|
|
28779
|
-
const level = Math.min(Math.max(node.attrs?.level ?? 2, 1), 6);
|
|
28780
|
-
const headingTag = `h${level}`;
|
|
28781
|
-
return import_react.createElement(headingTag, { key }, children);
|
|
28782
|
-
}
|
|
28783
|
-
case "bulletList": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", { children }, key);
|
|
28784
|
-
case "orderedList": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ol", { children }, key);
|
|
28785
|
-
case "listItem": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children }, key);
|
|
28786
|
-
case "blockquote": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("blockquote", { children }, key);
|
|
28787
|
-
case "horizontalRule": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("hr", {}, key);
|
|
28788
|
-
case "hardBreak": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("br", {}, key);
|
|
28789
|
-
case "image": return renderRichTextImage(node, key, imageResolveContext);
|
|
28790
|
-
case "text": return renderMarks(node.text ?? "", node.marks, key, linkTarget);
|
|
28791
|
-
default: return null;
|
|
28792
|
-
}
|
|
28668
|
+
/** Mark meaning in the renderer, rather than choosing ink with a positional CSS rule. */
|
|
28669
|
+
function renderRichTextContent(doc, context, leadSlot) {
|
|
28670
|
+
if (!leadSlot) return renderDoc(doc, "doc", context);
|
|
28671
|
+
const leadIndex = doc.content?.findIndex((node) => node.type === "paragraph");
|
|
28672
|
+
return doc.content?.map((node, index) => {
|
|
28673
|
+
const rendered = renderDoc(node, `doc-${index}`, context);
|
|
28674
|
+
return index === leadIndex && import_react.isValidElement(rendered) ? import_react.cloneElement(rendered, { "data-slot": leadSlot }) : rendered;
|
|
28675
|
+
});
|
|
28793
28676
|
}
|
|
28794
28677
|
const DEFAULT_RICH_TEXT_CLASS = "rb-prose rb-max-w-none";
|
|
28795
|
-
function RichText$1({ as: Comp = "div", className, doc, path: path$4, style, "data-slot": dataSlot, "data-surface": dataSurface, linkTarget = "stored" }) {
|
|
28678
|
+
function RichText$1({ as: Comp = "div", className, doc, path: path$4, style, "data-slot": dataSlot, "data-surface": dataSurface, linkTarget = "stored", leadParagraphSlot, lookSlots }) {
|
|
28796
28679
|
const imageResolveContext = getCurrentResolveImageUrlContext() ?? null;
|
|
28797
|
-
const content = doc ?
|
|
28680
|
+
const content = doc ? renderRichTextContent(doc, {
|
|
28681
|
+
imageResolveContext,
|
|
28682
|
+
linkTarget,
|
|
28683
|
+
lookSlots
|
|
28684
|
+
}, leadParagraphSlot) : null;
|
|
28798
28685
|
const dataAttributes = path$4 ? { "data-builder-richtext": path$4 } : undefined;
|
|
28799
28686
|
const resolvedClassName = className?.trim() || DEFAULT_RICH_TEXT_CLASS;
|
|
28800
28687
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Comp, {
|
|
@@ -34483,9 +34370,9 @@ function createFieldIds(idPrefix, suffixes) {
|
|
|
34483
34370
|
for (const field of Object.keys(suffixes)) ids[field] = `${idPrefix}-${suffixes[field]}`;
|
|
34484
34371
|
return ids;
|
|
34485
34372
|
}
|
|
34486
|
-
function clearFieldErrors(fieldErrors, fields$
|
|
34373
|
+
function clearFieldErrors(fieldErrors, fields$1) {
|
|
34487
34374
|
const next = { ...fieldErrors };
|
|
34488
|
-
for (const field of fields$
|
|
34375
|
+
for (const field of fields$1) delete next[field];
|
|
34489
34376
|
return next;
|
|
34490
34377
|
}
|
|
34491
34378
|
function clearFieldError(fieldErrors, field) {
|
|
@@ -34498,8 +34385,8 @@ function clearNullableFieldError(fieldErrors, field) {
|
|
|
34498
34385
|
[field]: null
|
|
34499
34386
|
};
|
|
34500
34387
|
}
|
|
34501
|
-
function clearNullableFieldErrors(fieldErrors, fields$
|
|
34502
|
-
return fields$
|
|
34388
|
+
function clearNullableFieldErrors(fieldErrors, fields$1) {
|
|
34389
|
+
return fields$1.reduce((nextErrors, field) => clearNullableFieldError(nextErrors, field), fieldErrors);
|
|
34503
34390
|
}
|
|
34504
34391
|
function normalizeApiFieldPath(field) {
|
|
34505
34392
|
return field.replace(/^body\./, "");
|
|
@@ -38154,7 +38041,7 @@ function buildOrderConfirmationContent(input) {
|
|
|
38154
38041
|
settlement: input.settlement,
|
|
38155
38042
|
instalmentPlan: input.instalmentPlan,
|
|
38156
38043
|
formatCurrencyAmount: input.formatters.formatCurrencyAmount,
|
|
38157
|
-
|
|
38044
|
+
formatPaymentDueDate: input.formatters.formatPaymentDueDate
|
|
38158
38045
|
}) : confirmationCopy.introText;
|
|
38159
38046
|
const orderReceiptDetails = {
|
|
38160
38047
|
orderNumber: input.order.orderNumber,
|
|
@@ -38254,7 +38141,7 @@ function resolveInstalmentPlanIntroText(input) {
|
|
|
38254
38141
|
return `You've paid ${paidToday} today.`;
|
|
38255
38142
|
}
|
|
38256
38143
|
if (input.instalmentPlan.rows.filter((row) => row.phaseKind === "scheduled").length === 1) {
|
|
38257
|
-
return `You've paid ${paidToday} today. The remaining ${input.formatCurrencyAmount(firstFutureInstalment.amountCents, input.order.currency)} will be taken on ${input.
|
|
38144
|
+
return `You've paid ${paidToday} today. The remaining ${input.formatCurrencyAmount(firstFutureInstalment.amountCents, input.order.currency)} will be taken on ${input.formatPaymentDueDate(firstFutureInstalment.dueAt)}.`;
|
|
38258
38145
|
}
|
|
38259
38146
|
return `You've paid ${paidToday} today. The rest will be taken automatically on the dates below.`;
|
|
38260
38147
|
}
|
|
@@ -40290,10 +40177,10 @@ function formatBookingReservedFieldCollisionMessages(collisions) {
|
|
|
40290
40177
|
* use exact case-sensitive matching because the runtime stores JavaScript
|
|
40291
40178
|
* object keys without case normalization.
|
|
40292
40179
|
*/
|
|
40293
|
-
function findBookingFormDataReservedFieldCollisions(fields$
|
|
40180
|
+
function findBookingFormDataReservedFieldCollisions(fields$1) {
|
|
40294
40181
|
const seen = new Set();
|
|
40295
40182
|
const collisions = [];
|
|
40296
|
-
for (const field of fields$
|
|
40183
|
+
for (const field of fields$1) {
|
|
40297
40184
|
if (!isBookingFormDataReservedKey(field.id) || seen.has(field.id)) {
|
|
40298
40185
|
continue;
|
|
40299
40186
|
}
|
|
@@ -40327,7 +40214,7 @@ function projectSelectedAppointmentConsentIntoForm(form$1, selectedConsent) {
|
|
|
40327
40214
|
if (!form$1) return null;
|
|
40328
40215
|
const sourceFields = form$1.schema?.fields ?? [];
|
|
40329
40216
|
const baseFields = sourceFields.filter((field) => field.type !== "booking_requirement_consent");
|
|
40330
|
-
const fields$
|
|
40217
|
+
const fields$1 = selectedConsent.kind === "required-for-selected-service" ? [...baseFields, selectedConsent.field] : baseFields;
|
|
40331
40218
|
if (selectedConsent.kind === "not-applicable" && baseFields.length === sourceFields.length) {
|
|
40332
40219
|
return form$1;
|
|
40333
40220
|
}
|
|
@@ -40335,7 +40222,7 @@ function projectSelectedAppointmentConsentIntoForm(form$1, selectedConsent) {
|
|
|
40335
40222
|
...form$1,
|
|
40336
40223
|
schema: {
|
|
40337
40224
|
...form$1.schema,
|
|
40338
|
-
fields: fields$
|
|
40225
|
+
fields: fields$1
|
|
40339
40226
|
}
|
|
40340
40227
|
};
|
|
40341
40228
|
}
|
|
@@ -40519,10 +40406,10 @@ function normalizeBookingServices(services) {
|
|
|
40519
40406
|
function normalizeBookingSchema(value) {
|
|
40520
40407
|
if (!value) return undefined;
|
|
40521
40408
|
const rawFields = Array.isArray(value.fields) ? value.fields : [];
|
|
40522
|
-
const fields$
|
|
40409
|
+
const fields$1 = rawFields.map(readBookingFormField).filter((field) => field !== null);
|
|
40523
40410
|
return {
|
|
40524
40411
|
version: typeof value.version === "string" ? value.version : undefined,
|
|
40525
|
-
fields: fields$
|
|
40412
|
+
fields: fields$1
|
|
40526
40413
|
};
|
|
40527
40414
|
}
|
|
40528
40415
|
function readBookingFormField(value) {
|
|
@@ -44017,9 +43904,9 @@ function createBoxStylesFieldWithDepth(type, options = {}) {
|
|
|
44017
43904
|
};
|
|
44018
43905
|
const { id = defaults[type].id, label = defaults[type].label, includeBackground = true, renderInHeader, intent } = options;
|
|
44019
43906
|
const contextName = defaults[type].contextName;
|
|
44020
|
-
const fields$
|
|
43907
|
+
const fields$1 = [];
|
|
44021
43908
|
if (includeBackground) {
|
|
44022
|
-
fields$
|
|
43909
|
+
fields$1.push(createBackgroundField({
|
|
44023
43910
|
id: "background",
|
|
44024
43911
|
label: "Background",
|
|
44025
43912
|
allowColor: true,
|
|
@@ -44028,7 +43915,7 @@ function createBoxStylesFieldWithDepth(type, options = {}) {
|
|
|
44028
43915
|
includeAdvanced: true
|
|
44029
43916
|
}));
|
|
44030
43917
|
}
|
|
44031
|
-
fields$
|
|
43918
|
+
fields$1.push({
|
|
44032
43919
|
id: "spacing",
|
|
44033
43920
|
type: "select",
|
|
44034
43921
|
label: "Inner spacing",
|
|
@@ -44063,7 +43950,7 @@ function createBoxStylesFieldWithDepth(type, options = {}) {
|
|
|
44063
43950
|
]
|
|
44064
43951
|
});
|
|
44065
43952
|
if (type === "card") {
|
|
44066
|
-
fields$
|
|
43953
|
+
fields$1.push({
|
|
44067
43954
|
id: "border",
|
|
44068
43955
|
type: "group",
|
|
44069
43956
|
label: "Border",
|
|
@@ -44121,14 +44008,14 @@ function createBoxStylesFieldWithDepth(type, options = {}) {
|
|
|
44121
44008
|
] }
|
|
44122
44009
|
});
|
|
44123
44010
|
}
|
|
44124
|
-
fields$
|
|
44011
|
+
fields$1.push({
|
|
44125
44012
|
id: "raised",
|
|
44126
44013
|
type: "boolean",
|
|
44127
44014
|
label: "Raised",
|
|
44128
44015
|
description: `Add shadow depth to the ${contextName}.`,
|
|
44129
44016
|
required: false
|
|
44130
44017
|
});
|
|
44131
|
-
fields$
|
|
44018
|
+
fields$1.push({
|
|
44132
44019
|
id: "rounded",
|
|
44133
44020
|
type: "select",
|
|
44134
44021
|
label: "Rounded corners",
|
|
@@ -44167,7 +44054,7 @@ function createBoxStylesFieldWithDepth(type, options = {}) {
|
|
|
44167
44054
|
]
|
|
44168
44055
|
});
|
|
44169
44056
|
if (type === "container") {
|
|
44170
|
-
fields$
|
|
44057
|
+
fields$1.push({
|
|
44171
44058
|
id: "fullWidth",
|
|
44172
44059
|
type: "boolean",
|
|
44173
44060
|
label: "Full width",
|
|
@@ -44181,7 +44068,7 @@ function createBoxStylesFieldWithDepth(type, options = {}) {
|
|
|
44181
44068
|
type: "modal",
|
|
44182
44069
|
label,
|
|
44183
44070
|
required: false,
|
|
44184
|
-
schema: { fields: fields$
|
|
44071
|
+
schema: { fields: fields$1 },
|
|
44185
44072
|
ui: {
|
|
44186
44073
|
...typeof renderInHeader === "boolean" ? { renderInHeader } : {},
|
|
44187
44074
|
...intent ? { intent } : {},
|
|
@@ -44196,9 +44083,9 @@ function createBoxStylesFieldWithDepth(type, options = {}) {
|
|
|
44196
44083
|
}
|
|
44197
44084
|
function sectionStylesField(options = {}) {
|
|
44198
44085
|
const { id = "_sectionStyles", label = "Section styles", includeBackground = true, allowBackgroundColor = true, allowBackgroundGradient = true, allowBackgroundImage = true, includeAdvancedBackground = true, renderInHeader = true } = options;
|
|
44199
|
-
const fields$
|
|
44086
|
+
const fields$1 = [];
|
|
44200
44087
|
if (includeBackground) {
|
|
44201
|
-
fields$
|
|
44088
|
+
fields$1.push(createBackgroundField({
|
|
44202
44089
|
id: "background",
|
|
44203
44090
|
label: "Background",
|
|
44204
44091
|
allowColor: allowBackgroundColor,
|
|
@@ -44207,7 +44094,7 @@ function sectionStylesField(options = {}) {
|
|
|
44207
44094
|
includeAdvanced: includeAdvancedBackground
|
|
44208
44095
|
}));
|
|
44209
44096
|
}
|
|
44210
|
-
fields$
|
|
44097
|
+
fields$1.push({
|
|
44211
44098
|
id: "spacing",
|
|
44212
44099
|
type: "select",
|
|
44213
44100
|
label: "Inner spacing",
|
|
@@ -44246,7 +44133,7 @@ function sectionStylesField(options = {}) {
|
|
|
44246
44133
|
type: "modal",
|
|
44247
44134
|
label,
|
|
44248
44135
|
required: false,
|
|
44249
|
-
schema: { fields: fields$
|
|
44136
|
+
schema: { fields: fields$1 },
|
|
44250
44137
|
ui: {
|
|
44251
44138
|
renderInHeader,
|
|
44252
44139
|
intent: "style",
|
|
@@ -44373,24 +44260,6 @@ const emptyStateField = {
|
|
|
44373
44260
|
ui: { intent: "display" }
|
|
44374
44261
|
};
|
|
44375
44262
|
/**
|
|
44376
|
-
* Section heading and description fields
|
|
44377
|
-
*/
|
|
44378
|
-
const sectionHeaderFields = (defaultHeading) => [{
|
|
44379
|
-
id: "heading",
|
|
44380
|
-
type: "text",
|
|
44381
|
-
label: "Heading",
|
|
44382
|
-
description: "Main heading for the events section",
|
|
44383
|
-
required: false,
|
|
44384
|
-
multiline: false,
|
|
44385
|
-
defaultValue: defaultHeading
|
|
44386
|
-
}, {
|
|
44387
|
-
id: "description",
|
|
44388
|
-
type: "richText",
|
|
44389
|
-
label: "Description",
|
|
44390
|
-
description: "Optional introductory text",
|
|
44391
|
-
required: false
|
|
44392
|
-
}];
|
|
44393
|
-
/**
|
|
44394
44263
|
* Layout selection field with grid/stack options
|
|
44395
44264
|
*/
|
|
44396
44265
|
const layoutField = {
|
|
@@ -44438,34 +44307,6 @@ const columnsField = (options = [
|
|
|
44438
44307
|
}))
|
|
44439
44308
|
});
|
|
44440
44309
|
|
|
44441
|
-
//#endregion
|
|
44442
|
-
//#region ../blocks/src/system/blocks/events/shared/layout.ts
|
|
44443
|
-
const recoverEmptyHeadingWhenActive = {
|
|
44444
|
-
kind: "recover-empty-when-active",
|
|
44445
|
-
placeholder: "Add heading"
|
|
44446
|
-
};
|
|
44447
|
-
const recoverEmptyDescriptionWhenActive = {
|
|
44448
|
-
kind: "recover-empty-when-active",
|
|
44449
|
-
placeholder: "Add description"
|
|
44450
|
-
};
|
|
44451
|
-
function eventSectionHeaderLayoutNodes(options = {}) {
|
|
44452
|
-
const headingNode$1 = text({
|
|
44453
|
-
as: "h2",
|
|
44454
|
-
...lookSlot("heading")
|
|
44455
|
-
}, bind("content.heading"), when("content.heading", { authoringPresence: recoverEmptyHeadingWhenActive }));
|
|
44456
|
-
const descriptionNode = richText({
|
|
44457
|
-
className: "rb-prose rb-max-w-none",
|
|
44458
|
-
...lookSlot("intro")
|
|
44459
|
-
}, bind("content.description"), when("content.description", { authoringPresence: recoverEmptyDescriptionWhenActive }));
|
|
44460
|
-
if (options.splitClassName) {
|
|
44461
|
-
return [el("div", {
|
|
44462
|
-
className: options.splitClassName,
|
|
44463
|
-
...lookSlot("head")
|
|
44464
|
-
}, [headingNode$1, descriptionNode])];
|
|
44465
|
-
}
|
|
44466
|
-
return [headingNode$1, descriptionNode];
|
|
44467
|
-
}
|
|
44468
|
-
|
|
44469
44310
|
//#endregion
|
|
44470
44311
|
//#region ../blocks/src/system/runtime/hooks/utils/normalize.ts
|
|
44471
44312
|
function normalizeOptionalId(value) {
|
|
@@ -46381,7 +46222,7 @@ function augmentManifestWithStyleGroups(manifest, styleGroups, blockKind) {
|
|
|
46381
46222
|
* ```
|
|
46382
46223
|
*/
|
|
46383
46224
|
function createBlockManifest(config$1) {
|
|
46384
|
-
const fields$
|
|
46225
|
+
const fields$1 = parseFieldDefinitions(composeBlockFields(config$1));
|
|
46385
46226
|
const layout = normalizeBlockLayout(config$1.layout);
|
|
46386
46227
|
const variants = config$1.variants;
|
|
46387
46228
|
const behaviours = blockBehaviours(config$1);
|
|
@@ -46392,7 +46233,7 @@ function createBlockManifest(config$1) {
|
|
|
46392
46233
|
titleSource: config$1.titleSource,
|
|
46393
46234
|
description: config$1.description ?? "",
|
|
46394
46235
|
component: deriveComponentName(config$1.id),
|
|
46395
|
-
fields: fields$
|
|
46236
|
+
fields: fields$1,
|
|
46396
46237
|
slots: [],
|
|
46397
46238
|
styleTokens: config$1.styleTokens,
|
|
46398
46239
|
behaviours,
|
|
@@ -49928,7 +49769,7 @@ function MembershipHero({ membershipName, classPrefix, onBookForSomeoneElse }) {
|
|
|
49928
49769
|
* LICENSE file in the root directory of this source tree.
|
|
49929
49770
|
*/
|
|
49930
49771
|
var require_react_dom_production = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
49931
|
-
var React$
|
|
49772
|
+
var React$31 = require_react();
|
|
49932
49773
|
function formatProdErrorMessage(code) {
|
|
49933
49774
|
var url = "https://react.dev/errors/" + code;
|
|
49934
49775
|
if (1 < arguments.length) {
|
|
@@ -49965,7 +49806,7 @@ var require_react_dom_production = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
49965
49806
|
implementation
|
|
49966
49807
|
};
|
|
49967
49808
|
}
|
|
49968
|
-
var ReactSharedInternals = React$
|
|
49809
|
+
var ReactSharedInternals = React$31.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
|
|
49969
49810
|
function getCrossOriginStringAs(as, input) {
|
|
49970
49811
|
if ("font" === as) return "";
|
|
49971
49812
|
if ("string" === typeof input) return "use-credentials" === input ? input : "";
|
|
@@ -50108,7 +49949,7 @@ var require_react_dom_development = /* @__PURE__ */ __commonJSMin(((exports) =>
|
|
|
50108
49949
|
return dispatcher;
|
|
50109
49950
|
}
|
|
50110
49951
|
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
|
|
50111
|
-
var React$
|
|
49952
|
+
var React$87 = require_react(), Internals$1 = {
|
|
50112
49953
|
d: {
|
|
50113
49954
|
f: noop$2,
|
|
50114
49955
|
r: function() {
|
|
@@ -50124,7 +49965,7 @@ var require_react_dom_development = /* @__PURE__ */ __commonJSMin(((exports) =>
|
|
|
50124
49965
|
},
|
|
50125
49966
|
p: 0,
|
|
50126
49967
|
findDOMNode: null
|
|
50127
|
-
}, REACT_PORTAL_TYPE$1 = Symbol.for("react.portal"), ReactSharedInternals$1 = React$
|
|
49968
|
+
}, REACT_PORTAL_TYPE$1 = Symbol.for("react.portal"), ReactSharedInternals$1 = React$87.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
|
|
50128
49969
|
"function" === typeof Map && null != Map.prototype && "function" === typeof Map.prototype.forEach && "function" === typeof Set && null != Set.prototype && "function" === typeof Set.prototype.clear && "function" === typeof Set.prototype.forEach || console.error("React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills");
|
|
50129
49970
|
exports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = Internals$1;
|
|
50130
49971
|
exports.createPortal = function(children, container) {
|
|
@@ -52647,13 +52488,13 @@ function isHalfWidthEligibleField(field) {
|
|
|
52647
52488
|
const type = String(field.type ?? "text");
|
|
52648
52489
|
return type === "text" || type === "email" || type === "tel" || type === "url" || type === "number" || type === "date" || type === "time";
|
|
52649
52490
|
}
|
|
52650
|
-
function groupFormFields(fields$
|
|
52491
|
+
function groupFormFields(fields$1) {
|
|
52651
52492
|
const groups = [];
|
|
52652
|
-
for (let i = 0; i < fields$
|
|
52653
|
-
const current = fields$
|
|
52493
|
+
for (let i = 0; i < fields$1.length; i += 1) {
|
|
52494
|
+
const current = fields$1[i];
|
|
52654
52495
|
if (!current) continue;
|
|
52655
52496
|
if (isHalfWidthEligibleField(current)) {
|
|
52656
|
-
const next = fields$
|
|
52497
|
+
const next = fields$1[i + 1];
|
|
52657
52498
|
if (next && isHalfWidthEligibleField(next)) {
|
|
52658
52499
|
groups.push({
|
|
52659
52500
|
type: "row",
|
|
@@ -52709,6 +52550,7 @@ const formFieldGroupSchema = z.discriminatedUnion("type", [z.object({
|
|
|
52709
52550
|
fields: z.tuple([formFieldSchema, formFieldSchema])
|
|
52710
52551
|
})]);
|
|
52711
52552
|
const formSourceSchema = z.object({
|
|
52553
|
+
lookSlots: lookListPresentationSchemaShape.lookSlots,
|
|
52712
52554
|
value: formRecordSchema.optional(),
|
|
52713
52555
|
siteId: z.string().optional(),
|
|
52714
52556
|
apiBaseUrl: z.string().optional(),
|
|
@@ -52718,6 +52560,7 @@ const formSourceSchema = z.object({
|
|
|
52718
52560
|
spamProtectionEnabled: z.boolean().optional()
|
|
52719
52561
|
});
|
|
52720
52562
|
const formDisplaySchema = z.object({
|
|
52563
|
+
lookSlots: lookListPresentationSchemaShape.lookSlots,
|
|
52721
52564
|
kind: z.literal("form"),
|
|
52722
52565
|
state: z.enum(["missing", "ready"]),
|
|
52723
52566
|
className: z.string().nullable(),
|
|
@@ -52739,17 +52582,30 @@ const formIslandMetaCodec = createZodCodec(z.object({
|
|
|
52739
52582
|
const formIslandMetaKeys = defineInteractiveIslandMetaKeys("siteId", "apiBaseUrl");
|
|
52740
52583
|
function buildFormDisplay(source) {
|
|
52741
52584
|
const form$1 = source.value ?? null;
|
|
52742
|
-
const fields$
|
|
52743
|
-
const groups = Array.isArray(fields$2) ? groupFormFields(fields$2) : [];
|
|
52585
|
+
const fields$1 = formDisplayFields(form$1);
|
|
52744
52586
|
return {
|
|
52745
52587
|
kind: "form",
|
|
52746
|
-
|
|
52588
|
+
...source.lookSlots ? { lookSlots: source.lookSlots } : {},
|
|
52589
|
+
state: fields$1.state,
|
|
52747
52590
|
className: source.className ?? null,
|
|
52748
|
-
formId:
|
|
52591
|
+
formId: fields$1.formId,
|
|
52749
52592
|
submitLabel: source.submitLabel?.trim() || "Submit",
|
|
52750
52593
|
successMessage: source.successMessage ?? null,
|
|
52751
52594
|
form: form$1,
|
|
52752
|
-
groups
|
|
52595
|
+
groups: fields$1.groups
|
|
52596
|
+
};
|
|
52597
|
+
}
|
|
52598
|
+
function formDisplayFields(form$1) {
|
|
52599
|
+
if (!form$1) return {
|
|
52600
|
+
state: "missing",
|
|
52601
|
+
formId: null,
|
|
52602
|
+
groups: []
|
|
52603
|
+
};
|
|
52604
|
+
const fields$1 = form$1.schemaJson?.fields;
|
|
52605
|
+
return {
|
|
52606
|
+
state: "ready",
|
|
52607
|
+
formId: form$1.id,
|
|
52608
|
+
groups: Array.isArray(fields$1) ? groupFormFields(fields$1) : []
|
|
52753
52609
|
};
|
|
52754
52610
|
}
|
|
52755
52611
|
const formBlockRuntime = defineProgressiveBlockRuntime({
|
|
@@ -52794,9 +52650,10 @@ function fragmentLayoutNode$1(layout) {
|
|
|
52794
52650
|
function isNodeDefinitionArray$1(layout) {
|
|
52795
52651
|
return Array.isArray(layout);
|
|
52796
52652
|
}
|
|
52797
|
-
const copyLayout = fragmentLayoutNode$1(formCopyFragment.layout);
|
|
52653
|
+
const copyLayout = props(lookSlot("head"))(fragmentLayoutNode$1(formCopyFragment.layout));
|
|
52798
52654
|
const embedLayout$1 = fragmentLayoutNode$1(formEmbedFragment.layout);
|
|
52799
52655
|
const formSurface = styledContainer({
|
|
52656
|
+
rootProps: lookSlot("panel"),
|
|
52800
52657
|
bindFrom: "_containerStyles",
|
|
52801
52658
|
constrainWidth: false,
|
|
52802
52659
|
baseClassName: "rb-form-surface rb-relative rb-isolate rb-overflow-visible",
|
|
@@ -52805,9 +52662,16 @@ const formSurface = styledContainer({
|
|
|
52805
52662
|
function createFormLayout(variant) {
|
|
52806
52663
|
if (variant === "two-column") {
|
|
52807
52664
|
return styledSection({
|
|
52808
|
-
children: el("div", {
|
|
52665
|
+
children: el("div", {
|
|
52666
|
+
className: "rb-container",
|
|
52667
|
+
...lookSlot("layout")
|
|
52668
|
+
}, [el("div", {
|
|
52669
|
+
className: "rb-form-two-column rb-grid rb-grid-cols-1 rb-gap-8 rb-lg-grid-cols-2 rb-lg-items-start",
|
|
52670
|
+
...lookSlot("frame")
|
|
52671
|
+
}, [stack({
|
|
52809
52672
|
gap: "md",
|
|
52810
|
-
className: "rb-form-copy-column"
|
|
52673
|
+
className: "rb-form-copy-column",
|
|
52674
|
+
...lookSlot("copy")
|
|
52811
52675
|
}, [copyLayout]), formSurface])]),
|
|
52812
52676
|
baseClass: "",
|
|
52813
52677
|
spacing: "medium",
|
|
@@ -52836,6 +52700,15 @@ const formManifest = createBlockManifest({
|
|
|
52836
52700
|
description: "Renders a saved form definition with server-side submit.",
|
|
52837
52701
|
includeContainerStyles: true,
|
|
52838
52702
|
fragments: [{ fragment: formCopyFragment }, { fragment: formEmbedFragment }],
|
|
52703
|
+
additionalFields: [{
|
|
52704
|
+
id: "archFrame",
|
|
52705
|
+
type: "boolean",
|
|
52706
|
+
label: "Arch frame",
|
|
52707
|
+
ui: {
|
|
52708
|
+
intent: "display",
|
|
52709
|
+
hidden: true
|
|
52710
|
+
}
|
|
52711
|
+
}],
|
|
52839
52712
|
layout: formLayout,
|
|
52840
52713
|
variants: {
|
|
52841
52714
|
default: formLayout,
|
|
@@ -53389,7 +53262,7 @@ const eventCalendarLayout = [styledSection({
|
|
|
53389
53262
|
gap: "lg",
|
|
53390
53263
|
...lookSlot("layout")
|
|
53391
53264
|
},
|
|
53392
|
-
children: [...
|
|
53265
|
+
children: [...sectionHeaderLayoutNodes({ splitClassName: "event-section-head event-section-head--split" }), el("event-calendar", withApiBindings({
|
|
53393
53266
|
readAuthority: { $bind: { from: "$root.readAuthority" } },
|
|
53394
53267
|
events: { $bind: { from: "data.events" } },
|
|
53395
53268
|
effectiveListArrangementKey: { $bind: { from: "$root.effectiveListArrangementKey" } },
|
|
@@ -54718,7 +54591,7 @@ const eventListingLayout = [styledSection({
|
|
|
54718
54591
|
children: styledContainer({
|
|
54719
54592
|
rootType: "stack",
|
|
54720
54593
|
rootProps: { gap: "lg" },
|
|
54721
|
-
children: [...
|
|
54594
|
+
children: [...sectionHeaderLayoutNodes(), el("event-listing", withApiBindings({
|
|
54722
54595
|
readAuthority: { $bind: { from: "$root.readAuthority" } },
|
|
54723
54596
|
events: { $bind: { from: "data.events" } },
|
|
54724
54597
|
stage: { $bind: {
|
|
@@ -54873,83 +54746,79 @@ const eventListingBlockDefinition = {
|
|
|
54873
54746
|
/**
|
|
54874
54747
|
* Get form fields based on preset configuration.
|
|
54875
54748
|
*/
|
|
54876
|
-
function getGlobalFormFields(form$1) {
|
|
54877
|
-
const
|
|
54878
|
-
|
|
54879
|
-
|
|
54880
|
-
|
|
54881
|
-
|
|
54882
|
-
|
|
54883
|
-
|
|
54884
|
-
|
|
54885
|
-
|
|
54886
|
-
case "
|
|
54887
|
-
|
|
54888
|
-
|
|
54889
|
-
|
|
54890
|
-
|
|
54891
|
-
|
|
54892
|
-
|
|
54749
|
+
function getGlobalFormFields(form$1, presentation = {}) {
|
|
54750
|
+
const fields$1 = withOptionalPhone(newsletterPresetFields(form$1.fields), form$1.includeOptionalPhone);
|
|
54751
|
+
return presentation.lookSlots ? fields$1.map((field) => ({
|
|
54752
|
+
...field,
|
|
54753
|
+
label: lookFieldLabel(field)
|
|
54754
|
+
})) : fields$1;
|
|
54755
|
+
}
|
|
54756
|
+
function lookFieldLabel(field) {
|
|
54757
|
+
switch (field.id) {
|
|
54758
|
+
case "firstName": return "First name";
|
|
54759
|
+
case "lastName": return "Last name";
|
|
54760
|
+
default: return field.label;
|
|
54761
|
+
}
|
|
54762
|
+
}
|
|
54763
|
+
const emailField = {
|
|
54764
|
+
id: "email",
|
|
54765
|
+
type: "email",
|
|
54766
|
+
label: "Email",
|
|
54767
|
+
required: true,
|
|
54768
|
+
placeholder: "your@email.com"
|
|
54769
|
+
};
|
|
54770
|
+
const firstNameField = (required) => ({
|
|
54771
|
+
id: "firstName",
|
|
54772
|
+
type: "text",
|
|
54773
|
+
label: "First Name",
|
|
54774
|
+
required,
|
|
54775
|
+
placeholder: "First name"
|
|
54776
|
+
});
|
|
54777
|
+
function newsletterPresetFields(fields$1) {
|
|
54778
|
+
switch (fields$1.preset) {
|
|
54779
|
+
case "emailOnly": return [emailField];
|
|
54780
|
+
case "emailName": return [emailField, {
|
|
54893
54781
|
id: "name",
|
|
54894
54782
|
type: "text",
|
|
54895
54783
|
label: "Name",
|
|
54896
|
-
required:
|
|
54784
|
+
required: fields$1.name === "required",
|
|
54897
54785
|
placeholder: "Your name"
|
|
54898
|
-
}]
|
|
54899
|
-
case "
|
|
54900
|
-
|
|
54901
|
-
|
|
54902
|
-
|
|
54903
|
-
label: "Email",
|
|
54904
|
-
required: true,
|
|
54905
|
-
placeholder: "your@email.com"
|
|
54906
|
-
},
|
|
54907
|
-
{
|
|
54908
|
-
id: "firstName",
|
|
54909
|
-
type: "text",
|
|
54910
|
-
label: "First Name",
|
|
54911
|
-
required: form$1.fields.firstName === "required",
|
|
54912
|
-
placeholder: "First name"
|
|
54913
|
-
},
|
|
54786
|
+
}];
|
|
54787
|
+
case "emailFirstName": return [emailField, firstNameField(fields$1.firstName === "required")];
|
|
54788
|
+
case "emailFirstLast": return [
|
|
54789
|
+
emailField,
|
|
54790
|
+
firstNameField(fields$1.firstName === "required"),
|
|
54914
54791
|
{
|
|
54915
54792
|
id: "lastName",
|
|
54916
54793
|
type: "text",
|
|
54917
54794
|
label: "Last Name",
|
|
54918
|
-
required:
|
|
54795
|
+
required: fields$1.lastName === "required",
|
|
54919
54796
|
placeholder: "Last name"
|
|
54920
54797
|
}
|
|
54921
|
-
]
|
|
54922
|
-
case "emailNameCompany": return
|
|
54923
|
-
|
|
54924
|
-
id: "email",
|
|
54925
|
-
type: "email",
|
|
54926
|
-
label: "Email",
|
|
54927
|
-
required: true,
|
|
54928
|
-
placeholder: "your@email.com"
|
|
54929
|
-
},
|
|
54798
|
+
];
|
|
54799
|
+
case "emailNameCompany": return [
|
|
54800
|
+
emailField,
|
|
54930
54801
|
{
|
|
54931
54802
|
id: "name",
|
|
54932
54803
|
type: "text",
|
|
54933
54804
|
label: "Name",
|
|
54934
|
-
required:
|
|
54805
|
+
required: fields$1.name === "required",
|
|
54935
54806
|
placeholder: "Your name"
|
|
54936
54807
|
},
|
|
54937
54808
|
{
|
|
54938
54809
|
id: "company",
|
|
54939
54810
|
type: "text",
|
|
54940
54811
|
label: "Company",
|
|
54941
|
-
required:
|
|
54812
|
+
required: fields$1.company === "required",
|
|
54942
54813
|
placeholder: "Company name"
|
|
54943
54814
|
}
|
|
54944
|
-
]
|
|
54945
|
-
default:
|
|
54946
|
-
throw new Error("Unknown newsletter preset");
|
|
54947
|
-
}
|
|
54815
|
+
];
|
|
54816
|
+
default: return assertNever(fields$1);
|
|
54948
54817
|
}
|
|
54949
54818
|
}
|
|
54950
|
-
function withOptionalPhone(fields$
|
|
54951
|
-
if (!includePhone) return fields$
|
|
54952
|
-
return [...fields$
|
|
54819
|
+
function withOptionalPhone(fields$1, includePhone) {
|
|
54820
|
+
if (!includePhone) return fields$1;
|
|
54821
|
+
return [...fields$1, {
|
|
54953
54822
|
id: "phone",
|
|
54954
54823
|
type: "text",
|
|
54955
54824
|
label: "Phone",
|
|
@@ -55015,6 +54884,7 @@ const mailingListSignupBlockSourceRefSchema = z.object({
|
|
|
55015
54884
|
});
|
|
55016
54885
|
const signedMailingListSourceTokenSchema = z.string().trim().min(1).transform(parseRequiredMailingListSignedSourceToken);
|
|
55017
54886
|
const newsletterSourceCommonSchema = z.object({
|
|
54887
|
+
lookSlots: lookListPresentationSchemaShape.lookSlots,
|
|
55018
54888
|
siteId: z.string().optional(),
|
|
55019
54889
|
apiBaseUrl: z.string().optional(),
|
|
55020
54890
|
mailingList: mailingListContextSchema.optional(),
|
|
@@ -55047,6 +54917,7 @@ const newsletterSourceSchema = z.discriminatedUnion("source", [
|
|
|
55047
54917
|
newsletterSourceCommonSchema.extend({ source: z.literal("preview") })
|
|
55048
54918
|
]);
|
|
55049
54919
|
const newsletterDisplaySchema = z.object({
|
|
54920
|
+
lookSlots: lookListPresentationSchemaShape.lookSlots,
|
|
55050
54921
|
kind: z.literal("newsletter-form"),
|
|
55051
54922
|
availability: z.enum(["ready", "unavailable"]),
|
|
55052
54923
|
className: z.string().nullable(),
|
|
@@ -55115,13 +54986,14 @@ function buildNewsletterDisplay(source) {
|
|
|
55115
54986
|
const choices = resolveRuntimeChoices(assessment);
|
|
55116
54987
|
return {
|
|
55117
54988
|
kind: "newsletter-form",
|
|
54989
|
+
...source.lookSlots ? { lookSlots: source.lookSlots } : {},
|
|
55118
54990
|
availability: assessment.tag === "available" ? "ready" : "unavailable",
|
|
55119
54991
|
className: source.className ?? null,
|
|
55120
54992
|
buttonLabel: form$1.buttonLabel,
|
|
55121
54993
|
successMessage: form$1.successMessage,
|
|
55122
54994
|
buttonVariant: source.buttonVariant ?? "primary",
|
|
55123
54995
|
privacyNote: form$1.privacyNote,
|
|
55124
|
-
fields: getGlobalFormFields(form$1),
|
|
54996
|
+
fields: getGlobalFormFields(form$1, source),
|
|
55125
54997
|
choices
|
|
55126
54998
|
};
|
|
55127
54999
|
}
|
|
@@ -55238,32 +55110,50 @@ function normalizeMailingListBlockContent(record) {
|
|
|
55238
55110
|
//#region ../blocks/src/system/blocks/newsletter-signup.ts
|
|
55239
55111
|
const stackedComposition = composeFragments([{ fragment: newsletterCopyFragment }, { fragment: newsletterFormFragment }]);
|
|
55240
55112
|
const stackedLayout$1 = styledSection({
|
|
55241
|
-
children: sectionContainer(stackedComposition.layout, {
|
|
55113
|
+
children: props(lookSlot("layout"))(sectionContainer(stackedComposition.layout, {
|
|
55242
55114
|
gap: "md",
|
|
55243
55115
|
className: "rb-text-center newsletter-stacked"
|
|
55244
|
-
}),
|
|
55116
|
+
})),
|
|
55245
55117
|
baseClass: "",
|
|
55246
55118
|
spacing: "medium",
|
|
55247
55119
|
background: "surface"
|
|
55248
55120
|
});
|
|
55249
55121
|
const inlineLayout = styledSection({
|
|
55250
|
-
children: sectionContainer(stackedComposition.layout, {
|
|
55122
|
+
children: props(lookSlot("layout"))(sectionContainer(stackedComposition.layout, {
|
|
55251
55123
|
gap: "md",
|
|
55252
55124
|
className: "newsletter-inline"
|
|
55253
|
-
}),
|
|
55125
|
+
})),
|
|
55254
55126
|
baseClass: "",
|
|
55255
55127
|
spacing: "medium",
|
|
55256
55128
|
background: "surface"
|
|
55257
55129
|
});
|
|
55258
55130
|
const editorialSplitLayout = styledSection({
|
|
55259
|
-
children:
|
|
55131
|
+
children: props(lookSlot("layout"))(sectionContainer([el("div", {
|
|
55132
|
+
className: "newsletter-editorial-split-copy",
|
|
55133
|
+
...lookSlot("head")
|
|
55134
|
+
}, newsletterCopyFragment.layout), el("div", {
|
|
55135
|
+
className: "newsletter-editorial-split-form",
|
|
55136
|
+
...lookSlot("panel")
|
|
55137
|
+
}, newsletterFormFragment.layout)], {
|
|
55260
55138
|
gap: "lg",
|
|
55261
55139
|
className: "newsletter-editorial-split"
|
|
55262
|
-
}),
|
|
55140
|
+
})),
|
|
55263
55141
|
baseClass: "",
|
|
55264
55142
|
spacing: "comfortable",
|
|
55265
55143
|
background: "surface"
|
|
55266
55144
|
});
|
|
55145
|
+
const archLayout = styledSection({
|
|
55146
|
+
children: el("div", {
|
|
55147
|
+
className: "rb-container",
|
|
55148
|
+
...lookSlot("layout")
|
|
55149
|
+
}, [el("div", lookSlot("frame"), [el("div", {
|
|
55150
|
+
className: "rb-grid",
|
|
55151
|
+
...lookSlot("head")
|
|
55152
|
+
}, newsletterCopyFragment.layout), ...newsletterFormFragment.layout])]),
|
|
55153
|
+
baseClass: "",
|
|
55154
|
+
spacing: "medium",
|
|
55155
|
+
background: "surface"
|
|
55156
|
+
});
|
|
55267
55157
|
const newsletterSignupManifest = createBlockManifest({
|
|
55268
55158
|
id: "block.newsletter-signup",
|
|
55269
55159
|
title: "Newsletter Signup",
|
|
@@ -55278,13 +55168,26 @@ const newsletterSignupManifest = createBlockManifest({
|
|
|
55278
55168
|
fragment: newsletterFormFragment,
|
|
55279
55169
|
fieldPriority: 1
|
|
55280
55170
|
}],
|
|
55171
|
+
additionalFields: [{
|
|
55172
|
+
id: "archFrame",
|
|
55173
|
+
type: "boolean",
|
|
55174
|
+
label: "Arch frame",
|
|
55175
|
+
ui: {
|
|
55176
|
+
intent: "display",
|
|
55177
|
+
hidden: true
|
|
55178
|
+
}
|
|
55179
|
+
}],
|
|
55281
55180
|
layout: stackedLayout$1,
|
|
55282
55181
|
variants: {
|
|
55182
|
+
arch: archLayout,
|
|
55283
55183
|
stacked: stackedLayout$1,
|
|
55284
55184
|
inline: inlineLayout,
|
|
55285
55185
|
"editorial-split": editorialSplitLayout
|
|
55286
55186
|
},
|
|
55287
|
-
variantMeaning: {
|
|
55187
|
+
variantMeaning: {
|
|
55188
|
+
kind: "arrangement",
|
|
55189
|
+
lookOnlyKeys: ["arch"]
|
|
55190
|
+
},
|
|
55288
55191
|
defaultVariant: "stacked",
|
|
55289
55192
|
variantOptions: {
|
|
55290
55193
|
stacked: {
|
|
@@ -58354,41 +58257,48 @@ function textInputConstraints(field, inputType) {
|
|
|
58354
58257
|
...typeof field.pattern === "string" && field.pattern ? { pattern: field.pattern } : {}
|
|
58355
58258
|
};
|
|
58356
58259
|
}
|
|
58357
|
-
function LabelledField({ basics, children }) {
|
|
58260
|
+
function LabelledField({ basics, children, lookSlots }) {
|
|
58358
58261
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
58359
58262
|
className: "fb-field",
|
|
58263
|
+
...listLookSlot({ lookSlots }, "item"),
|
|
58360
58264
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("label", {
|
|
58361
58265
|
htmlFor: basics.inputId,
|
|
58362
58266
|
className: "form-label",
|
|
58267
|
+
...listLookSlot({ lookSlots }, "fact-label"),
|
|
58363
58268
|
children: basics.label
|
|
58364
58269
|
}), children]
|
|
58365
58270
|
});
|
|
58366
58271
|
}
|
|
58367
|
-
function TextareaField({ field }) {
|
|
58272
|
+
function TextareaField({ field, lookSlots }) {
|
|
58368
58273
|
const basics = fieldBasics(field);
|
|
58369
58274
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LabelledField, {
|
|
58370
58275
|
basics,
|
|
58276
|
+
lookSlots,
|
|
58371
58277
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("textarea", {
|
|
58372
58278
|
id: basics.inputId,
|
|
58373
58279
|
name: field.id,
|
|
58374
58280
|
required: basics.required,
|
|
58375
58281
|
placeholder: field.placeholder,
|
|
58376
58282
|
rows: field.rows,
|
|
58283
|
+
...listLookSlot({ lookSlots }, "control"),
|
|
58377
58284
|
className: "form-textarea"
|
|
58378
58285
|
})
|
|
58379
58286
|
});
|
|
58380
58287
|
}
|
|
58381
|
-
function SelectField({ field }) {
|
|
58288
|
+
function SelectField({ field, lookSlots }) {
|
|
58382
58289
|
const basics = fieldBasics(field);
|
|
58383
58290
|
const options = field.options ?? [];
|
|
58384
58291
|
const multiple = Boolean(field.multiple);
|
|
58385
58292
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LabelledField, {
|
|
58386
58293
|
basics,
|
|
58294
|
+
lookSlots,
|
|
58387
58295
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("select", {
|
|
58388
58296
|
id: basics.inputId,
|
|
58389
58297
|
name: field.id,
|
|
58390
58298
|
multiple,
|
|
58299
|
+
...listLookControl({ lookSlots }, multiple ? "select-multiple" : "select"),
|
|
58391
58300
|
required: basics.required,
|
|
58301
|
+
...listLookSlot({ lookSlots }, "control"),
|
|
58392
58302
|
className: "form-select",
|
|
58393
58303
|
children: [!multiple && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", {
|
|
58394
58304
|
value: "",
|
|
@@ -58400,13 +58310,15 @@ function SelectField({ field }) {
|
|
|
58400
58310
|
})
|
|
58401
58311
|
});
|
|
58402
58312
|
}
|
|
58403
|
-
function RadioField({ field }) {
|
|
58313
|
+
function RadioField({ field, lookSlots }) {
|
|
58404
58314
|
const basics = fieldBasics(field);
|
|
58405
58315
|
const options = field.options ?? [];
|
|
58406
58316
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("fieldset", {
|
|
58407
58317
|
className: "fb-fieldset",
|
|
58318
|
+
...listLookSlot({ lookSlots }, "item"),
|
|
58408
58319
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("legend", {
|
|
58409
58320
|
className: "form-label",
|
|
58321
|
+
...listLookSlot({ lookSlots }, "fact-label"),
|
|
58410
58322
|
children: basics.label
|
|
58411
58323
|
}), options.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", {
|
|
58412
58324
|
className: "form-check",
|
|
@@ -58415,19 +58327,22 @@ function RadioField({ field }) {
|
|
|
58415
58327
|
name: field.id,
|
|
58416
58328
|
value: opt.value,
|
|
58417
58329
|
required: basics.required,
|
|
58330
|
+
...listLookSlot({ lookSlots }, "mark"),
|
|
58418
58331
|
className: "form-radio"
|
|
58419
58332
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
58420
58333
|
className: "form-check-label",
|
|
58334
|
+
...listLookSlot({ lookSlots }, "fact-label"),
|
|
58421
58335
|
children: opt.label
|
|
58422
58336
|
})]
|
|
58423
58337
|
}, opt.value))]
|
|
58424
58338
|
});
|
|
58425
58339
|
}
|
|
58426
|
-
function TextInputField({ field, type }) {
|
|
58340
|
+
function TextInputField({ field, type, lookSlots }) {
|
|
58427
58341
|
const basics = fieldBasics(field);
|
|
58428
58342
|
const inputType = textInputType(type);
|
|
58429
58343
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LabelledField, {
|
|
58430
58344
|
basics,
|
|
58345
|
+
lookSlots,
|
|
58431
58346
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("input", {
|
|
58432
58347
|
id: basics.inputId,
|
|
58433
58348
|
name: field.id,
|
|
@@ -58435,37 +58350,95 @@ function TextInputField({ field, type }) {
|
|
|
58435
58350
|
required: basics.required,
|
|
58436
58351
|
placeholder: field.placeholder,
|
|
58437
58352
|
...textInputConstraints(field, inputType),
|
|
58353
|
+
...listLookSlot({ lookSlots }, "control"),
|
|
58438
58354
|
className: "form-input"
|
|
58439
58355
|
})
|
|
58440
58356
|
});
|
|
58441
58357
|
}
|
|
58442
|
-
function FormFieldControl({ field }) {
|
|
58358
|
+
function FormFieldControl({ field, lookSlots }) {
|
|
58443
58359
|
const type = String(field.type ?? "text");
|
|
58444
58360
|
switch (type) {
|
|
58445
|
-
case "textarea": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TextareaField, {
|
|
58446
|
-
|
|
58447
|
-
|
|
58361
|
+
case "textarea": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TextareaField, {
|
|
58362
|
+
field,
|
|
58363
|
+
lookSlots
|
|
58364
|
+
});
|
|
58365
|
+
case "select": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectField, {
|
|
58366
|
+
field,
|
|
58367
|
+
lookSlots
|
|
58368
|
+
});
|
|
58369
|
+
case "radio": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RadioField, {
|
|
58370
|
+
field,
|
|
58371
|
+
lookSlots
|
|
58372
|
+
});
|
|
58448
58373
|
case "checkbox":
|
|
58449
|
-
case "consent": {
|
|
58450
|
-
|
|
58451
|
-
|
|
58452
|
-
|
|
58453
|
-
required: basics.required,
|
|
58454
|
-
label: basics.label,
|
|
58455
|
-
presentation: type === "consent" ? "tile" : "row"
|
|
58456
|
-
});
|
|
58457
|
-
}
|
|
58374
|
+
case "consent": return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChoiceField, {
|
|
58375
|
+
field,
|
|
58376
|
+
lookSlots
|
|
58377
|
+
});
|
|
58458
58378
|
default: return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TextInputField, {
|
|
58459
58379
|
field,
|
|
58460
|
-
type
|
|
58380
|
+
type,
|
|
58381
|
+
lookSlots
|
|
58461
58382
|
});
|
|
58462
58383
|
}
|
|
58463
58384
|
}
|
|
58385
|
+
function ChoiceField({ field, lookSlots }) {
|
|
58386
|
+
const basics = fieldBasics(field);
|
|
58387
|
+
const choice = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CheckboxChoice, {
|
|
58388
|
+
...listLookSlot({ lookSlots }, "mark"),
|
|
58389
|
+
name: field.id,
|
|
58390
|
+
required: basics.required,
|
|
58391
|
+
label: lookSlots ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
58392
|
+
...listLookSlot({ lookSlots }, "fact-label"),
|
|
58393
|
+
children: basics.label
|
|
58394
|
+
}) : basics.label,
|
|
58395
|
+
presentation: field.type === "consent" ? "tile" : "row"
|
|
58396
|
+
});
|
|
58397
|
+
return lookSlots ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
58398
|
+
...listLookSlot({ lookSlots }, "item"),
|
|
58399
|
+
children: choice
|
|
58400
|
+
}) : choice;
|
|
58401
|
+
}
|
|
58402
|
+
|
|
58403
|
+
//#endregion
|
|
58404
|
+
//#region ../blocks/src/system/runtime/nodes/form.parts.tsx
|
|
58405
|
+
/** SSR and hydration consume the same decided field groups and Look hooks. */
|
|
58406
|
+
function FormFieldGroups({ groups, lookSlots }) {
|
|
58407
|
+
const renderField$1 = (field) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FormFieldControl, {
|
|
58408
|
+
field,
|
|
58409
|
+
lookSlots
|
|
58410
|
+
}, field.id);
|
|
58411
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: groups.map((group) => group.type === "row" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
58412
|
+
className: "fb-row fb-row-2",
|
|
58413
|
+
...listLookSlot({ lookSlots }, "group"),
|
|
58414
|
+
children: group.fields.map(renderField$1)
|
|
58415
|
+
}, group.key) : renderField$1(group.field)) });
|
|
58416
|
+
}
|
|
58417
|
+
function FormSubmitAction({ lookSlots, submitLabel, disabled }) {
|
|
58418
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
58419
|
+
className: "fb-actions",
|
|
58420
|
+
...listLookSlot({ lookSlots }, "actions"),
|
|
58421
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
58422
|
+
className: "fb-actions-inner",
|
|
58423
|
+
...listLookSlot({ lookSlots }, "inline"),
|
|
58424
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButton, {
|
|
58425
|
+
...listLookSlot({ lookSlots }, "action"),
|
|
58426
|
+
type: "submit",
|
|
58427
|
+
variant: "primary",
|
|
58428
|
+
size: "md",
|
|
58429
|
+
extraClassName: "rb-w-full rb-sm-w-auto",
|
|
58430
|
+
disabled,
|
|
58431
|
+
label: submitLabel
|
|
58432
|
+
})
|
|
58433
|
+
})
|
|
58434
|
+
});
|
|
58435
|
+
}
|
|
58464
58436
|
|
|
58465
58437
|
//#endregion
|
|
58466
58438
|
//#region ../blocks/src/system/runtime/nodes/form.server.tsx
|
|
58467
|
-
const FormNodeSSR = ({ blockId, value, submitLabel, successMessage, className, onSubmit, action = "/api/forms/submit", siteId, apiBaseUrl, spamProtectionEnabled }) => {
|
|
58439
|
+
const FormNodeSSR = ({ blockId, lookSlots, value, submitLabel, successMessage, className, onSubmit, action = "/api/forms/submit", siteId, apiBaseUrl, spamProtectionEnabled }) => {
|
|
58468
58440
|
const islandProps = buildFormInteractiveIslandProps({
|
|
58441
|
+
lookSlots,
|
|
58469
58442
|
value,
|
|
58470
58443
|
siteId,
|
|
58471
58444
|
apiBaseUrl,
|
|
@@ -58487,14 +58460,13 @@ const FormNodeSSR = ({ blockId, value, submitLabel, successMessage, className, o
|
|
|
58487
58460
|
})]
|
|
58488
58461
|
});
|
|
58489
58462
|
}
|
|
58490
|
-
const groups = display.groups;
|
|
58491
|
-
const renderField$1 = (field) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FormFieldControl, { field }, field.id);
|
|
58492
58463
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
58493
58464
|
...getIslandRootProps("form", blockId),
|
|
58494
58465
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(IslandPropsScript, { value: islandProps }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("form", {
|
|
58495
58466
|
method: "POST",
|
|
58496
58467
|
action,
|
|
58497
58468
|
onSubmit,
|
|
58469
|
+
...listLookSlot(display, "grid"),
|
|
58498
58470
|
className: clsx_default("fb-form", display.className ?? undefined),
|
|
58499
58471
|
children: [
|
|
58500
58472
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("input", {
|
|
@@ -58509,27 +58481,13 @@ const FormNodeSSR = ({ blockId, value, submitLabel, successMessage, className, o
|
|
|
58509
58481
|
tabIndex: -1,
|
|
58510
58482
|
autoComplete: "off"
|
|
58511
58483
|
}),
|
|
58512
|
-
|
|
58513
|
-
|
|
58514
|
-
|
|
58515
|
-
className: "fb-row fb-row-2",
|
|
58516
|
-
children: group.fields.map(renderField$1)
|
|
58517
|
-
}, group.key);
|
|
58518
|
-
}
|
|
58519
|
-
return renderField$1(group.field);
|
|
58484
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(FormFieldGroups, {
|
|
58485
|
+
groups: display.groups,
|
|
58486
|
+
lookSlots: display.lookSlots
|
|
58520
58487
|
}),
|
|
58521
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
58522
|
-
|
|
58523
|
-
|
|
58524
|
-
className: "fb-actions-inner",
|
|
58525
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButton, {
|
|
58526
|
-
type: "submit",
|
|
58527
|
-
variant: "primary",
|
|
58528
|
-
size: "md",
|
|
58529
|
-
extraClassName: "rb-w-full rb-sm-w-auto",
|
|
58530
|
-
label: display.submitLabel
|
|
58531
|
-
})
|
|
58532
|
-
})
|
|
58488
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(FormSubmitAction, {
|
|
58489
|
+
submitLabel: display.submitLabel,
|
|
58490
|
+
lookSlots: display.lookSlots
|
|
58533
58491
|
})
|
|
58534
58492
|
]
|
|
58535
58493
|
})]
|
|
@@ -58542,29 +58500,30 @@ const FormNodeSSR = ({ blockId, value, submitLabel, successMessage, className, o
|
|
|
58542
58500
|
* Newsletter form pieces shared by the SSR render and the hydrated island, so
|
|
58543
58501
|
* both produce the same markup.
|
|
58544
58502
|
*
|
|
58545
|
-
*
|
|
58546
|
-
*
|
|
58547
|
-
* readers still get the label.
|
|
58503
|
+
* Legacy layouts keep visually hidden labels and the joined email/button.
|
|
58504
|
+
* Compiler-owned Look hooks expose labelled controls and a separate action.
|
|
58548
58505
|
*/
|
|
58549
58506
|
const TOPIC_CHOICE_FIELD_ID = "mailingListChoice";
|
|
58550
58507
|
const inputIdFor = (field) => `newsletter_${field.id}`;
|
|
58551
58508
|
/** Splits the preset's fields into the email (joined with the button) and the rest. */
|
|
58552
|
-
function partitionNewsletterFields(fields$
|
|
58553
|
-
const email = fields$
|
|
58509
|
+
function partitionNewsletterFields(fields$1) {
|
|
58510
|
+
const email = fields$1.find((field) => field.type === "email") ?? null;
|
|
58554
58511
|
return {
|
|
58555
58512
|
email,
|
|
58556
|
-
extra: fields$
|
|
58513
|
+
extra: fields$1.filter((field) => field !== email)
|
|
58557
58514
|
};
|
|
58558
58515
|
}
|
|
58559
|
-
function NewsletterExtraField({ field, disabled, error: error$1 }) {
|
|
58516
|
+
function NewsletterExtraField({ field, disabled, error: error$1, lookSlots }) {
|
|
58560
58517
|
const inputId = inputIdFor(field);
|
|
58561
58518
|
const errorId = `${inputId}-error`;
|
|
58562
58519
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
58563
58520
|
className: "fb-field newsletter-field",
|
|
58521
|
+
...listLookSlot({ lookSlots }, field.type === "email" ? "row" : "item"),
|
|
58564
58522
|
children: [
|
|
58565
58523
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("label", {
|
|
58566
58524
|
htmlFor: inputId,
|
|
58567
|
-
className: "rb-sr-only",
|
|
58525
|
+
className: lookSlots ? undefined : "rb-sr-only",
|
|
58526
|
+
...listLookSlot({ lookSlots }, "fact-label"),
|
|
58568
58527
|
children: field.label
|
|
58569
58528
|
}),
|
|
58570
58529
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("input", {
|
|
@@ -58574,6 +58533,8 @@ function NewsletterExtraField({ field, disabled, error: error$1 }) {
|
|
|
58574
58533
|
required: field.required,
|
|
58575
58534
|
placeholder: field.placeholder ?? field.label,
|
|
58576
58535
|
className: "form-input",
|
|
58536
|
+
autoComplete: lookSlots ? field.type === "email" ? "email" : field.id === "firstName" ? "given-name" : undefined : undefined,
|
|
58537
|
+
...listLookSlot({ lookSlots }, "control"),
|
|
58577
58538
|
disabled,
|
|
58578
58539
|
...getFieldValidationControlProps({
|
|
58579
58540
|
message: error$1,
|
|
@@ -58635,10 +58596,28 @@ function NewsletterEmailEntry({ field, buttonVariant, buttonLabel, disabled, err
|
|
|
58635
58596
|
* The submit action: joined to the email field when the preset has one
|
|
58636
58597
|
* (every current preset does), otherwise a plain themed button.
|
|
58637
58598
|
*/
|
|
58638
|
-
function NewsletterSubmitRow({ emailField, buttonVariant, buttonLabel, disabled, error: error$1 }) {
|
|
58639
|
-
if (
|
|
58599
|
+
function NewsletterSubmitRow({ emailField: emailField$1, lookSlots, buttonVariant, buttonLabel, disabled, error: error$1 }) {
|
|
58600
|
+
if (lookSlots) {
|
|
58601
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [emailField$1 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NewsletterExtraField, {
|
|
58602
|
+
field: emailField$1,
|
|
58603
|
+
lookSlots,
|
|
58604
|
+
disabled,
|
|
58605
|
+
error: error$1
|
|
58606
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
58607
|
+
...listLookSlot({ lookSlots }, "actions"),
|
|
58608
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ThemedButton, {
|
|
58609
|
+
...listLookSlot({ lookSlots }, "action"),
|
|
58610
|
+
type: "submit",
|
|
58611
|
+
variant: buttonVariant,
|
|
58612
|
+
size: "md",
|
|
58613
|
+
disabled,
|
|
58614
|
+
label: buttonLabel
|
|
58615
|
+
})
|
|
58616
|
+
})] });
|
|
58617
|
+
}
|
|
58618
|
+
if (emailField$1) {
|
|
58640
58619
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NewsletterEmailEntry, {
|
|
58641
|
-
field: emailField,
|
|
58620
|
+
field: emailField$1,
|
|
58642
58621
|
buttonVariant,
|
|
58643
58622
|
buttonLabel,
|
|
58644
58623
|
disabled,
|
|
@@ -58704,7 +58683,7 @@ function NewsletterFormSSR(props$1) {
|
|
|
58704
58683
|
className
|
|
58705
58684
|
});
|
|
58706
58685
|
const display = islandProps.render.display;
|
|
58707
|
-
const fields$
|
|
58686
|
+
const fields$1 = display.fields;
|
|
58708
58687
|
const submissionMessage = newsletterBlockSubmissionMessage(islandProps.render.hydration.target);
|
|
58709
58688
|
if (display.availability === "unavailable") {
|
|
58710
58689
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
@@ -58715,9 +58694,10 @@ function NewsletterFormSSR(props$1) {
|
|
|
58715
58694
|
})
|
|
58716
58695
|
});
|
|
58717
58696
|
}
|
|
58718
|
-
const { email: emailField, extra: extraFields } = partitionNewsletterFields(fields$
|
|
58697
|
+
const { email: emailField$1, extra: extraFields } = partitionNewsletterFields(fields$1);
|
|
58719
58698
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
58720
58699
|
...getIslandRootProps("newsletter-form", blockId),
|
|
58700
|
+
...listLookSlot(display, "panel"),
|
|
58721
58701
|
className: clsx_default("newsletter-form-ssr", className),
|
|
58722
58702
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(IslandPropsScript, { value: islandProps }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("form", {
|
|
58723
58703
|
method: "POST",
|
|
@@ -58733,14 +58713,20 @@ function NewsletterFormSSR(props$1) {
|
|
|
58733
58713
|
}),
|
|
58734
58714
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
58735
58715
|
className: "newsletter-form-fields",
|
|
58716
|
+
...listLookSlot(display, "grid"),
|
|
58736
58717
|
children: [
|
|
58737
58718
|
islandProps.render.hydration.choicePresentation === "visitor_choice" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NewsletterTopicChips, { choices: display.choices }) : null,
|
|
58738
58719
|
extraFields.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
58739
58720
|
className: "newsletter-extra-fields",
|
|
58740
|
-
|
|
58721
|
+
...listLookSlot(display, "items"),
|
|
58722
|
+
children: extraFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NewsletterExtraField, {
|
|
58723
|
+
lookSlots: display.lookSlots,
|
|
58724
|
+
field
|
|
58725
|
+
}, field.id))
|
|
58741
58726
|
}) : null,
|
|
58742
58727
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(NewsletterSubmitRow, {
|
|
58743
|
-
|
|
58728
|
+
lookSlots: display.lookSlots,
|
|
58729
|
+
emailField: emailField$1,
|
|
58744
58730
|
buttonVariant: display.buttonVariant,
|
|
58745
58731
|
buttonLabel: display.buttonLabel,
|
|
58746
58732
|
disabled: submissionMessage !== null
|
|
@@ -58753,6 +58739,7 @@ function NewsletterFormSSR(props$1) {
|
|
|
58753
58739
|
}),
|
|
58754
58740
|
display.privacyNote && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
|
|
58755
58741
|
className: "newsletter-privacy-note",
|
|
58742
|
+
...listLookSlot(display, "caption"),
|
|
58756
58743
|
children: display.privacyNote
|
|
58757
58744
|
})
|
|
58758
58745
|
]
|
|
@@ -60121,9 +60108,8 @@ function arrangementSlotProps(props$1, content, scopes$1) {
|
|
|
60121
60108
|
function arrangementMediaPlaceholder(node, context) {
|
|
60122
60109
|
const content = context.blockContent;
|
|
60123
60110
|
if (!isPlainObject$5(content) || content._lookAudience !== "authoring" || content.showPhotos === false) return null;
|
|
60124
|
-
const
|
|
60125
|
-
if (!
|
|
60126
|
-
const from = parseBinding(media$1.$bind, "$bind").from;
|
|
60111
|
+
const from = arrangementPlaceholderMediaPath(node);
|
|
60112
|
+
if (!from) return null;
|
|
60127
60113
|
const fieldPath = arrangementPlaceholderFieldPath(from, context);
|
|
60128
60114
|
const placeholder = import_react.createElement(MediaPlaceholder, {
|
|
60129
60115
|
fieldPath,
|
|
@@ -60136,6 +60122,13 @@ function arrangementMediaPlaceholder(node, context) {
|
|
|
60136
60122
|
"data-placeholder-field": fieldPath
|
|
60137
60123
|
}, placeholder);
|
|
60138
60124
|
}
|
|
60125
|
+
/** Layout/legacy guards stay hidden even if their subtree contains empty media. */
|
|
60126
|
+
function arrangementPlaceholderMediaPath(node) {
|
|
60127
|
+
const media$1 = node.type === "media" ? node : node.children?.find((child) => child.type === "media");
|
|
60128
|
+
if (!media$1?.$bind || !node.$when) return null;
|
|
60129
|
+
const from = parseBinding(media$1.$bind, "$bind").from;
|
|
60130
|
+
return parseBinding(node.$when.when, "$when.when").from === from ? from : null;
|
|
60131
|
+
}
|
|
60139
60132
|
function arrangementPlaceholderFieldPath(from, context) {
|
|
60140
60133
|
const segments = getAbsoluteSegments(from, context);
|
|
60141
60134
|
return segments === undefined ? from : segmentsToPath(segments)?.replace(/^content\./, "") ?? from;
|
|
@@ -64113,6 +64106,92 @@ function shouldDebugCustomBlocks() {
|
|
|
64113
64106
|
}
|
|
64114
64107
|
}
|
|
64115
64108
|
|
|
64109
|
+
//#endregion
|
|
64110
|
+
//#region ../blocks/src/system/fields/imageShape.ts
|
|
64111
|
+
const standardImageShapeOptions = [
|
|
64112
|
+
{
|
|
64113
|
+
value: "default",
|
|
64114
|
+
label: "Default"
|
|
64115
|
+
},
|
|
64116
|
+
{
|
|
64117
|
+
value: "square",
|
|
64118
|
+
label: "Square corners"
|
|
64119
|
+
},
|
|
64120
|
+
{
|
|
64121
|
+
value: "rounded",
|
|
64122
|
+
label: "Rounded corners"
|
|
64123
|
+
},
|
|
64124
|
+
{
|
|
64125
|
+
value: "circle",
|
|
64126
|
+
label: "Circle"
|
|
64127
|
+
},
|
|
64128
|
+
{
|
|
64129
|
+
value: "arch",
|
|
64130
|
+
label: "Arch"
|
|
64131
|
+
}
|
|
64132
|
+
];
|
|
64133
|
+
function createImageShapeField(options = {}) {
|
|
64134
|
+
return {
|
|
64135
|
+
id: options.id ?? "imageShape",
|
|
64136
|
+
type: "select",
|
|
64137
|
+
label: options.label ?? "Image shape",
|
|
64138
|
+
...options.description ? { description: options.description } : {},
|
|
64139
|
+
required: false,
|
|
64140
|
+
defaultValue: options.defaultValue ?? "default",
|
|
64141
|
+
multiple: false,
|
|
64142
|
+
options: [...standardImageShapeOptions],
|
|
64143
|
+
ui: {
|
|
64144
|
+
intent: options.uiIntent ?? "display",
|
|
64145
|
+
...options.visibleWhen ? { visibleWhen: options.visibleWhen } : {}
|
|
64146
|
+
}
|
|
64147
|
+
};
|
|
64148
|
+
}
|
|
64149
|
+
|
|
64150
|
+
//#endregion
|
|
64151
|
+
//#region ../blocks/src/system/fields/aspectRatio.ts
|
|
64152
|
+
const standardAspectRatioOptions = [
|
|
64153
|
+
{
|
|
64154
|
+
value: "auto",
|
|
64155
|
+
label: "Auto (original)"
|
|
64156
|
+
},
|
|
64157
|
+
{
|
|
64158
|
+
value: "16/9",
|
|
64159
|
+
label: "16:9 (Landscape)"
|
|
64160
|
+
},
|
|
64161
|
+
{
|
|
64162
|
+
value: "4/3",
|
|
64163
|
+
label: "4:3 (Standard)"
|
|
64164
|
+
},
|
|
64165
|
+
{
|
|
64166
|
+
value: "1/1",
|
|
64167
|
+
label: "1:1 (Square)"
|
|
64168
|
+
},
|
|
64169
|
+
{
|
|
64170
|
+
value: "3/4",
|
|
64171
|
+
label: "3:4 (Portrait)"
|
|
64172
|
+
},
|
|
64173
|
+
{
|
|
64174
|
+
value: "9/16",
|
|
64175
|
+
label: "9:16 (Tall portrait)"
|
|
64176
|
+
}
|
|
64177
|
+
];
|
|
64178
|
+
function createAspectRatioField(options = {}) {
|
|
64179
|
+
return {
|
|
64180
|
+
id: options.id ?? "aspectRatio",
|
|
64181
|
+
type: "select",
|
|
64182
|
+
label: options.label ?? "Aspect ratio",
|
|
64183
|
+
...options.description ? { description: options.description } : {},
|
|
64184
|
+
required: false,
|
|
64185
|
+
defaultValue: options.defaultValue ?? "auto",
|
|
64186
|
+
multiple: false,
|
|
64187
|
+
options: [...standardAspectRatioOptions],
|
|
64188
|
+
ui: {
|
|
64189
|
+
intent: options.uiIntent ?? "display",
|
|
64190
|
+
...options.visibleWhen ? { visibleWhen: options.visibleWhen } : {}
|
|
64191
|
+
}
|
|
64192
|
+
};
|
|
64193
|
+
}
|
|
64194
|
+
|
|
64116
64195
|
//#endregion
|
|
64117
64196
|
//#region ../blocks/src/system/customize/facets.ts
|
|
64118
64197
|
function defineCustomizeFacet(definition$1) {
|
|
@@ -64207,7 +64286,14 @@ const systemCustomizeFacetDefinitions = [
|
|
|
64207
64286
|
}
|
|
64208
64287
|
], "3", true),
|
|
64209
64288
|
fixedKnob("block.testimonials", "tilt", "Tilt the small cards", onOff, "true", false, true),
|
|
64210
|
-
|
|
64289
|
+
{
|
|
64290
|
+
...fixedKnob("block.testimonials", "archFrame", "Arch frame", onOff, "true", false, true),
|
|
64291
|
+
blockKinds: [
|
|
64292
|
+
"block.testimonials",
|
|
64293
|
+
"block.newsletter-signup",
|
|
64294
|
+
"block.form"
|
|
64295
|
+
]
|
|
64296
|
+
},
|
|
64211
64297
|
fixedKnob("block.hero", "candleGlow", "Candle glow", onOff, "true", false, true),
|
|
64212
64298
|
fixedKnob("block.hero", "columnGuides", "Column guides", onOff, "true", false, true),
|
|
64213
64299
|
fixedKnob("block.hero", "titleSize", "Headline size", [
|
|
@@ -64231,6 +64317,15 @@ const systemCustomizeFacetDefinitions = [
|
|
|
64231
64317
|
value: "right",
|
|
64232
64318
|
label: "Right"
|
|
64233
64319
|
}], "right"),
|
|
64320
|
+
fixedKnob("block.media-text", "imagePosition", "Photo side", [{
|
|
64321
|
+
value: "left",
|
|
64322
|
+
label: "Left"
|
|
64323
|
+
}, {
|
|
64324
|
+
value: "right",
|
|
64325
|
+
label: "Right"
|
|
64326
|
+
}], "left"),
|
|
64327
|
+
fixedKnob("block.media-text", "imageShape", "Media shape", standardImageShapeOptions, "default"),
|
|
64328
|
+
fixedKnob("block.media-text", "aspectRatio", "Media aspect ratio", standardAspectRatioOptions, "auto"),
|
|
64234
64329
|
textKnob("stickerLine", "Sticker line", 32),
|
|
64235
64330
|
textKnob("smallCaption", "Small caption", 24),
|
|
64236
64331
|
{
|
|
@@ -64887,8 +64982,8 @@ function deriveFieldValidationPlan(field, path$4 = [field.id]) {
|
|
|
64887
64982
|
default: return assertNever$5(field);
|
|
64888
64983
|
}
|
|
64889
64984
|
}
|
|
64890
|
-
function deriveFieldValidationPlans(fields$
|
|
64891
|
-
return fields$
|
|
64985
|
+
function deriveFieldValidationPlans(fields$1, parentPath = []) {
|
|
64986
|
+
return fields$1.map((field) => deriveFieldValidationPlan(field, [...parentPath, field.id]));
|
|
64892
64987
|
}
|
|
64893
64988
|
function commonConstraints(required, ...specific) {
|
|
64894
64989
|
return required ? [{ kind: "required" }, ...specific] : [...specific];
|
|
@@ -64939,15 +65034,15 @@ function deriveRepeatedItemVariants(field, parentPath) {
|
|
|
64939
65034
|
fields: deriveNestedFieldPlans(getFlattenedRepeaterFields(itemType.fields), parentPath)
|
|
64940
65035
|
}));
|
|
64941
65036
|
}
|
|
64942
|
-
function deriveNestedFieldPlans(fields$
|
|
64943
|
-
return deriveFieldValidationPlans(fields$
|
|
65037
|
+
function deriveNestedFieldPlans(fields$1, parentPath) {
|
|
65038
|
+
return deriveFieldValidationPlans(fields$1, parentPath);
|
|
64944
65039
|
}
|
|
64945
65040
|
function getRepeaterFields(field) {
|
|
64946
|
-
const fields$
|
|
64947
|
-
return getFlattenedRepeaterFields(fields$
|
|
65041
|
+
const fields$1 = field.polymorphic && field.itemTypes ? Object.values(field.itemTypes).flatMap((itemType) => itemType.fields) : field.schema?.fields ?? [];
|
|
65042
|
+
return getFlattenedRepeaterFields(fields$1);
|
|
64948
65043
|
}
|
|
64949
|
-
function getFlattenedRepeaterFields(fields$
|
|
64950
|
-
return fields$
|
|
65044
|
+
function getFlattenedRepeaterFields(fields$1) {
|
|
65045
|
+
return fields$1.flatMap((child) => {
|
|
64951
65046
|
if (child.type === "group" && child.ui?.flattenInRepeater) {
|
|
64952
65047
|
return child.schema?.fields ?? [];
|
|
64953
65048
|
}
|
|
@@ -65088,11 +65183,11 @@ function normalizeStoredRepeaterItems(plan, value, ctx) {
|
|
|
65088
65183
|
return item;
|
|
65089
65184
|
}
|
|
65090
65185
|
const itemRecord = item;
|
|
65091
|
-
const fields$
|
|
65092
|
-
if (!fields$
|
|
65186
|
+
const fields$1 = plan.repeatedItemVariants ? plan.repeatedItemVariants.find((variant) => variant.typeId === itemRecord._type)?.fields : plan.repeatedItemPlan;
|
|
65187
|
+
if (!fields$1) {
|
|
65093
65188
|
return item;
|
|
65094
65189
|
}
|
|
65095
|
-
return normalizeStoredObjectChildren(fields$
|
|
65190
|
+
return normalizeStoredObjectChildren(fields$1, itemRecord, ctx);
|
|
65096
65191
|
});
|
|
65097
65192
|
}
|
|
65098
65193
|
function validateFieldValue(plan, value, options = {}) {
|
|
@@ -65145,9 +65240,9 @@ function normalizeRepeaterItems(plan, value, ctx) {
|
|
|
65145
65240
|
return value.map((item) => {
|
|
65146
65241
|
if (!item || typeof item !== "object" || Array.isArray(item)) return item;
|
|
65147
65242
|
const itemRecord = item;
|
|
65148
|
-
const fields$
|
|
65149
|
-
if (!fields$
|
|
65150
|
-
return normalizeObjectChildren(fields$
|
|
65243
|
+
const fields$1 = plan.repeatedItemVariants ? plan.repeatedItemVariants.find((variant) => variant.typeId === itemRecord._type)?.fields : plan.repeatedItemPlan;
|
|
65244
|
+
if (!fields$1) return item;
|
|
65245
|
+
return normalizeObjectChildren(fields$1, itemRecord, ctx);
|
|
65151
65246
|
});
|
|
65152
65247
|
}
|
|
65153
65248
|
function normalizeNumberInput(value, _allowNull) {
|
|
@@ -65299,9 +65394,9 @@ function validateRepeaterItem(plan, item, index, ctx) {
|
|
|
65299
65394
|
label: `${plan.label} item type`
|
|
65300
65395
|
}];
|
|
65301
65396
|
}
|
|
65302
|
-
const fields$
|
|
65303
|
-
if (!fields$
|
|
65304
|
-
return fields$
|
|
65397
|
+
const fields$1 = variant?.fields ?? plan.repeatedItemPlan;
|
|
65398
|
+
if (!fields$1) return [];
|
|
65399
|
+
return fields$1.flatMap((childPlan) => {
|
|
65305
65400
|
const indexedPlan = materializeRepeaterItemPlan(childPlan, plan.path, index);
|
|
65306
65401
|
return validateNormalizedFieldValue(indexedPlan, item[childPlan.fieldId], ctx);
|
|
65307
65402
|
});
|
|
@@ -65570,8 +65665,8 @@ function fieldValidationDescriptor(plan) {
|
|
|
65570
65665
|
function sameFieldPath(left, right) {
|
|
65571
65666
|
return left.length === right.length && left.every((segment, index) => segment === right[index]);
|
|
65572
65667
|
}
|
|
65573
|
-
function validateManifestValues(fields$
|
|
65574
|
-
const plans = deriveFieldValidationPlans(fields$
|
|
65668
|
+
function validateManifestValues(fields$1, values, options = {}) {
|
|
65669
|
+
const plans = deriveFieldValidationPlans(fields$1);
|
|
65575
65670
|
const normalized = normalizeStoredContentValues(plans, values, options);
|
|
65576
65671
|
return plans.flatMap((plan) => validateFieldValue(plan, normalized[plan.fieldId], options));
|
|
65577
65672
|
}
|
|
@@ -65893,8 +65988,8 @@ function deriveStrictContentZodFromPlans(plans, mode = "strict") {
|
|
|
65893
65988
|
return z.object(shape).catchall(z.unknown()).passthrough();
|
|
65894
65989
|
}
|
|
65895
65990
|
function derivePlansFromManifestOrFields(manifestOrFields) {
|
|
65896
|
-
const fields$
|
|
65897
|
-
return deriveFieldValidationPlans(fields$
|
|
65991
|
+
const fields$1 = Array.isArray(manifestOrFields) ? manifestOrFields : manifestOrFields.fields ?? [];
|
|
65992
|
+
return deriveFieldValidationPlans(fields$1);
|
|
65898
65993
|
}
|
|
65899
65994
|
function zodAdmissionError(error$1) {
|
|
65900
65995
|
return {
|
|
@@ -65951,8 +66046,8 @@ function visitRepeatedMedia(plan, value, path$4, visit) {
|
|
|
65951
66046
|
if (!Array.isArray(value)) return;
|
|
65952
66047
|
value.forEach((item, index) => {
|
|
65953
66048
|
if (!isPlainRecord(item)) return;
|
|
65954
|
-
const fields$
|
|
65955
|
-
if (fields$
|
|
66049
|
+
const fields$1 = plan.repeatedItemVariants ? plan.repeatedItemVariants.find((variant) => variant.typeId === item._type)?.fields : plan.repeatedItemPlan;
|
|
66050
|
+
if (fields$1) visitPlannedMedia(fields$1, item, [...path$4, index], visit);
|
|
65956
66051
|
});
|
|
65957
66052
|
}
|
|
65958
66053
|
function collectManifestMediaReferences(contract, content) {
|
|
@@ -66047,8 +66142,8 @@ function withLookCapability(declaration) {
|
|
|
66047
66142
|
* field admits, read from its manifest so the design capability cannot drift
|
|
66048
66143
|
* from what render admission accepts. A block without the field admits none.
|
|
66049
66144
|
*/
|
|
66050
|
-
function sectionBackgroundPaintsOfFields(fields$
|
|
66051
|
-
const sectionStyles = fields$
|
|
66145
|
+
function sectionBackgroundPaintsOfFields(fields$1) {
|
|
66146
|
+
const sectionStyles = fields$1.find((field) => field.id === "_sectionStyles");
|
|
66052
66147
|
if (!sectionStyles || sectionStyles.type !== "modal") return [];
|
|
66053
66148
|
const background = sectionStyles.schema.fields.find((field) => field.id === "background");
|
|
66054
66149
|
if (!background || background.type !== "tabGroup") return [];
|
|
@@ -66060,13 +66155,13 @@ function sectionBackgroundPaintsOfFields(fields$2) {
|
|
|
66060
66155
|
].filter((paint) => tabIds.has(paint));
|
|
66061
66156
|
}
|
|
66062
66157
|
/** Pins a designed capability's section background paints to the block's manifest. */
|
|
66063
|
-
function withManifestSectionBackgroundPaints(declaration, fields$
|
|
66158
|
+
function withManifestSectionBackgroundPaints(declaration, fields$1) {
|
|
66064
66159
|
if (declaration.kind !== "capability") return declaration;
|
|
66065
66160
|
return {
|
|
66066
66161
|
kind: "capability",
|
|
66067
66162
|
capability: {
|
|
66068
66163
|
...declaration.capability,
|
|
66069
|
-
sectionBackgroundPaints: sectionBackgroundPaintsOfFields(fields$
|
|
66164
|
+
sectionBackgroundPaints: sectionBackgroundPaintsOfFields(fields$1)
|
|
66070
66165
|
}
|
|
66071
66166
|
};
|
|
66072
66167
|
}
|
|
@@ -66173,47 +66268,6 @@ function createImagePositionField(options = {}) {
|
|
|
66173
66268
|
};
|
|
66174
66269
|
}
|
|
66175
66270
|
|
|
66176
|
-
//#endregion
|
|
66177
|
-
//#region ../blocks/src/system/fields/imageShape.ts
|
|
66178
|
-
const standardImageShapeOptions = [
|
|
66179
|
-
{
|
|
66180
|
-
value: "default",
|
|
66181
|
-
label: "Default"
|
|
66182
|
-
},
|
|
66183
|
-
{
|
|
66184
|
-
value: "square",
|
|
66185
|
-
label: "Square corners"
|
|
66186
|
-
},
|
|
66187
|
-
{
|
|
66188
|
-
value: "rounded",
|
|
66189
|
-
label: "Rounded corners"
|
|
66190
|
-
},
|
|
66191
|
-
{
|
|
66192
|
-
value: "circle",
|
|
66193
|
-
label: "Circle"
|
|
66194
|
-
},
|
|
66195
|
-
{
|
|
66196
|
-
value: "arch",
|
|
66197
|
-
label: "Arch"
|
|
66198
|
-
}
|
|
66199
|
-
];
|
|
66200
|
-
function createImageShapeField(options = {}) {
|
|
66201
|
-
return {
|
|
66202
|
-
id: options.id ?? "imageShape",
|
|
66203
|
-
type: "select",
|
|
66204
|
-
label: options.label ?? "Image shape",
|
|
66205
|
-
...options.description ? { description: options.description } : {},
|
|
66206
|
-
required: false,
|
|
66207
|
-
defaultValue: options.defaultValue ?? "default",
|
|
66208
|
-
multiple: false,
|
|
66209
|
-
options: [...standardImageShapeOptions],
|
|
66210
|
-
ui: {
|
|
66211
|
-
intent: options.uiIntent ?? "display",
|
|
66212
|
-
...options.visibleWhen ? { visibleWhen: options.visibleWhen } : {}
|
|
66213
|
-
}
|
|
66214
|
-
};
|
|
66215
|
-
}
|
|
66216
|
-
|
|
66217
66271
|
//#endregion
|
|
66218
66272
|
//#region ../blocks/src/system/blocks/hero.ts
|
|
66219
66273
|
const heroCopyAndCta = composeFragments([{ fragment: heroCopyFragment }, { fragment: heroCtaRowFragment }]);
|
|
@@ -66568,51 +66622,6 @@ function gapSelectField(options = {}) {
|
|
|
66568
66622
|
});
|
|
66569
66623
|
}
|
|
66570
66624
|
|
|
66571
|
-
//#endregion
|
|
66572
|
-
//#region ../blocks/src/system/fields/aspectRatio.ts
|
|
66573
|
-
const standardAspectRatioOptions = [
|
|
66574
|
-
{
|
|
66575
|
-
value: "auto",
|
|
66576
|
-
label: "Auto (original)"
|
|
66577
|
-
},
|
|
66578
|
-
{
|
|
66579
|
-
value: "16/9",
|
|
66580
|
-
label: "16:9 (Landscape)"
|
|
66581
|
-
},
|
|
66582
|
-
{
|
|
66583
|
-
value: "4/3",
|
|
66584
|
-
label: "4:3 (Standard)"
|
|
66585
|
-
},
|
|
66586
|
-
{
|
|
66587
|
-
value: "1/1",
|
|
66588
|
-
label: "1:1 (Square)"
|
|
66589
|
-
},
|
|
66590
|
-
{
|
|
66591
|
-
value: "3/4",
|
|
66592
|
-
label: "3:4 (Portrait)"
|
|
66593
|
-
},
|
|
66594
|
-
{
|
|
66595
|
-
value: "9/16",
|
|
66596
|
-
label: "9:16 (Tall portrait)"
|
|
66597
|
-
}
|
|
66598
|
-
];
|
|
66599
|
-
function createAspectRatioField(options = {}) {
|
|
66600
|
-
return {
|
|
66601
|
-
id: options.id ?? "aspectRatio",
|
|
66602
|
-
type: "select",
|
|
66603
|
-
label: options.label ?? "Aspect ratio",
|
|
66604
|
-
...options.description ? { description: options.description } : {},
|
|
66605
|
-
required: false,
|
|
66606
|
-
defaultValue: options.defaultValue ?? "auto",
|
|
66607
|
-
multiple: false,
|
|
66608
|
-
options: [...standardAspectRatioOptions],
|
|
66609
|
-
ui: {
|
|
66610
|
-
intent: options.uiIntent ?? "display",
|
|
66611
|
-
...options.visibleWhen ? { visibleWhen: options.visibleWhen } : {}
|
|
66612
|
-
}
|
|
66613
|
-
};
|
|
66614
|
-
}
|
|
66615
|
-
|
|
66616
66625
|
//#endregion
|
|
66617
66626
|
//#region ../blocks/src/system/blocks/intro.ts
|
|
66618
66627
|
function introHeading(className) {
|
|
@@ -66847,18 +66856,11 @@ const introBlockDefinition = { manifest: introManifest };
|
|
|
66847
66856
|
//#endregion
|
|
66848
66857
|
//#region ../blocks/src/system/blocks/body-text.ts
|
|
66849
66858
|
const bodyCopyComposition = composeFragments([{ fragment: bodyCopyFragment }]);
|
|
66850
|
-
const
|
|
66851
|
-
children: stack({
|
|
66852
|
-
|
|
66853
|
-
|
|
66854
|
-
})
|
|
66855
|
-
const introLayout = styledSection({
|
|
66856
|
-
children: stack({ className: "rb-container" }, bodyCopyComposition.layout),
|
|
66857
|
-
spacing: "medium",
|
|
66858
|
-
baseClass: ""
|
|
66859
|
-
});
|
|
66860
|
-
const narrowLayout = styledSection({
|
|
66861
|
-
children: stack({ className: "rb-container" }, bodyCopyComposition.layout),
|
|
66859
|
+
const bodyTextLayout = styledSection({
|
|
66860
|
+
children: stack({
|
|
66861
|
+
className: "rb-container",
|
|
66862
|
+
...lookSlot("frame")
|
|
66863
|
+
}, bodyCopyComposition.layout),
|
|
66862
66864
|
spacing: "medium",
|
|
66863
66865
|
baseClass: ""
|
|
66864
66866
|
});
|
|
@@ -66872,11 +66874,11 @@ const bodyTextManifest = createBlockManifest({
|
|
|
66872
66874
|
fragment: bodyCopyFragment,
|
|
66873
66875
|
fieldPriority: 0
|
|
66874
66876
|
}],
|
|
66875
|
-
layout:
|
|
66877
|
+
layout: bodyTextLayout,
|
|
66876
66878
|
variants: {
|
|
66877
|
-
prose:
|
|
66878
|
-
intro:
|
|
66879
|
-
narrow:
|
|
66879
|
+
prose: bodyTextLayout,
|
|
66880
|
+
intro: bodyTextLayout,
|
|
66881
|
+
narrow: bodyTextLayout
|
|
66880
66882
|
},
|
|
66881
66883
|
variantMeaning: { kind: "arrangement" },
|
|
66882
66884
|
defaultVariant: "prose",
|
|
@@ -67636,10 +67638,7 @@ const transformDefinitions = {
|
|
|
67636
67638
|
"layout.footerBottomBarClass": footerBottomBarClassTransform,
|
|
67637
67639
|
"layout.footerBottomBarContainerClass": footerBottomBarContainerClassTransform,
|
|
67638
67640
|
"layout.footerBottomBarStyle": footerBottomBarStyleTransform,
|
|
67639
|
-
"layout.footerSplitMainClass": footerSplitMainClassTransform,
|
|
67640
67641
|
"layout.footerLogoClass": footerLogoClassTransform,
|
|
67641
|
-
"layout.footerLogoMediaClass": footerLogoMediaClassTransform,
|
|
67642
|
-
"layout.footerLogoTextVisible": footerLogoTextVisibleTransform,
|
|
67643
67642
|
"ui.headingClassFromAlignment": headingClassFromAlignment,
|
|
67644
67643
|
"ui.bodyClassFromAlignment": bodyClassFromAlignment,
|
|
67645
67644
|
"ui.stackAlignFromAlignment": stackAlignFromAlignment,
|
|
@@ -67963,7 +67962,14 @@ const footerNavGroupsLayout = stack({
|
|
|
67963
67962
|
}, [text({
|
|
67964
67963
|
as: "h3",
|
|
67965
67964
|
className: "rb-label",
|
|
67966
|
-
|
|
67965
|
+
"data-slot": { $bind: { from: "content.footerRuntime.slots.group-label" } },
|
|
67966
|
+
style: { $bind: {
|
|
67967
|
+
from: "content.footerRuntime.arrangement",
|
|
67968
|
+
transforms: [{
|
|
67969
|
+
id: "layout.footerModuleInkStyle",
|
|
67970
|
+
options: { opacity: 70 }
|
|
67971
|
+
}]
|
|
67972
|
+
} }
|
|
67967
67973
|
}, when("group.label"), bind("group.label")), stack({
|
|
67968
67974
|
gap: "sm",
|
|
67969
67975
|
align: "start",
|
|
@@ -67994,6 +68000,14 @@ const footerMailingListBindings = {
|
|
|
67994
68000
|
targeting: { $bind: { from: "module.engagement.runtime.targeting" } }
|
|
67995
68001
|
};
|
|
67996
68002
|
const footerSpamProtectionBinding = { spamProtectionEnabled: { $bind: { from: "$root.spamProtectionEnabled" } } };
|
|
68003
|
+
const brandMedia = media({ className: "rb-h-10 rb-w-auto" }, when("module.showLogo", { equals: true }), when("content.logo"), bind("content", { transforms: [{
|
|
68004
|
+
id: "layout.chromeLogo",
|
|
68005
|
+
options: { surface: "footer-root" }
|
|
68006
|
+
}] }));
|
|
68007
|
+
const brandTitle = text({
|
|
68008
|
+
as: "strong",
|
|
68009
|
+
className: "footer-logo-text rb-nav-text"
|
|
68010
|
+
}, when("module.showTitle", { equals: true }), bind("site.title", { fallback: "Your Site" }));
|
|
67997
68011
|
const brandLogo = link$1({
|
|
67998
68012
|
href: "/",
|
|
67999
68013
|
className: { $bind: {
|
|
@@ -68004,20 +68018,39 @@ const brandLogo = link$1({
|
|
|
68004
68018
|
}],
|
|
68005
68019
|
fallback: "footer-logo rb-inline-flex rb-items-center rb-gap-3 rb-no-underline"
|
|
68006
68020
|
} }
|
|
68007
|
-
}, [
|
|
68008
|
-
|
|
68009
|
-
|
|
68010
|
-
|
|
68011
|
-
|
|
68012
|
-
|
|
68013
|
-
|
|
68014
|
-
|
|
68015
|
-
|
|
68016
|
-
|
|
68017
|
-
|
|
68018
|
-
|
|
68019
|
-
|
|
68020
|
-
},
|
|
68021
|
+
}, [brandMedia, brandTitle], (node) => ({
|
|
68022
|
+
...node,
|
|
68023
|
+
$when: {
|
|
68024
|
+
when: {
|
|
68025
|
+
from: "module",
|
|
68026
|
+
transforms: [{ id: "layout.footerBrandArrangement" }]
|
|
68027
|
+
},
|
|
68028
|
+
equals: "row"
|
|
68029
|
+
}
|
|
68030
|
+
}));
|
|
68031
|
+
const centredBrand = stack({
|
|
68032
|
+
gap: "md",
|
|
68033
|
+
align: "center"
|
|
68034
|
+
}, [link$1({
|
|
68035
|
+
href: "/",
|
|
68036
|
+
"data-slot": { $bind: { from: "module.slots.media" } },
|
|
68037
|
+
className: "footer-logo rb-inline-flex rb-items-center rb-no-underline"
|
|
68038
|
+
}, [brandMedia], when("module.slots.media")), {
|
|
68039
|
+
...brandTitle,
|
|
68040
|
+
props: {
|
|
68041
|
+
...brandTitle.props,
|
|
68042
|
+
"data-slot": { $bind: { from: "module.slots.heading" } }
|
|
68043
|
+
}
|
|
68044
|
+
}], (node) => ({
|
|
68045
|
+
...node,
|
|
68046
|
+
$when: {
|
|
68047
|
+
when: {
|
|
68048
|
+
from: "module",
|
|
68049
|
+
transforms: [{ id: "layout.footerBrandArrangement" }]
|
|
68050
|
+
},
|
|
68051
|
+
equals: "centred"
|
|
68052
|
+
}
|
|
68053
|
+
}));
|
|
68021
68054
|
const navigation = stack({
|
|
68022
68055
|
gap: "md",
|
|
68023
68056
|
className: "rb-w-full"
|
|
@@ -68042,14 +68075,18 @@ const address = text({
|
|
|
68042
68075
|
}, when("module.kind", { equals: "business-address" }), bind("module.address"));
|
|
68043
68076
|
const contact = stack({
|
|
68044
68077
|
gap: "sm",
|
|
68045
|
-
className:
|
|
68078
|
+
className: { $bind: {
|
|
68079
|
+
from: "module.contactClassName",
|
|
68080
|
+
fallback: "rb-items-start"
|
|
68081
|
+
} }
|
|
68046
68082
|
}, [link$1({
|
|
68047
68083
|
href: { $bind: { from: "contactLink.href" } },
|
|
68048
68084
|
className: "rb-nav-text rb-break-words transition-theme-standard"
|
|
68049
68085
|
}, [text({ as: "span" }, bind("contactLink.label"))], repeat("module.contactLinks", "contactLink"))], when("module.kind", { equals: "contact" }));
|
|
68050
68086
|
const hours = stack({
|
|
68051
68087
|
gap: "sm",
|
|
68052
|
-
className: "rb-w-full"
|
|
68088
|
+
className: "rb-w-full",
|
|
68089
|
+
"data-slot": { $bind: { from: "module.slots.schedule" } }
|
|
68053
68090
|
}, [inline({ className: "rb-flex rb-w-full rb-justify-between rb-gap-4" }, [text({
|
|
68054
68091
|
as: "span",
|
|
68055
68092
|
className: "rb-label"
|
|
@@ -68060,7 +68097,10 @@ const hours = stack({
|
|
|
68060
68097
|
as: "p",
|
|
68061
68098
|
className: "rb-caption rb-opacity-70"
|
|
68062
68099
|
}, bind("module.timeZone"), when("module.timeZone"))], when("module.kind", { equals: "opening-hours" }));
|
|
68063
|
-
const socials = inline({
|
|
68100
|
+
const socials = inline({
|
|
68101
|
+
className: "rb-footer-socials",
|
|
68102
|
+
"data-slot": { $bind: { from: "module.slots.social" } }
|
|
68103
|
+
}, [link$1({
|
|
68064
68104
|
href: { $bind: { from: "social.href" } },
|
|
68065
68105
|
target: "_blank",
|
|
68066
68106
|
rel: "noreferrer noopener",
|
|
@@ -68069,7 +68109,14 @@ const socials = inline({ className: "rb-footer-socials" }, [link$1({
|
|
|
68069
68109
|
}, [icon({ className: "rb-footer-social-icon" }, bind("social.icon"), when("social.icon")), text({ as: "span" }, bind("social.label"), when("social.icon", { equals: null }))], repeat("module.socialLinks", "social"))], when("module.kind", { equals: "social-links" }));
|
|
68070
68110
|
const authoredCopy = richText({
|
|
68071
68111
|
className: "rb-prose rb-prose-sm rb-max-w-none",
|
|
68072
|
-
|
|
68112
|
+
"data-slot": { $bind: { from: "module.slots.copy" } },
|
|
68113
|
+
style: { $bind: {
|
|
68114
|
+
from: "content.footerRuntime.arrangement",
|
|
68115
|
+
transforms: [{
|
|
68116
|
+
id: "layout.footerModuleInkStyle",
|
|
68117
|
+
options: { opacity: 80 }
|
|
68118
|
+
}]
|
|
68119
|
+
} }
|
|
68073
68120
|
}, when("module.content"), bind("module.content", { transforms: [{
|
|
68074
68121
|
id: "content.interpolateRichTextTokens",
|
|
68075
68122
|
options: { tokens: ["year", "site_name"] }
|
|
@@ -68107,19 +68154,32 @@ const platformAttribution = el("div", {
|
|
|
68107
68154
|
], when("module.kind", { equals: "attribution" }));
|
|
68108
68155
|
const footerModule = stack({
|
|
68109
68156
|
gap: "md",
|
|
68110
|
-
align:
|
|
68157
|
+
align: { $bind: {
|
|
68158
|
+
from: "module.align",
|
|
68159
|
+
fallback: "start"
|
|
68160
|
+
} },
|
|
68161
|
+
className: { $bind: { from: "module.className" } },
|
|
68111
68162
|
"data-preview-footer-module-id": { $bind: { from: "module.id" } }
|
|
68112
68163
|
}, [
|
|
68113
68164
|
text({
|
|
68114
68165
|
as: "h2",
|
|
68115
68166
|
className: "rb-label",
|
|
68116
|
-
|
|
68167
|
+
"data-slot": { $bind: { from: "module.slots.group-label" } },
|
|
68168
|
+
style: { $bind: {
|
|
68169
|
+
from: "content.footerRuntime.arrangement",
|
|
68170
|
+
transforms: [{
|
|
68171
|
+
id: "layout.footerModuleInkStyle",
|
|
68172
|
+
options: { opacity: 70 }
|
|
68173
|
+
}]
|
|
68174
|
+
} }
|
|
68117
68175
|
}, bind("module.heading"), when("module.heading")),
|
|
68118
68176
|
brandLogo,
|
|
68177
|
+
centredBrand,
|
|
68119
68178
|
navigation,
|
|
68120
68179
|
stack({
|
|
68121
68180
|
gap: "sm",
|
|
68122
|
-
className: "rb-w-full"
|
|
68181
|
+
className: "rb-w-full",
|
|
68182
|
+
"data-slot": { $bind: { from: "module.slots.navigation" } }
|
|
68123
68183
|
}, [legalNavigation], when("module.kind", { equals: "legal-navigation" })),
|
|
68124
68184
|
address,
|
|
68125
68185
|
contact,
|
|
@@ -68132,19 +68192,25 @@ const footerModule = stack({
|
|
|
68132
68192
|
], repeat("group.modules", "module"));
|
|
68133
68193
|
const footerGroup = stack({
|
|
68134
68194
|
gap: "md",
|
|
68135
|
-
align:
|
|
68195
|
+
align: { $bind: {
|
|
68196
|
+
from: "group.align",
|
|
68197
|
+
fallback: "stretch"
|
|
68198
|
+
} },
|
|
68136
68199
|
className: { $bind: {
|
|
68137
68200
|
from: "group.className",
|
|
68138
68201
|
fallback: "rb-min-w-0"
|
|
68139
68202
|
} },
|
|
68203
|
+
"data-slot": { $bind: { from: "group.slot" } },
|
|
68140
68204
|
"data-footer-group": { $bind: { from: "group.kind" } }
|
|
68141
68205
|
}, [footerModule], repeat("region.groups", "group"));
|
|
68142
68206
|
const footerMainRegion = stack({
|
|
68143
68207
|
className: { $bind: { from: "region.className" } },
|
|
68208
|
+
"data-slot": { $bind: { from: "region.slot" } },
|
|
68144
68209
|
"data-footer-region": { $bind: { from: "region.kind" } }
|
|
68145
68210
|
}, [footerGroup], when("region.kind", { equals: "main" }), repeat("content.footerRuntime.regions", "region"));
|
|
68146
68211
|
const footerEngagementRegion = stack({
|
|
68147
68212
|
className: { $bind: { from: "region.className" } },
|
|
68213
|
+
"data-slot": { $bind: { from: "region.slot" } },
|
|
68148
68214
|
"data-footer-region": "engagement-row"
|
|
68149
68215
|
}, [footerGroup], when("region.kind", { equals: "engagement-row" }), repeat("content.footerRuntime.regions", "region"));
|
|
68150
68216
|
const footerBottomRegion = stack({ className: { $bind: {
|
|
@@ -68161,6 +68227,7 @@ const footerBottomRegion = stack({ className: { $bind: {
|
|
|
68161
68227
|
from: "$root.theme.footer",
|
|
68162
68228
|
transforms: [{ id: "layout.footerBottomBarStyle" }]
|
|
68163
68229
|
} },
|
|
68230
|
+
"data-slot": { $bind: { from: "region.slot" } },
|
|
68164
68231
|
"data-footer-region": "bottom"
|
|
68165
68232
|
}, [footerGroup])], when("region.kind", { equals: "bottom" }), repeat("content.footerRuntime.regions", "region"));
|
|
68166
68233
|
const footerLayout = section$1({
|
|
@@ -68175,6 +68242,7 @@ const footerLayout = section$1({
|
|
|
68175
68242
|
transforms: [{ id: "layout.footerRootStyle" }],
|
|
68176
68243
|
fallback: mergeStyles(backgroundColorStyle("surface"), surfaceForegroundStyle({ text: "rgb(var(--tb-text))" }), borderColorStyle("border"))
|
|
68177
68244
|
} },
|
|
68245
|
+
"data-arrangement": { $bind: { from: "content.footerRuntime.arrangementHook" } },
|
|
68178
68246
|
"data-footer-membership": { $bind: { from: "content.footerRuntime.membershipKey" } }
|
|
68179
68247
|
}, [
|
|
68180
68248
|
footerEngagementRegion,
|
|
@@ -69467,7 +69535,7 @@ function createCarouselBehaviorFields(options = {}) {
|
|
|
69467
69535
|
arrowVisibility: options.defaults?.arrowVisibility ?? "hover"
|
|
69468
69536
|
};
|
|
69469
69537
|
const intent = options.ui?.intent ?? "behavior";
|
|
69470
|
-
const fields$
|
|
69538
|
+
const fields$1 = [
|
|
69471
69539
|
{
|
|
69472
69540
|
id: ids.transition,
|
|
69473
69541
|
type: "select",
|
|
@@ -69541,7 +69609,7 @@ function createCarouselBehaviorFields(options = {}) {
|
|
|
69541
69609
|
ui: { intent }
|
|
69542
69610
|
}
|
|
69543
69611
|
];
|
|
69544
|
-
return fields$
|
|
69612
|
+
return fields$1;
|
|
69545
69613
|
}
|
|
69546
69614
|
|
|
69547
69615
|
//#endregion
|
|
@@ -69764,17 +69832,30 @@ const mediaTextManifest = createBlockManifest({
|
|
|
69764
69832
|
}],
|
|
69765
69833
|
fallback: ""
|
|
69766
69834
|
} };
|
|
69767
|
-
const copyHeading = el("div", {
|
|
69835
|
+
const copyHeading = el("div", {
|
|
69836
|
+
className: titleClassNameFromAlignment,
|
|
69837
|
+
...lookSlot("head")
|
|
69838
|
+
}, [text({
|
|
69768
69839
|
as: "p",
|
|
69769
|
-
className: eyebrowClassName("rb-eyebrow heading-eyebrow")
|
|
69770
|
-
|
|
69771
|
-
|
|
69772
|
-
|
|
69773
|
-
|
|
69774
|
-
|
|
69775
|
-
|
|
69776
|
-
|
|
69840
|
+
className: eyebrowClassName("rb-eyebrow heading-eyebrow"),
|
|
69841
|
+
...lookSlot("eyebrow")
|
|
69842
|
+
}, when("content.eyebrow"), bind("content.eyebrow")), text({
|
|
69843
|
+
as: "h2",
|
|
69844
|
+
...lookSlot("heading")
|
|
69845
|
+
}, bind("content.title"))], when("content.title"));
|
|
69846
|
+
const textContentNodes = (className) => {
|
|
69847
|
+
const props$1 = {
|
|
69848
|
+
className,
|
|
69849
|
+
...lookSlot("intro"),
|
|
69850
|
+
leadParagraphSlot: { $bind: { from: "content._lookSlots.lede" } },
|
|
69851
|
+
lookSlots: { $bind: { from: "content._lookSlots" } }
|
|
69852
|
+
};
|
|
69853
|
+
return [styledCard([richText(props$1, bind("content.text"))], mediaTextCardOptions, when("content.wrapTextInCard")), richText(props$1, when("content.wrapTextInCard", { not: true }), bind("content.text"))];
|
|
69854
|
+
};
|
|
69855
|
+
const defaultTextColumn = el("div", {}, textContentNodes("rb-prose rb-max-w-none"));
|
|
69856
|
+
const bioTextColumn = el("div", { className: "rb-flex rb-h-full rb-w-full rb-max-w-prose rb-flex-col rb-justify-center rb-gap-5" }, [copyHeading, ...textContentNodes(bodyClassNameFromAlignment)]);
|
|
69777
69857
|
const defaultImageCommonProps = {
|
|
69858
|
+
...lookSlot("photo"),
|
|
69778
69859
|
className: { $bind: {
|
|
69779
69860
|
from: "content.imageShape",
|
|
69780
69861
|
transforms: [{
|
|
@@ -69814,6 +69895,7 @@ const mediaTextManifest = createBlockManifest({
|
|
|
69814
69895
|
slidesToShow: 1
|
|
69815
69896
|
}, [media(defaultImageCommonProps, bind("item.image"), repeat("content.images", "item"))]);
|
|
69816
69897
|
const defaultImagesLayout = el("div", {}, [responsiveTwoColumn({
|
|
69898
|
+
lookSlots: true,
|
|
69817
69899
|
image: el("div", {}, [el("div", {}, [defaultSingleImage], whenImagesLength(1)), el("div", {}, [defaultCarouselImages], whenImagesLength(1, { not: true }))]),
|
|
69818
69900
|
text: defaultTextColumn,
|
|
69819
69901
|
ratioFrom: "content.ratio",
|
|
@@ -69825,6 +69907,7 @@ const mediaTextManifest = createBlockManifest({
|
|
|
69825
69907
|
textWrapperClassName: "rb-w-full rb-min-w-0 rb-flex-1"
|
|
69826
69908
|
})], whenImagesLength(0, { not: true }));
|
|
69827
69909
|
const bioImagesLayout = el("div", {}, [responsiveTwoColumn({
|
|
69910
|
+
lookSlots: true,
|
|
69828
69911
|
image: el("div", {}, [el("div", {}, [defaultSingleImage], whenImagesLength(1)), el("div", {}, [defaultCarouselImages], whenImagesLength(1, { not: true }))]),
|
|
69829
69912
|
text: bioTextColumn,
|
|
69830
69913
|
ratioFrom: "content.ratio",
|
|
@@ -69835,15 +69918,15 @@ const mediaTextManifest = createBlockManifest({
|
|
|
69835
69918
|
imageWrapperClassName: "rb-w-full rb-shrink-0",
|
|
69836
69919
|
textWrapperClassName: "rb-w-full rb-min-w-0 rb-flex-1 rb-self-stretch"
|
|
69837
69920
|
})], whenImagesLength(0, { not: true }));
|
|
69838
|
-
const defaultTextOnlyLayout = el("div",
|
|
69839
|
-
const bioTextOnlyLayout = el("div", {
|
|
69840
|
-
|
|
69841
|
-
|
|
69842
|
-
|
|
69843
|
-
|
|
69844
|
-
|
|
69845
|
-
|
|
69846
|
-
], whenImagesLength(0));
|
|
69921
|
+
const defaultTextOnlyLayout = el("div", lookSlot("copy"), textContentNodes("rb-prose rb-max-w-none"), whenImagesLength(0));
|
|
69922
|
+
const bioTextOnlyLayout = el("div", {
|
|
69923
|
+
className: "rb-flex rb-w-full rb-max-w-prose rb-flex-col rb-gap-5",
|
|
69924
|
+
...lookSlot("copy")
|
|
69925
|
+
}, [text({
|
|
69926
|
+
as: "h2",
|
|
69927
|
+
className: titleClassNameFromAlignment,
|
|
69928
|
+
...lookSlot("heading")
|
|
69929
|
+
}, when("content.title"), bind("content.title")), ...textContentNodes(bodyClassNameFromAlignment)], whenImagesLength(0));
|
|
69847
69930
|
const defaultInner = el("div", {}, [defaultImagesLayout, defaultTextOnlyLayout]);
|
|
69848
69931
|
const bioInner = el("div", {}, [bioImagesLayout, bioTextOnlyLayout]);
|
|
69849
69932
|
const defaultLayout$1 = styledSection({
|
|
@@ -69864,13 +69947,36 @@ const mediaTextManifest = createBlockManifest({
|
|
|
69864
69947
|
baseClass: "",
|
|
69865
69948
|
spacing: "medium"
|
|
69866
69949
|
});
|
|
69950
|
+
const circleLayout = styledSection({
|
|
69951
|
+
baseClass: "",
|
|
69952
|
+
spacing: "medium",
|
|
69953
|
+
children: styledContainer({ children: el("div", lookSlot("frame"), [el("div", lookSlot("media"), [
|
|
69954
|
+
el("div", {}, [when("content.images[0].image")(defaultSingleImage)], whenImagesLength(1)),
|
|
69955
|
+
el("div", {}, [el("div", {}, [defaultCarouselImages], whenImagesLength(1, { not: true }))], whenImagesLength(0, { not: true })),
|
|
69956
|
+
el("div", {}, [when("content.images[0].image")(defaultSingleImage)], whenImagesLength(0))
|
|
69957
|
+
]), el("div", lookSlot("copy"), [el("div", lookSlot("head"), [text({
|
|
69958
|
+
as: "p",
|
|
69959
|
+
className: eyebrowClassName("rb-eyebrow heading-eyebrow"),
|
|
69960
|
+
...lookSlot("eyebrow")
|
|
69961
|
+
}, when("content.eyebrow"), bind("content.eyebrow")), text({
|
|
69962
|
+
as: "h2",
|
|
69963
|
+
...lookSlot("heading")
|
|
69964
|
+
}, bind("content.title"), when("content.title", { authoringPresence: {
|
|
69965
|
+
kind: "recover-empty-when-active",
|
|
69966
|
+
placeholder: "Add heading"
|
|
69967
|
+
} }))]), defaultTextColumn])]) })
|
|
69968
|
+
});
|
|
69867
69969
|
return {
|
|
69868
69970
|
layout: defaultLayout$1,
|
|
69869
69971
|
variants: {
|
|
69870
69972
|
default: defaultLayout$1,
|
|
69871
|
-
bio: bioLayout
|
|
69973
|
+
bio: bioLayout,
|
|
69974
|
+
"circle-beside": circleLayout
|
|
69975
|
+
},
|
|
69976
|
+
variantMeaning: {
|
|
69977
|
+
kind: "arrangement",
|
|
69978
|
+
lookOnlyKeys: ["circle-beside"]
|
|
69872
69979
|
},
|
|
69873
|
-
variantMeaning: { kind: "arrangement" },
|
|
69874
69980
|
defaultVariant: "default",
|
|
69875
69981
|
variantOptions: {
|
|
69876
69982
|
default: { label: "Default" },
|
|
@@ -70718,7 +70824,7 @@ const eventSpotlightFields = [
|
|
|
70718
70824
|
})
|
|
70719
70825
|
];
|
|
70720
70826
|
const eventSpotlightLayout = [styledSection({
|
|
70721
|
-
children: sectionContainer([...
|
|
70827
|
+
children: sectionContainer([...sectionHeaderLayoutNodes(), el("event-spotlight", {
|
|
70722
70828
|
events: { $bind: { from: "data.events" } },
|
|
70723
70829
|
layout: { $bind: {
|
|
70724
70830
|
from: "content.layout",
|
|
@@ -72207,234 +72313,9 @@ const embedBlockDefinition = {
|
|
|
72207
72313
|
};
|
|
72208
72314
|
|
|
72209
72315
|
//#endregion
|
|
72210
|
-
//#region ../blocks/src/system/blocks/image-gallery.ts
|
|
72211
|
-
const
|
|
72212
|
-
|
|
72213
|
-
const gap = opts?.gap ?? "md";
|
|
72214
|
-
const withExtraClass = (baseClass) => opts?.className ? `${baseClass} ${opts.className}` : baseClass;
|
|
72215
|
-
if (opts?.fullWidth) {
|
|
72216
|
-
return stack({
|
|
72217
|
-
gap,
|
|
72218
|
-
className: withExtraClass("rb-container-bleed")
|
|
72219
|
-
}, children);
|
|
72220
|
-
}
|
|
72221
|
-
return stack({
|
|
72222
|
-
gap,
|
|
72223
|
-
className: { $bind: {
|
|
72224
|
-
from: "content.fullBleed",
|
|
72225
|
-
transforms: [{
|
|
72226
|
-
id: "ui.conditionalClass",
|
|
72227
|
-
options: {
|
|
72228
|
-
whenTrue: withExtraClass("rb-container-bleed"),
|
|
72229
|
-
whenFalse: withExtraClass("rb-container")
|
|
72230
|
-
}
|
|
72231
|
-
}],
|
|
72232
|
-
fallback: withExtraClass("rb-container")
|
|
72233
|
-
} }
|
|
72234
|
-
}, children);
|
|
72235
|
-
};
|
|
72236
|
-
const galleryItem = (options) => stack({
|
|
72237
|
-
gap: "xs",
|
|
72238
|
-
className: options.containerClassName
|
|
72239
|
-
}, [el("figure", {
|
|
72240
|
-
className: { $bind: {
|
|
72241
|
-
from: "content",
|
|
72242
|
-
transforms: [{ id: "ui.imageGalleryTileClass" }],
|
|
72243
|
-
fallback: "rb-overflow-hidden rb-relative rb-rounded-3xl rb-border-2"
|
|
72244
|
-
} },
|
|
72245
|
-
style: { $bind: {
|
|
72246
|
-
from: "content",
|
|
72247
|
-
transforms: [{ id: "ui.imageGalleryTileStyle" }]
|
|
72248
|
-
} }
|
|
72249
|
-
}, [media({
|
|
72250
|
-
className: {
|
|
72251
|
-
$bind: {
|
|
72252
|
-
from: "content.imageFilter",
|
|
72253
|
-
transforms: [{ id: "ui.imageGalleryFilterClass" }],
|
|
72254
|
-
fallback: ""
|
|
72255
|
-
},
|
|
72256
|
-
$prepend: `${options.imageClassName} `
|
|
72257
|
-
},
|
|
72258
|
-
...options.bindAspectRatio && { style: { aspectRatio: { $bind: { from: "content.aspectRatio" } } } }
|
|
72259
|
-
}, bind("item.image"))]), text({
|
|
72260
|
-
as: "figcaption",
|
|
72261
|
-
className: "rb-caption rb-text-center",
|
|
72262
|
-
style: textColorStyle("mutedText")
|
|
72263
|
-
}, bind("item.caption"), when("item.caption"))], repeat("content.images", "item"));
|
|
72264
|
-
const gridLayout = grid$1({ className: "rb-grid rb-grid-cols-1 rb-gap-4 rb-sm-grid-cols-2 rb-md-grid-cols-3" }, [galleryItem({
|
|
72265
|
-
imageClassName: "rb-w-full rb-h-full rb-object-cover",
|
|
72266
|
-
bindAspectRatio: true
|
|
72267
|
-
})]);
|
|
72268
|
-
const carouselLayout = carousel({
|
|
72269
|
-
className: { $bind: {
|
|
72270
|
-
from: "content.fullBleed",
|
|
72271
|
-
transforms: [{
|
|
72272
|
-
id: "ui.conditionalClass",
|
|
72273
|
-
options: {
|
|
72274
|
-
whenTrue: "rb-image-gallery-carousel rb-image-gallery-carousel--full-bleed",
|
|
72275
|
-
whenFalse: "rb-image-gallery-carousel"
|
|
72276
|
-
}
|
|
72277
|
-
}],
|
|
72278
|
-
fallback: "rb-image-gallery-carousel"
|
|
72279
|
-
} },
|
|
72280
|
-
slidesToShow: {
|
|
72281
|
-
mobile: { $bind: {
|
|
72282
|
-
from: "content.slidesToShow",
|
|
72283
|
-
fallback: 1
|
|
72284
|
-
} },
|
|
72285
|
-
tablet: { $bind: { from: "content.slidesToShowTablet" } },
|
|
72286
|
-
desktop: { $bind: { from: "content.slidesToShowDesktop" } }
|
|
72287
|
-
},
|
|
72288
|
-
transition: { $bind: {
|
|
72289
|
-
from: "content.transition",
|
|
72290
|
-
fallback: "slide"
|
|
72291
|
-
} },
|
|
72292
|
-
showControls: { $bind: {
|
|
72293
|
-
from: "content.showControls",
|
|
72294
|
-
fallback: true
|
|
72295
|
-
} },
|
|
72296
|
-
showDots: { $bind: {
|
|
72297
|
-
from: "content.showDots",
|
|
72298
|
-
fallback: false
|
|
72299
|
-
} },
|
|
72300
|
-
autoplay: { $bind: {
|
|
72301
|
-
from: "content.autoplay",
|
|
72302
|
-
fallback: false
|
|
72303
|
-
} },
|
|
72304
|
-
autoplayDelay: { $bind: {
|
|
72305
|
-
from: "content.autoplayDelay",
|
|
72306
|
-
fallback: 5e3,
|
|
72307
|
-
coerce: "number"
|
|
72308
|
-
} },
|
|
72309
|
-
arrowVisibility: { $bind: {
|
|
72310
|
-
from: "content.arrowVisibility",
|
|
72311
|
-
fallback: "always"
|
|
72312
|
-
} },
|
|
72313
|
-
loop: { $bind: {
|
|
72314
|
-
from: "content.loop",
|
|
72315
|
-
fallback: true
|
|
72316
|
-
} }
|
|
72317
|
-
}, [galleryItem({
|
|
72318
|
-
imageClassName: "rb-w-full rb-h-full rb-object-cover",
|
|
72319
|
-
bindAspectRatio: true
|
|
72320
|
-
})]);
|
|
72321
|
-
const masonryLayout = el("div", { style: {
|
|
72322
|
-
columns: "3 250px",
|
|
72323
|
-
columnGap: "1rem"
|
|
72324
|
-
} }, [galleryItem({
|
|
72325
|
-
imageClassName: "rb-w-full rb-h-auto",
|
|
72326
|
-
bindAspectRatio: false,
|
|
72327
|
-
containerClassName: "rb-mb-4 rb-break-inside-avoid"
|
|
72328
|
-
})]);
|
|
72329
|
-
const marqueeTileBase = stack({
|
|
72330
|
-
gap: "xs",
|
|
72331
|
-
className: "rb-flex-shrink-0"
|
|
72332
|
-
}, [el("figure", {
|
|
72333
|
-
className: { $bind: {
|
|
72334
|
-
from: "content",
|
|
72335
|
-
transforms: [{ id: "ui.imageGalleryTileClass" }],
|
|
72336
|
-
fallback: "rb-overflow-hidden rb-relative rb-rounded-3xl rb-border-2"
|
|
72337
|
-
} },
|
|
72338
|
-
style: { $bind: {
|
|
72339
|
-
from: "content",
|
|
72340
|
-
transforms: [{ id: "ui.imageGalleryMarqueeTileStyle" }]
|
|
72341
|
-
} }
|
|
72342
|
-
}, [media({
|
|
72343
|
-
className: {
|
|
72344
|
-
$bind: {
|
|
72345
|
-
from: "content.imageFilter",
|
|
72346
|
-
transforms: [{ id: "ui.imageGalleryFilterClass" }],
|
|
72347
|
-
fallback: ""
|
|
72348
|
-
},
|
|
72349
|
-
$prepend: "rb-w-full rb-h-full rb-object-cover "
|
|
72350
|
-
},
|
|
72351
|
-
style: { aspectRatio: "1 / 1" }
|
|
72352
|
-
}, bind("item.image"))]), text({
|
|
72353
|
-
as: "figcaption",
|
|
72354
|
-
className: "rb-caption rb-text-center",
|
|
72355
|
-
style: textColorStyle("mutedText")
|
|
72356
|
-
}, bind("item.caption"), when("item.caption"))]);
|
|
72357
|
-
const marqueeTile = {
|
|
72358
|
-
...marqueeTileBase,
|
|
72359
|
-
$repeat: {
|
|
72360
|
-
collection: {
|
|
72361
|
-
from: "content.images",
|
|
72362
|
-
pick: "collection",
|
|
72363
|
-
transforms: [{
|
|
72364
|
-
id: "array.marqueeLoop",
|
|
72365
|
-
options: { minItems: 10 }
|
|
72366
|
-
}]
|
|
72367
|
-
},
|
|
72368
|
-
itemName: "item",
|
|
72369
|
-
indexName: "index"
|
|
72370
|
-
}
|
|
72371
|
-
};
|
|
72372
|
-
const marqueeLayout = el("div", { className: {
|
|
72373
|
-
$bind: {
|
|
72374
|
-
from: "content.marqueePauseOnHover",
|
|
72375
|
-
transforms: [{
|
|
72376
|
-
id: "ui.conditionalClass",
|
|
72377
|
-
options: {
|
|
72378
|
-
whenTrue: "rb-image-gallery-marquee rb-marquee-pause-on-hover",
|
|
72379
|
-
whenFalse: "rb-image-gallery-marquee"
|
|
72380
|
-
}
|
|
72381
|
-
}],
|
|
72382
|
-
fallback: "rb-image-gallery-marquee"
|
|
72383
|
-
},
|
|
72384
|
-
$prepend: "rb-py-4 "
|
|
72385
|
-
} }, [el("div", {
|
|
72386
|
-
className: "rb-flex rb-animate-marquee rb-transform-gpu rb-will-change-transform",
|
|
72387
|
-
style: {
|
|
72388
|
-
"--rb-marquee-duration": { $bind: {
|
|
72389
|
-
from: "content.marqueeSpeed",
|
|
72390
|
-
transforms: [{ id: "ui.imageGalleryMarqueeDuration" }],
|
|
72391
|
-
fallback: "40s"
|
|
72392
|
-
} },
|
|
72393
|
-
"--rb-marquee-direction": { $bind: {
|
|
72394
|
-
from: "content.marqueeDirection",
|
|
72395
|
-
transforms: [{ id: "ui.imageGalleryMarqueeDirection" }],
|
|
72396
|
-
fallback: "normal"
|
|
72397
|
-
} }
|
|
72398
|
-
}
|
|
72399
|
-
}, [marqueeTile])]);
|
|
72400
|
-
const emptyState$1 = {
|
|
72401
|
-
type: "stack",
|
|
72402
|
-
props: {
|
|
72403
|
-
align: "center",
|
|
72404
|
-
gap: "md",
|
|
72405
|
-
className: "rb-py-12 rb-text-center rb-rounded-xl rb-border rb-border-dashed",
|
|
72406
|
-
style: mergeStyles(borderColorStyle("border"), backgroundColorStyle("surface"))
|
|
72407
|
-
},
|
|
72408
|
-
children: [{
|
|
72409
|
-
type: "text",
|
|
72410
|
-
props: {
|
|
72411
|
-
as: "p",
|
|
72412
|
-
style: textColorStyle("mutedText")
|
|
72413
|
-
},
|
|
72414
|
-
$bind: {
|
|
72415
|
-
from: "content.emptyMessage",
|
|
72416
|
-
fallback: "Add images to create your gallery"
|
|
72417
|
-
}
|
|
72418
|
-
}],
|
|
72419
|
-
$when: {
|
|
72420
|
-
when: {
|
|
72421
|
-
from: "content.images",
|
|
72422
|
-
transforms: [{ id: "array.length" }]
|
|
72423
|
-
},
|
|
72424
|
-
equals: 0
|
|
72425
|
-
}
|
|
72426
|
-
};
|
|
72427
|
-
const wrapVariant$1 = (layout, opts) => styledSection({
|
|
72428
|
-
children: galleryContainer([layout, emptyState$1], {
|
|
72429
|
-
gap: "md",
|
|
72430
|
-
fullWidth: opts?.fullWidth,
|
|
72431
|
-
className: opts?.className
|
|
72432
|
-
}),
|
|
72433
|
-
baseClass: "",
|
|
72434
|
-
spacing: "medium",
|
|
72435
|
-
background: "background"
|
|
72436
|
-
});
|
|
72437
|
-
const fields$1 = parseFieldDefinitions([
|
|
72316
|
+
//#region ../blocks/src/system/blocks/image-gallery/fields.ts
|
|
72317
|
+
const imageGalleryFields = parseFieldDefinitions([
|
|
72318
|
+
...sectionHeaderFields(undefined, "Intro"),
|
|
72438
72319
|
{
|
|
72439
72320
|
id: "images",
|
|
72440
72321
|
type: "repeater",
|
|
@@ -72936,6 +72817,261 @@ const fields$1 = parseFieldDefinitions([
|
|
|
72936
72817
|
ui: { intent: "style" }
|
|
72937
72818
|
}
|
|
72938
72819
|
]);
|
|
72820
|
+
|
|
72821
|
+
//#endregion
|
|
72822
|
+
//#region ../blocks/src/system/blocks/image-gallery.ts
|
|
72823
|
+
const grid$1 = (props$1, children, ...mods) => el("grid", props$1 ?? undefined, children ?? undefined, ...mods);
|
|
72824
|
+
const galleryContainer = (children, opts) => {
|
|
72825
|
+
const gap = opts?.gap ?? "md";
|
|
72826
|
+
const withExtraClass = (baseClass) => opts?.className ? `${baseClass} ${opts.className}` : baseClass;
|
|
72827
|
+
if (opts?.fullWidth) {
|
|
72828
|
+
return stack({
|
|
72829
|
+
gap,
|
|
72830
|
+
className: withExtraClass("rb-container-bleed")
|
|
72831
|
+
}, children);
|
|
72832
|
+
}
|
|
72833
|
+
return stack({
|
|
72834
|
+
gap,
|
|
72835
|
+
className: { $bind: {
|
|
72836
|
+
from: "content.fullBleed",
|
|
72837
|
+
transforms: [{
|
|
72838
|
+
id: "ui.conditionalClass",
|
|
72839
|
+
options: {
|
|
72840
|
+
whenTrue: withExtraClass("rb-container-bleed"),
|
|
72841
|
+
whenFalse: withExtraClass("rb-container")
|
|
72842
|
+
}
|
|
72843
|
+
}],
|
|
72844
|
+
fallback: withExtraClass("rb-container")
|
|
72845
|
+
} }
|
|
72846
|
+
}, children);
|
|
72847
|
+
};
|
|
72848
|
+
const galleryItem = (options) => stack({
|
|
72849
|
+
gap: "xs",
|
|
72850
|
+
className: options.containerClassName
|
|
72851
|
+
}, [el("figure", {
|
|
72852
|
+
className: { $bind: {
|
|
72853
|
+
from: "content",
|
|
72854
|
+
transforms: [{ id: "ui.imageGalleryTileClass" }],
|
|
72855
|
+
fallback: "rb-overflow-hidden rb-relative rb-rounded-3xl rb-border-2"
|
|
72856
|
+
} },
|
|
72857
|
+
style: { $bind: {
|
|
72858
|
+
from: "content",
|
|
72859
|
+
transforms: [{ id: "ui.imageGalleryTileStyle" }]
|
|
72860
|
+
} }
|
|
72861
|
+
}, [media({
|
|
72862
|
+
className: {
|
|
72863
|
+
$bind: {
|
|
72864
|
+
from: "content.imageFilter",
|
|
72865
|
+
transforms: [{ id: "ui.imageGalleryFilterClass" }],
|
|
72866
|
+
fallback: ""
|
|
72867
|
+
},
|
|
72868
|
+
$prepend: `${options.imageClassName} `
|
|
72869
|
+
},
|
|
72870
|
+
...options.bindAspectRatio && { style: { aspectRatio: { $bind: { from: "content.aspectRatio" } } } }
|
|
72871
|
+
}, bind("item.image"))]), text({
|
|
72872
|
+
as: "figcaption",
|
|
72873
|
+
className: "rb-caption rb-text-center",
|
|
72874
|
+
style: textColorStyle("mutedText")
|
|
72875
|
+
}, bind("item.caption"), when("item.caption"))], repeat("content.images", "item"));
|
|
72876
|
+
const gridLayout = grid$1({ className: "rb-grid rb-grid-cols-1 rb-gap-4 rb-sm-grid-cols-2 rb-md-grid-cols-3" }, [galleryItem({
|
|
72877
|
+
imageClassName: "rb-w-full rb-h-full rb-object-cover",
|
|
72878
|
+
bindAspectRatio: true
|
|
72879
|
+
})]);
|
|
72880
|
+
const carouselLayout = carousel({
|
|
72881
|
+
className: { $bind: {
|
|
72882
|
+
from: "content.fullBleed",
|
|
72883
|
+
transforms: [{
|
|
72884
|
+
id: "ui.conditionalClass",
|
|
72885
|
+
options: {
|
|
72886
|
+
whenTrue: "rb-image-gallery-carousel rb-image-gallery-carousel--full-bleed",
|
|
72887
|
+
whenFalse: "rb-image-gallery-carousel"
|
|
72888
|
+
}
|
|
72889
|
+
}],
|
|
72890
|
+
fallback: "rb-image-gallery-carousel"
|
|
72891
|
+
} },
|
|
72892
|
+
slidesToShow: {
|
|
72893
|
+
mobile: { $bind: {
|
|
72894
|
+
from: "content.slidesToShow",
|
|
72895
|
+
fallback: 1
|
|
72896
|
+
} },
|
|
72897
|
+
tablet: { $bind: { from: "content.slidesToShowTablet" } },
|
|
72898
|
+
desktop: { $bind: { from: "content.slidesToShowDesktop" } }
|
|
72899
|
+
},
|
|
72900
|
+
transition: { $bind: {
|
|
72901
|
+
from: "content.transition",
|
|
72902
|
+
fallback: "slide"
|
|
72903
|
+
} },
|
|
72904
|
+
showControls: { $bind: {
|
|
72905
|
+
from: "content.showControls",
|
|
72906
|
+
fallback: true
|
|
72907
|
+
} },
|
|
72908
|
+
showDots: { $bind: {
|
|
72909
|
+
from: "content.showDots",
|
|
72910
|
+
fallback: false
|
|
72911
|
+
} },
|
|
72912
|
+
autoplay: { $bind: {
|
|
72913
|
+
from: "content.autoplay",
|
|
72914
|
+
fallback: false
|
|
72915
|
+
} },
|
|
72916
|
+
autoplayDelay: { $bind: {
|
|
72917
|
+
from: "content.autoplayDelay",
|
|
72918
|
+
fallback: 5e3,
|
|
72919
|
+
coerce: "number"
|
|
72920
|
+
} },
|
|
72921
|
+
arrowVisibility: { $bind: {
|
|
72922
|
+
from: "content.arrowVisibility",
|
|
72923
|
+
fallback: "always"
|
|
72924
|
+
} },
|
|
72925
|
+
loop: { $bind: {
|
|
72926
|
+
from: "content.loop",
|
|
72927
|
+
fallback: true
|
|
72928
|
+
} }
|
|
72929
|
+
}, [galleryItem({
|
|
72930
|
+
imageClassName: "rb-w-full rb-h-full rb-object-cover",
|
|
72931
|
+
bindAspectRatio: true
|
|
72932
|
+
})]);
|
|
72933
|
+
const masonryLayout = el("div", { style: {
|
|
72934
|
+
columns: "3 250px",
|
|
72935
|
+
columnGap: "1rem"
|
|
72936
|
+
} }, [galleryItem({
|
|
72937
|
+
imageClassName: "rb-w-full rb-h-auto",
|
|
72938
|
+
bindAspectRatio: false,
|
|
72939
|
+
containerClassName: "rb-mb-4 rb-break-inside-avoid"
|
|
72940
|
+
})]);
|
|
72941
|
+
const marqueeTileBase = stack({
|
|
72942
|
+
gap: "xs",
|
|
72943
|
+
className: "rb-flex-shrink-0"
|
|
72944
|
+
}, [el("figure", {
|
|
72945
|
+
className: { $bind: {
|
|
72946
|
+
from: "content",
|
|
72947
|
+
transforms: [{ id: "ui.imageGalleryTileClass" }],
|
|
72948
|
+
fallback: "rb-overflow-hidden rb-relative rb-rounded-3xl rb-border-2"
|
|
72949
|
+
} },
|
|
72950
|
+
style: { $bind: {
|
|
72951
|
+
from: "content",
|
|
72952
|
+
transforms: [{ id: "ui.imageGalleryMarqueeTileStyle" }]
|
|
72953
|
+
} }
|
|
72954
|
+
}, [media({
|
|
72955
|
+
className: {
|
|
72956
|
+
$bind: {
|
|
72957
|
+
from: "content.imageFilter",
|
|
72958
|
+
transforms: [{ id: "ui.imageGalleryFilterClass" }],
|
|
72959
|
+
fallback: ""
|
|
72960
|
+
},
|
|
72961
|
+
$prepend: "rb-w-full rb-h-full rb-object-cover "
|
|
72962
|
+
},
|
|
72963
|
+
style: { aspectRatio: "1 / 1" }
|
|
72964
|
+
}, bind("item.image"))]), text({
|
|
72965
|
+
as: "figcaption",
|
|
72966
|
+
className: "rb-caption rb-text-center",
|
|
72967
|
+
style: textColorStyle("mutedText")
|
|
72968
|
+
}, bind("item.caption"), when("item.caption"))]);
|
|
72969
|
+
const marqueeTile = {
|
|
72970
|
+
...marqueeTileBase,
|
|
72971
|
+
$repeat: {
|
|
72972
|
+
collection: {
|
|
72973
|
+
from: "content.images",
|
|
72974
|
+
pick: "collection",
|
|
72975
|
+
transforms: [{
|
|
72976
|
+
id: "array.marqueeLoop",
|
|
72977
|
+
options: { minItems: 10 }
|
|
72978
|
+
}]
|
|
72979
|
+
},
|
|
72980
|
+
itemName: "item",
|
|
72981
|
+
indexName: "index"
|
|
72982
|
+
}
|
|
72983
|
+
};
|
|
72984
|
+
const marqueeLayout = el("div", { className: {
|
|
72985
|
+
$bind: {
|
|
72986
|
+
from: "content.marqueePauseOnHover",
|
|
72987
|
+
transforms: [{
|
|
72988
|
+
id: "ui.conditionalClass",
|
|
72989
|
+
options: {
|
|
72990
|
+
whenTrue: "rb-image-gallery-marquee rb-marquee-pause-on-hover",
|
|
72991
|
+
whenFalse: "rb-image-gallery-marquee"
|
|
72992
|
+
}
|
|
72993
|
+
}],
|
|
72994
|
+
fallback: "rb-image-gallery-marquee"
|
|
72995
|
+
},
|
|
72996
|
+
$prepend: "rb-py-4 "
|
|
72997
|
+
} }, [el("div", {
|
|
72998
|
+
className: "rb-flex rb-animate-marquee rb-transform-gpu rb-will-change-transform",
|
|
72999
|
+
style: {
|
|
73000
|
+
"--rb-marquee-duration": { $bind: {
|
|
73001
|
+
from: "content.marqueeSpeed",
|
|
73002
|
+
transforms: [{ id: "ui.imageGalleryMarqueeDuration" }],
|
|
73003
|
+
fallback: "40s"
|
|
73004
|
+
} },
|
|
73005
|
+
"--rb-marquee-direction": { $bind: {
|
|
73006
|
+
from: "content.marqueeDirection",
|
|
73007
|
+
transforms: [{ id: "ui.imageGalleryMarqueeDirection" }],
|
|
73008
|
+
fallback: "normal"
|
|
73009
|
+
} }
|
|
73010
|
+
}
|
|
73011
|
+
}, [marqueeTile])]);
|
|
73012
|
+
const emptyState$1 = {
|
|
73013
|
+
type: "stack",
|
|
73014
|
+
props: {
|
|
73015
|
+
align: "center",
|
|
73016
|
+
gap: "md",
|
|
73017
|
+
className: "rb-py-12 rb-text-center rb-rounded-xl rb-border rb-border-dashed",
|
|
73018
|
+
style: mergeStyles(borderColorStyle("border"), backgroundColorStyle("surface"))
|
|
73019
|
+
},
|
|
73020
|
+
children: [{
|
|
73021
|
+
type: "text",
|
|
73022
|
+
props: {
|
|
73023
|
+
as: "p",
|
|
73024
|
+
style: textColorStyle("mutedText")
|
|
73025
|
+
},
|
|
73026
|
+
$bind: {
|
|
73027
|
+
from: "content.emptyMessage",
|
|
73028
|
+
fallback: "Add images to create your gallery"
|
|
73029
|
+
}
|
|
73030
|
+
}],
|
|
73031
|
+
$when: {
|
|
73032
|
+
when: {
|
|
73033
|
+
from: "content.images",
|
|
73034
|
+
transforms: [{ id: "array.length" }]
|
|
73035
|
+
},
|
|
73036
|
+
equals: 0
|
|
73037
|
+
}
|
|
73038
|
+
};
|
|
73039
|
+
const wrapVariant$1 = (layout, opts) => styledSection({
|
|
73040
|
+
children: galleryContainer([
|
|
73041
|
+
...sectionHeaderLayoutNodes(),
|
|
73042
|
+
layout,
|
|
73043
|
+
emptyState$1
|
|
73044
|
+
], {
|
|
73045
|
+
gap: "md",
|
|
73046
|
+
fullWidth: opts?.fullWidth,
|
|
73047
|
+
className: opts?.className
|
|
73048
|
+
}),
|
|
73049
|
+
baseClass: "",
|
|
73050
|
+
spacing: "medium",
|
|
73051
|
+
background: "background"
|
|
73052
|
+
});
|
|
73053
|
+
const lookGalleryTile = (imageFrom, captionFrom, ...mods) => el("li", lookSlot("item"), [el("figure", lookSlot("figure"), [el("div", lookSlot("media"), [media(lookSlot("photo"), bind(imageFrom), when(imageFrom))]), text({
|
|
73054
|
+
as: "figcaption",
|
|
73055
|
+
...lookSlot("caption")
|
|
73056
|
+
}, bind(captionFrom), when(captionFrom))])], ...mods);
|
|
73057
|
+
const tilesLayout = styledSection({
|
|
73058
|
+
children: el("div", {
|
|
73059
|
+
className: "rb-container",
|
|
73060
|
+
...lookSlot("layout")
|
|
73061
|
+
}, [...sectionHeaderLayoutNodes({ splitClassName: "rb-grid" }), el("ol", lookSlot("items"), [lookGalleryTile("item.image", "item.caption", repeat("content.images", "item")), lookGalleryTile("content.images.0.image", "content.images.0.caption", (node) => ({
|
|
73062
|
+
...node,
|
|
73063
|
+
$when: {
|
|
73064
|
+
when: {
|
|
73065
|
+
from: "content.images",
|
|
73066
|
+
transforms: [{ id: "array.length" }]
|
|
73067
|
+
},
|
|
73068
|
+
equals: 0
|
|
73069
|
+
}
|
|
73070
|
+
}))])]),
|
|
73071
|
+
baseClass: "",
|
|
73072
|
+
spacing: "medium",
|
|
73073
|
+
background: "background"
|
|
73074
|
+
});
|
|
72939
73075
|
const baseImageGalleryManifest = createBlockManifest({
|
|
72940
73076
|
id: "block.image-gallery",
|
|
72941
73077
|
title: "Image Gallery",
|
|
@@ -72948,9 +73084,10 @@ const baseImageGalleryManifest = createBlockManifest({
|
|
|
72948
73084
|
"marqueeSpeed",
|
|
72949
73085
|
"marqueePauseOnHover"
|
|
72950
73086
|
] },
|
|
72951
|
-
additionalFields:
|
|
73087
|
+
additionalFields: imageGalleryFields,
|
|
72952
73088
|
layout: wrapVariant$1(gridLayout),
|
|
72953
73089
|
variants: {
|
|
73090
|
+
tiles: tilesLayout,
|
|
72954
73091
|
grid: wrapVariant$1(gridLayout),
|
|
72955
73092
|
carousel: wrapVariant$1(carouselLayout),
|
|
72956
73093
|
masonry: wrapVariant$1(masonryLayout),
|
|
@@ -72959,7 +73096,10 @@ const baseImageGalleryManifest = createBlockManifest({
|
|
|
72959
73096
|
className: "rb-image-gallery-marquee-container"
|
|
72960
73097
|
})
|
|
72961
73098
|
},
|
|
72962
|
-
variantMeaning: {
|
|
73099
|
+
variantMeaning: {
|
|
73100
|
+
kind: "arrangement",
|
|
73101
|
+
lookOnlyKeys: ["tiles"]
|
|
73102
|
+
},
|
|
72963
73103
|
defaultVariant: "grid",
|
|
72964
73104
|
variantOptions: {
|
|
72965
73105
|
grid: {
|
|
@@ -74380,7 +74520,7 @@ const systemBlockDefinitionsRaw = [
|
|
|
74380
74520
|
})
|
|
74381
74521
|
]
|
|
74382
74522
|
})),
|
|
74383
|
-
withDesignCapability("block.body-text", bodyTextBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
|
|
74523
|
+
withDesignCapability("block.body-text", bodyTextBlockDefinition, withLookCapability(sectionOnly()), defineBlockDesignMetadata({
|
|
74384
74524
|
flow: bodyFlow,
|
|
74385
74525
|
layoutProfiles: [
|
|
74386
74526
|
layoutProfile({
|
|
@@ -74755,7 +74895,7 @@ const systemBlockDefinitionsRaw = [
|
|
|
74755
74895
|
weight: "quiet"
|
|
74756
74896
|
})]
|
|
74757
74897
|
})),
|
|
74758
|
-
withDesignCapability("block.image-gallery", imageGalleryBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
|
|
74898
|
+
withDesignCapability("block.image-gallery", imageGalleryBlockDefinition, withLookCapability(sectionOnly()), defineBlockDesignMetadata({
|
|
74759
74899
|
flow: mediaFlow,
|
|
74760
74900
|
layoutProfiles: [
|
|
74761
74901
|
layoutProfile({
|
|
@@ -74844,7 +74984,7 @@ const systemBlockDefinitionsRaw = [
|
|
|
74844
74984
|
weight: "standard"
|
|
74845
74985
|
})]
|
|
74846
74986
|
})),
|
|
74847
|
-
withDesignCapability("block.newsletter-signup", newsletterSignupBlockDefinition, sectionOnly(), defineBlockDesignMetadata({
|
|
74987
|
+
withDesignCapability("block.newsletter-signup", newsletterSignupBlockDefinition, withLookCapability(sectionOnly()), defineBlockDesignMetadata({
|
|
74848
74988
|
flow: conversionFlow,
|
|
74849
74989
|
layoutProfiles: [
|
|
74850
74990
|
layoutProfile({
|
|
@@ -74985,8 +75125,8 @@ function buildPreviewFieldConstraints(manifest) {
|
|
|
74985
75125
|
if (entries.length === 0) return undefined;
|
|
74986
75126
|
return Object.fromEntries(entries);
|
|
74987
75127
|
}
|
|
74988
|
-
function collectPreviewFieldConstraintEntries(fields$
|
|
74989
|
-
return fields$
|
|
75128
|
+
function collectPreviewFieldConstraintEntries(fields$1, prefix = "") {
|
|
75129
|
+
return fields$1.flatMap((field) => {
|
|
74990
75130
|
const path$4 = prefix ? `${prefix}.${field.id}` : field.id;
|
|
74991
75131
|
const own = field.type === "text" && typeof field.maxLength === "number" ? [[path$4, { maxLength: field.maxLength }]] : [];
|
|
74992
75132
|
return [...own, ...collectNestedPreviewFieldConstraintEntries(field, path$4)];
|
|
@@ -75603,9 +75743,9 @@ function valueAtField(current, fieldId) {
|
|
|
75603
75743
|
return isRecord$18(current) ? current[fieldId] : undefined;
|
|
75604
75744
|
}
|
|
75605
75745
|
function collectConstrainedVideoMediaValues(options) {
|
|
75606
|
-
const { blockKind, fields: fields$
|
|
75746
|
+
const { blockKind, fields: fields$1, currentValue, parentPath = [] } = options;
|
|
75607
75747
|
const values = [];
|
|
75608
|
-
for (const field of fields$
|
|
75748
|
+
for (const field of fields$1) {
|
|
75609
75749
|
const fieldPathSegments = [...parentPath, field.id];
|
|
75610
75750
|
const fieldPath = fieldPathSegments.join(".");
|
|
75611
75751
|
const fieldValue = valueAtField(currentValue, field.id);
|
|
@@ -76090,10 +76230,7 @@ function arrangementPhotoContent(content, knobs) {
|
|
|
76090
76230
|
}) };
|
|
76091
76231
|
}
|
|
76092
76232
|
function arrangementContentFacts(content) {
|
|
76093
|
-
const
|
|
76094
|
-
const background = isObjectRecord(section$2.background) ? section$2.background : {};
|
|
76095
|
-
const itemPhotos = Array.isArray(content.cards) ? content.cards.filter((card) => isObjectRecord(card) && isObjectRecord(card.media)).length : 0;
|
|
76096
|
-
const photoCount = Array.isArray(content.cards) ? itemPhotos : isObjectRecord(background.image) ? 1 : 0;
|
|
76233
|
+
const photoCount = arrangementPhotoCount(content);
|
|
76097
76234
|
return {
|
|
76098
76235
|
photoCount,
|
|
76099
76236
|
facts: {
|
|
@@ -76104,6 +76241,14 @@ function arrangementContentFacts(content) {
|
|
|
76104
76241
|
}
|
|
76105
76242
|
};
|
|
76106
76243
|
}
|
|
76244
|
+
/** The content stage owns media presence for every arrangement consumer. */
|
|
76245
|
+
function arrangementPhotoCount(content) {
|
|
76246
|
+
if (Array.isArray(content.cards)) return content.cards.filter((card) => isObjectRecord(card) && isObjectRecord(card.media)).length;
|
|
76247
|
+
if (Array.isArray(content.images)) return content.images.filter((item) => isObjectRecord(item) && isObjectRecord(item.image)).length;
|
|
76248
|
+
const section$2 = isObjectRecord(content._sectionStyles) ? content._sectionStyles : {};
|
|
76249
|
+
const background = isObjectRecord(section$2.background) ? section$2.background : {};
|
|
76250
|
+
return isObjectRecord(background.image) ? 1 : 0;
|
|
76251
|
+
}
|
|
76107
76252
|
function effectiveContentKnobValue(blockKind, key, value) {
|
|
76108
76253
|
const facet = systemCustomizeFacetDefinitionsForBlock(blockKind).find((entry) => entry.target.kind === "content-field" && entry.target.field === key);
|
|
76109
76254
|
return facet?.target.kind === "content-field" && facet.target.boolean ? value === "true" : value;
|
|
@@ -79961,6 +80106,82 @@ function getDefaultInputSettings() {
|
|
|
79961
80106
|
};
|
|
79962
80107
|
}
|
|
79963
80108
|
|
|
80109
|
+
//#endregion
|
|
80110
|
+
//#region ../theme-core/src/footer/mode.ts
|
|
80111
|
+
const footerModeSchema = z.enum([
|
|
80112
|
+
"default",
|
|
80113
|
+
"blocks",
|
|
80114
|
+
"default+blocks",
|
|
80115
|
+
"none"
|
|
80116
|
+
]);
|
|
80117
|
+
/** Reads only SDK footer intent; unrelated config and theme fields are not authorities. */
|
|
80118
|
+
function resolveSdkFooterMode(config$1) {
|
|
80119
|
+
const parsed = z.object({ layout: z.object({ footerMode: footerModeSchema.optional() }).optional() }).safeParse(config$1);
|
|
80120
|
+
return parsed.success ? parsed.data.layout?.footerMode ?? "default" : "default";
|
|
80121
|
+
}
|
|
80122
|
+
const legacyFooterBrandSchema = z.object({
|
|
80123
|
+
variant: z.enum([
|
|
80124
|
+
"simple",
|
|
80125
|
+
"columns",
|
|
80126
|
+
"split",
|
|
80127
|
+
"centred"
|
|
80128
|
+
]),
|
|
80129
|
+
showLogoText: z.boolean().optional(),
|
|
80130
|
+
logo: z.object({
|
|
80131
|
+
showLogo: z.boolean().optional(),
|
|
80132
|
+
showLogoText: z.boolean().optional()
|
|
80133
|
+
}).optional()
|
|
80134
|
+
});
|
|
80135
|
+
/** Offline composition backfill only. Never read appearance visibility at runtime. */
|
|
80136
|
+
function readLegacyFooterBrandVisibility(value) {
|
|
80137
|
+
const parsed = legacyFooterBrandSchema.safeParse(value);
|
|
80138
|
+
if (!parsed.success) return null;
|
|
80139
|
+
const footer = parsed.data;
|
|
80140
|
+
return {
|
|
80141
|
+
showLogo: footer.variant === "simple" ? footer.logo?.showLogo === true : footer.logo?.showLogo !== false,
|
|
80142
|
+
showTitle: footer.logo?.showLogoText ?? footer.showLogoText === true
|
|
80143
|
+
};
|
|
80144
|
+
}
|
|
80145
|
+
/**
|
|
80146
|
+
* Resolve what to render for the footer given the current mode and whether the
|
|
80147
|
+
* site is SDK-managed.
|
|
80148
|
+
*
|
|
80149
|
+
* Backwards compatible: missing/undefined mode is treated as 'default'.
|
|
80150
|
+
*/
|
|
80151
|
+
function resolveFooterRenderPlan(params) {
|
|
80152
|
+
if (!params.isSdkSite) {
|
|
80153
|
+
return {
|
|
80154
|
+
mode: "default",
|
|
80155
|
+
renderDefaultFooter: true,
|
|
80156
|
+
renderFooterBlocks: false
|
|
80157
|
+
};
|
|
80158
|
+
}
|
|
80159
|
+
const mode = params.mode ?? "default";
|
|
80160
|
+
switch (mode) {
|
|
80161
|
+
case "blocks": return {
|
|
80162
|
+
mode: "blocks",
|
|
80163
|
+
renderDefaultFooter: false,
|
|
80164
|
+
renderFooterBlocks: true
|
|
80165
|
+
};
|
|
80166
|
+
case "default+blocks": return {
|
|
80167
|
+
mode: "default+blocks",
|
|
80168
|
+
renderDefaultFooter: true,
|
|
80169
|
+
renderFooterBlocks: true
|
|
80170
|
+
};
|
|
80171
|
+
case "none": return {
|
|
80172
|
+
mode: "none",
|
|
80173
|
+
renderDefaultFooter: false,
|
|
80174
|
+
renderFooterBlocks: false
|
|
80175
|
+
};
|
|
80176
|
+
case "default":
|
|
80177
|
+
default: return {
|
|
80178
|
+
mode: "default",
|
|
80179
|
+
renderDefaultFooter: true,
|
|
80180
|
+
renderFooterBlocks: false
|
|
80181
|
+
};
|
|
80182
|
+
}
|
|
80183
|
+
}
|
|
80184
|
+
|
|
79964
80185
|
//#endregion
|
|
79965
80186
|
//#region ../theme-core/src/generated/containerResponsiveThemeCss.ts
|
|
79966
80187
|
/**
|
|
@@ -88442,7 +88663,7 @@ const containerResponsiveThemeCss = `/*
|
|
|
88442
88663
|
/* -----------------------------------------------------------------------------
|
|
88443
88664
|
* Event section head — split (heading left, intro right)
|
|
88444
88665
|
* Rendered by the block frame (outside [data-block="event-calendar"]) via
|
|
88445
|
-
*
|
|
88666
|
+
* sectionHeaderLayoutNodes({ splitClassName }). Lays the heading and its
|
|
88446
88667
|
* supporting intro out as a two-column head on wide viewports, stacking on
|
|
88447
88668
|
* narrow ones. The section band above provides the distinct background.
|
|
88448
88669
|
* ----------------------------------------------------------------------------- */
|
|
@@ -94141,6 +94362,26 @@ const containerResponsiveThemeCss = `/*
|
|
|
94141
94362
|
.theme-scope [data-arrangement] [data-event-list-empty] [data-slot="action"] { margin: 0; padding: 0; border: 0; background: none; color: var(--rb-surface-text-color); font: inherit; text-decoration: underline; text-underline-offset: 0.2em; cursor: pointer; }
|
|
94142
94363
|
.theme-scope [data-arrangement] [data-event-list-empty] [data-slot="action"] button { margin: 0; padding: 0; border: 0; background: none; color: inherit; font: inherit; text-decoration: inherit; cursor: pointer; }
|
|
94143
94364
|
|
|
94365
|
+
/* ---------------------------------------------------- image gallery: tiles */
|
|
94366
|
+
.theme-scope [data-arrangement="tiles"]:not(:has([data-slot="heading"], [data-slot="intro"], [data-slot="photo"], [data-placeholder-field])) { display: none; }
|
|
94367
|
+
.theme-scope [data-arrangement="tiles"] [data-slot="items"] {
|
|
94368
|
+
display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
94369
|
+
gap: var(--rb-skin-gallery-gap, 1.5rem); list-style: none; padding: 0;
|
|
94370
|
+
margin: 0 auto; max-width: 64rem;
|
|
94371
|
+
}
|
|
94372
|
+
.theme-scope [data-arrangement="tiles"] [data-slot="item"] { min-width: 0; margin: 0; }
|
|
94373
|
+
.theme-scope [data-arrangement="tiles"] [data-slot="figure"] { display: grid; gap: 0; align-items: stretch; min-width: 0; margin: 0; }
|
|
94374
|
+
.theme-scope [data-arrangement="tiles"] [data-slot="media"] { aspect-ratio: 1; overflow: hidden; }
|
|
94375
|
+
.theme-scope [data-arrangement="tiles"] [data-slot="photo"] { width: 100%; height: 100%; object-fit: cover; }
|
|
94376
|
+
.theme-scope [data-arrangement="tiles"] [data-slot="item"]:not(:has([data-slot="photo"], [data-placeholder-field])),
|
|
94377
|
+
.theme-scope [data-arrangement="tiles"] [data-slot="items"]:not(:has([data-slot="photo"], [data-placeholder-field])) { display: none; }
|
|
94378
|
+
.theme-scope [data-arrangement="tiles"] [data-slot="head"]:not(:has(*)) { display: none; }
|
|
94379
|
+
@container rb-site (max-width: 767px) {
|
|
94380
|
+
@scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
|
|
94381
|
+
.theme-scope:is(*, :scope) [data-arrangement="tiles"] [data-slot="items"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
94382
|
+
}
|
|
94383
|
+
}
|
|
94384
|
+
|
|
94144
94385
|
/* Bounded style skins (issue 1575, D14): one stylesheet per arrangement style, keyed on data-skin. */
|
|
94145
94386
|
|
|
94146
94387
|
/* =============================================================================
|
|
@@ -95184,6 +95425,7 @@ const containerResponsiveThemeCss = `/*
|
|
|
95184
95425
|
|
|
95185
95426
|
/* Section heads: centred under the lozenge rule. */
|
|
95186
95427
|
[data-skin="lantern"] [data-arrangement] [data-slot="head"] {
|
|
95428
|
+
grid-template-columns: minmax(0, 1fr);
|
|
95187
95429
|
position: relative;
|
|
95188
95430
|
justify-items: center;
|
|
95189
95431
|
text-align: center;
|
|
@@ -95869,6 +96111,254 @@ const containerResponsiveThemeCss = `/*
|
|
|
95869
96111
|
[data-skin="lantern"] [data-card-list-item] [data-slot="dates"] { gap: 0.5rem; }
|
|
95870
96112
|
[data-skin="lantern"] [data-card-list-item] [data-slot="dates"] [data-slot="date"] { padding: 0.625rem 0.75rem; border: 1px solid var(--rb-surface-line-color); border-radius: var(--lantern-tablet); }
|
|
95871
96113
|
|
|
96114
|
+
/* Centred footer: the same lozenge head over a quiet, deep-ground ending. */
|
|
96115
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] { padding-block: 5.5rem 2.25rem; border-top: 0; text-align: center; }
|
|
96116
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] > [data-slot="stack"] { padding-block: 0; gap: 0; }
|
|
96117
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="head"] { margin-bottom: 0; gap: 0.75rem; width: 100%; }
|
|
96118
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="heading"] { font-size: clamp(2rem, 3cqi, 2.5rem); line-height: 1.1; margin-top: 0.25rem; }
|
|
96119
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="intro"] { --rb-surface-text-color: var(--rb-surface-muted-color); font-size: 1.125rem; line-height: 1.55; color: var(--rb-surface-muted-color); }
|
|
96120
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="navigation"] { font-family: var(--font-heading); font-size: 1.125rem; }
|
|
96121
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] > [data-slot="stack"] > [data-slot="navigation"] { margin-top: 2.25rem; }
|
|
96122
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="navigation"] [data-slot="stack"]:has(> :not([data-slot])) { flex-direction: row; flex-wrap: wrap; justify-content: center; gap: 0.5rem 2.5rem; }
|
|
96123
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="contact"] { margin-top: 1.75rem; gap: 0.5rem 1.75rem; font-size: 1.0625rem; }
|
|
96124
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="contact"] [data-slot="stack"] { gap: 0.5rem 1.75rem; }
|
|
96125
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="schedule"] { margin-top: 0.75rem; width: min(100%, 20rem); align-self: center; }
|
|
96126
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] > [data-slot="stack"] > [data-slot="social"] { margin-top: 1.75rem; }
|
|
96127
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="social"] [data-slot="social"] { justify-content: center; gap: 0.75rem; }
|
|
96128
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="social"] [data-slot="social"] > * { display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid var(--rb-surface-mark-color); border-radius: 50%; }
|
|
96129
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="social"] [data-slot="social"] > * > * { width: 19px; height: 19px; }
|
|
96130
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="panel"] { margin-top: 2.5rem; max-width: 36rem; width: 100%; margin-inline: auto; }
|
|
96131
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="base"] { --rb-surface-text-color: var(--rb-surface-muted-color); --rb-surface-link-color: var(--rb-surface-muted-color); gap: 0.5rem 1.5rem; font-size: 0.9375rem; color: var(--rb-surface-muted-color); }
|
|
96132
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="stack"] > [data-slot="base"] { margin-top: 3.5rem; padding: 1.5rem 0 0; border-top: 1px solid var(--rb-surface-line-color); }
|
|
96133
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="base"] > [data-slot="base"] { display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: space-between; width: 100%; }
|
|
96134
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="base"] [data-slot="navigation"] { font-family: var(--font-body); font-size: inherit; }
|
|
96135
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="caption"] { font-size: inherit; letter-spacing: normal; }
|
|
96136
|
+
|
|
96137
|
+
@container rb-site (max-width: 767px) {
|
|
96138
|
+
@scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
|
|
96139
|
+
[data-skin="lantern"]:is(*, :scope) [data-arrangement="footer-centred"] { padding-top: 4rem; }
|
|
96140
|
+
[data-skin="lantern"]:is(*, :scope) [data-arrangement="footer-centred"] [data-slot="navigation"] [data-slot="stack"]:has(> :not([data-slot])) { gap: 0.5rem 1.5rem; }
|
|
96141
|
+
[data-skin="lantern"]:is(*, :scope) [data-arrangement="footer-centred"] [data-slot="base"] > [data-slot="base"] { justify-content: center; text-align: center; }
|
|
96142
|
+
}
|
|
96143
|
+
}
|
|
96144
|
+
|
|
96145
|
+
/* Leaf utilities inherit the decided footer type, including the quieter legal row. */
|
|
96146
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="navigation"] * { font-family: inherit; font-size: inherit; }
|
|
96147
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="contact"] * { font-family: var(--font-body); font-size: inherit; }
|
|
96148
|
+
|
|
96149
|
+
/* Visual review: contact emphasis, quiet hours, and balanced sparse/panel endings. */
|
|
96150
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="contact"] > [data-slot="stack"] > [data-slot="stack"] > * { text-decoration: underline; text-decoration-color: var(--rb-surface-mark-color); text-decoration-thickness: 1.5px; text-underline-offset: 5px; }
|
|
96151
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="contact"] > [data-slot="stack"] > :not([data-slot]) { font-style: normal; opacity: 1; color: var(--rb-surface-muted-color); }
|
|
96152
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="schedule"] [data-slot="inline"] > :first-child { text-transform: none; letter-spacing: normal; font-weight: 500; font-size: inherit; }
|
|
96153
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"]:not(:has([data-slot="base"])) { padding-bottom: 4rem; }
|
|
96154
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] > [data-slot="panel"] { margin-bottom: 3.5rem; }
|
|
96155
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"][data-slot="section"] [data-slot="head"]::after { border-width: 1.5px; }
|
|
96156
|
+
[data-skin="lantern"] [data-arrangement="footer-centred"] [data-slot="panel"] [data-slot="group-label"] { font-family: var(--font-body); font-weight: 500; font-size: 0.8125rem; letter-spacing: 0.08em; color: var(--rb-surface-text-color); }
|
|
96157
|
+
|
|
96158
|
+
/* ================================================= MEDIA TEXT: CIRCLE BESIDE
|
|
96159
|
+
* Kept separate from footer dressing for concurrent footer work.
|
|
96160
|
+
*/
|
|
96161
|
+
[data-skin="lantern"] [data-treat="circle-beside"] [data-slot="frame"] {
|
|
96162
|
+
display: grid;
|
|
96163
|
+
grid-template-columns: repeat(12, minmax(0, 1fr));
|
|
96164
|
+
column-gap: var(--rb-skin-gutter);
|
|
96165
|
+
align-items: center;
|
|
96166
|
+
}
|
|
96167
|
+
[data-skin="lantern"] [data-treat="circle-beside"] [data-slot="media"] { grid-column: 1 / 6; min-width: 0; }
|
|
96168
|
+
[data-skin="lantern"] [data-treat="circle-beside"] [data-slot="copy"] {
|
|
96169
|
+
grid-column: 7 / 13;
|
|
96170
|
+
display: grid;
|
|
96171
|
+
gap: var(--rb-skin-copy-gap);
|
|
96172
|
+
justify-items: start;
|
|
96173
|
+
max-width: 34rem;
|
|
96174
|
+
}
|
|
96175
|
+
[data-skin="lantern"] [data-treat="circle-beside"][data-knob-image-position="right"] [data-slot="media"] { grid-column: 8 / 13; grid-row: 1; }
|
|
96176
|
+
[data-skin="lantern"] [data-treat="circle-beside"][data-knob-image-position="right"] [data-slot="copy"] { grid-column: 1 / 7; grid-row: 1; }
|
|
96177
|
+
[data-skin="lantern"] [data-treat="circle-beside"] [data-slot="head"]:not(:has(*)) { display: none; }
|
|
96178
|
+
[data-skin="lantern"] [data-treat="circle-beside"] [data-slot="head"] {
|
|
96179
|
+
justify-self: start;
|
|
96180
|
+
justify-items: start;
|
|
96181
|
+
text-align: start;
|
|
96182
|
+
margin: 0;
|
|
96183
|
+
padding-top: 2rem;
|
|
96184
|
+
}
|
|
96185
|
+
[data-skin="lantern"] [data-treat="circle-beside"] [data-slot="head"] > [data-slot="heading"] { text-align: start; }
|
|
96186
|
+
[data-skin="lantern"] [data-treat="circle-beside"] [data-slot="head"]::before {
|
|
96187
|
+
left: 0;
|
|
96188
|
+
transform: none;
|
|
96189
|
+
background: linear-gradient(to right, transparent 0 18px, var(--rb-surface-mark-color) 18px) center 4px / 52px 1px no-repeat;
|
|
96190
|
+
width: 52px;
|
|
96191
|
+
height: 9px;
|
|
96192
|
+
}
|
|
96193
|
+
[data-skin="lantern"] [data-treat="circle-beside"] [data-slot="head"]::after { left: 1px; transform: rotate(45deg); }
|
|
96194
|
+
[data-skin="lantern"] [data-treat="circle-beside"] [data-slot="intro"] { font-size: 1.1875rem; line-height: 1.65; max-width: none; color: var(--rb-surface-muted-color); }
|
|
96195
|
+
[data-skin="lantern"] [data-treat="circle-beside"] [data-slot="intro"] > [data-slot="lede"] { font-size: inherit; line-height: inherit; color: var(--rb-surface-text-color); }
|
|
96196
|
+
[data-skin="lantern"] [data-treat="circle-beside"][data-has-photo="false"] [data-slot="media"]:not(:has([data-placeholder-field])) { display: none; }
|
|
96197
|
+
[data-skin="lantern"] [data-treat="circle-beside"][data-has-photo="false"] [data-slot="frame"]:not(:has([data-placeholder-field])) > [data-slot="copy"] { grid-column: 1 / -1; grid-row: auto; }
|
|
96198
|
+
[data-skin="lantern"] [data-treat="circle-beside"] [data-placeholder-field] { aspect-ratio: 1; height: auto; border-radius: 50%; overflow: hidden; }
|
|
96199
|
+
@container rb-site (max-width: 767px) {
|
|
96200
|
+
@scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
|
|
96201
|
+
[data-skin="lantern"]:is(*, :scope) [data-treat="circle-beside"] [data-slot="frame"] { grid-template-columns: minmax(0, 1fr); row-gap: 2.5rem; }
|
|
96202
|
+
[data-skin="lantern"]:is(*, :scope) [data-treat="circle-beside"] [data-slot="frame"] > [data-slot="media"] { grid-column: 1 / -1; grid-row: auto; width: 76%; justify-self: center; }
|
|
96203
|
+
[data-skin="lantern"]:is(*, :scope) [data-treat="circle-beside"] [data-slot="frame"] > [data-slot="copy"] { grid-column: 1 / -1; grid-row: auto; }
|
|
96204
|
+
}
|
|
96205
|
+
}
|
|
96206
|
+
|
|
96207
|
+
/* ---------------------------------------------------- image gallery: Lucy Looks */
|
|
96208
|
+
[data-skin="lantern"] [data-arrangement="tiles"] [data-slot="head"] { width: 100%; }
|
|
96209
|
+
[data-skin="lantern"] [data-arrangement="tiles"] [data-slot="head"]:not(:has([data-slot="heading"])) { padding-top: 0; }
|
|
96210
|
+
[data-skin="lantern"] [data-arrangement="tiles"] [data-slot="head"]:not(:has([data-slot="heading"]))::before,
|
|
96211
|
+
[data-skin="lantern"] [data-arrangement="tiles"] [data-slot="head"]:not(:has([data-slot="heading"]))::after { display: none; }
|
|
96212
|
+
[data-skin="lantern"] [data-treat="square-tiles"] [data-slot="items"] { --rb-skin-gallery-gap: 0; border-radius: var(--rb-skin-radius, 10px); overflow: hidden; }
|
|
96213
|
+
[data-skin="lantern"] [data-treat="square-tiles"] [data-slot="caption"] { display: none; }
|
|
96214
|
+
[data-skin="lantern"] [data-treat="arched-captions"] [data-slot="items"] { --rb-skin-gallery-gap: clamp(1rem, 3cqi, 2.5rem); align-items: start; }
|
|
96215
|
+
[data-skin="lantern"] [data-treat="arched-captions"] [data-slot="item"]:nth-child(3n + 2) { transform: translateY(4.5rem); }
|
|
96216
|
+
[data-skin="lantern"] [data-treat="arched-captions"] [data-slot="items"]:has([data-slot="item"]:nth-child(3n + 2)) { padding-bottom: 4.5rem; }
|
|
96217
|
+
[data-skin="lantern"] [data-treat="arched-captions"] [data-slot="media"] { aspect-ratio: 3 / 4; border-radius: var(--lantern-arch); }
|
|
96218
|
+
[data-skin="lantern"] [data-treat="arched-captions"] [data-slot="caption"] { margin-top: 1rem; text-align: center; font-size: 1rem; line-height: 1.5; color: var(--rb-surface-muted-color); }
|
|
96219
|
+
@container rb-site (max-width: 767px) {
|
|
96220
|
+
@scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
|
|
96221
|
+
[data-skin="lantern"]:is(*, :scope) [data-treat="arched-captions"] [data-slot="item"]:nth-child(3n + 2) { transform: none; }
|
|
96222
|
+
[data-skin="lantern"]:is(*, :scope) [data-treat="arched-captions"] [data-slot="item"]:nth-child(2n) { transform: translateY(3rem); }
|
|
96223
|
+
[data-skin="lantern"]:is(*, :scope) [data-treat="arched-captions"] [data-slot="items"]:has([data-slot="item"]:nth-child(3n + 2)) { padding-bottom: 0; }
|
|
96224
|
+
[data-skin="lantern"]:is(*, :scope) [data-treat="arched-captions"] [data-slot="items"]:has([data-slot="item"]:nth-child(2n)) { padding-bottom: 3rem; }
|
|
96225
|
+
}
|
|
96226
|
+
}
|
|
96227
|
+
|
|
96228
|
+
/* ---------------------------------------------------- newsletter: Signup in an arch */
|
|
96229
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="frame"] {
|
|
96230
|
+
display: grid; grid-template-columns: minmax(0, 1fr); justify-items: center;
|
|
96231
|
+
text-align: center; gap: 1.125rem; width: 100%; max-width: 53.75rem; margin-inline: auto;
|
|
96232
|
+
padding: 7rem clamp(1.5rem, 5cqi, 5rem) 3rem;
|
|
96233
|
+
border: 1px solid var(--rb-surface-mark-color); border-bottom: 0; border-radius: var(--lantern-arch-wide);
|
|
96234
|
+
}
|
|
96235
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="frame"]::before {
|
|
96236
|
+
content: ""; position: absolute; inset: 8px 8px 0; pointer-events: none;
|
|
96237
|
+
border: 1px solid var(--rb-surface-mark-color); border-bottom: 0; border-radius: var(--lantern-arch-wide); opacity: 0.55;
|
|
96238
|
+
}
|
|
96239
|
+
[data-skin="lantern"] [data-treat="signup-arch"][data-knob-arch-frame="false"] [data-slot="frame"] { border-color: transparent; }
|
|
96240
|
+
[data-skin="lantern"] [data-treat="signup-arch"][data-knob-arch-frame="false"] [data-slot="frame"]::before { display: none; }
|
|
96241
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="head"] { margin: 0; width: 100%; }
|
|
96242
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="head"]:not(:has(*)) { display: none; }
|
|
96243
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="head"]:not(:has([data-slot="heading"])) { padding-top: 0; }
|
|
96244
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="head"]:not(:has([data-slot="heading"]))::before,
|
|
96245
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="head"]:not(:has([data-slot="heading"]))::after { display: none; }
|
|
96246
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="intro"] { --rb-surface-text-color: var(--rb-surface-muted-color); color: var(--rb-surface-muted-color); }
|
|
96247
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="panel"] { width: 100%; max-width: 44rem; margin-top: 1.25rem; text-align: left; }
|
|
96248
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="grid"] { display: flex; flex-direction: row; flex-wrap: wrap; gap: 1rem; align-items: end; }
|
|
96249
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="items"] { display: contents; }
|
|
96250
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="item"] { display: grid; gap: 0.4rem; min-width: 0; flex: 1 1 12rem; margin: 0; }
|
|
96251
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="row"] { display: grid; gap: 0.4rem; min-width: 0; flex: 1.35 1 16rem; margin: 0; }
|
|
96252
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="fact-label"] { font-size: 1rem; font-weight: 500; color: var(--rb-surface-text-color); }
|
|
96253
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="control"] {
|
|
96254
|
+
width: 100%; min-width: 0; min-height: 52px; padding: 0.8rem 1.25rem;
|
|
96255
|
+
border: 1px solid var(--rb-surface-muted-color); border-radius: 9999px;
|
|
96256
|
+
background: transparent; color: var(--rb-surface-text-color); font-family: var(--font-body); font-size: 1.0625rem; line-height: 1.4;
|
|
96257
|
+
}
|
|
96258
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="control"]::placeholder { color: var(--rb-surface-muted-color); opacity: 1; }
|
|
96259
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="control"]:focus-visible { outline: 2px solid var(--rb-surface-mark-color); outline-offset: 2px; border-color: var(--rb-surface-mark-color); }
|
|
96260
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="actions"] { margin: 0; flex: 0 0 auto; }
|
|
96261
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="action"] { min-height: 52px; padding-block: 0; }
|
|
96262
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="grid"] > :not([data-slot]) { flex-basis: 100%; }
|
|
96263
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="caption"] { margin-top: 1.25rem; font-size: 1rem; line-height: 1.5; color: var(--rb-surface-muted-color); text-align: center; }
|
|
96264
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="outcome"] { width: 100%; margin-top: 1rem; font-family: var(--font-heading); font-size: 1.5rem; line-height: 1.3; text-align: center; }
|
|
96265
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="frame"]:not(:has([data-slot="heading"])) { padding-top: 4.5rem; }
|
|
96266
|
+
[data-skin="lantern"] [data-treat="signup-arch"][data-knob-arch-frame="false"] [data-slot="frame"] { padding-top: 0; }
|
|
96267
|
+
[data-skin="lantern"] [data-treat="signup-arch"] [data-slot="panel"]:not(:has([data-slot="item"])) { max-width: 34rem; }
|
|
96268
|
+
@container rb-site (max-width: 767px) {
|
|
96269
|
+
@scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
|
|
96270
|
+
[data-skin="lantern"]:is(*, :scope) [data-treat="signup-arch"] [data-slot="frame"] { padding: 5rem 1.25rem 2.5rem; }
|
|
96271
|
+
[data-skin="lantern"]:is(*, :scope) [data-treat="signup-arch"] [data-slot="grid"] { flex-direction: column; align-items: stretch; }
|
|
96272
|
+
[data-skin="lantern"]:is(*, :scope) [data-treat="signup-arch"] :is([data-slot="item"], [data-slot="row"], [data-slot="actions"]) { flex: none; width: 100%; }
|
|
96273
|
+
[data-skin="lantern"]:is(*, :scope) [data-treat="signup-arch"] [data-slot="action"] { width: 100%; }
|
|
96274
|
+
}
|
|
96275
|
+
}
|
|
96276
|
+
|
|
96277
|
+
/* ---------------------------------------------------- form: beside introduction, arched panel */
|
|
96278
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="frame"] { grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 2rem; align-items: start; }
|
|
96279
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="copy"] { grid-column: 1 / 6; padding-top: 0; min-width: 0; }
|
|
96280
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="head"] { padding-top: 5rem; display: grid; justify-items: start; justify-self: start; margin-inline: 0; width: 100%; text-align: left; }
|
|
96281
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="head"] > :is([data-slot="heading"], [data-slot="intro"]) { text-align: left; }
|
|
96282
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="head"]::before { width: 52px; height: 9px; left: 0; transform: none; background: linear-gradient(to right, transparent 0 18px, var(--rb-surface-mark-color) 18px) center 4px / 52px 1px no-repeat; }
|
|
96283
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="head"]::after { left: 0; transform: rotate(45deg); }
|
|
96284
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="intro"] { font-size: 1.1875rem; line-height: 1.65; }
|
|
96285
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="head"]:not(:has([data-slot="heading"])) { padding-top: 0; }
|
|
96286
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="head"]:not(:has([data-slot="heading"]))::before,
|
|
96287
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="head"]:not(:has([data-slot="heading"]))::after { display: none; }
|
|
96288
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="copy"]:not(:has([data-slot="heading"], [data-slot="intro"])) { display: none; }
|
|
96289
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="panel"] {
|
|
96290
|
+
grid-column: 7 / 13; min-width: 0; padding: 5.5rem clamp(1.5rem, 3cqi, 2.75rem) 2.5rem;
|
|
96291
|
+
border: 1px solid var(--rb-surface-mark-color); border-radius: 50% 50% var(--rb-skin-radius, 10px) var(--rb-skin-radius, 10px) / 140px 140px var(--rb-skin-radius, 10px) var(--rb-skin-radius, 10px);
|
|
96292
|
+
}
|
|
96293
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="panel"]::before {
|
|
96294
|
+
content: ""; position: absolute; inset: 8px 8px auto; height: 160px; pointer-events: none;
|
|
96295
|
+
border: 1px solid var(--rb-surface-mark-color); border-bottom: 0; border-radius: 50% 50% 0 0 / 132px 132px 0 0; opacity: 0.55;
|
|
96296
|
+
mask-image: linear-gradient(currentcolor 40%, transparent);
|
|
96297
|
+
}
|
|
96298
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="frame"]:not(:has([data-slot="heading"], [data-slot="intro"])) > [data-slot="panel"] { grid-column: 1 / -1; width: 100%; max-width: 44rem; margin-inline: auto; }
|
|
96299
|
+
[data-skin="lantern"] [data-treat="arched-panel"][data-knob-arch-frame="false"] [data-slot="panel"] { border-color: transparent; border-radius: var(--rb-skin-radius, 10px); padding-top: 2.5rem; }
|
|
96300
|
+
[data-skin="lantern"] [data-treat="arched-panel"][data-knob-arch-frame="false"] [data-slot="panel"]::before { display: none; }
|
|
96301
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="grid"] { display: grid; gap: 1.25rem; }
|
|
96302
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="group"] { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
|
|
96303
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="item"] { min-width: 0; margin: 0; }
|
|
96304
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="fact-label"] { font-weight: 500; color: var(--rb-surface-text-color); font-size: 1rem; }
|
|
96305
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="control"] {
|
|
96306
|
+
width: 100%; min-width: 0; padding: 0.875rem 1rem; border: 1px solid var(--rb-surface-muted-color);
|
|
96307
|
+
border-radius: var(--rb-skin-radius, 10px); background: transparent; color: var(--rb-surface-text-color); font-family: var(--font-body); font-size: 1.0625rem;
|
|
96308
|
+
}
|
|
96309
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-control="select"] { padding-right: 2.5rem; background-image: linear-gradient(45deg, transparent 50%, var(--rb-surface-text-color) 50%), linear-gradient(135deg, var(--rb-surface-text-color) 50%, transparent 50%); background-position: calc(100% - 22px) 50%, calc(100% - 16px) 50%; background-size: 6px 6px; background-repeat: no-repeat; }
|
|
96310
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="intro"] > [data-slot="lede"] { font-size: inherit; line-height: inherit; color: var(--rb-surface-text-color); }
|
|
96311
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="control"]::placeholder { color: var(--rb-surface-muted-color); opacity: 1; }
|
|
96312
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="mark"] { border-color: var(--rb-surface-muted-color); }
|
|
96313
|
+
[data-skin="lantern"] [data-treat="arched-panel"] :is([data-slot="control"], [data-slot="mark"]):focus-visible { outline: 2px solid var(--rb-surface-mark-color); outline-offset: 2px; }
|
|
96314
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="actions"] { margin-top: 0.5rem; }
|
|
96315
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="inline"] { display: flex; flex-wrap: wrap; gap: 1rem; }
|
|
96316
|
+
[data-skin="lantern"] [data-treat="arched-panel"] [data-slot="outcome"] { padding: 1rem 0 2rem; text-align: center; font-family: var(--font-heading); font-size: 1.5rem; line-height: 1.3; color: var(--rb-surface-text-color); }
|
|
96317
|
+
@container rb-site (max-width: 1023px) {
|
|
96318
|
+
@scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
|
|
96319
|
+
[data-skin="lantern"]:is(*, :scope) [data-treat="arched-panel"] [data-slot="frame"] { grid-template-columns: minmax(0, 1fr); }
|
|
96320
|
+
[data-skin="lantern"]:is(*, :scope) [data-treat="arched-panel"] :is([data-slot="copy"], [data-slot="panel"]) { grid-column: 1 / -1; }
|
|
96321
|
+
[data-skin="lantern"]:is(*, :scope) [data-treat="arched-panel"] [data-slot="copy"] { padding-top: 0; }
|
|
96322
|
+
}
|
|
96323
|
+
}
|
|
96324
|
+
@container rb-site (max-width: 767px) {
|
|
96325
|
+
@scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
|
|
96326
|
+
[data-skin="lantern"]:is(*, :scope) [data-treat="arched-panel"] [data-slot="panel"] { padding: 4.5rem 1.125rem 1.75rem; border-radius: 50% 50% var(--rb-skin-radius, 10px) var(--rb-skin-radius, 10px) / 90px 90px var(--rb-skin-radius, 10px) var(--rb-skin-radius, 10px); }
|
|
96327
|
+
[data-skin="lantern"]:is(*, :scope) [data-treat="arched-panel"] [data-slot="panel"]::before { border-radius: 50% 50% 0 0 / 84px 84px 0 0; height: 110px; }
|
|
96328
|
+
[data-skin="lantern"]:is(*, :scope) [data-treat="arched-panel"][data-knob-arch-frame="false"] [data-slot="panel"] { padding-top: 1.75rem; border-radius: var(--rb-skin-radius, 10px); }
|
|
96329
|
+
[data-skin="lantern"]:is(*, :scope) [data-treat="arched-panel"] [data-slot="group"] { grid-template-columns: minmax(0, 1fr); }
|
|
96330
|
+
}
|
|
96331
|
+
}
|
|
96332
|
+
|
|
96333
|
+
/* Lucy slice 5 — Reading column. Existing rich-text nodes carry semantic hooks. */
|
|
96334
|
+
[data-skin="lantern"] [data-treat="reading-column"] [data-slot="copy"] { width: 100%; max-width: 36rem; margin-inline: auto; align-items: stretch; gap: 1.25rem; text-align: left; }
|
|
96335
|
+
[data-skin="lantern"] [data-treat="reading-column"] [data-slot="item-body"] { width: 100%; font-size: 1.1875rem; line-height: 1.7; text-align: left; }
|
|
96336
|
+
[data-skin="lantern"] [data-treat="reading-column"] [data-slot="lede"] { font-size: clamp(1.3125rem, 1.8cqi, 1.5rem); line-height: 1.55; color: var(--rb-surface-text-color); }
|
|
96337
|
+
[data-skin="lantern"] [data-treat="reading-column"] [data-slot="heading"] { position: relative; padding-top: 2rem; margin-block: 2.25rem 1.25rem; font-size: clamp(1.75rem, 2.6cqi, 2.125rem); line-height: 1.12; text-align: center; color: var(--rb-surface-heading-color); }
|
|
96338
|
+
[data-skin="lantern"] [data-treat="reading-column"] [data-slot="heading"]::before { content: ""; position: absolute; top: 0; left: 50%; width: 92px; height: 9px; transform: translateX(-50%); background: linear-gradient(to right, var(--rb-surface-mark-color) 0 34px, transparent 34px 58px, var(--rb-surface-mark-color) 58px) center 4px / 92px 1px no-repeat; }
|
|
96339
|
+
[data-skin="lantern"] [data-treat="reading-column"] [data-slot="heading"]::after { content: ""; position: absolute; top: 1px; left: 50%; width: 7px; height: 7px; border: 1.5px solid var(--rb-surface-mark-color); transform: translateX(-50%) rotate(45deg); }
|
|
96340
|
+
[data-skin="lantern"] [data-treat="reading-column"] [data-slot="quote"] { position: relative; margin: 2rem 0; padding: 2.25rem 0.5rem 2rem; border: 0; border-bottom: 1px solid var(--rb-surface-line-color); text-align: center; font-family: var(--font-heading); font-size: clamp(1.5rem, 2.3cqi, 1.875rem); line-height: 1.3; text-wrap: balance; color: var(--rb-surface-heading-color); }
|
|
96341
|
+
[data-skin="lantern"] [data-treat="reading-column"] [data-slot="quote"] > * { margin: 0; font-family: inherit; font-size: inherit; line-height: inherit; color: inherit; }
|
|
96342
|
+
[data-skin="lantern"] [data-treat="reading-column"] [data-slot="quote"]::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 1px; background: linear-gradient(to right, var(--rb-surface-line-color) 0 calc(50% - 12px), transparent calc(50% - 12px) calc(50% + 12px), var(--rb-surface-line-color) calc(50% + 12px)); }
|
|
96343
|
+
[data-skin="lantern"] [data-treat="reading-column"] [data-slot="quote"]::after { content: ""; position: absolute; top: -4px; left: 50%; width: 9px; height: 9px; border: 1.5px solid var(--rb-surface-mark-color); transform: translateX(-50%) rotate(45deg); }
|
|
96344
|
+
[data-skin="lantern"] [data-treat="reading-column"] [data-slot="photo"] { display: block; width: 100%; max-width: none; height: auto; aspect-ratio: 4 / 3; object-fit: cover; margin: 1.5rem 0; border-radius: 50% 50% 0 0 / 90px 90px 0 0; }
|
|
96345
|
+
@container rb-site (min-width: 1024px) {
|
|
96346
|
+
@scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
|
|
96347
|
+
[data-skin="lantern"]:is(*, :scope) [data-treat="reading-column"] [data-slot="photo"] { width: calc(100% + 12rem); margin-inline: -6rem; border-radius: var(--lantern-arch-wide); }
|
|
96348
|
+
}
|
|
96349
|
+
}
|
|
96350
|
+
|
|
96351
|
+
/* Reading-column flow owns one gap; optional title spans the whole column. */
|
|
96352
|
+
[data-skin="lantern"] [data-treat="reading-column"] [data-slot="item-body"] { display: grid; gap: 1.25rem; }
|
|
96353
|
+
[data-skin="lantern"] [data-treat="reading-column"] [data-slot="item-body"] > * { margin-block: 0; }
|
|
96354
|
+
[data-skin="lantern"] [data-treat="reading-column"] [data-slot="item-body"] > [data-slot="heading"] { margin-top: 2.25rem; }
|
|
96355
|
+
[data-skin="lantern"] [data-treat="reading-column"] [data-slot="item-body"] > [data-slot="quote"] { margin-block: 2rem; }
|
|
96356
|
+
[data-skin="lantern"] [data-treat="reading-column"] [data-slot="item-body"] > [data-slot="photo"] { margin-block: 1.5rem; }
|
|
96357
|
+
[data-skin="lantern"] [data-treat="reading-column"] [data-slot="copy"] > [data-slot="heading"] { width: 100%; margin-top: 0; font-size: clamp(2.25rem, 3.9cqi, 3.375rem); }
|
|
96358
|
+
|
|
96359
|
+
/* Rich-text links use the same ink and decorative underline as the mockup. */
|
|
96360
|
+
[data-skin="lantern"] [data-treat="circle-beside"] [data-slot="intro"] [data-control="link"] { color: var(--rb-surface-text-color); text-decoration-color: var(--rb-surface-mark-color); text-decoration-thickness: 1.5px; text-underline-offset: 5px; }
|
|
96361
|
+
|
|
95872
96362
|
/* =============================================================================
|
|
95873
96363
|
* Measure skin (issue 1575 Phase 1b, D14).
|
|
95874
96364
|
*
|
|
@@ -101596,10 +102086,10 @@ function parseLocalEventRun(raw, filePath) {
|
|
|
101596
102086
|
}
|
|
101597
102087
|
if ("schedule" in raw) throw new LegacyEventScheduleShapeError(filePath);
|
|
101598
102088
|
const identity = parseLocalEventRunScheduleIdentity(raw, filePath);
|
|
101599
|
-
const fields$
|
|
101600
|
-
assertLocalEventRunRefs(fields$
|
|
101601
|
-
assertLocalEventRunVisibility(fields$
|
|
101602
|
-
if ("categoryRef" in fields$
|
|
102089
|
+
const fields$1 = raw;
|
|
102090
|
+
assertLocalEventRunRefs(fields$1, filePath);
|
|
102091
|
+
assertLocalEventRunVisibility(fields$1, filePath);
|
|
102092
|
+
if ("categoryRef" in fields$1) {
|
|
101603
102093
|
throw new InvalidLocalEventScheduleIdentityError(filePath, "Move categoryRef to the parent Event file");
|
|
101604
102094
|
}
|
|
101605
102095
|
const { presentation: _retiredPresentation, ...run } = raw;
|
|
@@ -108894,7 +109384,7 @@ function nestedFieldsFor(field) {
|
|
|
108894
109384
|
* - repeater: has schema.fields (monomorphic) or itemTypes (polymorphic)
|
|
108895
109385
|
* - tabGroup: has tabs[].fields
|
|
108896
109386
|
*/
|
|
108897
|
-
function extractFieldIds(fields$
|
|
109387
|
+
function extractFieldIds(fields$1) {
|
|
108898
109388
|
const ids = new Set();
|
|
108899
109389
|
function processField(field) {
|
|
108900
109390
|
ids.add(field.id);
|
|
@@ -108902,7 +109392,7 @@ function extractFieldIds(fields$2) {
|
|
|
108902
109392
|
processField(nestedField);
|
|
108903
109393
|
}
|
|
108904
109394
|
}
|
|
108905
|
-
for (const field of fields$
|
|
109395
|
+
for (const field of fields$1) {
|
|
108906
109396
|
processField(field);
|
|
108907
109397
|
}
|
|
108908
109398
|
return ids;
|
|
@@ -108914,9 +109404,9 @@ function extractFieldIds(fields$2) {
|
|
|
108914
109404
|
* within groups/repeaters are not validated at this level since their
|
|
108915
109405
|
* presence depends on parent field structure.
|
|
108916
109406
|
*/
|
|
108917
|
-
function extractRequiredFieldIds(fields$
|
|
109407
|
+
function extractRequiredFieldIds(fields$1) {
|
|
108918
109408
|
const required = new Set();
|
|
108919
|
-
for (const field of fields$
|
|
109409
|
+
for (const field of fields$1) {
|
|
108920
109410
|
if (field.required) {
|
|
108921
109411
|
required.add(field.id);
|
|
108922
109412
|
}
|
|
@@ -110315,8 +110805,8 @@ function reportStoppedExecution(commandReports, residualSyncResults, remainingSt
|
|
|
110315
110805
|
}
|
|
110316
110806
|
function skippedResidualSettingsResult(residual) {
|
|
110317
110807
|
const result = createEmptySyncResult();
|
|
110318
|
-
const fields$
|
|
110319
|
-
result.warnings.push(fields$
|
|
110808
|
+
const fields$1 = residual.diff.settings?.changes ?? [];
|
|
110809
|
+
result.warnings.push(fields$1.length === 0 ? "Skipped remaining settings changes because an earlier push step failed." : `Skipped remaining settings changes because an earlier push step failed: ${fields$1.join(", ")}.`);
|
|
110320
110810
|
return result;
|
|
110321
110811
|
}
|
|
110322
110812
|
function executeResidualSettingsSync(input, residual) {
|
|
@@ -117625,8 +118115,7 @@ const THEME_FIELD_CATEGORY_MAP = {
|
|
|
117625
118115
|
"name",
|
|
117626
118116
|
"description",
|
|
117627
118117
|
"rationale",
|
|
117628
|
-
"siteStyleId"
|
|
117629
|
-
"skin"
|
|
118118
|
+
"siteStyleId"
|
|
117630
118119
|
],
|
|
117631
118120
|
"Design Axes": ["axes"],
|
|
117632
118121
|
"Palette": ["palette"],
|
|
@@ -117642,9 +118131,7 @@ const THEME_FIELD_CATEGORY_MAP = {
|
|
|
117642
118131
|
"motion",
|
|
117643
118132
|
"corners",
|
|
117644
118133
|
"gradients",
|
|
117645
|
-
"headingDecoration"
|
|
117646
|
-
"skinTokens",
|
|
117647
|
-
"skinMarks"
|
|
118134
|
+
"headingDecoration"
|
|
117648
118135
|
],
|
|
117649
118136
|
"Component Systems": [
|
|
117650
118137
|
"buttons",
|
|
@@ -117662,6 +118149,11 @@ const THEME_FIELD_CATEGORY_MAP = {
|
|
|
117662
118149
|
"layout",
|
|
117663
118150
|
"hero"
|
|
117664
118151
|
],
|
|
118152
|
+
"Site Style Dressing": [
|
|
118153
|
+
"skin",
|
|
118154
|
+
"skinTokens",
|
|
118155
|
+
"skinMarks"
|
|
118156
|
+
],
|
|
117665
118157
|
"Custom CSS": [
|
|
117666
118158
|
"customCssRules",
|
|
117667
118159
|
"blockCustomCssRules",
|
|
@@ -117898,13 +118390,13 @@ function extractSchemaInfo(schema, skipFields = []) {
|
|
|
117898
118390
|
if (typeName !== ZodTypeName.ZodObject) {
|
|
117899
118391
|
return [];
|
|
117900
118392
|
}
|
|
117901
|
-
const fields$
|
|
118393
|
+
const fields$1 = [];
|
|
117902
118394
|
for (const [name, fieldSchema$1] of getSchemaShapeEntries(inner)) {
|
|
117903
118395
|
if (skipFields.includes(name)) continue;
|
|
117904
118396
|
const fieldInfo = extractFieldInfo(name, fieldSchema$1);
|
|
117905
|
-
fields$
|
|
118397
|
+
fields$1.push(fieldInfo);
|
|
117906
118398
|
}
|
|
117907
|
-
return fields$
|
|
118399
|
+
return fields$1;
|
|
117908
118400
|
}
|
|
117909
118401
|
/**
|
|
117910
118402
|
* Extract information from a single field
|
|
@@ -118006,7 +118498,7 @@ function formatUnionOption(schema) {
|
|
|
118006
118498
|
/**
|
|
118007
118499
|
* Group fields by category for documentation organization
|
|
118008
118500
|
*/
|
|
118009
|
-
function groupFieldsByCategory(fields$
|
|
118501
|
+
function groupFieldsByCategory(fields$1) {
|
|
118010
118502
|
const categories = new Map();
|
|
118011
118503
|
const categorizedFieldNames = new Set();
|
|
118012
118504
|
for (const fieldNames of Object.values(THEME_FIELD_CATEGORY_MAP)) {
|
|
@@ -118015,12 +118507,12 @@ function groupFieldsByCategory(fields$2) {
|
|
|
118015
118507
|
}
|
|
118016
118508
|
}
|
|
118017
118509
|
for (const [category, fieldNames] of Object.entries(THEME_FIELD_CATEGORY_MAP)) {
|
|
118018
|
-
const categoryFields = fields$
|
|
118510
|
+
const categoryFields = fields$1.filter((f) => fieldNames.includes(f.name));
|
|
118019
118511
|
if (categoryFields.length > 0) {
|
|
118020
118512
|
categories.set(category, categoryFields);
|
|
118021
118513
|
}
|
|
118022
118514
|
}
|
|
118023
|
-
const otherFields = fields$
|
|
118515
|
+
const otherFields = fields$1.filter((f) => !categorizedFieldNames.has(f.name));
|
|
118024
118516
|
if (otherFields.length > 0) {
|
|
118025
118517
|
categories.set("Other", otherFields);
|
|
118026
118518
|
}
|
|
@@ -118222,8 +118714,8 @@ const COMMON_PATTERNS = [{
|
|
|
118222
118714
|
function getCommonPatternId(field) {
|
|
118223
118715
|
return COMMON_PATTERNS.find((pattern) => pattern.match(field))?.id;
|
|
118224
118716
|
}
|
|
118225
|
-
function renderFieldList(fields$
|
|
118226
|
-
return fields$
|
|
118717
|
+
function renderFieldList(fields$1, depth, skipPatternCheck = false) {
|
|
118718
|
+
return fields$1.flatMap((field) => renderField(field, depth, skipPatternCheck));
|
|
118227
118719
|
}
|
|
118228
118720
|
function renderField(field, depth, skipPatternCheck) {
|
|
118229
118721
|
const indent$1 = " ".repeat(depth);
|
|
@@ -118672,16 +119164,16 @@ function buildThemeSchemaTemplate() {
|
|
|
118672
119164
|
}
|
|
118673
119165
|
function buildThemeSchemaGeneratedSection() {
|
|
118674
119166
|
const sections = [];
|
|
118675
|
-
const fields$
|
|
118676
|
-
const categorized = groupFieldsByCategory(fields$
|
|
119167
|
+
const fields$1 = extractSchemaInfo(themeSchema, DEPRECATED_THEME_FIELDS);
|
|
119168
|
+
const categorized = groupFieldsByCategory(fields$1);
|
|
118677
119169
|
for (const [category, categoryFields] of categorized) {
|
|
118678
119170
|
sections.push(renderThemeSchemaCategorySection(category, categoryFields));
|
|
118679
119171
|
}
|
|
118680
119172
|
return sections.join("\n");
|
|
118681
119173
|
}
|
|
118682
|
-
function renderThemeSchemaCategorySection(category, fields$
|
|
119174
|
+
function renderThemeSchemaCategorySection(category, fields$1) {
|
|
118683
119175
|
const lines = [`## ${category}`, ""];
|
|
118684
|
-
for (const field of fields$
|
|
119176
|
+
for (const field of fields$1) {
|
|
118685
119177
|
lines.push(...renderThemeSchemaField(field, 0));
|
|
118686
119178
|
lines.push("");
|
|
118687
119179
|
}
|
|
@@ -118812,10 +119304,10 @@ function renderBlockFieldOptionsSection(options) {
|
|
|
118812
119304
|
lines.push("");
|
|
118813
119305
|
return lines.join("\n");
|
|
118814
119306
|
}
|
|
118815
|
-
for (const [blockId, fields$
|
|
119307
|
+
for (const [blockId, fields$1] of Object.entries(options)) {
|
|
118816
119308
|
lines.push(`### ${blockId}`);
|
|
118817
119309
|
lines.push("");
|
|
118818
|
-
for (const [fieldId, config$1] of Object.entries(fields$
|
|
119310
|
+
for (const [fieldId, config$1] of Object.entries(fields$1)) {
|
|
118819
119311
|
lines.push(`- ${fieldId}`);
|
|
118820
119312
|
if (config$1.options && config$1.options.length > 0) {
|
|
118821
119313
|
lines.push(...renderOptionsList(config$1.options, 1));
|
|
@@ -118944,7 +119436,7 @@ async function loadConfig(configPath, output) {
|
|
|
118944
119436
|
return { errorMessage: "No config path provided." };
|
|
118945
119437
|
}
|
|
118946
119438
|
try {
|
|
118947
|
-
const { loadConfigFile: loadConfigFile$1 } = await import("../load-config-
|
|
119439
|
+
const { loadConfigFile: loadConfigFile$1 } = await import("../load-config-rPaisrdG.mjs");
|
|
118948
119440
|
const rawConfig = await loadConfigFile$1(configPath);
|
|
118949
119441
|
const parsed = riverbankSiteConfigSchema.safeParse(rawConfig);
|
|
118950
119442
|
if (!parsed.success) {
|
|
@@ -125472,8 +125964,8 @@ async function hostFingerprint() {
|
|
|
125472
125964
|
function linuxProcessStartToken(raw) {
|
|
125473
125965
|
const commandEnd = raw.lastIndexOf(")");
|
|
125474
125966
|
if (commandEnd < 0) return null;
|
|
125475
|
-
const fields$
|
|
125476
|
-
return fields$
|
|
125967
|
+
const fields$1 = raw.slice(commandEnd + 1).trim().split(/\s+/);
|
|
125968
|
+
return fields$1[19] ?? null;
|
|
125477
125969
|
}
|
|
125478
125970
|
async function processStartProbe(pid) {
|
|
125479
125971
|
if (process.platform === "linux") {
|
|
@@ -129044,26 +129536,26 @@ function parseReceiptKeyIds(value) {
|
|
|
129044
129536
|
};
|
|
129045
129537
|
return value.tag === "standard" ? parseStandardKnownCredentialKeyIds(parsedFields) : parsePreviewKnownCredentialKeyIds(parsedFields);
|
|
129046
129538
|
}
|
|
129047
|
-
function parseStandardKnownCredentialKeyIds(fields$
|
|
129048
|
-
if (fields$
|
|
129539
|
+
function parseStandardKnownCredentialKeyIds(fields$1) {
|
|
129540
|
+
if (fields$1.live !== undefined && fields$1.management !== undefined) {
|
|
129049
129541
|
return ok({
|
|
129050
129542
|
tag: "standard",
|
|
129051
|
-
live: fields$
|
|
129052
|
-
management: fields$
|
|
129543
|
+
live: fields$1.live,
|
|
129544
|
+
management: fields$1.management
|
|
129053
129545
|
});
|
|
129054
129546
|
}
|
|
129055
|
-
if (fields$
|
|
129547
|
+
if (fields$1.live !== undefined) return ok({
|
|
129056
129548
|
tag: "standard",
|
|
129057
|
-
live: fields$
|
|
129549
|
+
live: fields$1.live
|
|
129058
129550
|
});
|
|
129059
|
-
if (fields$
|
|
129551
|
+
if (fields$1.management !== undefined) return ok({
|
|
129060
129552
|
tag: "standard",
|
|
129061
|
-
management: fields$
|
|
129553
|
+
management: fields$1.management
|
|
129062
129554
|
});
|
|
129063
129555
|
return err({ tag: "invalid_key_ids" });
|
|
129064
129556
|
}
|
|
129065
|
-
function parsePreviewKnownCredentialKeyIds(fields$
|
|
129066
|
-
const { live, management, preview } = fields$
|
|
129557
|
+
function parsePreviewKnownCredentialKeyIds(fields$1) {
|
|
129558
|
+
const { live, management, preview } = fields$1;
|
|
129067
129559
|
if (live !== undefined && management !== undefined && preview !== undefined) {
|
|
129068
129560
|
return ok({
|
|
129069
129561
|
tag: "with_preview",
|
|
@@ -131445,7 +131937,7 @@ function appointmentsRequirements(context, input) {
|
|
|
131445
131937
|
acknowledgedAt: override.acknowledgedAt,
|
|
131446
131938
|
acknowledgedBy: override.acknowledgedBy
|
|
131447
131939
|
} : evidenceFromDerivedState(state);
|
|
131448
|
-
const fields$
|
|
131940
|
+
const fields$1 = {
|
|
131449
131941
|
packId: "bookings_appointments",
|
|
131450
131942
|
owner: "admin",
|
|
131451
131943
|
title: "Configure appointments",
|
|
@@ -131455,7 +131947,7 @@ function appointmentsRequirements(context, input) {
|
|
|
131455
131947
|
evidence
|
|
131456
131948
|
};
|
|
131457
131949
|
return [requirement(context.publicExperience, appointments.kind === "pending_setup" ? {
|
|
131458
|
-
...fields$
|
|
131950
|
+
...fields$1,
|
|
131459
131951
|
id: "configure_appointments",
|
|
131460
131952
|
state: "pending",
|
|
131461
131953
|
detail: {
|
|
@@ -131463,14 +131955,14 @@ function appointmentsRequirements(context, input) {
|
|
|
131463
131955
|
missing: appointments.missing
|
|
131464
131956
|
}
|
|
131465
131957
|
} : {
|
|
131466
|
-
...fields$
|
|
131958
|
+
...fields$1,
|
|
131467
131959
|
id: "configure_appointments",
|
|
131468
131960
|
state: "complete"
|
|
131469
131961
|
})];
|
|
131470
131962
|
}
|
|
131471
131963
|
function eventsRequirements(context, events) {
|
|
131472
131964
|
if (events.kind === "disabled") return [];
|
|
131473
|
-
const fields$
|
|
131965
|
+
const fields$1 = derivedFields(context, {
|
|
131474
131966
|
packId: "bookings_events",
|
|
131475
131967
|
complete: events.kind === "ready",
|
|
131476
131968
|
copy: {
|
|
@@ -131481,7 +131973,7 @@ function eventsRequirements(context, events) {
|
|
|
131481
131973
|
actionLabel: "Create an event"
|
|
131482
131974
|
});
|
|
131483
131975
|
return [requirement(context.publicExperience, events.kind === "pending_setup" ? {
|
|
131484
|
-
...fields$
|
|
131976
|
+
...fields$1,
|
|
131485
131977
|
id: "configure_events",
|
|
131486
131978
|
state: "pending",
|
|
131487
131979
|
detail: {
|
|
@@ -131489,7 +131981,7 @@ function eventsRequirements(context, events) {
|
|
|
131489
131981
|
offeredKinds: events.offeredKinds
|
|
131490
131982
|
}
|
|
131491
131983
|
} : {
|
|
131492
|
-
...fields$
|
|
131984
|
+
...fields$1,
|
|
131493
131985
|
id: "configure_events",
|
|
131494
131986
|
state: "complete"
|
|
131495
131987
|
})];
|
|
@@ -131510,7 +132002,7 @@ function coursesRequirements(context, courses) {
|
|
|
131510
132002
|
}
|
|
131511
132003
|
function paymentsRequirements(context, payments) {
|
|
131512
132004
|
if (payments.kind === "not_applicable") return [];
|
|
131513
|
-
const fields$
|
|
132005
|
+
const fields$1 = derivedFields(context, {
|
|
131514
132006
|
packId: "payments",
|
|
131515
132007
|
complete: payments.kind === "ready",
|
|
131516
132008
|
copy: {
|
|
@@ -131521,11 +132013,11 @@ function paymentsRequirements(context, payments) {
|
|
|
131521
132013
|
actionLabel: "Connect payments"
|
|
131522
132014
|
});
|
|
131523
132015
|
return [requirement(context.publicExperience, payments.kind === "ready" ? {
|
|
131524
|
-
...fields$
|
|
132016
|
+
...fields$1,
|
|
131525
132017
|
id: "connect_payments",
|
|
131526
132018
|
state: "complete"
|
|
131527
132019
|
} : {
|
|
131528
|
-
...fields$
|
|
132020
|
+
...fields$1,
|
|
131529
132021
|
id: "connect_payments",
|
|
131530
132022
|
state: "pending",
|
|
131531
132023
|
detail: {
|
|
@@ -134897,6 +135389,24 @@ async function acceptAdminInvite(apiClient, params) {
|
|
|
134897
135389
|
}
|
|
134898
135390
|
}
|
|
134899
135391
|
|
|
135392
|
+
//#endregion
|
|
135393
|
+
//#region ../billing/dist/stripe/connectSetupTypes.js
|
|
135394
|
+
/** Explicit choices only: an unmatched offering uses Stripe's guided category selection. */
|
|
135395
|
+
const STRIPE_CONNECT_BUSINESS_CATEGORIES = [
|
|
135396
|
+
{
|
|
135397
|
+
mcc: "8299",
|
|
135398
|
+
label: "Educational classes and workshops"
|
|
135399
|
+
},
|
|
135400
|
+
{
|
|
135401
|
+
mcc: "7997",
|
|
135402
|
+
label: "Fitness clubs and membership-based activities"
|
|
135403
|
+
},
|
|
135404
|
+
{
|
|
135405
|
+
mcc: "7911",
|
|
135406
|
+
label: "Dance schools and studios"
|
|
135407
|
+
}
|
|
135408
|
+
];
|
|
135409
|
+
|
|
134900
135410
|
//#endregion
|
|
134901
135411
|
//#region src/project-linking/atomic-write.ts
|
|
134902
135412
|
function isNodeError$3(error$1) {
|