import { useState } from "react"; import { useNavigate } from "react-router-dom"; import { motion } from "framer-motion"; import { Eye, EyeOff, Server, Key, User, Lock, AlertCircle, } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/ui/tabs"; import { Alert, AlertDescription } from "@/components/ui/alert"; import { useAuthStore } from "@/stores"; import { LEDLogo } from "@/components/shared/LEDLogo"; import { STORAGE_KEYS } from "@/lib/constants"; export default function LoginPage() { const navigate = useNavigate(); const { login } = useAuthStore(); const [showPassword, setShowPassword] = useState(false); const [loginMode, setLoginMode] = useState("apikey"); const [serverUrl, setServerUrl] = useState( () => (typeof window !== "undefined" ? localStorage.getItem(STORAGE_KEYS.SERVER_URL) || "http://localhost:3000" : "http://localhost:3000") ); const [apiKey, setApiKey] = useState(""); const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const handleLogin = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setError(null); try { // 模拟登录过程 await new Promise((resolve) => setTimeout(resolve, 800)); // 简单验证 if (loginMode === "apikey" && !apiKey.trim()) { throw new Error("请输入 API Key"); } if (loginMode === "password" && (!username.trim() || !password)) { throw new Error("请输入用户名和密码"); } // 创建模拟用户对象 const mockWorker = { id: "1", name: loginMode === "apikey" ? "当前用户" : username, type: "human" as const, status: "online" as const, }; login(mockWorker, apiKey || "demo-token"); navigate("/workbench"); } catch (err) { setError(err instanceof Error ? err.message : "登录失败"); } finally { setLoading(false); } }; return (

列阵工作台

人机协作,效率翻倍

{error && ( {error} )} API Key 密码登录
setServerUrl(e.target.value)} className="h-12 bg-slate-950/50 border-slate-700 text-slate-200 placeholder:text-slate-500 focus:border-cyan-500 focus:ring-cyan-500/20" />
setApiKey(e.target.value)} className="h-12 bg-slate-950/50 border-slate-700 text-slate-200 placeholder:text-slate-500 focus:border-cyan-500 focus:ring-cyan-500/20" />
setUsername(e.target.value)} className="h-12 bg-slate-950/50 border-slate-700 text-slate-200 placeholder:text-slate-500 focus:border-cyan-500 focus:ring-cyan-500/20" />
setPassword(e.target.value)} className="h-12 bg-slate-950/50 border-slate-700 text-slate-200 placeholder:text-slate-500 focus:border-cyan-500 focus:ring-cyan-500/20 pr-12" />

还没有账户?{" "}

); }