import { useState, useEffect } from 'react'; import { invoke } from '@tauri-apps/api/tauri'; interface FileItem { name: string; path: string; is_dir: boolean; } const FileTree = ({ onSelect }: { onSelect: (path: string) => void }) => { const [tree, setTree] = useState([]); const [expanded, setExpanded] = useState>({}); useEffect(() => { const loadTree = async () => { try { const result = await invoke('list_files', { path: '' }); setTree(result.filter(item => item.is_dir)); } catch (error) { console.error('Error loading file tree:', error); } }; loadTree(); }, []); const toggleExpand = async (path: string) => { setExpanded(prev => ({ ...prev, [path]: !prev[path] })); onSelect(path); }; return (

File Tree

    {tree.map((item) => (
  • toggleExpand(item.path)} className="flex items-center cursor-pointer hover:bg-gray-100 p-1 rounded" > {expanded[item.path] ? '📂' : '📁'} {item.name}
    {expanded[item.path] && (
    )}
  • ))}
); }; export default FileTree;