11import type React from "react" ;
2+ import { useTranslation } from "react-i18next" ;
3+ import { getKlerosCurateItemUrl , type KlerosTag } from "../../../../../services/KlerosService" ;
24import type { AddressType , RPCMetadata } from "../../../../../types" ;
35import { getAddressTypeIcon , getAddressTypeLabel } from "../../../../../utils/addressTypeDetection" ;
46import { RPCIndicator } from "../../../../common/RPCIndicator" ;
@@ -13,6 +15,7 @@ interface AddressHeaderProps {
1315 onProviderSelect ?: ( provider : string ) => void ;
1416 tokenSymbol ?: string ;
1517 tokenName ?: string ;
18+ klerosTag ?: KlerosTag | null ;
1619}
1720
1821// Truncate hash to show first and last N characters
@@ -32,7 +35,9 @@ const AddressHeader: React.FC<AddressHeaderProps> = ({
3235 onProviderSelect,
3336 tokenSymbol,
3437 tokenName,
38+ klerosTag,
3539} ) => {
40+ const { t } = useTranslation ( "address" ) ;
3641 const truncatedHash = truncateHash ( addressHash , 4 ) ;
3742
3843 return (
@@ -42,6 +47,22 @@ const AddressHeader: React.FC<AddressHeaderProps> = ({
4247 < span className = "address-type-icon" > { getAddressTypeIcon ( addressType ) } </ span >
4348 < span className = "address-type-label" > { getAddressTypeLabel ( addressType ) } </ span >
4449 { tokenSymbol && < span className = "address-token-symbol" > { tokenSymbol } </ span > }
50+ { klerosTag && (
51+ < a
52+ href = { getKlerosCurateItemUrl ( klerosTag . itemID ) }
53+ target = "_blank"
54+ rel = "noopener noreferrer"
55+ className = "kleros-verified-tag"
56+ title = { t ( "klerosVerifiedTooltip" ) }
57+ >
58+ < img
59+ src = { `${ import . meta. env . BASE_URL } kleros-logo.png` }
60+ alt = "Kleros"
61+ className = "kleros-logo"
62+ />
63+ { klerosTag . publicNameTag } ↗
64+ </ a >
65+ ) }
4566 </ div >
4667 { ( ensName || tokenName ) && < span className = "address-ens-name" > { ensName || tokenName } </ span > }
4768 < span
0 commit comments