Summary
List and data pages currently handle loading and empty states independently, producing inconsistent UI and repeated logic. A unified approach should standardise both concerns: skeleton placeholders during fetching and empty state components when queries settle with zero results.
Scope
- Add a
CreatorCardSkeleton component matching the real card dimensions with animated pulse on avatar, name, price, and holder count placeholders
- Add an
EmptyState component accepting a message and an optional CTA — used on holdings, creator list, and any future list page
- Wire the skeleton into creator list and holdings pages during
isLoading
- Wire the empty state into holdings when the query settles with zero results; link the CTA to the creator discovery page
- Skeletons and empty states must not appear simultaneously — skeleton only during loading, empty state only after a settled empty response
Acceptance Criteria
ETA: 12 hours
Coordinate on Telegram
Summary
List and data pages currently handle loading and empty states independently, producing inconsistent UI and repeated logic. A unified approach should standardise both concerns: skeleton placeholders during fetching and empty state components when queries settle with zero results.
Scope
CreatorCardSkeletoncomponent matching the real card dimensions with animated pulse on avatar, name, price, and holder count placeholdersEmptyStatecomponent accepting a message and an optional CTA — used on holdings, creator list, and any future list pageisLoadingAcceptance Criteria
ETA: 12 hours
Coordinate on Telegram