Skip to content

Wayfair Design System

Wayfair's home-goods e-commerce design system as a DESIGN.md file. Purple #7f187f nav fill and CTA, Nunito Sans display headings, Roboto body, pill buttons, 14 colors tokens, 15 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
#7f187f
Typeface
Roboto
Shape
Sharp
Base radius
16px
Colors
14
Type tokens
12
Components
15
Spacing values
7

About

About Wayfair DESIGN.md

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

Wayfair's homepage does something almost no other furniture retailer attempts at scale: it paints the entire top-navigation bar with the brand's saturated purple, then uses that same purple for every primary CTA button and every interactive link text across the page. IKEA keeps its nav matte black. Pottery Barn keeps its nav white. Restoration Hardware keeps its nav gray. Wayfair makes the nav bar a chromatic brand statement, and the single hue has to do that work without a second accent or a gradient to support it. The result reads as commercial-warm — closer to a catalog brand than to a luxury furniture house — and the fully-rounded pill buttons reinforce the approachable-consumer register.

The DESIGN.md file packages the system into a machine-readable spec for React and AI tools. Extraction of the live Wayfair storefront was blocked by a CAPTCHA challenge at the time of capture, so the token values here are built from Wayfair's public Cinder design system documentation and visual analysis of the site's product surfaces. Inside: 14 colors tokens covering the purple nav voltage in two depth levels, a white canvas, five neutral gray tiers, and semantic red/green for status; 12 typography tokens running Nunito Sans at display sizes and Roboto at body sizes; 5 radius tokens anchored at 4px for cards and a full pill for buttons; 7 spacing values on a 4px base; and 15 components definitions covering the purple top-nav, pill CTA button, product card with shadow elevation, and the search input.

Feed this file to Claude or Cursor and it will reproduce Wayfair's specific moves: purple-fill nav bar and primary button (not a held-in-reserve accent), Nunito Sans at 700 for every heading, Roboto for body and nav, fully-rounded pill buttons at 40px, and 4px card rounding with shadow-lift hover states. The single most transferable structural choice is the decision to commit the brand color to a structural nav surface — it means the page has a persistent brand signal at the top of every scroll position, at the cost of making the purple feel obligatory rather than precious.

What makes it distinct

5

  1. Purple nav canvas#7f187f fills the entire top-navigation bar, making Wayfair's brand color a structural surface element rather than a held-in-reserve accent
  2. Pill-first button geometryprimary CTAs use a fully-rounded pill at 40px height, the warmest button shape in the furniture-retail category
  3. Nunito Sans for headings, Roboto for bodythe two-family split maps editorial warmth to catalog function: Nunito identifies brand-voice moments, Roboto identifies navigation moments
  4. Shadow-lift product cardscards use a soft multi-layer shadow on hover rather than a border-only edge, tuning the browse experience toward depth rather than flatness
  5. Single chromatic voltagepurple is the only non-neutral color in the chrome; all other chromatic moments come from product photography of furniture, rugs, and decor

wayfair.com

Live at wayfair.com

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

Wayfair's website at wayfair.com

Colors

14 colors

Wayfair's system runs on #7f187f as its primary voltage, used in 3 of 15 components. Type is set in Roboto across 12 tokens from 12px to 40px, weights 400–700. Shape language is sharp — components average 3px corner radius, favoring crisp rectangles.

Brand & Accent

Sparing, CTA-only voltage · 2

Surface

Page and card backgrounds · 3

Text

Headlines, body, captions · 3

Borders & Hairlines

Dividers, outlines, rules · 2

Semantic

Status, errors, success, links · 1

Other

Specialty colors · 3

Typography

12 type tokens

Set in Roboto across 12 tokens, from 12px to 40px, weights 400–700. Shown in its own stack: where the font isn't installed, the fallback the file names stands in.

  • display-xl40px · weight 700 · lh 48pxThe quick brown fox jumps over the lazy dog
  • display-lg32px · weight 700 · lh 40pxThe quick brown fox jumps over the lazy dog
  • heading-md24px · weight 700 · lh 32pxThe quick brown fox jumps over the lazy dog
  • heading-sm20px · weight 700 · lh 28pxThe quick brown fox jumps over the lazy dog
  • body-lg16px · weight 400 · lh 24pxThe quick brown fox jumps over the lazy dog
  • body-md14px · weight 400 · lh 20pxThe quick brown fox jumps over the lazy dog
  • body-sm12px · weight 400 · lh 16pxThe quick brown fox jumps over the lazy dog
  • label-md14px · weight 500 · lh 20pxThe quick brown fox jumps over the lazy dog
  • caption12px · weight 400 · lh 16pxThe quick brown fox jumps over the lazy dog
  • button-md16px · weight 700 · lh 24pxThe quick brown fox jumps over the lazy dog
  • nav-link14px · weight 400 · lh 20pxThe quick brown fox jumps over the lazy dog
  • price-lg18px · weight 700 · lh 24pxThe quick brown fox jumps over the lazy dog

