-
-
- Avalanche L1s Index
-
-
- Loading comprehensive stats for Avalanche Mainnet L1s...
-
+
+ {/* Hero Section - Loading State */}
+
+ {/* Multi-layer gradient background */}
+
+
+
+
+
+ {/* Content */}
+
+
+
+
+ Avalanche L1s Index
+
+
+ Loading comprehensive stats for Avalanche Mainnet L1s...
+
+
+
+ {/* Submit button skeleton */}
+
+
+
+ {/* Separator */}
+
+
+ {/* Main metrics - 3 cards */}
+
+ {[1, 2, 3].map((i) => (
+
+ ))}
+
+
+ {/* Secondary metrics - 4 cards */}
+
+ {[1, 2, 3, 4].map((i) => (
+
+ ))}
+
-
-
+
+ {/* Separator */}
+
+
+ {/* Search Bar Skeleton */}
+
+
+ {/* Table Skeleton */}
+
+
+
+
+
+ {["L1 Name", "Addresses", "Transactions", "ICM", "Validators", "Throughput", "Category", "Explorer"].map((header, i) => (
+ |
+
+ |
+ ))}
+
+
+
+ {[...Array(10)].map((_, rowIndex) => (
+
+ |
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+ ))}
+
+
+
+
+
{/* Bubble Navigation */}
diff --git a/app/(home)/stats/validators/page.tsx b/app/(home)/stats/validators/page.tsx
index 1bda4ee4adc..119c6817757 100644
--- a/app/(home)/stats/validators/page.tsx
+++ b/app/(home)/stats/validators/page.tsx
@@ -358,19 +358,120 @@ export default function ValidatorStatsPage() {
if (loading) {
return (
-
-
-
-
- Validator Stats
-
-
- Loading validator statistics for {network}...
-
+
+ {/* Header Section */}
+
+
+
+
+ Validator Stats
+
+
+ Loading validator statistics for {network}...
+
+
-
-
+
+ {/* Aggregated Stats Cards Skeleton */}
+
+ {/* Total Chains Card */}
+
+
+
+
+ {/* Total Validators Card */}
+
+
+
+
+ {/* Version Breakdown Card */}
+
+
+
+
+
+ {[1, 2, 3, 4, 5].map((i) => (
+
+ ))}
+
+
+
+
+
+ {/* Search & Filter Bar Skeleton */}
+
+
+ {/* Table Skeleton */}
+
+
+
+
+
+ {["Chain Name", "Validators", "By Nodes %", "By Stake %", "Version Breakdown", "Actions"].map((header, i) => (
+ |
+
+ |
+ ))}
+
+
+
+ {[...Array(10)].map((_, rowIndex) => (
+
+ |
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+ ))}
+
+
+
+
+
);
diff --git a/components/stats/ChainMetricsPage.tsx b/components/stats/ChainMetricsPage.tsx
index a0addeafb68..0539a23ca0a 100644
--- a/components/stats/ChainMetricsPage.tsx
+++ b/components/stats/ChainMetricsPage.tsx
@@ -388,18 +388,192 @@ export default function ChainMetricsPage({
if (loading) {
return (
-
-
-
-
- {chainName.includes("C-Chain")
- ? "Avalanche C-Chain Metrics"
- : `${chainName} L1 Metrics`}
-
-
{description}
+
+ {/* Hero Section Skeleton */}
+
+ {/* Multi-layer gradient background */}
+
+
+
+
+
+ {/* Content */}
+
+ {/* ExplorerDropdown Placeholder for L1s */}
+ {!chainName.includes("C-Chain") && (
+
+ )}
+
+
+ {/* Chain Logo Skeleton - Only show if chainLogoURI exists */}
+ {chainLogoURI && (
+
+ )}
+
+
+
+ {chainName.includes("C-Chain")
+ ? "Avalanche C-Chain Metrics"
+ : `${chainName} L1 Metrics`}
+
+
+ {chainName.includes("C-Chain")
+ ? "Loading Avalanche C-chain activity and network usage..."
+ : `Loading ${chainName} metrics...`}
+
+
+
+
+
+
+ {/* Network Overview Section */}
+
+
+
Network Overview
+
+
+ {/* Daily Active Addresses */}
+
+
+
+
+
+
+
Daily Active Addresses
+
+
+
+
+
+ {/* Daily Transactions */}
+
+
+
+
+
+
+
+ {/* Total Contracts Deployed */}
+
+
+
+
+
+
+
Total Contracts Deployed
+
+
+
+
+
+ {/* Daily Interchain Messages */}
+
+
+
+
+
+
+
Daily Interchain Messages
+
+
+
+
+
+
+
+ {/* Historical Trends Section */}
+
+
+
Historical Trends
+
+ Track {chainName} network growth and activity over time
+
+
+
+
+ {chartConfigs.slice(0, 8).map((config) => {
+ const Icon = config.icon;
+ return (
+
+ {/* Chart Header */}
+
+
+
+
+
+
{config.title}
+
{config.description}
+
+
+ {/* Period Buttons */}
+
+ {["D", "W", "M", "Q", "Y"].map((period) => (
+
+ ))}
+
+
+
+
+ {/* Chart Content */}
+
+ {/* Current Value Skeleton */}
+
+
+ {/* Chart Area Skeleton */}
+
+ {[...Array(12)].map((_, barIndex) => (
+
+ ))}
+
+
+ {/* Brush Slider Skeleton */}
+
+
+
+ );
+ })}
-