import { AnchorHTMLAttributes, DetailedHTMLProps, RefAttributes } from "react"; import { twMerge } from "tailwind-merge"; import { ArrowUpRight, LucideProps } from "lucide-react"; type Props = DetailedHTMLProps< AnchorHTMLAttributes, HTMLAnchorElement > & { showArrow?: boolean; arrowSize?: number; arrowProps?: Omit & RefAttributes; strict?: boolean; }; /** * # General Anchor Elements * @className twui-a | twui-anchor * @info use `cancel-link` class name to prevent triggering this link from a child element */ export default function Link({ showArrow, arrowSize = 20, arrowProps, strict, ...props }: Props) { return ( { const target = e.target as HTMLElement; if (target.closest(".cancel-link")) { e.preventDefault(); } props?.onClick?.(e); }} data-strict={strict ? "yes" : undefined} > {props.children} {showArrow && ( )} ); }