import React from 'react'; import { cn } from '@/lib/utils'; import { AlertTriangle, Info, XCircle } from 'lucide-react'; /** * 控制台问题列表组件 * 用于展示错误、警告、信息等诊断问题 */ export type IssueSeverity = 'error' | 'warning' | 'info'; export interface Issue { /** 问题唯一标识 */ id: string; /** 严重程度 */ severity: IssueSeverity; /** 问题消息 */ message: string; /** 可选的来源或位置 */ source?: string; } interface IssueListProps { /** 问题列表 */ issues: Issue[]; /** 空状态文案 */ emptyText?: string; /** 额外的 className */ className?: string; /** 问题点击回调 */ onIssueClick?: (issue: Issue) => void; } // 严重程度图标映射 const severityIcons: Record = { error: , warning: , info: , }; // 严重程度背景色映射 const severityBg: Record = { error: 'bg-console-status-error-bg', warning: 'bg-console-status-warning-bg', info: 'bg-console-status-info-bg', }; /** * 问题列表组件 * 用于控制台中展示诊断问题 */ export function IssueList({ issues, emptyText = '暂无问题', className, onIssueClick, }: IssueListProps) { if (issues.length === 0) { return (
{emptyText}
); } return (
    {issues.map((issue) => (
  • onIssueClick?.(issue)} role={onIssueClick ? 'button' : undefined} tabIndex={onIssueClick ? 0 : undefined} > {/* 图标 */} {/* 内容 */}
    {issue.message} {issue.source && ( ({issue.source}) )}
  • ))}
); }