@carbon/react 1.84.0-rc.0 → 1.85.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 (177) hide show
  1. package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +943 -943
  2. package/es/components/AILabel/index.js +6 -1
  3. package/es/components/Checkbox/Checkbox.d.ts +2 -2
  4. package/es/components/Checkbox/Checkbox.js +8 -8
  5. package/es/components/CheckboxGroup/CheckboxGroup.d.ts +2 -2
  6. package/es/components/CheckboxGroup/CheckboxGroup.js +9 -8
  7. package/es/components/CodeSnippet/CodeSnippet.js +2 -4
  8. package/es/components/ComboBox/ComboBox.d.ts +1 -1
  9. package/es/components/ComboBox/ComboBox.js +8 -7
  10. package/es/components/ComposedModal/ComposedModal.d.ts +1 -1
  11. package/es/components/ComposedModal/ComposedModal.js +34 -12
  12. package/es/components/ContainedList/ContainedList.d.ts +1 -1
  13. package/es/components/ContainedList/ContainedList.js +4 -2
  14. package/es/components/ContentSwitcher/ContentSwitcher.js +6 -5
  15. package/es/components/DataTable/DataTable.js +3 -0
  16. package/es/components/DataTable/TableDecoratorRow.d.ts +2 -2
  17. package/es/components/DataTable/TableDecoratorRow.js +8 -8
  18. package/es/components/DataTable/TableExpandRow.d.ts +1 -1
  19. package/es/components/DataTable/TableExpandRow.js +15 -6
  20. package/es/components/DataTable/TableHeader.js +10 -10
  21. package/es/components/DataTable/TableRow.js +12 -4
  22. package/es/components/DataTable/tools/normalize.js +2 -1
  23. package/es/components/DatePickerInput/DatePickerInput.js +8 -7
  24. package/es/components/Dialog/index.d.ts +5 -1
  25. package/es/components/Dialog/index.js +20 -0
  26. package/es/components/Dropdown/Dropdown.d.ts +1 -1
  27. package/es/components/Dropdown/Dropdown.js +8 -10
  28. package/es/components/FileUploader/FileUploaderButton.js +2 -2
  29. package/es/components/FileUploader/FileUploaderDropContainer.js +2 -2
  30. package/es/components/FileUploader/FileUploaderItem.js +2 -2
  31. package/es/components/Layer/index.d.ts +1 -3
  32. package/es/components/Layer/index.js +9 -8
  33. package/es/components/Menu/Menu.js +0 -6
  34. package/es/components/Modal/Modal.d.ts +2 -2
  35. package/es/components/Modal/Modal.js +39 -11
  36. package/es/components/MultiSelect/FilterableMultiSelect.d.ts +1 -1
  37. package/es/components/MultiSelect/FilterableMultiSelect.js +29 -7
  38. package/es/components/MultiSelect/MultiSelect.d.ts +1 -1
  39. package/es/components/MultiSelect/MultiSelect.js +8 -7
  40. package/es/components/NumberInput/NumberInput.d.ts +1 -1
  41. package/es/components/NumberInput/NumberInput.js +9 -8
  42. package/es/components/OverflowMenu/OverflowMenu.js +4 -5
  43. package/es/components/PageHeader/PageHeader.d.ts +10 -9
  44. package/es/components/PageHeader/PageHeader.js +94 -34
  45. package/es/components/PageHeader/index.d.ts +2 -2
  46. package/es/components/PageHeader/index.js +1 -1
  47. package/es/components/Popover/index.js +2 -1
  48. package/es/components/RadioButton/RadioButton.d.ts +2 -2
  49. package/es/components/RadioButton/RadioButton.js +8 -8
  50. package/es/components/RadioButtonGroup/RadioButtonGroup.d.ts +2 -2
  51. package/es/components/RadioButtonGroup/RadioButtonGroup.js +9 -8
  52. package/es/components/RadioTile/RadioTile.d.ts +1 -1
  53. package/es/components/RadioTile/RadioTile.js +8 -7
  54. package/es/components/Search/Search.js +0 -1
  55. package/es/components/Select/Select.d.ts +2 -2
  56. package/es/components/Select/Select.js +8 -7
  57. package/es/components/Slider/Slider.js +6 -0
  58. package/es/components/Tag/DismissibleTag.d.ts +1 -1
  59. package/es/components/Tag/DismissibleTag.js +9 -8
  60. package/es/components/Tag/Tag.d.ts +1 -1
  61. package/es/components/Tag/Tag.js +9 -8
  62. package/es/components/TextArea/TextArea.js +12 -11
  63. package/es/components/TextInput/TextInput.d.ts +1 -1
  64. package/es/components/TextInput/TextInput.js +20 -9
  65. package/es/components/Tile/Tile.d.ts +2 -2
  66. package/es/components/Tile/Tile.js +30 -36
  67. package/es/components/TileGroup/TileGroup.d.ts +4 -4
  68. package/es/components/TileGroup/TileGroup.js +45 -53
  69. package/es/components/TileGroup/index.d.ts +3 -3
  70. package/es/components/Toggletip/index.js +2 -2
  71. package/es/components/Tooltip/DefinitionTooltip.js +1 -0
  72. package/es/components/TreeView/TreeNode.js +3 -3
  73. package/es/components/TreeView/TreeView.js +3 -3
  74. package/es/components/UIShell/Content.d.ts +5 -3
  75. package/es/components/UIShell/HeaderMenuItem.js +2 -1
  76. package/es/components/UIShell/HeaderPanel.d.ts +2 -2
  77. package/es/components/UIShell/HeaderPanel.js +9 -5
  78. package/es/index.js +1 -1
  79. package/es/internal/Selection.js +8 -3
  80. package/es/internal/environment.js +1 -12
  81. package/es/internal/{__mocks__/mockHTMLElement.d.ts → index.d.ts} +2 -4
  82. package/es/internal/useOverflowItems.d.ts +29 -0
  83. package/es/internal/useOverflowItems.js +122 -0
  84. package/es/internal/useResizeObserver.d.ts +1 -1
  85. package/es/internal/utils.d.ts +14 -0
  86. package/es/internal/utils.js +18 -0
  87. package/es/tools/uniqueId.d.ts +1 -6
  88. package/lib/components/AILabel/index.js +6 -1
  89. package/lib/components/Checkbox/Checkbox.d.ts +2 -2
  90. package/lib/components/Checkbox/Checkbox.js +7 -7
  91. package/lib/components/CheckboxGroup/CheckboxGroup.d.ts +2 -2
  92. package/lib/components/CheckboxGroup/CheckboxGroup.js +8 -7
  93. package/lib/components/CodeSnippet/CodeSnippet.js +2 -4
  94. package/lib/components/ComboBox/ComboBox.d.ts +1 -1
  95. package/lib/components/ComboBox/ComboBox.js +11 -10
  96. package/lib/components/ComposedModal/ComposedModal.d.ts +1 -1
  97. package/lib/components/ComposedModal/ComposedModal.js +35 -13
  98. package/lib/components/ContainedList/ContainedList.d.ts +1 -1
  99. package/lib/components/ContainedList/ContainedList.js +4 -2
  100. package/lib/components/ContentSwitcher/ContentSwitcher.js +5 -4
  101. package/lib/components/DataTable/DataTable.js +3 -0
  102. package/lib/components/DataTable/TableDecoratorRow.d.ts +2 -2
  103. package/lib/components/DataTable/TableDecoratorRow.js +8 -8
  104. package/lib/components/DataTable/TableExpandRow.d.ts +1 -1
  105. package/lib/components/DataTable/TableExpandRow.js +14 -5
  106. package/lib/components/DataTable/TableHeader.js +9 -9
  107. package/lib/components/DataTable/TableRow.js +11 -3
  108. package/lib/components/DataTable/tools/normalize.js +2 -1
  109. package/lib/components/DatePickerInput/DatePickerInput.js +7 -6
  110. package/lib/components/Dialog/index.d.ts +5 -1
  111. package/lib/components/Dialog/index.js +20 -0
  112. package/lib/components/Dropdown/Dropdown.d.ts +1 -1
  113. package/lib/components/Dropdown/Dropdown.js +12 -14
  114. package/lib/components/FileUploader/FileUploaderButton.js +2 -2
  115. package/lib/components/FileUploader/FileUploaderDropContainer.js +2 -2
  116. package/lib/components/FileUploader/FileUploaderItem.js +2 -2
  117. package/lib/components/Layer/index.d.ts +1 -3
  118. package/lib/components/Layer/index.js +9 -8
  119. package/lib/components/Menu/Menu.js +0 -6
  120. package/lib/components/Modal/Modal.d.ts +2 -2
  121. package/lib/components/Modal/Modal.js +47 -19
  122. package/lib/components/MultiSelect/FilterableMultiSelect.d.ts +1 -1
  123. package/lib/components/MultiSelect/FilterableMultiSelect.js +33 -11
  124. package/lib/components/MultiSelect/MultiSelect.d.ts +1 -1
  125. package/lib/components/MultiSelect/MultiSelect.js +13 -12
  126. package/lib/components/NumberInput/NumberInput.d.ts +1 -1
  127. package/lib/components/NumberInput/NumberInput.js +8 -7
  128. package/lib/components/OverflowMenu/OverflowMenu.js +4 -5
  129. package/lib/components/PageHeader/PageHeader.d.ts +10 -9
  130. package/lib/components/PageHeader/PageHeader.js +92 -34
  131. package/lib/components/PageHeader/index.d.ts +2 -2
  132. package/lib/components/PageHeader/index.js +0 -2
  133. package/lib/components/Popover/index.js +2 -1
  134. package/lib/components/RadioButton/RadioButton.d.ts +2 -2
  135. package/lib/components/RadioButton/RadioButton.js +7 -7
  136. package/lib/components/RadioButtonGroup/RadioButtonGroup.d.ts +2 -2
  137. package/lib/components/RadioButtonGroup/RadioButtonGroup.js +10 -9
  138. package/lib/components/RadioTile/RadioTile.d.ts +1 -1
  139. package/lib/components/RadioTile/RadioTile.js +7 -6
  140. package/lib/components/Search/Search.js +0 -1
  141. package/lib/components/Select/Select.d.ts +2 -2
  142. package/lib/components/Select/Select.js +7 -6
  143. package/lib/components/Slider/Slider.js +6 -0
  144. package/lib/components/Tag/DismissibleTag.d.ts +1 -1
  145. package/lib/components/Tag/DismissibleTag.js +8 -7
  146. package/lib/components/Tag/Tag.d.ts +1 -1
  147. package/lib/components/Tag/Tag.js +8 -7
  148. package/lib/components/TextArea/TextArea.js +11 -10
  149. package/lib/components/TextInput/TextInput.d.ts +1 -1
  150. package/lib/components/TextInput/TextInput.js +19 -8
  151. package/lib/components/Tile/Tile.d.ts +2 -2
  152. package/lib/components/Tile/Tile.js +29 -35
  153. package/lib/components/TileGroup/TileGroup.d.ts +4 -4
  154. package/lib/components/TileGroup/TileGroup.js +44 -52
  155. package/lib/components/TileGroup/index.d.ts +3 -3
  156. package/lib/components/Toggletip/index.js +2 -2
  157. package/lib/components/Tooltip/DefinitionTooltip.js +1 -0
  158. package/lib/components/TreeView/TreeNode.js +3 -3
  159. package/lib/components/TreeView/TreeView.js +3 -3
  160. package/lib/components/UIShell/Content.d.ts +5 -3
  161. package/lib/components/UIShell/HeaderMenuItem.js +2 -1
  162. package/lib/components/UIShell/HeaderPanel.d.ts +2 -2
  163. package/lib/components/UIShell/HeaderPanel.js +8 -4
  164. package/lib/index.js +1 -1
  165. package/lib/internal/Selection.js +8 -3
  166. package/lib/internal/environment.js +1 -12
  167. package/lib/internal/{__mocks__/mockHTMLElement.d.ts → index.d.ts} +2 -4
  168. package/lib/internal/useOverflowItems.d.ts +29 -0
  169. package/lib/internal/useOverflowItems.js +126 -0
  170. package/lib/internal/useResizeObserver.d.ts +1 -1
  171. package/lib/internal/utils.d.ts +14 -0
  172. package/lib/internal/utils.js +22 -0
  173. package/lib/tools/uniqueId.d.ts +1 -6
  174. package/package.json +14 -23
  175. package/telemetry.yml +3 -0
  176. package/es/tools/uniqueId.js +0 -14
  177. package/lib/tools/uniqueId.js +0 -18
