Hover Card

For sighted users to preview content available behind a link.

Installation

pnpm dlx cubix@latest add hover-card

Usage

Import
import {
  HoverCard,
  HoverCardContent,
  HoverCardTrigger,
} from "@/components/cubix/hover-card"
Example
<HoverCard>
  <HoverCardTrigger render={<Button variant="link" />}>
    Hover
  </HoverCardTrigger>
  <HoverCardContent>
    The React Framework - created and maintained by @vercel.
  </HoverCardContent>
</HoverCard>

Composition

Use the following composition to build a HoverCard:

 
HoverCard
├── HoverCardTrigger
└── HoverCardContent

Trigger Delays

Use delay and closeDelay on the trigger to control when the card opens and closes. On Radix UI, set openDelay and closeDelay on HoverCard instead.

 
<HoverCard>
  <HoverCardTrigger delay={100} closeDelay={200} render={<Button variant="link" />}>
    Hover
  </HoverCardTrigger>
  <HoverCardContent>Content</HoverCardContent>
</HoverCard>

Positioning

Use the side and align props on HoverCardContent to control placement.

 
<HoverCard>
  <HoverCardTrigger render={<Button variant="link" />}>
    Hover
  </HoverCardTrigger>
  <HoverCardContent side="top" align="start">
    Content
  </HoverCardContent>
</HoverCard>

Basic

Sides

API Reference

HoverCard

PropTypeDefaultDescription
openboolean-Controlled open state. Omit to use uncontrolled mode.
defaultOpenbooleanfalseInitial open state when uncontrolled.
onOpenChange(open: boolean) => void-Called when the open state changes.
childrenReact.ReactNode-The trigger and content elements.

HoverCardTrigger

PropTypeDefaultDescription
delaynumber600Milliseconds to wait before opening (Base UI). On Radix, use openDelay on HoverCard.
closeDelaynumber300Milliseconds to wait before closing (Base UI). On Radix, use closeDelay on HoverCard.
renderReact.ReactElement-Compose the trigger onto a child element such as Button (Base UI).
asChildboolean-Compose the trigger onto a child element such as Button (Radix UI).
classNamestring-Additional Tailwind classes merged with the component styles (last one wins).

HoverCardContent

PropTypeDefaultDescription
side"top" | "right" | "bottom" | "left""bottom"Preferred side of the trigger to render the card on.
align"start" | "center" | "end""center"Alignment along the opposite axis of side.
sideOffsetnumber4Distance in pixels between the trigger and the card.
alignOffsetnumber4Offset in pixels along the alignment axis (Base UI).
classNamestring-Additional Tailwind classes merged with the component styles (last one wins).