/** * @ai-summary List of vehicles needing attention (overdue maintenance) */ import React from 'react'; import { Box, SvgIconProps } from '@mui/material'; import CheckCircleRoundedIcon from '@mui/icons-material/CheckCircleRounded'; import ErrorRoundedIcon from '@mui/icons-material/ErrorRounded'; import WarningAmberRoundedIcon from '@mui/icons-material/WarningAmberRounded'; import ScheduleRoundedIcon from '@mui/icons-material/ScheduleRounded'; import { GlassCard } from '../../../shared-minimal/components/mobile/GlassCard'; import { getVehicleLabel } from '@/core/utils/vehicleDisplay'; import { VehicleNeedingAttention } from '../types'; interface VehicleAttentionProps { vehicles: VehicleNeedingAttention[]; onVehicleClick?: (vehicleId: string) => void; } export const VehicleAttention: React.FC = ({ vehicles, onVehicleClick }) => { if (vehicles.length === 0) { return (

All Caught Up!

No vehicles need immediate attention

); } const priorityConfig: Record }> = { high: { color: 'error.main', icon: ErrorRoundedIcon, }, medium: { color: 'warning.main', icon: WarningAmberRoundedIcon, }, low: { color: 'info.main', icon: ScheduleRoundedIcon, }, }; return (

Needs Attention

Vehicles with overdue maintenance

{vehicles.map((vehicle) => { const config = priorityConfig[vehicle.priority]; const IconComponent = config.icon; return ( onVehicleClick?.(vehicle.id)} role={onVehicleClick ? 'button' : undefined} tabIndex={onVehicleClick ? 0 : undefined} onKeyDown={(e: React.KeyboardEvent) => { if (onVehicleClick && (e.key === 'Enter' || e.key === ' ')) { e.preventDefault(); onVehicleClick(vehicle.id); } }} sx={{ p: 2, borderRadius: 3, bgcolor: 'action.hover', border: '1px solid', borderColor: 'divider', cursor: onVehicleClick ? 'pointer' : 'default', transition: 'all 0.2s', '&:hover': onVehicleClick ? { bgcolor: 'action.selected', } : {}, }} >
{getVehicleLabel(vehicle)}

{vehicle.reason}

{vehicle.priority.toUpperCase()} PRIORITY
); })}
); }; export const VehicleAttentionSkeleton: React.FC = () => { return (
{[1, 2].map((i) => (
))}
); };