Skip to content

Miro Design System

Miro's design system as a DESIGN.md file. Canary yellow #ffd02f, Roobert PRO, 48 components. For React, Next.js, and AI tools.

Add shadcn.io to your AI agent. · Pro It installs blocks, icons and templates in your design system from a prompt, with Pro.

Set up MCP
Primary
#1c1c1e
Typeface
Roobert PRO
Shape
Soft
Base radius
8px
Colors
40
Type tokens
18
Components
48
Spacing values
12

About

About Miro DESIGN.md

Curated by Dov Azencot · Updated May 12, 2026 · Source miro.com (opens in a new tab)

Miro's design system frames the AI-powered visual workspace through one of the most confident brand-voltage choices in B2B SaaS: a single canary yellow ("#ffd02f") wordmark perched on a stark white canvas, then refused as a CTA. The dominant action everywhere is a black pill — "#1c1c1e" filled at fully rounded corners — and the live product carries the visual weight through real Miro-board mockup illustrations with sticky notes, kanban columns, and mind maps. Pastel feature cards in rose, teal, coral, and mint echo the actual sticky-note tints from inside the whiteboard, so the marketing language and the product language reinforce one another instead of drifting apart.

This page packages the full token system into a single DESIGN.md file built on the Google Labs spec. Inside: 40 colors tokens grouped into brand, surface, text, and semantic families; 18 typography tokens running Roobert PRO from the 80px hero display through 11px uppercase micro labels; 12 spacing values from 4px to a 120px hero band; 9 rounded-corner steps culminating in a 9999px pill; and 48 components covering buttons, pricing cards, comparison tables, whiteboard mockups, FAQ accordions, badges, and the dark multi-column footer.

Feed the file to Claude, Cursor, or GitHub Copilot and the AI will reproduce Miro's specific restraint — black pills not yellow, pastel cards not gradients, real product UI not stock photography — rather than a generic shadcn theme. Reference the tokens directly when wiring Tailwind config or CSS variables. The system is worth studying for one specific discipline: how a brand can own a loud signature color (canary yellow at "#ffd02f") and still keep it out of every primary action, letting black do the work and saving the voltage for the wordmark and the sticky-note tints.

What makes it distinct

