File tree Expand file tree Collapse file tree
cra-rxjs-styled-components/src Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -53,10 +53,11 @@ export const RepoBtn = styled.button`
5353 border: none;
5454` ;
5555
56- export const RepoBtnText = styled . span `
56+ export const RepoBtnText = styled . a `
5757 color: #fff;
5858 font-size: 14px;
5959 font-weight: 700;
60+ text-decoration: none;
6061` ;
6162
6263export const FilterTextContainer = styled . div `
Original file line number Diff line number Diff line change @@ -81,7 +81,9 @@ export default function RepoFilter({
8181 </ FiltersWrapper >
8282 < RepoBtn >
8383 < RepoBookIcon color = "#fff" />
84- < RepoBtnText > { repoBtnText || 'New' } </ RepoBtnText >
84+ < RepoBtnText href = "https://github.com/new" target = "_blank" >
85+ { repoBtnText || 'New' }
86+ </ RepoBtnText >
8587 </ RepoBtn >
8688 </ RepoFilterWrapper >
8789 { ! isOnlySorted && < FilterText filteredRepoCount = { filteredRepoCount } /> }
Original file line number Diff line number Diff line change @@ -19,22 +19,22 @@ export const NetlifyBadgeContainer = styled.div`
1919` ;
2020
2121export const OrgHeader = styled . div `
22- border-bottom: 1px solid var(--gray-500 );
23- background-color: var(--gray-200 );
22+ border-bottom: 1px solid var(--gray-300 );
23+ background-color: var(--gray-100 );
2424 position: sticky;
2525 top: 0px;
2626 z-index: 40;
2727` ;
2828
2929export const OrgTopHeader = styled . div `
30- padding: 0 8px ;
30+ padding: 0 32px ;
3131` ;
3232
3333export const OrgAbout = styled . div `
3434 display: flex;
3535 align-items: center;
36- margin -top: 0.5rem ;
37- margin-bottom: 0.5rem ;
36+ padding -top: 1rem ;
37+ margin-bottom: 2rem ;
3838` ;
3939
4040export const OrgImage = styled . img `
Original file line number Diff line number Diff line change 11import { NetlifyBadgeContainer , RepoListWrapper } from './UserRepos.styles' ;
22import { useUserRepositories } from '../../hooks/user-repositories/use-user-repositories' ;
33import RepoCard from '../repo-card/RepoCard' ;
4+ import useRepoSortFilter from '../../hooks/repositories/use-repo-sort-filter' ;
5+ import RepoFilter from '../repo-filter/Repofilter' ;
46
57function UserRepos ( { isOrg = false } ) {
6- const { loading, repos } = useUserRepositories ( isOrg ) ;
8+ const { loading, repos, languages } = useUserRepositories ( isOrg ) ;
9+
10+ const sortAndFilteredRepositories = useRepoSortFilter ( repos ) ;
711
812 if ( loading ) {
913 return < p > Loading...</ p > ;
1014 }
1115
1216 return (
1317 < RepoListWrapper >
14- { repos && repos . map ( ( repo ) => < RepoCard repo = { repo } star /> ) }
18+ < RepoFilter
19+ languages = { languages }
20+ filteredRepoCount = { sortAndFilteredRepositories . length }
21+ />
22+ { sortAndFilteredRepositories &&
23+ sortAndFilteredRepositories . map ( ( repo ) => < RepoCard repo = { repo } star /> ) }
1524
1625 < NetlifyBadgeContainer >
1726 < a target = "_blank" rel = "noreferrer noopener" href = "https://www.netlify.com" >
Original file line number Diff line number Diff line change @@ -6,8 +6,9 @@ import { fromFetchWithAuth } from '../auth/from-fetch-with-auth';
66import { Repository } from '../../interfaces/repositories.interfaces' ;
77
88export function useUserRepositories ( isOrg = false ) {
9- const [ repos , setRepos ] = useState < Repository [ ] > ( ) ;
9+ const [ repos , setRepos ] = useState < Repository [ ] > ( [ ] ) ;
1010 const [ loading , setLoading ] = useState ( true ) ;
11+ const [ languages , setLanguages ] = useState < string [ ] > ( [ ] ) ;
1112 const { username } = useParams ( ) ;
1213
1314 const request = ( url : string ) =>
@@ -24,9 +25,14 @@ export function useUserRepositories(isOrg = false) {
2425 const GITHUB_URL = isOrg ? ORG_REPO_LIST ( username ) : USER_REPO_LIST ( username ) ;
2526 const subscription = request ( GITHUB_URL )
2627 . pipe (
27- tap ( ( data ) => {
28+ tap ( ( data : Repository [ ] ) => {
2829 if ( data ) {
2930 setRepos ( data ) ;
31+ const reposLaguages = data
32+ . map ( ( res ) => res . language )
33+ . filter ( ( res ) => res )
34+ . sort ( ( a , b ) => a . localeCompare ( b ) ) ;
35+ setLanguages ( [ ...new Set ( reposLaguages ) ] ) ;
3036 setLoading ( false ) ;
3137 }
3238 } )
@@ -40,5 +46,6 @@ export function useUserRepositories(isOrg = false) {
4046 return {
4147 loading,
4248 repos,
49+ languages,
4350 } ;
4451}
Original file line number Diff line number Diff line change @@ -14,6 +14,9 @@ import { useParams } from 'react-router-dom';
1414import { tap } from 'rxjs' ;
1515import { IOrg } from '../interfaces/org.interface' ;
1616import { LoadingBulletList } from '../components/Loading' ;
17+ import { tabs } from '../constants/data' ;
18+ import TabNavigation from '../components/tab-nav/TabNav' ;
19+ import { RepoFilterProvider } from '../context/RepoFilterContext' ;
1720
1821export default function OrgPage ( ) {
1922 const [ loading , setLoading ] = useState ( true ) ;
@@ -63,9 +66,12 @@ export default function OrgPage() {
6366 < OrgName data-testid = "org about name" > { orgInfo . name } </ OrgName >
6467 </ OrgAbout >
6568 ) }
69+ < TabNavigation tabs = { tabs } activeTab = { tabs [ 0 ] . title } />
6670 </ OrgTopHeader >
6771 </ OrgHeader >
68- < UserRepos isOrg />
72+ < RepoFilterProvider >
73+ < UserRepos isOrg />
74+ </ RepoFilterProvider >
6975 </ >
7076 ) ;
7177}
You can’t perform that action at this time.
0 commit comments