27 lines
751 B
TypeScript
27 lines
751 B
TypeScript
/**
|
|
* Icon: abstract icon class that can render icons from multiple sets.
|
|
* @module soapbox/components/icon
|
|
* @see soapbox/components/fork_awesome_icon
|
|
* @see soapbox/components/svg_icon
|
|
*/
|
|
|
|
import React from 'react';
|
|
|
|
import ForkAwesomeIcon, { IForkAwesomeIcon } from './fork-awesome-icon';
|
|
import SvgIcon, { ISvgIcon } from './svg-icon';
|
|
|
|
export type IIcon = IForkAwesomeIcon | ISvgIcon;
|
|
|
|
const Icon: React.FC<IIcon> = (props) => {
|
|
if ((props as ISvgIcon).src) {
|
|
const { src, ...rest } = (props as ISvgIcon);
|
|
|
|
return <SvgIcon src={src} {...rest} />;
|
|
} else {
|
|
const { id, fixedWidth, ...rest } = (props as IForkAwesomeIcon);
|
|
|
|
return <ForkAwesomeIcon id={id} fixedWidth={fixedWidth} {...rest} />;
|
|
}
|
|
};
|
|
|
|
export default Icon;
|