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 */}