Restaurant Opening Soon
A split-screen opening-soon layout for a restaurant or venue: one side shows an interior photo, the other carries the venue name, an eyebrow, a heading, an icon-led grid of opening details (address, date, hours), and an email form with a success state.
Docs
Installation
A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its media-slot dependencies and any missing npm packages, and installs them straight into your project.
npx shadcn add https://staaarter.com/r/restaurant-opening-soon.jsonPrefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/coming-soon/comingsoon56.tsx instead.
Usage
The file also exports comingsoon56Demo, the exact props behind the preview above. Spread it to get a working section in one line, then replace it with your own data.
import { ComingSoon56, comingsoon56Demo } from "@/components/blocks/coming-soon/comingsoon56"; export default function Page() { return <ComingSoon56 {...comingsoon56Demo} />; }
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| image | MediaSlotImage | none | Interior or venue photo for the image side. |
| venueName | string | "The Hollow Fig" | Restaurant or venue name. |
| eyebrow | string | "Opening soon" | Small label above the heading. |
| heading | string | "A new table is being set" | Main heading under the eyebrow. |
| description | string | "We're putting the finishing touches on the dining room. Join the list and we'll email you the moment we open the doors." | Supporting sentence under the heading. |
| details | OpeningDetail[] | none | Icon-led opening-details rows, e.g. address, opening date, and hours. |
| className | string | none | Extra classes for the outer section element. |
Types
export interface OpeningDetail { icon: "address" | "date" | "hours"; label: string; value: string; }
Behavior notes
- The email form is a real controlled input with a submit handler that flips local state to a success message, nothing is sent over the network.
- The interior photo, venue name, eyebrow, heading, and opening-details grid are all static and non-interactive.
- Each detail's icon (MapPin, Calendar, or Clock) is chosen internally from the `icon` string key rather than passed in as a component, so the block stays a plain data prop from the outside.
- Below the lg breakpoint the two-column grid collapses to a single stacked column, the photo renders above the details and form.
More Coming Soon Blocks
View all →countdown-timer-launch
Countdown Timer Launch
A centered launch page with a live days/hours/minutes/seconds countdown to a target date.
development-progress-milestones
Development Progress Milestones
A centered launch page with an overall progress bar and a milestone tracker list with status badges.
social-connect-launch
Social Connect Launch
A centered coming-soon page with pill-style outline buttons linking out to Twitter, GitHub, LinkedIn, and email.
animated-icons-preview
Animated Icons Preview
A centered coming-soon page with a row of bobbing icon tiles and a pulsing build-status indicator.
sneak-peek-feature-grid
Sneak Peek Feature Grid
A centered coming-soon page with a grid of blurred feature cards teased behind a lock icon overlay.
waitlist-with-avatars
Waitlist with Avatars
A centered coming-soon page with a working waitlist signup form, stacked subscriber avatars, and a live join count.