active-link.tsx"use client";
import Link, { type LinkProps } from "next/link";
import { usePathname } from "next/navigation";
import { twMerge } from "tailwind-merge"; // can swap with shadcn `cn` util
type ActiveLinkProps = LinkProps &
React.ComponentProps<"a"> & {
activeClassName?: string;
};
export const ActiveLink = ({
className,
activeClassName,
href,
...props
}: ActiveLinkProps) => {
const pathname = usePathname();
const isActive = pathname === href;
return (
<Link
href={href}
className={twMerge(className, isActive && activeClassName)}
{...props}
/>
);
};
ActiveLink.displayName = "ActiveLink";