Skip to content
NANATEC Delivery + Innovation
Search articles

Designing tokens for a calm, legible UI

Design

A sage primary, warm neutrals and a type scale that never drops below 12px. How our colour roles keep light and dark mode in step.

Brian Kiptoo

Product Designer

1 min read

Our components never name a colour. They ask for a role — surface, foreground, line, primary — and the theme decides what that role looks like in light and in dark.

Three layers

  • A raw palette: the brand values, used nowhere directly

  • Semantic roles that point into the palette

  • Utilities like bg-surface and text-foreground-muted

css
:root {
  --role-surface: var(--palette-neutral-0);
  --role-primary: var(--palette-primary-600);
}

:root[data-theme='dark'] {
  --role-surface: var(--palette-neutral-950);
  --role-primary: var(--palette-primary-300);
}

Status is never colour alone

Every status badge pairs a tone with a word. A colour-blind reader, a screen reader and a printed page all get the same information.

  • #Design systems
  • #Accessibility

Keep reading

All posts
Engineering

1 min read

A BFF in front of every frontend

Why our public blog and our dashboard never talk to the API directly — and what the extra hop buys us in security, caching and simplicity.

Amina Odhiambo

Engineering

1 min read

Autosave that never lies

Debounced, serialized and honest: how the editor decides when to say “Saved”, and what happens when two people edit at once.

Amina Odhiambo