{"version":3,"file":"IconButton.mjs","sources":["../../../../src/components/AlphaIconButton/IconButton.tsx"],"sourcesContent":["'use client'\n\nimport { forwardRef } from 'react'\n\nimport { isBezierIcon } from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport { type AlphaIconButtonProps } from '~/src/components/AlphaIconButton'\nimport { AlphaLoader } from '~/src/components/AlphaLoader'\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { type ButtonSize } from '~/src/components/Button'\nimport { Icon } from '~/src/components/Icon'\n\nimport styles from './IconButton.module.scss'\n\nfunction getIconSize(size: ButtonSize) {\n  return (\n    {\n      xs: 'xs',\n      s: 'xs',\n      m: 's',\n      l: 's',\n      xl: 'm',\n    } as const\n  )[size]\n}\n\nexport const IconButton = forwardRef<HTMLButtonElement, AlphaIconButtonProps>(\n  function IconButton(\n    {\n      as = BaseButton,\n      color = 'blue',\n      variant = 'primary',\n      size = 'm',\n      active,\n      shape = 'rectangle',\n      content,\n      loading = false,\n      disabled: disabledProp = false,\n      className,\n      ...rest\n    },\n    forwardedRef\n  ) {\n    const Comp = as as typeof BaseButton\n\n    const disabled = loading || disabledProp\n\n    return (\n      <Comp\n        ref={forwardedRef}\n        className={classNames(\n          styles.IconButton,\n          styles[`size-${size}`],\n          styles[`variant-${variant}`],\n          styles[`color-${color}`],\n          styles[`shape-${shape}`],\n          active && styles.active,\n          className\n        )}\n        disabled={disabled}\n        {...rest}\n      >\n        <div\n          className={classNames(\n            styles.ButtonContent,\n            loading && styles.loading\n          )}\n        >\n          {isBezierIcon(content) ? (\n            <Icon\n              size={getIconSize(size)}\n              source={content}\n              className={styles.ButtonIcon}\n            />\n          ) : (\n            content\n          )}\n        </div>\n\n        {loading && (\n          <div\n            className={classNames(\n              styles.ButtonLoader,\n              // NOTE: Loader size is the same as icon size\n              styles[`size-${getIconSize(size)}`]\n            )}\n          >\n            <AlphaLoader\n              size=\"s\"\n              className={styles.Loader}\n              variant={variant === 'primary' ? 'on-overlay' : 'secondary'}\n            />\n          </div>\n        )}\n      </Comp>\n    )\n  }\n)\n"],"names":["getIconSize","size","xs","s","m","l","xl","IconButton","forwardRef","as","BaseButton","color","variant","active","shape","content","loading","disabled","disabledProp","className","rest","forwardedRef","Comp","_jsxs","ref","classNames","styles","children","_jsx","ButtonContent","isBezierIcon","Icon","source","ButtonIcon","ButtonLoader","AlphaLoader","Loader"],"mappings":";;;;;;;;;AAeA,SAASA,WAAWA,CAACC,IAAgB,EAAE;EACrC,OACE;AACEC,IAAAA,EAAE,EAAE,IAAI;AACRC,IAAAA,CAAC,EAAE,IAAI;AACPC,IAAAA,CAAC,EAAE,GAAG;AACNC,IAAAA,CAAC,EAAE,GAAG;AACNC,IAAAA,EAAE,EAAE;GACL,CACDL,IAAI,CAAC;AACT;MAEaM,UAAU,gBAAGC,UAAU,CAClC,SAASD,UAAUA,CACjB;AACEE,EAAAA,EAAE,GAAGC,UAAU;AACfC,EAAAA,KAAK,GAAG,MAAM;AACdC,EAAAA,OAAO,GAAG,SAAS;AACnBX,EAAAA,IAAI,GAAG,GAAG;EACVY,MAAM;AACNC,EAAAA,KAAK,GAAG,WAAW;EACnBC,OAAO;AACPC,EAAAA,OAAO,GAAG,KAAK;EACfC,QAAQ,EAAEC,YAAY,GAAG,KAAK;EAC9BC,SAAS;EACT,GAAGC;AACL,CAAC,EACDC,YAAY,EACZ;EACA,MAAMC,IAAI,GAAGb,EAAuB;AAEpC,EAAA,MAAMQ,QAAQ,GAAGD,OAAO,IAAIE,YAAY;EAExC,oBACEK,IAAA,CAACD,IAAI,EAAA;AACHE,IAAAA,GAAG,EAAEH,YAAa;AAClBF,IAAAA,SAAS,EAAEM,UAAU,CACnBC,MAAM,CAACnB,UAAU,EACjBmB,MAAM,CAAC,QAAQzB,IAAI,CAAA,CAAE,CAAC,EACtByB,MAAM,CAAC,CAAWd,QAAAA,EAAAA,OAAO,EAAE,CAAC,EAC5Bc,MAAM,CAAC,SAASf,KAAK,CAAA,CAAE,CAAC,EACxBe,MAAM,CAAC,CAASZ,MAAAA,EAAAA,KAAK,EAAE,CAAC,EACxBD,MAAM,IAAIa,MAAM,CAACb,MAAM,EACvBM,SACF,CAAE;AACFF,IAAAA,QAAQ,EAAEA,QAAS;AAAA,IAAA,GACfG,IAAI;AAAAO,IAAAA,QAAA,gBAERC,GAAA,CAAA,KAAA,EAAA;AACET,MAAAA,SAAS,EAAEM,UAAU,CACnBC,MAAM,CAACG,aAAa,EACpBb,OAAO,IAAIU,MAAM,CAACV,OACpB,CAAE;MAAAW,QAAA,EAEDG,YAAY,CAACf,OAAO,CAAC,gBACpBa,GAAA,CAACG,IAAI,EAAA;AACH9B,QAAAA,IAAI,EAAED,WAAW,CAACC,IAAI,CAAE;AACxB+B,QAAAA,MAAM,EAAEjB,OAAQ;QAChBI,SAAS,EAAEO,MAAM,CAACO;AAAW,OAC9B,CAAC,GAEFlB;AACD,KACE,CAAC,EAELC,OAAO,iBACNY,GAAA,CAAA,KAAA,EAAA;AACET,MAAAA,SAAS,EAAEM,UAAU,CACnBC,MAAM,CAACQ,YAAY;AACnB;MACAR,MAAM,CAAC,QAAQ1B,WAAW,CAACC,IAAI,CAAC,CAAA,CAAE,CACpC,CAAE;MAAA0B,QAAA,eAEFC,GAAA,CAACO,MAAW,EAAA;AACVlC,QAAAA,IAAI,EAAC,GAAG;QACRkB,SAAS,EAAEO,MAAM,CAACU,MAAO;AACzBxB,QAAAA,OAAO,EAAEA,OAAO,KAAK,SAAS,GAAG,YAAY,GAAG;OACjD;AAAC,KACC,CACN;AAAA,GACG,CAAC;AAEX,CACF;;;;"}