Lightweight
Minimal surface area with sensible defaults. Keep your markup clean and your UI consistent.
Millet is a tiny, semantic-first CSS layer for common UI elements — no framework, no build step.
Components are styled with native tags and a few data-* attributes.
Minimal surface area with sensible defaults. Keep your markup clean and your UI consistent.
Just CSS (and optional progressive enhancement). Works in any stack — or no stack.
Buttons, forms, fieldsets, and typography are styled via native elements and attributes.
Global focus rings, good contrast, and validation wiring that respects standard browser semantics.
Include the stylesheet and (optionally) the enhancement script. Then use semantic HTML.
For variants, use attributes like data-size, data-variant, and data-width.
<!-- This site (everything under /docs) -->
<link rel="stylesheet" href="styles.css">
<script type="module" src="enhance.js"></script>
<!-- Or from the package: src/css/millet.css + src/js/enhance.js -->
data-sizedata-variantBody text. Use strong for emphasis, links for navigation, code for inline snippets, and Ctrl+K for keyboard shortcuts.
Perfection is achieved not when there is nothing more to add, but when there is nothing left to take away.
Press highlight to mark important text. And small for fine print.
const millet = await import('./millet/core.js');