@carbon/ibm-products 2.26.0 → 2.27.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. package/css/index-full-carbon.css +517 -56
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +1 -1
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +32 -14
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +1 -1
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +517 -56
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +1 -1
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +488 -48
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +1 -1
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/BigNumbers/BigNumbers.d.ts +11 -0
  18. package/es/components/BigNumbers/BigNumbers.js +238 -0
  19. package/es/components/BigNumbers/constants.d.ts +13 -0
  20. package/es/components/BigNumbers/constants.js +67 -0
  21. package/es/components/BigNumbers/index.d.ts +1 -0
  22. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +4 -3
  23. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +3 -2
  24. package/es/components/DataSpreadsheet/utils/checkForHoldingKey.d.ts +1 -0
  25. package/es/components/DataSpreadsheet/utils/checkForHoldingKey.js +17 -0
  26. package/es/components/Datagrid/Datagrid/Datagrid.js +9 -2
  27. package/es/components/Datagrid/Datagrid/DatagridContent.d.ts +3 -1
  28. package/es/components/Datagrid/Datagrid/DatagridContent.js +6 -2
  29. package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +8 -4
  30. package/es/components/Datagrid/Datagrid/DatagridToolbar.d.ts +10 -1
  31. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +21 -4
  32. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +32 -9
  33. package/es/components/Datagrid/Datagrid/addons/Filtering/constants.d.ts +3 -1
  34. package/es/components/Datagrid/Datagrid/addons/Filtering/constants.js +4 -1
  35. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +35 -3
  36. package/es/components/Datagrid/Datagrid/addons/stateReducer.js +1 -1
  37. package/es/components/Datagrid/useSelectAllToggle.js +5 -3
  38. package/es/components/SidePanel/SidePanel.js +13 -6
  39. package/es/components/SidePanel/motion/variants.d.ts +39 -12
  40. package/es/components/SidePanel/motion/variants.js +42 -11
  41. package/es/components/StringFormatter/StringFormatter.d.ts +6 -0
  42. package/es/components/StringFormatter/StringFormatter.js +79 -0
  43. package/es/components/StringFormatter/index.d.ts +1 -0
  44. package/es/components/StringFormatter/utils/enums.d.ts +14 -0
  45. package/es/components/StringFormatter/utils/enums.js +23 -0
  46. package/es/components/Tearsheet/TearsheetShell.js +10 -4
  47. package/es/components/UserAvatar/UserAvatar.js +58 -42
  48. package/es/components/index.d.ts +2 -0
  49. package/es/global/js/hooks/index.d.ts +1 -0
  50. package/es/global/js/hooks/useIsomorphicEffect.d.ts +2 -0
  51. package/es/global/js/hooks/useIsomorphicEffect.js +14 -0
  52. package/es/global/js/package-settings.d.ts +2 -0
  53. package/es/global/js/package-settings.js +2 -0
  54. package/es/index.js +2 -0
  55. package/es/settings.d.ts +2 -0
  56. package/lib/components/BigNumbers/BigNumbers.d.ts +11 -0
  57. package/lib/components/BigNumbers/BigNumbers.js +244 -0
  58. package/lib/components/BigNumbers/constants.d.ts +13 -0
  59. package/lib/components/BigNumbers/constants.js +76 -0
  60. package/lib/components/BigNumbers/index.d.ts +1 -0
  61. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +4 -3
  62. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +3 -2
  63. package/lib/components/DataSpreadsheet/utils/checkForHoldingKey.d.ts +1 -0
  64. package/lib/components/DataSpreadsheet/utils/checkForHoldingKey.js +21 -0
  65. package/lib/components/Datagrid/Datagrid/Datagrid.js +9 -2
  66. package/lib/components/Datagrid/Datagrid/DatagridContent.d.ts +3 -1
  67. package/lib/components/Datagrid/Datagrid/DatagridContent.js +6 -2
  68. package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +8 -4
  69. package/lib/components/Datagrid/Datagrid/DatagridToolbar.d.ts +10 -1
  70. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +20 -3
  71. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +30 -7
  72. package/lib/components/Datagrid/Datagrid/addons/Filtering/constants.d.ts +3 -1
  73. package/lib/components/Datagrid/Datagrid/addons/Filtering/constants.js +4 -0
  74. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +33 -1
  75. package/lib/components/Datagrid/Datagrid/addons/stateReducer.js +1 -1
  76. package/lib/components/Datagrid/useSelectAllToggle.js +4 -2
  77. package/lib/components/SidePanel/SidePanel.js +11 -4
  78. package/lib/components/SidePanel/motion/variants.d.ts +39 -12
  79. package/lib/components/SidePanel/motion/variants.js +42 -10
  80. package/lib/components/StringFormatter/StringFormatter.d.ts +6 -0
  81. package/lib/components/StringFormatter/StringFormatter.js +85 -0
  82. package/lib/components/StringFormatter/index.d.ts +1 -0
  83. package/lib/components/StringFormatter/utils/enums.d.ts +14 -0
  84. package/lib/components/StringFormatter/utils/enums.js +27 -0
  85. package/lib/components/Tearsheet/TearsheetShell.js +10 -4
  86. package/lib/components/UserAvatar/UserAvatar.js +58 -42
  87. package/lib/components/index.d.ts +2 -0
  88. package/lib/global/js/hooks/index.d.ts +1 -0
  89. package/lib/global/js/hooks/useIsomorphicEffect.d.ts +2 -0
  90. package/lib/global/js/hooks/useIsomorphicEffect.js +18 -0
  91. package/lib/global/js/package-settings.d.ts +2 -0
  92. package/lib/global/js/package-settings.js +2 -0
  93. package/lib/index.js +10 -0
  94. package/lib/settings.d.ts +2 -0
  95. package/package.json +7 -7
  96. package/scss/components/BigNumbers/_big-numbers.scss +151 -0
  97. package/scss/components/BigNumbers/_carbon-imports.scss +11 -0
  98. package/scss/components/BigNumbers/_index-with-carbon.scss +9 -0
  99. package/scss/components/BigNumbers/_index.scss +8 -0
  100. package/scss/components/FullPageError/_full-page-error.scss +2 -2
  101. package/scss/components/SidePanel/_side-panel.scss +1 -1
  102. package/scss/components/StringFormatter/_carbon-imports.scss +10 -0
  103. package/scss/components/StringFormatter/_index-with-carbon.scss +9 -0
  104. package/scss/components/StringFormatter/_index.scss +8 -0
  105. package/scss/components/StringFormatter/_string-formatter.scss +97 -0
  106. package/scss/components/Tearsheet/_tearsheet.scss +34 -2
  107. package/scss/components/UserAvatar/_user-avatar.scss +40 -0
  108. package/scss/components/_index-with-carbon.scss +2 -0
  109. package/scss/components/_index.scss +2 -0
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Copyright IBM Corp. 2020, 2024
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ Object.defineProperty(exports, '__esModule', { value: true });
11
+
12
+ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
13
+ var React = require('react');
14
+ var index$1 = require('../../node_modules/prop-types/index.js');
15
+ var index = require('../../node_modules/classnames/index.js');
16
+ var devtools = require('../../global/js/utils/devtools.js');
17
+ var settings = require('../../settings.js');
18
+ var react = require('@carbon/react');
19
+ var enums = require('./utils/enums.js');
20
+
21
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
22
+
23
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
24
+
25
+ var _excluded = ["className", "lines", "tooltipDirection", "truncate", "width", "value"];
26
+ var blockClass = "".concat(settings.pkg.prefix, "--string-formatter");
27
+ var componentName = 'StringFormatter';
28
+ var defaults = {
29
+ lines: 1,
30
+ tooltipDirection: enums.StringFormatterAlignment.BOTTOM_LEFT,
31
+ truncate: false,
32
+ width: null
33
+ };
34
+
35
+ /**
36
+ * StringFormatter allows for truncating text while displaying a tooltip
37
+ * overlay on hover or focus with the entirety of the provided copy.
38
+ */
39
+ exports.StringFormatter = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
40
+ var className = _ref.className,
41
+ _ref$lines = _ref.lines,
42
+ lines = _ref$lines === void 0 ? defaults.lines : _ref$lines,
43
+ _ref$tooltipDirection = _ref.tooltipDirection,
44
+ tooltipDirection = _ref$tooltipDirection === void 0 ? defaults.tooltipDirection : _ref$tooltipDirection,
45
+ _ref$truncate = _ref.truncate,
46
+ truncate = _ref$truncate === void 0 ? defaults.truncate : _ref$truncate,
47
+ _ref$width = _ref.width,
48
+ width = _ref$width === void 0 ? defaults.width : _ref$width,
49
+ value = _ref.value,
50
+ rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
51
+ var stringFormatterContent = /*#__PURE__*/React__default["default"].createElement("span", {
52
+ className: index["default"]("".concat(blockClass, "--content"), _rollupPluginBabelHelpers.defineProperty({}, "".concat(blockClass, "--truncate"), truncate)),
53
+ style: {
54
+ maxWidth: width,
55
+ WebkitLineClamp: lines
56
+ }
57
+ }, value);
58
+ return /*#__PURE__*/React__default["default"].createElement("span", _rollupPluginBabelHelpers["extends"]({}, rest, {
59
+ className: index["default"](blockClass, className),
60
+ ref: ref
61
+ }, devtools.getDevtoolsProps(componentName)), truncate ? /*#__PURE__*/React__default["default"].createElement(react.DefinitionTooltip, {
62
+ className: "".concat(blockClass, "__tooltip"),
63
+ align: tooltipDirection,
64
+ definition: value,
65
+ openOnHover: true
66
+ }, stringFormatterContent) : stringFormatterContent);
67
+ });
68
+ exports.StringFormatter = settings.pkg.checkComponentEnabled(exports.StringFormatter, componentName);
69
+ exports.StringFormatter.displayName = componentName;
70
+ exports.StringFormatter.propTypes = {
71
+ /**
72
+ * Provide an optional class to be applied to the containing node.
73
+ */
74
+ className: index$1["default"].string,
75
+ /** Number of lines to clamp value. */
76
+ lines: index$1["default"].number,
77
+ /** Specify the direction of the tooltip. Can be either top or bottom. */
78
+ tooltipDirection: index$1["default"].oneOf(Object.values(enums.StringFormatterAlignment)),
79
+ /** Whether or not the value should be truncated. */
80
+ truncate: index$1["default"].bool,
81
+ /** Value to format. */
82
+ value: index$1["default"].string.isRequired,
83
+ /** Maximum width of value which should include */
84
+ width: index$1["default"].string
85
+ };
@@ -0,0 +1 @@
1
+ export { StringFormatter } from "./StringFormatter";
@@ -0,0 +1,14 @@
1
+ export namespace StringFormatterAlignment {
2
+ let TOP: string;
3
+ let TOP_LEFT: string;
4
+ let TOP_RIGHT: string;
5
+ let BOTTOM: string;
6
+ let BOTTOM_LEFT: string;
7
+ let BOTTOM_RIGHT: string;
8
+ let LEFT: string;
9
+ let LEFT_BOTTOM: string;
10
+ let LEFT_TOP: string;
11
+ let RIGHT: string;
12
+ let RIGHT_BOTTOM: string;
13
+ let RIGHT_TOP: string;
14
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Copyright IBM Corp. 2020, 2024
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ Object.defineProperty(exports, '__esModule', { value: true });
11
+
12
+ var StringFormatterAlignment = {
13
+ TOP: 'top',
14
+ TOP_LEFT: 'top-left',
15
+ TOP_RIGHT: 'top-right',
16
+ BOTTOM: 'bottom',
17
+ BOTTOM_LEFT: 'bottom-left',
18
+ BOTTOM_RIGHT: 'bottom-right',
19
+ LEFT: 'left',
20
+ LEFT_BOTTOM: 'left-bottom',
21
+ LEFT_TOP: 'left-top',
22
+ RIGHT: 'right',
23
+ RIGHT_BOTTOM: 'right-bottom',
24
+ RIGHT_TOP: 'right-top'
25
+ };
26
+
27
+ exports.StringFormatterAlignment = StringFormatterAlignment;
@@ -27,7 +27,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
27
27
 
28
28
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
29
29
 
30
- var _excluded = ["actions", "ariaLabel", "children", "className", "closeIconDescription", "description", "hasCloseIcon", "headerActions", "influencer", "influencerPosition", "influencerWidth", "label", "navigation", "onClose", "open", "selectorPrimaryFocus", "size", "portalTarget", "title", "verticalPosition"];
30
+ var _excluded = ["actions", "ariaLabel", "children", "className", "closeIconDescription", "description", "hasCloseIcon", "headerActions", "influencer", "influencerPosition", "influencerWidth", "label", "navigation", "onClose", "open", "portalTarget", "selectorPrimaryFocus", "size", "slug", "title", "verticalPosition"];
31
31
 
32
32
  // The block part of our conventional BEM class names (bc__E--M).
33
33
  var bc = "".concat(settings.pkg.prefix, "--tearsheet");
@@ -79,9 +79,10 @@ var TearsheetShell = /*#__PURE__*/React__default["default"].forwardRef(function
79
79
  navigation = _ref.navigation,
80
80
  onClose = _ref.onClose,
81
81
  open = _ref.open,
82
+ portalTargetIn = _ref.portalTarget,
82
83
  selectorPrimaryFocus = _ref.selectorPrimaryFocus,
83
84
  size = _ref.size,
84
- portalTargetIn = _ref.portalTarget,
85
+ slug = _ref.slug,
85
86
  title = _ref.title,
86
87
  verticalPosition = _ref.verticalPosition,
87
88
  rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
@@ -198,9 +199,10 @@ var TearsheetShell = /*#__PURE__*/React__default["default"].forwardRef(function
198
199
  var includeActions = actions && (actions === null || actions === void 0 ? void 0 : actions.length) > 0;
199
200
  return renderPortalUse( /*#__PURE__*/React__default["default"].createElement(react.ComposedModal, _rollupPluginBabelHelpers["extends"]({}, rest, {
200
201
  "aria-label": ariaLabel || getNodeTextContent.getNodeTextContent(title),
201
- className: index["default"](bc, className, _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "".concat(bc, "--stacked-").concat(position, "-of-").concat(depth),
202
+ className: index["default"](bc, className, _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "".concat(bc, "--stacked-").concat(position, "-of-").concat(depth),
202
203
  // Don't apply this on the initial open of a single tearsheet.
203
- depth > 1 || depth === 1 && prevDepth.current > 1), "".concat(bc, "--wide"), wide), "".concat(bc, "--narrow"), !wide)),
204
+ depth > 1 || depth === 1 && prevDepth.current > 1), "".concat(bc, "--wide"), wide), "".concat(bc, "--narrow"), !wide), "".concat(bc, "--has-slug"), slug), "".concat(bc, "--has-close"), effectiveHasCloseIcon)),
205
+ slug: slug,
204
206
  style: _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "--".concat(bc, "--stacking-scale-factor-single"), (width - 32) / width), "--".concat(bc, "--stacking-scale-factor-double"), (width - 64) / width),
