1+ /**
2+ * Combined data file for team members and alumni
3+ * Contains types, data, and utility functions for all people associated with OpenHardware
4+ */
15
26// Define interfaces for better type safety
3- export interface TeamMember {
7+ export interface Person {
48 id : string ;
59 name : string ;
610 role ?: string ;
@@ -14,8 +18,8 @@ export interface TeamMember {
1418 isOpenPosition ?: boolean ;
1519}
1620
17- // Team data
18- export const teamData : TeamMember [ ] = [
21+ // Combined data array for all team members and alumni
22+ export const peopleData : Person [ ] = [
1923 // Co-directors
2024 {
2125 id : "1" ,
@@ -258,49 +262,70 @@ export const teamData: TeamMember[] = [
258262] ;
259263
260264// Helper functions
265+
266+ /**
267+ * Returns all active team members
268+ */
261269export const getActiveMembers = ( ) => {
262- return teamData . filter ( member => member . isActive ) ;
270+ return peopleData . filter ( person => person . isActive ) ;
263271} ;
264272
273+ /**
274+ * Returns all former members (alumni)
275+ */
265276export const getAlumni = ( ) => {
266- return teamData . filter ( member => ! member . isActive ) ;
277+ return peopleData . filter ( person => ! person . isActive ) ;
267278} ;
268279
269- export const getMemberById = ( id : string ) : TeamMember | undefined => {
270- return teamData . find ( member => member . id === id ) ;
280+ /**
281+ * Find person by their ID
282+ */
283+ export const getPersonById = ( id : string ) : Person | undefined => {
284+ return peopleData . find ( person => person . id === id ) ;
271285} ;
272286
273- export const getMembersByRole = ( role : string ) : TeamMember [ ] => {
274- return teamData . filter ( member =>
275- member . role ?. toLowerCase ( ) . includes ( role . toLowerCase ( ) )
287+ /**
288+ * Returns people with a specific role
289+ */
290+ export const getPeopleByRole = ( role : string ) : Person [ ] => {
291+ return peopleData . filter ( person =>
292+ person . role ?. toLowerCase ( ) . includes ( role . toLowerCase ( ) )
276293 ) ;
277294} ;
278295
279- // Function to get co-directors
280- export const getCoDirectors = ( ) : TeamMember [ ] => {
281- return teamData . filter ( member =>
282- member . isActive && member . role ?. includes ( "Co-Director" )
296+ /**
297+ * Returns all co-directors (active)
298+ */
299+ export const getCoDirectors = ( ) : Person [ ] => {
300+ return peopleData . filter ( person =>
301+ person . isActive && person . role ?. includes ( "Co-Director" )
283302 ) ;
284303} ;
285304
286- // Function to get team leads
287- export const getTeamLeads = ( ) : TeamMember [ ] => {
288- return teamData . filter ( member =>
289- member . isActive && member . role ?. includes ( "Team Lead" )
305+ /**
306+ * Returns all team leads (active)
307+ */
308+ export const getTeamLeads = ( ) : Person [ ] => {
309+ return peopleData . filter ( person =>
310+ person . isActive && person . role ?. includes ( "Team Lead" )
290311 ) ;
291312} ;
292313
293- // Function to get advisors
294- export const getAdvisors = ( ) : TeamMember [ ] => {
295- return teamData . filter ( member =>
296- member . isActive && member . role ?. includes ( "Advisor" )
314+ /**
315+ * Returns all advisors (active)
316+ */
317+ export const getAdvisors = ( ) : Person [ ] => {
318+ return peopleData . filter ( person =>
319+ person . isActive && person . role ?. includes ( "Advisor" )
297320 ) ;
298321} ;
299322
300- // Function to get team members
301- export const getTeamMembers = ( ) : TeamMember [ ] => {
302- return teamData . filter ( member =>
303- member . isActive && member . role ?. includes ( "Team Member" )
323+ /**
324+ * Returns all regular team members (active)
325+ */
326+ export const getTeamMembers = ( ) : Person [ ] => {
327+ return peopleData . filter ( person =>
328+ person . isActive && person . role ?. includes ( "Team Member" )
304329 ) ;
305330} ;
306331
0 commit comments