@atlaskit/avatar 21.1.9 → 21.2.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 CHANGED
@@ -1,5 +1,22 @@
1
1
  # @atlaskit/avatar
2
2
 
3
+ ## 21.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`51928bbe70c`](https://bitbucket.org/atlassian/atlassian-frontend/commits/51928bbe70c) - [ux] Removes status/presence indicator images from the accessibility tree for the Avatar component.
8
+
9
+ ### Patch Changes
10
+
11
+ - [`64f11e50567`](https://bitbucket.org/atlassian/atlassian-frontend/commits/64f11e50567) - [ux] Adds accessible name to standalone Presence and Status components.
12
+ - [`0ecd2a2238b`](https://bitbucket.org/atlassian/atlassian-frontend/commits/0ecd2a2238b) - Add more precision to custom component check for status and presence
13
+
14
+ ## 21.1.10
15
+
16
+ ### Patch Changes
17
+
18
+ - [`5aab9bfc96c`](https://bitbucket.org/atlassian/atlassian-frontend/commits/5aab9bfc96c) - Replace gridSize in spacing values with corresponding spacing tokens
19
+
3
20
  ## 21.1.9
4
21
 
5
22
  ### Patch Changes
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
10
9
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
10
  var _react = require("react");
12
11
  var _react2 = require("@emotion/react");
@@ -21,7 +20,7 @@ var _templateObject;
21
20
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
22
21
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
23
22
  var packageName = "@atlaskit/avatar";
24
- var packageVersion = "21.1.9";
23
+ var packageVersion = "21.2.0";
25
24
  var getStyles = function getStyles(css, _ref) {
26
25
  var size = _ref.size,
27
26
  radius = _ref.radius,
@@ -32,7 +31,7 @@ var getStyles = function getStyles(css, _ref) {
32
31
  isInteractive = _ref.isInteractive,
33
32
  isDisabled = _ref.isDisabled;
34
33
  return (//eslint-disable-next-line @repo/internal/react/no-css-string-literals
35
- css(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n height: ", "px;\n width: ", "px;\n align-items: stretch;\n background-color: ", ";\n border-radius: ", ";\n box-sizing: content-box;\n cursor: inherit;\n display: flex;\n flex-direction: column;\n justify-content: center;\n outline: none;\n overflow: hidden;\n position: static;\n transform: translateZ(0);\n transition: transform 200ms, opacity 200ms;\n box-shadow: 0 0 0 ", "px ", ";\n border: none;\n margin: ", "px;\n padding: ", ";\n\n /* Added font-size and font-family styles to fix alignment issue in firefox for interactive button avatar */\n font-size: inherit;\n font-family: inherit;\n\n &::-moz-focus-inner {\n border: 0;\n margin: ", ";\n padding: ", ";\n }\n\n &::after {\n background-color: transparent;\n bottom: 0px;\n\n /* Added border-radius style to fix hover issue in safari */\n border-radius: ", ";\n content: ' ';\n left: 0px;\n opacity: 0;\n pointer-events: none;\n position: absolute;\n right: 0px;\n top: 0px;\n transition: opacity 200ms;\n width: 100%;\n }\n\n ", "\n\n ", "\n\n ", "\n "])), size, size, borderColor, appearance === 'circle' ? '50%' : "".concat(radius, "px"), _constants.BORDER_WIDTH, borderColor, _constants.BORDER_WIDTH, "var(--ds-space-0, 0px)", "var(--ds-space-0, 0px)", "var(--ds-space-0, 0px)", appearance === 'circle' ? '50%' : "".concat(radius, "px"), stackIndex && "position: relative;", isInteractive && "\n cursor: pointer;\n\n :focus {\n outline: none;\n box-shadow: 0 0 0 ".concat(_constants.BORDER_WIDTH, "px ", "var(--ds-border-focused, ".concat(_colors.B300, ")"), "\n }\n\n :hover {\n &::after {\n background-color: ", "var(--ds-interaction-hovered, ".concat(_colors.N70A, ")"), ";\n opacity: 1;\n }\n }\n\n :active {\n &::after {\n background-color: ", "var(--ds-interaction-pressed, ".concat(_colors.N70A, ")"), ";\n opacity: 1;\n }\n }\n\n :active {\n transform: scale(").concat(_constants.ACTIVE_SCALE_FACTOR, ");\n }\n\n @media screen and (forced-colors: active) {\n &:focus-visible {\n outline: 1px solid\n }\n }\n "), isDisabled && "\n cursor: not-allowed;\n\n &::after {\n opacity: ".concat("var(--ds-opacity-disabled, 0.7)", ";\n pointer-events: none;\n background-color: ", "var(--ds-surface, ".concat(_colors.N0, ")"), ";\n }\n "))
34
+ css(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n height: ", "px;\n width: ", "px;\n align-items: stretch;\n background-color: ", ";\n border-radius: ", ";\n box-sizing: content-box;\n cursor: inherit;\n display: flex;\n flex-direction: column;\n justify-content: center;\n outline: none;\n overflow: hidden;\n position: static;\n transform: translateZ(0);\n transition: transform 200ms, opacity 200ms;\n box-shadow: 0 0 0 ", "px ", ";\n border: none;\n margin: ", ";\n padding: ", ";\n\n /* Added font-size and font-family styles to fix alignment issue in firefox for interactive button avatar */\n font-size: inherit;\n font-family: inherit;\n\n &::-moz-focus-inner {\n border: 0;\n margin: ", ";\n padding: ", ";\n }\n\n &::after {\n background-color: transparent;\n bottom: 0px;\n\n /* Added border-radius style to fix hover issue in safari */\n border-radius: ", ";\n content: ' ';\n left: 0px;\n opacity: 0;\n pointer-events: none;\n position: absolute;\n right: 0px;\n top: 0px;\n transition: opacity 200ms;\n width: 100%;\n }\n\n ", "\n\n ", "\n\n ", "\n "])), size, size, borderColor, appearance === 'circle' ? '50%' : "".concat(radius, "px"), _constants.BORDER_WIDTH, borderColor, "var(--ds-space-025, 2px)", "var(--ds-space-0, 0px)", "var(--ds-space-0, 0px)", "var(--ds-space-0, 0px)", appearance === 'circle' ? '50%' : "".concat(radius, "px"), stackIndex && "position: relative;", isInteractive && "\n cursor: pointer;\n\n :focus {\n outline: none;\n box-shadow: 0 0 0 ".concat(_constants.BORDER_WIDTH, "px ", "var(--ds-border-focused, ".concat(_colors.B300, ")"), "\n }\n\n :hover {\n &::after {\n background-color: ", "var(--ds-interaction-hovered, ".concat(_colors.N70A, ")"), ";\n opacity: 1;\n }\n }\n\n :active {\n &::after {\n background-color: ", "var(--ds-interaction-pressed, ".concat(_colors.N70A, ")"), ";\n opacity: 1;\n }\n }\n\n :active {\n transform: scale(").concat(_constants.ACTIVE_SCALE_FACTOR, ");\n }\n\n @media screen and (forced-colors: active) {\n &:focus-visible {\n outline: 1px solid\n }\n }\n "), isDisabled && "\n cursor: not-allowed;\n\n &::after {\n opacity: ".concat("var(--ds-opacity-disabled, 0.7)", ";\n pointer-events: none;\n background-color: ", "var(--ds-surface, ".concat(_colors.N0, ")"), ";\n }\n "))
36
35
  );
37
36
  };
38
37
 
@@ -66,8 +65,8 @@ var Avatar = /*#__PURE__*/(0, _react.forwardRef)(function (_ref2, ref) {
66
65
  testId = _ref2.testId;
67
66
  var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(),
68
67
  createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
69
- var customPresenceNode = (0, _typeof2.default)(presence) === 'object' ? presence : null;
70
- var customStatusNode = (0, _typeof2.default)(status) === 'object' ? status : null;
68
+ var customPresenceNode = /*#__PURE__*/(0, _react.isValidElement)(presence) ? presence : null;
69
+ var customStatusNode = /*#__PURE__*/(0, _react.isValidElement)(status) ? status : null;
71
70
  var isValidIconSize = size !== 'xxlarge' && size !== 'xsmall';
72
71
  var lastAnalytics = (0, _react.useRef)(analyticsContext);
73
72
  (0, _react.useEffect)(function () {
@@ -29,9 +29,12 @@ var iconWrapperStyles = (0, _react.css)({
29
29
  var IconWrapper = function IconWrapper(_ref) {
30
30
  var _ref$bgColor = _ref.bgColor,
31
31
  bgColor = _ref$bgColor === void 0 ? "var(--ds-surface-overlay, ".concat((0, _colors.background)(), ")") : _ref$bgColor,
32
- children = _ref.children;
32
+ children = _ref.children,
33
+ label = _ref.label;
33
34
  return (0, _react.jsx)("span", {
35
+ "aria-label": label || undefined,
34
36
  css: iconWrapperStyles,
37
+ role: label ? 'img' : 'presentation',
35
38
  style: {
36
39
  border: "".concat(_constants.BORDER_WIDTH, "px solid ").concat(bgColor),
37
40
  backgroundColor: bgColor
@@ -67,8 +67,10 @@ var AvatarPresence = function AvatarPresence(_ref) {
67
67
  children = _ref.children,
68
68
  presence = _ref.presence;
69
69
  return /*#__PURE__*/_react.default.createElement(_IconWrapper.default, {
70
- bgColor: borderColor
70
+ bgColor: borderColor,
71
+ label: typeof presence === 'string' ? presence : undefined
71
72
  }, presence ? /*#__PURE__*/_react.default.createElement("svg", {
73
+ "aria-hidden": "true",
72
74
  height: "100%",
73
75
  version: "1.1",
74
76
  viewBox: "0 0 8 8",
@@ -92,6 +94,7 @@ var PresenceWrapper = function PresenceWrapper(_ref2) {
92
94
  testId = _ref2.testId;
93
95
  var position = appearance === 'square' ? -4 : _constants.ICON_OFFSET[size];
94
96
  return /*#__PURE__*/_react.default.createElement("span", {
97
+ "aria-hidden": "true",
95
98
  "data-testid": testId && "".concat(testId, "--presence"),
96
99
  style: {
97
100
  pointerEvents: 'none',
@@ -65,8 +65,10 @@ var AvatarStatus = function AvatarStatus(_ref) {
65
65
  children = _ref.children,
66
66
  status = _ref.status;
67
67
  return /*#__PURE__*/_react.default.createElement(_IconWrapper.default, {
68
- bgColor: borderColor
68
+ bgColor: borderColor,
69
+ label: typeof status === 'string' ? status : undefined
69
70
  }, status ? /*#__PURE__*/_react.default.createElement("svg", {
71
+ "aria-hidden": "true",
70
72
  height: "100%",
71
73
  version: "1.1",
72
74
  viewBox: "0 0 8 8",
@@ -90,6 +92,7 @@ var StatusWrapper = function StatusWrapper(_ref2) {
90
92
  testId = _ref2.testId;
91
93
  var position = appearance === 'square' ? 0 : _constants.ICON_OFFSET[size];
92
94
  return /*#__PURE__*/_react.default.createElement("span", {
95
+ "aria-hidden": "true",
93
96
  "data-testid": testId && "".concat(testId, "--status"),
94
97
  style: {
95
98
  position: 'absolute',
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/avatar",
3
- "version": "21.1.9",
3
+ "version": "21.2.0",
4
4
  "sideEffects": false
5
5
  }
@@ -1,6 +1,6 @@
1
1
  /** @jsx jsx */
2
2
  // eslint-disable-next-line @repo/internal/fs/filename-pattern-match
3
- import { createElement, forwardRef, useCallback, useEffect, useRef } from 'react';
3
+ import { createElement, forwardRef, isValidElement, useCallback, useEffect, useRef } from 'react';
4
4
  import { ClassNames, jsx } from '@emotion/react';
5
5
  import { useAnalyticsEvents } from '@atlaskit/analytics-next';
6
6
  import { B300, N0, N70A } from '@atlaskit/theme/colors';
@@ -10,7 +10,7 @@ import { PresenceWrapper } from './Presence';
10
10
  import { StatusWrapper } from './Status';
11
11
  import { getButtonProps, getCustomElement, getLinkProps } from './utilities';
12
12
  const packageName = "@atlaskit/avatar";
13
- const packageVersion = "21.1.9";
13
+ const packageVersion = "21.2.0";
14
14
  const getStyles = (css, {
15
15
  size,
16
16
  radius,
@@ -39,7 +39,7 @@ css`
39
39
  transition: transform 200ms, opacity 200ms;
40
40
  box-shadow: 0 0 0 ${BORDER_WIDTH}px ${borderColor};
41
41
  border: none;
42
- margin: ${BORDER_WIDTH}px;
42
+ margin: ${"var(--ds-space-025, 2px)"};
43
43
  padding: ${"var(--ds-space-0, 0px)"};
44
44
 
45
45
  /* Added font-size and font-family styles to fix alignment issue in firefox for interactive button avatar */
@@ -145,8 +145,8 @@ const Avatar = /*#__PURE__*/forwardRef(({
145
145
  const {
146
146
  createAnalyticsEvent
147
147
  } = useAnalyticsEvents();
148
- const customPresenceNode = typeof presence === 'object' ? presence : null;
149
- const customStatusNode = typeof status === 'object' ? status : null;
148
+ const customPresenceNode = /*#__PURE__*/isValidElement(presence) ? presence : null;
149
+ const customStatusNode = /*#__PURE__*/isValidElement(status) ? status : null;
150
150
  const isValidIconSize = size !== 'xxlarge' && size !== 'xsmall';
151
151
  const lastAnalytics = useRef(analyticsContext);
152
152
  useEffect(() => {
@@ -22,9 +22,12 @@ const iconWrapperStyles = css({
22
22
  */
23
23
  const IconWrapper = ({
24
24
  bgColor = `var(--ds-surface-overlay, ${background()})`,
25
- children
25
+ children,
26
+ label
26
27
  }) => jsx("span", {
28
+ "aria-label": label || undefined,
27
29
  css: iconWrapperStyles,
30
+ role: label ? 'img' : 'presentation',
28
31
  style: {
29
32
  border: `${BORDER_WIDTH}px solid ${bgColor}`,
30
33
  backgroundColor: bgColor
@@ -56,8 +56,10 @@ const AvatarPresence = ({
56
56
  children,
57
57
  presence
58
58
  }) => /*#__PURE__*/React.createElement(IconWrapper, {
59
- bgColor: borderColor
59
+ bgColor: borderColor,
60
+ label: typeof presence === 'string' ? presence : undefined
60
61
  }, presence ? /*#__PURE__*/React.createElement("svg", {
62
+ "aria-hidden": "true",
61
63
  height: "100%",
62
64
  version: "1.1",
63
65
  viewBox: "0 0 8 8",
@@ -80,6 +82,7 @@ export const PresenceWrapper = ({
80
82
  }) => {
81
83
  const position = appearance === 'square' ? -4 : ICON_OFFSET[size];
82
84
  return /*#__PURE__*/React.createElement("span", {
85
+ "aria-hidden": "true",
83
86
  "data-testid": testId && `${testId}--presence`,
84
87
  style: {
85
88
  pointerEvents: 'none',
@@ -54,8 +54,10 @@ const AvatarStatus = ({
54
54
  children,
55
55
  status
56
56
  }) => /*#__PURE__*/React.createElement(IconWrapper, {
57
- bgColor: borderColor
57
+ bgColor: borderColor,
58
+ label: typeof status === 'string' ? status : undefined
58
59
  }, status ? /*#__PURE__*/React.createElement("svg", {
60
+ "aria-hidden": "true",
59
61
  height: "100%",
60
62
  version: "1.1",
61
63
  viewBox: "0 0 8 8",
@@ -78,6 +80,7 @@ export const StatusWrapper = ({
78
80
  }) => {
79
81
  const position = appearance === 'square' ? 0 : ICON_OFFSET[size];
80
82
  return /*#__PURE__*/React.createElement("span", {
83
+ "aria-hidden": "true",
81
84
  "data-testid": testId && `${testId}--status`,
82
85
  style: {
83
86
  position: 'absolute',
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/avatar",
3
- "version": "21.1.9",
3
+ "version": "21.2.0",
4
4
  "sideEffects": false
5
5
  }
@@ -1,12 +1,11 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import _typeof from "@babel/runtime/helpers/typeof";
3
2
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
4
3
  var _templateObject;
5
4
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6
5
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7
6
  /** @jsx jsx */
8
7
  // eslint-disable-next-line @repo/internal/fs/filename-pattern-match
9
- import { createElement, forwardRef, useCallback, useEffect, useRef } from 'react';
8
+ import { createElement, forwardRef, isValidElement, useCallback, useEffect, useRef } from 'react';
10
9
  import { ClassNames, jsx } from '@emotion/react';
11
10
  import { useAnalyticsEvents } from '@atlaskit/analytics-next';
12
11
  import { B300, N0, N70A } from '@atlaskit/theme/colors';
@@ -16,7 +15,7 @@ import { PresenceWrapper } from './Presence';
16
15
  import { StatusWrapper } from './Status';
17
16
  import { getButtonProps, getCustomElement, getLinkProps } from './utilities';
18
17
  var packageName = "@atlaskit/avatar";
19
- var packageVersion = "21.1.9";
18
+ var packageVersion = "21.2.0";
20
19
  var getStyles = function getStyles(css, _ref) {
21
20
  var size = _ref.size,
22
21
  radius = _ref.radius,
@@ -27,7 +26,7 @@ var getStyles = function getStyles(css, _ref) {
27
26
  isInteractive = _ref.isInteractive,
28
27
  isDisabled = _ref.isDisabled;
29
28
  return (//eslint-disable-next-line @repo/internal/react/no-css-string-literals
30
- css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n height: ", "px;\n width: ", "px;\n align-items: stretch;\n background-color: ", ";\n border-radius: ", ";\n box-sizing: content-box;\n cursor: inherit;\n display: flex;\n flex-direction: column;\n justify-content: center;\n outline: none;\n overflow: hidden;\n position: static;\n transform: translateZ(0);\n transition: transform 200ms, opacity 200ms;\n box-shadow: 0 0 0 ", "px ", ";\n border: none;\n margin: ", "px;\n padding: ", ";\n\n /* Added font-size and font-family styles to fix alignment issue in firefox for interactive button avatar */\n font-size: inherit;\n font-family: inherit;\n\n &::-moz-focus-inner {\n border: 0;\n margin: ", ";\n padding: ", ";\n }\n\n &::after {\n background-color: transparent;\n bottom: 0px;\n\n /* Added border-radius style to fix hover issue in safari */\n border-radius: ", ";\n content: ' ';\n left: 0px;\n opacity: 0;\n pointer-events: none;\n position: absolute;\n right: 0px;\n top: 0px;\n transition: opacity 200ms;\n width: 100%;\n }\n\n ", "\n\n ", "\n\n ", "\n "])), size, size, borderColor, appearance === 'circle' ? '50%' : "".concat(radius, "px"), BORDER_WIDTH, borderColor, BORDER_WIDTH, "var(--ds-space-0, 0px)", "var(--ds-space-0, 0px)", "var(--ds-space-0, 0px)", appearance === 'circle' ? '50%' : "".concat(radius, "px"), stackIndex && "position: relative;", isInteractive && "\n cursor: pointer;\n\n :focus {\n outline: none;\n box-shadow: 0 0 0 ".concat(BORDER_WIDTH, "px ", "var(--ds-border-focused, ".concat(B300, ")"), "\n }\n\n :hover {\n &::after {\n background-color: ", "var(--ds-interaction-hovered, ".concat(N70A, ")"), ";\n opacity: 1;\n }\n }\n\n :active {\n &::after {\n background-color: ", "var(--ds-interaction-pressed, ".concat(N70A, ")"), ";\n opacity: 1;\n }\n }\n\n :active {\n transform: scale(").concat(ACTIVE_SCALE_FACTOR, ");\n }\n\n @media screen and (forced-colors: active) {\n &:focus-visible {\n outline: 1px solid\n }\n }\n "), isDisabled && "\n cursor: not-allowed;\n\n &::after {\n opacity: ".concat("var(--ds-opacity-disabled, 0.7)", ";\n pointer-events: none;\n background-color: ", "var(--ds-surface, ".concat(N0, ")"), ";\n }\n "))
29
+ css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n height: ", "px;\n width: ", "px;\n align-items: stretch;\n background-color: ", ";\n border-radius: ", ";\n box-sizing: content-box;\n cursor: inherit;\n display: flex;\n flex-direction: column;\n justify-content: center;\n outline: none;\n overflow: hidden;\n position: static;\n transform: translateZ(0);\n transition: transform 200ms, opacity 200ms;\n box-shadow: 0 0 0 ", "px ", ";\n border: none;\n margin: ", ";\n padding: ", ";\n\n /* Added font-size and font-family styles to fix alignment issue in firefox for interactive button avatar */\n font-size: inherit;\n font-family: inherit;\n\n &::-moz-focus-inner {\n border: 0;\n margin: ", ";\n padding: ", ";\n }\n\n &::after {\n background-color: transparent;\n bottom: 0px;\n\n /* Added border-radius style to fix hover issue in safari */\n border-radius: ", ";\n content: ' ';\n left: 0px;\n opacity: 0;\n pointer-events: none;\n position: absolute;\n right: 0px;\n top: 0px;\n transition: opacity 200ms;\n width: 100%;\n }\n\n ", "\n\n ", "\n\n ", "\n "])), size, size, borderColor, appearance === 'circle' ? '50%' : "".concat(radius, "px"), BORDER_WIDTH, borderColor, "var(--ds-space-025, 2px)", "var(--ds-space-0, 0px)", "var(--ds-space-0, 0px)", "var(--ds-space-0, 0px)", appearance === 'circle' ? '50%' : "".concat(radius, "px"), stackIndex && "position: relative;", isInteractive && "\n cursor: pointer;\n\n :focus {\n outline: none;\n box-shadow: 0 0 0 ".concat(BORDER_WIDTH, "px ", "var(--ds-border-focused, ".concat(B300, ")"), "\n }\n\n :hover {\n &::after {\n background-color: ", "var(--ds-interaction-hovered, ".concat(N70A, ")"), ";\n opacity: 1;\n }\n }\n\n :active {\n &::after {\n background-color: ", "var(--ds-interaction-pressed, ".concat(N70A, ")"), ";\n opacity: 1;\n }\n }\n\n :active {\n transform: scale(").concat(ACTIVE_SCALE_FACTOR, ");\n }\n\n @media screen and (forced-colors: active) {\n &:focus-visible {\n outline: 1px solid\n }\n }\n "), isDisabled && "\n cursor: not-allowed;\n\n &::after {\n opacity: ".concat("var(--ds-opacity-disabled, 0.7)", ";\n pointer-events: none;\n background-color: ", "var(--ds-surface, ".concat(N0, ")"), ";\n }\n "))
31
30
  );
32
31
  };
33
32
 
@@ -61,8 +60,8 @@ var Avatar = /*#__PURE__*/forwardRef(function (_ref2, ref) {
61
60
  testId = _ref2.testId;
62
61
  var _useAnalyticsEvents = useAnalyticsEvents(),
63
62
  createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
64
- var customPresenceNode = _typeof(presence) === 'object' ? presence : null;
65
- var customStatusNode = _typeof(status) === 'object' ? status : null;
63
+ var customPresenceNode = /*#__PURE__*/isValidElement(presence) ? presence : null;
64
+ var customStatusNode = /*#__PURE__*/isValidElement(status) ? status : null;
66
65
  var isValidIconSize = size !== 'xxlarge' && size !== 'xsmall';
67
66
  var lastAnalytics = useRef(analyticsContext);
68
67
  useEffect(function () {
@@ -23,9 +23,12 @@ var iconWrapperStyles = css({
23
23
  var IconWrapper = function IconWrapper(_ref) {
24
24
  var _ref$bgColor = _ref.bgColor,
25
25
  bgColor = _ref$bgColor === void 0 ? "var(--ds-surface-overlay, ".concat(background(), ")") : _ref$bgColor,
26
- children = _ref.children;
26
+ children = _ref.children,
27
+ label = _ref.label;
27
28
  return jsx("span", {
29
+ "aria-label": label || undefined,
28
30
  css: iconWrapperStyles,
31
+ role: label ? 'img' : 'presentation',
29
32
  style: {
30
33
  border: "".concat(BORDER_WIDTH, "px solid ").concat(bgColor),
31
34
  backgroundColor: bgColor
@@ -56,8 +56,10 @@ var AvatarPresence = function AvatarPresence(_ref) {
56
56
  children = _ref.children,
57
57
  presence = _ref.presence;
58
58
  return /*#__PURE__*/React.createElement(IconWrapper, {
59
- bgColor: borderColor
59
+ bgColor: borderColor,
60
+ label: typeof presence === 'string' ? presence : undefined
60
61
  }, presence ? /*#__PURE__*/React.createElement("svg", {
62
+ "aria-hidden": "true",
61
63
  height: "100%",
62
64
  version: "1.1",
63
65
  viewBox: "0 0 8 8",
@@ -80,6 +82,7 @@ export var PresenceWrapper = function PresenceWrapper(_ref2) {
80
82
  testId = _ref2.testId;
81
83
  var position = appearance === 'square' ? -4 : ICON_OFFSET[size];
82
84
  return /*#__PURE__*/React.createElement("span", {
85
+ "aria-hidden": "true",
83
86
  "data-testid": testId && "".concat(testId, "--presence"),
84
87
  style: {
85
88
  pointerEvents: 'none',
@@ -54,8 +54,10 @@ var AvatarStatus = function AvatarStatus(_ref) {
54
54
  children = _ref.children,
55
55
  status = _ref.status;
56
56
  return /*#__PURE__*/React.createElement(IconWrapper, {
57
- bgColor: borderColor
57
+ bgColor: borderColor,
58
+ label: typeof status === 'string' ? status : undefined
58
59
  }, status ? /*#__PURE__*/React.createElement("svg", {
60
+ "aria-hidden": "true",
59
61
  height: "100%",
60
62
  version: "1.1",
61
63
  viewBox: "0 0 8 8",
@@ -78,6 +80,7 @@ export var StatusWrapper = function StatusWrapper(_ref2) {
78
80
  testId = _ref2.testId;
79
81
  var position = appearance === 'square' ? 0 : ICON_OFFSET[size];
80
82
  return /*#__PURE__*/React.createElement("span", {
83
+ "aria-hidden": "true",
81
84
  "data-testid": testId && "".concat(testId, "--status"),
82
85
  style: {
83
86
  position: 'absolute',
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/avatar",
3
- "version": "21.1.9",
3
+ "version": "21.2.0",
4
4
  "sideEffects": false
5
5
  }
@@ -3,6 +3,7 @@ import { FC, ReactNode } from 'react';
3
3
  interface IconWrapperProps {
4
4
  bgColor?: string;
5
5
  children?: ReactNode;
6
+ label?: string;
6
7
  }
7
8
  /**
8
9
  * __Icon wrapper__
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/avatar",
3
- "version": "21.1.9",
3
+ "version": "21.2.0",
4
4
  "description": "An avatar is a visual representation of a user or entity.",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -15,7 +15,6 @@
15
15
  "sideEffects": false,
16
16
  "atlaskit:src": "src/index.ts",
17
17
  "atlassian": {
18
- "disableProductCI": true,
19
18
  "team": "Design System Team",
20
19
  "releaseModel": "scheduled",
21
20
  "website": {
@@ -53,7 +52,7 @@
53
52
  "@atlaskit/section-message": "^6.3.0",
54
53
  "@atlaskit/ssr": "*",
55
54
  "@atlaskit/toggle": "^12.5.0",
56
- "@atlaskit/tooltip": "^17.6.0",
55
+ "@atlaskit/tooltip": "^17.7.0",
57
56
  "@atlaskit/visual-regression": "*",
58
57
  "@atlaskit/webdriver-runner": "*",
59
58
  "@atlassian/atlassian-frontend-prettier-config-1.0.1": "npm:@atlassian/atlassian-frontend-prettier-config@1.0.1",
package/report.api.md CHANGED
@@ -8,6 +8,7 @@
8
8
  ### Table of contents
9
9
 
10
10
  - [Main Entry Types](#main-entry-types)
11
+ - [Peer Dependencies](#peer-dependencies)
11
12
 
12
13
  ### Main Entry Types
13
14
 
@@ -192,3 +193,15 @@ export type StatusType = ('approved' | 'declined' | 'locked') | ReactNode;
192
193
  ```
193
194
 
194
195
  <!--SECTION END: Main Entry Types-->
196
+
197
+ ### Peer Dependencies
198
+
199
+ <!--SECTION START: Peer Dependencies-->
200
+
201
+ ```json
202
+ {
203
+ "react": "^16.8.0"
204
+ }
205
+ ```
206
+
207
+ <!--SECTION END: Peer Dependencies-->