wu981526092's picture
🚀 Deploy AgentGraph: Complete agent monitoring and knowledge graph system
c2ea5ed
import React from "react";
import { ChevronRight } from "lucide-react";
import { useNavigation, BreadcrumbItem } from "@/context/NavigationContext";
import { useAgentGraph } from "@/context/AgentGraphContext";
interface BreadcrumbProps {
items?: BreadcrumbItem[];
className?: string;
}
export function Breadcrumb({ items, className = "" }: BreadcrumbProps) {
const navigation = useNavigation();
const { actions } = useAgentGraph();
const breadcrumbs = items || navigation.state.breadcrumbs;
if (breadcrumbs.length === 0) {
return null;
}
const handleBreadcrumbClick = (item: BreadcrumbItem) => {
if (item.path && !item.active) {
// Navigate based on the path
switch (item.path) {
case "welcome":
actions.setActiveView("welcome");
break;
case "traces":
actions.setActiveView("traces");
break;
case "trace-kg":
actions.setActiveView("trace-kg");
break;
case "kg-visualizer":
actions.setActiveView("kg-visualizer");
break;
case "advanced-processing":
actions.setActiveView("advanced-processing");
break;
case "trace-editor":
actions.setActiveView("trace-editor");
break;
case "temporal-visualizer":
actions.setActiveView("temporal-visualizer");
break;
case "connections":
actions.setActiveView("connections");
break;
case "upload":
actions.setActiveView("upload");
break;
default:
console.log("Navigate to:", item.path);
}
}
};
return (
<nav
className={`flex items-center space-x-1 text-xs text-muted-foreground ${className}`}
>
{breadcrumbs.map((item, index) => (
<div key={index} className="flex items-center">
{index > 0 && (
<ChevronRight className="h-3 w-3 mx-1.5 text-muted-foreground/40" />
)}
<span
className={`px-2 py-1 rounded-md transition-colors ${
item.active || index === breadcrumbs.length - 1
? "text-foreground font-medium bg-muted/50"
: "hover:text-foreground hover:bg-muted/30 cursor-pointer"
}`}
onClick={() => handleBreadcrumbClick(item)}
>
{item.label}
</span>
</div>
))}
</nav>
);
}