Silvi

GroupedTable

Rows with the same measures repeated under a header per group, such as one group of columns per region.

<k.GroupedTable> draws lead columns (the period, the row’s name), then the same measures once per group, each group under its own header with a rule before it. Use it when every row compares one set of measures across a few categories: sales and orders per region, per month. Headers and cells are small, to fit many columns.

Example

Sales by region

NorthSouth
MonthSalesOrdersSalesOrders
Jan 202612014959
Feb 20261351510210
Total2552919719

The month format prints “2026-01” as “Jan 2026” and leaves “Total” as it is.

Props

Also key, description, span (default 2) and info: see Props every component takes.

Name Type Required Default Meaning
series query name yes The query the rows come from
title text yes The heading
lead list of columns yes The columns before the groups
groups list of groups, or a function of the data yes The groups, each {label, columns}
strong column no A yes/no column: the row in medium weight
muted column no A yes/no column: the row muted
border yes/no no no Draws the table in a card with a hairline edge; without it the table sits open on the page
footer column no A yes/no column: the row goes in the table’s foot, under a rule
formatColumn, note, estimate, sticky, copy, download, drills no As on Table; copy sits in the empty top-left corner

A column in lead or a group takes the same keys as a table column, except width.

A group

Key Type Required Meaning
label text yes The group’s header
columns list of columns yes The group’s columns
strong true/false no The group’s cells in medium weight, for a Total group

Checks

A series that is not one of the report’s queries, or a column it names that the query’s rows do not have, fails the typecheck, as does a missing required prop or a value of the wrong type.