fix: resolve all MUI v9 TypeScript build errors

- Move system props (fontWeight, lineHeight, display, alignItems, etc.) into sx
- Fix Lucide icon color prop (no sx support)
- Merge duplicate sx attributes
- Remove unused variables (location, _needId, v)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Benjamin Sutter
2026-05-15 10:37:07 +02:00
parent 67e4baf860
commit e20e0e9a2e
12 changed files with 164 additions and 183 deletions
+22 -28
View File
@@ -53,7 +53,7 @@ export default function AISearch() {
<Box>
{/* Page Header */}
<Box sx={{ bgcolor: 'white', borderBottom: '1px solid #e2e8f0', px: 3, py: 2 }}>
<Typography variant="h5" fontWeight={700} color="text.primary">
<Typography variant="h5" sx={{ fontWeight: 700 }} color="text.primary">
AI Bedarfsanalyse
</Typography>
<Typography variant="body2" color="text.secondary">
@@ -66,7 +66,7 @@ export default function AISearch() {
{step === 'input' && (
<Box>
<Card sx={{ maxWidth: 680, mx: 'auto', p: 3 }}>
<Typography variant="subtitle1" fontWeight={600} mb={2}>
<Typography variant="subtitle1" sx={{ fontWeight: 600, mb: 2 }}>
Flächenbedarf beschreiben
</Typography>
<TextField
@@ -76,10 +76,10 @@ export default function AISearch() {
placeholder="Beispiel: Wir suchen 8001.000 m² Bürofläche in Zürich-West, verfügbar ab September 2025, Budget max. 45 CHF/m². Wichtig: gute ÖV-Anbindung, moderne Infrastruktur."
value={inputText}
onChange={e => setInputText(e.target.value)}
inputProps={{ maxLength: 2000 }}
slotProps={{ htmlInput: { maxLength: 2000 } }}
sx={{ mb: 1 }}
/>
<Typography variant="caption" color="text.secondary" display="block" textAlign="right" mb={2}>
<Typography variant="caption" color="text.secondary" sx={{ display: 'block', textAlign: 'right', mb: 2 }}>
{inputText.length}/2000
</Typography>
<Button
@@ -92,17 +92,17 @@ export default function AISearch() {
>
Analysieren
</Button>
<Typography variant="caption" color="text.secondary" display="block" textAlign="center">
<Typography variant="caption" color="text.secondary" sx={{ display: 'block', textAlign: 'center' }}>
Die KI extrahiert automatisch Kriterien, Standortpräferenzen und Budget aus Ihrer Beschreibung.
</Typography>
</Card>
{/* Example Queries */}
<Box sx={{ maxWidth: 680, mx: 'auto', mt: 2 }}>
<Typography variant="caption" color="text.secondary" display="block" mb={1}>
<Typography variant="caption" color="text.secondary" sx={{ display: 'block', mb: 1 }}>
Beispiele:
</Typography>
<Stack direction="row" spacing={1} flexWrap="wrap" gap={1}>
<Stack direction="row" spacing={1} sx={{ flexWrap: 'wrap', gap: 1 }}>
{EXAMPLE_QUERIES.map(q => (
<Chip
key={q}
@@ -135,7 +135,7 @@ export default function AISearch() {
<Box className="grid grid-cols-2 gap-4" sx={{ mb: 3 }}>
{/* Left: Extracted Criteria */}
<Card sx={{ p: 3 }}>
<Typography variant="subtitle1" fontWeight={600} mb={2}>
<Typography variant="subtitle1" sx={{ fontWeight: 600, mb: 2 }}>
Extrahierte Kriterien
</Typography>
@@ -161,8 +161,7 @@ export default function AISearch() {
<Box>
<Typography
variant="caption"
fontWeight={600}
sx={{ color: ConfidenceColor(extractedCriteria.confidence) }}
sx={{ fontWeight: 600, color: ConfidenceColor(extractedCriteria.confidence) }}
>
Flächenbedarf
</Typography>
@@ -177,8 +176,7 @@ export default function AISearch() {
<Box>
<Typography
variant="caption"
fontWeight={600}
sx={{ color: ConfidenceColor(extractedCriteria.confidence) }}
sx={{ fontWeight: 600, color: ConfidenceColor(extractedCriteria.confidence) }}
>
Budget
</Typography>
@@ -193,8 +191,7 @@ export default function AISearch() {
<Box>
<Typography
variant="caption"
fontWeight={600}
sx={{ color: ConfidenceColor(0.5) }}
sx={{ fontWeight: 600, color: ConfidenceColor(0.5) }}
>
Unternehmen
</Typography>
@@ -208,8 +205,7 @@ export default function AISearch() {
<Box>
<Typography
variant="caption"
fontWeight={600}
sx={{ color: ConfidenceColor(0.85) }}
sx={{ fontWeight: 600, color: ConfidenceColor(0.85) }}
>
Standort
</Typography>
@@ -223,8 +219,7 @@ export default function AISearch() {
<Box>
<Typography
variant="caption"
fontWeight={600}
sx={{ color: ConfidenceColor(0.85) }}
sx={{ fontWeight: 600, color: ConfidenceColor(0.85) }}
>
Verfügbarkeit
</Typography>
@@ -238,8 +233,7 @@ export default function AISearch() {
<Box>
<Typography
variant="caption"
fontWeight={600}
sx={{ color: ConfidenceColor(0.85) }}
sx={{ fontWeight: 600, color: ConfidenceColor(0.85) }}
>
Objekttyp
</Typography>
@@ -252,8 +246,8 @@ export default function AISearch() {
{/* Assumptions */}
{extractedCriteria.assumptions.length > 0 && (
<Box mt={3}>
<Typography variant="caption" fontWeight={600} color="text.secondary" display="block" mb={1}>
<Box sx={{ mt: 3 }}>
<Typography variant="caption" sx={{ fontWeight: 600, display: 'block', mb: 1 }} color="text.secondary">
Annahmen der KI
</Typography>
<Stack spacing={0.5}>
@@ -268,11 +262,11 @@ export default function AISearch() {
{/* Missing Fields */}
{extractedCriteria.missingFields.length > 0 && (
<Box mt={2}>
<Typography variant="caption" fontWeight={600} color="text.secondary" display="block" mb={1}>
<Box sx={{ mt: 2 }}>
<Typography variant="caption" sx={{ fontWeight: 600, display: 'block', mb: 1 }} color="text.secondary">
Fehlende Informationen
</Typography>
<Stack direction="row" spacing={0.5} flexWrap="wrap" gap={0.5}>
<Stack direction="row" spacing={0.5} sx={{ flexWrap: 'wrap', gap: 0.5 }}>
{extractedCriteria.missingFields.map(f => (
<Chip
key={f}
@@ -289,17 +283,17 @@ export default function AISearch() {
{/* Right: Follow-up Questions */}
<Card sx={{ p: 3 }}>
<Typography variant="subtitle1" fontWeight={600} mb={0.5}>
<Typography variant="subtitle1" sx={{ fontWeight: 600, mb: 0.5 }}>
Rückfragen der KI
</Typography>
<Typography variant="caption" color="text.secondary" display="block" mb={2}>
<Typography variant="caption" color="text.secondary" sx={{ display: 'block', mb: 2 }}>
Diese Fragen sind optional verbessern jedoch die Trefferqualität.
</Typography>
<Stack spacing={3}>
{extractedCriteria.followUpQuestions.map((q, i) => (
<Box key={i}>
<Typography variant="body2" fontWeight={500} mb={1}>
<Typography variant="body2" sx={{ fontWeight: 500, mb: 1 }}>
{i + 1}. {q}
</Typography>
<TextField