diff --git a/lib/screens/it_service_requests/isr_status_kind.dart b/lib/screens/it_service_requests/isr_status_kind.dart new file mode 100644 index 00000000..abd2f0a0 --- /dev/null +++ b/lib/screens/it_service_requests/isr_status_kind.dart @@ -0,0 +1,16 @@ +import '../../models/it_service_request.model.dart'; +import '../../theme/app_status_colors.dart'; + +/// Maps an IT service request status to a semantic [StatusKind] so its color +/// carries meaning consistently across the list and detail screens +/// (amber=pending approval, grey=scheduled, blue=in progress, green=completed, +/// grey=cancelled). +StatusKind isrStatusKind(String status) => switch (status) { + ItServiceRequestStatus.pendingApproval => StatusKind.warning, + ItServiceRequestStatus.scheduled => StatusKind.neutral, + ItServiceRequestStatus.inProgress => StatusKind.info, + ItServiceRequestStatus.inProgressDryRun => StatusKind.info, + ItServiceRequestStatus.completed => StatusKind.success, + ItServiceRequestStatus.cancelled => StatusKind.neutral, + _ => StatusKind.neutral, +}; diff --git a/lib/screens/it_service_requests/it_service_request_detail_screen.dart b/lib/screens/it_service_requests/it_service_request_detail_screen.dart index 940e0197..bdb439c4 100644 --- a/lib/screens/it_service_requests/it_service_request_detail_screen.dart +++ b/lib/screens/it_service_requests/it_service_request_detail_screen.dart @@ -31,6 +31,7 @@ import '../../widgets/mono_text.dart'; import '../../widgets/responsive_body.dart'; import '../../theme/app_status_colors.dart'; import '../../widgets/status_pill.dart'; +import 'isr_status_kind.dart'; import 'it_service_request_pdf.dart'; class ItServiceRequestDetailScreen extends ConsumerStatefulWidget { @@ -557,7 +558,7 @@ class _ItServiceRequestDetailScreenState MonoText(request.requestNumber!), const SizedBox(width: 12), StatusPill.kind( - _isrStatusKind(request.status), + isrStatusKind(request.status), label: ItServiceRequestStatus.label(request.status), ), const Spacer(), @@ -2246,15 +2247,3 @@ class _EvidenceSectionState extends ConsumerState<_EvidenceSection> { } } -/// Maps an IT service request status to a semantic [StatusKind] -/// (amber=pending approval, blue=scheduled/in-progress, green=completed, -/// grey=cancelled). -StatusKind _isrStatusKind(String status) => switch (status) { - ItServiceRequestStatus.pendingApproval => StatusKind.warning, - ItServiceRequestStatus.scheduled => StatusKind.info, - ItServiceRequestStatus.inProgress => StatusKind.info, - ItServiceRequestStatus.inProgressDryRun => StatusKind.info, - ItServiceRequestStatus.completed => StatusKind.success, - ItServiceRequestStatus.cancelled => StatusKind.neutral, - _ => StatusKind.neutral, -}; diff --git a/lib/screens/it_service_requests/it_service_requests_list_screen.dart b/lib/screens/it_service_requests/it_service_requests_list_screen.dart index 3a008345..2b3dee2e 100644 --- a/lib/screens/it_service_requests/it_service_requests_list_screen.dart +++ b/lib/screens/it_service_requests/it_service_requests_list_screen.dart @@ -19,6 +19,7 @@ import '../../utils/app_time.dart'; import '../../utils/snackbar.dart'; import '../../theme/app_status_colors.dart'; import '../../widgets/app_status_summary.dart'; +import 'isr_status_kind.dart'; import '../../widgets/m3_card.dart'; import '../../widgets/mono_text.dart'; import '../../widgets/reconnect_overlay.dart'; @@ -669,7 +670,10 @@ class _RequestTile extends StatelessWidget { if (request.requestNumber != null) MonoText(request.requestNumber!), const Spacer(), - StatusPill(label: ItServiceRequestStatus.label(request.status)), + StatusPill.kind( + isrStatusKind(request.status), + label: ItServiceRequestStatus.label(request.status), + ), ], ), const SizedBox(height: 8),