@riverbankcms/sdk 0.101.0 → 0.102.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.
Files changed (54) hide show
  1. package/dist/{PreviewEditorSidebar-DBpy0KTh.mjs → PreviewEditorSidebar-BKkhhkJk.mjs} +358 -68
  2. package/dist/{PreviewEditorUI-Fg6I2R2T.mjs → PreviewEditorUI-DIvTqcqI.mjs} +3 -3
  3. package/dist/{PreviewQueryProvider-BICQLAUF.mjs → PreviewQueryProvider-ZF6TXq5Q.mjs} +1 -1
  4. package/dist/{SdkPreviewModeRuntime-DFQP-Q53.mjs → SdkPreviewModeRuntime-CA2k7Z_T.mjs} +200 -122
  5. package/dist/{SiteChromeCustomizeContext-GwZc89KN.mjs → SiteChromeCustomizeContext-Bh9-DtMQ.mjs} +203 -34
  6. package/dist/_dts/ai/src/designer/rfc6902.d.ts +57 -1
  7. package/dist/_dts/ai/src/designer/themePatch.d.ts +16 -6
  8. package/dist/_dts/api/src/bookingVerticals.d.ts +53 -1
  9. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +1 -0
  10. package/dist/_dts/blocks/src/bindings/index.d.ts +1 -1
  11. package/dist/_dts/blocks/src/system/runtime/nodes/layout.d.ts +1 -0
  12. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  13. package/dist/_dts/core/src/branded.d.ts +4 -0
  14. package/dist/_dts/core/src/person-records.d.ts +6 -1
  15. package/dist/_dts/media-core/src/identifiers.d.ts +14 -1
  16. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +1 -1
  17. package/dist/_dts/preview-next/src/client/blocks/previewProjection/applyPreviewProjections.d.ts +3 -1
  18. package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -2
  19. package/dist/_dts/preview-next/src/client/preview/PreviewChromeLayer.d.ts +2 -1
  20. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +43 -7
  21. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +4 -4
  22. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorApplyPayload.d.ts +1 -1
  23. package/dist/_dts/preview-next/src/client/preview/typographySelectionInput.d.ts +4 -2
  24. package/dist/_dts/sdk/src/version.d.ts +1 -1
  25. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +4 -2
  26. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +4 -4
  27. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +6 -1
  28. package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +3 -3
  29. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +24 -1
  30. package/dist/cli/index.mjs +31 -15
  31. package/dist/client/client.mjs +44 -16
  32. package/dist/client/hooks.mjs +14 -5
  33. package/dist/client/rendering/client.mjs +21 -13
  34. package/dist/client/rendering.mjs +43 -15
  35. package/dist/preview-next/before-render.mjs +1 -1
  36. package/dist/preview-next/client/runtime.mjs +4 -4
  37. package/dist/{previewAuthStore-Da74OL0X.mjs → previewAuthStore-ByPPZqmp.mjs} +1 -0
  38. package/dist/{sdk-runtime-CP6Kwalv.mjs → sdk-runtime-K8Oqj97H.mjs} +2 -2
  39. package/dist/{separator-BVk7GvGN.mjs → separator-CRoP34pT.mjs} +1 -1
  40. package/dist/server/components.mjs +37 -13
  41. package/dist/server/config-validation.mjs +14 -5
  42. package/dist/server/config.mjs +14 -5
  43. package/dist/server/data.mjs +14 -5
  44. package/dist/server/index.mjs +2 -2
  45. package/dist/server/next.mjs +38 -14
  46. package/dist/server/page-converter.mjs +7 -4
  47. package/dist/server/prebuild.mjs +1 -1
  48. package/dist/server/rendering/server.mjs +37 -13
  49. package/dist/server/rendering.mjs +37 -13
  50. package/dist/server/routing.mjs +16 -6
  51. package/dist/server/server.mjs +15 -6
  52. package/dist/server/theme-bridge.mjs +5 -4
  53. package/dist/server/theme.mjs +1 -0
  54. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- import { $ as PreviewRichTextEditor, $a as eventScheduleScopeValues, $c as useSdkConfig, $d as Check, $i as parseBlockCustomCssRules, $n as formBlockDefinition, $o as ACCORDION_SPACING_MAP, $r as heroCtaRowFragment, $s as createRichTextDocFromMarkdown, $u as unsafeAsMediaAssetId, Aa as buildEventRuntimeFilters, Ac as siblingPath$1, Ad as ImagePlus, Al as ScrollableDialogContent, An as SITE_OVERLAY_HEADER_CLEARANCE_CSS_VAR, Ao as getContainerClass, Ar as formatInterval, As as ChevronDownIcon, At as createSnapshotFromPageRecord, Au as formatBookingInstant, Ba as columnOptionSchema, Bc as themeButtonClassName, Bd as EllipsisVertical, Bi as backgroundAppearanceColorTokenNames, Bn as ImageResolveContextProvider, Bo as createInteractiveIslandCodec, Br as richTextFragment, Bs as FileAudioIcon, Bt as createManifestFormAdapter, Bu as publicEventPricingMode, Ca as normalizeOfferingsPreviewItemLimit, Cc as formatAspectRatioToken, Cl as TabsContent, Cn as gradientToCss, Co as formatEventCompactDateRail, Cr as buildProductListInteractiveIslandProps, Cs as getSemanticIconComponent, Ct as pushHistoryEntry, Cu as createEditorRemoveBlockCommand, Da as resolveOfferingsPreviewGroups, Dc as getDirectImageUrlForMediaAsset, Dd as LoaderCircle, Dl as List, Dn as siteFooterManifest, Do as formatEventTeacherLine, Dr as buildProductCardDisplay, Ds as ArrowRightIcon, Du as addLocalScheduleDays, Ea as resolveOfferingsPreviewGroupOrderEntries, Ec as asRecord, Ei as surfaceResolutionContextFromTheme, El as Content$1, En as listBlockDescriptors, Eo as formatEventPriceDisplay, Er as buildCartDisplay, Es as ArrowLeftIcon, Et as unsafeAsLinkedContentEntryId, Eu as unsafeAsEditorBlockValues, Fa as resolveEventListPaginationAction, Fc as generateShadowValue$1, Fd as FilePlay, Fi as defaultSectionTransitionVariantForFamily, Fl as DialogFooter, Fn as layoutTransforms, Fo as getLocalDateKey, Fr as parseStoredCommerceCartState, Fs as CirclePlusIcon, Ft as usePalette, Fu as resolveBookingTimeZoneId, G as beginAutosaveBatch, Ga as previewStageSchema, Gc as textColorStyle, Gd as CircleMinus, Gl as Card, Gn as newsletterSignupBlockDefinition, Gr as blogFeaturedPostFragment, Gs as MapPinIcon$1, Gt as listContentTypes, Gu as assertNever$5, Ha as eventCalendarDefaultViewSchema, Hc as borderColorStyle, Hd as CreditCard, Hi as foregroundTokenForBackgroundAppearanceColorToken, Hl as Root, Hn as shopBlockDefinition, Ho as createZodCodec, Hr as cardFragment, Hs as FileTextIcon, Ht as FormRenderer, Hu as publicEventScalarPrice, Ia as normalizeCsvIds, Ic as generateBaseInteractiveCSS, Id as FileHeadphone, Ii as sectionTransitionFamilies, Il as DialogHeader, In as uiTransforms, Io as getLocalMinuteOfDay, Ir as productItemKey, Is as ClockIcon$1, It as recoveryConflictCopy, Iu as toBookingTimeZone, J as enqueueTransaction, Ja as eventCalendarListLayoutOptions, Jc as getModalConfig, Jd as ChevronsUpDown, Ji as isThemeV2NormalEditorRawStyleFieldName, Jl as CardTitle, Jn as buildEventListingInteractiveIslandProps, Jo as splitPositioningClasses, Jr as formEmbedFragment, Js as PlayIcon, Jt as getPageDesignEditorState, Ju as parseSiteId, K as confirmAutosaveBatch, Ka as weekStartSchema, Kc as useBackendWatch, Kd as CircleCheck, Kl as CardContent, Kn as buildNewsletterFormInteractiveIslandProps, Ko as composeHeaderSectionWrapperClassName, Kr as singleButtonFragment, Ks as MinusIcon, Kt as toRoutableLinkPayload, Ku as expectParsedBrandedId, La as normalizeCsvString, Lc as generateInteractiveChildInheritanceCSS, Ld as FileArchive, Li as sectionTransitionFamilyForBoundaryOptionId, Ll as DialogTitle, Ln as formattingTransforms, Lo as resolveRuntimeEventPricing, Lr as reduceCommerceCart, Ls as DownloadIcon, Lt as unfinishedBlockCopy, Lu as toScheduledBookingDateTime, Ma as eventPageSizeSchema, Md as File, Ml as DialogClose, Mn as visibleHeaderClearancePx, Mo as resolveEventCta, Mr as buildPassCartItem, Ms as ChevronRightIcon, Mu as formatLocalScheduleDate, Na as getEventRuntimeFiltersKey, Nc as generateButtonCss, Nd as FileText, Nl as DialogContent, Nn as contentTransforms, No as resolveEventLinkProps, Nr as buildProductCartItem, Ns as ChevronUpIcon, Nu as getBookingLocalDateKey, Oa as isSemanticSpacing, Oc as getImageUrl, Od as Image, Ol as Root2$1, On as siteHeaderManifest, Oo as formatTime$3, Or as buildProductDetailDisplay, Os as CalendarIcon$1, Ot as useDebouncedLatestSave, Ou as formatBookingDate, Pa as resolveEventCalendarListPageSize, Pc as generateEffectsCSS, Pd as FileSpreadsheet, Pl as DialogDescription, Pn as mediaTransforms, Po as getEventAvailability, Pr as deriveCommerceCheckoutState, Ps as CircleMinusIcon, Pt as PaletteProvider, Pu as parseBookingLocalDate, Q as resolvePreviewSidebarTab, Qa as eventBlockKindValues, Qc as SdkConfigProvider, Qd as ChevronDown, Qi as getComponentShadowVar, Ql as DropdownMenuItem, Qn as buildEventCalendarListingRender, Qo as ACCORDION_OPEN_ACCENT_THICKNESS, Qr as ctaCopyFragment, Qs as XIcon, Qt as deleteEntrySlotBlock, Qu as unsafeAsFormId, Ra as normalizeOptionalId, Rc as TokenResolver, Ri as sectionTransitionVariantForBoundaryOptionId, Rl as Collapsible, Rn as createManifestValidator, Ro as blockBookingPaymentTermsSchema, Rr as augmentManifest, Rs as ExternalLinkIcon, Rt as validateBlockManifestIssues, Ru as formatBookingPriceDisplay, Sa as normalizeOfferingsPreviewGroupOrder, Sc as normalizeRightAngle, Si as resolveVisiblePromotedFieldPathsForEditorBlock, Sl as Tabs, Sn as isSupportedLoaderEndpoint, So as formatDate$3, Sr as buildProductDetailInteractiveIslandProps, Ss as SEMANTIC_ICON_DEFINITIONS, St as createHistoryState, Su as createEditorInsertBlockCommand, Ta as resolveOfferingsPreviewGroupCta, Tc as resolveMediaTransformForAspect, Td as Minus, Ti as getCuratedSiteStyle, Tl as TabsTrigger, Tn as getBlockDefinition, To as formatEventPrice, Tr as getShopDisplayForItems, Ts as ArrowDownIcon, Tt as undoHistory, Tu as unsafeAsEditorBlockId, Ua as eventLayoutSchema, Uc as mergeStyles, Ud as Copy, Ui as parseBackgroundAppearanceColorToken, Ul as Trigger, Un as productListBlockDefinition, Uo as defineClientOwnedBlockRuntime, Ur as faqAccordionFragment, Us as InfoIcon, Ut as evaluateVisibility, Uu as publicEventTicketTypes, Va as eventButtonVariantSchema, Vc as backgroundColorStyle, Vd as Crop, Vi as backgroundAppearanceQuickColorTokenNames, Vl as Content, Vn as useImageResolveContextOptional, Vo as defineInteractiveIslandMetaKeys, Vr as headingFragment, Vs as FileSpreadsheetIcon, Vu as publicEventPricingType, Wa as filterAutoShowSchema, Wc as rgbColorValue, Wd as CirclePlus, Wi as defaultThemeTokens, Wl as createCollapsibleScope, Wn as productDetailBlockDefinition, Wo as defineProgressiveBlockRuntime, Wr as faqHeadingFragment, Ws as MailIcon, Wt as createStoreBackend, Wu as formatCurrencyAmount, X as rejectAutosaveBatch, Xa as when, Xc as isNonEmptyValue, Xd as ChevronRight, Xi as pageDesignEditorBackgroundOverrideOwner, Xl as DropdownMenu, Xn as buildEventCalendarInteractiveIslandProps, Xo as asDesignBlockId, Xr as testimonialsCarouselFragment, Xs as ShoppingCartIcon, Xt as createEntrySlotBlock, Xu as unsafeAsAppointmentServiceId, Y as idleEditorTransactionQueueState, Ya as el, Yc as isHeaderField, Yd as ChevronUp, Yi as isThemeV2NormalEditorRawStylePath, Yn as eventCalendarBlockDefinition, Yo as planSiteChromePlacement, Yr as formCopyFragment, Ys as PlusIcon, Yt as createBlock, Yu as unsafeAsAppointmentResourceId, Za as bindingSchema, Zc as useBlockContext, Zd as ChevronLeft, Zi as getComponentBorderWidthPx, Zl as DropdownMenuContent, Zn as buildEventCalendarListingDisplay, Zo as assertNever$6, Zr as testimonialsHeadingFragment, Zs as UploadIcon, Zt as deleteBlock, Zu as unsafeAsCustomerPassId, _c as setContextResolveImageUrlContext, _d as Search, _i as PAGE_DESIGN_EDITOR_STATE_FETCH_ERROR_MESSAGE, _l as Badge, _n as CSS, _o as getTextColorForBackground, _r as buildCourseRegistrationInteractiveIslandProps, _s as parseBlockIconValue, _t as useEditorUiStore, _u as Button, aa as NAV_LINK_TEXT_SIZE_MAP, ac as isInlineTextEmpty, ad as lucide_react_exports, af as __exportAll, ai as siteOptionSources, al as useField, an as deriveLaunchReadiness, ao as normalizeEventSurfacePresetsCsv, ar as findPreSelectedEvent, as as mediaSchema, at as getRichTextImagePositionFromTarget, au as __generator, ba as inferLegacyOfferingsPreviewGroupOrder, bc as attachRenderableMediaAssetFields, bd as Plus, bi as normalEditorCuratedPromotedFieldPaths, bl as PopoverTrigger, bn as useIsomorphicLayoutEffect, bo as normalizeLocationMapProps, br as buildCartInteractiveIslandProps, bs as isIconPickerPreset, bt as canRedoHistory, bu as cn$1, ca as INPUT_SPACING_MAP, cc as MediaPlaceholder, ci as MQ_SM_DOWN, cl as TooltipProvider, cn as KeyboardCode, co as publicEventSchema, cr as resolveRegistrationTarget, cs as createFeatureCardIconKey, ct as EditorProvider, cu as __spreadArray, da as generateCssVars, dc as getCurrentResolveImageUrlContext, dd as Ticket, di as BACKGROUND_POSITION_PRESET_VALUES, dl as Select, dn as getClientRect, do as generateShadowValue, dr as getWizardStepsForContext$1, ds as suggestFeatureCardSemanticIcons, dt as useUISelector, du as useDirection, ea as parseCustomCssRules, ec as unwrapRichTextRoot, ed as unsafeAsPassId, ef as Box, ei as ctaRowFragment, el as hasEmptyOption, en as mutateBlockContent, eo as eventSurfaceScopeValues, er as buildFormInteractiveIslandProps, es as ACCORDION_TRIGGER_FONT_SCALE, et as PreviewInlineTextEditor, eu as DropdownMenuSeparator, fa as createTransformRegistry, fc as renderAudio, fi as getAnchorClasses, fl as SelectContent, fn as useDndContext, fo as normalizeBoxStylesCardVariant, fr as normalizeEventRegistrationPageSurfaceSubject, fs as suggestSemanticIconForFeatureCard, ft as EditableBlockProvider, fu as createCollection, g as PreviewDesignCoordinatorProvider, gc as resolveMediaStorageUrl, gd as Settings, gi as formatSiteChromeBackgroundTokenLabel, gl as Label, gn as useSensors, go as resolveTokenOrCssColorValue, gr as courseRegistrationBlockDefinition, gs as getGeneratedBlockIconStyleState, gu as Primitive, hc as resolveMediaNodeResponsiveImage, hi as resolveBackgroundColorValue, hl as SelectValue, hn as useSensor, ho as resolveOnColorForThemeToken, hr as buildGiftingInteractiveIslandProps, hs as getBlockIconSemanticFallbackId, ht as useEntryEditorController, hu as composeEventHandlers, i as usePreviewDesignHistoryOrder, ia as NAV_LINK_PADDING_X_MAP, ic as inlineTextToPlainText, id as ok$3, if as __commonJSMin, ii as PUBLIC_FILE_FIELD_KINDS, il as FieldFrame, in as DEFAULT_LAUNCH_READINESS_INPUT, io as normalizeEventStaffMemberId, ir as findEventByOccurrenceId, is as PUBLIC_DOWNLOAD_MEDIA_TYPES, it as RichTextEditorSurface, iu as __extends, ja as eventListPaginationActionSchema, jd as GripVertical, jl as Dialog, jn as planSiteOverlayHeaderClearance, jo as groupEventsByDate, jr as EMPTY_COMMERCE_CART_STATE, js as ChevronLeftIcon, ju as formatBookingTime, ka as resolveSpacing, kc as getAtPath, kd as ImageUp, kl as Trigger$1, kn as SITE_CHROME_VISIBLE_HEADER_SELECTOR, ko as getCardOrientation, kr as formatCommercePrice, ks as CheckIcon$1, kt as createRoutingHelpers, ku as formatBookingDateTime, la as LABEL_FONT_SIZE_MAP, lc as buildResolveImageUrlContext, li as MQ_SM_UP, ll as TooltipTrigger, ln as PointerSensor, lo as generateCardCss, lr as WIZARD_STEPS$1, ls as getFeatureCardIconCompletion, lt as useEditor, lu as __spreadArrays, ma as ctaButton, mc as resolveImageUrlWithContext, md as Sparkles, mi as resolveSectionForegroundStyles, ml as SelectTrigger, mn as useDroppable, mo as isCssColorLiteral, mr as giftingBlockDefinition, ms as buildGeneratedBlockIconRenderAssetLookupFromUnknown, mu as createContextScope, n as useSiteChromeCustomizeOptional, na as NAV_LINK_LETTER_SPACING_MAP, nc as isRecord$17, nd as unsafeAsPositiveSeconds, nf as ArrowDown, ni as bodyCopyFragment, nl as mapOptionValueForSelect, nn as reorderEntrySlotBlocks, no as normalizeEventCategoryIdsCsv, nr as buildEventRegistrationInteractiveIslandProps, ns as ICON_CONFIG, nt as useRichTextEditor, nu as __assign, oa as FONT_WEIGHT_MAP, oc as parseInlineTextFromUnknown, od as X, of as __toESM, oi as MQ_LG_UP, ol as Tooltip, on as AMBIENT_BACKGROUND_ROLES$1, oo as normalizeEventSurfaceScope, or as resolveDiscountContext, os as FEATURE_CARD_ICON_TREATMENTS, ot as insertOrReplaceRichTextImage, ou as __read, pa as runTransforms, pc as renderVideo, pd as Star, pi as boxStylesTransforms, pl as SelectItem, pn as useDraggable, po as normalizeCardVariantRole, pr as resolveEventRegistrationScopedEvents, ps as toFeatureCardIconSuggestionInputs, pt as EntryControllerProvider, pu as useControllableState, q as deriveTransactionCapabilities, qa as eventCalendarListLayoutCompatibleDisplayModeValues, qc as getFieldIntent, qd as CircleAlert, ql as CardHeader, qn as eventListingBlockDefinition, qo as markEditableSurfaceForwarding, qr as footerBottomTextFragment, qs as PhoneIcon, qt as applyPageDesignEditorAction, qu as parseMediaAssetId, r as PreviewDesignHistoryOrderProvider, ra as NAV_LINK_PADDING_MAP, rc as coerceInlineTextWithFallback, rd as err$2, rf as Archive, ri as defineFragment, rl as unmapValueFromSelect, rn as decodePublicProductCategorySelectorQuery, ro as normalizeEventScheduleScope, rr as toRegistrationEvents, rs as ICON_SIZE_PX, rt as EMPTY_DOC, ru as __awaiter, sa as INPUT_FONT_SIZE_MAP, sc as ImagePresets, sd as Upload, si as MQ_MD_DOWN, sl as TooltipContent, sn as DndContext, so as normalizeEventVenueId, sr as resolveEventRequiresPayment, ss as applyFeatureCardIconSuggestions, st as InlineTextEditor, su as __rest, t as SiteChromeCustomizeProvider, ta as NAV_LINK_BORDER_RADIUS_MAP, tc as isObjectRecord, td as unsafeAsPositiveByteCount$1, tf as ArrowUp, ti as heroCopyFragment, tl as mapCurrentValueForSelect, tn as reorderBlocks, to as normalizeEventBlockKind, tr as eventRegistrationBlockDefinition, ts as ACCORDION_TRIGGER_LETTER_SPACING, tt as PreviewTextEditor, tu as DropdownMenuTrigger, ua as expandPalette, uc as computeMediaTransformStyle, ud as Trash2, ui as MQ_TABLET_ONLY, ul as Textarea, un as closestCenter, uo as statusMutedColorDeclaration, ur as getStepNumber$1, us as shouldReserveFeatureCardIconZone, uu as useId$1, v as PreviewThemeOverlayProvider, va as OFFERINGS_PREVIEW_EVENT_PRESET_DEFINITIONS, vc as SECTION_BACKGROUND_MIN_SOURCE_WIDTH, vd as RotateCcw, vi as applyCompiledRuntimeFieldsToContent, vl as Popover, vn as isKeyboardEvent, vo as featuresFromHex, vr as checkoutBlockDefinition, vs as resolveBlockIconRenderValue, vt as useEditorUiStoreInstance, vu as cva, wa as resolveOfferingsPreviewCoursePath, wc as parseAspectRatioValue, wi as designRuntimeRulesForTheme, wl as TabsList, wn as GRADIENT_PRESETS, wo as formatEventDateParts, wr as buildShopInteractiveIslandProps, ws as isSemanticIconId, wt as redoHistory, wu as createEditorReorderBlocksCommand, xa as isOfferingsPreviewSourceKey, xc as isRotationDimensionSwap, xd as Pencil, xi as planPageDesignLayoutLookCompatibility, xl as Input, xn as useUniqueId, xo as toLocationMapHydrationProps, xr as buildCheckoutInteractiveIslandProps, xs as resolveIconPickerPreset, xt as canUndoHistory, xu as clsx, y as usePreviewThemeOverlay, ya as buildOfferingsPreviewRenderStates, yc as resolveMediaSlotContract, yi as buildEditorModelRuntimeFieldsByBlockId, yl as PopoverContent, yn as useCombinedRefs, yo as buildGoogleMapsDirectionsUrl, yr as cartBlockDefinition, ys as parseSiteIconStyleGuideVersionId, yt as useOptionalEditorUiStoreInstance, yu as useComposedRefs, za as calendarTabViewsSchema, zc as parseThemeButtonVariantId, zd as EyeOff, zi as BACKGROUND_BODY_TEXT_MIN_CONTRAST_RATIO, zl as CollapsibleContent, zn as isInternalResolvedLinkValue, zo as buildInteractiveIslandProps, zr as augmentManifestWithStyleGroups, zs as FileArchiveIcon, zt as ManifestForm, zu as publicEventPricingCurrency } from "./SiteChromeCustomizeContext-GwZc89KN.mjs";
