import { Column, RowProps } from '@past3lle/components' import { BLACK_TRANSPARENT } from '@past3lle/theme' import { truncateAddress } from '@past3lle/utils' import { usePstlConnection, usePstlWeb3Modal } from '@past3lle/web3-modal' import React, { useCallback } from 'react' import styled from 'styled-components' import { useAccount, useNetwork } from 'wagmi' import { OpenOptions } from '../../Common/Button/types' import { FlashingText } from '../../Common/FlashingText' import { MonospaceText } from '../../Common/Text' function UnstyledUserConnectionStats({ containerProps, fontSize = '1.5rem', className }: { containerProps?: RowProps fontSize?: string className?: string }) { const { address } = useAccount() const { chain } = useNetwork() const { open } = usePstlWeb3Modal() const [, { openW3Modal }] = usePstlConnection() const handleClick = useCallback( async (connectedRoute: OpenOptions['route'], disConnectedRoute: OpenOptions['route']) => { address ? openW3Modal({ route: connectedRoute }) : open({ route: disConnectedRoute }) }, [address, open, openW3Modal] ) return ( handleClick('Account', 'ConnectWallet')} > {`> `} CONNECTION{' '} {`${address ? truncateAddress(address) : ''}`} handleClick('SelectNetwork', 'SelectNetwork')} > {`> `} NETWORK{' '} {`${chain?.name || ''}`} ) } export const UserConnectionStats = styled(UnstyledUserConnectionStats)` filter: invert(1); ` export const ConnectionColorWrapper = styled.div<{ isConnected: boolean }>` > ${FlashingText}, > i, > * { color: ${({ isConnected }) => (isConnected ? '#49a749' : '#ff8282')}; } `