MCPcopy Create free account
hub / github.com/Icecubesaad/OpenLLM-Studio / ModelLibrary

Function ModelLibrary

src/components/ModelLibrary.tsx:9–56  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

7import { LoadingSpinner } from './LoadingSpinner';
8
9export function ModelLibrary() {
10 const { installedModels, isLoading, error, refreshModels } = useModels();
11 const { downloads, downloadModel } = useModelDownload(refreshModels);
12 const { deleteModel, error: deleteError } = useModelDelete(refreshModels);
13
14 if (isLoading) {
15 return (
16 <div className="flex items-center justify-center h-full">
17 <LoadingSpinner size="lg" />
18 </div>
19 );
20 }
21
22 return (
23 <div className="p-8 max-w-7xl mx-auto">
24 <div className="mb-6">
25 <h2 className="text-2xl font-bold text-dark-text mb-2">Browse Models</h2>
26 <p className="text-dark-text-secondary">
27 Discover and download curated AI models optimized for local execution
28 </p>
29 </div>
30
31 {(error || deleteError) && (
32 <div className="mb-6">
33 <ErrorBanner message={error || deleteError || ''} onRetry={refreshModels} />
34 </div>
35 )}
36
37 <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-5">
38 {CURATED_MODELS.map((model) => {
39 const isInstalled = installedModels.some((m) => m.name === model.name);
40 const downloadProgress = downloads.get(model.name);
41
42 return (
43 <ModelCard
44 key={model.name}
45 model={model}
46 isInstalled={isInstalled}
47 downloadProgress={downloadProgress}
48 onDownload={downloadModel}
49 onDelete={deleteModel}
50 />
51 );
52 })}
53 </div>
54 </div>
55 );
56}

Callers

nothing calls this directly

Calls 3

useModelsFunction · 0.90
useModelDownloadFunction · 0.90
useModelDeleteFunction · 0.90

Tested by

no test coverage detected