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;