import { Box, Chip, LinearProgress, Typography } from '@mui/material' import { SignalTypeBadge } from './SignalTypeBadge' import { SensitivityBadge } from './SensitivityBadge' import { SignalReviewStatusBadge } from './SignalReviewStatusBadge' import { FutureSignalDisclaimer } from './FutureSignalDisclaimer' import type { FutureSignal } from '../../domain/futureSignal' const SOURCE_LABELS: Record = { PRESS: 'Presse', CONSTRUCTION_PERMIT: 'Baubewilligung', JOB_POSTING: 'Stelleninserat', COMPANY_REPORT: 'Geschäftsbericht', MARKET_DATA: 'Marktdaten', MANUAL: 'Manuell', } function probColor(p: number): string { return p >= 0.7 ? '#1a7a4a' : p >= 0.5 ? '#d97706' : '#c0392b' } interface Props { signal: FutureSignal isSelected: boolean onSelect: (signal: FutureSignal) => void } export function FutureSignalCard({ signal, isSelected, onSelect }: Props) { const isConfidential = signal.sensitivityLevel === 'CONFIDENTIAL' return ( onSelect(signal)} sx={{ p: 2, cursor: 'pointer', borderBottom: '1px solid #f1f5f9', borderLeft: isSelected ? '3px solid #1e3a5f' : isConfidential ? '3px solid #d97706' : '3px solid transparent', bgcolor: isSelected ? '#eff6ff' : isConfidential ? '#fffbeb' : 'transparent', '&:hover': { bgcolor: isSelected ? '#eff6ff' : '#f8fafc' }, }} > {/* Row 1: type + sensitivity + review status */} {/* Row 2: title / company / location */} {signal.title ?? signal.companyName ?? signal.locationHint} {(signal.title || signal.companyName) && ( {signal.locationHint} )} {/* Row 3: probability */} Wahrscheinlichkeit {Math.round(signal.probability * 100)}% {/* Row 4: meta chips */} {signal.areaSqmEstimate && ( )} {/* Footer: mini disclaimer */} ) }