@carbon/react 1.114.0 → 1.115.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 (68) hide show
  1. package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +2640 -1163
  2. package/es/components/BigNumber/BigNumber.d.ts +82 -0
  3. package/es/components/BigNumber/BigNumberSkeleton.d.ts +16 -0
  4. package/es/components/BigNumber/constants.d.ts +19 -0
  5. package/es/components/BigNumber/index.d.ts +9 -0
  6. package/es/components/Card/Card.d.ts +1 -1
  7. package/es/components/Card/Card.js +19 -7
  8. package/es/components/Card/Card.types.d.ts +38 -7
  9. package/es/components/Card/CardActions.js +1 -1
  10. package/es/components/Card/CardBody.d.ts +2 -1
  11. package/es/components/Card/CardBody.js +3 -2
  12. package/es/components/Card/CardFooter.d.ts +5 -1
  13. package/es/components/Card/CardFooter.js +13 -2
  14. package/es/components/Card/CardTitle.d.ts +1 -1
  15. package/es/components/DatePicker/DatePicker.d.ts +1 -1
  16. package/es/components/DatePicker/plugins/rangePlugin.d.ts +1 -1
  17. package/es/components/FileUploader/FileUploaderDropContainer.js +11 -5
  18. package/es/components/FormLabel/FormLabel.d.ts +2 -2
  19. package/es/components/FormLabel/FormLabel.js +1 -1
  20. package/es/components/Tabs/Tabs.js +13 -2
  21. package/es/components/Tile/Tile.js +1 -1
  22. package/es/index.d.ts +2 -1
  23. package/es/index.js +1 -1
  24. package/es/internal/DisplayBox.d.ts +14 -0
  25. package/es/internal/getSupportedLocale.d.ts +12 -0
  26. package/lib/components/BigNumber/BigNumber.d.ts +82 -0
  27. package/lib/components/BigNumber/BigNumberSkeleton.d.ts +16 -0
  28. package/lib/components/BigNumber/constants.d.ts +19 -0
  29. package/lib/components/BigNumber/index.d.ts +9 -0
  30. package/lib/components/Card/Card.d.ts +1 -1
  31. package/lib/components/Card/Card.js +19 -7
  32. package/lib/components/Card/Card.types.d.ts +38 -7
  33. package/lib/components/Card/CardActions.js +1 -1
  34. package/lib/components/Card/CardBody.d.ts +2 -1
  35. package/lib/components/Card/CardBody.js +3 -2
  36. package/lib/components/Card/CardFooter.d.ts +5 -1
  37. package/lib/components/Card/CardFooter.js +13 -2
  38. package/lib/components/Card/CardTitle.d.ts +1 -1
  39. package/lib/components/DatePicker/DatePicker.d.ts +1 -1
  40. package/lib/components/DatePicker/plugins/rangePlugin.d.ts +1 -1
  41. package/lib/components/FileUploader/FileUploaderDropContainer.js +11 -5
  42. package/lib/components/FormLabel/FormLabel.d.ts +2 -2
  43. package/lib/components/FormLabel/FormLabel.js +1 -1
  44. package/lib/components/Tabs/Tabs.js +13 -2
  45. package/lib/components/Tile/Tile.js +1 -1
  46. package/lib/index.d.ts +2 -1
  47. package/lib/index.js +1 -1
  48. package/lib/internal/DisplayBox.d.ts +14 -0
  49. package/lib/internal/getSupportedLocale.d.ts +12 -0
  50. package/package.json +20 -20
  51. package/scss/_border-radius.scss +9 -0
  52. package/scss/components/OptionsTile/_index.scss +5 -0
  53. package/scss/components/OptionsTile/_options-tile.scss +5 -0
  54. package/scss/components/big-number/_big-number.scss +9 -0
  55. package/scss/components/big-number/_index.scss +9 -0
  56. package/scss/components/coachmark/_coachmark.scss +5 -0
  57. package/scss/components/coachmark/_index.scss +5 -0
  58. package/scss/components/edit-in-place/_edit-in-place.scss +5 -0
  59. package/scss/components/edit-in-place/_index.scss +5 -0
  60. package/scss/components/full-page-error/_full-page-error.scss +5 -0
  61. package/scss/components/full-page-error/_index.scss +5 -0
  62. package/scss/components/interstitial-screen/_index.scss +6 -0
  63. package/scss/components/interstitial-screen/_interstitial-screen.scss +12 -0
  64. package/scss/components/scroll-gradient/_index.scss +9 -0
  65. package/scss/components/scroll-gradient/_scroll-gradient.scss +9 -0
  66. package/scss/components/user-avatar/_index.scss +9 -0
  67. package/scss/components/user-avatar/_user-avatar.scss +9 -0
  68. package/telemetry.yml +91 -3
