"use client"; import { FileText, Folder, Trash2 } from "lucide-react"; import GoogleDriveIcon from "@/components/icons/google-drive-logo"; import OneDriveIcon from "@/components/icons/one-drive-logo"; import SharePointIcon from "@/components/icons/share-point-logo"; import { Button } from "@/components/ui/button"; import type { CloudFile } from "./types"; interface FileItemProps { provider: string; file: CloudFile; shouldDisableActions: boolean; onRemove: (fileId: string) => void; } const getFileIcon = (mimeType: string) => { if (mimeType.includes("folder")) { return ; } return ; }; const getMimeTypeLabel = (mimeType: string) => { const typeMap: { [key: string]: string } = { "application/vnd.google-apps.document": "Google Doc", "application/vnd.google-apps.spreadsheet": "Google Sheet", "application/vnd.google-apps.presentation": "Google Slides", "application/vnd.google-apps.folder": "Folder", "application/pdf": "PDF", "text/plain": "Text", "application/vnd.openxmlformats-officedocument.wordprocessingml.document": "Word Doc", "application/vnd.openxmlformats-officedocument.presentationml.presentation": "PowerPoint", }; return typeMap[mimeType] || mimeType?.split("/").pop() || "Document"; }; const formatFileSize = (bytes?: number) => { if (!bytes) return ""; const sizes = ["B", "KB", "MB", "GB", "TB"]; if (bytes === 0) return "0 B"; const i = Math.floor(Math.log(bytes) / Math.log(1024)); return `${(bytes / 1024 ** i).toFixed(1)} ${sizes[i]}`; }; const getProviderIcon = (provider: string) => { switch (provider) { case "google_drive": return ; case "onedrive": return ; case "sharepoint": return ; default: return ; } }; export const FileItem = ({ file, onRemove, provider }: FileItemProps) => (
{provider ? getProviderIcon(provider) : getFileIcon(file.mimeType)} {file.name} {getMimeTypeLabel(file.mimeType)}
{formatFileSize(file.size) || "—"}
);