1import 'package:flutter/widgets.dart'; 2import 'package:flutter_svg/flutter_svg.dart'; 3 4/// Bluesky-style navigation icons using SVG assets 5/// These icons match the design from Bluesky's social-app 6class BlueSkyIcon extends StatelessWidget { 7 const BlueSkyIcon({ 8 required this.iconName, 9 this.size = 28, 10 required this.color, 11 super.key, 12 }); 13 final String iconName; 14 final double size; 15 final Color color; 16 17 @override 18 Widget build(BuildContext context) { 19 return SvgPicture.asset( 20 'assets/icons/$iconName.svg', 21 width: size, 22 height: size, 23 colorFilter: ColorFilter.mode(color, BlendMode.srcIn), 24 ); 25 } 26 27 // Convenience constructors for each icon type 28 static Widget homeOutline({required Color color, double size = 28}) => 29 BlueSkyIcon(iconName: 'home_outline', color: color, size: size); 30 31 static Widget homeFilled({required Color color, double size = 28}) => 32 BlueSkyIcon(iconName: 'home_filled', color: color, size: size); 33 34 static Widget search({required Color color, double size = 28}) => 35 BlueSkyIcon(iconName: 'search', color: color, size: size); 36 37 static Widget plus({required Color color, double size = 28}) => 38 BlueSkyIcon(iconName: 'plus', color: color, size: size); 39 40 static Widget bellOutline({required Color color, double size = 28}) => 41 BlueSkyIcon(iconName: 'bell_outline', color: color, size: size); 42 43 static Widget bellFilled({required Color color, double size = 28}) => 44 BlueSkyIcon(iconName: 'bell_filled', color: color, size: size); 45 46 static Widget userCircleOutline({required Color color, double size = 28}) => 47 BlueSkyIcon(iconName: 'user_circle_outline', color: color, size: size); 48 49 static Widget userCircleFilled({required Color color, double size = 28}) => 50 BlueSkyIcon(iconName: 'user_circle_filled', color: color, size: size); 51 52 // Simpler versions (inspired by other social apps) 53 static Widget homeSimple({required Color color, double size = 28}) => 54 BlueSkyIcon(iconName: 'home_simple', color: color, size: size); 55 56 static Widget personSimple({required Color color, double size = 28}) => 57 BlueSkyIcon(iconName: 'person_simple', color: color, size: size); 58}