ComponentsOverlays & feedback

Hover Card

A rich preview when the pointer rests on a name or link: an author, a CRM contact, an @mention. Extra information for mouse users only.

Radix Hover Card components/hover-card.tsx, lib/floating-arrow.tsxtheme · material · accent · density · font

Written by Leyla Aksoy · 6 min read

Installation

$ pnpm add @vamos-ui/react

The whole kit as one package — get updates by bumping the version. Add the styles to globals.css: @import "@vamos-ui/react/styles.css";

Usage

import { HoverCard, HoverCardTrigger, HoverCardContent } from "@vamos-ui/react";

<HoverCard>
  <HoverCardTrigger href="/contacts/482">Amelia Hart</HoverCardTrigger>
  <HoverCardContent>…</HoverCardContent>
</HoverCard>

Hover cards don't open from the keyboard or on touch. The same details must be reachable on the link target (the contact page, the author page).

Don't put actions that exist nowhere else inside a hover card; use Popover for interactive content.

Examples

Entity preview with loading

Fetch on first open in onOpenChange and show Skeleton meanwhile — a CRM contact card.

Deal owner:Amelia Hart

Mentions in a comment

Shorter delay and an arrow for @mentions in an HR comment thread.

Selin Demir

@Daniel can you approve the overtime for the warehouse team? If you're still out, @Mira said she can cover it.

API

HoverCard

PropTypeDefault
openDelay
Hover time before it opens (ms).
number500
closeDelay
Time before it closes after the pointer leaves (ms).
number150
open / defaultOpen / onOpenChange
Controlled or uncontrolled. Fetch data in onOpenChange.
boolean / boolean / (open) => void—

HoverCardTrigger

PropTypeDefault
href
Renders an <a>. Use asChild for a router Link.
string—
asChild
Merge onto your own element.
booleanfalse

HoverCardContent

PropTypeDefault
size
Width: 256 or 320 px.
"sm" | "md""md"
arrow
Pointer arrow.
booleanfalse
side / align
Preferred placement; flips on collision.
Radix placement"bottom" / "center"
sideOffset
Gap to the trigger in px.
number8