import { Box, LinearProgress, Tooltip, Typography, Chip } from '@mui/material'
import { AlertTriangle } from 'lucide-react'
import { dataQualityColor, dataQualityHex, formatPercent } from '../../lib/utils'
import { FRESHNESS_LABELS } from '../../lib/constants'
import type { DataQuality } from '../../domain/property'
import { DS_ACCENT, DS_SLATE } from '../../lib/ds'
interface DataQualityBarProps {
quality: DataQuality
compact?: boolean
showWarnings?: boolean
}
export function DataQualityBar({ quality, compact = false, showWarnings = true }: DataQualityBarProps) {
const color = dataQualityColor(quality.score)
const hex = dataQualityHex(quality.score)
const pct = Math.round(quality.score * 100)
const tooltipContent = (
Datenqualität {formatPercent(quality.score)}
{quality.missingCriticalFields.length > 0 && (
Fehlende Pflichtfelder:
{quality.missingCriticalFields.map(f => (
• {f}
))}
)}
{quality.warnings.length > 0 && (
Warnungen:
{quality.warnings.map((w, i) => (
• {w}
))}
)}
Aktualität: {FRESHNESS_LABELS[quality.freshness]}
{quality.lastVerifiedAt ? ` · Geprüft: ${quality.lastVerifiedAt}` : ''}
)
if (compact) {
return (
{pct}%
{quality.missingCriticalFields.length > 0 && showWarnings && (
)}
)
}
return (
{pct}%
{showWarnings && quality.missingCriticalFields.length > 0 && (
{quality.missingCriticalFields.slice(0, 2).map(f => (
))}
{quality.missingCriticalFields.length > 2 && (
+{quality.missingCriticalFields.length - 2}
)}
)}
)
}