"use client" import { ArrowUpRight, ChevronDown, ChevronUp } from "lucide-react" import Link from "next/link" import Image from "next/image" import Search from "@/components/SearchBox" import Anchor from "@/components/anchor" import { Separator } from "@/components/ui/separator" import docuConfig from "@/docu.json" import { Button } from "@/components/ui/button" import { useState, useCallback } from "react" import { motion, AnimatePresence } from "framer-motion" import { ModeToggle } from "@/components/ThemeToggle" interface NavbarProps { id?: string } export function Navbar({ id }: NavbarProps) { const [isMenuOpen, setIsMenuOpen] = useState(false) const toggleMenu = useCallback(() => { setIsMenuOpen((prev) => !prev) }, []) return (
{isMenuOpen && (
    setIsMenuOpen(false)} />
)}
) } export function Logo() { const { navbar } = docuConfig return (
{navbar.logo.alt}

{navbar.logoText}

) } // Desktop NavMenu — horizontal list export function NavMenu() { const { navbar } = docuConfig return ( <> {navbar?.menu?.map((item) => { const isExternal = item.href.startsWith("http") return ( {item.title} {isExternal && } ) })} ) } // Mobile Collapsible NavMenu — vertical list items function NavMenuCollapsible({ onItemClick }: { onItemClick: () => void }) { const { navbar } = docuConfig return ( <> {navbar?.menu?.map((item) => { const isExternal = item.href.startsWith("http") return (
  • {item.title} {isExternal && }
  • ) })} ) }