@@ -0,0 +1,16 @@
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 from 'react';
8
+ import { BigNumberProps } from './BigNumber';
9
+ /**
10
+ * BigNumberSkeleton is used to display a skeleton version while
11
+ * content is loading (handled by the BigNumber prop `loading`).
12
+ *
13
+ * Note: This component is only used within BigNumber.
14
+ */
15
+ export type BigNumberSkeletonProps = Pick<BigNumberProps, 'className' | 'size'> & React.HTMLAttributes<HTMLDivElement>;
16
+ export declare const BigNumberSkeleton: React.ForwardRefExoticComponent<Pick<BigNumberProps, "className" | "size"> & React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,19 @@
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
+ export declare enum BigNumberSize {
8
+ Default = "default",
9
+ Large = "lg",
10
+ XLarge = "xl"
11
+ }
12
+ export type BigNumberSizeValues = `${BigNumberSize}`;
13
+ export declare enum Characters {
14
+ Dash = "\u2013",
15
+ Slash = "/"
16
+ }
17
+ export declare const DefaultLocale = "en-US";
18
+ export declare const formatValue: (locale: Intl.LocalesArgument, value: number | null | undefined, fractionDigits: number, truncate: boolean) => string | null | undefined;
19
+ export declare const getIconSize: (size: BigNumberSizeValues) => number;
@@ -0,0 +1,9 @@
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
+ export { BigNumber } from './BigNumber';
8
+ export type { BigNumberProps } from './BigNumber';
9
+ export { BigNumberSkeleton } from './BigNumberSkeleton';
@@ -17,7 +17,7 @@ import { CardActions } from './CardActions';
17
17
  import { CardAction } from './CardAction';
