import { Card } from "@/components/ui/card"; import { Skeleton } from "@/components/ui/skeleton"; import { Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { Tabs, TabsContent, TabsList } from "@/components/ui/tabs"; /** * Skeleton para a página de relatórios de categorias * Mantém a mesma estrutura de filtros, tabs e conteúdo */ export function CategoryReportSkeleton() { return (
{/* Filters Skeleton */}
{/* Category MultiSelect */} {/* Start Period */} {/* End Period */} {/* Clear Button */}
{/* Export Button */}
{/* Tabs Skeleton */}
{/* Desktop Table Skeleton */}
{/* Mobile Cards Skeleton */}
{Array.from({ length: 5 }).map((_, i) => (
{/* Category name with icon */}
{/* Type badge */} {/* Values */}
{Array.from({ length: 3 }).map((_, j) => (
))}
))}
{/* Chart Skeleton */}
{/* Chart title area */}
{/* Chart area */} {/* Legend */}
{Array.from({ length: 6 }).map((_, i) => (
))}
); } /** * Skeleton para a tabela de relatórios de categorias * Mantém a estrutura de colunas: Categoria, Tipo, múltiplos períodos, Total */ function CategoryReportTableSkeleton() { // Simula 6 períodos (colunas) const periodColumns = 6; return ( {/* Categoria */} {/* Period columns */} {Array.from({ length: periodColumns }).map((_, i) => ( ))} {/* Total */} {Array.from({ length: 8 }).map((_, rowIndex) => ( {/* Category name with dot and icon */}
{/* Period values */} {Array.from({ length: periodColumns }).map((_, colIndex) => (
{colIndex > 0 && ( )}
))} {/* Total */}
))}
{/* Total label */} {/* Period totals */} {Array.from({ length: periodColumns }).map((_, i) => ( ))} {/* Grand total */}
); }