Skip to content

A table is a component, and scroll wrappers need a min-width to engage - #300

Merged
serenakeyitan merged 2 commits into
mainfrom
authoring/table-is-a-component
Aug 28, 2026
Merged

A table is a component, and scroll wrappers need a min-width to engage#300
serenakeyitan merged 2 commits into
mainfrom
authoring/table-is-a-component

Conversation

@serenakeyitan

Copy link
Copy Markdown
Collaborator

#282 fixed the table treatment and #284 reverted it — not because the design was wrong, but because it was written into the overlay's injected reader CSS, which is being sunset. That revert named the destination: "the fix belongs in authoring/". This puts it there, where the component model now has a place for it.

The table

Every cell is currently a tinted chip with a 3px gutter, which reads as a pile of blocks rather than a table. The gutters cut the columns, so the eye has no continuous edge to scan down, and rounded corners multiply with every row. Fills are also the worst case for this reader, where dark mode is a whole-page invert — a filled cell becomes a slab while a hairline only changes colour.

A table is now a component: one hairline card, a rule under each row, nothing filled, a header in the muted ink rather than a tinted band, tabular numerals. All four styles give it their own values the way they already do for the other nine, and the three "tables inherit the overlay default" lines point at that instead of at the layer that is going away.

Two things the contract was missing

Scroll wrappers need a min-width. components.md said to wrap a wide figure in diagram-box so it scrolls, but overflow-x on the wrapper does nothing while the child is width: 100% — it can never overflow, so it shrinks, and a 696-unit figure's labels land near 5px on a phone. The rule existed only in SKILL.md's responsive section, one file away from where figures are described.

The fill has to be cleared, not just the borders. Writing the ruled-card treatment into a document left every cell filled anyway: the rule set border and padding but declared no background, so :where(body th, td) { background: var(--td-surface) } went on applying. Measured on the published page, the table area went from 0.2% white to 89.4% once background: transparent was added. A treatment that changes the borders and not the fill looks like the change silently not landing, which is the expensive kind of wrong.

Checks

46 offline suites green; the component-coverage test now expects ten parts per style rather than nine. Verified end to end on tdoc.dev by publishing the doc and sampling the rendered table.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Xw9Mt3rV3ujnejPr41pqvz

serenakeyitan and others added 2 commits August 28, 2026 02:59
#282 fixed the table treatment and #284 reverted it — not because the design
was wrong, but because it was written into the overlay's injected reader CSS,
which is being sunset. That revert said where it belonged: "the fix belongs in
authoring/". This puts it there.

Every cell is currently a tinted chip with a 3px gutter, which reads as a pile
of blocks rather than a table: the gutters cut the columns, so there is no
continuous edge to scan down, and rounded corners multiply with every row.
Fills are also the worst case for this reader, where dark mode is a whole-page
invert — a filled cell becomes a slab, while a hairline only changes colour.

So a table is now a component: one hairline card, a rule under each row,
nothing filled, a header in the muted ink rather than a tinted band, tabular
numerals. All four styles give it their own values, the way they already do
for the other nine. The three "tables inherit the overlay default" lines now
point at that instead of at the layer that is going away.

The scroll wrappers get the rule that was missing. components.md said to wrap
a wide figure in diagram-box so it scrolls, but overflow-x on the wrapper does
nothing while the child is width:100% — it can never overflow. It shrinks
instead, and a 696-unit figure's labels land near 5px on a phone. The rule
existed only in SKILL.md's responsive section, one file away from where
figures are described.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Writing the ruled-card treatment into a doc left every cell filled. The rule
set border and padding but declared no background, so the reader's
:where(body th, td) { background: var(--td-surface) } went on applying — the
borders changed and the fill did not, which looks like the treatment silently
not landing.

Measured on the published page: 0.2% of the table area was white before,
89.4% after adding background: transparent.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Preview

Open this: https://pr-300-tdoc-preview.jyshi1107.workers.dev/d/conway-life/v/2

This link is unique to this PR. New commits update the same URL. It is not tdoc.dev.

Preview has no Durable Object — concurrent comments use the KV fallback. Data expires in 14 days.

@serenakeyitan
serenakeyitan merged commit b4e5d10 into main Aug 28, 2026
4 checks passed
@serenakeyitan
serenakeyitan deleted the authoring/table-is-a-component branch August 28, 2026 10:06
serenakeyitan added a commit that referenced this pull request Aug 28, 2026
…hanged (#301)

The ruled-card table shipped with row rules that stop at the column boundary
and curve away instead of crossing the table.

Same class of miss as the fill in #300, one property along. The reader styles
cells as standalone chips — a fill and a corner radius of their own — and both
survive any rule that does not name them. #300 added background:transparent
and stopped there, so border-radius:8px stayed on every cell. Under
border-collapse:separate each cell is its own box, so a border-bottom on it is
rounded off at both ends, and two rounded ends meeting in the middle read as a
break in the rule.

Counting gaps along a row rule on a two-column table: 3 with the radius left
in place, 0 without it.

components.md now says to reset the cell's shape rather than the parts being
changed, and names both properties. The card carries the radius; the cells do
not.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
serenakeyitan added a commit that referenced this pull request Aug 28, 2026
Two things about the table treatment from #300.

The radius is gone from the contract and from all four styles. A rounded card
competes with the figures around it, and on the cells it was worse than
decorative — that was the break in the row rules #301 chased: under
border-collapse:separate each cell is its own box, so a rounded one truncates
the rule at both ends and two of those meeting in the middle read as a gap
rather than a continuous edge. default, paper and editorial carried rx:12,
rx:6 and rx:10; all four now say square, which is what technical already said.

The header was set at 13.5px in the muted ink — smaller and greyer than the
body, so it read as a quieter row rather than a different kind of row. It now
takes the style's label-type token, which every entry already declares, over
its own rule a step stronger than the row rules beneath it. A table header is
a label, so this is the token doing the job it exists for rather than a new
rule invented for tables.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant