The Popover component displays floating content anchored to a trigger element.
Installation
import {
PopoverRoot,
PopoverTrigger,
PopoverPortal,
PopoverPositioner,
PopoverPopup,
PopoverArrow,
PopoverTitle,
PopoverDescription,
PopoverClose,
} from "@craftdotui/baseui/components/popover";
<PopoverRoot>
<PopoverTrigger>
<Button>Open Popover</Button>
</PopoverTrigger>
<PopoverPortal>
<PopoverPositioner>
<PopoverPopup>
<PopoverArrow />
<PopoverTitle>Popover Title</PopoverTitle>
<PopoverDescription>
This is a popover description.
</PopoverDescription>
</PopoverPopup>
</PopoverPositioner>
</PopoverPortal>
</PopoverRoot>
Components
PopoverRoot
Callback when state changes.
PopoverPositioner
Preferred side. Options: top, right, bottom, left
Alignment. Options: start, center, end
Distance from the trigger.
The popover content container with border and shadow.
PopoverArrow
Optional arrow pointing to the trigger.
PopoverTitle
Title for the popover content.
PopoverDescription
Description text.
PopoverClose
Closes the popover when clicked.
Examples
With Arrow
<PopoverRoot>
<PopoverTrigger>Open</PopoverTrigger>
<PopoverPortal>
<PopoverPositioner>
<PopoverPopup>
<PopoverArrow />
<PopoverTitle>Title</PopoverTitle>
<PopoverDescription>Description</PopoverDescription>
</PopoverPopup>
</PopoverPositioner>
</PopoverPortal>
</PopoverRoot>
Different Sides
<PopoverPositioner side="top">...</PopoverPositioner>
<PopoverPositioner side="right">...</PopoverPositioner>
<PopoverPositioner side="bottom">...</PopoverPositioner>
<PopoverPositioner side="left">...</PopoverPositioner>
With Close Button
<PopoverPopup>
<PopoverTitle>Title</PopoverTitle>
<PopoverDescription>Description</PopoverDescription>
<PopoverClose>
<Button size="sm">Close</Button>
</PopoverClose>
</PopoverPopup>
Accessibility
- Built on @base-ui/react for ARIA support
- Keyboard navigation (Escape to close)
- Focus management
- Proper ARIA attributes
- Collision detection for positioning