Thanks for your interest in react-material-expressive — a community implementation of Material 3 Expressive for the web. Contributions of all kinds are welcome: bug reports, fidelity fixes, new components, docs and accessibility improvements.
git clone https://github.com/gersilva96/react-material-expressive.git
cd react-material-expressive
npm installUseful scripts:
| Command | What it does |
|---|---|
npm run build |
Build dist/ (CSS + ESM + CJS + types + themes) |
npm test |
Run the Vitest suite (render + a11y assertions) |
npm run typecheck |
tsc --noEmit |
npm run lint |
ESLint (--max-warnings=0) |
npm run format |
Prettier write |
The interactive component workbench (Storybook) and the documentation site live in separate repositories; this repo is the library itself.
- React 19, TypeScript, no runtime framework dependencies. Components are presentational and controllable — no business logic or data fetching.
- Precompiled CSS built from
src/styles.csswith the official--md-sys-*design tokens. Use full Tailwind class literals (the compiler scans for them); never concatenate partial class names. - Accessibility is a requirement, not an extra. Interactive components own their focus management, ARIA roles/names/states and keyboard support. Add tests for any a11y-relevant behavior.
- Icons and fonts are passed in by the consumer; the library bundles neither.
See AGENTS.md for the architecture and conventions, and FOUNDATIONS.md for the authoritative M3 Expressive spec values behind each component.
- Fork and branch from
main. - Keep changes focused; update the relevant
docs/components/*.mdand add or update tests. - Make sure
npm run lint,npm run typecheck,npm testandnpm run buildall pass. - Note any breaking change in the PR description so it can be captured in the CHANGELOG with a migration note.
Commit messages follow a lightweight gitmoji +
scope style (e.g. ♿️ Tooltip: announce content via aria-describedby), but
clarity matters more than the exact format.
This project adheres to a Code of Conduct. By participating you are expected to uphold it.