Skip to content
silverpoint
Documentation menu

Charts · Points & grids

ActivityGrid

One cell per day, a column per week. Family: Points & grids · chart 20 of 60.
ContributionsContributions
Contributions
datecountlevel
2026-03-3000
2026-03-3170
2026-04-0130
2026-04-02100
2026-04-0360
2026-04-0400
2026-04-0530
2026-04-0680
2026-04-0740
2026-04-0800
2026-04-0970
2026-04-1030
2026-04-1130
2026-04-1220
2026-04-1350
2026-04-1410
2026-04-1580
2026-04-1640
2026-04-1700
2026-04-1820
2026-04-1910
2026-04-2020
2026-04-2190
2026-04-2250
2026-04-2310
2026-04-2480
2026-04-2510
2026-04-2600
2026-04-27100
2026-04-2860
2026-04-2920
2026-04-3090
2026-05-0150
2026-05-0200
2026-05-0320
2026-05-0470
2026-05-0530
2026-05-06100
2026-05-0760
2026-05-0820
2026-05-0930
2026-05-1010
2026-05-1140
2026-05-1200
2026-05-1370
2026-05-1430
2026-05-15100
2026-05-1620
2026-05-1700
2026-05-1810
2026-05-1980
2026-05-2040
2026-05-2100
2026-05-2270
2026-05-2310
2026-05-2430
2026-05-2590
2026-05-2650
2026-05-2710
2026-05-2880
2026-05-2940
2026-05-3000
2026-05-3120
2026-06-0160
2026-06-0220
2026-06-0390
2026-06-0450
2026-06-0510
2026-06-0620
2026-06-0710
2026-06-0830
2026-06-09100
2026-06-1060
2026-06-1120
2026-06-1290
2026-06-1310
2026-06-1400
2026-06-1500
2026-06-1670
2026-06-1730
2026-06-18100
2026-06-1960
2026-06-2000
2026-06-2130
2026-06-2280
2026-06-2340
2026-06-2400
2026-06-2570
2026-06-2630
2026-06-2730
2026-06-2820
2026-06-2950
2026-06-3010
2026-07-0180
2026-07-0240
2026-07-0300
2026-07-0420
2026-07-0510
2026-07-0620
2026-07-0790
2026-07-0850
2026-07-0910
2026-07-1080
2026-07-1110
2026-07-1200
2026-07-13100
2026-07-1460
2026-07-1520
2026-07-1690
2026-07-1750
2026-07-1800
2026-07-1920
2026-07-2070
2026-07-2130
2026-07-22100
2026-07-2360
2026-07-2420
2026-07-2530
2026-07-2610
2026-07-2740
2026-07-2800
2026-07-2970
2026-07-3030
2026-07-31100
2026-08-0120
2026-08-0200
2026-08-0310
2026-08-0480
2026-08-0540
2026-08-0600
2026-08-0770
2026-08-0810
2026-08-0930
2026-08-1090
2026-08-1150
2026-08-1210
2026-08-1380
2026-08-1440
2026-08-1500
2026-08-1620
2026-08-1760
2026-08-1820
2026-08-1990
2026-08-2050
2026-08-2110
2026-08-2220
2026-08-2310
2026-08-2430
2026-08-25100
2026-08-2660
2026-08-2720
2026-08-2890
2026-08-2910
2026-08-3000
2026-08-3100
2026-09-0170
2026-09-0230
2026-09-03100
2026-09-0460
2026-09-0500
2026-09-0630
2026-09-0780
2026-09-0840
2026-09-0900
2026-09-1070
2026-09-1130
2026-09-1230
2026-09-1320
2026-09-1450
2026-09-1510
2026-09-1680
2026-09-1740
2026-09-1800
2026-09-1920
2026-09-2010
2026-09-2120
2026-09-2290
2026-09-2350
2026-09-2410
2026-09-2580
2026-09-2610
2026-09-2700
ContributionsContributions
Contributions
datecountlevel
2026-03-3000
2026-03-3170
2026-04-0130
2026-04-02100
2026-04-0360
2026-04-0400
2026-04-0530
2026-04-0680
2026-04-0740
2026-04-0800
2026-04-0970
2026-04-1030
2026-04-1130
2026-04-1220
2026-04-1350
2026-04-1410
2026-04-1580
2026-04-1640
2026-04-1700
2026-04-1820
2026-04-1910
2026-04-2020
2026-04-2190
2026-04-2250
2026-04-2310
2026-04-2480
2026-04-2510
2026-04-2600
2026-04-27100
2026-04-2860
2026-04-2920
2026-04-3090
2026-05-0150
2026-05-0200
2026-05-0320
2026-05-0470
2026-05-0530
2026-05-06100
2026-05-0760
2026-05-0820
2026-05-0930
2026-05-1010
2026-05-1140
2026-05-1200
2026-05-1370
2026-05-1430
2026-05-15100
2026-05-1620
2026-05-1700
2026-05-1810
2026-05-1980
2026-05-2040
2026-05-2100
2026-05-2270
2026-05-2310
2026-05-2430
2026-05-2590
2026-05-2650
2026-05-2710
2026-05-2880
2026-05-2940
2026-05-3000
2026-05-3120
2026-06-0160
2026-06-0220
2026-06-0390
2026-06-0450
2026-06-0510
2026-06-0620
2026-06-0710
2026-06-0830
2026-06-09100
2026-06-1060
2026-06-1120
2026-06-1290
2026-06-1310
2026-06-1400
2026-06-1500
2026-06-1670
2026-06-1730
2026-06-18100
2026-06-1960
2026-06-2000
2026-06-2130
2026-06-2280
2026-06-2340
2026-06-2400
2026-06-2570
2026-06-2630
2026-06-2730
2026-06-2820
2026-06-2950
2026-06-3010
2026-07-0180
2026-07-0240
2026-07-0300
2026-07-0420
2026-07-0510
2026-07-0620
2026-07-0790
2026-07-0850
2026-07-0910
2026-07-1080
2026-07-1110
2026-07-1200
2026-07-13100
2026-07-1460
2026-07-1520
2026-07-1690
2026-07-1750
2026-07-1800
2026-07-1920
2026-07-2070
2026-07-2130
2026-07-22100
2026-07-2360
2026-07-2420
2026-07-2530
2026-07-2610
2026-07-2740
2026-07-2800
2026-07-2970
2026-07-3030
2026-07-31100
2026-08-0120
2026-08-0200
2026-08-0310
2026-08-0480
2026-08-0540
2026-08-0600
2026-08-0770
2026-08-0810
2026-08-0930
2026-08-1090
2026-08-1150
2026-08-1210
2026-08-1380
2026-08-1440
2026-08-1500
2026-08-1620
2026-08-1760
2026-08-1820
2026-08-1990
2026-08-2050
2026-08-2110
2026-08-2220
2026-08-2310
2026-08-2430
2026-08-25100
2026-08-2660
2026-08-2720
2026-08-2890
2026-08-2910
2026-08-3000
2026-08-3100
2026-09-0170
2026-09-0230
2026-09-03100
2026-09-0460
2026-09-0500
2026-09-0630
2026-09-0780
2026-09-0840
2026-09-0900
2026-09-1070
2026-09-1130
2026-09-1230
2026-09-1320
2026-09-1450
2026-09-1510
2026-09-1680
2026-09-1740
2026-09-1800
2026-09-1920
2026-09-2010
2026-09-2120
2026-09-2290
2026-09-2350
2026-09-2410
2026-09-2580
2026-09-2610
2026-09-2700
mode="precision"
ContributionsContributions
Contributions
datecountlevel
2026-03-3000
2026-03-3170
2026-04-0130
2026-04-02100
2026-04-0360
2026-04-0400
2026-04-0530
2026-04-0680
2026-04-0740
2026-04-0800
2026-04-0970
2026-04-1030
2026-04-1130
2026-04-1220
2026-04-1350
2026-04-1410
2026-04-1580
2026-04-1640
2026-04-1700
2026-04-1820
2026-04-1910
2026-04-2020
2026-04-2190
2026-04-2250
2026-04-2310
2026-04-2480
2026-04-2510
2026-04-2600
2026-04-27100
2026-04-2860
2026-04-2920
2026-04-3090
2026-05-0150
2026-05-0200
2026-05-0320
2026-05-0470
2026-05-0530
2026-05-06100
2026-05-0760
2026-05-0820
2026-05-0930
2026-05-1010
2026-05-1140
2026-05-1200
2026-05-1370
2026-05-1430
2026-05-15100
2026-05-1620
2026-05-1700
2026-05-1810
2026-05-1980
2026-05-2040
2026-05-2100
2026-05-2270
2026-05-2310
2026-05-2430
2026-05-2590
2026-05-2650
2026-05-2710
2026-05-2880
2026-05-2940
2026-05-3000
2026-05-3120
2026-06-0160
2026-06-0220
2026-06-0390
2026-06-0450
2026-06-0510
2026-06-0620
2026-06-0710
2026-06-0830
2026-06-09100
2026-06-1060
2026-06-1120
2026-06-1290
2026-06-1310
2026-06-1400
2026-06-1500
2026-06-1670
2026-06-1730
2026-06-18100
2026-06-1960
2026-06-2000
2026-06-2130
2026-06-2280
2026-06-2340
2026-06-2400
2026-06-2570
2026-06-2630
2026-06-2730
2026-06-2820
2026-06-2950
2026-06-3010
2026-07-0180
2026-07-0240
2026-07-0300
2026-07-0420
2026-07-0510
2026-07-0620
2026-07-0790
2026-07-0850
2026-07-0910
2026-07-1080
2026-07-1110
2026-07-1200
2026-07-13100
2026-07-1460
2026-07-1520
2026-07-1690
2026-07-1750
2026-07-1800
2026-07-1920
2026-07-2070
2026-07-2130
2026-07-22100
2026-07-2360
2026-07-2420
2026-07-2530
2026-07-2610
2026-07-2740
2026-07-2800
2026-07-2970
2026-07-3030
2026-07-31100
2026-08-0120
2026-08-0200
2026-08-0310
2026-08-0480
2026-08-0540
2026-08-0600
2026-08-0770
2026-08-0810
2026-08-0930
2026-08-1090
2026-08-1150
2026-08-1210
2026-08-1380
2026-08-1440
2026-08-1500
2026-08-1620
2026-08-1760
2026-08-1820
2026-08-1990
2026-08-2050
2026-08-2110
2026-08-2220
2026-08-2310
2026-08-2430
2026-08-25100
2026-08-2660
2026-08-2720
2026-08-2890
2026-08-2910
2026-08-3000
2026-08-3100
2026-09-0170
2026-09-0230
2026-09-03100
2026-09-0460
2026-09-0500
2026-09-0630
2026-09-0780
2026-09-0840
2026-09-0900
2026-09-1070
2026-09-1130
2026-09-1230
2026-09-1320
2026-09-1450
2026-09-1510
2026-09-1680
2026-09-1740
2026-09-1800
2026-09-1920
2026-09-2010
2026-09-2120
2026-09-2290
2026-09-2350
2026-09-2410
2026-09-2580
2026-09-2610
2026-09-2700
substrate="green"
ContributionsContributions
Contributions
datecountlevel
2026-03-3000
2026-03-3170
2026-04-0130
2026-04-02100
2026-04-0360
2026-04-0400
2026-04-0530
2026-04-0680
2026-04-0740
2026-04-0800
2026-04-0970
2026-04-1030
2026-04-1130
2026-04-1220
2026-04-1350
2026-04-1410
2026-04-1580
2026-04-1640
2026-04-1700
2026-04-1820
2026-04-1910
2026-04-2020
2026-04-2190
2026-04-2250
2026-04-2310
2026-04-2480
2026-04-2510
2026-04-2600
2026-04-27100
2026-04-2860
2026-04-2920
2026-04-3090
2026-05-0150
2026-05-0200
2026-05-0320
2026-05-0470
2026-05-0530
2026-05-06100
2026-05-0760
2026-05-0820
2026-05-0930
2026-05-1010
2026-05-1140
2026-05-1200
2026-05-1370
2026-05-1430
2026-05-15100
2026-05-1620
2026-05-1700
2026-05-1810
2026-05-1980
2026-05-2040
2026-05-2100
2026-05-2270
2026-05-2310
2026-05-2430
2026-05-2590
2026-05-2650
2026-05-2710
2026-05-2880
2026-05-2940
2026-05-3000
2026-05-3120
2026-06-0160
2026-06-0220
2026-06-0390
2026-06-0450
2026-06-0510
2026-06-0620
2026-06-0710
2026-06-0830
2026-06-09100
2026-06-1060
2026-06-1120
2026-06-1290
2026-06-1310
2026-06-1400
2026-06-1500
2026-06-1670
2026-06-1730
2026-06-18100
2026-06-1960
2026-06-2000
2026-06-2130
2026-06-2280
2026-06-2340
2026-06-2400
2026-06-2570
2026-06-2630
2026-06-2730
2026-06-2820
2026-06-2950
2026-06-3010
2026-07-0180
2026-07-0240
2026-07-0300
2026-07-0420
2026-07-0510
2026-07-0620
2026-07-0790
2026-07-0850
2026-07-0910
2026-07-1080
2026-07-1110
2026-07-1200
2026-07-13100
2026-07-1460
2026-07-1520
2026-07-1690
2026-07-1750
2026-07-1800
2026-07-1920
2026-07-2070
2026-07-2130
2026-07-22100
2026-07-2360
2026-07-2420
2026-07-2530
2026-07-2610
2026-07-2740
2026-07-2800
2026-07-2970
2026-07-3030
2026-07-31100
2026-08-0120
2026-08-0200
2026-08-0310
2026-08-0480
2026-08-0540
2026-08-0600
2026-08-0770
2026-08-0810
2026-08-0930
2026-08-1090
2026-08-1150
2026-08-1210
2026-08-1380
2026-08-1440
2026-08-1500
2026-08-1620
2026-08-1760
2026-08-1820
2026-08-1990
2026-08-2050
2026-08-2110
2026-08-2220
2026-08-2310
2026-08-2430
2026-08-25100
2026-08-2660
2026-08-2720
2026-08-2890
2026-08-2910
2026-08-3000
2026-08-3100
2026-09-0170
2026-09-0230
2026-09-03100
2026-09-0460
2026-09-0500
2026-09-0630
2026-09-0780
2026-09-0840
2026-09-0900
2026-09-1070
2026-09-1130
2026-09-1230
2026-09-1320
2026-09-1450
2026-09-1510
2026-09-1680
2026-09-1740
2026-09-1800
2026-09-1920
2026-09-2010
2026-09-2120
2026-09-2290
2026-09-2350
2026-09-2410
2026-09-2580
2026-09-2610
2026-09-2700
ground="cyanotype"