3
- import { i as useOptionalPreviewLayout, t as PreviewQueryProvider } from "./PreviewQueryProvider-BICQLAUF.mjs";
4
- import { _ as API_ENDPOINTS, a as usePreviewToken, c as createBearerAPIClient, d as unwrapResponse, g as resolveSurfaceDocumentAttributes, h as SURFACE_IDS, i as usePreviewAuthFetch, l as ApiEnvelopeError, m as SURFACE_DOCUMENT_DATA_ATTRIBUTE, n as markPreviewAuthExpired, o as isPreviewRuntimeSessionEditable, r as usePreviewAuth, s as ApiRequestError, t as initPreviewAuth, u as extractApiEnvelopeErrorDetails } from "./previewAuthStore-Da74OL0X.mjs";
2
+ import { $ as PreviewRichTextEditor, $a as bindingSchema, $c as useBlockContext, $d as ChevronLeft, $i as getComponentBorderWidthPx, $l as DropdownMenuContent, $n as buildEventCalendarListingRender, $o as assertNever$6, $r as ctaCopyFragment, $s as UploadIcon, $t as deleteEntrySlotBlock, $u as unsafeAsCustomerPassId, Aa as isSemanticSpacing, Ac as getImageUrl, Ad as Image, Al as Root2$1, An as SITE_CHROME_VISIBLE_HEADER_SELECTOR, Ao as formatTime$3, Ar as formatCommercePrice, As as CalendarIcon$1, At as createRoutingHelpers, Au as formatBookingDate, Ba as normalizeOptionalId, Bc as TokenResolver, Bi as sectionTransitionVariantForBoundaryOptionId, Bl as Collapsible, Bn as isInternalResolvedLinkValue, Bo as blockBookingPaymentTermsSchema, Br as augmentManifestWithStyleGroups, Bs as ExternalLinkIcon, Bt as ManifestForm, Bu as formatBookingPriceDisplay, Ca as isOfferingsPreviewSourceKey, Cc as isRotationDimensionSwap, Cd as Pencil, Ci as planPageDesignLayoutLookCompatibility, Cl as Input, Cn as isSupportedLoaderEndpoint, Co as toLocationMapHydrationProps, Cr as buildProductDetailInteractiveIslandProps, Cs as resolveIconPickerPreset, Ct as pushHistoryEntry, Cu as clsx, Da as resolveOfferingsPreviewGroupCta, Dc as resolveMediaTransformForAspect, Dd as Minus, Di as getCuratedSiteStyle, Dl as TabsTrigger, Dn as listBlockDescriptors, Do as formatEventPrice, Dr as buildCartDisplay, Ds as ArrowDownIcon, Dt as recordsEqual, Du as unsafeAsEditorBlockId, Ea as resolveOfferingsPreviewCoursePath, Ec as parseAspectRatioValue, Ei as designRuntimeRulesForTheme, El as TabsList, En as getBlockDefinition, Eo as formatEventDateParts, Er as getShopDisplayForItems, Es as isSemanticIconId, Et as unsafeAsLinkedContentEntryId, Eu as createEditorReorderBlocksCommand, Fa as getEventRuntimeFiltersKey, Fc as generateButtonCss, Fd as FileText, Fl as DialogContent, Fn as mediaTransforms, Fo as resolveEventLinkProps, Fr as deriveCommerceCheckoutState, Fs as ChevronUpIcon, Ft as PaletteProvider, Fu as getBookingLocalDateKey, G as beginAutosaveBatch, Ga as eventLayoutSchema, Gc as mergeStyles, Gd as Copy, Gi as parseBackgroundAppearanceColorToken, Gl as Trigger, Gn as productDetailBlockDefinition, Go as defineClientOwnedBlockRuntime, Gr as faqHeadingFragment, Gs as InfoIcon, Gt as createStoreBackend, Gu as publicEventTicketTypes, Ha as columnOptionSchema, Hc as themeButtonClassName, Hd as EllipsisVertical, Hi as backgroundAppearanceColorTokenNames, Hn as useImageResolveContextOptional, Ho as createInteractiveIslandCodec, Hr as headingFragment, Hs as FileAudioIcon, Hu as publicEventPricingMode, Ia as resolveEventCalendarListPageSize, Ic as generateEffectsCSS, Id as FileSpreadsheet, Il as DialogDescription, In as layoutTransforms, Io as getEventAvailability, Ir as parseStoredCommerceCartState, Is as CircleMinusIcon, It as usePalette, Iu as parseBookingLocalDate, J as enqueueTransaction, Ja as weekStartSchema, Jc as useBackendWatch, Jd as CircleCheck, Jl as CardContent, Jn as eventListingBlockDefinition, Jo as composeHeaderSectionWrapperClassName, Jr as footerBottomTextFragment, Js as MinusIcon, Jt as applyPageDesignEditorAction, Ju as expectParsedBrandedId, K as confirmAutosaveBatch, Ka as filterAutoShowSchema, Kc as rgbColorValue, Kd as CirclePlus, Ki as defaultThemeTokens, Kl as createCollapsibleScope, Kn as newsletterSignupBlockDefinition, Ko as defineProgressiveBlockRuntime, Kr as blogFeaturedPostFragment, Ks as MailIcon, Kt as listContentTypes, Ku as formatCurrencyAmount, La as resolveEventListPaginationAction, Lc as generateShadowValue$1, Ld as FilePlay, Li as defaultSectionTransitionVariantForFamily, Ll as DialogFooter, Ln as uiTransforms, Lo as getLocalDateKey, Lr as productItemKey, Ls as CirclePlusIcon, Lt as recoveryConflictCopy, Lu as resolveBookingTimeZoneId, Ma as buildEventRuntimeFilters, Mc as siblingPath$1, Md as ImagePlus, Ml as ScrollableDialogContent, Mn as planSiteOverlayHeaderClearance, Mo as getContainerClass, Mr as EMPTY_COMMERCE_CART_STATE, Ms as ChevronDownIcon, Mu as formatBookingInstant, Na as eventListPaginationActionSchema, Nd as GripVertical, Nl as Dialog, Nn as visibleHeaderClearancePx, No as groupEventsByDate, Nr as buildPassCartItem, Ns as ChevronLeftIcon, Nu as formatBookingTime, Oa as resolveOfferingsPreviewGroupOrderEntries, Oc as asRecord, Oi as surfaceResolutionContextFromTheme, Ol as Content$1, On as siteFooterManifest, Oo as formatEventPriceDisplay, Or as buildProductCardDisplay, Os as ArrowLeftIcon, Ou as unsafeAsEditorBlockValues, Pa as eventPageSizeSchema, Pd as File, Pl as DialogClose, Pn as contentTransforms, Po as resolveEventCta, Pr as buildProductCartItem, Ps as ChevronRightIcon, Pu as formatLocalScheduleDate, Q as resolvePreviewSidebarTab, Qa as when, Qc as isNonEmptyValue, Qd as ChevronRight, Qi as pageDesignEditorBackgroundOverrideOwner, Ql as DropdownMenu, Qn as buildEventCalendarListingDisplay, Qo as asDesignBlockId, Qr as testimonialsHeadingFragment, Qs as ShoppingCartIcon, Qt as deleteBlock, Qu as unsafeAsAppointmentServiceId, Ra as normalizeCsvIds, Rc as generateBaseInteractiveCSS, Rd as FileHeadphone, Ri as sectionTransitionFamilies, Rl as DialogHeader, Rn as formattingTransforms, Ro as getLocalMinuteOfDay, Rr as reduceCommerceCart, Rs as ClockIcon$1, Rt as unfinishedBlockCopy, Ru as toBookingTimeZone, Sa as inferLegacyOfferingsPreviewGroupOrder, Sc as attachRenderableMediaAssetFields, Sd as Plus, Si as normalEditorCuratedPromotedFieldPaths, Sl as PopoverTrigger, Sn as useUniqueId, So as normalizeLocationMapProps, Sr as buildCheckoutInteractiveIslandProps, Ss as isIconPickerPreset, St as createHistoryState, Su as cn$1, Ta as normalizeOfferingsPreviewItemLimit, Tc as formatAspectRatioToken, Tl as TabsContent, Tn as GRADIENT_PRESETS, To as formatEventCompactDateRail, Tr as buildShopInteractiveIslandProps, Ts as getSemanticIconComponent, Tt as undoHistory, Tu as createEditorRemoveBlockCommand, Ua as eventButtonVariantSchema, Uc as backgroundColorStyle, Ud as Crop, Ui as backgroundAppearanceQuickColorTokenNames, Ul as Content, Un as shopBlockDefinition, Uo as defineInteractiveIslandMetaKeys, Ur as cardFragment, Us as FileSpreadsheetIcon, Ut as FormRenderer, Uu as publicEventPricingType, Va as calendarTabViewsSchema, Vc as parseThemeButtonVariantId, Vd as EyeOff, Vi as BACKGROUND_BODY_TEXT_MIN_CONTRAST_RATIO, Vl as CollapsibleContent, Vn as ImageResolveContextProvider, Vo as buildInteractiveIslandProps, Vr as richTextFragment, Vs as FileArchiveIcon, Vt as createManifestFormAdapter, Vu as publicEventPricingCurrency, Wa as eventCalendarDefaultViewSchema, Wc as borderColorStyle, Wd as CreditCard, Wi as foregroundTokenForBackgroundAppearanceColorToken, Wl as Root, Wn as productListBlockDefinition, Wo as createZodCodec, Wr as faqAccordionFragment, Ws as FileTextIcon, Wt as evaluateVisibility, Wu as publicEventScalarPrice, X as rejectAutosaveBatch, Xa as eventCalendarListLayoutOptions, Xc as getModalConfig, Xd as ChevronsUpDown, Xi as isThemeV2NormalEditorRawStyleFieldName, Xl as CardTitle, Xn as eventCalendarBlockDefinition, Xo as splitPositioningClasses, Xr as formCopyFragment, Xs as PlayIcon, Xt as createBlock, Xu as parseSiteId, Y as idleEditorTransactionQueueState, Ya as eventCalendarListLayoutCompatibleDisplayModeValues, Yc as getFieldIntent, Yd as CircleAlert, Yl as CardHeader, Yn as buildEventListingInteractiveIslandProps, Yo as markEditableSurfaceForwarding, Yr as formEmbedFragment, Ys as PhoneIcon, Yt as getPageDesignEditorState, Yu as parseMediaAssetId, Za as el, Zc as isHeaderField, Zd as ChevronUp, Zi as isThemeV2NormalEditorRawStylePath, Zn as buildEventCalendarInteractiveIslandProps, Zo as planSiteChromePlacement, Zr as testimonialsCarouselFragment, Zs as PlusIcon, Zt as createEntrySlotBlock, Zu as unsafeAsAppointmentResourceId, _c as resolveMediaNodeResponsiveImage, _i as formatSiteChromeBackgroundTokenLabel, _l as SelectValue, _n as useSensors, _o as resolveOnColorForThemeToken, _r as courseRegistrationBlockDefinition, _s as getBlockIconSemanticFallbackId, _t as useEditorUiStore, _u as composeEventHandlers, aa as NAV_LINK_PADDING_MAP, ac as coerceInlineTextWithFallback, ad as err$2, af as Archive, ai as PUBLIC_FILE_FIELD_KINDS, al as unmapValueFromSelect, an as DEFAULT_LAUNCH_READINESS_INPUT, ao as normalizeEventScheduleScope, ar as findEventByOccurrenceId, as as ICON_SIZE_PX, at as getRichTextImagePositionFromTarget, au as __awaiter, ba as OFFERINGS_PREVIEW_EVENT_PRESET_DEFINITIONS, bc as SECTION_BACKGROUND_MIN_SOURCE_WIDTH, bd as RotateCcw, bi as buildEditorModelRuntimeFieldsByBlockId, bl as Popover, bn as useCombinedRefs, bo as featuresFromHex, br as cartBlockDefinition, bs as resolveBlockIconRenderValue, bt as canRedoHistory, bu as cva, ca as FONT_WEIGHT_MAP, cc as parseInlineTextFromUnknown, cd as X, cf as __toESM, ci as MQ_MD_DOWN, cl as Tooltip, cn as DndContext, co as normalizeEventSurfaceScope, cr as resolveEventRequiresPayment, cs as FEATURE_CARD_ICON_TREATMENTS, ct as EditorProvider, cu as __read, da as LABEL_FONT_SIZE_MAP, dc as buildResolveImageUrlContext, di as MQ_TABLET_ONLY, dl as TooltipTrigger, dn as closestCenter, do as generateCardCss, dr as getStepNumber$1, ds as getFeatureCardIconCompletion, dt as useUISelector, du as __spreadArrays, ea as getComponentShadowVar, ec as XIcon, ed as unsafeAsFormId, ef as ChevronDown, ei as heroCtaRowFragment, el as SdkConfigProvider, eo as eventBlockKindValues, er as formBlockDefinition, es as ACCORDION_OPEN_ACCENT_THICKNESS, et as PreviewInlineTextEditor, eu as DropdownMenuItem, fa as expandPalette, fc as computeMediaTransformStyle, fd as Trash2, fi as BACKGROUND_POSITION_PRESET_VALUES, fl as Textarea, fn as getClientRect, fo as statusMutedColorDeclaration, fr as getWizardStepsForContext$1, fs as shouldReserveFeatureCardIconZone, ft as EditableBlockProvider, fu as useId$1, g as PreviewDesignCoordinatorProvider, ga as ctaButton, gc as resolveImageUrlWithContext, gd as Sparkles, gi as resolveBackgroundColorValue, gl as SelectTrigger, gn as useSensor, go as isCssColorLiteral, gr as buildGiftingInteractiveIslandProps, gs as buildGeneratedBlockIconRenderAssetLookupFromUnknown, gu as createContextScope, ha as runTransforms, hc as renderVideo, hd as Star, hi as resolveSectionForegroundStyles, hl as SelectItem, hn as useDroppable, ho as normalizeCardVariantRole, hr as giftingBlockDefinition, hs as toFeatureCardIconSuggestionInputs, ht as useEntryEditorController, hu as useControllableState, i as usePreviewDesignHistoryOrder, ia as NAV_LINK_LETTER_SPACING_MAP, ic as isRecord$18, id as unsafeAsPositiveSeconds, if as ArrowDown, ii as defineFragment, il as mapOptionValueForSelect, in as decodePublicProductCategorySelectorQuery, io as normalizeEventCategoryIdsCsv, ir as toRegistrationEvents, is as ICON_CONFIG, it as RichTextEditorSurface, iu as __assign, ja as resolveSpacing, jc as getAtPath, jd as ImageUp, jl as Trigger$1, jn as SITE_OVERLAY_HEADER_CLEARANCE_CSS_VAR, jo as getCardOrientation, jr as formatInterval, js as CheckIcon$1, jt as createSnapshotFromPageRecord, ju as formatBookingDateTime, ka as resolveOfferingsPreviewGroups, kc as getDirectImageUrlForMediaAsset, kd as LoaderCircle, kl as List, kn as siteHeaderManifest, ko as formatEventTeacherLine, kr as buildProductDetailDisplay, ks as ArrowRightIcon, kt as useDebouncedLatestSave, ku as addLocalScheduleDays, la as INPUT_FONT_SIZE_MAP, lc as ImagePresets, ld as Upload, li as MQ_SM_DOWN, ll as TooltipContent, ln as KeyboardCode, lo as normalizeEventVenueId, lr as resolveRegistrationTarget, ls as applyFeatureCardIconSuggestions, lt as useEditor, lu as __rest, ma as createTransformRegistry, mc as renderAudio, mi as boxStylesTransforms, ml as SelectContent, mn as useDraggable, mo as normalizeBoxStylesCardVariant, mr as resolveEventRegistrationScopedEvents, ms as suggestSemanticIconForFeatureCard, mu as createCollection, n as useSiteChromeCustomizeOptional, na as parseCustomCssRules, nc as unwrapRichTextRoot, nd as unsafeAsPassId, nf as Box, ni as heroCopyFragment, nl as hasEmptyOption, nn as reorderBlocks, no as eventSurfaceScopeValues, nr as eventRegistrationBlockDefinition, ns as ACCORDION_TRIGGER_FONT_SCALE, nt as useRichTextEditor, nu as DropdownMenuSeparator, oa as NAV_LINK_PADDING_X_MAP, oc as inlineTextToPlainText, od as ok$3, of as __commonJSMin, oi as siteOptionSources, ol as FieldFrame, on as deriveLaunchReadiness, oo as normalizeEventStaffMemberId, or as findPreSelectedEvent, os as PUBLIC_DOWNLOAD_MEDIA_TYPES, ot as insertOrReplaceRichTextImage, ou as __extends, pa as generateCssVars, pc as getCurrentResolveImageUrlContext, pd as Ticket, pi as getAnchorClasses, pl as Select, pn as useDndContext, po as generateShadowValue, pr as normalizeEventRegistrationPageSurfaceSubject, ps as suggestFeatureCardSemanticIcons, pt as EntryControllerProvider, pu as useDirection, q as deriveTransactionCapabilities, qa as previewStageSchema, qc as textColorStyle, qd as CircleMinus, ql as Card, qn as buildNewsletterFormInteractiveIslandProps, qr as singleButtonFragment, qs as MapPinIcon$1, qt as toRoutableLinkPayload, qu as assertNever$5, r as PreviewDesignHistoryOrderProvider, ra as NAV_LINK_BORDER_RADIUS_MAP, rc as isObjectRecord, rd as unsafeAsPositiveByteCount$1, rf as ArrowUp, ri as bodyCopyFragment, rl as mapCurrentValueForSelect, rn as reorderEntrySlotBlocks, ro as normalizeEventBlockKind, rr as buildEventRegistrationInteractiveIslandProps, rs as ACCORDION_TRIGGER_LETTER_SPACING, rt as EMPTY_DOC, ru as DropdownMenuTrigger, sa as NAV_LINK_TEXT_SIZE_MAP, sc as isInlineTextEmpty, sd as lucide_react_exports, sf as __exportAll, si as MQ_LG_UP, sl as useField, sn as AMBIENT_BACKGROUND_ROLES$1, so as normalizeEventSurfacePresetsCsv, sr as resolveDiscountContext, ss as mediaSchema, st as InlineTextEditor, su as __generator, t as SiteChromeCustomizeProvider, ta as parseBlockCustomCssRules, tc as createRichTextDocFromMarkdown, td as unsafeAsMediaAssetId, tf as Check, ti as ctaRowFragment, tl as useSdkConfig, tn as mutateBlockContent, to as eventScheduleScopeValues, tr as buildFormInteractiveIslandProps, ts as ACCORDION_SPACING_MAP, tt as PreviewTextEditor, ua as INPUT_SPACING_MAP, uc as MediaPlaceholder, ui as MQ_SM_UP, ul as TooltipProvider, un as PointerSensor, uo as publicEventSchema, ur as WIZARD_STEPS$1, us as createFeatureCardIconKey, uu as __spreadArray, v as PreviewThemeOverlayProvider, vc as resolveMediaStorageUrl, vd as Settings, vi as PAGE_DESIGN_EDITOR_STATE_FETCH_ERROR_MESSAGE, vl as Label, vn as CSS, vo as resolveTokenOrCssColorValue, vr as buildCourseRegistrationInteractiveIslandProps, vs as getGeneratedBlockIconStyleState, vt as useEditorUiStoreInstance, vu as Primitive, wa as normalizeOfferingsPreviewGroupOrder, wc as normalizeRightAngle, wi as resolveVisiblePromotedFieldPathsForEditorBlock, wl as Tabs, wn as gradientToCss, wo as formatDate$3, wr as buildProductListInteractiveIslandProps, ws as SEMANTIC_ICON_DEFINITIONS, wt as redoHistory, wu as createEditorInsertBlockCommand, xa as buildOfferingsPreviewRenderStates, xc as resolveMediaSlotContract, xi as retargetCompiledRuntimeFieldsForContentAdjacency, xl as PopoverContent, xn as useIsomorphicLayoutEffect, xo as buildGoogleMapsDirectionsUrl, xr as buildCartInteractiveIslandProps, xs as parseSiteIconStyleGuideVersionId, xt as canUndoHistory, xu as useComposedRefs, y as usePreviewThemeOverlay, yc as setContextResolveImageUrlContext, yd as Search, yi as applyCompiledRuntimeFieldsToContent, yl as Badge, yn as isKeyboardEvent, yo as getTextColorForBackground, yr as checkoutBlockDefinition, ys as parseBlockIconValue, yt as useOptionalEditorUiStoreInstance, yu as Button, za as normalizeCsvString, zc as generateInteractiveChildInheritanceCSS, zd as FileArchive, zi as sectionTransitionFamilyForBoundaryOptionId, zl as DialogTitle, zn as createManifestValidator, zo as resolveRuntimeEventPricing, zr as augmentManifest, zs as DownloadIcon, zt as validateBlockManifestIssues, zu as toScheduledBookingDateTime } from "./SiteChromeCustomizeContext-Bh9-DtMQ.mjs";
3
+ import { i as useOptionalPreviewLayout, t as PreviewQueryProvider } from "./PreviewQueryProvider-ZF6TXq5Q.mjs";
4
+ import { _ as API_ENDPOINTS, a as usePreviewToken, c as createBearerAPIClient, d as unwrapResponse, g as resolveSurfaceDocumentAttributes, h as SURFACE_IDS, i as usePreviewAuthFetch, l as ApiEnvelopeError, m as SURFACE_DOCUMENT_DATA_ATTRIBUTE, n as markPreviewAuthExpired, o as isPreviewRuntimeSessionEditable, r as usePreviewAuth, s as ApiRequestError, t as initPreviewAuth, u as extractApiEnvelopeErrorDetails } from "./previewAuthStore-ByPPZqmp.mjs";
5
5
  import * as React$1 from "react";
