Hover Card
Panel konten mengambang yang dipicu hover untuk preview yang kaya.
bun x bosia@latest add hover-cardPanel mengambang yang dipicu hover untuk menampilkan preview yang kaya (kartu pengguna, preview tautan, dll.) saat pointer hover atau fokus pada trigger.
Preview
Props
HoverCard
| Prop | Type | Default |
|---|---|---|
open |
boolean |
false |
openDelay |
number |
700 |
closeDelay |
number |
300 |
class |
string |
"" |
HoverCardTrigger
| Prop | Type | Default |
|---|---|---|
href |
string |
undefined |
class |
string |
"" |
HoverCardContent
| Prop | Type | Default |
|---|---|---|
side |
"top" | "right" | "bottom" | "left" |
"bottom" |
align |
"start" | "center" | "end" |
"center" |
sideOffset |
number |
4 |
class |
string |
"" |
Sub-komponen
HoverCard— wrapper root, mengelola state open dan delay hoverHoverCardTrigger— tautan/elemen yang membuka kartu saat hover atau fokusHoverCardContent— panel mengambang
Penggunaan
<script lang="ts">
import { HoverCard, HoverCardTrigger, HoverCardContent } from "$lib/components/ui/hover-card";
import { Avatar, AvatarFallback } from "$lib/components/ui/avatar";
</script>
<HoverCard>
<HoverCardTrigger href="https://svelte.dev">@sveltejs</HoverCardTrigger>
<HoverCardContent class="w-80">
<div class="flex justify-between gap-4">
<Avatar src="https://github.com/sveltejs.png" alt="@sveltejs">
<AvatarFallback>SV</AvatarFallback>
</Avatar>
<div class="space-y-1">
<h4 class="text-sm font-semibold">@sveltejs</h4>
<p class="text-sm">Cybernetically enhanced web apps.</p>
</div>
</div>
</HoverCardContent>
</HoverCard>Pemosisian
Gunakan side dan align untuk menempatkan konten relatif terhadap trigger.
<HoverCardContent side="top" align="start">...</HoverCardContent>
<HoverCardContent side="right">...</HoverCardContent>
<HoverCardContent side="bottom" align="end" sideOffset={8}>...</HoverCardContent>Delay Kustom
Sesuaikan seberapa cepat kartu muncul dan menghilang saat hover.
<HoverCard openDelay={200} closeDelay={100}>
<HoverCardTrigger href="/profile">Profile</HoverCardTrigger>
<HoverCardContent>Quick preview</HoverCardContent>
</HoverCard>State Open Terkontrol
<script lang="ts">
let open = $state(false);
</script>
<HoverCard bind:open>
<HoverCardTrigger href="#">Hover me</HoverCardTrigger>
<HoverCardContent>Content</HoverCardContent>
</HoverCard>
<p>Card is {open ? "open" : "closed"}</p>