Article patterns
The kit a blog post is built from. These are the patterns that turn a wall of text into something you can read, scan and trust.
Callouts
Four flags for a trap, an optional technique, a caution or a neutral note, each with its own colour and icon. Each callout pulls one useful point out of the flow. There is no article-wide limit: use as many as the material needs when every block performs its named job, and remove any that merely repeats the surrounding prose.
A red flag stops you on a mistake worth avoiding.
A tip offers a helpful aside you can take or leave.
A warning marks something to do with care.
Info gives neutral context or points elsewhere.
Blockquote
An unclassed blockquote, set off by a green left rule on a tinted panel. Use it for a cited quotation or for one earned line that distils a dense stretch of the article. Ordinary emphasis belongs in bold, and semantic advice belongs in the matching callout.
The best engineering leaders never fully leave the craft.
Code
Inline code sits in a tinted chip. Blocks get a header with the language and Copy and Expand controls, syntax-highlighted with Shiki in a light and a dark theme, and they run full-bleed to the screen edges on a phone so a wide line has room.
Inline code looks like this: getDesignTokens().
const tokens = getDesignTokens();
renderTable(tokens.colors); A code block can also carry a file-path header: a mono strip above the code naming the file it belongs to. On phones a third control joins Copy and Expand: Wrap, which soft-wraps long lines instead of scrolling them.
Tables
An article never uses a bare HTML table. A classic table ships inside a bordered card with a sticky first column and a monospace header strip; and where rows would fight the phone column, the data becomes a bespoke card instead. All five patterns, rendered from the real classes:
| Pattern | Shape | Reach for it when |
|---|---|---|
| Classic | Rows in a scrollable card | The data really is tabular |
| Score rows | Numbered circles + descriptions | A rubric or scale |
| Checklist | Ticked and unticked rows | Observable criteria |
Simple table
The docs’ own light table: a mono uppercase header strip on the badge tint, hairline row dividers, wrapped in a rounded scrollable card. For token-and-value data that fits three or four columns; anything wider belongs to the bespoke table patterns above. The table-mini classes.
| Token | Light | Dark |
|---|---|---|
| --color-green | #6dc402 | #6dc402 |
| --bg-primary | #ffffff | #111111 |
When a row carries more than three or four columns, do not let it scroll sideways: add table-stack and give every cell a data-label. From 700 pixels it is the same table; on a phone the header row hides and each row stacks into label-value pairs: the type scale on the Typography page reads this way. Mark the row’s title cell stack-lead and a trailing note stack-end. And when even pairs are too wide, give up the table: the colour swatches render as a wrapping list instead.
| Token | Desktop | Tablet | Mobile |
|---|---|---|---|
--fs-h1 | 34px | 32px | 30px |
--fs-body | 17px | 15px | 14px |
<div class="table-mini-wrap">
<table class="table-mini table-stack">
<thead>…</thead>
<tbody>
<tr>
<td class="stack-lead"><code>--fs-h1</code></td>
<td data-label="Desktop">34px</td>
<td data-label="Mobile">30px</td>
</tr>
</tbody>
</table>
</div> Advice cards
Born in these docs and promoted to the site: a Do and a Don’t card pair for giving advice without a wall of text. Each card is a figure with a labelled head, an example stage and a caption. Available to articles as plain HTML with the dodont classes.
Do
Don’t
<div class="dodont-grid">
<figure class="dodont dodont-do">
<p class="dodont-head">Do</p>
<div class="dodont-stage">…example…</div>
<figcaption class="dodont-caption">Why this works.</figcaption>
</figure>
…
</div> Compare columns
Two bordered columns, green-topped for the favoured side and neutral for the other: what translates against what stays verbatim, what a library does against what it costs. The compare classes, available to articles.
-
Do
- compare-yes
-
Don’t
- compare-no
Dividers & dot lists
A horizontal rule in an article renders as a short centred green bar, the section divider. And the green-dot list (the bullet used by role descriptions and the booking page) is available to articles as dot-list.
- Dividers & dot lists
- Compare columns
Diagrams
Architecture diagrams are static images drawn in the site's own tokens: no diagram library ever ships to the reader. The tokens theme the result (green nodes, neutral arrows), so it re-colours with the theme like everything else, and the corner control opens it full screen. This is a real diagram from a published article:
Contents
A long article carries its table of contents: the real Toc component renders as a sticky sidebar card from 1024 pixels, and the same headings feed the contents sheet behind the reading bar's progress ring below that.
Subscribe
The newsletter band that closes a post: a short pitch, one email field, and a note about double opt-in. This is the real component, rendered live.
Get new posts by email
Engineering leadership, React Native, and building teams — in your inbox when something new goes live. No spam.
Double opt-in. Unsubscribe any time. · Privacy
Something went wrong. Please try again in a moment.
Almost there — check your inbox to confirm your subscription.
Where it lives
global.css: .prose blockquote.callout-, .code-block- and .prose pre, the .dt-card family, plus SubscribeForm.astro.