Live preview
Use this system
Three ways to drop Slate into your workflow.
Save the file for your tool — your agent then generates UI in Slate, automatically.
CLAUDE.mdRepo root — Claude Code reads it automatically.
.cursor/rules/slate.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
Slate is built for dashboards that live open in a tab all day. Cool greys do the heavy lifting; indigo appears only where the eye needs to go. The tone is matter-of-fact and engineering-grade — readable density over decoration.
Layout & Grid
Tight 4px rhythm, compact rows, and aligned numeric columns in mono.
Panels separate with hairline borders rather than heavy shadows.
Components
Buttons
Medium-weight labels, radius.md corners, and a restrained shadow.sm.
Destructive actions switch to color.state.danger.
Tables
Zebra-free; rows divide with color.border.default. Sort and filter affordances
are quiet until hovered.
Accessibility
All text passes WCAG AA on base and raised surfaces. Numeric data uses tabular figures, and every interactive element has a visible focus ring.
Tokens
Color (14)
Tokens
Export
One source of truth, five formats — copy or download any of them.
---$schema: https://designmd.in/schema/v1.jsonid: slatename: Slatetitle: Slate — Neutral Dashboard Systemversion: 1.0.0category: saastags: [saas, neutral, dashboard, indigo, data]author: designmdlicense: CC-BY-4.0updatedAt: 2026-06-22colorMode: [light]tokens: color: brand: primary: { value: "oklch(0.5 0.11 272)", type: color } secondary: { value: "oklch(0.62 0.09 230)", type: color } onBrand: { value: "oklch(0.99 0 0)", type: color } text: primary: { value: "oklch(0.25 0.012 272)", type: color } muted: { value: "oklch(0.47 0.014 272)", type: color } link: { value: "{color.brand.primary}", type: color } surface: base: { value: "oklch(0.985 0.002 272)", type: color } raised: { value: "oklch(1 0 0)", type: color } sunken: { value: "oklch(0.962 0.004 272)", type: color } border: default: { value: "oklch(0.905 0.006 272)", type: color } state: success: { value: "oklch(0.58 0.15 150)", type: color } danger: { value: "oklch(0.56 0.2 25)", type: color } warning: { value: "oklch(0.7 0.15 75)", type: color } info: { value: "oklch(0.6 0.14 250)", 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: sm: { value: "0.875rem", type: dimension } base: { value: "1rem", type: dimension } lg: { value: "1.2rem", type: dimension } xl: { value: "1.5rem", type: dimension } "2xl": { value: "2rem", type: dimension } "3xl": { value: "2.75rem", type: dimension } weight: regular: { value: 400, type: fontWeight } medium: { value: 500, type: fontWeight } bold: { value: 600, type: fontWeight } leading: tight: { value: 1.2, type: number } normal: { value: 1.55, type: number } spacing: base: { value: "0.25rem", type: dimension } radius: sm: { value: "0.3rem", type: dimension } md: { value: "0.5rem", type: dimension } full: { value: "9999px", type: dimension } shadow: sm: { value: "0 1px 2px oklch(0.25 0.01 272 / 0.07)", type: shadow } md: { value: "0 6px 18px oklch(0.25 0.01 272 / 0.09)", type: shadow } motion: duration: base: { value: "150ms", type: duration } easing: standard: { value: "cubic-bezier(0.3, 0, 0.2, 1)", type: cubicBezier } breakpoint: md: { value: "768px", type: dimension } iconography: style: { value: "1.5px stroke, square caps, geometric", type: descriptor } zIndex: dropdown: { value: 1000, type: number } modal: { value: 1300, type: number }---# Slate Design System## Brand & VoiceSlate is built for dashboards that live open in a tab all day. Cool greys do theheavy lifting; indigo appears only where the eye needs to go. The tone ismatter-of-fact and engineering-grade — readable density over decoration.## Layout & GridTight 4px rhythm, compact rows, and aligned numeric columns in `mono`.Panels separate with hairline borders rather than heavy shadows.## Components### ButtonsMedium-weight labels, `radius.md` corners, and a restrained `shadow.sm`.Destructive actions switch to `color.state.danger`.### TablesZebra-free; rows divide with `color.border.default`. Sort and filter affordancesare quiet until hovered.## AccessibilityAll text passes WCAG AA on base and raised surfaces. Numeric data uses tabularfigures, and every interactive element has a visible focus ring.