'use client' import { cn } from '@/lib/utils' import { Invoice, Deadline, DeadlineStatus } from '@/types' import { isInvoiceOverdue, isSameDay, formatDateISO, STATUS_COLORS } from '@/lib/calendar/utils' interface CalendarDayCellProps { date: Date currentMonth: number invoices: Invoice[] deadlines: Deadline[] onDayClick: (date: Date) => void } export function CalendarDayCell({ date, currentMonth, invoices, deadlines, onDayClick, }: CalendarDayCellProps) { const dateStr = formatDateISO(date) const isCurrentMonth = date.getMonth() === currentMonth const isToday = isSameDay(date, new Date()) // Filter invoices and deadlines for this day const dayInvoices = invoices.filter(inv => inv.due_date === dateStr) const dayDeadlines = deadlines.filter(d => d.due_date === dateStr) // Count invoices by status const overdueInvoices = dayInvoices.filter(isInvoiceOverdue) const paidInvoices = dayInvoices.filter(inv => inv.status === 'paid') const pendingInvoices = dayInvoices.filter( inv => inv.status !== 'paid' && inv.status !== 'cancelled' && inv.status !== 'credited' && !isInvoiceOverdue(inv) ) // Group deadlines by status const deadlinesByStatus = dayDeadlines.reduce((acc, d) => { if (d.is_completed) { acc.completed = (acc.completed || 0) + 1 } else if (d.status) { acc[d.status] = (acc[d.status] || 0) + 1 } return acc }, {} as Record) const hasItems = dayInvoices.length > 0 || dayDeadlines.length > 0 const hasOverdue = overdueInvoices.length > 0 || deadlinesByStatus.overdue > 0 const hasActionNeeded = deadlinesByStatus.action_needed > 0 return ( ) }