@pingux/astro 2.171.0-alpha.0 → 2.172.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/lib/cjs/components/Icon/Icon.js +15 -49
- package/lib/cjs/components/Icon/Icon.test.js +7 -36
- package/lib/cjs/components/Icon/IconDefault.d.ts +4 -0
- package/lib/cjs/components/Icon/IconDefault.js +63 -0
- package/lib/cjs/components/Icon/IconDefault.test.js +92 -0
- package/lib/cjs/components/Icon/IconSymbol.d.ts +4 -0
- package/lib/cjs/components/Icon/IconSymbol.js +60 -0
- package/lib/cjs/components/Icon/IconSymbol.mdx +46 -0
- package/lib/cjs/components/Icon/IconSymbol.test.js +80 -0
- package/lib/cjs/components/Icon/MaterialSymbolIcon.stories.d.ts +7 -0
- package/lib/cjs/components/Icon/MaterialSymbolIcon.stories.js +207 -0
- package/lib/cjs/hooks/useGetTheme/useGetTheme.d.ts +31 -31
- package/lib/cjs/index.d.ts +1 -0
- package/lib/cjs/index.js +1 -0
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/customProperties/icons.d.ts +31 -31
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/customProperties/index.d.ts +31 -31
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/variants.d.ts +18 -20
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/variants.js +18 -20
- package/lib/cjs/styles/themeOverrides/onyxSideNav.d.ts +32 -29
- package/lib/cjs/styles/themeOverrides/onyxSideNav.js +3 -0
- package/lib/cjs/styles/themes/next-gen/convertedComponentList.d.ts +1 -0
- package/lib/cjs/styles/themes/next-gen/convertedComponentList.js +3 -2
- package/lib/cjs/styles/themes/next-gen/customProperties/icons.d.ts +32 -32
- package/lib/cjs/styles/themes/next-gen/customProperties/icons.js +1 -32
- package/lib/cjs/styles/themes/next-gen/customProperties/index.d.ts +32 -32
- package/lib/cjs/styles/themes/next-gen/next-gen.d.ts +60 -56
- package/lib/cjs/styles/themes/next-gen/variants/variants.d.ts +28 -24
- package/lib/cjs/styles/themes/next-gen/variants/variants.js +28 -24
- package/lib/cjs/types/icon.d.ts +3 -1
- package/lib/cjs/types/navBar.d.ts +2 -1
- package/lib/components/Icon/Icon.js +11 -47
- package/lib/components/Icon/Icon.test.js +5 -34
- package/lib/components/Icon/IconDefault.js +53 -0
- package/lib/components/Icon/IconDefault.test.js +84 -0
- package/lib/components/Icon/IconSymbol.js +50 -0
- package/lib/components/Icon/IconSymbol.mdx +46 -0
- package/lib/components/Icon/IconSymbol.test.js +77 -0
- package/lib/components/Icon/MaterialSymbolIcon.stories.js +200 -0
- package/lib/index.js +1 -1
- package/lib/styles/themeOverrides/nextGenDarkMode/variants/variants.js +18 -20
- package/lib/styles/themeOverrides/onyxSideNav.js +3 -0
- package/lib/styles/themes/next-gen/convertedComponentList.js +3 -2
- package/lib/styles/themes/next-gen/customProperties/icons.js +1 -32
- package/lib/styles/themes/next-gen/variants/variants.js +28 -24
- package/lib/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +4 -2
|
@@ -1,63 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
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
|
|
24
|
-
var
|
|
14
|
+
var _IconDefault = _interopRequireDefault(require("./IconDefault"));
|
|
15
|
+
var _IconSymbol = _interopRequireDefault(require("./IconSymbol"));
|
|
25
16
|
var _react2 = require("@emotion/react");
|
|
26
|
-
var
|
|
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
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
|
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)(
|
|
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)(
|
|
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
|
|
56
|
+
test('icon render for type symbol', function () {
|
|
57
57
|
getComponent({
|
|
58
|
-
|
|
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
|
-
|
|
88
|
-
|
|
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,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,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;
|