polish(empty-state): unify copy and CTA pattern across pages (#837) - #877
Conversation
Empty states on /, /users, /connections, /widget-lab used inconsistent tone, button labels, and CTA presence. Unifying them around a single pattern: "No X yet" title + one-line subtitle + "Create your first X" primary + "Read the docs" secondary. - EmptyState gains an optional secondaryAction prop rendered below the primary action with consistent spacing. Backward compatible. - / (reader case): trim multi-line description to one sentence, move "Read the docs" link from primary action to secondaryAction (it's the only CTA readers can use). - /users: "No users found" → "No users yet"; "Create User" → "Create your first user"; add docs link. PageHeader's "Create User" button unchanged (so existing E2E selectors keep working). - /connections: "Add your first connection" → "Create your first connection" (consistent verb); add docs link. - /widget-lab: ADD primary "Create your first template" button wired to handleCreate (was previously CTA-less); add docs link. Filtered empty state unchanged. - 3 new EmptyState unit tests covering the secondaryAction prop Closes #837 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (6)
WalkthroughThe PR extends the ChangesEmpty-state secondary action support
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|



Summary
Empty states on
/,/users,/connections,/widget-labused inconsistent tone, button labels, and CTA presence. Unifying around a single pattern:What changed
secondaryActionprop (backward compatible) rendered below the primaryactionwith consistent spacing/(reader case): trim multi-line description to one sentence; move "Read the docs" link from primary action tosecondaryAction(the only CTA readers can use)/users:"No users found"→"No users yet"; primary"Create User"→"Create your first user"; add docs link. The PageHeader's"Create User"button is unchanged so existing E2E selectors keep working./connections:"Add your first connection"→"Create your first connection"(consistent verb); add docs link/widget-lab: ADD primary"Create your first template"button wired to existinghandleCreate(was previously CTA-less); add docs link. Filtered-empty state unchanged.Why
Issue #837 — "Single EmptyState component used by all four pages, consistent: heading tone, one-line subtitle, primary CTA, optional secondary link, same icon visual weight." All ACs satisfied. Icons were already consistent (
h-12 w-12).Test plan
Closes #837
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
Summary by CodeRabbit
Release Notes
New Features
UI/UX Improvements