A minimal, open-source CSS library for thoughtful interfaces.
Lume ships a polished component set, design-token-based theming, dark mode, utility helpers, and practical docs/demo apps you can use as implementation references.
- Docs: https://iamtherealtim.github.io/lume-css/lume-docs.html
- Admin demo: https://iamtherealtim.github.io/lume-css/admin-demo/dashboard.html
dist/lume.css+dist/lume.min.css— distributable CSS artifactsdist/core.css,dist/components.css,dist/utilities.css,dist/a11y.css,dist/responsive.css— optional modular CSS entrypointsdist/lume.js— optional lightweight behavior helper for.is-openpatternslume.css— core framework styles (tokens, base, components, utilities)lume.js— source runtime helper mirrored intodist/lume.jssrc/— modular source CSS files used to build bundle + partial outputsdocs/lume-showcase.html— full visual showcase of all componentsdocs/lume-docs.html— detailed documentation with copy-ready snippetsdocs/admin-demo/— realistic multi-page admin interface built with Lume
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@iamtherealtim/lume-css/dist/lume.min.css" /><link rel="stylesheet" href="./lume.css" />Use one CSS bundle (and optional JS helper) for fastest setup:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@iamtherealtim/lume-css/dist/lume.min.css" />
<script defer src="https://cdn.jsdelivr.net/npm/@iamtherealtim/lume-css/dist/lume.js"></script>Or in npm-based projects:
@import "@iamtherealtim/lume-css/lume.css";Import only the modules your product needs:
@import "@iamtherealtim/lume-css/core.css";
@import "@iamtherealtim/lume-css/components.css";
@import "@iamtherealtim/lume-css/utilities.css";You can also include a11y.css and responsive.css explicitly when you want those layers separately.
Lume ships an optional runtime helper at dist/lume.js for interactive patterns.
<script defer src="https://cdn.jsdelivr.net/npm/@iamtherealtim/lume-css/dist/lume.js"></script>Supported helpers:
[data-lume-toggle]+data-lume-target="#id"for modal/drawer/dropdown toggling[data-lume-open]/[data-lume-close]+data-lume-target="#id"[data-lume-dismiss="toast"](or.lume-toast-close) for toast removal- Escape key closes open modal/drawer/dropdown states
Utilities are now strictly namespaced (lume-*) to avoid class collisions in host applications.
npm run split:css— regenerate modular source files insrc/from the monolithic sourcenpm run build:css— bundlesrc/lume.cssintolume.css+dist/*outputs and publish modular files
Use this pattern in your app shell for stable first paint (theme + icon hydration):
<script>
document.documentElement.setAttribute('data-ui-init', 'pending');
try {
const savedTheme = localStorage.getItem('lume-theme');
if (savedTheme) document.documentElement.setAttribute('data-theme', savedTheme);
} catch (_) {}
</script>
<link rel="stylesheet" href="./lume.css" />
<script defer src="https://unpkg.com/lucide@latest"></script>And include this CSS guard in your app stylesheet:
html[data-ui-init="pending"] body { visibility: hidden; }Core + extended patterns include:
- Buttons, Forms, Cards, Badges, Alerts, Tables
- Modal, Tooltip, Tabs, Accordion, Dropdown
- Progress, Avatar, Toast, Breadcrumb, Pagination, Skeleton
- Callout, List Group, Stat, Empty State, Stepper, Drawer, Kbd
- Focus-visible outlines for interactive controls
- Reduced-motion handling for animations
- Dark mode via
html[data-theme="dark"] - First-paint stability pattern documented in
docs/lume-docs.html
.
├── dist/
│ ├── a11y.css
│ ├── components.css
│ ├── core.css
│ ├── lume.css
│ ├── lume.js
│ └── lume.min.css
│ ├── responsive.css
│ └── utilities.css
├── src/
│ ├── a11y.css
│ ├── components.css
│ ├── core.css
│ ├── lume.css
│ ├── responsive.css
│ └── utilities.css
├── scripts/
│ ├── build-css.mjs
│ └── split-css.mjs
├── docs/
│ ├── index.html
│ ├── lume-docs.html
│ ├── lume-showcase.html
│ ├── lume.css
│ ├── lume.js
│ ├── lume-logo.png
│ └── admin-demo/
│ ├── admin-demo.css
│ ├── admin-demo.js
│ └── *.html
├── lume.css
├── lume.js
├── CHANGELOG.md
├── CONTRIBUTING.md
└── README.md
MIT — see LICENSE.
See CONTRIBUTING.md for contribution workflow and PR checklist.