"use client"; import { MessageSquareText, MessagesSquare, MoveUpRight, Database, MessageCircle, Settings2, Compass, } from "lucide-react"; import Link from "next/link"; import { usePathname } from "next/navigation"; import { cn } from "@/lib/utils"; import { Sidebar, SidebarContent, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarHeader, } from "@/components/ui/sidebar"; const createItems = [ { title: "Chat Playground", url: "/chat-playground", icon: MessageCircle, }, ]; const manageItems = [ { title: "Chat Completions", url: "/logs/chat-completions", icon: MessageSquareText, }, { title: "Responses", url: "/logs/responses", icon: MessagesSquare, }, { title: "Vector Stores", url: "/logs/vector-stores", icon: Database, }, { title: "Documentation", url: "https://llama-stack.readthedocs.io/en/latest/references/api_reference/index.html", icon: MoveUpRight, }, ]; const optimizeItems: { title: string; url: string; icon: React.ElementType }[] = [ { title: "Evaluations", url: "", icon: Compass, }, { title: "Fine-tuning", url: "", icon: Settings2, }, ]; interface SidebarItem { title: string; url: string; icon: React.ElementType; } export function AppSidebar() { const pathname = usePathname(); const renderSidebarItems = (items: SidebarItem[]) => { return items.map(item => { const isActive = pathname.startsWith(item.url); return ( {item.title} ); }); }; return ( Llama Stack Create {renderSidebarItems(createItems)} Manage {renderSidebarItems(manageItems)} Optimize {optimizeItems.map(item => ( {item.title} (Coming Soon) ))} ); }