import React, { type FunctionComponent, createElement } from "react";
import { cn } from "~/lib/utils";
export type RenderIcon =
| FunctionComponent<{ className?: string }>
| React.ReactNode;
export type IconProps = {
icon?: RenderIcon;
className?: string;
};
/** Use this icon to either render a passed in React component, or a NamedIcon/CompanyIcon */
export function Icon(props: IconProps) {
if (!props.icon) return null;
if (typeof props.icon === "function") {
const Icon = props.icon;
return ;
}
if (React.isValidElement(props.icon)) {
return <>{props.icon}>;
}
if (
props.icon &&
typeof props.icon === "object" &&
("type" in props.icon || "$$typeof" in props.icon)
) {
return createElement>(
props.icon as any,
{ className: props.className } as any,
);
}
console.error("Invalid icon", props);
return null;
}
export function IconInBox({
boxClassName,
...props
}: IconProps & { boxClassName?: string }) {
return (
);
}