UNPKG

@chakra-ui/core

Version:

Responsive and accessible React UI components built with React and Emotion

158 lines (133 loc) 4.58 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports["default"] = exports.AvatarBadge = void 0; var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _core = require("@emotion/core"); var _styles = _interopRequireWildcard(require("./styles")); var _Image = require("../Image"); var _ThemeProvider = require("../ThemeProvider"); var _ColorModeProvider = require("../ColorModeProvider"); var _Box = _interopRequireDefault(require("../Box")); /** @jsx jsx */ var AvatarBadge = function AvatarBadge(props) { var _useColorMode = (0, _ColorModeProvider.useColorMode)(), colorMode = _useColorMode.colorMode; var borderColor = { light: "white", dark: "gray.800" }; return (0, _core.jsx)(_Box["default"], (0, _extends2["default"])({ position: "absolute", display: "flex", alignItems: "center", justifyContent: "center", transform: "translate(25%, 25%)", bottom: "0", right: "0", border: "0.2em solid", borderColor: borderColor[colorMode], rounded: "full" }, props)); }; exports.AvatarBadge = AvatarBadge; var getInitials = function getInitials(name) { var _name$split = name.split(" "), firstName = _name$split[0], lastName = _name$split[1]; if (firstName && lastName) { return "" + firstName.charAt(0) + lastName.charAt(0); } else { return firstName.charAt(0); } }; var AvatarName = function AvatarName(_ref) { var name = _ref.name, props = (0, _objectWithoutPropertiesLoose2["default"])(_ref, ["name"]); return (0, _core.jsx)(_Box["default"], (0, _extends2["default"])({ textAlign: "center", textTransform: "uppercase", fontWeight: "medium", "aria-label": name }, props), name ? getInitials(name) : null); }; var DefaultAvatar = function DefaultAvatar(props) { return (0, _core.jsx)(_Box["default"], (0, _extends2["default"])({ size: "100%" }, props), (0, _core.jsx)("svg", { fill: "#fff", viewBox: "0 0 128 128", role: "img" }, (0, _core.jsx)("g", null, (0, _core.jsx)("path", { d: "M103,102.1388 C93.094,111.92 79.3504,118 64.1638,118 C48.8056,118 34.9294,111.768 25,101.7892 L25,95.2 C25,86.8096 31.981,80 40.6,80 L87.4,80 C96.019,80 103,86.8096 103,95.2 L103,102.1388 Z" }), (0, _core.jsx)("path", { d: "M63.9961647,24 C51.2938136,24 41,34.2938136 41,46.9961647 C41,59.7061864 51.2938136,70 63.9961647,70 C76.6985159,70 87,59.7061864 87,46.9961647 C87,34.2938136 76.6985159,24 63.9961647,24" })))); }; var Avatar = function Avatar(_ref2) { var size = _ref2.size, showBorder = _ref2.showBorder, name = _ref2.name, src = _ref2.src, borderColor = _ref2.borderColor, children = _ref2.children, rest = (0, _objectWithoutPropertiesLoose2["default"])(_ref2, ["size", "showBorder", "name", "src", "borderColor", "children"]); var avatarStyleProps = (0, _styles["default"])({ name: name, size: size, showBorder: showBorder, borderColor: borderColor }); var hasLoaded = (0, _Image.useHasImageLoaded)({ src: src }); var theme = (0, _ThemeProvider.useTheme)(); var sizeKey = _styles.avatarSizes[size]; var _size = theme.sizes[sizeKey]; var fontSize = "calc(" + _size + " / 2.5)"; var renderChildren = function renderChildren() { if (src && hasLoaded) { return (0, _core.jsx)(_Box["default"], { as: "img", size: "100%", rounded: "full", objectFit: "cover", src: src, alt: name }); } if (src && !hasLoaded) { if (name) { return (0, _core.jsx)(AvatarName, { size: _size, name: name }); } else { return (0, _core.jsx)(DefaultAvatar, { "aria-label": name }); } } if (!src && name) { return (0, _core.jsx)(AvatarName, { size: _size, name: name }); } return (0, _core.jsx)(DefaultAvatar, { "aria-label": name }); }; return (0, _core.jsx)(_Box["default"], (0, _extends2["default"])({ fontSize: fontSize, lineHeight: _size, verticalAlign: "top" }, avatarStyleProps, rest), renderChildren(), children); }; Avatar.defaultProps = { size: "md" }; var _default = Avatar; exports["default"] = _default;