list-grid.tsx 977 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. "use client";
  2. import { ListCard } from "@/components/home/list-card";
  3. import { EmptyState } from "@/components/home/empty-state";
  4. import { useUserGroups } from "@/hooks/use-user-groups";
  5. export function ListGrid() {
  6. const { data: groups, isLoading, error } = useUserGroups();
  7. if (isLoading) {
  8. return (
  9. <div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
  10. {Array.from({ length: 3 }).map((_, i) => (
  11. <div key={i} className="h-24 animate-pulse rounded-lg bg-foreground/5" />
  12. ))}
  13. </div>
  14. );
  15. }
  16. if (error) {
  17. return (
  18. <p className="text-center text-sm text-red-500 py-8">
  19. Failed to load lists. Please try again.
  20. </p>
  21. );
  22. }
  23. if (!groups || groups.length === 0) {
  24. return <EmptyState />;
  25. }
  26. return (
  27. <div className="grid grid-cols-1 sm:grid-cols-2 gap-4" aria-live="polite">
  28. {groups.map((group) => (
  29. <ListCard key={group.id} group={group} />
  30. ))}
  31. </div>
  32. );
  33. }