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 Tinting
| Package | Price shown | Cents | Badge | Upsells to |
|---|---|---|---|---|
| Carbon Tint | From $250 | 25000 | Entry | ceramic |
| Ceramic Tint | From $350 | 35000 | Most Popular | superceramic |
| Super Ceramic | From $450 | 45000 | Premium | — |
| Two Front Windows | From $180 | 18000 | Add-on | ceramic |
| Windshield Tint | From $180 | 18000 | Standalone | — |
✨ Auto Detailing
| Package | Price shown | Cents | Badge | Upsells to |
|---|---|---|---|---|
| The Cabin Revival | From $300 | 30000 | Interior | family |
| The Family Makeover | From $400 | 40000 | Most Popular | — |
| Clay and Seal | $150 flat | 15000 | Paint Prep | info only |
| Smoke Odor Removal | Quote on request | — | Specialty | — |
🛡️ Ceramic Coating
| Package | Price shown | Cents | Badge | Upsells to |
|---|---|---|---|---|
| 1-Year Ceramic Topper | $300 flat | 30000 | Entry | c3yr |
| 3-Year Ceramic | From $1,000 | 100000 | Most Popular | c5yr |
| 5-Year Ceramic | From $1,600 | 160000 | Premium | — |
Windshield add-on: + From $180 · offered on Ceramic Tint, Super Ceramic, Two Front Windows