Friday, October 10, 2025
HomeWeb developmentConstructing Parts For Consumption, Not Complexity (Half 1) — Smashing Journal

Constructing Parts For Consumption, Not Complexity (Half 1) — Smashing Journal


Design methods are on the tip of each designer’s tongue, however the narrative within the business primarily focuses on why you want a design system and its significance somewhat than the truth of limitless upkeep and inner politics. The reality is that design groups spend years creating these methods solely to search out out that few individuals adhere to the rules or keep throughout the “guardrails.”

I’ve been lucky with Figma to host and run workshops at numerous conferences throughout Europe that middle on one very particular side of product design: parts.

I really like parts! They’re the beginning, the top, the hair-tearing-out center, the “constructing blocks,” and the inspiration — the every little thing inside each nice product design group.

The rationale they’re so essential to me is as a result of, firstly, who doesn’t like effectivity? Second, and extra importantly, they’re confirmed to extend the time-to-delivery from design to engineering, and right here comes a buzzword — they provide a path to return on funding (ROI) inside design groups. That is changing into more and more essential in a troublesome hiring market. So what’s to not love?

Observe: You could be concerned about watching Matt Gottschalk’s speak from Figma’s Config 2023 convention, which was devoted to the subject of ROI inside small design groups. The speak explored how small design groups can use design methods and design operations to assist designers have the fitting setting for them to ship higher, extra impactful outcomes.

Driving change with design methods and course of.” (YouTube recording of Matt Gottschalk and Aletheia Délivré talks at Figma Config 2023.)”>
Driving change with design methods and course of.” (YouTube recording of Matt Gottschalk and Aletheia Délivré talks at Figma Config 2023.)

Effectively, let me inform you a bit secret: parts are onerous, however not truly onerous to create. In reality, it’s arguably too simple to create a element on the design aspect. Have you ever ever seen a neighborhood element in your design recordsdata, one {that a} member of your staff created to hurry up their ideation and workflow? And talking of pace…

“It’s a signature trait of design system groups to consider they’re transferring too sluggish and should transfer quicker. Truly, profitable design methods transfer extra slowly than the merchandise they help.”

— Josh Clark, “Ship Sooner by Constructing Design Programs Slower

There’s nothing stopping anybody from creating extra parts exterior of your design system every time they need. Nothing even stops individuals from creating parts which are an identical to those you already have! Don’t fear, we’ve all been there.

The benefit at which we will create parts contrasts so much with the issue of making a “good element.” The phrase “good” is subjective, and that’s precisely my level: each group has completely different necessities, many design groups wrestle to align on naming conventions even for the only of parts, and most engineering groups work in barely alternative ways.

I’d personally favor to not use phrasings comparable to “good” or “dangerous” parts as a result of, as curious creatives, everyone knows that there’s no such factor as “one dimension matches all of them” on the subject of design. That lovely person interface package you paid $99 for? It wasn’t designed for your corporation, so it’s a must to recreate or manipulate a whole lot of the work to make it match. That superb ReactJS calendar widget your engineers discovered? It seems it’s not accessible inside display screen readers, and it’s a must to rework it after which undergo one other spherical of high quality assurance (QA) testing anyway.

Parts are inherently a part of a system that spans design and engineering — and sometimes model and advertising, too. We, as designers, are seemingly on a mission to name this a design system, however I’d a lot favor for us as an business to steer away from making use of the phrase “design” to actions which are cross-functional by nature. It would enhance collaboration and assist to foster a tradition of shared duty. It’s essential to remind ourselves that everybody is an issue solver, no matter job title! Possibly we may conform to name them merely… methods? (Let’s possibly not argue over that simply but; we’ve solely simply begun.)

As proof of this, a designer might help craft an API (utility programming interface) construction, and an engineer might help fine-tune a person circulation for a posh kind. That is collaboration in its purest kind and one thing we shouldn’t attempt to make tougher by making use of one self-discipline’s space as a stamp on cross-functional output.

