gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/nodes/dialogs/settings/index.tsx · v0.5.3
Source
1 ff900b8 Mrdn 2y ago import {
2 56b916e Mardin 2y ago type SettingsDialogProps,
3 56b916e Mardin 2y ago SettingsDialog,
4 56b916e Mardin 2y ago Tabs,
5 56b916e Mardin 2y ago TabsContent,
6 56b916e Mardin 2y ago TabsList,
7 56b916e Mardin 2y ago TabsTrigger,
8 56b916e Mardin 2y ago AlertCard,
9 1d782e1 Mrdn 2y ago } from "@marzneshin/components";
10 f5c168d Mardin 2y ago import type { FC } from "react";
11 1d782e1 Mrdn 2y ago import { useTranslation } from "react-i18next";
12 f5c168d Mardin 2y ago import type { NodeBackendType, NodeType } from "../..";
13 ff900b8 Mrdn 2y ago import { NodesDetailTable } from "../../tables/detail-table";
14 f5c168d Mardin 2y ago import { NodeBackendSetting } from "./node-backend-setting";
15 ff900b8 Mrdn 2y ago
16 4708fcb Dawsh 2y ago interface NodesSettingsDialogProps extends SettingsDialogProps {
17 56b916e Mardin 2y ago entity: NodeType;
18 56b916e Mardin 2y ago onClose: () => void;
19 ff900b8 Mrdn 2y ago }
20 ff900b8 Mrdn 2y ago
21 1d782e1 Mrdn 2y ago export const NodesSettingsDialog: FC<NodesSettingsDialogProps> = ({
22 56b916e Mardin 2y ago onOpenChange,
23 56b916e Mardin 2y ago open,
24 56b916e Mardin 2y ago entity,
25 56b916e Mardin 2y ago onClose,
26 1d782e1 Mrdn 2y ago }) => {
27 56b916e Mardin 2y ago const { t } = useTranslation();
28 ff900b8 Mrdn 2y ago
29 56b916e Mardin 2y ago return (
30 56b916e Mardin 2y ago <SettingsDialog open={open} onClose={onClose} onOpenChange={onOpenChange}>
31 56b916e Mardin 2y ago <div className="my-4">
32 56b916e Mardin 2y ago <h1 className="font-medium font-header">
33 56b916e Mardin 2y ago {t("page.nodes.settings.detail")}
34 56b916e Mardin 2y ago </h1>
35 56b916e Mardin 2y ago <NodesDetailTable node={entity} />
36 56b916e Mardin 2y ago </div>
37 56b916e Mardin 2y ago {entity.backends.length === 0 ? (
38 56b916e Mardin 2y ago <AlertCard
39 56b916e Mardin 2y ago variant="warning"
40 56b916e Mardin 2y ago desc={t('page.nodes.settings.no-backend-alert.desc')}
41 56b916e Mardin 2y ago title={t('page.nodes.settings.no-backend-alert.title')}
42 56b916e Mardin 2y ago />
43 56b916e Mardin 2y ago ) : (
44 56b916e Mardin 2y ago <Tabs
45 56b916e Mardin 2y ago className="my-3 w-full h-full"
46 56b916e Mardin 2y ago defaultValue={entity.backends[0].name}
47 56b916e Mardin 2y ago >
48 56b916e Mardin 2y ago <TabsList className="w-full">
49 56b916e Mardin 2y ago {...entity.backends.map((backend: NodeBackendType) => (
50 56b916e Mardin 2y ago <TabsTrigger
51 56b916e Mardin 2y ago className="capitalize w-full"
52 56b916e Mardin 2y ago value={backend.name}
53 56b916e Mardin 2y ago key={backend.name}
54 56b916e Mardin 2y ago >
55 56b916e Mardin 2y ago {backend.name}
56 56b916e Mardin 2y ago </TabsTrigger>
57 56b916e Mardin 2y ago ))}
58 56b916e Mardin 2y ago </TabsList>
59 56b916e Mardin 2y ago {...entity.backends.map((backend: NodeBackendType) => (
60 56b916e Mardin 2y ago <TabsContent
61 56b916e Mardin 2y ago className="w-full"
62 56b916e Mardin 2y ago value={backend.name}
63 56b916e Mardin 2y ago key={backend.name}
64 56b916e Mardin 2y ago >
65 56b916e Mardin 2y ago <NodeBackendSetting node={entity} backend={backend.name} />
66 56b916e Mardin 2y ago </TabsContent>
67 56b916e Mardin 2y ago ))}
68 56b916e Mardin 2y ago </Tabs>
69 56b916e Mardin 2y ago )}
70 56b916e Mardin 2y ago </SettingsDialog>
71 56b916e Mardin 2y ago );
72 1d782e1 Mrdn 2y ago };