"""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)