Table

Table — сетка данных со столбцами: записи таблицы, список документов с датами и авторами, сводка по проектам.

Части повторяют разметку HTML-таблицы (table, thead, tbody, tfoot, tr, th, td, caption) и принимают их атрибуты — colSpan, scope, abbr работают как обычно, поэтому таблица читается скринридером как таблица.

Table.Root задаёт плотность (size) на всю таблицу сразу и включает оформление: зебру (isStriped), липкую шапку (isSticky), подсветку строки под курсором (isInteractive), разделители колонок (isColumnBordered). Цвет — у строки: Table.Row принимает variant с appearance или color, чтобы пометить упавшую сборку, выбранную или черновую запись.

Это не список сущностей, по которым переходят: для строки с аватаром, заголовком и описанием есть Cell, а для пар «свойство → значение» — DataList. Таблица нужна там, где у данных есть столбцы и их сравнивают между строками.

Заглушки ячеек на время загрузки — отдельный компонент TableSkeleton.

ЗадачаИсполнительСтатус
Собрать макет лендингаАнна ПетроваВ работе
Настроить деплойИгорь СоколовНа ревью
Написать документациюМария ЛисицынаГотово

Анатомия

Table.Root
Table.Caption
Table.Header
Table.Row
Table.Head
Table.Body
Table.Row
Table.Cell
Table.Footer
Table.Row
Table.Cell

Примеры

Размер

Размер задаётся на Table.Root и управляет высотой строки, паддингами ячеек и кеглем. Ступень наследуется вложенными компонентами — бейдж и аватар в ячейке едут за таблицей, пока им не задали свой size. xs и sm — плотные сетки записей, md — базовый, lg и xl — короткие сводки на всю ширину.

РазмерЗадача
xsСобрать макет лендинга
РазмерЗадача
smСобрать макет лендинга
РазмерЗадача
mdСобрать макет лендинга
РазмерЗадача
lgСобрать макет лендинга
РазмерЗадача
xlСобрать макет лендинга

Цвет строки

variant с appearance (или color — для цвета из данных) красит строку целиком: solid — сплошная заливка для выбранной строки, ghost — приглушённая подложка для статуса. outline и dashed у строки подаются той же приглушённой подложкой: обводке в сетке негде лечь — границы ячеек уже рисуют разделители.

Без обоих пропов строка остаётся нейтральной, а цвет перебивает зебру.

СборкаВеткаРезультат
#128mainБез изменений
#129feature/tableПрошла
#130feature/botУпала на тестах
#131releaseВыбрана

Зебра и подсветка

isStriped подкрашивает чётные строки тела — по широкой строке легче вести взгляд. isInteractive добавляет подсветку строки под курсором: для таблиц, где строка открывает документ. Обработчик клика вешает потребитель на Table.Row.

ДокументТипОбновлён
Доска разработкиДоска12 марта
ОнбордингЗаметка11 марта
КлиентыТаблица10 марта
РелизыДоска9 марта
РетроЗаметка8 марта

Границы колонок

isColumnBordered добавляет вертикальные разделители между колонками. Нужны там, где столбцы сравнивают между собой — числовая сводка, матрица прав; для списка документов хватает горизонтальных линий и зебры.

Линия рисуется на каждой ячейке, кроме последней в строке, поэтому не задваивается с рамкой таблицы, а объединяющая столбцы ячейка (colSpan) рисует линию по своему краю.

ПроектЗадачГотовоПросрочено
Лендинг24182
Мобильное приложение41125
Интеграции990
Документация1671

Липкая шапка

isSticky прижимает шапку к верху скролл-контейнера. Сама таблица не скроллится — контейнер даёт потребитель: ScrollArea, зона контента Panel или любой блок с overflow.

Подпись и итог

Table.Caption — подпись над таблицей, Table.Footer — итоговая строка: она отбита линией и держит тот же фон, что шапка.

Списание часов за март
ПроектЧасыСумма
Дизайн-система3296 000 ₽
Трекер1854 000 ₽
Боты927 000 ₽
Итого59177 000 ₽

API

PropTypeDefault
isStriped

Чередующаяся подложка чётных строк тела — помогает вести взгляд по длинной строке широкой таблицы

booleanfalse
isSticky

Шапка прилипает к верху скролл-контейнера. Контейнер даёт потребитель (ScrollArea, Panel.Content) — сама таблица не скроллится

booleanfalse
isInteractive

Подсветка строки тела под курсором — для таблиц, строки которых открывают документ

booleanfalse
isColumnBordered

Вертикальные разделители между колонками — для сеток, где столбцы сравнивают между собой (числа, матрица прав)

booleanfalse
size

Размер компонента

Size-

Наследуется от Pick<VisualProps, K>, ComponentProps<"table">

Table.Caption

Подпись таблицы (caption) — текст над сеткой приглушённым кеглем.

PropTypeDefault
captionSide"top" | "bottom""top"
captionAlign"left" | "center" | "right""left"

Наследуется от ComponentProps<"caption">

Table.Header

Шапка (thead) — строка с Table.Head.

Наследуется от ComponentProps<"thead">

Table.Body

Тело таблицы (tbody) — строки с данными.

Наследуется от ComponentProps<"tbody">

Table.Footer

Футер (tfoot) — итоговая строка: отбита линией от тела и держит фон шапки.

Наследуется от ComponentProps<"tfoot">

Table.Row

Строка (tr). Принимает variant с appearance или color — цвет красит всю строку и перебивает зебру.

PropTypeDefault
variant

Смысловой вариант — задаёт цвет

Variant-
appearance

Внешний вид: сплошная заливка, обводка (сплошная или пунктирная) или приглушённая подложка

Appearance-
color

Кастомный цвет — для случаев вне стандартного набора вариантов. Принимает любое CSS-значение, имеет приоритет над цветом из variant

string-

Наследуется от Pick<VisualProps, K>, ComponentProps<"tr">

Table.Head

Ячейка шапки (th) — подпись столбца приглушённым цветом.

Наследуется от ComponentProps<"th">

Table.Cell

Ячейка тела (td): текст или готовый компонент ДС — бейдж, дата, метка сущности.

Наследуется от ComponentProps<"td">