{"version":3,"file":"IconButton.cjs","sources":["../../../../src/components/actions/icon-button/IconButton.tsx"],"sourcesContent":["import { ICON_BUTTON_STYLES } from '@components/actions/icon-button/styles/IconButton.css.ts'\r\nimport { BUTTON_SHARED_STYLES } from '@components/actions/_shared/buttons/styles/buttonShared.css.ts'\r\nimport { getButtonLayoutClassName } from '@components/actions/_shared/buttons/utils/buttonLayout.utils.ts'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport type { IconButtonProps } from '@components/actions/icon-button/types/IconButton.props.ts'\r\nimport { cn } from '@utils/cn.ts'\r\nimport type { FC } from 'react'\r\nimport { ICON_BUTTON_SIZE_TO_ICON_SIZE, ICON_BUTTON_SIZES } from '@components/actions/icon-button/constants'\r\n\r\n/**\r\n * Icon-only action button. Requires `aria-label` for accessibility.\r\n * Supports `variant` (contained|outlined|ghost), semantic `color`,\r\n *  `size` (xs|sm|md|lg), and a local SVG `icon` component.\r\n */\r\nconst IconButton: FC<IconButtonProps> = ({\r\n    variant,\r\n    color,\r\n    size = ICON_BUTTON_SIZES.md,\r\n    className,\r\n    icon,\r\n    children,\r\n    active,\r\n    margin,\r\n    marginTop,\r\n    marginRight,\r\n    marginBottom,\r\n    marginLeft,\r\n    width,\r\n    alignSelf,\r\n    style,\r\n    ref,\r\n    ...props\r\n}) => {\r\n    const iconSize = ICON_BUTTON_SIZE_TO_ICON_SIZE[size]\r\n\r\n    return (\r\n        <button\r\n            ref={ref}\r\n            className={cn(\r\n                ICON_BUTTON_STYLES.recipe({ variant, color, size }),\r\n                getButtonLayoutClassName({ margin, marginTop, marginRight, marginBottom, marginLeft, width, alignSelf }),\r\n                className,\r\n            )}\r\n            style={{ width, alignSelf, ...style }}\r\n            {...props}\r\n            data-active={active ? 'true' : undefined}\r\n        >\r\n            {children ?? (icon ? (\r\n                <Icon\r\n                    icon={icon}\r\n                    size={iconSize}\r\n                    className={BUTTON_SHARED_STYLES.icon}\r\n                />\r\n            ) : null)}\r\n        </button>\r\n    )\r\n}\r\n\r\nIconButton.displayName = 'IconButton'\r\n\r\nexport default IconButton\r\n"],"names":["IconButton","variant","color","size","ICON_BUTTON_SIZES","className","icon","children","active","margin","marginTop","marginRight","marginBottom","marginLeft","width","alignSelf","style","ref","props","iconSize","ICON_BUTTON_SIZE_TO_ICON_SIZE","jsx","cn","ICON_BUTTON_STYLES","getButtonLayoutClassName","Icon","BUTTON_SHARED_STYLES"],"mappings":"iZAcMA,EAAkC,CAAC,CACrC,QAAAC,EACA,MAAAC,EACA,KAAAC,EAAOC,EAAAA,kBAAkB,GACzB,UAAAC,EACA,KAAAC,EACA,SAAAC,EACA,OAAAC,EACA,OAAAC,EACA,UAAAC,EACA,YAAAC,EACA,aAAAC,EACA,WAAAC,EACA,MAAAC,EACA,UAAAC,EACA,MAAAC,EACA,IAAAC,EACA,GAAGC,CACP,IAAM,CACF,MAAMC,EAAWC,EAAAA,8BAA8BjB,CAAI,EAEnD,OACIkB,EAAAA,IAAC,SAAA,CACG,IAAAJ,EACA,UAAWK,EAAAA,GACPC,EAAAA,mBAAmB,OAAO,CAAE,QAAAtB,EAAS,MAAAC,EAAO,KAAAC,EAAM,EAClDqB,EAAAA,yBAAyB,CAAE,OAAAf,EAAQ,UAAAC,EAAW,YAAAC,EAAa,aAAAC,EAAc,WAAAC,CAA6B,CAAC,EACvGR,CAAA,EAEJ,MAAO,CAAE,MAAAS,EAAO,UAAAC,EAAW,GAAGC,CAAA,EAC7B,GAAGE,EACJ,cAAaV,EAAS,OAAS,OAE9B,aAAaF,EACVe,EAAAA,IAACI,EAAA,CACG,KAAAnB,EACA,KAAMa,EACN,UAAWO,EAAAA,qBAAqB,IAAA,CAAA,EAEpC,KAAA,CAAA,CAGhB,EAEA1B,EAAW,YAAc"}