shadcn.io is not affiliated with official shadcn/ui
Tabbed Window Uptime History Block for React
A tabbed window of ninety-day uptime for an uptime monitor: one tab per service, a large uptime figure that rolls to the new service, a strip of ninety daily bars and a three-row table of incidents.
Installation
Overview
An uptime history for React with Base UI, in one tabbed window. The header states the whole fleet's uptime, computed from every service's downtime. Under it, an inset window sits on the page's lines with a tab list across its top: API, Dashboard and Webhooks, each tab showing its own uptime. Choosing a tab rolls the large uptime figure to the new service and swaps the strip under it, ninety thin bars (a foreground tone for a day with no downtime, an outlined bar for a day that had some), and a table of the service's three incidents with the date, what happened and the minutes it took to resolve. The uptime is 1 - minutes down / minutes in 90 days, from the minutes typed per incident, so the figure, the strip and the table always agree. It's built from Tabs, Sliding Number and Guides, with CSS only for the entrance and your theme's tokens for every colour. On a phone the strip shows the last 45 days.
FAQ
How do I change the services and incidents?
Edit SERVICES at the top of the file: each service has an id, a name and a list of incidents with an ISO date between Jul 3 and Sep 30, 2026, the minutes lost and what happened. The strip, the uptime on each tab, the large figure, the table and the fleet figure in the title are all computed from that list. The numbers in the block are example data.
How does a screen reader read the strip?
The strip is an image with a text alternative that states the service, its uptime, the days with downtime and the minutes lost in all, so nothing depends on seeing the bars. The same incidents are in the table under it, a real table with a caption, and a polite status line announces the new service's figures when you change tab.
How do the tabs work with the keyboard?
The tab list is a single tab stop; the arrow keys move between services, Home and End jump to the first and last, and the open panel follows. Focus moves with the arrow keys and selects as it goes.
Does the block move when I switch tabs?
No. Every service's panel is also rendered once, unseen and inert, in the same grid cell as the open panel, so the cell is always as tall as the tallest panel. The large figure uses Sliding Number, which rolls only the digits that changed (and swaps them in place with reduced motion).
Related
- Pro
Release Pins Service Health Dashboard
Incidents and uptimeA health board for a hosting product: four service lanes of thirty daily cells, with a row of release pins above them that open a card of what shipped, and the month's uptime at the end of each lane.
- Pro
Split Status Page
Incidents and uptimeA split status page for a hosted status service: the 90-day uptime and four components with their state at the start, the three most recent releases at the end, and a divider between them.
- Pro
Release Band SLA Compliance
Incidents and uptimeA band of three release cells for a managed-service reporting product: uptime, p95 response and first reply with the target beside the actual, a check or a ring for each, and a breach count in each foot.
- Pro
Incident Timeline Changelog
Incidents and uptimeOne incident as a split: a summary at the start and its four updates on a hairline at the end, each with a stage badge, a time in UTC, an elapsed chip counted from the first update and one sentence.
- Pro
Reliability Record API Stats About
Security and platformAn API's reliability record: a 30-day status grid with one flagged day, the computed uptime beside it, and a framed table of endpoints with volume, p95 latency and success rate.
- Pro
Status Matrix Stats
HeatmapsSix services by the last eight hourly check windows: passing cells in a foreground tone, degraded cells half filled, a failed cell outlined with a cross and the destructive dot, tooltips and an uptime column.