website/components/Navbar.tsx
TheClashFruit 6fdc97b98b
All checks were successful
Deploy Website / build (push) Successful in 1m28s
feat: navbar, homepage header
2024-04-21 16:48:51 +02:00

83 lines
1.9 KiB
TypeScript

import styles from '@/styles/Navbar.module.scss';
import Link from 'next/link';
import {
Menu,
Mountain,
X
} from 'lucide-react';
import {
useEffect,
useRef,
useState
} from 'react';
type Props = {
currentPage: string;
}
export default function Navbar({ currentPage }: Props) {
const [ navOpen, setNavOpen ] = useState(false);
const [ scrolled, setScrolled ] = useState(false);
const toggleNav = () => {
setNavOpen(!navOpen);
};
useEffect(() => {
if (navOpen) {
document.body.style.overflow = 'hidden';
} else {
document.body.style.overflow = 'auto';
}
}, [ navOpen ]);
useEffect(() => {
if(window.scrollY <= 10)
setScrolled(false);
else
setScrolled(true);
document.addEventListener('scroll', () => {
if(window.scrollY <= 10)
setScrolled(false);
else
setScrolled(true);
console.log(window.scrollY);
});
}, [ ]);
return (
<nav className={styles.navBar} data-open={navOpen} data-scrolled={scrolled}>
<div className={styles.container}>
<div className={styles.navMain}>
<Mountain />
<button onClick={toggleNav}>
{!navOpen ? <Menu /> : <X />}
</button>
</div>
<div className={styles.navCollapse}>
<ul className={styles.navLinks}>
<li>
<Link href="/" className={currentPage === 'home' ? styles.active : ''}>Home</Link>
</li>
<li>
<Link href="/docs" className={currentPage === 'docs' ? styles.active : ''}>Documentation</Link>
</li>
<li>
<Link href="/servers" className={currentPage === 'servers' ? styles.active : ''}>Servers</Link>
</li>
<li>
<Link href="/blog" className={currentPage === 'blog' ? styles.active : ''}>Blog</Link>
</li>
</ul>
</div>
</div>
</nav>
);
}