diff --git a/packages/web/src/routes/initiatives/$id.tsx b/packages/web/src/routes/initiatives/$id.tsx index 4e621c1..da79a26 100644 --- a/packages/web/src/routes/initiatives/$id.tsx +++ b/packages/web/src/routes/initiatives/$id.tsx @@ -2,6 +2,7 @@ import { useState, useCallback } from "react"; import { createFileRoute, useNavigate } from "@tanstack/react-router"; import { AlertCircle } from "lucide-react"; import { Button } from "@/components/ui/button"; +import { Skeleton } from "@/components/Skeleton"; import { trpc } from "@/lib/trpc"; import { InitiativeHeader } from "@/components/InitiativeHeader"; import { ProgressPanel } from "@/components/ProgressPanel"; @@ -313,8 +314,28 @@ function InitiativeDetailPage() { // Loading state if (initiativeQuery.isLoading) { return ( -
- Loading initiative... +
+ {/* Header skeleton */} +
+ + + +
+ + {/* Two-column grid skeleton */} +
+ {/* Left: phase accordion skeletons */} +
+ + +
+ + {/* Right: ProgressPanel + DecisionList skeletons */} +
+ + +
+
); } @@ -381,8 +402,10 @@ function InitiativeDetailPage() { {/* Phase loading */} {phasesQuery.isLoading && ( -
- Loading phases... +
+ {Array.from({ length: 3 }).map((_, i) => ( + + ))}
)}