Moreover, with the inherent flexibility of our design instruments, we’re usually setting ourselves up for failure with our creations.

In the end, all we would like are parts that are:

  • Flexible,
  • Repeatable,
  • Adoptable,
  • Indexable,
  • Logical,
  • Specific.

For now, let’s name this the FRAILS framework.

Observe: You’re in all probability pondering: “versatile” and “particular,” aren’t they a bit conflicting? And also you’d be form of proper. Nonetheless, this is likely one of the objectives of virtually each design staff I’ve spoken to. There’s a world the place each versatile and particular can stay aspect by aspect, however the problem we face is the necessity to determine on a mannequin of a system that’s both versatile or inflexible or lives in a “midway home.” (I’ll clarify a bit later how we will sort out both of those approaches.)

On this article (Half 1), we’ll take the primary two factors, Versatile and Repeatable, and we’ll take a look at constructing methods with these objectives in thoughts. Prepared? Let’s go.

Versatile

When requested to outline “consumable parts,” I usually discover that the commonest reply by the design groups is “a element that’s versatile.” This will imply a couple of issues!

Versatile: The Element Cases Can Be Modified

When planning for scale, the best method (from a upkeep perspective) is to create a small batch of parts that may be modified infinitely on the occasion degree. This makes a whole lot of sense! Reusability — or don’t repeat your self (DRY) — is a key idea in software program engineering. Why wouldn’t we need to borrow from this established norm?

“Don’t repeat your self (DRY) is a precept of software program growth aimed toward decreasing repetition of knowledge that’s more likely to change, changing it with abstractions which are much less more likely to change. The DRY precept is acknowledged as: “Every bit of data will need to have a single, unambiguous, authoritative illustration inside a system.”

— “Don’t repeat your self” (Wikipedia)

However there’s a aspect impact to flexibility, and that’s when one thing is modified to a degree that you just, the maintainer, don’t need. As I stated earlier, it’s extremely simple to make adjustments in design software program, which may generally imply you’re setting parts as much as be too versatile.

For example, let’s take the unfavourable (warning) state of your kind enter fields, the one usually with a pleasant crimson border if some information is lacking or incorrectly entered into them. What occurs if a designer in your staff adjustments that to a somewhat good inexperienced colour? That is flexibility in its core, and we will by accident promote this by creating generic parts that require customization with each utilization.

A diagram which illustrates semantic color meanings. Red is for negative, orange is for notice, green is for positive, blue is for informative, and accent recreated from Adobe Spectrum’s design system.
Diagram illustrating by way of labels the semantic colour meanings for crimson (unfavourable), orange (discover), inexperienced (optimistic), and blue (informative and accent) recreated from Adobe Spectrum’s design system. (Massive preview)

Like in most issues, an answer to that is schooling and communication. If you happen to aren’t comfy with modifications on kinds, chances are you’ll need to arrange your parts in such a approach as to point this. For instance, utilizing emojis in layers is the quickest technique to say, “Hey, please don’t edit this!” or “You may edit this!”.

Or, take into account delivery out parts which are named for intention. Would separating parts completely (parts named for intention) work higher? An Enter/Error, somewhat than a customizable Enter?

On the left is shown a single component, one input that contains two fields (default and error); on the right, there are now two components: one is for default, the other for error.
Splitting parts: one enter area with a default and error state turns into two particular person parts. (Massive preview)

When contemplating the emoji title method, right here’s a set that I’ve relied on previously:

  1. Parts
    • 🚨 Deprecated
    • 🟠 Not prepared
  2. Element cases
    • 🔐️ Not editable
    • ✍️ Overwritten title
  3. Layers
    • ✍️ Editable
    • 🚨 Necessary
  4. Element properties
    • ◈ Kind
    • ✍️ Edit textual content
    • 🔁️ Swap occasion
    • 🔘 Toggle
    • ←️ Left
    • →️ Proper
    • 🖱 Interplay
    • 📈 Knowledge
    • ↔️ Dimension
