luis. Profile picture
Feb 15, 2023 13 tweets 4 min read Read on X
There are a lot of questions at the moment about colour tokens and Figma soooo

I thought I'd thread some thoughts on it to create a healthy discussion in public 🧂
Some assumptions first:

• This is *in Figma*, not talking about code
• You have a Figma design systems team set up
• You're at least splitting up styles and components into two files A screenshot of a map of teams -> projects -> files -> pages
And very importantly!

There is almost no *right* answer, but you've got to start somewhere

I'll be using some terminology in this thread which makes sense to me right now, but will probably horrify you 😱
The style ➡️ components relationship in Figma

Right now, the recommendation is to use slash naming conventions to create folders with your styles

This will eventually map to a similar model for your non-Figma tokens too

(these are example style names) A visual showing a style ➡️ component library flow in Fi
Alright, the token relationship!

The relationship goes like this:

1️⃣ Your base value (e.g. #ffffff for white)
2️⃣ Your base token (e.g. Mono/100)
3️⃣ Your token alias (e.g. Input/Fill) An illustration showing the base value, base token, and toke
An example – an input field

A question to ask: are there shared component values?

Yes? You can bundle the tokens to start with

Here, we bundle border, text, icon into a token & fill is split

(Content) + (fill)

Remember when I said this would cause discussion? 😅 An illustration of an input/search component with token valu
What if you don't have shared values? Split the tokens!

Here's an example that isn't too realistic, but shows how you could structure the styles, with a separate token alias for:

• Border
• Icon
• Text
• Fill

This would compound when we add states too 😬 An illustration showing an input/search component with diffe
Alright, alright, what about variations of components?

Well, they will still likely have shared styles, so we can bundle certain bits and split the differences

Here's an example of the input/search with a default and error state An illustration of the token mapping for the input/search in
If you want to be *even more descriptive*, you could do something like this

This example shows the same token value, but the application is hyper specific

e.g. grey/400 is split into every aspect of the input – border, icon, text

Overkill? Probably, yes
Readable? Definitely! An illustration showing a mapping of tokens within the input
Important notes:

• Specificity is easier to read, harder to manage
• Within Figma, it's (probably) easier to optimise for reuse, rather than being overly descriptive
• Right now, your code tokens and Figma styles will probably have to be differently named
More notes:

• I've used "fill" here to represent what other people call background or surface, this is something we argue about in the team all the time
• I've used "content" to bundle the inner elements of components. This is *my* name, which again might not be what you use
Finally, tokens are really difficult to learn and I'm not an expert at all – just ask my team!

It'll take time to learn, and even longer to use effectively, but start somewhere

I'd advise taking a component in your library and trying to break it down first into logical aliases
Thank you to @HonzaTmn for helping me to simplify the visuals 🙌🏻

• • •

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

Keep Current with luis.

luis. 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 @disco_lu

Jul 10
There's something bugging me about icons

Take a look at these two components, what's wrong? 10 points are on offer Two light blue components with icons inside and a text string reading "label". The left component has a horizontal 3 dot icon, the right component has a vertical 3 dot icon.
That's right! There are two problems:

1) The left padding is optically too large
2) The gap is too loose Visual of the same two previous components, with a yellow annotation pointing to the issues described in the tweet
When composing components like this (with an icon), the process is:

1) Nest an icon
2) Set preferred instances
3) Bubble up the icon to the top level for instance swapping A visual showing the process of nesting an icon inside another component. It also shows two overrides to the icon, one showing the original horizontal three dot icon and the second showing the vertical 3 dots.
Read 7 tweets
Jun 30, 2023
Been asked a lot over the past few days about how to get started with colour variables, so here are some pointers 🖍️

Hope this is useful!
As usual, before we get started here are some T&Cs:

• These are my opinions, take with a grain of salt!
• You will need more or less of these options, adjust to your team's workflow
• Tokens are opinionated, bring your microphone
• Tokens are angry, enter with care
The types I'll discuss are:

1️⃣ Bg = Background
2️⃣ Text = Text!
3️⃣ Border = Also known as strokes
4️⃣ Icon = This is a layer I'm personally adding on, will explain why
Read 22 tweets
May 5, 2023
I think it might be time to reconsider whether atomic design helps or hinders the creation of designs and systems

It’s been the de facto rule for looking at interfaces for a long time, but I find that sometimes it can actually create more confusion 💫 A visual depicting atomic d...
Atomic design is great! The issue we face though is that it’s best suited for frontend code architecture, and not necessarily within design files

It helped me understand the construction and component composability at a foundational level, buuut I want to flip the script a bit
Before we start, I’d encourage you to read the blog post if you haven’t yet: bradfrost.com/blog/post/atom…
Read 17 tweets
Mar 23, 2023
Some more "styles in Figma" thoughts

Let's take a look at the four types of colour styles you might build / encounter in your systems 🎨

• Raw values e.g. #CC8700
• Base tokens e.g. Yellow/400
• Global tokens e.g. Warning/Primary
• Component tokens e.g. Alert/Warning/Text Image
The last layer (component tokens) may be overkill for your needs, and you might not need to get that specific!

The "levels of abstraction" are down to how sophisticated your system might be, and you may not even need...any of the last three if you're okay with raw values😄 A graphic showing the previ...
The way I have structured this, with the arrow inheritance, should indicate that you follow a path down from abstract raw value down to specific component token value

Each level introduces control – providing the systems team with a much stricter way of managing styles
Read 13 tweets
Mar 16, 2023
Here's another thread about managing Figma styles 🗂

It's pretty hard to know how far to push naming conventions on styles, and you can end up in some heavily nested folder structures if you're not careful

So let's take one component and work it out! A square image with a mid p...
As usual, these are thoughts / ideas!

There's not necessarily a perfect right answer, but hopefully this sets you up with something to think about 💡
First things first! Token/styles schema 🤖

I've landed on:

Type
e.g. color, effect

Pattern
e.g. flight information, form

Component
e.g. itinerary, input

Element
e.g. header, info

Modifier
e.g. upgrade

Property
e.g. fill, border

State
e.g. base, hover

Value
e.g. # A visual representation of ...
Read 13 tweets
Mar 6, 2023
When is one component actually many components?

I've seen a lot of cool component props examples recently, but I think we're running into a world where component maintenance is being prioritised over usage

Taking a tweet component as an example, how could we structure it? A screenshot of a series of...
First things first, identify the component types

1️⃣ Tweet – single
2️⃣ Tweet – media
3️⃣ Tweet – threaded

Notes: Names are illustrative; media has many types and would require another thread in itself; there's probably more types! The same tweet image as bef...
We *could* go to town here and add component props to every single element, reducing our component down to just a single one

Here you can see the prop soup of our singular component in practice A single tweet with media e...A comparison of the solo co...A table showing the compone...
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!

:(