import { useMemo, useState } from 'react' import { Link } from 'react-router' import { Plus, Wrench, CalendarDays, MapPin, MessagesSquare, Trash2 } from 'lucide-react' import { Button } from '@/components/ui/button' import { Badge } from '@/components/ui/badge' import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, DialogFooter, } from '@/components/ui/dialog' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { Textarea } from '@/components/ui/textarea' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select' import { useStore } from '../store/store' import { fmtDatum, fmtDatumZeit } from '../lib/format' import type { TicketPriority, TicketStatus } from '../types' const statusStyle: Record = { offen: 'bg-amber-100 text-amber-800', 'in Bearbeitung': 'bg-blue-100 text-blue-800', erledigt: 'bg-emerald-100 text-emerald-800', } const prioStyle: Record = { hoch: 'bg-red-100 text-red-700', mittel: 'bg-amber-100 text-amber-700', niedrig: 'bg-slate-100 text-slate-600', } const categories = [ 'Sanitär', 'Elektrik', 'Heizung', 'Fenster / Rollladen', 'Balkon / Außenanlage', 'Schlüssel', 'Sonstiges', ] function NewTicketDialog() { const { addTicket, role, meineEinheit } = useStore() const [open, setOpen] = useState(false) const [title, setTitle] = useState('') const [category, setCategory] = useState('Sanitär') const [priority, setPriority] = useState('mittel') const [description, setDescription] = useState('') const [sende, setSende] = useState(false) const submit = async () => { if (!title.trim() || sende) return setSende(true) const err = await addTicket({ title: title.trim(), description: description.trim() || '–', category, priority, unitId: role === 'tenant' ? meineEinheit.id : 'hs-1', }) setSende(false) if (err) return setTitle('') setDescription('') setOpen(false) } return ( Schaden oder Störung melden
setTitle(e.target.value)} />