@carbon/react 1.78.2 → 1.79.0-rc.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 (249) hide show
  1. package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +835 -835
  2. package/es/components/Accordion/AccordionItem.js +2 -2
  3. package/es/components/Button/Button.d.ts +2 -3
  4. package/es/components/Button/Button.js +29 -19
  5. package/es/components/Button/ButtonBase.js +3 -1
  6. package/es/components/ChatButton/ChatButton.d.ts +2 -3
  7. package/es/components/ChatButton/ChatButton.js +1 -2
  8. package/es/components/ComboBox/ComboBox.js +34 -24
  9. package/es/components/ComposedModal/ComposedModal.js +65 -51
  10. package/es/components/ContainedList/ContainedListItem/ContainedListItem.d.ts +2 -2
  11. package/es/components/ContainedList/ContainedListItem/ContainedListItem.js +1 -1
  12. package/es/components/ContentSwitcher/ContentSwitcher.js +3 -3
  13. package/es/components/DataTable/TableBatchAction.d.ts +3 -3
  14. package/es/components/DataTable/TableBatchAction.js +1 -1
  15. package/es/components/DataTable/TableContainer.d.ts +1 -1
  16. package/es/components/DataTable/TableContainer.js +5 -4
  17. package/es/components/DataTable/TableExpandHeader.d.ts +6 -5
  18. package/es/components/DataTable/TableToolbarMenu.d.ts +2 -2
  19. package/es/components/DataTable/TableToolbarMenu.js +1 -1
  20. package/es/components/DatePicker/DatePicker.js +2 -2
  21. package/es/components/DatePicker/plugins/fixEventsPlugin.js +1 -1
  22. package/es/components/Dialog/index.d.ts +42 -4
  23. package/es/components/Dialog/index.js +177 -0
  24. package/es/components/ExpandableSearch/ExpandableSearch.js +2 -2
  25. package/es/components/FeatureFlags/index.d.ts +3 -1
  26. package/es/components/FeatureFlags/index.js +3 -0
  27. package/es/components/FileUploader/FileUploader.d.ts +1 -1
  28. package/es/components/FileUploader/FileUploader.js +2 -2
  29. package/es/components/FileUploader/FileUploaderButton.js +2 -2
  30. package/es/components/FileUploader/FileUploaderDropContainer.d.ts +1 -1
  31. package/es/components/FileUploader/FileUploaderDropContainer.js +6 -4
  32. package/es/components/FileUploader/FileUploaderItem.d.ts +1 -1
  33. package/es/components/FileUploader/FileUploaderItem.js +2 -2
  34. package/es/components/Grid/CSSGrid.js +18 -14
  35. package/es/components/Grid/Column.d.ts +2 -2
  36. package/es/components/Grid/Column.js +7 -8
  37. package/es/components/Grid/FlexGrid.js +7 -6
  38. package/es/components/Grid/GridTypes.d.ts +5 -3
  39. package/es/components/IconButton/index.d.ts +2 -2
  40. package/es/components/IconButton/index.js +4 -4
  41. package/es/components/Layer/index.d.ts +4 -6
  42. package/es/components/Layer/index.js +5 -6
  43. package/es/components/Link/Link.d.ts +2 -3
  44. package/es/components/Link/Link.js +1 -2
  45. package/es/components/ListBox/ListBoxMenuItem.d.ts +3 -3
  46. package/es/components/ListBox/ListBoxMenuItem.js +37 -15
  47. package/es/components/Menu/Menu.js +2 -2
  48. package/es/components/Menu/MenuItem.d.ts +2 -2
  49. package/es/components/Menu/MenuItem.js +3 -3
  50. package/es/components/Modal/Modal.js +121 -49
  51. package/es/components/ModalWrapper/ModalWrapper.js +1 -1
  52. package/es/components/MultiSelect/FilterableMultiSelect.js +3 -3
  53. package/es/components/MultiSelect/MultiSelect.js +2 -2
  54. package/es/components/MultiSelect/index.d.ts +1 -1
  55. package/es/components/MultiSelect/index.js +1 -8
  56. package/es/components/Notification/Notification.d.ts +5 -13
  57. package/es/components/Notification/Notification.js +3 -4
  58. package/es/components/OverflowMenu/OverflowMenu.d.ts +22 -201
  59. package/es/components/OverflowMenu/OverflowMenu.js +269 -338
  60. package/es/components/OverflowMenu/index.d.ts +5 -5
  61. package/es/components/OverflowMenu/index.js +2 -2
  62. package/es/components/OverflowMenu/next/index.d.ts +4 -4
  63. package/es/components/OverflowMenu/next/index.js +1 -1
  64. package/es/components/OverflowMenuItem/OverflowMenuItem.js +2 -2
  65. package/es/components/ProgressIndicator/ProgressIndicator.js +2 -2
  66. package/es/components/RadioTile/RadioTile.js +2 -2
  67. package/es/components/Search/Search.d.ts +2 -3
  68. package/es/components/Search/Search.js +4 -6
  69. package/es/components/Slider/Slider.d.ts +39 -44
  70. package/es/components/Slider/Slider.js +57 -59
  71. package/es/components/Tabs/Tabs.d.ts +3 -6
  72. package/es/components/Tabs/Tabs.js +16 -18
  73. package/es/components/Tag/DismissibleTag.d.ts +3 -5
  74. package/es/components/Tag/DismissibleTag.js +1 -2
  75. package/es/components/Tag/OperationalTag.d.ts +2 -3
  76. package/es/components/Tag/OperationalTag.js +1 -2
  77. package/es/components/Tag/SelectableTag.d.ts +3 -5
  78. package/es/components/Tag/SelectableTag.js +1 -2
  79. package/es/components/Tag/Tag.d.ts +2 -3
  80. package/es/components/Tag/Tag.js +1 -2
  81. package/es/components/Tile/Tile.d.ts +3 -5
  82. package/es/components/Tile/Tile.js +16 -10
  83. package/es/components/Toggletip/index.js +2 -2
  84. package/es/components/Tooltip/DefinitionTooltip.js +2 -2
  85. package/es/components/Tooltip/Tooltip.d.ts +1 -1
  86. package/es/components/Tooltip/Tooltip.js +2 -2
  87. package/es/components/TreeView/TreeNode.d.ts +3 -5
  88. package/es/components/TreeView/TreeNode.js +3 -4
  89. package/es/components/TreeView/TreeView.js +2 -2
  90. package/es/components/UIShell/HeaderContainer.js +2 -2
  91. package/es/components/UIShell/HeaderMenu.js +2 -2
  92. package/es/components/UIShell/HeaderPanel.js +2 -2
  93. package/es/components/UIShell/SideNav.d.ts +1 -1
  94. package/es/components/UIShell/SideNav.js +2 -2
  95. package/es/components/UIShell/SideNavHeader.d.ts +2 -3
  96. package/es/components/UIShell/SideNavHeader.js +1 -2
  97. package/es/components/UIShell/SideNavLink.d.ts +2 -2
  98. package/es/components/UIShell/SideNavLink.js +1 -1
  99. package/es/components/UIShell/SideNavMenu.d.ts +2 -2
  100. package/es/components/UIShell/SideNavMenu.js +3 -3
  101. package/es/components/UIShell/SwitcherItem.js +2 -2
  102. package/es/index.js +1 -1
  103. package/es/internal/FloatingMenu.d.ts +2 -2
  104. package/es/internal/FloatingMenu.js +8 -5
  105. package/es/internal/OptimizedResize.d.ts +18 -0
  106. package/es/internal/OptimizedResize.js +21 -24
  107. package/es/internal/createClassWrapper.d.ts +3 -3
  108. package/es/internal/createClassWrapper.js +4 -4
  109. package/es/internal/keyboard/index.d.ts +9 -0
  110. package/es/internal/keyboard/keys.d.ts +23 -0
  111. package/es/internal/keyboard/keys.js +2 -2
  112. package/es/internal/keyboard/match.d.ts +26 -0
  113. package/es/internal/keyboard/match.js +17 -41
  114. package/es/internal/keyboard/navigation.d.ts +37 -0
  115. package/es/internal/keyboard/navigation.js +15 -27
  116. package/es/internal/useMatchMedia.d.ts +8 -0
  117. package/es/internal/useMatchMedia.js +10 -20
  118. package/es/internal/useMergedRefs.js +3 -0
  119. package/es/internal/useNormalizedInputProps.d.ts +52 -0
  120. package/es/internal/useNormalizedInputProps.js +9 -36
  121. package/lib/components/Accordion/AccordionItem.js +2 -2
  122. package/lib/components/Button/Button.d.ts +2 -3
  123. package/lib/components/Button/Button.js +29 -19
  124. package/lib/components/Button/ButtonBase.js +3 -1
  125. package/lib/components/ChatButton/ChatButton.d.ts +2 -3
  126. package/lib/components/ChatButton/ChatButton.js +1 -2
  127. package/lib/components/ComboBox/ComboBox.js +34 -24
  128. package/lib/components/ComposedModal/ComposedModal.js +64 -50
  129. package/lib/components/ContainedList/ContainedListItem/ContainedListItem.d.ts +2 -2
  130. package/lib/components/ContainedList/ContainedListItem/ContainedListItem.js +1 -1
  131. package/lib/components/ContentSwitcher/ContentSwitcher.js +3 -3
  132. package/lib/components/DataTable/TableBatchAction.d.ts +3 -3
  133. package/lib/components/DataTable/TableBatchAction.js +1 -1
  134. package/lib/components/DataTable/TableContainer.d.ts +1 -1
  135. package/lib/components/DataTable/TableContainer.js +5 -4
  136. package/lib/components/DataTable/TableExpandHeader.d.ts +6 -5
  137. package/lib/components/DataTable/TableToolbarMenu.d.ts +2 -2
  138. package/lib/components/DataTable/TableToolbarMenu.js +1 -1
  139. package/lib/components/DatePicker/DatePicker.js +2 -2
  140. package/lib/components/DatePicker/plugins/fixEventsPlugin.js +1 -1
  141. package/lib/components/Dialog/index.d.ts +42 -4
  142. package/lib/components/Dialog/index.js +190 -0
  143. package/lib/components/ExpandableSearch/ExpandableSearch.js +2 -2
  144. package/lib/components/FeatureFlags/index.d.ts +3 -1
  145. package/lib/components/FeatureFlags/index.js +3 -0
  146. package/lib/components/FileUploader/FileUploader.d.ts +1 -1
  147. package/lib/components/FileUploader/FileUploader.js +2 -2
  148. package/lib/components/FileUploader/FileUploaderButton.js +2 -2
  149. package/lib/components/FileUploader/FileUploaderDropContainer.d.ts +1 -1
  150. package/lib/components/FileUploader/FileUploaderDropContainer.js +6 -4
  151. package/lib/components/FileUploader/FileUploaderItem.d.ts +1 -1
  152. package/lib/components/FileUploader/FileUploaderItem.js +2 -2
  153. package/lib/components/Grid/CSSGrid.js +18 -14
  154. package/lib/components/Grid/Column.d.ts +2 -2
  155. package/lib/components/Grid/Column.js +7 -8
  156. package/lib/components/Grid/FlexGrid.js +7 -6
  157. package/lib/components/Grid/GridTypes.d.ts +5 -3
  158. package/lib/components/IconButton/index.d.ts +2 -2
  159. package/lib/components/IconButton/index.js +4 -4
  160. package/lib/components/Layer/index.d.ts +4 -6
  161. package/lib/components/Layer/index.js +5 -6
  162. package/lib/components/Link/Link.d.ts +2 -3
  163. package/lib/components/Link/Link.js +1 -2
  164. package/lib/components/ListBox/ListBoxMenuItem.d.ts +3 -3
  165. package/lib/components/ListBox/ListBoxMenuItem.js +36 -14
  166. package/lib/components/Menu/Menu.js +2 -2
  167. package/lib/components/Menu/MenuItem.d.ts +2 -2
  168. package/lib/components/Menu/MenuItem.js +3 -3
  169. package/lib/components/Modal/Modal.js +123 -51
  170. package/lib/components/ModalWrapper/ModalWrapper.js +1 -1
  171. package/lib/components/MultiSelect/FilterableMultiSelect.js +3 -3
  172. package/lib/components/MultiSelect/MultiSelect.js +2 -2
  173. package/lib/components/MultiSelect/index.d.ts +1 -1
  174. package/lib/components/MultiSelect/index.js +1 -8
  175. package/lib/components/Notification/Notification.d.ts +5 -13
  176. package/lib/components/Notification/Notification.js +3 -4
  177. package/lib/components/OverflowMenu/OverflowMenu.d.ts +22 -201
  178. package/lib/components/OverflowMenu/OverflowMenu.js +268 -336
  179. package/lib/components/OverflowMenu/index.d.ts +5 -5
  180. package/lib/components/OverflowMenu/index.js +2 -2
  181. package/lib/components/OverflowMenu/next/index.d.ts +4 -4
  182. package/lib/components/OverflowMenu/next/index.js +1 -1
  183. package/lib/components/OverflowMenuItem/OverflowMenuItem.js +2 -2
  184. package/lib/components/ProgressIndicator/ProgressIndicator.js +2 -2
  185. package/lib/components/RadioTile/RadioTile.js +2 -2
  186. package/lib/components/Search/Search.d.ts +2 -3
  187. package/lib/components/Search/Search.js +4 -6
  188. package/lib/components/Slider/Slider.d.ts +39 -44
  189. package/lib/components/Slider/Slider.js +57 -59
  190. package/lib/components/Tabs/Tabs.d.ts +3 -6
  191. package/lib/components/Tabs/Tabs.js +16 -18
  192. package/lib/components/Tag/DismissibleTag.d.ts +3 -5
  193. package/lib/components/Tag/DismissibleTag.js +1 -2
  194. package/lib/components/Tag/OperationalTag.d.ts +2 -3
  195. package/lib/components/Tag/OperationalTag.js +1 -2
  196. package/lib/components/Tag/SelectableTag.d.ts +3 -5
  197. package/lib/components/Tag/SelectableTag.js +1 -2
  198. package/lib/components/Tag/Tag.d.ts +2 -3
  199. package/lib/components/Tag/Tag.js +1 -2
  200. package/lib/components/Tile/Tile.d.ts +3 -5
  201. package/lib/components/Tile/Tile.js +16 -10
  202. package/lib/components/Toggletip/index.js +2 -2
  203. package/lib/components/Tooltip/DefinitionTooltip.js +2 -2
  204. package/lib/components/Tooltip/Tooltip.d.ts +1 -1
  205. package/lib/components/Tooltip/Tooltip.js +2 -2
  206. package/lib/components/TreeView/TreeNode.d.ts +3 -5
  207. package/lib/components/TreeView/TreeNode.js +3 -4
  208. package/lib/components/TreeView/TreeView.js +2 -2
  209. package/lib/components/UIShell/HeaderContainer.js +2 -2
  210. package/lib/components/UIShell/HeaderMenu.js +2 -2
  211. package/lib/components/UIShell/HeaderPanel.js +2 -2
  212. package/lib/components/UIShell/SideNav.d.ts +1 -1
  213. package/lib/components/UIShell/SideNav.js +2 -2
  214. package/lib/components/UIShell/SideNavHeader.d.ts +2 -3
  215. package/lib/components/UIShell/SideNavHeader.js +1 -2
  216. package/lib/components/UIShell/SideNavLink.d.ts +2 -2
  217. package/lib/components/UIShell/SideNavLink.js +1 -1
  218. package/lib/components/UIShell/SideNavMenu.d.ts +2 -2
  219. package/lib/components/UIShell/SideNavMenu.js +3 -3
  220. package/lib/components/UIShell/SwitcherItem.js +2 -2
  221. package/lib/index.js +2 -2
  222. package/lib/internal/FloatingMenu.d.ts +2 -2
  223. package/lib/internal/FloatingMenu.js +9 -6
  224. package/lib/internal/OptimizedResize.d.ts +18 -0
  225. package/lib/internal/OptimizedResize.js +21 -24
  226. package/lib/internal/createClassWrapper.d.ts +3 -3
  227. package/lib/internal/createClassWrapper.js +4 -4
  228. package/lib/internal/keyboard/index.d.ts +9 -0
  229. package/lib/internal/keyboard/keys.d.ts +23 -0
  230. package/lib/internal/keyboard/keys.js +2 -2
  231. package/lib/internal/keyboard/match.d.ts +26 -0
  232. package/lib/internal/keyboard/match.js +17 -41
  233. package/lib/internal/keyboard/navigation.d.ts +37 -0
  234. package/lib/internal/keyboard/navigation.js +15 -27
  235. package/lib/internal/useMatchMedia.d.ts +8 -0
  236. package/lib/internal/useMatchMedia.js +10 -20
  237. package/lib/internal/useMergedRefs.js +3 -0
  238. package/lib/internal/useNormalizedInputProps.d.ts +52 -0
  239. package/lib/internal/useNormalizedInputProps.js +9 -36
  240. package/package.json +6 -6
  241. package/scss/components/dialog/_dialog.scss +9 -0
  242. package/scss/components/dialog/_index.scss +9 -0
  243. package/telemetry.yml +1 -0
  244. package/es/components/Modal/next/index.d.ts +0 -171
  245. package/es/internal/focus/index.js +0 -15
  246. package/es/internal/useEffectOnce.js +0 -30
  247. package/lib/components/Modal/next/index.d.ts +0 -171
  248. package/lib/internal/focus/index.js +0 -19
  249. package/lib/internal/useEffectOnce.js +0 -34
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright IBM Corp. 2016, 2023
2
+ * Copyright IBM Corp. 2016, 2025
3
3
  *
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -31,8 +31,7 @@ export interface LinkBaseProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
31
31
  */
