Popover

Rich, interactive content anchored to a trigger, such as quick settings, filters or a short form.
Stable
Web
iOS
Android
@advui/core
Source

Form fields

Installation

pnpm
pnpm add @advui/core
npm
npm install @advui/core

Usage

import { Button, Popover } from '@advui/core'

<Popover>
  <Popover.Trigger asChild>
    <Button variant="outline">Dimensions</Button>
  </Popover.Trigger>
  <Popover.Content>
    <Popover.Title>Dimensions</Popover.Title>
    …
  </Popover.Content>
</Popover>

Examples

Controlled filter

Closes itself when the user applies the selection.
Showing: Active

API reference

Popover

PropTypeDefaultDescription
openboolean—Open state.
defaultOpenboolean—Starting `open` when uncontrolled.
onOpenChange(open: boolean) => void—Called when the popover opens or closes.
side'top' | 'right' | 'bottom' | 'left''bottom'Where to open relative to the trigger (flips when there is no room).
align'start' | 'center' | 'end''center'Alignment along that side.
offsetnumber8Gap to the trigger in px.

Popover.Trigger

PropTypeDefaultDescription
asChildboolean—Use your own element (e.g. a Button) as the trigger.

Popover.Content

Takes View props to style the panel; its width defaults to `72`.

Popover.Title

PropTypeDefaultDescription
children requiredReactNode—Heading that names the dialog for screen readers.

Popover.Description

PropTypeDefaultDescription
childrenReactNode—Supporting text.

Popover.Close

PropTypeDefaultDescription
asChildboolean—Wrap a button that closes the popover.

Accessibility

  • The trigger exposes aria-haspopup="dialog" and aria-expanded; the panel is a dialog named by Popover.Title.
  • Focus moves into the panel when it opens and returns to the trigger when it closes.
  • Escape and a press outside close it.
  • Prefer Dialog for tasks that must block the page, and Tooltip for short non-interactive hints.
Keyboard interactions
KeyAction
Enter / SpaceOpens the popover from its trigger.
Tab / Shift + TabMoves focus through the panel.
EscCloses the popover and returns focus to the trigger.

Responsive behavior

On phones and other touch screens narrower than the md breakpoint, the content opens in a bottom sheet instead.

Platform notes

Web
Floating panel positioned next to the trigger; flips and stays inside the viewport.
iOS
Opens as a bottom sheet that can be swiped away.
Android
Opens as a bottom sheet; the back gesture closes it.
Since v0.2.0Last updated Nov 2, 2026Edit this page on GitHub