import React from "react"; import { ArrowUp, ChevronLeft, ChevronRight, Copy, FilePlus, Folder, FolderPlus, Grid3X3, Layout, List, Plus, RefreshCw, Search, Trash2, Upload, } from "lucide-react"; import { Button } from "@/components/button.tsx"; import { Input } from "@/components/input.tsx"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/dropdown-menu.tsx"; import type { FileItem } from "@/types/index"; type SortBy = "name" | "modified" | "size"; type SortOrder = "asc" | "desc"; type ViewMode = "grid" | "list"; type FileManagerToolbarProps = { t: (key: string) => string; currentPath: string; navIndex: number; navHistoryLength: number; isLoading: boolean; sshSessionId: string | null; selectedFiles: FileItem[]; searchQuery: string; setSearchQuery: (query: string) => void; viewMode: ViewMode; setViewMode: (mode: ViewMode) => void; sortBy: SortBy; setSortBy: (sortBy: SortBy) => void; sortOrder: SortOrder; setSortOrder: (sortOrder: SortOrder) => void; setMobileSidebarOpen: (updater: (open: boolean) => boolean) => void; goBack: () => void; goForward: () => void; goUp: () => void; navigateTo: (path: string) => void; handleRefreshDirectory: () => void; handleDeleteFiles: (files: FileItem[]) => void; handleCopyFiles: (files: FileItem[]) => void; handleFilesDropped: (fileList: FileList) => void; handleCreateNewFolder: () => void; handleCreateNewFile: () => void; }; function Breadcrumb({ currentPath, navigateTo, t, }: Pick) { return ( <>
{currentPath.split("/").map((part, i, arr) => ( {part === "" && i === 0 ? ( ) : part !== "" ? ( ) : null} {i < arr.length - 1 && part !== "" && ( )} {i === 0 && arr.length > 1 && part === "" && ( )} ))}
); } export function FileManagerToolbar({ t, currentPath, navIndex, navHistoryLength, isLoading, sshSessionId, selectedFiles, searchQuery, setSearchQuery, viewMode, setViewMode, sortBy, setSortBy, sortOrder, setSortOrder, setMobileSidebarOpen, goBack, goForward, goUp, navigateTo, handleRefreshDirectory, handleDeleteFiles, handleCopyFiles, handleFilesDropped, handleCreateNewFolder, handleCreateNewFile, }: FileManagerToolbarProps) { return (
{selectedFiles.length > 0 && (
)}
setSearchQuery(e.target.value)} className="h-8 pl-8 text-xs bg-muted/50 border-border rounded-none focus:ring-1 focus:ring-accent-brand/50" />
e.preventDefault()} > { setTimeout(() => handleCreateNewFolder(), 0); }} className="rounded-none text-xs font-semibold gap-2 focus:bg-accent-brand/10 focus:text-accent-brand" > {t("fileManager.newFolder")} { setTimeout(() => handleCreateNewFile(), 0); }} className="rounded-none text-xs font-semibold gap-2 focus:bg-accent-brand/10 focus:text-accent-brand" > {t("fileManager.newFile")} {t("fileManager.sortBy")} setSortBy(value as SortBy)} > {t("fileManager.sortByName")} {t("fileManager.sortByDate")} {t("fileManager.sortBySize")} setSortOrder(value as SortOrder)} > {t("fileManager.ascending")} {t("fileManager.descending")}
); }