Widget test page

These buttons call the same openForm() function your live site already uses. Nothing here touches sierrautospa.com.

The form is complete. Walk it end to end — package, upsell, vehicle, contact, calendar, review, submit. Submissions go to /api/bookings, which logs them to your terminal until Supabase and Zapier are connected. Check that none of this page’s maroon buttons or wavy underlines get inside the modal.

This button uses the newer data-sas-book attribute instead of an inline onclick — both work:


Quote forms — flat glass and PPF

The two services the booking wizard deliberately can’t handle, because neither has a price you can reach from a dropdown. Same modal design, same step-by-step feel, but they end in a quote request: no calendar, no package prices, no deposit.

What to look for. Neither form asks for a vehicle year, make and model on a building — that was the whole problem. Flat glass asks about the property, the glass, then the address, because it’s quoted from a site visit. PPF leads with coverage rather than the car, since tapping an option is a far easier start than three empty text boxes. Try picking Specific panels only on the PPF form and watch what appears underneath.

Submissions go to /api/quotes and land in the quote_requests table. Without Supabase and Zapier configured locally they are logged to your terminal instead, and the form still shows the confirmation screen.

Photos. On step 4 the form asks GET /api/quotes/photo whether uploads are possible, and only draws the uploader if they are. So if your .env.local has no Supabase keys you won’t see it at all — that’s correct, not a bug. A control that fails the moment it’s touched is worse than one that isn’t offered. With Supabase connected you need migration 0005 run first, since it creates the private quote-photos bucket.

These use the same class triggers your live buttons will:


Pricing data check

Read straight out of shared/seed.ts. If these numbers match your site, the data model is right and everything downstream inherits it.

🪟 Window TintingFrom $250 · ~3 hours · Usually Thu–Sun

PackagePrice shownCentsBadgeUpsells to
Carbon TintFrom $25025000Entryceramic
Ceramic TintFrom $35035000Most Popularsuperceramic
Super CeramicFrom $45045000Premium—
Two Front WindowsFrom $18018000Add-onceramic
Windshield TintFrom $18018000Standalone—

✨ Auto DetailingFrom $150 · 1–5 hours · Mon–Wed

PackagePrice shownCentsBadgeUpsells to
The Cabin RevivalFrom $30030000Interiorfamily
The Family MakeoverFrom $40040000Most Popular—
Clay and Seal$150 flat15000Paint Prepinfo only
Smoke Odor RemovalQuote on request—Specialty—

🛡️ Ceramic CoatingFrom $300 · Any day · 8:00 AM

PackagePrice shownCentsBadgeUpsells to
1-Year Ceramic Topper$300 flat30000Entryc3yr
3-Year CeramicFrom $1,000100000Most Popularc5yr
5-Year CeramicFrom $1,600160000Premium—

Windshield add-on: + From $180 · offered on Ceramic Tint, Super Ceramic, Two Front Windows