import {
Folder,
FileText,
Image,
FileCode,
File,
FileType,
BookOpen,
Film,
} from "lucide-react";
const EXT_MAP = {
md: { icon: FileText, color: "#2980b9", label: "Markdown" },
txt: { icon: FileText, color: "#7f8c8d", label: "Text" },
pdf: { icon: FileType, color: "#c0392b", label: "PDF" },
doc: { icon: FileText, color: "#2980b9", label: "Word" },
docx: { icon: FileText, color: "#2980b9", label: "Word" },
py: { icon: FileCode, color: "#27ae60", label: "Python" },
js: { icon: FileCode, color: "#d4a843", label: "JavaScript" },
jsx: { icon: FileCode, color: "#d4a843", label: "React" },
ts: { icon: FileCode, color: "#2980b9", label: "TypeScript" },
tsx: { icon: FileCode, color: "#2980b9", label: "TypeScript" },
cpp: { icon: FileCode, color: "#8e44ad", label: "C++" },
c: { icon: FileCode, color: "#8e44ad", label: "C" },
java: { icon: FileCode, color: "#d35400", label: "Java" },
cs: { icon: FileCode, color: "#8e44ad", label: "C#" },
jpg: { icon: Image, color: "#16a085", label: "Image" },
jpeg: { icon: Image, color: "#16a085", label: "Image" },
png: { icon: Image, color: "#16a085", label: "Image" },
gif: { icon: Image, color: "#16a085", label: "Image" },
webp: { icon: Image, color: "#16a085", label: "Image" },
svg: { icon: Image, color: "#16a085", label: "SVG" },
};
export default function FileIcon({ name, type, size = 20 }) {
if (type === "dir") return <Folder size={size} color="#d4a843" />;
const ext = name.split(".").pop()?.toLowerCase();
const meta = EXT_MAP[ext] || { icon: File, color: "#7f8c8d" };
const Icon = meta.icon;
return <Icon size={size} color={meta.color} />;
}
export function getExtMeta(name) {
const ext = name.split(".").pop()?.toLowerCase();
return EXT_MAP[ext] || { icon: File, color: "#7f8c8d", label: "File" };
}
export function isText(name) {
const ext = name.split(".").pop()?.toLowerCase();
return [
"md",
"txt",
"py",
"js",
"jsx",
"ts",
"tsx",
"cpp",
"c",
"java",
"cs",
"json",
"yaml",
"yml",
"sh",
"bash",
"html",
"css",
].includes(ext);
}
export function isImage(name) {
const ext = name.split(".").pop()?.toLowerCase();
return ["jpg", "jpeg", "png", "gif", "webp", "svg"].includes(ext);
}
export function isPDF(name) {
return name.toLowerCase().endsWith(".pdf");
}