aios-core
Version:
Synkra AIOS: AI-Orchestrated System for Full Stack Development - Core Framework
46 lines (39 loc) • 1.37 kB
JSX
import React from 'react';
import './StatusBadge.css';
const STATUS_CONFIG = {
healthy: { label: 'Healthy', icon: '\u2713' },
degraded: { label: 'Degraded', icon: '\u26A0' },
warning: { label: 'Warning', icon: '\u26A0' },
critical: { label: 'Critical', icon: '\u2717' },
passed: { label: 'Passed', icon: '\u2713' },
failed: { label: 'Failed', icon: '\u2717' },
skipped: { label: 'Skipped', icon: '-' }
};
const SEVERITY_CONFIG = {
CRITICAL: { label: 'Critical', priority: 1 },
HIGH: { label: 'High', priority: 2 },
MEDIUM: { label: 'Medium', priority: 3 },
LOW: { label: 'Low', priority: 4 },
INFO: { label: 'Info', priority: 5 }
};
/**
* Status badge component for displaying health/check status
*/
function StatusBadge({ status, severity, size = 'md', showIcon = true }) {
if (severity) {
const config = SEVERITY_CONFIG[severity] || SEVERITY_CONFIG.INFO;
return (
<span className={`badge badge--severity-${severity.toLowerCase()} badge--${size}`}>
{config.label}
</span>
);
}
const config = STATUS_CONFIG[status] || { label: status, icon: '?' };
return (
<span className={`badge badge--${status} badge--${size}`}>
{showIcon && <span className="badge-icon">{config.icon}</span>}
<span className="badge-label">{config.label}</span>
</span>
);
}
export default StatusBadge;