UI

Popover

Conteúdo flutuante ancorado a um botão, para detalhes, pequenos formulários e explicações que não cabem num tooltip.

Instalação

npx shadcn@latest add @lenstech/popover

Uso

import { Button } from "@/components/ui/button"
import { PopoverContent, PopoverTrigger } from "@/components/ui/popover"
<PopoverTrigger>
  <Button variant="outline">Detalhes</Button>
  <PopoverContent aria-label="Detalhes">
    Conteúdo do popover.
  </PopoverContent>
</PopoverTrigger>

PopoverContent x Popover

Use PopoverContent para conteúdo livre: ele envolve o conteúdo num Dialog acessível (foco gerenciado, Esc fecha). Informe aria-label ou um título com slot="title". Popover é só a superfície posicionada, usada internamente por Menu, Select e ComboBox — raramente você vai usá-lo direto.

Exemplos

Posicionamento

Use placement (top, bottom, left, right e combinações como "bottom start"). Se não houver espaço, o popover inverte o lado automaticamente.

Com seta

showArrow adiciona uma seta apontando para o gatilho — útil quando o botão é pequeno, como um ícone de ajuda.

Taxa de entrega: R$ 8,00

Com formulário

Como no Dialog, o filho pode ser uma função que recebe close. Botões com slot="close" também fecham o popover.

Quando usar

  • Use para conteúdo curto e interativo ligado a um elemento: explicar uma taxa, editar um campo, filtros simples.
  • Não use para dicas de uma linha sem interação — use Tooltip.
  • Não use para uma lista de ações — use Menu.
  • Para formulários maiores ou conteúdo que precisa de foco total, use Dialog ou Sheet.

API

PopoverTrigger

É o DialogTrigger do React Aria: o primeiro filho é o gatilho e o segundo é o PopoverContent. Aceita isOpen, defaultOpen e onOpenChange.

PopoverContent

Aceita todas as props do Dialog do React Aria, mais:

Prop

Type

Popover

Superfície posicionada sem diálogo. Aceita todas as props do Popover do React Aria (placement, offset, crossOffset, triggerRef, isOpen…), mais:

Prop

Type

On this page