Design systems
DESIGN.md → tokens, fonts, type scale.
design-systems/linear-dark/DESIGN.md
Dense, precise, dark-first SaaS chrome in the Linear/Raycast lineage. Best for issue trackers, dev tools, command palettes, dashboards and internal tools where speed and information density matter more than decoration.
Legacy preset · install only when explicitly selected. New design directions start from real references and a working composition.
pnpm dlx shadcn@latest add @design-infra/theme-linear-darkType scale
Body copy sits on the canvas with enough contrast to read for minutes, not seconds. Links look like this, and inline code like this.
One registry for themes, blocks and curated components — installable with a single command.
Pick a design system, pull components, keep agents on-brand.
DESIGN.md → tokens, fonts, type scale.
~1,000 components, ranked.
find-component, pick-design-system.
Spotlights, beams, orbs.
npx shadcn add @oc/…
Start free, upgrade when your team grows.
For side projects.
$0/mo
For growing teams.
$20/mo
Custom contracts.
Custom
$48,210
12.4%increasevs. last month
8,904
3.2%increasevs. last month
2.1%
0.6%decreaselower is better
182ms
18.5%increasevs. last week
/pricing converts worst at 1.8% (site average 4.1%). Two likely causes:
Enterprise question has no answer.select page, signups::float / sessions as cvr
from page_stats order by cvr asc limit 3;Linear Dark is a tool, not a poster. It is the visual language of software that people live inside for eight hours a day: issue trackers, command palettes, deploy dashboards, admin consoles. The personality is calm, fast and exact — the interface should feel like it was machined rather than drawn. Everything is quiet so that the user's data can be loud.
The system is dark-first and single-mode: there is no light theme, and .dark reuses the
same palette. Surfaces are near-black with a faint cool cast, separated by hairlines rather
than shadows. A single indigo-violet carries every primary action and every focus state.
Density is high: 32px rows, 28px controls, 13–14px body text. If a screen feels airy, it is
probably wrong.
Target audience: engineers, PMs and designers who use keyboard shortcuts, scan long lists, and notice 1px misalignments.
The palette is a tight ladder of cool near-blacks plus one saturated indigo.
success (#4CB782) and warning (#F2C94C) exist for status dots and
inline icons only — never for large fills.Charts use chart-1…chart-5 (indigo, green, amber, orange, lavender) at full saturation
on dark, with 1px lines and no gradients under the curve.
Inter does all of the UI work; JetBrains Mono handles anything a machine produced.
ENG-1423), commit SHAs, durations, keyboard
shortcuts, code. Enable tabular numerals (tabular-nums) for any column of figures.Never use more than two weights in one component (400 + 500, or 500 + 600).
The grid is a 4px base with an 8px rhythm. Standard app shell: a 240px sidebar on
sidebar (#08090A), a 48px top bar, and a fluid content pane. List rows are 32px tall with
12px horizontal padding; controls are 28px; inputs 32px. Section gaps are 24–32px; inside a
card, 16px padding and 8–12px between elements.
Content is left-aligned and dense. Prefer split views (list + detail) over modals. Marketing pages cap at 1120px with generous vertical spacing, but in-app screens fill the viewport.
Depth comes from tonal steps plus hairlines, not shadows. Each layer up the stack
(background → card → popover) is a few points brighter and bordered with border. The only
shadow in the system is reserved for floating layers (popover, command palette, dialog):
0 8px 24px -4px #00000099 plus a 1px border ring. Modals sit on a #000000B3 scrim.
A faint top-edge highlight (inset 0 1px 0 #FFFFFF0A) on cards and primary buttons is
allowed — it reads as light catching a machined edge.
Small, consistent radii. --radius is 8px (rounded.lg) for cards, panels and dialogs;
6px (rounded.md) for buttons and inputs; 4px (rounded.sm) for badges, kbd and
checkboxes. rounded.full is only for avatars and status dots. Never mix a pill button into
this system. Icons are 16px, 1.5px stroke (Lucide or Tabler), aligned to the text baseline.
Create issue C).border hairline, near-white text. Most buttons
on a screen should be secondary or ghost.border, 8px radius, 16px padding. No shadow.input border, 32px tall. Focus = 2px ring outline offset 0,
no glow.accent, selected rows get a 2px primary bar on the
left edge. Trailing metadata in mono, muted-foreground.kbd style.Motion language: quiet (MOTION.md). Motion confirms, it never performs.
cubic-bezier(0.22, 1, 0.36, 1) (ease-out) for entering; cubic-bezier(0.4, 0, 1, 1) for exiting. No springs, no bounce.prefers-reduced-motion: drop transforms, keep opacity.You are building UI in the Linear Dark system: a dense, precise, dark-only SaaS interface in the lineage of Linear and Raycast. Use shadcn/ui components on near-black surfaces (#0B0C0E → #131417 → #18191D) separated by 8% white hairlines, with a single indigo (#5E6AD2) for primary actions and focus. Set UI text in Inter at 13–14px with weight 400/500 and tight negative tracking on headings, and set IDs, numbers, shortcuts and code in JetBrains Mono. Keep density high (32px rows, 28px buttons, 8px card radius, 6px controls) and prefer split views, command palettes and keyboard hints over modals and wizards. Motion is minimal and fast (120–160ms, opacity and small translate only); the only decorative effects allowed are a subtle spotlight or beam on marketing heroes. Never add shadows to cards, gradients to buttons, or a second accent colour.