@carbon/react 1.106.0 → 1.107.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 (161) hide show
  1. package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +1017 -982
  2. package/es/components/Accordion/AccordionItem.d.ts +2 -2
  3. package/es/components/Button/Button.d.ts +2 -2
  4. package/es/components/Button/Button.js +1 -1
  5. package/es/components/Checkbox/Checkbox.js +2 -1
  6. package/es/components/CheckboxGroup/CheckboxGroup.js +2 -1
  7. package/es/components/ComboBox/ComboBox.d.ts +1 -1
  8. package/es/components/ComboBox/ComboBox.js +1 -1
  9. package/es/components/ComboButton/index.js +2 -2
  10. package/es/components/ContentSwitcher/ContentSwitcher.d.ts +1 -1
  11. package/es/components/ContentSwitcher/ContentSwitcher.js +24 -15
  12. package/es/components/DataTable/DataTable.d.ts +3 -3
  13. package/es/components/DataTable/TableActionList.d.ts +1 -1
  14. package/es/components/DataTable/TableHead.d.ts +1 -1
  15. package/es/components/DataTable/TableSlugRow.d.ts +2 -2
  16. package/es/components/DataTable/TableSlugRow.js +8 -11
  17. package/es/components/DataTable/TableToolbarContent.d.ts +1 -1
  18. package/es/components/DataTable/TableToolbarSearch.d.ts +5 -1
  19. package/es/components/DatePicker/DatePicker.js +15 -13
  20. package/es/components/DatePicker/plugins/fixEventsPlugin.js +2 -3
  21. package/es/components/Dropdown/Dropdown.d.ts +1 -1
  22. package/es/components/FluidTimePicker/FluidTimePicker.d.ts +1 -1
  23. package/es/components/FluidTimePicker/FluidTimePicker.js +6 -4
  24. package/es/components/FluidTimePickerSelect/FluidTimePickerSelect.d.ts +4 -0
  25. package/es/components/FluidTimePickerSelect/FluidTimePickerSelect.js +2 -1
  26. package/es/components/FluidTimePickerSelect/index.js +18 -0
  27. package/es/components/Grid/CSSGrid.js +11 -6
  28. package/es/components/Grid/Column.d.ts +2 -2
  29. package/es/components/Grid/ColumnHang.d.ts +3 -3
  30. package/es/components/Grid/ColumnHang.js +1 -1
  31. package/es/components/Grid/FlexGrid.js +5 -3
  32. package/es/components/Grid/Grid.js +2 -1
  33. package/es/components/Grid/GridTypes.d.ts +5 -0
  34. package/es/components/Grid/Row.d.ts +3 -3
  35. package/es/components/Grid/Row.js +1 -1
  36. package/es/components/Menu/Menu.js +1 -1
  37. package/es/components/Menu/MenuItem.js +4 -0
  38. package/es/components/Modal/Modal.d.ts +1 -1
  39. package/es/components/Modal/Modal.js +20 -6
  40. package/es/components/MultiSelect/FilterableMultiSelect.d.ts +1 -1
  41. package/es/components/MultiSelect/FilterableMultiSelect.js +3 -2
  42. package/es/components/MultiSelect/MultiSelect.d.ts +1 -1
  43. package/es/components/NumberInput/NumberInput.js +4 -2
  44. package/es/components/OverflowMenu/OverflowMenu.js +11 -12
  45. package/es/components/Pagination/Pagination.d.ts +1 -1
  46. package/es/components/Pagination/Pagination.js +2 -0
  47. package/es/components/Popover/index.js +14 -1
  48. package/es/components/RadioButtonGroup/RadioButtonGroup.d.ts +1 -1
  49. package/es/components/RadioButtonGroup/RadioButtonGroup.js +8 -6
  50. package/es/components/Search/Search.Skeleton.d.ts +12 -3
  51. package/es/components/Search/Search.Skeleton.js +16 -8
  52. package/es/components/Search/Search.d.ts +1 -1
  53. package/es/components/Search/Search.js +4 -4
  54. package/es/components/Select/Select.d.ts +1 -1
  55. package/es/components/Select/Select.js +7 -6
  56. package/es/components/Slider/Slider.js +58 -76
  57. package/es/components/Tabs/Tabs.js +2 -2
  58. package/es/components/TextArea/TextArea.js +5 -2
  59. package/es/components/TextInput/ControlledPasswordInput.js +2 -1
  60. package/es/components/TextInput/PasswordInput.d.ts +2 -2
  61. package/es/components/TextInput/PasswordInput.js +33 -21
  62. package/es/components/TextInput/TextInput.Skeleton.d.ts +10 -2
  63. package/es/components/TextInput/TextInput.Skeleton.js +10 -4
  64. package/es/components/TextInput/TextInput.d.ts +1 -1
  65. package/es/components/TextInput/TextInput.js +39 -30
  66. package/es/components/TextInput/util.d.ts +1 -0
  67. package/es/components/TextInput/util.js +1 -1
  68. package/es/components/Theme/index.d.ts +2 -2
  69. package/es/components/Theme/index.js +3 -3
  70. package/es/components/TimePicker/TimePicker.js +5 -2
  71. package/es/components/TreeView/TreeNode.js +2 -2
  72. package/es/components/UIShell/HeaderGlobalBar.d.ts +1 -1
  73. package/es/components/UIShell/HeaderMenu.d.ts +1 -1
  74. package/es/components/UIShell/HeaderMenu.js +5 -3
  75. package/es/index.js +2 -2
  76. package/es/internal/FloatingMenu.d.ts +5 -1
  77. package/es/internal/hasHelperText.d.ts +8 -0
  78. package/es/internal/hasHelperText.js +11 -0
  79. package/es/tools/wrapComponent.d.ts +3 -3
  80. package/es/tools/wrapComponent.js +1 -1
  81. package/lib/components/Accordion/AccordionItem.d.ts +2 -2
  82. package/lib/components/Button/Button.d.ts +2 -2
  83. package/lib/components/Button/Button.js +1 -1
  84. package/lib/components/Checkbox/Checkbox.js +2 -1
  85. package/lib/components/CheckboxGroup/CheckboxGroup.js +2 -1
  86. package/lib/components/ComboBox/ComboBox.d.ts +1 -1
  87. package/lib/components/ComboBox/ComboBox.js +1 -1
  88. package/lib/components/ComboButton/index.js +2 -2
  89. package/lib/components/ContentSwitcher/ContentSwitcher.d.ts +1 -1
  90. package/lib/components/ContentSwitcher/ContentSwitcher.js +22 -13
  91. package/lib/components/DataTable/DataTable.d.ts +3 -3
  92. package/lib/components/DataTable/TableActionList.d.ts +1 -1
  93. package/lib/components/DataTable/TableHead.d.ts +1 -1
  94. package/lib/components/DataTable/TableSlugRow.d.ts +2 -2
  95. package/lib/components/DataTable/TableSlugRow.js +7 -10
  96. package/lib/components/DataTable/TableToolbarContent.d.ts +1 -1
  97. package/lib/components/DataTable/TableToolbarSearch.d.ts +5 -1
  98. package/lib/components/DatePicker/DatePicker.js +15 -13
  99. package/lib/components/DatePicker/plugins/fixEventsPlugin.js +1 -2
  100. package/lib/components/Dropdown/Dropdown.d.ts +1 -1
  101. package/lib/components/FluidTimePicker/FluidTimePicker.d.ts +1 -1
  102. package/lib/components/FluidTimePicker/FluidTimePicker.js +5 -3
  103. package/lib/components/FluidTimePickerSelect/FluidTimePickerSelect.d.ts +4 -0
  104. package/lib/components/FluidTimePickerSelect/FluidTimePickerSelect.js +2 -1
  105. package/lib/components/FluidTimePickerSelect/index.js +17 -0
  106. package/lib/components/Grid/CSSGrid.js +11 -6
  107. package/lib/components/Grid/Column.d.ts +2 -2
  108. package/lib/components/Grid/ColumnHang.d.ts +3 -3
  109. package/lib/components/Grid/ColumnHang.js +1 -1
  110. package/lib/components/Grid/FlexGrid.js +5 -3
  111. package/lib/components/Grid/Grid.js +2 -1
  112. package/lib/components/Grid/GridTypes.d.ts +5 -0
  113. package/lib/components/Grid/Row.d.ts +3 -3
  114. package/lib/components/Grid/Row.js +1 -1
  115. package/lib/components/Menu/Menu.js +1 -1
  116. package/lib/components/Menu/MenuItem.js +4 -0
  117. package/lib/components/Modal/Modal.d.ts +1 -1
  118. package/lib/components/Modal/Modal.js +19 -5
  119. package/lib/components/MultiSelect/FilterableMultiSelect.d.ts +1 -1
  120. package/lib/components/MultiSelect/FilterableMultiSelect.js +3 -2
  121. package/lib/components/MultiSelect/MultiSelect.d.ts +1 -1
  122. package/lib/components/NumberInput/NumberInput.js +4 -2
  123. package/lib/components/OverflowMenu/OverflowMenu.js +10 -11
  124. package/lib/components/Pagination/Pagination.d.ts +1 -1
  125. package/lib/components/Pagination/Pagination.js +2 -0
  126. package/lib/components/Popover/index.js +14 -1
  127. package/lib/components/RadioButtonGroup/RadioButtonGroup.d.ts +1 -1
  128. package/lib/components/RadioButtonGroup/RadioButtonGroup.js +7 -5
  129. package/lib/components/Search/Search.Skeleton.d.ts +12 -3
  130. package/lib/components/Search/Search.Skeleton.js +15 -7
  131. package/lib/components/Search/Search.d.ts +1 -1
  132. package/lib/components/Search/Search.js +4 -4
  133. package/lib/components/Select/Select.d.ts +1 -1
  134. package/lib/components/Select/Select.js +7 -6
  135. package/lib/components/Slider/Slider.js +58 -76
  136. package/lib/components/Tabs/Tabs.js +2 -2
  137. package/lib/components/TextArea/TextArea.js +5 -2
  138. package/lib/components/TextInput/ControlledPasswordInput.js +2 -1
  139. package/lib/components/TextInput/PasswordInput.d.ts +2 -2
  140. package/lib/components/TextInput/PasswordInput.js +33 -21
  141. package/lib/components/TextInput/TextInput.Skeleton.d.ts +10 -2
  142. package/lib/components/TextInput/TextInput.Skeleton.js +10 -4
  143. package/lib/components/TextInput/TextInput.d.ts +1 -1
  144. package/lib/components/TextInput/TextInput.js +39 -30
  145. package/lib/components/TextInput/util.d.ts +1 -0
  146. package/lib/components/TextInput/util.js +1 -1
  147. package/lib/components/Theme/index.d.ts +2 -2
  148. package/lib/components/Theme/index.js +2 -2
  149. package/lib/components/TimePicker/TimePicker.js +5 -2
  150. package/lib/components/TreeView/TreeNode.js +1 -1
  151. package/lib/components/UIShell/HeaderGlobalBar.d.ts +1 -1
  152. package/lib/components/UIShell/HeaderMenu.d.ts +1 -1
  153. package/lib/components/UIShell/HeaderMenu.js +5 -3
  154. package/lib/index.js +2 -2
  155. package/lib/internal/FloatingMenu.d.ts +5 -1
  156. package/lib/internal/hasHelperText.d.ts +8 -0
  157. package/lib/internal/hasHelperText.js +11 -0
  158. package/lib/tools/wrapComponent.d.ts +3 -3
  159. package/lib/tools/wrapComponent.js +1 -1
  160. package/package.json +11 -11
  161. package/telemetry.yml +1 -0
