import classNames from 'classnames'; import type { MouseEvent } from 'react'; import { forwardRef, useCallback } from 'react'; import { useTimedBoolean } from '../../hooks/useTimedBoolean'; import type { ButtonProps } from './Button'; import { Button } from './Button'; import type { IconProps } from './Icon'; import { Icon } from './Icon'; type Props = IconProps & ButtonProps & { showConfirm?: boolean; iconClassName?: string; iconSize?: IconProps['size']; title: string; showBadge?: boolean; }; export const IconButton = forwardRef(function IconButton( { showConfirm, icon, spin, onClick, className, iconClassName, tabIndex, size = 'md', iconSize, showBadge, ...props }: Props, ref, ) { const [confirmed, setConfirmed] = useTimedBoolean(); const handleClick = useCallback( (e: MouseEvent) => { if (showConfirm) setConfirmed(); onClick?.(e); }, [onClick, setConfirmed, showConfirm], ); return ( ); });