import { ReactNode } from 'react'; export interface PopoverOrigin { vertical: 'top' | 'center' | 'bottom' | number; horizontal: 'left' | 'center' | 'right' | number; } export type PopoverCloseReason = 'backdropClick' | 'escapeKeyDown'; export interface StyledPopoverProps { open: boolean; anchorEl?: Element | null; onClose?: (event: object, reason?: PopoverCloseReason) => void; anchorOrigin?: PopoverOrigin; transformOrigin?: PopoverOrigin; id?: string; className?: string; sx?: unknown; slotProps?: { paper?: { className?: string; sx?: unknown; style?: React.CSSProperties; }; }; onClick?: (event: React.MouseEvent) => void; children?: ReactNode; /** * MUI `keepMounted` parity: after the first open, keep children in the React tree while closed * (hidden). Needed when a menu item owns a dialog — without this, closing the menu unmounts the * dialog in the same tick it opens. */ keepMounted?: boolean; } /** * @figmaNode none — no standalone Figma component * Anchored-overlay **primitive** (replaces MUI `Popover`); the Figma DS has no "Popover" component, * so the base paper uses the DS floating-surface defaults: white, radius **4** (Figma `menus`/ * `text-field` radius token), and the **Float** elevation (drop-shadow `0 1 12 rgba(0,0,0,.15)`). * Styled consumers override the paper — `StyledMenu` adds the delta-300 border + Menus shadow * (`0 2 4 rgba(34,33,51,.15)`), the date-picker calendar keeps this base. Body-portalled instances * join the browser **top layer** (see `useTopLayerRef`); when the anchor is inside a modal * ``, we portal into that dialog and skip the Popover API (mobile Safari nested top-layer * bug — see `shouldUsePopoverTopLayer`). * * Positions against `anchorEl`, flips/shifts on collision, portalled, closes on outside-press/escape * mapping to MUI's `onClose(event, reason)`. `anchorOrigin`/`transformOrigin`/`slotProps.paper` * preserved (DEC-003). TASK-302. */ export declare const StyledPopover: ({ open, anchorEl, onClose, anchorOrigin, transformOrigin, id, className, sx, slotProps, onClick, children, keepMounted, }: StyledPopoverProps) => JSX.Element | null;