@carbon/ibm-products 2.75.0 → 2.76.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 (45) hide show
  1. package/css/index-full-carbon.css +43 -11
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +1 -1
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +34 -6
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +1 -1
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +43 -11
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +1 -1
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +43 -11
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +1 -1
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/Coachmark/next/Coachmark/CoachmarkTagline/CoachmarkTagline.d.ts +39 -0
  18. package/es/components/Coachmark/next/Coachmark/CoachmarkTagline/CoachmarkTagline.js +97 -0
  19. package/es/components/Coachmark/next/Coachmark/CoachmarkTagline/index.d.ts +8 -0
  20. package/es/components/Coachmark/next/Coachmark/CoachmarkTagline/index.js +8 -0
  21. package/es/components/PageHeader/next/PageHeader.d.ts +10 -10
  22. package/es/components/PageHeader/next/PageHeader.js +55 -71
  23. package/es/components/PageHeader/next/index.d.ts +2 -2
  24. package/es/components/TagOverflow/TagOverflowPopover.js +7 -2
  25. package/es/components/TagSet/TagSetOverflow.js +7 -2
  26. package/es/components/index.d.ts +1 -0
  27. package/es/index.js +20 -18
  28. package/es/patterns/DeleteAndRemove/_story-assets/utils.d.ts +7 -0
  29. package/lib/components/Coachmark/next/Coachmark/CoachmarkTagline/CoachmarkTagline.d.ts +39 -0
  30. package/lib/components/Coachmark/next/Coachmark/CoachmarkTagline/CoachmarkTagline.js +99 -0
  31. package/lib/components/Coachmark/next/Coachmark/CoachmarkTagline/index.d.ts +8 -0
  32. package/lib/components/Coachmark/next/Coachmark/CoachmarkTagline/index.js +14 -0
  33. package/lib/components/PageHeader/next/PageHeader.d.ts +10 -10
  34. package/lib/components/PageHeader/next/PageHeader.js +54 -68
  35. package/lib/components/PageHeader/next/index.d.ts +2 -2
  36. package/lib/components/TagOverflow/TagOverflowPopover.js +7 -2
  37. package/lib/components/TagSet/TagSetOverflow.js +7 -2
  38. package/lib/components/index.d.ts +1 -0
  39. package/lib/index.js +29 -27
  40. package/lib/patterns/DeleteAndRemove/_story-assets/utils.d.ts +7 -0
  41. package/package.json +7 -7
  42. package/scss/components/PageHeader/_page-header.scss +26 -1
  43. package/scss/components/TagOverflow/_tag-overflow.scss +12 -6
  44. package/scss/components/TagSet/_tag-set.scss +12 -6
  45. package/telemetry.yml +4 -2
@@ -0,0 +1,99 @@
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 icons = require('@carbon/react/icons');
15
+ var react = require('@carbon/react');
16
+ var devtools = require('../../../../../global/js/utils/devtools.js');
17
+ var settings = require('../../../../../settings.js');
18
+
19
+ var _Idea;
20
+
21
+ // The block part of our conventional BEM class names (blockClass__E--M).
22
+ const blockClass = `${settings.pkg.prefix}--coachmark-tagline`;
23
+ const componentName = 'CoachmarkTagline';
24
+ const defaults = {
25
+ onClose: () => {},
26
+ closeIconDescription: 'Close'
27
+ };
28
+ /**
29
+ * DO NOT USE. This component is for the exclusive use
30
+ * of other Onboarding components.
31
+ */
32
+ const CoachmarkTagline = /*#__PURE__*/React.forwardRef((_ref, ref) => {
33
+ let {
34
+ closeIconDescription = defaults.closeIconDescription,
35
+ onClose = defaults.onClose,
36
+ title,
37
+ buttonProps,
38
+ isOpen,
39
+ ...rest
40
+ } = _ref;
41
+ return /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({}, rest, {
42
+ className: cx(blockClass, isOpen && `${blockClass}--is-open`),
43
+ ref: ref
44
+ }, devtools.getDevtoolsProps(componentName)), /*#__PURE__*/React.createElement("button", _rollupPluginBabelHelpers.extends({
45
+ className: `${blockClass}__cta`,
46
+ type: "button"
47
+ }, buttonProps), /*#__PURE__*/React.createElement("div", {
48
+ className: `${blockClass}__idea`
49
+ }, _Idea || (_Idea = /*#__PURE__*/React.createElement(icons.Idea, {
50
+ size: 16
51
+ }))), /*#__PURE__*/React.createElement("div", null, title)), /*#__PURE__*/React.createElement("div", {
52
+ className: `${blockClass}--close-btn-container`
53
+ }, /*#__PURE__*/React.createElement(react.Button, {
54
+ kind: "ghost",
55
+ size: "sm",
56
+ renderIcon: icons.Close,
57
+ iconDescription: closeIconDescription,
58
+ hasIconOnly: true,
59
+ className: `${blockClass}--close-btn`,
60
+ onClick: onClose
61
+ })));
62
+ });
63
+
64
+ // The display name of the component, used by React. Note that displayName
65
+ // is used in preference to relying on function.name.
66
+ CoachmarkTagline.displayName = componentName;
67
+
68
+ // The types and DocGen commentary for the component props,
69
+ // in alphabetical order (for consistency).
70
+ // See https://www.npmjs.com/package/prop-types#usage.
71
+ CoachmarkTagline.propTypes = {
72
+ /**
73
+ * button props
74
+ */
75
+ buttonProps: index.default.shape({
76
+ /**@ts-ignore*/
77
+ ...react.Button.propTypes,
78
+ /**@ts-ignore*/
79
+ id: index.default.string,
80
+ onClick: index.default.func,
81
+ onDoubleClick: index.default.func,
82
+ tabIndex: index.default.number,
83
+ ['aria-expanded']: index.default.bool
84
+ }),
85
+ /**
86
+ * Tooltip text and aria label for the Close button icon.
87
+ */
88
+ closeIconDescription: index.default.string,
89
+ /**
90
+ * Function to call when the close button is clicked.
91
+ */
92
+ onClose: index.default.func,
93
+ /**
94
+ * The title of the tagline.
95
+ */
96
+ title: index.default.string.isRequired
97
+ };
98
+
99
+ exports.CoachmarkTagline = CoachmarkTagline;
@@ -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 { CoachmarkTagline } from './CoachmarkTagline';
8
+ export type { CoachmarkTaglineProps } from './CoachmarkTagline';
@@ -0,0 +1,14 @@
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 CoachmarkTagline = require('./CoachmarkTagline.js');
11
+
12
+
13
+
14
+ exports.CoachmarkTagline = CoachmarkTagline.CoachmarkTagline;
@@ -6,7 +6,6 @@
6
6
  */
