@@ -286,19 +286,132 @@ export default function AvalancheMetrics() {
286286 if ( loading ) {
287287 return (
288288 < div className = "min-h-screen bg-white dark:bg-neutral-950 pt-8" >
289- < div className = "container mx-auto px-6 py-10 pb-24 space-y-12" >
290- < div className = "space-y-3" >
291- < div >
292- < h1 className = "text-4xl sm:text-4xl font-semibold tracking-tight text-black dark:text-white" >
293- Avalanche L1s Index
294- </ h1 >
295- < p className = "text-base text-neutral-600 dark:text-neutral-400 max-w-2xl leading-relaxed" >
296- Loading comprehensive stats for Avalanche Mainnet L1s...
297- </ p >
289+ < main className = "container mx-auto px-6 py-10 pb-24 space-y-8" >
290+ { /* Hero Section - Loading State */ }
291+ < div className = "relative overflow-hidden rounded-2xl p-8 sm:p-12 mb-10" >
292+ { /* Multi-layer gradient background */ }
293+ < div className = "absolute inset-0 bg-black" />
294+ < div
295+ className = "absolute inset-0 opacity-60"
296+ style = { {
297+ background : 'linear-gradient(140deg, #E84142 0%, transparent 70%)'
298+ } }
299+ />
300+ < div
301+ className = "absolute inset-0 opacity-40"
302+ style = { {
303+ background : 'linear-gradient(to top left, #3752AC 0%, transparent 50%)'
304+ } }
305+ />
306+ < div
307+ className = "absolute inset-0 opacity-30"
308+ style = { {
309+ background : 'radial-gradient(circle at 50% 50%, #E84142 0%, #3752AC 30%, transparent 70%)'
310+ } }
311+ />
312+
313+ { /* Content */ }
314+ < div className = "relative z-10 space-y-8" >
315+ < div className = "flex flex-col sm:flex-row items-start sm:items-center justify-between gap-4" >
316+ < div className = "flex-1" >
317+ < h1 className = "text-3xl sm:text-4xl font-semibold text-white mb-3" >
318+ Avalanche L1s Index
319+ </ h1 >
320+ < p className = "text-white/80 text-sm sm:text-base max-w-3xl" >
321+ Loading comprehensive stats for Avalanche Mainnet L1s...
322+ </ p >
323+ </ div >
324+
325+ { /* Submit button skeleton */ }
326+ < div className = "flex-shrink-0 h-9 w-32 bg-white/20 rounded-md animate-pulse" />
327+ </ div >
328+
329+ { /* Separator */ }
330+ < div className = "border-t border-white/20" />
331+
332+ { /* Main metrics - 3 cards */ }
333+ < div className = "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4" >
334+ { [ 1 , 2 , 3 ] . map ( ( i ) => (
335+ < div key = { i } className = "backdrop-blur-md bg-white/10 border border-white/20 rounded-lg p-6 text-center animate-pulse" >
336+ < div className = "h-4 bg-white/20 rounded mb-3 w-2/3 mx-auto" />
337+ < div className = "h-10 bg-white/30 rounded w-1/2 mx-auto" />
338+ </ div >
339+ ) ) }
340+ </ div >
341+
342+ { /* Secondary metrics - 4 cards */ }
343+ < div className = "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4" >
344+ { [ 1 , 2 , 3 , 4 ] . map ( ( i ) => (
345+ < div key = { i } className = "backdrop-blur-md bg-white/10 border border-white/20 rounded-lg p-5 text-center animate-pulse" >
346+ < div className = "h-3 bg-white/20 rounded mb-3 w-3/4 mx-auto" />
347+ < div className = "h-7 bg-white/30 rounded w-1/3 mx-auto" />
348+ </ div >
349+ ) ) }
350+ </ div >
298351 </ div >
299352 </ div >
300- < ChartSkeletonLoader />
301- </ div >
353+
354+ { /* Separator */ }
355+ < div className = "border-t border-neutral-200 dark:border-neutral-800 my-8" />
356+
357+ { /* Search Bar Skeleton */ }
358+ < div className = "flex items-center gap-2" >
359+ < div className = "h-10 bg-neutral-200 dark:bg-neutral-800 rounded-full flex-1 max-w-sm animate-pulse" />
360+ < div className = "h-9 w-28 bg-neutral-200 dark:bg-neutral-800 rounded-full animate-pulse" />
361+ </ div >
362+
363+ { /* Table Skeleton */ }
364+ < Card className = "overflow-hidden border border-neutral-200 dark:border-neutral-800 py-0" >
365+ < div className = "overflow-x-auto" >
366+ < table className = "w-full border-collapse" >
367+ < thead className = "bg-[#fcfcfd] dark:bg-neutral-900" >
368+ < tr className = "border-b border-neutral-200 dark:border-neutral-800" >
369+ { [ "L1 Name" , "Addresses" , "Transactions" , "ICM" , "Validators" , "Throughput" , "Category" , "Explorer" ] . map ( ( header , i ) => (
370+ < th key = { i } className = "border-r border-neutral-200 dark:border-neutral-800 px-4 py-2 text-left" >
371+ < div className = "h-4 bg-neutral-300 dark:bg-neutral-700 rounded w-20 animate-pulse" />
372+ </ th >
373+ ) ) }
374+ </ tr >
375+ </ thead >
376+ < tbody className = "bg-white dark:bg-neutral-950" >
377+ { [ ...Array ( 10 ) ] . map ( ( _ , rowIndex ) => (
378+ < tr key = { rowIndex } className = "border-b border-slate-100 dark:border-neutral-800" >
379+ < td className = "border-r border-slate-100 dark:border-neutral-800 px-4 py-2" >
380+ < div className = "flex items-center gap-3" >
381+ < div className = "h-8 w-8 rounded-full bg-neutral-200 dark:bg-neutral-800 animate-pulse" />
382+ < div className = "h-4 bg-neutral-200 dark:bg-neutral-800 rounded w-24 animate-pulse" />
383+ </ div >
384+ </ td >
385+ < td className = "border-r border-slate-100 dark:border-neutral-800 px-4 py-2" >
386+ < div className = "h-4 bg-neutral-200 dark:bg-neutral-800 rounded w-16 animate-pulse" />
387+ </ td >
388+ < td className = "border-r border-slate-100 dark:border-neutral-800 px-4 py-2" >
389+ < div className = "h-4 bg-neutral-200 dark:bg-neutral-800 rounded w-16 animate-pulse" />
390+ </ td >
391+ < td className = "border-r border-slate-100 dark:border-neutral-800 px-4 py-2" >
392+ < div className = "h-4 bg-neutral-200 dark:bg-neutral-800 rounded w-12 animate-pulse" />
393+ </ td >
394+ < td className = "border-r border-slate-100 dark:border-neutral-800 px-4 py-2" >
395+ < div className = "h-4 bg-neutral-200 dark:bg-neutral-800 rounded w-12 animate-pulse" />
396+ </ td >
397+ < td className = "border-r border-slate-100 dark:border-neutral-800 px-4 py-2" >
398+ < div className = "h-4 bg-neutral-200 dark:bg-neutral-800 rounded w-16 animate-pulse" />
399+ </ td >
400+ < td className = "border-r border-slate-100 dark:border-neutral-800 px-4 py-2" >
401+ < div className = "h-6 bg-neutral-200 dark:bg-neutral-800 rounded-full w-20 animate-pulse" />
402+ </ td >
403+ < td className = "px-4 py-2" >
404+ < div className = "flex items-center justify-center" >
405+ < div className = "h-8 w-16 bg-neutral-200 dark:bg-neutral-800 rounded-md animate-pulse" />
406+ </ div >
407+ </ td >
408+ </ tr >
409+ ) ) }
410+ </ tbody >
411+ </ table >
412+ </ div >
413+ </ Card >
414+ </ main >
302415
303416 { /* Bubble Navigation */ }
304417 < StatsBubbleNav />
0 commit comments