Popover
Floating content panel anchored to a trigger. Scales from the trigger's edge, repositions automatically to avoid viewport overflow.
Popover
base-ui docs ↗Floating content panel anchored to a trigger. Scales from the trigger's
edge and repositions automatically to avoid viewport overflow. Supports
title, description, close button, and arbitrary body content.
| Prop | Type | Default |
|---|---|---|
| trigger* | ReactElement<unknown, string | JSXElementConstructor<any>> | — |
The trigger element — rendered as-is, receives the popover open/close handler. | ||
| title | ReactNode | — |
Optional heading rendered at the top of the popup. | ||
| description | ReactNode | — |
Optional supporting text rendered below the title. | ||
| children | ReactNode | — |
Body content of the popover. | ||
| side | "top" | "bottom" | "left" | "right" | bottom |
Which side of the trigger to open on. | ||
| align | "start" | "center" | "end" | center |
Alignment relative to the trigger. | ||
| sideOffset | number | 8 |
Gap between trigger and popup in px. | ||
| dismissible | boolean | false |
Show a close (×) button in the top-right corner. | ||
| open | boolean | — |
Controlled open state. | ||
| defaultOpen | boolean | — |
Uncontrolled default open state. | ||
| onOpenChange | ((open: boolean, eventDetails: unknown) => void) | — |
Called when the popover opens or closes. | ||
Styled Parts
base-ui docs ↗Pre-styled wrappers around the corresponding base-ui parts. All base-ui props are forwarded.
CSS Class Names
Available as keys on the PopoverStyles object. Each key maps to a hashed CSS module class name at runtime.
arrowarrow-fillarrow-seamarrow-strokeclosedescriptionpopuppositionertitleviewport