@carbon/ibm-products 2.43.2-canary.303 → 2.43.2-canary.305

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 (53) hide show
  1. package/css/index-full-carbon.css +57 -8
  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 +57 -8
  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 +57 -8
  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 +57 -8
  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/Card/Card.d.ts +5 -1
  18. package/es/components/Card/Card.js +9 -2
  19. package/es/components/Card/CardHeader.d.ts +12 -2
  20. package/es/components/Card/CardHeader.js +17 -9
  21. package/es/components/Datagrid/Datagrid/DatagridExpandedRow.js +2 -2
  22. package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +8 -8
  23. package/es/components/Datagrid/Datagrid/DatagridRow.js +14 -10
  24. package/es/components/Datagrid/Datagrid/addons/{Slug/DatagridSlug.d.ts → AiLabel/DatagridAiLabel.d.ts} +3 -3
  25. package/es/components/Datagrid/Datagrid/addons/AiLabel/DatagridAiLabel.js +29 -0
  26. package/es/components/Datagrid/types/index.d.ts +2 -1
  27. package/es/components/Datagrid/useDefaultStringRenderer.js +3 -3
  28. package/es/components/Datagrid/useSortableColumns.js +6 -6
  29. package/es/components/ExpressiveCard/ExpressiveCard.d.ts +5 -0
  30. package/es/components/ExpressiveCard/ExpressiveCard.js +5 -0
  31. package/es/components/ProductiveCard/ProductiveCard.d.ts +5 -0
  32. package/es/components/ProductiveCard/ProductiveCard.js +4 -0
  33. package/lib/components/Card/Card.d.ts +5 -1
  34. package/lib/components/Card/Card.js +9 -2
  35. package/lib/components/Card/CardHeader.d.ts +12 -2
  36. package/lib/components/Card/CardHeader.js +17 -9
  37. package/lib/components/Datagrid/Datagrid/DatagridExpandedRow.js +2 -2
  38. package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +8 -8
  39. package/lib/components/Datagrid/Datagrid/DatagridRow.js +14 -10
  40. package/lib/components/Datagrid/Datagrid/addons/{Slug/DatagridSlug.d.ts → AiLabel/DatagridAiLabel.d.ts} +3 -3
  41. package/lib/components/Datagrid/Datagrid/addons/AiLabel/DatagridAiLabel.js +31 -0
  42. package/lib/components/Datagrid/types/index.d.ts +2 -1
  43. package/lib/components/Datagrid/useDefaultStringRenderer.js +3 -3
  44. package/lib/components/Datagrid/useSortableColumns.js +6 -6
  45. package/lib/components/ExpressiveCard/ExpressiveCard.d.ts +5 -0
  46. package/lib/components/ExpressiveCard/ExpressiveCard.js +5 -0
  47. package/lib/components/ProductiveCard/ProductiveCard.d.ts +5 -0
  48. package/lib/components/ProductiveCard/ProductiveCard.js +4 -0
  49. package/package.json +3 -3
  50. package/scss/components/Card/_card.scss +14 -6
  51. package/scss/components/Datagrid/styles/_datagrid.scss +80 -2
  52. package/es/components/Datagrid/Datagrid/addons/Slug/DatagridSlug.js +0 -29
  53. package/lib/components/Datagrid/Datagrid/addons/Slug/DatagridSlug.js +0 -31
@@ -22,6 +22,7 @@ var defaults = {
22
22
  };
23
23
  var CardHeader = function CardHeader(_ref) {
24
24
  var actions = _ref.actions,
25
+ aiLabel = _ref.aiLabel,
25
26
  noActionIcons = _ref.noActionIcons,
26
27
  onPrimaryButtonClick = _ref.onPrimaryButtonClick,
27
28
  onSecondaryButtonClick = _ref.onSecondaryButtonClick,
@@ -49,8 +50,9 @@ var CardHeader = function CardHeader(_ref) {
49
50
  var headerClasses = cx(headerClass, _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "".concat(headerClass, "-label-only"), label && !title && !description), "".concat(headerClass, "-has-label"), !!label), "".concat(blockClass, "__title-lg"), titleSize === 'large'));
50
51
  var actionGhostButton = "".concat(blockClass, "__actions-header-ghost-button");
51
52
  var actionGhostButtonClass = cx(actionGhostButton, _rollupPluginBabelHelpers.defineProperty({}, "".concat(actionGhostButton, "--only"), noActionIcons));
