Alexey Ardov Profile picture
Oct 10, 2021 11 tweets 4 min read Read on X
Huetone is here! 🌈
It's the tool you need to create and fine-tune your color system.

Details in thread
huetone.ardov.me
Color systems should be predictable in terms of contrasts. It makes them easy to use. If you can easily replace "blue-500" with "orange-500", your palette is well constructed.

Huetone helps you build such systems by visualizing your palette and contrasts between colors.
For visualization, Huetone uses LCH color space.
LCH stands for Lightness, Chroma, and Hue.
Unlike RGB or HSL, it is perceptually uniform and covers all the colors a human can see.

Note that we are still limited to our RGB monitors, and some colors will be undisplayable. Image
To get an idea of LCH, look at this diagram below. The upper colors are more saturated than the lower ones. The slider represents lightness.

Did you notice how there is no dark and saturated yellow? Live with it 😔
So we visualized colors, what about contrasts?

To give you more context, Huetone uses two contrast algorithms: Image
1. Standard WCAG2 contrast algorithm.
If you have ever checked the contrast ratio, 99% you have used this one. It doesn't care which color is text and which is the background.
2. Advanced Perceptual Contrast Algorithm (APCA) by @MyndexResearch.
It is a working draft for the WCAG3. APCA is usage-aware, so we need 2 values to represent possible combinations of text and background.

Check this page to learn more w3.org/WAI/GL/task-fo…
Those were the core parts I wanted to highlight.
There is also a bunch of small things that simplify work with Huetone:
– hotkeys
– editable slots to check contrasts
– export to Figma.
– unique URLs for every palette
It's still a raw project, and the interface can be confusing, but I already feel like sharing it. 😅

I'm going to make it open source later, after I finish cleaning up some messy code.
Finally, if you want to dive deeper into a world of color systems, check these articles:
1. stripe.com/blog/accessibl…
2. wildbit.com/blog/2021/09/1… by @efedorenko
Great news! I've just made the repository public. So you can fork and play with it.

The code can be messy, I'm not a real programmer 🤪
github.com/ardov/huetone

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Alexey Ardov

Alexey Ardov Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @ardovalexey

Jan 25, 2023
Tried generating themes based on APCA contrast and OKLCH color model. Well, it's not as easy as I thought, but I'm pretty happy with the first results.

You can play with it here color-playground.ardov.me
Light theme is relatively easy to make. But when it comes to dark the real challenge arises. Most of my methods just failed.

Let’s explore a dead simple example: white background + gray card.

How to convert it to the dark theme and keep that subtle contrast?
Let’s start with the familiar HSL.
The lightness of white is 100%, and of gray is 92% (8% of difference)

So in the dark theme, it should be 0% and 8% (same 8%)

Well, the result seems a little too dark for me
Read 8 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(