32
32
  inline?: boolean;
33
33
  /**
34
- * @description Optional prop to render an icon next to the link.
35
- * Can be a React component class
34
+ * A component used to render an icon.
36
35
  */
37
36
  renderIcon?: ComponentType;
38
37
  /**
@@ -92,8 +92,7 @@ Link.propTypes = {
92
92
  */
93
93
  inline: PropTypes__default["default"].bool,
94
94
  /**
95
- * Optional prop to render an icon next to the link.
96
- * Can be a React component class
95
+ * A component used to render an icon.
97
96
  */
98
97
  renderIcon: PropTypes__default["default"].oneOfType([PropTypes__default["default"].func, PropTypes__default["default"].object]),
99
98
  /**
@@ -1,10 +1,10 @@
1
1
  /**
2
- * Copyright IBM Corp. 2016, 2023
2
+ * Copyright IBM Corp. 2016, 2025
3
3
  *
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- import React, { ForwardedRef, ReactNode } from 'react';
7
+ import { ForwardedRef, ReactNode, type Ref } from 'react';
8
8
  import { ForwardRefReturn, ReactAttr } from '../../types/common';
9
9
  export interface ListBoxMenuItemProps extends ReactAttr<HTMLLIElement> {
10
10
  /**
@@ -30,7 +30,7 @@ export interface ListBoxMenuItemProps extends ReactAttr<HTMLLIElement> {
30
30
  title?: string;
31
31
  }
32
32
  export type ListBoxMenuItemForwardedRef = (ForwardedRef<HTMLLIElement> & {
33
- menuItemOptionRef?: React.Ref<HTMLDivElement>;
33
+ menuItemOptionRef?: Ref<HTMLDivElement>;
34
34
  }) | null;
35
35
  export type ListBoxMenuItemComponent = ForwardRefReturn<ListBoxMenuItemForwardedRef, ListBoxMenuItemProps>;
36
36
  declare const _default: ListBoxMenuItemComponent;
@@ -14,6 +14,7 @@ var cx = require('classnames');
14
14
  var React = require('react');
15
15
  var PropTypes = require('prop-types');
16
16
  var usePrefix = require('../../internal/usePrefix.js');
17
+ var useMergedRefs = require('../../internal/useMergedRefs.js');
17
18
 
18
19
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
19
20
 
@@ -21,24 +22,42 @@ var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
21
22
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
22
23
  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
23
24
 
24
- function useIsTruncated(ref) {
25
+ /**
26
+ * Determines if the content of an element is truncated.
27
+ *
28
+ * Merges a forwarded ref with a local ref to check the element's dimensions.
29
+ *
30
+ * @template T
31
+ * @param forwardedRef - A ref passed from the parent component.
32
+ * @param deps - Dependencies to re-run the truncation check.
33
+ * @returns An object containing the truncation state and the merged ref.
34
+ */
35
+ const useIsTruncated = function (forwardedRef) {
36
+ let deps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
37
+ const localRef = React.useRef(null);
38
+ const mergedRef = useMergedRefs.useMergedRefs([...(forwardedRef ? [forwardedRef] : []), localRef]);
25
39
  const [isTruncated, setIsTruncated] = React.useState(false);
26
40
  React.useEffect(() => {
27
- const element = ref.current;
28
- const {
29
- offsetWidth,
30
- scrollWidth
31
- } = element;
32
- setIsTruncated(offsetWidth < scrollWidth);
33
- }, [ref, setIsTruncated]);
34
- return isTruncated;
35
- }
41
+ const element = localRef.current;
42
+ if (element) {
43
+ const {
44
+ offsetWidth,
45
+ scrollWidth
46
+ } = element;
47
+ setIsTruncated(offsetWidth < scrollWidth);
48
+ }
49
+ }, [localRef, ...deps]);
50
+ return {
51
+ isTruncated,
52
+ ref: mergedRef
53
+ };
54
+ };
36
55
  /**
37
56
  * `ListBoxMenuItem` is a helper component for managing the container class
38
57
  * name, alongside any classes for any corresponding states, for a generic list
39
58
  * box menu item.
40
59
  */