52
- var hollowSlugIcon = /*#__PURE__*/React.createElement("svg", {
53
- className: "".concat(carbonPrefix, "--slug ").concat(carbonPrefix, "--slug-icon"),
53
+ var hollowAiIcon = /*#__PURE__*/React.createElement("svg", {
54
+ className: "".concat(carbonPrefix, "--slug ").concat(carbonPrefix, "--slug-icon") // NOTE: We cannot change this to ai-label until carbon changes their classnames on their end
55
+ ,
54
56
  width: "24",
55
57
  height: "24",
56
58
  viewBox: "0 0 24 24",
@@ -65,12 +67,13 @@ var CardHeader = function CardHeader(_ref) {
65
67
  d: "M13.2436 16H11.5996L10.9276 13.864H7.95164L7.29164 16H5.68364L8.49164 7.624H10.4596L13.2436 16ZM10.5436 12.508L9.46364 9.064H9.40364L8.33564 12.508H10.5436ZM17.9341 16H14.1301V14.728H15.2341V8.896H14.1301V7.624H17.9341V8.896H16.8181V14.728H17.9341V16Z",
66
68
  fill: "#161616"
67
69
  })));
68
- var normalizedSlug = null;
69
- if (slug) {
70
- if (inClickableCard || typeof slug === 'boolean') {
71
- normalizedSlug = hollowSlugIcon;
70
+ var normalizedAiLabel = null;
71
+ if (aiLabel || slug) {
72
+ if (inClickableCard || typeof aiLabel === 'boolean' || typeof slug === 'boolean') {
73
+ normalizedAiLabel = hollowAiIcon;
72
74
  } else {
73
- normalizedSlug = /*#__PURE__*/React.cloneElement(slug, {
75
+ var element = aiLabel || slug;
76
+ normalizedAiLabel = /*#__PURE__*/React.cloneElement(element, {
74
77
  size: label && title || title && titleSize === 'large' ? 'sm' : 'xs'
75
78
  });
76
79
  }
@@ -78,7 +81,7 @@ var CardHeader = function CardHeader(_ref) {
78
81
  return /*#__PURE__*/React.createElement("div", {
79
82
  className: headerClasses
80
83
  }, /*#__PURE__*/React.createElement("div", {
81
- className: cx(["".concat(headerClass, "-container"), _rollupPluginBabelHelpers.defineProperty({}, "".concat(headerClass, "-container--has-slug"), !!slug), _rollupPluginBabelHelpers.defineProperty({}, "".concat(headerClass, "-container--has-actions"), !!hasActions), _rollupPluginBabelHelpers.defineProperty({}, "".concat(headerClass, "-container--large-tile-or-label"), title && (label || titleSize === 'large'))])
84
+ className: cx(["".concat(headerClass, "-container"), _rollupPluginBabelHelpers.defineProperty({}, "".concat(headerClass, "-container--has-slug"), !!slug), _rollupPluginBabelHelpers.defineProperty({}, "".concat(headerClass, "-container--has-ai-label"), !!aiLabel), _rollupPluginBabelHelpers.defineProperty({}, "".concat(headerClass, "-container--has-actions"), !!hasActions), _rollupPluginBabelHelpers.defineProperty({}, "".concat(headerClass, "-container--large-tile-or-label"), title && (label || titleSize === 'large'))])
82
85
  }, /*#__PURE__*/React.createElement("div", {
83
86
  className: "".concat(blockClass, "__title-container")
84
87
  }, label && /*#__PURE__*/React.createElement("p", {
@@ -104,11 +107,15 @@ var CardHeader = function CardHeader(_ref) {
104
107
  onClick: onPrimaryButtonClick,
105
108
  className: actionGhostButtonClass,
106
109
  disabled: primaryButtonDisabled
107
- }, primaryButtonText)), normalizedSlug));
110
+ }, primaryButtonText)), normalizedAiLabel));
108
111
  };
109
112
  /**@ts-ignore */
110
113
  CardHeader.propTypes = {
111
114
  actions: index.default.oneOfType([index.default.array, index.default.node]),
115
+ /**
116
+ * Optional prop that is intended for any scenario where something is being generated by AI to reinforce AI transparency, accountability, and explainability at the UI level.
117
+ */
118
+ aiLabel: index.default.oneOfType([index.default.node, index.default.bool]),
112
119
  description: index.default.oneOfType([index.default.string, index.default.object, index.default.node]),
113
120
  hasActions: index.default.bool,
114
121
  /**
@@ -132,6 +139,7 @@ CardHeader.propTypes = {
132
139
  /**
133
140
  * **Experimental:** For all cases a `Slug` component can be provided.
134
141
  * Clickable tiles only accept a boolean value of true and display a hollow slug.
142
+ * @deprecated please use the `aiLabel` prop
135
143
  */
136
144
  slug: index.default.oneOfType([index.default.node, index.default.bool]),
137
145
  title: index.default.oneOfType([index.default.string, index.default.object, index.default.node]),
@@ -20,7 +20,7 @@ var blockClass = "".concat(settings.pkg.prefix, "--datagrid");
20
20
  // eslint-disable-next-line react/prop-types
21
21
  var DatagridExpandedRow = function DatagridExpandedRow(ExpandedRowContentComponent) {
22
22
  return function (datagridState) {
23
- var _row$original;
23
+ var _row$original, _row$original2;
24
24
  var row = datagridState.row;
25
25
  var expandedContentHeight = row.expandedContentHeight;
26
26
  var toggleParentHoverClass = function toggleParentHoverClass(event) {
@@ -40,7 +40,7 @@ var DatagridExpandedRow = function DatagridExpandedRow(ExpandedRowContentCompone
40
40
  var key = datagridState.key,
41
41
  _state = _rollupPluginBabelHelpers.objectWithoutProperties(datagridState, _excluded);
42
42
  return /*#__PURE__*/React.createElement("tr", {
43
- className: cx("".concat(blockClass, "__expanded-row"), _rollupPluginBabelHelpers.defineProperty({}, "".concat(blockClass, "__slug--row"), /*#__PURE__*/React.isValidElement(row === null || row === void 0 || (_row$original = row.original) === null || _row$original === void 0 ? void 0 : _row$original.slug))),
43
+ className: cx("".concat(blockClass, "__expanded-row"), _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "".concat(blockClass, "__slug--row"), /*#__PURE__*/React.isValidElement(row === null || row === void 0 || (_row$original = row.original) === null || _row$original === void 0 ? void 0 : _row$original.slug)), "".concat(blockClass, "__ai-label--row"), /*#__PURE__*/React.isValidElement(row === null || row === void 0 || (_row$original2 = row.original) === null || _row$original2 === void 0 ? void 0 : _row$original2.aiLabel))),
44
44
  onMouseEnter: function onMouseEnter(event) {
45
45
  return toggleParentHoverClass(event, 'enter');
46
46
  },
@@ -18,7 +18,7 @@ var commonColumnIds = require('../common-column-ids.js');
18
18
  var settings = require('../../../settings.js');
19
19
  var stateReducer = require('./addons/stateReducer.js');
20
20
  var getNodeTextContent = require('../../../global/js/utils/getNodeTextContent.js');
21
- var DatagridSlug = require('./addons/Slug/DatagridSlug.js');
21
+ var DatagridAiLabel = require('./addons/AiLabel/DatagridAiLabel.js');
22
22
  var useInitialColumnSort = require('../useInitialColumnSort.js');
23
23
 
24
24
  var _th;
@@ -144,17 +144,17 @@ var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
144
144
  }),
145
145
  headerGroupClassName = _headerGroup$getHeade.className,
146
146
  headerGroupProps = _rollupPluginBabelHelpers.objectWithoutProperties(_headerGroup$getHeade, _excluded);
147
- var renderSlug = function renderSlug(slug) {
147
+ var renderAILabel = function renderAILabel(aiLabel) {
148
148
  if (isTableSortable) {
149
149
  return;
150
150
  }
151
- return /*#__PURE__*/React.createElement(DatagridSlug.DatagridSlug, {
152
- slug: slug
151
+ return /*#__PURE__*/React.createElement(DatagridAiLabel.DatagridAILabel, {
152
+ aiLabel: aiLabel
153
153
  });
154
154
  };
155
155
  var foundAIRow = rows.some(function (r) {
156
- var _r$original;
157
- return /*#__PURE__*/React.isValidElement(r === null || r === void 0 || (_r$original = r.original) === null || _r$original === void 0 ? void 0 : _r$original.slug);
156
+ var _r$original, _r$original2;
157
+ return /*#__PURE__*/React.isValidElement(r === null || r === void 0 || (_r$original = r.original) === null || _r$original === void 0 ? void 0 : _r$original.aiLabel) || /*#__PURE__*/React.isValidElement(r === null || r === void 0 || (_r$original2 = r.original) === null || _r$original2 === void 0 ? void 0 : _r$original2.slug);
158
158
  });
159
159
  var key = headerGroupProps.key,
160
160
  rowProps = _rollupPluginBabelHelpers.objectWithoutProperties(headerGroupProps, _excluded2);
@@ -207,10 +207,10 @@ var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
207
207
  });
208
208
  }
209
209
  return /*#__PURE__*/React.createElement(react.TableHeader, _rollupPluginBabelHelpers.extends({}, headerProps, {
210
- className: cx(header === null || header === void 0 ? void 0 : header.className, _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "".concat(blockClass, "__resizableColumn"), resizerProps), "".concat(blockClass, "__isResizing"), header === null || header === void 0 ? void 0 : header.isResizing), "".concat(blockClass, "__sortableColumn"), datagridState.isTableSortable && header.id !== 'spacer'), "".concat(blockClass, "__isSorted"), header === null || header === void 0 ? void 0 : header.isSorted), "".concat(blockClass, "__header-actions-column"), header === null || header === void 0 ? void 0 : header.isAction), "".concat(blockClass, "__with-slug"), header.slug && /*#__PURE__*/React.isValidElement(header === null || header === void 0 ? void 0 : header.slug)), headerProps.className),
210
+ className: cx(header === null || header === void 0 ? void 0 : header.className, _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "".concat(blockClass, "__resizableColumn"), resizerProps), "".concat(blockClass, "__isResizing"), header === null || header === void 0 ? void 0 : header.isResizing), "".concat(blockClass, "__sortableColumn"), datagridState.isTableSortable && header.id !== 'spacer'), "".concat(blockClass, "__isSorted"), header === null || header === void 0 ? void 0 : header.isSorted), "".concat(blockClass, "__header-actions-column"), header === null || header === void 0 ? void 0 : header.isAction), "".concat(blockClass, "__with-slug"), header.slug && /*#__PURE__*/React.isValidElement(header === null || header === void 0 ? void 0 : header.slug)), "".concat(blockClass, "__with-ai-label"), header.aiLabel && /*#__PURE__*/React.isValidElement(header === null || header === void 0 ? void 0 : header.aiLabel)), headerProps.className),
211
211
  key: header.id,
