diff --git a/packages/ui/src/components/Button/ButtonGroup.tsx b/packages/ui/src/components/Button/ButtonGroup.tsx index 2d758af51..dca346d94 100644 --- a/packages/ui/src/components/Button/ButtonGroup.tsx +++ b/packages/ui/src/components/Button/ButtonGroup.tsx @@ -4,7 +4,7 @@ import { twMerge } from "tailwind-merge"; import { mergeDeep } from "../../helpers/merge-deep"; import { getTheme } from "../../theme-store"; import type { DeepPartial } from "../../types"; -import type { ButtonProps } from "../Button"; +import { Button, type ButtonProps } from "../Button"; export interface FlowbiteButtonGroupTheme { base: string; @@ -29,19 +29,21 @@ const processChildren = ( ): ReactNode => { return Children.map(children as ReactElement[], (child, index) => { if (isValidElement(child)) { + const positionInGroupProp = + child.type == Button ? { positionInGroup: determinePosition(index, Children.count(children)) } : {}; // Check if the child has nested children if (child.props.children) { // Recursively process nested children return cloneElement(child, { ...child.props, children: processChildren(child.props.children, outline, pill), - positionInGroup: determinePosition(index, Children.count(children)), + ...positionInGroupProp, }); } else { return cloneElement(child, { outline, pill, - positionInGroup: determinePosition(index, Children.count(children)), + ...positionInGroupProp, }); } } @@ -49,7 +51,7 @@ const processChildren = ( }); }; -const determinePosition = (index: number, totalChildren: number) => { +const determinePosition = (index: number, totalChildren: number): keyof PositionInButtonGroup => { return index === 0 ? "start" : index === totalChildren - 1 ? "end" : "middle"; };