/** * IncidentTimelineCard - Incident Timeline * ========================================= * Phase 19.4a - GenUI 事件時間軸卡 * * @see ADR-032 GenUI Dynamic Rendering * @author Claude Code (首席架構師) * @version 1.0.0 * @date 2026-03-28 (台北時間) */ import React from 'react' import { AlertCircle, CheckCircle, Clock, XCircle } from 'lucide-react' interface TimelineEvent { timestamp: string type: 'created' | 'updated' | 'resolved' | 'escalated' message: string } interface IncidentTimelineCardProps { data: { incidentId: string status: 'open' | 'investigating' | 'resolved' | 'closed' events: TimelineEvent[] severity?: 'P0' | 'P1' | 'P2' | 'P3' } } export const IncidentTimelineCard: React.FC = ({ data }) => { const statusIcon = { open: , investigating: , resolved: , closed: , } const statusColors = { open: 'border-red-500 text-red-600', investigating: 'border-yellow-500 text-yellow-600', resolved: 'border-green-500 text-green-600', closed: 'border-gray-500 text-gray-600', } return (
{statusIcon[data.status]} Incident // {data.incidentId}
{data.severity && ( {data.severity} )} {data.status}
{data.events.map((event, i) => (
{event.timestamp}
{event.type} {event.message}
))}
) }