Skip to content
On this page

Theming

tag: 'docType:concepts'

Material Design theming creates unique branded products with familiar patterns and accessible interactions.

collage of views of a mobile UI that show a user's setting and preference for
a green primary color flows through system UI
harmoniously

Tokens

Material is expressed in design tokens, which are the building blocks of all UI elements.

Each component token maps to a system token, which has a concrete reference value.

A diagram showing the heirachy of component tokens to system tokens to
reference
tokens

On the web, design tokens are CSS custom properties and can be scoped with CSS selectors.

css
.square-buttons {
  /* Changes all <md-filled-button> instances matching the selector */
  --md-filled-button-container-shape: 0px;
}

Reference

Reference tokens hold concrete values, such as a hex color, pixel size, or font family name.

Typeface

--md-ref-typeface tokens can be used to change font families and weights across all system and component tokens.

css
:root {
  --md-ref-typeface-brand: 'Open Sans';
  --md-ref-typeface-plain: 'Open Sans';
}

Palette

MWC does not currently support --md-ref-palette tokens.

System

System tokens define decisions and roles that give the design system its character, from color and typography, to elevation and shape.

Color

--md-sys-color tokens define dynamic color roles that map to components. See the color guide for more details.

css
:root {
  --md-sys-color-primary: red;
  --md-sys-color-secondary: blue;
}

Typography

--md-sys-typescale tokens define typescale roles that map to components. See the typography guide for more details.

css
:root {
  --md-sys-typescale-body-medium-size: 1rem;
  --md-sys-typescale-body-medium-line-height: 1.5rem;
}

Shape

--md-sys-shape tokens define corner shapes used in components. See the shape guide for more details.

css
:root {
  --md-sys-shape-corner-small: 4px;
  --md-sys-shape-corner-medium: 6px;
  --md-sys-shape-corner-large: 8px;
}

Motion

MWC does not currently support --md-sys-motion tokens.

Component

Component tokens are design attributes assigned to elements. They can be system tokens or concrete values.

css
:root {
  --md-filled-button-container-shape: 0px;
}

md-filled-button.error {
  --md-filled-button-container-color: var(--md-sys-color-error);
  --md-filled-button-label-text-color: var(--md-sys-color-on-error);
}

Refer to each components' documentation for available tokens.

Note: unlike --md-ref-* and --md-sys-* tokens, which are prefixed with ref and sys, component tokens are not prefixed with comp.

Theming has loaded