import React, { useState } from 'react'; import { PackageTier, VehicleType } from '../types'; const DetailRealityCheck: React.FC = () => { const [vehicleType, setVehicleType] = useState(VehicleType.CAR_4DR); const [dirtiness, setDirtiness] = useState(5); const [hasHair, setHasHair] = useState(false); const [hasStains, setHasStains] = useState(false); const [hasOdors, setHasOdors] = useState(false); const [year, setYear] = useState(new Date().getFullYear()); const [result, setResult] = useState<{ tier: PackageTier; price: string; reason: string } | null>(null); const calculate = () => { const isNew = (new Date().getFullYear() - year) <= 5; const isCar = vehicleType === VehicleType.CAR_2DR || vehicleType === VehicleType.CAR_4DR; let tier = PackageTier.MODERATE; let price = ""; let reason = ""; // VIP LIGHT CHECK ($250) if (isNew && isCar && !hasHair && !hasStains && !hasOdors && dirtiness <= 4) { tier = PackageTier.VIP_LIGHT; price = "$250"; reason = "Good news, this one behaves nicely, so you qualify for our VIP Light Detail at $250."; } // MINIVAN SPECIAL ($650+) else if (vehicleType === VehicleType.MINIVAN) { tier = PackageTier.MODERATE; price = dirtiness > 7 ? "$750+" : "$650+"; reason = "Minivans are large projects. " + (dirtiness > 7 ? "That level of cleaning" : "Standard care") + " starts around " + price + " to get it right."; } // EXTREME ($550+) else if (dirtiness >= 9 || (hasHair && hasStains && hasOdors)) { tier = PackageTier.EXTREME; price = vehicleType === VehicleType.SUV ? "$600+" : vehicleType === VehicleType.TRUCK ? "$650+" : "$550+"; reason = "That bumps it into our next tier so we can handle the heavy lifting. This requires a total restoration focus."; } // HEAVY (Fails 2+ VIP conditions) else if ([hasHair, hasStains, hasOdors, dirtiness > 5].filter(Boolean).length >= 2) { tier = PackageTier.HEAVY; price = vehicleType === VehicleType.SUV ? "$475-$525" : vehicleType === VehicleType.TRUCK ? "$500-$550" : "$425-$475"; reason = "Failing multiple VIP conditions moves this into our Heavy tier. We’ll need the extra time for pet hair or stains."; } // MODERATE (Fails 1 VIP condition) else { tier = PackageTier.MODERATE; price = vehicleType === VehicleType.SUV ? "$400-$425" : vehicleType === VehicleType.TRUCK ? "$425-$450" : "$350-$375"; reason = "That bumps it into our Moderate tier—our most common service for Knoxville daily drivers."; } setResult({ tier, price, reason }); }; return (

Screening Tool

🧠 The Reality Check

30 seconds. Zero judgment. Tell us what we're working with.

setYear(parseInt(e.target.value))} />
setDirtiness(parseInt(e.target.value))} />
1: Just Tidy Level: {dirtiness} 10: "No comment"
{[ { label: 'Hair', state: hasHair, set: setHasHair, icon: '🐶' }, { label: 'Stains', state: hasStains, set: setHasStains, icon: '🧃' }, { label: 'Odors', state: hasOdors, set: setHasOdors, icon: '👃' }, ].map(item => ( ))}
{result ? (

Professional Suggestion

{result.tier}

{result.price}

"{result.reason}"

) : (

Complete the quick screening
to reveal your tier

)}
); }; export default DetailRealityCheck;
top of page
bottom of page