m3-web-webcomponents
SKILL.md
Material Design 3 — Web Components (@material/web)
Overview
Google's official M3 web component library. Framework-agnostic — works with any framework that supports Custom Elements. Built on Lit for small bundle size and interoperability.
Keywords: Material Design 3, M3, web components, @material/web, Lit, custom elements, material-web, Google official
When to Use
- When you want Google's official M3 implementation
- Need cross-framework components
- Want standardized web components
- Projects that value stability over cutting-edge features
Status: Maintenance mode — stable but not receiving major new features.
Install
npm install @material/web
Setup
Import components individually for tree-shaking:
<script type="module">
import '@material/web/button/filled-button.js';
import '@material/web/button/outlined-button.js';
import '@material/web/button/text-button.js';
import '@material/web/textfield/outlined-text-field.js';
import '@material/web/textfield/filled-text-field.js';
import '@material/web/checkbox/checkbox.js';
import '@material/web/radio/radio.js';
import '@material/web/switch/switch.js';
import '@material/web/icon/icon.js';
import '@material/web/fab/fab.js';
import '@material/web/dialog/dialog.js';
import '@material/web/menu/menu.js';
import '@material/web/tabs/tabs.js';
import '@material/web/tabs/primary-tab.js';
import '@material/web/chips/chip-set.js';
import '@material/web/chips/filter-chip.js';
import '@material/web/progress/linear-progress.js';
import '@material/web/progress/circular-progress.js';
import '@material/web/select/outlined-select.js';
import '@material/web/slider/slider.js';
import '@material/web/list/list.js';
import '@material/web/list/list-item.js';
import '@material/web/navigationbar/navigation-bar.js';
import '@material/web/navigationtab/navigation-tab.js';
</script>
Theming
Theme via CSS custom properties:
:root {
/* Color tokens */
--md-sys-color-primary: #6750A4;
--md-sys-color-on-primary: #FFFFFF;
--md-sys-color-primary-container: #EADDFF;
--md-sys-color-secondary: #625B71;
--md-sys-color-tertiary: #7D5260;
--md-sys-color-error: #B3261E;
--md-sys-color-surface: #FEF7FF;
--md-sys-color-on-surface: #1D1B20;
/* Typography tokens */
--md-ref-typeface-brand: 'Roboto';
--md-ref-typeface-plain: 'Roboto';
/* Shape tokens */
--md-sys-shape-corner-full: 9999px;
--md-sys-shape-corner-large: 16px;
--md-sys-shape-corner-medium: 12px;
--md-sys-shape-corner-small: 8px;
}
Component Examples
Buttons
<md-filled-button>Filled</md-filled-button>
<md-outlined-button>Outlined</md-outlined-button>
<md-text-button>Text</md-text-button>
<md-filled-tonal-button>Tonal</md-filled-tonal-button>
<md-elevated-button>Elevated</md-elevated-button>
Text Fields
<md-outlined-text-field label="Email" type="email"></md-outlined-text-field>
<md-filled-text-field label="Name"></md-filled-text-field>
Navigation
<md-navigation-bar>
<md-navigation-tab label="Home">
<md-icon slot="active-icon">home</md-icon>
<md-icon slot="inactive-icon">home</md-icon>
</md-navigation-tab>
<md-navigation-tab label="Search">
<md-icon slot="active-icon">search</md-icon>
<md-icon slot="inactive-icon">search</md-icon>
</md-navigation-tab>
</md-navigation-bar>
Other Components
<md-checkbox></md-checkbox>
<md-switch></md-switch>
<md-slider></md-slider>
<md-fab label="Add">
<md-icon slot="icon">add</md-icon>
</md-fab>
<md-linear-progress indeterminate></md-linear-progress>
<md-circular-progress indeterminate></md-circular-progress>
<md-chip-set>
<md-filter-chip label="Option 1"></md-filter-chip>
<md-filter-chip label="Option 2"></md-filter-chip>
</md-chip-set>
Using with Other Frameworks
@material/web can be used inside React, Vue, Svelte, and Angular since web components work in any framework. See the framework-specific M3 skills for details on integration patterns.
Checklist
- Import only the components you need (tree-shaking)
- Apply M3 color tokens via CSS custom properties
- Configure typography typeface tokens
- Handle custom element events appropriately for your framework
- Test theming in both light and dark modes
- Ensure proper font loading (Roboto, Material Symbols)
Resources
m3-theme.css— Complete @material/web theme template (color, typography, shape, elevation, state, motion tokens) included in this skill's directory. Copy into your project and customize.material-theme-builderskill — Generate a custom token set from any source color.- M3 for Web: https://m3.material.io/develop/web
- Documentation: https://material-web.dev/
- Quick start: https://material-web.dev/about/quick-start/
- Theming: https://material-web.dev/theming/material-theming/
- SCSS color API: https://github.com/material-components/material-web/blob/main/color/_color.scss
- Token reference: https://github.com/material-components/material-web/tree/main/tokens
- GitHub: https://github.com/material-components/material-web
- npm: https://www.npmjs.com/package/@material/web
Weekly Installs
1
Repository
shelbeely/shelb…t-skillsGitHub Stars
2
First Seen
2 days ago
Security Audits
Installed on
amp1
cline1
opencode1
cursor1
kimi-cli1
codex1