@atlaskit/avatar 21.1.10 → 21.2.1

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.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`4ba10567310`](https://bitbucket.org/atlassian/atlassian-frontend/commits/4ba10567310) - Internal changes.
8
+
9
+ ## 21.2.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [`51928bbe70c`](https://bitbucket.org/atlassian/atlassian-frontend/commits/51928bbe70c) - [ux] Removes status/presence indicator images from the accessibility tree for the Avatar component.
14
+
15
+ ### Patch Changes
16
+
17
+ - [`64f11e50567`](https://bitbucket.org/atlassian/atlassian-frontend/commits/64f11e50567) - [ux] Adds accessible name to standalone Presence and Status components.
18
+ - [`0ecd2a2238b`](https://bitbucket.org/atlassian/atlassian-frontend/commits/0ecd2a2238b) - Add more precision to custom component check for status and presence
19
+
3
20
  ## 21.1.10
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");
@@ -18,10 +17,15 @@ var _Presence = require("./Presence");
18
17
  var _Status = require("./Status");
19
18
  var _utilities = require("./utilities");
20
19
  var _templateObject;
20
+ /** @jsx jsx */
21
+ // eslint-disable-next-line @repo/internal/fs/filename-pattern-match
21
22
  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
23
  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
24
  var packageName = "@atlaskit/avatar";
24
- var packageVersion = "21.1.10";
25
+ var packageVersion = "21.2.1";
26
+
27
+ // eslint-disable-next-line @repo/internal/react/consistent-types-definitions
28
+
25
29
  var getStyles = function getStyles(css, _ref) {
26
30
  var size = _ref.size,
27
31
  radius = _ref.radius,
@@ -32,7 +36,7 @@ var getStyles = function getStyles(css, _ref) {
32
36
  isInteractive = _ref.isInteractive,
33
37
  isDisabled = _ref.isDisabled;
34
38
  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: ", ";\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 "))
39
+ 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 inset: 0px;\n\n /* Added border-radius style to fix hover issue in safari */\n border-radius: ", ";\n content: ' ';\n opacity: 0;\n pointer-events: none;\n position: absolute;\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
40
  );
37
41
  };
38
42
 
@@ -66,8 +70,8 @@ var Avatar = /*#__PURE__*/(0, _react.forwardRef)(function (_ref2, ref) {
66
70
  testId = _ref2.testId;
67
71
  var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(),
68
72
  createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
69
- var customPresenceNode = (0, _typeof2.default)(presence) === 'object' ? presence : null;
70
- var customStatusNode = (0, _typeof2.default)(status) === 'object' ? status : null;
73
+ var customPresenceNode = /*#__PURE__*/(0, _react.isValidElement)(presence) ? presence : null;
74
+ var customStatusNode = /*#__PURE__*/(0, _react.isValidElement)(status) ? status : null;
71
75
  var isValidIconSize = size !== 'xxlarge' && size !== 'xsmall';
72
76
  var lastAnalytics = (0, _react.useRef)(analyticsContext);
73
77
  (0, _react.useEffect)(function () {
@@ -15,6 +15,8 @@ var _constants2 = require("./constants");
15
15
  var _Text = _interopRequireDefault(require("./Text"));
16
16
  var _utilities = require("./utilities");
17
17
  var _templateObject;
18
+ /** @jsx jsx */
19
+ // eslint-disable-next-line @repo/internal/fs/filename-pattern-match
18
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; }
19
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; }
20
22
  var avatarItemStyles = (0, _react2.css)({
@@ -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
@@ -14,6 +14,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
14
14
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
15
  // eslint-disable-next-line @repo/internal/fs/filename-pattern-match
16
16
 
17
+ // eslint-disable-next-line @repo/internal/react/consistent-types-definitions
18
+
17
19
  var BusyIndicator = /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("circle", {
18
20
  fill: "var(--ds-icon-danger, ".concat(_colors.R300, ")"),
19
21
  cx: "4",
@@ -67,8 +69,10 @@ var AvatarPresence = function AvatarPresence(_ref) {
67
69
  children = _ref.children,
68
70
  presence = _ref.presence;
69
71
  return /*#__PURE__*/_react.default.createElement(_IconWrapper.default, {
70
- bgColor: borderColor
72
+ bgColor: borderColor,
73
+ label: typeof presence === 'string' ? presence : undefined
71
74
  }, presence ? /*#__PURE__*/_react.default.createElement("svg", {
75
+ "aria-hidden": "true",
72
76
  height: "100%",
73
77
  version: "1.1",
74
78
  viewBox: "0 0 8 8",
@@ -92,6 +96,7 @@ var PresenceWrapper = function PresenceWrapper(_ref2) {
92
96
  testId = _ref2.testId;
93
97
  var position = appearance === 'square' ? -4 : _constants.ICON_OFFSET[size];
94
98
  return /*#__PURE__*/_react.default.createElement("span", {
99
+ "aria-hidden": "true",
95
100
  "data-testid": testId && "".concat(testId, "--presence"),
96
101
  style: {
97
102
  pointerEvents: 'none',
@@ -14,6 +14,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
14
14
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
15
  // eslint-disable-next-line @repo/internal/fs/filename-pattern-match
16
16
 
17
+ // eslint-disable-next-line @repo/internal/react/consistent-types-definitions
18
+
17
19
  var ApprovedIndicator = /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("circle", {
18
20
  fill: "var(--ds-icon-success, ".concat(_colors.G400, ")"),
19
21
  cx: "4",
@@ -65,8 +67,10 @@ var AvatarStatus = function AvatarStatus(_ref) {
65
67
  children = _ref.children,
66
68
  status = _ref.status;
67
69
  return /*#__PURE__*/_react.default.createElement(_IconWrapper.default, {
68
- bgColor: borderColor
70
+ bgColor: borderColor,
71
+ label: typeof status === 'string' ? status : undefined
69
72
  }, status ? /*#__PURE__*/_react.default.createElement("svg", {
73
+ "aria-hidden": "true",
70
74
  height: "100%",
71
75
  version: "1.1",
72
76
  viewBox: "0 0 8 8",
@@ -90,6 +94,7 @@ var StatusWrapper = function StatusWrapper(_ref2) {
90
94
  testId = _ref2.testId;
91
95
  var position = appearance === 'square' ? 0 : _constants.ICON_OFFSET[size];
92
96
  return /*#__PURE__*/_react.default.createElement("span", {
97
+ "aria-hidden": "true",
93
98
  "data-testid": testId && "".concat(testId, "--status"),
94
99
  style: {
95
100
  position: 'absolute',
package/dist/cjs/Text.js CHANGED
@@ -9,7 +9,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
9
9
  var _react = require("@emotion/react");
10
10
  var _colors = require("@atlaskit/theme/colors");
11
11
  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; }
12
- 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; }
12
+ 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; } /** @jsx jsx */ // eslint-disable-next-line @repo/internal/fs/filename-pattern-match
13
13
  var getStyles = function getStyles(isSecondary, shouldTruncate) {
14
14
  return (0, _react.css)(_objectSpread(_objectSpread({
15
15
  display: 'block',
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.ICON_SIZES = exports.ICON_OFFSET = exports.BORDER_WIDTH = exports.AVATAR_SIZES = exports.AVATAR_RADIUS = exports.ACTIVE_SCALE_FACTOR = void 0;
7
7
  var _constants = require("@atlaskit/theme/constants");
8
- // eslint-disable-next-line @repo/internal/fs/filename-pattern-match
8
+ // eslint-disable-next-line @repo/internal/fs/filename-pattern-match, @atlaskit/design-system/no-deprecated-imports
9
9
 
10
10
  var AVATAR_SIZES = {
11
11
  xsmall: (0, _constants.gridSize)() * 2,
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/avatar",
3
- "version": "21.1.10",
3
+ "version": "21.2.1",
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,10 @@ 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.10";
13
+ const packageVersion = "21.2.1";
14
+
15
+ // eslint-disable-next-line @repo/internal/react/consistent-types-definitions
16
+
14
17
  const getStyles = (css, {
15
18
  size,
16
19
  radius,
@@ -54,17 +57,14 @@ css`
54
57
 
55
58
  &::after {
56
59
  background-color: transparent;
57
- bottom: 0px;
60
+ inset: 0px;
58
61
 
59
62
  /* Added border-radius style to fix hover issue in safari */
60
63
  border-radius: ${appearance === 'circle' ? '50%' : `${radius}px`};
61
64
  content: ' ';
62
- left: 0px;
63
65
  opacity: 0;
64
66
  pointer-events: none;
65
67
  position: absolute;
66
- right: 0px;
67
- top: 0px;
68
68
  transition: opacity 200ms;
69
69
  width: 100%;
70
70
  }
@@ -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
@@ -3,6 +3,9 @@ import React, { Fragment } from 'react';
3
3
  import { background, G300, N200, N40, purple, R300 } from '@atlaskit/theme/colors';
4
4
  import { ICON_OFFSET, ICON_SIZES } from './constants';
5
5
  import IconWrapper from './IconWrapper';
6
+
7
+ // eslint-disable-next-line @repo/internal/react/consistent-types-definitions
8
+
6
9
  const BusyIndicator = /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("circle", {
7
10
  fill: `var(--ds-icon-danger, ${R300})`,
8
11
  cx: "4",
@@ -56,8 +59,10 @@ const AvatarPresence = ({
56
59
  children,
57
60
  presence
58
61
  }) => /*#__PURE__*/React.createElement(IconWrapper, {
59
- bgColor: borderColor
62
+ bgColor: borderColor,
63
+ label: typeof presence === 'string' ? presence : undefined
60
64
  }, presence ? /*#__PURE__*/React.createElement("svg", {
65
+ "aria-hidden": "true",
61
66
  height: "100%",
62
67
  version: "1.1",
63
68
  viewBox: "0 0 8 8",
@@ -80,6 +85,7 @@ export const PresenceWrapper = ({
80
85
  }) => {
81
86
  const position = appearance === 'square' ? -4 : ICON_OFFSET[size];
82
87
  return /*#__PURE__*/React.createElement("span", {
88
+ "aria-hidden": "true",
83
89
  "data-testid": testId && `${testId}--presence`,
84
90
  style: {
85
91
  pointerEvents: 'none',
@@ -3,6 +3,9 @@ import React, { Fragment } from 'react';
3
3
  import { background, G400, N40, N500, R400 } from '@atlaskit/theme/colors';
4
4
  import { ICON_OFFSET, ICON_SIZES } from './constants';
5
5
  import IconWrapper from './IconWrapper';
6
+
7
+ // eslint-disable-next-line @repo/internal/react/consistent-types-definitions
8
+
6
9
  const ApprovedIndicator = /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("circle", {
7
10
  fill: `var(--ds-icon-success, ${G400})`,
8
11
  cx: "4",
@@ -54,8 +57,10 @@ const AvatarStatus = ({
54
57
  children,
55
58
  status
56
59
  }) => /*#__PURE__*/React.createElement(IconWrapper, {
57
- bgColor: borderColor
60
+ bgColor: borderColor,
61
+ label: typeof status === 'string' ? status : undefined
58
62
  }, status ? /*#__PURE__*/React.createElement("svg", {
63
+ "aria-hidden": "true",
59
64
  height: "100%",
60
65
  version: "1.1",
61
66
  viewBox: "0 0 8 8",
@@ -78,6 +83,7 @@ export const StatusWrapper = ({
78
83
  }) => {
79
84
  const position = appearance === 'square' ? 0 : ICON_OFFSET[size];
80
85
  return /*#__PURE__*/React.createElement("span", {
86
+ "aria-hidden": "true",
81
87
  "data-testid": testId && `${testId}--status`,
82
88
  style: {
83
89
  position: 'absolute',
@@ -1,4 +1,4 @@
1
- // eslint-disable-next-line @repo/internal/fs/filename-pattern-match
1
+ // eslint-disable-next-line @repo/internal/fs/filename-pattern-match, @atlaskit/design-system/no-deprecated-imports
2
2
  import { gridSize } from '@atlaskit/theme/constants';
3
3
  export const AVATAR_SIZES = {
4
4
  xsmall: gridSize() * 2,
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/avatar",
3
- "version": "21.1.10",
3
+ "version": "21.2.1",
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,10 @@ 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.10";
18
+ var packageVersion = "21.2.1";
19
+
20
+ // eslint-disable-next-line @repo/internal/react/consistent-types-definitions
21
+
20
22
  var getStyles = function getStyles(css, _ref) {
21
23
  var size = _ref.size,
22
24
  radius = _ref.radius,
@@ -27,7 +29,7 @@ var getStyles = function getStyles(css, _ref) {
27
29
  isInteractive = _ref.isInteractive,
28
30
  isDisabled = _ref.isDisabled;
29
31
  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: ", ";\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 "))
32
+ 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 inset: 0px;\n\n /* Added border-radius style to fix hover issue in safari */\n border-radius: ", ";\n content: ' ';\n opacity: 0;\n pointer-events: none;\n position: absolute;\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
33
  );
32
34
  };
33
35
 
@@ -61,8 +63,8 @@ var Avatar = /*#__PURE__*/forwardRef(function (_ref2, ref) {
61
63
  testId = _ref2.testId;
62
64
  var _useAnalyticsEvents = useAnalyticsEvents(),
63
65
  createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
64
- var customPresenceNode = _typeof(presence) === 'object' ? presence : null;
65
- var customStatusNode = _typeof(status) === 'object' ? status : null;
66
+ var customPresenceNode = /*#__PURE__*/isValidElement(presence) ? presence : null;
67
+ var customStatusNode = /*#__PURE__*/isValidElement(status) ? status : null;
66
68
  var isValidIconSize = size !== 'xxlarge' && size !== 'xsmall';
67
69
  var lastAnalytics = useRef(analyticsContext);
68
70
  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
@@ -3,6 +3,9 @@ import React, { Fragment } from 'react';
3
3
  import { background, G300, N200, N40, purple, R300 } from '@atlaskit/theme/colors';
4
4
  import { ICON_OFFSET, ICON_SIZES } from './constants';
5
5
  import IconWrapper from './IconWrapper';
6
+
7
+ // eslint-disable-next-line @repo/internal/react/consistent-types-definitions
8
+
6
9
  var BusyIndicator = /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("circle", {
7
10
  fill: "var(--ds-icon-danger, ".concat(R300, ")"),
8
11
  cx: "4",
@@ -56,8 +59,10 @@ var AvatarPresence = function AvatarPresence(_ref) {
56
59
  children = _ref.children,
57
60
  presence = _ref.presence;
58
61
  return /*#__PURE__*/React.createElement(IconWrapper, {
59
- bgColor: borderColor
62
+ bgColor: borderColor,
63
+ label: typeof presence === 'string' ? presence : undefined
60
64
  }, presence ? /*#__PURE__*/React.createElement("svg", {
65
+ "aria-hidden": "true",
61
66
  height: "100%",
62
67
  version: "1.1",
63
68
  viewBox: "0 0 8 8",
@@ -80,6 +85,7 @@ export var PresenceWrapper = function PresenceWrapper(_ref2) {
80
85
  testId = _ref2.testId;
81
86
  var position = appearance === 'square' ? -4 : ICON_OFFSET[size];
82
87
  return /*#__PURE__*/React.createElement("span", {
88
+ "aria-hidden": "true",
83
89
  "data-testid": testId && "".concat(testId, "--presence"),
84
90
  style: {
85
91
  pointerEvents: 'none',
@@ -3,6 +3,9 @@ import React, { Fragment } from 'react';
3
3
  import { background, G400, N40, N500, R400 } from '@atlaskit/theme/colors';
4
4
  import { ICON_OFFSET, ICON_SIZES } from './constants';
5
5
  import IconWrapper from './IconWrapper';
6
+
7
+ // eslint-disable-next-line @repo/internal/react/consistent-types-definitions
8
+
6
9
  var ApprovedIndicator = /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("circle", {
7
10
  fill: "var(--ds-icon-success, ".concat(G400, ")"),
8
11
  cx: "4",
@@ -54,8 +57,10 @@ var AvatarStatus = function AvatarStatus(_ref) {
54
57
  children = _ref.children,
55
58
  status = _ref.status;
56
59
  return /*#__PURE__*/React.createElement(IconWrapper, {
57
- bgColor: borderColor
60
+ bgColor: borderColor,
61
+ label: typeof status === 'string' ? status : undefined
58
62
  }, status ? /*#__PURE__*/React.createElement("svg", {
63
+ "aria-hidden": "true",
59
64
  height: "100%",
60
65
  version: "1.1",
61
66
  viewBox: "0 0 8 8",
@@ -78,6 +83,7 @@ export var StatusWrapper = function StatusWrapper(_ref2) {
78
83
  testId = _ref2.testId;
79
84
  var position = appearance === 'square' ? 0 : ICON_OFFSET[size];
80
85
  return /*#__PURE__*/React.createElement("span", {
86
+ "aria-hidden": "true",
81
87
  "data-testid": testId && "".concat(testId, "--status"),
82
88
  style: {
83
89
  position: 'absolute',
@@ -1,4 +1,4 @@
1
- // eslint-disable-next-line @repo/internal/fs/filename-pattern-match
1
+ // eslint-disable-next-line @repo/internal/fs/filename-pattern-match, @atlaskit/design-system/no-deprecated-imports
2
2
  import { gridSize } from '@atlaskit/theme/constants';
3
3
  export var AVATAR_SIZES = {
4
4
  xsmall: gridSize() * 2,
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/avatar",
3
- "version": "21.1.10",
3
+ "version": "21.2.1",
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.10",
3
+ "version": "21.2.1",
4
4
  "description": "An avatar is a visual representation of a user or entity.",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -34,7 +34,7 @@
34
34
  "dependencies": {
35
35
  "@atlaskit/analytics-next": "^9.0.0",
36
36
  "@atlaskit/icon": "^21.11.0",
37
- "@atlaskit/theme": "^12.2.0",
37
+ "@atlaskit/theme": "^12.4.0",
38
38
  "@atlaskit/tokens": "^1.2.0",
39
39
  "@babel/runtime": "^7.0.0",
40
40
  "@emotion/react": "^11.7.1",
@@ -44,7 +44,7 @@
44
44
  "react": "^16.8.0"
45
45
  },
46
46
  "devDependencies": {
47
- "@atlaskit/button": "^16.5.0",
47
+ "@atlaskit/button": "^16.6.0",
48
48
  "@atlaskit/docs": "*",
49
49
  "@atlaskit/ds-lib": "^2.1.1",
50
50
  "@atlaskit/field-base": "^15.0.0",
@@ -52,7 +52,7 @@
52
52
  "@atlaskit/section-message": "^6.3.0",
53
53
  "@atlaskit/ssr": "*",
54
54
  "@atlaskit/toggle": "^12.5.0",
55
- "@atlaskit/tooltip": "^17.6.0",
55
+ "@atlaskit/tooltip": "^17.7.0",
56
56
  "@atlaskit/visual-regression": "*",
57
57
  "@atlaskit/webdriver-runner": "*",
58
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-->