Layout

Radii and spacing

5 corner radii and 7 spacing values. Shape language: sharp.

Radii

  • none0px
  • xs4px
  • sm8px
  • md16px
  • full9999px

Spacing

  • xs4px
  • sm8px
  • md16px
  • lg24px
  • xl32px
  • 2xl48px
  • 3xl64px

Components

15 components

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

  • Button Primary
    button-primaryButton Primary
  • Button Primary Hover
    button-primary-hoverButton Primary Hover
  • Button Secondary
    button-secondaryButton Secondary
  • Top Nav
    top-navTop Nav
  • Nav Link
    nav-linkNav Link
  • Hero Heading
    hero-headingHero Heading
  • Section Heading
    section-headingSection Heading
  • Body Paragraph
    body-paragraphBody Paragraph
  • Card
    cardCard
  • Price Display
    price-displayPrice Display
  • Category Chip
    category-chipCategory Chip
  • Type here…
    text-inputText Input
  • Search Bar
    search-barSearch Bar
  • Footer
    footerFooter
  • Product Label
    product-labelProduct Label

In use

The system, in use

Wayfair'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.
Slow BurnAlbum · 2024
Open WindowSingle · 2025
Hours of LightEP · 2024
After HoursMix · 1h 42m
Media gridCover-art tiles with title + meta — streaming archetype.

FAQ

Wayfair design system FAQ

Common questions about Wayfair'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 Wayfair 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 Wayfair.

  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 Wayfair'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

Wayfair's homepage commits to a structural choice that almost no other US furniture retailer makes. Voltage as infrastructure. The brand's saturated purple fills the entire top-navigation bar rather than appearing as a reserved CTA accent — the result is a persistent chromatic brand signal at the top of every page scroll. IKEA places its nav on matte black. Pottery Barn uses white. West Elm uses charcoal. Wayfair makes the nav a purple surface, and every primary button on the page continues the same hue. The system has a single chromatic voltage and it is not held in reserve — it is infrastructure.

The button geometry reinforces the commercial-warm register. Primary CTAs use a fully-rounded pill shape at 40px height — not the 4px or 8px rounding that furniture brands with editorial aspirations (Restoration Hardware, Article) use. The pill reads as consumer-first and transactional-positive: "tap here to shop," not "here is a considered design statement." Etsy uses the same pill geometry for similar reasons. The shape is about minimizing decision friction in a browse-and-buy flow, not about communicating brand restraint.

Two typefaces divide the page along functional lines. Nunito Sans handles every surface that announces or organizes — headings, section titles, category names. Roboto handles every surface that informs or navigates — body copy, nav links, price labels, filter text. The split maps exactly to editorial versus functional duties, using Nunito Sans's rounded geometric warmth where the brand speaks and Roboto's neutral legibility where the user navigates.

