import React, { memo, forwardRef } from 'react';
import { useToken, usePropsResolution } from '../../../hooks';
import type { IIconProps } from './types';
import SVGIcon from './SVGIcon';
import { Factory } from '../../../factory';
import { useHasResponsiveProps } from '../../../hooks/useHasResponsiveProps';
const Icon = (props: IIconProps, ref?: any) => {
const { as, size, ...resolvedProps } = usePropsResolution('Icon', props);
const tokenizedFontSize = useToken('space', size);
//TODO: refactor for responsive prop
if (useHasResponsiveProps(props)) {
return null;
}
if (!as) {
return ;
}
const isJSX = React.isValidElement(as);
const StyledAs = Factory(
isJSX
? (resolvedProps) =>
React.cloneElement(as, {
...resolvedProps,
//@ts-ignore
...as.props,
})
: as
);
return (
);
};
export default memo(forwardRef(Icon));