import { Alert, Box, Card, Divider, Typography } from '@mui/material' import { MapPin } from 'lucide-react' import { MatchCardHeader } from './MatchCardHeader' import { MatchReasonList } from './MatchReasonList' import { TradeoffList } from './TradeoffList' import { MatchDataQualitySummary } from './MatchDataQualitySummary' import { MatchActionToolbar } from './MatchActionToolbar' import { MatchCardRestrictedState } from './MatchCardRestrictedState' import { ScoreInlineBreakdown } from './ScoreInlineBreakdown' import type { MatchCardViewModel } from './MatchCardViewModel' interface Props { vm: MatchCardViewModel } export function MatchCardCompact({ vm }: Props) { if (vm.isRestricted) return const borderColor = vm.isCompareSelected ? '#7c3aed' : vm.isSelected ? '#1e3a5f' : 'transparent' return ( {/* FUTURE_AVAILABILITY disclaimer — mandatory, non-dismissable */} {vm.disclaimer && ( {vm.disclaimer} )} {vm.isReviewRequired && ( Manuelle Überprüfung erforderlich )} {/* Header: score → type → confidence → availability → risk */} {/* Title + location (max 2 lines) */} {vm.title} {vm.propertySubtitle && ( {vm.propertySubtitle} )} {vm.locationLabel} {vm.explainabilitySummary && ( {vm.explainabilitySummary} )} {/* Score formula — always visible */} {vm.scoreBreakdown && ( )} {/* Top reason only */} {vm.reasons.length > 0 && ( )} {/* Top tradeoff only (compact) */} {vm.tradeoffs.length > 0 && ( )} {/* Data quality — only critical warning in compact mode */} ) }