gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/nodes/tables/nodes-status-badge.tsx · v0.3.0-alpha9
Source
1 b15ff05 Mrdn 2y ago import { FC } from 'react';
2 b15ff05 Mrdn 2y ago import { Badge, Label } from '@marzneshin/components';
3 3b7feef Mrdn 2y ago import { StatusType } from '@marzneshin/types';
4 3b7feef Mrdn 2y ago import { NodesStatus } from '..';
5 b15ff05 Mrdn 2y ago
6 b15ff05 Mrdn 2y ago interface NodesStatusBadgeProps {
7 3b7feef Mrdn 2y ago status: StatusType;
8 b15ff05 Mrdn 2y ago }
9 b15ff05 Mrdn 2y ago
10 b15ff05 Mrdn 2y ago export const NodesStatusBadge: FC<NodesStatusBadgeProps> = ({ status }) => {
11 b15ff05 Mrdn 2y ago const { label, icon: Icon } = status;
12 b15ff05 Mrdn 2y ago
13 b15ff05 Mrdn 2y ago let badgeVariant: 'outline' | 'destructive' | undefined | null;
14 b15ff05 Mrdn 2y ago switch (label) {
15 b15ff05 Mrdn 2y ago case NodesStatus.healthy.label:
16 b15ff05 Mrdn 2y ago badgeVariant = undefined;
17 b15ff05 Mrdn 2y ago break;
18 b15ff05 Mrdn 2y ago case NodesStatus.unhealthy.label:
19 b15ff05 Mrdn 2y ago badgeVariant = "destructive";
20 b15ff05 Mrdn 2y ago break;
21 b15ff05 Mrdn 2y ago case NodesStatus.disabled.label:
22 b15ff05 Mrdn 2y ago badgeVariant = "outline";
23 b15ff05 Mrdn 2y ago break;
24 b15ff05 Mrdn 2y ago case "none":
25 b15ff05 Mrdn 2y ago return null;
26 b15ff05 Mrdn 2y ago }
27 b15ff05 Mrdn 2y ago
28 b15ff05 Mrdn 2y ago return (
29 b15ff05 Mrdn 2y ago <Badge variant={badgeVariant} className="h-6">
30 b15ff05 Mrdn 2y ago {Icon && <Icon className="mr-1 w-5 h-4" />} <Label className="capitalize">{label}</Label>
31 b15ff05 Mrdn 2y ago </Badge>
32 b15ff05 Mrdn 2y ago );
33 b15ff05 Mrdn 2y ago };
34 b15ff05 Mrdn 2y ago
35 b15ff05 Mrdn 2y ago export default NodesStatusBadge;