11import { NetworkType } from '@pinax/graph-networks-registry'
2- import { useData } from 'nextra/hooks'
3- import type { ComponentPropsWithoutRef } from 'react'
42
5- import { classNames , ExperimentalLink , Tooltip } from '@edgeandnode/gds'
3+ import { ButtonOrLink , ExperimentalLink , Tooltip } from '@edgeandnode/gds'
64import {
7- Clock ,
85 Firehose ,
96 GraphExplorer ,
107 GraphNode ,
@@ -17,9 +14,9 @@ import { NetworkIcon } from '@edgeandnode/go'
1714
1815import { Card , Heading , TimeIcon } from '@/components'
1916import { useI18n } from '@/i18n'
20- import { getSupportedNetworks } from '@/supportedNetworks'
17+ import { type SupportedNetwork } from '@/supportedNetworks'
2118
22- export default function HomePage ( ) {
19+ export default function HomePage ( { supportedNetworks } : { supportedNetworks : SupportedNetwork [ ] } ) {
2320 const { t } = useI18n ( )
2421
2522 return (
@@ -141,7 +138,38 @@ export default function HomePage() {
141138 </ ExperimentalLink > ,
142139 ] ) }
143140 </ p >
144- < SupportedNetworks className = "mt-8" />
141+ < div className = "graph-docs-not-markdown mt-8 overflow-clip rounded-8 border border-space-1500" >
142+ < ul className = "grid grid-cols-auto-fill-16 gap-px text-space-500" >
143+ { supportedNetworks
144+ // TODO: Don't filter out testnets that don't have a mainnet
145+ . filter ( ( network ) => network . networkType === NetworkType . Mainnet )
146+ // Filter out networks that are either duplicates (same logo, same or similar short name) or irrelevant in this view
147+ . filter (
148+ ( network ) =>
149+ ! network . caip2Id . startsWith ( 'beacon:' ) &&
150+ ! [ 'boba-bnb' , 'eos-evm' , 'polygon-zkevm' , 'solana-accounts' ] . includes ( network . id ) ,
151+ )
152+ // Filter out networks that don't have a proper monochrome logo
153+ . filter ( ( network ) => {
154+ return network . id !== 'zora'
155+ } )
156+ . map ( ( network ) => (
157+ < li key = { network . id } className = "-mb-px -mr-px" >
158+ < Tooltip content = { network . shortName } >
159+ < ButtonOrLink
160+ href = { `/supported-networks/${ network . id } ` }
161+ className = { `
162+ flex aspect-square items-center justify-center border-b border-r border-space-1500 -outline-offset-1 transition
163+ hover:bg-space-1600
164+ ` }
165+ >
166+ < NetworkIcon network = { network } size = { 6 } />
167+ </ ButtonOrLink >
168+ </ Tooltip >
169+ </ li >
170+ ) ) }
171+ </ ul >
172+ </ div >
145173 </ section >
146174
147175 < hr />
@@ -247,35 +275,3 @@ export default function HomePage() {
247275 </ >
248276 )
249277}
250-
251- function SupportedNetworks ( { className, ...props } : ComponentPropsWithoutRef < 'div' > ) {
252- const { supportedNetworks } = useData ( ) as { supportedNetworks : Awaited < ReturnType < typeof getSupportedNetworks > > }
253-
254- return (
255- < div
256- className = { classNames ( [ 'graph-docs-not-markdown overflow-clip rounded-8 border border-space-1500' , className ] ) }
257- { ...props }
258- >
259- < ul className = "grid grid-cols-auto-fill-16 gap-px text-space-500" >
260- { supportedNetworks
261- // TODO: Don't filter out testnets that don't have a mainnet
262- . filter ( ( network ) => network . networkType === NetworkType . Mainnet )
263- // Filter out networks that are either duplicates (same logo, same or similar short name) or irrelevant in this view
264- . filter (
265- ( network ) =>
266- ! network . caip2Id . startsWith ( 'beacon:' ) &&
267- ! [ 'boba-bnb' , 'eos-evm' , 'polygon-zkevm' , 'solana-accounts' ] . includes ( network . id ) ,
268- )
269- // TODO: Fix Zora mono logo in web3icons
270- . filter ( ( network ) => network . id !== 'zora' )
271- . map ( ( network ) => (
272- < Tooltip key = { network . id } content = { network . shortName } >
273- < li className = "-mb-px -mr-px flex aspect-square items-center justify-center border-b border-r border-space-1500 transition hover:bg-space-1600" >
274- < NetworkIcon caip2Id = { network . caip2Id as any } size = { 6 } />
275- </ li >
276- </ Tooltip >
277- ) ) }
278- </ ul >
279- </ div >
280- )
281- }
0 commit comments