import { useState } from 'react' import { Drawer, Box, Typography, IconButton, Chip, Divider, TextField, Button, Switch, FormControlLabel, Tooltip, } from '@mui/material' import { X, MapPin, Calendar, DollarSign, Eye, Activity, FileText, ExternalLink } from 'lucide-react' import { useReminderStore } from '../../stores/reminderStore' import { useReminder, useCompleteReminder, useDismissReminder, useSnoozeReminder } from '../../hooks/useReminders' import { usePropertyById } from '../../hooks/useProperties' import { ReminderPriorityBadge } from './ReminderPriorityBadge' import { ReminderTypeBadge } from './ReminderTypeBadge' import { ReminderDaysIndicator } from './ReminderDaysIndicator' import { ReminderStatus } from '../../domain/reminder' import { SHADOW_RISK_COLOR, SHADOW_RISK_LABEL, STATUS_CHIP_COLOR, STATUS_LABEL, SectionTitle, DateRow, ActivityEntry } from './reminderDetailHelpers' export function ReminderDetailDrawer() { const { selectedId, drawerOpen, setDrawerOpen, setSelectedId } = useReminderStore() const { data: reminder } = useReminder(selectedId ?? '') const { data: reminderProperty } = usePropertyById(reminder?.propertyId ?? '') const complete = useCompleteReminder() const dismiss = useDismissReminder() const snooze = useSnoozeReminder() const [noteValue, setNoteValue] = useState('') const [snoozeDate, setSnoozeDate] = useState('') function handleClose() { setDrawerOpen(false) setSelectedId(null) } const isNew = !selectedId return ( {/* Header */} {isNew ? ( Neuer Reminder ) : reminder ? ( <> ) : null} {/* Scrollable body */} {isNew && ( Neue Reminder-Erstellung noch nicht implementiert. )} {reminder && ( <> {/* 2. Property */} }>Objekt {reminder.propertyTitle} {reminder.propertyCity}{reminder.propertyDistrict ? ` · ${reminder.propertyDistrict}` : ''} Mieter: {reminder.tenantName} Fläche: {reminder.areaSqm.toLocaleString('de-CH')} m² {reminderProperty?.leaseContractUrl ? ( ) : ( Kein Mietvertrag hinterlegt )} {/* 3. Dates */} }>Daten & Fristen {reminder.snoozedUntil && ( )} {/* 4. Financials */} }>Finanzen Miete/m² {reminder.currency} {reminder.currentRentPerSqm.toLocaleString('de-CH')} / Monat Total / Monat {reminder.currency} {(reminder.currentRentPerSqm * reminder.areaSqm).toLocaleString('de-CH')} {/* 5. Pre-Market */} }>Pre-Market Risiko {SHADOW_RISK_LABEL[reminder.shadowMarketRisk]} } label={ Pre-Market aktiviert } /> {/* 6. Note */} Notiz setNoteValue(e.target.value)} placeholder="Notiz hinzufügen…" sx={{ '& .MuiInputBase-root': { fontSize: '0.8125rem' } }} /> {/* Actions */} {(reminder.status === ReminderStatus.ACTIVE || reminder.status === ReminderStatus.SNOOZED) && ( <> Aktionen setSnoozeDate(e.target.value)} sx={{ flex: 1, '& .MuiInputBase-root': { fontSize: '0.8125rem' } }} /> )} {/* 7. Activity */} }>Aktivitätslog {[...reminder.activity].reverse().map((entry, i) => ( ))} )} ) }