# PkTable raw mode: HeadContent/ChildContent/FootContent composed into pk-table's raw slot

> Plainkit 0.28.0. Generated by scripts/build-skills.mjs from Components/PkTable.razor. Do not edit: change the source and run the generator.

Set `ChildContent` on `PkTable<TItem>` (write `TItem="object"`; `Columns` and `Items` are then ignored) to author the table markup yourself: the element's default slot takes one complete table (`thead`, `tbody`, `tfoot`), which Blazor composes from `HeadContent`, `ChildContent` and `FootContent`, so a static header and a `@foreach` body over your own collection need no wrapper. The scroll frame, `ToolbarContent`/`FooterContent` and sticky header/column are shared with the data-driven mode.

```razor
<PkTable TItem="object" Label="Orders" Caption="Recent orders">
    <HeadContent><tr><th>Number</th><th>Total</th></tr></HeadContent>
    <ChildContent>
        @foreach (var order in _orders)
        {
            <tr><td>@order.Number</td><td>@order.Total.ToString("C")</td></tr>
        }
    </ChildContent>
</PkTable>
```

`class` and other attributes go to the `pk-table` frame, `TableClass` to the inner table. A column width needs no class: put `width="fit"` (shrink to the content, no wrap) or `width="sm"`, `"md"`, `"lg"` (6, 10 or 16rem) on a `th` or `td`. Set `IsEmpty` with `EmptyText` or `EmptyContent` to show that instead of a header over no rows.

## Raw-mode parameters of `PkTable`

| Parameter | Type | Description |
|---|---|---|
| `FootContent` | `RenderFragment?` | The tfoot (not FooterContent, the slot below the table). Raw mode: the tfoot rows. Data-driven: a footer or summary row, one cell spanning every column (a trailing card on a phone). Data-driven: a footer or summary row (one cell spanning every column; a trailing card on a phone). Raw mode (ChildContent set) renders it as the tfoot of the authored table instead. |
| `ChildContent` | `RenderFragment?` | Raw mode: the table's tbody rows (typically a @foreach over your own collection). Set, the table is not data-driven: Columns and Items are ignored, and use TItem="object". |
| `HeadContent` | `RenderFragment?` | Raw mode: the thead, e.g. one tr of th cells. Left off, no header row. |
| `TableClass` | `string?` | Raw mode: a class for the inner table (the frame takes class and other attributes). |
| `IsEmpty` | `bool` | Raw mode: no rows. With EmptyContent or EmptyText set, that is shown instead of the table. |
