1+ import 'package:fc_ai_circle/src/app/external_links.dart' ;
12import 'package:jaspr/browser.dart' ;
3+ import 'package:jaspr_router/jaspr_router.dart' ;
4+ import 'package:fc_ai_circle/src/pages/builders_page.dart' ;
5+ import 'package:fc_ai_circle/src/pages/starters_page.dart' ;
26
37class Footer extends StatelessComponent {
48 @override
@@ -8,19 +12,25 @@ class Footer extends StatelessComponent {
812 div (classes: 'footer-grid' , [
913 FooterColumn (
1014 title: 'Community' ,
11- links: ['About' , 'Mission' , 'Join the Circle' , 'Start Contributing' ],
15+ links: [
16+ (path: '#' , label: 'What is Agentic Flutter?' ),
17+ (path: '#' , label: 'Take the contributors survey' ),
18+ ],
1219 ),
1320 FooterColumn (
1421 title: 'Resources' ,
15- links: ['Docs' , 'Templates' , 'Survey' , 'Events' ],
16- ),
17- FooterColumn (
18- title: 'Channels' ,
19- links: ['YouTube' , 'Twitter' , 'Forum' , 'GitHub' ],
22+ links: [
23+ (path: StartersPage .path, label: 'Starters' ),
24+ (path: BuildersPage .path, label: 'Builders' ),
25+ ],
2026 ),
27+ div ([]),
2128 FooterColumn (
2229 title: 'Legal' ,
23- links: ['Privacy' , 'Terms' , 'Code of Conduct' , 'Licensing' ],
30+ links: [
31+ (path: '#' , label: 'Privacy Policy' ),
32+ (path: '#' , label: 'Code of Conduct' ),
33+ ],
2434 ),
2535 ]),
2636 div (classes: 'footer-bottom' , [
@@ -30,24 +40,29 @@ class Footer extends StatelessComponent {
3040 ),
3141 div (classes: 'social-links' , [
3242 SocialLink (
43+ link: ExternalLink .socialBlueSky,
3344 icon: 'fa-bluesky' ,
3445 label: 'BlueSky' ,
35- href: 'https://bsky.app/profile/fluttercommunity.dev' ,
3646 ),
3747 SocialLink (
48+ link: ExternalLink .socialTwitterX,
3849 icon: 'fa-x-twitter' ,
3950 label: 'Twitter' ,
40- href: 'https://x.com/fluttercomm' ,
4151 ),
4252 SocialLink (
53+ link: ExternalLink .socialMastodon,
4354 icon: 'fa-mastodon' ,
4455 label: 'Mastodon' ,
45- href: 'https://fluttercommunity.social/@FlutterComm' ,
4656 ),
4757 SocialLink (
58+ link: ExternalLink .socialGitHub,
4859 icon: 'fa-github' ,
4960 label: 'GitHub' ,
50- href: 'https://github.com/fluttercommunity/fc_ai_circle' ,
61+ ),
62+ SocialLink (
63+ link: ExternalLink .socialMedium,
64+ icon: 'fa-medium' ,
65+ label: 'Medium' ,
5166 ),
5267 ]),
5368 ]),
@@ -64,7 +79,7 @@ class FooterColumn extends StatelessComponent {
6479 });
6580
6681 final String title;
67- final List <String > links;
82+ final List <({ String path, String label}) > links;
6883
6984 @override
7085 Iterable <Component > build (BuildContext context) sync * {
@@ -73,7 +88,11 @@ class FooterColumn extends StatelessComponent {
7388 ul ([
7489 for (var link in links) //
7590 li ([
76- a (href: '#' , [text (link)])
91+ a (
92+ href: link.path,
93+ onClick: () => Router .of (context).push (link.path),
94+ [text (link.label)],
95+ )
7796 ]),
7897 ]),
7998 ]);
@@ -83,12 +102,12 @@ class FooterColumn extends StatelessComponent {
83102class SocialLink extends StatefulComponent {
84103 const SocialLink ({
85104 super .key,
86- required this .href ,
105+ required this .link ,
87106 required this .icon,
88107 required this .label,
89108 });
90109
91- final String href ;
110+ final ExternalLink link ;
92111 final String icon;
93112 final String label;
94113
@@ -102,7 +121,7 @@ class _SocialLinkState extends State<SocialLink> {
102121 @override
103122 Iterable <Component > build (BuildContext context) sync * {
104123 yield a (
105- href: component.href ,
124+ href: component.link.url ,
106125 target: Target .blank,
107126 attributes: {
108127 'title' : component.label,
0 commit comments