From 5ea4f9486c4441bef864fcba66a7955f43bddda1 Mon Sep 17 00:00:00 2001 From: Jeet Vasoya Date: Wed, 3 Jun 2026 21:18:52 +0530 Subject: [PATCH 1/2] Enhance Tracker Page Appearance --- src/pages/Tracker/Tracker.tsx | 514 ++++++++++++++++++++++------------ 1 file changed, 342 insertions(+), 172 deletions(-) diff --git a/src/pages/Tracker/Tracker.tsx b/src/pages/Tracker/Tracker.tsx index 576f39bf..ecd949cb 100644 --- a/src/pages/Tracker/Tracker.tsx +++ b/src/pages/Tracker/Tracker.tsx @@ -28,11 +28,17 @@ import { MenuItem, FormControl, InputLabel, + Chip, + Card, + CardContent, + Typography, + Grid, + Divider, } from "@mui/material"; import { useTheme } from "@mui/material/styles"; import { useGitHubAuth } from "../../hooks/useGitHubAuth"; import { useGitHubData } from "../../hooks/useGitHubData"; -import { KeyIcon } from "lucide-react"; +import { KeyIcon, Search, Filter } from "lucide-react"; const ROWS_PER_PAGE = 10; @@ -163,116 +169,213 @@ const Home: React.FC = () => { const currentFilteredData = filterData(currentRawData, tab === 0 ? issueFilter : prFilter); const totalCount = tab === 0 ? totalIssues : totalPrs; + // Helper function to get status badge color + const getStatusColor = (item: GitHubItem): "success" | "error" | "warning" | "info" | "default" => { + if (item.pull_request) { + if (item.pull_request.merged_at) return "success"; + return item.state === "closed" ? "error" : "info"; + } + return item.state === "closed" ? "error" : "warning"; + }; + + // Helper function to get status label + const getStatusLabel = (item: GitHubItem): string => { + if (item.pull_request?.merged_at) return "Merged"; + return item.state.charAt(0).toUpperCase() + item.state.slice(1); + }; + return ( - - {/* Auth Form */} - -
- - setUsername(e.target.value)} - required - sx={{ flex: 1, minWidth: 150 }} - /> - setToken(e.target.value)} - type="password" - required - sx={{ flex: 1, minWidth: 150 }} - helperText={ - - + {/* Header Section */} + + + GitHub Activity Tracker + + + Track and analyze your GitHub issues and pull requests + + + + {/* Authentication Card */} + + + + + + GitHub Authentication + + + + + + setUsername(e.target.value)} + required + placeholder="Enter your GitHub username" + variant="outlined" + size="medium" + /> + + + setToken(e.target.value)} + type="password" + required + placeholder="Paste your token here" + variant="outlined" + size="medium" + helperText={ + - - Generate new token - - - - • + + + Generate token + + + • + + + Learn more + + } + /> + + + + + + + + + + {/* Error Alert */} + {(authError || dataError) && ( + + {authError || dataError} + + )} - - Learn more - - - } - /> - + {/* Filters Section */} + + + + + + Filters + - -
- - {/* Filters */} - - setSearchTitle(e.target.value)} - sx={{ minWidth: 200 }} - /> - setSelectedRepo(e.target.value)} - sx={{ minWidth: 200 }} - /> - setStartDate(e.target.value)} - InputLabelProps={{ shrink: true }} - sx={{ minWidth: 150 }} - /> - setEndDate(e.target.value)} - InputLabelProps={{ shrink: true }} - sx={{ minWidth: 150 }} - /> - + + + setSearchTitle(e.target.value)} + placeholder="Search by title..." + variant="outlined" + size="small" + InputProps={{ + startAdornment: , + }} + /> + + + setSelectedRepo(e.target.value)} + placeholder="Filter by repo..." + variant="outlined" + size="small" + /> + + + setStartDate(e.target.value)} + InputLabelProps={{ shrink: true }} + variant="outlined" + size="small" + /> + + + setEndDate(e.target.value)} + InputLabelProps={{ shrink: true }} + variant="outlined" + size="small" + /> + + + + {/* Tabs + State Filter */} { gap: 2, }} > - { - setTab(v); - setPage(0); + - - - - - State + { + setTab(v); + setPage(0); + }} + sx={{ + "& .MuiTabs-indicator": { + height: 3, + }, + }} + > + + + + + + Filter by State