Popover

Displays rich content in a portal, triggered by a button.

Usage

The Popover component provides a way to display rich content in a portal when triggered by a button. It supports accessibility features, positioning options, and customizable styling.

import { Popover, Button, Text } from "@raystack/apsara/v1";
 
<Popover>
  <Popover.Trigger asChild>
    <Button>Open Popover</Button>
  </Popover.Trigger>
  <Popover.Content>
    <Text size="2">This is the popover content</Text>
  </Popover.Content>
</Popover>;

Popover Props

The Popover component consists of several parts, each with their own props:

Popover.Root Props

PropTypeDefault
defaultOpen
boolean
-
open
boolean
-
onOpenChange
(open: boolean) => void
-
modal
boolean
-

Popover.Content Props

PropTypeDefault
ariaLabel
string
"Popover content"
side
"top" | "right" | "bottom" | "left"
-
sideOffset
number
-
align
"start" | "center" | "end"
-
alignOffset
number
-
avoidCollisions
boolean
-
collisionPadding
number
-

Popover.Trigger Props

PropTypeDefault
asChild
boolean
-

Examples

Positioning

Control the position and alignment of your popover relative to its trigger.

<Popover>
  <Popover.Trigger asChild>
    <Button>Top Popover</Button>
  </Popover.Trigger>
  <Popover.Content side="top">
    <Text size="2">Content appears above the trigger</Text>
  </Popover.Content>
</Popover>

Alignment

Customize how the popover aligns with its trigger.

<Popover>
  <Popover.Trigger asChild>
    <Button>Center Aligned</Button>
  </Popover.Trigger>
  <Popover.Content align="center">
    <Text size="2">Centered with the trigger</Text>
  </Popover.Content>
</Popover>

Accessibility

The Callout component includes appropriate ARIA attributes for accessibility:

  • Uses semantic HTML elements for proper structure
  • Dismiss button includes aria-label for screen readers

On this page