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.
{[
{ 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}
) : (
Complete the quick screening
to reveal your tier
)}
);
};
export default DetailRealityCheck;
top of page
bottom of page