"use client"; import { type Dispatch, type SetStateAction } from "react"; import { MessageSquare } from "lucide-react"; import { RowActions } from "@/app/components/shared/RowActions"; import type { Chat } from "@/app/components/shared/types"; import { formatDate, NAME_COL_W } from "./ProjectPageParts"; export function ProjectAssistantTab({ chats, filteredChats, selectedChatIds, allChatsSelected, someChatsSelected, renamingChatId, renameChatValue, currentUserId, onCreateChat, onOpenChat, onDeleteChat, onOwnerOnlyAction, submitChatRename, setSelectedChatIds, setRenamingChatId, setRenameChatValue, }: { chats: Chat[]; filteredChats: Chat[]; selectedChatIds: string[]; allChatsSelected: boolean; someChatsSelected: boolean; renamingChatId: string | null; renameChatValue: string; currentUserId?: string | null; onCreateChat: () => void; onOpenChat: (chatId: string) => void; onDeleteChat: (chat: Chat) => Promise | void; onOwnerOnlyAction: (action: string) => void; submitChatRename: (chatId: string) => Promise | void; setSelectedChatIds: Dispatch>; setRenamingChatId: Dispatch>; setRenameChatValue: Dispatch>; }) { const stickyCellBg = "bg-[#fcfcfd]"; return ( <>
{ if (el) el.indeterminate = someChatsSelected; }} onChange={() => { if (allChatsSelected) setSelectedChatIds([]); else setSelectedChatIds(filteredChats.map((c) => c.id)); }} className="h-2.5 w-2.5 rounded border-gray-200 cursor-pointer accent-black" /> Chats
Created
{chats.length === 0 ? (

Assistant

Ask questions and get answers grounded in the documents in this project.

) : (
{filteredChats.map((chat) => (
{ if (renamingChatId === chat.id) return; onOpenChat(chat.id); }} className="group flex items-center h-10 pr-8 border-b border-gray-50 hover:bg-gray-100 cursor-pointer transition-colors" >
setSelectedChatIds((prev) => prev.includes(chat.id) ? prev.filter((x) => x !== chat.id) : [...prev, chat.id], ) } onClick={(e) => e.stopPropagation()} className="h-2.5 w-2.5 shrink-0 rounded border-gray-200 cursor-pointer accent-black" /> {renamingChatId === chat.id ? ( setRenameChatValue(e.target.value) } onKeyDown={(e) => { if (e.key === "Enter") void submitChatRename(chat.id); if (e.key === "Escape") setRenamingChatId(null); }} onBlur={() => void submitChatRename(chat.id)} onClick={(e) => e.stopPropagation()} className="min-w-0 flex-1 text-sm text-gray-800 bg-transparent outline-none" /> ) : ( {chat.title ?? "Untitled Chat"} )}
{formatDate(chat.created_at)}
e.stopPropagation()} > { if ( currentUserId && chat.user_id !== currentUserId ) { onOwnerOnlyAction("rename this chat"); return; } setRenameChatValue( chat.title ?? "Untitled Chat", ); setRenamingChatId(chat.id); }} onDelete={() => onDeleteChat(chat)} />
))}
)} ); }