import React from 'react' import { Play, Square, Clock, Folder, Tag, MoreHorizontal, CheckCircle2 } from 'lucide-react' import type { Task, TaskStatus } from '../../types/task' import { isTaskRunning, calculateTaskTotalSeconds, formatSecondsToTimer } from '../../lib/timeUtils' import { CustomSelect } from '../ui/Select' interface TaskListViewProps { tasks: Task[] onToggleTimer: (task: Task) => void onStatusChange: (task: Task, newStatus: TaskStatus) => void onEditTask: (task: Task) => void activeTaskId?: number | null activeTaskSeconds?: number } export const TaskListView: React.FC = ({ tasks, onToggleTimer, onStatusChange, onEditTask, activeTaskId, activeTaskSeconds, }) => { const [activeMenuId, setActiveMenuId] = React.useState(null) return (
{tasks.map((task) => { const isRunning = activeTaskId === task.id || (activeTaskId === undefined && isTaskRunning(task)) const totalSec = activeTaskId === task.id && activeTaskSeconds !== undefined ? activeTaskSeconds : calculateTaskTotalSeconds(task) return ( {/* Task Title & Description */} {/* Project */} {/* Category */} {/* Assignee */} {/* Status Dropdown */} {/* Time Spent */} {/* Actions */} ) })}
Tarefa Projeto Categoria Responsável Status Tempo Total Ações
onEditTask(task)} className="font-medium text-foreground hover:text-brand cursor-pointer transition-colors truncate" > {task.title} {task.description && ( {task.description} )}
{task.project ? ( {task.project.name} ) : ( — )} {task.category ? ( {task.category.name} ) : ( — )} {task.user ? (
{task.user.name ? task.user.name.charAt(0) : task.user.email.charAt(0)}
{task.user.name || task.user.email.split('@')[0]}
) : ( Não atribuído )}
onStatusChange(task, newStatus as TaskStatus)} options={[ { value: 'NOT_STARTED', label: 'A Fazer', color: '#71717a' }, { value: 'IN_PROGRESS', label: 'Em Andamento', color: '#14b8a6' }, { value: 'COMPLETED', label: 'Concluído', color: '#10b981' }, { value: 'CANCELED', label: 'Cancelado', color: '#f43f5e' }, ]} />
{formatSecondsToTimer(totalSec)}
{/* Timer button */} {/* Menu */}
{activeMenuId === task.id && ( <>
setActiveMenuId(null)} />
)}
) }