Part of PAR-357.
Problem
Empty states are where a product sells its next feature, and ours are dead ends:
- Board columns: a bordered box reading "No issues".
- Releases with no GitHub: a grey footnote about develop → main PRs.
- New workspace: a "Welcome to {ws} 👋" checklist of three links.
- Teams with one team: a single bar on an empty page.
- Comments: "No comments yet."
- Generic StateBlocks wherever data is missing.
None of them use illustration, explain why you'd want the thing, or offer a primary action with its shortcut. The landing site has a recognisable visual motif (the terracotta asterisk, sage checkmark squircle and editorial type) that the app never reuses.
Reference
- Linear Projects empty state: an isometric line illustration, a short explanation of what projects are for, "Create new project N then P" and "Documentation" (Mobbin).
- Productboard: an illustration plus a "Create" menu offering types (Mobbin).
- Figma: a colourful brand-motif illustration (Mobbin).
Do
- Define an illustration style from the landing's motifs: line art in sage with terracotta accents, built on the icon stroke weight, and good in both themes.
- Build an
EmptyState component (illustration · title · one sentence of value · primary action with Kbd · optional secondary "Learn more") and use it on:
- Issues (none / filtered to none, with "Clear filters")
- Board column (compact: "+ Add issue")
- Projects, Releases ("Connect GitHub to create releases automatically")
- Inbox ("You're all caught up")
- My issues, Search (no results), Comments ("Start the discussion"), Analytics (not enough data)
- Use a tiny celebratory moment for Inbox zero and for completing the onboarding checklist, respecting reduced motion.
- Remove emoji from UI copy in favour of the illustration system.
PR: https://github.com/ParadauxIO/taskl.ie/pull/74 — minimal only (Clear filters copy). Illustration style and EmptyState component remain open.