Files
IPFS-portal/src/app/explorer/components/FileIcon.tsx
T

49 lines
1.1 KiB
TypeScript
Raw Normal View History

'use client';
import {
FileText,
Code,
Code2,
Image,
File,
Folder,
} from 'lucide-react';
interface FileIconProps {
name: string;
type: 'file' | 'dir';
className?: string;
}
export default function FileIcon({ name, type, className = 'w-4 h-4' }: FileIconProps) {
if (type === 'dir') {
return <Folder className={`${className} text-accent-cyan`} />;
}
const ext = name.split('.').pop()?.toLowerCase() ?? '';
switch (ext) {
case 'md':
return <FileText className={`${className} text-surface-400`} />;
case 'json':
return <Code className={`${className} text-surface-400`} />;
case 'js':
case 'ts':
case 'py':
case 'css':
case 'html':
return <Code2 className={`${className} text-surface-400`} />;
case 'jpg':
case 'jpeg':
case 'png':
case 'gif':
case 'webp':
case 'svg':
return <Image className={`${className} text-surface-400`} />;
case 'pdf':
return <File className={`${className} text-surface-400`} />;
default:
return <File className={`${className} text-surface-400`} />;
}
}