Hover Card
For sighted users to preview content available behind a link.
@bext
The framework for shipping fast websites. Built in Rust.
HoverCard — carte flottante déclenchée au hover, pour du contenu riche (mini-profil, aperçu de lien, détails contextuels). Similaire à Tooltip mais plus large (w-64 par défaut) avec possibilité de mettre des images/liens.
Pattern CSS-only : le trigger et le content sont dans un wrapper group. Le content passe de invisible opacity-0 à visible opacity-100 via group-hover:. Pas d'island — zéro JS.
Utiliser pour : mini-profil user au hover d'un @username, aperçu d'un lien externe, résumé d'une entité listée.
Installation
$ bext ui add hover-card
Copy and paste the following into src/components/ui/hover-card.tsx.
Usage
Anatomy
<HoverCard> // group/hovercard
├── <HoverCardTrigger>
│ └── <a href="/user/@bext">@bext</a>
└── <HoverCardContent align="center"> // invisible → visible au hover
└── ...contenu riche...API Reference
HoverCard
| Prop | Type | Default | Description |
|---|---|---|---|
| className | string | — | Wrapper group/hovercard (relative inline-block). |
HoverCardTrigger
| Prop | Type | Default | Description |
|---|---|---|---|
| children | ReactNode | — | Élément à survoler pour déclencher le reveal. |
HoverCardContent
| Prop | Type | Default | Description |
|---|---|---|---|
| align | "start" | "center" | "end" | "center" | Alignement horizontal. start=left-0, center=left-1/2 -translate-x-1/2, end=right-0. |
| className | string | — | Défaut : absolute top-full mt-2 w-64 rounded-md border bg-popover p-4 shadow-md. |
Data Attributes
Attributs qu'on peut cibler en CSS custom pour override le style par état.
| Attribute | On | Values | Description |
|---|---|---|---|
| group/hovercard | HoverCard | — | Nommé pour éviter conflit avec d'autres group hover parents. |
Keyboard
| Key | Action |
|---|---|
| Tab | Focus le trigger. Pas de reveal automatique au focus (limitation CSS pure — utiliser Popover si besoin). |
Accessibility
Le CSS-only n'a pas de group-focus-within sur HoverCard — le focus keyboard ne révèle pas la carte. Pour un composant vraiment accessible, préférer Popover qui s'ouvre au clic (focusable + activable clavier).
Utiliser uniquement pour du contenu non-essentiel — l'info doit rester atteignable même sans hover (ex : le username reste cliquable même sans voir la carte).
Examples
Aligned start
align="start" — collé au bord gauche du trigger.
<HoverCardContent align="start">…</HoverCardContent>
Edit this component live in the bext playground. The PRISM + signals version is the bext-native idiom — fine-grained reactivity, no virtual DOM.
On This Page