212
212
  "aria-hidden": header.id === 'spacer' && 'true'
213
- }, getAccessibilityProps(header)), header.render('Header'), renderSlug(header.slug), resizerProps && !header.isAction && /*#__PURE__*/React.createElement(ResizeHeader, {
213
+ }, getAccessibilityProps(header)), header.render('Header'), renderAILabel(header.aiLabel || header.slug), resizerProps && !header.isAction && /*#__PURE__*/React.createElement(ResizeHeader, {
214
214
  resizerProps: resizerProps,
215
215
  header: header,
216
216
  handleOnMouseDownResize: handleOnMouseDownResize,
@@ -16,7 +16,7 @@ var layout = require('@carbon/layout');
16
16
  var commonColumnIds = require('../common-column-ids.js');
17
17
  var cx = require('classnames');
18
18
  var settings = require('../../../settings.js');
19
- var DatagridSlug = require('./addons/Slug/DatagridSlug.js');
19
+ var DatagridAiLabel = require('./addons/AiLabel/DatagridAiLabel.js');
20
20
 
21
21
  var _SkeletonText;
22
22
  var _excluded = ["className"],
@@ -32,7 +32,7 @@ var rowHeights = {
32
32
 
33
33
  // eslint-disable-next-line react/prop-types
34
34
  var DatagridRow = function DatagridRow(datagridState) {
35
- var _row$original, _row$original2, _row$original3;
35
+ var _row$original, _row$original2, _row$original3, _row$original4, _row$original5, _row$original6;
36
36
  var row = datagridState.row,
37
37
  rows = datagridState.rows,
38
38
  rowSize = datagridState.rowSize,
@@ -119,10 +119,10 @@ var DatagridRow = function DatagridRow(datagridState) {
119
119
  className = _row$getRowProps.className,
120
120
  rowProps = _rollupPluginBabelHelpers.objectWithoutProperties(_row$getRowProps, _excluded);
121
121
  var foundAIRow = rows.some(function (r) {
122
- var _r$original;
123
- return /*#__PURE__*/React.isValidElement(r === null || r === void 0 || (_r$original = r.original) === null || _r$original === void 0 ? void 0 : _r$original.slug);
122
+ var _r$original, _r$original2;
123
+ return /*#__PURE__*/React.isValidElement(r === null || r === void 0 || (_r$original = r.original) === null || _r$original === void 0 ? void 0 : _r$original.aiLabel) || /*#__PURE__*/React.isValidElement(r === null || r === void 0 || (_r$original2 = r.original) === null || _r$original2 === void 0 ? void 0 : _r$original2.slug);
124
124
  });
125
- var rowClassNames = cx("".concat(blockClass, "__carbon-row"), _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded), "".concat(blockClass, "__carbon-row-expandable"), row.canExpand), "".concat(blockClass, "__carbon-row-expandable--async"), getAsyncSubRows && row.depth > 0), "".concat(settings.carbon.prefix, "--data-table--selected"), row.isSelected), "".concat(blockClass, "__slug--row"), /*#__PURE__*/React.isValidElement(row === null || row === void 0 || (_row$original = row.original) === null || _row$original === void 0 ? void 0 : _row$original.slug)));
125
+ var rowClassNames = cx("".concat(blockClass, "__carbon-row"), _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded), "".concat(blockClass, "__carbon-row-expandable"), row.canExpand), "".concat(blockClass, "__carbon-row-expandable--async"), getAsyncSubRows && row.depth > 0), "".concat(settings.carbon.prefix, "--data-table--selected"), row.isSelected), "".concat(blockClass, "__slug--row"), /*#__PURE__*/React.isValidElement(row === null || row === void 0 || (_row$original = row.original) === null || _row$original === void 0 ? void 0 : _row$original.slug)), "".concat(blockClass, "__ai-label--row"), /*#__PURE__*/React.isValidElement(row === null || row === void 0 || (_row$original2 = row.original) === null || _row$original2 === void 0 ? void 0 : _row$original2.aiLabel)));
126
126
  var withActionsColumn = headers ? !!headers.filter(function (header) {
127
127
  return header.isAction;
128
128
  }).length : false;