41
- const ListBoxMenuItem = /*#__PURE__*/React__default["default"].forwardRef(function ListBoxMenuItem(_ref, forwardedRef) {
60
+ const ListBoxMenuItem = /*#__PURE__*/React.forwardRef((_ref, forwardedRef) => {
42
61
  let {
43
62
  children,
44
63
  isActive = false,
@@ -47,8 +66,11 @@ const ListBoxMenuItem = /*#__PURE__*/React__default["default"].forwardRef(functi
47
66
  ...rest
48
67
  } = _ref;
49
68
  const prefix = usePrefix.usePrefix();
50
- const ref = React.useRef(null);
51
- const isTruncated = useIsTruncated(forwardedRef?.menuItemOptionRef || ref);
69
+ const menuItemOptionRefProp = forwardedRef && typeof forwardedRef !== 'function' ? forwardedRef.menuItemOptionRef : undefined;
70
+ const {
71
+ isTruncated,
72
+ ref: menuItemOptionRef
73
+ } = useIsTruncated(menuItemOptionRefProp, [children]);
52
74
  const className = cx__default["default"](`${prefix}--list-box__menu-item`, {
53
75
  [`${prefix}--list-box__menu-item--active`]: isActive,
54
76
  [`${prefix}--list-box__menu-item--highlighted`]: isHighlighted
@@ -58,7 +80,7 @@ const ListBoxMenuItem = /*#__PURE__*/React__default["default"].forwardRef(functi
58
80
  title: isTruncated ? title : undefined
59
81
  }), /*#__PURE__*/React__default["default"].createElement("div", {
60
82
  className: `${prefix}--list-box__menu-item__option`,
61
- ref: forwardedRef?.menuItemOptionRef || ref
83
+ ref: menuItemOptionRef
62
84
  }, children));
63
85
  });
64
86
  ListBoxMenuItem.displayName = 'ListBoxMenuItem';
@@ -14,14 +14,14 @@ var cx = require('classnames');
14
14
  var PropTypes = require('prop-types');
15
15
  var React = require('react');
16
16
  var ReactDOM = require('react-dom');
17
+ var keys = require('../../internal/keyboard/keys.js');
18
+ var match = require('../../internal/keyboard/match.js');
17
19
  var useMergedRefs = require('../../internal/useMergedRefs.js');
18
20
  var usePrefix = require('../../internal/usePrefix.js');
19
21
  var deprecate = require('../../prop-types/deprecate.js');
20
22
  var MenuContext = require('./MenuContext.js');
21
23
  var environment = require('../../internal/environment.js');
22
24
  var useLayoutDirection = require('../LayoutDirection/useLayoutDirection.js');
23
- var match = require('../../internal/keyboard/match.js');
24
- var keys = require('../../internal/keyboard/keys.js');
25
25
 
26
26
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
27
27
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright IBM Corp. 2023
2
+ * Copyright IBM Corp. 2025
3
3
  *
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -31,7 +31,7 @@ export interface MenuItemProps extends LiHTMLAttributes<HTMLLIElement> {
31
31
  */
32
32
  onClick?: (event: KeyboardEvent<HTMLLIElement> | MouseEvent<HTMLLIElement>) => void;
33
33
  /**
34
- * Sets the menu item's icon.
34
+ * A component used to render an icon.
35
35
  */
36
36
  renderIcon?: FC;
37
37
  /**
@@ -15,6 +15,8 @@ var PropTypes = require('prop-types');
15
15
  var React = require('react');
16
16
  var react = require('@floating-ui/react');
17
17
  var iconsReact = require('@carbon/icons-react');
18
+ var keys = require('../../internal/keyboard/keys.js');
19
+ var match = require('../../internal/keyboard/match.js');
18
20
  var useControllableState = require('../../internal/useControllableState.js');
19
21
  var useMergedRefs = require('../../internal/useMergedRefs.js');
20
22
  var usePrefix = require('../../internal/usePrefix.js');
@@ -22,9 +24,7 @@ var Menu = require('./Menu.js');
22
24
  var MenuContext = require('./MenuContext.js');
23
25
  require('../Text/index.js');
24
26
  var useLayoutDirection = require('../LayoutDirection/useLayoutDirection.js');
25
- var match = require('../../internal/keyboard/match.js');
26
27
  var Text = require('../Text/Text.js');
27
- var keys = require('../../internal/keyboard/keys.js');
28
28
 
29
29
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
30
30
 
@@ -222,7 +222,7 @@ MenuItem.propTypes = {
222
222
  // @ts-ignore-next-line -- avoid spurious (?) TS2322 error
223
223
  onClick: PropTypes__default["default"].func,
224
224
  /**
225
- * Sets the menu item's icon.
225
+ * A component used to render an icon.
226
226
  */
227
227
  // @ts-ignore-next-line -- avoid spurious (?) TS2322 error
228
228
  renderIcon: PropTypes__default["default"].oneOfType([PropTypes__default["default"].func, PropTypes__default["default"].object]),
@@ -19,22 +19,23 @@ var Button = require('../Button/Button.js');
19
19
  require('../Button/Button.Skeleton.js');
20
20
  var ButtonSet = require('../ButtonSet/ButtonSet.js');
21
21
  var InlineLoading = require('../InlineLoading/InlineLoading.js');
22
- var index$1 = require('../Layer/index.js');
22
+ var index$3 = require('../Layer/index.js');
23
23
  var requiredIfGivenPropIsTruthy = require('../../prop-types/requiredIfGivenPropIsTruthy.js');
24
24
  var wrapFocus = require('../../internal/wrapFocus.js');
25
25
  var useIsomorphicEffect = require('../../internal/useIsomorphicEffect.js');
26
26
  var useId = require('../../internal/useId.js');
27
27
  var usePrefix = require('../../internal/usePrefix.js');
28
+ var keys = require('../../internal/keyboard/keys.js');
29
+ var match = require('../../internal/keyboard/match.js');
28
30
  var index$2 = require('../IconButton/index.js');
29
31
  var noopFn = require('../../internal/noopFn.js');
30
32
  require('../Text/index.js');
31
33
  var index = require('../FeatureFlags/index.js');
32
34
  var events = require('../../tools/events.js');
33
35
  var deprecate = require('../../prop-types/deprecate.js');
36
+ var index$1 = require('../Dialog/index.js');
34
37
  var debounce = require('../../node_modules/es-toolkit/dist/compat/function/debounce.mjs.js');
35
- var match = require('../../internal/keyboard/match.js');
36
38
  var Text = require('../Text/Text.js');
37
- var keys = require('../../internal/keyboard/keys.js');
38
39
 
39
40
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
40
41
 
@@ -96,7 +97,7 @@ const Modal = /*#__PURE__*/React__default["default"].forwardRef(function Modal(_
96
97
  [`${prefix}--btn--loading`]: loadingStatus !== 'inactive'
97
98
  });
98
99
  const loadingActive = loadingStatus !== 'inactive';
99
- const focusTrapWithoutSentinels = index.useFeatureFlag('enable-experimental-focus-wrap-without-sentinels');
100
+ const enableDialogElement = index.useFeatureFlag('enable-experimental-focus-wrap-without-sentinels') || index.useFeatureFlag('enable-dialog-element');
100
101
  function isCloseButton(element) {
101
102
  return !onSecondarySubmit && element === secondaryButton.current || element.classList.contains(modalCloseButtonClass);
102
103
  }
@@ -109,13 +110,6 @@ const Modal = /*#__PURE__*/React__default["default"].forwardRef(function Modal(_
109
110
  if (match.match(evt, keys.Enter) && shouldSubmitOnEnter && !isCloseButton(evt.target)) {
110
111
  onRequestSubmit(evt);
111
112
  }
112
- if (focusTrapWithoutSentinels && match.match(evt, keys.Tab) && innerModal.current) {
113
- wrapFocus.wrapFocusWithoutSentinels({
114
- containerNode: innerModal.current,
115
- currentActiveNode: evt.target,
116
- event: evt
117
- });
118
- }
119
113
  }
120
114
  }
121
115
  function handleOnClick(evt) {
@@ -191,40 +185,46 @@ const Modal = /*#__PURE__*/React__default["default"].forwardRef(function Modal(_
191
185
  }
192
186
  React.useEffect(() => {
193
187
  return () => {
194
- toggleClass["default"](document.body, `${prefix}--body--with-modal-open`, false);
188
+ if (!enableDialogElement) {
189
+ toggleClass["default"](document.body, `${prefix}--body--with-modal-open`, false);
190
+ }
195
191
  };
196
- }, [prefix]);
192
+ }, [prefix, enableDialogElement]);
197
193
  React.useEffect(() => {
198
- toggleClass["default"](document.body, `${prefix}--body--with-modal-open`, open ?? false);
199
- }, [open, prefix]);
194
+ if (!enableDialogElement) {
195
+ toggleClass["default"](document.body, `${prefix}--body--with-modal-open`, open ?? false);
196
+ }
197
+ }, [open, prefix, enableDialogElement]);
200
198
  React.useEffect(() => {
201
- if (!open && launcherButtonRef) {
199
+ if (!enableDialogElement && !open && launcherButtonRef) {
202
200
  setTimeout(() => {
203
201
  if ('current' in launcherButtonRef) {
204
202
  launcherButtonRef.current?.focus();
205
203
  }
206
204
  });
207
205
  }
208
- }, [open, launcherButtonRef]);
206
+ }, [open, launcherButtonRef, enableDialogElement]);
209
207
  React.useEffect(() => {
210
- const initialFocus = focusContainerElement => {
211
- const containerElement = focusContainerElement || innerModal.current;
212
- const primaryFocusElement = containerElement ? containerElement.querySelector(danger ? `.${prefix}--btn--secondary` : selectorPrimaryFocus) : null;
213
- if (primaryFocusElement) {
214
- return primaryFocusElement;
215
- }
216
- return button && button.current;
217
- };
218
- const focusButton = focusContainerElement => {
219
- const target = initialFocus(focusContainerElement);
220
- if (target !== null) {
221
- target.focus();
208
+ if (!enableDialogElement) {
209
+ const initialFocus = focusContainerElement => {
210
+ const containerElement = focusContainerElement || innerModal.current;
211
+ const primaryFocusElement = containerElement ? containerElement.querySelector(danger ? `.${prefix}--btn--secondary` : selectorPrimaryFocus) : null;
212
+ if (primaryFocusElement) {
213
+ return primaryFocusElement;
214
+ }
215
+ return button && button.current;
216
+ };
217
+ const focusButton = focusContainerElement => {
218
+ const target = initialFocus(focusContainerElement);
219
+ if (target !== null) {
220
+ target.focus();
221
+ }
222
+ };
223
+ if (open) {
224
+ focusButton(innerModal.current);
222
225
  }
223
- };
224
- if (open) {
225
- focusButton(innerModal.current);
226
226
  }
227
- }, [open, selectorPrimaryFocus, danger, prefix]);
227
+ }, [open, selectorPrimaryFocus, danger, prefix, enableDialogElement]);
228
228
  useIsomorphicEffect["default"](() => {
229
229
  if (contentRef.current) {
230
230
  setIsScrollable(contentRef.current.scrollHeight > contentRef.current.clientHeight);
@@ -264,7 +264,84 @@ const Modal = /*#__PURE__*/React__default["default"].forwardRef(function Modal(_
264
264
  tabIndex: "-1",
265
265
  className: `${modalCloseButtonClass}__icon`
266
266
  })));
267
- const modalBody = /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
267
+
268
+ // alertdialog is the only permitted aria role for a native dialog element
269
+ // https://www.w3.org/TR/html-aria/#docconformance:~:text=Role%3A-,alertdialog,-.%20(dialog%20is
270
+ const isAlertDialog = alert && !passiveModal;
271
+ const modalBody = enableDialogElement ? /*#__PURE__*/React__default["default"].createElement(index$1.unstable__Dialog, {
272
+ open: open,
273
+ modal: true,
274
+ ref: innerModal,
275
+ role: isAlertDialog ? 'alertdialog' : '',
276
+ "aria-describedby": isAlertDialog ? modalBodyId : '',
277
+ className: containerClasses,
278
+ "aria-label": ariaLabel
279
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
280
+ className: `${prefix}--modal-header`
281
+ }, modalLabel && /*#__PURE__*/React__default["default"].createElement(Text.Text, {
282
+ as: "h2",
283
+ id: modalLabelId,
284
+ className: `${prefix}--modal-header__label`
285
+ }, modalLabel), /*#__PURE__*/React__default["default"].createElement(Text.Text, {
286
+ as: "h2",
287
+ id: modalHeadingId,
288
+ className: `${prefix}--modal-header__heading`
289
+ }, modalHeading), decorator ? /*#__PURE__*/React__default["default"].createElement("div", {
290
+ className: `${prefix}--modal--inner__decorator`
291
+ }, normalizedDecorator) : '', /*#__PURE__*/React__default["default"].createElement("div", {
292
+ className: `${prefix}--modal-close-button`
293
+ }, /*#__PURE__*/React__default["default"].createElement(index$2.IconButton, {
294
+ className: modalCloseButtonClass,
295
+ label: closeButtonLabel,
296
+ onClick: onRequestClose,
297
+ "aria-label": closeButtonLabel,
298
+ align: "left",
299
+ ref: button
300
+ }, /*#__PURE__*/React__default["default"].createElement(iconsReact.Close, {
301
+ size: 20,
302
+ "aria-hidden": "true",
303
+ tabIndex: "-1",
304
+ className: `${modalCloseButtonClass}__icon`
305
+ })))), /*#__PURE__*/React__default["default"].createElement(index$3.Layer, _rollupPluginBabelHelpers["extends"]({
306
+ ref: contentRef,
307
+ id: modalBodyId,
308
+ className: contentClasses
309
+ }, hasScrollingContentProps), children), !passiveModal && /*#__PURE__*/React__default["default"].createElement(ButtonSet["default"], {
310
+ className: footerClasses,
311
+ "aria-busy": loadingActive
312
+ }, Array.isArray(secondaryButtons) && secondaryButtons.length <= 2 ? secondaryButtons.map((_ref3, i) => {
313
+ let {
314
+ buttonText,
315
+ onClick: onButtonClick
316
+ } = _ref3;
317
+ return /*#__PURE__*/React__default["default"].createElement(Button["default"], {
318
+ key: `${buttonText}-${i}`,
319
+ kind: "secondary",
320
+ onClick: onButtonClick
321
+ }, buttonText);
322
+ }) : secondaryButtonText && /*#__PURE__*/React__default["default"].createElement(Button["default"], {
323
+ disabled: loadingActive,
324
+ kind: "secondary",
325
+ onClick: onSecondaryButtonClick,
326
+ ref: secondaryButton
327
+ }, secondaryButtonText), /*#__PURE__*/React__default["default"].createElement(Button["default"], {
328
+ className: primaryButtonClass,
329
+ kind: danger ? 'danger' : 'primary',
330
+ disabled: loadingActive || primaryButtonDisabled,
331
+ onClick: onRequestSubmit,
332
+ ref: button
333
+ }, loadingStatus === 'inactive' ? primaryButtonText : /*#__PURE__*/React__default["default"].createElement(InlineLoading["default"], {
334
+ status: loadingStatus,
335
+ description: loadingDescription,
336
+ iconDescription: loadingIconDescription,
337
+ className: `${prefix}--inline-loading--btn`,
338
+ onSuccess: onLoadingSuccess
339
+ })))) : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, !enableDialogElement && /*#__PURE__*/React__default["default"].createElement("span", {
340
+ ref: startTrap,
341
+ tabIndex: 0,
342
+ role: "link",
343
+ className: `${prefix}--visually-hidden`
344
+ }, "Focus sentinel"), /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
268
345
  ref: innerModal,
269
346
  role: "dialog"
270
347
  }, alertDialogProps, {
@@ -284,18 +361,18 @@ const Modal = /*#__PURE__*/React__default["default"].forwardRef(function Modal(_
284
361
  className: `${prefix}--modal-header__heading`
285
362
  }, modalHeading), slug ? normalizedDecorator : decorator ? /*#__PURE__*/React__default["default"].createElement("div", {
286
363
  className: `${prefix}--modal--inner__decorator`
287
- }, normalizedDecorator) : '', !passiveModal && modalButton), /*#__PURE__*/React__default["default"].createElement(index$1.Layer, _rollupPluginBabelHelpers["extends"]({
364
+ }, normalizedDecorator) : '', !passiveModal && modalButton), /*#__PURE__*/React__default["default"].createElement(index$3.Layer, _rollupPluginBabelHelpers["extends"]({
288
365
  ref: contentRef,
289
366
  id: modalBodyId,
290
367
  className: contentClasses
291
368
  }, hasScrollingContentProps), children), !passiveModal && /*#__PURE__*/React__default["default"].createElement(ButtonSet["default"], {
292
369
  className: footerClasses,
293
370
  "aria-busy": loadingActive
294
- }, Array.isArray(secondaryButtons) && secondaryButtons.length <= 2 ? secondaryButtons.map((_ref3, i) => {
371
+ }, Array.isArray(secondaryButtons) && secondaryButtons.length <= 2 ? secondaryButtons.map((_ref4, i) => {
295
372
  let {
296
373
  buttonText,
297
374
  onClick: onButtonClick
298
- } = _ref3;
375
+ } = _ref4;
299
376
  return /*#__PURE__*/React__default["default"].createElement(Button["default"], {
300
377
  key: `${buttonText}-${i}`,
301
378
  kind: "secondary",
@@ -318,26 +395,21 @@ const Modal = /*#__PURE__*/React__default["default"].forwardRef(function Modal(_
318
395
  iconDescription: loadingIconDescription,
319
396
  className: `${prefix}--inline-loading--btn`,
320
397
  onSuccess: onLoadingSuccess
321
- }))));
322
- return /*#__PURE__*/React__default["default"].createElement(index$1.Layer, _rollupPluginBabelHelpers["extends"]({}, rest, {
398
+ })))), !enableDialogElement && /*#__PURE__*/React__default["default"].createElement("span", {
399
+ ref: endTrap,
400
+ tabIndex: 0,
401
+ role: "link",
402
+ className: `${prefix}--visually-hidden`
403
+ }, "Focus sentinel"));
404
+ return /*#__PURE__*/React__default["default"].createElement(index$3.Layer, _rollupPluginBabelHelpers["extends"]({}, rest, {
323
405
  level: 0,
324
406
  onKeyDown: handleKeyDown,
325
407
  onClick: events.composeEventHandlers([rest?.onClick, handleOnClick]),
326
- onBlur: !focusTrapWithoutSentinels ? handleBlur : () => {},
408
+ onBlur: !enableDialogElement ? handleBlur : () => {},
327
409
  className: modalClasses,
328
410
  role: "presentation",
329
411
  ref: ref
330
- }), !focusTrapWithoutSentinels && /*#__PURE__*/React__default["default"].createElement("span", {
331
- ref: startTrap,
332
- tabIndex: 0,
333
- role: "link",
334
- className: `${prefix}--visually-hidden`
335
- }, "Focus sentinel"), modalBody, !focusTrapWithoutSentinels && /*#__PURE__*/React__default["default"].createElement("span", {
336
- ref: endTrap,
337
- tabIndex: 0,
338
- role: "link",
339
- className: `${prefix}--visually-hidden`
340
- }, "Focus sentinel"));
412
+ }), modalBody);
341
413
  });
