FREENOW Blog
Published in

FREENOW Blog

Wave library core

Wave is a complete design system. In addition to the Figma design library, we have:

GitHub
GitHub
Live docs
  • Driver App.
  • icons
  • illustrations
  • content style guide guidelines

Figma Wave library structure

Our Wave library in Figma has a fairly simple structure. Everything except icons and illustrations is in one file. Some people prefer to split the library into separate files, but we decided not to do this for now.

Library structure
Library structure
  • ReadMe and HowTo — a page with basic instructions for working with the library
  • Essentials — brief documentation on the Essentials of the library
  • Patterns — documentation on the main basic patterns. We started this section of documentation quite recently. So far, it only describes the basics of buttons
  • Forms
  • Dialogue
  • Navigation
  • Status
  • Table
  • Documentation components

Semantic styles

Plenty of design systems use semantic styles in one way or another. In most cases, this only applies to typography: we set levels for headlines, main text, and, if necessary, additional styles (for buttons, for example). And, usually, no one needs to explain what the “Headline1” or “Body Style” is for.

Not transparent color management
Not transparent colour management
Semantic colors
Semantic colours
Dark/light colors
Dark/light colours
Selecting a color style for a text
Selecting a colour style for a text

Design tokens

Tokens are the basis of our library. All styles (text, colour, and shadows) are based on tokens. In addition, we use several other tokens, which are not directly supported in Figma, like spacings. We use a special component to manage them.

Editing tokens

All styles are created and edited exclusively through the plugin. Otherwise, when you update the tokens, the edited styles will be overwritten, and the new styles will not be bound to the tokens and will be ignored when synchronising with the code.

Figma tokens — JSON
Figma tokens — JSON

Token types

We use three levels of abstraction:

Base tokens
Base tokens
Common tokens
Common tokens
Common tokens
Component tokens

Naming convention

For the tokens to work as intended, not only in the design library but also in the code, we need a clear naming convention, which we put together with help from the developers.

Naming convention
Naming convention

Mapping to Figma styles

Tokens are explicitly visible only to those designers who directly maintain the design system. The others work with the usual native Figma styles that we generate with the Figma Tokens plugin.

Maping to Figma styles
Mapping to Figma styles

Rebranding

One of the key advantages of using tokens in the design system is the ease of updating the library in case of a change in the colour library (or even a complete rebranding). In our case, the need to be prepared for possible changes in brand colours was the main argument when talking to the developers about switching to tokens. After all, our company has already changed its brand colours. In the past, we had to manually change not only every single component but every single screen. And I’m not even talking about the design. Imagine the amount of work for the developers.

Components

In Wave, we have (as of now) 50 components. This is not a lot, which makes it easier to remember. All component variations are provided by 3,300 variants (in total).

Setup

Almost all components are created according to the same principle: core functionality is implemented in the base component, and variations are implemented through variants. Some people prefer to make each variant an independent component to reduce the number of layers or nested components…. but trust me, this approach can turn your work into a real nightmare if you have to maintain complex sets of components.

Component setup
Component setup
Button component
Button component

Template

We use a special template for all components, which allows us to stay consistent across the library and simplify our work. In the header of the template, we have a date of the last update of the component (or documentation) and links to live-demo components (where you can interact with them in real life) and code (which can be useful if you want to take a closer look at the implementation).

Template description
Template description

Documentation

The template also serves as a basic frame for documentation, for both designers and developers. For design, it is very handy because in Figma you can right-click on the component and select “Go to main component”, and you’ll find the documentation. For example, to understand what options are needed for what use and how to apply them.

Documentation
Documentation
Specs
Specs

Contribution

Everyone should be able to contribute to the design system. But sometimes, designers just do not know where to start. Often the main question is, “should we create a component or not?”

Contribution
Contribution

Snowflakes library

To make the process even more friendly, we have created a special sandbox library, where each designer can add any Figma component for their projects.

Snowflakes library
Snowflakes library

Branching

When we need to add a new component to the Wave library, we start a new branch to create it. It’s best to avoid editing the library directly unless it concerns minor edits in the documentation. But even then, we use the Figma versioning system.

Release notes

After all the things listed above, keeping release notes may feel unimportant. But it’s important and incredibly useful:

  • We reuse release notes also in the description of updates of the library in Figma. And according to this description, the designer can decide whether to update or not.
Library updates dialog
Library updates dialogue

Future plans

A design system is a product that is never finished. There is still a lot to improve. We are still working on the migration of all components in code to tokens. Also, we understood that we needed a solution that would automate the migration for specific products that we created based on Wave.

--

--

We provide mobility that sets people free.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store