@aphrody/m3
v3.3.4
Published
The @aphrody Material Design 3 framework for Bun: one plugin (Tailwind v4, Sass through Rust, m3:* virtual theme/font modules, ?url imports), serveM3 (Bun.serve + HMR + proxy), buildM3 (Bun.build, Tauri webview layout), M3App and the m3 CLI.
Maintainers
Readme
@aphrody/m3
The Material Design 3 framework for Bun: one plugin, a dev server, a builder and the m3 CLI.
m3Plugin(@aphrody/m3/plugin, also the bunfig[serve.static]plugin): Tailwind v4, Sass through Rust, the virtual modulesm3:theme.css,m3:tokens.css,m3:tailwind.css,m3:spaceui.css,m3:scheme.css,m3:fonts.css,m3:symbols-<outlined|rounded|sharp>.css, and?urlimports.serveM3(/server):Bun.servewith HMR and proxy.buildM3(/build):Bun.build, with the Tauri webview layout (index.html,app.js,app.css,fonts/).defineM3Config(/config).M3Appfor React (/react) and Lit (/lit);/i18n; ambient module types in/client.
m3 new my-app && cd my-app && bun install
m3 dev # m3.config.ts in the working directory
m3 build --tauri ../ui-dist
m3 tokens --sheet scheme --seed '#6750a4' --darkSheets are generated by m3Css of @aphrody/bun (the Rust token exporter, loaded lazily); see
docs/guides/NATIVE.md for the native library. Fonts resolve from an
aphrody checkout (crates/ui/bun/icons/material-symbols, assets/fonts) or from
packages/m3-fonts/fonts/upstream synced by bun scripts/fonts-sync.ts (fontLayout, fontPaths).
Scripts: build (scripts/build.ts), typecheck, test (fonts sync, then bun test; the
m3Css FFI suite skips with its reason when the native library is absent).