@@ -137,14 +137,18 @@ var DatagridRow = function DatagridRow(datagridState) {
137
137
  onFocus: hoverHandler,
138
138
  onBlur: focusRemover,
139
139
  onKeyUp: handleOnKeyUp
140
- }, setAdditionalRowProps()), foundAIRow ? row !== null && row !== void 0 && (_row$original2 = row.original) !== null && _row$original2 !== void 0 && _row$original2.slug ? /*#__PURE__*/React.createElement("td", {
140
+ }, setAdditionalRowProps()), foundAIRow ? row !== null && row !== void 0 && (_row$original3 = row.original) !== null && _row$original3 !== void 0 && _row$original3.aiLabel ? /*#__PURE__*/React.createElement("td", {
141
+ className: cx("".concat(blockClass, "__table-row-ai-enabled"), _rollupPluginBabelHelpers.defineProperty({}, "".concat(blockClass, "__ai-label--expanded"), row.isExpanded))
142
+ }, /*#__PURE__*/React.createElement(DatagridAiLabel.DatagridAILabel, {
143
+ aiLabel: row === null || row === void 0 || (_row$original4 = row.original) === null || _row$original4 === void 0 ? void 0 : _row$original4.aiLabel
144
+ })) : row !== null && row !== void 0 && (_row$original5 = row.original) !== null && _row$original5 !== void 0 && _row$original5.slug ? /*#__PURE__*/React.createElement("td", {
141
145
  className: cx("".concat(blockClass, "__table-row-ai-enabled"), _rollupPluginBabelHelpers.defineProperty({}, "".concat(blockClass, "__slug--expanded"), row.isExpanded))
142
- }, /*#__PURE__*/React.createElement(DatagridSlug.DatagridSlug, {
143
- slug: row === null || row === void 0 || (_row$original3 = row.original) === null || _row$original3 === void 0 ? void 0 : _row$original3.slug
146
+ }, /*#__PURE__*/React.createElement(DatagridAiLabel.DatagridAILabel, {
147
+ aiLabel: row === null || row === void 0 || (_row$original6 = row.original) === null || _row$original6 === void 0 ? void 0 : _row$original6.slug
144
148
  })) : /*#__PURE__*/React.createElement("td", {
145
149
  className: "".concat(blockClass, "__table-row-ai-spacer")
146
150
  }) : null, row.cells.map(function (cell, index) {
147
- var _cell$column, _cell$column2, _associatedHeader$;
151
+ var _cell$column, _cell$column2, _associatedHeader$, _associatedHeader$2;
148
152
  var cellProps = cell.getCellProps({
149
153
  role: undefined
150
154
  });
@@ -170,7 +174,7 @@ var DatagridRow = function DatagridRow(datagridState) {
170
174
  style.flex = lastVisibleFlexStyle;
171
175
  }
172
176
  return /*#__PURE__*/React.createElement(react.TableCell, _rollupPluginBabelHelpers.extends({
173
- className: cx("".concat(blockClass, "__cell"), _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "".concat(blockClass, "__expandable-row-cell"), (row.canExpand || getAsyncSubRows) && index === 0), "".concat(blockClass, "__expandable-row-cell--is-expanded"), row.isExpanded && index === 0), "".concat(blockClass, "__slug--cell"), associatedHeader && associatedHeader.length && /*#__PURE__*/React.isValidElement((_associatedHeader$ = associatedHeader[0]) === null || _associatedHeader$ === void 0 ? void 0 : _associatedHeader$.slug)), columnClassname)
177
+ className: cx("".concat(blockClass, "__cell"), _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "".concat(blockClass, "__expandable-row-cell"), (row.canExpand || getAsyncSubRows) && index === 0), "".concat(blockClass, "__expandable-row-cell--is-expanded"), row.isExpanded && index === 0), "".concat(blockClass, "__slug--cell"), associatedHeader && associatedHeader.length && /*#__PURE__*/React.isValidElement((_associatedHeader$ = associatedHeader[0]) === null || _associatedHeader$ === void 0 ? void 0 : _associatedHeader$.slug)), "".concat(blockClass, "__ai-label--cell"), associatedHeader && associatedHeader.length && /*#__PURE__*/React.isValidElement((_associatedHeader$2 = associatedHeader[0]) === null || _associatedHeader$2 === void 0 ? void 0 : _associatedHeader$2.aiLabel)), columnClassname)
174
178
  }, restProps, {
175
179
  style: style,
176
180
  key: cell.column.id
@@ -5,8 +5,8 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import React, { ReactNode } from 'react';
8
- interface DatagridSlugProps {
9
- slug?: ReactNode;
8
+ interface DatagridAILabelProps {
9
+ aiLabel?: ReactNode;
10
10
  }
11
- export declare const DatagridSlug: React.ForwardRefExoticComponent<DatagridSlugProps & React.RefAttributes<HTMLDivElement>>;
11
+ export declare const DatagridAILabel: React.ForwardRefExoticComponent<DatagridAILabelProps & React.RefAttributes<HTMLDivElement>>;
12
12
  export {};
@@ -0,0 +1,31 @@
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
+ var React = require('react');
11
+ var index = require('../../../../../_virtual/index.js');
12
+
13
+ var DatagridAILabel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
14
+ var aiLabel = _ref.aiLabel;
15
+ if (aiLabel && /*#__PURE__*/React.isValidElement(aiLabel)) {
16
+ var normalizedAILabel = /*#__PURE__*/React.cloneElement(aiLabel, {
17
+ size: 'mini',
18
+ ref: ref
19
+ });
20
+ return normalizedAILabel;
21
+ }
22
+ return null;
23
+ });
24
+ DatagridAILabel.propTypes = {
25
+ /**
26
+ * Specify the AI AILabel to be displayed
27
+ */
28
+ aiLabel: index.default.node
29
+ };
30
+
31
+ exports.DatagridAILabel = DatagridAILabel;
@@ -128,7 +128,8 @@ export interface DataGridHeader<T extends object = any> extends ColumnInstance,
128
128
  [x: string]: any;
