diff --git a/app/(home)/stats/overview/page.tsx b/app/(home)/stats/overview/page.tsx index 3fef2bbe1ff..fed86b78b2a 100644 --- a/app/(home)/stats/overview/page.tsx +++ b/app/(home)/stats/overview/page.tsx @@ -286,19 +286,132 @@ export default function AvalancheMetrics() { if (loading) { return (
-
-
-
-

- 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 */} + + +
+
+ +
+
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 */} +
+ + + ); + })}
-