@carbon/ibm-products 2.98.0 → 2.99.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 (197) hide show
  1. package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +463 -463
  2. package/css/carbon.css +9599 -6352
  3. package/css/carbon.css.map +1 -1
  4. package/css/index-full-carbon.css +5121 -1880
  5. package/css/index-full-carbon.css.map +1 -1
  6. package/css/index-full-carbon.min.css +1 -1
  7. package/css/index-full-carbon.min.css.map +1 -1
  8. package/css/index-without-carbon-released-only.css +29 -186
  9. package/css/index-without-carbon-released-only.css.map +1 -1
  10. package/css/index-without-carbon-released-only.min.css +1 -1
  11. package/css/index-without-carbon-released-only.min.css.map +1 -1
  12. package/css/index-without-carbon.css +29 -186
  13. package/css/index-without-carbon.css.map +1 -1
  14. package/css/index-without-carbon.min.css +1 -1
  15. package/css/index-without-carbon.min.css.map +1 -1
  16. package/css/index.css +397 -447
  17. package/css/index.css.map +1 -1
  18. package/css/index.min.css +1 -1
  19. package/css/index.min.css.map +1 -1
  20. package/es/components/AddSelect/AddSelectColumn.js +4 -4
  21. package/es/components/AddSelect/next/AddSelectColumn.js +2 -2
  22. package/es/components/ConditionBuilder/ConditionBuilder.d.ts +21 -0
  23. package/es/components/ConditionBuilder/ConditionBuilder.d.ts.map +1 -1
  24. package/es/components/ConditionBuilder/ConditionBuilder.js +51 -44
  25. package/es/components/ConditionBuilder/ConditionBuilder.types.d.ts +47 -9
  26. package/es/components/ConditionBuilder/ConditionBuilder.types.d.ts.map +1 -1
  27. package/es/components/ConditionBuilder/ConditionBuilderContent/ConditionBuilderContent.d.ts +9 -2
  28. package/es/components/ConditionBuilder/ConditionBuilderContent/ConditionBuilderContent.d.ts.map +1 -1
  29. package/es/components/ConditionBuilder/ConditionBuilderContent/ConditionBuilderContent.js +16 -3
  30. package/es/components/ConditionBuilder/ConditionBuilderContext/ConditionBuilderProvider.d.ts.map +1 -1
  31. package/es/components/ConditionBuilder/ConditionBuilderContext/ConditionBuilderProvider.js +37 -17
  32. package/es/components/ConditionBuilder/ConditionBuilderContext/translationObject.d.ts +1 -0
  33. package/es/components/ConditionBuilder/ConditionBuilderContext/translationObject.js +1 -0
  34. package/es/components/ConditionBuilder/index.d.ts +1 -1
  35. package/es/components/ConditionBuilder/index.d.ts.map +1 -1
  36. package/es/components/ConditionBuilder/utils/handleKeyboardEvents.js +2 -2
  37. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +2 -2
  38. package/es/components/EmptyStates/assets/ErrorIllustration.js +2 -2
  39. package/es/components/EmptyStates/assets/NoDataIllustration.js +2 -2
  40. package/es/components/EmptyStates/assets/NoTagsIllustration.js +2 -2
  41. package/es/components/EmptyStates/assets/NotFoundIllustration.js +2 -2
  42. package/es/components/EmptyStates/assets/NotificationsIllustration.js +2 -2
  43. package/es/components/EmptyStates/assets/UnauthorizedIllustration.js +2 -2
  44. package/es/components/NotificationsPanel/NotificationsPanel.js +2 -2
  45. package/es/components/PageHeader/next/PageHeader.d.ts +10 -0
  46. package/es/components/PageHeader/next/PageHeader.d.ts.map +1 -1
  47. package/es/components/PageHeader/next/PageHeader.js +6 -3
  48. package/es/components/PageHeader/next/PageHeaderBreadcrumbBar.d.ts.map +1 -1
  49. package/es/components/PageHeader/next/PageHeaderBreadcrumbBar.js +6 -3
  50. package/es/components/PageHeader/next/PageHeaderBreadcrumbPageActions.d.ts.map +1 -1
  51. package/es/components/PageHeader/next/PageHeaderBreadcrumbPageActions.js +4 -10
  52. package/es/components/PageHeader/next/PageHeaderContent.d.ts +3 -2
  53. package/es/components/PageHeader/next/PageHeaderContent.d.ts.map +1 -1
  54. package/es/components/PageHeader/next/PageHeaderContent.js +14 -11
  55. package/es/components/PageHeader/next/PageHeaderContentPageActions.d.ts.map +1 -1
  56. package/es/components/PageHeader/next/PageHeaderContentPageActions.js +3 -2
  57. package/es/components/PageHeader/next/PageHeaderScrollButton.d.ts.map +1 -1
  58. package/es/components/PageHeader/next/PageHeaderScrollButton.js +3 -0
  59. package/es/components/PageHeader/next/PageHeaderTabBar.js +11 -3
  60. package/es/components/PageHeader/next/PageHeaderTagOverflow.d.ts.map +1 -1
  61. package/es/components/PageHeader/next/PageHeaderTagOverflow.js +10 -2
  62. package/es/components/PageHeader/next/context.d.ts +2 -0
  63. package/es/components/PageHeader/next/context.d.ts.map +1 -1
  64. package/es/components/PageHeader/next/context.js +3 -1
  65. package/es/components/StatusIcon/StatusIcon.d.ts +11 -9
  66. package/es/components/StatusIcon/StatusIcon.d.ts.map +1 -1
  67. package/es/components/StatusIcon/StatusIcon.js +16 -0
  68. package/es/components/TagOverflow/TagOverflow.d.ts +9 -2
  69. package/es/components/TagOverflow/TagOverflow.d.ts.map +1 -1
  70. package/es/components/TagOverflow/TagOverflow.js +10 -4
  71. package/es/components/TagOverflow/TagOverflowModal.d.ts +22 -4
  72. package/es/components/TagOverflow/TagOverflowModal.d.ts.map +1 -1
  73. package/es/components/TagOverflow/TagOverflowModal.js +15 -6
  74. package/es/components/Tearsheet/TearsheetShell.js +2 -2
  75. package/es/components/Tearsheet/next/Tearsheet.d.ts.map +1 -1
  76. package/es/components/Tearsheet/next/Tearsheet.js +4 -3
  77. package/es/components/Tearsheet/next/TearsheetBody.d.ts.map +1 -1
  78. package/es/components/Tearsheet/next/TearsheetBody.js +1 -3
  79. package/es/components/Tearsheet/next/TearsheetHeaderContent.d.ts +3 -2
  80. package/es/components/Tearsheet/next/TearsheetHeaderContent.d.ts.map +1 -1
  81. package/es/components/Tearsheet/next/TearsheetHeaderContent.js +3 -3
  82. package/es/components/index.d.ts +1 -1
  83. package/es/components/index.d.ts.map +1 -1
  84. package/es/global/js/hooks/useCreateComponentFocus.js +1 -8
  85. package/es/global/js/utils/useId.js +2 -2
  86. package/es/index.js +3 -3
  87. package/es/node_modules/@carbon/icons-react/es/generated/bucket-11.js +342 -310
  88. package/es/node_modules/@carbon/icons-react/es/generated/bucket-3.js +48 -56
  89. package/es/settings.d.ts +4 -4
  90. package/lib/components/ConditionBuilder/ConditionBuilder.d.ts +21 -0
  91. package/lib/components/ConditionBuilder/ConditionBuilder.d.ts.map +1 -1
  92. package/lib/components/ConditionBuilder/ConditionBuilder.js +51 -44
  93. package/lib/components/ConditionBuilder/ConditionBuilder.types.d.ts +47 -9
  94. package/lib/components/ConditionBuilder/ConditionBuilder.types.d.ts.map +1 -1
  95. package/lib/components/ConditionBuilder/ConditionBuilderContent/ConditionBuilderContent.d.ts +9 -2
  96. package/lib/components/ConditionBuilder/ConditionBuilderContent/ConditionBuilderContent.d.ts.map +1 -1
  97. package/lib/components/ConditionBuilder/ConditionBuilderContent/ConditionBuilderContent.js +16 -3
  98. package/lib/components/ConditionBuilder/ConditionBuilderContext/ConditionBuilderProvider.d.ts.map +1 -1
  99. package/lib/components/ConditionBuilder/ConditionBuilderContext/ConditionBuilderProvider.js +36 -16
  100. package/lib/components/ConditionBuilder/ConditionBuilderContext/translationObject.d.ts +1 -0
  101. package/lib/components/ConditionBuilder/ConditionBuilderContext/translationObject.js +1 -0
  102. package/lib/components/ConditionBuilder/index.d.ts +1 -1
  103. package/lib/components/ConditionBuilder/index.d.ts.map +1 -1
  104. package/lib/components/ConditionBuilder/utils/handleKeyboardEvents.js +2 -2
  105. package/lib/components/PageHeader/next/PageHeader.d.ts +10 -0
  106. package/lib/components/PageHeader/next/PageHeader.d.ts.map +1 -1
  107. package/lib/components/PageHeader/next/PageHeader.js +6 -3
  108. package/lib/components/PageHeader/next/PageHeaderBreadcrumbBar.d.ts.map +1 -1
  109. package/lib/components/PageHeader/next/PageHeaderBreadcrumbBar.js +6 -3
  110. package/lib/components/PageHeader/next/PageHeaderBreadcrumbPageActions.d.ts.map +1 -1
  111. package/lib/components/PageHeader/next/PageHeaderBreadcrumbPageActions.js +3 -9
  112. package/lib/components/PageHeader/next/PageHeaderContent.d.ts +3 -2
  113. package/lib/components/PageHeader/next/PageHeaderContent.d.ts.map +1 -1
  114. package/lib/components/PageHeader/next/PageHeaderContent.js +13 -10
  115. package/lib/components/PageHeader/next/PageHeaderContentPageActions.d.ts.map +1 -1
  116. package/lib/components/PageHeader/next/PageHeaderContentPageActions.js +3 -2
  117. package/lib/components/PageHeader/next/PageHeaderScrollButton.d.ts.map +1 -1
  118. package/lib/components/PageHeader/next/PageHeaderScrollButton.js +3 -0
  119. package/lib/components/PageHeader/next/PageHeaderTabBar.js +11 -3
  120. package/lib/components/PageHeader/next/PageHeaderTagOverflow.d.ts.map +1 -1
  121. package/lib/components/PageHeader/next/PageHeaderTagOverflow.js +10 -2
  122. package/lib/components/PageHeader/next/context.d.ts +2 -0
  123. package/lib/components/PageHeader/next/context.d.ts.map +1 -1
  124. package/lib/components/PageHeader/next/context.js +3 -1
  125. package/lib/components/StatusIcon/StatusIcon.d.ts +11 -9
  126. package/lib/components/StatusIcon/StatusIcon.d.ts.map +1 -1
  127. package/lib/components/StatusIcon/StatusIcon.js +16 -0
  128. package/lib/components/TagOverflow/TagOverflow.d.ts +9 -2
  129. package/lib/components/TagOverflow/TagOverflow.d.ts.map +1 -1
  130. package/lib/components/TagOverflow/TagOverflow.js +10 -4
  131. package/lib/components/TagOverflow/TagOverflowModal.d.ts +22 -4
  132. package/lib/components/TagOverflow/TagOverflowModal.d.ts.map +1 -1
  133. package/lib/components/TagOverflow/TagOverflowModal.js +15 -6
  134. package/lib/components/Tearsheet/next/Tearsheet.d.ts.map +1 -1
  135. package/lib/components/Tearsheet/next/Tearsheet.js +2 -1
  136. package/lib/components/Tearsheet/next/TearsheetBody.d.ts.map +1 -1
  137. package/lib/components/Tearsheet/next/TearsheetBody.js +1 -3
  138. package/lib/components/Tearsheet/next/TearsheetHeaderContent.d.ts +3 -2
  139. package/lib/components/Tearsheet/next/TearsheetHeaderContent.d.ts.map +1 -1
  140. package/lib/components/Tearsheet/next/TearsheetHeaderContent.js +3 -3
  141. package/lib/components/index.d.ts +1 -1
  142. package/lib/components/index.d.ts.map +1 -1
  143. package/lib/global/js/hooks/useCreateComponentFocus.js +1 -8
  144. package/lib/index.js +5 -9
  145. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-0.js +33 -33
  146. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-1.js +26 -29
  147. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-10.js +336 -365
  148. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-11.js +365 -333
  149. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-12.js +600 -644
  150. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-13.js +724 -662
  151. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-14.js +608 -624
  152. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-15.js +663 -662
  153. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-16.js +533 -551
  154. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-17.js +701 -725
  155. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-18.js +669 -645
  156. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-19.js +521 -496
  157. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-2.js +29 -26
  158. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-20.js +592 -633
  159. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-21.js +688 -174
  160. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-22.js +210 -0
  161. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-3.js +52 -60
  162. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-4.js +60 -52
  163. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-5.js +65 -83
  164. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-6.js +129 -121
  165. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-7.js +199 -231
  166. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-8.js +296 -264
  167. package/lib/node_modules/@carbon/icons-react/lib/generated/bucket-9.js +303 -336
  168. package/lib/node_modules/@carbon/icons-react/lib/index.js +535 -486
  169. package/lib/settings.d.ts +4 -4
  170. package/package.json +17 -17
  171. package/scss/components/PageHeader/_page-header.scss +32 -32
  172. package/scss/components/Tearsheet/_tearsheet_next.scss +10 -8
  173. package/telemetry.yml +7 -3
  174. package/es/components/Card/next/Card.js +0 -180
  175. package/es/components/Card/next/CardAction.js +0 -57
  176. package/es/components/Card/next/CardActions.js +0 -112
  177. package/es/components/Card/next/CardBody.js +0 -47
  178. package/es/components/Card/next/CardContext.js +0 -31
  179. package/es/components/Card/next/CardFooter.js +0 -47
  180. package/es/components/Card/next/CardHeader.js +0 -62
  181. package/es/components/Card/next/CardHeaderMedia.js +0 -46
  182. package/es/components/Card/next/CardMedia.js +0 -59
  183. package/es/components/Card/next/CardTitle.js +0 -121
  184. package/es/components/Card/next/CardTitleMedia.js +0 -49
  185. package/es/components/Card/next/index.js +0 -33
  186. package/lib/components/Card/next/Card.js +0 -182
  187. package/lib/components/Card/next/CardAction.js +0 -64
  188. package/lib/components/Card/next/CardActions.js +0 -119
  189. package/lib/components/Card/next/CardBody.js +0 -54
  190. package/lib/components/Card/next/CardContext.js +0 -33
  191. package/lib/components/Card/next/CardFooter.js +0 -54
  192. package/lib/components/Card/next/CardHeader.js +0 -69
  193. package/lib/components/Card/next/CardHeaderMedia.js +0 -53
  194. package/lib/components/Card/next/CardMedia.js +0 -66
  195. package/lib/components/Card/next/CardTitle.js +0 -128
  196. package/lib/components/Card/next/CardTitleMedia.js +0 -56
  197. package/lib/components/Card/next/index.js +0 -38
