Skip to Content
ComponentsPopover

Popover

A positioned popup built on Base UI’s Popover primitive. Includes built-in Floating UI positioning, an optional arrow, and scale/fade enter/exit transitions.

Import

import { Popover } from "chunks-ui";

Basic Usage

<Popover.Root> <Popover.Trigger>More info</Popover.Trigger> <Popover.Content> <Popover.Title>Details</Popover.Title> <Popover.Description> This is additional context about the feature. </Popover.Description> </Popover.Content> </Popover.Root>

With Arrow

<Popover.Root> <Popover.Trigger>Help</Popover.Trigger> <Popover.Content> <Popover.Arrow /> <Popover.Title>Need help?</Popover.Title> <Popover.Description> Contact support at help@example.com. </Popover.Description> </Popover.Content> </Popover.Root>

With Close Button

<Popover.Root> <Popover.Trigger>Open</Popover.Trigger> <Popover.Content> <div className="flex items-center justify-between"> <Popover.Title>Settings</Popover.Title> <Popover.Close>Close</Popover.Close> </div> <Popover.Description> Configure your preferences here. </Popover.Description> </Popover.Content> </Popover.Root>

Positioning

The Popover.Content uses Base UI’s built-in Floating UI integration. It has a default sideOffset of 8px. You can customize placement via side and align props:

<Popover.Content side="bottom" align="start"> ... </Popover.Content>

Compound Parts

PartDescription
Popover.RootState container. Manages open/close.
Popover.TriggerElement that toggles the popover.
Popover.ContentPortal + positioner + popup panel. Default sideOffset={8}. Accepts side, align, alignOffset props.
Popover.ArrowSVG arrow pointing to the trigger. Filled with --popover color.
Popover.TitlePopover heading. Semibold text-sm.
Popover.DescriptionSupporting text. text-muted-foreground.
Popover.CloseButton that closes the popover.

Popover.Root Props

PropTypeDefaultDescription
openbooleanControlled open state
defaultOpenbooleanfalseInitial open state (uncontrolled)
onOpenChange(open: boolean) => voidCalled when open state changes

Popover.Content Props

PropTypeDefaultDescription
side"top" | "bottom" | "left" | "right""bottom"Preferred side
sideOffsetnumber8Distance from the trigger
align"start" | "center" | "end""center"Alignment along the side
alignOffsetnumber0Offset from the alignment edge
classNamestringAdditional CSS classes
Last updated on