"use client"; import { useState } from "react"; import Link from "next/link"; import { usePathname } from "next/navigation"; import { LayoutDashboard, TrendingUp, Bell, Info, LogIn, UserPlus, ChevronLeft, ChevronRight, Menu, X, Zap } from "lucide-react"; const navItems = [ { href: "/", label: "仪表盘", icon: LayoutDashboard }, { href: "/kline", label: "K线大图", icon: TrendingUp }, { href: "/signals", label: "信号历史", icon: Bell }, { href: "/about", label: "说明", icon: Info }, ]; const authItems = [ { href: "/login", label: "登录", icon: LogIn }, { href: "/register", label: "注册", icon: UserPlus }, ]; export default function Sidebar() { const pathname = usePathname(); const [collapsed, setCollapsed] = useState(false); const [mobileOpen, setMobileOpen] = useState(false); const SidebarContent = ({ mobile = false }: { mobile?: boolean }) => (
{/* Logo */}
{(!collapsed || mobile) && ( Arbitrage
Engine
)}
{/* Nav */} {/* Auth */}
{authItems.map(({ href, label, icon: Icon }) => ( setMobileOpen(false)} className={`flex items-center gap-3 px-3 py-2 rounded-lg text-sm text-slate-500 hover:bg-slate-100 hover:text-slate-800 transition-colors ${collapsed && !mobile ? "justify-center px-0" : ""}`}> {(!collapsed || mobile) && {label}} ))}
{/* Collapse toggle (desktop only) */} {!mobile && ( )}
); return ( <> {/* Desktop sidebar */} {/* Mobile top bar */}
Arbitrage Engine
{/* Mobile drawer */} {mobileOpen && (
setMobileOpen(false)}>
)} ); }