import { useState } from 'react' import { NavLink, useNavigate } from 'react-router-dom' import { LayoutDashboard, KeyRound, KeySquare, ScrollText, SlidersHorizontal, Receipt, LogOut, Zap, Menu, X } from 'lucide-react' import { clearToken } from '../api' import { ThemeToggle } from './Theme' const nav = [ { to: '/', label: '仪表盘', icon: LayoutDashboard, end: true }, { to: '/keys', label: 'API Keys', icon: KeyRound, end: false }, { to: '/upstream', label: '上游 Key', icon: KeySquare, end: false }, { to: '/logs', label: '请求日志', icon: ScrollText, end: false }, { to: '/settings', label: '设置', icon: SlidersHorizontal, end: false }, { to: '/billing', label: '计费', icon: Receipt, end: false }, ] function Brand() { return (
) } export default function Layout({ children }: { children: JSX.Element }) { const navigate = useNavigate() const [open, setOpen] = useState(false) const logout = () => { clearToken() navigate('/login', { replace: true }) } return (
{/* 移动端顶栏 */}
Pasl Relay
{/* 移动端遮罩 */} {open &&
setOpen(false)} />} {/* 侧边栏:桌面常驻,移动端抽屉 */}
{children}
) }