"use client"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { RefreshCw, Share2 } from "lucide-react"; import { Badge } from "@/components/ui/badge"; import { getTaskStatusColor, getTaskStatusLabel } from "@/lib/utils/status-utils"; import { useTasks, Task } from "@/hooks/use-tasks"; interface FlowProps { limit?: number; showRefresh?: boolean; showHeader?: boolean; cardClassName?: string; } export function Duties({ limit = 5, showRefresh = true, showHeader = true, cardClassName = "transition-transform duration-500 ease-in-out transform hover:scale-105 bg-white/95 backdrop-blur-sm border-0 shadow-lg" }: FlowProps) { const { tasks, loading, error, refresh } = useTasks({ limit, includeDone: false, sortField: 'dateToFinish', sortDirection: 'asc' }); // TaskDate component const TaskDate = ({ task }: { task: Task }) => { const dateStr = task.dateToFinish || task.dueDate; if (!dateStr) { return (
NO DATE
); } try { const date = new Date(dateStr); if (isNaN(date.getTime())) { throw new Error('Invalid date'); } const today = new Date(); today.setHours(0, 0, 0, 0); const isPastDue = date < today; const month = date.toLocaleString('fr-FR', { month: 'short' }).toUpperCase(); const day = date.getDate(); const year = date.getFullYear(); return (
{month} {day}
{year}
); } catch (error) { return (
ERR DATE
); } }; const renderContent = () => { if (loading) { return (
); } if (error) { return (
{error}
); } if (tasks.length === 0) { return (
No tasks with due dates found
); } return (
{tasks.map((task) => (

{task.headline}

{task.projectName} {task.milestoneHeadline && ( {task.milestoneHeadline} )}
))}
); }; if (!showHeader) { return renderContent(); } return ( Tasks {showRefresh && ( )} {renderContent()} ); }