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 (