import { Alert, Box, Button, Card, CircularProgress, TextField, Typography } from '@mui/material'
import { Sparkles } from 'lucide-react'
import { DS_TEXT, DS_SURFACE, DS_BORDER } from '../../lib/ds'

interface Props {
  text: string
  onTextChange: (v: string) => void
  onParse: () => void
  parsing: boolean
  applied: boolean
}

export function AiAssistCard({ text, onTextChange, onParse, parsing, applied }: Props) {
  return (
    <Card sx={{ p: 3, mb: 3, border: `1px solid ${DS_SURFACE.indigo.border}`, bgcolor: DS_SURFACE.indigo.bg }}>
      <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, mb: 1.5 }}>
        <Sparkles size={16} color={DS_TEXT.brand} />
        <Typography variant="subtitle2" sx={{ fontWeight: 700, color: DS_TEXT.brand }}>
          KI-Hilfe — Formular automatisch ausfüllen
        </Typography>
      </Box>
      <Typography variant="caption" color="text.secondary" sx={{ display: 'block', mb: 1.5 }}>
        Beschreiben Sie die Fläche in eigenen Worten — die KI füllt die Felder automatisch aus.
      </Typography>
      <TextField
        multiline
        rows={3}
        fullWidth
        size="small"
        placeholder="z.B.: Bürofläche 450 m² im Zentrum Zürich, 3. OG, CHF 280/m²/Jahr, sehr gute ÖV-Anbindung, 4 Parkplätze, Vollausbau, verfügbar ab Juli 2025"
        value={text}
        onChange={e => onTextChange(e.target.value)}
        sx={{ mb: 1.5, bgcolor: 'white' }}
      />
      {applied && (
        <Alert severity="success" sx={{ mb: 1.5, py: 0.5 }}>
          Felder wurden automatisch ausgefüllt — bitte überprüfen und ergänzen.
        </Alert>
      )}
      <Button
        variant="contained"
        size="small"
        startIcon={parsing ? <CircularProgress size={13} color="inherit" /> : <Sparkles size={13} />}
        onClick={onParse}
        disabled={!text.trim() || parsing}
        sx={{ bgcolor: DS_TEXT.brand, '&:hover': { bgcolor: DS_BORDER.strong }, textTransform: 'none' }}
      >
        {parsing ? 'Analysiert…' : 'KI analysieren'}
      </Button>
    </Card>
  )
}
