import type * as React from 'react'; import type { OverlayOpenChangeDetails } from '../overlays/_shared/overlayTypes.js'; import type { MaterialBearingProps } from '../../contracts/components.js'; type RenderProp = React.ReactElement | ((props: any) => React.ReactElement); export interface PopoverRootProps extends MaterialBearingProps { /** Controlled open state. Pair with `onOpenChange`. */ open?: boolean | undefined; /** Initial open state when uncontrolled. */ defaultOpen?: boolean; /** Called with the next open state when it changes. */ onOpenChange?: ((open: boolean, details: OverlayOpenChangeDetails) => void) | undefined; /** Modal behaviour; non-modal is the default for anchored overlays and 'trap-focus' is the only modal value. */ modal?: false | 'trap-focus' | undefined; /** Hover-to-open mode (the HoverCard successor). Default false. */ openOnHover?: boolean | undefined; /** Hover open delay ms — default 300. */ delay?: number | undefined; /** Hover close delay ms — default 150. */ closeDelay?: number | undefined; /** Content rendered inside the component. */ children?: React.ReactNode; } /** Real convenience block: Portal > Positioner > Popup. */ export interface PopoverTriggerProps extends Omit, 'onChange'> { render?: RenderProp | undefined; /** Hover-to-open mode (the HoverCard successor). Default false. */ openOnHover?: boolean | undefined; /** Hover open delay ms — default 300. */ delay?: number | undefined; /** Hover close delay ms — default 150. */ closeDelay?: number | undefined; children?: React.ReactNode; } export interface PopoverPortalProps { children?: React.ReactNode; keepMounted?: boolean | undefined; } export interface PopoverPositionerProps extends Omit, 'onChange'> { render?: RenderProp | undefined; side?: 'top' | 'bottom' | 'left' | 'right' | 'inline-start' | 'inline-end' | undefined; align?: 'start' | 'center' | 'end' | undefined; sideOffset?: number | undefined; collisionPadding?: number | undefined; /** External anchor element (Tour step targets, hovercards) — BU forwards it to the positioner's anchor resolution. */ anchor?: Element | null | undefined; children?: React.ReactNode; } export interface PopoverPopupProps extends Omit, 'onChange'> { /** Per-instance overlay material; defaults to the root's material. */ variant?: 'regular' | 'identity' | undefined; prominent?: boolean | undefined; render?: RenderProp | undefined; initialFocus?: React.RefObject | ((openType: string) => HTMLElement | null | undefined) | undefined; finalFocus?: React.RefObject | ((closeType: string) => HTMLElement | null | undefined) | undefined; children?: React.ReactNode; } /** Content = Portal > Positioner > Popup (REQ-CMP-06): the placement props go to the positioner, `keepMounted` to the portal, everything else to the popup. */ export interface PopoverContentProps extends PopoverPopupProps, Pick { keepMounted?: boolean | undefined; ref?: React.Ref | undefined; } export interface PopoverArrowProps extends Omit, 'onChange'> { render?: RenderProp | undefined; } export interface PopoverTitleProps extends Omit, 'onChange'> { render?: RenderProp | undefined; children?: React.ReactNode; } export interface PopoverDescriptionProps extends Omit, 'onChange'> { render?: RenderProp | undefined; children?: React.ReactNode; } export interface PopoverCloseProps extends Omit, 'onChange'> { render?: RenderProp | undefined; children?: React.ReactNode; } export {}; //# sourceMappingURL=Popover.types.d.ts.map