MDC

Material Design 3,

as web components.

@sandlada/mdc is a framework-agnostic component library following the Material Design 3 and Material Expressive specifications. Build once, then use it in any framework - or plain HTML.

npm i @sandlada/mdc

One library, every framework

MDC ships native custom elements built on Lit. No wrappers, no framework lock-in — the same<mdc-button> works in React, Vue, Angular, Svelte, Astro, and plain HTML.

FAQ

Does MDC work with React / Vue / Angular?
Yes. They are standard web components. Vue needs isCustomElement: tag => tag.startsWith('mdc-'), Angular needs CUSTOM_ELEMENTS_SCHEMA, React 19 works natively.
How is theming handled?
Through @sandlada/material-design-css tokens. Import the preset plus a prebuilt color scheme, toggle dark on <html> for dark mode.
How is this different from material-web?
MDC continues the Material Web approach with Material Expressive coverage, strict token-driven styling, and a cross-framework-first docs and playground experience.