Pular para o conteúdo

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.Dialog e Popover.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-expanded e aria-haspopup="dialog"; a camada é um diálogo não modal nomeado pelo Popover.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-label no 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

Conteúdo curto e opcional, com título claro e no máximo uma ação.

Evite

Formulários longos, informação crítica ou menus de ações (isso é Dropdown).
  • Limite a largura (max-w-64 a max-w-80).
  • Se o conteúdo precisa ser lido por todos, mostre-o na página.
  • Evite Popover dentro de Popover.

Relacionados