Popover
Camada flutuante com conteúdo livre, aberta a partir de um gatilho.
O Popover mostra conteúdo rico perto do que o abriu: uma explicação mais longa, uma configuração pequena, um resumo. Para uma lista de ações use Dropdown; para uma dica curta ao passar o mouse, Tooltip; para fluxos maiores, Modal ou Sheet.
import { Popover } from "@rastreio-x/ui";
Padrão
O gatilho é o primeiro filho (um Button), seguido de Popover.Content e Popover.Dialog. Popover.Heading dá o título e nome acessível.
Com seta
Popover.Arrow aponta para o gatilho. Em gatilhos só com ícone, o botão precisa de aria-label.
Posições
placement em Popover.Content: top, bottom (padrão), left e right, com ajuste automático se faltar espaço (shouldFlip).
Conteúdo interativo
O Popover aceita controles, e você pode controlar a abertura com isOpen e onOpenChange.
Anatomia
Popover.Trigger: o gatilho (opcional quando o primeiro filho é um botão).Popover.Content: a camada, posicionada e com limite de largura.Popover.Arrow: seta opcional.Popover.DialogePopover.Heading: o diálogo e o título.
Propriedades
Popover:
Popover.Content:
Animações
A camada entra e sai com opacity e transform em transição curta, a partir do lado do gatilho. Com prefers-reduced-motion, a folha global da fachada reduz as transições a 0,01 ms e ela aparece direto.
Acessibilidade
- O gatilho expõe
aria-expandedearia-haspopup="dialog"; a camada é um diálogo não modal nomeado peloPopover.Heading. - Teclado: Enter ou Espaço abrem; o foco vai para dentro; Tab percorre os controles; Esc fecha e devolve o foco ao gatilho.
- Dê sempre um título (visível ou
aria-labelno diálogo). - Não use para conteúdo essencial ou para erros: quem não abre o Popover nunca os vê.
- O clique fora fecha; não dependa disso para ações destrutivas.
Boas práticas
Faça
Evite
- Limite a largura (
max-w-64amax-w-80). - Se o conteúdo precisa ser lido por todos, mostre-o na página.
- Evite Popover dentro de Popover.