@pingux/astro 2.170.1-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 (57) hide show
  1. package/lib/cjs/components/Avatar/Avatar.js +13 -2
  2. package/lib/cjs/components/Avatar/Avatar.test.js +95 -1
  3. package/lib/cjs/components/Avatar/constants.d.ts +2 -0
  4. package/lib/cjs/components/Avatar/constants.js +8 -0
  5. package/lib/cjs/components/Avatar/getColorFromUuid.d.ts +2 -0
  6. package/lib/cjs/components/Avatar/getColorFromUuid.js +37 -0
  7. package/lib/cjs/components/Icon/Icon.js +15 -49
  8. package/lib/cjs/components/Icon/Icon.test.js +7 -36
  9. package/lib/cjs/components/Icon/IconDefault.d.ts +4 -0
  10. package/lib/cjs/components/Icon/IconDefault.js +63 -0
  11. package/lib/cjs/components/Icon/IconDefault.test.js +92 -0
  12. package/lib/cjs/components/Icon/IconSymbol.d.ts +4 -0
  13. package/lib/cjs/components/Icon/IconSymbol.js +60 -0
  14. package/lib/cjs/components/Icon/IconSymbol.mdx +46 -0
  15. package/lib/cjs/components/Icon/IconSymbol.test.js +80 -0
  16. package/lib/cjs/components/Icon/MaterialSymbolIcon.stories.d.ts +7 -0
  17. package/lib/cjs/components/Icon/MaterialSymbolIcon.stories.js +207 -0
  18. package/lib/cjs/hooks/useGetTheme/useGetTheme.d.ts +31 -31
  19. package/lib/cjs/index.d.ts +1 -0
  20. package/lib/cjs/index.js +1 -0
  21. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/customProperties/icons.d.ts +31 -31
  22. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/customProperties/index.d.ts +31 -31
  23. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/variants.d.ts +18 -20
  24. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/variants.js +18 -20
  25. package/lib/cjs/styles/themeOverrides/onyxSideNav.d.ts +32 -29
  26. package/lib/cjs/styles/themeOverrides/onyxSideNav.js +3 -0
  27. package/lib/cjs/styles/themes/next-gen/convertedComponentList.d.ts +1 -0
  28. package/lib/cjs/styles/themes/next-gen/convertedComponentList.js +3 -2
  29. package/lib/cjs/styles/themes/next-gen/customProperties/icons.d.ts +32 -32
  30. package/lib/cjs/styles/themes/next-gen/customProperties/icons.js +1 -32
  31. package/lib/cjs/styles/themes/next-gen/customProperties/index.d.ts +32 -32
  32. package/lib/cjs/styles/themes/next-gen/next-gen.d.ts +60 -56
  33. package/lib/cjs/styles/themes/next-gen/variants/variants.d.ts +28 -24
  34. package/lib/cjs/styles/themes/next-gen/variants/variants.js +28 -24
  35. package/lib/cjs/types/avatar.d.ts +2 -0
  36. package/lib/cjs/types/icon.d.ts +3 -1
  37. package/lib/cjs/types/navBar.d.ts +2 -1
  38. package/lib/components/Avatar/Avatar.js +14 -3
  39. package/lib/components/Avatar/Avatar.test.js +95 -1
  40. package/lib/components/Avatar/constants.js +2 -0
  41. package/lib/components/Avatar/getColorFromUuid.js +29 -0
  42. package/lib/components/Icon/Icon.js +11 -47
  43. package/lib/components/Icon/Icon.test.js +5 -34
  44. package/lib/components/Icon/IconDefault.js +53 -0
  45. package/lib/components/Icon/IconDefault.test.js +84 -0
  46. package/lib/components/Icon/IconSymbol.js +50 -0
  47. package/lib/components/Icon/IconSymbol.mdx +46 -0
  48. package/lib/components/Icon/IconSymbol.test.js +77 -0
  49. package/lib/components/Icon/MaterialSymbolIcon.stories.js +200 -0
  50. package/lib/index.js +1 -1
  51. package/lib/styles/themeOverrides/nextGenDarkMode/variants/variants.js +18 -20
  52. package/lib/styles/themeOverrides/onyxSideNav.js +3 -0
  53. package/lib/styles/themes/next-gen/convertedComponentList.js +3 -2
  54. package/lib/styles/themes/next-gen/customProperties/icons.js +1 -32
  55. package/lib/styles/themes/next-gen/variants/variants.js +28 -24
  56. package/lib/tsconfig.lib.tsbuildinfo +1 -1
  57. package/package.json +4 -2
@@ -21,8 +21,10 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-c
21
21
  var _react = _interopRequireWildcard(require("react"));
22
22
  var _themeUi = require("theme-ui");
23
23
  var _hooks = require("../../hooks");
24
+ var _constants = require("./constants");
25
+ var _getColorFromUuid = _interopRequireDefault(require("./getColorFromUuid"));
24
26
  var _react2 = require("@emotion/react");
