import { AlertTriangle, CheckCircle2, Copy, Loader2, MoonStar, Sparkles, XCircle } from "lucide-react"; import type { ReactNode } from "react"; import { cx } from "../utils/classes"; interface EmptyStateProps { title: string; description: string; actionLabel?: string; onAction?: () => void; icon?: ReactNode; } export function EmptyState({ title, description, actionLabel, onAction, icon }: EmptyStateProps) { return (
{title}

{description}

{actionLabel && onAction && ( )}
); } interface LoadingStateProps { label: string; compact?: boolean; } export function LoadingState({ label, compact }: LoadingStateProps) { return (
); } interface ErrorStateProps { title: string; reason?: string; diagnosticId?: string; onRetry?: () => void; compact?: boolean; } export function ErrorState({ title, reason, diagnosticId, onRetry, compact }: ErrorStateProps) { return (
{title} {reason &&

{reason}

} {diagnosticId && } {onRetry && ( )}
); } interface ResultBadgeProps { status: "pending" | "succeeded" | "failed"; label: string; } export function ResultBadge({ status, label }: ResultBadgeProps) { const icon = status === "pending" ? : status === "succeeded" ? : ; return ( {icon} {label} ); } interface DiagnosticSummaryProps { diagnosticId: string; detail?: string; } export function DiagnosticSummary({ diagnosticId, detail }: DiagnosticSummaryProps) { const summary = detail ? `${diagnosticId} ${detail}` : diagnosticId; return ( {diagnosticId} ); }