Main coves client
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}