// Sidebar Component export function renderSidebar({ libraries, tags, selectedLibrary, selectedTag, onSelectLibrary, onSelectTag, onHome }) { const buildLibraryTree = (libs, parentId = null, depth = 0) => { return libs .filter(l => l.parentId === parentId) .map(lib => { const children = libs.filter(l => l.parentId === lib.id); const hasChildren = children.length > 0; const isSelected = selectedLibrary === lib.id; return `
${hasChildren ? '▶' : ''} 📁 ${escapeHtml(lib.name)}
${hasChildren ? `
${buildLibraryTree(libraries, lib.id, depth + 1)}
` : ''}
`; }) .join(''); }; // Store callbacks in a way that's safe and doesn't rely on inline script execution const callbacks = { onSelectLibrary, onSelectTag, onHome }; return ` `; } function escapeHtml(str) { if (!str) return ''; const div = document.createElement('div'); div.textContent = str; return div.innerHTML; }