@carbon/react 1.102.0-rc.0 → 1.103.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 (172) hide show
  1. package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +976 -976
  2. package/es/components/Breadcrumb/BreadcrumbItem.js +1 -1
  3. package/es/components/Button/Button.Skeleton.js +2 -1
  4. package/es/components/Button/Button.d.ts +4 -4
  5. package/es/components/Button/Button.js +4 -4
  6. package/es/components/Button/index.js +1 -1
  7. package/es/components/ButtonSet/ButtonSet.js +1 -1
  8. package/es/components/Checkbox/index.js +1 -1
  9. package/es/components/CheckboxGroup/CheckboxGroup.d.ts +1 -1
  10. package/es/components/CheckboxGroup/CheckboxGroup.js +2 -2
  11. package/es/components/ComboBox/ComboBox.js +3 -4
  12. package/es/components/ComposedModal/ComposedModal.js +0 -3
  13. package/es/components/ComposedModal/ComposedModalPresence.d.ts +9 -1
  14. package/es/components/ComposedModal/ComposedModalPresence.js +14 -1
  15. package/es/components/ComposedModal/index.d.ts +1 -1
  16. package/es/components/ContainedList/index.js +1 -1
  17. package/es/components/ContentSwitcher/ContentSwitcher.js +3 -2
  18. package/es/components/DataTable/TableExpandRow.js +2 -2
  19. package/es/components/DataTable/TableHeader.js +1 -1
  20. package/es/components/DataTable/TableRow.js +1 -1
  21. package/es/components/DataTable/TableToolbarMenu.js +1 -1
  22. package/es/components/DataTable/tools/normalize.js +2 -1
  23. package/es/components/DatePicker/DatePicker.Skeleton.d.ts +8 -5
  24. package/es/components/DatePicker/DatePicker.Skeleton.js +2 -2
  25. package/es/components/DatePicker/DatePicker.js +3 -2
  26. package/es/components/DatePicker/index.js +1 -1
  27. package/es/components/DatePickerInput/DatePickerInput.js +1 -1
  28. package/es/components/Dialog/Dialog.js +1 -1
  29. package/es/components/Dropdown/Dropdown.js +1 -3
  30. package/es/components/Dropdown/index.js +1 -1
  31. package/es/components/ExpandableSearch/ExpandableSearch.js +1 -1
  32. package/es/components/FeatureFlags/index.d.ts +8 -18
  33. package/es/components/FeatureFlags/index.js +23 -103
  34. package/es/components/FileUploader/FileUploader.Skeleton.js +1 -1
  35. package/es/components/FileUploader/FileUploaderButton.d.ts +1 -1
  36. package/es/components/FileUploader/FileUploaderButton.js +3 -7
  37. package/es/components/Icon/Icon.Skeleton.js +1 -1
  38. package/es/components/IconIndicator/index.js +1 -1
  39. package/es/components/Menu/MenuItem.js +1 -1
  40. package/es/components/Modal/ModalPresence.d.ts +9 -1
  41. package/es/components/Modal/ModalPresence.js +14 -1
  42. package/es/components/Modal/index.d.ts +2 -2
  43. package/es/components/MultiSelect/MultiSelect.js +9 -10
  44. package/es/components/Notification/Notification.js +1 -1
  45. package/es/components/NumberInput/NumberInput.js +15 -13
  46. package/es/components/OverflowMenu/OverflowMenu.d.ts +1 -1
  47. package/es/components/OverflowMenu/OverflowMenu.js +3 -5
  48. package/es/components/OverflowMenuV2/index.js +1 -1
  49. package/es/components/PageHeader/PageHeader.js +2 -23
  50. package/es/components/Pagination/Pagination.Skeleton.js +1 -1
  51. package/es/components/Pagination/Pagination.d.ts +4 -0
  52. package/es/components/Pagination/Pagination.js +6 -1
  53. package/es/components/Pagination/experimental/Pagination.js +12 -1
  54. package/es/components/Popover/index.js +1 -1
  55. package/es/components/ProgressIndicator/ProgressIndicator.js +3 -3
  56. package/es/components/RadioButton/RadioButton.Skeleton.js +1 -1
  57. package/es/components/Search/index.js +1 -1
  58. package/es/components/Select/index.js +1 -1
  59. package/es/components/ShapeIndicator/index.js +1 -1
  60. package/es/components/Slider/Slider.d.ts +1 -1
  61. package/es/components/Slider/Slider.js +230 -255
  62. package/es/components/Slider/SliderHandles.js +65 -53
  63. package/es/components/Switch/IconSwitch.js +1 -1
  64. package/es/components/Tabs/Tabs.js +2 -6
  65. package/es/components/Tag/Tag.Skeleton.js +1 -1
  66. package/es/components/TextArea/TextArea.js +1 -1
  67. package/es/components/TextArea/index.js +1 -1
  68. package/es/components/TextInput/index.js +1 -1
  69. package/es/components/Tile/Tile.js +1 -1
  70. package/es/components/TileGroup/TileGroup.d.ts +1 -1
  71. package/es/components/TileGroup/TileGroup.js +2 -1
  72. package/es/components/Toggle/Toggle.Skeleton.js +1 -1
  73. package/es/components/Toggletip/index.js +1 -1
  74. package/es/components/UIShell/HeaderMenu.js +1 -1
  75. package/es/components/UIShell/HeaderPanel.js +3 -2
  76. package/es/components/UIShell/SideNav.d.ts +1 -4
  77. package/es/components/UIShell/SideNav.js +10 -25
  78. package/es/components/UIShell/SideNavContext.d.ts +17 -0
  79. package/es/components/UIShell/SideNavContext.js +24 -0
  80. package/es/components/UIShell/SideNavItems.d.ts +1 -1
  81. package/es/components/UIShell/SideNavItems.js +12 -16
  82. package/es/components/UIShell/SideNavLink.js +8 -4
  83. package/es/components/UIShell/SideNavMenu.js +7 -5
  84. package/es/components/UIShell/Switcher.js +5 -4
  85. package/es/index.js +30 -30
  86. package/es/internal/useNoInteractiveChildren.js +25 -30
  87. package/es/internal/useOverflowItems.d.ts +1 -5
  88. package/es/internal/useOverflowItems.js +6 -27
  89. package/es/internal/usePresence.d.ts +1 -1
  90. package/es/internal/usePresence.js +14 -17
  91. package/lib/components/Button/Button.Skeleton.js +2 -1
  92. package/lib/components/Button/Button.d.ts +4 -4
  93. package/lib/components/Button/Button.js +4 -4
  94. package/lib/components/Button/index.js +1 -1
  95. package/lib/components/ButtonSet/ButtonSet.js +1 -1
  96. package/lib/components/Checkbox/index.js +1 -1
  97. package/lib/components/CheckboxGroup/CheckboxGroup.d.ts +1 -1
  98. package/lib/components/CheckboxGroup/CheckboxGroup.js +1 -1
  99. package/lib/components/ComboBox/ComboBox.js +3 -4
  100. package/lib/components/ComposedModal/ComposedModal.js +0 -3
  101. package/lib/components/ComposedModal/ComposedModalPresence.d.ts +9 -1
  102. package/lib/components/ComposedModal/ComposedModalPresence.js +14 -0
  103. package/lib/components/ComposedModal/index.d.ts +1 -1
  104. package/lib/components/ContainedList/index.js +0 -3
  105. package/lib/components/ContentSwitcher/ContentSwitcher.js +2 -1
  106. package/lib/components/DataTable/TableExpandRow.js +1 -1
  107. package/lib/components/DataTable/TableToolbarMenu.js +1 -1
  108. package/lib/components/DataTable/tools/normalize.js +2 -1
  109. package/lib/components/DatePicker/DatePicker.Skeleton.d.ts +8 -5
  110. package/lib/components/DatePicker/DatePicker.Skeleton.js +2 -2
  111. package/lib/components/DatePicker/DatePicker.js +3 -2
  112. package/lib/components/DatePicker/index.js +1 -1
  113. package/lib/components/Dropdown/Dropdown.js +1 -3
  114. package/lib/components/Dropdown/index.js +1 -1
  115. package/lib/components/FeatureFlags/index.d.ts +8 -18
  116. package/lib/components/FeatureFlags/index.js +21 -102
  117. package/lib/components/FileUploader/FileUploader.Skeleton.js +1 -1
  118. package/lib/components/FileUploader/FileUploaderButton.d.ts +1 -1
  119. package/lib/components/FileUploader/FileUploaderButton.js +2 -6
  120. package/lib/components/Icon/Icon.Skeleton.js +0 -3
  121. package/lib/components/IconIndicator/index.js +0 -3
  122. package/lib/components/Modal/ModalPresence.d.ts +9 -1
  123. package/lib/components/Modal/ModalPresence.js +14 -0
  124. package/lib/components/Modal/index.d.ts +2 -2
  125. package/lib/components/MultiSelect/MultiSelect.js +8 -9
  126. package/lib/components/NumberInput/NumberInput.js +14 -12
  127. package/lib/components/OverflowMenu/OverflowMenu.d.ts +1 -1
  128. package/lib/components/OverflowMenu/OverflowMenu.js +2 -7
  129. package/lib/components/OverflowMenuV2/index.js +1 -1
  130. package/lib/components/PageHeader/PageHeader.js +2 -23
  131. package/lib/components/Pagination/Pagination.Skeleton.js +0 -3
  132. package/lib/components/Pagination/Pagination.d.ts +4 -0
  133. package/lib/components/Pagination/Pagination.js +6 -1
  134. package/lib/components/Pagination/experimental/Pagination.js +12 -1
  135. package/lib/components/ProgressIndicator/ProgressIndicator.js +3 -3
  136. package/lib/components/RadioButton/RadioButton.Skeleton.js +0 -3
  137. package/lib/components/Search/index.js +1 -1
  138. package/lib/components/Select/index.js +1 -1
  139. package/lib/components/ShapeIndicator/index.js +0 -3
  140. package/lib/components/Slider/Slider.d.ts +1 -1
  141. package/lib/components/Slider/Slider.js +229 -254
  142. package/lib/components/Slider/SliderHandles.js +64 -52
  143. package/lib/components/Tabs/Tabs.js +1 -5
  144. package/lib/components/Tag/Tag.Skeleton.js +0 -3
  145. package/lib/components/TextArea/index.js +1 -1
  146. package/lib/components/TextInput/index.js +1 -1
  147. package/lib/components/TileGroup/TileGroup.d.ts +1 -1
  148. package/lib/components/TileGroup/TileGroup.js +2 -1
  149. package/lib/components/Toggle/Toggle.Skeleton.js +0 -3
  150. package/lib/components/Toggletip/index.js +0 -3
  151. package/lib/components/UIShell/HeaderPanel.js +2 -1
  152. package/lib/components/UIShell/SideNav.d.ts +1 -4
  153. package/lib/components/UIShell/SideNav.js +8 -24
  154. package/lib/components/UIShell/SideNavContext.d.ts +17 -0
  155. package/lib/components/UIShell/SideNavContext.js +27 -0
  156. package/lib/components/UIShell/SideNavItems.d.ts +1 -1
  157. package/lib/components/UIShell/SideNavItems.js +11 -15
  158. package/lib/components/UIShell/SideNavLink.js +7 -3
  159. package/lib/components/UIShell/SideNavMenu.js +8 -6
  160. package/lib/components/UIShell/Switcher.js +4 -3
  161. package/lib/index.js +102 -100
  162. package/lib/internal/useNoInteractiveChildren.js +25 -30
  163. package/lib/internal/useOverflowItems.d.ts +1 -5
  164. package/lib/internal/useOverflowItems.js +6 -27
  165. package/lib/internal/usePresence.d.ts +1 -1
  166. package/lib/internal/usePresence.js +13 -16
  167. package/package.json +8 -8
  168. package/telemetry.yml +2 -1
  169. package/es/components/UIShell/_utils.d.ts +0 -7
  170. package/es/components/UIShell/_utils.js +0 -10
  171. package/lib/components/UIShell/_utils.d.ts +0 -7
  172. package/lib/components/UIShell/_utils.js +0 -12