An illustration that shows emoji naming conventions within components, component instances, layers, and component properties.
Emoji naming conventions inside parts, element cases, layers, and element properties. (Massive preview)

Versatile: Responsive Design

Ahh, our outdated good friend, responsive design (RWD)!

“The management which designers know within the print medium, and sometimes need within the internet medium, is just a operate of the limitation of the printed web page. We must always embrace the truth that the online doesn’t have the identical constraints and design for this flexibility. However first, we should settle for the ebb and circulation of issues.”

— John Allsopp, “A Dao of Internet Design

Because it stands, there isn’t any native answer inside Figma to create absolutely responsive parts. What I imply by “absolutely responsive” is that format instructions and contents change in response to their breakpoint.

Right here’s an instance:

The same card is at different breakpoints: desktop (1440), tablet (768), and mobile (320). The card contains the following elements: a photo of raspberries, ‘Card Title’, ‘Card description’, and ‘Action’ button; and each element within each card is rearranged differently at different breakpoints.
A card at completely different breakpoints: desktop (1440), pill (768), and cellular (320). (Massive preview)

Observe: It’s technically doable to attain this instance now with auto format wrapping and min/max widths in your parts, however this doesn’t imply that you would be able to construct absolutely responsive parts. As an alternative, you’ll seemingly find yourself in a magic numbers soup with a prolonged listing of variables to your min and max widths!

With this limitation in thoughts, we might need to rethink objectives round responsive design inside our element libraries. This may increasingly take the type of adapting their construction by introducing… extra parts! Do we would like to have the ability to ship one element that adjustments from cellular all the way in which as much as the desktop, or wouldn’t it be simpler to make use of, discover, and customise separate parts for every distinct breakpoint?

“Regardless of the enjoyable sounding title, magic numbers are a nasty factor. It’s an old-fashioned time period for ‘unnamed numerical fixed,’ as in, just a few numbers put into the code which are in all probability very important to issues working accurately however are very tough for anybody not intimately conversant in the code to grasp what they’re for. Magic numbers in CSS consult with values which ‘work’ beneath some circumstances however are frail and susceptible to interrupt when these circumstances change.”

— Chris Coyier, “Magic Numbers in CSS

By no means be hesitant to create extra parts if there’s a chance that adoption will enhance.

Then, what does this seem like inside Figma? We’ve got a couple of choices, however first, we have to ask ourselves a couple of questions:

  1. Does the staff design for numerous display screen sizes/dimensions? E.g., cellular and desktop internet.
  2. Does the event staff construct for a particular platform/display screen dimension(s)? E.g., an iOS staff.
  3. Do you construct apps aligning with native fashion guides? E.g., Materials Design.
An image that shows a matrix that can help you decide whether your components should be shared or unique. It is created in the form of a table; the table header has ‘Shared Components’ and ‘Unique Components’; on the left, there is a series of questions in three rows, and there are checkboxes in the columns/rows intersections.
A matrix that can assist you determine whether or not your parts ought to be shared or distinctive. (Massive preview)

The solutions to those questions will assist us decide how we should always construction our parts and, extra importantly, what our library constructions will seem like.

An illustration that shows a design system structure example within Figma. The title is ‘UI Kit’, and below are five boxes: ‘File: Foundations’, ‘File: Icons’, ‘File: ‘Global’, ‘File: iOS’, and ‘File: Android’.
A design system construction instance inside Figma. (Massive preview)

If the reply to questions 1. (Design for numerous display screen sizes/dimensions?) and 2. (construct for a particular platform/display screen sizes?) is “No,” and to 3. (Construct apps aligning with native fashion guides?) is “Sure,” to me, which means that we should always cut up out parts into separate element library recordsdata. We don’t need to enter right into a world the place an iOS element is by accident added to an online design and pushed to manufacturing! This turns into more and more frequent if we share element naming conventions throughout completely different platforms.

