import { | |
UseDynamicSVGImportOptions, | |
useDynamicSVGImport, | |
} from '@/hooks/commonHooks'; | |
interface IconProps extends React.SVGProps<SVGSVGElement> { | |
name: string; | |
onCompleted?: UseDynamicSVGImportOptions['onCompleted']; | |
onError?: UseDynamicSVGImportOptions['onError']; | |
} | |
const SvgIcon: React.FC<IconProps> = ({ | |
name, | |
onCompleted, | |
onError, | |
...rest | |
}): React.ReactNode | null => { | |
const { error, loading, SvgIcon } = useDynamicSVGImport(name, { | |
onCompleted, | |
onError, | |
}); | |
if (error) { | |
return error.message; | |
} | |
if (loading) { | |
return 'Loading...'; | |
} | |
if (SvgIcon) { | |
return <SvgIcon {...rest} />; | |
} | |
return null; | |
}; | |
export default SvgIcon; | |