@carbon/react 1.76.0 → 1.77.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 (188) hide show
  1. package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +810 -775
  2. package/es/components/Button/Button.d.ts +9 -1
  3. package/es/components/Button/Button.js +8 -0
  4. package/es/components/CodeSnippet/CodeSnippet.d.ts +2 -2
  5. package/es/components/ComboBox/ComboBox.d.ts +2 -2
  6. package/es/components/ComboBox/ComboBox.js +34 -12
  7. package/es/components/ComboButton/index.js +1 -2
  8. package/es/components/ComposedModal/ComposedModal.js +1 -1
  9. package/es/components/ContentSwitcher/index.d.ts +0 -1
  10. package/es/components/ContextMenu/useContextMenu.d.ts +0 -1
  11. package/es/components/Copy/Copy.js +1 -1
  12. package/es/components/DataTable/DataTable.d.ts +12 -20
  13. package/es/components/DataTable/DataTable.js +1 -9
  14. package/es/components/DataTable/Table.js +1 -1
  15. package/es/components/DataTable/TableActionList.d.ts +1 -1
  16. package/es/components/DataTable/TableBody.js +1 -1
  17. package/es/components/DataTable/TableContext.d.ts +0 -1
  18. package/es/components/DataTable/TableHead.d.ts +1 -1
  19. package/es/components/DataTable/TableToolbarContent.d.ts +1 -1
  20. package/es/components/DatePicker/plugins/fixEventsPlugin.js +2 -2
  21. package/es/components/DatePickerInput/DatePickerInput.js +1 -1
  22. package/es/components/Dropdown/Dropdown.js +1 -2
  23. package/es/components/FluidForm/FormContext.d.ts +0 -1
  24. package/es/components/Grid/CSSGrid.js +1 -1
  25. package/es/components/Grid/Grid.js +1 -1
  26. package/es/components/Grid/GridTypes.d.ts +0 -1
  27. package/es/components/Heading/index.d.ts +1 -1
  28. package/es/components/IconButton/index.d.ts +17 -1
  29. package/es/components/IconButton/index.js +20 -1
  30. package/es/components/InlineCheckbox/InlineCheckbox.js +1 -1
  31. package/es/components/InlineLoading/InlineLoading.d.ts +1 -1
  32. package/es/components/InlineLoading/InlineLoading.js +21 -7
  33. package/es/components/Menu/Menu.js +2 -2
  34. package/es/components/Menu/MenuContext.d.ts +1 -1
  35. package/es/components/MenuButton/index.d.ts +1 -1
  36. package/es/components/MenuButton/index.js +1 -2
  37. package/es/components/Modal/Modal.js +1 -1
  38. package/es/components/Modal/next/index.d.ts +175 -0
  39. package/es/components/MultiSelect/FilterableMultiSelect.d.ts +2 -2
  40. package/es/components/MultiSelect/FilterableMultiSelect.js +12 -5
  41. package/es/components/MultiSelect/MultiSelect.d.ts +1 -1
  42. package/es/components/MultiSelect/MultiSelect.js +1 -2
  43. package/es/components/Pagination/Pagination.js +2 -2
  44. package/es/components/Popover/index.js +2 -3
  45. package/es/components/PrimaryButton/PrimaryButton.d.ts +1 -1
  46. package/es/components/RadioTile/RadioTile.d.ts +1 -1
  47. package/es/components/SecondaryButton/SecondaryButton.d.ts +1 -1
  48. package/es/components/Slider/Slider.d.ts +1 -1
  49. package/es/components/Slider/Slider.js +1 -1
  50. package/es/components/Slider/index.d.ts +0 -1
  51. package/es/components/Tabs/Tabs.d.ts +3 -3
  52. package/es/components/Tabs/Tabs.js +4 -4
  53. package/es/components/Tag/DismissibleTag.d.ts +2 -2
  54. package/es/components/Tag/OperationalTag.d.ts +1 -1
  55. package/es/components/Tag/SelectableTag.d.ts +2 -2
  56. package/es/components/Text/index.d.ts +2 -2
  57. package/es/components/TextInput/PasswordInput.d.ts +1 -1
  58. package/es/components/Theme/index.d.ts +1 -1
  59. package/es/components/Tile/Tile.d.ts +1 -1
  60. package/es/components/Tile/Tile.js +1 -1
  61. package/es/components/Toggletip/index.d.ts +3 -3
  62. package/es/components/Toggletip/index.js +5 -4
  63. package/es/components/Tooltip/Tooltip.d.ts +17 -1
  64. package/es/components/Tooltip/Tooltip.js +12 -2
  65. package/es/components/TreeView/TreeNode.d.ts +27 -19
  66. package/es/components/TreeView/TreeNode.js +100 -31
  67. package/es/components/TreeView/TreeView.js +1 -1
  68. package/es/components/UIShell/Content.d.ts +9 -9
  69. package/es/components/UIShell/HeaderGlobalBar.d.ts +1 -1
  70. package/es/components/UIShell/HeaderMenu.d.ts +69 -25
  71. package/es/components/UIShell/HeaderMenuButton.d.ts +69 -27
  72. package/es/components/UIShell/HeaderMenuItem.d.ts +4 -3
  73. package/es/components/UIShell/HeaderMenuItem.js +1 -1
  74. package/es/components/UIShell/HeaderName.js +1 -1
  75. package/es/components/UIShell/HeaderNavigation.d.ts +69 -25
  76. package/es/components/UIShell/Link.d.ts +14 -11
  77. package/es/components/UIShell/Link.js +5 -6
  78. package/es/components/UIShell/SideNav.js +3 -3
  79. package/es/components/UIShell/SideNavLink.js +1 -1
  80. package/es/components/UIShell/SideNavMenuItem.d.ts +51 -3
  81. package/es/components/UIShell/SideNavMenuItem.js +6 -6
  82. package/es/components/UIShell/SwitcherItem.d.ts +2 -2
  83. package/es/components/UIShell/SwitcherItem.js +1 -1
  84. package/es/internal/PolymorphicProps.d.ts +0 -1
  85. package/es/internal/Selection.d.ts +38 -0
  86. package/es/internal/Selection.js +26 -113
  87. package/es/node_modules/es-toolkit/dist/compat/function/debounce.mjs.js +55 -0
  88. package/es/node_modules/es-toolkit/dist/compat/function/throttle.mjs.js +23 -0
  89. package/es/node_modules/es-toolkit/dist/function/debounce.mjs.js +70 -0
  90. package/es/tools/wrapComponent.d.ts +1 -1
  91. package/lib/components/Button/Button.d.ts +9 -1
  92. package/lib/components/Button/Button.js +8 -0
  93. package/lib/components/CodeSnippet/CodeSnippet.d.ts +2 -2
  94. package/lib/components/ComboBox/ComboBox.d.ts +2 -2
  95. package/lib/components/ComboBox/ComboBox.js +34 -12
  96. package/lib/components/ComboButton/index.js +1 -2
  97. package/lib/components/ComposedModal/ComposedModal.js +2 -2
  98. package/lib/components/ContentSwitcher/index.d.ts +0 -1
  99. package/lib/components/ContextMenu/useContextMenu.d.ts +0 -1
  100. package/lib/components/Copy/Copy.js +2 -2
  101. package/lib/components/DataTable/DataTable.d.ts +12 -20
  102. package/lib/components/DataTable/DataTable.js +1 -9
  103. package/lib/components/DataTable/Table.js +3 -3
  104. package/lib/components/DataTable/TableActionList.d.ts +1 -1
  105. package/lib/components/DataTable/TableBody.js +1 -1
  106. package/lib/components/DataTable/TableContext.d.ts +0 -1
  107. package/lib/components/DataTable/TableHead.d.ts +1 -1
  108. package/lib/components/DataTable/TableToolbarContent.d.ts +1 -1
  109. package/lib/components/DatePicker/plugins/fixEventsPlugin.js +2 -2
  110. package/lib/components/DatePickerInput/DatePickerInput.js +1 -1
  111. package/lib/components/Dropdown/Dropdown.js +1 -2
  112. package/lib/components/FluidForm/FormContext.d.ts +0 -1
  113. package/lib/components/Grid/CSSGrid.js +1 -1
  114. package/lib/components/Grid/Grid.js +1 -1
  115. package/lib/components/Grid/GridTypes.d.ts +0 -1
  116. package/lib/components/Heading/index.d.ts +1 -1
  117. package/lib/components/IconButton/index.d.ts +17 -1
  118. package/lib/components/IconButton/index.js +20 -1
  119. package/lib/components/InlineCheckbox/InlineCheckbox.js +1 -1
  120. package/lib/components/InlineLoading/InlineLoading.d.ts +1 -1
  121. package/lib/components/InlineLoading/InlineLoading.js +20 -6
  122. package/lib/components/Menu/Menu.js +2 -2
  123. package/lib/components/Menu/MenuContext.d.ts +1 -1
  124. package/lib/components/MenuButton/index.d.ts +1 -1
  125. package/lib/components/MenuButton/index.js +1 -2
  126. package/lib/components/Modal/Modal.js +2 -2
  127. package/lib/components/Modal/next/index.d.ts +175 -0
  128. package/lib/components/MultiSelect/FilterableMultiSelect.d.ts +2 -2
  129. package/lib/components/MultiSelect/FilterableMultiSelect.js +11 -4
  130. package/lib/components/MultiSelect/MultiSelect.d.ts +1 -1
  131. package/lib/components/MultiSelect/MultiSelect.js +1 -2
  132. package/lib/components/Pagination/Pagination.js +3 -2
  133. package/lib/components/Popover/index.js +2 -3
  134. package/lib/components/PrimaryButton/PrimaryButton.d.ts +1 -1
  135. package/lib/components/RadioTile/RadioTile.d.ts +1 -1
  136. package/lib/components/SecondaryButton/SecondaryButton.d.ts +1 -1
  137. package/lib/components/Slider/Slider.d.ts +1 -1
  138. package/lib/components/Slider/Slider.js +2 -2
  139. package/lib/components/Slider/index.d.ts +0 -1
  140. package/lib/components/Tabs/Tabs.d.ts +3 -3
  141. package/lib/components/Tabs/Tabs.js +6 -6
  142. package/lib/components/Tag/DismissibleTag.d.ts +2 -2
  143. package/lib/components/Tag/OperationalTag.d.ts +1 -1
  144. package/lib/components/Tag/SelectableTag.d.ts +2 -2
  145. package/lib/components/Text/index.d.ts +2 -2
  146. package/lib/components/TextInput/PasswordInput.d.ts +1 -1
  147. package/lib/components/Theme/index.d.ts +1 -1
  148. package/lib/components/Tile/Tile.d.ts +1 -1
  149. package/lib/components/Tile/Tile.js +1 -1
  150. package/lib/components/Toggletip/index.d.ts +3 -3
  151. package/lib/components/Toggletip/index.js +5 -4
  152. package/lib/components/Tooltip/Tooltip.d.ts +17 -1
  153. package/lib/components/Tooltip/Tooltip.js +12 -2
  154. package/lib/components/TreeView/TreeNode.d.ts +27 -19
  155. package/lib/components/TreeView/TreeNode.js +100 -31
  156. package/lib/components/TreeView/TreeView.js +1 -1
  157. package/lib/components/UIShell/Content.d.ts +9 -9
  158. package/lib/components/UIShell/HeaderGlobalBar.d.ts +1 -1
  159. package/lib/components/UIShell/HeaderMenu.d.ts +69 -25
  160. package/lib/components/UIShell/HeaderMenuButton.d.ts +69 -27
  161. package/lib/components/UIShell/HeaderMenuItem.d.ts +4 -3
  162. package/lib/components/UIShell/HeaderMenuItem.js +1 -1
  163. package/lib/components/UIShell/HeaderName.js +1 -1
  164. package/lib/components/UIShell/HeaderNavigation.d.ts +69 -25
  165. package/lib/components/UIShell/Link.d.ts +14 -11
  166. package/lib/components/UIShell/Link.js +4 -4
  167. package/lib/components/UIShell/SideNav.js +3 -3
  168. package/lib/components/UIShell/SideNavLink.js +1 -1
  169. package/lib/components/UIShell/SideNavMenuItem.d.ts +51 -3
  170. package/lib/components/UIShell/SideNavMenuItem.js +6 -6
  171. package/lib/components/UIShell/SwitcherItem.d.ts +2 -2
  172. package/lib/components/UIShell/SwitcherItem.js +1 -1
  173. package/lib/internal/PolymorphicProps.d.ts +0 -1
  174. package/lib/internal/Selection.d.ts +38 -0
  175. package/lib/internal/Selection.js +24 -114
  176. package/lib/node_modules/es-toolkit/dist/compat/function/debounce.mjs.js +59 -0
  177. package/lib/node_modules/es-toolkit/dist/compat/function/throttle.mjs.js +27 -0
  178. package/lib/node_modules/es-toolkit/dist/function/debounce.mjs.js +74 -0
  179. package/lib/tools/wrapComponent.d.ts +1 -1
  180. package/package.json +10 -9
  181. package/es/node_modules/@floating-ui/core/dist/floating-ui.core.mjs.js +0 -896
  182. package/es/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs.js +0 -76
  183. package/es/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs.js +0 -139
  184. package/es/tools/array.js +0 -29
  185. package/lib/node_modules/@floating-ui/core/dist/floating-ui.core.mjs.js +0 -909
  186. package/lib/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs.js +0 -80
  187. package/lib/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs.js +0 -163
  188. package/lib/tools/array.js +0 -33
