Atomic Design

Creating a Universe

Atomic Design

Creating a Universe

Defining the world

The creation of the world is a topic that has fascinated humanity for millennia.

Across different cultures and religions, various myths and beliefs have emerged to explain how the world came into being.

Lets explore the creation of the world through the lens of design, focusing on how people from diverse backgrounds see and understand patterns, interpret meaning, and assign significance to elements such as light and dark, Earth and Heaven and Yin and Yang.

Defining the world

The creation of the world is a topic that has fascinated humanity for millennia.

Across different cultures and religions, various myths and beliefs have emerged to explain how the world came into being.

Lets explore the creation of the world through the lens of design, focusing on how people from diverse backgrounds see and understand patterns, interpret meaning, and assign significance to elements such as light and dark, Earth and Heaven and Yin and Yang.

Defining the world

The creation of the world is a topic that has fascinated humanity for millennia.

Across different cultures and religions, various myths and beliefs have emerged to explain how the world came into being.

Lets explore the creation of the world through the lens of design, focusing on how people from diverse backgrounds see and understand patterns, interpret meaning, and assign significance to elements such as light and dark, Earth and Heaven and Yin and Yang.

Let me show you how I create definitions for a new project

Project:

ANZ Commercial Lending Platform

Description:

ANZ CLP is a platform for the entire 'end to end' commercial lending used by ANZ bankers, external brokers and ANZ end customers.

The platform itself is based on a KYC solution provided by a third party vendor.

My task:

Create a scalable and comprehensive design system that will be consumed by other UX designers.

Design definitions

Before I start creating UI elements I need to ensure I set up all the variables and definitions for the design system.

Queen Blue

#557391

#557391
Marian Blue

#BDCBD8

#BDCBD8
Cobalt Blue

#0051AB

#0051AB

Token system

In Figma, tokens are a way to define and manage design tokens such as colors, typography styles, spacing, and more in a centralized way. Here are some advantages of using a token system in Figma for UI design:

Consistency

By using tokens, you can ensure consistency across your designs. When you update a token value, such as a color or a font size, it will automatically update everywhere it's used in your designs. This helps maintain a consistent look and feel throughout your designs.

Efficiency

Tokens help streamline the design process by allowing you to quickly update multiple elements at once. Instead of manually updating each instance of a colour or style, you can make changes to the token and see those changes reflected across your designs instantly.

Scalability

As your design system grows, managing design elements can become more complex. Tokens help you scale your design system by providing a centralized place to manage all your design tokens. This makes it easier to maintain and update your design system as it evolves.

Collaboration

Using tokens in Figma makes it easier to collaborate with team members. Designers can easily reference and use the same design tokens, ensuring everyone is on the same page and working with the most up-to-date styles and values.

Flexibility

Tokens allow you to experiment with different design variations quickly. By changing a token value, you can see how it affects your designs without having to manually update each element. This flexibility can help you iterate on designs more efficiently.

Overall, using a token system in Figma can help you create more consistent, efficient, and scalable designs, while also promoting collaboration and flexibility in your design process.

My token hierarchy and naming convention

Primitives (WHAT)

Primitives is the highest level of my Tokens' hierarchy. This is the "WHAT" of the future design system, and contains properties and values that exist within the entire design.

Primitives include all colours, all spacing variables, all fonts and their parameters, all round corner settings etc.

Colour

Name
Queen Blue
Marian Blue
Alice Blue
Steal Blue
Stone Blue
Cobalt Blue
Little Boy Blue
Value
557392
BDCBD8
EFF8FF
4675A4
8DA2B7
0151A9
609AD3
Name
Neutral 0
Neutral 10
Neutral 30
Neutral 50
Neutral 80
Neutral 90
Neutral 100
Value
FFFFFF
E6E6E6
B3B3B3
808080
333333
1A1A1A
000000
Name
Red 100
Red 200
Red 300
Red 400
Red 500
Red 600
Red 700
Value
FDC9C9
FDA2A3
FE8787
FD5253
EF2627
CC1919
AA1110

Spacing

Name
3xs
2x
xs
sm
md
lg
xl
2xl
3xl
Value
2
4
8
12
16
24
32
48
64

Radius

Name
None
xs
sm
md
round
Value
0
2
4
8
50%

Border Width

Name
None
sm
md
lg
Value
0
1
2
4

Typography (body)

Name
2xs

xs

sm

md

lg

Name
2xs-link

xs-link

sm-link

md-link

lg-link

Name

2xs-semibold

xs-semibold

sm-semibold

md-semibold

lg-semibold

Typography (Font Family)

Primary
Primary (Roboto)
Secondary
Secondary (Inter)
Caption
Caption (Arial)

Typography (Line Height - Body)

Name
xs
sm
md
lg
Value
16
20
24
28

Typography (Paragraph Spacing)

Name
None
sm
md
lg
Value
0
1
2
4

All new values are added to this level. All tokes in levels below get ultimately fetch their values from 'Primitives'.

Semantic (HOW)

This is "HOW" the tokens should be used.

Semantic names convey meaning, purpose, and how and where the asset should be used.

Colour

Name
Primary
Primary-Dark
Primary-Light
Secondary
Information
Value
Queen Blue
Queen Blue 600
Queen Blue 200
Marian Blue
Cobalt Blue
Name
Success
Warning
Error
Highlight
Value
Green 400
Orange 400
Red 600
Evening Lilac

Mapped (WHERE)

This is "WHERE" the tokens should be used.

Those are the tokens that consumed by the designers

Colour

