"use client"; import { useState } from "react"; import { ApproveButton } from "@/components/client/ApproveButton"; import { useChatContext } from "@/components/client/ChatProvider"; import type { ClientView } from "@/lib/client-view"; import { TASK_STATUS_LABELS, type TaskStatus } from "@/lib/task-status"; type Phase = ClientView["phases"][number]; const phaseStatusLabel: Record<"upcoming" | "active" | "done", string> = { upcoming: "Da iniziare", active: "In corso", done: "Completata", }; // Soft-tint status pill — replica del mock ("Quiet Luxury") const phaseStatusStyle: Record<"upcoming" | "active" | "done", string> = { upcoming: "bg-muted text-muted-foreground border border-border", active: "bg-amber-50 text-amber-700 border border-amber-100 dark:bg-amber-500/10 dark:text-amber-400 dark:border-amber-500/20", done: "bg-emerald-50 text-emerald-700 border border-emerald-100 dark:bg-emerald-500/10 dark:text-emerald-400 dark:border-emerald-500/20", }; // Colore della barra di avanzamento per stato fase const phaseBarColor: Record<"upcoming" | "active" | "done", string> = { upcoming: "bg-border", active: "bg-amber-500", done: "bg-emerald-600", }; function TaskStatusIcon({ status }: { status: TaskStatus }) { if (status === "done") { return ( ); } if (status === "in_review") { return ( ); } if (status === "in_progress") { return ( ); } return ( ); } export function PhaseCard({ phase, token, defaultOpen, }: { phase: Phase; token: string; defaultOpen: boolean; }) { const [open, setOpen] = useState(defaultOpen); const { openChat } = useChatContext(); const doneCount = phase.tasks.filter((t) => t.status === "done").length; return (
{/* Header — always visible, click to toggle */}
{/* Progress bar — always visible, colore per stato */}

{doneCount} di {phase.tasks.length} task

{phase.progress_pct}%

{/* Collapsible task list */} {open && (
{phase.tasks.length === 0 ? (

Nessun task ancora configurato.

) : (
    {phase.tasks.map((task) => (
  • {task.title}

    {task.description && (

    {task.description}

    )} {task.deliverables.length > 0 && (
      {task.deliverables.map((d) => (
    • {d.title} {(d.status === "pending" || d.status === "submitted" || d.approved_at !== null) && ( )}
    • ))}
    )}
  • ))}
)}
)}
); }