-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathGradeLabel.svelte
42 lines (38 loc) · 1 KB
/
GradeLabel.svelte
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
<script lang="ts">
import { TaskGrade } from '$lib/types/task';
import {
getTaskGradeColor,
getTaskGradeLabel,
toChangeTextColorIfNeeds,
toChangeBorderColorIfNeeds,
} from '$lib/utils/task';
interface Props {
taskGrade: TaskGrade | string;
defaultPadding?: number;
defaultWidth?: number;
reducedWidth?: number;
defaultTextSize?: string;
}
let {
taskGrade,
defaultPadding = 1,
defaultWidth = 10,
reducedWidth = 8,
defaultTextSize = 'md',
}: Props = $props();
let grade = $derived(getTaskGradeLabel(taskGrade));
let gradeColor = $derived(getTaskGradeColor(taskGrade));
</script>
<div class="rounded-lg border-2 {toChangeBorderColorIfNeeds(grade)}">
<div
class="p-{defaultPadding} w-{reducedWidth} xs:w-{defaultWidth} text-sm xs:text-{defaultTextSize} text-center rounded-md {toChangeTextColorIfNeeds(
grade,
)} {gradeColor}"
>
{#if taskGrade !== TaskGrade.PENDING}
{grade}
{:else}
{'??'}
{/if}
</div>
</div>