@@ -11,46 +11,126 @@ import {
1111 NetworkBerachain ,
1212 NetworkHemi ,
1313 NetworkLinea ,
14+ NetworkCelo ,
15+ NetworkMantle ,
16+ NetworkScroll ,
17+ NetworkZksync ,
18+ NetworkAurora ,
19+ NetworkSonic ,
20+ NetworkInk ,
21+ NetworkUnichain ,
1422} from '@web3icons/react' ;
1523
24+ /**
25+ * Get network icon component based on chain ID
26+ * @param chainId - The chain ID (from wagmi)
27+ * @param variant - Icon variant style
28+ * @param size - Icon size in pixels
29+ * @param color - Optional color override
30+ */
1631export function getNetworkIcon ( {
17- networkId ,
18- variant,
19- size,
32+ chainId ,
33+ variant = 'branded' ,
34+ size = 24 ,
2035 color,
2136} : {
22- networkId : string ;
23- variant : 'branded' | 'mono' | 'background' ;
24- size : number ;
37+ chainId : number | null | undefined ;
38+ variant ? : 'branded' | 'mono' | 'background' ;
39+ size ? : number ;
2540 color ?: string ;
2641} ) {
27- switch ( networkId ) {
28- case 'ethereum' :
42+ if ( ! chainId ) return null ;
43+
44+ // Map chain IDs to their respective icon components
45+ switch ( chainId ) {
46+ // Ethereum Mainnet
47+ case 1 :
2948 return < NetworkEthereum variant = { variant } size = { size } color = { color } /> ;
30- case 'polygon' :
31- return < NetworkPolygon variant = { variant } size = { size } color = { color } /> ;
32- case 'arbitrum' :
33- return < NetworkArbitrumOne variant = { variant } size = { size } color = { color } /> ;
34- case 'optimism' :
49+
50+ // Optimism
51+ case 10 :
3552 return < NetworkOptimism variant = { variant } size = { size } color = { color } /> ;
36- case 'base' :
37- return < NetworkBase variant = { variant } size = { size } color = { color } /> ;
38- case 'bsc' :
53+
54+ // BNB Smart Chain
55+ case 56 :
3956 return < NetworkBinanceSmartChain variant = { variant } size = { size } color = { color } /> ;
40- case 'avalanche' :
41- return < NetworkAvalanche variant = { variant } size = { size } color = { color } /> ;
42- case 'gnosis' :
57+
58+ // Gnosis
59+ case 100 :
4360 return < NetworkGnosis variant = { variant } size = { size } color = { color } /> ;
44- case 'hemi' :
61+
62+ // Unichain
63+ case 130 :
64+ return < NetworkUnichain variant = { variant } size = { size } color = { color } /> ;
65+
66+ // Polygon
67+ case 137 :
68+ return < NetworkPolygon variant = { variant } size = { size } color = { color } /> ;
69+
70+ // Sonic
71+ case 146 :
72+ return < NetworkSonic variant = { variant } size = { size } color = { color } /> ;
73+
74+ // zkSync Era
75+ case 324 :
76+ return < NetworkZksync variant = { variant } size = { size } color = { color } /> ;
77+
78+ // Polygon zkEVM
79+ case 1101 :
80+ return < NetworkPolygonZkevm variant = { variant } size = { size } color = { color } /> ;
81+
82+ // Mantle
83+ case 5000 :
84+ return < NetworkMantle variant = { variant } size = { size } color = { color } /> ;
85+
86+ // Base
87+ case 8453 :
88+ return < NetworkBase variant = { variant } size = { size } color = { color } /> ;
89+
90+ // Arbitrum One
91+ case 42161 :
92+ return < NetworkArbitrumOne variant = { variant } size = { size } color = { color } /> ;
93+
94+ // Celo
95+ case 42220 :
96+ return < NetworkCelo variant = { variant } size = { size } color = { color } /> ;
97+
98+ // Hemi
99+ case 43111 :
45100 return < NetworkHemi variant = { variant } size = { size } color = { color } /> ;
46- case 'linea' :
101+
102+ // Avalanche
103+ case 43114 :
104+ return < NetworkAvalanche variant = { variant } size = { size } color = { color } /> ;
105+
106+ // Ink
107+ case 57073 :
108+ return < NetworkInk variant = { variant } size = { size } color = { color } /> ;
109+
110+ // Linea
111+ case 59144 :
47112 return < NetworkLinea variant = { variant } size = { size } color = { color } /> ;
48- case 'berachain' :
113+
114+ // Berachain
115+ case 80094 :
49116 return < NetworkBerachain variant = { variant } size = { size } color = { color } /> ;
50- case 'polygon-zkevm' :
51- return < NetworkPolygonZkevm variant = { variant } size = { size } color = { color } /> ;
52- case 'BaseSepolia' :
117+
118+ // Base Sepolia (testnet)
119+ case 84532 :
53120 return < NetworkBase variant = { variant } size = { size } color = { color } /> ;
121+
122+ // Scroll
123+ case 534352 :
124+ return < NetworkScroll variant = { variant } size = { size } color = { color } /> ;
125+
126+ // Sepolia (Ethereum testnet)
127+ case 11155111 :
128+ return < NetworkEthereum variant = { variant } size = { size } color = { color } /> ;
129+
130+ // Aurora
131+ case 1313161554 :
132+ return < NetworkAurora variant = { variant } size = { size } color = { color } /> ;
133+
54134 default :
55135 return null ;
56136 }
0 commit comments