"use client"; import { memo } from "react"; import { GitBranch, ArrowRight, ListTodo } from "lucide-react"; import { ThreadWithTasks, useThreads } from "@/providers/Thread"; import { cn } from "@/lib/utils"; import { StatusIndicator } from "@/components/status-indicator"; import { GitHubSVG } from "./icons/github"; import { useQueryState } from "nuqs"; interface ThreadItemProps { thread: ThreadWithTasks; onClick: (thread: ThreadWithTasks) => void; variant?: "sidebar" | "dashboard"; className?: string; } export const ThreadItem = memo(function ThreadItem({ thread, onClick, variant = "dashboard", className, }: ThreadItemProps) { const [threadId] = useQueryState("threadId"); const { recentlyUpdatedThreads } = useThreads(); const isSelected = thread.thread_id === threadId; const isSidebar = variant === "sidebar"; const isRecentlyUpdated = recentlyUpdatedThreads.has(thread.thread_id); const displayDate = new Date(thread.created_at).toLocaleDateString("en-US", { month: "short", day: "numeric", }); return (
{ if (!isSelected) { onClick(thread); } }} >

{thread.threadTitle}

{thread.repository} / {thread.branch}
• {displayDate} {!isSidebar && ( <> •
{thread.completedTasksCount}/{thread.totalTasksCount} tasks
)}
{isSidebar && (
{thread.completedTasksCount}/{thread.totalTasksCount} tasks
)}
); });