Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
AI-powered design system generator that produces complete, tailored design systems from project requirements.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/token-architecture.md
1# Token Architecture23Three-layer token system for scalable, themeable design systems.45## Layer Overview67```8┌─────────────────────────────────────────┐9│ Component Tokens │ Per-component overrides10│ --button-bg, --card-padding │11├─────────────────────────────────────────┤12│ Semantic Tokens │ Purpose-based aliases13│ --color-primary, --spacing-section │14├─────────────────────────────────────────┤15│ Primitive Tokens │ Raw design values16│ --color-blue-600, --space-4 │17└─────────────────────────────────────────┘18```1920## Why Three Layers?2122| Layer | Purpose | When to Change |23|-------|---------|----------------|24| Primitive | Base values (colors, sizes) | Rarely - foundational |25| Semantic | Meaning assignment | Theme switching |26| Component | Component customization | Per-component needs |2728## Layer 1: Primitive Tokens2930Raw design values without semantic meaning.3132```css33:root {34/* Colors */35--color-gray-50: #F9FAFB;36--color-gray-900: #111827;37--color-blue-500: #3B82F6;38--color-blue-600: #2563EB;3940/* Spacing (4px base) */41--space-1: 0.25rem; /* 4px */42--space-2: 0.5rem; /* 8px */43--space-4: 1rem; /* 16px */44--space-6: 1.5rem; /* 24px */4546/* Typography */47--font-size-sm: 0.875rem;48--font-size-base: 1rem;49--font-size-lg: 1.125rem;5051/* Radius */52--radius-sm: 0.25rem;53--radius-default: 0.5rem;54--radius-lg: 0.75rem;5556/* Shadows */57--shadow-sm: 0 1px 2px rgb(0 0 0 / 0.05);58--shadow-default: 0 1px 3px rgb(0 0 0 / 0.1);59}60```6162## Layer 2: Semantic Tokens6364Purpose-based aliases that reference primitives.6566```css67:root {68/* Background */69--color-background: var(--color-gray-50);70--color-foreground: var(--color-gray-900);7172/* Primary */73--color-primary: var(--color-blue-600);74--color-primary-hover: var(--color-blue-700);7576/* Secondary */77--color-secondary: var(--color-gray-100);78--color-secondary-foreground: var(--color-gray-900);7980/* Muted */81--color-muted: var(--color-gray-100);82--color-muted-foreground: var(--color-gray-500);8384/* Destructive */85--color-destructive: var(--color-red-600);86--color-destructive-foreground: white;8788/* Spacing */89--spacing-component: var(--space-4);90--spacing-section: var(--space-6);91}92```9394## Layer 3: Component Tokens9596Component-specific tokens referencing semantic layer.9798```css99:root {100/* Button */101--button-bg: var(--color-primary);102--button-fg: white;103--button-hover-bg: var(--color-primary-hover);104--button-padding-x: var(--space-4);105--button-padding-y: var(--space-2);106--button-radius: var(--radius-default);107108/* Input */109--input-bg: var(--color-background);110--input-border: var(--color-gray-300);111--input-focus-ring: var(--color-primary);112--input-padding: var(--space-2) var(--space-3);113114/* Card */115--card-bg: var(--color-background);116--card-border: var(--color-gray-200);117--card-padding: var(--space-4);118--card-radius: var(--radius-lg);119--card-shadow: var(--shadow-default);120}121```122123## Dark Mode124125Override semantic tokens for dark theme:126127```css128.dark {129--color-background: var(--color-gray-900);130--color-foreground: var(--color-gray-50);131--color-muted: var(--color-gray-800);132--color-muted-foreground: var(--color-gray-400);133--color-secondary: var(--color-gray-800);134}135```136137## Naming Convention138139```140--{category}-{item}-{variant}-{state}141142Examples:143--color-primary # category-item144--color-primary-hover # category-item-state145--button-bg-hover # component-property-state146--space-section-sm # category-semantic-variant147```148149## Categories150151| Category | Examples |152|----------|----------|153| color | primary, secondary, muted, destructive |154| space | 1, 2, 4, 8, section, component |155| font-size | xs, sm, base, lg, xl |156| radius | sm, default, lg, full |157| shadow | sm, default, lg |158| duration | fast, normal, slow |159160## File Organization161162```163tokens/164├── primitives.css # Raw values165├── semantic.css # Purpose aliases166├── components.css # Component tokens167└── index.css # Imports all168```169170Or single file with layer comments:171172```css173/* === PRIMITIVES === */174:root { ... }175176/* === SEMANTIC === */177:root { ... }178179/* === COMPONENTS === */180:root { ... }181182/* === DARK MODE === */183.dark { ... }184```185186## Migration from Flat Tokens187188Before (flat):189```css190--button-primary-bg: #2563EB;191--button-secondary-bg: #F3F4F6;192```193194After (three-layer):195```css196/* Primitive */197--color-blue-600: #2563EB;198--color-gray-100: #F3F4F6;199200/* Semantic */201--color-primary: var(--color-blue-600);202--color-secondary: var(--color-gray-100);203204/* Component */205--button-bg: var(--color-primary);206--button-secondary-bg: var(--color-secondary);207```208209## W3C DTCG Alignment210211Token JSON format (W3C Design Tokens Community Group):212213```json214{215"color": {216"blue": {217"600": {218"$value": "#2563EB",219"$type": "color"220}221}222}223}224```225