import { useState } from 'react' import { ChevronRight, ChevronDown, Folder, FolderOpen, Lock } from 'lucide-react' import type { StorageFolder } from '@/types/storage' interface FolderTreeProps { folders: StorageFolder[] selectedFolderId: string | null onSelect: (folderId: string | null) => void } interface TreeNode { folder: StorageFolder children: TreeNode[] } function buildTree(folders: StorageFolder[]): TreeNode[] { const map = new Map() const roots: TreeNode[] = [] for (const folder of folders) { map.set(folder.id, { folder, children: [] }) } for (const folder of folders) { const node = map.get(folder.id)! if (folder.parentId && map.has(folder.parentId)) { map.get(folder.parentId)!.children.push(node) } else { roots.push(node) } } return roots } export function FolderTree({ folders, selectedFolderId, onSelect }: FolderTreeProps) { const tree = buildTree(folders) return (
{tree.map((node) => ( ))}
) } function TreeItem({ node, depth, selectedFolderId, onSelect }: { node: TreeNode; depth: number; selectedFolderId: string | null; onSelect: (id: string) => void }) { const [expanded, setExpanded] = useState(depth < 2) const hasChildren = node.children.length > 0 const isSelected = selectedFolderId === node.folder.id return (
{expanded && hasChildren && (
{node.children.map((child) => ( ))}
)}
) }