6
6
  import React, { Children, Component, Fragment, cloneElement, createContext, createElement, createRef, forwardRef, isValidElement, memo, startTransition, useCallback, useContext, useEffect, useId, useImperativeHandle, useLayoutEffect, useMemo, useReducer, useRef, useState, useSyncExternalStore } from "react";
7
7
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -1280,7 +1280,7 @@ var BlockApiError = class extends Error {
1280
1280
  this.name = "BlockApiError";
1281
1281
  }
1282
1282
  };
1283
- function isRecord$16(value) {
1283
+ function isRecord$17(value) {
1284
1284
  return typeof value === "object" && value !== null;
1285
1285
  }
1286
1286
  function isJsonResponseContentType(contentType) {
@@ -1304,8 +1304,8 @@ async function parseJsonBody(response) {
1304
1304
  }
1305
1305
  }
1306
1306
  function getBlockApiErrorDetails(data) {
1307
- if (!isRecord$16(data)) return {};
1308
- const nestedError = isRecord$16(data.error) ? data.error : void 0;
1307
+ if (!isRecord$17(data)) return {};
1308
+ const nestedError = isRecord$17(data.error) ? data.error : void 0;
1309
1309
  return {
1310
1310
  message: typeof nestedError?.message === "string" ? nestedError.message : typeof data.message === "string" ? data.message : void 0,
1311
1311
  code: typeof nestedError?.code === "string" ? nestedError.code : typeof data.code === "string" ? data.code : void 0
@@ -2065,15 +2065,15 @@ function Grid({ as: Comp = "div", cols = {
2065
2065
  }
2066
2066
  //#endregion
2067
2067
  //#region ../blocks/src/system/runtime/nodes/layout.tsx
2068
- const SectionNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, allowOverflow, ...props }) => /* @__PURE__ */ jsx(Section, {
2068
+ const SectionNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, allowOverflow, ...props }) => /* @__PURE__ */ jsx(Section, {
2069
2069
  ...props,
2070
2070
  allowOverflow
2071
2071
  });
2072
- const StackNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Stack, { ...props });
2073
- const InlineNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Inline, { ...props });
2074
- const GridNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Grid, { ...props });
2075
- const DivNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx("div", { ...props });
2076
- const FigureNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx("figure", { ...props });
2072
+ const StackNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Stack, { ...props });
2073
+ const InlineNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Inline, { ...props });
2074
+ const GridNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx(Grid, { ...props });
2075
+ const DivNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx("div", { ...props });
2076
+ const FigureNode = ({ blockId: _blockId, blockKind: _blockKind, blockContent: _blockContent, fragmentRegistry: _fragmentRegistry, previewAuthoring: _previewAuthoring, pathBase: _pathBase, ...props }) => /* @__PURE__ */ jsx("figure", { ...props });
2077
2077
  //#endregion