@@ -11,6 +11,7 @@ const require_Text = require("../Text/Text.js");
11
11
  const require_deprecate = require("../../prop-types/deprecate.js");
12
12
  const require_utils = require("../../internal/utils.js");
13
13
  const require_useMergedRefs = require("../../internal/useMergedRefs.js");
14
+ const require_hasHelperText = require("../../internal/hasHelperText.js");
14
15
  const require_useNormalizedInputProps = require("../../internal/useNormalizedInputProps.js");
15
16
  const require_index = require("../AILabel/index.js");
16
17
  const require_FormContext = require("../FluidForm/FormContext.js");
@@ -79,7 +80,7 @@ const TextInput = (0, react.forwardRef)(({ className, decorator, disabled = fals
79
80
  title: placeholder,
80
81
  disabled: normalizedProps.disabled,
81
82
  readOnly,
82
- ["aria-describedby"]: helperText && normalizedProps.helperId,
83
+ ["aria-describedby"]: require_hasHelperText.hasHelperText(helperText) && !normalizedProps.invalid ? normalizedProps.helperId : void 0,
83
84
  ...rest
84
85
  };
85
86
  if (enableCounter) sharedTextInputProps.maxLength = maxCount;
@@ -128,7 +129,7 @@ const TextInput = (0, react.forwardRef)(({ className, decorator, disabled = fals
128
129
  className: `${prefix}--text-input__label-wrapper`,
129
130
  children: [label, counter]
130
131
  });
131
- const helper = typeof helperText !== "undefined" && helperText !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Text.Text, {
132
+ const helper = require_hasHelperText.hasHelperText(helperText) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Text.Text, {
132
133
  as: "div",
133
134
  id: normalizedProps.helperId,
134
135
  className: helperTextClasses,
@@ -167,34 +168,41 @@ const TextInput = (0, react.forwardRef)(({ className, decorator, disabled = fals
167
168
  const normalizedDecorator = require_utils.isComponentElement(candidate, require_index.AILabel) ? (0, react.cloneElement)(candidate, { size: "mini" }) : candidate;
168
169
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
169
170
  className: inputWrapperClasses,
170
- children: [!inline ? labelWrapper : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
171
- className: `${prefix}--text-input__label-helper-wrapper`,
172
- children: [labelWrapper, !isFluid && (normalizedProps.validation || helper)]
173
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
174
- className: fieldOuterWrapperClasses,
175
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
176
- className: fieldWrapperClasses,
177
- "data-invalid": normalizedProps.invalid || null,
178
- children: [
179
- Icon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, { className: iconClasses }),
180
- input,
181
- slug ? normalizedDecorator : decorator ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
182
- className: `${prefix}--text-input__field-inner-wrapper--decorator`,
183
- children: normalizedDecorator
184
- }) : "",
185
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
186
- className: `${prefix}--text-input__counter-alert`,
187
- role: "alert",
188
- "aria-live": "assertive",
189
- "aria-atomic": "true",
190
- ref: announcerRef,
191
- children: ariaAnnouncement
192
- }),
193
- isFluid && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("hr", { className: `${prefix}--text-input__divider` }),
194
- isFluid && !inline && normalizedProps.validation
195
- ]
196
- }), !isFluid && !inline && (normalizedProps.validation || helper)]
197
- })]
171
+ children: [
172
+ !inline ? labelWrapper : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
173
+ className: `${prefix}--text-input__label-helper-wrapper`,
174
+ children: labelWrapper
175
+ }),
176
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
177
+ className: fieldOuterWrapperClasses,
178
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
179
+ className: fieldWrapperClasses,
180
+ "data-invalid": normalizedProps.invalid || null,
181
+ children: [
182
+ input,
183
+ Icon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, { className: iconClasses }),
184
+ slug ? normalizedDecorator : decorator ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
185
+ className: `${prefix}--text-input__field-inner-wrapper--decorator`,
186
+ children: normalizedDecorator
187
+ }) : "",
188
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
189
+ className: `${prefix}--text-input__counter-alert`,
190
+ role: "alert",
191
+ "aria-live": "assertive",
192
+ "aria-atomic": "true",
193
+ ref: announcerRef,
194
+ children: ariaAnnouncement
195
+ }),
196
+ isFluid && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("hr", { className: `${prefix}--text-input__divider` }),
197
+ isFluid && !inline && normalizedProps.validation
198
+ ]
199
+ }), !isFluid && !inline && (normalizedProps.validation || helper)]
200
+ }),
201
+ inline && !isFluid && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
202
+ className: `${prefix}--text-input__label-helper-wrapper`,
203
+ children: normalizedProps.validation || helper
204
+ })
205
+ ]
198
206
  });
