Newer
Older
import React from "react";
import Image from "next/image";
import Link from "next/link";
import classNames from "classnames";
import { ChartBarIcon, GlobeIcon } from "@heroicons/react/outline";
function Sidebar({ active }) {
<div className="w-64 min-w-[16rem] dark:text-white">
{/* Sidebar Head */}
<span className="flex justify-center items-center mt-5" id="crypto-logo">
<Image
className=""
src="/crypto_logo.png"
height="100%"
objectFit="contain"
alt="CryptoMetrics-logo-large"
priority={true}
/>
</span>
{/* Sidebar Navigation */}
<div className="flex flex-col overflow-x-hidden flex-grow">
<nav className="ml-1 my-8 cursor-pointer px-2">
<SidebarItem
title="Home"
icon={<GlobeIcon className="w-6 h-6" />}
to="/"
active={active === "home"}
/>
<SidebarItem
title="Compare"
icon={<ChartBarIcon className="w-6 h-6" />}
to="/compare"
active={active === "compare"}
/>
</nav>
</div>
</div>
);
}
function SidebarItem({ title, icon, active, to }) {
return (
<Link href={to} passHref>
<a
className={classNames(
`flex items-center h-[56px] rounded-xl whitespace-nowrap font-semibold mx-2 px-4 transition-all duration-200 text-gray-500 dark:text-gray-300 select-none hover:bg-gray-100 hover:bg-opacity-40 my-1 dark:bg-dark-800 dark:hover:bg-dark-700 dark:hover:text-gray-200`,
{
"text-blue-600 dark:text-blue-600 hover:dark:text-blue-600 bg-gray-200 bg-opacity-40 dark:bg-dark-700 border-2 border-blue-500":
active,
}
)}
>
<div className="relative flex justify-center items-center flex-shrink-0 text-[0]">
{icon}
</div>
<div className="ml-4">{title}</div>
</a>
</Link>
);
}
export default Sidebar;