import { useState } from 'react' import { FiFolder, FiFile, FiPlus, FiTrash2, FiEdit, FiSave } from 'react-icons/fi' export default function ProjectManager() { const [projects, setProjects] = useState([ { id: 1, name: 'React App', files: [ { id: 1, name: 'index.js', content: '// Main entry point\nimport React from "react";' }, { id: 2, name: 'App.js', content: 'function App() {\n return
Hello
;\n}' } ] }, { id: 2, name: 'Python Scripts', files: [ { id: 1, name: 'main.py', content: '# Main script\nprint("Hello World")' } ] } ]) const [selectedProject, setSelectedProject] = useState(null) const [selectedFile, setSelectedFile] = useState(null) const [newProjectName, setNewProjectName] = useState('') const [newFileName, setNewFileName] = useState('') const [fileContent, setFileContent] = useState('') const [isEditing, setIsEditing] = useState(false) const handleCreateProject = () => { if (!newProjectName.trim()) return const newProject = { id: Date.now(), name: newProjectName, files: [] } setProjects([...projects, newProject]) setNewProjectName('') } const handleCreateFile = () => { if (!newFileName.trim() || !selectedProject) return const newFile = { id: Date.now(), name: newFileName, content: '' } const updatedProjects = projects.map(project => project.id === selectedProject.id ? { ...project, files: [...project.files, newFile] } : project ) setProjects(updatedProjects) setNewFileName('') } const handleSelectFile = (file) => { setSelectedFile(file) setFileContent(file.content) setIsEditing(false) } const handleSaveFile = () => { if (!selectedFile || !selectedProject) return const updatedProjects = projects.map(project => { if (project.id === selectedProject.id) { const updatedFiles = project.files.map(file => file.id === selectedFile.id ? { ...file, content: fileContent } : file ) return { ...project, files: updatedFiles } } return project }) setProjects(updatedProjects) setIsEditing(false) } const handleDeleteProject = (projectId) => { setProjects(projects.filter(project => project.id !== projectId)) if (selectedProject?.id === projectId) { setSelectedProject(null) setSelectedFile(null) } } const handleDeleteFile = (fileId) => { if (!selectedProject) return const updatedProjects = projects.map(project => { if (project.id === selectedProject.id) { return { ...project, files: project.files.filter(file => file.id !== fileId) } } return project }) setProjects(updatedProjects) if (selectedFile?.id === fileId) { setSelectedFile(null) setFileContent('') } } return (