Live preview
Use this system
Three ways to drop Ledger into your workflow.
Save the file for your tool — your agent then generates UI in Ledger, automatically.
CLAUDE.mdRepo root — Claude Code reads it automatically.
.cursor/rules/ledger.mdcProject rule — applied to every generation.
.windsurfrulesRepo root — Cascade reads it automatically.
.github/copilot-instructions.mdRepo-wide custom instructions for Copilot.
The system
Brand & Voice
Exact, calm, and credible. Ledger handles money, so nothing is ambiguous. Numbers are tabular, states are unmistakable, and the palette signals trust without feeling cold.
Layout & Grid
Data-dense but legible. A 12-column grid with tabular-figure tables, right-aligned
amounts, and clear surface.sunken zones for summaries.
Components
Buttons
Primary uses color.brand.primary; destructive actions always use
color.state.danger with a confirm step.
Data tables
Rows separate with border.default; positive deltas use color.state.success,
negative use color.state.danger.
Accessibility
All financial figures meet AA contrast and never rely on color alone — deltas carry a sign and an icon.
Do & Don't
- Use tabular numerals for any monetary value.
- Pair every state color with text or an icon.
- Don't use more than one accent hue in a single dense view.
Tokens
Color (14)
Tokens
Export
One source of truth, five formats — copy or download any of them.
---$schema: https://designmd.in/schema/v1.jsonid: ledgername: Ledgertitle: Ledger — Trustworthy Fintechversion: 1.0.0category: fintechtags: [fintech, trust, blue, precise, data]author: designmdlicense: CC-BY-4.0updatedAt: 2026-06-19colorMode: [light, dark]tokens: color: brand: primary: { value: "oklch(0.50 0.15 250)", type: color } secondary: { value: "oklch(0.55 0.13 162)", type: color } onBrand: { value: "oklch(0.99 0 0)", type: color } text: primary: { value: "oklch(0.23 0.02 250)", type: color } muted: { value: "oklch(0.45 0.02 250)", type: color } link: { value: "{color.brand.primary}", type: color } surface: base: { value: "oklch(0.99 0.003 250)", type: color } raised: { value: "oklch(0.975 0.005 250)", type: color } sunken: { value: "oklch(0.955 0.008 250)", type: color } border: default: { value: "oklch(0.91 0.01 250)", type: color } state: success: { value: "oklch(0.52 0.14 162)", type: color } danger: { value: "oklch(0.52 0.20 25)", type: color } warning: { value: "oklch(0.56 0.13 75)", type: color } info: { value: "oklch(0.52 0.13 245)", type: color } typography: family: sans: { value: "IBM Plex Sans, system-ui, sans-serif", type: fontFamily } mono: { value: "IBM Plex Mono, ui-monospace, monospace", type: fontFamily } scale: xs: { value: "0.75rem", type: dimension } sm: { value: "0.875rem", type: dimension } base: { value: "1rem", type: dimension } lg: { value: "1.25rem", type: dimension } xl: { value: "1.5rem", type: dimension } "2xl": { value: "2rem", type: dimension } weight: regular: { value: 400, type: fontWeight } medium: { value: 500, type: fontWeight } semibold: { value: 600, type: fontWeight } leading: tight: { value: 1.2, type: number } normal: { value: 1.5, type: number } tracking: tight: { value: "-0.01em", type: dimension } spacing: base: { value: "0.25rem", type: dimension } radius: sm: { value: "0.25rem", type: dimension } md: { value: "0.5rem", type: dimension } lg: { value: "0.75rem", type: dimension } full: { value: "9999px", type: dimension } shadow: sm: { value: "0 1px 2px oklch(0 0 0 / 0.06)", type: shadow } md: { value: "0 4px 12px oklch(0 0 0 / 0.08)", type: shadow } motion: duration: fast: { value: "120ms", type: duration } base: { value: "200ms", type: duration } easing: standard: { value: "cubic-bezier(0.4, 0, 0.2, 1)", type: cubicBezier } breakpoint: sm: { value: "640px", type: dimension } md: { value: "768px", type: dimension } lg: { value: "1024px", type: dimension } zIndex: dropdown: { value: 1000, type: number } modal: { value: 1300, type: number } iconography: style: { value: "geometric, 2px stroke, square joins", type: descriptor }---# Ledger Design System## Brand & VoiceExact, calm, and credible. Ledger handles money, so nothing is ambiguous.Numbers are tabular, states are unmistakable, and the palette signals trustwithout feeling cold.## Layout & GridData-dense but legible. A 12-column grid with tabular-figure tables, right-alignedamounts, and clear `surface.sunken` zones for summaries.## Components### ButtonsPrimary uses `color.brand.primary`; destructive actions always use`color.state.danger` with a confirm step.### Data tablesRows separate with `border.default`; positive deltas use `color.state.success`,negative use `color.state.danger`.## AccessibilityAll financial figures meet AA contrast and never rely on color alone — deltascarry a sign and an icon.## Do & Don't- Use tabular numerals for any monetary value.- Pair every state color with text or an icon.- Don't use more than one accent hue in a single dense view.