If the reply to query 3. (“Will we construct native apps, utilizing their design tips?”) is “Sure,” this undoubtedly requires a separate element library for the platform-specific kinds or parts. You could need to examine an choice the place you’ve a world set of kinds and parts used on each platform after which a extra localized set for when designing in your native platforms.

The instance under, with an instance mapping of library recordsdata for an iOS design challenge, is impressed by my Figma neighborhood file (“Easy design system construction”), which I created that can assist you arrange your design system extra simply throughout completely different platforms.

Get “Easy design system construction” [FigJam file / Luis Ouriach, CC-BY license]

An example mapping of library files for an iOS design project. The image is similar to the previous one: the title is ‘UI Kit’, and below are five boxes. From the first four boxes (‘File: Foundations’, ‘File: Icons’, ‘File: ‘Global’, ‘File: iOS’), there are four arrows going into another larger box at the bottom that says: ‘File: iOS App designs’. From the box ‘File: Android’, there is no arrow.
An instance mapping of library recordsdata for an iOS design challenge. (Massive preview)

In case you are designing throughout a number of platforms in a device-agnostic method, you’ll be able to deliver parts so much nearer collectively! If you happen to aren’t at the moment working with an agnostic codebase, it is perhaps price checking Mitosis (“Write parts as soon as, run all over the place”).

A typical problem amongst growth groups is utilizing the identical language; whereas one sub-team could also be utilizing Vue, one other maybe is utilizing React, inflicting redundant work and forcing you to create shared parts twice. In “Create reusable parts with Mitosis and Builder.io,” Alex Merced explores intimately Mitosis, a free instrument developed beneath the MIT license. Mitosis can compile code to plain JavaScript code along with frameworks and libraries comparable to Angular, React, and Vue, permitting you to create reusable parts with extra ease and pace.

A screenshot of a page from the Simple design system structure Figma community file, by Luis Ouriach.
The “Easy design system” Figma neighborhood file. (Massive preview)

Utilizing A Variant

This may increasingly seem like a variant set, with a particular property for machine/dimension/platform added. For instance,

A screenshot that shows the use of variants. There are two cards here that are similar to the ones found in the ‘A card at different breakpoints’ illustration. The cards contain the following elements: a photo of raspberries, ‘Card Title’, ‘Card description’, and ‘Action’ button; and each element within each card is rearranged differently for the different platforms: desktop and mobile.
Utilizing variants for various platform varieties. (Massive preview)

As you’ll be able to think about, as these parts enhance in complexity (with completely different states added, for instance), this may grow to be unwieldy. Combining them into the identical variant is beneficial for a smaller system, however throughout bigger groups, I’d advocate splitting them up.

Utilizing Sections

You may take into account grouping your parts into completely different sections for every platform/machine breakpoint. The method could be the next:

  1. Use pages inside Figma libraries to prepare parts.
  2. Throughout the pages, group every breakpoint into a piece. That is titled by the breakpoint.
  3. Title the element by its semantic, discoverable title.
An image similar to the previous one in the list. The cards again contain the following elements: a photo of raspberries, ‘Card Title’, ‘Card description’, and an ‘Action’ button. On the left, the Desktop card layout is shown with a horizontal content arrangement, and on the right, the Mobile one with a vertical content arrangement.
Utilizing sections for parts. (Massive preview)

There’s a caveat right here! I’m positive you’re questioning: “However couldn’t variables deal with these breakpoints, eradicating the necessity for various parts?” The reply, as all the time, is that it’s all the way down to your particular implementation and adoption of the system.

In case your designer and developer colleagues are comfy working throughout the variable workflow, you could possibly consolidate them! If not, we could also be higher served with many parts.

