|
1 | | -import React, { useState, useEffect } from 'react'; |
2 | | -import { SimpleGrid, Heading, Spinner, Text, VStack, Input, InputGroup, InputLeftElement } from '@chakra-ui/react'; |
3 | | -import { SearchIcon } from '@chakra-ui/icons'; |
4 | | -import { TeamCard } from '../components/TeamCard'; |
5 | | -import { teamService } from '../service/teamService'; |
6 | | -import { ITeam } from '../interfaces/ITeam'; |
| 1 | +import { SimpleGrid, Heading, VStack } from '@chakra-ui/react'; |
| 2 | +import { TeamLeadCard } from '../components/TeamLeadCard'; |
7 | 3 | import { Layout } from '../components/Layout'; |
| 4 | +import { VALID_TEAMS } from '../interfaces/DBTypes'; |
8 | 5 |
|
9 | 6 | export const LeadTeamsPage: React.FC = () => { |
10 | | - const [teams, setTeams] = useState<ITeam[]>([]); |
11 | | - const [filteredTeams, setFilteredTeams] = useState<ITeam[]>([]); |
12 | | - const [loading, setLoading] = useState(true); |
13 | | - const [error, setError] = useState<string | undefined>(undefined); |
14 | | - const [searchTerm, setSearchTerm] = useState(''); |
15 | | - |
16 | | - useEffect(() => { |
17 | | - const fetchTeams = async () => { |
18 | | - try { |
19 | | - const fetchedTeams = await teamService.getAllTeams(true); |
20 | | - setTeams(fetchedTeams); |
21 | | - setFilteredTeams(fetchedTeams); |
22 | | - } catch (err) { |
23 | | - console.error(err); |
24 | | - setError('Failed to fetch teams'); |
25 | | - } finally { |
26 | | - setLoading(false); |
27 | | - } |
28 | | - }; |
29 | | - |
30 | | - fetchTeams(); |
31 | | - }, []); |
32 | | - |
33 | | - useEffect(() => { |
34 | | - const results = teams.filter(team => |
35 | | - team.name?.toLowerCase().includes(searchTerm.toLowerCase()) |
36 | | - ); |
37 | | - setFilteredTeams(results); |
38 | | - }, [searchTerm, teams]); |
39 | | - |
40 | | - if (loading) return <Layout><Spinner size="xl" /></Layout>; |
41 | | - if (error) return <Layout><Text color="red.500">{error}</Text></Layout>; |
42 | | - |
43 | 7 | return ( |
44 | 8 | <Layout> |
45 | 9 | <VStack spacing={8} align="stretch"> |
46 | | - <Heading>Teams</Heading> |
47 | | - <InputGroup> |
48 | | - <InputLeftElement pointerEvents="none" children={<SearchIcon color="gray.300" />} /> |
49 | | - <Input |
50 | | - type="text" |
51 | | - placeholder="Search teams..." |
52 | | - value={searchTerm} |
53 | | - onChange={(e) => setSearchTerm(e.target.value)} |
54 | | - /> |
55 | | - </InputGroup> |
| 10 | + <Heading>Leadership Teams</Heading> |
56 | 11 | <SimpleGrid columns={[1, 2, 3]} spacing={6}> |
57 | | - {filteredTeams.map(team => ( |
58 | | - <TeamCard key={team.teamId?.toString()} team={team} /> |
| 12 | + {VALID_TEAMS.map((team, i) => ( |
| 13 | + <TeamLeadCard key={i} team={team} /> |
59 | 14 | ))} |
60 | 15 | </SimpleGrid> |
61 | 16 | </VStack> |
|
0 commit comments