-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSidebar.jsx
49 lines (42 loc) · 1.7 KB
/
Sidebar.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import { useState } from 'react';
import { NavLink } from 'react-router-dom';
import { HiOutlineMenu } from 'react-icons/hi';
import { RiCloseLine } from 'react-icons/ri';
import { logo } from '../assets';
import { links } from '../assets/constants';
const NavLinks = ({ handleClick }) => (
<div>
{links.map((item) => (
<NavLink
className="flex flex-row justify-start items-center my-8 text-sm font-medium text-gray-400 hover:text-cyan-400"
key={item.name}
to={item.to}
onClick={() => handleClick && handleClick()}
>
<item.icon className="w-6 h-6 mr-2" />
{item.name}
</NavLink>
))}
</div>
);
const Sidebar = () => {
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
return (
<>
<div className="md:flex hidden flex-col w-[240px] py-10 px-4 bg-[#191624]">
<img src={logo} alt="logo" className="w-full h-14 object-contain" />
<NavLinks />
</div>
<div className="absolute md:hidden block top-6 right-3">
{mobileMenuOpen ? (
<RiCloseLine className="w-6 h-6 text-white mr-2" onClick={() => setMobileMenuOpen(false)} />
) : <HiOutlineMenu className="w-6 h-6 text-white mr-2" onClick={() => setMobileMenuOpen(true)} />}
</div>
<div className={`absolute top-0 h-screen w-2/3 bg-gradient-to-tl from-white/10 to-[#483d8b] backdropbackdrop-blur-lg z-10 p-6 md:hidden smooth-transition ${mobileMenuOpen ? 'left-0' : '-left-full'}`}>
<img src={logo} alt="logo" className="w-full h-14 object-contain" />
<NavLinks handleClick={() => setMobileMenuOpen(false)} />
</div>
</>
);
};
export default Sidebar;