MODULE β M07
Ledger
Your writing, talks and releases, all in one column.
Entries
Whole rows are links. Tab into one and the ring is drawn inside it, because a flush row clips an outset ring.
<div class="rule-stack" style="width:100%">
<a href="#" class="rule-row ledger-row">
<span class="ledger-date">APR 2026</span>
<span class="ledger-kind">WRITING</span>
<span class="ledger-title">Why undo is the hardest feature in any editor</span>
<span class="ledger-go" aria-hidden="true">β</span>
</a>
<a href="#" class="rule-row ledger-row">
<span class="ledger-date">FEB 2026</span>
<span class="ledger-kind">TALK</span>
<span class="ledger-title">Sixty frames on a canvas that has no right to hold them</span>
<span class="ledger-go" aria-hidden="true">β</span>
</a>
<a href="#" class="rule-row ledger-row">
<span class="ledger-date">NOV 2025</span>
<span class="ledger-kind">RELEASE</span>
<span class="ledger-title">Flatty 1.0</span>
<span class="ledger-go" aria-hidden="true">β</span>
</a>
</div>The same three, in columns
Put the stack in .rule-stack-aligned and the four parts land on shared column lines. Look at where WRITING, TALK and RELEASE end above β and where the titles start here.
<div class="rule-stack rule-stack-aligned" style="width:100%">
<a href="#" class="rule-row ledger-row">
<span class="ledger-date">APR 2026</span>
<span class="ledger-kind">WRITING</span>
<span class="ledger-title">Why undo is the hardest feature in any editor</span>
<span class="ledger-go" aria-hidden="true">β</span>
</a>
<a href="#" class="rule-row ledger-row">
<span class="ledger-date">FEB 2026</span>
<span class="ledger-kind">TALK</span>
<span class="ledger-title">Sixty frames on a canvas that has no right to hold them</span>
<span class="ledger-go" aria-hidden="true">β</span>
</a>
<a href="#" class="rule-row ledger-row">
<span class="ledger-date">NOV 2025</span>
<span class="ledger-kind">RELEASE</span>
<span class="ledger-title">Flatty 1.0</span>
<span class="ledger-go" aria-hidden="true">β</span>
</a>
</div>Reference
Read from modules/ledger.css when this page was built, so it cannot fall behind the stylesheet.
.ledger-row.ledger-date.ledger-kind.ledger-title.ledger-go.rule-stack-aligned--ds-accent--ds-font-body--ds-font-display--ds-gap-tight--ds-ink--ds-ink-faint--ds-ledger-gap--ds-ledger-title-basis--ds-text-chip--ds-text-meta--ds-text-small--ds-text-ui--ds-track-button--ds-track-keyNotes
Date, kind and arrow are all flex: 0 0 auto, so on a narrow row the title wraps to its own line and the metadata stays together above it. A grid would either keep four columns and crush the title, or collapse all four and strand the arrow on a line of its own.
Which is exactly what happened when we tried it. In a 280px stack the four columns gave the title five lines and put 27px of it outside its own box, under the arrow. So .rule-stack-aligned holds its columns only while the title track can still be as wide as the title asks to be β --ds-ledger-title-basis, 260px β and below that the row is the flex row again. Everything else in it measures 268px, so the switch is at 528px. That is the third literal length in this library, and it is written down in one place with the arithmetic beside it.
The arrow is aria-hidden. It says βthis goes somewhereβ, which the link already says; announcing βnorth east arrowβ after every title is noise.