import { Image, X } from 'lucide-react'; import { toast } from 'sonner'; import { Button } from '@/components/ui/button'; import { Label } from '@/components/ui/label'; interface ImageUploaderProps { selectedFile: File | null; onFileChange: (file: File) => void; onClearFile: () => void; previewUrl: string; dragging: boolean; onDraggingChange: (dragging: boolean) => void; } const ImageUploader = ({ selectedFile, onFileChange, onClearFile, previewUrl, dragging, onDraggingChange, }: ImageUploaderProps) => { const handleClearFile = () => { if (previewUrl) { URL.revokeObjectURL(previewUrl); } onClearFile(); toast.success('图片已清除'); }; const handleInputChange = (e: React.ChangeEvent) => { const file = e.target.files?.[0]; if (file) { onFileChange(file); } }; const handleDragOver = (e: React.DragEvent) => { e.preventDefault(); onDraggingChange(true); }; const handleDragLeave = () => { onDraggingChange(false); }; const handleDrop = (e: React.DragEvent) => { e.preventDefault(); onDraggingChange(false); const droppedFile = e.dataTransfer.files?.[0]; if (droppedFile) { onFileChange(droppedFile); } }; return (
); }; export default ImageUploader;