gitscope
← marzneshin / v0.6.4 / dashboard/src/modules/users/components/users-status.tsx
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/users/components/users-status.tsx · TypeScript
Blame Raw
 1import { FC } from 'react';
 2import { Badge, Label } from '@marzneshin/common/components';
 3import { StatusType } from '@marzneshin/common/types';
 4import {
 5    AlarmClock,
 6    BrickWall,
 7    CalendarX,
 8    Cloud,
 9    PowerCircle,
10    Radio,
11    ServerCrash,
12    Zap,
13    ZapOff
14} from 'lucide-react';
15
16interface UsersStatusType {
17    [key: string]: StatusType;
18}
19
20export const UsersStatus: UsersStatusType = {
21    active: {
22        icon: PowerCircle,
23        label: "Active",
24        variant: "positive"
25    },
26    limited: {
27        icon: BrickWall,
28        label: "Limited",
29        variant: "warning"
30    },
31    expired: {
32        icon: CalendarX,
33        label: "Expired",
34        variant: "warning"
35    },
36    on_hold: {
37        icon: AlarmClock,
38        label: "On Hold",
39        variant: "royal"
40    },
41    error: {
42        icon: ServerCrash,
43        label: "Error",
44        variant: "destructive"
45    },
46    connecting: {
47        icon: Radio,
48        label: "Connecting",
49        variant: "warning"
50    },
51    connected: {
52        icon: Cloud,
53        label: "Connected",
54        variant: "positive"
55    },
56    healthy: {
57        icon: Zap,
58        label: "Healthy",
59        variant: "positive"
60    },
61    unhealthy: {
62        icon: ZapOff,
63        label: "Unhealthy",
64        variant: "destructive"
65    },
66}
67
68interface UsersStatusBadgeProps {
69    status: StatusType;
70}
71
72export const UsersStatusBadge: FC<UsersStatusBadgeProps> = ({ status }) => {
73    const { label, icon: Icon } = status;
74    return (
75        <Badge variant={status.variant} className="h-6">
76            {Icon && <Icon className="mr-1 w-5 h-4" />} <Label className="capitalize">{label}</Label>
77        </Badge>
78    );
79};
80
81export default UsersStatusBadge;