129
129
  }): unknown;
130
130
  isAction?: boolean;
131
- slug?: any;
131
+ slug?: ReactNode;
132
+ aiLabel?: ReactNode;
132
133
  }
133
134
  export interface DataGridHeaderGroup<T extends object = any> extends HeaderGroup<T>, UseResizeColumnsColumnProps<T> {
134
135
  }
@@ -22,9 +22,9 @@ var useDefaultStringRenderer = function useDefaultStringRenderer(hooks) {
22
22
  className: cx("".concat(blockClass, "__defaultStringRenderer"), _rollupPluginBabelHelpers.defineProperty({}, "".concat(blockClass, "__defaultStringRenderer--multiline"), ((_tableProps$column = tableProps.column) === null || _tableProps$column === void 0 ? void 0 : _tableProps$column.multiLineWrap) || (tableProps === null || tableProps === void 0 ? void 0 : tableProps.multiLineWrapAll)))
23
23
  }, tableProps.value);
24
24
  };
25
- var HeaderRenderer = function HeaderRenderer(header, slug) {
25
+ var HeaderRenderer = function HeaderRenderer(header, slug, aiLabel) {
26
26
  return /*#__PURE__*/React.createElement("div", {
27
- className: cx("".concat(blockClass, "__defaultStringRenderer"), _rollupPluginBabelHelpers.defineProperty({}, "".concat(blockClass, "__defaultStringRenderer--slug"), slug && /*#__PURE__*/React.isValidElement(slug))),
27
+ className: cx("".concat(blockClass, "__defaultStringRenderer"), _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "".concat(blockClass, "__defaultStringRenderer--slug"), slug && /*#__PURE__*/React.isValidElement(slug)), "".concat(blockClass, "__defaultStringRenderer--ai-label"), aiLabel && /*#__PURE__*/React.isValidElement(aiLabel))),
28
28
  key: typeof header === 'string' ? header : ''
29
29
  }, header);
30
30
  };
@@ -33,7 +33,7 @@ var useDefaultStringRenderer = function useDefaultStringRenderer(hooks) {
33
33
  return _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({
34
34
  Cell: StringRenderer
35
35
  }, column), {}, {
36
- Header: column.HeaderRenderer || HeaderRenderer(column.Header, column.slug)
36
+ Header: column.HeaderRenderer || HeaderRenderer(column.Header, column.slug, column.aiLabel)
37
37
  });
