Structure

Empty states are messages that provide an explanation of an interface in absence of content.

The message can include Title and/or Body and sometimes they appear together with an illustration and actionable buttons.

empty state structure

Element & PropertyTokenPixelRem
xs, sm, md - Illustration Margin-bottomspace $416px1
lg, xl - Illustration Margin-bottomspace $2424px-
xs, sm, md - Title Margin-bottomspace $312px0.75
lg, xl - Illustration Margin-bottomspace $416px1
lg, xl - Illustration Margin-bottomspace $416px1
lg, xl - Illustration Margin-bottomspace $2424px-

Size

There’s 5 different sizes for empty state illustrations. We start designing for “xs” 56x32px and then we multiply each size by x1.5.
“md” and “lg” share the same illustration size but “lg” adds a semicircle on the background that comes from the logo of Atom making the total illustration bigger (also for “xl”).

empty state size

Illustration container sizeWidth x Height (pixels)
xsmax-width & max-height 56x32
smmax-width & max-height 84x48
mdmax-width & max-height 126x72
lgmax-width & max-height 190x142
xlmax-width & max-height 285x213

Typography

empty state typography

All text is centered aligned.

FontFamilySizeWeightPixelsRem
Title - xs, sm, md$body$md600161
Title - lg, xl$body$lg600211.3125
Body - xs, sm, md$body$sm400140.875
Body - lg, xl$body$md400161

Color

We use a minimal and simple approach to colour for empty states, using a muted greyscale that makes it clear that it’s an unactive illustration communicating that something is missing or doesn’t fully work yet. It also helps to bring users attention to the primary action instead of the illustration.
We have two different background colours for our apps:

  • White
  • Light-blue

The semicircle colour in lg and xl images would change from grey to white when placed within a light-blue background. That means we have 2 images for each illustration.

empty state color

Property & ElementTokenHex
Font-color Title$grey800#
Font-color Body$grey800#