Design System and Variables ➤ My experience

Structure + Variables and Tokens + Modes

Iana Kozlova
Bootcamp
5 min readAug 8, 2024

--

Creating a design system is a crucial step in ensuring consistency and efficiency in a company’s design workflow. Recently, I had the opportunity to organize a comprehensive design system for my company using our paid account in Figma. This system streamlined our design process, making it more intuitive and scalable. Here’s a detailed look at how I achieved this and the benefits that ensued.

Setting Up the Design System

To start, I created two files: one dedicated to the design system and the other for prototyping. This separation allowed us to maintain a clean and organized structure, where the design system file housed all components and styles, while the prototype file focused on the actual application designs.

Components and Styles

In the design system file, I meticulously organized components and styles into categories based on atomic design principles. These categories included:

Fondations and Styles

Colors & Fonts & Shadows & Grids

Components

  • Atoms: The basic building blocks such as buttons, input fields, and icons.
  • Molecules: More complex components made up of atoms, such as form fields that include a label and input.
  • Organisms: Even larger components consisting of molecules and atoms, such as headers or form sections.

This hierarchical structure made it easy for our team to find and use components efficiently.

Design System Structure

Variables and Tokens

To further enhance consistency, I created variables for colors, spacing, and fonts. These variables were crucial in maintaining uniformity across different designs and ensuring quick updates when needed.

Color Variables

All colors used in our prototypes were added to a collection of primitives. I then created tokens for each color, which could be easily referenced throughout the design system.

Collection of primitives and color tokens

Spacing Variables

Spacing variables were another important aspect. These variables defined the margins, paddings, and gaps between elements. By creating tokens for spacing, we could ensure that our designs had a consistent look and feel, regardless of the platform or device.

Collection of primitives and spacing tokens

Font Variables

Font variables were set up for different text styles, such as headings, subheadings, body text, and captions. Each variable included specifications for font family, size, weight, and line height. This setup ensured that our typography was consistent and adaptable to various screen sizes.

Collection of font variables

Prototyping with the Design System

In the prototype file, the design system was seamlessly integrated. This integration allowed us to use the components and styles from the design system directly in our prototypes, ensuring consistency and reducing redundancy.

A prototype file linked to two design system files

Dark and Light Modes

One of the key features of our prototype project was the ability to switch between dark and light modes. This capability was essential for enhancing user experience and accessibility. By defining color variables for both modes in the design system, we could easily toggle between themes in the prototype.

Selection of light and dark modes in the prototype

Mobile and Desktop Variants

Another important aspect was designing for different devices. We created variables for spacing and fonts tailored to both mobile and desktop experiences. This approach allowed us to ensure that our designs were responsive and looked great on any screen size.

Selection of different modes in the prototype

Benefits of a Well-Organized Design System

Implementing this design system brought several benefits to our workflow:

  1. Consistency: By using predefined variables and components, we ensured that our designs were uniform across all projects.
  2. Efficiency: Designer can quickly find and apply components, reducing the time spent on creating new designs from scratch.
  3. Scalability: The design system made it easy to update styles and components globally, which is particularly useful for large-scale projects.
  4. Collaboration: With a shared design system, our team could collaborate more effectively, as everyone was working with the same set of tools and guidelines.
  5. Developer-Friendliness: The organized and consistent structure made it easier for front-end developers to work with the design system, which improved the speed of implementation.⚡🚀

Organizing a design system with well-defined variables and components can greatly enhance a design team’s productivity and output quality. By separating the design system and prototype files, creating a hierarchical structure, and defining variables for key design elements, we established a robust framework that catered to both our present and future design needs.

Future Plans

Moving forward, we plan to synchronize our design system in Figma with components in Storybook, ensuring that our design system stays aligned with the actual codebase. Additionally, we aim to sync these components from Storybook directly with our working projects, creating a seamless and efficient workflow from design to development.

Thank you for your attention! I would greatly appreciate any feedback or comments you may have. Good luck with your own design systems!

--

--