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