Files

50 lines
1.4 KiB
Dart

import 'package:flutter/material.dart';
import '../api/models.dart';
class PipelineCard extends StatelessWidget {
final Pipeline pipeline;
final VoidCallback onTap;
final VoidCallback onDelete;
const PipelineCard({
super.key,
required this.pipeline,
required this.onTap,
required this.onDelete,
});
@override
Widget build(BuildContext context) {
return Card(
margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 6),
child: ListTile(
contentPadding: const EdgeInsets.symmetric(horizontal: 20, vertical: 8),
leading: const Icon(Icons.api, size: 32),
title: Text(
pipeline.name,
style: const TextStyle(fontWeight: FontWeight.bold),
),
subtitle: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'${pipeline.prompts.length} prompt${pipeline.prompts.length != 1 ? 's' : ''}',
),
if (pipeline.workingDir.isNotEmpty)
Text(
'📁 ${pipeline.workingDir}',
style: const TextStyle(fontSize: 12, color: Colors.grey),
),
],
),
trailing: IconButton(
icon: const Icon(Icons.delete_outline, color: Colors.red),
onPressed: onDelete,
tooltip: 'Delete',
),
onTap: onTap,
),
);
}
}