Preview Card Primitive
Preview Card is a Starwind Runtime primitive in the presence-floating-overlay contract family. Astro and React share one semantic component API. React coordinates reactive state through controlled and default props plus callbacks. Astro renders initial state and coordinates later changes through DOM events and Runtime methods. Raw HTML uses Runtime attributes, DOM events, and imperative methods.
Anatomy
Use the Astro primitive adapter to render PreviewCard anatomy with the Runtime wiring included.
---import { PreviewCard } from "@starwind-ui/astro/preview-card";---
<PreviewCard.Root> <PreviewCard.Trigger>Preview profile</PreviewCard.Trigger> <PreviewCard.Positioner> <PreviewCard.Popup> <PreviewCard.Arrow /> </PreviewCard.Popup> </PreviewCard.Positioner></PreviewCard.Root>Use the React primitive adapter when PreviewCard state participates in React rendering.
import { PreviewCard } from "@starwind-ui/react/preview-card";
export function Example() { return ( <PreviewCard.Root> <PreviewCard.Trigger>Preview profile</PreviewCard.Trigger> <PreviewCard.Positioner> <PreviewCard.Popup> <PreviewCard.Arrow /> </PreviewCard.Popup> </PreviewCard.Positioner> </PreviewCard.Root> );}Render the PreviewCard data-sw-* contract yourself, then initialize createPreviewCard.
<div data-sw-preview-card> <button data-sw-preview-card-trigger type="button">Preview profile</button> <div data-sw-preview-card-positioner> <div data-sw-preview-card-popup role="tooltip" hidden> <div data-sw-preview-card-arrow></div> </div> </div></div>
<script type="module"> import { createPreviewCard } from "@starwind-ui/runtime/preview-card";
const root = document.querySelector("[data-sw-preview-card]"); if (root) { createPreviewCard(root); }</script>Floating Behavior
| Fact | Value |
|---|---|
| Anchor part | trigger |
| Positioner part | positioner |
| Popup part | popup |
| Portal part | portal |
| Option props | side, align, sideOffset, avoidCollisions |
API Reference
Root
The main element that owns the Preview Card Runtime instance.
- Default element
- div
- Discovery hook
- data-sw-preview-card
- Role
- -
Props
open boolean -
- Description
- Controls whether Preview Card is open.
- Kind
- control
- Targets
- root
- Full type
- boolean
- React
Use open for controlled state and defaultOpen for default state, and onOpenChange for change proposals.
opendefaultOpenonOpenChange
- Astro
Use open or defaultOpen for initial state, listen for starwind:open-change, and call setOpen for later updates.
opendefaultOpenstarwind:open-changesetOpen
- Runtime / HTML
Use data-default-open for initial state, listen for starwind:open-change, and call setOpen for later updates.
data-default-openstarwind:open-changesetOpen
defaultOpen boolean false
- Description
- Sets whether Preview Card starts open.
- Kind
- control
- Targets
- root
- Full type
- boolean
- React
Use open for controlled state and defaultOpen for default state, and onOpenChange for change proposals.
opendefaultOpenonOpenChange
- Astro
Use open or defaultOpen for initial state, listen for starwind:open-change, and call setOpen for later updates.
opendefaultOpenstarwind:open-changesetOpen
- Runtime / HTML
Use data-default-open for initial state, listen for starwind:open-change, and call setOpen for later updates.
data-default-openstarwind:open-changesetOpen
closeDelay number 300
- Description
- Sets how long Preview Card waits before closing.
- Kind
- option
- Targets
- -
- Full type
- number
closeOnEscape boolean true
- Description
- Closes Preview Card when Escape is pressed.
- Kind
- option
- Targets
- -
- Full type
- boolean
closeOnOutsideInteract boolean true
- Description
- Closes Preview Card when the user interacts outside it.
- Kind
- option
- Targets
- -
- Full type
- boolean
disableHoverableContent boolean false
- Description
- Configures the disable hoverable content option for the Root part.
- Kind
- option
- Targets
- root
- Full type
- boolean
openDelay number 600
- Description
- Sets how long Preview Card waits before opening.
- Kind
- option
- Targets
- -
- Full type
- number
onOpenChange (open: boolean, details: PreviewCardOpenChangeDetails) => void -
- Description
- Runs when Preview Card opens or closes.
- Kind
- callback
- Targets
- -
- Full type
- (open: boolean, details: PreviewCardOpenChangeDetails) => void
- React
Use open for controlled state and defaultOpen for default state, and onOpenChange for change proposals.
opendefaultOpenonOpenChange
- Astro
Use open or defaultOpen for initial state, listen for starwind:open-change, and call setOpen for later updates.
opendefaultOpenstarwind:open-changesetOpen
- Runtime / HTML
Use data-default-open for initial state, listen for starwind:open-change, and call setOpen for later updates.
data-default-openstarwind:open-changesetOpen
Events
openChange onOpenChange open: boolean
- Description
- Fires when Preview Card opens or closes.
- DOM event
- starwind:open-change
- Details type
- PreviewCardOpenChangeDetails
- Timing
- before-state-commit
- Cancelable
- Yes
- Cancellation sequence
- Check internal eligibility and intent.
- Create one details object for the proposal.
- Call the Runtime callback with the details object when the controller exposes one.
- Dispatch the cancelable DOM event with the same details object, including when the callback canceled it.
- Read details.isCanceled, including cancellation caused by preventDefault().
- Apply the accepted state.
- Notify Runtime subscribers and other accepted-only observers.
State
open boolean open / defaultOpen
- Description
- Tracks whether Preview Card is open.
- Initial attribute
- data-default-open
- Runtime getter
- getOpen
- Runtime setter
- setOpen
- React
Use open for controlled state and defaultOpen for default state, and onOpenChange for change proposals.
opendefaultOpenonOpenChange
- Astro
Use open or defaultOpen for initial state, listen for starwind:open-change, and call setOpen for later updates.
opendefaultOpenstarwind:open-changesetOpen
- Runtime / HTML
Use data-default-open for initial state, listen for starwind:open-change, and call setOpen for later updates.
data-default-openstarwind:open-changesetOpen
Data Attributes
Runtime hooks
State
Metadata
Trigger
The control that opens, closes, or targets the Preview Card content.
- Default element
- button
- Discovery hook
- data-sw-preview-card-trigger
- Role
- -
Props
asChild boolean -
- Description
- Merges behavior onto your child element instead of rendering the default Trigger element.
- Kind
- rendering
- Targets
- trigger
- Full type
- boolean
disabled boolean false
- Description
- Disables the Trigger part.
- Kind
- option
- Targets
- trigger
- Full type
- boolean
Data Attributes
Runtime hooks
State
Metadata
Portal
Moves Preview Card overlay content to the document body when needed.
- Default element
- div
- Discovery hook
- data-sw-preview-card-portal
- Role
- -
Data Attributes
Runtime hooks
Positioner
Positions the Preview Card content relative to its trigger.
- Default element
- div
- Discovery hook
- data-sw-preview-card-positioner
- Role
- -
Props
side "top" | "right" | "bottom" | "left" "bottom"
- Description
- Sets the preferred side for Preview Card content.
- Kind
- option
- Targets
- positioner, popup
- Full type
- "top" | "right" | "bottom" | "left"
align "start" | "center" | "end" "center"
- Description
- Sets how Preview Card content aligns to its trigger.
- Kind
- option
- Targets
- positioner, popup
- Full type
- "start" | "center" | "end"
sideOffset number 0
- Description
- Sets the distance between Preview Card content and its trigger.
- Kind
- option
- Targets
- positioner, popup
- Full type
- number
avoidCollisions boolean true
- Description
- Allows Preview Card content to shift or flip to stay visible.
- Kind
- option
- Targets
- positioner, popup
- Full type
- boolean
Data Attributes
Runtime hooks
State
Metadata
Popup
The floating content container for Preview Card.
- Default element
- div
- Discovery hook
- data-sw-preview-card-popup
- Role
- tooltip
Props
side "top" | "right" | "bottom" | "left" "bottom"
- Description
- Sets the preferred side for Preview Card content.
- Kind
- option
- Targets
- positioner, popup
- Full type
- "top" | "right" | "bottom" | "left"
align "start" | "center" | "end" "center"
- Description
- Sets how Preview Card content aligns to its trigger.
- Kind
- option
- Targets
- positioner, popup
- Full type
- "start" | "center" | "end"
sideOffset number 0
- Description
- Sets the distance between Preview Card content and its trigger.
- Kind
- option
- Targets
- positioner, popup
- Full type
- number
avoidCollisions boolean true
- Description
- Allows Preview Card content to shift or flip to stay visible.
- Kind
- option
- Targets
- positioner, popup
- Full type
- boolean
Data Attributes
Runtime hooks
State
Metadata
Arrow
The arrow element that visually points to the trigger.
- Default element
- div
- Discovery hook
- data-sw-preview-card-arrow
- Role
- -
Data Attributes
Runtime hooks
State
Backdrop
The backdrop shown behind the Preview Card overlay.
- Default element
- div
- Discovery hook
- data-sw-preview-card-backdrop
- Role
- -
Data Attributes
Runtime hooks
State
Viewport
The visible viewport for Preview Card content.
- Default element
- div
- Discovery hook
- data-sw-preview-card-viewport
- Role
- -
Data Attributes
Runtime hooks
State
Runtime API
- Factory
createPreviewCard- Import
@starwind-ui/runtime/preview-card- Root hook
- root
data-sw-preview-card - Option props
- closeDelay, closeOnEscape, closeOnOutsideInteract, defaultOpen, disableHoverableContent, onOpenChange, open, openDelay
Option Lifecycles
| Option | Lifecycle |
|---|---|
| closeDelay | constructor-only |
| closeOnEscape | constructor-only |
| closeOnOutsideInteract | constructor-only |
| defaultOpen | constructor-only |
| disableHoverableContent | constructor-only |
| onOpenChange | constructor-only |
| open | setter-backed |
| openDelay | constructor-only |
Runtime Setters
Related Styled Components
Changelog
View version history v1.0.0 3 releases
v1.0.0
- Promoted this Primitive's vendoring version to the stable 1.0.0 baseline. Its existing API and Runtime behavior carry forward from the previous release.
v0.1.1
- Marked generated React Primitive files as client modules so vendored installs preserve client boundaries in React server frameworks.
- Kept generated React state-change callbacks and DOM events cancelable until the Runtime accepts the proposed state, then synchronized rendered state.
v0.1.0
- Introduced hover and focus timing, floating placement, presence, and dismissal for preview content.