diff --git a/packages/dashboard/src/pages/Wallets/components/FungibleTokenTableRow/index.tsx b/packages/dashboard/src/pages/Wallets/components/FungibleTokenTableRow/index.tsx index 4d3a0e074628..d12d21c19e26 100644 --- a/packages/dashboard/src/pages/Wallets/components/FungibleTokenTableRow/index.tsx +++ b/packages/dashboard/src/pages/Wallets/components/FungibleTokenTableRow/index.tsx @@ -48,10 +48,12 @@ const useStyles = makeStyles()((theme) => ({ }, chainIcon: { position: 'absolute', - right: -8, + right: -9, bottom: 0, - height: 16, - width: 16, + height: 18, + width: 18, + border: `1px solid ${theme.palette.background.default}`, + borderRadius: '50%', }, tip: { padding: theme.spacing(1), diff --git a/packages/mask/src/components/InjectedComponents/PageTabItem.tsx b/packages/mask/src/components/InjectedComponents/PageTabItem.tsx index 804ce01233b3..40222da8338f 100644 --- a/packages/mask/src/components/InjectedComponents/PageTabItem.tsx +++ b/packages/mask/src/components/InjectedComponents/PageTabItem.tsx @@ -3,18 +3,33 @@ import { makeStyles } from '@masknet/theme' import { Button } from '@mui/material' import type { Plugin } from '@masknet/plugin-infra' +const borderShadows = { + dark: '0px 0px 16px 0px #FFFFFF33', + light: '0px 0px 16px 0px #65778633', + dim: '0px 0px 16px 0px #8899A633', +} const useStyles = makeStyles()((theme) => ({ hidden: { display: 'none', }, button: { - border: `1px solid ${theme.palette.text.primary} !important`, + border: `1px solid ${theme.palette.divider} !important`, color: `${theme.palette.text.primary} !important`, borderRadius: 9999, + '&:hover': { + boxShadow: borderShadows?.[theme.palette.mode], + border: `1px solid ${theme.palette.primary.main} !important`, + color: `${theme.palette.primary.main} !important`, + backgroundColor: 'transparent', + }, }, selected: { border: `1px solid ${theme.palette.primary.main} !important`, color: `${theme.palette.primary.main} !important`, + '&:hover': { + boxShadow: borderShadows?.[theme.palette.mode], + backgroundColor: 'transparent', + }, }, })) diff --git a/packages/mask/src/components/InjectedComponents/ToolboxUnstyled.tsx b/packages/mask/src/components/InjectedComponents/ToolboxUnstyled.tsx index 44429dc29879..ad85644bf5a5 100644 --- a/packages/mask/src/components/InjectedComponents/ToolboxUnstyled.tsx +++ b/packages/mask/src/components/InjectedComponents/ToolboxUnstyled.tsx @@ -124,6 +124,7 @@ export function ToolboxHintUnstyled(props: ToolboxHintProps) { badgeSize={badgeSize} networkIcon={providerDescriptor?.icon} // switch the icon to meet design providerIcon={networkDescriptor?.icon} + isBorderColorNotDefault /> ) : ( diff --git a/packages/mask/src/plugins/EVM/assets/arbitrum.png b/packages/mask/src/plugins/EVM/assets/arbitrum.png index 807549198b99..c67eaf363914 100644 Binary files a/packages/mask/src/plugins/EVM/assets/arbitrum.png and b/packages/mask/src/plugins/EVM/assets/arbitrum.png differ diff --git a/packages/mask/src/plugins/EVM/assets/celo.png b/packages/mask/src/plugins/EVM/assets/celo.png index b7e2f9108e1e..44bf1e0b7ac9 100644 Binary files a/packages/mask/src/plugins/EVM/assets/celo.png and b/packages/mask/src/plugins/EVM/assets/celo.png differ diff --git a/packages/shared/src/UI/components/TokenIcon/constants.ts b/packages/shared/src/UI/components/TokenIcon/constants.ts new file mode 100644 index 000000000000..19323a207108 --- /dev/null +++ b/packages/shared/src/UI/components/TokenIcon/constants.ts @@ -0,0 +1,3 @@ +const NO_IMAGE_COLOR = ['#ea7262', '#f3c76b', '#62c1ea', '#627eea', '#a662ea'] + +export default NO_IMAGE_COLOR diff --git a/packages/shared/src/UI/components/TokenIcon/index.tsx b/packages/shared/src/UI/components/TokenIcon/index.tsx index 35586d5f78b1..4382f72635de 100644 --- a/packages/shared/src/UI/components/TokenIcon/index.tsx +++ b/packages/shared/src/UI/components/TokenIcon/index.tsx @@ -13,6 +13,7 @@ import { Avatar, AvatarProps } from '@mui/material' import { makeStyles, useStylesExtends } from '@masknet/theme' import { useImageFailOver } from '../../hooks' import SPECIAL_ICON_LIST from './TokenIconSpecialIconList.json' +import NO_IMAGE_COLOR from './constants' function getFallbackIcons(address: string, baseURIs: string[]) { const checkSummedAddress = formatEthereumAddress(address) @@ -80,10 +81,20 @@ export interface TokenIconUIProps extends withClasses<'icon'> { export const TokenIconUI = memo((props) => { const { logoURL, AvatarProps, name } = props + + // add background color to no-img token icon + const defaultBackgroundColorNumber = name?.split('')?.reduce((total, cur) => total + Number(cur?.charCodeAt(0)), 0) + const defaultBackgroundColor = defaultBackgroundColorNumber + ? NO_IMAGE_COLOR?.[defaultBackgroundColorNumber % 5] + : undefined const classes = useStylesExtends(useStyles(), props) return ( - + {name?.substr(0, 1).toUpperCase()} ) diff --git a/packages/shared/src/UI/components/WalletIcon/index.tsx b/packages/shared/src/UI/components/WalletIcon/index.tsx index 360772fe1f28..44d3c006855e 100644 --- a/packages/shared/src/UI/components/WalletIcon/index.tsx +++ b/packages/shared/src/UI/components/WalletIcon/index.tsx @@ -4,6 +4,7 @@ import { ImageIcon } from '../ImageIcon' interface StyleProps { size: number + isBorderColorNotDefault?: boolean } const useStyles = makeStyles()((theme, props) => ({ @@ -24,7 +25,12 @@ const useStyles = makeStyles()((theme, props) => ({ bottom: -2, }, networkIcon: {}, - providerIcon: {}, + providerIcon: { + border: props?.isBorderColorNotDefault + ? `1px solid ${theme.palette.background.paper}` + : `1px solid ${theme.palette.background.default}`, + borderRadius: '50%', + }, })) interface WalletIconProps extends withClasses<'networkIcon' | 'providerIcon'> { @@ -33,11 +39,18 @@ interface WalletIconProps extends withClasses<'networkIcon' | 'providerIcon'> { inverse?: boolean networkIcon?: URL providerIcon?: URL + isBorderColorNotDefault?: boolean } export const WalletIcon = (props: WalletIconProps) => { const { size = 24, badgeSize = 14, inverse = false, networkIcon, providerIcon } = props - const classes = useStylesExtends(useStyles({ size: badgeSize > size ? badgeSize : size }), props) + const classes = useStylesExtends( + useStyles({ + size: badgeSize > size ? badgeSize : size, + isBorderColorNotDefault: props.isBorderColorNotDefault, + }), + props, + ) // #region icon names const names = [