ZaidanHomeDocsComponentsBlocksChartsTypesetCreate

Command Palette

Search for a command to run...

GitHub
New
Sections
  • Introduction
  • Components
  • Blocks
  • Installation
  • Customization
  • Dark Mode
  • Typeset
  • Zaidan Skills
  • FAQ
  • Roadmap
  • Changelog
Installation
  • Astro
  • Manual
  • Solid Start
  • TanStack Router
  • TanStack Start
  • Vite
Blocks
  • Data Grid
  • Event Calendar
  • Filters
  • Gantt
  • Image Crop
  • Kanban
  • Message Scroller
  • Questionnaire
  • Sortable
Components
  • Accordion
  • Alert
  • Alert Dialog
  • Aspect Ratio
  • Attachment
  • Avatar
  • Badge
  • Breadcrumb
  • Bubble
  • Button
  • Button Group
  • Calendar
  • Card
  • Carousel
  • Chart
  • Checkbox
  • Collapsible
  • Combobox
  • Command
  • Context Menu
  • Dialog
  • Drawer
  • Dropdown Menu
  • Empty
  • Field
  • Hover Card
  • Input
  • Input Group
  • Input OTP
  • Item
  • Kbd
  • Label
  • Marker
  • Menubar
  • Message
  • Native Select
  • Navigation Menu
  • Pagination
  • Popover
  • Progress
  • Radio Group
  • Resizable
  • Scroll Area
  • Select
  • Separator
  • Sheet
  • Sidebar
  • Skeleton
  • Slider
  • Spinner
  • Switch
  • Table
  • Tabs
  • Textarea
  • Toast
  • Toggle
  • Toggle Group
  • Tooltip

Hover Card

For sighted users to preview content available behind a link.

Kobalte
Kobalte

The Hover Card component is built on top of Kobalte Hover Card, which provides accessible hover, focus, and keyboard behavior.

1
import { Button } from "~/components/ui/button";
2
import { HoverCard, HoverCardContent, HoverCardTrigger } from "~/components/ui/hover-card";
3
4
export default function HoverCardDemo() {
5
return (
6
<HoverCard openDelay={10} closeDelay={100}>
7
<HoverCardTrigger as={Button} variant="link">
8
Hover Here
9
</HoverCardTrigger>
10
<HoverCardContent class="flex w-64 flex-col gap-0.5">
11
<div class="font-semibold">@nextjs</div>
12
<div>The React Framework – created and maintained by @vercel.</div>
13
<div class="mt-1 text-muted-foreground text-xs">Joined December 2021</div>
14
</HoverCardContent>
15
</HoverCard>
16
);
17
}

Installation

pnpm dlx shadcn@latest add @zaidan/hover-card
npx shadcn@latest add @zaidan/hover-card
yarn dlx shadcn@latest add @zaidan/hover-card
bunx --bun shadcn@latest add @zaidan/hover-card

Usage

1
import {
2
HoverCard,
3
HoverCardContent,
4
HoverCardTrigger,
5
} from "~/components/ui/hover-card";
1
<HoverCard>
2
<HoverCardTrigger>Hover</HoverCardTrigger>
3
<HoverCardContent>
4
The React Framework – created and maintained by @vercel.
5
</HoverCardContent>
6
</HoverCard>

Composition

Use the following composition to build a HoverCard:

HoverCard
├── HoverCardTrigger
└── HoverCardContent

Trigger Delays

Use openDelay and closeDelay on HoverCard to control when the card opens and closes.

1
<HoverCard openDelay={100} closeDelay={200}>
2
<HoverCardTrigger>Hover</HoverCardTrigger>
3
<HoverCardContent>Content</HoverCardContent>
4
</HoverCard>

Positioning

Use the placement prop on HoverCard to control where the content appears relative to the trigger.

1
<HoverCard placement="top-start">
2
<HoverCardTrigger>Hover</HoverCardTrigger>
3
<HoverCardContent>Content</HoverCardContent>
4
</HoverCard>

Basic

1
import { Button } from "~/components/ui/button";
2
import { HoverCard, HoverCardContent, HoverCardTrigger } from "~/components/ui/hover-card";
3
4
export default function HoverCardDemo() {
5
return (
6
<HoverCard openDelay={10} closeDelay={100}>
7
<HoverCardTrigger as={Button} variant="link">
8
Hover Here
9
</HoverCardTrigger>
10
<HoverCardContent class="flex w-64 flex-col gap-0.5">
11
<div class="font-semibold">@nextjs</div>
12
<div>The React Framework – created and maintained by @vercel.</div>
13
<div class="mt-1 text-muted-foreground text-xs">Joined December 2021</div>
14
</HoverCardContent>
15
</HoverCard>
16
);
17
}

Sides

1
import { For } from "solid-js";
2
import { Button } from "~/components/ui/button";
3
import { HoverCard, HoverCardContent, HoverCardTrigger } from "~/components/ui/hover-card";
4
5
const HOVER_CARD_SIDES = ["left", "top", "bottom", "right"] as const;
6
7
export default function HoverCardSides() {
8
return (
9
<div class="flex flex-wrap justify-center gap-2">
10
<For each={HOVER_CARD_SIDES}>
11
{(side) => (
12
<HoverCard openDelay={100} closeDelay={100} placement={side}>
13
<HoverCardTrigger as={Button} variant="outline" class="capitalize">
14
{side}
15
</HoverCardTrigger>
16
<HoverCardContent>
17
<div class="flex flex-col gap-1">
18
<h4 class="font-medium">Hover Card</h4>
19
<p>This hover card appears on the {side} side of the trigger.</p>
20
</div>
21
</HoverCardContent>
22
</HoverCard>
23
)}
24
</For>
25
</div>
26
);
27
}

API Reference

See the Kobalte Hover Card API reference for primitive props, keyboard behavior, and accessibility details.

On This Page

  • Installation
  • Usage
  • Composition
  • Trigger Delays
  • Positioning
  • Basic
  • Sides
  • API Reference
Built by Kevin Abatan. The source code is available on GitHub.