import type { ButtonPresentationProps, EditableNodeAttributes } from "../../types"; import { type ResponsiveLength, type ResponsiveValue, type StudioBreakpoint } from "../../utils/responsivePresentation"; import { type StudioImageSource } from "../StudioImage"; export type FloorplanCatalogRentDisplay = "live" | "contact" | "hidden"; export type FloorplanCatalogSummaryColumns = "equal" | "detailsWide" | "actionsWide"; export type FloorplanCatalogActionAlignment = "start" | "center" | "end"; export type FloorplanCatalogDesktopPresentation = "split" | "workspace"; export type FloorplanCatalogCompactDisclosure = "perGroup" | "single"; export type FloorplanCatalogCompactSummaryColumns = "one" | "two" | "responsive"; export interface FloorplanCatalogAction extends ButtonPresentationProps { label: string; target: string; description?: string; action?: "navigate" | "scroll" | "openModal" | "externalLink"; openInNewTab?: boolean; } /** * A curated reference to a floor plan owned by Elise's floorplan API. Authored * fields affect marketing presentation only; the component never creates a * floor plan from this object when the API id is absent from the response. */ export interface FloorplanCatalogPlanReference { floorplanId: string; titleOverride?: string; descriptionOverride?: string; /** Used only when the API floor plan has no media. */ imageFallback?: StudioImageSource; imageAlt?: string; /** Optional marketing label for how the API square-footage data is presented. */ sqftLabelOverride?: string; rentDisplay?: FloorplanCatalogRentDisplay; actions?: FloorplanCatalogAction[]; } export interface FloorplanCatalogGroup { /** Stable across reordering and content edits. */ id: string; title: string; plans: FloorplanCatalogPlanReference[]; } /** Optional, validated geometry for a catalog's detail composition. */ export interface FloorplanCatalogLayout { topPadding?: string; planHeadingSize?: string; planHeadingLineHeight?: string; planHeadingMarginTop?: string; planHeadingGap?: string; summaryMinHeight?: string; summaryPadding?: string; summaryPaddingBottom?: string; summaryGap?: string; actionInset?: string; actionGap?: string; contentPadding?: string; descriptionSize?: string; descriptionLineHeight?: string; descriptionGap?: string; } /** Presentation tokens for the accordion rendered below `collapseAt`. */ export interface FloorplanCatalogCompactPresentation { groupHeadingSize?: string; groupHeadingLineHeight?: string; groupHeadingGap?: string; groupGap?: string; itemGap?: string; triggerMinHeight?: string; triggerFontSize?: string; triggerLineHeight?: string; triggerPaddingX?: string; triggerPaddingY?: string; triggerBackgroundColor?: string; triggerBorderColor?: string; triggerBorderRadius?: string; panelInset?: string; panelOffsetTop?: string; panelPaddingX?: string; panelPaddingTop?: string; panelPaddingBottom?: string; panelBackgroundColor?: string; panelBorderColor?: string; panelBorderRadius?: string; detailInset?: string; detailGap?: string; summaryColumnGap?: string; actionInset?: string; actionGap?: string; actionButtonMinWidth?: string; actionAlignment?: FloorplanCatalogActionAlignment; } /** Optional content and overflow controls for the desktop floor-plan selector. */ export interface FloorplanCatalogSelectorPresentation { eyebrow?: string; title?: string; description?: string; maxHeight?: string; showPlanDetails?: boolean; } export interface FloorplanCatalogProps extends EditableNodeAttributes { groups?: FloorplanCatalogGroup[]; propertyId?: string; initialGroupId?: string; initialFloorplanId?: string; loadingMessage?: string; errorMessage?: string; emptyMessage?: string; showUnavailable?: boolean; showBedBath?: boolean; showSqft?: boolean; showRent?: boolean; showUnitCount?: boolean; showUnitExamples?: boolean; unitExamplesHeading?: string; unitPreviewLimit?: number; showFees?: boolean; feesHeading?: string; applyUrl?: string; applyLabel?: string; openApplyInNewTab?: boolean; showDetailLabels?: boolean; showDescription?: boolean; showGroupCounts?: boolean; summaryColumns?: FloorplanCatalogSummaryColumns; actionAlignment?: FloorplanCatalogActionAlignment; rentDisplay?: FloorplanCatalogRentDisplay; contactForPricingLabel?: string; compactContactForPricingLabel?: string; selectorWidth?: string; responsiveSelectorWidth?: ResponsiveLength; gap?: string; responsiveGap?: ResponsiveLength; imageHeight?: string; responsiveImageHeight?: ResponsiveLength; layout?: FloorplanCatalogLayout; responsiveLayout?: ResponsiveValue; compactPresentation?: FloorplanCatalogCompactPresentation; selectorPresentation?: FloorplanCatalogSelectorPresentation; desktopPresentation?: FloorplanCatalogDesktopPresentation; collapseAt?: StudioBreakpoint; mobileDefaultOpen?: "none" | "first"; compactDisclosure?: FloorplanCatalogCompactDisclosure; compactShowPlanHeading?: boolean; compactSummaryColumns?: FloorplanCatalogCompactSummaryColumns; imageLightbox?: boolean; lightboxLoop?: boolean; lightboxCaptions?: boolean; lightboxCounter?: boolean; lightboxThumbnails?: boolean; lightboxFullscreen?: boolean; lightboxSlideshow?: boolean; lightboxSlideshowInterval?: number; lightboxControlHideDelay?: number; lightboxViewportPadding?: string; className?: string; } export declare function FloorplanCatalog({ groups, propertyId, initialGroupId, initialFloorplanId, loadingMessage, errorMessage, emptyMessage, showUnavailable, showBedBath, showSqft, showRent, showUnitCount, showUnitExamples, unitExamplesHeading, unitPreviewLimit, showFees, feesHeading, applyUrl, applyLabel, openApplyInNewTab, showDetailLabels, showDescription, showGroupCounts, summaryColumns, actionAlignment, rentDisplay, contactForPricingLabel, compactContactForPricingLabel, selectorWidth, responsiveSelectorWidth, gap, responsiveGap, imageHeight, responsiveImageHeight, layout, responsiveLayout, compactPresentation, selectorPresentation, desktopPresentation, collapseAt, mobileDefaultOpen, compactDisclosure, compactShowPlanHeading, compactSummaryColumns, imageLightbox, lightboxLoop, lightboxCaptions, lightboxCounter, lightboxThumbnails, lightboxFullscreen, lightboxSlideshow, lightboxSlideshowInterval, lightboxControlHideDelay, lightboxViewportPadding, className, "data-node-id": dataNodeId, }: FloorplanCatalogProps): import("react/jsx-runtime").JSX.Element; //# sourceMappingURL=FloorplanCatalog.d.ts.map