import Icon from "@/Components/Icons/Icon"; import Spinner from "@/Components/Icons/Spinner"; import useLoading from "@/Hooks/useLoading"; export type AsyncIconProps = React.HTMLProps & { iconName: string; iconSize?: number; onClick?: (e: React.MouseEvent) => Promise | void; }; export function AsyncIcon(props: AsyncIconProps) { const { loading, handle } = useLoading(props.onClick, props.disabled); const mergedProps = { ...props } as Record; delete mergedProps["iconName"]; delete mergedProps["iconSize"]; delete mergedProps["loading"]; return (
{loading ? : } {props.children}
); }