diff --git a/packages/react/src/Button/ButtonBase.module.css b/packages/react/src/Button/ButtonBase.module.css
index af5ef685034..dd279e566df 100644
--- a/packages/react/src/Button/ButtonBase.module.css
+++ b/packages/react/src/Button/ButtonBase.module.css
@@ -85,6 +85,20 @@
}
}
+ &.IconButton--withCount {
+ width: unset;
+ min-width: var(--control-medium-size);
+ padding-inline: var(--control-small-paddingInline-condensed);
+
+ &:where([data-size='small']) {
+ min-width: var(--control-small-size);
+ }
+
+ &:where([data-size='large']) {
+ min-width: var(--control-large-size);
+ }
+ }
+
/* LinkButton */
&[href] {
diff --git a/packages/react/src/Button/ButtonBase.tsx b/packages/react/src/Button/ButtonBase.tsx
index d49124a624f..e5fdcfd88b0 100644
--- a/packages/react/src/Button/ButtonBase.tsx
+++ b/packages/react/src/Button/ButtonBase.tsx
@@ -123,7 +123,21 @@ const ButtonBase = forwardRef(
) : isElement(Icon) ? (
Icon
) : (
-
+
+
+ {count !== undefined
+ ? renderModuleVisual(
+ () => (
+
+ {count}
+
+ ),
+ Boolean(loading) && !LeadingVisual,
+ 'trailingVisual',
+ true,
+ )
+ : null}
+
)
) : (
<>
@@ -244,7 +258,21 @@ const ButtonBase = forwardRef(
) : isElement(Icon) ? (
Icon
) : (
-
+
+
+ {count !== undefined
+ ? renderModuleVisual(
+ () => (
+
+ {count}
+
+ ),
+ Boolean(loading) && !LeadingVisual,
+ 'trailingVisual',
+ true,
+ )
+ : null}
+
)
) : (
<>
diff --git a/packages/react/src/Button/IconButton.features.stories.tsx b/packages/react/src/Button/IconButton.features.stories.tsx
index d8db5c4b4c2..c1bf82f57d4 100644
--- a/packages/react/src/Button/IconButton.features.stories.tsx
+++ b/packages/react/src/Button/IconButton.features.stories.tsx
@@ -94,3 +94,5 @@ export const KeybindingHintOnDescription = () => (
)
export const KeybindingHint = () =>
+
+export const TrailingCounter = () =>
diff --git a/packages/react/src/Button/IconButton.tsx b/packages/react/src/Button/IconButton.tsx
index 4b86ea1bd48..a48836892c3 100644
--- a/packages/react/src/Button/IconButton.tsx
+++ b/packages/react/src/Button/IconButton.tsx
@@ -18,6 +18,7 @@ const IconButton = forwardRef(
description,
disabled,
tooltipDirection,
+ count,
// This is planned to be a temporary prop until the default tooltip on icon buttons are fully rolled out.
unsafeDisableTooltip = false,
keyshortcuts,
@@ -47,12 +48,15 @@ const IconButton = forwardRef(
return (