Key Characteristics:

  • Purple (#7f187f) fills the top-nav bar and all primary CTA buttons — not a held-in-reserve accent but a structural surface element running across the full width of every page.
  • Nunito Sans at weight 700 for all headings and section titles; Roboto at weight 400 for all body, nav, and metadata.
  • Full-pill button geometry (9999px radius) at 40px height — across-the-board, no rectangular CTAs in the system.
  • 4px card rounding with shadow-lift hover state — warmer than IKEA's flat square cards, sharper than the 12–16px that some consumer-first brands use.
  • White canvas (#ffffff) below the nav with a very light gray (#f5f5f5) for category-panel backgrounds and page-section alternation.
  • Single chromatic voltage — purple is the only non-neutral hue in the chrome; all other color on the page originates from product photography.

Note: The live site extraction was blocked by a CAPTCHA challenge at capture time. Token values are derived from Wayfair's public Cinder design system documentation and visual analysis. Some values may differ from the current live render — verify the purple hex and component spacing before shipping.

Colors

Brand

  • Primary ({colors.primary} — #7f187f): the Wayfair brand purple. Fills the top-nav surface, all primary CTA button backgrounds, and all interactive link text. The single chromatic voltage in the system — used as a structural fill, not a reserved accent.
  • Primary Dark ({colors.primary-dark} — #5f1260): the hover/press variant — one step deeper on the same purple hue. Used for hover states on the nav elements and the CTA button press state.

Surface

  • Canvas ({colors.canvas} — #ffffff): pure white — the page floor for all product-grid sections, card interiors, and the search-bar fill.
  • Surface-1 ({colors.surface-1} — #f5f5f5): the off-white page section background, used to alternate catalog bands and panel backgrounds without a sharp contrast edge.
  • Surface-2 ({colors.surface-2} — #fafbfc): the near-white footer and secondary-surface background. Slightly cooler than surface-1.

Text

  • Ink ({colors.ink} — #2d2d2d): the primary text color — headings, product names, price labels, and body copy. A warm very dark gray rather than pure black; softens the contrast on white-canvas sections.
  • Ink Secondary ({colors.ink-secondary} — #626364): secondary body copy, filter labels, and nav sub-links. The mid-gray that carries informational text below the primary hierarchy.
  • Ink Muted ({colors.ink-muted} — #b1b5b8): the tertiary text tier — availability notices, legal footnotes, rating counts beneath product cards.

Hairlines

  • Hairline ({colors.hairline} — #e0e0e0): the primary card border and section divider. The light gray that defines product-card edges at rest.
  • Hairline Dark ({colors.hairline-dark} — #bdbdbd): the stronger border variant, used on form inputs and search bars where the outline needs to read against both white and off-white backgrounds.

Semantic

  • Success ({colors.success} — #2e7d32): availability-in-stock indicators and confirmation state color.
  • Danger ({colors.danger} — #c62828): out-of-stock flags, form validation errors, and warning badges.

Shadow

  • Shadow ({colors.shadow} — #000000): the shadow ink at low opacity — used for the product-card hover elevation and for modal overlay scrims.
  • Overlay ({colors.overlay} — #000000): modal scrim at approximately 50% opacity — the full-page overlay behind quick-view product modals.

Typography

Font Families

The system runs two voices: Nunito Sans for all editorial authority surfaces (display headings, section titles, promotional callouts) and Roboto for all navigational and informational surfaces (body copy, nav links, price metadata, filter chips). Nunito Sans is a rounded geometric humanist sans — slightly less extreme in its rounding than the original Nunito, but warmer than Roboto's neutral geometry. Both are open-source typefaces available on Google Fonts.

Hierarchy

TokenFamilySizeWeightLine HeightUse
{typography.display-xl}Nunito Sans40px70048pxHero headings, major promotional banners
{typography.display-lg}Nunito Sans32px70040pxSection-level headings
{typography.heading-md}Nunito Sans24px70032pxSub-section titles, category headers
{typography.heading-sm}Nunito Sans20px70028pxProduct-category intro headings
{typography.body-lg}Roboto16px40024pxLead paragraph body copy
{typography.body-md}Roboto14px40020pxDefault product-grid body text
{typography.body-sm}Roboto12px40016pxProduct card metadata, caption text
{typography.label-md}Roboto14px50020pxFilter chip labels, badge text
{typography.caption}Roboto12px40016pxLegal footnotes, availability notices
{typography.button-md}Roboto16px70024pxPrimary and secondary CTA button labels
{typography.nav-link}Roboto14px40020pxTop-nav and sub-nav link labels
{typography.price-lg}Roboto18px70024pxProduct price display, savings callouts

Principles

Nunito Sans tops out at 40px / 700 for hero promotions. Below 20px, all text in the system uses Roboto — there is no small-size Nunito Sans in the captured surfaces. The functional boundary at 20px aligns with the heading/body divide: everything that functions as a heading or title uses Nunito Sans, everything that functions as body uses Roboto. The weight split (700 for headings, 400 for body) holds strictly across both families.

Note on Font Substitutes

Both Nunito Sans and Roboto are open-source (Google Fonts) and can be used directly without licensing. If consolidating to a single family: DM Sans at 400 (body) and 700 (headings) is the closest single-family equivalent, as it has similar rounded geometry to Nunito Sans and comparable neutral body texture to Roboto. Poppins is another option for the heading tier but its fixed-width geometric forms read narrower than Nunito Sans at display sizes.

Layout

Spacing System

  • Base unit: 4px — the fundamental grid unit.
  • Tokens: {spacing.xs} 4px · {spacing.sm} 8px · {spacing.md} 16px · {spacing.lg} 24px · {spacing.xl} 32px · {spacing.2xl} 48px · {spacing.3xl} 64px.
  • Card internal padding: 16px — the {spacing.md} token applied to all product-card interiors.
  • Section vertical rhythm: ~48px between major content bands on the homepage.
  • Nav padding: 0×24px horizontal, creating a spacious nav with flush-top content.

Grid & Container

  • Max content width: ~1440px at desktop. Product grids run at 4–5 columns for the main product listing, collapsing to 2-column at tablet.
  • Hero zone: full-bleed promotional banner, text-and-CTA stack at left-center.
  • Product card grid: uniform 4px-radius cards with hairline borders at rest and shadow-lift on hover.
  • Category rail: a horizontal scroll of category chips above the product grid.

Rhythm

The homepage alternates between promotional hero (large image, Nunito Sans heading, purple CTA), product-category rail (horizontal-scroll chips), and product-card grid (4-column, shadow-hover). Section backgrounds alternate between white canvas and light gray, creating a quiet visual pulse without color.

Elevation

Wayfair uses a resting-border plus hover-shadow model for product cards:

  • Resting state: 1px {colors.hairline} border — no shadow. Cards sit flat on the white canvas at rest.
  • Hover state: the hairline lifts into a soft multi-layer shadow at low opacity over {colors.shadow} (#000000). The shadow is neutral — no color tint — adding depth without competing with the product photography inside the card.
  • Modal elevation: a full-page scrim at {colors.overlay} at approximately 50% opacity, used behind quick-view product modals.

Shapes

The radius scale runs two functional registers:

  • {rounded.none} 0px — full-bleed hero panels and the top-nav itself.
  • {rounded.xs} 4px — product cards and form inputs. The standard content-surface rounding, warmer than IKEA's 0px and sharper than the 8–16px some consumer brands use.
  • {rounded.sm} 8px — secondary tile surfaces and image overlays.
  • {rounded.md} 16px — large promotional panel chips and filter-summary tags.
  • {rounded.full} 9999px — all primary and secondary CTA buttons, the search bar, and category filter chips. The pill is the system's warmest shape, appearing on every interactive surface the user is expected to tap.

The pill is not reserved for special moments — it is the system-wide button standard. There are no rectangular buttons in Wayfair's UI.

Components

button-primary — Purple {colors.primary} fill, white text at {typography.button-md} (Roboto / 16px / 700), fully-rounded {rounded.full} pill, 8×24px padding, 40px height. "Shop Now," "Add to Cart," and all primary catalog CTAs.

button-primary-hover — Deepens to {colors.primary-dark} — a darker purple on press, staying within the brand-voltage hue without adding a second color.

button-secondary — White fill, purple text and border, same pill geometry. Used for secondary browse actions and promotional "View All" links.

top-nav — Purple {colors.primary} surface, white text and icons, 64px height, 0×24px padding. The persistent brand-voltage surface — the Wayfair logo, main navigation links (Furniture, Décor, Bed & Bath, Lighting, etc.), search bar, and account/cart icons all sit on the purple field.

nav-link — Transparent background, white text at {typography.nav-link} (Roboto / 14px / 400) on the purple nav surface. Hover state adds a slight white-alpha underline rather than a background fill.

hero-heading — Ink text on the white-canvas below-nav hero section, {typography.display-xl} (Nunito Sans / 40px / 700). The promotional headline above the product grid.

section-heading — Ink text at {typography.heading-md} (Nunito Sans / 24px / 700). Used for "Shop by Category," "Today's Deals," and department-section headers.

body-paragraph — Ink text at {typography.body-md} (Roboto / 14px / 400). Default product description and promotional copy text.

card — White canvas fill, 1px hairline border, {rounded.xs} 4px radius, 16px padding, shadow on hover. The standard product card — contains an image panel, product label, price, and add-to-cart button.

price-display — Ink text at {typography.price-lg} (Roboto / 18px / 700) for the price amount; secondary text at {typography.body-sm} for "was" and savings callouts.

category-chip — Light-gray {colors.surface-1} fill, ink text at {typography.label-md} (Roboto / 14px / 500), full-pill {rounded.full} rounding, 8×16px padding, 36px height. Used in the category-filter rail above the product grid.

text-input — White fill, ink text, 1px {colors.hairline-dark} border, {rounded.xs} 4px radius, 8×16px padding, 48px height.

search-bar — White fill, ink-secondary placeholder text, 1px {colors.hairline-dark} border, full-pill {rounded.full} rounding, 12×24px padding, 48px height. The search bar inside the purple top-nav uses a white-pill shape — the single white element on the purple surface.

footer — Near-white {colors.surface-2} background, ink-secondary text at {typography.body-sm}, 1px {colors.hairline} top border, 48×24px padding.

product-label — Transparent, ink text at {typography.body-md}. Product name displayed below the card image.

Do's and Don'ts

Do use {colors.primary} (#7f187f) as the top-nav background fill and all primary button fills — not just as a text-link accent. This system commits the brand voltage to structural surface duty; holding it in reserve and using a dark gray nav instead would neutralize the single chromatic identity move that differentiates Wayfair in the furniture-retail category.

Do apply the full-pill {rounded.full} geometry to every CTA button and the search bar. A developer from a different system would instinctively add 4–8px rounding to buttons. At 4px Wayfair's buttons read as a generic form input, not a brand-coded CTA. The pill is the interactive signature.

Do use Nunito Sans for headings (≥20px) and Roboto for everything else. Mixing Nunito Sans into body copy or price labels dissolves the functional boundary the system relies on for visual parsing. The two-family split is a navigation affordance, not a decorative choice.

Do keep product cards at {rounded.xs} 4px with a shadow-lift hover state rather than a resting shadow. The resting-border / hover-shadow combination is the category-standard approach for browse-heavy product grids — it reduces visual noise at rest while confirming interactivity on hover.

Don't add a second accent color to the chrome. A developer might reach for a teal or coral accent to differentiate promotional banners. The system has exactly one chromatic voltage (purple); any added accent competes with it and the product photography, creating three simultaneous color conversations on a single page scroll.

Don't use {colors.ink-muted} (#b1b5b8) for body text — it is a tertiary-only token for availability footnotes and rating counts. WCAG AA requires at minimum 4.5:1 contrast for body text on white; ink-muted at this value falls below that threshold at 14px. Use {colors.ink} or {colors.ink-secondary} for any body copy that requires readability.

Don't round product cards beyond {rounded.xs} 4px. The two-register shape system is 4px for cards and full-pill for buttons; introducing 8–16px on cards blurs the distinction between content surfaces and interactive affordances.

Don't use the purple on text-only secondary body copy — link affordances at the {colors.primary} hue on white pass AA contrast for larger sizes but not for 12px body. Reserve purple text for explicit interactive links (≥16px) and use {colors.ink} for all other copy.

Known Gaps

  • Bot-block extraction limitation: Wayfair's live site deployed a CAPTCHA at capture time. Token values in this file are derived from Wayfair's public Cinder design system documentation and visual analysis rather than from a live CSS extraction. Hex values for the primary purple, card radius, and spacing are derived from public documentation and should be verified against the live render before shipping.
  • Exact purple hex confirmation: the canonical purple may be declared as a CSS custom property not directly visible in the public Cinder docs — verify by inspecting the top-nav background-color on the live site.
  • Checkout flow: the cart, address, and payment surfaces live behind authentication and are not represented. Button states (disabled, loading), input validation error colors, and progress-indicator tokens are absent.
  • Dark mode: no dark-mode surface is exposed in Wayfair's current public marketing layer.
  • Mobile breakpoints: desktop-first capture. The collapsed nav, hamburger menu, 2-column product grid, and mobile search bar carry different padding and radius behavior at 375px.
  • Animation: page transitions, product-image carousel timing, and add-to-cart micro-interactions are not documented. Wayfair's Cinder system documents easing curves but these are not represented here.
  • Sub-brand surfaces: AllModern, Birch Lane, Joss & Main, and Perigold (Wayfair's portfolio brands) each run distinct color palettes that are not included in this token set.

E-commerce & Retail

More systems like this

More DESIGN.md files in E-commerce & Retail.

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