byfma← Work
Design SystemUI KitFigmaAtomic Design

Dashboard Design System

A Figma library for dashboard products: 49 component sets, 817 variants and 558 icons, published to the Figma Community and used 1,600 times.

role

Design System Designer

type

Personal project

year

2021

tools

Figma

49

Component sets

817

Variants

558

Icons

137

Styles

4

Screens

00Overview

A dashboard system built before the tools caught up

This system was built in 2021 — before Figma Variables, and before boolean and instance-swap component properties existed. Every token in it is a shared style, and every component property is a variant axis. That constraint is the context for everything below: choices that look verbose today were the only way to express them at the time.

01Foundations

Tokens, before tokens had a name in Figma

The file carries 137 shared styles: 55 paint, 73 text, 4 effect and 5 grid. Names are reproduced exactly as they ship — spacing, capitalisation and typos included — because that is what a reader downloading the file will see in their own style panel.

55 paint styles across 10 ramps

Primary

Primary/100

#ECF1FE

Primary/200

#D8E4FC

Primary/300

#C5D6FB

Primary/400

#6391F4

Primary/500 (Base)

#3C76F1

Primary/600

#366AD9

Primary/700

#305EC1

Primary/800

#2A53A9

Primary/900

#244791

Secondary

Secondary/100

#CED3DD

Secondary/200

#9BA6BC

Secondary/300

#394E75

Secondary/400

#213864

Secondary/500 (Base)

#082253

Secondary/600

#071F4B

Secondary/700

#061B42

Secondary/800

#06183A

Secondary/900

#04112A

Tertiary

Tertiary/100

#E7FAFA

Tertiary/200

#CFF5F4

Tertiary/300

#58DDD9

Tertiary/400

#40D9D4

Tertiary/500 (Base)

#10CFC9

Tertiary/600

#0EBAB5

Tertiary/700

#0DA6A1

Tertiary/800

#0B918D

Tertiary/900

#0A7C79

Alert / Success

Alert/Succes/100

#66DDB3

Alert/Succes/500 (Base)

#00C781

Alert/Succes/600

#00B374

Alert / Warning

Alert / Warning / 100

#FFD688

Alert / Warning / 500 (Base)

#FFBB38

Alert / Warning / 600

#E6A832

Alert / Danger

Alert / Danger/ 100

#FF8C8C

Alert / Danger/ 500 (Base)

#FF4040

Alert / Danger/ 700

#CC3333

Background

Background/Primary-Bg

#F5F8FA

Background / Secondary-Bg

#EDF1F8

Background / Tertiary

#F7F8FA

Grey

Grey / Grey-100

#FAFAFA

Grey / Grey-200

#E1E1E1

Grey / Grey-300

#C8C8C8

Grey / Grey-400

#AFAFAF

Grey / Grey-500

#969696

Grey / Grey-600

#4B4B4B

Grey / Grey-700

#323232

Grey / Grey-800

#191919

Grey / Grey-900

#000000

Opacity

Opacity / Opacity-05

rgba(0, 0, 0, 0.05)

Opacity / Opacity-10

rgba(0, 0, 0, 0.1)

Opacity / Opacity-20

rgba(0, 0, 0, 0.05)

Stored at 0.05, same as Opacity-05, despite the name.

Opacity / Opacity-40

rgba(0, 0, 0, 0.4)

Opacity / Opacity-80

rgba(0, 0, 0, 0.8)

Black And White

Black And White/Black

#000000

Black And White / White

#FFFFFF

There is no numeric spacing scale in this file. Layout is documented the way the system actually expresses it: six breakpoints and four responsive column grids.

X-Small

<576px

Documented on a 480px frame

Small

≥576px

Documented on a 576px frame

Medium

≥768px

Documented on a 768px frame

Large

≥992px

Documented on a 992px frame

Extra Large

≥1200px

Documented on a 1200px frame

Extra extra large

≥1400px

Documented on a 1440px frame

Phone · 0px - 599px

4 columns

16px margins & gutters

Small Tablet · 600px - 719px (Small Tablet)

8 columns

16px margins & gutters

Large Tablet · 720px - 839 (large tablet)

8 columns

24px margins & gutters

Desktop · 720px - 1920 +

12 columns

32px margins & gutters

The type scale below is the one the file prints next to each specimen — the intended scale. What is actually bound diverges from it in half the steps: 46 of the 73 text styles carry a line-height of exactly 20px, from 12px body copy up to 48px headings.

Desktop · Heading · H1

48 / 56 px

3 rem · 3.5 rem line-height

Desktop · Heading · H2

39 / 48 px

2.4 rem · 3 rem line-height

Desktop · Heading · H3

