* use flexbox for wallet card header * make wallet logo consistent * remove extra div * Update styles/wallet.module.css Co-authored-by: ekzyis <ek@stacker.news> * Update styles/wallet.module.css Co-authored-by: ekzyis <ek@stacker.news> * resize wallet banner * remove unused justify-content * remove cardMeta --------- Co-authored-by: ekzyis <ek@stacker.news> Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com> Co-authored-by: k00b <k00b@stacker.news>
		
			
				
	
	
		
			57 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { Card } from 'react-bootstrap'
 | |
| import styles from '@/styles/wallet.module.css'
 | |
| import Plug from '@/svgs/plug.svg'
 | |
| import Gear from '@/svgs/settings-5-fill.svg'
 | |
| import Link from 'next/link'
 | |
| import { Status, isConfigured } from '@/wallets/common'
 | |
| import DraggableIcon from '@/svgs/draggable.svg'
 | |
| import RecvIcon from '@/svgs/arrow-left-down-line.svg'
 | |
| import SendIcon from '@/svgs/arrow-right-up-line.svg'
 | |
| import { useWalletImage } from '@/components/wallet-image'
 | |
| import { useWalletStatus, statusToClass } from '@/components/wallet-status'
 | |
| import { useWalletSupport } from '@/components/wallet-support'
 | |
| 
 | |
| export default function WalletCard ({ wallet, draggable, onDragStart, onDragEnter, onDragEnd, onTouchStart, sourceIndex, targetIndex, index }) {
 | |
|   const image = useWalletImage(wallet)
 | |
|   const status = useWalletStatus(wallet)
 | |
|   const support = useWalletSupport(wallet)
 | |
| 
 | |
|   return (
 | |
|     <Card
 | |
|       className={styles.card}
 | |
|       // we attach the drag listeners to the whole card to have a proper drag image
 | |
|       draggable={draggable}
 | |
|       onDragStart={onDragStart}
 | |
|       onDragEnter={onDragEnter}
 | |
|       onDragEnd={onDragEnd}
 | |
|     >
 | |
|       <div className={styles.indicators}>
 | |
|         {status.any !== Status.Disabled && <DraggableIcon className={styles.drag} width={16} height={16} />}
 | |
|         {support.recv && <RecvIcon className={`${styles.indicator} ${statusToClass(status.recv)}`} />}
 | |
|         {support.send && <SendIcon className={`${styles.indicator} ${statusToClass(status.send)}`} />}
 | |
|       </div>
 | |
|       <Card.Body
 | |
|         // we attach touch listener only to card body to not interfere with wallet link
 | |
|         onTouchStart={onTouchStart}
 | |
|         className={draggable
 | |
|           ? (`${sourceIndex === index ? styles.drag : ''} ${draggable && targetIndex === index ? styles.drop : ''}`)
 | |
|           : ''}
 | |
|         style={{ cursor: draggable ? 'move' : 'default' }}
 | |
|       >
 | |
|         <div className='d-flex text-center align-items-center h-100'>
 | |
|           {image
 | |
|             ? <img className={styles.walletLogo} {...image} />
 | |
|             : <Card.Title className={styles.walletLogo}>{wallet.def.card.title}</Card.Title>}
 | |
|         </div>
 | |
|       </Card.Body>
 | |
|       <Link href={`/settings/wallets/${wallet.def.name}`}>
 | |
|         <Card.Footer className={styles.attach}>
 | |
|           {isConfigured(wallet)
 | |
|             ? <>configure<Gear width={14} height={14} /></>
 | |
|             : <>attach<Plug width={14} height={14} /></>}
 | |
|         </Card.Footer>
 | |
|       </Link>
 | |
|     </Card>
 | |
|   )
 | |
| }
 |