Dialog Primitive
Dialog is a Starwind Runtime primitive in the dialog-native-overlay contract family.
Anatomy
Use the Astro primitive adapter to render Dialog anatomy with the Runtime wiring included.
---import { Dialog } from "@starwind-ui/astro/dialog";---
<Dialog.Root> <Dialog.Trigger>Open dialog</Dialog.Trigger> <Dialog.Backdrop /> <Dialog.Popup> <Dialog.Title>Dialog title</Dialog.Title> <Dialog.Description>Dialog description</Dialog.Description> <Dialog.Close>Close</Dialog.Close> </Dialog.Popup></Dialog.Root>Use the React primitive adapter when Dialog state participates in React rendering.
import { Dialog } from "@starwind-ui/react/dialog";
export function Example() { return ( <Dialog.Root> <Dialog.Trigger>Open dialog</Dialog.Trigger> <Dialog.Backdrop /> <Dialog.Popup> <Dialog.Title>Dialog title</Dialog.Title> <Dialog.Description>Dialog description</Dialog.Description> <Dialog.Close>Close</Dialog.Close> </Dialog.Popup> </Dialog.Root> );}Render the Dialog data-sw-* contract yourself, then initialize createDialog.
<div data-sw-dialog> <button data-sw-dialog-trigger type="button" aria-haspopup="dialog">Open dialog</button> <div data-sw-dialog-overlay hidden></div> <dialog data-sw-dialog-content role="dialog"> <h2 data-sw-dialog-title>Dialog title</h2> <p data-sw-dialog-description>Dialog description</p> <button data-sw-dialog-close type="button">Close</button> </dialog></div>
<script type="module"> import { createDialog } from "@starwind-ui/runtime/dialog";
const root = document.querySelector("[data-sw-dialog]"); if (root) { createDialog(root); }</script>API Reference
Root
The main element that owns the Dialog Runtime instance.
- Default element
- div
- Discovery hook
- data-sw-dialog
- Role
- -
Props
Prop Type Default Toggle
open boolean -
- Description
- Controls whether Dialog is open.
- Kind
- control
- Targets
- root
- Full type
- boolean
defaultOpen boolean false
- Description
- Sets whether Dialog starts open.
- Kind
- control
- Targets
- root
- Full type
- boolean
closeOnEscape boolean true
- Description
- Closes Dialog when Escape is pressed.
- Kind
- option
- Targets
- -
- Full type
- boolean
closeOnOutsideInteract boolean true
- Description
- Closes Dialog when the user interacts outside it.
- Kind
- option
- Targets
- -
- Full type
- boolean
modal boolean true
- Description
- Makes Dialog behave as a modal overlay.
- Kind
- option
- Targets
- -
- Full type
- boolean
onCloseComplete (open: boolean, details: DialogCloseCompleteDetails) => void -
- Description
- Runs after Dialog has finished closing.
- Kind
- callback
- Targets
- -
- Full type
- (open: boolean, details: DialogCloseCompleteDetails) => void
onOpenChange (open: boolean, details: DialogOpenChangeDetails) => void -
- Description
- Runs when Dialog opens or closes.
- Kind
- callback
- Targets
- -
- Full type
- (open: boolean, details: DialogOpenChangeDetails) => void
Events
Event Callback Value Toggle
openChange onOpenChange open: boolean
- Description
- Fires when Dialog opens or closes.
- DOM event
- starwind:open-change
- Details type
- DialogOpenChangeDetails
- Timing
- before-state-commit
- Cancelable
- Yes
closeComplete onCloseComplete open: boolean
- Description
- Fires after Dialog has finished closing.
- DOM event
- starwind:close-complete
- Details type
- DialogCloseCompleteDetails
- Timing
- after-state-commit
- Cancelable
- No
State
State Type Props Toggle
open boolean open / defaultOpen
- Description
- Tracks whether Dialog 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 starwind:close-complete, 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
Attribute Value Description
data-sw-dialog - Marks the Root part so Starwind Runtime can find it.
State
Attribute Value Description
data-state - Reflects the current state on the Root part.
Metadata
Attribute Value Description
data-default-open - Reflects the default open prop on the Root part.
data-close-on-escape - Reflects the close on escape prop on the Root part.
data-close-on-outside-interact - Reflects the close on outside interact prop on the Root part.
data-modal - Reflects the modal prop on the Root part.
Trigger
The control that opens, closes, or targets the Dialog content.
- Default element
- button
- Discovery hook
- data-sw-dialog-trigger
- Role
- -
Props
Prop Type Default Toggle
targetId string -
- Description
- Targets a specific root element by id.
- Kind
- attribute
- Targets
- trigger
- Full type
- string
Data Attributes
Runtime hooks
Attribute Value Description
data-sw-dialog-trigger - Marks the Trigger part so Starwind Runtime can find it.
State
Attribute Value Description
data-state - Reflects the current state on the Trigger part.
Metadata
Attribute Value Description
data-sw-dialog-target-id - Reflects the sw dialog target id prop on the Trigger part.
Backdrop
The backdrop shown behind the Dialog overlay.
- Default element
- div
- Discovery hook
- data-sw-dialog-overlay
- Role
- -
Data Attributes
Runtime hooks
Attribute Value Description
data-sw-dialog-overlay - Marks the Backdrop part so Starwind Runtime can find it.
State
Attribute Value Description
data-state - Reflects the current state on the Backdrop part.
Popup
The floating content container for Dialog.
- Default element
- dialog
- Discovery hook
- data-sw-dialog-content
- Role
- dialog
Data Attributes
Runtime hooks
Attribute Value Description
data-sw-dialog-content - Marks the Popup part so Starwind Runtime can find it.
State
Attribute Value Description
data-state - Reflects the current state on the Popup part.
Title
The accessible title for Dialog.
- Default element
- h2
- Discovery hook
- data-sw-dialog-title
- Role
- -
Data Attributes
Runtime hooks
Attribute Value Description
data-sw-dialog-title - Marks the Title part so Starwind Runtime can find it.
Description
Supporting description text for Dialog.
- Default element
- p
- Discovery hook
- data-sw-dialog-description
- Role
- -
Data Attributes
Runtime hooks
Attribute Value Description
data-sw-dialog-description - Marks the Description part so Starwind Runtime can find it.
Close
A control that closes Dialog.
- Default element
- button
- Discovery hook
- data-sw-dialog-close
- Role
- -
Data Attributes
Runtime hooks
Attribute Value Description
data-sw-dialog-close - Marks the Close part so Starwind Runtime can find it.
Runtime API
- Factory
createDialog- Import
@starwind-ui/runtime/dialog- Root hook
- root
data-sw-dialog - Option props
- closeOnEscape, closeOnOutsideInteract, defaultOpen, modal, onCloseComplete, onOpenChange, open
Option Lifecycles
| Option | Lifecycle |
|---|---|
| closeOnEscape | constructor-only |
| closeOnOutsideInteract | constructor-only |
| defaultOpen | constructor-only |
| modal | constructor-only |
| onCloseComplete | constructor-only |
| onOpenChange | constructor-only |
| open | setter-backed |
Runtime Setters
Method Target Description
setOpen state: open Opens or closes Dialog from Runtime code.
Related Styled Components
Component Relationship
Dialog Direct primitive