Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

No Alerts Empty State Block for React

An ops status board's quiet alerts page: a bell under a glass dome, four systems that each say Operational with a drawn 30-day strip, and a Send a test alert button that fills a dashed slot with a typed row you can dismiss.

Framework
UI library

Preview

Preview width

Installation

Part of Pro
Pro unlocks the code and one-line install of every Pro button and text effect, plus the MCP for your AI editor.
Have Pro already? Sign in to open it.Opens here as soon as you're Pro.

Overview

Make "nothing is wrong" read as confident rather than empty, with this no alerts empty state for React with Base UI. The page is Calmreach, an ops status board: the rails of the page and one band across it hold a drawing of a bell under a glass dome, whose four arcs of sound are dashed while all is quiet, then "All quiet", one sentence and the Shine Button, the only colored control, Send a test alert. Below it a dashed slot says "No active alerts" and four system rows (API, Database, CDN and Auth) each say Operational with a check glyph, never a green dot, and from a small screen up a drawn strip of the last 30 days with every cell quiet. Sending a test alert fills the slot with a typed row and a Dismiss button, marks today's cell on that system's strip, turns the arcs solid and changes the heading to "1 test alert". The frame is ruled by Guides, the only status color is the one Status dot on the test alert, and everything moves with CSS only. For the alerts page of any monitoring, uptime or on-call tool.

FAQ

What stays in the page, and how do I make it real?

Nothing is monitored or sent. The four systems, their quiet strips and the test alerts are typed in the file; pressing Send a test alert only shows a row in the page, and Dismiss removes it. To wire it for real, replace SYSTEMS and the strips with your health checks, render the quiet view only when nothing is firing, and send the test press to your on-call tool where the code says so.

Why is there no green?

All clear is said with a word, a check glyph and weight, so it reads the same in every theme and to people who cannot tell green from red. The one status color on the page is a small dot on the test alert row, which is an alert and says so in words; the quiet rows use foreground tones only.

What are the strips, and how do they work with a screen reader?

Each strip is 30 cells, one for each of the last 30 days, ending today. Quiet days are short cells; a test alert marks today's cell on its system with a tall solid one. They are drawn, hidden from assistive technology, and a sentence under the list says the same in words ("Each strip is the last 30 days, one cell a day, with no alerts."), with the check date, Fri 9 Oct, as a real time element. On a phone the strips are dropped and each row keeps its name and its word.

What does Send a test alert do?

It cycles through four typed tests, starting with Database latency, shows the row in the dashed slot with today's date, marks the strip and moves focus to Dismiss. While a test alert is showing the button stays in the tab order and says "A test alert is already showing. Dismiss it first." instead of adding another. Dismiss returns focus to the button and the page goes back to "All quiet".

Does the page move when an alert appears?

No. The slot for active alerts has one fixed height in both states, the heading and the two sentences are held at the taller of their two versions, and the strip cells change height inside a strip that has a fixed one, so the button and the rows stay where they are.

How does it look on a phone?

The drawing sits above the copy at 140 px tall, the button is full width and on the first screen, and the four rows keep just a name and a word. Nothing scrolls sideways, even at 320 px wide, and the sentences about the strips are kept for screen readers.

  • Pro

    An incident tracker's quiet log: a calendar of 13 weeks of 7 quiet dots, a 30, 60 or 90 day range that re-slices the grid and the line 0 incidents in 60 days, and a Run a drill button that marks one day with a tooltip.

  • Pro

    An error monitor's empty list as an install guide: a code window with npm, pnpm and bun tabs and a copy button, an initialise snippet, a Send a test error button that lists one simulated row, and a calm lake whose ring turns solid.

  • Pro

    No Notifications Empty State

    Activity and updates

    An activity inbox's bell popover shown open in place: You're all caught up, a cup of tea whose three wisps of steam turn solid as Mentions, Replies and Updates are switched on, and a Save preferences button that says Saved in this demo.

  • Pro

    An uptime monitor's empty list as a setup form: an address, a check interval, three regions and a derived checks-a-day line, a flat heartbeat line with a dashed first spike, and one Add monitor button with a simulated check.

  • Pro

    Usage Alerts Billing

    Plan and usage

    Usage alert settings: percentage thresholds as switches with number inputs, recipients as email chips, and a choice between email and a webhook, with a save that checks them.

  • Pro

    A code scanner's clean results page as a scan scope: four areas with an Include switch each, a Run scan that walks through them in a simulated scan and ends on 0 found, and a shield whose dashed check turns solid.