mirror of
https://github.com/luxfi/explore.git
synced 2026-09-24 00:28:18 +00:00
* move nav icons to separate directory * remove unnecessary "slim" suffix from some icon names * fix screenshots
56 lines
2.0 KiB
TypeScript
56 lines
2.0 KiB
TypeScript
import { Flex, Box, Text } from '@chakra-ui/react';
|
|
import { upperFirst } from 'es-toolkit';
|
|
import React from 'react';
|
|
|
|
import type { PaginationParams } from 'ui/shared/pagination/types';
|
|
|
|
import { route } from 'nextjs-routes';
|
|
|
|
import useApiQuery from 'lib/api/useApiQuery';
|
|
import getNetworkUtilizationParams from 'lib/networks/getNetworkUtilizationParams';
|
|
import { HOMEPAGE_STATS } from 'stubs/stats';
|
|
import { Link } from 'toolkit/chakra/link';
|
|
import { Skeleton } from 'toolkit/chakra/skeleton';
|
|
import { Tooltip } from 'toolkit/chakra/tooltip';
|
|
import { nbsp } from 'toolkit/utils/htmlEntities';
|
|
import IconSvg from 'ui/shared/IconSvg';
|
|
import Pagination from 'ui/shared/pagination/Pagination';
|
|
|
|
interface Props {
|
|
pagination: PaginationParams | null;
|
|
}
|
|
|
|
const BlocksTabSlot = ({ pagination }: Props) => {
|
|
const statsQuery = useApiQuery('general:stats', {
|
|
queryOptions: {
|
|
placeholderData: HOMEPAGE_STATS,
|
|
},
|
|
});
|
|
|
|
const networkUtilization = getNetworkUtilizationParams(statsQuery.data?.network_utilization_percentage ?? 0);
|
|
|
|
return (
|
|
<Flex alignItems="center" columnGap={ 8 } display={{ base: 'none', lg: 'flex' }}>
|
|
{ statsQuery.data?.network_utilization_percentage !== undefined && (
|
|
<Box>
|
|
<Text as="span" fontSize="sm">
|
|
Network utilization (last 50 blocks):{ nbsp }
|
|
</Text>
|
|
<Tooltip content={ `${ upperFirst(networkUtilization.load) } load` }>
|
|
<Skeleton display="inline-block" fontSize="sm" color={ networkUtilization.color } fontWeight={ 600 } loading={ statsQuery.isPlaceholderData }>
|
|
<span>{ statsQuery.data.network_utilization_percentage.toFixed(2) }%</span>
|
|
</Skeleton>
|
|
</Tooltip>
|
|
</Box>
|
|
) }
|
|
<Link href={ route({ pathname: '/block/countdown' }) }>
|
|
<IconSvg name="hourglass" boxSize={ 5 } mr={ 2 }/>
|
|
<span>Block countdown</span>
|
|
</Link>
|
|
{ pagination && <Pagination my={ 1 } { ...pagination }/> }
|
|
</Flex>
|
|
);
|
|
};
|
|
|
|
export default BlocksTabSlot;
|