From 468c1235dd4316add2242f553be044a7637e222e Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Wed, 25 Feb 2026 20:02:21 +0000 Subject: [PATCH] [jules] ux: Complete skeleton loading system for Friends page Co-authored-by: Devasy23 <110348311+Devasy23@users.noreply.github.com> --- web/components/skeletons/FriendsSkeleton.tsx | 40 ++++++++++++++++++++ web/pages/Friends.tsx | 5 +++ 2 files changed, 45 insertions(+) create mode 100644 web/components/skeletons/FriendsSkeleton.tsx diff --git a/web/components/skeletons/FriendsSkeleton.tsx b/web/components/skeletons/FriendsSkeleton.tsx new file mode 100644 index 00000000..3f16b08b --- /dev/null +++ b/web/components/skeletons/FriendsSkeleton.tsx @@ -0,0 +1,40 @@ +import { Card } from '../ui/Card'; +import { Skeleton } from '../ui/Skeleton'; + +export const FriendsSkeleton = () => { + return ( +
+ {/* Header Skeleton */} +
+ +
+ + {/* Summary Cards Skeleton */} +
+ {[1, 2].map((i) => ( + +
+ + +
+ +
+ ))} +
+ + {/* Friends Grid Skeleton */} +
+ {[1, 2, 3, 4, 5, 6].map((i) => ( + +
+ + +
+ + +
+ ))} +
+
+ ); +}; diff --git a/web/pages/Friends.tsx b/web/pages/Friends.tsx index 039eb5db..62810544 100644 --- a/web/pages/Friends.tsx +++ b/web/pages/Friends.tsx @@ -1,6 +1,7 @@ import { AnimatePresence, motion } from 'framer-motion'; import { ArrowRight, Search, TrendingDown, TrendingUp, Users } from 'lucide-react'; import { useEffect, useState } from 'react'; +import { FriendsSkeleton } from '../components/skeletons/FriendsSkeleton'; import { EmptyState } from '../components/ui/EmptyState'; import { THEMES } from '../constants'; import { useTheme } from '../contexts/ThemeContext'; @@ -119,6 +120,10 @@ export const Friends = () => { const isNeo = style === THEMES.NEOBRUTALISM; + if (loading) { + return ; + } + return (
{/* Immersive Header */}