31 / 40 px

1.9 rem · 2.5 rem line-height

Desktop · Heading · H4

24 / 32 px

1.5 rem · 2 rem line-height

Desktop · Heading · H5

20 / 28 px

1.25 rem · 1.75 rem line-height

Desktop · Heading · H6

16 / 28 px

1 rem · 1.75 rem line-height

Desktop · Subtitle · Subtitle 1

26 / 36 px

1.65 rem · 2.25 rem line-height

Desktop · Subtitle · Subtitle 2

24 / 32 px

1.5 rem · 2 rem line-height

Desktop · Subtitle · Subtitle 3

20 / 28 px

1.25 rem · 1.75 rem line-height

Desktop · Body · Body 1

12 / 20 px

0.8 rem · 1.25 rem line-height

Desktop · Body · Body 2

16 / 28 px

1 rem · 1.75 rem line-height

Desktop · Body · Body 3

14 / 22 px

0.85 rem · 1.375 rem line-height

Desktop · Body · Body 4

12 / 20 px

0.8 rem · 1.25 rem line-height

Mobile · Heading · H1

31 / 40 px

1.9 rem · 2.5 rem line-height

Mobile · Heading · H2

24 / 32 px

1.5 rem · 2 rem line-height

Mobile · Heading · H3

20 / 28 px

1.25 rem · 1.75 rem line-height

Mobile · Heading · H4

16 / 28 px

1 rem · 1.75 rem line-height

Mobile · Subtitle · Subtitle 1

20 / 28 px

1.25 rem · 1.75 rem line-height

Mobile · Subtitle · Subtitle 2

16 / 24 px

1 rem · 1.5 rem line-height

Mobile · Body · Body 1

16 / 28 px

1 rem · 1.75 rem line-height

Mobile · Body · Body 2

14 / 22 px

0.85 rem · 1.375 rem line-height

Mobile · Body · Body 3

12 / 20 px

0.8 rem · 1.25 rem line-height

Common · Overline · Overline

18 / 20 px

0.75 rem · 1.25 rem line-height

Common · Caption · Caption

12 / 20 px

0.75 rem · 1.25 rem line-height

Common · Button · Large Button

16 / 24 px

1 rem · 1.5 rem line-height

Common · Button · Small Button

14 px

0.875 rem

02Five years in circulation

51,638

Views

2,449

Appreciations

3,131

Saves

1.6k

Figma Community uses

Published August 2021. Since then: 51,638 views, 2,449 appreciations, 3,131 saves on Behance — and 1.6k uses on Figma Community.

The saves matter more than the likes. An appreciation means someone thought it looked good. A save means they took it into their own account to work with. Three thousand people did that.

I built this to learn Figma. It became infrastructure for strangers.

03What I'd do differently

The flaws I see now aren't the aesthetic ones. They're the ones that only surface when someone actually uses the file.

Typography documents two numbers and explains neither

Each step shows something like “24px 32px”. In June 2024, three years after publishing, someone asked me what the second number meant. It's line height — but nothing in the file says so. Worse: 46 of the 73 text styles carry a bound line height of 20px, from 12px captions to 48px headings. The sheet documents one thing; the styles apply another.

Forty-two instances point to components that no longer exist

Anyone who duplicates it sees screens assembled from parts they can't find.

The icons are two libraries wearing one name

The 558 icons span five sets, and the two main ones don't line up. Outline uses an fi: prefix, solid doesn't. Normalize the names and only 81 appear in both sets — 200 are outline-only, 150 solid-only. You can't swap between styles for most of the icons, because the pair was never built.

None of these are visible while building. All of them break the moment someone else picks it up. That's the part a system can only teach you when it has users — which is why this file taught me more than the ones nobody downloaded.

04Components

Forty-nine sets, eight hundred and seventeen variants

None of the 49 sets uses a boolean or an instance-swap property, because neither existed in 2021. Everything that reads as a toggle is a variant axis with True/False options, and every optional element is another row in the matrix. Reading the inventory with that in mind is what makes the variant counts legible.

49 component sets · 817 variants · every property a variant axis

Default-button

Type2Property 22Size3State5Icon3

135 variants

94 instances

Rounded-button

Type2Property 22Size3State5Icon3

135 variants

0 instances

soft-button

Type6Size3State3

54 variants

40 instances

Only-icon-default

Type3Class2Size3State5

45 variants

0 instances

only Icon rounded

Type3Class2Size3State5

45 variants

0 instances

Avatars

Type2Shape2Size8

32 variants

33 instances

Deault-button

Type2Size2State5

20 variants

0 instances

Rounded-status-button

Type2Size2State5

20 variants

1 instances

Status-number

Type2Size2State5

