asw/content/docs/components.md
Vigilio Desto da1d02ccd1
Port vault section (5 pages) and docs section (11 pages)
- 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
2026-04-10 18:40:50 +02:00

4.7 KiB

title description type weight date tags ai-disclosure ai-model ai-provider
Components ASW's data-attribute vocabulary — callouts, tasks, session blocks, wikilinks, and layout primitives. docs 30 2026-04-09
components
css
reference
generated claude-sonnet-4-5 Anthropic

Callouts

Inline advisory blocks. The data-callout attribute sets the semantic type; the stylesheet handles colour, icon, and layout.

<div data-callout="tip">
  <span data-callout-title>Tip</span>
  <p>Use <code>data-callout</code> instead of inventing class names.</p>
</div>

<div data-callout="warning">
  <span data-callout-title>Warning</span>
  <p>Overriding Open Props palette tokens breaks theming.</p>
</div>

<div data-callout="error">
  <span data-callout-title>Error</span>
  <p>This file exceeds the token budget.</p>
</div>

<div data-callout="note">
  <span data-callout-title>Note</span>
  <p>Both <code>note</code> and <code>info</code> are valid values.</p>
</div>

{{< callout tip >}} In Hugo, use the callout shortcode: {{</* callout tip */>}}...{{</* /callout */>}} {{< /callout >}}

Valid values: tip, note, info, warning, error.


Tasks

Render task lists with semantic state. Agents write task lists naturally; data-task on the <li> adds the visual state indicator.

<ul>
  <li data-task="done">Token layer integrated</li>
  <li data-task="done">Docs site taxonomy wired</li>
  <li data-task="wip">Hugo layouts — in progress</li>
  <li data-task="blocked">Deploy — waiting on DNS</li>
  <li data-task="todo">Vocabulary retirement pass</li>
</ul>

Valid values: done, wip, blocked, todo.


Session blocks

Mark a block as a session record with data-session. Optional data-mode indicates autonomous vs. interactive sessions.

<section data-session data-mode="autonomous">
  <header>
    <h3>Session 2847</h3>
    <p data-text="dim">2026-04-02 · 31 min · claude-sonnet-4-6</p>
  </header>

  <ul>
    <li data-task="done">Vault token layer</li>
    <li data-task="wip">Paper layout</li>
  </ul>

  <div data-callout="note">
    <span data-callout-title>Handoff</span>
    <p>Next session: harden paper/single.html styles into agentic.css.</p>
  </div>
</section>

Internal knowledge-graph links. data-wikilink on an anchor renders it with a dotted underline to distinguish it from a regular hyperlink.

<a href="/vault/tasks/" data-wikilink>Tasks</a>

In Hugo, use the wikilink shortcode:

{{</* wikilink "Tasks" "/vault/tasks/" */>}}

Redacted content

Sensitive values rendered as black bars. Optional hover-reveal.

<span data-redacted>API key: sk-ant-...</span>

<!-- Hover to reveal -->
<span data-redacted data-redacted-reveal>classified content</span>

Layout primitives

Grid

<!-- Two columns, responsive stack below 600px -->
<div data-layout="grid-2">
  <article>Left</article>
  <article>Right</article>
</div>

<!-- Three columns, responsive stack below 768px -->
<div data-layout="grid-3">
  <article>One</article>
  <article>Two</article>
  <article>Three</article>
</div>

<!-- Auto-fill card grid, minmax(280px, 1fr) -->
<div data-layout="card-grid">
  <article>Card A</article>
  <article>Card B</article>
  <article>Card C</article>
</div>

Stats row

<div data-layout="stats">
  <div>
    <span data-stat="value">2847</span>
    <span data-stat="label">Sessions</span>
  </div>
  <div>
    <span data-stat="value">99.8%</span>
    <span data-stat="label">Uptime</span>
  </div>
</div>

Docs layout

Three-column sidebar scaffold. Source order matters: left aside → article → right aside.

<div data-layout="docs">
  <aside>
    <nav aria-label="Documentation" data-nav="sidebar">
      <small>Section</small>
      <ul>
        <li><a href="/docs/introduction/" aria-current="page">Introduction</a></li>
        <li><a href="/docs/tokens/">Token System</a></li>
      </ul>
    </nav>
  </aside>

  <article>
    <!-- Main content -->
  </article>

  <aside data-toc>
    <small>On this page</small>
    <nav>
      <ul>
        <li><a href="#callouts">Callouts</a></li>
      </ul>
    </nav>
  </aside>
</div>

Text utilities

<p data-text="dim">Muted — var(--text-3)</p>
<p data-text="accent">Accent colour</p>
<span data-text="eyebrow">SECTION LABEL</span>
<span data-text="small">Fine print</span>

<a href="/docs/introduction/" data-role="primary">Get started →</a>
<a href="/docs/" data-role="secondary">Documentation</a>

Badge

Icon or token pill. Used by the landing page pillars; also useful inline.

<span data-badge>&lt;/&gt;</span>
<span data-badge>data=</span>
<span data-badge>:root</span>