342
414
  Modal.propTypes = {
343
415
  /**
@@ -17,8 +17,8 @@ var Button = require('../Button/Button.js');
17
17
  require('../Button/Button.Skeleton.js');
18
18
  var warning = require('../../internal/warning.js');
19
19
  var noopFn = require('../../internal/noopFn.js');
20
- var match = require('../../internal/keyboard/match.js');
21
20
  var keys = require('../../internal/keyboard/keys.js');
21
+ var match = require('../../internal/keyboard/match.js');
22
22
 
23
23
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
24
24
 
@@ -21,6 +21,8 @@ var MultiSelectPropTypes = require('./MultiSelectPropTypes.js');
21
21
  var index = require('../ListBox/index.js');
22
22
  var ListBoxSelection = require('../ListBox/next/ListBoxSelection.js');
23
23
  var ListBoxTrigger = require('../ListBox/next/ListBoxTrigger.js');
24
+ var keys = require('../../internal/keyboard/keys.js');
25
+ var match = require('../../internal/keyboard/match.js');
24
26
  var itemToString = require('./tools/itemToString.js');
25
27
  var mergeRefs = require('../../tools/mergeRefs.js');
26
28
  var deprecate = require('../../prop-types/deprecate.js');
@@ -31,9 +33,7 @@ require('../FluidForm/FluidForm.js');
31
33
  var FormContext = require('../FluidForm/FormContext.js');
32
34
  var Selection = require('../../internal/Selection.js');
33
35
  var react = require('@floating-ui/react');
34
- var match = require('../../internal/keyboard/match.js');
35
36
  var ListBoxPropTypes = require('../ListBox/ListBoxPropTypes.js');
36
- var keys = require('../../internal/keyboard/keys.js');
37
37
 
38
38
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
39
39
 
@@ -426,7 +426,7 @@ const FilterableMultiSelect = /*#__PURE__*/React__default["default"].forwardRef(
426
426
  });