package/lib/settings.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  export namespace carbon {
2
2
  const themes: {
3
- white: typeof import("@carbon/themes/lib/white");
4
- g10: typeof import("@carbon/themes/lib/g10");
5
- g90: typeof import("@carbon/themes/lib/g90");
6
- g100: typeof import("@carbon/themes/lib/g100");
3
+ white: typeof import("@carbon/themes/js/generated/themes/white");
4
+ g10: typeof import("@carbon/themes/js/generated/themes/g10");
5
+ g90: typeof import("@carbon/themes/js/generated/themes/g90");
6
+ g100: typeof import("@carbon/themes/js/generated/themes/g100");
7
7
  };
8
8
  let prefix: string;
9
9
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@carbon/ibm-products",
3
3
  "description": "Carbon for IBM Products",
4
- "version": "2.98.0",
4
+ "version": "2.99.0",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -66,9 +66,9 @@
66
66
  "@babel/preset-env": "^7.26.9",
67
67
  "@babel/preset-react": "^7.26.3",
68
68
  "@babel/preset-typescript": "^7.26.0",
69
- "@carbon/charts-react": "^1.27.16",
70
- "@carbon/ibm-products-utilities": "1.7.0",
71
- "@carbon/styles": "^1.110.1",
69
+ "@carbon/charts-react": "^1.27.18",
70
+ "@carbon/ibm-products-utilities": "1.8.0",
71
+ "@carbon/styles": "^1.114.0",
72
72
  "@figma/code-connect": "^1.4.0",
73
73
  "@ibm/telemetry-js-config-generator": "^2.0.1",
74
74
  "@storybook/addon-a11y": "^10.3.5",
@@ -80,7 +80,7 @@
80
80
  "@types/react-table": "^7.7.20",
81
81
  "@vitejs/plugin-react": "^5.0.0",
82
82
  "babel-plugin-dev-expression": "^0.2.3",
83
- "babel-preset-ibm-cloud-cognitive": "^0.56.0",
83
+ "babel-preset-ibm-cloud-cognitive": "^0.57.0",
84
84
  "change-case": "5.4.4",
85
85
  "classnames": "^2.5.1",
86
86
  "copyfiles": "^2.4.1",
@@ -88,7 +88,7 @@
88
88
  "fs-extra": "^11.3.0",
89
89
  "glob": "^13.0.0",
90
90
  "jest": "^30.0.5",
91
- "jest-config-ibm-cloud-cognitive": "^1.57.0",
91
+ "jest-config-ibm-cloud-cognitive": "^1.58.0",
92
92
  "jest-environment-jsdom": "^30.0.5",
93
93
  "namor": "^1.1.2",
94
94
  "npm-run-all2": "^8.0.0",
@@ -107,11 +107,11 @@
107
107
  "dependencies": {
108
108
  "@babel/runtime": "^7.26.10",
109
109
  "@carbon-labs/react-resizer": "^0.25.0",
110
- "@carbon/feature-flags": "^1.4.0",
111
- "@carbon/ibm-products-styles": "^2.94.0",
110
+ "@carbon/feature-flags": "^1.8.0",
111
+ "@carbon/ibm-products-styles": "^2.95.0",
112
112
  "@carbon/telemetry": "^0.1.0",
113
- "@carbon/utilities": "^0.21.0",
114
- "@carbon/utilities-react": "0.24.0",
113
+ "@carbon/utilities": "^0.25.0",
114
+ "@carbon/utilities-react": "0.28.0",
115
115
  "@dnd-kit/core": "^6.3.1",
116
116
  "@dnd-kit/modifiers": "^9.0.0",
117
117
  "@dnd-kit/sortable": "^10.0.0",
@@ -122,15 +122,15 @@
122
122
  "react-window": "^1.8.11"
123
123
  },
124
124
  "peerDependencies": {
125
- "@carbon/grid": "^11.57.0",
126
- "@carbon/layout": "^11.54.0",
127
- "@carbon/motion": "^11.47.0",
128
- "@carbon/react": "^1.111.1",
129
- "@carbon/themes": "^11.76.1",
130
- "@carbon/type": "^11.62.0",
125
+ "@carbon/grid": "^11.61.0",
126
+ "@carbon/layout": "^11.58.0",
127
+ "@carbon/motion": "^11.51.0",
128
+ "@carbon/react": "^1.115.0",
129
+ "@carbon/themes": "^11.80.0",
130
+ "@carbon/type": "^11.66.0",
131
131
  "react": "^16.8.6 || ^17.0.1 || ^18.2.0 || ^19.0.0",
132
132
  "react-dom": "^16.8.6 || ^17.0.1 || ^18.2.0 || ^19.0.0",
133
133
  "react-is": "^16.13.1 || ^17.0.2 || ^18.3.1 || ^19.0.0"
134
134
  },
135
- "gitHead": "e818e518799f3ad09c1cd77f4e27f42dba9977b8"
135
+ "gitHead": "4e2783128ab5da7b4f2c161b415dce861fb68d45"
136
136
  }
