A platform-neutral design language for design systems, and the toolchain that turns one into real, generated component libraries.
Milda lets you describe what a component is (its contract, anatomy, behavior, and styling intent) once, in a canonical model that carries no platform assumptions. From that single description, Milda generates idiomatic output for each target (React, CSS, Figma variables, and more by design), so a design system stays consistent everywhere without being hand-maintained per platform.
Docs: milda.dev
The language, engine, and editor tooling are open (MIT).
| Repo | What it is | npm |
|---|---|---|
| milda-lang | The Milda language: canonical AST, prelude (stdlib as data), token model, validation & conformance | @mildastudio/milda |
| milda-engine | The component IR + semantics, contract diff/versioning, and the code generators | @mildastudio/core, contract, generate, release |
npm install @mildastudio/milda @mildastudio/core @mildastudio/generateWrite .milda with syntax highlighting, diagnostics, completion, hover docs,
go-to-definition, document outline, and folding, all powered by one language
server. The three editors' highlighters are generated from a single shared
vocabulary, so they can't drift.
| Repo | What it is | Get it |
|---|---|---|
| milda-lsp | The language server (LSP) for any LSP-capable editor (Neovim, Zed, Emacs, Helix, ...) | @mildastudio/milda-lsp |
| milda-vscode | VS Code / Open VSX extension (also Cursor, Windsurf, VSCodium); the server ships inside it | VS Code Marketplace · Open VSX |
| milda-jetbrains | JetBrains plugin (IntelliJ IDEA Ultimate, WebStorm, PyCharm, GoLand, Rider, ...); the server ships inside it | JetBrains Marketplace |
- Platform-neutral by construction. The language and IR encode no CSS pseudo-classes, DOM tags, or framework APIs. Target-specific lowering lives only in the generators.
- The IR is the contract. A component's public surface is data, so it can be digested, diffed, and versioned with real semver, not inferred from generated code.
- Honest escape hatches. Where a value can't be expressed cleanly for a target, the model says so explicitly rather than silently approximating.
- Values are first-class. Colors are space-aware functions (
oklch,srgb,hex, ...) and dimensions carry their units (8px,0.5rem,150ms), typed in the language itself, not opaque strings.
The open packages are the engine. The visual Milda Studio editor, where you design systems and press generate, is the product built on top. This is open-core: the language and generators are yours to use and extend freely.
Everything here is 0.x and evolving quickly; expect the shape to change before 1.0.