Popover
Atom
Popover mostra conteúdo contextual ancorado a um trigger. Use quando o conteúdo é útil naquele ponto, mas não precisa ocupar a página.
Diferente de Tooltip, Popover pode conter ações, campos ou links. Diferente de Dialog, ele não deve bloquear uma decisão crítica nem exigir foco prolongado.
Exemplos copiáveis
React
React
import * as React from "react"
type PulsoPopoverProps = {
trigger: React.ReactNode
title: string
children: React.ReactNode
}
export function PulsoPopover({ trigger, title, children }: PulsoPopoverProps) {
const [open, setOpen] = React.useState(false)
const panelId = React.useId()
return (
<span className="relative inline-flex">
<button
type="button"
aria-expanded={open}
aria-controls={panelId}
onClick={() => setOpen((value) => !value)}
className="rounded-[var(--radius-sm)] focus-visible:outline focus-visible:outline-[var(--ring-width)] focus-visible:outline-offset-2 focus-visible:outline-[var(--ring)]"
>
{trigger}
</button>
{open ? (
<section
id={panelId}
className="absolute right-0 top-full z-50 mt-2 w-72 rounded-[var(--radius-md)] border border-[var(--border)] bg-[var(--popover)] p-4 text-sm text-[var(--fg)] shadow-[var(--shadow-lg)]"
>
<h2 className="text-sm font-semibold text-[var(--fg-strong)]">{title}</h2>
<div className="mt-2 text-[var(--fg-muted)]">{children}</div>
</section>
) : null}
</span>
)
}<PulsoPopover trigger="Origem" title="Origem da recomendação">
Baseada em 12 fontes verificadas e registrada na trilha de auditoria.
</PulsoPopover>Quando usar
- Conteúdo contextual curto com ação.
- Explicação de origem, filtros ou detalhes de item.
- Pequenos formulários ou seleções ancoradas.
- Conteúdo que pode fechar sem perda de trabalho crítica.
Quando não usar
- Para informação essencial; deixe visível.
- Para decisão destrutiva; use Dialog/Alert Dialog.
- Para texto simples sem interação; use Tooltip.
- Para conteúdo longo ou fluxo multi-etapa; use Sheet/Dialog.
Acessibilidade
- Trigger precisa anunciar estado aberto.
- Feche com
Escapequando implementado em runtime. - Gerencie foco se houver campos ou ações dentro.
- Não coloque conteúdo crítico apenas dentro do Popover.
Regras
- Popover é contextual e curto.
- Pode conter interação; Tooltip não.
- Não bloqueia decisão crítica.
- Deve fechar ao clicar fora/Escape no runtime.
- Em mobile, pode virar Sheet se não couber no viewport.
Last updated on