Skip to content
Xshna.cssv1.0.0-beta.2
PlaygroundUtilities
DOCUMENTATION / INTERACTIONS
Interactions / Component reference

Dialog and modal

Native HTML dialog with focus handling and Escape support.

V1 BETA / DOCUMENTEDLive variants · API · Accessibility · Responsive guidance

Overview

Use dialog.xsh-dialog and open it using data-xsh-open="#xsh-modal-id". Use data-xsh-close within the dialog. The script restores focus to the opener.

Live example

Interactive · Real framework

Review your choice

Native modal behavior with focus management.

Example markup

<button class="xsh-btn xsh-btn-primary" data-xsh-open="#xsh-doc-dialog">Open dialog</button>
<dialog class="xsh-dialog" id="xsh-doc-dialog" aria-labelledby="xsh-dialog-title"><div class="xsh-stack"><h2 class="xsh-h2" id="xsh-dialog-title">Review your choice</h2><p class="xsh-muted">Native modal behavior with focus management.</p><div class="xsh-flex xsh-gap-3"><button class="xsh-btn xsh-btn-secondary" data-xsh-close>Cancel</button><button class="xsh-btn xsh-btn-primary" data-xsh-close>Confirm</button></div></div></dialog>

Production guidance

Always provide a meaningful accessible name and an obvious close action. Avoid nesting dialogs.

Customize this component through --xsh-* CSS tokens, data-xsh-* configuration attributes and documented xsh-* utilities. Use the optional JavaScript distribution only when an interactive behavior is needed.

EXACT NAMES FROM THE SHIPPED STYLESHEETS

Complete selector inventory

These selectors exist in the current distribution. An entry in this table does not imply that arbitrary modifier combinations are meaningful; use the examples above for the intended composition.

ClassPurposeDelivery
.xsh-dialogCore componentCSS + optional behavior
.xsh-dialog-headerComposable modifier / structure classCSS + optional behavior
ENGINEERING AND INTEGRATION

Implementation details

Semantic structure

Use showModal() for modal behavior instead of approximating a modal with a positioned div.

Compose existing xsh- classes on the appropriate HTML element. Keep content order meaningful when CSS is disabled.

Interactive behavior

A modal must restore focus to a sensible target when it closes.

Load xshna.min.js only if the documented interaction needs it. Your application remains responsible for data, persistence and business rules.

Responsive and localization

Test Escape, scroll locking, focus trapping and nested overlay conflicts.

Test 320px-wide viewports, container-constrained instances, keyboard zoom, longer translations and right-to-left text where relevant.

Theme and customization

Use --xsh-* CSS variables for theme values and data-xsh-design / data-xsh-density on the xsh-app root.

Prefer design tokens over hard-coded overrides so components remain coherent across personalities.

ACCEPTANCE CHECKLIST

What to verify before shipping

  • Confirm every documented class used by the feature exists in the release CSS.
  • Navigate controls using Tab, Shift+Tab, Enter, Space and Escape where appropriate.
  • Test with reduced motion, high contrast, 200% text zoom and a narrow mobile viewport.
  • Verify disabled, loading, empty, error and long-content states where relevant.
  • Check actual application behavior independently of the preview: these examples use illustrative data.