import { GeneratedPropTypes } from '../types';
import { SizeType, setSize } from '../utils/setSize';
import { generateProps } from 'styled-gen';
import React from 'react';
// @ts-ignore: generated file
import icons from '../icons/ui';
import styled from 'styled-components';
const renderPaths = (icon: { paths: any }) =>
icon.paths.map((path: any, index: number) => (
));
type IconProps = {
icon: string;
size?: SizeType;
onClick?: () => void;
} & GeneratedPropTypes;
type IconSvgProps = {
size?: SizeType;
};
const IconSvg = styled.svg`
fill: currentColor;
flex-shrink: 0;
vertical-align: middle;
${({ size }: IconSvgProps) => !!size && setSize(size)};
${generateProps};
`;
export const Icon: React.FC = props => {
const { icon, onClick, ...otherProps } = props;
const selectedIcon = icons[icon] as any;
if (!selectedIcon) {
console.log(`Icon not found: ${icon}`);
return null;
}
if (!selectedIcon.viewbox) {
console.log(`Viewbox issue with the icon: ${icon}`);
return null;
}
return (
{renderPaths(selectedIcon)}
);
};
Icon.defaultProps = {
size: 1
};