A loading skeleton component for the `QueryReportTable`, rendering animated placeholder rows and columns while data is being fetched. ## Key Components **`QueryReportTableSkeleton`** — Main export. Renders a configurable grid of pulsing skeleton cells mimicking the table's header and row structure. **Props (`QueryReportTableSkeletonProps`):** | Prop | Type | Description | |------|------|-------------| | `rows` | `number` | Number of skeleton rows to render | | `columns` | `number` | Number of skeleton columns per row | | `columnWidth` | `number \| string` | Fixed width applied to each column cell | | `variant` | `'default' \| 'compact'` | Controls row height, spacing, and border style | | `className` | `string` | Optional additional CSS classes | **Variants:** - **`default`** — Taller rows (`80px`), card-style bordered containers with rounded corners - **`compact`** — Shorter rows (`56px`), flat bottom-border separators with tighter spacing ## Usage Example ```typescript import { QueryReportTableSkeleton } from './query-report-table-skeleton' // Default variant — card-style table loading state // Compact variant — dense list loading state ``` > **Note:** Cell placeholder widths vary pseudo-randomly per row/column using `(rowIndex * colIndex * 7) % 35` to produce a more natural-looking skeleton rather than uniform bars.