7
7
  import React, { type ComponentType, type FunctionComponent } from 'react';
8
8
  import { IconButtonProps, BreadcrumbItemProps, BreadcrumbProps } from '@carbon/react';
9
- import { TYPES } from '@carbon/react/es/components/Tag/Tag';
10
9
  /**
11
10
  * ----------
12
11
  * PageHeader
@@ -199,19 +198,19 @@ declare const PageHeaderHeroImage: {
199
198
  * PageHeaderTabBar
200
199
  * ----------------
201
200
  */
202
- interface TagItem {
203
- type: keyof typeof TYPES;
204
- text: string;
205
- size?: 'sm' | 'md' | 'lg';
206
- id: string;
207
- }
208
201
  interface PageHeaderTabBarProps {
209
202
  children?: React.ReactNode;
210
203
  className?: string;
211
- tags?: TagItem[];
204
+ tags?: React.ReactNode;
212
205
  scroller?: React.ReactNode;
213
206
  }
214
207
  declare const PageHeaderTabBar: React.ForwardRefExoticComponent<PageHeaderTabBarProps & React.RefAttributes<HTMLDivElement>>;
208
+ interface PageHeaderTagOverflowProps {
209
+ children: React.ReactNode;
210
+ renderOverflowTag?: (hiddenBreadcrumbs: HTMLElement[], handleOverflowClick: (event: React.MouseEvent) => void, openPopover: boolean) => React.ReactElement;
211
+ renderPopoverContent?: (hiddenBreadcrumbs: HTMLElement[]) => React.ReactElement;
212
+ }
213
+ declare const PageHeaderTagOverflow: React.ForwardRefExoticComponent<PageHeaderTagOverflowProps & React.RefAttributes<HTMLDivElement>>;
215
214
  interface PageHeaderScrollButtonProps extends IconButtonProps {
216
215
  collapseText?: string;
217
216
  expandText?: string;
@@ -288,5 +287,6 @@ declare const TabBar: React.ForwardRefExoticComponent<PageHeaderTabBarProps & Re
288
287
  declare const ScrollButton: React.ForwardRefExoticComponent<PageHeaderScrollButtonProps & React.RefAttributes<HTMLDivElement>>;
289
288
  declare const TitleBreadcrumb: React.ForwardRefExoticComponent<BreadcrumbItemProps & React.RefAttributes<HTMLLIElement>>;
290
289
  declare const BreadcrumbOverflow: React.ForwardRefExoticComponent<PageHeaderBreadcrumbOverflowProps & React.RefAttributes<HTMLElement>>;
291
- export { PageHeader, PageHeaderBreadcrumbBar, PageHeaderContent, PageHeaderContentPageActions, PageHeaderContentText, PageHeaderHeroImage, PageHeaderTabBar, PageHeaderScrollButton, PageHeaderTitleBreadcrumb, PageHeaderBreadcrumbOverflow, Root, BreadcrumbBar, Content, ContentPageActions, ContentText, HeroImage, TabBar, ScrollButton, TitleBreadcrumb, BreadcrumbOverflow, };
292
- export type { PageHeaderProps, PageHeaderBreadcrumbBarProps, PageHeaderContentProps, PageHeaderContentPageActionsProps, PageHeaderContentTextProps, PageHeaderHeroImageProps, PageHeaderTabBarProps, PageHeaderScrollButtonProps, };
290
+ declare const TagOverflow: React.ForwardRefExoticComponent<PageHeaderTagOverflowProps & React.RefAttributes<HTMLDivElement>>;
291
+ export { PageHeader, PageHeaderBreadcrumbBar, PageHeaderContent, PageHeaderContentPageActions, PageHeaderContentText, PageHeaderHeroImage, PageHeaderTabBar, PageHeaderScrollButton, PageHeaderTitleBreadcrumb, PageHeaderBreadcrumbOverflow, PageHeaderTagOverflow, Root, BreadcrumbBar, Content, ContentPageActions, ContentText, HeroImage, TabBar, ScrollButton, TitleBreadcrumb, BreadcrumbOverflow, TagOverflow, };
292
+ export type { PageHeaderProps, PageHeaderBreadcrumbBarProps, PageHeaderContentProps, PageHeaderContentPageActionsProps, PageHeaderContentTextProps, PageHeaderHeroImageProps, PageHeaderTabBarProps, PageHeaderScrollButtonProps, PageHeaderTagOverflowProps, };
@@ -16,8 +16,6 @@ var layout = require('@carbon/layout');
16
16
  var PageHeaderUtils = require('../PageHeaderUtils.js');
17
17
  var overflowHandler = require('./overflowHandler.js');
18
18
  var utilities = require('@carbon/utilities');
19
- var useOverflowItems = require('../../../global/js/hooks/useOverflowItems/useOverflowItems.js');
20
- var useId = require('../../../global/js/utils/useId.js');
21
19
  var icons = require('@carbon/react/icons');
22
20
  var context = require('./context.js');
23
21
  var utils = require('./utils.js');
@@ -523,7 +521,7 @@ const PageHeaderTabBar = /*#__PURE__*/React.forwardRef(function PageHeaderTabBar
523
521
  }, scroller);
