Hover Card
Preview de conteúdo ao pairar sobre um link ou referência, sem exigir clique nem tirar o foco do fluxo atual.
Instalação
Recebe correções por update de versão. O caminho recomendado.
npm i @trdr/ui
import { HoverCard } from "@trdr/ui/hover-card"Uso
import { HoverCard, HoverCardContent, HoverCardTrigger } from "@trdr/ui/hover-card"
export function Exemplo() {
return <HoverCard />
}Props
HoverCardPropsestende React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Root>| Prop | Tipo | Descrição |
|---|---|---|
| openDelay? | number | Atraso em ms antes de abrir ao passar o mouse no trigger. Default do Radix e 700. |
| closeDelay? | number | Atraso em ms antes de fechar ao tirar o mouse. Default do Radix e 300. |
HoverCardTriggerPropsestende React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Trigger>HoverCardContentPropsestende React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>Quando usar
Use o hover card para dar contexto adicional sobre algo que ja e um link ou referencia na tela, sem forcar o usuario a sair do lugar onde esta: o preview de um ativo ao pairar sobre o ticker, o resumo de um usuario ao pairar sobre o nome dele numa lista de ordens. E informativo e opcional, nunca bloqueia a interacao principal.
Quando nao usar
Nao use hover card em telas majoritariamente touch: nao ha hover em toque, e o componente so
abre por foco de teclado como alternativa (o que ajuda desktop com teclado, mas nao resolve
mobile). Nesse caso prefira um Popover acionado por clique. Tambem nao use para uma frase
curta sobre um controle sem rotulo (isso e o Tooltip), nem para uma acao que precisa ficar
aberta ate o usuario decidir algo (isso e o Popover).
Anatomia
HoverCard: a raiz, controlaopenDelayecloseDelay(o Radix ja da uma folga maior que o tooltip por padrao, porque o gesto de pairar sobre um link costuma ser incidental).HoverCardTrigger(data-slot="hover-card-trigger"): renderiza um<a>por baixo, o caso classico sendo um link real. Quando o gatilho nao for de fato um link, componha comasChildsobre um elemento focavel (por exemplo<span tabIndex={0}>).HoverCardContent(data-slot="hover-card-content"): o painel de preview, com seta (data-slot="hover-card-arrow"), dentro de umPortal.
Acessibilidade
Ao contrario do Popover, o Radix nao atribui nenhum role especial ao HoverCardContent:
nao existe padrao ARIA proprio para "hover card" nas WAI-ARIA Authoring Practices, entao o
componente e um container simples. A acessibilidade vem do trigger, que e um link de verdade
(ou um elemento focavel via asChild) e do conteudo interno, que deve usar headings e texto
normais.
O card abre tanto por hover quanto por foco de teclado no trigger, e fecha com Escape ou ao
sair do hover/foco. Como o trigger e um link, ele ja e navegavel por Tab sem esforco extra.
Slots e tokens
Todo elemento renderizado carrega um data-slot para estilizar partes internas sem depender de classe da biblioteca. Os tokens listados são extraídos do código fonte.
[data-slot="hover-card-arrow"][data-slot="hover-card-content"][data-slot="hover-card-trigger"]7 tokens usados
bg-popoverborder-borderfill-popoveroutline-noneshadow-mdtext-b3text-popover-foreground