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