From f3bb7a6c6d0766b9fd0d703a576e3b2048b51198 Mon Sep 17 00:00:00 2001 From: jikrana Date: Fri, 21 Aug 2026 23:10:50 +0530 Subject: [PATCH 1/2] Add organization filter dropdown to Repository Explorer --- src/pages/RepositoriesPage.jsx | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/pages/RepositoriesPage.jsx b/src/pages/RepositoriesPage.jsx index f5884f4..a7a8817 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,17 @@ 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]) + 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 +172,15 @@ export default function RepositoriesPage() { placeholder="Filter by repository name or description..." style={{ ...C.input, flex: 1, minWidth: 200 }} /> + {orgList.length > 2 && ( + + )} From 4022979735296652a7f332fe97a685f3e2fb78ac Mon Sep 17 00:00:00 2001 From: jikrana Date: Fri, 21 Aug 2026 23:44:00 +0530 Subject: [PATCH 2/2] Reset org filter on new search add aria-label --- src/pages/RepositoriesPage.jsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/pages/RepositoriesPage.jsx b/src/pages/RepositoriesPage.jsx index a7a8817..9c035e3 100644 --- a/src/pages/RepositoriesPage.jsx +++ b/src/pages/RepositoriesPage.jsx @@ -49,6 +49,11 @@ export default function RepositoriesPage() { ['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) && @@ -177,6 +182,7 @@ export default function RepositoriesPage() { value={orgFilter} onChange={e => { setOrgFilter(e.target.value); setShown(20) }} style={C.select} + aria-label="Filter by organization" > {orgList.map(o => )}