25
- var _excluded = ["alt", "defaultText", "color", "className", "size", "src", "sx", "children", "isSquare", "isLogo"];
27
+ var _excluded = ["alt", "defaultText", "color", "colorId", "className", "size", "src", "sx", "children", "isSquare", "isLogo"];
26
28
  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
29
  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
30
  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; }
@@ -32,6 +34,7 @@ var Avatar = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
32
34
  _props$defaultText = props.defaultText,
33
35
  defaultText = _props$defaultText === void 0 ? 'AA' : _props$defaultText,
34
36
  color = props.color,
37
+ colorId = props.colorId,
35
38
  className = props.className,
36
39
  _props$size = props.size,
37
40
  size = _props$size === void 0 ? 'sm' : _props$size,
@@ -41,7 +44,15 @@ var Avatar = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
41
44
  isSquare = props.isSquare,
42
45
  isLogo = props.isLogo,
43
46
  others = (0, _objectWithoutProperties2["default"])(props, _excluded);
44
- var _useStatusClasses = (0, _hooks.useStatusClasses)(className, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, "is-".concat(color), color), "size-".concat(size), size), "font-size-".concat(size), src ? false : size), 'is-square', isSquare), 'is-image', src), 'is-logo', isLogo)),
47
+
48
+ // this will use color prop if provided,
49
+ // else will map colorId to a color, else defaults to 'green'
50
+ var finalColor = (0, _react.useMemo)(function () {
51
+ if (color) return color;
52
+ if (colorId) return (0, _getColorFromUuid["default"])(colorId, _constants.avatarColors);
53
+ return 'green';
54
+ }, [color, colorId, _constants.avatarColors]);
55
+ var _useStatusClasses = (0, _hooks.useStatusClasses)(className, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, "is-".concat(finalColor), finalColor), "size-".concat(size), size), "font-size-".concat(size), src ? false : size), 'is-square', isSquare), 'is-image', src), 'is-logo', isLogo)),
45
56
  classNames = _useStatusClasses.classNames;
