Data
ContributionGrid
A year of days as a grid of weeks: workouts, commits, spending. Levels mix the brand into the card, and a day with no data is drawn apart from a day with none. One Tab stop, the arrow keys walk the days, Home and End jump to the ends, and every cell says its day in words. One tooltip, kept inside the viewport. On a phone it scrolls sideways at a size you can read, starting at the latest weeks.
Preview
workouts · last 12 months2026-09-20 · 2 workouts, 44 min
Installation
// Resolves dependencies, copies the source, and installs npm packages automatically.
Usage
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| days | { date, level, state? }[] | - | level 0 to 4, or null for no data; state is the day in words |
| label | string | - | What the grid shows, as its name |
| range | { start, end } | - | Defaults to the first and last day given |
| onSelect, selected | (date) => void, string | - | Choosing a day |
| renderTooltip | (day) => ReactNode | - | The tooltip's content |
| legend | boolean | true | The Less to More key |
| loading | boolean | false | A skeleton in its shape |
| labels | { levels?, noData?, less?, more? } | - | Every word |