diff --git a/app/projects/[id]/loading.tsx b/app/projects/[id]/loading.tsx new file mode 100644 index 0000000..8a8b769 --- /dev/null +++ b/app/projects/[id]/loading.tsx @@ -0,0 +1,48 @@ +import { Skeleton } from '@/components/ui/skeleton'; + +export default function Loading() { + return ( +
+
+ {/* Primary Sidebar Skeleton */} +
+ + + +
+ + {/* Project Sidebar Skeleton */} +
+
+ +
+
+ + + +
+
+ + {/* Main Content Area Skeleton */} +
+
+ +
+
+
+ + + +
+
+
+
+ + {/* Status Bar Skeleton */} +
+ + +
+
+ ); +} diff --git a/components/features/projectList/ProjectCardSkeleton.tsx b/components/features/projectList/ProjectCardSkeleton.tsx new file mode 100644 index 0000000..928c054 --- /dev/null +++ b/components/features/projectList/ProjectCardSkeleton.tsx @@ -0,0 +1,36 @@ +import { Card, CardFooter, CardHeader } from '@/components/ui/card'; +import { Skeleton } from '@/components/ui/skeleton'; + +export default function ProjectCardSkeleton() { + return ( + + +
+
+ +
+ +
+ +
+ + +
+
+ +
+ + +
+ + +
+ +
+ + +
+
+ + ); +} diff --git a/components/features/projectList/ProjectListContent.tsx b/components/features/projectList/ProjectListContent.tsx index d983e66..8cbb158 100644 --- a/components/features/projectList/ProjectListContent.tsx +++ b/components/features/projectList/ProjectListContent.tsx @@ -3,7 +3,7 @@ import EmptyProjectCard from '@/components/features/projectList/EmptyProjectCard'; import ProjectCard from '@/components/features/projectList/ProjectCard'; -import { Spinner } from '@/components/ui/spinner'; +import ProjectCardSkeleton from '@/components/features/projectList/ProjectCardSkeleton'; import { useProjects } from '@/hooks/use-projects'; export default function ProjectListContent() { @@ -13,10 +13,11 @@ export default function ProjectListContent() { if (isLoading) { return ( -
-
- - Loading projects... +
+
+ {Array.from({ length: 3 }).map((_, i) => ( + + ))}
);