Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

No Guests Empty State Block for React

A collaboration tool's empty guest list: a pass to fill in (email, how long it lasts, view or comment), a visitor badge on a lanyard that fills as you type, a summary that rewrites itself, and a guest list of three dashed places.

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 the first guest a pass you fill in, with this no guests empty state for React with Base UI. A hairline frame with a plus mark on each corner holds the guest list of Verandaly, a client collaboration tool. At the start is the pass: an Input for the guest's email in a Field, a Native Select for how long it lasts (7 days, 30 days or no expiry) and a Toggle Group for what the guest can do, view or comment. At the end a visitor badge hangs on a lanyard with a dashed place for the photo; type an address and the place turns solid with the guest's initials, and the speech bubble turns solid when you let the guest comment. A Data List under the badge rewrites itself as you choose. The Shine Button, the only colored control, adds the guest to the list under it: three rows, each held by a dashed place, so the panel never changes height. The frame's bands are ruled by Guides and the badge is a single drawn SVG that changes by class, with a CSS entrance only. For the guest or client list of any shared workspace.

FAQ

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

The guests live in the page's state: reload and the list is empty, and Start over empties it without a reload. Nothing is sent, saved or emailed. To wire it for real, call your invite API where the code says so, then add the guest from its response, with the pass's own id, and show a pending state until they accept.

Where does the expiry date come from?

From a fixed day written at the top of the file, not the visitor's clock, so the example always reads "Ends 16 Oct" for a 7 day pass. In your app compute it on the server when the pass is created, and show it in the guest's own time zone. The dates are in time elements with the ISO day, and every one is spelled the same on the server and in the browser.

What does the email field refuse?

An empty field, an address that is not in the form name@company.example, an address on the workspace's own domain (those people join as members, not guests) and an address that is already a guest. Each is said in a line under the field that holds its space, so the layout never moves, and focus goes back to the field. The button stays in the tab order and says why instead of doing nothing.

Is the badge drawing accessible?

It is decoration: hidden from assistive technology, with the same facts in text beside it. The Data List names the guest, what they can do and when the pass ends, the guest list repeats each guest's address and pass, and one polite status line says every change. The words on the badge are HTML laid over the drawing, not SVG text.

How does it look on a phone?

The pass stacks: the fields and the Invite guest button come first so the button is on the first screen, then the badge and its summary, then the guest list. The guest list never holds more than three rows, the status line reserves its lines, and the page does not scroll sideways at 320 px.

Which controls does it use?

The expiry is a native select and the access choice is a single Toggle Group that always keeps one value. The pressed choice is a solid foreground tone, never the primary color, so the Shine Button stays the one colored control.

  • Pro

    A full-height invite page for a team chat app: a drawn round table with five chairs that fill as email chips are added, a role select with a sentence per role, and one button that counts the invites and lists them.

  • Pro

    A team directory's empty state as a bulk paste: a box for one person per line, a table that previews every line it reads and flags the ones it cannot, and an isometric office floor where a desk fills for each person.

  • Pro

    Invite Members Dialog

    Share and invite

    A household calendar's Members page with its invite dialog shown open: one email field that knows the household's domain, so an outside address joins as a guest, the people who already have access, and a Send invite button that adds a pending row.

  • Pro

    Temporary access to an account: a list of active grants with how far through each is and when it ends, End now with Undo, and a side sheet that picks a person, what they can do and 1 to 90 days.

  • Pro

    The people who can sign in to a shared account as hairline tiles: role menu, two-factor on or off, last sign-in, those without two-factor first with a reminder button, pending invitations and an invite form.

  • Pro

    A compliance tool's empty ledger: retention policy radio cards beside a vault door whose dial turns to the choice, and an empty table of Time, Actor, Action and Resource whose first row is written when the policy is saved.