Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Under Construction Notify Error Block for React

A full-height holding page for a marketplace that is not open yet: an email form that checks itself and notes the address in place, beside the four phases of the build as a vertical Steps with a bar for the schedule.

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

Hold the door open for visitors who arrive early, with this under construction block for React with Base UI. It's the holding page of Plankby, a second-hand furniture marketplace: the page's rails run its full height and one band crosses the screen, topped by a strip of diagonal hatching that is the page's only decoration. At the start come the product's mark, the heading, one sentence with the month it opens and the one email form, with a Shine Button, the only colored control, that says "Tell me when it launches". At the end, after a divider with plus marks, a Progress bar says how much of the schedule has passed and a read-only vertical Steps lists the four phases (design, build, test, launch) with their months, the finished one ticked and the current one outlined. On a phone the phases sit under the form. It's built from Steps, Progress, Shine Button, Field, Input and Guides, with a CSS entrance only. For launches, closed betas and any product that opens later.

FAQ

What does the form check, and where does the address go?

It checks on press, never before: an empty field says "Enter your email address.", an address without an at sign or a dot says "Enter a full email address.", and focus goes to the field. A good address waits 700 ms behind a busy button, then the form is replaced in its own space by "Noted, in this demo", which shows the address and says no email is sent. "Use a different address" returns to the form with focus on the field. To go live, send the address to your list provider where the code says so.

Where do the months and the percent come from?

Each phase has a typed start and end date, and AS_OF is a fixed "today", so a phase is done once its end has passed and the first unfinished phase is the current one. The bar is the share of the whole schedule's days that have passed, and the launch month in the sentence is the last phase's end. Nothing reads the clock, so the page looks the same on the server and in every time zone. Say "of the schedule", not "complete": time passed isn't work done.

Is the phase list interactive?

No. It's a read-only list of Steps: there are no triggers, so nothing can be pressed or jump ahead; it is a drawing of where the build stands, and each phase carries its state in words ("Done", "In progress", "Planned") as well as in its marker. The marker numbers and rail are decorative.

What is the hatched strip?

A purely decorative band, aria-hidden, drawn with a repeating CSS gradient in the foreground color at 10%, so it follows every theme and both color modes. It's the only decoration on the page; delete the one div to remove it.

Which status code should the server send?

For a page that stands in for a product that isn't there yet, the usual answers are 200 with noindex while it is a holding page, or 503 with Retry-After if it replaces a real site for a while. A component can't set either: do it in your route.

How does it look on a phone?

The mark, heading, sentence, email field and button come first and the button ends on the first screen. A ruled band with plus marks then starts the phases, with the schedule bar over the four phases.

  • Pro

    A full-height page for a feature that is not on for your workspace yet: three conditions ruled from rail to rail, a rollout meter with the next wave, and a Switch that joins early access and flips the last condition.

  • Pro

    A full-height maintenance page for an online bank that shows a five-segment progress bar with the window's start and expected return, and a Check again button that reports a typed result.

  • Pro

    A full-height status page for cloud storage moving an account between regions: a drawn move whose dashes run three cycles, and an accordion of five steps that each say what they do and what stays available.

  • Pro

    A full-height page for a web app tab running a retired version: a ruler of five releases with the supported range shaded and You are here marked, a radio group to read each release, three changes in 5.0 and a reload button.

  • Pro

    A maintenance notice for a payroll service as one framed panel: a clock you scrub through the 02:00 to 06:00 UTC window drives the time left, a progress bar and four tasks that read Done, Running or Queued.

  • Pro

    Beta Ended Error

    Maintenance

    A full-screen page for the end of a beta: a drawn tester card with figures counted from dates, a perforated discount ticket with a copyable code, and a Claim 35% off button that recomputes the first-year price from whole cents.