<!-- source-hash: 5a6b383ae7cf5e7be578872567e8a3e2 -->
Defines the TypeScript types and interfaces for the `QueryReportTable` component family, covering data shapes, display configuration, and sub-component props.

## Key Components

| Export | Kind | Description |
|--------|------|-------------|
| `QueryResultRow` | Type | A single result row — a record mapping column keys to `string`, `number`, or `null` values |
| `QueryReportTableVariant` | Type | Visual style toggle: `'default'` (card rows) or `'compact'` (flat rows with border separators) |
| `QueryReportTableProps` | Interface | Full prop surface for the root table component, including data, loading state, export behavior, and layout options |
| `QueryReportTableHeaderProps` | Interface | Props for the header row sub-component |
| `QueryReportTableRowProps` | Interface | Props for individual data row rendering |
| `QueryReportTableSkeletonProps` | Interface | Props for the skeleton loading state sub-component |

## Usage Example

```typescript
import type {
  QueryResultRow,
  QueryReportTableProps,
} from './types'

const rows: QueryResultRow[] = [
  { id: 1, name: 'Workstation-01', status: 'online' },
  { id: 2, name: 'Workstation-02', status: null },
]

const tableProps: QueryReportTableProps = {
  title: 'Device Inventory',
  data: rows,
  loading: false,
  columnOrder: ['id', 'name', 'status'],
  columnWidth: 200,
  variant: 'compact',
  showExport: true,
  exportFilename: 'device-inventory',
  onExport: () => console.log('CSV exported'),
}
```

> **Note:** Column ordering is controlled via `columnOrder` — any keys not listed are automatically appended at the end, so you only need to specify the columns you want prioritized.