Example

The chart above, in each framework. Pick a framework once and every example on the site follows it. One row per day; the grid shows the most recent `weeks`.

shell
npm install @silverpoint/react @silverpoint/grounds @silverpoint/fonts
tsx
import '@silverpoint/fonts/fonts.css';
import '@silverpoint/grounds/styles.css';
import { ActivityGrid } from '@silverpoint/react/activity-grid';

const data = [
  { date: '2026-03-30', count: 0 },
  { date: '2026-03-31', count: 7 },
  { date: '2026-04-01', count: 3 },
  { date: '2026-04-02', count: 10 },
  { date: '2026-04-03', count: 6 },
  { date: '2026-04-04', count: 0 },
  { date: '2026-04-05', count: 3 },
  { date: '2026-04-06', count: 8 },
  { date: '2026-04-07', count: 4 },
  { date: '2026-04-08', count: 0 },
  { date: '2026-04-09', count: 7 },
  { date: '2026-04-10', count: 3 },
  // … 170 more rows of the same shape
];

export default function App() {
  return (
    <div style={{ width: 480 }}>
      <ActivityGrid
        data={data}
        dateKey="date"
        countKey="count"
        title="Contributions"
        weeks={26}
      />
    </div>
  );
}

Import

Each chart has its own subpath, so a bundle only carries the charts it uses. Every adapter also exports every chart from its barrel.

