SIGN IN SIGN UP

markdown: Style tables with the `table_*` theme tokens (#2834)

| Before | After |
| - | - |
| <img width="1012" height="844" alt="image"
src="https://github.com/user-attachments/assets/b15edcca-002d-4bf4-8ef8-b76e28d99869"
/> | <img width="1012" height="844" alt="image"
src="https://github.com/user-attachments/assets/08795999-3694-4477-bc0d-ec2d9a78ae9b"
/> |

Markdown tables in `TextView` never used the `table_*` theme tokens —
only `theme().border` and `theme().radius`. The header row was
pixel-identical to the body rows, the grid lines sat a shade darker than
every other table in the library, and the container had no background,
so a table dropped onto a colored surface let it show through.

This aligns them with `Table` / `DataTable`:

- the header row (the first row, as `table_data` and `to_markdown`
already treat it) gets the `table_head` background and
`table_head_foreground` text — no bold, same as `TableHeader`;
- inner grid lines move from `border` to `table_row_border`, keeping the
outer frame on `border` like `DataTable`;
- the bordered container gets the `table` background.

`render_wrap_table` and `render_scroll_table` change together. Column
separators, font size and cell padding are untouched.
`TextViewStyle::table_head` is a new hook for overriding the header row.

Verified in `examples/markdown` in both table layouts.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
F
Floyd Wang committed
26849e063f53a5d1c18a25d42bc6b34f75720176
Parent: 9e06992
Committed by GitHub <noreply@github.com> on 8/26/2026, 2:56:54 AM