38
38
  });
39
39
  return _rollupPluginBabelHelpers.toConsumableArray(columnsWithDefaultCells);
@@ -16,7 +16,7 @@ var settings = require('../../settings.js');
16
16
  var react = require('@carbon/react');
17
17
  var icons = require('@carbon/react/icons');
18
18
  var DatagridSelectAll = require('./Datagrid/DatagridSelectAll.js');
19
- var DatagridSlug = require('./Datagrid/addons/Slug/DatagridSlug.js');
19
+ var DatagridAiLabel = require('./Datagrid/addons/AiLabel/DatagridAiLabel.js');
20
20
 
21
21
  var blockClass = "".concat(settings.pkg.prefix, "--datagrid");
22
22
  var getNewSortOrder = function getNewSortOrder(currentOrder) {
@@ -82,9 +82,9 @@ var useSortableColumns = function useSortableColumns(hooks) {
82
82
  descendingSortableLabelText = instance.descendingSortableLabelText,
83
83
  defaultSortableLabelText = instance.defaultSortableLabelText;
84
84
  var onSortClick = function onSortClick(event, column) {
85
- var slug = event.target.classList.contains("".concat(settings.carbon.prefix, "--slug")) || event.target.closest(".".concat(settings.carbon.prefix, "--slug"));
85
+ var aiLabel = event.target.classList.contains("".concat(settings.carbon.prefix, "--slug")) || event.target.closest(".".concat(settings.carbon.prefix, "--slug"));
86
86
  // Do not continue with sorting if we find a slug
87
- if (slug) {
87
+ if (aiLabel) {
88
88
  event.stopPropagation();
89
89
  return;
90
90
  }
@@ -140,9 +140,9 @@ var useSortableColumns = function useSortableColumns(hooks) {
140
140
  },
141
141
  kind: "ghost",
142
142
  renderIcon: function renderIcon(props) {
143
- var _headerProp$column;
144
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DatagridSlug.DatagridSlug, {
145
- slug: headerProp === null || headerProp === void 0 || (_headerProp$column = headerProp.column) === null || _headerProp$column === void 0 ? void 0 : _headerProp$column.slug
143
+ var _headerProp$column, _headerProp$column2;
144
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DatagridAiLabel.DatagridAILabel, {
145
+ aiLabel: (headerProp === null || headerProp === void 0 || (_headerProp$column = headerProp.column) === null || _headerProp$column === void 0 ? void 0 : _headerProp$column.aiLabel) || (headerProp === null || headerProp === void 0 || (_headerProp$column2 = headerProp.column) === null || _headerProp$column2 === void 0 ? void 0 : _headerProp$column2.slug)
146
146
  }), icon(headerProp === null || headerProp === void 0 ? void 0 : headerProp.column, props));
147
147
  },
148
148
  id: column === null || column === void 0 ? void 0 : column.id,
@@ -13,6 +13,10 @@ export interface ExpressiveCardProps extends PropsWithChildren {
13
13
  * Icons that are displayed on card. Refer to design documentation for implementation guidelines. Note- href will supersede onClick
14
14
  */
15
15
  actionIcons?: ActionIcon[];
16
+ /**
17
+ * Optional prop that is intended for any scenario where something is being generated by AI to reinforce AI transparency, accountability, and explainability at the UI level.
18
+ */
19
+ aiLabel?: ReactNode | boolean;
16
20
  /**
17
21
  * Content that shows in the body of the card
18
22
  */
@@ -87,6 +91,7 @@ export interface ExpressiveCardProps extends PropsWithChildren {
87
91
  /**
88
92
  * **Experimental:** For all cases a `Slug` component can be provided.
89
93
  * Clickable tiles only accept a boolean value of true and display a hollow slug.
94
+ * @deprecated please use the `aiLabel` prop
90
95
  */
91
96
  slug?: ReactNode | boolean;
92
97
  /**
@@ -38,6 +38,10 @@ exports.ExpressiveCard.propTypes = {
38
38
  iconDescription: index.default.string,
39
39
  href: index.default.string
40
40
  })),
41
+ /**
42
+ * Optional prop that is intended for any scenario where something is being generated by AI to reinforce AI transparency, accountability, and explainability at the UI level.
43
+ */
44
+ aiLabel: index.default.oneOfType([index.default.node, index.default.bool]),
41
45
  /**
42
46
  * Content that shows in the body of the card
43
47
  */
@@ -116,6 +120,7 @@ exports.ExpressiveCard.propTypes = {
116
120
  /**
117
121
  * **Experimental:** For all cases a `Slug` component can be provided.
118
122
  * Clickable tiles only accept a boolean value of true and display a hollow slug.
123
+ * @deprecated please use the `aiLabel` prop
119
124
  */
120
125
  slug: index.default.oneOfType([index.default.node, index.default.bool]),
121
126
  /**
@@ -21,6 +21,10 @@ export interface ProductiveCardProps extends PropsWithChildren {
21
21
  * Icons that are displayed on card. Refer to design documentation for implementation guidelines. Note- href will supersede onClick
22
22
  */
23
23
  actionIcons?: ActionIcon[];
24
+ /**
25
+ * Optional prop that is intended for any scenario where something is being generated by AI to reinforce AI transparency, accountability, and explainability at the UI level.
26
+ */
27
+ aiLabel?: ReactNode | boolean;
24
28
  /**
25
29
  * Determines if the action icons are on the top or bottom of the card
26
30
  */
@@ -104,6 +108,7 @@ export interface ProductiveCardProps extends PropsWithChildren {
104
108
  /**
105
109
  * **Experimental:** For all cases a `Slug` component can be provided.
106
110
  * Clickable tiles only accept a boolean value of true and display a hollow slug.
111
+ * @deprecated please use the `aiLabel` prop
107
112
  */
108
113
  slug?: ReactNode | boolean;
109
114
  /**
@@ -50,6 +50,10 @@ exports.ProductiveCard.propTypes = {
50
50
  * Determines if the action icons are on the top or bottom of the card
51
51
  */
52
52
  actionsPlacement: index.default.oneOf(['top', 'bottom']),
53
+ /**
54
+ * Optional prop that is intended for any scenario where something is being generated by AI to reinforce AI transparency, accountability, and explainability at the UI level.
55
+ */
56
+ aiLabel: index.default.oneOfType([index.default.node, index.default.bool]),
53
57
  /**
54
58
  * Content that shows in the body of the card
55
59
  */
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.43.2-canary.303+2311bdb74",
4
+ "version": "2.43.2-canary.305+5b94ed8d0",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -96,7 +96,7 @@
96
96
  "dependencies": {
97
97
  "@babel/runtime": "^7.23.9",
98
98
  "@carbon/feature-flags": "^0.22.0",
99
- "@carbon/ibm-products-styles": "^2.39.1-canary.313+2311bdb74",
99
+ "@carbon/ibm-products-styles": "^2.39.1-canary.315+5b94ed8d0",
100
100
  "@carbon/telemetry": "^0.1.0",
101
101
  "@dnd-kit/core": "^6.0.8",
102
102
  "@dnd-kit/modifiers": "^7.0.0",
@@ -120,5 +120,5 @@
120
120
  "react": "^16.8.6 || ^17.0.1 || ^18.2.0",
121
121
  "react-dom": "^16.8.6 || ^17.0.1 || ^18.2.0"
122
122
  },
123
- "gitHead": "2311bdb7477e72a6cd4d7f915f6dc754874b7375"
123
+ "gitHead": "5b94ed8d01638db747277f104d9f7dd9ab2e0eb3"
124
124
  }
@@ -5,6 +5,8 @@
5
5
  // LICENSE file in the root directory of this source tree.
6
6
  //
7
7
 
8
+ // NOTE: Please do not remove the duplicate `slug` and `ai-label` classes. We need both until slug is fully deprecated
9
+
8
10
  // Standard imports.
9
11
  @use '@carbon/styles/scss/theme' as *;
10
12
  @use '@carbon/styles/scss/spacing' as *;
@@ -148,16 +150,19 @@ $block-class: #{c4p-settings.$pkg-prefix}--card;
148
150
  right: $spacing-05;
149
151
  }
150
152
 
151
- .#{$block-class}__header-container--has-slug {
153
+ .#{$block-class}__header-container--has-slug,
154
+ .#{$block-class}__header-container--has-ai-label {
152
155
  width: 100%;
153
156
  padding-right: $spacing-07;
154
157
  }
155
158
 
156
- .#{$block-class}__header-container--has-slug.#{$block-class}__header-container--has-actions {
159
+ .#{$block-class}__header-container--has-slug.#{$block-class}__header-container--has-actions,
160
+ .#{$block-class}__header-container--has-ai-label.#{$block-class}__header-container--has-actions {
157
161
  padding-right: $spacing-08;
158
162
  }
159
163
 
160
- .#{$block-class}__header-container--has-slug.#{$block-class}__header-container--large-tile-or-label {
164
+ .#{$block-class}__header-container--has-slug.#{$block-class}__header-container--large-tile-or-label,
165
+ .#{$block-class}__header-container--has-ai-label.#{$block-class}__header-container--large-tile-or-label {
161
166
  padding-right: $spacing-09;
162
167
  }
163
168
 
@@ -170,7 +175,8 @@ $block-class: #{c4p-settings.$pkg-prefix}--card;
170
175
  pointer-events: none;
171
176
  }
172
177
 
173
- .#{$block-class}--has-slug {
178
+ .#{$block-class}--has-slug,
179
+ .#{$block-class}--has-ai-label {
174
180
  @include utilities.ai-popover-gradient('default', 0, 'layer');
175
181
 
176
182
  border: 1px solid transparent;
@@ -178,7 +184,8 @@ $block-class: #{c4p-settings.$pkg-prefix}--card;
178
184
  0 4px 10px 2px $ai-drop-shadow;
179
185
  }
