import React from 'react'; import PropTypes from 'prop-types'; import Button from '../../../components/ui/button'; import CustodyLabels from '../../../components/institutional/custody-labels'; import { SWAPS_CHAINID_DEFAULT_BLOCK_EXPLORER_URL_MAP } from '../../../../shared/constants/swaps'; import { CHAIN_IDS } from '../../../../shared/constants/network'; import { shortenAddress } from '../../../helpers/utils/util'; import Tooltip from '../../../components/ui/tooltip'; import { TextVariant, JustifyContent, BLOCK_SIZES, DISPLAY, IconColor, } from '../../../helpers/constants/design-system'; import { useI18nContext } from '../../../hooks/useI18nContext'; import Box from '../../../components/ui/box'; import { Text, Label, Icon, IconName, IconSize, ButtonLink, } from '../../../components/component-library'; import { useCopyToClipboard } from '../../../hooks/useCopyToClipboard'; const getButtonLinkHref = (account) => { const url = SWAPS_CHAINID_DEFAULT_BLOCK_EXPLORER_URL_MAP[CHAIN_IDS.MAINNET]; return `${url}address/${account.address}`; }; export default function CustodyAccountList({ rawList, accounts, onAccountChange, selectedAccounts = {}, onCancel, onAddAccounts, custody, }) { const t = useI18nContext(); const [copied, handleCopy] = useCopyToClipboard(); const tooltipText = copied ? t('copiedExclamation') : t('copyToClipboard'); const disabled = Object.keys(selectedAccounts).length === 0; return ( <> {accounts.map((account, idx) => ( {!rawList && ( onAccountChange({ name: account.name, address: e.target.value, custodianDetails: account.custodianDetails, labels: account.labels, chainId: account.chainId, }) } checked={ selectedAccounts && selectedAccounts[account.address] } /> )} {account.labels && ( )} ))} {!rawList && ( )} ); } CustodyAccountList.propTypes = { custody: PropTypes.string, accounts: PropTypes.array.isRequired, onAccountChange: PropTypes.func, selectedAccounts: PropTypes.object, onAddAccounts: PropTypes.func, onCancel: PropTypes.func, rawList: PropTypes.bool, };