{"version":3,"file":"ActionButton.cjs","sources":["../../../../src/internal/Actions/ActionButton.tsx"],"sourcesContent":["import type {FC, HTMLAttributes, MouseEvent} from 'react';\nimport {useMemo} from 'react';\nimport {useCallback} from 'react';\nimport classNames from 'classnames';\n\nimport {IconSuccess, IconDanger, IconLink} from '@/internal/Icons';\n\nimport {ActionTypes} from './ActionTypes.ts';\nimport classes from './ActionButton.module.css';\n\nexport type Props = {\n    title?: string;\n    icon?: FC<HTMLAttributes<HTMLOrSVGElement> & unknown>;\n    type?: keyof typeof ActionTypes;\n    onClick?: (name: MouseEvent<HTMLButtonElement>) => void;\n    className?: string;\n    disabled?: boolean;\n};\n\nexport const ActionButton: FC<Props> = ({\n    title,\n    icon,\n    type = 'default',\n    onClick = () => {},\n    className,\n    disabled,\n}) => {\n    const ActionIcon = useMemo(\n        () =>\n            icon ??\n            {\n                [ActionTypes.success]: IconSuccess,\n                [ActionTypes.danger]: IconDanger,\n                [ActionTypes.link]: IconLink,\n                [ActionTypes.default]: undefined,\n            }[type],\n        [icon, type]\n    );\n\n    const handleClick = useCallback(\n        (event: MouseEvent<HTMLButtonElement>) => {\n            onClick(event);\n        },\n        [onClick]\n    );\n\n    return (\n        <button\n            disabled={disabled}\n            title={title}\n            onClick={handleClick}\n            className={classNames(\n                classes.actionButton,\n                {\n                    [classes.default]: type === ActionTypes.default,\n                    [classes.link]: type === ActionTypes.link,\n                    [classes.success]: type === ActionTypes.success,\n                    [classes.danger]: type === ActionTypes.danger,\n                },\n                className\n            )}>\n            {ActionIcon && <ActionIcon className={classes.actionIcon} />}\n            {title && <span className={classes.actionLabel}>{title}</span>}\n        </button>\n    );\n};\n"],"names":["ActionButton","title","icon","type","onClick","className","disabled","ActionIcon","useMemo","ActionTypes","IconSuccess","IconDanger","IconLink","handleClick","useCallback","event","jsxs","classNames","classes","jsx"],"mappings":"qWAmBaA,EAA0B,CAAC,CACpC,MAAAC,EACA,KAAAC,EACA,KAAAC,EAAO,UACP,QAAAC,EAAU,IAAM,CAAC,EACjB,UAAAC,EACA,SAAAC,CACJ,IAAM,CACF,MAAMC,EAAaC,EAAA,QACf,IACIN,GACA,CACI,CAACO,EAAAA,YAAY,OAAO,EAAGC,EAAA,YACvB,CAACD,EAAAA,YAAY,MAAM,EAAGE,EAAA,WACtB,CAACF,EAAAA,YAAY,IAAI,EAAGG,EAAA,SACpB,CAACH,EAAAA,YAAY,OAAO,EAAG,QACzBN,CAAI,EACV,CAACD,EAAMC,CAAI,CACf,EAEMU,EAAcC,EAAA,YACfC,GAAyC,CACtCX,EAAQW,CAAK,CACjB,EACA,CAACX,CAAO,CACZ,EAGI,OAAAY,EAAA,KAAC,SAAA,CACG,SAAAV,EACA,MAAAL,EACA,QAASY,EACT,UAAWI,EACPC,EAAAA,QAAQ,aACR,CACI,CAACA,UAAQ,OAAO,EAAGf,IAASM,EAAY,YAAA,QACxC,CAACS,UAAQ,IAAI,EAAGf,IAASM,EAAY,YAAA,KACrC,CAACS,UAAQ,OAAO,EAAGf,IAASM,EAAY,YAAA,QACxC,CAACS,UAAQ,MAAM,EAAGf,IAASM,cAAY,MAC3C,EACAJ,CACJ,EACC,SAAA,CAAAE,GAAeY,EAAA,IAAAZ,EAAA,CAAW,UAAWW,EAAAA,QAAQ,WAAY,EACzDjB,GAAUkB,EAAAA,IAAA,OAAA,CAAK,UAAWD,EAAAA,QAAQ,YAAc,SAAMjB,CAAA,CAAA,CAAA,CAAA,CAC3D,CAER"}