180
186
 
181
- .#{$block-class}__clickable.#{$block-class}--has-slug::before {
187
+ .#{$block-class}__clickable.#{$block-class}--has-slug::before,
188
+ .#{$block-class}__clickable.#{$block-class}--has-ai-label::before {
182
189
  @include utilities.ai-popover-gradient('hover', 0, 'layer');
183
190
 
184
191
  position: absolute;
@@ -193,7 +200,8 @@ $block-class: #{c4p-settings.$pkg-prefix}--card;
193
200
  transition: opacity $duration-fast-02 motion(standard, productive);
194
201
  }
195
202
 
196
- .#{$block-class}__clickable.#{$block-class}--has-slug:hover::before {
203
+ .#{$block-class}__clickable.#{$block-class}--has-slug:hover::before,
204
+ .#{$block-class}__clickable.#{$block-class}--has-ai-label:hover::before {
197
205
  opacity: 1;
198
206
  }
199
207
 
@@ -156,6 +156,7 @@
156
156
  background-color: $background;
157
157
  }
158
158
 
159
+ /* This section to be removed after support for slug dropped - start */
159
160
  .#{$block-class} th.#{$block-class}__with-slug {
160
161
  /* stylelint-disable-next-line carbon/theme-token-use */
161
162
  box-shadow: inset 0 1px $ai-border-strong;
