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.
Используется в: TableSkeleton
| Задача | Исполнитель | Статус |
|---|---|---|
| Собрать макет лендинга | Анна Петрова | В работе |
| Настроить деплой | Игорь Соколов | На ревью |
| Написать документацию | Мария Лисицына | Готово |
Анатомия
Примеры
Размер
Размер задаётся на Table.Root и управляет высотой строки, паддингами ячеек и кеглем. Ступень наследуется вложенными компонентами — бейдж и аватар в ячейке едут за таблицей, пока им не задали свой size. xs и sm — плотные сетки записей, md — базовый, lg и xl — короткие сводки на всю ширину.
| Размер | Задача |
|---|---|
| xs | Собрать макет лендинга |
| Размер | Задача |
|---|---|
| sm | Собрать макет лендинга |
| Размер | Задача |
|---|---|
| md | Собрать макет лендинга |
| Размер | Задача |
|---|---|
| lg | Собрать макет лендинга |
| Размер | Задача |
|---|---|
| xl | Собрать макет лендинга |
Цвет строки
variant с appearance (или color — для цвета из данных) красит строку целиком: solid — сплошная заливка для выбранной строки, ghost — приглушённая подложка для статуса. outline и dashed у строки подаются той же приглушённой подложкой: обводке в сетке негде лечь — границы ячеек уже рисуют разделители.
Без обоих пропов строка остаётся нейтральной, а цвет перебивает зебру.
| Сборка | Ветка | Результат |
|---|---|---|
| #128 | main | Без изменений |
| #129 | feature/table | Прошла |
| #130 | feature/bot | Упала на тестах |
| #131 | release | Выбрана |
Зебра и подсветка
isStriped подкрашивает чётные строки тела — по широкой строке легче вести взгляд. isInteractive добавляет подсветку строки под курсором: для таблиц, где строка открывает документ. Обработчик клика вешает потребитель на Table.Row.
| Документ | Тип | Обновлён |
|---|---|---|
| Доска разработки | Доска | 12 марта |
| Онбординг | Заметка | 11 марта |
| Клиенты | Таблица | 10 марта |
| Релизы | Доска | 9 марта |
| Ретро | Заметка | 8 марта |
Границы колонок
isColumnBordered добавляет вертикальные разделители между колонками. Нужны там, где столбцы сравнивают между собой — числовая сводка, матрица прав; для списка документов хватает горизонтальных линий и зебры.
Линия рисуется на каждой ячейке, кроме последней в строке, поэтому не задваивается с рамкой таблицы, а объединяющая столбцы ячейка (colSpan) рисует линию по своему краю.
| Проект | Задач | Готово | Просрочено |
|---|---|---|---|
| Лендинг | 24 | 18 | 2 |
| Мобильное приложение | 41 | 12 | 5 |
| Интеграции | 9 | 9 | 0 |
| Документация | 16 | 7 | 1 |
Липкая шапка
isSticky прижимает шапку к верху скролл-контейнера. Сама таблица не скроллится — контейнер даёт потребитель: ScrollArea, зона контента Panel или любой блок с overflow.
| № | Задача | Исполнитель |
|---|---|---|
| 1 | Задача №1 | Анна Петрова |
| 2 | Задача №2 | Игорь Соколов |
| 3 | Задача №3 | Анна Петрова |
| 4 | Задача №4 | Игорь Соколов |
| 5 | Задача №5 | Анна Петрова |
| 6 | Задача №6 | Игорь Соколов |
| 7 | Задача №7 | Анна Петрова |
| 8 | Задача №8 | Игорь Соколов |
| 9 | Задача №9 | Анна Петрова |
| 10 | Задача №10 | Игорь Соколов |
| 11 | Задача №11 | Анна Петрова |
| 12 | Задача №12 | Игорь Соколов |
| 13 | Задача №13 | Анна Петрова |
| 14 | Задача №14 | Игорь Соколов |
| 15 | Задача №15 | Анна Петрова |
| 16 | Задача №16 | Игорь Соколов |
| 17 | Задача №17 | Анна Петрова |
| 18 | Задача №18 | Игорь Соколов |
| 19 | Задача №19 | Анна Петрова |
| 20 | Задача №20 | Игорь Соколов |
Подпись и итог
Table.Caption — подпись над таблицей, Table.Footer — итоговая строка: она отбита линией и держит тот же фон, что шапка.
| Проект | Часы | Сумма |
|---|---|---|
| Дизайн-система | 32 | 96 000 ₽ |
| Трекер | 18 | 54 000 ₽ |
| Боты | 9 | 27 000 ₽ |
| Итого | 59 | 177 000 ₽ |
API
| Prop | Type | Default |
|---|---|---|
isStripedЧередующаяся подложка чётных строк тела — помогает вести взгляд по длинной строке широкой таблицы | boolean | false |
isStickyШапка прилипает к верху скролл-контейнера. Контейнер даёт потребитель
( | boolean | false |
isInteractiveПодсветка строки тела под курсором — для таблиц, строки которых открывают документ | boolean | false |
isColumnBorderedВертикальные разделители между колонками — для сеток, где столбцы сравнивают между собой (числа, матрица прав) | boolean | false |
sizeРазмер компонента | Size | - |
Наследуется от Pick<VisualProps, K>, ComponentProps<"table">
Table.Caption
Подпись таблицы (caption) — текст над сеткой приглушённым кеглем.
| Prop | Type | Default |
|---|---|---|
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 — цвет красит всю строку и перебивает зебру.
| Prop | Type | Default |
|---|---|---|
variantСмысловой вариант — задаёт цвет | Variant | - |
appearanceВнешний вид: сплошная заливка, обводка (сплошная или пунктирная) или приглушённая подложка | Appearance | - |
colorКастомный цвет — для случаев вне стандартного набора вариантов. Принимает любое CSS-значение, имеет приоритет над цветом из variant | string | - |
Наследуется от Pick<VisualProps, K>, ComponentProps<"tr">
Table.Head
Ячейка шапки (th) — подпись столбца приглушённым цветом.
Наследуется от ComponentProps<"th">
Table.Cell
Ячейка тела (td): текст или готовый компонент ДС — бейдж, дата, метка сущности.
Наследуется от ComponentProps<"td">