w3bdesign/dfweb-v4

View on GitHub
src/hooks/useNavigation.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { usePathname } from "next/navigation";

interface NavigationLink {
  title: string;
  name: string;
  hash: string;
  href: string;
  externalLink: boolean;
}

/**
 * Custom hook for managing navigation state and logic
 * @param {NavigationLink[]} navigationLinks - Array of navigation links
 * @returns {Object} An object containing navigation-related data and functions
 * @property {NavigationLink[]} navigationLinks - The array of navigation links passed to the hook
 * @property {function} isLinkActive - A function that checks if a given link is currently active
 */
export function useNavigation(navigationLinks: NavigationLink[]) {
  const pathname = usePathname();

  const isLinkActive = (href: string) => pathname === href;

  return {
    navigationLinks,
    isLinkActive,
  };
}