"use client" import NextLink from "next/link" import { usePathname } from "next/navigation" import { useEffect } from "react" import { trackClick } from "@/utils/tracking" import { linkVariants } from "./variants" import type { LinkProps } from "./link" export default function Link({ className, color, href, partialMatch = false, textDecoration, size, scroll = true, prefetch, variant, trackingId, ...props }: LinkProps) { const currentPageSlug = usePathname() let isActive = currentPageSlug === href if (partialMatch && !isActive) { isActive = currentPageSlug === href } const classNames = linkVariants({ active: isActive, className, textDecoration, color, size, variant, }) useEffect(() => { if (trackingId) { document .getElementById(trackingId) ?.addEventListener("click", () => trackClick(trackingId)) return () => { document .getElementById(trackingId) ?.removeEventListener("click", () => trackClick(trackingId)) } } }, [trackingId]) return ( ) }