@@ -724,6 +724,11 @@ $duration: 1000ms;
724
724
  overflow-x: clip;
725
725
  }
726
726
 
727
+ // fullWidthGrid='xl': extra inline padding to match deprecated behavior
728
+ &.#{$block-class}.#{$block-class}--width--xl {
729
+ padding-inline: $spacing-07;
730
+ }
731
+
727
732
  // When disableStickyTabBar is true, remove sticky positioning from root
728
733
  // This allows breadcrumb to stick to viewport while tab bar scrolls normally
729
734
  &.#{$block-class}.#{$block-class}--disable-sticky-tab-bar {
@@ -818,6 +823,17 @@ $duration: 1000ms;
818
823
  margin-inline-end: $spacing-04;
819
824
  }
820
825
 
826
+ .#{$block-class}__breadcrumb-page-actions {
827
+ display: inline-flex;
828
+ align-items: center;
829
+ justify-content: flex-end;
830
+ inline-size: 50%;
831
+ }
832
+
833
+ .#{$block-class}__breadcrumb-page-actions__overflow-item {
834
+ position: relative;
835
+ }
836
+
821
837
  .#{$block-class}__breadcrumb-wrapper {
822
838
  display: inline-flex;
823
839
  flex: 1 1 auto;
@@ -884,7 +900,7 @@ $duration: 1000ms;
884
900
  display: grid;