@@ -22,7 +22,7 @@ export interface DismissibleTagBaseProps {
22
22
  */
23
23
  disabled?: boolean;
24
24
  /**
25
- * Specify the id for the selectabletag.
25
+ * Specify the id for the selectable tag.
26
26
  */
27
27
  id?: string;
28
28
  /**
@@ -63,7 +63,7 @@ export interface DismissibleTagBaseProps {
63
63
  }
64
64
  export type DismissibleTagProps<T extends React.ElementType> = PolymorphicProps<T, DismissibleTagBaseProps>;
65
65
  declare const DismissibleTag: {
66
- <T extends React.ElementType<any, keyof React.JSX.IntrinsicElements>>({ className, decorator, disabled, id, renderIcon, title, onClose, slug, size, text, tagTitle, type, ...other }: DismissibleTagProps<T>): import("react/jsx-runtime").JSX.Element;
66
+ <T extends React.ElementType>({ className, decorator, disabled, id, renderIcon, title, onClose, slug, size, text, tagTitle, type, ...other }: DismissibleTagProps<T>): import("react/jsx-runtime").JSX.Element;
67
67
  propTypes: {
68
68
  /**
69
69
  * Provide a custom className that is applied to the containing <span>
@@ -55,7 +55,7 @@ export interface OperationalTagBaseProps {
55
55
  }
56
56
  export type OperationalTagProps<T extends React.ElementType> = PolymorphicProps<T, OperationalTagBaseProps>;
57
57
  declare const OperationalTag: {
58
- <T extends React.ElementType<any, keyof React.JSX.IntrinsicElements>>({ className, disabled, id, renderIcon, size, text, type, ...other }: OperationalTagProps<T>): import("react/jsx-runtime").JSX.Element;
58
+ <T extends React.ElementType>({ className, disabled, id, renderIcon, size, text, type, ...other }: OperationalTagProps<T>): import("react/jsx-runtime").JSX.Element;
59
59
  propTypes: {
60
60
  /**
61
61
  * Provide a custom className that is applied to the containing <span>
@@ -18,7 +18,7 @@ export interface SelectableTagBaseProps {
18
18
  */
19
19
  disabled?: boolean;
20
20
  /**
21
- * Specify the id for the selectabletag.
21
+ * Specify the id for the selectable tag.
22
22
  */
23
23
  id?: string;
24
24
  /**
@@ -50,7 +50,7 @@ export interface SelectableTagBaseProps {
50
50
  }
51
51
  export type SelectableTagProps<T extends React.ElementType> = PolymorphicProps<T, SelectableTagBaseProps>;
52
52
  declare const SelectableTag: {
53
- <T extends React.ElementType<any, keyof React.JSX.IntrinsicElements>>({ className, disabled, id, renderIcon, onChange, onClick, selected, size, text, ...other }: SelectableTagProps<T>): import("react/jsx-runtime").JSX.Element;
53
+ <T extends React.ElementType>({ className, disabled, id, renderIcon, onChange, onClick, selected, size, text, ...other }: SelectableTagProps<T>): import("react/jsx-runtime").JSX.Element;
54
54
  propTypes: {
55
55
  /**
56
56
  * Provide a custom className that is applied to the containing <span>
@@ -9,10 +9,10 @@ import { Text, TextBaseProps, TextProps } from './Text';
9
9
  export { TextDirection, Text };
10
10
  export type { TextBaseProps, TextProps, TextDirectionProps, GetTextDirection, TextDir, };
11
11
  export declare const Label: {
12
- (props: TextProps<import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>>): import("react/jsx-runtime").JSX.Element;
12
+ (props: TextProps<React.ElementType>): import("react/jsx-runtime").JSX.Element;
13
13
  displayName: string;
14
14
  };
15
15
  export declare const Legend: {
16
- (props: TextProps<import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>>): import("react/jsx-runtime").JSX.Element;
16
+ (props: TextProps<React.ElementType>): import("react/jsx-runtime").JSX.Element;
17
17
  displayName: string;
18
18
  };
@@ -2,7 +2,7 @@ import React, { InputHTMLAttributes, ReactNode } from 'react';
2
2
  type ExcludedAttributes = 'size';
3
3
  export interface PasswordInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, ExcludedAttributes> {
4
4
  /**
5
- * Provide a custom className that is applied directly to the underlyling `<input>` node
5
+ * Provide a custom className that is applied directly to the underlying `<input>` node
6
6
  */
7
7
  className?: string;
8
8
  /**
@@ -13,7 +13,7 @@ export interface GlobalThemeProps {
13
13
  }
14
14
  export declare const ThemeContext: React.Context<GlobalThemeProps>;
15
15
  export declare const GlobalTheme: React.ForwardRefExoticComponent<GlobalThemeProps & {
16
- children?: React.ReactNode;
16
+ children?: React.ReactNode | undefined;
17
17
  } & React.RefAttributes<unknown>>;
18
18
  type ThemeBaseProps = GlobalThemeProps & {
19
19
  className?: string;
@@ -10,7 +10,7 @@ export interface TileProps extends HTMLAttributes<HTMLDivElement> {
10
10
  light?: boolean;
11
11
  /**
12
12
  * **Experimental**: Specify if the `Tile` component should be rendered with rounded corners. Only valid
13
- * when `slug` prop is present
13
+ * when an AILabel is present
14
14
  */
15
15
  hasRoundedCorners?: boolean;
16
16
  /**
@@ -66,7 +66,7 @@ Tile.propTypes = {
66
66
  decorator: PropTypes.node,
67
67
  /**
68
68
  * **Experimental**: Specify if the `Tile` component should be rendered with rounded corners. Only valid
69
- * when `slug` prop is present
69
+ * when an AILabel is present
70
70
  */
71
71
  hasRoundedCorners: PropTypes.bool,
72
72
  /**
@@ -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.
@@ -12,11 +12,11 @@ type ToggletipLabelProps<E extends ElementType> = {
12
12
  as?: E;
13
13
  children?: ReactNode;
14
14
  className?: string;
15
- };
15
+ } & Omit<React.ComponentPropsWithoutRef<E>, 'as' | 'children' | 'className'>;
16
16
  /**
17
17
  * Used to render the label for a Toggletip
18
18
  */
19
- export declare function ToggletipLabel<E extends ElementType>({ as: BaseComponent, children, className: customClassName, }: ToggletipLabelProps<E>): import("react/jsx-runtime").JSX.Element;
19
+ export declare function ToggletipLabel<E extends ElementType>({ as: BaseComponent, children, className: customClassName, ...rest }: ToggletipLabelProps<E>): import("react/jsx-runtime").JSX.Element;
20
20
  export declare namespace ToggletipLabel {
21
21
  var propTypes: {
22
22
  /**
@@ -23,14 +23,15 @@ function ToggletipLabel(_ref) {
23
23
  let {
24
24
  as: BaseComponent = 'span',
25
25
  children,
26
- className: customClassName
26
+ className: customClassName,
27
+ ...rest
27
28
  } = _ref;
28
29
  const prefix = usePrefix();
29
30
  const className = cx(`${prefix}--toggletip-label`, customClassName);
30
31
  const BaseComponentAsAny = BaseComponent;
31
- return /*#__PURE__*/React__default.createElement(BaseComponentAsAny, {
32
+ return /*#__PURE__*/React__default.createElement(BaseComponentAsAny, _extends({
32
33
  className: className
33
- }, children);
34
+ }, rest), children);
34
35
  }
35
36
  ToggletipLabel.propTypes = {
36
37
  /**
@@ -120,7 +121,7 @@ function Toggletip(_ref2) {
120
121
  }
121
122
  };
122
123
 
123
- // If the `Toggletip` is the last focusable item in the tab order, it shoudl also close when the browser window loses focus (#12922)
124
+ // If the `Toggletip` is the last focusable item in the tab order, it should also close when the browser window loses focus (#12922)
124
125
  useWindowEvent('blur', () => {
125
126
  if (open) {
126
127
  actions.close();
@@ -40,10 +40,18 @@ interface TooltipBaseProps {
40
40
  * description will not be used
41
41
  */
42
42
  description?: React.ReactNode;
43
+ /**
44
+ * Specify whether a drop shadow should be rendered
45
+ */
46
+ dropShadow?: boolean;
43
47
  /**
44
48
  * Specify the duration in milliseconds to delay before displaying the tooltip
45
49
  */
46
50
  enterDelayMs?: number;
51
+ /**
52
+ * Render the component using the high-contrast theme
53
+ */
54
+ highContrast?: boolean;
47
55
  /**
48
56
  * Provide the label to be rendered inside of the Tooltip. The label will use
49
57
  * `aria-labelledby` and will fully describe the child node that is provided.
@@ -60,7 +68,7 @@ interface TooltipBaseProps {
60
68
  leaveDelayMs?: number;
61
69
  }
62
70
  export type TooltipProps<T extends React.ElementType> = PolymorphicProps<T, TooltipBaseProps>;
63
- declare function Tooltip<T extends React.ElementType>({ align, className: customClassName, children, label, description, enterDelayMs, leaveDelayMs, defaultOpen, closeOnActivation, ...rest }: TooltipProps<T>): import("react/jsx-runtime").JSX.Element;
71
+ declare function Tooltip<T extends React.ElementType>({ align, className: customClassName, children, label, description, enterDelayMs, leaveDelayMs, defaultOpen, closeOnActivation, dropShadow, highContrast, ...rest }: TooltipProps<T>): import("react/jsx-runtime").JSX.Element;
64
72
  declare namespace Tooltip {
65
73
  var propTypes: {
66
74
  /**
@@ -94,10 +102,18 @@ declare namespace Tooltip {
94
102
  * description will not be used
95
103
  */
96
104
  description: PropTypes.Requireable<PropTypes.ReactNodeLike>;
105
+ /**
106
+ * Specify whether a drop shadow should be rendered
107
+ */
108
+ dropShadow: PropTypes.Requireable<boolean>;
97
109
  /**
98
110
  * Specify the duration in milliseconds to delay before displaying the tooltip
99
111
  */
100
112
  enterDelayMs: PropTypes.Requireable<number>;
113
+ /**
114
+ * Render the component using the high-contrast theme
115
+ */
116
+ highContrast: PropTypes.Requireable<boolean>;
101
117
  /**
102
118
  * Provide the label to be rendered inside of the Tooltip. The label will use
103
119
  * `aria-labelledby` and will fully describe the child node that is provided.
@@ -33,6 +33,8 @@ function Tooltip(_ref) {
33
33
  leaveDelayMs = 300,
34
34
  defaultOpen = false,
35
35
  closeOnActivation = false,
36
+ dropShadow = false,
37
+ highContrast = true,
36
38
  ...rest
37
39
  } = _ref;
38
40
  const tooltipRef = useRef(null);
@@ -154,8 +156,8 @@ function Tooltip(_ref) {
154
156
  React__default.createElement(Popover, _extends({}, rest, {
155
157
  align: align,
156
158
  className: cx(`${prefix}--tooltip`, customClassName),
157
- dropShadow: false,
158
- highContrast: true,
159
+ dropShadow: dropShadow,
160
+ highContrast: highContrast,
159
161
  onKeyDown: onKeyDown,
160
162
  onMouseLeave: onMouseLeave,
161
163
  open: open
@@ -226,10 +228,18 @@ Tooltip.propTypes = {
226
228
  * description will not be used
227
229
  */
228
230
  description: PropTypes.node,
231
+ /**
232
+ * Specify whether a drop shadow should be rendered
233
+ */
234
+ dropShadow: PropTypes.bool,
229
235
  /**
230
236
  * Specify the duration in milliseconds to delay before displaying the tooltip
231
237
  */
232
238
  enterDelayMs: PropTypes.number,
239
+ /**
240
+ * Render the component using the high-contrast theme
241
+ */
242
+ highContrast: PropTypes.bool,
233
243
  /**
234
244
  * Provide the label to be rendered inside of the Tooltip. The label will use
235
245
  * `aria-labelledby` and will fully describe the child node that is provided.
@@ -34,7 +34,7 @@ export type TreeNodeProps = {
34
34
  */
35
35
  disabled?: boolean;
36
36
  /**
37
- * Specify the TreeNode's ID. Must be unique in the DOM and is used for props.active and props.selected
37
+ * Specify the TreeNode's ID. Must be unique in the DOM and is used for props.active, props.selected and aria-owns
38
38
  */
39
39
  id?: string;
40
40
  /**
@@ -48,7 +48,7 @@ export type TreeNodeProps = {
48
48
  /**
49
49
  * Callback function for when the node receives or loses focus
50
50
  */
51
- onNodeFocusEvent?: (event: React.FocusEvent<HTMLLIElement>) => void;
51
+ onNodeFocusEvent?: (event: React.FocusEvent<HTMLElement>) => void;
52
52
  /**
53
53
  * Callback function for when the node is selected
54
54
  */
@@ -75,13 +75,17 @@ export type TreeNodeProps = {
75
75
  * Specify the value of the TreeNode
76
76
  */
77
77
  value?: string;
78
- } & Omit<React.LiHTMLAttributes<HTMLLIElement>, 'onSelect'>;
78
+ /**
79
+ * Optional: The URL the TreeNode is linking to
80
+ */
81
+ href?: string;
82
+ } & Omit<React.LiHTMLAttributes<HTMLElement>, 'onSelect'>;
79
83
  declare const TreeNode: React.ForwardRefExoticComponent<{
80
84
  /**
81
85
  * **Note:** this is controlled by the parent TreeView component, do not set manually.
82
86
  * The ID of the active node in the tree
83
87
  */
84
- active?: string | number | undefined;
88
+ active?: string | number;
85
89
  /**
86
90
  * Specify the children of the TreeNode
87
91
  */
@@ -89,29 +93,29 @@ declare const TreeNode: React.ForwardRefExoticComponent<{
89
93
  /**
90
94
  * Specify an optional className to be applied to the TreeNode
91
95
  */
92
- className?: string | undefined;
96
+ className?: string;
93
97
  /**
94
98
  * **[Experimental]** The default expansion state of the node.
95
99
  * *This is only supported with the `enable-treeview-controllable` feature flag!*
96
100
  */
97
- defaultIsExpanded?: boolean | undefined;
101
+ defaultIsExpanded?: boolean;
98
102
  /**
99
103
  * **Note:** this is controlled by the parent TreeView component, do not set manually.
100
104
  * TreeNode depth to determine spacing
101
105
  */
102
- depth?: number | undefined;
106
+ depth?: number;
103
107
  /**
104
108
  * Specify if the TreeNode is disabled
105
109
  */
106
- disabled?: boolean | undefined;
110
+ disabled?: boolean;
107
111
  /**
108
- * Specify the TreeNode's ID. Must be unique in the DOM and is used for props.active and props.selected
112
+ * Specify the TreeNode's ID. Must be unique in the DOM and is used for props.active, props.selected and aria-owns
109
113
  */
110
- id?: string | undefined;
114
+ id?: string;
111
115
  /**
112
116
  * Specify if the TreeNode is expanded (only applicable to parent nodes)
113
117
  */
114
- isExpanded?: boolean | undefined;
118
+ isExpanded?: boolean;
115
119
  /**
116
120
  * Rendered label for the TreeNode
117
121
  */
@@ -119,32 +123,36 @@ declare const TreeNode: React.ForwardRefExoticComponent<{
119
123
  /**
120
124
  * Callback function for when the node receives or loses focus
121
125
  */
122
- onNodeFocusEvent?: ((event: React.FocusEvent<HTMLLIElement>) => void) | undefined;
126
+ onNodeFocusEvent?: (event: React.FocusEvent<HTMLElement>) => void;
123
127
  /**
124
128
  * Callback function for when the node is selected
125
129
  */
126
- onSelect?: ((event: React.MouseEvent, node?: TreeNodeProps) => void) | undefined;
130
+ onSelect?: (event: React.MouseEvent, node?: TreeNodeProps) => void;
127
131
  /**
128
132
  * Callback function for when a parent node is expanded or collapsed
129
133
  */
130
- onToggle?: ((event: React.MouseEvent, node?: TreeNodeProps) => void) | undefined;
134
+ onToggle?: (event: React.MouseEvent, node?: TreeNodeProps) => void;
131
135
  /**
132
136
  * Callback function for when any node in the tree is selected
133
137
  */
134
- onTreeSelect?: ((event: React.MouseEvent, node?: TreeNodeProps) => void) | undefined;
138
+ onTreeSelect?: (event: React.MouseEvent, node?: TreeNodeProps) => void;
135
139
  /**
136
140
  * Optional prop to allow each node to have an associated icon.
137
141
  * Can be a React component class
138
142
  */
139
- renderIcon?: React.ComponentType<{}> | undefined;
143
+ renderIcon?: ComponentType | FunctionComponent;
140
144
  /**
141
145
  * **Note:** this is controlled by the parent TreeView component, do not set manually.
142
146
  * Array containing all selected node IDs in the tree
143
147
  */
144
- selected?: (string | number)[] | undefined;
148
+ selected?: Array<string | number>;
145
149
  /**
146
150
  * Specify the value of the TreeNode
147
151
  */
148
- value?: string | undefined;
149
- } & Omit<React.LiHTMLAttributes<HTMLLIElement>, "onSelect"> & React.RefAttributes<HTMLLIElement>>;
152
+ value?: string;
153
+ /**
154
+ * Optional: The URL the TreeNode is linking to
155
+ */
156
+ href?: string;
157
+ } & Omit<React.LiHTMLAttributes<HTMLElement>, "onSelect"> & React.RefAttributes<HTMLElement>>;
150
158
  export default TreeNode;
@@ -35,6 +35,7 @@ const TreeNode = /*#__PURE__*/React__default.forwardRef((_ref, forwardedRef) =>
35
35
  renderIcon: Icon,
36
36
  selected: propSelected,
37
37
  value,
38
+ href,
38
39
  ...rest
39
40
  } = _ref;
40
41
  // These are provided by the parent TreeView component
@@ -69,6 +70,7 @@ const TreeNode = /*#__PURE__*/React__default.forwardRef((_ref, forwardedRef) =>
69
70
  depth: depth + 1,
70
71
  disabled: disabled || node.props.disabled,
71
72
  onTreeSelect,
73
+ onNodeFocusEvent,
72
74
  selected,
73
75
  tabIndex: !node.props.disabled && -1 || null
74
76
  });
@@ -94,6 +96,9 @@ const TreeNode = /*#__PURE__*/React__default.forwardRef((_ref, forwardedRef) =>
94
96
 
95
97
  // Prevent the node from being selected
96
98
  event.stopPropagation();
99
+ if (href) {
100
+ event.preventDefault();
101
+ }
97
102
  if (!enableTreeviewControllable) {
98
103
  onToggle?.(event, {
99
104
  id,
@@ -121,6 +126,12 @@ const TreeNode = /*#__PURE__*/React__default.forwardRef((_ref, forwardedRef) =>
121
126
  }
122
127
  }
123
128
  function handleKeyDown(event) {
129
+ function getFocusableNode(node) {
130
+ if (node?.classList.contains(`${prefix}--tree-node`)) {
131
+ return node;
132
+ }
133
+ return node?.firstChild;
134
+ }
124
135
  if (disabled) {
125
136
  return;
126
137
  }
@@ -133,6 +144,9 @@ const TreeNode = /*#__PURE__*/React__default.forwardRef((_ref, forwardedRef) =>
133
144
  if (node.classList.contains(`${prefix}--tree-parent-node`)) {
134
145
  return node;
135
146
  }
147
+ if (node.classList.contains(`${prefix}--tree-node-link-parent`)) {
148
+ return node.firstChild;
149
+ }
136
150
  if (node.classList.contains(`${prefix}--tree`)) {
137
151
  return null;
138
152
  }
@@ -153,7 +167,7 @@ const TreeNode = /*#__PURE__*/React__default.forwardRef((_ref, forwardedRef) =>
153
167
  * When focus is on a leaf node or a closed parent node, move focus to
154
168
  * its parent node (unless its depth is level 1)
155
169
  */
156
- const parentNode = findParentTreeNode(currentNode.current?.parentElement || null);
170
+ const parentNode = findParentTreeNode(href ? currentNode.current?.parentElement?.parentElement : currentNode.current?.parentElement);
157
171
  if (parentNode instanceof HTMLElement) {
158
172
  parentNode.focus();
159
173
  }
@@ -165,7 +179,7 @@ const TreeNode = /*#__PURE__*/React__default.forwardRef((_ref, forwardedRef) =>
165
179
  * When focus is on an expanded parent node, move focus to the first
166
180
  * child node
167
181
  */
168
- (currentNode.current?.lastChild?.firstChild).focus();
182
+ getFocusableNode(href ? currentNode.current?.parentElement?.lastChild?.firstChild : currentNode.current?.lastChild?.firstChild).focus();
169
183
  } else {
170
184
  if (!enableTreeviewControllable) {
171
185
  onToggle?.(event, {
@@ -180,6 +194,9 @@ const TreeNode = /*#__PURE__*/React__default.forwardRef((_ref, forwardedRef) =>
180
194
  }
181
195
  if (matches(event, [Enter, Space])) {
182
196
  event.preventDefault();
197
+ if (href) {
198
+ currentNode.current?.click();
199
+ }
183
200
  handleClick(event);
184
201
  }
185
202
  rest?.onKeyDown?.(event);
@@ -232,9 +249,10 @@ const TreeNode = /*#__PURE__*/React__default.forwardRef((_ref, forwardedRef) =>
232
249
  }, [children, depth, Icon, isExpanded, enableTreeviewControllable, setExpanded]);
233
250
  const treeNodeProps = {
234
251
  ...rest,
235
- ['aria-current']: isActive || undefined,
236
- ['aria-selected']: disabled ? undefined : isSelected,
252
+ ['aria-current']: !href ? isActive || undefined : isActive ? 'page' : undefined,
253
+ ['aria-selected']: !href ? disabled ? undefined : isSelected : undefined,
237
254
  ['aria-disabled']: disabled,
255
+ ['aria-owns']: children ? `${id}-subtree` : undefined,
238
256
  className: treeNodeClasses,
239
257
  id,
240
258
  onBlur: handleFocusEvent,
@@ -244,39 +262,86 @@ const TreeNode = /*#__PURE__*/React__default.forwardRef((_ref, forwardedRef) =>
244
262
  role: 'treeitem'
245
263
  };
246
264
  if (!children) {
265
+ if (href) {
266
+ return /*#__PURE__*/React__default.createElement("li", {
267
+ role: "none"
268
+ }, /*#__PURE__*/React__default.createElement("a", _extends({}, treeNodeProps, {
269
+ ref: setRefs,
270
+ href: !disabled ? href : undefined
271
+ }), /*#__PURE__*/React__default.createElement("div", {
272
+ className: `${prefix}--tree-node__label`,
273
+ ref: currentNodeLabel
274
+ }, Icon && /*#__PURE__*/React__default.createElement(Icon, {
275
+ className: `${prefix}--tree-node__icon`
276
+ }), label)));
277
+ } else {
278
+ return /*#__PURE__*/React__default.createElement("li", _extends({}, treeNodeProps, {
279
+ ref: setRefs
280
+ }), /*#__PURE__*/React__default.createElement("div", {
281
+ className: `${prefix}--tree-node__label`,
282
+ ref: currentNodeLabel
283
+ }, Icon && /*#__PURE__*/React__default.createElement(Icon, {
284
+ className: `${prefix}--tree-node__icon`
285
+ }), label));
286
+ }
287
+ }
288
+ if (href) {
289
+ return /*#__PURE__*/React__default.createElement("li", {
290
+ role: "none",
291
+ className: `${prefix}--tree-node-link-parent`
292
+ }, /*#__PURE__*/React__default.createElement("a", _extends({}, treeNodeProps, {
293
+ "aria-expanded": !!expanded,
294
+ ref: setRefs,
295
+ href: !disabled ? href : undefined
296
+ }), /*#__PURE__*/React__default.createElement("div", {
297
+ className: `${prefix}--tree-node__label`,
298
+ ref: currentNodeLabel
299
+ }, /*#__PURE__*/React__default.createElement("span", {
300
+ className: `${prefix}--tree-parent-node__toggle`
301
+ // @ts-ignore
302
+ ,
303
+ disabled: disabled,
304
+ onClick: handleToggleClick
305
+ }, /*#__PURE__*/React__default.createElement(CaretDown, {
306
+ className: toggleClasses
307
+ })), /*#__PURE__*/React__default.createElement("span", {
308
+ className: `${prefix}--tree-node__label__details`
309
+ }, Icon && /*#__PURE__*/React__default.createElement(Icon, {
310
+ className: `${prefix}--tree-node__icon`
311
+ }), label))), /*#__PURE__*/React__default.createElement("ul", {
312
+ id: `${id}-subtree`,
313
+ role: "group",
314
+ className: cx(`${prefix}--tree-node__children`, {
315
+ [`${prefix}--tree-node--hidden`]: !expanded
316
+ })
317
+ }, nodesWithProps));
318
+ } else {
247
319
  return /*#__PURE__*/React__default.createElement("li", _extends({}, treeNodeProps, {
320
+ "aria-expanded": !!expanded,
248
321
  ref: setRefs
249
322
  }), /*#__PURE__*/React__default.createElement("div", {
250
323
  className: `${prefix}--tree-node__label`,
251
324
  ref: currentNodeLabel
325
+ }, /*#__PURE__*/React__default.createElement("span", {
326
+ className: `${prefix}--tree-parent-node__toggle`
327
+ // @ts-ignore
328
+ ,
329
+ disabled: disabled,
330
+ onClick: handleToggleClick
331
+ }, /*#__PURE__*/React__default.createElement(CaretDown, {
332
+ className: toggleClasses
333
+ })), /*#__PURE__*/React__default.createElement("span", {
334
+ className: `${prefix}--tree-node__label__details`
252
335
  }, Icon && /*#__PURE__*/React__default.createElement(Icon, {
253
336
  className: `${prefix}--tree-node__icon`
254
- }), label));
337
+ }), label)), /*#__PURE__*/React__default.createElement("ul", {
338
+ id: `${id}-subtree`,
339
+ role: "group",
340
+ className: cx(`${prefix}--tree-node__children`, {
341
+ [`${prefix}--tree-node--hidden`]: !expanded
342
+ })
343
+ }, nodesWithProps));
255
344
  }
256
- return /*#__PURE__*/React__default.createElement("li", _extends({}, treeNodeProps, {
257
- "aria-expanded": !!expanded,
258
- ref: setRefs
259
- }), /*#__PURE__*/React__default.createElement("div", {
260
- className: `${prefix}--tree-node__label`,
261
- ref: currentNodeLabel
262
- }, /*#__PURE__*/React__default.createElement("span", {
263
- className: `${prefix}--tree-parent-node__toggle`
264
- // @ts-ignore
265
- ,
266
- disabled: disabled,
267
- onClick: handleToggleClick
268
- }, /*#__PURE__*/React__default.createElement(CaretDown, {
269
- className: toggleClasses
270
- })), /*#__PURE__*/React__default.createElement("span", {
271
- className: `${prefix}--tree-node__label__details`
272
- }, Icon && /*#__PURE__*/React__default.createElement(Icon, {
273
- className: `${prefix}--tree-node__icon`
274
- }), label)), /*#__PURE__*/React__default.createElement("ul", {
275
- role: "group",
276
- className: cx(`${prefix}--tree-node__children`, {
277
- [`${prefix}--tree-node--hidden`]: !expanded
278
- })
279
- }, nodesWithProps));
280
345
  });
281
346
  TreeNode.propTypes = {
282
347
  /**
@@ -307,7 +372,7 @@ TreeNode.propTypes = {
307
372
  */
308
373
  disabled: PropTypes.bool,
309
374
  /**
310
- * Specify the TreeNode's ID. Must be unique in the DOM and is used for props.active and props.selected
375
+ * Specify the TreeNode's ID. Must be unique in the DOM and is used for props.active, props.selected and aria-owns
311
376
  */
312
377
  id: PropTypes.string,
313
378
  /**
@@ -349,7 +414,11 @@ TreeNode.propTypes = {
349
414
  /**
350
415
  * Specify the value of the TreeNode
351
416
  */
352
- value: PropTypes.string
417
+ value: PropTypes.string,
418
+ /**
419
+ * Optional: The URL the TreeNode is linking to
420
+ */
421
+ href: PropTypes.string
353
422
  };
354
423
  TreeNode.displayName = 'TreeNode';
355
424
 
@@ -192,7 +192,7 @@ const TreeView = _ref => {
192
192
  if (node.classList.contains(`${prefix}--tree-node--disabled`) || node.classList.contains(`${prefix}--tree-node--hidden`)) {
193
193
  return NodeFilter.FILTER_REJECT;
194
194
  }
195
- if (node.matches(`li.${prefix}--tree-node`)) {
195
+ if (node.matches(`.${prefix}--tree-node`)) {
196
196
  return NodeFilter.FILTER_ACCEPT;
197
197
  }
198
198
  return NodeFilter.FILTER_SKIP;
@@ -68,33 +68,33 @@ declare const Content: {
68
68
  results?: number | undefined;
69
69
  security?: string | undefined;
70
70
  unselectable?: "on" | "off" | undefined;
71
- inputMode?: "search" | "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
71
+ inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
72
72
  is?: string | undefined;
73
73
  "aria-activedescendant"?: string | undefined;
74
74
  "aria-atomic"?: (boolean | "true" | "false") | undefined;
75
- "aria-autocomplete"?: "list" | "none" | "inline" | "both" | undefined;
75
+ "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined;
76
76
  "aria-braillelabel"?: string | undefined;
77
77
  "aria-brailleroledescription"?: string | undefined;
78
78
  "aria-busy"?: (boolean | "true" | "false") | undefined;
79
- "aria-checked"?: boolean | "true" | "false" | "mixed" | undefined;
79
+ "aria-checked"?: boolean | "false" | "mixed" | "true" | undefined;
80
80
  "aria-colcount"?: number | undefined;
81
81
  "aria-colindex"?: number | undefined;
82
82
  "aria-colindextext"?: string | undefined;
83
83
  "aria-colspan"?: number | undefined;
84
84
  "aria-controls"?: string | undefined;
85
- "aria-current"?: boolean | "true" | "false" | "time" | "step" | "date" | "page" | "location" | undefined;
85
+ "aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined;
86
86
  "aria-describedby"?: string | undefined;
87
87
  "aria-description"?: string | undefined;
88
88
  "aria-details"?: string | undefined;
89
89
  "aria-disabled"?: (boolean | "true" | "false") | undefined;
90
- "aria-dropeffect"?: "link" | "none" | "copy" | "move" | "execute" | "popup" | undefined;
90
+ "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined;
91
91
  "aria-errormessage"?: string | undefined;
92
92
  "aria-expanded"?: (boolean | "true" | "false") | undefined;
93
93
  "aria-flowto"?: string | undefined;
94
94
  "aria-grabbed"?: (boolean | "true" | "false") | undefined;
95
- "aria-haspopup"?: boolean | "true" | "false" | "dialog" | "grid" | "listbox" | "menu" | "tree" | undefined;
95
+ "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined;
96
96
  "aria-hidden"?: (boolean | "true" | "false") | undefined;
97
- "aria-invalid"?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
97
+ "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined;
98
98
  "aria-keyshortcuts"?: string | undefined;
99
99
  "aria-label"?: string | undefined;
100
100
  "aria-labelledby"?: string | undefined;
@@ -107,9 +107,9 @@ declare const Content: {
107
107
  "aria-owns"?: string | undefined;
108
108
  "aria-placeholder"?: string | undefined;
109
109
  "aria-posinset"?: number | undefined;
110
- "aria-pressed"?: boolean | "true" | "false" | "mixed" | undefined;
110
+ "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined;
111
111
  "aria-readonly"?: (boolean | "true" | "false") | undefined;
112
- "aria-relevant"?: "text" | "all" | "additions" | "additions removals" | "additions text" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | undefined;
112
+ "aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined;
113
113
  "aria-required"?: (boolean | "true" | "false") | undefined;
114
114
  "aria-roledescription"?: string | undefined;
115
115
  "aria-rowcount"?: number | undefined;
@@ -7,5 +7,5 @@
7
7
  /**
8
8
  * Generic container for `HeaderGlobalAction` components
9
9
  */
10
- declare const HeaderGlobalBar: (props: import("../../types/common").ReactAttr<"div">) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
10
+ declare const HeaderGlobalBar: (props: import("../../types/common").ReactAttr<"div">) => React.ReactElement;
11
11
  export default HeaderGlobalBar;