1
0
Fork 1
mirror of https://github.com/SomboChea/ui synced 2024-06-16 16:29:42 +07:00
verdaccio-ui/src/webui/components/Icon/index.js

62 lines
1.5 KiB
JavaScript
Raw Normal View History

2019-02-03 17:23:33 +07:00
/**
* @prettier
* @flow
*/
import React from 'react';
import type { Node } from 'react';
import capitalize from 'lodash/capitalize';
import { Svg, Img, ImgWrapper } from './styles';
import { IProps, IIconsMap } from './types';
import brazil from './img/brazil.svg';
import china from './img/china.svg';
import india from './img/india.svg';
import nicaragua from './img/nicaragua.svg';
import pakistan from './img/pakistan.svg';
import austria from './img/austria.svg';
import spain from './img/spain.svg';
import earth from './img/earth.svg';
import verdaccio from './img/verdaccio.svg';
2019-03-28 05:39:06 +07:00
import filebinary from './img/filebinary.svg';
import law from './img/law.svg';
2019-02-03 17:23:33 +07:00
import license from './img/license.svg';
import time from './img/time.svg';
2019-03-28 05:39:06 +07:00
import version from './img/version.svg';
2019-02-03 17:23:33 +07:00
export const Icons: $Shape<IIconsMap> = {
// flags
brazil,
spain,
china,
nicaragua,
pakistan,
india,
austria,
earth,
verdaccio,
2019-03-28 05:39:06 +07:00
// other icons
filebinary,
law,
2019-02-03 17:23:33 +07:00
license,
time,
2019-03-28 05:39:06 +07:00
version,
2019-02-03 17:23:33 +07:00
};
const Icon = ({ className, name, size = 'sm', img = false, pointer = false, ...props }: IProps): Node => {
const title = capitalize(name);
return img ? (
<ImgWrapper className={className} pointer={pointer} size={size} title={title} {...props}>
<Img alt={title} src={Icons[name]} />
</ImgWrapper>
) : (
<Svg className={className} pointer={pointer} size={size} {...props}>
<title>{title}</title>
<use xlinkHref={`${Icons[name]}#${name}`} />
</Svg>
);
};
export default Icon;