885
901
  gap: $spacing-05;
886
902
  grid-template-columns: auto minmax(
887
- var(--page-header-title-grid-width, 0),
903
+ var(--#{$pkg-prefix}-page-header-title-grid-width, 0),
888
904
  1fr
889
905
  );
890
906
  margin-block-end: $spacing-05;
@@ -1045,7 +1061,12 @@ $duration: 1000ms;
1045
1061
  .#{$block-class}__tab-bar {
1046
1062
  position: sticky;
1047
1063
  z-index: 1;
1064
+ // Use flex at all breakpoints so the scroller button is always a
1065
+ // natural in-flow sibling of the Grid column — no absolute positioning
1066
+ // needed and no overlap with the tag overflow area.
1067
+ display: flex;
1048
1068
  align-content: center;
1069
+ align-items: center;
1049
1070
  background-color: $layer;
1050
1071
  /* stylelint-disable-next-line carbon/layout-use */
1051
1072
  inset-block-start: var(--#{$pkg-prefix}-page-header-breadcrumb-top);
@@ -1056,16 +1077,15 @@ $duration: 1000ms;
1056
1077
  &.#{$block-class}.#{$block-class}--disable-sticky-tab-bar
1057
1078
  .#{$block-class}__tab-bar {
1058
1079
  position: static;
1059
- // On smaller screens, use flex to keep scroller button in flow
1060
- // position: relative;
1061
1080
  display: flex;
1062
1081
  align-items: center;
1063
- // background-color: $layer;
1082
+ }
1064
1083
 
1065
- // // On max breakpoint and above, use block to maintain Carbon alignment (scroller uses absolute positioning)
1066
- @include breakpoint(sm) {
1067
- display: block;
1068
- }
1084
+ // Grid column grows to fill the row, leaving the scroller as a fixed-width
1085
+ // item at the end — no absolute positioning hacks needed.
1086
+ .#{$block-class}__tab-bar > .#{$carbon-prefix}--css-grid {
1087
+ flex: 1;
1088
+ min-inline-size: 0;
1069
1089
  }
