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