50 lines
1.4 KiB
Dart
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,
|
|
),
|
|
);
|
|
}
|
|
}
|