ash lumen
a monochromatic design system & vs code theme
hierarchy through luminance, not hue. a minimal system built from the gray spectrum for calm, focused interfaces and coding.
philosophy
color is noise. the system lives in the gray spectrum — warm and cool tints create hierarchy without distraction.
color is reserved for meaning: errors, warnings, success, info. never for decoration.
elements are differentiated by brightness, not hue. important things are brighter, subordinate things fade.
even diagnostics use muted tones. no screaming reds — the interface stays calm under pressure.
theme preview
import { readFileSync } from 'node:fs';
interface Token {
name: string;
value: string;
}
// Resolve design tokens at runtime
function getTokens(path: string): Token[] {
const raw = readFileSync(path, 'utf-8');
return JSON.parse(raw);
} import { useState, useEffect } from 'react';
export function ThemeToggle() {
const [theme, setTheme] = useState('dark');
useEffect(() => {
document.documentElement
.setAttribute('data-theme', theme);
}, [theme]);
return (
<button onClick={() => setTheme(
t => t === 'dark' ? 'light' : 'dark'
)}>
{theme === 'dark' ? '◐' : '◑'}
</button>
);
} :root {
--color-bg: #161616;
--color-text: #a0a0a0;
--color-accent: #b0b0b0;
}
.surface {
background: var(--color-surface);
border: 1px solid var(--color-border);
} reference
the full component reference lives on its own page: colors, foundations, buttons, badges, alerts, inputs, cards, dialogs, code, motion and states, each rendered with the live tokens rather than screenshots.