Popover
Exibe conteúdo contextual breve em uma camada não modal ancorada a um trigger.
Design
Anatomia
Título do Popover
Conteúdo contextual breve.
- Trigger — Button que controla abertura e
aria-expanded. - Panel — superfície elevada com
role="dialog". - Header — title opcional e close absoluto.
- Body — Content Text e Content Slot independentes.
- Actions — até dois Buttons substituíveis e ocultáveis separadamente.
- Arrow — Shape fechada que aponta para o trigger.
Exemplo interativo · React · shadcn/Base UI
Executado pela recipe React distribuída via shadcn e baseada em Base UI.
Carregando preview funcional…
Content Slot adicional · React · shadcn/Base UI
Executado pela recipe React distribuída via shadcn e baseada em Base UI.
Carregando preview funcional…
Placements
| Modifier | Posição do panel |
|---|---|
ds-popover--bottom | Abaixo do trigger |
ds-popover--top | Acima do trigger |
ds-popover--left | À esquerda do trigger |
ds-popover--right | À direita do trigger |
Mapeamento de tokens
| Parte | Component tokens |
|---|---|
| Panel | component.popover.panel.{bg,border-color,border-width,gap,max-width,padding-x,padding-y,radius,shadow}.default |
| Title / Body | component.popover.title.color.default, component.popover.body.{color,gap,padding-bottom}.default |
| Close | component.popover.close.{size,icon-size,padding,color}.default, component.popover.close.icon.stroke-width.default |
| Content Slot | component.popover.content-slot.gap.default |
| Actions | component.popover.actions.{gap,padding-top}.default |
| Arrow | component.popover.arrow.{base,fill}.default |
Uso
Quando usar
Use Popover quando
O conteúdo contextual precisa de ações, links, um campo simples ou explicação mais rica que Tooltip, sem bloquear o restante da página.
Não use Popover quando
O conteúdo é somente um label curto (use Tooltip), exige decisão bloqueante ou fluxo longo (use Modal), ou representa uma lista de comandos (use Menu).
Relacionados
Composição React
import {
Popover,
PopoverClose,
PopoverContent,
PopoverDescription,
PopoverHeader,
PopoverTitle,
PopoverTrigger,
} from "@/components/ui/popover"
import { Button } from "@/components/ui/button"
<Popover>
<PopoverTrigger render={<Button variant="outline" />}>Detalhes</PopoverTrigger>
<PopoverContent>
<PopoverHeader><PopoverTitle>Detalhes da ação</PopoverTitle></PopoverHeader>
<PopoverClose label="Fechar popover" />
<PopoverDescription>Conteúdo breve associado ao trigger.</PopoverDescription>
</PopoverContent>
</Popover>Implementação
- Status
- Beta
- Distribuição
- Source via shadcn
Instalação
Configure o namespace uma única vez na integração React.
npx shadcn@latest add @tis/popover @tis/buttonpnpm dlx shadcn@latest add @tis/popover @tis/buttonyarn dlx shadcn@latest add @tis/popover @tis/buttonbunx --bun shadcn@latest add @tis/popover @tis/buttonContrato público
- Item do registry
@tis/popover- Provider
- Base UI
- Distribuição
- Source copiado para a aplicação
- Status
- Beta
Acessibilidade
Acessibilidade e teclado
| Entrada | Comportamento |
|---|---|
| Enter / Space | O Button trigger abre ou fecha pelo comportamento nativo de click. |
| Escape | Fecha o Popover e retorna foco ao trigger. |
| Tab | Segue a ordem natural; não há focus trap. |
role="dialog" | Use aria-labelledby para title visível ou aria-label quando não houver header. |
Responsabilidade da saída
Preserve a semântica da Base UI e teste conteúdo real, foco visível e nomes acessíveis na aplicação consumidora.
Evidência de validação
Coberta pelo Storybook da saída independente e por verificações de browser, responsividade, teclado, Axe e bundle.