Designer Advocate Ana Boyer shares some common questions, answers, and resources that she came across when learning about design systems, tokens, and variables.
🎨 Been a minute since I've been online! Thought I'd kick off posting again by sharing some questions, their answers, and some resources that I came across when learning about Design Systems (DS), Tokens, and Variables 🧰
— Ana (@_AnaBoyer) October 26, 2023
Designer Advocate Anthony DiSpezio recommends the best approach for defining variables for theming: primitive variable → semantic variable → semantic style. The core advice is to keep using styles: “Styles represent a group of properties that should be applied to a layer or part of a layer. Variables represent individual values within that style.”
(Years ago, I noticed that when Apple announces a change at WWDC it’s better to go with it even if it doesn’t make sense at the moment — they see the roadmap much further. I wonder if it’s the same case with Figma and styles. At the moment they often feel redundant, but Figma made it very clear that they’re not going anywhere — hopefully something will make it clear soon why it was worth keeping them around.)
Defining variables for theming? This is THE best approach I can recommend:
— Anthony DiSpezio (@adispezio) October 24, 2023
$primitive-variable: ff0066
↳$semantic-variable: $primitive-variable (alias)
↳Semantic Style: $semantic-variable
I'll try and explain in the comments...
Figma collaborated with Adobe on a video exploring some of the ideas for the post-acquisition future — Firefly in FigJam and Figma, linked assets between Figma and Creative Suit, multiplayer in Adobe apps, Figma prototypes + After Effects, shared design systems, and more. For more ideas, see threads from Noah Levin, Tom Lowry, Sho Kuwamoto, and Luis.
I’m a generalist and occasionally do different kinds of design work, so having a tighter integration between Figma and Adobe apps would be pretty neat. Adobe Fonts would be my #1, but I wish I could reuse a color palette and assets from Figma while working on my book layout in InDesign. While designing a photo-heavy website, I went back and forth between Figma and Lightroom experimenting with post-processing. The new Photoshop on the web also makes so much sense as a native integration. Count me in as a Figma × Adobe optimist.
Since announcing the acquisition over a year ago now, we’ve talked a lot about what the future could look like, but we haven’t shown it.
— Yuhki Yamashita (@yuhkiyam) October 26, 2023
So, we came together with @scottbelsky and the @adobe team to imagine “what if ...”
We wanted to share some of our ideas with you. pic.twitter.com/utEWSxoqnK
Updated corner radius UI makes it easier to bind a variable to each individual corner.
Hot off the press: It's shipped!
— Figma (@figma) October 24, 2023
Corner Radius UI improvements are now live, making it easier to bind a variable. https://t.co/secUOlvvbX
A quick how-to video from Zander on creating a glowing animation inspired by the Disney logo. (And one more with a hover scale effect.)
Glowing loading animation in figma, supafast.
— Zander Whitehurst (@zander_supafast) October 16, 2023
Celebrating Disney turning 100 🥳 pic.twitter.com/uzXZSTFjFr
Step 2: Learn from Vijay Verma how to create a cute animation using variables and conditions.
Create something spooky! Here's a quick tutorial to design this little guy in @figma using variables and conditions 👻. Small video shared and also get the code cheatsheet shared below. 📷✨ pic.twitter.com/K0TsE9iSiK
— vijay verma (@realvjy) October 20, 2023
Ridd points out two common problems with UI kits (manual updates of shared attributes and maintaining multiple breakpoint variants) and shares a variable system to make your life way easier.
Ready to see how variables in @figma can level up your UI Kit?
— Ridd 🤿 (@ridd_design) October 17, 2023
Here's my system 👇 pic.twitter.com/IfiMnS1FHx
Great thread explaining the “weirdness” of OkLCH by one of the authors of the new Harmony color palette. Here is something I never thought about: “In electronic displays, yellow, cyan, and magenta are products of shining two lamps – subpixels. The more light is emitted, the brighter we perceive the color. It means the max lightness of the yellow is much higher than the blue’s.”
Like any professional tool, OKLCH has an entry threshold — a weirdly-looking color spectrum which is a product of the physics-based model. Once I got used to it, its "weirdness" became a huge asset. Let me show you how it works. pic.twitter.com/C9xo1BDkgA
— Anton Lovchikov (@antiflasher) October 20, 2023
Karri Saarinen shares how their team is building one of the best-designed products out there: “The main point is that the design is only a reference, never any kind of deliverable itself, so the way it’s constructed doesn’t really matter.“ Don’t miss a follow-up on this approach and tech debt, as well as an older thread on their simple design system. Last but not least, his recent interview with Lenny Rachitsky on how Linear builds product was just fantastic (a good chunk is behind a paywall, but a podcast version is free.)
Primer on how we design at @linear:
— Karri Saarinen (@karrisaarinen) October 19, 2023
The main point is that the design is only a reference, never any kind of deliverable itself, so the way it's constructed doesn't really matter.
1. We screenshot the app and design on top of
2. Simple design system that has mostly colors,… pic.twitter.com/j5AholI4UG
Great update to the OkColor plugin letting you specify both absolute and relative chroma in colors.
Last OkColor update 🌈 you can now use relative chroma in OkLCH: https://t.co/ZUhIw7cojP
— Doko Zero (@dokozero) October 9, 2023
It does not replace OkLCH's absolute chroma which is important, but it brings the advantage of OkHSL's saturation while keeping the features of OkLCH.
More infos 🧵↓
Ridd shares a few repeatable steps to start prototyping with variables — creating the variable you need, assigning the variable to the UI, testing the connection, and setting up your triggers.
If you're like me, you were a bit overwhelmed the first time you started prototyping with variables 😬
— Ridd 🤿 (@ridd_design) October 10, 2023
But once you master it you start to realize something...
It follows the same repeatable steps 👇 pic.twitter.com/aYO4me0Gmy
I rely on Luis for thought-provoking organization and design systems insights. In this thread, he discusses a way to translate brand colors into primitive and semantic color scales. At work, I use two design systems — one made by a smaller team where the same designers control the brand, design system, and product, and another from a larger organization with these are separate functions. I can see how his approach of explicitly using brand colors in primitives can work well in larger orgs.
It's pretty common when working with brand that you're provided with the "brand palette", which might not automatically translate into your token structure
— luis. (@disco_lu) October 9, 2023
To feed them into a global palette, you can still rely on the primitive / semantic relationship, but with an extra step pic.twitter.com/eZ61LLD9Ts
Molly Hellmuth shares a few tips from her recent talk “Design System Traps & Pitfalls” at Smashing Conference. Here are the five ways to de-risk variable adoption for your design system — create a map for your token structure, start using variables with numbers only, use variables and color styles together, stress-test new features, and roll out changes gradually.
💡 5 tips to make sure variables don't break your Figma design system
— Molly Hellmuth (@molly_hellmuth) October 13, 2023
As I shared in my @smashingconf talk "Design System Traps & Pitfalls", adopting new features comes with risk..
Here are 5 ways to de-risk variable adoption for your design system👇 pic.twitter.com/tgOOorlc3r
Something must be (hovering) in the air, as Ridd also shared his thoughts on selecting a color for the hover state with the right amount of saturation.
Came across these hover states today...
— Ridd 🤿 (@ridd_design) October 11, 2023
Notice how the grays feel kinda... off?
It's a mistake I see a lot 😬
Here's a better way👇 pic.twitter.com/BBVMB6Le9Z
An interesting idea on using a composite style with an alpha channel for a hover state instead of creating variables for every variant. Won’t work in every case, but it was interesting to learn that the same overlay approach is used in Material 2.
An idea 💡
— luis. (@disco_lu) October 10, 2023
If your hover states are consistently within the same colour range e.g. adding 30% black to *anything* that is hovered, then instead of creating variables for every single variable's hover state, you create a single ––hover variable and use it within a composite style pic.twitter.com/k9QsF0xhBb
Organizations can require approval for using plugins and widgets, and now Akbar shows a new way to request it straight from the plugin’s popup. They’ve also made it easier for admins to review the requests. (If you’re a plugin author, consider specifying networkAccess in the manifest.)
Want to use a plugin or widget but need approval from your admins? @figma's got your back! Now you can quickly do that from inside any file you’re working on. pic.twitter.com/PcYYMysZTK
— Akbar (@actuallyakbar) October 11, 2023
I’m still waiting for access to GPT‑4 Vision, but examples like this make me so excited about possible use cases! Imagine using LLM for a heuristic evaluation or pairing design and sketching sessions.
Omg I'm blown away! 🤯
— Ammaar Reshi (@ammaar) October 4, 2023
GPT-4V is an incredible product design partner! I gave it a mockup of my site & asked for feedback.
It was able to suggest tweaks to type, layout, content, and more.
What an awesome way to pair on solo projects together or if you're learning the craft! pic.twitter.com/EujmjwG7nA
Ridd is back with a video and a thread on choosing the right variable types for updating the state of components.
By far my favorite use case for variables in @figma prototypes is being able to update the state of a component 💪
— Ridd 🤿 (@ridd_design) October 6, 2023
But it took me a bit to wrap my head around the feature...
So here's a ~1 min video walking you through how it works (more below)👇 pic.twitter.com/KUd8lUkY2e
A smart way to utilize line-wrapping in Auto Layout to achieve word highlighting effect.
Surely not the first to realize this, but I had a moment of clarity this morning after three cups of coffee and realized that we can FINALLY do reliable word highlighting using line-wrapping in Auto Layout.
— Jon Moore (@TheJMoore) October 3, 2023
Be still my heart.
👀 @figma pic.twitter.com/SoEhGGFD9E
Alright, so in the last issue, I wrote that “plugins for code generation in Dev Mode using GPT‑4 might provide an even better result.” It didn’t take long for a better example! Ben shows a new feature in Sidekick AI (using GPT‑4) for dropping a link to a frame in a Figma file to improve the code generation and even fix visual bugs. This looks freaking amazing.
implementing production ready ui with figma + gpt-4 vision 🤯 pic.twitter.com/650dAXMSFm
— ben (@benhylak) October 4, 2023