5

  1. Reserved brand voltagecanary yellow #ffd02f confined to the wordmark, promo strip, and yellow-tag chips, never a primary CTA
  2. Black-pill primary CTAs#1c1c1e on rounded.full carries every dominant action across marketing, pricing, and AI Workflows pages
  3. Pastel feature cards at 28px cornersrose #ffd8f4, teal #c3faf5, coral #ffc6c6, yellow #ffd02f echo the live sticky-note palette
  4. Roobert PRO across 18 type tokens80px hero down to 11px micro labels, single-family typography with no 700 weight
  5. Massive 4-tier pricing into 80-row comparison tableFree / Starter / Business (featured lavender #f5f3ff) / Enterprise (dark canvas)

miro.com

Live at miro.com

A snapshot of the brand in production. Scroll the frame to see the whole page.

Miro's website at miro.com

Colors

40 colors

Miro's system runs on #1c1c1e as its primary voltage, used in 14 of 48 components. Type is set in Roobert PRO across 18 tokens from 11px to 80px, weights 400–600. Shape language is soft — components average 17px corner radius, with no sharp interactive edges.

Brand & Accent

Sparing, CTA-only voltage · 11

Surface

Page and card backgrounds · 5

Text

Headlines, body, captions · 6

Borders & Hairlines

Dividers, outlines, rules · 3

Semantic

Status, errors, success, links · 1

Other

Specialty colors · 14

Typography

18 type tokens

Set in Roobert PRO across 18 tokens, from 11px to 80px, weights 400–600. Shown in its own stack: where the font isn't installed, the fallback the file names stands in.

  • hero-display80px · weight 500 · lh 1.05 · tracking -2pxThe quick brown fox jumps over the lazy dog
  • display-lg60px · weight 500 · lh 1.1 · tracking -1.5pxThe quick brown fox jumps over the lazy dog
  • heading-148px · weight 500 · lh 1.15 · tracking -1pxThe quick brown fox jumps over the lazy dog
  • heading-236px · weight 500 · lh 1.2 · tracking -0.5pxThe quick brown fox jumps over the lazy dog
  • heading-328px · weight 500 · lh 1.25The quick brown fox jumps over the lazy dog
  • heading-422px · weight 500 · lh 1.3The quick brown fox jumps over the lazy dog
  • heading-518px · weight 500 · lh 1.4The quick brown fox jumps over the lazy dog
  • subtitle18px · weight 400 · lh 1.5The quick brown fox jumps over the lazy dog
  • body-md16px · weight 400 · lh 1.5The quick brown fox jumps over the lazy dog
  • body-md-medium16px · weight 500 · lh 1.5The quick brown fox jumps over the lazy dog
  • body-sm14px · weight 400 · lh 1.5The quick brown fox jumps over the lazy dog
  • body-sm-medium14px · weight 500 · lh 1.5The quick brown fox jumps over the lazy dog
  • caption13px · weight 400 · lh 1.4The quick brown fox jumps over the lazy dog
  • caption-bold13px · weight 600 · lh 1.4The quick brown fox jumps over the lazy dog
  • micro12px · weight 500 · lh 1.4The quick brown fox jumps over the lazy dog
  • micro-uppercase11px · weight 600 · lh 1.4 · tracking 0.5pxThe quick brown fox jumps over the lazy dog
  • button-md14px · weight 500 · lh 1.3The quick brown fox jumps over the lazy dog
  • stat-display64px · weight 500 · lh 1.1 · tracking -1.5pxThe quick brown fox jumps over the lazy dog

Layout

Radii and spacing

9 corner radii and 12 spacing values. Shape language: soft.

Radii

  • xs4px
  • sm6px
  • md8px
  • lg12px
  • xl16px
  • xxl20px
  • xxxl28px
  • feature32px
  • full9999px

Spacing

  • xxs4px
  • xs8px
  • sm12px
  • md16px
  • lg20px
  • xl24px
  • xxl32px
  • xxxl40px
  • section-sm48px
  • section64px
  • section-lg96px
  • hero120px

Components

48 components

Each rendered from its tokens (color, type, radius, padding) on Miro's own canvas.

  • Button Primary
    button-primaryButton Primary
  • Button Primary Pressed
    button-primary-pressedButton Primary Pressed
  • Button Primary Disabled
    button-primary-disabledButton Primary Disabled
  • Button Yellow
    button-yellowButton Yellow
  • Button Blue
    button-blueButton Blue
  • Button Secondary
    button-secondaryButton Secondary
  • Button On Dark
    button-on-darkButton On Dark
  • Button Ghost
    button-ghostButton Ghost
  • Button Link
    button-linkButton Link
  • button-icon-circularButton Icon Circular
  • Card Base
    card-baseCard Base
  • Card Feature
    card-featureCard Feature
  • Card Feature Yellow
    card-feature-yellowCard Feature Yellow
  • Card Feature Coral
    card-feature-coralCard Feature Coral
  • Card Feature Teal
    card-feature-tealCard Feature Teal
  • Card Feature Rose
    card-feature-roseCard Feature Rose
  • Card Customer Story
    card-customer-storyCard Customer Story
  • Card Stat
    card-statCard Stat
  • Pricing Card
    pricing-cardPricing Card
  • Pricing Card Featured
    pricing-card-featuredPricing Card Featured
  • Pricing Card Enterprise
    pricing-card-enterprisePricing Card Enterprise
  • Type here…
    text-inputText Input
  • Type here…
    text-input-focusedText Input Focused
  • Search Pill
    search-pillSearch Pill
  • Filter Dropdown
    filter-dropdownFilter Dropdown
  • Pill Tab
    pill-tabPill Tab
  • Pill Tab Active
    pill-tab-activePill Tab Active
  • Toggle Monthly Yearly
    toggle-monthly-yearlyToggle Monthly Yearly
  • Badge Promo
    badge-promoBadge Promo
  • Badge Tag Yellow
    badge-tag-yellowBadge Tag Yellow
  • Badge Tag Purple
    badge-tag-purpleBadge Tag Purple
  • Badge Tag Coral
    badge-tag-coralBadge Tag Coral
  • Badge Success
    badge-successBadge Success
  • Badge Discount
    badge-discountBadge Discount
  • Promo Banner
    promo-bannerPromo Banner
  • Comparison Table
    comparison-tableComparison Table
  • Comparison Row
    comparison-rowComparison Row
  • Template Card
    template-cardTemplate Card
  • Whiteboard Mockup
    whiteboard-mockupWhiteboard Mockup
  • Faq Accordion Item
    faq-accordion-itemFaq Accordion Item
  • Logo Wall Item
    logo-wall-itemLogo Wall Item
  • Hero Band Marketing
    hero-band-marketingHero Band Marketing
  • Cta Banner Dark
    cta-banner-darkCta Banner Dark
  • Industry Tile
    industry-tileIndustry Tile
  • Capterra Badge
    capterra-badgeCapterra Badge
  • Footer Region
    footer-regionFooter Region
  • Footer Link
    footer-linkFooter Link
  • App Store Badge
    app-store-badgeApp Store Badge

In use

The system, in use

Miro's tokens on the kind of product it builds.

Build something people actually use.

A short paragraph of marketing copy that previews how the brand's display tier and body tier read together. Two sentences is usually enough.

Get startedLearn more
Marketing heroHeadline, sub-copy, primary CTA — the universal homepage opener.

FAQ

Miro design system FAQ

Common questions about Miro's tokens, components, and how to use this DESIGN.md in your project.

Read next

Specs, directories, and component libraries that pair with this design system.

Use it

Use Miro in your project

One machine-readable file. Drop it into Claude, Cursor, or any AI tool that reads DESIGN.md.

Download DESIGN.md
  1. Download the DESIGN.md

    One machine-readable file: every color, type, radius, spacing, and component token of Miro.

  2. Feed it to your AI tool

    Drop it into Claude, Cursor, or GitHub Copilot. The agent writes React components and Tailwind classes that match Miro's visual language.

  3. Reference the tokens directly

    Or paste the values into your Tailwind config, CSS variables, or component library: every color, size and radius is a quoted, ready-to-copy value.

Read the full DESIGN.md: overview, rationale, do’s and don’ts

Overview

Miro positions itself as the AI-powered visual workspace through a confident, slightly playful brand voice. The homepage opens with a stark white canvas anchored by a small canary-yellow Miro wordmark in the top-left, a black-pill primary CTA "Get started free" and a secondary "Book a demo" outline pill — then dramatic real-Miro-board mockup imagery (sticky notes, kanban, mind maps) carries the visual weight. Across deeper surfaces, the system breaks open: pastel feature cards (rose, teal, coral, yellow) echo the actual sticky-note color palette of the live whiteboard product, and customer story cards reuse those tints to differentiate brand vignettes.

Roobert PRO — Miro's custom display face — anchors every typographic surface, from the 80px hero display down to 11px micro labels. The face's slightly rounded, geometric character pairs naturally with the playful product photography and the friendly product positioning. Black-pill primary buttons ({rounded.full}) dominate marketing CTAs; the brand color, signature canary yellow ({colors.brand-yellow}), is reserved for the wordmark, top promo banners, and "yellow tag" feature pills — never as a primary CTA. The 4-tier pricing comparison (Free / Starter / Business / Enterprise) leads into the densest surface in the system: a feature comparison table that runs ~80 rows deep across multiple section dividers.

Key Characteristics:

  • Stark white canvas + Miro wordmark in canary yellow ({colors.brand-yellow}) as the recognizable opening signature
  • Black-pill primary CTAs ({colors.primary} + {rounded.full}) as the dominant interactive element
  • Pastel feature cards (yellow, rose, coral, teal, mint) that echo the actual sticky-note palette
  • Roobert PRO across every UI surface; geometric, slightly rounded character
  • Real Miro-board mockup imagery used as feature illustrations
  • 4-tier pricing card grid + dense feature comparison table
  • Massive dark footer ({colors.footer-bg}) with multi-column links + app-store badges

Known Gaps

  • Specific dark-mode token values not surfaced
  • Animation/transition timings not extracted; recommend 150–200ms ease
  • Form validation success state not explicitly captured beyond defaults
  • Sticky note color tints inside the actual whiteboard product are richer than what marketing surfaces capture

Productivity & SaaS

More systems like this

More DESIGN.md files in Productivity & SaaS.

Pricing

Build it with Pro

The DESIGN.md files are free. Pro adds 6,000+ blocks, premium templates and the MCP server, so your AI editor builds in your system for you.

4.9/5 out of 5 · 150+ reviewsfrom 150+ founders and developers.

Billed once a year in USD. Cancel anytime.

Individual

For personal projects & open source

$32instead of $49/mo

$389 billed yearly

  • How many people can use the license.Seats: 1 seat
  • Client work, SaaS products and anything you charge for.Commercial use: Personal & open source only
  • Production-ready React sections: hero, pricing, features, dashboards and more.Pro blocks: 6,000+ blocks
  • Complete multi-page sites you can ship as they are.Templates: All 14 templates
  • React icons from every major library, installable with one command.React icons: 294k+ icons
  • Presets that restyle every block, in light and dark.Themes: All 59 themes
  • Lets your AI editor search, preview and install blocks for you.MCP server: Basic usage
  • Priority requests are answered first.Support: Standard

Team

Most popular

For freelancers, agencies & startups

$66instead of $99/mo

$789 billed yearly · ≈ $13/dev/mo

Everything in Individual, plus

  • How many people can use the license.Seats: Up to 5 seats
  • Client work, SaaS products and anything you charge for.Commercial use: Included
  • Lets your AI editor search, preview and install blocks for you.MCP server: High usage
  • Priority requests are answered first.Support: Priority

Organization

For companies with larger teams

$132instead of $199/mo

$1,589 billed yearly

Everything in Team, plus

  • How many people can use the license.Seats: Unlimited seats
  • Lets your AI editor search, preview and install blocks for you.MCP server: Unlimited usage
  • Secure checkout via Stripe
  • Code lives in your repo
  • Keep what you've shipped if you cancel
  • License terms

Your system, built for you

Every block, template and icon, installed by your AI agent in your design system. The DESIGN.md files stay free.

Get Pro