import classnames from 'classnames'; import type { MouseEvent } from 'react'; import { forwardRef, memo, 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; }; const _IconButton = forwardRef(function IconButton( { showConfirm, icon, spin, onClick, className, iconClassName, tabIndex, size = 'md', iconSize, ...props }: Props, ref, ) { const [confirmed, setConfirmed] = useTimedBoolean(); const handleClick = useCallback( (e: MouseEvent) => { if (showConfirm) setConfirmed(); onClick?.(e); }, [onClick], ); return ( ); }); export const IconButton = memo(_IconButton);