ZEROlobby
22/22 strict⌘Kvisitor
skip to main
ADR-019
skin
——:——:——zcovenant · audit
icons· chapter 26 · ADR-019

40 glyphs · five categories · one stroke · zero emoji

the icon system replaces the inherited·unicode placeholder culture with a hand-curated brand-correct baseline. every glyph is 24×24, 1.5 px stroke, currentColor. geometry lives in one JSON; <Icon name="…"/>is the only legitimate render path. inline SVG and unicode placeholders fail ci:primitive-coverage after the post-ADR-019 migration commit.

catalog · live

search · filter by category · dial size and tone · click any glyph to copy its TSX import line · right-click to copy the raw 24×24 SVG. the catalog is one source — adding a glyph to packages/icons/icons.json lights it up here on the next build.

icon catalog · live· 40 glyphs · 5 categories · 4 sizes · 7 tones · click to copy import · long-click to copy svg40 / 40v · 2026-05-10.1
category
size · 24px
tone
trade receipt
visible
40 / 40
category
all
size
24px
tone
default
last copy
none yet
pack
@zero/icons · v 2026-05-10.1 · viewBox 0 0 24 24

02 navigation · 8 glyphs

rail · top-bar · breadcrumbs · external links

home
search
settings
menu
close
chevron-left
chevron-right
external-link

03 status · 8 glyphs

covenant gates · receipts · refusal posture

check
cross
info
warn
dot
circle
asterisk
alert

04 action · 8 glyphs

operator-initiated changes · journal entries

copy
share
download
upload
edit
delete
refresh
undo

05 finance · 8 glyphs

long/short · candles · oracles · vaults · tiers

long
short
candle
depth
oracle
vault
tier
ladder

06 agentic · 8 glyphs

agents · plans · tools · journals · MCP servers

agent
plan
tool
journal
mcp
command
slash
hash

07 sizes · discrete only

the size prop is a typed union (14 · 16 · 18 · 20 · 24 · 28 · 32). arbitrary px values are a compile-time error. the brand stays on its grid by construction.

16
20
24
32

08 tones · brand role tokens

tones map to brand role tokens so per-skin overrides cascade automatically. default inherits currentColor; the rest paint via skin variables.

default
brand-signal
amber
warn
success
error
info

09 worked example · operator action row

seraphim · sol-perp · paper

10 the contract

rulerequirement
name kebab-case lowercase · matches /^[a-z][a-z0-9-]*$/
category exactly one of navigation · status · action · finance · agentic
viewBox fixed at 0 0 24 24 · the consumer chooses size
geometry paths: string[] · SVG path-data only · no <rect> / <circle>
color reach all colour through currentColor · no inline literals
uniquenessname is unique case-insensitive across all categories
no emoji no font characters or emoji code points inside paths
CI gate scripts/check-icons.mjs · runs in ci:all ahead of ci:org