gitscope
← marzneshin / v0.4.0 / dashboard/src/features/users/components/dialogs/settings/user-info/table.tsx
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/users/components/dialogs/settings/user-info/table.tsx · TypeScript
Blame Raw
 1import {
 2    Card,
 3    CardContent,
 4    CardHeader,
 5    CardTitle,
 6    Table,
 7    TableBody,
 8    TableRowWithCell,
 9    DateTableRow,
10} from "@marzneshin/components";
11import { FC } from "react";
12import {
13    type UserProp,
14    UserEnabledPill,
15    UserUsedTraffic,
16    UserActivatedPill,
17    UserDataLimitReachedPill,
18    UserExpiredPill,
19} from "@marzneshin/features/users";
20import { useTranslation } from "react-i18next";
21
22export const UserInfoTable: FC<UserProp> = ({ user: entity }) => {
23    const { t } = useTranslation();
24    const expireDate = entity.expire_date
25        ? new Date(entity.expire_date)
26        : null;
27
28    return (
29        <Card>
30            <CardHeader className="flex flex-row justify-between items-center w-full">
31                <CardTitle>{t("user_info")}</CardTitle>
32            </CardHeader>
33            <CardContent>
34                <Table>
35                    <TableBody>
36                        <TableRowWithCell label={t("username")} value={entity.username} />
37                        <TableRowWithCell
38                            label={t("activated")}
39                            value={<UserActivatedPill user={entity} />}
40                        />
41                        <TableRowWithCell
42                            label={t("enabled")}
43                            value={<UserEnabledPill user={entity} />}
44                        />
45                        <TableRowWithCell
46                            label={t("page.users.data_limit_reached")}
47                            value={<UserDataLimitReachedPill user={entity} />}
48                        />
49                        <TableRowWithCell
50                            label={t("expired")}
51                            value={<UserExpiredPill user={entity} />}
52                        />
53                        {{
54                            fixed_date: (
55                                <DateTableRow
56                                    label={t("page.users.expire_date")}
57                                    date={expireDate}
58                                />
59                            ),
60                            start_on_first_use: (
61                                <>
62                                    <TableRowWithCell
63                                        label={t("page.users.usage_duration")}
64                                        value={(entity.usage_duration ? entity.usage_duration : 0) / 86400}
65                                    />
66                                    <DateTableRow
67                                        label={t("page.users.activation_deadline")}
68                                        date={entity.activation_deadline}
69                                    />
70                                </>
71                            ),
72                            never: (
73                                <TableRowWithCell
74                                    label={t("page.users.expire_method")}
75                                    value={t('never')}
76                                />
77                            )
78                        }[entity.expire_strategy]}
79
80                        <TableRowWithCell
81                            label={t("page.users.used_traffic")}
82                            value={<UserUsedTraffic user={entity} />}
83                        />
84                        <DateTableRow
85                            label={t("page.users.online_at")}
86                            date={entity.online_at}
87                        />
88                        <TableRowWithCell label={t("note")} value={entity.note} />
89                    </TableBody>
90                </Table>
91            </CardContent>
92        </Card>
93    );
94};