Moreover, the split-component method means that you can deal with parts in a structurally completely different method throughout these completely different sizes — one thing that isn’t at the moment doable with variants.

Auto Structure

No matter how we manage the parts, responsiveness could be pushed very far with using auto format at each degree of our screens. Though it may be intimidating at first, the auto format makes parts work equally to how they’d be structured in HTML and CSS, transferring design and engineering groups nearer collectively.

Auto format and minimal width inside Figma in motion.

As talked about earlier than, we will get very near responsive design with Figma through the use of variables and auto format, however ought to your format construction or typography kinds differ considerably between every breakpoint, chances are you’ll be higher off sustaining a number of parts as an alternative of 1 hyper-flexible one.

Repeatable

Of their essence, each element is repeatable. The problem with how reusable a element is arises once we begin to consider its specificity. Specificity usually means the next:

  • Textual content material: labels, titles, or textual content content material usually.
  • Imagery/media: cropping, side ratios, fashion.
  • Association: the order of parts inside parts.

Textual Content material

Overrides for textual content are sometimes a big hurdle to leap over when beginning your design system journey, however there are two most important issues we will do to cut back potential losses and keep override preservation inside our cases.

“Override preservation” is sort of a mouthful, so let’s outline that first.

A screenshot that shows a generic input field, with a value of ‘Label’.
A generic enter area. (Massive preview)

Let’s take a easy instance: a generic enter area. In your most important element, you’re more likely to have a textual content label inside it with the textual content, e.g., “Label.” Generics are helpful! It implies that we will swap this content material to be particular to our wants at an occasion degree.

Now, let’s say you insert this element into your design and swap that “Label” content material for a label that reads “E mail handle.” That is our override; to date, so good.

A screenshot that illustrates an override to the previous input field. The value now reads ‘Email address’.
Let’s change the worth of “Label” to “E mail handle” — that is an override! (Massive preview)

Nonetheless, in case you then determine to vary your most important element structurally, you place that label vulnerable to dropping its overrides. For example of a structural change, your authentic “Placeholder” now turns into a “Label” above the enter area. Instinctively, this may increasingly imply creating a brand new textual content component for the label. However! Do you have to do this, you’re dropping the mapping between your authentic textual content component and the brand new one.

A more complex illustration that shows what happens when you make a structural change and the ‘Placeholder’ becomes a ’Label’ above the input field. Top: Old component; bottom: New component.
If you happen to make a structural change and the “Placeholder” turns into a “Label” above the enter area, you create a brand new textual content component for the label, dropping the mapping between your authentic textual content component and the brand new one. (Massive preview)

This might doubtlessly break your present signed-off designs. Despite the fact that this looks like it may work — layer names are a good way to protect overrides — they’re separate parts, and Figma gained’t know the best way to switch that override to the brand new component.

At this level, introducing element properties can save us from this hassle. I’d advocate including a textual content element property to all your textual content layers with a purpose to attempt to forestall any lack of information throughout the design recordsdata by which we’re utilizing the element.

An illustration that shows how a text component property is added to your text layers.
I like to recommend including a textual content element property to your textual content layers. (Massive preview)

As I confirmed earlier than, I discover including a writing emoji (✍️) to the property title is a pleasant technique to hold our element properties panel as scannable as doable.

Content material Specificity

A call then must be made about how particular the default content material is throughout the element.

And that is the place we should always ask ourselves a query: do we have to change this content material incessantly? If the reply is sure, abstracting particular textual values from parts implies that they are often interpreted extra extensively. It’s a bit little bit of reverse psychology, however a textual content layer studying “[placeholder]” would immediate a designer to vary it to their native use case.

Two examples are shown. On the left is ‘Fixed content’, on the right is ‘Flexible content’. In the flexible content example (on the right), a text layer reading ’[placeholder]’ below ‘[Label]’ would prompt a designer to change it to their specific local use case.
Mounted content material/Versatile content material instance. Within the versatile content material instance, a textual content layer studying “[placeholder]” would seemingly immediate a designer to vary it to their native use case. (Massive preview)