@@ -18,7 +18,7 @@ var PropTypes = require('prop-types');
18
18
  var React = require('react');
19
19
  var filter = require('../ComboBox/tools/filter.js');
20
20
  var MultiSelectPropTypes = require('./MultiSelectPropTypes.js');
21
- var index = require('../ListBox/index.js');
21
+ var index$1 = require('../ListBox/index.js');
22
22
  var ListBoxSelection = require('../ListBox/next/ListBoxSelection.js');
23
23
  var ListBoxTrigger = require('../ListBox/next/ListBoxTrigger.js');
24
24
  var keys = require('../../internal/keyboard/keys.js');
@@ -33,6 +33,8 @@ require('../FluidForm/FluidForm.js');
33
33
  var FormContext = require('../FluidForm/FormContext.js');
34
34
  var Selection = require('../../internal/Selection.js');
35
35
  var react = require('@floating-ui/react');
36
+ var index = require('../AILabel/index.js');
37
+ var utils = require('../../internal/utils.js');
36
38
  var ListBoxPropTypes = require('../ListBox/ListBoxPropTypes.js');
37
39
 
38
40
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -260,6 +262,27 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
260
262
  onMenuChange?.(isOpen);
261
263
  }
262
264
  }, [isOpen, onMenuChange, open]);
