Primitive / Moleculebeta
Hover Card
Preview card that appears on hover or focus with configurable delays and placement.
@glinui/uiComponent: hover-card
Installation$
Package Manager$
pnpm add @glinui/ui @glinui/tokensRegistry$
pnpm dlx @glinui/cli@latest add hover-cardUsage$
TSX
1import { Avatar, HoverCard, HoverCardContent, HoverCardTrigger } from "@glinui/ui"23export function HoverCardBasicDemo() {4return (5 <HoverCard>6 <HoverCardTrigger asChild>7 <button className="inline-flex items-center gap-2 text-sm font-medium underline decoration-dotted underline-offset-4">8 <Avatar fallback="GL" size="sm" />9 @glinui10 </button>11 </HoverCardTrigger>12 <HoverCardContent>13 <div className="space-y-1">14 <p className="text-sm font-semibold">@glinui</p>15 <p className="text-xs text-neutral-600 dark:text-neutral-300">16 Glass-first component system for modern interfaces.17 </p>18 </div>19 </HoverCardContent>20 </HoverCard>21)22}
Examples$
Delays and Surfaces$
TSX
1import { Badge, HoverCard, HoverCardContent, HoverCardTrigger } from "@glinui/ui"23export function HoverCardDelayDemo() {4return (5 <div className="flex flex-wrap items-center gap-4">6 <HoverCard openDelay={0} closeDelay={150}>7 <HoverCardTrigger asChild>8 <button className="text-sm font-medium underline decoration-dotted underline-offset-4">9 Instant preview10 </button>11 </HoverCardTrigger>12 <HoverCardContent variant="glass" size="sm">13 <div className="space-y-2">14 <Badge variant="glass">glass</Badge>15 <p className="text-xs text-neutral-600 dark:text-neutral-300">Open delay: 0ms</p>16 </div>17 </HoverCardContent>18 </HoverCard>19 <HoverCard openDelay={500} closeDelay={250}>20 <HoverCardTrigger asChild>21 <button className="text-sm font-medium underline decoration-dotted underline-offset-4">22 Delayed preview23 </button>24 </HoverCardTrigger>25 <HoverCardContent variant="outline" size="md">26 <p className="text-xs text-neutral-600 dark:text-neutral-300">27 Opens after 500ms with outline surface.28 </p>29 </HoverCardContent>30 </HoverCard>31 </div>32)33}
Accessibility$
- Opens on both hover and keyboard focus.
- Use concise supplemental content, not primary actions.
- Keep the trigger semantic and focusable (
button,a, etc.). - For interactive panels, prefer
Popover.
Reduced Motion$
Hover-card enter and exit transitions respect prefers-reduced-motion.
API Reference$
HoverCard$
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
closeDelay | number | No | 100 | Delay in ms before closing when pointer leaves. |
openDelay | number | No | 200 | Delay in ms before opening on pointer/focus. |
HoverCardContent$
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
side | "top" | "right" | "bottom" | "left" | No | - | Preferred side for the hover card. |
sideOffset | number | No | 10 | Gap in px between trigger and content. |
size | "sm" | "md" | "lg" | No | "md" | Variant option from hoverCardContentVariants. |
variant | "default" | "glass" | "outline" | "ghost" | No | "glass" | Variant option from hoverCardContentVariants. |
Source$
TSX
1import { HoverCard, HoverCardTrigger, HoverCardContent } from "@glinui/ui"
packages/ui/src/components/hover-card.tsx
packages/ui/src/tests/hover-card.test.tsx
Generated API Snapshot
Beta
Generated API Snapshot
BetaAuto-extracted from TypeScript source in packages/ui/src/components/hover-card.tsx. This section is in beta and may lag behind hand-curated docs. Regenerate with pnpm --filter @glinui/docs api:generate.
Generated: 2026-02-19T17:59:28.468Z · Full index: /docs/api-metadata
Primary Props Type
HoverCardProps
HoverCardContentProps
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
side | "top" | "right" | "bottom" | "left" | No | - | Preferred side for the hover card. |
sideOffset | number | No | 10 | Gap in px between trigger and content. |
size | "sm" | "md" | "lg" | No | "md" | Variant option from hoverCardContentVariants. |
variant | "default" | "glass" | "outline" | "ghost" | No | "glass" | Variant option from hoverCardContentVariants. |
HoverCardProps
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
closeDelay | number | No | 100 | Delay in ms before closing when pointer leaves. |
openDelay | number | No | 200 | Delay in ms before opening on pointer/focus. |