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));