Skip to main content

Hover Card

For sighted users to preview content available behind a link.

Preview​

import {
HoverCard,
HoverCardTrigger,
HoverCardContent,
} from "@/components/ui/hover-card"
import { Avatar, AvatarImage, AvatarFallback } from "@/components/ui/avatar"
import { CalendarDays } from "lucide-react"

<HoverCard>
<HoverCardTrigger asChild>
<a href="#" className="text-sm font-semibold text-primary underline underline-offset-4">
@stacks
</a>
</HoverCardTrigger>
<HoverCardContent className="w-80">
<div className="flex gap-4">
<Avatar size="sm">
<AvatarImage src="/img/stx-logo.png" alt="Stacks" />
<AvatarFallback>ST</AvatarFallback>
</Avatar>
<div className="space-y-1">
<h4 className="text-sm font-semibold">Title</h4>
<p className="text-sm text-muted-foreground">
Lorem ipsum dolor sit amet consectetur.
</p>
<div className="flex items-center pt-2">
<CalendarDays className="mr-2 h-4 w-4 text-muted-foreground" />
<span className="text-xs text-muted-foreground">Link</span>
</div>
</div>
</div>
</HoverCardContent>
</HoverCard>

API Reference​

HoverCard​

PropTypeDefaultDescription
openDelaynumber700Duration from when the mouse enters the trigger until the hover card opens
closeDelaynumber300Duration from when the mouse leaves the trigger or content until the hover card closes
openboolean—Controlled open state
onOpenChange(open: boolean) => void—Callback when the open state changes

HoverCardTrigger​

Wraps the element that triggers the hover card. Use asChild to merge props onto a custom element.

HoverCardContent​

PropTypeDefaultDescription
side"top" | "right" | "bottom" | "left""bottom"Preferred side of the trigger to render
sideOffsetnumber4Distance in pixels from the trigger
align"start" | "center" | "end""center"Preferred alignment against the trigger

Accessibility​

  • The hover card is intended for sighted users only; content is hidden from screen readers
  • Not suitable for essential information — use tooltips or popovers for accessible alternatives
  • Opens on hover with configurable delays
  • Closes when the pointer leaves the trigger or content area