'use client'; import { useState } from 'react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faBars, faXmark, faHouse, faNewspaper, faFileLines, faUser, faEnvelope, faLocationDot, faPenNib, faTags, faServer, faMicrochip, faBarsStaggered } from '@fortawesome/free-solid-svg-icons'; import Link from 'next/link'; export type IconKey = | 'home' | 'blog' | 'file' | 'user' | 'contact' | 'location' | 'pen' | 'tags' | 'server' | 'device' | 'menu'; const ICON_MAP: Record = { home: faHouse, blog: faNewspaper, file: faFileLines, user: faUser, contact: faEnvelope, location: faLocationDot, pen: faPenNib, tags: faTags, server: faServer, device: faMicrochip, menu: faBarsStaggered }; export interface NavLinkItem { key: string; href: string; label?: string; iconKey: IconKey; } interface NavMenuProps { items: NavLinkItem[]; } export function NavMenu({ items }: NavMenuProps) { const [open, setOpen] = useState(false); const toggle = () => setOpen((val) => !val); const close = () => setOpen(false); return (
); }