All files / components/ButtonsAndLinks/InnerContent InnerContent.tsx

100% Statements 2/2
71.42% Branches 10/14
100% Functions 1/1
100% Lines 2/2

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33            144x           3110x                                        
import { CommonProps } from '../../../types/buttonLinkCommonProps'
import { Icon } from '../../Icon/Icon'
 
/**
 * Inner content of a button or link. Handles icon loading and positioning.
 */
export const InnerContent: React.FC<Pick<CommonProps, 'icon' | 'iconSlot' | 'loading' | 'children'>> = ({
	icon,
	iconSlot,
	loading,
	children,
}) => {
	return (
		<>
			{icon &&
				iconSlot === 'start' &&
				(loading ? (
					<Icon datacy="icon-start-loading" className={`mr-2 text-xl ${loading ? 'animate-spin' : ''}`} icon="sync" />
				) : (
					<Icon datacy="icon-start" className="mr-2 text-xl" icon={icon} />
				))}
			{children}
			{icon &&
				iconSlot === 'end' &&
				(loading ? (
					<Icon datacy="icon-end-loading" className={`ml-2 text-xl ${loading ? 'animate-spin' : ''}`} icon="sync" />
				) : (
					<Icon datacy="icon-end" className="ml-2 text-xl" icon={icon} />
				))}
		</>
	)
}