import React from 'react'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table'; import { Card, CardContent } from '@/components/ui/card'; import { useMobileResponsive, getTableResponsiveClasses } from '@/hooks/useMobileResponsive'; interface ResponsiveTableProps { headers: string[]; data: any[]; renderRow: (item: any, index: number) => React.ReactNode; renderMobileCard?: (item: any, index: number) => React.ReactNode; emptyMessage?: string; loading?: boolean; } export function ResponsiveTable({ headers, data, renderRow, renderMobileCard, emptyMessage = "Nenhum item encontrado", loading = false }: ResponsiveTableProps) { const { isMobile } = useMobileResponsive(); const tableClasses = getTableResponsiveClasses(isMobile); if (loading) { return (
); } if (data.length === 0) { return (
{emptyMessage}
); } // Mobile card view if (isMobile && renderMobileCard) { return (
{data.map((item, index) => ( {renderMobileCard(item, index)} ))}
); } // Desktop/Tablet table view return (
{headers.map((header, index) => ( {header} ))} {data.map((item, index) => ( {renderRow(item, index)} ))}
); }