gitscope
← marzneshin / v0.6.1 / dashboard/src/modules/admins/components/dialogs/settings/index.tsx
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/admins/components/dialogs/settings/index.tsx · TypeScript
Blame Raw
 1import {
 2  Tabs,
 3  TabsContent,
 4  TabsList,
 5  TabsTrigger,
 6  Awaiting,
 7  SettingsInfoSkeleton,
 8  SettingsDialogProps,
 9  SettingsDialog,
10} from "@marzneshin/components";
11import { type AdminType } from "@marzneshin/modules/admins";
12import { type FC } from "react";
13import { AdminInfoTable } from "./admin-info";
14import { useTranslation } from "react-i18next";
15
16interface AdminsSettingsDialogProps extends SettingsDialogProps {
17  entity: AdminType | null;
18  onClose: () => void;
19  isPending: boolean;
20}
21
22export const AdminsSettingsDialog: FC<AdminsSettingsDialogProps> = ({
23  onOpenChange,
24  open,
25  entity,
26  onClose,
27  isPending,
28}) => {
29  const { t } = useTranslation();
30
31  return (
32    <SettingsDialog open={open} onClose={onClose} onOpenChange={onOpenChange}>
33      <Awaiting
34        Component={
35          entity ? (
36            <Tabs defaultValue="info" className="w-full h-full">
37              <TabsList className="w-full bg-accent">
38                <TabsTrigger className="w-full" value="info">
39                  {t("admin_info")}
40                </TabsTrigger>
41                <TabsTrigger className="w-full" value="services">
42                  {t("services")}
43                </TabsTrigger>
44                <TabsTrigger className="w-full" value="subscription">
45                  {t("users")}
46                </TabsTrigger>
47              </TabsList>
48              <TabsContent
49                value="info"
50                className="flex flex-col gap-2 w-full h-full"
51              >
52                <AdminInfoTable admin={entity} />
53              </TabsContent>
54              <TabsContent value="services">
55                {/* <AdminServicesTable admin={entity} /> */}
56              </TabsContent>
57              <TabsContent value="users">Users</TabsContent>
58            </Tabs>
59          ) : (
60            <div>Not Found</div>
61          )
62        }
63        Skeleton={<SettingsInfoSkeleton />}
64        isFetching={isPending}
65      />
66    </SettingsDialog>
67  );
68};