gitscope
← marzneshin / v0.4.0 / dashboard/src/features/services/components/dialogs/settings.dialog.tsx
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/services/components/dialogs/settings.dialog.tsx · TypeScript
Blame Raw
 1import {
 2    SettingsDialogProps,
 3    SettingsDialog,
 4    Tabs,
 5    TabsContent,
 6    TabsList,
 7    TabsTrigger,
 8} from "@marzneshin/components"
 9import { type FC, useEffect } from "react"
10import { useTranslation } from "react-i18next"
11import {
12    ServicesUsersTable,
13    ServiceInboundsTable,
14    ServiceType
15} from "@marzneshin/features/services";
16
17interface ServicecSettingsDialogProps extends SettingsDialogProps {
18    entity: ServiceType
19    onClose: () => void;
20}
21
22export const ServiceSettingsDialog: FC<ServicecSettingsDialogProps> = ({
23    onOpenChange, open, entity, onClose
24}) => {
25    const { t } = useTranslation();
26
27    useEffect(() => {
28        if (!open) onClose();
29    }, [open, onClose]);
30
31    return (
32        <SettingsDialog open={open} onOpenChange={onOpenChange}>
33            <Tabs className="my-3 w-full h-full" defaultValue="inbounds">
34                <TabsList className="w-full">
35                    <TabsTrigger className="w-full" value="inbounds">{t('inbounds')}</TabsTrigger>
36                    <TabsTrigger className="w-full" value="users">{t('users')}</TabsTrigger>
37                </TabsList>
38                <TabsContent value="inbounds" className="h-full">
39                    <ServiceInboundsTable service={entity} />
40                </TabsContent>
41                <TabsContent value="users" className="h-full">
42                    <ServicesUsersTable service={entity} />
43                </TabsContent>
44            </Tabs>
45        </SettingsDialog>
46    )
47}