FrameworkImport
Reactimport { ActivityGrid } from '@silverpoint/react/activity-grid';
Vueimport { SpActivityGrid } from '@silverpoint/vue/activity-grid';
Angularimport { SpActivityGrid } from '@silverpoint/angular/activity-grid'; // <sp-activity-grid>
Reflexfrom reflex_silverpoint_react import activity_grid

Props

The props ActivityGrid adds to the ones every chart takes. Accessor props (…Key, keys, names) name fields of your rows and are ignored without data.

React / AngularVueReflexTypeDescription
dateKeydate-keydate_keyAccessor<string>—
countKeycount-keycount_keyAccessor<number | null | undefined>—
levelKeylevel-keylevel_keyAccessor<number | null | undefined>—
weeksweeksweeksnumberWeeks shown, the most recent last; 26 by default.

Common props

Every chart also takes these. Framework conventions: camelCase in React and Angular, kebab-case in Vue templates, snake_case in Reflex. Read more about them.

Show the 22 common props
React / AngularVueReflexTypeDescription
datadatadatareadonly Datum[]Rows to draw. If omitted, the demo dataset is rendered (REQ-093) and the accessor props (…_key, keys, names) are ignored.
groundgroundgroundGroundRefStyle ground: silverpoint or cyanotype, or a ground object. Defaults to the app provider's, or silverpoint.
substratesubstratesubstrateSubstrateNamePrepared substrate within the ground (REQ-046).
modemodemodeInkModeink by default; precision disables inking (REQ-021).
seedseedseedSeedSeed. If omitted, it is derived from id stably (REQ-003).
idididstringStable identifier. If omitted, it is generated deterministically.
heightheightheightnumberHeight of the drawing area in px. Width is the container's unless pinned.
widthwidthwidthnumber—
chromechromechrome'card' | 'bare'card draws the full frame; bare only the drawing area (REQ-095).
hatchFillhatch-fillhatch_fill'tile' | 'per-shape'How areas are filled (REQ-029).
titletitletitlestring—
badgebadgebadgestring—
valuevaluevaluestring | number—
unitunitunitstring—
footerLeftfooter-leftfooter_leftstring—
footerRightfooter-rightfooter_rightstring—
labellabellabelstringAccessible name. If omitted, it is derived from title (REQ-120).
descriptiondescriptiondescriptionstringLong description for screen readers (REQ-120).
dataTabledata-tabledata_table'visible' | 'hidden' | 'none'Tabular alternative; hidden leaves it for assistive technology only (REQ-121).
localelocalelocalestring—
numberFormatnumber-formatnumber_formatIntl.NumberFormatOptions—
classNameclass-nameclass_namestring—

Events

Pointer and keyboard exploration are built in. The item under the pointer or focus is reported, and a click, Enter or Space selects it. The item is { seriesKey, index, datum, value, point: { x, y } }.

FrameworkActive itemSelectionCustom readout
ReactonActiveChangeonSelecttooltip={(item, readout) => …}
Vue@active-change@select<template #tooltip>
Angular(activeChange)(select)<ng-template spTooltip>
Reflexon_active_changeon_selecttooltip=tooltip_template(…)
Interaction and readouts →
Report it
Found something wrong with ActivityGrid? Open an issue on GitHub — the form comes pre-filled with the chart and the version.