import React, { useState, useMemo } from 'react'; import { Folder, ChevronDown, FileText, Receipt } from 'lucide-react'; import { FolderData } from '../types'; import FileItem from './FileItem'; interface FolderSectionProps { folder: FolderData; searchTerm: string; onPreview: (url: string) => void; } const FolderSection: React.FC = ({ folder, searchTerm, onPreview }) => { const [isOpen, setIsOpen] = useState(true); // Memoize sorted and filtered files for performance const sortedAndFilteredFiles = useMemo(() => { // 1. Sort by lastModified date (newest first) const sorted = [...folder.files].sort((a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime() ); // 2. Filter by search term if it exists if (!searchTerm) return sorted; return sorted.filter(file => file.name.toLowerCase().includes(searchTerm.toLowerCase()) ); }, [folder.files, searchTerm]); // Hide folder section if search term exists and no files match if (searchTerm && sortedAndFilteredFiles.length === 0) { return null; } const getFolderIcon = () => { const nameLower = folder.name.toLowerCase(); const iconClasses = "w-6 h-6 text-primary"; if (nameLower.includes('report')) { return ; } if (nameLower.includes('invoice')) { return ; } return ; }; return (
{sortedAndFilteredFiles.length > 0 ? (
{sortedAndFilteredFiles.map(file => ( ))}
) : (

No files in this folder.

)}
); }; export default FolderSection;