@@ -6,61 +6,73 @@
6
6
  */
7
7
 
8
8
  import { extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
9
- import { PrefixContext } from '../../internal/usePrefix.js';
9
+ import { usePrefix } from '../../internal/usePrefix.js';
10
10
  import React from 'react';
11
11
 
12
12
  var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path0, _path1, _path10, _path11, _path12;
13
- const LowerHandle = props => /*#__PURE__*/React.createElement(PrefixContext.Consumer, null, prefix => /*#__PURE__*/React.createElement("svg", _extends({
14
- xmlns: "http://www.w3.org/2000/svg",
15
- viewBox: "0 0 16 24",
16
- className: `${prefix}--slider__thumb-icon ${prefix}--slider__thumb-icon--lower`
17
- }, props), _path || (_path = /*#__PURE__*/React.createElement("path", {
18
- d: "M15.08 6.46H16v11.08h-.92zM4.46 17.54c-.25 0-.46-.21-.46-.46V6.92a.465.465 0 0 1 .69-.4l8.77 5.08a.46.46 0 0 1 0 .8l-8.77 5.08c-.07.04-.15.06-.23.06Z"
19
- })), _path2 || (_path2 = /*#__PURE__*/React.createElement("path", {
20
- fill: "none",
21
- d: "M-4 0h24v24H-4z"
22
- }))));
23
- const LowerHandleFocus = props => /*#__PURE__*/React.createElement(PrefixContext.Consumer, null, prefix => /*#__PURE__*/React.createElement("svg", _extends({
24
- xmlns: "http://www.w3.org/2000/svg",
25
- viewBox: "0 0 16 24",
26
- className: `${prefix}--slider__thumb-icon ${prefix}--slider__thumb-icon--lower ${prefix}--slider__thumb-icon--focus`
27
- }, props), _path3 || (_path3 = /*#__PURE__*/React.createElement("path", {
28
- d: "M15.08 6.46H16v11.08h-.92zM4.46 17.54c-.25 0-.46-.21-.46-.46V6.92a.465.465 0 0 1 .69-.4l8.77 5.08a.46.46 0 0 1 0 .8l-8.77 5.08c-.07.04-.15.06-.23.06Z"
29
- })), _path4 || (_path4 = /*#__PURE__*/React.createElement("path", {
30
- fill: "none",
31
- d: "M-4 0h24v24H-4z"
32
- })), _path5 || (_path5 = /*#__PURE__*/React.createElement("path", {
33
- d: "M15.08 0H16v6.46h-.92z"
34
- })), _path6 || (_path6 = /*#__PURE__*/React.createElement("path", {
35
- d: "M0 0h.92v24H0zM15.08 0H16v24h-.92z"
36
- })), _path7 || (_path7 = /*#__PURE__*/React.createElement("path", {
37
- d: "M0 .92V0h16v.92zM0 24v-.92h16V24z"
38
- }))));
39
- const UpperHandle = props => /*#__PURE__*/React.createElement(PrefixContext.Consumer, null, prefix => /*#__PURE__*/React.createElement("svg", _extends({
40
- xmlns: "http://www.w3.org/2000/svg",
41
- viewBox: "0 0 16 24",
42
- className: `${prefix}--slider__thumb-icon ${prefix}--slider__thumb-icon--upper`
43
- }, props), _path8 || (_path8 = /*#__PURE__*/React.createElement("path", {
44
- d: "M0 6.46h.92v11.08H0zM11.54 6.46c.25 0 .46.21.46.46v10.15a.465.465 0 0 1-.69.4L2.54 12.4a.46.46 0 0 1 0-.8l8.77-5.08c.07-.04.15-.06.23-.06Z"
45
- })), _path9 || (_path9 = /*#__PURE__*/React.createElement("path", {
46
- fill: "none",
47
- d: "M-4 0h24v24H-4z"
48
- }))));
49
- const UpperHandleFocus = props => /*#__PURE__*/React.createElement(PrefixContext.Consumer, null, prefix => /*#__PURE__*/React.createElement("svg", _extends({
50
- xmlns: "http://www.w3.org/2000/svg",
51
- viewBox: "0 0 16 24",
52
- className: `${prefix}--slider__thumb-icon ${prefix}--slider__thumb-icon--upper ${prefix}--slider__thumb-icon--focus`
53
- }, props), _path0 || (_path0 = /*#__PURE__*/React.createElement("path", {
54
- d: "M0 6.46h.92v11.08H0zM11.54 6.46c.25 0 .46.21.46.46v10.15a.465.465 0 0 1-.69.4L2.54 12.4a.46.46 0 0 1 0-.8l8.77-5.08c.07-.04.15-.06.23-.06Z"
55
- })), _path1 || (_path1 = /*#__PURE__*/React.createElement("path", {
56
- fill: "none",
57
- d: "M-4 0h24v24H-4z"
58
- })), _path10 || (_path10 = /*#__PURE__*/React.createElement("path", {
59
- d: "M.92 24H0v-6.46h.92z"
60
- })), _path11 || (_path11 = /*#__PURE__*/React.createElement("path", {
61
- d: "M16 24h-.92V0H16zM.92 24H0V0h.92z"
62
- })), _path12 || (_path12 = /*#__PURE__*/React.createElement("path", {
63
- d: "M16 23.08V24H0v-.92zM16 0v.92H0V0z"
64
- }))));
13
+ const LowerHandle = props => {
14
+ const prefix = usePrefix();
15
+ return /*#__PURE__*/React.createElement("svg", _extends({
16
+ xmlns: "http://www.w3.org/2000/svg",
17
+ viewBox: "0 0 16 24",
18
+ className: `${prefix}--slider__thumb-icon ${prefix}--slider__thumb-icon--lower`
19
+ }, props), _path || (_path = /*#__PURE__*/React.createElement("path", {
20
+ d: "M15.08 6.46H16v11.08h-.92zM4.46 17.54c-.25 0-.46-.21-.46-.46V6.92a.465.465 0 0 1 .69-.4l8.77 5.08a.46.46 0 0 1 0 .8l-8.77 5.08c-.07.04-.15.06-.23.06Z"
21
+ })), _path2 || (_path2 = /*#__PURE__*/React.createElement("path", {
22
+ fill: "none",
23
+ d: "M-4 0h24v24H-4z"
24
+ })));
25
+ };
26
+ const LowerHandleFocus = props => {
27
+ const prefix = usePrefix();
28
+ return /*#__PURE__*/React.createElement("svg", _extends({
29
+ xmlns: "http://www.w3.org/2000/svg",
30
+ viewBox: "0 0 16 24",
31
+ className: `${prefix}--slider__thumb-icon ${prefix}--slider__thumb-icon--lower ${prefix}--slider__thumb-icon--focus`
32
+ }, props), _path3 || (_path3 = /*#__PURE__*/React.createElement("path", {
33
+ d: "M15.08 6.46H16v11.08h-.92zM4.46 17.54c-.25 0-.46-.21-.46-.46V6.92a.465.465 0 0 1 .69-.4l8.77 5.08a.46.46 0 0 1 0 .8l-8.77 5.08c-.07.04-.15.06-.23.06Z"
34
+ })), _path4 || (_path4 = /*#__PURE__*/React.createElement("path", {
35
+ fill: "none",
36
+ d: "M-4 0h24v24H-4z"
37
+ })), _path5 || (_path5 = /*#__PURE__*/React.createElement("path", {
38
+ d: "M15.08 0H16v6.46h-.92z"
39
+ })), _path6 || (_path6 = /*#__PURE__*/React.createElement("path", {
40
+ d: "M0 0h.92v24H0zM15.08 0H16v24h-.92z"
41
+ })), _path7 || (_path7 = /*#__PURE__*/React.createElement("path", {
42
+ d: "M0 .92V0h16v.92zM0 24v-.92h16V24z"
43
+ })));
44
+ };
45
+ const UpperHandle = props => {
46
+ const prefix = usePrefix();
47
+ return /*#__PURE__*/React.createElement("svg", _extends({
48
+ xmlns: "http://www.w3.org/2000/svg",
49
+ viewBox: "0 0 16 24",
50
+ className: `${prefix}--slider__thumb-icon ${prefix}--slider__thumb-icon--upper`
51
+ }, props), _path8 || (_path8 = /*#__PURE__*/React.createElement("path", {
52
+ d: "M0 6.46h.92v11.08H0zM11.54 6.46c.25 0 .46.21.46.46v10.15a.465.465 0 0 1-.69.4L2.54 12.4a.46.46 0 0 1 0-.8l8.77-5.08c.07-.04.15-.06.23-.06Z"
53
+ })), _path9 || (_path9 = /*#__PURE__*/React.createElement("path", {
54
+ fill: "none",
55
+ d: "M-4 0h24v24H-4z"
56
+ })));
57
+ };
58
+ const UpperHandleFocus = props => {
59
+ const prefix = usePrefix();
60
+ return /*#__PURE__*/React.createElement("svg", _extends({
61
+ xmlns: "http://www.w3.org/2000/svg",
62
+ viewBox: "0 0 16 24",
63
+ className: `${prefix}--slider__thumb-icon ${prefix}--slider__thumb-icon--upper ${prefix}--slider__thumb-icon--focus`
64
+ }, props), _path0 || (_path0 = /*#__PURE__*/React.createElement("path", {
65
+ d: "M0 6.46h.92v11.08H0zM11.54 6.46c.25 0 .46.21.46.46v10.15a.465.465 0 0 1-.69.4L2.54 12.4a.46.46 0 0 1 0-.8l8.77-5.08c.07-.04.15-.06.23-.06Z"
66
+ })), _path1 || (_path1 = /*#__PURE__*/React.createElement("path", {
67
+ fill: "none",
68
+ d: "M-4 0h24v24H-4z"
69
+ })), _path10 || (_path10 = /*#__PURE__*/React.createElement("path", {
70
+ d: "M.92 24H0v-6.46h.92z"
71
+ })), _path11 || (_path11 = /*#__PURE__*/React.createElement("path", {
72
+ d: "M16 24h-.92V0H16zM.92 24H0V0h.92z"
73
+ })), _path12 || (_path12 = /*#__PURE__*/React.createElement("path", {
74
+ d: "M16 23.08V24H0v-.92zM16 0v.92H0V0z"
75
+ })));
76
+ };
65
77
 
66
78
  export { LowerHandle, LowerHandleFocus, UpperHandle, UpperHandleFocus };
@@ -7,7 +7,7 @@
7
7
 
8
8
  import { extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
9
9
  import PropTypes from 'prop-types';
10
- import React, { forwardRef, useState } from 'react';
10
+ import React, { useState, forwardRef } from 'react';
11
11
  import cx from 'classnames';
12
12
  import { IconButton } from '../IconButton/index.js';
13
13
  import { usePrefix } from '../../internal/usePrefix.js';
@@ -10,7 +10,7 @@ import { Close, ChevronLeft, ChevronRight } from '@carbon/icons-react';
10
10
  import { breakpoints } from '@carbon/layout';
11
11
  import cx from 'classnames';
12
12
  import PropTypes from 'prop-types';
13
- import React, { forwardRef, createContext, useRef, useState, useMemo, isValidElement, Children, cloneElement, useCallback, useEffect } from 'react';
13
+ import React, { forwardRef, useRef, useState, useMemo, isValidElement, createContext, Children, useCallback, useEffect, cloneElement } from 'react';
14
14
  import '../Grid/FlexGrid.js';
15
15
  import { Grid as GridAsGridComponent } from '../Grid/Grid.js';
16
16
  import '../Grid/Row.js';
@@ -1038,11 +1038,7 @@ const IconTab = /*#__PURE__*/React.forwardRef(({
1038
1038
  const value = useMemo(() => ({
1039
1039
  badgeIndicator
1040
1040
  }), [badgeIndicator]);
1041
- const hasSize20 = /*#__PURE__*/isValidElement(children) &&
1042
- // TODO: The interface allows `size` to be a string. Should this case be
1043
- // handled here, or should the prop type be restricted to `number`
1044
- // instead?
1045
- children.props.size === 20;
1041
+ const hasSize20 = /*#__PURE__*/isValidElement(children) && (children.props.size === 20 || children.props.size === '20');
1046
1042
  const classNames = cx(`${prefix}--tabs__nav-item--icon-only`, customClassName, {
1047
1043
  [`${prefix}--tabs__nav-item--icon-only__20`]: hasSize20
1048
1044
  });
@@ -38,4 +38,4 @@ TagSkeleton.propTypes = {
38
38
  size: PropTypes.oneOf(['sm'])
39
39
  };
40
40
 
41
- export { TagSkeleton, TagSkeleton as default };
41
+ export { TagSkeleton };
@@ -7,7 +7,7 @@
7
7
 
8
8
  import { extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
9
9
  import PropTypes from 'prop-types';
10
- import React, { forwardRef, useContext, useRef, useState, useEffect, cloneElement } from 'react';
10
+ import React, { useContext, useRef, useState, useEffect, forwardRef, cloneElement } from 'react';
11
11
  import cx from 'classnames';
12
12
  import { deprecate } from '../../prop-types/deprecate.js';
13
13
  import { WarningFilled, WarningAltFilled } from '@carbon/icons-react';
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  import TextArea from './TextArea.js';
9
- export { default as TextAreaSkeleton } from './TextArea.Skeleton.js';
9
+ export { TextAreaSkeleton } from './TextArea.Skeleton.js';
10
10
 
11
11
 
12
12
 
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  import TextInput from './TextInput.js';
9
- export { default as TextInputSkeleton } from './TextInput.Skeleton.js';
9
+ export { TextInputSkeleton } from './TextInput.Skeleton.js';
10
10
 
11
11
 
12
12
 
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  import { extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
9
- import React, { forwardRef, useState, useEffect, useCallback, useRef, cloneElement, Children } from 'react';
9
+ import React, { useState, useEffect, useCallback, useRef, forwardRef, Children, cloneElement } from 'react';
10
10
  import PropTypes from 'prop-types';
11
11
  import cx from 'classnames';
12
12
  import { AiLabel, CheckboxCheckedFilled, Checkbox, ChevronDown, ArrowRight, Error } from '@carbon/icons-react';
@@ -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.
@@ -9,6 +9,7 @@ import { extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js
9
9
  import PropTypes from 'prop-types';
10
10
  import React, { useState, useEffect, Children, isValidElement, cloneElement } from 'react';
11
11
  import RadioTile from '../RadioTile/RadioTile.js';
12
+ import { isComponentElement } from '../../internal/utils.js';
12
13
  import { usePrefix } from '../../internal/usePrefix.js';
13
14
  import { noopFn } from '../../internal/noopFn.js';
14
15
 
@@ -42,7 +43,7 @@ const TileGroup = ({
42
43
  if (! /*#__PURE__*/isValidElement(child)) return child;
43
44
 
44
45
  // If a `RadioTile` is found, return it with necessary props,
45
- if (/*#__PURE__*/isValidElement(child) && child.type === RadioTile) {
46
+ if (isComponentElement(child, RadioTile)) {
46
47
  const {
47
48
  value,
48
49
  ...otherProps
@@ -30,4 +30,4 @@ ToggleSkeleton.propTypes = {
30
30
  className: PropTypes.string
31
31
  };
32
32
 
33
- export { ToggleSkeleton, ToggleSkeleton as default };
33
+ export { ToggleSkeleton };
@@ -283,4 +283,4 @@ ToggletipActions.propTypes = {
283
283
  className: PropTypes.string
284
284
  };
285
285
 
286
- export { Toggletip, ToggletipActions, ToggletipButton, ToggletipContent, ToggletipLabel, Toggletip as default };
286
+ export { Toggletip, ToggletipActions, ToggletipButton, ToggletipContent, ToggletipLabel };
@@ -8,7 +8,7 @@
8
8
  import { extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
9
9
  import { ChevronDown } from '@carbon/icons-react';
10
10
  import cx from 'classnames';
11
- import React, { forwardRef, useContext, useState, useRef, Children, isValidElement, cloneElement } from 'react';
11
+ import React, { useContext, useState, useRef, Children, forwardRef, isValidElement, cloneElement } from 'react';
12
12
  import PropTypes from 'prop-types';
13
13
  import { Escape, Enter, Space } from '../../internal/keyboard/keys.js';
14
14
  import { matches } from '../../internal/keyboard/match.js';
@@ -8,7 +8,8 @@
8
8
  import { extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
9
9
  import cx from 'classnames';
10
10
  import PropTypes from 'prop-types';
11
- import React, { useRef, useState, isValidElement } from 'react';
11
+ import React, { useRef, useState } from 'react';
12
+ import { isComponentElement } from '../../internal/utils.js';
12
13
  import { usePrefix } from '../../internal/usePrefix.js';
13
14
  import { Escape } from '../../internal/keyboard/keys.js';
14
15
  import { match } from '../../internal/keyboard/match.js';
@@ -64,7 +65,7 @@ const HeaderPanel = /*#__PURE__*/React.forwardRef(({
64
65
  } = event;
65
66
  if (!(target instanceof Element)) return;
66
67
  setLastClickedElement(target);
67
- const isChildASwitcher = /*#__PURE__*/isValidElement(children) && typeof children.type !== 'string' && children.type === Switcher;
68
+ const isChildASwitcher = isComponentElement(children, Switcher);
68
69
  if (isChildASwitcher && !target.closest(`.${prefix}--header-panel--expanded`) && !target.closest(`.${prefix}--header__action`) && !headerPanelReference?.current?.classList.contains(`${prefix}--switcher`) && expanded) {
69
70
  setExpandedState(false);
70
71
  onHeaderPanelFocus();
@@ -20,9 +20,6 @@ export interface SideNavProps {
20
20
  onSideNavBlur?: () => void;
21
21
  enterDelayMs?: number;
22
22
  }
23
- interface SideNavContextData {
24
- isRail?: boolean | undefined;
25
- }
26
- export declare const SideNavContext: React.Context<SideNavContextData>;
27
23
  declare const SideNav: React.ForwardRefExoticComponent<Omit<SideNavProps & React.ClassAttributes<HTMLElement> & React.HTMLAttributes<HTMLElement>, "ref"> & React.RefAttributes<HTMLElement>>;
28
24
  export default SideNav;
25
+ export { SideNavContext } from './SideNavContext';
@@ -6,24 +6,24 @@
6
6
  */
7
7
 
8
8
  import { extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
9
- import React, { forwardRef, useRef, isValidElement, useEffect, createContext } from 'react';
9
+ import React, { useRef, useEffect, forwardRef } from 'react';
10
10
  import cx from 'classnames';
11
11
  import PropTypes from 'prop-types';
12
12
  import { AriaLabelPropType } from '../../prop-types/AriaPropTypes.js';
13
- import { CARBON_SIDENAV_ITEMS } from './_utils.js';
14
13
  import { usePrefix } from '../../internal/usePrefix.js';
15
14
  import { Tab, Escape } from '../../internal/keyboard/keys.js';
16
15
  import { match } from '../../internal/keyboard/match.js';
17
16
  import { useMergedRefs } from '../../internal/useMergedRefs.js';
18
17
  import { useWindowEvent } from '../../internal/useEvent.js';
19
18
  import { useDelayedState } from '../../internal/useDelayedState.js';
19
+ import { SideNavContextProvider } from './SideNavContext.js';
20
+ export { SideNavContext } from './SideNavContext.js';
20
21
  import { breakpoints } from '@carbon/layout';
21
22
  import { useMatchMedia } from '../../internal/useMatchMedia.js';
22
23
 
23
24
  // TODO: comment back in when footer is added for rails
24
25
  // import SideNavFooter from './SideNavFooter';
25
26
 
26
- const SideNavContext = /*#__PURE__*/createContext({});
27
27
  const frFn = forwardRef;
28
28
  const SideNav = frFn((props, ref) => {
29
29
  const {
@@ -90,23 +90,9 @@ const SideNav = frFn((props, ref) => {
90
90
  [`${prefix}--side-nav__overlay`]: true,
91
91
  [`${prefix}--side-nav__overlay-active`]: expanded || expandedViaHoverState
92
92
  });
93
- let childrenToRender = children;
94
93
 
95
- // Pass the expansion state as a prop, so children can update themselves to match
96
- childrenToRender = React.Children.map(children, child => {
97
- // if we are controlled, check for if we have hovered over or the expanded state, else just use the expanded state (uncontrolled)
98
- const currentExpansionState = controlled ? expandedViaHoverState || expanded : expanded;
99
- if (/*#__PURE__*/isValidElement(child)) {
100
- const childJsxElement = child;
101
- // avoid spreading `isSideNavExpanded` to non-Carbon UI Shell children
102
- return /*#__PURE__*/React.cloneElement(childJsxElement, {
103
- ...(CARBON_SIDENAV_ITEMS.includes(childJsxElement.type?.displayName ?? childJsxElement.type?.name) ? {
104
- isSideNavExpanded: currentExpansionState
105
- } : {})
106
- });
107
- }
108
- return child;
109
- });
94
+ // In controlled mode, rail hover can temporarily expand SideNav.
95
+ const currentExpansionState = controlled ? expandedViaHoverState || expanded : expanded;
110
96
  const eventHandlers = {};
111
97
  if (addFocusListeners) {
112
98
  eventHandlers.onFocus = event => {
@@ -167,10 +153,9 @@ const SideNav = frFn((props, ref) => {
167
153
  node.removeAttribute('inert');
168
154
  }
169
155
  }, [inertEnabled]);
170
- return /*#__PURE__*/React.createElement(SideNavContext.Provider, {
171
- value: {
172
- isRail
173
- }
156
+ return /*#__PURE__*/React.createElement(SideNavContextProvider, {
157
+ isRail: isRail,
158
+ isSideNavExpanded: currentExpansionState
174
159
  }, isFixedNav ? null :
175
160
  /*#__PURE__*/
176
161
  // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions
@@ -181,7 +166,7 @@ const SideNav = frFn((props, ref) => {
181
166
  tabIndex: -1,
182
167
  ref: navRef,
183
168
  className: `${prefix}--side-nav__navigation ${className}`
184
- }, accessibilityLabel, eventHandlers, other), childrenToRender));
169
+ }, accessibilityLabel, eventHandlers, other), children));
185
170
  });
186
171
  SideNav.displayName = 'SideNav';
187
172
  SideNav.propTypes = {
@@ -264,4 +249,4 @@ SideNav.propTypes = {
264
249
  // translateById: PropTypes.func,
265
250
  };
266
251
 
267
- export { SideNavContext, SideNav as default };
252
+ export { SideNav as default };
@@ -0,0 +1,17 @@
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 React, { type ReactNode } from 'react';
8
+ interface SideNavContextData {
9
+ isRail?: boolean | undefined;
10
+ isSideNavExpanded?: boolean | undefined;
11
+ }
12
+ export declare const SideNavContext: React.Context<SideNavContextData>;
13
+ interface SideNavContextProviderProps extends SideNavContextData {
14
+ children: ReactNode;
15
+ }
16
+ export declare const SideNavContextProvider: ({ children, isRail, isSideNavExpanded, }: SideNavContextProviderProps) => import("react/jsx-runtime").JSX.Element;
17
+ export {};
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Copyright IBM Corp. 2016, 2023
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import React, { createContext } from 'react';
9
+
10
+ const SideNavContext = /*#__PURE__*/createContext({});
11
+ const SideNavContextProvider = ({
12
+ children,
13
+ isRail,
14
+ isSideNavExpanded
15
+ }) => {
16
+ return /*#__PURE__*/React.createElement(SideNavContext.Provider, {
17
+ value: {
18
+ isRail,
19
+ isSideNavExpanded
20
+ }
21
+ }, children);
22
+ };
23
+
24
+ export { SideNavContext, SideNavContextProvider };
@@ -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.
@@ -7,8 +7,8 @@
7
7
 
8
8
  import cx from 'classnames';
9
9
  import PropTypes from 'prop-types';
10
- import React from 'react';
11
- import { CARBON_SIDENAV_ITEMS } from './_utils.js';
10
+ import React, { useContext } from 'react';
11
+ import { SideNavContext, SideNavContextProvider } from './SideNavContext.js';
12
12
  import { usePrefix } from '../../internal/usePrefix.js';
13
13
 
14
14
  const SideNavItems = ({
@@ -17,22 +17,18 @@ const SideNavItems = ({
17
17
  isSideNavExpanded
18
18
  }) => {
19
19
  const prefix = usePrefix();
20
+ const {
21
+ isRail,
22
+ isSideNavExpanded: contextIsSideNavExpanded
23
+ } = useContext(SideNavContext);
24
+ const currentIsSideNavExpanded = isSideNavExpanded ?? contextIsSideNavExpanded;
20
25
  const className = cx([`${prefix}--side-nav__items`], customClassName);
21
- const childrenWithExpandedState = React.Children.map(children, child => {
22
- if (/*#__PURE__*/React.isValidElement(child)) {
23
- // avoid spreading `isSideNavExpanded` to non-Carbon UI Shell children
24
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
25
- const childDisplayName = child.type?.displayName;
26
- return /*#__PURE__*/React.cloneElement(child, {
27
- ...(CARBON_SIDENAV_ITEMS.includes(childDisplayName) ? {
28
- isSideNavExpanded
29
- } : {})
30
- });
31
- }
32
- });
33
- return /*#__PURE__*/React.createElement("ul", {
26
+ return /*#__PURE__*/React.createElement(SideNavContextProvider, {
27
+ isRail: isRail,
28
+ isSideNavExpanded: currentIsSideNavExpanded
29
+ }, /*#__PURE__*/React.createElement("ul", {
34
30
  className: className
35
- }, childrenWithExpandedState);
31
+ }, children));
36
32
  };
37
33
  SideNavItems.displayName = 'SideNavItems';
38
34
  SideNavItems.propTypes = {
@@ -8,13 +8,13 @@
8
8
  import { extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
9
9
  import cx from 'classnames';
10
10
  import PropTypes from 'prop-types';
11
- import React, { forwardRef, useContext } from 'react';
11
+ import React, { useContext, forwardRef } from 'react';
12
12
  import Link, { LinkPropTypes } from './Link.js';
13
13
  import SideNavIcon from './SideNavIcon.js';
14
14
  import SideNavItem from './SideNavItem.js';
15
15
  import SideNavLinkText from './SideNavLinkText.js';
16
+ import { SideNavContext } from './SideNavContext.js';
16
17
  import { usePrefix } from '../../internal/usePrefix.js';
17
- import { SideNavContext } from './SideNav.js';
18
18
 
19
19
  // First define a non-generic base component to work with forwardRef
20
20
 
@@ -30,7 +30,11 @@ const SideNavLink = frFn((props, ref) => {
30
30
  tabIndex,
31
31
  ...rest
32
32
  } = props;
33
- const isRail = useContext(SideNavContext);
33
+ const {
34
+ isRail,
35
+ isSideNavExpanded: contextIsSideNavExpanded
36
+ } = useContext(SideNavContext);
37
+ const currentIsSideNavExpanded = isSideNavExpanded ?? contextIsSideNavExpanded;
34
38
  const prefix = usePrefix();
35
39
  const className = cx({
36
40
  [`${prefix}--side-nav__link`]: true,
@@ -42,7 +46,7 @@ const SideNavLink = frFn((props, ref) => {
42
46
  }, /*#__PURE__*/React.createElement(Link, _extends({}, rest, {
43
47
  className: className,
44
48
  ref: ref,
45
- tabIndex: tabIndex === undefined ? !isSideNavExpanded && !isRail ? -1 : 0 : tabIndex
49
+ tabIndex: tabIndex === undefined ? !currentIsSideNavExpanded && !isRail ? -1 : 0 : tabIndex
46
50
  }), IconElement && /*#__PURE__*/React.createElement(SideNavIcon, {
47
51
  small: true
48
52
  }, /*#__PURE__*/React.createElement(IconElement, null)), /*#__PURE__*/React.createElement(SideNavLinkText, null, children)));
@@ -13,7 +13,7 @@ import SideNavIcon from './SideNavIcon.js';
13
13
  import { Escape } from '../../internal/keyboard/keys.js';
14
14
  import { match } from '../../internal/keyboard/match.js';
15
15
  import { usePrefix } from '../../internal/usePrefix.js';
16
- import { SideNavContext } from './SideNav.js';
16
+ import { SideNavContext } from './SideNavContext.js';
17
17
 
18
18
  var _ChevronDown;
19
19
  const SideNavMenu = /*#__PURE__*/forwardRef(({
@@ -28,8 +28,10 @@ const SideNavMenu = /*#__PURE__*/forwardRef(({
28
28
  title
29
29
  }, ref) => {
30
30
  const {
31
- isRail
31
+ isRail,
32
+ isSideNavExpanded: contextIsSideNavExpanded
32
33
  } = useContext(SideNavContext);
34
+ const currentIsSideNavExpanded = isSideNavExpanded ?? contextIsSideNavExpanded;
33
35
  const prefix = usePrefix();
34
36
  const [isExpanded, setIsExpanded] = useState(defaultExpanded);
35
37
  const [prevExpanded, setPrevExpanded] = useState(defaultExpanded);
@@ -40,10 +42,10 @@ const SideNavMenu = /*#__PURE__*/forwardRef(({
40
42
  [`${prefix}--side-nav__item--large`]: large,
41
43
  [customClassName]: !!customClassName
42
44
  });
43
- if (!isSideNavExpanded && isExpanded && isRail) {
45
+ if (!currentIsSideNavExpanded && isExpanded && isRail) {
44
46
  setIsExpanded(false);
45
47
  setPrevExpanded(true);
46
- } else if (isSideNavExpanded && prevExpanded && isRail) {
48
+ } else if (currentIsSideNavExpanded && prevExpanded && isRail) {
47
49
  setIsExpanded(true);
48
50
  setPrevExpanded(false);
49
51
  }
@@ -65,7 +67,7 @@ const SideNavMenu = /*#__PURE__*/forwardRef(({
65
67
  },
66
68
  ref: ref,
67
69
  type: "button",
68
- tabIndex: tabIndex === undefined ? !isSideNavExpanded && !isRail ? -1 : 0 : tabIndex
70
+ tabIndex: tabIndex === undefined ? !currentIsSideNavExpanded && !isRail ? -1 : 0 : tabIndex
69
71
  }, IconElement && /*#__PURE__*/React.createElement(SideNavIcon, null, /*#__PURE__*/React.createElement(IconElement, null)), /*#__PURE__*/React.createElement("span", {
70
72
  className: `${prefix}--side-nav__submenu-title`
71
73
  }, title), /*#__PURE__*/React.createElement(SideNavIcon, {
@@ -6,10 +6,11 @@
6
6
  */
7
7
 
8
8
  import { extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
9
- import React, { forwardRef, useRef, Children, isValidElement, cloneElement } from 'react';
9
+ import React, { forwardRef, useRef, Children, cloneElement } from 'react';
10
10
  import cx from 'classnames';
11
11
  import { usePrefix } from '../../internal/usePrefix.js';
12
12
  import { useMergedRefs } from '../../internal/useMergedRefs.js';
13
+ import { isComponentElement } from '../../internal/utils.js';
13
14
  import PropTypes from 'prop-types';
14
15
  import { AriaLabelPropType } from '../../prop-types/AriaPropTypes.js';
15
16
  import SwitcherItem from './SwitcherItem.js';
@@ -38,7 +39,7 @@ const Switcher = /*#__PURE__*/forwardRef((props, forwardRef) => {
38
39
  direction
39
40
  }) => {
40
41
  const enabledIndices = Children.toArray(children).reduce((acc, child, i) => {
41
- if (/*#__PURE__*/isValidElement(child) && child.type === SwitcherItem && Object.keys(child.props).length) {
42
+ if (isComponentElement(child, SwitcherItem) && Object.keys(child.props).length) {
42
43
  acc.push(i);
43
44
  }
44
45
  return acc;
@@ -66,7 +67,7 @@ const Switcher = /*#__PURE__*/forwardRef((props, forwardRef) => {
66
67
  }
67
68
  };
68
69
  const childrenWithProps = Children.toArray(children).map((child, index) => {
69
- if (/*#__PURE__*/isValidElement(child) && child.type === SwitcherItem) {
70
+ if (isComponentElement(child, SwitcherItem)) {
70
71
  return /*#__PURE__*/cloneElement(child, {
71
72
  handleSwitcherItemFocus,
72
73
  index,
@@ -74,7 +75,7 @@ const Switcher = /*#__PURE__*/forwardRef((props, forwardRef) => {
74
75
  expanded
75
76
  });
76
77
  }
77
- if (/*#__PURE__*/isValidElement(child) && child.type === SwitcherDivider) {
78
+ if (isComponentElement(child, SwitcherDivider)) {
78
79
  return /*#__PURE__*/cloneElement(child, {
79
80
  key: index
80
81
  });