import { type ReactNode, type RefObject } from "react"; import { View, type StyleProp, type ViewStyle } from "../../style/index.js"; import { Button as WebButton } from "../button/button.js"; import { type PopoverSkin, type Placement } from "./popover.styles.js"; export interface PopoverProps { /** An existing trigger to anchor against; omits the built-in trigger and wrapper. */ anchorRef?: RefObject; /** Explicit name for a panel with custom content. */ accessibilityLabel?: string; /** Compact web application panel with an outside hairline and scrolling content. */ compact?: boolean; /** Roomier compact-panel content inset. */ comfortable?: boolean; /** Keep the card anchored on narrow windows instead of adapting to a sheet. */ anchored?: boolean; /** Align the trailing edge of the card to its trigger. */ alignEnd?: boolean; /** Floating card width, clamped inside the overlay outlet. */ panelWidth?: number; /** Maximum height of the floating card; its compact contents scroll within it. */ maxHeight?: number; /** Label for the trigger button. */ trigger?: string; /** Heading shown at the top of the floating card. */ title?: string; /** Supporting line beneath the title. */ description?: string; /** Custom panel content (an input, a form row, any node), rendered in the card body between the description and the action row. Composes with the data-driven props. */ children?: ReactNode; /** When set, renders a primary action button at the bottom of the card. */ actionLabel?: string; /** Anchor the card ABOVE the trigger (it flips below when the room above is short). Placement axis: `top` > `bottom`. */ top?: boolean; /** Anchor the card BELOW the trigger, the default (it flips above when the room below is short). */ bottom?: boolean; /** * Static mode: render the card on its own with no trigger button (an * always-visible inline panel). When set, the card is always shown and * `open` is ignored. With `top` or `bottom` it points its beak at what it belongs to * (below it with `top`, above it with `bottom`), from the end edge with `alignEnd`. */ inline?: boolean; /** Controlled open state. Omit for uncontrolled (the trigger toggles it). */ open?: boolean; /** Fired when the open state changes. */ onOpenChange?: (open: boolean) => void; /** E2E hook forwarded to the root element. */ testID?: string; /** Outer layout composition only (width/flex within a parent), never a restyle hook. */ style?: StyleProp; } export declare function placementOf(p: PopoverProps): Placement; /** Build a Popover component from a platform skin. */ /** * The components a Popover draws with that look different per platform. The web * builds are the defaults; the iOS and Android entries pass their own, so the docs' * platform columns render them truthfully (a device resolves them by platform either way). */ export interface PopoverParts { Button?: typeof WebButton; } export declare function createPopover(skin: PopoverSkin, parts?: PopoverParts): (props: PopoverProps) => import("react").JSX.Element; //# sourceMappingURL=popover.shared.d.ts.map