Skip to content

HoverCard

A floating card that appears on hover or focus of a trigger element.

Account health
<HoverCard {...args} content={previewContent}>
Account health
</HoverCard>
<HoverCard
{...args}
content={
<VStack gap={2} style={{maxWidth: 260}}>
<Text as="p" type="label">
Workspace
</Text>
<Text as="p" color="secondary">
12 members, 4 pending invites
</Text>
</VStack>
}>
<Button label="Workspace" />
</HoverCard>
Above
StartEnd
Below
<div
style={{
display: 'grid',
gap: 24,
justifyItems: 'center',
padding: '80px',
}}>
<HoverCard content={previewContent} placement="above">
Above
</HoverCard>
<HStack gap={6}>
<HoverCard content={previewContent} placement="start">
Start
</HoverCard>
<HoverCard content={previewContent} placement="end">
End
</HoverCard>
</HStack>
<HoverCard content={previewContent} placement="below">
Below
</HoverCard>
</div>
Start alignedCenter alignedEnd aligned
<VStack gap={4} style={{padding: 40}}>
<HoverCard alignment="start" content={previewContent} placement="below">
Start aligned
</HoverCard>
<HoverCard alignment="center" content={previewContent} placement="below">
Center aligned
</HoverCard>
<HoverCard alignment="end" content={previewContent} placement="below">
End aligned
</HoverCard>
</VStack>
Hover me (disabled)
<HoverCard {...args} content={previewContent} isEnabled={false}>
Hover me (disabled)
</HoverCard>
<HoverCard
{...args}
content={
<VStack gap={3} style={{maxWidth: 280}}>
<VStack gap={1}>
<Text as="p" type="label">
Jane Smith
</Text>
<Text as="p" color="secondary">
Product Designer at Acme Corp
</Text>
</VStack>
<HStack gap={2}>
<Button label="View profile" size="sm" variant="secondary" />
<Button label="Message" size="sm" variant="primary" />
</HStack>
</VStack>
}>
<Button label="Jane Smith" variant="ghost" />
</HoverCard>
No underline on hoverAlways underline on hoverAuto (text triggers only)
<div
style={{
display: 'flex',
flexDirection: 'column',
alignItems: 'start',
gap: 16,
}}>
<HoverCard content={previewContent} hoverIndication="never">
No underline on hover
</HoverCard>
<HoverCard content={previewContent} hoverIndication="always">
Always underline on hover
</HoverCard>
<HoverCard content={previewContent} hoverIndication="auto">
Auto (text triggers only)
</HoverCard>
</div>
Slow open (800ms), slow close (500ms)
<HoverCard {...args} content={previewContent} delay={800} hideDelay={500}>
Slow open (800ms), slow close (500ms)
</HoverCard>

A floating card that appears on hover or focus of a trigger element.

PropTypeDefaultDescription
alignment"center" | "end" | "start"'center'Alignment along the placement axis.
children*ReactNodeTrigger content.
classNamestringAdditional class names applied to the trigger wrapper for text triggers.
content*ReactNodeContent shown in the floating hover card.
data-testidstringTest ID applied to the trigger wrapper for text triggers.
delaynumber300Delay before opening on hover, in milliseconds.
focusTrigger"auto" | "always" | "never"'auto'Controls focus-trigger behavior.
hideDelaynumber200Delay before closing after hover/focus leaves, in milliseconds.
hoverIndication'always' | 'auto' | 'never''auto'Dashed underline display for text triggers.
isEnabledbooleantrueWhether hover/focus interactions are enabled.
placement"end" | "start" | "above" | "below"'above'Position relative to the trigger.
refRef<HTMLSpanElement>Ref forwarded to the text trigger wrapper.
styleCSSPropertiesInline styles applied to the text trigger wrapper.