- content/vault/: _index.md, diff.md, session.md, status.md, tasks.md, wikilinks.md - content/docs/: _index.md, introduction, tokens, reset, semantic-html, components, data-attributes, navigation, layouts, charts, chroma, accordion-dialog 96 pages build clean (was 36). Docs use sidebar nav + TOC layout. Vault uses sidebar with section fallback (no vault menu configured yet). URLs fixed: playground refs → asw.trentuna.com. Closes: asw#12, asw#9
3.3 KiB
| title | description | layout | weight | type | date | tags | ai-disclosure | ai-model | ai-provider | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Accordion & Dialog | Native disclosure and modal patterns. No JavaScript required for accordion; dialog uses the native showModal() API. | docs | 45 | docs | 2026-04-09 |
|
generated | claude-sonnet-4-5 | Anthropic |
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
- Accordion uses
:not(nav details)scoping so nav dropdowns are unaffected. - Dialog backdrop uses
color-mix()for transparency — no hardcoded rgba values. - All spacing uses Open Props / ASW tokens (
--space-*,--radius-*,--shadow-*). dialog::backdropusesbackdrop-filter: blur(4px)for frosted glass effect.