import { css } from '@rocket.chat/css-in-js'; import { Box, Button, IconButton } from '@rocket.chat/fuselage'; import { UserAvatar } from '@rocket.chat/ui-avatar'; import { useEmbeddedLayout } from '@rocket.chat/ui-client'; import type { ReactNode, ComponentProps } from 'react'; import { useTranslation } from 'react-i18next'; import MarkdownText from '../MarkdownText'; import * as Status from '../UserStatus'; import UserCardActions from './UserCardActions'; import UserCardDialog from './UserCardDialog'; import UserCardInfo from './UserCardInfo'; import UserCardRoles from './UserCardRoles'; import UserCardUsername from './UserCardUsername'; const clampStyle = css` display: -webkit-box; overflow: hidden; -webkit-line-clamp: 3; -webkit-box-orient: vertical; word-break: break-word; `; type UserCardProps = { user?: { nickname?: string; name?: string; username?: string; etag?: string; customStatus?: ReactNode; roles?: ReactNode; bio?: ReactNode; status?: ReactNode; localTime?: ReactNode; }; actions?: ReactNode; onOpenUserInfo?: () => void; onClose?: () => void; } & ComponentProps; const UserCard = ({ user: { name, username, etag, customStatus, roles, bio, status = , localTime, nickname } = {}, actions, onOpenUserInfo, onClose, ...props }: UserCardProps) => { const { t } = useTranslation(); const isLayoutEmbedded = useEmbeddedLayout(); return (
{username && } {actions}
{nickname && ( ({nickname}) )} {customStatus && ( {typeof customStatus === 'string' ? ( ) : ( customStatus )} )} {roles} {localTime} {bio && ( {typeof bio === 'string' ? : bio} )} {onOpenUserInfo && !isLayoutEmbedded && (
)}
{onClose && }
); }; export default UserCard;