Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

No Dashboards Empty State Block for Radix UI

A reporting tool's dashboards page before the first one: a framed window with a list pane and a dashed New dashboard row, and a page that asks for a layout from three drawn thumbnails before it creates the dashboard.

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

Turn the empty dashboards page into the first dashboard, with this no dashboards empty state for React with Radix UI. A hairline frame with a plus mark on each corner holds a window of fixed height for Cindermesh, a reporting tool: a plain list pane at the start with the product's mark, "Dashboards" and its count, and a dashed New dashboard row; and, beside it, a page with a top bar and the main area. The main area asks for a layout in three cards, each with a drawn thumbnail (a grid of four, a chart with a side list, one wide chart), as one choice group built from native radio buttons. The Shine Button in the top bar, the only colored control, names the choice ("Create a grid dashboard"); pressing it adds the dashboard to the list with its thumbnail and shows its drawn skeleton in the main area. The frame is ruled by Guides, the phone's list is a Native Select, and everything moves with CSS transitions only. For the empty page of any tool where people build their own views.

FAQ

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

The dashboards live in the page's state: reload and the list is empty, and Start over empties it without a reload. Nothing is saved, and the skeletons are drawings, not charts. To wire it for real, create the dashboard with your API where the code says so, add its row from the response, and render your own widgets in the main area in place of the drawn skeleton.

Why is it a window, and why is there no sidebar component?

A dashboards page lives inside an app, so the block is the app's own frame: a list pane, a top bar with the page's heading and its one action, and a main area that scrolls on its own. The list pane is plain markup rather than the catalog Sidebar, because it only has to list dashboards: a row for each, a dashed one for a new dashboard. The window keeps its height whatever you do, and only the main area scrolls.

How does the choice work?

The three cards are real radio buttons with the card as their label, so the arrow keys move between them and the button's label follows ("Create a chart dashboard"). A layout that has been made is marked Created and can't be chosen again in this demo; the next free one is preselected. With all three made the button says so and stays in the tab order.

Is it usable with a keyboard and a screen reader?

Tab runs through the list pane (each dashboard, then New dashboard, then Start over), the button in the top bar and the layout cards. The page you are on is marked as the current page in the list, a polite status line says what was created, and the drawings are hidden from screen readers because the names and sentences say the same.

How does it look on a phone?

The list pane gives way to a select above the main area that holds New dashboard and each dashboard you made, with Start over beside it once something has changed. The three layout cards stack and the main area scrolls inside the window; the button stays in the top bar.

Does anything change the window's height?

No. The window is a fixed height from the medium breakpoint (46rem) and a shorter one on phones (36rem), the list scrolls in its pane and the main area in its own region, so creating dashboards never moves the page around the window.