shelbeely

m3-web-angular

Implement Material Design 3 in Angular using Angular Material (@angular/material) with first-class M3 support. Covers M3 theming via design tokens, SCSS mixins, CLI schematics, and component usage. Use this when building M3-styled Angular applications.

shelbeely 4 Updated 6mo ago

Resources

1
GitHub

Install

npx skillscat add shelbeely/shelbeely-agent-skills/m3-web-angular

Install via the SkillsCat registry.

About this skill

Implements Material Design 3 in Angular applications using Angular Material's official design tokens, SCSS mixins, and CLI schematics. It provides a structured approach to theming, including light and dark mode support, and standard component usage. Developers should use this when building Angular applications that require official Google M3 styling and theming.

SKILL.md

Material Design 3 — Angular Material

Overview

Angular Material (@angular/material) has first-class M3 support since v17.2+. The Angular team works closely with Google's Material team. Full M3 theming via design tokens, SCSS mixins, and CLI schematics.

Keywords: Material Design 3, M3, Angular, Angular Material, @angular/material, SCSS, design tokens, schematics

When to Use

  • Angular projects — this is the most official, well-integrated M3 implementation for any web framework
  • Enterprise applications requiring official Google M3 support
  • Projects using Angular CLI and schematics

Install

ng add @angular/material

Generate M3 Theme

ng generate @angular/material:m3-theme

Theme Setup (SCSS)

@use '@angular/material' as mat;
@include mat.core();

$my-theme: mat.define-theme((
  color: (
    theme-type: light,
    primary: #6750A4,
    secondary: #625B71,
    tertiary: #7D5260,
  ),
));

$dark-theme: mat.define-theme((
  color: (
    theme-type: dark,
    primary: #6750A4,
    secondary: #625B71,
    tertiary: #7D5260,
  ),
));

:root {
  @include mat.all-component-themes($my-theme);
  color-scheme: light;
}

html.dark-theme {
  @include mat.all-component-colors($dark-theme);
  color-scheme: dark;
}

Component Examples

Buttons

<button mat-raised-button color="primary">Filled</button>
<button mat-stroked-button>Outlined</button>
<button mat-button>Text</button>
<button mat-fab><mat-icon>add</mat-icon></button>

Cards

<mat-card appearance="raised">
  <mat-card-header>
    <mat-card-title>Title</mat-card-title>
  </mat-card-header>
  <mat-card-content>Content</mat-card-content>
  <mat-card-actions>
    <button mat-button>Action</button>
  </mat-card-actions>
</mat-card>

Text Fields

<mat-form-field appearance="outline">
  <mat-label>Email</mat-label>
  <input matInput type="email" />
</mat-form-field>

<mat-form-field appearance="fill">
  <mat-label>Name</mat-label>
  <input matInput />
</mat-form-field>

Navigation

<mat-toolbar color="primary">
  <span>My App</span>
</mat-toolbar>

<mat-tab-group>
  <mat-tab label="Home">Home content</mat-tab>
  <mat-tab label="Search">Search content</mat-tab>
</mat-tab-group>

<mat-sidenav-container>
  <mat-sidenav mode="side" opened>Navigation</mat-sidenav>
  <mat-sidenav-content>Main content</mat-sidenav-content>
</mat-sidenav-container>

Dialogs

<button mat-raised-button (click)="openDialog()">Open Dialog</button>
import { MatDialog } from '@angular/material/dialog';

constructor(private dialog: MatDialog) {}

openDialog() {
  this.dialog.open(MyDialogComponent);
}

Checklist

  • M3 theme generated via ng generate @angular/material:m3-theme
  • Primary, secondary, and tertiary colors defined
  • Both light and dark theme variants configured
  • SCSS mixins applied at root level
  • Components use color="primary" binding for theming
  • Typography uses M3 type scale via Angular Material's typography system

Resources