mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-07-14 17:16:09 +00:00
Some checks failed
Unit Tests / unit-tests (3.13) (push) Failing after 15s
Vector IO Integration Tests / test-matrix (3.12, remote::chromadb) (push) Failing after 18s
Vector IO Integration Tests / test-matrix (3.13, remote::pgvector) (push) Failing after 16s
SqlStore Integration Tests / test-postgres (3.13) (push) Failing after 22s
Python Package Build Test / build (3.13) (push) Failing after 20s
Vector IO Integration Tests / test-matrix (3.12, inline::sqlite-vec) (push) Failing after 26s
Unit Tests / unit-tests (3.12) (push) Failing after 22s
Vector IO Integration Tests / test-matrix (3.13, inline::milvus) (push) Failing after 26s
Vector IO Integration Tests / test-matrix (3.12, inline::faiss) (push) Failing after 29s
SqlStore Integration Tests / test-postgres (3.12) (push) Failing after 30s
Test External Providers / test-external-providers (venv) (push) Failing after 24s
Integration Auth Tests / test-matrix (oauth2_token) (push) Failing after 30s
Vector IO Integration Tests / test-matrix (3.13, remote::chromadb) (push) Failing after 26s
Vector IO Integration Tests / test-matrix (3.13, inline::sqlite-vec) (push) Failing after 29s
Vector IO Integration Tests / test-matrix (3.12, inline::milvus) (push) Failing after 31s
Integration Tests / test-matrix (push) Failing after 56s
Vector IO Integration Tests / test-matrix (3.12, remote::pgvector) (push) Failing after 1m1s
Pre-commit / pre-commit (push) Successful in 1m42s
Integration Tests / discover-tests (push) Successful in 3s
Python Package Build Test / build (3.12) (push) Failing after 6s
Vector IO Integration Tests / test-matrix (3.13, inline::faiss) (push) Failing after 12s
# What does this PR do? - Adds two pages to UI - Vector stores - Vector store detail view - Fixed darkmode navbar highlighting - Updated darkmode font color - Updated llama-stack-client package <img width="1916" height="734" alt="Screenshot 2025-07-12 at 11 34 35 PM" src="https://github.com/user-attachments/assets/3f9b6727-ee82-4e6b-9555-2e3ef36d24d2" /> <img width="1912" height="910" alt="Screenshot 2025-07-12 at 11 57 09 PM" src="https://github.com/user-attachments/assets/0c9d3b5e-5592-4dfb-8e04-a57edc9fb406" /> ## Test Plan <!-- Describe the tests you ran to verify your changes with result summaries. *Provide clear instructions so the plan can be easily re-executed.* --> --------- Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
145 lines
3.5 KiB
TypeScript
145 lines
3.5 KiB
TypeScript
import React from "react";
|
|
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
|
import { Skeleton } from "@/components/ui/skeleton";
|
|
|
|
export function DetailLoadingView({ title }: { title: string }) {
|
|
return (
|
|
<>
|
|
<Skeleton className="h-8 w-3/4 mb-6" /> {/* Title Skeleton */}
|
|
<div className="flex flex-col md:flex-row gap-6">
|
|
<div className="flex-grow md:w-2/3 space-y-6">
|
|
{[...Array(2)].map((_, i) => (
|
|
<Card key={`main-skeleton-card-${i}`}>
|
|
<CardHeader>
|
|
<CardTitle>
|
|
<Skeleton className="h-6 w-1/2" />
|
|
</CardTitle>
|
|
</CardHeader>
|
|
<CardContent className="space-y-2">
|
|
<Skeleton className="h-4 w-full" />
|
|
<Skeleton className="h-4 w-full" />
|
|
<Skeleton className="h-4 w-3/4" />
|
|
</CardContent>
|
|
</Card>
|
|
))}
|
|
</div>
|
|
<div className="md:w-1/3">
|
|
<div className="p-4 border rounded-lg shadow-sm bg-white space-y-3">
|
|
<Skeleton className="h-6 w-1/3 mb-3" />{" "}
|
|
{/* Properties Title Skeleton */}
|
|
{[...Array(5)].map((_, i) => (
|
|
<div key={`prop-skeleton-${i}`} className="space-y-1">
|
|
<Skeleton className="h-4 w-1/4" />
|
|
<Skeleton className="h-4 w-1/2" />
|
|
</div>
|
|
))}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</>
|
|
);
|
|
}
|
|
|
|
export function DetailErrorView({
|
|
title,
|
|
id,
|
|
error,
|
|
}: {
|
|
title: string;
|
|
id: string;
|
|
error: Error;
|
|
}) {
|
|
return (
|
|
<>
|
|
<h1 className="text-2xl font-bold mb-6">{title}</h1>
|
|
<p>
|
|
Error loading details for ID {id}: {error.message}
|
|
</p>
|
|
</>
|
|
);
|
|
}
|
|
|
|
export function DetailNotFoundView({
|
|
title,
|
|
id,
|
|
}: {
|
|
title: string;
|
|
id: string;
|
|
}) {
|
|
return (
|
|
<>
|
|
<h1 className="text-2xl font-bold mb-6">{title}</h1>
|
|
<p>No details found for ID: {id}.</p>
|
|
</>
|
|
);
|
|
}
|
|
|
|
export interface PropertyItemProps {
|
|
label: string;
|
|
value: React.ReactNode;
|
|
className?: string;
|
|
hasBorder?: boolean;
|
|
}
|
|
|
|
export function PropertyItem({
|
|
label,
|
|
value,
|
|
className = "",
|
|
hasBorder = false,
|
|
}: PropertyItemProps) {
|
|
return (
|
|
<li
|
|
className={`${hasBorder ? "pt-1 mt-1 border-t border-gray-200" : ""} ${className}`}
|
|
>
|
|
<strong>{label}:</strong>{" "}
|
|
{typeof value === "string" || typeof value === "number" ? (
|
|
<span className="text-gray-900 dark:text-gray-100 font-medium">
|
|
{value}
|
|
</span>
|
|
) : (
|
|
value
|
|
)}
|
|
</li>
|
|
);
|
|
}
|
|
|
|
export interface PropertiesCardProps {
|
|
children: React.ReactNode;
|
|
}
|
|
|
|
export function PropertiesCard({ children }: PropertiesCardProps) {
|
|
return (
|
|
<Card>
|
|
<CardHeader>
|
|
<CardTitle>Properties</CardTitle>
|
|
</CardHeader>
|
|
<CardContent>
|
|
<ul className="space-y-2 text-sm text-gray-600 dark:text-gray-400">
|
|
{children}
|
|
</ul>
|
|
</CardContent>
|
|
</Card>
|
|
);
|
|
}
|
|
|
|
export interface DetailLayoutProps {
|
|
title: string;
|
|
mainContent: React.ReactNode;
|
|
sidebar: React.ReactNode;
|
|
}
|
|
|
|
export function DetailLayout({
|
|
title,
|
|
mainContent,
|
|
sidebar,
|
|
}: DetailLayoutProps) {
|
|
return (
|
|
<>
|
|
<h1 className="text-2xl font-bold mb-6">{title}</h1>
|
|
<div className="flex flex-col md:flex-row gap-6">
|
|
<div className="flex-grow md:w-2/3 space-y-6">{mainContent}</div>
|
|
<div className="md:w-1/3">{sidebar}</div>
|
|
</div>
|
|
</>
|
|
);
|
|
}
|