Components Overview: the reusable pieces of a Design System
Digital Products UI are made up of components in a Design System that teams can update and share on a large scale to keep the experience consistent and intuitive. Let’s dive in together.
Riccardo Marconato
Aug 5, 2024
Design System
One of the main reasons to set up a Design System is to sidestep the confusion that comes from having different designs for the same issue. Take buttons, for example; they're interactive and are recognized as click-ready elements that trigger an action when clicked. Since these buttons pop up all over a UI, you'll see the same button on many pages.
Things can get messy fast when you're working on a product as a designer, especially if you need to update more than 1000 buttons at once.
Plus, it's easy to slip into designing that button differently every time you add it to the interface, leading to an inconsistent look. The problem with inconsistent design is that users get thrown off by changing visuals on the screen, causing confusion and discomfort.
That's where Design System components come in handy. Let's dive into what they are and why they're so important.
What is a component in a Design System?
Components are reusable design elements that form the interface of a product. They can be anything from simple components like buttons, icons, and form fields to more complex components like navigation menus and card layouts. These components maintain consistent styles, behaviors, and functionalities across all the pages they appear on.
Having predefined components in a Design System lets designers quickly create and update user interfaces without starting from scratch each time. This not only saves time and effort but also keeps things consistent across the product.
Every design or development tool related to a Design System has components (sometimes called "master component," "base component," "source," etc.) and instances of that component. The idea is that changes you make to a master component appear in all its instances. So, if you resize the master component, all the instances get resized too. Similarly, if you tweak the color of the master component, every instance will adopt the new color.
Sometimes you'll need to tweak an instance, which creates an override. For example, if you have a button labeled "button," it should be updated to show its actual purpose, like "Sign Up" or "Log In."
What really matters for a component is having control over your design and consistency, ensuring that UI elements are repeated across all pages and are easily recognizable.
Components variants and properties
To make your Design System more flexible, you can create component variants. These are different versions of the same base component for various use cases. For instance, a button component might have variants for primary, secondary, and tertiary buttons, each with different colors, sizes, and styles.
Using component variants lets designers easily tweak components for specific needs without starting from scratch. This not only keeps things consistent but also saves time and effort during the design process.
While it's important to avoid confusing users with different designs for each element, it's also key for UI elements to have design variants since they don't all serve the same purpose. Take buttons, for example—they can come in different styles and have specific properties, each with a particular use case defined by a Design System. A primary button is meant for key actions, whereas secondary buttons (or outline buttons) are typically used for less crucial actions.
Main components in a design system
There are few essential components in system design that you are likely to use, and I have listed them here along with guidelines on their use cases and functionality.
Buttons
You can't finish a design without buttons. They're one of the key features you just can't skip, no matter what. Buttons help guide users through a series of pages or screens and act as calls to action.
Every design should include a primary button, and if needed, secondary and tertiary buttons as well. Buttons are a great way to lead users to where you want them to go because, let’s face it, we all love clicking on them!
Tabs
Tabs are a great way to organize similar information on a single page. They help break up content, making it more readable and easier to navigate. However, it's important to use tabs effectively—avoid cramming too many categories into one bar for just small pieces of information. Keep tab titles concise to enhance their appearance on the page.Tags
Tags are used to label UI information for quick recognition and the navigation of similar items. A great example is Pinterest, where you can use tags under an image to find more similar ones.
Custom colored tags have also proven to organize large amounts of user-friendly and less noisy content. A simple tag can link to tens of different variations of the same product.
Radio buttons
Radio buttons are essential for limiting user responses since they allow users to select just one option at a time. This helps minimize errors caused by information overload or misinterpretation, so make sure to use them when needed.
Breadcrumbs
Breadcrumbs are a great way to help users navigate your design without feeling lost. They visually track progress through different levels or links in a hierarchy. This feature also enhances user-friendliness, as no one wants to click the back button multiple times just to return to the main page.
Form Inputs
Forms are used when we need a user to respond in order to complete an action. They’re a great way to gather user data and often include components like checkboxes, radio buttons, or text fields to make the process easy and intuitive.
Dropdown menu
They simplify our UI, save space, and enhance our designs. Drop-down menus have become a standard in design systems, so be sure to include them in yours. They can also help reduce clutter and organize information by grouping similar items together.
Icons
Icons are great for conveying complex ideas in a simple and visually appealing way. They can replace long sentences or labels, making your UI more compact and user-friendly. However, be sure to use easily recognizable icons to avoid confusion.
Progress bars
Progress bars provide valuable feedback to users while they wait for an action to complete. They enhance the overall experience by reducing uncertainty and helping users understand how far along they are in a process.
Tooltips
Tooltips are those handy little boxes that pop up when you hover over an item. They give you extra information or clarification without cluttering up the main interface.
Progress Indicators
Progress indicators and progress bars are fantastic additions to your design. They let users know how far they’ve come in a process, whether they’re reading an article or signing up for a new platform.
Toggle
Toggle bars started out in mobile UI but have become a great feature for any design software. When you're creating your design, remember to include a toggle for light/dark mode—it’s a lifesaver for us night owls!
Navigation
Good navigation is essential for any design. Whether you're designing a website or an app, it's crucial to have clear and intuitive navigation so users can easily find what they're looking for. This also includes having a search bar for quicker access to specific content. Don't make your users go on a scavenger hunt to find what they need.
Keeping consistency in check with components
Consistency is key in design. It helps users feel comfortable and familiar with your interface, making it easier to navigate and understand.
Using components is a great way to keep things consistent across your design. By sticking with the same components or templates for similar elements, you create a cohesive look and feel throughout.
With just one component, you save time and avoid confusion, as users will recognize familiar design elements and know how to use them. Plus, updating and making changes becomes a breeze since you only need to tweak one component instead of multiple instances in your design.
In my career, I’ve been a fan of the master component/instance approach even before diving into Design Systems. It’s been super helpful for cutting down workload while allowing for quick edits and better product ownership.