@pingux/astro 2.171.0-alpha.0 → 2.172.0-alpha.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.
Files changed (46) hide show
  1. package/lib/cjs/components/Icon/Icon.js +15 -49
  2. package/lib/cjs/components/Icon/Icon.test.js +7 -36
  3. package/lib/cjs/components/Icon/IconDefault.d.ts +4 -0
  4. package/lib/cjs/components/Icon/IconDefault.js +63 -0
  5. package/lib/cjs/components/Icon/IconDefault.test.js +92 -0
  6. package/lib/cjs/components/Icon/IconSymbol.d.ts +4 -0
  7. package/lib/cjs/components/Icon/IconSymbol.js +60 -0
  8. package/lib/cjs/components/Icon/IconSymbol.mdx +46 -0
  9. package/lib/cjs/components/Icon/IconSymbol.test.js +80 -0
  10. package/lib/cjs/components/Icon/MaterialSymbolIcon.stories.d.ts +7 -0
  11. package/lib/cjs/components/Icon/MaterialSymbolIcon.stories.js +207 -0
  12. package/lib/cjs/hooks/useGetTheme/useGetTheme.d.ts +31 -31
  13. package/lib/cjs/index.d.ts +1 -0
  14. package/lib/cjs/index.js +1 -0
  15. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/customProperties/icons.d.ts +31 -31
  16. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/customProperties/index.d.ts +31 -31
  17. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/variants.d.ts +18 -20
  18. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/variants.js +18 -20
  19. package/lib/cjs/styles/themeOverrides/onyxSideNav.d.ts +32 -29
  20. package/lib/cjs/styles/themeOverrides/onyxSideNav.js +3 -0
  21. package/lib/cjs/styles/themes/next-gen/convertedComponentList.d.ts +1 -0
  22. package/lib/cjs/styles/themes/next-gen/convertedComponentList.js +3 -2
  23. package/lib/cjs/styles/themes/next-gen/customProperties/icons.d.ts +32 -32
  24. package/lib/cjs/styles/themes/next-gen/customProperties/icons.js +1 -32
  25. package/lib/cjs/styles/themes/next-gen/customProperties/index.d.ts +32 -32
  26. package/lib/cjs/styles/themes/next-gen/next-gen.d.ts +60 -56
  27. package/lib/cjs/styles/themes/next-gen/variants/variants.d.ts +28 -24
  28. package/lib/cjs/styles/themes/next-gen/variants/variants.js +28 -24
  29. package/lib/cjs/types/icon.d.ts +3 -1
  30. package/lib/cjs/types/navBar.d.ts +2 -1
  31. package/lib/components/Icon/Icon.js +11 -47
  32. package/lib/components/Icon/Icon.test.js +5 -34
  33. package/lib/components/Icon/IconDefault.js +53 -0
  34. package/lib/components/Icon/IconDefault.test.js +84 -0
  35. package/lib/components/Icon/IconSymbol.js +50 -0
  36. package/lib/components/Icon/IconSymbol.mdx +46 -0
  37. package/lib/components/Icon/IconSymbol.test.js +77 -0
  38. package/lib/components/Icon/MaterialSymbolIcon.stories.js +200 -0
  39. package/lib/index.js +1 -1
  40. package/lib/styles/themeOverrides/nextGenDarkMode/variants/variants.js +18 -20
  41. package/lib/styles/themeOverrides/onyxSideNav.js +3 -0
  42. package/lib/styles/themes/next-gen/convertedComponentList.js +3 -2
  43. package/lib/styles/themes/next-gen/customProperties/icons.js +1 -32
  44. package/lib/styles/themes/next-gen/variants/variants.js +28 -24
  45. package/lib/tsconfig.lib.tsbuildinfo +1 -1
  46. package/package.json +4 -2
@@ -1,63 +1,29 @@
1
1
  "use strict";
2
2
 
3
- var _typeof3 = require("@babel/runtime-corejs3/helpers/typeof");
4
- var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
5
- var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
6
- var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
7
- var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
8
- var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
9
- var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
10
- var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
11
- var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
3
+ var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
12
4
  var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