524
522
 
525
523
  // Early return if no tags are provided
526
- if (!tags.length) {
524
+ if (!tags) {
527
525
  return /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({
528
526
  className: classNames,
529
527
  ref: ref
@@ -533,17 +531,29 @@ const PageHeaderTabBar = /*#__PURE__*/React.forwardRef(function PageHeaderTabBar
533
531
  sm: 4
534
532
  }, children, renderScroller())));
535
533
  }
534
+ return /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({
535
+ className: classNames,
536
+ ref: ref
537
+ }, other), /*#__PURE__*/React.createElement(react.Grid, null, /*#__PURE__*/React.createElement(react.Column, {
538
+ lg: 16,
539
+ md: 8,
540
+ sm: 4
541
+ }, /*#__PURE__*/React.createElement("div", {
542
+ className: cx(`${PageHeaderUtils.blockClass}__tab-bar--tablist`, {
543
+ [`${settings.pkg.prefix}--page-header__tab-bar--with-scroller`]: !!scroller
544
+ })
545
+ }, children, tags, renderScroller()))));
546
+ });
547
+ PageHeaderTabBar.displayName = 'PageHeaderTabBar';
548
+ const PageHeaderTagOverflow = /*#__PURE__*/React.forwardRef(_ref8 => {
549
+ let {
550
+ renderOverflowTag,
551
+ renderPopoverContent,
552
+ children
553
+ } = _ref8;
536
554
  const [openPopover, setOpenPopover] = React.useState(false);
537
- const tagSize = tags[0]?.size || 'md';
538
- const instanceId = useId.useId('PageHeaderTabBar');
539
- const tagsWithIds = React.useMemo(() => {
540
- return tags.map((tag, index) => ({
541
- ...tag,
542
- id: tag.id || `tag-${index}-${instanceId}`
543
- }));
544
- }, [instanceId, tags]);
555
+ const [hiddenTags, setHiddenTags] = React.useState([]);
545
556
  const tagsContainerRef = React.useRef(null);
546
- const offsetRef = React.useRef(null);
547
557
  // To close popover when window resizes
548
558
  React.useEffect(() => {
549
559
  const handleResize = () => {
@@ -555,64 +565,36 @@ const PageHeaderTabBar = /*#__PURE__*/React.forwardRef(function PageHeaderTabBar
555
565
  window.removeEventListener('resize', handleResize);
556
566
  };
557
567
  }, []);
558
-
559
- // overflow items hook
560
- const {
561
- visibleItems = [],
562
- hiddenItems = [],
563
- itemRefHandler = () => {}
564
- } = useOverflowItems.useOverflowItems(tagsWithIds, tagsContainerRef, offsetRef) || {
565
- visibleItems: [],
566
- hiddenItems: [],
567
- itemRefHandler: () => {}
568
- };
569
568
  const handleOverflowClick = React.useCallback(event => {
570
569
  event.stopPropagation();
571
570
  setOpenPopover(prev => !prev);
572
571
  }, []);
573
-
574
- // Function to render tags
575
- const renderTags = () => /*#__PURE__*/React.createElement("div", {
576
- className: `${PageHeaderUtils.blockClass}__tags`,
577
- ref: tagsContainerRef
578
- }, visibleItems.map(tag => /*#__PURE__*/React.createElement(react.Tag, {
579
- key: tag.id,
580
- ref: node => itemRefHandler(tag.id, node),
581
- type: tag.type,
582
- size: tag.size,
583
- className: `${PageHeaderUtils.blockClass}__tag-item`
584
- }, tag.text)), hiddenItems.length > 0 && /*#__PURE__*/React.createElement(react.Popover, {
572
+ React.useEffect(() => {
573
+ overflowHandler.createOverflowHandler({
574
+ container: tagsContainerRef.current,
575
+ onChange: (_, hidden) => {
576
+ setHiddenTags(hidden);
577
+ }
578
+ });
579
+ }, []);
580
+ return /*#__PURE__*/React.createElement("div", {
581
+ ref: tagsContainerRef,
582
+ className: cx(`${settings.pkg.prefix}--page-header--tag-overflow-container`, {
583
+ [`${settings.pkg.prefix}--page-header--tag-overflow-container__has-no-hidden-items`]: !hiddenTags.length
584
+ })
585
+ }, children, /*#__PURE__*/React.createElement(react.Popover, {
585
586
  open: openPopover,
586
- onRequestClose: () => setOpenPopover(false)
587
- }, /*#__PURE__*/React.createElement(react.OperationalTag, {
588
- onClick: handleOverflowClick,
589
- "aria-expanded": openPopover,
590
- text: `+${hiddenItems.length}`,
591
- size: tagSize
592
- }), /*#__PURE__*/React.createElement(react.PopoverContent, {
593
- className: "tag-popover-content"
594
- }, /*#__PURE__*/React.createElement("div", {
595
- className: `${PageHeaderUtils.blockClass}__tags-popover-list`
596
- }, hiddenItems.map(tag => /*#__PURE__*/React.createElement(react.Tag, {
597
- key: tag.id,
598
- type: tag.type,
599
- size: tag.size
600
- }, tag.text))))));
601
- return /*#__PURE__*/React.createElement("div", _rollupPluginBabelHelpers.extends({
602
- className: classNames,
603
- ref: ref
604
- }, other), /*#__PURE__*/React.createElement(react.Grid, null, /*#__PURE__*/React.createElement(react.Column, {
605
- lg: 16,
606
- md: 8,
607
- sm: 4
608
- }, /*#__PURE__*/React.createElement("div", {
609
- className: cx(`${PageHeaderUtils.blockClass}__tab-bar--tablist`, {
610
- [`${settings.pkg.prefix}--page-header__tab-bar--with-scroller`]: !!scroller
587
+ onRequestClose: () => setOpenPopover(false),
588
+ "data-fixed": true,
589
+ className: cx(`${settings.pkg.prefix}--page-header--tag-overflow-popover`, {
590
+ [`${settings.pkg.prefix}--page-header--tag-overflow-popover__hidden`]: !hiddenTags.length
611
591
  })
612
- }, children, tags.length > 0 && renderTags(), renderScroller()))));
592
+ }, renderOverflowTag?.(hiddenTags, handleOverflowClick, openPopover), /*#__PURE__*/React.createElement(react.PopoverContent, null, /*#__PURE__*/React.createElement("div", {
593
+ className: `${PageHeaderUtils.blockClass}__tags-popover-list`
594
+ }, renderPopoverContent?.(hiddenTags)))));
613
595
  });
614
- PageHeaderTabBar.displayName = 'PageHeaderTabBar';
615
- const PageHeaderScrollButton = /*#__PURE__*/React.forwardRef(function PageHeaderExpander(_ref8, ref) {
596
+ PageHeaderTagOverflow.displayName = 'PageHeaderTagOverflow';
597
+ const PageHeaderScrollButton = /*#__PURE__*/React.forwardRef(function PageHeaderExpander(_ref9, ref) {
616
598
  let {
617
599
  className,
618
600
  children,
@@ -621,7 +603,7 @@ const PageHeaderScrollButton = /*#__PURE__*/React.forwardRef(function PageHeader
621
603
  collapseText = 'Collapse',
622
604
  expandText = 'Expand',
623
605
  ...other
624
- } = _ref8;
606
+ } = _ref9;
625
607
  const {
626
608
  refs,
627
609
  fullyCollapsed
@@ -666,12 +648,12 @@ const PageHeaderScrollButton = /*#__PURE__*/React.forwardRef(function PageHeader
666
648
  })
667
649
  }));
668
650
  });
669
- const PageHeaderTitleBreadcrumb = /*#__PURE__*/React.forwardRef((_ref9, ref) => {
651
+ const PageHeaderTitleBreadcrumb = /*#__PURE__*/React.forwardRef((_ref10, ref) => {
670
652
  let {
671
653
  className,
672
654
  children,
673
655
  ...other
674
- } = _ref9;
656
+ } = _ref10;
675
657
  const {
676
658
  titleClipped,
677
659
  refs
@@ -691,13 +673,13 @@ const PageHeaderTitleBreadcrumb = /*#__PURE__*/React.forwardRef((_ref9, ref) =>
691
673
  // including the overflow breadcrumb item. The overflowHandler determines what elements
692
674
  // are visible and hidden and passes the hidden elements back to the render prop used
693
675
  // to display the overflow breadcrumb
694
- const PageHeaderBreadcrumbOverflow = /*#__PURE__*/React.forwardRef((_ref10, ref) => {
676
+ const PageHeaderBreadcrumbOverflow = /*#__PURE__*/React.forwardRef((_ref11, ref) => {
695
677
  let {
696
678
  renderOverflowBreadcrumb,
697
679
  className,
698
680
  children,
699
681
  ...other
700
- } = _ref10;
682
+ } = _ref11;
701
683
  const [hiddenBreadcrumbs, setHiddenBreadcrumbs] = React.useState([]);
702
684
  const fallbackRef = React.useRef(null);
703
685
  const componentRef = ref ?? fallbackRef;
@@ -777,6 +759,8 @@ const TitleBreadcrumb = PageHeaderTitleBreadcrumb;
777
759
  TitleBreadcrumb.displayName = 'PageHeaderTitleBreadcrumb';
778
760
  const BreadcrumbOverflow = PageHeaderBreadcrumbOverflow;
779
761
  BreadcrumbOverflow.displayName = 'PageHeaderBreadcrumbOverflow';
762
+ const TagOverflow = PageHeaderTagOverflow;
763
+ TagOverflow.displayName = 'PageHeaderTagOverflow';
780
764
 
781
765
  exports.BreadcrumbBar = BreadcrumbBar;
782
766
  exports.BreadcrumbOverflow = BreadcrumbOverflow;
@@ -793,8 +777,10 @@ exports.PageHeaderContentText = PageHeaderContentText;
793
777
  exports.PageHeaderHeroImage = PageHeaderHeroImage;
794
778
  exports.PageHeaderScrollButton = PageHeaderScrollButton;
795
779
  exports.PageHeaderTabBar = PageHeaderTabBar;
780
+ exports.PageHeaderTagOverflow = PageHeaderTagOverflow;
796
781
  exports.PageHeaderTitleBreadcrumb = PageHeaderTitleBreadcrumb;
797
782
  exports.Root = Root;
798
783
  exports.ScrollButton = ScrollButton;
799
784
  exports.TabBar = TabBar;
785
+ exports.TagOverflow = TagOverflow;
800
786
  exports.TitleBreadcrumb = TitleBreadcrumb;
@@ -4,5 +4,5 @@
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
- export { PageHeader, PageHeaderBreadcrumbBar, PageHeaderContent, PageHeaderContentPageActions, PageHeaderContentText, PageHeaderTabBar, PageHeaderHeroImage, PageHeaderScrollButton, PageHeaderTitleBreadcrumb, PageHeaderBreadcrumbOverflow, Root, BreadcrumbBar, Content, ContentPageActions, ContentText, TabBar, HeroImage, ScrollButton, TitleBreadcrumb, BreadcrumbOverflow, } from './PageHeader';
8
- export type { PageHeaderProps, PageHeaderBreadcrumbBarProps, PageHeaderContentProps, PageHeaderContentPageActionsProps, PageHeaderContentTextProps, PageHeaderTabBarProps, PageHeaderHeroImageProps, PageHeaderScrollButtonProps, } from './PageHeader';
7
+ export { PageHeader, PageHeaderBreadcrumbBar, PageHeaderContent, PageHeaderContentPageActions, PageHeaderContentText, PageHeaderTabBar, PageHeaderHeroImage, PageHeaderScrollButton, PageHeaderTitleBreadcrumb, PageHeaderBreadcrumbOverflow, PageHeaderTagOverflow, Root, BreadcrumbBar, Content, ContentPageActions, ContentText, TabBar, HeroImage, ScrollButton, TitleBreadcrumb, BreadcrumbOverflow, TagOverflow, } from './PageHeader';
8
+ export type { PageHeaderProps, PageHeaderBreadcrumbBarProps, PageHeaderContentProps, PageHeaderContentPageActionsProps, PageHeaderContentTextProps, PageHeaderTabBarProps, PageHeaderHeroImageProps, PageHeaderScrollButtonProps, PageHeaderTagOverflowProps, } from './PageHeader';
@@ -75,8 +75,13 @@ const TagOverflowPopover = /*#__PURE__*/React.forwardRef((props, ref) => {
75
75
  }, /*#__PURE__*/React.createElement(react.OperationalTag, {
76
76
  onClick: () => setPopoverOpen?.(!popoverOpen),
77
77
  className: cx(`${blockClass}__trigger`),
78
- text: `+${overflowTags.length}`
79
- }), /*#__PURE__*/React.createElement(react.PopoverContent, null, /*#__PURE__*/React.createElement("div", {
78
+ text: `+${overflowTags.length}`,
79
+ "aria-expanded": popoverOpen,
80
+ "aria-controls": `${settings.pkg.prefix}-overflow-content`
81
+ }), /*#__PURE__*/React.createElement(react.PopoverContent, {
82
+ id: `${settings.pkg.prefix}-overflow-content`,
83
+ "aria-hidden": !popoverOpen
84
+ }, /*#__PURE__*/React.createElement("div", {
80
85
  ref: overflowTagContent,
81
86
  className: `${blockClass}__content`
82
87
  }, /*#__PURE__*/React.createElement("ul", {
@@ -103,8 +103,13 @@ const TagSetOverflow = /*#__PURE__*/React.forwardRef((_ref, ref) => {
103
103
  onClick: () => setPopoverOpen(!popoverOpen),
104
104
  className: cx(`${blockClass}__popover-trigger`),
105
105
  size: size,
106
- text: `+${overflowTags.length}`
107
- }), /*#__PURE__*/React.createElement(react.PopoverContent, null, /*#__PURE__*/React.createElement("div", {
106
+ text: `+${overflowTags.length}`,
107
+ "aria-expanded": popoverOpen,
108
+ "aria-controls": `${settings.pkg.prefix}-overflow-content`
109
+ }), /*#__PURE__*/React.createElement(react.PopoverContent, {
110
+ id: `${settings.pkg.prefix}-overflow-content`,
111
+ "aria-hidden": !popoverOpen
112
+ }, /*#__PURE__*/React.createElement("div", {
108
113
  ref: overflowTagContent,
109
114
  className: `${blockClass}__content`
110
115
  }, /*#__PURE__*/React.createElement("ul", {
@@ -43,6 +43,7 @@ export * from './WebTerminal';
43
43
  * draft | previewCandidate | preview
44
44
  */
45
45
  export * as preview__Coachmark from './Coachmark/next/Coachmark';
46
+ export * as preview__CoachmarkTagline from './Coachmark/next/Coachmark/CoachmarkTagline';
46
47
  export { FeatureFlags as preview__FeatureFlags, useFeatureFlag as preview__useFeatureFlag, useFeatureFlags as preview__useFeatureFlags, } from './FeatureFlags';
47
48
  export * as preview__PageHeader from './PageHeader/next/PageHeader';
48
49
  export * as previewCandidate__BigNumber from './BigNumber';
package/lib/index.js CHANGED
@@ -53,11 +53,12 @@ var TearsheetNarrow = require('./components/Tearsheet/TearsheetNarrow.js');
53
53
  var TruncatedText = require('./components/TruncatedText/TruncatedText.js');
54
54
  var WebTerminal = require('./components/WebTerminal/WebTerminal.js');
55
55
  var WebTerminalContentWrapper = require('./components/WebTerminal/WebTerminalContentWrapper.js');
56
- var index$b = require('./components/WebTerminal/hooks/index.js');
56
+ var index$c = require('./components/WebTerminal/hooks/index.js');
57
57
  var index = require('./components/Coachmark/next/Coachmark/index.js');
58
- var index$a = require('./components/FeatureFlags/index.js');
58
+ var index$1 = require('./components/Coachmark/next/Coachmark/CoachmarkTagline/index.js');
59
+ var index$b = require('./components/FeatureFlags/index.js');
59
60
  var PageHeader = require('./components/PageHeader/next/PageHeader.js');
60
- var index$1 = require('./components/BigNumber/index.js');
61
+ var index$2 = require('./components/BigNumber/index.js');
61
62
  var Coachmark = require('./components/Coachmark/Coachmark.js');
62
63
  var enums = require('./components/Coachmark/utils/enums.js');
63
64
  var context = require('./components/Coachmark/utils/context.js');
@@ -67,11 +68,11 @@ var CoachmarkButton = require('./components/CoachmarkButton/CoachmarkButton.js')
67
68
  var CoachmarkFixed = require('./components/CoachmarkFixed/CoachmarkFixed.js');
68
69
  var CoachmarkOverlayElement = require('./components/CoachmarkOverlayElement/CoachmarkOverlayElement.js');
69
70
  var CoachmarkOverlayElements = require('./components/CoachmarkOverlayElements/CoachmarkOverlayElements.js');
70
- var index$2 = require('./components/ConditionBuilder/index.js');
71
- var index$3 = require('./components/DataSpreadsheet/index.js');
72
- var index$4 = require('./components/DelimitedList/index.js');
73
- var index$5 = require('./components/Decorator/index.js');
74
- var index$6 = require('./components/GetStartedCard/index.js');
71
+ var index$3 = require('./components/ConditionBuilder/index.js');
72
+ var index$4 = require('./components/DataSpreadsheet/index.js');
73
+ var index$5 = require('./components/DelimitedList/index.js');
74
+ var index$6 = require('./components/Decorator/index.js');
75
+ var index$7 = require('./components/GetStartedCard/index.js');
75
76
  var Guidebanner = require('./components/Guidebanner/Guidebanner.js');
76
77
  var GuidebannerElement = require('./components/Guidebanner/GuidebannerElement.js');
77
78
  var GuidebannerElementButton = require('./components/Guidebanner/GuidebannerElementButton.js');
@@ -79,14 +80,14 @@ var GuidebannerElementLink = require('./components/Guidebanner/GuidebannerElemen
79
80
  var InlineTip = require('./components/InlineTip/InlineTip.js');
80
81
  var InlineTipButton = require('./components/InlineTip/InlineTipButton.js');
81
82
  var InlineTipLink = require('./components/InlineTip/InlineTipLink.js');
82
- var index$7 = require('./components/NonLinearReading/index.js');
83
- var index$8 = require('./components/SearchBar/index.js');
83
+ var index$8 = require('./components/NonLinearReading/index.js');
84
+ var index$9 = require('./components/SearchBar/index.js');
84
85
  var Toolbar = require('./components/Toolbar/Toolbar.js');
85
86
  var ToolbarButton = require('./components/Toolbar/ToolbarButton.js');
86
87
  var ToolbarGroup = require('./components/Toolbar/ToolbarGroup.js');
87
- var index$9 = require('./components/TruncatedList/index.js');
88
+ var index$a = require('./components/TruncatedList/index.js');
88
89
  var ComboButton = require('./components/ComboButton/ComboButton.js');
89
- var index$c = require('./components/ComboButton/ComboButtonItem/index.js');
90
+ var index$d = require('./components/ComboButton/ComboButtonItem/index.js');
90
91
  var Datagrid = require('./components/Datagrid/Datagrid/Datagrid.js');
91
92
  var useDatagrid = require('./components/Datagrid/useDatagrid.js');
92
93
  var useInfiniteScroll = require('./components/Datagrid/useInfiniteScroll.js');
@@ -195,14 +196,15 @@ Object.defineProperty(exports, "TruncatedText", {
195
196
  });
196
197
  exports.WebTerminal = WebTerminal.WebTerminal;
197
198
  exports.WebTerminalContentWrapper = WebTerminalContentWrapper.WebTerminalContentWrapper;
198
- exports.WebTerminalProvider = index$b.WebTerminalProvider;
199
- exports.useWebTerminal = index$b.useWebTerminal;
199
+ exports.WebTerminalProvider = index$c.WebTerminalProvider;
200
+ exports.useWebTerminal = index$c.useWebTerminal;
200
201
  exports.preview__Coachmark = index;
201
- exports.preview__FeatureFlags = index$a.FeatureFlags;
202
- exports.preview__useFeatureFlag = index$a.useFeatureFlag;
203
- exports.preview__useFeatureFlags = index$a.useFeatureFlags;
202
+ exports.preview__CoachmarkTagline = index$1;
203
+ exports.preview__FeatureFlags = index$b.FeatureFlags;
204
+ exports.preview__useFeatureFlag = index$b.useFeatureFlag;
205
+ exports.preview__useFeatureFlags = index$b.useFeatureFlags;
204
206
  exports.preview__PageHeader = PageHeader;
205
- exports.previewCandidate__BigNumber = index$1;
207
+ exports.previewCandidate__BigNumber = index$2;
206
208
  exports.previewCandidate__Coachmark = Coachmark.Coachmark;
207
209
  exports.BEACON_KIND = enums.BEACON_KIND;
208
210
  exports.COACHMARK_ALIGNMENT = enums.COACHMARK_ALIGNMENT;
@@ -213,11 +215,11 @@ exports.previewCandidate__CoachmarkButton = CoachmarkButton.CoachmarkButton;
213
215
  exports.previewCandidate__CoachmarkFixed = CoachmarkFixed.CoachmarkFixed;
214
216
  exports.previewCandidate__CoachmarkOverlayElement = CoachmarkOverlayElement.CoachmarkOverlayElement;
215
217
  exports.previewCandidate__CoachmarkOverlayElements = CoachmarkOverlayElements.CoachmarkOverlayElements;
216
- exports.previewCandidate__ConditionBuilder = index$2;
217
- exports.previewCandidate__DataSpreadsheet = index$3;
218
- exports.previewCandidate__DelimitedList = index$4;
219
- exports.previewCandidate__Decorator = index$5;
220
- exports.previewCandidate__GetStartedCard = index$6;
218
+ exports.previewCandidate__ConditionBuilder = index$3;
219
+ exports.previewCandidate__DataSpreadsheet = index$4;
220
+ exports.previewCandidate__DelimitedList = index$5;
221
+ exports.previewCandidate__Decorator = index$6;
222
+ exports.previewCandidate__GetStartedCard = index$7;
221
223
  exports.previewCandidate__Guidebanner = Guidebanner.Guidebanner;
222
224
  exports.previewCandidate__GuidebannerElement = GuidebannerElement.GuidebannerElement;
223
225
  exports.previewCandidate__GuidebannerElementButton = GuidebannerElementButton.GuidebannerElementButton;
@@ -225,14 +227,14 @@ exports.previewCandidate__GuidebannerElementLink = GuidebannerElementLink.Guideb
225
227
  exports.previewCandidate__InlineTip = InlineTip.InlineTip;
226
228
  exports.previewCandidate__InlineTipButton = InlineTipButton.InlineTipButton;
227
229
  exports.previewCandidate__InlineTipLink = InlineTipLink.InlineTipLink;
228
- exports.previewCandidate__NonLinearReading = index$7;
229
- exports.previewCandidate__SearchBar = index$8;
230
+ exports.previewCandidate__NonLinearReading = index$8;
231
+ exports.previewCandidate__SearchBar = index$9;
230
232
  exports.previewCandidate__Toolbar = Toolbar.Toolbar;
231
233
  exports.previewCandidate__ToolbarButton = ToolbarButton.ToolbarButton;
232
234
  exports.previewCandidate__ToolbarGroup = ToolbarGroup.ToolbarGroup;
233
- exports.previewCandidate__TruncatedList = index$9;
235
+ exports.previewCandidate__TruncatedList = index$a;
234
236
  exports.ComboButton = ComboButton.ComboButton;
235
- exports.ComboButtonItem = index$c.ComboButtonItem;
237
+ exports.ComboButtonItem = index$d.ComboButtonItem;
236
238
  exports.Datagrid = Datagrid.Datagrid;
237
239
  exports.useDatagrid = useDatagrid.default;
238
240
  exports.useInfiniteScroll = useInfiniteScroll.default;
@@ -0,0 +1,7 @@
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 declare function getCurrentTime(): string;
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.75.0",
4
+ "version": "2.76.0",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -68,6 +68,7 @@
68
68
  "@babel/preset-env": "^7.26.9",
69
69
  "@babel/preset-react": "^7.26.3",
70
70
  "@babel/preset-typescript": "^7.26.0",
71
+ "@figma/code-connect": "^1.3.5",
71
72
  "@ibm/telemetry-js-config-generator": "^2.0.1",
72
73
  "@percy/cli": "^1.31.0",
73
74
  "@percy/storybook": "^9.0.0",
@@ -81,8 +82,7 @@
81
82
  "@storybook/react-vite": "^9.0.13",
82
83
  "@types/react-table": "^7.7.20",
83
84
  "babel-plugin-dev-expression": "^0.2.3",
84
- "babel-preset-ibm-cloud-cognitive": "^0.33.0",
85
- "chalk": "^4.1.2",
85
+ "babel-preset-ibm-cloud-cognitive": "^0.34.0",
86
86
  "change-case": "5.4.4",
87
87
  "classnames": "^2.5.1",
88
88
  "copyfiles": "^2.4.1",
@@ -90,7 +90,7 @@
90
90
  "fs-extra": "^11.3.0",
91
91
  "glob": "^11.0.1",
92
92
  "jest": "^29.7.0",
93
- "jest-config-ibm-cloud-cognitive": "^1.34.0",
93
+ "jest-config-ibm-cloud-cognitive": "^1.35.0",
94
94
  "jest-environment-jsdom": "^29.7.0",
95
95
  "namor": "^1.1.2",
96
96
  "npm-run-all2": "^8.0.0",
@@ -107,9 +107,9 @@
107
107
  },
108
108
  "dependencies": {
109
109
  "@babel/runtime": "^7.26.10",
110
- "@carbon-labs/react-resizer": "^0.7.0",
110
+ "@carbon-labs/react-resizer": "^0.10.0",
111
111
  "@carbon/feature-flags": "^0.30.0",
112
- "@carbon/ibm-products-styles": "^2.71.0",
112
+ "@carbon/ibm-products-styles": "^2.72.0",
113
113
  "@carbon/telemetry": "^0.1.0",
114
114
  "@carbon/utilities": "^0.9.0",
115
115
  "@carbon/utilities-react": "0.12.0",
@@ -131,5 +131,5 @@
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
  },
134
- "gitHead": "98ca4d24bcc54951cf99c2c892da24b5ea44e059"
134
+ "gitHead": "9574ac50c9027213234f5fb015b44af96cc6ad0c"
135
135
  }
@@ -794,6 +794,7 @@ $duration: 1000ms;
794
794
 
795
795
  .#{$block-class}__content {
796
796
  padding: $spacing-06 0;
797
+ background-color: $layer;
797
798
  }
798
799
 
799
800
  .#{$block-class}__content__title-wrapper {
@@ -903,12 +904,13 @@ $duration: 1000ms;
903
904
  }
904
905
 
905
906
  .#{$block-class}__tab-bar {
907
+ background-color: $layer;
906
908
  margin-inline-start: -$spacing-05;
907
909
  }
908
910
 
909
911
  .#{$block-class}__tab-bar--tablist {
910
912
  display: grid;
911
- grid-gap: $spacing-10;
913
+ gap: $spacing-07;
912
914
  grid-template-columns: auto minmax(0, 1fr);
913
915
  }
914
916
 
@@ -966,6 +968,29 @@ $duration: 1000ms;
966
968
  padding: $spacing-05;
967
969
  }
968
970
 
971
+ .#{$block-class}--tag-overflow-container {
972
+ align-content: center;
973
+ text-align: end;
974
+ @include breakpoint(sm) {
975
+ transform: translateX(calc(-1 * #{$spacing-06}));
976
+ }
977
+ @include breakpoint(md) {
978
+ transform: translateX(calc(-1 * #{$spacing-03}));
979
+ }
980
+ @include breakpoint(lg) {
981
+ transform: translateX($spacing-08);
982
+ }
983
+ }
984
+
985
+ .#{$block-class}--tag-overflow-popover__hidden {
986
+ visibility: hidden;
987
+ }
988
+
989
+ .#{$block-class}--tag-overflow-container__has-no-hidden-items {
990
+ /* stylelint-disable-next-line carbon/layout-use */
991
+ transform: translateX($spacing-07);
992
+ }
993
+
969
994
  .#{$block-class}__tag-item {
970
995
  flex-shrink: 0;
971
996
  }