Accordion & Dialog

Native disclosure and modal patterns. No JavaScript required for accordion; dialog uses the native showModal() API.

Accordion

Style native <details>/<summary> elements. No JS needed — the browser handles open/close state.

<details>
  <summary>What is agentic HTML?</summary>
  <p>Agentic HTML is structured markup generated by AI agents — semantic, predictable, and styled without classes.</p>
</details>

Live example:

What is agentic HTML?

Agentic HTML is structured markup generated by AI agents — semantic, predictable, and styled without classes.

Why no classes?

Language models reliably produce semantic HTML. Class names require memorisation and drift. Data-attributes are explicit and grep-friendly.


Grouped Accordion

Wrap in <div data-role="accordion"> for flush connected borders.

<div data-role="accordion">
  <details>
    <summary>Reset layer</summary>
    <p>Normalises browser defaults without imposing opinions.</p>
  </details>
  <details>
    <summary>Token layer</summary>
    <p>Open Props foundation plus ASW semantic aliases.</p>
  </details>
  <details open>
    <summary>Components layer</summary>
    <p>Buttons, forms, accordion, dialog — all zero-class.</p>
  </details>
</div>

Live example:

Reset layer

Normalises browser defaults without imposing opinions.

Token layer

Open Props foundation plus ASW semantic aliases.

Components layer

Buttons, forms, accordion, dialog — all zero-class.


Dialog

Native <dialog> element. Use dialog.showModal() for a modal with backdrop, or dialog.show() for a non-modal popover.

<dialog id="demo-dialog">
  <header><h2>Confirm action</h2></header>
  <p>Are you sure you want to proceed? This cannot be undone.</p>
  <footer>
    <button onclick="document.getElementById('demo-dialog').close()">Cancel</button>
    <button onclick="document.getElementById('demo-dialog').close()">Confirm</button>
  </footer>
</dialog>

<button onclick="document.getElementById('demo-dialog').showModal()">Open dialog</button>

Live example:

Confirm action

Are you sure you want to proceed? This cannot be undone.


Notes