@carbon/ibm-products 2.70.1 → 2.71.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 (175) hide show
  1. package/css/carbon.css +317 -216
  2. package/css/carbon.css.map +1 -1
  3. package/css/index-full-carbon.css +546 -270
  4. package/css/index-full-carbon.css.map +1 -1
  5. package/css/index-full-carbon.min.css +1 -1
  6. package/css/index-full-carbon.min.css.map +1 -1
  7. package/css/index-without-carbon-released-only.css +387 -43
  8. package/css/index-without-carbon-released-only.css.map +1 -1
  9. package/css/index-without-carbon-released-only.min.css +1 -1
  10. package/css/index-without-carbon-released-only.min.css.map +1 -1
  11. package/css/index-without-carbon.css +229 -54
  12. package/css/index-without-carbon.css.map +1 -1
  13. package/css/index-without-carbon.min.css +1 -1
  14. package/css/index-without-carbon.min.css.map +1 -1
  15. package/css/index.css +242 -56
  16. package/css/index.css.map +1 -1
  17. package/css/index.min.css +1 -1
  18. package/css/index.min.css.map +1 -1
  19. package/es/_virtual/_commonjsHelpers.js +1 -3
  20. package/es/_virtual/index2.js +2 -6
  21. package/es/components/APIKeyModal/APIKeyDownloader.d.ts +61 -19
  22. package/es/components/APIKeyModal/APIKeyDownloader.js +3 -3
  23. package/es/components/APIKeyModal/APIKeyModal.js +1 -1
  24. package/es/components/ActionSet/ActionSet.d.ts +4 -0
  25. package/es/components/ActionSet/ActionSet.js +46 -44
  26. package/es/components/AddSelect/AddSelectBody.js +1 -1
  27. package/es/components/Card/Card.d.ts +1 -0
  28. package/es/components/Coachmark/CoachmarkOverlay.js +5 -5
  29. package/es/components/Coachmark/CoachmarkTagline.js +2 -2
  30. package/es/components/Coachmark/utils/context.d.ts +28 -2
  31. package/es/components/Coachmark/utils/context.js +1 -1
  32. package/es/components/CoachmarkStack/CoachmarkStack.js +11 -8
  33. package/es/components/ConditionBuilder/ConditionBlock/ConditionBlock.js +18 -12
  34. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItem.d.ts +1 -1
  35. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItem.js +5 -3
  36. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.d.ts +2 -1
  37. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.js +5 -2
  38. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/ItemOptionForValueField.d.ts +2 -1
  39. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/ItemOptionForValueField.js +5 -2
  40. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemTime/ConditionBuilderItemTime.d.ts +9 -1
  41. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemTime/ConditionBuilderItemTime.js +24 -5
  42. package/es/components/ConditionBuilder/utils/handleKeyboardEvents.d.ts +1 -1
  43. package/es/components/ConditionBuilder/utils/handleKeyboardEvents.js +6 -4
  44. package/es/components/ConditionBuilder/utils/util.d.ts +1 -1
  45. package/es/components/ConditionBuilder/utils/util.js +11 -4
  46. package/es/components/CreateModal/CreateModal.d.ts +4 -7
  47. package/es/components/CreateModal/CreateModal.js +4 -19
  48. package/es/components/CreateTearsheet/CreateTearsheetStep.d.ts +6 -0
  49. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +12 -3
  50. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.d.ts +43 -18
  51. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +1 -1
  52. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilterContext.d.ts +1 -1
  53. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilterContext.js +2 -2
  54. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/InlineEditContext.d.ts +7 -1
  55. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/InlineEditContext.js +11 -3
  56. package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeRadioGroup.js +15 -19
  57. package/es/components/EditTearsheet/EditTearsheetForm.d.ts +2 -0
  58. package/es/components/EditTearsheet/EditTearsheetForm.js +16 -4
  59. package/es/components/EmptyStates/EmptyState.js +0 -1
  60. package/es/components/FilterSummary/FilterSummary.d.ts +1 -0
  61. package/es/components/FilterSummary/FilterSummary.js +2 -1
  62. package/es/components/Guidebanner/Guidebanner.js +4 -20
  63. package/es/components/InterstitialScreen/InterstitialScreen.d.ts +4 -3
  64. package/es/components/InterstitialScreen/InterstitialScreen.js +21 -21
  65. package/es/components/InterstitialScreen/InterstitialScreenBody.d.ts +9 -3
  66. package/es/components/InterstitialScreen/InterstitialScreenBody.js +16 -11
  67. package/es/components/InterstitialScreen/InterstitialScreenFooter.js +15 -13
  68. package/es/components/InterstitialScreen/InterstitialScreenHeader.js +13 -8
  69. package/es/components/InterstitialScreen/index.d.ts +4 -1
  70. package/es/components/Nav/NavItemLink.js +1 -4
  71. package/es/components/PageHeader/PageHeaderTitle.js +1 -1
  72. package/es/components/PageHeader/next/PageHeader.d.ts +277 -0
  73. package/es/components/PageHeader/next/PageHeader.js +475 -0
  74. package/es/components/PageHeader/next/index.d.ts +8 -0
  75. package/es/components/ScrollGradient/ScrollGradient.js +4 -4
  76. package/es/components/SidePanel/SidePanel.js +25 -20
  77. package/es/components/StringFormatter/StringFormatter.js +3 -0
  78. package/es/components/Tearsheet/Tearsheet.js +4 -7
  79. package/es/components/Tearsheet/TearsheetNarrow.js +1 -4
  80. package/es/components/Tearsheet/TearsheetShell.js +1 -1
  81. package/es/components/UserAvatar/UserAvatar.js +5 -7
  82. package/es/components/UserProfileImage/UserProfileImage.d.ts +1 -0
  83. package/es/components/UserProfileImage/UserProfileImage.js +12 -6
  84. package/es/components/index.d.ts +1 -0
  85. package/es/global/js/package-settings.js +1 -1
  86. package/es/index.js +3 -0
  87. package/es/node_modules/@carbon/icons-react/es/Icon.js +1 -1
  88. package/es/node_modules/prop-types/index.js +1 -1
  89. package/lib/_virtual/_commonjsHelpers.js +0 -3
  90. package/lib/_virtual/index2.js +2 -8
  91. package/lib/components/APIKeyModal/APIKeyDownloader.d.ts +61 -19
  92. package/lib/components/APIKeyModal/APIKeyDownloader.js +3 -3
  93. package/lib/components/APIKeyModal/APIKeyModal.js +1 -1
  94. package/lib/components/ActionSet/ActionSet.d.ts +4 -0
  95. package/lib/components/ActionSet/ActionSet.js +46 -43
  96. package/lib/components/AddSelect/AddSelectBody.js +1 -1
  97. package/lib/components/Card/Card.d.ts +1 -0
  98. package/lib/components/Coachmark/CoachmarkOverlay.js +5 -5
  99. package/lib/components/Coachmark/CoachmarkTagline.js +2 -2
  100. package/lib/components/Coachmark/utils/context.d.ts +28 -2
  101. package/lib/components/Coachmark/utils/context.js +1 -1
  102. package/lib/components/CoachmarkStack/CoachmarkStack.js +11 -8
  103. package/lib/components/ConditionBuilder/ConditionBlock/ConditionBlock.js +18 -12
  104. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItem.d.ts +1 -1
  105. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItem.js +5 -3
  106. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.d.ts +2 -1
  107. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.js +5 -2
  108. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/ItemOptionForValueField.d.ts +2 -1
  109. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/ItemOptionForValueField.js +5 -2
  110. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemTime/ConditionBuilderItemTime.d.ts +9 -1
  111. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemTime/ConditionBuilderItemTime.js +24 -5
  112. package/lib/components/ConditionBuilder/utils/handleKeyboardEvents.d.ts +1 -1
  113. package/lib/components/ConditionBuilder/utils/handleKeyboardEvents.js +6 -4
  114. package/lib/components/ConditionBuilder/utils/util.d.ts +1 -1
  115. package/lib/components/ConditionBuilder/utils/util.js +11 -4
  116. package/lib/components/CreateModal/CreateModal.d.ts +4 -7
  117. package/lib/components/CreateModal/CreateModal.js +4 -19
  118. package/lib/components/CreateTearsheet/CreateTearsheetStep.d.ts +6 -0
  119. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +12 -3
  120. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.d.ts +43 -18
  121. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +1 -1
  122. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilterContext.d.ts +1 -1
  123. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilterContext.js +2 -2
  124. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/InlineEditContext.d.ts +7 -1
  125. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/InlineEditContext.js +11 -3
  126. package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeRadioGroup.js +15 -19
  127. package/lib/components/EditTearsheet/EditTearsheetForm.d.ts +2 -0
  128. package/lib/components/EditTearsheet/EditTearsheetForm.js +16 -4
  129. package/lib/components/EmptyStates/EmptyState.js +0 -1
  130. package/lib/components/FilterSummary/FilterSummary.d.ts +1 -0
  131. package/lib/components/FilterSummary/FilterSummary.js +2 -1
  132. package/lib/components/Guidebanner/Guidebanner.js +4 -20
  133. package/lib/components/InterstitialScreen/InterstitialScreen.d.ts +4 -3
  134. package/lib/components/InterstitialScreen/InterstitialScreen.js +21 -20
  135. package/lib/components/InterstitialScreen/InterstitialScreenBody.d.ts +9 -3
  136. package/lib/components/InterstitialScreen/InterstitialScreenBody.js +19 -14
  137. package/lib/components/InterstitialScreen/InterstitialScreenFooter.js +20 -18
  138. package/lib/components/InterstitialScreen/InterstitialScreenHeader.js +15 -10
  139. package/lib/components/InterstitialScreen/index.d.ts +4 -1
  140. package/lib/components/Nav/NavItemLink.js +1 -4
  141. package/lib/components/PageHeader/PageHeaderTitle.js +1 -1
  142. package/lib/components/PageHeader/next/PageHeader.d.ts +277 -0
  143. package/lib/components/PageHeader/next/PageHeader.js +490 -0
  144. package/lib/components/PageHeader/next/index.d.ts +8 -0
  145. package/lib/components/ScrollGradient/ScrollGradient.js +4 -4
  146. package/lib/components/SidePanel/SidePanel.js +26 -21
  147. package/lib/components/StringFormatter/StringFormatter.js +3 -0
  148. package/lib/components/Tearsheet/Tearsheet.js +4 -7
  149. package/lib/components/Tearsheet/TearsheetNarrow.js +1 -4
  150. package/lib/components/Tearsheet/TearsheetShell.js +1 -1
  151. package/lib/components/UserAvatar/UserAvatar.js +5 -7
  152. package/lib/components/UserProfileImage/UserProfileImage.d.ts +1 -0
  153. package/lib/components/UserProfileImage/UserProfileImage.js +12 -6
  154. package/lib/components/index.d.ts +1 -0
  155. package/lib/global/js/package-settings.js +1 -1
  156. package/lib/index.js +5 -2
  157. package/lib/node_modules/@carbon/icons-react/es/Icon.js +1 -1
  158. package/lib/node_modules/prop-types/index.js +1 -1
  159. package/package.json +22 -30
  160. package/scss/components/CoachmarkStack/_coachmark-stack.scss +12 -1
  161. package/scss/components/InterstitialScreen/_interstitial-screen.scss +7 -11
  162. package/scss/components/PageHeader/_page-header.scss +198 -0
  163. package/scss/components/SidePanel/_side-panel.scss +2 -52
  164. package/scss/components/_index-released-only.scss +1 -0
  165. package/telemetry.yml +12 -13
  166. package/es/_virtual/index3.js +0 -10
  167. package/es/components/SidePanel/resizer/Resizer.d.ts +0 -21
  168. package/es/components/SidePanel/resizer/Resizer.js +0 -271
  169. package/es/node_modules/lodash.debounce/index.js +0 -367
  170. package/lib/_virtual/index3.js +0 -12
  171. package/lib/components/SidePanel/resizer/Resizer.d.ts +0 -21
  172. package/lib/components/SidePanel/resizer/Resizer.js +0 -277
  173. package/lib/node_modules/lodash.debounce/index.js +0 -369
  174. /package/es/node_modules/@carbon/{icons-react/node_modules/@carbon/icon-helpers → icon-helpers}/es/index.js +0 -0
  175. /package/lib/node_modules/@carbon/{icons-react/node_modules/@carbon/icon-helpers → icon-helpers}/es/index.js +0 -0
