Colors

LedgerIt is drawn in Vercel's Geist palette: ten steps per color, each step with a job. Product code never names a step. It names a role, and the role names the step.

Scales

Nine scales of ten steps, plus two backgrounds. The grays build the whole interface; green, red and amber are the money signals, and nothing else is colored.

Theme
gray
gray-alpha
blue
red
amber
green
teal
purple
pink

Point at a step to read its value. Select it to copy the value.

Backgrounds

Two backgrounds. The first is the page and almost everything on it; the second sets a region apart, and is used sparingly.

Theme
  • background-100 Default. The page, cards, menus and dialogs.
  • background-200 Secondary. The sidebar, one step off the page.

Steps

Every scale splits the same way, so a step means the same thing in every color.

Component backgrounds100–300100 is the default, 200 the hover, 300 the pressed or selected state.
Borders400–600400 is the default hairline, 500 the hover, 600 the pressed or focused edge.
High-contrast backgrounds700–800700 is a solid fill, 800 its hover. Text on them is white or the page.
Primary textSecondary text
Text and icons900–1000900 is secondary text and tinted text on a 200 fill, 1000 is primary text.

Roles

What product code actually uses. Each role points at one step, so it reads the same in both themes and a retune is one line in globals.css.

RoleStepUsed for
Surfaces
backgroundbackground · background-100Page, cards, menus
sidebarsidebar · background-200The sidebar
surface-100surface-100 · gray-100Recessed areas, hover
surface-200surface-200 · gray-200Pressed, skeletons
Edges
lineline · gray-400Hairlines
line-strongline-strong · gray-500Outlined controls, emphasis rules
inputinput · gray-800gray-600 in darkControl edges, 3:1 on every surface
Text
ink-mutedink-muted · gray-900Secondary text
inkink · gray-1000Text
Where you areInk and gray, not a hue: the only color in the interface is money.
ledgerledger · gray-1000Checked controls, the active nav icon, new
ledger-softledger-soft · gray-200Its tint
ringring · gray-900Focus rings
hoverhover · gray-alpha-100Anything you can touch, under the pointer
selectionselection · gray-300Selected text
MoneyAlways with a sign or a word, so money in and money out never rest on red and green alone.
positivepositive · green-900Money in, reconciled
positive-softpositive-soft · green-200Positive badge fill
negativenegative · red-900Money out when flagged, errors
negative-softnegative-soft · red-200Negative badge fill
warningwarning · amber-900Needs review
warning-softwarning-soft · amber-200Warning badge fill