ashwinR's picture
Upload 75 files
f332108
raw
history blame
1.97 kB
import React, { Component } from "react";
import { Link, useLocation } from "react-router-dom";
import astronautHelmet from "../assets/astronaut-helmet.png";
import deadEye from "../assets/dead-eye.png";
import stack from "../assets/stack.png";
import envelope from "../assets/envelope.png";
import "../styles/nav.css";
export default function Nav() {
const location = useLocation();
const getNavPositionClass = () => {
switch (location.pathname) {
case "/":
return "nav-about";
case "/skills":
return "nav-skills";
case "/projects":
return "nav-projects";
case "/contact":
return "nav-contact";
default:
return "";
}
};
const getPageTitle = () => {
switch (location.pathname) {
case "/":
return "ABOUT";
case "/skills":
return "SKILLS";
case "/projects":
return "PROJECTS";
case "/contact":
return "CONTACT";
default:
return "";
}
};
const navPositionClass = getNavPositionClass();
const pageTitle = getPageTitle();
const isCurrentPage = (navClass) => {
return navClass === navPositionClass;
};
const renderNavLink = (to, imgSrc, altText, navClass) => {
const isCurrent = isCurrentPage(navClass);
const linkClass = isCurrent ? "nav-link current" : "nav-link";
return (
<Link to={to} className={linkClass}>
<img src={imgSrc} alt={altText} />
{isCurrent && <h1 className="page-title">{pageTitle}</h1>}
</Link>
);
};
return (
<nav className={`nav ${navPositionClass}`}>
{renderNavLink(
"/",
astronautHelmet,
"astronaut helmet icon",
"nav-about"
)}
{renderNavLink("/skills", deadEye, "deadEye icon", "nav-skills")}
{renderNavLink("/projects", stack, "stack icon", "nav-projects")}
{renderNavLink("contact", envelope, "envelope icon", "nav-contact")}
</nav>
);
}