1070
1090
 
1071
1091
  .#{$block-class}__tab-bar--tablist {
@@ -1092,15 +1112,6 @@ $duration: 1000ms;
1092
1112
  display: flex;
1093
1113
  align-items: center;
1094
1114
  justify-content: right;
1095
- transform: translateX(calc($spacing-06 * -1));
1096
-
1097
- @include breakpoint(md) {
1098
- padding-inline-end: $spacing-03;
1099
- transform: translateX(0);
1100
- }
1101
- @include breakpoint(max) {
1102
- padding-inline-end: $spacing-05;
1103
- }
1104
1115
  }
1105
1116
 
1106
1117
  .#{$carbon-prefix}--tabs .#{$carbon-prefix}--tab--overflow-nav-button {
@@ -1139,17 +1150,12 @@ $duration: 1000ms;
1139
1150
  align-content: center;
1140
1151
  justify-content: flex-end;
1141
1152
  inline-size: 40%;
1142
- padding-inline-end: $spacing-06;
1143
1153
  text-align: end;
1144
1154
 
1145
1155
  .#{$carbon-prefix}--tag {
1146
1156
  flex-shrink: 0;
1147
1157
  margin-inline-end: $spacing-03;
1148
1158
  }
1149
-
1150
- @include breakpoint-down(lg) {
1151
- padding-inline-end: $spacing-06;
1152
- }
1153
1159
  }
1154
1160
 
1155
1161
  .#{$block-class}--tag-overflow-popover__hidden {
@@ -1173,18 +1179,12 @@ $duration: 1000ms;
1173
1179
  }
1174
1180
 
1175
1181
  .#{$pkg-prefix}--page-header--scroller-button-container {
1176
- position: relative;
1182
+ // Always in-flow alongside the Grid column — no absolute positioning.
1183
+ // flex-shrink: 0 ensures it always occupies its natural 40px width and
1184
+ // never competes for space with the tabs or tag overflow area.
1177
1185
  display: inline-flex;
1186
+ flex-shrink: 0;
1178
1187
  align-items: center;
1179
- margin-inline-start: $spacing-03;
1180
-
1181
- // On max breakpoint and above, position absolutely to the right (enough gutter space)
1182
- @include breakpoint(sm) {
1183
- position: absolute;
1184
- inset-block-start: 0;
1185
- inset-inline-end: 0;
1186
- margin-inline-start: 0;
1187
- }
1188
1188
  }
1189
1189
 
1190
1190
  @keyframes page-header-title-breadcrumb-animation {
@@ -347,6 +347,10 @@ $transform-start: translate3d(0, calc(min(95vh, 500px)), 0);
347
347
  .#{$block-class__next}__header-content {
348
348
  align-self: center;
349
349
  margin-block-end: 0;
350
+
351
+ @include breakpoint-down(md) {
352
+ align-self: stretch;
353
+ }
350
354
  }
351
355
 
352
356
  .#{$carbon-prefix}--modal-close {
@@ -463,6 +467,10 @@ $transform-start: translate3d(0, calc(min(95vh, 500px)), 0);
463
467
  gap: $spacing-05;
464
468
  margin-block-end: $spacing-03;
465
469
 
470
+ &--no-content-below {
471
+ margin-block-end: 0;
472
+ }
473
+
466
474
  svg {
467
475
  flex-shrink: 0;
468
476
  }
@@ -620,14 +628,9 @@ $transform-start: translate3d(0, calc(min(95vh, 500px)), 0);
620
628
 
621
629
  .#{$block-class__next}__footer {
622
630
  overflow: hidden;
623
- block-size: $spacing-11;
624
631
  border-block-start: 1px solid $border-subtle-01;
625
632
  grid-area: footer;
626
633
 
627
- @include breakpoint-down(md) {
628
- block-size: $spacing-10;
629
- }
630
-
631
634
  // Footer overflow handling for many actions (> 3 buttons)
632
635
  &.#{$block-class__next}__footer--three-actions {
633
636
  @include breakpoint-down(sm) {
@@ -671,7 +674,9 @@ $transform-start: translate3d(0, calc(min(95vh, 500px)), 0);
671
674
 
672
675
  .#{$block-class__next}__main-content {
673
676
  position: relative;
677
+ background-color: $background;
674
678
  }
