A bright, friendly cleaning service homepage built with Bootstrap 6 for a fictional company called Tidywell. It includes a quick price check, packages, a room checklist, booking with a live estimate, reviews and an FAQ.
How it works
Everything sits inside .tdw-page, which pins data-bs-theme="light" and maps the Bootstrap 6 primary role (--bs-primary-bg, --bs-control-checked-bg, --bs-focus-ring) to the brand mint so buttons, checks and ranges match.
- Navbar: a floating pill
navbar lg:navbar-expand. Below 1024px the toggler opens<dialog class="drawer drawer-end">; the script syncsaria-expandedfrom theshown.bs.drawer/hidden.bs.drawerevents. "Services" opens a.menu. - Hero: headline with the
.tdw-markhighlighter, the.tdw-quickprice check (bedrooms and cleaning type) and an arch-shaped photo. The "Next available" card is computed from today inscript.js. Submitting it prefills the booking form. - Packages: a
btn-groupofbtn-checkradios (name="tdw-freq") switches between one-time, every 2 weeks and weekly. Each.tdw-price-amountreads itsdata-tdw-baseprice and applies the discount. - Checklist:
nav-pillstabs with three.tab-panepanels, each with a photo and a task list. - How it works: a
stepper md:stepper-horizontalinside.contains-inline. - Booking: service radios, two Bootstrap 6 Range sliders, a Combobox for home type, a Datepicker limited to tomorrow through 60 days ahead, arrival windows and add-on
.checkboxes..tdw-summaryrecalculates the total on every change; submit shows a spinner and then a Toast. - Reviews and FAQ: quote cards, stat tiles and an exclusive
<details name="tdw-faq">accordion.
Customization
- Change
--tdw-mint,--tdw-lemonand--tdw-inkon.tdw-pageinstyle.cssto rebrand; the--bs-primary-*overrides beside them carry the color into Bootstrap components. - Edit
TDW_PRICINGat the top ofscript.jsto set base prices, per-room surcharges and frequency discounts; keepdata-tdw-baseon the package cards in sync. - Change
TDW_BOOKING_DAYSto allow bookings further ahead. - Add an add-on by copying a
.checkrow and setting itsdata-tdw-extraprice. - Replace the
setTimeoutin the booking submit handler withfetch()to your booking endpoint. - Remove
.tdw-plan-featuredfrom the Deep card to make all packages look equal. - Delete sections such as
#tdw-checklistor#tdw-how(and their navbar links). - The photos come from Unsplash; replace them with photos of your own team and customers' homes.
Accessibility
A skip link jumps to #tdw-main. Tabs use role="tab" and aria-selected, radio groups have role="radiogroup" with a label, range values are mirrored in <output> elements, and the estimate and frequency status are announced through aria-live. Focus outlines are visible on all controls, and smooth scrolling and transitions are disabled under prefers-reduced-motion.
Bootstrap 6 notes
Built on Bootstrap 6.0.0-alpha.1, so alpha APIs can still change. BS5 developers will notice btn-solid theme-primary replaces btn btn-primary, the navbar collapses into a Drawer instead of navbar-collapse, Dropdown is now Menu, the accordion is native <details>, form-control styles the <select>, and validation uses data-bs-validate. New components used here: Range, Combobox, Datepicker and Stepper. The script imports Drawer and Toast from the bundle as an ES module.