main
tsx 28 lines 751 Bytes
Raw
1 import { NavLink as RouterNavLink, NavLinkProps } from "react-router-dom";
2 import { forwardRef } from "react";
3 import { cn } from "@/lib/utils";
4
5 interface NavLinkCompatProps extends Omit<NavLinkProps, "className"> {
6 className?: string;
7 activeClassName?: string;
8 pendingClassName?: string;
9 }
10
11 const NavLink = forwardRef<HTMLAnchorElement, NavLinkCompatProps>(
12 ({ className, activeClassName, pendingClassName, to, ...props }, ref) => {
13 return (
14 <RouterNavLink
15 ref={ref}
16 to={to}
17 className={({ isActive, isPending }) =>
18 cn(className, isActive && activeClassName, isPending && pendingClassName)
19 }
20 {...props}
21 />
22 );
23 },
24 );
25
26 NavLink.displayName = "NavLink";
27
28 export { NavLink };