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 (