@@ -8,13 +8,13 @@ import { exportReposCSV } from '../services/analytics'
88import EmptyStateCard from '../components/EmptyStateCard'
99import { useNavigate } from 'react-router-dom'
1010
11- const LIFECYCLES = [ 'All' , 'Thriving' , 'Stable ' , 'Dormant' , 'Abandoned ' ]
12- const LC_ACTIVE = { Thriving : 'var(--green)' , Stable : 'var(--blue)' , Dormant : 'var(--amber)' , Abandoned : 'var(--red)' }
11+ const ACTIVITY_CLASSIFICATIONS = [ 'All' , 'Thriving' , 'Active ' , 'Dormant' , 'Hibernating ' ]
12+ const ACTIVITY_COLORS = { Thriving : 'var(--green)' , Active : 'var(--blue)' , Dormant : 'var(--amber)' , Hibernating : 'var(--red)' }
1313
1414export default function RepositoriesPage ( ) {
1515 const { model } = useApp ( )
1616 const [ search , setSearch ] = useState ( '' )
17- const [ lifecycle , setLifecycle ] = useState ( 'All' )
17+ const [ activityClassification , setActivityClassification ] = useState ( 'All' )
1818 const [ lang , setLang ] = useState ( 'All' )
1919 const [ view , setView ] = useState ( 'grid' )
2020 const [ shown , setShown ] = useState ( 20 )
@@ -45,11 +45,11 @@ export default function RepositoriesPage() {
4545 [ allRepos ] )
4646
4747 const filtered = useMemo ( ( ) => allRepos . filter ( r =>
48- ( lifecycle === 'All' || r . lifecycle === lifecycle ) &&
48+ ( activityClassification === 'All' || r . activityClassification === activityClassification ) &&
4949 ( lang === 'All' || r . language === lang ) &&
5050 ( ! search || r . name . toLowerCase ( ) . includes ( search . toLowerCase ( ) ) ||
5151 ( r . description || '' ) . toLowerCase ( ) . includes ( search . toLowerCase ( ) ) )
52- ) , [ allRepos , lifecycle , lang , search ] )
52+ ) , [ allRepos , activityClassification , lang , search ] )
5353
5454 const { sorted, sortConfig, onSort } = useSortedData ( filtered , 'healthScore' , 'desc' )
5555 const visible = sorted . slice ( 0 , shown )
@@ -60,7 +60,7 @@ export default function RepositoriesPage() {
6060 [ 'forks_count' , 'Forks' ] ,
6161 [ 'open_issues_count' , 'Open Issues' ] ,
6262 [ 'healthScore' , 'Health' ] ,
63- [ 'lifecycle ' , 'Lifecycle ' ] ,
63+ [ 'activityClassification ' , 'Activity Classification ' ] ,
6464 [ 'pushed_at' , 'Last Push' ] ,
6565 ]
6666
@@ -80,7 +80,7 @@ export default function RepositoriesPage() {
8080 </ button >
8181 </ div >
8282 }
83- subtitle = "Technical health and lifecycle across all repositories in the portfolio "
83+ subtitle = "Repository insights and activity classification across all repositories. "
8484 right = {
8585 < span style = { { fontSize : 28 , fontWeight : 700 , color : 'var(--accent)' } } >
8686 { filtered . length }
@@ -117,8 +117,8 @@ export default function RepositoriesPage() {
117117 </ div >
118118
119119 < p style = { { fontSize : 13 , color : 'var(--text2)' , marginBottom : 12 } } >
120- OrgExplorer evaluates repositories using activity, issue health,
121- contributor diversity, and lifecycle status.
120+ OrgExplorer evaluates repositories using issue health,
121+ contributor diversity, and activity classification status.
122122 </ p >
123123
124124 < div style = { { fontSize : 12 , lineHeight : 1.7 } } >
@@ -129,12 +129,12 @@ export default function RepositoriesPage() {
129129 < li > Contributor Diversity → 30%</ li >
130130 </ ul >
131131
132- < strong > Lifecycle Classification</ strong >
132+ < strong > Activity Classification</ strong >
133133 < ul style = { { marginLeft : 18 } } >
134134 < li > 🟢 Thriving → Updated within 30 days</ li >
135- < li > 🔵 Stable → Updated within 90 days</ li >
135+ < li > 🔵 Active → Updated within 90 days</ li >
136136 < li > 🟡 Dormant → Updated within 180 days</ li >
137- < li > 🔴 Abandoned → No updates for 180+ days</ li >
137+ < li > 🔴 Hibernating → No updates for 180+ days</ li >
138138 </ ul >
139139
140140 < strong > Repository Signals</ strong >
@@ -172,14 +172,14 @@ export default function RepositoriesPage() {
172172 </ button >
173173 </ div >
174174 < div style = { { display : 'flex' , gap : 6 , marginTop : 12 , flexWrap : 'wrap' } } >
175- { LIFECYCLES . map ( l => (
175+ { ACTIVITY_CLASSIFICATIONS . map ( l => (
176176 < button
177- key = { l } onClick = { ( ) => { setLifecycle ( l ) ; setShown ( 20 ) } }
177+ key = { l } onClick = { ( ) => { setActivityClassification ( l ) ; setShown ( 20 ) } }
178178 style = { {
179179 padding : '4px 12px' , borderRadius : 4 , fontSize : 12 , fontWeight : 500 , cursor : 'pointer' ,
180- border : lifecycle === l ? 'none' : '1px solid var(--border)' ,
181- background : lifecycle === l ? ( LC_ACTIVE [ l ] || 'var(--accent)' ) : 'transparent' ,
182- color : lifecycle === l ? '#000' : 'var(--text2)' ,
180+ border : activityClassification === l ? 'none' : '1px solid var(--border)' ,
181+ background : activityClassification === l ? ( ACTIVITY_COLORS [ l ] || 'var(--accent)' ) : 'transparent' ,
182+ color : activityClassification === l ? '#000' : 'var(--text2)' ,
183183 } }
184184 >
185185 { l }
@@ -211,7 +211,7 @@ export default function RepositoriesPage() {
211211 < td style = { { padding : '10px 14px' , fontSize : 13 , color : 'var(--text2)' } } > { r . forks_count . toLocaleString ( ) } </ td >
212212 < td style = { { padding : '10px 14px' , fontSize : 13 , color : r . open_issues_count > 30 ? 'var(--red)' : 'var(--text2)' } } > { r . open_issues_count } </ td >
213213 < td style = { { padding : '10px 14px' , minWidth : 130 } } > < HealthBar score = { r . healthScore } /> </ td >
214- < td style = { { padding : '10px 14px' } } > < Badge text = { r . lifecycle } /> </ td >
214+ < td style = { { padding : '10px 14px' } } > < Badge text = { r . activityClassification } /> </ td >
215215 < td style = { { padding : '10px 14px' , fontSize : 12 , color : 'var(--text2)' } } > { r . pushed_at ?. slice ( 0 , 10 ) } </ td >
216216 </ tr >
217217 ) ) }
@@ -229,12 +229,10 @@ export default function RepositoriesPage() {
229229 < div
230230 key = { r . id }
231231 onMouseEnter = { e => e . currentTarget . style . borderColor = 'var(--accent)' }
232- onMouseLeave = { e => e . currentTarget . style . borderColor =
233- r . lifecycle === 'Thriving' ? 'rgba(34,197,94,.25)' :
234- r . lifecycle === 'Abandoned' ? 'rgba(239,68,68,.25)' : 'var(--border)' }
232+ onMouseLeave = { e => e . currentTarget . style . borderColor = ACTIVITY_COLORS [ r . activityClassification ] }
235233 style = { {
236234 ...C . card ,
237- borderColor : r . lifecycle === 'Thriving' ? 'rgba(34,197,94,.25)' : r . lifecycle === 'Abandoned' ? 'rgba(239,68,68,.25)' : 'var(--border)' ,
235+ borderColor : ACTIVITY_COLORS [ r . activityClassification ] ,
238236 transition : 'border-color .2s' , display : 'flex' , flexDirection : 'column' , gap : 10 ,
239237 } }
240238 >
@@ -243,7 +241,7 @@ export default function RepositoriesPage() {
243241 < div style = { { fontWeight : 600 , fontSize : 14 } } > { r . name } </ div >
244242 { r . orgLogin && < div style = { { fontSize : 11 , color : 'var(--text2)' } } > { r . orgLogin } </ div > }
245243 </ div >
246- < Badge text = { r . lifecycle } />
244+ < Badge text = { r . activityClassification } />
247245 </ div >
248246 < p style = { { fontSize : 12 , color : 'var(--text2)' , minHeight : 34 , overflow : 'hidden' , display : '-webkit-box' , WebkitLineClamp : 2 , WebkitBoxOrient : 'vertical' } } >
249247 { r . description || 'No description provided' }
0 commit comments