A token-first design system for personal projects. Dark-by-default with a warm-cream light theme, optimized for technical interfaces.
π If you're an AI coding agent reading this: start at
CLAUDE.md, not here.
- CSS tokens β every color, space, radius, font, and motion value as a CSS custom property
- CSS components β buttons, inputs, badges, callouts, code blocks, tables, modals, calendar pickers, diff viewer, markdown viewer, app shell, and more
- Tailwind v4 plugin β all tokens exposed as native Tailwind utilities (
bg-brand-500,text-text-primary, etc.) - Tailwind v3 plugin β JS-based fallback for older projects
- React wrappers β typed components for the most-used patterns
- Reference page β
reference/design-system.html, the full visual showcase
<!DOCTYPE html>
<html data-theme="dark">
<head>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Geist:wght@300;400;500;600;700&family=Geist+Mono:wght@400;500;600&display=swap">
<link rel="stylesheet" href="./node_modules/jasons-design-system/src/css/tokens.css">
<link rel="stylesheet" href="./node_modules/jasons-design-system/src/css/index.css">
</head>
<body>
<button class="btn btn-primary">Get started</button>
</body>
</html>A full starter is in examples/vanilla/starter.html.
/* src/styles.css */
@import "tailwindcss";
@import "jasons-design-system/src/css/tokens.css";
@import "jasons-design-system/src/tailwind/theme.css";
@import "jasons-design-system/src/css/index.css";Now every JDS token is a Tailwind utility:
<button class="bg-brand-500 hover:bg-brand-600 text-text-inverse rounded-md px-4 py-2">
Tailwind, JDS-flavored
</button>import 'jasons-design-system/src/css/tokens.css';
import 'jasons-design-system/src/css/index.css';
import { Button, Callout, Badge } from 'jasons-design-system/react';
export default function App() {
return (
<>
<Badge variant="success" dot live>Active</Badge>
<Button variant="primary">Save changes</Button>
<Callout variant="tip">Use callouts sparingly.</Callout>
</>
);
}A React example with all common components is in examples/react/.
This repo is designed to be consumed by AI coding agents.
For a new project, paste the contents of prompts/new-project.md into Claude Code as your first message.
For an existing project, paste prompts/apply-to-existing.md.
Both prompts tell Claude Code to read CLAUDE.md, which is the system's rulebook.
jasons-design-system/
βββ CLAUDE.md β rules for AI agents (read this first)
βββ README.md β this file
βββ reference/
β βββ design-system.html β visual showcase / source of truth
βββ src/
β βββ css/
β β βββ tokens.css β all design tokens (variables)
β β βββ index.css β components, patterns, light overrides
β β βββ jds.css β entry point (imports both)
β βββ tailwind/
β β βββ theme.css β Tailwind v4 @theme block
β β βββ plugin.js β Tailwind v3 plugin
β βββ react/
β βββ Button.tsx
β βββ Input.tsx
β βββ Badge.tsx
β βββ Callout.tsx
β βββ Primitives.tsx β Kbd, Code, Panel
β βββ index.ts
βββ examples/
β βββ vanilla/
β β βββ starter.html
β β βββ markdown-page.html
β βββ react/
β βββ App.tsx
β βββ index.html
βββ prompts/
βββ new-project.md β paste into Claude Code for greenfield
βββ apply-to-existing.md β paste for retrofits
The whole palette is in src/css/tokens.css. The two most-touched knobs are at the top:
--brand-500: #EC4899; /* the pink */
--secondary-500: #6366F1; /* the indigo */Change those and the system rebrands itself.
MIT β see LICENSE.
Built with Geist, Lucide icons, and a lot of tweaking.