"""Badge components for status and severity display.""" import gradio as gr def StatusBadge(status: str, status_colors: dict | None = None) -> gr.HTML: """ Render a colored status badge. Args: status: Status text (e.g., "open", "in_progress", "resolved") status_colors: Optional dict mapping status to colors """ default_colors = { "open": "#ef4444", "in_progress": "#f59e0b", "in progress": "#f59e0b", "resolved": "#22c55e", "closed": "#6b7280", } colors = status_colors or default_colors color = colors.get(status.lower(), "#6b7280") html = f''' {status} ''' return gr.HTML(html) def SeverityBadge(severity: str) -> gr.HTML: """ Render a severity badge (P1-P4). Args: severity: Severity level (e.g., "P1", "P2", "P3", "P4") """ severity_colors = { "p1": "#dc2626", "p1 - critical": "#dc2626", "critical": "#dc2626", "p2": "#ea580c", "p2 - high": "#ea580c", "high": "#ea580c", "p3": "#ca8a04", "p3 - medium": "#ca8a04", "medium": "#ca8a04", "p4": "#6b7280", "p4 - low": "#6b7280", "low": "#6b7280", } color = severity_colors.get(severity.lower(), "#6b7280") html = f''' {severity.upper()} ''' return gr.HTML(html)