ToroUI

Hover Card

A card that appears when hovering over a trigger element, ideal for showing preview content.


A composable hover card built on Base UI's PreviewCard primitive. It shows a positioned popup on hover with animated enter/exit transitions. Useful for displaying user profiles, link previews, or supplementary information without requiring a click.

import {
  HoverCard,
  HoverCardTrigger,
  HoverCardContent,
} from "@/components/ui/hover-card"

export default function HoverCardDemo() {
  return (
    <HoverCard>
      <HoverCardTrigger className="underline underline-offset-4 cursor-pointer">
        Hover me
      </HoverCardTrigger>
      <HoverCardContent>
        <p className="text-sm">This is a hover card with some content.</p>
      </HoverCardContent>
    </HoverCard>
  )
}

Anatomy

import {
  HoverCard,
  HoverCardTrigger,
  HoverCardContent,
} from "@/components/ui/hover-card"
<HoverCard>
  <HoverCardTrigger>Hover me</HoverCardTrigger>
  <HoverCardContent>
    <p>Preview content goes here.</p>
  </HoverCardContent>
</HoverCard>

Examples

Basic hover card

<HoverCard>
  <HoverCardTrigger render={<a href="/user/jens" />}>
    @jens
  </HoverCardTrigger>
  <HoverCardContent>
    <div className="flex gap-4">
      <Avatar>
        <AvatarImage src="/avatars/jens.png" />
        <AvatarFallback>J</AvatarFallback>
      </Avatar>
      <div className="flex flex-col gap-1">
        <p className="text-sm font-medium">Jens</p>
        <p className="text-sm text-muted-foreground">Building UI components.</p>
      </div>
    </div>
  </HoverCardContent>
</HoverCard>

Custom positioning

Adjust side, sideOffset, align, and alignOffset to control where the card appears relative to the trigger.

<HoverCard>
  <HoverCardTrigger>Hover for info</HoverCardTrigger>
  <HoverCardContent side="right" align="start" sideOffset={8}>
    <p>This card appears to the right of the trigger.</p>
  </HoverCardContent>
</HoverCard>

API Reference

HoverCard

The root component that manages hover state and delay. Wraps Base UI's PreviewCard.Root.

PropTypeDefault
openboolean
onOpenChange(open: boolean) => void
childrenReactNode

HoverCardTrigger

The element that activates the hover card on pointer enter. Wraps Base UI's PreviewCard.Trigger.

PropTypeDefault
classNamestring
childrenReactNode

HoverCardContent

The positioned popup that appears on hover. Handles portal, positioner, and popup internally.

PropTypeDefaultDescription
side"top" | "bottom" | "left" | "right""bottom"Which side of the trigger the card appears on.
sideOffsetnumber4Gap in pixels between the trigger and the card.
align"start" | "center" | "end""center"Horizontal alignment relative to the trigger.
alignOffsetnumber4Offset in pixels from the aligned edge.
classNamestring
childrenReactNode