Table - none: 845 × 292 - five columns, a footer and a caption
Using the Table
Why is the table built out of columns?
Because Penpot has no grid. A flex row of five Columns, each holding a head over five cells, keeps every cell in a column the same width without one - and that is the only way to guarantee alignment. It is backwards from how HTML thinks about a table, where a row is the unit, but it is the right call in the medium.
Which cell variants are borrowed?
Nine of eleven. Badge, Avatar, Switch, Button, Icon Button, Progress, Input, Toggle Group and Checkbox are real instances inside the cell, so changing any of those components updates every table that uses it. Only Default and Image are local - a line of text and a placeholder rectangle.
What heights should I plan a row on?
Seven of them: 20 for Progress, 32 for Checkbox, 34 for Switch, 36 for text and Badge, 44 for Button, 48 for Dropdown, Input and Toggle Group, 56 for Avatar and Image. A row is as tall as its tallest cell, so a Progress cell next to an Avatar one gives you 56 rather than 20 - worth checking before you mix them.
What is the Last Cell axis for?
Hiding the divider. Every cell draws a 1px base.border along its bottom edge, and the last one in a column has to not - otherwise the table closes with a rule that has nothing under it. It is the Separator page's rule about never bounding a list, enforced here as a property rather than left to the person placing it.
How does row hover work?
In the file it does not, quite. Hover is a State on the cell, so a row highlight means setting five cells at once - and if you miss one, you get a striped row. In code it belongs on the row and costs nothing. That is a limitation of the medium rather than an instruction; the assembled table on this page hovers by row, which is what a reader means.
Where does the caption go?
In the file, under the footer at the bottom of the table. The source's docs describe TableCaption as sitting above the header, and shadcn's own class on it is mt-4, which only makes sense below. Worth deciding once for your build rather than per table - the kit has picked the bottom.