40 lines
835 B
TypeScript
40 lines
835 B
TypeScript
|
import React from 'react';
|
||
|
import { Typography } from 'antd';
|
||
|
import { shortenAddress } from '../../utils/utils';
|
||
|
|
||
|
export const EtherscanLink = (props: {
|
||
|
address: string ;
|
||
|
type: string;
|
||
|
code?: boolean;
|
||
|
style?: React.CSSProperties;
|
||
|
length?: number;
|
||
|
}) => {
|
||
|
const { type, code } = props;
|
||
|
|
||
|
const address = props.address;
|
||
|
|
||
|
if (!address) {
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
const length = props.length ?? 9;
|
||
|
|
||
|
return (
|
||
|
<a
|
||
|
href={`https://etherscan.io/${type}/${address}`}
|
||
|
// eslint-disable-next-line react/jsx-no-target-blank
|
||
|
target="_blank"
|
||
|
title={address}
|
||
|
style={props.style}
|
||
|
>
|
||
|
{code ? (
|
||
|
<Typography.Text style={props.style} code>
|
||
|
{shortenAddress(address, length)}
|
||
|
</Typography.Text>
|
||
|
) : (
|
||
|
shortenAddress(address, length)
|
||
|
)}
|
||
|
</a>
|
||
|
);
|
||
|
};
|