avatar.tsx (1330B)
1 import { FC, memo } from "react"; 2 import { OnlineState } from "../../app/sdk/api/otherEnums"; 3 import './avatar.scss'; 4 5 type AvatarProps = { 6 /** 7 * The URL of the Avatar image 8 */ 9 avatarUrl?: string 10 /** 11 * The displayname of the avatar user 12 */ 13 displayname: string 14 /** 15 * Wether it is a DM or not 16 */ 17 dm: boolean 18 /** 19 * Wether the user is online. Only used if dm is true. 20 */ 21 online: OnlineState 22 /** 23 * Wether the user is a bot 24 * @default false 25 */ 26 isBot: boolean 27 size?: string 28 }; 29 30 const Avatar: FC<AvatarProps> = memo(({ avatarUrl, displayname, dm = false, online = OnlineState.Unknown, size = "2rem" }: AvatarProps) => { 31 32 return ( 33 <div style={{ minWidth: size, minHeight: size, width: size, height: size }} className="avatar"> 34 <img alt={displayname} src={avatarUrl} /> 35 { 36 dm ? 37 ( 38 online === OnlineState.Online ? 39 <div className="online"></div> : 40 (online === OnlineState.Offline ? <div className="offline"></div> : 41 <div className="unknown"></div>) 42 ) : 43 <></> 44 } 45 </div> 46 ); 47 }) 48 49 export default Avatar;