nteract elements

Popover

A floating panel for displaying rich content triggered by a button or element

A floating overlay panel that displays rich content when triggered. Built on Radix UI Popover for accessible, keyboard-navigable interactions.

Installation

npx shadcn@latest add https://nteract-elements.vercel.app/r/popover.json

Usage

import {
  Popover,
  PopoverTrigger,
  PopoverContent,
} from "@/registry/primitives/popover"

export function Example() {
  return (
    <Popover>
      <PopoverTrigger>Open</PopoverTrigger>
      <PopoverContent>Content goes here.</PopoverContent>
    </Popover>
  )
}

Examples

Basic Popover

<Popover>
  <PopoverTrigger asChild>
    <Button variant="outline">Click me</Button>
  </PopoverTrigger>
  <PopoverContent>
    <p className="text-sm">Simple popover content.</p>
  </PopoverContent>
</Popover>

With Header

<Popover>
  <PopoverTrigger asChild>
    <Button>Settings</Button>
  </PopoverTrigger>
  <PopoverContent className="w-80">
    <PopoverHeader>
      <PopoverTitle>Settings</PopoverTitle>
      <PopoverDescription>Configure your preferences here.</PopoverDescription>
    </PopoverHeader>
    <div className="grid gap-2 pt-4">
      <div className="flex items-center justify-between">
        <span className="text-sm">Notifications</span>
        <Button variant="outline" size="sm">Toggle</Button>
      </div>
    </div>
  </PopoverContent>
</Popover>

Notebook Examples

<Popover>
  <PopoverTrigger asChild>
    <Button variant="secondary" size="sm">Cell Info</Button>
  </PopoverTrigger>
  <PopoverContent className="w-64">
    <PopoverHeader>
      <PopoverTitle>Cell Metadata</PopoverTitle>
      <PopoverDescription>Execution details</PopoverDescription>
    </PopoverHeader>
    <div className="grid gap-1 pt-2 text-sm">
      <div className="flex justify-between">
        <span className="text-muted-foreground">Duration:</span>
        <span>0.42s</span>
      </div>
      <div className="flex justify-between">
        <span className="text-muted-foreground">Kernel:</span>
        <span>Python 3.11</span>
      </div>
    </div>
  </PopoverContent>
</Popover>

Props

Popover

PropTypeDefaultDescription
openbooleanControlled open state
defaultOpenbooleanfalseDefault open state
onOpenChange(open: boolean) => voidCallback when open state changes
modalbooleanfalseWhether to render as modal

PopoverTrigger

PropTypeDefaultDescription
asChildbooleanfalseRender as child element using Radix Slot
...propsButtonHTMLAttributesAll standard button attributes

PopoverContent

PropTypeDefaultDescription
align"start" | "center" | "end""center"Alignment relative to trigger
sideOffsetnumber4Distance from trigger in pixels
classNamestringAdditional CSS classes
...propsPopoverPrimitive.ContentPropsAll Radix Popover Content props

PopoverHeader

PropTypeDefaultDescription
classNamestringAdditional CSS classes
...propsHTMLAttributes<HTMLDivElement>All standard div attributes

PopoverTitle

PropTypeDefaultDescription
classNamestringAdditional CSS classes
...propsHTMLAttributes<HTMLHeadingElement>All standard h2 attributes

PopoverDescription

PropTypeDefaultDescription
classNamestringAdditional CSS classes
...propsHTMLAttributes<HTMLParagraphElement>All standard p attributes

On this page