gray
radius
Tokens

Color

Fourteen chromatic scales and three neutrals, thirteen steps each, generated rather than picked. Switch the theme in the toolbar and every swatch below moves.

Chromatic

Fourteen hues, thirteen steps each, 10 to 990 left to right.

red
crimson
pink
magenta
purple
indigo
blue
cyan
teal
green
lime
yellow
amber
orange

Neutral

Three of them, ordered by how much blue they carry.

mono
gray
slate
Reach for the semantic tokens further down, not one of these steps. palette.pink[500] says what a color is; status.error.normal says what it is for, and only the second survives a decision to make errors crimson.

The fourteen hues are spread around the wheel, the closest pair 12° apart. Equal HSL lightness is not equal perceived brightness, so cyan and green are pulled down. Without that, teal-500 is #00ffea.

Absolute

Four groups that do not follow the theme. Black and white are literals; dim and lighten are operations that work over anything.

color.white#ffffff
color.black#000000
dim
lighten
The step number is the alpha in thousandths, so dim[100] is black at 10%. Both ramps run 50 to 950 and stop there: 0% is transparent and 100% is color.black or color.white, which already exist above.

Semantic

What a color is for. Background is the level a thing sits on, fill is a panel cut into it, and every tone including neutral carries the four roles below.

background
fill
neutral
border
accent
status.success
status.warning
status.error
status.info

Text on each fill

onNormal records the color that clears AA on that fill, so no component has to decide.

neutral.onNormal
status.success.onNormal
status.warning.onNormal
status.error.onNormal
status.info.onNormal

White or black

Seven and seven across the hues: red through blue carry white, the cyan-to-orange arc needs black, and both themes agree because step 500 is the same lightness in each. The three grays are measured at 950 instead, where a solid neutral fill sits, and they are the only rows that answer differently in the two themes. (Reading the light one.)

red in whitered in black
red#eb1414white 4.52black 4.64either clears, convention picked
crimson in whitecrimson in black
crimson#e8113cwhite 4.59black 4.58either clears, convention picked
pink in whitepink in black
pink#e40775white 4.58black 4.59either clears, convention picked
magenta in whitemagenta in black
magenta#d110cawhite 4.53black 4.64either clears, convention picked
purple in whitepurple in black
purple#870df2white 6.23black 3.37
indigo in whiteindigo in black
indigo#3422f1white 7.94black 2.64
blue in whiteblue in black
blue#0868f7white 4.85black 4.33black misses by 0.17
cyan in whitecyan in black
cyan#07ace4white 2.62black 8.03
teal in whiteteal in black
teal#08c9b9white 2.09black 10.07
green in whitegreen in black
green#20c557white 2.29black 9.19
lime in whitelime in black
lime#6cb10bwhite 2.65black 7.93
yellow in whiteyellow in black
yellow#f2d40dwhite 1.48black 14.20
amber in whiteamber in black
amber#f59f0awhite 2.13black 9.85
orange in whiteorange in black
orange#f2610dwhite 3.24black 6.49
mono in whitemono in black
mono#1a1a1awhite 17.40black 1.21
gray in whitegray in black
gray#17191cwhite 17.61black 1.19
slate in whiteslate in black
slate#15181ewhite 17.78black 1.18