Preview Card

A popup that appears when a link is hovered, showing a preview for sighted users.

The principles of good typography remain into the digital age.

API reference

Import the component and assemble its parts:

Anatomy

Root

Groups all parts of the preview card. Doesn’t render its own HTML element.

PropTypeDefault
defaultOpen

boolean

false

open

boolean

undefined

onOpenChange

((open: boolean, event: Event | undefined, reason: OpenChangeReason | undefined) => void)

undefined

actionsRef

RefObject<Actions>

undefined

onOpenChangeComplete

((open: boolean) => void)

undefined

delay

number

600

closeDelay

number

300

children

ReactNode

undefined

Trigger

A link that opens the preview card. Renders an <a> element.

PropTypeDefault
className

string | ((state: State) => string)

undefined

render

| ReactElement
| ((props: GenericHTMLProps, state: State) => ReactElement)

undefined

Attribute
Description
data-popup-open

Portal

A portal element that moves the popup to a different part of the DOM. By default, the portal element is appended to <body>.

PropTypeDefault
container

| HTMLElement
| RefObject<HTMLElement
| null>
| null

undefined

children

ReactNode

undefined

keepMounted

boolean

false

Backdrop

An overlay displayed beneath the popup. Renders a <div> element.

PropTypeDefault
className

string | ((state: State) => string)

undefined

render

| ReactElement
| ((props: GenericHTMLProps, state: State) => ReactElement)

undefined

Attribute
Description
data-open
data-closed
data-starting-style
data-ending-style

Positioner

Positions the popup against the trigger. Renders a <div> element.

PropTypeDefault
align

'center' | 'end' | 'start'

'center'

alignOffset

number | OffsetFunction

0

side

Side

'bottom'

sideOffset

number | OffsetFunction

0

arrowPadding

number

5

anchor

| Element
| RefObject<Element
| null>
| VirtualElement
| (() => Element | VirtualElement | null)
| null

undefined

collisionBoundary

Boundary

'clipping-ancestors'

collisionPadding

Padding

5

sticky

boolean

false

positionMethod

'fixed' | 'absolute'

'absolute'

trackAnchor

boolean

true

className

string | ((state: State) => string)

undefined

render

| ReactElement
| ((props: GenericHTMLProps, state: State) => ReactElement)

undefined

Attribute
Description
data-open
data-closed
data-anchor-hidden
data-side
CSS Variable
Description
--anchor-height
--anchor-width
--available-height
--available-width
--transform-origin

A container for the preview card contents. Renders a <div> element.

PropTypeDefault
className

string | ((state: State) => string)

undefined

render

| ReactElement
| ((props: GenericHTMLProps, state: State) => ReactElement)

undefined

Attribute
Description
data-open
data-closed
data-side
data-starting-style
data-ending-style

Arrow

Displays an element positioned against the preview card anchor. Renders a <div> element.

PropTypeDefault
className

string | ((state: State) => string)

undefined

render

| ReactElement
| ((props: GenericHTMLProps, state: State) => ReactElement)

undefined

Attribute
Description
data-open
data-closed
data-uncentered
data-anchor-hidden
data-side