@atlaskit/teams-avatar 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -0
- package/LICENSE.md +13 -0
- package/README.md +9 -0
- package/dist/cjs/index.js +13 -0
- package/dist/cjs/ui/teams-avatar/index.js +37 -0
- package/dist/cjs/ui/teams-avatar/teams-avatar-image/index.js +93 -0
- package/dist/es2019/index.js +1 -0
- package/dist/es2019/ui/teams-avatar/index.js +25 -0
- package/dist/es2019/ui/teams-avatar/teams-avatar-image/index.js +76 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/ui/teams-avatar/index.js +29 -0
- package/dist/esm/ui/teams-avatar/teams-avatar-image/index.js +87 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/ui/teams-avatar/index.d.ts +6 -0
- package/dist/types/ui/teams-avatar/teams-avatar-image/index.d.ts +15 -0
- package/dist/types-ts4.5/index.d.ts +1 -0
- package/dist/types-ts4.5/ui/teams-avatar/index.d.ts +6 -0
- package/dist/types-ts4.5/ui/teams-avatar/teams-avatar-image/index.d.ts +15 -0
- package/package.json +100 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# @atlaskit/teams-avatar
|
package/LICENSE.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Copyright 2023 Atlassian Pty Ltd
|
|
2
|
+
|
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License.
|
|
5
|
+
You may obtain a copy of the License at
|
|
6
|
+
|
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
|
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
See the License for the specific language governing permissions and
|
|
13
|
+
limitations under the License.
|
package/README.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# TeamsAvatar
|
|
2
|
+
|
|
3
|
+
A team avatar is a visual representation of a team.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
`import TeamsAvatar from '@atlaskit/teams-avatar';`
|
|
8
|
+
|
|
9
|
+
Detailed docs and example usage can be found [here](https://atlaskit.atlassian.com/packages/people-and-teams/teams-avatar).
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
Object.defineProperty(exports, "default", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function get() {
|
|
10
|
+
return _teamsAvatar.default;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
var _teamsAvatar = _interopRequireDefault(require("./ui/teams-avatar"));
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.ICON_COLOR = exports.ICON_BACKGROUND = void 0;
|
|
8
|
+
exports.default = TeamAvatar;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
11
|
+
var _react = _interopRequireDefault(require("react"));
|
|
12
|
+
var _avatar = _interopRequireDefault(require("@atlaskit/avatar"));
|
|
13
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
14
|
+
var _teamsAvatarImage = require("./teams-avatar-image");
|
|
15
|
+
var _excluded = ["testId", "src", "size"];
|
|
16
|
+
var ICON_BACKGROUND = exports.ICON_BACKGROUND = "var(--ds-icon-inverse, ".concat(_colors.N0, ")");
|
|
17
|
+
var ICON_COLOR = exports.ICON_COLOR = "var(--ds-icon-subtle, ".concat(_colors.N90, ")");
|
|
18
|
+
function TeamAvatar(_ref) {
|
|
19
|
+
var testId = _ref.testId,
|
|
20
|
+
src = _ref.src,
|
|
21
|
+
_ref$size = _ref.size,
|
|
22
|
+
size = _ref$size === void 0 ? 'medium' : _ref$size,
|
|
23
|
+
props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
24
|
+
return /*#__PURE__*/_react.default.createElement(_avatar.default, (0, _extends2.default)({
|
|
25
|
+
appearance: "circle"
|
|
26
|
+
}, props, {
|
|
27
|
+
size: size,
|
|
28
|
+
src: src,
|
|
29
|
+
testId: "".concat(testId, "-team-avatar")
|
|
30
|
+
}), function (innerProps) {
|
|
31
|
+
return /*#__PURE__*/_react.default.createElement(_teamsAvatarImage.TeamAvatarImage, (0, _extends2.default)({
|
|
32
|
+
src: src,
|
|
33
|
+
size: size,
|
|
34
|
+
testId: testId
|
|
35
|
+
}, innerProps));
|
|
36
|
+
});
|
|
37
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.TeamAvatarImage = void 0;
|
|
8
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
var _react = require("react");
|
|
12
|
+
var _react2 = require("@emotion/react");
|
|
13
|
+
var _avatar = require("@atlaskit/avatar");
|
|
14
|
+
var _people = _interopRequireDefault(require("@atlaskit/icon/glyph/people"));
|
|
15
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
16
|
+
var _excluded = ["alt", "src", "size", "testId"];
|
|
17
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
18
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /** @jsx jsx */
|
|
19
|
+
var ICON_BACKGROUND = "var(--ds-icon-inverse, ".concat(_colors.N0, ")");
|
|
20
|
+
var ICON_COLOR = "var(--ds-icon-subtle, ".concat(_colors.N90, ")");
|
|
21
|
+
// used in a size calculation so can't be a token. Without this the avatar looks very squished
|
|
22
|
+
var ICON_PADDING = 4;
|
|
23
|
+
var avatarDefaultIconStyles = (0, _react2.css)({
|
|
24
|
+
display: 'flex',
|
|
25
|
+
backgroundColor: ICON_COLOR,
|
|
26
|
+
borderRadius: '50%',
|
|
27
|
+
width: '100%',
|
|
28
|
+
height: '100%',
|
|
29
|
+
justifyContent: 'center',
|
|
30
|
+
alignItems: 'center'
|
|
31
|
+
});
|
|
32
|
+
var nestedAvatarStyles = Object.entries(_avatar.AVATAR_SIZES).reduce(function (styles, _ref) {
|
|
33
|
+
var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
|
|
34
|
+
key = _ref2[0],
|
|
35
|
+
size = _ref2[1];
|
|
36
|
+
return _objectSpread(_objectSpread({}, styles), {}, (0, _defineProperty2.default)({}, key, (0, _react2.css)({
|
|
37
|
+
width: "".concat(size, "px"),
|
|
38
|
+
height: "".concat(size, "px"),
|
|
39
|
+
// eslint-disable-next-line @atlaskit/design-system/no-nested-styles
|
|
40
|
+
'& svg': {
|
|
41
|
+
width: "".concat(size - ICON_PADDING, "px"),
|
|
42
|
+
height: "".concat(size - ICON_PADDING, "px")
|
|
43
|
+
}
|
|
44
|
+
})));
|
|
45
|
+
}, {});
|
|
46
|
+
var avatarImageStyles = (0, _react2.css)({
|
|
47
|
+
display: 'flex',
|
|
48
|
+
flex: '1 1 100%',
|
|
49
|
+
width: '100%',
|
|
50
|
+
height: '100%'
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* __Avatar image__
|
|
55
|
+
*
|
|
56
|
+
* An avatar image is an internal component used to control the rendering phases of an image.
|
|
57
|
+
*/
|
|
58
|
+
var TeamAvatarImage = exports.TeamAvatarImage = function TeamAvatarImage(_ref3) {
|
|
59
|
+
var _ref3$alt = _ref3.alt,
|
|
60
|
+
alt = _ref3$alt === void 0 ? '' : _ref3$alt,
|
|
61
|
+
src = _ref3.src,
|
|
62
|
+
size = _ref3.size,
|
|
63
|
+
testId = _ref3.testId,
|
|
64
|
+
rest = (0, _objectWithoutProperties2.default)(_ref3, _excluded);
|
|
65
|
+
var _useState = (0, _react.useState)(false),
|
|
66
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
67
|
+
hasImageErrored = _useState2[0],
|
|
68
|
+
setHasImageErrored = _useState2[1];
|
|
69
|
+
|
|
70
|
+
// If src changes, reset state
|
|
71
|
+
(0, _react.useEffect)(function () {
|
|
72
|
+
setHasImageErrored(false);
|
|
73
|
+
}, [src]);
|
|
74
|
+
if (!src || hasImageErrored) {
|
|
75
|
+
return (0, _react2.jsx)("span", {
|
|
76
|
+
css: [avatarDefaultIconStyles, nestedAvatarStyles[size]]
|
|
77
|
+
}, (0, _react2.jsx)(_people.default, {
|
|
78
|
+
label: alt,
|
|
79
|
+
primaryColor: ICON_BACKGROUND,
|
|
80
|
+
secondaryColor: ICON_COLOR,
|
|
81
|
+
testId: testId && "".concat(testId, "--team")
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
return (0, _react2.jsx)("span", rest, (0, _react2.jsx)("img", {
|
|
85
|
+
src: src,
|
|
86
|
+
alt: alt,
|
|
87
|
+
"data-testid": testId && "".concat(testId, "--image"),
|
|
88
|
+
css: avatarImageStyles,
|
|
89
|
+
onError: function onError() {
|
|
90
|
+
return setHasImageErrored(true);
|
|
91
|
+
}
|
|
92
|
+
}));
|
|
93
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './ui/teams-avatar';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import Avatar from '@atlaskit/avatar';
|
|
4
|
+
import { N0, N90 } from '@atlaskit/theme/colors';
|
|
5
|
+
import { TeamAvatarImage } from './teams-avatar-image';
|
|
6
|
+
export const ICON_BACKGROUND = `var(--ds-icon-inverse, ${N0})`;
|
|
7
|
+
export const ICON_COLOR = `var(--ds-icon-subtle, ${N90})`;
|
|
8
|
+
export default function TeamAvatar({
|
|
9
|
+
testId,
|
|
10
|
+
src,
|
|
11
|
+
size = 'medium',
|
|
12
|
+
...props
|
|
13
|
+
}) {
|
|
14
|
+
return /*#__PURE__*/React.createElement(Avatar, _extends({
|
|
15
|
+
appearance: "circle"
|
|
16
|
+
}, props, {
|
|
17
|
+
size: size,
|
|
18
|
+
src: src,
|
|
19
|
+
testId: `${testId}-team-avatar`
|
|
20
|
+
}), innerProps => /*#__PURE__*/React.createElement(TeamAvatarImage, _extends({
|
|
21
|
+
src: src,
|
|
22
|
+
size: size,
|
|
23
|
+
testId: testId
|
|
24
|
+
}, innerProps)));
|
|
25
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { css, jsx } from '@emotion/react';
|
|
4
|
+
import { AVATAR_SIZES } from '@atlaskit/avatar';
|
|
5
|
+
import TeamIcon from '@atlaskit/icon/glyph/people';
|
|
6
|
+
import { N0, N90 } from '@atlaskit/theme/colors';
|
|
7
|
+
const ICON_BACKGROUND = `var(--ds-icon-inverse, ${N0})`;
|
|
8
|
+
const ICON_COLOR = `var(--ds-icon-subtle, ${N90})`;
|
|
9
|
+
// used in a size calculation so can't be a token. Without this the avatar looks very squished
|
|
10
|
+
const ICON_PADDING = 4;
|
|
11
|
+
const avatarDefaultIconStyles = css({
|
|
12
|
+
display: 'flex',
|
|
13
|
+
backgroundColor: ICON_COLOR,
|
|
14
|
+
borderRadius: '50%',
|
|
15
|
+
width: '100%',
|
|
16
|
+
height: '100%',
|
|
17
|
+
justifyContent: 'center',
|
|
18
|
+
alignItems: 'center'
|
|
19
|
+
});
|
|
20
|
+
const nestedAvatarStyles = Object.entries(AVATAR_SIZES).reduce((styles, [key, size]) => {
|
|
21
|
+
return {
|
|
22
|
+
...styles,
|
|
23
|
+
[key]: css({
|
|
24
|
+
width: `${size}px`,
|
|
25
|
+
height: `${size}px`,
|
|
26
|
+
// eslint-disable-next-line @atlaskit/design-system/no-nested-styles
|
|
27
|
+
'& svg': {
|
|
28
|
+
width: `${size - ICON_PADDING}px`,
|
|
29
|
+
height: `${size - ICON_PADDING}px`
|
|
30
|
+
}
|
|
31
|
+
})
|
|
32
|
+
};
|
|
33
|
+
}, {});
|
|
34
|
+
const avatarImageStyles = css({
|
|
35
|
+
display: 'flex',
|
|
36
|
+
flex: '1 1 100%',
|
|
37
|
+
width: '100%',
|
|
38
|
+
height: '100%'
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* __Avatar image__
|
|
43
|
+
*
|
|
44
|
+
* An avatar image is an internal component used to control the rendering phases of an image.
|
|
45
|
+
*/
|
|
46
|
+
export const TeamAvatarImage = ({
|
|
47
|
+
alt = '',
|
|
48
|
+
src,
|
|
49
|
+
size,
|
|
50
|
+
testId,
|
|
51
|
+
...rest
|
|
52
|
+
}) => {
|
|
53
|
+
const [hasImageErrored, setHasImageErrored] = useState(false);
|
|
54
|
+
|
|
55
|
+
// If src changes, reset state
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
setHasImageErrored(false);
|
|
58
|
+
}, [src]);
|
|
59
|
+
if (!src || hasImageErrored) {
|
|
60
|
+
return jsx("span", {
|
|
61
|
+
css: [avatarDefaultIconStyles, nestedAvatarStyles[size]]
|
|
62
|
+
}, jsx(TeamIcon, {
|
|
63
|
+
label: alt,
|
|
64
|
+
primaryColor: ICON_BACKGROUND,
|
|
65
|
+
secondaryColor: ICON_COLOR,
|
|
66
|
+
testId: testId && `${testId}--team`
|
|
67
|
+
}));
|
|
68
|
+
}
|
|
69
|
+
return jsx("span", rest, jsx("img", {
|
|
70
|
+
src: src,
|
|
71
|
+
alt: alt,
|
|
72
|
+
"data-testid": testId && `${testId}--image`,
|
|
73
|
+
css: avatarImageStyles,
|
|
74
|
+
onError: () => setHasImageErrored(true)
|
|
75
|
+
}));
|
|
76
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './ui/teams-avatar';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
+
var _excluded = ["testId", "src", "size"];
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import Avatar from '@atlaskit/avatar';
|
|
6
|
+
import { N0, N90 } from '@atlaskit/theme/colors';
|
|
7
|
+
import { TeamAvatarImage } from './teams-avatar-image';
|
|
8
|
+
export var ICON_BACKGROUND = "var(--ds-icon-inverse, ".concat(N0, ")");
|
|
9
|
+
export var ICON_COLOR = "var(--ds-icon-subtle, ".concat(N90, ")");
|
|
10
|
+
export default function TeamAvatar(_ref) {
|
|
11
|
+
var testId = _ref.testId,
|
|
12
|
+
src = _ref.src,
|
|
13
|
+
_ref$size = _ref.size,
|
|
14
|
+
size = _ref$size === void 0 ? 'medium' : _ref$size,
|
|
15
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
16
|
+
return /*#__PURE__*/React.createElement(Avatar, _extends({
|
|
17
|
+
appearance: "circle"
|
|
18
|
+
}, props, {
|
|
19
|
+
size: size,
|
|
20
|
+
src: src,
|
|
21
|
+
testId: "".concat(testId, "-team-avatar")
|
|
22
|
+
}), function (innerProps) {
|
|
23
|
+
return /*#__PURE__*/React.createElement(TeamAvatarImage, _extends({
|
|
24
|
+
src: src,
|
|
25
|
+
size: size,
|
|
26
|
+
testId: testId
|
|
27
|
+
}, innerProps));
|
|
28
|
+
});
|
|
29
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
4
|
+
var _excluded = ["alt", "src", "size", "testId"];
|
|
5
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
6
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
7
|
+
/** @jsx jsx */
|
|
8
|
+
import { useEffect, useState } from 'react';
|
|
9
|
+
import { css, jsx } from '@emotion/react';
|
|
10
|
+
import { AVATAR_SIZES } from '@atlaskit/avatar';
|
|
11
|
+
import TeamIcon from '@atlaskit/icon/glyph/people';
|
|
12
|
+
import { N0, N90 } from '@atlaskit/theme/colors';
|
|
13
|
+
var ICON_BACKGROUND = "var(--ds-icon-inverse, ".concat(N0, ")");
|
|
14
|
+
var ICON_COLOR = "var(--ds-icon-subtle, ".concat(N90, ")");
|
|
15
|
+
// used in a size calculation so can't be a token. Without this the avatar looks very squished
|
|
16
|
+
var ICON_PADDING = 4;
|
|
17
|
+
var avatarDefaultIconStyles = css({
|
|
18
|
+
display: 'flex',
|
|
19
|
+
backgroundColor: ICON_COLOR,
|
|
20
|
+
borderRadius: '50%',
|
|
21
|
+
width: '100%',
|
|
22
|
+
height: '100%',
|
|
23
|
+
justifyContent: 'center',
|
|
24
|
+
alignItems: 'center'
|
|
25
|
+
});
|
|
26
|
+
var nestedAvatarStyles = Object.entries(AVATAR_SIZES).reduce(function (styles, _ref) {
|
|
27
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
28
|
+
key = _ref2[0],
|
|
29
|
+
size = _ref2[1];
|
|
30
|
+
return _objectSpread(_objectSpread({}, styles), {}, _defineProperty({}, key, css({
|
|
31
|
+
width: "".concat(size, "px"),
|
|
32
|
+
height: "".concat(size, "px"),
|
|
33
|
+
// eslint-disable-next-line @atlaskit/design-system/no-nested-styles
|
|
34
|
+
'& svg': {
|
|
35
|
+
width: "".concat(size - ICON_PADDING, "px"),
|
|
36
|
+
height: "".concat(size - ICON_PADDING, "px")
|
|
37
|
+
}
|
|
38
|
+
})));
|
|
39
|
+
}, {});
|
|
40
|
+
var avatarImageStyles = css({
|
|
41
|
+
display: 'flex',
|
|
42
|
+
flex: '1 1 100%',
|
|
43
|
+
width: '100%',
|
|
44
|
+
height: '100%'
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* __Avatar image__
|
|
49
|
+
*
|
|
50
|
+
* An avatar image is an internal component used to control the rendering phases of an image.
|
|
51
|
+
*/
|
|
52
|
+
export var TeamAvatarImage = function TeamAvatarImage(_ref3) {
|
|
53
|
+
var _ref3$alt = _ref3.alt,
|
|
54
|
+
alt = _ref3$alt === void 0 ? '' : _ref3$alt,
|
|
55
|
+
src = _ref3.src,
|
|
56
|
+
size = _ref3.size,
|
|
57
|
+
testId = _ref3.testId,
|
|
58
|
+
rest = _objectWithoutProperties(_ref3, _excluded);
|
|
59
|
+
var _useState = useState(false),
|
|
60
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
61
|
+
hasImageErrored = _useState2[0],
|
|
62
|
+
setHasImageErrored = _useState2[1];
|
|
63
|
+
|
|
64
|
+
// If src changes, reset state
|
|
65
|
+
useEffect(function () {
|
|
66
|
+
setHasImageErrored(false);
|
|
67
|
+
}, [src]);
|
|
68
|
+
if (!src || hasImageErrored) {
|
|
69
|
+
return jsx("span", {
|
|
70
|
+
css: [avatarDefaultIconStyles, nestedAvatarStyles[size]]
|
|
71
|
+
}, jsx(TeamIcon, {
|
|
72
|
+
label: alt,
|
|
73
|
+
primaryColor: ICON_BACKGROUND,
|
|
74
|
+
secondaryColor: ICON_COLOR,
|
|
75
|
+
testId: testId && "".concat(testId, "--team")
|
|
76
|
+
}));
|
|
77
|
+
}
|
|
78
|
+
return jsx("span", rest, jsx("img", {
|
|
79
|
+
src: src,
|
|
80
|
+
alt: alt,
|
|
81
|
+
"data-testid": testId && "".concat(testId, "--image"),
|
|
82
|
+
css: avatarImageStyles,
|
|
83
|
+
onError: function onError() {
|
|
84
|
+
return setHasImageErrored(true);
|
|
85
|
+
}
|
|
86
|
+
}));
|
|
87
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default, type TeamAvatarProps } from './ui/teams-avatar';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { type AvatarPropTypes } from '@atlaskit/avatar';
|
|
3
|
+
export type TeamAvatarProps = Omit<AvatarPropTypes, 'appearance'>;
|
|
4
|
+
export declare const ICON_BACKGROUND: "var(--ds-icon-inverse)";
|
|
5
|
+
export declare const ICON_COLOR: "var(--ds-icon-subtle)";
|
|
6
|
+
export default function TeamAvatar({ testId, src, size, ...props }: TeamAvatarProps): JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx } from '@emotion/react';
|
|
2
|
+
import { CustomAvatarProps, SizeType } from '@atlaskit/avatar';
|
|
3
|
+
type AvatarImageProps = {
|
|
4
|
+
size: SizeType;
|
|
5
|
+
alt?: string;
|
|
6
|
+
src?: string;
|
|
7
|
+
testId?: string;
|
|
8
|
+
} & CustomAvatarProps;
|
|
9
|
+
/**
|
|
10
|
+
* __Avatar image__
|
|
11
|
+
*
|
|
12
|
+
* An avatar image is an internal component used to control the rendering phases of an image.
|
|
13
|
+
*/
|
|
14
|
+
export declare const TeamAvatarImage: ({ alt, src, size, testId, ...rest }: AvatarImageProps) => jsx.JSX.Element;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default, type TeamAvatarProps } from './ui/teams-avatar';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { type AvatarPropTypes } from '@atlaskit/avatar';
|
|
3
|
+
export type TeamAvatarProps = Omit<AvatarPropTypes, 'appearance'>;
|
|
4
|
+
export declare const ICON_BACKGROUND: "var(--ds-icon-inverse)";
|
|
5
|
+
export declare const ICON_COLOR: "var(--ds-icon-subtle)";
|
|
6
|
+
export default function TeamAvatar({ testId, src, size, ...props }: TeamAvatarProps): JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx } from '@emotion/react';
|
|
2
|
+
import { CustomAvatarProps, SizeType } from '@atlaskit/avatar';
|
|
3
|
+
type AvatarImageProps = {
|
|
4
|
+
size: SizeType;
|
|
5
|
+
alt?: string;
|
|
6
|
+
src?: string;
|
|
7
|
+
testId?: string;
|
|
8
|
+
} & CustomAvatarProps;
|
|
9
|
+
/**
|
|
10
|
+
* __Avatar image__
|
|
11
|
+
*
|
|
12
|
+
* An avatar image is an internal component used to control the rendering phases of an image.
|
|
13
|
+
*/
|
|
14
|
+
export declare const TeamAvatarImage: ({ alt, src, size, testId, ...rest }: AvatarImageProps) => jsx.JSX.Element;
|
|
15
|
+
export {};
|
package/package.json
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@atlaskit/teams-avatar",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "A team avatar is a visual representation of a team.",
|
|
5
|
+
"author": "Atlassian Pty Ltd",
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
|
+
"publishConfig": {
|
|
8
|
+
"registry": "https://registry.npmjs.org/"
|
|
9
|
+
},
|
|
10
|
+
"atlassian": {
|
|
11
|
+
"team": "People and Teams Collective",
|
|
12
|
+
"inPublicMirror": false,
|
|
13
|
+
"releaseModel": "continuous",
|
|
14
|
+
"website": {
|
|
15
|
+
"name": "TeamsAvatar",
|
|
16
|
+
"category": "Components"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"repository": "https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo",
|
|
20
|
+
"main": "dist/cjs/index.js",
|
|
21
|
+
"module": "dist/esm/index.js",
|
|
22
|
+
"module:es2019": "dist/es2019/index.js",
|
|
23
|
+
"types": "dist/types/index.d.ts",
|
|
24
|
+
"typesVersions": {
|
|
25
|
+
">=4.5 <4.9": {
|
|
26
|
+
"*": [
|
|
27
|
+
"dist/types-ts4.5/*",
|
|
28
|
+
"dist/types-ts4.5/index.d.ts"
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"sideEffects": [
|
|
33
|
+
"*.compiled.css"
|
|
34
|
+
],
|
|
35
|
+
"atlaskit:src": "src/index.ts",
|
|
36
|
+
"af:exports": {
|
|
37
|
+
".": "./src/index.ts"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@atlaskit/avatar": "^21.5.0",
|
|
41
|
+
"@atlaskit/icon": "^22.0.0",
|
|
42
|
+
"@atlaskit/theme": "^12.6.0",
|
|
43
|
+
"@atlaskit/tokens": "^1.35.0",
|
|
44
|
+
"@babel/runtime": "^7.0.0",
|
|
45
|
+
"@emotion/react": "^11.7.1"
|
|
46
|
+
},
|
|
47
|
+
"peerDependencies": {
|
|
48
|
+
"react": "^16.8.0"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@af/integration-testing": "*",
|
|
52
|
+
"@af/visual-regression": "*",
|
|
53
|
+
"@atlaskit/ssr": "*",
|
|
54
|
+
"@atlaskit/visual-regression": "*",
|
|
55
|
+
"@atlassian/atlassian-frontend-prettier-config-1.0.0": "npm:@atlassian/atlassian-frontend-prettier-config@1.0.0",
|
|
56
|
+
"@testing-library/react": "^12.1.5",
|
|
57
|
+
"react-dom": "^16.8.0",
|
|
58
|
+
"typescript": "~4.9.5",
|
|
59
|
+
"wait-for-expect": "^1.2.0"
|
|
60
|
+
},
|
|
61
|
+
"techstack": {
|
|
62
|
+
"@atlassian/frontend": {
|
|
63
|
+
"code-structure": [
|
|
64
|
+
"tangerine-next"
|
|
65
|
+
],
|
|
66
|
+
"import-structure": [
|
|
67
|
+
"atlassian-conventions"
|
|
68
|
+
],
|
|
69
|
+
"circular-dependencies": [
|
|
70
|
+
"file-and-folder-level"
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
"@repo/internal": {
|
|
74
|
+
"dom-events": "use-bind-event-listener",
|
|
75
|
+
"analytics": [
|
|
76
|
+
"analytics-next"
|
|
77
|
+
],
|
|
78
|
+
"design-tokens": [
|
|
79
|
+
"color"
|
|
80
|
+
],
|
|
81
|
+
"theming": [
|
|
82
|
+
"react-context"
|
|
83
|
+
],
|
|
84
|
+
"ui-components": [
|
|
85
|
+
"lite-mode"
|
|
86
|
+
],
|
|
87
|
+
"deprecation": [
|
|
88
|
+
"no-deprecated-imports"
|
|
89
|
+
],
|
|
90
|
+
"styling": [
|
|
91
|
+
"static",
|
|
92
|
+
"compiled"
|
|
93
|
+
],
|
|
94
|
+
"imports": [
|
|
95
|
+
"import-no-extraneous-disable-for-examples-and-docs"
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
"prettier": "@atlassian/atlassian-frontend-prettier-config-1.0.0"
|
|
100
|
+
}
|