Hover Card
For sighted users to preview content available behind a link.
Installation
pnpm dlx cubix@latest add hover-card --base ariaUsage
import {
HoverCard,
HoverCardContent,
HoverCardTrigger,
} from "@/components/cubix/hover-card"<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
└── HoverCardContentTrigger 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
| Prop | Type | Default | Description |
|---|---|---|---|
| open | boolean | - | Controlled open state. Omit to use uncontrolled mode. |
| defaultOpen | boolean | false | Initial open state when uncontrolled. |
| onOpenChange | (open: boolean) => void | - | Called when the open state changes. |
| children | React.ReactNode | - | The trigger and content elements. |
HoverCardTrigger
| Prop | Type | Default | Description |
|---|---|---|---|
| delay | number | 600 | Milliseconds to wait before opening (Base UI). On Radix, use openDelay on HoverCard. |
| closeDelay | number | 300 | Milliseconds to wait before closing (Base UI). On Radix, use closeDelay on HoverCard. |
| render | React.ReactElement | - | Compose the trigger onto a child element such as Button (Base UI). |
| asChild | boolean | - | Compose the trigger onto a child element such as Button (Radix UI). |
| className | string | - | Additional Tailwind classes merged with the component styles (last one wins). |
HoverCardContent
| Prop | Type | Default | Description |
|---|---|---|---|
| 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. |
| sideOffset | number | 4 | Distance in pixels between the trigger and the card. |
| alignOffset | number | 4 | Offset in pixels along the alignment axis (Base UI). |
| className | string | - | Additional Tailwind classes merged with the component styles (last one wins). |