Design systems design system · study copy · 12 Oct 2026
Rebuilt screens

monday.com, exactly

monday.com looks like a cheerful shared spreadsheet: big coloured status cells, round friendly titles, plenty of white space and one strong blue for the main button. This page is a study copy of monday's own design system, called Vibe, built from monday's real files and checked against monday's real screens.

measured on monday's screensmonday's own codemonday's own pictureours (no real value existed)
Main colour#0073EA "primary"
Text#323338, grey #676879
LettersFigtree for text, Poppins for titles
Shape4 / 8 / 16 px corners · 36 px rows
ThemesLight, Dark, Black: all three are monday's own
Icons277 line icons, 20 px, from Vibe
Movement70 / 100 / 150 ms for small things, 250 / 400 ms for big ones
LicenceVibe is open source (MIT). Fonts: OFL / Apache 2.0

Product screens

Left: monday's own screen. Right: our copy, built only from this design system. The copies work: open one full size to point at rows, click a status, open the ⋯ menu, fold a group, or open an item's card. Each copy has a slider to compare it with the original.

1 · A board (monday's public board, captured 12 Oct 2026)

monday's own public board, Team, in light mode
Original · view.monday.com public board "Team" · 1440 × 900 · light
Our copy · open full size
Light 93.9% of pixels · 97.3% of edgesDark 93.6% · 97.0%Black 93.5% · 96.4%Folded group 98.3%What is left is text drawing: 99% of the remaining difference sits inside letters.

2 · The app with an item card open (monday's help-centre recording)

monday's own recording: the Book Deliveries board with the item card of To Kill a Mockingbird open
Original · monday help centre "The Item Card" (archived 19 Feb 2025), recorded at 133% · light only
Our copy · open full size
93.5% of pixels · 87.6% of edgesThe original is a compressed animation (only 256 colours, slightly greyed), so edges score lower. Dark and Black for this screen come from monday's theme tokens; monday did not publish this screen in dark.

3 · The Marketing Plan board in dark and night (monday's help centre)

monday's own picture of the Marketing Plan board in dark mode
Original · help centre "display themes: light, dark and night mode" (archived 2024), drawn at 200% · dark
Our copy · open full size · opens in dark; the switch at the top gives night (black) and light
Dark 93.1% of pixels · 89.0% of edgesNight 92.8% · 83.3%Found while copying it: in the logged-in app, dark and night use lighter label colours than light mode (Working on it #FDBC64, Stuck #E8697D, Urgent #FF44A1) measured. The light version of this screen is ours (no picture exists).

4 · Home page with the account menu and the "Change theme" menu open

monday's own picture of the Home page with the account menu and theme menu open
Original · same help-centre article, drawn at 133% · light. The purple box is the help centre's own marking.
Our copy · open full size · the avatar opens the menu; Light / Dark / Night / System default in the menu really switch the copy
Light 94.1% of pixels · 91.6% of edgesDark and night of this screen come from monday's tokens (monday published it in light only).

monday's own pictures of the full app

monday's own picture of the Marketing Plan board in dark mode
Dark mode · help centre "display themes" (archived 2024)
monday's own picture of the Marketing Plan board in night (black) mode
Night (black) mode · same article
monday's own picture of the side menu with a workspace open
Side menu and workspace · help centre (archived Sep 2025)

More real monday screens we found (not rebuilt yet)

monday's own pictures from its help centre (public web archive copies, 2024 to 2026). They show screens a public board cannot: filters, search, dashboards, forms, automations, inbox, profile and admin. Click one to see it full size.

Colours monday's own code

monday names colours by their job ("primary", "text", "border"), so one name works in all three themes. Every value below is read live from monday-tokens.css, so it is exact.

Status and label colours

These fill status cells, group strips and labels. monday puts white text on all of them, even the pale ones; the contrast check below shows where that fails. Click a colour to copy its name.

Contrast check (light / dark / black)

4.5 : 1 is the minimum for normal text, 3 : 1 for large text and icons. Worked out live from the tokens. Disabled text is allowed to be faint (it is not meant to be read as an action).

Lesson for AltLeads: white words on pale status colours (peach, bubble pink, yellow, light blue) are hard to read. AltLeads already decided to write chip text in the normal ink colour; monday shows why.

Typography monday's own code

Two free fonts: Poppins (round and friendly) for titles and Figtree for everything you read. Sizes come in a short scale. One honest surprise: monday's public board does not download either font, so there the text falls back to Roboto measured.

Titles
Poppins Aa
500 for titles, 300 for light headings
Text
Figtree Aa
400 for text, 600 / 700 for strong
Public board fallback
Roboto Aa
next font in monday's own list

Icons monday's own code

All 277 icons from monday's open-source set (@vibe/icons). Thin line icons on a 20 px grid that take the text colour. Search, then click one to copy its name.

Shape & space monday's own code

Small corners (4 px) on buttons and inputs, 8 px on cards and menus, 16 px on big dialogs. Space grows in steps of 4. Board rows are 36 px; buttons are 24 / 32 / 40 / 48 px tall.

4 pxsmall: buttons, inputs, labels
8 pxmedium: cards, menus
12 pxin between
16 pxbig: dialogs
6 px stripgroup edge measured

Space

Shadows monday's own code

Four soft shadows. In dark themes they turn navy or black, and popovers also get a thin outline so they still stand out.

xsunder a group of rows
smallcards
mediummenus, tooltips, toasts
largedialogs, the item card

Components monday's own code

Every part below uses monday's own component CSS (Vibe), unchanged. Point at things, click them, use Tab: hover, pressed, focus and disabled are all real.

Buttons

Sizes 24 / 32 / 40 / 48 px · corners 4 px · press shrinks to 95% in 70 ms · focus a soft blue ring 0 0 0 3px hsla(209,100%,50%,.5) · hover primary goes to #0060B9. Classes: .v-Button-button .v-Button-sizeMedium .v-Button-kindPrimary .v-Button-colorPrimary

Inputs & choices

Inputs 32 / 40 / 48 px, 1 px line --ui-border-color, the line turns dark on hover and blue when typing · checkbox 16 px, 2 px corners, grows in 70 ms when ticked · toggle 41 × 24 px, the knob slides in 100 ms.

Status cells & labels

The status cell fills the whole cell. Click one to change it (monday's picker).
New Done Stuck Beta 12 3 Sales Design
Status cell 140 × 36 px, white 14 px words, the cell is the click target · in a hovered or selected row the colour drops to 70% so the row colour shows through measured · label 4 px corners, fill or line · counter round, 18 px.

Board table

Group title in Poppins 18 in the group colour, 6 px colour strip with a 6 px top-left corner · rows 36 px, 1 px lines #D0D4E4 · Item column 400 px, name 40 px in · "+ Add item" row with a half-strength strip · summary under the group: a colour "battery" for status columns and counts for files · hover row turns #F4F5F8 · selected #CCE5FF with a grey line round the name measured

Menus & tooltips

You can only view this board
Menu white card, 8 px corners, medium shadow, items 4 × 8 px padding, hover grey · tooltip dark (white in dark themes), 4 px corners, 8 × 16 px padding, appears after 0.3 s · in dark themes popovers also get a 1 px outline.

Tabs & avatars

EJMPLD ATOL+3 Empty person
Tabs 16 px words, a 2 px blue line grows under the open tab in 100 ms, hover grey · avatars round, 32 px (28 / 20 smaller), coloured initials, a 2 px ring when they overlap · empty person monday's grey outline icon.

Toasts & dialogs

Toast slides down from the top in 350 ms with a small bounce, 4 px corners, blue / green / red / dark · dialog 16 px corners, large shadow, dark navy backdrop at 70%.

App frame & item card

Top bar 45 px on the surface colour #ECEFF8 · board title Poppins 32 · view tabs with thin dividers · toolbar blue "New Item" split button then plain buttons · item card slides in from the right over the board (about 150 ms), title Poppins 16, tabs, a "Write an update…" box and a friendly empty state measured

Try it: a mini board

A small working board made with this design system. Click a status to change it, add an item, rename one by double-clicking, fold a group. The colour battery under each group updates as you go.

States & motion measured

Every state below was seen on monday's own board, in all three themes, and then copied. The pictures are monday's.

StateWhat you seeValues (light · dark · black)monday's own picture
Row under the mouseRow turns light grey; › and the expand button appear over the name; ⋯ appears left of the row#F4F5F8 · #33354B · #272729; status cells at 70%monday row hover
Row selectedRow turns light blue, a grey line around the name, the full name shows in a dark tooltip#CCE5FF · #133774 · #133774monday selected row
Status clicked (read-only)"You can only view this board" in a dark tooltiptooltip #323338 · white · #EEEEEEmonday read-only tooltip
⋯ menu openButton turns light blue; a white menu card drops belowbutton #CCE5FF · #133774; card white · #30324E · #2C2C2Cmonday open menu
Keyboard focusA soft blue ring outside, a thin darker line inside0 0 0 3px hsla(209,100%,50%,.5) + inset 0 0 0 1px #0060B9from monday's code
DisabledEverything at 38% strength--disabled-component-opacity: .38from monday's code

Movement

Click a card to feel the timing. Short ones are for hovers and small changes; long ones for things that enter the screen.

Dark mode monday's own code

monday has three real themes: Light, Dark (deep navy) and Black (near-black). All three are in monday's own code, and we captured the same board in all three. Use the switch at the top: this whole page, both copies and every component change with it.

monday board in light theme
Light · page #FFFFFF, cells white
monday board in dark theme
Dark · page #181B34, cells #30324E, text #D5D8DF
monday board in black theme
Black · page #111111, cells #2C2C2C, text #EEEEEE

Status colours stay the same

The cell colours do not change between themes; only the frame around them does. A status means the same thing everywhere.

Cells sit one step lighter

In dark, rows are a lighter navy than the page (#30324E on #181B34), so the table still reads as a table.

What is ours

The white wordmark in dark (monday's dark logo file was not public) and the item-card screen in dark (monday published it in light only). Everything else is monday's.

Do & don't

How monday keeps a busy board readable. Each rule names the Law of UX behind it; click the label to read it.

Do

  • Make the whole status cell the button, edge to edge. Fitts's Law
  • Give each status one colour and keep it everywhere. Similarity
  • Group rows, give each group a colour strip and a summary underneath. ChunkingCommon Region
  • Show progress as a small colour bar (the battery). Goal-Gradient
  • Keep the name column fixed while the rest scrolls sideways. Working Memory
  • Use one blue for the main action only ("New Item"). Von Restorff

Don't

  • Don't put white words on pale colours (peach, bubble, yellow); they fail contrast. Aesthetic-Usability
  • Don't colour every column; when everything is bright, nothing stands out. Selective Attention
  • Don't show every column by default; 5 to 7 is enough. Miller's Law
  • Don't make people leave the list to do a quick change. Flow
  • Don't hide what the board is counting; show the totals. Tesler's Law
  • Don't hide the only way to open an item behind a small icon. Hick's Law

UX principles, in plain words

What makes monday feel easy, and what AltLeads can take from it.

It feels like a sheet

One row per thing, one column per fact. People already know how to use it.

For AltLeads: keep the lead list a table; don't turn it into cards.

Colour carries meaning

You read a status from across the room, before reading the word.

For AltLeads: one colour per stage, and dark words on pale colours.

Progress is always visible

The battery under each group shows how far along the team is, without a report.

For AltLeads: a small bar per list: called, connected, meeting booked.

Change things in place

Click a status and pick a new one; no form, no save button.

For AltLeads: log a call outcome right in the lead row.

Details slide in, the list stays

The item card opens on the right, over the board, so you never lose your place.

For AltLeads: the same slide-in panel for a lead's notes and calls.

Three real themes

Light, dark navy and black are designed, not just inverted.

For AltLeads: design dark mode properly, with cells one step lighter than the page.

Laws of UX scorecard

All 29 laws from lawsofux.com, each checked against what we really saw on monday. "Not seen" means we could not see it without logging in, so we did not guess.

Copy & use

To build something that looks like monday, link these files and use the class names. Put dark-app-theme or black-app-theme on the page to switch theme.

<link rel="stylesheet" href="monday/monday-tokens.css">   <!-- colours, sizes, letters, movement: 3 themes -->
<link rel="stylesheet" href="monday/monday-vibe.css">     <!-- buttons, inputs, menus, tabs, toasts ... (Vibe, unchanged) -->
<link rel="stylesheet" href="monday/monday.css">          <!-- the board: groups, rows, status cells, summaries -->
<link rel="stylesheet" href="monday/monday-app.css">      <!-- the app frame and the item card -->
<script src="monday/monday-icons.js"></script>          <!-- mIcon('Search', 20) gives an icon -->

<html class="dark-app-theme">   <!-- or black-app-theme; nothing = light -->
<button class="v-Button-button v-Button-sizeMedium v-Button-kindPrimary v-Button-colorPrimary">New Item</button>
<span class="mb-status" style="--s: var(--color-done-green)">Done</span>

Where it came from

Only real sources. No login, no bot-check bypass. Where we could not see something, the page says so.

  • monday's own design system, Vibe (open source, MIT): @vibe/style 4.1.0 (all colours, sizes, letters, movement, shadows; light, dark, black), @vibe/core 4.5.35 (component CSS), @vibe/icons 4.2.0 (277 icons). Copied 1:1.
  • monday's public board view.monday.com/embed/6276056051… ("Team"), opened read-only in Chrome on 9 and 12 Oct 2026 at 1440 × 900: computed styles, every state, and all three themes. measured
  • monday's help centre (support.monday.com) shows a bot check, so we did not open it. We used the public web archive's copies instead: "The Item Card" (19 Feb 2025, screen recording), "display themes: light, dark and night" (2024), "Getting started with workspaces" (Sep 2025). monday's own picture
  • Fonts: Figtree and Poppins (SIL Open Font License), Roboto (Apache 2.0), from Fontsource. monday's marketing font (Sofia Pro) is not free, so it is not used.
  • Ours: the white logo for dark; the dark and black versions of the item-card screen (from monday's tokens, no picture exists); the "Bicyle" colour on the item-card board is a custom colour, measured. ours
  • Limits: the full logged-in app could only be seen through monday's own help pictures, not live. The recording is compressed (256 colours), which lowers its score.