"use client"; import { useState, useEffect } from "react"; import { usePathname, useRouter } from "next/navigation"; import Link from "next/link"; import { Book, ChevronRight, FileText, MessageSquare, LogOut, Menu, Search, User, } from "lucide-react"; import Breadcrumb from "@/components/ui/breadcrumb"; import { cn } from "@/lib/utils"; type NavigationItem = { name: string; icon: React.ComponentType<{ className?: string }>; href?: string; children?: Array<{ name: string; href: string; }>; }; export default function DashboardLayout({ children, }: { children: React.ReactNode; }) { const router = useRouter(); const pathname = usePathname(); const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); const [isDocProcessingOpen, setIsDocProcessingOpen] = useState( pathname.startsWith("/dashboard/doc-processing") ); useEffect(() => { const token = localStorage.getItem("token"); if (!token) { router.push("/login"); } }, [router]); const handleLogout = () => { localStorage.removeItem("token"); router.push("/login"); }; useEffect(() => { if (pathname.startsWith("/dashboard/doc-processing")) { setIsDocProcessingOpen(true); } }, [pathname]); const navigation: NavigationItem[] = [ { name: "知识库", href: "/dashboard/knowledge", icon: Book }, { name: "对话", href: "/dashboard/chat", icon: MessageSquare }, { name: "文档处理", icon: FileText, children: [ { name: "需求提取", href: "/dashboard/doc-processing/extract" }, { name: "测试用例生成", href: "/dashboard/doc-processing/test-case-gen", }, ], }, { name: "一致性分析", href: "/dashboard/consistency-analysis", icon: Search, }, { name: "API 密钥", href: "/dashboard/api-keys", icon: User }, ]; return (
{/* Mobile menu button */}
{/* Sidebar */}
{/* Sidebar header */}
标志 RAG 知识助手
{/* Navigation */} {/* User profile and logout */}
{/* Main content */}
{children}
); } export const dashboardConfig = { mainNav: [], sidebarNav: [ { title: "知识库", href: "/dashboard/knowledge", icon: "database", }, { title: "对话", href: "/dashboard/chat", icon: "messageSquare", }, { title: "文档处理", href: "/dashboard/doc-processing/extract", icon: "fileText", }, { title: "一致性分析", href: "/dashboard/consistency-analysis", icon: "search", }, { title: "API 密钥", href: "/dashboard/api-keys", icon: "key", }, ], };