Skip to content

feat(designs): implement empty state with CTA for new projects and up…#3060

Open
Kushaal-k wants to merge 1 commit into
nexu-io:mainfrom
Kushaal-k:feat/empty-state-cta
Open

feat(designs): implement empty state with CTA for new projects and up…#3060
Kushaal-k wants to merge 1 commit into
nexu-io:mainfrom
Kushaal-k:feat/empty-state-cta

Conversation

@Kushaal-k
Copy link
Copy Markdown

Fixes #2978

Why

I hit the empty Projects state while checking the current branch and found that it only showed the no-projects copy, even though the existing New Project modal flow was already available from EntryShell. This is a small UI gap, not a data/API issue, and it leaves users at a dead end when they land on an empty Projects tab.

What users will see

When Projects has no items, the empty state now includes a simple primary “New project” CTA that opens the existing New Project modal. The empty state is also visually simplified so it reads as a clean call to action instead of a decorative card.

Surface area

  • UI — empty state in apps/web
  • Keyboard shortcut — new or changed
  • CLI / env var — new od subcommand or flag, new tools-dev / tools-pack / tools-pr flag, or new OD_* env var
  • API / contract — new /api/* endpoint, new SSE event, or changed shape in packages/contracts
  • Extension point — new entry under skills/, design-systems/, design-templates/, or craft/, or change to the skills protocol
  • i18n keys — added new translation keys
  • New top-level dependency — adding any new entry to the root package.json
  • Default behavior change — changes what existing users experience without opting in
  • None — internal refactor, docs, tests, or translation update only

Screenshots

Not included.

Bug fix verification

  • Red spec: apps/web/tests/components/DesignsTab.empty.test.tsx
  • The test was added for this branch and passed here; I did not run it on main, so the red-on-main / green-on-branch check is not available.
  • Verification used instead: focused component test plus pnpm --filter @open-design/web typecheck.

Validation

  • pnpm --filter @open-design/web test -- tests/components/DesignsTab.empty.test.tsx
  • pnpm --filter @open-design/web typecheck

@lefarcen lefarcen requested a review from Siri-Ray May 26, 2026 18:15
@lefarcen lefarcen added size/M PR changes 100-300 lines risk/medium Medium risk: regular code changes type/feature New feature labels May 26, 2026
@lefarcen
Copy link
Copy Markdown
Contributor

Hey @Kushaal-k, thanks for picking this up and for tying it back to #2978.

Heads-up: #3043 is already open against the same empty-state path — both PRs touch apps/web/src/components/DesignsTab.tsx and apps/web/src/components/EntryShell.tsx, and both wire a New project CTA into the existing modal flow. You and @leno23 may want to compare approaches; the maintainer team will pick which lands so neither effort gets wasted.

Since this is a visible empty-state change, before I add @Eli-tangerine as reviewer could you also add a quick screenshot or before/after capture of the Projects empty state? That lets product review the UX without needing to spin up the branch locally.

@Kushaal-k
Copy link
Copy Markdown
Author

Before
Screenshot 2026-05-26 235001

After
Screenshot 2026-05-26 234905

@lefarcen lefarcen requested a review from Eli-tangerine May 26, 2026 18:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk/medium Medium risk: regular code changes size/M PR changes 100-300 lines type/feature New feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Project empty state should provide a direct 'New Project' entry

2 participants