Popover

Loading...

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.

Loading...

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.

Loading...

Placement

You can change the placement of the popover by passing the placement prop.

Loading...

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 DirectionPlacement
bottombottom, bottom left, bottom right, bottom start, bottom end
toptop, top left, top right, top start, top end
leftleft, left top, left bottom
startstart, start top, start bottom
rightright, right top, right bottom
endend, 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.

Loading...

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:

Loading...

Component API

Popover

Popover extends the React Aria Components <Popover> component.

PopoverTrigger

PopoverTrigger extends the Intent UI <DialogTrigger> component.

classNamestring

PopoverContent

PopoverContent extends the React Aria Components <Popover> component.

arrowboolean
Default: false
classNamestring

PopoverHeader

PopoverHeader extends the Intent UI <DialogHeader> component.

classNamestring
descriptionstring
titlestring

PopoverTitle

PopoverTitle extends the Intent UI <DialogTitle> component.

classNamestring

PopoverDescription

PopoverDescription extends the Intent UI <DialogDescription> component.

classNamestring

PopoverBody

PopoverBody extends the Intent UI <DialogBody> component.

classNamestring

PopoverFooter

PopoverFooter extends the Intent UI <DialogFooter> component.

classNamestring

PopoverClose

PopoverClose extends the Intent UI <DialogClose> component.

classNamestring
intent"primary" | "secondary" | "warning" | "danger" | "success" | "outline" | "plain"
Default: plain

See the React Aria for the full API reference.