Popover
Installation
Install the component via the CLI in one command.
npx shadcn@latest add @intentui/popover
Composed components
When you install this component via the CLI, it automatically loads all composed components, so you don’t need to add them individually.
Manual installation
Use this approach if you prefer to install and wire up the component yourself instead of using the CLI.
npm install react-aria-components
Anatomy
import {
Popover,
PopoverBody,
PopoverClose,
PopoverContent,
PopoverDescription,
PopoverFooter,
PopoverHeader,
PopoverTitle,
PopoverTrigger,
} from "@/components/ui/popover"
import { Dialog } from "@/components/ui/dialog"<Popover>
<PopoverTrigger>Open Popover</PopoverTrigger>
<PopoverContent>
<Dialog>
<PopoverHeader>
<PopoverTitle>Popover Title</PopoverTitle>
<PopoverDescription>Popover Description</PopoverDescription>
</PopoverHeader>
<PopoverBody>Popover Body</PopoverBody>
<PopoverFooter>
<PopoverClose>Close</PopoverClose>
<PopoverClose>Confirm</PopoverClose>
</PopoverFooter>
</Dialog>
</PopoverContent>
</Popover>Examples
Controlled
You can control the popover programmatically.
Overlay arrow
Popovers come with an arrow that points to the trigger element, but it’s hidden by default. To display it, pass the arrow prop.
Placement
You can change the placement of the popover by passing the placement prop.
The list above shows the primary directions, but you can also use specific placements like bottom left or top right. Here are all the available placement options:
| Primary Direction | Placement |
|---|---|
bottom | bottom, bottom left, bottom right, bottom start, bottom end |
top | top, top left, top right, top start, top end |
left | left, left top, left bottom |
start | start, start top, start bottom |
right | right, right top, right bottom |
end | end, end top, end bottom |
Custom close
You can easily close the popover by clicking outside of it, or add a custom close button inside using Popover.Close. Just make sure everything is wrapped inside a Dialog.
Popover trigger
All the examples above use <Button/> as the trigger, but what if you wanna switch it up, like using <Avatar/> instead? No sweat, just roll with PopoverTrigger like this:
Component API
Popover
Popover extends the React Aria Components <Popover> component.
PopoverTrigger
PopoverTrigger extends the Intent UI <DialogTrigger> component.
classNamestringPopoverContent
PopoverContent extends the React Aria Components <Popover> component.
arrowbooleanfalseclassNamestringPopoverHeader
PopoverHeader extends the Intent UI <DialogHeader> component.
classNamestringdescriptionstringtitlestringPopoverTitle
PopoverTitle extends the Intent UI <DialogTitle> component.
classNamestringPopoverDescription
PopoverDescription extends the Intent UI <DialogDescription> component.
classNamestringPopoverBody
PopoverBody extends the Intent UI <DialogBody> component.
classNamestringPopoverFooter
PopoverFooter extends the Intent UI <DialogFooter> component.
classNamestringPopoverClose
PopoverClose extends the Intent UI <DialogClose> component.
classNamestringintent"primary" | "secondary" | "warning" | "danger" | "success" | "outline" | "plain"plainSee the React Aria for the full API reference.
