-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSidebarLearningStatus.tsx
More file actions
44 lines (41 loc) · 1.34 KB
/
SidebarLearningStatus.tsx
File metadata and controls
44 lines (41 loc) · 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import { Chip } from '@mui/material';
import { LearningStatus } from '../models';
interface LearningStatusProps {
learningStatus: LearningStatus | undefined;
}
/**
* Component for showing learning status chip on the sidebar for profile page.
*
* @param {LearningStatus} learningStatus enum with learning statuses.
* @returns {ReactNode} A React element that renders a stack of learningStatus chip on profile sidebar.
*/
export const SidebarLearningStatus = ({ learningStatus }: LearningStatusProps) => {
/**
* Function that returns color value attribute to MUI Chip component.
*/
const chipColor = (status: LearningStatus | undefined) => {
switch (status) {
case LearningStatus.Studying:
return 'info';
case LearningStatus.Graduated:
return 'success';
case LearningStatus.OnHold:
return 'warning';
case LearningStatus.Quit:
return 'error';
}
};
const chipLabel = (status: LearningStatus | undefined) => {
switch (status) {
case LearningStatus.Studying:
return 'Studying';
case LearningStatus.Graduated:
return 'Graduated';
case LearningStatus.OnHold:
return 'On Hold';
case LearningStatus.Quit:
return 'Quit';
}
};
return <Chip label={chipLabel(learningStatus)} color={chipColor(learningStatus)} size="small" />;
};