Description
This is a UI/UX issue. MarketplacePage.tsx today shows a generic empty state regardless of cause (no results vs. filter-too-tight vs. network error). Design three distinct variants — empty (no APIs), filtered-empty (filters too narrow), and error (fetch failed) — each with the right illustration tone, headline, body, and primary action.
Requirements and Context
- Reference:
src/pages/MarketplacePage.tsx, src/components/EmptyState.tsx, src/components/ServerError.tsx
- Filtered-empty must show "Clear all filters" as the primary action
- Network error must show "Retry" + link to status page
- All three must share spacing/typography so the page does not jump visually between states
- Must be secure, tested, and documented
- Should be efficient and easy to review
Suggested Execution
- Fork the repo and create a branch
git checkout -b feature/marketplace-state-variants
- Implement changes
src/components/EmptyState.tsx — extend to accept variant: 'empty' | 'filtered' | 'error'
src/pages/MarketplacePage.tsx — pick variant from apis.length, hasActiveFilters, fetchError
- Add three small inline SVG illustrations sharing one stroke style
- Test and commit
- Simulate each state and screenshot for the PR
- Tab into each state and verify the CTA is the first focusable
Example commit message
feat: differentiate MarketplacePage empty/filtered/error states
Acceptance Criteria
Guidelines
- Match copy tone from
docs/UI-Design-System.md (concise, action-first)
- Keep illustrations under 8KB each, inline SVG only
- Clear documentation and inline comments
- Timeframe: 96 hours
Description
This is a UI/UX issue.
MarketplacePage.tsxtoday shows a generic empty state regardless of cause (no results vs. filter-too-tight vs. network error). Design three distinct variants — empty (no APIs), filtered-empty (filters too narrow), and error (fetch failed) — each with the right illustration tone, headline, body, and primary action.Requirements and Context
src/pages/MarketplacePage.tsx,src/components/EmptyState.tsx,src/components/ServerError.tsxSuggested Execution
src/components/EmptyState.tsx— extend to acceptvariant: 'empty' | 'filtered' | 'error'src/pages/MarketplacePage.tsx— pick variant fromapis.length,hasActiveFilters,fetchErrorExample commit message
Acceptance Criteria
aria-hiddenand decorative onlyGuidelines
docs/UI-Design-System.md(concise, action-first)