1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-10-22 19:26:13 +02:00
metamask-extension/ui/components/multichain/multichain-connected-site-menu/multichain-connected-site-menu.js
Garrett Bear e09028b4e5
Update multichain Icon imports (#18536)
* Update multichain Icon imports

* replace ButtonIcon with updated version

* Buttons with Icon TODO added

* update header to use TS version Icon
2023-04-13 15:24:47 -07:00

99 lines
2.7 KiB
JavaScript

import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import { useSelector } from 'react-redux';
import {
STATUS_CONNECTED_TO_ANOTHER_ACCOUNT,
STATUS_NOT_CONNECTED,
} from '../../../helpers/constants/connected-sites';
import {
BackgroundColor,
BorderColor,
BorderRadius,
IconColor,
Size,
} from '../../../helpers/constants/design-system';
import { BadgeWrapper, Icon, IconName } from '../../component-library';
import Box from '../../ui/box';
import { getSelectedIdentity } from '../../../selectors';
import Tooltip from '../../ui/tooltip';
import { useI18nContext } from '../../../hooks/useI18nContext';
export const MultichainConnectedSiteMenu = ({
className,
globalMenuColor,
status,
text,
}) => {
const t = useI18nContext();
const selectedAccount = useSelector(getSelectedIdentity);
return (
<Box
className={classNames('multichain-connected-site-menu', className)}
data-testid="connection-menu"
>
<Tooltip
title={
status === STATUS_NOT_CONNECTED
? t('statusNotConnectedAccount')
: `${selectedAccount?.name} ${text}`
}
data-testid="multichain-connected-site-menu__tooltip"
position="bottom"
>
<BadgeWrapper
positionObj={
status === STATUS_CONNECTED_TO_ANOTHER_ACCOUNT
? { bottom: 4, right: -1, zIndex: 1 }
: { bottom: 2, right: -4, zIndex: 1 }
}
badge={
<Box
backgroundColor={globalMenuColor}
className={`multichain-connected-site-menu__badge ${
status === STATUS_CONNECTED_TO_ANOTHER_ACCOUNT
? 'not-connected'
: ''
}`}
borderRadius={BorderRadius.full}
borderColor={
status === STATUS_CONNECTED_TO_ANOTHER_ACCOUNT
? BorderColor.successDefault
: BackgroundColor.backgroundDefault
}
borderWidth={
status === STATUS_CONNECTED_TO_ANOTHER_ACCOUNT ? 2 : 3
}
/>
}
>
<Icon
name={IconName.Global}
size={Size.LG}
color={IconColor.iconDefault}
/>
</BadgeWrapper>
</Tooltip>
</Box>
);
};
MultichainConnectedSiteMenu.propTypes = {
/**
* Additional classNames to be added to the MultichainConnectedSiteMenu
*/
className: PropTypes.string,
/**
* Background color based on the connection status
*/
globalMenuColor: PropTypes.string.isRequired,
/**
* Connection status string
*/
status: PropTypes.string.isRequired,
/**
* Connection status message
*/
text: PropTypes.string,
};