'use client'; import { baseOptions } from '@/lib/layout.shared'; import { cn } from '@/lib/utils'; import { AnimatePresence, motion } from 'framer-motion'; import { MenuIcon, MoonIcon, SunIcon, XIcon } from 'lucide-react'; import { useTheme } from 'next-themes'; import Link from 'next/link'; import { useEffect, useRef, useState } from 'react'; import { FeatureCardContainer } from './feature-card'; import { GithubButton } from './github-button'; import { Logo } from './logo'; import { Button } from './ui/button'; const LINKS = [ { text: 'Home', url: '/', }, { text: 'Pricing', url: '/pricing', }, { text: 'Supporter', url: '/supporter', }, { text: 'Docs', url: '/docs', }, { text: 'Articles', url: '/articles', }, ]; const Navbar = () => { const [isScrolled, setIsScrolled] = useState(false); const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); const navbarRef = useRef(null); const mobileMenuRef = useRef(null); useEffect(() => { const handleScroll = () => { setIsScrolled(window.scrollY > 20); }; window.addEventListener('scroll', handleScroll); return () => window.removeEventListener('scroll', handleScroll); }, []); useEffect(() => { // If click outside of the menu, close it const handleClick = (e: MouseEvent) => { if (isMobileMenuOpen && !navbarRef.current?.contains(e.target as Node)) { setIsMobileMenuOpen(false); } }; window.addEventListener('click', handleClick); return () => window.removeEventListener('click', handleClick); }, [isMobileMenuOpen]); return ( ); }; export default Navbar; function ThemeToggle({ className }: { className?: string }) { const theme = useTheme(); return ( ); }