679
+
675
680
  .#{$block-class__next}__side-panel {
676
681
  position: absolute;
677
682
  z-index: 9999;
@@ -728,7 +733,4 @@ $transform-start: translate3d(0, calc(min(95vh, 500px)), 0);
728
733
  padding-inline: $spacing-05;
729
734
  }
730
735
  }
731
- .#{$block-class__next}__footer {
732
- block-size: $spacing-10;
733
- }
734
736
  }
package/telemetry.yml CHANGED
@@ -88,6 +88,7 @@ collect:
88
88
  - disableColumnSwapping
89
89
  - disabled
90
90
  - disabledCell
91
+ - disablePortal
91
92
  - disableSubmit
92
93
  - displayMetalPanel
93
94
  - downloadLinkLabel
@@ -216,6 +217,7 @@ collect:
216
217
  - metadata
217
218
  - metaIconDescription
218
219
  - metaPanelTitle
220
+ - modalAriaLabel
219
221
  - modifiers
220
222
  - multi
221
223
  - multiline
@@ -327,6 +329,7 @@ collect:
327
329
  - scoreThresholds
328
330
  - scrollBarSize
329
331
  - scroller
332
+ - searchLabel
330
333
  - searchPlaceholder
331
334
  - searchProps
332
335
  - searchResultsTitle
@@ -375,6 +378,7 @@ collect:
375
378
  - slug
376
379
  - small
377
380
  - sortByLabel
381
+ - startActive
378
382
  - startConditionLabel
379
383
  - state
380
384
  - statementConfigCustom
@@ -432,7 +436,6 @@ collect:
432
436
  - content
433
437
  - copyrightText
434
438
  - logo
435
- - modalAriaLabel
436
439
  - version
437
440
  # ActionBar
438
441
  - overflowItems
@@ -462,7 +465,6 @@ collect:
462
465
  - header
463
466
  - onNavigate
464
467
  - onSelectAll
465
- - searchLabel
466
468
  - selectAllCheckboxProps
467
469
  - setPath
468
470
  - showSelectAll
@@ -1036,9 +1038,11 @@ collect:
1036
1038
  - width
1037
1039
  # TagOverflow
1038
1040
  - tagComponent
1041
+ # TagOverflowModal
1042
+ - allTags
1043
+ - onTagClose
1039
1044
  # Tearsheet
1040
1045
  - containerClassName
1041
- - disablePortal
1042
1046
  - keepMounted
1043
1047
  - summaryContentWidth
1044
1048
  - verticalGap
