diff --git a/src/pages/RepositoriesPage.jsx b/src/pages/RepositoriesPage.jsx index f5884f4..9c035e3 100644 --- a/src/pages/RepositoriesPage.jsx +++ b/src/pages/RepositoriesPage.jsx @@ -18,6 +18,7 @@ export default function RepositoriesPage() { const [search, setSearch] = useState('') const [activityClassification, setActivityClassification] = useState('All') const [lang, setLang] = useState('All Languages') + const [orgFilter, setOrgFilter] = useState('All Organizations') const [shown, setShown] = useState(20) const [openInfo, setOpenInfo] = useState(false) const infoRef = useRef(null) @@ -44,12 +45,22 @@ export default function RepositoriesPage() { ['All Languages', ...new Set(allRepos.map(r => r.language).filter(Boolean))].slice(0, 10), [allRepos]) + const orgList = useMemo(() => + ['All Organizations', ...new Set(allRepos.map(r => r.orgLogin).filter(Boolean))], + [allRepos]) + + useEffect(() => { + setOrgFilter('All Organizations') + setShown(20) + }, [orgList]) + const filtered = useMemo(() => allRepos.filter(r => (activityClassification === 'All' || r.activityClassification === activityClassification) && (lang === 'All Languages' || r.language === lang) && + (orgFilter === 'All Organizations' || r.orgLogin === orgFilter) && (!search || r.name.toLowerCase().includes(search.toLowerCase()) || (r.description || '').toLowerCase().includes(search.toLowerCase())) - ), [allRepos, activityClassification, lang, search]) + ), [allRepos, activityClassification, lang, orgFilter, search]) const { sorted, sortConfig, onSort } = useSortedData(filtered, 'healthScore', 'desc') const visible = sorted.slice(0, shown) @@ -166,6 +177,16 @@ export default function RepositoriesPage() { placeholder="Filter by repository name or description..." style={{ ...C.input, flex: 1, minWidth: 200 }} /> + {orgList.length > 2 && ( + + )}