import type { Dispatch, SetStateAction } from "react"; import { useTranslation } from "react-i18next"; import { Button } from "@/components/button"; import { Input } from "@/components/input"; import { Network } from "lucide-react"; import { AccordionSection } from "@/sidebar/AdminSettingsShared"; // Was inline in AdminGeneralSettingsSection (src/ui/sidebar/AdminSettingsSections.tsx), // moved here into its own accordion section as part of the Tailscale plugin. // The backing routes (GET/PATCH /users/tailscale-settings) stay in core - // they are general user-settings infrastructure this plugin calls, not // something it owns. type AdminTailscaleSectionProps = { open: boolean; onToggle: () => void; tailscaleApiKey: string; setTailscaleApiKey: Dispatch>; tailscaleApiBaseUrl: string; setTailscaleApiBaseUrl: Dispatch>; handleSaveTailscaleApiKey: () => void; }; export function AdminTailscaleSection({ open, onToggle, tailscaleApiKey, setTailscaleApiKey, tailscaleApiBaseUrl, setTailscaleApiBaseUrl, handleSaveTailscaleApiKey, }: AdminTailscaleSectionProps) { const { t } = useTranslation(); return ( } open={open} onToggle={onToggle} >
{t("admin.tailscaleApiKey")} {t("admin.tailscaleApiKeyDescription")}{" "} {t("admin.tailscaleApiKeyDocsLink")}
setTailscaleApiKey(e.target.value)} placeholder="tskey-api-... / hskey-api-..." className="text-sm" />
{t("admin.tailscaleApiBaseUrlDescription")} setTailscaleApiBaseUrl(e.target.value)} placeholder="https://api.tailscale.com/api/v2" className="text-sm" />
); }