diff --git a/client/src/module/student/opensource/RepoDiscoveryPage.tsx b/client/src/module/student/opensource/RepoDiscoveryPage.tsx index f32efbc2..5787c58e 100644 --- a/client/src/module/student/opensource/RepoDiscoveryPage.tsx +++ b/client/src/module/student/opensource/RepoDiscoveryPage.tsx @@ -8,6 +8,8 @@ import { GitFork, CircleDot, ExternalLink, + Copy, + Check, X, ChevronDown, TrendingUp, @@ -58,6 +60,7 @@ export default function RepoDiscoveryPage() { const [sortKey, setSortKey] = useState("stars"); const [showFilters, setShowFilters] = useState(false); const [selectedRepo, setSelectedRepo] = useState(null); + const [repoUrlCopied, setRepoUrlCopied] = useState(false); const [page, setPage] = useState(1); const [showSuggestModal, setShowSuggestModal] = useState(false); const { user } = useAuthStore(); @@ -101,6 +104,17 @@ export default function RepoDiscoveryPage() { setPage(1); }; + const copySelectedRepoUrl = () => { + if (!selectedRepo) return; + navigator.clipboard.writeText(selectedRepo.url); + setRepoUrlCopied(true); + setTimeout(() => setRepoUrlCopied(false), 1500); + }; + + useEffect(() => { + setRepoUrlCopied(false); + }, [selectedRepo]); + const activeFilters = (selectedDomain !== "ALL" ? 1 : 0) + (selectedDifficulty !== "ALL" ? 1 : 0); @@ -591,16 +605,36 @@ export default function RepoDiscoveryPage() { - {/* View on GitHub */} - - View on GitHub - - + {/* Repository actions */} +
+ + View on GitHub + + + +