'use client' import Link from 'next/link' import { Dialog, DialogContent, DialogHeader, DialogTitle, } from '@/components/ui/dialog' import { Badge } from '@/components/ui/badge' import { Button } from '@/components/ui/button' import { Invoice, Deadline } from '@/types' import { formatCurrency, formatDate } from '@/lib/utils' import { isInvoiceOverdue, isDeadlineOverdue, formatDateISO, DEADLINE_TYPE_LABELS, PRIORITY_LABELS, PRIORITY_COLORS, } from '@/lib/calendar/utils' import { FileText, CheckCircle, Clock, AlertTriangle, Plus } from 'lucide-react' interface DayDetailModalProps { date: Date | null invoices: Invoice[] deadlines: Deadline[] open: boolean onOpenChange: (open: boolean) => void onAddDeadline: (date: Date) => void onToggleDeadline: (deadline: Deadline) => void } export function DayDetailModal({ date, invoices, deadlines, open, onOpenChange, onAddDeadline, onToggleDeadline, }: DayDetailModalProps) { if (!date) return null const dateStr = formatDateISO(date) const dayInvoices = invoices.filter(inv => inv.due_date === dateStr) const dayDeadlines = deadlines.filter(d => d.due_date === dateStr) const formattedDate = date.toLocaleDateString('sv-SE', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', }) return ( {formattedDate}
{/* Invoices section */} {dayInvoices.length > 0 && (

Fakturor ({dayInvoices.length})

{dayInvoices.map((invoice) => { const overdue = isInvoiceOverdue(invoice) const paid = invoice.status === 'paid' return (
{overdue ? ( ) : paid ? ( ) : ( )}

{invoice.invoice_number}

{(invoice.customer as { name: string })?.name || 'Okänd kund'}

{formatCurrency(invoice.total, invoice.currency)}

{overdue ? 'Förfallen' : paid ? 'Betald' : 'Väntande'}
) })}
)} {/* Deadlines section */}

Deadlines ({dayDeadlines.length})

{dayDeadlines.length === 0 ? (

Inga deadlines denna dag

) : (
{dayDeadlines.map((deadline) => { const overdue = isDeadlineOverdue(deadline) const completed = deadline.is_completed const priorityStyle = PRIORITY_COLORS[deadline.priority] return (

{deadline.title}

{deadline.due_time && (

kl. {deadline.due_time.slice(0, 5)}

)} {deadline.customer && (

{deadline.customer.name}

)}
{DEADLINE_TYPE_LABELS[deadline.deadline_type]} {!completed && deadline.priority !== 'normal' && ( {PRIORITY_LABELS[deadline.priority]} )}
) })}
)}
{/* Empty state */} {dayInvoices.length === 0 && dayDeadlines.length === 0 && (

Inga händelser denna dag

)}
) }