import { Image, Button, PopoverTrigger, PopoverBody, PopoverContent, Show, Hide, useColorModeValue, chakra, useDisclosure, Grid, } from '@chakra-ui/react'; import React from 'react'; import type { NetworkExplorer as TNetworkExplorer } from 'types/networks'; import config from 'configs/app'; import stripTrailingSlash from 'lib/stripTrailingSlash'; import Popover from 'ui/shared/chakra/Popover'; import IconSvg from 'ui/shared/IconSvg'; import LinkExternal from 'ui/shared/links/LinkExternal'; import PopoverTriggerTooltip from 'ui/shared/PopoverTriggerTooltip'; interface Props { className?: string; type: keyof TNetworkExplorer['paths']; pathParam: string; } const NetworkExplorers = ({ className, type, pathParam }: Props) => { const { isOpen, onToggle, onClose } = useDisclosure(); const defaultIconColor = useColorModeValue('gray.400', 'gray.500'); const explorersLinks = React.useMemo(() => { return config.UI.explorers.items .filter((explorer) => typeof explorer.paths[type] === 'string') .map((explorer) => { const url = new URL(stripTrailingSlash(explorer.paths[type] || '') + '/' + pathParam, explorer.baseUrl); return ( { explorer.logo ? { : } { explorer.title } ); }); }, [ pathParam, type, defaultIconColor ]); if (explorersLinks.length === 0) { return null; } return ( Verify with other explorers 1 ? 'auto auto' : '1fr' } columnGap={ 4 } rowGap={ 2 } mt={ 3 } > { explorersLinks } ); }; export default React.memo(chakra(NetworkExplorers));