427
427
  function clearInputValue(event) {
428
428
  const value = textInput.current?.value;
429
- if (value?.length === 1 || event && match.match(event, keys.Escape)) {
429
+ if (value?.length === 1 || event && 'key' in event && match.match(event, keys.Escape)) {
430
430
  setInputValue('');
431
431
  } else {
432
432
  setInputValue(value ?? '');
@@ -23,6 +23,8 @@ var Selection = require('../../internal/Selection.js');
23
23
  var useId = require('../../internal/useId.js');
24
24
  var mergeRefs = require('../../tools/mergeRefs.js');
25
25
  var deprecate = require('../../prop-types/deprecate.js');
26
+ var keys = require('../../internal/keyboard/keys.js');
27
+ var match = require('../../internal/keyboard/match.js');
26
28
  var usePrefix = require('../../internal/usePrefix.js');
27
29
  require('../FluidForm/FluidForm.js');
28
30
  var FormContext = require('../FluidForm/FormContext.js');
@@ -31,9 +33,7 @@ require('../Checkbox/Checkbox.Skeleton.js');
31
33
  var noopFn = require('../../internal/noopFn.js');
32
34
  var react = require('@floating-ui/react');
33
35
  var index = require('../FeatureFlags/index.js');
34
- var match = require('../../internal/keyboard/match.js');
35
36
  var ListBoxPropTypes = require('../ListBox/ListBoxPropTypes.js');
36
- var keys = require('../../internal/keyboard/keys.js');
37
37
 
38
38
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
39
39
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright IBM Corp. 2016, 2023
2
+ * Copyright IBM Corp. 2016, 2025
3
3
  *
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -9,17 +9,10 @@
9
9
 
10
10
  Object.defineProperty(exports, '__esModule', { value: true });
11
11
 
12
- var deprecateFieldOnObject = require('../../internal/deprecateFieldOnObject.js');
13
12
  var MultiSelect = require('./MultiSelect.js');
14
13
  var FilterableMultiSelect = require('./FilterableMultiSelect.js');
15
14
 
16
- FilterableMultiSelect["default"].displayName = 'MultiSelect.Filterable';
17
- // @ts-expect-error: The attribute indeed does not exist on the object,
18
- // but since it is already deprecated, we do not have to fix it.
19
- MultiSelect["default"].Filterable = FilterableMultiSelect["default"];
20
- if (process.env.NODE_ENV !== "production") {
21
- deprecateFieldOnObject.deprecateFieldOnObject(MultiSelect["default"], 'Filterable', FilterableMultiSelect["default"]);
22
- }
15
+ FilterableMultiSelect["default"].displayName = 'FilterableMultiSelect';
23
16
 
24
17
  exports.MultiSelect = MultiSelect["default"];
25
18
  exports["default"] = MultiSelect["default"];
@@ -1,11 +1,11 @@
1
1
  /**
2
- * Copyright IBM Corp. 2016, 2023
2
+ * Copyright IBM Corp. 2016, 2025
3
3
  *
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import PropTypes from 'prop-types';
8
- import React, { type ReactNode, type MouseEvent, type ComponentType, type FunctionComponent, type ButtonHTMLAttributes, type HTMLAttributes } from 'react';
8
+ import React, { type ReactNode, type MouseEvent, type ButtonHTMLAttributes, type HTMLAttributes } from 'react';
9
9
  import { type ButtonProps } from '../Button';
10
10
  export interface NotificationActionButtonProps extends ButtonProps<'button'> {
11
11
  /**
@@ -71,16 +71,9 @@ export interface NotificationButtonProps extends ButtonHTMLAttributes<HTMLButton
71
71
  */
72
72
  notificationType?: 'toast' | 'inline' | 'actionable';
73
73
  /**
74
- * Optional prop to allow overriding the icon rendering.
75
- * Can be a React component class
74
+ * A component used to render an icon.
76
75
  */
77
- renderIcon?: ComponentType<{
78
- className?: string;
79
- name?: string;
80
- }> | FunctionComponent<{
81
- className?: string;
82
- name?: string;
83
- }>;
76
+ renderIcon?: React.ElementType;
84
77
  }
85
78
  export declare function NotificationButton({ 'aria-label': ariaLabel, ariaLabel: deprecatedAriaLabel, className, type, renderIcon: IconTag, name, notificationType, ...rest }: NotificationButtonProps): import("react/jsx-runtime").JSX.Element;
86
79
  export declare namespace NotificationButton {
@@ -108,8 +101,7 @@ export declare namespace NotificationButton {
108
101
  */
109
102
  notificationType: PropTypes.Requireable<string>;
110
103
  /**
111
- * Optional prop to allow overriding the icon rendering.
112
- * Can be a React component class
104
+ * A component used to render an icon.
113
105
  */
114
106
  renderIcon: PropTypes.Requireable<object>;
115
107
  /**
@@ -20,6 +20,8 @@ var Button = require('../Button/Button.js');
20
20
  require('../Button/Button.Skeleton.js');
21
21
  var useIsomorphicEffect = require('../../internal/useIsomorphicEffect.js');
22
22
  var useNoInteractiveChildren = require('../../internal/useNoInteractiveChildren.js');
23
+ var keys = require('../../internal/keyboard/keys.js');
24
+ var match = require('../../internal/keyboard/match.js');
23
25
  var usePrefix = require('../../internal/usePrefix.js');
24
26
  var useId = require('../../internal/useId.js');
25
27
  var noopFn = require('../../internal/noopFn.js');
@@ -27,9 +29,7 @@ var wrapFocus = require('../../internal/wrapFocus.js');
27
29
  var index = require('../FeatureFlags/index.js');
28
30
  var warning = require('../../internal/warning.js');
29
31
  var deprecateValuesWithin = require('../../prop-types/deprecateValuesWithin.js');
30
- var match = require('../../internal/keyboard/match.js');
31
32
  var Text = require('../Text/Text.js');
32
- var keys = require('../../internal/keyboard/keys.js');
33
33
 
34
34
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
35
35
 
@@ -155,8 +155,7 @@ NotificationButton.propTypes = {
155
155
  */
156
156
  notificationType: PropTypes__default["default"].oneOf(['toast', 'inline', 'actionable']),
157
157
  /**
158
- * Optional prop to allow overriding the icon rendering.
159
- * Can be a React component class
158
+ * A component used to render an icon.
160
159
  */
161
160
  renderIcon: PropTypes__default["default"].oneOfType([PropTypes__default["default"].func, PropTypes__default["default"].object]),
162
161
  /**