"use client" import { useState } from "react" import { FormField, SectionTitle } from "@/components/form-kit" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetDescription, SheetFooter, SheetClose, } from "@/components/ui/sheet" import type { WgIfaceWithServer } from "@/components/data-grids/wireguard-data-grid" export type WgPeerFormState = { publicKey: string allowedIps: string endpoint: string keepalive: string comment: string } const emptyPeerForm = (): WgPeerFormState => ({ publicKey: "", allowedIps: "", endpoint: "", keepalive: "25", comment: "", }) function WgPeerSheet({ open, iface, busy, onOpenChange, onSubmit, }: { open: boolean iface: WgIfaceWithServer | null busy?: boolean onOpenChange: (v: boolean) => void onSubmit: (form: WgPeerFormState) => void | Promise }) { const [form, setForm] = useState(emptyPeerForm) const set = (k: K, v: WgPeerFormState[K]) => setForm((f) => ({ ...f, [k]: v })) return ( { if (v) setForm(emptyPeerForm()) onOpenChange(v) }} > Добавить пира {iface ? `${iface.name} · ${iface.serverName}` : "WireGuard peer"}
Параметры пира set("publicKey", e.target.value)} /> set("allowedIps", e.target.value)} /> set("endpoint", e.target.value)} /> set("keepalive", e.target.value)} /> set("comment", e.target.value)} />
}> Отмена
) } export { WgPeerSheet }