Design System

evergreenLast update on Jul 9, 2026
Download .md

Filosofi

  • Utility-first dengan Tailwind CSS.
  • Shadcn/ui sebagai base component library.
  • Consistent spacing dengan scale 4px (0.25rem).
  • Dark mode first atau minimal support dark mode.

Color Tokens

Gunakan Tailwind config atau CSS variables:

:root {
  --background: 0 0% 100%;
  --foreground: 222.2 84% 4.9%;
  --primary: 222.2 47.4% 11.2%;
  --primary-foreground: 210 40% 98%;
  --accent: 217.2 32.6% 17.5%;
  --accent-foreground: 210 40% 98%;
  --muted: 210 40% 96.1%;
  --muted-foreground: 215.4 16.3% 46.9%;
  --destructive: 0 84.2% 60.2%;
  --border: 214.3 31.8% 91.4%;
  --ring: 222.2 84% 4.9%;
  --radius: 0.5rem;
}

Typography

ElementFontSizeWeight
H1System / Sans2.25rem700
H2System / Sans1.875rem600
H3System / Sans1.5rem600
BodySystem / Sans1rem400
SmallSystem / Sans0.875rem400
MonoJetBrains Mono0.875rem400

Spacing Scale

Gunakan Tailwind spacing scale:

TokenValue
10.25rem (4px)
20.5rem (8px)
41rem (16px)
61.5rem (24px)
82rem (32px)
123rem (48px)
164rem (64px)

Component Patterns

Button

// Variants: primary, secondary, ghost, destructive
// Sizes: sm, default, lg, icon
<Button variant="primary" size="default">
  Submit
</Button>

Form Input

<div className="space-y-2">
  <Label htmlFor="email">Email</Label>
  <Input id="email" type="email" placeholder="you@example.com" />
  <p className="text-sm text-muted-foreground">We'll never share your email.</p>
</div>

Responsive Breakpoints

BreakpointWidthTailwind Prefix
Mobile< 640px(default)
Tablet640pxsm:
Desktop768pxmd:
Wide1024pxlg:
Ultra-wide1280pxxl:

Dark Mode

Gunakan class strategy dengan Tailwind:

// tailwind.config.ts
darkMode: "class";

Toggle via class di <html>:

<html class="dark"></html>

Accessibility

  • Semua interactive element harus bisa diakses keyboard.
  • Color contrast ratio minimal 4.5:1 untuk text.
  • Gunakan semantic HTML (<button> bukan <div onclick>).
  • Add aria-label untuk icon-only buttons.