import * as React from "react"; import type { FlushProp } from "../../props/vocabulary/index.js"; type Side = "top" | "right" | "bottom" | "left"; type Align = "start" | "center" | "end"; interface PopoverProps { /** Trạng thái mở, có kiểm soát. */ open?: boolean; /** Trạng thái mở ban đầu khi không kiểm soát. */ defaultOpen?: boolean; /** Gọi khi trạng thái mở/đóng đổi. */ onOpenChange?: (open: boolean) => void; /** Khoá tương tác ngoài panel và giam tiêu điểm, đúng như `modal` của Radix. */ modal?: boolean; /** * What opens the panel. `"click"` (default): the trigger toggles a dialog panel. `"hover"`: a * HOVER CARD — rich, non-modal preview content that opens when the pointer rests on the trigger * for `openDelay` and closes `closeDelay` after it leaves (moving onto the card cancels the * close); keyboard focus opens it and blur closes it immediately; touch never opens it. The * panel is then not a dialog and takes no focus. This is what `HoverCard` was (v32 #1223). */ openOn?: "click" | "hover"; /** `openOn="hover"` only: pointer rest before opening, in ms. Default 200. */ openDelay?: number; /** `openOn="hover"` only: delay after the pointer leaves before closing, in ms. Default 100. */ closeDelay?: number; } export declare function Popover({ open, defaultOpen, onOpenChange, modal, openOn, openDelay, closeDelay, children, }: React.PropsWithChildren): React.JSX.Element; interface PopoverTriggerProps extends React.ComponentPropsWithRef<"button"> { /** Mượn thẻ của con thay vì dựng `