gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/nodes/dialogs/settings/index.tsx · v0.4.0
Source
1 ff900b8 Mrdn 2y ago import {
2 ff900b8 Mrdn 2y ago Card,
3 ff900b8 Mrdn 2y ago CardContent,
4 4708fcb Dawsh 2y ago SettingsDialogProps,
5 4708fcb Dawsh 2y ago SettingsDialog,
6 ff900b8 Mrdn 2y ago Tabs,
7 ff900b8 Mrdn 2y ago TabsContent,
8 ff900b8 Mrdn 2y ago TabsList,
9 ff900b8 Mrdn 2y ago TabsTrigger,
10 1d782e1 Mrdn 2y ago } from "@marzneshin/components";
11 03b3dbc Mardin 2y ago import { type FC, useEffect } from "react";
12 1d782e1 Mrdn 2y ago import { useTranslation } from "react-i18next";
13 1d782e1 Mrdn 2y ago import type { NodeType } from "../..";
14 ff900b8 Mrdn 2y ago import { LogContainer } from "../../log";
15 ff900b8 Mrdn 2y ago import { NodesDetailTable } from "../../tables/detail-table";
16 ff900b8 Mrdn 2y ago import { NodeConfigEditor } from "./node-config-editor";
17 ff900b8 Mrdn 2y ago
18 4708fcb Dawsh 2y ago interface NodesSettingsDialogProps extends SettingsDialogProps {
19 1d782e1 Mrdn 2y ago entity: NodeType;
20 03b3dbc Mardin 2y ago onClose: () => void;
21 ff900b8 Mrdn 2y ago }
22 ff900b8 Mrdn 2y ago
23 1d782e1 Mrdn 2y ago export const NodesSettingsDialog: FC<NodesSettingsDialogProps> = ({
24 1d782e1 Mrdn 2y ago onOpenChange,
25 1d782e1 Mrdn 2y ago open,
26 1d782e1 Mrdn 2y ago entity,
27 03b3dbc Mardin 2y ago onClose,
28 1d782e1 Mrdn 2y ago }) => {
29 ff900b8 Mrdn 2y ago const { t } = useTranslation();
30 ff900b8 Mrdn 2y ago
31 03b3dbc Mardin 2y ago useEffect(() => {
32 03b3dbc Mardin 2y ago if (!open) onClose();
33 03b3dbc Mardin 2y ago }, [open, onClose]);
34 03b3dbc Mardin 2y ago
35 ff900b8 Mrdn 2y ago return (
36 4708fcb Dawsh 2y ago <SettingsDialog open={open} onOpenChange={onOpenChange}>
37 4708fcb Dawsh 2y ago <div className="my-4">
38 4708fcb Dawsh 2y ago <h1 className="font-medium font-header">
39 4708fcb Dawsh 2y ago {t("page.nodes.settings.detail")}
40 4708fcb Dawsh 2y ago </h1>
41 4708fcb Dawsh 2y ago <NodesDetailTable node={entity} />
42 4708fcb Dawsh 2y ago </div>
43 4708fcb Dawsh 2y ago <Tabs className="my-3 max-w-full h-full" defaultValue="logs">
44 4708fcb Dawsh 2y ago <TabsList className="w-full">
45 4708fcb Dawsh 2y ago <TabsTrigger className="w-full" value="logs">
46 4708fcb Dawsh 2y ago {t("logs")}
47 4708fcb Dawsh 2y ago </TabsTrigger>
48 4708fcb Dawsh 2y ago <TabsTrigger className="w-full" value="config">
49 4708fcb Dawsh 2y ago {t("config")}
50 4708fcb Dawsh 2y ago </TabsTrigger>
51 4708fcb Dawsh 2y ago </TabsList>
52 4708fcb Dawsh 2y ago <TabsContent value="logs" className="h-full w-full">
53 4708fcb Dawsh 2y ago <LogContainer node={entity} />
54 4708fcb Dawsh 2y ago </TabsContent>
55 4708fcb Dawsh 2y ago <TabsContent value="config" className="h-full z-51">
56 4708fcb Dawsh 2y ago <Card>
57 4708fcb Dawsh 2y ago <CardContent className="p-2 h-1/2 flex flex-col gap-2">
58 4708fcb Dawsh 2y ago <NodeConfigEditor entity={entity} />
59 4708fcb Dawsh 2y ago </CardContent>
60 4708fcb Dawsh 2y ago </Card>
61 4708fcb Dawsh 2y ago </TabsContent>
62 4708fcb Dawsh 2y ago </Tabs>
63 4708fcb Dawsh 2y ago </SettingsDialog>
64 1d782e1 Mrdn 2y ago );
65 1d782e1 Mrdn 2y ago };