Ridd 🤿 Profile picture
Aug 26, 2021 12 tweets 5 min read Read on X
I’ll never build a form in @figmadesign the same way again…



It took me countless tries, but I think I’ve finally created a system that is flexible and doesn't result in variant overload 💪

Here's a 5 step walkthrough 👇
01 — Create a "FormContent" component

This most likely combines text + icons

I'll create a handful of variants that give me flexibility around where/how my icons are displayed

Pro tip: Use an `IconWrapper` component so you can resize icons using variants
02 — Create a "FormChild" component

This is simply an auto-layout wrapper around my FormContent that dictates the base size + padding.

We'll use these to create many types of subcomponents!
03 — Create your form subcomponents

The three examples I have:
• Input
• Select
• Text Area

👆 All of these can be created from our single FormChild component with some simple auto layout tweaks

This is the level where I define states like error/disabled/etc.
04 — Now it's time to build out our "Form" component!

To do so, we add a "top" and a "bottom" auto layout around our "Input" component that includes things like labels, button text, helper text, character counters, etc.

Then create a variants map to turn on/off each piece 👍
05 — Assemble your UI

You can easily swap out your "Input" with a "Select", a "Text Area" or anything else you've defined at your subcomponent level!

Any changes you want to make to an individual element's state happens at that same subcomponent level.
Benefit #1

Separating input "state" from all of the different layout options our forms can have radically simplifies our end variants matrix.

You'll never end up with 100+ variants at the form level. And the subcomponent states are repeatable and easy to manage
Benefit #2

This system is ridiculously flexible because you can add/tweak any number of subcomponents and they'll slide perfectly into the larger "Form" component and its existing variants.

Think how easy it would be to add a side-by-side "Select" component?
Obviously, there are a ton of implementation details that can't be communicated in a thread (but I did my best 😅)

So I've created a full lesson (walkthrough + 15 min video) available through figma.academy
In general, this system speaks to the benefits of strategically building out each individual piece of the puzzle.

Assembling many nested components (vs. diving right into the "Form") means less variants, less manual work, and more flexibility 💪
If you found this useful and want to pass along the inspiration...

Click into the first tweet and share the thread with another designer 😊
Enough of you have asked about the ‘IconWrapper’ component...

This is what I’m referring to! Allows you to change your icon sizes even when they’re nested in another component 👇

• • •

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

Keep Current with Ridd 🤿

Ridd 🤿 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 @ridd_design

Jun 25
So I've been vibe coding a side project 😅

And I figured out a flow that's been working really well for me so I wanted to share

Here's my new playbook 👇
My current project is a proximity-based scheduling tool for my dad's insurance adjusting business

And the first thing I do is treat ChatGPT as my CTO and dump as much context as I can possibly think of for what I'm trying to build

But here's the important part...
Before hopping into Cursor I prompt ChatGPT to ask me questions to clarify its own understanding

It’ll generate a list of questions and then I’ll ramble about the answers using voice mode

We’ll run that loop 5 or 10 times until ChatGPT says it has a perfect understanding Image
Read 7 tweets
Sep 16, 2024
Why is it cool to hate on design systems? 🤔

I'm starting to think the pendulum has swung too far and we're missing the point...

Some thoughts 👇
I’ll admit… I never use the phrase “design system” anymore.

Somehow the term has become synonymous with scale

And one reason is b/c we're constantly referencing the biggest systems (Polaris, Spectrum, Material, etc.)

But our tools are also to blame 👇 Image
Many of Figma’s new features cater to enterprise customers (and it makes sense why 🤷‍♂️)

But what about YOUR product?

Do you reeeeally need to define typography primitives as variables?

So let's take a step back... b/c design systems don't have to be so "enterprise-y" 👇 Image
Read 12 tweets
Sep 6, 2024
The @outerbase website is an interesting case study in design trends right now

some (slightly nerdy) thoughts 👇
Idk when it happened exactly but dev tools have had a huge impact on web design trends over the last few years

But we reached a point where they all used glows, gradients, transparency, blurring, etc.

So it's interesting to see brands like Outerbase take a hard left 👇
Image
Image
They lean all the way in on this generative image style 👀

Some use cases I've seen before like using custom images to frame mockups

But they're also doing some things I've never seen before...
Image
Image
Read 10 tweets
Apr 18, 2024
I've been thinking too much about what it looks like to design with "soul" 💭

It's a tough concept to pin point.

But I think I've narrowed it down to 4 signals 👇
1 // Unreasonable quality

Designing with soul means at least one thing you ship will be unreasonably good... like WAY more than you're required to do.

The example that comes to mind is the Figjam unfurling interaction 👇

Talk about going beyond the brief...
There is no chance this was a requirement in a PRD.

Quality like this only comes from an "intrinsic place of motivation"

I can feel the care put into this interaction every time I drag a new sticky onto the canvas. That's what makes it memorable.
Read 9 tweets
Feb 26, 2024
It's taken me over 4 years...

But I think I finally have the perfect method for nailing ☀️/🌙 modes in @figma

Here's my step-by-step process 👇 Image
To create a themeable system like this I like to start with Tailwind's 50 → 950 scale

Then we update it in three phases:

1) Nail the hue (easy)
2) Pick your saturation level (easy)
3) Use UI to derive brightness values (this is where the magic happens)

Let's dive in 👇
1// Nail the hue

The best way to ensure your grays work well with your brand palette is to use the hue from your primary color

This is part of why it's so important to use HSB or HSL instead of hex codes (I'll use HSB in this walkthrough)

That sets us up for step 2 👇 Image
Read 17 tweets
Jan 25, 2024
What are we doing in Figma today that we’ll regret 6 months from now? 🤔

There's been some BIG regrets over the years...

And I think it's starting to happen again 👇 Image
Let's begin by looking at two of the biggest Figma regrets over the past few years

Then we can identify trends 🔍

Sound good? ✌️

The story starts in 2020 shortly after the release of variants...
Variants made it 10x easier to make components and swap between them.

So we made all the variants—literally every single possible combination 🤯

The larger the variant sets, the more painful they were to update, which led us to regret #1 👇 Image
Read 15 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!

:(