FORMS
Popover
Non-modal floating panel anchored to a trigger. Built on Radix Popover, painted with the same Memphis chrome as DropdownMenu and Dialog so floating surfaces feel consistent. Use it as the generic container for preferences, mini-editors, search results, or any non-menu floating content. For an action-list with the full ARIA menu pattern reach for DropdownMenu.
Import
Live example
Alignment
Use align for inline alignment and side / sideOffset for the anchor edge.
Props
Popover props
| Prop | Type | Default | Description |
|---|---|---|---|
| open | boolean | — | Controlled open state on the root. |
| defaultOpen | boolean | — | Uncontrolled initial open state on the root. |
| onOpenChange | (open: boolean) => void | — | Fires when the open state changes. |
| modal | boolean | false | When true, focus is trapped while open and outside content is inert. Default is false (non-modal). |
| align | 'start' | 'center' | 'end' | 'center' | Prop on PopoverContent. Alignment of the content relative to the trigger. |
| side | 'top' | 'right' | 'bottom' | 'left' | 'bottom' | Prop on PopoverContent. Preferred edge to anchor against. Radix flips automatically when there is no room. |
| sideOffset | number | 6 | Gap between trigger and content. |
Popover vs DropdownMenu vs Dialog
- Popover — a free-form floating panel. Use it for forms, search results, help text, mini-editors.
- DropdownMenu — a list of actions with full keyboard wiring (arrow keys cycle items). Reach for it whenever the content is a menu.
- Dialog — a modal centred on the screen. Reach for it when the user must finish a task before continuing.
Accessibility
- Trigger inherits Radix
aria-expanded/aria-controls. - Default
modal=false— focus is not trapped, and clicks outside dismiss the panel. Setmodal=truewhen the popover hosts a complete task that should block other interactions. - Use
PopoverCloseon close affordances inside the content so focus returns to the trigger.