Skip to content

Miro Design System

Miro's canary yellow #ffd02f and Roobert PRO type as one DESIGN.md: colors, typography and dozens of components for React, Next.js and AI tools.

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

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 highlights

  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)

Live at miro.com

Miro in production, as captured. Scroll the window to see the whole page.

Miro's website at miro.com

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

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

Radii and spacing

9 corner radii and 12 spacing values. Shape language: soft, on a 8px base radius.

Radii9

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

Spacing12

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

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

The system, in use

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

Marketing heroThe homepage: its nav, a headline and the main call to action.
Miro
Get started

Plan, build and ship in one place

Bring your team's work together, from the first idea to the final release.

Get startedBook a demo
MiroA
Active users12,489
Projects342
Tasks done8,921
Avg. response1.8h
ActivityLast 30 days

Miro design system FAQ

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

Use Miro in your project

One machine-readable file. Drop it into Claude Code, Cursor, VS Code 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

More systems like this

Airtable, Amie, Anytype and 50 more in Productivity & SaaS: each brand's colors, type and components in one file your AI agent builds from.

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
  • Page sections in 56 categories, from heroes and pricing tables to dashboards and settings, on every framework and UI library, in your theme.Blocks: All 6,181 blocks
  • Complete Next.js sites for startups, SaaS, agencies and portfolios, every page designed, ready to ship.Templates: All 14 templates
  • Your AI agent searches, previews and installs any component, block, icon or DESIGN.md from a prompt: 22 tools in Claude Code, Cursor, VS Code and 35 more clients.MCP server: 38 AI clients
  • Buttons with motion and states of their own, from an arrow that slides in to a burst of confetti.Animated buttons: All 35 buttons
  • Typewriters, scrambles, counters and more, for headlines, labels and numbers.Text effects: All 97 effects
  • Animated backgrounds for heroes, sections and cards, from a soft aurora to a flock that flees the cursor. Most are pure CSS.Backgrounds: All 100 backgrounds
  • WebGPU shaders, from a slow aurora to a black hole, each drawing only while it's on screen.Shaders: All 100 shaders
  • One design and one theme on all four: the components, blocks and effects are built for each framework.Frameworks: React, Vue, Svelte, Solid
  • React on Base UI, Radix UI, React Aria or Ark UI: install the version for the library your project already uses. Vue, Svelte and Solid run on Ark UI.UI libraries: Base UI, Radix, Aria, Ark
  • From a button to a date picker, a color picker or a guided tour: accessible, typed in TypeScript, each with live demos.Components: All 174 components
  • Real-world patterns built from the components, in 53 galleries: forms, tables, menus, dialogs and more.Examples: All 1,103 examples
  • Area, bar, line, pie, radar and radial charts on TanStack Charts, on every framework. React also gets the Recharts originals.Charts: All 70 charts
  • Debounce, local storage, media queries and more: each hook is one typed file you own.React hooks: All 35 hooks
  • From 222 libraries, Lucide, Heroicons, Tabler and Material Symbols among them, as SVG or a React component in one command.Icons: 294k+ icons
  • Stripe, Linear, Apple and 497 more: a brand's colors, typography and components in one file your AI agent builds from.DESIGN.md files: All 500 brands
  • Restyle every component and block at once: 8 styles, 8 grays, 18 colors and 5 radii, shared as a shadcn preset code.Theme builder: 8 styles × 18 colors
  • 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
  • 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
  • Secure checkout via Stripe
  • Code lives in your repo
  • Keep what you've shipped if you cancel
  • License terms

4.9 out of 5 from 150+ developers

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
  • Cancel anytime
  • Keep what you've shipped