import React from "react"; import { format } from "date-fns"; import { Bot, TrashIcon, User, FileText, Settings, PanelLeft, Plus } from "lucide-react"; import { Button } from "@/components/ui/button"; import { cn } from "@/lib/utils"; import { Chat } from "@/types/chat"; import { ModeToggle } from "@/components/layout/ModeToggle"; interface ChatSidebarProps { chats: Chat[]; activeChat: Chat | null; isGeneratingTitle: boolean; createNewChat: () => void; selectChat: (id: string) => void; onRequestDelete: (id: string) => void; onOpenSettings: () => void; onOpenSources: () => void; openProfileModal: () => void; isSidebarOpen: boolean; setIsSidebarOpen: (open: boolean) => void; } export const ChatSidebar: React.FC = ({ chats, activeChat, isGeneratingTitle, createNewChat, selectChat, onRequestDelete, onOpenSettings, onOpenSources, openProfileModal, isSidebarOpen, setIsSidebarOpen, }) => { return (
AI

Insight AI

Recent Chats
{chats.length === 0 ? (
No conversations yet. Start a new one!
) : ( chats.map(chat => (
selectChat(chat.id)} className={cn( "flex items-center justify-between p-2 px-3 rounded-lg cursor-pointer group transition-all", activeChat?.id === chat.id ? "bg-primary/10 border border-primary/20" : "hover:bg-muted/50 border border-transparent" )} >
{chat.title} {chat.id === activeChat?.id && isGeneratingTitle && ( )}
{chat.messages.filter(m => m.sender === "user").length} messages • {format(new Date(chat.updatedAt), "MMM d")}
)) )}
{/* Sidebar Footer */}
Theme
); };