"use client"; import { useState, useTransition } from "react"; import { useRouter } from "next/navigation"; import { DndContext, DragEndEvent, DragOverlay, PointerSensor, KeyboardSensor, useSensor, useSensors, useDroppable, useDraggable, } from "@dnd-kit/core"; import { updateLeadField } from "@/app/admin/pipeline/actions"; import type { LeadWithTags } from "@/lib/admin-queries"; import { StatusBadge } from "@/components/ui/StatusBadge"; type LeadStage = "contacted" | "qualified" | "proposal_sent" | "negotiating" | "won" | "lost"; const LEAD_COLUMNS: { id: LeadStage; label: string; headerClass: string; dotClass: string; }[] = [ { id: "contacted", label: "Contattato", headerClass: "text-muted-foreground", dotClass: "bg-blue-400 dark:bg-blue-500" }, { id: "qualified", label: "Qualificato", headerClass: "text-purple-700 dark:text-purple-400", dotClass: "bg-purple-400 dark:bg-purple-500" }, { id: "proposal_sent", label: "Offerta inviata", headerClass: "text-amber-700 dark:text-amber-400", dotClass: "bg-amber-400 dark:bg-amber-500" }, { id: "negotiating", label: "Trattativa", headerClass: "text-orange-700 dark:text-orange-400", dotClass: "bg-orange-400 dark:bg-orange-500" }, { id: "won", label: "Vinto", headerClass: "text-emerald-700 dark:text-emerald-400", dotClass: "bg-emerald-500" }, { id: "lost", label: "Perso", headerClass: "text-red-700 dark:text-red-400", dotClass: "bg-red-400 dark:bg-red-500" }, ]; const VALID_STAGES = LEAD_COLUMNS.map((c) => c.id) as string[]; function DroppableColumn({ id, label, headerClass, dotClass, leads, activeId, }: { id: LeadStage; label: string; headerClass: string; dotClass: string; leads: LeadWithTags[]; activeId: string | null; }) { const { setNodeRef, isOver } = useDroppable({ id }); return (
Nessun lead
)}{lead.name}
{lead.email}
)} {lead.company && ({lead.company}
)} {lead.next_action && ({lead.next_action}
)}{activeLead.name}
{activeLead.company && ({activeLead.company}
)}