205
207
  containerClassName: index["default"]("".concat(bc, "__container"), _rollupPluginBabelHelpers.defineProperty({}, "".concat(bc, "__container--lower"), verticalPosition === 'lower')),
206
208
  onClose: onClose,
@@ -402,6 +404,10 @@ TearsheetShell.propTypes = _rollupPluginBabelHelpers.objectSpread2({
402
404
  * Specifies the width of the tearsheet, 'narrow' or 'wide'.
403
405
  */
404
406
  size: index$1["default"].oneOf(['narrow', 'wide']).isRequired,
407
+ /**
408
+ * **Experimental:** Provide a `Slug` component to be rendered inside the `SidePanel` component
409
+ */
410
+ slug: index$1["default"].node,
405
411
  /**
406
412
  * The main title of the tearsheet, displayed in the header area.
407
413
  */
@@ -15,16 +15,15 @@ var index = require('../../node_modules/prop-types/index.js');
15
15
  var index$1 = require('../../node_modules/classnames/index.js');
16
16
  var devtools = require('../../global/js/utils/devtools.js');
17
17
  var settings = require('../../settings.js');
18
- var icons = require('@carbon/react/icons');
19
18
  var react = require('@carbon/react');
19
+ var icons = require('@carbon/react/icons');
20
20
  var TooltipTrigger = require('../TooltipTrigger/TooltipTrigger.js');
21
21
 
22
22
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
23
23
 
24
24
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
25
25
 
26
- var _excluded = ["backgroundColor", "className", "renderIcon", "tooltipText", "tooltipAlignment"];
27
- var _User, _User2, _Group;
26
+ var _excluded = ["backgroundColor", "className", "name", "renderIcon", "size", "tooltipText", "tooltipAlignment"];
28
27
  // Carbon and package components we use.
29
28
  /* TODO: @import(s) of carbon components and other package components. */
30
29
 
@@ -53,54 +52,60 @@ var componentName = 'UserAvatar';
53
52
  */
54
53
 
55
54
  var defaults = {
56
- renderIcon: function renderIcon() {
57
- return _User || (_User = /*#__PURE__*/React__default["default"].createElement(icons.User, {
58
- size: 32
59
- }));
60
- },
61
- tooltipAlignment: 'bottom',
62
- tooltipText: 'Thomas J. Watson'
55
+ size: 'md',
56
+ tooltipAlignment: 'bottom'
63
57
  };
64
58
  exports.UserAvatar = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
65
- var _SetItem;
66
59
  var backgroundColor = _ref.backgroundColor,
67
60
  className = _ref.className,
68
- _ref$renderIcon = _ref.renderIcon,
69
- renderIcon = _ref$renderIcon === void 0 ? defaults.renderIcon : _ref$renderIcon,
70
- _ref$tooltipText = _ref.tooltipText,
71
- tooltipText = _ref$tooltipText === void 0 ? defaults.tooltipText : _ref$tooltipText,
61
+ name = _ref.name,
62
+ RenderIcon = _ref.renderIcon,
63
+ _ref$size = _ref.size,
64
+ size = _ref$size === void 0 ? defaults.size : _ref$size,
65
+ tooltipText = _ref.tooltipText,
72
66
  _ref$tooltipAlignment = _ref.tooltipAlignment,
73
67
  tooltipAlignment = _ref$tooltipAlignment === void 0 ? defaults.tooltipAlignment : _ref$tooltipAlignment,
74
68
  rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
75
69
  var carbonPrefix = react.usePrefix();
76
- var icons$1 = {
77
- user: {
78
- md: _User2 || (_User2 = /*#__PURE__*/React__default["default"].createElement(icons.User, {
79
- size: 32
80
- }))
81
- },
82
- group: {
83
- md: _Group || (_Group = /*#__PURE__*/React__default["default"].createElement(icons.Group, {
84
- size: 32
85
- }))
70
+ var iconSize = {
71
+ sm: 16,
72
+ md: 20,
73
+ lg: 24,
74
+ xl: 32
75
+ };
76
+ var formatInitials = function formatInitials() {
77
+ var _ref2;
78
+ var parts = name.split(' ');
79
+ var firstChar = parts[0].charAt(0).toUpperCase();
80
+ var secondChar = parts[0].charAt(1).toUpperCase();
81
+ if (parts.length === 1) {
82
+ return firstChar + secondChar;
86
83
  }
84
+ var lastChar = parts[parts.length - 1].charAt(0).toUpperCase();
85
+ var initials = [firstChar];
86
+ if (lastChar) {
87
+ initials.push(lastChar);
88
+ }
89
+ return (_ref2 = '').concat.apply(_ref2, initials);
87
90
  };
88
- var getItem = function getItem(renderIcon) {
89
- if (renderIcon === icons.User) {
90
- return icons$1.user['md'];
91
- } else if (renderIcon === icons.Group) {
92
- return icons$1.group['md'];
93
- } else {
94
- return renderIcon;
91
+ var getItem = function getItem() {
92
+ var iconProps = {
93
+ size: iconSize[size]
94
+ };
95
+ if (RenderIcon) {
96
+ return /*#__PURE__*/React__default["default"].createElement(RenderIcon, iconProps);
97
+ }
98
+ if (name) {
99
+ return formatInitials();
95
100
  }
101
+ return /*#__PURE__*/React__default["default"].createElement(icons.User, iconProps);
96
102
  };
97
- var SetItem = getItem(renderIcon);
98
- var renderUserAvatar = function renderUserAvatar() {
103
+ var Avatar = function Avatar() {
99
104
  return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({}, rest, {
100
105
  className: index$1["default"](blockClass,
101
106
  // Apply the block class to the main HTML element
102
107
  className, // Apply any supplied class names to the main HTML element.
103
- "".concat(blockClass, "--").concat(backgroundColor),
108
+ "".concat(blockClass, "--").concat(backgroundColor), "".concat(blockClass, "--").concat(size),
104
109
  // example: `${blockClass}__template-string-class-${kind}-n-${size}`,
105
110
  {
106
111
  // switched classes dependant on props or state
@@ -108,13 +113,16 @@ exports.UserAvatar = /*#__PURE__*/React__default["default"].forwardRef(function
108
113
  }),
109
114
  ref: ref,
110
115
  role: "img"
111
- }, devtools.getDevtoolsProps(componentName)), _SetItem || (_SetItem = /*#__PURE__*/React__default["default"].createElement(SetItem, null)));
116
+ }, devtools.getDevtoolsProps(componentName)), getItem());
112
117
  };
113
- return SetItem && (tooltipText ? /*#__PURE__*/React__default["default"].createElement(react.Tooltip, {
114
- align: tooltipAlignment,
115
- label: tooltipText,
116
- className: "".concat(blockClass, "__tooltip ").concat(carbonPrefix, "--icon-tooltip")
117
- }, /*#__PURE__*/React__default["default"].createElement(TooltipTrigger.TooltipTrigger, null, renderUserAvatar())) : renderUserAvatar());
118
+ if (tooltipText) {
119
+ return /*#__PURE__*/React__default["default"].createElement(react.Tooltip, {
120
+ align: tooltipAlignment,
121
+ label: tooltipText,
122
+ className: "".concat(blockClass, "__tooltip ").concat(carbonPrefix, "--icon-tooltip")
123
+ }, /*#__PURE__*/React__default["default"].createElement(TooltipTrigger.TooltipTrigger, null, /*#__PURE__*/React__default["default"].createElement(Avatar, null)));
124
+ }
125
+ return /*#__PURE__*/React__default["default"].createElement(Avatar, null);
118
126
  });
119
127
 
120
128
  // Return a placeholder if not released and not enabled by feature flag
@@ -136,10 +144,18 @@ exports.UserAvatar.propTypes = {
136
144
  * Provide an optional class to be applied to the containing node.
137
145
  */
138
146
  className: index["default"].string,
147
+ /**
148
+ * When passing the name prop, either send the initials to be used or the user's full name. The first two capital letters of the user's name will be used as the name.
149
+ */
150
+ name: index["default"].string,
139
151
  /**
140
152
  * Provide a custom icon to use if you need to use an icon other than the default one
141
153
  */
142
- renderIcon: index["default"].func,
154
+ renderIcon: index["default"].oneOfType([index["default"].func, index["default"].object]),
155
+ /**
156
+ * Set the size of the avatar circle
157
+ */
158
+ size: index["default"].oneOf(['xl', 'lg', 'md', 'sm']),
143
159
  /**
144
160
  * Specify how the trigger should align with the tooltip
145
161
  */
@@ -34,6 +34,7 @@ export { CoachmarkOverlayElement } from "./CoachmarkOverlayElement";
34
34
  export { CoachmarkOverlayElements } from "./CoachmarkOverlayElements";
35
35
  export { CoachmarkStack } from "./CoachmarkStack";
36
36
  export { NonLinearReading } from "./NonLinearReading";
37
+ export { BigNumbers } from "./BigNumbers";
37
38
  export { TruncatedList } from "./TruncatedList";
38
39
  export { InterstitialScreen } from "./InterstitialScreen";
39
40
  export { InterstitialScreenView } from "./InterstitialScreenView";
@@ -41,6 +42,7 @@ export { InterstitialScreenViewModule } from "./InterstitialScreenViewModule";
41
42
  export { DelimitedList } from "./DelimitedList";
42
43
  export { FullPageError } from "./FullPageError";
43
44
  export { SearchBar } from "./SearchBar";
45
+ export { StringFormatter } from "./StringFormatter";
44
46
  export { UserAvatar } from "./UserAvatar";
45
47
  export { ComboButton, ComboButtonItem } from "./ComboButton";
46
48
  export { CreateFullPage, CreateFullPageStep } from "./CreateFullPage";
@@ -10,4 +10,5 @@ export { useValidCreateStepCount } from "./useValidCreateStepCount";
10
10
  export { useControllableState } from "./useControllableState";
11
11
  export { usePrefix } from "./usePrefix";
12
12
  export { useFocus } from "./useFocus";
13
+ export { useIsomorphicEffect } from "./useIsomorphicEffect";
13
14
  export { useNearestScroll, useWindowScroll } from "./useWindowScroll";
@@ -0,0 +1,2 @@
1
+ export const useIsomorphicEffect: typeof useEffect;
2
+ import { useEffect } from 'react';
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Copyright IBM Corp. 2020, 2024
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ Object.defineProperty(exports, '__esModule', { value: true });
11
+
12
+ var React = require('react');
13
+
14
+ // Originally from `@carbon/react`, https://github.com/carbon-design-system/carbon/blob/main/packages/react/src/internal/useIsomorphicEffect.js
15
+ // useLayoutEffect on the client, useEffect on the server
16
+ var useIsomorphicEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;
17
+
18
+ exports.useIsomorphicEffect = useIsomorphicEffect;
@@ -75,9 +75,11 @@ declare namespace defaults {
75
75
  let EditTearsheetNarrow: boolean;
76
76
  let EditFullPage: boolean;
77
77
  let EditUpdateCards: boolean;
78
+ let BigNumbers: boolean;
78
79
  let TruncatedList: boolean;
79
80
  let DelimitedList: boolean;
80
81
  let FullPageError: boolean;
82
+ let StringFormatter: boolean;
81
83
  let Coachmark: boolean;
82
84
  let CoachmarkBeacon: boolean;
83
85
  let CoachmarkButton: boolean;
@@ -78,9 +78,11 @@ var defaults = {
78
78
  EditTearsheetNarrow: false,
79
79
  EditFullPage: false,
80
80
  EditUpdateCards: false,
81
+ BigNumbers: false,
81
82
  TruncatedList: false,
82
83
  DelimitedList: false,
83
84
  FullPageError: false,
85
+ StringFormatter: false,
84
86
  /* new component flags here - comment used by generate CLI */
85
87
 
86
88
  // Novice to pro components not yet reviewed and released:
package/lib/index.js CHANGED
@@ -103,6 +103,7 @@ var InlineTip = require('./components/InlineTip/InlineTip.js');
103
103
  var InlineTipButton = require('./components/InlineTip/InlineTipButton.js');
104
104
  var InlineTipLink = require('./components/InlineTip/InlineTipLink.js');
105
105
  var NonLinearReading = require('./components/NonLinearReading/NonLinearReading.js');
106
+ var BigNumbers = require('./components/BigNumbers/BigNumbers.js');
106
107
  var TruncatedList = require('./components/TruncatedList/TruncatedList.js');
107
108
  var InterstitialScreen = require('./components/InterstitialScreen/InterstitialScreen.js');
108
109
  var InterstitialScreenView = require('./components/InterstitialScreenView/InterstitialScreenView.js');
@@ -110,6 +111,7 @@ var InterstitialScreenViewModule = require('./components/InterstitialScreenViewM
110
111
  var DelimitedList = require('./components/DelimitedList/DelimitedList.js');
111
112
  var FullPageError = require('./components/FullPageError/FullPageError.js');
112
113
  var SearchBar = require('./components/SearchBar/SearchBar.js');
114
+ var StringFormatter = require('./components/StringFormatter/StringFormatter.js');
113
115
  var UserAvatar = require('./components/UserAvatar/UserAvatar.js');
114
116
 
115
117
 
@@ -422,6 +424,10 @@ Object.defineProperty(exports, 'NonLinearReading', {
422
424
  enumerable: true,
423
425
  get: function () { return NonLinearReading.NonLinearReading; }
424
426
  });
427
+ Object.defineProperty(exports, 'BigNumbers', {
428
+ enumerable: true,
429
+ get: function () { return BigNumbers.BigNumbers; }
430
+ });
425
431
  Object.defineProperty(exports, 'TruncatedList', {
426
432
  enumerable: true,
427
433
  get: function () { return TruncatedList.TruncatedList; }
@@ -450,6 +456,10 @@ Object.defineProperty(exports, 'SearchBar', {
450
456
  enumerable: true,
451
457
  get: function () { return SearchBar.SearchBar; }
452
458
  });
459
+ Object.defineProperty(exports, 'StringFormatter', {
460
+ enumerable: true,
461
+ get: function () { return StringFormatter.StringFormatter; }
462
+ });
453
463
  Object.defineProperty(exports, 'UserAvatar', {
454
464
  enumerable: true,
455
465
  get: function () { return UserAvatar.UserAvatar; }
package/lib/settings.d.ts CHANGED
@@ -61,9 +61,11 @@ export const pkg: {
61
61
  EditTearsheetNarrow: boolean;
62
62
  EditFullPage: boolean;
63
63
  EditUpdateCards: boolean;
64
+ BigNumbers: boolean;
64
65
  TruncatedList: boolean;
65
66
  DelimitedList: boolean;
66
67
  FullPageError: boolean;
68
+ StringFormatter: boolean;
67
69
  Coachmark: boolean;
68
70
  CoachmarkBeacon: boolean;
69
71
  CoachmarkButton: boolean;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@carbon/ibm-products",
3
3
  "description": "Carbon for IBM Products",
4
- "version": "2.26.0",
4
+ "version": "2.27.0",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -75,7 +75,7 @@
75
75
  "fs-extra": "^11.2.0",
76
76
  "glob": "^10.3.10",
77
77
  "jest": "^29.7.0",
78
- "jest-config-ibm-cloud-cognitive": "^1.1.3",
78
+ "jest-config-ibm-cloud-cognitive": "^1.1.4",
79
79
  "jest-environment-jsdom": "^29.7.0",
80
80
  "namor": "^1.1.2",
81
81
  "npm-check-updates": "^16.14.12",
@@ -84,12 +84,12 @@
84
84
  "rollup": "^2.79.1",
85
85
  "rollup-plugin-strip-banner": "^3.0.0",
86
86
  "sass": "^1.70.0",
87
- "typescript-config-carbon": "^0.2.0",
87
+ "typescript-config-carbon": "^0.2.1",
88
88
  "yargs": "^17.7.2"
89
89
  },
90
90
  "dependencies": {
91
91
  "@babel/runtime": "^7.23.9",
92
- "@carbon/ibm-products-styles": "^2.25.0",
92
+ "@carbon/ibm-products-styles": "^2.26.0",
93
93
  "@carbon/telemetry": "^0.1.0",
94
94
  "@dnd-kit/core": "^6.0.8",
95
95
  "@dnd-kit/sortable": "^8.0.0",
@@ -106,11 +106,11 @@
106
106
  "@carbon/grid": "^11.21.1",
107
107
  "@carbon/layout": "^11.20.1",
108
108
  "@carbon/motion": "^11.16.1",
109
- "@carbon/react": "^1.49.0",
110
- "@carbon/themes": "^11.30.0",
109
+ "@carbon/react": "^1.50.0",
110
+ "@carbon/themes": "^11.31.0",
111
111
  "@carbon/type": "^11.25.1",
112
112
  "react": "^16.8.6 || ^17.0.1 || ^18.2.0",
113
113
  "react-dom": "^16.8.6 || ^17.0.1 || ^18.2.0"
114
114
  },
115
- "gitHead": "ee89db345a5a5004e6d18e0a36df85ea8e7c9f8f"
115
+ "gitHead": "c42c0c622d6ad2a1dfc2e2122d0dd53337780243"
116
116
  }
@@ -0,0 +1,151 @@
1
+ //
2
+ // Copyright IBM Corp. 2024, 2024
3
+ //
4
+ // This source code is licensed under the Apache-2.0 license found in the
5
+ // LICENSE file in the root directory of this source tree.
6
+ //
7
+
8
+ // Standard imports.
9
+ @use '../../global/styles/project-settings' as c4p-settings;
10
+ @use '@carbon/styles/scss/theme' as *;
11
+ @use '@carbon/styles/scss/type' as *;
12
+ @use '../../global/styles/mixins';
13
+ @use '@carbon/react/scss/spacing' as *;
14
+ @use '@carbon/styles/scss/utilities';
15
+
16
+ // Other Carbon settings if needed
17
+ // TODO: @use '@carbon/styles/scss/grid';
18
+ // or
19
+ // TODO: @use '@carbon/react/scss/grid';
20
+ // BigNumbers uses the following Carbon for IBM Products components:
21
+ // TODO: @use(s) of IBM Products component styles used by BigNumbers
22
+ // The block part of our conventional BEM class names (blockClass__E--M).
23
+ $block-class: #{c4p-settings.$pkg-prefix}--big-numbers;
24
+ $skeleton-block-class: #{c4p-settings.$pkg-prefix}--big-numbers-skeleton;
25
+
26
+ .#{$block-class}__label {
27
+ @include type-style('label-01');
28
+
29
+ display: block;
30
+ margin: 0;
31
+ color: $text-secondary;
32
+ }
33
+
34
+ .#{$block-class}__value {
35
+ @include type-style('heading-04');
36
+
37
+ margin-bottom: 0;
38
+ }
39
+
40
+ .#{$block-class}__total {
41
+ @include type-style('body-compact-01');
42
+ }
43
+
44
+ .#{$block-class}__total,
45
+ .#{$block-class}__percentage-mark {
46
+ margin-top: auto;
47
+ margin-bottom: $spacing-02;
48
+ }
49
+
50
+ .#{$block-class}__info {
51
+ vertical-align: top;
52
+ }
53
+
54
+ .#{$block-class}__trend {
55
+ margin-top: $spacing-03;
56
+ vertical-align: top;
57
+ }
58
+
59
+ .#{$block-class}__row {
60
+ display: flex;
61
+ }
62
+
63
+ .#{$block-class}__info {
64
+ padding-left: $spacing-03;
65
+ }
66
+
67
+ .#{$block-class}__percentage {
68
+ @include type-style('heading-04');
69
+ }
70
+
71
+ .#{$block-class}__percentage-mark {
72
+ @include type-style('body-compact-01');
73
+ }
74
+
75
+ .#{$block-class}--lg .#{$block-class}__value,
76
+ .#{$block-class}--lg .#{$block-class}__percentage {
77
+ @include type-style('heading-06');
78
+ }
79
+
80
+ .#{$block-class}--lg .#{$block-class}__total,
81
+ .#{$block-class}--lg .#{$block-class}__percentage-mark {
82
+ @include type-style('heading-03');
83
+ }
84
+
85
+ .#{$block-class}--xl .#{$block-class}__label {
86
+ @include type-style('body-compact-01');
87
+ }
88
+
89
+ .#{$block-class}--xl .#{$block-class}__value,
90
+ .#{$block-class}--xl .#{$block-class}__percentage {
91
+ @include type-style('heading-07');
92
+ }
93
+
94
+ .#{$block-class}--xl .#{$block-class}__total,
95
+ .#{$block-class}--xl .#{$block-class}__percentage-mark {
96
+ @include type-style('heading-04');
97
+ }
98
+
99
+ .#{$block-class}--xl .#{$block-class}__trend {
100
+ margin-top: $spacing-04;
101
+ }
102
+
103
+ .#{$skeleton-block-class} {
104
+ width: 4rem;
105
+ }
106
+
107
+ .#{$skeleton-block-class}__label {
108
+ height: $spacing-04;
109
+ margin-top: 0;
110
+ margin-bottom: $spacing-03;
111
+ }
112
+
113
+ .#{$skeleton-block-class}__value {
114
+ /* stylelint-disable-next-line declaration-no-important */
115
+ height: $spacing-08 !important;
116
+ margin: 0;
117
+ }
118
+
119
+ .#{$skeleton-block-class}--lg {
120
+ width: 5rem;
121
+ }
122
+
123
+ .#{$skeleton-block-class}--xl {
124
+ width: 6rem;
125
+ }
126
+
127
+ .#{$skeleton-block-class}.#{$skeleton-block-class}--lg
128
+ .#{$skeleton-block-class}__label {
129
+ height: $spacing-04;
130
+ }
131
+
132
+ .#{$skeleton-block-class}.#{$skeleton-block-class}--lg
133
+ .#{$skeleton-block-class}__value {
134
+ /* stylelint-disable-next-line declaration-no-important */
135
+ height: $spacing-09 !important;
136
+ }
137
+
138
+ .#{$skeleton-block-class}.#{$skeleton-block-class}--xl
139
+ .#{$skeleton-block-class}__label {
140
+ height: $spacing-04;
141
+ }
142
+
143
+ .#{$skeleton-block-class}.#{$skeleton-block-class}--xl
144
+ .#{$skeleton-block-class}__value {
145
+ /* stylelint-disable-next-line declaration-no-important */
146
+ height: $spacing-10 !important;
147
+ }
148
+
149
+ .#{$block-class} .#{$block-class}__tooltip-trigger:focus {
150
+ outline: 1px solid $focus;
151
+ }