20 variants

0 instances

Status-number

Type2Size2State5

20 variants

0 instances

Soft Pills Badges

Type1Color9Size2

18 variants

105 instances

Solid Pills Badges

Type1Color9Size2

18 variants

0 instances

Soft Badges

Type1Color9Size2

18 variants

19 instances

Solid Badges

Type1Color9Size2

18 variants

0 instances

Sidebar

contracted2Home2Products2Orders2Payments2Customers2Messages2Analytics2Schedule2

16 variants

5 instances

Input

Type5State3

15 variants

18 instances

Soft Counter Pills

Type1Size2

12 variants

0 instances

Soft Counter

Type1Size2

12 variants

0 instances

Counter Pills

Type1Size2

12 variants

0 instances

Solid Counter

Type1Size2

12 variants

0 instances

loading-buttons

Type3Size3

9 variants

0 instances

Feedback Form

Size3State3

9 variants

0 instances

Icon Badge Solid

Type3Size3

9 variants

31 instances

Radio

State4Label2

8 variants

0 instances

Checkbox

State4Label2

8 variants

59 instances

Status Avatar

Type1Size8

8 variants

34 instances

Alert

Type2Status4

8 variants

0 instances

Component 1

Type4Shape2

8 variants

13 instances

Component

Status2Type2email2

7 variants

1 instances

Text Area

State6

6 variants

1 instances

Toggle Standar

Size2State3

6 variants

0 instances

Icon Badge

Type2Size3

6 variants

15 instances

Drop-down-button

Drop-down2State3Icons2

5 variants

0 instances

Tooltip / Light / Default

Direction4

4 variants

0 instances

Tooltip / Dark / Default

Direction4

4 variants

0 instances

Tooltip / Dark / Analytics

Direction4

4 variants

0 instances

Tooltip / Light / Analytics

Direction4

4 variants

0 instances

Mobile Toggle

State3

3 variants

0 instances

Slider Control

State2

3 variants

0 instances

Slider Control Range

state3

3 variants

0 instances

Radio Button

Checked2

2 variants

4 instances

Divider

Size2

2 variants

59 instances

Conversations chat

Check Message2

2 variants

10 instances

Component 2

Chat Message2

2 variants

8 instances

Button Navigation

Active2

2 variants

119 instances

Button Navigation Contracted

State2

2 variants

72 instances

Drop down Navigation

Drop down2

2 variants

13 instances

Setting

State2

2 variants

0 instances

Top-Bar

Menu Fold2

2 variants

7 instances

05Modeling the Sidebar

Nine properties, five hundred and twelve combinations, sixteen built

Sidebar — variant model

512

Full matrix

16

Variants built

9 properties

contracted

TrueFalse

Home

FalseTrue

Products

FalseTrue

Orders

FalseTrue

Payments

FalseTrue

Customers

FalseTrue

Messages

FalseTrue

Analytics

FalseTrue

Schedule

FalseTrue

Nine variant properties: one collapse state plus one True/False axis per menu item. The complete cartesian product is 512 combinations. 16 exist — the collapse state times the eight items, one active at a time.

The Sidebar does not draw its own rows. It composes Button Navigation — a two-variant set with a single Active axis, and the most-instanced component in the file at 119 uses. The atomic hierarchy declared in the page list is load-bearing, not just naming.

06Inside the library

Three sets that show the rules being applied

01

Default-button

135 variants of a possible 180: type × filled/outline × three sizes × five states × three icon positions. Every combination exists except secondary outline, whose 45 are absent. The five states cover the full interaction set — default, hover, focus, active, disabled.

02

Soft Pills Badges

The most consumed set in the file: 105 instances, 73 of them inside the final screens. Its nine colour options map one to one onto the paint ramps — Primary, Secondary, Tertiary, Succes, Warning, Danger, Information, Light, Dark.

03

Avatars

32 variants from type × shape × eight sizes. It replaced two earlier sets, Photo Avatar and Initials Avatar, by folding the distinction into a Type axis instead of leaving it as two separate components.

The Avatars migration was never finished

Photo Avatar and Initials Avatar were consolidated into one 32-variant set, but neither original was removed from the file — both still sit outside the page tree with 68 live instances pointing at them. The consolidation is real; the cleanup stopped halfway.

07The system in use

Four screens assembled from the library

Dashboard screen built from the design system components
DashboardScreen
Order screen built from the design system components
OrderScreen
Schedule screen built from the design system components
ScheduleScreen
Message screen built from the design system components
MessageScreen
08The archive

The file, as it is published

The file, as it’s publishedOpen in Figma
Loading embed…
Dashboard - Design System (Public) — 27 pages, published to the Figma Community