import React from 'react' import { Button } from '@/components/ui/button' import { Card } from '@/components/ui/card' import { Badge } from '@/components/ui/badge' import { ChatSession } from '@/types/chat' import { Plus, MessageSquare, Trash2, Edit2, Check, X } from 'lucide-react' interface ChatSessionsProps { sessions: ChatSession[] currentSessionId: string | null onSelectSession: (sessionId: string) => void onNewSession: () => void onDeleteSession: (sessionId: string) => void onRenameSession: (sessionId: string, newTitle: string) => void } export function ChatSessions({ sessions, currentSessionId, onSelectSession, onNewSession, onDeleteSession, onRenameSession }: ChatSessionsProps) { const [editingId, setEditingId] = React.useState(null) const [editTitle, setEditTitle] = React.useState('') const startEditing = (session: ChatSession) => { setEditingId(session.id) setEditTitle(session.title) } const finishEditing = () => { if (editingId && editTitle.trim()) { onRenameSession(editingId, editTitle.trim()) } setEditingId(null) setEditTitle('') } const cancelEditing = () => { setEditingId(null) setEditTitle('') } return (
{/* Header */}

Chat Sessions

{/* Sessions list */}
{sessions.length === 0 ? (

No conversations yet

) : ( sessions.map((session) => ( onSelectSession(session.id)} >
{/* Title */} {editingId === session.id ? (
setEditTitle(e.target.value)} onKeyPress={(e) => { if (e.key === 'Enter') finishEditing() if (e.key === 'Escape') cancelEditing() }} className="flex-1 text-sm bg-background border rounded px-2 py-1" autoFocus onClick={(e) => e.stopPropagation()} />
) : (

{session.title}

)} {/* Metadata */}
{session.messages.length} messages {new Date(session.updatedAt).toLocaleDateString()}
{/* Model info */} {session.model && ( {session.model} )}
)) )}
) }