name: ui-craft-dense-dashboard description: "Dense dashboard / admin / Bloomberg / Retool / data-heavy internal tools. Locked knobs: CRAFT=7, MOTION=3, DENSITY=9. IBM Plex + mono numbers, semantic palette, 4/8px grid, sparklines, tabular-nums. Trigger on: dashboard, admin panel, data-dense, analytics, Bloomberg-like, Retool-like." argument-hint: "[action: build|review|polish] [target]"
UI Craft — Dense Dashboard
Pre-committed dense style: data-first, keyboard-first, operator tools. Bloomberg, Retool, Linear issues view, admin panels. Every pixel earns its place.
Knobs (locked)
- CRAFT_LEVEL = 7 — polished but not precious; operators value speed over sheen.
- MOTION_INTENSITY = 3 — micro-only. Row hover, row active tint, inline confirm. No scroll reveals in table areas.
- VISUAL_DENSITY = 9 — tight 4/8px grid; whitespace earns its place.
Do not re-ask these in Discovery. Confirm brand accent + dark/light preference only.
Style anchors
- UI sans + mono pairing. Mono for every ID, hash, timestamp, code.
- Semantic palette required: success, warning, danger, info + one brand accent.
tabular-numson every numeric column; mono on identifiers.- Tight 4/8px spacing grid.
px-3 py-2table cells,gap-2toolbars. - Sparklines everywhere; horizontal bars for categorical; area for time-series. No pie. No 3D.
- Keyboard shortcuts visible inline (
⌘K,J/K,Eto edit). - Dense chrome: breadcrumbs + tabs + toolbars + filter chips are welcome.
- Micro-motion only. Row hover, row active, inline save. No entrance stagger.
Base rules (inherited)
All rules in ../ui-craft/SKILL.md apply. This file overrides knob defaults and adds style-specific guidance below. The anti-slop and craft tests still apply in full.
Style-specific overrides
Typography
- UI: IBM Plex Sans or Inter, 400 / 500.
- Mono: IBM Plex Mono or Geist Mono for IDs, hashes, timestamps, code, version numbers, kbd.
- Body size: 13-14px default; 12px in dense tables is fine.
tabular-numson every numeric column, metric card, timestamp, duration.font-variant-numeric: tabular-nums slashed-zerofor IDs + codes.- Headings: compact. Page title 18-20px, section 14-15px 500.
Color (semantic palette required)
- Brand accent: one — primary actions, active tab, selected row accent tint.
- Semantic, subdued OKLCH (lightness 50-60, chroma ≤ 0.15):
- success
oklch(60% 0.12 150) - warning
oklch(72% 0.13 75) - danger
oklch(58% 0.15 25) - info
oklch(62% 0.12 240)
- success
- Never saturated hues — dashboards live on screens for 8 hours.
- Status dots, badge text, chip text use semantic color; backgrounds stay neutral.
Spacing & layout
- 4/8px spacing scale — never 5, 7, 9, 10. Stick to 4 / 8 / 12 / 16 / 24.
- Table cells:
px-3 py-2default;px-2 py-1.5for ultra-dense. - Toolbar rows:
gap-2,h-9controls,text-sm. - Sidebar: narrow (200-240px), subtle bg tint, icon + label; never full dark.
- Cards:
p-4, 8px radius; 1px border over shadow.
Data display
- Every number column:
tabular-nums+ right-aligned. - Every ID / hash / commit / timestamp: monospace.
- Sparklines inline in rows for trend context. 24-40px tall, single color.
- Category charts: horizontal bars. Time-series: area with 15% → 0% fade. No pies.
- Deltas: plain text
+12.5%in semantic color, no pill. - Empty states: one-line hint + keyboard shortcut to create.
Chrome & navigation
- Breadcrumbs + tabs + sub-toolbar together is expected and fine.
- Filter chips: outline style, removable
×, no pill fill. - Global command palette:
⌘Kvisible in header search affordance. - Row actions: inline icons on hover; also available via keyboard.
- Pagination: text
Page 3 of 42+tabular-nums, plusJ/Knavigation.
Motion
- Row hover: background shift to
oklch(96% 0.002 250)light /oklch(20% 0.005 250)dark, 80ms. - Active/selected row: brand accent tint at ~6% opacity + 2px accent left border.
- Inline save / confirm: 150ms fade + check icon swap.
- No scroll-triggered reveals in table areas — they stutter long lists.
- Sort arrow, filter open, column resize: instant or <100ms.
Reference files to read first
Load these from ../ui-craft/references/:
dashboard.md— primary reference; metric cards, charts, sidebar, tablestypography.md— tabular-nums, mono pairing, scalemotion.mdRendering Performance — compositor pipeline, layer promotion, scroll-linked motionresponsive.md— tablet + laptop breakpoints, toolbar collapse
Skip inspiration.md (landing-page focused), sound.md.
Anti-patterns for THIS style
- Serif fonts anywhere in chrome or data. Editorial is a different variant.
- Proportional figures in numeric columns — always
tabular-nums. - Saturated hues — reads as consumer app, not operator tool.
- Colored pills on every delta — plain text in semantic color.
- Pie charts, donut charts, 3D charts. Ever.
- Vertical bar chart for time-series — use area/line.
- Uniform colored top borders on metric cards.
- Card grids with heavy whitespace — if it feels airy, wrong variant.
- Full-dark sidebar (common AI pattern) — subtle tint only.
- Scroll-triggered reveals or stagger animations in table areas.
- Hidden keyboard shortcuts — always surface
⌘K, row shortcuts, help trigger. - Vague loading states — show skeleton rows matching column structure, not generic spinner.