import { MenuItem, MenuItemProps } from '@biom3/react'; import { cloneElement, ReactElement, ReactNode, useState, } from 'react'; import { useTranslation } from 'react-i18next'; import { EIP6963ProviderInfo } from '@imtbl/checkout-sdk'; import { RawImage } from '../RawImage/RawImage'; export interface WalletItemProps { loading?: boolean; recommended?: boolean; testId: string; providerInfo: EIP6963ProviderInfo; onWalletItemClick: () => void; rc?: RC; size?: MenuItemProps['size']; badge?: ReactNode; disabled?: boolean; } export function WalletItem< RC extends ReactElement | undefined = undefined, >({ rc = , testId, loading = false, recommended = false, providerInfo, onWalletItemClick, size = 'medium', badge, disabled, }: WalletItemProps) { const { t } = useTranslation(); const [busy, setBusy] = useState(false); return ( { if (loading) return; setBusy(true); // let the parent handle errors try { await onWalletItemClick(); } finally { setBusy(false); } }, })} testId={`${testId}-wallet-list-${providerInfo.rdns}`} size={size} emphasized sx={{ position: 'relative' }} > {providerInfo.name} {((recommended || busy) && ( ))} {!busy && badge} ); }