Colour

The colour tokens: one brand cyan, a neutral ramp for text and surfaces, and three status families.

Live React portSource file: src/assets/css/tokens.cssStorybook story: Foundation/Colors

When to use

  • Use cyan, --color-primary, for fills and large marks.
  • Use blue-1000, --color-primary-active, for blue text, icons, thin lines and the focus ring. On the blue-100 tint, use blue-1100.
  • For meaning, use a SEMANTIC token, never a ramp step. Put a tone’s text on its own surface.
Don’t use it
  • Cyan for text, icons or thin lines on white. Use blue-1000.
  • Indigo or --color-info for blue status. Use the info tone.

Brand

The primary cyan and its four states, all on the blue ramp. Pressed is blue-1000, #1877F2, one step deeper on the same ramp.

#00AEEF
2.53 : 1
--color-primary
#0ABEFF
2.14 : 1
--color-primary
-hover
#1877F2
4.23 : 1
--color-primary
-active
#EBFAFF
1.07 : 1
--color-primary
-light
#0C296A
13.63 : 1
--color-primary
-dark

Neutrals

Thirteen steps. 50–200 are surfaces, 400–600 are borders, and 900 and darker are text.

--color-grey-50--color-grey-1200
--color-grey-900#4F4D55hsl(255 5% 32%)8.32 : 1AAAon white2.39 : 1Failon ink

Hover or select a step to read its value and contrast.

Status tones

Six tones, in order of severity, each with seven roles. A tone’s text and icon pass on its own surface. onFill is for text or an icon on the solid fill.

Success
Done, healthy, in range
fill
onFill
surface
border
icon
text
textStrong
Warning
Marginal, worth watching
fill
onFill
surface
border
icon
text
textStrong
Attention
Someone needs to act
fill
onFill
surface
border
icon
text
textStrong
Error
Failed, unsafe, out of range
fill
onFill
surface
border
icon
text
textStrong
Info
Running now, or news
fill
onFill
surface
border
icon
text
textStrong
Neutral
Idle, off, no status
fill
onFill
surface
border
icon
text
textStrong
The Vue library’s --color-success, --color-warning and --color-error are the fill role here.

Roles

Every other colour role, named by job. Hover a swatch for its value.

Text
primary
secondary
tertiary
disabled
placeholder
inverse
onPrimary
link
linkHover
linkInverse
Icon
primary
secondary
disabled
inverse
interactive
Surface
page
card
raised
overlay
inset
hover
pressed
selected
disabled
skeleton
inverse
Border
divider
field
strong
fieldHover
control
disabled
focus
error
Interactive
primary
primaryHover
primaryPressed
secondary
secondaryHover
secondaryPressed
ghostHover
ghostPressed
danger
dangerHover
dangerPressed
selected
selectedText
disabled
Chart
series1
series2
series3
series4
series5
grid
axis
axisLabel
thresholdWarning
thresholdCritical
Brand
primary
surface
Plus surface.scrim, grey-1300 at 50%, behind dialogs and drawers.

Where they're used

  • Dashboard widgets: the status panel, badges and freshness read SEMANTIC.status, under their widget names (ok, note, act, bad, live, idle).
  • Mobile: the same tokens. Screens import them, so a phone and the dashboard can’t drift apart.
  • Controls: alerts, field errors and toasts take a tone’s surface, border and text.

Accessibility

KeyWhat it does
TabMoves focus to the selected grey step.
Right / DownSelects the next, darker step.
Left / UpSelects the previous, lighter step.
Home / EndSelects the lightest or darkest step.