199
207
  });
200
208
  TextInput.displayName = "TextInput";
@@ -218,6 +226,7 @@ TextInput.propTypes = {
218
226
  placeholder: prop_types.default.string,
219
227
  readOnly: prop_types.default.bool,
220
228
  size: prop_types.default.oneOf([
229
+ "xs",
221
230
  "sm",
222
231
  "md",
223
232
  "lg"
@@ -17,5 +17,6 @@ export declare const getTextInputProps: ({ sharedTextInputProps, invalid, invali
17
17
  'aria-describedby'?: string | undefined;
18
18
  'data-invalid'?: boolean | undefined;
19
19
  'aria-invalid'?: boolean | undefined;
20
+ 'aria-errormessage'?: string | undefined;
20
21
  };
21
22
  export {};
@@ -15,7 +15,7 @@
15
15
  const invalidProps = (invalidId) => ({
16
16
  "data-invalid": true,
17
17
  "aria-invalid": true,
18
- "aria-describedby": invalidId
18
+ "aria-errormessage": invalidId
19
19
  });
20
20
  const warnProps = (warnId) => ({ "aria-describedby": warnId });
21
21
  const helperProps = (helperId) => ({ "aria-describedby": helperId });
@@ -1,11 +1,11 @@
1
1
  /**
2
- * Copyright IBM Corp. 2016, 2023
2
+ * Copyright IBM Corp. 2016, 2026
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, { ElementType } from 'react';
8
+ import React, { type ElementType } from 'react';
9
9
  import { PolymorphicProps } from '../../types/common';
10
10
  export interface GlobalThemeProps {
11
11
  theme?: 'white' | 'g10' | 'g90' | 'g100';
@@ -18,7 +18,7 @@ prop_types = require_runtime.__toESM(prop_types);
18
18
  let react_jsx_runtime = require("react/jsx-runtime");
19
19
  //#region src/components/Theme/index.tsx
20
20
  /**
21
- * Copyright IBM Corp. 2016, 2023
21
+ * Copyright IBM Corp. 2016, 2026
22
22
  *
23
23
  * This source code is licensed under the Apache-2.0 license found in the
24
24
  * LICENSE file in the root directory of this source tree.
@@ -28,7 +28,7 @@ const GlobalTheme = react.default.forwardRef(({ children, theme }, ref) => {
28
28
  const value = (0, react.useMemo)(() => {
29
29
  return { theme };
30
30
  }, [theme]);
31
- const childrenWithProps = react.default.cloneElement(children, { ref });
31
+ const childrenWithProps = (0, react.isValidElement)(children) ? (0, react.cloneElement)(children, { ref }) : children;
32
32
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ThemeContext.Provider, {
33
33
  value,
34
34
  children: childrenWithProps
@@ -24,7 +24,7 @@ let react_jsx_runtime = require("react/jsx-runtime");
24
24
  * LICENSE file in the root directory of this source tree.
25
25
  */
26
26
  const TimePicker = (0, react.forwardRef)((props, ref) => {
27
- const { children, className, inputClassName, pickerClassName, disabled = false, hideLabel, id, invalidText = "Error message goes here", invalid = false, warningText = "Warning message goes here", warning = false, labelText, light = false, maxLength = 5, onChange = () => {}, onClick = () => {}, onBlur = () => {}, pattern = "(1[012]|[1-9]):[0-5][0-9](\\s)?", placeholder = "hh:mm", readOnly, size = "md", type = "text", value, ...rest } = props;
27
+ const { ["aria-describedby"]: ariaDescribedBy, children, className, inputClassName, pickerClassName, disabled = false, hideLabel, id, invalidText = "Error message goes here", invalid = false, warningText = "Warning message goes here", warning = false, labelText, light = false, maxLength = 5, onChange = () => {}, onClick = () => {}, onBlur = () => {}, pattern = "(1[012]|[1-9]):[0-5][0-9](\\s)?", placeholder = "hh:mm", readOnly, size = "md", type = "text", value, ...rest } = props;
28
28
  const prefix = require_usePrefix.usePrefix();
29
29
  function handleOnClick(evt) {
30
30
  if (!disabled) onClick(evt);
@@ -93,6 +93,7 @@ const TimePicker = (0, react.forwardRef)((props, ref) => {
93
93
  });
94
94
  }
95
95
  const readOnlyProps = { readOnly };
96
+ const describedBy = [normalizedProps.invalid ? normalizedProps.invalidId : normalizedProps.warn ? normalizedProps.warnId : null, ariaDescribedBy].filter(Boolean).join(" ") || void 0;
96
97
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
97
98
  className: (0, classnames.default)(`${prefix}--form-item`, className),
98
99
  children: [
@@ -116,7 +117,9 @@ const TimePicker = (0, react.forwardRef)((props, ref) => {
116
117
  type,
117
118
  value,
118
119
  ...rest,
119
- ...readOnlyProps
120
+ ...readOnlyProps,
121
+ "aria-describedby": describedBy,
122
+ "aria-invalid": normalizedProps.invalid ? true : void 0
120
123
  }), (normalizedProps.invalid || normalizedProps.warn) && normalizedProps.icon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
121
124
  className: `${prefix}--time-picker__error__icon`,
122
125
  children: react.default.createElement(normalizedProps.icon, {
@@ -36,7 +36,7 @@ const extractTextContent = (node) => {
36
36
  if (typeof node === "number") return String(node);
37
37
  if (typeof node === "boolean") return String(node);
38
38
  if (Array.isArray(node)) return node.map(extractTextContent).join("");
39
- if (react.default.isValidElement(node)) {
39
+ if ((0, react.isValidElement)(node)) {
40
40
  const children = node.props.children;
41
41
  return extractTextContent(children);
42
42
  }
@@ -7,5 +7,5 @@
7
7
  /**
8
8
  * Generic container for `HeaderGlobalAction` components
9
9
  */
10
- declare const HeaderGlobalBar: (props: import("react").HTMLAttributes<"div">) => React.ReactElement<any>;
10
+ declare const HeaderGlobalBar: (props: import("react").HTMLAttributes<"div">) => import("react").ReactElement;
11
11
  export default HeaderGlobalBar;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright IBM Corp. 2016, 2025
2
+ * Copyright IBM Corp. 2016, 2026
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.
@@ -10,9 +10,11 @@ const require_usePrefix = require("../../internal/usePrefix.js");
10
10
  const require_keys = require("../../internal/keyboard/keys.js");
11
11
  const require_match = require("../../internal/keyboard/match.js");
12
12
  const require_deprecate = require("../../prop-types/deprecate.js");
13
+ const require_utils = require("../../internal/utils.js");
13
14
  const require_useMergedRefs = require("../../internal/useMergedRefs.js");
14
15
  const require_events = require("../../tools/events.js");
15
16
  const require_AriaPropTypes = require("../../prop-types/AriaPropTypes.js");
17
+ const require_HeaderMenuItem = require("./HeaderMenuItem.js");
16
18
  let classnames = require("classnames");
17
19
  classnames = require_runtime.__toESM(classnames);
18
20
  let react = require("react");
@@ -23,7 +25,7 @@ let react_jsx_runtime = require("react/jsx-runtime");
23
25
  let _carbon_icons_react = require("@carbon/icons-react");
24
26
  //#region src/components/UIShell/HeaderMenu.tsx
25
27
  /**
26
- * Copyright IBM Corp. 2016, 2025
28
+ * Copyright IBM Corp. 2016, 2026
27
29
  *
28
30
  * This source code is licensed under the Apache-2.0 license found in the
29
31
  * LICENSE file in the root directory of this source tree.
@@ -85,7 +87,7 @@ const HeaderMenu = frFn((props, ref) => {
85
87
  }
86
88
  };
87
89
  const hasActiveDescendant = (childrenArg) => react.Children.toArray(childrenArg).some((child) => {
88
- if (!(0, react.isValidElement)(child)) return false;
90
+ if (!require_utils.isComponentElement(child, require_HeaderMenuItem.default)) return false;
89
91
  const { isActive, isCurrentPage, children } = child.props;
90
92
  return isActive || isCurrentPage || Array.isArray(children) && hasActiveDescendant(children);
91
93
  });
@@ -96,7 +98,7 @@ const HeaderMenu = frFn((props, ref) => {
96
98
  * sequence when they might not want to go through all the items.
97
99
  */
98
100
  const renderMenuItem = (item, index) => {
99
- if ((0, react.isValidElement)(item)) return (0, react.cloneElement)(item, { ref: handleItemRef(index) });
101
+ if (require_utils.isComponentElement(item, require_HeaderMenuItem.default)) return (0, react.cloneElement)(item, { ref: handleItemRef(index) });
100
102
  return item;
101
103
  };
102
104
  const accessibilityLabel = {
package/lib/index.js CHANGED
@@ -182,9 +182,9 @@ const require_Header = require("./components/UIShell/Header.js");
182
182
  const require_HeaderContainer = require("./components/UIShell/HeaderContainer.js");
183
183
  const require_HeaderGlobalAction = require("./components/UIShell/HeaderGlobalAction.js");
184
184
  const require_HeaderGlobalBar = require("./components/UIShell/HeaderGlobalBar.js");
185
+ const require_HeaderMenuItem = require("./components/UIShell/HeaderMenuItem.js");
185
186
  const require_HeaderMenu = require("./components/UIShell/HeaderMenu.js");
186
187
  const require_HeaderMenuButton = require("./components/UIShell/HeaderMenuButton.js");
187
- const require_HeaderMenuItem = require("./components/UIShell/HeaderMenuItem.js");
188
188
  const require_HeaderName = require("./components/UIShell/HeaderName.js");
189
189
  const require_HeaderNavigation = require("./components/UIShell/HeaderNavigation.js");
190
190
  const require_SwitcherItem = require("./components/UIShell/SwitcherItem.js");
@@ -227,9 +227,9 @@ const require_FluidPasswordInput = require("./components/FluidTextInput/FluidPas
227
227
  const require_FluidTextInput_Skeleton = require("./components/FluidTextInput/FluidTextInput.Skeleton.js");
228
228
  const require_FluidNumberInput = require("./components/FluidNumberInput/FluidNumberInput.js");
229
229
  const require_FluidNumberInput_Skeleton = require("./components/FluidNumberInput/FluidNumberInput.Skeleton.js");
230
+ const require_FluidTimePickerSelect = require("./components/FluidTimePickerSelect/FluidTimePickerSelect.js");
230
231
  const require_FluidTimePicker = require("./components/FluidTimePicker/FluidTimePicker.js");
231
232
  const require_FluidTimePicker_Skeleton = require("./components/FluidTimePicker/FluidTimePicker.Skeleton.js");
232
- const require_FluidTimePickerSelect = require("./components/FluidTimePickerSelect/FluidTimePickerSelect.js");
233
233
  const require_index$16 = require("./components/OverflowMenuV2/index.js");
234
234
  const require_Pagination$1 = require("./components/Pagination/experimental/Pagination.js");
235
235
  const require_PageSelector = require("./components/Pagination/experimental/PageSelector.js");
@@ -17,13 +17,17 @@ interface Container {
17
17
  rect: DOMRect;
18
18
  position: string;
19
19
  }
20
+ type FloatingMenuChildProps = {
21
+ ref?: (node: HTMLElement | null) => void;
22
+ style?: CSSProperties;
23
+ };
20
24
  export type MenuDirection = typeof DIRECTION_LEFT | typeof DIRECTION_TOP | typeof DIRECTION_RIGHT | typeof DIRECTION_BOTTOM;
21
25
  export type MenuOffset = Offset | ((menuBody: HTMLElement, menuDirection: MenuDirection, triggerEl?: HTMLElement | null, flipped?: boolean) => Offset);
22
26
  interface FloatingMenuProps {
23
27
  /**
24
28
  * Contents of the floating menu.
25
29
  */
26
- children: ReactElement;
30
+ children: ReactElement<FloatingMenuChildProps>;
27
31
  /**
28
32
  * Whether the menu alignment should be flipped.
29
33
  */
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Copyright IBM Corp. 2026
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import type { ReactNode } from 'react';
8
+ export declare const hasHelperText: (helperText: ReactNode) => boolean;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Copyright IBM Corp. 2016, 2026
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ //#region src/internal/hasHelperText.ts
9
+ const hasHelperText = (helperText) => typeof helperText !== "undefined" && helperText !== null && helperText !== "";
10
+ //#endregion
11
+ exports.hasHelperText = hasHelperText;
@@ -1,10 +1,10 @@
1
1
  /**
2
- * Copyright IBM Corp. 2016, 2025
2
+ * Copyright IBM Corp. 2016, 2026
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, { type HTMLAttributes } from 'react';
7
+ import { type HTMLAttributes, type ReactElement } from 'react';
8
8
  type HTMLTagName = keyof HTMLElementTagNameMap;
9
9
  type WrapComponentArgs<T extends HTMLTagName> = {
10
10
  name: string;
@@ -15,5 +15,5 @@ type WrapComponentArgs<T extends HTMLTagName> = {
15
15
  * @param {{ name: string, type: string, className?: string | (prefix: string) => string }} props
16
16
  * @returns
17
17
  */
18
- declare const wrapComponent: <T extends HTMLTagName>({ name, className: getClassName, type, }: WrapComponentArgs<T>) => ((props: HTMLAttributes<T>) => React.ReactElement<any>);
18
+ declare const wrapComponent: <T extends HTMLTagName>({ name, className: getClassName, type, }: WrapComponentArgs<T>) => ((props: HTMLAttributes<T>) => ReactElement);
19
19
  export default wrapComponent;
@@ -15,7 +15,7 @@ let prop_types = require("prop-types");
15
15
  prop_types = require_runtime.__toESM(prop_types);
16
16
  //#region src/tools/wrapComponent.ts
17
17
  /**
18
- * Copyright IBM Corp. 2016, 2025
18
+ * Copyright IBM Corp. 2016, 2026
19
19
  *
20
20
  * This source code is licensed under the Apache-2.0 license found in the
21
21
  * LICENSE file in the root directory of this source tree.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@carbon/react",
3
3
  "description": "React components for the Carbon Design System",
4
- "version": "1.106.0",
4
+ "version": "1.107.0",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/index.d.ts",
@@ -53,9 +53,9 @@
53
53
  "dependencies": {
54
54
  "@babel/runtime": "^7.27.3",
55
55
  "@carbon/feature-flags": "^1.3.0",
56
- "@carbon/icons-react": "^11.79.0",
56
+ "@carbon/icons-react": "^11.80.0",
57
57
  "@carbon/layout": "^11.52.0",
58
- "@carbon/styles": "^1.105.0",
58
+ "@carbon/styles": "^1.106.0",
59
59
  "@carbon/utilities": "^0.19.0",
60
60
  "@floating-ui/react": "^0.27.4",
61
61
  "@ibm/telemetry-js": "^1.5.0",
@@ -79,14 +79,14 @@
79
79
  "@babel/preset-react": "^7.27.1",
80
80
  "@babel/preset-typescript": "^7.27.1",
81
81
  "@carbon/test-utils": "^10.41.0",
82
- "@carbon/themes": "^11.72.0",
82
+ "@carbon/themes": "^11.73.0",
83
83
  "@figma/code-connect": "^1.4.2",
84
84
  "@stackblitz/sdk": "^1.11.0",
85
- "@storybook/addon-a11y": "^9.1.8",
86
- "@storybook/addon-docs": "^9.1.8",
87
- "@storybook/addon-links": "^9.1.8",
88
- "@storybook/builder-vite": "^9.1.8",
89
- "@storybook/react-vite": "^9.1.8",
85
+ "@storybook/addon-a11y": "^10.3.5",
86
+ "@storybook/addon-docs": "^10.3.5",
87
+ "@storybook/addon-links": "^10.3.5",
88
+ "@storybook/builder-vite": "^10.3.5",
89
+ "@storybook/react-vite": "^10.3.5",
90
90
  "@types/react-is": "^19.0.0",
91
91
  "@types/use-sync-external-store": "^1",
92
92
  "@vitejs/plugin-react": "^5.0.0",
@@ -106,7 +106,7 @@
106
106
  "remark-gfm": "^4.0.0",
107
107
  "rimraf": "^6.0.1",
108
108
  "sass": "^1.93.2",
109
- "storybook": "^9.1.8",
109
+ "storybook": "^10.3.5",
110
110
  "storybook-addon-accessibility-checker": ">=9.2.0-rc.3",
111
111
  "stream-browserify": "^3.0.0",
112
112
  "tsdown": "^0.21.0",
@@ -125,5 +125,5 @@
125
125
  "**/*.scss",
126
126
  "**/*.css"
127
127
  ],
128
- "gitHead": "5e89339998bd16c8ddd42e1cc6a2d0c15b3b0af5"
128
+ "gitHead": "13c5c427ad4413aea5184a0a593e6452bc163e4a"
129
129
  }
package/telemetry.yml CHANGED
@@ -252,6 +252,7 @@ collect:
252
252
  - warn
253
253
  - warnText
254
254
  - width
255
+ - withRowGap
255
256
  # AccordionItem
256
257
  - handleAnimationEnd
257
258
  - onHeadingClick