← Back to Exercises

File Explorer

📁 Root
"use client";
import { useState } from "react";
import styles from "./ExplorerView.module.css";

const folderData = {
  name: "Root",
  children: [
    { name: "public", children: [{ name: "index.html" }] },
    {
      name: "src",
      children: [
        { name: "components", children: [{ name: "Home.js" }] },
        { name: "App.js" }
      ]
    },
    { name: "package.json" }
  ]
};

function Folder({ data }) {
  const [isOpen, setIsOpen] = useState(false);
  return (
    <div className={styles.folder}>
      <div className={styles.folderTitle} onClick={() => setIsOpen(!isOpen)}>
        📁 {data.name}
      </div>
      {isOpen && (
        <div className={styles.folderContent}>
          {data.children?.map((child, index) =>
            child.children ? <Folder key={index} data={child} /> : <div key={index} className={styles.file}>📄 {child.name}</div>
          )}
        </div>
      )}
    </div>
  );
}

export default function ExplorerView() {
  return (
    <div className={styles.explorerContainer}>
      <Folder data={folderData} />
    </div>
  );
}