{"version":3,"file":"FloatingIconButton.mjs","sources":["../../../../src/components/AlphaFloatingIconButton/FloatingIconButton.tsx"],"sourcesContent":["'use client'\n\nimport { forwardRef } from 'react'\n\nimport { isBezierIcon } from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport { type AlphaFloatingIconButtonProps } from '~/src/components/AlphaFloatingIconButton'\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 './FloatingIconButton.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 FloatingIconButton = forwardRef<\n  HTMLButtonElement,\n  AlphaFloatingIconButtonProps\n>(function FloatingIconButton(\n  {\n    as = BaseButton,\n    color = 'blue',\n    variant = 'primary',\n    size = 'm',\n    active,\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  const disabled = loading || disabledProp\n\n  return (\n    <Comp\n      ref={forwardedRef}\n      className={classNames(\n        styles.FloatingIconButton,\n        styles[`size-${size}`],\n        styles[`variant-${variant}`],\n        styles[`color-${color}`],\n        active && styles.active,\n        className\n      )}\n      disabled={disabled}\n      {...rest}\n    >\n      <div\n        className={classNames(styles.ButtonContent, loading && styles.loading)}\n      >\n        {isBezierIcon(content) ? (\n          <Icon\n            size={getIconSize(size)}\n            source={content}\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"],"names":["getIconSize","size","xs","s","m","l","xl","FloatingIconButton","forwardRef","as","BaseButton","color","variant","active","content","loading","disabled","disabledProp","className","rest","forwardedRef","Comp","_jsxs","ref","classNames","styles","children","_jsx","ButtonContent","isBezierIcon","Icon","source","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,kBAAkB,gBAAGC,UAAU,CAG1C,SAASD,kBAAkBA,CAC3B;AACEE,EAAAA,EAAE,GAAGC,UAAU;AACfC,EAAAA,KAAK,GAAG,MAAM;AACdC,EAAAA,OAAO,GAAG,SAAS;AACnBX,EAAAA,IAAI,GAAG,GAAG;EACVY,MAAM;EACNC,OAAO;AACPC,EAAAA,OAAO,GAAG,KAAK;EACfC,QAAQ,EAAEC,YAAY,GAAG,KAAK;EAC9BC,SAAS;EACT,GAAGC;AACL,CAAC,EACDC,YAAY,EACZ;EACA,MAAMC,IAAI,GAAGZ,EAAuB;AACpC,EAAA,MAAMO,QAAQ,GAAGD,OAAO,IAAIE,YAAY;EAExC,oBACEK,IAAA,CAACD,IAAI,EAAA;AACHE,IAAAA,GAAG,EAAEH,YAAa;AAClBF,IAAAA,SAAS,EAAEM,UAAU,CACnBC,MAAM,CAAClB,kBAAkB,EACzBkB,MAAM,CAAC,QAAQxB,IAAI,CAAA,CAAE,CAAC,EACtBwB,MAAM,CAAC,CAAA,QAAA,EAAWb,OAAO,CAAA,CAAE,CAAC,EAC5Ba,MAAM,CAAC,CAAA,MAAA,EAASd,KAAK,CAAE,CAAA,CAAC,EACxBE,MAAM,IAAIY,MAAM,CAACZ,MAAM,EACvBK,SACF,CAAE;AACFF,IAAAA,QAAQ,EAAEA,QAAS;AAAA,IAAA,GACfG,IAAI;AAAAO,IAAAA,QAAA,gBAERC,GAAA,CAAA,KAAA,EAAA;AACET,MAAAA,SAAS,EAAEM,UAAU,CAACC,MAAM,CAACG,aAAa,EAAEb,OAAO,IAAIU,MAAM,CAACV,OAAO,CAAE;MAAAW,QAAA,EAEtEG,YAAY,CAACf,OAAO,CAAC,gBACpBa,GAAA,CAACG,IAAI,EAAA;AACH7B,QAAAA,IAAI,EAAED,WAAW,CAACC,IAAI,CAAE;AACxB8B,QAAAA,MAAM,EAAEjB;AAAQ,OACjB,CAAC,GAEFA;AACD,KACE,CAAC,EAELC,OAAO,iBACNY,GAAA,CAAA,KAAA,EAAA;AACET,MAAAA,SAAS,EAAEM,UAAU,CACnBC,MAAM,CAACO,YAAY;AACnB;MACAP,MAAM,CAAC,QAAQzB,WAAW,CAACC,IAAI,CAAC,CAAA,CAAE,CACpC,CAAE;MAAAyB,QAAA,eAEFC,GAAA,CAACM,MAAW,EAAA;AACVhC,QAAAA,IAAI,EAAC,GAAG;QACRiB,SAAS,EAAEO,MAAM,CAACS,MAAO;AACzBtB,QAAAA,OAAO,EAAEA,OAAO,KAAK,SAAS,GAAG,YAAY,GAAG;OACjD;AAAC,KACC,CACN;AAAA,GACG,CAAC;AAEX,CAAC;;;;"}