shadcn.io is not affiliated with official shadcn/ui
Maintenance Schedule Calendar Block for React Aria
One maintenance window planned against an hourly traffic chart: a date from the calendar with a change freeze struck out, a start hour and length, services affected and a worked-out impact.
Installation
Overview
Plan the quietest hour for planned work with this maintenance schedule for React with React Aria. A hairline frame with a plus mark on each corner puts the date and the window at the start and the traffic at the end. The Calendar picks the day, with past days and a change freeze from 27 to 29 November struck out and a dot under any day that already has a window; a native select picks the start hour in UTC and a Toggle Group picks one, two or four hours. A chart of 24 bars, one for each hour's typed requests, shades the hours inside the window. Three services have typed shares of the traffic, and the ones you tick feed "Estimated impact", the window's requests times the affected share over the day's requests, as a percent of the day. A window that overlaps one already planned says so. "Pick the quietest window" sets the start for the chosen length, and "Schedule window" ends in a line that says nothing was announced. It's built from Calendar, Native Select, Toggle Group, Checkbox, Shine Button and Guides, with a CSS entrance only. For ops teams, release managers and any change that is cheaper at 03:00.
FAQ
How do I use my own traffic and services?
Edit HOURLY (requests per hour in thousands for a weekday), WEEKEND_PART (the share a weekend day carries), SERVICES (each with its share of requests in percent) and PLANNED (the windows already booked). The chart, the totals, the impact and the quietest start are worked out from those.
How is the estimated impact worked out?
It adds the requests in the hours of the window, multiplies by the combined share of the services you ticked and divides by the requests in the whole day. Tick fewer services and the figure falls; a longer window or a busier hour raises it. It's an estimate from the numbers you give it, not a promise.
How do I change the freeze and the dates you can plan?
Set FREEZE_FROM and FREEZE_TO. Days before the fixed "now", 14 October 2026, and the freeze are marked unavailable in the calendar on every target, and FIRST_DAY and LAST_DAY bound how far you can page.