Name
Surface/Success
Icon/Success
Border/Success
text/Success
Value
Success 100
Success 400
Success 600
Success 400

Spacing

Name
Padding/Success
Size
md

Radius

Name
Radius/Success
Size
md

Typography

Name
Font/Success
Font Family
Primary (Roboto)
Size
sm-semibold

Border Width

Name
Border/Success
Size
md

Success

Component Specific (optional)

Depending on the nature of the project and the team set up I might create another layer that defines tokens to be used for specific components explicitly.

Colour

Name
button-primary-background-default
button-primary-background-hover
button-primary-background-inactive
button-secondary-background-default
button-secondary-background-hover
button-secondary-background-inactive
Value
Primary
Primary-Light
Neutral 30
Secondary
Secondary-Dark
Neutral 30

Now that all properties and variables were defined as tokens it is time to start building UI elements.

My approach of creating UI and more specifically when building a design system is a methodology called "Atomic Design"

Atomic design

Atomic design system is a methodology introduced by Brad Frost that breaks down design elements into smaller, reusable components called atoms, molecules, organisms, templates, and pages. This approach is inspired by chemistry, where atoms combine to form molecules, and molecules combine to form organisms, and so on.

Atoms

Atoms are the basic building blocks of a design system. They represent individual UI elements such as buttons, input fields, icons, colours, and typography styles. These elements cannot be broken down any further without losing their meaning.

Search

About

Services

CLP design system atoms

In addition to the atoms what I've already created as tokens (colours, typography etc) I added the rest of the atoms I knew about at the beginning of the project.

Since the platform will be built on an existing KYC solution from a third-party vendor, some elements are inherited while others do not currently exist. However, all elements must be organized in a scalable structure that can be utilized and managed by members of various cross-functional teams with different levels of access.

Icons

I usually start with some icons that I know will be used in other components such as buttons and selection fields.

In this instance the vendor of the software already had a lot of icons in their base solution so I've added and all of them and created new ones that I knew we will need and were missing.

Buttons

SideNav

SideNave Footer

SideNav Footer

SF

Utility

Views

Context Utility

Chevrons

Selection Fields

Associations

Management

Conflict Resolution

Alerts

Notifications

8

Buttons

The next step was to create a button.

I had to analyse all the parameters and properties a button will need to have:

  • Types

  • States

  • Sizes

  • Variables e.g. icon and text

It also helps knowing some use cases and see if there might be a functional split for different components and even different variants of a component. In this case I knew that default and small button sizes will be used in different parts of the application and will potentially be maintained by different teams with different level of access. Therefore I've decided to split the component in two by their sizes.

Here is a breakdown of my default size button component

Default

Default

Focus - accessible

Focus/accessible

Hover

Hover

Focus

Focus

Disabled

Disabled

Primary

Primary

BUTTON

BUTTON

BUTTON

BUTTON

BUTTON

BUTTON

BUTTON

BUTTON

BUTTON

BUTTON

Icon

Text

Secondary

Secondary

BUTTON

BUTTON

BUTTON

BUTTON

BUTTON

BUTTON

BUTTON

BUTTON

BUTTON

BUTTON

And here is how a button component works once all the parameters are created and variables are linked

In the same manner I have created other components gradually moving from atoms to molecules.

Search

Search

Molecules

Molecules are combinations of atoms that work together as a single functional unit. Examples of molecules include form fields, input groups, buttons with icons, and so on.

As I mentioned before the move from atoms to molecules is seamless. Even a button can be an atom, but almost always a molecule as it usually contains more that one atom in it's component.

Input Fields

Traditionally input fields were very simple and therefore would be an atom, but nowadays input fields are usually complex and have many atoms in them.

Here is the Commentary field from the CLP design system that I put together.

As you can see it has multiple parameters and different elements (atoms) that make up this commentary field.

Interactive Components

The next stage was to prepare some components for prototypes when interaction is required. These are components that react when user interacts with them e.g. drop down boxes, tip tools, modal pop ups, checkboxes, toggles etc.

Other Molecules

Here are some other dynamic molecules that I've created as part of this task.

Head 1

Head 2

Head 3

Head 4

Head 5

Head 6

Alert Example

List option

Chip 1

Chip 2

Chip 3

Docs

Data

NA

User Assigned

Team name

7/10

Product Name

Account Name:

First and Last name

Account Number:

XXXXXXXX

Balance ($):

1,000,000

Limit/Liability ($):

1,500,000

Label

Tooltip info goes here

Organisms

Organisms are more complex components that are made up of groups of molecules and/or atoms. They represent sections of a UI, such as a header, footer, navigation bar, or card component.

About

About

Services

Services

Search

Search

The last stage of Atomic Design I will cover on this page is the creation of Organisms

Home

Home

/

/

Previous Screen

Previous Screen

/

/

Current Screen

Current Screen

8

8

This is the top navigation of CLP that can change based on the context, but this is 'vanilla' version that contains breadcrumbs, search bar, shortcut to create a new case and link to notification centre with new notifications indicator badge.

SF

And this is the side nav bar.

Updating the UI also becomes extremely simple. For instance, making a change to a single atom will be reflected across all designs that use this atom.

The strength of the atomic design approach lies in the fact that designers using these elements never have to redundantly recreate the same UI elements. This eliminates the risk of inconsistent designs and saves a significant amount of time.

This wraps up the demonstration of my approach to defining a new project and implementing atomic design from Atoms to Organisms. If you're interested in exploring how I extend this concept to create intricate dynamic patterns, please check out my case study on 'Mastering the Art of Complex UX Design Systems'.

©2024 Alex Pekarin