Skip to content
File

Blob: src/client/components/FileIcon.tsx

typescript38 lines
1import type { FileIconName } from "@/shared/web";
2import {
3 Database,
4 File,
5 FileCode2,
6 FileDiff,
7 FileImage,
8 FileSpreadsheet,
9 FileSymlink,
10 FileText,
11 Folder,
12 Terminal,
13 type LucideIcon,
14} from "lucide-react";
15 
16type FileIconProps = {
17 name: FileIconName;
18 className?: string;
19};
20 
21const iconByName: Record<FileIconName, LucideIcon> = {
22 code: FileCode2,
23 database: Database,
24 diff: FileDiff,
25 file: File,
26 folder: Folder,
27 image: FileImage,
28 spreadsheet: FileSpreadsheet,
29 symlink: FileSymlink,
30 terminal: Terminal,
31 text: FileText,
32};
33 
34export function FileIcon({ name, className }: FileIconProps) {
35 const Icon = iconByName[name];
36 return <Icon className={className} aria-hidden="true" />;
37}