shadcn.io is an independent project built on shadcn/ui
The trigger is a badge with an activity icon and 98.5% Uptime. The card shows System Performance, a Healthy badge, a bar filled to 98.5%, Response Time 124ms, and Error Rate 0.02%.
Use it in a status header when the badge is enough until someone asks. The bar is plain markup, not a Progress meter. In React, Base UI does not measure uptime. The numbers are fixed.
Installation
Anatomy

Usage
<HoverCard>
<HoverCardTrigger
closeDelay={100}
delay={10}
render={<button className="rounded-full" type="button" />}
>
<Badge variant="secondary">
<ActivityIcon aria-hidden="true" data-icon="inline-start" />
98.5% Uptime
</Badge>
</HoverCardTrigger>
<HoverCardContent className="w-80 max-w-full">
<div className="flex flex-col gap-3">
<div className="flex items-center justify-between">
<h4 className="font-semibold text-sm">System Performance</h4>
<Badge className="text-success" variant="outline">
Healthy
</Badge>
</div>
<div className="flex flex-col gap-2 text-sm">
<div>
<div className="mb-1 flex justify-between">
<span className="text-muted-foreground">Uptime</span>
<span className="font-medium">98.5%</span>
</div>
<div className="h-2 overflow-hidden rounded-full bg-muted">
<div className="h-full w-[98.5%] bg-success" />
</div>
</div>
<div className="flex justify-between">
<span className="text-muted-foreground">Response Time:</span>
{/* The rest of the file is under Installation. */}FAQ
What is in the card?
System Performance with a Healthy outline badge in text-success, Uptime 98.5% over a bar filled to 98.5% with bg-success, Response Time 124ms and Error Rate 0.02%.
How is the uptime badge made the trigger?
HoverCardTrigger takes the uptime badge through render, a button with its classes.
Is the uptime bar a progress bar?
No, it is two divs, a muted track and a filled bar, because the number beside it already carries the value. Use Progress when the bar has to be announced on its own.
How wide is the card?
w-80 on the card, for the extra content.
The class is on HoverCardContent.
max-w-full keeps it inside narrow screens.
How do I change how fast the card opens and closes?
The card opens a moment after the pointer rests on the trigger and stays up long enough for the pointer to move into it. Both delays are in milliseconds.
The demo sets delay 10 and closeDelay 100 on HoverCardTrigger. side and align on HoverCardContent place it.
Does the card open from the keyboard and on touch screens?
Focusing the badge opens the card, moving focus away or pressing Escape closes it. Touch screens have no hover, so keep what matters reachable elsewhere, or use a Popover when the card has to open on a tap.
API Reference
Hover Card
No extra props in this demo. The rest is on the Hover Card page.
Badge
Sets variant="secondary" and variant="outline". The rest is on the Badge page.




