import { useState } from 'react' import { Alert, Box, Button, Chip, CircularProgress, Typography } from '@mui/material' import { BarChart2, Building2, FileText, Lightbulb, TrendingUp } from 'lucide-react' import { useMarketReport } from '../../hooks/useMarketReport' import type { SignalCategory } from '../../domain/marketReport' import { SignalCard } from './SignalCard' import { BerichtDialog } from './BerichtDialog' import { MarketKpiPanel } from './MarketKpiPanel' interface Props { propertyId: string } const STATIC_SECTIONS: { category: SignalCategory; label: string; icon: React.ReactNode; color: string }[] = [ { category: 'development', label: 'Entwicklungsnews', icon: , color: '#152642' }, { category: 'negotiation', label: 'Verhandlungshinweise', icon: , color: '#7c3aed' }, ] export function PropertyMarketSignalsTab({ propertyId }: Props) { const { data: report = null, isLoading: loading } = useMarketReport(propertyId) const [dialogOpen, setDialogOpen] = useState(false) const [radius, setRadius] = useState(5) const dynamicSections: { category: SignalCategory; label: string; icon: React.ReactNode; color: string }[] = [ { category: 'demand', label: `Nachfrage ${radius} km`, icon: , color: '#1a7a4a' }, { category: 'supply', label: `Angebot ${radius} km`, icon: , color: '#b45309' }, ] const sectionConfig = [ STATIC_SECTIONS[0], dynamicSections[0], dynamicSections[1], STATIC_SECTIONS[1], ] if (loading) { return ( ) } return ( Marktsignale & Standortintelligenz {report?.generatedAt && ( Generiert {new Date(report.generatedAt).toLocaleDateString('de-CH')} )} {!report ? ( Für dieses Objekt liegen noch keine KI-generierten Marktsignale vor. ) : ( <> {report.kpis && ( )} {sectionConfig.map(({ category, label, icon, color }) => { const signals = report.signals.filter(s => s.category === category) if (signals.length === 0) return null return ( {icon} {label} {signals.map(s => )} ) })} )} {dialogOpen && ( setDialogOpen(false)} report={report} propertyId={propertyId} /> )} ) }