PreviewCard Primitive
PreviewCard is a Starwind Runtime primitive in the presence-floating-overlay contract family.
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 PreviewCard Runtime instance.
- Default element
- div
- Discovery hook
- data-sw-preview-card
- Role
- -
Props
open boolean -
- Description
- Controls whether PreviewCard is open.
- Kind
- control
- Targets
- root
- Full type
- boolean
defaultOpen boolean false
- Description
- Sets whether PreviewCard starts open.
- Kind
- control
- Targets
- root
- Full type
- boolean
closeDelay number 300
- Description
- Sets how long PreviewCard waits before closing.
- Kind
- option
- Targets
- -
- Full type
- number
closeOnEscape boolean true
- Description
- Closes PreviewCard when Escape is pressed.
- Kind
- option
- Targets
- -
- Full type
- boolean
closeOnOutsideInteract boolean true
- Description
- Closes PreviewCard 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 PreviewCard waits before opening.
- Kind
- option
- Targets
- -
- Full type
- number
onOpenChange (open: boolean, details: PreviewCardOpenChangeDetails) => void -
- Description
- Runs when PreviewCard opens or closes.
- Kind
- callback
- Targets
- -
- Full type
- (open: boolean, details: PreviewCardOpenChangeDetails) => void
Events
openChange onOpenChange open: boolean
- Description
- Fires when PreviewCard opens or closes.
- DOM event
- starwind:open-change
- Details type
- PreviewCardOpenChangeDetails
- Timing
- before-state-commit
- Cancelable
- Yes
State
open boolean open / defaultOpen
- Description
- Tracks whether PreviewCard is open.
- Initial attribute
- data-default-open
- Runtime getter
- getOpen
- Runtime setter
- setOpen
- State control support
- React supports controlled and default state with open and defaultOpen props. Runtime/HTML reads initial state from data-default-open, emits starwind:open-change, and updates with setOpen. Astro adapters render initial/default state, but do not expose reactive controlled-state props for this state.
Data Attributes
Runtime hooks
State
Metadata
Trigger
The control that opens, closes, or targets the PreviewCard 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 PreviewCard 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 PreviewCard 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 PreviewCard content.
- Kind
- option
- Targets
- positioner, popup
- Full type
- "top" | "right" | "bottom" | "left"
align "start" | "center" | "end" "center"
- Description
- Sets how PreviewCard content aligns to its trigger.
- Kind
- option
- Targets
- positioner, popup
- Full type
- "start" | "center" | "end"
sideOffset number 0
- Description
- Sets the distance between PreviewCard content and its trigger.
- Kind
- option
- Targets
- positioner, popup
- Full type
- number
avoidCollisions boolean true
- Description
- Allows PreviewCard 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 PreviewCard.
- 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 PreviewCard content.
- Kind
- option
- Targets
- positioner, popup
- Full type
- "top" | "right" | "bottom" | "left"
align "start" | "center" | "end" "center"
- Description
- Sets how PreviewCard content aligns to its trigger.
- Kind
- option
- Targets
- positioner, popup
- Full type
- "start" | "center" | "end"
sideOffset number 0
- Description
- Sets the distance between PreviewCard content and its trigger.
- Kind
- option
- Targets
- positioner, popup
- Full type
- number
avoidCollisions boolean true
- Description
- Allows PreviewCard 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 PreviewCard overlay.
- Default element
- div
- Discovery hook
- data-sw-preview-card-backdrop
- Role
- -
Data Attributes
Runtime hooks
State
Viewport
The visible viewport for PreviewCard 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 |