import React, { useState } from 'react'; import { Category, Prompt } from '../types'; import { FolderIcon, FileIcon, PlusIcon, TrashIcon } from './Icons'; interface SidebarProps { categories: Category[]; prompts: Prompt[]; onSelectPrompt: (id: string) => void; onAddCategory: (parentId: string | null) => void; onAddPrompt: (categoryId: string) => void; onDeleteCategory: (id: string) => void; selectedPromptId: string | null; } const Sidebar: React.FC = ({ categories, prompts, onSelectPrompt, onAddCategory, onAddPrompt, onDeleteCategory, selectedPromptId }) => { const [expanded, setExpanded] = useState>({}); const toggleExpand = (id: string) => { setExpanded(prev => ({ ...prev, [id]: !prev[id] })); }; const renderCategory = (category: Category, depth: number = 0) => { const categoryPrompts = prompts.filter(p => p.categoryId === category.id); const isExpanded = expanded[category.id]; return (
toggleExpand(category.id)} >
{category.name}
{isExpanded && (
{categoryPrompts.map(prompt => (
onSelectPrompt(prompt.id)} className={`flex items-center space-x-3 px-4 py-2 my-0.5 cursor-pointer rounded-lg text-sm transition-all duration-200 ${selectedPromptId === prompt.id ? 'bg-indigo-600 text-white shadow-md shadow-indigo-100' : 'hover:bg-indigo-50 text-slate-500 hover:text-indigo-600'} `} style={{ marginLeft: `${depth * 4}px` }} > {prompt.name}
))}
)}
); }; return ( ); }; export default Sidebar;