import React, { useState } from 'react'; import { Chat } from '../types'; import { MessageSquarePlus, MessageSquare, Trash2, Moon, Sun, PanelLeftClose, PanelLeft, Search } from 'lucide-react'; import { useTheme } from '../contexts/ThemeContext'; interface SidebarProps { chats: Chat[]; currentChatId: string | null; onSelectChat: (chatId: string) => void; onNewChat: () => void; onDeleteChat: (chatId: string) => void; isCollapsed: boolean; onToggleCollapse: () => void; } export const Sidebar: React.FC = ({ chats, currentChatId, onSelectChat, onNewChat, onDeleteChat, isCollapsed, onToggleCollapse }) => { const { theme, toggleTheme } = useTheme(); const [searchQuery, setSearchQuery] = useState(''); const [isSearchOpen, setIsSearchOpen] = useState(false); const searchInputRef = React.useRef(null); // Sohbetleri arama terimine göre filtrele const filteredChats = chats.filter(chat => chat.title.toLowerCase().includes(searchQuery.toLowerCase()) ); // Arama açıldığında input'a focus yap React.useEffect(() => { if (isSearchOpen && searchInputRef.current) { searchInputRef.current.focus(); } }, [isSearchOpen]); return (
{/* Header */}
{!isCollapsed ? ( <> {/* Search Input */} {!isSearchOpen ? ( ) : (
setSearchQuery(e.target.value)} onBlur={() => { if (!searchQuery) { setIsSearchOpen(false); } }} className="w-full pl-9 pr-3 py-2 bg-gray-800 dark:bg-gray-200 text-gray-200 dark:text-gray-900 placeholder-gray-500 dark:placeholder-gray-600 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-gray-600 dark:focus:ring-gray-400 transition-all" />
)} ) : ( <> )}
{/* Chat List */}
{chats.length === 0 ? ( !isCollapsed && (

Henüz sohbet yok

) ) : filteredChats.length === 0 ? ( !isCollapsed && (

Sonuç bulunamadı

) ) : (
{filteredChats.map((chat) => (
onSelectChat(chat.id)} title={isCollapsed ? chat.title : ''} > {!isCollapsed && ( <>

{chat.title}

)}
))}
)}
{/* Footer */}
); };