npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

gh-contribution-calendar

v2.0.4

Published

A beautiful and customizable GitHub contribution calendar component for React applications with multiple themes, dark mode support, and extensive customization options

Readme

React GitHub Contribution Calendar

A beautiful and customizable GitHub contribution calendar component for React applications.

npm version npm downloads license

Features

  • Multiple themes and color schemes - 15+ built-in themes with light/dark variants
  • 📱 Responsive design - Works seamlessly on all device sizes
  • Interactive tooltips - Detailed contribution information on hover
  • Detailed contribution information - Shows contribution counts and dates
  • 🎯 Customizable appearance - Control block size, margins, fonts, and more
  • 🌙 Dark mode support - Built-in dark mode for all themes
  • 🔄 Real-time data fetching - Fetches live data from GitHub API
  • 📦 TypeScript support - Full TypeScript definitions included
  • �️ Custom render functions - Complete control over day and tooltip rendering
  • 📅 Multi-year support - Display multiple years of contributions
  • 🎪 Interactive elements - Click handlers and custom behaviors

Installation

npm install gh-contribution-calendar
# or
yarn add gh-contribution-calendar
# or
pnpm add gh-contribution-calendar

Usage

Basic Setup

First, set up your environment variables. Create a .env file in your project root:

# Copy the example file
cp .env.example .env

# Add your GitHub token and username
VITE_GITHUB_TOKEN=your_github_token_here
VITE_GITHUB_USERNAME=your_github_username

Note: Get your GitHub Personal Access Token at github.com/settings/tokens. No special permissions are required for public repositories.

Component Usage

import { GitHubCalendar } from "gh-contribution-calendar";

function App() {
  return (
    <GitHubCalendar
      username={import.meta.env.VITE_GITHUB_USERNAME || "your-username"}
      token={import.meta.env.VITE_GITHUB_TOKEN} // Recommended for higher rate limits
      theme="classic" // Optional
      colorScheme="light" // Optional
      blockSize={12} // Optional
      blockMargin={2} // Optional
      fontSize={14} // Optional
    />
  );
}

Props

| Prop | Type | Default | Description | | ----------------- | ----------------- | ------------------------------ | --------------------------------------------------- | | username | string | required | GitHub username to fetch contributions for | | token | string | - | GitHub personal access token (optional) | | theme | string | 'classic' | Theme name ('classic', 'nature', 'halloween', etc.) | | colorScheme | 'light' | 'dark' | 'light' | Color scheme preference | | blockSize | number | 12 | Size of contribution blocks in pixels | | blockMargin | number | 2 | Margin between blocks in pixels | | fontSize | number | 14 | Font size for labels | | hideColorLegend | boolean | false | Hide the color legend | | hideMonthLabels | boolean | false | Hide month labels | | hideWeekdayLabels | boolean | false | Hide weekday labels | | hideTotalCount | boolean | false | Hide total contribution count | | years | number[] | [current year, last year, ...] | Years to display | | onDayClick | function | - | Callback when a day is clicked | | renderDay | function | - | Custom render function for days | | renderDetails | function | - | Custom render function for details |

Themes

The component comes with several built-in themes:

  • classic
  • nature
  • halloween
  • galaxy
  • and more...

You can also create custom themes by providing a theme object.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT