import 'package:flutter/material.dart'; import 'package:flutter_lucide/flutter_lucide.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import '../../auth/auth_provider.dart'; import '../../theme/theme_extension.dart'; /// Shared AppBar `actions` for top-level screens. Renders Home / Library / /// Search as primary icons (suppressing the icon for [currentRoute]) plus /// a kebab overflow with Playlists / Discover / Settings and (for admins) /// Admin. class MainAppBarActions extends ConsumerWidget { const MainAppBarActions({super.key, required this.currentRoute}); final String currentRoute; @override Widget build(BuildContext context, WidgetRef ref) { final fs = Theme.of(context).extension()!; final user = ref.watch(authControllerProvider).value; final isAdmin = user?.isAdmin ?? false; return Row( mainAxisSize: MainAxisSize.min, children: [ if (currentRoute != '/home') IconButton( key: const Key('app_bar_home'), icon: Icon(LucideIcons.house, color: fs.parchment), tooltip: 'Home', onPressed: () => context.go('/home'), ), if (currentRoute != '/library') IconButton( key: const Key('app_bar_library'), icon: Icon(LucideIcons.library_big, color: fs.parchment), tooltip: 'Library', onPressed: () => context.push('/library'), ), if (currentRoute != '/search') IconButton( key: const Key('app_bar_search'), icon: Icon(LucideIcons.search, color: fs.parchment), tooltip: 'Search', onPressed: () => context.push('/search'), ), PopupMenuButton( key: const Key('app_bar_overflow'), icon: Icon(LucideIcons.ellipsis_vertical, color: fs.parchment), tooltip: 'More', onSelected: (route) => context.push(route), itemBuilder: (_) => [ const PopupMenuItem(value: '/playlists', child: Text('Playlists')), const PopupMenuItem(value: '/discover', child: Text('Discover')), const PopupMenuItem(value: '/settings', child: Text('Settings')), if (isAdmin) const PopupMenuItem(value: '/admin', child: Text('Admin')), ], ), ], ); } }