@@ -1,180 +0,0 @@
1
- /**
2
- * Copyright IBM Corp. 2020, 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
- import { __toESM } from "../../../_virtual/_rolldown/runtime.js";
9
- import { require_classnames } from "../../../node_modules/classnames/index.js";
10
- import { pkg } from "../../../settings.js";
11
- import { CardContext } from "./CardContext.js";
12
- import { CardHeader } from "./CardHeader.js";
13
- import { CardBody } from "./CardBody.js";
14
- import { CardFooter } from "./CardFooter.js";
15
- import { CardHeaderMedia } from "./CardHeaderMedia.js";
16
- import { CardMedia } from "./CardMedia.js";
17
- import { CardTitle } from "./CardTitle.js";
18
- import { CardTitleMedia } from "./CardTitleMedia.js";
19
- import { CardActions } from "./CardActions.js";
20
- import { CardAction } from "./CardAction.js";
21
- import React, { forwardRef, isValidElement, useCallback, useMemo } from "react";
22
- import PropTypes from "prop-types";
23
- import { AILabel } from "@carbon/react";
24
- //#region src/components/Card/next/Card.tsx
25
- /**
26
- * Copyright IBM Corp. 2026
27
- *
28
- * This source code is licensed under the Apache-2.0 license found in the
29
- * LICENSE file in the root directory of this source tree.
30
- */
31
- var import_classnames = /* @__PURE__ */ __toESM(require_classnames());
32
- const componentName = "Card";
33
- const blockClass = `${pkg.prefix}--card-next`;
34
- /**
35
- * Card component - Root container for composable card
36
- */
37
- let CardComponent = forwardRef(({ clickable = false, onClick, onKeyDown, disabled = false, density = "productive", decorator, horizontal = false, className, children, ...rest }, ref) => {
38
- const hasAILabel = useMemo(() => isValidElement(decorator) && decorator.type === AILabel, [decorator]);
39
- const contextValue = useMemo(() => ({
40
- clickable,
41
- disabled,
42
- decorator,
43
- horizontal
44
- }), [
45
- clickable,
46
- disabled,
47
- decorator,
48
- horizontal
49
- ]);
50
- const handleKeyDown = useCallback((event) => {
51
- if (clickable && !disabled && (event.key === "Enter" || event.key === " ")) {
52
- event.preventDefault();
53
- onClick?.(event);
54
- }
55
- onKeyDown?.(event);
56
- }, [
57
- clickable,
58
- disabled,
59
- onClick,
60
- onKeyDown
61
- ]);
62
- const handleClick = useCallback((event) => {
63
- if (!disabled) onClick?.(event);
64
- }, [disabled, onClick]);
65
- const cardClasses = (0, import_classnames.default)(blockClass, className, {
66
- [`${blockClass}--clickable`]: clickable && !disabled,
67
- [`${blockClass}--disabled`]: disabled,
68
- [`${blockClass}--${density}`]: density,
69
- [`${blockClass}--has-ai-label`]: hasAILabel,
70
- [`${blockClass}--horizontal`]: horizontal
71
- });
72
- const cardProps = {
73
- ...rest,
74
- ref,
75
- className: cardClasses,
76
- ...clickable && {
77
- role: "button",
78
- tabIndex: disabled ? -1 : 0,
79
- onClick: handleClick,
80
- onKeyDown: handleKeyDown,
81
- "aria-disabled": disabled
82
- }
83
- };
84
- const { mediaChildren, contentChildren, mediaIsFirst } = useMemo(() => {
85
- if (!horizontal) return {
86
- mediaChildren: [],
87
- contentChildren: [],
88
- mediaIsFirst: false
89
- };
90
- const childArray = React.Children.toArray(children);
91
- const isMedia = (child) => React.isValidElement(child) && child.type === CardMedia;
92
- return {
93
- mediaChildren: childArray.filter(isMedia),
94
- contentChildren: childArray.filter((c) => !isMedia(c)),
95
- mediaIsFirst: childArray.findIndex(isMedia) < childArray.findIndex((c) => !isMedia(c))
96
- };
97
- }, [children, horizontal]);
98
- let renderedChildren = children;
99
- if (horizontal) {
100
- const contentWrapper = /* @__PURE__ */ React.createElement("div", { className: `${blockClass}__content` }, contentChildren);
101
- renderedChildren = mediaIsFirst ? /* @__PURE__ */ React.createElement(React.Fragment, null, mediaChildren, contentWrapper) : /* @__PURE__ */ React.createElement(React.Fragment, null, contentWrapper, mediaChildren);
102
- }
103
- return /* @__PURE__ */ React.createElement(CardContext.Provider, { value: contextValue }, /* @__PURE__ */ React.createElement("div", cardProps, renderedChildren));
104
- });
105
- CardComponent.propTypes = {
106
- /**
107
- * Card content
108
- */
109
- children: PropTypes.node,
110
- /**
111
- * Additional CSS class names
112
- */
113
- className: PropTypes.string,
114
- /**
115
- * Makes the entire card clickable
116
- */
117
- clickable: PropTypes.bool,
118
- /**
119
- * Optional decorator component (typically AILabel from Carbon)
120
- */
121
- decorator: PropTypes.node,
122
- /**
123
- * Density variant: productive uses heading-compact-02, expressive uses heading-03
124
- */
125
- density: PropTypes.oneOf(["productive", "expressive"]),
126
- /**
127
- * Disables the card and all interactive elements
128
- */
129
- disabled: PropTypes.bool,
130
- /**
131
- * When true, renders media on the left and content (header/body/footer) on the right
132
- */
133
- horizontal: PropTypes.bool,
134
- /**
135
- * Click handler for clickable cards
136
- */
137
- onClick: PropTypes.func,
138
- /**
139
- * Keyboard event handler for clickable cards
140
- */
141
- onKeyDown: PropTypes.func
142
- };
143
- CardComponent = pkg.checkComponentEnabled(CardComponent, componentName);
144
- CardComponent.displayName = componentName;
145
- /**
146
- * -------
147
- * Exports
148
- * -------
149
- */
150
- const Header = CardHeader;
151
- Header.displayName = "Card.Header";
152
- const Body = CardBody;
153
- Body.displayName = "Card.Body";
154
- const Footer = CardFooter;
155
- Footer.displayName = "Card.Footer";
156
- const HeaderMedia = CardHeaderMedia;
157
- HeaderMedia.displayName = "Card.HeaderMedia";
158
- const Media = CardMedia;
159
- Media.displayName = "Card.Media";
160
- const Title = CardTitle;
161
- Title.displayName = "Card.Title";
162
- const TitleMedia = CardTitleMedia;
163
- TitleMedia.displayName = "Card.TitleMedia";
164
- const Actions = CardActions;
165
- Actions.displayName = "Card.Actions";
166
- const Action = CardAction;
167
- Action.displayName = "Card.Action";
168
- const Card = Object.assign(CardComponent, {
169
- Header,
170
- Body,
171
- Footer,
172
- HeaderMedia,
173
- Media,
174
- Title,
175
- TitleMedia,
176
- Actions,
177
- Action
178
- });
179
- //#endregion
180
- export { Card };
@@ -1,57 +0,0 @@
1
- /**
2
- * Copyright IBM Corp. 2020, 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
- import { __toESM } from "../../../_virtual/_rolldown/runtime.js";
9
- import { require_classnames } from "../../../node_modules/classnames/index.js";
10
- import { pkg } from "../../../settings.js";
11
- import { getDevtoolsProps } from "../../../global/js/utils/devtools.js";
12
- import React, { forwardRef } from "react";
13
- import PropTypes from "prop-types";
14
- //#region src/components/Card/next/CardAction.tsx
15
- /**
16
- * Copyright IBM Corp. 2026
17
- *
18
- * This source code is licensed under the Apache-2.0 license found in the
19
- * LICENSE file in the root directory of this source tree.
20
- */
21
- var import_classnames = /* @__PURE__ */ __toESM(require_classnames());
22
- const blockClass = `${pkg.prefix}--card-next`;
23
- const componentName = "CardAction";
24
- /**
25
- * CardAction is a wrapper for interactive elements in the card footer.
26
- * Its presence signals action-set layout to the footer (no padding, auto
27
- * border, stretch behavior).
28
- *
29
- * Note: do not use CardAction inside a clickable card — clickable cards
30
- * should not contain interactive elements (see usage guidelines).
31
- */
32
- let CardAction = forwardRef(({ children, className, ...rest }, ref) => {
33
- return /* @__PURE__ */ React.createElement("div", {
34
- ...rest,
35
- ref,
36
- className: (0, import_classnames.default)(`${blockClass}__action`, className),
37
- ...getDevtoolsProps(componentName)
38
- }, children);
39
- });
40
- CardAction.propTypes = {
41
- /**
42
- * Provide the contents of the CardAction.
43
- */
44
- children: PropTypes.node,
45
- /**
46
- * Provide an optional class to be applied to the containing node.
47
- */
48
- className: PropTypes.string,
49
- /**
50
- * Label shown in the overflow menu when this action is hidden.
51
- */
52
- label: PropTypes.string
53
- };
54
- CardAction = pkg.checkComponentEnabled(CardAction, componentName);
55
- CardAction.displayName = componentName;
56
- //#endregion
57
- export { CardAction };
@@ -1,112 +0,0 @@
1
- /**
2
- * Copyright IBM Corp. 2020, 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
- import { __toESM } from "../../../_virtual/_rolldown/runtime.js";
9
- import { require_classnames } from "../../../node_modules/classnames/index.js";
10
- import { pkg } from "../../../settings.js";
11
- import { getDevtoolsProps } from "../../../global/js/utils/devtools.js";
12
- import React, { Children, forwardRef, useEffect, useMemo, useRef, useState } from "react";
13
- import PropTypes from "prop-types";
14
- import { FeatureFlags, OverflowMenu, OverflowMenuItem } from "@carbon/react";
15
- import { createOverflowHandler } from "@carbon/utilities";
16
- //#region src/components/Card/next/CardActions.tsx
17
- /**
18
- * Copyright IBM Corp. 2026
19
- *
20
- * This source code is licensed under the Apache-2.0 license found in the
21
- * LICENSE file in the root directory of this source tree.
22
- */
23
- var import_classnames = /* @__PURE__ */ __toESM(require_classnames());
24
- const blockClass = `${pkg.prefix}--card-next`;
25
- const componentName = "CardActions";
26
- /**
27
- * CardActions is a container for action buttons in the card header.
28
- * Positioned in the top-right corner with 8px gap between actions.
29
- * When actions exceed 50% of available header space, overflow menu is shown.
30
- */
31
- let CardActions = forwardRef(({ children, className, overflowMenuLabel = "More actions", ...rest }, ref) => {
32
- const containerRef = useRef(null);
33
- const [hiddenItems, setHiddenItems] = useState([]);
34
- const classes = (0, import_classnames.default)(`${blockClass}__actions`, className);
35
- const actionItems = useMemo(() => {
36
- const items = [];
37
- Children.forEach(children, (child, index) => {
38
- if (React.isValidElement(child)) {
39
- const actionProps = child.props;
40
- const button = actionProps.children;
41
- const buttonProps = React.isValidElement(button) ? button.props : null;
42
- const label = actionProps.label ?? buttonProps?.label ?? buttonProps?.iconDescription ?? (typeof buttonProps?.children === "string" ? buttonProps.children : `Action ${index + 1}`);
43
- const id = `${label}-${index}`;
44
- items.push({
45
- id,
46
- element: child,
47
- label
48
- });
49
- }
50
- });
51
- return items;
52
- }, [children]);
53
- useEffect(() => {
54
- if (!containerRef.current || actionItems.length === 0) return;
55
- const handler = createOverflowHandler({
56
- container: containerRef.current,
57
- onChange: (_visible, hidden) => {
58
- const hiddenIds = hidden.map((el) => el.dataset.id);
59
- setHiddenItems(actionItems.filter((item) => hiddenIds.includes(item.id)));
60
- }
61
- });
62
- return () => handler.disconnect();
63
- }, [children]);
64
- return /* @__PURE__ */ React.createElement("div", {
65
- ref: (node) => {
66
- containerRef.current = node;
67
- if (typeof ref === "function") ref(node);
68
- else if (ref) ref.current = node;
69
- },
70
- className: classes,
71
- ...rest,
72
- ...getDevtoolsProps(componentName)
73
- }, actionItems.map((item) => /* @__PURE__ */ React.createElement("div", {
74
- key: item.id,
75
- "data-id": item.id
76
- }, item.element)), /* @__PURE__ */ React.createElement("div", {
77
- "data-offset": true,
78
- "data-hidden": true,
79
- "data-floating-menu-container": true
80
- }, /* @__PURE__ */ React.createElement(FeatureFlags, { enableV12Overflowmenu: true }, /* @__PURE__ */ React.createElement(OverflowMenu, {
81
- size: "sm",
82
- "aria-label": overflowMenuLabel
83
- }, hiddenItems.map((item) => /* @__PURE__ */ React.createElement(OverflowMenuItem, {
84
- key: item.id,
85
- itemText: item.label || "Action",
86
- onClick: () => {
87
- const button = item.element.props.children;
88
- if (button && React.isValidElement(button)) {
89
- const buttonProps = button.props;
90
- if (buttonProps.onClick) buttonProps.onClick();
91
- }
92
- }
93
- }))))));
94
- });
95
- CardActions.propTypes = {
96
- /**
97
- * Provide the contents of the CardActions.
98
- */
99
- children: PropTypes.node,
100
- /**
101
- * Provide an optional class to be applied to the containing node.
102
- */
103
- className: PropTypes.string,
104
- /**
105
- * Aria label for the overflow menu
106
- */
107
- overflowMenuLabel: PropTypes.string
108
- };
109
- CardActions = pkg.checkComponentEnabled(CardActions, componentName);
110
- CardActions.displayName = componentName;
111
- //#endregion
112
- export { CardActions };