import { useUnreadCommentCount } from '@renderer/hooks/useUnreadCommentCount'; import { useStore } from '@renderer/store'; import { format, isThisYear, isToday, isYesterday } from 'date-fns'; import { CheckCircle2, Circle, Loader2 } from 'lucide-react'; import type { GlobalTask, TeamTaskStatus } from '@shared/types'; import type { LucideIcon } from 'lucide-react'; const statusConfig: Record = { pending: { icon: Circle, color: 'text-amber-400', label: 'pending' }, in_progress: { icon: Loader2, color: 'text-blue-400', label: 'in progress' }, completed: { icon: CheckCircle2, color: 'text-emerald-400', label: 'completed' }, deleted: { icon: Circle, color: 'text-zinc-500', label: 'deleted' }, }; function formatTaskDate(dateStr: string | undefined): string | null { if (!dateStr) return null; const d = new Date(dateStr); if (isNaN(d.getTime())) return null; if (isToday(d)) return format(d, 'HH:mm'); if (isYesterday(d)) return 'Yesterday'; if (isThisYear(d)) return format(d, 'MMM d'); return format(d, 'MMM d, yyyy'); } interface SidebarTaskItemProps { task: GlobalTask; } export const SidebarTaskItem = ({ task }: SidebarTaskItemProps): React.JSX.Element => { const openTeamTab = useStore((s) => s.openTeamTab); const unreadCount = useUnreadCommentCount(task.teamName, task.id, task.comments); const cfg = statusConfig[task.status] ?? statusConfig.pending; const StatusIcon = cfg.icon; const dateLabel = formatTaskDate(task.createdAt); return ( ); };