Vehicle detail page shows "Not provided" in gray italic for missing fields (Color, VIN, Purchase Price/Date). But on the vehicle list cards, empty VIN shows "VIN:" with nothing after it. The approach should be consistent across all views.
Recommendation
Pick one consistent pattern for empty/missing field display and apply it everywhere:
Option A: "Not provided" in gray italic (currently used on detail page)
Option B: Hide the field row entirely when empty
Acceptance Criteria
Missing/empty fields use the same display pattern across all views (detail page, list cards, settings)
No blank labels with empty values visible
Tested on mobile (320px, 768px) and desktop (1920px)
Relates to #162
## Severity: Medium
## Problem
Vehicle detail page shows "Not provided" in gray italic for missing fields (Color, VIN, Purchase Price/Date). But on the vehicle list cards, empty VIN shows "VIN:" with nothing after it. The approach should be consistent across all views.
## Recommendation
Pick one consistent pattern for empty/missing field display and apply it everywhere:
- Option A: "Not provided" in gray italic (currently used on detail page)
- Option B: Hide the field row entirely when empty
## Acceptance Criteria
- Missing/empty fields use the same display pattern across all views (detail page, list cards, settings)
- No blank labels with empty values visible
- Tested on mobile (320px, 768px) and desktop (1920px)
Phase: 3 (Vehicle display consistency) | Priority: Medium | Depends on: #165 (Milestone 1 -- shared utilities) | Blocks: None
Context
Empty fields are handled inconsistently: some show blank labels, some show "null", some hide correctly. This milestone standardizes the approach: hide empty fields on list/card views, keep "Not provided" on detail pages.
Implementation
Pattern decision:
List cards: Hide empty fields entirely (don't show rows with no data)
Detail pages: Show "Not provided" in italic gray (already exists in VehicleDetailPage.tsx)
In VehicleCard.tsx: Wrap VIN in conditional {vehicle.vin && ...} (may overlap with #167 work -- coordinate)
In SettingsPage.tsx and MobileSettingsScreen.tsx: Replace direct Year/Make/Model concatenation with getVehicleSubtitle() from @/core/utils/vehicleDisplay
Verify VehicleDetailPage.tsx detail page pattern is consistent (should already be correct)
Verify VehicleAttention.tsx uses getVehicleLabel() (should be done in #165)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Relates to #162
Severity: Medium
Problem
Vehicle detail page shows "Not provided" in gray italic for missing fields (Color, VIN, Purchase Price/Date). But on the vehicle list cards, empty VIN shows "VIN:" with nothing after it. The approach should be consistent across all views.
Recommendation
Pick one consistent pattern for empty/missing field display and apply it everywhere:
Acceptance Criteria
Implementation Plan (from #162 -- Milestone 8)
Phase: 3 (Vehicle display consistency) | Priority: Medium | Depends on: #165 (Milestone 1 -- shared utilities) | Blocks: None
Context
Empty fields are handled inconsistently: some show blank labels, some show "null", some hide correctly. This milestone standardizes the approach: hide empty fields on list/card views, keep "Not provided" on detail pages.
Implementation
Pattern decision:
VehicleDetailPage.tsx)Exhaustive audit scope:
features/vehicles/components/VehicleCard.tsx:54features/vehicles/components/VehicleCard.tsx:57-61features/vehicles/mobile/VehicleMobileCard.tsx:43-46features/vehicles/pages/VehicleDetailPage.tsx:288-350pages/SettingsPage.tsx:378getVehicleSubtitle()features/settings/mobile/MobileSettingsScreen.tsx:376getVehicleSubtitle()features/dashboard/components/VehicleAttention.tsxgetVehicleLabel()Changes:
VehicleCard.tsx: Wrap VIN in conditional{vehicle.vin && ...}(may overlap with #167 work -- coordinate)SettingsPage.tsxandMobileSettingsScreen.tsx: Replace direct Year/Make/Model concatenation withgetVehicleSubtitle()from@/core/utils/vehicleDisplayVehicleDetailPage.tsxdetail page pattern is consistent (should already be correct)VehicleAttention.tsxusesgetVehicleLabel()(should be done in #165)Files
frontend/src/features/vehicles/components/VehicleCard.tsxfrontend/src/features/vehicles/mobile/VehicleMobileCard.tsx(verify only)frontend/src/features/vehicles/pages/VehicleDetailPage.tsx(verify only)frontend/src/pages/SettingsPage.tsxfrontend/src/features/settings/mobile/MobileSettingsScreen.tsxfrontend/src/features/dashboard/components/VehicleAttention.tsx(verify only)Commit Convention
Test Criteria
Branch
Work on branch
issue-162-ux-design-audit-cleanup(shared with all #162 sub-issues)Milestone: Audit Complete -- No Additional Changes Needed
Phase: Execution | Agent: Developer | Status: PASS
Audit Results
VehicleCard.tsxVehicleCard.tsxVehicleMobileCard.tsxVehicleDetailPage.tsxSettingsPage.tsx:379getVehicleSubtitle()(fixed in #165)MobileSettingsScreen.tsx:377getVehicleSubtitle()(fixed in #165)VehicleAttention.tsx:108getVehicleLabel()(fixed in #165)Pattern Summary
All locations are consistent. No additional code changes required -- prior milestones (#165, #167) already addressed all items.
Verdict: PASS | Next: Continue to next milestone