"use client"; import Link from "next/link"; import { usePathname } from "next/navigation"; import { useEffect, useState } from "react"; import { FileText, PenSquare, MessageSquare, Trash2, Rss, Link2, MessageCircle, Image, Menu, X, Bot, LogOut, Users } from "lucide-react"; import ThemeToggle from "./ThemeToggle"; const navItems = [ { href: "/", label: "文章", icon: FileText, roles: ["admin", "user"] }, { href: "/edit", label: "撰写", icon: PenSquare, roles: ["admin", "user"] }, { href: "/comments", label: "评论", icon: MessageSquare, roles: ["admin", "user"] }, { href: "/feeds", label: "订阅源", icon: Rss, roles: ["admin"] }, { href: "/links", label: "友链", icon: Link2, roles: ["admin"] }, { href: "/images", label: "图片", icon: Image, roles: ["admin", "user"] }, { href: "/wechat", label: "公众号", icon: MessageCircle, roles: ["admin"] }, { href: "/recycle", label: "回收站", icon: Trash2, roles: ["admin", "user"] }, { href: "/bot", label: "Bot", icon: Bot, roles: ["admin"] }, ]; export default function Sidebar() { const pathname = usePathname(); const [open, setOpen] = useState(false); const [isAdmin, setIsAdmin] = useState(false); const [userRole, setUserRole] = useState("user"); useEffect(() => { setOpen(false); }, [pathname]); useEffect(() => { try { const u = JSON.parse(localStorage.getItem("wauth_user") || "{}"); setIsAdmin(u.role === "admin"); setUserRole(u.role || "user"); } catch {} }, []); useEffect(() => { if (!open) return; const original = document.body.style.overflow; document.body.style.overflow = "hidden"; return () => { document.body.style.overflow = original; }; }, [open]); const isActive = (href: string) => { if (href === "/") return pathname === "/"; return pathname.startsWith(href); }; return ( <>
{"\u5199\u4f5c\u540e\u53f0"}
{open && (
setOpen(false)} aria-hidden /> )} ); }