"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) || "—"}
);