UX Collective

We believe designers are thinkers as much as they are makers. https://linktr.ee/uxc

Follow publication

Design system breakdown: Buttons

Part 1 of a deep-dive series on specific design system components

Steve Dennis
UX Collective
Published in
9 min readNov 24, 2022

I’ve been toying with the idea of more in-depth breakdowns of specific components in Castor for a while, and the humble Button seemed like as good a place to start as any. Here I break down some of the thinking, tradeoffs, and decisions that went into designing and developing our Button component. Let me know if you’d like to see more articles like this.

Four buttons in primary, secondary, and focussed and default variants.

Design goals

The iteration of our buttons that I’ll be focussing on here is actually based largely on an earlier iteration of our design system. This first version had already done a lot to reign in the chaos of having no design system at all (pictured below), but design tools weren’t aligned with code, and many systemic and design aspects such as accessibility, dark mode, weren’t considered.

Nearly 20 completely different button styles, in blues, greens, greys, blacks and every style in between. No consistency whatsoever.
A familiar chaos for anyone who’s started a design system from scratch.

We had broadly aligned on a general visual direction in V1, which provided a solid starting point. Buttons that looked like the ones below were already implemented across a handful of our existing products, albeit inconsistently and with no shared code. The general style of the buttons below were retained, but refined and expanded.

Four buttons, a primary button with white text on blue, a secondary with blue text outlined in blue, a tertiary “ghost” button with just blue text, and a red destructive button in the outlined style.
We started with a visual button style already established.

Our goals for this phase of the project were:

  1. Improve consistency across products
  2. Raise the bar for accessibility
  3. Fit easily into existing products (with active development).

Accessibility

I’ll start with accessibility first, as it was forefront in my mind and ended up driving quite a lot of our key decisions.

Touch area

The biggest, and probably most unpopular decision we made was removing height/size variants from the new system. Our products span desktop and mobile, and minimum touch areas were a thing we’d been doing badly in the past. We’d had…

Create an account to read the full story.

The author made this story available to Medium members only.
If you’re new to Medium, create a new account to read this story on us.

Or, continue in mobile web

Already have an account? Sign in

Written by Steve Dennis

Senior Design Manager @ Onfido, writing about design systems, product design, leadership, and tech @ clipcontent.substack.com.

Responses (1)

Write a response

Thanks for sharing, I really enjoyed that deep dive! Had a few ah-has and confirmations on how I've been approaching things. I like the inside focus border trick! Might need to borrow that one 😁

So on the 48px default button height, do you allow…

--