Design System

5 foundations, 9 components

Colors

1
2
3
4
5
6
7
8
9
10
11
12
Page--surface
Card--surface-card
Frame--surface-frame
Hairline--hairline
Text--text-primary
Subtle--text-subtle
Muted--text-muted
Brand--accent-brand
Positive--accent-positive

Radius

4pxInline code, highlights
6pxBadge
10pxTool icon, nav item
12pxCard, table, code
16pxFrame inner, decision
18pxTool card
20pxFrame outer
FullPill

Elevation

--elev-card
--surface-frame
--hairline

Typography

Living archiveTechnicalThe site is the ofrenda.Spec rows and tableshighlightCode()

Buttons

LargeMediumSmall

Code Card

lib/favicon.ts
/** Returns a favicon URL for http(s) links; null for mailto and invalid hrefs. */
export function getFaviconUrl(href: string, size = 32): string | null {
  try {
    const url = new URL(href);
    if (url.protocol !== "http:" && url.protocol !== "https:") return null;
    return `https://www.google.com/s2/favicons?domain=${encodeURIComponent(url.hostname)}&sz=${size}`;
  } catch {
    return null;
  }
}

Spec

Role
Design engineering, front-end
Timeline
2024 — 2026
Stack
Next.jsThree.jsAre.na

Table

RouteRenderingClient JS
/work/[slug]StaticLayout + copy buttons
/stack/[subject]StaticLayout
/systemStaticLayout + copy buttons

Badge

NeutralAccentShippedIn progressDeprecated

Callout

Decision

ADR-01

Highlight code on the server

Context
Case studies need readable, themed code without shipping a highlighter to every visitor.
Choice
Shiki runs in Server Components and emits both themes as CSS variables.
Trade-off
Grammars are loaded at build time, so adding a language means listing it up front.

Tool Card

Kbd

⌘K

Frame

Content sits on the inner card.