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