react-contribution-calendar
![NPM](https://img.shields.io/npm/l/react-contribution-calendar)
A GitHub-like contribution calendar component for React, built with Vite and TypeScript. This provides a visual representation of contribution activity, similar to the contribution graph seen on a GitHub profile.
Installation
$ npm i react-contribution-calendar
Note
Add --save if you are using npm < 5.0.0
Usage
import { ContributionCalendar } from 'react-contribution-calendar'
const data = [
{
'2020-04-20': {
level: 2,
}
},
{
'2023-07-08': {
level: 1,
},
},
{
'2023-07-09': {
level: 4,
data: {},
},
},
{
'2023-03-31': {
level: 3,
data: {
myKey: 'my data',
},
},
},
]
<ContributionCalendar
data={data}
start="2020-04-04"
end="2023-05-19"
textColor="#000000"
includeBoundary={true}
theme="grass"
/>
APIs
ContributionCalendar
ContributionCalendar
is the main component of this library. It takes a data property, which is an array of objects representing the contribution data, and a theme property to customize its appearance.
-
data
: An array of objects, where each object has a date string(YYYY-MM-DD
format) as key, and an InputDataProps
object as value. Defaults to []
.
- An example data is as follows:
const data = [
{
'2023-07-08': {
level: 3,
data: {
myKey: 'my data',
},
},
},
{
'2023-07-09': {
level: 1,
},
},
]
-
start
: Optional. The starting date for the calendar to start, defaults to current year's January 1st(YYYY-MM-DD
format).
-
end
: Optional. The ending date for the calendar to end, defaults to current year's December 31st(YYYY-MM-DD
format).
-
textColor
: Optional. The color of indexes. String color code format.
-
includeBoundary
: Optional. Whethere to include the boundary cells in the starting or ending date column, defaults to true
.
-
theme
: Optional. A string that represents a predefined theme name, or an object with custom theme colors. Defaults to grass
.
createTheme
createTheme
is a helper function to create custom themes. It takes a string representing a predefined theme name or an object containing custom theme colors. This returns a theme object(ThemeProps
).
Themes
You can customize the appearance of the <ContributionCalendar />
with the theme property. We provide several built-in themes.
<ContributionCalendar data={[]} theme={'grass'} />
Light Themes
grass
pink
halloween
winter
cherry
cherry_blossom
sky
purquoise
blue_pop
mustard
Dark Themes
dark_grass
dark_pink
dark_halloween
dark_winter
dark_blue
dark_ocean
dark_vomit
Custom Theme
import { ContributionCalendar, createTheme } from 'react-contribution-calendar'
function App() {
const customTheme = createTheme({
level0: "#ebedf0",
level1: "#9be9a8",
level2: "#40c463",
level3: "#30a14e",
level4: "#216e39",
})
return (
<ContributionCalendar
data={[]}
theme={customTheme}
/>
)
}
Or you can set theme properties directly,
import { ContributionCalendar } from 'react-contribution-calendar'
function App() {
return (
<ContributionCalendar
data={[]}
theme={{
/* Assign theme properties directly */
level0: "#ebedf0",
level1: "#9be9a8",
level2: "#40c463",
level3: "#30a14e",
level4: "#216e39",
}}
/>
)
}