|
1 | 1 | import { useState } from 'react'; |
2 | 2 | import { AnalysisResult, TraceNode } from '../types'; |
3 | 3 | import { formatDistanceToNow } from 'date-fns'; |
4 | | -import { ChevronDown, ChevronRight, ExternalLink, TrendingDown, TrendingUp, Users, Target, Map } from 'lucide-react'; |
| 4 | +import { ChevronDown, ChevronRight, ExternalLink, TrendingDown, TrendingUp, Map } from 'lucide-react'; |
5 | 5 | import TraceBubbleMap from './TraceBubbleMap'; |
6 | 6 |
|
7 | 7 | interface Props { |
@@ -93,41 +93,6 @@ export default function ResultsView({ result, network = 'base-mainnet' }: Props) |
93 | 93 |
|
94 | 94 | return ( |
95 | 95 | <div className="space-y-6"> |
96 | | - {/* Statistics */} |
97 | | - <div className="grid grid-cols-2 md:grid-cols-4 gap-4"> |
98 | | - <div className="bg-slate-800/50 backdrop-blur-sm rounded-lg p-4 border border-slate-700"> |
99 | | - <div className="flex items-center gap-2 mb-2"> |
100 | | - <TrendingUp className="text-green-400" size={20} /> |
101 | | - <span className="text-slate-400 text-sm">Total Buys</span> |
102 | | - </div> |
103 | | - <p className="text-2xl font-bold text-white">{result.statistics.totalBuys}</p> |
104 | | - </div> |
105 | | - |
106 | | - <div className="bg-slate-800/50 backdrop-blur-sm rounded-lg p-4 border border-slate-700"> |
107 | | - <div className="flex items-center gap-2 mb-2"> |
108 | | - <TrendingDown className="text-red-400" size={20} /> |
109 | | - <span className="text-slate-400 text-sm">Total Sells</span> |
110 | | - </div> |
111 | | - <p className="text-2xl font-bold text-white">{result.statistics.totalSells}</p> |
112 | | - </div> |
113 | | - |
114 | | - <div className="bg-slate-800/50 backdrop-blur-sm rounded-lg p-4 border border-slate-700"> |
115 | | - <div className="flex items-center gap-2 mb-2"> |
116 | | - <Users className="text-blue-400" size={20} /> |
117 | | - <span className="text-slate-400 text-sm">Unique Wallets</span> |
118 | | - </div> |
119 | | - <p className="text-2xl font-bold text-white">{result.statistics.uniqueWallets}</p> |
120 | | - </div> |
121 | | - |
122 | | - <div className="bg-slate-800/50 backdrop-blur-sm rounded-lg p-4 border border-slate-700"> |
123 | | - <div className="flex items-center gap-2 mb-2"> |
124 | | - <Target className="text-purple-400" size={20} /> |
125 | | - <span className="text-slate-400 text-sm">Traced to Origin</span> |
126 | | - </div> |
127 | | - <p className="text-2xl font-bold text-white">{result.statistics.tracedToOrigin}</p> |
128 | | - </div> |
129 | | - </div> |
130 | | - |
131 | 96 | {/* Transactions List */} |
132 | 97 | <div className="bg-slate-800/50 backdrop-blur-sm rounded-lg border border-slate-700"> |
133 | 98 | <div className="p-4 border-b border-slate-700"> |
@@ -219,9 +184,9 @@ export default function ResultsView({ result, network = 'base-mainnet' }: Props) |
219 | 184 | ) : ( |
220 | 185 | <div className="space-y-4"> |
221 | 186 | {result.traces.map((trace, index) => ( |
222 | | - <div key={index}> |
| 187 | + <div key={`${trace.transaction}-${index}`}> |
223 | 188 | <h4 className="text-white font-medium mb-2">Trace #{index + 1} - {formatAddress(trace.address, trace.label)}</h4> |
224 | | - <TraceBubbleMap trace={trace} network={network} /> |
| 189 | + <TraceBubbleMap key={`map-${trace.transaction}-${index}`} trace={trace} network={network} /> |
225 | 190 | </div> |
226 | 191 | ))} |
227 | 192 | </div> |
|
0 commit comments