>, 'children'>
export const ButtonGroup = ({
children,
classNameOverride,
...restProps
}: ButtonGroupProps): JSX.Element => {
const childCount = React.Children.count(children)
const containerProps = {
role: 'group',
className: classnames(styles.buttonGroup, classNameOverride),
...restProps,
}
if (childCount === 1) return {children}
return (
{React.Children.map(children, (child, index) => {
const buttonClassNames = classnames(
styles.child,
index === 0 && styles.firstChild,
index === childCount - 1 && styles.lastChild,
child.props.classNameOverride,
)
if (child.type === Tooltip) {
const button = child.props.children
if (isFilterButton(button)) {
return React.cloneElement(child, {
children: React.cloneElement(button, {
classNameOverride: classnames(button.props.classNameOverride, buttonClassNames),
}),
})
}
return child
}
return React.cloneElement(child, {
classNameOverride: buttonClassNames,
})
})}
)
}
ButtonGroup.displayName = 'ButtonGroup'