| import { Loader2 } from "lucide-react"; | |
| import { useLLM } from "../hooks/useLLM"; | |
| export function StatusBar() { | |
| const { status, tps, isGenerating } = useLLM(); | |
| if (status.state === "loading") { | |
| return ( | |
| <div className="flex flex-col items-center gap-2 py-12 text-[#6d6d6d]"> | |
| <Loader2 className="h-8 w-8 animate-spin text-[#5505af]" /> | |
| <p className="text-sm">{status.message ?? "Loading model…"}</p> | |
| {status.progress != null && ( | |
| <div className="w-64 h-2 bg-[#e5e5e5] rounded-full overflow-hidden"> | |
| <div | |
| className="h-full bg-[#5505af]" | |
| style={{ width: `${status.progress}%` }} | |
| /> | |
| </div> | |
| )} | |
| </div> | |
| ); | |
| } | |
| if (status.state === "error") { | |
| return ( | |
| <div className="py-12 text-center text-sm text-red-600"> | |
| Error loading model: {status.error} | |
| </div> | |
| ); | |
| } | |
| if (isGenerating && tps > 0) { | |
| return ( | |
| <div className="text-center text-xs text-[#6d6d6d] py-1"> | |
| {tps} tokens/s | |
| </div> | |
| ); | |
| } | |
| return null; | |
| } | |