import 'package:flutter/material.dart'; /// Sous-barre : Gestionnaires | Parents | Assistantes maternelles | [Administrateurs]. /// [subTabCount] = 3 pour masquer l'onglet Administrateurs (dashboard gestionnaire). class DashboardUserManagementSubBar extends StatelessWidget { final int selectedSubIndex; final ValueChanged onSubTabChange; final TextEditingController searchController; final String searchHint; final Widget? filterControl; final VoidCallback? onAddPressed; final String addLabel; final int subTabCount; static const List _tabLabels = [ 'Gestionnaires', 'Parents', 'Assistantes maternelles', 'Administrateurs', ]; const DashboardUserManagementSubBar({ Key? key, required this.selectedSubIndex, required this.onSubTabChange, required this.searchController, required this.searchHint, this.filterControl, this.onAddPressed, this.addLabel = '+ Ajouter', this.subTabCount = 4, }) : super(key: key); @override Widget build(BuildContext context) { return Container( height: 56, decoration: BoxDecoration( color: Colors.grey.shade100, border: Border(bottom: BorderSide(color: Colors.grey.shade300)), ), padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 6), child: Row( children: [ for (int i = 0; i < subTabCount; i++) ...[ if (i > 0) const SizedBox(width: 12), _buildSubNavItem(context, _tabLabels[i], i), ], const SizedBox(width: 36), _pillField( width: 320, child: TextField( controller: searchController, decoration: InputDecoration( hintText: searchHint, prefixIcon: const Icon(Icons.search, size: 18), border: InputBorder.none, isDense: true, contentPadding: const EdgeInsets.symmetric( horizontal: 10, vertical: 8, ), ), ), ), if (filterControl != null) ...[ const SizedBox(width: 12), _pillField(width: 150, child: filterControl!), ], const Spacer(), _buildAddButton(), ], ), ); } return InkWell( onTap: () => onSubTabChange(index), child: Container( padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 6), decoration: BoxDecoration( color: isActive ? const Color(0xFF9CC5C0) : Colors.transparent, borderRadius: BorderRadius.circular(16), border: isActive ? null : Border.all(color: Colors.black26), ), child: Text( title, style: TextStyle( color: isActive ? Colors.white : Colors.black87, fontWeight: isActive ? FontWeight.w600 : FontWeight.normal, fontSize: 13, ), ), ), ); } } /// Sous-barre Paramètres : Paramètres généraux | Paramètres territoriaux. class DashboardSettingsSubBar extends StatelessWidget { final int selectedSubIndex; final ValueChanged onSubTabChange; const DashboardSettingsSubBar({ Key? key, required this.selectedSubIndex, required this.onSubTabChange, }) : super(key: key); @override Widget build(BuildContext context) { return Container( height: 48, decoration: BoxDecoration( color: Colors.grey.shade100, border: Border(bottom: BorderSide(color: Colors.grey.shade300)), ), padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 6), child: Center( child: Row( mainAxisSize: MainAxisSize.min, children: [ _buildSubNavItem(context, 'Paramètres généraux', 0), const SizedBox(width: 16), _buildSubNavItem(context, 'Paramètres territoriaux', 1), ], ), ), ); } Widget _buildSubNavItem(BuildContext context, String title, int index) { final bool isActive = index == selectedSubIndex; return InkWell( onTap: () => onSubTabChange(index), child: Container( padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 6), decoration: BoxDecoration( color: isActive ? const Color(0xFF9CC5C0) : Colors.transparent, borderRadius: BorderRadius.circular(16), border: isActive ? null : Border.all(color: Colors.black26), ), child: Text( title, style: TextStyle( color: isActive ? Colors.white : Colors.black87, fontWeight: isActive ? FontWeight.w600 : FontWeight.normal, fontSize: 13, ), ), ), ); } }