@@ -0,0 +1,490 @@
1
+ /**
2
+ * Copyright IBM Corp. 2020, 2025
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
+ 'use strict';
9
+
10
+ var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
11
+ var React = require('react');
12
+ var index = require('../../../_virtual/index.js');
13
+ var cx = require('classnames');
14
+ var react = require('@carbon/react');
15
+ var layout = require('@carbon/layout');
16
+ var PageHeaderUtils = require('../PageHeaderUtils.js');
17
+ var utilities = require('@carbon/utilities');
18
+ var useOverflowItems = require('../../../global/js/hooks/useOverflowItems/useOverflowItems.js');
19
+ var useId = require('../../../global/js/utils/useId.js');
20
+
21
+ /**
22
+ * ----------
23
+ * PageHeader
24
+ * ----------
25
+ */
26
+
27
+ const PageHeader = /*#__PURE__*/React.forwardRef(function PageHeader(_ref, ref) {
28
+ let {
29
+ className,
30
+ children,
31
+ ...other
32
+ } = _ref;
33
+ const classNames = cx({
34
+ [`${PageHeaderUtils.blockClass}`]: true,
35
+ [`${PageHeaderUtils.blockClass}__next`]: true
36
+ }, className);
37
+ return /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({
38
+ className: classNames,
39
+ ref: ref
40
+ }, other), children);
41
+ });
42
+ PageHeader.displayName = 'PageHeader';
43
+
44
+ /**
45
+ * -----------------------
46
+ * PageHeaderBreadcrumbBar
47
+ * -----------------------
48
+ */
49
+
50
+ const PageHeaderBreadcrumbBar = /*#__PURE__*/React.forwardRef(function PageHeaderBreadcrumbBar(_ref2, ref) {
51
+ let {
52
+ border = true,
53
+ className,
54
+ children,
55
+ renderIcon: IconElement,
56
+ contentActions,
57
+ contentActionsFlush,
58
+ pageActions,
59
+ pageActionsFlush,
60
+ ...other
61
+ } = _ref2;
62
+ const classNames = cx({
63
+ [`${PageHeaderUtils.blockClass}__breadcrumb-bar`]: true,
64
+ [`${PageHeaderUtils.blockClass}__breadcrumb-bar-border`]: border,
65
+ [`${PageHeaderUtils.blockClass}__breadcrumb__actions-flush`]: pageActionsFlush
66
+ }, className);
67
+ const contentActionsClasses = cx({
68
+ [`${PageHeaderUtils.blockClass}__breadcrumb__content-actions`]: !contentActionsFlush
69
+ });
70
+ return /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({
71
+ className: classNames,
72
+ ref: ref
73
+ }, other), /*#__PURE__*/React.createElement(react.Grid, null, /*#__PURE__*/React.createElement(react.Column, {
74
+ lg: 16,
75
+ md: 8,
76
+ sm: 4
77
+ }, /*#__PURE__*/React.createElement("div", {
78
+ className: `${PageHeaderUtils.blockClass}__breadcrumb-container`
79
+ }, /*#__PURE__*/React.createElement("div", {
80
+ className: `${PageHeaderUtils.blockClass}__breadcrumb-wrapper`
81
+ }, IconElement && /*#__PURE__*/React.createElement("div", {
82
+ className: `${PageHeaderUtils.blockClass}__breadcrumb__icon`
83
+ }, /*#__PURE__*/React.createElement(IconElement, null)), children), /*#__PURE__*/React.createElement("div", {
84
+ className: `${PageHeaderUtils.blockClass}__breadcrumb__actions`
85
+ }, /*#__PURE__*/React.createElement("div", {
86
+ className: contentActionsClasses
87
+ }, contentActions), pageActions)))));
88
+ });
89
+ PageHeaderBreadcrumbBar.displayName = 'PageHeaderBreadcrumbBar';
90
+
91
+ /**
92
+ * -----------------
93
+ * PageHeaderContent
94
+ * -----------------
95
+ */
96
+
97
+ const PageHeaderContent = /*#__PURE__*/React.forwardRef(function PageHeaderContent(_ref3, ref) {
98
+ let {
99
+ className,
100
+ children,
101
+ title,
102
+ renderIcon: IconElement,
103
+ contextualActions,
104
+ pageActions,
105
+ ...other
106
+ } = _ref3;
107
+ const classNames = cx({
108
+ [`${PageHeaderUtils.blockClass}__content`]: true
109
+ }, className);
110
+ const titleRef = React.useRef(null);
111
+ const [isEllipsisApplied, setIsEllipsisApplied] = React.useState(false);
112
+ const isEllipsisActive = element => {
113
+ setIsEllipsisApplied(element.offsetHeight < element.scrollHeight);
114
+ return element.offsetHeight < element.scrollHeight;
115
+ };
116
+ React.useLayoutEffect(() => {
117
+ titleRef.current && isEllipsisActive(titleRef.current);
118
+ }, [title]);
119
+ return /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({
120
+ className: classNames,
121
+ ref: ref
122
+ }, other), /*#__PURE__*/React.createElement(react.Grid, null, /*#__PURE__*/React.createElement(react.Column, {
123
+ lg: 16,
124
+ md: 8,
125
+ sm: 4
126
+ }, /*#__PURE__*/React.createElement("div", {
127
+ className: `${PageHeaderUtils.blockClass}__content__title-wrapper`
128
+ }, /*#__PURE__*/React.createElement("div", {
129
+ className: `${PageHeaderUtils.blockClass}__content__start`
130
+ }, /*#__PURE__*/React.createElement("div", {
131
+ className: `${PageHeaderUtils.blockClass}__content__title-container`
132
+ }, IconElement && /*#__PURE__*/React.createElement("div", {
133
+ className: `${PageHeaderUtils.blockClass}__content__icon`
134
+ }, /*#__PURE__*/React.createElement(IconElement, null)), isEllipsisApplied ? /*#__PURE__*/React.createElement(react.DefinitionTooltip, {
135
+ definition: title
136
+ }, /*#__PURE__*/React.createElement(react.unstable_Text, {
137
+ ref: titleRef,
138
+ as: "h4",
139
+ className: `${PageHeaderUtils.blockClass}__content__title`
140
+ }, title)) : /*#__PURE__*/React.createElement(react.unstable_Text, {
141
+ ref: titleRef,
142
+ as: "h4",
143
+ className: `${PageHeaderUtils.blockClass}__content__title`
144
+ }, title)), contextualActions && /*#__PURE__*/React.createElement("div", {
145
+ className: `${PageHeaderUtils.blockClass}__content__contextual-actions`
146
+ }, contextualActions)), pageActions), children)));
147
+ });
148
+ PageHeaderContent.displayName = 'PageHeaderContent';
149
+ PageHeaderContent.propTypes = {
150
+ /**
151
+ * Provide child elements to be rendered inside PageHeaderContent.
152
+ */
153
+ children: index.default.node,
154
+ /**
155
+ * Specify an optional className to be added to your PageHeaderContent
156
+ */
157
+ className: index.default.string,
158
+ /**
159
+ * The PageHeaderContent's contextual actions
160
+ */
161
+ contextualActions: index.default.node,
162
+ /**
163
+ * The PageHeaderContent's page actions
164
+ */
165
+ pageActions: index.default.node,
166
+ /**
167
+ * Provide an optional icon to render in front of the PageHeaderContent's title.
168
+ */
169
+ renderIcon: index.default.oneOfType([index.default.func, index.default.object]),
170
+ /**
171
+ * The PageHeaderContent's subtitle
172
+ */
173
+ subtitle: index.default.string,
174
+ /**
175
+ * The PageHeaderContent's title
176
+ */
177
+ title: index.default.string.isRequired
178
+ };
179
+
180
+ /**
181
+ * ----------------
182
+ * PageHeaderContentPageActions
183
+ * ----------------
184
+ */
185
+
186
+ const PageHeaderContentPageActions = _ref4 => {
187
+ let {
188
+ className,
189
+ children,
190
+ menuButtonLabel = 'Actions',
191
+ actions,
192
+ ...other
193
+ } = _ref4;
194
+ const classNames = cx({
195
+ [`${PageHeaderUtils.blockClass}__content__page-actions`]: true
196
+ }, className);
197
+ const containerRef = React.useRef(null);
198
+ const offsetRef = React.useRef(null);
199
+ const [menuButtonVisibility, setMenuButtonVisibility] = React.useState(false);
200
+ const [hiddenItems, setHiddenItems] = React.useState([]);
201
+
202
+ // need to set the grid columns width based on the menu button's width
203
+ // to avoid overlapping when resizing
204
+ React.useLayoutEffect(() => {
205
+ if (menuButtonVisibility && offsetRef.current) {
206
+ const width = offsetRef.current.offsetWidth;
207
+ document.documentElement.style.setProperty('--page-header-title-grid-width', `${width}px`);
208
+ }
209
+ }, [menuButtonVisibility]);
210
+ React.useEffect(() => {
211
+ if (!containerRef.current || !Array.isArray(actions)) {
212
+ return;
213
+ }
214
+ utilities.createOverflowHandler({
215
+ container: containerRef.current,
216
+ // exclude the hidden menu button from children
217
+ maxVisibleItems: containerRef.current.children.length - 1,
218
+ onChange: (visible, hidden) => {
219
+ setHiddenItems(actions?.slice(visible.length));
220
+ if (hidden.length > 0) {
221
+ setMenuButtonVisibility(true);
222
+ }
223
+ }
224
+ });
225
+ }, [actions]);
226
+ return /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({
227
+ className: classNames,
228
+ ref: containerRef
229
+ }, other), Array.isArray(actions) && /*#__PURE__*/React.createElement(React.Fragment, null, actions.map(action => /*#__PURE__*/React.createElement("div", {
230
+ key: action.id
231
+ }, /*#__PURE__*/React.cloneElement(action.body, {
232
+ ...action.body.props,
233
+ onClick: action.onClick
234
+ }))), /*#__PURE__*/React.createElement("span", {
235
+ "data-offset": true,
236
+ "data-hidden": true,
237
+ ref: offsetRef
238
+ }, /*#__PURE__*/React.createElement(react.MenuButton, {
239
+ menuAlignment: "bottom-end",
240
+ label: menuButtonLabel,
241
+ size: "md"
242
+ }, [...hiddenItems].reverse().map(item => /*#__PURE__*/React.createElement(react.MenuItem, _rollupPluginBabelHelpers.extends({
243
+ key: item.id,
244
+ onClick: item.onClick
245
+ }, item.menuItem)))))));
246
+ };
247
+ PageHeaderContentPageActions.displayName = 'PageHeaderContentPageActions';
248
+ PageHeaderContentPageActions.propTypes = {
249
+ /**
250
+ * The PageHeaderContent's page actions
251
+ */
252
+ actions: index.default.oneOfType([index.default.node, index.default.array]),
253
+ /**
254
+ * Provide child elements to be rendered inside PageHeaderContentPageActions.
255
+ */
256
+ children: index.default.node,
257
+ /**
258
+ * Specify an optional className to be added to your PageHeaderContentPageActions
259
+ */
260
+ className: index.default.string,
261
+ /**
262
+ * The PageHeaderContent's collapsible Menu button label
263
+ */
264
+ menuButtonLabel: index.default.string
265
+ };
266
+
267
+ /**
268
+ * ----------------
269
+ * PageHeaderContentText
270
+ * ----------------
271
+ */
272
+
273
+ const PageHeaderContentText = _ref5 => {
274
+ let {
275
+ className,
276
+ children,
277
+ subtitle,
278
+ ...other
279
+ } = _ref5;
280
+ const classNames = cx({
281
+ [`${PageHeaderUtils.blockClass}__content__body`]: true
282
+ }, className);
283
+ return /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({
284
+ className: classNames
285
+ }, other), subtitle && /*#__PURE__*/React.createElement(react.unstable_Text, {
286
+ as: "h3",
287
+ className: `${PageHeaderUtils.blockClass}__content__subtitle`
288
+ }, subtitle), children);
289
+ };
290
+ PageHeaderContentText.displayName = 'PageHeaderContentText';
291
+ PageHeaderContentText.propTypes = {
292
+ /**
293
+ * Provide child elements to be rendered inside PageHeaderContentText.
294
+ */
295
+ children: index.default.node,
296
+ /**
297
+ * Specify an optional className to be added to your PageHeaderContentText
298
+ */
299
+ className: index.default.string,
300
+ /**
301
+ * The PageHeaderContent's subtitle
302
+ */
303
+ subtitle: index.default.string
304
+ };
305
+
306
+ /**
307
+ * ----------------
308
+ * PageHeaderHeroImage
309
+ * ----------------
310
+ */
311
+
312
+ const PageHeaderHeroImage = _ref6 => {
313
+ let {
314
+ className,
315
+ children,
316
+ ...other
317
+ } = _ref6;
318
+ const [lgBreakpoint, setLgBreakpoint] = React.useState(false);
319
+ const classNames = cx({
320
+ [`${PageHeaderUtils.blockClass}__hero-image`]: true
321
+ }, className);
322
+ const lgMediaQuery = `(min-width: ${layout.breakpoints.lg.width})`;
323
+ React.useEffect(() => {
324
+ const listener = event => {
325
+ setLgBreakpoint(event.matches);
326
+ };
327
+ const mediaQueryList = window.matchMedia(lgMediaQuery);
328
+ mediaQueryList.addEventListener('change', listener);
329
+ setLgBreakpoint(mediaQueryList.matches);
330
+ return () => {
331
+ mediaQueryList.removeEventListener('change', listener);
332
+ };
333
+ }, [lgMediaQuery]);
334
+ return /*#__PURE__*/React.createElement(react.AspectRatio, _rollupPluginBabelHelpers.extends({
335
+ className: classNames
336
+ }, other, {
337
+ ratio: lgBreakpoint ? '2x1' : '3x2'
338
+ }), children);
339
+ };
340
+ PageHeaderHeroImage.displayName = 'PageHeaderHeroImage';
341
+ PageHeaderHeroImage.propTypes = {
342
+ /**
343
+ * Provide child elements to be rendered inside PageHeaderHeroImage.
344
+ */
345
+ children: index.default.node,
346
+ /**
347
+ * Specify an optional className to be added to your PageHeaderHeroImage
348
+ */
349
+ className: index.default.string
350
+ };
351
+
352
+ /**
353
+ * ----------------
354
+ * PageHeaderTabBar
355
+ * ----------------
356
+ */
357
+
358
+ const PageHeaderTabBar = /*#__PURE__*/React.forwardRef(function PageHeaderTabBar(_ref7, ref) {
359
+ let {
360
+ className,
361
+ children,
362
+ tags = [],
363
+ ...other
364
+ } = _ref7;
365
+ const classNames = cx({
366
+ [`${PageHeaderUtils.blockClass}__tab-bar`]: true
367
+ }, className);
368
+ // Early return if no tags are provided
369
+ if (!tags.length) {
370
+ return /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({
371
+ className: classNames,
372
+ ref: ref
373
+ }, other), /*#__PURE__*/React.createElement(react.Grid, null, /*#__PURE__*/React.createElement(react.Column, {
374
+ lg: 16,
375
+ md: 8,
376
+ sm: 4
377
+ }, children)));
378
+ }
379
+ const [openPopover, setOpenPopover] = React.useState(false);
380
+ const tagSize = tags[0]?.size || 'md';
381
+ const instanceId = useId.useId('PageHeaderTabBar');
382
+ const tagsWithIds = React.useMemo(() => {
383
+ return tags.map((tag, index) => ({
384
+ ...tag,
385
+ id: tag.id || `tag-${index}-${instanceId}`
386
+ }));
387
+ }, [instanceId, tags]);
388
+ const tagsContainerRef = React.useRef(null);
389
+ const offsetRef = React.useRef(null);
390
+ // To close popover when window resizes
391
+ React.useEffect(() => {
392
+ const handleResize = () => {
393
+ // Close the popover when window resizes to prevent unwanted opens
394
+ setOpenPopover(false);
395
+ };
396
+ window.addEventListener('resize', handleResize);
397
+ return () => {
398
+ window.removeEventListener('resize', handleResize);
399
+ };
400
+ }, []);
401
+
402
+ // overflow items hook
403
+ const {
404
+ visibleItems = [],
405
+ hiddenItems = [],
406
+ itemRefHandler = () => {}
407
+ } = useOverflowItems.useOverflowItems(tagsWithIds, tagsContainerRef, offsetRef) || {
408
+ visibleItems: [],
409
+ hiddenItems: [],
410
+ itemRefHandler: () => {}
411
+ };
412
+ const handleOverflowClick = React.useCallback(event => {
413
+ event.stopPropagation();
414
+ setOpenPopover(prev => !prev);
415
+ }, []);
416
+
417
+ // Function to render tags
418
+ const renderTags = () => /*#__PURE__*/React.createElement("div", {
419
+ className: `${PageHeaderUtils.blockClass}__tags`,
420
+ ref: tagsContainerRef
421
+ }, visibleItems.map(tag => /*#__PURE__*/React.createElement(react.Tag, {
422
+ key: tag.id,
423
+ ref: node => itemRefHandler(tag.id, node),
424
+ type: tag.type,
425
+ size: tag.size,
426
+ className: `${PageHeaderUtils.blockClass}__tag-item`
427
+ }, tag.text)), hiddenItems.length > 0 && /*#__PURE__*/React.createElement(react.Popover, {
428
+ open: openPopover,
429
+ onRequestClose: () => setOpenPopover(false)
430
+ }, /*#__PURE__*/React.createElement(react.OperationalTag, {
431
+ onClick: handleOverflowClick,
432
+ "aria-expanded": openPopover,
433
+ text: `+${hiddenItems.length}`,
434
+ size: tagSize
435
+ }), /*#__PURE__*/React.createElement(react.PopoverContent, {
436
+ className: "tag-popover-content"
437
+ }, /*#__PURE__*/React.createElement("div", {
438
+ className: `${PageHeaderUtils.blockClass}__tags-popover-list`
439
+ }, hiddenItems.map(tag => /*#__PURE__*/React.createElement(react.Tag, {
440
+ key: tag.id,
441
+ type: tag.type,
442
+ size: tag.size
443
+ }, tag.text))))));
444
+ return /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({
445
+ className: classNames,
446
+ ref: ref
447
+ }, other), /*#__PURE__*/React.createElement(react.Grid, null, /*#__PURE__*/React.createElement(react.Column, {
448
+ lg: 16,
449
+ md: 8,
450
+ sm: 4
451
+ }, /*#__PURE__*/React.createElement("div", {
452
+ className: `${PageHeaderUtils.blockClass}__tab-bar--tablist`
453
+ }, children, tags.length > 0 && renderTags()))));
454
+ });
455
+ PageHeaderTabBar.displayName = 'PageHeaderTabBar';
456
+
457
+ /**
458
+ * -------
459
+ * Exports
460
+ * -------
461
+ */
462
+ const Root = PageHeader;
463
+ Root.displayName = 'PageHeader.Root';
464
+ const BreadcrumbBar = PageHeaderBreadcrumbBar;
465
+ BreadcrumbBar.displayName = 'PageHeaderBreadcrumbBar';
466
+ const Content = PageHeaderContent;
467
+ Content.displayName = 'PageHeaderContent';
468
+ const ContentPageActions = PageHeaderContentPageActions;
469
+ ContentPageActions.displayName = 'PageHeaderContentPageActions';
470
+ const ContentText = PageHeaderContentText;
471
+ ContentText.displayName = 'PageHeaderContentText';
472
+ const HeroImage = PageHeaderHeroImage;
473
+ HeroImage.displayName = 'PageHeaderHeroImage';
474
+ const TabBar = PageHeaderTabBar;
475
+ TabBar.displayName = 'PageHeaderTabBar';
476
+
477
+ exports.BreadcrumbBar = BreadcrumbBar;
478
+ exports.Content = Content;
479
+ exports.ContentPageActions = ContentPageActions;
480
+ exports.ContentText = ContentText;
481
+ exports.HeroImage = HeroImage;
482
+ exports.PageHeader = PageHeader;
483
+ exports.PageHeaderBreadcrumbBar = PageHeaderBreadcrumbBar;
484
+ exports.PageHeaderContent = PageHeaderContent;
485
+ exports.PageHeaderContentPageActions = PageHeaderContentPageActions;
486
+ exports.PageHeaderContentText = PageHeaderContentText;
487
+ exports.PageHeaderHeroImage = PageHeaderHeroImage;
488
+ exports.PageHeaderTabBar = PageHeaderTabBar;
489
+ exports.Root = Root;
490
+ exports.TabBar = TabBar;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Copyright IBM Corp. 2025
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
+ export { PageHeader, PageHeaderBreadcrumbBar, PageHeaderContent, PageHeaderContentPageActions, PageHeaderContentText, PageHeaderTabBar, PageHeaderHeroImage, Root, BreadcrumbBar, Content, ContentPageActions, ContentText, TabBar, HeroImage, } from './PageHeader';
8
+ export type { PageHeaderProps, PageHeaderBreadcrumbBarProps, PageHeaderContentProps, PageHeaderContentPageActionsProps, PageHeaderContentTextProps, PageHeaderTabBarProps, PageHeaderHeroImageProps, } from './PageHeader';
@@ -41,10 +41,10 @@ exports.ScrollGradient = /*#__PURE__*/React.forwardRef((_ref, ref) => {
41
41
  hideStartGradient = defaults.hideStartGradient,
42
42
  ...rest
43
43
  } = _ref;
44
- const intersectionStartRef = React.useRef();
45
- const intersectionEndRef = React.useRef();
46
- const intersectionLeftRef = React.useRef();
47
- const intersectionRightRef = React.useRef();
44
+ const intersectionStartRef = React.useRef(undefined);
45
+ const intersectionEndRef = React.useRef(undefined);
46
+ const intersectionLeftRef = React.useRef(undefined);
47
+ const intersectionRightRef = React.useRef(undefined);
48
48
  const carbonPrefix = react.usePrefix();
49
49
  const fallbackColor = `var(--${carbonPrefix}-layer-01)`;
50
50
  const scrollContainer = React.useRef(undefined);
@@ -13,7 +13,7 @@ var react = require('@carbon/react');
13
13
  var index$1 = require('../FeatureFlags/index.js');
14
14
  var React = require('react');
15
15
  var ActionSet = require('../ActionSet/ActionSet.js');
16
- var Resizer = require('./resizer/Resizer.js');
16
+ var reactResizer = require('@carbon-labs/react-resizer');
17
17
  var index = require('../../_virtual/index.js');
18
18
  var constants = require('./constants.js');
19
19
  var propsHelper = require('../../global/js/utils/props-helper.js');
@@ -44,10 +44,8 @@ const defaults = {
44
44
  /**
45
45
  * Side panels keep users in-context of a page while performing tasks like navigating, editing, viewing details, or configuring something new.
46
46
  */
47
- const SidePanelBase = /*#__PURE__*/React.forwardRef((_ref, ref) => {
48
- let {
49
- // The component props, in alphabetical order (for consistency).
50
-
47
+ const SidePanelBase = /*#__PURE__*/React.forwardRef((props, ref) => {
48
+ const {
51
49
  actionToolbarButtons,
52
50
  actions,
53
51
  aiLabel,
@@ -77,9 +75,8 @@ const SidePanelBase = /*#__PURE__*/React.forwardRef((_ref, ref) => {
77
75
  subtitle,
78
76
  title,
79
77
  launcherButtonRef,
80
- // Collect any other property values passed in.
81
78
  ...rest
82
- } = _ref;
79
+ } = props;
83
80
  const [animationComplete, setAnimationComplete] = React.useState(false);
84
81
  const localRef = React.useRef(null);
85
82
  const sidePanelRef = ref || localRef;
@@ -173,14 +170,22 @@ const SidePanelBase = /*#__PURE__*/React.forwardRef((_ref, ref) => {
173
170
  }
174
171
  setWidth((sidePanelWidth.current ?? 0) - (placement === 'right' ? delta : -delta));
175
172
  }, [placement, sidePanelRef, sidePanelWidth]);
173
+ const getPanelWidthPercent = React.useCallback(customWidth => {
174
+ if (customWidth) {
175
+ const remValue = parseFloat(customWidth);
176
+ const remInPixels = remValue * parseFloat(getComputedStyle(document.documentElement).fontSize);
177
+ return Math.round(remInPixels / window.innerWidth * 100);
178
+ }
179
+ return Math.round((sidePanelRef.current?.clientWidth || 0) / window.innerWidth * 100);
180
+ }, [sidePanelRef]);
176
181
  const onResizeEnd = React.useCallback((_, ref) => {
177
182
  accumulatedDeltaRef.current = 0;
178
183
  sidePanelRef.current?.style?.removeProperty('transition');
179
- const percent = Math.round((sidePanelRef.current.clientWidth || 0) / window.innerWidth * 100);
180
184
  // custom a11y announcements
181
- ref.current.setAttribute('aria-label', `side panel is covering ${percent}% of screen`);
185
+ ref.current.setAttribute('aria-label', `side panel is covering ${getPanelWidthPercent()}% of screen`);
186
+ ref.current.setAttribute('aria-valuenow', getPanelWidthPercent());
182
187
  sidePanelWidth.current = sidePanelRef.current?.clientWidth;
183
- }, [sidePanelRef]);
188
+ }, [sidePanelRef, getPanelWidthPercent]);
184
189
  const onDoubleClick = React.useCallback(() => {
185
190
  sidePanelWidth.current = Math.min(parseFloat(constants.SIDE_PANEL_SIZES[size]) * 16, window.innerWidth * 0.75);
186
191
  const parentEl = sidePanelRef.current?.parentElement;
@@ -475,7 +480,7 @@ const SidePanelBase = /*#__PURE__*/React.forwardRef((_ref, ref) => {
475
480
  ref: subtitleRef
476
481
  }, subtitle), actionToolbarButtons && actionToolbarButtons.length && /*#__PURE__*/React.createElement("div", {
477
482
  className: `${blockClass}__action-toolbar`
478
- }, actionToolbarButtons.map(_ref2 => {
483
+ }, actionToolbarButtons.map(_ref => {
479
484
  let {
480
485
  label,
481
486
  kind,
@@ -489,7 +494,7 @@ const SidePanelBase = /*#__PURE__*/React.forwardRef((_ref, ref) => {
489
494
  className,
490
495
  onClick,
491
496
  ...rest
492
- } = _ref2;
497
+ } = _ref;
493
498
  return /*#__PURE__*/React.createElement(react.Button, _rollupPluginBabelHelpers.extends({}, rest, {
494
499
  key: label,
495
500
  kind: kind || 'ghost',
@@ -531,10 +536,12 @@ const SidePanelBase = /*#__PURE__*/React.forwardRef((_ref, ref) => {
531
536
  onAnimationEnd: onAnimationEnd,
532
537
  onAnimationStart: onAnimationStart,
533
538
  onKeyDown: handleKeyDown
534
- }), !slideIn && enableResizer && window.innerWidth > 768 && /*#__PURE__*/React.createElement(Resizer.Resizer, {
539
+ }), !slideIn && enableResizer && window.innerWidth > 768 && /*#__PURE__*/React.createElement(reactResizer.Resizer, {
535
540
  className: `${blockClass}__resizer`,
536
541
  orientation: "vertical",
537
- "aria-valuenow": sidePanelWidth.current,
542
+ "aria-valuemin": getPanelWidthPercent(constants.SIDE_PANEL_SIZES['xs']),
543
+ "aria-valuemax": 75,
544
+ "aria-valuenow": getPanelWidthPercent(),
538
545
  onResize: onResize,
539
546
  onResizeEnd: onResizeEnd,
540
547
  onDoubleClick: onDoubleClick
@@ -595,9 +602,7 @@ SidePanel.propTypes = {
595
602
  *
596
603
  * See https://react.carbondesignsystem.com/?path=/docs/components-button--default#component-api
597
604
  */
598
- actions: propsHelper.allPropTypes([/**@ts-ignore*/
599
- ActionSet.ActionSet.validateActions(), index.default.arrayOf(index.default.shape({
600
- /**@ts-ignore */
605
+ actions: propsHelper.allPropTypes([index.default.arrayOf(index.default.shape({
601
606
  ...react.Button.propTypes,
602
607
  kind: index.default.oneOf(['ghost', 'danger--ghost', 'secondary', 'danger', 'primary']),
603
608
  tooltipPosition: index.default.oneOf(['top', 'right', 'bottom', 'left']),
@@ -688,10 +693,10 @@ SidePanel.propTypes = {
688
693
  * This prop is required when using the `slideIn` variant of the side panel.
689
694
  */
690
695
  /**@ts-ignore*/
691
- selectorPageContent: index.default.string.isRequired.if(_ref3 => {
696
+ selectorPageContent: index.default.string.isRequired.if(_ref2 => {
692
697
  let {
693
698
  slideIn
694
- } = _ref3;
699
+ } = _ref2;
695
700
  return slideIn;
696
701
  }),
697
702
  /**
@@ -718,10 +723,10 @@ SidePanel.propTypes = {
718
723
  * Sets the title text
719
724
  */
720
725
  /**@ts-ignore*/
721
- title: index.default.string.isRequired.if(_ref4 => {
726
+ title: index.default.string.isRequired.if(_ref3 => {
722
727
  let {
723
728
  labelText
724
- } = _ref4;
729
+ } = _ref3;
725
730
  return labelText;
726
731
  }),
727
732
  ...deprecatedProps
@@ -21,6 +21,7 @@ var useIsomorphicEffect = require('../../global/js/hooks/useIsomorphicEffect.js'
21
21
  const blockClass = `${settings.pkg.prefix}--string-formatter`;
22
22
  const componentName = 'StringFormatter';
23
23
  const defaults = {
24
+ autoAlign: false,
24
25
  lines: 1,
25
26
  tooltipDirection: enums.StringFormatterAlignment.BOTTOM_START,
26
27
  truncate: false,
@@ -34,6 +35,7 @@ const defaults = {
34
35
  exports.StringFormatter = /*#__PURE__*/React.forwardRef((_ref, ref) => {
35
36
  let {
36
37
  className,
38
+ autoAlign = defaults.autoAlign,
37
39
  lines = defaults.lines,
38
40
  tooltipDirection = defaults.tooltipDirection,
39
41
  truncate = defaults.truncate,
@@ -85,6 +87,7 @@ exports.StringFormatter = /*#__PURE__*/React.forwardRef((_ref, ref) => {
85
87
  }, devtools.getDevtoolsProps(componentName)), truncate && isTextTruncated ? /*#__PURE__*/React.createElement(react.DefinitionTooltip, {
86
88
  className: `${blockClass}__tooltip`,
87
89
  align: tooltipDirection,
90
+ autoAlign: autoAlign,
88
91
  definition: value,
89
92
  openOnHover: true
90
93
  }, stringFormatterContent) : stringFormatterContent);