Skip to main content

Starwind UI v3.0 beta is now available! Read the migration guide

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>

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.

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

OptionLifecycle
closeOnEscapeconstructor-only
closeOnOutsideInteractconstructor-only
defaultOpenconstructor-only
modalconstructor-only
onCloseCompleteconstructor-only
onOpenChangeconstructor-only
opensetter-backed

Runtime Setters

Method Target Description
setOpen state: open Opens or closes Dialog from Runtime code.
Component Relationship
Dialog Direct primitive