If the reply is no, we’ll bake the fastened worth we would like into the element. Going again to our enter area instance, we’d set the default label worth to be “E mail handle” as an alternative of “placeholder.” Or, we may create a wholly new electronic mail handle element! (It is a name we’d have to make based mostly on anticipated/recorded utilization of the element.)

Imagery / Media

When establishing a content material system inside Figma, a couple of completely different questions instantly pop up:

  1. How do you utilize particular media for particular parts?
  2. How do you repair side ratios for media?

Inside Figma, a picture is actually a fill inside a form somewhat than its personal content material kind, and this impacts how we handle that media. There are two methods to do that:

  1. Utilizing kinds.
  2. Utilizing element units (variants).

Earlier than we take a look at kinds and parts, although, let’s check out the format that each one belongings inside Figma may take.

There are six boxes in the image. The top row is Media format: [Domain] / [Type] / [Name]; and the bottom row is Media example: Figma.com / Logo / FigJam.
The proposed media format: [Domain] / [Type] / [Name], with an instance: Figma.com / Brand / FigJam. (Massive preview)

Virtually, I’d advise establishing your media belongings as their personal library inside Figma, doubtlessly even establishing a couple of libraries in case you work throughout numerous merchandise/manufacturers with completely different approaches to media.

A proposal for a Figma library media structure. Three file boxes on the left: Media → Global, Media → Product, Media → Marketing. Then there’s an arrow that points from these three file boxes to another box on the right, which shows ‘Pages’ at the top of it, and then there are ‘Logos, Icons, Illustrations, Images, Videos’ underneath.
A proposal for a Figma library media construction. There are three recordsdata: Media → International, Media → Product, Media → Advertising. Inside these recordsdata, the concept is to have the next web page construction: Logos, Icons, Illustrations, Pictures, and Movies. (Massive preview)

For instance, the imagery your product staff makes use of inside design recordsdata and advertising supplies is more likely to be very completely different, so we’d look to set these up as completely different Figma libraries. A designer utilizing these belongings would toggle “on” the library they should create an asset for a particular intention, retaining the fitting media in the fitting place.

As a result of this media is identical as another fashion or element inside Figma, we will use slash naming conventions to group forms of media throughout the names.

Area examples:

  • Firm web site,
  • Product,
  • Advertising,
  • Sub model/s.

Media varieties:

  • Brand,
  • Icon,
  • Illustration,
  • Picture,
  • Video.
A screenshot that shows four example styles. Four boxes on it, and inside each box: ‘Figma.com/Logo/Figma,’ ‘Figma.com/Icon/Variable,’ ‘Figma.com/Illustration/Components,’ ‘Figma.com/Image/Office.’
4 instance kinds: Figma.com/Brand/Figma, Figma.com/Icon/Variable, Figma.com/Illustration/Parts, Figma.com/Picture/Workplace. (Massive preview)

Instance names, utilizing the format:

  • Figma.com/Brand/Figma,
  • Figma.com/Icon/Variable,
  • Figma.com/Illustration/Parts,
  • Figma.com/Picture/Workplace,
  • Designsystems.com/Brand/Stripe,
  • Designsystems.com/Icon/Hamburger,
  • Designsystems.com/Illustration/Orbs,
  • Designsystems.com/Picture/Modular grid.

These are cut up into:

  • Library: Figma.com or Designsystems.com,
  • Media kind: Illustration or Brand,
  • Media title: e.g., Element libraries, Iconography.

Though I’m utilizing photos for the examples right here, it really works with video belongings, too! This implies we will transfer within the course of successfully utilizing Figma like a mini DAM (digital asset supervisor) and iterate quick on designs utilizing brand-approved media belongings, somewhat than counting on dummy content material.

