From ec23fb5e3cd8bc92fcbc911f77b91fb8a05f2a7d Mon Sep 17 00:00:00 2001 From: pari-dubey1 Date: Tue, 26 May 2026 12:33:34 +0530 Subject: [PATCH] feat: enhance contributors page UI and add footer navigation --- src/pages/Contributors/Contributors.tsx | 352 +++++++++++++++++------- 1 file changed, 254 insertions(+), 98 deletions(-) diff --git a/src/pages/Contributors/Contributors.tsx b/src/pages/Contributors/Contributors.tsx index d4fee52c..64a66665 100644 --- a/src/pages/Contributors/Contributors.tsx +++ b/src/pages/Contributors/Contributors.tsx @@ -1,19 +1,12 @@ import { useEffect, useState } from "react"; -import { - Container, - Grid, - Card, - CardContent, - Avatar, - Typography, - Button, - Box, - CircularProgress, - Alert, -} from "@mui/material"; -import { FaGithub } from "react-icons/fa"; -import { Link } from "react-router-dom"; import axios from "axios"; +import { + Sparkles, + Github, + Users, + GitPullRequest, + ArrowRight, +} from "lucide-react"; import { GITHUB_REPO_CONTRIBUTORS_URL } from "../../utils/constants"; interface Contributor { @@ -24,21 +17,39 @@ interface Contributor { html_url: string; } +const stats = [ + { + title: "Contributors", + value: "30+", + icon: Users, + }, + { + title: "Pull Requests", + value: "250+", + icon: GitPullRequest, + }, + { + title: "Open Source", + value: "Community Driven", + icon: Github, + }, +]; + const ContributorsPage = () => { const [contributors, setContributors] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); - // Fetch contributors from GitHub API useEffect(() => { const fetchContributors = async () => { try { - const response = await axios.get(GITHUB_REPO_CONTRIBUTORS_URL, { - withCredentials: false, - }); + const response = await axios.get( + GITHUB_REPO_CONTRIBUTORS_URL + ); + setContributors(response.data); } catch { - setError("Failed to fetch contributors. Please try again later."); + setError("Failed to fetch contributors."); } finally { setLoading(false); } @@ -49,96 +60,241 @@ const ContributorsPage = () => { if (loading) { return ( - - - +
+
+
+

+ Loading Contributors... +

+
+
); } if (error) { return ( - - {error} - +
+
+ {error} +
+
); } return ( -
- - - 🤝 Contributors - - - - {contributors.map((contributor) => ( - - - - + + {/* BACKGROUND GLOWS */} +
+
+ + {/* GRID OVERLAY */} +
+ +
+ + {/* HERO SECTION */} +
+ +
+ + Open Source Community +
+ +

+ Meet Our{" "} + + Amazing Contributors + +

+ +

+ These amazing developers are helping build and improve GitHub Tracker through open-source collaboration and innovation. +

+
+ + {/* STATS */} +
+ + {stats.map((stat) => { + const Icon = stat.icon; + + return ( +
+
+ +
+ +

+ {stat.title === "Contributors" + ? `${contributors.length}+` + : stat.value} +

+ +

+ {stat.title} +

+
+ ); + })} +
+ + {/* CONTRIBUTORS SECTION */} +
+ +
+

+ Community Contributors +

+ +

+ The incredible developers helping GitHub Tracker grow through collaboration, innovation, and open-source contributions. +

+
+ +
+ + {/* CTA SECTION */} +
+ +
+ +
+ +
+ +
+ + Join the Community +
+ +

+ Want to Contribute? +

+ +

+ Help improve GitHub Tracker, contribute new features, fix bugs, and become part of our growing open-source community. +

+ + + Start Contributing + + + +
+
+
+ +
); }; -export default ContributorsPage; +export default ContributorsPage; \ No newline at end of file