18
18
  export declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>> & {
19
19
  Header: React.ForwardRefExoticComponent<import("./Card.types").CardBaseProps & React.RefAttributes<HTMLDivElement>>;
20
- Body: React.ForwardRefExoticComponent<import("./Card.types").CardBaseProps & React.RefAttributes<HTMLDivElement>>;
20
+ Body: React.ForwardRefExoticComponent<import("./Card.types").CardBodyProps & React.RefAttributes<HTMLDivElement>>;
21
21
  Footer: React.ForwardRefExoticComponent<import("./Card.types").CardBaseProps & React.RefAttributes<HTMLDivElement>>;
22
22
  HeaderMedia: {
23
23
  ({ children, className, ...rest }: import("./CardHeaderMedia").CardHeaderMediaProps): import("react/jsx-runtime").JSX.Element;
@@ -23,6 +23,7 @@ react = require_runtime.__toESM(react);
23
23
  let classnames = require("classnames");
24
24
  classnames = require_runtime.__toESM(classnames);
25
25
  let react_jsx_runtime = require("react/jsx-runtime");
26
+ let _carbon_icons_react = require("@carbon/icons-react");
26
27
  //#region src/components/Card/Card.tsx
27
28
  /**
28
29
  * Copyright IBM Corp. 2026
@@ -34,19 +35,23 @@ const componentName = "Card";
34
35
  /**
35
36
  * Card component - Root container for composable card
36
37
  */
37
- const CardComponent = (0, react.forwardRef)(({ clickable = false, onClick, onKeyDown, disabled = false, density = "productive", decorator, horizontal = false, className, children, ...rest }, ref) => {
38
+ const CardComponent = (0, react.forwardRef)(({ as, clickable = false, onClick, onKeyDown, disabled = false, density = "productive", decorator, horizontal = false, renderFooterIcon: FooterIcon = _carbon_icons_react.ArrowRight, className, children, ...rest }, ref) => {
38
39
  const blockClass = `${require_usePrefix.usePrefix()}--card`;
39
40
  const hasAILabel = (0, react.useMemo)(() => (0, react.isValidElement)(decorator) && decorator.type === require_index.AILabel, [decorator]);
41
+ if (FooterIcon !== _carbon_icons_react.ArrowRight && !clickable) console.error("[Card] `renderFooterIcon` only has effect when `clickable` is true.");
42
+ if (clickable && !rest["aria-label"] && !rest["aria-labelledby"]) console.error("[Card] A clickable card must have an accessible name. Pass `aria-label` or `aria-labelledby` to the Card.");
40
43
  const contextValue = (0, react.useMemo)(() => ({
41
44
  clickable,
42
45
  disabled,
43
46
  decorator,
44
- horizontal
47
+ horizontal,
48
+ onClick
45
49
  }), [
46
50
  clickable,
47
51
  disabled,
48
52
  decorator,
49
- horizontal
53
+ horizontal,
54
+ onClick
50
55
  ]);
51
56
  const handleKeyDown = (0, react.useCallback)((event) => {
52
57
  if (clickable && !disabled && (event.key === "Enter" || event.key === " ")) {
@@ -70,17 +75,20 @@ const CardComponent = (0, react.forwardRef)(({ clickable = false, onClick, onKey
70
75
  [`${blockClass}--has-ai-label`]: hasAILabel,
71
76
  [`${blockClass}--horizontal`]: horizontal
72
77
  });
78
+ const BaseComponent = as ?? "div";
79
+ const isAnchor = BaseComponent === "a";
73
80
  const cardProps = {
74
81
  ...rest,
75
82
  ref,
76
83
  className: cardClasses,
77
- ...clickable && {
84
+ ...disabled && { "aria-disabled": true },
85
+ ...clickable && { ...isAnchor ? { onClick: handleClick } : {
78
86
  role: "button",
79
87
  tabIndex: disabled ? -1 : 0,
80
88
  onClick: handleClick,
81
89
  onKeyDown: handleKeyDown,
82
90
  "aria-disabled": disabled
83
- }
91
+ } }
84
92
  };
85
93
  const { mediaChildren, contentChildren, mediaIsFirst } = (0, react.useMemo)(() => {
86
94
  if (!horizontal) return {
@@ -106,9 +114,13 @@ const CardComponent = (0, react.forwardRef)(({ clickable = false, onClick, onKey
106
114
  }
107
115
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_CardContext.CardContext.Provider, {
108
116
  value: contextValue,
109
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
117
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(BaseComponent, {
110
118
  ...cardProps,
111
- children: renderedChildren
119
+ children: [renderedChildren, clickable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
120
+ className: `${blockClass}__clickable-footer`,
121
+ "aria-hidden": "true",
122
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FooterIcon, { "aria-hidden": "true" })
123
+ })]
112
124
  })
113
125
  });
114
126
  });
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- import { ReactNode } from 'react';
7
+ import React, { ReactNode } from 'react';
8
8
  /**
9
9
  * Base props shared across card components
10
10
  */
@@ -23,17 +23,29 @@ export interface CardBaseProps {
23
23
  */
24
24
  export interface CardProps extends CardBaseProps {
25
25
  /**
26
- * Makes the entire card clickable
26
+ * The underlying element or component to render the card as.
27
+ * Defaults to `'div'`. Use `'a'` or a router Link component for
28
+ * navigation cards when combined with `clickable`.
29
+ * @example <Card as="a" clickable href="/dashboard">...</Card>
30
+ * @example <Card as={RouterLink} clickable to="/dashboard">...</Card>
31
+ */
32
+ as?: React.ElementType;
33
+ /**
34
+ * Makes the entire card clickable. When true, the card gains interactive
35
+ * styles (hover, focus, active) and renders a built-in footer affordance
36
+ * with an arrow icon. Use `onClick` for action cards or `as="a"` with
37
+ * `href` for navigation cards.
27
38
  */
28
39
  clickable?: boolean;
29
40
  /**
30
- * Click handler for clickable cards
41
+ * Click handler for clickable cards. Only has effect when `clickable`
42
+ * is true.
31
43
  */
32
- onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;
44
+ onClick?: (event: React.MouseEvent) => void;
33
45
  /**
34
- * Keyboard event handler for clickable cards
46
+ * Keyboard event handler. Only has effect when `clickable` is true.
35
47
  */
36
- onKeyDown?: (event: React.KeyboardEvent<HTMLDivElement>) => void;
48
+ onKeyDown?: (event: React.KeyboardEvent) => void;
37
49
  /**
38
50
  * Disables the card and all interactive elements
39
51
  */
@@ -52,6 +64,13 @@ export interface CardProps extends CardBaseProps {
52
64
  * header/body/footer stacked vertically on the right.
53
65
  */
54
66
  horizontal?: boolean;
67
+ /**
68
+ * Icon rendered in the built-in footer affordance of a clickable card.
69
+ * Only has effect when `clickable` is true. Defaults to ArrowRight.
70
+ * Pass any icon component from `@carbon/icons-react`.
71
+ * @example <Card clickable renderFooterIcon={Launch}>...</Card>
72
+ */
73
+ renderFooterIcon?: React.ElementType;
55
74
  }
56
75
  /**
57
76
  * Props for CardHeader component
@@ -60,7 +79,14 @@ export type CardHeaderProps = CardBaseProps;
60
79
  /**
61
80
  * Props for CardBody component
62
81
  */
63
- export type CardBodyProps = CardBaseProps;
82
+ export interface CardBodyProps extends CardBaseProps {
83
+ /**
84
+ * When true, removes all padding so content fills the body edge-to-edge.
85
+ * Use when the body contains a component (e.g. a table, chart, or image)
86
+ * that manages its own internal spacing.
87
+ */
88
+ isFlush?: boolean;
89
+ }
64
90
  /**
65
91
  * Props for CardFooter component
66
92
  */
@@ -85,4 +111,9 @@ export interface CardContextValue {
85
111
  * Whether the card is in horizontal layout mode
86
112
  */
87
113
  horizontal?: boolean;
114
+ /**
115
+ * Click handler forwarded from the Card root, available to child components
116
+ * (e.g. the built-in clickable footer affordance).
117
+ */
118
+ onClick?: (event: React.MouseEvent) => void;
88
119
  }
@@ -76,7 +76,7 @@ const CardActions = ({ children, className, overflowMenuLabel = "More actions",
76
76
  style: { position: "relative" },
77
77
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_index.OverflowMenu, {
78
78
  size: "sm",
79
- "aria-label": overflowMenuLabel,
79
+ label: overflowMenuLabel,
80
80
  children: hiddenItems.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MenuItem.MenuItem, {
81
81
  label: item.label || "Action",
82
82
  onClick: () => {
@@ -5,7 +5,8 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import React from 'react';
8
+ import { CardBodyProps } from './Card.types';
8
9
  /**
9
10
  * CardBody component - Body section of the card for free-form content
10
11
  */
11
- export declare const CardBody: React.ForwardRefExoticComponent<import("./Card.types").CardBaseProps & React.RefAttributes<HTMLDivElement>>;
12
+ export declare const CardBody: React.ForwardRefExoticComponent<CardBodyProps & React.RefAttributes<HTMLDivElement>>;
@@ -23,8 +23,9 @@ const componentName = "CardBody";
23
23
  /**
24
24
  * CardBody component - Body section of the card for free-form content
25
25
  */
26
- const CardBody = (0, react.forwardRef)(({ className, children, ...rest }, ref) => {
27
- const bodyClasses = (0, classnames.default)(`${require_usePrefix.usePrefix()}--card__body`, className);
26
+ const CardBody = (0, react.forwardRef)(({ className, children, isFlush = false, ...rest }, ref) => {
27
+ const prefix = require_usePrefix.usePrefix();
28
+ const bodyClasses = (0, classnames.default)(`${prefix}--card__body`, className, { [`${prefix}--card__body--flush`]: isFlush });
28
29
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
29
30
  ...rest,
30
31
  ref,
@@ -6,6 +6,10 @@
6
6
  */
7
7
  import React from 'react';
8
8
  /**
9
- * CardFooter component - Footer section of the card
9
+ * CardFooter component - Footer section of the card.
10
+ *
11
+ * Not supported inside a `clickable` card. A clickable card renders its own
12
+ * built-in footer affordance automatically. Use the `renderFooterIcon` prop on
13
+ * `Card` to customize the icon.
10
14
  */
11
15
  export declare const CardFooter: React.ForwardRefExoticComponent<import("./Card.types").CardBaseProps & React.RefAttributes<HTMLDivElement>>;
@@ -7,6 +7,7 @@
7
7
 
8
8
  const require_runtime = require("../../_virtual/_rolldown/runtime.js");
9
9
  const require_usePrefix = require("../../internal/usePrefix.js");
10
+ const require_CardContext = require("./CardContext.js");
10
11
  let react = require("react");
11
12
  react = require_runtime.__toESM(react);
12
13
  let classnames = require("classnames");
@@ -21,10 +22,20 @@ let react_jsx_runtime = require("react/jsx-runtime");
21
22
  */
22
23
  const componentName = "CardFooter";
23
24
  /**
24
- * CardFooter component - Footer section of the card
25
+ * CardFooter component - Footer section of the card.
26
+ *
27
+ * Not supported inside a `clickable` card. A clickable card renders its own
28
+ * built-in footer affordance automatically. Use the `renderFooterIcon` prop on
29
+ * `Card` to customize the icon.
25
30
  */
26
31
  const CardFooter = (0, react.forwardRef)(({ className, children, ...rest }, ref) => {
27
- const footerClasses = (0, classnames.default)(`${require_usePrefix.usePrefix()}--card__footer`, className);
32
+ const prefix = require_usePrefix.usePrefix();
33
+ const { clickable } = require_CardContext.useCardContext();
34
+ if (clickable) {
35
+ console.error("[Card] `Card.Footer` cannot be used inside a `clickable` card. A clickable card renders its own footer affordance automatically. Use the `renderFooterIcon` prop on `Card` to customize the icon.");
36
+ return null;
37
+ }
38
+ const footerClasses = (0, classnames.default)(`${prefix}--card__footer`, className);
28
39
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
29
40
  ...rest,
30
41
  ref,
@@ -5,7 +5,7 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import React, { ReactNode } from 'react';
8
- export interface CardTitleProps {
8
+ export interface CardTitleProps extends React.HTMLAttributes<HTMLDivElement> {
9
9
  /**
10
10
  * Provide the contents of the CardTitle.
11
11
  */
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import React, { type ReactNode } from 'react';
8
8
  import flatpickr from 'flatpickr';
9
- import { DateLimit, DateOption } from 'flatpickr/dist/types/options';
9
+ import type { DateLimit, DateOption } from 'flatpickr/dist/types/options';
10
10
  import { type SupportedLocale } from './DatePickerLocales';
11
11
  export type DatePickerTypes = 'simple' | 'single' | 'range';
12
12
  export interface DatePickerProps {
@@ -5,7 +5,7 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import { type Config } from 'flatpickr/dist/plugins/rangePlugin';
8
- import { Instance } from 'flatpickr/dist/types/instance';
8
+ import type { Instance } from 'flatpickr/dist/types/instance';
9
9
  /**
10
10
  * @param config Plugin configuration.
11
11
  * @returns An extension of Flatpickr `rangePlugin` that does the following:
@@ -57,13 +57,13 @@ function FileUploaderDropContainer({ accept = [], className, id, disabled, label
57
57
  return acc.concat([curr]);
58
58
  }, []);
59
59
  }
60
- const handleFiles = (event, files) => {
61
- if (!files.length) return onAddFiles(event, { addedFiles: [] });
62
- return onAddFiles(event, { addedFiles: validateFiles(multiple ? files : [files[0]]) });
60
+ const getAddedFiles = (files) => {
61
+ if (!files.length) return [];
62
+ return validateFiles(multiple ? files : [files[0]]);
63
63
  };
64
64
  const handleChange = (event) => {
65
65
  const files = [...event.target.files ?? []];
66
- return handleFiles(event, files);
66
+ return onAddFiles(event, { addedFiles: getAddedFiles(files) });
67
67
  };
68
68
  const handleDrop = (event) => {
69
69
  const items = [...event.dataTransfer.items ?? []];
@@ -74,7 +74,13 @@ function FileUploaderDropContainer({ accept = [], className, id, disabled, label
74
74
  if (file) acc.push(file);
75
75
  return acc;
76
76
  }, []) : [...event.dataTransfer.files];
77
- return handleFiles(event, files);
77
+ const addedFiles = getAddedFiles(files);
78
+ if (inputRef.current) try {
79
+ const dataTransfer = new DataTransfer();
80
+ addedFiles.forEach((file) => dataTransfer.items.add(file));
81
+ inputRef.current.files = dataTransfer.files;
82
+ } catch {}
83
+ return onAddFiles(event, { addedFiles });
78
84
  };
79
85
  const handleClick = () => {
80
86
  if (!disabled) inputRef.current?.click();
@@ -16,7 +16,7 @@ export interface FormLabelProps extends Omit<React.LabelHTMLAttributes<HTMLLabel
16
16
  */
17
17
  className?: string;
18
18
  /**
19
- * Provide a unique id for the given <FormLabel>
19
+ * Provide a unique id for the given `FormLabel`
20
20
  */
21
21
  id?: string;
22
22
  }
@@ -32,7 +32,7 @@ declare namespace FormLabel {
32
32
  */
33
33
  className: PropTypes.Requireable<string>;
34
34
  /**
35
- * Provide a unique id for the given <FormLabel>
35
+ * Provide a unique id for the given `FormLabel`
36
36
  */
37
37
  id: PropTypes.Requireable<string>;
38
38
  };
@@ -42,7 +42,7 @@ FormLabel.propTypes = {
42
42
  */
43
43
  className: prop_types.default.string,
44
44
  /**
45
- * Provide a unique id for the given <FormLabel>
45
+ * Provide a unique id for the given `FormLabel`
46
46
  */
47
47
  id: prop_types.default.string
48
48
  };
@@ -197,6 +197,7 @@ function TabList({ activation = "automatic", "aria-label": label, children, clas
197
197
  const ref = (0, react.useRef)(null);
198
198
  const previousButton = (0, react.useRef)(null);
199
199
  const nextButton = (0, react.useRef)(null);
200
+ const resizeAnimationFrame = (0, react.useRef)(null);
200
201
  const [isScrollable, setIsScrollable] = (0, react.useState)(false);
201
202
  const [scrollLeft, setScrollLeft] = (0, react.useState)(0);
202
203
  const hasSecondaryLabelTabs = contained && react.Children.toArray(children).some((child) => require_utils.isComponentElement(child, Tab) && typeof child.props.secondaryLabel !== "undefined");
@@ -302,9 +303,19 @@ function TabList({ activation = "automatic", "aria-label": label, children, clas
302
303
  const element = containerRef.current;
303
304
  if (!element) return;
304
305
  updateOverflowState();
305
- const resizeObserver = new ResizeObserver(updateOverflowState);
306
+ const resizeObserver = new ResizeObserver(() => {
307
+ if (resizeAnimationFrame.current !== null) cancelAnimationFrame(resizeAnimationFrame.current);
308
+ resizeAnimationFrame.current = requestAnimationFrame(() => {
309
+ resizeAnimationFrame.current = null;
310
+ updateOverflowState();
311
+ });
312
+ });
306
313
  resizeObserver.observe(element);
307
314
  return () => {
315
+ if (resizeAnimationFrame.current !== null) {
316
+ cancelAnimationFrame(resizeAnimationFrame.current);
317
+ resizeAnimationFrame.current = null;
318
+ }
308
319
  resizeObserver.disconnect();
309
320
  };
310
321
  }, [updateOverflowState]);
@@ -865,7 +876,7 @@ const IconTab = react.default.forwardRef(({ badgeIndicator, children, className:
865
876
  className: `${prefix}--icon-tooltip`,
866
877
  enterDelayMs,
867
878
  label,
868
- leaveDelayMs,
879
+ leaveDelayMs: leaveDelayMs ?? 0,
869
880
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Tab, {
870
881
  className: classNames,
871
882
  ref,
@@ -201,7 +201,7 @@ ClickableTile.propTypes = {
201
201
  */
202
202
  renderIcon: prop_types.default.oneOfType([prop_types.default.func, prop_types.default.object])
203
203
  };
204
- const SelectableTile = react.default.forwardRef(({ children, className, decorator, disabled, id, light, onClick = () => {}, onChange = () => {}, onKeyDown = () => {}, selected = false, tabIndex = 0, title = "title", slug, hasRoundedCorners, ...rest }, ref) => {
204
+ const SelectableTile = react.default.forwardRef(({ children, className, decorator, disabled, id, light, onClick = () => {}, onChange = () => {}, onKeyDown = () => {}, selected = false, tabIndex = 0, title, slug, hasRoundedCorners, ...rest }, ref) => {
205
205
  const prefix = require_usePrefix.usePrefix();
206
206
  const clickHandler = onClick;
207
207
  const keyDownHandler = onKeyDown;
package/lib/index.d.ts CHANGED
@@ -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,6 +7,7 @@
7
7
  import './feature-flags';
8
8
  import './internal/warnAboutDeprecatedReactVersion';
9
9
  export * from './components/Accordion';
10
+ export type { BigNumberProps as preview__BigNumberProps } from './components/BigNumber';
10
11
  export * from './components/AccordionItem';
11
12
  export * from './components/AspectRatio';
12
13
  export * from './components/Breadcrumb';
package/lib/index.js CHANGED
@@ -248,7 +248,7 @@ const require_AISkeletonText = require("./components/AISkeleton/AISkeletonText.j
248
248
  const require_index$21 = require("./components/Theme/index.js");
249
249
  //#region src/index.ts
250
250
  /**
251
- * Copyright IBM Corp. 2016, 2025
251
+ * Copyright IBM Corp. 2016, 2026
252
252
  *
253
253
  * This source code is licensed under the Apache-2.0 license found in the
254
254
  * LICENSE file in the root directory of this source tree.
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Copyright IBM Corp. 2022, 2022
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { type ReactNode } from 'react';
8
+ interface DisplayBoxProps {
9
+ children?: ReactNode;
10
+ className?: string;
11
+ msg?: ReactNode;
12
+ }
13
+ export declare const DisplayBox: ({ children, className, msg }: DisplayBoxProps) => import("react/jsx-runtime").JSX.Element;
14
+ export {};
@@ -0,0 +1,12 @@
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
+ /**
8
+ * Returns the provided locale if it is supported by the runtime's
9
+ * `Intl.NumberFormat`, otherwise falls back to the provided fallback
10
+ * (or `'en-US'` when no fallback is given).
11
+ */
12
+ export declare function getSupportedLocale(locale: string | undefined, fallback?: string): string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@carbon/react",
3
3
  "description": "React components for the Carbon Design System",
4
- "version": "1.114.0",
4
+ "version": "1.115.0-rc.0",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/index.d.ts",
@@ -54,13 +54,13 @@
54
54
  "sass": "^1.33.0"
55
55
  },
56
56
  "dependencies": {
57
- "@babel/runtime": "^7.27.3",
58
- "@carbon/feature-flags": "^1.7.0",
59
- "@carbon/icons-react": "^11.86.0",
60
- "@carbon/layout": "^11.57.0",
61
- "@carbon/motion": "^11.50.0",
62
- "@carbon/styles": "^1.113.0",
63
- "@carbon/utilities": "^0.24.0",
57
+ "@babel/runtime": "^8.0.0",
58
+ "@carbon/feature-flags": "^1.8.0-rc.0",
59
+ "@carbon/icons-react": "^11.87.0-rc.0",
60
+ "@carbon/layout": "^11.58.0-rc.0",
61
+ "@carbon/motion": "^11.51.0-rc.0",
62
+ "@carbon/styles": "^1.114.0-rc.0",
63
+ "@carbon/utilities": "^0.25.0-rc.0",
64
64
  "@floating-ui/react": "^0.27.4",
65
65
  "@ibm/telemetry-js": "^1.5.0",
66
66
  "classnames": "2.5.1",
@@ -75,17 +75,17 @@
75
75
  "tabbable": "^6.2.0"
76
76
  },
77
77
  "devDependencies": {
78
- "@babel/core": "^7.27.3",
79
- "@babel/plugin-proposal-export-default-from": "^7.27.1",
80
- "@babel/plugin-transform-class-properties": "^7.27.1",
81
- "@babel/plugin-transform-export-namespace-from": "^7.27.1",
82
- "@babel/plugin-transform-react-constant-elements": "^7.27.1",
83
- "@babel/preset-env": "^7.27.2",
84
- "@babel/preset-react": "^7.27.1",
85
- "@babel/preset-typescript": "^7.27.1",
78
+ "@babel/core": "^8.0.0",
79
+ "@babel/plugin-proposal-export-default-from": "^8.0.0",
80
+ "@babel/plugin-transform-class-properties": "^8.0.0",
81
+ "@babel/plugin-transform-export-namespace-from": "^8.0.0",
82
+ "@babel/plugin-transform-react-constant-elements": "^8.0.0",
83
+ "@babel/preset-env": "^8.0.0",
84
+ "@babel/preset-react": "^8.0.0",
85
+ "@babel/preset-typescript": "^8.0.0",
86
86
  "@carbon/test-utils": "^10.41.0",
87
- "@carbon/themes": "^11.79.0",
88
- "@figma/code-connect": "^1.5.2",
87
+ "@carbon/themes": "^11.80.0-rc.0",
88
+ "@figma/code-connect": "^2.0.0",
89
89
  "@rolldown/plugin-babel": "^0.2.0",
90
90
  "@stackblitz/sdk": "^1.11.0",
91
91
  "@storybook/addon-a11y": "^10.3.5",
@@ -97,7 +97,7 @@
97
97
  "@types/use-sync-external-store": "^1",
98
98
  "@vitejs/plugin-react": "^6.0.0",
99
99
  "babel-plugin-dev-expression": "^0.2.3",
100
- "babel-preset-carbon": "^0.8.0",
100
+ "babel-preset-carbon": "^0.9.0-rc.0",
101
101
  "browserify-zlib": "^0.2.0",
102
102
  "browserslist-config-carbon": "^11.2.0",
103
103
  "enquirer": "^2.3.6",
@@ -132,5 +132,5 @@
132
132
  "**/*.scss",
133
133
  "**/*.css"
134
134
  ],
135
- "gitHead": "188d23202ec1092322dee92cf0df9d9958224ae4"
135
+ "gitHead": "e848b98936051ac0026fb83551c91bfe603c589c"
136
136
  }
@@ -0,0 +1,9 @@
1
+ // Code generated by @carbon/react. DO NOT EDIT.
2
+ //
3
+ // Copyright IBM Corp. 2018, 2023
4
+ //
5
+ // This source code is licensed under the Apache-2.0 license found in the
6
+ // LICENSE file in the root directory of this source tree.
7
+ //
8
+
9
+ @forward '@carbon/styles/scss/border-radius';
@@ -0,0 +1,5 @@
1
+ // Copyright IBM Corp. 2025, 2026
2
+ // This source code is licensed under the Apache-2.0 license found in the
3
+ // LICENSE file in the root directory of this source tree.
4
+
5
+ @forward '@carbon/styles/scss/components/OptionsTile';
@@ -0,0 +1,5 @@
1
+ // Copyright IBM Corp. 2025, 2026
2
+ // This source code is licensed under the Apache-2.0 license found in the
3
+ // LICENSE file in the root directory of this source tree.
4
+
5
+ @forward '@carbon/styles/scss/components/OptionsTile/options-tile';
@@ -0,0 +1,9 @@
1
+ // Code generated by @carbon/react. DO NOT EDIT.
2
+ //
3
+ // Copyright IBM Corp. 2026
4
+ //
5
+ // This source code is licensed under the Apache-2.0 license found in the
6
+ // LICENSE file in the root directory of this source tree.
7
+ //
8
+
9
+ @forward '@carbon/styles/scss/components/big-number/big-number';
@@ -0,0 +1,9 @@
1
+ // Code generated by @carbon/react. DO NOT EDIT.
2
+ //
3
+ // Copyright IBM Corp. 2026
4
+ //
5
+ // This source code is licensed under the Apache-2.0 license found in the
6
+ // LICENSE file in the root directory of this source tree.
7
+ //
8
+
9
+ @forward '@carbon/styles/scss/components/big-number';
@@ -0,0 +1,5 @@
1
+ // Copyright IBM Corp. 2025
2
+ // This source code is licensed under the Apache-2.0 license found in the
3
+ // LICENSE file in the root directory of this source tree.
4
+
5
+ @forward '@carbon/styles/scss/components/coachmark/coachmark';
@@ -0,0 +1,5 @@
1
+ // Copyright IBM Corp. 2025
2
+ // This source code is licensed under the Apache-2.0 license found in the
3
+ // LICENSE file in the root directory of this source tree.
4
+
5
+ @forward '@carbon/styles/scss/components/coachmark';
@@ -0,0 +1,5 @@
1
+ // Copyright IBM Corp. 2025
2
+ // This source code is licensed under the Apache-2.0 license found in the
3
+ // LICENSE file in the root directory of this source tree.
4
+
5
+ @forward '@carbon/styles/scss/components/EditInPlace/edit-in-place';
@@ -0,0 +1,5 @@
1
+ // Copyright IBM Corp. 2025
2
+ // This source code is licensed under the Apache-2.0 license found in the
3
+ // LICENSE file in the root directory of this source tree.
4
+
5
+ @forward '@carbon/styles/scss/components/EditInPlace';