shadcn.io is not affiliated with official shadcn/ui
Booked Dates Wedding Contact Block for React
A date enquiry for a wedding planner that shows the calendar first: a season band, an inline calendar with booked and too-soon days crossed out, guests, a venue style and contact details.
Installation
Overview
A wedding date enquiry for React with Base UI. Under a start-aligned header, a band of three cells on shared hairlines runs rail to rail: off-peak, shoulder and peak season, each with its months and an example venue price; the one the chosen date falls in is marked by a rule across its top. Below, split by a hairline that meets the band's rule with a + mark: at the start an inline calendar that opens about ten months ahead, where booked days (most summer Saturdays) and days too close to book are crossed out and can't be picked, with the chosen date written out underneath and a "Peak season" badge when it is one; at the end the number of guests, a venue style as three cells whose lines overshoot their corners, a name and an email. Submitting checks every field, including the guests against the venue's capacity, shows each problem under its field and moves focus to the first one; a valid request turns into a confirmation in the same space. It's built from Calendar, Number Input, Radio Group, Badge, Field, Input, Guides, Shine Button and Button, with your theme's tokens for every colour. For wedding planners, venues, photographers and any form where the diary is the first thing a visitor needs to see.
FAQ
Where does the form send its data?
Nowhere yet. The submit handler waits 800 milliseconds as a stand-in for a request, then shows the confirmation. Replace that timer in submit with your own call (your enquiries inbox, a CRM or a form endpoint): details holds the date, the guests, the venue style, the name and the email. The confirmation only repeats what was sent and promises no reply time.
Where do the booked dates come from, and why isn't a month written in?
The calendar never names a month or a year. When the block loads in the browser it reads today's date and works out the days a visitor may book (from eight weeks away to two years away) and the month to open on (about ten months ahead), so the page always shows a current diary; until then it keeps the calendar's space empty so nothing jumps. Which days are booked comes from booked, a made-up diary that gives the same answer for the same date every time: Saturdays fill first, then Fridays and Sundays, and summer fills sooner. Replace booked with your own bookings. NOTICE, DIARY and OPENS set the three windows.
How do the seasons and prices work?
SEASONS lists each season's name, months, and an example price for venue hire. The cell for the season of the chosen date gets a rule across its top and aria-current, and the chosen date is written out with a season badge under the calendar. The prices are examples, and the form says so beside the button.
How does the form check what's entered?
The form has noValidate, so the block shows its own messages. On submit, problems checks that an open date is chosen, the guests are between 10 and 250 and fit the venue style chosen (the barn holds 150, the ballroom 200, the garden 250), a venue style is picked, and the name and email are filled in (the email needs an @ and a domain). Each problem appears under its field with an icon, and focus moves to the first one, which can be the calendar. Choosing a date, a style or typing clears its message.
Which calendar is it on each library?
The date is stored as plain year-month-day text, so the form reads the same on every target.
The calendar is React Day Picker's: booked days are disabled with a line through them, and the chosen day is drawn in the foreground colour.
How does it fit on a phone?
Below lg the split stacks: the season band as three short cells (the price drops its first word), the calendar centred, then the fields under it, each part opened by a rule with + marks. The three venue styles go one per row below sm, and the submit button goes full width. Nothing scrolls sideways at 320 pixels. The header and the band fade up once on load; with reduced motion they simply appear.
Related
- Pro
Table Reservation Contact
Events and datesA restaurant reservation in a card in card: a party size stepper, a date picker that closes Mondays and past days, five sittings as choices and a form that checks itself and confirms in place.
- Pro
Month Calendar Scheduler Contact
Calls and meetingsA scheduling split: a host panel at the start; a month calendar that closes weekends and past days, the open times of the chosen day and a name and email at the end, with Confirm unavailable until a day and time are chosen.
- Pro
Stylist Booking Contact
Visits and servicesA salon booking that starts with the person: three stylists in hairline cells, each with their next three openings as chips, a live appointment line, and a form that checks itself and confirms in place.
- Pro
Date Range Calendar Rental Contact
Events and datesAn equipment-hire request in four ruled bands: a tool select with its rates, an inline range calendar with a delivery switch, a band of hairline cells that prices the hire, then name and email.
- Pro
Talk to Sales Contact
Contact formsA talk-to-sales split for a scheduling platform: what happens next as three numbered steps and a band of contact details beside a form that checks itself, shows each problem under its field and confirms in place.
- Pro
Guest Count Ruler Contact
Events and datesAn event-catering request for a caterer: a guest-count slider drawn as a ruler beside the cost per head and the total, then a three-course menu, dietary needs and a short form on ruled bands.