Hover Card
Displays a preview card when hovering or focusing a link, built on the Base UI Preview Card primitive.
"use client";
import { Avatar, AvatarFallback, AvatarImage } from "@/registry/base/ui/avatar";
import {
HoverCard,
HoverCardContent,
HoverCardTrigger,
} from "@/registry/base/ui/hover-card";
export default function HoverCardDemo() {
return (
<HoverCard>
<HoverCardTrigger
href="https://x.com/sevenuidev"
target="_blank"
rel="noreferrer"
className="text-sm font-medium underline underline-offset-4"
>
@sevenuidev
</HoverCardTrigger>
<HoverCardContent className="flex w-72 gap-3">
<Avatar>
<AvatarImage src="/logomark.svg" alt="SevenUI" />
<AvatarFallback>7U</AvatarFallback>
</Avatar>
<div className="space-y-1">
<h4 className="text-sm font-medium">
SevenUI{" "}
<span className="font-normal text-muted-foreground">
@sevenuidev
</span>
</h4>
<p className="text-sm text-muted-foreground">
A shadcn-compatible component registry built entirely on Base UI —
no Radix, anywhere.
</p>
<p className="text-xs text-muted-foreground">sevenui.dev · Joined 2026</p>
</div>
</HoverCardContent>
</HoverCard>
);
}
Installation
npx shadcn@latest add https://sevenui.dev/r/hover-card.jsonUsage
"use client";
import { Avatar, AvatarFallback } from "@/components/ui/avatar";
import {
HoverCard,
HoverCardContent,
HoverCardTrigger,
} from "@/components/ui/hover-card";
export default function HoverCardDemo() {
return (
<HoverCard>
<HoverCardTrigger
href="https://base-ui.com"
target="_blank"
rel="noreferrer"
className="text-sm font-medium underline underline-offset-4"
>
@base_ui
</HoverCardTrigger>
<HoverCardContent className="flex gap-3">
<Avatar>
<AvatarFallback>BU</AvatarFallback>
</Avatar>
<div className="space-y-1">
<h4 className="font-medium text-sm">Base UI</h4>
<p className="text-muted-foreground text-sm">
Unstyled UI components for React, by the MUI team.
</p>
<p className="text-muted-foreground text-xs">Joined 2024</p>
</div>
</HoverCardContent>
</HoverCard>
);
}
API reference
HoverCard
Extends the
Base UI Preview Card
Root — no modal prop; hover-open is built in. Not accessible to touch
or screen-reader users by design — preview cards are a progressive
enhancement over the underlying link, which remains fully operable on
its own.
| Prop | Type | Default |
|---|---|---|
open / defaultOpen |
boolean |
false |
onOpenChange |
(open: boolean) => void |
— |
HoverCardTrigger
Renders a real link (<a>) and needs an href — preview cards exist to
preview link destinations.
| Prop | Type | Default |
|---|---|---|
href |
string |
— required |
delay |
number |
600 (ms) |
closeDelay |
number |
300 (ms) |
HoverCardContent
| Prop | Type | Default |
|---|---|---|
side / align |
positioner placement | "bottom" / "center" |