“A digital asset administration answer is a software program answer that gives a scientific method to effectively storing, organizing, managing, retrieving, and distributing a company’s digital belongings. DAM performance helps many organizations create a centralized place the place they will entry their media belongings.”

— IBM, “What’s digital asset administration?

Utilizing Fill Kinds

Fill kinds aren’t only for colour! We are able to use them for photos, movies, and even illustrations if we need to. It’s price taking into consideration that due to the versatile nature of fills, chances are you’ll need to take into account working inside fastened sizes or side ratios to make sure cropping is saved to a minimal.

Figma’s redline “snapping” function lets us know when the unique asset’s side ratio is being revered as we resize. It’s a reasonably cool trick!

The redline “snapping” function lets us know when the unique asset’s side ratio is being revered as we carry out a resize.

Utilizing Element Units (Variants)

Instinctively, this may increasingly not make a lot sense. Pictures as parts? However they’re photos! Nonetheless, it supplies us with way more management over how photos are used throughout the system.

Pictures as parts is the tactic you’ll need to use if you’re designing in a world of fastened side ratios for design, e.g., 16:9, 4:3, 1:1, and so forth. That is sometimes outlined by the grid you utilize in designs and is most helpful for individuals who aren’t utilizing media as a background for a versatile object.

It’s additionally the very best technique for belongings like logos, illustrations, and icons, the place chances are you’ll want variations of the unique for various use instances. For instance, a crammed and an overview model or completely different stroke widths for various sizes.

A detailed image that shows a proposal for structuring a Figma variant component for mixed aspect ratios and sizes. The top shows the X axis (for the aspect ratios), and the left shows the Y axis (for the sizes, in pixels). A photo of a cat is being used to illustrate the different aspect ratios.
A proposal for structuring a Figma variant element for blended side ratios and sizes. Alongside the X axis are the side ratios, and on the Y axis are the sizes. (Massive preview)

You will get the above instance from Figma’s neighborhood:

Mounted side ratio photos with variants” [Figma file / Luis Ouriach, CC-BY license]

For this world, although, I’d advise towards attempting to hack Figma into establishing absolutely responsive photos. As an alternative, I’d advocate working with a predefined fastened set of sizes in a element set. This may increasingly sound like a limitation, however I strongly consider that the extra time we spend inside Figma, the additional we get from the manufacturing setting. “Can we take a look at this within the precise product?” is a query we ought to be asking ourselves incessantly.

Virtually, this appears like making a element set the place we set the fastened sizes alongside one dimension and the side ratio alongside the opposite. Making a matrix like this implies we will use the Element Properties panel to toggle between sizes and side ratios, preserving the media contained in the element.

This can be utilized in tandem with a separate set of parts particularly for photos. If we mix this with Figma’s “nested cases” function inside variant parts, we will “floor” all the popular photos from our element set inside each occasion on the side ratios wanted!

A detailed image that demonstrates how to nest a main variant component for each image type, which is then nested inside a separate variant component for the size. Again, a photo of a cat is being used in the explanation.
An indication of nesting a most important variant element for every picture kind, which is then nested inside a separate variant element for the dimensions. (Massive preview)

Association

That is the toughest factor to foretell once we assume by way of the usability of customizable parts. The only instance right here is our outdated enemy: the shape. Instinctively, we might create an entire kind in a element library and publish it to the staff. This is sensible!

The difficulty is that when a designer engaged on a selected challenge requires a rearrangement of that construction, we’re form of in hassle.

A detailed image that shows a form component in two variations. On the left, we have a form with ‘full name’, ‘email address’, and a ‘sign up’ button. On the right is shown a form in the same visual style, but the fields are ‘first name’, ‘second name’, and ‘email address’; and the button after the fields is now a button group (two buttons): one button for “cancel”, the other button for “sign up”.
A kind element in two variations. Left: We’ve got a kind with “full title,” “electronic mail handle,” and a “join” button. Proper: Right here we have now a kind in the identical visible fashion, however the fields are “first title,” “second title,” and “electronic mail handle.” The button has been transformed right into a button group: one button for “cancel,” the opposite for “join”. (Massive preview)

