1.0.9 • Published 10 months ago

react-file-xplorer v1.0.9

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

React File Xplorer

A lightweight, customizable file xplorer component for React applications. Create beautiful hierarchical file and folder structures with minimal setup and maximum flexibility.

NPM version

✨ Features

  • 🎯 Simple to Use: Drop-in component with minimal configuration required
  • 🎨 Fully Customizable: Custom icons, sizes, and styling options
  • 📱 Responsive: Works seamlessly across all device sizes
  • 🌳 Visual Hierarchy: Clear parent-child relationships with guide lines
  • 🔍 Type Safe: Written in TypeScript for reliable development

🚀 Installation

npm install react-file-xplorer
# or
yarn add react-file-xplorer
# or
pnpm add react-file-xplorer

📖 Usage

import { Explorer } from "react-file-xplorer";

const fileStructure = {
  id: "root",
  name: "Project",
  isFolder: true,
  items: [
    {
      id: "src",
      name: "src",
      isFolder: true,
      items: [
        {
          id: "app",
          name: "app.tsx",
          isFolder: false,
          items: [],
          icon: "/path/to/custom-icon.svg", // Custom icon for this file
        },
      ],
    },
  ],
};

export default function App() {
  const handleItemClick = (id: string) => {
    console.log("Clicked item:", id);
  };

  return (
    <Explorer
      fileStructure={fileStructure}
      onItemClick={handleItemClick}
      isRootExpanded={true}
    />
  );
}

⚙️ Props

PropTypeDefaultDescription
fileStructureFileStructureRequiredThe hierarchical data structure to display
iconsIconOptionsDefault iconsCustom icons for files and folders
levelnumber0Initial indentation level
onItemClick(id: string) => voidundefinedCallback when item is clicked
isRootExpandedbooleanfalseWhether root folder is expanded by default

FileStructure Type

type FileStructure = {
  id: string;
  name: string;
  isFolder: boolean | null;
  items: FileStructure[];
  icon?: string; // Optional custom icon for this file or folder
};

IconOptions Type

type IconOptions = {
  size?: number;
  fileIcon?: string;
  folderOpenIcon?: string;
  folderClosedIcon?: string;
  chevronUpIcon?: string;
  chevronDownIcon?: string;
};

🎨 Customization

Custom Icons

<Explorer
  fileStructure={fileStructure}
  icons={{
    size: 16,
    fileIcon: "/path/to/file-icon.svg",
    folderOpenIcon: "/path/to/folder-open.svg",
    folderClosedIcon: "/path/to/folder-closed.svg",
    chevronUpIcon: "/path/to/chevron-up.svg",
    chevronDownIcon: "/path/to/chevron-down.svg",
  }}
/>

Custom Icons for Individual Items

You can set custom icons for individual files and folders by specifying the icon property in the FileStructure:

const fileStructure = {
  id: "root",
  name: "Project",
  isFolder: true,
  items: [
    {
      id: "src",
      name: "src",
      isFolder: true,
      items: [
        {
          id: "app",
          name: "app.tsx",
          isFolder: false,
          items: [],
          icon: "/path/to/custom-icon.svg", // Custom icon for this file
        },
      ],
    },
  ],
};

Note: If an icon is specified in the FileStructure for a file or folder, it will override the corresponding icon from the icons object.

Custom Styling

The component can be customized using your own classes:

<div className="custom-wrapper">
  <Explorer fileStructure={fileStructure} />
</div>

📝 License

MIT © Chamara Senarath

🤝 Contributing

Contributions, issues and feature requests are welcome! Feel free to check issues page.

💖 Show your support

Give a ⭐️ if this project helped you!

1.0.9

10 months ago

1.0.8

10 months ago

1.0.7

10 months ago

1.0.6

10 months ago

1.0.5

10 months ago

1.0.4

10 months ago

1.0.3

10 months ago

1.0.2

10 months ago

1.0.1

10 months ago

1.0.0

10 months ago