|
import type { IconButtonProps, SystemStyleObject } from '@invoke-ai/ui-library'; |
|
import { IconButton } from '@invoke-ai/ui-library'; |
|
import type { MouseEvent } from 'react'; |
|
import { memo } from 'react'; |
|
|
|
const sx: SystemStyleObject = { |
|
minW: 0, |
|
svg: { |
|
transitionProperty: 'common', |
|
transitionDuration: 'normal', |
|
fill: 'base.100', |
|
_hover: { fill: 'base.50' }, |
|
filter: `drop-shadow(0px 0px 0.1rem var(--invoke-colors-base-900)) |
|
drop-shadow(0px 0px 0.3rem var(--invoke-colors-base-900)) |
|
drop-shadow(0px 0px 0.3rem var(--invoke-colors-base-900))`, |
|
}, |
|
}; |
|
|
|
type Props = Omit<IconButtonProps, 'aria-label' | 'onClick' | 'tooltip'> & { |
|
onClick: (event: MouseEvent<HTMLButtonElement>) => void; |
|
tooltip: string; |
|
}; |
|
|
|
export const DndImageIcon = memo((props: Props) => { |
|
const { onClick, tooltip, icon, ...rest } = props; |
|
|
|
return ( |
|
<IconButton |
|
onClick={onClick} |
|
aria-label={tooltip} |
|
icon={icon} |
|
variant="link" |
|
sx={sx} |
|
data-testid={tooltip} |
|
{...rest} |
|
/> |
|
); |
|
}); |
|
|
|
DndImageIcon.displayName = 'DndImageIcon'; |
|
|