46
57
  if (src) {
47
58
  return (0, _react2.jsx)(_themeUi.Box, (0, _extends2["default"])({
@@ -1,16 +1,25 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
+ var _from = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/from"));
5
+ var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
6
+ var _startsWith = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/starts-with"));
7
+ var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
4
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
5
9
  var _react = _interopRequireDefault(require("react"));
6
10
  var _faker = require("@faker-js/faker");
11
+ var _nodeCrypto = require("node:crypto");
7
12
  var _testWrapper = require("../../utils/testUtils/testWrapper");
8
13
  var _universalComponentTest = require("../../utils/testUtils/universalComponentTest");
14
+ var _constants = require("./constants");
15
+ var _getColorFromUuid = _interopRequireDefault(require("./getColorFromUuid"));
9
16
  var _ = _interopRequireDefault(require("."));
10
17
  var _react2 = require("@emotion/react");
11
18
  var src = _faker.faker.image.lorempicsum.imageUrl(150, 150, false, undefined, '1');
19
+ var datatestId = 'avatar-component';
12
20
  var defaultProps = {
13
- src: src
21
+ src: src,
22
+ 'data-testid': datatestId
14
23
  };
15
24
  var getComponent = function getComponent() {
16
25
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -43,4 +52,89 @@ test('an avatar is rendered with custom alt', function () {
43
52
  });
44
53
  var avatar = _testWrapper.screen.getByText('KL');
45
54
  expect(avatar).toBeInTheDocument();
55
+ });
56
+ describe('getColorFromUUID', function () {
57
+ test('returns a consistent color for the same UUID', function () {
58
+ var uuid = '123e4567-e89b-12d3-a456-426614174000';
59
+ var result1 = (0, _getColorFromUuid["default"])(uuid, _constants.avatarColors);
60
+ var result2 = (0, _getColorFromUuid["default"])(uuid, _constants.avatarColors);
61
+ expect(result1).toBe(result2);
62
+ });
63
+ test('returns a color from the provided array', function () {
64
+ var uuid = 'random-id';
65
+ var result = (0, _getColorFromUuid["default"])(uuid, _constants.avatarColors);
66
+ expect(_constants.avatarColors).toContain(result);
67
+ });
68
+ test('distributes colors differently for different UUIDs', function () {
69
+ var colorA = (0, _getColorFromUuid["default"])('id-1', _constants.avatarColors);
70
+ var colorB = (0, _getColorFromUuid["default"])('id-2', _constants.avatarColors);
71
+
72
+ // While collisions are mathematically possible, for 2 items in a 10-item list,
73
+ // these specific IDs yield different results in FNV-1a.
74
+ expect(colorA).not.toBe(colorB);
75
+ });
76
+ test('throws error if color array is empty', function () {
77
+ expect(function () {
78
+ return (0, _getColorFromUuid["default"])('uuid', []);
79
+ }).toThrow('Color array cannot be empty.');
80
+ });
81
+ test('uses the specific color class when color prop is provided', function () {
82
+ getComponent({
83
+ color: 'blue',
84
+ colorId: 'some-id'
85
+ });
86
+ var avatar = _testWrapper.screen.getByTestId(datatestId);
87
+
88
+ // Checking for 'is-blue'
89
+ expect(avatar).toHaveClass('is-blue');
90
+ });
91
+ test('applies a hashed color class from colorId', function () {
92
+ var uuid = '550e8400-e29b-41d4-a716-446655440000';
93
+ getComponent({
94
+ colorId: uuid
95
+ });
96
+ var avatar = _testWrapper.screen.getByTestId(datatestId);
97
+
98
+ // We check that it has *a* class starting with 'is-'
99
+ // and specifically isn't the default 'is-green'
100
+ var classList = (0, _from["default"])(avatar.classList);
101
+ var colorClass = (0, _find["default"])(classList).call(classList, function (cls) {
102
+ return (0, _startsWith["default"])(cls).call(cls, 'is-');
103
+ });
104
+ expect(colorClass).toBeDefined();
105
+ expect(avatar).not.toHaveClass('is-green');
106
+ });
107
+ test('defaults to is-green when no color props are passed', function () {
108
+ getComponent();
109
+ var avatar = _testWrapper.screen.getByTestId(datatestId);
110
+ expect(avatar).toHaveClass('is-green');
111
+ });
112
+ });
113
+ describe('getColorFromUUID Distribution', function () {
114
+ test('distributes 10,000 UUIDs evenly across 10 colors', function () {
115
+ var iterations = 10000;
116
+ var distribution = {};
117
+
118
+ // Initialize counts
119
+ (0, _forEach["default"])(_constants.avatarColors).call(_constants.avatarColors, function (c) {
120
+ distribution[c] = 0;
121
+ });
122
+
123
+ // Generate and hash
124
+ for (var i = 0; i < iterations; i += 1) {
125
+ // Use the imported randomUUID function directly
126
+ var uuid = (0, _nodeCrypto.randomUUID)();
127
+ var selectedColor = (0, _getColorFromUuid["default"])(uuid, _constants.avatarColors);
128
+ distribution[selectedColor] += 1;
129
+ }
130
+ var expectedMean = iterations / _constants.avatarColors.length;
131
+ // 15% variance is a safe threshold for 10k iterations
132
+ var allowedVariance = 0.15;
133
+ (0, _forEach["default"])(_constants.avatarColors).call(_constants.avatarColors, function (color) {
134
+ var count = distribution[color];
135
+ // Assert that each color is roughly 10% of the total
136
+ expect(count).toBeGreaterThan(expectedMean * (1 - allowedVariance));
137
+ expect(count).toBeLessThan(expectedMean * (1 + allowedVariance));
138
+ });
139
+ });
46
140
  });
@@ -0,0 +1,2 @@
1
+ declare const avatarColors: string[];
2
+ export { avatarColors };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
+ _Object$defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.avatarColors = void 0;
8
+ var avatarColors = exports.avatarColors = ['green', 'purple', 'pink', 'red', 'orange', 'yellow', 'teal', 'cyan', 'blue', 'indigo'];
@@ -0,0 +1,2 @@
1
+ declare const getColorFromUUID: <T>(uuid: string, colors: T[]) => T;
2
+ export default getColorFromUUID;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ var _imul = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/math/imul"));
10
+ // * Maps a UUID to a specific color from a provided array.
11
+ // * @param uuid - The unique identifier string.
12
+ // * @param colors - An array of color strings/objects.
13
+ // * @returns A single color from the array.
14
+
15
+ var getColorFromUUID = function getColorFromUUID(uuid, colors) {
16
+ if (colors.length === 0) {
17
+ throw new Error('Color array cannot be empty.');
18
+ }
19
+
20
+ // FNV-1a Hash implementation
21
+ // This spreads the bits of the UUID string evenly across a 32-bit integer
22
+ var hash = 2166136261;
23
+ for (var i = 0; i < uuid.length; i += 1) {
24
+ /* eslint-disable no-bitwise */
25
+ hash ^= uuid.charCodeAt(i);
26
+ // Standard FNV prime (using Math.imul for 32-bit integer multiplication)
27
+
28
+ hash = (0, _imul["default"])(hash, 16777619);
29
+ }
30
+
31
+ // Convert to an unsigned index using the modulo operator
32
+ // The >>> 0 ensures we are dealing with an unsigned 32-bit integer
33
+ /* eslint-disable no-bitwise */
34
+ var index = (hash >>> 0) % colors.length;
35
+ return colors[index];
36
+ };
37
+ var _default = exports["default"] = getColorFromUUID;
@@ -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;