import { useEffect, useRef, useState } from 'react'; import { FolderPlus, Upload, FolderUp, Scissors, Copy, ClipboardPaste, Trash2, X, Check } from 'lucide-react'; type ToolbarProps = { onCreateDir: (name: string) => void; onUpload: (files: FileList) => void; selectionCount: number; hasClipboard: boolean; onCut: () => void; onCopy: () => void; onPaste: () => void; onDeleteSelected: () => void; onClearSelection: () => void; }; export const Toolbar = ({ onCreateDir, onUpload, selectionCount, hasClipboard, onCut, onCopy, onPaste, onDeleteSelected, onClearSelection, }: ToolbarProps) => { const [showInput, setShowInput] = useState(false); const [folderName, setFolderName] = useState(''); const fileInputRef = useRef(null); const folderInputRef = useRef(null); useEffect(() => { const input = folderInputRef.current; if (!input) return; input.setAttribute('webkitdirectory', ''); }, []); const handleCreate = () => { const name = folderName.trim(); if (!name) return; onCreateDir(name); setFolderName(''); setShowInput(false); }; if (selectionCount > 0) { return (
{selectionCount} selected {hasClipboard && ( )}
); } return (
{showInput ? (
{ ev.preventDefault(); handleCreate(); }} className="flex items-center gap-2" > setFolderName(ev.target.value)} placeholder="Folder name" className="h-8 w-40 text-sm rounded-md border border-duck-dark/20 bg-white/60 text-duck-dark placeholder:text-duck-dark/40 outline-none focus:border-duck-teal/50 px-2" onKeyDown={(ev) => { if (ev.key === 'Escape') { setShowInput(false); setFolderName(''); } }} />
) : ( )} {hasClipboard && ( )} { if (ev.target.files?.length) { onUpload(ev.target.files); ev.target.value = ''; } }} /> { if (ev.target.files?.length) { onUpload(ev.target.files); ev.target.value = ''; } }} />
); };