feat: F021 market intelligence & signal discovery

This commit is contained in:
Benjamin Sutter
2026-05-15 15:20:06 +02:00
parent 7bed2fec86
commit 8efd6e1974
4 changed files with 289 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
import { useState } from 'react'
import { Box } from '@mui/material'
import { PageHeader } from '../../components/layout'
import { SignalInbox, MarketSignalDetailPanel } from '../../components/ops'
import { useMarketSignals } from '../../hooks/useMarketSignals'
import type { MarketSignalFilters } from '../../domain/marketSignal'
export default function MarketIntelligence() {
const [selectedId, setSelectedId] = useState<string | null>(null)
const [filters, setFilters] = useState<MarketSignalFilters>({})
const { data: signals = [], isLoading } = useMarketSignals(filters)
const selectedSignal = signals.find((s) => s.id === selectedId) ?? null
return (
<Box sx={{ display: 'flex', flexDirection: 'column', height: '100%', overflow: 'hidden' }}>
<PageHeader
title="Market Intelligence"
subtitle="Signale, Marktdaten und Frühwarnindikatoren"
/>
<Box sx={{ display: 'flex', flex: 1, overflow: 'hidden' }}>
<Box
sx={{
width: 380,
flexShrink: 0,
borderRight: '1px solid #e2e8f0',
overflow: 'hidden',
display: 'flex',
flexDirection: 'column',
}}
>
<SignalInbox
signals={signals}
isLoading={isLoading}
selectedId={selectedId}
onSelect={setSelectedId}
filters={filters}
onFiltersChange={setFilters}
/>
</Box>
<Box sx={{ flex: 1, overflow: 'hidden' }}>
<MarketSignalDetailPanel signal={selectedSignal} />
</Box>
</Box>
</Box>
)
}