# FigureBand
A row of counted facts, divided by hairlines and nothing else.
- Group: Display
- Import: `import { FigureBand } from '@misoto22/folio'`
- Page: https://ui.misoto22.com/components/figure-band/
- Related: table
## Anatomy
- **Query wrapper** (required) — A plain
around the list, and it has to be: a container query resolves against an ANCESTOR container, never against the element declaring one. Its w-full is load-bearing too — contain: inline-size computes width without looking at the contents, so as a shrink-to-fit flex item it resolved to zero and the band rendered as two 0px columns.
- **Band** (required) — The
: ruled top and bottom in --rule, two columns until the wrapper reaches @3xl and four after — a decision about how wide THIS band is, not how wide the window is.
- **Cell** (required) — One per figure. Each divider width names the cells that do NOT open a row rather than adding a rule and taking it back, so no edge is ever painted past the last column.
- **Label** (required) — The
- : the mono uppercase kicker over the value.
- **Value** (required) — The
- , set in the heading face at --fs-lead or --fs-sub depending on scale.
- **Note** — A second
- under the same term — a trend, a qualifier, a second fact.
## Best practices
### Do
- Give it two or four figures. The grid is two columns until @3xl and four after, so three leaves a hole in both arrangements and five leaves three holes once the band goes four across.
- Use scale="sub" for a band that supports the page rather than being it: --fs-lead is the band-heading step, so a supporting figure set at lead is competing with the page’s own subject.
- Key each figure by the fact it counts — id is required rather than optional, because it is the React key and an index puts the next render’s number under the previous label as soon as the list reorders.
### Don’t
- Do not put a sentence in note. The value and the note are two
- s under one
- , so a screen reader reads them as two values of the same term: “Posts: 48, +6 this year” works, a clause does not.
- Do not set the column count with a viewport breakpoint through className. The band reads a container query, so a sm:grid-cols-4 written on it is wrong in a 390px sidebar of a 1440px window — which is the arrangement this replaced.
- figures={[]} renders null, so a band fed a filtered-empty array leaves no rules behind and no zero state either — if the absence is the news, the call site has to say so.
## Accessibility
- A
: each cell is a term and its value, which a grid of divs cannot express.
## FigureBand
A framed, responsive group of related facts with semantic term/value pairs.
### Props
- `figures` (required) — `Figure[]`.
- `scale` — `'lead' | 'sub'` default `'lead'`. How large the value is set. `lead` is for a band that is the point of its page — a stats headline, where the numbers ARE the content. `sub` is for a band that supports the page around it, and keeps the ladder honest: a supporting figure must not be set at the same size as the page's own subject.
- `label` — `string`. Names the band for assistive tech when it has no visible heading of its own.
Also accepts: `Omit, 'children'>`.
## Example — default
```tsx
import { FigureBand } from '@misoto22/folio'
```
## Example — a supporting band
```tsx
import { FigureBand, Heading, Text } from '@misoto22/folio'
Retrieval rewrite
Chunking moved from a fixed window to headings, and the citation panel
started reading the same rows the answer did.
```
## Example — a note is a second value
```tsx
import { FigureBand } from '@misoto22/folio'
```
## Example — in a narrow column
```tsx
import { FigureBand } from '@misoto22/folio'
```