5
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
6
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
13
7
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
14
8
  _Object$defineProperty(exports, "__esModule", {
15
9
  value: true
16
10
  });
17
11
  exports["default"] = void 0;
18
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
19
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
20
- var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/typeof"));
21
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
22
13
  var _react = _interopRequireWildcard(require("react"));
23
- var _hooks = require("../../hooks");
24
- var _Box = _interopRequireDefault(require("../Box"));
14
+ var _IconDefault = _interopRequireDefault(require("./IconDefault"));
15
+ var _IconSymbol = _interopRequireDefault(require("./IconSymbol"));
25
16
  var _react2 = require("@emotion/react");
26
- var _excluded = ["color", "icon", "sx", "size", "variant", "title"];
27
- function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
28
- function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
29
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(t), !0)).call(_context, function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
17
+ function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
30
18
  var Icon = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
31
- var theme = (0, _hooks.useGetTheme)();
32
- var color = props.color,
33
- IconComponent = props.icon,
34
- sx = props.sx,
35
- _props$size = props.size,
36
- size = _props$size === void 0 ? theme.defaultIconSize : _props$size,
37
- variant = props.variant,
38
- title = props.title,
39
- others = (0, _objectWithoutProperties2["default"])(props, _excluded);
40
- var _useTShirtSize = (0, _hooks.useTShirtSize)({
41
- size: size,
42
- sizes: theme.tShirtSizes
43
- }),
44
- sizeProps = _useTShirtSize.sizeProps;
45
- var defaultIconColor = theme.defaultIconColor;
46
- var resolvedTitle = title !== null && title !== void 0 ? title : (0, _typeof2["default"])(IconComponent) === 'object' && 'type' in IconComponent ? {
47
- name: IconComponent.type.name
48
- } : '';
49
- return (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({
50
- as: IconComponent,
51
- ref: ref,
52
- role: "img",
53
- title: resolvedTitle,
54
- variant: variant,
55
- size: sizeProps.size,
56
- sx: _objectSpread({
57
- fill: color || defaultIconColor,
58
- minWidth: sizeProps.size
59
- }, sx)
60
- }, others));
19
+ var icon = props.icon;
20
+ if (typeof icon === 'string') {
21
+ return (0, _react2.jsx)(_IconSymbol["default"], (0, _extends2["default"])({}, props, {
22
+ ref: ref
23
+ }));
24
+ }
25
+ return (0, _react2.jsx)(_IconDefault["default"], (0, _extends2["default"])({}, props, {
26
+ ref: ref
27
+ }));
61
28
  });
62
- Icon.displayName = 'Icon';
63
29
  var _default = exports["default"] = Icon;
@@ -10,7 +10,7 @@ var _react = _interopRequireWildcard(require("react"));
10
10
  var _EarthIcon = _interopRequireDefault(require("@pingux/mdi-react/EarthIcon"));
11
11
  var _react2 = require("@testing-library/react");
12
12
  var _universalComponentTest = require("../../utils/testUtils/universalComponentTest");
13
- var _ = _interopRequireDefault(require("."));
13
+ var _Icon = _interopRequireDefault(require("./Icon"));
14
14
  var _react3 = require("@emotion/react");
15
15
  function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
16
16
  var testId = 'test-icon';
@@ -24,7 +24,7 @@ var defaultProps = {
24
24
  };
25
25
  var getComponent = function getComponent() {
26
26
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
27
- return (0, _react2.render)((0, _react3.jsx)(_["default"], (0, _extends2["default"])({}, defaultProps, props)));
27
+ return (0, _react2.render)((0, _react3.jsx)(_Icon["default"], (0, _extends2["default"])({}, defaultProps, props)));
28
28
  };
29
29
 
30
30
  // The mdi-react and @pingux/mid-react libraries don't support ref forwarding
@@ -42,7 +42,7 @@ var SVGTestComponent = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
42
42
  // Needs to be added to each components test file
