import 'package:flutter/material.dart'; /// Shared numbered, draggable row used by provider-priority reorder lists. class ReorderablePriorityItem extends StatelessWidget { final int index; final bool isFirst; final IconData icon; final Color iconColor; final String name; final String subtitle; final Widget? trailing; const ReorderablePriorityItem({ super.key, required this.index, required this.isFirst, required this.icon, required this.iconColor, required this.name, required this.subtitle, this.trailing, }); @override Widget build(BuildContext context) { final colorScheme = Theme.of(context).colorScheme; final isDark = Theme.of(context).brightness == Brightness.dark; final backgroundColor = isDark ? Color.alphaBlend( Colors.white.withValues(alpha: 0.05), colorScheme.surface, ) : colorScheme.surfaceContainerHigh; return Padding( padding: const EdgeInsets.only(bottom: 8), child: Material( color: backgroundColor, borderRadius: BorderRadius.circular(16), child: ReorderableDragStartListener( index: index, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), child: Row( children: [ Container( width: 28, height: 28, decoration: BoxDecoration( color: isFirst ? colorScheme.primaryContainer : colorScheme.surfaceContainerHighest, shape: BoxShape.circle, ), child: Center( child: Text( '${index + 1}', style: TextStyle( fontWeight: FontWeight.bold, color: isFirst ? colorScheme.onPrimaryContainer : colorScheme.onSurfaceVariant, ), ), ), ), const SizedBox(width: 16), Icon(icon, color: iconColor), const SizedBox(width: 12), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( name, style: Theme.of(context).textTheme.bodyLarge?.copyWith( fontWeight: FontWeight.w500, ), ), Text( subtitle, style: Theme.of(context).textTheme.bodySmall?.copyWith( color: colorScheme.onSurfaceVariant, ), ), ], ), ), if (trailing != null) ...[trailing!, const SizedBox(width: 4)], Icon(Icons.drag_handle, color: colorScheme.onSurfaceVariant), ], ), ), ), ), ); } }