This drawback extends to virtually all element teams that require manipulation. Tables, menus, lists, varieties, navigation… we’ll hit this wall incessantly. That is the place I’d prefer to introduce the idea of fastened vs versatile content material inside parts, which ought to assist to handle the long run issues of a world the place we put the DRY (don’t repeat your self) ideas in danger.

As design system maintainers, we naturally need to hold parts as composable as doable. How can this one element be utilized in a number of alternative ways with out requiring us to ship an infinite quantity of variations? That is the central theme of the DRY precept however could be difficult in design instruments due to the dearth of element order administration inside the principle parts.

Because of this, we frequently find yourself in a world the place we construct, keep, and ship limitless variations of the identical element in an try to sustain with snowflake implementations of our core element.

“‘When ought to we make one thing a element?’ is a query I’ve been fielding for years. My robust reply: proper from the beginning. Creating issues with a component-based mindset proper out the gate saves numerous hours — every little thing is a element!”

— Brad Frost, “Design system parts, recipes, and snowflakes

For instance, the shape we spoke about earlier than could possibly be one for:

  • Logging in;
  • Registering;
  • Signing as much as the e-newsletter;
  • Including billing data.

These are all clearly varieties that require completely different information factors and performance from an engineering perspective, however they are going to most definitely share frequent design foundations, e.g., padding, margins, headings, labels, and enter area designs. The query then turns into, “How can we scale back repetition while additionally encouraging combinatorial design?”

An illustration that shows how to fix the spacing values between each element while making the combinations of components infinitely flexible. Two forms with different spacing component combinations are being shown.
When designing varieties, we have to repair the spacing values between every component however make the mixtures of parts infinitely versatile. (Massive preview)

An idea that has been long-used within the developer world and loosely agreed upon within the design neighborhood is termed “element slots.” This method permits the design system maintainers to ship element containers with agreed properties — sizing, padding, and kinds — while permitting for a versatile association of parts inside it.

Taking our earlier kind examples, we will then summary the content material — login kind, register kind, e-newsletter kind, and billing data kind — and supply a a lot easier shell element from the library. The designers utilizing this shell (let’s name it a “kind/wrapper”) will then construct their varieties regionally and change the slot element contained in the shell with this new customized most important element.

That is finest defined visually:

Scoped slot parts”>
Figma tip: Scoped slot parts

The query then turns into: “The place ought to these customized parts stay?” The method turns into the identical as it could for any element, which ought to hopefully align along with your staff’s coverage already.

A complex illustration that shows a usage graph for components. There are three main elements in the illustration. The top one shows the ‘Global component,’ the middle one ‘Domain/team component,’ and the bottom one ‘Snowflake component.’
A utilization graph for parts. If you happen to want a snowflake element particular to your function work, retailer it regionally within the file. Whether it is required by your particular staff or platform, you’ll be able to transfer it right into a staff library. If it must be globally used, transfer it into the broader design system. (Massive preview)

Does this tradition element have to stay in a number of recordsdata? If sure, we transfer it to the subsequent degree up, both team-level libraries or world, if engaged on a smaller system. If not, we will comfortably hold that element native to the particular Figma file on a web page (I prefer to name it “❖ Parts”).

Necessary: For this premise to actually work, we should make use of auto format at each degree, with no exceptions!

Conclusion

That was so much to course of (over 5 thousand phrases, truly), and I believe it‘s time for us to cease staring on the pc display screen and take a bit break earlier than strolling by way of the subsequent set of ideas.

Go seize a drink or take some relaxation, then meet me in Half 2, the place you’ll be taught much more in regards to the adoptable, indexable, logical, and particular parts.

Smashing Editorial
(mb, yk)



RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments