{"version":3,"file":"index.cjs","names":[],"sources":["../../../src/components/IconButton/IconButton.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { ButtonHTMLAttributes, forwardRef, ReactNode } from \"react\";\n\ntype IconButtonVariant = \"primary\" | \"secondary\" | \"tertiary\";\ntype IconButtonSize =\n  | \"3-extra-small\"\n  | \"2-extra-small\"\n  | \"extra-small\"\n  | \"small\"\n  | \"medium\"\n  | \"large\";\ntype IconButtonShape = \"square\" | \"circle\";\ntype IconButtonAppearance = \"normal\" | \"destructive\";\n\nexport interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n  icon: ReactNode;\n  variant?: IconButtonVariant;\n  size?: IconButtonSize;\n  shape?: IconButtonShape;\n  className?: string;\n  appearance?: IconButtonAppearance;\n}\n\nconst normalIconButtonVariants = {\n  primary: \"openui-icon-button-primary\",\n  secondary: \"openui-icon-button-secondary\",\n  tertiary: \"openui-icon-button-tertiary\",\n} as const;\n\nconst destructiveIconButtonVariants = {\n  primary: \"openui-icon-button-destructive-primary\",\n  secondary: \"openui-icon-button-destructive-secondary\",\n  tertiary: \"openui-icon-button-destructive-tertiary\",\n} as const;\n\nconst iconButtonSizes = {\n  \"3-extra-small\": \"openui-icon-button-3-extra-small\",\n  \"2-extra-small\": \"openui-icon-button-2-extra-small\",\n  \"extra-small\": \"openui-icon-button-extra-small\",\n  small: \"openui-icon-button-small\",\n  medium: \"openui-icon-button-medium\",\n  large: \"openui-icon-button-large\",\n} as const;\n\nconst iconButtonShapes = {\n  square: \"openui-icon-button-square\",\n  circle: \"openui-icon-button-circle\",\n} as const;\n\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>((props, ref) => {\n  const {\n    className,\n    icon,\n    variant = \"primary\",\n    size = \"medium\",\n    shape = \"square\",\n    appearance = \"normal\",\n    ...rest\n  } = props;\n\n  const iconButtonVariants =\n    appearance === \"normal\" ? normalIconButtonVariants : destructiveIconButtonVariants;\n\n  return (\n    <button\n      ref={ref}\n      className={clsx(\n        \"openui-icon-button\",\n        iconButtonVariants[variant],\n        iconButtonSizes[size],\n        iconButtonShapes[shape],\n        className,\n      )}\n      {...rest}\n    >\n      {icon && <span className=\"openui-icon-button-icon\">{icon}</span>}\n    </button>\n  );\n});\n\nIconButton.displayName = \"IconButton\";\n"],"mappings":";;;;;;;AAuBA,MAAM,2BAA2B;CAC/B,SAAS;CACT,WAAW;CACX,UAAU;CACX;AAED,MAAM,gCAAgC;CACpC,SAAS;CACT,WAAW;CACX,UAAU;CACX;AAED,MAAM,kBAAkB;CACtB,iBAAiB;CACjB,iBAAiB;CACjB,eAAe;CACf,OAAO;CACP,QAAQ;CACR,OAAO;CACR;AAED,MAAM,mBAAmB;CACvB,QAAQ;CACR,QAAQ;CACT;AAED,MAAa,cAAA,GAAA,MAAA,aAA6D,OAAO,QAAQ;CACvF,MAAM,EACJ,WACA,MACA,UAAU,WACV,OAAO,UACP,QAAQ,UACR,aAAa,UACb,GAAG,SACD;AAKJ,QACE,iBAAA,GAAA,kBAAA,KAAC,UAAD;EACO;EACL,YAAA,GAAA,KAAA,SACE,uBANJ,eAAe,WAAW,2BAA2B,+BAO9B,UACnB,gBAAgB,OAChB,iBAAiB,QACjB,UACD;EACD,GAAI;YAEH,QAAQ,iBAAA,GAAA,kBAAA,KAAC,QAAD;GAAM,WAAU;aAA2B;GAAY,CAAA;EACzD,CAAA;EAEX;AAEF,WAAW,cAAc"}