3682b7752072d0fb6703800f64494616e3967323
[arvados-workbench2.git] / src / components / icon / icon.tsx
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import * as React from 'react';
6 import * as classnames from "classnames";
7 import CloseAnnouncement from '@material-ui/icons/Announcement';
8 import CloseIcon from '@material-ui/icons/Close';
9 import FolderIcon from '@material-ui/icons/Folder';
10
11 interface IconBaseDataProps {
12     icon: string;
13     className?: string;
14 }
15
16 type IconBaseProps = IconBaseDataProps;
17
18 interface IconBaseState {
19     icon: string;
20 }
21
22 const getSpecificIcon = (props: any) => ({
23     announcement: <CloseAnnouncement className={props.className} />,
24     folder: <FolderIcon className={props.className} />,
25     close: <CloseIcon className={props.className} />,
26     project: <i className={classnames([props.className, 'fas fa-folder fa-lg'])} />,
27     collection: <i className={classnames([props.className, 'fas fa-archive fa-lg'])} />,
28     process: <i className={classnames([props.className, 'fas fa-cogs fa-lg'])} />
29 });
30
31 class IconBase extends React.Component<IconBaseProps, IconBaseState> {
32     state = {
33         icon: '',
34     };
35
36     render() {
37         return getSpecificIcon(this.props)[this.props.icon];
38     }
39 }
40
41 export default IconBase;