heartwood every commit a ring
1.3 KB raw
import React, { useState, useEffect } from "react";
import PropTypes from "prop-types";
import styles from "@styles/components/sidebar.module.css";
import Link from "next/link";
import { withRouter } from "next/router";

const Sidebar = ({ router }) => {
  const [current, setCurrent] = useState("000");

  useEffect(() => {
    const handleRouteChange = (url) => {
      switch (url) {
        case "/":
          setCurrent("000");
          break;
        case "/about":
          setCurrent("001");
          break;
        case "/code":
          setCurrent("002");
          break;
        case "/art":
          setCurrent("003");
          break;
        case "/contact":
          setCurrent("004");
          break;
      }
    };
    handleRouteChange(router.pathname);
    router.events.on("routeChangeComplete", handleRouteChange);
    return () => {
      router.events.off("routeChangeComplete", handleRouteChange);
    };
  }, []);

  return (
    <nav className={styles.nav}>
      <Link href="/" className={styles.navLogo} aria-label="Back to home">
        <span aria-hidden="true" />
      </Link>
      <Link href="/contact" className={styles.navContact}>
        Get in touch
      </Link>
      <div className={styles.navCurrent}>{current}</div>
    </nav>
  );
};

Sidebar.propTypes = {
  router: PropTypes.object,
};

export default withRouter(Sidebar);