UNPKG

@gravity-ui/uikit

Version:

Gravity UI base styling and components

32 lines (31 loc) 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.User = void 0; const tslib_1 = require("tslib"); const jsx_runtime_1 = require("react/jsx-runtime"); const React = tslib_1.__importStar(require("react")); const Avatar_1 = require("../Avatar/index.js"); const cn_1 = require("../utils/cn.js"); const filterDOMProps_1 = require("../utils/filterDOMProps.js"); const constants_1 = require("./constants.js"); require("./User.css"); const b = (0, cn_1.block)('user'); exports.User = React.forwardRef((props, ref) => { const { avatar, name, description, size = constants_1.DEFAULT_USER_SIZE, className, style, qa } = props; const nameTitle = typeof name === 'string' ? name : undefined; const descriptionTitle = typeof description === 'string' ? description : undefined; let avatarView = null; if (typeof avatar === 'string') { avatarView = (0, jsx_runtime_1.jsx)(Avatar_1.Avatar, { imgUrl: avatar, size: size, title: nameTitle }); } else if (React.isValidElement(avatar)) { avatarView = avatar; } else if (avatar) { avatarView = (0, jsx_runtime_1.jsx)(Avatar_1.Avatar, { ...avatar, size: size, title: avatar.title || nameTitle }); } const showDescription = Boolean(description && !constants_1.COMPACT_SIZES.has(size)); return ((0, jsx_runtime_1.jsxs)("div", { className: b({ size }, className), style: style, "data-qa": qa, ref: ref, ...(0, filterDOMProps_1.filterDOMProps)(props, { labelable: true }), children: [avatarView ? (0, jsx_runtime_1.jsx)("div", { className: b('avatar'), children: avatarView }) : null, name || showDescription ? ((0, jsx_runtime_1.jsxs)("div", { className: b('info'), children: [name ? ((0, jsx_runtime_1.jsx)("span", { className: b('name'), title: nameTitle, "data-qa": constants_1.UserQa.NAME, children: name })) : null, showDescription ? ((0, jsx_runtime_1.jsx)("span", { className: b('description'), title: descriptionTitle, "data-qa": constants_1.UserQa.DESCRIPTION, children: description })) : null] })) : null] })); }); exports.User.displayName = 'User'; //# sourceMappingURL=User.js.map