import 'package:flutter/material.dart'; import '../api/models.dart'; class StepProgress extends StatelessWidget { final List steps; final int totalSteps; const StepProgress({ super.key, required this.steps, required this.totalSteps, }); @override Widget build(BuildContext context) { if (totalSteps == 0) return const SizedBox.shrink(); return Column( children: steps.map((step) { IconData icon; Color color; switch (step.status) { case RunStatus.pending: icon = Icons.circle_outlined; color = Colors.grey; break; case RunStatus.running: icon = Icons.pending; color = Colors.blue; break; case RunStatus.completed: icon = Icons.check_circle; color = Colors.green; break; case RunStatus.error: icon = Icons.error; color = Colors.red; break; } return Padding( padding: const EdgeInsets.symmetric(vertical: 4), child: Row( children: [ Icon(icon, color: color, size: 24), const SizedBox(width: 12), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( step.title.isNotEmpty ? step.title : 'Step ${step.stepIndex + 1}', style: TextStyle( fontWeight: FontWeight.bold, color: step.status == RunStatus.running ? color : null, ), ), if (step.status == RunStatus.error && step.error.isNotEmpty) Text( step.error, style: const TextStyle(color: Colors.red, fontSize: 12), ), ], ), ), Text( step.status.name.toUpperCase(), style: TextStyle( fontSize: 11, color: color, fontWeight: FontWeight.bold, ), ), ], ), ); }).toList(), ); } }