2078
2078
  //#region ../blocks/src/primitives/content/utils/sanitizeHref.ts
2079
2079
  const SAFE_PROTOCOLS = /* @__PURE__ */ new Set([
@@ -2517,7 +2517,7 @@ function Text$1({ as: Comp = "span", children, className = "", path, maxLength:
2517
2517
  function coerceRichTextDoc(value) {
2518
2518
  const raw = unwrapRichTextRoot(value);
2519
2519
  if (typeof raw === "string") return createRichTextDocFromMarkdown(raw);
2520
- if (isRecord$17(raw) && typeof raw.type === "string") return raw;
2520
+ if (isRecord$18(raw) && typeof raw.type === "string") return raw;
2521
2521
  return null;
2522
2522
  }
2523
2523
  //#endregion
@@ -3634,12 +3634,12 @@ function resolveBookingSiteId(siteId, form) {
3634
3634
  return siteId || form?.siteId || "";
3635
3635
  }
3636
3636
  function normalizeBookingFormConfig(form) {
3637
- if (!isRecord$15(form)) return null;
3637
+ if (!isRecord$16(form)) return null;
3638
3638
  const id = readNonEmptyString(form.id);
3639
3639
  const name = readNonEmptyString(form.name);
3640
3640
  if (!id || !name) return null;
3641
- const schemaSource = isRecord$15(form.schema) ? form.schema : isRecord$15(form.schemaJson) ? form.schemaJson : null;
3642
- const settingsSource = isRecord$15(form.settings) ? form.settings : isRecord$15(form.settingsJson) ? form.settingsJson : null;
3641
+ const schemaSource = isRecord$16(form.schema) ? form.schema : isRecord$16(form.schemaJson) ? form.schemaJson : null;
3642
+ const settingsSource = isRecord$16(form.settings) ? form.settings : isRecord$16(form.settingsJson) ? form.settingsJson : null;
3643
3643
  return {
3644
3644
  id,
3645
3645
  name,
@@ -3659,8 +3659,8 @@ function normalizeBookingServices(services) {
3659
3659
  };
3660
3660
  if (!services) return [];
3661
3661
  if (Array.isArray(services)) return services.filter(isBookingFormService).map(normalizeService);
3662
- if (isRecord$15(services) && "services" in services) return Array.isArray(services.services) ? services.services.filter(isBookingFormService).map(normalizeService) : [];
3663
- return isRecord$15(services) ? Object.values(services).filter(isBookingFormService).map(normalizeService) : [];
3662
+ if (isRecord$16(services) && "services" in services) return Array.isArray(services.services) ? services.services.filter(isBookingFormService).map(normalizeService) : [];
3663
+ return isRecord$16(services) ? Object.values(services).filter(isBookingFormService).map(normalizeService) : [];
3664
3664
  }
3665
3665
  function normalizeBookingSchema(value) {
3666
3666
  if (!value) return void 0;
@@ -3671,7 +3671,7 @@ function normalizeBookingSchema(value) {
3671
3671
  };
3672
3672
  }
3673
3673
  function readBookingFormField(value) {
3674
- if (!isRecord$15(value)) return null;
3674
+ if (!isRecord$16(value)) return null;
3675
3675
  const id = readNonEmptyString(value.id);
3676
3676
  const label = readNonEmptyString(value.label);
3677
3677
  const type = readBookingFieldType(value.type);
@@ -3715,7 +3715,7 @@ function readBookingFieldOptions(value) {
3715
3715
  return options.length > 0 ? options : void 0;
3716
3716
  }
3717
3717
  function readBookingFieldOption(value) {
3718
- if (!isRecord$15(value)) return null;
3718
+ if (!isRecord$16(value)) return null;
3719
3719
  const optionValue = readNonEmptyString(value.value);
3720
3720
  const label = readNonEmptyString(value.label);
3721
3721
  return optionValue && label ? {
@@ -3735,7 +3735,7 @@ function normalizeBookingSettings(value) {
3735
3735
  };
3736
3736
  }
3737
3737
  function isBookingFormService(value) {
3738
- return isRecord$15(value) && typeof value.id === "string" && typeof value.siteId === "string" && typeof value.title === "string";
3738
+ return isRecord$16(value) && typeof value.id === "string" && typeof value.siteId === "string" && typeof value.title === "string";
3739
3739
  }
3740
3740
  function collectBookingCustomFields(data) {
3741
3741
  const customFields = {};
@@ -3785,7 +3785,7 @@ function readStringArray(value) {
3785
3785
  const strings = value.filter((item) => typeof item === "string");
3786
3786
  return strings.length > 0 ? strings : void 0;
3787
3787
  }
3788
- function isRecord$15(value) {
3788
+ function isRecord$16(value) {
3789
3789
  return typeof value === "object" && value !== null;
3790
3790
  }
3791
3791
  function getBookingServicePaymentSelectionMode(service) {
@@ -19249,7 +19249,7 @@ const LEAFLET_JS_INTEGRITY = "sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo
19249
19249
  let leafletLoaded = false;
19250
19250
  let leafletLoadPromise = null;
19251
19251
  function isLeafletApi(value) {
19252
- if (!isRecord$17(value)) return false;
19252
+ if (!isRecord$18(value)) return false;
19253
19253
  return typeof value.map === "function" && typeof value.tileLayer === "function" && typeof value.marker === "function";
19254
19254
  }
19255
19255
  function loadLeaflet() {
@@ -20571,7 +20571,7 @@ Autoplay.globalOptions = void 0;
20571
20571
  function isObject$2(subject) {
20572
20572
  return Object.prototype.toString.call(subject) === "[object Object]";
20573
20573
  }
20574
- function isRecord$14(subject) {
20574
+ function isRecord$15(subject) {
20575
20575
  return isObject$2(subject) || Array.isArray(subject);
20576
20576
  }
20577
20577
  function canUseDOM() {
@@ -20586,7 +20586,7 @@ function areOptionsEqual(optionsA, optionsB) {
20586
20586
  const valueA = optionsA[key];
20587
20587
  const valueB = optionsB[key];
20588
20588
  if (typeof valueA === "function") return `${valueA}` === `${valueB}`;
20589
- if (!isRecord$14(valueA) || !isRecord$14(valueB)) return valueA === valueB;
20589
+ if (!isRecord$15(valueA) || !isRecord$15(valueB)) return valueA === valueB;
20590
20590
  return areOptionsEqual(valueA, valueB);
20591
20591
  });
20592
20592
  }
@@ -27129,7 +27129,7 @@ function WeeklySlotAvailabilityClient({ serviceId, resourceId, horizonWeeks, tim
27129
27129
  }
27130
27130
  //#endregion
27131
27131
  //#region ../blocks/src/system/runtime/components/registry.client.tsx
27132
- function isRecord$13(value) {
27132
+ function isRecord$14(value) {
27133
27133
  return typeof value === "object" && value !== null;
27134
27134
  }
27135
27135
  function buildRenderFromLooseProps(runtime, mode, props) {
@@ -27148,12 +27148,12 @@ function withRuntimeBackedEnvelope(source, runtime, render) {
27148
27148
  function normalizeLegacyInteractiveRenderProps(runtime, mode, props) {
27149
27149
  const source = props;
27150
27150
  const render = props["render"];
27151
- if (!isRecord$13(render)) return withRuntimeBackedEnvelope(source, runtime, buildRenderFromLooseProps(runtime, mode, props));
27152
- if (isRecord$13(render["hydration"])) return withRuntimeBackedEnvelope(source, runtime, {
27151
+ if (!isRecord$14(render)) return withRuntimeBackedEnvelope(source, runtime, buildRenderFromLooseProps(runtime, mode, props));
27152
+ if (isRecord$14(render["hydration"])) return withRuntimeBackedEnvelope(source, runtime, {
27153
27153
  ...render,
27154
27154
  mode
27155
27155
  });
27156
- if (!isRecord$13(render["display"])) return withRuntimeBackedEnvelope(source, runtime, buildRenderFromLooseProps(runtime, mode, props));
27156
+ if (!isRecord$14(render["display"])) return withRuntimeBackedEnvelope(source, runtime, buildRenderFromLooseProps(runtime, mode, props));
27157
27157
  const { display, mode: _legacyMode, ...legacyHydration } = render;
27158
27158
  return withRuntimeBackedEnvelope(source, runtime, {
27159
27159
  display,
@@ -27699,7 +27699,7 @@ const defaultTransforms = createTransformRegistry([
27699
27699
  //#region ../blocks/src/system/data/linkedContentEntries.ts
27700
27700
  const LINKED_CONTENT_ENTRY_META_KEY = "__rbLinkedContentEntry";
27701
27701
  function coerceLinkedContentEntriesPayload(payload) {
27702
- if (!isRecord$12(payload)) return payload;
27702
+ if (!isRecord$13(payload)) return payload;
27703
27703
  const response = payload;
27704
27704
  if (!Array.isArray(response.entries)) return payload;
27705
27705
  const contentType = parsePublicContentTypeMeta(response.contentType);
@@ -27707,16 +27707,16 @@ function coerceLinkedContentEntriesPayload(payload) {
27707
27707
  return response.entries.map((entry) => enrichLinkedContentEntry(entry, contentType));
27708
27708
  }
27709
27709
  function getLinkedContentEntryMeta(value) {
27710
- if (!isRecord$12(value)) return null;
27710
+ if (!isRecord$13(value)) return null;
27711
27711
  const candidate = value[LINKED_CONTENT_ENTRY_META_KEY];
27712
27712
  return isLinkedContentEntryMeta(candidate) ? candidate : null;
27713
27713
  }
27714
27714
  function buildLinkedContentEditTarget(input) {
27715
27715
  const { entry, sourceBlockId, sourceBlockKind, itemIndex } = input;
27716
- if (!isRecord$12(entry)) return null;
27716
+ if (!isRecord$13(entry)) return null;
27717
27717
  const meta = getLinkedContentEntryMeta(entry);
27718
27718
  if (!meta || meta.support.kind !== "supported") return null;
27719
- const content = isRecord$12(entry.content) ? entry.content : {};
27719
+ const content = isRecord$13(entry.content) ? entry.content : {};
27720
27720
  return {
27721
27721
  kind: "linked-content-entry",
27722
27722
  entryId: meta.entryId,
@@ -27780,12 +27780,12 @@ function resolveLinkedEntryInlineFieldEligibility(input) {
27780
27780
  };
27781
27781
  }
27782
27782
  function enrichLinkedContentEntry(entry, contentType) {
27783
- if (!isRecord$12(entry)) return entry;
27783
+ if (!isRecord$13(entry)) return entry;
27784
27784
  const entryId = typeof entry.id === "string" ? entry.id : null;
27785
27785
  if (!entryId) return entry;
27786
27786
  const title = typeof entry.title === "string" && entry.title.trim().length > 0 ? entry.title : entryId;
27787
27787
  const optimisticHash = typeof entry.optimisticHash === "string" && entry.optimisticHash.length > 0 ? entry.optimisticHash : null;
27788
- const content = isRecord$12(entry.content) ? entry.content : {};
27788
+ const content = isRecord$13(entry.content) ? entry.content : {};
27789
27789
  const meta = {
27790
27790
  kind: "linked-content-entry",
27791
27791
  entryId,
@@ -27881,7 +27881,7 @@ function capitalize(value) {
27881
27881
  return value.charAt(0).toUpperCase() + value.slice(1).toLowerCase();
27882
27882
  }
27883
27883
  function parsePublicContentTypeMeta(value) {
27884
- if (!isRecord$12(value)) return null;
27884
+ if (!isRecord$13(value)) return null;
27885
27885
  if (typeof value.key !== "string" || value.key.trim().length === 0) return null;
27886
27886
  return {
27887
27887
  key: value.key,
@@ -27891,7 +27891,7 @@ function parsePublicContentTypeMeta(value) {
27891
27891
  };
27892
27892
  }
27893
27893
  function parsePublicContentTypeLinkedEntryEditing(value) {
27894
- if (!isRecord$12(value) || typeof value.kind !== "string") return null;
27894
+ if (!isRecord$13(value) || typeof value.kind !== "string") return null;
27895
27895
  switch (value.kind) {
27896
27896
  case "generic": return { kind: "generic" };
27897
27897
  case "unsupported-domain-backed": return {
@@ -27902,7 +27902,7 @@ function parsePublicContentTypeLinkedEntryEditing(value) {
27902
27902
  }
27903
27903
  }
27904
27904
  function parsePublicContentTypeFieldMeta(value) {
27905
- if (!isRecord$12(value)) return [];
27905
+ if (!isRecord$13(value)) return [];
27906
27906
  if (typeof value.id !== "string" || typeof value.type !== "string") return [];
27907
27907
  return [{
27908
27908
  id: value.id,
@@ -27917,14 +27917,14 @@ function parseStringArray(value) {
27917
27917
  return value.filter((item) => typeof item === "string");
27918
27918
  }
27919
27919
  function isLinkedContentEntryMeta(value) {
27920
- if (!isRecord$12(value)) return false;
27920
+ if (!isRecord$13(value)) return false;
27921
27921
  if (value.kind !== "linked-content-entry") return false;
27922
27922
  if (typeof value.entryId !== "string") return false;
27923
27923
  if (typeof value.contentTypeKey !== "string") return false;
27924
27924
  if (typeof value.contentTypeLabel !== "string") return false;
27925
27925
  if (typeof value.title !== "string") return false;
27926
27926
  if (!(value.optimisticHash === null || typeof value.optimisticHash === "string")) return false;
27927
- if (!isRecord$12(value.contentType)) return false;
27927
+ if (!isRecord$13(value.contentType)) return false;
27928
27928
  if (!isLinkedEntryFieldSourceArray(value.fieldSources)) return false;
27929
27929
  return isLinkedContentEditSupport(value.support);
27930
27930
  }
@@ -27932,7 +27932,7 @@ function isLinkedEntryFieldSourceArray(value) {
27932
27932
  return Array.isArray(value) && value.every(isLinkedEntryFieldSource);
27933
27933
  }
27934
27934
  function isLinkedEntryFieldSource(value) {
27935
- if (!isRecord$12(value)) return false;
27935
+ if (!isRecord$13(value)) return false;
27936
27936
  if (typeof value.displayPath !== "string") return false;
27937
27937
  switch (value.kind) {
27938
27938
  case "content-field": return typeof value.fieldPath === "string" && (value.fieldType === "text" || value.fieldType === "richText");
@@ -27953,7 +27953,7 @@ function isLinkedEntryInlineFieldReadOnlyReason(value) {
27953
27953
  }
27954
27954
  }
27955
27955
  function isLinkedContentEditSupport(value) {
27956
- if (!isRecord$12(value) || typeof value.kind !== "string") return false;
27956
+ if (!isRecord$13(value) || typeof value.kind !== "string") return false;
27957
27957
  switch (value.kind) {
27958
27958
  case "supported": return true;
27959
27959
  case "unsupported-domain-backed":
@@ -27962,7 +27962,7 @@ function isLinkedContentEditSupport(value) {
27962
27962
  default: return false;
27963
27963
  }
27964
27964
  }
27965
- function isRecord$12(value) {
27965
+ function isRecord$13(value) {
27966
27966
  return typeof value === "object" && value !== null && !Array.isArray(value);
27967
27967
  }
27968
27968
  //#endregion
@@ -28016,14 +28016,14 @@ function isDecoratedHeadingBlockKind(blockKind) {
28016
28016
  return blockKind === "block.intro" || blockKind === "block.feature-cards" || blockKind === "block.testimonials" || blockKind === "block.faq";
28017
28017
  }
28018
28018
  function readVariant(blockContent) {
28019
- if (!isRecord$11(blockContent)) return void 0;
28019
+ if (!isRecord$12(blockContent)) return void 0;
28020
28020
  const variant = blockContent.variant;
28021
28021
  return typeof variant === "string" ? variant : void 0;
28022
28022
  }
28023
28023
  function isFaqDecoratedVariant(variant) {
28024
28024
  return variant === "default" || variant === "question-columns";
28025
28025
  }
28026
- function isRecord$11(value) {
28026
+ function isRecord$12(value) {
28027
28027
  return typeof value === "object" && value !== null && !Array.isArray(value);
28028
28028
  }
28029
28029
  function buildHeadingDecorationWrapperClassName(className) {
@@ -28280,6 +28280,7 @@ function applyTransformsAndFallback(value, binding, context) {
28280
28280
  viewModel: context.viewModel
28281
28281
  }, transforms);
28282
28282
  if (binding.transforms && binding.transforms.length > 0 && transformed === null) {
28283
+ if (binding.fallback !== void 0) return binding.fallback;
28283
28284
  console.warn("[block-system] Transform returned null for binding", {
28284
28285
  bindingFrom: binding.from,
28285
28286
  transforms: binding.transforms?.map((t) => t.id)
@@ -30202,7 +30203,7 @@ function generateHeaderRootStyles(header, themeId, tokens, _theme) {
30202
30203
  }
30203
30204
  }
30204
30205
  if (header.positioning === "sticky" || header.positioning === "fixed") {
30205
- const shadowVar = getComponentShadowVar(header.shadow?.elevation ?? "sm");
30206
+ const shadowVar = getComponentShadowVar(header.shadow?.elevation ?? "none");
30206
30207
  if (shadowVar) rules.push(`box-shadow: ${shadowVar};`);
30207
30208
  }
30208
30209
  const baseBlock = `\n${selector} {\n ${rules.join("\n ")}\n}\n`;
@@ -32821,7 +32822,7 @@ function hydrateValue(value, context) {
32821
32822
  const resolvedItems = value.map((item) => hydrateValue(item, context));
32822
32823
  return resolvedItems.every((item, index) => item === value[index]) ? value : resolvedItems;
32823
32824
  }
32824
- if (isRecord$17(value)) {
32825
+ if (isRecord$18(value)) {
32825
32826
  if (isInternalLink(value)) return hydrateInternalLink(value, context.routes);
32826
32827
  if (isPageLink(value)) return hydratePageLink(value, context);
32827
32828
  if (isEntryLink(value)) return hydrateEntryLink(value, context);
@@ -33067,6 +33068,7 @@ function PageRenderer({ theme, page, usePlaceholders = false, dataContext, wrapB
33067
33068
  const wrapperClassName = [`block-${cleanKind}`, wrapBlock ? "group relative" : null].filter(Boolean).join(" ");
33068
33069
  const styleGroup = typeof renderableContent.styleGroup === "string" ? renderableContent.styleGroup : void 0;
33069
33070
  const blockLook = typeof renderableContent.blockLook === "string" ? renderableContent.blockLook : void 0;
33071
+ const transitionStyle = transitionCssVarsStyle(renderableContent);
33070
33072
  const blockElement = /* @__PURE__ */ jsx("div", {
33071
33073
  className: wrapperClassName,
33072
33074
  "data-block": cleanKind,
@@ -33077,6 +33079,7 @@ function PageRenderer({ theme, page, usePlaceholders = false, dataContext, wrapB
33077
33079
  "data-block-look": blockLook,
33078
33080
  "data-page-block-position": blockPosition,
33079
33081
  "data-style-group": styleGroup,
33082
+ style: transitionStyle,
33080
33083
  children: /* @__PURE__ */ jsx(MemoBlockSection, { ...blockSectionProps })
33081
33084
  }, blockKey);
33082
33085
  if (!isSiteStyleTransitionStyleGroup(styleGroup)) return blockElement;
@@ -33084,13 +33087,25 @@ function PageRenderer({ theme, page, usePlaceholders = false, dataContext, wrapB
33084
33087
  "aria-hidden": "true",
33085
33088
  "data-block-transition": "",
33086
33089
  "data-block-transition-for": block.id ?? blockKey,
33087
- "data-style-group": styleGroup
33090
+ "data-style-group": styleGroup,
33091
+ style: transitionStyle
33088
33092
  })] }, blockKey);
33089
33093
  }) });
33090
33094
  }
33091
33095
  function isSiteStyleTransitionStyleGroup(value) {
33092
33096
  return value?.startsWith("site-style-transition-") === true;
33093
33097
  }
33098
+ function transitionCssVarsStyle(content) {
33099
+ const transitionStyles = isObjectRecord(content._transitionStyles) ? content._transitionStyles : null;
33100
+ const cssVars = isObjectRecord(transitionStyles?.cssVars) ? transitionStyles.cssVars : null;
33101
+ const from = typeof cssVars?.from === "string" ? cssVars.from : null;
33102
+ const to = typeof cssVars?.to === "string" ? cssVars.to : null;
33103
+ if (!from && !to) return void 0;
33104
+ return {
33105
+ ...from ? { "--site-style-transition-from": from } : {},
33106
+ ...to ? { "--site-style-transition-to": to } : {}
33107
+ };
33108
+ }
33094
33109
  function pageBlockPosition(index, blockCount) {
33095
33110
  if (blockCount <= 1) return "only";
33096
33111
  if (index === 0) return "first";
@@ -52801,7 +52816,7 @@ function asPositiveSeconds(value) {
52801
52816
  if (!Number.isSafeInteger(value) || value <= 0) return err("not-positive-seconds");
52802
52817
  return ok$1(value);
52803
52818
  }
52804
- function isRecord$10(value) {
52819
+ function isRecord$11(value) {
52805
52820
  return Boolean(value) && typeof value === "object" && !Array.isArray(value);
52806
52821
  }
52807
52822
  function parseFileKindJson(value) {
@@ -53022,7 +53037,7 @@ function parseEntitledCustomerAccessScopeJson(value) {
53022
53037
  }
53023
53038
  }
53024
53039
  function requireRecord(value) {
53025
- if (!isRecord$10(value)) return err("expected-object");
53040
+ if (!isRecord$11(value)) return err("expected-object");
53026
53041
  return ok$1(value);
53027
53042
  }
53028
53043
  function requireString(value) {
@@ -53277,7 +53292,7 @@ const DEFAULT_MESSAGES = {
53277
53292
  update: "Failed to update media asset",
53278
53293
  delete: "Failed to delete media asset"
53279
53294
  };
53280
- function isRecord$9(value) {
53295
+ function isRecord$10(value) {
53281
53296
  return typeof value === "object" && value !== null;
53282
53297
  }
53283
53298
  const normalizeLabels = (labels) => labels !== void 0 && labels.length > 0 ? labels.map((label) => label.trim()).filter((label) => label.length > 0).join(",") : void 0;
@@ -53311,7 +53326,7 @@ const filterUpdatePayload = (input) => {
53311
53326
  return payload;
53312
53327
  };
53313
53328
  const extractErrorMessage = (body) => {
53314
- if (!isRecord$9(body)) return typeof body === "string" && body.trim().length > 0 ? body : null;
53329
+ if (!isRecord$10(body)) return typeof body === "string" && body.trim().length > 0 ? body : null;
53315
53330
  for (const key of [
53316
53331
  "error",
53317
53332
  "message",
@@ -53324,11 +53339,11 @@ const extractErrorMessage = (body) => {
53324
53339
  const details = body.details;
53325
53340
  if (Array.isArray(details)) for (const entry of details) {
53326
53341
  if (typeof entry === "string" && entry.trim().length > 0) return entry;
53327
- if (isRecord$9(entry) && typeof entry.message === "string" && entry.message.trim().length > 0) return entry.message;
53342
+ if (isRecord$10(entry) && typeof entry.message === "string" && entry.message.trim().length > 0) return entry.message;
53328
53343
  }
53329
53344
  const errors = body.errors;
53330
53345
  if (Array.isArray(errors)) {
53331
- for (const entry of errors) if (isRecord$9(entry) && typeof entry.message === "string" && entry.message.trim().length > 0) return entry.message;
53346
+ for (const entry of errors) if (isRecord$10(entry) && typeof entry.message === "string" && entry.message.trim().length > 0) return entry.message;
53332
53347
  }
53333
53348
  return null;
53334
53349
  };
@@ -60692,7 +60707,7 @@ function buildPreviewDashboardSetupUrl(dashboardBaseUrl, handoff) {
60692
60707
  const STORAGE_KEY = "preview-sidebar-tab";
60693
60708
  const REQUEST_EVENT = "riverbank:preview-sidebar:request-open";
60694
60709
  function parsePreviewSidebarOpenRequestDetail(detail) {
60695
- const request = isRecord$8(detail) ? detail : {};
60710
+ const request = isRecord$9(detail) ? detail : {};
60696
60711
  return {
60697
60712
  tab: resolvePreviewSidebarTab(request.tab === "assistant" ? "assistant" : "editor"),
60698
60713
  ...request.designRow === "header" || request.designRow === "footer" ? { designRow: request.designRow } : {}
@@ -60721,7 +60736,7 @@ function onPreviewSidebarOpenRequest(handler) {
60721
60736
  window.addEventListener(REQUEST_EVENT, listener);
60722
60737
  return () => window.removeEventListener(REQUEST_EVENT, listener);
60723
60738
  }
60724
- function isRecord$8(value) {
60739
+ function isRecord$9(value) {
60725
60740
  return typeof value === "object" && value !== null;
60726
60741
  }
60727
60742
  //#endregion
@@ -60919,14 +60934,14 @@ function backgroundCapabilityFromModes(modeCapabilities) {
60919
60934
  };
60920
60935
  }
60921
60936
  function parseBackgroundOverrideFromContent(content) {
60922
- return parseBackgroundOverride((isRecord$7(content._sectionStyles) ? content._sectionStyles : null)?.background);
60937
+ return parseBackgroundOverride((isRecord$8(content._sectionStyles) ? content._sectionStyles : null)?.background);
60923
60938
  }
60924
60939
  function parseBackgroundOverride(value) {
60925
60940
  if (value === null || value === void 0) return {
60926
60941
  kind: "supported",
60927
60942
  override: DEFAULT_BACKGROUND_OVERRIDE
60928
60943
  };
60929
- if (!isRecord$7(value)) return {
60944
+ if (!isRecord$8(value)) return {
60930
60945
  kind: "legacy",
60931
60946
  reason: "unsupported-shape",
60932
60947
  background: {}
@@ -61042,7 +61057,7 @@ function serializeBackgroundOverride(override) {
61042
61057
  }
61043
61058
  }
61044
61059
  function applyBackgroundOverrideContentPatch(content, override) {
61045
- const sectionStyles = isRecord$7(content._sectionStyles) ? content._sectionStyles : {};
61060
+ const sectionStyles = isRecord$8(content._sectionStyles) ? content._sectionStyles : {};
61046
61061
  const serialized = serializeBackgroundOverride(override);
61047
61062
  if (serialized === null) return withSectionStyles(content, omitRecordKey$1(sectionStyles, "background"));
61048
61063
  return withSectionStyles(content, {
@@ -61271,7 +61286,7 @@ function imageAllowed(mediaId, pool) {
61271
61286
  return pool?.some((item) => item.mediaId === mediaId) ?? false;
61272
61287
  }
61273
61288
  function parseImageMediaAssetId(value) {
61274
- if (!isRecord$7(value)) return { kind: "missing" };
61289
+ if (!isRecord$8(value)) return { kind: "missing" };
61275
61290
  if (value.type !== void 0 && value.type !== "image") return { kind: "missing" };
61276
61291
  const parsed = parseMediaAssetId(value.assetId);
61277
61292
  if (!parsed.ok) return value.assetId === void 0 || value.assetId === null ? { kind: "missing" } : { kind: "invalid" };
@@ -61312,7 +61327,7 @@ function withSectionStyles(content, sectionStyles) {
61312
61327
  function omitRecordKey$1(content, key) {
61313
61328
  return Object.fromEntries(Object.entries(content).filter(([entryKey]) => entryKey !== key));
61314
61329
  }
61315
- function isRecord$7(value) {
61330
+ function isRecord$8(value) {
61316
61331
  return typeof value === "object" && value !== null && !Array.isArray(value);
61317
61332
  }
61318
61333
  //#endregion
@@ -62109,8 +62124,8 @@ function contentWithPreviousLayoutVariant(currentContent, previousContent) {
62109
62124
  return nextContent;
62110
62125
  }
62111
62126
  function contentWithPreviousBackground(currentContent, previousContent) {
62112
- const previousSectionStyles = isRecord$6(previousContent._sectionStyles) ? previousContent._sectionStyles : {};
62113
- const nextSectionStyles = { ...isRecord$6(currentContent._sectionStyles) ? currentContent._sectionStyles : {} };
62127
+ const previousSectionStyles = isRecord$7(previousContent._sectionStyles) ? previousContent._sectionStyles : {};
62128
+ const nextSectionStyles = { ...isRecord$7(currentContent._sectionStyles) ? currentContent._sectionStyles : {} };
62114
62129
  if (Object.prototype.hasOwnProperty.call(previousSectionStyles, "background")) nextSectionStyles.background = previousSectionStyles.background;
62115
62130
  else delete nextSectionStyles.background;
62116
62131
  if (Object.keys(nextSectionStyles).length > 0) return {
@@ -62123,9 +62138,9 @@ function contentWithPreviousBackground(currentContent, previousContent) {
62123
62138
  }
62124
62139
  function withRuntimeBackgroundImageAsset(content, imageAsset) {
62125
62140
  if (!imageAsset) return content;
62126
- const sectionStyles = isRecord$6(content._sectionStyles) ? content._sectionStyles : null;
62127
- const background = isRecord$6(sectionStyles?.background) ? sectionStyles.background : null;
62128
- const image = isRecord$6(background?.image) ? background.image : null;
62141
+ const sectionStyles = isRecord$7(content._sectionStyles) ? content._sectionStyles : null;
62142
+ const background = isRecord$7(sectionStyles?.background) ? sectionStyles.background : null;
62143
+ const image = isRecord$7(background?.image) ? background.image : null;
62129
62144
  if (!sectionStyles || !background || !image || background.type !== "image") return content;
62130
62145
  return {
62131
62146
  ...content,
@@ -62138,7 +62153,7 @@ function withRuntimeBackgroundImageAsset(content, imageAsset) {
62138
62153
  }
62139
62154
  };
62140
62155
  }
62141
- function isRecord$6(value) {
62156
+ function isRecord$7(value) {
62142
62157
  return Boolean(value) && typeof value === "object" && !Array.isArray(value);
62143
62158
  }
62144
62159
  //#endregion
@@ -62149,6 +62164,7 @@ function applyPreviewCustomizeDraftPatch(uiStore, patch, editorModel) {
62149
62164
  targetBlockId: patch.blockId,
62150
62165
  nextContent: patch.nextContent,
62151
62166
  previousContent: patch.previousContent,
62167
+ baselineEquivalentContent: null,
62152
62168
  editorModel
62153
62169
  });
62154
62170
  }
@@ -62161,19 +62177,20 @@ function rollbackPreviewCustomizeDraftPatch(uiStore, patch) {
62161
62177
  targetBlockId: patch.blockId,
62162
62178
  nextContent: patch.rollback(currentContent),
62163
62179
  previousContent: patch.previousContent,
62180
+ baselineEquivalentContent: patch.previousContent,
62164
62181
  editorModel: null
62165
62182
  });
62166
62183
  }
62167
62184
  function currentLocalBlockContent(uiStore, targetBlockId) {
62168
62185
  const current = uiStore.getState().drafts.getCurrentValues(unsafeAsEditorBlockId(targetBlockId));
62169
- return isRecord$5(current) ? current : null;
62186
+ return isRecord$6(current) ? current : null;
62170
62187
  }
62171
62188
  function replaceLocalBlockContentWithoutHistory(input) {
62172
62189
  const editorBlockId = unsafeAsEditorBlockId(input.targetBlockId);
62173
62190
  const history = input.uiStore.getState().history;
62174
62191
  const snapshot = history.getState().present;
62175
62192
  const draft = snapshot.drafts[editorBlockId];
62176
- const nextDraft = draft ? applyDraftContentPatch(draft, input.nextContent) : localRuntimeDraftForBlock({
62193
+ const nextDraft = draft ? applyDraftContentPatch(draft, input.nextContent, input.baselineEquivalentContent) : localRuntimeDraftForBlock({
62177
62194
  editorBlockId,
62178
62195
  targetBlockId: input.targetBlockId,
62179
62196
  editorModel: input.editorModel,
@@ -62190,11 +62207,15 @@ function replaceLocalBlockContentWithoutHistory(input) {
62190
62207
  });
62191
62208
  return { kind: "applied" };
62192
62209
  }
62193
- function applyDraftContentPatch(draft, nextContent) {
62210
+ function applyDraftContentPatch(draft, nextContent, baselineEquivalentContent) {
62211
+ const nextValues = unsafeAsEditorBlockValues(nextContent);
62212
+ const baselineEquivalentValues = baselineEquivalentContent ? unsafeAsEditorBlockValues(baselineEquivalentContent) : null;
62213
+ const current = baselineEquivalentValues && recordsEqual(nextValues, baselineEquivalentValues) ? draft.baseline : nextValues;
62194
62214
  return {
62195
62215
  ...draft,
62196
62216
  version: draft.version + 1,
62197
- current: unsafeAsEditorBlockValues(nextContent)
62217
+ current,
62218
+ syncState: recordsEqual(draft.baseline, current) ? { kind: "baseline" } : { kind: "pending" }
62198
62219
  };
62199
62220
  }
62200
62221
  function localRuntimeDraftForBlock(input) {
@@ -62214,7 +62235,7 @@ function localRuntimeDraftForBlock(input) {
62214
62235
  }
62215
62236
  };
62216
62237
  }
62217
- function isRecord$5(value) {
62238
+ function isRecord$6(value) {
62218
62239
  return Boolean(value) && typeof value === "object" && !Array.isArray(value);
62219
62240
  }
62220
62241
  //#endregion
@@ -63043,25 +63064,25 @@ const INITIAL_ONBOARDING_CONFIRMATION_STATE = {
63043
63064
  resendFeedback: null,
63044
63065
  statusLoadFailed: false
63045
63066
  };
63046
- function isRecord$4(value) {
63067
+ function isRecord$5(value) {
63047
63068
  return value !== null && typeof value === "object";
63048
63069
  }
63049
63070
  function getErrorMessageFromEnvelope(payload, fallback) {
63050
- const error = isRecord$4(payload) ? payload.error : null;
63051
- const message = isRecord$4(error) ? error.message : null;
63071
+ const error = isRecord$5(payload) ? payload.error : null;
63072
+ const message = isRecord$5(error) ? error.message : null;
63052
63073
  return typeof message === "string" && message.trim().length > 0 ? message : fallback;
63053
63074
  }
63054
63075
  function isLaunchReadiness(value) {
63055
- return isRecord$4(value) && Array.isArray(value.requirements) && typeof value.pendingRequiredCount === "number" && typeof value.pendingRecommendedCount === "number" && typeof value.pendingOptionalCount === "number" && isRecord$4(value.goLiveDecision) && (value.goLiveDecision.kind === "allowed" || value.goLiveDecision.kind === "blocked");
63076
+ return isRecord$5(value) && Array.isArray(value.requirements) && typeof value.pendingRequiredCount === "number" && typeof value.pendingRecommendedCount === "number" && typeof value.pendingOptionalCount === "number" && isRecord$5(value.goLiveDecision) && (value.goLiveDecision.kind === "allowed" || value.goLiveDecision.kind === "blocked");
63056
63077
  }
63057
63078
  function isOnboardingPreviewStatusResponse(value) {
63058
- return isRecord$4(value) && typeof value.dashboardUnlocked === "boolean" && typeof value.requiresEmailConfirmation === "boolean" && isLaunchReadiness(value.launchReadiness);
63079
+ return isRecord$5(value) && typeof value.dashboardUnlocked === "boolean" && typeof value.requiresEmailConfirmation === "boolean" && isLaunchReadiness(value.launchReadiness);
63059
63080
  }
63060
63081
  function isResendOnboardingPreviewConfirmationResponse(value) {
63061
- return isRecord$4(value) && (value.result === "resent" || value.result === "already_confirmed") && typeof value.dashboardUnlocked === "boolean" && typeof value.requiresEmailConfirmation === "boolean" && isLaunchReadiness(value.launchReadiness);
63082
+ return isRecord$5(value) && (value.result === "resent" || value.result === "already_confirmed") && typeof value.dashboardUnlocked === "boolean" && typeof value.requiresEmailConfirmation === "boolean" && isLaunchReadiness(value.launchReadiness);
63062
63083
  }
63063
63084
  function getSuccessData(payload, isData) {
63064
- if (!isRecord$4(payload) || payload.success !== true || !isData(payload.data)) return null;
63085
+ if (!isRecord$5(payload) || payload.success !== true || !isData(payload.data)) return null;
63065
63086
  return payload.data;
63066
63087
  }
63067
63088
  function useOnboardingConfirmationCheck(input) {
@@ -63579,12 +63600,14 @@ function PreviewChromeLayerProvider({ children }) {
63579
63600
  function usePreviewChromeLayerOptional() {
63580
63601
  return useContext(PreviewChromeLayerContext);
63581
63602
  }
63582
- function PreviewChromeFloatingControl({ anchorSelector, placement, fallbackClassName, fallbackStyle, portalClassName = "absolute z-[70] flex gap-1 transition", forceVisible = false, children }) {
63603
+ function PreviewChromeFloatingControl({ anchorSelector, anchorTargetSelector, placement, fallbackClassName, fallbackStyle, portalClassName = "absolute z-[70] flex gap-1 transition", forceVisible = false, children }) {
63583
63604
  const layer = usePreviewChromeLayerOptional();
63584
63605
  const probeRef = useRef(null);
63585
63606
  const anchorElementRef = useRef(null);
63607
+ const anchorTargetElementRef = useRef(null);
63586
63608
  const [controlElement, setControlElement] = useState(null);
63587
63609
  const [anchorElement, setAnchorElement] = useState(null);
63610
+ const [anchorTargetElement, setAnchorTargetElement] = useState(null);
63588
63611
  const [anchorBox, setAnchorBox] = useState(null);
63589
63612
  const [themeCustomProperties, setThemeCustomProperties] = useState({});
63590
63613
  const [isActive, setIsActive] = useState(false);
@@ -63594,18 +63617,30 @@ function PreviewChromeFloatingControl({ anchorSelector, placement, fallbackClass
63594
63617
  });
63595
63618
  useEffect(() => {
63596
63619
  if (!layer?.portalTarget) return;
63597
- let resizeObserver = null;
63620
+ let anchorResizeObserver = null;
63621
+ let targetResizeObserver = null;
63598
63622
  const readAnchor = () => probeRef.current?.closest(anchorSelector);
63599
63623
  const update = () => {
63600
63624
  const anchor = readAnchor();
63625
+ const anchorTarget = resolveAnchorTarget(anchor, anchorTargetSelector);
63601
63626
  if (anchor !== anchorElementRef.current) {
63602
- resizeObserver?.disconnect();
63603
- resizeObserver = null;
63627
+ anchorResizeObserver?.disconnect();
63628
+ anchorResizeObserver = null;
63604
63629
  anchorElementRef.current = anchor;
63605
63630
  setAnchorElement(anchor);
63606
63631
  if (anchor && typeof ResizeObserver !== "undefined") {
63607
- resizeObserver = new ResizeObserver(update);
63608
- resizeObserver.observe(anchor);
63632
+ anchorResizeObserver = new ResizeObserver(update);
63633
+ anchorResizeObserver.observe(anchor);
63634
+ }
63635
+ }
63636
+ if (anchorTarget !== anchorTargetElementRef.current) {
63637
+ targetResizeObserver?.disconnect();
63638
+ targetResizeObserver = null;
63639
+ anchorTargetElementRef.current = anchorTarget;
63640
+ setAnchorTargetElement(anchorTarget);
63641
+ if (anchorTarget && anchorTarget !== anchor && typeof ResizeObserver !== "undefined") {
63642
+ targetResizeObserver = new ResizeObserver(update);
63643
+ targetResizeObserver.observe(anchorTarget);
63609
63644
  }
63610
63645
  }
63611
63646
  if (!anchor) {
@@ -63613,7 +63648,7 @@ function PreviewChromeFloatingControl({ anchorSelector, placement, fallbackClass
63613
63648
  setThemeCustomProperties({});
63614
63649
  return;
63615
63650
  }
63616
- const rect = anchor.getBoundingClientRect();
63651
+ const rect = (anchorTarget ?? anchor).getBoundingClientRect();
63617
63652
  setThemeCustomProperties(readThemeCustomProperties(anchor));
63618
63653
  setAnchorBox({
63619
63654
  top: rect.top,
@@ -63625,48 +63660,59 @@ function PreviewChromeFloatingControl({ anchorSelector, placement, fallbackClass
63625
63660
  update();
63626
63661
  const unsubscribe = layer.subscribeLayout(update);
63627
63662
  return () => {
63628
- resizeObserver?.disconnect();
63663
+ anchorResizeObserver?.disconnect();
63664
+ targetResizeObserver?.disconnect();
63629
63665
  anchorElementRef.current = null;
63666
+ anchorTargetElementRef.current = null;
63630
63667
  unsubscribe();
63631
63668
  };
63632
- }, [anchorSelector, layer]);
63669
+ }, [
63670
+ anchorSelector,
63671
+ anchorTargetSelector,
63672
+ layer
63673
+ ]);
63633
63674
  useEffect(() => {
63634
- if (!anchorElement || !controlElement) return;
63675
+ const hoverAnchorElement = anchorTargetElement ?? anchorElement;
63676
+ if (!anchorElement || !hoverAnchorElement || !controlElement) return;
63635
63677
  hoverStateRef.current = {
63636
63678
  anchor: false,
63637
63679
  control: false
63638
63680
  };
63639
63681
  const show = (event) => {
63640
- updatePreviewChromeHoverState(hoverStateRef.current, event.currentTarget, anchorElement, controlElement, true);
63682
+ updatePreviewChromeHoverState(hoverStateRef.current, event.currentTarget, hoverAnchorElement, controlElement, true);
63641
63683
  setIsActive(true);
63642
63684
  };
63643
63685
  const hideIfFocusLeft = (event) => {
63644
- updatePreviewChromeHoverState(hoverStateRef.current, event.currentTarget, anchorElement, controlElement, false);
63686
+ updatePreviewChromeHoverState(hoverStateRef.current, event.currentTarget, hoverAnchorElement, controlElement, false);
63645
63687
  window.setTimeout(() => {
63646
63688
  const active = document.activeElement;
63647
63689
  const hoverState = hoverStateRef.current;
63648
- setIsActive(Boolean(hoverState.anchor || hoverState.control || active && (anchorElement.contains(active) || controlElement.contains(active))));
63690
+ setIsActive(Boolean(hoverState.anchor || hoverState.control || active && (hoverAnchorElement.contains(active) || controlElement.contains(active))));
63649
63691
  }, 0);
63650
63692
  };
63651
- anchorElement.addEventListener("mouseenter", show);
63652
- anchorElement.addEventListener("mouseleave", hideIfFocusLeft);
63653
- anchorElement.addEventListener("focusin", show);
63654
- anchorElement.addEventListener("focusout", hideIfFocusLeft);
63693
+ hoverAnchorElement.addEventListener("mouseenter", show);
63694
+ hoverAnchorElement.addEventListener("mouseleave", hideIfFocusLeft);
63695
+ hoverAnchorElement.addEventListener("focusin", show);
63696
+ hoverAnchorElement.addEventListener("focusout", hideIfFocusLeft);
63655
63697
  controlElement.addEventListener("mouseenter", show);
63656
63698
  controlElement.addEventListener("mouseleave", hideIfFocusLeft);
63657
63699
  controlElement.addEventListener("focusin", show);
63658
63700
  controlElement.addEventListener("focusout", hideIfFocusLeft);
63659
63701
  return () => {
63660
- anchorElement.removeEventListener("mouseenter", show);
63661
- anchorElement.removeEventListener("mouseleave", hideIfFocusLeft);
63662
- anchorElement.removeEventListener("focusin", show);
63663
- anchorElement.removeEventListener("focusout", hideIfFocusLeft);
63702
+ hoverAnchorElement.removeEventListener("mouseenter", show);
63703
+ hoverAnchorElement.removeEventListener("mouseleave", hideIfFocusLeft);
63704
+ hoverAnchorElement.removeEventListener("focusin", show);
63705
+ hoverAnchorElement.removeEventListener("focusout", hideIfFocusLeft);
63664
63706
  controlElement.removeEventListener("mouseenter", show);
63665
63707
  controlElement.removeEventListener("mouseleave", hideIfFocusLeft);
63666
63708
  controlElement.removeEventListener("focusin", show);
63667
63709
  controlElement.removeEventListener("focusout", hideIfFocusLeft);
63668
63710
  };
63669
- }, [anchorElement, controlElement]);
63711
+ }, [
63712
+ anchorElement,
63713
+ anchorTargetElement,
63714
+ controlElement
63715
+ ]);
63670
63716
  if (!layer?.portalTarget) return /* @__PURE__ */ jsx("div", {
63671
63717
  className: fallbackClassName,
63672
63718
  style: fallbackStyle,
@@ -63702,6 +63748,17 @@ function readThemeCustomProperties(element) {
63702
63748
  for (let current = element; current; current = current.parentElement) copyThemeCustomProperties(current.style, properties);
63703
63749
  return properties;
63704
63750
  }
63751
+ function resolveAnchorTarget(anchor, selector) {
63752
+ if (!anchor) return null;
63753
+ if (!selector) return anchor;
63754
+ return Array.from(anchor.querySelectorAll(selector)).find(isUsableElementBox) ?? anchor;
63755
+ }
63756
+ function isUsableElementBox(element) {
63757
+ const rect = element.getBoundingClientRect();
63758
+ if (!Number.isFinite(rect.top) || !Number.isFinite(rect.right) || !Number.isFinite(rect.bottom) || !Number.isFinite(rect.height) || rect.height <= 0) return false;
63759
+ if (typeof window === "undefined") return true;
63760
+ return window.getComputedStyle(element).display !== "none";
63761
+ }
63705
63762
  function copyThemeCustomProperties(style, target) {
63706
63763
  for (let index = 0; index < style.length; index += 1) {
63707
63764
  const propertyName = style.item(index);
@@ -64018,6 +64075,7 @@ function SiteChromeCustomizeButton({ surface, containerClassName = "pointer-even
64018
64075
  ]);
64019
64076
  return /* @__PURE__ */ jsxs(PreviewChromeFloatingControl, {
64020
64077
  anchorSelector: "[data-preview-site-chrome-surface]",
64078
+ anchorTargetSelector: surface === "header" ? SITE_CHROME_VISIBLE_HEADER_SELECTOR : void 0,
64021
64079
  placement: (anchorBox) => planSiteChromeCustomizePlacement({
64022
64080
  surface,
64023
64081
  anchorBox
@@ -64507,10 +64565,10 @@ function LinkedEntryEditEventBridge() {
64507
64565
  //#region ../preview-next/src/client/preview/PreviewShellLayout.tsx
64508
64566
  const previewContainerResponsiveEnabled = process.env.NEXT_PUBLIC_ENABLE_PREVIEW_CONTAINER_RESPONSIVE !== "false";
64509
64567
  const PreviewEditorSidebar = React.lazy(async () => {
64510
- return { default: (await import("./PreviewEditorSidebar-DBpy0KTh.mjs")).PreviewEditorSidebar };
64568
+ return { default: (await import("./PreviewEditorSidebar-BKkhhkJk.mjs")).PreviewEditorSidebar };
64511
64569
  });
64512
64570
  const PreviewEditorUI = React.lazy(async () => {
64513
- return { default: (await import("./PreviewEditorUI-Fg6I2R2T.mjs")).PreviewEditorUI };
64571
+ return { default: (await import("./PreviewEditorUI-DIvTqcqI.mjs")).PreviewEditorUI };
64514
64572
  });
64515
64573
  const previewPaneContainmentStyle = {
64516
64574
  contain: "layout paint",
@@ -64905,11 +64963,11 @@ function defaultDesignEditorEligibility(input) {
64905
64963
  //#region ../preview-next/src/client/utils/path.ts
64906
64964
  const PATH_SEPARATOR_REGEX = /\./g;
64907
64965
  const BRACKET_ACCESS_REGEX = /\[([^\]]+)\]/g;
64908
- function isRecord$3(value) {
64966
+ function isRecord$4(value) {
64909
64967
  return typeof value === "object" && value !== null && !Array.isArray(value);
64910
64968
  }
64911
64969
  function isPathContainer(value) {
64912
- return Array.isArray(value) || isRecord$3(value);
64970
+ return Array.isArray(value) || isRecord$4(value);
64913
64971
  }
64914
64972
  function createPathContainer(nextIsIndex) {
64915
64973
  return nextIsIndex ? [] : {};
@@ -65072,15 +65130,18 @@ function runtimeContentDecorationProjectionFromEditorModel(editorModel, surfaceR
65072
65130
  })
65073
65131
  };
65074
65132
  }
65075
- function applyRuntimeContentDecorationProjection(block, content, projection) {
65133
+ function applyRuntimeContentDecorationProjection(block, content, projection, adjacency) {
65076
65134
  const blockId = designBlockIdFromBlockItem(block);
65077
- const fields = blockId ? projection.fieldsByBlockId.get(blockId) : void 0;
65078
- return applyCompiledRuntimeFieldsToContent(isRecord$2(content) ? content : {}, fields);
65135
+ const retargetedFields = retargetCompiledRuntimeFieldsForContentAdjacency(blockId ? projection.fieldsByBlockId.get(blockId) : void 0, {
65136
+ currentContent: isRecord$3(content) ? content : null,
65137
+ nextContent: adjacency?.nextContent
65138
+ });
65139
+ return applyCompiledRuntimeFieldsToContent(isRecord$3(content) ? content : {}, retargetedFields);
65079
65140
  }
65080
65141
  function designBlockIdFromBlockItem(block) {
65081
65142
  return typeof block.id === "string" && block.id.length > 0 ? asDesignBlockId(block.id) : null;
65082
65143
  }
65083
- function isRecord$2(value) {
65144
+ function isRecord$3(value) {
65084
65145
  return typeof value === "object" && value !== null && !Array.isArray(value);
65085
65146
  }
65086
65147
  //#endregion
@@ -65097,10 +65158,10 @@ function applyPreviewContentFieldProjections(blockId, content, projections) {
65097
65158
  return applyContentFieldOverrideProjection(blockId, current, projection);
65098
65159
  }, content);
65099
65160
  }
65100
- function applyPreviewRuntimeContentProjections(block, content, projections) {
65161
+ function applyPreviewRuntimeContentProjections(block, content, projections, adjacency) {
65101
65162
  return projections.reduce((current, projection) => {
65102
65163
  if (projection.kind !== "runtime-content-decoration") return current;
65103
- return applyRuntimeContentDecorationProjection(block, current, projection);
65164
+ return applyRuntimeContentDecorationProjection(block, current, projection, adjacency);
65104
65165
  }, content);
65105
65166
  }
65106
65167
  function blockHasPreviewContentFieldProjection(blockId, projections) {
@@ -65131,7 +65192,7 @@ function overlayValue(value, overlays) {
65131
65192
  });
65132
65193
  return changed ? next : value;
65133
65194
  }
65134
- if (!isRecord$1(value)) return value;
65195
+ if (!isRecord$2(value)) return value;
65135
65196
  const meta = parseLinkedEntryMeta(value[LINKED_CONTENT_ENTRY_META_KEY]);
65136
65197
  if (meta) {
65137
65198
  const overlay = overlays.get(unsafeAsLinkedContentEntryId(meta.entryId));
@@ -65197,7 +65258,7 @@ function resolveOverlayTitle(content, meta) {
65197
65258
  function parseLinkedEntryMeta(value) {
65198
65259
  return getLinkedContentEntryMeta({ [LINKED_CONTENT_ENTRY_META_KEY]: value });
65199
65260
  }
65200
- function isRecord$1(value) {
65261
+ function isRecord$2(value) {
65201
65262
  return typeof value === "object" && value !== null && !Array.isArray(value);
65202
65263
  }
65203
65264
  //#endregion
@@ -65207,26 +65268,42 @@ function getDraftSnapshots(uiStore) {
65207
65268
  const snapshots = uiStore.getState().drafts.inspect();
65208
65269
  return new Map(snapshots.map((snap) => [snap.id, snap]));
65209
65270
  }
65210
- function mergeBlockWithDraft(block, draftMap, index, projections = [], linkedEntryOverlays = EMPTY_LINKED_ENTRY_OVERLAY) {
65271
+ function mergeBlockWithDraft(block, draftMap, index, projections = [], linkedEntryOverlays = EMPTY_LINKED_ENTRY_OVERLAY, nextBlock = null) {
65211
65272
  const id = block.id ?? null;
65212
65273
  const editorBlockId = id ? unsafeAsEditorBlockId(id) : null;
65213
65274
  const snap = editorBlockId ? draftMap.get(editorBlockId) ?? null : null;
65214
- const rawDraft = snap?.current ?? null;
65215
- const draftContent = editorBlockId ? applyPreviewContentFieldProjections(editorBlockId, rawDraft, projections) : rawDraft;
65275
+ const draftContent = editorBlockId ? readProjectedDraftRenderContent(block, editorBlockId, snap, projections) : null;
65216
65276
  const baseline = snap?.baseline ?? block.content ?? block.publishedContent ?? null;
65277
+ const nextContent = nextBlock ? readBlockRenderContents(nextBlock, draftMap, projections) : null;
65217
65278
  return {
65218
65279
  id,
65219
65280
  kind: block.kind,
65220
65281
  purpose: "content",
65221
65282
  orderIndex: block.orderIndex ?? index,
65222
- content: renderContent(block, baseline, projections, linkedEntryOverlays),
65223
- draftContent: renderContent(block, draftContent, projections, linkedEntryOverlays),
65224
- publishedContent: renderContent(block, block.publishedContent ?? null, projections, EMPTY_LINKED_ENTRY_OVERLAY),
65283
+ content: renderContent(block, baseline, projections, linkedEntryOverlays, nextContent?.baseline ?? null),
65284
+ draftContent: renderContent(block, draftContent, projections, linkedEntryOverlays, nextContent?.draft ?? null),
65285
+ publishedContent: renderContent(block, block.publishedContent ?? null, projections, EMPTY_LINKED_ENTRY_OVERLAY, nextContent?.published ?? null),
65225
65286
  bindings: block.bindings ?? null
65226
65287
  };
65227
65288
  }
65228
- function renderContent(block, content, projections, linkedEntryOverlays) {
65229
- return applyPreviewRuntimeContentProjections(block, applyLinkedEntryRenderOverlay(content, linkedEntryOverlays), projections);
65289
+ function readBlockRenderContents(block, draftMap, projections) {
65290
+ const id = block.id ?? null;
65291
+ const editorBlockId = id ? unsafeAsEditorBlockId(id) : null;
65292
+ const snap = editorBlockId ? draftMap.get(editorBlockId) ?? null : null;
65293
+ return {
65294
+ baseline: snap?.baseline ?? block.content ?? block.publishedContent ?? null,
65295
+ draft: editorBlockId ? readProjectedDraftRenderContent(block, editorBlockId, snap, projections) : null,
65296
+ published: block.publishedContent ?? null
65297
+ };
65298
+ }
65299
+ function readProjectedDraftRenderContent(block, editorBlockId, snap, projections) {
65300
+ return applyPreviewContentFieldProjections(editorBlockId, snap?.current ?? snap?.baseline ?? block.content ?? block.publishedContent ?? null, projections);
65301
+ }
65302
+ function renderContent(block, content, projections, linkedEntryOverlays, nextContent) {
65303
+ return applyPreviewRuntimeContentProjections(block, applyLinkedEntryRenderOverlay(content, linkedEntryOverlays), projections, { nextContent: isRecord$1(nextContent) ? nextContent : null });
65304
+ }
65305
+ function isRecord$1(value) {
65306
+ return typeof value === "object" && value !== null && !Array.isArray(value);
65230
65307
  }
65231
65308
  //#endregion
65232
65309
  //#region ../preview-next/src/client/blocks/composer/transformBlock.ts
@@ -65284,7 +65361,8 @@ function composePreviewRenderPage(args, cacheRef) {
65284
65361
  if (!page) return page;
65285
65362
  if (!blockItems.length) return page;
65286
65363
  const draftMap = draftSnapshotMap(draftSnapshots);
65287
- const renderedBlocks = applyCacheOptimization([...applyPreviewStructureProjections(blockItems, projections).map((block, index) => mergeBlockWithDraft(block, draftMap, index, projections, linkedEntryOverlays))].sort((a, b) => (a.orderIndex ?? 0) - (b.orderIndex ?? 0)), cacheRef);
65364
+ const projectedBlockItems = applyPreviewStructureProjections(blockItems, projections);
65365
+ const renderedBlocks = applyCacheOptimization([...projectedBlockItems.map((block, index) => mergeBlockWithDraft(block, draftMap, index, projections, linkedEntryOverlays, projectedBlockItems[index + 1] ?? null))].sort((a, b) => (a.orderIndex ?? 0) - (b.orderIndex ?? 0)), cacheRef);
65288
65366
  return {
65289
65367
  ...page,
65290
65368
  blocks: renderedBlocks