265
+ React.useEffect(() => {
266
+ const handleClickOutside = event => {
267
+ const target = event.target;
268
+ const wrapper = document.getElementById(id)?.closest(`.${prefix}--multi-select__wrapper`);
269
+
270
+ // If click is outside our component and menu is open or input is focused
271
+ if (wrapper && !wrapper.contains(target)) {
272
+ if (isOpen || inputFocused) {
273
+ setIsOpen(false);
274
+ setInputFocused(false);
275
+ setInputValue('');
276
+ }
277
+ }
278
+ };
279
+ if (inputFocused || isOpen) {
280
+ document.addEventListener('mousedown', handleClickOutside);
281
+ }
282
+ return () => {
283
+ document.removeEventListener('mousedown', handleClickOutside);
284
+ };
285
+ }, [isOpen, inputFocused]);
263
286
  const {
264
287
  getToggleButtonProps,
265
288
  getLabelProps,
@@ -435,12 +458,11 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
435
458
  }
436
459
 
437
460
  // AILabel always size `mini`
438
- let normalizedDecorator = /*#__PURE__*/React__default["default"].isValidElement(slug ?? decorator) ? slug ?? decorator : null;
439
- if (normalizedDecorator && normalizedDecorator['type']?.displayName === 'AILabel') {
440
- normalizedDecorator = /*#__PURE__*/React__default["default"].cloneElement(normalizedDecorator, {
441
- size: 'mini'
442
- });
443
- }
461
+ const candidate = slug ?? decorator;
462
+ const candidateIsAILabel = utils.isComponentElement(candidate, index.AILabel);
463
+ const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
464
+ size: 'mini'
465
+ }) : null;
444
466
  const className = cx__default["default"](`${prefix}--multi-select`, `${prefix}--combo-box`, `${prefix}--multi-select--filterable`, {
445
467
  [`${prefix}--multi-select--invalid`]: invalid,
446
468
  [`${prefix}--multi-select--invalid--focused`]: invalid && inputFocused,
@@ -560,7 +582,7 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
560
582
  className: titleClasses
561
583
  }, labelProps), titleText, /*#__PURE__*/React__default["default"].createElement("span", {
562
584
  className: `${prefix}--visually-hidden`
563
- }, clearSelectionContent)) : null, /*#__PURE__*/React__default["default"].createElement(index["default"], {
585
+ }, clearSelectionContent)) : null, /*#__PURE__*/React__default["default"].createElement(index$1["default"], {
564
586
  onFocus: isFluid ? handleFocus : undefined,
565
587
  onBlur: isFluid ? handleFocus : undefined,
566
588
  className: className,
@@ -616,7 +638,7 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
616
638
  translateWithId: translateWithId
617
639
  }))), slug ? normalizedDecorator : decorator ? /*#__PURE__*/React__default["default"].createElement("div", {
618
640
  className: `${prefix}--list-box__inner-wrapper--decorator`
619
- }, normalizedDecorator) : '', /*#__PURE__*/React__default["default"].createElement(index["default"].Menu, menuProps, isOpen ? sortedItems.map((item, index$1) => {
641
+ }, normalizedDecorator) : '', /*#__PURE__*/React__default["default"].createElement(index$1["default"].Menu, menuProps, isOpen ? sortedItems.map((item, index) => {
620
642
  const isChecked = controlledSelectedItems.filter(selected => isEqual__default["default"](selected, item)).length > 0;
621
643
  const itemProps = getItemProps({
622
644
  item,
@@ -634,11 +656,11 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
634
656
  // eslint-disable-line @typescript-eslint/no-unused-vars
635
657
  ...modifiedItemProps
636
658
  } = itemProps;
637
- return /*#__PURE__*/React__default["default"].createElement(index["default"].MenuItem, _rollupPluginBabelHelpers["extends"]({
659
+ return /*#__PURE__*/React__default["default"].createElement(index$1["default"].MenuItem, _rollupPluginBabelHelpers["extends"]({
638
660
  key: itemProps.id,
639
661
  "aria-label": itemText,
640
662
  isActive: isChecked,
641
- isHighlighted: highlightedIndex === index$1,
663
+ isHighlighted: highlightedIndex === index,
642
664
  title: itemText,
643
665
  disabled: disabled
644
666
  }, modifiedItemProps), /*#__PURE__*/React__default["default"].createElement("div", {
@@ -5,7 +5,7 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import { UseSelectProps } from 'downshift';
8
- import React, { ReactNode } from 'react';
8
+ import React, { type ReactNode } from 'react';
9
9
  import { type ListBoxSize, type ListBoxType } from '../ListBox';
10
10
  import { MultiSelectSortingProps } from './MultiSelectPropTypes';
11
11
  import { ListBoxProps } from '../ListBox/ListBox';
@@ -16,7 +16,7 @@ var Downshift = require('downshift');
16
16
  var isEqual = require('react-fast-compare');
17
17
  var PropTypes = require('prop-types');
18
18
  var React = require('react');
19
- var index$1 = require('../ListBox/index.js');
19
+ var index$2 = require('../ListBox/index.js');
20
20
  var MultiSelectPropTypes = require('./MultiSelectPropTypes.js');
21
21
  var sorting = require('./tools/sorting.js');
22
22
  var Selection = require('../../internal/Selection.js');
@@ -33,6 +33,8 @@ require('../Checkbox/Checkbox.Skeleton.js');
33
33
  var noopFn = require('../../internal/noopFn.js');
34
34
  var react = require('@floating-ui/react');
35
35
  var index = require('../FeatureFlags/index.js');
36
+ var index$1 = require('../AILabel/index.js');
37
+ var utils = require('../../internal/utils.js');
36
38
  var ListBoxPropTypes = require('../ListBox/ListBoxPropTypes.js');
37
39
 
38
40
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -420,12 +422,11 @@ const MultiSelect = /*#__PURE__*/React__default["default"].forwardRef(({
420
422
  } : {};
421
423
 
422
424
  // AILabel always size `mini`
423
- let normalizedDecorator = /*#__PURE__*/React__default["default"].isValidElement(slug ?? decorator) ? slug ?? decorator : null;
424
- if (normalizedDecorator && normalizedDecorator['type']?.displayName === 'AILabel') {
425
- normalizedDecorator = /*#__PURE__*/React__default["default"].cloneElement(normalizedDecorator, {
426
- size: 'mini'
427
- });
428
- }
425
+ const candidate = slug ?? decorator;
426
+ const candidateIsAILabel = utils.isComponentElement(candidate, index$1.AILabel);
427
+ const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
428
+ size: 'mini'
429
+ }) : null;
429
430
  const itemsSelectedText = selectedItems.length > 0 && selectedItems.map(item => item?.text);
430
431
  const selectedItemsLength = selectAll ? selectedItems.filter(item => !item.isSelectAll).length : selectedItems.length;
431
432
 
@@ -453,7 +454,7 @@ const MultiSelect = /*#__PURE__*/React__default["default"].forwardRef(({
453
454
  className: titleClasses
454
455
  }, labelProps), titleText && titleText, selectedItems.length > 0 && /*#__PURE__*/React__default["default"].createElement("span", {
455
456
  className: `${prefix}--visually-hidden`
456
- }, clearSelectionDescription, " ", selectedItems.length, ' ', itemsSelectedText, ",", clearSelectionText)), /*#__PURE__*/React__default["default"].createElement(index$1["default"], {
457
+ }, clearSelectionDescription, " ", selectedItems.length, ' ', itemsSelectedText, ",", clearSelectionText)), /*#__PURE__*/React__default["default"].createElement(index$2["default"], {
457
458
  onFocus: isFluid ? handleFocus : undefined,
458
459
  onBlur: isFluid ? handleFocus : undefined,
459
460
  type: type,
@@ -474,7 +475,7 @@ const MultiSelect = /*#__PURE__*/React__default["default"].forwardRef(({
474
475
  }), /*#__PURE__*/React__default["default"].createElement("div", {
475
476
  className: multiSelectFieldWrapperClasses,
476
477
  ref: enableFloatingStyles ? refs.setReference : null
477
- }, selectedItems.length > 0 && /*#__PURE__*/React__default["default"].createElement(index$1["default"].Selection, {
478
+ }, selectedItems.length > 0 && /*#__PURE__*/React__default["default"].createElement(index$2["default"].Selection, {
478
479
  readOnly: readOnly,
479
480
  clearSelection: !disabled && !readOnly ? clearSelection : noopFn.noopFn,
480
481
  selectionCount: selectedItemsLength
@@ -493,12 +494,12 @@ const MultiSelect = /*#__PURE__*/React__default["default"].forwardRef(({
493
494
  }, readOnlyEventHandlers), /*#__PURE__*/React__default["default"].createElement("span", {
494
495
  id: fieldLabelId,
495
496
  className: `${prefix}--list-box__label`
496
- }, label), /*#__PURE__*/React__default["default"].createElement(index$1["default"].MenuIcon, {
497
+ }, label), /*#__PURE__*/React__default["default"].createElement(index$2["default"].MenuIcon, {
497
498
  isOpen: isOpen,
498
499
  translateWithId: translateWithId
499
500
  })), slug ? normalizedDecorator : decorator ? /*#__PURE__*/React__default["default"].createElement("div", {
500
501
  className: `${prefix}--list-box__inner-wrapper--decorator`
501
- }, normalizedDecorator) : ''), /*#__PURE__*/React__default["default"].createElement(index$1["default"].Menu, menuProps, isOpen && sortItems(filteredItems, sortOptions).map((item, index) => {
502
+ }, normalizedDecorator) : ''), /*#__PURE__*/React__default["default"].createElement(index$2["default"].Menu, menuProps, isOpen && sortItems(filteredItems, sortOptions).map((item, index) => {
502
503
  const isChecked = selectedItems.filter(selected => isEqual__default["default"](selected, item)).length > 0;
503
504
  const {
504
505
  hasIndividualSelections,
@@ -513,7 +514,7 @@ const MultiSelect = /*#__PURE__*/React__default["default"].forwardRef(({
513
514
  ['aria-selected']: isChecked
514
515
  });
515
516
  const itemText = itemToString(item);
516
- return /*#__PURE__*/React__default["default"].createElement(index$1["default"].MenuItem, _rollupPluginBabelHelpers["extends"]({
517
+ return /*#__PURE__*/React__default["default"].createElement(index$2["default"].MenuItem, _rollupPluginBabelHelpers["extends"]({
517
518
  key: itemProps.id,
518
519
  isActive: isChecked && !item['isSelectAll'],
519
520
  "aria-label": itemText,
@@ -4,7 +4,7 @@
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, { ReactNode } from 'react';
7
+ import React, { type ReactNode } from 'react';
8
8
  import { TranslateWithId } from '../../types/common';
9
9
  import { type NumberFormatOptions } from '@carbon/utilities';
10
10
  export declare const translationIds: {
@@ -27,6 +27,8 @@ var utilities = require('@carbon/utilities');
27
27
  var keys = require('../../internal/keyboard/keys.js');
28
28
  var match = require('../../internal/keyboard/match.js');
29
29
  var NumberFormatPropTypes = require('./NumberFormatPropTypes.js');
30
+ var index = require('../AILabel/index.js');
31
+ var utils = require('../../internal/utils.js');
30
32
  var Text = require('../Text/Text.js');
31
33
 
32
34
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -272,16 +274,15 @@ const NumberInput = /*#__PURE__*/React__default["default"].forwardRef(function N
272
274
  };
273
275
 
274
276
  // AILabel always size `mini`
275
- let normalizedDecorator = /*#__PURE__*/React__default["default"].isValidElement(slug ?? decorator) ? slug ?? decorator : null;
276
- if (normalizedDecorator && normalizedDecorator['type']?.displayName === 'AILabel') {
277
- normalizedDecorator = /*#__PURE__*/React__default["default"].cloneElement(normalizedDecorator, {
278
- size: 'mini'
279
- });
280
- }
277
+ const candidate = slug ?? decorator;
278
+ const candidateIsAILabel = utils.isComponentElement(candidate, index.AILabel);
279
+ const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
280
+ size: 'mini'
281
+ }) : null;
281
282
 
282
283
  // Need to update the internal value when the revert button is clicked
283
284
  let isRevertActive;
284
- if (normalizedDecorator && normalizedDecorator['type']?.displayName === 'AILabel') {
285
+ if (normalizedDecorator?.type === index.AILabel) {
285
286
  isRevertActive = normalizedDecorator.props.revertActive;
286
287
  }
287
288
  React.useEffect(() => {
@@ -154,14 +154,14 @@ const OverflowMenu = /*#__PURE__*/React.forwardRef(({
154
154
  setHasMountedTrigger(true);
155
155
  }
156
156
  }, []);
157
-
158
- // Call `onClose` when menu closes.
159
157
  React.useEffect(() => {
160
- if (!open && prevOpenState.current) {
158
+ if (open && !prevOpenState.current) {
159
+ onOpen();
160
+ } else if (!open && prevOpenState.current) {
161
161
  onClose();
162
162
  }
163
163
  prevOpenState.current = open;
164
- }, [open, onClose]);
164
+ }, [open, onClose, onOpen]);
165
165
  useOutsideClick.useOutsideClick(wrapperRef, ({
166
166
  target
167
167
  }) => {
@@ -270,7 +270,6 @@ const OverflowMenu = /*#__PURE__*/React.forwardRef(({
270
270
  }
271
271
  }
272
272
  }, !hasFocusin);
273
- onOpen();
274
273
  };
275
274
  const getTarget = () => {
276
275
  const triggerEl = triggerRef.current;
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import React, { type ComponentType, type FunctionComponent } from 'react';
8
8
  import PropTypes from 'prop-types';
9
- import { Tabs as BaseTabs } from '../Tabs/Tabs';
9
+ import { TYPES } from '../Tag/Tag';
10
10
  /**
11
11
  * ----------
12
12
  * PageHeader
@@ -199,16 +199,18 @@ declare const PageHeaderHeroImage: {
199
199
  * PageHeaderTabBar
200
200
  * ----------------
201
201
  */
202
+ interface TagItem {
203
+ type: keyof typeof TYPES;
204
+ text: string;
205
+ size?: 'sm' | 'md' | 'lg';
206
+ id: string;
207
+ }
202
208
  interface PageHeaderTabBarProps {
203
209
  children?: React.ReactNode;
204
210
  className?: string;
211
+ tags?: TagItem[];
205
212
  }
206
213
  declare const PageHeaderTabBar: React.ForwardRefExoticComponent<PageHeaderTabBarProps & React.RefAttributes<HTMLDivElement>>;
207
- interface PageHeaderTabsProps extends React.ComponentProps<typeof BaseTabs> {
208
- children?: React.ReactNode;
209
- className?: string;
210
- }
211
- declare const PageHeaderTabs: React.ForwardRefExoticComponent<PageHeaderTabsProps & React.RefAttributes<HTMLDivElement>>;
212
214
  /**
213
215
  * -------
214
216
  * Exports
@@ -272,6 +274,5 @@ declare const HeroImage: {
272
274
  };
273
275
  };
274
276
  declare const TabBar: React.ForwardRefExoticComponent<PageHeaderTabBarProps & React.RefAttributes<HTMLDivElement>>;
275
- declare const Tabs: React.ForwardRefExoticComponent<PageHeaderTabsProps & React.RefAttributes<HTMLDivElement>>;
276
- export { PageHeader, PageHeaderBreadcrumbBar, PageHeaderContent, PageHeaderContentPageActions, PageHeaderContentText, PageHeaderHeroImage, PageHeaderTabBar, PageHeaderTabs, Root, BreadcrumbBar, Content, ContentPageActions, ContentText, HeroImage, TabBar, Tabs, };
277
- export type { PageHeaderProps, PageHeaderBreadcrumbBarProps, PageHeaderContentProps, PageHeaderContentPageActionsProps, PageHeaderContentTextProps, PageHeaderHeroImageProps, PageHeaderTabBarProps, PageHeaderTabsProps, };
277
+ export { PageHeader, PageHeaderBreadcrumbBar, PageHeaderContent, PageHeaderContentPageActions, PageHeaderContentText, PageHeaderHeroImage, PageHeaderTabBar, Root, BreadcrumbBar, Content, ContentPageActions, ContentText, HeroImage, TabBar, };
278
+ export type { PageHeaderProps, PageHeaderBreadcrumbBarProps, PageHeaderContentProps, PageHeaderContentPageActionsProps, PageHeaderContentTextProps, PageHeaderHeroImageProps, PageHeaderTabBarProps, };
@@ -24,7 +24,14 @@ var DefinitionTooltip = require('../Tooltip/DefinitionTooltip.js');
24
24
  require('../Tooltip/Tooltip.js');
25
25
  var AspectRatio = require('../AspectRatio/AspectRatio.js');
26
26
  var utilities = require('@carbon/utilities');
27
- var Tabs$1 = require('../Tabs/Tabs.js');
27
+ var Tag = require('../Tag/Tag.js');
28
+ require('../Tag/DismissibleTag.js');
29
+ var OperationalTag = require('../Tag/OperationalTag.js');
30
+ require('../Tag/SelectableTag.js');
31
+ require('../Tag/Tag.Skeleton.js');
32
+ var useOverflowItems = require('../../internal/useOverflowItems.js');
33
+ var index$1 = require('../Popover/index.js');
34
+ var useId = require('../../internal/useId.js');
28
35
  require('../Grid/FlexGrid.js');
29
36
  var Grid = require('../Grid/Grid.js');
30
37
  require('../Grid/Row.js');
@@ -365,46 +372,101 @@ PageHeaderHeroImage.propTypes = {
365
372
  const PageHeaderTabBar = /*#__PURE__*/React__default["default"].forwardRef(function PageHeaderTabBar({
366
373
  className,
367
374
  children,
375
+ tags = [],
368
376
  ...other
369
377
  }, ref) {
370
378
  const prefix = usePrefix.usePrefix();
371
379
  const classNames = cx__default["default"]({
372
380
  [`${prefix}--page-header__tab-bar`]: true
373
381
  }, className);
382
+ // Early return if no tags are provided
383
+ if (!tags.length) {
384
+ return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
385
+ className: classNames,
386
+ ref: ref
387
+ }, other), /*#__PURE__*/React__default["default"].createElement(Grid.Grid, null, /*#__PURE__*/React__default["default"].createElement(Column["default"], {
388
+ lg: 16,
389
+ md: 8,
390
+ sm: 4
391
+ }, children)));
392
+ }
393
+ const [openPopover, setOpenPopover] = React.useState(false);
394
+ const tagSize = tags[0]?.size || 'md';
395
+ const instanceId = useId.useId('PageHeaderTabBar');
396
+ const tagsWithIds = React.useMemo(() => {
397
+ return tags.map((tag, index) => ({
398
+ ...tag,
399
+ id: tag.id || `tag-${index}-${instanceId}`
400
+ }));
401
+ }, [tags]);
402
+ const tagsContainerRef = React.useRef(null);
403
+ const offsetRef = React.useRef(null);
404
+ // To close popover when window resizes
405
+ React.useEffect(() => {
406
+ const handleResize = () => {
407
+ // Close the popover when window resizes to prevent unwanted opens
408
+ setOpenPopover(false);
409
+ };
410
+ window.addEventListener('resize', handleResize);
411
+ return () => {
412
+ window.removeEventListener('resize', handleResize);
413
+ };
414
+ }, []);
415
+
416
+ // overflow items hook
417
+ const {
418
+ visibleItems = [],
419
+ hiddenItems = [],
420
+ itemRefHandler = () => {}
421
+ } = useOverflowItems["default"](tagsWithIds, tagsContainerRef, offsetRef) || {
422
+ visibleItems: [],
423
+ hiddenItems: [],
424
+ itemRefHandler: () => {}
425
+ };
426
+ const handleOverflowClick = React.useCallback(event => {
427
+ event.stopPropagation();
428
+ setOpenPopover(prev => !prev);
429
+ }, []);
430
+
431
+ // Function to render tags
432
+ const renderTags = () => /*#__PURE__*/React__default["default"].createElement("div", {
433
+ className: `${prefix}--page-header__tags`,
434
+ ref: tagsContainerRef
435
+ }, visibleItems.map(tag => /*#__PURE__*/React__default["default"].createElement(Tag["default"], {
436
+ key: tag.id,
437
+ ref: node => itemRefHandler(tag.id, node),
438
+ type: tag.type,
439
+ size: tag.size,
440
+ className: `${prefix}--page-header__tag-item`
441
+ }, tag.text)), hiddenItems.length > 0 && /*#__PURE__*/React__default["default"].createElement(index$1.Popover, {
442
+ open: openPopover,
443
+ onRequestClose: () => setOpenPopover(false)
444
+ }, /*#__PURE__*/React__default["default"].createElement(OperationalTag["default"], {
445
+ onClick: handleOverflowClick,
446
+ "aria-expanded": openPopover,
447
+ text: `+${hiddenItems.length}`,
448
+ size: tagSize
449
+ }), /*#__PURE__*/React__default["default"].createElement(index$1.PopoverContent, {
450
+ className: "tag-popover-content"
451
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
452
+ className: `${prefix}--page-header__tags-popover-list`
453
+ }, hiddenItems.map(tag => /*#__PURE__*/React__default["default"].createElement(Tag["default"], {
454
+ key: tag.id,
455
+ type: tag.type,
456
+ size: tag.size
457
+ }, tag.text))))));
374
458
  return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
375
459
  className: classNames,
376
460
  ref: ref
377
- }, other), children);
378
- });
379
- PageHeaderTabBar.displayName = 'PageHeaderTabBar';
380
- const PageHeaderTabs = /*#__PURE__*/React__default["default"].forwardRef(function PageHeaderTabs({
381
- className,
382
- children,
383
- ...other
384
- }, ref) {
385
- const prefix = usePrefix.usePrefix();
386
- const childrenArray = React__default["default"].Children.toArray(children);
387
- let tabListElement = null;
388
- const otherChildren = [];
389
-
390
- // extract the TabList component so we can wrap a needed div around for
391
- // layout purposes
392
- childrenArray.forEach(child => {
393
- if (child?.type?.displayName === 'TabList' || child?.type?.name === 'TabList') {
394
- tabListElement = child;
395
- } else {
396
- otherChildren.push(child);
397
- }
398
- });
399
- return /*#__PURE__*/React__default["default"].createElement(Tabs$1.Tabs, other, tabListElement && /*#__PURE__*/React__default["default"].createElement("div", {
400
- className: `${prefix}--page-header__tablist-wrapper`
401
- }, /*#__PURE__*/React__default["default"].createElement(Grid.Grid, null, /*#__PURE__*/React__default["default"].createElement(Column["default"], {
461
+ }, other), /*#__PURE__*/React__default["default"].createElement(Grid.Grid, null, /*#__PURE__*/React__default["default"].createElement(Column["default"], {
402
462
  lg: 16,
403
463
  md: 8,
404
464
  sm: 4
405
- }, tabListElement))), otherChildren);
465
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
466
+ className: `${prefix}--page-header__tab-bar--tablist`
467
+ }, children, tags.length > 0 && renderTags()))));
406
468
  });
407
- PageHeaderTabs.displayName = 'PageHeaderTabs';
469
+ PageHeaderTabBar.displayName = 'PageHeaderTabBar';
408
470
 
409
471
  /**
410
472
  * -------
@@ -418,15 +480,13 @@ BreadcrumbBar.displayName = 'PageHeaderBreadcrumbBar';
418
480
  const Content = PageHeaderContent;
419
481
  Content.displayName = 'PageHeaderContent';
420
482
  const ContentPageActions = PageHeaderContentPageActions;
421
- Content.displayName = 'PageHeaderContentPageActions';
483
+ ContentPageActions.displayName = 'PageHeaderContentPageActions';
422
484
  const ContentText = PageHeaderContentText;
423
- Content.displayName = 'PageHeaderContentText';
485
+ ContentText.displayName = 'PageHeaderContentText';
424
486
  const HeroImage = PageHeaderHeroImage;
425
487
  HeroImage.displayName = 'PageHeaderHeroImage';
426
488
  const TabBar = PageHeaderTabBar;
427
489
  TabBar.displayName = 'PageHeaderTabBar';
428
- const Tabs = PageHeaderTabs;
429
- Tabs.displayName = 'PageHeader.Tabs';
430
490
 
431
491
  exports.BreadcrumbBar = BreadcrumbBar;
432
492
  exports.Content = Content;
@@ -440,7 +500,5 @@ exports.PageHeaderContentPageActions = PageHeaderContentPageActions;
440
500
  exports.PageHeaderContentText = PageHeaderContentText;
441
501
  exports.PageHeaderHeroImage = PageHeaderHeroImage;
442
502
  exports.PageHeaderTabBar = PageHeaderTabBar;
443
- exports.PageHeaderTabs = PageHeaderTabs;
444
503
  exports.Root = Root;
445
504
  exports.TabBar = TabBar;
446
- exports.Tabs = Tabs;
@@ -4,5 +4,5 @@
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
- export { PageHeader, PageHeaderBreadcrumbBar, PageHeaderContent, PageHeaderContentPageActions, PageHeaderContentText, PageHeaderTabBar, PageHeaderHeroImage, PageHeaderTabs, Root, BreadcrumbBar, Content, ContentPageActions, ContentText, TabBar, HeroImage, Tabs, } from './PageHeader';
8
- export type { PageHeaderProps, PageHeaderBreadcrumbBarProps, PageHeaderContentProps, PageHeaderContentPageActionsProps, PageHeaderContentTextProps, PageHeaderTabBarProps, PageHeaderHeroImageProps, PageHeaderTabsProps, } from './PageHeader';
7
+ export { PageHeader, PageHeaderBreadcrumbBar, PageHeaderContent, PageHeaderContentPageActions, PageHeaderContentText, PageHeaderTabBar, PageHeaderHeroImage, Root, BreadcrumbBar, Content, ContentPageActions, ContentText, TabBar, HeroImage, } from './PageHeader';
8
+ export type { PageHeaderProps, PageHeaderBreadcrumbBarProps, PageHeaderContentProps, PageHeaderContentPageActionsProps, PageHeaderContentTextProps, PageHeaderTabBarProps, PageHeaderHeroImageProps, } from './PageHeader';
@@ -25,7 +25,5 @@ exports.PageHeaderContentPageActions = PageHeader.PageHeaderContentPageActions;
25
25
  exports.PageHeaderContentText = PageHeader.PageHeaderContentText;
26
26
  exports.PageHeaderHeroImage = PageHeader.PageHeaderHeroImage;
27
27
  exports.PageHeaderTabBar = PageHeader.PageHeaderTabBar;
28
- exports.PageHeaderTabs = PageHeader.PageHeaderTabs;
29
28
  exports.Root = PageHeader.Root;
30
29
  exports.TabBar = PageHeader.TabBar;
31
- exports.Tabs = PageHeader.Tabs;
@@ -21,6 +21,7 @@ var useEvent = require('../../internal/useEvent.js');
21
21
  var mapPopoverAlign = require('../../tools/mapPopoverAlign.js');
22
22
  var react = require('@floating-ui/react');
23
23
  var index = require('../FeatureFlags/index.js');
24
+ var index$1 = require('../Toggletip/index.js');
24
25
 
25
26
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
26
27
 
@@ -236,7 +237,7 @@ forwardRef) {
236
237
  // For a toggletip there is a specific trigger component, ToggletipButton.
237
238
  // In either of these cases we want to set this as the reference node for floating-ui autoAlign
238
239
  // positioning.
239
- if (enableFloatingStyles && item?.type?.displayName !== 'PopoverContent' || enableFloatingStyles && item?.type?.displayName === 'ToggletipButton') {
240
+ if (enableFloatingStyles && item?.type !== PopoverContent || enableFloatingStyles && item?.type === index$1.ToggletipButton) {
240
241
  // Set the reference element for floating-ui
241
242
  refs.setReference(node);
242
243
  }
@@ -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, { ReactNode } from 'react';
7
+ import React, { type ReactNode } from 'react';
8
8
  type ExcludedAttributes = 'onChange';
9
9
  export interface RadioButtonProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, ExcludedAttributes> {
10
10
  /**
@@ -18,6 +18,8 @@ var deprecate = require('../../prop-types/deprecate.js');
18
18
  var usePrefix = require('../../internal/usePrefix.js');
19
19
  var useId = require('../../internal/useId.js');
20
20
  var mergeRefs = require('../../tools/mergeRefs.js');
21
+ var index = require('../AILabel/index.js');
22
+ var utils = require('../../internal/utils.js');
21
23
  var Text = require('../Text/Text.js');
22
24
 
23
25
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -57,13 +59,11 @@ const RadioButton = /*#__PURE__*/React__default["default"].forwardRef((props, re
57
59
  [`${prefix}--radio-button-wrapper--decorator`]: decorator
58
60
  });
59
61
  const inputRef = React.useRef(null);
60
- let normalizedDecorator = /*#__PURE__*/React__default["default"].isValidElement(slug ?? decorator) ? slug ?? decorator : null;
61
- if (normalizedDecorator && normalizedDecorator['type']?.displayName === 'AILabel') {
62
- const size = normalizedDecorator.props?.['kind'] === 'inline' ? 'md' : 'mini';
63
- normalizedDecorator = /*#__PURE__*/React__default["default"].cloneElement(normalizedDecorator, {
64
- size
65
- });
66
- }
62
+ const candidate = slug ?? decorator;
63
+ const candidateIsAILabel = utils.isComponentElement(candidate, index.AILabel);
64
+ const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
65
+ size: candidate.props?.['kind'] === 'inline' ? 'md' : 'mini'
66
+ }) : null;
67
67
  return /*#__PURE__*/React__default["default"].createElement("div", {
68
68
  className: wrapperClasses
69
69
  }, /*#__PURE__*/React__default["default"].createElement("input", _rollupPluginBabelHelpers["extends"]({}, rest, {
@@ -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, { ReactNode } from 'react';
7
+ import React, { type ReactNode } from 'react';
8
8
  import type { RadioButtonProps } from '../RadioButton';
9
9
  export declare const RadioButtonGroupContext: React.Context<null>;
10
10
  type ExcludedAttributes = 'onChange';
@@ -13,12 +13,14 @@ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelper
13
13
  var PropTypes = require('prop-types');
14
14
  var React = require('react');
15
15
  var cx = require('classnames');
16
- var index = require('../Text/index.js');
16
+ var index$1 = require('../Text/index.js');
17
17
  var usePrefix = require('../../internal/usePrefix.js');
18
18
  var iconsReact = require('@carbon/icons-react');
19
19
  var deprecate = require('../../prop-types/deprecate.js');
20
20
  var mergeRefs = require('../../tools/mergeRefs.js');
21
21
  var useId = require('../../internal/useId.js');
22
+ var index = require('../AILabel/index.js');
23
+ var utils = require('../../internal/utils.js');
22
24
 
23
25
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
24
26
 
@@ -113,13 +115,12 @@ const RadioButtonGroup = /*#__PURE__*/React__default["default"].forwardRef((prop
113
115
  const divRef = React.useRef(null);
114
116
 
115
117
  // AILabel is always size `mini`
116
- let normalizedDecorator = /*#__PURE__*/React__default["default"].isValidElement(slug ?? decorator) ? slug ?? decorator : null;
117
- if (normalizedDecorator && normalizedDecorator['type']?.displayName === 'AILabel') {
118
- normalizedDecorator = /*#__PURE__*/React__default["default"].cloneElement(normalizedDecorator, {
119
- size: 'mini',
120
- kind: 'default'
121
- });
122
- }
118
+ const candidate = slug ?? decorator;
119
+ const candidateIsAILabel = utils.isComponentElement(candidate, index.AILabel);
120
+ const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
121
+ size: 'mini',
122
+ kind: 'default'
123
+ }) : null;
123
124
  return /*#__PURE__*/React__default["default"].createElement("div", {
124
125
  className: wrapperClasses,
125
126
  ref: mergeRefs["default"](divRef, ref)
@@ -128,7 +129,7 @@ const RadioButtonGroup = /*#__PURE__*/React__default["default"].forwardRef((prop
128
129
  disabled: disabled,
129
130
  "data-invalid": invalid ? true : undefined,
130
131
  "aria-describedby": showHelper && helperText ? helperId : undefined
131
- }, rest), legendText && /*#__PURE__*/React__default["default"].createElement(index.Legend, {
132
+ }, rest), legendText && /*#__PURE__*/React__default["default"].createElement(index$1.Legend, {
132
133
  className: `${prefix}--label`
133
134
  }, legendText, slug ? normalizedDecorator : decorator ? /*#__PURE__*/React__default["default"].createElement("div", {
134
135
  className: `${prefix}--radio-button-group-inner--decorator`
@@ -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.
@@ -22,6 +22,8 @@ var deprecate = require('../../prop-types/deprecate.js');
22
22
  var noopFn = require('../../internal/noopFn.js');
23
23
  require('../Text/index.js');
24
24
  var index = require('../FeatureFlags/index.js');
25
+ var index$1 = require('../AILabel/index.js');
26
+ var utils = require('../../internal/utils.js');
25
27
  var Text = require('../Text/Text.js');
26
28
 
27
29
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -82,12 +84,11 @@ const RadioTile = /*#__PURE__*/React__default["default"].forwardRef(function Rad
82
84
  }
83
85
 
84
86
  // AILabel is always size `xs`
85
- let normalizedDecorator = /*#__PURE__*/React__default["default"].isValidElement(slug ?? decorator) ? slug ?? decorator : null;
86
- if (normalizedDecorator && normalizedDecorator['type']?.displayName === 'AILabel') {
87
- normalizedDecorator = /*#__PURE__*/React__default["default"].cloneElement(normalizedDecorator, {
88
- size: 'xs'
89
- });
90
- }
87
+ const candidate = slug ?? decorator;
88
+ const candidateIsAILabel = utils.isComponentElement(candidate, index$1.AILabel);
89
+ const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
90
+ size: 'xs'
91
+ }) : null;
91
92
  return /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement("input", {
92
93
  checked: checked,
93
94
  className: `${prefix}--tile-input`,