import React from 'react'; import PropTypes from 'prop-types'; import './Avatar.scss'; import { twemojify } from '../../../util/twemojify'; import Text from '../text/Text'; import RawIcon from '../system-icons/RawIcon'; import ImageBrokenSVG from '../../../../public/res/svg/image-broken.svg'; import { avatarInitials } from '../../../util/common'; const Avatar = React.forwardRef(({ text, bgColor, iconSrc, iconColor, imageSrc, size, }, ref) => { let textSize = 's1'; if (size === 'large') textSize = 'h1'; if (size === 'small') textSize = 'b1'; if (size === 'extra-small') textSize = 'b3'; return (
{ imageSrc !== null ? ( { e.target.style.backgroundColor = 'transparent'; }} onError={(e) => { e.target.src = ImageBrokenSVG; }} alt="" /> ) : ( { iconSrc !== null ? : text !== null && ( {twemojify(avatarInitials(text))} ) } ) }
); }); Avatar.defaultProps = { text: null, bgColor: 'transparent', iconSrc: null, iconColor: null, imageSrc: null, size: 'normal', }; Avatar.propTypes = { text: PropTypes.string, bgColor: PropTypes.string, iconSrc: PropTypes.string, iconColor: PropTypes.string, imageSrc: PropTypes.string, size: PropTypes.oneOf(['large', 'normal', 'small', 'extra-small']), }; export default Avatar;