@@ -17,9 +17,10 @@ import {
1717} from "lucide-react" ;
1818import { StatsBubbleNav } from "@/components/stats/stats-bubble.config" ;
1919import l1ChainsData from "@/constants/l1-chains.json" ;
20- import { TimeSeriesMetric , ICMMetric , TimeRange } from "@/types/stats" ;
20+ import { TimeSeriesMetric , ICMMetric , TimeRange , L1Chain } from "@/types/stats" ;
2121import { AvalancheLogo } from "@/components/navigation/avalanche-logo" ;
2222import { ChartSkeletonLoader } from "@/components/ui/chart-skeleton" ;
23+ import { ExplorerDropdown } from "@/components/stats/ExplorerDropdown" ;
2324
2425interface ChainOverviewMetrics {
2526 chainId : string ;
@@ -527,7 +528,7 @@ export default function AvalancheMetrics() {
527528 < table className = "w-full border-collapse" >
528529 < thead className = "bg-[#fcfcfd] dark:bg-neutral-900" >
529530 < tr className = "border-b border-neutral-200 dark:border-neutral-800" >
530- < th className = "border-r border-neutral-200 dark:border-neutral-800 px-6 py-4 text-left" >
531+ < th className = "border-r border-neutral-200 dark:border-neutral-800 px-4 py-2 text-left" >
531532 < div className = "flex items-center gap-2" >
532533 < SortButton field = "chainName" >
533534 < span className = "text-sm font-semibold uppercase tracking-wide text-neutral-700 dark:text-neutral-300" >
@@ -536,7 +537,7 @@ export default function AvalancheMetrics() {
536537 </ SortButton >
537538 </ div >
538539 </ th >
539- < th className = "border-r border-neutral-200 dark:border-neutral-800 px-6 py-4 text-left" >
540+ < th className = "border-r border-neutral-200 dark:border-neutral-800 px-4 py-2 text-left" >
540541 < div className = "flex items-center gap-2" >
541542 < SortButton field = "weeklyActiveAddresses" >
542543 < span className = "hidden lg:flex items-center gap-2 text-sm font-semibold uppercase tracking-wide text-neutral-700 dark:text-neutral-300" >
@@ -548,7 +549,7 @@ export default function AvalancheMetrics() {
548549 </ SortButton >
549550 </ div >
550551 </ th >
551- < th className = "border-r border-neutral-200 dark:border-neutral-800 px-6 py-4 text-left" >
552+ < th className = "border-r border-neutral-200 dark:border-neutral-800 px-4 py-2 text-left" >
552553 < div className = "flex items-center gap-2" >
553554 < SortButton field = "weeklyTxCount" >
554555 < span className = "hidden lg:flex items-center gap-2 text-sm font-semibold uppercase tracking-wide text-neutral-700 dark:text-neutral-300" >
@@ -560,7 +561,7 @@ export default function AvalancheMetrics() {
560561 </ SortButton >
561562 </ div >
562563 </ th >
563- < th className = "border-r border-neutral-200 dark:border-neutral-800 px-6 py-4 text-left" >
564+ < th className = "border-r border-neutral-200 dark:border-neutral-800 px-4 py-2 text-left" >
564565 < div className = "flex items-center gap-2" >
565566 < SortButton field = "totalIcmMessages" >
566567 < span className = "hidden lg:flex items-center gap-2 text-sm font-semibold uppercase tracking-wide text-neutral-700 dark:text-neutral-300" >
@@ -572,7 +573,7 @@ export default function AvalancheMetrics() {
572573 </ SortButton >
573574 </ div >
574575 </ th >
575- < th className = "border-r border-neutral-200 dark:border-neutral-800 px-6 py-4 text-left" >
576+ < th className = "border-r border-neutral-200 dark:border-neutral-800 px-4 py-2 text-left" >
576577 < div className = "flex items-center gap-2" >
577578 < SortButton field = "validatorCount" >
578579 < span className = "hidden lg:flex items-center gap-2 text-sm font-semibold uppercase tracking-wide text-neutral-700 dark:text-neutral-300" >
@@ -581,7 +582,7 @@ export default function AvalancheMetrics() {
581582 </ SortButton >
582583 </ div >
583584 </ th >
584- < th className = "border-r border-neutral-200 dark:border-neutral-800 px-6 py-4 text-left" >
585+ < th className = "border-r border-neutral-200 dark:border-neutral-800 px-4 py-2 text-left" >
585586 < div className = "flex items-center gap-2" >
586587 < SortButton field = "throughput" >
587588 < span className = "text-sm font-semibold uppercase tracking-wide text-neutral-700 dark:text-neutral-300" >
@@ -590,7 +591,7 @@ export default function AvalancheMetrics() {
590591 </ SortButton >
591592 </ div >
592593 </ th >
593- < th className = "px-6 py-4 text-left" >
594+ < th className = "border-r border-neutral-200 dark:border-neutral-800 px-4 py-2 text-left" >
594595 < div className = "flex items-center gap-2" >
595596 < SortButton field = "category" >
596597 < span className = "text-sm font-semibold uppercase tracking-wide text-neutral-700 dark:text-neutral-300" >
@@ -599,6 +600,13 @@ export default function AvalancheMetrics() {
599600 </ SortButton >
600601 </ div >
601602 </ th >
603+ < th className = "px-4 py-2 text-center" >
604+ < div className = "flex items-center justify-center gap-2" >
605+ < span className = "text-sm font-semibold uppercase tracking-wide text-neutral-700 dark:text-neutral-300 whitespace-nowrap" >
606+ Block Explorer
607+ </ span >
608+ </ div >
609+ </ th >
602610 </ tr >
603611 </ thead >
604612 < tbody className = "bg-white dark:bg-neutral-950" >
@@ -619,7 +627,7 @@ export default function AvalancheMetrics() {
619627 }
620628 } }
621629 >
622- < td className = "border-r border-slate-100 dark:border-neutral-800 px-6 py-4 " >
630+ < td className = "border-r border-slate-100 dark:border-neutral-800 px-4 py-2 " >
623631 < div className = "flex items-center gap-3 group" >
624632 < div className = "relative" >
625633 { chain . chainLogoURI ? (
@@ -654,7 +662,7 @@ export default function AvalancheMetrics() {
654662 ) }
655663 </ div >
656664 </ td >
657- < td className = "border-r border-slate-100 dark:border-neutral-800 px-6 py-4 " >
665+ < td className = "border-r border-slate-100 dark:border-neutral-800 px-4 py-2 " >
658666 < span className = "text-sm font-medium text-neutral-900 dark:text-neutral-100" >
659667 { typeof chain . activeAddresses . current_value ===
660668 "number"
@@ -664,7 +672,7 @@ export default function AvalancheMetrics() {
664672 : chain . activeAddresses . current_value }
665673 </ span >
666674 </ td >
667- < td className = "border-r border-slate-100 dark:border-neutral-800 px-6 py-4 " >
675+ < td className = "border-r border-slate-100 dark:border-neutral-800 px-4 py-2 " >
668676 < span className = "text-sm font-medium text-neutral-900 dark:text-neutral-100" >
669677 { typeof chain . txCount . current_value === "number"
670678 ? formatFullNumber (
@@ -673,7 +681,7 @@ export default function AvalancheMetrics() {
673681 : chain . txCount . current_value }
674682 </ span >
675683 </ td >
676- < td className = "border-r border-slate-100 dark:border-neutral-800 px-6 py-4 " >
684+ < td className = "border-r border-slate-100 dark:border-neutral-800 px-4 py-2 " >
677685 < span className = "text-sm font-medium text-neutral-900 dark:text-neutral-100" >
678686 { typeof chain . icmMessages . current_value === "number"
679687 ? formatFullNumber (
@@ -684,19 +692,19 @@ export default function AvalancheMetrics() {
684692 : chain . icmMessages . current_value }
685693 </ span >
686694 </ td >
687- < td className = "border-r border-slate-100 dark:border-neutral-800 px-6 py-4 " >
695+ < td className = "border-r border-slate-100 dark:border-neutral-800 px-4 py-2 " >
688696 < span className = "text-sm font-medium text-neutral-900 dark:text-neutral-100" >
689697 { typeof chain . validatorCount === "number"
690698 ? formatFullNumber ( chain . validatorCount )
691699 : chain . validatorCount }
692700 </ span >
693701 </ td >
694- < td className = "border-r border-slate-100 dark:border-neutral-800 px-6 py-4 " >
702+ < td className = "border-r border-slate-100 dark:border-neutral-800 px-4 py-2 " >
695703 < span className = "text-sm font-medium text-neutral-900 dark:text-neutral-100" >
696704 { getChainTPS ( chain ) } TPS
697705 </ span >
698706 </ td >
699- < td className = "px-6 py-4 " >
707+ < td className = "border-r border-slate-100 dark:border-neutral-800 px-4 py-2 " >
700708 < span
701709 className = { `inline-flex items-center px-3 py-1 rounded-full text-xs font-medium ${ getCategoryColor (
702710 getChainCategory ( chain . chainId , chain . chainName )
@@ -705,6 +713,21 @@ export default function AvalancheMetrics() {
705713 { getChainCategory ( chain . chainId , chain . chainName ) }
706714 </ span >
707715 </ td >
716+ < td className = "px-4 py-2" >
717+ < div className = "flex items-center justify-center" >
718+ < ExplorerDropdown
719+ explorers = {
720+ ( l1ChainsData . find (
721+ ( c ) => c . chainId === chain . chainId
722+ ) as L1Chain ) ?. explorers
723+ }
724+ size = "sm"
725+ variant = "outline"
726+ showIcon = { true }
727+ buttonText = "Open"
728+ />
729+ </ div >
730+ </ td >
708731 </ tr >
709732 ) ;
710733 } ) }
0 commit comments