Installation
tokens.css + reasoning.css + host-chrome.csshead.html
<link rel="stylesheet" href="tokens.css">
<link rel="stylesheet" href="components/reasoning/reasoning.css">Summary
Preview
Reasoning
Checking the order status before answering.
Code
reasoning.html
<details class="au-reasoning" data-au-component="reasoning" data-au-variant="ghost" data-au-mode="summary" open><summary class="au-reasoning__trigger"><span class="au-reasoning__chevron" aria-hidden="true"></span><span class="au-reasoning__label">Reasoning</span><span class="au-reasoning__meta">done</span></summary><div class="au-reasoning__content"><div class="au-reasoning__text"><p>Checking the order status before answering.</p></div></div></details>Steps
Preview
Thinking
Searched the web
Read 3 sources
Explored 6 files
- Read accordion.tsx
- Read icon-context.tsx
- Read badge.tsx
- Read use-proximity-hover.ts
- Read components.ts
- Read postbuild-registry.mjs
Done
Code
reasoning.html
<details class="au-thinking-steps" open><summary>Thinking</summary><div class="au-thinking-step" data-au-state="success"><span class="au-thinking-step__dot" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="m21 21-4.35-4.35M19 11a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z"/></svg></span><span class="au-thinking-step__label">Searched the web</span></div><div class="au-thinking-step" data-au-state="success"><span class="au-thinking-step__dot" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2 12h20M2 12c0 5.523 4.477 10 10 10M2 12C2 6.477 6.477 2 12 2m10 10c0 5.523-4.477 10-10 10m10-10c0-5.523-4.477-10-10-10m0 0a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10m0-20a15.3 15.3 0 0 0-4 10 15.3 15.3 0 0 0 4 10"/></svg></span><span class="au-thinking-step__label">Read 3 sources</span><details class="au-thinking-step__more"><summary>Explored 6 files</summary><ul><li>Read accordion.tsx</li><li>Read icon-context.tsx</li><li>Read badge.tsx</li><li>Read use-proximity-hover.ts</li><li>Read components.ts</li><li>Read postbuild-registry.mjs</li></ul></details></div><div class="au-thinking-step" data-au-state="success"><span class="au-thinking-step__dot" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg></span><span class="au-thinking-step__label">Done</span></div></details>Minimal
Preview
Thinking
Ran a command
Done
Code
reasoning.html
<details class="au-thinking-steps" open><summary>Thinking</summary><div class="au-thinking-step" data-au-state="success"><span class="au-thinking-step__dot" aria-hidden="true"></span><span class="au-thinking-step__label">Ran a command</span></div><div class="au-thinking-step" data-au-state="success"><span class="au-thinking-step__dot" aria-hidden="true"></span><span class="au-thinking-step__label">Done</span></div></details>Streaming
Preview
Thinking
Read the repository
Prepare release notes
Code
reasoning.html
<details class="au-thinking-steps" open><summary>Thinking</summary><div class="au-thinking-step" data-au-state="success"><span class="au-thinking-step__dot" aria-hidden="true"></span><span class="au-thinking-step__label">Read the repository</span></div><div class="au-thinking-step" data-au-state="running"><span class="au-thinking-step__dot" aria-hidden="true"></span><span class="au-thinking-step__label">Prepare release notes</span></div></details>Detail
Preview
Thinking
Gather constraints
Draft answer
Comparing the three approaches against latency, review cost, and rollback risk…
Code
reasoning.html
<details class="au-thinking-steps" open><summary>Thinking</summary><div class="au-thinking-step" data-au-state="success"><span class="au-thinking-step__dot" aria-hidden="true"></span><span class="au-thinking-step__label">Gather constraints</span></div><div class="au-thinking-step" data-au-state="running"><span class="au-thinking-step__dot" aria-hidden="true"></span><span class="au-thinking-step__label">Draft answer</span><p class="au-thinking-step__detail">Comparing the three approaches against latency, review cost, and rollback risk…</p></div></details>List
Preview
Read the repository
Prepare release notes
Drafting the public channel summary from the latest commits…
Publish draft
Code
reasoning.html
<div class="au-thinking-steps" aria-label="Agent steps"><div class="au-thinking-step" data-au-state="success"><span class="au-thinking-step__dot" aria-hidden="true"></span><span class="au-thinking-step__label">Read the repository</span><time class="au-thinking-step__time">0.4s</time></div><div class="au-thinking-step" data-au-state="running"><span class="au-thinking-step__dot" aria-hidden="true"></span><span class="au-thinking-step__label">Prepare release notes</span><time class="au-thinking-step__time">running</time><p class="au-thinking-step__detail">Drafting the public channel summary from the latest commits…</p></div><div class="au-thinking-step" data-au-state="error"><span class="au-thinking-step__dot" aria-hidden="true"></span><span class="au-thinking-step__label">Publish draft</span><time class="au-thinking-step__time">failed</time></div></div>Component contract
- Install
- tokens.css · reasoning.css · host-chrome.css
- States
- Each step supports idle, running, success, error, cancelled
- Host
- step order, streaming append, and collapse
For agents
reasoning.contract
# agent-ui / reasoning
component: reasoning
selector: .au-reasoning
data_au_component: reasoning
purpose: Collapsible reasoning with summary | steps | detail modes (absorbs thinking-steps).
install:
- tokens.css
- reasoning.css
- host-chrome.css for running-label shine
states: Each step supports idle, running, success, error, cancelled.
css_variables: No component-specific variables.
events: native form, focus, and click only — no custom events or runtime required
no_javascript: Native details and pre-rendered steps remain usable.
host_owns: The host owns step order, streaming append, and collapse.
accessibility: Name the group; expose times as text.
security: Escape step labels, times, and detail text.
rules:
- Host owns execution, authorization, persistence, validation, and state transitions.
- Components render host-provided state; they never execute tools or imply approval.
- Escape untrusted model output, tool args, and tool output before insertion.
- Use only documented data-au-* attributes and data-au-state values.
- Keep the no-JS path usable. Do not add React, Tailwind, bundlers, or remote assets.
source: components/reasoning/reasoning.{html,css} + README.md + fixture.html