import { ReactNode } from "react"; import { Link as LinkRouter } from "react-router-dom"; interface ILinkPropsBase { children?: ReactNode; className?: string; onClick?: () => void; } interface ILinkPropsExternal extends ILinkPropsBase { url: string; newTab?: boolean; } interface ILinkPropsInternal extends ILinkPropsBase { to: string; } type LinkProps = | ILinkPropsExternal | ILinkPropsInternal | ILinkPropsBase; export function Link(props: LinkProps) { const isExternal = !!(props as ILinkPropsExternal).url; const isInternal = !!(props as ILinkPropsInternal).to; const content = ( {props.children} ); if (isExternal) return {content}; else if (isInternal) return ( {content} ); return ( props.onClick && props.onClick()}>{content} ); }