| State | What shows |
| Normal | Two vehicles. A card shows nickname (or year make model when there is none), year make model, plate and state, Edit, Delete. “Add a vehicle” below. |
| Empty | “No vehicles yet. Add a vehicle to book an appointment.” with Add a vehicle. |
| Loading | Two grey cards. |
| Failure | Banner “We couldn’t load your vehicles.” with Try again. |
| Added | Back on the list after Save: “Vehicle added.” (Saving an edit uses the same bar; the Edit Save button leads here for the click-through, its sentence would be “Vehicle saved.”) |
| Delete? | Confirm sheet: “Delete this vehicle? It will no longer show in My vehicles. The shop keeps its service history.” Delete vehicle / Keep vehicle. Opened from the card or from Edit. The Delete? and Delete blocked sheets also apply to the Edit screen’s “Delete this vehicle”. |
| Delete blocked | When the vehicle has an upcoming appointment (the F-150 card in the drawing): sheet “You can’t delete this vehicle yet. It has an upcoming appointment. Call us at (555) 010-0123 and we’ll help.” Call (555) 010-0123 / Close. The vehicle stays. Owner answer 2026-11-09. |
| Deleting | Sheet stays; button “Deleting…”, disabled. |
| Delete failed | In the sheet: “We couldn’t delete your vehicle. Try again, or call us at (555) 010-0123.” The vehicle stays in the list. |
| Deleted | “Vehicle deleted. The shop keeps its service history.” The vehicle is gone from the list. Deleting the last one leads to the Empty state. |
| Add | Year, Make, Model dropdowns (Make waits for Year, Model for Make), License plate, State, VIN (optional), Nickname (optional). Required fields have no “optional” tag. |
| Add: errors | “Enter the license plate.” “Choose a state.” “A VIN has 17 characters. Check it, or leave it empty.” |
| Loading models | Model disabled with “Loading models…” while the list for the chosen year and make loads. |
| List not loaded | Banner “We couldn’t load the list of makes and models.” with Try again; dropdowns disabled; Save disabled. Owner answered 2026-11-09: keep this error state for the mockup; a type-in fallback is a build-time option. The client still has to confirm it (open-questions). |
| Saving | Button “Saving…”, disabled. |
| Add: save failed | Banner “We couldn’t save your vehicle. Check your connection and try again.” The form keeps every value; Save vehicle stays tappable. |
| Edit: save failed | Banner “We couldn’t save your changes. Check your connection and try again.” The form keeps every value; Save changes stays tappable. |
| Edit | Same form filled, title “Edit vehicle”, Save changes, “Delete this vehicle”. |
All of them: the list, Add a vehicle, the form, Edit, Delete and the confirm sheet. Bottom navigation links to WB-9 placeholders.