1import { ColumnDef } from "@tanstack/react-table"
2import { DataTableColumnHeader } from "@marzneshin/components/data-table/column-header"
3import i18n from "@marzneshin/features/i18n"
4import {
5 UserType,
6 UserActivatedPill,
7 UserEnabledPill,
8 UserExpirationValue,
9 userTrafficSortingFn,
10} from "@marzneshin/features/users"
11import { CircularProgress } from "@nextui-org/progress";
12import { Badge } from "@marzneshin/components";
13
14export const columns: ColumnDef<UserType>[] = [
15 {
16 accessorKey: "username",
17 header: ({ column }) => <DataTableColumnHeader title={i18n.t('username')} column={column} />,
18 },
19 {
20 accessorKey: "activated",
21 header: ({ column }) => (
22 <DataTableColumnHeader
23 title={i18n.t("activated")}
24 column={column}
25 />
26 ),
27 cell: ({ row }) => <UserActivatedPill user={row.original} />,
28 },
29 {
30 accessorKey: "enabled",
31 header: ({ column }) => (
32 <DataTableColumnHeader
33 title={i18n.t("enabled")}
34 column={column}
35 />
36 ),
37 cell: ({ row }) => <UserEnabledPill user={row.original} />,
38 },
39 {
40 accessorKey: "used_traffic",
41 header: ({ column }) => <DataTableColumnHeader title={i18n.t('page.users.used_traffic')} column={column} />,
42 cell: ({ row }) => {
43 if (row.original.data_limit) {
44 return (
45 <CircularProgress
46 size="sm"
47 value={row.original.used_traffic / row.original.data_limit * 100}
48 />
49 )
50 } else {
51 return <Badge>No Limit</Badge>
52 }
53 },
54 sortingFn: (rowA, rowB) => userTrafficSortingFn(rowA.original, rowB.original)
55 },
56 {
57 accessorKey: "expire",
58 header: ({ column }) => (
59 <DataTableColumnHeader
60 title={i18n.t("page.users.expire_date")}
61 column={column}
62 />
63 ),
64 cell: ({ row }) => <UserExpirationValue user={row.original} />,
65 },
66];