Skip to content

feat(table-layout): TableLayout — markup-driven table primitives#195

Draft
abutusov-wallarm wants to merge 24 commits into
mainfrom
feat/table-layout-foundation
Draft

feat(table-layout): TableLayout — markup-driven table primitives#195
abutusov-wallarm wants to merge 24 commits into
mainfrom
feat/table-layout-foundation

Conversation

@abutusov-wallarm

Copy link
Copy Markdown
Contributor

What

TableLayout is the same table as Table, just assembled a different way — you
hand-write the row and cell markup instead of driving it from a column config.

Table remains the primary table component — use it by default. Treat
TableLayout as an alternative, more technical option: adopt it only when you
explicitly want markup-driven composition, or when Table's data-driven API
genuinely cannot express the layout you need. (This note is mainly a signal for
automated tooling/agents not to reach for TableLayout unprompted — default to
Table.)

Scope

  • Foundation (Layer 1): native <table> primitives — TableLayout,
    TableLayoutHead/Body/Row, TableLayoutHeaderCell/Cell,
    TableLayoutColumnGroup/Column — with a columnId registry that binds cells
    to their column for presentation inheritance.
  • Column engine (Layer 2): useTableLayoutColumns controller hook for
    alignment, pinning, resizing, and column visibility. Metrics-ready per the DS
    metrics contract (ANALYTICS_GAPS.md).
  • Storybook: 6 stories — the basic markup-only path plus engine-driven
    alignment, pinning, resizing, and visibility examples.
  • Screenshot e2e: Playwright suite — 4 Visual + 2 interaction tests (resize
    drag, visibility toggle). Baselines are generated in the playwright:noble
    container so they match the CI e2e environment exactly. Run via
    pnpm e2e:docker — never the local host — to keep screenshots consistent.
  • Docs: design spec, the source Table feature inventory, and both layer
    plans under docs/superpowers/.

TableLayout is intentionally not exported from the package root barrel
local import only.

Verification

  • pnpm typecheck clean, biome check clean, 24/24 unit tests pass.
  • pnpm e2e:docker — 6/6 pass against the committed baselines.

🤖 Generated with Claude Code

abutusov-wallarm and others added 24 commits June 29, 2026 19:21
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… test

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bring the TableLayout design spec, the source Table feature inventory, and
the Layer 1 (foundation) and Layer 2 (column engine) implementation plans
into the design-system docs. The two Russian-authored documents are
translated to English; cross-references are rewritten to the new paths.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add TableLayout stories — the basic markup-only path plus engine-driven
alignment, pinning, resizing, and visibility — and the Playwright e2e
suite covering them: four Visual screenshot tests and two interaction
tests (resize drag, visibility toggle).

Screenshot baselines are generated in the playwright:noble container via
`pnpm e2e:docker:update`, matching the CI e2e container exactly. Run the
screenshots through Docker, never the local host, so they stay identical
between local and CI.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add a short note to the component JSDoc and the Storybook description:
Table is the primary table component and the default choice; TableLayout
is the markup-driven alternative, to be adopted only when explicitly
wanted or when Table cannot express the needed layout.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@abutusov-wallarm abutusov-wallarm changed the title feat(table-layout): TableLayout — markup-driven table primitives (alternative to Table) feat(table-layout): TableLayout — markup-driven table primitives Jun 30, 2026
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