43
43
  (0, _universalComponentTest.universalComponentTests)({
44
44
  renderComponent: function renderComponent(props) {
45
- return (0, _react3.jsx)(_["default"], (0, _extends2["default"])({
45
+ return (0, _react3.jsx)(_Icon["default"], (0, _extends2["default"])({
46
46
  icon: SVGTestComponent
47
47
  }, props));
48
48
  }
@@ -53,40 +53,11 @@ test('default icon', function () {
53
53
  expect(icon).toBeInstanceOf(SVGSVGElement);
54
54
  expect(icon).toBeInTheDocument();
55
55
  });
56
- test('icon renders correct xxsmall tshirt size', function () {
56
+ test('icon render for type symbol', function () {
57
57
  getComponent({
58
- size: 'xxs'
58
+ icon: 'search'
59
59
  });
60
- var xsIcon = _react2.screen.getByTestId(testId);
61
- expect(xsIcon).toHaveStyleRule('width', '9px');
62
- });
63
- test('icon renders correct xsmall tshirt size', function () {
64
- getComponent({
65
- size: 'xs'
66
- });
67
- var xsIcon = _react2.screen.getByTestId(testId);
68
- expect(xsIcon).toHaveStyleRule('width', '15px');
69
- });
70
- test('icon renders correct small tshirt size', function () {
71
- getComponent({
72
- size: 'sm'
73
- });
74
- var smIcon = _react2.screen.getByTestId(testId);
75
- expect(smIcon).toHaveStyleRule('width', '20px');
76
- });
77
- test('icon renders correct medium tshirt size', function () {
78
- getComponent({
79
- size: 'md'
80
- });
81
- var mdIcon = _react2.screen.getByTestId(testId);
82
- expect(mdIcon).toHaveStyleRule('width', '25px');
83
- });
84
- test('icon renders with associated title', function () {
85
- getComponent();
86
60
  var icon = _react2.screen.getByTestId(testId);
87
- var title = _react2.screen.getByText('Earth Icon');
88
- expect(icon).toBeInstanceOf(SVGSVGElement);
89
- expect(icon).toBeInTheDocument();
90
- expect(icon).toHaveAttribute('aria-labelledby', 'title-id');
91
- expect(title).toBeInTheDocument();
61
+ expect(icon).toHaveClass('material-symbols-outlined');
62
+ _react2.screen.getByText(/search/i);
92
63
  });
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { IconProps } from '../../types';
3
+ declare const IconDefault: React.ForwardRefExoticComponent<IconProps & React.RefAttributes<HTMLElement>>;
4
+ export default IconDefault;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ var _typeof3 = require("@babel/runtime-corejs3/helpers/typeof");
4
+ var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
5
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
6
+ var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
7
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
8
+ var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
9
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
10
+ var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
11
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
12
+ var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
13
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
14
+ _Object$defineProperty(exports, "__esModule", {
15
+ value: true
16
+ });
17
+ exports["default"] = void 0;
18
+ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
19
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
20
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/typeof"));
21
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
22
+ var _react = _interopRequireWildcard(require("react"));
23
+ var _hooks = require("../../hooks");
24
+ var _Box = _interopRequireDefault(require("../Box"));
25
+ var _react2 = require("@emotion/react");
26
+ var _excluded = ["color", "icon", "sx", "size", "variant", "title"];
27
+ function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
28
+ function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
29
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(t), !0)).call(_context, function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
30
+ var IconDefault = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
31
+ var theme = (0, _hooks.useGetTheme)();
32
+ var color = props.color,
33
+ IconComponent = props.icon,
34
+ sx = props.sx,
35
+ _props$size = props.size,
36
+ size = _props$size === void 0 ? theme.defaultIconSize : _props$size,
37
+ variant = props.variant,
38
+ title = props.title,
39
+ others = (0, _objectWithoutProperties2["default"])(props, _excluded);
40
+ var _useTShirtSize = (0, _hooks.useTShirtSize)({
41
+ size: size,
42
+ sizes: theme.tShirtSizes
43
+ }),
44
+ sizeProps = _useTShirtSize.sizeProps;
45
+ var defaultIconColor = theme.defaultIconColor;
46
+ var resolvedTitle = title !== null && title !== void 0 ? title : (0, _typeof2["default"])(IconComponent) === 'object' && 'type' in IconComponent ? {
47
+ name: IconComponent.type.name
48
+ } : '';
49
+ return (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({
50
+ as: IconComponent,
51
+ ref: ref,
52
+ role: "img",
53
+ title: resolvedTitle,
54
+ variant: variant,
55
+ size: sizeProps.size,
56
+ sx: _objectSpread({
57
+ fill: color || defaultIconColor,
58
+ minWidth: sizeProps.size
59
+ }, sx)
60
+ }, others));
61
+ });
62
+ IconDefault.displayName = 'Icon';
63
+ var _default = exports["default"] = IconDefault;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
4
+ var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
5
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
6
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
7
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _EarthIcon = _interopRequireDefault(require("@pingux/mdi-react/EarthIcon"));
11
+ var _react2 = require("@testing-library/react");
12
+ var _universalComponentTest = require("../../utils/testUtils/universalComponentTest");
13
+ var _IconDefault = _interopRequireDefault(require("./IconDefault"));
14
+ var _react3 = require("@emotion/react");
15
+ function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
16
+ var testId = 'test-icon';
17
+ var defaultProps = {
18
+ 'data-testid': testId,
19
+ icon: _EarthIcon["default"],
20
+ title: {
21
+ id: 'title-id',
22
+ name: 'Earth Icon'
23
+ }
24
+ };
25
+ var getComponent = function getComponent() {
26
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
27
+ return (0, _react2.render)((0, _react3.jsx)(_IconDefault["default"], (0, _extends2["default"])({}, defaultProps, props)));
28
+ };
29
+
30
+ // The mdi-react and @pingux/mid-react libraries don't support ref forwarding
31
+ // A simple implementation of an SVG component demonstrates ref forwarding
32
+ var SVGTestComponent = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
33
+ return (0, _react3.jsx)("svg", (0, _extends2["default"])({
34
+ ref: ref
35
+ }, props, {
36
+ "aria-labelledby": "id"
37
+ }), (0, _react3.jsx)("title", {
38
+ id: "id"
39
+ }, "title"));
40
+ });
41
+
42
+ // Needs to be added to each components test file
43
+ (0, _universalComponentTest.universalComponentTests)({
44
+ renderComponent: function renderComponent(props) {
45
+ return (0, _react3.jsx)(_IconDefault["default"], (0, _extends2["default"])({
46
+ icon: SVGTestComponent
47
+ }, props));
48
+ }
49
+ });
50
+ test('default icon', function () {
51
+ getComponent();
52
+ var icon = _react2.screen.getByTestId(testId);
53
+ expect(icon).toBeInstanceOf(SVGSVGElement);
54
+ expect(icon).toBeInTheDocument();
55
+ });
56
+ test('icon renders correct xxsmall tshirt size', function () {
57
+ getComponent({
58
+ size: 'xxs'
59
+ });
60
+ var xsIcon = _react2.screen.getByTestId(testId);
61
+ expect(xsIcon).toHaveStyleRule('width', '9px');
62
+ });
63
+ test('icon renders correct xsmall tshirt size', function () {
64
+ getComponent({
65
+ size: 'xs'
66
+ });
67
+ var xsIcon = _react2.screen.getByTestId(testId);
68
+ expect(xsIcon).toHaveStyleRule('width', '15px');
69
+ });
70
+ test('icon renders correct small tshirt size', function () {
71
+ getComponent({
72
+ size: 'sm'
73
+ });
74
+ var smIcon = _react2.screen.getByTestId(testId);
75
+ expect(smIcon).toHaveStyleRule('width', '20px');
76
+ });
77
+ test('icon renders correct medium tshirt size', function () {
78
+ getComponent({
79
+ size: 'md'
80
+ });
81
+ var mdIcon = _react2.screen.getByTestId(testId);
82
+ expect(mdIcon).toHaveStyleRule('width', '25px');
83
+ });
84
+ test('icon renders with associated title', function () {
85
+ getComponent();
86
+ var icon = _react2.screen.getByTestId(testId);
87
+ var title = _react2.screen.getByText('Earth Icon');
88
+ expect(icon).toBeInstanceOf(SVGSVGElement);
89
+ expect(icon).toBeInTheDocument();
90
+ expect(icon).toHaveAttribute('aria-labelledby', 'title-id');
91
+ expect(title).toBeInTheDocument();
92
+ });
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { IconProps } from '../../types';
3
+ declare const IconSymbol: React.ForwardRefExoticComponent<IconProps & React.RefAttributes<HTMLElement>>;
4
+ export default IconSymbol;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
4
+ var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
5
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
6
+ var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
7
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
8
+ var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
9
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
10
+ var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
11
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
12
+ var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
13
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
14
+ _Object$defineProperty(exports, "__esModule", {
15
+ value: true
16
+ });
17
+ exports["default"] = void 0;
18
+ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
19
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
20
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
21
+ var _react = _interopRequireWildcard(require("react"));
22
+ var _hooks = require("../../hooks");
23
+ var _Box = _interopRequireDefault(require("../Box"));
24
+ var _react2 = require("@emotion/react");
25
+ var _excluded = ["icon", "className", "title", "size", "color", "hasFill"];
26
+ function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
27
+ function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
28
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(t), !0)).call(_context, function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
29
+ var IconSymbol = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
30
+ var theme = (0, _hooks.useGetTheme)();
31
+ var _props$icon = props.icon,
32
+ icon = _props$icon === void 0 ? 'disabled_by_default' : _props$icon,
33
+ className = props.className,
34
+ title = props.title,
35
+ _props$size = props.size,
36
+ size = _props$size === void 0 ? theme.defaultIconSize : _props$size,
37
+ _props$color = props.color,
38
+ color = _props$color === void 0 ? theme.defaultIconColor : _props$color,
39
+ hasFill = props.hasFill,
40
+ rest = (0, _objectWithoutProperties2["default"])(props, _excluded);
41
+ var _useTShirtSize = (0, _hooks.useTShirtSize)({
42
+ size: size,
43
+ sizes: theme.tShirtSizes
44
+ }),
45
+ sizeProps = _useTShirtSize.sizeProps;
46
+ return (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({
47
+ as: "span",
48
+ ref: ref,
49
+ className: "material-symbols-outlined ".concat(className || ''),
50
+ title: title === null || title === void 0 ? void 0 : title.name
51
+ }, rest, {
52
+ sx: _objectSpread(_objectSpread({}, rest.sx), {}, {
53
+ color: color,
54
+ fontSize: sizeProps.size,
55
+ fontVariationSettings: hasFill ? "'FILL' 1" : "'FILL' 0"
56
+ })
57
+ }), icon);
58
+ });
59
+ IconSymbol.displayName = 'Icon';
60
+ var _default = exports["default"] = IconSymbol;
@@ -0,0 +1,46 @@
1
+ import { Meta } from '@storybook/addon-docs';
2
+
3
+ <Meta title="Components/Icon/Icon" />
4
+
5
+ # Icon
6
+
7
+ Icons are small images that represent concepts or capabilities that often provide information or lead users to other pages within the application.
8
+
9
+ Icon should be:
10
+ - Centrally aligned when used in a group with an appropriate amount of space between them.
11
+ - Paired with text or a tooltip when its intention is not immediately evident.
12
+ - Relatively sized when used with text.
13
+
14
+ Icon shouldn’t:
15
+ - Include letters in the icon design.
16
+ - Be randomly scaled to fit the layout.
17
+
18
+ Regarding sizing, this component uses the **1em x 1em** container by default and maintains the aspect ratios. You can:
19
+
20
+ - Use the theme to color the icon.
21
+
22
+ - Use font icon text from the [Material Symbol Library](https://marella.github.io/material-symbols/demo/)
23
+
24
+ It is built on top of the [Box from Theme-UI](https://theme-ui.com/components/box/) and uses the available [props from Theme-UI](https://theme-ui.com/sx-prop).
25
+
26
+ ### Required Components
27
+
28
+ This component can be used independently and does not require additional components.
29
+
30
+ ### Accessibility
31
+
32
+ #### Labelling
33
+
34
+ The Icon component accepts the title prop:
35
+ `title={{ id: 'unique id', name: 'short description of the icon'}}`.
36
+ The `name` will be passed inside title attribute of span element.
37
+ The `id` is optional. If not specified, it will be generated automatically.
38
+ This is needed to make font icon accessible.
39
+
40
+ #### Screen Readers
41
+
42
+ If the icon has a title associated with it, the **`aria-labelledby`** attribute is used to provide the label ID.
43
+
44
+
45
+
46
+
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
+ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
5
+ var _react = _interopRequireDefault(require("react"));
6
+ var _react2 = require("@testing-library/react");
7
+ var _universalComponentTest = require("../../utils/testUtils/universalComponentTest");
8
+ var _IconSymbol = _interopRequireDefault(require("./IconSymbol"));
9
+ var _react3 = require("@emotion/react");
10
+ var testId = 'test-icon';
11
+ var testIcon = 'Search';
12
+ var defaultProps = {
13
+ 'data-testid': testId,
14
+ icon: testIcon,
15
+ title: {
16
+ id: 'title-id',
17
+ name: 'Search Icon'
18
+ }
19
+ };
20
+ var getComponent = function getComponent() {
21
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
22
+ return (0, _react2.render)((0, _react3.jsx)(_IconSymbol["default"], (0, _extends2["default"])({}, defaultProps, props)));
23
+ };
24
+
25
+ // Needs to be added to each components test file
26
+ (0, _universalComponentTest.universalComponentTests)({
27
+ renderComponent: function renderComponent(props) {
28
+ return (0, _react3.jsx)(_IconSymbol["default"], (0, _extends2["default"])({
29
+ icon: testIcon
30
+ }, props));
31
+ }
32
+ });
33
+ test('default icon', function () {
34
+ getComponent();
35
+ var icon = _react2.screen.getByTestId(testId);
36
+ expect(icon).toHaveClass('material-symbols-outlined');
37
+ _react2.screen.getByText(/search/i);
38
+ });
39
+ test('default icon', function () {
40
+ getComponent({
41
+ icon: 'face'
42
+ });
43
+ var icon = _react2.screen.getByTestId(testId);
44
+ expect(icon).toHaveClass('material-symbols-outlined');
45
+ _react2.screen.getByText(/face/i);
46
+ });
47
+ test('size prop', function () {
48
+ getComponent({
49
+ size: 'sm'
50
+ });
51
+ var icon = _react2.screen.getByTestId(testId);
52
+ expect(icon).toHaveStyle('font-size: 20px');
53
+ });
54
+ test('color prop', function () {
55
+ getComponent({
56
+ color: 'red'
57
+ });
58
+ var icon = _react2.screen.getByTestId(testId);
59
+ expect(icon).toHaveStyle('color: red');
60
+ });
61
+ test('hasFill prop', function () {
62
+ getComponent({
63
+ hasFill: true
64
+ });
65
+ var icon = _react2.screen.getByTestId(testId);
66
+ expect(icon).toHaveStyle("font-variation-settings: 'FILL' 1");
67
+ });
68
+ test('title prop', function () {
69
+ getComponent();
70
+ var icon = _react2.screen.getByTestId(testId);
71
+ expect(icon).toHaveAttribute('title', 'Search Icon');
72
+ });
73
+ test('className prop', function () {
74
+ var customClass = 'custom-icon-class';
75
+ getComponent({
76
+ className: customClass
77
+ });
78
+ var icon = _react2.screen.getByTestId(testId);
79
+ expect(icon).toHaveClass(customClass);
80
+ });
@@ -0,0 +1,7 @@
1
+ import { Meta, StoryFn } from '@storybook/react';
2
+ import { IconProps } from '../../types';
3
+ declare const _default: Meta;
4
+ export default _default;
5
+ export declare const Default: StoryFn<IconProps>;
6
+ export declare const Sizes: StoryFn;
7
+ export declare const CommonlyUsed: StoryFn;