Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

No Events Empty State Block for React

A calendar window with no events yet: a rail of calendars, October 2026 as a month grid where you pick a day, a form that takes its title and start, and an agenda with a pushpin that fills in.

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

Show an empty calendar as the calendar it is about to be, with this no events empty state for React with Base UI. A framed window of a fixed height holds the catalog Sidebar for Fixturely, an event planner: three calendars with the count of their events (an icon rail with tooltips when collapsed, a sheet on a phone). The page has a top bar with the Shine Button, the only colored control, and under it October 2026 as a month grid with a button for every day, a form for the picked day ("New event on Tue 20 Oct": a title and a start time) and the agenda, a pushpin through a dashed date circle over drawn rows. Create event puts a dot on the day, a row in the agenda and the date in the circle, which turns solid. The window's own lines come from Guides on its frame, and the whole block uses CSS transitions only. For the first event of any calendar, planner or booking tool.

FAQ

What happens when I press Create event, and what stays in the page?

The event goes into the page's state, under the calendar chosen in the rail: the day gets a dot, the agenda gets a row, the calendar's count in the rail goes up and the circle in the agenda takes the date of the next event. Nothing is saved or sent: reload and the calendar is empty again, and Start over empties it without a reload. To wire it for real, send the event to your calendar API where the code says so and add the row from the response.

Why are some days closed, and where does today come from?

The page's "today" is a typed day, Friday 9 October 2026, not the clock. Days before it are marked closed (a click says so in the status line) and today is outlined. In your app, compute today after mount and close the days before it the same way.

Does the window ever change height?

No: it is a fixed height at every size, and only its regions scroll. The agenda always has room for its drawn rows, and the month, the form and the agenda stack in one scrolling page on a phone, with the top bar and its button always in view. The demo keeps eight events.

How does the month grid work with the keyboard and a screen reader?

It is a real table with a button for every day. One day is the tab stop (the picked day, or today), the arrow keys move between days within the month, and Enter or Space picks one. Each day is named with its date and its event count ("Tuesday 20 October, no events"), and the picked day says it is pressed. The grid is drawn left to right in any language, because it is a calendar; the table's caption and the agenda carry the same information as text.

What do the calendars in the rail do?

Each is a link that shows one calendar: the month's dots, the agenda and the top bar's heading follow it, and new events go into it. The rail follows the page's direction, collapses to icons with tooltips, and becomes a sheet on a phone that closes when you choose.

What if I press Create event with no day or no title?

The status line says what is missing and focus goes there: with no day, to the month grid's tab stop; with no title, to the title field. Nothing is added until both are there.

  • Pro

    A mail client in a fixed-height window: mailboxes and labels whose counts follow the mail you file, a searchable message list beside the open message, and Compose for a local draft.

  • Pro

    No Files Empty State

    Files and docs

    A file manager's empty All files page in a framed window: the catalog sidebar with its counts, a large dashed drop zone with a drawn filing drawer, and a table that lists the files you choose or drop.

  • Pro

    Mentor Availability Profile

    Schedules and booking

    A mentor profile that books across time zones: slots set once in UTC, a zone menu, a month grid marking the days with times, times that roll into the next day where they must, and session types with prices.

  • Pro

    Schedule Meeting Dialog

    Time and scheduling

    A month page with its new event dialog shown open: a title, a day from a folded calendar, a start time and length, guest emails as tags, and a day timeline that moves with the time and warns when the meeting clashes.

  • Pro

    No Meetings Empty State

    Calendar and time

    A meeting scheduler with nothing booked: a New meeting popover drawn open over a week, holding a day timetable where you pick a free hour, name the meeting and choose 15, 30 or 60 minutes, then paint it on the day.

  • Pro

    No Schedules Empty State

    Calendar and time

    A shift planner with no schedules yet: a segment group for Daily, Weekly or Monthly, weekday chips, the next four dates worked out from a fixed today, a loop drawing that closes, and one Create schedule button.