shadcn.io is not affiliated with official shadcn/ui
Calendar Month Heatmap Stats Block for React
A six-week calendar of square cells showing each day's date and meeting hours in five foreground steps, beside the month's total, busiest day, quietest weekdays and weekday average.
Installation
Overview
A month of meeting load for React with Base UI. A split with a hairline divider: at the start from lg, a header that states the month's total, "Meetings took 106 hours of March", and a list of four facts (the month's total, the busiest day, the quietest weekdays and the average weekday); at the end, a calendar with weekday headings, six weeks of square cells and a key. Each cell shows the date and the hours spent in meetings that day, shaded in five solid steps of your theme's foreground colour (none, up to 2, 4, 6 and over 6 hours), and the busiest day is outlined. The month is named, never dated to a year. The calendar is a real table with a caption, weekday column headings and a sentence per cell for screen readers, and every figure is counted from one list of daily hours. On a phone the calendar comes first, right after the header, with square cells, and the facts follow. For meeting analytics, on-call load, support volume and any month of daily counts.
FAQ
How do I use my own month?
Edit HOURS (one number per day of the month, from the 1st), OFFSET (the weekday the month starts on, Monday is 0) and MONTH at the top of the file. The calendar draws six weeks, so it works for any month length; the total, the busiest day, the quietest weekdays and the average are all computed from HOURS. Weekends are left out of the weekday average and the quietest list.
How are the shades chosen?
A day's step comes from its hours: 0, up to 2, up to 4, up to 6, and above 6. The five steps are solid mixes of the foreground colour into the page, with the cell text switching to the page colour from the fourth step so it keeps its contrast in light and dark. The key under the calendar shows them in order, and every cell also writes its hours, so shade is never the only signal.
Why is the calendar a table?
A calendar is a grid of dates under weekday names, which is what a table is for: screen readers announce the weekday and the date for each cell, and a day with no meetings says so. The squares outside the month are empty cells. The table is forced left to right so the week starts at the same side in every language.
Related
- Pro
Activity Streak Stats
HeatmapsA 26-week contribution grid of daily lessons with month labels, a Less to More key and a band of three counters for the current streak, the longest streak and the active days.
- Pro
Legend Filter Heatmap Stats
HeatmapsA twelve-week by seven-day commit heatmap whose five-step legend is a set of toggles: choosing a level keeps only those days at full strength, outlines the rest and counts the days.
- Pro
Hourly Matrix Heatmap Stats
HeatmapsA seven-day by 24-hour matrix of tiny squares in five foreground steps, with 00, 06, 12 and 18 hour markers, an outlined busiest hour and a readout in the frame's foot.
- Pro
Day-Scaled Strips Heatmap Stats
HeatmapsSeven rows, one per weekday, each a strip of 24 hourly squares scaled to that day's own peak, with its total and its peak hour, in cells whose lines run past their corners.
- Pro
Heatmap Density Grid Features
Metrics and chartsA 24 by 12 traffic density grid in a framed figure with a legend, three numbered callout cells, and the callouts described beside it, for a traffic observability tool.
- Pro
Count Buckets Histogram Stats
DistributionsAn order-value histogram of eight $25 buckets with the count above each column, the most common bucket drawn solid, the median bucket underlined and three figures above the chart: orders, the median bucket and the busiest bucket's share.