gitscope
← marzneshin / v0.3.0-alpha2 / dashboard/src/features/users/components/users-status.tsx
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/users/components/users-status.tsx · TypeScript
Blame Raw
 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;