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