Skip to content

jasonn/jds

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Jason's Personal Design System

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.

What's in the box

  • 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

Quick start

Vanilla HTML

<!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.

Tailwind v4

/* 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>

React

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/.

Using with Claude Code

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.

Repo structure

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

Tweaking the system

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.

License

MIT β€” see LICENSE.

Credits

Built with Geist, Lucide icons, and a lot of tweaking.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors