placement | 'above' | 'below' | 'start' | 'end' | MaybeRefOrGetter | 'below' | Side of the trigger the popover is placed on. Logical: start / end mirror under RTL. Flips when there is no room. |
alignment | 'start' | 'center' | 'end' | MaybeRefOrGetter | 'start' | Alignment along the placement axis. |
isOpen | boolean | undefined | MaybeRefOrGetter | — | Controlled open state. Leave it out to let the hook own the state. |
isEnabled | boolean | MaybeRefOrGetter | true | Whether the trigger opens the popover. |
hasLightDismiss | boolean | MaybeRefOrGetter | true | Whether clicking outside dismisses the popover. |
hasEscapeDismiss | boolean | MaybeRefOrGetter | true | Whether pressing Escape dismisses the popover. |
hasAutoFocus | boolean | MaybeRefOrGetter | true | Whether to focus the first genuine content control when opened. A dialog with none falls back to the content container. |
closeButtonSelector | string | — | Selector of the control that initial focus must skip, such as the component's own close button. |
dialogLabel | string | MaybeRefOrGetter | — | Accessible label for the popover dialog. Provide one when there is no visible title. |
role | 'dialog' | 'none' | MaybeRefOrGetter | 'dialog' | ARIA role on the content container. Use none for listbox/menu popups whose own content role should be exposed and whose trigger keeps DOM focus. |
isModal | boolean | MaybeRefOrGetter | true | Whether a dialog-role popover is modal (aria-modal). |
onShow | () => void | — | Called when the popover becomes visible. |
onHide | () => void | — | Called when the popover is hidden. Use this to return focus to the trigger when needed. |