import React, { useState } from 'react'; import { FaSort, FaSortUp, FaSortDown } from "react-icons/fa"; import { motion, AnimatePresence } from "framer-motion"; import DateienItem from './DateienItem'; import { UserFile } from '../../hooks/useFiles'; import { useLanguage } from '../../contexts/LanguageContext'; import styles from './DateienLists.module.css'; // Sort types type SortField = 'file_name' | 'action' | 'size' | 'created_at'; type SortDirection = 'asc' | 'desc'; interface DateienCreatedProps { files: UserFile[]; onFileDeleted: () => void; onOptimisticDelete?: (fileId: number) => void; } const DateienCreated: React.FC = ({ files, onFileDeleted, onOptimisticDelete }) => { const { t } = useLanguage(); const [sortField, setSortField] = useState('created_at'); const [sortDirection, setSortDirection] = useState('desc'); // Filter files for created (agent_created) const createdFiles = files.filter(file => file.source === 'agent_created'); // Handle sorting const handleSort = (field: SortField) => { if (field === sortField) { setSortDirection(sortDirection === 'asc' ? 'desc' : 'asc'); } else { setSortField(field); setSortDirection(field === 'created_at' ? 'desc' : 'asc'); } }; // Sort files const sortedFiles = [...createdFiles].sort((a, b) => { let result = 0; switch (sortField) { case 'file_name': result = a.file_name.localeCompare(b.file_name); break; case 'action': result = a.action.localeCompare(b.action); break; case 'size': const sizeA = a.size ?? 0; const sizeB = b.size ?? 0; result = sizeA - sizeB; break; case 'created_at': result = new Date(a.created_at).getTime() - new Date(b.created_at).getTime(); break; } return sortDirection === 'asc' ? result : -result; }); // Helper to render sort icon const renderSortIcon = (field: SortField) => { if (sortField !== field) return ; return sortDirection === 'asc' ? : ; }; if (sortedFiles.length === 0) { return (

{t('files.no_ai_files', 'No AI-created files found.')}

); } return ( {/* Table Headers */}
handleSort('file_name')}> {t('files.header.name', 'Name')} {renderSortIcon('file_name')}
handleSort('action')}> {t('files.header.type', 'Type')} {renderSortIcon('action')}
handleSort('size')}> {t('files.header.size', 'Size')} {renderSortIcon('size')}
handleSort('created_at')}> {t('files.header.date', 'Date')} {renderSortIcon('created_at')}
{/* Files List with AI-created indicator */} {sortedFiles.map((file: UserFile) => ( onOptimisticDelete(file.id) : undefined} /> ))}
); }; export default DateienCreated;