feat: add Table component - #1102
Merged
Merged
Conversation
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
…signs Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
… CSS Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
frankieyan
marked this pull request as ready for review
August 19, 2026 07:21
frankieyan
marked this pull request as draft
August 19, 2026 07:21
This comment was marked as outdated.
This comment was marked as outdated.
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
…n React 18 Co-Authored-By: Claude <noreply@anthropic.com>
frankieyan
force-pushed
the
rmartins90/reactist-table-demo
branch
from
August 19, 2026 07:41
285ff91 to
260acf0
Compare
frankieyan
marked this pull request as ready for review
August 19, 2026 07:45
frankieyan
force-pushed
the
rmartins90/reactist-table-demo
branch
from
August 19, 2026 07:58
260acf0 to
c5e2c50
Compare
doistbot
reviewed
Aug 19, 2026
doistbot
left a comment
Member
There was a problem hiding this comment.
Adds a compositional, native-HTML Table component with primitives for header, body, rows, and cells, plus sort-indicator support and TanStack integration stories.
I also included a few optional follow-up notes in the details below.
Optional follow-up notes (4)
src/table/table.module.css:3: Route these Product Library values through
--reactist-table-*variables declared in this file's:root, then consume those component variables throughout. The Table currently has no Reactist-specific token surface, so consumers cannot override its defaults independently and the styles bypass the repository token convention.src/table/table.stories.tsx:157:
DefaultandNarrowViewportrender byte-identical four-column people tables, andSelectedAndClickableRowsrepeats the same markup with only the rowaria-selected/tabIndex/handlers added. Extract onerenderPeopleTable()helper (or aPeopleTablecomponent) and reuse it across all three to cut ~120 duplicated lines without changing what each story demonstrates.src/table/table.stories.tsx:442: The sortable and non-sortable branches of this ternary duplicate the
<TableColumnHeader>wrapper and its<Text>/flexRenderchildren. Hoist the rendered header content into a variable (const content = <Text variant="body-2">{flexRender(...)}</Text>) and only vary the sortable props between branches.src/table/table.test.tsx:76: This test verifies that
TableCellis transparent by checking CSS class names on the childTextcomponent (variant-callout-2,lineClamp-1). Those classes belong toText, notTableCell— ifTextchanges its CSS module naming, this table test breaks for no table-related reason. TheparentElement?.tagNameassertion alone already proves the TD wrapping. Drop the className assertions on the child, or replace them with a simpler child (e.g. a plain<span data-testid="child">) and assert it renders directly inside thetd.
frankieyan
force-pushed
the
rmartins90/reactist-table-demo
branch
from
August 19, 2026 08:08
c5e2c50 to
f8f1ff0
Compare
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
frankieyan
requested review from
a team,
pawelgrimm and
scottlovegrove
and removed request for
a team
August 19, 2026 08:22
scottlovegrove
approved these changes
Aug 19, 2026
pawelgrimm
reviewed
Aug 19, 2026
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
frankieyan
force-pushed
the
rmartins90/reactist-table-demo
branch
from
August 19, 2026 23:51
f261340 to
b7e5b58
Compare
Co-Authored-By: Claude <noreply@anthropic.com>
frankieyan
force-pushed
the
rmartins90/reactist-table-demo
branch
from
August 20, 2026 00:53
671ac0f to
4a6d103
Compare
Contributor
|
🎉 This PR is included in version 37.1.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related: https://github.com/Doist/frontend-issues/issues/1369
Comms: https://comms.todoist.com/69/ch/AsbcUEc1FA3JTc5Rm36GZ/t/CctatEVHf1VZPEj1FND6Q/
Short description
Adds a Reactist
Tablebased on the Design team's specs.Note from Frankie:
Pivoting from https://github.com/Doist/frontend-issues/issues/1369, this takes on a compositional API where consumers are responsible for rendering the table's internals. If you need a column header row, you'd include
<TableHeader>. That also means you can freely use any modelling layer, including TanStack.To review in Storybook:
npm run storybook.PR Checklist