import React, { useState } from 'react'; import { Group, Box, Text, ActionIcon, Checkbox, Divider } from '@mantine/core'; import DeleteIcon from '@mui/icons-material/Delete'; import { getFileSize, getFileDate } from '../../utils/fileUtils'; import { FileWithUrl } from '../../types/file'; interface FileListItemProps { file: FileWithUrl; isSelected: boolean; isSupported: boolean; onSelect: () => void; onRemove: () => void; onDoubleClick?: () => void; isLast?: boolean; } const FileListItem: React.FC = ({ file, isSelected, isSupported, onSelect, onRemove, onDoubleClick }) => { const [isHovered, setIsHovered] = useState(false); return ( <> setIsHovered(true)} onMouseLeave={() => setIsHovered(false)} > {}} // Handled by parent onClick size="sm" pl="sm" pr="xs" styles={{ input: { cursor: 'pointer' } }} /> {file.name} {getFileSize(file)} • {getFileDate(file)} {/* Delete button - fades in/out on hover */} { e.stopPropagation(); onRemove(); }} style={{ opacity: isHovered ? 1 : 0, transform: isHovered ? 'scale(1)' : 'scale(0.8)', transition: 'opacity 0.3s ease, transform 0.3s ease', pointerEvents: isHovered ? 'auto' : 'none' }} > { } ); }; export default FileListItem;