* Add useDeviceList hook Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add isCrossVerified func to matrixUtil Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add className prop in sidebar avatar comp Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add unverified session indicator in sidebar Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add info card component Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add css variables Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add cross signin status hook Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add hasCrossSigninAccountData function Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add cross signin info card in device manage component Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add cross signing and key backup component Signed-off-by: Ajay Bura <ajbura@gmail.com> * Fix typo Signed-off-by: Ajay Bura <ajbura@gmail.com> * WIP Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add cross singing dialogs Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add cross signing set/reset Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add SecretStorageAccess component Signed-off-by: Ajay Bura <ajbura@gmail.com> * Add key backup Signed-off-by: Ajay Bura <ajbura@gmail.com> * WIP * WIP * WIP * WIP * Show progress when restoring key backup * Add SSSS and key backup
60 lines
1.5 KiB
JavaScript
60 lines
1.5 KiB
JavaScript
import React from 'react';
|
|
import PropTypes from 'prop-types';
|
|
import './InfoCard.scss';
|
|
|
|
import Text from '../text/Text';
|
|
import RawIcon from '../system-icons/RawIcon';
|
|
import IconButton from '../button/IconButton';
|
|
|
|
import CrossIC from '../../../../public/res/ic/outlined/cross.svg';
|
|
|
|
function InfoCard({
|
|
className, style,
|
|
variant, iconSrc,
|
|
title, content,
|
|
rounded, requestClose,
|
|
}) {
|
|
const classes = [`info-card info-card--${variant}`];
|
|
if (rounded) classes.push('info-card--rounded');
|
|
if (className) classes.push(className);
|
|
return (
|
|
<div className={classes.join(' ')} style={style}>
|
|
{iconSrc && (
|
|
<div className="info-card__icon">
|
|
<RawIcon color={`var(--ic-${variant}-high)`} src={iconSrc} />
|
|
</div>
|
|
)}
|
|
<div className="info-card__content">
|
|
<Text>{title}</Text>
|
|
{content}
|
|
</div>
|
|
{requestClose && (
|
|
<IconButton src={CrossIC} variant={variant} onClick={requestClose} />
|
|
)}
|
|
</div>
|
|
);
|
|
}
|
|
|
|
InfoCard.defaultProps = {
|
|
className: null,
|
|
style: null,
|
|
variant: 'surface',
|
|
iconSrc: null,
|
|
content: null,
|
|
rounded: false,
|
|
requestClose: null,
|
|
};
|
|
|
|
InfoCard.propTypes = {
|
|
className: PropTypes.string,
|
|
style: PropTypes.shape({}),
|
|
variant: PropTypes.oneOf(['surface', 'primary', 'positive', 'caution', 'danger']),
|
|
iconSrc: PropTypes.string,
|
|
title: PropTypes.string.isRequired,
|
|
content: PropTypes.node,
|
|
rounded: PropTypes.bool,
|
|
requestClose: PropTypes.func,
|
|
};
|
|
|
|
export default InfoCard;
|