@@ -228,6 +229,80 @@
228
229
  .#{c4p-settings.$carbon-prefix}--slug {
229
230
  margin-left: $spacing-03;
230
231
  }
232
+ /* This section to be removed after support for slug dropped - end */
233
+
234
+ .#{$block-class} th.#{$block-class}__with-ai-label {
235
+ /* stylelint-disable-next-line carbon/theme-token-use */
236
+ box-shadow: inset 0 1px $ai-border-strong;
237
+ }
238
+
239
+ .#{$block-class} th.#{$block-class}__with-ai-label,
240
+ .#{$block-class} td.#{$block-class}__ai-label--cell {
241
+ @include ai-table-gradient();
242
+ }
243
+
244
+ .#{$block-class}
245
+ .#{c4p-settings.$carbon-prefix}--data-table
246
+ tbody
247
+ tr.#{$block-class}__ai-label--row,
248
+ .#{$block-class}
249
+ .#{c4p-settings.$carbon-prefix}--data-table
250
+ tbody
251
+ tr.#{$block-class}__ai-label--row
252
+ + .#{$block-class}__expanded-row {
253
+ @include ai-table-gradient();
254
+
255
+ background-attachment: fixed;
256
+ }
257
+
258
+ .#{$block-class}
259
+ .#{c4p-settings.$carbon-prefix}--data-table
260
+ tbody
261
+ tr.#{$block-class}__ai-label--row {
262
+ /* stylelint-disable-next-line carbon/theme-token-use */
263
+ box-shadow: inset 1px 0 $ai-border-strong;
264
+ }
265
+
266
+ .#{$block-class}
267
+ .#{c4p-settings.$carbon-prefix}--data-table
268
+ tbody
269
+ tr.#{$block-class}__ai-label--row:hover,
270
+ .#{$block-class}
271
+ .#{c4p-settings.$carbon-prefix}--data-table
272
+ tbody
273
+ tr.#{$block-class}__ai-label--row.#{c4p-settings.$carbon-prefix}--data-table--selected:hover,
274
+ .#{$block-class}
275
+ .#{c4p-settings.$carbon-prefix}--data-table
276
+ tbody
277
+ tr.#{$block-class}__ai-label--row.#{$block-class}__carbon-row-expanded:hover
278
+ + .#{$block-class}__expanded-row,
279
+ .#{$block-class}
280
+ .#{c4p-settings.$carbon-prefix}--data-table
281
+ tbody
282
+ tr.#{$block-class}__expandable-row--hover.#{$block-class}__ai-label--row {
283
+ @include ai-table-gradient('hover');
284
+ }
285
+
286
+ .#{$block-class}
287
+ .#{c4p-settings.$carbon-prefix}--data-table
288
+ tbody
289
+ tr.#{$block-class}__expandable-row--hover.#{$block-class}__ai-label--row
290
+ td {
291
+ background-color: transparent;
292
+ }
293
+
294
+ .#{$block-class}
295
+ .#{c4p-settings.$carbon-prefix}--data-table
296
+ tbody
297
+ tr.#{$block-class}__ai-label--row.#{c4p-settings.$carbon-prefix}--data-table--selected {
298
+ @include ai-table-gradient('selected');
299
+ }
300
+
301
+ .#{$block-class}
302
+ th.#{$block-class}__with-ai-label
303
+ .#{c4p-settings.$carbon-prefix}--slug {
304
+ margin-left: $spacing-03;
305
+ }
231
306
 
232
307
  .#{$block-class}__grid-container {
233
308
  display: block;
@@ -315,7 +390,8 @@
315
390
  white-space: initial;
316
391
  }
317
392
 
318
- .#{$block-class}__defaultStringRenderer.#{$block-class}__defaultStringRenderer--slug {
393
+ .#{$block-class}__defaultStringRenderer.#{$block-class}__defaultStringRenderer--slug,
394
+ .#{$block-class}__defaultStringRenderer.#{$block-class}__defaultStringRenderer--ai-label {
319
395
  width: fit-content;
320
396
  }
321
397
 
@@ -891,7 +967,9 @@
891
967
  .#{$block-class} .#{$block-class}__table-row-ai-enabled {
892
968
  display: flex;
893
969
  align-items: center;
894
- &.#{$block-class}__slug--expanded {
970
+
971
+ &.#{$block-class}__slug--expanded,
972
+ &.#{$block-class}__ai-label--expanded {
895
973
  border: none;
896
974
  }
897
975
  }
@@ -1,29 +0,0 @@
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
- import React__default, { forwardRef, isValidElement } from 'react';
9
- import PropTypes from '../../../../../_virtual/index.js';
10
-
11
- var DatagridSlug = /*#__PURE__*/forwardRef(function (_ref, ref) {
12
- var slug = _ref.slug;
13
- if (slug && /*#__PURE__*/isValidElement(slug)) {
14
- var normalizedSlug = /*#__PURE__*/React__default.cloneElement(slug, {
15
- size: 'mini',
16
- ref: ref
17
- });
18
- return normalizedSlug;
19
- }
20
- return null;
21
- });
22
- DatagridSlug.propTypes = {
23
- /**
24
- * Specify the AI slug to be displayed
25
- */
26
- slug: PropTypes.node
27
- };
28
-
29
- export { DatagridSlug };