| import * as React from 'react'; |
| import { Tooltip } from 'antd'; |
| import classNames from 'classnames'; |
| import * as AntdIcons from '@ant-design/icons'; |
| import type { ThemeType } from './index'; |
| import styles from './style.less'; |
| |
| const allIcons: { |
| [key: string]: any; |
| } = AntdIcons; |
| |
| export interface CopyableIconProps { |
| name: string; |
| isNew: boolean; |
| theme: ThemeType; |
| justCopied: string | null; |
| onSelect: (type: string, text: string) => any; |
| } |
| |
| const CopyableIcon: React.FC<CopyableIconProps> = ({ |
| name, |
| justCopied, |
| onSelect, |
| theme, |
| }) => { |
| const className = classNames({ |
| copied: justCopied === name, |
| [theme]: !!theme, |
| |
| }); |
| return ( |
| <li className={className} |
| onClick={() => { |
| if (onSelect) { |
| onSelect(theme, name); |
| } |
| }}> |
| <Tooltip title={name}> |
| {React.createElement(allIcons[name], { className: styles.anticon })} |
| </Tooltip> |
| {/* <span className={styles.anticonClass}> |
| <Badge dot={isNew}>{name}</Badge> |
| </span> */} |
| </li> |
| ); |
| }; |
| |
| export default CopyableIcon; |